feat(header): icon nav redesign + migrate icons mdi→lucide
- Header desktop nav: social icons grouped in a wald-tinted pill with labels, active-state (aria-current + bold), opacity hover (no per-item bg) - Mobile overlay: social links as icon+label rows with active-state - Search button: lucide:search, icon-only - Migrate all icons mdi→lucide app-wide (234 refs); brand/language logos (google, whatsapp, mastodon, telegram, language-*) stay on mdi - generate-icons: emit mdi + lucide subsets; add @iconify-json/lucide - iconify-offline: register lucide collection - scripts/icon-map|validate|apply: reusable migration tooling Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
// mdi -> lucide migration map. Names without a sensible lucide pendant
|
||||
// (brand/language logos) intentionally stay on mdi — listed in KEEP_MDI.
|
||||
export const KEEP_MDI = new Set([
|
||||
'google', 'whatsapp', 'mastodon', // brands missing in lucide
|
||||
'language-javascript', 'language-python', 'language-rust', // language logos
|
||||
]);
|
||||
|
||||
export const MAP = {
|
||||
'account-group-outline': 'users',
|
||||
'alert-circle': 'circle-alert',
|
||||
'alert-circle-outline': 'circle-alert',
|
||||
'arrow-right': 'arrow-right',
|
||||
'arrow-top-right': 'arrow-up-right',
|
||||
'calendar': 'calendar',
|
||||
'calendar-blank': 'calendar',
|
||||
'calendar-clock': 'calendar-clock',
|
||||
'calendar-export': 'calendar-arrow-up',
|
||||
'calendar-month-outline': 'calendar',
|
||||
'calendar-plus': 'calendar-plus',
|
||||
'calendar-search': 'calendar-search',
|
||||
'card-account-details-outline': 'id-card',
|
||||
'check': 'check',
|
||||
'check-circle': 'circle-check',
|
||||
'check-decagram': 'badge-check',
|
||||
'chevron-down': 'chevron-down',
|
||||
'chevron-left': 'chevron-left',
|
||||
'chevron-right': 'chevron-right',
|
||||
'chevron-up': 'chevron-up',
|
||||
'clock-alert-outline': 'alarm-clock',
|
||||
'clock-outline': 'clock',
|
||||
'clock-remove-outline': 'clock-fading',
|
||||
'close': 'x',
|
||||
'cloud': 'cloud',
|
||||
'cloud-off-outline': 'cloud-off',
|
||||
'code-json': 'braces',
|
||||
'comment-outline': 'message-circle',
|
||||
'comment-text-outline': 'message-square-text',
|
||||
'console': 'terminal',
|
||||
'content-copy': 'copy',
|
||||
'content-save-outline': 'save',
|
||||
'cursor-default-click': 'mouse-pointer-click',
|
||||
'cursor-default-click-outline': 'mouse-pointer-click',
|
||||
'database-outline': 'database',
|
||||
'domain': 'building-2',
|
||||
'download': 'download',
|
||||
'download-outline': 'download',
|
||||
'drag-vertical': 'grip-vertical',
|
||||
'email': 'mail',
|
||||
'email-outline': 'mail',
|
||||
'facebook': 'facebook',
|
||||
'file-document-edit-outline': 'file-pen',
|
||||
'file-document-outline': 'file-text',
|
||||
'file-download': 'file-down',
|
||||
'file-excel-box': 'file-spreadsheet',
|
||||
'file-image': 'file-image',
|
||||
'file-outline': 'file',
|
||||
'file-pdf-box': 'file-text',
|
||||
'file-powerpoint-box': 'presentation',
|
||||
'file-word-box': 'file-text',
|
||||
'flag-outline': 'flag',
|
||||
'folder-zip': 'folder-archive',
|
||||
'format-text-variant-outline': 'type',
|
||||
'home': 'house',
|
||||
'home-group': 'house',
|
||||
'home-outline': 'house',
|
||||
'image-outline': 'image',
|
||||
'information-outline': 'info',
|
||||
'link': 'link',
|
||||
'link-variant': 'link',
|
||||
'loading': 'loader-circle',
|
||||
'magnify': 'search',
|
||||
'magnify-plus': 'zoom-in',
|
||||
'map': 'map',
|
||||
'map-marker': 'map-pin',
|
||||
'map-marker-outline': 'map-pin',
|
||||
'map-outline': 'map',
|
||||
'menu': 'menu',
|
||||
'open-in-new': 'external-link',
|
||||
'pencil-outline': 'pencil',
|
||||
'phone': 'phone',
|
||||
'phone-outline': 'phone',
|
||||
'play': 'play',
|
||||
'printer': 'printer',
|
||||
'printer-outline': 'printer',
|
||||
'qrcode': 'qr-code',
|
||||
'refresh': 'refresh-cw',
|
||||
'reply': 'reply',
|
||||
'robot-outline': 'bot',
|
||||
'rss': 'rss',
|
||||
'ruler-square': 'ruler',
|
||||
'share-variant': 'share-2',
|
||||
'share-variant-outline': 'share-2',
|
||||
'shield-check-outline': 'shield-check',
|
||||
'sort-alphabetical-ascending': 'arrow-down-a-z',
|
||||
'transmission-tower': 'radio-tower',
|
||||
'trash-can-outline': 'trash-2',
|
||||
'tune': 'sliders-horizontal',
|
||||
'tune-variant': 'sliders-horizontal',
|
||||
'vector-square': 'square-dashed',
|
||||
'video': 'video',
|
||||
'wind-turbine': 'fan',
|
||||
'xml': 'code',
|
||||
'youtube': 'youtube',
|
||||
};
|
||||
Reference in New Issue
Block a user