2026-02-26 00:17:23 +08:00
|
|
|
import { Component, createSignal, onMount } from 'solid-js';
|
|
|
|
|
import { useLocation } from '@solidjs/router';
|
|
|
|
|
|
2026-02-26 00:47:26 +08:00
|
|
|
// 导入组件以注册自定义元素
|
|
|
|
|
import './components';
|
2026-02-26 09:24:26 +08:00
|
|
|
import { Article } from './components';
|
2026-02-26 00:47:26 +08:00
|
|
|
|
2026-02-26 00:17:23 +08:00
|
|
|
const App: Component = () => {
|
|
|
|
|
const location = useLocation();
|
2026-02-26 01:07:48 +08:00
|
|
|
const [currentPath, setCurrentPath] = createSignal('');
|
2026-02-26 00:17:23 +08:00
|
|
|
|
2026-02-26 09:24:26 +08:00
|
|
|
onMount(() => {
|
2026-02-26 00:17:23 +08:00
|
|
|
// 根据路由加载对应的 markdown 文件
|
2026-02-26 01:15:40 +08:00
|
|
|
let path = decodeURIComponent(location.pathname.slice(1));
|
|
|
|
|
if (!path) {
|
|
|
|
|
path = '/content/index.md';
|
|
|
|
|
} else if (!path.startsWith('/content/')) {
|
|
|
|
|
path = `/content/${path}`;
|
|
|
|
|
}
|
|
|
|
|
// 确保有 .md 扩展名
|
|
|
|
|
if (!path.endsWith('.md')) {
|
|
|
|
|
path = `${path}.md`;
|
|
|
|
|
}
|
2026-02-26 01:07:48 +08:00
|
|
|
setCurrentPath(path);
|
2026-02-26 00:17:23 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<div class="min-h-screen bg-gray-50">
|
|
|
|
|
<header class="bg-white shadow">
|
|
|
|
|
<div class="max-w-4xl mx-auto px-4 py-4">
|
|
|
|
|
<h1 class="text-2xl font-bold text-gray-900">TTRPG Tools</h1>
|
|
|
|
|
</div>
|
|
|
|
|
</header>
|
|
|
|
|
<main class="max-w-4xl mx-auto px-4 py-8">
|
2026-02-26 09:24:26 +08:00
|
|
|
<Article src={currentPath()} />
|
2026-02-26 00:17:23 +08:00
|
|
|
</main>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default App;
|