ข้ามไปเนื้อหา
WhereUI

ค้นหาในเอกสาร

ค้นหาชื่อ component หรือหน้าเอกสาร

Progress

จาก shadcn

แถบแสดงความคืบหน้าของงาน เช่น การอัปโหลดเอกสารหรือขั้นตอนการอนุมัติ รองรับทั้งแบบระบุค่าและแบบไม่ระบุค่า (indeterminate)

อัปโหลดเอกสารประกอบการลา
x
ขั้นตอนการอนุมัติของหัวหน้าแผนก
x

ติดตั้ง

Terminal
pnpm dlx shadcn@latest add @whereui/progress

ต้องผูก registry และติดตั้ง @whereui/theme นำหน้าเสมอเมื่อติดตั้งครั้งแรก

การใช้งาน

import { Progress, ProgressLabel, ProgressValue } from "@/components/ui/progress"<Progress value={65}>  <ProgressLabel>อัปโหลดเอกสาร</ProgressLabel>  <ProgressValue /></Progress>

ตัวอย่างเพิ่มเติม

แบบไม่ระบุค่า (indeterminate)
กำลังประมวลผลคิวคำขอลา
x

ข้อควรรู้

  • ส่ง value เป็น null เพื่อใช้โหมด indeterminate สำหรับงานที่ยังไม่รู้ความคืบหน้า
  • ProgressValue แสดงเปอร์เซ็นต์อัตโนมัติ (0–100) และมี aria ให้ screen reader อ่านค่าได้

ซอร์สโค้ด

components/ui/progress.tsx
"use client"import { Progress as ProgressPrimitive } from "@base-ui/react/progress"import { cn } from "cn"function Progress({  className,  children,  value,  ...props}: ProgressPrimitive.Root.Props) {  return (    <ProgressPrimitive.Root      value={value}      data-slot="progress"      className={cn("flex flex-wrap gap-3", className)}      {...props}    >      {children}      <ProgressTrack>        <ProgressIndicator />      </ProgressTrack>    </ProgressPrimitive.Root>  )}function ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {  return (    <ProgressPrimitive.Track      className={cn(        "relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted",        className      )}      data-slot="progress-track"      {...props}    />  )}function ProgressIndicator({  className,  ...props}: ProgressPrimitive.Indicator.Props) {  return (    <ProgressPrimitive.Indicator      data-slot="progress-indicator"      className={cn("h-full bg-primary transition-all", className)}      {...props}    />  )}function ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {  return (    <ProgressPrimitive.Label      className={cn("text-sm font-medium", className)}      data-slot="progress-label"      {...props}    />  )}function ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {  return (    <ProgressPrimitive.Value      className={cn(        "ml-auto text-sm text-muted-foreground tabular-nums",        className      )}      data-slot="progress-value"      {...props}    />  )}export {  Progress,  ProgressTrack,  ProgressIndicator,  ProgressLabel,  ProgressValue,}