Components Overview
Browse components for Astro, React, Vue, and Svelte. Each page shows how to install and use a component, with examples you can copy into your project.
Image is the one exception. It integrates directly with Astro’s image pipeline, so React, Vue, and Svelte projects should use an image component for their framework or a standard
<img>element.
Browse All Components
Every component page includes installation commands, copy-paste examples, and its public API.
Form & Input
Collect and validate user input.
Navigation
Move users through pages, sections, and app states.
Overlay & Disclosure
Reveal additional information or contextual actions.
Feedback & Status
Communicate progress, outcomes, and loading states.
Layout & Structure
Build consistent spatial structure and content organization.
Content & Media
Present media, rich text, and supporting UI metadata.
All component docs (A-Z)
Accordion / Alert / Alert Dialog / Aspect Ratio / Avatar / Badge / Breadcrumb / Button / Button Group / Card / Carousel / Checkbox / Checkbox Group / Collapsible / Color Picker / Combobox / Context Menu / Dialog / Dropdown / Dropzone / Field / Form / Hover Card / Image / Input / Input Group / Input Otp / Item / Kbd / Label / Native Select / Navigation Menu / Pagination / Popover / Progress / Prose / Radio Group / Scroll Area / Select / Separator / Sheet / Sidebar / Skeleton / Slider / Spinner / Switch / Table / Tabs / Textarea / Theme Toggle / Toast / Toggle / Toggle Group / Tooltip / Video
Installation
Initialize Starwind in the project root, then add one component or the complete bundled styled registry. The CLI detects supported Astro, React, Vue, and Svelte projects. See the installation guide and CLI reference for configuration and update workflows.
npx starwind@latest init --defaultsnpx starwind@latest add buttonnpx starwind@latest add --allImport Pattern
The CLI copies styled component source into src/components/starwind by default. Import each public component from its local folder. SvelteKit uses src/lib/starwind, with imports from $lib/starwind/component-name:
import { ComponentName } from "@/components/starwind/component-name";Class Overrides
Installed components accept class overrides through class in Astro, Vue, and Svelte, and className in React. Tailwind Variants and Tailwind Merge combine the component defaults with project-specific classes.
---import { Button } from "@/components/starwind/button";---
<Button>Default button</Button><Button class="rounded-full bg-purple-700 text-white hover:bg-purple-800">Custom button</Button>import { Button } from "@/components/starwind/button";
export function Example() { return ( <> <Button>Default button</Button> <Button className="rounded-full bg-purple-700 text-white hover:bg-purple-800"> Custom button </Button> </> );}<script setup lang="ts">import { Button } from "@/components/starwind/button";</script>
<template> <Button>Default button</Button> <Button class="rounded-full bg-purple-700 text-white hover:bg-purple-800">Custom button</Button></template><script lang="ts"> import { Button } from "@/components/starwind/button";</script>
<Button>Default button</Button><Button class="rounded-full bg-purple-700 text-white hover:bg-purple-800"> Custom button</Button>