polish(pres_mgmt): consistent agree/consent modals + contrast + layout fixes
- Standardize all 3 consent modals (presenter × 2, session POC): same placement="top-center" size="lg", no custom height hacks, let Flowbite's native <dialog> handle scrolling; consistent footer Close button with X icon - Modal titles now include person name; removes the double-header (inner <h2> in both form components was redundant with the modal title) - Agreement text wrapper: bg-surface-100-900 → prose dark:prose-invert + bg-white dark:bg-gray-900 for proper dark-mode contrast on CMS HTML content - Section/header bar changes color green when agreed (red when not), with check icon; "Change to not agreed?" button style aligned between both forms - Remove pb-16 from pres_mgmt layout (leftover from defunct sticky action bar) - Add @source for flowbite-svelte/dist so backdrop:bg-gray-900/50 is generated (modal backdrop dim was never active before — Tailwind wasn't scanning it) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -46,6 +46,7 @@ html.light {
|
|||||||
@import './styles/ae-firefly-bgh.css';
|
@import './styles/ae-firefly-bgh.css';
|
||||||
|
|
||||||
@source '../node_modules/@skeletonlabs/skeleton-svelte/dist';
|
@source '../node_modules/@skeletonlabs/skeleton-svelte/dist';
|
||||||
|
@source '../node_modules/flowbite-svelte/dist';
|
||||||
|
|
||||||
/* Add your theme import for your theme: "osit-custom-theme" here */
|
/* Add your theme import for your theme: "osit-custom-theme" here */
|
||||||
/* @plugin '@tailwindcss/forms'; */
|
/* @plugin '@tailwindcss/forms'; */
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ let { children } = $props();
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<section
|
<section
|
||||||
class="ae_events_pres_mgmt mx-auto flex w-full max-w-7xl flex-col gap-1 px-2 py-1 pb-16">
|
class="ae_events_pres_mgmt mx-auto flex w-full max-w-7xl flex-col gap-1 px-2 py-1">
|
||||||
{@render children?.()}
|
{@render children?.()}
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -534,24 +534,22 @@ let presenter_sign_in_url = $derived((() => {
|
|||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Main modal -->
|
<!-- Presenter agree modal -->
|
||||||
<Modal
|
<Modal
|
||||||
title="{$lq__event_presenter_obj?.full_name} Presenter Consent and Release and Terms and Conditions"
|
title="{$lq__event_presenter_obj?.full_name} — Presenter Agreement"
|
||||||
bind:open={$events_sess.pres_mgmt.show_modal__presenter_agree}
|
bind:open={$events_sess.pres_mgmt.show_modal__presenter_agree}
|
||||||
autoclose={false}
|
autoclose={false}
|
||||||
placement="top-center"
|
placement="top-center"
|
||||||
class="relative mx-auto flex w-full flex-col divide-y shadow-md">
|
size="lg">
|
||||||
<Comp_event_presenter_form_agree {lq__event_presenter_obj} />
|
<Comp_event_presenter_form_agree {lq__event_presenter_obj} />
|
||||||
|
|
||||||
{#snippet footer()}
|
{#snippet footer()}
|
||||||
<div class="w-full text-center">
|
<div class="w-full text-center">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onclick={() => {
|
onclick={() => ($events_sess.pres_mgmt.show_modal__presenter_agree = false)}
|
||||||
$events_sess.pres_mgmt.show_modal__presenter_agree = false;
|
class="btn preset-tonal-warning border border-warning-500">
|
||||||
}}
|
<X size="1em" class="mr-1" />
|
||||||
class="btn btn-sm preset-tonal-warning hover:preset-tonal-warning border-warning-500 border">
|
|
||||||
<X size="1em" class="m-1" />
|
|
||||||
Close
|
Close
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -155,17 +155,6 @@ async function handle_update__event_presenter({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if $lq__event_presenter_obj}
|
{#if $lq__event_presenter_obj}
|
||||||
<h2 class="h3">
|
|
||||||
<span class="text-base">Presenter Agreement for:</span><br />
|
|
||||||
<strong
|
|
||||||
>{$lq__event_presenter_obj?.full_name}
|
|
||||||
{#if $lq__event_presenter_obj?.person_primary_email}
|
|
||||||
({$lq__event_presenter_obj?.person_primary_email ??
|
|
||||||
'-- not set --'})
|
|
||||||
{/if}
|
|
||||||
</strong>
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
{#if !$lq__event_presenter_obj?.agree}
|
{#if !$lq__event_presenter_obj?.agree}
|
||||||
<div class="text-center text-red-500">
|
<div class="text-center text-red-500">
|
||||||
<div class="text-red-500">
|
<div class="text-red-500">
|
||||||
@@ -181,7 +170,7 @@ async function handle_update__event_presenter({
|
|||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="bg-surface-100-900 border-surface-200-800 space-y-4 rounded-lg border p-4">
|
class="border-surface-200-800 prose dark:prose-invert max-w-none space-y-4 rounded-lg border bg-white p-4 dark:bg-gray-900">
|
||||||
<Element_data_store
|
<Element_data_store
|
||||||
ds_code="event_presenter_agree_text"
|
ds_code="event_presenter_agree_text"
|
||||||
ds_type="html"
|
ds_type="html"
|
||||||
@@ -189,9 +178,18 @@ async function handle_update__event_presenter({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<section
|
<section
|
||||||
class="space-y-2 rounded-md border border-red-200 bg-red-100 text-lg">
|
class="space-y-2 rounded-md border text-lg"
|
||||||
|
class:border-red-200={!$lq__event_presenter_obj?.agree}
|
||||||
|
class:bg-red-100={!$lq__event_presenter_obj?.agree}
|
||||||
|
class:border-green-200={$lq__event_presenter_obj?.agree}
|
||||||
|
class:bg-green-50={$lq__event_presenter_obj?.agree}>
|
||||||
<!-- Highlight the persons name, email, and that whole line. -->
|
<!-- Highlight the persons name, email, and that whole line. -->
|
||||||
<p class="preset-tonal-warning rounded-t-md p-2 text-lg">
|
<p class="rounded-t-md p-2 text-lg"
|
||||||
|
class:preset-tonal-warning={!$lq__event_presenter_obj?.agree}
|
||||||
|
class:preset-tonal-success={$lq__event_presenter_obj?.agree}>
|
||||||
|
{#if $lq__event_presenter_obj?.agree}
|
||||||
|
<Check size="1em" class="mr-1 inline text-green-700" />
|
||||||
|
{/if}
|
||||||
<strong
|
<strong
|
||||||
>{$lq__event_presenter_obj.full_name} ({$lq__event_presenter_obj.email})</strong>
|
>{$lq__event_presenter_obj.full_name} ({$lq__event_presenter_obj.email})</strong>
|
||||||
agrees to the following terms and conditions for the presentation:
|
agrees to the following terms and conditions for the presentation:
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import {
|
|||||||
Info,
|
Info,
|
||||||
LoaderCircle,
|
LoaderCircle,
|
||||||
Upload,
|
Upload,
|
||||||
|
X,
|
||||||
} from '@lucide/svelte';
|
} from '@lucide/svelte';
|
||||||
import { Modal } from 'flowbite-svelte';
|
import { Modal } from 'flowbite-svelte';
|
||||||
import { ae_util } from '$lib/ae_utils/ae_utils';
|
import { ae_util } from '$lib/ae_utils/ae_utils';
|
||||||
@@ -291,17 +292,24 @@ if (!$events_sess.pres_mgmt) $events_sess.pres_mgmt = {};
|
|||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Modals -->
|
<!-- Presenter agree modal (opened from the presenter list) -->
|
||||||
<Modal
|
<Modal
|
||||||
title="{$lq__event_presenter_obj?.full_name} Presenter Consent"
|
title="{$lq__event_presenter_obj?.full_name} — Presenter Agreement"
|
||||||
bind:open={$events_sess.pres_mgmt.show_modal__presenter_agree}
|
bind:open={$events_sess.pres_mgmt.show_modal__presenter_agree}
|
||||||
autoclose={false}>
|
autoclose={false}
|
||||||
|
placement="top-center"
|
||||||
|
size="lg">
|
||||||
{@const FormAgreeComp = Comp_event_presenter_form_agree as any}
|
{@const FormAgreeComp = Comp_event_presenter_form_agree as any}
|
||||||
<FormAgreeComp {lq__event_presenter_obj} />
|
<FormAgreeComp {lq__event_presenter_obj} />
|
||||||
{#snippet footer()}
|
{#snippet footer()}
|
||||||
|
<div class="w-full text-center">
|
||||||
<button
|
<button
|
||||||
onclick={() =>
|
type="button"
|
||||||
($events_sess.pres_mgmt.show_modal__presenter_agree = false)}
|
onclick={() => ($events_sess.pres_mgmt.show_modal__presenter_agree = false)}
|
||||||
class="btn preset-tonal-warning">Close</button>
|
class="btn preset-tonal-warning border border-warning-500">
|
||||||
|
<X size="1em" class="mr-1" />
|
||||||
|
Close
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
{/snippet}
|
{/snippet}
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|||||||
@@ -127,19 +127,6 @@ async function handle_submit_form(event: SubmitEvent) {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if lq__event_session_obj}
|
{#if lq__event_session_obj}
|
||||||
<h2 class="h3">
|
|
||||||
<span class="text-base"
|
|
||||||
>{pres_mgmt_loc.current.label__session_poc_name} Agreement for:</span
|
|
||||||
><br />
|
|
||||||
<strong
|
|
||||||
>{lq__event_session_obj?.poc_person_full_name}
|
|
||||||
{#if lq__event_session_obj?.poc_person_primary_email}
|
|
||||||
({lq__event_session_obj?.poc_person_primary_email ??
|
|
||||||
'-- not set --'})
|
|
||||||
{/if}
|
|
||||||
</strong>
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
{#if !lq__event_session_obj?.poc_agree}
|
{#if !lq__event_session_obj?.poc_agree}
|
||||||
<div class="text-center text-red-500">
|
<div class="text-center text-red-500">
|
||||||
<div class="text-red-500">
|
<div class="text-red-500">
|
||||||
@@ -154,7 +141,7 @@ async function handle_submit_form(event: SubmitEvent) {
|
|||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="bg-surface-100-900 border-surface-200-800 space-y-4 rounded-lg border p-4">
|
class="border-surface-200-800 prose dark:prose-invert max-w-none space-y-4 rounded-lg border bg-white p-4 dark:bg-gray-900">
|
||||||
<Element_data_store
|
<Element_data_store
|
||||||
ds_code="event_session_poc_agree_text"
|
ds_code="event_session_poc_agree_text"
|
||||||
ds_type="html"
|
ds_type="html"
|
||||||
@@ -162,9 +149,18 @@ async function handle_submit_form(event: SubmitEvent) {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<section
|
<section
|
||||||
class="space-y-2 rounded-md border border-red-200 bg-red-100 text-lg">
|
class="space-y-2 rounded-md border text-lg"
|
||||||
|
class:border-red-200={!lq__event_session_obj?.poc_agree}
|
||||||
|
class:bg-red-100={!lq__event_session_obj?.poc_agree}
|
||||||
|
class:border-green-200={lq__event_session_obj?.poc_agree}
|
||||||
|
class:bg-green-50={lq__event_session_obj?.poc_agree}>
|
||||||
<!-- Highlight the persons name, email, and that whole line. -->
|
<!-- Highlight the persons name, email, and that whole line. -->
|
||||||
<p class="preset-tonal-warning rounded-t-md p-2 text-lg">
|
<p class="rounded-t-md p-2 text-lg"
|
||||||
|
class:preset-tonal-warning={!lq__event_session_obj?.poc_agree}
|
||||||
|
class:preset-tonal-success={lq__event_session_obj?.poc_agree}>
|
||||||
|
{#if lq__event_session_obj?.poc_agree}
|
||||||
|
<Check size="1em" class="mr-1 inline text-green-700" />
|
||||||
|
{/if}
|
||||||
<strong
|
<strong
|
||||||
>{lq__event_session_obj.poc_person_full_name} ({lq__event_session_obj.poc_person_primary_email})</strong>
|
>{lq__event_session_obj.poc_person_full_name} ({lq__event_session_obj.poc_person_primary_email})</strong>
|
||||||
agrees to the following terms and conditions for the presentation:
|
agrees to the following terms and conditions for the presentation:
|
||||||
@@ -395,7 +391,7 @@ async function handle_submit_form(event: SubmitEvent) {
|
|||||||
// return update_result;
|
// return update_result;
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
class="btn btn-lg preset-tonal-success border-success-500 hover:preset-filled-warning-500 m-2 border">
|
class="btn btn-lg preset-tonal-warning border-warning-500 hover:preset-filled-error-500 m-2 border">
|
||||||
<X size="1em" class="m-1 text-orange-500" />
|
<X size="1em" class="m-1 text-orange-500" />
|
||||||
Change to not agreed?
|
Change to not agreed?
|
||||||
|
|
||||||
|
|||||||
@@ -530,17 +530,23 @@ async function send_poc_email_link() {
|
|||||||
</button>
|
</button>
|
||||||
|
|
||||||
<Modal
|
<Modal
|
||||||
title="{pres_mgmt_loc.current.label__session_poc_name}'s Consent and Release"
|
title="{$lq__event_session_obj?.poc_person_full_name} — {pres_mgmt_loc.current.label__session_poc_name} Agreement"
|
||||||
bind:open={$events_sess.pres_mgmt.show_modal__session_poc_agree}
|
bind:open={$events_sess.pres_mgmt.show_modal__session_poc_agree}
|
||||||
autoclose={false}
|
autoclose={false}
|
||||||
placement="top-center">
|
placement="top-center"
|
||||||
|
size="lg">
|
||||||
<Comp_event_session_poc_form_agree
|
<Comp_event_session_poc_form_agree
|
||||||
lq__event_session_obj={$lq__event_session_obj} />
|
lq__event_session_obj={$lq__event_session_obj} />
|
||||||
{#snippet footer()}
|
{#snippet footer()}
|
||||||
|
<div class="w-full text-center">
|
||||||
<button
|
<button
|
||||||
onclick={() =>
|
type="button"
|
||||||
($events_sess.pres_mgmt.show_modal__session_poc_agree = false)}
|
onclick={() => ($events_sess.pres_mgmt.show_modal__session_poc_agree = false)}
|
||||||
class="btn preset-tonal-warning">Close</button>
|
class="btn preset-tonal-warning border border-warning-500">
|
||||||
|
<X size="1em" class="mr-1" />
|
||||||
|
Close
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
{/snippet}
|
{/snippet}
|
||||||
</Modal>
|
</Modal>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
Reference in New Issue
Block a user