Getting Started
Get up and running with Sistine in minutes
1. Initialize your project
Make sure you have a Next.js project set up with Tailwind CSS configured.
2. Add the Sistine registry
Add the @sistine namespace to your project's components.json once:
{
"registries": {
"@sistine": "https://raw.githubusercontent.com/Weekendsuperhero-io/sistine/main/public/r/{name}.json"
}
}3. Install components
Use the shadcn CLI to add components from the Sistine registry with your preferred package manager:
bunx shadcn@latest add @sistine/button4. Start building
Import and use components in your application. All components default to adaptive glass.
What is MCP?
MCP allows AI assistants to access and use Sistine components directly. This enables seamless integration with tools like Claude, ChatGPT, and other MCP-compatible assistants.
Setup Instructions
Add the following configuration to your MCP settings file (usually ~/.config/mcp.json or similar):
{
"mcpServers": {
"sistine": {
"command": "npx",
"args": [
"-y",
"@shadcn/mcp-server",
"--registry",
"https://raw.githubusercontent.com/Weekendsuperhero-io/sistine/main/public/r/registry.json"
]
}
}
}Usage
Once configured, you can ask your AI assistant to add Sistine components to your project, and it will automatically use the correct registry URL and component paths.
Card content goes here
Global CSS Variables
All Sistine components automatically use CSS variables for glass effects. You can override these in your global CSS file to change the appearance of all components at once. Changes take effect immediately.
Shared knobs (both modes)
/* In your globals.css, after the Sistine theme import — defaults shown */
:root {
/* Tint: hue + chroma (the "how colorful" master; 0 = neutral).
Or set a preset: <html data-glass-tint="sapphire">. */
--glass-tint-h: 250;
--glass-tint-c: 0.018;
/* Blur ladder (glass material; frosted/crystal pin their own) */
--blur: 2px; /* base glass */
--blur-sm: 1px; /* small controls */
--blur-lg: 8px; /* overlays */
--blur-xl: 12px; /* heaviest glass tier */
--blur-frosted: 25px; /* the frosted material */
/* Veil floor solidity — menus / tooltips / toasts (0–1) */
--glass-solid-a: 0.65;
}Mode knobs (light values on :root, dark twins on .dark)
/* Single-number dials the engine composes per mode — defaults shown */
:root {
--glass-sheet-a: 0.11; /* glass sheet alpha (how much body) */
--glass-border-a: 0.16; /* edge alpha */
--glass-opaque-l: 90; /* opaque floor lightness */
}
.dark {
--glass-sheet-a: 0.05;
--glass-border-a: 0.15;
--glass-opaque-l: 32;
}Example: Custom Transparency & Blur
Heavier, milkier glass (or sheerer, barely-there glass) in a few dials:
/* Heavier, milkier glass */
:root {
--blur: 6px; /* base glass blur (default 2px) */
--glass-sheet-a: 0.18; /* more body (default 0.11 / 0.05 dark) */
}
/* Sheerer, barely-there glass */
:root {
--blur: 1px;
--glass-sheet-a: 0.06;
}How It Works
Every glass surface is composed from these tokens:
- The tint vars (
--glass-tint-h/-c) compose the surface sheet (--glass-bg, a gradient), the border color (--glass-border), and the accents: one hue + chroma recolors everything - The material's
backdrop-filterblurs at its ladder value (--blurfor base glass), raised to thediffusefloor when a surface opts in - Shadows come from the
--glass-shadowtwins (mode-aware)
Because components only reference tokens, changing a variable restyles everything at once, globally on :root, or scoped on any wrapper.
Per-Component Customization
To customize an individual component, use the glassVars helper from @/lib/material. It returns a style object of CSS custom properties (tintH → --glass-tint-h, blur → --srf-blur, opacity → --glass-opacity, …), so the overrides route through the token system and can't fight a material, page style, or the theme:
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"
import { glassVars } from "@/lib/material"
export function CustomGlassCard() {
return (
<Card style={glassVars({ tintH: 292, blur: 40, opacity: 0.3 })}>
<CardHeader>
<CardTitle>Custom Glass Card</CardTitle>
</CardHeader>
<CardContent>
This card has custom glass properties that override the global defaults.
</CardContent>
</Card>
)
}Calibrated defaults
Tuned for restraint: enough blur and depth to read as glass, never so much that it fogs what is behind it:
- Blur ladder: base glass 2px (sm 1px · lg 8px · xl 12px), frosted 25px, crystal 2px, opaque none
- Sheet alpha: 0.11 light / 0.05 dark (
--glass-sheet-a) - Subtle borders and shadows for depth
- Only the standard
backdrop-filteris authored (no-webkit-twins) and nomix-blend-modeanywhere: the veil floor is free; blur cost scales with area × radius × motion
You can adjust these values to match your design needs while maintaining the glass aesthetic.