المكونات
الشريط السفلي
شريط تنقّل عائم زجاجي: حبّة بيضاء مصنفرة من أيقونات، أحدها نشط، تُحاط أحيانا بزر المساعد الذكي وزر البحث. يُركّب بطرق مختلفة حسب الشاشة.
- النضج
- جاهز
- الإصدار
- 1.0
- المالك
- فريق نظام التصميم
- المنصّة
- Mercato B2B
نظرة عامة
الشريط السفلي هو التنقّل الأساسي في التطبيق. تحمل الحبّة من ٣ إلى ٥ صفحات (أولها القائمة، والرئيسية هي النشطة)، ويُحاط بزرّي المساعد الذكي والبحث اختياريا. لا يتجاوز الشريط ٥ أيقونات: فإن فُعّل الزرّان العائمان معا هبطت الحبّة إلى ٤ صفحات حتى لا تزدحم.
طرق التركيب
الحبّة نفسها تُركّب بطرق مختلفة. كلها حيّة.
المكتب · الحبّة وحدها (خمس وجهات)
السوق · مساعد + حبّة + بحث
بمساعد فقط
التركيب
الحبّة سطح زجاجي مصنفر، والأيقونة النشطة مملوءة على دائرة فاتحة بلون العلامة. زر المساعد كرة زجاجية زرقاء (Liquid Glass) بروبوت أبيض، وزر البحث كرة زجاجية بيضاء.
| الجزء | الطبقة والرمز |
|---|---|
| الحبّة | Radius · pill + Elevation · shadow + frosted white |
| الأيقونة النشطة | Filled · dodger-blue.600 on black-oud.200 |
| الأيقونات الخاملة | Regular · black-oud.400 |
| زر المساعد | Liquid glass · #0091ff + white robot (filled) |
| زر البحث | Radius · pill + frosted white + Elevation |
| الأيقونات | Material Symbols · dehaze / request_quote / sell / group / home / search / robot |
السلوك
كل زر تنقّل قابل للتركيز بلوحة المفاتيح ويُفعّل بمفتاحي Enter وSpace، والوجهة النشطة تُعرّف بـ aria-current وتُميّز بالدائرة واللون معا. النقر على وجهة ينقل الحالة النشطة إليها فورا، أما الزر العائم للمساعد الذكي فيفتح المساعد لا وجهة تنقّل. يثبت الشريط أسفل الشاشة ويحترم المنطقة الآمنة فلا تختفي أزراره خلف حافة الجهاز.
افعل ولا تفعل
- أبقِ وجهة واحدة نشطة، مميّزة بالدائرة واللون.
- أضف زر المساعد أو البحث حين تحتاجه الشاشة فقط.
- لا تتجاوز خمس وجهات في الحبّة.
- لا تعتمد على اللون وحده للحالة النشطة؛ الدائرة تميّزها أيضا.
إمكانية الوصول
- كل زر تنقّل له تسمية وصول عربية، والنشط يعرّف aria-current.
- الحالة النشطة تُميّز بالدائرة واللون معا، لا باللون وحده.
- مساحات اللمس ٤٤ بكسل على الأقل.
الشيفرة
الشريط يُستورد من حزمة المكوّنات، ويُركّب من حبّة وأزرار عائمة اختيارية. الاستخدام في React أولا، ثم عقد CSS الذي يربط الحبّة والحالة النشطة وزرّي العائم برموزها. الشريط يلتزم اتجاه LTR دائما لأنه كروم فيزيائي ثابت.
import { BottomNav } from "@mercato/components";
// Office: the pill alone (up to five destinations).
<BottomNav items={[menu, invoices, products, people, home]} />
// Marketplace: assistant FAB + pill + search FAB.
<BottomNav ai search items={[menu, invoices, people, home]} />
// Each item is { icon, label, active? }; exactly one is active.
const home = { icon: "home", label: "الرئيسية", active: true };/* Fixed physical chrome: assistant left, pill center, search right,
the same in LTR and RTL, so the bar lays out LTR regardless of page dir. */
.navbar { display: flex; direction: ltr; align-items: center; gap: var(--spacing-gap-sm); }
/* Frosted-white pill of icon buttons. */
.nav-pill {
display: flex;
flex: 1;
min-width: 0;
align-items: center;
justify-content: space-between;
padding: 4px;
border-radius: var(--shape-rounded); /* the pill shape */
background: rgba(255, 255, 255, 0.92);
border: 3px solid rgba(255, 255, 255, 0.3);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
backdrop-filter: blur(6px);
}
.nav-item {
display: grid;
place-items: center;
width: 46px;
height: 46px;
border-radius: var(--shape-rounded);
color: var(--color-black-oud-400); /* inactive glyph */
background: transparent;
transition: color var(--motion-feedback-duration) var(--motion-feedback-easing);
}
/* Active state = both a filled circle AND the brand color, never color alone. */
.nav-item[data-active="true"] { color: var(--color-dodger-blue-600); background: var(--color-black-oud-200); }
/* Floating action buttons flanking the pill. */
.nav-fab { display: grid; place-items: center; width: 58px; height: 58px; border-radius: var(--shape-rounded); }
.nav-fab-ai { /* blue liquid-glass orb, white robot */
color: #ffffff;
background: linear-gradient(180deg, rgba(255, 255, 255, 0.32), rgba(255, 255, 255, 0) 42%), #0091ff;
}
.nav-fab-search { /* white glass orb */
color: #585e71;
background: rgba(255, 255, 255, 0.92);
border: 3px solid rgba(255, 255, 255, 0.3);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
}الحبّة والحالة النشطة والاستدارة تمرّ عبر الرموز، فتبديل الوضع الداكن وإعادة العلامة يسريان تلقائيا. الأسطح الزجاجية (الشفافية والوهج) بصرية بحتة وتبقى ثابتة عبر الأسطح.
| الخطأ | ما يفسد | الصواب |
|---|---|---|
| أكثر من وجهة نشطة | يُربك أين المستخدم الآن | اضبط active على عنصر واحد فقط |
| الاعتماد على اللون وحده للنشط | يفشل مع عمى الألوان | الدائرة مع اللون: black-oud.200 |
| أكثر من خمس أيقونات في الشريط | يزدحم ويضيّق مساحات اللمس | الحد الأقصى خمسة؛ أسقط صفحة عند تفعيل الزرّين |
| عكس ترتيب الشريط في RTL | يزيح الكروم الفيزيائي الثابت | .navbar { direction: ltr } |