style: FA→Lucide migration — events misc, badges, leads, hosted_files; variant-* fixes

- Batch-migrated 10 files via migrate_fa_to_lucide.py (53+18+10+1+4+2+1+1+6+4 FA instances)
  - events/ae_comp__events_menu_opts.svelte (53)
  - events/ae_comp__event_file_obj_tbl.svelte (18)
  - events/ae_comp__event_presentation_obj_li.svelte (10)
  - events/ae_comp__event_session_obj_tbl.svelte (1)
  - badges/print_list/+page.svelte (2), badges/templates/+page.svelte (1)
  - leads/ae_tab__manage.svelte (4)
  - hosted_files/+page.svelte (1), hold_video_util.svelte (6), video_util/+page.svelte (4)
- events/[event_id]/+page.svelte: converted JS icon strings to Lucide component refs
  (Presentation, Plane, IdCard, Contact) — rendered via <mod.icon size="2rem" />
- +page.svelte: hover:variant-outline-warning → hover:preset-outlined-warning (×2)
- migrate_fa_to_lucide.py: added 18 new icon mappings
  (ArrowLeft/Right, Ban, Broom→Trash2, calendar-alt, Database, DoorOpen, Download,
   exchange-alt, file-image, lock, magic→Sparkles, print, sticky-note, sync, tag,
   trash, user-ninja/tie→UserRound, video)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-03-16 14:25:18 -04:00
parent 31fe26df9c
commit 478dedb898
13 changed files with 134 additions and 121 deletions

View File

@@ -5,6 +5,7 @@
import { events_slct } from '$lib/stores/ae_events_stores';
import Comp_badge_obj_view from '../[badge_id]/ae_comp__badge_obj_view_v2.svelte';
import type { ae_EventBadge } from '$lib/types/ae_types';
import { ArrowLeft, Printer } from 'lucide-svelte';
interface Props {
data: any; // PageData from SvelteKit
@@ -79,10 +80,10 @@
<div class="print-button my-4">
<button type="button" class="btn btn-primary" onclick={trigger_print}>
<span class="fas fa-print mr-2"></span> Print Badges
<Printer size="1em" class="mr-2" /> Print Badges
</button>
<a href={`/events/${event_id}/badges`} class="btn btn-tertiary ml-2">
<span class="fas fa-arrow-left mr-2"></span> Back to Search
<ArrowLeft size="1em" class="mr-2" /> Back to Search
</a>
</div>

View File

@@ -6,6 +6,7 @@
import { events_slct } from '$lib/stores/ae_events_stores';
import { Modal } from 'flowbite-svelte';
import Comp_badge_template_form from './ae_comp__badge_template_form.svelte';
import { Plus } from 'lucide-svelte';
interface Props {
data: any; // PageData from SvelteKit
@@ -88,7 +89,7 @@
class="btn btn-primary"
onclick={() => (show_create_template_modal = true)}
>
<span class="fas fa-plus mr-2"></span> Add New Template
<Plus size="1em" class="mr-2" /> Add New Template
</button>
</div>

View File

@@ -13,19 +13,7 @@
import Comp_exhibit_license_list from './ae_comp__exhibit_license_list.svelte';
import Comp_exhibit_custom_questions from './ae_comp__exhibit_custom_questions.svelte';
import Comp_exhibit_payment from './ae_comp__exhibit_payment.svelte';
import {
Store,
Settings,
Lock,
Info,
MessageSquare,
CreditCard,
Key,
Users,
ChevronRight,
ChevronDown,
LogOut
} from 'lucide-svelte';
import { ChevronDown, ChevronRight, Clock, CreditCard, Database, Info, Key, Lock, LogOut, MessageSquare, RefreshCw, Settings, Store, UserX, Users } from 'lucide-svelte';
const exhibit_id = $derived(page.params.exhibit_id ?? '');
@@ -365,7 +353,7 @@
<div class="flex items-center justify-between">
<div class="text-[10px] uppercase font-black opacity-40 tracking-widest">Data Synchronization</div>
<div class="flex items-center gap-2 text-[10px] font-mono opacity-60">
<span class="fas fa-clock"></span>
<Clock size="1em" />
{#if $events_sess.leads.last_refresh_time}
Last: {new Date($events_sess.leads.last_refresh_time).toLocaleTimeString()}
{:else}
@@ -397,14 +385,14 @@
<div class="text-[10px] uppercase font-black opacity-40 tracking-widest">Maintenance & Reset</div>
<div class="grid grid-cols-2 gap-2">
<button class="btn btn-sm preset-filled-warning" onclick={() => window.location.reload()}>
<span class="fas fa-sync mr-2"></span> Reload App
<RefreshCw size="1em" class="mr-2" /> Reload App
</button>
<button class="btn btn-sm preset-outlined-error" onclick={() => {
if(confirm('Clear all local cached data (IDB)?')) {
db_events.delete().then(() => window.location.reload());
}
}}>
<span class="fas fa-database mr-2"></span> Clear IDB
<Database size="1em" class="mr-2" /> Clear IDB
</button>
<button class="btn btn-sm preset-outlined-error col-span-2" onclick={() => {
if(confirm('Reset all local app settings and sign out?')) {
@@ -412,7 +400,7 @@
window.location.reload();
}
}}>
<span class="fas fa-user-slash mr-2"></span> Clear Local Settings (Hard Reset)
<UserX size="1em" class="mr-2" /> Clear Local Settings (Hard Reset)
</button>
</div>
</div>

View File

@@ -1,6 +1,6 @@
<script lang="ts">
import { liveQuery } from 'dexie';
import { Wrench } from '@lucide/svelte';
import { Wrench, Presentation, Plane, IdCard, Contact } from '@lucide/svelte';
import { db_events } from '$lib/ae_events/db_events';
import { ae_util } from '$lib/ae_utils/ae_utils';
import { events_slct } from '$lib/stores/ae_events_stores';
@@ -21,7 +21,7 @@
{
name: 'Presentation Management',
path: 'pres_mgmt',
icon: 'fas fa-chalkboard-teacher',
icon: Presentation,
description: 'Manage sessions, presentations, and presenters.',
color: 'preset-filled-primary-200-800',
access: 'authenticated_access'
@@ -29,7 +29,7 @@
{
name: 'Launcher',
path: 'launcher',
icon: 'fas fa-plane',
icon: Plane,
description: 'Launch presentations and manage live session display.',
color: 'preset-filled-secondary-200-800',
access: 'authenticated_access'
@@ -37,7 +37,7 @@
{
name: 'Badges',
path: 'badges',
icon: 'fas fa-id-badge',
icon: IdCard,
description: 'Manage and print event badges.',
color: 'preset-filled-tertiary-200-800',
access: 'authenticated_access'
@@ -45,7 +45,7 @@
{
name: 'Leads',
path: 'leads',
icon: 'fas fa-address-card',
icon: Contact,
description: 'Exhibitor lead retrieval and management.',
color: 'preset-filled-success-200-800',
access: 'authenticated_access'
@@ -85,7 +85,7 @@
class="card card-hover p-6 flex flex-col items-center text-center space-y-4 transition-transform hover:scale-105 bg-surface-100 dark:bg-surface-800 border border-surface-200 dark:border-surface-700 shadow-lg"
>
<div class="p-6 rounded-full {mod.color} text-white text-4xl">
<span class={mod.icon}></span>
<mod.icon size="2rem" />
</div>
<h3 class="text-2xl font-bold">{mod.name}</h3>
<p class="opacity-80">{mod.description}</p>