Guide

Getting Started

From npm create to an oversubscribed-looking demo in five minutes.

This guide spins up a fresh SvelteKit project, adds a couple of performative-ui-svelte components, and wires up a tiny demo page. Components are installed as owned source via the shadcn-svelte registry, so your app keeps the Tailwind build, theme tokens, and the component files themselves.

Requirements: Node 18+, Svelte 5, and Tailwind CSS v4. Pick your package manager in any command block below — they all stay in sync.

1 · Create a SvelteKit project

Use the official sv CLI. When prompted, choose the SvelteKit minimal template, TypeScript, and add the Tailwind CSS plugin — that wires up Tailwind v4 for you.

# Scaffold a fresh SvelteKit app (Svelte 5)
npx sv create my-app

# Pick: SvelteKit minimal · TypeScript · Tailwind CSS
cd my-app
npm install

2 · Initialize shadcn-svelte

Create a components.json so the registry knows where to drop files. When prompted for your global stylesheet, point it at src/app.css (the Tailwind entry imported from src/routes/+layout.svelte) — the next step overwrites that file with the performative theme tokens and the shared animation keyframes.

# Create components.json (point the global CSS prompt at src/app.css)
npx shadcn-svelte@latest init

3 · Add a few components

Pull just what the demo needs. Each command drops an owned-code component into src/lib/components/ and brings its theme + utils along on first run. Swap the slug for any entry in the registry.

# Pull owned-code components from the registry
npx shadcn-svelte@latest add https://benjamin-brady.github.io/performative-ui-svelte/registry/button.json
npx shadcn-svelte@latest add https://benjamin-brady.github.io/performative-ui-svelte/registry/gradient-text.json
npx shadcn-svelte@latest add https://benjamin-brady.github.io/performative-ui-svelte/registry/sparkle.json

4 · Build a demo page

Keep it deliberately small — three components is plenty to look like you raised a Series B. Drop this into src/routes/+page.svelte:

<script lang="ts">
	import Button from "$lib/components/Button.svelte";
	import GradientText from "$lib/components/GradientText.svelte";
	import Sparkle from "$lib/components/Sparkle.svelte";
</script>

<main style="display:grid;place-items:center;min-height:100vh;gap:1.5rem;text-align:center">
	<h1 style="font-size:2.5rem;font-weight:700">
		Ship <GradientText>agentic workflows</GradientText> <Sparkle />
	</h1>

	<Button variant="glow" sparkle>Generate</Button>
</main>

5 · Run it

Start the dev server and open the demo:

npm run dev -- --open

That's the whole loop. Browse the sidebar for the other components and copy them in the same way.