mirror of https://github.com/halo-dev/halo-admin
parent
1401f9ebe1
commit
e64c7e6baa
|
@ -14,24 +14,97 @@ import {
|
||||||
VTabbar,
|
VTabbar,
|
||||||
VTag,
|
VTag,
|
||||||
} from "@halo-dev/components";
|
} from "@halo-dev/components";
|
||||||
import { ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import { RouterLink } from "vue-router";
|
import { RouterLink } from "vue-router";
|
||||||
import { themes } from "@/modules/interface/themes/themes-mock";
|
import type { Metadata } from "@halo-dev/api-client";
|
||||||
|
|
||||||
const currentTheme = ref(themes[0]);
|
interface ThemeAuthor {
|
||||||
const changeTheme = ref(false);
|
name: string;
|
||||||
|
website: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ThemeSpec {
|
||||||
|
displayName: string;
|
||||||
|
author: ThemeAuthor;
|
||||||
|
description?: string;
|
||||||
|
logo?: string;
|
||||||
|
website?: string;
|
||||||
|
repo?: string;
|
||||||
|
version: string;
|
||||||
|
require: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Theme {
|
||||||
|
metadata: Metadata;
|
||||||
|
spec: ThemeSpec;
|
||||||
|
kind: string;
|
||||||
|
apiVersion: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const themes = ref<Theme[]>([]);
|
||||||
|
const currentTheme = ref<Theme>({} as Theme);
|
||||||
|
const themesModal = ref(false);
|
||||||
const themeActiveId = ref("detail");
|
const themeActiveId = ref("detail");
|
||||||
|
|
||||||
// eslint-disable-next-line
|
const handleChangeTheme = (theme: Theme) => {
|
||||||
const handleChangeTheme = (theme: any) => {
|
|
||||||
currentTheme.value = theme;
|
currentTheme.value = theme;
|
||||||
changeTheme.value = false;
|
themesModal.value = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleFetchThemes = async () => {
|
||||||
|
themes.value = await new Promise((resolve) => {
|
||||||
|
resolve([
|
||||||
|
{
|
||||||
|
apiVersion: "theme.halo.run/v1alpha1",
|
||||||
|
kind: "Theme",
|
||||||
|
metadata: {
|
||||||
|
name: "default",
|
||||||
|
},
|
||||||
|
spec: {
|
||||||
|
displayName: "Default",
|
||||||
|
author: {
|
||||||
|
name: "halo-dev",
|
||||||
|
website: "https://halo.run",
|
||||||
|
},
|
||||||
|
description: "Halo 2.0 的默认主题",
|
||||||
|
logo: "https://halo.run/logo",
|
||||||
|
website: "https://github.com/halo-sigs/theme-default.git",
|
||||||
|
repo: "https://github.com/halo-sigs/theme-default.git",
|
||||||
|
version: "1.0.0",
|
||||||
|
require: "2.0.0",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiVersion: "theme.halo.run/v1alpha1",
|
||||||
|
kind: "Theme",
|
||||||
|
metadata: {
|
||||||
|
name: "gtvg",
|
||||||
|
},
|
||||||
|
spec: {
|
||||||
|
displayName: "GTVG",
|
||||||
|
author: {
|
||||||
|
name: "guqing",
|
||||||
|
website: "https://guqing.xyz",
|
||||||
|
},
|
||||||
|
description: "测试主题",
|
||||||
|
logo: "https://guqing.xyz/logo.png",
|
||||||
|
website: "https://github.com/guqing/halo-theme-test.git",
|
||||||
|
repo: "https://github.com/guqing/halo-theme-test.git",
|
||||||
|
version: "1.0.0",
|
||||||
|
require: "2.0.0",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
currentTheme.value = themes.value[0];
|
||||||
|
};
|
||||||
|
|
||||||
|
onMounted(handleFetchThemes);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<VModal
|
<VModal
|
||||||
v-model:visible="changeTheme"
|
v-model:visible="themesModal"
|
||||||
:body-class="['!p-0']"
|
:body-class="['!p-0']"
|
||||||
:width="888"
|
:width="888"
|
||||||
title="已安装的主题"
|
title="已安装的主题"
|
||||||
|
@ -40,13 +113,15 @@ const handleChangeTheme = (theme: any) => {
|
||||||
<li
|
<li
|
||||||
v-for="(theme, index) in themes"
|
v-for="(theme, index) in themes"
|
||||||
:key="index"
|
:key="index"
|
||||||
:class="{ 'bg-gray-50': theme.activated }"
|
:class="{
|
||||||
|
'bg-gray-50': theme.metadata.name === currentTheme.metadata?.name,
|
||||||
|
}"
|
||||||
class="relative cursor-pointer py-4 transition-all hover:bg-gray-100"
|
class="relative cursor-pointer py-4 transition-all hover:bg-gray-100"
|
||||||
@click="handleChangeTheme(theme)"
|
@click="handleChangeTheme(theme)"
|
||||||
>
|
>
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<div
|
<div
|
||||||
v-show="theme.activated"
|
v-show="theme.metadata.name === currentTheme.metadata?.name"
|
||||||
class="absolute inset-y-0 left-0 w-0.5 bg-primary"
|
class="absolute inset-y-0 left-0 w-0.5 bg-primary"
|
||||||
></div>
|
></div>
|
||||||
<div class="w-40 px-4">
|
<div class="w-40 px-4">
|
||||||
|
@ -54,7 +129,7 @@ const handleChangeTheme = (theme: any) => {
|
||||||
class="group aspect-w-4 aspect-h-3 block w-full overflow-hidden rounded border bg-gray-100"
|
class="group aspect-w-4 aspect-h-3 block w-full overflow-hidden rounded border bg-gray-100"
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
:src="theme.screenshots"
|
:src="theme.spec.logo"
|
||||||
alt=""
|
alt=""
|
||||||
class="pointer-events-none object-cover group-hover:opacity-75"
|
class="pointer-events-none object-cover group-hover:opacity-75"
|
||||||
/>
|
/>
|
||||||
|
@ -64,12 +139,14 @@ const handleChangeTheme = (theme: any) => {
|
||||||
<VSpace align="start" direction="column" spacing="xs">
|
<VSpace align="start" direction="column" spacing="xs">
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
<span class="text-lg font-medium text-gray-900">
|
<span class="text-lg font-medium text-gray-900">
|
||||||
{{ theme.name }}
|
{{ theme.spec.displayName }}
|
||||||
</span>
|
</span>
|
||||||
<VTag v-if="theme.activated">当前启用</VTag>
|
<VTag>当前启用</VTag>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span class="text-sm text-gray-400">{{ theme.version }}</span>
|
<span class="text-sm text-gray-400">
|
||||||
|
{{ theme.spec.version }}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</VSpace>
|
</VSpace>
|
||||||
</div>
|
</div>
|
||||||
|
@ -77,12 +154,12 @@ const handleChangeTheme = (theme: any) => {
|
||||||
<VSpace spacing="lg">
|
<VSpace spacing="lg">
|
||||||
<div>
|
<div>
|
||||||
<span class="text-sm text-gray-400 hover:text-blue-600">
|
<span class="text-sm text-gray-400 hover:text-blue-600">
|
||||||
{{ theme.author.name }}
|
{{ theme.spec.author.name }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="theme.repo">
|
<div v-if="theme.spec.website">
|
||||||
<a
|
<a
|
||||||
:href="theme.repo"
|
:href="theme.spec.website"
|
||||||
class="text-gray-900 hover:text-blue-600"
|
class="text-gray-900 hover:text-blue-600"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
>
|
>
|
||||||
|
@ -98,24 +175,22 @@ const handleChangeTheme = (theme: any) => {
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<VButton @click="changeTheme = false">关闭</VButton>
|
<VButton @click="themesModal = false">关闭</VButton>
|
||||||
</template>
|
</template>
|
||||||
</VModal>
|
</VModal>
|
||||||
<VPageHeader :title="currentTheme.name">
|
<VPageHeader :title="currentTheme.spec?.displayName">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<IconPalette class="mr-2 self-center" />
|
<IconPalette class="mr-2 self-center" />
|
||||||
</template>
|
</template>
|
||||||
<template #actions>
|
<template #actions>
|
||||||
<VSpace>
|
<VSpace>
|
||||||
<VButton size="sm" type="default" @click="changeTheme = true">
|
<VButton size="sm" type="default" @click="themesModal = true">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<IconExchange class="h-full w-full" />
|
<IconExchange class="h-full w-full" />
|
||||||
</template>
|
</template>
|
||||||
切换主题
|
切换主题
|
||||||
</VButton>
|
</VButton>
|
||||||
<VButton v-if="!currentTheme.activated" size="sm" type="primary">
|
<VButton size="sm" type="primary"> 启用</VButton>
|
||||||
启用
|
|
||||||
</VButton>
|
|
||||||
<VButton :route="{ name: 'ThemeVisual' }" type="secondary">
|
<VButton :route="{ name: 'ThemeVisual' }" type="secondary">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<IconEye class="h-full w-full" />
|
<IconEye class="h-full w-full" />
|
||||||
|
@ -142,28 +217,26 @@ const handleChangeTheme = (theme: any) => {
|
||||||
<div v-if="themeActiveId === 'detail'">
|
<div v-if="themeActiveId === 'detail'">
|
||||||
<div class="px-4 py-4 sm:px-6">
|
<div class="px-4 py-4 sm:px-6">
|
||||||
<div class="flex flex-row gap-3">
|
<div class="flex flex-row gap-3">
|
||||||
<div v-if="currentTheme.logo">
|
<div v-if="currentTheme.spec?.logo">
|
||||||
<div
|
<div
|
||||||
class="h-12 w-12 overflow-hidden rounded border bg-white hover:shadow-sm"
|
class="h-12 w-12 overflow-hidden rounded border bg-white hover:shadow-sm"
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
:alt="currentTheme.name"
|
:alt="currentTheme.spec?.displayName"
|
||||||
:src="currentTheme.logo"
|
:src="currentTheme.spec?.logo"
|
||||||
class="h-full w-full"
|
class="h-full w-full"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium leading-6 text-gray-900">
|
<h3 class="text-lg font-medium leading-6 text-gray-900">
|
||||||
{{ currentTheme.name }}
|
{{ currentTheme.spec?.displayName }}
|
||||||
</h3>
|
</h3>
|
||||||
<p class="mt-1 flex max-w-2xl items-center gap-2">
|
<p class="mt-1 flex max-w-2xl items-center gap-2">
|
||||||
<span class="text-sm text-gray-500">
|
<span class="text-sm text-gray-500">
|
||||||
{{ currentTheme.version }}
|
{{ currentTheme.spec?.version }}
|
||||||
</span>
|
</span>
|
||||||
<VTag>
|
<VTag> 当前启用</VTag>
|
||||||
{{ currentTheme.activated ? "当前启用" : "未启用" }}
|
|
||||||
</VTag>
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -175,7 +248,7 @@ const handleChangeTheme = (theme: any) => {
|
||||||
>
|
>
|
||||||
<dt class="text-sm font-medium text-gray-900">ID</dt>
|
<dt class="text-sm font-medium text-gray-900">ID</dt>
|
||||||
<dd class="mt-1 text-sm text-gray-900 sm:col-span-3 sm:mt-0">
|
<dd class="mt-1 text-sm text-gray-900 sm:col-span-3 sm:mt-0">
|
||||||
{{ currentTheme.id }}
|
{{ currentTheme.metadata?.name }}
|
||||||
</dd>
|
</dd>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
@ -183,7 +256,7 @@ const handleChangeTheme = (theme: any) => {
|
||||||
>
|
>
|
||||||
<dt class="text-sm font-medium text-gray-900">作者</dt>
|
<dt class="text-sm font-medium text-gray-900">作者</dt>
|
||||||
<dd class="mt-1 text-sm text-gray-900 sm:col-span-3 sm:mt-0">
|
<dd class="mt-1 text-sm text-gray-900 sm:col-span-3 sm:mt-0">
|
||||||
{{ currentTheme.author.name }}
|
{{ currentTheme.spec?.author?.name }}
|
||||||
</dd>
|
</dd>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
@ -191,8 +264,8 @@ const handleChangeTheme = (theme: any) => {
|
||||||
>
|
>
|
||||||
<dt class="text-sm font-medium text-gray-900">网站</dt>
|
<dt class="text-sm font-medium text-gray-900">网站</dt>
|
||||||
<dd class="mt-1 text-sm text-gray-900 sm:col-span-3 sm:mt-0">
|
<dd class="mt-1 text-sm text-gray-900 sm:col-span-3 sm:mt-0">
|
||||||
<a :href="currentTheme.website" target="_blank">
|
<a :href="currentTheme.spec?.website" target="_blank">
|
||||||
{{ currentTheme.website }}
|
{{ currentTheme.spec?.website }}
|
||||||
</a>
|
</a>
|
||||||
</dd>
|
</dd>
|
||||||
</div>
|
</div>
|
||||||
|
@ -201,8 +274,8 @@ const handleChangeTheme = (theme: any) => {
|
||||||
>
|
>
|
||||||
<dt class="text-sm font-medium text-gray-900">源码仓库</dt>
|
<dt class="text-sm font-medium text-gray-900">源码仓库</dt>
|
||||||
<dd class="mt-1 text-sm text-gray-900 sm:col-span-3 sm:mt-0">
|
<dd class="mt-1 text-sm text-gray-900 sm:col-span-3 sm:mt-0">
|
||||||
<a :href="currentTheme.repo" target="_blank">
|
<a :href="currentTheme.spec?.website" target="_blank">
|
||||||
{{ currentTheme.repo }}
|
{{ currentTheme.spec?.website }}
|
||||||
</a>
|
</a>
|
||||||
</dd>
|
</dd>
|
||||||
</div>
|
</div>
|
||||||
|
@ -211,7 +284,7 @@ const handleChangeTheme = (theme: any) => {
|
||||||
>
|
>
|
||||||
<dt class="text-sm font-medium text-gray-900">当前版本</dt>
|
<dt class="text-sm font-medium text-gray-900">当前版本</dt>
|
||||||
<dd class="mt-1 text-sm text-gray-900 sm:col-span-3 sm:mt-0">
|
<dd class="mt-1 text-sm text-gray-900 sm:col-span-3 sm:mt-0">
|
||||||
{{ currentTheme.version }}
|
{{ currentTheme.spec?.version }}
|
||||||
</dd>
|
</dd>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
@ -219,7 +292,7 @@ const handleChangeTheme = (theme: any) => {
|
||||||
>
|
>
|
||||||
<dt class="text-sm font-medium text-gray-900">Halo 版本要求</dt>
|
<dt class="text-sm font-medium text-gray-900">Halo 版本要求</dt>
|
||||||
<dd class="mt-1 text-sm text-gray-900 sm:col-span-3 sm:mt-0">
|
<dd class="mt-1 text-sm text-gray-900 sm:col-span-3 sm:mt-0">
|
||||||
{{ currentTheme.require }}
|
{{ currentTheme.spec?.require }}
|
||||||
</dd>
|
</dd>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
@ -227,7 +300,7 @@ const handleChangeTheme = (theme: any) => {
|
||||||
>
|
>
|
||||||
<dt class="text-sm font-medium text-gray-900">存储位置</dt>
|
<dt class="text-sm font-medium text-gray-900">存储位置</dt>
|
||||||
<dd class="mt-1 text-sm text-gray-900 sm:col-span-3 sm:mt-0">
|
<dd class="mt-1 text-sm text-gray-900 sm:col-span-3 sm:mt-0">
|
||||||
{{ currentTheme.themePath }}
|
无
|
||||||
</dd>
|
</dd>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
|
|
@ -1,587 +0,0 @@
|
||||||
export const themes = [
|
|
||||||
{
|
|
||||||
id: "caicai_anatole",
|
|
||||||
name: "Anatole",
|
|
||||||
website: "https://github.com/halo-dev/halo-theme-anatole",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/halo-dev/halo-theme-anatole",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: "A other Halo theme",
|
|
||||||
logo: "https://avatars1.githubusercontent.com/u/1811819?s=460&v=4",
|
|
||||||
version: "1.2.0",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "Caicai",
|
|
||||||
website: "https://www.caicai.me",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/caicai_anatole",
|
|
||||||
folderName: "caicai_anatole",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/caicai_anatole/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "flex-block",
|
|
||||||
name: "flex-block",
|
|
||||||
website: "https://github.com/guiyunweb/halo-theme-flex-block",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/guiyunweb/halo-theme-flex-block",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: "flex-block主题修改",
|
|
||||||
logo: "https://image.guiyunweb.com/2021/84306692_p0_master1200_1608708448480_1625562784578_1625565770497.jpg",
|
|
||||||
version: "2.0",
|
|
||||||
require: null,
|
|
||||||
author: {
|
|
||||||
name: "Guiyunweb",
|
|
||||||
website: "https://guiyunweb.com",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/flex-block",
|
|
||||||
folderName: "flex-block",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/flex-block/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "cetr_sagiri",
|
|
||||||
name: "Sagiri",
|
|
||||||
website: "https://github.com/cetr/halo-theme-sagiri",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/cetr/halo-theme-sagiri",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: "As lovely as sagiri",
|
|
||||||
logo: null,
|
|
||||||
version: "2.2.8",
|
|
||||||
require: "1.5.0",
|
|
||||||
author: {
|
|
||||||
name: "知雨",
|
|
||||||
website: "https://coor.top",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/cetr_sagiri",
|
|
||||||
folderName: "cetr_sagiri",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/cetr_sagiri/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "iissnan_next",
|
|
||||||
name: "NexT",
|
|
||||||
website: "https://github.com/halo-dev/halo-theme-next",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/halo-dev/halo-theme-next",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: null,
|
|
||||||
logo: null,
|
|
||||||
version: "1.6.2",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "iissnan",
|
|
||||||
website: "https://iissnan.com",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/iissnan_next",
|
|
||||||
folderName: "iissnan_next",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/iissnan_next/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "louie_senpai_siren",
|
|
||||||
name: "Siren",
|
|
||||||
website: "https://github.com/louie-senpai/Siren",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/halo-dev/halo-theme-siren",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: null,
|
|
||||||
logo: null,
|
|
||||||
version: "1.1.0",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "louie-senpai",
|
|
||||||
website: "https://www.cssplus.org",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/louie_senpai_siren",
|
|
||||||
folderName: "louie_senpai_siren",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots:
|
|
||||||
"https://demo.halo.run/themes/louie_senpai_siren/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "txperl_story",
|
|
||||||
name: "Story",
|
|
||||||
website: "https://github.com/halo-dev/halo-theme-story",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/halo-dev/halo-theme-story",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: null,
|
|
||||||
logo: null,
|
|
||||||
version: "1.2.1",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "Trii Hsia",
|
|
||||||
website: "https://yumoe.com",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/txperl_story",
|
|
||||||
folderName: "txperl_story",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/txperl_story/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "xuanhuang_hux",
|
|
||||||
name: "Hux",
|
|
||||||
website: "https://github.com/halo-dev/halo-theme-hux",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/halo-dev/halo-theme-hux",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: null,
|
|
||||||
logo: null,
|
|
||||||
version: "1.3.2",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "Xuan Huang",
|
|
||||||
website: "https://huangxuan.me",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/xuanhuang_hux",
|
|
||||||
folderName: "xuanhuang_hux",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/xuanhuang_hux/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "ghost_casper",
|
|
||||||
name: "Casper",
|
|
||||||
website: "https://github.com/halo-dev/halo-theme-casper",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/halo-dev/halo-theme-casper",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: null,
|
|
||||||
logo: "https://avatars1.githubusercontent.com/u/2178663?s=200&v=4",
|
|
||||||
version: "1.8",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "Ghost",
|
|
||||||
website: "https://ghost.org",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/ghost_casper",
|
|
||||||
folderName: "ghost_casper",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/ghost_casper/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "codelunatic_simple",
|
|
||||||
name: "Simple Bootstrap",
|
|
||||||
website: "https://halo.cyblogs.top",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/codelunatic/halo-theme-simple-bootstrap",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: "使用Bootstrap构建的简洁主题",
|
|
||||||
logo: null,
|
|
||||||
version: "1.1.0",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "CY",
|
|
||||||
website: "https://halo.cyblogs.top",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/codelunatic_simple",
|
|
||||||
folderName: "codelunatic_simple",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots:
|
|
||||||
"https://demo.halo.run/themes/codelunatic_simple/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "onevcat_vno",
|
|
||||||
name: "Vno",
|
|
||||||
website: "https://github.com/halo-dev/halo-theme-vno",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/halo-dev/halo-theme-vno",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: null,
|
|
||||||
logo: null,
|
|
||||||
version: "1.4.1",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "Wei Wang",
|
|
||||||
website: "https://onevcat.com",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/onevcat_vno",
|
|
||||||
folderName: "onevcat_vno",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/onevcat_vno/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "ppoffice_icarus",
|
|
||||||
name: "Icarus",
|
|
||||||
website: "https://github.com/ppoffice/hexo-theme-icarus",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/halo-dev/halo-theme-icarus",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: null,
|
|
||||||
logo: null,
|
|
||||||
version: "2.7.0",
|
|
||||||
require: "1.5.0",
|
|
||||||
author: {
|
|
||||||
name: "ppoffice",
|
|
||||||
website: "https://github.com/ppoffice",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/ppoffice_icarus",
|
|
||||||
folderName: "ppoffice_icarus",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/ppoffice_icarus/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "hshan",
|
|
||||||
name: "hanshan",
|
|
||||||
website: "https://github.com/halo-dev/halo-theme-hshan",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/halo-dev/halo-theme-hshan",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: "大道至简",
|
|
||||||
logo: null,
|
|
||||||
version: "1.0",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "hshan",
|
|
||||||
website: "https://baozi.fun",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/hshan",
|
|
||||||
folderName: "hshan",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/hshan/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "LIlGG_Sakura",
|
|
||||||
name: "Sakura",
|
|
||||||
website: "https://github.com/LIlGG/halo-theme-sakura",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/LIlGG/halo-theme-sakura",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: "Halo 版本的樱花🌸主题",
|
|
||||||
logo: null,
|
|
||||||
version: "1.3.4",
|
|
||||||
require: "1.5.0",
|
|
||||||
author: {
|
|
||||||
name: "LIlGG",
|
|
||||||
website: "https://lixingyong.com",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/LIlGG_Sakura",
|
|
||||||
folderName: "LIlGG_Sakura",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/LIlGG_Sakura/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "fastbyte01_keepit",
|
|
||||||
name: "KeepIt",
|
|
||||||
website: "https://github.com/Fastbyte01/KeepIt",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/halo-dev/halo-theme-KeepIt",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: null,
|
|
||||||
logo: null,
|
|
||||||
version: "1.0.1",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "Fastbyte01",
|
|
||||||
website: "https://fsb01.com",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/fastbyte01_keepit",
|
|
||||||
folderName: "fastbyte01_keepit",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots:
|
|
||||||
"https://demo.halo.run/themes/fastbyte01_keepit/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "dream",
|
|
||||||
name: "Dream 1.0",
|
|
||||||
website: "https://blog.nineya.com",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/nineya/halo-theme-dream",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: "梦之城,童话梦境",
|
|
||||||
logo: "https://q1.qlogo.cn/g?b=qq&nk=361654768&s=640",
|
|
||||||
version: "1.5.1",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "nineya",
|
|
||||||
website: "https://www.nineya.com",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/dream",
|
|
||||||
folderName: "dream",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/dream/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "guqing_higan",
|
|
||||||
name: "彼岸",
|
|
||||||
website: "https://github.com/guqing/halo-theme-higan.git",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/guqing/halo-theme-higan.git",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description:
|
|
||||||
"生死为此岸,涅槃为彼岸;有苦无乐为此岸,无苦无乐为彼岸...它代表着对一切美好的精神追求,也代表着生生不息的轮回亦如本主题分黑白两色,阴极阳至,向死而生。",
|
|
||||||
logo: "https://guqing.xyz/logo.png",
|
|
||||||
version: "1.0.0",
|
|
||||||
require: "1.5.0",
|
|
||||||
author: {
|
|
||||||
name: "guqing",
|
|
||||||
website: "https://www.guqing.xyz",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/guqing_higan",
|
|
||||||
folderName: "guqing_higan",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/guqing_higan/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "chakhsu_pinghsu",
|
|
||||||
name: "Pinghsu",
|
|
||||||
website: "https://github.com/halo-dev/halo-theme-pinghsu",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/halo-dev/halo-theme-pinghsu",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: null,
|
|
||||||
logo: null,
|
|
||||||
version: "1.2.1",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "Chakhsu.Lau",
|
|
||||||
website: "https://www.linpx.com",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/chakhsu_pinghsu",
|
|
||||||
folderName: "chakhsu_pinghsu",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/chakhsu_pinghsu/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "imkun_fantastic",
|
|
||||||
name: "Fantastic",
|
|
||||||
website: "https://www.imkun.dev",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/halo-dev/halo-theme-imkundev",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: null,
|
|
||||||
logo: null,
|
|
||||||
version: "1.2.0",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "Quinn",
|
|
||||||
website: "https://github.com/imkundev",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/imkun_fantastic",
|
|
||||||
folderName: "imkun_fantastic",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/imkun_fantastic/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "butterfly",
|
|
||||||
name: "Butterfly",
|
|
||||||
website: "https://dhjdd.cn",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/dhjddcn/halo-theme-butterfly",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: "Halo主题 butterfly",
|
|
||||||
logo: "https://dhjdd.cn/logo",
|
|
||||||
version: "1.0.0",
|
|
||||||
require: "^1.4.11",
|
|
||||||
author: {
|
|
||||||
name: "小红",
|
|
||||||
website: "https://dhjdd.cn",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/butterfly",
|
|
||||||
folderName: "butterfly",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/butterfly/screenshot.jpg",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "bao",
|
|
||||||
name: "雪",
|
|
||||||
website: "https://github.com/xzhuz/halo-theme-xue",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/xzhuz/halo-theme-xue",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: "大道至简",
|
|
||||||
logo: null,
|
|
||||||
version: "1.4.2",
|
|
||||||
require: "1.5.1",
|
|
||||||
author: {
|
|
||||||
name: "雪",
|
|
||||||
website: "https://baozi.fun",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/bao",
|
|
||||||
folderName: "bao",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/bao/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "imzeuk_zozo",
|
|
||||||
name: "Zozo",
|
|
||||||
website: "https://github.com/halo-dev/halo-theme-zozo",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/halo-dev/halo-theme-zozo",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: "A simple and beautiful theme for Halo",
|
|
||||||
logo: null,
|
|
||||||
version: "1.0.1",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "zeuk",
|
|
||||||
website: "https://zeuk.me/",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/imzeuk_zozo",
|
|
||||||
folderName: "imzeuk_zozo",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/imzeuk_zozo/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "SumiMakito_Journal",
|
|
||||||
name: "Journal",
|
|
||||||
website: "https://github.com/SumiMakito/hexo-theme-journal",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/halo-dev/halo-theme-journal",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: "隻言片語・於此匯聚 – Moments piled up.",
|
|
||||||
logo: "https://avatars3.githubusercontent.com/u/5277268?s=460&v=4",
|
|
||||||
version: "2.0.4",
|
|
||||||
require: "1.3.0",
|
|
||||||
author: {
|
|
||||||
name: "SumiMakito",
|
|
||||||
website: "https://keep.moe",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/SumiMakito_Journal",
|
|
||||||
folderName: "SumiMakito_Journal",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots:
|
|
||||||
"https://demo.halo.run/themes/SumiMakito_Journal/screenshot.png",
|
|
||||||
postMetaField: null,
|
|
||||||
sheetMetaField: null,
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "joe2.0",
|
|
||||||
name: "Joe2.0",
|
|
||||||
website: "https://bbchin.com",
|
|
||||||
branch: "master",
|
|
||||||
repo: "https://github.com/qinhua/halo-theme-joe2.0",
|
|
||||||
updateStrategy: "RELEASE",
|
|
||||||
description: "Halo主题 Joe2.0",
|
|
||||||
logo: "https://bbchin.com/logo",
|
|
||||||
version: "1.0.10",
|
|
||||||
require: "^1.5.0",
|
|
||||||
author: {
|
|
||||||
name: "M酷",
|
|
||||||
website: "https://bbchin.com",
|
|
||||||
avatar: null,
|
|
||||||
},
|
|
||||||
themePath: "/root/.halo/templates/themes/joe2.0",
|
|
||||||
folderName: "joe2.0",
|
|
||||||
hasOptions: true,
|
|
||||||
screenshots: "https://demo.halo.run/themes/joe2.0/screenshot.jpg",
|
|
||||||
postMetaField: [
|
|
||||||
"enable_collect_check",
|
|
||||||
"enable_like",
|
|
||||||
"enable_aside",
|
|
||||||
"enable_read_limit",
|
|
||||||
"use_raw_content",
|
|
||||||
"enable_passage_tips",
|
|
||||||
"enable_page_meta",
|
|
||||||
"img_max_width",
|
|
||||||
"enable_donate",
|
|
||||||
"img_align",
|
|
||||||
"enable_toc",
|
|
||||||
"enable_fold_long_code",
|
|
||||||
"enable_share",
|
|
||||||
"toc_depth",
|
|
||||||
"enable_katex",
|
|
||||||
"enable_comment",
|
|
||||||
"code_theme",
|
|
||||||
"enable_copy",
|
|
||||||
],
|
|
||||||
sheetMetaField: [
|
|
||||||
"img_align",
|
|
||||||
"enable_collect_check",
|
|
||||||
"enable_aside",
|
|
||||||
"use_raw_content",
|
|
||||||
"enable_page_meta",
|
|
||||||
"enable_katex",
|
|
||||||
"enable_comment",
|
|
||||||
"img_max_width",
|
|
||||||
],
|
|
||||||
activated: false,
|
|
||||||
},
|
|
||||||
];
|
|
Loading…
Reference in New Issue