متن برجسته (HighlightedText)
علامتگذاری عبارتهای جستوجو در متن ساده، با یکسانسازی «ی/ي»، «ک/ك» و نیمفاصله
معرفی
HighlightedText یک متن ساده را نشان میدهد و عبارتهای دادهشده را با <mark> علامت میزند؛ مثلاً عنوان یا خلاصهٔ یک نتیجهٔ جستوجو. با normalize="fa" نوشتار عربی و فارسی «ی» و «ک» با هم جور درمیآیند و نیمفاصله اختیاری است، پس «میرود» با «ميرود» هم پیدا میشود.
چه زمانی استفاده نکنیم:
- برای متن پست کاربر با هشتگ و منشن — از
SocialTextیاPostبا prop highlightاستفاده کنید - برای مارکداون — از
Proseاستفاده کنید
- فروشگاه از امروز جشنوارهٔ تخفیف فصلی را شروع میکند
- مشتریان میگویند ارسال رایگان کمپين پاييزي دیر رسید
- گزارش هفتگی: بحث دربارهٔ کیفیت بستهبندی بیشتر شد
- پیشنهاد ويژه برای خریداران کتاب در کمپین پاییزی
زمین بازی
با تغییر تنظیمات زیر، پیشنمایش زنده را مشاهده کنید.
مشتریان میگویند ارسال رایگان کمپين پاييزي دیر رسید
import { HighlightedText } from '@partodata/ui'
<HighlightedText text="مشتریان میگویند ارسال رایگان کمپين پاييزي دیر رسید" terms={["کمپین","پاییزی"]} normalize="fa" />استفاده
import { HighlightedText } from '@partodata/ui/highlighted-text'<HighlightedText text={result.title} terms={[query]} normalize="fa" />با RegExp
<HighlightedText text={log} terms={/خطا|هشدار/} />راهنمای استفاده
بکنید
برای ورودی کاربر فارسیزبان همیشه normalize="fa" بدهید؛ صفحهکلیدهای مختلف «ی» و «ک» متفاوت مینویسند.
نکنید
RegExp را از ورودی خام کاربر نسازید؛ آرایهٔ عبارتها را بدهید تا نویسههای ویژه escape شوند.
نکنید
برای علامت جستوجو <mark> دستی با رنگ دیگر (زرد، کهربایی یا رنگ هشدار) نسازید؛ HighlightedText یا prop highlight
در SocialText و Post همان علامت مشترک را میدهند تا نتیجههای جستوجو و پستها یکشکل بمانند.
Props
HighlightedText
دسترسیپذیری
- علامتها عنصر معنایی
<mark>هستند و متن کامل بدون تغییر خوانده میشود - علامت سبز برند با شفافیت 30 درصد است (
bg-brand/30) و متن رنگ اصلی خودش را نگه میدارد (text-foreground)؛ کنتراست متن روی علامت روی صفحه، کارت (surface-100) و نوارsurface-200در تم روشن دستکم 15.9:1 و در تم تیره دستکم 7.4:1 است (AAA) - علامت حاشیه و متن سبز ندارد، پس با Badge موفقیت (پرکنندهٔ 10 درصد، متن سبز و حاشیه) و با رنگ انتخاب متن مرورگر اشتباه نمیشود
- معنا فقط با رنگ منتقل نمیشود: عنصر
<mark>برای فناوریهای کمکی هم نشانه است
کامپوننتهای مرتبط
- SocialText — متن پست با هشتگ، منشن و همین علامتگذاری
- Post — prop
highlightبرای عبارت جستوجو