create-refrakt 0.9.1 → 0.9.2

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 (37) hide show
  1. package/dist/bin.js +19 -19
  2. package/dist/bin.js.map +1 -1
  3. package/dist/scaffold.d.ts +2 -1
  4. package/dist/scaffold.d.ts.map +1 -1
  5. package/dist/scaffold.js +191 -30
  6. package/dist/scaffold.js.map +1 -1
  7. package/package.json +6 -2
  8. package/template-astro/_gitignore +2 -0
  9. package/template-astro/astro.config.mjs +6 -0
  10. package/template-astro/content/_layout.md +14 -0
  11. package/template-astro/content/docs/getting-started.md +40 -0
  12. package/template-astro/content/index.md +18 -0
  13. package/template-astro/src/pages/[...slug].astro +89 -0
  14. package/template-astro/tsconfig.json +7 -0
  15. package/template-eleventy/_gitignore +2 -0
  16. package/template-eleventy/content/_layout.md +14 -0
  17. package/template-eleventy/content/docs/getting-started.md +40 -0
  18. package/template-eleventy/content/index.md +18 -0
  19. package/template-eleventy/eleventy.config.js +22 -0
  20. package/template-eleventy/src/_data/refrakt.js +5 -0
  21. package/template-eleventy/src/_includes/base.njk +22 -0
  22. package/template-eleventy/src/pages.njk +9 -0
  23. package/template-next/_gitignore +2 -0
  24. package/template-next/app/[...slug]/page.tsx +79 -0
  25. package/template-next/app/layout.tsx +10 -0
  26. package/template-next/content/_layout.md +14 -0
  27. package/template-next/content/docs/getting-started.md +40 -0
  28. package/template-next/content/index.md +18 -0
  29. package/template-next/next.config.mjs +14 -0
  30. package/template-next/tsconfig.json +21 -0
  31. package/template-nuxt/_gitignore +2 -0
  32. package/template-nuxt/content/_layout.md +14 -0
  33. package/template-nuxt/content/docs/getting-started.md +40 -0
  34. package/template-nuxt/content/index.md +18 -0
  35. package/template-nuxt/nuxt.config.ts +3 -0
  36. package/template-nuxt/pages/[...slug].vue +70 -0
  37. package/template-nuxt/tsconfig.json +3 -0
package/dist/bin.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import { scaffold, scaffoldTheme } from './scaffold.js';
3
3
  import * as path from 'node:path';
4
4
  const args = process.argv.slice(2);
5
+ const VALID_TARGETS = ['sveltekit', 'html', 'astro', 'nuxt', 'next', 'eleventy'];
5
6
  let projectName;
6
7
  let theme = '@refrakt-md/lumina';
7
8
  let type = 'site';
@@ -26,8 +27,8 @@ for (let i = 0; i < args.length; i++) {
26
27
  }
27
28
  else if (arg === '--target') {
28
29
  const val = args[++i];
29
- if (val !== 'sveltekit' && val !== 'html') {
30
- console.error('Error: --target must be "sveltekit" or "html"');
30
+ if (!VALID_TARGETS.includes(val)) {
31
+ console.error(`Error: --target must be one of: ${VALID_TARGETS.join(', ')}`);
31
32
  process.exit(1);
32
33
  }
33
34
  target = val;
@@ -71,13 +72,18 @@ Usage: create-refrakt <name> [options]
71
72
 
72
73
  Options:
73
74
  --type <site|theme> What to create (default: site)
74
- --target <sveltekit|html> Adapter target (sites only, default: sveltekit)
75
+ --target <target> Adapter target (sites only, default: sveltekit)
76
+ Targets: ${VALID_TARGETS.join(', ')}
75
77
  --theme, -t <package> Theme package to use (sites only, default: @refrakt-md/lumina)
76
78
  --scope, -s <scope> npm scope for the package (themes only, e.g., @my-org)
77
79
  --help, -h Show this help message
78
80
 
79
81
  Examples:
80
82
  npx create-refrakt my-site
83
+ npx create-refrakt my-site --target astro
84
+ npx create-refrakt my-site --target next
85
+ npx create-refrakt my-site --target nuxt
86
+ npx create-refrakt my-site --target eleventy
81
87
  npx create-refrakt my-site --target html
82
88
  npx create-refrakt my-site --theme @refrakt-md/aurora
83
89
  npx create-refrakt my-theme --type theme
@@ -117,27 +123,21 @@ Then use it in a site:
117
123
  Run \`refrakt scaffold-css\` to generate CSS stubs for all runes.
118
124
  `);
119
125
  }
120
- else if (target === 'html') {
121
- console.log(`
122
- Done! Your refrakt.md site is ready.
123
-
124
- Next steps:
125
-
126
- cd ${projectName}
127
- npm install
128
- npm run build
129
- npm run serve
130
- `);
131
- }
132
126
  else {
127
+ const devCommands = {
128
+ sveltekit: ` cd ${projectName}\n npm install\n npm run dev`,
129
+ astro: ` cd ${projectName}\n npm install\n npm run dev`,
130
+ nuxt: ` cd ${projectName}\n npm install\n npm run dev`,
131
+ next: ` cd ${projectName}\n npm install\n npm run dev`,
132
+ eleventy: ` cd ${projectName}\n npm install\n npm run dev`,
133
+ html: ` cd ${projectName}\n npm install\n npm run build\n npm run serve`,
134
+ };
133
135
  console.log(`
134
- Done! Your refrakt.md site is ready.
136
+ Done! Your refrakt.md site is ready (target: ${target}).
135
137
 
136
138
  Next steps:
137
139
 
138
- cd ${projectName}
139
- npm install
140
- npm run dev
140
+ ${devCommands[target]}
141
141
  `);
142
142
  }
143
143
  //# sourceMappingURL=bin.js.map
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,MAAM,aAAa,GAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAEnG,IAAI,WAA+B,CAAC;AACpC,IAAI,KAAK,GAAG,oBAAoB,CAAC;AACjC,IAAI,IAAI,GAAqB,MAAM,CAAC;AACpC,IAAI,MAAM,GAAmB,WAAW,CAAC;AACzC,IAAI,KAAyB,CAAC;AAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACvC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC;SAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,GAAG,GAAG,CAAC;IACZ,CAAC;SAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAmB,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,mCAAmC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,MAAM,GAAG,GAAG,CAAC;IACd,CAAC;SAAM,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC9C,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QACrB,CAAC;IACF,CAAC;SAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC7C,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;SAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,KAAK,CAAC,CAAC;QAChD,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;SAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,WAAW,GAAG,GAAG,CAAC;IACnB,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,+BAA+B,GAAG,KAAK,CAAC,CAAC;QACvD,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC;AAED,IAAI,CAAC,WAAW,EAAE,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC/C,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,UAAU;IAClB,OAAO,CAAC,GAAG,CAAC;;;;;;0CAM6B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;CAejE,CAAC,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;AAE3D,IAAI,CAAC;IACJ,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACtB,aAAa,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACP,QAAQ,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;AACF,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,KAAK,CAAC,YAAa,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC;;;;;OAKN,WAAW;;;;;;;gBAOF,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW;;;;;CAK9D,CAAC,CAAC;AACH,CAAC;KAAM,CAAC;IACP,MAAM,WAAW,GAAmC;QACnD,SAAS,EAAE,QAAQ,WAAW,gCAAgC;QAC9D,KAAK,EAAE,QAAQ,WAAW,gCAAgC;QAC1D,IAAI,EAAE,QAAQ,WAAW,gCAAgC;QACzD,IAAI,EAAE,QAAQ,WAAW,gCAAgC;QACzD,QAAQ,EAAE,QAAQ,WAAW,gCAAgC;QAC7D,IAAI,EAAE,QAAQ,WAAW,mDAAmD;KAC5E,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC;+CACkC,MAAM;;;;EAInD,WAAW,CAAC,MAAM,CAAC;CACpB,CAAC,CAAC;AACH,CAAC"}
@@ -1,8 +1,9 @@
1
+ export type ScaffoldTarget = 'sveltekit' | 'html' | 'astro' | 'nuxt' | 'next' | 'eleventy';
1
2
  export interface ScaffoldOptions {
2
3
  projectName: string;
3
4
  targetDir: string;
4
5
  theme: string;
5
- target?: 'sveltekit' | 'html';
6
+ target?: ScaffoldTarget;
6
7
  }
7
8
  export declare function scaffold(options: ScaffoldOptions): void;
8
9
  export interface ThemeScaffoldOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,eAAe;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;CAC9B;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAcvD;AAyMD,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAqFjE"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAE3F,MAAM,WAAW,eAAe;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAmBvD;AAgYD,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAqFjE"}
package/dist/scaffold.js CHANGED
@@ -12,12 +12,15 @@ export function scaffold(options) {
12
12
  throw new Error(`Directory "${targetDir}" already exists`);
13
13
  }
14
14
  mkdirSync(targetDir, { recursive: true });
15
- if (target === 'html') {
16
- scaffoldHtmlSite(options);
17
- }
18
- else {
19
- scaffoldSvelteKitSite(options);
20
- }
15
+ const scaffolders = {
16
+ sveltekit: scaffoldSvelteKitSite,
17
+ html: scaffoldHtmlSite,
18
+ astro: scaffoldAstroSite,
19
+ nuxt: scaffoldNuxtSite,
20
+ next: scaffoldNextSite,
21
+ eleventy: scaffoldEleventySite,
22
+ };
23
+ scaffolders[target](options);
21
24
  }
22
25
  function scaffoldSvelteKitSite(options) {
23
26
  const { projectName, targetDir, theme } = options;
@@ -28,42 +31,20 @@ function scaffoldSvelteKitSite(options) {
28
31
  `This is a bug in create-refrakt — please report it.`);
29
32
  }
30
33
  cpSync(templateDir, targetDir, { recursive: true });
31
- // Rename dotfiles (npm strips .gitignore from published tarballs)
32
- const dotfileRenames = {
33
- '_gitignore': '.gitignore',
34
- '_npmrc': '.npmrc',
35
- };
36
- for (const [from, to] of Object.entries(dotfileRenames)) {
37
- const srcPath = path.join(targetDir, from);
38
- if (existsSync(srcPath)) {
39
- renameSync(srcPath, path.join(targetDir, to));
40
- }
41
- }
42
- // Generate interpolated files
34
+ renameDotfiles(targetDir);
43
35
  writeFileSync(path.join(targetDir, 'package.json'), generatePackageJson(projectName, theme));
44
36
  writeFileSync(path.join(targetDir, 'refrakt.config.json'), generateRefraktConfig(theme));
45
37
  writeFileSync(path.join(targetDir, 'README.md'), generateReadme(projectName));
46
38
  }
47
39
  function scaffoldHtmlSite(options) {
48
40
  const { projectName, targetDir, theme } = options;
49
- // Copy HTML template directory
50
41
  const templateDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', 'template-html');
51
42
  if (!existsSync(templateDir)) {
52
43
  throw new Error(`Template directory not found at ${templateDir}. ` +
53
44
  `This is a bug in create-refrakt — please report it.`);
54
45
  }
55
46
  cpSync(templateDir, targetDir, { recursive: true });
56
- // Rename dotfiles
57
- const dotfileRenames = {
58
- '_gitignore': '.gitignore',
59
- };
60
- for (const [from, to] of Object.entries(dotfileRenames)) {
61
- const srcPath = path.join(targetDir, from);
62
- if (existsSync(srcPath)) {
63
- renameSync(srcPath, path.join(targetDir, to));
64
- }
65
- }
66
- // Generate interpolated files
47
+ renameDotfiles(targetDir);
67
48
  writeFileSync(path.join(targetDir, 'package.json'), generateHtmlPackageJson(projectName, theme));
68
49
  writeFileSync(path.join(targetDir, 'refrakt.config.json'), generateRefraktConfig(theme, 'html'));
69
50
  writeFileSync(path.join(targetDir, 'README.md'), generateReadme(projectName));
@@ -146,6 +127,186 @@ function generateHtmlPackageJson(projectName, theme) {
146
127
  };
147
128
  return JSON.stringify(pkg, null, '\t') + '\n';
148
129
  }
130
+ function scaffoldAstroSite(options) {
131
+ const { projectName, targetDir, theme } = options;
132
+ const templateDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', 'template-astro');
133
+ if (!existsSync(templateDir)) {
134
+ throw new Error(`Template directory not found at ${templateDir}. ` +
135
+ `This is a bug in create-refrakt — please report it.`);
136
+ }
137
+ cpSync(templateDir, targetDir, { recursive: true });
138
+ renameDotfiles(targetDir);
139
+ writeFileSync(path.join(targetDir, 'package.json'), generateAstroPackageJson(projectName, theme));
140
+ writeFileSync(path.join(targetDir, 'refrakt.config.json'), generateRefraktConfig(theme, 'astro'));
141
+ writeFileSync(path.join(targetDir, 'README.md'), generateReadme(projectName));
142
+ }
143
+ function scaffoldNuxtSite(options) {
144
+ const { projectName, targetDir, theme } = options;
145
+ const templateDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', 'template-nuxt');
146
+ if (!existsSync(templateDir)) {
147
+ throw new Error(`Template directory not found at ${templateDir}. ` +
148
+ `This is a bug in create-refrakt — please report it.`);
149
+ }
150
+ cpSync(templateDir, targetDir, { recursive: true });
151
+ renameDotfiles(targetDir);
152
+ writeFileSync(path.join(targetDir, 'package.json'), generateNuxtPackageJson(projectName, theme));
153
+ writeFileSync(path.join(targetDir, 'refrakt.config.json'), generateRefraktConfig(theme, 'nuxt'));
154
+ writeFileSync(path.join(targetDir, 'README.md'), generateReadme(projectName));
155
+ }
156
+ function scaffoldNextSite(options) {
157
+ const { projectName, targetDir, theme } = options;
158
+ const templateDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', 'template-next');
159
+ if (!existsSync(templateDir)) {
160
+ throw new Error(`Template directory not found at ${templateDir}. ` +
161
+ `This is a bug in create-refrakt — please report it.`);
162
+ }
163
+ cpSync(templateDir, targetDir, { recursive: true });
164
+ renameDotfiles(targetDir);
165
+ writeFileSync(path.join(targetDir, 'package.json'), generateNextPackageJson(projectName, theme));
166
+ writeFileSync(path.join(targetDir, 'refrakt.config.json'), generateRefraktConfig(theme, 'next'));
167
+ writeFileSync(path.join(targetDir, 'README.md'), generateReadme(projectName));
168
+ }
169
+ function scaffoldEleventySite(options) {
170
+ const { projectName, targetDir, theme } = options;
171
+ const templateDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', 'template-eleventy');
172
+ if (!existsSync(templateDir)) {
173
+ throw new Error(`Template directory not found at ${templateDir}. ` +
174
+ `This is a bug in create-refrakt — please report it.`);
175
+ }
176
+ cpSync(templateDir, targetDir, { recursive: true });
177
+ renameDotfiles(targetDir);
178
+ writeFileSync(path.join(targetDir, 'package.json'), generateEleventyPackageJson(projectName, theme));
179
+ writeFileSync(path.join(targetDir, 'refrakt.config.json'), generateRefraktConfig(theme, 'eleventy'));
180
+ writeFileSync(path.join(targetDir, 'README.md'), generateReadme(projectName));
181
+ }
182
+ function renameDotfiles(targetDir) {
183
+ const dotfileRenames = {
184
+ '_gitignore': '.gitignore',
185
+ '_npmrc': '.npmrc',
186
+ };
187
+ for (const [from, to] of Object.entries(dotfileRenames)) {
188
+ const srcPath = path.join(targetDir, from);
189
+ if (existsSync(srcPath)) {
190
+ renameSync(srcPath, path.join(targetDir, to));
191
+ }
192
+ }
193
+ }
194
+ function generateAstroPackageJson(projectName, theme) {
195
+ const v = `~${getRefraktVersion()}`;
196
+ const pkg = {
197
+ name: projectName,
198
+ private: true,
199
+ version: '0.0.1',
200
+ type: 'module',
201
+ scripts: {
202
+ dev: 'astro dev',
203
+ build: 'astro build',
204
+ preview: 'astro preview',
205
+ },
206
+ dependencies: {
207
+ '@refrakt-md/astro': v,
208
+ '@refrakt-md/behaviors': v,
209
+ '@refrakt-md/content': v,
210
+ '@refrakt-md/runes': v,
211
+ '@refrakt-md/transform': v,
212
+ '@refrakt-md/types': v,
213
+ [theme]: v,
214
+ 'astro': '^5.0.0',
215
+ '@markdoc/markdoc': '^0.4.0',
216
+ },
217
+ devDependencies: {
218
+ 'typescript': '^5.4.0',
219
+ },
220
+ };
221
+ return JSON.stringify(pkg, null, '\t') + '\n';
222
+ }
223
+ function generateNuxtPackageJson(projectName, theme) {
224
+ const v = `~${getRefraktVersion()}`;
225
+ const pkg = {
226
+ name: projectName,
227
+ private: true,
228
+ version: '0.0.1',
229
+ type: 'module',
230
+ scripts: {
231
+ dev: 'nuxt dev',
232
+ build: 'nuxt generate',
233
+ preview: 'nuxt preview',
234
+ },
235
+ dependencies: {
236
+ '@refrakt-md/content': v,
237
+ '@refrakt-md/nuxt': v,
238
+ '@refrakt-md/runes': v,
239
+ '@refrakt-md/transform': v,
240
+ '@refrakt-md/types': v,
241
+ [theme]: v,
242
+ '@markdoc/markdoc': '^0.4.0',
243
+ },
244
+ devDependencies: {
245
+ 'nuxt': '^3.0.0',
246
+ 'typescript': '^5.4.0',
247
+ },
248
+ };
249
+ return JSON.stringify(pkg, null, '\t') + '\n';
250
+ }
251
+ function generateNextPackageJson(projectName, theme) {
252
+ const v = `~${getRefraktVersion()}`;
253
+ const pkg = {
254
+ name: projectName,
255
+ private: true,
256
+ version: '0.0.1',
257
+ type: 'module',
258
+ scripts: {
259
+ dev: 'next dev',
260
+ build: 'next build',
261
+ start: 'npx serve out',
262
+ },
263
+ dependencies: {
264
+ '@refrakt-md/behaviors': v,
265
+ '@refrakt-md/content': v,
266
+ '@refrakt-md/next': v,
267
+ '@refrakt-md/runes': v,
268
+ '@refrakt-md/transform': v,
269
+ '@refrakt-md/types': v,
270
+ [theme]: v,
271
+ 'next': '^15.0.0',
272
+ 'react': '^19.0.0',
273
+ 'react-dom': '^19.0.0',
274
+ '@markdoc/markdoc': '^0.4.0',
275
+ },
276
+ devDependencies: {
277
+ '@types/react': '^19.0.0',
278
+ 'typescript': '^5.4.0',
279
+ },
280
+ };
281
+ return JSON.stringify(pkg, null, '\t') + '\n';
282
+ }
283
+ function generateEleventyPackageJson(projectName, theme) {
284
+ const v = `~${getRefraktVersion()}`;
285
+ const pkg = {
286
+ name: projectName,
287
+ private: true,
288
+ version: '0.0.1',
289
+ type: 'module',
290
+ scripts: {
291
+ dev: 'eleventy --serve',
292
+ build: 'eleventy',
293
+ },
294
+ dependencies: {
295
+ '@refrakt-md/content': v,
296
+ '@refrakt-md/eleventy': v,
297
+ '@refrakt-md/runes': v,
298
+ '@refrakt-md/transform': v,
299
+ '@refrakt-md/types': v,
300
+ [theme]: v,
301
+ '@markdoc/markdoc': '^0.4.0',
302
+ },
303
+ devDependencies: {
304
+ '@11ty/eleventy': '^3.0.0',
305
+ 'typescript': '^5.4.0',
306
+ },
307
+ };
308
+ return JSON.stringify(pkg, null, '\t') + '\n';
309
+ }
149
310
  function generateReadme(projectName) {
150
311
  return `# ${projectName}
151
312
 
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "create-refrakt",
3
3
  "description": "Scaffold a new refrakt.md project",
4
- "version": "0.9.1",
4
+ "version": "0.9.2",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -19,7 +19,11 @@
19
19
  "files": [
20
20
  "dist",
21
21
  "template",
22
- "template-html"
22
+ "template-html",
23
+ "template-astro",
24
+ "template-nuxt",
25
+ "template-next",
26
+ "template-eleventy"
23
27
  ],
24
28
  "scripts": {
25
29
  "build": "tsc"
@@ -0,0 +1,2 @@
1
+ node_modules
2
+ build
@@ -0,0 +1,6 @@
1
+ import { defineConfig } from 'astro/config';
2
+ import { refrakt } from '@refrakt-md/astro';
3
+
4
+ export default defineConfig({
5
+ integrations: [refrakt()],
6
+ });
@@ -0,0 +1,14 @@
1
+ {% layout %}
2
+ {% region name="header" %}
3
+ # My Site
4
+ {% /region %}
5
+
6
+ {% region name="nav" %}
7
+ {% nav %}
8
+ ## Docs
9
+
10
+ - getting-started
11
+
12
+ {% /nav %}
13
+ {% /region %}
14
+ {% /layout %}
@@ -0,0 +1,40 @@
1
+ ---
2
+ title: Getting Started
3
+ description: Learn how to work with your refrakt.md site
4
+ ---
5
+
6
+ # Getting Started
7
+
8
+ This is your first documentation page. You can find this file at `content/docs/getting-started.md`.
9
+
10
+ ## Project Structure
11
+
12
+ Your site has two key directories:
13
+
14
+ - `content/` — Markdown files that make up your pages
15
+ - `build/` — Generated HTML output (created by `npm run build`)
16
+
17
+ ## Writing Content
18
+
19
+ Every Markdown file in `content/` becomes a page. Add frontmatter at the top for metadata:
20
+
21
+ ```markdown
22
+ ---
23
+ title: Page Title
24
+ description: A brief description
25
+ ---
26
+ ```
27
+
28
+ ## Using Runes
29
+
30
+ Runes are Markdoc tags that give your Markdown semantic meaning:
31
+
32
+ {% hint type="note" %}
33
+ This callout is created with the `hint` rune. Try changing the `type` attribute to `warning`, `caution`, or `check`.
34
+ {% /hint %}
35
+
36
+ ## Next Steps
37
+
38
+ - Add more pages by creating `.md` files in `content/`
39
+ - Edit `content/_layout.md` to customize your site's header and navigation
40
+ - Explore the available runes in the refrakt.md documentation
@@ -0,0 +1,18 @@
1
+ ---
2
+ title: Welcome
3
+ description: A new refrakt.md site
4
+ ---
5
+
6
+ {% cta %}
7
+
8
+ # Welcome to your site
9
+
10
+ This site is built with refrakt.md — a content framework that extends Markdown with semantic runes.
11
+
12
+ - [Get Started](/docs/getting-started)
13
+
14
+ {% /cta %}
15
+
16
+ {% hint type="note" %}
17
+ Edit the files in `content/` to start building your site. Run `npm run build` to regenerate after changes.
18
+ {% /hint %}
@@ -0,0 +1,89 @@
1
+ ---
2
+ import { loadContent } from '@refrakt-md/content';
3
+ import { createTransform } from '@refrakt-md/transform';
4
+ import { baseConfig } from '@refrakt-md/runes';
5
+ import manifest from '@refrakt-md/lumina/manifest';
6
+ import { layouts } from '@refrakt-md/lumina/layouts';
7
+ const theme = { manifest, layouts };
8
+ import { renderPage, buildSeoHead, hasInteractiveRunes } from '@refrakt-md/astro';
9
+ import type { RendererNode } from '@refrakt-md/types';
10
+
11
+ export async function getStaticPaths() {
12
+ const site = await loadContent('./content', '/');
13
+ const transform = createTransform(baseConfig);
14
+
15
+ return site.pages
16
+ .filter((p: any) => !p.route.draft)
17
+ .map((page: any) => {
18
+ const renderable = transform(page.renderable) as RendererNode;
19
+ const regions: Record<string, any> = {};
20
+ for (const [name, region] of page.layout.regions.entries()) {
21
+ regions[name] = {
22
+ name: region.name,
23
+ mode: region.mode,
24
+ content: region.content.map((c: any) => transform(c) as RendererNode),
25
+ };
26
+ }
27
+
28
+ const pages = site.pages
29
+ .filter((p: any) => !p.route.draft)
30
+ .map((p: any) => ({
31
+ url: p.route.url,
32
+ title: (p.frontmatter.title as string) ?? '',
33
+ draft: false,
34
+ }));
35
+
36
+ const slug = page.route.url === '/' ? undefined : page.route.url.slice(1);
37
+
38
+ return {
39
+ params: { slug },
40
+ props: {
41
+ page: {
42
+ renderable,
43
+ regions,
44
+ title: (page.frontmatter.title as string) ?? '',
45
+ url: page.route.url,
46
+ pages,
47
+ frontmatter: page.frontmatter,
48
+ headings: page.headings,
49
+ },
50
+ seo: page.seo,
51
+ },
52
+ };
53
+ });
54
+ }
55
+
56
+ const { page, seo } = Astro.props;
57
+ const html = renderPage({ theme, page });
58
+ const head = buildSeoHead({ title: page.title, frontmatter: page.frontmatter, seo });
59
+ const needsBehaviors = hasInteractiveRunes(page.renderable);
60
+ const contextData = JSON.stringify({ pages: page.pages, currentUrl: page.url });
61
+ ---
62
+
63
+ <html lang="en">
64
+ <head>
65
+ <meta charset="utf-8" />
66
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
67
+ {head.title && <title>{head.title}</title>}
68
+ <Fragment set:html={head.metaTags} />
69
+ <Fragment set:html={head.jsonLd} />
70
+ </head>
71
+ <body>
72
+ <Fragment set:html={html} />
73
+ <script type="application/json" id="rf-context" set:html={contextData} />
74
+ {needsBehaviors && (
75
+ <script>
76
+ import { registerElements, RfContext, initRuneBehaviors, initLayoutBehaviors } from '@refrakt-md/behaviors';
77
+ function init() {
78
+ const el = document.getElementById('rf-context');
79
+ if (el) { try { const ctx = JSON.parse(el.textContent || '{}'); RfContext.pages = ctx.pages; RfContext.currentUrl = ctx.currentUrl; } catch {} }
80
+ registerElements();
81
+ initRuneBehaviors();
82
+ initLayoutBehaviors();
83
+ }
84
+ init();
85
+ document.addEventListener('astro:page-load', () => init());
86
+ </script>
87
+ )}
88
+ </body>
89
+ </html>
@@ -0,0 +1,7 @@
1
+ {
2
+ "compilerOptions": {
3
+ "strict": true,
4
+ "esModuleInterop": true,
5
+ "skipLibCheck": true
6
+ }
7
+ }
@@ -0,0 +1,2 @@
1
+ node_modules
2
+ build
@@ -0,0 +1,14 @@
1
+ {% layout %}
2
+ {% region name="header" %}
3
+ # My Site
4
+ {% /region %}
5
+
6
+ {% region name="nav" %}
7
+ {% nav %}
8
+ ## Docs
9
+
10
+ - getting-started
11
+
12
+ {% /nav %}
13
+ {% /region %}
14
+ {% /layout %}
@@ -0,0 +1,40 @@
1
+ ---
2
+ title: Getting Started
3
+ description: Learn how to work with your refrakt.md site
4
+ ---
5
+
6
+ # Getting Started
7
+
8
+ This is your first documentation page. You can find this file at `content/docs/getting-started.md`.
9
+
10
+ ## Project Structure
11
+
12
+ Your site has two key directories:
13
+
14
+ - `content/` — Markdown files that make up your pages
15
+ - `build/` — Generated HTML output (created by `npm run build`)
16
+
17
+ ## Writing Content
18
+
19
+ Every Markdown file in `content/` becomes a page. Add frontmatter at the top for metadata:
20
+
21
+ ```markdown
22
+ ---
23
+ title: Page Title
24
+ description: A brief description
25
+ ---
26
+ ```
27
+
28
+ ## Using Runes
29
+
30
+ Runes are Markdoc tags that give your Markdown semantic meaning:
31
+
32
+ {% hint type="note" %}
33
+ This callout is created with the `hint` rune. Try changing the `type` attribute to `warning`, `caution`, or `check`.
34
+ {% /hint %}
35
+
36
+ ## Next Steps
37
+
38
+ - Add more pages by creating `.md` files in `content/`
39
+ - Edit `content/_layout.md` to customize your site's header and navigation
40
+ - Explore the available runes in the refrakt.md documentation
@@ -0,0 +1,18 @@
1
+ ---
2
+ title: Welcome
3
+ description: A new refrakt.md site
4
+ ---
5
+
6
+ {% cta %}
7
+
8
+ # Welcome to your site
9
+
10
+ This site is built with refrakt.md — a content framework that extends Markdown with semantic runes.
11
+
12
+ - [Get Started](/docs/getting-started)
13
+
14
+ {% /cta %}
15
+
16
+ {% hint type="note" %}
17
+ Edit the files in `content/` to start building your site. Run `npm run build` to regenerate after changes.
18
+ {% /hint %}
@@ -0,0 +1,22 @@
1
+ import { refraktPlugin } from '@refrakt-md/eleventy';
2
+
3
+ export default function (eleventyConfig) {
4
+ eleventyConfig.addPlugin(refraktPlugin, {
5
+ cssFiles: ['node_modules/@refrakt-md/lumina/index.css'],
6
+ cssPrefix: '/css',
7
+ });
8
+
9
+ eleventyConfig.addPassthroughCopy({
10
+ 'node_modules/@refrakt-md/lumina/tokens': '/css/tokens',
11
+ 'node_modules/@refrakt-md/lumina/styles': '/css/styles',
12
+ });
13
+
14
+ return {
15
+ dir: {
16
+ input: 'src',
17
+ output: '_site',
18
+ includes: '_includes',
19
+ data: '_data',
20
+ },
21
+ };
22
+ }
@@ -0,0 +1,5 @@
1
+ import { createDataFile } from '@refrakt-md/eleventy';
2
+ import manifest from '@refrakt-md/lumina/manifest';
3
+ import { layouts } from '@refrakt-md/lumina/layouts';
4
+
5
+ export default createDataFile({ theme: { manifest, layouts } });
@@ -0,0 +1,22 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ {% if seo.title %}<title>{{ seo.title }}</title>{% endif %}
7
+ {{ seo.metaTags | safe }}
8
+ {{ seo.jsonLd | safe }}
9
+ <link rel="stylesheet" href="/css/index.css">
10
+ </head>
11
+ <body>
12
+ {{ html | safe }}
13
+ <script type="module">
14
+ import { registerElements, RfContext, initRuneBehaviors, initLayoutBehaviors } from '/js/behaviors.js';
15
+
16
+ RfContext.currentUrl = '{{ url }}';
17
+ registerElements();
18
+ initRuneBehaviors();
19
+ initLayoutBehaviors();
20
+ </script>
21
+ </body>
22
+ </html>
@@ -0,0 +1,9 @@
1
+ ---
2
+ layout: base.njk
3
+ pagination:
4
+ data: refrakt
5
+ size: 1
6
+ alias: page
7
+ permalink: "{{ page.url | slug }}/"
8
+ ---
9
+ {{ page.html | safe }}
@@ -0,0 +1,2 @@
1
+ node_modules
2
+ build
@@ -0,0 +1,79 @@
1
+ import { loadContent } from '@refrakt-md/content';
2
+ import { createTransform } from '@refrakt-md/transform';
3
+ import { baseConfig } from '@refrakt-md/runes';
4
+ import manifest from '@refrakt-md/lumina/manifest';
5
+ import { layouts } from '@refrakt-md/lumina/layouts';
6
+ const theme = { manifest, layouts };
7
+ import { RefraktContent, buildMetadata, buildUrlFromParams, hasInteractiveRunes } from '@refrakt-md/next';
8
+ import { BehaviorInit } from '@refrakt-md/next/client';
9
+ import type { RendererNode } from '@refrakt-md/types';
10
+
11
+ export async function generateStaticParams() {
12
+ const site = await loadContent('./content', '/');
13
+ return site.pages
14
+ .filter((p: any) => !p.route.draft)
15
+ .map((page: any) => ({
16
+ slug: page.route.url === '/' ? [] : page.route.url.slice(1).split('/'),
17
+ }));
18
+ }
19
+
20
+ export async function generateMetadata({ params }: { params: Promise<{ slug?: string[] }> }) {
21
+ const resolvedParams = await params;
22
+ const url = buildUrlFromParams(resolvedParams);
23
+ const site = await loadContent('./content', '/');
24
+ const page = site.pages.find((p: any) => p.route.url === url);
25
+ if (!page) return {};
26
+
27
+ return buildMetadata({
28
+ title: (page.frontmatter.title as string) ?? '',
29
+ frontmatter: page.frontmatter,
30
+ seo: page.seo,
31
+ });
32
+ }
33
+
34
+ export default async function Page({ params }: { params: Promise<{ slug?: string[] }> }) {
35
+ const resolvedParams = await params;
36
+ const url = buildUrlFromParams(resolvedParams);
37
+ const site = await loadContent('./content', '/');
38
+ const currentPage = site.pages.find((p: any) => p.route.url === url);
39
+ if (!currentPage) return <div>Page not found</div>;
40
+
41
+ const transform = createTransform(baseConfig);
42
+ const renderable = transform(currentPage.renderable) as RendererNode;
43
+
44
+ const regions: Record<string, any> = {};
45
+ for (const [name, region] of currentPage.layout.regions.entries()) {
46
+ regions[name] = {
47
+ name: region.name,
48
+ mode: region.mode,
49
+ content: region.content.map((c: any) => transform(c) as RendererNode),
50
+ };
51
+ }
52
+
53
+ const pages = site.pages
54
+ .filter((p: any) => !p.route.draft)
55
+ .map((p: any) => ({
56
+ url: p.route.url,
57
+ title: (p.frontmatter.title as string) ?? '',
58
+ draft: false,
59
+ }));
60
+
61
+ const page = {
62
+ renderable,
63
+ regions,
64
+ title: (currentPage.frontmatter.title as string) ?? '',
65
+ url: currentPage.route.url,
66
+ pages,
67
+ frontmatter: currentPage.frontmatter,
68
+ headings: currentPage.headings,
69
+ };
70
+
71
+ const needsBehaviors = hasInteractiveRunes(page.renderable);
72
+
73
+ return (
74
+ <>
75
+ <RefraktContent theme={theme} page={page} />
76
+ {needsBehaviors && <BehaviorInit pages={pages} currentUrl={page.url} />}
77
+ </>
78
+ );
79
+ }
@@ -0,0 +1,10 @@
1
+ import '@refrakt-md/lumina';
2
+ import type { ReactNode } from 'react';
3
+
4
+ export default function RootLayout({ children }: { children: ReactNode }) {
5
+ return (
6
+ <html lang="en">
7
+ <body>{children}</body>
8
+ </html>
9
+ );
10
+ }
@@ -0,0 +1,14 @@
1
+ {% layout %}
2
+ {% region name="header" %}
3
+ # My Site
4
+ {% /region %}
5
+
6
+ {% region name="nav" %}
7
+ {% nav %}
8
+ ## Docs
9
+
10
+ - getting-started
11
+
12
+ {% /nav %}
13
+ {% /region %}
14
+ {% /layout %}
@@ -0,0 +1,40 @@
1
+ ---
2
+ title: Getting Started
3
+ description: Learn how to work with your refrakt.md site
4
+ ---
5
+
6
+ # Getting Started
7
+
8
+ This is your first documentation page. You can find this file at `content/docs/getting-started.md`.
9
+
10
+ ## Project Structure
11
+
12
+ Your site has two key directories:
13
+
14
+ - `content/` — Markdown files that make up your pages
15
+ - `build/` — Generated HTML output (created by `npm run build`)
16
+
17
+ ## Writing Content
18
+
19
+ Every Markdown file in `content/` becomes a page. Add frontmatter at the top for metadata:
20
+
21
+ ```markdown
22
+ ---
23
+ title: Page Title
24
+ description: A brief description
25
+ ---
26
+ ```
27
+
28
+ ## Using Runes
29
+
30
+ Runes are Markdoc tags that give your Markdown semantic meaning:
31
+
32
+ {% hint type="note" %}
33
+ This callout is created with the `hint` rune. Try changing the `type` attribute to `warning`, `caution`, or `check`.
34
+ {% /hint %}
35
+
36
+ ## Next Steps
37
+
38
+ - Add more pages by creating `.md` files in `content/`
39
+ - Edit `content/_layout.md` to customize your site's header and navigation
40
+ - Explore the available runes in the refrakt.md documentation
@@ -0,0 +1,18 @@
1
+ ---
2
+ title: Welcome
3
+ description: A new refrakt.md site
4
+ ---
5
+
6
+ {% cta %}
7
+
8
+ # Welcome to your site
9
+
10
+ This site is built with refrakt.md — a content framework that extends Markdown with semantic runes.
11
+
12
+ - [Get Started](/docs/getting-started)
13
+
14
+ {% /cta %}
15
+
16
+ {% hint type="note" %}
17
+ Edit the files in `content/` to start building your site. Run `npm run build` to regenerate after changes.
18
+ {% /hint %}
@@ -0,0 +1,14 @@
1
+ /** @type {import('next').NextConfig} */
2
+ const nextConfig = {
3
+ output: 'export',
4
+ transpilePackages: [
5
+ '@markdoc/markdoc',
6
+ '@refrakt-md/runes',
7
+ '@refrakt-md/content',
8
+ '@refrakt-md/types',
9
+ '@refrakt-md/next',
10
+ '@refrakt-md/transform',
11
+ ],
12
+ };
13
+
14
+ export default nextConfig;
@@ -0,0 +1,21 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2017",
4
+ "lib": ["dom", "dom.iterable", "esnext"],
5
+ "allowJs": true,
6
+ "skipLibCheck": true,
7
+ "strict": true,
8
+ "noEmit": true,
9
+ "esModuleInterop": true,
10
+ "module": "esnext",
11
+ "moduleResolution": "bundler",
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "jsx": "preserve",
15
+ "incremental": true,
16
+ "plugins": [{ "name": "next" }],
17
+ "paths": { "@/*": ["./*"] }
18
+ },
19
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
20
+ "exclude": ["node_modules"]
21
+ }
@@ -0,0 +1,2 @@
1
+ node_modules
2
+ build
@@ -0,0 +1,14 @@
1
+ {% layout %}
2
+ {% region name="header" %}
3
+ # My Site
4
+ {% /region %}
5
+
6
+ {% region name="nav" %}
7
+ {% nav %}
8
+ ## Docs
9
+
10
+ - getting-started
11
+
12
+ {% /nav %}
13
+ {% /region %}
14
+ {% /layout %}
@@ -0,0 +1,40 @@
1
+ ---
2
+ title: Getting Started
3
+ description: Learn how to work with your refrakt.md site
4
+ ---
5
+
6
+ # Getting Started
7
+
8
+ This is your first documentation page. You can find this file at `content/docs/getting-started.md`.
9
+
10
+ ## Project Structure
11
+
12
+ Your site has two key directories:
13
+
14
+ - `content/` — Markdown files that make up your pages
15
+ - `build/` — Generated HTML output (created by `npm run build`)
16
+
17
+ ## Writing Content
18
+
19
+ Every Markdown file in `content/` becomes a page. Add frontmatter at the top for metadata:
20
+
21
+ ```markdown
22
+ ---
23
+ title: Page Title
24
+ description: A brief description
25
+ ---
26
+ ```
27
+
28
+ ## Using Runes
29
+
30
+ Runes are Markdoc tags that give your Markdown semantic meaning:
31
+
32
+ {% hint type="note" %}
33
+ This callout is created with the `hint` rune. Try changing the `type` attribute to `warning`, `caution`, or `check`.
34
+ {% /hint %}
35
+
36
+ ## Next Steps
37
+
38
+ - Add more pages by creating `.md` files in `content/`
39
+ - Edit `content/_layout.md` to customize your site's header and navigation
40
+ - Explore the available runes in the refrakt.md documentation
@@ -0,0 +1,18 @@
1
+ ---
2
+ title: Welcome
3
+ description: A new refrakt.md site
4
+ ---
5
+
6
+ {% cta %}
7
+
8
+ # Welcome to your site
9
+
10
+ This site is built with refrakt.md — a content framework that extends Markdown with semantic runes.
11
+
12
+ - [Get Started](/docs/getting-started)
13
+
14
+ {% /cta %}
15
+
16
+ {% hint type="note" %}
17
+ Edit the files in `content/` to start building your site. Run `npm run build` to regenerate after changes.
18
+ {% /hint %}
@@ -0,0 +1,3 @@
1
+ export default defineNuxtConfig({
2
+ modules: ['@refrakt-md/nuxt'],
3
+ });
@@ -0,0 +1,70 @@
1
+ <script setup lang="ts">
2
+ import { loadContent } from '@refrakt-md/content';
3
+ import { createTransform } from '@refrakt-md/transform';
4
+ import { baseConfig } from '@refrakt-md/runes';
5
+ import manifest from '@refrakt-md/lumina/manifest';
6
+ import { layouts } from '@refrakt-md/lumina/layouts';
7
+ const theme = { manifest, layouts };
8
+ import { renderPage, buildRefraktHead } from '@refrakt-md/nuxt';
9
+ import type { RendererNode } from '@refrakt-md/types';
10
+
11
+ const route = useRoute();
12
+
13
+ const { data } = await useAsyncData('refrakt-' + route.path, async () => {
14
+ const site = await loadContent('./content', '/');
15
+ const transform = createTransform(baseConfig);
16
+
17
+ const currentPage = site.pages.find((p: any) => p.route.url === route.path);
18
+ if (!currentPage) throw createError({ statusCode: 404, message: 'Page not found' });
19
+
20
+ const renderable = transform(currentPage.renderable) as RendererNode;
21
+ const regions: Record<string, any> = {};
22
+ for (const [name, region] of currentPage.layout.regions.entries()) {
23
+ regions[name] = {
24
+ name: region.name,
25
+ mode: region.mode,
26
+ content: region.content.map((c: any) => transform(c) as RendererNode),
27
+ };
28
+ }
29
+
30
+ const pages = site.pages
31
+ .filter((p: any) => !p.route.draft)
32
+ .map((p: any) => ({
33
+ url: p.route.url,
34
+ title: (p.frontmatter.title as string) ?? '',
35
+ draft: false,
36
+ }));
37
+
38
+ return {
39
+ html: renderPage({
40
+ theme,
41
+ page: {
42
+ renderable,
43
+ regions,
44
+ title: (currentPage.frontmatter.title as string) ?? '',
45
+ url: currentPage.route.url,
46
+ pages,
47
+ frontmatter: currentPage.frontmatter,
48
+ headings: currentPage.headings,
49
+ },
50
+ }),
51
+ seo: buildRefraktHead({
52
+ title: (currentPage.frontmatter.title as string) ?? '',
53
+ frontmatter: currentPage.frontmatter,
54
+ seo: currentPage.seo,
55
+ }),
56
+ };
57
+ });
58
+
59
+ if (data.value?.seo) {
60
+ useHead({
61
+ title: data.value.seo.title,
62
+ meta: data.value.seo.meta,
63
+ script: data.value.seo.script,
64
+ });
65
+ }
66
+ </script>
67
+
68
+ <template>
69
+ <div v-if="data" v-html="data.html" />
70
+ </template>
@@ -0,0 +1,3 @@
1
+ {
2
+ "extends": "./.nuxt/tsconfig.json"
3
+ }