From 7f6e286b73408c71ccf008d03e192b96061327e1 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Tue, 24 Mar 2026 12:13:59 -0400 Subject: [PATCH] Prettier for Event Launcher --- .../[event_id]/(launcher)/+layout.svelte | 22 +- .../launcher_cfg_app_modes.svelte | 236 ++- .../launcher_cfg_controller.svelte | 85 +- .../cfg_components/launcher_cfg_health.svelte | 151 +- .../launcher_cfg_local_actions.svelte | 222 +-- .../launcher_cfg_native_os.svelte | 218 ++- .../launcher_cfg_screen_saver.svelte | 60 +- .../launcher_cfg_section.svelte | 141 +- .../launcher_cfg_sync_timers.svelte | 134 +- .../launcher_cfg_template.svelte | 210 ++- .../launcher_cfg_updates.svelte | 123 +- .../(launcher)/launcher/+layout.svelte | 1373 ++++++++--------- .../(launcher)/launcher/+page.svelte | 90 +- .../launcher/[event_location_id]/+page.svelte | 131 +- .../launcher/[event_location_id]/+page.ts | 3 +- .../launcher_background_sync.svelte | 1033 +++++++------ .../[event_id]/(launcher)/launcher_cfg.svelte | 214 ++- .../(launcher)/launcher_file_cont.svelte | 524 ++++--- .../(launcher)/launcher_menu.svelte | 267 ++-- .../launcher_presentation_view.svelte | 105 +- .../(launcher)/launcher_presenter_view.svelte | 102 +- .../launcher_presenter_view_posters.svelte | 98 +- .../(launcher)/launcher_session_view.svelte | 749 ++++----- .../launcher_session_view_posters.svelte | 312 ++-- .../(launcher)/menu_launcher_controls.svelte | 117 +- .../(launcher)/menu_location_list.svelte | 290 ++-- .../(launcher)/menu_session_list.svelte | 563 +++---- 27 files changed, 3766 insertions(+), 3807 deletions(-) diff --git a/src/routes/events/[event_id]/(launcher)/+layout.svelte b/src/routes/events/[event_id]/(launcher)/+layout.svelte index 8fcaab3d..05b9de19 100644 --- a/src/routes/events/[event_id]/(launcher)/+layout.svelte +++ b/src/routes/events/[event_id]/(launcher)/+layout.svelte @@ -1,17 +1,17 @@ diff --git a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_app_modes.svelte b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_app_modes.svelte index 92ac63bc..8fe3cc9d 100644 --- a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_app_modes.svelte +++ b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_app_modes.svelte @@ -1,55 +1,56 @@ + description="Mode: {$events_loc.launcher.app_mode} | UI Layout">
-

Session Mode Preset

-
+

+ Session Mode Preset +

+
{#if $events_loc.launcher.ws_connect && ($events_loc.launcher.controller === 'local_push' || $events_loc.launcher.controller === 'remote')} -

Applies to all connected WS devices

+

+ Applies to all connected WS devices +

{/if}
-

Operational Environment

-
+

+ Operational Environment +

+
+ Web + class:preset-tonal-surface={$events_loc.launcher + .app_mode !== 'native'} + title="Native Electron based app launcher, for onsite presenters in session rooms" + >App + class:preset-tonal-surface={$events_loc.launcher + .app_mode !== 'onsite'} + title="Customized onsite OS and web browser (Chromium or Firefox based) launcher, for onsite presenters in for practice and onsite backup" + >Onsite
-

Interface Visibility

+ class="border-surface-500/10 mt-1 flex flex-col gap-1 border-t pt-2"> +

+ Interface Visibility +

-
@@ -202,8 +194,7 @@ $events_loc.launcher.time_hours = 12; } }} - class="btn btn-xs preset-tonal-surface w-full text-[10px]" - > + class="btn btn-xs preset-tonal-surface w-full text-[10px]"> Clock Format: {$events_loc.launcher.time_hours}-hour @@ -212,35 +203,30 @@ {#if $ae_loc.edit_mode}
-

Technical Layout

+ class="border-surface-500/20 col-span-full mt-1 flex flex-col gap-2 border-t pt-3"> +

+ Technical Layout +

-
diff --git a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_controller.svelte b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_controller.svelte index 281cc36c..1eb50f7c 100644 --- a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_controller.svelte +++ b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_controller.svelte @@ -1,16 +1,24 @@ + : 'Offline'}">
+ class="bg-surface-500/5 border-surface-500/10 flex items-center justify-between rounded border p-2">
- WebSocket Link + WebSocket Link
{#if ws_connected} Connected + class="badge preset-filled-success animate-pulse text-[8px]" + >Connected {:else} Disconnected + >Disconnected {/if}
-

Controller Strategy

+

+ Controller Strategy +

- ($events_sess.launcher.controller_unlock_group_code = true)} - /> + ($events_sess.launcher.controller_unlock_group_code = true)} />
-

+

Double-click input to unlock editing. Changing code triggers reconnect.

diff --git a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_health.svelte b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_health.svelte index 5812cf63..2c84c845 100644 --- a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_health.svelte +++ b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_health.svelte @@ -1,44 +1,44 @@ + .last_timestamp || 'Pending'}">
+ class="bg-surface-500/5 border-surface-500/10 col-span-full flex flex-col gap-3 rounded-lg border p-3">
+ class="flex justify-between text-[9px] font-bold uppercase opacity-60"> CPU Architecture: {$ae_loc.native_device?.meta_json - ?.arch || '...'} + ?.arch || '...'} Load: {cpu_load_pct}%
+ class="bg-surface-500/20 h-1.5 w-full overflow-hidden rounded-full">
+ class="h-full transition-all duration-1000 {get_usage_color( + cpu_load_pct + )}" + style="width: {cpu_load_pct}%"> +
+ class="flex justify-between text-[9px] font-bold uppercase opacity-60"> Memory (RAM) {ram_usage_pct}% Used
+ class="bg-surface-500/20 h-1.5 w-full overflow-hidden rounded-full">
+ style="width: {ram_usage_pct}%"> +
-
+
Free: {$ae_loc.native_device?.meta_json?.free_mem || '...'} / {$ae_loc .native_device?.meta_json?.total_mem || '...'}
@@ -101,26 +96,23 @@
-
+
- Last Heartbeat + Last Heartbeat + : 'text-error-500'}"> {$events_sess.launcher.heartbeat_info.last_timestamp || 'Pending...'}
- Local File Cache + Local File Cache {$events_sess.launcher.sync_stats.cached} / {$events_sess .launcher.sync_stats.total} @@ -129,19 +121,18 @@ {#if $events_sess.launcher.sync_stats.currently_syncing}
+ class="bg-primary-500/10 border-primary-500/20 col-span-full mt-1 animate-pulse rounded border p-2">
- +
Syncing File... + class="text-primary-500 text-[8px] font-bold uppercase" + >Syncing File... {$events_sess.launcher.sync_stats - .currently_syncing} + .currently_syncing}
@@ -151,26 +142,22 @@ {#if $ae_loc.edit_mode}
+ class="border-surface-500/10 col-span-full mt-1 flex flex-col gap-1 border-t px-1 pt-2 text-[9px] opacity-60">
Hostname: {$ae_loc.native_device.info_hostname || '...'} + >{$ae_loc.native_device.info_hostname || '...'}
IP Addresses: - {$ae_loc.native_device.info_ip_list || '...'} + {$ae_loc.native_device.info_ip_list || '...'}
- Raw Device JSON + Raw Device JSON
+                    class="mt-1 max-h-32 overflow-y-auto rounded bg-black/20 p-1 text-[7px]">
                     {JSON.stringify($ae_loc.native_device, null, 2)}
                 
diff --git a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_local_actions.svelte b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_local_actions.svelte index 8c989d74..3a5b8a74 100644 --- a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_local_actions.svelte +++ b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_local_actions.svelte @@ -1,77 +1,80 @@ + description="Cache wiping and global menu toggles">
Maintenance & Resets + class="text-error-500 ml-1 text-[9px] font-bold uppercase opacity-50" + >Maintenance & Resets - + * Destructive actions require browser confirmation.
-
+
@@ -125,41 +127,51 @@ onclick={() => ($ae_loc.debug_menu.hide = !$ae_loc.debug_menu.hide)} class="btn btn-xs preset-tonal-surface hover:preset-filled-primary-500" - title="Show/Hide Aether global debug menu" - > - {#if $ae_loc.debug_menu.hide}{:else}{/if} + title="Show/Hide Aether global debug menu"> + {#if $ae_loc.debug_menu.hide}{:else}{/if} {$ae_loc.debug_menu.hide ? 'Show' : 'Hide'} Debug
{#if $ae_loc.is_native && $ae_loc.local_file_cache_path} -
- Cache Maintenance +
+ Cache Maintenance
- + + bind:value={ + $events_loc.launcher.cleanup_tmp_max_age_hours + } + class="input input-sm preset-tonal-surface h-7 w-16 text-center text-xs" + placeholder="24" />
{#if cleanup_status} - {cleanup_status} + {cleanup_status} {/if} - - Removes stale in-progress download artifacts. Auto-runs on startup. + + Removes stale in-progress download artifacts. Auto-runs on + startup.
{/if} @@ -167,14 +179,12 @@ {#if $ae_loc.edit_mode}
-

API Context

+ class="border-surface-500/20 col-span-full mt-1 flex flex-col gap-1 border-t pt-2"> +

+ API Context +

+ class="rounded bg-black/10 p-2 font-mono text-[9px] leading-tight break-all opacity-60"> Endpoint: {$ae_api.base_url}
Account: {$ae_loc.account_id}
diff --git a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_native_os.svelte b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_native_os.svelte index f629110a..7252fba3 100644 --- a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_native_os.svelte +++ b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_native_os.svelte @@ -1,50 +1,62 @@ + '...'} | Kiosk & Apps"> {#if $ae_loc.edit_mode && !$ae_loc.is_native} -
+
- Dev Preview — controls visible but non-functional without Electron + Dev Preview — controls visible but non-functional without + Electron
{/if} {#if system_status}
+ class="bg-surface-500/10 text-primary-500 border-primary-500/20 col-span-full animate-pulse rounded border py-1 text-center text-[10px] italic"> {system_status}
{/if}
-

Folders & View

+

+ Folders & View +

@@ -116,14 +126,13 @@
-
-

Remote Control

+
+

+ Remote Control +

@@ -134,39 +143,34 @@ type="button" onclick={() => handle_remote_control('prev')} class="btn btn-sm preset-tonal-secondary" - title="Previous Slide" - > + title="Previous Slide">
{#if remote_status}
+ class="text-primary-500 animate-pulse text-center text-[9px] italic"> {remote_status}
{/if} @@ -175,13 +179,12 @@ {#if $ae_loc.edit_mode}
+ class="border-surface-500/20 col-span-full mt-1 flex flex-col gap-3 border-t pt-3">
-

System Actions

+

+ System Actions +

Power + class="text-error-500 text-[9px] font-bold uppercase opacity-50" + >Power
@@ -245,16 +244,15 @@
-

Terminal Access

+

+ Terminal Access +

+ class="input input-sm preset-tonal-surface h-7 grow text-[10px]" /> + class="btn btn-sm preset-filled-secondary hover:preset-filled-primary-500 h-7 text-[10px]" + >Run
{#if test_cmd_result}
{test_cmd_result}
+ class="border-surface-500/50 mt-1 max-h-24 overflow-x-auto rounded border bg-black p-2 text-[8px] text-green-500 shadow-inner">{test_cmd_result} {/if}
@@ -284,25 +281,21 @@ {#if show_power_confirm}
+ class="fixed inset-0 z-[1000] flex items-center justify-center bg-black/50 p-4 backdrop-blur-sm">
-

+ class="card preset-filled-surface-100-900 border-error-500 animate-in zoom-in-95 w-full max-w-sm border p-6 shadow-2xl duration-200"> +

Confirm System Action

-

+

Are you sure you want to {show_power_confirm.action} this host machine? + >{show_power_confirm.action} this host machine?

+ class="btn btn-sm preset-tonal-surface">Cancel
diff --git a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_screen_saver.svelte b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_screen_saver.svelte index c279b9f3..64552df9 100644 --- a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_screen_saver.svelte +++ b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_screen_saver.svelte @@ -1,12 +1,12 @@ + )}m | Auto-Posters">
{#if $ae_loc.edit_mode}
-

Screen Saver Timers (ms)

+

+ Screen Saver Timers (ms) +

-
+ class="bg-surface-500/5 border-surface-500/10 grid grid-cols-1 gap-2 rounded border p-2"> +
Idle Wait + class="input input-sm preset-tonal-surface h-7 w-24 text-right text-[10px]" />
-
+
Cycle Check + class="input input-sm preset-tonal-surface h-7 w-24 text-right text-[10px]" />
-
+
Image Rotation + >Image Rotation + class="input input-sm preset-tonal-surface h-7 w-24 text-right text-[10px]" />
{:else}
-
+ class="bg-surface-500/5 border-surface-500/10 flex flex-col gap-2 rounded-lg border p-3"> +
Active Idle Timeout: - {($events_loc.launcher.idle_timer / 60000).toFixed(1)} minutes + {($events_loc.launcher.idle_timer / 60000).toFixed(1)} minutes
-

+

The screen saver automatically rotates digital posters when no activity is detected for the specified time.

@@ -79,7 +71,7 @@ {/if}
-

+

Applies to "Poster" session types only

diff --git a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_section.svelte b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_section.svelte index d1ccd70d..7c593e3a 100644 --- a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_section.svelte +++ b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_section.svelte @@ -1,97 +1,92 @@
+ : ''}">
+ onclick={toggle_expand}>
+ : ''} {state === 'pinned' ? 'text-warning-500' : ''}" />
{title} + : ''}">{title} {#if description && !is_open} {description} + class="max-w-[180px] truncate text-[9px] italic opacity-40" + >{description} {/if}
@@ -106,16 +101,19 @@ class:text-warning-500={state === 'pinned'} title={state === 'pinned' ? 'Unpin Section' - : 'Pin Section (Stay open)'} - > + : 'Pin Section (Stay open)'}> {#if is_open} - + {:else} - + {/if}
@@ -124,27 +122,22 @@ {#if is_open}
+ class="bg-white/5 p-3 dark:bg-black/5"> {#if $ae_loc.edit_mode} -
+
+ class="text-primary-500/60 flex items-center gap-1 text-[8px] font-bold tracking-widest uppercase"> Technical Mode {#if state === 'pinned'} Pinned + >Pinned {/if}
{/if} -
+
{@render children?.()}
diff --git a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_sync_timers.svelte b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_sync_timers.svelte index 91685b74..fc34063b 100644 --- a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_sync_timers.svelte +++ b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_sync_timers.svelte @@ -1,12 +1,12 @@ + 2} | Loops: Active"> -
- - {$events_loc.launcher.sync_paused ? '⏸ Sync Paused' : '▶ Sync Active'} +
+ + {$events_loc.launcher.sync_paused + ? '⏸ Sync Paused' + : '▶ Sync Active'}
-
-
-

Current Status

+

+ Current Status +

-
+ class="border-surface-500/10 flex flex-col gap-2 rounded-lg border p-2"> +
Engine Health Stable + >Stable
+ class="flex justify-between text-[8px] uppercase opacity-60"> Processing Load 45%
+ class="bg-surface-500/20 h-1.5 w-full overflow-hidden rounded-full">
+ class="bg-success-500 h-full transition-all duration-1000" + style="width: 45%"> +
@@ -144,9 +139,10 @@
@@ -154,32 +150,28 @@ {#if $ae_loc.edit_mode}
+ class="border-surface-500/20 col-span-full mt-1 flex flex-col gap-3 border-t pt-3">
System Config + class="text-warning-500 text-[9px] font-bold uppercase opacity-50" + >System Config
Danger Zone + class="text-error-500 text-[9px] font-bold uppercase opacity-50" + >Danger Zone
@@ -188,21 +180,17 @@
- Raw Settings + Raw Settings
+ class="input input-sm preset-tonal-surface h-7 grow text-[10px]" /> @@ -210,24 +198,22 @@
- Threshold (ms) + Threshold (ms) + class="input input-sm preset-tonal-surface h-7 text-[10px]" />
-

Debug Output

+

+ Debug Output +

+                    class="border-surface-500/50 max-h-24 overflow-x-auto rounded border bg-black p-2 text-[8px] text-green-500 shadow-inner">
 [LOG] System Initialized
 [INFO] Store synced with IndexedDB
 [DEBUG] active_tab: template
@@ -241,13 +227,11 @@
 
 {#if show_confirm}
     
+ class="fixed inset-0 z-[1000] flex items-center justify-center bg-black/50 p-4 backdrop-blur-sm">
-

Confirm Action

-

+ class="card preset-filled-surface-100-900 border-warning-500 animate-in zoom-in-95 w-full max-w-sm border p-6 shadow-2xl duration-200"> +

Confirm Action

+

Are you sure you want to perform this test operation? This demonstrate the standard confirmation pattern.

@@ -255,16 +239,14 @@ + class="btn btn-sm preset-tonal-surface">Cancel
diff --git a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_updates.svelte b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_updates.svelte index a9e3441f..d3d1c2a6 100644 --- a/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_updates.svelte +++ b/src/routes/events/[event_id]/(launcher)/cfg_components/launcher_cfg_updates.svelte @@ -1,57 +1,55 @@ + description="v1.0.0 | Source: {update_source}">
{#if $ae_loc.edit_mode}
-
-

Source Type

+ class="bg-surface-500/5 border-surface-500/10 mb-1 flex flex-col gap-2 rounded border p-2"> +
+

+ Source Type +

@@ -97,15 +91,13 @@ type="text" bind:value={update_path} placeholder="Path to update package" - class="input input-sm text-[10px] preset-tonal-surface h-7 w-full" - /> + class="input input-sm preset-tonal-surface h-7 w-full text-[10px]" /> {:else} + class="input input-sm preset-tonal-surface h-7 w-full text-[10px]" /> {/if}
{/if} @@ -115,10 +107,9 @@ type="button" onclick={handle_check_update} disabled={is_checking} - class="btn btn-sm preset-filled-tertiary hover:preset-filled-primary-500 text-[10px] w-full" - > + class="btn btn-sm preset-filled-tertiary hover:preset-filled-primary-500 w-full text-[10px]"> {#if is_checking} - Checking... + Checking... {:else} Check for Updates {/if} @@ -126,8 +117,7 @@ {#if update_status}
+ class="border-surface-500/20 bg-surface-500/5 mt-1 rounded border p-1 text-center text-[9px] italic"> {update_status}
{/if} @@ -136,8 +126,7 @@ {/if} diff --git a/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte b/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte index 893fc3c9..6390157b 100644 --- a/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte +++ b/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte @@ -1,575 +1,592 @@ @@ -587,81 +604,74 @@ class=" static m-auto - border-x border-gray-200 dark:border-gray-600 - mb-16 sm:mb-12 - h-full - w-full max-w-7xl - transition-all - " -> + mb-16 h-full w-full + max-w-7xl border-x + border-gray-200 + transition-all sm:mb-12 + dark:border-gray-600 + ">
-

+ duration-300 hover:opacity-100 + sm:justify-between dark:bg-slate-800 + "> +

{#if $lq__event_obj}

+ class="h4 text-surface-600-400 text-center italic" + title="Location ID: {$lq__event_location_obj?.event_location_id} Name: {$lq__event_location_obj?.name}"> {$lq__event_location_obj?.name}

{:else} -
- +
+ Loading event...
{/if} @@ -669,30 +679,28 @@
+ ">
+ px-0.5 + py-1 + "> {#if !$events_slct.event_location_id}
+ class="flex flex-row items-center justify-center p-8 opacity-50"> Please select a location from the menu
@@ -751,9 +756,8 @@ {:else if $events_slct.event_location_id}
- + class="flex flex-col items-center justify-center p-8 opacity-50"> + Select a session from the menu
{/if} @@ -767,35 +771,32 @@ id="Main-Footer" class:hidden={$events_loc.launcher.hide__launcher_footer} class=" - z-20 - absolute bottom-0 left-0 right-0 + absolute + right-0 bottom-0 left-0 z-20 + m-auto flex w-full max-w-7xl - p-1 m-auto - flex flex-row items-center justify-between + flex-row items-center justify-between border-t - text-xs + border-gray-300 - bg-gray-200 border-t border-gray-300 - dark:bg-gray-800 dark:border-gray-600 + bg-gray-200 p-1 text-xs + opacity-70 transition-opacity - opacity-70 hover:opacity-100 - transition-opacity duration-500 - " -> + duration-500 hover:opacity-100 + dark:border-gray-600 dark:bg-gray-800 + ">
+ title="Location ID: {$lq__event_location_obj?.event_location_id} Name: {$lq__event_location_obj?.name} | Device ID: {$lq__event_device_obj?.event_device_id} Name: {$lq__event_device_obj?.name}"> @@ -809,9 +810,8 @@ + class="group rounded-md px-2 py-0.5 transition-colors duration-300" + title="The user is currently {$idle ? 'idle' : 'active'}"> {#if $idle} @@ -822,9 +822,8 @@ + class="group rounded-md px-2 py-0.5 transition-colors duration-300" + title="Online status = {online?.current}"> {online?.current ? '' : 'Offline!'} @@ -835,12 +834,11 @@ 'connected'} class:preset-tonal-success={$events_sess.launcher.ws_connect_status == 'connected'} - class="group px-2 py-0.5 rounded-md transition-colors duration-300" + class="group rounded-md px-2 py-0.5 transition-colors duration-300" title="WebSocket is {$events_sess.launcher.ws_connect_status == 'connected' ? 'connected' - : 'disconnected'} API: {$ae_api?.base_url}" - > + : 'disconnected'} API: {$ae_api?.base_url}"> {#if $events_sess.launcher.ws_connect_status == 'connected'} @@ -860,9 +858,9 @@ else if (mode === 'larger') $ae_loc.font_size_mode = 'smaller'; else $ae_loc.font_size_mode = 'default'; }} - class="group px-2 py-0.5 rounded-md font-mono font-bold hover:bg-surface-500/10 transition-colors duration-200" - title="Font size: {$ae_loc.font_size_mode ?? 'default'} — tap to cycle (default → larger → smaller)" - > + class="group hover:bg-surface-500/10 rounded-md px-2 py-0.5 font-mono font-bold transition-colors duration-200" + title="Font size: {$ae_loc.font_size_mode ?? + 'default'} — tap to cycle (default → larger → smaller)"> {#if $ae_loc.font_size_mode === 'larger'} A+ {:else if $ae_loc.font_size_mode === 'smaller'} @@ -873,8 +871,7 @@
+ class="current_datetime px-2 font-mono transition-colors hover:bg-white hover:font-bold dark:hover:bg-slate-700">