mirror of
https://github.com/versia-pub/frontend.git
synced 2025-12-06 08:28:20 +01:00
fix: 🐛 Fixes for logged-out view
This commit is contained in:
parent
f672ce5a69
commit
caf4759d74
|
|
@ -49,16 +49,26 @@
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
</DropdownMenuGroup>
|
</DropdownMenuGroup>
|
||||||
<DropdownMenuSeparator />
|
<DropdownMenuSeparator />
|
||||||
<DropdownMenuItem @click="signOut()">
|
<DropdownMenuItem @click="signOut()" v-if="identity">
|
||||||
<LogOut />
|
<LogOut />
|
||||||
Log out
|
Log out
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
|
<DropdownMenuItem :as="NuxtLink" href="/register" v-else>
|
||||||
|
<LogIn />
|
||||||
|
Register
|
||||||
|
</DropdownMenuItem>
|
||||||
</DropdownMenuContent>
|
</DropdownMenuContent>
|
||||||
</DropdownMenu>
|
</DropdownMenu>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { BadgeCheck, ChevronsUpDown, LogOut, UserPlus } from "lucide-vue-next";
|
import {
|
||||||
|
BadgeCheck,
|
||||||
|
ChevronsUpDown,
|
||||||
|
LogOut,
|
||||||
|
UserPlus,
|
||||||
|
LogIn,
|
||||||
|
} from "lucide-vue-next";
|
||||||
import { toast } from "vue-sonner";
|
import { toast } from "vue-sonner";
|
||||||
import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar";
|
import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar";
|
||||||
import {
|
import {
|
||||||
|
|
@ -71,6 +81,7 @@ import {
|
||||||
DropdownMenuTrigger,
|
DropdownMenuTrigger,
|
||||||
} from "../ui/dropdown-menu";
|
} from "../ui/dropdown-menu";
|
||||||
import { SidebarMenuButton } from "../ui/sidebar";
|
import { SidebarMenuButton } from "../ui/sidebar";
|
||||||
|
import { NuxtLink } from "#components";
|
||||||
|
|
||||||
const appData = useAppData();
|
const appData = useAppData();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,9 @@
|
||||||
<SidebarGroup>
|
<SidebarGroup>
|
||||||
<SidebarGroupLabel>Navigation</SidebarGroupLabel>
|
<SidebarGroupLabel>Navigation</SidebarGroupLabel>
|
||||||
<SidebarMenu>
|
<SidebarMenu>
|
||||||
<SidebarMenuItem v-for="item in data.other" :key="item.name">
|
<SidebarMenuItem v-for="item in data.other.filter(
|
||||||
|
i => i.requiresLogin ? !!identity : true,
|
||||||
|
)" :key="item.name">
|
||||||
<SidebarMenuButton as-child>
|
<SidebarMenuButton as-child>
|
||||||
<NuxtLink :href="item.url">
|
<NuxtLink :href="item.url">
|
||||||
<component :is="item.icon" />
|
<component :is="item.icon" />
|
||||||
|
|
@ -35,11 +37,10 @@
|
||||||
</SidebarMenuItem>
|
</SidebarMenuItem>
|
||||||
</SidebarMenu>
|
</SidebarMenu>
|
||||||
</SidebarGroup>
|
</SidebarGroup>
|
||||||
<SidebarGroup class="mt-auto">
|
<SidebarGroup v-if="identity" class="mt-auto">
|
||||||
<SidebarGroupLabel>More</SidebarGroupLabel>
|
<SidebarGroupLabel>More</SidebarGroupLabel>
|
||||||
<SidebarMenu>
|
<SidebarMenu>
|
||||||
<Collapsible v-for="item in data.navMain" :key="item.title" as-child
|
<Collapsible v-for="item in data.navMain" :key="item.title" as-child class="group/collapsible">
|
||||||
class="group/collapsible">
|
|
||||||
<SidebarMenuItem>
|
<SidebarMenuItem>
|
||||||
<CollapsibleTrigger as-child>
|
<CollapsibleTrigger as-child>
|
||||||
<SidebarMenuButton :tooltip="item.title">
|
<SidebarMenuButton :tooltip="item.title">
|
||||||
|
|
@ -75,12 +76,12 @@
|
||||||
</SidebarMenuItem>
|
</SidebarMenuItem>
|
||||||
<SidebarMenuItem class="flex flex-col gap-2">
|
<SidebarMenuItem class="flex flex-col gap-2">
|
||||||
<Button variant="default" size="lg" class="w-full group-data-[collapsible=icon]:px-4"
|
<Button variant="default" size="lg" class="w-full group-data-[collapsible=icon]:px-4"
|
||||||
v-if="identity"
|
v-if="identity" @click="useEvent('composer:open')">
|
||||||
@click="useEvent('composer:open')">
|
|
||||||
<Pen />
|
<Pen />
|
||||||
<span class="group-data-[collapsible=icon]:hidden">Compose</span>
|
<span class="group-data-[collapsible=icon]:hidden">Compose</span>
|
||||||
</Button>
|
</Button>
|
||||||
<Button variant="destructive" size="lg" class="w-full group-data-[collapsible=icon]:px-4" v-if="$pwa?.needRefresh" @click="$pwa?.updateServiceWorker(true)">
|
<Button variant="destructive" size="lg" class="w-full group-data-[collapsible=icon]:px-4"
|
||||||
|
v-if="$pwa?.needRefresh" @click="$pwa?.updateServiceWorker(true)">
|
||||||
<DownloadCloud />
|
<DownloadCloud />
|
||||||
<span class="group-data-[collapsible=icon]:hidden">Update</span>
|
<span class="group-data-[collapsible=icon]:hidden">Update</span>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
@ -93,36 +94,22 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import {
|
import {
|
||||||
BadgeCheck,
|
|
||||||
BedSingle,
|
BedSingle,
|
||||||
Bell,
|
Bell,
|
||||||
ChevronRight,
|
ChevronRight,
|
||||||
ChevronsUpDown,
|
|
||||||
DownloadCloud,
|
DownloadCloud,
|
||||||
Globe,
|
Globe,
|
||||||
House,
|
House,
|
||||||
LogOut,
|
|
||||||
MapIcon,
|
MapIcon,
|
||||||
Pen,
|
Pen,
|
||||||
RefreshCcw,
|
|
||||||
Settings2,
|
Settings2,
|
||||||
} from "lucide-vue-next";
|
} from "lucide-vue-next";
|
||||||
import { toast } from "vue-sonner";
|
import { Avatar, AvatarImage } from "~/components/ui/avatar";
|
||||||
import { Avatar, AvatarFallback, AvatarImage } from "~/components/ui/avatar";
|
|
||||||
import {
|
import {
|
||||||
Collapsible,
|
Collapsible,
|
||||||
CollapsibleContent,
|
CollapsibleContent,
|
||||||
CollapsibleTrigger,
|
CollapsibleTrigger,
|
||||||
} from "~/components/ui/collapsible";
|
} from "~/components/ui/collapsible";
|
||||||
import {
|
|
||||||
DropdownMenu,
|
|
||||||
DropdownMenuContent,
|
|
||||||
DropdownMenuGroup,
|
|
||||||
DropdownMenuItem,
|
|
||||||
DropdownMenuLabel,
|
|
||||||
DropdownMenuSeparator,
|
|
||||||
DropdownMenuTrigger,
|
|
||||||
} from "~/components/ui/dropdown-menu";
|
|
||||||
import {
|
import {
|
||||||
Sidebar,
|
Sidebar,
|
||||||
SidebarContent,
|
SidebarContent,
|
||||||
|
|
@ -173,26 +160,31 @@ const data = {
|
||||||
name: "Home",
|
name: "Home",
|
||||||
url: "/home",
|
url: "/home",
|
||||||
icon: House,
|
icon: House,
|
||||||
|
requiresLogin: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Public",
|
name: "Public",
|
||||||
url: "/public",
|
url: "/public",
|
||||||
icon: MapIcon,
|
icon: MapIcon,
|
||||||
|
requiresLogin: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Local",
|
name: "Local",
|
||||||
url: "/local",
|
url: "/local",
|
||||||
icon: BedSingle,
|
icon: BedSingle,
|
||||||
|
requiresLogin: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Global",
|
name: "Global",
|
||||||
url: "/global",
|
url: "/global",
|
||||||
icon: Globe,
|
icon: Globe,
|
||||||
|
requiresLogin: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Notifications",
|
name: "Notifications",
|
||||||
url: "/notifications",
|
url: "/notifications",
|
||||||
icon: Bell,
|
icon: Bell,
|
||||||
|
requiresLogin: true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,6 @@ import RightSidebar from "./right-sidebar.vue";
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
</SidebarInset>
|
</SidebarInset>
|
||||||
<RightSidebar />
|
<RightSidebar v-if="identity" />
|
||||||
</SidebarProvider>
|
</SidebarProvider>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue