شارة
تسمية حالة قصيرة بثلاثة أنماط عبر ست نبرات. تُعرض على الخادم ولا تُرسل أي JavaScript إلى المتصفح.
server - 0 KB
شارة
server - 0 KBتسمية حالة قصيرة بثلاثة أنماط عبر ست نبرات. تُعرض على الخادم ولا تُرسل أي JavaScript إلى المتصفح.
Paid
جرّبه
variant
tone
size
الشيفرة
badge.tsx
import { Badge } from 'topclassui/badge'
<Badge>Paid</Badge>لا تحمل الشارة أي دور ARIA: النص يحمل المعنى، واللون وحده لا يكفي أبدًا.
كل الحالات، بدون تمرير الفأرة
3 حالاتSolidSoftOutline
أو استورده من الحزمة
topclassui/badge
import { Badge } from 'topclassui/badge'ثبّت مرة واحدة:npm i topclassui@beta zod
أمثلة
- لحالة قصيرة بجانب ما تصفه: مدفوع، قيد الانتظار، مسودة، أو عدد. إنها تسمية لا عنصر تحكم؛ لما يمكن للمستخدم إزالته أو الضغط عليه استخدم
TagأوButton. - التسمية الطويلة تُقتطع عند حدود حاويتها بعلامة حذف بدل أن تلتف إلى سطر جديد.
BadgeSkeletonيحجز مكانها بالارتفاع نفسه أثناء تحميل البيانات؛ أعطهsizeالشارة التي ينوب عنها.size="custom"لا يضيف أي أصناف للحجم، فيحددclassNameالحشوة ودرجة الخط.
with-icon
PaidPendingOverdue
with-icon.tsx
import { checkCircle } from 'topclassui/icons/check-circle'
import { Svg } from 'topclassui/svg'
import { Badge } from 'topclassui/badge'
/** The docs sample: the icon is decoration, the word carries the status. */
export default function Demo() {
return (
<div className="flex flex-wrap items-center gap-2">
<Badge tone="success" variant="soft">
<Svg icon={checkCircle} />
Paid
</Badge>
<Badge tone="warning" variant="soft">Pending</Badge>
<Badge tone="danger" variant="solid">Overdue</Badge>
</div>
)
}
variants
SolidSoftOutline
variants.tsx
import { Badge } from 'topclassui/badge'
export default function Demo() {
return (
<div className="flex flex-wrap items-center gap-3">
<Badge variant="solid">Solid</Badge>
<Badge variant="soft">Soft</Badge>
<Badge variant="outline">Outline</Badge>
</div>
)
}
tones
PrimaryNeutralSuccessWarningDangerInfo
PrimaryNeutralSuccessWarningDangerInfo
PrimaryNeutralSuccessWarningDangerInfo
tones.tsx
import { Badge } from 'topclassui/badge'
export default function Demo() {
return (
<div className="flex flex-col gap-3">
<div className="flex flex-wrap items-center gap-3">
<Badge variant="solid" tone="primary">Primary</Badge>
<Badge variant="solid" tone="neutral">Neutral</Badge>
<Badge variant="solid" tone="success">Success</Badge>
<Badge variant="solid" tone="warning">Warning</Badge>
<Badge variant="solid" tone="danger">Danger</Badge>
<Badge variant="solid" tone="info">Info</Badge>
</div>
<div className="flex flex-wrap items-center gap-3">
<Badge variant="soft" tone="primary">Primary</Badge>
<Badge variant="soft" tone="neutral">Neutral</Badge>
<Badge variant="soft" tone="success">Success</Badge>
<Badge variant="soft" tone="warning">Warning</Badge>
<Badge variant="soft" tone="danger">Danger</Badge>
<Badge variant="soft" tone="info">Info</Badge>
</div>
<div className="flex flex-wrap items-center gap-3">
<Badge variant="outline" tone="primary">Primary</Badge>
<Badge variant="outline" tone="neutral">Neutral</Badge>
<Badge variant="outline" tone="success">Success</Badge>
<Badge variant="outline" tone="warning">Warning</Badge>
<Badge variant="outline" tone="danger">Danger</Badge>
<Badge variant="outline" tone="info">Info</Badge>
</div>
</div>
)
}
sizes
Extra smallSmallMediumLargeExtra large
sizes.tsx
import { Badge } from 'topclassui/badge'
export default function Demo() {
return (
<div className="flex flex-wrap items-center gap-3">
<Badge size="xs">Extra small</Badge>
<Badge size="sm">Small</Badge>
<Badge size="md">Medium</Badge>
<Badge size="lg">Large</Badge>
<Badge size="xl">Extra large</Badge>
</div>
)
}
long-label
Awaiting a second approval from the finance team before release
Awaiting a second approval from the finance team before release
Awaiting a second approval from the finance team before release
long-label.tsx
import { checkCircle } from 'topclassui/icons/check-circle'
import { Svg } from 'topclassui/svg'
import { Badge } from 'topclassui/badge'
const LONG = 'Awaiting a second approval from the finance team before release'
export default function Demo() {
return (
<div className="flex flex-col gap-3">
<div className="w-50 rounded-box border border-line p-2" data-narrow>
<Badge>{LONG}</Badge>
</div>
<div className="w-50 rounded-box border border-line p-2" data-narrow>
<Badge variant="outline" tone="warning">
<Svg icon={checkCircle} />
{LONG}
</Badge>
</div>
<div className="w-50 rounded-box border border-line p-2" data-narrow>
<Badge variant="solid" size="xs">{LONG}</Badge>
</div>
</div>
)
}
skeleton
Small
Medium
Large
skeleton.tsx
import { Badge } from 'topclassui/badge'
import { BadgeSkeleton } from 'topclassui/badge'
/** Each skeleton on one row with the badge it stands in for, so a height mismatch shows. */
export default function Demo() {
return (
<div className="flex flex-col gap-3">
<div className="flex items-center gap-3">
<BadgeSkeleton size="sm" />
<Badge size="sm">Small</Badge>
</div>
<div className="flex items-center gap-3">
<BadgeSkeleton />
<Badge>Medium</Badge>
</div>
<div className="flex items-center gap-3">
<BadgeSkeleton size="lg" />
<Badge size="lg">Large</Badge>
</div>
</div>
)
}
custom-size
The scaleYour own row
custom-size.tsx
import { Badge } from 'topclassui/badge'
export default function Demo() {
return (
<div className="flex flex-wrap items-center gap-3">
<Badge size="md">The scale</Badge>
<Badge size="custom" className="px-pad-x-xs py-pad-y-xs text-xs">Your own row</Badge>
</div>
)
}
بالعربية، من اليمين إلى اليسار
مدفوعقيد الانتظارمتأخرمسودة
rtl.tsx
import { checkCircle } from 'topclassui/icons/check-circle'
import { Svg } from 'topclassui/svg'
import { Badge } from 'topclassui/badge'
export default function Demo() {
return (
<div dir="rtl" lang="ar" className="flex flex-wrap items-center gap-2">
<Badge tone="success">
<Svg icon={checkCircle} />
مدفوع
</Badge>
<Badge tone="warning">قيد الانتظار</Badge>
<Badge tone="danger" variant="solid">متأخر</Badge>
<Badge variant="outline">مسودة</Badge>
</div>
)
}
الخصائص
لوحة المفاتيح وإمكانية الوصول
لا شيء يُشغَّل: ليس تفاعليًا بمفرده.
- الشارة لا تستقبل التركيز ولا دور لها، فيقرأ قارئ الشاشة نصها ضمن الجملة المحيطة بها.
- اكتب الحالة بالكلمات: مدفوع، متأخر. النبرة وحدها لا تقول شيئًا لمن لا يرى اللون.
- الأيقونة بجانب النص زخرفية؛ الكلمة هي التي تحمل الحالة.
من اليمين إلى اليسار
تتبادل الأيقونة والنص موضعيهما مع اتجاه القراءة، والتسمية المقتطعة تبقي علامة الحذف في نهاية اتجاهها هي.
الخادم والمتصفح
يُعرض على الخادم ولا يرسل أي JavaScript.
الملفات: index.tsx.
على الشارة: server - 0 KB.