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

ActivityFeed

نمای کلی
۲۴ اکسپورت۳ محور واریانت۳۶ پراپ۴ فایل
import { ActivityFeed, ActivityFeedFile, ActivityFeedFooter, ActivityFeedHeader, ActivityFeedItemType, ActivityFeedKey } from '@nili/ui';

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

انواع آیتم

چهار نوع ردیف: متن ساده، ردیفی با کنش‌ها، ردیفی که فایل حمل می‌کند، و ردیفی که پیامی را نقل می‌کند. type تعیین می‌کند کدام اسلات کشیده شود، و اسلات‌ها به‌جای فرزند، پراپ‌اند تا ردیف نتواند غلط سرهم شود.

  • AL
    Ada Lovelace نظر گذاشت
    سیستم طراحی

    به نظر من خوب است — منتشرش می‌کنم.

  • GH
    Grace Hopper می‌خواهد به فضای کاری بپیوندد
  • KJ
    Katherine Johnson یک فایل به اشتراک گذاشت
  • RP
    Radia Perlman پاسخ داد
    می‌شود بازبینی را به پنجشنبه صبح ببریم؟
import { ActivityFeedItem, Avatar, Button } from "@nili/ui"

export function Example() {
  return (
    <>
      <ActivityFeedItem
        type="basic"
        avatar={<Avatar size="sm" name="Ada Lovelace" tone="blue" />}
        title="Ada Lovelace commented"
        timestamp="8 min ago"
        subject="Design system"
        description="This looks good to me — shipping it."
      />

      <ActivityFeedItem
        type="button"
        avatar={<Avatar size="sm" name="Grace Hopper" tone="purple" />}
        title="Grace Hopper wants to join"
        timestamp="1 h ago"
        actions={
          <>
            <Button size="xs">Accept</Button>
            <Button size="xs" appearance="stroke">Decline</Button>
          </>
        }
      />

      <ActivityFeedItem
        type="file"
        title="Katherine shared a file"
        file={{ name: "annual-report.pdf", size: "4mb", href: "#" }}
      />

      <ActivityFeedItem
        type="message"
        title="Radia replied"
        message="Can we move the review to Thursday?"
      />
    </>
  )
}

ردیف‌های خوانده‌نشده و انتخاب‌شدنی

onSelect عنوان را به دکمه‌ای واقعی تبدیل می‌کند که روی کل کارت کش می‌آید — پس ردیف کلیک‌پذیر است در حالی که کنش‌ها و منوی داخلش دکمه‌های جدا و فوکوس‌پذیر خودشان می‌مانند. ردیفی که onClick روی پوشش داشته باشد همهٔ آن‌ها را می‌بلعد.

  • AL
    جدید
    سیستم طراحی
  • BL
import { ActivityFeedItem } from "@nili/ui"

export function Example() {
  return (
    <>
      <ActivityFeedItem
        unread
        onSelect={() => open(notification)}
        title="Ada Lovelace mentioned you"
        timestamp="8 min ago"
        badge={<Badge size="small" color="blue" appearance="lighter">New</Badge>}
      />
      <ActivityFeedItem
        onSelect={() => open(notification)}
        title="Already read"
        timestamp="2 days ago"
      />
    </>
  )
}

کل پنل

سربرگ، ردیف تب‌ها و پابرگ همه اسلات‌های ActivityFeed هستند. تب‌ها به‌جای یک نمونهٔ Tabs دکمه‌های ساده‌اند — یک فهرست را در جای خودش فیلتر می‌کنند نه اینکه پنل عوض کنند، و tablist نامیدنش به صفحه‌خوان دروغ می‌گفت.

تب: all

اعلان‌ها

  • AL
    سیستم طراحی

    می‌توانید رنگ‌های جدید Badge را ببینید؟

  • GH
  • KJ
import {
  ActivityFeed, ActivityFeedItem, ActivityFeedTab,
  ActivityFeedTabSeparator, ActivityFeedFooter, LinkButton,
} from "@nili/ui"

export function Example() {
  const [tab, setTab] = useState("all")

  return (
    <ActivityFeed
      label="Notifications"
      title="Notifications"
      headerAction={<LinkButton color="primary" size="sm">Mark all as read</LinkButton>}
      tabs={
        <>
          <ActivityFeedTab selected={tab === "all"} onClick={() => setTab("all")}>
            All
          </ActivityFeedTab>
          <ActivityFeedTab
            selected={tab === "unread"}
            onClick={() => setTab("unread")}
            count={3}
          >
            Unread
          </ActivityFeedTab>
          <ActivityFeedTabSeparator />
          <ActivityFeedTab selected={tab === "mentions"} onClick={() => setTab("mentions")}>
            Mentions
          </ActivityFeedTab>
        </>
      }
      footer={
        <ActivityFeedFooter
          hint={<><ActivityFeedKey>↑</ActivityFeedKey><ActivityFeedKey>↓</ActivityFeedKey> to navigate</>}
          action={<LinkButton href="#" size="sm">See all activity</LinkButton>}
        />
      }
    >
      …
    </ActivityFeed>
  )
}