43 lines
1.2 KiB
Vue
43 lines
1.2 KiB
Vue
<script setup lang="ts">
|
|
defineProps<{
|
|
/** Show the back button on small screens */
|
|
backOnSmallScreen?: boolean
|
|
/** Show the back button on both small and big screens */
|
|
back?: boolean
|
|
}>()
|
|
</script>
|
|
|
|
<template>
|
|
<div>
|
|
<div
|
|
sticky top-0 z10 backdrop-blur
|
|
pt="[env(safe-area-inset-top,0)]"
|
|
border="b base" bg="[rgba(var(--c-bg-base-rgb),0.7)]"
|
|
>
|
|
<div :class="{ 'xl:hidden': !back }" flex justify-between px5 py2>
|
|
<div flex gap-3 items-center overflow-hidden py2>
|
|
<NuxtLink
|
|
v-if="backOnSmallScreen || back" flex="~ gap1" items-center btn-text p-0
|
|
:class="{ 'lg:hidden': backOnSmallScreen }"
|
|
@click="$router.go(-1)"
|
|
>
|
|
<div i-ri:arrow-left-line class="rtl-flip" />
|
|
</NuxtLink>
|
|
<div truncate>
|
|
<slot name="title" />
|
|
</div>
|
|
<div h-7 w-1px />
|
|
</div>
|
|
<div flex items-center flex-shrink-0 gap-x-2>
|
|
<slot name="actions" />
|
|
<PwaBadge lg:hidden />
|
|
<NavUser v-if="isMastoInitialised" />
|
|
<NavUserSkeleton v-else />
|
|
</div>
|
|
</div>
|
|
<slot name="header" />
|
|
</div>
|
|
<slot />
|
|
</div>
|
|
</template>
|