refactor: merge ecology into /members, redirect old routes

- ecology.vue replaced with redirect to /members?view=ecology
- connections.vue updated to skip the /ecology hop, redirects directly
- Remove Ecology nav entry; Members covers it
This commit is contained in:
Jennie Robinson Faber 2026-04-13 21:03:21 +01:00
parent 4fff0bf4cd
commit a448ea809d
3 changed files with 57 additions and 486 deletions

View file

@ -35,7 +35,18 @@
<div class="sidebar-section">Explore</div>
<ul class="sidebar-nav">
<li v-for="item in exploreItems" :key="item.path">
<a
v-if="item.external"
:href="item.path"
target="_blank"
rel="noopener"
@click="handleNavigate"
>
{{ item.label
}}<span class="external-hint" aria-hidden="true">ext</span>
</a>
<NuxtLink
v-else
:to="item.path"
:class="{ active: isActive(item.path) }"
@click="handleNavigate"
@ -50,7 +61,18 @@
<div class="sidebar-section">Navigate</div>
<ul class="sidebar-nav">
<li v-for="item in publicItems" :key="item.path">
<a
v-if="item.external"
:href="item.path"
target="_blank"
rel="noopener"
@click="handleNavigate"
>
{{ item.label
}}<span class="external-hint" aria-hidden="true">ext</span>
</a>
<NuxtLink
v-else
:to="item.path"
:class="{ active: isActive(item.path) }"
@click="handleNavigate"
@ -77,7 +99,18 @@
<div class="sidebar-section">Navigate</div>
<ul class="sidebar-nav">
<li v-for="item in publicItems" :key="item.path">
<a
v-if="item.external"
:href="item.path"
target="_blank"
rel="noopener"
@click="handleNavigate"
>
{{ item.label
}}<span class="external-hint" aria-hidden="true">ext</span>
</a>
<NuxtLink
v-else
:to="item.path"
:class="{ active: isActive(item.path) }"
@click="handleNavigate"
@ -105,12 +138,11 @@
<div class="sidebar-meta">
<ClientOnly>
Part of
<a href="https://babyghosts.fund" target="_blank">Baby Ghosts</a><br />
<a href="https://babyghosts.org" target="_blank">Baby Ghosts</a><br />
A Canadian nonprofit
<template #fallback>
Part of
<a href="https://babyghosts.fund" target="_blank">Baby Ghosts</a
><br />
<a href="https://babyghosts.org" target="_blank">Baby Ghosts</a><br />
A Canadian nonprofit
</template>
</ClientOnly>
@ -136,8 +168,8 @@ const route = useRoute();
const { isAuthenticated, memberData, logout } = useAuth();
const isDev = import.meta.dev;
const showOnboardingDot = computed(() =>
isAuthenticated.value && !memberData.value?.onboarding?.completedAt
const showOnboardingDot = computed(
() => isAuthenticated.value && !memberData.value?.onboarding?.completedAt,
);
const handleNavigate = () => {
@ -162,14 +194,10 @@ const publicItems = [
{ label: "Home", path: "/" },
{ label: "About", path: "/about" },
{ label: "Events", path: "/events" },
{ label: "Members", path: "/members" },
{ label: "Wiki", path: "https://wiki.ghostguild.org" },
{ label: "Wiki", path: "https://wiki.ghostguild.org", external: true },
];
const joinItems = [
{ label: "Become a member", path: "/join" },
{ label: "Propose an event", path: "/events" },
];
const joinItems = [{ label: "Become a member", path: "/join" }];
// Logged-in nav items
const youItems = [
@ -182,8 +210,7 @@ const youItems = [
const exploreItems = [
{ label: "Events", path: "/events" },
{ label: "Members", path: "/members" },
{ label: "Ecology", path: "/ecology" },
{ label: "Wiki", path: "https://wiki.ghostguild.org" },
{ label: "Wiki", path: "https://wiki.ghostguild.org", external: true },
{ label: "About", path: "/about" },
];
</script>
@ -289,6 +316,20 @@ const exploreItems = [
color: var(--candle-dim);
}
.external-hint {
font-size: 10px;
letter-spacing: 0.05em;
margin-left: 4px;
position: relative;
top: -0.5px;
}
.external-hint::before {
content: "[";
}
.external-hint::after {
content: "]";
}
.onboarding-dot {
display: inline-block;
width: 6px;