PostUrlPreview (پیشنمایش لینک)
کارت Open-Graph–style برای لینکهای جاسازیشده داخل متن پست — تامبنیل، دامنه، عنوان، خلاصه.
معرفی
<PostUrlPreview> همان OG card که در Slack، Discord، X میبینید را میسازد — لینک به یک تب جدید باز میشود و رویداد onClick با stopPropagation کارت والد را نمیگشاید.
چه زمانی استفاده کنیم:
- وقتی
post.body.urlPreviewتنظیم شده (مثلاً برای پستهایtextبا لینک یاmedia-singleبا لینک ضمیمه). - برای نمایش لینک خارجی شاخص یک پست (مقاله، صفحه محصول، بیانیه مطبوعاتی برند) بهصورت کارت قابل کلیک.
- در فیدهای فشرده با
compact، تا پیشنمایش بدون description و با تامبنیل کوچکتر رندر شود.
چه زمانی استفاده نکنیم:
- برای نمایش media اصلی پست — بهجای آن از
<PostMedia>استفاده کنید. - برای ناوبری داخلی محصول — از لینک متنی یا
<Button asChild>استفاده کنید؛ این کارت مخصوص مقصدهای خارجی است. - برای نمایش کامل مقالههای editorial — از
<PostCard source="press|web">استفاده کنید که تیتر، lead و hero مقاله را رندر میکند.
زمین بازی
زمین بازی
تنظیمات
ظاهر
محتوا
کد این نمونه بهصورت خودکار قابل تولید نیست — برای کد آمادهی copy/paste به بخش «استفاده» در بالای صفحه مراجعه کنید.
استفاده
import { PostUrlPreview } from '@partodata/ui'
;<PostUrlPreview
preview={{
url: 'https://example.com/article',
domain: 'example.com',
title: 'تیتر مقاله',
description: 'خلاصهی کوتاه ۱-۲ خطی',
thumbnailUrl: 'https://example.com/og.jpg',
}}
/>حالتها
compact={true}— بدون description، تامبنیل مربعی کوچکترcompact={false}(پیشفرض) — لِیاوت کامل با تامبنیل ۴:۳
راهنمای استفاده
بکنید
domainرا کوتاه و بدون مسیر پاس بدهید (example.comنه URL کامل) — این سطر لنگر اعتماد کاربر پیش از کلیک است و جداگانه باdir="ltr"رندر میشود.- در فیدهای فشرده (نمای triage) از
compactاستفاده کنید تا ارتفاع ردیفها یکنواخت بماند. thumbnailUrlرا ازog:imageصفحه مقصد بدهید و از پیش crop نکنید — کامپوننت خودش باobject-cover object-centerبرش یکنواخت میزند.titleوdescriptionرا از متادیتای Open Graph پر کنید و کوتاه نگه دارید — هر دو حداکثر در دو خط clamp میشوند.
نکنید
targetیاrelلینک را override نکنید — باز شدن در تب جدید باrel="noreferrer"برای لینکهای خارجی crawlشده عمدی است.- URL خام را بهعنوان
titleپاس ندهید — آدرس درurlو دامنه درdomainجای دارد؛titleباید عنوان انسانی صفحه باشد. - برای مدیای اصلی پست (تصویر یا ویدیوی خود پست) از این کارت استفاده نکنید —
<PostMedia>مخصوص همین کار است. - بیش از یک پیشنمایش برای یک پست رندر نکنید — فقط لینک شاخص متن را کارت کنید تا فید شلوغ نشود.
Props
PostUrlPreview
علاوه بر اینها، همه attributes استاندارد <a> (مثل className و onClick) پذیرفته میشوند و ref به همان عنصر <a> ریشه forward میشود. onClick سفارشی شما بعد از stopPropagation داخلی اجرا میشود.
PostUrlPreviewData
دسترسیپذیری
- عنصر ریشه یک
<a>واقعی است: با Tab فوکوس میگیرد و با Enter باز میشود — هیچ handler کیبورد سفارشیای در کار نیست. - نشانگر فوکوس با
focus-visible(حلقه برند با offset) فقط برای ناوبری کیبورد ظاهر میشود، نه کلیک ماوس. - نام دسترسپذیر لینک از متن داخل آن ساخته میشود (دامنه + عنوان + توضیح)؛ حتی بدون
title، صفحهخوان همیشه دامنه را میخواند. - تامبنیل با
alt=""وaria-hidden="true"تزئینی علامتگذاری شده تا اطلاعات تکراری برای صفحهخوان اعلام نشود؛ آیکنExternalLinkهم بهصورت پیشفرض (lucide)aria-hiddenاست. - لینک با
target="_blank"وrel="noreferrer"باز میشود؛ آیکنExternalLinkکنار دامنه سرنخ بصری «خروج به مقصد خارجی» است. - دامنه با
dir="ltr"رندر میشود تا در بستر RTL درست خوانده و truncate شود. - فعالسازی پیشنمایش با
stopPropagationاز کارت والد (مثلPostCardباrole="button") جدا شده است — کلیک یا Enter روی لینک، رویداد کارت را trigger نمیکند.
کامپوننتهای مرتبط
- برای پست با media اصلی به جای لینک →
<PostMedia> - برای کارت بزرگ مقالات (editorial post) →
<PostCard source="press|web">