annie.core.theme¶
Central theme tokens — every colour Annie uses lives here.
Two distinct colour systems are kept apart on purpose:
UI status colours (
STATUS_COLORS) — chrome that conveys a row’s link state in the Dataset summary and Browse list. Referenced by name, never as raw hex inline.Box-drawing colours (
color_for_track()and friends, inannie.color) — colours burned onto the video frames themselves, given in BGR to match the render convention.
Keeping both here means a redesign touches one file.
Attributes¶
App-wide primary/accent colour, applied via NiceGUI's global colour call. |
|
More vivid green, e.g. the "validated" check. |
|
The brand mark — a detection-box bracket enclosing a green validation check. |
|
Teal — linked / complete / usable. |
|
Amber — video only / watchable, annotation off. |
|
Coral — annotation only / nothing to preview. |
|
Grey — totals, secondary text. |
|
Dark green — an accepted clip (button + row-border highlight). |
|
Dark red — a dropped clip (button + row-border highlight). |
|
Grey — the "Undecided" reset button; a clip with no verdict carries no highlight. |
|
Pale green fill behind an accepted clip — the lighter inside of its green border. |
|
Pale red fill behind a dropped clip — the lighter inside of its red border. |
|
The light border every Browse/Annotator row card carries, so its extent is visible. |
|
Per-lane fill colours for timeline event boxes, cycled by the lane's order. |
|
Coral — the vertical playhead line marking the current time across all lanes. |
|
Near-black — the 2px outline of the currently selected event box. |
|
Dark grey — the 1px outline every event box carries, so a pale/pastel fill stays visible |
|
Amber — the translucent band drawn from an event's start to the live playhead while the |
|
Navy blue — vdet-related metrics. |
|
Pastel green — track-related metrics. |
|
Teal — the path exists and was read. |
|
Coral — the configured path is missing. |
|
Violet — distinct from vdet/track/status chips. |
|
Bright blue — has video frames. |
|
Orange — has an audio stream. |
|
White header text/icons, readable on the dark primary header bar. |
|
Status → colour, the single source of truth for the tri-state UI treatment. |
|
Status → short human label shown on pills and summary cards. |
|
Status → Tabler icon name used on cards and pills. |
|
The semantic colour names accepted by |
Functions¶
|
Return the timeline fill colour for a track at vertical position |
|
Return the hex colour for a row status. |
|
Resolve a semantic colour name to its hex value. |
Module Contents¶
- annie.core.theme.PRIMARY = '#006d77'¶
App-wide primary/accent colour, applied via NiceGUI’s global colour call.
- annie.core.theme.ACCENT = '#22c55e'¶
More vivid green, e.g. the “validated” check.
- annie.core.theme.LOGO_MARK_SVG = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" style="width:100%;height:100%"><g...¶
The brand mark — a detection-box bracket enclosing a green validation check.
Matches
docs/assets/logo.svg(mark only, no wordmark) and is used for the app header and the browser-tab favicon. The SVG scales to its container.
- annie.core.theme.SUCCESS = '#2a9d8f'¶
Teal — linked / complete / usable.
- annie.core.theme.WARNING = '#f77f00'¶
Amber — video only / watchable, annotation off.
- annie.core.theme.DANGER = '#d90429'¶
Coral — annotation only / nothing to preview.
- annie.core.theme.NEUTRAL = '#676D78'¶
Grey — totals, secondary text.
- annie.core.theme.DECISION_ACCEPT = '#1b6b52'¶
Dark green — an accepted clip (button + row-border highlight).
- annie.core.theme.DECISION_DROP = '#8b1e2d'¶
Dark red — a dropped clip (button + row-border highlight).
- annie.core.theme.DECISION_UNDECIDED = '#676D78'¶
Grey — the “Undecided” reset button; a clip with no verdict carries no highlight.
- annie.core.theme.DECISION_ACCEPT_TINT = '#e8f3ef'¶
Pale green fill behind an accepted clip — the lighter inside of its green border.
- annie.core.theme.DECISION_DROP_TINT = '#f9eaec'¶
Pale red fill behind a dropped clip — the lighter inside of its red border.
- annie.core.theme.ROW_BORDER = '1px solid #d5d9df'¶
The light border every Browse/Annotator row card carries, so its extent is visible.
- annie.core.theme.EVENT_TRACK_PALETTE: tuple[str, ...] = ('#3a86ff', '#8338ec', '#fb5607', '#2a9d8f', '#e63946', '#606c38')¶
Per-lane fill colours for timeline event boxes, cycled by the lane’s order.
- annie.core.theme.EVENT_PLAYHEAD = '#d90429'¶
Coral — the vertical playhead line marking the current time across all lanes.
- annie.core.theme.EVENT_SELECTED = '#111827'¶
Near-black — the 2px outline of the currently selected event box.
- annie.core.theme.EVENT_BORDER = '#444b54'¶
Dark grey — the 1px outline every event box carries, so a pale/pastel fill stays visible against the white lane (a yellow box on white would otherwise disappear).
- annie.core.theme.EVENT_PENDING = '#f59e0b'¶
Amber — the translucent band drawn from an event’s start to the live playhead while the reviewer is mid-capture (start set, end not yet), and the armed “Set end” button.
- annie.core.theme.event_track_color(ordinal: int) str[source]¶
Return the timeline fill colour for a track at vertical position
ordinal.- Parameters:
ordinal – The lane’s zero-based position from the top.
- Returns:
A hex colour from
EVENT_TRACK_PALETTE, cycled byordinal.
- annie.core.theme.VDET_COLOR = '#1d3557'¶
Navy blue — vdet-related metrics.
- annie.core.theme.TRACK_COLOR = '#40916c'¶
Pastel green — track-related metrics.
- annie.core.theme.AVAILABLE = '#2a9d8f'¶
Teal — the path exists and was read.
- annie.core.theme.UNAVAILABLE = '#d90429'¶
Coral — the configured path is missing.
- annie.core.theme.LABEL_COLOR = '#5a189a'¶
Violet — distinct from vdet/track/status chips.
- annie.core.theme.VIDEO_TAG_COLOR = '#3a86ff'¶
Bright blue — has video frames.
- annie.core.theme.AUDIO_TAG_COLOR = '#fb8500'¶
Orange — has an audio stream.
- annie.core.theme.HEADER_FG = '#ffffff'¶
White header text/icons, readable on the dark primary header bar.
- annie.core.theme.STATUS_COLORS: dict[annie.core.models.RowStatus, str]¶
Status → colour, the single source of truth for the tri-state UI treatment.
- annie.core.theme.STATUS_LABELS: dict[annie.core.models.RowStatus, str]¶
Status → short human label shown on pills and summary cards.
- annie.core.theme.STATUS_ICONS: dict[annie.core.models.RowStatus, str]¶
Status → Tabler icon name used on cards and pills.
- annie.core.theme.status_color(status: annie.core.models.RowStatus) str[source]¶
Return the hex colour for a row status.
- Parameters:
status – One of the
RowStatusvalues.- Returns:
The hex colour string for that status.