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.
Files changed (87) hide show
  1. package/.output/nitro.json +17 -0
  2. package/.output/public/assets/index-Cc7yKB0o.js +19 -0
  3. package/.output/public/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  4. package/.output/public/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  5. package/.output/public/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  6. package/.output/public/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  7. package/.output/public/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  8. package/.output/public/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  9. package/.output/public/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  10. package/.output/public/assets/main-DDBjVFnt.js +17 -0
  11. package/.output/public/assets/styles-ggfdUHMo.css +1 -0
  12. package/.output/public/favicon.ico +0 -0
  13. package/.output/public/logo192.png +0 -0
  14. package/.output/public/logo512.png +0 -0
  15. package/.output/public/manifest.json +25 -0
  16. package/.output/public/robots.txt +3 -0
  17. package/.output/server/__root-C09LBXMv.mjs +40 -0
  18. package/.output/server/_chunks/ssr-renderer.mjs +21 -0
  19. package/.output/server/_libs/ajv-formats.mjs +330 -0
  20. package/.output/server/_libs/ajv.mjs +5484 -0
  21. package/.output/server/_libs/base-ui__react.mjs +8712 -0
  22. package/.output/server/_libs/base-ui__utils.mjs +980 -0
  23. package/.output/server/_libs/class-variance-authority.mjs +44 -0
  24. package/.output/server/_libs/clsx.mjs +16 -0
  25. package/.output/server/_libs/cookie-es.mjs +58 -0
  26. package/.output/server/_libs/croner.mjs +1 -0
  27. package/.output/server/_libs/crossws.mjs +1 -0
  28. package/.output/server/_libs/date-fns.mjs +1716 -0
  29. package/.output/server/_libs/date-fns__tz.mjs +217 -0
  30. package/.output/server/_libs/extend-shallow.mjs +35 -0
  31. package/.output/server/_libs/fast-deep-equal.mjs +38 -0
  32. package/.output/server/_libs/fast-uri.mjs +725 -0
  33. package/.output/server/_libs/floating-ui__core.mjs +663 -0
  34. package/.output/server/_libs/floating-ui__dom.mjs +624 -0
  35. package/.output/server/_libs/floating-ui__react-dom.mjs +279 -0
  36. package/.output/server/_libs/floating-ui__utils.mjs +322 -0
  37. package/.output/server/_libs/gray-matter.mjs +393 -0
  38. package/.output/server/_libs/h3-v2.mjs +276 -0
  39. package/.output/server/_libs/h3.mjs +400 -0
  40. package/.output/server/_libs/hookable.mjs +1 -0
  41. package/.output/server/_libs/is-extendable.mjs +13 -0
  42. package/.output/server/_libs/isbot.mjs +20 -0
  43. package/.output/server/_libs/js-yaml.mjs +2822 -0
  44. package/.output/server/_libs/json-schema-traverse.mjs +91 -0
  45. package/.output/server/_libs/kind-of.mjs +125 -0
  46. package/.output/server/_libs/lucide-react.mjs +177 -0
  47. package/.output/server/_libs/ohash.mjs +1 -0
  48. package/.output/server/_libs/react-day-picker.mjs +2216 -0
  49. package/.output/server/_libs/react-dom.mjs +10779 -0
  50. package/.output/server/_libs/react-resizable-panels.mjs +2024 -0
  51. package/.output/server/_libs/react.mjs +513 -0
  52. package/.output/server/_libs/reselect.mjs +326 -0
  53. package/.output/server/_libs/rou3.mjs +8 -0
  54. package/.output/server/_libs/section-matter.mjs +112 -0
  55. package/.output/server/_libs/seroval-plugins.mjs +58 -0
  56. package/.output/server/_libs/seroval.mjs +1765 -0
  57. package/.output/server/_libs/srvx.mjs +736 -0
  58. package/.output/server/_libs/strip-bom-string.mjs +16 -0
  59. package/.output/server/_libs/tabbable.mjs +342 -0
  60. package/.output/server/_libs/tailwind-merge.mjs +3175 -0
  61. package/.output/server/_libs/tanstack__history.mjs +217 -0
  62. package/.output/server/_libs/tanstack__react-router.mjs +1464 -0
  63. package/.output/server/_libs/tanstack__react-store.mjs +1 -0
  64. package/.output/server/_libs/tanstack__router-core.mjs +4912 -0
  65. package/.output/server/_libs/tanstack__store.mjs +1 -0
  66. package/.output/server/_libs/tiny-invariant.mjs +12 -0
  67. package/.output/server/_libs/tiny-warning.mjs +5 -0
  68. package/.output/server/_libs/ufo.mjs +54 -0
  69. package/.output/server/_libs/unctx.mjs +1 -0
  70. package/.output/server/_libs/unstorage.mjs +1 -0
  71. package/.output/server/_libs/use-sync-external-store.mjs +139 -0
  72. package/.output/server/_libs/zod.mjs +3634 -0
  73. package/.output/server/_libs/zustand.mjs +43 -0
  74. package/.output/server/_ssr/RightSidebar-RSY9M7XF.mjs +218 -0
  75. package/.output/server/_ssr/collections.server-D6U2tEsT.mjs +120 -0
  76. package/.output/server/_ssr/createServerRpc-29xaFZcb.mjs +12 -0
  77. package/.output/server/_ssr/index-BaqV4cZC.mjs +2083 -0
  78. package/.output/server/_ssr/index-sQBM6rwN.mjs +115 -0
  79. package/.output/server/_ssr/index.mjs +1448 -0
  80. package/.output/server/_ssr/router-D4G1DGr3.mjs +155 -0
  81. package/.output/server/_ssr/start-HYkvq4Ni.mjs +4 -0
  82. package/.output/server/_tanstack-start-manifest_v-CYEHh_qB.mjs +4 -0
  83. package/.output/server/index.mjs +451 -0
  84. package/README.md +118 -0
  85. package/index.mjs +21 -0
  86. package/package.json +86 -0
  87. 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
+ }