How the module maps to tokens and components of 00-shared/02 (tokens),
00-shared/03 (components), 00-shared/04 (system). No new tokens are invented;
status colors are the only semantic additions and they bind to existing palette
semantics (success/warning/error/neutral).
Domain state Semantics Token class Used on
BookStatus.availablesuccess color-successAvailabilityBadge
BookStatus.borrowedinfo/warning color-infoBook status badge
BookStatus.damaged / losterror color-errorBook status badge (issue disabled)
BorrowStatus.activeinfo color-inforecord chip
BorrowStatus.returnedneutral color-neutralhistory chip
Overdue (derived) error color-error + type-style-dangerOverdueTag
FineStatus.pendingwarning color-warningFineChip
FineStatus.paidsuccess color-successFineChip
FineStatus.waivedneutral color-neutralFineChip
Enum sources: book.schema.ts:7-12, borrow-record.schema.ts:7-18.
UI element Text style (tokens)
Book title (detail) text-headline
Book title (row/card) text-title
Author · ISBN (rows) text-body muted
Metadata (publisher/category/edition/shelf) text-body muted, labeled rows
Availability badge text-label (bold), on color-* surfaces
Due date (active card) text-body emphasized + type-style-danger when overdue
Fine amounts text-label monospace-ish (numbers), tabular figures (proposed)
Info banner (overdue-derived notice) text-caption on info surface
Catalog rows: standard list density (space-sm gutters); cards on wide layouts.
Sheets: standard bottom-sheet padding; forms ≤ 480 dp centered on large screens.
Availability badge: pill shape (shape-pill), size-sm.
Fine summary panel: inset panel elevation-1 with divider.
Icon Meaning Bindings
menu_book / bookcatalog rows, empty state S1/S5
searchsearch bar S1
addFAB "Add book" S1
swap_horiz / assignmentissue/return actions S4/S6
event / calendar_todaydue date display S5
warningoverdue + derived-data banner S7
payments / receiptfine pay S5/S6
check_circlepaid fine chip S5/S6
Shared component Instance(s) in library Module-specific override
AppSearchBarS1 catalog search debounce 300 ms
AppListTileS1 rows (via BookRow) trailing badges
AppCardS5/S7 BorrowRecordCard, S2 header due-date emphasis
AppBadgestatus/availability/fine chips color mapping per §1
AppBottomSheetS4 issue, S6 return non-dismissible while submitting
AppDialogdelete confirm, fine-pay confirm destructive tone on delete
AppFABS1 "Add book" gated by books.create
AppEmptyStateno books / no borrows / 404 per-state copy
AppSkeletonlist + detail loading book-shaped rows
AppOfflineBannerall reads cache fallback
AppDateFieldS4 due date min = tomorrow, default +14 d
AppPickerS4 StudentPicker searchable
AppMenuS2 overflow (Edit/Delete) permission-gated entries
No library-specific theme; all screens consume the global tokens; status colors
derive from existing semantic classes (§1) so dark mode/contrast come free
(00-shared/02 ).
Fine "units" rendering: plain numerals, no currency glyph (no server currency
contract — library.service.ts:25).