Ticket Cardv1.0.0

برای فهرستِ نتایجِ بلیت. بالای کارت مسیر است: ساعتِ حرکت و رسیدن با شهرها روی یک خطِ مسیر و مدتِ سفر، و زیرش لوگو و نامِ شرکت. ستونِ کناری جزئیات (تاریخ، شمارهٔ قطار یا پرواز، بارِ مجاز) و برچسبِ کلاس را دارد. پایینِ کارت صندلیِ باقی‌مانده، قیمتِ هر بزرگسال و دکمهٔ خرید است؛ صندلی که کم شد قرمز می‌شود. بلیتِ تمام‌شده با soldOut سرِ تیره و نشانِ «تکمیلِ ظرفیت» می‌گیرد.

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

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

۴ ستاره اتوبوسی صبا، تهران ساعتِ ۰۹:۲۰ به مشهد ساعتِ ۲۱:۴۵

تهران
مشهد
مدتِ سفر ۱۲ ساعت و ۲۵ دقیقه
۴ ستاره اتوبوسی صبا
  • دوشنبه ۲۷ مهر
  • رجا / شمارهٔ قطار ۳۱۸
اتوبوسی ۴ ردیفه
۱۹۴ صندلیِ خالی
قیمت برای هر بزرگسال۷۶۰٬۰۰۰ تومان

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

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

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

نصب

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

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

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

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

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

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

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

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

استفاده

import { TicketCard, TicketCardDetail } from "@/components/ui/ticket-card"

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

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

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

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

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

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

ترکیب اجزا

TicketCard خودش article است و فقط چیدمان را می‌دهد؛ ساعت را به شکلِ «07:25» بدهید تا ارقام فارسی شوند، قیمت را قالب‌بندی‌شده (formatCurrency) و دکمه را آماده. جزئیات را با TicketCardDetail بدهید (هر کدام یک ردیف با آیکون) و کلاس یا نوعِ واگن را با Badge. لوگوی شرکت معمولاً Avatar است؛ اگر لوگوی واقعی ندارید آیکونِ وسیله یا حروفِ اول با رنگِ شرکت. کارت‌ها را در یک ul بچینید و نتایجِ تمام‌شده را جدا، زیرِ عنوانِ «تکمیلِ ظرفیت»، با soldOut.

دسترس‌پذیری

  • هر کارت یک article با عنوانِ پنهان است که شرکت، مبدأ و مقصد و ساعت‌ها را یک‌جا می‌خواند، پس فهرستِ کارت‌ها با کلیدِ عنوان پیمایش می‌شود.
  • ساعت‌ها در time هستند (با dateTime اختیاری) و «+۱» برای صفحه‌خوان «روزِ بعد» خوانده می‌شود. خطِ مسیر تزئینی است و مدتِ سفر جداگانه خوانده می‌شود.
  • کم بودنِ صندلی فقط با رنگ گفته نمی‌شود؛ عدد همیشه هست و رنگ تأکید است.

مرجع API

TicketCard

ویژگینوعپیش‌فرضتوضیح
departure / arrival{ time: string; place: ReactNode; dateTime?: string }—ساعت مثلِ «07:25» (ارقام خودکار فارسی) و مبدأ یا مقصد. arrival.nextDay کنارِ ساعت «+۱» می‌گذارد.
duration / iconReact.ReactNode—مدتِ سفر روی خطِ مسیر و آیکونِ وسیله وسطِ آن.
logo / operatorReact.ReactNode—لوگوی شرکت (معمولاً Avatar) و نامِ قطار یا ایرلاین.
details / tagsReact.ReactNode—ردیف‌های TicketCardDetail و Badgeهای کلاس.
seatsLeft / lowSeatsnumber— / 10صندلیِ باقی‌مانده؛ کمتر یا برابرِ lowSeats قرمز.
price / originalPrice / priceLabelReact.ReactNode— / — / "قیمت برای هر بزرگسال"قیمتِ قالب‌بندی‌شده، قیمتِ پیش از تخفیف و برچسبش.
actionReact.ReactNode—دکمهٔ خرید یا «خبرم کن».
soldOut / soldOutLabel / soldOutHintboolean / ReactNode / ReactNodefalse / "تکمیلِ ظرفیت" / —سرِ تیره با نشانِ قرمز و متنِ کنارش؛ قیمت و صندلی پنهان.

TicketCardDetail

ویژگینوعپیش‌فرضتوضیح
iconReact.ReactNode—آیکونِ ۱۶ پیکسلیِ کنارِ ردیف؛ بقیهٔ پراپ‌ها روی li.

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

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

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

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

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

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