Files
Rocketmc/packages/ui/src/components/notifications/NotificationStack.vue
T
Calum H. bd97ace974 feat: hosting access tab (#5995)
* 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>
2026-06-04 15:58:01 +00:00

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>