@qumra/fanar 0.0.0 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/tokens.css CHANGED
@@ -1,87 +1,42 @@
1
- /* ============================================================================
2
- توكنز قمرة — تنزل في أي app بـ@import "@qumra/manara/tokens.css"
3
- منقولة من v2 — منقولة حرفياً من Qumra Web App v2.dc.html (سطر 16-17).
4
- دي مش إعادة تفسير: نفس الأسماء ونفس القيم، عشان أي مقارنة مع الملف
5
- الأصلي تطلع مطابقة مش "قريبة".
6
- ========================================================================== */
7
-
8
1
  @custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));
9
2
 
10
3
  @theme static {
11
4
  --font-sans: "Alexandria", system-ui, sans-serif;
12
5
 
13
- /* الأسطح والنصوص — بتتقلب في الوضع الداكن (تحت) */
14
6
  --color-surface: #ffffff;
15
7
  --color-bg: #f7f9f9;
16
8
  --color-line: #edf1f1;
17
9
  --color-hover: #f2f6f6;
18
10
  --color-ink: #020809;
19
11
  --color-ink2: #3d4545;
20
- /* سلّم النص: 20.2 / 9.8 / 5.6 / 4.9 — أربع درجات كلها فوق 4.5:1.
21
- muted2 كان #a5b0b0 = 2.23:1، يعني تسميات الرسوم والنص البديل
22
- مكانوش بيتقروا. مفيش مساحة لدرجة خامسة تحت — العتبة بتقفل السلّم. */
12
+
23
13
  --color-muted: #5f6a6a;
24
14
  --color-muted2: #687373;
25
- /* حدّ عناصر التحكّم — لازم 3:1 (المعيار 1.4.11). كان #d9e0e0 = 1.34:1،
26
- يعني الشيك بوكس الفاضي مكانش ليه أي وجود بصري. الكروت والفواصل
27
- بتستخدم --color-line فمتأثرتش. */
15
+
28
16
  --color-border: #7f8c8c;
29
17
  --color-soft: #eaf2f3;
30
18
  --color-soft2: #dceded;
31
19
  --color-brand-ink: #0f4a4e;
32
20
 
33
- /* ── تعبئة هيكل التحميل ────────────────────────────────────────────────
34
- العصا اللي بتقف مكان النصّ لحدّ ما يوصل.
35
-
36
- كانت `--color-hover`، وهو **لون حالة مرور** لا تعبئة — وعلى السطح
37
- بيدّي 1.09:1 في الفاتح و1.14:1 في الداكن. فرق زي ده مايتشافش.
38
- النتيجة كانت هيكل موجود في الـDOM وغايب عن العين.
39
-
40
- والمدى ضيّق من الطرفين: تحت 1.2 مايتقريش، وفوق 1.6 بيتقري **محتوى**
41
- لا انتظاراً — بلوك رمادي صريح بيبان كأنه صورة أو صندوق فاضي، فالعين
42
- بتستنّى منه معنى بدل ما تعدّي عليه. القيم مقيسة على السطح:
43
-
44
- فاتح #d6dcdc على #ffffff = 1.39 · 1.26 عند حضيض النبض
45
- داكن #2c3232 على #101718 = 1.39 · 1.24 عند حضيض النبض
46
-
47
- والرقمان متساويان عن قصد: الهيكل لازم يبان بنفس القوة في الوضعين،
48
- وإلا الشاشة الواحدة بتتقري «بتحمّل» في وضع و«فاضية» في التاني.
49
-
50
- ── وليه توكن مستقلّ لا `soft2` ────────────────────────────────────────
51
- `soft2` مسحته تركوازي — هو سطح العلامة الناعم. الهيكل بيه بياخد لون
52
- هوية، وهو المفروض **حياد**: مساحة محجوزة لا عنصر له معنى. ده رمادي
53
- مائل للبرودة (R أقلّ من G وB بستّ درجات) فيتناغم مع اللوحة بلا ما
54
- ينتمي لها. */
55
21
  --color-skeleton: #d6dcdc;
56
22
 
57
- /* ألوان ثابتة مكتوبة صراحةً في v2 (مش متغيّرة مع الثيم) */
58
23
  --color-brand: #207982;
59
24
  --color-brand-hover: #1a646c;
60
25
  --color-brand-100: #a5c9cc;
61
26
  --color-brand-900: #0a2528;
62
27
  --color-brand-deep: #0b3b3e;
63
- /* خلفية فاتحة بمسحة تركوازي — لوحات العرض وحالة المرور على الكروت
64
- الكبيرة. كانت #F4FAF8 مكتوبة بالإيد في شاشات الحسابات. */
28
+
65
29
  --color-tint: #f4faf8;
66
- /* درجة أعمق شوية — أرضية كروت التسويق في صفحة الهبوط. `tint` أرضية
67
- القسم كله و`tint2` الكرت اللي جوّه، فالكرت يبان عليها. كانت
68
- #EFF6F3 مكتوبة بالإيد ١٢ مرة في `Qumra Landing.dc.html`.
69
- زي `tint` مالهاش قيمة داكنة — الاتنين أرضيات تسويقية فاتحة بالتعريف. */
30
+
70
31
  --color-tint2: #eff6f3;
71
32
  --color-mint: #7dd3c0;
72
33
 
73
- /* ── ألوان الحالة ──────────────────────────────────────────────────────
74
- كل واحدة ليها: نص (ink/اللون نفسه) + خلفية (bg) + حدّ (line).
75
- التلاتة بيتقلبوا مع الثيم — من غير كده الشارة بتفضل بيضا وبتلمع
76
- جوّه شاشة سودة حتى لو التباين جوّاها عدّى. */
77
34
  --color-amber: #f8ac33;
78
35
  --color-amber-bg: #fef6e9;
79
36
  --color-amber-ink: #85570f;
80
37
  --color-amber-line: #fbd79a;
81
38
  --color-amber-900: #3d2a05;
82
- /* المرور على تعبئة عنبرية — زرار «ابدأ النمو» والشارات في صفحة الهبوط.
83
- كانت #DE9219 مكتوبة بالإيد. مع `amber-900` فوقها بتدّي 5.37:1.
84
- ثابت مش بيتقلب — نفس منطق `amber` نفسه كتعبئة. */
39
+
85
40
  --color-amber-hover: #de9219;
86
41
  --color-green: #1e7a45;
87
42
  --color-green-bg: #f1faf4;
@@ -91,39 +46,16 @@
91
46
  --color-violet-bg: #edeaf6;
92
47
  --color-violet-line: #ded8ef;
93
48
 
94
- /* تعبئة صريحة بنص أبيض فوقها — نفس دور --color-danger.
95
- `green`/`violet` لوحدهم ألوان نص وبيتقلبوا، فمينفعش يشيلوا أبيض
96
- في الوضع الداكن (كان بيدّي 1.90 و2.04). دول ثابتين وبيعدّوا:
97
- green-solid أبيض فوقه 5.35 · كعنصر 3.39–5.35
98
- violet-solid أبيض فوقه 5.33 · كعنصر 3.41–5.33 */
99
49
  --color-green-solid: #1e7a45;
100
50
  --color-violet-solid: #6d5eb8;
101
51
 
102
- /* ── الأحمر: دورين، توكنين ─────────────────────────────────────────────
103
- `red` لون نص — لازم يعدّي 4.5:1 على السطح، فبيتقلب في الوضع الداكن (تحت).
104
- `danger` لون تعبئة وحدّ — لازم يعدّي 3:1 كعنصر، والنص الأبيض فوقه 4.5:1.
105
- قيمة واحدة بتعدّي في الوضعين فمش محتاجة تتقلب:
106
- كعنصر 4.90 فاتح / 3.70 داكن · أبيض فوقه 4.90
107
- كانت #D6493B مكتوبة بالإيد في ٩ مواضع، والأبيض فوقها 4.31 — تحت العتبة. */
108
52
  --color-red: #8e2b20;
109
53
  --color-red-bg: #fdecea;
110
54
  --color-red-line: #f3c9c4;
111
55
  --color-danger: #c94134;
112
- /* ── إضافة فنار — مش في منارة ───────────────────────────────────────────
113
- `danger` كان الشاذ الوحيد: `brand` و`amber` كلٌّ منهم له `-hover`
114
- مخصّص، و`danger` كان بيستعير `--color-red` في الـhover.
115
-
116
- و`--color-red` **بيتقلب في الوضع الداكن** من `#8e2b20` (أحمر غامق)
117
- لـ`#f3a79e` (وردي فاتح) — لأنه لون **نص** هناك لا تعبئة. فزرّ الحذف
118
- في الداكن، أول ما الماوس يعدّي عليه، كان بيبقى أبيض على وردي فاتح
119
- = **1.94**. نصّه عملياً مش مقروء.
120
-
121
- القيمة مشتقّة لا مختارة: نسب القنوات بتاعة `brand → brand-hover`
122
- مطبّقة على `danger`. النتيجة في نفس نطاق النظام (سطوع ٠.٦٤ مقابل
123
- ٠.٦٧ و٠.٧٣)، والأبيض فوقها **6.73** بدل 4.9. */
56
+
124
57
  --color-danger-hover: #a3362b;
125
- /* أحمر فاتح ثابت — للأرضيات الداكنة دايماً (التوست على bg-night).
126
- مش بيتقلب لأن أرضيته مش بتتقلب. نفس منطق --color-brand-100. */
58
+
127
59
  --color-red-100: #f3a79e;
128
60
  --color-night: #0b0f12;
129
61
  --color-hero-body: #bfd9d8;
@@ -131,29 +63,14 @@
131
63
  --color-hero-dim: #5e7a79;
132
64
  --color-hero-text: #d7e3e2;
133
65
 
134
- /* ── سلّم الخط ─────────────────────────────────────────────────────────
135
- ١٢ درجة، أعداد صحيحة بس. الـREADME كان بيوعد بالسلّم ده من غير ما
136
- يبقى موجود، فالمكوّنات اخترعت ١٦ مقاس منهم ٨ كسرية — و12.5px
137
- و13.5px لوحدهم كانوا ٣٥ استخدام. */
138
66
  --text-micro: 11px;
139
67
  --text-caption: 12px;
140
68
  --text-ui: 13px;
141
69
  --text-body: 14px;
142
70
  --text-lead: 15px;
143
- /* الحقل الكبير — تحت ١٦ بيخلّي iOS يعمل zoom تلقائي على الحقل */
71
+
144
72
  --text-base: 16px;
145
- /* ── الدرجة الوحيدة اللي بتصطدم بـTailwind ─────────────────────────────
146
- كل أسماء السلّم مخترَعة (micro · ui · body · lead · h4…) إلا `base`
147
- — ده اسم مقاس مدمج، وTailwind بيعرّف معاه `--text-base--line-height`
148
- بـ1.5. فتجاوز `--text-base` بياخد المقاس ويسيب ارتفاع السطر، وأداة
149
- `text-base` بتطبع الاتنين.
150
-
151
- والنتيجة إن الأداة بتغلب قاعدة ارتفاع السطر بتاعة الحقول (تحت في
152
- `@layer base`) — الأدوات بتغلب الأساس مهما كانت الأولوية — فيرجع
153
- الحقل الكبير لـ1.5 وتتقصّ ذيول «ي» و«ج» ١٫٨٥px. والباقي سليم لأن
154
- أسماءه مالهاش نظير مدمج.
155
-
156
- `initial` بتشيل الاقتران فتطبع الأداة المقاس بس زي بقية السلّم. */
73
+
157
74
  --text-base--line-height: initial;
158
75
  --text-h4: 17px;
159
76
  --text-h3: 20px;
@@ -161,54 +78,13 @@
161
78
  --text-h1: 30px;
162
79
  --text-display: 36px;
163
80
  --text-hero: 44px;
164
- /* ── درجتين تسويقيتين ─────────────────────────────────────────────────
165
- صفحة الهبوط سلّمها أكبر من سلّم اللوحة — اللوحة بتعرض بيانات كتير
166
- في مساحة ضيقة، والهبوط بيعرض جملة واحدة على شاشة كاملة. المرجع
167
- فيه ١٠ مقاسات بره السلّم؛ تمانية منهم بيتقرّبوا لدرجة موجودة
168
- (38→display · 34→display · 29→h1 · 27→h2 · 25→h2 · 21→h3 · 19→h3
169
- · 18→h4)، والاتنين دول مالهمش أقرب من ٤px فبيتضافوا.
170
- مالهمش استخدام جوّه اللوحة — لو ظهروا فيها يبقى فيه غلط. */
81
+
171
82
  --text-title: 40px;
172
83
  --text-mega: 54px;
173
84
 
174
- /* ── نصف القطر ─────────────────────────────────────────────────────────
175
- ٨ درجات بأدوار مسمّاة. السلّم ده **مشتقّ من الاستخدام الفعلي** مش
176
- مفروض عليه: كان فيه ١٧ قيمة مختلفة في ٣١٧ موضع عبر المونوريبو،
177
- والدرجات دي بتبلعهم بإزاحة ٢px كحد أقصى — يعني توحيد مش إعادة تصميم.
178
-
179
- ملف الهوية القديم كان بيوعد بأربع قيم بس (9 · 13 · 18 · كامل)، وده
180
- كان هيغيّر شكل ١٥١ استخدام في العنقود ٧–٩ لوحده. الأدوار أهم من
181
- عدد الدرجات: الزرار الصغيّر مش كرت، والكرت مش قسم. */
182
- /* ── عرض الحاويات ──────────────────────────────────────────────────────
183
- مقاسان لا أكثر، وبأسماء لا بأرقام مكتوبة في الصفحات.
184
-
185
- `shell` سقف اللوحة كلّها؛ و`page` عمود القراءة: كل صفحة تُقرأ سطراً
186
- بعد سطر — تفصيل، أو نموذج، أو إعدادات — تأخذه، وكل صفحة جدولها هو
187
- محتواها تأخذ `shell` كاملاً.
188
-
189
- كان في المشروع أربعة مقاسات (٨٨٠ · ٩٢٠ · ٩٨٠ · ٥٨٠) مكتوبة بالإيد
190
- في ستّ عشرة شاشة. الفرق بين ٨٨٠ و٩٢٠ لا يُقرأ سبباً — يُقرأ سهواً،
191
- والتنقّل بين صفحتين متجاورتين يُظهر الحافّة وهي تقفز أربعين بكسل.
192
- والرقم المكتوب بالإيد يعود يتفرّق: التوكن يمنع عودته. */
193
- /* ── الفلسفة اتغيّرت: مفيش عصر ────────────────────────────────────
194
- `page` كان ٨٨٠px كعمود قراءة، و`shell` ١٤٤٠. النتيجة إن تفاصيل
195
- الطلب ومحرّر المنتج والإعدادات — ٢٤ شاشة — بيتحشروا في تلت الشاشة
196
- على ٢٧ بوصة، والفراغ حواليهم بيتقري صفحة مش مخلّصة لا عمود مقصود.
197
-
198
- الاتنين بقوا واحد: الصفحة بتاخد عرضها كامل لحد السقف. والسقف باقي
199
- لأن غيابه مش «بلا حاوية» — هو حاوية بعرض الشاشة: صفّ «تسمية ← قيمة»
200
- على ٣٤٤٠px بيبعد طرفيه تلات آلاف بكسل، والعين بتلفّ بدل ما تمسح.
201
-
202
- لو رجعنا لعمود القراءة يوماً: `--container-page` يرجع ٨٨٠ وبس —
203
- الـ٢٤ شاشة بتقراه من التوكن مش مكتوب فيها. */
204
85
  --container-page: 1600px;
205
86
  --container-shell: 1600px;
206
87
 
207
- /* عرض السطر لا عرض الحاوية — سقف على النصّ حتى لا يمتدّ السطر
208
- فيضيع طرفه على العين. درجتان: `note` للسطر أو السطرين تحت
209
- عنوان أو في حالة فارغة، و`lead` للفقرة القائمة بنفسها.
210
- كانت ستّ قيم (٣٢٠ · ٣٣٠ · ٣٤٠ · ٣٨٠ · ٤٦٠ · ٥٢٠) لا يفرّق
211
- بينها شيء يُقصد. */
212
88
  --container-note: 340px;
213
89
  --container-lead: 520px;
214
90
 
@@ -221,12 +97,6 @@
221
97
  --radius-section: 18px;
222
98
  --radius-full: 999px;
223
99
 
224
- /* ── الظل ──────────────────────────────────────────────────────────────
225
- الأربعة الأولى بتستخدم `--shadow-color` فبتتقلب مع الثيم — دي ظلال
226
- جوّه الصفحة، ولازم تقوى في الوضع الداكن عشان تفضل مقروءة.
227
-
228
- التلاتة الأخيرة قيمها ثابتة عن قصد: دي طبقات فوق أرضية معتّمة
229
- أصلاً (backdrop)، فالخلفية اللي وراها مش بتتغيّر مع الثيم. */
230
100
  --shadow-raise: 0 1px 3px var(--shadow-color);
231
101
  --shadow-tip: 0 6px 18px var(--shadow-color);
232
102
  --shadow-panel: 0 10px 30px var(--shadow-color);
@@ -234,124 +104,50 @@
234
104
 
235
105
  --shadow-modal: 0 24px 60px rgb(2 8 9 / 0.28);
236
106
  --shadow-toast: 0 16px 40px rgb(2 8 9 / 0.26);
237
- /* طالع من تحت — الإزاحة سالبة، والخط الداخلي بيدّي حافة علوية للشيت */
107
+
238
108
  --shadow-sheet: 0 -14px 40px rgb(2 8 9 / 0.28), inset 0 1px 0 rgb(255 255 255 / 0.06);
239
109
 
240
- /* ── ألوان الكود — Visual Studio Code ──────────────────────────────────
241
- التوثيق وسط تاني: الكود مش نص عادي، والتلوين فيه **بنية** مش زينة —
242
- بيفرّق الوسم عن السمة عن القيمة، وده اللي بيخلّي المطوّر يمسح مقطع
243
- من عشر أسطر بنظرة. وعشان كده ليه توكنز مستقلة مش استعارة من ألوان
244
- الحالة: `--color-green` معناه «نجح»، ولو النص بين علامتين اقتباس
245
- أخضر لنفس السبب يبقى المعنى اتخفّف.
246
-
247
- ── ليه ألوان محرّر جاهز مش ألوان قمرة ──────────────────────────────
248
- دي الحتة الوحيدة في النظام اللي **المرجع فيها بره قمرة**، والسبب إن
249
- المستخدم هنا مطوّر بيقضّي يومه في محرّر. لوحة قمرة على مقطع كود
250
- معناها إنه يقرا بنية بلون مش متعوّد عليه، وبعدين ينسخه فيلاقيه
251
- بلون تاني في محرّره. التطابق مع المحرّر بيوفّر الترجمة دي.
252
- القيم من `light_plus` و`dark_plus` حرفياً — أي «تقريب» بيضيّع
253
- السبب كله.
254
-
255
- ست أدوار مش خمسة: الكلمة المحجوزة (`const` · `import`) اتفصلت عن
256
- الوسم لأنها كانت **مش ملوّنة أصلاً**، ودي أوضح فرق بين المقطع هنا
257
- وبين نفسه في المحرّر.
258
-
259
- ── وليه داكن حتى في الوضع الفاتح ───────────────────────────────────
260
- دي القيم الوحيدة في الملف اللي **مابتتقلبش مع الثيم**، ومعاها سبب
261
- زي `--color-tint` و`--color-red-100` بالظبط: أرضيتها مش أرضية
262
- الصفحة.
263
-
264
- بلوك الكود مش «فقرة بخط تاني» — هو **نافذة محرّر متحطّة في
265
- الصفحة**، والمحرّر داكن عند أغلب اللي هيقروا. لو اتقلب مع الثيم
266
- بيبقى قطعة من الصفحة، ولو فضل داكن بيتقري مقتطع من المكان اللي
267
- الكود ده رايح ليه.
268
-
269
- والمقطع نفسه بيتنسخ ويتلزق في المحرّر — فالتطابق بيوفّر ترجمة
270
- بصرية مرتين: وانت بتقراه، ولما تشوفه هناك.
271
-
272
- التباين على `code-bg` — السبعة كلهم فوق 4.5:
273
- 11.12 · 5.59 · 8.09 · 11.05 · 6.24 · 9.70 · 4.95 */
274
- --color-code-bg: #1f1f1f; /* أرضية المحرّر نفسها */
275
- --color-code-plain: #d4d4d4; /* النص العادي — لون المحرّر مش لون الصفحة */
276
- --color-code-key: #569cd6; /* `const` · `import` · `return` · `true` */
277
- --color-code-tag: #4ec9b0; /* اسم الوسم والمكوّن — `<Button` */
278
- --color-code-attr: #9cdcfe; /* اسم السمة، اسم الخاصية في JSON */
279
- --color-code-str: #ce9178; /* النص بين علامتين */
280
- --color-code-num: #b5cea8; /* الرقم */
281
- --color-code-note: #6a9955; /* التعليق */
282
- /* طاقم البلوك — شريط العنوان وزرار النسخ والفاصل الداخلي.
283
- `muted2` و`line` بتوع الصفحة مش شغّالين هنا: أرضيتهم بتتقلب وأرضية
284
- البلوك لأ، فـ`muted2` في الوضع الفاتح كان بيدّي 3.37 على الأسود.
285
- دول مقاسين على `#1f1f1f` وبس. */
286
- --color-code-dim: #858585; /* 4.47 على code-bg */
287
- --color-code-line: #303031; /* الفاصل الداخلي — حدّ لوحة المحرّر */
288
-
289
- /* أرضية الكود المضمّن جوّه جملة — **بتتقلب** مع الثيم عكس اللي فوق.
290
- الكلمة جوّه فقرة عربية مش نافذة محرّر: أرضية سودة حواليها بتقطع
291
- السطر وبتسحب العين لها بدل ما تخلّيها تكمّل قراية. الفرق في
292
- الدور مش في الوسط. */
110
+ --color-code-bg: #1f1f1f;
111
+ --color-code-plain: #d4d4d4;
112
+ --color-code-key: #569cd6;
113
+ --color-code-tag: #4ec9b0;
114
+ --color-code-attr: #9cdcfe;
115
+ --color-code-str: #ce9178;
116
+ --color-code-num: #b5cea8;
117
+ --color-code-note: #6a9955;
118
+
119
+ --color-code-dim: #858585;
120
+ --color-code-line: #303031;
121
+
293
122
  --color-code-chip: #f4f7f7;
294
123
 
295
124
  --animate-qfade: qfade 0.16s ease-out;
296
125
  --animate-qslide: qslidein 0.22s ease-out;
297
- /* ظهور من أسفل — للبطاقات التي تُقحم نفسها على المستخدم. أبطأ من
298
- `qfade` عمداً: ما يظهر بلا طلب يجب أن يُرى وهو يظهر، لا أن يجد
299
- المستخدم نفسه أمامه. */
126
+
300
127
  --animate-tip: tip-in 0.26s cubic-bezier(0.2, 0.8, 0.2, 1);
301
- /* الشريط السفليّ يطلع من تحت الشاشة — حركة تقول «جئت من هنا» */
128
+
302
129
  --animate-tip-up: tip-up 0.3s cubic-bezier(0.2, 0.9, 0.2, 1);
303
- /* درج جانبي — نسختان لأن `transform` لا ينقلب مع اتجاه الصفحة:
304
- اللوح على الحافّة الطرفية، وهي اليمين في LTR واليسار في RTL. */
130
+
305
131
  --animate-drawer: drawer-ltr 0.32s cubic-bezier(0.2, 0.9, 0.2, 1);
306
132
  --animate-drawer-rtl: drawer-rtl 0.32s cubic-bezier(0.2, 0.9, 0.2, 1);
307
- /* شريط الحفظ — ينزلق من فوق ويطلع من فوق. الحركة تقول إنه حلّ محلّ
308
- ما كان هنا، لا إنه طبقة جديدة فوقه. أسرع من الدرج لأنه لا ينتظر
309
- قراءة: المستخدم يعرف أنه عدّل، والشريط يؤكّد لا يُخبر. */
310
- --animate-savebar: savebar-in 0.2s cubic-bezier(0.2, 0.8, 0.2, 1);
311
-
312
- /* ── نبض الهيكل ────────────────────────────────────────────────────────
313
- `animate-pulse` بتاع Tailwind بينزّل الشفافية لـ**٥٠٪**، وده بياكل
314
- نصّ الفرق بين التعبئة والسطح: هيكل بـ1.39 بيوصل 1.12 عند الحضيض —
315
- يعني بيختفي ويرجع مع كل دورة.
316
133
 
317
- السبب إن الشفافية معمولة للعناصر اللي تباينها عالي أصلاً (نصّ، صورة).
318
- والهيكل بالتعريف **خافت**، فنسبة النزول لازم تبقى أقلّ.
134
+ --animate-savebar: savebar-in 0.2s cubic-bezier(0.2, 0.8, 0.2, 1);
319
135
 
320
- ٧٠٪ بتسيب 1.26 عند الحضيض — الحركة لسه بتتشاف والعصا مابتغيبش.
321
- و1.6s أبطأ من 2s بتاعة Tailwind لأن الحركة الأضيق محتاجة وقت أطول
322
- عشان تتقري كنبض لا كوميض. */
323
136
  --animate-skeleton: skeleton-pulse 1.6s ease-in-out infinite;
324
137
  }
325
138
 
326
139
  :root {
327
- /* ── إعلان الوضع للمتصفّح ────────────────────────────────────────────
328
- المتصفّح بيرسم أجزاء **مش إحنا اللي بنلوّنها**: قائمة `<select>`
329
- المنبثقة، وشريط التمرير، ومنتقي التاريخ، وأرضية الملء التلقائي،
330
- وحلقة التركيز الافتراضية. دي بترسمها المنصّة لا الـCSS بتاعنا.
331
-
332
- من غير `color-scheme` المتصفّح بيفترض **فاتح دايماً** — فقائمة
333
- `<select>` في الوضع الداكن بتطلع بنصّ غامق على أرضية غامقة، والخيار
334
- المحدَّد شريط أزرق فاضي بلا كلام. مافيش أي CSS على `<option>` بيصلّح
335
- ده: العنصر بيترسم برّه الصفحة.
336
140
 
337
- والسطر ده هو الإصلاح الوحيد — وبيشتغل على الخمس حاجات مرّة واحدة. */
338
141
  color-scheme: light;
339
142
 
340
143
  --shadow-color: rgb(2 8 9 / 0.14);
341
- /* اتجاه محاذاة الأرقام — بيتقلب مع اتجاه الصفحة */
144
+
342
145
  --num-align: right;
343
- /* ── الرقم اللي ليه لاحقة ──────────────────────────────────────────────
344
- `far` = ناحية **نهاية الصفحة**، وهي ناحية اللاحقة.
345
- و`pad-right`/`pad-left` **فيزيائيين عن قصد**: الحقل نفسه
346
- `direction: ltr` (من `[data-num]`)، فأي حشو منطقي (`pe-`) بيتحسب
347
- على LTR ويروح الناحية الغلط — وده اللي كان بيخلّي الرقم يتراكب
348
- على «ج.م». */
146
+
349
147
  --num-align-far: left;
350
148
  --num-pad-right: 0.875rem;
351
149
  --num-pad-left: 3.5rem;
352
- /* ونفس الحكاية مع الأيقونة السابقة: الأيقونة بتتحطّ بحساب اتجاه
353
- **الصفحة** (`start-3.5` على الغلاف)، والحشو بحساب `ltr` بتاع الرقم
354
- — فالاتنين بيقعوا في ناحية واحدة والرقم بيتراكب على الأيقونة. */
150
+
355
151
  --num-icon-pad-right: 2.5rem;
356
152
  --num-icon-pad-left: 0.875rem;
357
153
  }
@@ -366,7 +162,7 @@ html[dir="ltr"] {
366
162
  }
367
163
 
368
164
  html[data-theme="dark"] {
369
- /* الشرح عند القيمة الفاتحة في `:root` */
165
+
370
166
  color-scheme: dark;
371
167
 
372
168
  --color-surface: #101718;
@@ -381,38 +177,29 @@ html[data-theme="dark"] {
381
177
  --color-soft: #12363a;
382
178
  --color-soft2: #17454a;
383
179
  --color-brand-ink: #7dd3c0;
384
- /* الهيكل — نفس التباين بالظبط (1.39) مقلوباً. الشرح عند القيمة الفاتحة. */
180
+
385
181
  --color-skeleton: #2c3232;
386
182
  --shadow-color: rgb(0 0 0 / 0.55);
387
183
 
388
- /* الأحمر النصّي لازم يتقلب — #8e2b20 على #101718 بيدّي 2.17:1،
389
- يعني رسالة الخطأ مكانتش بتتقري أصلاً. البديل 9.36:1. */
390
184
  --color-red: #f3a79e;
391
185
  --color-red-bg: #2c1613;
392
186
  --color-red-line: #5c2a24;
393
187
 
394
- /* باقي ألوان الحالة — نفس المنطق. الأرقام دي نص على خلفيته. */
395
- --color-amber: #f8ac33; /* 8.33 على amber-bg */
188
+ --color-amber: #f8ac33;
396
189
  --color-amber-bg: #2b2009;
397
- --color-amber-ink: #f5c77a; /* 10.15 */
190
+ --color-amber-ink: #f5c77a;
398
191
  --color-amber-line: #5c4415;
399
- --color-green: #6ecf9a; /* 8.03 على green-bg2 */
192
+ --color-green: #6ecf9a;
400
193
  --color-green-bg: #0d2119;
401
194
  --color-green-bg2: #102a22;
402
195
  --color-green-line: #245140;
403
- --color-violet: #b9aeea; /* 8.24 على violet-bg */
196
+ --color-violet: #b9aeea;
404
197
  --color-violet-bg: #1e1a33;
405
198
  --color-violet-line: #38305c;
406
199
 
407
- /* ألوان الكود مش هنا — هي ثابتة في `@theme static` فوق ومابتتقلبش.
408
- الوحيد اللي بيتقلب هو أرضية الكود المضمّن جوّه الجُمل. */
409
200
  --color-code-chip: #17201f;
410
201
  }
411
202
 
412
- /* خطوط رأسية باهتة كل ٧٤px — بتدّي عمق للأرضية الداكنة من غير صورة.
413
- موجودة في `Qumra Accounts.dc.html` و`Qumra Landing.dc.html` بنفس القيم،
414
- فمكانها هنا مش جوّه تطبيق. تشتغل على الأرضيات الداكنة بس — الخطوط
415
- بيضا بشفافية ٣.٥٪. */
416
203
  @utility rule-grid {
417
204
  background-image: repeating-linear-gradient(
418
205
  90deg,
@@ -421,7 +208,6 @@ html[data-theme="dark"] {
421
208
  );
422
209
  }
423
210
 
424
- /* نبض الهيكل — الشرح عند `--animate-skeleton` */
425
211
  @keyframes skeleton-pulse {
426
212
  0%, 100% { opacity: 1; }
427
213
  50% { opacity: 0.7; }
@@ -467,20 +253,16 @@ html[data-theme="dark"] {
467
253
  to { transform: none; }
468
254
  }
469
255
 
470
- /* ظهور بسيط — للقوايم المنسدلة والتولتيب والطبقات */
471
256
  @keyframes fade-in {
472
257
  from { opacity: 0; }
473
258
  to { opacity: 1; }
474
259
  }
475
260
 
476
- /* التوست بيطلع من تحت شوية — بيربط الحركة بمكانه في الشاشة */
477
261
  @keyframes toast-in {
478
262
  from { opacity: 0; transform: translateY(10px) scale(.97); }
479
263
  to { opacity: 1; transform: none; }
480
264
  }
481
265
 
482
- /* شريط تحميل غير محدّد — بيروح ويرجع بدل ما يدّعي نسبة مايعرفهاش.
483
- منطقيّ الاتجاه: `inset-inline-start` بيتقلب مع الصفحة لوحده. */
484
266
  @keyframes qload {
485
267
  0% { inset-inline-start: -35%; }
486
268
  100% { inset-inline-start: 100%; }
@@ -492,31 +274,6 @@ html[data-theme="dark"] {
492
274
  height: 100%;
493
275
  }
494
276
 
495
- /* ── ذيول الحروف العربية داخل الحقول ──────────────────────────────────
496
- الحقل يقصّ ما يخرج عن صندوقه، وصندوق نصّه ارتفاعه ارتفاع السطر. وفي
497
- Alexandria ينزل ذيل «ي» و«ج» و«ص» تحت خطّ القاعدة أكثر ممّا يتركه
498
- سطر بارتفاع 1.5 — فيُقصّ الذيل قصّاً مستوياً ويُقرأ الحرف ناقصاً.
499
- اللاتينية لا تُظهر العيب لأن ذيولها أقصر، ولذلك يمرّ بلا انتباه.
500
-
501
- 1.9 يسع أطول ذيل في السلّم كلّه. ولا يزيد ارتفاع الحقل: المتصفّح
502
- يوسّط سطر الحقل المفرد في صندوقه، والسطر الأطول يأخذ من الفراغ
503
- الموجود أصلاً. والقاعدة على العنصر نفسه لا على الصنف، فتغطّي كل
504
- حقل في المشروع — في المكتبة أو مكتوباً بالإيد.
505
-
506
- ── والرقم مقيس لا مختار ────────────────────────────────────────────
507
- القصّ يقع عند **صندوق السطر** لا صندوق الحقل — فالحقل قد يكون
508
- ٥٦px والسطر ٢٤px فيُقصّ الذيل وحوله فراغ. والحدّ الأدنى:
509
-
510
- الصعود − الهبوط المعلَن + ٢ × هبوط الحبر
511
- 14 − 4 + 2×7.92 = 25.85px عند 14px ≈ 1.85
512
-
513
- لأن نصف الرصاص يوزَّع أعلى وأسفل. و1.9 فوقه بشعرة.
514
-
515
- ── وأداة `leading-*` على حقل تكسر هذا كلّه ─────────────────────────
516
- القاعدة في `@layer base`، والأدوات تغلب الأساس مهما كانت الأولويّة.
517
- فكل `leading-[…]` أو `text-*` يحمل ارتفاع سطر مقترناً يعيد العيب
518
- في مكانه. وقعت مرّتين: `--text-base` (انظر أعلى) و`leading-[1.7]`
519
- في `AiComposer` — والاثنتان كانتا تقصّان ذيل «ي». */
520
277
  input:not([type='checkbox']):not([type='radio']):not([type='range']),
521
278
  textarea,
522
279
  select {
@@ -544,8 +301,6 @@ html[data-theme="dark"] {
544
301
  font-family: inherit;
545
302
  }
546
303
 
547
- /* حلقة تركيز موحّدة — v2 مكانش فيها، وده الشيء الوحيد اللي بزوّده
548
- على الأصل لأن التصميم من غيره مش قابل للتنقّل بالكيبورد. */
549
304
  :focus-visible {
550
305
  outline: 2px solid var(--color-brand);
551
306
  outline-offset: 2px;
@@ -561,24 +316,6 @@ html[data-theme="dark"] {
561
316
  border-radius: 999px;
562
317
  }
563
318
 
564
- /* الأرقام جوّه نص عربي.
565
- `isolate` بيمنع الرقم من إنه يتلخبط مع اللي حواليه، و`tabular-nums`
566
- بيخلّي الخانات بعرض واحد فالأعمدة تفضل مصطفّة. والمحاذاة متثبّتة على
567
- اتجاه الصفحة بمتغيّر، ولأنها في @layer base أي كلاس محاذاة
568
- (text-end / text-center) لسه بيكسبها.
569
-
570
- ── وليه مافيش `direction: ltr` هنا ──────────────────────────────────
571
- كان موجود، وكان بيقلب كل مبلغ في المنصة: «34,330 ج.م» بتتقرا في
572
- العربي من اليمين — الرقم يمين والرمز شماله. و`ltr` كان بيحطّ الرقم
573
- شمال والرمز يمينه، فتُقرأ «ج.م ثم 34,330» زي «$34,330» الإنجليزية.
574
-
575
- والرقم الخالص مابيفرقش معاه اتجاه العنصر — خانة واحدة بتتعرض LTR
576
- في الحالتين. اللي بيحتاج `ltr` فعلاً هو النصّ المركّب اللي فيه أكتر
577
- من مقطع: تليفون، ورمز تخزيني، ورقم طلب — ودول مكتوب عليهم
578
- `dir="ltr"` صراحةً في مكانهم أصلاً.
579
-
580
- وبيفضل على الحقول، لأن اتجاه الحقل بيحكم حركة علامة الإدخال وهي
581
- بتكتب أرقام — ومش مسألة عرض. */
582
319
  [data-num] {
583
320
  unicode-bidi: isolate;
584
321
  font-variant-numeric: tabular-nums;
@@ -590,30 +327,11 @@ html[data-theme="dark"] {
590
327
  direction: ltr;
591
328
  }
592
329
 
593
- /* ── سهم حقل الرقم ────────────────────────────────────────────────────
594
- تحكّم المتصفّح الأصلي مقفول في كل حقل `type="number"`.
595
-
596
- مش تجميل — تلات أسباب:
597
-
598
- ١. **بيصطدم باللاحقة.** الحقل بلاحقة («ج.م») بيحجز مساحة في
599
- نهايته بـ`pe-14`، والسهم بيتحطّ في نفس المكان من غير ما يعرف
600
- إن فيه حاجة هناك. الاتنين بيتراكبوا.
601
-
602
- ٢. **موضعه بيتلخبط مع `[data-num]`.** الحقل جوّه صفحة عربية
603
- والرقم `direction: ltr` — فالسهم بيتحطّ ناحية والقيمة ناحية،
604
- والنتيجة سهم في نصّ الحقل زي ما في اللقطة.
605
-
606
- ٣. **مقاسه من نظام التشغيل.** ١٥ بكسل تقريباً وبيتغيّر بين
607
- المتصفّحات، ومستحيل يعدّي حدّ الهدف اللمسي (٢٤ بكسل).
608
-
609
- اللي عايز يزوّد وينقّص بزرار بيحطّ زرارين ظاهرين — دي عناصر
610
- التحكّم بتاعتنا وليها حجم ومسافة مقروءين، مش أسهم النظام. */
611
330
  input[type='number'] {
612
331
  appearance: textfield;
613
332
  -moz-appearance: textfield;
614
333
  }
615
334
 
616
-
617
335
  input[type='number']::-webkit-outer-spin-button,
618
336
  input[type='number']::-webkit-inner-spin-button {
619
337
  appearance: none;
@@ -631,21 +349,6 @@ html[data-theme="dark"] {
631
349
  }
632
350
  }
633
351
 
634
- /* ── الرقم بلاحقة ────────────────────────────────────────────────────────
635
- الرقم لوحده بيتحاذى ناحية بداية الصفحة (`--num-align`) — ده صح في عمود
636
- جدول: كل الأرقام بتصطفّ تحت بعضها فالمقارنة بينها بنظرة.
637
-
638
- لكن الحقل اللي ليه لاحقة («ج.م») مختلف: اللاحقة عنصر مطلق في **نهاية**
639
- الحقل، والرقم في **بدايته** — فبينهم عرض الحقل كله. النتيجة إنك تقرا
640
- «٠» وتقطع ٣٩٠ بكسل عشان تلاقي «ج.م».
641
-
642
- هنا الرقم بيتحاذى ناحية اللاحقة فيلزق فيها، والوحدة بتبقى على شماله في
643
- العربي — «١٢٥٠ ج.م» زي ما بتتكتب.
644
-
645
- ── وليه بره `@layer base` ────────────────────────────────────────────
646
- الطبقات بتكسب على التخصيص: أي كلاس utility من Tailwind بيغلب أي قاعدة
647
- في `base` مهما كان تخصيصها. والحقل عليه `pe-14`، فالقاعدة دي لازم تبقى
648
- بعد الطبقات عشان تكسبه. */
649
352
  [data-num][data-suffix] {
650
353
  text-align: var(--num-align-far);
651
354
  padding-right: var(--num-pad-right);
package/dist/tokens.js CHANGED
@@ -1,20 +1 @@
1
- import {
2
- ANIMATE_SCALE,
3
- COLOR_SCALE,
4
- CONTAINER_SCALE,
5
- DARK_TOKENS,
6
- RADIUS_SCALE,
7
- SHADOW_SCALE,
8
- TEXT_SCALE,
9
- TOKENS
10
- } from "./chunk-SFA2EQFK.js";
11
- export {
12
- ANIMATE_SCALE,
13
- COLOR_SCALE,
14
- CONTAINER_SCALE,
15
- DARK_TOKENS,
16
- RADIUS_SCALE,
17
- SHADOW_SCALE,
18
- TEXT_SCALE,
19
- TOKENS
20
- };
1
+ import{ANIMATE_SCALE,COLOR_SCALE,CONTAINER_SCALE,DARK_TOKENS,RADIUS_SCALE,SHADOW_SCALE,TEXT_SCALE,TOKENS}from"./chunk-3CTGRTYV.js";export{ANIMATE_SCALE,COLOR_SCALE,CONTAINER_SCALE,DARK_TOKENS,RADIUS_SCALE,SHADOW_SCALE,TEXT_SCALE,TOKENS};