Skip to content
palmoni5 edited this page Jul 17, 2026 · 1 revision

מערכת העיצוב (Theme)

כל העיצוב מרוכז ב־lib/theme/ עם barrel export ב־theme_exports.dart. כלל ברזל בפרויקט: אסור צבעים קשיחים (hardcoded) בקבצי פיצ'ר — הכל נגזר מ־Theme.of(context).colorScheme או מהטוקנים שלהלן.

AppThemeData — ‏app_theme_data.dart

  • createColorScheme(seedColor, brightness) — מקור האמת לבניית ColorScheme, מבוסס ColorScheme.fromSeed. צבע seed ניטרלי (רוויה < 0.1) מקבל וריאנט monochrome, אחרת tonalSpot. הפונקציה משמשת גם את האפליקציה וגם את בניית ה־payload לתוספים — כך תוספים מקבלים בדיוק את אותם צבעים.
  • light() / dark() — ערכות Material 3. גופן בסיס Roboto; ‏bodyMedium בגופן candara בגודל 18. מוגדרים theme-ים לכפתורים, TabBar, ‏tooltips, תפריטים (בסגנון Chrome) ודיאלוגים.
  • Hover גלובלי בצבע primary (לא אפור): ‏8% ל־hover, ‏12% ל־pressed/focused. זו הסיבה שאסור להוסיף hoverColor/splashColor/overlayColor בקבצי פיצ'ר — התמה כבר מחשבת הכל.
  • AppMenuMetrics — ‏ThemeExtension לדחיסות תפריטים (מצב תפריט קומפקטי בדסקטופ), עם lerp.

טוקנים

AppTokens — ‏app_tokens.dart

מקור אמת למידות: ריווח (XS=4 עד XL=32), רדיוס אחיד 8 (borderRadiusAll, ‏roundedShape), טיפוגרפיה (fontSM=12 עד fontXL=18), ‏elevation, משכי אנימציה, מידות ידיות גרירה וכרטיסיות פאנל. כולל AppTextStyles לכותרות הגדרות.

AppSeedColors — ‏app_seed_colors.dart

צבעי ה־seed שהמשתמש בוחר מהם, עם שמות עבריים (אדום, כתום, ענבר...). ברירות מחדל: darkBrown למצב בהיר, purple למצב כהה. nameOf(color) מחזיר את השם העברי.

AppColors — ‏app_colors.dart

צבעים קבועים שבמכוון אינם נגזרים מה־ColorScheme: גוני המצב הכהה (darkScaffold=0xFF242424, ‏darkCard, ‏darkAppBar ועוד), dialogBarrier, ו־pageWhite (רקע לבן קבוע לרינדור PDF והדפסה).

AppSurfaces — ‏app_surfaces.dart

רקעים תלויי־הקשר: ‏readerBackground, ‏panelBackground, ‏topBarBackground, ‏card, ‏selectedItem, ‏scrollbarThumb ועוד. זו נקודת ה־override היחידה לרקעים — אם צריך רקע או שקיפות מותאמים, מגדירים כאן ולא בקובץ הפיצ'ר.

layout_tokens.dart

LayoutBreakpoints ‏(compact=600, ‏medium=840, ‏expanded=1200), ‏LayoutPadding, ‏LayoutConstraints (רוחב תוכן מרבי לפאנל 860, רוחב סרגל צד 210).

גופנים — AppFonts (‏app_fonts.dart)

  • ברירות מחדל: FrankRuhlCLM (טקסט ראשי), NotoRashiHebrew (מפרשים), TaameyAshkenaz (עריכה עם טעמי מקרא).
  • תמיכה ב־Variable Fonts — ציר wght עם FontVariation לקבלת בולד אמיתי.
  • טעינת גופני מערכת (SystemFonts) וסיווג serif/sans-serif.

כללי עבודה עם התמה (מ־CLAUDE.md)

  1. אין צבעים קשיחים — רק colorScheme.
  2. אין hoverColor/splashColor/overlayColor/withValues(alpha:) מחוץ ל־lib/theme/ (חריגים: ‏hoverColor: Colors.transparent על ListTile עם כפתורים; צללים; שכבות טעינה).
  3. אייקונים — רק fluentui_system_icons; אייקונים כיווניים דרך RtlIcon.

דפים קשורים

Clone this wiki locally