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

Used scripts/migrate_fa_to_lucide.py to batch-replace all FontAwesome
<span class="fas fa-*"> icons with Lucide SVG components across the
entire presentation management module (273 icon instances, 69 icon types).

Manual fixes applied post-script:
- presenter_view.svelte: remove duplicate @lucide/svelte Pencil import
- presenter_page_menu.svelte: remove duplicate X from @lucide/svelte import
- ae_comp__event_presenter_obj_tbl.svelte: fix Lucide import inserted
  inside multiline import block (script bug with multiline imports)
- ae_comp__event_session_alert.svelte: same multiline import fix
Script updated with fix: use complete-statement matching for import
insertion instead of single-line matching.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-03-16 14:01:56 -04:00
parent b44e77ad62
commit 8db806c6ab
25 changed files with 514 additions and 300 deletions

View File

@@ -40,6 +40,7 @@
import Presenter_view from './presenter_view.svelte';
import Presenter_page_menu from './presenter_page_menu.svelte';
import MyClipboard from '$lib/app_components/e_app_clipboard.svelte';
import { Archive, FileText, Info, ListChecks, LoaderCircle, Mail, Mails, TriangleAlert, Upload, User, X } from 'lucide-svelte';
// Exports
// export let display_mode: string = 'default'; // 'default', 'compact', 'minimal', 'launcher'
@@ -129,7 +130,7 @@
{#if !$lq__event_presenter_obj}
<div>
<span class="fas fa-spinner fa-spin mx-1"></span>
<LoaderCircle size="1em" class="mx-1 animate-spin" />
<span>Loading presenter information...</span>
</div>
{:else if $lq__event_presenter_obj?.enable || $ae_loc.trusted_access}
@@ -137,7 +138,7 @@
<span
class="flex flex-row flex-wrap gap-1 items-center justify-center"
>
<span class="fas fa-user m-1 text-neutral-800/80"></span>
<User size="1em" class="m-1 text-neutral-800/80" />
<!-- Button to toggle between the regular presenter view and managing presenter files -->
<button
type="button"
@@ -162,18 +163,18 @@
title="View presenter information or manage files for the presenter"
>
{#if $events_loc.pres_mgmt.show_content__presenter_view == 'manage_files'}
<span class="fas fa-info m-1"></span>
<Info size="1em" class="m-1" />
<!-- View Details -->
Presenter Info?
{:else}
<span class="fas fa-file-archive m-1"></span>
<Archive size="1em" class="m-1" />
Presenter Files?
<span
class="badge preset-tonal-success"
class:hidden={!$lq__event_presenter_obj?.file_count}
>
<!-- absolute -top-1.5 -right-1.5 z-10 -->
<span class="fas fa-file-alt m-1"></span>
<FileText size="1em" class="m-1" />
{$lq__event_presenter_obj?.file_count}×
</span>
{/if}
@@ -302,7 +303,7 @@
class="btn btn-sm preset-tonal-secondary border border-secondary-500 hover:preset-filled-secondary-500 m-0.25"
title="Email the access link to the presenter"
>
<span class="fas fa-envelope m-1"></span>
<Mail size="1em" class="m-1" />
Email Access Link
</button>
{/if}
@@ -336,14 +337,14 @@
{/if}
<h3 class="h5 text-center">
<span class="fas fa-tasks m-1 text-neutral-800/80"></span>
<span class="fas fa-mail-bulk m-1 text-neutral-800/80"></span>
<ListChecks size="1em" class="m-1 text-neutral-800/80" />
<Mails size="1em" class="m-1 text-neutral-800/80" />
Manage and Upload Presenter Files
<span
class="badge preset-tonal-success"
class:hidden={!$lq__event_presenter_obj?.file_count}
>
<span class="fas fa-file-alt m-1"></span>
<FileText size="1em" class="m-1" />
{$lq__event_presenter_obj?.file_count}×
</span>
</h3>
@@ -358,7 +359,7 @@
{#snippet label()}
<span>
<div class="text-lg">
<span class="fas fa-upload" aria-hidden="true"></span>
<Upload size="1em" />
<strong class=""
>Upload presenter (speaker) specific files</strong
>
@@ -400,15 +401,14 @@
{:else if $events_loc.pres_mgmt.show_content__presenter_view == 'manage_files' && $ae_loc.authenticated_access}
<div>
<h3 class="h5 text-center">
<span class="fas fa-tasks m-1 text-neutral-800/80"></span>
<span class="fas fa-mail-bulk m-1 text-neutral-800/80"
></span>
<ListChecks size="1em" class="m-1 text-neutral-800/80" />
<Mails size="1em" class="m-1 text-neutral-800/80" />
Manage and Upload Presenter Files
<span
class="badge preset-tonal-success"
class:hidden={!$lq__event_presenter_obj?.file_count}
>
<span class="fas fa-file-alt m-1"></span>
<FileText size="1em" class="m-1" />
{$lq__event_presenter_obj?.file_count}×
</span>
</h3>
@@ -422,7 +422,7 @@
{#snippet label()}
<span>
<div class="text-lg">
<span class="fas fa-upload" aria-hidden="true"></span>
<Upload size="1em" />
<strong class=""
>Upload presenter (speaker) specific
files</strong
@@ -485,8 +485,7 @@
{:else}
<div class="bg-red-100 p-4 border border-red-200 rounded-md">
<h2 class="h3">
<span class="fas fa-exclamation-triangle text-red-500 m-1"
></span>
<TriangleAlert size="1em" class="text-red-500 m-1" />
Presenter Disabled
</h2>
<p>
@@ -516,7 +515,7 @@
}}
class="btn btn-sm preset-tonal-warning hover:preset-tonal-warning border border-warning-500"
>
<span class="fas fa-times m-1"></span>
<X size="1em" class="m-1" />
Close
</button>
</div>

View File

@@ -35,6 +35,7 @@
events_trigger
} from '$lib/stores/ae_events_stores';
import { events_func } from '$lib/ae_events_functions';
import { Check, CheckCircle, LoaderCircle, TriangleAlert, X } from 'lucide-svelte';
let ae_promises: key_val = $state({});
// let ae_tmp: key_val = {};
@@ -165,7 +166,7 @@
{#if !$lq__event_presenter_obj?.agree}
<div class="text-center text-red-500">
<div class="text-red-500">
<span class="fas fa-times text-red-500 m-1"></span>
<X size="1em" class="text-red-500 m-1" />
Not Yet Agreed
</div>
<div class="bg-red-100 p-4 border border-red-200 rounded-md">
@@ -286,12 +287,12 @@
}}
class="btn btn-md preset-tonal-warning border border-warning-500 hover:preset-filled-secondary-500 m-2"
>
<span class="fas fa-check m-1 text-orange-500"></span>
<Check size="1em" class="m-1 text-orange-500" />
Save Opt-Out?
{#await ae_promises.update__event_presenter_obj}
<div class="modal-loading">
<span class="fas fa-spinner fa-spin"></span>
<LoaderCircle size="1em" class="animate-spin" />
<span class="loading-text">
<!-- <ProgressRadial value={undefined} /> -->
Saving...
@@ -300,7 +301,7 @@
{:then update__event_presenter_obj_result}
{#if update__event_presenter_obj_result}
<div class="modal-loading">
<span class="fas fa-check-circle"></span>
<CheckCircle size="1em" />
<span class="loading-text"
>Successfully saved!</span
>
@@ -308,8 +309,7 @@
{/if}
{:catch error}
<div class="modal-loading">
<span class="fas fa-exclamation-triangle"
></span>
<TriangleAlert size="1em" />
<span class="loading-text"
>Error: {error.message}</span
>
@@ -326,7 +326,7 @@
{#if !$lq__event_presenter_obj?.agree}
<div>
Not Agreed:
<span class="fas fa-times text-red-500 m-1"></span>
<X size="1em" class="text-red-500 m-1" />
<!-- <span class="fas fa-question text-red-500 m-1"></span> -->
</div>
<div>
@@ -336,7 +336,7 @@
{:else}
<div>
Agreed:
<span class="fas fa-check text-green-500 m-1"></span>
<Check size="1em" class="text-green-500 m-1" />
Marked as agreed
</div>
{/if}
@@ -392,13 +392,13 @@
{#await ae_promises.update__event_presenter_obj__agree}
<div class="modal-loading">
<span class="fas fa-spinner fa-spin"></span>
<LoaderCircle size="1em" class="animate-spin" />
<span class="loading-text"> Saving... </span>
</div>
{:then update__event_presenter_obj__agree_result}
{#if $events_sess.pres_mgmt.status__presenter_agree}
<div class="modal-loading">
<span class="fas fa-check-circle"></span>
<CheckCircle size="1em" />
<span class="loading-text"
>Successfully saved!</span
>
@@ -406,7 +406,7 @@
{/if}
{:catch error}
<div class="modal-loading">
<span class="fas fa-exclamation-triangle"></span>
<TriangleAlert size="1em" />
<span class="loading-text"
>Error: {error.message}</span
>
@@ -461,18 +461,18 @@
}}
class="btn btn-lg preset-tonal-warning border border-warning-500 hover:preset-filled-error-500 m-2"
>
<span class="fas fa-times m-1 text-orange-500"></span>
<X size="1em" class="m-1 text-orange-500" />
Change to not agreed?
{#await ae_promises.update__event_presenter_obj__agree}
<div class="modal-loading">
<span class="fas fa-spinner fa-spin"></span>
<LoaderCircle size="1em" class="animate-spin" />
<span class="loading-text"> Saving... </span>
</div>
{:then update__event_presenter_obj__agree_result}
{#if $events_sess.pres_mgmt.status__presenter_agree}
<div class="modal-loading">
<span class="fas fa-check-circle"></span>
<CheckCircle size="1em" />
<span class="loading-text"
>Successfully saved!</span
>
@@ -480,7 +480,7 @@
{/if}
{:catch error}
<div class="modal-loading">
<span class="fas fa-exclamation-triangle"></span>
<TriangleAlert size="1em" />
<span class="loading-text"
>Error: {error.message}</span
>

View File

@@ -13,7 +13,7 @@
import { goto } from '$app/navigation';
import { Modal } from 'flowbite-svelte';
import { Settings, X, Info } from '@lucide/svelte';
import { Info, Settings } from '@lucide/svelte';
import {
ae_loc,
@@ -29,6 +29,7 @@
import Element_data_store from '$lib/elements/element_data_store_v3.svelte';
import Comp__events_menu_nav from '../../../../ae_comp__events_menu_nav.svelte';
import AE_Record_Controls from '$lib/ae_elements/AE_Record_Controls.svelte';
import { Check, Pencil, QrCode, X } from 'lucide-svelte';
let show_modal = $state(false);
let show_help = $state(false);
@@ -116,7 +117,7 @@
class="btn btn-sm mx-1 font-bold ae_btn_success_filled"
title="Agreed to terms and conditions"
>
<span class="fas fa-check text-green-500 px-1"></span>
<Check size="1em" class="text-green-500 px-1" />
Agreed
</button>
{:else}
@@ -131,7 +132,7 @@
class="btn btn-sm mx-1 font-bold ae_btn_warning_filled"
title="View terms and conditions"
>
<span class="fas fa-times bg-red-500 text-white px-1 mx-1"></span>
<X size="1em" class="bg-red-500 text-white px-1 mx-1" />
Not yet agreed
</button>
{/if}
@@ -176,7 +177,7 @@
class:ae_btn_surface={$events_loc.pres_mgmt.show_content__presenter_qr}
class:ae_btn_surface_outlined={!$events_loc.pres_mgmt.show_content__presenter_qr}
>
<span class="fas fa-qrcode mr-1"></span>
<QrCode size="1em" class="mr-1" />
{$events_loc.pres_mgmt.show_content__presenter_qr ? 'Hide QR Code' : 'Show QR Code'}
</button>
</div>
@@ -194,7 +195,7 @@
class:ae_btn_warning={$ae_loc.edit_mode}
class:ae_btn_warning_outlined={!$ae_loc.edit_mode}
>
<span class="fas fa-edit mr-1"></span>
<Pencil size="1em" class="mr-1" />
{$ae_loc.edit_mode ? 'Edit Mode On' : 'Edit Mode?'}
</button>
</section>

View File

@@ -1,5 +1,4 @@
<script lang="ts">
import { Pencil } from '@lucide/svelte';
interface Props {
log_lvl?: number;
@@ -45,6 +44,7 @@
events_trigger
} from '$lib/stores/ae_events_stores';
import { events_func } from '$lib/ae_events_functions';
import { Asterisk, BookOpen, Building2, Check, CircleUser, Fingerprint, IdCard, Link, LoaderCircle, Mail, Pencil, Plus, RefreshCw, Save, Tag, Unlink, User, UserCheck, UserRound } from 'lucide-svelte';
// Exports
@@ -141,7 +141,7 @@
{#if $lq__event_presenter_obj}
<h3 class="h5 text-center">
<span class="fas fa-id-card"></span>
<IdCard size="1em" />
<!-- <span class="fas fa-info"></span> -->
Presenter Details
</h3>
@@ -209,7 +209,7 @@
alt="URL QR code"
/>
<span>
<span class="fas fa-link"></span>
<Link size="1em" />
<span>Presenter URL</span>
</span>
<div
@@ -235,7 +235,7 @@
allow_null={true}
on_success={() => events_func.load_ae_obj_id__event_presenter({ api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id, log_lvl: 0 })}
>
<span class="fas fa-id-card"></span>
<IdCard size="1em" />
{$events_loc.pres_mgmt?.label__presenter_external_id ??
'External ID'}:
<span class="font-bold">
@@ -255,8 +255,8 @@
allow_null={true}
on_success={() => events_func.load_ae_obj_id__event_presenter({ api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id, log_lvl: 0 })}
>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-id-card"></span>
<Asterisk size="1em" />
<IdCard size="1em" />
{$events_loc.pres_mgmt?.label__person_external_id ??
'Person External ID'}:
<span class="font-bold">
@@ -278,7 +278,7 @@
class="btn btn-sm preset-tonal-warning group"
title="Use the external ID from this presenter record to overwrite the person record."
>
<span class="fas fa-sync-alt m-0.75"></span>
<RefreshCw size="1em" class="m-0.75" />
<span class="hidden group-hover:inline">Sync</span>
</button>
</div>
@@ -290,7 +290,7 @@
class:hidden={!$ae_loc.trusted_access ||
(!$ae_loc.edit_mode && !$ae_loc.manager_access)}
>
<span class="fas fa-user"></span>
<User size="1em" />
<Element_ae_obj_field_editor_v3
object_type={'event_presenter'}
@@ -322,8 +322,8 @@
{#if $lq__event_presenter_obj.person_given_name != $lq__event_presenter_obj.given_name || $lq__event_presenter_obj.person_family_name != $lq__event_presenter_obj.family_name}
{#if $lq__event_presenter_obj.person_given_name != $lq__event_presenter_obj.given_name}
<div>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-user-circle"></span>
<Asterisk size="1em" />
<CircleUser size="1em" />
given name:
<Element_ae_obj_field_editor_v3
object_type={'person'}
@@ -354,7 +354,7 @@
class="btn btn-sm preset-tonal-warning group transition-all"
title="Use the name from this presenter record to overwrite the person record. Presenter ID: {$lq__event_presenter_obj?.event_presenter_id} to Person ID: {$lq__event_presenter_obj?.person_id}"
>
<span class="fas fa-sync-alt m-0.75"></span>
<RefreshCw size="1em" class="m-0.75" />
<span class="hidden group-hover:inline-block">Sync</span>
</button>
{/if}
@@ -363,8 +363,8 @@
{#if $lq__event_presenter_obj.person_family_name != $lq__event_presenter_obj.family_name}
<div>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-user-circle"></span>
<Asterisk size="1em" />
<CircleUser size="1em" />
family name:
<Element_ae_obj_field_editor_v3
object_type={'person'}
@@ -396,7 +396,7 @@
class="btn btn-sm preset-tonal-warning group"
title="Use the name from this presenter record to overwrite the person record. Presenter ID: {$lq__event_presenter_obj?.event_presenter_id} to Person ID: {$lq__event_presenter_obj?.person_id}"
>
<span class="fas fa-sync-alt m-0.75"></span>
<RefreshCw size="1em" class="m-0.75" />
<span class="hidden group-hover:inline">Sync</span>
</button>
{/if}
@@ -424,7 +424,7 @@
allow_null={true}
on_success={() => events_func.load_ae_obj_id__event_presenter({ api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id, log_lvl: 0 })}
>
<span class="fas fa-envelope"></span>
<Mail size="1em" />
{#if $lq__event_presenter_obj.email}
<span class="font-bold">
<a
@@ -450,8 +450,8 @@
current_value={$lq__event_presenter_obj.person_primary_email}
on_success={() => events_func.load_ae_obj_id__event_presenter({ api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id, log_lvl: 0 })}
>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-envelope"></span>
<Asterisk size="1em" />
<Mail size="1em" />
{#if $lq__event_presenter_obj.person_primary_email}
<span class="font-bold">
<a
@@ -482,7 +482,7 @@
class="btn btn-sm preset-tonal-warning group"
title="Use the email address from this presenter record to overwrite the person record."
>
<span class="fas fa-sync-alt m-0.75"></span>
<RefreshCw size="1em" class="m-0.75" />
<span class="hidden group-hover:inline">Sync</span>
</button>
{/if}
@@ -503,7 +503,7 @@
allow_null={true}
on_success={() => events_func.load_ae_obj_id__event_presenter({ api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id, log_lvl: 0 })}
>
<span class="fas fa-building"></span>
<Building2 size="1em" />
{#if $lq__event_presenter_obj.affiliations && $lq__event_presenter_obj.affiliations.length}
<span class="font-bold">
{$lq__event_presenter_obj.affiliations}
@@ -525,8 +525,8 @@
allow_null={true}
on_success={() => events_func.load_ae_obj_id__event_presenter({ api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id, log_lvl: 0 })}
>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-building"></span>
<Asterisk size="1em" />
<Building2 size="1em" />
<span class="font-bold">
{@html $lq__event_presenter_obj.person_affiliations ??
'affiliations' + ae_snip.html__not_set}
@@ -548,7 +548,7 @@
class="btn btn-sm preset-tonal-warning group"
title="Use the affiliations from this presenter record to overwrite the person record."
>
<span class="fas fa-sync-alt m-0.75"></span>
<RefreshCw size="1em" class="m-0.75" />
<span class="hidden group-hover:inline">Sync</span>
</button>
{/if}
@@ -569,7 +569,7 @@
allow_null={true}
on_success={() => events_func.load_ae_obj_id__event_presenter({ api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id, log_lvl: 0 })}
>
<span class="fas fa-user-tag"></span>
<Tag size="1em" />
{#if $lq__event_presenter_obj.professional_title && $lq__event_presenter_obj.professional_title.length}
<span class="font-bold">
{$lq__event_presenter_obj.professional_title}
@@ -591,8 +591,8 @@
allow_null={true}
on_success={() => events_func.load_ae_obj_id__event_presenter({ api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id, log_lvl: 0 })}
>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-user-tag"></span>
<Asterisk size="1em" />
<Tag size="1em" />
<span class="font-bold">
{@html $lq__event_presenter_obj.person_professional_title &&
$lq__event_presenter_obj.person_professional_title.length
@@ -616,7 +616,7 @@
class="btn btn-sm preset-tonal-warning group"
title="Use the professional title from this presenter record to overwrite the person record."
>
<span class="fas fa-sync-alt m-0.75"></span>
<RefreshCw size="1em" class="m-0.75" />
<span class="hidden group-hover:inline">Sync</span>
</button>
{/if}
@@ -628,7 +628,7 @@
class:hidden={!$ae_loc.trusted_access ||
(!$ae_loc.edit_mode && !$ae_loc.manager_access)}
>
<span class="fas fa-user-check"></span>
<UserCheck size="1em" />
Person link:
<!-- Allow for linking the presenter to a person record. -->
{#if $ae_loc.trusted_access}
@@ -648,11 +648,11 @@
class="text-blue-500 hover:text-blue-800 hover:underline"
title="View Person: {$lq__event_presenter_obj.person_full_name} {$lq__event_presenter_obj.person_id}"
>
<span class="fas fa-link"></span>
<Link size="1em" />
{$lq__event_presenter_obj.person_id}
</a>
{:else}
<span class="fas fa-unlink"></span>
<Unlink size="1em" />
person
{@html ae_snip.html__not_set}
{/if}
@@ -688,7 +688,7 @@
class="btn btn-sm preset-tonal-warning group"
title="Edit the person record linked to this presenter. Presenter ID: {$lq__event_presenter_obj.event_presenter_id}"
>
<span class="fas fa-edit mx-0.75"></span>
<Pencil size="1em" class="mx-0.75" />
<span class="hidden group-hover:inline">Re-link</span>
</button>
{/if}
@@ -745,7 +745,7 @@
class="btn btn-sm preset-tonal-warning group"
title="Sync the person record fields to the presenter record. Person ID: {$lq__event_presenter_obj.person_id} to Presenter ID: {$lq__event_presenter_obj?.event_presenter_id}"
>
<span class="fas fa-sync-alt m-0.75"></span>
<RefreshCw size="1em" class="m-0.75" />
<span class="hidden group-hover:inline"
>Sync Person</span
>
@@ -832,7 +832,7 @@
class="btn btn-sm preset-tonal-warning hover:preset-filled-warning-500"
title="Add a new person based on this presenter. Presenter ID: {$lq__event_presenter_obj?.event_presenter_id}"
>
<span class="fas fa-plus m-.75"></span>
<Plus size="1em" class="m-.75" />
Add Person
</button>
{/if}
@@ -854,8 +854,8 @@
allow_null={true}
on_success={() => events_func.load_ae_obj_id__event_presenter({ api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id, log_lvl: 0 })}
>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-user-secret"></span>
<Asterisk size="1em" />
<UserRound size="1em" />
Passcode:
<span class="font-bold">
{@html $lq__event_presenter_obj.person_passcode ??
@@ -890,8 +890,8 @@
allow_null={true}
on_success={() => events_func.load_ae_obj_id__event_presenter({ api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id, log_lvl: 0 })}
>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-fingerprint"></span>
<Asterisk size="1em" />
<Fingerprint size="1em" />
External System ID:
<span class="font-bold">
{@html $lq__event_presenter_obj.person_external_sys_id ??
@@ -920,7 +920,7 @@
></MyClipboard>
<label for="presenter__biography" class="label">
<span class="fas fa-book"></span>
<BookOpen size="1em" />
Presenter Biography
<span class="text-sm text-gray-500">
(75 to 100 words or 600 character limit)
@@ -1002,12 +1002,12 @@
ae_tmp.biography?.length < 20}
>
{#await ae_promises.update__event_presenter_obj}
<span class="fas fa-spinner fa-spin mx-1"></span>
<LoaderCircle size="1em" class="mx-1 animate-spin" />
{:then}
{#if ae_tmp.biography == $lq__event_presenter_obj.biography}
<span class="fas fa-check mx-1"></span>
<Check size="1em" class="mx-1" />
{:else}
<span class="fas fa-save mx-1"></span>
<Save size="1em" class="mx-1" />
{/if}
{/await}
Save Biography

View File

@@ -41,6 +41,7 @@
} from '$lib/stores/ae_events_stores';
import { events_func } from '$lib/ae_events_functions';
import { ae_util } from '$lib/ae_utils/ae_utils';
import { Check, FileText, ListOrdered, Mail, Plus, RefreshCw, Star, User, UserX, Users, X } from 'lucide-svelte';
$effect(() => {
if (log_lvl) {
@@ -79,7 +80,7 @@
display_mode != 'default'}
title="Refresh the list of presenters"
>
<span class="fas fa-sync-alt m-1"></span>
<RefreshCw size="1em" class="m-1" />
<span class="hidden"> Presenters </span>
</button>
</div>
@@ -100,7 +101,7 @@
class="text-3xl font-bold preset-filled-success-100-900 px-4 rounded-lg"
title="Count {$lq__event_presenter_obj_li.length ?? 'None'}"
>
<span class="fas fa-list-ol mx-4"></span>
<ListOrdered size="1em" class="mx-4" />
{$lq__event_presenter_obj_li.length ?? 'None'}&times;
</span>
{/if}
@@ -137,22 +138,14 @@
title="Person ID: {event_presenter_obj.person_id}; Email: {event_presenter_obj.person_primary_email}"
>
{#if event_presenter_obj?.given_name && event_presenter_obj?.given_name != 'Group'}
<span
class="fas fa-user m-0.5 text-xs text-surface-800-200"
></span>
<User size="1em" class="m-0.5 text-xs text-surface-800-200" />
{:else if event_presenter_obj?.given_name == 'Group'}
<span
class="fas fa-users m-0.5 text-xs text-surface-800-200"
></span>
<Users size="1em" class="m-0.5 text-xs text-surface-800-200" />
{:else}
<span
class="fas fa-user-slash m-0.5 text-xs text-surface-800-200"
></span>
<UserX size="1em" class="m-0.5 text-xs text-surface-800-200" />
{/if}
{#if event_presenter_obj.priority}
<span
class="fas fa-star m-0.5 text-xs text-yellow-800-200"
></span>
<Star size="1em" class="m-0.5 text-xs text-yellow-800-200" />
{/if}
<span class="text-center grow">
{#if event_presenter_obj?.given_name && event_presenter_obj?.given_name != 'Group'}
@@ -172,7 +165,7 @@
class="badge preset-tonal-success hover:preset-filled-success-500"
title="{event_presenter_obj.file_count} files"
>
<span class="fas fa-file-alt mx-1"></span>
<FileText size="1em" class="mx-1" />
{event_presenter_obj?.file_count}×
<!-- {event_presenter_obj?.file_count ? `(${event_presenter_obj?.file_count}&times; files)` : '(0 files)'} -->
</span>
@@ -236,7 +229,7 @@
class:btn-sm={display_mode != 'default'}
title="Email the access link to the presenter"
>
<span class="fas fa-envelope mx-1"></span>
<Mail size="1em" class="mx-1" />
Email Access Link
</button>
{/if}
@@ -268,10 +261,7 @@
class:btn-sm={display_mode != 'default'}
title="Agreed to terms and conditions"
>
<span
class="fas fa-check text-green-500 px-1"
title="Agreed to terms and conditions"
></span>
<Check size="1em" class="text-green-500 px-1" />
Agreed
</button>
{:else}
@@ -300,10 +290,7 @@
class:btn-sm={display_mode != 'default'}
title="View terms and conditions"
>
<span
class="fas fa-times bg-red-500 text-white px-1 mx-1"
title="Not agreed to terms and conditions"
></span>
<X size="1em" class="bg-red-500 text-white px-1 mx-1" />
Not yet agreed
</button>
{/if}
@@ -372,7 +359,7 @@
class:hidden={!$ae_loc.edit_mode}
class="btn btn-sm preset-tonal-warning hover:preset-filled-warning-500"
>
<span class="fas fa-plus mx-1"></span>
<Plus size="1em" class="mx-1" />
Add Person
</button>
{/if}

View File

@@ -31,6 +31,7 @@
slct,
slct_trigger
} from '$lib/stores/ae_stores';
import { FileSpreadsheet, ListOrdered, Mail, Presentation, ToggleLeft, ToggleRight, User } from 'lucide-svelte';
// export let display_mode: string = 'default'; // 'default', 'compact', 'minimal', 'launcher'
// export let link_to_type: string;
@@ -198,7 +199,7 @@
title="Count {$lq__event_presenter_obj_li.length ??
'None'}"
>
<span class="fas fa-list-ol mx-4"></span>
<ListOrdered size="1em" class="mx-4" />
{$lq__event_presenter_obj_li.length ??
'None'}&times;
</span>
@@ -227,7 +228,7 @@
console.log('CSV Data:', csv_data);
}}
>
<span class="fas fa-file-csv mx-1"></span>
<FileSpreadsheet size="1em" class="mx-1" />
Export Presenters CSV
</button>
<span id="download_csv_container"></span>
@@ -243,7 +244,7 @@
: 'ae_btn_surface_outlined'}"
title="Show or hide the session-related column fields."
>
<span class="fas fa-toggle-on m-1"></span>
<ToggleRight size="1em" class="m-1" />
Showing Session Fields
</button>
{:else}
@@ -257,7 +258,7 @@
: 'ae_btn_surface_outlined'}"
title="Show or hide the session-related column fields."
>
<span class="fas fa-toggle-off m-1"></span>
<ToggleLeft size="1em" class="m-1" />
Show Session Fields
</button>
{/if}
@@ -272,7 +273,7 @@
class="btn btn-sm ae_btn_surface"
title="Hide the session code column from view. Currently showing the Session Code column."
>
<span class="fas fa-toggle-on m-1"></span>
<ToggleRight size="1em" class="m-1" />
Showing Session Code
</button>
{:else}
@@ -284,7 +285,7 @@
class="btn btn-sm ae_btn_surface_outlined"
title="Show the session code column. Currently hiding the Session Code column from view."
>
<span class="fas fa-toggle-off m-1"></span>
<ToggleLeft size="1em" class="m-1" />
Show Session Code
</button>
{/if}
@@ -301,7 +302,7 @@
: 'ae_btn_surface_outlined'}"
title="Show or hide the extra presentation-related column fields."
>
<span class="fas fa-toggle-on m-1"></span>
<ToggleRight size="1em" class="m-1" />
Showing Presentation Fields
</button>
{:else}
@@ -316,7 +317,7 @@
: 'ae_btn_surface_outlined'}"
title="Show or hide the extra presentation-related column fields."
>
<span class="fas fa-toggle-off m-1"></span>
<ToggleLeft size="1em" class="m-1" />
Show Presentation Fields
</button>
{/if}
@@ -355,7 +356,7 @@
{#each $lq__event_presenter_obj_li as event_presenter_obj (event_presenter_obj.event_presenter_id)}
<tr class:dim={event_presenter_obj?.hide}>
<td class="px-4 py-2">
<span class="fas fa-user"></span>
<User size="1em" />
<a
href="/events/{event_presenter_obj?.event_id}/presenter/{event_presenter_obj?.event_presenter_id}"
class="text-blue-500 underline hover:text-blue-800"
@@ -365,7 +366,7 @@
</a>
</td>
<td class="px-4 py-2">
<span class="fas fa-envelope"></span>
<Mail size="1em" />
{#if event_presenter_obj?.email}
<a
href="mailto:{event_presenter_obj?.email}"
@@ -393,8 +394,7 @@
'-- not set --'}
</td>
<td class="px-4 py-2 lg:text-xs">
<span class="fas fa-chalkboard-teacher"
></span>
<Presentation size="1em" />
<a
href="/events/{event_presenter_obj?.event_id}/session/{event_presenter_obj?.event_session_id}"
class="text-blue-500 underline hover:text-blue-800"