2024-06-19 08:16:28 +02:00
|
|
|
<template>
|
|
|
|
|
<Tabs.Root v-model="tab">
|
2024-07-22 01:23:29 +02:00
|
|
|
<Tabs.List class="flex flex-row p-4 gap-4 bg-dark-800 relative ring-1 ring-white/5 overflow-x-auto">
|
2024-11-05 14:25:28 +01:00
|
|
|
<Tabs.Trigger :value="page" v-for="page of [SettingPages.Account, SettingPages.Behaviour, SettingPages.Appearance]" :as-child="true">
|
2024-06-21 04:09:09 +02:00
|
|
|
<ButtonBase class="capitalize hover:bg-white/5">
|
2024-06-19 08:16:28 +02:00
|
|
|
{{ page }}
|
2024-06-21 04:09:09 +02:00
|
|
|
</ButtonBase>
|
2024-06-19 08:16:28 +02:00
|
|
|
</Tabs.Trigger>
|
2024-07-22 01:23:29 +02:00
|
|
|
<Tabs.Indicator class="h-1 bg-gray-300 w-[--width] top-0 rounded-b" />
|
2024-06-19 08:16:28 +02:00
|
|
|
</Tabs.List>
|
|
|
|
|
<Tabs.Content :value="page" v-for="page of SettingPages">
|
|
|
|
|
<slot :name="page" />
|
|
|
|
|
</Tabs.Content>
|
|
|
|
|
</Tabs.Root>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
|
|
import { Tabs } from "@ark-ui/vue";
|
2024-06-27 15:03:03 +02:00
|
|
|
import ButtonBase from "~/packages/ui/components/buttons/button.vue";
|
2024-06-19 08:16:28 +02:00
|
|
|
import { SettingPages } from "~/settings";
|
|
|
|
|
|
|
|
|
|
const tab = ref<SettingPages>(
|
|
|
|
|
(window.location.hash.slice(1) as SettingPages) || SettingPages.Account,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// Update page hash when tab changes
|
|
|
|
|
watch(
|
|
|
|
|
tab,
|
|
|
|
|
(value) => {
|
|
|
|
|
window.location.hash = value;
|
|
|
|
|
},
|
|
|
|
|
{ immediate: true },
|
|
|
|
|
);
|
|
|
|
|
</script>
|