Glass Progress
Barre de progression en verre avec piste translucide et remplissage colore par token. Installez Glass Progress depuis le registre VLLNT UI avec la CLI shadcn.
Barre de progression en verre avec piste translucide et remplissage colore par token. Fait partie de la famille data-display dans VLLNT UI, il est publie comme entree de registre lisible par machine — copiez la source directement dans votre application avec la CLI shadcn et possedez-la, sans dependance d'execution a une bibliotheque de composants.
Apercu
Basculez entre clair et sombre pour inspecter l'apercu Storybook integre.
Installation
Ajoutez Glass Progress a votre projet avec la CLI shadcn. La source arrive dans votre code, prete a etre adaptee :
pnpm dlx shadcn@latest add https://ui.vllnt.ai/r/glass-progress.jsonSource
import * as React from "react";
import { cn } from "../../lib/utils";
/** Props for {@link GlassProgress}. */
export type GlassProgressProps = React.ComponentPropsWithoutRef<"div"> & {
/** Completion percentage between `0` and `100`. */
value: number;
};
function clampPercent(value: number): number {
return Math.min(Math.max(value, 0), 100);
}
/**
* Glass-styled progress bar with a translucent track and a solid fill.
*
* @example
* ```tsx
* <GlassProgress value={60} />
* ```
*/
export const GlassProgress = ({
className,
ref,
value,
...props
}: GlassProgressProps & { ref?: React.Ref<HTMLDivElement> }) => {
const clamped = clampPercent(value);
return (
<div
aria-valuemax={100}
aria-valuemin={0}
aria-valuenow={clamped}
className={cn(
"relative h-2 w-full overflow-hidden rounded-full border border-border/50 bg-muted/40 backdrop-blur",
className,
)}
ref={ref}
role="progressbar"
{...props}
>
<div
className="h-full rounded-full bg-primary transition-all"
style={{ width: `${clamped}%` }}
/>
</div>
);
};
GlassProgress.displayName = "GlassProgress";
Stories
Explorez chaque variante et etat dans le Storybook interactif :
Apercu
Basculez entre clair et sombre pour inspecter l'apercu Storybook integre.