Compare commits
No commits in common. "d863d8c53c7c63e3d09539cdce044709230ca12e" and "8c2616b530636b0474950b2e17fb300d0ed36d04" have entirely different histories.
d863d8c53c
...
8c2616b530
2
.dockerignore
Normal file
@ -0,0 +1,2 @@
|
||||
node_modules
|
||||
dist
|
9
.editorconfig
Normal file
@ -0,0 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
@ -1,17 +0,0 @@
|
||||
name: CI
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
Deploy:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Install Docker
|
||||
run: curl -fsSL https://get.docker.com | sh
|
||||
|
||||
- name: Deploy with Docker
|
||||
run: docker compose up --build -d
|
89
.github/workflows/ci.yml
vendored
Normal file
@ -0,0 +1,89 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18.x
|
||||
cache: pnpm
|
||||
|
||||
- name: Install
|
||||
run: pnpm install
|
||||
|
||||
- name: Lint
|
||||
run: pnpm run lint
|
||||
|
||||
typecheck:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18.x
|
||||
cache: pnpm
|
||||
|
||||
- name: Install
|
||||
run: pnpm install
|
||||
|
||||
- name: Typecheck
|
||||
run: pnpm run typecheck
|
||||
|
||||
# test:
|
||||
# runs-on: ubuntu-latest
|
||||
# steps:
|
||||
# - uses: actions/checkout@v3
|
||||
# - uses: pnpm/action-setup@v2
|
||||
# - uses: actions/setup-node@v3
|
||||
# with:
|
||||
# node-version: 18.x
|
||||
# cache: pnpm
|
||||
|
||||
# - name: Install
|
||||
# run: pnpm install
|
||||
|
||||
# - run: pnpm test
|
||||
|
||||
# test-e2e:
|
||||
# runs-on: ubuntu-latest
|
||||
# steps:
|
||||
# - uses: actions/checkout@v3
|
||||
# - uses: actions/cache@v3
|
||||
# with:
|
||||
# path: |
|
||||
# ~/.cache
|
||||
# key: cypress-cache-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
|
||||
# - uses: pnpm/action-setup@v2
|
||||
|
||||
# - name: Use Node.js ${{ matrix.node-version }}
|
||||
# uses: actions/setup-node@v3
|
||||
# with:
|
||||
# node-version: ${{ matrix.node-version }}
|
||||
# registry-url: https://registry.npmjs.org/
|
||||
# cache: pnpm
|
||||
|
||||
# - run: pnpm install
|
||||
|
||||
# - name: Cypress PNPM Patch
|
||||
# run: cp pnpm-lock.yaml package-lock.json
|
||||
|
||||
# - name: Cypress
|
||||
# uses: cypress-io/github-action@v4
|
||||
# with:
|
||||
# install-command: echo
|
||||
# build: pnpm run build
|
||||
# start: npx vite --port 3333
|
10
.gitignore
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
.DS_Store
|
||||
.vite-ssg-dist
|
||||
.vite-ssg-temp
|
||||
*.local
|
||||
dist
|
||||
dist-ssr
|
||||
node_modules
|
||||
.idea/
|
||||
*.log
|
||||
cypress/downloads
|
3
.gitmodules
vendored
@ -1,3 +0,0 @@
|
||||
[submodule "19yuke2-frontend"]
|
||||
path = 19yuke2-frontend
|
||||
url = https://git.thehrz.net/19yuke2-project/19yuke2-frontend
|
14
.markdownlintrc
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"line-length": false,
|
||||
"blanks-around-headings": true,
|
||||
"single-title": {
|
||||
"front_matter_title": ""
|
||||
},
|
||||
"no-trailing-punctuation": false,
|
||||
"ol-prefix": false,
|
||||
"no-inline-html": false,
|
||||
"no-emphasis-as-heading": false,
|
||||
"no-bare-urls": false,
|
||||
"emphasis-style": false,
|
||||
"link-fragments": false
|
||||
}
|
13
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"i18n-ally.sourceLanguage": "zh-CN",
|
||||
"i18n-ally.keystyle": "nested",
|
||||
"i18n-ally.localesPaths": "locales",
|
||||
"i18n-ally.sortKeys": true,
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.eslint": true
|
||||
},
|
||||
"files.associations": {
|
||||
"*.css": "postcss"
|
||||
},
|
||||
"editor.formatOnSave": false
|
||||
}
|
@ -1 +0,0 @@
|
||||
Subproject commit 8c2616b530636b0474950b2e17fb300d0ed36d04
|
19
Dockerfile
Normal file
@ -0,0 +1,19 @@
|
||||
FROM node:18-alpine as build-stage
|
||||
|
||||
WORKDIR /app
|
||||
RUN corepack enable
|
||||
|
||||
COPY .npmrc package.json pnpm-lock.yaml ./
|
||||
RUN --mount=type=cache,id=pnpm-store,target=/root/.pnpm-store \
|
||||
pnpm install --frozen-lockfile
|
||||
|
||||
COPY . .
|
||||
RUN pnpm build
|
||||
|
||||
FROM nginx:stable-alpine as production-stage
|
||||
|
||||
COPY --from=build-stage /app/nginx/conf.d /etc/nginx/conf.d
|
||||
COPY --from=build-stage /app/dist /usr/share/nginx/html/
|
||||
EXPOSE 80
|
||||
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
12
README.md
@ -1,11 +1,3 @@
|
||||
# www.19yuke2.cn
|
||||
# 19yuke2-frontend
|
||||
|
||||
合肥市南园学校19预科2班纪念站项目
|
||||
|
||||
## 使用
|
||||
|
||||
### 克隆
|
||||
|
||||
```bash
|
||||
git clone --recurse-submodules https://git.thehrz.net/19yuke2-project/www.19yuke2.cn
|
||||
```
|
||||
合肥市南园学校19预科2班纪念站项目 (前端)
|
||||
|
10
cypress.config.ts
Normal file
@ -0,0 +1,10 @@
|
||||
import { defineConfig } from 'cypress'
|
||||
|
||||
export default defineConfig({
|
||||
e2e: {
|
||||
baseUrl: 'http://localhost:3333',
|
||||
chromeWebSecurity: false,
|
||||
specPattern: 'cypress/e2e/**/*.spec.*',
|
||||
supportFile: false,
|
||||
},
|
||||
})
|
@ -1,20 +0,0 @@
|
||||
version: "3.8"
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
name: traefik
|
||||
external: true
|
||||
|
||||
services:
|
||||
frontend:
|
||||
build: ./19yuke2-frontend
|
||||
container_name: 19yuke2-frontend
|
||||
restart: always
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.19yuke2-frontend.rule=HostRegexp(`^(www\.)?19yuke2\.cn$`)
|
||||
- traefik.http.routers.19yuke2-frontend.entrypoints=web,websecure
|
||||
- traefik.http.routers.19yuke2-frontend.tls.certresolver=letsencrypt
|
||||
- traefik.http.services.19yuke2-frontend.loadbalancer.server.port=80
|
||||
networks:
|
||||
- traefik
|
12
index.html
Normal file
@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
</head>
|
||||
|
||||
<body class="font-sans">
|
||||
<div id="app"></div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
</body>
|
||||
</html>
|
7
locales/en.yml
Normal file
@ -0,0 +1,7 @@
|
||||
button:
|
||||
about: About
|
||||
back: Back
|
||||
home: Home
|
||||
toggle_dark: Toggle dark mode
|
||||
toggle_langs: Change languages
|
||||
not-found: Not found
|
7
locales/zh-CN.yml
Normal file
@ -0,0 +1,7 @@
|
||||
button:
|
||||
about: 关于
|
||||
back: 返回
|
||||
home: 首页
|
||||
toggle_dark: 切换深色模式
|
||||
toggle_langs: 切换语言
|
||||
not-found: 未找到页面
|
6
nginx/conf.d/default.conf
Normal file
@ -0,0 +1,6 @@
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
|
||||
return 444;
|
||||
}
|
9
nginx/conf.d/root.conf
Normal file
@ -0,0 +1,9 @@
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name 19yuke2.cn;
|
||||
|
||||
location / {
|
||||
return 308 https://www.19yuke2.cn$request_uri;
|
||||
}
|
||||
}
|
19
nginx/conf.d/www.conf
Normal file
@ -0,0 +1,19 @@
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name www.19yuke2.cn;
|
||||
|
||||
gzip on;
|
||||
gzip_min_length 1k;
|
||||
gzip_buffers 4 16k;
|
||||
gzip_http_version 1.1;
|
||||
gzip_comp_level 9;
|
||||
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/javascript application/json;
|
||||
gzip_disable "MSIE [1-6]\.";
|
||||
gzip_vary on;
|
||||
|
||||
location / {
|
||||
root /usr/share/nginx/html;
|
||||
try_files $uri $uri.html /index.html;
|
||||
}
|
||||
}
|
75
package.json
Normal file
@ -0,0 +1,75 @@
|
||||
{
|
||||
"type": "module",
|
||||
"version": "0.0.3",
|
||||
"private": true,
|
||||
"packageManager": "pnpm@8.6.11",
|
||||
"scripts": {
|
||||
"build": "vite-ssg build",
|
||||
"dev": "vite --port 3333 --host",
|
||||
"lint": "eslint .",
|
||||
"preview": "vite preview",
|
||||
"preview-https": "serve dist",
|
||||
"test": "vitest",
|
||||
"test:e2e": "cypress open",
|
||||
"test:unit": "vitest",
|
||||
"typecheck": "vue-tsc --noEmit",
|
||||
"up": "taze major -I"
|
||||
},
|
||||
"dependencies": {
|
||||
"@unocss/preset-typography": "^0.54.1",
|
||||
"@unocss/reset": "^0.54.1",
|
||||
"@vueuse/core": "^10.3.0",
|
||||
"@vueuse/head": "^1.1.26",
|
||||
"nprogress": "^0.2.0",
|
||||
"rollup": "^3.27.0",
|
||||
"vite-plugin-vuetify": "^1.0.2",
|
||||
"vue": "^3.3.4",
|
||||
"vue-demi": "^0.14.5",
|
||||
"vue-i18n": "9.3.0-beta.14-77e850b",
|
||||
"vue-router": "^4.2.4",
|
||||
"vuetify": "^3.3.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@antfu/eslint-config": "^0.40.0",
|
||||
"@iconify-json/carbon": "^1.1.18",
|
||||
"@iconify-json/simple-icons": "^1.1.63",
|
||||
"@intlify/unplugin-vue-i18n": "^0.12.2",
|
||||
"@mdi/font": "^7.2.96",
|
||||
"@types/fs-extra": "^11.0.1",
|
||||
"@types/markdown-it-footnote": "^3.0.0",
|
||||
"@types/markdown-it-link-attributes": "^3.0.1",
|
||||
"@types/nprogress": "^0.2.0",
|
||||
"@vitejs/plugin-vue": "^4.2.3",
|
||||
"@vue-macros/volar": "^0.13.1",
|
||||
"@vue/test-utils": "^2.4.1",
|
||||
"critters": "^0.0.16",
|
||||
"cross-env": "^7.0.3",
|
||||
"cypress": "^12.17.3",
|
||||
"eslint": "^8.46.0",
|
||||
"eslint-plugin-cypress": "^2.13.3",
|
||||
"fs-extra": "^11.1.1",
|
||||
"https-localhost": "^4.7.1",
|
||||
"markdown-it-footnote": "^3.0.3",
|
||||
"markdown-it-link-attributes": "^4.0.1",
|
||||
"markdown-it-shiki": "^0.9.0",
|
||||
"pnpm": "^8.6.11",
|
||||
"shiki": "^0.14.3",
|
||||
"taze": "^0.11.2",
|
||||
"typescript": "^5.1.6",
|
||||
"unocss": "^0.54.1",
|
||||
"unplugin-auto-import": "^0.16.6",
|
||||
"unplugin-vue-components": "^0.25.1",
|
||||
"unplugin-vue-macros": "^2.4.2",
|
||||
"vite": "^4.4.8",
|
||||
"vite-plugin-inspect": "^0.7.35",
|
||||
"vite-plugin-pages": "^0.31.0",
|
||||
"vite-plugin-vue-component-preview": "^1.1.6",
|
||||
"vite-plugin-vue-inspector": "^3.5.0",
|
||||
"vite-plugin-vue-layouts": "^0.8.0",
|
||||
"vite-plugin-vue-markdown": "^0.23.7",
|
||||
"vite-ssg": "^0.22.2",
|
||||
"vite-ssg-sitemap": "^0.5.1",
|
||||
"vitest": "^0.34.1",
|
||||
"vue-tsc": "^1.8.8"
|
||||
}
|
||||
}
|
8586
pnpm-lock.yaml
Normal file
21
public/LICENSE.txt
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023 Thehrz
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
1
public/baidu_verify_codeva-ozsg53ko4q.html
Normal file
@ -0,0 +1 @@
|
||||
2dff7cdb49c12fb2a8d1f34997c50fc2
|
BIN
public/favicon.ico
Normal file
After Width: | Height: | Size: 66 KiB |
16
public/images/about/NanYuanAll.svg
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/images/about/aliyun.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
6
public/images/nav/NanYuan.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<svg width="283" height="283" fill="#18a86b" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M96.035 7.65c11.183-3.601 22.747-5.988 34.458-7.002.053 15.07 0 30.128.032 45.187-7.36-.19-14.795.57-22.092-.496-6.262-.961-11.69-6.072-12.155-12.535-.623-8.364-.158-16.77-.243-25.154zM150.399.595c11.986.676 23.824 3.02 35.24 6.685-.149 8.163.284 16.347-.296 24.5-.328 6.62-5.935 12.049-12.282 13.263-7.466 1.363-15.09.655-22.64.782.02-15.08.041-30.15-.022-45.23z" />
|
||||
<path
|
||||
d="M205.998 15.887c16.03 8.268 30.604 19.557 42.262 33.349-4.836 17.656-8.374 35.672-10.454 53.867-29.115-4.678-58.187-9.504-87.29-14.161.052-6.875.02-13.739.01-20.614 12.46.476 25.217-.549 36.886-5.259 7.741-3.073 13.116-10.148 16.22-17.646 3.58-9.44 2.197-19.684 2.366-29.536zM34.754 48.803c11.564-12.937 25.26-23.961 40.583-32.146.18 9.262-.792 18.808 2.207 27.742 3.052 8.459 9.262 16.094 17.72 19.536 11.067 4.953 23.497 4.5 35.345 4.362.18 6.885.148 13.77.042 20.656-28.354 5.691-56.729 11.278-85.051 17.128-2.26-19.314-5.861-38.47-10.846-57.278zM.138 140.465C.085 115.3 7.351 90.346 20.202 68.772c2.915 13.506 5.502 27.13 6.495 40.92 3.4 32.843-2.84 65.706-10.507 97.524C5.64 186.666-.295 163.613.138 140.466zM255.145 128.786c.36-20.202 3.084-40.34 7.72-59.993 12.324 21.015 19.536 45.092 19.97 69.497.643 23.792-4.975 47.732-16.126 68.757-6.188-25.65-11.226-51.798-11.564-78.261zM129.015 106.24c13.527-2.45 27.53-1.753 40.825 1.636 6.178 1.616 13.655 1.616 18.143 6.822 3.22 4.9-.264 10.592-2.588 15.07-4.688 7.973-7.761 17.93-16.495 22.482-8.965 4.13-19.135 2.672-28.702 2.978-9.198 0-20.075.328-26.77-7.149-5.544-6.526-8.1-14.932-12.398-22.23-1.827-3.051-3.453-6.99-1.341-10.338 2.661-3.79 7.603-4.752 11.838-5.765 5.85-1.067 11.648-2.387 17.488-3.506zM211.036 125.68c8.057-3.58 17.023-1.16 25.407-.4-.549 35.112 7.657 69.57 16.136 103.394-24.214 31.227-62.136 51.143-101.536 53.73-.042-14.076.042-28.153-.032-42.23 24.901.148 49.802-.18 74.703-.295 4.119-.085 8.132-2.577 9.821-6.358 1.658-4.034 1.584-8.88-.422-12.777-2.25-4.045-7.086-5.65-11.48-5.682-9.873.032-19.757-.243-29.62.444-14.373-.138-28.756.274-43.128-.233.063-11.225.01-22.461.031-33.697 24.521-.317 49.052.063 73.573-.18 4.055-.042 8.459-1.489 10.582-5.185 3.706-6.114.264-15.418-7.213-16.347-9.145-1.109-18.46.159-27.636-.655-3.22-.073-6.59-2.523-6.262-6.019 1.267-5.491 4.71-10.127 7.265-15.07 2.725-4.487 4.636-10.158 9.81-12.44zM46.56 129.24c6.432-1.468 12.926-3.158 19.58-3.031 5.205.063 10.676 2.63 13.094 7.424a645.63 645.63 0 017.772 14.626c1.088 2.365 2.514 5.227 1.204 7.793-1.51 2.925-5.217 3.516-8.195 3.622-7.054.032-14.108-.074-21.173 0-4.013.042-8.427 1.49-10.634 5.058-2.133 3.802-2.123 8.765.042 12.556 2.07 3.126 5.956 4.51 9.578 4.584 24.384.147 48.767-.127 73.14.137-.084 11.088-.063 22.166 0 33.254-12.756.634-25.534-.106-38.291.412-11.278.084-22.557.01-33.824.02-5.016-.253-10.339 3-11.458 8.08-1.288 4.825-.824 10.982 3.358 14.298 1.89 1.721 4.54 2.122 7.001 2.28 24.447.307 48.873-.411 73.31-.136.01 14.024-.043 28.047-.011 42.082-30.498-2.133-60.193-14.7-83.088-34.944-6.473-5.533-11.986-12.007-17.625-18.353 8.09-32.695 16.147-65.864 16.22-99.762z" />
|
||||
</svg>
|
After Width: | Height: | Size: 3.1 KiB |
BIN
public/images/posts/2023-hfsnyxx-zk/2023-hfsnyxx-zk.png
Normal file
After Width: | Height: | Size: 117 KiB |
BIN
public/images/posts/ceng-fan-di-tu/ceng-fan-di-tu.jpg
Normal file
After Width: | Height: | Size: 5.2 MiB |
BIN
public/images/posts/contribute/contribute_0.png
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
public/images/posts/contribute/contribute_1.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
public/images/posts/contribute/contribute_10.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
public/images/posts/contribute/contribute_11.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
public/images/posts/contribute/contribute_12.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
public/images/posts/contribute/contribute_13.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
public/images/posts/contribute/contribute_14.png
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
public/images/posts/contribute/contribute_15.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
public/images/posts/contribute/contribute_16.png
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
public/images/posts/contribute/contribute_17.png
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
public/images/posts/contribute/contribute_18.png
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
public/images/posts/contribute/contribute_19.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
public/images/posts/contribute/contribute_2.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
public/images/posts/contribute/contribute_20.png
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
public/images/posts/contribute/contribute_21.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
public/images/posts/contribute/contribute_22.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
public/images/posts/contribute/contribute_23.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
public/images/posts/contribute/contribute_3.png
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
public/images/posts/contribute/contribute_4.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
public/images/posts/contribute/contribute_5.png
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
public/images/posts/contribute/contribute_6.png
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
public/images/posts/contribute/contribute_7.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
public/images/posts/contribute/contribute_8.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
public/images/posts/contribute/contribute_9.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
public/images/posts/introduction/graduation.png
Normal file
After Width: | Height: | Size: 29 MiB |
BIN
public/images/students/csy.webp
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
public/images/students/lqx.webp
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
public/images/students/ymy.webp
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
public/images/students/zyy.webp
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
public/images/teachers/csy.jpg
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
public/images/teachers/cx.jpg
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
public/images/teachers/cy.jpg
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
public/images/teachers/cyy.png
Normal file
After Width: | Height: | Size: 648 KiB |
BIN
public/images/teachers/djf.jpg
Normal file
After Width: | Height: | Size: 1.0 MiB |
BIN
public/images/teachers/haf.jpg
Normal file
After Width: | Height: | Size: 142 KiB |
BIN
public/images/teachers/jwd.png
Normal file
After Width: | Height: | Size: 5.3 MiB |
BIN
public/images/teachers/lyb.jpg
Normal file
After Width: | Height: | Size: 95 KiB |
BIN
public/images/teachers/lzx.png
Normal file
After Width: | Height: | Size: 895 KiB |
BIN
public/images/teachers/py.jpg
Normal file
After Width: | Height: | Size: 93 KiB |
BIN
public/images/teachers/qjj.jpg
Normal file
After Width: | Height: | Size: 99 KiB |
BIN
public/images/teachers/wjr.jpg
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
public/images/teachers/wxf.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
public/images/teachers/xyy.jpg
Normal file
After Width: | Height: | Size: 91 KiB |
BIN
public/images/teachers/yrx.jpg
Normal file
After Width: | Height: | Size: 179 KiB |
BIN
public/images/teachers/yy.png
Normal file
After Width: | Height: | Size: 983 KiB |
BIN
public/images/teachers/zln.jpg
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
public/images/teachers/zw.jpg
Normal file
After Width: | Height: | Size: 60 KiB |
22
src/App.vue
Normal file
@ -0,0 +1,22 @@
|
||||
<script setup lang="ts">
|
||||
const { isDark } = useDarkMode()
|
||||
|
||||
useHead({
|
||||
title: '合肥市南园学校19预科2班',
|
||||
meta: [
|
||||
{ name: 'description', content: '合肥市南园学校19预科2班纪念项目' },
|
||||
{
|
||||
name: 'theme-color',
|
||||
content: computed(() => isDark() ? '#00aba9' : '#ffffff'),
|
||||
},
|
||||
],
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<router-view v-slot="{ Component, route }">
|
||||
<transition name="fade" mode="out-in">
|
||||
<component :is="Component" :key="route.path" />
|
||||
</transition>
|
||||
</router-view>
|
||||
</template>
|
142
src/assets/jsons/events.json
Normal file
@ -0,0 +1,142 @@
|
||||
[
|
||||
{
|
||||
"time": "2019/08/31",
|
||||
"name": "19预科(2)班成立",
|
||||
"description": "或熟悉或陌生的面孔聚集在新的教室之中,六年级的孩子们正欢快的聊天。阳光同刚刚过去的仲夏的每一天一样明媚而刺眼,命运的丝线于此悄无声息地交织。"
|
||||
},
|
||||
{
|
||||
"time": "2019/10/01",
|
||||
"name": "2019年秋季运动会",
|
||||
"description": "刚刚熟络的同学需要磨合的机会,运动会来的恰是时候。"
|
||||
},
|
||||
{
|
||||
"time": "2019/12/31",
|
||||
"name": "2020年元旦联欢会",
|
||||
"description": "欢声笑语飘进了学校的每一个角落,孩子们殊不知,一场几乎伴随他们整个初中历程的风暴正在悄然酝酿。"
|
||||
},
|
||||
{
|
||||
"time": "2020/02/01",
|
||||
"name": "2020年寒假开始",
|
||||
"description": "大家都沉浸在放假的喜悦之中,没有人多愁善感地想念同学,或是因为少年的懵懂,亦或是他们知道还会相聚。"
|
||||
},
|
||||
{
|
||||
"time": "2020-03-2020-04",
|
||||
"name": "第一次线上教学",
|
||||
"description": "它来的那么突然,以至于大家都不以为意,乃至大家因不用去学校而欢呼雀跃。"
|
||||
},
|
||||
{
|
||||
"time": "2020/06/01",
|
||||
"name": "六年级结束、2020年暑假开始",
|
||||
"description": "小学毕业的日子,有的伙伴于此与大家分别,也许有淡淡的愁绪,但终究只是蜜罐中混了一丝的苦。"
|
||||
},
|
||||
{
|
||||
"time": "2020/09/01",
|
||||
"name": "七年级开始",
|
||||
"description": "怀着对初中的憧憬,大家再度相遇,有的人离开了,但更多的人选择留下。"
|
||||
},
|
||||
{
|
||||
"time": "2020/10/01",
|
||||
"name": "2020年秋季运动会",
|
||||
"description": "场上的运动健儿在场上拼搏,场下的其他同学在场下奋笔疾书。"
|
||||
},
|
||||
{
|
||||
"time": "2020/12/31",
|
||||
"name": "2020年元旦联欢会",
|
||||
"description": "欢乐依旧。"
|
||||
},
|
||||
{
|
||||
"time": "2021/02/01",
|
||||
"name": "2021年寒假开始",
|
||||
"description": "初中生涯的第一个学期结束,有新奇,但更多的是平淡。"
|
||||
},
|
||||
{
|
||||
"time": "2021/03/01",
|
||||
"name": "寒假结束",
|
||||
"description": "少年们于此开始步入青春,但孩童的稚气尚有留存。"
|
||||
},
|
||||
{
|
||||
"time": "2021/05/01",
|
||||
"name": "春游",
|
||||
"description": "现今回想起来,这大概是整个初中最有趣的事了,鸟儿们享受着出笼的乐趣,却未能预料到这可能是唯一一次。"
|
||||
},
|
||||
{
|
||||
"time": "2021/06/01",
|
||||
"name": "七年级结束、2021年暑假开始",
|
||||
"description": "青春是无惧盛夏与阳光的,这个夏天,欢乐必将是主旋律。"
|
||||
},
|
||||
{
|
||||
"time": "2021/09/01",
|
||||
"name": "暑假结束、八年级开始",
|
||||
"description": "不少同学在过去的夏天蜕变。在这一学年,有新的科目到来,也有旧的科目将演奏它们的终幕曲。"
|
||||
},
|
||||
{
|
||||
"time": "2021/10/01",
|
||||
"name": "2020年秋季运动会",
|
||||
"description": "这是彰显活力的最好舞台,雏凤发出了清脆的啼鸣。"
|
||||
},
|
||||
{
|
||||
"time": "2021/12/31",
|
||||
"name": "2021年元旦联欢会",
|
||||
"description": "蜕变是青春的独有专利,多少人在此时赢得了同学们的惊讶、改观与赞叹。"
|
||||
},
|
||||
{
|
||||
"time": "2022/02/01",
|
||||
"name": "寒假开始、2022-03寒假结束",
|
||||
"description": "似是一场不值一提的假期,在漫长的初中里好像毫无存在感般。"
|
||||
},
|
||||
{
|
||||
"time": "2022/3/21",
|
||||
"name": "戴老师接替晏老师班主任职务",
|
||||
"description": "对一个班级来说是一次巨大的变更,我们将迎接全新的班级管理方式。"
|
||||
},
|
||||
{
|
||||
"time": "2022/5/6",
|
||||
"name": "晏老师开始休产假",
|
||||
"description": "期待新生命的诞生,可晏老师的突然离开让大家都有所伤感。"
|
||||
},
|
||||
{
|
||||
"time": "2022/06/01",
|
||||
"name": "军训",
|
||||
"description": "一次劳累又不乏乐趣的活动,桀骜不驯的青年们在两周里被训练得服服帖帖。这14天很短,但好像又很长,在我们的记忆里留下浓墨重彩的一笔。"
|
||||
},
|
||||
{
|
||||
"time": "2022/06/01",
|
||||
"name": "音乐考试",
|
||||
"description": "与其说是考试,倒不如说是一场惊艳的表演。"
|
||||
},
|
||||
{
|
||||
"time": "2022/06/12",
|
||||
"name": "15预科学长高考凯旋",
|
||||
"description": "桐花万里丹山路,雏凤清于老凤声。长江后浪推前浪,一代新人换旧人。"
|
||||
},
|
||||
{
|
||||
"time": "2022/06/17",
|
||||
"name": "地理、生物会考",
|
||||
"description": "第一次真正意义上的“大考”,也是初中第一次与老师的“分别”。"
|
||||
},
|
||||
{
|
||||
"time": "2022/06/01",
|
||||
"name": "八年级结束、2022年暑假开始",
|
||||
"description": "随着九年级学长的离开,同学们第一次感受到了“中考”的压力,这个夏天,有人正最后地放松自己,有人正为九年级进行着紧锣密鼓的准备。"
|
||||
},
|
||||
{
|
||||
"time": "2022/09/01",
|
||||
"name": "九年级开始",
|
||||
"description": "大家正式开始准备“作战”,学习的氛围席卷了全班。"
|
||||
},
|
||||
{
|
||||
"time": "2022/10/21",
|
||||
"name": "晏老师回归班级",
|
||||
"description": "这无疑是疯狂的一天,思君朝朝暮暮,终得再相见。"
|
||||
},
|
||||
{
|
||||
"time": "2022/10/20-2022/11/06",
|
||||
"name": "第二次线上教学",
|
||||
"description": "疫情突然反弹,我们不得不重拾网课,大家有欢喜,也有担忧。"
|
||||
},
|
||||
{
|
||||
"time": "2022/11/25",
|
||||
"name": "第一次体育模拟考试",
|
||||
"description": "同学们踌躇满志地踏上操场,这次模考将激励每个人前行。"
|
||||
}
|
||||
]
|
107
src/assets/jsons/teachers.json
Normal file
@ -0,0 +1,107 @@
|
||||
{
|
||||
"语文": [
|
||||
{
|
||||
"name": "金卫东",
|
||||
"description": "包河区第四、第五、第六届中学语文学科带头人;合肥市优秀班主任、合肥市“统编教材优质课评选”一等奖;先后获得合肥市第一届和第二届“我读经典”语文教师征文一等奖;主持过一项市级课题,被评为年度优秀课题,一项国家级课题的主要成员。",
|
||||
"image": "/images/teachers/jwd.png"
|
||||
}
|
||||
],
|
||||
"数学": [
|
||||
{
|
||||
"name": "晏彦",
|
||||
"description": "合肥市南园学校数学教师,从教以来,始终坚持“以学生为本”的教育理念,一切从学生出发,因材施教,是学生们的良师益友。曾荣获包河区优秀教师等荣誉称号,全国示范校多学科新课程探索研讨会论文评比一等奖,包河区第二届微课评选一等奖,包河区智慧课堂评比一等奖,所带班级多次荣获包河区“先进班集体”称号。",
|
||||
"image": "/images/teachers/yy.png"
|
||||
}
|
||||
],
|
||||
"英语": [
|
||||
{
|
||||
"name": "戴俊芳",
|
||||
"description": "合肥市南园学校英语教师,自参加工作以来工作认真尽责,关爱学生,积极参加区级课堂教学评比活动,并多次获得一等奖,课例获“部优”称号。",
|
||||
"image": "/images/teachers/djf.jpg"
|
||||
}
|
||||
],
|
||||
"道德与法治": [
|
||||
{
|
||||
"name": "李志欣",
|
||||
"description": "合肥市南园学校道德与法治教师,工作以来获得2016年安徽省微课大赛省一等奖,2018年一师一优课部优,2019年包河区课堂教学比赛一等奖,2022年在中学政治教学参考发表文章。",
|
||||
"image": "/images/teachers/lzx.png"
|
||||
}
|
||||
],
|
||||
"历史": [
|
||||
{
|
||||
"name": "张琳娜",
|
||||
"description": "合肥市南园学校历史教师,中共党员。连续六年承担九年级毕业班历史教学工作,所带班级中考成绩优异。潜心教学,勤恳敬业,初高中历史教学经验丰富。多次在市、区级课堂教学评比中获一、二等奖,先后荣获 “包河区优秀共产党员”“包河区优秀教师”称号,所带班级被评为包河区先进班集体。",
|
||||
"image": "/images/teachers/zln.jpg"
|
||||
}
|
||||
],
|
||||
"物理": [
|
||||
{
|
||||
"name": "陈媛媛",
|
||||
"description": "中学一级物理教师,1998年毕业至南园工作至今25年。",
|
||||
"image": "/images/teachers/cyy.png"
|
||||
}
|
||||
],
|
||||
"化学": [
|
||||
{
|
||||
"name": "潘英",
|
||||
"description": "合肥市南园学校化学老师,从教以来一直担任九年级化学教学工作,有高度的事业心和责任心,关心爱护每一位学生,历届学生的中考成绩优异。曾多次授予包河区“优秀教师”称号。",
|
||||
"image": "/images/teachers/py.jpg"
|
||||
}
|
||||
],
|
||||
"体育": [
|
||||
{
|
||||
"name": "刘玉宝",
|
||||
"description": "中共党员,一级教师,1998年毕业于安徽师范大学体育学院,在合肥市南园学校工作至今。曾获合肥市校园绿化工作先进个人,包河区青年教师课堂教学评比一等奖第一名,包河区青年教师基本功大赛一等奖,包河区中小学中层管理干部课堂教学评比特等奖,包河区中学体育优质录像课评比一等奖, 2020年度包河区“优秀志愿者”。合肥市中学体育骨干教师高级研修班成员。",
|
||||
"image": "/images/teachers/lyb.jpg"
|
||||
}
|
||||
],
|
||||
"音乐": [
|
||||
{
|
||||
"name": "张玮",
|
||||
"description": "指导学生参加各级各类演出、比赛, 所带社团曾获得安徽省艺术展演二等奖.多次获包河区艺术展演特等奖.在各届校艺术节中排练大合唱, 训练主持人.热爱音乐, 更热爱每一段和孩子们在一起度过的音乐时光!",
|
||||
"image": "/images/teachers/zw.jpg"
|
||||
}
|
||||
],
|
||||
"美术": [
|
||||
{
|
||||
"name": "何爱芳",
|
||||
"description": "从教多年, 回望来路, 和大家一起, 守护一园一园青青小苗, 长成花, 长成树. 作为一位艺术教师, 教学中关爱每个孩子, 引导孩子欣赏美, 学习美, 发现美, 学会对美的抒发和表达, 从浅表到内里, 发现自己, 接纳自己, 提升自己. 引导孩子了解艺术和自我及生活的关联, 学以致用, 培养全面发展的人. 用艺术作品和艺术家背后的故事, 告诉他们坚持的意义和努力的价值, 养育人文精神和人文情怀. 同时发现有专业特长的孩子, 给予针对性指导, 多年来, 辅导学生在教育主管部门主办和其他项目比赛中获得省, 市, 区各级比赛奖项百人次. 在完成教学工作之余, 积极发现教育教学中存在的问题并进行研究, 探寻解决方法, 基于此, 用了很多时间探究, 撰写论文, 进行课题研究, 多篇论文获得市级一、二等奖, 2019年在《教育》发表论文, 2020年, 主持市、区级课题均已结题, 市级课题获优. 提高专业能力和素养, 积极进行专业创作, 在市、区级基本功比赛中获一, 二等奖, 两次在教育部门和省美协举办的展览中获优, 并作为教师代表发言. 在市、区级教师美术作品展览中多次获一, 特等奖, 绘画作品入选安徽省第六届美术大赛, 在美术报发表作品.",
|
||||
"image": "/images/teachers/haf.jpg"
|
||||
}
|
||||
],
|
||||
"信息技术": [
|
||||
{
|
||||
"name": "邬剑荣",
|
||||
"description": "从教三十年, 担任信息技术教学工作, 一直用爱心和耐心去关爱学生, 努力和孩子们做朋友. 曾获得包河区课堂教学比赛一等奖, 辅导学生在省市区各级竞赛中获奖.",
|
||||
"image": "/images/teachers/wjr.jpg"
|
||||
}
|
||||
],
|
||||
"地理": [
|
||||
{
|
||||
"name": "解园园",
|
||||
"description": "从事地理教育16年, 一直坚守在教学第一线. 钻研教材, 了解学生, 备好每一节课. 组织好课堂教学, 关注全体学生, 注意信息反馈, 激发学生的学习兴趣, 创造良好的课堂教学氛围. “学高为师、身正为范”. 所以要求学生做到的自己必须先做到, 用自己的言行为学生作出表率, 用自己的人格魅力去感染学生、影响学生. 积极参与各项教学评比和活动, 不断提高自身的教育教学水平. 2014年获得中央电教馆主办的“第六届SMART杯互动教学大奖赛”全国三等奖;2017年报送的课例《辽阔的海洋》在“一师一优课”中获得部级优课;包河区解题能力比赛一等奖, 包河区优质课评比二等奖等.",
|
||||
"image": "/images/teachers/xyy.jpg"
|
||||
}
|
||||
],
|
||||
"生物": [
|
||||
{
|
||||
"name": "杨仁新",
|
||||
"description": "杨仁新老师1983年参加工作, 从教近四十年, 爱岗敬业、积极上进, 认真教学、潜心教研, 关爱学生、教书育人, 默默奉献、师生称赞, 多次获得“先进个人”“优秀教育工作者”“优秀教师”等光荣称号, “让每一位学生在我的课堂上都有所收获”是他事业追求的目标, “学高为师, 德高为范” 是他自律的信条.",
|
||||
"image": "/images/teachers/yrx.jpg"
|
||||
}
|
||||
],
|
||||
"综合": [
|
||||
{
|
||||
"name": "王晓芳",
|
||||
"description": "她从事地理教育14年, 一直坚守在教学第一线, 钻研教材, 了解学生备好每一节课, 组织好课堂教学, 关注全体学生, 注意信息反馈, 激发学生学习兴趣, 创造良好的课堂教学氛, “学高为师、身正为范”, 要求学生做到的自己必须先做到, 用自己的言行为学生作出表率, 用自己的人格魅力去感染学生、影响学生, 积极参与各项教学评比和活动, 不断提高自身的教育教学水平, 多次参加包河区地理优质课比赛, 获得区级一等奖, 2016年参加编写亳州市地方教材《环境教育读本》,",
|
||||
"image": "/images/teachers/wxf.jpg"
|
||||
}
|
||||
],
|
||||
"科学": [
|
||||
{
|
||||
"name": "蔡沂",
|
||||
"description": "蔡沂, 中共党员, 合肥市南园学校理化生教研组组长, 合肥市优秀教师, 合肥市第三届、四届骨干教师、包河区学科带头人. 在教育教学中, 基于新课标理念及智慧教室等信息化手段, 参与包河区智慧课堂比赛获一等奖;基于“双减”政策, 带领教研组成员及包河区其他学校的教师进行作业设计, 获合肥市作业设计二等奖及合肥市生物单元教学设计获团体一等奖. 在教科研方面, 参与合肥市教育教学成果评比获合肥市二等奖. 在指导学生参与的各级各类比赛中, 多名学生获市级区级一、二、三等奖.",
|
||||
"image": "/images/teachers/cy.jpg"
|
||||
}
|
||||
]
|
||||
}
|
884
src/auto-imports.d.ts
vendored
Normal file
@ -0,0 +1,884 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
export {}
|
||||
declare global {
|
||||
const $: typeof import('vue/macros')['$']
|
||||
const $$: typeof import('vue/macros')['$$']
|
||||
const $computed: typeof import('vue/macros')['$computed']
|
||||
const $customRef: typeof import('vue/macros')['$customRef']
|
||||
const $ref: typeof import('vue/macros')['$ref']
|
||||
const $shallowRef: typeof import('vue/macros')['$shallowRef']
|
||||
const $toRef: typeof import('vue/macros')['$toRef']
|
||||
const EffectScope: typeof import('vue')['EffectScope']
|
||||
const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
|
||||
const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
|
||||
const computed: typeof import('vue')['computed']
|
||||
const computedAsync: typeof import('@vueuse/core')['computedAsync']
|
||||
const computedEager: typeof import('@vueuse/core')['computedEager']
|
||||
const computedInject: typeof import('@vueuse/core')['computedInject']
|
||||
const computedWithControl: typeof import('@vueuse/core')['computedWithControl']
|
||||
const controlledComputed: typeof import('@vueuse/core')['controlledComputed']
|
||||
const controlledRef: typeof import('@vueuse/core')['controlledRef']
|
||||
const createApp: typeof import('vue')['createApp']
|
||||
const createEventHook: typeof import('@vueuse/core')['createEventHook']
|
||||
const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
|
||||
const createInjectionState: typeof import('@vueuse/core')['createInjectionState']
|
||||
const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
|
||||
const createReusableTemplate: typeof import('@vueuse/core')['createReusableTemplate']
|
||||
const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
|
||||
const createTemplatePromise: typeof import('@vueuse/core')['createTemplatePromise']
|
||||
const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn']
|
||||
const customRef: typeof import('vue')['customRef']
|
||||
const debouncedRef: typeof import('@vueuse/core')['debouncedRef']
|
||||
const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
|
||||
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
|
||||
const defineComponent: typeof import('vue')['defineComponent']
|
||||
const eagerComputed: typeof import('@vueuse/core')['eagerComputed']
|
||||
const effectScope: typeof import('vue')['effectScope']
|
||||
const extendRef: typeof import('@vueuse/core')['extendRef']
|
||||
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
|
||||
const getCurrentScope: typeof import('vue')['getCurrentScope']
|
||||
const h: typeof import('vue')['h']
|
||||
const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
|
||||
const inject: typeof import('vue')['inject']
|
||||
const isDefined: typeof import('@vueuse/core')['isDefined']
|
||||
const isProxy: typeof import('vue')['isProxy']
|
||||
const isReactive: typeof import('vue')['isReactive']
|
||||
const isReadonly: typeof import('vue')['isReadonly']
|
||||
const isRef: typeof import('vue')['isRef']
|
||||
const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
|
||||
const markRaw: typeof import('vue')['markRaw']
|
||||
const nextTick: typeof import('vue')['nextTick']
|
||||
const onActivated: typeof import('vue')['onActivated']
|
||||
const onBeforeMount: typeof import('vue')['onBeforeMount']
|
||||
const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
|
||||
const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
|
||||
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
|
||||
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
|
||||
const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
|
||||
const onDeactivated: typeof import('vue')['onDeactivated']
|
||||
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
|
||||
const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
|
||||
const onLongPress: typeof import('@vueuse/core')['onLongPress']
|
||||
const onMounted: typeof import('vue')['onMounted']
|
||||
const onRenderTracked: typeof import('vue')['onRenderTracked']
|
||||
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
|
||||
const onScopeDispose: typeof import('vue')['onScopeDispose']
|
||||
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
|
||||
const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
|
||||
const onUnmounted: typeof import('vue')['onUnmounted']
|
||||
const onUpdated: typeof import('vue')['onUpdated']
|
||||
const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
|
||||
const provide: typeof import('vue')['provide']
|
||||
const reactify: typeof import('@vueuse/core')['reactify']
|
||||
const reactifyObject: typeof import('@vueuse/core')['reactifyObject']
|
||||
const reactive: typeof import('vue')['reactive']
|
||||
const reactiveComputed: typeof import('@vueuse/core')['reactiveComputed']
|
||||
const reactiveOmit: typeof import('@vueuse/core')['reactiveOmit']
|
||||
const reactivePick: typeof import('@vueuse/core')['reactivePick']
|
||||
const readonly: typeof import('vue')['readonly']
|
||||
const ref: typeof import('vue')['ref']
|
||||
const refAutoReset: typeof import('@vueuse/core')['refAutoReset']
|
||||
const refDebounced: typeof import('@vueuse/core')['refDebounced']
|
||||
const refDefault: typeof import('@vueuse/core')['refDefault']
|
||||
const refThrottled: typeof import('@vueuse/core')['refThrottled']
|
||||
const refWithControl: typeof import('@vueuse/core')['refWithControl']
|
||||
const resolveComponent: typeof import('vue')['resolveComponent']
|
||||
const resolveRef: typeof import('@vueuse/core')['resolveRef']
|
||||
const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
|
||||
const shallowReactive: typeof import('vue')['shallowReactive']
|
||||
const shallowReadonly: typeof import('vue')['shallowReadonly']
|
||||
const shallowRef: typeof import('vue')['shallowRef']
|
||||
const syncRef: typeof import('@vueuse/core')['syncRef']
|
||||
const syncRefs: typeof import('@vueuse/core')['syncRefs']
|
||||
const templateRef: typeof import('@vueuse/core')['templateRef']
|
||||
const throttledRef: typeof import('@vueuse/core')['throttledRef']
|
||||
const throttledWatch: typeof import('@vueuse/core')['throttledWatch']
|
||||
const toRaw: typeof import('vue')['toRaw']
|
||||
const toReactive: typeof import('@vueuse/core')['toReactive']
|
||||
const toRef: typeof import('vue')['toRef']
|
||||
const toRefs: typeof import('vue')['toRefs']
|
||||
const toValue: typeof import('vue')['toValue']
|
||||
const triggerRef: typeof import('vue')['triggerRef']
|
||||
const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount']
|
||||
const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
|
||||
const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted']
|
||||
const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose']
|
||||
const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted']
|
||||
const unref: typeof import('vue')['unref']
|
||||
const unrefElement: typeof import('@vueuse/core')['unrefElement']
|
||||
const until: typeof import('@vueuse/core')['until']
|
||||
const useActiveElement: typeof import('@vueuse/core')['useActiveElement']
|
||||
const useAnimate: typeof import('@vueuse/core')['useAnimate']
|
||||
const useArrayDifference: typeof import('@vueuse/core')['useArrayDifference']
|
||||
const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery']
|
||||
const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter']
|
||||
const useArrayFind: typeof import('@vueuse/core')['useArrayFind']
|
||||
const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex']
|
||||
const useArrayFindLast: typeof import('@vueuse/core')['useArrayFindLast']
|
||||
const useArrayIncludes: typeof import('@vueuse/core')['useArrayIncludes']
|
||||
const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin']
|
||||
const useArrayMap: typeof import('@vueuse/core')['useArrayMap']
|
||||
const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce']
|
||||
const useArraySome: typeof import('@vueuse/core')['useArraySome']
|
||||
const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique']
|
||||
const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue']
|
||||
const useAsyncState: typeof import('@vueuse/core')['useAsyncState']
|
||||
const useAttrs: typeof import('vue')['useAttrs']
|
||||
const useBase64: typeof import('@vueuse/core')['useBase64']
|
||||
const useBattery: typeof import('@vueuse/core')['useBattery']
|
||||
const useBluetooth: typeof import('@vueuse/core')['useBluetooth']
|
||||
const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints']
|
||||
const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel']
|
||||
const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation']
|
||||
const useCached: typeof import('@vueuse/core')['useCached']
|
||||
const useClipboard: typeof import('@vueuse/core')['useClipboard']
|
||||
const useCloned: typeof import('@vueuse/core')['useCloned']
|
||||
const useColorMode: typeof import('@vueuse/core')['useColorMode']
|
||||
const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
|
||||
const useCounter: typeof import('@vueuse/core')['useCounter']
|
||||
const useCssModule: typeof import('vue')['useCssModule']
|
||||
const useCssVar: typeof import('@vueuse/core')['useCssVar']
|
||||
const useCssVars: typeof import('vue')['useCssVars']
|
||||
const useCurrentElement: typeof import('@vueuse/core')['useCurrentElement']
|
||||
const useCycleList: typeof import('@vueuse/core')['useCycleList']
|
||||
const useDark: typeof import('@vueuse/core')['useDark']
|
||||
const useDarkMode: typeof import('./composables/useDarkMode')['default']
|
||||
const useDateFormat: typeof import('@vueuse/core')['useDateFormat']
|
||||
const useDebounce: typeof import('@vueuse/core')['useDebounce']
|
||||
const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn']
|
||||
const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory']
|
||||
const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion']
|
||||
const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation']
|
||||
const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio']
|
||||
const useDevicesList: typeof import('@vueuse/core')['useDevicesList']
|
||||
const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia']
|
||||
const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility']
|
||||
const useDraggable: typeof import('@vueuse/core')['useDraggable']
|
||||
const useDropZone: typeof import('@vueuse/core')['useDropZone']
|
||||
const useElementBounding: typeof import('@vueuse/core')['useElementBounding']
|
||||
const useElementByPoint: typeof import('@vueuse/core')['useElementByPoint']
|
||||
const useElementHover: typeof import('@vueuse/core')['useElementHover']
|
||||
const useElementSize: typeof import('@vueuse/core')['useElementSize']
|
||||
const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility']
|
||||
const useEventBus: typeof import('@vueuse/core')['useEventBus']
|
||||
const useEventListener: typeof import('@vueuse/core')['useEventListener']
|
||||
const useEventSource: typeof import('@vueuse/core')['useEventSource']
|
||||
const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper']
|
||||
const useFavicon: typeof import('@vueuse/core')['useFavicon']
|
||||
const useFetch: typeof import('@vueuse/core')['useFetch']
|
||||
const useFileDialog: typeof import('@vueuse/core')['useFileDialog']
|
||||
const useFileSystemAccess: typeof import('@vueuse/core')['useFileSystemAccess']
|
||||
const useFocus: typeof import('@vueuse/core')['useFocus']
|
||||
const useFocusWithin: typeof import('@vueuse/core')['useFocusWithin']
|
||||
const useFps: typeof import('@vueuse/core')['useFps']
|
||||
const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
|
||||
const useGamepad: typeof import('@vueuse/core')['useGamepad']
|
||||
const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
|
||||
const useHead: typeof import('@vueuse/head')['useHead']
|
||||
const useI18n: typeof import('vue-i18n')['useI18n']
|
||||
const useIdle: typeof import('@vueuse/core')['useIdle']
|
||||
const useImage: typeof import('@vueuse/core')['useImage']
|
||||
const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
|
||||
const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver']
|
||||
const useInterval: typeof import('@vueuse/core')['useInterval']
|
||||
const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn']
|
||||
const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier']
|
||||
const useLastChanged: typeof import('@vueuse/core')['useLastChanged']
|
||||
const useLink: typeof import('vue-router')['useLink']
|
||||
const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage']
|
||||
const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys']
|
||||
const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory']
|
||||
const useMediaControls: typeof import('@vueuse/core')['useMediaControls']
|
||||
const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
|
||||
const useMemoize: typeof import('@vueuse/core')['useMemoize']
|
||||
const useMemory: typeof import('@vueuse/core')['useMemory']
|
||||
const useMounted: typeof import('@vueuse/core')['useMounted']
|
||||
const useMouse: typeof import('@vueuse/core')['useMouse']
|
||||
const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
|
||||
const useMousePressed: typeof import('@vueuse/core')['useMousePressed']
|
||||
const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver']
|
||||
const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage']
|
||||
const useNetwork: typeof import('@vueuse/core')['useNetwork']
|
||||
const useNow: typeof import('@vueuse/core')['useNow']
|
||||
const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl']
|
||||
const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination']
|
||||
const useOnline: typeof import('@vueuse/core')['useOnline']
|
||||
const usePageLeave: typeof import('@vueuse/core')['usePageLeave']
|
||||
const useParallax: typeof import('@vueuse/core')['useParallax']
|
||||
const useParentElement: typeof import('@vueuse/core')['useParentElement']
|
||||
const usePerformanceObserver: typeof import('@vueuse/core')['usePerformanceObserver']
|
||||
const usePermission: typeof import('@vueuse/core')['usePermission']
|
||||
const usePointer: typeof import('@vueuse/core')['usePointer']
|
||||
const usePointerLock: typeof import('@vueuse/core')['usePointerLock']
|
||||
const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe']
|
||||
const usePosts: typeof import('./composables/usePosts')['default']
|
||||
const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme']
|
||||
const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast']
|
||||
const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
|
||||
const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
|
||||
const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
|
||||
const usePrevious: typeof import('@vueuse/core')['usePrevious']
|
||||
const useRafFn: typeof import('@vueuse/core')['useRafFn']
|
||||
const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
|
||||
const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
|
||||
const useRoute: typeof import('vue-router')['useRoute']
|
||||
const useRouter: typeof import('vue-router')['useRouter']
|
||||
const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation']
|
||||
const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea']
|
||||
const useScriptTag: typeof import('@vueuse/core')['useScriptTag']
|
||||
const useScroll: typeof import('@vueuse/core')['useScroll']
|
||||
const useScrollLock: typeof import('@vueuse/core')['useScrollLock']
|
||||
const useSeoMeta: typeof import('@vueuse/head')['useSeoMeta']
|
||||
const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage']
|
||||
const useShare: typeof import('@vueuse/core')['useShare']
|
||||
const useSlots: typeof import('vue')['useSlots']
|
||||
const useSorted: typeof import('@vueuse/core')['useSorted']
|
||||
const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition']
|
||||
const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis']
|
||||
const useStepper: typeof import('@vueuse/core')['useStepper']
|
||||
const useStorage: typeof import('@vueuse/core')['useStorage']
|
||||
const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync']
|
||||
const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
|
||||
const useSupported: typeof import('@vueuse/core')['useSupported']
|
||||
const useSwipe: typeof import('@vueuse/core')['useSwipe']
|
||||
const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
|
||||
const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
|
||||
const useTextSelection: typeof import('@vueuse/core')['useTextSelection']
|
||||
const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize']
|
||||
const useThrottle: typeof import('@vueuse/core')['useThrottle']
|
||||
const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn']
|
||||
const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory']
|
||||
const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo']
|
||||
const useTimeout: typeof import('@vueuse/core')['useTimeout']
|
||||
const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn']
|
||||
const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll']
|
||||
const useTimestamp: typeof import('@vueuse/core')['useTimestamp']
|
||||
const useTitle: typeof import('@vueuse/core')['useTitle']
|
||||
const useToNumber: typeof import('@vueuse/core')['useToNumber']
|
||||
const useToString: typeof import('@vueuse/core')['useToString']
|
||||
const useToggle: typeof import('@vueuse/core')['useToggle']
|
||||
const useTransition: typeof import('@vueuse/core')['useTransition']
|
||||
const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams']
|
||||
const useUserMedia: typeof import('@vueuse/core')['useUserMedia']
|
||||
const useVModel: typeof import('@vueuse/core')['useVModel']
|
||||
const useVModels: typeof import('@vueuse/core')['useVModels']
|
||||
const useVibrate: typeof import('@vueuse/core')['useVibrate']
|
||||
const useVirtualList: typeof import('@vueuse/core')['useVirtualList']
|
||||
const useWakeLock: typeof import('@vueuse/core')['useWakeLock']
|
||||
const useWebNotification: typeof import('@vueuse/core')['useWebNotification']
|
||||
const useWebSocket: typeof import('@vueuse/core')['useWebSocket']
|
||||
const useWebWorker: typeof import('@vueuse/core')['useWebWorker']
|
||||
const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn']
|
||||
const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus']
|
||||
const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll']
|
||||
const useWindowSize: typeof import('@vueuse/core')['useWindowSize']
|
||||
const watch: typeof import('vue')['watch']
|
||||
const watchArray: typeof import('@vueuse/core')['watchArray']
|
||||
const watchAtMost: typeof import('@vueuse/core')['watchAtMost']
|
||||
const watchDebounced: typeof import('@vueuse/core')['watchDebounced']
|
||||
const watchDeep: typeof import('@vueuse/core')['watchDeep']
|
||||
const watchEffect: typeof import('vue')['watchEffect']
|
||||
const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable']
|
||||
const watchImmediate: typeof import('@vueuse/core')['watchImmediate']
|
||||
const watchOnce: typeof import('@vueuse/core')['watchOnce']
|
||||
const watchPausable: typeof import('@vueuse/core')['watchPausable']
|
||||
const watchPostEffect: typeof import('vue')['watchPostEffect']
|
||||
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
|
||||
const watchThrottled: typeof import('@vueuse/core')['watchThrottled']
|
||||
const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable']
|
||||
const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter']
|
||||
const whenever: typeof import('@vueuse/core')['whenever']
|
||||
}
|
||||
// for type re-export
|
||||
declare global {
|
||||
// @ts-ignore
|
||||
export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey, PropType, Ref, VNode } from 'vue'
|
||||
}
|
||||
// for vue template auto import
|
||||
import { UnwrapRef } from 'vue'
|
||||
declare module 'vue' {
|
||||
interface ComponentCustomProperties {
|
||||
readonly $$: UnwrapRef<typeof import('vue/macros')['$$']>
|
||||
readonly $: UnwrapRef<typeof import('vue/macros')['$']>
|
||||
readonly $computed: UnwrapRef<typeof import('vue/macros')['$computed']>
|
||||
readonly $customRef: UnwrapRef<typeof import('vue/macros')['$customRef']>
|
||||
readonly $ref: UnwrapRef<typeof import('vue/macros')['$ref']>
|
||||
readonly $shallowRef: UnwrapRef<typeof import('vue/macros')['$shallowRef']>
|
||||
readonly $toRef: UnwrapRef<typeof import('vue/macros')['$toRef']>
|
||||
readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']>
|
||||
readonly asyncComputed: UnwrapRef<typeof import('@vueuse/core')['asyncComputed']>
|
||||
readonly autoResetRef: UnwrapRef<typeof import('@vueuse/core')['autoResetRef']>
|
||||
readonly computed: UnwrapRef<typeof import('vue')['computed']>
|
||||
readonly computedAsync: UnwrapRef<typeof import('@vueuse/core')['computedAsync']>
|
||||
readonly computedEager: UnwrapRef<typeof import('@vueuse/core')['computedEager']>
|
||||
readonly computedInject: UnwrapRef<typeof import('@vueuse/core')['computedInject']>
|
||||
readonly computedWithControl: UnwrapRef<typeof import('@vueuse/core')['computedWithControl']>
|
||||
readonly controlledComputed: UnwrapRef<typeof import('@vueuse/core')['controlledComputed']>
|
||||
readonly controlledRef: UnwrapRef<typeof import('@vueuse/core')['controlledRef']>
|
||||
readonly createApp: UnwrapRef<typeof import('vue')['createApp']>
|
||||
readonly createEventHook: UnwrapRef<typeof import('@vueuse/core')['createEventHook']>
|
||||
readonly createGlobalState: UnwrapRef<typeof import('@vueuse/core')['createGlobalState']>
|
||||
readonly createInjectionState: UnwrapRef<typeof import('@vueuse/core')['createInjectionState']>
|
||||
readonly createReactiveFn: UnwrapRef<typeof import('@vueuse/core')['createReactiveFn']>
|
||||
readonly createReusableTemplate: UnwrapRef<typeof import('@vueuse/core')['createReusableTemplate']>
|
||||
readonly createSharedComposable: UnwrapRef<typeof import('@vueuse/core')['createSharedComposable']>
|
||||
readonly createTemplatePromise: UnwrapRef<typeof import('@vueuse/core')['createTemplatePromise']>
|
||||
readonly createUnrefFn: UnwrapRef<typeof import('@vueuse/core')['createUnrefFn']>
|
||||
readonly customRef: UnwrapRef<typeof import('vue')['customRef']>
|
||||
readonly debouncedRef: UnwrapRef<typeof import('@vueuse/core')['debouncedRef']>
|
||||
readonly debouncedWatch: UnwrapRef<typeof import('@vueuse/core')['debouncedWatch']>
|
||||
readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']>
|
||||
readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']>
|
||||
readonly eagerComputed: UnwrapRef<typeof import('@vueuse/core')['eagerComputed']>
|
||||
readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']>
|
||||
readonly extendRef: UnwrapRef<typeof import('@vueuse/core')['extendRef']>
|
||||
readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']>
|
||||
readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']>
|
||||
readonly h: UnwrapRef<typeof import('vue')['h']>
|
||||
readonly ignorableWatch: UnwrapRef<typeof import('@vueuse/core')['ignorableWatch']>
|
||||
readonly inject: UnwrapRef<typeof import('vue')['inject']>
|
||||
readonly isDefined: UnwrapRef<typeof import('@vueuse/core')['isDefined']>
|
||||
readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']>
|
||||
readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']>
|
||||
readonly isReadonly: UnwrapRef<typeof import('vue')['isReadonly']>
|
||||
readonly isRef: UnwrapRef<typeof import('vue')['isRef']>
|
||||
readonly makeDestructurable: UnwrapRef<typeof import('@vueuse/core')['makeDestructurable']>
|
||||
readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']>
|
||||
readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']>
|
||||
readonly onActivated: UnwrapRef<typeof import('vue')['onActivated']>
|
||||
readonly onBeforeMount: UnwrapRef<typeof import('vue')['onBeforeMount']>
|
||||
readonly onBeforeRouteLeave: UnwrapRef<typeof import('vue-router')['onBeforeRouteLeave']>
|
||||
readonly onBeforeRouteUpdate: UnwrapRef<typeof import('vue-router')['onBeforeRouteUpdate']>
|
||||
readonly onBeforeUnmount: UnwrapRef<typeof import('vue')['onBeforeUnmount']>
|
||||
readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']>
|
||||
readonly onClickOutside: UnwrapRef<typeof import('@vueuse/core')['onClickOutside']>
|
||||
readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']>
|
||||
readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']>
|
||||
readonly onKeyStroke: UnwrapRef<typeof import('@vueuse/core')['onKeyStroke']>
|
||||
readonly onLongPress: UnwrapRef<typeof import('@vueuse/core')['onLongPress']>
|
||||
readonly onMounted: UnwrapRef<typeof import('vue')['onMounted']>
|
||||
readonly onRenderTracked: UnwrapRef<typeof import('vue')['onRenderTracked']>
|
||||
readonly onRenderTriggered: UnwrapRef<typeof import('vue')['onRenderTriggered']>
|
||||
readonly onScopeDispose: UnwrapRef<typeof import('vue')['onScopeDispose']>
|
||||
readonly onServerPrefetch: UnwrapRef<typeof import('vue')['onServerPrefetch']>
|
||||
readonly onStartTyping: UnwrapRef<typeof import('@vueuse/core')['onStartTyping']>
|
||||
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']>
|
||||
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']>
|
||||
readonly pausableWatch: UnwrapRef<typeof import('@vueuse/core')['pausableWatch']>
|
||||
readonly provide: UnwrapRef<typeof import('vue')['provide']>
|
||||
readonly reactify: UnwrapRef<typeof import('@vueuse/core')['reactify']>
|
||||
readonly reactifyObject: UnwrapRef<typeof import('@vueuse/core')['reactifyObject']>
|
||||
readonly reactive: UnwrapRef<typeof import('vue')['reactive']>
|
||||
readonly reactiveComputed: UnwrapRef<typeof import('@vueuse/core')['reactiveComputed']>
|
||||
readonly reactiveOmit: UnwrapRef<typeof import('@vueuse/core')['reactiveOmit']>
|
||||
readonly reactivePick: UnwrapRef<typeof import('@vueuse/core')['reactivePick']>
|
||||
readonly readonly: UnwrapRef<typeof import('vue')['readonly']>
|
||||
readonly ref: UnwrapRef<typeof import('vue')['ref']>
|
||||
readonly refAutoReset: UnwrapRef<typeof import('@vueuse/core')['refAutoReset']>
|
||||
readonly refDebounced: UnwrapRef<typeof import('@vueuse/core')['refDebounced']>
|
||||
readonly refDefault: UnwrapRef<typeof import('@vueuse/core')['refDefault']>
|
||||
readonly refThrottled: UnwrapRef<typeof import('@vueuse/core')['refThrottled']>
|
||||
readonly refWithControl: UnwrapRef<typeof import('@vueuse/core')['refWithControl']>
|
||||
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']>
|
||||
readonly resolveRef: UnwrapRef<typeof import('@vueuse/core')['resolveRef']>
|
||||
readonly resolveUnref: UnwrapRef<typeof import('@vueuse/core')['resolveUnref']>
|
||||
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
|
||||
readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']>
|
||||
readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']>
|
||||
readonly syncRef: UnwrapRef<typeof import('@vueuse/core')['syncRef']>
|
||||
readonly syncRefs: UnwrapRef<typeof import('@vueuse/core')['syncRefs']>
|
||||
readonly templateRef: UnwrapRef<typeof import('@vueuse/core')['templateRef']>
|
||||
readonly throttledRef: UnwrapRef<typeof import('@vueuse/core')['throttledRef']>
|
||||
readonly throttledWatch: UnwrapRef<typeof import('@vueuse/core')['throttledWatch']>
|
||||
readonly toRaw: UnwrapRef<typeof import('vue')['toRaw']>
|
||||
readonly toReactive: UnwrapRef<typeof import('@vueuse/core')['toReactive']>
|
||||
readonly toRef: UnwrapRef<typeof import('vue')['toRef']>
|
||||
readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']>
|
||||
readonly toValue: UnwrapRef<typeof import('vue')['toValue']>
|
||||
readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
|
||||
readonly tryOnBeforeMount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeMount']>
|
||||
readonly tryOnBeforeUnmount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeUnmount']>
|
||||
readonly tryOnMounted: UnwrapRef<typeof import('@vueuse/core')['tryOnMounted']>
|
||||
readonly tryOnScopeDispose: UnwrapRef<typeof import('@vueuse/core')['tryOnScopeDispose']>
|
||||
readonly tryOnUnmounted: UnwrapRef<typeof import('@vueuse/core')['tryOnUnmounted']>
|
||||
readonly unref: UnwrapRef<typeof import('vue')['unref']>
|
||||
readonly unrefElement: UnwrapRef<typeof import('@vueuse/core')['unrefElement']>
|
||||
readonly until: UnwrapRef<typeof import('@vueuse/core')['until']>
|
||||
readonly useActiveElement: UnwrapRef<typeof import('@vueuse/core')['useActiveElement']>
|
||||
readonly useAnimate: UnwrapRef<typeof import('@vueuse/core')['useAnimate']>
|
||||
readonly useArrayDifference: UnwrapRef<typeof import('@vueuse/core')['useArrayDifference']>
|
||||
readonly useArrayEvery: UnwrapRef<typeof import('@vueuse/core')['useArrayEvery']>
|
||||
readonly useArrayFilter: UnwrapRef<typeof import('@vueuse/core')['useArrayFilter']>
|
||||
readonly useArrayFind: UnwrapRef<typeof import('@vueuse/core')['useArrayFind']>
|
||||
readonly useArrayFindIndex: UnwrapRef<typeof import('@vueuse/core')['useArrayFindIndex']>
|
||||
readonly useArrayFindLast: UnwrapRef<typeof import('@vueuse/core')['useArrayFindLast']>
|
||||
readonly useArrayIncludes: UnwrapRef<typeof import('@vueuse/core')['useArrayIncludes']>
|
||||
readonly useArrayJoin: UnwrapRef<typeof import('@vueuse/core')['useArrayJoin']>
|
||||
readonly useArrayMap: UnwrapRef<typeof import('@vueuse/core')['useArrayMap']>
|
||||
readonly useArrayReduce: UnwrapRef<typeof import('@vueuse/core')['useArrayReduce']>
|
||||
readonly useArraySome: UnwrapRef<typeof import('@vueuse/core')['useArraySome']>
|
||||
readonly useArrayUnique: UnwrapRef<typeof import('@vueuse/core')['useArrayUnique']>
|
||||
readonly useAsyncQueue: UnwrapRef<typeof import('@vueuse/core')['useAsyncQueue']>
|
||||
readonly useAsyncState: UnwrapRef<typeof import('@vueuse/core')['useAsyncState']>
|
||||
readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']>
|
||||
readonly useBase64: UnwrapRef<typeof import('@vueuse/core')['useBase64']>
|
||||
readonly useBattery: UnwrapRef<typeof import('@vueuse/core')['useBattery']>
|
||||
readonly useBluetooth: UnwrapRef<typeof import('@vueuse/core')['useBluetooth']>
|
||||
readonly useBreakpoints: UnwrapRef<typeof import('@vueuse/core')['useBreakpoints']>
|
||||
readonly useBroadcastChannel: UnwrapRef<typeof import('@vueuse/core')['useBroadcastChannel']>
|
||||
readonly useBrowserLocation: UnwrapRef<typeof import('@vueuse/core')['useBrowserLocation']>
|
||||
readonly useCached: UnwrapRef<typeof import('@vueuse/core')['useCached']>
|
||||
readonly useClipboard: UnwrapRef<typeof import('@vueuse/core')['useClipboard']>
|
||||
readonly useCloned: UnwrapRef<typeof import('@vueuse/core')['useCloned']>
|
||||
readonly useColorMode: UnwrapRef<typeof import('@vueuse/core')['useColorMode']>
|
||||
readonly useConfirmDialog: UnwrapRef<typeof import('@vueuse/core')['useConfirmDialog']>
|
||||
readonly useCounter: UnwrapRef<typeof import('@vueuse/core')['useCounter']>
|
||||
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
|
||||
readonly useCssVar: UnwrapRef<typeof import('@vueuse/core')['useCssVar']>
|
||||
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
|
||||
readonly useCurrentElement: UnwrapRef<typeof import('@vueuse/core')['useCurrentElement']>
|
||||
readonly useCycleList: UnwrapRef<typeof import('@vueuse/core')['useCycleList']>
|
||||
readonly useDark: UnwrapRef<typeof import('@vueuse/core')['useDark']>
|
||||
readonly useDarkMode: UnwrapRef<typeof import('./composables/useDarkMode')['default']>
|
||||
readonly useDateFormat: UnwrapRef<typeof import('@vueuse/core')['useDateFormat']>
|
||||
readonly useDebounce: UnwrapRef<typeof import('@vueuse/core')['useDebounce']>
|
||||
readonly useDebounceFn: UnwrapRef<typeof import('@vueuse/core')['useDebounceFn']>
|
||||
readonly useDebouncedRefHistory: UnwrapRef<typeof import('@vueuse/core')['useDebouncedRefHistory']>
|
||||
readonly useDeviceMotion: UnwrapRef<typeof import('@vueuse/core')['useDeviceMotion']>
|
||||
readonly useDeviceOrientation: UnwrapRef<typeof import('@vueuse/core')['useDeviceOrientation']>
|
||||
readonly useDevicePixelRatio: UnwrapRef<typeof import('@vueuse/core')['useDevicePixelRatio']>
|
||||
readonly useDevicesList: UnwrapRef<typeof import('@vueuse/core')['useDevicesList']>
|
||||
readonly useDisplayMedia: UnwrapRef<typeof import('@vueuse/core')['useDisplayMedia']>
|
||||
readonly useDocumentVisibility: UnwrapRef<typeof import('@vueuse/core')['useDocumentVisibility']>
|
||||
readonly useDraggable: UnwrapRef<typeof import('@vueuse/core')['useDraggable']>
|
||||
readonly useDropZone: UnwrapRef<typeof import('@vueuse/core')['useDropZone']>
|
||||
readonly useElementBounding: UnwrapRef<typeof import('@vueuse/core')['useElementBounding']>
|
||||
readonly useElementByPoint: UnwrapRef<typeof import('@vueuse/core')['useElementByPoint']>
|
||||
readonly useElementHover: UnwrapRef<typeof import('@vueuse/core')['useElementHover']>
|
||||
readonly useElementSize: UnwrapRef<typeof import('@vueuse/core')['useElementSize']>
|
||||
readonly useElementVisibility: UnwrapRef<typeof import('@vueuse/core')['useElementVisibility']>
|
||||
readonly useEventBus: UnwrapRef<typeof import('@vueuse/core')['useEventBus']>
|
||||
readonly useEventListener: UnwrapRef<typeof import('@vueuse/core')['useEventListener']>
|
||||
readonly useEventSource: UnwrapRef<typeof import('@vueuse/core')['useEventSource']>
|
||||
readonly useEyeDropper: UnwrapRef<typeof import('@vueuse/core')['useEyeDropper']>
|
||||
readonly useFavicon: UnwrapRef<typeof import('@vueuse/core')['useFavicon']>
|
||||
readonly useFetch: UnwrapRef<typeof import('@vueuse/core')['useFetch']>
|
||||
readonly useFileDialog: UnwrapRef<typeof import('@vueuse/core')['useFileDialog']>
|
||||
readonly useFileSystemAccess: UnwrapRef<typeof import('@vueuse/core')['useFileSystemAccess']>
|
||||
readonly useFocus: UnwrapRef<typeof import('@vueuse/core')['useFocus']>
|
||||
readonly useFocusWithin: UnwrapRef<typeof import('@vueuse/core')['useFocusWithin']>
|
||||
readonly useFps: UnwrapRef<typeof import('@vueuse/core')['useFps']>
|
||||
readonly useFullscreen: UnwrapRef<typeof import('@vueuse/core')['useFullscreen']>
|
||||
readonly useGamepad: UnwrapRef<typeof import('@vueuse/core')['useGamepad']>
|
||||
readonly useGeolocation: UnwrapRef<typeof import('@vueuse/core')['useGeolocation']>
|
||||
readonly useHead: UnwrapRef<typeof import('@vueuse/head')['useHead']>
|
||||
readonly useI18n: UnwrapRef<typeof import('vue-i18n')['useI18n']>
|
||||
readonly useIdle: UnwrapRef<typeof import('@vueuse/core')['useIdle']>
|
||||
readonly useImage: UnwrapRef<typeof import('@vueuse/core')['useImage']>
|
||||
readonly useInfiniteScroll: UnwrapRef<typeof import('@vueuse/core')['useInfiniteScroll']>
|
||||
readonly useIntersectionObserver: UnwrapRef<typeof import('@vueuse/core')['useIntersectionObserver']>
|
||||
readonly useInterval: UnwrapRef<typeof import('@vueuse/core')['useInterval']>
|
||||
readonly useIntervalFn: UnwrapRef<typeof import('@vueuse/core')['useIntervalFn']>
|
||||
readonly useKeyModifier: UnwrapRef<typeof import('@vueuse/core')['useKeyModifier']>
|
||||
readonly useLastChanged: UnwrapRef<typeof import('@vueuse/core')['useLastChanged']>
|
||||
readonly useLink: UnwrapRef<typeof import('vue-router')['useLink']>
|
||||
readonly useLocalStorage: UnwrapRef<typeof import('@vueuse/core')['useLocalStorage']>
|
||||
readonly useMagicKeys: UnwrapRef<typeof import('@vueuse/core')['useMagicKeys']>
|
||||
readonly useManualRefHistory: UnwrapRef<typeof import('@vueuse/core')['useManualRefHistory']>
|
||||
readonly useMediaControls: UnwrapRef<typeof import('@vueuse/core')['useMediaControls']>
|
||||
readonly useMediaQuery: UnwrapRef<typeof import('@vueuse/core')['useMediaQuery']>
|
||||
readonly useMemoize: UnwrapRef<typeof import('@vueuse/core')['useMemoize']>
|
||||
readonly useMemory: UnwrapRef<typeof import('@vueuse/core')['useMemory']>
|
||||
readonly useMounted: UnwrapRef<typeof import('@vueuse/core')['useMounted']>
|
||||
readonly useMouse: UnwrapRef<typeof import('@vueuse/core')['useMouse']>
|
||||
readonly useMouseInElement: UnwrapRef<typeof import('@vueuse/core')['useMouseInElement']>
|
||||
readonly useMousePressed: UnwrapRef<typeof import('@vueuse/core')['useMousePressed']>
|
||||
readonly useMutationObserver: UnwrapRef<typeof import('@vueuse/core')['useMutationObserver']>
|
||||
readonly useNavigatorLanguage: UnwrapRef<typeof import('@vueuse/core')['useNavigatorLanguage']>
|
||||
readonly useNetwork: UnwrapRef<typeof import('@vueuse/core')['useNetwork']>
|
||||
readonly useNow: UnwrapRef<typeof import('@vueuse/core')['useNow']>
|
||||
readonly useObjectUrl: UnwrapRef<typeof import('@vueuse/core')['useObjectUrl']>
|
||||
readonly useOffsetPagination: UnwrapRef<typeof import('@vueuse/core')['useOffsetPagination']>
|
||||
readonly useOnline: UnwrapRef<typeof import('@vueuse/core')['useOnline']>
|
||||
readonly usePageLeave: UnwrapRef<typeof import('@vueuse/core')['usePageLeave']>
|
||||
readonly useParallax: UnwrapRef<typeof import('@vueuse/core')['useParallax']>
|
||||
readonly useParentElement: UnwrapRef<typeof import('@vueuse/core')['useParentElement']>
|
||||
readonly usePerformanceObserver: UnwrapRef<typeof import('@vueuse/core')['usePerformanceObserver']>
|
||||
readonly usePermission: UnwrapRef<typeof import('@vueuse/core')['usePermission']>
|
||||
readonly usePointer: UnwrapRef<typeof import('@vueuse/core')['usePointer']>
|
||||
readonly usePointerLock: UnwrapRef<typeof import('@vueuse/core')['usePointerLock']>
|
||||
readonly usePointerSwipe: UnwrapRef<typeof import('@vueuse/core')['usePointerSwipe']>
|
||||
readonly usePosts: UnwrapRef<typeof import('./composables/usePosts')['default']>
|
||||
readonly usePreferredColorScheme: UnwrapRef<typeof import('@vueuse/core')['usePreferredColorScheme']>
|
||||
readonly usePreferredContrast: UnwrapRef<typeof import('@vueuse/core')['usePreferredContrast']>
|
||||
readonly usePreferredDark: UnwrapRef<typeof import('@vueuse/core')['usePreferredDark']>
|
||||
readonly usePreferredLanguages: UnwrapRef<typeof import('@vueuse/core')['usePreferredLanguages']>
|
||||
readonly usePreferredReducedMotion: UnwrapRef<typeof import('@vueuse/core')['usePreferredReducedMotion']>
|
||||
readonly usePrevious: UnwrapRef<typeof import('@vueuse/core')['usePrevious']>
|
||||
readonly useRafFn: UnwrapRef<typeof import('@vueuse/core')['useRafFn']>
|
||||
readonly useRefHistory: UnwrapRef<typeof import('@vueuse/core')['useRefHistory']>
|
||||
readonly useResizeObserver: UnwrapRef<typeof import('@vueuse/core')['useResizeObserver']>
|
||||
readonly useRoute: UnwrapRef<typeof import('vue-router')['useRoute']>
|
||||
readonly useRouter: UnwrapRef<typeof import('vue-router')['useRouter']>
|
||||
readonly useScreenOrientation: UnwrapRef<typeof import('@vueuse/core')['useScreenOrientation']>
|
||||
readonly useScreenSafeArea: UnwrapRef<typeof import('@vueuse/core')['useScreenSafeArea']>
|
||||
readonly useScriptTag: UnwrapRef<typeof import('@vueuse/core')['useScriptTag']>
|
||||
readonly useScroll: UnwrapRef<typeof import('@vueuse/core')['useScroll']>
|
||||
readonly useScrollLock: UnwrapRef<typeof import('@vueuse/core')['useScrollLock']>
|
||||
readonly useSeoMeta: UnwrapRef<typeof import('@vueuse/head')['useSeoMeta']>
|
||||
readonly useSessionStorage: UnwrapRef<typeof import('@vueuse/core')['useSessionStorage']>
|
||||
readonly useShare: UnwrapRef<typeof import('@vueuse/core')['useShare']>
|
||||
readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
|
||||
readonly useSorted: UnwrapRef<typeof import('@vueuse/core')['useSorted']>
|
||||
readonly useSpeechRecognition: UnwrapRef<typeof import('@vueuse/core')['useSpeechRecognition']>
|
||||
readonly useSpeechSynthesis: UnwrapRef<typeof import('@vueuse/core')['useSpeechSynthesis']>
|
||||
readonly useStepper: UnwrapRef<typeof import('@vueuse/core')['useStepper']>
|
||||
readonly useStorage: UnwrapRef<typeof import('@vueuse/core')['useStorage']>
|
||||
readonly useStorageAsync: UnwrapRef<typeof import('@vueuse/core')['useStorageAsync']>
|
||||
readonly useStyleTag: UnwrapRef<typeof import('@vueuse/core')['useStyleTag']>
|
||||
readonly useSupported: UnwrapRef<typeof import('@vueuse/core')['useSupported']>
|
||||
readonly useSwipe: UnwrapRef<typeof import('@vueuse/core')['useSwipe']>
|
||||
readonly useTemplateRefsList: UnwrapRef<typeof import('@vueuse/core')['useTemplateRefsList']>
|
||||
readonly useTextDirection: UnwrapRef<typeof import('@vueuse/core')['useTextDirection']>
|
||||
readonly useTextSelection: UnwrapRef<typeof import('@vueuse/core')['useTextSelection']>
|
||||
readonly useTextareaAutosize: UnwrapRef<typeof import('@vueuse/core')['useTextareaAutosize']>
|
||||
readonly useThrottle: UnwrapRef<typeof import('@vueuse/core')['useThrottle']>
|
||||
readonly useThrottleFn: UnwrapRef<typeof import('@vueuse/core')['useThrottleFn']>
|
||||
readonly useThrottledRefHistory: UnwrapRef<typeof import('@vueuse/core')['useThrottledRefHistory']>
|
||||
readonly useTimeAgo: UnwrapRef<typeof import('@vueuse/core')['useTimeAgo']>
|
||||
readonly useTimeout: UnwrapRef<typeof import('@vueuse/core')['useTimeout']>
|
||||
readonly useTimeoutFn: UnwrapRef<typeof import('@vueuse/core')['useTimeoutFn']>
|
||||
readonly useTimeoutPoll: UnwrapRef<typeof import('@vueuse/core')['useTimeoutPoll']>
|
||||
readonly useTimestamp: UnwrapRef<typeof import('@vueuse/core')['useTimestamp']>
|
||||
readonly useTitle: UnwrapRef<typeof import('@vueuse/core')['useTitle']>
|
||||
readonly useToNumber: UnwrapRef<typeof import('@vueuse/core')['useToNumber']>
|
||||
readonly useToString: UnwrapRef<typeof import('@vueuse/core')['useToString']>
|
||||
readonly useToggle: UnwrapRef<typeof import('@vueuse/core')['useToggle']>
|
||||
readonly useTransition: UnwrapRef<typeof import('@vueuse/core')['useTransition']>
|
||||
readonly useUrlSearchParams: UnwrapRef<typeof import('@vueuse/core')['useUrlSearchParams']>
|
||||
readonly useUserMedia: UnwrapRef<typeof import('@vueuse/core')['useUserMedia']>
|
||||
readonly useVModel: UnwrapRef<typeof import('@vueuse/core')['useVModel']>
|
||||
readonly useVModels: UnwrapRef<typeof import('@vueuse/core')['useVModels']>
|
||||
readonly useVibrate: UnwrapRef<typeof import('@vueuse/core')['useVibrate']>
|
||||
readonly useVirtualList: UnwrapRef<typeof import('@vueuse/core')['useVirtualList']>
|
||||
readonly useWakeLock: UnwrapRef<typeof import('@vueuse/core')['useWakeLock']>
|
||||
readonly useWebNotification: UnwrapRef<typeof import('@vueuse/core')['useWebNotification']>
|
||||
readonly useWebSocket: UnwrapRef<typeof import('@vueuse/core')['useWebSocket']>
|
||||
readonly useWebWorker: UnwrapRef<typeof import('@vueuse/core')['useWebWorker']>
|
||||
readonly useWebWorkerFn: UnwrapRef<typeof import('@vueuse/core')['useWebWorkerFn']>
|
||||
readonly useWindowFocus: UnwrapRef<typeof import('@vueuse/core')['useWindowFocus']>
|
||||
readonly useWindowScroll: UnwrapRef<typeof import('@vueuse/core')['useWindowScroll']>
|
||||
readonly useWindowSize: UnwrapRef<typeof import('@vueuse/core')['useWindowSize']>
|
||||
readonly watch: UnwrapRef<typeof import('vue')['watch']>
|
||||
readonly watchArray: UnwrapRef<typeof import('@vueuse/core')['watchArray']>
|
||||
readonly watchAtMost: UnwrapRef<typeof import('@vueuse/core')['watchAtMost']>
|
||||
readonly watchDebounced: UnwrapRef<typeof import('@vueuse/core')['watchDebounced']>
|
||||
readonly watchDeep: UnwrapRef<typeof import('@vueuse/core')['watchDeep']>
|
||||
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']>
|
||||
readonly watchIgnorable: UnwrapRef<typeof import('@vueuse/core')['watchIgnorable']>
|
||||
readonly watchImmediate: UnwrapRef<typeof import('@vueuse/core')['watchImmediate']>
|
||||
readonly watchOnce: UnwrapRef<typeof import('@vueuse/core')['watchOnce']>
|
||||
readonly watchPausable: UnwrapRef<typeof import('@vueuse/core')['watchPausable']>
|
||||
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
|
||||
readonly watchSyncEffect: UnwrapRef<typeof import('vue')['watchSyncEffect']>
|
||||
readonly watchThrottled: UnwrapRef<typeof import('@vueuse/core')['watchThrottled']>
|
||||
readonly watchTriggerable: UnwrapRef<typeof import('@vueuse/core')['watchTriggerable']>
|
||||
readonly watchWithFilter: UnwrapRef<typeof import('@vueuse/core')['watchWithFilter']>
|
||||
readonly whenever: UnwrapRef<typeof import('@vueuse/core')['whenever']>
|
||||
}
|
||||
}
|
||||
declare module '@vue/runtime-core' {
|
||||
interface ComponentCustomProperties {
|
||||
readonly $$: UnwrapRef<typeof import('vue/macros')['$$']>
|
||||
readonly $: UnwrapRef<typeof import('vue/macros')['$']>
|
||||
readonly $computed: UnwrapRef<typeof import('vue/macros')['$computed']>
|
||||
readonly $customRef: UnwrapRef<typeof import('vue/macros')['$customRef']>
|
||||
readonly $ref: UnwrapRef<typeof import('vue/macros')['$ref']>
|
||||
readonly $shallowRef: UnwrapRef<typeof import('vue/macros')['$shallowRef']>
|
||||
readonly $toRef: UnwrapRef<typeof import('vue/macros')['$toRef']>
|
||||
readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']>
|
||||
readonly asyncComputed: UnwrapRef<typeof import('@vueuse/core')['asyncComputed']>
|
||||
readonly autoResetRef: UnwrapRef<typeof import('@vueuse/core')['autoResetRef']>
|
||||
readonly computed: UnwrapRef<typeof import('vue')['computed']>
|
||||
readonly computedAsync: UnwrapRef<typeof import('@vueuse/core')['computedAsync']>
|
||||
readonly computedEager: UnwrapRef<typeof import('@vueuse/core')['computedEager']>
|
||||
readonly computedInject: UnwrapRef<typeof import('@vueuse/core')['computedInject']>
|
||||
readonly computedWithControl: UnwrapRef<typeof import('@vueuse/core')['computedWithControl']>
|
||||
readonly controlledComputed: UnwrapRef<typeof import('@vueuse/core')['controlledComputed']>
|
||||
readonly controlledRef: UnwrapRef<typeof import('@vueuse/core')['controlledRef']>
|
||||
readonly createApp: UnwrapRef<typeof import('vue')['createApp']>
|
||||
readonly createEventHook: UnwrapRef<typeof import('@vueuse/core')['createEventHook']>
|
||||
readonly createGlobalState: UnwrapRef<typeof import('@vueuse/core')['createGlobalState']>
|
||||
readonly createInjectionState: UnwrapRef<typeof import('@vueuse/core')['createInjectionState']>
|
||||
readonly createReactiveFn: UnwrapRef<typeof import('@vueuse/core')['createReactiveFn']>
|
||||
readonly createReusableTemplate: UnwrapRef<typeof import('@vueuse/core')['createReusableTemplate']>
|
||||
readonly createSharedComposable: UnwrapRef<typeof import('@vueuse/core')['createSharedComposable']>
|
||||
readonly createTemplatePromise: UnwrapRef<typeof import('@vueuse/core')['createTemplatePromise']>
|
||||
readonly createUnrefFn: UnwrapRef<typeof import('@vueuse/core')['createUnrefFn']>
|
||||
readonly customRef: UnwrapRef<typeof import('vue')['customRef']>
|
||||
readonly debouncedRef: UnwrapRef<typeof import('@vueuse/core')['debouncedRef']>
|
||||
readonly debouncedWatch: UnwrapRef<typeof import('@vueuse/core')['debouncedWatch']>
|
||||
readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']>
|
||||
readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']>
|
||||
readonly eagerComputed: UnwrapRef<typeof import('@vueuse/core')['eagerComputed']>
|
||||
readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']>
|
||||
readonly extendRef: UnwrapRef<typeof import('@vueuse/core')['extendRef']>
|
||||
readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']>
|
||||
readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']>
|
||||
readonly h: UnwrapRef<typeof import('vue')['h']>
|
||||
readonly ignorableWatch: UnwrapRef<typeof import('@vueuse/core')['ignorableWatch']>
|
||||
readonly inject: UnwrapRef<typeof import('vue')['inject']>
|
||||
readonly isDefined: UnwrapRef<typeof import('@vueuse/core')['isDefined']>
|
||||
readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']>
|
||||
readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']>
|
||||
readonly isReadonly: UnwrapRef<typeof import('vue')['isReadonly']>
|
||||
readonly isRef: UnwrapRef<typeof import('vue')['isRef']>
|
||||
readonly makeDestructurable: UnwrapRef<typeof import('@vueuse/core')['makeDestructurable']>
|
||||
readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']>
|
||||
readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']>
|
||||
readonly onActivated: UnwrapRef<typeof import('vue')['onActivated']>
|
||||
readonly onBeforeMount: UnwrapRef<typeof import('vue')['onBeforeMount']>
|
||||
readonly onBeforeRouteLeave: UnwrapRef<typeof import('vue-router')['onBeforeRouteLeave']>
|
||||
readonly onBeforeRouteUpdate: UnwrapRef<typeof import('vue-router')['onBeforeRouteUpdate']>
|
||||
readonly onBeforeUnmount: UnwrapRef<typeof import('vue')['onBeforeUnmount']>
|
||||
readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']>
|
||||
readonly onClickOutside: UnwrapRef<typeof import('@vueuse/core')['onClickOutside']>
|
||||
readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']>
|
||||
readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']>
|
||||
readonly onKeyStroke: UnwrapRef<typeof import('@vueuse/core')['onKeyStroke']>
|
||||
readonly onLongPress: UnwrapRef<typeof import('@vueuse/core')['onLongPress']>
|
||||
readonly onMounted: UnwrapRef<typeof import('vue')['onMounted']>
|
||||
readonly onRenderTracked: UnwrapRef<typeof import('vue')['onRenderTracked']>
|
||||
readonly onRenderTriggered: UnwrapRef<typeof import('vue')['onRenderTriggered']>
|
||||
readonly onScopeDispose: UnwrapRef<typeof import('vue')['onScopeDispose']>
|
||||
readonly onServerPrefetch: UnwrapRef<typeof import('vue')['onServerPrefetch']>
|
||||
readonly onStartTyping: UnwrapRef<typeof import('@vueuse/core')['onStartTyping']>
|
||||
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']>
|
||||
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']>
|
||||
readonly pausableWatch: UnwrapRef<typeof import('@vueuse/core')['pausableWatch']>
|
||||
readonly provide: UnwrapRef<typeof import('vue')['provide']>
|
||||
readonly reactify: UnwrapRef<typeof import('@vueuse/core')['reactify']>
|
||||
readonly reactifyObject: UnwrapRef<typeof import('@vueuse/core')['reactifyObject']>
|
||||
readonly reactive: UnwrapRef<typeof import('vue')['reactive']>
|
||||
readonly reactiveComputed: UnwrapRef<typeof import('@vueuse/core')['reactiveComputed']>
|
||||
readonly reactiveOmit: UnwrapRef<typeof import('@vueuse/core')['reactiveOmit']>
|
||||
readonly reactivePick: UnwrapRef<typeof import('@vueuse/core')['reactivePick']>
|
||||
readonly readonly: UnwrapRef<typeof import('vue')['readonly']>
|
||||
readonly ref: UnwrapRef<typeof import('vue')['ref']>
|
||||
readonly refAutoReset: UnwrapRef<typeof import('@vueuse/core')['refAutoReset']>
|
||||
readonly refDebounced: UnwrapRef<typeof import('@vueuse/core')['refDebounced']>
|
||||
readonly refDefault: UnwrapRef<typeof import('@vueuse/core')['refDefault']>
|
||||
readonly refThrottled: UnwrapRef<typeof import('@vueuse/core')['refThrottled']>
|
||||
readonly refWithControl: UnwrapRef<typeof import('@vueuse/core')['refWithControl']>
|
||||
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']>
|
||||
readonly resolveRef: UnwrapRef<typeof import('@vueuse/core')['resolveRef']>
|
||||
readonly resolveUnref: UnwrapRef<typeof import('@vueuse/core')['resolveUnref']>
|
||||
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
|
||||
readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']>
|
||||
readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']>
|
||||
readonly syncRef: UnwrapRef<typeof import('@vueuse/core')['syncRef']>
|
||||
readonly syncRefs: UnwrapRef<typeof import('@vueuse/core')['syncRefs']>
|
||||
readonly templateRef: UnwrapRef<typeof import('@vueuse/core')['templateRef']>
|
||||
readonly throttledRef: UnwrapRef<typeof import('@vueuse/core')['throttledRef']>
|
||||
readonly throttledWatch: UnwrapRef<typeof import('@vueuse/core')['throttledWatch']>
|
||||
readonly toRaw: UnwrapRef<typeof import('vue')['toRaw']>
|
||||
readonly toReactive: UnwrapRef<typeof import('@vueuse/core')['toReactive']>
|
||||
readonly toRef: UnwrapRef<typeof import('vue')['toRef']>
|
||||
readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']>
|
||||
readonly toValue: UnwrapRef<typeof import('vue')['toValue']>
|
||||
readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
|
||||
readonly tryOnBeforeMount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeMount']>
|
||||
readonly tryOnBeforeUnmount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeUnmount']>
|
||||
readonly tryOnMounted: UnwrapRef<typeof import('@vueuse/core')['tryOnMounted']>
|
||||
readonly tryOnScopeDispose: UnwrapRef<typeof import('@vueuse/core')['tryOnScopeDispose']>
|
||||
readonly tryOnUnmounted: UnwrapRef<typeof import('@vueuse/core')['tryOnUnmounted']>
|
||||
readonly unref: UnwrapRef<typeof import('vue')['unref']>
|
||||
readonly unrefElement: UnwrapRef<typeof import('@vueuse/core')['unrefElement']>
|
||||
readonly until: UnwrapRef<typeof import('@vueuse/core')['until']>
|
||||
readonly useActiveElement: UnwrapRef<typeof import('@vueuse/core')['useActiveElement']>
|
||||
readonly useAnimate: UnwrapRef<typeof import('@vueuse/core')['useAnimate']>
|
||||
readonly useArrayDifference: UnwrapRef<typeof import('@vueuse/core')['useArrayDifference']>
|
||||
readonly useArrayEvery: UnwrapRef<typeof import('@vueuse/core')['useArrayEvery']>
|
||||
readonly useArrayFilter: UnwrapRef<typeof import('@vueuse/core')['useArrayFilter']>
|
||||
readonly useArrayFind: UnwrapRef<typeof import('@vueuse/core')['useArrayFind']>
|
||||
readonly useArrayFindIndex: UnwrapRef<typeof import('@vueuse/core')['useArrayFindIndex']>
|
||||
readonly useArrayFindLast: UnwrapRef<typeof import('@vueuse/core')['useArrayFindLast']>
|
||||
readonly useArrayIncludes: UnwrapRef<typeof import('@vueuse/core')['useArrayIncludes']>
|
||||
readonly useArrayJoin: UnwrapRef<typeof import('@vueuse/core')['useArrayJoin']>
|
||||
readonly useArrayMap: UnwrapRef<typeof import('@vueuse/core')['useArrayMap']>
|
||||
readonly useArrayReduce: UnwrapRef<typeof import('@vueuse/core')['useArrayReduce']>
|
||||
readonly useArraySome: UnwrapRef<typeof import('@vueuse/core')['useArraySome']>
|
||||
readonly useArrayUnique: UnwrapRef<typeof import('@vueuse/core')['useArrayUnique']>
|
||||
readonly useAsyncQueue: UnwrapRef<typeof import('@vueuse/core')['useAsyncQueue']>
|
||||
readonly useAsyncState: UnwrapRef<typeof import('@vueuse/core')['useAsyncState']>
|
||||
readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']>
|
||||
readonly useBase64: UnwrapRef<typeof import('@vueuse/core')['useBase64']>
|
||||
readonly useBattery: UnwrapRef<typeof import('@vueuse/core')['useBattery']>
|
||||
readonly useBluetooth: UnwrapRef<typeof import('@vueuse/core')['useBluetooth']>
|
||||
readonly useBreakpoints: UnwrapRef<typeof import('@vueuse/core')['useBreakpoints']>
|
||||
readonly useBroadcastChannel: UnwrapRef<typeof import('@vueuse/core')['useBroadcastChannel']>
|
||||
readonly useBrowserLocation: UnwrapRef<typeof import('@vueuse/core')['useBrowserLocation']>
|
||||
readonly useCached: UnwrapRef<typeof import('@vueuse/core')['useCached']>
|
||||
readonly useClipboard: UnwrapRef<typeof import('@vueuse/core')['useClipboard']>
|
||||
readonly useCloned: UnwrapRef<typeof import('@vueuse/core')['useCloned']>
|
||||
readonly useColorMode: UnwrapRef<typeof import('@vueuse/core')['useColorMode']>
|
||||
readonly useConfirmDialog: UnwrapRef<typeof import('@vueuse/core')['useConfirmDialog']>
|
||||
readonly useCounter: UnwrapRef<typeof import('@vueuse/core')['useCounter']>
|
||||
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
|
||||
readonly useCssVar: UnwrapRef<typeof import('@vueuse/core')['useCssVar']>
|
||||
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
|
||||
readonly useCurrentElement: UnwrapRef<typeof import('@vueuse/core')['useCurrentElement']>
|
||||
readonly useCycleList: UnwrapRef<typeof import('@vueuse/core')['useCycleList']>
|
||||
readonly useDark: UnwrapRef<typeof import('@vueuse/core')['useDark']>
|
||||
readonly useDarkMode: UnwrapRef<typeof import('./composables/useDarkMode')['default']>
|
||||
readonly useDateFormat: UnwrapRef<typeof import('@vueuse/core')['useDateFormat']>
|
||||
readonly useDebounce: UnwrapRef<typeof import('@vueuse/core')['useDebounce']>
|
||||
readonly useDebounceFn: UnwrapRef<typeof import('@vueuse/core')['useDebounceFn']>
|
||||
readonly useDebouncedRefHistory: UnwrapRef<typeof import('@vueuse/core')['useDebouncedRefHistory']>
|
||||
readonly useDeviceMotion: UnwrapRef<typeof import('@vueuse/core')['useDeviceMotion']>
|
||||
readonly useDeviceOrientation: UnwrapRef<typeof import('@vueuse/core')['useDeviceOrientation']>
|
||||
readonly useDevicePixelRatio: UnwrapRef<typeof import('@vueuse/core')['useDevicePixelRatio']>
|
||||
readonly useDevicesList: UnwrapRef<typeof import('@vueuse/core')['useDevicesList']>
|
||||
readonly useDisplayMedia: UnwrapRef<typeof import('@vueuse/core')['useDisplayMedia']>
|
||||
readonly useDocumentVisibility: UnwrapRef<typeof import('@vueuse/core')['useDocumentVisibility']>
|
||||
readonly useDraggable: UnwrapRef<typeof import('@vueuse/core')['useDraggable']>
|
||||
readonly useDropZone: UnwrapRef<typeof import('@vueuse/core')['useDropZone']>
|
||||
readonly useElementBounding: UnwrapRef<typeof import('@vueuse/core')['useElementBounding']>
|
||||
readonly useElementByPoint: UnwrapRef<typeof import('@vueuse/core')['useElementByPoint']>
|
||||
readonly useElementHover: UnwrapRef<typeof import('@vueuse/core')['useElementHover']>
|
||||
readonly useElementSize: UnwrapRef<typeof import('@vueuse/core')['useElementSize']>
|
||||
readonly useElementVisibility: UnwrapRef<typeof import('@vueuse/core')['useElementVisibility']>
|
||||
readonly useEventBus: UnwrapRef<typeof import('@vueuse/core')['useEventBus']>
|
||||
readonly useEventListener: UnwrapRef<typeof import('@vueuse/core')['useEventListener']>
|
||||
readonly useEventSource: UnwrapRef<typeof import('@vueuse/core')['useEventSource']>
|
||||
readonly useEyeDropper: UnwrapRef<typeof import('@vueuse/core')['useEyeDropper']>
|
||||
readonly useFavicon: UnwrapRef<typeof import('@vueuse/core')['useFavicon']>
|
||||
readonly useFetch: UnwrapRef<typeof import('@vueuse/core')['useFetch']>
|
||||
readonly useFileDialog: UnwrapRef<typeof import('@vueuse/core')['useFileDialog']>
|
||||
readonly useFileSystemAccess: UnwrapRef<typeof import('@vueuse/core')['useFileSystemAccess']>
|
||||
readonly useFocus: UnwrapRef<typeof import('@vueuse/core')['useFocus']>
|
||||
readonly useFocusWithin: UnwrapRef<typeof import('@vueuse/core')['useFocusWithin']>
|
||||
readonly useFps: UnwrapRef<typeof import('@vueuse/core')['useFps']>
|
||||
readonly useFullscreen: UnwrapRef<typeof import('@vueuse/core')['useFullscreen']>
|
||||
readonly useGamepad: UnwrapRef<typeof import('@vueuse/core')['useGamepad']>
|
||||
readonly useGeolocation: UnwrapRef<typeof import('@vueuse/core')['useGeolocation']>
|
||||
readonly useHead: UnwrapRef<typeof import('@vueuse/head')['useHead']>
|
||||
readonly useI18n: UnwrapRef<typeof import('vue-i18n')['useI18n']>
|
||||
readonly useIdle: UnwrapRef<typeof import('@vueuse/core')['useIdle']>
|
||||
readonly useImage: UnwrapRef<typeof import('@vueuse/core')['useImage']>
|
||||
readonly useInfiniteScroll: UnwrapRef<typeof import('@vueuse/core')['useInfiniteScroll']>
|
||||
readonly useIntersectionObserver: UnwrapRef<typeof import('@vueuse/core')['useIntersectionObserver']>
|
||||
readonly useInterval: UnwrapRef<typeof import('@vueuse/core')['useInterval']>
|
||||
readonly useIntervalFn: UnwrapRef<typeof import('@vueuse/core')['useIntervalFn']>
|
||||
readonly useKeyModifier: UnwrapRef<typeof import('@vueuse/core')['useKeyModifier']>
|
||||
readonly useLastChanged: UnwrapRef<typeof import('@vueuse/core')['useLastChanged']>
|
||||
readonly useLink: UnwrapRef<typeof import('vue-router')['useLink']>
|
||||
readonly useLocalStorage: UnwrapRef<typeof import('@vueuse/core')['useLocalStorage']>
|
||||
readonly useMagicKeys: UnwrapRef<typeof import('@vueuse/core')['useMagicKeys']>
|
||||
readonly useManualRefHistory: UnwrapRef<typeof import('@vueuse/core')['useManualRefHistory']>
|
||||
readonly useMediaControls: UnwrapRef<typeof import('@vueuse/core')['useMediaControls']>
|
||||
readonly useMediaQuery: UnwrapRef<typeof import('@vueuse/core')['useMediaQuery']>
|
||||
readonly useMemoize: UnwrapRef<typeof import('@vueuse/core')['useMemoize']>
|
||||
readonly useMemory: UnwrapRef<typeof import('@vueuse/core')['useMemory']>
|
||||
readonly useMounted: UnwrapRef<typeof import('@vueuse/core')['useMounted']>
|
||||
readonly useMouse: UnwrapRef<typeof import('@vueuse/core')['useMouse']>
|
||||
readonly useMouseInElement: UnwrapRef<typeof import('@vueuse/core')['useMouseInElement']>
|
||||
readonly useMousePressed: UnwrapRef<typeof import('@vueuse/core')['useMousePressed']>
|
||||
readonly useMutationObserver: UnwrapRef<typeof import('@vueuse/core')['useMutationObserver']>
|
||||
readonly useNavigatorLanguage: UnwrapRef<typeof import('@vueuse/core')['useNavigatorLanguage']>
|
||||
readonly useNetwork: UnwrapRef<typeof import('@vueuse/core')['useNetwork']>
|
||||
readonly useNow: UnwrapRef<typeof import('@vueuse/core')['useNow']>
|
||||
readonly useObjectUrl: UnwrapRef<typeof import('@vueuse/core')['useObjectUrl']>
|
||||
readonly useOffsetPagination: UnwrapRef<typeof import('@vueuse/core')['useOffsetPagination']>
|
||||
readonly useOnline: UnwrapRef<typeof import('@vueuse/core')['useOnline']>
|
||||
readonly usePageLeave: UnwrapRef<typeof import('@vueuse/core')['usePageLeave']>
|
||||
readonly useParallax: UnwrapRef<typeof import('@vueuse/core')['useParallax']>
|
||||
readonly useParentElement: UnwrapRef<typeof import('@vueuse/core')['useParentElement']>
|
||||
readonly usePerformanceObserver: UnwrapRef<typeof import('@vueuse/core')['usePerformanceObserver']>
|
||||
readonly usePermission: UnwrapRef<typeof import('@vueuse/core')['usePermission']>
|
||||
readonly usePointer: UnwrapRef<typeof import('@vueuse/core')['usePointer']>
|
||||
readonly usePointerLock: UnwrapRef<typeof import('@vueuse/core')['usePointerLock']>
|
||||
readonly usePointerSwipe: UnwrapRef<typeof import('@vueuse/core')['usePointerSwipe']>
|
||||
readonly usePosts: UnwrapRef<typeof import('./composables/usePosts')['default']>
|
||||
readonly usePreferredColorScheme: UnwrapRef<typeof import('@vueuse/core')['usePreferredColorScheme']>
|
||||
readonly usePreferredContrast: UnwrapRef<typeof import('@vueuse/core')['usePreferredContrast']>
|
||||
readonly usePreferredDark: UnwrapRef<typeof import('@vueuse/core')['usePreferredDark']>
|
||||
readonly usePreferredLanguages: UnwrapRef<typeof import('@vueuse/core')['usePreferredLanguages']>
|
||||
readonly usePreferredReducedMotion: UnwrapRef<typeof import('@vueuse/core')['usePreferredReducedMotion']>
|
||||
readonly usePrevious: UnwrapRef<typeof import('@vueuse/core')['usePrevious']>
|
||||
readonly useRafFn: UnwrapRef<typeof import('@vueuse/core')['useRafFn']>
|
||||
readonly useRefHistory: UnwrapRef<typeof import('@vueuse/core')['useRefHistory']>
|
||||
readonly useResizeObserver: UnwrapRef<typeof import('@vueuse/core')['useResizeObserver']>
|
||||
readonly useRoute: UnwrapRef<typeof import('vue-router')['useRoute']>
|
||||
readonly useRouter: UnwrapRef<typeof import('vue-router')['useRouter']>
|
||||
readonly useScreenOrientation: UnwrapRef<typeof import('@vueuse/core')['useScreenOrientation']>
|
||||
readonly useScreenSafeArea: UnwrapRef<typeof import('@vueuse/core')['useScreenSafeArea']>
|
||||
readonly useScriptTag: UnwrapRef<typeof import('@vueuse/core')['useScriptTag']>
|
||||
readonly useScroll: UnwrapRef<typeof import('@vueuse/core')['useScroll']>
|
||||
readonly useScrollLock: UnwrapRef<typeof import('@vueuse/core')['useScrollLock']>
|
||||
readonly useSeoMeta: UnwrapRef<typeof import('@vueuse/head')['useSeoMeta']>
|
||||
readonly useSessionStorage: UnwrapRef<typeof import('@vueuse/core')['useSessionStorage']>
|
||||
readonly useShare: UnwrapRef<typeof import('@vueuse/core')['useShare']>
|
||||
readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
|
||||
readonly useSorted: UnwrapRef<typeof import('@vueuse/core')['useSorted']>
|
||||
readonly useSpeechRecognition: UnwrapRef<typeof import('@vueuse/core')['useSpeechRecognition']>
|
||||
readonly useSpeechSynthesis: UnwrapRef<typeof import('@vueuse/core')['useSpeechSynthesis']>
|
||||
readonly useStepper: UnwrapRef<typeof import('@vueuse/core')['useStepper']>
|
||||
readonly useStorage: UnwrapRef<typeof import('@vueuse/core')['useStorage']>
|
||||
readonly useStorageAsync: UnwrapRef<typeof import('@vueuse/core')['useStorageAsync']>
|
||||
readonly useStyleTag: UnwrapRef<typeof import('@vueuse/core')['useStyleTag']>
|
||||
readonly useSupported: UnwrapRef<typeof import('@vueuse/core')['useSupported']>
|
||||
readonly useSwipe: UnwrapRef<typeof import('@vueuse/core')['useSwipe']>
|
||||
readonly useTemplateRefsList: UnwrapRef<typeof import('@vueuse/core')['useTemplateRefsList']>
|
||||
readonly useTextDirection: UnwrapRef<typeof import('@vueuse/core')['useTextDirection']>
|
||||
readonly useTextSelection: UnwrapRef<typeof import('@vueuse/core')['useTextSelection']>
|
||||
readonly useTextareaAutosize: UnwrapRef<typeof import('@vueuse/core')['useTextareaAutosize']>
|
||||
readonly useThrottle: UnwrapRef<typeof import('@vueuse/core')['useThrottle']>
|
||||
readonly useThrottleFn: UnwrapRef<typeof import('@vueuse/core')['useThrottleFn']>
|
||||
readonly useThrottledRefHistory: UnwrapRef<typeof import('@vueuse/core')['useThrottledRefHistory']>
|
||||
readonly useTimeAgo: UnwrapRef<typeof import('@vueuse/core')['useTimeAgo']>
|
||||
readonly useTimeout: UnwrapRef<typeof import('@vueuse/core')['useTimeout']>
|
||||
readonly useTimeoutFn: UnwrapRef<typeof import('@vueuse/core')['useTimeoutFn']>
|
||||
readonly useTimeoutPoll: UnwrapRef<typeof import('@vueuse/core')['useTimeoutPoll']>
|
||||
readonly useTimestamp: UnwrapRef<typeof import('@vueuse/core')['useTimestamp']>
|
||||
readonly useTitle: UnwrapRef<typeof import('@vueuse/core')['useTitle']>
|
||||
readonly useToNumber: UnwrapRef<typeof import('@vueuse/core')['useToNumber']>
|
||||
readonly useToString: UnwrapRef<typeof import('@vueuse/core')['useToString']>
|
||||
readonly useToggle: UnwrapRef<typeof import('@vueuse/core')['useToggle']>
|
||||
readonly useTransition: UnwrapRef<typeof import('@vueuse/core')['useTransition']>
|
||||
readonly useUrlSearchParams: UnwrapRef<typeof import('@vueuse/core')['useUrlSearchParams']>
|
||||
readonly useUserMedia: UnwrapRef<typeof import('@vueuse/core')['useUserMedia']>
|
||||
readonly useVModel: UnwrapRef<typeof import('@vueuse/core')['useVModel']>
|
||||
readonly useVModels: UnwrapRef<typeof import('@vueuse/core')['useVModels']>
|
||||
readonly useVibrate: UnwrapRef<typeof import('@vueuse/core')['useVibrate']>
|
||||
readonly useVirtualList: UnwrapRef<typeof import('@vueuse/core')['useVirtualList']>
|
||||
readonly useWakeLock: UnwrapRef<typeof import('@vueuse/core')['useWakeLock']>
|
||||
readonly useWebNotification: UnwrapRef<typeof import('@vueuse/core')['useWebNotification']>
|
||||
readonly useWebSocket: UnwrapRef<typeof import('@vueuse/core')['useWebSocket']>
|
||||
readonly useWebWorker: UnwrapRef<typeof import('@vueuse/core')['useWebWorker']>
|
||||
readonly useWebWorkerFn: UnwrapRef<typeof import('@vueuse/core')['useWebWorkerFn']>
|
||||
readonly useWindowFocus: UnwrapRef<typeof import('@vueuse/core')['useWindowFocus']>
|
||||
readonly useWindowScroll: UnwrapRef<typeof import('@vueuse/core')['useWindowScroll']>
|
||||
readonly useWindowSize: UnwrapRef<typeof import('@vueuse/core')['useWindowSize']>
|
||||
readonly watch: UnwrapRef<typeof import('vue')['watch']>
|
||||
readonly watchArray: UnwrapRef<typeof import('@vueuse/core')['watchArray']>
|
||||
readonly watchAtMost: UnwrapRef<typeof import('@vueuse/core')['watchAtMost']>
|
||||
readonly watchDebounced: UnwrapRef<typeof import('@vueuse/core')['watchDebounced']>
|
||||
readonly watchDeep: UnwrapRef<typeof import('@vueuse/core')['watchDeep']>
|
||||
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']>
|
||||
readonly watchIgnorable: UnwrapRef<typeof import('@vueuse/core')['watchIgnorable']>
|
||||
readonly watchImmediate: UnwrapRef<typeof import('@vueuse/core')['watchImmediate']>
|
||||
readonly watchOnce: UnwrapRef<typeof import('@vueuse/core')['watchOnce']>
|
||||
readonly watchPausable: UnwrapRef<typeof import('@vueuse/core')['watchPausable']>
|
||||
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
|
||||
readonly watchSyncEffect: UnwrapRef<typeof import('vue')['watchSyncEffect']>
|
||||
readonly watchThrottled: UnwrapRef<typeof import('@vueuse/core')['watchThrottled']>
|
||||
readonly watchTriggerable: UnwrapRef<typeof import('@vueuse/core')['watchTriggerable']>
|
||||
readonly watchWithFilter: UnwrapRef<typeof import('@vueuse/core')['watchWithFilter']>
|
||||
readonly whenever: UnwrapRef<typeof import('@vueuse/core')['whenever']>
|
||||
}
|
||||
}
|
7
src/common/interfaces/Event.ts
Normal file
@ -0,0 +1,7 @@
|
||||
interface Event {
|
||||
time: string
|
||||
name: string
|
||||
description: string
|
||||
}
|
||||
|
||||
export { Event }
|
8
src/common/interfaces/Post.ts
Normal file
@ -0,0 +1,8 @@
|
||||
interface Post {
|
||||
path: string
|
||||
title: string
|
||||
time: string
|
||||
author: string
|
||||
}
|
||||
|
||||
export { Post }
|
7
src/common/interfaces/Teacher.ts
Normal file
@ -0,0 +1,7 @@
|
||||
interface Teacher {
|
||||
name: string
|
||||
description: string
|
||||
image: string
|
||||
}
|
||||
|
||||
export { Teacher }
|
35
src/components.d.ts
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
// @ts-nocheck
|
||||
// Generated by unplugin-vue-components
|
||||
// Read more: https://github.com/vuejs/core/pull/3399
|
||||
export {}
|
||||
|
||||
declare module 'vue' {
|
||||
export interface GlobalComponents {
|
||||
ChangeLog: typeof import('./components/ChangeLog.vue')['default']
|
||||
Nav: typeof import('./components/Nav.vue')['default']
|
||||
RouterLink: typeof import('vue-router')['RouterLink']
|
||||
RouterView: typeof import('vue-router')['RouterView']
|
||||
VAlert: typeof import('vuetify/components')['VAlert']
|
||||
VApp: typeof import('vuetify/components')['VApp']
|
||||
VAppBar: typeof import('vuetify/components')['VAppBar']
|
||||
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
||||
VBtn: typeof import('vuetify/components')['VBtn']
|
||||
VCard: typeof import('vuetify/components')['VCard']
|
||||
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
||||
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
||||
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
|
||||
VIcon: typeof import('vuetify/components')['VIcon']
|
||||
VImg: typeof import('vuetify/components')['VImg']
|
||||
VList: typeof import('vuetify/components')['VList']
|
||||
VListItem: typeof import('vuetify/components')['VListItem']
|
||||
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
|
||||
VMenu: typeof import('vuetify/components')['VMenu']
|
||||
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
||||
VSpacer: typeof import('vuetify/components')['VSpacer']
|
||||
VTimeline: typeof import('vuetify/components')['VTimeline']
|
||||
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
||||
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
|
||||
}
|
||||
}
|
42
src/components/ChangeLog.vue
Normal file
@ -0,0 +1,42 @@
|
||||
<script setup lang="ts">
|
||||
interface Commit {
|
||||
sha: string
|
||||
created: string
|
||||
html_url: string
|
||||
commit: {
|
||||
message: string
|
||||
}
|
||||
author: {
|
||||
username: string
|
||||
avatar_url: string
|
||||
}
|
||||
}
|
||||
|
||||
const { isFetching, error, data } = useFetch('https://git.thehrz.net/api/v1/repos/19yuke2-project/19yuke2/commits?stat=false&limit=3').json<Commit[]>()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<v-card>
|
||||
<VAlert
|
||||
v-if="isFetching"
|
||||
type="info"
|
||||
title="加载中"
|
||||
/>
|
||||
|
||||
<VAlert
|
||||
v-else-if="error"
|
||||
type="error"
|
||||
title="加载错误"
|
||||
text="无法加载ChangeLog,请刷新重试。"
|
||||
/>
|
||||
|
||||
<v-list v-else>
|
||||
<v-list-item
|
||||
v-for="commit in data"
|
||||
:key="commit.commit.message" :title="commit.commit.message"
|
||||
:subtitle="`${commit.sha.slice(0, 6)} ${commit.created}`"
|
||||
:href="commit.html_url"
|
||||
/>
|
||||
</v-list>
|
||||
</v-card>
|
||||
</template>
|
65
src/components/Nav.vue
Normal file
@ -0,0 +1,65 @@
|
||||
<script lang="ts" setup>
|
||||
const pages = [
|
||||
{
|
||||
title: '教师',
|
||||
page: '/teachers',
|
||||
},
|
||||
{
|
||||
title: '事件',
|
||||
page: '/events',
|
||||
},
|
||||
{
|
||||
title: '文章',
|
||||
page: '/posts',
|
||||
},
|
||||
{
|
||||
title: '友链',
|
||||
page: '/friends',
|
||||
},
|
||||
{
|
||||
title: '关于',
|
||||
page: '/about',
|
||||
},
|
||||
]
|
||||
|
||||
const { t } = useI18n()
|
||||
|
||||
const { isDark, toggleDark } = useDarkMode()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<v-app-bar app class="!static">
|
||||
<img class="mx-3 w-40px" src="/images/nav/NanYuan.svg" alt="NanYuan">
|
||||
|
||||
<router-link to="/">
|
||||
<v-toolbar-title class="font-bold">
|
||||
合肥市南园学校19预科2班
|
||||
</v-toolbar-title>
|
||||
</router-link>
|
||||
|
||||
<div class="mx-1 hidden md:block">
|
||||
<v-btn v-for="(page, index) in pages" :key="index" class="m-1" :to="page.page">
|
||||
{{ page.title }}
|
||||
</v-btn>
|
||||
</div>
|
||||
|
||||
<v-spacer />
|
||||
|
||||
<v-btn
|
||||
class="mx-2" :title="t('button.toggle_dark')" :icon="isDark() ? 'mdi-weather-night' : 'mdi-weather-sunny'"
|
||||
@click="toggleDark()"
|
||||
/>
|
||||
|
||||
<v-menu>
|
||||
<template #activator="{ props }">
|
||||
<v-app-bar-nav-icon v-bind="props" class="md:hidden!" />
|
||||
</template>
|
||||
|
||||
<v-list :lines="false" density="compact" nav>
|
||||
<v-list-item v-for="(page, index) in pages" :key="index" :value="index" :to="page.page">
|
||||
<v-list-item-title>{{ page.title }}</v-list-item-title>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
</v-app-bar>
|
||||
</template>
|
13
src/composables/useDarkMode.ts
Normal file
@ -0,0 +1,13 @@
|
||||
import { useTheme } from 'vuetify'
|
||||
|
||||
export default () => {
|
||||
const theme = useTheme()
|
||||
|
||||
const isDark = () => theme.global.current.value.dark
|
||||
|
||||
const toggleDark = () => theme.global.name.value = theme.global.current.value.dark
|
||||
? 'light'
|
||||
: 'dark'
|
||||
|
||||
return { isDark, toggleDark }
|
||||
}
|
23
src/composables/usePosts.ts
Normal file
@ -0,0 +1,23 @@
|
||||
import type { RouteMeta } from 'vue-router'
|
||||
import type { Post } from '~/common/interfaces/Post'
|
||||
|
||||
type Meta = {
|
||||
frontmatter: {
|
||||
title: string
|
||||
time: string
|
||||
author: string
|
||||
}
|
||||
} & RouteMeta
|
||||
|
||||
export default (): Post[] => {
|
||||
const router = useRouter()
|
||||
|
||||
const routes = router.getRoutes().filter((route) => {
|
||||
return route.path.startsWith('/posts/') && route.children.length
|
||||
})
|
||||
|
||||
return routes.map((route) => {
|
||||
const meta = route.meta as Meta
|
||||
return { path: route.path, ...meta.frontmatter }
|
||||
})
|
||||
}
|
18
src/layouts/404.vue
Normal file
@ -0,0 +1,18 @@
|
||||
<script setup lang="ts">
|
||||
const router = useRouter()
|
||||
const { t } = useI18n()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<main class="p-x4 p-y10 text-center">
|
||||
<div class="text-4xl">
|
||||
<div class="i-carbon-warning inline-block" />
|
||||
</div>
|
||||
<RouterView />
|
||||
<div>
|
||||
<button class="btn text-sm m-3 mt-8" @click="router.back()">
|
||||
{{ t('button.back') }}
|
||||
</button>
|
||||
</div>
|
||||
</main>
|
||||
</template>
|
13
src/layouts/default.vue
Normal file
@ -0,0 +1,13 @@
|
||||
<template>
|
||||
<v-app class="flex flex-col">
|
||||
<Nav />
|
||||
|
||||
<div>
|
||||
<router-view v-slot="{ Component }">
|
||||
<div class="prose max-w-110ch m-auto p-3">
|
||||
<component :is="Component" />
|
||||
</div>
|
||||
</router-view>
|
||||
</div>
|
||||
</v-app>
|
||||
</template>
|
7
src/layouts/index.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<v-app class="flex flex-col">
|
||||
<Nav />
|
||||
|
||||
<router-view class="prose max-w-110ch m-auto p-3" />
|
||||
</v-app>
|
||||
</template>
|
23
src/main.ts
Normal file
@ -0,0 +1,23 @@
|
||||
import { ViteSSG } from 'vite-ssg'
|
||||
import { setupLayouts } from 'virtual:generated-layouts'
|
||||
|
||||
import generatedRoutes from 'virtual:generated-pages'
|
||||
import App from './App.vue'
|
||||
import type { UserModule } from './types'
|
||||
import vuetify from './plugins/vuetify'
|
||||
|
||||
import '@unocss/reset/tailwind.css'
|
||||
import './styles/main.css'
|
||||
import 'uno.css'
|
||||
|
||||
// https://github.com/antfu/vite-ssg
|
||||
export const createApp = ViteSSG(
|
||||
App,
|
||||
{ routes: setupLayouts(generatedRoutes), base: import.meta.env.BASE_URL },
|
||||
(ctx) => {
|
||||
// install all modules under `modules/`
|
||||
Object.values(import.meta.glob<{ install: UserModule }>('./modules/*.ts', { eager: true }))
|
||||
.forEach(i => i.install?.(ctx))
|
||||
ctx.app.use(vuetify)
|
||||
},
|
||||
)
|
21
src/modules/i18n.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { createI18n } from 'vue-i18n'
|
||||
import { type UserModule } from '~/types'
|
||||
|
||||
const messages = Object.fromEntries(
|
||||
Object.entries(
|
||||
import.meta.glob<{ default: any }>('../../locales/*.y(a)?ml', { eager: true }))
|
||||
.map(([key, value]) => {
|
||||
const yaml = key.endsWith('.yaml')
|
||||
return [key.slice(14, yaml ? -5 : -4), value.default]
|
||||
}),
|
||||
)
|
||||
|
||||
export const install: UserModule = ({ app }) => {
|
||||
const i18n = createI18n({
|
||||
legacy: false,
|
||||
locale: 'zh-CN',
|
||||
messages,
|
||||
})
|
||||
|
||||
app.use(i18n)
|
||||
}
|
14
src/modules/nprogress.ts
Normal file
@ -0,0 +1,14 @@
|
||||
import NProgress from 'nprogress'
|
||||
import { type UserModule } from '~/types'
|
||||
|
||||
export const install: UserModule = ({ isClient, router }) => {
|
||||
if (isClient) {
|
||||
router.beforeEach((to, from) => {
|
||||
if (to.path !== from.path)
|
||||
NProgress.start()
|
||||
})
|
||||
router.afterEach(() => {
|
||||
NProgress.done()
|
||||
})
|
||||
}
|
||||
}
|
14
src/pages/[...all].vue
Normal file
@ -0,0 +1,14 @@
|
||||
<script setup lang="ts">
|
||||
const { t } = useI18n()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
{{ t('not-found') }}
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<route lang="yaml">
|
||||
meta:
|
||||
layout: 404
|
||||
</route>
|
59
src/pages/about.vue
Normal file
@ -0,0 +1,59 @@
|
||||
<template>
|
||||
<section class="text-center">
|
||||
<div class="i-carbon-dicom-overlay text-4xl -mb-6 m-auto" />
|
||||
<h3>关于本站</h3>
|
||||
</section>
|
||||
|
||||
<h1>基本信息</h1>
|
||||
|
||||
<section class="flex">
|
||||
<p>
|
||||
合肥市南园学校是位于安徽省合肥市包河区的一所公办九年一贯制学校,现分为南校区(初中部)、北校区(小学部)。19 预科 2 班成立于初中校区,由原小学部 2019 届五(2)班改组而成。因本站点未经 19 预科 2
|
||||
班全体师生认可,故无法代表所有 19 预科 2 班师生观点,也不与合肥市南园学校具有从属关系。<b>若您认为本站点内容 (包括但不限于字体、图片、文字等)侵犯了您的权利,您可以随时使用邮箱(<a
|
||||
href="mailto:hi@thehrz.net"
|
||||
>hi@thehrz.net</a>)联系运营者。</b>
|
||||
</p>
|
||||
|
||||
<v-img class="w-20% hidden md:flex" src="/images/about/NanYuanAll.svg" />
|
||||
</section>
|
||||
|
||||
<h1>运营信息</h1>
|
||||
|
||||
<section>
|
||||
本站点部署于 <a href="https://www.aliyun.com" target="_blank">
|
||||
<v-img class="w-10ch! inline-block" src="/images/about/aliyun.png" />
|
||||
</a>
|
||||
</section>
|
||||
|
||||
<h1>版权许可</h1>
|
||||
|
||||
<section>
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">
|
||||
<v-img class="w-15ch! mb-5" alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" />
|
||||
</a>
|
||||
|
||||
本站文学作品(<router-link to="/posts" v-text="`文章`" />)采用<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议</a>进行许可。
|
||||
</section>
|
||||
|
||||
<h1>开源许可</h1>
|
||||
|
||||
<section>
|
||||
<p>本站源代码基于MIT协议开源。</p>
|
||||
<ul>
|
||||
<li><a href="/LICENSE.txt" target="_blank" v-text="`LICENSE`" /></li>
|
||||
<li><a href="https://git.thehrz.net/19yuke2-project" target="_blank" v-text="`19yuke2-project`" /></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<h1>此站点的意义</h1>
|
||||
|
||||
<p>
|
||||
曾几何时,我天真的认为自己的记忆能够记住一切。但随着年龄的增长,我开始发现我已经记不得一些事情了,每天的学习与繁杂的琐事占用我的大量精力。
|
||||
我开始思考,未来的我,会不会将现在如此美好而又宝贵的校园记忆忘却了?“互联网是有记忆的,互联网会记住一切”我不敢保证此站点还会继续运营下去、托管商不会跑路,
|
||||
所以在我这里这句话是并不能完全成立的。人的记忆更是如此,我们的记忆很快会更迭旧事物,慢慢地,我们开始淡忘许多在现在我们见证的事物。“见证者为见证而来,铭记者因铭记而生”本站点同样因铭记而生。我想在未来的我们看来,此网站的许多事物,包括图片、文字,甚至此网站的技术都是“老掉牙的”,但是,你哪怕只有一点点的感到怀念,对于一些往事你开始有了与当年不同的感想,我相信这个站点就是有意义的。
|
||||
</p>
|
||||
|
||||
<h1>更新日志</h1>
|
||||
|
||||
<change-log class="not-prose" />
|
||||
</template>
|
29
src/pages/events.vue
Normal file
@ -0,0 +1,29 @@
|
||||
<script setup lang="ts">
|
||||
import _events from '~/assets/jsons/events.json'
|
||||
import type { Event } from '~/common/interfaces/Event'
|
||||
|
||||
const events = _events as Event[]
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<h1>事件</h1>
|
||||
|
||||
<v-timeline side="end">
|
||||
<v-timeline-item
|
||||
v-for="event, i in events"
|
||||
:key="i"
|
||||
size="small"
|
||||
>
|
||||
<section>
|
||||
<h2 class="mt--4px font-light mb-0" v-text="event.name" />
|
||||
<time
|
||||
class="pt-1 c-coolgray-400 not-prose"
|
||||
v-text="event.time"
|
||||
/>
|
||||
<p class="mt-2px">
|
||||
{{ event.description }}
|
||||
</p>
|
||||
</section>
|
||||
</v-timeline-item>
|
||||
</v-timeline>
|
||||
</template>
|