پیشرفت
یک نوار باریک که با اتمام هر وظیفه پر میشود — بارگذاریها، نصبها، فرایند چندمرحلهای ورود — با جلوههای نئوبروتالیستی مرزها و سایهها.
"use client"
import * as React from "react"نوار پیشرفت گزارش میدهد چه مقدار از یک کار انجام شده — مسیری که از 0 تا 100 پر میشود. بر پایهٔ Base UI Progress ساخته شده و با دستور پخت نئوبروتالیستی استایل شده: حاشیهٔ ضخیم، سایهٔ سخت، پرشدگی solid.
برای این موارد از آن استفاده کنید:
- آپلود و دانلود فایل — پیشرفت determinate مبتنی بر بایت با درصد نمایان.
- جریان چندمرحلهای — آنبوردینگ، checkout و wizard؛ نوار نشان میدهد کاربر کجای مسیر است.
- کارهای طولانی — import، export و install که completion را از سرور گزارش میدهند.
نصب#
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 را مطابق با پیکربندی پروژهٔ خود بهروزرسانی کنید.
استفاده#
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) را به نوار بدونبرچسب ترجیح دهید تا صفحهخوان بگوید چه چیزی در حال بارگذاری است نه فقط درصد. وقتی completion نامعلوم است value={null} بدهید؛ نوار به وضعیت indeterminate میرود.
مرجع API#
مستندات Base UI Progress را ببینید.