style(launcher): Phase 3 — FA→Lucide icon migration across all launcher files

Replaces all FontAwesome <span class="fas/fab fa-*"> with Lucide Svelte
components across 20 launcher files. launcher_cfg_section.svelte icon prop
changed from FA string to AnyComponent (svelte:component for dynamic render).
Dynamic file-extension icon now uses ae_util.file_extension_icon_lucide().
Fixes class: directives on components (invalid in Svelte 5) → ternary class.
Removes title prop from Lucide components → wrapping <span title="...">.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-03-16 12:33:37 -04:00
parent 99df204763
commit efc0f46079
20 changed files with 184 additions and 169 deletions

View File

@@ -63,6 +63,7 @@
events_slct
} from '$lib/stores/ae_events_stores';
import { events_func } from '$lib/ae_events_functions';
import { LoaderCircle, AlertTriangle, AlertCircle, BarChart2, Send, FolderOpen, CalendarDays, Save, Monitor, Laptop } from 'lucide-svelte';
import AE_Comp_Hosted_Files_Download_Button from '$lib/ae_core/ae_comp__hosted_files_download_button.svelte';
@@ -275,15 +276,9 @@
>
{#snippet label()}
{#if screen_saver_exts.includes(event_file_obj.extension)}
<span
class="fas fa-chart-bar m-1"
class:hidden={hide_launch_icon}
></span> Open Poster
<BarChart2 size="1em" class="{hide_launch_icon ? 'hidden' : ''} m-1" /> Open Poster
{:else}
<span
class="fas fa-paper-plane m-1"
class:hidden={hide_launch_icon}
></span>
<Send size="1em" class="{hide_launch_icon ? 'hidden' : ''} m-1" />
{ae_util.shorten_filename({
filename: event_file_obj.filename,
max_length: max_filename_length
@@ -303,7 +298,7 @@
{@const file_id = event_file_obj.hosted_file_id}
<span class="shrink text-xs border-r border-gray-400 pr-1">
{#await ae_promises[event_file_id]}
<span class="fas fa-spinner fa-spin mx-0.5"></span>
<LoaderCircle size="1em" class="inline animate-spin mx-0.5" />
<span>
{#if $ae_sess.api_download_kv[file_id]}
{$ae_sess.api_download_kv[file_id]
@@ -313,23 +308,17 @@
{/if}
</span>
{:then result}
<span
class="fas fa-{ae_util.file_extension_icon(
event_file_obj.extension
)} mx-0.5"
></span>
{@const FileIcon = ae_util.file_extension_icon_lucide(event_file_obj.extension)}
<svelte:component this={FileIcon} size="1em" class="inline mx-0.5" />
{event_file_obj.extension}
{#if result === null || result === false}
<span class="text-error-500"
><span
class="fas fa-exclamation-triangle mx-1"
></span>Failed!</span
><AlertTriangle size="1em" class="inline mx-1" />Failed!</span
>
{/if}
{:catch error}
<span class="text-error-500" title={error?.message}
><span class="fas fa-exclamation-circle mx-0.5"
></span>Error!</span
><AlertCircle size="1em" class="inline mx-0.5" />Error!</span
>
{/await}
</span>
@@ -383,20 +372,16 @@
class:preset-tonal-warning={event_file_obj?.open_in_os == 'mac'}
disabled={!$ae_loc.trusted_access}
>
{#if event_file_obj?.open_in_os == 'win'}<span
class="fab fa-windows m-1"
></span>
{:else if event_file_obj?.open_in_os == 'mac'}<span
class="fab fa-apple m-1"
></span>
{:else}<span class="fas fa-folder-open m-1"></span>{/if}
{#if event_file_obj?.open_in_os == 'win'}<Monitor size="1em" class="m-1" />
{:else if event_file_obj?.open_in_os == 'mac'}<Laptop size="1em" class="m-1" />
{:else}<FolderOpen size="1em" class="m-1" />{/if}
</button>
<span
class="event_file_created_on text-xs text-center flex flex-row gap-1 items-center justify-end w-24 md:w-44 preset-filled-surface-100-900 rounded px-1 py-0.5"
class:hidden={hide_created_on}
>
<span class="fas fa-calendar-day"></span>
<CalendarDays size="0.85em" class="inline" />
<span class="w-18"
>{ae_util.iso_datetime_formatter(
event_file_obj.created_on,
@@ -409,7 +394,7 @@
class="event_file_size text-xs text-center flex flex-row gap-1 items-center justify-end preset-filled-surface-100-900 w-22 max-w-28 rounded py-0.5"
class:hidden={hide_size}
>
<span class="fas fa-save"></span>
<Save size="0.85em" class="inline" />
{#if event_file_obj.file_size}{ae_util.format_bytes(
event_file_obj.file_size
)}{/if}