1# llimphi-icons
2
3The canonical set of vector icons for tawasuyu apps.
4
5Every icon is a pure function returning a `BezPath` defined on a logical grid of
6**24×24 units**. The renderer scales it to whatever rect it gets, so the same
7icon serves at 12px (in a list row) and at 64px (in a hero card) with no loss of
8sharpness — it is vector, not bitmap.
9
10## Design
11
12- **Stroke-based, not filled**: icons are strokes of width 2 (in grid units) with
13 soft joins and caps. The stroke is rendered in whatever colour the app chooses
14 (typically `theme.fg_text` or `theme.accent`).
15- **Minimal geometry, not a logo**: universal generic glyphs, not "trademarks".
16 Each one must be recognizable at a glance even at 12×12.
17- **A bounded set**: enough to cover the bulk of actions and types appearing in
18 any tawasuyu UI. If an app needs one more, it adds it here (not in its own
19 crate) — visual consistency matters more than isolation.
20
21## Catalog
22
23| Category | Icons |
24|------------|-----------------------------------------------------|
25| Document | `file`, `folder`, `folder_open`, `save`, `open` |
26| Editing | `plus`, `minus`, `x`, `check`, `edit`, `trash` |
27| Navigation | `chevron_up`, `chevron_down`, `chevron_left`, `chevron_right`, `home`, `search` |
28| Status | `info`, `warning`, `error`, `bell` |
29| System | `settings`, `more` |
30| Multimedia | `play`, `pause`, `stop`, `skip_*`, `volume*`, `repeat`, `shuffle`, `record`, `equalizer`, `camera`, `gauge` |
31| Files | `image`, `music`, `film`, `archive`, `code`, `file_text`, `link`, `font` |
32
33## Use
34
35```ignore
36use llimphi_icons::{Icon, icon_view};
37
38// A button with the "save" icon:
39let btn = View::new(style)
40 .fill(palette.bg_button)
41 .children(vec![icon_view(Icon::Save, palette.fg_text, 1.6)]);
42```
43
44The `stroke_width` parameter (3rd argument of `icon_view`) is in grid units
45(24×24). `1.6` is the harmonious default; `2.0` for emphasis; `1.2` for icons
46next to small type.
47
48---
49
50Part of **llimphi** — see [llimphi](../README.md).
README.md
llimphi-icons
The canonical set of vector icons for tawasuyu apps.
Every icon is a pure function returning a BezPath defined on a logical grid of
24×24 units. The renderer scales it to whatever rect it gets, so the same
icon serves at 12px (in a list row) and at 64px (in a hero card) with no loss of
sharpness — it is vector, not bitmap.
Design
- Stroke-based, not filled: icons are strokes of width 2 (in grid units) with
soft joins and caps. The stroke is rendered in whatever colour the app chooses
(typically
theme.fg_text or theme.accent).
- Minimal geometry, not a logo: universal generic glyphs, not "trademarks".
Each one must be recognizable at a glance even at 12×12.
- A bounded set: enough to cover the bulk of actions and types appearing in
any tawasuyu UI. If an app needs one more, it adds it here (not in its own
crate) — visual consistency matters more than isolation.
Catalog
| Category | Icons |
| Document | file, folder, folder_open, save, open |
| Editing | plus, minus, x, check, edit, trash |
| Navigation | chevron_up, chevron_down, chevron_left, chevron_right, home, search |
| Status | info, warning, error, bell |
| System | settings, more |
| Multimedia | play, pause, stop, skip_*, volume*, repeat, shuffle, record, equalizer, camera, gauge |
| Files | image, music, film, archive, code, file_text, link, font |
Use
use llimphi_icons::{Icon, icon_view};
// A button with the "save" icon:
let btn = View::new(style)
.fill(palette.bg_button)
.children(vec![icon_view(Icon::Save, palette.fg_text, 1.6)]);
The stroke_width parameter (3rd argument of icon_view) is in grid units
(24×24). 1.6 is the harmonious default; 2.0 for emphasis; 1.2 for icons
next to small type.
Part of llimphi — see llimphi.