Skip to content
This repository was archived by the owner on Mar 26, 2026. It is now read-only.

Commit 08560b6

Browse files
authored
Merge pull request #22 from pyreon/feat/vitepress-migration
feat: migrate from Fumadocs/Next.js to VitePress
2 parents 4b06f6f + f0665df commit 08560b6

139 files changed

Lines changed: 1644 additions & 2499 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ name: CI
33
on:
44
pull_request:
55
branches: [main]
6-
# Allow reuse from deploy workflow
76
workflow_call:
87

98
concurrency:
@@ -15,7 +14,7 @@ permissions:
1514

1615
jobs:
1716
lint:
18-
name: Lint & Format
17+
name: Lint
1918
runs-on: ubuntu-latest
2019
timeout-minutes: 5
2120
steps:
@@ -26,23 +25,11 @@ jobs:
2625
- run: bun install --frozen-lockfile
2726
- run: bun run lint
2827

29-
typecheck:
30-
name: Typecheck
31-
runs-on: ubuntu-latest
32-
timeout-minutes: 5
33-
steps:
34-
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
35-
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
36-
with:
37-
bun-version: latest
38-
- run: bun install --frozen-lockfile
39-
- run: bun run typecheck
40-
4128
build:
4229
name: Build
4330
runs-on: ubuntu-latest
4431
timeout-minutes: 10
45-
needs: [lint, typecheck]
32+
needs: [lint]
4633
steps:
4734
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
4835
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
@@ -55,7 +42,7 @@ jobs:
5542
if: github.ref == 'refs/heads/main'
5643
uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3.0.1
5744
with:
58-
path: out
45+
path: .vitepress/dist
5946

6047
dependency-review:
6148
name: Dependency Review

.github/workflows/dependency-update.yml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ name: Dependency Updates
22

33
on:
44
schedule:
5-
# Every Monday at 06:00 UTC
65
- cron: "0 6 * * 1"
76
workflow_dispatch:
87

@@ -28,9 +27,6 @@ jobs:
2827
- name: Install updated dependencies
2928
run: bun install
3029

31-
- name: Typecheck with updated deps
32-
run: bun run typecheck
33-
3430
- name: Lint with updated deps
3531
run: bun run lint
3632

@@ -47,7 +43,7 @@ jobs:
4743
Automated weekly dependency update.
4844
4945
This PR updates all dependencies to their latest compatible versions.
50-
Typecheck, lint, and build passed with the updated dependencies.
46+
Lint and build passed with the updated dependencies.
5147
5248
---
5349
_Generated by the dependency-update workflow._

.gitignore

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,12 @@
1-
# Dependencies
21
node_modules/
3-
4-
# Next.js
5-
.next/
6-
out/
7-
8-
# Fumadocs generated
9-
.source/
10-
11-
# Build
12-
build/
13-
dist/
14-
15-
# Environment
2+
.vitepress/dist/
3+
.vitepress/cache/
164
.env
175
.env.local
186
.env.*.local
19-
20-
# Logs
217
*.log
228
npm-debug.log*
23-
24-
# OS
259
.DS_Store
26-
27-
# Editors
2810
.idea/
2911
.vscode/
30-
31-
# Coverage
32-
coverage/
33-
.coverage/
34-
35-
# Cache
36-
.cache/
3712
*.tsbuildinfo

.vitepress/config.ts

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
import { defineConfig } from "vitepress";
2+
3+
export default defineConfig({
4+
title: "Pyreon",
5+
description:
6+
"A signal-based UI framework with fine-grained reactivity and a rich ecosystem.",
7+
8+
cleanUrls: true,
9+
lastUpdated: true,
10+
11+
markdown: {
12+
// Prevent Vue from interpreting {{ }} inside code blocks
13+
defaultHighlightLang: "text",
14+
},
15+
16+
vue: {
17+
template: {
18+
compilerOptions: {
19+
// Allow custom components
20+
isCustomElement: () => false,
21+
},
22+
},
23+
},
24+
25+
head: [
26+
[
27+
"meta",
28+
{
29+
name: "og:description",
30+
content:
31+
"Signal-based UI framework — fine-grained reactivity, no virtual DOM, streaming SSR.",
32+
},
33+
],
34+
],
35+
36+
themeConfig: {
37+
search: {
38+
provider: "local",
39+
},
40+
41+
nav: [
42+
{ text: "Docs", link: "/docs/", activeMatch: "/docs/" },
43+
{ text: "GitHub", link: "https://github.com/pyreon" },
44+
],
45+
46+
sidebar: {
47+
"/docs/": [
48+
{
49+
text: "Getting Started",
50+
items: [
51+
{ text: "Overview", link: "/docs/" },
52+
{ text: "Getting Started", link: "/docs/getting-started" },
53+
],
54+
},
55+
{
56+
text: "Core Framework",
57+
collapsed: false,
58+
items: [
59+
{ text: "Reactivity", link: "/docs/reactivity" },
60+
{ text: "Core", link: "/docs/core" },
61+
{ text: "Compiler", link: "/docs/compiler" },
62+
{ text: "Runtime DOM", link: "/docs/runtime-dom" },
63+
{ text: "Runtime Server", link: "/docs/runtime-server" },
64+
{ text: "Router", link: "/docs/router" },
65+
{ text: "Head", link: "/docs/head" },
66+
{ text: "Server", link: "/docs/server" },
67+
{ text: "Vite Plugin", link: "/docs/vite-plugin" },
68+
{ text: "TypeScript", link: "/docs/typescript" },
69+
{ text: "CLI", link: "/docs/cli" },
70+
{ text: "MCP Server", link: "/docs/mcp" },
71+
],
72+
},
73+
{
74+
text: "Compatibility Layers",
75+
collapsed: false,
76+
items: [
77+
{ text: "React Compat", link: "/docs/react-compat" },
78+
{ text: "Preact Compat", link: "/docs/preact-compat" },
79+
{ text: "Solid Compat", link: "/docs/solid-compat" },
80+
{ text: "Vue Compat", link: "/docs/vue-compat" },
81+
],
82+
},
83+
{
84+
text: "State & Data",
85+
collapsed: false,
86+
items: [
87+
{ text: "Store", link: "/docs/store" },
88+
{ text: "State Tree", link: "/docs/state-tree" },
89+
{ text: "Form", link: "/docs/form" },
90+
{ text: "Validation", link: "/docs/validation" },
91+
{ text: "I18n", link: "/docs/i18n" },
92+
{ text: "Query", link: "/docs/query" },
93+
{ text: "Table", link: "/docs/table" },
94+
{ text: "Virtual", link: "/docs/virtual" },
95+
{ text: "Machine", link: "/docs/machine" },
96+
{ text: "Storage", link: "/docs/storage" },
97+
{ text: "Permissions", link: "/docs/permissions" },
98+
{ text: "Hotkeys", link: "/docs/hotkeys" },
99+
],
100+
},
101+
{
102+
text: "Meta-Framework",
103+
collapsed: false,
104+
items: [
105+
{ text: "Zero", link: "/docs/zero" },
106+
{ text: "Create Zero", link: "/docs/create-zero" },
107+
{ text: "Meta", link: "/docs/meta" },
108+
{ text: "Storybook", link: "/docs/storybook" },
109+
],
110+
},
111+
{
112+
text: "UI System",
113+
collapsed: false,
114+
items: [
115+
{ text: "UI Core", link: "/docs/ui-core" },
116+
{ text: "Styler", link: "/docs/styler" },
117+
{ text: "Unistyle", link: "/docs/unistyle" },
118+
{ text: "Hooks", link: "/docs/hooks" },
119+
{ text: "Elements", link: "/docs/elements" },
120+
{ text: "Attrs", link: "/docs/attrs" },
121+
{ text: "Rocketstyle", link: "/docs/rocketstyle" },
122+
{ text: "Coolgrid", link: "/docs/coolgrid" },
123+
{ text: "Kinetic", link: "/docs/kinetic" },
124+
{ text: "Kinetic Presets", link: "/docs/kinetic-presets" },
125+
{
126+
text: "Connector Document",
127+
link: "/docs/connector-document",
128+
},
129+
{
130+
text: "Document Primitives",
131+
link: "/docs/document-primitives",
132+
},
133+
],
134+
},
135+
{
136+
text: "Ecosystem",
137+
collapsed: false,
138+
items: [
139+
{ text: "Document", link: "/docs/document" },
140+
{ text: "Charts", link: "/docs/charts" },
141+
{ text: "Code Editor", link: "/docs/code" },
142+
{ text: "Flow", link: "/docs/flow" },
143+
{ text: "Feature", link: "/docs/feature" },
144+
],
145+
},
146+
{
147+
text: "Developer Tools",
148+
collapsed: true,
149+
items: [{ text: "DevTools", link: "/docs/devtools" }],
150+
},
151+
],
152+
},
153+
154+
socialLinks: [{ icon: "github", link: "https://github.com/pyreon" }],
155+
156+
editLink: {
157+
pattern: "https://github.com/pyreon/docs/edit/main/:path",
158+
text: "Edit this page on GitHub",
159+
},
160+
161+
footer: {
162+
message: "Released under the MIT License.",
163+
copyright: "Copyright © Pyreon",
164+
},
165+
},
166+
});
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<script setup lang="ts">
2+
defineProps<{
3+
name: string;
4+
type?:
5+
| "fn"
6+
| "component"
7+
| "hook"
8+
| "type"
9+
| "constant"
10+
| "property"
11+
| "context";
12+
signature?: string;
13+
description?: string;
14+
}>();
15+
16+
const labels: Record<string, { label: string; color: string }> = {
17+
fn: { label: "fn", color: "var(--vp-c-blue-1)" },
18+
component: { label: "C", color: "var(--vp-c-green-1)" },
19+
hook: { label: "H", color: "var(--vp-c-purple-1)" },
20+
type: { label: "T", color: "var(--vp-c-yellow-1)" },
21+
constant: { label: "K", color: "var(--vp-c-orange-1)" },
22+
property: { label: "P", color: "var(--vp-c-indigo-1)" },
23+
context: { label: "Cx", color: "var(--vp-c-red-1)" },
24+
};
25+
</script>
26+
27+
<template>
28+
<div class="api-card">
29+
<div class="api-card-header">
30+
<span v-if="type" class="api-badge" :style="{ color: labels[type]?.color }">
31+
{{ labels[type]?.label }}
32+
</span>
33+
<code class="api-name">{{ name }}</code>
34+
</div>
35+
<div v-if="signature" class="api-signature">
36+
<code>{{ signature }}</code>
37+
</div>
38+
<div v-if="description" class="api-desc">{{ description }}</div>
39+
</div>
40+
</template>
41+
42+
<style scoped>
43+
.api-card {
44+
padding: 12px 16px;
45+
border: 1px solid var(--vp-c-divider);
46+
border-radius: 8px;
47+
margin: 8px 0;
48+
background: var(--vp-c-bg-soft);
49+
}
50+
.api-card-header {
51+
display: flex;
52+
align-items: center;
53+
gap: 8px;
54+
}
55+
.api-badge {
56+
font-family: var(--vp-font-family-mono);
57+
font-size: 11px;
58+
font-weight: 700;
59+
}
60+
.api-name {
61+
font-size: 14px;
62+
font-weight: 600;
63+
}
64+
.api-signature {
65+
margin-top: 6px;
66+
font-size: 12px;
67+
color: var(--vp-c-text-2);
68+
}
69+
.api-desc {
70+
margin-top: 6px;
71+
font-size: 13px;
72+
color: var(--vp-c-text-2);
73+
}
74+
</style>

0 commit comments

Comments
 (0)