forked from didirus/AstralRinth
bd97ace974
* feat: implement access tab with dummy data * fix: spacing * feat: qa * feat: implement backend * qa: qa pass * feat: fix user "search" * fix: lint * feat: change to bitfield * feat: fix fields * fix: lint * fix: lint * feat: hook up api * feat: fix permissions * feat: audit log table event start * feat: better mobile mode for audit log table * feat: i18n * feat: qa * feat: enforce permissions * feat: email template start * feat: qa * fix: tooltip bug * feat: qa * impl: sse support in api-client * feat: sse impl * fix: desync path * feat: time frame picker from analytics * feat: QA * fix: spacing * fix: permisison audit log entries * fix: hosting manage page shared server detection * fix: lint * feat: qa + lint * feat: audit log table sort by time * feat: finish frontend panel stuff * fix: lint * fix: backend alignment * fix: lint * fix: supress friend errors * feat: qa * fix: qa * fix: lint * fix: utils barrel * fix: safari cookies in dev * fix: pin nuxt * feat: fixes + notif fix * fix: notifications * feat: qa * fix: notification sync not happening immediately * fix: qa * fix: qa * feat: qa * blog + prepr * feat: toast shit * blog images * thumbnail update one last time * prepr * feat: use reinvite route * update images * fix: reinvite stuff * fix: lint * fix: alignment of save bar * fix: notif sizing * fix: split up access * fix: lint * fix: lint * fix: link --------- Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
62 lines
1.1 KiB
Vue
62 lines
1.1 KiB
Vue
<template>
|
|
<div
|
|
class="notification-stack"
|
|
:class="{
|
|
'has-sidebar': hasSidebar,
|
|
}"
|
|
>
|
|
<TransitionGroup name="notification-stack-item" tag="div" class="notification-stack-items">
|
|
<slot />
|
|
</TransitionGroup>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
withDefaults(
|
|
defineProps<{
|
|
hasSidebar?: boolean
|
|
}>(),
|
|
{
|
|
hasSidebar: false,
|
|
},
|
|
)
|
|
</script>
|
|
|
|
<style scoped>
|
|
.notification-stack {
|
|
position: fixed;
|
|
top: calc(var(--top-bar-height, 3rem) + 1rem);
|
|
right: 1rem;
|
|
z-index: 200;
|
|
width: min(420px, calc(100vw - 1.5rem));
|
|
}
|
|
|
|
.notification-stack.has-sidebar {
|
|
right: calc(var(--right-bar-width, 0px) + 1rem);
|
|
}
|
|
|
|
@media screen and (max-width: 500px) {
|
|
.notification-stack {
|
|
right: 0.75rem;
|
|
}
|
|
}
|
|
|
|
.notification-stack-items {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1rem;
|
|
}
|
|
|
|
:global(.notification-stack-item-enter-active),
|
|
:global(.notification-stack-item-leave-active),
|
|
:global(.notification-stack-item-move) {
|
|
transition: all 0.3s ease-in-out;
|
|
}
|
|
|
|
:global(.notification-stack-item-enter-from),
|
|
:global(.notification-stack-item-leave-to) {
|
|
opacity: 0;
|
|
transform: translateX(100%) scale(0.95);
|
|
}
|
|
</style>
|