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 (Organizations Module)

Module extension of 00-shared/04. Maps module components + screens to M3, tokens, spacing, type, elevation, radius, color, icon, motion.


1. Module component → M3/Flutter/tokens

ComponentM3 roleFlutterTokens (02)ElevationRadius
OrgHeaderCardCard + Rowsurface, onSurfacee-1r-lg 12
StatusBadgeBadge/ChipBadge/ChipprimaryContainer/tertiary/error + icone-0r-full
SettingFieldGroupGrouped fieldColumn + AnimatedSwitchersurfaceContainerLow, outlineVariante-0r-md 8
ColorPickerFieldInput + swatchesTextField + WrapsurfaceVariant fill, outline border, primary focuse-1r-md
DayChipsFilter chipFilterChipselected secondaryContainer / idle surfaceVariante-0r-sm 4
FlagSwitchRowList rowListTile + Switchsurface, onSurfaceVariant trailinge-0
TenantRowList rowListTile 72 + MenuAnchorsurface, primary selectede-0r-md
SlugPreviewInline actionTextButton + Textprimary, monoe-0
OrgSettingsFormTabbed formTabBar + TabBarViewindicator primary

2. Screen-level mapping (tokens)

ScreenBackgroundCardsPrimary CTAIcons (Material Symbols outlined)
S1 OverviewsurfaceAppCard flat surfaceContainerLowtoolbar Edit IconButtonedit, palette, settings, flag, group, chevron_right
S2 Editsurfacefield groups surfaceContainerLowFilledButton "Save changes"arrow_back, schedule, calendar_month
S3 Brandingsurfacepreview AppCard e-2FilledButton "Save branding"palette, upload_file, contrast
S4 Settingssurfaceper-tab formsFilledButton "Save all"event_busy (attendance), school, format_paint
S5 Flagssurfacegrouped rowsswitches onlyflag, expand_more, delete
S6 Memberssurfacerows + invite pageFAB AppFAB.extendedperson_add, more_vert
S7 TenantssurfaceTenantRow(none; row menus)search, filter_list, more_vert, business
S8 Detail/CreatesurfaceS1 cards + status card"Create tenant"/"Save"arrow_back, edit, block, delete, rocket_launch

3. Typography mapping (per element)

ElementTokenWidget
Screen titlesheadlineMedium 28/400/36S1/S8 titles
Card/section headerstitleMedium 16/500/24AppSectionHeader
List row titlestitleMediumTenantRow, member rows
Slug/domain/idsmono 14/400/20slug chips, slug fields
Labels/helperbodyMedium 14/400/20form labels, chip labels
Timestamps/captionsbodySmall 12/400/16"Created 2026-08-01"
BadgeslabelMedium 12/500/16StatusBadge
Buttons/tabslabelLarge 14/500/20CTAs, tabs
Empty statedisplaySmall 36/400/44S5/S7 empty states

4. Spacing (4 dp grid, 00-shared/02 §3)

Screen padding 16 (phone) / 24 (tablet+); card padding 16; card gap 12; section gap 24; form field gap 16; list rows ≥56 (S7 rows 72); toolbar 64; FAB 56.

5. Color roles in module

RoleUsage
primaryCTAs, focus, selected tab, links, selected nav
secondarysuccess snackbars, "use this slug"
tertiaryonboarding banner, warnings (working-day warnings)
errordestructive (delete), validation, error states
primaryContaineractive status badge, primaryContainer tonal CTA
surfaceVariantinput fills, idle chips
Tenant branding override: org branding.primaryColor/settings.theme.primaryColorColorScheme.fromSeed re-derivation (D §7.5); live preview in S3 (proposed wiring).

6. Iconography

Material Symbols outlined 24 dp default; status icons filled (check_circle, pause_circle, block, rocket_launch); empty-state icons 32–40; every icon has tooltip + Semantics.label (D §4, A §7).

7. Motion mapping (module)

Page transition m-base (FadeUpwards Android / Cupertino iOS — D §5); dialog/sheet m-base; hero m-slow; ripple m-fast; stagger m-entrance; skeleton shimmer m-slow loop (reduced-motion static); snackbar m-base.

8. Layout tokens

Master-detail breakpoint 840 dp (S7↔S8); 2-col info grid ≥600 dp (S1); form max-width 720 on desktop (S2/S4); preview column ≥840 dp (S3).

9. Theming rules (enforced, D §7)

  1. No literal colors — tokens only.
  2. No literal spacing/durations — AppSpacing/AppMotion.
  3. Dark mode first-class: surface #141414, cards surfaceContainerLow #1D1B1B, parity QA per 10_QA_Baseline.md §6.
  4. Branding override only touches primary seed; rest derives algorithmically (02 §1).