nili/ui
همه‌ی کامپوننت‌ها

FileUpload

نمای کلی
۲۲ اکسپورت۹ محور واریانت۴۲ پراپ۳ فایل
import { FileFormatIcon, FileUploadArea, FileUploadCard, ImageUpload, ImageUploadShape } from '@nili/ui';

این همان صفحه‌ی نمای کلیِ خود کتابخانه است که زنده رندر می‌شود. زبان یا تم را از هدر عوض کنید، همراهش می‌آید.

ناحیهٔ بارگذاری

هدفِ رهاکردن فایل. onFiles یک آرایهٔ File می‌گیرد، چه فایل رها شده باشد چه از پنجرهٔ انتخاب آمده باشد، پس فقط یک مسیر کد برای مدیریت هست. زیرش یک input واقعی است، پس کاربر کیبورد و صفحه‌خوان هم انتخابگر را می‌گیرد.

import { FileUploadArea } from "@nili/ui"

export function Example() {
  return (
    <FileUploadArea
      multiple
      accept="image/*,application/pdf"
      label="Upload files"
      title="Choose a file or drag it here"
      description="PNG, JPG or PDF, up to 10 MB."
      onFiles={(files) => upload(files)}
    />
  )
}

حالت‌های ناحیهٔ بارگذاری

invalid برای فایلی که رد شده — نوع اشتباه، حجم زیاد — و disabled وقتی سهمیه تمام شده یا فرم در حال ارسال است.

پیش‌فرض
نامعتبر
غیرفعال
import { FileUploadArea } from "@nili/ui"

export function Example() {
  return (
    <>
      <FileUploadArea label="Upload" onFiles={onFiles} />
      <FileUploadArea label="Upload" invalid onFiles={onFiles} />
      <FileUploadArea label="Upload" disabled onFiles={onFiles} />
    </>
  )
}

کارت فایل

یک فایل بارگذاری‌شده: آیکون قالب، نام، حجم و وضعیتش. progress نوار را حرکت می‌دهد؛ onRetry همراه خطا ظاهر می‌شود و onRemove همیشه. هر دو به برچسب نیاز دارند، چون دکمه‌ها آیکون‌اند.

annual-report.pdf2.4 MB
brand-photo.png840 KB
archive.zip18 MBفایل بزرگ‌تر از ۱۰ مگابایت است.
import { FileUploadCard } from "@nili/ui"

export function Example() {
  return (
    <>
      <FileUploadCard
        fileName="annual-report.pdf"
        fileSize="2.4 MB"
        status="progress"
        progress={62}
        onRemove={cancel}
        removeLabel="Cancel upload"
      />

      <FileUploadCard
        fileName="photo.png"
        fileSize="840 KB"
        status="success"
        onRemove={remove}
        removeLabel="Remove file"
      />

      <FileUploadCard
        fileName="archive.zip"
        fileSize="18 MB"
        status="error"
        errorMessage="File is larger than 10 MB."
        onRetry={retry}
        retryLabel="Try again"
        onRemove={remove}
        removeLabel="Remove file"
      />
    </>
  )
}

آیکون قالب فایل

آیکون از نام فایل درمی‌آید، پس فهرستی از بارگذاری‌های متنوع خودش رنگ می‌گیرد. وقتی پسوند آن چیزی نیست که می‌خواهید نشان دهید، با color بازنویسی‌اش کنید.

md
pdf
xlsx
pptx
docx
png
mp4
zip
json
xs
pdf
xlsx
pptx
docx
png
mp4
zip
json
import { FileFormatIcon } from "@nili/ui"

export function Example() {
  return (
    <>
      <FileFormatIcon fileName="report.pdf" />
      <FileFormatIcon fileName="sheet.xlsx" />
      <FileFormatIcon fileName="photo.png" size="xs" />
      <FileFormatIcon fileName="anything.bin" color="purple" />
    </>
  )
}

بارگذاری تصویر

گونهٔ پیش‌نمایش‌محور، برای آواتار، نشان شرکت یا کاور. shape قاب و برشی را که پیش‌نمایش تلویحاً می‌رساند تعیین می‌کند؛ alignment کنترل‌ها را زیر تصویر یا کنارش می‌گذارد.

شکل‌ها
avatar
company
square
4:3
16:9
افقی، همراه با راهنما و کنش‌ها
JPG یا PNG، دست‌کم ۲۵۶×۲۵۶.
import { ImageUpload, Button } from "@nili/ui"

export function Example() {
  return (
    <>
      <ImageUpload
        shape="avatar"
        label="Profile photo"
        hint="JPG or PNG, at least 256×256."
        onFiles={(files) => upload(files[0])}
        actions={<Button size="xs" appearance="stroke">Choose file</Button>}
      />

      <ImageUpload shape="16:9" alignment="horizontal" label="Cover" onFiles={onFiles} />
    </>
  )
}