UI pass: rating widget, issue section headers, ratings verdict column
Finishes the Codex partial (0cdc302) after seeing it rendered.
Rating widget
- Inactive segments go text-ink-2 (ink on hover) so the group recedes
beside serif body copy; the per-verdict tint stays the only colour.
- Hit area: the ::after overlay is positioned against the padding box,
so -inset-y-1/-1.5 only gave 37/41 px. Now -inset-y-1.5/-2 -> 41 px
desktop, 45 px phone.
- focus-visible hugs the segment (z-20, ring-offset-0); the inherited
ring-offset-2 painted a detached box over the neighbouring buttons.
- The note field is a quiet bottom-hairline input everywhere (rule at
rest, ink on focus) instead of a box on reader pages and an invisible
border in tables.
Issue section headers
- The Brief, every section name and Colophon now use one serif
uppercase, letter-spaced mark on a double rule. A sentence-case
text-2xl header was screenshotted first and rejected: it reads as
another headline, which is the problem being fixed.
Ratings table verdict column
- New .rating-cell block: a one-column 15rem grid, segmented group with
clear/cleared flush right, note field beneath on the same width, group
top-aligned with the article title. 13rem cannot hold the labels plus
the wider "cleared" state, so rows wrapped and overlapped the Article
column.
- Drop the dead CurrentRow::verdict field left over from removing the
badge (clippy -D warnings).
Also: reader-page on world/behind so the text-wrap: balance polish item
covers those chapters.
Verified on the dev server at 127.0.0.1:3602 in light and dark, desktop
and 390 px: rating clicks toggle .active/aria-pressed with no navigation
and no console output; note text round-trips; cargo fmt, clippy
--all-targets -D warnings, cargo test (445 lib + integration) and
npm run css:check are clean. See docs/plans/briefs/ui-pass/handoff-rating.md.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MD4VWGq6mGcd8Bg67qyx9k
This commit is contained in:
@@ -344,7 +344,6 @@ struct CurrentRow {
|
||||
feed_title: String,
|
||||
issue_date: String,
|
||||
badge: String,
|
||||
verdict: String,
|
||||
widget: RatingWidget,
|
||||
when: String,
|
||||
source: String,
|
||||
@@ -678,7 +677,7 @@ async fn build_current_rows(
|
||||
.or_insert_with(|| feed_title_for(article.as_ref(), *feed_id));
|
||||
}
|
||||
|
||||
let (badge, verdict) = widget_label(&rating.label);
|
||||
let (badge, _) = widget_label(&rating.label);
|
||||
if filters.label.as_deref().is_some_and(|label| label != badge) {
|
||||
continue;
|
||||
}
|
||||
@@ -715,7 +714,6 @@ async fn build_current_rows(
|
||||
feed_title: rating.feed_title.clone(),
|
||||
issue_date: issue_date.clone(),
|
||||
badge: badge.to_string(),
|
||||
verdict: verdict.to_string(),
|
||||
widget: RatingWidget {
|
||||
article_id: rating.article_id,
|
||||
issue_date,
|
||||
|
||||
Reference in New Issue
Block a user