Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

11 — Design System Mapping (Settings Module)

Settings module → Material 3 / Flutter / token mapping, extending 00-shared/04. Every color, type, spacing, elevation, radius, icon, motion reference traces to 00-shared/02_Design_Tokens.md.


1. Theme recipes (module)

ScreensThemeException
Settings list (hub)standard shell (surface)dirty rows primaryContainer tint; type chips surfaceVariant
Setting detail/editorsstandard shellJSON editor surfaceVariant fill; error error outline
Batch modestandard shellbottom bar surfaceContainerHigh, e-3
Cross-link bannerAppBanner(info)primaryContainer
Empty/not-found statessurfaceAppEmptyState tokens

2. Widget → token

ComponentM3 / FlutterTokensElevRadius
Setting row cardAppCard flatsurfaceContainerLowe-0r-md
Dirty rowAppCard tonalprimaryContainer / onPrimaryContainere-0r-md
Type chipAppBadgesurfaceVariant / onSurfaceVariantr-sm
Group chipsFilterChipselected secondaryContainer, unselected surfaceVariantr-sm
Key textTextmono, titleMedium
Value previewTextbodyMedium onSurfaceVariant, 1-line ellipsis
Editors (string/number)AppTextFieldfill surfaceVariant, border outline, focus primary, error errorr-md
JSON editorTextFormField monosame; valid primary check, invalid errorr-md
Boolean rowSwitchListTileswitch primary
Save buttonFilledButtonprimary/onPrimaryr-md
Batch barMaterial + FilledButtonsurfaceContainerHigh, e-3e-3
Delete confirmAppDialogsurfaceContainerHigh, destructive errore-4r-lg
FAB (new setting)FloatingActionButton.extendedprimaryContainere-3r-full
Cross-link bannerMaterialBannerprimaryContainere-1

3. Typography mapping

TokenScreen element
headlineMedium"Settings" screen title
titleLargedetail key header, dialog titles
titleMediumsection headers ("Attendance (12)"), row keys (mono)
bodyMediumvalue preview, labels, helper text
bodySmallmeta footer (created/version), "Nothing in this group", JSON error line
labelLargebuttons, group chip labels
monokeys, JSON editor, numeric values

Numerals (versions, counts) use FontFeature.tabularFigures() (00-shared/02 §2).

4. Iconography

Material Symbols outlined; module map: settings, tune, school (academic), event_available (attendance), grading, notifications (notification), palette (theme), manage_search (general), add, content_copy, delete, check_circle, error, chevron_right, data_object (JSON).

Group → icon map (leading icon per group):

GroupIcon
academicschool
attendanceevent_available
gradinggrading
notificationnotifications
themepalette
generalmanage_search

5. Motion tokens (values 00-shared/02 §6)

PurposeTokenApplied to
Save → resultm-basesnackbar/check swap
Dirty dot pop / clearm-fastrow indicator
Row delete exitm-basefade-out
Batch bar entrancem-entrancebottom bar
Chip indicatorm-basegroup chips
Editor errorm-fastoutline/message swap (no shake)
List entrancem-entrance stagger 40 msfirst paint

Rules: reduced-motion substitutes fades/instants (00-shared/08 §4).

6. Contrast & dark parity

  • All text ≥ 4.5:1; interactive chrome ≥ 3:1 (00-shared/09 §2).
  • Dark: dirty tint primaryContainer dark variant (TBD by designer, 02 §1.4); JSON editor fill surfaceVariant; type chips readable (onSurfaceVariant).
  • No sole-color status: dirty = dot + "unsaved" semantics; saved = snackbar + check; type = chip label (never color-only, 00-shared/09 §9).

7. Breakpoint behaviour

ClassListDetail
phone <600single pane, chips scroll horizontallypushed page
600–839list full width; detail sheet-like pushpush
840–1199master-detail two-pane (list ≤ 480)right pane
≥1200master-detail; hover rings; keyboard shortcutsright pane

8. Cross-surface brand override

Org branding.primaryColor/settings.theme.primaryColor (organization.schema.ts:108-120) re-seeds the ColorScheme at runtime (00-shared/04 §7.5) — the Settings hub renders under the same overridden theme; a theme group value change takes effect on next theme reload (proposed wiring).