icons: restore inline-SVG link/gear icons, share them across all three pages

Fixes a regression + a longer-standing inconsistency (mara: "agent
page link icons is different from swarm ui, settings icon looks weird
since component extract").

- The `SettingsMenu` shared-component extraction swapped swarm-ui's
  original inline-SVG gear trigger for a plain `⚙` text glyph (matching
  agent's `MetaNav`, which was itself still on the `🔗` emoji at the
  time). An emoji/text glyph is rendered by the OS/browser's own font
  at that font's fixed metrics — it can never match a neighbouring
  icon in size or weight, and some codepoints (the gear included)
  aren't even reliably covered by every font.
- New `@hive/shared/icons.js` (`GearIcon`, `LinkIcon`) — the exact SVG
  markup that used to live only in swarm-ui's `SettingsMenu`/
  `LinksMenu` as two separate inline copies, now the one shared source.
- `SettingsMenu` (shared) uses `GearIcon`; agent's `MetaNav` and
  swarm-ui's `LinksMenu` both use `LinkIcon` — three consumers, one
  rendering path, matching stroke/viewBox/size everywhere.

Verified with real screenshots on both agent and swarm-ui — both
trigger icons render as the same crisp line-icon style now.
This commit is contained in:
iris 2026-08-29 11:50:00 +02:00 committed by mara
commit 4175ae86e3
5 changed files with 84 additions and 27 deletions

View file

@ -41,6 +41,7 @@
"./badge.css": "./src/badge/Badge.css",
"./dropdown.js": "./src/dropdown/Dropdown.tsx",
"./dropdown.css": "./src/dropdown/Dropdown.css",
"./icons.js": "./src/icons.tsx",
"./settings-storage.js": "./src/settings/settings-storage.ts",
"./theme-apply.js": "./src/settings/theme-apply.ts",
"./motion-apply.js": "./src/settings/motion-apply.ts",