انتقل إلى المحتوى الرئيسي

LUZ نظام تصميم للإنسان، جاهز للذكاء الاصطناعي.

رموز التصميم وCSS وقليل من JavaScript الخالصة، مبنية على ما يفعله المتصفح أصلًا: ابدأ مشروعًا باستخدام LUZ، نظام التصميم ⁦Light, Usable and Zero-dependency⁩، أو انقل مشروعك صفحةً صفحة. كل مكوّن يعمل قبل تحميل JavaScript، وكل تغيير يبدأ باختبار فاشل.

الضوء حيث أنت

عند تفعيل JavaScript، يُرسم هنا ضوء ساعتك.

الأساس

علامتك في رموز

الألوان والمقاييس والأوضاع الثلاثة كخصائص CSS مخصّصة. بلا مكوّنات: ترميزك وأصنافك. في مشروع قائم، ابدأ من هنا: لا تمسّ شيئًا.

  • الألوان. 53 لونًا أوليًا و63 رمزًا دلاليًا، في الفاتح والداكن والتباين العالي.
  • المقاييس. المسافات والنص والانحناءات والظلال، من ثلاثة مفاتيح.
  • الحجم. 3.0 ك.ب مضغوطًا بـ gzip، مع كل ما قبله.
npm
npm install @luz-ds/tokens
CDN
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@luz-ds/tokens@0.3.0/dist/luz-tokens.min.css">
.cta {
  background: var(--luz-brand-fill);
  color: var(--luz-text-on-fill);
}

.cta:hover {
  background: var(--luz-brand-fill-hover);
}

a {
  color: var(--luz-brand-primary);
}

الأساس + Core

مكوّنات مع core

المكوّنات والتخطيط فوق الرموز، في طبقة تتالٍ واحدة تغلبها أنماطك دائمًا. لبدء مشروع، أو لنقل مشروع قائم على أجزاء بواسطة luz.conditional.css.

  • المكوّنات. 29 مكوّنًا، من الأزرار والنماذج إلى الألسنة ومشغّل الوسائط.
  • التخطيط. 10 كائنات للصفوف والشبكات والأكوام والحاويات.
  • الحجم. 26.5 ك.ب مضغوطًا بـ gzip، مع كل ما قبله.
npm
npm install @luz-ds/tokens @luz-ds/core
CDN
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@luz-ds/tokens@0.3.0/dist/luz-tokens.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@luz-ds/core@0.3.0/dist/luz.min.css">
<script type="module" src="https://cdn.jsdelivr.net/npm/@luz-ds/core@0.3.0/dist/luz.min.js"></script>
<div class="luz-field">
  <label class="luz-field__label" for="f-name">Project name</label>
  <input class="luz-input" id="f-name" type="text" aria-describedby="f-name-help">
  <div class="luz-field__helper" id="f-name-help">Shown on the dashboard.</div>
</div>
<div class="luz-field">
  <label class="luz-field__label" for="f-slug">Slug</label>
  <input class="luz-input luz-input--error" id="f-slug" type="text"
         aria-invalid="true" aria-describedby="f-slug-error">
  <div class="luz-field__error" id="f-slug-error">Use letters, numbers and dashes only.</div>
</div>

الأساس + Core + الكتالوج

موقع كامل مع الكتالوج

ما يحتاجه الموقع كله: البحث فيه، والسؤال عن ملفات تعريف الارتباط، وتبديل اللغة.

  • البحث. حوار يُفتح بـ Ctrl K، وبدون JavaScript هو رابط إلى الفهرس.
  • اللغة والإشعارات. مبدّل لغة وقوائم فرعية وإشعار ملفات تعريف ارتباط لا يغطي شيئًا.
  • الحجم. 58.6 ك.ب مضغوطًا بـ gzip، مع كل ما قبله.
npm
npm install @luz-ds/tokens @luz-ds/core @luz-ds/catalog
CDN
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@luz-ds/tokens@0.3.0/dist/luz-tokens.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@luz-ds/core@0.3.0/dist/luz.min.css">
<!-- One link per catalog component the page uses: here the search -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@luz-ds/catalog@0.3.0/dist/components/search.min.css">
<script type="module" src="https://cdn.jsdelivr.net/npm/@luz-ds/core@0.3.0/dist/luz.min.js"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@luz-ds/catalog@0.3.0/dist/catalog.min.js"></script>
<luz-search>
  <a class="luz-search__fallback" href="../docs/a-z/" data-luz-search-fallback>A–Z</a>
  <button class="luz-search__trigger" type="button" data-luz-search-open hidden>Search</button>
  <dialog class="luz-modal luz-search" id="luz-search"
          data-luz-search-src="/search-index.json">
    <search class="luz-search__body">
      <input class="luz-input" id="luz-search-q" type="text">
      <p class="luz-search__status" role="status"></p>
      <div class="luz-search__results" data-luz-search-results>…</div>
    </search>
  </dialog>
</luz-search>

الأساس + Core + الكتالوج + موجّهك

موقعك كله من موجّه

اختر موجّه نوع موقعك والصقه في الذكاء الاصطناعي الذي تستخدمه. يسألك عمّا تحتاجه، ثم يبني موقعك، أو ينقل موقعك الحالي إلى LUZ.

  • يسأل أولًا. جولات من الأسئلة المرقّمة، تتقدّمها الإجابة التي يوصي بها، ولا يكتب شيئًا حتى توافق.
  • تقنياتك وهويتك. HTML عادي أو Astro أو React أو Vue أو Angular، بألوانك أو بالألوان الافتراضية.
  • يتحقّق في كل خطوة. تنتهي كل خطوة بفحص LUZ وملاحظة قصيرة عمّا لم يستطع التحقّق منه.

نوع آخر من المواقع، أو لم تقرّر بعد؟ الموجّه العام يسأل أولًا.

ابدأ من الصفر

لماذا LUZ

ثلاث كلمات، ووعد واحد.

نظام تصميم للويب ينطلق من CSS ولا يحتاج إلى خطوة بناء. أنماط CSS الخاصة بك تغلب دائمًا، وJavaScript تحسين فقط، وكل صفحة تعمل قبل أن تُحمَّل.

Light

شيفرة قليلة، وبلا خطوة بناء.

  • tokens 3.0 ك.ب
  • core 23.5 ك.ب
  • catalog 32.1 ك.ب
الحزم الأساسية الثلاث: 58.6 ك.ب. الحجم المضغوط لما تنشره كل حزمة، مقيسًا في dist عند بناء هذه الصفحة.

CSS عادية ووحدات ES صغيرة، من شبكة توصيل محتوى أو من npm. لا معالج مسبق ولا مترجم ولا خطوة بناء: ما تقرؤه في الملفات هو بالضبط ما يشغّله المتصفح. يبقى tokens وcore بأصغر حجم ممكن، ولا يُرفع سقف حجمهما أبدًا. أما catalog فخفيف لأنه يأتي قطعًا: كل مكوّن ملف مستقل، ولا تحمّل الصفحة إلا ما تستخدمه.

Usable

إمكانية الوصول هي نقطة البداية، لا إضافة لاحقة.

  • تباين الألوان 100‎%‎
  • مختبر من اليمين لليسار 97‎%‎
  • بلا JavaScript 72‎%‎
  • تركيز خاص 41‎%‎
  • الألوان المفروضة 41‎%‎
  • بلا مشكلات معروفة 45‎%‎
  • اختبارات بلا JavaScript 29‎%‎
29 مكوّنًا، 362 ملف اختبار. يُحسب عند بناء هذه الصفحة؛ ما لا يبلغ 100% مذكور في البيان.

يستهدف WCAG 2.2 AA، وهو مستوى الإصدار 4.1.1 من المعيار الأوروبي EN 301 549 للمنتجات الرقمية المتاحة. ينطلق مما يحسنه المتصفح أصلًا، ويضيف تركيزًا مرئيًا وتباينًا وحركة مخفّضة، ويفحص ذلك بأداة axe في كل تغيير. لا يستوفي كل المعايير بعد: يعرض بيان إمكانية الوصول ما فُحص وما لم يُختبر وما يفشل.

Zero-dependency

شيفرتك أنت، لا شجرة من شيفرة غيرك.

  • أطر CSS 0
  • معالجات CSS المسبقة 0
  • أطر JavaScript 0
  • مكتبات تلوين الشيفرة 0
  • مكتبات الأيقونات 0
  • مكتبات الأدوات المساعدة 0
  • البحث والحركة 0
اعتماديات وقت التشغيل: 0. يُحسب في package.json لكل حزمة عند بناء هذه الصفحة.

تُنشر حزم LUZ بلا اعتماديات: CSS ووحدات ES فقط فوق ما يوفّره المتصفح أصلًا. لا شيء تثبّته لتجربتها، ولا إطار عمل تلاحقه، ولا شيء ينكسر حين تُصدر مكتبة أخرى إصدارًا رئيسيًا جديدًا.

يناسبك

  • مواقع المحتوى والتوثيق والخدمات العامة التي يجب أن تستوفي WCAG 2.1 أو 2.2 AA: يساعد LUZ، والنتيجة عليك أن تختبرها.
  • الصفحات التي تُولَّد على الخادم والمواقع الثابتة، بأي لغة برمجة للخادم.
  • الفرق التي تريد أن تقرأ CSS الخاص بها وتملكه.

لا يناسبك

  • تحتاج إلى مكونات React أو Vue جاهزة.
  • تحتاج إلى جدول بيانات متقدم أو رسوم بيانية أو أداة لاختيار نطاق تواريخ: لا يوفّر LUZ أيًّا منها.
  • تحتاج إلى واجهة برمجية مستقرة اليوم: LUZ في مرحلة تجريبية، وقد تتغير الأسماء.

HTML دلالي بتنسيق جاهز

HTML الذي تكتبه يأتي منسّقًا

اكتب العنصر الذي تقصده وسيمنحه LUZ تنسيقه، بلا أصناف. ابدأ مشروعًا باستخدام LUZ، أو انقل مشروعك صفحةً صفحة: أنماطك تغلب دائمًا.

  • بلا صنف. 68 وسمًا يأتي منسّقًا كما هو، بما فيها النماذج والجداول.
  • صنف واحد. الدور والمكوّن كاملًا: رابط بشكل زر، وزر خطر، وبطاقة.
  • في مشروعك. luz.conditional.css ينسّق ما داخل [data-luz] فقط؛ وبقية صفحتك تبقى كما هي.

21 من 29 مكوّنًا هي CSS فقط؛ والباقي يتحسّن بسكربت ويعمل بدونه.

اعرض كل وسوم HTML
<details open>
  <summary>هل أحتاج إلى أصناف؟</summary>
  <p>لا. يأتي HTML منسّقًا.</p>
</details>
هل أحتاج إلى أصناف؟

لا. يأتي HTML منسّقًا.

بدون LUZ

هل أحتاج إلى أصناف؟

لا. يأتي HTML منسّقًا.

الـ HTML نفسه، مع LUZ

هل أحتاج إلى أصناف؟
فاتح
هل أحتاج إلى أصناف؟
داكن
هل أحتاج إلى أصناف؟
تباين عالٍ
<label for="email">البريد الإلكتروني</label>
<input id="email" type="email"
  value="ana@example.com">
<button>حفظ التغييرات</button>

بدون LUZ

الـ HTML نفسه، مع LUZ

فاتح
داكن
تباين عالٍ
<a class="luz-btn luz-btn--primary"
  href="/docs/">اقرأ التوثيق</a>
<button class="luz-btn luz-btn--danger"
  type="button">احذف المشروع</button>
اقرأ التوثيق

بدون الصنف

اقرأ التوثيق

مع الصنف

فاتح
داكن
تباين عالٍ

أوضاع الألوان

ثلاثة أوضاع للجميع. واليوم كله، إن أردت.

كل لون دلالي معرَّف للوضع الفاتح والداكن والتباين العالي، وسمة واحدة، data-theme، تبدّل بينها: في الصفحة كلها أو في صندوق واحد، مثل هذه. هذا ما يأتي مع core. وبقية اليوم قرارك.

Core · مُضمَّن

وضع الألوان حسب وقت اليوم · Catalog، اختياري

ست لحظات، لا مفتاح واحد

صرّح بلحظات يومك في HTML، من الفجر إلى الليل، ودع القارئ يختار إحداها أو يتنقّل عبر اليوم. يبقى الوضع التلقائي للنظام، والتباين العالي لا يُعاد تلوينه أبدًا.

  • مُقاس، لا مُخمَّن. يُفحص تباين كل لحظة فوق وضعها الأساسي، كما تُفحص الأوضاع الثلاثة.
  • اختياري، صفر بايت. يعيش في catalog: ورقة أنماط واحدة وجزء يُحمَّل عند الحاجة. إن لم تربطه فلن تحمل صفحتك شيئًا منه.
اقرأ توثيق luz-theme-time

أسئلة

الأسئلة الشائعة

إجابات قصيرة عمّا يُسأل عن LUZ: ما هو وكيف يُستخدم.

عن LUZ

What is LUZ?

LUZ is a design system for the web in three parts: tokens, core and the catalog, with prompts so an AI can build the site with you. It lets the browser do the work, checks instead of promising, and an AI can write it without making anything up.

What does each part of LUZ do?

Tokens hold the look, core styles your HTML and gives you components, and the catalog adds what a whole site needs. Tokens are the colors, scales, type and three color modes as CSS custom properties, and they work alone. Core is the reset, the style of every HTML element, the layout objects (o-container, o-stack, o-grid), the components (.luz-btn, .luz-card, .luz-tabs) and a little optional JavaScript. The catalog is pieces for the whole site, like search and the cookie banner.

What makes LUZ different from the systems most people use?

LUZ starts from the browser instead of from a framework: native HTML, no build step, any stack, and it works without JavaScript. Accessibility is checked, not promised: axe tests, every contrast computed in each mode, forced colors and reduced motion. It needs less markup, because HTML comes out complete without classes, and it is customized without a fight, with layers, :where() and tokens, never !important. It is ready for AI in a way you can verify: the prompts are generated from the packages, so they never carry an invented class.

Where does LUZ fall short?

LUZ falls short in community, in complex widgets (a date picker, a combobox, a data table), in components for React or Vue, and in maturity: it is still 0.x.

كيف تُستخدم

What is the best way to use LUZ?

The best way is six steps, with nothing to compile:

  1. Load luz-tokens.css, luz.css and luz.js from the CDN or npm.
  2. Write semantic HTML.
  3. Add a class only for what HTML cannot say, and lay out with core's objects.
  4. Put your brand in with tokens: copy _template.css and change the values.
  5. From the catalog, link only what you use.
  6. JavaScript is optional: everything works without it.

The fast lane: paste the prompt for your kind of site into an AI and review the result with luz-check.

Do I need JavaScript to use LUZ?

No. Most LUZ components are CSS only, and the ones with a script work without it too. The page of each component says what you get without JavaScript.

Can I change the default styles later?

Yes, without fighting them. Tokens are the intended way to change the whole look, and your own CSS wins: LUZ is in cascade layers, so unlayered CSS beats it with no !important. What you do not override stays: change only the color of an h1 and it keeps LUZ's size.

What is LUZ for?

LUZ is for websites written in HTML, new or already built: a landing page, a blog, documentation, a company site. It fits any generator or CMS that produces HTML, Markdown included (Hugo, Astro, Eleventy), projects with no build step, and sites that must be accessible and work without JavaScript. An existing site can move to it piece by piece.

What is LUZ not for?

LUZ is not for utility classes in the style of Tailwind, nor for React or Vue apps that expect their framework's components: LUZ gives HTML and classes. It gives no ready-made page structure (header, hero, footer) either: you write it, or the AI does.

لم تجد سؤالك؟ مزيد من الأسئلة، عن HTML والأصناف وعن المشاريع القائمة