Some icons look better using stroke over fill
This commit is contained in:
@@ -4,7 +4,10 @@
|
|||||||
:key="route?.title"
|
:key="route?.title"
|
||||||
:to="{ path: route?.route }"
|
:to="{ path: route?.route }"
|
||||||
>
|
>
|
||||||
<li class="navigation-link" :class="{ active: route.route == active }">
|
<li
|
||||||
|
class="navigation-link"
|
||||||
|
:class="{ active: matchesActiveRoute(), 'nofill-stroke': useStroke }"
|
||||||
|
>
|
||||||
<component :is="route.icon" class="navigation-icon"></component>
|
<component :is="route.icon" class="navigation-icon"></component>
|
||||||
<span>{{ route.title }}</span>
|
<span>{{ route.title }}</span>
|
||||||
</li>
|
</li>
|
||||||
@@ -19,12 +22,18 @@
|
|||||||
interface Props {
|
interface Props {
|
||||||
route: INavigationIcon;
|
route: INavigationIcon;
|
||||||
active?: string;
|
active?: string;
|
||||||
|
useStroke?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
defineProps<Props>();
|
const props = defineProps<Props>();
|
||||||
|
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
const loggedIn = computed(() => store.getters["user/loggedIn"]);
|
const loggedIn = computed(() => store.getters["user/loggedIn"]);
|
||||||
|
|
||||||
|
function matchesActiveRoute() {
|
||||||
|
const currentRoute = props.route.title.toLowerCase();
|
||||||
|
return props?.active?.includes(currentRoute);
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@@ -62,6 +71,18 @@
|
|||||||
margin-top: 0.25rem;
|
margin-top: 0.25rem;
|
||||||
color: var(--text-color-70);
|
color: var(--text-color-70);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.nofill-stroke {
|
||||||
|
.navigation-icon {
|
||||||
|
stroke: var(--text-color-70);
|
||||||
|
fill: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover .navigation-icon,
|
||||||
|
&.active .navigation-icon {
|
||||||
|
stroke: var(--text-color);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
:key="_route.route"
|
:key="_route.route"
|
||||||
:route="_route"
|
:route="_route"
|
||||||
:active="activeRoute"
|
:active="activeRoute"
|
||||||
|
:useStroke="_route?.useStroke"
|
||||||
/>
|
/>
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -50,6 +51,7 @@
|
|||||||
title: "Activity",
|
title: "Activity",
|
||||||
route: "/activity",
|
route: "/activity",
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
|
useStroke: true,
|
||||||
icon: IconActivity
|
icon: IconActivity
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -60,8 +62,9 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Settings",
|
title: "Settings",
|
||||||
route: "/profile?settings=true",
|
route: "/settings",
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
|
useStroke: true,
|
||||||
icon: IconSettings
|
icon: IconSettings
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -13,9 +13,3 @@
|
|||||||
<polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline>
|
<polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline>
|
||||||
</svg>
|
</svg>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
svg {
|
|
||||||
fill: none !important;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|||||||
@@ -3,4 +3,5 @@ export default interface INavigationIcon {
|
|||||||
route: string;
|
route: string;
|
||||||
icon: any; // eslint-disable-line @typescript-eslint/no-explicit-any
|
icon: any; // eslint-disable-line @typescript-eslint/no-explicit-any
|
||||||
requiresAuth?: boolean;
|
requiresAuth?: boolean;
|
||||||
|
useStroke?: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user