Frontend Development

Components

UI components and landing page sections included in Nuda Kit.

Nuda Kit uses shadcn/vue for its UI components. Unlike traditional component libraries, shadcn/vue components are copied directly into your codebase—giving you full ownership and control over every component.

Why shadcn/vue?

Full Ownership

Components live in your codebase. Modify them freely without fighting library constraints.

No Dependencies

No runtime dependency on a component library. Just your code.

Accessible

Built on Reka UI (Radix Vue successor) with full accessibility support.

Customizable

Styled with Tailwind CSS. Easy to match your brand.

Included UI Components

All components are located in frontend/app/components/ui/:

ComponentDescription
alert-dialogModal dialogs for important actions
avatarUser profile images with fallback
badgeStatus indicators and labels
breadcrumbNavigation breadcrumbs
buttonButtons with multiple variants
calendarDate picker calendar
cardContent containers
chartData visualization components
checkboxCheckbox inputs
collapsibleExpandable content sections
commandCommand palette / search
dialogModal dialogs
dropdown-menuDropdown menus
formForm field components
inputText inputs
labelForm labels
navigation-menuNavigation menus
pin-inputPIN/OTP input fields
popoverPopover overlays
progressProgress indicators
selectSelect dropdowns
separatorVisual dividers
sheetSlide-out panels
sidebarApplication sidebar
skeletonLoading placeholders
sonnerToast notifications
spinnerLoading spinners
switchToggle switches
tableData tables
tabsTabbed interfaces
tooltipHover tooltips

Using Components

Import components from their respective folders:

<script setup lang="ts">
import { Button } from '@/components/ui/button'
import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'
import { Input } from '@/components/ui/input'
</script>

<template>
  <Card>
    <CardHeader>
      <CardTitle>My Card</CardTitle>
    </CardHeader>
    <CardContent>
      <Input placeholder="Enter your name" />
      <Button>Submit</Button>
    </CardContent>
  </Card>
</template>

Button Variants

The Button component supports multiple variants:

<Button>Default</Button>
<Button variant="secondary">Secondary</Button>
<Button variant="outline">Outline</Button>
<Button variant="ghost">Ghost</Button>
<Button variant="destructive">Destructive</Button>
<Button variant="link">Link</Button>

Button Sizes

<Button size="sm">Small</Button>
<Button size="default">Default</Button>
<Button size="lg">Large</Button>
<Button size="icon">
  <IconComponent />
</Button>

Adding New Components

To add more shadcn/vue components:

Visit shadcn/vue

Go to shadcn-vue.com and find the component you need.

Copy the Component

Use the CLI or manually copy the component code into your components/ui/ folder.

Import and Use

Import the component in your Vue files and start using it.

You can use the shadcn-vue CLI to add components: npx shadcn-vue@latest add [component]

Resources