Markaz Nerkh design system
Tokens, components and patterns extracted from the reference design and adapted for Persian and right-to-left interfaces. Token source file: app/assets/css/main.css and component themes app/app.config.ts ; full documentation at docs/design-system.md.
Colours
Color scales were sampled from the reference image. In code, use semantic colors only (primary, success, text-muted, etc.); raw shades are reserved for special cases.
Brand colour — primary
brand-50 … brand-950Primary buttons, active links, logo and highlights. Shade 500 matches the Figma redesign color (#4849D7).
- 50—
- 100—
- 200—
- 300—
- 400—
- 500—
- 600—
- 700—
- 800—
- 900—
- 950—
Premium purple — secondary
premium-50 … premium-950Premium subscription, AI assistant and chart gradients.
- 50—
- 100—
- 200—
- 300—
- 400—
- 500—
- 600—
- 700—
- 800—
- 900—
- 950—
Up green — success
gain-50 … gain-950Price increases, profit and successful status.
- 50—
- 100—
- 200—
- 300—
- 400—
- 500—
- 600—
- 700—
- 800—
- 900—
- 950—
Down red — error
loss-50 … loss-950Price decline, loss and errors.
- 50—
- 100—
- 200—
- 300—
- 400—
- 500—
- 600—
- 700—
- 800—
- 900—
- 950—
Ink grey — neutral
ink-50 … ink-950Dark surfaces, borders and text.
- 50—
- 100—
- 200—
- 300—
- 400—
- 500—
- 600—
- 700—
- 800—
- 900—
- 950—
Levels
Deepest to highest
bg-defaultPage canvas ·bg-mutedHeader, footer, tables and inputs ·bg-elevatedCards and menus ·bg-accentedPremium band and active state ·bg-invertedTooltip ·
Text
Strong to subtle
- A
text-highlightedTitle and price · - A
text-defaultBody text · - A
text-tonedEmphasised secondary text · - A
text-mutedDescription · - A
text-dimmedHeaders, symbols and axes ·
Borders and meaning
Semantic colours
border-defaultSeparator line ·border-accentedOutline button and chart zero line ·
Typography
Estedad is used across all pages with a seven-step type scale. The top three sizes scale fluidly with the viewport. Do not apply letter spacing to Persian text.
Active font: Estedad An open-source variable font (OFL), loaded locally from @fontsource-variable/estedad.
text-display32–48 pixels · 800 · Hero title
Live currency and gold price reference
text-h128–44 pixels · 800 · Two-column sections and premium band
In-depth price-trend analysis
text-h224–36 pixels · 700 · Section headings and CTA
All markets, one platform
text-h318 pixels · 600 · Card and feature headings
120+ price sources
text-body-lg16 pixels · 1.9 line height · Hero and section descriptions
Live prices, professional charts and a reliable API — all in one platform.
text-body14 pixels · 1.85 line height · Default text and table
Rates are collected from the open market, exchange offices and global markets.
text-caption12 pixels · Labels, column headings and fine print
24h change · 7-day chart
Radius, shadow and gradient
Corner radius
Derived from --ui-radius = 0.25rem
md · ۶pxBadgeslg · ۸pxSmall button and selectorxl · ۱۲pxButtons, inputs and cards2xl · ۱۶pxTable and analysis card3xl · ۲۴pxCTA cardfullAsset icon and floating buttonShadows
shadow-glowPrimary buttonshadow-glow-premiumSpecial buttonshadow-floatFloating cards and tilesGradients
bg-announcementAnnouncement bannerbg-hero-glowGlow behind the herobg-cta-glowAI question card background (layers: bg-cta-arcs and bg-cta-purple)bg-hub-glowSource chart coreBrand text gradient — text-gradient-brand
Forms and navigation
Search
<AppSearch class="w-64" /> <!-- با کلید / فوکوس میگیرد -->
<UInput size="xl" icon="i-lucide-search" placeholder="جستجوی نماد…" />Choose range and tabs
<UTabs v-model="tab" :items="marketTabs" :content="false" variant="link" />Badges
Price changes always include an arrow and a color so they remain distinguishable for people with color blindness. Zero change is green.
Price change
<MarketPriceChange :value="0.18" />
<MarketPriceChange :value="-0.03" size="sm" />
<MarketPriceChange :value="1.41" variant="text" />Market data
Building blocks of rate tables. This page uses demo data.
Asset icon and name
<MarketAssetIcon icon="i-circle-flags-us" size="lg" />
<MarketAssetIcon icon="i-simple-icons-ethereum" bg="#627EEA" fg="#FFFFFF" />
<MarketAssetCell name="بیتکوین" symbol="BTC" :visual="rate.visual" />Mini chart and watchlist
<MarketSparkline :data="rate.sparkline" class="h-8 w-28" />Rates table
| Add to watchlist | Name | Price | 24h change |
|---|---|---|---|
US dollar• USD | 102,350 | Increase 0.42% | |
Euro• EUR | 111,870 | Decrease 0.18% | |
British pound• GBP | 131,240 | Increase 0.27% |
<!-- const { rates } = useMarket() (قیمتها با واحد انتخابشده در تنظیمات) -->
<MarketRatesTable v-model:tab="tab" :rates="rates" :tabs="marketTabs" more-to="/rates" />Charts
All charts use Lightweight Charts, TradingView's open-source engine, with colors and fonts from design tokens. The chart is left-to-right: time flows left to right and the price axis is on the right. Persian dates are used in Persian mode.
Trading chart (TradingView style)
Drawing tools are on the left, OHLC details above the chart, interval and scale controls below, and settings in the gear beside the axes. Drawings are saved per symbol in your browser.
- Open
- 101,660
- Maximum
- 102,510
- Minimum
- 101,530
- Close
- 102,350
- Change
- +850 (+0.84%)
Volume970.5K
| Date | Open | Maximum | Minimum | Close |
|---|---|---|---|---|
| Jul 29, 2026 | 107,530 | 108,050 | 107,450 | 107,810 |
| Jul 30, 2026 | 107,880 | 108,440 | 107,310 | 107,560 |
| Jul 31, 2026 | 107,590 | 107,590 | 107,240 | 107,450 |
| Aug 1, 2026 | 107,290 | 108,650 | 107,030 | 107,840 |
| Aug 2, 2026 | 107,890 | 108,620 | 107,060 | 107,250 |
| Aug 3, 2026 | 107,450 | 108,060 | 106,520 | 106,580 |
| Aug 4, 2026 | 106,340 | 106,660 | 105,660 | 105,890 |
| Aug 5, 2026 | 105,770 | 106,610 | 105,590 | 106,530 |
| Aug 6, 2026 | 106,420 | 107,080 | 105,430 | 105,620 |
| Aug 7, 2026 | 105,620 | 106,300 | 104,850 | 104,910 |
| Aug 8, 2026 | 104,770 | 105,200 | 103,500 | 104,140 |
| Aug 9, 2026 | 103,940 | 104,490 | 103,650 | 103,690 |
| Aug 10, 2026 | 103,620 | 104,430 | 103,390 | 104,110 |
| Aug 11, 2026 | 103,920 | 104,310 | 103,080 | 103,250 |
| Aug 12, 2026 | 103,180 | 104,500 | 102,470 | 104,200 |
| Aug 13, 2026 | 104,270 | 104,640 | 102,780 | 103,280 |
| Aug 14, 2026 | 103,440 | 103,850 | 102,970 | 103,360 |
| Aug 15, 2026 | 103,250 | 103,360 | 102,630 | 102,680 |
| Aug 16, 2026 | 102,880 | 102,960 | 101,990 | 102,650 |
| Aug 17, 2026 | 102,850 | 104,340 | 102,360 | 104,030 |
| Aug 18, 2026 | 104,020 | 104,310 | 102,910 | 103,440 |
| Aug 19, 2026 | 103,310 | 103,750 | 102,940 | 103,010 |
| Aug 20, 2026 | 102,960 | 104,620 | 102,260 | 103,830 |
| Aug 21, 2026 | 103,890 | 104,610 | 103,850 | 104,480 |
| Aug 22, 2026 | 104,360 | 104,900 | 103,290 | 103,630 |
| Aug 23, 2026 | 103,570 | 104,150 | 102,740 | 103,190 |
| Aug 24, 2026 | 103,310 | 103,800 | 102,520 | 103,500 |
| Aug 25, 2026 | 103,370 | 104,520 | 102,650 | 104,110 |
| Aug 26, 2026 | 103,920 | 104,380 | 103,350 | 103,420 |
| Aug 27, 2026 | 103,200 | 103,310 | 102,620 | 102,940 |
| Aug 28, 2026 | 102,870 | 103,090 | 102,420 | 102,970 |
| Aug 29, 2026 | 102,960 | 103,650 | 102,860 | 103,080 |
| Aug 30, 2026 | 103,220 | 103,650 | 103,100 | 103,340 |
| Aug 31, 2026 | 103,410 | 104,860 | 103,100 | 104,330 |
| Sep 1, 2026 | 104,260 | 104,520 | 103,760 | 103,950 |
| Sep 2, 2026 | 103,940 | 105,400 | 103,310 | 105,140 |
| Sep 3, 2026 | 105,100 | 105,790 | 104,780 | 105,640 |
| Sep 4, 2026 | 105,680 | 106,310 | 104,950 | 105,190 |
| Sep 5, 2026 | 105,170 | 106,220 | 104,620 | 106,070 |
| Sep 6, 2026 | 106,010 | 106,030 | 104,750 | 105,250 |
| Sep 7, 2026 | 105,400 | 105,670 | 104,870 | 105,430 |
| Sep 8, 2026 | 105,280 | 105,840 | 104,770 | 104,880 |
| Sep 9, 2026 | 104,680 | 105,020 | 103,630 | 103,810 |
| Sep 10, 2026 | 103,670 | 103,850 | 102,620 | 102,860 |
| Sep 11, 2026 | 103,070 | 104,180 | 102,590 | 103,490 |
| Sep 12, 2026 | 103,450 | 103,760 | 102,540 | 102,550 |
| Sep 13, 2026 | 102,370 | 103,220 | 101,790 | 102,470 |
| Sep 14, 2026 | 102,480 | 102,690 | 101,470 | 101,900 |
| Sep 15, 2026 | 101,910 | 102,240 | 101,020 | 101,500 |
| Sep 16, 2026 | 101,550 | 102,450 | 100,900 | 102,080 |
| Sep 17, 2026 | 101,950 | 102,260 | 100,300 | 101,070 |
| Sep 18, 2026 | 101,010 | 102,110 | 100,610 | 101,720 |
| Sep 19, 2026 | 101,520 | 102,720 | 101,100 | 101,940 |
| Sep 20, 2026 | 102,020 | 102,560 | 101,870 | 102,480 |
| Sep 21, 2026 | 102,480 | 102,830 | 102,460 | 102,800 |
| Sep 22, 2026 | 102,920 | 103,450 | 101,700 | 101,900 |
| Sep 23, 2026 | 101,760 | 102,040 | 101,000 | 101,070 |
| Sep 24, 2026 | 100,890 | 102,360 | 100,170 | 101,680 |
| Sep 25, 2026 | 101,620 | 101,860 | 100,800 | 101,500 |
| Sep 26, 2026 | 101,660 | 102,510 | 101,530 | 102,350 |
<!-- کارت کامل؛ const { candles } = useMarket() (واحد پول، نرخ خرید/فروش و رویدادها را هم دارد) -->
<MarketCandleCard v-bind="candles" />
<!-- خود نمودار؛ ارتفاع را با کلاس بدهید -->
<ChartTrading
:candles="candles"
name="دلار آمریکا"
symbol="USD"
unit="تومان"
:visual="{ icon: 'i-circle-flags-us' }"
market="بازار آزاد"
:quote="{ buy: 102250, sell: 102450 }"
:events="[{ time: fromJalali(1405, 1, 1), badge: 'ن', title: 'نوروز ۱۴۰۵' }]"
label="نمودار معاملاتی دلار آمریکا"
class="h-[38rem]"
/>Lines and bars
US dollar price trend; from 101,449 to 102,350، کمینه 100,547 and بیشینه 103,409
Cumulative trend; from -914 to 4.4K، کمینه -1.2K and بیشینه 5.2K
| 29 Esfand | +1,850 |
|---|---|
| 1 Farvardin | -420 |
| 2 Farvardin | +690 |
| 3 Farvardin | +2,240 |
<ChartLine :data="series" color="gradient" :grid="false" :y-axis="false" label="…" class="h-24" />
<ChartLine :data="series" color="success" area :labels="labels" label="…" class="h-48" />
<ChartBar :data="[1850, -420, 690, 2240]" :labels="labels" label="…" class="h-48" />Cards and decorative elements
Market cards
US dollar · Free market
102,350 Toman
Price trend for US dollar · Free market; from 101,449 to 102,350، کمینه 100,547 and بیشینه 103,409
| 29 Esfand | +1,850 |
|---|---|
| 1 Farvardin | -420 |
| 2 Farvardin | +690 |
| 3 Farvardin | +2,240 |
Cumulative trend chart; from -914 to 4.4K، کمینه -1.2K and بیشینه 5.2K
Advanced profit and loss analysis
- Purchase value
- 77,791,100
- Unrealised profit
- 5,927,010 Increase 26.18%
- Daily loss
- 412,300 Decrease 1.35%
Markaz NerkhNowToday's API usage reached 80% of the daily limit: 80,000 of 100,000 requests.
<MarketSourceCard title="ارز" :visual="{ icon: 'i-circle-flags-us' }" to="#markets" />
<MarketStatsCard v-bind="analytics" />
<MarketInsightCard title="…" :rows="rows" />
<MarketAlertCard message="…" />Dashboard card
Dashboard cards in /panel on their own background
<PanelCard title="مصرف API" icon="i-lucide-activity" to="/panel/usage">
<template #meta>
<UBadge label="۶۴٪" color="neutral" variant="soft" size="sm" class="rounded-full" />
</template>
<PanelMeter :value="64" size="md" label="مصرف سهمیهی درخواست" />
<PanelBars :values="daily" :labels="days" unit="درخواست" label="…" class="mt-5 h-20" />
</PanelCard>Icon tiles
<BaseIconTile icon="i-lucide-trending-up" color="secondary" float />
<BaseIconTile icon="i-lucide-flame" variant="glass" shape="circle" />Device frame and logo

Application content






Icons
Two icon families: Lucide line icons for the interface, and Nucleo Glass icons when the icon serves as an illustration. Both are rendered with UIcon.
Glass icons
The back layer uses the brand color (or purple, green or red for color-suffixed variants); the front is frosted glass with a bright edge. Colors are embedded in the file and remain the same in both themes. Below 36 pixels they look crowded. Custom means it was not in Nucleo and was drawn in the same style.
On dark background
analyticsarrows-convergebellboltcandlesCustomcaret-maximize-diagonal-redcircle-check-greencircle-question-violetflameheartlayersmove-up-leftsparkle-violetsquare-chart-line-violetstar
On light background
analyticsarrows-convergebellboltcandlesCustomcaret-maximize-diagonal-redcircle-check-greencircle-question-violetflameheartlayersmove-up-leftsparkle-violetsquare-chart-line-violetstar
<!-- ویژگی و سرتیتر بخش: ۴۰ تا ۵۶ پیکسل -->
<UIcon name="i-glass-bolt" class="size-11" />
<UPageFeature icon="i-glass-layers" title="…" :ui="{ leadingIcon: 'size-11' }" />
<!-- تزئینی و شناور -->
<UIcon name="i-glass-sparkle-violet" class="size-12 drop-shadow-lg motion-safe:animate-float" />Which icon goes where?
Use glass icons only at large sizes as illustrations. Use line icons beside text and on buttons.
Glass
Feature lists, section headings, floating decorative icons and the brand panel. 40–56 pixels.
Outline (Lucide)
Buttons, menus, fields, tables and anywhere an icon performs an action. 16–24 pixels, matching the text color.
Page patterns
Homepage sections and their mappings to components and the reference design.
| Pattern | Component | |
|---|---|---|
| Announcement banner | AppAnnouncement ← UBanner | View |
| Header | AppHeader ← UHeader، UNavigationMenu، AppSearch | View |
| Hero | LandingHero ← MarketSymbolSearch، تصاویر سهبعدی فیگما | View |
| Rates table | MarketRatesTable ← UTabs، UTable | View |
| All in one platform | LandingFeatureHub ← BaseBorderGlow | View |
| Trend analysis | LandingAnalytics ← LandingAnalyticsPanel | View |
| Candlestick chart | LandingTrading ← ChartTrading | View |
| Premium subscription | LandingPremium ← UButton، MarketSparkline، MarketAssetIcon | View |
| Business products | LandingProducts ← UPageSection، UBadge، UButton (در صفحهی اصلی نیست) | View |
| Ask AI | LandingAskAi ← UTooltip، دکمههای شیشهای (glass-pill)، تصاویر سهبعدی فیگما | View |
| Footer | AppFooter ← BaseStoreBadge، UTooltip | View |
| Floating buttons | AppFloatingActions | View |
| Settings menu | AppSettingsPanel ← UPopover، USwitch | View |
| Log in | layouts/auth ← AuthOtpForm (UPinInput)، AuthBrandPanel | View |
| Sign up | layouts/auth ← AuthOtpForm (UCheckbox، UPinInput)، AuthBrandPanel | View |
| Dashboard | layouts/panel ← UDashboardGroup، UDashboardSidebar، PanelCard | View |