refactor(web): migrate all icons from FontAwesome to Lucide and remove dead code

Replace all FontAwesome icon usage across 80+ Vue files with lucide-vue-next
components. Remove FontAwesome dependencies (@fortawesome/*) and global
registration from main.ts. Delete unused components (data-table, warning-banner,
session-metadata, bot-sidebar/bot-item in home, message-list, tts-provider-select),
dead utilities (channel-icons.ts, custom-icons.ts), and stale assets (vue.svg).
Update AGENTS.md to reflect the new icon strategy.
This commit is contained in:
Acbox
2026-03-29 17:46:33 +08:00
parent d133a85fe3
commit a2941967df
92 changed files with 407 additions and 1629 deletions
-64
View File
@@ -92,21 +92,6 @@ importers:
apps/web:
dependencies:
'@fortawesome/fontawesome-svg-core':
specifier: ^7.0.0
version: 7.2.0
'@fortawesome/free-brands-svg-icons':
specifier: ^7.0.0
version: 7.2.0
'@fortawesome/free-regular-svg-icons':
specifier: ^7.0.0
version: 7.2.0
'@fortawesome/free-solid-svg-icons':
specifier: ^7.0.0
version: 7.2.0
'@fortawesome/vue-fontawesome':
specifier: ^3.1.1
version: 3.1.3(@fortawesome/fontawesome-svg-core@7.2.0)(vue@3.5.26(typescript@5.9.3))
'@memohai/icon':
specifier: workspace:*
version: link:../../packages/icons
@@ -1356,32 +1341,6 @@ packages:
'@floating-ui/vue@1.1.9':
resolution: {integrity: sha512-BfNqNW6KA83Nexspgb9DZuz578R7HT8MZw1CfK9I6Ah4QReNWEJsXWHN+SdmOVLNGmTPDi+fDT535Df5PzMLbQ==}
'@fortawesome/fontawesome-common-types@7.2.0':
resolution: {integrity: sha512-IpR0bER9FY25p+e7BmFH25MZKEwFHTfRAfhOyJubgiDnoJNsSvJ7nigLraHtp4VOG/cy8D7uiV0dLkHOne5Fhw==}
engines: {node: '>=6'}
'@fortawesome/fontawesome-svg-core@7.2.0':
resolution: {integrity: sha512-6639htZMjEkwskf3J+e6/iar+4cTNM9qhoWuRfj9F3eJD6r7iCzV1SWnQr2Mdv0QT0suuqU8BoJCZUyCtP9R4Q==}
engines: {node: '>=6'}
'@fortawesome/free-brands-svg-icons@7.2.0':
resolution: {integrity: sha512-VNG8xqOip1JuJcC3zsVsKRQ60oXG9+oYNDCosjoU/H9pgYmLTEwWw8pE0jhPz/JWdHeUuK6+NQ3qsM4gIbdbYQ==}
engines: {node: '>=6'}
'@fortawesome/free-regular-svg-icons@7.2.0':
resolution: {integrity: sha512-iycmlN51EULlQ4D/UU9WZnHiN0CvjJ2TuuCrAh+1MVdzD+4ViKYH2deNAll4XAAYlZa8WAefHR5taSK8hYmSMw==}
engines: {node: '>=6'}
'@fortawesome/free-solid-svg-icons@7.2.0':
resolution: {integrity: sha512-YTVITFGN0/24PxzXrwqCgnyd7njDuzp5ZvaCx5nq/jg55kUYd94Nj8UTchBdBofi/L0nwRfjGOg0E41d2u9T1w==}
engines: {node: '>=6'}
'@fortawesome/vue-fontawesome@3.1.3':
resolution: {integrity: sha512-OHHUTLPEzdwP8kcYIzhioUdUOjZ4zzmi+midwa4bqscza4OJCOvTKJEHkXNz8PgZ23kWci1HkKVX0bm8f9t9gQ==}
peerDependencies:
'@fortawesome/fontawesome-svg-core': ~1 || ~6 || ~7
vue: '>= 3.0.0 < 4'
'@hey-api/codegen-core@0.7.0':
resolution: {integrity: sha512-HglL4B4QwpzocE+c8qDU6XK8zMf8W8Pcv0RpFDYxHuYALWLTnpDUuEsglC7NQ4vC1maoXsBpMbmwpco0N4QviA==}
engines: {node: '>=20.19.0'}
@@ -5766,29 +5725,6 @@ snapshots:
- '@vue/composition-api'
- vue
'@fortawesome/fontawesome-common-types@7.2.0': {}
'@fortawesome/fontawesome-svg-core@7.2.0':
dependencies:
'@fortawesome/fontawesome-common-types': 7.2.0
'@fortawesome/free-brands-svg-icons@7.2.0':
dependencies:
'@fortawesome/fontawesome-common-types': 7.2.0
'@fortawesome/free-regular-svg-icons@7.2.0':
dependencies:
'@fortawesome/fontawesome-common-types': 7.2.0
'@fortawesome/free-solid-svg-icons@7.2.0':
dependencies:
'@fortawesome/fontawesome-common-types': 7.2.0
'@fortawesome/vue-fontawesome@3.1.3(@fortawesome/fontawesome-svg-core@7.2.0)(vue@3.5.26(typescript@5.9.3))':
dependencies:
'@fortawesome/fontawesome-svg-core': 7.2.0
vue: 3.5.26(typescript@5.9.3)
'@hey-api/codegen-core@0.7.0(typescript@5.9.3)':
dependencies:
'@hey-api/types': 0.1.3(typescript@5.9.3)