Skip to content

feat(widgets): one header for every widget; quieter refresh rings and buttons - #348

Merged
jherforth merged 1 commit into
jherforth:mainfrom
mrramam:feat/widget-header
Oct 27, 2026
Merged

jherforth merged 1 commit into
jherforth:mainfrom
mrramam:feat/widget-header

Conversation

@mrramam

@mrramam mrramam commented Oct 27, 2026

Copy link
Copy Markdown
Collaborator

Calendar, Chores, Weather and Photos each drew their own header: emoji in
some titles, centered in one, a solid all-caps Add Chore, emoji toggle chips,
gears in different places. They now share WidgetHeader: an icon in the
accent, the title, then the actions at the right end as quiet outlined icon
buttons, with at most one labeled main action, tinted rather than solid.
Toggles mark their state with aria-pressed. Titles follow the theme's heading
font and transform.

  • Buttons are sentence case by default. A theme that sets headingTransform
    still gets its own.
  • The refresh ring sits at 30% between refreshes, and shows at full strength
    on hover, on keyboard focus, and for a moment after each refresh. Tapping
    it still refreshes, and themes' meter tokens still style it.
  • index.css has the same header for plugins (.hg-widget-header and friends),
    documented in the plugin guide. Its main button follows the theme's heading
    transform, like the dashboard's own buttons.
  • New labels for icon-only buttons (calendar and photo settings, photo
    controls, chore sounds, prize store), in English and Spanish.

… buttons

Calendar, Chores, Weather and Photos each drew their own header: emoji in
some titles, centered in one, a solid all-caps Add Chore, emoji toggle chips,
gears in different places. They now share WidgetHeader: an icon in the
accent, the title, then the actions at the right end as quiet outlined icon
buttons, with at most one labeled main action, tinted rather than solid.
Toggles mark their state with aria-pressed. Titles follow the theme's heading
font and transform.

- Buttons are sentence case by default. A theme that sets headingTransform
  still gets its own.
- The refresh ring sits at 30% between refreshes, and shows at full strength
  on hover, on keyboard focus, and for a moment after each refresh. Tapping
  it still refreshes, and themes' meter tokens still style it.
- index.css has the same header for plugins (.hg-widget-header and friends),
  documented in the plugin guide. Its main button follows the theme's heading
  transform, like the dashboard's own buttons.
- New labels for icon-only buttons (calendar and photo settings, photo
  controls, chore sounds, prize store), in English and Spanish.
@jherforth
jherforth merged commit 293736c into jherforth:main Oct 27, 2026
3 checks passed
@github-project-automation github-project-automation Bot moved this from Backlog to Done in HomeGlow Kanban Oct 27, 2026
jherforth added a commit to mrramam/HomeGlow that referenced this pull request Oct 27, 2026
Resolves the icon import in ChoreWidget.jsx against jherforth#348's header: its
icons and WidgetHeader import, plus this branch's AccessTime and
NotificationsNoneOutlined. Settings as SettingsIcon goes, since jherforth#348
removed its last use.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mrramam
mrramam deleted the feat/widget-header branch October 28, 2026 02:39
adamecker pushed a commit to adamecker/HomeGlow that referenced this pull request Oct 28, 2026
…herforth#349

Brings the prod line to latest upstream at Adam's request:
one header for every widget + quieter refresh rings/buttons
(jherforth#348), and rows for calendar events and chores (jherforth#349).
Client-only changes; no server or migration impact.
@jherforth jherforth added the enhancement New feature or request label Oct 28, 2026
@jherforth jherforth added this to the 1.11 milestone Oct 28, 2026
mrramam pushed a commit that referenced this pull request Oct 28, 2026
The theme guide's token table left out --hg-heading-transform and
--hg-heading-letter-spacing, and nothing said that mui.headingTransform and
--hg-heading-transform cover different halves: core widgets are MUI, plugins
are CSS. Since #348, buttons default to sentence case and plugins share the
widget header, so a theme that sets only one gets core and plugin headers
that don't match.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants