This commit is contained in:
Jursin 2025-10-28 00:09:49 +08:00
parent 59f051e5a2
commit 5720ed2999
39 changed files with 4946 additions and 7963 deletions

11
.gitattributes vendored Normal file
View File

@ -0,0 +1,11 @@
* text eol=lf
*.txt text eol=crlf
*.png binary
*.jpg binary
*.jpeg binary
*.ico binary
*.gif binary
*.tff binary
*.woff binary
*.woff2 binary

8
.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
**/node_modules
docs/.vuepress/.cache
docs/.vuepress/.temp
docs/.vuepress/dist
.DS_Store
*.log

2
.npmrc Normal file
View File

@ -0,0 +1,2 @@
shamefully-hoist=true
shell-emulator=true

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 StickyHomework2
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.

View File

@ -1,27 +1,27 @@
# sticky-homework-2
# StickyHomework-Docs
The Site is generated using [vuepress](https://vuepress.vuejs.org/) and [vuepress-theme-plume](https://github.com/pengzhanbo/vuepress-theme-plume)
这个网站使用 [vuepress](https://vuepress.vuejs.org/) 和 [vuepress-theme-plume](https://github.com/pengzhanbo/vuepress-theme-plume) 搭建
## Install
## 安装
```sh
npm i
pnpm i
```
## Usage
## 使用
```sh
# start dev server
npm run docs:dev
# build for production
npm run docs:build
# preview production build in local
npm run docs:preview
# update vuepress and theme
npm run vp-update
# 启动开发服务器
pnpm docs:dev
# 构建生产环境
pnpm docs:build
# 预览生产环境
pnpm docs:preview
# 更新 vuepress 和 theme
pnpm vp-update
```
## Documents
## 文档
- [vuepress](https://vuepress.vuejs.org/)
- [vuepress-theme-plume](https://theme-plume.vuejs.press/)

View File

@ -1,27 +0,0 @@
# sticky-homework-2
网站使用 [vuepress](https://vuepress.vuejs.org/) 和 [vuepress-theme-plume](https://github.com/pengzhanbo/vuepress-theme-plume) 构建生成。
## Install
```sh
npm i
```
## Usage
```sh
# 启动开发服务
npm run docs:dev
# 构建生产包
npm run docs:build
# 本地预览生产服务
npm run docs:preview
# 更新 vuepress 和主题
npm run vp-update
```
## 文档
- [vuepress](https://vuepress.vuejs.org/)
- [vuepress-theme-plume](https://theme-plume.vuejs.press/)

View File

@ -1,22 +1,22 @@
import { defineClientConfig } from 'vuepress/client'
import Layout from './theme/components/Layout.vue'
// import RepoCard from 'vuepress-theme-plume/features/RepoCard.vue'
// import NpmBadge from 'vuepress-theme-plume/features/NpmBadge.vue'
// import NpmBadgeGroup from 'vuepress-theme-plume/features/NpmBadgeGroup.vue'
// import Swiper from 'vuepress-theme-plume/features/Swiper.vue'
// import CustomComponent from './theme/components/Custom.vue'
// import './theme/styles/custom.css'
import './theme/styles/custom.css'
import './theme/styles/index.css'
export default defineClientConfig({
enhance({ app }) {
// enhance({ app }) {
// built-in components
// app.component('RepoCard', RepoCard)
// app.component('NpmBadge', NpmBadge)
// app.component('NpmBadgeGroup', NpmBadgeGroup)
// app.component('Swiper', Swiper) // you should install `swiper`
// your custom components
// app.component('CustomComponent', CustomComponent)
// },
layouts: {
Layout,
},
})
})

View File

@ -1,72 +1,30 @@
/**
* @see https://theme-plume.vuejs.press/guide/collection/ 查看文档了解配置详情。
*
* Collections `.vuepress/plume.config.ts`
*
* Collections vuepress vuepress
* Collections Collection Markdown permalink
*
* collection type `post`
*
*
* collection type `doc`
*
* Markdown permalink
* Collection link `collection.link`
*
*/
/* @see https://theme-plume.vuejs.press/guide/collection/ 查看文档了解配置详情。 */
/**
* IDE
*
* - `defineCollections` collection
* - `defineCollection` collection
*
* `defineCollection` collection `defineCollections`
*/
import { defineCollection, defineCollections } from 'vuepress-theme-plume'
const blog = defineCollection({
// post 类型,这里用于实现 博客功能
const Guide = defineCollection({
type: 'doc',
dir: 'guide',
linkPrefix: '/guide',
title: '指南',
sidebar: 'auto'
});
const Faq = defineCollection({
type: 'post',
// 文档集合所在目录,相对于 `docs`
dir: 'blog',
// 文档标题,它将用于在页面的面包屑导航中显示
title: 'Blog',
// 文章列表页的链接,如果 `linkPrefix` 未定义,它也将作为 相关的文章的 permalink 的前缀
link: '/blog/',
dir: 'faq',
title: '常见问题',
link: '/faq/',
// linkPrefix: '/article/', // 相关文章的链接前缀
// postList: true, // 是否启用文章列表页
// tags: true, // 是否启用标签页
// archives: true, // 是否启用归档页
archives: false, // 是否启用归档页
// categories: true, // 是否启用分类页
// postCover: 'right', // 文章封面位置
// pagination: 15, // 每页显示文章数量
})
const demoDoc = defineCollection({
// doc 类型,该类型带有侧边栏
type: 'doc',
// 文档集合所在目录,相对于 `docs`
dir: 'guide',
// `dir` 所指向的目录中的所有 markdown 文件,其 permalink 需要以 `linkPrefix` 配置作为前缀
// 如果 前缀不一致,则无法生成侧边栏。
// 所以请确保 markdown 文件的 permalink 都以 `linkPrefix` 开头
linkPrefix: '/guide',
// 文档标题,它将用于在页面的面包屑导航中显示
title: 'guide',
// 手动配置侧边栏结构
sidebar: ['', 'subject', 'tag', 'use', 'title', 'color'],
// 根据文件结构自动生成侧边栏
//sidebar: 'auto',
})
/**
* collections
* (blog )
* (demoDoc )
*/
export default defineCollection([
blog,
demoDoc,
export default defineCollections([
Guide,
Faq
])

View File

@ -1,14 +1,3 @@
/**
*
* - @see https://theme-plume.vuejs.press/config/intro/ 配置说明
* - @see https://theme-plume.vuejs.press/config/theme/ 主题配置项
*
* vuepress
* vuepress `.vuepress/config.ts`
*
*
*/
import { viteBundler } from '@vuepress/bundler-vite'
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'
@ -16,12 +5,11 @@ import { plumeTheme } from 'vuepress-theme-plume'
export default defineUserConfig({
base: '/',
lang: 'zh-CN',
title: 'StickyHomework2',
description: '一款支持富文本的桌面作业贴工具',
title: 'StickyHomeworks2',
description: '',
head: [
// 配置站点图标
['link', { rel: 'icon', type: 'image/png', href: 'https://theme-plume.vuejs.press/favicon-32x32.png' }],
['link', { rel: 'icon', type: 'image/png', href: '/logo.png' }],
],
bundler: viteBundler(),
@ -32,15 +20,17 @@ export default defineUserConfig({
// hostname: 'https://your_site_url',
/* 文档仓库配置,用于 editLink */
// docsRepo: '',
// docsDir: 'docs',
// docsBranch: '',
docsRepo: 'https://github.com/belugaQAQ/Sh2Newweb',
docsDir: 'docs',
docsBranch: 'main',
/* 页内信息 */
// editLink: true,
// lastUpdated: true,
// contributors: true,
// changelog: false,
contributors: {
mode: 'block',
},
changelog: true,
/**
*
@ -52,14 +42,16 @@ export default defineUserConfig({
* markdown frontmatter
* @see https://theme-plume.vuejs.press/config/basic/#autofrontmatter
*/
// autoFrontmatter: {
// permalink: true, // 是否生成永久链接
autoFrontmatter: {
permalink: false, // 是否生成永久链接
// createTime: true, // 是否生成创建时间
// title: true, // 是否生成标题
// },
},
/* 本地搜索, 默认启用 */
search: { provider: 'local' },
search: {
provider: 'local',
},
/**
* Algolia DocSearch
@ -70,7 +62,7 @@ export default defineUserConfig({
// provider: 'algolia',
// appId: '',
// apiKey: '',
// indices: [''],
// indexName: '',
// },
/**
@ -90,7 +82,7 @@ export default defineUserConfig({
* markdown
* @see https://theme-plume.vuejs.press/config/markdown/
*/
// markdown: {
markdown: {
// abbr: true, // 启用 abbr 语法 *[label]: content
// annotation: true, // 启用 annotation 语法 [+label]: content
// pdf: true, // 启用 PDF 嵌入 @[pdf](/xxx.pdf)
@ -100,7 +92,7 @@ export default defineUserConfig({
// youtube: true, // 启用嵌入 youtube视频 语法 @[youtube](video_id)
// artPlayer: true, // 启用嵌入 artPlayer 本地视频 语法 @[artPlayer](url)
// audioReader: true, // 启用嵌入音频朗读功能 语法 @[audioReader](url)
// icon: { provider: 'iconify' }, // 启用内置图标语法 ::icon-name::
icon: { provider: 'iconify', size: '1.5rem' },
// table: true, // 启用表格增强容器语法 ::: table
// codepen: true, // 启用嵌入 codepen 语法 @[codepen](user/slash)
// replit: true, // 启用嵌入 replit 语法 @[replit](user/repl-name)
@ -129,7 +121,7 @@ export default defineUserConfig({
// },
// include: true, // 在 Markdown 文件中导入其他 markdown 文件内容
// imageSize: 'local', // 启用 自动填充 图片宽高属性,避免页面抖动
// },
},
/**
*
@ -141,17 +133,17 @@ export default defineUserConfig({
* comments
* @see https://theme-plume.vuejs.press/guide/features/comments/
*/
// comment: {
// provider: '', // "Artalk" | "Giscus" | "Twikoo" | "Waline"
// comment: true,
// repo: '',
// repoId: '',
// category: '',
// categoryId: '',
// mapping: 'pathname',
// reactionsEnabled: true,
// inputPosition: 'top',
// },
comment: {
provider: 'Giscus', // "Artalk" | "Giscus" | "Twikoo" | "Waline"
comment: true,
repo: 'belugaQAQ/Giscus',
repoId: 'R_kgDOPmt-vA',
category: 'General',
categoryId: 'DIC_kwDOPmt-vM4CuwaX',
mapping: 'pathname',
reactionsEnabled: true,
inputPosition: 'top',
},
/**
*

View File

@ -7,12 +7,17 @@
import { defineNavbarConfig } from 'vuepress-theme-plume'
export default defineNavbarConfig([
{ text: '首页', link: '/' },
{ text: '博客', link: '/blog/' },
{ text: '标签', link: '/blog/tags/' },
{ text: '归档', link: '/blog/archives/' },
{
text: '笔记',
items: [{ text: '示例', link: '/guide/README.md' }]
text: '指南',
icon: 'mi:book',
items: [
{ text: '欢迎', icon: 'ion:hardware-chip-outline', link: '/guide/' },
],
},
{
text: '常见问题',
icon: 'mingcute:question-line',
link: '/faq/',
},
{ text: '友链', icon: 'ic:round-people', link: '/friends' },
])

View File

@ -1,31 +1,23 @@
/**
*
* - @see https://theme-plume.vuejs.press/config/intro/ 配置说明
* - @see https://theme-plume.vuejs.press/config/theme/ 主题配置项
*
* vuepress
*
* `.vuepress/config.ts`
*
* `.vuepress/config.ts`
*/
import { defineThemeConfig } from 'vuepress-theme-plume'
import navbar from './navbar'
import collections from './collections'
/**
* @see https://theme-plume.vuejs.press/config/basic/
*/
export default defineThemeConfig({
logo: 'https://theme-plume.vuejs.press/plume.png',
logo: '/logo.png',
appearance: true, // 配置 深色模式
appearance: true,
social: [
{ icon: 'github', link: '/' },
{ icon: 'github', link: 'https://github.com/belugaQAQ/Sh2Newweb' },
{
icon: {
svg: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none"><path d="M12.593 23.258l-.011.002-.071.035-.02.004-.014-.004-.071-.035q-.016-.005-.024.005l-.004.01-.017.428.005.02.01.013.104.074.015.004.012-.004.104-.074.012-.016.004-.017-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002-.185.093-.01.01-.003.011.018.43.005.012.008.007.201.093q.019.005.029-.008l.004-.014-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014-.034.614q.001.018.017.024l.015-.002.201-.093.01-.008.004-.011.017-.43-.003-.012-.01-.01z"/><path fill="currentColor" d="M15.08 4.21s-.71-.4-1.4-.2L2.32 7.23 5.34 1.84s.44-.88 2.15-.84l9.49.02-1.82 3.24-.08-.05Zm3.76-2.18l-1.93 3.44s.48.45.62.97l1.69 6.6-6.52 2.02 2.35-3.83-.73-2.89s-.38-1.14-1.5-1.01c-.02 0-.04 0-.05 0-1.16.18-11.89 3.23-11.89 3.23 0 0-.84.24-.88 1.1 0 0-.02.93.53 1.78l4.76 8.35 1.75-3.12s-.55-.51-.61-.77l-1.92-7.01 6.45-1.88s.35-.18.49.13l-2.81 3.6.96 3.22s.42.71 1.4.71l12.39-3.47s.82-.16.59-1.43c0 0 .04-.47-.35-1.25l-4.77-8.51Z"/><path fill="var(--icon-secondary, currentColor)" d="M8.7 19.69s.66.29 1.09.27l11.97-3.36-2.75 4.9s-.67 1.37-2.26 1.37l-9.9.14 1.85-3.31Z"/></g></svg>',
name: 'STCN'
},
link: 'https://forum.smart-teach.cn/t/stickyhomework2'
},
],
// navbarSocialInclude: ['github'], // 允许显示在导航栏的 social 社交链接
navbarSocialInclude: ['github', 'STCN'],
// aside: true, // 页内侧边栏, 默认显示在右侧
// outline: [2, 3], // 页内大纲, 默认显示 h2, h3
@ -39,22 +31,9 @@ export default defineThemeConfig({
// nextPage: true, // 是否启用下一页链接
// createTime: true, // 是否显示文章创建时间
/* 站点页脚 */
// footer: {
// message: 'Power by <a target="_blank" href="https://v2.vuepress.vuejs.org/">VuePress</a> & <a target="_blank" href="https://theme-plume.vuejs.press">vuepress-theme-plume</a>',
// copyright: '',
// },
/**
* @see https://theme-plume.vuejs.press/config/basic/#profile
*/
profile: {
avatar: 'https://theme-plume.vuejs.press/plume.png',
name: 'StickyHomework2',
description: '一款支持富文本的桌面作业贴工具',
// circle: true,
// location: '',
// organization: '',
footer: {
message: '由 <a target="_blank" href="https://v2.vuepress.vuejs.org/">VuePress</a> & <a target="_blank" href="https://theme-plume.vuejs.press">vuepress-theme-plume</a> 搭建',
copyright: 'MIT 许可协议 | Copyright © 2025 StickyHomeworks',
},
navbar,

View File

Before

Width:  |  Height:  |  Size: 376 KiB

After

Width:  |  Height:  |  Size: 376 KiB

View File

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View File

@ -1,8 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 72 72">
<path fill="#5086a1" d="M42.334 49.147a29.945 29.945 0 0 1-19.338-8.151c-8.014-7.365-8.378-18.076-8.533-22.649l-.022-.627a2.904 2.904 0 0 1 3.457-2.951c17.005 3.355 21.695 16.324 22.056 17.4a49.543 49.543 0 0 1 3.574 15.922a1 1 0 0 1-.967 1.052c-.029.001-.106.004-.227.004" />
<path fill="#8cccd5" d="M44.436 55.316c-11.646 0-17.376-6.974-17.653-7.354a1 1 0 0 1 .262-1.424a11.103 11.103 0 0 1 12.774-1.574c-1.465-9.078 1.877-13.568 2.031-13.77a.998.998 0 0 1 .75-.39a.97.97 0 0 1 .78.325c8.944 9.771 8.793 16.532 7.908 19.691c-.034.14-1.062 4.092-4.772 4.406c-.711.062-1.405.09-2.08.09" />
<g fill="none" stroke="#333" stroke-linecap="round" stroke-linejoin="round" stroke-width="1">
<path d="M55.184 57.69S34.96 45.877 23.097 24.206m22.131 30.096c-11.93.46-17.628-6.88-17.628-6.88" />
<path d="M40.528 42.483c-.56-7.195 2.116-10.679 2.116-10.679c8.834 9.654 8.406 16.162 7.681 18.747m-13.311-3.129a30.15 30.15 0 0 1-13.341-7.162c-8.072-7.419-8.067-18.241-8.232-22.577a1.903 1.903 0 0 1 2.264-1.932C34.694 19.103 39.02 32.528 39.02 32.528" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 MiB

After

Width:  |  Height:  |  Size: 2.5 MiB

View File

@ -0,0 +1,96 @@
<script setup lang="ts">
import { computed } from 'vue'
import { VPLink } from 'vuepress-theme-plume/client'
import { useRouteLocale, useRoute } from 'vuepress/client'
interface Locale {
star: string
issue: string
share: string
copied: string
}
const locales: Record<string, Locale> = {
'/': {
star: '在 GitHub 上 Star',
issue: '遇到问题?',
share: '分享此页面',
copied: '链接已复制!'
},
}
const lang = useRouteLocale()
const route = useRoute()
const locale = computed(() => locales[lang.value])
const copyPageLink = () => {
const url = window.location.origin + route.path
navigator.clipboard.writeText(url)
.then(() => {
alert(locale.value.copied)
})
.catch(err => {
console.error('复制失败:', err)
})
}
</script>
<template>
<div class="aside-nav-wrapper">
<VPLink class="link" no-icon href="https://github.com/Jursin/EEC-Manual">
<span class="vpi-github-star" />
<span class="link-text">{{ locale.star }}</span>
<span class="vpi-arrow-right" />
</VPLink>
<VPLink class="link" no-icon href="https://github.com/Jursin/EEC-Manual/issues/new/choose">
<span class="vpi-github-issue" />
<span class="link-text">{{ locale.issue }}</span>
<span class="vpi-arrow-right" />
</VPLink>
<a class="link" href="#" @click.prevent="copyPageLink">
<span class="vpi-share" />
<span class="link-text">{{ locale.share }}</span>
<span class="vpi-arrow-right" />
</a>
</div>
</template>
<style scoped>
.aside-nav-wrapper {
display: flex;
flex-direction: column;
padding: 8px 0;
margin: 16px 16px 0;
border-top: solid 1px var(--vp-c-divider);
}
.aside-nav-wrapper .link {
display: flex;
gap: 8px;
align-items: center;
font-size: 14px;
color: var(--vp-c-text-2);
transition: color var(--vp-t-color);
}
.aside-nav-wrapper .link:hover {
color: var(--vp-c-brand-1);
}
.aside-nav-wrapper .link .link-text {
flex: 1 2;
font-size: 12px;
}
.vpi-github-star {
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m12 1.5l3.1 6.3l6.9 1l-5 4.8l1.2 6.9l-6.2-3.2l-6.2 3.2L7 13.6L2 8.8l6.9-1z'/%3E%3C/svg%3E");
}
.vpi-github-issue {
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%23000' d='M8 9.5a1.5 1.5 0 1 0 0-3a1.5 1.5 0 0 0 0 3'/%3E%3Cpath fill='%23000' d='M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0M1.5 8a6.5 6.5 0 1 0 13 0a6.5 6.5 0 0 0-13 0'/%3E%3C/svg%3E");
}
.vpi-share {
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%23000' d='M13 2a1 1 0 1 0 0 2a1 1 0 0 0 0-2m-3 1a3 3 0 1 1 .917 2.16l-4.94 2.47a3 3 0 0 1 0 .74l4.94 2.47a3 3 0 1 1-.895 1.789l-4.94-2.47a3 3 0 1 1 0-4.319l4.94-2.47A3 3 0 0 1 10 3M3 7a1 1 0 1 0 0 2a1 1 0 0 0 0-2m10 5a1 1 0 1 0 0 2a1 1 0 0 0 0-2'/%3E%3C/svg%3E");
}
</style>

View File

@ -1,11 +0,0 @@
<script setup lang="ts">
import { ref } from 'vue'
const message = ref('Hello World!')
</script>
<template>
<div class="my-custom-content">
{{ message }}
</div>
</template>

View File

@ -0,0 +1,15 @@
<script setup>
import { Layout } from 'vuepress-theme-plume/client'
import AsideNav from './AsideNav.vue'
</script>
<template>
<Layout>
<template #aside-outline-after>
<AsideNav />
</template>
</Layout>
</template>
<style>
</style>

View File

@ -1,13 +1,4 @@
:root
{
--vp-home-hero-name-color: transparent;
--vp-home-hero-name-background: linear-gradient(120deg, var(--vp-c-purple-1) 30%, var(--vp-c-brand-2));
--vp-home-hero-tagline: var(--vp-c-text-2);
--vp-home-hero-text: var(--vp-c-text-1);
--vp-home-hero-image-background-image: linear-gradient(-45deg, var(--vp-c-brand-soft) 50%, var(--vp-c-brand-2) 50%);
--vp-home-hero-image-filter: blur(44px);
--vp-image-height: 326px;
--vp-image-width: 580px;
:root {
/** 主题颜色 */
/*
@ -33,10 +24,16 @@
--vp-c-text-2: rgba(60, 60, 67, 0.78);
--vp-c-text-3: rgba(60, 60, 67, 0.56);
*/
--vp-home-hero-name-color: transparent;
--vp-home-hero-name-background: linear-gradient(120deg, var(--vp-c-purple-1) 30%, var(--vp-c-brand-2));
--vp-home-hero-tagline: var(--vp-c-text-2);
--vp-home-hero-text: var(--vp-c-text-1);
--vp-home-hero-image-background-image: linear-gradient(-45deg, var(--vp-c-brand-soft) 50%, var(--vp-c-brand-2) 50%);
--vp-home-hero-image-filter: blur(44px);
}
/** 深色模式 */
[data-theme="dark"] {
/* [data-theme="dark"] { */
/*
--vp-c-brand-1: #8cccd5;
--vp-c-brand-2: #6aa1b7;
@ -56,4 +53,52 @@
--vp-c-text-2: rgba(235, 235, 245, 0.6);
--vp-c-text-3: rgba(235, 235, 245, 0.38);
*/
/* } */
/* home hero image */
.image {
margin-top: 60px !important;
}
/* home features */
.item {
transition: transform 0.3s;
}
.item:hover {
transform: translateY(-5px);
}
/* faq */
.posts-container.no-profile {
max-width: 1400px !important;
}
.vp-posts-nav.local .nav-link {
max-width: 175px !important;
}
/* friends */
.vp-friends {
max-width: 1400px !important;
}
.friends-list {
grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
}
.avatar {
width: auto;
height: auto;
padding: 8px;
border-radius: 8px !important;
display: flex;
align-items: center;
justify-content: center;
}
.avatar img {
max-width: 100%;
max-height: 100%;
object-fit: contain !important;
}

View File

@ -0,0 +1,11 @@
:root {
--vp-layout-max-width: 1660px;
}
.content-container {
margin: 0 !important;
}
.vp-doc-container.has-aside .content-container {
max-width: 1000px !important;
}

View File

@ -1,10 +0,0 @@
---
title: 自定义组件
tags:
- 预览
- 组件
createTime: 2025/10/26 21:43:33
permalink: /blog/6yiy84ti/
---
<CustomComponent />

View File

@ -1,410 +0,0 @@
---
title: Markdown
tags:
- markdown
createTime: 2025/10/26 21:43:33
permalink: /blog/4l7fs9yx/
---
## 标题H2
### 标题H3
#### 标题H4
##### 标题H5
###### 标题H6
## 标题2 Badge <Badge type="tip" text="Badge" />
### 标题3 Badge <Badge type="warning" text="Badge" />
#### 标题4 Badge <Badge type="danger" text="Badge" />
正文内容。
`@property` CSS at-rule是 [CSS Houdini API](https://developer.mozilla.org/zh-CN/docs/Web/Guide/Houdini)
的一部分,它允许开发者显式地定义他们的 [CSS 自定义属性](https://developer.mozilla.org/zh-CN/docs/Web/CSS/--*),
允许进行属性类型检查、设定默认值以及定义该自定义属性是否可以被继承。
`@property` 的出现,极大的增强了 CSS 的能力。
加粗:**加粗文字**
斜体: _斜体文字_
~~删除文字~~
内容 ==标记==
数学表达式: $-(2^{n-1})$ ~ $2^{n-1} -1$
$\frac {\partial^r} {\partial \omega^r} \left(\frac {y^{\omega}} {\omega}\right)
= \left(\frac {y^{\omega}} {\omega}\right) \left\{(\log y)^r + \sum_{i=1}^r \frac {(-1)^ Ir \cdots (r-i+1) (\log y)^{ri}} {\omega^i} \right\}$
19^th^
H~2~O
::: center
内容居中
:::
::: right
内容右对齐
:::
- 无序列表1
- 无序列表2
- 无序列表3
1. 有序列表1
2. 有序列表2
3. 有序列表3
- [ ] 任务列表1
- [ ] 任务列表2
- [x] 任务列表3
- [x] 任务列表4
| Tables | Are | Cool |
| ------------- |:-------------:| -----:|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
> 引用内容
>
> 引用内容
[链接](/)
[外部链接](https://github.com/pengzhanbo)
![plume](/plume.svg)
**Badge**
- <Badge type="info" text="info badge" />
- <Badge type="tip" text="tip badge" />
- <Badge type="warning" text="warning badge" />
- <Badge type="danger" text="danger badge" />
**图标:**
- home - <Icon name="material-symbols:home" color="currentColor" size="1em" />
- vscode - <Icon name="skill-icons:vscode-dark" size="2em" />
- twitter - <Icon name="skill-icons:twitter" size="2em" />
**demo wrapper**
::: demo-wrapper title="示例" no-padding height="200px"
<style scoped>
.open-door {
display: flex;
gap: 20px;
padding: 20px;
}
.open-door .main {
background: #ccc;
}
</style>
<div class="open-door">
<div class="main">main</div>
<div class="aside">aside</div>
</div>
:::
**代码:**
```js whitespace
const a = 1
const b = 2
const c = a + b
// [!code word:obj]
const obj = {
toLong: {
deep: {
deep: {
deep: {
value: 'this is to long text. this is to long text. this is to long text. this is to long text.', // [!code highlight]
}
}
}
}
}
```
**Code Blocks TwoSlash**
```ts twoslash
// @errors: 2339
const welcome = 'Tudo bem gente?'
const words = welcome.contains(' ')
```
```ts twoslash
import express from 'express'
const app = express()
app.get('/', (req, res) => {
res.send
})
app.listen(3000)
```
```ts twoslash
import { createHighlighter } from 'shiki'
const highlighter = await createHighlighter({ themes: ['nord'], langs: ['javascript'] })
// @log: Custom log message
const a = 1
// @error: Custom error message
const b = 1
// @warn: Custom warning message
const c = 1
// @annotate: Custom annotation message
```
```ts twoslash
// @errors: 2540
interface Todo {
title: string
}
const todo: Readonly<Todo> = {
title: 'Delete inactive users'.toUpperCase(),
// ^?
}
todo.title = 'Hello'
Number.parseInt('123', 10)
// ^|
//
//
```
```vue twoslash
<script setup lang="ts">
import { ref } from 'vue'
const count = ref(0)
</script>
<template>
<p>{{ count }}</p>
</template>
```
**代码分组:**
::: code-tabs
@tab tab1
```js
const a = 1
const b = 2
const c = a + b
```
@tab tab2
```ts
const a: number = 1
const b: number = 2
const c: number = a + b
```
:::
**代码块高亮:**
```ts
function foo() {
const a = 1 // [!code highlight]
console.log(a)
const b = 2 // [!code ++]
const c = 3 // [!code --]
console.log(a + b + c) // [!code error]
console.log(a + b) // [!code warning]
}
```
**代码块聚焦:**
```ts
function foo() {
const a = 1 // [!code focus]
}
```
::: tip 仅标题
:::
::: note 注释
注释内容 [link](https://github.com/pengzhanbo) `inline code`
```js
const a = 1
const b = 2
const c = a + b
```
:::
::: info 信息
信息内容 [link](https://github.com/pengzhanbo) `inline code`
```js
const a = 1
const b = 2
const c = a + b
```
:::
::: tip 提示
提示内容 [link](https://github.com/pengzhanbo) `inline code`
```js
const a = 1
const b = 2
const c = a + b
```
:::
::: warning 警告
警告内容 [link](https://github.com/pengzhanbo) `inline code`
```js
const a = 1
const b = 2
const c = a + b
```
:::
::: caution 错误
错误内容 [link](https://github.com/pengzhanbo) `inline code`
```js
const a = 1
const b = 2
const c = a + b
```
:::
::: important 重要
重要内容 [link](https://github.com/pengzhanbo) `inline code`
```js
const a = 1
const b = 2
const c = a + b
```
:::
::: details 详细标题
这里是内容。
:::
**GFM alert**
> [!note]
> note
> [!info]
> info
> [!tip]
> tip
> [!warning]
> warning
> [!caution]
> caution
> [!important]
> important
**代码演示:**
:::: demo title="常规示例" desc="一个常规示例"
::: code-tabs
@tab HTML
```html
<div id="app">
<h3>vuepress-theme-plume</h3>
</div>
```
@tab Javascript
```js
const a = 'So Awesome!'
const app = document.querySelector('#app')
app.appendChild(window.document.createElement('small')).textContent = a
```
@tab CSS
```css
#app {
font-size: 2em;
text-align: center;
}
```
:::
::::
**选项卡:**
::: tabs
@tab 标题1
内容区块
@tab 标题2
内容区块
:::
:::: warning
::: tabs
@tab 标题1
内容区块
@tab 标题2
内容区块
:::
::::
**脚注:**
脚注 1 链接[^first]。
脚注 2 链接[^second]。
行内的脚注^[行内脚注文本] 定义。
重复的页脚定义[^second]。
[^first]: 脚注 **可以包含特殊标记**
也可以由多个段落组成
[^second]: 脚注文字。

View File

@ -1,8 +0,0 @@
---
title: Demo
createTime: 2025/10/26 21:43:33
permalink: /demo/
---
- [bar](./bar.md)
- [foo](./foo.md)

View File

@ -1,7 +0,0 @@
---
title: bar
createTime: 2025/10/26 21:43:33
permalink: /demo/arh1gv46/
---
[foo](./foo.md)

View File

@ -1,7 +0,0 @@
---
title: foo
createTime: 2025/10/26 21:43:33
permalink: /demo/detb1ivi/
---
[bar](./bar.md)

9
docs/faq/help-github.md Normal file
View File

@ -0,0 +1,9 @@
---
title: help-github
createTime: 2025/10/27 23:29:03
---
## 如果你有WPF能力的话
## 欢迎在Github提交代码
### https://github.com/zji573432-cpu/StickyHomeworks2

View File

@ -1,11 +1,7 @@
---
title: 提交issues
icon: ic:twotone-bug-report
author: ClassisBand
isOriginal: true
date: 2025-08-30
title: issues
createTime: 2025/10/27 23:29:03
---
## 如果你在使用过程中发现了一些Bug
## 放心,那不是特性

20
docs/friends.md Normal file
View File

@ -0,0 +1,20 @@
---
pageLayout: friends
title: 友情链接
list:
-
name: 智教联盟论坛
link: https://forum.smart-teach.cn/
avatar: https://static.smart-teach.cn/logos/full.jpg
desc: 全国最大的电教委交流社区
-
name: Awesome-Iwb
link: https://github.com/awesome-iwb/awesome-iwb
avatar: https://github.com/awesome-iwb/awesome-iwb/blob/master/images/aiwb-300w.png?raw=true
desc: 为广大电教倾情撰写,让班级大屏更好用!
-
name: Awesome-Class-Softwares
link: https://github.com/Jursin/Awesome-Class-Softwares
avatar: https://nav.jursin.top/acs.png
desc: 适用于班级一体机的优质软件合集🌟
---

View File

@ -1,16 +1,10 @@
---
title: 外观设置
icon: ic:twotone-color-lens
author: ClassisBand
isOriginal: true
date: 2025-08-30T00:00:00.000Z
createTime: 2025/10/26 23:24:40
permalink: /guide/m9i0taaq/
title: color
createTime: 2025/10/27 23:28:52
---
## 基本
### 界面缩放
### 界面缩放
当主界面文本过大或过小时,可以调节该设置
@ -18,7 +12,7 @@ permalink: /guide/m9i0taaq/
<br>
### 背景不透明度
### 背景不透明度
该设置用于在壁纸遮挡的情况下,调节该设置可以浅露壁纸
@ -30,14 +24,14 @@ permalink: /guide/m9i0taaq/
## 主题
### 应用主题
### 应用主题
该设置用于调节深浅模式
可以根据喜好调节
<br>
### 主题色来源
### 主题色来源
调整该设置将改变以下主题色设置

View File

@ -1,13 +1,7 @@
---
title: 你好!
icon: ic:twotone-waving-hand
author: ClassisBand
isOriginal: true
date: 2025-08-30T00:00:00.000Z
createTime: 2025/10/26 23:24:40
permalink: /guide/
title: 欢迎
createTime: 2025/10/27 23:28:52
---
### 欢迎来到StickyHomework2文档页面
::: important

View File

@ -1,13 +1,7 @@
---
title: 科目
icon: ic:twotone-bookmark
author: ClassisBand
isOriginal: true
date: 2025-08-30T00:00:00.000Z
createTime: 2025/10/26 23:24:40
permalink: /guide/j3xsucyk/
title: subject
createTime: 2025/10/27 23:28:52
---
::: info 科目是使用Sh2的第一步它将用分类作业
:::

View File

@ -1,13 +1,7 @@
---
title: 标签
icon: ic:twotone-discount
author: ClassisBand
isOriginal: true
date: 2025-08-30T00:00:00.000Z
createTime: 2025/10/26 23:24:40
permalink: /guide/f1f1krbk/
title: tag
createTime: 2025/10/27 23:28:52
---
### 添加标签
你可以在 **应用设置/标签** 中找到它

View File

@ -1,13 +1,7 @@
---
title: 基本设置
icon: ic:twotone-video-label
author: ClassisBand
isOriginal: true
date: 2025-08-30T00:00:00.000Z
createTime: 2025/10/26 23:24:40
permalink: /guide/bottlptf/
title: title
createTime: 2025/10/27 23:28:52
---
### 开机自启
开机后自动启动

View File

@ -1,13 +1,7 @@
---
title: 添加作业
icon: ic:twotone-feed
author: ClassisBand
isOriginal: true
date: 2025-08-30T00:00:00.000Z
createTime: 2025/10/26 23:24:40
permalink: /guide/2jbrbocg/
title: use
createTime: 2025/10/27 23:28:52
---
## 添加作业
::: important 关键功能,若有问题先仔细看一遍!!!

View File

@ -1,13 +0,0 @@
---
title: 通过代码帮助
icon: ic:round-code
author: ClassisBand
isOriginal: true
date: 2025-08-30
---
## 如果你有WPF能力的话
## 欢迎在Github提交代码
### https://github.com/zji573432-cpu/StickyHomeworks2

View File

@ -1,48 +1,40 @@
---
home: true
config:
-
type: doc-hero
- type: doc-hero
background: tint-plate
hero:
name: StickyHomeworks2
text: 你的下一款作业贴软件
tagline: 专为电教委与老师设计的桌面端富文本作业管理工具<br>让作业记录更清晰·学习更有条理
image: /stickyhomeworks2-icon256.png
image: /logo.png
actions:
-
theme: brand
text: 查看文档 →
- theme: brand
text: 开始阅读
icon: lucide:list-start
link: /guide/
-
theme: alt
- theme: alt
text: Github
icon: fa-brands:github
link: https://github.com/zji573432-cpu/StickyHomeworks2
-
type: image-text
- type: image-text
title: 丰富全面的功能
image: /sh.png
image: /preview.png
width: 590px
list:
-
title: 📝​富文本编辑​
- title: 📝​富文本编辑​
description: 像写Markdown一样记录作业详情美观优雅
-
title: 📚​科目分组
- title: 📚​科目分组
description: 按学科整理作业,井井有条不混乱
-
title: 🏷️​智能标签
- title: 🏷️​智能标签
description: 为作业添加标签,精准筛选,快速定位
-
title: 🗂️​自动清理
- title: 🗂️​自动清理
description: 过期作业自动提醒或清理,界面更清爽
-
title: 🖼️​导出截图
- title: 🖼️​导出截图
description: 一键导出作业内容为图片,分享或打印超方便
-
title: 🔍全局缩放
- title: 🔍全局缩放
description: 界面大小随心调,看清每一个细节
-
type: features
- type: features
features:
- title: 开机自启
icon: ic:round-restart-alt
@ -91,28 +83,17 @@ config:
- title: 更新
icon: icon-park-twotone:update-rotation
details: 有了更新妈妈再也不怕我的Github上不去了
-
type: text-image
- type: text-image
title: “独一无二” 的自定义功能
image: /sh.png
image: /preview.png
width: 590px
list:
-
title: 深色模式​
- title: 深色模式​
description: 切换深浅色背景与字色,护眼又美观
-
title: 主题色切换
- title: 主题色切换
description: 让你的作业贴多姿多彩
-
title: 背景不透明度
- title: 背景不透明度
description: 既不遮挡信息,又能凸显你的壁纸
-
title: 更多
- title: 更多
description: 仍有更多的设置等着你去发现
-
type: 'custom'
---
![](/wrc.png) **HelloWRC**
~~软件作者,写代码巨水~~(划掉)

7179
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,25 +1,33 @@
{
"name": "sticky-homework-2",
"name": "stickyhomeworks-docs",
"type": "module",
"version": "1.0.0",
"description": "一款支持富文本的桌面作业贴工具",
"description": "",
"packageManager": "pnpm@10.18.3",
"pnpm": {
"onlyBuiltDependencies": [
"@parcel/watcher",
"esbuild"
]
},
"author": "Jursin <jursin@126.com>",
"license": "MIT",
"engines": {
"node": "^20.6.0 || >=22.0.0"
},
"scripts": {
"docs:build": "vuepress build docs --clean-cache --clean-temp",
"docs:dev": "vuepress dev docs",
"docs:dev-clean": "vuepress dev docs --clean-cache --clean-temp",
"docs:build": "vuepress build docs --clean-cache --clean-temp",
"docs:preview": "http-server docs/.vuepress/dist",
"vp-update": "npx vp-update"
"vp-update": "pnpm dlx vp-update"
},
"devDependencies": {
"@vuepress/bundler-vite": "2.0.0-rc.26",
"@vuepress/bundler-vite": "2.0.0-rc.24",
"http-server": "^14.1.1",
"typescript": "^5.9.3",
"vue": "^3.5.22",
"vuepress": "2.0.0-rc.26",
"vuepress-theme-plume": "1.0.0-rc.174"
},
"engines": {
"node": "^20.6.0 || >=22.0.0"
"vuepress": "2.0.0-rc.24",
"vuepress-theme-plume": "1.0.0-rc.170"
}
}
}

4542
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff