diff options
| author | Sho Sakuma <me@m1sk9.dev> | 2026-04-05 01:45:01 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-05 01:45:01 +0900 |
| commit | 579ca7f5bf01187e1f758cadfb4eda652fd5a4c3 (patch) | |
| tree | c008f240e02aa828ad47728e671232e687f4b911 /docs/.vitepress | |
| parent | bd92ba60d39b4956a580cc56b83ecf55dd348aea (diff) | |
| parent | 9146547efae71efa1d67a48e20ae4271785847e9 (diff) | |
| download | LunaticChat-1.0.0.tar.gz LunaticChat-1.0.0.tar.bz2 LunaticChat-1.0.0.zip | |
Merge pull request #167 from m1sk9/docs/Update-v1-docsv1.0.0
docs: Update v1 Document
Diffstat (limited to 'docs/.vitepress')
| -rw-r--r-- | docs/.vitepress/config.mts | 39 | ||||
| -rw-r--r-- | docs/.vitepress/config/en.ts | 136 | ||||
| -rw-r--r-- | docs/.vitepress/config/ja.ts | 128 | ||||
| -rw-r--r-- | docs/.vitepress/public/favicon.ico | bin | 4286 -> 0 bytes | |||
| -rw-r--r-- | docs/.vitepress/public/icon.png | bin | 122601 -> 0 bytes | |||
| -rw-r--r-- | docs/.vitepress/theme/Layout.vue | 14 | ||||
| -rw-r--r-- | docs/.vitepress/theme/VersionBanner.vue | 72 | ||||
| -rw-r--r-- | docs/.vitepress/theme/VersionSwitcher.vue | 251 | ||||
| -rw-r--r-- | docs/.vitepress/theme/custom.css | 21 | ||||
| -rw-r--r-- | docs/.vitepress/theme/index.ts | 12 |
10 files changed, 0 insertions, 673 deletions
diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts deleted file mode 100644 index a9c733a..0000000 --- a/docs/.vitepress/config.mts +++ /dev/null @@ -1,39 +0,0 @@ -import { defineVersionedConfig } from '@viteplus/versions'; -import { en } from './config/en'; -import { ja } from './config/ja'; - -export default defineVersionedConfig({ - cleanUrls: true, - description: 'Next-generation channel chat plugin for Paper/Velocity', - head: [['link', { href: '/favicon.ico', rel: 'icon' }]], - locales: { - en: { - label: 'English', - lang: 'en-US', - link: '/en/', - themeConfig: en, - }, - root: { - label: '日本語', - lang: 'ja-JP', - themeConfig: ja, - }, - }, - outDir: './dist', - themeConfig: { - socialLinks: [ - { icon: 'github', link: 'https://github.com/m1sk9/LunaticChat' }, - ], - }, - title: 'LunaticChat Docs', - titleTemplate: 'LunaticChat', - versionsConfig: { - current: 'v0 (1.21.x) - Latest', - sources: 'src', - archive: 'archive', - versionSwitcher: false, - }, - vite: { - publicDir: '.vitepress/public', - }, -}); diff --git a/docs/.vitepress/config/en.ts b/docs/.vitepress/config/en.ts deleted file mode 100644 index e528413..0000000 --- a/docs/.vitepress/config/en.ts +++ /dev/null @@ -1,136 +0,0 @@ -import type { DefaultTheme } from 'vitepress'; - -export const en: DefaultTheme.Config = { - editLink: { - pattern: 'https://github.com/m1sk9/LunaticChat/edit/main/docs/src/:path', - text: 'Edit this page on GitHub', - }, - footer: { - copyright: 'Copyright © 2026 m1sk9', - }, - nav: [ - { link: '/en/player-guide/getting-started', text: 'Player Guide' }, - { link: '/en/admin-guide/getting-started', text: 'Admin Guide' }, - { component: 'VersionSwitcher' }, - ], - sidebar: { - '/en/admin-guide/': [ - { - link: '/en/admin-guide/getting-started', - text: 'Getting Started', - }, - { - link: '/en/admin-guide/configuration', - text: 'Configuration', - }, - { - link: '/en/admin-guide/permissions', - text: 'Permissions', - }, - { - items: [ - { - link: '/en/admin-guide/channel-chat/introduction', - text: 'Deployment Guide', - }, - { - link: '/en/admin-guide/channel-chat/logs', - text: 'Logs', - }, - ], - text: 'Channel Chat', - }, - { - link: '/en/admin-guide/velocity', - text: 'Velocity Integration', - }, - { - link: '/en/admin-guide/cache', - text: 'Cache System', - }, - { - link: '/en/admin-guide/management-data', - text: 'Data Management', - }, - ], - '/en/player-guide/': [ - { - link: '/en/player-guide/getting-started', - text: 'Getting Started', - }, - { - link: '/en/player-guide/about', - text: 'About LunaticChat', - }, - { - items: [ - { - link: '/en/player-guide/channel-chat/private-channel', - text: 'Private Channel', - }, - { - link: '/en/player-guide/channel-chat/moderation', - text: 'Moderation', - }, - ], - link: '/en/player-guide/channel-chat/about', - text: 'Channel Chat', - }, - { - link: '/en/player-guide/direct-message', - text: 'Direct Messages', - }, - { - link: '/en/player-guide/japanese-romanization', - text: 'Romanization Conversion', - }, - { - items: [ - { - link: '/en/player-guide/commands/tell', - text: '/tell', - }, - { - link: '/en/player-guide/commands/reply', - text: '/reply', - }, - { - link: '/en/player-guide/commands/jp', - text: '/jp', - }, - { - link: '/en/player-guide/commands/notice', - text: '/notice', - }, - { - items: [ - { - link: '/en/player-guide/commands/lc/settings', - text: '/lc settings', - }, - { - link: '/en/player-guide/commands/lc/status', - text: '/lc status', - }, - { - link: '/en/player-guide/commands/lc/channel', - text: '/lc channel', - }, - ], - text: '/lc', - }, - { - items: [ - { - link: '/en/player-guide/commands/lcv/status', - text: '/lcv status', - }, - ], - text: '/lcv', - }, - ], - text: 'Commands', - }, - ], - }, -}; diff --git a/docs/.vitepress/config/ja.ts b/docs/.vitepress/config/ja.ts deleted file mode 100644 index 9b17835..0000000 --- a/docs/.vitepress/config/ja.ts +++ /dev/null @@ -1,128 +0,0 @@ -import type { DefaultTheme } from 'vitepress'; - -export const ja: DefaultTheme.Config = { - editLink: { - pattern: 'https://github.com/m1sk9/LunaticChat/edit/main/docs/src/:path', - text: 'GitHub で編集', - }, - footer: { - copyright: 'Copyright © 2026 m1sk9', - }, - nav: [ - { link: '/player-guide/getting-started', text: 'プレイヤーガイド' }, - { link: '/admin-guide/getting-started', text: '管理者ガイド' }, - { component: 'VersionSwitcher' }, - ], - sidebar: { - '/admin-guide/': [ - { - link: '/admin-guide/getting-started', - text: 'はじめる', - }, - { - link: '/admin-guide/configuration', - text: '設定', - }, - { - link: '/admin-guide/permissions', - text: 'パーミッション', - }, - { - items: [ - { - link: '/admin-guide/channel-chat/introduction', - text: '展開ガイド', - }, - { - link: '/admin-guide/channel-chat/logs', - text: 'ログ', - }, - ], - text: 'チャンネルチャット', - }, - { - link: '/admin-guide/velocity', - text: 'Velocity 連携', - }, - { - link: '/admin-guide/cache', - text: 'キャッシュシステム', - }, - { - link: '/admin-guide/management-data', - text: 'データの管理', - }, - ], - '/player-guide/': [ - { - link: '/player-guide/getting-started', - text: 'はじめる', - }, - { - link: '/player-guide/about', - text: 'LunaticChat について', - }, - { - items: [ - { - link: '/player-guide/channel-chat/private-channel', - text: 'プライベートチャンネル', - }, - { - link: '/player-guide/channel-chat/moderation', - text: 'モデレーション', - }, - ], - link: '/player-guide/channel-chat/about', - text: 'チャンネルチャット', - }, - { - link: '/player-guide/direct-message', - text: 'ダイレクトメッセージ', - }, - { - link: '/player-guide/japanese-romanization', - text: 'ローマ字変換', - }, - { - items: [ - { - link: '/player-guide/commands/tell', - text: '/tell', - }, - { - link: '/player-guide/commands/reply', - text: '/reply', - }, - { - items: [ - { - link: '/player-guide/commands/lc/settings', - text: '/lc settings', - }, - { - link: '/player-guide/commands/lc/status', - text: '/lc status', - }, - { - link: '/player-guide/commands/lc/channel', - text: '/lc channel', - }, - ], - text: '/lc', - }, - { - items: [ - { - link: '/player-guide/commands/lcv/status', - text: '/lcv status', - }, - ], - text: '/lcv', - }, - ], - text: 'コマンド', - }, - ], - }, -}; diff --git a/docs/.vitepress/public/favicon.ico b/docs/.vitepress/public/favicon.ico Binary files differdeleted file mode 100644 index 46c0cad..0000000 --- a/docs/.vitepress/public/favicon.ico +++ /dev/null diff --git a/docs/.vitepress/public/icon.png b/docs/.vitepress/public/icon.png Binary files differdeleted file mode 100644 index 064445a..0000000 --- a/docs/.vitepress/public/icon.png +++ /dev/null diff --git a/docs/.vitepress/theme/Layout.vue b/docs/.vitepress/theme/Layout.vue deleted file mode 100644 index 9a2b4ae..0000000 --- a/docs/.vitepress/theme/Layout.vue +++ /dev/null @@ -1,14 +0,0 @@ -<script setup lang="ts"> -import DefaultTheme from 'vitepress/theme'; -import VersionBanner from './VersionBanner.vue'; - -const { Layout } = DefaultTheme; -</script> - -<template> - <Layout> - <template #layout-top> - <VersionBanner /> - </template> - </Layout> -</template> diff --git a/docs/.vitepress/theme/VersionBanner.vue b/docs/.vitepress/theme/VersionBanner.vue deleted file mode 100644 index 68347d0..0000000 --- a/docs/.vitepress/theme/VersionBanner.vue +++ /dev/null @@ -1,72 +0,0 @@ -<script setup lang="ts"> -import { ref, computed, watch, onMounted, onUnmounted, nextTick } from 'vue'; -import { useRoute, inBrowser } from 'vitepress'; - -const route = useRoute(); -const bannerRef = ref<HTMLElement | null>(null); - -const isNonDefaultVersion = computed(() => { - const path = route.path; - return /^\/(en\/)?v\d+\//.test(path) || /^\/(en\/)?v\d+$/.test(path); -}); - -const versionLabel = computed(() => { - const match = route.path.match(/\/v(\d+)/); - return match ? `v${match[1]}` : ''; -}); - -const isJapanese = computed(() => { - return !route.path.startsWith('/en/'); -}); - -function updateLayoutTopHeight() { - if (!inBrowser || !bannerRef.value) return; - const height = bannerRef.value.getBoundingClientRect().height; - if (height > 0) { - document.documentElement.style.setProperty('--vp-layout-top-height', `${height}px`); - } else { - document.documentElement.style.removeProperty('--vp-layout-top-height'); - } -} - -function updateBannerClass(show: boolean) { - if (!inBrowser) return; - if (show) { - document.documentElement.classList.add('has-version-banner'); - nextTick(updateLayoutTopHeight); - } else { - document.documentElement.classList.remove('has-version-banner'); - document.documentElement.style.removeProperty('--vp-layout-top-height'); - } -} - -let resizeObserver: ResizeObserver | null = null; - -onMounted(() => { - updateBannerClass(isNonDefaultVersion.value); - watch(isNonDefaultVersion, (val) => updateBannerClass(val)); - - if (bannerRef.value) { - resizeObserver = new ResizeObserver(updateLayoutTopHeight); - resizeObserver.observe(bannerRef.value); - } -}); - -onUnmounted(() => { - resizeObserver?.disconnect(); - updateBannerClass(false); -}); -</script> - -<template> - <div v-if="isNonDefaultVersion" ref="bannerRef" class="version-banner"> - <span v-if="isJapanese"> - このドキュメントは <strong>{{ versionLabel }}</strong> - 版です。最新の安定版ではありません。 - </span> - <span v-else> - You are viewing the <strong>{{ versionLabel }}</strong> documentation. - This is not the latest stable version. - </span> - </div> -</template> diff --git a/docs/.vitepress/theme/VersionSwitcher.vue b/docs/.vitepress/theme/VersionSwitcher.vue deleted file mode 100644 index d3ecd62..0000000 --- a/docs/.vitepress/theme/VersionSwitcher.vue +++ /dev/null @@ -1,251 +0,0 @@ -<script setup lang="ts"> -import { computed, ref } from 'vue'; -import { useData, useRouter } from 'vitepress'; -import VPFlyout from 'vitepress/dist/client/theme-default/components/VPFlyout.vue'; -import VPMenuLink from 'vitepress/dist/client/theme-default/components/VPMenuLink.vue'; - -/** - * Mapping from archive folder names to display labels. - * Update this when adding new versions. - */ -const versionLabels: Record<string, string> = { - v1: 'v1 (26.1) - Next', -}; - -interface VersioningPlugin { - versions: Set<string>; - currentVersion: string; -} - -interface Props { - versioningPlugin: VersioningPlugin; - screenMenu?: boolean; -} - -interface VersionMenuItem { - text: string; - link: string; -} - -const props = defineProps<Props>(); -const router = useRouter(); -const { site } = useData(); -const isOpen = ref(false); - -const versionSet = computed(() => new Set([...props.versioningPlugin.versions])); -const hasVersions = computed(() => versionSet.value.size > 0); - -const currentLocale = computed( - () => site.value.locales[site.value.localeIndex]?.link?.replace(/\//g, '') || '', -); - -const pathSegments = computed(() => - router.route.path.replace(/^\/|\/$/g, '').split('/'), -); - -const activeVersion = computed(() => { - const { currentVersion } = props.versioningPlugin; - const segments = pathSegments.value; - const locale = currentLocale.value; - const hasLocalePrefix = locale !== '' && segments[0] === locale; - const versionCandidate = hasLocalePrefix ? segments[1] : segments[0]; - return versionSet.value.has(versionCandidate) ? versionCandidate : currentVersion; -}); - -const activeVersionLabel = computed( - () => versionLabels[activeVersion.value] ?? activeVersion.value, -); - -const availableVersions = computed(() => - Array.from(props.versioningPlugin.versions).filter((v) => v !== activeVersion.value), -); - -const shouldShowCurrentVersion = computed( - () => activeVersion.value !== props.versioningPlugin.currentVersion, -); - -function isLocaleFirst(segments: string[]): boolean { - const locale = currentLocale.value; - return locale !== '' && segments[0] === locale; -} - -function removeVersionSegments(segments: string[]): string[] { - return segments.filter((seg) => !versionSet.value.has(seg)); -} - -function buildVersionPath(version: string): string { - const { currentVersion } = props.versioningPlugin; - const baseSegments = removeVersionSegments(pathSegments.value); - const hasLocale = isLocaleFirst(baseSegments); - - let newSegments: string[]; - - if (version === currentVersion) { - newSegments = baseSegments; - } else if (hasLocale) { - newSegments = [baseSegments[0], version, ...baseSegments.slice(1)]; - } else { - newSegments = [version, ...baseSegments]; - } - - return `/${newSegments.join('/')}`; -} - -function label(version: string): string { - return versionLabels[version] ?? version; -} - -function createVersionMenuItem(version: string): VersionMenuItem { - return { - text: label(version), - link: buildVersionPath(version), - }; -} - -function toggle(): void { - isOpen.value = !isOpen.value; -} -</script> - -<template> - <template v-if="hasVersions"> - <!-- Desktop flyout --> - <VPFlyout - v-if="!screenMenu" - class="VPVersionSwitcher" - icon="vpi-versioning" - :button="activeVersionLabel" - label="Switch Version" - > - <div class="items"> - <VPMenuLink - v-if="shouldShowCurrentVersion" - :item="createVersionMenuItem(versioningPlugin.currentVersion)" - /> - <VPMenuLink - v-for="version in availableVersions" - :key="version" - :item="createVersionMenuItem(version)" - /> - </div> - </VPFlyout> - - <!-- Mobile dropdown --> - <div v-else class="VPScreenVersionSwitcher" :class="{ open: isOpen }"> - <button - class="button" - type="button" - aria-controls="navbar-group-version" - :aria-expanded="isOpen" - @click="toggle" - > - <span class="button-text"> - <span class="vpi-versioning icon" /> - Switch Version - </span> - <span class="vpi-plus button-icon" /> - </button> - - <div id="navbar-group-version" class="items"> - <VPMenuLink :item="createVersionMenuItem(versioningPlugin.currentVersion)" /> - <VPMenuLink - v-for="version in versioningPlugin.versions" - :key="version" - :item="createVersionMenuItem(version)" - /> - </div> - </div> - </template> -</template> - -<style> -.vpi-versioning.option-icon { - margin-right: 2px !important; -} - -.vpi-versioning { - --icon: url("data:image/svg+xml;charset=utf-8;base64,PHN2ZyB3aWR0aD0iNjRweCIgaGVpZ2h0PSI2NHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZS13aWR0aD0iMi4yIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNvbG9yPSIjMDAwMDAwIj48cGF0aCBkPSJNMTcgN0MxOC4xMDQ2IDcgMTkgNi4xMDQ1NyAxOSA1QzE5IDMuODk1NDMgMTguMTA0NiAzIDE3IDNDMTUuODk1NCAzIDE1IDMuODk1NDMgMTUgNUMxNSA2LjEwNDU3IDE1Ljg5NTQgNyAxNyA3WiIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjIuMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48L3BhdGg+PHBhdGggZD0iTTcgN0M4LjEwNDU3IDcgOSA2LjEwNDU3IDkgNUM5IDMuODk1NDMgOC4xMDQ1NyAzIDcgM0M1Ljg5NTQzIDMgNSAzLjg5NTQzIDUgNUM1IDYuMTA0NTcgNS44OTU0MyA3IDcgN1oiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIyLjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wYXRoPjxwYXRoIGQ9Ik03IDIxQzguMTA0NTcgMjEgOSAyMC4xMDQ2IDkgMTlDOSAxNy44OTU0IDguMTA0NTcgMTcgNyAxN0M1Ljg5NTQzIDE3IDUgMTcuODk1NCA1IDE5QzUgMjAuMTA0NiA1Ljg5NTQzIDIxIDcgMjFaIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMi4yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcGF0aD48cGF0aCBkPSJNNyA3VjE3IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMi4yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcGF0aD48cGF0aCBkPSJNMTcgN1Y4QzE3IDEwLjUgMTUgMTEgMTUgMTFMOSAxM0M5IDEzIDcgMTMuNSA3IDE2VjE3IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMi4yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcGF0aD48L3N2Zz4="); -} -</style> - -<style scoped> -.VPVersionSwitcher { - display: flex; - align-items: center; -} - -.icon { - padding: 8px; -} - -.title { - padding: 0 24px 0 12px; - line-height: 32px; - font-size: 14px; - font-weight: 700; - color: var(--vp-c-text-1); -} - -.VPScreenVersionSwitcher { - border-bottom: 1px solid var(--vp-c-divider); - height: 48px; - overflow: hidden; - transition: border-color 0.5s; -} - -.VPScreenVersionSwitcher .items { - visibility: hidden; -} - -.VPScreenVersionSwitcher.open { - padding-bottom: 10px; - height: auto; -} - -.VPScreenVersionSwitcher.open .items { - visibility: visible; -} - -.VPScreenVersionSwitcher.open .button { - padding-bottom: 6px; - color: var(--vp-c-brand-1); -} - -.VPScreenVersionSwitcher.open .button-icon { - transform: rotate(45deg); -} - -.VPScreenVersionSwitcher button .icon { - margin-right: 8px; -} - -.button { - display: flex; - justify-content: space-between; - align-items: center; - padding: 12px 4px 11px 0; - width: 100%; - line-height: 24px; - font-size: 14px; - font-weight: 500; - color: var(--vp-c-text-1); - transition: color 0.25s; -} - -.button:hover { - color: var(--vp-c-brand-1); -} - -.button-icon { - transition: transform 0.25s; -} - -.group:first-child { - padding-top: 0; -} - -.group + .group, -.group + .item { - padding-top: 4px; -} -</style> diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css deleted file mode 100644 index a4ebd52..0000000 --- a/docs/.vitepress/theme/custom.css +++ /dev/null @@ -1,21 +0,0 @@ -.version-banner { - display: block; - padding: 12px 16px; - background-color: var(--vp-c-warning-soft); - color: var(--vp-c-warning-1); - text-align: center; - font-size: 14px; - line-height: 1.6; - border-bottom: 1px solid var(--vp-c-warning-2); -} - -@media (min-width: 960px) { - .version-banner { - position: fixed; - top: 0; - left: 0; - right: 0; - z-index: 30; - padding: 12px 24px; - } -} diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts deleted file mode 100644 index 26c6640..0000000 --- a/docs/.vitepress/theme/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import DefaultTheme from 'vitepress/theme'; -import Layout from './Layout.vue'; -import VersionSwitcher from './VersionSwitcher.vue'; -import './custom.css'; - -export default { - extends: DefaultTheme, - Layout, - enhanceApp({ app }) { - app.component('VersionSwitcher', VersionSwitcher); - }, -}; |
