Phosphor icons: resolve by name via a generated map (T-314)
Replace the 49 hand-maintained named consts with one generated
label→codepoint map (phosphor_glyphs.g.dart, 1512 glyphs from the glyph
table via tool/gen_phosphor_glyphs.dart). Feature code now references
glyphs by their exact kebab-case name — PhosphorIcons.byName('folder') —
with no raw codepoints; this also lets a Lua extension name an icon
without crossing the FFI boundary with a codepoint.
byName is total: an unknown name degrades to the `placeholder` box so the
bug is visible (it's a real error), while phosphor_glyphs_test asserts
every byName('...') literal in lib/ resolves — recovering the typo check a
const gave. Migrated the 89 call sites. Adds EmptyIconPainter for an
intentional blank that still reserves the icon box; ClideFilterBox gains
showIcon to keep the slot aligned when blank.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -51,7 +51,7 @@ class ReaderActionBar extends StatelessWidget {
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
_ActionButton(
|
||||
painter: PhosphorIcons.caretLeft,
|
||||
painter: PhosphorIcons.byName('caret-left'),
|
||||
tooltip: 'Back',
|
||||
enabled: canGoBack,
|
||||
onTap: canGoBack ? onBack : null,
|
||||
@@ -59,7 +59,7 @@ class ReaderActionBar extends StatelessWidget {
|
||||
),
|
||||
const SizedBox(width: 2),
|
||||
_ActionButton(
|
||||
painter: PhosphorIcons.caretRight,
|
||||
painter: PhosphorIcons.byName('caret-right'),
|
||||
tooltip: 'Forward',
|
||||
enabled: canGoForward,
|
||||
onTap: canGoForward ? onForward : null,
|
||||
@@ -68,7 +68,7 @@ class ReaderActionBar extends StatelessWidget {
|
||||
if (hasPinned) ...[
|
||||
const SizedBox(width: 2),
|
||||
_ActionButton(
|
||||
painter: PhosphorIcons.arrowUUpLeft,
|
||||
painter: PhosphorIcons.byName('arrow-u-up-left'),
|
||||
tooltip: 'Jump to pin',
|
||||
enabled: true,
|
||||
onTap: onJumpToPin,
|
||||
@@ -78,7 +78,7 @@ class ReaderActionBar extends StatelessWidget {
|
||||
if (onEdit != null) ...[
|
||||
const SizedBox(width: 4),
|
||||
_ActionButton(
|
||||
painter: PhosphorIcons.pencilSimple,
|
||||
painter: PhosphorIcons.byName('pencil-simple'),
|
||||
tooltip: 'Edit in editor',
|
||||
enabled: true,
|
||||
onTap: onEdit,
|
||||
@@ -103,7 +103,7 @@ class ReaderPinButton extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return _ActionButton(
|
||||
painter: PhosphorIcons.pushPin,
|
||||
painter: PhosphorIcons.byName('push-pin'),
|
||||
tooltip: pinned ? 'Unpin' : 'Pin',
|
||||
enabled: onTap != null,
|
||||
active: pinned,
|
||||
|
||||
Reference in New Issue
Block a user