@lupinum/ginko-docs 0.4.0-rc.1 → 0.4.0-rc.11

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 (139) hide show
  1. package/README.md +35 -4
  2. package/app/app.config.ts +2 -0
  3. package/app/app.vue +26 -2
  4. package/app/assets/css/component-kit.css +669 -0
  5. package/app/assets/css/prose.css +1 -259
  6. package/app/assets/css/tailwind.css +24 -0
  7. package/app/assets/css/theme-presets.css +141 -0
  8. package/app/components/OgImage/GinkoDocs.satori.vue +131 -10
  9. package/app/components/content/ImageZoomDialog.vue +2 -2
  10. package/app/components/mdc/MdcColumn.vue +12 -50
  11. package/app/components/mdc/MdcDropcap.vue +6 -1
  12. package/app/components/mdc/MdcExcerpt.vue +6 -1
  13. package/app/components/mdc/MdcFigure.vue +15 -8
  14. package/app/components/mdc/MdcFlow.vue +23 -0
  15. package/app/components/mdc/MdcLayout.vue +15 -34
  16. package/app/components/mdc/MdcQuiz.vue +24 -21
  17. package/app/components/prose/ProseImg.vue +1 -1
  18. package/app/components/site/SiteBanner.vue +2 -2
  19. package/app/components/site/SiteFooter.vue +1 -1
  20. package/app/components/site/SiteHeader.vue +1 -1
  21. package/app/components/site/SiteSocialLinks.vue +9 -1
  22. package/app/components/ui/badge/index.ts +1 -1
  23. package/app/components/ui/button/index.ts +1 -1
  24. package/app/composables/site-navigation.utils.ts +3 -7
  25. package/app/composables/useDocsText.ts +33 -0
  26. package/app/composables/useLocalizedPath.ts +3 -2
  27. package/app/composables/useProseAppearance.ts +2 -2
  28. package/app/error.vue +18 -8
  29. package/app/features/docs/components/DocsPageContent.vue +2 -2
  30. package/app/features/docs/components/DocsSidebarItem.vue +2 -2
  31. package/app/features/docs/components/DocsSidebarList.vue +1 -1
  32. package/app/features/docs/components/DocsToc.vue +2 -2
  33. package/app/features/search/command-center.ts +33 -0
  34. package/app/features/search/components/SiteCommandCenter.vue +25 -9
  35. package/app/features/search/components/SiteSearchPageHighlight.vue +4 -2
  36. package/app/features/search/useCommandCenter.ts +2 -2
  37. package/app/layouts/docs.vue +1 -1
  38. package/app/pages/index.vue +22 -3
  39. package/app/plugins/ginko-docs-theme.ts +1 -0
  40. package/authoring.generated.ts +348 -0
  41. package/authoring.ts +261 -0
  42. package/component-kit.ts +22 -0
  43. package/content-collections.ts +8 -4
  44. package/content.js +11 -8
  45. package/content.ts +4 -5
  46. package/dist/agent/AGENTS.md +89 -0
  47. package/dist/agent/manifest.json +502 -0
  48. package/dist/agent/pages/about.md +17 -0
  49. package/dist/agent/pages/blog/editorial-image-systems.md +50 -0
  50. package/dist/agent/pages/blog/navigation-quality.md +50 -0
  51. package/dist/agent/pages/blog/prerender-seo-search.md +48 -0
  52. package/dist/agent/pages/blog/static-docs-pipeline.md +56 -0
  53. package/dist/agent/pages/de/blog/navigationsqualitaet.md +50 -0
  54. package/dist/agent/pages/de/blog/prerender-seo-suche.md +48 -0
  55. package/dist/agent/pages/de/blog/redaktionelle-bildstrecken.md +50 -0
  56. package/dist/agent/pages/de/blog/statische-docs-pipeline.md +56 -0
  57. package/dist/agent/pages/de/dokumentation/anpassung/design-und-overrides.md +227 -0
  58. package/dist/agent/pages/de/dokumentation/anpassung/eigene-komponenten.md +123 -0
  59. package/dist/agent/pages/de/dokumentation/anpassung/startseite.md +156 -0
  60. package/dist/agent/pages/de/dokumentation/anpassung/website-konfigurieren.md +124 -0
  61. package/dist/agent/pages/de/dokumentation/betrieb/bereitstellung.md +152 -0
  62. package/dist/agent/pages/de/dokumentation/betrieb/fehlerbehebung.md +128 -0
  63. package/dist/agent/pages/de/dokumentation/erste-schritte/installation.md +103 -0
  64. package/dist/agent/pages/de/dokumentation/erste-schritte.md +137 -0
  65. package/dist/agent/pages/de/dokumentation/funktionen/agentenlesbare-ausgabe.md +78 -0
  66. package/dist/agent/pages/de/dokumentation/funktionen/blog.md +81 -0
  67. package/dist/agent/pages/de/dokumentation/funktionen/lokalisierung.md +145 -0
  68. package/dist/agent/pages/de/dokumentation/funktionen/seo-und-social-cards.md +128 -0
  69. package/dist/agent/pages/de/dokumentation/funktionen/suche.md +113 -0
  70. package/dist/agent/pages/de/dokumentation/inhalte/inhalte-schreiben.md +104 -0
  71. package/dist/agent/pages/de/dokumentation/inhalte/komponenten-verwenden.md +83 -0
  72. package/dist/agent/pages/de/dokumentation/inhalte/links.md +70 -0
  73. package/dist/agent/pages/de/dokumentation/inhalte/navigation.md +78 -0
  74. package/dist/agent/pages/de/dokumentation/komponenten/api-referenz.md +99 -0
  75. package/dist/agent/pages/de/dokumentation/komponenten/editoriale-layouts.md +139 -0
  76. package/dist/agent/pages/de/dokumentation/komponenten/komponenten-showcase.md +751 -0
  77. package/dist/agent/pages/de/dokumentation/komponenten/magazin-layouts.md +254 -0
  78. package/dist/agent/pages/de/dokumentation/komponenten/mdc-komponenten.md +1059 -0
  79. package/dist/agent/pages/de/dokumentation/konzepte/inhalte-und-routen.md +86 -0
  80. package/dist/agent/pages/de/dokumentation/konzepte/so-funktioniert-ginko-docs.md +74 -0
  81. package/dist/agent/pages/de/dokumentation/referenz/app-config.md +497 -0
  82. package/dist/agent/pages/de/dokumentation/referenz/content-config.md +162 -0
  83. package/dist/agent/pages/de/dokumentation/referenz/frontmatter.md +185 -0
  84. package/dist/agent/pages/de/dokumentation/ressourcen/anforderungen-und-upgrades.md +90 -0
  85. package/dist/agent/pages/de/dokumentation/ressourcen/oeffentliche-exporte.md +108 -0
  86. package/dist/agent/pages/de/ueber-ginko-docs.md +17 -0
  87. package/dist/agent/pages/de.md +17 -0
  88. package/dist/agent/pages/docs/authoring/links.md +70 -0
  89. package/dist/agent/pages/docs/authoring/navigation.md +78 -0
  90. package/dist/agent/pages/docs/authoring/use-components.md +83 -0
  91. package/dist/agent/pages/docs/authoring/write-content.md +104 -0
  92. package/dist/agent/pages/docs/components/api-reference.md +99 -0
  93. package/dist/agent/pages/docs/components/component-showcase.md +751 -0
  94. package/dist/agent/pages/docs/components/editorial-layouts.md +139 -0
  95. package/dist/agent/pages/docs/components/magazine-layouts.md +254 -0
  96. package/dist/agent/pages/docs/components/mdc-components.md +1059 -0
  97. package/dist/agent/pages/docs/concepts/content-and-routes.md +86 -0
  98. package/dist/agent/pages/docs/concepts/how-ginko-docs-works.md +74 -0
  99. package/dist/agent/pages/docs/customization/custom-components.md +123 -0
  100. package/dist/agent/pages/docs/customization/landing-page.md +156 -0
  101. package/dist/agent/pages/docs/customization/site-configuration.md +124 -0
  102. package/dist/agent/pages/docs/customization/theming-and-overrides.md +227 -0
  103. package/dist/agent/pages/docs/features/agent-readable-output.md +78 -0
  104. package/dist/agent/pages/docs/features/blog.md +81 -0
  105. package/dist/agent/pages/docs/features/localization.md +145 -0
  106. package/dist/agent/pages/docs/features/search.md +113 -0
  107. package/dist/agent/pages/docs/features/seo-and-social-cards.md +128 -0
  108. package/dist/agent/pages/docs/getting-started/installation.md +103 -0
  109. package/dist/agent/pages/docs/getting-started.md +137 -0
  110. package/dist/agent/pages/docs/operations/deployment.md +152 -0
  111. package/dist/agent/pages/docs/operations/troubleshooting.md +128 -0
  112. package/dist/agent/pages/docs/reference/app-config.md +497 -0
  113. package/dist/agent/pages/docs/reference/content-config.md +162 -0
  114. package/dist/agent/pages/docs/reference/frontmatter.md +185 -0
  115. package/dist/agent/pages/docs/resources/public-exports.md +108 -0
  116. package/dist/agent/pages/docs/resources/requirements-and-upgrades.md +90 -0
  117. package/dist/agent/pages/index.md +17 -0
  118. package/i18n/messages/global/command.ts +1 -0
  119. package/icon-bundle.ts +24 -4
  120. package/index.d.ts +1 -0
  121. package/modules/feature-routing.ts +47 -22
  122. package/modules/syntax-highlighting.ts +5 -0
  123. package/nuxt.config.ts +12 -8
  124. package/package.json +20 -8
  125. package/runtime/generate-favicons.mjs +124 -0
  126. package/server/plugins/sitemap-policy.ts +8 -1
  127. package/server/routes/.well-known/ai-catalog.json.get.ts +10 -0
  128. package/server/routes/[locale]/blog/rss.xml.get.ts +6 -1
  129. package/server/routes/blog/rss.xml.get.ts +10 -2
  130. package/server/routes/mcp/server-card.get.ts +14 -0
  131. package/server/utils/blog-feed.ts +24 -6
  132. package/server/utils/mcp-server-card.ts +45 -0
  133. package/server/utils/redirects.ts +10 -3
  134. package/server/utils/redirects.utils.ts +10 -7
  135. package/server/utils/sitemap.ts +8 -3
  136. package/shared/theme-presets.ts +3 -0
  137. package/shared/types/app-config.ts +20 -2
  138. package/shared/types/nuxt-config.ts +3 -0
  139. package/tags.ts +72 -10
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="https://raw.githubusercontent.com/lupinum-dev/ginko-docs/main/docs/public/web-app-manifest-512x512.png" width="128" alt="Ginko Docs icon">
2
+ <img src="https://raw.githubusercontent.com/lupinum-dev/ginko-docs/main/docs/public/favicon.svg" width="128" alt="Ginko Docs icon">
3
3
  </p>
4
4
 
5
5
  <h1 align="center">@lupinum/ginko-docs</h1>
@@ -23,13 +23,13 @@ Use this package when a Nuxt application needs documentation routes, navigation,
23
23
 
24
24
  - Node.js 22.18, 24.11, or 26 and later maintenance releases
25
25
  - Nuxt 4.5.1 or later in the Nuxt 4 line
26
- - Vue 3.5.35 or later
27
- - Ginko Content 0.4 prerelease or later in the 0.4 line
26
+ - Vue 3.5.40 or later
27
+ - Ginko Content 1.0.0-beta.9 or later in the 1.x line
28
28
 
29
29
  ## Installation
30
30
 
31
31
  ```bash
32
- pnpm add -D @lupinum/ginko-docs@0.4.0-rc.1 @lupinum/ginko-content@1.0.0-beta.4
32
+ pnpm add -D @lupinum/ginko-docs@0.4.0-rc.11 @lupinum/ginko-content@1.0.0-beta.9
33
33
  ```
34
34
 
35
35
  ```ts
@@ -40,6 +40,29 @@ export default defineNuxtConfig({
40
40
  });
41
41
  ```
42
42
 
43
+ <!-- BEGIN:consumer-onboarding -->
44
+
45
+ ## Use a coding agent
46
+
47
+ A coding agent is a development tool that can inspect and change your project.
48
+
49
+ Copy this task prompt into your application agent:
50
+
51
+ ```text [Agent task]
52
+ Use the installed @lupinum/ginko-docs package to implement my requested feature.
53
+ Read the application's instructions first. Resolve @lupinum/ginko-docs/agent-docs
54
+ from this application directory and read the relevant local pages.
55
+ Preserve the existing AGENTS.md. If it has no equivalent guidance, append
56
+ one short note to resolve installed package docs before integration work
57
+ and after dependency changes. Do not install a consumer skill.
58
+ Check the completed feature using this project's normal commands.
59
+ ```
60
+
61
+ The installed documentation matches the package version. If an older version
62
+ has no documentation export, use its README, types and matching release docs.
63
+
64
+ <!-- END:consumer-onboarding -->
65
+
43
66
  ## Quick start
44
67
 
45
68
  ```ts
@@ -58,6 +81,14 @@ export default defineGinkoDocsConfig({
58
81
 
59
82
  Put Markdown files in `content/docs`. Open `/docs` after the Nuxt server starts.
60
83
 
84
+ Generate the browser icon set from one square SVG or raster source:
85
+
86
+ ```bash
87
+ pnpm exec ginko-docs-favicons --source public/product-icon.svg --out public
88
+ ```
89
+
90
+ The command writes `favicon.svg`, `favicon-96x96.png`, `apple-touch-icon.png`, and `favicon.ico`. Ginko Docs adds the matching head links and uses the generated 96px PNG in Nuxt-preset social images so every supported source format renders consistently.
91
+
61
92
  ## Exports
62
93
 
63
94
  - `@lupinum/ginko-docs` is the Nuxt layer entry.
package/app/app.config.ts CHANGED
@@ -2,6 +2,7 @@ import type { GinkoDocsAppConfig } from "../shared/types/app-config";
2
2
  export default {
3
3
  ginkoDocs: {
4
4
  theme: {
5
+ preset: "default",
5
6
  neutral: "zinc",
6
7
  primary: "neutral",
7
8
  codeBlocks: "dark",
@@ -16,6 +17,7 @@ export default {
16
17
  de: "Dokumentations-Sites auf Basis von Nuxt und Ginko Content.",
17
18
  },
18
19
  url: "http://localhost:3000",
20
+ icon: "/favicon.svg",
19
21
  logo: { light: "/logo.svg", dark: "/logo-dark.svg" },
20
22
  docsSidebarSwitcher: "tabs",
21
23
  lupinumAttribution: true,
package/app/app.vue CHANGED
@@ -7,10 +7,9 @@ import { useCanonicalUrl } from "#ginko-docs/composables/useCanonicalUrl";
7
7
  import { useGinkoAnalytics } from "#ginko-docs/composables/useGinkoAnalytics";
8
8
  import { useGinkoOgImage } from "#ginko-docs/composables/useGinkoOgImage";
9
9
  import { useSchemaJsonLd } from "#ginko-docs/composables/useSchemaJsonLd";
10
- import { defaultLocale } from "../i18n/locales";
11
10
 
12
11
  const canonicalUrl = useCanonicalUrl();
13
- const { locale, locales } = useI18n();
12
+ const { defaultLocale, locale, locales } = useI18n();
14
13
  const route = useRoute();
15
14
  const { switchPathname } = useLocalizedRouteSwitch();
16
15
  const docsConfig = useAppConfig().ginkoDocs;
@@ -18,6 +17,7 @@ const siteUrl = docsConfig.site.url;
18
17
 
19
18
  useSeoMeta({
20
19
  ogSiteName: computed(() => getLocalizedSiteText(docsConfig.site.name, locale.value)),
20
+ ogType: "website",
21
21
  ogUrl: canonicalUrl,
22
22
  twitterCard: "summary_large_image",
23
23
  });
@@ -35,6 +35,15 @@ useSchemaJsonLd(() => [
35
35
  url: siteUrl,
36
36
  inLanguage: locale.value,
37
37
  },
38
+ {
39
+ "@type": "SoftwareApplication",
40
+ name: getLocalizedSiteText(docsConfig.site.name, locale.value),
41
+ description: getLocalizedSiteText(docsConfig.site.description, locale.value),
42
+ url: siteUrl,
43
+ applicationCategory: "DeveloperApplication",
44
+ operatingSystem: "Web",
45
+ ...(docsConfig.social?.github ? { sameAs: [docsConfig.social.github] } : {}),
46
+ },
38
47
  ]);
39
48
 
40
49
  useHead(() => ({
@@ -42,6 +51,21 @@ useHead(() => ({
42
51
  lang: locale.value,
43
52
  },
44
53
  link: [
54
+ {
55
+ key: "favicon-svg",
56
+ rel: "icon",
57
+ type: "image/svg+xml",
58
+ href: docsConfig.site.icon,
59
+ },
60
+ {
61
+ key: "favicon-png",
62
+ rel: "icon",
63
+ type: "image/png",
64
+ sizes: "96x96",
65
+ href: "/favicon-96x96.png",
66
+ },
67
+ { key: "favicon-ico", rel: "icon", sizes: "any", href: "/favicon.ico" },
68
+ { key: "apple-touch-icon", rel: "apple-touch-icon", href: "/apple-touch-icon.png" },
45
69
  { key: "canonical", rel: "canonical", href: canonicalUrl.value },
46
70
  ...locales.value.map((entry) => {
47
71
  const code = typeof entry === "string" ? entry : entry.code;