מערכת עיצוב מרכזית · central-systems/design · P0.5

מערכת העיצוב

מקור אמת יחיד לכל ערך עיצובי בכלכלן. כל צבע, גודל וקומפוננטה בעמוד הזה נקראים ישירות מתוך tokens.ts. Tailwind נטען מאותו מודול, ולכן utility ו-token אינם יכולים להיפרד.

יסודות

הפלטה היא פלטת SPETZ (הכרעת פרדריק, 19.9.2026, כ41); הסימן: האות כ׳ בכחול טריום עם זכוכית מגדלת ירוקה (הכרעת פרדריק, 20.9.2026). הטיפוגרפיה היא Heebo, ו-Assistant כגופן משני למסמכים; שתי משפחות עבריות שנטענות self-hosted דרך next/font.

לוגו

הסימן (BrandMark) במקום האות הראשונה, ואחריו «לכלן». בהמתנה הזכוכית קוראת את הספרים.

לכלן

משפחת גופנים

Heebo · עברית + לטינית · משני: Assistant

אבגדהוזחטי

Aa Bb Cc 0123

fallback: Heebo · var(--font-assistant) · Assistant

כיוון

עברית תחילה

RTL

תחילת שורה: right · סוף שורה: left

צבע

הצבעים סמנטיים: פיצ׳ר מבקש surface.subtle או text.muted, אף פעם לא hex. שים לב לפיצול הגבולות — decorative לקווים דקורטיביים בלבד, interactive לכל פקד שהמשתמש מפעיל.

משטחים ופעולה

surface.base

#FFFFFF

surface.subtle

#F4F4F4

surface.raised

#FFFFFF

surface.inverted

#0056A7

action.primary

#1863DC

action.primaryHover

#0056A7

action.soft

#E6EFFB

text.default

#212121

text.muted

#4E4B66

גבולות

border.decorative

#D0D5D2 · 1.49:1 על הקנבס

קווים דקורטיביים בלבד. נכשל WCAG 1.4.11 ולכן אסור לשמש כגבול של פקד.

border.interactive

#8A8798 · 3.50:1 על הקנבס · 3.18:1 על subtle

גבול של כל פקד: input, select, checkbox. עובר את סף 3:1.

מצבים

#0E7A3C

state.success

#8A5A00

state.warning

#B42318

state.danger

#00629E

state.info

צבעי המותג

ארבעת הגוונים של הסמל. הם זהות, לא מצב — עמודה ירוקה אומרת «הקטגוריה הזו», ולעולם לא «זה תקין». לכל גוון שתי צורות: fill לסימון גרפי (נמדד ב-3:1) ו-text למילים (4.5:1). הם אינם אותו ערך.

accent.blue

accent.blue

#0C78C0 · #0C74BA

accent.sky

accent.sky

#2096CB · #1A77A2

accent.green

accent.green

#0C9048 · #0B8040

accent.lime

accent.lime

#6C992D · #567A24

חוזה ניגודיות

כל צמד צבעים שהמערכת מתירה, עם היחס הנמדד בזמן ריצה. אותה רשימה בדיוק נבדקת ב-contrast.test.ts, כך ששינוי token לא יכול לשבור WCAG AA בשקט.

כל 57 הצמדים עוברים WCAG 2.1 AA
טבלת יחסי ניגודיות לכל צמד צבעים סמנטי במערכת
צמדקריטריוןנדרשנמדדתוצאה
text.default on surface.baseDefault body copy on the page canvas1.4.34.5:116.10:1עובר
text.default on surface.subtleBody copy inside tinted panels1.4.34.5:114.64:1עובר
text.muted on surface.baseHelper text, captions, input descriptions1.4.34.5:18.33:1עובר
text.muted on surface.subtleHelper text inside tinted panels1.4.34.5:17.57:1עובר
text.default on surface.raisedBody copy inside a card1.4.34.5:116.10:1עובר
text.muted on surface.raisedHelper text inside a card1.4.34.5:18.33:1עובר
text.link on surface.raisedLinks inside a card (the door cards on the home page)1.4.34.5:15.44:1עובר
text.link on surface.baseInline links, tertiary buttons1.4.34.5:15.44:1עובר
text.link on surface.subtleInline links inside tinted panels1.4.34.5:14.95:1עובר
text.linkHover on surface.baseLink hover / active state1.4.34.5:17.27:1עובר
text.link on action.softActive tab-bar item, "due" chip, selected row (kit 19.9.2026)1.4.34.5:14.69:1עובר
text.default on action.softBody copy on a primary-tinted row1.4.34.5:113.88:1עובר
text.onPrimary on action.primaryLabel of the primary button1.4.34.5:15.44:1עובר
text.onPrimary on action.primaryHoverLabel of the primary button while hovered/active1.4.34.5:17.27:1עובר
text.onInverted on surface.invertedCopy on inverted bands (hero, footer)1.4.34.5:17.27:1עובר
border.interactive on surface.baseInput/select/checkbox border on the page canvas1.4.113.0:13.50:1עובר
border.interactive on surface.subtleInput/select/checkbox border inside tinted panels1.4.113.0:13.18:1עובר
border.interactive on surface.raisedInput/select/checkbox border inside a card (where the forms live)1.4.113.0:13.50:1עובר
border.strong on surface.baseEmphasised control border (hover/filled)1.4.113.0:18.33:1עובר
border.focus on surface.baseFocus ring on the page canvas1.4.113.0:15.44:1עובר
border.focus on surface.subtleFocus ring inside tinted panels1.4.113.0:14.95:1עובר
state.success.fg on surface.basesuccess message text1.4.34.5:15.43:1עובר
state.success.fg on state.success.softsuccess banner (tinted background)1.4.34.5:14.84:1עובר
state.success.border on surface.basesuccess banner / control edge1.4.113.0:15.43:1עובר
text.onPrimary on state.success.fgLabel of a solid success button1.4.34.5:15.43:1עובר
text.onPrimary on state.success.strongLabel of a solid success button while hovered/active1.4.34.5:18.13:1עובר
state.warning.fg on surface.basewarning message text1.4.34.5:15.93:1עובר
state.warning.fg on state.warning.softwarning banner (tinted background)1.4.34.5:15.39:1עובר
state.warning.border on surface.basewarning banner / control edge1.4.113.0:15.93:1עובר
text.onPrimary on state.warning.fgLabel of a solid warning button1.4.34.5:15.93:1עובר
text.onPrimary on state.warning.strongLabel of a solid warning button while hovered/active1.4.34.5:18.40:1עובר
state.danger.fg on surface.basedanger message text1.4.34.5:16.57:1עובר
state.danger.fg on state.danger.softdanger banner (tinted background)1.4.34.5:15.75:1עובר
state.danger.border on surface.basedanger banner / control edge1.4.113.0:16.57:1עובר
text.onPrimary on state.danger.fgLabel of a solid danger button1.4.34.5:16.57:1עובר
text.onPrimary on state.danger.strongLabel of a solid danger button while hovered/active1.4.34.5:19.21:1עובר
state.info.fg on surface.baseinfo message text1.4.34.5:16.48:1עובר
state.info.fg on state.info.softinfo banner (tinted background)1.4.34.5:15.64:1עובר
state.info.border on surface.baseinfo banner / control edge1.4.113.0:16.48:1עובר
text.onPrimary on state.info.fgLabel of a solid info button1.4.34.5:16.48:1עובר
text.onPrimary on state.info.strongLabel of a solid info button while hovered/active1.4.34.5:19.20:1עובר
accent.blue.fill on surface.baseblue as a chart bar / category swatch on the canvas1.4.113.0:14.70:1עובר
accent.blue.fill on surface.subtleblue as a mark inside a panel1.4.113.0:14.28:1עובר
accent.blue.text on surface.baseblue as words on the canvas1.4.34.5:14.97:1עובר
accent.blue.text on surface.subtleblue as words inside a panel1.4.34.5:14.52:1עובר
accent.sky.fill on surface.basesky as a chart bar / category swatch on the canvas1.4.113.0:13.34:1עובר
accent.sky.fill on surface.subtlesky as a mark inside a panel1.4.113.0:13.04:1עובר
accent.sky.text on surface.basesky as words on the canvas1.4.34.5:14.99:1עובר
accent.sky.text on surface.subtlesky as words inside a panel1.4.34.5:14.54:1עובר
accent.green.fill on surface.basegreen as a chart bar / category swatch on the canvas1.4.113.0:14.12:1עובר
accent.green.fill on surface.subtlegreen as a mark inside a panel1.4.113.0:13.74:1עובר
accent.green.text on surface.basegreen as words on the canvas1.4.34.5:15.03:1עובר
accent.green.text on surface.subtlegreen as words inside a panel1.4.34.5:14.57:1עובר
accent.lime.fill on surface.baselime as a chart bar / category swatch on the canvas1.4.113.0:13.37:1עובר
accent.lime.fill on surface.subtlelime as a mark inside a panel1.4.113.0:13.06:1עובר
accent.lime.text on surface.baselime as words on the canvas1.4.34.5:14.99:1עובר
accent.lime.text on surface.subtlelime as words inside a panel1.4.34.5:14.54:1עובר

חריגים מתועדים

  • border.decorative on surface.base (light)1.49:1

    Ornamental hairline only. Never draws the boundary of an operable control, use border.interactive for that.

טיפוגרפיה

סולם אחד לכל המערכת. גובה השורה בברירת מחדל הוא 1.6 — עברית צריכה יותר אוויר מלטינית.

ספֵּצdisplay-md · 2.75rem
כותרת ראשיתheadline-lg · 2rem
כותרת משנהheadline-sm · 1.5rem
כותרת כרטיסtitle-lg · 1.25rem
טקסט גוף מורחבbody-lg · 1.125rem
טקסט גוף רגילbody-md · 1rem
טקסט משניbody-sm · 0.875rem
תוויתlabel-md · 0.75rem

מרווח, רדיוס וצל

בסיס 4px. הרדיוסים והצללים מדורגים כדי שהיררכיית העומק תישאר עקבית בין מסכים.

מרווח

  • 1 · 0.25rem
  • 2 · 0.5rem
  • 3 · 0.75rem
  • 4 · 1rem
  • 6 · 1.5rem
  • 8 · 2rem
  • 12 · 3rem

רדיוס

  • sm · 0.25rem
  • md · 0.5rem
  • lg · 0.75rem
  • xl · 1rem
  • 2xl · 1.25rem
  • full · 9999px

צל

  • shadow-sm
  • shadow-card
  • shadow-md
  • shadow-lg

focus: 0 0 0 3px rgba(24, 99, 220, 0.35)

קומפוננטות

הסט המינימלי שדרוש כדי לבנות מסך: Button, Input, Card. לכל אחת variants ומצבי disabled / focus / error מוגדרים מראש.

Button

כל הגדלים עומדים ביעד המגע של 44px (WCAG 2.5.5 / ת"י 5568). sm מצמצם ריפוד וגודל טקסט בלבד — לא גובה.

Input

השם כפי שהוא מופיע באתר שלך

Card

default

קו דק + הרמה קלה

flat

ללא צל, לשימוש בתוך מיכל מורם

subtle

הפרדה ע״י גוון בלבד

as="a"

כרטיס-יעד — עובר לפרק הנגישות

לנגישות →

כרטיס לחיץ חייב להיות button או a אמיתי. <div role="button" tabIndex={0}> נשמע כמו כפתור לקורא מסך אבל לא מגיב ל-Enter/Space (הפרת WCAG 4.1.2 ו-2.1.1), ובנוסף מוחק את הכותרת שבתוכו מעץ הנגישות. לכן as גם משדרג אוטומטית ל-variant interactive.

StageTrack

  1. שלב שהושלם, הושלם
  2. שלב שמתבצע, מתבצע כעת
  3. שלב שדולג, דולג
  4. שלב שנכשל, שגיאה
  5. שלב שממתין, ממתין

מסלול השלבים של כל ריצה מרובת-שלבים. הפס מתמלא מתחת לשלב שהושלם, סימן המותג מסתובב בשלב המתבצע, והווי מצטייר. המצב נאמר תמיד במילה אחרי השם, לא בצבע ולא בתנועה, ותחת prefers-reduced-motion הכול קופץ למצב הסופי.

שפת התיק

חמישה פרימיטיבים מתיק העיצוב (19.9.2026): צ'יפ למצב, מספר מסכם לפני הפירוט, קיבוץ לפי מצב, ראש כרטיס ישות ומצב ריק. כאן הם מורכבים כמו במסך עבודה.

Stat פריט אחד = אריח, שניים ומעלה = שורה (הכרעת פרדריק, D11).

מקורות מחכים לעדכון ידני
הושלמו
23
פתוחות
4
באיחור
1

Chip שישה טונים, כולם מילוי פסטל עם טקסט של אותו גוון; אף פעם לא לבן על צבע.

דחוףבתהליךהושלםלצפייהעד 9 ביוליקטגוריה

EntityHeader ראשי תיבות, שם, שורת מטא, והפעולה יורדת לשורה משלה ב-320.

כהן אחזקות בע"מ

חברה בע"מ · לקוח פעיל

ListGroup נקודה, כותרת ומונה; בנייד הקבוצות נערמות, בדסקטופ הן עמודות.

לביצוע, 2

דוח מע"מ יוני

כהן אחזקות בע"מ

דחוףעד היום, 15:00

מקדמות מס הכנסה

ר.נ ייעוץ

עד 15 ביולי

בתהליך, 1

דוח שנתי 2025

י.מ. הנדסה בע"מ · רות

בעבודהעד 30 ביולי

הושלם, 0

אין משימות שהושלמו השבוע

פותח את הספרים…

כיווניות

האפליקציה עברית תחילה, אבל הכיוון הוא ערך שקוראים — לא הנחה שמקובעת בתגיות. ה-hook מתרגם מושגים לוגיים (התחלה/סוף, הבא/הקודם) לפיזיים.

מצב נוכחי

direction
rtl
start / end
right / left
flip(24)
-24
arrowStep("ArrowLeft")
1
arrowStep("ArrowRight")
-1

תכונות לוגיות

משתמשים ב-ms/me ולא ב-ml/mr, ב-text-start ולא ב-text-left

הפס הצבעוני יושב בתחילת השורה — מימין ב-RTL, משמאל ב-LTR — בלי שורת JavaScript אחת.

The same markup inside a dir="ltr" subtree flips automatically.

נגישות

הפרימיטיבים שכל מסך יורש: דילוג לתוכן, טבעת פוקוס אחידה, טקסט לקוראי מסך, וכיבוד העדפת תנועה מופחתת.

דילוג לתוכן

WCAG 2.4.1

לחצו Tab מתחילת העמוד — הקישור נחשף בפינה העליונה וקופץ אל #main-content.

טבעת פוקוס

WCAG 2.4.7 · 1.4.11

2px בצבע border.focus עם 2px offset, דרך:focus-visible בלבד — 5.44:1 מול הקנבס.

טקסט לקוראי מסך

.sr-only

השורה הבאה מוסתרת חזותית אך נקראת:זהו טקסט שמיועד לקוראי מסך בלבד ואינו מוצג על המסך.

תנועה מופחתת

prefers-reduced-motion

כשההעדפה פעילה במערכת ההפעלה, כל האנימציות והמעברים מנוטרלים גלובלית ב-globals.css.