@arolariu/components 0.0.39 → 0.0.40

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.
Files changed (43) hide show
  1. package/CONTRIBUTING.md +371 -371
  2. package/DEBUGGING.md +401 -401
  3. package/EXAMPLES.md +1035 -1035
  4. package/{CHANGELOG.md → changelog.md} +7 -0
  5. package/dist/cjs/components/ui/bubble-background.cjs +1 -2
  6. package/dist/cjs/components/ui/bubble-background.cjs.map +1 -1
  7. package/dist/cjs/components/ui/calendar.cjs.map +1 -1
  8. package/dist/cjs/components/ui/chart.cjs.map +1 -1
  9. package/dist/cjs/components/ui/command.cjs +1 -1
  10. package/dist/cjs/components/ui/drawer.cjs.map +1 -1
  11. package/dist/cjs/components/ui/dropdrawer.cjs.map +1 -1
  12. package/dist/cjs/components/ui/input.cjs.map +1 -1
  13. package/dist/cjs/components/ui/ripple-button.cjs.map +1 -1
  14. package/dist/cjs/components/ui/scratcher.cjs.map +1 -1
  15. package/dist/cjs/components/ui/sidebar.cjs +4 -4
  16. package/dist/cjs/components/ui/sonner.cjs +2 -2
  17. package/dist/cjs/components/ui/tooltip.cjs +1 -1
  18. package/dist/cjs/index.cjs +6 -6
  19. package/dist/cjs/index.css +1 -1
  20. package/dist/cjs/index.css.map +1 -1
  21. package/dist/esm/components/ui/bubble-background.js +1 -2
  22. package/dist/esm/components/ui/bubble-background.js.map +1 -1
  23. package/dist/esm/components/ui/calendar.js.map +1 -1
  24. package/dist/esm/components/ui/chart.js.map +1 -1
  25. package/dist/esm/components/ui/drawer.js.map +1 -1
  26. package/dist/esm/components/ui/dropdrawer.js.map +1 -1
  27. package/dist/esm/components/ui/input.js.map +1 -1
  28. package/dist/esm/components/ui/ripple-button.js.map +1 -1
  29. package/dist/esm/components/ui/scratcher.js.map +1 -1
  30. package/dist/esm/index.css +1 -1
  31. package/dist/esm/index.css.map +1 -1
  32. package/dist/index.css +1 -1
  33. package/dist/types/components/ui/bubble-background.d.ts.map +1 -1
  34. package/package.json +51 -52
  35. package/{README.md → readme.md} +627 -627
  36. package/src/components/ui/bubble-background.tsx +189 -187
  37. package/src/components/ui/calendar.tsx +213 -213
  38. package/src/components/ui/chart.tsx +380 -380
  39. package/src/components/ui/drawer.tsx +141 -141
  40. package/src/components/ui/dropdrawer.tsx +973 -973
  41. package/src/components/ui/input.tsx +22 -22
  42. package/src/components/ui/ripple-button.tsx +111 -111
  43. package/src/components/ui/scratcher.tsx +171 -171
@@ -1,627 +1,627 @@
1
- # ✨ @arolariu/components
2
-
3
- <div align="center">
4
-
5
- ![npm version](https://img.shields.io/npm/v/@arolariu/components?style=for-the-badge&color=blue)
6
- ![npm downloads](https://img.shields.io/npm/dm/@arolariu/components?style=for-the-badge&color=green)
7
- ![bundle size](https://img.shields.io/bundlephobia/minzip/@arolariu/components?style=for-the-badge&color=orange)
8
- ![license](https://img.shields.io/npm/l/@arolariu/components?style=for-the-badge&color=purple)
9
-
10
- ![TypeScript](https://img.shields.io/badge/TypeScript-100%25-blue?style=for-the-badge&logo=typescript)
11
- ![Tree Shakeable](https://img.shields.io/badge/Tree%20Shakeable-✅-brightgreen?style=for-the-badge)
12
- ![React 19 Ready](https://img.shields.io/badge/React%2019-Ready-61dafb?style=for-the-badge&logo=react)
13
- ![GitHub Stars](https://img.shields.io/github/stars/arolariu/arolariu.ro?style=for-the-badge&logo=github)
14
-
15
- **Modern • Accessible • Production Ready**
16
-
17
- _A comprehensive collection of 60+ beautifully crafted React components built on [Radix UI](https://www.radix-ui.com/) primitives, designed for modern applications that demand both beauty and performance._
18
-
19
- [🚀 Get Started](#-quick-start) • [📖 Documentation](#-component-catalog) • [🎨 Storybook](https://storybook.arolariu.ro) • [💡 Examples](#-usage-examples) • [🤝 Contributing](#-contributing)
20
-
21
- </div>
22
-
23
- ---
24
-
25
- ## 🎯 Why Choose @arolariu/components?
26
-
27
- **For Developers Who Care About Quality**
28
-
29
- - **🎨 Beautiful by Default** - Carefully designed components that look great out of the box
30
- - **♿ Accessibility First** - Built on Radix UI primitives with WAI-ARIA compliance
31
- - **⚡ Performance Optimized** - Tree-shakeable, minimal bundle impact, source maps included
32
- - **🔧 Developer Experience** - Full TypeScript support, comprehensive docs, and debugging tools
33
- - **🎭 Flexible Styling** - Tailwind CSS integration with easy customization
34
- - **🚀 Modern Stack** - React 18/19, ESM/CJS, SSR compatible
35
-
36
- **Perfect for building modern web applications, design systems, and prototypes.**
37
-
38
- ## � Quick Start
39
-
40
- Get up and running with @arolariu/components in under 2 minutes!
41
-
42
- ### Installation
43
-
44
- ```bash
45
- # npm
46
- npm install @arolariu/components
47
-
48
- # yarn
49
- yarn add @arolariu/components
50
-
51
- # pnpm
52
- pnpm add @arolariu/components
53
- ```
54
-
55
- ### Basic Setup
56
-
57
- ```tsx
58
- // 1. Import the component you need
59
- import { Button } from "@arolariu/components/button";
60
- import {
61
- Card,
62
- CardHeader,
63
- CardTitle,
64
- CardContent,
65
- } from "@arolariu/components/card";
66
-
67
- // 2. Use it in your React component
68
- export default function MyApp() {
69
- return (
70
- <Card className="w-96">
71
- <CardHeader>
72
- <CardTitle>Welcome to @arolariu/components!</CardTitle>
73
- </CardHeader>
74
- <CardContent>
75
- <Button>Get Started</Button>
76
- </CardContent>
77
- </Card>
78
- );
79
- }
80
- ```
81
-
82
- ### Add Styles (Required)
83
-
84
- ```tsx
85
- // Import the CSS in your app's entry point (e.g., main.tsx, _app.tsx)
86
- import "@arolariu/components/styles";
87
- ```
88
-
89
- **That's it!** 🎉 You're ready to build beautiful UIs.
90
-
91
- ---
92
-
93
- ## 📖 Component Catalog
94
-
95
- Explore our comprehensive collection of **60+ components** organized by category:
96
-
97
- ### 🎨 Layout & Structure
98
-
99
- | Component | Description | Import |
100
- | --------------- | --------------------------------------- | ----------------------------------- |
101
- | **Card** | Flexible container for grouping content | `@arolariu/components/card` |
102
- | **AspectRatio** | Maintain consistent aspect ratios | `@arolariu/components/aspect-ratio` |
103
- | **Separator** | Visual dividers for content sections | `@arolariu/components/separator` |
104
- | **Resizable** | Split panes with resizable dividers | `@arolariu/components/resizable` |
105
-
106
- ### 🎭 Interactive Elements
107
-
108
- | Component | Description | Import |
109
- | ------------ | ----------------------------------------- | ------------------------------- |
110
- | **Button** | Primary action triggers with variants | `@arolariu/components/button` |
111
- | **Input** | Text input fields with validation support | `@arolariu/components/input` |
112
- | **Checkbox** | Binary choice selections | `@arolariu/components/checkbox` |
113
- | **Select** | Dropdown selection menus | `@arolariu/components/select` |
114
- | **Slider** | Range input controls | `@arolariu/components/slider` |
115
-
116
- ### 🧭 Navigation
117
-
118
- | Component | Description | Import |
119
- | ------------------ | ------------------------------ | -------------------------------------- |
120
- | **Tabs** | Tabbed content navigation | `@arolariu/components/tabs` |
121
- | **Breadcrumb** | Hierarchical navigation trails | `@arolariu/components/breadcrumb` |
122
- | **NavigationMenu** | Complex dropdown navigation | `@arolariu/components/navigation-menu` |
123
- | **Sidebar** | Collapsible side navigation | `@arolariu/components/sidebar` |
124
-
125
- ### � Overlays & Dialogs
126
-
127
- | Component | Description | Import |
128
- | -------------- | ---------------------------------- | --------------------------------- |
129
- | **Dialog** | Modal dialogs and confirmations | `@arolariu/components/dialog` |
130
- | **Sheet** | Slide-out panels from screen edges | `@arolariu/components/sheet` |
131
- | **Popover** | Floating content containers | `@arolariu/components/popover` |
132
- | **Tooltip** | Contextual information on hover | `@arolariu/components/tooltip` |
133
- | **DropDrawer** | Advanced drawer with drop zones | `@arolariu/components/dropdrawer` |
134
-
135
- ### 📊 Data Display
136
-
137
- | Component | Description | Import |
138
- | ------------ | -------------------------------------- | ------------------------------- |
139
- | **Table** | Data tables with sorting/pagination | `@arolariu/components/table` |
140
- | **Calendar** | Date selection and navigation | `@arolariu/components/calendar` |
141
- | **Avatar** | User profile pictures and placeholders | `@arolariu/components/avatar` |
142
- | **Badge** | Status indicators and labels | `@arolariu/components/badge` |
143
- | **Chart** | Data visualization components | `@arolariu/components/chart` |
144
-
145
- ### 🎪 Animated Backgrounds
146
-
147
- | Component | Description | Import |
148
- | ----------------------- | ------------------------------- | ------------------------------------------- |
149
- | **DotBackground** | Animated dot matrix backgrounds | `@arolariu/components/dot-background` |
150
- | **BubbleBackground** | Floating bubble animations | `@arolariu/components/bubble-background` |
151
- | **FireworksBackground** | Particle explosion effects | `@arolariu/components/fireworks-background` |
152
- | **GradientBackground** | Dynamic gradient animations | `@arolariu/components/gradient-background` |
153
-
154
- ### 🎛️ Form Controls
155
-
156
- | Component | Description | Import |
157
- | -------------- | ---------------------------------- | ---------------------------------- |
158
- | **Form** | Form validation and management | `@arolariu/components/form` |
159
- | **InputOTP** | One-time password input fields | `@arolariu/components/input-otp` |
160
- | **RadioGroup** | Single-choice option groups | `@arolariu/components/radio-group` |
161
- | **Switch** | Toggle switches for binary options | `@arolariu/components/switch` |
162
- | **Textarea** | Multi-line text input areas | `@arolariu/components/textarea` |
163
-
164
- ### � Feedback & Status
165
-
166
- | Component | Description | Import |
167
- | ------------ | ------------------------------- | ------------------------------- |
168
- | **Alert** | Important message notifications | `@arolariu/components/alert` |
169
- | **Progress** | Task completion indicators | `@arolariu/components/progress` |
170
- | **Skeleton** | Loading state placeholders | `@arolariu/components/skeleton` |
171
- | **Sonner** | Toast notification system | `@arolariu/components/sonner` |
172
-
173
- [**👀 View All Components**](https://storybook.arolariu.ro) in our interactive Storybook
174
-
175
- ---
176
-
177
- ## 💡 Usage Examples
178
-
179
- ### Building a Login Form
180
-
181
- ```tsx
182
- import {
183
- Card,
184
- CardHeader,
185
- CardTitle,
186
- CardContent,
187
- CardFooter,
188
- } from "@arolariu/components/card";
189
- import { Input } from "@arolariu/components/input";
190
- import { Button } from "@arolariu/components/button";
191
- import { Label } from "@arolariu/components/label";
192
-
193
- export function LoginForm() {
194
- return (
195
- <Card className="w-96 mx-auto">
196
- <CardHeader>
197
- <CardTitle>Welcome Back</CardTitle>
198
- </CardHeader>
199
- <CardContent className="space-y-4">
200
- <div>
201
- <Label htmlFor="email">Email</Label>
202
- <Input id="email" type="email" placeholder="you@example.com" />
203
- </div>
204
- <div>
205
- <Label htmlFor="password">Password</Label>
206
- <Input id="password" type="password" />
207
- </div>
208
- </CardContent>
209
- <CardFooter>
210
- <Button className="w-full">Sign In</Button>
211
- </CardFooter>
212
- </Card>
213
- );
214
- }
215
- ```
216
-
217
- ### Data Dashboard
218
-
219
- ```tsx
220
- import {
221
- Card,
222
- CardHeader,
223
- CardTitle,
224
- CardContent,
225
- } from "@arolariu/components/card";
226
- import { Progress } from "@arolariu/components/progress";
227
- import { Badge } from "@arolariu/components/badge";
228
- import { Chart } from "@arolariu/components/chart";
229
-
230
- export function Dashboard() {
231
- return (
232
- <div className="grid grid-cols-1 md:grid-cols-3 gap-6 p-6">
233
- <Card>
234
- <CardHeader>
235
- <CardTitle className="flex items-center justify-between">
236
- Sales <Badge variant="secondary">+12%</Badge>
237
- </CardTitle>
238
- </CardHeader>
239
- <CardContent>
240
- <Progress value={75} className="w-full" />
241
- <p className="text-sm text-muted-foreground mt-2">
242
- 75% of monthly goal
243
- </p>
244
- </CardContent>
245
- </Card>
246
-
247
- <Card>
248
- <CardHeader>
249
- <CardTitle>Revenue</CardTitle>
250
- </CardHeader>
251
- <CardContent>
252
- <Chart data={chartData} type="line" />
253
- </CardContent>
254
- </Card>
255
- </div>
256
- );
257
- }
258
- ```
259
-
260
- ### Interactive Navigation
261
-
262
- ```tsx
263
- import {
264
- NavigationMenu,
265
- NavigationMenuItem,
266
- NavigationMenuList,
267
- } from "@arolariu/components/navigation-menu";
268
- import { Button } from "@arolariu/components/button";
269
- import { Sheet, SheetContent, SheetTrigger } from "@arolariu/components/sheet";
270
- import { MenuIcon } from "lucide-react";
271
-
272
- export function AppHeader() {
273
- return (
274
- <header className="border-b">
275
- <div className="container mx-auto px-4 py-2 flex items-center justify-between">
276
- <h1 className="text-2xl font-bold">My App</h1>
277
-
278
- {/* Desktop Navigation */}
279
- <NavigationMenu className="hidden md:flex">
280
- <NavigationMenuList>
281
- <NavigationMenuItem>
282
- <Button variant="ghost">Home</Button>
283
- </NavigationMenuItem>
284
- <NavigationMenuItem>
285
- <Button variant="ghost">About</Button>
286
- </NavigationMenuItem>
287
- <NavigationMenuItem>
288
- <Button variant="ghost">Contact</Button>
289
- </NavigationMenuItem>
290
- </NavigationMenuList>
291
- </NavigationMenu>
292
-
293
- {/* Mobile Navigation */}
294
- <Sheet>
295
- <SheetTrigger asChild>
296
- <Button variant="ghost" size="icon" className="md:hidden">
297
- <MenuIcon />
298
- </Button>
299
- </SheetTrigger>
300
- <SheetContent>
301
- <nav className="space-y-4">
302
- <Button variant="ghost" className="w-full justify-start">
303
- Home
304
- </Button>
305
- <Button variant="ghost" className="w-full justify-start">
306
- About
307
- </Button>
308
- <Button variant="ghost" className="w-full justify-start">
309
- Contact
310
- </Button>
311
- </nav>
312
- </SheetContent>
313
- </Sheet>
314
- </div>
315
- </header>
316
- );
317
- }
318
- ```
319
-
320
- ---
321
-
322
- ## 🛠️ Advanced Features
323
-
324
- ### Tree Shaking & Bundle Optimization
325
-
326
- **@arolariu/components** is built with bundle optimization in mind:
327
-
328
- ```tsx
329
- // ✅ Optimal: Import only what you need
330
- import { Button } from "@arolariu/components/button";
331
- import { Card } from "@arolariu/components/card";
332
-
333
- // ❌ Avoid: Barrel imports increase bundle size
334
- import { Button, Card } from "@arolariu/components";
335
- ```
336
-
337
- **Bundle Impact:**
338
-
339
- - Individual components: ~2-5KB gzipped
340
- - Full library: ~150KB gzipped
341
- - With tree shaking: Only pay for what you use
342
-
343
- ### TypeScript Integration
344
-
345
- Full TypeScript support with intelligent autocomplete:
346
-
347
- ```tsx
348
- import { Button, type ButtonProps } from "@arolariu/components/button";
349
- import { type VariantProps } from "class-variance-authority";
350
-
351
- // Get variant types for custom components
352
- type ButtonVariant = VariantProps<typeof Button>["variant"];
353
-
354
- interface CustomButtonProps extends ButtonProps {
355
- icon?: React.ReactNode;
356
- variant?: ButtonVariant;
357
- }
358
-
359
- export function CustomButton({ icon, children, ...props }: CustomButtonProps) {
360
- return (
361
- <Button {...props}>
362
- {icon && <span className="mr-2">{icon}</span>}
363
- {children}
364
- </Button>
365
- );
366
- }
367
- ```
368
-
369
- ### Server-Side Rendering (SSR)
370
-
371
- Compatible with **Next.js**, **Remix**, and other SSR frameworks:
372
-
373
- ```tsx
374
- // app/page.tsx (Next.js App Router)
375
- import { Card, CardContent } from "@arolariu/components/card";
376
- import { Button } from "@arolariu/components/button";
377
-
378
- export default function HomePage() {
379
- return (
380
- <Card>
381
- <CardContent>
382
- <Button>Server-rendered Button</Button>
383
- </CardContent>
384
- </Card>
385
- );
386
- }
387
-
388
- // For client-side interactivity
389
- ("use client");
390
- import { useState } from "react";
391
- import {
392
- Dialog,
393
- DialogTrigger,
394
- DialogContent,
395
- } from "@arolariu/components/dialog";
396
-
397
- export function InteractiveComponent() {
398
- const [isOpen, setIsOpen] = useState(false);
399
-
400
- return (
401
- <Dialog open={isOpen} onOpenChange={setIsOpen}>
402
- <DialogTrigger asChild>
403
- <Button>Open Dialog</Button>
404
- </DialogTrigger>
405
- <DialogContent>
406
- <p>This dialog requires client-side JavaScript!</p>
407
- </DialogContent>
408
- </Dialog>
409
- );
410
- }
411
- ```
412
-
413
- ### Theming & Customization
414
-
415
- Built with **Tailwind CSS** for easy customization:
416
-
417
- ```tsx
418
- // Custom theme configuration
419
- import { Button } from "@arolariu/components/button";
420
-
421
- // Override styles with Tailwind classes
422
- <Button className="bg-purple-600 hover:bg-purple-700 text-white">
423
- Custom Styled Button
424
- </Button>;
425
-
426
- // Or create your own variants
427
- import { cva } from "class-variance-authority";
428
-
429
- const customButtonVariants = cva(
430
- "inline-flex items-center justify-center rounded-md font-medium transition-colors",
431
- {
432
- variants: {
433
- variant: {
434
- gradient:
435
- "bg-gradient-to-r from-purple-500 to-pink-500 text-white hover:from-purple-600 hover:to-pink-600",
436
- neon: "bg-black text-green-400 border border-green-400 hover:bg-green-400 hover:text-black",
437
- },
438
- },
439
- },
440
- );
441
- ```
442
-
443
- ---
444
-
445
- ## 🔍 Debugging & Development
446
-
447
- ### Complete Source Map Support
448
-
449
- **Debug like a pro** with comprehensive development tools:
450
-
451
- - ✅ **JavaScript source maps** for accurate debugging
452
- - ✅ **CSS source maps** for Tailwind debugging
453
- - ✅ **TypeScript declaration maps** for IDE IntelliSense
454
- - ✅ **Original source access** via included `src/` directory
455
-
456
- ### Browser DevTools Integration
457
-
458
- ```tsx
459
- // Components are easily debuggable in DevTools
460
- import { Button } from "@arolariu/components/button";
461
-
462
- function MyComponent() {
463
- return <Button onClick={() => console.log("Clicked!")}>Debug Me</Button>;
464
- }
465
-
466
- // Set breakpoints in your original TypeScript code
467
- // Stack traces point to exact source locations
468
- // Inspect component props and state easily
469
- ```
470
-
471
- 📖 **[Full Debugging Guide](./DEBUGGING.md)** - Learn advanced debugging techniques
472
-
473
- ---
474
-
475
- ## 🌐 Browser Support
476
-
477
- **Modern browsers only** for optimal performance:
478
-
479
- | Browser | Version |
480
- | ------------------ | ----------- |
481
- | 🌟 **Chrome/Edge** | 90+ (2021+) |
482
- | 🦊 **Firefox** | 88+ (2021+) |
483
- | 🧭 **Safari** | 14+ (2020+) |
484
-
485
- **Why modern browsers?** We use latest web standards for smaller bundles and better performance.
486
-
487
- ---
488
-
489
- ## 🤝 Contributing
490
-
491
- We welcome contributions! Help make @arolariu/components even better.
492
-
493
- ### Quick Start for Contributors
494
-
495
- ```bash
496
- # 1. Fork and clone the repository
497
- git clone https://github.com/your-username/arolariu.ro.git
498
- cd arolariu.ro/packages/components
499
-
500
- # 2. Install dependencies
501
- yarn install
502
-
503
- # 3. Start development environment
504
- yarn storybook # Launch Storybook at http://localhost:6006
505
- yarn build # Build the library
506
-
507
- # 4. Make your changes and test
508
- yarn build # Ensure everything builds correctly
509
- ```
510
-
511
- ### Ways to Contribute
512
-
513
- - 🐛 **Report bugs** - Found an issue? [Open an issue](https://github.com/arolariu/arolariu.ro/issues)
514
- - 💡 **Suggest features** - Have an idea? We'd love to hear it!
515
- - 🔧 **Fix issues** - Browse [open issues](https://github.com/arolariu/arolariu.ro/issues) and submit PRs
516
- - 📖 **Improve docs** - Help make our documentation clearer
517
- - 🎨 **Add components** - Contribute new components following our patterns
518
-
519
- ### Component Development Guidelines
520
-
521
- 1. **Follow accessibility standards** - Use Radix UI primitives when possible
522
- 2. **Include TypeScript types** - Full type definitions required
523
- 3. **Add Storybook stories** - Document all variants and use cases
524
- 4. **Write tests** - Ensure components work correctly
525
- 5. **Follow naming conventions** - Use clear, descriptive names
526
-
527
- **[Read our full contributing guide →](./CONTRIBUTING.md)**
528
-
529
- ---
530
-
531
- ## 📦 Package Details
532
-
533
- ### Bundle Information
534
-
535
- ```bash
536
- # Package size analysis
537
- npm install @arolariu/components
538
- npx bundlephobia @arolariu/components
539
- ```
540
-
541
- **Key Stats:**
542
-
543
- - � **Bundle size**: ~150KB (full library, gzipped)
544
- - 🌲 **Tree-shakeable**: Import only what you need (2-5KB per component)
545
- - 📝 **TypeScript**: 100% typed with declaration maps
546
- - ♿ **Accessibility**: WAI-ARIA compliant via Radix UI
547
- - 🎭 **Styling**: Tailwind CSS integration
548
- - 📱 **Responsive**: Mobile-first design approach
549
-
550
- ### Dependencies
551
-
552
- **Zero runtime dependencies** for end users! Built on top of:
553
-
554
- - **Radix UI** - Accessible component primitives
555
- - **Tailwind CSS** - Utility-first styling (peer dependency)
556
- - **Motion** - Animation library (peer dependency)
557
- - **React 18/19** - Modern React features (peer dependency)
558
-
559
- ---
560
-
561
- ## 📄 License
562
-
563
- **MIT License** - Use freely in personal and commercial projects.
564
-
565
- ```
566
- MIT License
567
-
568
- Copyright (c) 2025 Alexandru-Razvan Olariu
569
-
570
- Permission is hereby granted, free of charge, to any person obtaining a copy
571
- of this software and associated documentation files (the "Software"), to deal
572
- in the Software without restriction, including without limitation the rights
573
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
574
- copies of the Software...
575
- ```
576
-
577
- [**View full license →**](./LICENSE)
578
-
579
- ---
580
-
581
- ## 👨‍💻 About the Author
582
-
583
- **Alexandru-Razvan Olariu**
584
-
585
- Senior Software Engineer passionate about creating beautiful, accessible user interfaces and developer tools.
586
-
587
- - 🌐 **Website**: [arolariu.ro](https://arolariu.ro)
588
- - 💻 **GitHub**: [@arolariu](https://github.com/arolariu)
589
- - � **LinkedIn**: [Alexandru-Razvan Olariu](https://www.linkedin.com/in/olariu-alexandru/)
590
- - 📧 **Email**: [admin@arolariu.ro](mailto:admin@arolariu.ro)
591
-
592
- ---
593
-
594
- ## 🙏 Acknowledgments & Inspiration
595
-
596
- This library wouldn't exist without these amazing projects:
597
-
598
- - 🎨 **[Radix UI](https://www.radix-ui.com/)** - Accessible component primitives
599
- - 💫 **[shadcn/ui](https://ui.shadcn.com/)** - Component design patterns and inspiration
600
- - 🎭 **[Tailwind CSS](https://tailwindcss.com/)** - Utility-first CSS framework
601
- - ⚡ **[Motion](https://motion.dev/)** - Animation library for React
602
- - 🛠️ **[Rslib](https://rslib.dev/)** - Fast, modern bundling with Rsbuild
603
- - 📖 **[Storybook](https://storybook.js.org/)** - Component development environment
604
- - 🎪 **[Magic UI](https://magicui.design/)** - Additional component inspiration
605
- - ✨ **[Aceternity UI](https://ui.aceternity.com/)** - Creative component patterns
606
-
607
- **Special thanks** to the open-source community for making all of this possible! 💜
608
-
609
- ---
610
-
611
- <div align="center">
612
-
613
- ## ⭐ Star the Project
614
-
615
- If **@arolariu/components** helps you build better UIs, please consider giving it a star on GitHub!
616
-
617
- [![GitHub stars](https://img.shields.io/github/stars/arolariu/arolariu.ro?style=social)](https://github.com/arolariu/arolariu.ro)
618
-
619
- **[⭐ Star on GitHub](https://github.com/arolariu/arolariu.ro)** • **[📖 View Documentation](https://storybook.arolariu.ro)** • **[🐛 Report Issues](https://github.com/arolariu/arolariu.ro/issues)**
620
-
621
- ---
622
-
623
- **Built with ❤️ for the React community**
624
-
625
- _Making beautiful, accessible UIs easier to build, one component at a time._
626
-
627
- </div>
1
+ # ✨ @arolariu/components
2
+
3
+ <div align="center">
4
+
5
+ ![npm version](https://img.shields.io/npm/v/@arolariu/components?style=for-the-badge&color=blue)
6
+ ![npm downloads](https://img.shields.io/npm/dm/@arolariu/components?style=for-the-badge&color=green)
7
+ ![bundle size](https://img.shields.io/bundlephobia/minzip/@arolariu/components?style=for-the-badge&color=orange)
8
+ ![license](https://img.shields.io/npm/l/@arolariu/components?style=for-the-badge&color=purple)
9
+
10
+ ![TypeScript](https://img.shields.io/badge/TypeScript-100%25-blue?style=for-the-badge&logo=typescript)
11
+ ![Tree Shakeable](https://img.shields.io/badge/Tree%20Shakeable-✅-brightgreen?style=for-the-badge)
12
+ ![React 19 Ready](https://img.shields.io/badge/React%2019-Ready-61dafb?style=for-the-badge&logo=react)
13
+ ![GitHub Stars](https://img.shields.io/github/stars/arolariu/arolariu.ro?style=for-the-badge&logo=github)
14
+
15
+ **Modern • Accessible • Production Ready**
16
+
17
+ _A comprehensive collection of 60+ beautifully crafted React components built on [Radix UI](https://www.radix-ui.com/) primitives, designed for modern applications that demand both beauty and performance._
18
+
19
+ [🚀 Get Started](#-quick-start) • [📖 Documentation](#-component-catalog) • [🎨 Storybook](https://storybook.arolariu.ro) • [💡 Examples](#-usage-examples) • [🤝 Contributing](#-contributing)
20
+
21
+ </div>
22
+
23
+ ---
24
+
25
+ ## 🎯 Why Choose @arolariu/components?
26
+
27
+ **For Developers Who Care About Quality**
28
+
29
+ - **🎨 Beautiful by Default** - Carefully designed components that look great out of the box
30
+ - **♿ Accessibility First** - Built on Radix UI primitives with WAI-ARIA compliance
31
+ - **⚡ Performance Optimized** - Tree-shakeable, minimal bundle impact, source maps included
32
+ - **🔧 Developer Experience** - Full TypeScript support, comprehensive docs, and debugging tools
33
+ - **🎭 Flexible Styling** - Tailwind CSS integration with easy customization
34
+ - **🚀 Modern Stack** - React 18/19, ESM/CJS, SSR compatible
35
+
36
+ **Perfect for building modern web applications, design systems, and prototypes.**
37
+
38
+ ## � Quick Start
39
+
40
+ Get up and running with @arolariu/components in under 2 minutes!
41
+
42
+ ### Installation
43
+
44
+ ```bash
45
+ # npm
46
+ npm install @arolariu/components
47
+
48
+ # yarn
49
+ yarn add @arolariu/components
50
+
51
+ # pnpm
52
+ pnpm add @arolariu/components
53
+ ```
54
+
55
+ ### Basic Setup
56
+
57
+ ```tsx
58
+ // 1. Import the component you need
59
+ import { Button } from "@arolariu/components/button";
60
+ import {
61
+ Card,
62
+ CardHeader,
63
+ CardTitle,
64
+ CardContent,
65
+ } from "@arolariu/components/card";
66
+
67
+ // 2. Use it in your React component
68
+ export default function MyApp() {
69
+ return (
70
+ <Card className="w-96">
71
+ <CardHeader>
72
+ <CardTitle>Welcome to @arolariu/components!</CardTitle>
73
+ </CardHeader>
74
+ <CardContent>
75
+ <Button>Get Started</Button>
76
+ </CardContent>
77
+ </Card>
78
+ );
79
+ }
80
+ ```
81
+
82
+ ### Add Styles (Required)
83
+
84
+ ```tsx
85
+ // Import the CSS in your app's entry point (e.g., main.tsx, _app.tsx)
86
+ import "@arolariu/components/styles";
87
+ ```
88
+
89
+ **That's it!** 🎉 You're ready to build beautiful UIs.
90
+
91
+ ---
92
+
93
+ ## 📖 Component Catalog
94
+
95
+ Explore our comprehensive collection of **60+ components** organized by category:
96
+
97
+ ### 🎨 Layout & Structure
98
+
99
+ | Component | Description | Import |
100
+ | --------------- | --------------------------------------- | ----------------------------------- |
101
+ | **Card** | Flexible container for grouping content | `@arolariu/components/card` |
102
+ | **AspectRatio** | Maintain consistent aspect ratios | `@arolariu/components/aspect-ratio` |
103
+ | **Separator** | Visual dividers for content sections | `@arolariu/components/separator` |
104
+ | **Resizable** | Split panes with resizable dividers | `@arolariu/components/resizable` |
105
+
106
+ ### 🎭 Interactive Elements
107
+
108
+ | Component | Description | Import |
109
+ | ------------ | ----------------------------------------- | ------------------------------- |
110
+ | **Button** | Primary action triggers with variants | `@arolariu/components/button` |
111
+ | **Input** | Text input fields with validation support | `@arolariu/components/input` |
112
+ | **Checkbox** | Binary choice selections | `@arolariu/components/checkbox` |
113
+ | **Select** | Dropdown selection menus | `@arolariu/components/select` |
114
+ | **Slider** | Range input controls | `@arolariu/components/slider` |
115
+
116
+ ### 🧭 Navigation
117
+
118
+ | Component | Description | Import |
119
+ | ------------------ | ------------------------------ | -------------------------------------- |
120
+ | **Tabs** | Tabbed content navigation | `@arolariu/components/tabs` |
121
+ | **Breadcrumb** | Hierarchical navigation trails | `@arolariu/components/breadcrumb` |
122
+ | **NavigationMenu** | Complex dropdown navigation | `@arolariu/components/navigation-menu` |
123
+ | **Sidebar** | Collapsible side navigation | `@arolariu/components/sidebar` |
124
+
125
+ ### � Overlays & Dialogs
126
+
127
+ | Component | Description | Import |
128
+ | -------------- | ---------------------------------- | --------------------------------- |
129
+ | **Dialog** | Modal dialogs and confirmations | `@arolariu/components/dialog` |
130
+ | **Sheet** | Slide-out panels from screen edges | `@arolariu/components/sheet` |
131
+ | **Popover** | Floating content containers | `@arolariu/components/popover` |
132
+ | **Tooltip** | Contextual information on hover | `@arolariu/components/tooltip` |
133
+ | **DropDrawer** | Advanced drawer with drop zones | `@arolariu/components/dropdrawer` |
134
+
135
+ ### 📊 Data Display
136
+
137
+ | Component | Description | Import |
138
+ | ------------ | -------------------------------------- | ------------------------------- |
139
+ | **Table** | Data tables with sorting/pagination | `@arolariu/components/table` |
140
+ | **Calendar** | Date selection and navigation | `@arolariu/components/calendar` |
141
+ | **Avatar** | User profile pictures and placeholders | `@arolariu/components/avatar` |
142
+ | **Badge** | Status indicators and labels | `@arolariu/components/badge` |
143
+ | **Chart** | Data visualization components | `@arolariu/components/chart` |
144
+
145
+ ### 🎪 Animated Backgrounds
146
+
147
+ | Component | Description | Import |
148
+ | ----------------------- | ------------------------------- | ------------------------------------------- |
149
+ | **DotBackground** | Animated dot matrix backgrounds | `@arolariu/components/dot-background` |
150
+ | **BubbleBackground** | Floating bubble animations | `@arolariu/components/bubble-background` |
151
+ | **FireworksBackground** | Particle explosion effects | `@arolariu/components/fireworks-background` |
152
+ | **GradientBackground** | Dynamic gradient animations | `@arolariu/components/gradient-background` |
153
+
154
+ ### 🎛️ Form Controls
155
+
156
+ | Component | Description | Import |
157
+ | -------------- | ---------------------------------- | ---------------------------------- |
158
+ | **Form** | Form validation and management | `@arolariu/components/form` |
159
+ | **InputOTP** | One-time password input fields | `@arolariu/components/input-otp` |
160
+ | **RadioGroup** | Single-choice option groups | `@arolariu/components/radio-group` |
161
+ | **Switch** | Toggle switches for binary options | `@arolariu/components/switch` |
162
+ | **Textarea** | Multi-line text input areas | `@arolariu/components/textarea` |
163
+
164
+ ### � Feedback & Status
165
+
166
+ | Component | Description | Import |
167
+ | ------------ | ------------------------------- | ------------------------------- |
168
+ | **Alert** | Important message notifications | `@arolariu/components/alert` |
169
+ | **Progress** | Task completion indicators | `@arolariu/components/progress` |
170
+ | **Skeleton** | Loading state placeholders | `@arolariu/components/skeleton` |
171
+ | **Sonner** | Toast notification system | `@arolariu/components/sonner` |
172
+
173
+ [**👀 View All Components**](https://storybook.arolariu.ro) in our interactive Storybook
174
+
175
+ ---
176
+
177
+ ## 💡 Usage Examples
178
+
179
+ ### Building a Login Form
180
+
181
+ ```tsx
182
+ import {
183
+ Card,
184
+ CardHeader,
185
+ CardTitle,
186
+ CardContent,
187
+ CardFooter,
188
+ } from "@arolariu/components/card";
189
+ import { Input } from "@arolariu/components/input";
190
+ import { Button } from "@arolariu/components/button";
191
+ import { Label } from "@arolariu/components/label";
192
+
193
+ export function LoginForm() {
194
+ return (
195
+ <Card className="w-96 mx-auto">
196
+ <CardHeader>
197
+ <CardTitle>Welcome Back</CardTitle>
198
+ </CardHeader>
199
+ <CardContent className="space-y-4">
200
+ <div>
201
+ <Label htmlFor="email">Email</Label>
202
+ <Input id="email" type="email" placeholder="you@example.com" />
203
+ </div>
204
+ <div>
205
+ <Label htmlFor="password">Password</Label>
206
+ <Input id="password" type="password" />
207
+ </div>
208
+ </CardContent>
209
+ <CardFooter>
210
+ <Button className="w-full">Sign In</Button>
211
+ </CardFooter>
212
+ </Card>
213
+ );
214
+ }
215
+ ```
216
+
217
+ ### Data Dashboard
218
+
219
+ ```tsx
220
+ import {
221
+ Card,
222
+ CardHeader,
223
+ CardTitle,
224
+ CardContent,
225
+ } from "@arolariu/components/card";
226
+ import { Progress } from "@arolariu/components/progress";
227
+ import { Badge } from "@arolariu/components/badge";
228
+ import { Chart } from "@arolariu/components/chart";
229
+
230
+ export function Dashboard() {
231
+ return (
232
+ <div className="grid grid-cols-1 md:grid-cols-3 gap-6 p-6">
233
+ <Card>
234
+ <CardHeader>
235
+ <CardTitle className="flex items-center justify-between">
236
+ Sales <Badge variant="secondary">+12%</Badge>
237
+ </CardTitle>
238
+ </CardHeader>
239
+ <CardContent>
240
+ <Progress value={75} className="w-full" />
241
+ <p className="text-sm text-muted-foreground mt-2">
242
+ 75% of monthly goal
243
+ </p>
244
+ </CardContent>
245
+ </Card>
246
+
247
+ <Card>
248
+ <CardHeader>
249
+ <CardTitle>Revenue</CardTitle>
250
+ </CardHeader>
251
+ <CardContent>
252
+ <Chart data={chartData} type="line" />
253
+ </CardContent>
254
+ </Card>
255
+ </div>
256
+ );
257
+ }
258
+ ```
259
+
260
+ ### Interactive Navigation
261
+
262
+ ```tsx
263
+ import {
264
+ NavigationMenu,
265
+ NavigationMenuItem,
266
+ NavigationMenuList,
267
+ } from "@arolariu/components/navigation-menu";
268
+ import { Button } from "@arolariu/components/button";
269
+ import { Sheet, SheetContent, SheetTrigger } from "@arolariu/components/sheet";
270
+ import { MenuIcon } from "lucide-react";
271
+
272
+ export function AppHeader() {
273
+ return (
274
+ <header className="border-b">
275
+ <div className="container mx-auto px-4 py-2 flex items-center justify-between">
276
+ <h1 className="text-2xl font-bold">My App</h1>
277
+
278
+ {/* Desktop Navigation */}
279
+ <NavigationMenu className="hidden md:flex">
280
+ <NavigationMenuList>
281
+ <NavigationMenuItem>
282
+ <Button variant="ghost">Home</Button>
283
+ </NavigationMenuItem>
284
+ <NavigationMenuItem>
285
+ <Button variant="ghost">About</Button>
286
+ </NavigationMenuItem>
287
+ <NavigationMenuItem>
288
+ <Button variant="ghost">Contact</Button>
289
+ </NavigationMenuItem>
290
+ </NavigationMenuList>
291
+ </NavigationMenu>
292
+
293
+ {/* Mobile Navigation */}
294
+ <Sheet>
295
+ <SheetTrigger asChild>
296
+ <Button variant="ghost" size="icon" className="md:hidden">
297
+ <MenuIcon />
298
+ </Button>
299
+ </SheetTrigger>
300
+ <SheetContent>
301
+ <nav className="space-y-4">
302
+ <Button variant="ghost" className="w-full justify-start">
303
+ Home
304
+ </Button>
305
+ <Button variant="ghost" className="w-full justify-start">
306
+ About
307
+ </Button>
308
+ <Button variant="ghost" className="w-full justify-start">
309
+ Contact
310
+ </Button>
311
+ </nav>
312
+ </SheetContent>
313
+ </Sheet>
314
+ </div>
315
+ </header>
316
+ );
317
+ }
318
+ ```
319
+
320
+ ---
321
+
322
+ ## 🛠️ Advanced Features
323
+
324
+ ### Tree Shaking & Bundle Optimization
325
+
326
+ **@arolariu/components** is built with bundle optimization in mind:
327
+
328
+ ```tsx
329
+ // ✅ Optimal: Import only what you need
330
+ import { Button } from "@arolariu/components/button";
331
+ import { Card } from "@arolariu/components/card";
332
+
333
+ // ❌ Avoid: Barrel imports increase bundle size
334
+ import { Button, Card } from "@arolariu/components";
335
+ ```
336
+
337
+ **Bundle Impact:**
338
+
339
+ - Individual components: ~2-5KB gzipped
340
+ - Full library: ~150KB gzipped
341
+ - With tree shaking: Only pay for what you use
342
+
343
+ ### TypeScript Integration
344
+
345
+ Full TypeScript support with intelligent autocomplete:
346
+
347
+ ```tsx
348
+ import { Button, type ButtonProps } from "@arolariu/components/button";
349
+ import { type VariantProps } from "class-variance-authority";
350
+
351
+ // Get variant types for custom components
352
+ type ButtonVariant = VariantProps<typeof Button>["variant"];
353
+
354
+ interface CustomButtonProps extends ButtonProps {
355
+ icon?: React.ReactNode;
356
+ variant?: ButtonVariant;
357
+ }
358
+
359
+ export function CustomButton({ icon, children, ...props }: CustomButtonProps) {
360
+ return (
361
+ <Button {...props}>
362
+ {icon && <span className="mr-2">{icon}</span>}
363
+ {children}
364
+ </Button>
365
+ );
366
+ }
367
+ ```
368
+
369
+ ### Server-Side Rendering (SSR)
370
+
371
+ Compatible with **Next.js**, **Remix**, and other SSR frameworks:
372
+
373
+ ```tsx
374
+ // app/page.tsx (Next.js App Router)
375
+ import { Card, CardContent } from "@arolariu/components/card";
376
+ import { Button } from "@arolariu/components/button";
377
+
378
+ export default function HomePage() {
379
+ return (
380
+ <Card>
381
+ <CardContent>
382
+ <Button>Server-rendered Button</Button>
383
+ </CardContent>
384
+ </Card>
385
+ );
386
+ }
387
+
388
+ // For client-side interactivity
389
+ ("use client");
390
+ import { useState } from "react";
391
+ import {
392
+ Dialog,
393
+ DialogTrigger,
394
+ DialogContent,
395
+ } from "@arolariu/components/dialog";
396
+
397
+ export function InteractiveComponent() {
398
+ const [isOpen, setIsOpen] = useState(false);
399
+
400
+ return (
401
+ <Dialog open={isOpen} onOpenChange={setIsOpen}>
402
+ <DialogTrigger asChild>
403
+ <Button>Open Dialog</Button>
404
+ </DialogTrigger>
405
+ <DialogContent>
406
+ <p>This dialog requires client-side JavaScript!</p>
407
+ </DialogContent>
408
+ </Dialog>
409
+ );
410
+ }
411
+ ```
412
+
413
+ ### Theming & Customization
414
+
415
+ Built with **Tailwind CSS** for easy customization:
416
+
417
+ ```tsx
418
+ // Custom theme configuration
419
+ import { Button } from "@arolariu/components/button";
420
+
421
+ // Override styles with Tailwind classes
422
+ <Button className="bg-purple-600 hover:bg-purple-700 text-white">
423
+ Custom Styled Button
424
+ </Button>;
425
+
426
+ // Or create your own variants
427
+ import { cva } from "class-variance-authority";
428
+
429
+ const customButtonVariants = cva(
430
+ "inline-flex items-center justify-center rounded-md font-medium transition-colors",
431
+ {
432
+ variants: {
433
+ variant: {
434
+ gradient:
435
+ "bg-gradient-to-r from-purple-500 to-pink-500 text-white hover:from-purple-600 hover:to-pink-600",
436
+ neon: "bg-black text-green-400 border border-green-400 hover:bg-green-400 hover:text-black",
437
+ },
438
+ },
439
+ },
440
+ );
441
+ ```
442
+
443
+ ---
444
+
445
+ ## 🔍 Debugging & Development
446
+
447
+ ### Complete Source Map Support
448
+
449
+ **Debug like a pro** with comprehensive development tools:
450
+
451
+ - ✅ **JavaScript source maps** for accurate debugging
452
+ - ✅ **CSS source maps** for Tailwind debugging
453
+ - ✅ **TypeScript declaration maps** for IDE IntelliSense
454
+ - ✅ **Original source access** via included `src/` directory
455
+
456
+ ### Browser DevTools Integration
457
+
458
+ ```tsx
459
+ // Components are easily debuggable in DevTools
460
+ import { Button } from "@arolariu/components/button";
461
+
462
+ function MyComponent() {
463
+ return <Button onClick={() => console.log("Clicked!")}>Debug Me</Button>;
464
+ }
465
+
466
+ // Set breakpoints in your original TypeScript code
467
+ // Stack traces point to exact source locations
468
+ // Inspect component props and state easily
469
+ ```
470
+
471
+ 📖 **[Full Debugging Guide](./DEBUGGING.md)** - Learn advanced debugging techniques
472
+
473
+ ---
474
+
475
+ ## 🌐 Browser Support
476
+
477
+ **Modern browsers only** for optimal performance:
478
+
479
+ | Browser | Version |
480
+ | ------------------ | ----------- |
481
+ | 🌟 **Chrome/Edge** | 90+ (2021+) |
482
+ | 🦊 **Firefox** | 88+ (2021+) |
483
+ | 🧭 **Safari** | 14+ (2020+) |
484
+
485
+ **Why modern browsers?** We use latest web standards for smaller bundles and better performance.
486
+
487
+ ---
488
+
489
+ ## 🤝 Contributing
490
+
491
+ We welcome contributions! Help make @arolariu/components even better.
492
+
493
+ ### Quick Start for Contributors
494
+
495
+ ```bash
496
+ # 1. Fork and clone the repository
497
+ git clone https://github.com/your-username/arolariu.ro.git
498
+ cd arolariu.ro/packages/components
499
+
500
+ # 2. Install dependencies
501
+ yarn install
502
+
503
+ # 3. Start development environment
504
+ yarn storybook # Launch Storybook at http://localhost:6006
505
+ yarn build # Build the library
506
+
507
+ # 4. Make your changes and test
508
+ yarn build # Ensure everything builds correctly
509
+ ```
510
+
511
+ ### Ways to Contribute
512
+
513
+ - 🐛 **Report bugs** - Found an issue? [Open an issue](https://github.com/arolariu/arolariu.ro/issues)
514
+ - 💡 **Suggest features** - Have an idea? We'd love to hear it!
515
+ - 🔧 **Fix issues** - Browse [open issues](https://github.com/arolariu/arolariu.ro/issues) and submit PRs
516
+ - 📖 **Improve docs** - Help make our documentation clearer
517
+ - 🎨 **Add components** - Contribute new components following our patterns
518
+
519
+ ### Component Development Guidelines
520
+
521
+ 1. **Follow accessibility standards** - Use Radix UI primitives when possible
522
+ 2. **Include TypeScript types** - Full type definitions required
523
+ 3. **Add Storybook stories** - Document all variants and use cases
524
+ 4. **Write tests** - Ensure components work correctly
525
+ 5. **Follow naming conventions** - Use clear, descriptive names
526
+
527
+ **[Read our full contributing guide →](./CONTRIBUTING.md)**
528
+
529
+ ---
530
+
531
+ ## 📦 Package Details
532
+
533
+ ### Bundle Information
534
+
535
+ ```bash
536
+ # Package size analysis
537
+ npm install @arolariu/components
538
+ npx bundlephobia @arolariu/components
539
+ ```
540
+
541
+ **Key Stats:**
542
+
543
+ - � **Bundle size**: ~150KB (full library, gzipped)
544
+ - 🌲 **Tree-shakeable**: Import only what you need (2-5KB per component)
545
+ - 📝 **TypeScript**: 100% typed with declaration maps
546
+ - ♿ **Accessibility**: WAI-ARIA compliant via Radix UI
547
+ - 🎭 **Styling**: Tailwind CSS integration
548
+ - 📱 **Responsive**: Mobile-first design approach
549
+
550
+ ### Dependencies
551
+
552
+ **Zero runtime dependencies** for end users! Built on top of:
553
+
554
+ - **Radix UI** - Accessible component primitives
555
+ - **Tailwind CSS** - Utility-first styling (peer dependency)
556
+ - **Motion** - Animation library (peer dependency)
557
+ - **React 18/19** - Modern React features (peer dependency)
558
+
559
+ ---
560
+
561
+ ## 📄 License
562
+
563
+ **MIT License** - Use freely in personal and commercial projects.
564
+
565
+ ```
566
+ MIT License
567
+
568
+ Copyright (c) 2025 Alexandru-Razvan Olariu
569
+
570
+ Permission is hereby granted, free of charge, to any person obtaining a copy
571
+ of this software and associated documentation files (the "Software"), to deal
572
+ in the Software without restriction, including without limitation the rights
573
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
574
+ copies of the Software...
575
+ ```
576
+
577
+ [**View full license →**](./LICENSE)
578
+
579
+ ---
580
+
581
+ ## 👨‍💻 About the Author
582
+
583
+ **Alexandru-Razvan Olariu**
584
+
585
+ Senior Software Engineer passionate about creating beautiful, accessible user interfaces and developer tools.
586
+
587
+ - 🌐 **Website**: [arolariu.ro](https://arolariu.ro)
588
+ - 💻 **GitHub**: [@arolariu](https://github.com/arolariu)
589
+ - � **LinkedIn**: [Alexandru-Razvan Olariu](https://www.linkedin.com/in/olariu-alexandru/)
590
+ - 📧 **Email**: [admin@arolariu.ro](mailto:admin@arolariu.ro)
591
+
592
+ ---
593
+
594
+ ## 🙏 Acknowledgments & Inspiration
595
+
596
+ This library wouldn't exist without these amazing projects:
597
+
598
+ - 🎨 **[Radix UI](https://www.radix-ui.com/)** - Accessible component primitives
599
+ - 💫 **[shadcn/ui](https://ui.shadcn.com/)** - Component design patterns and inspiration
600
+ - 🎭 **[Tailwind CSS](https://tailwindcss.com/)** - Utility-first CSS framework
601
+ - ⚡ **[Motion](https://motion.dev/)** - Animation library for React
602
+ - 🛠️ **[Rslib](https://rslib.dev/)** - Fast, modern bundling with Rsbuild
603
+ - 📖 **[Storybook](https://storybook.js.org/)** - Component development environment
604
+ - 🎪 **[Magic UI](https://magicui.design/)** - Additional component inspiration
605
+ - ✨ **[Aceternity UI](https://ui.aceternity.com/)** - Creative component patterns
606
+
607
+ **Special thanks** to the open-source community for making all of this possible! 💜
608
+
609
+ ---
610
+
611
+ <div align="center">
612
+
613
+ ## ⭐ Star the Project
614
+
615
+ If **@arolariu/components** helps you build better UIs, please consider giving it a star on GitHub!
616
+
617
+ [![GitHub stars](https://img.shields.io/github/stars/arolariu/arolariu.ro?style=social)](https://github.com/arolariu/arolariu.ro)
618
+
619
+ **[⭐ Star on GitHub](https://github.com/arolariu/arolariu.ro)** • **[📖 View Documentation](https://storybook.arolariu.ro)** • **[🐛 Report Issues](https://github.com/arolariu/arolariu.ro/issues)**
620
+
621
+ ---
622
+
623
+ **Built with ❤️ for the React community**
624
+
625
+ _Making beautiful, accessible UIs easier to build, one component at a time._
626
+
627
+ </div>