Skyfeed/docs/API/ui.md

120 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Skyfeed UI API Reference
Leak Technologies — Developer Visual Reference
This document defines how Skyfeed renders Unicode icons and text using the
skyfeed_default theme (black terminal aesthetic). It ensures visual
consistency between the CLI mode and the graphical UI.
----------------------------------------------------------------------
Base Theme Mapping
----------------------------------------------------------------------
Role | Colour | Usage
-------------------|------------|---------------------------------------
Background | #000000 | Terminal canvas, alert frame background
Foreground Text | #E0E0E0 | General text, city name, data values
Primary Accent | #00BFFF | Weather icons, temperature emphasis
Secondary Accent | #FFD300 | Headings, highlights, sun indicators
Advisory / Alert | #FF4040 | Red border and alert messages
Advisory Text | #FFA500 | Amber warning for travel/advisory notices
Font: assets/fonts/Modeseven.ttf (Teletext-style monospace, ~20pt nominal)
Icon scale: Display.IconScale in config (default 4x)
----------------------------------------------------------------------
Layout Overview
----------------------------------------------------------------------
Minimal View
+-------------------------------------------------------------------+
| Cornwall, ON ☀ |
| Updated: 14:05 EST 21°C |
| Clear Sky |
| Feels: 22°C Wind: W 10 km/h RH: 55% |
| Pressure: 101.3 kPa Visibility: 24 km |
+-------------------------------------------------------------------+
- Left column: text data
- Right column: enlarged Unicode weather icon
- Border: red (#FF4040) if an alert is active; black otherwise
Fullscreen View (planned)
Fullscreen will display extended conditions, forecasts, and alerts in a
Teletext-inspired grid using the same colour mapping.
----------------------------------------------------------------------
Weather Icon Colours
----------------------------------------------------------------------
Condition | Symbol | Foreground | Example note
--------------------|--------|-------------|------------------------------
Clear / Sunny | ☀ | #FFD300 | Bright yellow on black
Mostly Cloudy | 🌥 | #00BFFF | Sky blue on black
Rain / Showers | 🌧 | #00BFFF | Blue icon, white text
Snow / Flurries | ❄ | #E0E0E0 | White icon
Freezing Rain | 🧊 | #00FFFF | Cyan tint
Fog / Mist | 🌫 | #AAAAAA | Soft grey
Wind / Gale | 💨 | #00BFFF | Blue accent
Thunderstorm | ⛈ | #FFD300 | Yellow lightning emphasis
Tornado / Funnel | 🌪 | #FF4040 | Red icon
Hail / Ice Pellets | 🧊 | #00FFFF | Cyan tint
----------------------------------------------------------------------
Alert Level Rendering
----------------------------------------------------------------------
Severity | Symbol | Border | Text Colour | Meaning
-----------|--------|----------|--------------|-----------------------------
Warning | ⚠ | #FF4040 | White | Action likely required
Watch | 👁 | #FFA500 | White | Conditions favourable
Advisory | ⚡ | #FFD300 | White | Minor / travel risk
Statement | | #00BFFF | White | Informational
None / OK | ✓ | #00FF00 | White | Normal conditions
When an alert is active:
- The frame border colour reflects severity.
- Alert text appears below the main conditions in the same hue.
----------------------------------------------------------------------
Time and Refresh
----------------------------------------------------------------------
- The window title updates each second, e.g. Skyfeed — 14:27:05
- Weather refresh interval defaults to 15 minutes (RefreshMinutes in config)
----------------------------------------------------------------------
Design Goals
----------------------------------------------------------------------
Principle | Description
-------------------|---------------------------------------------------------
No Branding in UI | Skyfeed presents pure data; branding stays in backend.
MS-DOS Safe | Colours and Unicode symbols render in text-only environments.
Retro-Futuristic | Ceefax / MS-DOS-inspired clarity.
Zero-Distraction | No animations, no bitmap icons; Unicode glyphs only.
B&W Readable | Icons remain legible without colour.
----------------------------------------------------------------------
Developer Integration
----------------------------------------------------------------------
Access icons programmatically:
from src.utils.weather_symbols import get_icon
symbol = get_icon("rain")
Use with theme:
from src.ui.theme import get_color
fg = get_color("fg_primary")
bg = get_color("bg")
Localization:
from src.localization.localization_manager import LocalizationManager
loc = LocalizationManager("fr_CA")
label = loc.get_label("temperature")
----------------------------------------------------------------------
Maintainer: Leak Technologies
Revision: v0.1.0 (November 2025)