mirror of
https://github.com/BillyOutlast/drop.git
synced 2026-02-04 08:41:17 +01:00
* feat: nginx + torrential basics & services system * fix: lint + i18n * fix: update torrential to remove openssl * feat: add torrential to Docker build * feat: move to self hosted runner * fix: move off self-hosted runner * fix: update nginx.conf * feat: torrential cache invalidation * fix: update torrential for cache invalidation * feat: integrity check task * fix: lint * feat: move to version ids * fix: client fixes and client-side checks * feat: new depot apis and version id fixes * feat: update torrential * feat: droplet bump and remove unsafe update functions * fix: lint * feat: v4 featureset: emulators, multi-launch commands * fix: lint * fix: mobile ui for game editor * feat: launch options * fix: lint * fix: remove axios, use $fetch * feat: metadata and task api improvements * feat: task actions * fix: slight styling issue * feat: fix style and lints * feat: totp backend routes * feat: oidc groups * fix: update drop-base * feat: creation of passkeys & totp * feat: totp signin * feat: webauthn mfa/signin * feat: launch selecting ui * fix: manually running tasks * feat: update add company game modal to use new SelectorGame * feat: executor selector * fix(docker): update rust to rust nightly for torrential build (#305) * feat: new version ui * feat: move package lookup to build time to allow for deno dev * fix: lint * feat: localisation cleanup * feat: apply localisation cleanup * feat: potential i18n refactor logic * feat: remove args from commands * fix: lint * fix: lockfile --------- Co-authored-by: Aden Lindsay <140392385+AdenMGB@users.noreply.github.com>
76 lines
2.0 KiB
Vue
76 lines
2.0 KiB
Vue
<template>
|
|
<div class="flex flex-col">
|
|
<!-- tabs-->
|
|
<div>
|
|
<div class="border-b border-white/10">
|
|
<nav class="-mb-px flex gap-x-2" aria-label="Tabs">
|
|
<NuxtLink
|
|
v-for="(tab, tabIdx) in navigation"
|
|
:key="tab.route"
|
|
:href="tab.route"
|
|
:class="[
|
|
currentNavigationIndex == tabIdx
|
|
? 'border-blue-400 text-blue-400'
|
|
: 'border-transparent text-gray-400 hover:border-white/20 hover:text-gray-300',
|
|
'group inline-flex items-center border-b-2 px-1 py-4 text-sm font-medium',
|
|
]"
|
|
:aria-current="tab ? 'page' : undefined"
|
|
>
|
|
<component
|
|
:is="tab.icon"
|
|
:class="[
|
|
currentNavigationIndex == tabIdx
|
|
? 'text-blue-400'
|
|
: 'text-gray-500 group-hover:text-gray-400',
|
|
'mr-2 -ml-0.5 size-5',
|
|
]"
|
|
aria-hidden="true"
|
|
/>
|
|
<span>{{ tab.label }}</span>
|
|
</NuxtLink>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
<!-- content -->
|
|
<div class="mt-4 grow flex">
|
|
<NuxtPage />
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import {
|
|
BuildingStorefrontIcon,
|
|
CodeBracketIcon,
|
|
ServerIcon,
|
|
} from "@heroicons/vue/24/outline";
|
|
|
|
const navigation: Array<NavigationItem & { icon: Component }> = [
|
|
{
|
|
label: $t("header.admin.settings.store"),
|
|
route: "/admin/settings",
|
|
prefix: "/admin/settings",
|
|
icon: BuildingStorefrontIcon,
|
|
},
|
|
{
|
|
label: $t("header.admin.settings.tokens"),
|
|
route: "/admin/settings/tokens",
|
|
prefix: "/admin/settings/tokens",
|
|
icon: CodeBracketIcon,
|
|
},
|
|
{
|
|
label: "Services",
|
|
route: "/admin/settings/services",
|
|
prefix: "/admin/settings/services",
|
|
icon: ServerIcon,
|
|
},
|
|
];
|
|
|
|
// const notifications = useNotifications();
|
|
// const unreadNotifications = computed(() =>
|
|
// notifications.value.filter((e) => !e.read)
|
|
// );
|
|
|
|
const currentNavigationIndex = useCurrentNavigationIndex(navigation);
|
|
</script>
|