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} />
    </>
  )
}