Skip to content
This repository was archived by the owner on Mar 26, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 3 additions & 16 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ name: CI
on:
pull_request:
branches: [main]
# Allow reuse from deploy workflow
workflow_call:

concurrency:
Expand All @@ -15,7 +14,7 @@ permissions:

jobs:
lint:
name: Lint & Format
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
Expand All @@ -26,23 +25,11 @@ jobs:
- run: bun install --frozen-lockfile
- run: bun run lint

typecheck:
name: Typecheck
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: latest
- run: bun install --frozen-lockfile
- run: bun run typecheck

build:
name: Build
runs-on: ubuntu-latest
timeout-minutes: 10
needs: [lint, typecheck]
needs: [lint]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
Expand All @@ -55,7 +42,7 @@ jobs:
if: github.ref == 'refs/heads/main'
uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3.0.1
with:
path: out
path: .vitepress/dist

dependency-review:
name: Dependency Review
Expand Down
6 changes: 1 addition & 5 deletions .github/workflows/dependency-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ name: Dependency Updates

on:
schedule:
# Every Monday at 06:00 UTC
- cron: "0 6 * * 1"
workflow_dispatch:

Expand All @@ -28,9 +27,6 @@ jobs:
- name: Install updated dependencies
run: bun install

- name: Typecheck with updated deps
run: bun run typecheck

- name: Lint with updated deps
run: bun run lint

Expand All @@ -47,7 +43,7 @@ jobs:
Automated weekly dependency update.

This PR updates all dependencies to their latest compatible versions.
Typecheck, lint, and build passed with the updated dependencies.
Lint and build passed with the updated dependencies.

---
_Generated by the dependency-update workflow._
Expand Down
29 changes: 2 additions & 27 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,37 +1,12 @@
# Dependencies
node_modules/

# Next.js
.next/
out/

# Fumadocs generated
.source/

# Build
build/
dist/

# Environment
.vitepress/dist/
.vitepress/cache/
.env
.env.local
.env.*.local

# Logs
*.log
npm-debug.log*

# OS
.DS_Store

# Editors
.idea/
.vscode/

# Coverage
coverage/
.coverage/

# Cache
.cache/
*.tsbuildinfo
166 changes: 166 additions & 0 deletions .vitepress/config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
import { defineConfig } from "vitepress";

export default defineConfig({
title: "Pyreon",
description:
"A signal-based UI framework with fine-grained reactivity and a rich ecosystem.",

cleanUrls: true,
lastUpdated: true,

markdown: {
// Prevent Vue from interpreting {{ }} inside code blocks
defaultHighlightLang: "text",
},

vue: {
template: {
compilerOptions: {
// Allow custom components
isCustomElement: () => false,
},
},
},

head: [
[
"meta",
{
name: "og:description",
content:
"Signal-based UI framework — fine-grained reactivity, no virtual DOM, streaming SSR.",
},
],
],

themeConfig: {
search: {
provider: "local",
},

nav: [
{ text: "Docs", link: "/docs/", activeMatch: "/docs/" },
{ text: "GitHub", link: "https://github.com/pyreon" },
],

sidebar: {
"/docs/": [
{
text: "Getting Started",
items: [
{ text: "Overview", link: "/docs/" },
{ text: "Getting Started", link: "/docs/getting-started" },
],
},
{
text: "Core Framework",
collapsed: false,
items: [
{ text: "Reactivity", link: "/docs/reactivity" },
{ text: "Core", link: "/docs/core" },
{ text: "Compiler", link: "/docs/compiler" },
{ text: "Runtime DOM", link: "/docs/runtime-dom" },
{ text: "Runtime Server", link: "/docs/runtime-server" },
{ text: "Router", link: "/docs/router" },
{ text: "Head", link: "/docs/head" },
{ text: "Server", link: "/docs/server" },
{ text: "Vite Plugin", link: "/docs/vite-plugin" },
{ text: "TypeScript", link: "/docs/typescript" },
{ text: "CLI", link: "/docs/cli" },
{ text: "MCP Server", link: "/docs/mcp" },
],
},
{
text: "Compatibility Layers",
collapsed: false,
items: [
{ text: "React Compat", link: "/docs/react-compat" },
{ text: "Preact Compat", link: "/docs/preact-compat" },
{ text: "Solid Compat", link: "/docs/solid-compat" },
{ text: "Vue Compat", link: "/docs/vue-compat" },
],
},
{
text: "State & Data",
collapsed: false,
items: [
{ text: "Store", link: "/docs/store" },
{ text: "State Tree", link: "/docs/state-tree" },
{ text: "Form", link: "/docs/form" },
{ text: "Validation", link: "/docs/validation" },
{ text: "I18n", link: "/docs/i18n" },
{ text: "Query", link: "/docs/query" },
{ text: "Table", link: "/docs/table" },
{ text: "Virtual", link: "/docs/virtual" },
{ text: "Machine", link: "/docs/machine" },
{ text: "Storage", link: "/docs/storage" },
{ text: "Permissions", link: "/docs/permissions" },
{ text: "Hotkeys", link: "/docs/hotkeys" },
],
},
{
text: "Meta-Framework",
collapsed: false,
items: [
{ text: "Zero", link: "/docs/zero" },
{ text: "Create Zero", link: "/docs/create-zero" },
{ text: "Meta", link: "/docs/meta" },
{ text: "Storybook", link: "/docs/storybook" },
],
},
{
text: "UI System",
collapsed: false,
items: [
{ text: "UI Core", link: "/docs/ui-core" },
{ text: "Styler", link: "/docs/styler" },
{ text: "Unistyle", link: "/docs/unistyle" },
{ text: "Hooks", link: "/docs/hooks" },
{ text: "Elements", link: "/docs/elements" },
{ text: "Attrs", link: "/docs/attrs" },
{ text: "Rocketstyle", link: "/docs/rocketstyle" },
{ text: "Coolgrid", link: "/docs/coolgrid" },
{ text: "Kinetic", link: "/docs/kinetic" },
{ text: "Kinetic Presets", link: "/docs/kinetic-presets" },
{
text: "Connector Document",
link: "/docs/connector-document",
},
{
text: "Document Primitives",
link: "/docs/document-primitives",
},
],
},
{
text: "Ecosystem",
collapsed: false,
items: [
{ text: "Document", link: "/docs/document" },
{ text: "Charts", link: "/docs/charts" },
{ text: "Code Editor", link: "/docs/code" },
{ text: "Flow", link: "/docs/flow" },
{ text: "Feature", link: "/docs/feature" },
],
},
{
text: "Developer Tools",
collapsed: true,
items: [{ text: "DevTools", link: "/docs/devtools" }],
},
],
},

socialLinks: [{ icon: "github", link: "https://github.com/pyreon" }],

editLink: {
pattern: "https://github.com/pyreon/docs/edit/main/:path",
text: "Edit this page on GitHub",
},

footer: {
message: "Released under the MIT License.",
copyright: "Copyright © Pyreon",
},
},
});
74 changes: 74 additions & 0 deletions .vitepress/theme/components/APICard.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
<script setup lang="ts">
defineProps<{
name: string;
type?:
| "fn"
| "component"
| "hook"
| "type"
| "constant"
| "property"
| "context";
signature?: string;
description?: string;
}>();

const labels: Record<string, { label: string; color: string }> = {
fn: { label: "fn", color: "var(--vp-c-blue-1)" },
component: { label: "C", color: "var(--vp-c-green-1)" },
hook: { label: "H", color: "var(--vp-c-purple-1)" },
type: { label: "T", color: "var(--vp-c-yellow-1)" },
constant: { label: "K", color: "var(--vp-c-orange-1)" },
property: { label: "P", color: "var(--vp-c-indigo-1)" },
context: { label: "Cx", color: "var(--vp-c-red-1)" },
};
</script>

<template>
<div class="api-card">
<div class="api-card-header">
<span v-if="type" class="api-badge" :style="{ color: labels[type]?.color }">
{{ labels[type]?.label }}
</span>
<code class="api-name">{{ name }}</code>
</div>
<div v-if="signature" class="api-signature">
<code>{{ signature }}</code>
</div>
<div v-if="description" class="api-desc">{{ description }}</div>
</div>
</template>

<style scoped>
.api-card {
padding: 12px 16px;
border: 1px solid var(--vp-c-divider);
border-radius: 8px;
margin: 8px 0;
background: var(--vp-c-bg-soft);
}
.api-card-header {
display: flex;
align-items: center;
gap: 8px;
}
.api-badge {
font-family: var(--vp-font-family-mono);
font-size: 11px;
font-weight: 700;
}
.api-name {
font-size: 14px;
font-weight: 600;
}
.api-signature {
margin-top: 6px;
font-size: 12px;
color: var(--vp-c-text-2);
}
.api-desc {
margin-top: 6px;
font-size: 13px;
color: var(--vp-c-text-2);
}
</style>
Loading
Loading