Compare commits
12
Commits
v1.0.0
...
d3ba189a7d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d3ba189a7d | ||
|
|
9f677a9f0d | ||
|
|
c1950e142a | ||
|
|
032b5601ac | ||
|
|
d01664197f | ||
|
|
bcc221c3bd | ||
|
|
430d107d44 | ||
|
|
9d0bfcfb4f | ||
|
|
f48db60690 | ||
|
|
67dc37c308 | ||
|
|
0c094acbc5 | ||
|
|
788d0cc488 |
+11
-2
@@ -1,18 +1,24 @@
|
|||||||
# build output
|
# build output
|
||||||
dist/
|
dist/
|
||||||
|
templates/
|
||||||
|
|
||||||
# generated types
|
# generated types
|
||||||
.astro/
|
.astro/
|
||||||
|
|
||||||
# dependencies
|
# dependencies
|
||||||
node_modules/
|
node_modules/
|
||||||
|
|
||||||
|
# docs site
|
||||||
|
docs/.vitepress/cache/
|
||||||
|
docs/.vitepress/dist/
|
||||||
|
docs/node_modules/
|
||||||
|
|
||||||
# logs
|
# logs
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
pnpm-debug.log*
|
pnpm-debug.log*
|
||||||
|
|
||||||
|
|
||||||
# environment variables
|
# environment variables
|
||||||
.env
|
.env
|
||||||
.env.production
|
.env.production
|
||||||
@@ -23,4 +29,7 @@ pnpm-debug.log*
|
|||||||
# jetbrains setting folder
|
# jetbrains setting folder
|
||||||
.idea/
|
.idea/
|
||||||
|
|
||||||
templates/
|
# AI working artifacts
|
||||||
|
llms.txt
|
||||||
|
|
||||||
|
.workbuddy/
|
||||||
|
|||||||
@@ -4,31 +4,73 @@
|
|||||||
|
|
||||||
> 本项目由 AI 开发完成,人工仅进行部分功能测试及问题找寻
|
> 本项目由 AI 开发完成,人工仅进行部分功能测试及问题找寻
|
||||||
|
|
||||||
|
## 环境要求
|
||||||
|
|
||||||
|
- Halo **2.26.0 及以上**(页面布局契约、微信读书页面均依赖 2.26 的新能力)
|
||||||
|
|
||||||
## 特点
|
## 特点
|
||||||
|
|
||||||
1. **响应式设计** — 适配桌面端与移动端,支持暗色模式
|
1. **响应式设计** — 适配桌面端与移动端,支持暗色模式,移动端使用动态视口单位适配地址栏
|
||||||
2. **插件兼容性** — 适配 8 款常用 Halo 插件,安装即用
|
2. **插件兼容性** — 适配 10 款常用 Halo 插件,安装即用;提供页面布局契约,插件前台页面自动复用主题外观
|
||||||
3. **内置灯箱** — 主题内置 LightGallery 灯箱,支持 EXIF 信息展示;安装 lightgallery.js 插件后自动禁用内置灯箱
|
3. **内置灯箱** — 主题内置 LightGallery 灯箱,支持 EXIF 信息展示;安装 lightgallery.js 插件后自动禁用
|
||||||
4. **可配置性** — 丰富的后台设置项,支持自定义首页模块、文章卡片、导航栏样式等
|
4. **可配置性** — 17 个设置分组、122 个配置项,几乎所有模块可独立开关
|
||||||
5. **性能优化** — 图片懒加载、CSS/HTML 压缩、requestAnimationFrame 节流、Vue 组件按需加载
|
5. **性能优化** — 服务端字数统计(API 扩展包)、图片懒加载与响应式缩略图、滚动吸附、CSS/HTML 压缩
|
||||||
|
6. **页面布局契约** — 提供 `templates/layout.html`,插件页面不再回退到 Halo 内置布局
|
||||||
|
|
||||||
## 预览
|
## 预览
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 已适配插件
|
## 已适配插件
|
||||||
|
|
||||||
| 插件名称 | 插件标识 | 适配页面路由 | 说明 |
|
| 插件名称 | 插件标识 | 适配页面路由 | 说明 |
|
||||||
|----------|---------|-------------|------|
|
|----------|---------|-------------|------|
|
||||||
| [瞬间](https://halo.run/store/apps/app-SnwWD) | `PluginMoments` | `/moments` | 瞬间动态页面,支持点赞、评论、标签筛选 |
|
| [瞬间](https://halo.run/store/apps/app-SnwWD) | `PluginMoments` | `/moments` | 瞬间动态页面,支持点赞、评论、标签筛选、顶部封面 |
|
||||||
| [图库](https://halo.run/store/apps/app-BmQJW) | `PluginPhotos` | `/photos` | 图片展示页面,支持分组、灯箱预览 |
|
| [图库](https://halo.run/store/apps/app-BmQJW) | `PluginPhotos` | `/photos` | 图片展示页面,支持分组、灯箱预览 |
|
||||||
| [友情链接](https://halo.run/store/apps/app-hqbe) | `PluginLinks` | `/links` | 友链展示页面,支持分组展示 |
|
| [友情链接](https://halo.run/store/apps/app-hfbQg) | `PluginLinks` | `/links` | 友链展示页面,支持随机排列、随机传送门、评论区开关 |
|
||||||
| [朋友圈](https://github.com/halo-sigs/plugin-friends) | `plugin-friends` | `/friends` | RSS 订阅朋友圈页面 |
|
| [朋友圈](https://github.com/halo-sigs/plugin-friends) | `plugin-friends` | `/friends` | RSS 订阅朋友圈页面 |
|
||||||
| [装备管理](https://github.com/chengzhongxue/plugin-equipment) | `equipment` | `/equipments` | 装备展示页面,按分组展示,支持封面图 |
|
| [装备管理](https://github.com/chengzhongxue/plugin-equipment) | `equipment` | `/equipments` | 装备展示页面,按分组展示,支持封面图 |
|
||||||
| [豆瓣](https://github.com/chengzhongxue/plugin-douban) | `plugin-douban` | `/douban` | 豆瓣记录页面,支持类型/状态/标签筛选,默认电影 |
|
| [豆瓣](https://github.com/chengzhongxue/plugin-douban) | `plugin-douban` | `/douban` | 豆瓣记录页面,支持类型/状态/标签筛选,默认电影 |
|
||||||
| [Steam 信息展示](https://github.com/Tim0x0/halo-plugin-steam) | `PluginSteam` | `/steam` | Steam 游戏库页面,含用户资料、统计数据、最近游玩、游戏库分页 |
|
| [Steam 信息展示](https://github.com/Tim0x0/halo-plugin-steam) | `PluginSteam` | `/steam` | Steam 游戏库页面,含用户资料、统计数据、最近游玩、游戏库分页 |
|
||||||
|
| [微信读书](https://github.com/yeora26/halo-weread-plugin) | `halo-weread-plugin` | 自定义页面 | 书架展示页面,见下方「自定义页面模板」 |
|
||||||
|
| [记得](https://github.com/yyliucha/plugin-important-dates) | `plugin-important-dates` | `/important-dates` | 重要日期 / 牵挂的人 / 爱车双视图页面,见下方「扩展页面」 |
|
||||||
|
| [API 扩展包](https://github.com/HowieHz/halo-plugin-extra-api) | `extra-api` | 全站 | 服务端字数统计、中英文混排排版、可选服务端代码高亮 |
|
||||||
|
|
||||||
> **注意**:插件需要单独安装,安装后主题会自动适配对应页面。若未安装某插件,对应页面不会出现。
|
> **注意**:插件需要单独安装,安装后主题会自动适配对应页面。若未安装某插件,对应页面或功能自动隐藏/降级,不会报错。
|
||||||
|
|
||||||
|
## 自定义页面模板
|
||||||
|
|
||||||
|
在 Halo 后台「页面 → 新建 → 自定义模板」中选择使用:
|
||||||
|
|
||||||
|
| 模板名 | 模板文件 | 说明 |
|
||||||
|
|--------|---------|------|
|
||||||
|
| 留言板 | `page_messageboard.html` | 留言墙页面,标题与副标题可配置 |
|
||||||
|
| 订阅 | `page_subscriptions.html` | 博友文章订阅动态,依赖链接管理插件的 RSS 订阅,支持分页/下滑加载与列表/网格布局 |
|
||||||
|
| 微信读书 | `weread.html` | 微信读书书架展示,依赖微信读书插件,访客免登录查看 |
|
||||||
|
|
||||||
|
## 主要功能
|
||||||
|
|
||||||
|
### 首页
|
||||||
|
|
||||||
|
- Hero 首屏:明暗双背景图、大标题/副标题独立配色、一言(支持自动刷新与淡入淡出过渡)、下滑箭头平滑滚动
|
||||||
|
- 欢迎弹窗:基于访客 IP 地理定位的欢迎提示,支持 5 种位置、自定义 API 与会话去重开关
|
||||||
|
- 滚动吸附:首屏与内容区之间滚轮/触摸自动吸附
|
||||||
|
- 文章卡片:可配置显示字数(依赖 API 扩展包)、阅读量、分类、标签、摘要行数
|
||||||
|
|
||||||
|
### 文章
|
||||||
|
|
||||||
|
- 目录(TOC):桌面端侧栏 + 移动端抽屉,滚动高亮、展开模式可选
|
||||||
|
- 上下篇导航:悬停反馈与方向箭头动画
|
||||||
|
- 相关推荐、分享按钮、赞赏、版权声明可独立开关
|
||||||
|
- 字数与阅读时间:优先使用 API 扩展包的服务端统计,未安装时前端计算兜底
|
||||||
|
|
||||||
|
### 全局
|
||||||
|
|
||||||
|
- 点击特效:核心价值观 / 爱心 / 烟花 / 粒子等 9 种可选
|
||||||
|
- 页脚全站统计:文章、分类、评论、访问、点赞、总字数,支持开关与统计项选择(默认开启)
|
||||||
|
- 动效:呼吸动画、滚动渐入,可独立关闭
|
||||||
|
- 备案信息:ICP 与公网安备号,公网安备自动带徽标
|
||||||
|
- 鼠标光感跟随已移除(性能考量)
|
||||||
|
|
||||||
## 灯箱集成
|
## 灯箱集成
|
||||||
|
|
||||||
@@ -56,34 +98,65 @@
|
|||||||
或从源码构建:
|
或从源码构建:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/warm-island/theme-warm-island.git
|
git clone https://git.nxxy335.top/nxxy335/halo-theme-WarmIsland.git
|
||||||
cd theme-warm-island
|
cd halo-theme-WarmIsland
|
||||||
npm install
|
pnpm install
|
||||||
npm run build
|
pnpm build
|
||||||
```
|
```
|
||||||
|
|
||||||
构建产物在 `templates/` 目录下,将其复制到 Halo 主题目录即可。
|
构建产物在 `templates/` 目录下,同时会生成 `dist/` 内的安装包。
|
||||||
|
|
||||||
## 开发
|
## 开发
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 安装依赖
|
# 安装依赖
|
||||||
npm install
|
pnpm install
|
||||||
|
|
||||||
# 开发模式(监听文件变化)
|
# 开发模式(监听文件变化,自动构建到 templates/)
|
||||||
npm run dev
|
pnpm dev
|
||||||
|
|
||||||
# 构建
|
# 构建
|
||||||
npm run build
|
pnpm build
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 目录结构
|
||||||
|
|
||||||
|
```
|
||||||
|
├── src/
|
||||||
|
│ ├── components/ # 组件(导航、页脚、Hero、弹窗、特效等)
|
||||||
|
│ ├── layouts/ # Layout.astro(含页面布局契约渲染模式)
|
||||||
|
│ ├── pages/ # 页面模板(构建后输出到 templates/)
|
||||||
|
│ └── styles/ # SCSS 样式(正文样式在 _content.scss,全局生效)
|
||||||
|
├── templates/ # 构建产物,Halo 实际加载的模板
|
||||||
|
├── settings.yaml # 后台设置项定义(16 分组 / 117 项)
|
||||||
|
└── theme.yaml # 主题清单与自定义页面模板注册
|
||||||
|
```
|
||||||
|
|
||||||
|
### 主题开发注意事项
|
||||||
|
|
||||||
|
- **Thymeleaf 字符串字面量必须加单引号**:`th:text="'文本'"`,裸中文遇到逗号/空格/emoji 会导致页面 500
|
||||||
|
- **正文样式必须写在全局样式表**(`src/styles/_content.scss`):Astro scoped 样式对 Thymeleaf 运行时注入的内容无效
|
||||||
|
- **内联脚本统一加 `th:inline="none"`**:避免 Thymeleaf 解析脚本中的 `[[` / `[(` / `${}`
|
||||||
|
- 修改主题外观无需单独维护 `layout.astro`:页面布局契约复用 `Layout.astro`,构建时自动生成
|
||||||
|
|
||||||
## 技术栈
|
## 技术栈
|
||||||
|
|
||||||
- [Halo](https://halo.run) 2.24+
|
- [Halo](https://halo.run) 2.26+
|
||||||
- [Astro](https://astro.build) + [vite-plugin-halo-theme](https://github.com/halo-sigs/vite-plugin-halo-theme)
|
- [Astro](https://astro.build) + [vite-plugin-halo-theme](https://github.com/halo-sigs/vite-plugin-halo-theme)
|
||||||
- [Thymeleaf](https://www.thymeleaf.org) 模板引擎
|
- [Thymeleaf](https://www.thymeleaf.org) 模板引擎
|
||||||
- [Vue 3](https://vuejs.org) Islands 交互组件
|
- [Sass](https://sass-lang.com/) 样式
|
||||||
|
|
||||||
## 许可
|
## 许可
|
||||||
|
|
||||||
[GPL-3.0](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
[GPL-3.0](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
||||||
|
|
||||||
|
## 图标来源
|
||||||
|
|
||||||
|
本主题使用的图标来自以下开源项目:
|
||||||
|
|
||||||
|
| 来源 | 协议 | 用途 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| [Font Awesome](https://fontawesome.com/) Free v7.2.0 | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) / [SIL OFL 1.1](https://scripts.sil.org/OFL) | QQ 分享图标 |
|
||||||
|
| [Simple Icons](https://simpleicons.org/) | [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/) | 微博、X、Facebook、Telegram 分享图标 |
|
||||||
|
| [Feather Icons](https://feathericons.com/) | [MIT](https://opensource.org/licenses/MIT) | 导航、界面交互图标 |
|
||||||
|
| [Halo](https://halo.run/) | [GPL-3.0](https://www.gnu.org/licenses/gpl-3.0.en.html) | 主题内置图标 |
|
||||||
|
|||||||
@@ -1,91 +0,0 @@
|
|||||||
const http = require('http');
|
|
||||||
|
|
||||||
function apiCall(method, path, data) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
const options = {
|
|
||||||
hostname: 'localhost',
|
|
||||||
port: 8090,
|
|
||||||
path: path,
|
|
||||||
method: method,
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const req = http.request(options, (res) => {
|
|
||||||
let body = '';
|
|
||||||
res.on('data', chunk => body += chunk);
|
|
||||||
res.on('end', () => {
|
|
||||||
try {
|
|
||||||
const cookies = res.headers['set-cookie'];
|
|
||||||
resolve({ status: res.statusCode, data: JSON.parse(body), cookies });
|
|
||||||
} catch(e) {
|
|
||||||
resolve({ status: res.statusCode, data: body, cookies: res.headers['set-cookie'] });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
req.on('error', reject);
|
|
||||||
if (data) req.write(JSON.stringify(data));
|
|
||||||
req.end();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async function main() {
|
|
||||||
// Login first
|
|
||||||
const loginRes = await apiCall('POST', '/api/auth/signin', { username: 'admin', password: 'admin' });
|
|
||||||
console.log('Login status:', loginRes.status);
|
|
||||||
|
|
||||||
// Get the session cookie
|
|
||||||
const cookies = loginRes.cookies || [];
|
|
||||||
const cookieStr = cookies.map(c => c.split(';')[0]).join('; ');
|
|
||||||
console.log('Cookies:', cookieStr);
|
|
||||||
|
|
||||||
// Now get theme settings using the cookie
|
|
||||||
const http2 = require('http');
|
|
||||||
function apiWithCookie(method, path, data) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
const options = {
|
|
||||||
hostname: 'localhost',
|
|
||||||
port: 8090,
|
|
||||||
path: path,
|
|
||||||
method: method,
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'Cookie': cookieStr
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const req = http2.request(options, (res) => {
|
|
||||||
let body = '';
|
|
||||||
res.on('data', chunk => body += chunk);
|
|
||||||
res.on('end', () => {
|
|
||||||
try {
|
|
||||||
resolve({ status: res.statusCode, data: JSON.parse(body) });
|
|
||||||
} catch(e) {
|
|
||||||
resolve({ status: res.statusCode, data: body });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
req.on('error', reject);
|
|
||||||
if (data) req.write(JSON.stringify(data));
|
|
||||||
req.end();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get activated theme
|
|
||||||
const themeRes = await apiWithCookie('GET', '/apis/api.console.halo.run/v1alpha1/themes?sort=creationTimestamp%2Cdesc');
|
|
||||||
console.log('Themes status:', themeRes.status);
|
|
||||||
|
|
||||||
if (themeRes.data && themeRes.data.items) {
|
|
||||||
const activeTheme = themeRes.data.items.find(t => t.spec && t.spec.activationTime);
|
|
||||||
if (activeTheme) {
|
|
||||||
console.log('Active theme:', activeTheme.metadata.name);
|
|
||||||
|
|
||||||
// Get theme settings
|
|
||||||
const settingsRes = await apiWithCookie('GET', `/apis/api.console.halo.run/v1alpha1/themes/${activeTheme.metadata.name}/setting`);
|
|
||||||
console.log('Settings status:', settingsRes.status);
|
|
||||||
console.log('Settings:', JSON.stringify(settingsRes.data).substring(0, 500));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
main().catch(console.error);
|
|
||||||
@@ -1,7 +1,5 @@
|
|||||||
// @ts-check
|
// @ts-check
|
||||||
import { defineConfig } from "astro/config";
|
import { defineConfig } from "astro/config";
|
||||||
import vue from "@astrojs/vue";
|
|
||||||
import Icons from "unplugin-icons/vite";
|
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
base: "/themes/warm-island",
|
base: "/themes/warm-island",
|
||||||
@@ -12,13 +10,7 @@ export default defineConfig({
|
|||||||
cssMinify: true,
|
cssMinify: true,
|
||||||
},
|
},
|
||||||
outDir: "./templates",
|
outDir: "./templates",
|
||||||
integrations: [vue()],
|
|
||||||
vite: {
|
vite: {
|
||||||
plugins: [
|
|
||||||
Icons({
|
|
||||||
compiler: "vue3",
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
css: {
|
css: {
|
||||||
preprocessorOptions: {
|
preprocessorOptions: {
|
||||||
scss: {
|
scss: {
|
||||||
|
|||||||
-52
@@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
"hash": "0ed7ed0d",
|
|
||||||
"configHash": "c707d7b6",
|
|
||||||
"lockfileHash": "4f412479",
|
|
||||||
"browserHash": "3aefc297",
|
|
||||||
"optimized": {
|
|
||||||
"vue": {
|
|
||||||
"src": "../../../node_modules/vue/dist/vue.runtime.esm-bundler.js",
|
|
||||||
"file": "vue.js",
|
|
||||||
"fileHash": "9027419d",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"vitepress > @vue/devtools-api": {
|
|
||||||
"src": "../../../node_modules/@vue/devtools-api/dist/index.js",
|
|
||||||
"file": "vitepress___@vue_devtools-api.js",
|
|
||||||
"fileHash": "3cd67bf3",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"vitepress > @vueuse/core": {
|
|
||||||
"src": "../../../node_modules/@vueuse/core/index.mjs",
|
|
||||||
"file": "vitepress___@vueuse_core.js",
|
|
||||||
"fileHash": "cda81787",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"vitepress > @vueuse/integrations/useFocusTrap": {
|
|
||||||
"src": "../../../node_modules/@vueuse/integrations/useFocusTrap.mjs",
|
|
||||||
"file": "vitepress___@vueuse_integrations_useFocusTrap.js",
|
|
||||||
"fileHash": "7b4ec920",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"vitepress > mark.js/src/vanilla.js": {
|
|
||||||
"src": "../../../node_modules/mark.js/src/vanilla.js",
|
|
||||||
"file": "vitepress___mark__js_src_vanilla__js.js",
|
|
||||||
"fileHash": "3efbcd2b",
|
|
||||||
"needsInterop": false
|
|
||||||
},
|
|
||||||
"vitepress > minisearch": {
|
|
||||||
"src": "../../../node_modules/minisearch/dist/es/index.js",
|
|
||||||
"file": "vitepress___minisearch.js",
|
|
||||||
"fileHash": "8ca06377",
|
|
||||||
"needsInterop": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"chunks": {
|
|
||||||
"chunk-4USRTV5H": {
|
|
||||||
"file": "chunk-4USRTV5H.js"
|
|
||||||
},
|
|
||||||
"chunk-XY26LBYQ": {
|
|
||||||
"file": "chunk-XY26LBYQ.js"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-9719
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
-13035
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
-3
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "module"
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -1,583 +0,0 @@
|
|||||||
import {
|
|
||||||
DefaultMagicKeysAliasMap,
|
|
||||||
StorageSerializers,
|
|
||||||
TransitionPresets,
|
|
||||||
assert,
|
|
||||||
breakpointsAntDesign,
|
|
||||||
breakpointsBootstrapV5,
|
|
||||||
breakpointsElement,
|
|
||||||
breakpointsMasterCss,
|
|
||||||
breakpointsPrimeFlex,
|
|
||||||
breakpointsQuasar,
|
|
||||||
breakpointsSematic,
|
|
||||||
breakpointsTailwind,
|
|
||||||
breakpointsVuetify,
|
|
||||||
breakpointsVuetifyV2,
|
|
||||||
breakpointsVuetifyV3,
|
|
||||||
bypassFilter,
|
|
||||||
camelize,
|
|
||||||
clamp,
|
|
||||||
cloneFnJSON,
|
|
||||||
computedAsync,
|
|
||||||
computedEager,
|
|
||||||
computedInject,
|
|
||||||
computedWithControl,
|
|
||||||
containsProp,
|
|
||||||
controlledRef,
|
|
||||||
createEventHook,
|
|
||||||
createFetch,
|
|
||||||
createFilterWrapper,
|
|
||||||
createGlobalState,
|
|
||||||
createInjectionState,
|
|
||||||
createRef,
|
|
||||||
createReusableTemplate,
|
|
||||||
createSharedComposable,
|
|
||||||
createSingletonPromise,
|
|
||||||
createTemplatePromise,
|
|
||||||
createUnrefFn,
|
|
||||||
customStorageEventName,
|
|
||||||
debounceFilter,
|
|
||||||
defaultDocument,
|
|
||||||
defaultLocation,
|
|
||||||
defaultNavigator,
|
|
||||||
defaultWindow,
|
|
||||||
executeTransition,
|
|
||||||
extendRef,
|
|
||||||
formatDate,
|
|
||||||
formatTimeAgo,
|
|
||||||
get,
|
|
||||||
getLifeCycleTarget,
|
|
||||||
getSSRHandler,
|
|
||||||
hasOwn,
|
|
||||||
hyphenate,
|
|
||||||
identity,
|
|
||||||
increaseWithUnit,
|
|
||||||
injectLocal,
|
|
||||||
invoke,
|
|
||||||
isClient,
|
|
||||||
isDef,
|
|
||||||
isDefined,
|
|
||||||
isIOS,
|
|
||||||
isObject,
|
|
||||||
isWorker,
|
|
||||||
makeDestructurable,
|
|
||||||
mapGamepadToXbox360Controller,
|
|
||||||
noop,
|
|
||||||
normalizeDate,
|
|
||||||
notNullish,
|
|
||||||
now,
|
|
||||||
objectEntries,
|
|
||||||
objectOmit,
|
|
||||||
objectPick,
|
|
||||||
onClickOutside,
|
|
||||||
onElementRemoval,
|
|
||||||
onKeyDown,
|
|
||||||
onKeyPressed,
|
|
||||||
onKeyStroke,
|
|
||||||
onKeyUp,
|
|
||||||
onLongPress,
|
|
||||||
onStartTyping,
|
|
||||||
pausableFilter,
|
|
||||||
promiseTimeout,
|
|
||||||
provideLocal,
|
|
||||||
provideSSRWidth,
|
|
||||||
pxValue,
|
|
||||||
rand,
|
|
||||||
reactify,
|
|
||||||
reactifyObject,
|
|
||||||
reactiveComputed,
|
|
||||||
reactiveOmit,
|
|
||||||
reactivePick,
|
|
||||||
refAutoReset,
|
|
||||||
refDebounced,
|
|
||||||
refDefault,
|
|
||||||
refThrottled,
|
|
||||||
refWithControl,
|
|
||||||
resolveRef,
|
|
||||||
resolveUnref,
|
|
||||||
set,
|
|
||||||
setSSRHandler,
|
|
||||||
syncRef,
|
|
||||||
syncRefs,
|
|
||||||
templateRef,
|
|
||||||
throttleFilter,
|
|
||||||
timestamp,
|
|
||||||
toArray,
|
|
||||||
toReactive,
|
|
||||||
toRef,
|
|
||||||
toRefs,
|
|
||||||
toValue,
|
|
||||||
tryOnBeforeMount,
|
|
||||||
tryOnBeforeUnmount,
|
|
||||||
tryOnMounted,
|
|
||||||
tryOnScopeDispose,
|
|
||||||
tryOnUnmounted,
|
|
||||||
unrefElement,
|
|
||||||
until,
|
|
||||||
useActiveElement,
|
|
||||||
useAnimate,
|
|
||||||
useArrayDifference,
|
|
||||||
useArrayEvery,
|
|
||||||
useArrayFilter,
|
|
||||||
useArrayFind,
|
|
||||||
useArrayFindIndex,
|
|
||||||
useArrayFindLast,
|
|
||||||
useArrayIncludes,
|
|
||||||
useArrayJoin,
|
|
||||||
useArrayMap,
|
|
||||||
useArrayReduce,
|
|
||||||
useArraySome,
|
|
||||||
useArrayUnique,
|
|
||||||
useAsyncQueue,
|
|
||||||
useAsyncState,
|
|
||||||
useBase64,
|
|
||||||
useBattery,
|
|
||||||
useBluetooth,
|
|
||||||
useBreakpoints,
|
|
||||||
useBroadcastChannel,
|
|
||||||
useBrowserLocation,
|
|
||||||
useCached,
|
|
||||||
useClipboard,
|
|
||||||
useClipboardItems,
|
|
||||||
useCloned,
|
|
||||||
useColorMode,
|
|
||||||
useConfirmDialog,
|
|
||||||
useCountdown,
|
|
||||||
useCounter,
|
|
||||||
useCssVar,
|
|
||||||
useCurrentElement,
|
|
||||||
useCycleList,
|
|
||||||
useDark,
|
|
||||||
useDateFormat,
|
|
||||||
useDebounceFn,
|
|
||||||
useDebouncedRefHistory,
|
|
||||||
useDeviceMotion,
|
|
||||||
useDeviceOrientation,
|
|
||||||
useDevicePixelRatio,
|
|
||||||
useDevicesList,
|
|
||||||
useDisplayMedia,
|
|
||||||
useDocumentVisibility,
|
|
||||||
useDraggable,
|
|
||||||
useDropZone,
|
|
||||||
useElementBounding,
|
|
||||||
useElementByPoint,
|
|
||||||
useElementHover,
|
|
||||||
useElementSize,
|
|
||||||
useElementVisibility,
|
|
||||||
useEventBus,
|
|
||||||
useEventListener,
|
|
||||||
useEventSource,
|
|
||||||
useEyeDropper,
|
|
||||||
useFavicon,
|
|
||||||
useFetch,
|
|
||||||
useFileDialog,
|
|
||||||
useFileSystemAccess,
|
|
||||||
useFocus,
|
|
||||||
useFocusWithin,
|
|
||||||
useFps,
|
|
||||||
useFullscreen,
|
|
||||||
useGamepad,
|
|
||||||
useGeolocation,
|
|
||||||
useIdle,
|
|
||||||
useImage,
|
|
||||||
useInfiniteScroll,
|
|
||||||
useIntersectionObserver,
|
|
||||||
useInterval,
|
|
||||||
useIntervalFn,
|
|
||||||
useKeyModifier,
|
|
||||||
useLastChanged,
|
|
||||||
useLocalStorage,
|
|
||||||
useMagicKeys,
|
|
||||||
useManualRefHistory,
|
|
||||||
useMediaControls,
|
|
||||||
useMediaQuery,
|
|
||||||
useMemoize,
|
|
||||||
useMemory,
|
|
||||||
useMounted,
|
|
||||||
useMouse,
|
|
||||||
useMouseInElement,
|
|
||||||
useMousePressed,
|
|
||||||
useMutationObserver,
|
|
||||||
useNavigatorLanguage,
|
|
||||||
useNetwork,
|
|
||||||
useNow,
|
|
||||||
useObjectUrl,
|
|
||||||
useOffsetPagination,
|
|
||||||
useOnline,
|
|
||||||
usePageLeave,
|
|
||||||
useParallax,
|
|
||||||
useParentElement,
|
|
||||||
usePerformanceObserver,
|
|
||||||
usePermission,
|
|
||||||
usePointer,
|
|
||||||
usePointerLock,
|
|
||||||
usePointerSwipe,
|
|
||||||
usePreferredColorScheme,
|
|
||||||
usePreferredContrast,
|
|
||||||
usePreferredDark,
|
|
||||||
usePreferredLanguages,
|
|
||||||
usePreferredReducedMotion,
|
|
||||||
usePreferredReducedTransparency,
|
|
||||||
usePrevious,
|
|
||||||
useRafFn,
|
|
||||||
useRefHistory,
|
|
||||||
useResizeObserver,
|
|
||||||
useSSRWidth,
|
|
||||||
useScreenOrientation,
|
|
||||||
useScreenSafeArea,
|
|
||||||
useScriptTag,
|
|
||||||
useScroll,
|
|
||||||
useScrollLock,
|
|
||||||
useSessionStorage,
|
|
||||||
useShare,
|
|
||||||
useSorted,
|
|
||||||
useSpeechRecognition,
|
|
||||||
useSpeechSynthesis,
|
|
||||||
useStepper,
|
|
||||||
useStorage,
|
|
||||||
useStorageAsync,
|
|
||||||
useStyleTag,
|
|
||||||
useSupported,
|
|
||||||
useSwipe,
|
|
||||||
useTemplateRefsList,
|
|
||||||
useTextDirection,
|
|
||||||
useTextSelection,
|
|
||||||
useTextareaAutosize,
|
|
||||||
useThrottleFn,
|
|
||||||
useThrottledRefHistory,
|
|
||||||
useTimeAgo,
|
|
||||||
useTimeout,
|
|
||||||
useTimeoutFn,
|
|
||||||
useTimeoutPoll,
|
|
||||||
useTimestamp,
|
|
||||||
useTitle,
|
|
||||||
useToNumber,
|
|
||||||
useToString,
|
|
||||||
useToggle,
|
|
||||||
useTransition,
|
|
||||||
useUrlSearchParams,
|
|
||||||
useUserMedia,
|
|
||||||
useVModel,
|
|
||||||
useVModels,
|
|
||||||
useVibrate,
|
|
||||||
useVirtualList,
|
|
||||||
useWakeLock,
|
|
||||||
useWebNotification,
|
|
||||||
useWebSocket,
|
|
||||||
useWebWorker,
|
|
||||||
useWebWorkerFn,
|
|
||||||
useWindowFocus,
|
|
||||||
useWindowScroll,
|
|
||||||
useWindowSize,
|
|
||||||
watchArray,
|
|
||||||
watchAtMost,
|
|
||||||
watchDebounced,
|
|
||||||
watchDeep,
|
|
||||||
watchIgnorable,
|
|
||||||
watchImmediate,
|
|
||||||
watchOnce,
|
|
||||||
watchPausable,
|
|
||||||
watchThrottled,
|
|
||||||
watchTriggerable,
|
|
||||||
watchWithFilter,
|
|
||||||
whenever
|
|
||||||
} from "./chunk-4USRTV5H.js";
|
|
||||||
import "./chunk-XY26LBYQ.js";
|
|
||||||
export {
|
|
||||||
DefaultMagicKeysAliasMap,
|
|
||||||
StorageSerializers,
|
|
||||||
TransitionPresets,
|
|
||||||
assert,
|
|
||||||
computedAsync as asyncComputed,
|
|
||||||
refAutoReset as autoResetRef,
|
|
||||||
breakpointsAntDesign,
|
|
||||||
breakpointsBootstrapV5,
|
|
||||||
breakpointsElement,
|
|
||||||
breakpointsMasterCss,
|
|
||||||
breakpointsPrimeFlex,
|
|
||||||
breakpointsQuasar,
|
|
||||||
breakpointsSematic,
|
|
||||||
breakpointsTailwind,
|
|
||||||
breakpointsVuetify,
|
|
||||||
breakpointsVuetifyV2,
|
|
||||||
breakpointsVuetifyV3,
|
|
||||||
bypassFilter,
|
|
||||||
camelize,
|
|
||||||
clamp,
|
|
||||||
cloneFnJSON,
|
|
||||||
computedAsync,
|
|
||||||
computedEager,
|
|
||||||
computedInject,
|
|
||||||
computedWithControl,
|
|
||||||
containsProp,
|
|
||||||
computedWithControl as controlledComputed,
|
|
||||||
controlledRef,
|
|
||||||
createEventHook,
|
|
||||||
createFetch,
|
|
||||||
createFilterWrapper,
|
|
||||||
createGlobalState,
|
|
||||||
createInjectionState,
|
|
||||||
reactify as createReactiveFn,
|
|
||||||
createRef,
|
|
||||||
createReusableTemplate,
|
|
||||||
createSharedComposable,
|
|
||||||
createSingletonPromise,
|
|
||||||
createTemplatePromise,
|
|
||||||
createUnrefFn,
|
|
||||||
customStorageEventName,
|
|
||||||
debounceFilter,
|
|
||||||
refDebounced as debouncedRef,
|
|
||||||
watchDebounced as debouncedWatch,
|
|
||||||
defaultDocument,
|
|
||||||
defaultLocation,
|
|
||||||
defaultNavigator,
|
|
||||||
defaultWindow,
|
|
||||||
computedEager as eagerComputed,
|
|
||||||
executeTransition,
|
|
||||||
extendRef,
|
|
||||||
formatDate,
|
|
||||||
formatTimeAgo,
|
|
||||||
get,
|
|
||||||
getLifeCycleTarget,
|
|
||||||
getSSRHandler,
|
|
||||||
hasOwn,
|
|
||||||
hyphenate,
|
|
||||||
identity,
|
|
||||||
watchIgnorable as ignorableWatch,
|
|
||||||
increaseWithUnit,
|
|
||||||
injectLocal,
|
|
||||||
invoke,
|
|
||||||
isClient,
|
|
||||||
isDef,
|
|
||||||
isDefined,
|
|
||||||
isIOS,
|
|
||||||
isObject,
|
|
||||||
isWorker,
|
|
||||||
makeDestructurable,
|
|
||||||
mapGamepadToXbox360Controller,
|
|
||||||
noop,
|
|
||||||
normalizeDate,
|
|
||||||
notNullish,
|
|
||||||
now,
|
|
||||||
objectEntries,
|
|
||||||
objectOmit,
|
|
||||||
objectPick,
|
|
||||||
onClickOutside,
|
|
||||||
onElementRemoval,
|
|
||||||
onKeyDown,
|
|
||||||
onKeyPressed,
|
|
||||||
onKeyStroke,
|
|
||||||
onKeyUp,
|
|
||||||
onLongPress,
|
|
||||||
onStartTyping,
|
|
||||||
pausableFilter,
|
|
||||||
watchPausable as pausableWatch,
|
|
||||||
promiseTimeout,
|
|
||||||
provideLocal,
|
|
||||||
provideSSRWidth,
|
|
||||||
pxValue,
|
|
||||||
rand,
|
|
||||||
reactify,
|
|
||||||
reactifyObject,
|
|
||||||
reactiveComputed,
|
|
||||||
reactiveOmit,
|
|
||||||
reactivePick,
|
|
||||||
refAutoReset,
|
|
||||||
refDebounced,
|
|
||||||
refDefault,
|
|
||||||
refThrottled,
|
|
||||||
refWithControl,
|
|
||||||
resolveRef,
|
|
||||||
resolveUnref,
|
|
||||||
set,
|
|
||||||
setSSRHandler,
|
|
||||||
syncRef,
|
|
||||||
syncRefs,
|
|
||||||
templateRef,
|
|
||||||
throttleFilter,
|
|
||||||
refThrottled as throttledRef,
|
|
||||||
watchThrottled as throttledWatch,
|
|
||||||
timestamp,
|
|
||||||
toArray,
|
|
||||||
toReactive,
|
|
||||||
toRef,
|
|
||||||
toRefs,
|
|
||||||
toValue,
|
|
||||||
tryOnBeforeMount,
|
|
||||||
tryOnBeforeUnmount,
|
|
||||||
tryOnMounted,
|
|
||||||
tryOnScopeDispose,
|
|
||||||
tryOnUnmounted,
|
|
||||||
unrefElement,
|
|
||||||
until,
|
|
||||||
useActiveElement,
|
|
||||||
useAnimate,
|
|
||||||
useArrayDifference,
|
|
||||||
useArrayEvery,
|
|
||||||
useArrayFilter,
|
|
||||||
useArrayFind,
|
|
||||||
useArrayFindIndex,
|
|
||||||
useArrayFindLast,
|
|
||||||
useArrayIncludes,
|
|
||||||
useArrayJoin,
|
|
||||||
useArrayMap,
|
|
||||||
useArrayReduce,
|
|
||||||
useArraySome,
|
|
||||||
useArrayUnique,
|
|
||||||
useAsyncQueue,
|
|
||||||
useAsyncState,
|
|
||||||
useBase64,
|
|
||||||
useBattery,
|
|
||||||
useBluetooth,
|
|
||||||
useBreakpoints,
|
|
||||||
useBroadcastChannel,
|
|
||||||
useBrowserLocation,
|
|
||||||
useCached,
|
|
||||||
useClipboard,
|
|
||||||
useClipboardItems,
|
|
||||||
useCloned,
|
|
||||||
useColorMode,
|
|
||||||
useConfirmDialog,
|
|
||||||
useCountdown,
|
|
||||||
useCounter,
|
|
||||||
useCssVar,
|
|
||||||
useCurrentElement,
|
|
||||||
useCycleList,
|
|
||||||
useDark,
|
|
||||||
useDateFormat,
|
|
||||||
refDebounced as useDebounce,
|
|
||||||
useDebounceFn,
|
|
||||||
useDebouncedRefHistory,
|
|
||||||
useDeviceMotion,
|
|
||||||
useDeviceOrientation,
|
|
||||||
useDevicePixelRatio,
|
|
||||||
useDevicesList,
|
|
||||||
useDisplayMedia,
|
|
||||||
useDocumentVisibility,
|
|
||||||
useDraggable,
|
|
||||||
useDropZone,
|
|
||||||
useElementBounding,
|
|
||||||
useElementByPoint,
|
|
||||||
useElementHover,
|
|
||||||
useElementSize,
|
|
||||||
useElementVisibility,
|
|
||||||
useEventBus,
|
|
||||||
useEventListener,
|
|
||||||
useEventSource,
|
|
||||||
useEyeDropper,
|
|
||||||
useFavicon,
|
|
||||||
useFetch,
|
|
||||||
useFileDialog,
|
|
||||||
useFileSystemAccess,
|
|
||||||
useFocus,
|
|
||||||
useFocusWithin,
|
|
||||||
useFps,
|
|
||||||
useFullscreen,
|
|
||||||
useGamepad,
|
|
||||||
useGeolocation,
|
|
||||||
useIdle,
|
|
||||||
useImage,
|
|
||||||
useInfiniteScroll,
|
|
||||||
useIntersectionObserver,
|
|
||||||
useInterval,
|
|
||||||
useIntervalFn,
|
|
||||||
useKeyModifier,
|
|
||||||
useLastChanged,
|
|
||||||
useLocalStorage,
|
|
||||||
useMagicKeys,
|
|
||||||
useManualRefHistory,
|
|
||||||
useMediaControls,
|
|
||||||
useMediaQuery,
|
|
||||||
useMemoize,
|
|
||||||
useMemory,
|
|
||||||
useMounted,
|
|
||||||
useMouse,
|
|
||||||
useMouseInElement,
|
|
||||||
useMousePressed,
|
|
||||||
useMutationObserver,
|
|
||||||
useNavigatorLanguage,
|
|
||||||
useNetwork,
|
|
||||||
useNow,
|
|
||||||
useObjectUrl,
|
|
||||||
useOffsetPagination,
|
|
||||||
useOnline,
|
|
||||||
usePageLeave,
|
|
||||||
useParallax,
|
|
||||||
useParentElement,
|
|
||||||
usePerformanceObserver,
|
|
||||||
usePermission,
|
|
||||||
usePointer,
|
|
||||||
usePointerLock,
|
|
||||||
usePointerSwipe,
|
|
||||||
usePreferredColorScheme,
|
|
||||||
usePreferredContrast,
|
|
||||||
usePreferredDark,
|
|
||||||
usePreferredLanguages,
|
|
||||||
usePreferredReducedMotion,
|
|
||||||
usePreferredReducedTransparency,
|
|
||||||
usePrevious,
|
|
||||||
useRafFn,
|
|
||||||
useRefHistory,
|
|
||||||
useResizeObserver,
|
|
||||||
useSSRWidth,
|
|
||||||
useScreenOrientation,
|
|
||||||
useScreenSafeArea,
|
|
||||||
useScriptTag,
|
|
||||||
useScroll,
|
|
||||||
useScrollLock,
|
|
||||||
useSessionStorage,
|
|
||||||
useShare,
|
|
||||||
useSorted,
|
|
||||||
useSpeechRecognition,
|
|
||||||
useSpeechSynthesis,
|
|
||||||
useStepper,
|
|
||||||
useStorage,
|
|
||||||
useStorageAsync,
|
|
||||||
useStyleTag,
|
|
||||||
useSupported,
|
|
||||||
useSwipe,
|
|
||||||
useTemplateRefsList,
|
|
||||||
useTextDirection,
|
|
||||||
useTextSelection,
|
|
||||||
useTextareaAutosize,
|
|
||||||
refThrottled as useThrottle,
|
|
||||||
useThrottleFn,
|
|
||||||
useThrottledRefHistory,
|
|
||||||
useTimeAgo,
|
|
||||||
useTimeout,
|
|
||||||
useTimeoutFn,
|
|
||||||
useTimeoutPoll,
|
|
||||||
useTimestamp,
|
|
||||||
useTitle,
|
|
||||||
useToNumber,
|
|
||||||
useToString,
|
|
||||||
useToggle,
|
|
||||||
useTransition,
|
|
||||||
useUrlSearchParams,
|
|
||||||
useUserMedia,
|
|
||||||
useVModel,
|
|
||||||
useVModels,
|
|
||||||
useVibrate,
|
|
||||||
useVirtualList,
|
|
||||||
useWakeLock,
|
|
||||||
useWebNotification,
|
|
||||||
useWebSocket,
|
|
||||||
useWebWorker,
|
|
||||||
useWebWorkerFn,
|
|
||||||
useWindowFocus,
|
|
||||||
useWindowScroll,
|
|
||||||
useWindowSize,
|
|
||||||
watchArray,
|
|
||||||
watchAtMost,
|
|
||||||
watchDebounced,
|
|
||||||
watchDeep,
|
|
||||||
watchIgnorable,
|
|
||||||
watchImmediate,
|
|
||||||
watchOnce,
|
|
||||||
watchPausable,
|
|
||||||
watchThrottled,
|
|
||||||
watchTriggerable,
|
|
||||||
watchWithFilter,
|
|
||||||
whenever
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=vitepress___@vueuse_core.js.map
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": [],
|
|
||||||
"sourcesContent": [],
|
|
||||||
"mappings": "",
|
|
||||||
"names": []
|
|
||||||
}
|
|
||||||
-1352
File diff suppressed because it is too large
Load Diff
-7
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
-1813
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Vendored
-347
@@ -1,347 +0,0 @@
|
|||||||
import {
|
|
||||||
BaseTransition,
|
|
||||||
BaseTransitionPropsValidators,
|
|
||||||
Comment,
|
|
||||||
DeprecationTypes,
|
|
||||||
EffectScope,
|
|
||||||
ErrorCodes,
|
|
||||||
ErrorTypeStrings,
|
|
||||||
Fragment,
|
|
||||||
KeepAlive,
|
|
||||||
ReactiveEffect,
|
|
||||||
Static,
|
|
||||||
Suspense,
|
|
||||||
Teleport,
|
|
||||||
Text,
|
|
||||||
TrackOpTypes,
|
|
||||||
Transition,
|
|
||||||
TransitionGroup,
|
|
||||||
TriggerOpTypes,
|
|
||||||
VueElement,
|
|
||||||
assertNumber,
|
|
||||||
callWithAsyncErrorHandling,
|
|
||||||
callWithErrorHandling,
|
|
||||||
camelize,
|
|
||||||
capitalize,
|
|
||||||
cloneVNode,
|
|
||||||
compatUtils,
|
|
||||||
compile,
|
|
||||||
computed,
|
|
||||||
createApp,
|
|
||||||
createBaseVNode,
|
|
||||||
createBlock,
|
|
||||||
createCommentVNode,
|
|
||||||
createElementBlock,
|
|
||||||
createHydrationRenderer,
|
|
||||||
createPropsRestProxy,
|
|
||||||
createRenderer,
|
|
||||||
createSSRApp,
|
|
||||||
createSlots,
|
|
||||||
createStaticVNode,
|
|
||||||
createTextVNode,
|
|
||||||
createVNode,
|
|
||||||
customRef,
|
|
||||||
defineAsyncComponent,
|
|
||||||
defineComponent,
|
|
||||||
defineCustomElement,
|
|
||||||
defineEmits,
|
|
||||||
defineExpose,
|
|
||||||
defineModel,
|
|
||||||
defineOptions,
|
|
||||||
defineProps,
|
|
||||||
defineSSRCustomElement,
|
|
||||||
defineSlots,
|
|
||||||
devtools,
|
|
||||||
effect,
|
|
||||||
effectScope,
|
|
||||||
getCurrentInstance,
|
|
||||||
getCurrentScope,
|
|
||||||
getCurrentWatcher,
|
|
||||||
getTransitionRawChildren,
|
|
||||||
guardReactiveProps,
|
|
||||||
h,
|
|
||||||
handleError,
|
|
||||||
hasInjectionContext,
|
|
||||||
hydrate,
|
|
||||||
hydrateOnIdle,
|
|
||||||
hydrateOnInteraction,
|
|
||||||
hydrateOnMediaQuery,
|
|
||||||
hydrateOnVisible,
|
|
||||||
initCustomFormatter,
|
|
||||||
initDirectivesForSSR,
|
|
||||||
inject,
|
|
||||||
isMemoSame,
|
|
||||||
isProxy,
|
|
||||||
isReactive,
|
|
||||||
isReadonly,
|
|
||||||
isRef,
|
|
||||||
isRuntimeOnly,
|
|
||||||
isShallow,
|
|
||||||
isVNode,
|
|
||||||
markRaw,
|
|
||||||
mergeDefaults,
|
|
||||||
mergeModels,
|
|
||||||
mergeProps,
|
|
||||||
nextTick,
|
|
||||||
nodeOps,
|
|
||||||
normalizeClass,
|
|
||||||
normalizeProps,
|
|
||||||
normalizeStyle,
|
|
||||||
onActivated,
|
|
||||||
onBeforeMount,
|
|
||||||
onBeforeUnmount,
|
|
||||||
onBeforeUpdate,
|
|
||||||
onDeactivated,
|
|
||||||
onErrorCaptured,
|
|
||||||
onMounted,
|
|
||||||
onRenderTracked,
|
|
||||||
onRenderTriggered,
|
|
||||||
onScopeDispose,
|
|
||||||
onServerPrefetch,
|
|
||||||
onUnmounted,
|
|
||||||
onUpdated,
|
|
||||||
onWatcherCleanup,
|
|
||||||
openBlock,
|
|
||||||
patchProp,
|
|
||||||
popScopeId,
|
|
||||||
provide,
|
|
||||||
proxyRefs,
|
|
||||||
pushScopeId,
|
|
||||||
queuePostFlushCb,
|
|
||||||
reactive,
|
|
||||||
readonly,
|
|
||||||
ref,
|
|
||||||
registerRuntimeCompiler,
|
|
||||||
render,
|
|
||||||
renderList,
|
|
||||||
renderSlot,
|
|
||||||
resolveComponent,
|
|
||||||
resolveDirective,
|
|
||||||
resolveDynamicComponent,
|
|
||||||
resolveFilter,
|
|
||||||
resolveTransitionHooks,
|
|
||||||
setBlockTracking,
|
|
||||||
setDevtoolsHook,
|
|
||||||
setTransitionHooks,
|
|
||||||
shallowReactive,
|
|
||||||
shallowReadonly,
|
|
||||||
shallowRef,
|
|
||||||
ssrContextKey,
|
|
||||||
ssrUtils,
|
|
||||||
stop,
|
|
||||||
toDisplayString,
|
|
||||||
toHandlerKey,
|
|
||||||
toHandlers,
|
|
||||||
toRaw,
|
|
||||||
toRef,
|
|
||||||
toRefs,
|
|
||||||
toValue,
|
|
||||||
transformVNodeArgs,
|
|
||||||
triggerRef,
|
|
||||||
unref,
|
|
||||||
useAttrs,
|
|
||||||
useCssModule,
|
|
||||||
useCssVars,
|
|
||||||
useHost,
|
|
||||||
useId,
|
|
||||||
useModel,
|
|
||||||
useSSRContext,
|
|
||||||
useShadowRoot,
|
|
||||||
useSlots,
|
|
||||||
useTemplateRef,
|
|
||||||
useTransitionState,
|
|
||||||
vModelCheckbox,
|
|
||||||
vModelDynamic,
|
|
||||||
vModelRadio,
|
|
||||||
vModelSelect,
|
|
||||||
vModelText,
|
|
||||||
vShow,
|
|
||||||
version,
|
|
||||||
warn,
|
|
||||||
watch,
|
|
||||||
watchEffect,
|
|
||||||
watchPostEffect,
|
|
||||||
watchSyncEffect,
|
|
||||||
withAsyncContext,
|
|
||||||
withCtx,
|
|
||||||
withDefaults,
|
|
||||||
withDirectives,
|
|
||||||
withKeys,
|
|
||||||
withMemo,
|
|
||||||
withModifiers,
|
|
||||||
withScopeId
|
|
||||||
} from "./chunk-XY26LBYQ.js";
|
|
||||||
export {
|
|
||||||
BaseTransition,
|
|
||||||
BaseTransitionPropsValidators,
|
|
||||||
Comment,
|
|
||||||
DeprecationTypes,
|
|
||||||
EffectScope,
|
|
||||||
ErrorCodes,
|
|
||||||
ErrorTypeStrings,
|
|
||||||
Fragment,
|
|
||||||
KeepAlive,
|
|
||||||
ReactiveEffect,
|
|
||||||
Static,
|
|
||||||
Suspense,
|
|
||||||
Teleport,
|
|
||||||
Text,
|
|
||||||
TrackOpTypes,
|
|
||||||
Transition,
|
|
||||||
TransitionGroup,
|
|
||||||
TriggerOpTypes,
|
|
||||||
VueElement,
|
|
||||||
assertNumber,
|
|
||||||
callWithAsyncErrorHandling,
|
|
||||||
callWithErrorHandling,
|
|
||||||
camelize,
|
|
||||||
capitalize,
|
|
||||||
cloneVNode,
|
|
||||||
compatUtils,
|
|
||||||
compile,
|
|
||||||
computed,
|
|
||||||
createApp,
|
|
||||||
createBlock,
|
|
||||||
createCommentVNode,
|
|
||||||
createElementBlock,
|
|
||||||
createBaseVNode as createElementVNode,
|
|
||||||
createHydrationRenderer,
|
|
||||||
createPropsRestProxy,
|
|
||||||
createRenderer,
|
|
||||||
createSSRApp,
|
|
||||||
createSlots,
|
|
||||||
createStaticVNode,
|
|
||||||
createTextVNode,
|
|
||||||
createVNode,
|
|
||||||
customRef,
|
|
||||||
defineAsyncComponent,
|
|
||||||
defineComponent,
|
|
||||||
defineCustomElement,
|
|
||||||
defineEmits,
|
|
||||||
defineExpose,
|
|
||||||
defineModel,
|
|
||||||
defineOptions,
|
|
||||||
defineProps,
|
|
||||||
defineSSRCustomElement,
|
|
||||||
defineSlots,
|
|
||||||
devtools,
|
|
||||||
effect,
|
|
||||||
effectScope,
|
|
||||||
getCurrentInstance,
|
|
||||||
getCurrentScope,
|
|
||||||
getCurrentWatcher,
|
|
||||||
getTransitionRawChildren,
|
|
||||||
guardReactiveProps,
|
|
||||||
h,
|
|
||||||
handleError,
|
|
||||||
hasInjectionContext,
|
|
||||||
hydrate,
|
|
||||||
hydrateOnIdle,
|
|
||||||
hydrateOnInteraction,
|
|
||||||
hydrateOnMediaQuery,
|
|
||||||
hydrateOnVisible,
|
|
||||||
initCustomFormatter,
|
|
||||||
initDirectivesForSSR,
|
|
||||||
inject,
|
|
||||||
isMemoSame,
|
|
||||||
isProxy,
|
|
||||||
isReactive,
|
|
||||||
isReadonly,
|
|
||||||
isRef,
|
|
||||||
isRuntimeOnly,
|
|
||||||
isShallow,
|
|
||||||
isVNode,
|
|
||||||
markRaw,
|
|
||||||
mergeDefaults,
|
|
||||||
mergeModels,
|
|
||||||
mergeProps,
|
|
||||||
nextTick,
|
|
||||||
nodeOps,
|
|
||||||
normalizeClass,
|
|
||||||
normalizeProps,
|
|
||||||
normalizeStyle,
|
|
||||||
onActivated,
|
|
||||||
onBeforeMount,
|
|
||||||
onBeforeUnmount,
|
|
||||||
onBeforeUpdate,
|
|
||||||
onDeactivated,
|
|
||||||
onErrorCaptured,
|
|
||||||
onMounted,
|
|
||||||
onRenderTracked,
|
|
||||||
onRenderTriggered,
|
|
||||||
onScopeDispose,
|
|
||||||
onServerPrefetch,
|
|
||||||
onUnmounted,
|
|
||||||
onUpdated,
|
|
||||||
onWatcherCleanup,
|
|
||||||
openBlock,
|
|
||||||
patchProp,
|
|
||||||
popScopeId,
|
|
||||||
provide,
|
|
||||||
proxyRefs,
|
|
||||||
pushScopeId,
|
|
||||||
queuePostFlushCb,
|
|
||||||
reactive,
|
|
||||||
readonly,
|
|
||||||
ref,
|
|
||||||
registerRuntimeCompiler,
|
|
||||||
render,
|
|
||||||
renderList,
|
|
||||||
renderSlot,
|
|
||||||
resolveComponent,
|
|
||||||
resolveDirective,
|
|
||||||
resolveDynamicComponent,
|
|
||||||
resolveFilter,
|
|
||||||
resolveTransitionHooks,
|
|
||||||
setBlockTracking,
|
|
||||||
setDevtoolsHook,
|
|
||||||
setTransitionHooks,
|
|
||||||
shallowReactive,
|
|
||||||
shallowReadonly,
|
|
||||||
shallowRef,
|
|
||||||
ssrContextKey,
|
|
||||||
ssrUtils,
|
|
||||||
stop,
|
|
||||||
toDisplayString,
|
|
||||||
toHandlerKey,
|
|
||||||
toHandlers,
|
|
||||||
toRaw,
|
|
||||||
toRef,
|
|
||||||
toRefs,
|
|
||||||
toValue,
|
|
||||||
transformVNodeArgs,
|
|
||||||
triggerRef,
|
|
||||||
unref,
|
|
||||||
useAttrs,
|
|
||||||
useCssModule,
|
|
||||||
useCssVars,
|
|
||||||
useHost,
|
|
||||||
useId,
|
|
||||||
useModel,
|
|
||||||
useSSRContext,
|
|
||||||
useShadowRoot,
|
|
||||||
useSlots,
|
|
||||||
useTemplateRef,
|
|
||||||
useTransitionState,
|
|
||||||
vModelCheckbox,
|
|
||||||
vModelDynamic,
|
|
||||||
vModelRadio,
|
|
||||||
vModelSelect,
|
|
||||||
vModelText,
|
|
||||||
vShow,
|
|
||||||
version,
|
|
||||||
warn,
|
|
||||||
watch,
|
|
||||||
watchEffect,
|
|
||||||
watchPostEffect,
|
|
||||||
watchSyncEffect,
|
|
||||||
withAsyncContext,
|
|
||||||
withCtx,
|
|
||||||
withDefaults,
|
|
||||||
withDirectives,
|
|
||||||
withKeys,
|
|
||||||
withMemo,
|
|
||||||
withModifiers,
|
|
||||||
withScopeId
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=vue.js.map
|
|
||||||
-7
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"sources": [],
|
|
||||||
"sourcesContent": [],
|
|
||||||
"mappings": "",
|
|
||||||
"names": []
|
|
||||||
}
|
|
||||||
@@ -36,6 +36,7 @@ export default defineConfig({
|
|||||||
{ text: '图库', link: '/config/photos' },
|
{ text: '图库', link: '/config/photos' },
|
||||||
{ text: '友情链接', link: '/config/links' },
|
{ text: '友情链接', link: '/config/links' },
|
||||||
{ text: '朋友圈', link: '/config/friends' },
|
{ text: '朋友圈', link: '/config/friends' },
|
||||||
|
{ text: '记得', link: '/config/important-dates' },
|
||||||
{ text: '留言板', link: '/config/messageboard' },
|
{ text: '留言板', link: '/config/messageboard' },
|
||||||
{ text: '评论', link: '/config/comment' },
|
{ text: '评论', link: '/config/comment' },
|
||||||
{ text: '页脚', link: '/config/footer' },
|
{ text: '页脚', link: '/config/footer' },
|
||||||
@@ -53,6 +54,7 @@ export default defineConfig({
|
|||||||
{ text: '图库', link: '/pages/photos' },
|
{ text: '图库', link: '/pages/photos' },
|
||||||
{ text: '友情链接', link: '/pages/links' },
|
{ text: '友情链接', link: '/pages/links' },
|
||||||
{ text: '朋友圈', link: '/pages/friends' },
|
{ text: '朋友圈', link: '/pages/friends' },
|
||||||
|
{ text: '记得', link: '/pages/important-dates' },
|
||||||
{ text: '自定义页面', link: '/pages/custom-page' },
|
{ text: '自定义页面', link: '/pages/custom-page' },
|
||||||
{ text: '扩展页面', link: '/pages/extended' },
|
{ text: '扩展页面', link: '/pages/extended' },
|
||||||
]
|
]
|
||||||
|
|||||||
+86
-6
@@ -1,11 +1,90 @@
|
|||||||
# 更新日志
|
# 更新日志
|
||||||
|
|
||||||
## v0.1.0
|
## v1.1.1
|
||||||
|
|
||||||
|
### 瞬间页面
|
||||||
|
|
||||||
|
- 🗑️ 移除时间轴(Timeline)布局,简化为卡片(Cards)和瀑布流(Masonry)两种样式
|
||||||
|
- 🎨 卡片样式成为新的默认展示样式,采用一栏式居中布局
|
||||||
|
- 🧹 清理时间轴相关的 HTML、CSS 和 JS 代码
|
||||||
|
|
||||||
|
### 移动端阅读体验优化
|
||||||
|
|
||||||
|
- 📱 全面增大移动端字体尺寸,提升文章阅读舒适度
|
||||||
|
- 📱 优化文章正文行高(1.75 → 1.8),段落间距更宽松
|
||||||
|
- 📱 移动端标题字号适配(h2/h3/h4 在 768px 以下适当放大)
|
||||||
|
- 📱 优化全局排版变量(text-xs ~ text-5xl 基准值上调)
|
||||||
|
- 📱 优化引用块、代码块、表格在移动端的显示
|
||||||
|
- 📱 优化文章卡片在移动端的标题和摘要字号
|
||||||
|
- 📱 优化瞬间页面卡片在移动端的文字和间距
|
||||||
|
|
||||||
|
### 导航修复
|
||||||
|
|
||||||
|
- 🐛 修复导航菜单 target 属性渲染错误,导致部分链接在新标签页打开的问题
|
||||||
|
- 🐛 修复 Halo 菜单项 `spec.target` 枚举对象解析为 `target="null"` 的问题
|
||||||
|
|
||||||
|
### 错误处理增强
|
||||||
|
|
||||||
|
- 🛡️ 添加全局 unhandledrejection 捕获,抑制浏览器扩展产生的控制台错误
|
||||||
|
- 🛡️ 复制链接按钮添加 clipboard API 失败回退逻辑
|
||||||
|
- 🛡️ Logo 图片加载失败时自动隐藏并显示站点标题
|
||||||
|
|
||||||
|
## v1.1.0
|
||||||
|
|
||||||
|
### 分享功能增强
|
||||||
|
|
||||||
|
- ✨ 新增 QQ 分享按钮(Font Awesome 图标)
|
||||||
|
- ✨ 新增微信扫码分享(二维码弹窗)
|
||||||
|
- ✨ 新增分享渠道配置项,可自由选择显示哪些分享按钮
|
||||||
|
- 📋 复制链接按钮始终显示,不可关闭
|
||||||
|
- 🎨 各分享按钮独立品牌色 hover 效果(QQ 蓝、微信绿、微博红等)
|
||||||
|
- 🌐 i18n 国际化支持新增 QQ、微信、微信扫码相关翻译
|
||||||
|
|
||||||
|
### 移动端优化
|
||||||
|
|
||||||
|
- 📱 修复文章上下篇导航在移动端分成两行的问题,改为单行省略截断
|
||||||
|
- 📱 修复目录悬浮球按钮位置偏上,调整到右下角更合理位置
|
||||||
|
- 📱 优化移动端灯箱体验:增大导航按钮触摸区域、小屏隐藏 EXIF 信息
|
||||||
|
- 📱 优化移动端分享按钮触摸目标大小
|
||||||
|
|
||||||
|
### 灯箱优化
|
||||||
|
|
||||||
|
- 🖼️ 修复关闭画廊后 lg-sub-html 不跟随到底部的问题
|
||||||
|
- 🖼️ 修复打开画廊时 lg-sub-html 和 lg-inner 直接跳位而非平滑过渡的问题
|
||||||
|
- 🖼️ 优化移动端灯箱导航按钮和缩略图栏布局
|
||||||
|
- 🖼️ 小屏幕下隐藏 EXIF 参数信息,简化界面
|
||||||
|
|
||||||
|
### 分享修复
|
||||||
|
|
||||||
|
- 🐛 修复微信扫码分享 QR 码生成相对路径而非完整 URL 的问题
|
||||||
|
- 🐛 修复复制链接按钮复制相对路径而非完整 URL 的问题
|
||||||
|
- 🐛 修复 QQ 分享链接不可用,改为弹窗分享方式并正确编码 URL
|
||||||
|
|
||||||
|
### 性能优化
|
||||||
|
|
||||||
|
- ⚡ 添加 content-visibility 优化(首页、文章、归档、瞬间等区域)
|
||||||
|
- ⚡ Prism.js 脚本延迟加载
|
||||||
|
- ⚡ LightGallery 初始化改用 requestIdleCallback
|
||||||
|
- ⚡ 封面图优先加载(loading="eager")
|
||||||
|
- ⚡ 正文图片自动添加 lazy loading
|
||||||
|
- ⚡ 微信二维码 QR 码库按需加载(仅微信分享启用时加载)
|
||||||
|
|
||||||
|
### 全局优化
|
||||||
|
|
||||||
|
- 🎨 添加 theme-color meta 标签,适配移动端浏览器地址栏颜色
|
||||||
|
- 🎨 主题切换时动态更新 theme-color
|
||||||
|
- 🛡️ 多层 overflow-x: hidden 防止横向滚动条
|
||||||
|
- 📱 移动端搜索按钮不再隐藏
|
||||||
|
|
||||||
|
### 布局修复
|
||||||
|
|
||||||
|
- 📐 恢复文章详情页为 800px 全宽布局(不使用 wide 模式)
|
||||||
|
- 📐 封面图在 800px 容器内显示
|
||||||
|
|
||||||
|
## v1.0.0
|
||||||
|
|
||||||
首次发布 🎉
|
首次发布 🎉
|
||||||
|
|
||||||
- 🗑️ 移除侧边栏功能
|
|
||||||
|
|
||||||
### 核心功能
|
### 核心功能
|
||||||
|
|
||||||
- 🎨 暖色调设计语言,呼吸动效光球、毛玻璃导航栏
|
- 🎨 暖色调设计语言,呼吸动效光球、毛玻璃导航栏
|
||||||
@@ -22,6 +101,7 @@
|
|||||||
|
|
||||||
- 🌐 i18n 国际化支持(简体中文、繁体中文、英语)
|
- 🌐 i18n 国际化支持(简体中文、繁体中文、英语)
|
||||||
- 🔄 跟随浏览器语言自动匹配,也可手动指定
|
- 🔄 跟随浏览器语言自动匹配,也可手动指定
|
||||||
|
- 🍪 支持通过后台设置强制指定语言,自动管理 language cookie
|
||||||
|
|
||||||
### 文章页增强
|
### 文章页增强
|
||||||
|
|
||||||
@@ -41,7 +121,7 @@
|
|||||||
- 🔗 友情链接页面(Cards / Grid / List 三种样式)
|
- 🔗 友情链接页面(Cards / Grid / List 三种样式)
|
||||||
- 👥 朋友圈页面
|
- 👥 朋友圈页面
|
||||||
- 💬 留言板自定义模板
|
- 💬 留言板自定义模板
|
||||||
- 📦 扩展页面支持(豆瓣 / 装备 / 足迹 / Steam)
|
- 📦 扩展页面支持(豆瓣 / 装备 / Steam)
|
||||||
|
|
||||||
### 导航与交互
|
### 导航与交互
|
||||||
|
|
||||||
@@ -53,11 +133,11 @@
|
|||||||
|
|
||||||
- ⚡ preconnect / dns-prefetch 资源提示,优化外部资源加载
|
- ⚡ preconnect / dns-prefetch 资源提示,优化外部资源加载
|
||||||
- 🖼️ 图片懒加载 blur-up 渐显效果
|
- 🖼️ 图片懒加载 blur-up 渐显效果
|
||||||
- 🔤 移除自定义字体和内置字体功能,使用系统默认字体栈,提升加载速度
|
- 🔤 使用系统默认字体栈,提升加载速度
|
||||||
|
|
||||||
### 错误页面
|
### 错误页面
|
||||||
|
|
||||||
- 🐘 404 / 500 错误页增强(导航栏 + 页脚),方便访客返回
|
- 🐘 404 / 500 错误页增强(导航栏 + 页脚 + 多语言支持)
|
||||||
|
|
||||||
### 配置与自定义
|
### 配置与自定义
|
||||||
|
|
||||||
|
|||||||
+25
-2
@@ -135,11 +135,30 @@ article_related_title: "猜你喜欢"
|
|||||||
|
|
||||||
| 平台 | 说明 |
|
| 平台 | 说明 |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
|
| QQ | 点击后弹出 QQ 分享窗口,自动携带文章标题和链接 |
|
||||||
|
| 微信 | 扫码分享到微信(生成文章完整 URL 的二维码) |
|
||||||
| 微博 | 分享到新浪微博 |
|
| 微博 | 分享到新浪微博 |
|
||||||
| X (Twitter) | 分享到 X |
|
| X (Twitter) | 分享到 X |
|
||||||
| Facebook | 分享到 Facebook |
|
| Facebook | 分享到 Facebook |
|
||||||
| Telegram | 分享到 Telegram |
|
| Telegram | 分享到 Telegram |
|
||||||
| 复制链接 | 复制文章链接到剪贴板 |
|
| 复制链接 | 复制文章链接到剪贴板(始终显示) |
|
||||||
|
|
||||||
|
#### 分享渠道(article_share_channels)
|
||||||
|
|
||||||
|
选择要显示的分享按钮,可多选。默认选中 QQ、微信、微博。复制链接按钮始终显示,不可关闭。
|
||||||
|
|
||||||
|
| 渠道 | 默认选中 |
|
||||||
|
| --- | --- |
|
||||||
|
| QQ | ✅ |
|
||||||
|
| 微信 | ✅ |
|
||||||
|
| 微博 | ✅ |
|
||||||
|
| X (Twitter) | ❌ |
|
||||||
|
| Facebook | ❌ |
|
||||||
|
| Telegram | ❌ |
|
||||||
|
|
||||||
|
::: info 图标来源
|
||||||
|
分享按钮图标来自 [Font Awesome](https://fontawesome.com/)(Free v7.2.0,CC BY 4.0 / SIL OFL 1.1 协议)和 [Simple Icons](https://simpleicons.org/)(CC0 协议)。微信图标点击后会弹出二维码弹窗,用户可使用微信扫码分享。
|
||||||
|
:::
|
||||||
|
|
||||||
#### 分享区域标题(article_share_title)
|
#### 分享区域标题(article_share_title)
|
||||||
|
|
||||||
@@ -148,10 +167,14 @@ article_related_title: "猜你喜欢"
|
|||||||
```yaml
|
```yaml
|
||||||
article_show_share: true
|
article_show_share: true
|
||||||
article_share_title: "分享这篇文章"
|
article_share_title: "分享这篇文章"
|
||||||
|
article_share_channels:
|
||||||
|
- qq
|
||||||
|
- wechat
|
||||||
|
- weibo
|
||||||
```
|
```
|
||||||
|
|
||||||
::: tip
|
::: tip
|
||||||
分享功能会自动携带文章标题和链接,无需手动配置分享内容。移动端会优先显示适合移动端的分享方式。
|
分享功能会自动携带文章标题和完整链接,无需手动配置分享内容。微信分享通过二维码实现,二维码内容为文章的完整 URL(包含域名),用户扫码后可直接打开文章。QQ 分享通过弹窗方式打开 QQ 分享页面。移动端会优先显示适合移动端的分享方式。
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## 阅读增强功能
|
## 阅读增强功能
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# 评论
|
# 评论
|
||||||
|
|
||||||
评论配置控制全站评论区域的外观样式,影响文章详情页、留言板等所有包含评论组件的页面。WarmIsland 基于 Halo 的 `halo:comment` 组件提供评论功能,并提供了样式定制选项。
|
评论配置控制全站评论区域的外观样式,影响文章详情页、留言板等所有包含评论组件的页面。WarmIsland 基于 Halo 的 `halo:comment` 组件提供评论功能。
|
||||||
|
|
||||||
## 配置项一览
|
## 配置项一览
|
||||||
|
|
||||||
@@ -13,10 +13,7 @@
|
|||||||
|
|
||||||
### 评论样式(comment_style)
|
### 评论样式(comment_style)
|
||||||
|
|
||||||
| 值 | 说明 |
|
使用原版评论样式。
|
||||||
| --- | --- |
|
|
||||||
| `warm` | 暖色风格,与暖屿主题整体风格一致,圆角卡片、柔和配色(默认) |
|
|
||||||
| `minimal` | 极简风格,去除装饰性元素,线条简洁,适合内容导向型站点 |
|
|
||||||
|
|
||||||
::: tip
|
::: tip
|
||||||
`warm` 样式与暖屿的整体设计语言最为协调,推荐大多数用户使用。`minimal` 样式适合希望让评论区域更低调、不抢夺正文注意力的场景。
|
`warm` 样式与暖屿的整体设计语言最为协调,推荐大多数用户使用。`minimal` 样式适合希望让评论区域更低调、不抢夺正文注意力的场景。
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ footer_socials:
|
|||||||
|
|
||||||
### 显示主题版本(footer_show_theme)
|
### 显示主题版本(footer_show_theme)
|
||||||
|
|
||||||
开启后,页脚会显示当前 WarmIsland 主题的名称和版本号,如「Theme WarmIsland v0.1.0」。
|
开启后,页脚会显示当前 WarmIsland 主题的名称和版本号,如「Theme WarmIsland v1.0.0」。
|
||||||
|
|
||||||
::: tip
|
::: tip
|
||||||
保持开启主题版本显示有助于访客了解你使用的主题,也可能帮助你在遇到问题时快速确认当前版本号。
|
保持开启主题版本显示有助于访客了解你使用的主题,也可能帮助你在遇到问题时快速确认当前版本号。
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
::: danger
|
::: danger
|
||||||
朋友圈功能依赖 Halo 的 **plugin-friends** 插件。如果未安装此插件,朋友圈页面将无法正常工作。
|
朋友圈功能依赖 Halo 的 **plugin-friends** 插件。如果未安装此插件,朋友圈页面将无法正常工作。
|
||||||
|
|
||||||
安装方式:Halo 后台 → **插件** → **安装** → 搜索「Friends」或从 [GitHub Releases](https://github.com/halo-sigs/plugin-friends) 下载安装。
|
安装方式:Halo 后台 → **插件** → **安装** → 搜索「朋友圈」或从 [GitHub Releases](https://www.halo.run/store/apps/app-yISsV) 下载安装。
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## 详细说明
|
## 详细说明
|
||||||
@@ -39,12 +39,9 @@ friends_page_title: "Friends" # 英文站点
|
|||||||
### 添加订阅源
|
### 添加订阅源
|
||||||
|
|
||||||
1. 登录 Halo 后台管理控制台
|
1. 登录 Halo 后台管理控制台
|
||||||
2. 进入 **朋友圈** 或 **Friends** 管理页面
|
2. 进入 **链接** 管理页面
|
||||||
3. 点击 **添加订阅** 填写:
|
3. 点击 **新建** 或 **编辑** 填写:元数据 **RSS 地址** 友站的 RSS 订阅地址
|
||||||
- **站点名称** — 友站名称
|
4. 保存后,插件会在下次抓取周期自动拉取内容,亦可进入 **朋友圈** 自行同步
|
||||||
- **RSS 地址** — 友站的 RSS/Atom 订阅地址
|
|
||||||
- **Logo** — 友站 Logo(可选)
|
|
||||||
4. 保存后,插件会在下次抓取周期自动拉取内容
|
|
||||||
|
|
||||||
::: tip
|
::: tip
|
||||||
大多数博客平台都提供 RSS 订阅功能。常见的 RSS 地址格式:
|
大多数博客平台都提供 RSS 订阅功能。常见的 RSS 地址格式:
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
# 记得
|
||||||
|
|
||||||
|
「记得」模块对应 [plugin-important-dates](https://github.com/yyliucha/plugin-important-dates) 插件的前台页面 `/important-dates`,用于展示重要日期、牵挂的人与座驾(爱车)信息。
|
||||||
|
|
||||||
|
## 配置项一览
|
||||||
|
|
||||||
|
| 配置项 | 类型 | 默认值 | 说明 |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| `idates_page_title` | 文本 | `记得` | 页面标题,留空时使用插件自带标题 |
|
||||||
|
| `idates_page_subtitle` | 文本 | `记着重要的日子、惦记的人,还有陪你跑的爱车` | 页面副标题 |
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
idates_page_title: "记得" # 默认
|
||||||
|
idates_page_title: "纪念日" # 自定义
|
||||||
|
idates_page_subtitle: "记着重要的日子、惦记的人,还有陪你跑的爱车"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 前置依赖
|
||||||
|
|
||||||
|
::: danger
|
||||||
|
本页依赖 Halo 的 **plugin-important-dates**(记得)插件。未安装插件时 `/important-dates` 路由不存在,页面不会显示。
|
||||||
|
|
||||||
|
安装方式:Halo 后台 → **插件** → **安装** → 上传 jar,或直接前往 [GitHub Releases](https://github.com/yyliucha/plugin-important-dates/releases) 下载。
|
||||||
|
:::
|
||||||
|
|
||||||
|
## 数据来源
|
||||||
|
|
||||||
|
页面数据全部由插件提供,主题不读取任何隐私字段:
|
||||||
|
|
||||||
|
- `dates` — 重要日期(名称、日期、农历标记、关联人员、倒计时)
|
||||||
|
- `people` — 牵挂的人(昵称、关系、脱敏生日、生日倒计时、大头贴)
|
||||||
|
- `cars` — 座驾(分类、品牌型号、脱敏车牌、到期事项、相册)
|
||||||
|
- `reminders` / `carEvents` — 顶部到期提醒横幅
|
||||||
|
|
||||||
|
是否展示「重要」标记、大头贴、爱车视图等,均由插件自己的「设置」控制,主题侧只负责呈现。
|
||||||
|
|
||||||
|
## 相关页面
|
||||||
|
|
||||||
|
- [扩展页面](/pages/extended) — 全部插件扩展页面一览
|
||||||
|
- [记得页面](/pages/important-dates) — 页面结构与模板覆盖说明
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
::: danger
|
::: danger
|
||||||
友情链接功能依赖 Halo 的 **PluginLinks** 插件。如果未安装此插件,友情链接页面将无法正常工作。
|
友情链接功能依赖 Halo 的 **PluginLinks** 插件。如果未安装此插件,友情链接页面将无法正常工作。
|
||||||
|
|
||||||
安装方式:Halo 后台 → **插件** → **安装** → 搜索「Links」→ 安装并启用。
|
安装方式:Halo 后台 → **插件** → **安装** → 搜索「链接管理」→ 安装并启用。
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## 详细说明
|
## 详细说明
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
| 配置项 | 类型 | 默认值 | 说明 |
|
| 配置项 | 类型 | 默认值 | 说明 |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| `moments_page_title` | 文本 | `瞬间` | 页面标题 |
|
| `moments_page_title` | 文本 | `瞬间` | 页面标题 |
|
||||||
| `moments_style` | 下拉 | `timeline` | 展示样式:`timeline` / `cards` / `masonry` |
|
| `moments_style` | 下拉 | `cards` | 展示样式:`cards` / `masonry` |
|
||||||
| `moments_loading_mode` | 下拉 | `infinite_scroll` | 加载方式:`infinite_scroll` / `pagination` |
|
| `moments_loading_mode` | 下拉 | `infinite_scroll` | 加载方式:`infinite_scroll` / `pagination` |
|
||||||
| `moments_page_size` | 数字 | `10` | 每页显示数量 |
|
| `moments_page_size` | 数字 | `10` | 每页显示数量 |
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
::: danger
|
::: danger
|
||||||
瞬间功能依赖 Halo 的 **PluginMoments** 插件。如果未安装此插件,瞬间页面将无法正常工作。
|
瞬间功能依赖 Halo 的 **PluginMoments** 插件。如果未安装此插件,瞬间页面将无法正常工作。
|
||||||
|
|
||||||
安装方式:Halo 后台 → **插件** → **安装** → 搜索「Moments」→ 安装并启用。
|
安装方式:Halo 后台 → **插件** → **安装** → 搜索「瞬间」→ 安装并启用。
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## 详细说明
|
## 详细说明
|
||||||
@@ -35,12 +35,11 @@ moments_page_title: "Moments" # 英文站点
|
|||||||
|
|
||||||
| 值 | 说明 |
|
| 值 | 说明 |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `timeline` | 时间线样式,按时间顺序垂直排列,左侧有时间轴连线(默认) |
|
| `cards` | 卡片样式,以网格卡片形式展示,每条瞬间独立成卡(默认) |
|
||||||
| `cards` | 卡片样式,以网格卡片形式展示,每条瞬间独立成卡 |
|
|
||||||
| `masonry` | 瀑布流样式,类似 Pinterest 的错落排列,适合图片较多的瞬间 |
|
| `masonry` | 瀑布流样式,类似 Pinterest 的错落排列,适合图片较多的瞬间 |
|
||||||
|
|
||||||
::: tip
|
::: tip
|
||||||
如果你的瞬间以文字为主,推荐 `timeline` 样式,时间感更强;如果图片较多,推荐 `masonry` 样式,能更好地展示图片内容。
|
如果你的瞬间以文字为主,推荐 `cards` 样式,简洁清晰;如果图片较多,推荐 `masonry` 样式,能更好地展示图片内容。
|
||||||
:::
|
:::
|
||||||
|
|
||||||
### 加载方式(moments_loading_mode)
|
### 加载方式(moments_loading_mode)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
::: danger
|
::: danger
|
||||||
图库功能依赖 Halo 的 **PluginPhotos** 插件。如果未安装此插件,图库页面将无法正常工作。
|
图库功能依赖 Halo 的 **PluginPhotos** 插件。如果未安装此插件,图库页面将无法正常工作。
|
||||||
|
|
||||||
安装方式:Halo 后台 → **插件** → **安装** → 搜索「Photos」→ 安装并启用。
|
安装方式:Halo 后台 → **插件** → **安装** → 搜索「图库」→ 安装并启用。
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## 详细说明
|
## 详细说明
|
||||||
|
|||||||
+6
-6
@@ -32,7 +32,7 @@ docker restart halo
|
|||||||
|
|
||||||
搜索功能依赖 Halo 搜索插件:
|
搜索功能依赖 Halo 搜索插件:
|
||||||
|
|
||||||
1. 确认已安装 [搜索插件](https://www.halo.run/store/apps/app-search-widget)
|
1. 确认已安装 [搜索插件](https://www.halo.run/store/apps/app-DlacW)
|
||||||
2. 确认主题设置中「显示搜索按钮」已开启
|
2. 确认主题设置中「显示搜索按钮」已开启
|
||||||
3. 确认插件已启用
|
3. 确认插件已启用
|
||||||
4. 支持快捷键 `Ctrl+K`(macOS 为 `⌘K`)唤起搜索
|
4. 支持快捷键 `Ctrl+K`(macOS 为 `⌘K`)唤起搜索
|
||||||
@@ -43,10 +43,10 @@ docker restart halo
|
|||||||
|
|
||||||
| 页面 | 所需插件 |
|
| 页面 | 所需插件 |
|
||||||
|------|----------|
|
|------|----------|
|
||||||
| 瞬间 | [PluginMoments](https://www.halo.run/store/apps/app-moments) |
|
| 瞬间 | [PluginMoments](https://www.halo.run/store/apps/app-SnwWD) |
|
||||||
| 图库 | [PluginPhotos](https://www.halo.run/store/apps/app-photos) |
|
| 图库 | [PluginPhotos](https://www.halo.run/store/apps/app-BmQJW) |
|
||||||
| 友链 | [PluginLinks](https://www.halo.run/store/apps/app-links) |
|
| 友链 | [PluginLinks](https://www.halo.run/store/apps/app-hfbQg) |
|
||||||
| 朋友圈 | 朋友圈插件 |
|
| 朋友圈 | [PluginFriends](https://www.halo.run/store/apps/app-yISsV) |
|
||||||
|
|
||||||
安装并启用插件后,页面会自动显示内容。未安装插件时页面会显示友好的提示信息。
|
安装并启用插件后,页面会自动显示内容。未安装插件时页面会显示友好的提示信息。
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ docker restart halo
|
|||||||
|
|
||||||
### 如何报告 Bug?
|
### 如何报告 Bug?
|
||||||
|
|
||||||
请在 [GitHub Issues](https://github.com/nxxy335top/halo-theme-WarmIsland/issues) 中提交,包含以下信息:
|
请在 [GitHub Issues](https://github.com/sunny-335/halo-theme-WarmIsland/issues) 中提交,包含以下信息:
|
||||||
|
|
||||||
- Halo 版本
|
- Halo 版本
|
||||||
- 主题版本
|
- 主题版本
|
||||||
|
|||||||
+25
-12
@@ -6,29 +6,30 @@ WarmIsland 主题深度集成了多款 Halo 插件,提供了丰富的扩展页
|
|||||||
|
|
||||||
| 页面 | 所需插件 | 路由 |
|
| 页面 | 所需插件 | 路由 |
|
||||||
|------|----------|------|
|
|------|----------|------|
|
||||||
| 瞬间 | PluginMoments | /moments |
|
| 瞬间 | [PluginMoments](https://www.halo.run/store/apps/app-SnwWD) | /moments |
|
||||||
| 图库 | PluginPhotos | /photos |
|
| 图库 | [PluginPhotos](https://www.halo.run/store/apps/app-BmQJW) | /photos |
|
||||||
| 友情链接 | PluginLinks | /links |
|
| 友情链接 | [PluginLinks](https://www.halo.run/store/apps/app-hfbQg) | /links |
|
||||||
| 朋友圈 | plugin-friends | /friends |
|
| 朋友圈 | [plugin-friends](https://www.halo.run/store/apps/app-yISsV) | /friends |
|
||||||
| 豆瓣 | 豆瓣插件 | /douban |
|
| 豆瓣 | [plugin-douban](https://www.halo.run/store/apps/app-srBOL) | /douban |
|
||||||
| 装备 | 装备插件 | /equipments |
|
| 装备 | [equipment](https://www.halo.run/store/apps/app-ytygyqml) | /equipments |
|
||||||
| 足迹 | 足迹插件 | /footprints |
|
| 足迹 | [footprint](https://www.halo.run/store/apps/app-XCtAQ) | /footprints |
|
||||||
| Steam | Steam 插件 | /steam |
|
| Steam | [steam](https://www.halo.run/store/apps/app-0ojqyzfh) | /steam |
|
||||||
|
| 记得 | [plugin-important-dates](https://github.com/yyliucha/plugin-important-dates) | /important-dates |
|
||||||
|
|
||||||
## 豆瓣页面
|
## 豆瓣页面
|
||||||
|
[豆瓣插件](https://www.halo.run/store/apps/app-srBOL)
|
||||||
展示豆瓣观影/读书/音乐记录,支持按类型和状态筛选。
|
展示豆瓣观影/读书/音乐记录,支持按类型和状态筛选。
|
||||||
|
|
||||||
## 装备页面
|
## 装备页面
|
||||||
|
[装备管理插件](https://www.halo.run/store/apps/app-ytygyqml)
|
||||||
展示个人装备清单,按分组分类展示。
|
展示个人装备清单,按分组分类展示。
|
||||||
|
|
||||||
## 足迹页面
|
## 足迹页面
|
||||||
|
[足迹插件](https://www.halo.run/store/apps/app-XCtAQ)
|
||||||
展示个人足迹地图。
|
展示个人足迹地图。
|
||||||
|
|
||||||
## Steam 页面
|
## Steam 页面
|
||||||
|
[Steam](https://www.halo.run/store/apps/app-0ojqyzfh)
|
||||||
展示 Steam 游戏资料,包括:
|
展示 Steam 游戏资料,包括:
|
||||||
|
|
||||||
- 玩家头像和昵称
|
- 玩家头像和昵称
|
||||||
@@ -36,6 +37,18 @@ WarmIsland 主题深度集成了多款 Halo 插件,提供了丰富的扩展页
|
|||||||
- 徽章展示
|
- 徽章展示
|
||||||
- 最近游戏
|
- 最近游戏
|
||||||
|
|
||||||
|
## 记得页面
|
||||||
|
|
||||||
|
[记得插件](https://github.com/yyliucha/plugin-important-dates)
|
||||||
|
记录重要的日子、牵挂的人与座驾,「生活 / 爱车」双视图展示:
|
||||||
|
|
||||||
|
- 重要日期(含农历)与倒计时便签
|
||||||
|
- 牵挂的人:大头贴、昵称、关系与生日倒计时
|
||||||
|
- 座驾:脱敏车牌、到期事项徽章、车主与驾驶人
|
||||||
|
- 相册:点击车辆封面全屏只读浏览
|
||||||
|
|
||||||
|
详见 [记得页面](/pages/important-dates)。
|
||||||
|
|
||||||
::: info
|
::: info
|
||||||
扩展页面需要安装对应的 Halo 插件才能使用。如果插件未安装,页面会显示友好的提示信息。
|
扩展页面需要安装对应的 Halo 插件才能使用。如果插件未安装,页面会显示友好的提示信息。
|
||||||
:::
|
:::
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# 朋友圈
|
# 朋友圈
|
||||||
|
|
||||||
朋友圈页面展示订阅的友站最新文章动态,需要安装 [朋友圈插件](https://www.halo.run/store/apps/app-friends)。
|
朋友圈页面展示订阅的友站最新文章动态,需要安装 [朋友圈插件](https://www.halo.run/store/apps/app-yISsV)。
|
||||||
|
|
||||||
## 功能说明
|
## 功能说明
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
# 记得页面
|
||||||
|
|
||||||
|
`/important-dates` 由 [plugin-important-dates](https://github.com/yyliucha/plugin-important-dates) 插件提供路由,主题提供同名模板 `templates/important-dates.html` 覆盖插件默认样式,使页面完全融入 WarmIsland 的外观(导航、页脚、暗色模式)。
|
||||||
|
|
||||||
|
## 页面结构
|
||||||
|
|
||||||
|
```
|
||||||
|
记得(标题 + 副标题 + 强调线)
|
||||||
|
├─ 生活 / 爱车 视图切换(插件开启「前台爱车模块」时出现)
|
||||||
|
├─ 到期提醒横幅(生活:重要日期;爱车:保险 / 年检 / 保养)
|
||||||
|
├─ 生活视图
|
||||||
|
│ ├─ 重要日期(便签卡片:倒计时、日期、农历标记、关联的人)
|
||||||
|
│ └─ 牵挂的人(大头贴、昵称、关系、脱敏生日与倒计时)
|
||||||
|
└─ 爱车视图
|
||||||
|
├─ 我的爱车(封面、分类品牌、脱敏车牌、到期徽章、车主/驾驶人)
|
||||||
|
└─ 车主与驾驶人 / 其他重要的人
|
||||||
|
```
|
||||||
|
|
||||||
|
## 交互
|
||||||
|
|
||||||
|
- **视图切换**:点击「生活 / 爱车」即时切换,地址栏记忆 `?view=car`
|
||||||
|
- **相册**:点击车辆封面全屏浏览相册(只读),`Esc` 或点击空白处关闭;未上传照片时给出轻提示
|
||||||
|
- **忽略提醒**:横幅右侧 ✕ 表示「本次到期周期内不再提示」,记录在浏览器本地,到期日变化后自动恢复
|
||||||
|
|
||||||
|
## 模板覆盖机制
|
||||||
|
|
||||||
|
插件通过 Halo 的 `TemplateNameResolver` 解析模板名:
|
||||||
|
|
||||||
|
1. 主题存在 `templates/important-dates.html` → 使用主题模板
|
||||||
|
2. 否则回退插件自带默认模板(会用主题的 `layout.html` 页面布局契约)
|
||||||
|
|
||||||
|
删除主题内的 `important-dates.html` 即可回到插件默认样式;插件不会写入或修改任何主题文件。
|
||||||
|
|
||||||
|
## 可用模板变量
|
||||||
|
|
||||||
|
| 变量 | 说明 |
|
||||||
|
| --- | --- |
|
||||||
|
| `title` | 页面标题(插件默认「记得」) |
|
||||||
|
| `dates` / `people` | 重要日期、人员列表 |
|
||||||
|
| `reminders` | 即将到来的重要日期(提醒横幅) |
|
||||||
|
| `cars` / `carEvents` | 座驾列表、即将到期的座驾事项 |
|
||||||
|
| `carPeople` / `otherPeople` / `personCars` | 车主驾驶人、其他人员、人员与车辆关系 |
|
||||||
|
| `showCarSection` / `carSkinEnabled` / `showAvatar` / `showImportantTag` | 各展示开关 |
|
||||||
|
| `allowDismiss` | 是否允许逐条忽略提醒 |
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
`PersonVo` 没有 `gender` 字段,自定义模板时不要写 `${p.gender}`,否则会触发 SpEL `EL1008E` 导致页面 500。
|
||||||
|
:::
|
||||||
|
|
||||||
|
## 相关页面
|
||||||
|
|
||||||
|
- [记得配置](/config/important-dates) — 页面标题与副标题
|
||||||
|
- [扩展页面](/pages/extended) — 其它插件扩展页面
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
# 友情链接
|
# 友情链接
|
||||||
|
|
||||||
友情链接页面展示友站信息,需要安装 [链接管理插件](https://www.halo.run/store/apps/app-links)。
|
友情链接页面展示友站信息,需要安装 [链接管理插件](https://www.halo.run/store/apps/app-hfbQg)。
|
||||||
|
|
||||||
## 展示样式
|
## 展示样式
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# 瞬间
|
# 瞬间
|
||||||
|
|
||||||
瞬间页面展示短内容动态,需要安装 [瞬间插件](https://www.halo.run/store/apps/app-moments)。
|
瞬间页面展示短内容动态,需要安装 [瞬间插件](https://www.halo.run/store/apps/app-SnwWD)。
|
||||||
|
|
||||||
## 展示样式
|
## 展示样式
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# 图库
|
# 图库
|
||||||
|
|
||||||
图库页面展示照片集,需要安装 [图库插件](https://www.halo.run/store/apps/app-photos)。
|
图库页面展示照片集,需要安装 [图库插件](https://www.halo.run/store/apps/app-BmQJW)。
|
||||||
|
|
||||||
## 展示样式
|
## 展示样式
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
const js = `(function(){var h=document.querySelector(".hero");if(!h)return "No .hero element";var s=getComputedStyle(h);return JSON.stringify({width:s.width,marginLeft:s.marginLeft,marginTop:s.marginTop,paddingTop:s.paddingTop})})()`;
|
|
||||||
console.log(Buffer.from(js).toString('base64'));
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
common.home=Home
|
|
||||||
common.search=Search
|
|
||||||
common.themeSwitch=Switch Theme
|
|
||||||
common.menu=Menu
|
|
||||||
common.close=Close
|
|
||||||
common.toc=Table of Contents
|
|
||||||
common.openToc=Open Table of Contents
|
|
||||||
common.closeToc=Close Table of Contents
|
|
||||||
common.newer=Newer
|
|
||||||
common.older=Older
|
|
||||||
common.loading=Loading...
|
|
||||||
common.allLoaded=All posts loaded
|
|
||||||
common.allMomentsLoaded=All moments loaded
|
|
||||||
common.noPosts=No posts yet.
|
|
||||||
common.postCount=Total {0} posts
|
|
||||||
common.categoryCount=Total {0} categories
|
|
||||||
common.tagCount=Total {0} tags
|
|
||||||
common.readMore=Read more
|
|
||||||
common.words=words
|
|
||||||
common.readTime=min read
|
|
||||||
common.views=views
|
|
||||||
common.like=Like
|
|
||||||
common.pagination=Pagination
|
|
||||||
common.toggleMenu=Toggle menu
|
|
||||||
common.all=All
|
|
||||||
common.noPhotos=No photos yet.
|
|
||||||
common.noPhotosInGroup=No photos in this group.
|
|
||||||
common.pluginError=Plugin loading error, please check plugin status.
|
|
||||||
common.installPlugin=This feature requires the {0} plugin, <a href="{1}">go to the marketplace to install</a>
|
|
||||||
common.featured=Featured
|
|
||||||
common.latestPosts=Latest Posts
|
|
||||||
common.timeline=Timeline
|
|
||||||
common.viewAll=View all
|
|
||||||
|
|
||||||
navbar.search=Search
|
|
||||||
navbar.themeSwitch=Switch Theme
|
|
||||||
|
|
||||||
hero.pinned=Pinned
|
|
||||||
hero.posts=Posts
|
|
||||||
|
|
||||||
article.previousPost=Previous
|
|
||||||
article.nextPost=Next
|
|
||||||
article.toc=Table of Contents
|
|
||||||
article.wordCount=words
|
|
||||||
article.readTime=min read
|
|
||||||
article.views=views
|
|
||||||
article.relatedPosts=Related Posts
|
|
||||||
|
|
||||||
share.title=Share
|
|
||||||
share.weibo=Weibo
|
|
||||||
share.twitter=X (Twitter)
|
|
||||||
share.facebook=Facebook
|
|
||||||
share.telegram=Telegram
|
|
||||||
share.copyLink=Copy Link
|
|
||||||
share.copied=Copied!
|
|
||||||
share.qrcode=QR Code
|
|
||||||
|
|
||||||
archives.title=Archives
|
|
||||||
|
|
||||||
categories.title=Categories
|
|
||||||
|
|
||||||
tags.title=Tags
|
|
||||||
|
|
||||||
links.title=Friends
|
|
||||||
links.subtitle=Mountains and rivers, a journey of a thousand miles
|
|
||||||
|
|
||||||
moments.title=Moments
|
|
||||||
moments.noMoments=No moments yet, go record your mood \U0001f319
|
|
||||||
|
|
||||||
photos.title=Gallery
|
|
||||||
|
|
||||||
friends.title=Friends Circle
|
|
||||||
|
|
||||||
equipment.title=Equipment
|
|
||||||
|
|
||||||
steam.title=Steam
|
|
||||||
steam.homepage=Steam Homepage
|
|
||||||
steam.level=Level
|
|
||||||
steam.ownedGames=Owned Games
|
|
||||||
steam.totalPlaytime=Total Playtime
|
|
||||||
steam.recentPlaytime=Recent 2 Weeks
|
|
||||||
steam.badges=Badges
|
|
||||||
steam.hours=hours
|
|
||||||
steam.recentlyPlayed=Recently Played
|
|
||||||
steam.gameLibrary=Game Library
|
|
||||||
steam.lastPlayed=Last played {0}
|
|
||||||
|
|
||||||
douban.title=Douban
|
|
||||||
douban.wish=Wish
|
|
||||||
douban.done=Done
|
|
||||||
douban.wishRead=Wish
|
|
||||||
douban.reading=Reading
|
|
||||||
douban.listened=Listened
|
|
||||||
douban.wishPlay=Wish
|
|
||||||
douban.played=Played
|
|
||||||
douban.wishListen=Wish
|
|
||||||
douban.listening=Listening
|
|
||||||
douban.playing=Playing
|
|
||||||
douban.myRating=My:
|
|
||||||
|
|
||||||
messageboard.title=Message Board
|
|
||||||
messageboard.subtitle=Leave your footprints here \U0001f319
|
|
||||||
|
|
||||||
footer.poweredBy=Powered by Halo
|
|
||||||
|
|
||||||
error.404.title=Page Not Found
|
|
||||||
error.404.desc=The page you are looking for seems to have wandered off this island
|
|
||||||
error.404.home=Back to Home
|
|
||||||
error.404.back=Go Back
|
|
||||||
error.500.title=Server Error
|
|
||||||
error.500.desc=The island encountered some issues, please try again later
|
|
||||||
error.500.home=Back to Home
|
|
||||||
error.500.back=Go Back
|
|
||||||
|
|
||||||
sidebar.authorInfo=About Author
|
|
||||||
sidebar.latestPosts=Latest Posts
|
|
||||||
sidebar.recommendedPosts=Recommended
|
|
||||||
sidebar.timeProgress=Time Progress
|
|
||||||
sidebar.dayProgress=Day
|
|
||||||
sidebar.monthProgress=Month
|
|
||||||
sidebar.yearProgress=Year
|
|
||||||
sidebar.categories=Categories
|
|
||||||
sidebar.tags=Tags
|
|
||||||
|
|
||||||
comment.style=Warm
|
|
||||||
comment.showAvatar=Show Avatar
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
common.home=Home
|
|
||||||
common.search=Search
|
|
||||||
common.themeSwitch=Switch Theme
|
|
||||||
common.menu=Menu
|
|
||||||
common.close=Close
|
|
||||||
common.toc=Table of Contents
|
|
||||||
common.openToc=Open Table of Contents
|
|
||||||
common.closeToc=Close Table of Contents
|
|
||||||
common.newer=Newer
|
|
||||||
common.older=Older
|
|
||||||
common.loading=Loading...
|
|
||||||
common.allLoaded=All posts loaded
|
|
||||||
common.noPosts=No posts yet.
|
|
||||||
common.postCount=Total {0} posts
|
|
||||||
common.readMore=Read more
|
|
||||||
common.words=words
|
|
||||||
common.readTime=min read
|
|
||||||
common.views=views
|
|
||||||
common.like=Like
|
|
||||||
common.pagination=Pagination
|
|
||||||
common.toggleMenu=Toggle menu
|
|
||||||
common.allMomentsLoaded=All moments loaded
|
|
||||||
common.categoryCount=Total {0} categories
|
|
||||||
common.tagCount=Total {0} tags
|
|
||||||
common.all=All
|
|
||||||
common.noPhotos=No photos yet.
|
|
||||||
common.noPhotosInGroup=No photos in this group.
|
|
||||||
common.pluginError=Plugin loading error, please check plugin status.
|
|
||||||
common.installPlugin=This feature requires the {0} plugin, <a href="{1}">go to the marketplace to install</a>
|
|
||||||
common.featured=Featured
|
|
||||||
common.latestPosts=Latest Posts
|
|
||||||
common.timeline=Timeline
|
|
||||||
common.viewAll=View all
|
|
||||||
|
|
||||||
navbar.search=Search
|
|
||||||
navbar.themeSwitch=Switch Theme
|
|
||||||
|
|
||||||
hero.pinned=Pinned
|
|
||||||
hero.posts=Posts
|
|
||||||
|
|
||||||
article.previousPost=Previous
|
|
||||||
article.nextPost=Next
|
|
||||||
article.toc=Table of Contents
|
|
||||||
article.wordCount=words
|
|
||||||
article.readTime=min read
|
|
||||||
article.views=views
|
|
||||||
article.relatedPosts=Related Posts
|
|
||||||
|
|
||||||
share.title=Share
|
|
||||||
share.weibo=Weibo
|
|
||||||
share.twitter=X (Twitter)
|
|
||||||
share.facebook=Facebook
|
|
||||||
share.telegram=Telegram
|
|
||||||
share.copyLink=Copy Link
|
|
||||||
share.copied=Copied!
|
|
||||||
share.qrcode=QR Code
|
|
||||||
|
|
||||||
archives.title=Archives
|
|
||||||
|
|
||||||
categories.title=Categories
|
|
||||||
|
|
||||||
tags.title=Tags
|
|
||||||
|
|
||||||
links.title=Friends
|
|
||||||
links.subtitle=Mountains and rivers, a journey of a thousand miles
|
|
||||||
|
|
||||||
moments.title=Moments
|
|
||||||
moments.noMoments=No moments yet, go record your mood \U0001f319
|
|
||||||
|
|
||||||
photos.title=Gallery
|
|
||||||
|
|
||||||
friends.title=Friends Circle
|
|
||||||
|
|
||||||
equipment.title=Equipment
|
|
||||||
|
|
||||||
steam.title=Steam
|
|
||||||
steam.homepage=Steam Homepage
|
|
||||||
steam.level=Level
|
|
||||||
steam.ownedGames=Owned Games
|
|
||||||
steam.totalPlaytime=Total Playtime
|
|
||||||
steam.recentPlaytime=Recent 2 Weeks
|
|
||||||
steam.badges=Badges
|
|
||||||
steam.hours=hours
|
|
||||||
steam.recentlyPlayed=Recently Played
|
|
||||||
steam.gameLibrary=Game Library
|
|
||||||
steam.lastPlayed=Last played {0}
|
|
||||||
|
|
||||||
douban.title=Douban
|
|
||||||
douban.wish=Wish
|
|
||||||
douban.done=Done
|
|
||||||
douban.wishRead=Wish
|
|
||||||
douban.reading=Reading
|
|
||||||
douban.listened=Listened
|
|
||||||
douban.wishPlay=Wish
|
|
||||||
douban.played=Played
|
|
||||||
douban.wishListen=Wish
|
|
||||||
douban.listening=Listening
|
|
||||||
douban.playing=Playing
|
|
||||||
douban.myRating=My:
|
|
||||||
|
|
||||||
messageboard.title=Message Board
|
|
||||||
messageboard.subtitle=Leave your footprints here \U0001f319
|
|
||||||
|
|
||||||
footer.poweredBy=Powered by Halo
|
|
||||||
|
|
||||||
error.404.title=Page Not Found
|
|
||||||
error.404.desc=The page you are looking for seems to have wandered off this island
|
|
||||||
error.404.home=Back to Home
|
|
||||||
error.404.back=Go Back
|
|
||||||
error.500.title=Server Error
|
|
||||||
error.500.desc=The island encountered some issues, please try again later
|
|
||||||
error.500.home=Back to Home
|
|
||||||
error.500.back=Go Back
|
|
||||||
|
|
||||||
sidebar.authorInfo=About Author
|
|
||||||
sidebar.latestPosts=Latest Posts
|
|
||||||
sidebar.recommendedPosts=Recommended
|
|
||||||
sidebar.timeProgress=Time Progress
|
|
||||||
sidebar.dayProgress=Day
|
|
||||||
sidebar.monthProgress=Month
|
|
||||||
sidebar.yearProgress=Year
|
|
||||||
sidebar.categories=Categories
|
|
||||||
sidebar.tags=Tags
|
|
||||||
|
|
||||||
comment.style=Warm
|
|
||||||
comment.showAvatar=Show Avatar
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
common.home=\u9996\u9875
|
|
||||||
common.search=\u641c\u7d22
|
|
||||||
common.themeSwitch=\u5207\u6362\u4e3b\u9898
|
|
||||||
common.menu=\u83dc\u5355
|
|
||||||
common.close=\u5173\u95ed
|
|
||||||
common.toc=\u76ee\u5f55
|
|
||||||
common.openToc=\u6253\u5f00\u76ee\u5f55
|
|
||||||
common.closeToc=\u5173\u95ed\u76ee\u5f55
|
|
||||||
common.newer=\u8f83\u65b0
|
|
||||||
common.older=\u8f83\u65e7
|
|
||||||
common.loading=\u52a0\u8f7d\u4e2d...
|
|
||||||
common.allLoaded=\u5df2\u52a0\u8f7d\u5168\u90e8\u6587\u7ae0
|
|
||||||
common.noPosts=\u6682\u65e0\u6587\u7ae0
|
|
||||||
common.postCount=\u5171 {0} \u7bc7\u6587\u7ae0
|
|
||||||
common.readMore=\u9605\u8bfb\u66f4\u591a
|
|
||||||
common.words=\u5b57
|
|
||||||
common.readTime=\u5206\u949f
|
|
||||||
common.views=\u9605\u8bfb
|
|
||||||
common.like=\u70b9\u8d5e
|
|
||||||
common.pagination=\u5206\u9875
|
|
||||||
common.toggleMenu=\u5207\u6362\u83dc\u5355
|
|
||||||
common.allMomentsLoaded=\u5df2\u52a0\u8f7d\u5168\u90e8\u77ac\u95f4
|
|
||||||
common.categoryCount=\u5171 {0} \u4e2a\u5206\u7c7b
|
|
||||||
common.tagCount=\u5171 {0} \u4e2a\u6807\u7b7e
|
|
||||||
common.all=\u5168\u90e8
|
|
||||||
common.noPhotos=\u6682\u65e0\u56fe\u7247
|
|
||||||
common.noPhotosInGroup=\u8be5\u5206\u7ec4\u6682\u65e0\u56fe\u7247
|
|
||||||
common.pluginError=\u63d2\u4ef6\u52a0\u8f7d\u5f02\u5e38\uff0c\u8bf7\u68c0\u67e5\u63d2\u4ef6\u72b6\u6001
|
|
||||||
common.installPlugin=\u8be5\u529f\u80fd\u9700\u8981\u5b89\u88c5\u300c{0}\u300d\u63d2\u4ef6\uff0c<a href="{1}">\u524d\u5f80\u5e94\u7528\u5e02\u573a\u5b89\u88c5</a>
|
|
||||||
common.featured=\u7cbe\u9009
|
|
||||||
common.latestPosts=\u6700\u65b0\u6587\u7ae0
|
|
||||||
common.timeline=\u65f6\u95f4\u7ebf
|
|
||||||
common.viewAll=\u67e5\u770b\u5168\u90e8
|
|
||||||
|
|
||||||
navbar.search=\u641c\u7d22
|
|
||||||
navbar.themeSwitch=\u5207\u6362\u4e3b\u9898
|
|
||||||
|
|
||||||
hero.pinned=\u7f6e\u9876
|
|
||||||
hero.posts=\u6587\u7ae0
|
|
||||||
|
|
||||||
article.previousPost=\u4e0a\u4e00\u7bc7
|
|
||||||
article.nextPost=\u4e0b\u4e00\u7bc7
|
|
||||||
article.toc=\u76ee\u5f55
|
|
||||||
article.wordCount=\u5b57
|
|
||||||
article.readTime=\u5206\u949f
|
|
||||||
article.views=\u9605\u8bfb
|
|
||||||
article.relatedPosts=\u76f8\u5173\u63a8\u8350
|
|
||||||
|
|
||||||
share.title=\u5206\u4eab
|
|
||||||
share.weibo=\u5fae\u535a
|
|
||||||
share.twitter=X
|
|
||||||
share.facebook=Facebook
|
|
||||||
share.telegram=Telegram
|
|
||||||
share.copyLink=\u590d\u5236\u94fe\u63a5
|
|
||||||
share.copied=\u5df2\u590d\u5236
|
|
||||||
share.qrcode=\u4e8c\u7ef4\u7801
|
|
||||||
|
|
||||||
archives.title=\u5f52\u6863
|
|
||||||
|
|
||||||
categories.title=\u5206\u7c7b
|
|
||||||
|
|
||||||
tags.title=\u6807\u7b7e
|
|
||||||
|
|
||||||
links.title=\u53cb\u94fe
|
|
||||||
links.subtitle=\u5c71\u6c34\u4e00\u7a0b\uff0c\u4e09\u751f\u6709\u5e78
|
|
||||||
|
|
||||||
moments.title=\u52a8\u6001
|
|
||||||
moments.noMoments=\u8fd8\u6ca1\u6709\u77ac\u95f4\uff0c\u5feb\u53bb\u8bb0\u5f55\u5f53\u4e0b\u7684\u5fc3\u60c5\u5427 \U0001f319
|
|
||||||
|
|
||||||
photos.title=\u76f8\u518c
|
|
||||||
|
|
||||||
friends.title=\u53cb\u4eba\u5708
|
|
||||||
|
|
||||||
equipment.title=\u88c5\u5907
|
|
||||||
|
|
||||||
steam.title=Steam
|
|
||||||
steam.homepage=Steam \u4e3b\u9875
|
|
||||||
steam.level=\u7b49\u7ea7
|
|
||||||
steam.ownedGames=\u62e5\u6709\u6e38\u620f
|
|
||||||
steam.totalPlaytime=\u603b\u6e38\u73a9\u65f6\u957f
|
|
||||||
steam.recentPlaytime=\u8fd1\u4e24\u5468
|
|
||||||
steam.badges=\u5fbd\u7ae0
|
|
||||||
steam.hours=\u5c0f\u65f6
|
|
||||||
steam.recentlyPlayed=\u6700\u8fd1\u6e38\u73a9
|
|
||||||
steam.gameLibrary=\u6e38\u620f\u5e93
|
|
||||||
steam.lastPlayed=\u6700\u540e\u6e38\u73a9 {0}
|
|
||||||
|
|
||||||
douban.title=\u8c46\u74e3
|
|
||||||
douban.wish=\u60f3\u770b
|
|
||||||
douban.done=\u770b\u8fc7
|
|
||||||
douban.wishRead=\u60f3\u8bfb
|
|
||||||
douban.reading=\u5728\u8bfb
|
|
||||||
douban.listened=\u542c\u8fc7
|
|
||||||
douban.wishPlay=\u60f3\u73a9
|
|
||||||
douban.played=\u73a9\u8fc7
|
|
||||||
douban.wishListen=\u60f3\u542c
|
|
||||||
douban.listening=\u5728\u542c
|
|
||||||
douban.playing=\u5728\u73a9
|
|
||||||
douban.myRating=\u6211\u7684\uff1a
|
|
||||||
|
|
||||||
messageboard.title=\u7559\u8a00\u677f
|
|
||||||
messageboard.subtitle=\u5728\u8fd9\u91cc\u7559\u4e0b\u4f60\u7684\u8db3\u8ff9 \U0001f319
|
|
||||||
|
|
||||||
footer.poweredBy=Powered by Halo
|
|
||||||
|
|
||||||
error.404.title=\u9875\u9762\u672a\u627e\u5230
|
|
||||||
error.404.desc=\u4f60\u5bfb\u627e\u7684\u9875\u9762\u4f3c\u4e4e\u5df2\u7ecf\u8ff7\u8def\u4e86
|
|
||||||
error.404.home=\u8fd4\u56de\u9996\u9875
|
|
||||||
error.404.back=\u8fd4\u56de\u4e0a\u9875
|
|
||||||
error.500.title=\u670d\u52a1\u5668\u9519\u8bef
|
|
||||||
error.500.desc=\u5c0f\u5c9b\u9047\u5230\u4e86\u4e00\u4e9b\u95ee\u9898\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5
|
|
||||||
error.500.home=\u8fd4\u56de\u9996\u9875
|
|
||||||
error.500.back=\u8fd4\u56de\u4e0a\u9875
|
|
||||||
|
|
||||||
sidebar.authorInfo=\u535a\u4e3b\u4fe1\u606f
|
|
||||||
sidebar.latestPosts=\u6700\u65b0\u6587\u7ae0
|
|
||||||
sidebar.recommendedPosts=\u63a8\u8350\u6587\u7ae0
|
|
||||||
sidebar.timeProgress=\u65f6\u5149\u8fdb\u5ea6
|
|
||||||
sidebar.dayProgress=\u65e5
|
|
||||||
sidebar.monthProgress=\u6708
|
|
||||||
sidebar.yearProgress=\u5e74
|
|
||||||
sidebar.categories=\u5206\u7c7b
|
|
||||||
sidebar.tags=\u6807\u7b7e
|
|
||||||
|
|
||||||
comment.style=\u6e29\u6696
|
|
||||||
comment.showAvatar=\u663e\u793a\u5934\u50cf
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
common.home=\u9996\u9801
|
|
||||||
common.search=\u641c\u5c0b
|
|
||||||
common.themeSwitch=\u5207\u63db\u4e3b\u984c
|
|
||||||
common.menu=\u9078\u55ae
|
|
||||||
common.close=\u95dc\u9589
|
|
||||||
common.toc=\u76ee\u9304
|
|
||||||
common.openToc=\u6253\u958b\u76ee\u9304
|
|
||||||
common.closeToc=\u95dc\u9589\u76ee\u9304
|
|
||||||
common.newer=\u8f03\u65b0
|
|
||||||
common.older=\u8f03\u820a
|
|
||||||
common.loading=\u8f09\u5165\u4e2d...
|
|
||||||
common.allLoaded=\u5df2\u8f09\u5165\u5168\u90e8\u6587\u7ae0
|
|
||||||
common.noPosts=\u66ab\u7121\u6587\u7ae0
|
|
||||||
common.postCount=\u5171 {0} \u7bc7\u6587\u7ae0
|
|
||||||
common.readMore=\u95b1\u8b80\u66f4\u591a
|
|
||||||
common.words=\u5b57
|
|
||||||
common.readTime=\u5206\u9418
|
|
||||||
common.views=\u95b1\u8b80
|
|
||||||
common.like=\u6309\u8b9a
|
|
||||||
common.pagination=\u5206\u9801
|
|
||||||
common.toggleMenu=\u5207\u63db\u9078\u55ae
|
|
||||||
common.allMomentsLoaded=\u5df2\u8f09\u5165\u5168\u90e8\u77ac\u9593
|
|
||||||
common.categoryCount=\u5171 {0} \u500b\u5206\u985e
|
|
||||||
common.tagCount=\u5171 {0} \u500b\u6a19\u7c64
|
|
||||||
common.all=\u5168\u90e8
|
|
||||||
common.noPhotos=\u66ab\u7121\u5716\u7247
|
|
||||||
common.noPhotosInGroup=\u8a72\u5206\u7d44\u66ab\u7121\u5716\u7247
|
|
||||||
common.pluginError=\u5916\u639b\u7a0b\u5f0f\u8f09\u5165\u7570\u5e38\uff0c\u8acb\u6aa2\u67e5\u5916\u639b\u7a0b\u5f0f\u72c0\u614b
|
|
||||||
common.installPlugin=\u8a72\u529f\u80fd\u9700\u8981\u5b89\u88dd\u300c{0}\u300d\u5916\u639b\u7a0b\u5f0f\uff0c<a href="{1}">\u524d\u5f80\u61c9\u7528\u5e02\u5834\u5b89\u88dd</a>
|
|
||||||
common.featured=\u7cbe\u9078
|
|
||||||
common.latestPosts=\u6700\u65b0\u6587\u7ae0
|
|
||||||
common.timeline=\u6642\u9593\u7dda
|
|
||||||
common.viewAll=\u67e5\u770b\u5168\u90e8
|
|
||||||
|
|
||||||
navbar.search=\u641c\u5c0b
|
|
||||||
navbar.themeSwitch=\u5207\u63db\u4e3b\u984c
|
|
||||||
|
|
||||||
hero.pinned=\u7f6e\u9802
|
|
||||||
hero.posts=\u6587\u7ae0
|
|
||||||
|
|
||||||
article.previousPost=\u4e0a\u4e00\u7bc7
|
|
||||||
article.nextPost=\u4e0b\u4e00\u7bc7
|
|
||||||
article.toc=\u76ee\u9304
|
|
||||||
article.wordCount=\u5b57
|
|
||||||
article.readTime=\u5206\u9418
|
|
||||||
article.views=\u95b1\u8b80
|
|
||||||
article.relatedPosts=\u76f8\u95dc\u63a8\u85a6
|
|
||||||
|
|
||||||
share.title=\u5206\u4eab
|
|
||||||
share.weibo=\u5fae\u535a
|
|
||||||
share.twitter=X
|
|
||||||
share.facebook=Facebook
|
|
||||||
share.telegram=Telegram
|
|
||||||
share.copyLink=\u8907\u88fd\u9023\u7d50
|
|
||||||
share.copied=\u5df2\u8907\u88fd
|
|
||||||
share.qrcode=\u4e8c\u7dad\u78bc
|
|
||||||
|
|
||||||
archives.title=\u6b78\u6a94
|
|
||||||
|
|
||||||
categories.title=\u5206\u985e
|
|
||||||
|
|
||||||
tags.title=\u6a19\u7c64
|
|
||||||
|
|
||||||
links.title=\u53cb\u93c8
|
|
||||||
links.subtitle=\u5c71\u6c34\u4e00\u7a0b\uff0c\u4e09\u751f\u6709\u5e78
|
|
||||||
|
|
||||||
moments.title=\u52d5\u614b
|
|
||||||
moments.noMoments=\u9084\u6c92\u6709\u77ac\u9593\uff0c\u5feb\u53bb\u8a18\u9304\u7576\u4e0b\u7684\u5fc3\u60c5\u5427 \U0001f319
|
|
||||||
|
|
||||||
photos.title=\u76f8\u7c3f
|
|
||||||
|
|
||||||
friends.title=\u53cb\u4eba\u5708
|
|
||||||
|
|
||||||
equipment.title=\u88dd\u5099
|
|
||||||
|
|
||||||
steam.title=Steam
|
|
||||||
steam.homepage=Steam \u4e3b\u9801
|
|
||||||
steam.level=\u7b49\u7d1a
|
|
||||||
steam.ownedGames=\u64c1\u6709\u904a\u6232
|
|
||||||
steam.totalPlaytime=\u7e3d\u904a\u73a9\u6642\u9577
|
|
||||||
steam.recentPlaytime=\u8fd1\u5169\u9031
|
|
||||||
steam.badges=\u5fbd\u7ae0
|
|
||||||
steam.hours=\u5c0f\u6642
|
|
||||||
steam.recentlyPlayed=\u6700\u8fd1\u904a\u73a9
|
|
||||||
steam.gameLibrary=\u904a\u6232\u5eab
|
|
||||||
steam.lastPlayed=\u6700\u5f8c\u904a\u73a9 {0}
|
|
||||||
|
|
||||||
douban.title=\u8c46\u74e3
|
|
||||||
douban.wish=\u60f3\u770b
|
|
||||||
douban.done=\u770b\u904e
|
|
||||||
douban.wishRead=\u60f3\u8b80
|
|
||||||
douban.reading=\u5728\u8b80
|
|
||||||
douban.listened=\u807d\u904e
|
|
||||||
douban.wishPlay=\u60f3\u73a9
|
|
||||||
douban.played=\u73a9\u904e
|
|
||||||
douban.wishListen=\u60f3\u807d
|
|
||||||
douban.listening=\u5728\u807d
|
|
||||||
douban.playing=\u5728\u73a9
|
|
||||||
douban.myRating=\u6211\u7684\uff1a
|
|
||||||
|
|
||||||
messageboard.title=\u7559\u8a00\u677f
|
|
||||||
messageboard.subtitle=\u5728\u9019\u88cf\u7559\u4e0b\u4f60\u7684\u8db3\u8de1 \U0001f319
|
|
||||||
|
|
||||||
footer.poweredBy=Powered by Halo
|
|
||||||
|
|
||||||
error.404.title=\u9801\u9762\u672a\u627e\u5230
|
|
||||||
error.404.desc=\u4f60\u5c0b\u627e\u7684\u9801\u9762\u4f3c\u4e4e\u5df2\u7d93\u8ff7\u8def\u4e86
|
|
||||||
error.404.home=\u8fd4\u56de\u9996\u9801
|
|
||||||
error.404.back=\u8fd4\u56de\u4e0a\u9801
|
|
||||||
error.500.title=\u4f3a\u670d\u5668\u932f\u8aa4
|
|
||||||
error.500.desc=\u5c0f\u5cf6\u9047\u5230\u4e86\u4e00\u4e9b\u554f\u984c\uff0c\u8acb\u7a0d\u5f8c\u518d\u8a66
|
|
||||||
error.500.home=\u8fd4\u56de\u9996\u9801
|
|
||||||
error.500.back=\u8fd4\u56de\u4e0a\u9801
|
|
||||||
|
|
||||||
sidebar.authorInfo=\u535a\u4e3b\u8cc7\u8a0a
|
|
||||||
sidebar.latestPosts=\u6700\u65b0\u6587\u7ae0
|
|
||||||
sidebar.recommendedPosts=\u63a8\u85a6\u6587\u7ae0
|
|
||||||
sidebar.timeProgress=\u6642\u5149\u9032\u5ea6
|
|
||||||
sidebar.dayProgress=\u65e5
|
|
||||||
sidebar.monthProgress=\u6708
|
|
||||||
sidebar.yearProgress=\u5e74
|
|
||||||
sidebar.categories=\u5206\u985e
|
|
||||||
sidebar.tags=\u6a19\u7c64
|
|
||||||
|
|
||||||
comment.style=\u6eab\u6696
|
|
||||||
comment.showAvatar=\u986f\u793a\u982d\u50cf
|
|
||||||
+4
-12
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"version": "1.1.10",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=22.12.0"
|
"node": ">=22.12.0"
|
||||||
@@ -22,24 +23,15 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"pnpm": {
|
|
||||||
"onlyBuiltDependencies": [
|
|
||||||
"@parcel/watcher",
|
|
||||||
"sharp"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/vue": "^6.0.1",
|
|
||||||
"astro": "^6.1.4",
|
"astro": "^6.1.4",
|
||||||
"lightgallery": "^2.9.0",
|
"lightgallery": "^2.9.0"
|
||||||
"vue": "^3.5.32"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@iconify-json/mingcute": "^1.2.7",
|
"@halo-dev/theme-package-cli": "^1.1.1",
|
||||||
"nodemon": "^3.1.14",
|
"nodemon": "^3.1.14",
|
||||||
"prettier": "3.8.1",
|
"prettier": "3.8.1",
|
||||||
"prettier-plugin-astro": "0.14.1",
|
"prettier-plugin-astro": "0.14.1",
|
||||||
"sass": "^1.87.0",
|
"sass": "^1.87.0"
|
||||||
"unplugin-icons": "^23.0.1"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+682
-1061
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
allowBuilds:
|
allowBuilds:
|
||||||
'@parcel/watcher': true
|
"@parcel/watcher": true
|
||||||
esbuild: true
|
esbuild: true
|
||||||
sharp: true
|
sharp: true
|
||||||
onlyBuiltDependencies:
|
onlyBuiltDependencies:
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user