create-riebeckite 0.0.30 → 0.0.32

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/dist/src/index.js CHANGED
@@ -298,7 +298,10 @@ var seo = np("@riebeckite/plugin-seo", "seo", {
298
298
  var toc = np("@riebeckite/plugin-toc", "tocPlugin");
299
299
  var properties = np("@riebeckite/plugin-properties", "properties", {
300
300
  include: { depth: 2, value: '["created", "modified", "tags", "status"]' },
301
- order: { depth: 2, value: '["created", "modified", "tags", "status"]' }
301
+ fields: {
302
+ depth: 2,
303
+ value: '{ created: { type: "date", format: "yyyy-MM-dd" }, modified: { type: "date", format: "yyyy-MM-dd" }, tags: { type: "tags", variant: "chips" }, status: { type: "badge", variants: { active: "success", draft: "warning", archived: "danger" } } }'
304
+ }
302
305
  });
303
306
  var alias = np("@riebeckite/plugin-alias", "aliasPlugin", `{ status: 308 }`);
304
307
  var codeEnhance = np("@riebeckite/plugin-code-enhance", "codeEnhance", {
@@ -431,12 +434,7 @@ var gallery = np("@riebeckite/plugin-gallery", "gallery", {
431
434
  aspect: { depth: 2, value: '"4/3"' },
432
435
  language: { depth: 3, value: '"gallery"' }
433
436
  });
434
- var mermaid = np("@riebeckite/plugin-mermaid", "mermaid", {
435
- render: { depth: 2, value: '"build"' },
436
- theme: { depth: 2, value: '{ light: "default", dark: "dark" }' },
437
- caption: { depth: 3, value: "true" },
438
- fallback: { depth: 3, value: "true" }
439
- });
437
+ var mermaidPele = np("@riebeckite/plugin-mermaid-pele", "mermaidPele");
440
438
  var graphviz = np("@riebeckite/plugin-graphviz", "graphviz", {
441
439
  render: { depth: 2, value: '"build"' },
442
440
  engine: { depth: 2, value: '"dot"' },
@@ -578,8 +576,7 @@ var gardenExplorer = np(
578
576
  var ux = np("@riebeckite/plugin-ux", "uxPlugin", {
579
577
  progress: { depth: 2, value: "true" },
580
578
  backToTop: { depth: 2, value: "true" },
581
- tocScrollSpy: { depth: 2, value: "true" },
582
- codeCopy: { depth: 3, value: "true" }
579
+ tocScrollSpy: { depth: 2, value: "true" }
583
580
  });
584
581
  var dailyNotes = np(
585
582
  "@riebeckite/plugin-daily-notes",
@@ -708,7 +705,7 @@ var showcase = {
708
705
  autoCardLink,
709
706
  richEmbed,
710
707
  gallery,
711
- mermaid,
708
+ mermaidPele,
712
709
  graphviz,
713
710
  d2,
714
711
  plantuml,
@@ -866,6 +863,7 @@ function parseArguments(arguments_) {
866
863
  let utilities;
867
864
  let listPresets = false;
868
865
  let githubActions = false;
866
+ let cloudflareWorkers = false;
869
867
  let contentRepository;
870
868
  let siteRepository;
871
869
  for (let index = 0; index < arguments_.length; index += 1) {
@@ -882,6 +880,10 @@ function parseArguments(arguments_) {
882
880
  githubActions = true;
883
881
  continue;
884
882
  }
883
+ if (argument === "--cloudflare-workers") {
884
+ cloudflareWorkers = true;
885
+ continue;
886
+ }
885
887
  if (argument === "--content-repository" || argument === "--site-repository") {
886
888
  const value = arguments_[index + 1];
887
889
  if (value === void 0 || value.startsWith("-")) {
@@ -919,7 +921,7 @@ function parseArguments(arguments_) {
919
921
  }
920
922
  if (directory !== void 0) {
921
923
  throw new Error(
922
- "Usage: create-riebeckite [directory] [--preset <name>] [--utilities <names>] [--github-actions] [--content-repository <owner/repository>] [--site-repository <owner/repository>] [--force]"
924
+ "Usage: create-riebeckite [directory] [--preset <name>] [--utilities <names>] [--github-actions | --cloudflare-workers] [--content-repository <owner/repository>] [--site-repository <owner/repository>] [--force]"
923
925
  );
924
926
  }
925
927
  directory = argument;
@@ -932,6 +934,7 @@ function parseArguments(arguments_) {
932
934
  listPresets,
933
935
  deployment: scaffoldDeploymentFromFlags({
934
936
  githubActions,
937
+ cloudflareWorkers,
935
938
  contentRepository,
936
939
  siteRepository
937
940
  })
@@ -946,7 +949,14 @@ function printPresets() {
946
949
  }
947
950
 
948
951
  // src/interactive.ts
949
- import { isCancel, log, multiselect, select, text } from "@clack/prompts";
952
+ import {
953
+ confirm,
954
+ isCancel,
955
+ log,
956
+ multiselect,
957
+ select,
958
+ text
959
+ } from "@clack/prompts";
950
960
  var DEFAULT_DIRECTORY = "my-riebeckite-site";
951
961
  var DEFAULT_INTERACTIVE_DEPLOYMENT = "none";
952
962
  function interactiveAnswersToOptions(answers) {
@@ -996,7 +1006,12 @@ async function promptInteractiveAnswers() {
996
1006
  }))
997
1007
  });
998
1008
  if (isCancel(preset)) return null;
999
- const utilities = await multiselect({
1009
+ const customize = await confirm({
1010
+ message: "Customize extra project files?",
1011
+ initialValue: false
1012
+ });
1013
+ if (isCancel(customize)) return null;
1014
+ const utilities = customize ? await multiselect({
1000
1015
  message: "Extra project files",
1001
1016
  options: SCAFFOLD_UTILITIES.map(({ name, label, description }) => ({
1002
1017
  value: name,
@@ -1005,7 +1020,7 @@ async function promptInteractiveAnswers() {
1005
1020
  })),
1006
1021
  initialValues: [...SCAFFOLD_DEFAULT_UTILITIES],
1007
1022
  required: false
1008
- });
1023
+ }) : SCAFFOLD_DEFAULT_UTILITIES;
1009
1024
  if (isCancel(utilities)) return null;
1010
1025
  const contentSource = await select({
1011
1026
  message: "Where will you write content?",
@@ -1061,7 +1076,12 @@ async function promptInteractiveAnswers() {
1061
1076
  answers = { directory, preset, utilities, contentSource, deployment };
1062
1077
  }
1063
1078
  log.step("Creating Riebeckite site...");
1064
- return answers;
1079
+ const installDependencies2 = await confirm({
1080
+ message: "Install dependencies now?",
1081
+ initialValue: true
1082
+ });
1083
+ if (isCancel(installDependencies2)) return null;
1084
+ return { answers, installDependencies: installDependencies2 };
1065
1085
  }
1066
1086
  async function promptDeployNow() {
1067
1087
  const answer = await select({
@@ -1237,11 +1257,11 @@ var README_DEMOS = {
1237
1257
  fence('js tab="Vanilla"', 'console.log("Hello from JavaScript");')
1238
1258
  ].join("\n")
1239
1259
  },
1240
- "@riebeckite/plugin-mermaid": {
1241
- title: { en: "Mermaid", ja: "Mermaid" },
1260
+ "@riebeckite/plugin-mermaid-pele": {
1261
+ title: { en: "Mermaid (Pele)", ja: "Mermaid (Pele)" },
1242
1262
  intro: {
1243
- en: "A `mermaid` fence becomes a rendered diagram at build time.",
1244
- ja: "`mermaid` フェンスはビルド時にレンダリングされた図になります。"
1263
+ en: "A `mermaid` fence becomes a static diagram at build time without Chromium.",
1264
+ ja: "`mermaid` フェンスは Chromium を使わずビルド時に静的な図になります。"
1245
1265
  },
1246
1266
  markdown: fence(
1247
1267
  "mermaid",
@@ -1531,7 +1551,7 @@ var README_DEMO_ORDER = [
1531
1551
  "@riebeckite/plugin-obsidian-markdown/wikilinks",
1532
1552
  "@riebeckite/plugin-code-enhance",
1533
1553
  "@riebeckite/plugin-code-tabs",
1534
- "@riebeckite/plugin-mermaid",
1554
+ "@riebeckite/plugin-mermaid-pele",
1535
1555
  "@riebeckite/plugin-d2",
1536
1556
  "@riebeckite/plugin-graphviz",
1537
1557
  "@riebeckite/plugin-chartjs",
@@ -1637,7 +1657,7 @@ var PLUGIN_MARKDOWN_GUIDES = {
1637
1657
  ].join("\n")
1638
1658
  },
1639
1659
  "@riebeckite/plugin-properties": {
1640
- summary: "Renders selected frontmatter properties in the article metadata slot.",
1660
+ summary: "Renders selected frontmatter properties in article metadata.",
1641
1661
  markdown: [
1642
1662
  "---",
1643
1663
  "created: 2026-09-30",
@@ -2734,7 +2754,7 @@ function pluginsContent(language) {
2734
2754
  lines.push(read(copy.intro, language), "");
2735
2755
  lines.push(heading(2, read(copy.installHeading, language)), "");
2736
2756
  lines.push(read(copy.installStep1, language), "");
2737
- lines.push(codeBlock("sh", "npm install @riebeckite/plugin-mermaid"));
2757
+ lines.push(codeBlock("sh", "npm install @riebeckite/plugin-mermaid-pele"));
2738
2758
  lines.push(read(copy.installStep2, language), "");
2739
2759
  lines.push(
2740
2760
  codeBlock(
@@ -2742,12 +2762,12 @@ function pluginsContent(language) {
2742
2762
  [
2743
2763
  'import { defineConfig } from "@riebeckite/core";',
2744
2764
  'import { l10n } from "@riebeckite/plugin-l10n";',
2745
- 'import { mermaid } from "@riebeckite/plugin-mermaid";',
2765
+ 'import { mermaidPele } from "@riebeckite/plugin-mermaid-pele";',
2746
2766
  'import { obsidianMarkdown } from "@riebeckite/plugin-obsidian-markdown";',
2747
2767
  "",
2748
2768
  "export default defineConfig({",
2749
2769
  " // ...",
2750
- " plugins: [obsidianMarkdown(), l10n({ ... }), mermaid()],",
2770
+ " plugins: [obsidianMarkdown(), l10n({ ... }), mermaidPele()],",
2751
2771
  "});"
2752
2772
  ].join("\n")
2753
2773
  )
@@ -3297,7 +3317,7 @@ function copyPasteDemoLines(preset, words, language) {
3297
3317
  }
3298
3318
 
3299
3319
  // src/scaffold/version.ts
3300
- var RIEBECKITE_VERSION = "^0.0.30";
3320
+ var RIEBECKITE_VERSION = "^0.0.32";
3301
3321
 
3302
3322
  // src/scaffold/templates.ts
3303
3323
  function siteTemplateFiles(preset, variables, options = {}) {
@@ -3591,7 +3611,7 @@ function isNotFoundError(error) {
3591
3611
  async function runCreateRiebeckite(arguments_) {
3592
3612
  const resolved = await resolveOptions(arguments_);
3593
3613
  if (resolved === null) return;
3594
- const { options, interactive } = resolved;
3614
+ const { options, installDependencies: shouldInstallDependencies } = resolved;
3595
3615
  if (options.listPresets) {
3596
3616
  printPresets();
3597
3617
  return;
@@ -3617,8 +3637,8 @@ async function runCreateRiebeckite(arguments_) {
3617
3637
  const relative = path4.relative(process.cwd(), result.targetDirectory) || ".";
3618
3638
  console.log(`Created a ${options.preset} Riebeckite site in ${relative}`);
3619
3639
  console.log("");
3620
- if (interactive && options.deployment.type === "cloudflare-workers") {
3621
- await publishCloudflareSite(targetDirectory, relative);
3640
+ if (shouldInstallDependencies) {
3641
+ await prepareInteractiveSite(targetDirectory, relative, options, result);
3622
3642
  return;
3623
3643
  }
3624
3644
  printScaffoldNextSteps(options, result, relative);
@@ -3630,16 +3650,35 @@ async function resolveOptions(arguments_) {
3630
3650
  console.log("Operation cancelled.");
3631
3651
  return null;
3632
3652
  }
3633
- return { options: interactiveAnswersToOptions(answers), interactive: true };
3653
+ return {
3654
+ options: interactiveAnswersToOptions(answers.answers),
3655
+ installDependencies: answers.installDependencies
3656
+ };
3634
3657
  }
3635
3658
  try {
3636
- return { options: parseArguments(arguments_), interactive: false };
3659
+ return { options: parseArguments(arguments_), installDependencies: false };
3637
3660
  } catch (error) {
3638
3661
  console.error(error instanceof Error ? error.message : String(error));
3639
3662
  process.exitCode = 1;
3640
3663
  return null;
3641
3664
  }
3642
3665
  }
3666
+ async function prepareInteractiveSite(targetDirectory, relative, options, result) {
3667
+ const commands = packageManagerCommands();
3668
+ console.log(`Installing dependencies with ${commands.name}...`);
3669
+ try {
3670
+ await installDependencies(targetDirectory, commands, spawnCommand);
3671
+ } catch (error) {
3672
+ if (!(error instanceof DeploymentFailure)) throw error;
3673
+ reportInstallationFailure(error, relative, options);
3674
+ return;
3675
+ }
3676
+ if (options.deployment.type === "cloudflare-workers") {
3677
+ await publishCloudflareSite(targetDirectory, relative, false);
3678
+ return;
3679
+ }
3680
+ printScaffoldNextSteps(options, result, relative);
3681
+ }
3643
3682
  function printScaffoldNextSteps(options, result, relative) {
3644
3683
  const externalContent = isExternalContent(options.deployment);
3645
3684
  const editFile = !externalContent && result.files.includes("content/index.md") ? "content/index.md" : void 0;
@@ -3648,15 +3687,17 @@ function printScaffoldNextSteps(options, result, relative) {
3648
3687
  function isExternalContent(deployment) {
3649
3688
  return deployment.type === "github-actions" && deployment.content.type === "external";
3650
3689
  }
3651
- async function publishCloudflareSite(targetDirectory, relative) {
3690
+ async function publishCloudflareSite(targetDirectory, relative, install = true) {
3652
3691
  const commands = packageManagerCommands();
3653
- console.log(`Installing dependencies with ${commands.name}...`);
3654
- try {
3655
- await installDependencies(targetDirectory, commands, spawnCommand);
3656
- } catch (error) {
3657
- if (!(error instanceof DeploymentFailure)) throw error;
3658
- reportDeploymentFailure(error, relative);
3659
- return;
3692
+ if (install) {
3693
+ console.log(`Installing dependencies with ${commands.name}...`);
3694
+ try {
3695
+ await installDependencies(targetDirectory, commands, spawnCommand);
3696
+ } catch (error) {
3697
+ if (!(error instanceof DeploymentFailure)) throw error;
3698
+ reportDeploymentFailure(error, relative);
3699
+ return;
3700
+ }
3660
3701
  }
3661
3702
  const deployNow = await promptDeployNow();
3662
3703
  if (!deployNow) {
@@ -3674,6 +3715,20 @@ async function publishCloudflareSite(targetDirectory, relative) {
3674
3715
  console.log("");
3675
3716
  console.log("Deployment complete.");
3676
3717
  }
3718
+ function reportInstallationFailure(error, relative, options) {
3719
+ const commands = packageManagerCommands();
3720
+ console.error("");
3721
+ console.error("Project created successfully.");
3722
+ console.error(error.message);
3723
+ console.error("You can continue with:");
3724
+ if (relative !== ".") console.error(` cd ${relative}`);
3725
+ console.error(` ${commands.install.label}`);
3726
+ if (options.deployment.type === "cloudflare-workers") {
3727
+ console.error(` ${commands.build.label}`);
3728
+ console.error(` ${commands.deploy.label}`);
3729
+ }
3730
+ process.exitCode = 1;
3731
+ }
3677
3732
  function reportDeploymentFailure(error, relative) {
3678
3733
  const commands = packageManagerCommands();
3679
3734
  console.error("");
@@ -18,11 +18,15 @@ export type InteractiveAnswers = {
18
18
  readonly contentRepository: string;
19
19
  readonly siteRepository: string;
20
20
  };
21
+ export type InteractiveSetupAnswers = {
22
+ readonly answers: InteractiveAnswers;
23
+ readonly installDependencies: boolean;
24
+ };
21
25
  export declare function interactiveAnswersToOptions(answers: InteractiveAnswers): CreateRiebeckiteOptions;
22
26
  /**
23
27
  * Run the prompt flow. Returns `null` when the user cancels, so the caller can
24
28
  * exit without a stack trace. Repository values are only trimmed here; their
25
29
  * `owner/repository` shape is validated by the existing scaffold.
26
30
  */
27
- export declare function promptInteractiveAnswers(): Promise<InteractiveAnswers | null>;
31
+ export declare function promptInteractiveAnswers(): Promise<InteractiveSetupAnswers | null>;
28
32
  export declare function promptDeployNow(): Promise<boolean>;
@@ -298,7 +298,10 @@ var seo = np("@riebeckite/plugin-seo", "seo", {
298
298
  var toc = np("@riebeckite/plugin-toc", "tocPlugin");
299
299
  var properties = np("@riebeckite/plugin-properties", "properties", {
300
300
  include: { depth: 2, value: '["created", "modified", "tags", "status"]' },
301
- order: { depth: 2, value: '["created", "modified", "tags", "status"]' }
301
+ fields: {
302
+ depth: 2,
303
+ value: '{ created: { type: "date", format: "yyyy-MM-dd" }, modified: { type: "date", format: "yyyy-MM-dd" }, tags: { type: "tags", variant: "chips" }, status: { type: "badge", variants: { active: "success", draft: "warning", archived: "danger" } } }'
304
+ }
302
305
  });
303
306
  var alias = np("@riebeckite/plugin-alias", "aliasPlugin", `{ status: 308 }`);
304
307
  var codeEnhance = np("@riebeckite/plugin-code-enhance", "codeEnhance", {
@@ -431,12 +434,7 @@ var gallery = np("@riebeckite/plugin-gallery", "gallery", {
431
434
  aspect: { depth: 2, value: '"4/3"' },
432
435
  language: { depth: 3, value: '"gallery"' }
433
436
  });
434
- var mermaid = np("@riebeckite/plugin-mermaid", "mermaid", {
435
- render: { depth: 2, value: '"build"' },
436
- theme: { depth: 2, value: '{ light: "default", dark: "dark" }' },
437
- caption: { depth: 3, value: "true" },
438
- fallback: { depth: 3, value: "true" }
439
- });
437
+ var mermaidPele = np("@riebeckite/plugin-mermaid-pele", "mermaidPele");
440
438
  var graphviz = np("@riebeckite/plugin-graphviz", "graphviz", {
441
439
  render: { depth: 2, value: '"build"' },
442
440
  engine: { depth: 2, value: '"dot"' },
@@ -578,8 +576,7 @@ var gardenExplorer = np(
578
576
  var ux = np("@riebeckite/plugin-ux", "uxPlugin", {
579
577
  progress: { depth: 2, value: "true" },
580
578
  backToTop: { depth: 2, value: "true" },
581
- tocScrollSpy: { depth: 2, value: "true" },
582
- codeCopy: { depth: 3, value: "true" }
579
+ tocScrollSpy: { depth: 2, value: "true" }
583
580
  });
584
581
  var dailyNotes = np(
585
582
  "@riebeckite/plugin-daily-notes",
@@ -708,7 +705,7 @@ var showcase = {
708
705
  autoCardLink,
709
706
  richEmbed,
710
707
  gallery,
711
- mermaid,
708
+ mermaidPele,
712
709
  graphviz,
713
710
  d2,
714
711
  plantuml,
@@ -816,11 +813,11 @@ var README_DEMOS = {
816
813
  fence('js tab="Vanilla"', 'console.log("Hello from JavaScript");')
817
814
  ].join("\n")
818
815
  },
819
- "@riebeckite/plugin-mermaid": {
820
- title: { en: "Mermaid", ja: "Mermaid" },
816
+ "@riebeckite/plugin-mermaid-pele": {
817
+ title: { en: "Mermaid (Pele)", ja: "Mermaid (Pele)" },
821
818
  intro: {
822
- en: "A `mermaid` fence becomes a rendered diagram at build time.",
823
- ja: "`mermaid` フェンスはビルド時にレンダリングされた図になります。"
819
+ en: "A `mermaid` fence becomes a static diagram at build time without Chromium.",
820
+ ja: "`mermaid` フェンスは Chromium を使わずビルド時に静的な図になります。"
824
821
  },
825
822
  markdown: fence(
826
823
  "mermaid",
@@ -1110,7 +1107,7 @@ var README_DEMO_ORDER = [
1110
1107
  "@riebeckite/plugin-obsidian-markdown/wikilinks",
1111
1108
  "@riebeckite/plugin-code-enhance",
1112
1109
  "@riebeckite/plugin-code-tabs",
1113
- "@riebeckite/plugin-mermaid",
1110
+ "@riebeckite/plugin-mermaid-pele",
1114
1111
  "@riebeckite/plugin-d2",
1115
1112
  "@riebeckite/plugin-graphviz",
1116
1113
  "@riebeckite/plugin-chartjs",
@@ -1216,7 +1213,7 @@ var PLUGIN_MARKDOWN_GUIDES = {
1216
1213
  ].join("\n")
1217
1214
  },
1218
1215
  "@riebeckite/plugin-properties": {
1219
- summary: "Renders selected frontmatter properties in the article metadata slot.",
1216
+ summary: "Renders selected frontmatter properties in article metadata.",
1220
1217
  markdown: [
1221
1218
  "---",
1222
1219
  "created: 2026-09-30",
@@ -2313,7 +2310,7 @@ function pluginsContent(language) {
2313
2310
  lines.push(read(copy.intro, language), "");
2314
2311
  lines.push(heading(2, read(copy.installHeading, language)), "");
2315
2312
  lines.push(read(copy.installStep1, language), "");
2316
- lines.push(codeBlock("sh", "npm install @riebeckite/plugin-mermaid"));
2313
+ lines.push(codeBlock("sh", "npm install @riebeckite/plugin-mermaid-pele"));
2317
2314
  lines.push(read(copy.installStep2, language), "");
2318
2315
  lines.push(
2319
2316
  codeBlock(
@@ -2321,12 +2318,12 @@ function pluginsContent(language) {
2321
2318
  [
2322
2319
  'import { defineConfig } from "@riebeckite/core";',
2323
2320
  'import { l10n } from "@riebeckite/plugin-l10n";',
2324
- 'import { mermaid } from "@riebeckite/plugin-mermaid";',
2321
+ 'import { mermaidPele } from "@riebeckite/plugin-mermaid-pele";',
2325
2322
  'import { obsidianMarkdown } from "@riebeckite/plugin-obsidian-markdown";',
2326
2323
  "",
2327
2324
  "export default defineConfig({",
2328
2325
  " // ...",
2329
- " plugins: [obsidianMarkdown(), l10n({ ... }), mermaid()],",
2326
+ " plugins: [obsidianMarkdown(), l10n({ ... }), mermaidPele()],",
2330
2327
  "});"
2331
2328
  ].join("\n")
2332
2329
  )
@@ -2967,7 +2964,7 @@ function utilityTemplateFiles(utilities) {
2967
2964
  }
2968
2965
 
2969
2966
  // src/scaffold/version.ts
2970
- var RIEBECKITE_VERSION = "^0.0.30";
2967
+ var RIEBECKITE_VERSION = "^0.0.32";
2971
2968
 
2972
2969
  // src/scaffold/templates.ts
2973
2970
  function siteTemplateFiles(preset, variables, options = {}) {
@@ -1 +1 @@
1
- export declare const RIEBECKITE_VERSION = "^0.0.30";
1
+ export declare const RIEBECKITE_VERSION = "^0.0.32";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-riebeckite",
3
- "version": "0.0.30",
3
+ "version": "0.0.32",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "devDependencies": {
41
41
  "esbuild": "^0.28.2",
42
- "@riebeckite/test": "0.0.30"
42
+ "@riebeckite/test": "0.0.32"
43
43
  },
44
44
  "repository": {
45
45
  "type": "git",
@@ -4,14 +4,14 @@ const handler = (c: Context) => {
4
4
  c.status(404);
5
5
 
6
6
  return c.render(
7
- <main class="not-found">
7
+ <div class="not-found">
8
8
  <p class="not-found__status">404</p>
9
9
  <h1>Page not found</h1>
10
10
  <p>The page you requested does not exist or is not available.</p>
11
11
  <p>
12
12
  <a href="/">Back to home</a>
13
13
  </p>
14
- </main>,
14
+ </div>,
15
15
  );
16
16
  };
17
17
 
@@ -25,7 +25,11 @@ export default jsxRenderer(async ({ children }, c) => {
25
25
  <head>
26
26
  <RiebeckiteHead colorModeScript={false} />
27
27
  </head>
28
- <body class="riebeckite-page rb-site">{children}</body>
28
+ <body class="riebeckite-page rb-site">
29
+ <main id="main-content" tabindex={-1} class="riebeckite-main">
30
+ {children}
31
+ </main>
32
+ </body>
29
33
  </ThemeRoot>
30
34
  </SiteProvider>
31
35
  );
@@ -3,9 +3,9 @@ import { config } from "virtual:riebeckite/config";
3
3
 
4
4
  export default createRoute((c) =>
5
5
  c.render(
6
- <main class="riebeckite-empty">
6
+ <div class="riebeckite-empty">
7
7
  <h1>{config.site.title}</h1>
8
8
  <p>This is a blank Riebeckite site. Add Markdown files under content/ to get started.</p>
9
- </main>,
9
+ </div>,
10
10
  ),
11
11
  );
@@ -4,14 +4,14 @@ const handler = (c: Context) => {
4
4
  c.status(404);
5
5
 
6
6
  return c.render(
7
- <main class="not-found">
7
+ <div class="not-found">
8
8
  <p class="not-found__status">404</p>
9
9
  <h1>Page not found</h1>
10
10
  <p>The page you requested does not exist or is not available.</p>
11
11
  <p>
12
12
  <a href="/">Back to home</a>
13
13
  </p>
14
- </main>,
14
+ </div>,
15
15
  );
16
16
  };
17
17
 
@@ -25,7 +25,11 @@ export default jsxRenderer(async ({ children }, c) => {
25
25
  <head>
26
26
  <RiebeckiteHead colorModeScript={false} />
27
27
  </head>
28
- <body class="riebeckite-page rb-site">{children}</body>
28
+ <body class="riebeckite-page rb-site">
29
+ <main id="main-content" tabindex={-1} class="riebeckite-main">
30
+ {children}
31
+ </main>
32
+ </body>
29
33
  </ThemeRoot>
30
34
  </SiteProvider>
31
35
  );