Signed-off-by: Mohamed-Abdelhalim2 <codepen.io.dropper985@passinbox.com>
7.2 KiB
7.2 KiB
دليل التخصيص وإدارة الإضافات (Customization & Asset Guide)
يوفر هذا الدليل شرحاً تفصيلياً لجميع الإضافات (Assets)، الخطوط، الألوان، والمكتبات المستخدمة في SteganoPixel، مع تعليمات خطوة بخطوة للمطورين حول كيفية تعديلها أو استبدالها وتصحيح المشاكل المحتملة.
1. الإضافات المستخدمة (Assets Inventory)
أ. الصور والأيقونات (Images & Icons)
- المسار الدقيق:
public/(للملفات الثابتة) وداخل كودsrc/App.tsx(أيقونات متجهات SVG المدمجة). - الغرض منها: تعزيز التجربة البصرية التفاعلية (أيقونات السحب والإفلات، علامات النجاح، ومؤشرات التنزيل).
- كيفية التعديل أو الاستبدال:
- لاستبدال أيقونات الواجهة، ابحث عن وسوم
<svg>فيsrc/App.tsxواستبدلها بأي كود SVG مفضل (مثلاً من Lucide أو Heroicons). - لإضافة شعار ثابت، ضع ملف الصورة (مثلاً
logo.png) في مجلدpublic/واستدعه في الكود عبر<img src="/logo.png" alt="Logo" />.
- لاستبدال أيقونات الواجهة، ابحث عن وسوم
- تصحيح المشاكل:
- مشكلة: الأيقونة تظهر بحجم ضخم أو مشوه.
- الحل: تأكد من تحديد خصائص العرض والطول في أصناف Tailwind (مثلاً
h-6 w-6)، وتأكد من وجود خاصيةfill="none"وstroke="currentColor"في وسم الـ SVG الأساسي.
ب. الخطوط (Fonts & Typography)
- المسار الدقيق: معرّفة في
src/index.css(:root { font-family: ... }) ويتم الاعتماد على الخطوط القياسية ومكتبة Inter. - الغرض منها: تأمين قراءة ممتازة ومريحة للنصوص والتعليمات باللغتين العربية والإنجليزية.
- كيفية تغيير الخطوط (عناوين، نصوص أساسية، أكواد):
- افتح ملف
src/index.css. - لتغيير خط العناوين والنصوص الأساسية، قم باستيراد خطك المفضل من Google Fonts (مثلاً Cairo أو Tajawal) في رأس الملف:
@import url('https://fonts.googleapis.com/css2?family=Tajawal:wght@400;700;900&display=swap'); :root { font-family: 'Tajawal', system-ui, -apple-system, sans-serif; } - لتخصيص خط الأكواد والنصوص المستخرجة (Monospace)، أضف تعريفاً خاصاً لعناصر
<textarea>:textarea { font-family: 'Fira Code', 'Courier New', monospace; }
- افتح ملف
- تصحيح المشاكل:
- مشكلة: الخط العربي يظهر متقطعاً أو أوزانه (Bold/Regular) لا تعمل بشكل صحيح.
- الحل: تأكد من تضمين جميع الأوزان المطلوبة في رابط الاستيراد (
wght@400;600;800)، وتأكد من عدم وجود أخطاء إملائية في اسم عائلة الخط داخل:root.
جـ. الألوان والثيمات (Colors & Theming System)
- المسار الدقيق: معرّفة كفئات ذريّة (Utility Classes) في
src/App.tsxو كمتغيرات فيsrc/index.css. - الغرض منها: تحديد الهوية البصرية للتطبيق (اللون البنفسجي، الخلفيات الزجاجية، والتنبيهات).
- كيفية تعديل الألوان والثيمات:
- تغيير اللون الأساسي (Primary Theme):
التطبيق يستخدم حالياً فئات
violet-500حتىviolet-700وindigo-600. لتحويل ثيم التطبيق إلى الأزرق الملكي (Blue Theme) مثلاً، استبدل كل:from-violet-500 to-indigo-600➔from-blue-500 to-cyan-600bg-violet-600hoverhover:bg-violet-700➔bg-blue-600hoverhover:bg-blue-700text-violet-700➔text-blue-700
- تعديل خلفية التدرج العامة:
افتح
src/App.tsxوعدل حاوية الصفحة الجذرية:// من البنفسجي إلى الأبيض: bg-[radial-gradient(circle_at_top,_rgba(124,58,237,0.16),_transparent_34%),linear-gradient(180deg,_#f8fafc,_#eef2ff_45%,_#ffffff)] // لتحويله إلى ثيم رمادي داكن (Dark Theme): bg-[radial-gradient(circle_at_top,_rgba(30,41,59,0.5),_transparent_34%),linear-gradient(180deg,_#0f172a,_#1e293b_45%,_#0f172a)] text-slate-100
- تغيير اللون الأساسي (Primary Theme):
التطبيق يستخدم حالياً فئات
- تصحيح المشاكل:
- مشكلة: التدرج اللوني لا يظهر أو يظهر كخلفية بيضاء صلبة.
- الحل: تأكد من عدم وجود مسافات فارغة غير مسموح بها داخل الأقواس المعقوفة في Tailwind
bg-[...](استخدم الشرطة السفلية_بدلاً من المسافة).
د. المكتبات الخارجية (Third-Party Libraries)
- المكتبات المستخدمة:
react(v18.3.1): مكتبة الواجهات.react-dom(v18.3.1): مشغل React على المتصفح.tailwindcss(v4.0.0): إطار عمل الأنماط.
- المسار الدقيق:
package.json. - كيفية التعديل أو التحديث:
لتحديث المكتبات إلى أحدث إصدار، نفذ الأمر التالي في موجه الأوامر:
أو لتثبيت مكتبة إضافية (مثلاً
npm updatecanvas-confettiللاحتفال عند نجاح الاستخراج):npm install canvas-confetti npm install -D @types/canvas-confetti - تصحيح المشاكل:
- مشكلة: ظهور تعارض في الحزم بعد التحديث (Peer Dependencies Conflict).
- الحل: احذف مجلد
node_modulesوملفpackage-lock.jsonثم أعد التثبيت النظيف عبرnpm install.
2. تخصيص المكونات التفاعلية (Components Customization)
تخصيص بطاقة الرفع (UploadCard)
إذا أردت تغيير السلوك ليقبل ملفات PDF أو نصوص، يمكنك تعديل خاصية accept داخل مكون UploadCard في src/App.tsx:
// الوضع الحالي (صور فقط):
<input id={inputId} type="file" accept="image/*" className="hidden" onChange={handleChange} />
// لتفعيل قبول الصور والوثائق:
<input id={inputId} type="file" accept="image/*,.pdf,.docx" className="hidden" onChange={handleChange} />
تخصيص بطاقة التنزيل (DownloadCard)
لتعديل اسم الملف الافتراضي عند التنزيل، ابحث عن استدعاء setEncodedAsset في دالة handleEncode:
setEncodedAsset({
url,
// يمكنك تغيير اللاحقة "-hidden" إلى أي عبارة أخرى:
fileName: `${baseName(encodeImage.file.name)}-secret-data.png`,
size: blob.size,
width: canvas.width,
height: canvas.height,
});