astro-md-editor 0.0.1
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/.output/nitro.json +17 -0
- package/.output/public/assets/index-Cc7yKB0o.js +19 -0
- package/.output/public/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/.output/public/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/.output/public/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/.output/public/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/.output/public/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/.output/public/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/.output/public/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/.output/public/assets/main-DDBjVFnt.js +17 -0
- package/.output/public/assets/styles-ggfdUHMo.css +1 -0
- package/.output/public/favicon.ico +0 -0
- package/.output/public/logo192.png +0 -0
- package/.output/public/logo512.png +0 -0
- package/.output/public/manifest.json +25 -0
- package/.output/public/robots.txt +3 -0
- package/.output/server/__root-C09LBXMv.mjs +40 -0
- package/.output/server/_chunks/ssr-renderer.mjs +21 -0
- package/.output/server/_libs/ajv-formats.mjs +330 -0
- package/.output/server/_libs/ajv.mjs +5484 -0
- package/.output/server/_libs/base-ui__react.mjs +8712 -0
- package/.output/server/_libs/base-ui__utils.mjs +980 -0
- package/.output/server/_libs/class-variance-authority.mjs +44 -0
- package/.output/server/_libs/clsx.mjs +16 -0
- package/.output/server/_libs/cookie-es.mjs +58 -0
- package/.output/server/_libs/croner.mjs +1 -0
- package/.output/server/_libs/crossws.mjs +1 -0
- package/.output/server/_libs/date-fns.mjs +1716 -0
- package/.output/server/_libs/date-fns__tz.mjs +217 -0
- package/.output/server/_libs/extend-shallow.mjs +35 -0
- package/.output/server/_libs/fast-deep-equal.mjs +38 -0
- package/.output/server/_libs/fast-uri.mjs +725 -0
- package/.output/server/_libs/floating-ui__core.mjs +663 -0
- package/.output/server/_libs/floating-ui__dom.mjs +624 -0
- package/.output/server/_libs/floating-ui__react-dom.mjs +279 -0
- package/.output/server/_libs/floating-ui__utils.mjs +322 -0
- package/.output/server/_libs/gray-matter.mjs +393 -0
- package/.output/server/_libs/h3-v2.mjs +276 -0
- package/.output/server/_libs/h3.mjs +400 -0
- package/.output/server/_libs/hookable.mjs +1 -0
- package/.output/server/_libs/is-extendable.mjs +13 -0
- package/.output/server/_libs/isbot.mjs +20 -0
- package/.output/server/_libs/js-yaml.mjs +2822 -0
- package/.output/server/_libs/json-schema-traverse.mjs +91 -0
- package/.output/server/_libs/kind-of.mjs +125 -0
- package/.output/server/_libs/lucide-react.mjs +177 -0
- package/.output/server/_libs/ohash.mjs +1 -0
- package/.output/server/_libs/react-day-picker.mjs +2216 -0
- package/.output/server/_libs/react-dom.mjs +10779 -0
- package/.output/server/_libs/react-resizable-panels.mjs +2024 -0
- package/.output/server/_libs/react.mjs +513 -0
- package/.output/server/_libs/reselect.mjs +326 -0
- package/.output/server/_libs/rou3.mjs +8 -0
- package/.output/server/_libs/section-matter.mjs +112 -0
- package/.output/server/_libs/seroval-plugins.mjs +58 -0
- package/.output/server/_libs/seroval.mjs +1765 -0
- package/.output/server/_libs/srvx.mjs +736 -0
- package/.output/server/_libs/strip-bom-string.mjs +16 -0
- package/.output/server/_libs/tabbable.mjs +342 -0
- package/.output/server/_libs/tailwind-merge.mjs +3175 -0
- package/.output/server/_libs/tanstack__history.mjs +217 -0
- package/.output/server/_libs/tanstack__react-router.mjs +1464 -0
- package/.output/server/_libs/tanstack__react-store.mjs +1 -0
- package/.output/server/_libs/tanstack__router-core.mjs +4912 -0
- package/.output/server/_libs/tanstack__store.mjs +1 -0
- package/.output/server/_libs/tiny-invariant.mjs +12 -0
- package/.output/server/_libs/tiny-warning.mjs +5 -0
- package/.output/server/_libs/ufo.mjs +54 -0
- package/.output/server/_libs/unctx.mjs +1 -0
- package/.output/server/_libs/unstorage.mjs +1 -0
- package/.output/server/_libs/use-sync-external-store.mjs +139 -0
- package/.output/server/_libs/zod.mjs +3634 -0
- package/.output/server/_libs/zustand.mjs +43 -0
- package/.output/server/_ssr/RightSidebar-RSY9M7XF.mjs +218 -0
- package/.output/server/_ssr/collections.server-D6U2tEsT.mjs +120 -0
- package/.output/server/_ssr/createServerRpc-29xaFZcb.mjs +12 -0
- package/.output/server/_ssr/index-BaqV4cZC.mjs +2083 -0
- package/.output/server/_ssr/index-sQBM6rwN.mjs +115 -0
- package/.output/server/_ssr/index.mjs +1448 -0
- package/.output/server/_ssr/router-D4G1DGr3.mjs +155 -0
- package/.output/server/_ssr/start-HYkvq4Ni.mjs +4 -0
- package/.output/server/_tanstack-start-manifest_v-CYEHh_qB.mjs +4 -0
- package/.output/server/index.mjs +451 -0
- package/README.md +118 -0
- package/index.mjs +21 -0
- package/package.json +86 -0
- package/scripts/bootstrap-collections.mjs +1201 -0
package/README.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Astro MD Editor
|
|
2
|
+
|
|
3
|
+
Editor UI for Astro content collections (`src/content`) with schema-aware frontmatter editing and markdown body editing.
|
|
4
|
+
|
|
5
|
+
## Run
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx astro-md-editor
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pnpm dlx astro-md-editor
|
|
13
|
+
# or
|
|
14
|
+
pnpx astro-md-editor
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Target project path
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# positional
|
|
21
|
+
npx astro-md-editor /absolute/path/to/astro-project
|
|
22
|
+
|
|
23
|
+
# flag
|
|
24
|
+
npx astro-md-editor --path /absolute/path/to/astro-project
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Path resolution order:
|
|
28
|
+
|
|
29
|
+
1. positional CLI arg (`astro-md-editor <astro-project-root>`)
|
|
30
|
+
2. `--path=<astro-project-root>`
|
|
31
|
+
3. `APP_ROOT_PATH`
|
|
32
|
+
4. current working directory
|
|
33
|
+
|
|
34
|
+
### Port
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
PORT=1234 npx astro-md-editor
|
|
38
|
+
# or
|
|
39
|
+
NITRO_PORT=1234 npx astro-md-editor
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The runtime reads `PORT`/`NITRO_PORT` for server port.
|
|
43
|
+
|
|
44
|
+
## Requirements
|
|
45
|
+
|
|
46
|
+
- Astro project with collections in `src/content`.
|
|
47
|
+
- Collection schemas available in `.astro/collections/*.schema.json`.
|
|
48
|
+
|
|
49
|
+
If schema files are missing, run:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
astro sync
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Features
|
|
56
|
+
|
|
57
|
+
- Reads `.astro/collections/*.schema.json`.
|
|
58
|
+
- Scans `src/content/<collection>/**/*.{md,mdx,markdown}`.
|
|
59
|
+
- Renders controls for schema fields (`string`, `number`, `boolean`, `enum`, `date`, arrays).
|
|
60
|
+
- Edits frontmatter and markdown/MDX body in one flow.
|
|
61
|
+
- Validates frontmatter with AJV before save.
|
|
62
|
+
- Supports image field inference from `src/content.config.*` (`image()`, `z.array(image())`).
|
|
63
|
+
- Supports image pickers for both `src` assets and `public` assets.
|
|
64
|
+
|
|
65
|
+
## Local development
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pnpm dev
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`pnpm dev` uses `--path example-blog --port 3000`.
|
|
72
|
+
|
|
73
|
+
Run dev against another project:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
node scripts/dev.mjs /absolute/path/to/astro-project --port 3000
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
In dev mode, if schema files are missing, startup runs `astro sync` automatically for the selected project.
|
|
80
|
+
|
|
81
|
+
## Field overrides
|
|
82
|
+
|
|
83
|
+
Create `astro-md-editor.fields.json` at the Astro project root.
|
|
84
|
+
|
|
85
|
+
Example:
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"blog": {
|
|
90
|
+
"brandColor": { "type": "color" },
|
|
91
|
+
"coverAssetPath": { "type": "image", "mode": "public" }
|
|
92
|
+
},
|
|
93
|
+
"snippet": {
|
|
94
|
+
"galleryPaths": { "type": "image", "multiple": true, "mode": "public" }
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Rules:
|
|
100
|
+
|
|
101
|
+
- `type`: `image` or `color`
|
|
102
|
+
- for `type: "image"`, optional `mode`: `asset` (default) or `public`
|
|
103
|
+
- for `type: "image"`, optional `multiple: true` for array-style image input
|
|
104
|
+
- shape: `{ [collectionName]: { [fieldName]: override } }`
|
|
105
|
+
|
|
106
|
+
Precedence:
|
|
107
|
+
|
|
108
|
+
1. `astro-md-editor.fields.json` overrides
|
|
109
|
+
2. inferred `image()` / `array(image())` from content config
|
|
110
|
+
3. schema-based fallback rendering
|
|
111
|
+
|
|
112
|
+
Invalid or incompatible overrides are ignored with bootstrap warnings.
|
|
113
|
+
|
|
114
|
+
## Notes
|
|
115
|
+
|
|
116
|
+
- `public` assets are saved as `/path/from/public`.
|
|
117
|
+
- `src` assets are saved as relative paths from the content file (`./...` or `../...`).
|
|
118
|
+
- Custom controls currently target top-level frontmatter fields.
|
package/index.mjs
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
applyCollectionsEnv,
|
|
5
|
+
bootstrapCollections,
|
|
6
|
+
} from './scripts/bootstrap-collections.mjs';
|
|
7
|
+
|
|
8
|
+
async function main() {
|
|
9
|
+
const bootstrapResult = await bootstrapCollections(process.argv.slice(2), {
|
|
10
|
+
mode: 'production',
|
|
11
|
+
});
|
|
12
|
+
applyCollectionsEnv(process.env, bootstrapResult);
|
|
13
|
+
|
|
14
|
+
await import('./.output/server/index.mjs');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
main().catch((error) => {
|
|
18
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
19
|
+
console.error(`[startup] ${message}`);
|
|
20
|
+
process.exit(1);
|
|
21
|
+
});
|
package/package.json
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "astro-md-editor",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"astro-md-editor": "./index.mjs"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
".output/",
|
|
11
|
+
"index.mjs",
|
|
12
|
+
"scripts/bootstrap-collections.mjs",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"imports": {
|
|
16
|
+
"#/*": "./src/*"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"dev": "node scripts/dev.mjs --path example-blog --port 3000",
|
|
20
|
+
"build": "vite build",
|
|
21
|
+
"start": "node index.mjs",
|
|
22
|
+
"preview": "vite preview",
|
|
23
|
+
"test": "vitest run",
|
|
24
|
+
"lint": "eslint",
|
|
25
|
+
"format": "prettier --write .",
|
|
26
|
+
"check": "prettier --write . && eslint --fix"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@base-ui/react": "^1.2.0",
|
|
30
|
+
"@fontsource-variable/inter": "^5.2.8",
|
|
31
|
+
"@tailwindcss/vite": "^4.1.18",
|
|
32
|
+
"@tanstack/react-devtools": "latest",
|
|
33
|
+
"@tanstack/react-router": "latest",
|
|
34
|
+
"@tanstack/react-router-devtools": "latest",
|
|
35
|
+
"@tanstack/react-router-ssr-query": "latest",
|
|
36
|
+
"@tanstack/react-start": "latest",
|
|
37
|
+
"@tanstack/router-plugin": "^1.132.0",
|
|
38
|
+
"ajv": "^8.18.0",
|
|
39
|
+
"ajv-formats": "^3.0.1",
|
|
40
|
+
"class-variance-authority": "^0.7.1",
|
|
41
|
+
"clsx": "^2.1.1",
|
|
42
|
+
"date-fns": "^4.1.0",
|
|
43
|
+
"dotenv": "^17.3.1",
|
|
44
|
+
"gray-matter": "^4.0.3",
|
|
45
|
+
"lucide-react": "^0.577.0",
|
|
46
|
+
"motion": "^12.35.0",
|
|
47
|
+
"nitro": "npm:nitro-nightly@latest",
|
|
48
|
+
"react": "^19.2.0",
|
|
49
|
+
"react-day-picker": "^9.14.0",
|
|
50
|
+
"react-dom": "^19.2.0",
|
|
51
|
+
"react-resizable-panels": "^4.7.1",
|
|
52
|
+
"shadcn": "^4.0.0",
|
|
53
|
+
"tailwind-merge": "^3.0.2",
|
|
54
|
+
"tailwindcss": "^4.1.18",
|
|
55
|
+
"tw-animate-css": "^1.3.6",
|
|
56
|
+
"zod": "^3.25.76",
|
|
57
|
+
"zustand": "^5.0.11"
|
|
58
|
+
},
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"@tailwindcss/typography": "^0.5.16",
|
|
61
|
+
"@tanstack/devtools-vite": "latest",
|
|
62
|
+
"@tanstack/eslint-config": "latest",
|
|
63
|
+
"@testing-library/dom": "^10.4.1",
|
|
64
|
+
"@testing-library/react": "^16.3.0",
|
|
65
|
+
"@types/node": "^22.10.2",
|
|
66
|
+
"@types/react": "^19.2.0",
|
|
67
|
+
"@types/react-dom": "^19.2.0",
|
|
68
|
+
"@vitejs/plugin-react": "^5.1.4",
|
|
69
|
+
"babel-plugin-react-compiler": "^1.0.0",
|
|
70
|
+
"jsdom": "^28.1.0",
|
|
71
|
+
"prettier": "^3.8.1",
|
|
72
|
+
"prettier-plugin-tailwindcss": "^0.7.2",
|
|
73
|
+
"typescript": "^5.7.2",
|
|
74
|
+
"vite": "^7.3.1",
|
|
75
|
+
"vite-tsconfig-paths": "^5.1.4",
|
|
76
|
+
"vitest": "^3.0.5"
|
|
77
|
+
},
|
|
78
|
+
"pnpm": {
|
|
79
|
+
"onlyBuiltDependencies": [
|
|
80
|
+
"esbuild",
|
|
81
|
+
"lightningcss",
|
|
82
|
+
"msw",
|
|
83
|
+
"unrs-resolver"
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
}
|