Morshed · DESIGN.md · alpha

سیستم طراحی مرشد

یک سند زنده برای هویت بصری مرشد. قابل lint با @google/design.md.

v0.37.0·updated 2026-05-07
#BRBrand · 01

هویت

#BR-01

آیکون اصلی — وسط /chat

آیکون مرشد — همان نشانه‌ای که در حالت empty صفحه‌ی /chat نمایش داده می‌شود. بدنه و سایر عناصر با currentColor رنگ متن را می‌گیرند. تنها آبجکت سمت چپ رنگ accent را به‌خود می‌گیرد.

#BR-02

لوگوتایپ

Morshed

لوگوتایپ افقی با دو نسخه light/dark. حداقل ۲۴px فضای آزاد در اطراف.

#BR-03

شعار اصلی

مرشد، همراه باهوشت

Tagline اصلی برند — همیشه با ویرگول. در هیرو، meta tags، و معرفی‌های رسمی استفاده می‌شود.

#BR-04

شعارهای فرعی

۶ شعار فرعی برای وب، تبلیغات، و موقعیت‌های مختلف. هرکدام یک وجه از شخصیت مرشد را نشان می‌دهد.

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

خدمت‌رسانی سریع

مرشد آن باشد که گیرد دست دوست.

همراهی صمیمانه

مرشد، کاربلد در تبدیل کوه به کاه.

ساده‌سازی پیچیدگی

مرشد، هر چه فرمایی همان.

اطاعت در خدمت

مرشد، یارِ غارِت.

همراه دائمی

کارا با من، زندگی با تو.

کاربر در مرکز

#BR-05

مأموریت — Mission

  • در دسترس همه‌ی ایرانی‌ها باشیم.
  • وصل باشیم به آخرین کاربردهای هوش مصنوعی و انتقاممون رو ازش بگیریم :))
  • سفره‌ای پهن کنیم.
  • آبادی باشه...
#BR-06

چشم‌انداز — Vision

کارا کم شه، زندگی بیشتر. زیاد!

#BR-07

اصول و ارزش‌ها

اصول کارمان. هر تصمیمی باید با لااقل یکی از اصول هم‌جهت باشد.

ارزش ایرانیدسترسی برابرفارسی محورهوش مصنوعی به روزکاربردیسادگیسرعتدقتامانت‌داریحال خوبآبادی
#VOVoice · 02

صدا و زبان

صدا
آرام، مستقیم، با احترام به وقت کاربر
زبان اصلی
فارسی
زبان دوم
انگلیسی (UI و کد)
اعداد
فارسی در متن، لاتین در کد
جهت
RTL پیش‌فرض
قلم
Vazirmatn — تک‌قلمی برای فارسی + لاتین
#OVOverview · 03

اوراکل برند

تمرکز آرام

رابط از سر راه گفت‌وگو کنار می‌رود. هیچ‌وقت با پیام رقابت نمی‌کند.

گرمای محاوره

رنگ‌بندی و تایپوگرافی برای متنی که فارسی خوانده می‌شود کالیبره شده‌اند.

دقت فنی

یک accent عمدی، grid قابل پیش‌بینی، WCAG AA بدون استثنا.

#CLColors · 04

رنگ

پالت بر یک accent عمدی (مرشد بنفش) و یک رمپ خاکستری فشرده استوار است. رنگ کارکردی است، نه تزئینی.

#7F56D9
Primaryprimary

اکشن اصلی، CTA، لحظه‌های برند

#6941C6
Primary Hoverprimary-hover

حالت hover روی Primary

#42307D
Primary Deepprimary-deep

متن برند روی پس‌زمینه روشن

#9E77ED
Primary Softprimary-soft

معادل Primary در dark mode

#F9F5FF
Primary BGprimary-bg

بج، چیپ، بلاک اطلاعاتی

#53389E
Section Deepsection-deep

هیرو/سکشن برند (به‌ندرت)

#101828
Inkink

متن اصلی

#475467
Ink Secondaryink-secondary

متن کمکی، caption

#667085
Ink Tertiaryink-tertiary

placeholder، disabled

#FFFFFF
Surfacesurface

پس‌زمینه پیش‌فرض

#F9FAFB
Surface Mutedsurface-muted

کانتینر داخل صفحه

#EAECF0
Borderborder

خط، divider، input outline

#079455
Successsuccess

وضعیت موفق

#DC6803
Warningwarning

وضعیت هشدار

#D92D20
Errorerror

وضعیت خطا

#CL-02

انتخاب رنگ accent — زنده روی صفحه

روی هر رنگ کلیک کن — تمام توکن‌های accent این صفحه (دکمه‌ها، آیکون‌ها، بج‌ها، فوکوس، sidebar فعال، LogoIcon) زنده تغییر می‌کنند. از این صفحه که خارج شوی، رنگ‌ها به پیش‌فرض برمی‌گردند.

پیش‌نمایش زنده

برند

روی pattern برند

Section Deep — لحظه‌ی برند روی یک سکشن کامل.
#TYTypography · 05

تایپوگرافی

یک قلم — Vazirmatn. فارسی و لاتین را با اعتبار یکسان حمل می‌کند.

display-lg
60px / 700
نمونه نمایش بزرگ
display-md
48px / 700
نمونه نمایش متوسط
h1
36px / 700
تیتر صفحه
h2
24px / 700
عنوان سکشن
h3
20px / 600
تیتر کارت
body-lg
18px / 400
متن پاراگراف بلند برای محتوای مقاله
body-md
16px / 400
متن پیش‌فرض رابط کاربری
body-sm
14px / 400
متن ثانویه و لیست‌ها
caption
12px / 500
متاداده و بج
#WRWriting Models · 06

مدل‌های نوشتاری

الگوهای متنی که در سطح /chat رندر می‌شوند: خوش‌آمد بر اساس ساعت، markdown، code، و نشانه‌های زنده‌ی پاسخ.

#WR-01

خوش‌آمد بر اساس ساعت — ۵ حالت

۰۵–۱۱صبح

صبح بخیر مسیح 👋

امروز چطور بهت کمک کنم؟

۱۱–۱۵ظهر

ظهر بخیر مسیح 👋

امروز چطور بهت کمک کنم؟

۱۵–۱۸عصر

عصر بخیر مسیح 👋

امروز چطور بهت کمک کنم؟

۱۸–۲۳شب

شب بخیر مسیح 👋

امروز چطور بهت کمک کنم؟

۲۳–۰۵آخرشب

آخر شبت بخیر مسیح 👋

امروز چطور بهت کمک کنم؟

#WR-02

markdown داخل پیام

این یک پاراگراف پررنگ با ایتالیک و یک لینک نمونه است.

  • آیتم اول لیست
  • آیتم دوم لیست
  • آیتم سوم
یک نقل‌قول کوتاه از مدل

یک متغیر inline: const message

#WR-03

بلوک کد

morshed.ts
کپی
// مرشد می‌خواهد سلام کند 🌱
const morshed = await chat({
  model: "claude-3-5-sonnet",
  vibe: "آرام، دقیق، مهربان",
  font: "Vazirmatn",
  brand: { primary: "#7F56D9", soul: "بنفش" },
  phrases: ["هوم...", "عجب!", "جالب شد..."],
});

for await (const word of morshed.stream("سلام مسیح 👋")) {
  process.stdout.write(word); // ⌫ typewriter
}

// → سلام مسیح 👋
//   چطور می‌تونم کمکت کنم؟
#WR-04

نشانه‌ی فکرکردن — کامپوننت واقعی

Spinner چرخان (¼ کمان رنگ برند، ¾ خاکستری) + متن typewriter که بین ۶ عبارت فارسی چرخش می‌کند. هر کاراکتر ۵۰ms، بین عبارت‌ها ۵s مکث.

1هوم...
2رفتم تو فکر...
3اندکی صبر...
4دنبالشم...
5عجب!
6جالب شد...
#WR-05

مکان‌نمای streaming

پاسخ مدل به‌صورت زنده تایپ می‌شود

#WR-06

پیام کاربر و پیام مرشد

دقیقاً مثل صفحه‌ی /chat: پیام کاربر در چپ‌ترین حد با پس‌زمینه‌ی bg-bg-secondary، پاسخ مرشد بدون پس‌زمینه و بدون آواتار، تمام‌عرض با typography اصلی.

یه ایمیل کوتاه به تیم بنویس بگو جلسه‌ی فردا ساعت ۱۰ هست.

سلام تیم،

یادآوری می‌کنم جلسه‌ی فردا ساعت ۱۰ برگزار می‌شود. لطفاً سر وقت حاضر باشید.

ممنون،
مسیح

  • • پیام کاربر: bg-bg-secondary + rounded-[8px] + max-w-[85%] lg:max-w-[70%]
  • • پیام مرشد: بدون پس‌زمینه، تمام‌عرض، text-text-primary
  • • هیچ آواتار/آیکونی کنار پیام مرشد نیست
#LYLayout · Shapes · 07

فاصله و شکل

#LY-01

Spacing

xxs2px
xs4px
sm8px
md12px
lg16px
xl24px
2xl32px
3xl48px
4xl64px
#LY-02

Rounded

xs4px
sm6px
md8px
lg12px
xl16px
2xl20px
3xl24px
#BT@morshed/ui · Button · 08

دکمه

۵ variant، ۳ size، با حالت loading و آیکون چپ/راست.

#BT-01

variant

#BT-02

size

#BT-03

با آیکون

#BT-04

حالت

#BT-05

هاله نوری چرخان — StartFreeButton

دکمه‌ی CTA نزدیک فوتر صفحه‌ی اصلی. یک نوار نوری دور حاشیه می‌چرخد (offset-path + framer-motion).

#BD@morshed/ui · Badge · 09

بج

#BD-01

variant × size

defaultprimaryموفقهشدارخطا
smmd
#AV@morshed/ui · Avatar · 10

آواتار

#AV-01

size — Unsplash photos

Avatar
A
Avatar
B
Avatar
C
Avatar
D
Avatar
E

عکس واقعی از Unsplash. در صورت نبود تصویر، fallback با حروف اول نام نمایش داده می‌شود.

#AV-02

گروه

Avatar
A
Avatar
B
Avatar
C
Avatar
D
+2
#FM@morshed/ui · Form · 11

فرم

#FM-01

Input

#FM-02

Textarea

#FM-03

Divider

یا
#FM-04

ThemeToggle

جابه‌جایی light/dark
#CD@morshed/ui · Card · 12

کارت

#CD-01

عنوان کارت

توضیح کوتاه که زیر عنوان می‌نشیند و زمینه را برای محتوای پایین فراهم می‌کند.

محتوای اصلی کارت اینجاست. می‌تواند پاراگراف، لیست یا هر کامپوننت دیگری باشد.

#CD-02

کارت با آیکون

ترکیب آزاد header

جدیدفعال
#MD@morshed/ui · Modal · 13

مودال

استاندارد واقعی مرشد — همان الگوی CustomInstructionModal، ConfirmDeleteModal و ModelPickerModal. سه بلوک عمودی با padding یکدست px-6 و cascade pt-6 / pb-5 / pb-6، بدون border-b.

#MD-01

آناتومی استاندارد — سه بلوک

px-6 pt-6

عنوان مودال

px-6 pb-5 pt-2

توضیح کوتاه که زمینه‌ی عملیات را روشن می‌کند. وزن سبک، رنگ tertiary.

body (اختیاری)
محتوای اختیاری: textarea، input، یا لیست.
flex justify-between · px-6 pb-6 pt-2
#MD-02

نمایش زنده — سه واریانت

هر کدوم رو کلیک کن — مودال واقعی @morshed/ui با pattern مرشد باز می‌شه.

ConfirmActionModal

تأیید عمومی — Confirm با bg-brand-solid

ConfirmDeleteModal

حذف — Confirm با border-error + متن error

CustomInstructionModal

ورودی متنی — بلوک سوم با textarea

#MD-03

واریانت ModelPicker — هدر با help و X

تنها مودالی که X اختصاصی می‌گذاریم: انتخاب مدل هوش. هدر در یک ردیف، عنوان + آیکون help راست، X گرد ۴۴×۴۴ چپ.

انتخاب مدل

GPT-4o
Claude 3.5 Sonnet
Mistral Large
  • • هدر: px-6 pt-6 pb-3 (نه pb-5)
  • • X غیرگرد: h-9 w-9 rounded-lg hover:bg-bg-secondary
  • • هیچ shadow روی مودال نمی‌گذاریم — فقط border + backdrop
#MD-04

بات‌ام شیت موبایل

روی موبایل همه‌ی مودال‌ها به‌صورت bottom sheet در می‌آیند: position="bottom" (default در Modal). درگ‌هندل بالا، swipe-to-dismiss، چسبیده به پایین صفحه.

حذف فایل

این فایل برای همیشه حذف می‌شود.

روی دسکتاپ به‌صورت center dialog و روی موبایل به‌صورت bottom sheet ظاهر می‌شود (responsive default).

  • rounded-t-2xl فقط بالای sheet
  • • Drag handle: w-10 h-1 rounded-full bg-fg-quaternary
  • • swipe-to-dismiss فعال (آستانه ۸۰px یا velocity > 0.5)
  • max-h-[90vh] با body scroll lock
#ALNotificationAlert · 14

آلرت

نوار اطلاع‌رسانی inline بالای صفحه/کارت. ۴ سطح: error / warning / info / success. هر کدام رنگ accent اختصاصی، آیکون دایره‌ای دو-حلقه، و دکمه‌ی action اختیاری.

#AL-01

error · URGENT/HIGH priority

حساب شما به‌دلیل فعالیت غیرعادی موقتاً محدود شده است.
#AL-02

warning · MEDIUM priority

اعتبار شما کمتر از ۲۰٪ است. به‌زودی شارژ شود.
#AL-03

info · LOW priority

حالا می‌توانید فایل‌های PDF را مستقیم به گفتگو اضافه کنید.
#AL-04

success — non-dismissable نمونه

پرداخت شما با موفقیت ثبت شد. اعتبار به حساب اضافه شد.

تایپ‌های خاص (CREDIT_DEPLETED، SUBSCRIPTION_EXPIRED) قابل dismiss نیستند — X نمایش داده نمی‌شود.

#TO@morshed/ui · useToast · 15

توست

پیام‌های گذرا بالای صفحه با progress دایره‌ای. ۴ واریانت، duration پیش‌فرض ۴s، auto-dismiss با animation slide+fade.

#TO-01

trigger همه‌ی واریانت‌ها

success

عملیات موفق — رنگ سبز #12B76A

error

خطا — رنگ قرمز #F04438

warning

هشدار — رنگ نارنجی #F79009

default

اطلاع — رنگ آبی #2E90FA

  • • موقعیت: top-4، روی موبایل تمام عرض، روی دسکتاپ w-96
  • • Progress دایره‌ای ضدساعت‌گرد روی X (نشان زمان باقی‌مانده)
  • • animation: scale-95 opacity-0 -translate-y-4 ← in/out
#TT@/components/ui · Tooltip · 16

تولتیپ

hover با delay ۴۰۰ms، portal روی body، پس‌زمینه #0C111D با نوک triangle.

#TT-01

position: top

#TT-02

position: bottom

#SK@morshed/ui · Skeleton · 17

اسکلتون

#SK-01

حالت‌های loading

#IC@morshed/ui · Icons · 18

آیکون

#IC-01

27 آیکون

Mail
Phone
ChevronDown
ChevronLeft
Check
Search
Google
Globe
Send
Plus
Menu
Sparkles
Stop
ArrowLeft
DotsVertical
Edit
Folder
FolderMinus
Trash
Film
ClockStopwatch
Play
Brain
Star
Pin
Coin
Emkanat
#PI132 آیکون · 19

آیکون پروژه

مجموعه آیکون‌های انتخابی برای پروژه‌ها — همان لیستی که در NewProjectModal دیده می‌شود. با رنگ accent فعلی صفحه نمایش داده می‌شوند تا تغییر رنگ زنده باشد.

#PI-01

انتخاب آیکون — کلیک کن انتخاب کن

انتخاب فعلی:
activity-heart
#FI59 نوع · 20

آیکون فایل

آیکون‌های نوع فایل که در FileGallery و attachments استفاده می‌شوند. در /public/icons/file-types/*.svg ذخیره شده‌اند.

#FI-01

همه‌ی نوع‌های فایل

pdfpdf
docdoc
docxdocx
txttxt
mdmd
csvcsv
xlsxls
xlsxxlsx
pptppt
pptxpptx
htmlhtml
csscss
jsjs
tsts
tsxtsx
jsxjsx
jsonjson
xmlxml
sqlsql
javajava
pypy
cc
cppcpp
gogo
rsrs
swiftswift
shsh
yamlyaml
ymlyml
jpgjpg
jpegjpeg
pngpng
webpwebp
tifftiff
gifgif
svgsvg
epseps
bmpbmp
figfig
aiai
psdpsd
inddindd
aepaep
mp3mp3
oggogg
wavwav
m4am4a
flacflac
aacaac
mp4mp4
webmwebm
aviavi
mkvmkv
mpegmpeg
zipzip
rarrar
exeexe
dmgdmg
rssrss
#FVApp icons · 21

آیکون اپ و فاوآیکون

نشانه‌های مرشد در هر سطح: زبانه‌ی مرورگر، Apple Touch، PWA Android/iOS. همه مشتق از LogoIcon.

#FV-01

فاوآیکون

icon.svg
icon.svgvector

زبانه مرورگر، favicon اصلی

apple-icon.png
apple-icon.png180×180

Apple Touch Icon

icon-180x180.png
icon-180x180.png180×180

iOS home screen

#FV-02

آیکون PWA — اندروید و iOS

از manifest.json رفرنس می‌شود؛ دو سایز اصلی + دو نسخه‌ی maskable برای آیکون‌های adaptive اندروید.

icon-192
icon-192192×192purpose: any
icon-512
icon-512512×512purpose: any
maskable-192
maskable-192192×192purpose: maskable
maskable-512
maskable-512512×512purpose: maskable
#FV-03

آیکون نصب اپ اندروید (APK)

Capacitor، آیکون‌های native را در android/app/src/main/res/mipmap-* نگه می‌دارد. Foreground + Background جدا (adaptive icon اندروید ۸+).

mipmap-mdpi/ ic_launcher.png + foreground + background + round mipmap-hdpi/ … mipmap-xhdpi/ … mipmap-xxhdpi/ … mipmap-xxxhdpi/ …

هربار که LogoIcon یا برند تغییر می‌کند، باید این پنج پوشه با capacitor-assets generate دوباره ساخته شوند.

#RLDo's & Don'ts · 22

بکن، نکن

بکن

  • یک اکشن اصلی در هر viewport
  • تفکیک سکشن با spacing و typography، نه با تغییر پس‌زمینه
  • Section Deep فقط برای لحظه‌های برند
  • اعداد فارسی در متن فارسی
  • border به‌جای shadow برای گروه‌بندی استاتیک
  • WCAG AA روی همه‌ی جفت متن/پس‌زمینه

نکن

  • تناوب Surface و Surface Muted در یک صفحه
  • Primary به‌عنوان پس‌زمینه‌ی بزرگ
  • اضافه‌کردن رنگ accent دوم برای تنوع
  • stack کردن elevation روی elevation
  • اعداد لاتین در جمله‌ی فارسی
  • placeholder به‌جای label