Maps the Rooms module onto the shared design system. Tokens, components, layouts, and
a11y baselines live in 00-shared/02 (Design Tokens), 00-shared/03 (Component Library),
00-shared/04 (Design System Mapping), and 00-shared/05 (Global IA). This file is the
module's mapping layer only — it does not re-specify shared rules.
Token group (00-shared/02 ) Module use
Color type-tinted icons via colorScheme.primaryContainer variants (proposed); error color reserved for capacity/duplicate errors; no literal colors in widgets
Typography titleMedium card titles, labelMedium code chips, bodyMedium meta, bodySmall captions
Shape shapeMedium cards, shapeFull chips/badges, shapeSmall icon containers
Spacing 16 dp page padding, 8 dp between rows/chips, 24 dp section gaps
Motion m-fast entrance/feedback, m-base transitions (see 10 §7 )
Elevation resting cards level-1, pressed level-2, dialog level-3
Shared component (00-shared/03 ) Module usage
AppAppBarS1/S2/S3 title + actions (Save in S3)
AppSearchBarS1 search (client filter (proposed))
AppChipstype/building filters, facilities, code chip
AppCardRoomCard, detail header
AppListTilemeta rows, availability rows (planned)
AppTextFieldS3 fields, S4 confirm
AppDropdownRoomTypePicker
AppButtonEdit/Delete, dialog actions
AppFABS1 "New room" (gated rooms.create)
AppSkeletonlist/detail/availability loading
AppEmptyStateno rooms, no filters match, not found
AppErrorStatelist/detail retry
AppOfflineBannerconnectivity
AppSnackbarall mutation feedback
AppDialogS4 delete, discard, concurrent-edit (proposed)
AppMenurow/detail actions
Module-specific components (07 ): RoomCard, RoomTypeIcon, CapacityBadge,
FacilityChips, RoomFilterBar, RoomTypePicker, RoomCodeField, FacilityInputChips,
DeleteRoomDialog, QRCodeCard (forward-looking), RoomAvailabilitySection (planned).
Rule Spec
Type identity RoomTypeIcon per enum (room.schema.ts:7-14); consistent tint per type across list/detail/editor
Code prominence code chip = monospace labelMedium on surfaceContainerHighest; distinct from name
Capacity display "Cap N" CapacityBadge; absent capacity → no badge (never "Cap 0")
Building subtitle text with location icon when present
Facilities chips ≤ 2 inline; "+n" expander
Permission gating hidden UI, never disabled-looking buttons for missing perms (per 00-shared/04 )
Empty vs not-found distinct art + copy: "No rooms yet" (list) vs "Room not found" (404 detail)
Breakpoint S1 S2 S3
< 600 dp (phone) single column + FAB single column single column, keyboard-avoiding
600–839 dp (tablet portrait) 2-column grid of cards (proposed) column + sticky actions ≤ 640 dp centered card
≥ 840 dp (tablet/desktop) master-detail split (list + detail pane) pane content centered card
RoomTypeIcon Tint
classroomschool/chair primary
labscience/flask secondary
librarybook tertiary
officebriefcase secondary-variant
hallevent-seat tertiary-variant
otherroom/generic neutral
Rule Module application
Contrast all status/capacity info uses standard tokens (≥ 4.5:1 body)
Touch targets chips ≥ 44 dp hit area; FAB standard; row menus 48 dp
Semantics RoomCard single label; facilities chips labeled individually on S2
Live regions loading announcements, field errors, snackbar content
Focus order S1: search → chips → cards → FAB; S3: F1→F6
Reduced motion respect disableAnimations; error shake → color-only (proposed)