Skeleton
BetaBeta — the props contract is close to final, but small breaking changes can still land.Loading placeholder with a token-driven shimmer.
Composition
The preferred shape for composing the installed primitive from its exported parts.
Root
Single-slot surface with no nested parts.
Skeleton
First install and activate one skin. Core deliberately contains no visual token defaults.
The Control UI source installs this primitive from src/registry/sources/control-ui/ui/skeleton.tsx. Install it on its own with the command above, or inspect the source below.
npx shadcn@latest add https://control-ui.dev/r/skeleton.jsonKnobs
Typed custom properties the recipe paints with. Set one on the root — style, a utility class, or a skin — and every slot inherits it.
--cui-skeleton-* · 2 knobsHow the cascade resolves--cui-skeleton-radius<length-percentage>var(--radius-control)--cui-skeleton-background<color>var(--muted)Installed dependencies
Support files installed with this primitive — shared ones arrive once with your first Control UI component. Public dependencies stay linked to their own pages.
src/registry/sources/control-ui/effects.cssSupportRaw code
This primitive's source and the support files it installs with
import type { ComponentProps, CSSProperties } from "react";import type { SkeletonKnobStyle } from "@/components/control-ui/knob-contracts/skeleton-knobs";export function Skeleton({ className, ...props }: Omit<ComponentProps<"div">, "style"> & { style?: CSSProperties & SkeletonKnobStyle }) { return <div data-control-ui="skeleton" data-control-family="skeleton" data-slot="root" className={className} {...props} />;}