added interaction between card council base and card council component

This commit is contained in:
zzzmlssqnzzz
2025-06-19 21:42:05 -04:00
parent 989b0af73f
commit 9b470e2ce8
3 changed files with 48 additions and 10 deletions

View File

@@ -21,11 +21,13 @@
align-items: center; align-items: center;
gap: 1rem; gap: 1rem;
background-color:transparent; background-color:transparent;
padding: 1.5rem;
border-radius: 20px; border-radius: 20px;
padding:1.5rem;
color: #0A3D2A; color: #0A3D2A;
background-color: #E8FFD9; border-color:transparent;
max-width: 500px; background-image: linear-gradient(to bottom right, #E8FFD9, #97C583);
max-width: 450px;
height: 250px;
} }
.profile-img{ .profile-img{
@@ -35,13 +37,11 @@
.profile-img :global(img) { .profile-img :global(img) {
object-fit: cover; object-fit: cover;
width: 100%; max-width: 100%;
height: 100%;
} }
</style> </style>
<div class="card h-1/2 max-h-1/2 w-full max-w-1/6 rounded-lg border-4 p-4"> <div class="card">
<!-- <img class="size-4/5" src={placeholder} alt="Placeholder"> --> <!-- <img class="size-4/5" src={placeholder} alt="Placeholder"> -->
<!-- <Avatar src={placeholder} {name} /> --> <!-- <Avatar src={placeholder} {name} /> -->
<div class="avatar-container justify-left"> <div class="avatar-container justify-left">
@@ -61,6 +61,6 @@
<p class="pb-2 text-xs">{positionDescription}</p> <p class="pb-2 text-xs">{positionDescription}</p>
<hr /> <hr />
<p class="py-2 text-sm underline">{email}</p> <a href="mailto:{email}" class="py-2 text-sm underline">{email}</a>
</div> </div>
</div> </div>

View File

@@ -1,7 +1,8 @@
<script> <script>
let { name, position, image } = $props(); let { onViewProfile, name, position, image } = $props();
import placeholder from 'assets/placeholderAvatar.png'; import placeholder from 'assets/placeholderAvatar.png';
import { Avatar } from '@skeletonlabs/skeleton-svelte'; import { Avatar } from '@skeletonlabs/skeleton-svelte';
</script> </script>
<style> <style>
@@ -68,7 +69,7 @@
<div class="info"> <div class="info">
<div class="name">{name}</div> <div class="name">{name}</div>
<div class="role">{position}</div> <div class="role">{position}</div>
<a href="#" class="button">View Profile</a> <button class="button" onclick={onViewProfile}>View Profile</button>
</div> </div>
</div> </div>

View File

@@ -27,6 +27,15 @@
president = member president = member
} }
}) })
let selectedMember = $state<CouncilMember | null>(null);
function handleViewProfile(member: CouncilMember) {
selectedMember = member;
}
// svelte-ignore state_referenced_locally
console.log(selectedMember)
</script> </script>
<title> ECSESS council </title> <title> ECSESS council </title>
@@ -41,6 +50,7 @@
name={president.name} name={president.name}
position={president.position} position={president.position}
image={president.image} image={president.image}
onViewProfile={() => handleViewProfile(president!)}
></CouncilCardBase> ></CouncilCardBase>
{/if} {/if}
</div> </div>
@@ -51,6 +61,7 @@
name={councilMember.name} name={councilMember.name}
position={councilMember.position} position={councilMember.position}
image={councilMember.image} image={councilMember.image}
onViewProfile={() => handleViewProfile(councilMember)}
></CardCouncilBase> ></CardCouncilBase>
{/each} {/each}
{#each ureps as councilMember} {#each ureps as councilMember}
@@ -58,8 +69,34 @@
name={councilMember.name} name={councilMember.name}
position={councilMember.position} position={councilMember.position}
image={councilMember.image} image={councilMember.image}
onViewProfile={() => handleViewProfile(councilMember)}
></CardCouncilBase> ></CardCouncilBase>
{/each} {/each}
</div> </div>
<!-- svelte-ignore a11y_no_static_element_interactions -->
{#if selectedMember}
<!-- svelte-ignore a11y_click_events_have_key_events -->
<div class="fixed inset-0 bg-black/60 flex justify-center items-center z-50"
onclick={() => (selectedMember = null)}
>
<CouncilCard
name={selectedMember.name}
position={selectedMember.position}
email={selectedMember.email}
positionDescription={selectedMember.positionDescription}
yearProgram={selectedMember.yearProgram}
image={selectedMember.image}
/>
</div>
{/if}
</div> </div>
</Section> </Section>
<!-- <CouncilCard
name={vps[1].name}
position={vps[1].position}
email={vps[1].email}
positionDescription={vps[1].positionDescription}
yearProgram={vps[1].yearProgram}
image={vps[1].image}
></CouncilCard> -->