@riebeckite/honox 0.0.5 → 0.0.6

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/index.js CHANGED
@@ -167,6 +167,10 @@ function replaceHonoxIslandDependencyPlugin(plugins) {
167
167
  ];
168
168
  }
169
169
  function disableHonoxIslandDependencyPlugin(plugin) {
170
+ if (!plugin || typeof plugin === "boolean") return plugin;
171
+ if (Array.isArray(plugin)) {
172
+ return plugin.map(disableHonoxIslandDependencyPlugin);
173
+ }
170
174
  if (plugin instanceof Promise) {
171
175
  return plugin.then(disableHonoxIslandDependencyPlugin);
172
176
  }
@@ -296,78 +300,340 @@ var obsidianMarkdown = np(
296
300
  "obsidianMarkdown"
297
301
  );
298
302
  var colorMode = np("@riebeckite/plugin-color-mode", "colorModePlugin");
299
- var l10n = np("@riebeckite/plugin-l10n", "l10n");
300
- var seo = np("@riebeckite/plugin-seo", "seo");
303
+ var l10n = np("@riebeckite/plugin-l10n", "l10n", (context) => {
304
+ const defaultLang = defaultLanguageForLocale(context.variables.locale);
305
+ return `{ defaultLang: ${JSON.stringify(defaultLang)}, languages: ${JSON.stringify(context.languages)} }`;
306
+ });
307
+ var seo = np("@riebeckite/plugin-seo", "seo", {
308
+ siteName: {
309
+ depth: 1,
310
+ value: (context) => JSON.stringify(context.variables.title)
311
+ },
312
+ sitemap: { depth: 1, value: "true" },
313
+ robots: { depth: 2, value: "true" },
314
+ defaultImage: { depth: 3, value: '"/ogp.png"' },
315
+ feed: { depth: 3, value: "{ rss: true, atom: true, json: true }" }
316
+ });
301
317
  var toc = np("@riebeckite/plugin-toc", "tocPlugin");
302
- var properties = np("@riebeckite/plugin-properties", "properties");
303
- var alias = np("@riebeckite/plugin-alias", "aliasPlugin");
304
- var codeEnhance = np("@riebeckite/plugin-code-enhance", "codeEnhance");
318
+ var properties = np("@riebeckite/plugin-properties", "properties", {
319
+ render: { depth: 1, value: '"slot"' },
320
+ include: { depth: 2, value: '["created", "modified", "tags", "status"]' },
321
+ order: { depth: 2, value: '["created", "modified", "tags", "status"]' }
322
+ });
323
+ var alias = np("@riebeckite/plugin-alias", "aliasPlugin", `{ status: 308 }`);
324
+ var codeEnhance = np("@riebeckite/plugin-code-enhance", "codeEnhance", {
325
+ lineNumbers: { depth: 1, value: "true" },
326
+ copyButton: { depth: 1, value: "true" },
327
+ filename: { depth: 2, value: "true" },
328
+ lineHighlight: { depth: 2, value: "true" },
329
+ diffHighlight: { depth: 2, value: "true" },
330
+ theme: { depth: 3, value: '{ light: "github-light", dark: "github-dark" }' },
331
+ wrapToggle: { depth: 3, value: "true" }
332
+ });
305
333
  var search = np("@riebeckite/plugin-search", "searchPlugin");
306
334
  var backlinks = np("@riebeckite/plugin-backlinks", "backlinksPlugin");
307
- var relatedPosts = np("@riebeckite/plugin-related-posts", "relatedPosts");
335
+ var relatedPosts = np("@riebeckite/plugin-related-posts", "relatedPosts", {
336
+ limit: { depth: 2, value: "5" },
337
+ useTags: { depth: 2, value: "true" },
338
+ useBacklinks: { depth: 2, value: "true" },
339
+ minScore: { depth: 3, value: "1" },
340
+ heading: { depth: 3, value: "true" },
341
+ headingText: { depth: 3, value: '"Related"' },
342
+ className: { depth: 3, value: '"rb-related-posts"' }
343
+ });
344
+ var share = np("@riebeckite/plugin-share", "share", {
345
+ placement: { depth: 2, value: '"bottom"' },
346
+ services: {
347
+ depth: 3,
348
+ value: '["x", "bluesky", "mastodon", "facebook", "linkedin", "hatena", "copy"]'
349
+ },
350
+ mastodonInstance: { depth: 3, value: '"mastodon.social"' }
351
+ });
308
352
  var recentPosts = np("@riebeckite/plugin-recent-posts", "recentPostsPlugin");
309
- var attachment = np("@riebeckite/plugin-attachment", "attachment");
310
- var media = np("@riebeckite/plugin-media", "media");
353
+ var changelog = np("@riebeckite/plugin-changelog", "changelog", {
354
+ perNote: { depth: 2, value: "true" },
355
+ lookbackDays: { depth: 3, value: "90" },
356
+ dateFormat: { depth: 3, value: '"iso"' },
357
+ siteWide: { depth: 3, value: "false" }
358
+ });
359
+ var webmention = np("@riebeckite/plugin-webmention", "webmention", {
360
+ headingText: { depth: 2, value: '"Mentions"' },
361
+ limit: { depth: 3, value: "20" }
362
+ });
363
+ var attachment = np(
364
+ "@riebeckite/plugin-attachment",
365
+ "attachment",
366
+ `{ showSize: true }`
367
+ );
368
+ var pdf = np("@riebeckite/plugin-pdf", "pdf", {
369
+ height: { depth: 2, value: '"640px"' },
370
+ initialPage: { depth: 2, value: "1" },
371
+ toolbar: { depth: 2, value: "true" },
372
+ showMetadata: { depth: 3, value: "true" },
373
+ downloadLabel: { depth: 3, value: '"Download PDF"' }
374
+ });
375
+ var media = np("@riebeckite/plugin-media", "media", {
376
+ preload: { depth: 2, value: '"metadata"' },
377
+ lazy: { depth: 2, value: "true" },
378
+ showCaption: { depth: 3, value: "true" },
379
+ showDownload: { depth: 3, value: "false" },
380
+ showOpenOriginal: { depth: 3, value: "true" }
381
+ });
311
382
  var responsiveImage = np(
312
383
  "@riebeckite/plugin-responsive-image",
313
- "responsiveImage"
384
+ "responsiveImage",
385
+ {
386
+ lazy: { depth: 2, value: "true" },
387
+ decoding: { depth: 2, value: "true" },
388
+ sizes: { depth: 2, value: '"100vw"' },
389
+ widths: { depth: 2, value: "[640, 1280, 1920]" },
390
+ formats: { depth: 3, value: '["webp", "avif"]' },
391
+ className: { depth: 3, value: '"rb-responsive-image"' }
392
+ }
393
+ );
394
+ var lightbox = np(
395
+ "@riebeckite/plugin-lightbox",
396
+ "lightboxPlugin",
397
+ `{ selectorClass: "rr-lightbox-trigger" }`
398
+ );
399
+ var highlight = np("@riebeckite/plugin-highlight", "highlight", {
400
+ tag: { depth: 2, value: '"mark"' },
401
+ className: { depth: 3, value: '"rb-mark"' }
402
+ });
403
+ var codeTabs = np(
404
+ "@riebeckite/plugin-code-tabs",
405
+ "codeTabs",
406
+ `{ syncTabs: true }`
314
407
  );
315
- var lightbox = np("@riebeckite/plugin-lightbox", "lightboxPlugin");
316
- var highlight = np("@riebeckite/plugin-highlight", "highlight");
317
- var codeTabs = np("@riebeckite/plugin-code-tabs", "codeTabs");
318
408
  var codeAnnotations = np(
319
409
  "@riebeckite/plugin-code-annotations",
320
- "codeAnnotations"
410
+ "codeAnnotations",
411
+ `{ className: "rb-code" }`
412
+ );
413
+ var shortcodes = np(
414
+ "@riebeckite/plugin-shortcodes",
415
+ "shortcodes",
416
+ `{ builtins: true }`
321
417
  );
322
- var shortcodes = np("@riebeckite/plugin-shortcodes", "shortcodes");
323
- var series = np("@riebeckite/plugin-series", "series");
418
+ var series = np("@riebeckite/plugin-series", "series", {
419
+ key: { depth: 2, value: '"series"' },
420
+ orderKey: { depth: 2, value: '"series_order"' },
421
+ titleKey: { depth: 2, value: '"series_title"' },
422
+ positionLabel: { depth: 2, value: "false" },
423
+ heading: { depth: 3, value: "true" },
424
+ className: { depth: 3, value: '"rb-series"' }
425
+ });
426
+ var taxonomy = np("@riebeckite/plugin-taxonomy", "taxonomy", {
427
+ tags: { depth: 2, value: "true" },
428
+ folders: { depth: 2, value: "true" },
429
+ related: { depth: 2, value: "true" },
430
+ feeds: { depth: 3, value: "{ rss: true, atom: true, json: true }" },
431
+ relatedLimit: { depth: 3, value: "8" }
432
+ });
324
433
  var autoCardLink = np(
325
434
  "@riebeckite/plugin-autocardlink",
326
- "autoCardLinkPlugin"
435
+ "autoCardLinkPlugin",
436
+ `{ className: "rb-cardlink" }`
437
+ );
438
+ var richEmbed = np(
439
+ "@riebeckite/plugin-rich-embed",
440
+ "richEmbed",
441
+ `{ providers: ["youtube", "vimeo", "spotify"] }`
442
+ );
443
+ var gallery = np("@riebeckite/plugin-gallery", "gallery", {
444
+ columns: { depth: 2, value: "3" },
445
+ aspect: { depth: 2, value: '"4/3"' },
446
+ language: { depth: 3, value: '"gallery"' }
447
+ });
448
+ var mermaid = np("@riebeckite/plugin-mermaid", "mermaid", {
449
+ render: { depth: 2, value: '"build"' },
450
+ theme: { depth: 2, value: '{ light: "default", dark: "dark" }' },
451
+ caption: { depth: 3, value: "true" },
452
+ fallback: { depth: 3, value: "true" }
453
+ });
454
+ var graphviz = np("@riebeckite/plugin-graphviz", "graphviz", {
455
+ render: { depth: 2, value: '"build"' },
456
+ engine: { depth: 2, value: '"dot"' },
457
+ caption: { depth: 3, value: "true" },
458
+ fallback: { depth: 3, value: "true" }
459
+ });
460
+ var d2 = np("@riebeckite/plugin-d2", "d2", {
461
+ render: { depth: 2, value: '"build"' },
462
+ theme: { depth: 2, value: "{ light: 0, dark: 1 }" },
463
+ layout: { depth: 2, value: '"dagre"' },
464
+ caption: { depth: 3, value: "true" }
465
+ });
466
+ var plantuml = np("@riebeckite/plugin-plantuml", "plantuml", {
467
+ server: { depth: 2, value: '"https://www.plantuml.com/plantuml"' },
468
+ format: { depth: 2, value: '"svg"' },
469
+ caption: { depth: 3, value: "true" },
470
+ fallback: { depth: 3, value: "true" }
471
+ });
472
+ var chartjs = np("@riebeckite/plugin-chartjs", "chartjs", {
473
+ responsive: { depth: 2, value: "true" },
474
+ caption: { depth: 2, value: "true" },
475
+ className: { depth: 3, value: '"rb-chartjs"' }
476
+ });
477
+ var vegaLite = np("@riebeckite/plugin-vega-lite", "vegaLite", {
478
+ caption: { depth: 2, value: "true" },
479
+ theme: { depth: 2, value: '"light"' },
480
+ renderer: { depth: 2, value: '"canvas"' },
481
+ actions: { depth: 3, value: "false" },
482
+ className: { depth: 3, value: '"rb-vega-lite"' }
483
+ });
484
+ var wavedrom = np("@riebeckite/plugin-wavedrom", "wavedrom", {
485
+ skin: { depth: 2, value: '"default"' },
486
+ caption: { depth: 2, value: "true" },
487
+ fallback: { depth: 3, value: "true" },
488
+ className: { depth: 3, value: '"rb-wavedrom"' }
489
+ });
490
+ var markmap = np("@riebeckite/plugin-markmap", "markmap", {
491
+ caption: { depth: 2, value: "true" },
492
+ height: { depth: 2, value: "320" },
493
+ colorFreezeLevel: { depth: 3, value: "2" }
494
+ });
495
+ var map = np("@riebeckite/plugin-map", "map", {
496
+ zoom: { depth: 2, value: "13" },
497
+ height: { depth: 2, value: "320" },
498
+ tileUrl: {
499
+ depth: 3,
500
+ value: JSON.stringify("https://tile.openstreetmap.org/{z}/{x}/{y}.png")
501
+ },
502
+ attribution: {
503
+ depth: 3,
504
+ value: JSON.stringify(
505
+ '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
506
+ )
507
+ }
508
+ });
509
+ var marp = np("@riebeckite/plugin-marp", "marp", {
510
+ theme: { depth: 2, value: '"default"' },
511
+ allowHtml: { depth: 2, value: "true" },
512
+ math: { depth: 2, value: "true" },
513
+ caption: { depth: 3, value: "true" }
514
+ });
515
+ var qrCode = np("@riebeckite/plugin-qr-code", "qrCode", {
516
+ level: { depth: 2, value: '"M"' },
517
+ margin: { depth: 2, value: "1" },
518
+ width: { depth: 2, value: "160" },
519
+ dark: { depth: 3, value: '"#000000"' },
520
+ light: { depth: 3, value: '"#ffffff"' },
521
+ caption: { depth: 3, value: "true" },
522
+ className: { depth: 3, value: '"rb-qr"' }
523
+ });
524
+ var discordEmbed = np("@riebeckite/plugin-discord-embed", "discordEmbed", {
525
+ themeColor: { depth: 2, value: '"#5865F2"' },
526
+ imageAlt: { depth: 3, value: "true" },
527
+ imageDimensions: { depth: 3, value: "true" }
528
+ });
529
+ var excalidraw = np(
530
+ "@riebeckite/plugin-excalidraw",
531
+ "excalidraw",
532
+ `{ lazy: true }`
327
533
  );
328
- var richEmbed = np("@riebeckite/plugin-rich-embed", "richEmbed");
329
- var mermaid = np("@riebeckite/plugin-mermaid", "mermaid");
330
- var graphviz = np("@riebeckite/plugin-graphviz", "graphviz");
331
- var d2 = np("@riebeckite/plugin-d2", "d2");
332
- var plantuml = np("@riebeckite/plugin-plantuml", "plantuml");
333
- var chartjs = np("@riebeckite/plugin-chartjs", "chartjs");
334
- var vegaLite = np("@riebeckite/plugin-vega-lite", "vegaLite");
335
- var wavedrom = np("@riebeckite/plugin-wavedrom", "wavedrom");
336
- var markmap = np("@riebeckite/plugin-markmap", "markmap");
337
- var marp = np("@riebeckite/plugin-marp", "marp");
338
- var qrCode = np("@riebeckite/plugin-qr-code", "qrCode");
339
- var discordEmbed = np("@riebeckite/plugin-discord-embed", "discordEmbed");
340
- var excalidraw = np("@riebeckite/plugin-excalidraw", "excalidraw");
341
- var excaliBrain = np("@riebeckite/plugin-excalibrain", "excaliBrain");
342
- var canvas = np("@riebeckite/plugin-canvas", "canvas");
343
- var bases = np("@riebeckite/plugin-bases", "bases");
344
- var dataview = np("@riebeckite/plugin-dataview", "dataviewPlugin");
345
- var flashcards = np("@riebeckite/plugin-flashcards", "flashcardsPlugin");
346
- var kanban = np("@riebeckite/plugin-kanban", "kanban");
347
- var query = np("@riebeckite/plugin-query", "queryPlugin");
534
+ var excaliBrain = np("@riebeckite/plugin-excalibrain", "excaliBrain", {
535
+ render: { depth: 2, value: '"build"' },
536
+ auto: { depth: 2, value: "true" },
537
+ heading: { depth: 2, value: "true" },
538
+ infer: { depth: 2, value: "true" },
539
+ siblings: { depth: 2, value: "true" },
540
+ headingText: { depth: 3, value: '"ExcaliBrain"' },
541
+ width: { depth: 3, value: "720" },
542
+ height: { depth: 3, value: "480" }
543
+ });
544
+ var canvas = np("@riebeckite/plugin-canvas", "canvas", {
545
+ language: { depth: 2, value: '"canvas"' },
546
+ render: { depth: 2, value: '"both"' },
547
+ className: { depth: 3, value: '"rb-canvas"' }
548
+ });
549
+ var bases = np("@riebeckite/plugin-bases", "bases", {
550
+ language: { depth: 2, value: '"base"' },
551
+ limit: { depth: 2, value: "100" },
552
+ className: { depth: 3, value: '"rb-bases"' },
553
+ showFallback: { depth: 3, value: "true" }
554
+ });
555
+ var dataview = np("@riebeckite/plugin-dataview", "dataviewPlugin", {
556
+ limit: { depth: 2, value: "50" },
557
+ className: { depth: 3, value: '"rb-dataview"' },
558
+ hideFallback: { depth: 3, value: "false" }
559
+ });
560
+ var flashcards = np("@riebeckite/plugin-flashcards", "flashcardsPlugin", {
561
+ shuffle: { depth: 2, value: "true" },
562
+ fallback: { depth: 2, value: "true" },
563
+ className: { depth: 3, value: '"rb-flashcards"' }
564
+ });
565
+ var kanban = np("@riebeckite/plugin-kanban", "kanban", {
566
+ columnMarker: { depth: 2, value: '"##"' },
567
+ autoDetect: { depth: 2, value: "true" },
568
+ className: { depth: 3, value: '"rb-kanban"' },
569
+ fallback: { depth: 3, value: "true" }
570
+ });
571
+ var query = np("@riebeckite/plugin-query", "queryPlugin", {
572
+ defaultFormat: { depth: 2, value: '"list"' },
573
+ defaultLimit: { depth: 2, value: "50" },
574
+ className: { depth: 3, value: '"rb-query"' },
575
+ excludeSelf: { depth: 3, value: "true" }
576
+ });
348
577
  var localGraph = np("@riebeckite/plugin-local-graph", "localGraphPlugin");
349
578
  var hoverPreview = np(
350
579
  "@riebeckite/plugin-hover-preview",
351
- "hoverPreviewPlugin"
580
+ "hoverPreviewPlugin",
581
+ {
582
+ delay: { depth: 2, value: "120" },
583
+ excerptLength: { depth: 2, value: "160" },
584
+ selector: { depth: 2, value: 'a[href^="/"]' },
585
+ includeTitles: { depth: 3, value: "true" }
586
+ }
352
587
  );
353
588
  var gardenExplorer = np(
354
589
  "@riebeckite/plugin-garden-explorer",
355
590
  "gardenExplorerPlugin"
356
591
  );
357
- var ux = np("@riebeckite/plugin-ux", "uxPlugin");
358
- var dailyNotes = np("@riebeckite/plugin-daily-notes", "dailyNotesPlugin");
359
- var rename = np("@riebeckite/plugin-rename", "renamePlugin");
592
+ var ux = np("@riebeckite/plugin-ux", "uxPlugin", {
593
+ progress: { depth: 2, value: "true" },
594
+ backToTop: { depth: 2, value: "true" },
595
+ tocScrollSpy: { depth: 2, value: "true" },
596
+ codeCopy: { depth: 3, value: "true" }
597
+ });
598
+ var dailyNotes = np(
599
+ "@riebeckite/plugin-daily-notes",
600
+ "dailyNotesPlugin",
601
+ `{ source: { directory: "Daily", pathPattern: "Daily/{YYYY}-{MM}-{DD}" }, extract: { frontmatter: "daily-summary", codeBlock: "daily-snippet" }, widget: { limit: 5 } }`
602
+ );
603
+ var rename = np(
604
+ "@riebeckite/plugin-rename",
605
+ "renamePlugin",
606
+ `{ enabled: true, status: 308, onUnexpectedRemoval: "warning" }`
607
+ );
360
608
  var textFragment = np(
361
609
  "@riebeckite/plugin-text-fragment",
362
- "textFragmentPlugin"
610
+ "textFragmentPlugin",
611
+ (context) => `{ prefix: ${JSON.stringify(`${context.variables.title}: `)} }`
612
+ );
613
+ var quality = np(
614
+ "@riebeckite/plugin-quality",
615
+ "qualityPlugin",
616
+ `{ a11y: { enabled: true }, ignoreRules: [] }`
617
+ );
618
+ var deploy = np(
619
+ "@riebeckite/plugin-deploy",
620
+ "deployPlugin",
621
+ (context) => `{ provider: "cloudflare-pages", baseUrl: ${JSON.stringify(context.variables.baseUrl)} }`
622
+ );
623
+ var diagnostics = np(
624
+ "@riebeckite/plugin-diagnostics",
625
+ "diagnostics",
626
+ `{ reportUnusedAssets: true, reportOrphans: true, requiredFrontmatter: ["title"] }`
363
627
  );
364
- var quality = np("@riebeckite/plugin-quality", "qualityPlugin");
365
- var deploy = np("@riebeckite/plugin-deploy", "deployPlugin");
366
- var diagnostics = np("@riebeckite/plugin-diagnostics", "diagnostics");
367
628
  var defaultTheme = {
368
629
  package: "@riebeckite/theme-default",
369
630
  factory: "defaultTheme"
370
631
  };
632
+ var showCaseTheme = {
633
+ package: "@riebeckite/theme-default",
634
+ factory: "defaultTheme",
635
+ options: '{ colorMode: "system", typography: "system", articleLayout: "article", userCss: [] }'
636
+ };
371
637
  var minimalTheme = {
372
638
  package: "@riebeckite/theme-minimal",
373
639
  factory: "minimalTheme"
@@ -416,7 +682,7 @@ var rich = {
416
682
  name: "rich",
417
683
  description: "A showcasing starter: publishing and reading plugins plus guided ecosystem tour pages in seven languages.",
418
684
  languages: [...SCAFFOLD_LANGUAGES],
419
- theme: defaultTheme,
685
+ theme: showCaseTheme,
420
686
  plugins: [
421
687
  obsidianMarkdown,
422
688
  colorMode,
@@ -435,7 +701,7 @@ var full = {
435
701
  name: "full",
436
702
  description: "A ready blog: discovery, media, and reading plugins plus a build guide.",
437
703
  languages: [...SCAFFOLD_LANGUAGES],
438
- theme: defaultTheme,
704
+ theme: showCaseTheme,
439
705
  plugins: [
440
706
  obsidianMarkdown,
441
707
  colorMode,
@@ -448,8 +714,12 @@ var full = {
448
714
  search,
449
715
  backlinks,
450
716
  relatedPosts,
717
+ share,
718
+ changelog,
719
+ webmention,
451
720
  recentPosts,
452
721
  attachment,
722
+ pdf,
453
723
  media,
454
724
  responsiveImage,
455
725
  lightbox,
@@ -458,8 +728,10 @@ var full = {
458
728
  codeAnnotations,
459
729
  shortcodes,
460
730
  series,
731
+ taxonomy,
461
732
  autoCardLink,
462
- richEmbed
733
+ richEmbed,
734
+ gallery
463
735
  ],
464
736
  contentPages: ["index", "framework/plugins", "framework/themes", "guide"],
465
737
  appFiles: [...BASE_APP_FILES, "index", "slug", "header", "article"],
@@ -469,7 +741,7 @@ var max = {
469
741
  name: "max",
470
742
  description: "Diagram and knowledge plugins on top of full, with showcase example pages.",
471
743
  languages: [...SCAFFOLD_LANGUAGES],
472
- theme: defaultTheme,
744
+ theme: showCaseTheme,
473
745
  plugins: [
474
746
  obsidianMarkdown,
475
747
  colorMode,
@@ -482,8 +754,12 @@ var max = {
482
754
  search,
483
755
  backlinks,
484
756
  relatedPosts,
757
+ share,
758
+ changelog,
759
+ webmention,
485
760
  recentPosts,
486
761
  attachment,
762
+ pdf,
487
763
  media,
488
764
  responsiveImage,
489
765
  lightbox,
@@ -492,8 +768,10 @@ var max = {
492
768
  codeAnnotations,
493
769
  shortcodes,
494
770
  series,
771
+ taxonomy,
495
772
  autoCardLink,
496
773
  richEmbed,
774
+ gallery,
497
775
  mermaid,
498
776
  graphviz,
499
777
  d2,
@@ -502,6 +780,7 @@ var max = {
502
780
  vegaLite,
503
781
  wavedrom,
504
782
  markmap,
783
+ map,
505
784
  marp,
506
785
  qrCode,
507
786
  discordEmbed,
@@ -532,7 +811,7 @@ var ultra = {
532
811
  name: "ultra",
533
812
  description: "The full plugin catalog and theme reference pages — everything the ecosystem offers.",
534
813
  languages: [...SCAFFOLD_LANGUAGES],
535
- theme: defaultTheme,
814
+ theme: showCaseTheme,
536
815
  plugins: [
537
816
  obsidianMarkdown,
538
817
  colorMode,
@@ -545,8 +824,12 @@ var ultra = {
545
824
  search,
546
825
  backlinks,
547
826
  relatedPosts,
827
+ share,
828
+ changelog,
829
+ webmention,
548
830
  recentPosts,
549
831
  attachment,
832
+ pdf,
550
833
  media,
551
834
  responsiveImage,
552
835
  lightbox,
@@ -555,8 +838,10 @@ var ultra = {
555
838
  codeAnnotations,
556
839
  shortcodes,
557
840
  series,
841
+ taxonomy,
558
842
  autoCardLink,
559
843
  richEmbed,
844
+ gallery,
560
845
  mermaid,
561
846
  graphviz,
562
847
  d2,
@@ -565,6 +850,7 @@ var ultra = {
565
850
  vegaLite,
566
851
  wavedrom,
567
852
  markmap,
853
+ map,
568
854
  marp,
569
855
  qrCode,
570
856
  discordEmbed,
@@ -697,8 +983,8 @@ ${initializers.map((initializer) => ` ${initializer};`).join("\n")}
697
983
  }
698
984
 
699
985
  // src/ssg_plugin.ts
700
- import { defaultExtensionMap, toSSG } from "hono/ssg";
701
986
  import { relative } from "node:path";
987
+ import { defaultExtensionMap, toSSG } from "hono/ssg";
702
988
  import { createServer } from "vite";
703
989
  var defaultEntry = "./src/index.tsx";
704
990
  function riebeckiteSsg(options = {}) {
@@ -731,7 +1017,9 @@ function riebeckiteSsg(options = {}) {
731
1017
  async generateBundle(_outputOptions, bundle) {
732
1018
  const config = resolvedConfig;
733
1019
  if (!config) {
734
- throw new Error("Riebeckite SSG could not resolve the Vite configuration.");
1020
+ throw new Error(
1021
+ "Riebeckite SSG could not resolve the Vite configuration."
1022
+ );
735
1023
  }
736
1024
  removeVirtualEntryChunk(bundle, resolvedVirtualId);
737
1025
  const server2 = await createServer({
@@ -756,10 +1044,10 @@ function riebeckiteSsg(options = {}) {
756
1044
  app,
757
1045
  {
758
1046
  writeFile: async (filePath, data) => {
759
- const fileName = relative(config.build.outDir, filePath).replaceAll(
760
- "\\",
761
- "/"
762
- );
1047
+ const fileName = relative(
1048
+ config.build.outDir,
1049
+ filePath
1050
+ ).replaceAll("\\", "/");
763
1051
  if (fileName.endsWith(".html") && typeof data === "string") {
764
1052
  generatedHtml.push({ path: fileName, html: data });
765
1053
  }
@@ -779,10 +1067,7 @@ function riebeckiteSsg(options = {}) {
779
1067
  }
780
1068
  );
781
1069
  if (!result.success) throw result.error;
782
- await emitGeneratedOutputs(
783
- module,
784
- (asset) => this.emitFile(asset)
785
- );
1070
+ await emitGeneratedOutputs(module, (asset) => this.emitFile(asset));
786
1071
  inspectGeneratedHtmlPages(module, generatedHtml, {
787
1072
  warn: (message) => this.warn(message),
788
1073
  info: (message) => this.info(message)
@@ -1078,15 +1363,24 @@ function localizedContentFiles(variables, preset) {
1078
1363
  if (page === "index") {
1079
1364
  pushLocalized("index", (language) => indexContent(variables, language));
1080
1365
  } else if (page === "framework/plugins") {
1081
- pushLocalized("framework/plugins", (language) => pluginsContent(language));
1366
+ pushLocalized(
1367
+ "framework/plugins",
1368
+ (language) => pluginsContent(language)
1369
+ );
1082
1370
  } else if (page === "framework/themes") {
1083
1371
  pushLocalized("framework/themes", (language) => themesContent(language));
1084
1372
  } else if (page === "guide") {
1085
1373
  pushEnglishOnly("guide", guideContent);
1086
1374
  } else if (page === "examples") {
1087
- pushEnglishOnly("examples", examplesContent);
1375
+ pushLocalized(
1376
+ "examples",
1377
+ (language) => examplesContent(preset, language)
1378
+ );
1088
1379
  } else if (page === "reference/plugins") {
1089
- pushEnglishOnly("reference/plugins", () => referencePluginsContent(preset));
1380
+ pushEnglishOnly(
1381
+ "reference/plugins",
1382
+ () => referencePluginsContent(preset, variables)
1383
+ );
1090
1384
  } else if (page === "reference/themes") {
1091
1385
  pushEnglishOnly("reference/themes", referenceThemesContent);
1092
1386
  }
@@ -1103,7 +1397,10 @@ function heading(level, text) {
1103
1397
  return `${"#".repeat(level)} ${text}`;
1104
1398
  }
1105
1399
  function codeBlock(language, code) {
1106
- return ["```" + language, code, "```", ""].join("\n");
1400
+ return `\`\`\`${language}
1401
+ ${code}
1402
+ \`\`\`
1403
+ `;
1107
1404
  }
1108
1405
  var INDEX = {
1109
1406
  lead: {
@@ -1395,7 +1692,7 @@ function themesContent(language) {
1395
1692
  lines.push(heading(2, read(copy.switchHeading, language)), "");
1396
1693
  lines.push(read(copy.switchCurrent, language), "");
1397
1694
  lines.push(read(copy.switchStep1, language), "");
1398
- lines.push(codeBlock("sh", "pnpm add @riebeckite/theme-sakura"));
1695
+ lines.push(codeBlock("sh", "npm install @riebeckite/theme-sakura"));
1399
1696
  lines.push(read(copy.switchStep2, language), "");
1400
1697
  lines.push(
1401
1698
  codeBlock(
@@ -1636,6 +1933,18 @@ var PLUGIN_CATEGORIES = [
1636
1933
  fr: "Rend les croquis Excalidraw.",
1637
1934
  ko: "Excalidraw 스케치 파일 렌더링."
1638
1935
  }
1936
+ },
1937
+ {
1938
+ slug: "gallery",
1939
+ desc: {
1940
+ en: "Card grids for theme or project showcases.",
1941
+ ja: "テーマやプロジェクトの紹介向けカードグリッド。",
1942
+ "zh-CN": "用于主题或项目展示的卡片网格。",
1943
+ es: "Cuadrículas de tarjetas para escaparates de temas o proyectos.",
1944
+ de: "Kartenraster für Theme- oder Projekt-Showcases.",
1945
+ fr: "Grilles de cartes pour vitrines de thèmes ou de projets.",
1946
+ ko: "테마·프로젝트 소개용 카드 그리드."
1947
+ }
1639
1948
  }
1640
1949
  ]
1641
1950
  },
@@ -1928,7 +2237,7 @@ function pluginsContent(language) {
1928
2237
  lines.push(read(copy.intro, language), "");
1929
2238
  lines.push(heading(2, read(copy.installHeading, language)), "");
1930
2239
  lines.push(read(copy.installStep1, language), "");
1931
- lines.push(codeBlock("sh", "pnpm add @riebeckite/plugin-mermaid"));
2240
+ lines.push(codeBlock("sh", "npm install @riebeckite/plugin-mermaid"));
1932
2241
  lines.push(read(copy.installStep2, language), "");
1933
2242
  lines.push(
1934
2243
  codeBlock(
@@ -1947,11 +2256,16 @@ function pluginsContent(language) {
1947
2256
  )
1948
2257
  );
1949
2258
  lines.push(read(copy.fullList, language), "");
1950
- lines.push(`[${read(copy.fullListLabel, language)}](${PLUGIN_INDEX_URL})`, "");
2259
+ lines.push(
2260
+ `[${read(copy.fullListLabel, language)}](${PLUGIN_INDEX_URL})`,
2261
+ ""
2262
+ );
1951
2263
  for (const category of categories) {
1952
2264
  lines.push(heading(2, read(category.title, language)), "");
1953
2265
  lines.push(read(category.summary, language), "");
1954
- lines.push(`| ${read(copy.columnPlugin, language)} | ${read(copy.columnDescription, language)} |`);
2266
+ lines.push(
2267
+ `| ${read(copy.columnPlugin, language)} | ${read(copy.columnDescription, language)} |`
2268
+ );
1955
2269
  lines.push("| --- | --- |");
1956
2270
  for (const plugin of category.plugins) {
1957
2271
  const packageName = `@riebeckite/plugin-${plugin.slug}`;
@@ -1984,15 +2298,14 @@ function guideContent() {
1984
2298
  "",
1985
2299
  codeBlock(
1986
2300
  "md",
1987
- ["---", "publish: true", "---", "", "# Hello", "", "Body text..."].join("\n")
2301
+ ["---", "publish: true", "---", "", "# Hello", "", "Body text..."].join(
2302
+ "\n"
2303
+ )
1988
2304
  ),
1989
2305
  "",
1990
2306
  heading(2, "Run the site"),
1991
2307
  "",
1992
- codeBlock(
1993
- "sh",
1994
- ["pnpm install", "pnpm exec riebeckite dev", "pnpm exec riebeckite build"].join("\n")
1995
- ),
2308
+ codeBlock("sh", ["npm install", "npm run dev", "npm run build"].join("\n")),
1996
2309
  "",
1997
2310
  heading(2, "Localize a page"),
1998
2311
  "",
@@ -2009,64 +2322,53 @@ function guideContent() {
2009
2322
  ""
2010
2323
  ].join("\n");
2011
2324
  }
2012
- function examplesContent() {
2013
- return [
2325
+ function readSummary(text, language) {
2326
+ return language === "ja" ? text.ja ?? text.en : text.en;
2327
+ }
2328
+ var EXAMPLES_COPY = {
2329
+ heading: {
2330
+ en: "Examples",
2331
+ ja: "サンプル集"
2332
+ },
2333
+ intro: {
2334
+ en: "A working demo of every diagram, chart, and code feature this preset ships. Fenced code blocks are turned into rendered output at build time by the diagram plugins; code blocks gain toolbars from the code plugins. Each section below is also copy-pasteable into any Markdown document.",
2335
+ ja: "このプリセットが含む、すべての図表・チャート・コード機能の実例です。フェンス付きコードブロックはビルド時に図表プラグインが描画し、コードブロックにはコードプラグインがツールバーを追加します。以下の各セクションは、任意の Markdown 文書にそのままコピーして使えます。"
2336
+ }
2337
+ };
2338
+ function examplesContent(preset, language) {
2339
+ const lines = [
2014
2340
  frontmatter(),
2015
- heading(1, "Examples"),
2016
- "",
2017
- "A tour of what the richer Riebeckite presets enable. Fenced code blocks",
2018
- "are turned into rendered diagrams and charts at build time by the",
2019
- "diagram plugins; code blocks gain toolbars from the code plugins.",
2020
- "",
2021
- heading(2, "Mermaid"),
2022
- "",
2023
- codeBlock("mermaid", "flowchart LR\n A[Note] --> B{Published?}\n B -->|yes| C[Site]\n B -->|no| D[Draft]"),
2024
- "",
2025
- heading(2, "D2"),
2026
- "",
2027
- codeBlock("d2", "site: Riebeckite\n content -> build -> deploy"),
2341
+ heading(1, readSummary(EXAMPLES_COPY.heading, language)),
2028
2342
  "",
2029
- heading(2, "Graphviz / DOT"),
2030
- "",
2031
- codeBlock("dot", "digraph G {\n notes -> pages;\n pages -> html;\n}"),
2032
- "",
2033
- heading(2, "A chart"),
2034
- "",
2035
- codeBlock("chartjs", "line\nlabels: Jan, Feb, Mar\nvalues: 3, 7, 5"),
2036
- "",
2037
- heading(2, "Code with a toolbar"),
2038
- "",
2039
- codeBlock(
2040
- "ts",
2041
- [
2042
- "// Syntax highlighting, line numbers, and copy buttons",
2043
- "export function hello(name: string): string {",
2044
- ' return "Hello, " + name + "!";',
2045
- "}"
2046
- ].join("\n")
2047
- ),
2048
- "",
2049
- heading(2, "Callouts"),
2050
- "",
2051
- "> [!tip] Try it",
2052
- "> Callouts from `@riebeckite/plugin-obsidian-markdown` render as styled",
2053
- "> blocks. Add one with `> [!info]`, `> [!warning]`, or `> [!question]`.",
2343
+ readSummary(EXAMPLES_COPY.intro, language),
2054
2344
  ""
2055
- ].join("\n");
2345
+ ];
2346
+ for (const key of README_DEMO_ORDER) {
2347
+ const packageName = demoPackage(key);
2348
+ if (!hasPlugin(preset, packageName)) continue;
2349
+ const demo = README_DEMOS[key];
2350
+ lines.push(heading(2, readSummary(demo.title, language)), "");
2351
+ lines.push(readSummary(demo.intro, language), "");
2352
+ lines.push(demo.markdown, "");
2353
+ }
2354
+ return lines.join("\n");
2056
2355
  }
2057
- function referencePluginsContent(preset) {
2356
+ function referencePluginsContent(preset, variables) {
2058
2357
  const lines = [frontmatter()];
2059
2358
  lines.push(heading(1, "Plugin reference"), "");
2060
2359
  lines.push(
2061
- "Every plugin registered by this preset, with the factory used in",
2062
- "`riebeckite.config.ts`. Full documentation lives in each package README.",
2360
+ "Every plugin registered by this preset, with the factory and options",
2361
+ "used in `riebeckite.config.ts`. Full documentation lives in each package",
2362
+ "README.",
2063
2363
  ""
2064
2364
  );
2065
- lines.push("| Package | Factory |");
2066
- lines.push("| --- | --- |");
2365
+ lines.push("| Package | Factory | Options |");
2366
+ lines.push("| --- | --- | --- |");
2067
2367
  for (const plugin of preset.plugins) {
2368
+ const options = readmePluginOptions(variables, preset, plugin);
2369
+ const cell = options === null ? "—" : `\`${options}\``;
2068
2370
  lines.push(
2069
- `| [\`${plugin.package}\`](${pluginReadmeUrl(plugin.package.replace(/^@riebeckite\/plugin-/, ""))}) | \`${plugin.factory}\` |`
2371
+ `| [\`${plugin.package}\`](${pluginReadmeUrl(plugin.package.replace(/^@riebeckite\/plugin-/, ""))}) | \`${plugin.factory}\` | ${cell} |`
2070
2372
  );
2071
2373
  }
2072
2374
  lines.push("");
@@ -2096,6 +2398,9 @@ function referenceThemesContent() {
2096
2398
  return lines.join("\n");
2097
2399
  }
2098
2400
 
2401
+ // src/scaffold/version.ts
2402
+ var RIEBECKITE_VERSION = "^0.0.6";
2403
+
2099
2404
  // src/scaffold/templates.ts
2100
2405
  function siteTemplateFiles(preset, variables) {
2101
2406
  return [
@@ -2164,7 +2469,6 @@ function appFiles(preset) {
2164
2469
  ...has("article") ? [{ path: "app/components/article.tsx", content: get("article") }] : []
2165
2470
  ];
2166
2471
  }
2167
- var RIEBECKITE_VERSION = "^0.0.3";
2168
2472
  function packageJson(preset, variables) {
2169
2473
  const dependencies = {
2170
2474
  "@riebeckite/core": RIEBECKITE_VERSION,
@@ -2242,12 +2546,40 @@ function riebeckiteConfig(preset, variables) {
2242
2546
  return `${lines.join("\n")}
2243
2547
  `;
2244
2548
  }
2549
+ var OPTION_DEPTH = {
2550
+ empty: 0,
2551
+ minimal: 0,
2552
+ starter: 0,
2553
+ rich: 1,
2554
+ full: 2,
2555
+ max: 2,
2556
+ ultra: 3
2557
+ };
2558
+ function optionContext(preset, variables) {
2559
+ return {
2560
+ variables,
2561
+ languages: preset.languages,
2562
+ depth: OPTION_DEPTH[preset.name]
2563
+ };
2564
+ }
2565
+ function renderOptionValue(value, context) {
2566
+ return typeof value === "function" ? value(context) : value;
2567
+ }
2568
+ function renderOptions(options, context) {
2569
+ if (options === void 0) return null;
2570
+ if (typeof options === "string") return options;
2571
+ if (typeof options === "function") return options(context);
2572
+ const fields = Object.entries(options).filter(([, field]) => field.depth <= context.depth).map(
2573
+ ([key, field]) => `${key}: ${renderOptionValue(field.value, context)}`
2574
+ );
2575
+ return fields.length === 0 ? null : `{ ${fields.join(", ")} }`;
2576
+ }
2245
2577
  function pluginExpression(plugin, preset, variables) {
2246
- if (plugin.package === "@riebeckite/plugin-l10n") {
2247
- const defaultLang = defaultLanguageForLocale(variables.locale);
2248
- return `l10n({ defaultLang: ${JSON.stringify(defaultLang)}, languages: ${JSON.stringify(preset.languages)} })`;
2249
- }
2250
- return plugin.options ? `${plugin.factory}(${plugin.options})` : `${plugin.factory}()`;
2578
+ const options = renderOptions(
2579
+ plugin.options,
2580
+ optionContext(preset, variables)
2581
+ );
2582
+ return options === null ? `${plugin.factory}()` : `${plugin.factory}(${options})`;
2251
2583
  }
2252
2584
  function viteConfig() {
2253
2585
  const ssrExternals = [...defaultSsrExternals].map((name) => ` "${name}",`).join("\n");
@@ -2366,7 +2698,16 @@ var README_WORDS = {
2366
2698
  extendingBody: "Plugins and themes are registered in `riebeckite.config.ts`. Install a package, import its factory, and add it to the `plugins` array — or point `theme` at another theme factory. See the Riebeckite repository for the full plugin and theme index.",
2367
2699
  none: "none",
2368
2700
  noPlugins: "no plugins",
2369
- single: "single language"
2701
+ single: "single language",
2702
+ configReference: "Configuration reference",
2703
+ configReferenceBody: "`riebeckite.config.ts` already registers every plugin below with its full option set — the file doubles as the settings reference. Every option is documented in the plugin's package README.",
2704
+ factory: "Factory",
2705
+ options: "Options",
2706
+ emDash: "—",
2707
+ demoPages: "Try the demos",
2708
+ demoPagesBody: "The generated site ships content pages that exercise these features:",
2709
+ copyDemos: "Copy-paste demos",
2710
+ copyDemosBody: "Paste any of these snippets into a Markdown file under `content/` and run `npm run dev`. Each one renders through a plugin this preset registers."
2370
2711
  },
2371
2712
  ja: {
2372
2713
  included: "含まれているもの",
@@ -2381,7 +2722,16 @@ var README_WORDS = {
2381
2722
  extendingBody: "プラグインとテーマは `riebeckite.config.ts` で登録します。パッケージをインストールし、ファクトリを import して `plugins` 配列に追加するか、`theme` を別のテーマファクトリに変更します。全プラグイン・テーマの一覧は Riebeckite リポジトリを参照してください。",
2382
2723
  none: "なし",
2383
2724
  noPlugins: "プラグインなし",
2384
- single: "単一言語"
2725
+ single: "単一言語",
2726
+ configReference: "設定リファレンス",
2727
+ configReferenceBody: "`riebeckite.config.ts` には、以下の全プラグインがあらかじめ全オプション付きで登録されています。このファイル自体を設定リファレンスとして利用できます。各オプションの詳しい説明はプラグインパッケージの README を参照してください。",
2728
+ factory: "ファクトリ",
2729
+ options: "オプション",
2730
+ emDash: "—",
2731
+ demoPages: "デモを試す",
2732
+ demoPagesBody: "生成されたサイトには、各機能を体験できるコンテンツページが含まれています:",
2733
+ copyDemos: "コピーして使えるデモ",
2734
+ copyDemosBody: "以下のスニペットを `content/` 配下の Markdown ファイルに貼り付けて `npm run dev` を実行してください。それぞれ、このプリセットが登録しているプラグインでレンダリングされます。"
2385
2735
  }
2386
2736
  };
2387
2737
  function readme(preset, variables) {
@@ -2407,18 +2757,23 @@ function readmeEn(preset, variables) {
2407
2757
  );
2408
2758
  lines.push(`- **${words.pages}**: ${pagesLabel(preset) ?? words.none}`);
2409
2759
  lines.push("");
2760
+ if (preset.readme === "rich") {
2761
+ lines.push(...configurationReferenceLines(preset, variables, words));
2762
+ }
2410
2763
  }
2411
2764
  lines.push(`## ${words.commands}`, "");
2412
2765
  lines.push(
2413
2766
  "```sh",
2414
- "pnpm install",
2415
- "pnpm exec riebeckite check",
2416
- "pnpm exec riebeckite dev",
2417
- "pnpm exec riebeckite build",
2767
+ "npm install",
2768
+ "npm run check",
2769
+ "npm run dev",
2770
+ "npm run build",
2418
2771
  "```",
2419
2772
  ""
2420
2773
  );
2421
2774
  if (preset.readme === "rich") {
2775
+ lines.push(...demoPagesLines(preset, variables, words, "en"));
2776
+ lines.push(...copyPasteDemoLines(preset, words, "en"));
2422
2777
  lines.push(`## ${words.localization}`, "");
2423
2778
  lines.push(words.localizationBody, "");
2424
2779
  lines.push(`## ${words.extending}`, "");
@@ -2450,18 +2805,23 @@ function readmeJa(preset, variables) {
2450
2805
  );
2451
2806
  lines.push(`- **${words.pages}**: ${pagesLabel(preset) ?? words.none}`);
2452
2807
  lines.push("");
2808
+ if (preset.readme === "rich") {
2809
+ lines.push(...configurationReferenceLines(preset, variables, words));
2810
+ }
2453
2811
  }
2454
2812
  lines.push(`## ${words.commands}`, "");
2455
2813
  lines.push(
2456
2814
  "```sh",
2457
- "pnpm install",
2458
- "pnpm exec riebeckite check",
2459
- "pnpm exec riebeckite dev",
2460
- "pnpm exec riebeckite build",
2815
+ "npm install",
2816
+ "npm run check",
2817
+ "npm run dev",
2818
+ "npm run build",
2461
2819
  "```",
2462
2820
  ""
2463
2821
  );
2464
2822
  if (preset.readme === "rich") {
2823
+ lines.push(...demoPagesLines(preset, variables, words, "ja"));
2824
+ lines.push(...copyPasteDemoLines(preset, words, "ja"));
2465
2825
  lines.push(`## ${words.localization}`, "");
2466
2826
  lines.push(words.localizationBody, "");
2467
2827
  lines.push(`## ${words.extending}`, "");
@@ -2484,6 +2844,435 @@ function pagesLabel(preset) {
2484
2844
  if (preset.contentPages.length === 0) return null;
2485
2845
  return preset.contentPages.map((page) => `/${page}`).join(", ");
2486
2846
  }
2847
+ var README_DEMOS = {
2848
+ "@riebeckite/plugin-obsidian-markdown/callout": {
2849
+ title: { en: "Callouts", ja: "コールアウト" },
2850
+ intro: {
2851
+ en: "A block quote with a `[!type]` marker becomes a styled callout panel.",
2852
+ ja: "`[!type]` マーカー付きブロック引用をスタイル付きパネルに変換します。"
2853
+ },
2854
+ markdown: [
2855
+ "> [!tip] Try it",
2856
+ "> A callout is a block quote with a `[!type]` marker. `[!info]`,",
2857
+ "> `[!warning]`, and `[!question]` render the same way."
2858
+ ].join("\n")
2859
+ },
2860
+ "@riebeckite/plugin-obsidian-markdown/wikilinks": {
2861
+ title: { en: "Wikilinks and embeds", ja: "ウィキリンクと埋め込み" },
2862
+ intro: {
2863
+ en: "`[[...]]` links and `![[...]]` embeds resolve to real permalinks from the content manifest.",
2864
+ ja: "`[[...]]` リンクと `![[...]]` 埋め込みは、コンテンツマニフェストから実際のパーマリンクへ解決されます。"
2865
+ },
2866
+ markdown: "Read the [[guide]] and [[index]] pages. `![[index]]` embeds the note inline."
2867
+ },
2868
+ "@riebeckite/plugin-code-enhance": {
2869
+ title: { en: "Code with a toolbar", ja: "ツールバー付きコード" },
2870
+ intro: {
2871
+ en: "Code fences get line numbers, a filename bar, line highlighting, and a copy button.",
2872
+ ja: "コードフェンスに行番号・ファイル名バー・行ハイライト・コピーボタンが付きます。"
2873
+ },
2874
+ markdown: fence(
2875
+ "ts",
2876
+ [
2877
+ "// Syntax highlighting, line numbers, and a copy button",
2878
+ "export function hello(name: string): string {",
2879
+ ' return "Hello, " + name + "!";',
2880
+ "}"
2881
+ ].join("\n")
2882
+ )
2883
+ },
2884
+ "@riebeckite/plugin-code-tabs": {
2885
+ title: { en: "Code tabs", ja: "タブ切り替えコード" },
2886
+ intro: {
2887
+ en: 'Adjacent `tab="..."` fences become one tabbed group; `syncTabs: true` keeps the same label in sync across groups.',
2888
+ ja: '隣り合う `tab="..."` フェンスがタブグループになります。`syncTabs: true` でページ内の同じラベルを同期できます。'
2889
+ },
2890
+ markdown: [
2891
+ fence('ts tab="React"', 'const greeting = "Hello from React";'),
2892
+ fence('js tab="Vanilla"', 'console.log("Hello from JavaScript");')
2893
+ ].join("\n")
2894
+ },
2895
+ "@riebeckite/plugin-mermaid": {
2896
+ title: { en: "Mermaid", ja: "Mermaid" },
2897
+ intro: {
2898
+ en: "A `mermaid` fence becomes a rendered diagram at build time.",
2899
+ ja: "`mermaid` フェンスはビルド時にレンダリングされた図になります。"
2900
+ },
2901
+ markdown: fence(
2902
+ "mermaid",
2903
+ [
2904
+ "flowchart LR",
2905
+ " A[Note] --> B{Published?}",
2906
+ " B -->|yes| C[Site]",
2907
+ " B -->|no| D[Draft]"
2908
+ ].join("\n")
2909
+ )
2910
+ },
2911
+ "@riebeckite/plugin-d2": {
2912
+ title: { en: "D2", ja: "D2" },
2913
+ intro: {
2914
+ en: "A `d2` fence is compiled into an SVG diagram.",
2915
+ ja: "`d2` フェンスが SVG 図にコンパイルされます。"
2916
+ },
2917
+ markdown: fence("d2", "site: Riebeckite\n content -> build -> deploy")
2918
+ },
2919
+ "@riebeckite/plugin-graphviz": {
2920
+ title: { en: "Graphviz / DOT", ja: "Graphviz / DOT" },
2921
+ intro: {
2922
+ en: "A `dot` fence is rendered with a configurable engine (here `dot`).",
2923
+ ja: "`dot` フェンスが指定のエンジン(ここでは `dot`)でレンダリングされます。"
2924
+ },
2925
+ markdown: fence(
2926
+ "dot",
2927
+ "digraph G {\n notes -> pages;\n pages -> html;\n}"
2928
+ )
2929
+ },
2930
+ "@riebeckite/plugin-chartjs": {
2931
+ title: { en: "Chart.js", ja: "Chart.js" },
2932
+ intro: {
2933
+ en: "A `chart` JSON fence renders with Chart.js; a caption comes from the block `title`.",
2934
+ ja: "`chart` JSON フェンスが Chart.js で描画されます。キャプションはブロックの `title` から取られます。"
2935
+ },
2936
+ markdown: fence(
2937
+ "chart",
2938
+ `{
2939
+ "type": "bar",
2940
+ "data": {
2941
+ "labels": ["Mon", "Tue", "Wed"],
2942
+ "datasets": [{ "label": "Visits", "data": [12, 19, 8] }]
2943
+ }
2944
+ }`
2945
+ )
2946
+ },
2947
+ "@riebeckite/plugin-vega-lite": {
2948
+ title: { en: "Vega-Lite", ja: "Vega-Lite" },
2949
+ intro: {
2950
+ en: "A `vega-lite` JSON specification becomes a Vega chart.",
2951
+ ja: "`vega-lite` の JSON 仕様が Vega チャートになります。"
2952
+ },
2953
+ markdown: fence(
2954
+ "vega-lite",
2955
+ `{
2956
+ "title": "Revenue",
2957
+ "data": {
2958
+ "values": [
2959
+ { "category": "A", "value": 28 },
2960
+ { "category": "B", "value": 55 }
2961
+ ]
2962
+ },
2963
+ "mark": "bar",
2964
+ "encoding": {
2965
+ "x": { "field": "category", "type": "nominal" },
2966
+ "y": { "field": "value", "type": "quantitative" }
2967
+ }
2968
+ }`
2969
+ )
2970
+ },
2971
+ "@riebeckite/plugin-wavedrom": {
2972
+ title: { en: "WaveDrom", ja: "WaveDrom" },
2973
+ intro: {
2974
+ en: "A `wavedrom` JSON fence becomes a digital timing diagram.",
2975
+ ja: "`wavedrom` JSON フェンスがデジタルタイミング図になります。"
2976
+ },
2977
+ markdown: fence(
2978
+ "wavedrom",
2979
+ `{
2980
+ "signal": [
2981
+ { "name": "clk", "wave": "p......" },
2982
+ { "name": "bus", "wave": "x.34.5x", "data": "head body tail" }
2983
+ ]
2984
+ }`
2985
+ )
2986
+ },
2987
+ "@riebeckite/plugin-markmap": {
2988
+ title: { en: "Markmap", ja: "Markmap" },
2989
+ intro: {
2990
+ en: "A `markmap` fence turns its heading outline into an interactive mind map.",
2991
+ ja: "`markmap` フェンスの見出し構成がインタラクティブなマインドマップになります。"
2992
+ },
2993
+ markdown: fence(
2994
+ "markmap",
2995
+ [
2996
+ "# Project",
2997
+ "",
2998
+ "## Design",
2999
+ "",
3000
+ "### Notation",
3001
+ "### Rendering",
3002
+ "",
3003
+ "## Delivery"
3004
+ ].join("\n")
3005
+ )
3006
+ },
3007
+ "@riebeckite/plugin-map": {
3008
+ title: { en: "Maps", ja: "地図" },
3009
+ intro: {
3010
+ en: "A `map` fence embeds an OpenStreetMap: a static fallback (coordinates and links) first, upgraded to an interactive map when JavaScript is available.",
3011
+ ja: "`map` フェンスが OpenStreetMap を埋め込みます。まず静的なフォールバック(座標とリンク)を表示し、JavaScript がある場合はインタラクティブな地図に拡張します。"
3012
+ },
3013
+ markdown: fence(
3014
+ "map",
3015
+ [
3016
+ "center: 35.6812, 139.7671",
3017
+ "zoom: 13",
3018
+ "label: Tokyo Station",
3019
+ "markers:",
3020
+ " - 35.6812, 139.7671 | Tokyo Station",
3021
+ " - 35.6586, 139.7454 | Tokyo Tower"
3022
+ ].join("\n")
3023
+ )
3024
+ },
3025
+ "@riebeckite/plugin-marp": {
3026
+ title: { en: "Marp slides", ja: "Marp スライド" },
3027
+ intro: {
3028
+ en: "A `marp` fence renders slides, separated by `---`.",
3029
+ ja: "`marp` フェンスがスライドとして描画されます。スライドは `---` で区切ります。"
3030
+ },
3031
+ markdown: fence(
3032
+ 'marp title="Intro deck"',
3033
+ ["# First slide", "", "- a bullet", "", "---", "", "# Second slide"].join(
3034
+ "\n"
3035
+ )
3036
+ )
3037
+ },
3038
+ "@riebeckite/plugin-qr-code": {
3039
+ title: { en: "QR codes", ja: "QR コード" },
3040
+ intro: {
3041
+ en: "A `qr` fence becomes an inline SVG QR code, encoded entirely at build time.",
3042
+ ja: "`qr` フェンスがインライン SVG の QR コードになります(ビルド時に全てエンコードされます)。"
3043
+ },
3044
+ markdown: fence("qr", "# caption: Project page\nhttps://example.com/")
3045
+ },
3046
+ "@riebeckite/plugin-rich-embed": {
3047
+ title: { en: "Rich embeds", ja: "リッチ埋め込み" },
3048
+ intro: {
3049
+ en: "An `embed` fence turns a URL into a YouTube, Vimeo, Spotify, CodePen, or Gist embed.",
3050
+ ja: "`embed` フェンスの URL が YouTube・Vimeo・Spotify・CodePen・Gist の埋め込みになります。"
3051
+ },
3052
+ markdown: fence(
3053
+ "embed",
3054
+ [
3055
+ "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
3056
+ "title: Demo video",
3057
+ "caption: A short caption",
3058
+ "aspect: 16/9"
3059
+ ].join("\n")
3060
+ )
3061
+ },
3062
+ "@riebeckite/plugin-gallery": {
3063
+ title: { en: "Gallery cards", ja: "ギャラリーカード" },
3064
+ intro: {
3065
+ en: "A `gallery` YAML fence renders a responsive grid of cards — handy for theme or project showcases.",
3066
+ ja: "`gallery` の YAML フェンスがレスポンシブなカードグリッドを描画します。テーマやプロジェクトの紹介に便利です。"
3067
+ },
3068
+ markdown: fence(
3069
+ "gallery",
3070
+ [
3071
+ "columns: 3",
3072
+ "items:",
3073
+ " - title: Default",
3074
+ " description: A clean, typographic theme.",
3075
+ " meta: v0.0.5",
3076
+ " href: https://example.com/themes/default/",
3077
+ " - title: Minimal",
3078
+ " description: Stripped back to the essentials.",
3079
+ " meta: v0.0.5",
3080
+ " href: https://example.com/themes/minimal/",
3081
+ " - title: Gruvbox",
3082
+ " description: A warm, high-contrast palette.",
3083
+ " meta: v0.0.5",
3084
+ " href: https://example.com/themes/gruvbox/"
3085
+ ].join("\n")
3086
+ )
3087
+ },
3088
+ "@riebeckite/plugin-dataview": {
3089
+ title: { en: "Dataview", ja: "Dataview" },
3090
+ intro: {
3091
+ en: "A `dataview` query renders a table of notes from the manifest.",
3092
+ ja: "`dataview` クエリがマニフェストからノート一覧を描画します。"
3093
+ },
3094
+ markdown: fence(
3095
+ "dataview",
3096
+ [
3097
+ 'TABLE file.name AS "Name", status',
3098
+ "FROM #project",
3099
+ 'WHERE status = "active"',
3100
+ "SORT file.name asc",
3101
+ "LIMIT 10"
3102
+ ].join("\n")
3103
+ )
3104
+ },
3105
+ "@riebeckite/plugin-query": {
3106
+ title: { en: "Query", ja: "Query" },
3107
+ intro: {
3108
+ en: "A `query` fence is YAML that filters and sorts entries from the manifest.",
3109
+ ja: "`query` フェンスの YAML でマニフェストのエントリを絞り込み・並べ替えできます。"
3110
+ },
3111
+ markdown: fence(
3112
+ "query",
3113
+ [
3114
+ "filter:",
3115
+ " tags:",
3116
+ " any: [diary]",
3117
+ "sort:",
3118
+ " field: date",
3119
+ " order: desc",
3120
+ "limit: 5"
3121
+ ].join("\n")
3122
+ )
3123
+ },
3124
+ "@riebeckite/plugin-bases": {
3125
+ title: { en: "Base views", ja: "Base ビュー" },
3126
+ intro: {
3127
+ en: "A `base` YAML fence renders a Base table view.",
3128
+ ja: "`base` YAML フェンスが Base のテーブルビューを描画します。"
3129
+ },
3130
+ markdown: fence(
3131
+ "base",
3132
+ [
3133
+ "filters:",
3134
+ " and:",
3135
+ ' - file.hasTag("featured")',
3136
+ "properties:",
3137
+ " file.name:",
3138
+ " displayName: Title",
3139
+ "views:",
3140
+ " - type: table",
3141
+ " name: Featured",
3142
+ " limit: 10"
3143
+ ].join("\n")
3144
+ )
3145
+ },
3146
+ "@riebeckite/plugin-kanban": {
3147
+ title: { en: "Kanban boards", ja: "カンバンボード" },
3148
+ intro: {
3149
+ en: "A note whose body is `##` columns of task lists becomes a board; `#tags` and `[[wikilinks]]` work inside cards.",
3150
+ ja: "本文が `##` 列とタスクリストでできたノートはボードになります。カード内では `#タグ` や `[[ウィキリンク]]` も使えます。"
3151
+ },
3152
+ markdown: fence(
3153
+ "md",
3154
+ [
3155
+ "## Backlog",
3156
+ "",
3157
+ "- [ ] Draft the release notes",
3158
+ "- [ ] Link to [[index]]",
3159
+ "",
3160
+ "## Done",
3161
+ "",
3162
+ "- [x] Publish the fixture"
3163
+ ].join("\n")
3164
+ )
3165
+ }
3166
+ };
3167
+ var README_PAGE_LINKS = {
3168
+ "framework/plugins": { en: "Plugin tour", ja: "プラグインツアー" },
3169
+ "framework/themes": { en: "Theme tour", ja: "テーマツアー" },
3170
+ guide: { en: "Getting-started guide", ja: "はじめにガイド" },
3171
+ examples: { en: "Examples", ja: "サンプル集" },
3172
+ "reference/plugins": { en: "Plugin reference", ja: "プラグインリファレンス" },
3173
+ "reference/themes": { en: "Theme reference", ja: "テーマリファレンス" }
3174
+ };
3175
+ var ENGLISH_ONLY_PAGES = /* @__PURE__ */ new Set([
3176
+ "guide",
3177
+ "reference/plugins",
3178
+ "reference/themes"
3179
+ ]);
3180
+ function fence(language, body) {
3181
+ const tick = "```";
3182
+ return `${tick}${language}
3183
+ ${body}
3184
+ ${tick}`;
3185
+ }
3186
+ function hasPlugin(preset, packageName) {
3187
+ return preset.plugins.some((plugin) => plugin.package === packageName);
3188
+ }
3189
+ function demoPackage(key) {
3190
+ return key.split("/", 2).join("/");
3191
+ }
3192
+ function readmePluginOptions(variables, preset, plugin) {
3193
+ return renderOptions(plugin.options, optionContext(preset, variables));
3194
+ }
3195
+ function configurationReferenceLines(preset, variables, words) {
3196
+ const lines = [
3197
+ `## ${words.configReference}`,
3198
+ "",
3199
+ words.configReferenceBody,
3200
+ ""
3201
+ ];
3202
+ if (preset.theme) {
3203
+ const themeCall = preset.theme.options ? `${preset.theme.factory}(${preset.theme.options})` : `${preset.theme.factory}()`;
3204
+ lines.push(`- **${words.theme}**: \`${themeCall}\``, "");
3205
+ }
3206
+ lines.push(
3207
+ `| Package | ${words.factory} | ${words.options} |`,
3208
+ "| --- | --- | --- |"
3209
+ );
3210
+ for (const plugin of preset.plugins) {
3211
+ const options = readmePluginOptions(variables, preset, plugin);
3212
+ const cell = options === null ? words.emDash : `\`${options}\``;
3213
+ lines.push(`| \`${plugin.package}\` | \`${plugin.factory}\` | ${cell} |`);
3214
+ }
3215
+ lines.push("");
3216
+ return lines;
3217
+ }
3218
+ function demoPagesLines(preset, variables, words, language) {
3219
+ const lines = [
3220
+ `## ${words.demoPages}`,
3221
+ "",
3222
+ words.demoPagesBody,
3223
+ ""
3224
+ ];
3225
+ const defaultLang = defaultLanguageForLocale(variables.locale);
3226
+ const pages = preset.contentPages.filter((page) => page !== "index");
3227
+ for (const page of pages) {
3228
+ const label = README_PAGE_LINKS[page]?.[language] ?? `/${page}/`;
3229
+ const suffix = ENGLISH_ONLY_PAGES.has(page) && defaultLang !== "en" ? ".en" : "";
3230
+ const source = `content/${page}${suffix}.md`;
3231
+ const url = `/${page}/`;
3232
+ lines.push(`- [**${label}**](${source}) — live at [\`${url}\`](${url})`);
3233
+ }
3234
+ lines.push("");
3235
+ return lines;
3236
+ }
3237
+ var README_DEMO_ORDER = [
3238
+ "@riebeckite/plugin-obsidian-markdown/callout",
3239
+ "@riebeckite/plugin-obsidian-markdown/wikilinks",
3240
+ "@riebeckite/plugin-code-enhance",
3241
+ "@riebeckite/plugin-code-tabs",
3242
+ "@riebeckite/plugin-mermaid",
3243
+ "@riebeckite/plugin-d2",
3244
+ "@riebeckite/plugin-graphviz",
3245
+ "@riebeckite/plugin-chartjs",
3246
+ "@riebeckite/plugin-vega-lite",
3247
+ "@riebeckite/plugin-wavedrom",
3248
+ "@riebeckite/plugin-markmap",
3249
+ "@riebeckite/plugin-map",
3250
+ "@riebeckite/plugin-marp",
3251
+ "@riebeckite/plugin-qr-code",
3252
+ "@riebeckite/plugin-rich-embed",
3253
+ "@riebeckite/plugin-gallery",
3254
+ "@riebeckite/plugin-dataview",
3255
+ "@riebeckite/plugin-query",
3256
+ "@riebeckite/plugin-bases",
3257
+ "@riebeckite/plugin-kanban"
3258
+ ];
3259
+ function copyPasteDemoLines(preset, words, language) {
3260
+ const lines = [
3261
+ `## ${words.copyDemos}`,
3262
+ "",
3263
+ words.copyDemosBody,
3264
+ ""
3265
+ ];
3266
+ for (const key of README_DEMO_ORDER) {
3267
+ const packageName = demoPackage(key);
3268
+ if (!hasPlugin(preset, packageName)) continue;
3269
+ const demo = README_DEMOS[key];
3270
+ lines.push(`### ${demo.title[language]}`, "");
3271
+ lines.push(demo.intro[language], "");
3272
+ lines.push(demo.markdown, "");
3273
+ }
3274
+ return lines;
3275
+ }
2487
3276
  function server() {
2488
3277
  return `import { mountRiebeckiteEndpoints } from "@riebeckite/honox/server";
2489
3278
  import { createApp } from "honox/server";
@@ -2497,6 +3286,7 @@ const app = createApp({
2497
3286
  });
2498
3287
 
2499
3288
  export default app;
3289
+ export { config, content };
2500
3290
  `;
2501
3291
  }
2502
3292
  function client() {
@@ -2931,6 +3721,19 @@ function normalizePackageName(value) {
2931
3721
  function isNotFoundError(error) {
2932
3722
  return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
2933
3723
  }
3724
+
3725
+ // src/scaffold/next-steps.ts
3726
+ function formatScaffoldNextSteps(relativeDirectory) {
3727
+ const lines = ["Next steps:"];
3728
+ if (relativeDirectory !== ".") {
3729
+ lines.push(` cd ${relativeDirectory}`);
3730
+ }
3731
+ lines.push(" npm install");
3732
+ lines.push(" npm run check");
3733
+ lines.push(" npm run dev");
3734
+ lines.push(" npm run build");
3735
+ return lines.join("\n");
3736
+ }
2934
3737
  export {
2935
3738
  SCAFFOLD_DEFAULT_PRESET,
2936
3739
  SCAFFOLD_PRESET_NAMES,
@@ -2939,6 +3742,7 @@ export {
2939
3742
  createRiebeckiteSsg,
2940
3743
  defaultSsgEntry,
2941
3744
  defaultSsrExternals,
3745
+ formatScaffoldNextSteps,
2942
3746
  isScaffoldPresetName,
2943
3747
  loadRiebeckiteConfig,
2944
3748
  replaceHonoxIslandDependencyPlugin,