summaryrefslogtreecommitdiff
path: root/docs/.vitepress
diff options
context:
space:
mode:
authorSho Sakuma <me@m1sk9.dev>2026-04-05 01:45:01 +0900
committerGitHub <noreply@github.com>2026-04-05 01:45:01 +0900
commit579ca7f5bf01187e1f758cadfb4eda652fd5a4c3 (patch)
treec008f240e02aa828ad47728e671232e687f4b911 /docs/.vitepress
parentbd92ba60d39b4956a580cc56b83ecf55dd348aea (diff)
parent9146547efae71efa1d67a48e20ae4271785847e9 (diff)
downloadLunaticChat-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.mts39
-rw-r--r--docs/.vitepress/config/en.ts136
-rw-r--r--docs/.vitepress/config/ja.ts128
-rw-r--r--docs/.vitepress/public/favicon.icobin4286 -> 0 bytes
-rw-r--r--docs/.vitepress/public/icon.pngbin122601 -> 0 bytes
-rw-r--r--docs/.vitepress/theme/Layout.vue14
-rw-r--r--docs/.vitepress/theme/VersionBanner.vue72
-rw-r--r--docs/.vitepress/theme/VersionSwitcher.vue251
-rw-r--r--docs/.vitepress/theme/custom.css21
-rw-r--r--docs/.vitepress/theme/index.ts12
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
deleted file mode 100644
index 46c0cad..0000000
--- a/docs/.vitepress/public/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/docs/.vitepress/public/icon.png b/docs/.vitepress/public/icon.png
deleted file mode 100644
index 064445a..0000000
--- a/docs/.vitepress/public/icon.png
+++ /dev/null
Binary files differ
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);
- },
-};