Skip to content

Commit 15b7680

Browse files
committed
Polish dashboard layouts, agenda, queues, and component discovery
1 parent 8d1cc2c commit 15b7680

38 files changed

Lines changed: 251 additions & 126 deletions

data/component-examples.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,31 @@
55
"title": "Reading a snapshot",
66
"body": "A snapshot records what was known at a point in time. Check the source dates before using it to make a decision.",
77
"span": "full"
8+
},
9+
{
10+
"id": "release-sequence",
11+
"kind": "timeline",
12+
"title": "A release in three steps",
13+
"span": "full",
14+
"items": [
15+
{
16+
"label": "Monday · 09:00",
17+
"title": "Review the candidate",
18+
"description": "Check the proposed changes and the validation results.",
19+
"tone": "neutral"
20+
},
21+
{
22+
"label": "Tuesday · 10:00",
23+
"title": "Publish the reviewed version",
24+
"description": "Record the exact version so it can be traced later.",
25+
"tone": "info"
26+
},
27+
{
28+
"label": "Wednesday · 09:00",
29+
"title": "Check the outcome",
30+
"description": "Compare the observed behavior with the release goal.",
31+
"tone": "positive"
32+
}
33+
]
834
}
935
]

data/examples/news/briefing/2026-08-24.json

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -122,15 +122,15 @@
122122
"id": "n4",
123123
"title": "Local-first tools add portable encrypted exports",
124124
"description": "Users can move durable records without giving the application permanent custody of their history.",
125-
"meta": "Privacy \u00b7 Product design",
125+
"meta": "Privacy · Product design",
126126
"tone": "neutral",
127127
"href": "https://example.com/local-first-exports"
128128
},
129129
{
130130
"id": "n5",
131131
"title": "Schema registries become a coordination layer for AI workflows",
132132
"description": "Teams are separating durable facts from model-specific presentation decisions.",
133-
"meta": "AI systems \u00b7 Engineering",
133+
"meta": "AI systems · Engineering",
134134
"tone": "neutral",
135135
"href": "https://example.com/schema-registries"
136136
}
@@ -139,21 +139,23 @@
139139
},
140140
{
141141
"id": "watch",
142-
"kind": "timeline",
142+
"kind": "list",
143143
"title": "Questions worth checking",
144144
"span": "one",
145145
"items": [
146146
{
147-
"label": "Portability",
148147
"title": "Can you export your data?",
149148
"description": "Look for a documented export format before adopting a new tool.",
150-
"tone": "neutral"
149+
"tone": "neutral",
150+
"id": "question-1",
151+
"meta": "Portability"
151152
},
152153
{
153-
"label": "Privacy",
154154
"title": "Is access private by default?",
155155
"description": "Check the actual access settings, not only the product description.",
156-
"tone": "neutral"
156+
"tone": "neutral",
157+
"id": "question-2",
158+
"meta": "Privacy"
157159
}
158160
]
159161
}

data/examples/review/weekly/2026-08-24.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
},
7171
"data": {
7272
"title": "Weekly review",
73-
"summary": "Review August 17\u201323 before planning the next week. You recorded 18 focus blocks and 19 interruptions. Thursday had the most focus blocks; this alone does not establish what caused the difference.",
73+
"summary": "Review August 17–23 before planning the next week. You recorded 18 focus blocks and 19 interruptions. Thursday had the most focus blocks; this alone does not establish what caused the difference.",
7474
"attention": "low",
7575
"facts": {
7676
"outcomes": [
@@ -104,7 +104,7 @@
104104
},
105105
{
106106
"id": "two-reply-windows",
107-
"label": "Try reply windows at 08:00 and 16:00",
107+
"label": "Try two reply windows, adjusted around explicit deadlines",
108108
"status": "neutral",
109109
"evidence_snapshot_ids": ["inbox:attention:2026-08-24", "overview:daily:2026-08-24"]
110110
}
@@ -137,7 +137,7 @@
137137
"id": "focus-trend",
138138
"kind": "line-chart",
139139
"title": "Focus through the week",
140-
"description": "Daily recorded counts, August 17\u201323. Focus blocks and interruptions are different measures, not hours.",
140+
"description": "Daily recorded counts, August 17–23. Focus blocks and interruptions are different measures, not hours.",
141141
"span": "two",
142142
"series": [
143143
{
@@ -210,14 +210,14 @@
210210
{
211211
"id": "n1",
212212
"title": "Reserve Monday, Wednesday, and Friday mornings",
213-
"description": "Try keeping two hours free on three mornings, then compare next week\u2019s recorded focus.",
213+
"description": "Try keeping two hours free on three mornings, then compare next week’s recorded focus.",
214214
"status": "Calendar",
215215
"tone": "positive"
216216
},
217217
{
218218
"id": "n2",
219219
"title": "Set two inbox windows",
220-
"description": "Reply at 08:00 and 16:00 so messages do not interrupt the 08:30 focus block.",
220+
"description": "Use two bounded reply windows, moving one earlier whenever a message has an explicit deadline. Today’s renewal answer is due at 15:00 UTC.",
221221
"status": "Boundary",
222222
"tone": "info"
223223
}

docs/design-system.md

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,21 @@ Zaati OS helps someone understand their day and decide what deserves attention.
44

55
## Shared frame
66

7-
All pages use the same available content width and 16/24/32px responsive gutters. The sidebar is 256px wide on desktop. `dashboard`, `focus`, and `timeline` change the internal column arrangement, never the outer page width. Three-column dashboards begin at 1280px; smaller screens stack blocks to protect readable card widths. Long paragraphs can have a readable line length inside that frame.
7+
All pages use the same content frame, capped at 1600px, with 16/24/32px responsive gutters. The sidebar is 256px wide on desktop. `dashboard`, `focus`, and `timeline` change the internal column arrangement, never the outer page width. Three-column dashboards begin at 1280px; smaller screens stack blocks to protect readable card widths. Long paragraphs can have a readable line length inside that frame.
88

99
The instance's `enabled_sources` order controls navigation. The daily overview comes first in the example instance. Setup and Component lab sit below the everyday pages. The demo opens on Today and offers the tour from Start here instead of interrupting the first visit. Demo freshness is evaluated at the clearly labeled example date; personal instances continue using the real clock.
1010

1111
## Visual language
1212

13-
- Neutral white/charcoal surfaces, quiet gray borders, and flat cards.
13+
- White/charcoal cards on a quiet neutral workspace surface, subtle borders, and flat content panels.
1414
- Palette colors belong to charts, actions, and meaningful status indicators. Do not tint the entire workspace.
1515
- Page titles: 24–30px, medium weight. Section titles: 16px, medium. Body: 14px with comfortable line height. Metrics: 24–32px tabular numerals.
1616
- A connected metric strip uses separators, not a stack of colored cards. Values get emphasis through size, not a different background per metric.
1717
- Keep the page title and summary concise. Use ordinary labels such as Agenda, Inbox, and Money. Avoid slogans and motivational claims.
1818
- Static cards do not lift or cast hover shadows. Controls retain obvious focus and hover states.
1919

20+
The editorial font option applies serif typography to headings while retaining sans-serif navigation, controls, and data. Short supporting lists, progress panels, and text fit their content instead of stretching to the height of a neighboring chart or calendar. Metric panels can still share the height of their paired chart.
21+
2022
Owned shadcn-compatible primitives live in `src/components/ui/`. Use their shared Card, Button, Input, Dialog, Tabs, Badge, and Progress composition. Preserve semantic tokens and the component generator contract.
2123

2224
## Page composition
@@ -83,3 +85,19 @@ Reviewed September 6, 2026. These are composition references and published guida
8385
| [PatternFly dashboard guidelines](https://www.patternfly.org/patterns/dashboard/design-guidelines/) | Start from requirements and user tasks | Define the question each page answers before choosing its components |
8486

8587
The specific widths, typography, and page recipes above are Zaati design decisions informed by those references. No paid template code, third-party fonts, telemetry, new chart library, or snapshot-controlled markup is introduced.
88+
89+
## Page review, September 6
90+
91+
| Page | Treatment | Content check |
92+
| ------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
93+
| Today | Connected metrics, chronological agenda, numbered attention queue | Deadlines remain visible beside the requested response |
94+
| Agenda | Date tile, timezone, separate start/end labels, duration and location | All-day events stay separate from timed durations; events sort chronologically |
95+
| Inbox | Numbered response queue, count badges, compact waiting panel | Waiting does not imply a reply is needed |
96+
| Work | Spacious task rows with stronger item names and status filters | Exact next steps remain beside the task |
97+
| Money | Balance history with shared metric panel, compact supporting goals | Provisional prices and balance-versus-return distinction remain visible |
98+
| Briefing | Ranked reading rows and a separate questions list | Questions are not presented as a chronological sequence |
99+
| Weekly review | Recorded counts, chart, bounded experiments and evidence | Reply-window suggestions defer to explicit deadlines |
100+
| Start here | Same frame and active navigation treatment | Three setup steps remain the entry point |
101+
| Component lab | shadcn category tabs, intersecting text search, visible result count | Empty results and clipboard failure have explicit feedback |
102+
103+
Queue numbering continues through expanded items. Static notices, calendar events, and timeline markers do not lift or grow on hover. The component catalog uses the existing shadcn Tabs and Input primitives; no new runtime dependencies or snapshot fields are required.
13.2 KB
Loading
12.5 KB
Loading
10.4 KB
Loading
11.2 KB
Loading
5 KB
Loading
5.55 KB
Loading

0 commit comments

Comments
 (0)