Thinkingv1.0.1

بلوکِ باز/بستهٔ استدلالِ یک مدل ریزنینگ، شبیه Claude یا o1. تا وقتی مدل کار می‌کند تیترش زمانِ سپری‌شده را می‌شمارد؛ وقتی تمام شد، تیتر می‌شود «فکر کرد برای N ثانیه» و پیش‌فرض بسته می‌ماند، چون معمولاً فقط جواب نهایی مهم است.

ری‌اکت ۱۹ و Next.js با پیاده‌سازی دسترس‌پذیری داخلی دیگویو ۳ با Composition API — هنوز برای این کامپوننت پورت نشدهSvelte ۵ با runes — هنوز برای این کامپوننت پورت نشدهانگولار با signals و دایرکتیوهای standalone — هنوز برای این کامپوننت پورت نشده

این کامپوننت فعلاً برای ۱ فریم‌ورک از ۴ فریم‌ورک آماده است.

در حال جستجوی مستندات API پرداخت
بررسی نمونه‌کد اتصال به درگاه
جمع‌بندی و آماده‌سازی پاسخ

این نمونه هنوز برای Vue پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

این نمونه هنوز برای Svelte پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

این نمونه هنوز برای Angular پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

نصب

با CLI اختصاصی digdesign کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگی‌ها و فایل‌ها خودکار اضافه می‌شوند.

پکیج‌منیجر پیش‌فرض Node.jsنصب سریع با لینک سخت و دیسک مشترکYarn نسخهٔ ۲ به بالا (Berry)رانتایم و پکیج‌منیجر Bun
npx digdesign@latest add https://docs.digdesign.ir/r/thinking.json
pnpm dlx digdesign@latest add https://docs.digdesign.ir/r/thinking.json
yarn dlx digdesign@latest add https://docs.digdesign.ir/r/thinking.json
bunx --bun digdesign@latest add https://docs.digdesign.ir/r/thinking.json

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

استفاده

import {
  Thinking,
  ThinkingContent,
  ThinkingStep,
  ThinkingTrigger,
} from "@/components/ui/thinking"

<Thinking state={isStreaming ? "thinking" : "done"}>
  <ThinkingTrigger />
  <ThinkingContent>
    <ThinkingStep>گام اول استدلال…</ThinkingStep>
  </ThinkingContent>
</Thinking>

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

ترکیب اجزا

روی Collapsible ساخته شده؛ state روی خودِ Thinking فقط متن و آیکونِ ThinkingTrigger پیش‌فرض را عوض می‌کند («در حال فکر کردن…» با پالسِ آیکون، یا «فکر کرد برای N ثانیه»).

زمان را خودش می‌شمارد از لحظه‌ای که state="thinking" می‌نشیند؛ اگر مدت را از سرور دارید (مثلاً از متادیتای پاسخ)، duration بدهید تا به‌جای شمارشِ خودش همان عدد را نشان دهد.

ThinkingTrigger با children دلخواه هم قابل جایگزینی است؛ متن پیش‌فرض فقط وقتی می‌آید که چیزی پاس ندهید.

دسترس‌پذیری

  • تریگر یک دکمهٔ واقعی است با aria-expanded خودکار از Collapsible.
  • زمانِ سپری‌شده فقط بصری است؛ برای صفحه‌خوان چیزی جدا اعلام نمی‌شود، پس اگر تغییر عدد هر ثانیه باید شنیده شود، خودتان یک aria-live جدا اضافه کنید.

مرجع API

Thinking

ویژگینوعپیش‌فرضتوضیح
state"thinking" | "done""done"thinking یعنی هنوز کار می‌کند (زمان می‌شمارد و آیکون پالس می‌زند)؛ done یعنی تمام شده.
durationnumber—مدت‌زمان نهایی به ثانیه، وقتی خودتان بیرون اندازه گرفته‌اید؛ ندادنش یعنی خودش از لحظهٔ thinking شدن می‌شمارد.
defaultOpen / open / onOpenChangeboolean / boolean / (open: boolean) => voidfalseهمان API خودِ Collapsible.

ThinkingStep

ویژگینوعپیش‌فرضتوضیح
iconReactNode—آیکون کوچک قبل از متنِ گام؛ اختیاری.

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.