{"_id":"@acomu/design-system","name":"@acomu/design-system","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@acomu/design-system","version":"0.1.0","description":"Acomu design system - React UI components built with Radix UI and Tailwind CSS","private":false,"keywords":["react","design-system","ui","components","radix-ui","tailwind","shadcn"],"license":"MIT","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"next dev","build":"next build","build:lib":"tsup","start":"next start","lint":"eslint","storybook":"storybook dev -p 6006","build-storybook":"storybook build","prepublishOnly":"npm run build:lib"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","next":">=14.0.0"},"peerDependenciesMeta":{"next":{"optional":true}},"dependencies":{"@radix-ui/react-accordion":"^1.2.12","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-aspect-ratio":"^1.1.8","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-context-menu":"^2.2.16","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-label":"^2.1.8","@radix-ui/react-menubar":"^1.1.16","@radix-ui/react-navigation-menu":"^1.2.14","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-progress":"^1.1.8","@radix-ui/react-radio-group":"^1.3.8","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-slider":"^1.3.6","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-switch":"^1.2.6","@radix-ui/react-tabs":"^1.1.13","@radix-ui/react-toast":"^1.2.15","@radix-ui/react-toggle":"^1.1.10","@radix-ui/react-toggle-group":"^1.1.11","@radix-ui/react-tooltip":"^1.2.8"},"devDependencies":{"@hookform/resolvers":"^5.2.2","class-variance-authority":"^0.7.1","clsx":"^2.1.1","cmdk":"^1.1.1","date-fns":"^4.1.0","embla-carousel-react":"^8.6.0","input-otp":"^1.4.2","lucide-react":"^0.553.0","next":"16.0.1","react":"19.2.0","react-day-picker":"^9.11.1","react-dom":"19.2.0","react-hook-form":"^7.66.0","react-resizable-panels":"^3.0.6","recharts":"2.15.4","tailwind-merge":"^3.3.1","vaul":"^1.1.2","zod":"^4.1.12","@chromatic-com/storybook":"^4.1.2","@storybook/addon-a11y":"^10.0.6","@storybook/addon-docs":"^10.0.6","@storybook/addon-onboarding":"^10.0.6","@storybook/addon-vitest":"^10.0.6","@storybook/nextjs-vite":"^10.0.6","@tailwindcss/postcss":"^4","@types/node":"^20","@types/react":"^19","@types/react-dom":"^19","@vitest/browser-playwright":"^4.0.8","@vitest/coverage-v8":"^4.0.8","eslint":"^9","eslint-config-next":"16.0.1","eslint-plugin-storybook":"^10.0.6","playwright":"^1.56.1","shadcn":"^3.5.0","storybook":"^10.0.6","tailwindcss":"^4","tailwindcss-animate":"^1.0.7","tsup":"^8.5.0","typescript":"^5","vite":"^7.2.2","vitest":"^4.0.8"},"gitHead":"74c7ee7f9fbc44d1c03d2a63ccb355ab810aa0c4","_id":"@acomu/design-system@0.1.0","_nodeVersion":"25.1.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-Xqs8qM63EUAtRyaBClj9wu811z22m9V2p6I1jA0RMRYcEuz713sjVGu+c+yfCPhuPgPjM+6xmdqd4YygYH/Xnw==","shasum":"c99947ff64a24e4983da89d2e8ef18c54c7fe302","tarball":"https://registry.npmjs.org/@acomu/design-system/-/design-system-0.1.0.tgz","fileCount":6,"unpackedSize":554873,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD0/TSklayybNfIRJVzoF/oc/2E00+aRXktErl+BEpA/gIgBn3ZhOGck/NTgidPv+FwAK6m8Znz78RKzi/YfyYhDT8="}]},"_npmUser":{"name":"b87","email":"b.barroso87@gmail.com"},"directories":{},"maintainers":[{"name":"b87","email":"b.barroso87@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/design-system_0.1.0_1762680303538_0.18398272888803735"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-09T09:25:03.439Z","0.1.0":"2025-11-09T09:25:03.743Z","modified":"2025-11-09T09:25:04.067Z"},"maintainers":[{"name":"b87","email":"b.barroso87@gmail.com"}],"description":"Acomu design system - React UI components built with Radix UI and Tailwind CSS","keywords":["react","design-system","ui","components","radix-ui","tailwind","shadcn"],"license":"MIT","readme":"# @acomu/design-system\n\nA complete, production-ready React component library built with **44+ shadcn/ui components**, Storybook documentation, TypeScript, Tailwind CSS v4, and ACOMU brand styling.\n\n[![React](https://img.shields.io/badge/React-19-blue)](https://reactjs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5-blue)](https://www.typescriptlang.org/)\n[![Tailwind CSS](https://img.shields.io/badge/Tailwind-v4-38bdf8)](https://tailwindcss.com/)\n[![Storybook](https://img.shields.io/badge/Storybook-Documented-ff4785)](https://storybook.js.org/)\n\n## ✨ Features\n\n- 🎨 **44+ Components** - Complete shadcn/ui library with ACOMU brand colors\n- 📚 **Storybook Documentation** - 40+ stories with interactive examples\n- 🎯 **TypeScript** - Full type safety and IntelliSense support\n- 🌗 **Dark Mode** - Built-in dark mode support\n- 📦 **Tree-shakeable** - Optimized bundle sizes with dual module formats (CJS + ESM)\n- ♿ **Accessible** - Built on Radix UI primitives\n- 🎨 **Customizable** - CSS variables for easy theming\n- 🔧 **Developer Experience** - Hot reload, fast builds with tsup\n\n## 📦 Quick Start\n\n### 1. Install the Package\n\n**For workspace development (recommended):**\n\n```bash\n# In your project's package.json\n{\n  \"dependencies\": {\n    \"@acomu/design-system\": \"file:../design-system\"\n  }\n}\n```\n\n**From npm (if published):**\n\n```bash\npnpm add @acomu/design-system\n```\n\n**From Git repository:**\n\n```bash\npnpm add git+https://github.com/your-org/design-system.git\n```\n\n### 2. Install Peer Dependencies\n\nThe design system requires these peer dependencies:\n\n```bash\npnpm add react react-dom @radix-ui/react-slot\n```\n\n**Note:** These are automatically installed if using pnpm workspace or npm/yarn.\n\n### 3. Import Styles\n\nAdd the global styles to your app's entry point (layout.tsx, _app.tsx, or main.tsx):\n\n```tsx\n// For Next.js App Router\nimport '@acomu/design-system/styles';\nimport './globals.css'; // Your custom styles (optional)\n\nexport default function RootLayout({ children }) {\n  return (\n    <html lang=\"en\">\n      <body>{children}</body>\n    </html>\n  );\n}\n```\n\n```tsx\n// For Next.js Pages Router (_app.tsx)\nimport '@acomu/design-system/styles';\nimport type { AppProps } from 'next/app';\n\nexport default function App({ Component, pageProps }: AppProps) {\n  return <Component {...pageProps} />;\n}\n```\n\n```tsx\n// For Vite/CRA (main.tsx/index.tsx)\nimport '@acomu/design-system/styles';\nimport ReactDOM from 'react-dom/client';\nimport App from './App';\n\nReactDOM.createRoot(document.getElementById('root')!).render(<App />);\n```\n\n### 4. Configure Tailwind (Optional but Recommended)\n\nIf your app uses Tailwind CSS, extend your config to include design-system paths:\n\n```js\n// tailwind.config.js\nmodule.exports = {\n  content: [\n    './src/**/*.{js,ts,jsx,tsx}',\n    './node_modules/@acomu/design-system/dist/**/*.{js,mjs}', // Add this\n  ],\n  // ... rest of your config\n};\n```\n\n## 📚 Component Index\n\nThe design system includes **44 components** organized into 7 categories:\n\n### Forms (11 components)\n\n| Component | Description | Import |\n|-----------|-------------|--------|\n| **Button** | Primary action button with multiple variants | `import { Button } from '@acomu/design-system'` |\n| **Input** | Text input field | `import { Input } from '@acomu/design-system'` |\n| **Textarea** | Multi-line text input | `import { Textarea } from '@acomu/design-system'` |\n| **Label** | Form field label | `import { Label } from '@acomu/design-system'` |\n| **Checkbox** | Checkbox input with label | `import { Checkbox } from '@acomu/design-system'` |\n| **RadioGroup** | Radio button group | `import { RadioGroup, RadioGroupItem } from '@acomu/design-system'` |\n| **Select** | Dropdown selection menu | `import { Select, SelectTrigger, SelectContent, SelectItem } from '@acomu/design-system'` |\n| **Switch** | Toggle switch | `import { Switch } from '@acomu/design-system'` |\n| **Slider** | Range slider input | `import { Slider } from '@acomu/design-system'` |\n| **InputOTP** | One-time password input | `import { InputOTP, InputOTPGroup, InputOTPSlot } from '@acomu/design-system'` |\n\n### Layout (8 components)\n\n| Component | Description | Import |\n|-----------|-------------|--------|\n| **Card** | Container with header, content, and footer | `import { Card, CardHeader, CardContent, CardFooter } from '@acomu/design-system'` |\n| **Separator** | Visual divider line | `import { Separator } from '@acomu/design-system'` |\n| **AspectRatio** | Maintain aspect ratio container | `import { AspectRatio } from '@acomu/design-system'` |\n| **Tabs** | Tabbed content panels | `import { Tabs, TabsList, TabsTrigger, TabsContent } from '@acomu/design-system'` |\n| **Accordion** | Collapsible content sections | `import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from '@acomu/design-system'` |\n| **Collapsible** | Hide/show content toggle | `import { Collapsible, CollapsibleTrigger, CollapsibleContent } from '@acomu/design-system'` |\n| **ScrollArea** | Custom scrollable container | `import { ScrollArea, ScrollBar } from '@acomu/design-system'` |\n| **Resizable** | Resizable panel layout | `import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@acomu/design-system'` |\n\n### Navigation (5 components)\n\n| Component | Description | Import |\n|-----------|-------------|--------|\n| **Breadcrumb** | Navigation breadcrumb trail | `import { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink } from '@acomu/design-system'` |\n| **Pagination** | Page navigation controls | `import { Pagination, PaginationContent, PaginationItem, PaginationLink } from '@acomu/design-system'` |\n| **NavigationMenu** | Responsive navigation menu | `import { NavigationMenu, NavigationMenuList, NavigationMenuItem } from '@acomu/design-system'` |\n| **Menubar** | Application menu bar | `import { Menubar, MenubarMenu, MenubarTrigger, MenubarContent } from '@acomu/design-system'` |\n| **Command** | Command palette / search | `import { Command, CommandInput, CommandList, CommandItem } from '@acomu/design-system'` |\n\n### Overlays (9 components)\n\n| Component | Description | Import |\n|-----------|-------------|--------|\n| **Dialog** | Modal dialog window | `import { Dialog, DialogTrigger, DialogContent, DialogHeader } from '@acomu/design-system'` |\n| **Sheet** | Slide-out panel (drawer) | `import { Sheet, SheetTrigger, SheetContent, SheetHeader } from '@acomu/design-system'` |\n| **Popover** | Floating content container | `import { Popover, PopoverTrigger, PopoverContent } from '@acomu/design-system'` |\n| **Tooltip** | Hover tooltip | `import { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from '@acomu/design-system'` |\n| **HoverCard** | Rich hover content card | `import { HoverCard, HoverCardTrigger, HoverCardContent } from '@acomu/design-system'` |\n| **DropdownMenu** | Dropdown menu with actions | `import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem } from '@acomu/design-system'` |\n| **ContextMenu** | Right-click context menu | `import { ContextMenu, ContextMenuTrigger, ContextMenuContent, ContextMenuItem } from '@acomu/design-system'` |\n| **Drawer** | Mobile-friendly drawer | `import { Drawer, DrawerTrigger, DrawerContent, DrawerHeader } from '@acomu/design-system'` |\n\n### Feedback (4 components)\n\n| Component | Description | Import |\n|-----------|-------------|--------|\n| **Alert** | Alert message banner | `import { Alert, AlertTitle, AlertDescription } from '@acomu/design-system'` |\n| **Toast** | Temporary notification | `import { useToast, Toaster } from '@acomu/design-system'` |\n| **Progress** | Progress indicator bar | `import { Progress } from '@acomu/design-system'` |\n| **Skeleton** | Loading placeholder | `import { Skeleton } from '@acomu/design-system'` |\n\n### Data Display (6 components)\n\n| Component | Description | Import |\n|-----------|-------------|--------|\n| **Table** | Data table with sorting | `import { Table, TableHeader, TableBody, TableRow, TableCell } from '@acomu/design-system'` |\n| **Avatar** | User avatar image | `import { Avatar, AvatarImage, AvatarFallback } from '@acomu/design-system'` |\n| **Badge** | Small status badge | `import { Badge } from '@acomu/design-system'` |\n| **Calendar** | Date picker calendar | `import { Calendar } from '@acomu/design-system'` |\n| **Carousel** | Image/content carousel | `import { Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext } from '@acomu/design-system'` |\n| **Chart** | Data visualization charts | `import { ChartContainer, ChartTooltip, ChartLegend } from '@acomu/design-system'` |\n\n### Utilities (3 components)\n\n| Component | Description | Import |\n|-----------|-------------|--------|\n| **Toggle** | Toggle button | `import { Toggle } from '@acomu/design-system'` |\n| **ToggleGroup** | Group of toggle buttons | `import { ToggleGroup, ToggleGroupItem } from '@acomu/design-system'` |\n| **cn** | Utility for merging class names | `import { cn } from '@acomu/design-system'` |\n\n## 🚀 Usage Examples\n\n### Basic Button Example\n\n```tsx\nimport { Button } from '@acomu/design-system';\n\nfunction App() {\n  return (\n    <div className=\"space-x-2\">\n      <Button variant=\"default\">Default</Button>\n      <Button variant=\"destructive\">Delete</Button>\n      <Button variant=\"outline\">Outline</Button>\n      <Button variant=\"secondary\">Secondary</Button>\n      <Button variant=\"ghost\">Ghost</Button>\n      <Button variant=\"link\">Link</Button>\n    </div>\n  );\n}\n```\n\n### Form Example\n\n```tsx\nimport {\n  Input,\n  Label,\n  Button,\n  Textarea,\n  Select,\n  SelectTrigger,\n  SelectValue,\n  SelectContent,\n  SelectItem\n} from '@acomu/design-system';\n\nfunction ContactForm() {\n  return (\n    <form className=\"space-y-4 max-w-md\">\n      <div>\n        <Label htmlFor=\"name\">Name</Label>\n        <Input id=\"name\" placeholder=\"Enter your name\" />\n      </div>\n\n      <div>\n        <Label htmlFor=\"email\">Email</Label>\n        <Input id=\"email\" type=\"email\" placeholder=\"email@example.com\" />\n      </div>\n\n      <div>\n        <Label htmlFor=\"subject\">Subject</Label>\n        <Select>\n          <SelectTrigger>\n            <SelectValue placeholder=\"Select a subject\" />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectItem value=\"general\">General Inquiry</SelectItem>\n            <SelectItem value=\"support\">Support</SelectItem>\n            <SelectItem value=\"sales\">Sales</SelectItem>\n          </SelectContent>\n        </Select>\n      </div>\n\n      <div>\n        <Label htmlFor=\"message\">Message</Label>\n        <Textarea id=\"message\" placeholder=\"Your message...\" />\n      </div>\n\n      <Button type=\"submit\">Send Message</Button>\n    </form>\n  );\n}\n```\n\n### Dialog Example\n\n```tsx\nimport {\n  Dialog,\n  DialogTrigger,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogDescription,\n  Button\n} from '@acomu/design-system';\n\nfunction DeleteConfirmation() {\n  return (\n    <Dialog>\n      <DialogTrigger asChild>\n        <Button variant=\"destructive\">Delete Account</Button>\n      </DialogTrigger>\n      <DialogContent>\n        <DialogHeader>\n          <DialogTitle>Are you absolutely sure?</DialogTitle>\n          <DialogDescription>\n            This action cannot be undone. This will permanently delete your\n            account and remove your data from our servers.\n          </DialogDescription>\n        </DialogHeader>\n        <div className=\"flex justify-end gap-2\">\n          <Button variant=\"outline\">Cancel</Button>\n          <Button variant=\"destructive\">Delete</Button>\n        </div>\n      </DialogContent>\n    </Dialog>\n  );\n}\n```\n\n### Toast Notification Example\n\n```tsx\nimport { Button, useToast, Toaster } from '@acomu/design-system';\n\nfunction App() {\n  const { toast } = useToast();\n\n  return (\n    <>\n      <Button\n        onClick={() => {\n          toast({\n            title: \"Success!\",\n            description: \"Your changes have been saved.\",\n          });\n        }}\n      >\n        Show Toast\n      </Button>\n      <Toaster />\n    </>\n  );\n}\n```\n\n### Card with Avatar Example\n\n```tsx\nimport {\n  Card,\n  CardHeader,\n  CardContent,\n  CardFooter,\n  Avatar,\n  AvatarImage,\n  AvatarFallback,\n  Button,\n  Badge\n} from '@acomu/design-system';\n\nfunction UserCard() {\n  return (\n    <Card className=\"w-[350px]\">\n      <CardHeader>\n        <div className=\"flex items-center gap-4\">\n          <Avatar>\n            <AvatarImage src=\"/avatar.jpg\" />\n            <AvatarFallback>JD</AvatarFallback>\n          </Avatar>\n          <div>\n            <h3 className=\"font-semibold\">John Doe</h3>\n            <p className=\"text-sm text-muted-foreground\">@johndoe</p>\n          </div>\n        </div>\n      </CardHeader>\n      <CardContent>\n        <p className=\"text-sm\">\n          Full-stack developer passionate about building great user experiences.\n        </p>\n        <div className=\"flex gap-2 mt-4\">\n          <Badge>React</Badge>\n          <Badge>TypeScript</Badge>\n          <Badge>Node.js</Badge>\n        </div>\n      </CardContent>\n      <CardFooter>\n        <Button className=\"w-full\">Follow</Button>\n      </CardFooter>\n    </Card>\n  );\n}\n```\n\n## 🎨 Theming & Customization\n\n### Brand Colors (ACOMU)\n\nThe design system uses ACOMU brand colors by default:\n\n- **Primary**: `#F28C28` (Orange)\n- **Background**: `#fbfaf7` (Warm Beige)\n\n### Customizing Colors\n\nYou can override the default colors by modifying CSS variables in your app:\n\n```css\n/* In your app's global CSS */\n:root {\n  --primary: 33 89% 55%; /* HSL values */\n  --background: 40 25% 98%;\n  /* ... other color tokens */\n}\n```\n\n### Dark Mode\n\nDark mode is supported out of the box. Use `next-themes` or a similar solution:\n\n```tsx\nimport { ThemeProvider } from 'next-themes';\n\nfunction App({ children }) {\n  return (\n    <ThemeProvider attribute=\"class\" defaultTheme=\"system\">\n      {children}\n    </ThemeProvider>\n  );\n}\n```\n\n## 🛠️ Development\n\n### Prerequisites\n\n- Node.js 18.17+\n- pnpm 8+\n\n### Available Scripts\n\n```bash\n# Development\npnpm run storybook              # Run Storybook dev server (http://localhost:6006)\npnpm run build:lib              # Build library for production\npnpm run build-storybook        # Build Storybook for deployment\npnpm run lint                   # Run ESLint\n\n# Build outputs\npnpm run build:lib              # Creates dist/ with:\n                                # - index.js (CommonJS, 136 KB)\n                                # - index.mjs (ES Modules, 120 KB)\n                                # - index.d.ts (TypeScript definitions)\n```\n\n### Project Structure\n\n```\ndesign-system/\n├── src/\n│   ├── components/\n│   │   └── ui/              # 44 shadcn/ui components\n│   ├── hooks/               # React hooks (useToast, etc.)\n│   ├── lib/                 # Utilities (cn helper)\n│   ├── stories/             # 40 Storybook stories\n│   ├── styles/              # Global CSS with brand colors\n│   └── index.ts             # Main entry point (all exports)\n├── dist/                    # Built library (generated)\n├── storybook-static/        # Built Storybook (generated)\n├── .storybook/              # Storybook configuration\n├── tsup.config.ts           # Build configuration\n└── package.json             # Package metadata\n```\n\n### Adding New Components\n\n```bash\n# Add a shadcn component\nnpx shadcn@latest add [component-name]\n\n# Export it from src/index.ts\n# Create a Storybook story in src/stories/\n# Build and test\npnpm run build:lib && pnpm run storybook\n```\n\n## 📝 Publishing\n\n```bash\n# 1. Update version\nnpm version patch|minor|major\n\n# 2. Build\npnpm run build:lib\n\n# 3. Publish\nnpm publish\n```\n\nThe `prepublishOnly` script automatically builds before publishing.\n\n## 🤝 Contributing\n\n1. Add components using `npx shadcn@latest add [component-name]`\n2. Export new components from `src/index.ts`\n3. Create Storybook stories in `src/stories/`\n4. Build and test: `pnpm run build:lib && pnpm run storybook`\n5. Ensure all components work in both light and dark modes\n\n## 📖 Documentation\n\n- **Storybook**: Run `pnpm run storybook` to view interactive component documentation\n- **Built Storybook**: Deploy `storybook-static/` folder for team documentation\n\n## 🔗 Links\n\n- [shadcn/ui](https://ui.shadcn.com/) - Component source\n- [Radix UI](https://www.radix-ui.com/) - Accessible primitives\n- [Tailwind CSS v4](https://tailwindcss.com/) - Styling framework\n- [Storybook](https://storybook.js.org/) - Component development\n\n## 📄 License\n\nMIT License - See LICENSE file for details\n","readmeFilename":"README.md","_rev":"1-7b5f6d7c7fc2e26528cca5205916e604"}