# fulldev/ui fulldev/ui is a shadcn-compatible component library built specifically for Astro, designed for content-driven websites. It provides over 100 pure vanilla Astro components and pre-built page blocks without framework dependencies, styled with Tailwind CSS v4 and featuring full TypeScript support. The library leverages the shadcn CLI and registry system for seamless component installation. The library focuses on content-first components such as sections, tiles, and items that are optimized for building marketing pages, landing pages, and content-heavy websites. Components are distributed through a namespaced registry (`@fulldev`) and can be installed individually or in bulk using the shadcn CLI, making it easy to incrementally adopt components as needed. ## Installation Initialize shadcn in your Astro project and add the fulldev/ui registry to install components via the CLI. ```bash # Create a new Astro project (if needed) npx create-astro@latest my-project --template with-tailwindcss --install --git cd my-project # Initialize shadcn npx shadcn@latest init # Add fulldev/ui registry to components.json # Edit components.json: { "registries": { "@fulldev": "https://ui.full.dev/r/{name}.json" } } # Configure TypeScript paths in tsconfig.json: { "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["./src/*"] } } } # Install individual components npx shadcn@latest add @fulldev/button npx shadcn@latest add @fulldev/button @fulldev/item @fulldev/list # Or install all components and blocks at once npx shadcn@latest add @fulldev/components npx shadcn@latest add @fulldev/blocks ``` ## Button Component Displays a button or link element with multiple variants including default, outline, secondary, ghost, destructive, and link styles. Supports icons, loading states, and can render as an anchor tag using the `href` attribute. ```astro --- import { Button } from "@/components/ui/button" import { Icon } from "@/components/ui/icon" import { Spinner } from "@/components/ui/spinner" --- ``` ## Section Component A layout component for organizing page content into distinct sections with support for content, actions, prose, media, and grid layouts. Perfect for building hero sections, feature sections, and content blocks. ```astro --- import image from "@/assets/image-placeholder.webp" import { Button } from "@/components/ui/button" import { Image } from "@/components/ui/image" import { Section, SectionActions, SectionContent, SectionProse, } from "@/components/ui/section" ---

Section heading

This is a section component for organizing page content.

Section Image

Floating Section

This section has a floating card-like appearance.

``` ## Tile Component A card-like container component for displaying content tiles with support for media, split layouts, and interactive hover states. Ideal for product cards, feature showcases, and navigation items. ```astro --- import image from "@/assets/image-placeholder.webp" import { Button } from "@/components/ui/button" import { Icon } from "@/components/ui/icon" import { Image } from "@/components/ui/image" import { Tile, TileActions, TileContent, TileDescription, TileMedia, TileSplit, TileSpread, TileTitle, } from "@/components/ui/tile" --- Feature Title Description for this feature Product Product Name Beautiful product with amazing features Sample Side-by-Side Layout Image on the left, content on the right Featured Premium Feature Get access to exclusive features ``` ## Item Component A flexible container for displaying content items with media, titles, and descriptions. Available in default, outline, and muted variants for different visual contexts. ```astro --- import { Icon } from "@/components/ui/icon" import { Item, ItemDescription, ItemMedia, ItemTitle, } from "@/components/ui/item" ---
Item Title Item description goes here
Outline Variant This item has an outline variant
Muted Variant This item has a muted variant
``` ## Accordion Component A vertically stacked set of interactive headings that each reveal a section of content. Uses native HTML `details` and `summary` elements for accessibility. ```astro --- import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion" --- Product Information

Our flagship product combines cutting-edge technology with sleek design. Built with premium materials, it offers unparalleled performance.

Key features include advanced processing capabilities and an intuitive user interface designed for both beginners and experts.

Shipping Details

We offer worldwide shipping through trusted courier partners. Standard delivery takes 3-5 business days, while express shipping ensures delivery within 1-2 business days.

Return Policy

We stand behind our products with a comprehensive 30-day return policy. Our hassle-free return process includes free return shipping.

``` ## Tabs Component A set of layered sections of content that display one panel at a time. Provides a clean way to organize related content into switchable views. ```astro --- import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" --- Account Password

Account

Make changes to your account here. Click save when you're done.

Password

Change your password here. You will be logged out after changing.

``` ## Icon Component A component for displaying scalable vector icons from lucide-icons and simple-icons libraries. Utilizes Astro's rendering for optimal performance. ```astro --- import { Icon } from "@/components/ui/icon" --- ``` ## Image Component A minimal wrapper around the Astro Image component with lazy loading support and optimized image handling. ```astro --- import image from "@/assets/image-placeholder.webp" import { Image } from "@/components/ui/image" --- Image description ``` ## Avatar Component An image element with a fallback for representing users. Supports custom shapes and can be stacked for group displays. ```astro --- import avatar from "@/assets/avatar.webp" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" --- JD JD
U1 U2 U3
``` ## Badge Component Displays a badge with support for multiple variants and can render as a link element using the `href` attribute. ```astro --- import { Badge } from "@/components/ui/badge" import { Icon } from "@/components/ui/icon" --- Default Secondary Destructive Outline Verified 8 Category ``` ## Alert Component Displays a callout for user attention with optional icon, title, and description. Available in default and destructive variants. ```astro --- import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert" import { Icon } from "@/components/ui/icon" --- Success! Your changes have been saved This is an alert with icon, title and description. Unable to process your payment.

Please verify your billing information and try again.

  • Check your card details
  • Ensure sufficient funds
  • Verify billing address
``` ## Input Component Displays a form input field with support for various input types and disabled state. ```astro --- import { Input } from "@/components/ui/input" ---
``` ## Checkbox Component A control that allows users to toggle between checked and not checked states. Works with Label component for accessible forms. ```astro --- import { Checkbox } from "@/components/ui/checkbox" import { Label } from "@/components/ui/label" ---

By clicking this checkbox, you agree to the terms and conditions.

``` ## AutoForm Component A form component that automatically generates form fields based on a configuration array. Simplifies form creation for common use cases. ```astro --- import { AutoForm } from "@/components/ui/auto-form" --- ``` ## Table Component A data table component that displays information in rows and columns with support for headers, body, footer, and captions. ```astro --- import { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, } from "@/components/ui/table" --- A list of your recent invoices. Invoice Status Method Amount INV-001 Paid Credit Card $250.00 INV-002 Pending PayPal $150.00 Total $400.00
``` ## Navigation Menu Component A collection of links for navigating websites with dropdown menus and content panels. ```astro --- import { NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, } from "@/components/ui/navigation-menu" --- Home
  • Introduction
    Get started with our library.
  • Documentation
    Learn how to use components.
Components
  • All Components
``` ## Sheet Component A sliding panel component that appears from the edge of the screen. Useful for mobile navigation menus and side panels. ```astro --- import { Button } from "@/components/ui/button" import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, } from "@/components/ui/sheet" --- Open Sheet Sheet Title This is a description of the sheet. You can add any content here. ``` ## Header Component A layout component for the top section of a page with logo, navigation, and action buttons. ```astro --- import { Button } from "@/components/ui/button" import { Header, HeaderActions, HeaderContent } from "@/components/ui/header" import { Logo, LogoText } from "@/components/ui/logo" ---
fulldev/ui
Brand
``` ## Logo Component A component for displaying brand logos with optional image and text elements. ```astro --- import logo from "@/assets/logo.svg" import { Logo, LogoImage, LogoText } from "@/components/ui/logo" --- fulldev/ui ``` ## Rating Component A star rating component for displaying ratings visually with support for fractional values and custom sizes. ```astro --- import { Rating } from "@/components/ui/rating" --- ``` ## Price Component A flexible price display component for showing pricing information with currency and unit support. ```astro --- import { Price, PriceUnit, PriceValue } from "@/components/ui/price" --- month month ``` ## List Component A container for displaying a series of items in a list format with icon support. ```astro --- import { Icon } from "@/components/ui/icon" import { List, ListItem } from "@/components/ui/list" --- First item with feature Second item included Third item benefit ``` ## Marquee Component A continuous scrolling animation component for displaying content in a loop with direction and pause-on-hover controls. ```astro --- import { Marquee, MarqueeContent } from "@/components/ui/marquee" const items = ["React", "Vue", "Angular", "Svelte", "Astro", "Next.js"] --- {items.map((item) => ( {item} ))} {items.map((item) => ( {item} ))} {items.map((item) => ( {item} ))} ``` ## Native Carousel Component A carousel component using native HTML scroll behavior for seamless slide navigation without JavaScript dependencies. ```astro --- import { NativeCarousel, NativeCarouselContent, NativeCarouselItem, NativeCarouselNext, NativeCarouselPrevious, } from "@/components/ui/native-carousel" ---
Slide 1
Slide 2
Slide 3
``` ## Theme Toggle Component A button component that toggles between light and dark theme modes. Requires ThemeProvider in the document head to prevent flash of unstyled content. ```astro --- // In your layout file import { ThemeProvider, ThemeToggle } from "@/components/ui/theme-toggle" --- ``` ## Collapsible Component An interactive component which expands and collapses a panel of content. ```astro --- import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "@/components/ui/collapsible" --- Can I use this in my project?

Yes. Free to use for personal and commercial projects. No attribution required.

``` ## Summary fulldev/ui is ideal for building content-driven websites such as marketing pages, landing pages, SaaS websites, portfolios, and documentation sites. The component library excels at rapid page construction using pre-built blocks like hero sections, feature grids, pricing tables, testimonial carousels, and contact forms. The shadcn CLI integration enables teams to selectively install only needed components while maintaining full customization control through Tailwind CSS. Integration patterns typically involve installing base UI components (button, icon, image) first, then progressively adding layout components (section, tile, header, footer) and specialized blocks. The content-first approach means components are designed to accept dynamic content from CMS systems, markdown files, or Astro's content collections. For theming, fulldev/ui follows shadcn/ui conventions using CSS variables, making it easy to customize colors and apply consistent design tokens across all components.