unu-design-system
v1.0.4
Published
A comprehensive Vue.js component library built with TypeScript, Tailwind CSS, and modern best practices.
Readme
UNU Design System
A comprehensive Vue.js component library built with TypeScript, Tailwind CSS, and modern best practices.
🚀 Features
- 281+ Components: Complete set of UI components for modern web applications
- TypeScript: Full TypeScript support with detailed type definitions
- Vue 3: Built for Vue 3 with Composition API
- Tailwind CSS: Styled with Tailwind CSS for easy customization
- Tree Shakeable: Import only what you need
- SSR Ready: Works with Nuxt.js and other Vue frameworks
- Accessible: Built with accessibility in mind
- Modern: Uses latest Vue ecosystem libraries
📦 Installation
npm install unu-design-system
# or
yarn add unu-design-system
# or
pnpm add unu-design-system🛠️ Usage
Basic Import
<template>
<div>
<Button variant="primary">Click me</Button>
<Alert>
<AlertTitle>Success!</AlertTitle>
<AlertDescription>Your operation was successful.</AlertDescription>
</Alert>
</div>
</template>
<script setup>
import { Button, Alert, AlertTitle, AlertDescription } from 'unu-design-system'
</script>Import Styles
Important: You need to import the CSS file for components to display correctly:
// In your main.js/main.ts or nuxt.config.ts
import 'unu-design-system/dist/unu-design-system.css'For Nuxt.js projects:
// nuxt.config.ts
export default defineNuxtConfig({
css: ['unu-design-system/dist/unu-design-system.css'],
})With Auto-Import (Nuxt.js)
// nuxt.config.ts
export default defineNuxtConfig({
modules: ['@nuxt/auto-imports'],
autoImports: {
imports: [
{
from: 'unu-design-system',
names: ['Button', 'Alert', 'Card' /* ... other components */],
},
],
},
})📚 Available Components
Form Components
Button- Customizable buttons with multiple variantsInput- Text input with validation supportTextarea- Multi-line text inputSelect- Dropdown select with searchCheckbox- Checkbox input componentRadioGroup- Radio button groupsSwitch- Toggle switch componentForm- Form wrapper with validationFormField- Individual form field wrapperLabel- Form labelsNumberField- Numeric input fieldPinInput- PIN/OTP input componentTagsInput- Tag input component
Layout & Containers
Card/CardHeader/CardContent/CardFooter- Flexible card containersSheet/SheetTrigger/SheetContent- Sliding panelsDialog/DialogTrigger/DialogContent- Modal dialogsAlertDialog- Confirmation dialogsTabs/TabsList/TabsTrigger/TabsContent- Tab navigationAccordion/AccordionItem/AccordionTrigger- Collapsible contentSeparator- Visual dividersSidebar- Sidebar navigation
Navigation
NavigationMenu- Main navigation menusBreadcrumb- Breadcrumb navigationPagination- Page navigation controlsMenuBar- Menu bar componentDropdownMenu- Dropdown menusContextMenu- Right-click context menus
Data Display
Table/TableHeader/TableBody/TableRow/TableCell- Data tablesAvatar/AvatarImage/AvatarFallback- User avatarsAvatarGroup- Grouped avatarsBadge- Status badges and labelsCalendar- Date picker calendarRangeCalendar- Date range pickerProgress- Progress indicatorsSkeleton- Loading skeletons
Feedback & Overlays
Alert/AlertTitle/AlertDescription- Alert messagesTooltip- Hover tooltipsPopover/PopoverTrigger/PopoverContent- Click/hover popoversSonner- Toast notifications
Interactive
Slider- Range slidersCarousel- Image/content carouselsCombobox- Searchable selectCommand- Command paletteStepper- Step-by-step navigation
Media & Graphics
Icon- Icon componentDevice- Device mockup componentsBlockquote- Styled quotes
🚀 Quick Start Example
<template>
<div class="p-6 max-w-md mx-auto">
<Card>
<CardHeader>
<CardTitle>Welcome to UNU Design System</CardTitle>
</CardHeader>
<CardContent class="space-y-4">
<Alert>
<AlertTitle>Getting Started</AlertTitle>
<AlertDescription>
You're now using UNU Design System components!
</AlertDescription>
</Alert>
<div class="flex gap-2">
<Button variant="default">Primary</Button>
<Button variant="secondary">Secondary</Button>
<Button variant="outline">Outline</Button>
</div>
<Badge variant="default">New Feature</Badge>
</CardContent>
</Card>
</div>
</template>
<script setup>
import {
Card,
CardHeader,
CardTitle,
CardContent,
Alert,
AlertTitle,
AlertDescription,
Button,
Badge,
} from 'unu-design-system'
</script>🎨 Styling
UNU Design System uses Tailwind CSS. Make sure you have Tailwind CSS installed in your project:
npm install tailwindcssAdd the component styles to your Tailwind config:
// tailwind.config.js
module.exports = {
content: [
'./node_modules/unu-design-system/**/*.{js,vue,ts}',
// your app content
],
// ... rest of your config
}🔧 TypeScript Support
The library includes comprehensive TypeScript definitions. No additional setup required!
import type { ButtonProps } from 'unu-design-system'📖 Documentation
For detailed component documentation and examples, visit our Storybook.
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Setup
# Clone the repository
git clone https://github.com/iiibnuadam/unu-design-system.git
# Install dependencies
pnpm install
# Start development server
pnpm dev
# Build the library
pnpm build
# Run Storybook
pnpm storybook📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🏢 About
Built by the Digital Transformation Team at UNU (Universitas Nahdlatul Ulama).
Based on:
- shadcn/vue - Component foundation
- Reka UI - Headless UI primitives
- Preline UI - Design inspiration
🔗 Links
Made with ❤️ by UNU Digital Transformation Team
