70 lines
2.3 KiB
Vue
70 lines
2.3 KiB
Vue
<template>
|
||
<div class="flex flex-col items-center px-4 py-10 gap-y-8 h-full">
|
||
<h1 class="text-[26px]">Nuxt & TDesign Vue Next</h1>
|
||
<div class="space-x-2">
|
||
<TButton
|
||
ghost
|
||
@click="
|
||
$colorMode.preference =
|
||
$colorMode.preference === 'light' ? 'dark' : 'light'
|
||
"
|
||
>
|
||
<template #icon>
|
||
<TIcon
|
||
class="mr-1"
|
||
:name="$colorMode.preference === 'light' ? 'heart' : 'heart-filled'"
|
||
/>
|
||
当前主题:{{ $colorMode.preference === 'light' ? 'Light' : 'Dark' }}
|
||
</template>
|
||
</TButton>
|
||
</div>
|
||
<div class="flex items-center gap-x-4">
|
||
<TButton @click="theme.setTheme('default')">默认主题</TButton>
|
||
<TButton @click="theme.setTheme('test')">主题 1</TButton>
|
||
<TButton @click="theme.setTheme('self')">主题 2</TButton>
|
||
</div>
|
||
<div class="grid grid-cols-2 sm:flex flex-row items-center gap-2">
|
||
<TButton>按钮示例</TButton>
|
||
<TButton theme="warning" loading>按钮示例</TButton>
|
||
<TButton theme="danger" disabled>按钮示例</TButton>
|
||
<TButton theme="success" variant="outline">按钮示例</TButton>
|
||
</div>
|
||
|
||
<div class="flex flex-col sm:flex-row items-center gap-4">
|
||
<!-- tag-name 和 TagName 写法都可以 -->
|
||
<t-switch v-model="isLoading" class="flex-none" size="large">
|
||
<template #label> 加载中 </template>
|
||
</t-switch>
|
||
<TTagInput v-model="tags" drag-sort clearable>
|
||
<template #label> 你喜欢的前端框架: </template>
|
||
</TTagInput>
|
||
</div>
|
||
<TAlert :theme="alertTheme" close>{{ date }}</TAlert>
|
||
</div>
|
||
</template>
|
||
|
||
<script setup lang="ts">
|
||
const theme = useThemeStore();
|
||
|
||
const tags = ref(['Vue', 'React', 'Angular']);
|
||
const isLoading = ref(true);
|
||
const alertTheme = ref<'success' | 'warning' | 'error' | 'info'>('success');
|
||
let date: Date;
|
||
|
||
onMounted(() => {
|
||
date = new Date();
|
||
setInterval(() => {
|
||
isLoading.value = !isLoading.value;
|
||
if (alertTheme.value === 'success') {
|
||
alertTheme.value = 'warning';
|
||
} else if (alertTheme.value === 'warning') {
|
||
alertTheme.value = 'error';
|
||
} else if (alertTheme.value === 'error') {
|
||
alertTheme.value = 'info';
|
||
} else {
|
||
alertTheme.value = 'success';
|
||
}
|
||
}, 2000);
|
||
});
|
||
</script>
|