@aravindc26/velu 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/package.json +19 -7
- package/schema/velu.schema.json +17 -19
- package/src/build.ts +141 -1531
- package/src/cli.ts +37 -35
- package/src/engine/_server.mjs +271 -0
- package/src/engine/app/(docs)/[[...slug]]/page.tsx +66 -0
- package/src/engine/app/(docs)/layout.tsx +16 -0
- package/src/engine/app/assistant.css +326 -0
- package/src/engine/app/copy-page.css +132 -0
- package/src/engine/app/global.css +21 -0
- package/src/engine/app/layout.tsx +34 -0
- package/src/engine/app/search.css +118 -0
- package/src/engine/components/assistant.tsx +350 -0
- package/src/engine/components/copy-page.tsx +96 -0
- package/src/engine/components/search.tsx +164 -0
- package/src/engine/lib/layout.shared.ts +18 -0
- package/src/engine/lib/source.ts +9 -0
- package/src/engine/lib/velu.ts +42 -0
- package/src/engine/mdx-components.tsx +9 -0
- package/src/engine/next-env.d.ts +4 -0
- package/src/engine/next.config.mjs +18 -0
- package/src/engine/postcss.config.mjs +7 -0
- package/src/engine/source.config.ts +17 -0
- package/src/engine/src/components/Footer.astro +44 -0
- package/src/engine/src/components/PageTitle.astro +451 -0
- package/src/engine/src/components/Sidebar.astro +60 -0
- package/src/engine/src/content.config.ts +6 -0
- package/src/engine/src/lib/velu.ts +153 -0
- package/src/engine/src/styles/assistant.css +351 -0
- package/src/engine/src/styles/tabs.css +183 -0
- package/src/engine/tsconfig.json +32 -0
- package/src/themes.ts +34 -29
- package/src/validate.ts +9 -23
package/README.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
A modern documentation site generator. Write Markdown, configure with JSON, ship a beautiful docs site.
|
|
4
4
|
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
- Node.js 20.9+
|
|
8
|
+
- npm
|
|
9
|
+
|
|
5
10
|
## Install
|
|
6
11
|
|
|
7
12
|
```bash
|
|
@@ -30,6 +35,8 @@ Your site is live at `http://localhost:4321`.
|
|
|
30
35
|
| `velu run --port N` | Start on a custom port |
|
|
31
36
|
| `velu build` | Build the site without starting a server |
|
|
32
37
|
|
|
38
|
+
`velu build` outputs a static site at `.velu-out/out`.
|
|
39
|
+
|
|
33
40
|
## Navigation
|
|
34
41
|
|
|
35
42
|
Velu supports three levels of navigation hierarchy:
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aravindc26/velu",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "A modern documentation site generator powered by Markdown and JSON configuration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"keywords": ["docs", "documentation", "markdown", "static-site", "cli"],
|
|
8
8
|
"engines": {
|
|
9
|
-
"node": ">=
|
|
9
|
+
"node": ">=20.9.0"
|
|
10
10
|
},
|
|
11
11
|
"bin": {
|
|
12
12
|
"velu": "./bin/velu.mjs"
|
|
@@ -22,12 +22,24 @@
|
|
|
22
22
|
"dev": "tsx src/cli.ts run"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
+
"@tailwindcss/postcss": "^4.1.18",
|
|
26
|
+
"@types/mdx": "^2.0.13",
|
|
27
|
+
"@types/node": "^22.0.0",
|
|
28
|
+
"@types/react": "^19.2.13",
|
|
29
|
+
"@types/react-dom": "^19.2.3",
|
|
25
30
|
"ajv": "^8.17.1",
|
|
26
31
|
"ajv-formats": "^3.0.1",
|
|
27
|
-
"
|
|
32
|
+
"fumadocs-core": "^16.6.0",
|
|
33
|
+
"fumadocs-mdx": "^14.2.7",
|
|
34
|
+
"fumadocs-ui": "^16.6.0",
|
|
35
|
+
"next": "^16.1.6",
|
|
36
|
+
"postcss": "^8.5.6",
|
|
37
|
+
"react": "^19.2.4",
|
|
38
|
+
"react-dom": "^19.2.4",
|
|
39
|
+
"tailwindcss": "^4.1.18",
|
|
40
|
+
"typescript": "^5.9.3",
|
|
41
|
+
"tsx": "^4.19.0",
|
|
42
|
+
"pagefind": "^1.3.0"
|
|
28
43
|
},
|
|
29
|
-
"devDependencies": {
|
|
30
|
-
"typescript": "^5.7.0",
|
|
31
|
-
"@types/node": "^22.0.0"
|
|
32
|
-
}
|
|
44
|
+
"devDependencies": {}
|
|
33
45
|
}
|
package/schema/velu.schema.json
CHANGED
|
@@ -75,28 +75,16 @@
|
|
|
75
75
|
},
|
|
76
76
|
"navigation": {
|
|
77
77
|
"type": "object",
|
|
78
|
-
"description": "Defines the site navigation hierarchy: tabs → groups → pages.",
|
|
78
|
+
"description": "Defines the site navigation hierarchy: tabs → groups → pages. Groups must belong to a tab.",
|
|
79
|
+
"required": ["tabs"],
|
|
79
80
|
"properties": {
|
|
80
81
|
"tabs": {
|
|
81
82
|
"type": "array",
|
|
82
|
-
"description": "Top-level navigation tabs.",
|
|
83
|
+
"description": "Top-level navigation tabs. Each tab contains groups and/or pages.",
|
|
83
84
|
"items": {
|
|
84
85
|
"$ref": "#/definitions/tab"
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
"groups": {
|
|
88
|
-
"type": "array",
|
|
89
|
-
"description": "Top-level navigation groups (used when there are no tabs, or as default content).",
|
|
90
|
-
"items": {
|
|
91
|
-
"$ref": "#/definitions/group"
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
"pages": {
|
|
95
|
-
"type": "array",
|
|
96
|
-
"description": "Top-level standalone pages.",
|
|
97
|
-
"items": {
|
|
98
|
-
"$ref": "#/definitions/page"
|
|
99
|
-
}
|
|
86
|
+
},
|
|
87
|
+
"minItems": 1
|
|
100
88
|
}
|
|
101
89
|
},
|
|
102
90
|
"additionalProperties": false
|
|
@@ -111,12 +99,17 @@
|
|
|
111
99
|
"group": {
|
|
112
100
|
"type": "object",
|
|
113
101
|
"description": "A group of pages, optionally nested.",
|
|
114
|
-
"required": ["group", "pages"],
|
|
102
|
+
"required": ["group", "slug", "pages"],
|
|
115
103
|
"properties": {
|
|
116
104
|
"group": {
|
|
117
105
|
"type": "string",
|
|
118
106
|
"description": "Display name for the group."
|
|
119
107
|
},
|
|
108
|
+
"slug": {
|
|
109
|
+
"type": "string",
|
|
110
|
+
"description": "URL slug prefix for pages in this group. Used as the route prefix: /<slug>/<page-basename>.",
|
|
111
|
+
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
|
|
112
|
+
},
|
|
120
113
|
"icon": {
|
|
121
114
|
"type": "string",
|
|
122
115
|
"description": "Icon identifier for the group."
|
|
@@ -146,12 +139,17 @@
|
|
|
146
139
|
"tab": {
|
|
147
140
|
"type": "object",
|
|
148
141
|
"description": "A top-level navigation tab.",
|
|
149
|
-
"required": ["tab"],
|
|
142
|
+
"required": ["tab", "slug"],
|
|
150
143
|
"properties": {
|
|
151
144
|
"tab": {
|
|
152
145
|
"type": "string",
|
|
153
146
|
"description": "Display name for the tab."
|
|
154
147
|
},
|
|
148
|
+
"slug": {
|
|
149
|
+
"type": "string",
|
|
150
|
+
"description": "URL slug prefix for pages in this tab. Used as the route prefix: /<slug>/<page-basename>.",
|
|
151
|
+
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
|
|
152
|
+
},
|
|
155
153
|
"icon": {
|
|
156
154
|
"type": "string",
|
|
157
155
|
"description": "Icon identifier for the tab."
|