Прогрес
Тонка смуга, яка заповнюється по мірі виконання завдання — завантаження, встановлення, багатоетапна реєстрація — з використанням необруталістичного стилю оформлення з рамками та тінями.
"use client"
import * as React from "react"Індикатор progress показує, наскільки виконано задачу — трек, що заповнюється від 0 до 100. Побудований на компоненті Base UI Progress і оформлений за рецептом необруталізму: товста рамка, різка тінь, суцільна заливка.
Коли це стане в пригоді:
- Завантаження та вивантаження файлів — визначений прогрес у байтах із видимим відсотком.
- Багатокрокові сценарії — онбординг, checkout і майстри; смужка показує, як далеко користувач.
- Довгі завдання — імпорти, експорти та встановлення зі звітом про завершення із сервера.
Встановлення#
pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/progress.jsonnpx shadcn@latest add https://neobrutalism.com/r/base/progress.jsonyarn dlx shadcn@latest add https://neobrutalism.com/r/base/progress.jsonbunx --bun shadcn@latest add https://neobrutalism.com/r/base/progress.json
Встановіть такі залежності:
pnpm add @base-ui/reactnpm install @base-ui/reactyarn add @base-ui/reactbun add @base-ui/react
Скопіюйте та вставте наведений нижче код у свій проєкт.
"use client"
import * as React from "react"
import { Progress as ProgressPrimitive } from "radix-ui"
import { cn } from "@/lib/utils"
function Progress({
className,
value,
...props
}: React.ComponentProps<typeof ProgressPrimitive.Root>) {
return (
<ProgressPrimitive.Root
data-slot="progress"
className={cn(
"relative flex h-4 w-full items-center overflow-hidden rounded border-2 bg-background",
className
)}
{...props}
>
<ProgressPrimitive.Indicator
data-slot="progress-indicator"
className="size-full flex-1 bg-primary transition-all"
style={{ transform: `translateX(-${100 - (value || 0)}%)` }}
/>
</ProgressPrimitive.Root>
)
}
export { Progress }
Оновіть шляхи імпорту відповідно до налаштувань вашого проєкту.
Використання#
import { Progress } from "@/components/ui/progress"<Progress value={33} />Композиція#
З міткою та значенням#
Використовуйте ProgressLabel та ProgressValue, щоб додати відображення мітки та значення.
import {
Progress,
ProgressLabel,
ProgressValue,
} from "@/components/ui/progress"
;<Progress value={56} className="w-full max-w-sm">
<ProgressLabel>Upload progress</ProgressLabel>
<ProgressValue />
</Progress>Progress
├── ProgressLabel
├── ProgressValue
└── ProgressTrack
└── ProgressIndicatorПриклади#
Мітка#
Використовуйте ProgressLabel та ProgressValue, щоб додати відображення мітки та значення.
import {
Progress,
ProgressLabel,Керований#
Смуга прогресу, якою можна керувати за допомогою slider.
"use client"
import * as React from "react"RTL#
Щоб увімкнути підтримку RTL у Neobrutalism, перегляньте посібник з налаштування RTL.
"use client"
import * as React from "react"Доступність#
Progress — індикатор стану, а не контроль: він ніколи не отримує фокус і не має клавіатурних взаємодій. Base UI рендерить role="progressbar" з aria-valuemin, aria-valuemax і aria-valuenow, а ProgressLabel автоматично пов’язується через aria-labelledby — віддавайте перевагу йому (або aria-label) над непідписаною смужкою, щоб програми зчитування з екрана казали, що саме завантажується, а не лише відсоток. Передайте value={null}, коли завершення невідоме; смужка перейде в indeterminate-стан.
Довідник API#
Перегляньте документацію Base UI Progress.