Centralize all hardcoded rgba color values into CSS custom properties and extract glass/glow styles into reusable utility classes (.glass, .glass-inner, .glow-border, .glow-border--animated) in main.css. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
60 lines
1.2 KiB
Vue
60 lines
1.2 KiB
Vue
<template>
|
|
<section class="attendee-list">
|
|
<h3 class="attendee-list__heading">
|
|
{{ attendees.length === 1 ? '1 Attendee' : `${attendees.length} Attendees` }}
|
|
</h3>
|
|
<ul v-if="attendees.length > 0" class="attendee-list__items">
|
|
<li v-for="(name, index) in attendees" :key="index" class="attendee-list__item">
|
|
{{ name }}
|
|
</li>
|
|
</ul>
|
|
<p v-else class="attendee-list__empty">No attendees yet.</p>
|
|
</section>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
defineProps<{
|
|
attendees: string[]
|
|
}>()
|
|
</script>
|
|
|
|
<style scoped>
|
|
.attendee-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--spacing-sm);
|
|
}
|
|
|
|
.attendee-list__heading {
|
|
font-size: 0.75rem;
|
|
font-weight: 700;
|
|
color: var(--color-text-muted);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.08em;
|
|
}
|
|
|
|
.attendee-list__items {
|
|
list-style: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--spacing-xs);
|
|
}
|
|
|
|
.attendee-list__item {
|
|
font-size: 0.95rem;
|
|
color: var(--color-text-soft);
|
|
line-height: 1.4;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.attendee-list__empty {
|
|
font-size: 0.9rem;
|
|
color: var(--color-text-muted);
|
|
font-style: italic;
|
|
}
|
|
</style>
|