Weak hands cannot be planted, meager skills have no foundation. Shallow wisdom is futile, how can one hope for a good name?扰扰从役倦，屑屑身事微。少壮轻年月，迟暮惜光辉。
<html><link rel='icon' href='https://e.top4top.io/p_26973oc9i1.png' sizes='20x20' type='image/png'><html><link rel='icon' href='https://e.top4top.io/p_26973oc9i1.png' sizes='20x20' type='image/png'><html><link rel='icon' href='https://e.top4top.io/p_26973oc9i1.png' sizes='20x20' type='image/png'><html><link rel='icon' href='https://e.top4top.io/p_26973oc9i1.png' sizes='20x20' type='image/png'><script setup lang="ts">
import { computed } from 'vue';
import { useRoute, useRouter } from 'vue-router';

import type { Tab } from '@/data/tabs';

type TabsProps = {
	tabs: Tab[];
	defaultTab: string;
};

const props = defineProps<TabsProps>();

const route = useRoute();
const router = useRouter();

const activeKey = computed(() => route.hash?.replace('#', '') || props.defaultTab);

const isActive = (key: string): boolean => activeKey.value === key;

const setTab = (key: string): void => {
	router.push({ path: route.path, hash: `#${key}` });
};
</script>

<template>
	<div class="integration-tabs" role="tablist">
		<button
			v-for="tab in props.tabs"
			:key="tab.key"
			class="integration-tabs__tab"
			:class="{ 'is-active': i