summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkTabs.vue
diff options
context:
space:
mode:
Diffstat (limited to 'packages/frontend/src/components/MkTabs.vue')
-rw-r--r--packages/frontend/src/components/MkTabs.vue36
1 files changed, 23 insertions, 13 deletions
diff --git a/packages/frontend/src/components/MkTabs.vue b/packages/frontend/src/components/MkTabs.vue
index 5c4a67b026..57fb6548ba 100644
--- a/packages/frontend/src/components/MkTabs.vue
+++ b/packages/frontend/src/components/MkTabs.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<div :class="$style.tabs">
+<div :class="[$style.tabs, { [$style.centered]: props.centered }]">
<div :class="$style.tabsInner">
<button
v-for="t in tabs" :ref="(el) => tabRefs[t.key] = (el as HTMLElement)" v-tooltip.noDelay="t.title"
@@ -30,7 +30,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<div
ref="tabHighlightEl"
- :class="[$style.tabHighlight, { [$style.animate]: prefer.s.animation }]"
+ :class="[$style.tabHighlight, { [$style.animate]: prefer.s.animation, [$style.tabHighlightUpper]: tabHighlightUpper }]"
></div>
</div>
</template>
@@ -39,17 +39,10 @@ SPDX-License-Identifier: AGPL-3.0-only
export type Tab = {
key: string;
onClick?: (ev: MouseEvent) => void;
-} & (
- | {
- iconOnly?: false;
- title: string;
- icon?: string;
- }
- | {
- iconOnly: true;
- icon: string;
- }
-);
+ iconOnly?: boolean;
+ title: string;
+ icon?: string;
+};
</script>
<script lang="ts" setup>
@@ -59,6 +52,8 @@ import { prefer } from '@/preferences.js';
const props = withDefaults(defineProps<{
tabs?: Tab[];
tab?: string;
+ centered?: boolean;
+ tabHighlightUpper?: boolean;
}>(), {
tabs: () => ([] as Tab[]),
});
@@ -169,6 +164,16 @@ onUnmounted(() => {
overflow-x: auto;
overflow-y: hidden;
scrollbar-width: none;
+
+ &.centered {
+ text-align: center;
+ }
+}
+
+@container (max-width: 450px) {
+ .tabs {
+ font-size: 80%;
+ }
}
.tabsInner {
@@ -227,5 +232,10 @@ onUnmounted(() => {
&.animate {
transition: width 0.15s ease, left 0.15s ease;
}
+
+ &.tabHighlightUpper {
+ top: 0;
+ bottom: auto;
+ }
}
</style>