@publish.os/nextjs 0.0.1-alpha.5 → 0.0.1-alpha.7

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 (400) hide show
  1. package/README.md +3 -5
  2. package/compiler-assets/nextjs/defaults/app/globals.css +6 -0
  3. package/compiler-assets/nextjs/defaults/group/layout.tsx +23 -0
  4. package/compiler-assets/nextjs/defaults/group/leaf.tsx +48 -0
  5. package/compiler-assets/nextjs/defaults/group/page.tsx +50 -0
  6. package/compiler-assets/nextjs/defaults/project/next.config.mjs +45 -0
  7. package/compiler-assets/nextjs/defaults/project/postcss.config.mjs +5 -0
  8. package/compiler-assets/nextjs/defaults/project/tsconfig.json.template +41 -0
  9. package/compiler-assets/nextjs/defaults/root/css/animation.css +90 -0
  10. package/compiler-assets/nextjs/defaults/root/css/components/dialog.css +21 -0
  11. package/compiler-assets/nextjs/defaults/root/css/components/drawer.css +21 -0
  12. package/compiler-assets/nextjs/defaults/root/css/components/menu.css +23 -0
  13. package/compiler-assets/nextjs/defaults/root/css/components/navigation-menu.css +25 -0
  14. package/compiler-assets/nextjs/defaults/root/css/components/popover.css +17 -0
  15. package/compiler-assets/nextjs/defaults/root/css/components/select.css +23 -0
  16. package/compiler-assets/nextjs/defaults/root/css/components/toast.css +19 -0
  17. package/compiler-assets/nextjs/defaults/root/css/components/tooltip.css +15 -0
  18. package/compiler-assets/nextjs/defaults/root/css/layout.css +22 -0
  19. package/compiler-assets/nextjs/defaults/root/css/media.css +81 -0
  20. package/compiler-assets/nextjs/defaults/root/css/radius.css +49 -0
  21. package/compiler-assets/nextjs/defaults/root/css/scrollbar.css +43 -0
  22. package/compiler-assets/nextjs/defaults/root/css/shadow.css +145 -0
  23. package/compiler-assets/nextjs/defaults/root/css/typography.css +607 -0
  24. package/compiler-assets/nextjs/defaults/root/css/zindex.css +39 -0
  25. package/compiler-assets/nextjs/defaults/root/globals.css +191 -0
  26. package/compiler-assets/nextjs/defaults/root/layout.tsx +19 -0
  27. package/compiler-assets/nextjs/defaults/root/page.tsx +61 -0
  28. package/compiler-assets/nextjs/defaults/root/theme.css +50 -0
  29. package/compiler-assets/nextjs/defaults/source/_internal/logger.ts +21 -0
  30. package/compiler-assets/nextjs/shims/generated-group-layout.tsx +19 -0
  31. package/compiler-assets/nextjs/shims/generated-group-page.tsx +18 -0
  32. package/compiler-assets/nextjs/shims/generated-leaf-page.tsx +21 -0
  33. package/compiler-assets/nextjs/shims/global-layout.tsx +134 -0
  34. package/compiler-assets/nextjs/shims/markdown-route.ts +29 -0
  35. package/compiler-assets/nextjs/shims/og-image-route.ts +18 -0
  36. package/compiler-assets/nextjs/shims/powered-by-footer.tsx +40 -0
  37. package/compiler-assets/nextjs/shims/providers.tsx +13 -0
  38. package/compiler-assets/nextjs/shims/proxy.ts +317 -0
  39. package/compiler-assets/nextjs/shims/publish-os-theme-provider.tsx +77 -0
  40. package/compiler-assets/nextjs/shims/root-page.tsx +13 -0
  41. package/compiler-assets/nextjs/shims/theme-defaults.css +177 -0
  42. package/dist/{kernel/components/ui/button.d.cts → button-CFdx-ohV.d.ts} +1 -3
  43. package/dist/cache/tags.js +6 -14
  44. package/dist/compiler.d.ts +100 -0
  45. package/dist/compiler.js +13379 -0
  46. package/dist/config/createNextConfig.d.ts +2 -1
  47. package/dist/config/createNextConfig.js +16 -12
  48. package/dist/icons.d.ts +1 -0
  49. package/dist/icons.js +2 -0
  50. package/dist/index.d.ts +303 -15
  51. package/dist/index.js +30 -1196
  52. package/dist/kernel/components/blocks/AgentActions.d.ts +9 -3
  53. package/dist/kernel/components/blocks/AgentActions.js +114 -200
  54. package/dist/kernel/components/blocks/animated-icon-swap.js +4 -25
  55. package/dist/kernel/components/blocks/color-palette.js +107 -157
  56. package/dist/kernel/components/blocks/design-system-preview.d.ts +38 -6
  57. package/dist/kernel/components/blocks/design-system-preview.js +44 -52
  58. package/dist/kernel/components/blocks/link-playground.js +23 -71
  59. package/dist/kernel/components/blocks/logo-block.js +19 -48
  60. package/dist/kernel/components/blocks/nav-breadcrumb.d.ts +1 -1
  61. package/dist/kernel/components/blocks/nav-breadcrumb.js +28 -52
  62. package/dist/kernel/components/blocks/navbar.d.ts +1 -1
  63. package/dist/kernel/components/blocks/navbar.js +14 -41
  64. package/dist/kernel/components/blocks/navigation-progress-playground.js +56 -149
  65. package/dist/kernel/components/blocks/navigation-progress.js +53 -157
  66. package/dist/kernel/components/blocks/next-prev.d.ts +1 -1
  67. package/dist/kernel/components/blocks/next-prev.js +16 -42
  68. package/dist/kernel/components/blocks/page-list.d.ts +1 -1
  69. package/dist/kernel/components/blocks/page-list.js +11 -16
  70. package/dist/kernel/components/blocks/search.d.ts +13 -2
  71. package/dist/kernel/components/blocks/search.js +116 -247
  72. package/dist/kernel/components/blocks/sidebar-node.d.ts +2 -2
  73. package/dist/kernel/components/blocks/sidebar-node.js +56 -95
  74. package/dist/kernel/components/blocks/sidebar.d.ts +5 -23
  75. package/dist/kernel/components/blocks/sidebar.js +35 -103
  76. package/dist/kernel/components/blocks/theme-toggle.d.ts +7 -3
  77. package/dist/kernel/components/blocks/theme-toggle.js +2 -2
  78. package/dist/kernel/components/blocks/toc.js +42 -178
  79. package/dist/kernel/components/mdx/components/blockquote.js +3 -24
  80. package/dist/kernel/components/mdx/components/callout.d.ts +1 -1
  81. package/dist/kernel/components/mdx/components/callout.js +15 -47
  82. package/dist/kernel/components/mdx/components/code-block.js +2 -2
  83. package/dist/kernel/components/mdx/components/figure-caption.js +6 -24
  84. package/dist/kernel/components/mdx/components/figure.js +9 -36
  85. package/dist/kernel/components/mdx/components/footnotes.js +3 -24
  86. package/dist/kernel/components/mdx/components/heading-copy-link.js +13 -37
  87. package/dist/kernel/components/mdx/components/heading.d.ts +8 -3
  88. package/dist/kernel/components/mdx/components/heading.js +32 -116
  89. package/dist/kernel/components/mdx/components/hr.d.ts +5 -3
  90. package/dist/kernel/components/mdx/components/hr.js +2 -2
  91. package/dist/kernel/components/mdx/components/image-zoom.js +2 -3
  92. package/dist/kernel/components/mdx/components/image.js +23 -63
  93. package/dist/kernel/components/mdx/components/inline-code.js +3 -24
  94. package/dist/kernel/components/mdx/components/kbd.d.ts +9 -4
  95. package/dist/kernel/components/mdx/components/kbd.js +2 -2
  96. package/dist/kernel/components/mdx/components/link.d.ts +1 -2
  97. package/dist/kernel/components/mdx/components/link.js +2 -2
  98. package/dist/kernel/components/mdx/components/paragraph.js +13 -41
  99. package/dist/kernel/components/mdx/components/pre.js +3 -24
  100. package/dist/kernel/components/mdx/components/strikethrough.js +6 -24
  101. package/dist/kernel/components/mdx/components/table.js +2 -2
  102. package/dist/kernel/components/mdx/components/task-list.js +6 -28
  103. package/dist/kernel/components/mdx/components/video-player.js +53 -88
  104. package/dist/kernel/components/mdx/components/video.js +27 -75
  105. package/dist/kernel/components/mdx/error-boundary.d.ts +1 -1
  106. package/dist/kernel/components/mdx/error-boundary.js +12 -15
  107. package/dist/kernel/components/mdx/error-fallback.js +4 -4
  108. package/dist/kernel/components/mdx/mdx.d.ts +68 -11
  109. package/dist/kernel/components/mdx/mdx.js +29 -29
  110. package/dist/kernel/components/mdx/rehype-heading-ids.js +11 -67
  111. package/dist/kernel/components/mdx/types.d.ts +1 -1
  112. package/dist/kernel/components/ui/accordion.js +3 -26
  113. package/dist/kernel/components/ui/breadcrumb-trail.d.ts +26 -8
  114. package/dist/kernel/components/ui/breadcrumb-trail.js +32 -79
  115. package/dist/kernel/components/ui/breadcrumb.d.ts +2 -6
  116. package/dist/kernel/components/ui/breadcrumb.js +21 -70
  117. package/dist/kernel/components/ui/button-group.d.ts +4 -3
  118. package/dist/kernel/components/ui/button-group.js +7 -30
  119. package/dist/kernel/components/ui/button.js +13 -36
  120. package/dist/kernel/components/ui/card.d.ts +2 -2
  121. package/dist/kernel/components/ui/card.js +2 -23
  122. package/dist/kernel/components/ui/dialog.d.ts +9 -9
  123. package/dist/kernel/components/ui/dialog.js +15 -33
  124. package/dist/kernel/components/ui/drawer.d.ts +10 -10
  125. package/dist/kernel/components/ui/drawer.js +15 -33
  126. package/dist/kernel/components/ui/input.js +6 -30
  127. package/dist/kernel/components/ui/kbd.js +10 -31
  128. package/dist/kernel/components/ui/link.d.ts +1 -1
  129. package/dist/kernel/components/ui/link.js +53 -104
  130. package/dist/kernel/components/ui/menu.d.ts +21 -21
  131. package/dist/kernel/components/ui/menu.js +14 -36
  132. package/dist/kernel/components/ui/meta-key.d.ts +9 -4
  133. package/dist/kernel/components/ui/meta-key.js +2 -2
  134. package/dist/kernel/components/ui/navigation-menu.d.ts +14 -14
  135. package/dist/kernel/components/ui/navigation-menu.js +9 -30
  136. package/dist/kernel/components/ui/popover.d.ts +10 -10
  137. package/dist/kernel/components/ui/popover.js +13 -34
  138. package/dist/kernel/components/ui/progress.js +2 -25
  139. package/dist/kernel/components/ui/scroll-area.js +39 -118
  140. package/dist/kernel/components/ui/select.d.ts +15 -15
  141. package/dist/kernel/components/ui/select.js +19 -35
  142. package/dist/kernel/components/ui/separator.js +2 -25
  143. package/dist/kernel/components/ui/table.js +2 -23
  144. package/dist/kernel/components/ui/tabs.js +39 -99
  145. package/dist/kernel/components/ui/tag.d.ts +2 -2
  146. package/dist/kernel/components/ui/tag.js +4 -25
  147. package/dist/kernel/components/ui/text.d.ts +2 -2
  148. package/dist/kernel/components/ui/text.js +112 -131
  149. package/dist/kernel/components/ui/theme-toggle.d.ts +18 -4
  150. package/dist/kernel/components/ui/theme-toggle.js +18 -44
  151. package/dist/kernel/components/ui/toast.d.ts +10 -10
  152. package/dist/kernel/components/ui/toast.js +13 -35
  153. package/dist/kernel/components/ui/tooltip.d.ts +8 -8
  154. package/dist/kernel/components/ui/tooltip.js +9 -30
  155. package/dist/kernel/defaults.registry.d.ts +61 -70
  156. package/dist/kernel/defaults.registry.js +61 -69
  157. package/dist/kernel/framework-icons.d.ts +1 -0
  158. package/dist/kernel/framework-icons.js +39 -0
  159. package/dist/kernel/routes/agent/markdown.js +36 -65
  160. package/dist/kernel/routes/layouts/group.d.ts +1 -1
  161. package/dist/kernel/routes/layouts/group.js +20 -109
  162. package/dist/kernel/routes/metadata/feed.d.ts +1 -2
  163. package/dist/kernel/routes/metadata/feed.js +46 -127
  164. package/dist/kernel/routes/metadata/llms.d.ts +1 -2
  165. package/dist/kernel/routes/metadata/llms.js +42 -120
  166. package/dist/kernel/routes/metadata/og-image.d.ts +11 -1
  167. package/dist/kernel/routes/metadata/og-image.js +264 -198
  168. package/dist/kernel/routes/metadata/robots.d.ts +1 -2
  169. package/dist/kernel/routes/metadata/robots.js +21 -90
  170. package/dist/kernel/routes/metadata/sitemap.d.ts +1 -2
  171. package/dist/kernel/routes/metadata/sitemap.js +36 -102
  172. package/dist/kernel/routes/pages/group.d.ts +1 -1
  173. package/dist/kernel/routes/pages/group.js +42 -137
  174. package/dist/kernel/routes/pages/leaf.d.ts +1 -1
  175. package/dist/kernel/routes/pages/leaf.js +74 -213
  176. package/dist/kernel/routes/pages/root.d.ts +1 -1
  177. package/dist/kernel/routes/pages/root.js +37 -108
  178. package/dist/keyboard-shortcuts.js +69 -141
  179. package/dist/{kernel/components/ui/link.d.cts → link-CYaCRDb6.d.ts} +9 -5
  180. package/dist/resolvers/manifest-resolver.d.ts +3 -3
  181. package/dist/resolvers/manifest-resolver.js +15 -21
  182. package/dist/{kernel/routes/metadata/og-image.d.cts → route-metadata-og-image-BeKKFHg7.d.ts} +12 -16
  183. package/dist/search.d.ts +81 -4
  184. package/dist/search.js +124 -195
  185. package/dist/{kernel/components/blocks/sidebar.d.cts → sidebar-types-Bgchdfd6.d.ts} +2 -10
  186. package/dist/theme-scope.d.ts +15 -0
  187. package/dist/theme-scope.js +23 -0
  188. package/dist/types-B_b3C0U6.d.ts +63 -0
  189. package/dist/types-CIwwieNw.d.ts +127 -0
  190. package/dist/types-DHBm7-j6.d.ts +57 -0
  191. package/dist/types-sM2g9nW0.d.ts +12 -0
  192. package/dist/types.d.ts +0 -1
  193. package/dist/types.js +1 -1
  194. package/dist/utils/cn.d.ts +5 -9
  195. package/dist/utils/cn.js +13 -7
  196. package/dist/utils/heading-ids.js +20 -47
  197. package/dist/utils/pretty-date.js +7 -13
  198. package/init/seed/minimal/publish.os/assets/logo/publish-dev-logo.dark.png +0 -0
  199. package/init/seed/minimal/publish.os/assets/logo/publish-dev-logo.png +0 -0
  200. package/init/seed/minimal/publish.os/docs/content/get-started.mdx +54 -0
  201. package/init/seed/minimal/publish.os/docs/content/groups.mdx +31 -0
  202. package/init/seed/minimal/publish.os/docs/content/theme.mdx +64 -0
  203. package/init/seed/minimal/publish.os/publish.os.config.json +21 -0
  204. package/init/seed/minimal/publish.os/theme.css +47 -0
  205. package/init/seed/minimal/seed.json +13 -0
  206. package/package.json +470 -40
  207. package/release/{package.json → app/lucide/package.json} +14 -7
  208. package/release/app/lucide/pnpm-lock.yaml.template +2905 -0
  209. package/release/app/lucide/pnpm-workspace.yaml +11 -0
  210. package/release/app/phosphor/package.json +30 -0
  211. package/release/app/phosphor/pnpm-lock.yaml.template +2908 -0
  212. package/release/app/phosphor/pnpm-workspace.yaml +11 -0
  213. package/release/app/tabler/package.json +30 -0
  214. package/release/app/tabler/pnpm-lock.yaml.template +2911 -0
  215. package/release/app/tabler/pnpm-workspace.yaml +11 -0
  216. package/release/compiler/package.json +20 -0
  217. package/release/compiler/pnpm-lock.yaml.template +2432 -0
  218. package/release/compiler/pnpm-workspace.yaml +11 -0
  219. package/release/release.json +31 -7
  220. package/dist/cache/tags.cjs +0 -79
  221. package/dist/cache/tags.d.cts +0 -13
  222. package/dist/config/createNextConfig.cjs +0 -52
  223. package/dist/config/createNextConfig.d.cts +0 -8
  224. package/dist/config.cjs +0 -78
  225. package/dist/config.d.cts +0 -101
  226. package/dist/config.d.ts +0 -101
  227. package/dist/config.js +0 -48
  228. package/dist/index.cjs +0 -1266
  229. package/dist/index.d.cts +0 -18
  230. package/dist/kernel/components/blocks/AgentActions.cjs +0 -425
  231. package/dist/kernel/components/blocks/AgentActions.d.cts +0 -52
  232. package/dist/kernel/components/blocks/animated-icon-swap.cjs +0 -101
  233. package/dist/kernel/components/blocks/animated-icon-swap.d.cts +0 -16
  234. package/dist/kernel/components/blocks/color-palette.cjs +0 -413
  235. package/dist/kernel/components/blocks/color-palette.d.cts +0 -7
  236. package/dist/kernel/components/blocks/design-system-preview.cjs +0 -593
  237. package/dist/kernel/components/blocks/design-system-preview.d.cts +0 -29
  238. package/dist/kernel/components/blocks/link-playground.cjs +0 -816
  239. package/dist/kernel/components/blocks/link-playground.d.cts +0 -5
  240. package/dist/kernel/components/blocks/logo-block.cjs +0 -156
  241. package/dist/kernel/components/blocks/logo-block.d.cts +0 -21
  242. package/dist/kernel/components/blocks/nav-breadcrumb.cjs +0 -122
  243. package/dist/kernel/components/blocks/nav-breadcrumb.d.cts +0 -11
  244. package/dist/kernel/components/blocks/navbar.cjs +0 -154
  245. package/dist/kernel/components/blocks/navbar.d.cts +0 -16
  246. package/dist/kernel/components/blocks/navigation-progress-playground.cjs +0 -735
  247. package/dist/kernel/components/blocks/navigation-progress-playground.d.cts +0 -5
  248. package/dist/kernel/components/blocks/navigation-progress.cjs +0 -270
  249. package/dist/kernel/components/blocks/navigation-progress.d.cts +0 -16
  250. package/dist/kernel/components/blocks/next-prev.cjs +0 -142
  251. package/dist/kernel/components/blocks/next-prev.d.cts +0 -11
  252. package/dist/kernel/components/blocks/page-list.cjs +0 -59
  253. package/dist/kernel/components/blocks/page-list.d.cts +0 -11
  254. package/dist/kernel/components/blocks/search.cjs +0 -717
  255. package/dist/kernel/components/blocks/search.d.cts +0 -77
  256. package/dist/kernel/components/blocks/sidebar-node.cjs +0 -309
  257. package/dist/kernel/components/blocks/sidebar-node.d.cts +0 -8
  258. package/dist/kernel/components/blocks/sidebar.cjs +0 -317
  259. package/dist/kernel/components/blocks/theme-toggle.cjs +0 -31
  260. package/dist/kernel/components/blocks/theme-toggle.d.cts +0 -6
  261. package/dist/kernel/components/blocks/toc.cjs +0 -356
  262. package/dist/kernel/components/blocks/toc.d.cts +0 -10
  263. package/dist/kernel/components/mdx/components/blockquote.cjs +0 -66
  264. package/dist/kernel/components/mdx/components/blockquote.d.cts +0 -6
  265. package/dist/kernel/components/mdx/components/callout.cjs +0 -137
  266. package/dist/kernel/components/mdx/components/callout.d.cts +0 -18
  267. package/dist/kernel/components/mdx/components/code-block.cjs +0 -39
  268. package/dist/kernel/components/mdx/components/code-block.d.cts +0 -9
  269. package/dist/kernel/components/mdx/components/figure-caption.cjs +0 -63
  270. package/dist/kernel/components/mdx/components/figure-caption.d.cts +0 -6
  271. package/dist/kernel/components/mdx/components/figure.cjs +0 -78
  272. package/dist/kernel/components/mdx/components/figure.d.cts +0 -10
  273. package/dist/kernel/components/mdx/components/footnotes.cjs +0 -66
  274. package/dist/kernel/components/mdx/components/footnotes.d.cts +0 -6
  275. package/dist/kernel/components/mdx/components/heading-copy-link.cjs +0 -108
  276. package/dist/kernel/components/mdx/components/heading-copy-link.d.cts +0 -23
  277. package/dist/kernel/components/mdx/components/heading.cjs +0 -166
  278. package/dist/kernel/components/mdx/components/heading.d.cts +0 -8
  279. package/dist/kernel/components/mdx/components/hr.cjs +0 -34
  280. package/dist/kernel/components/mdx/components/hr.d.cts +0 -9
  281. package/dist/kernel/components/mdx/components/image-zoom.cjs +0 -49
  282. package/dist/kernel/components/mdx/components/image-zoom.d.cts +0 -10
  283. package/dist/kernel/components/mdx/components/image.cjs +0 -192
  284. package/dist/kernel/components/mdx/components/image.d.cts +0 -21
  285. package/dist/kernel/components/mdx/components/inline-code.cjs +0 -66
  286. package/dist/kernel/components/mdx/components/inline-code.d.cts +0 -6
  287. package/dist/kernel/components/mdx/components/kbd.cjs +0 -34
  288. package/dist/kernel/components/mdx/components/kbd.d.cts +0 -10
  289. package/dist/kernel/components/mdx/components/link.cjs +0 -49
  290. package/dist/kernel/components/mdx/components/link.d.cts +0 -11
  291. package/dist/kernel/components/mdx/components/paragraph.cjs +0 -87
  292. package/dist/kernel/components/mdx/components/paragraph.d.cts +0 -5
  293. package/dist/kernel/components/mdx/components/pre.cjs +0 -66
  294. package/dist/kernel/components/mdx/components/pre.d.cts +0 -6
  295. package/dist/kernel/components/mdx/components/strikethrough.cjs +0 -63
  296. package/dist/kernel/components/mdx/components/strikethrough.d.cts +0 -6
  297. package/dist/kernel/components/mdx/components/table.cjs +0 -59
  298. package/dist/kernel/components/mdx/components/table.d.cts +0 -10
  299. package/dist/kernel/components/mdx/components/task-list.cjs +0 -88
  300. package/dist/kernel/components/mdx/components/task-list.d.cts +0 -8
  301. package/dist/kernel/components/mdx/components/video-player.cjs +0 -173
  302. package/dist/kernel/components/mdx/components/video-player.d.cts +0 -18
  303. package/dist/kernel/components/mdx/components/video.cjs +0 -185
  304. package/dist/kernel/components/mdx/components/video.d.cts +0 -15
  305. package/dist/kernel/components/mdx/error-boundary.cjs +0 -62
  306. package/dist/kernel/components/mdx/error-boundary.d.cts +0 -8
  307. package/dist/kernel/components/mdx/error-fallback.cjs +0 -58
  308. package/dist/kernel/components/mdx/error-fallback.d.cts +0 -9
  309. package/dist/kernel/components/mdx/mdx.cjs +0 -141
  310. package/dist/kernel/components/mdx/mdx.d.cts +0 -22
  311. package/dist/kernel/components/mdx/rehype-heading-ids.cjs +0 -113
  312. package/dist/kernel/components/mdx/rehype-heading-ids.d.cts +0 -10
  313. package/dist/kernel/components/mdx/types.cjs +0 -18
  314. package/dist/kernel/components/mdx/types.d.cts +0 -18
  315. package/dist/kernel/components/ui/accordion.cjs +0 -104
  316. package/dist/kernel/components/ui/accordion.d.cts +0 -16
  317. package/dist/kernel/components/ui/breadcrumb-trail.cjs +0 -238
  318. package/dist/kernel/components/ui/breadcrumb-trail.d.cts +0 -13
  319. package/dist/kernel/components/ui/breadcrumb.cjs +0 -399
  320. package/dist/kernel/components/ui/breadcrumb.d.cts +0 -52
  321. package/dist/kernel/components/ui/button-group.cjs +0 -143
  322. package/dist/kernel/components/ui/button-group.d.cts +0 -19
  323. package/dist/kernel/components/ui/button.cjs +0 -139
  324. package/dist/kernel/components/ui/card.cjs +0 -133
  325. package/dist/kernel/components/ui/card.d.cts +0 -17
  326. package/dist/kernel/components/ui/dialog.cjs +0 -149
  327. package/dist/kernel/components/ui/dialog.d.cts +0 -22
  328. package/dist/kernel/components/ui/drawer.cjs +0 -163
  329. package/dist/kernel/components/ui/drawer.d.cts +0 -24
  330. package/dist/kernel/components/ui/input.cjs +0 -96
  331. package/dist/kernel/components/ui/input.d.cts +0 -18
  332. package/dist/kernel/components/ui/kbd.cjs +0 -105
  333. package/dist/kernel/components/ui/kbd.d.cts +0 -13
  334. package/dist/kernel/components/ui/link.cjs +0 -253
  335. package/dist/kernel/components/ui/menu.cjs +0 -301
  336. package/dist/kernel/components/ui/menu.d.cts +0 -70
  337. package/dist/kernel/components/ui/meta-key.cjs +0 -34
  338. package/dist/kernel/components/ui/meta-key.d.cts +0 -12
  339. package/dist/kernel/components/ui/navigation-menu.cjs +0 -253
  340. package/dist/kernel/components/ui/navigation-menu.d.cts +0 -47
  341. package/dist/kernel/components/ui/popover.cjs +0 -168
  342. package/dist/kernel/components/ui/popover.d.cts +0 -24
  343. package/dist/kernel/components/ui/progress.cjs +0 -112
  344. package/dist/kernel/components/ui/progress.d.cts +0 -16
  345. package/dist/kernel/components/ui/scroll-area.cjs +0 -413
  346. package/dist/kernel/components/ui/scroll-area.d.cts +0 -58
  347. package/dist/kernel/components/ui/select.cjs +0 -244
  348. package/dist/kernel/components/ui/select.d.cts +0 -40
  349. package/dist/kernel/components/ui/separator.cjs +0 -73
  350. package/dist/kernel/components/ui/separator.d.cts +0 -8
  351. package/dist/kernel/components/ui/table.cjs +0 -131
  352. package/dist/kernel/components/ui/table.d.cts +0 -11
  353. package/dist/kernel/components/ui/tabs.cjs +0 -450
  354. package/dist/kernel/components/ui/tabs.d.cts +0 -82
  355. package/dist/kernel/components/ui/tag.cjs +0 -104
  356. package/dist/kernel/components/ui/tag.d.cts +0 -14
  357. package/dist/kernel/components/ui/text.cjs +0 -184
  358. package/dist/kernel/components/ui/text.d.cts +0 -17
  359. package/dist/kernel/components/ui/theme-toggle.cjs +0 -108
  360. package/dist/kernel/components/ui/theme-toggle.d.cts +0 -10
  361. package/dist/kernel/components/ui/toast.cjs +0 -154
  362. package/dist/kernel/components/ui/toast.d.cts +0 -26
  363. package/dist/kernel/components/ui/tooltip.cjs +0 -127
  364. package/dist/kernel/components/ui/tooltip.d.cts +0 -20
  365. package/dist/kernel/defaults.registry.cjs +0 -541
  366. package/dist/kernel/defaults.registry.d.cts +0 -469
  367. package/dist/kernel/routes/agent/markdown.cjs +0 -202
  368. package/dist/kernel/routes/agent/markdown.d.cts +0 -58
  369. package/dist/kernel/routes/layouts/group.cjs +0 -181
  370. package/dist/kernel/routes/layouts/group.d.cts +0 -20
  371. package/dist/kernel/routes/metadata/feed.cjs +0 -293
  372. package/dist/kernel/routes/metadata/feed.d.cts +0 -20
  373. package/dist/kernel/routes/metadata/llms.cjs +0 -239
  374. package/dist/kernel/routes/metadata/llms.d.cts +0 -26
  375. package/dist/kernel/routes/metadata/og-image.cjs +0 -630
  376. package/dist/kernel/routes/metadata/robots.cjs +0 -148
  377. package/dist/kernel/routes/metadata/robots.d.cts +0 -6
  378. package/dist/kernel/routes/metadata/sitemap.cjs +0 -192
  379. package/dist/kernel/routes/metadata/sitemap.d.cts +0 -8
  380. package/dist/kernel/routes/pages/group.cjs +0 -263
  381. package/dist/kernel/routes/pages/group.d.cts +0 -17
  382. package/dist/kernel/routes/pages/leaf.cjs +0 -421
  383. package/dist/kernel/routes/pages/leaf.d.cts +0 -36
  384. package/dist/kernel/routes/pages/root.cjs +0 -229
  385. package/dist/kernel/routes/pages/root.d.cts +0 -16
  386. package/dist/keyboard-shortcuts.cjs +0 -345
  387. package/dist/keyboard-shortcuts.d.cts +0 -34
  388. package/dist/resolvers/manifest-resolver.cjs +0 -111
  389. package/dist/resolvers/manifest-resolver.d.cts +0 -13
  390. package/dist/search.cjs +0 -411
  391. package/dist/search.d.cts +0 -20
  392. package/dist/types.cjs +0 -30
  393. package/dist/types.d.cts +0 -269
  394. package/dist/utils/cn.cjs +0 -49
  395. package/dist/utils/cn.d.cts +0 -15
  396. package/dist/utils/heading-ids.cjs +0 -119
  397. package/dist/utils/heading-ids.d.cts +0 -15
  398. package/dist/utils/pretty-date.cjs +0 -55
  399. package/dist/utils/pretty-date.d.cts +0 -6
  400. package/release/pnpm-lock.yaml +0 -1215
@@ -0,0 +1,191 @@
1
+ @theme inline {
2
+ --font-main: var(--font-main);
3
+ --font-sans: var(--font-main);
4
+ --font-mono: var(--font-mono);
5
+
6
+ --color-surface-page: var(--surface-page);
7
+ --color-surface-1: var(--surface-1);
8
+ --color-surface-2: var(--surface-2);
9
+ --color-surface-3: var(--surface-3);
10
+ --color-surface-4: var(--surface-4);
11
+ --color-surface-hover: var(--surface-hover);
12
+ --color-surface-active: var(--surface-active);
13
+ --color-foreground-1: var(--foreground-1);
14
+ --color-foreground-2: var(--foreground-2);
15
+ --color-foreground-3: var(--foreground-3);
16
+ --color-foreground-4: var(--foreground-4);
17
+ --color-stroke-1: var(--stroke-1);
18
+ --color-stroke-2: var(--stroke-2);
19
+ --color-stroke-3: var(--stroke-3);
20
+ --color-stroke-4: var(--stroke-4);
21
+ --color-backdrop: var(--backdrop);
22
+ --color-focus-stroke: var(--focus-stroke);
23
+
24
+ --color-accent-1: var(--accent-1);
25
+ --color-accent-1-foreground: var(--accent-1-foreground);
26
+ --color-accent-1-stroke: var(--accent-1-stroke);
27
+ --color-accent-1-hover: var(--accent-1-hover);
28
+ --color-accent-1-active: var(--accent-1-active);
29
+ --color-accent-2: var(--accent-2);
30
+ --color-accent-2-foreground: var(--accent-2-foreground);
31
+ --color-accent-2-stroke: var(--accent-2-stroke);
32
+ --color-accent-2-hover: var(--accent-2-hover);
33
+ --color-accent-2-active: var(--accent-2-active);
34
+ --color-accent-3: var(--accent-3);
35
+ --color-accent-3-foreground: var(--accent-3-foreground);
36
+ --color-accent-3-stroke: var(--accent-3-stroke);
37
+ --color-accent-3-hover: var(--accent-3-hover);
38
+ --color-accent-3-active: var(--accent-3-active);
39
+ --color-accent-4: var(--accent-4);
40
+ --color-accent-4-foreground: var(--accent-4-foreground);
41
+ --color-accent-4-stroke: var(--accent-4-stroke);
42
+ --color-accent-4-hover: var(--accent-4-hover);
43
+ --color-accent-4-active: var(--accent-4-active);
44
+
45
+ --color-selection-surface: var(--selection-surface);
46
+ --color-selection-foreground: var(--selection-foreground);
47
+ --color-progress-track-surface: var(--progress-track-surface);
48
+ --color-progress-indicator-surface: var(--progress-indicator-surface);
49
+ --color-media-backdrop: var(--media-backdrop);
50
+ --color-media-surface: var(--media-surface);
51
+ --color-media-preview-backdrop: var(--media-preview-backdrop);
52
+ --color-media-preview-backdrop-hover: var(--media-preview-backdrop-hover);
53
+ --color-media-control-surface: var(--media-control-surface);
54
+ --color-media-control-foreground: var(--media-control-foreground);
55
+ --color-media-control-stroke: var(--media-control-stroke);
56
+
57
+ --color-success-100: var(--success-100);
58
+ --color-success-200: var(--success-200);
59
+ --color-success-300: var(--success-300);
60
+ --color-success-400: var(--success-400);
61
+ --color-success-500: var(--success-500);
62
+ --color-success-600: var(--success-600);
63
+ --color-success-700: var(--success-700);
64
+ --color-success-800: var(--success-800);
65
+ --color-success-900: var(--success-900);
66
+ --color-success-1000: var(--success-1000);
67
+ --color-success-1100: var(--success-1100);
68
+ --color-success-1200: var(--success-1200);
69
+ --color-warning-100: var(--warning-100);
70
+ --color-warning-200: var(--warning-200);
71
+ --color-warning-300: var(--warning-300);
72
+ --color-warning-400: var(--warning-400);
73
+ --color-warning-500: var(--warning-500);
74
+ --color-warning-600: var(--warning-600);
75
+ --color-warning-700: var(--warning-700);
76
+ --color-warning-800: var(--warning-800);
77
+ --color-warning-900: var(--warning-900);
78
+ --color-warning-1000: var(--warning-1000);
79
+ --color-warning-1100: var(--warning-1100);
80
+ --color-warning-1200: var(--warning-1200);
81
+ --color-danger-100: var(--danger-100);
82
+ --color-danger-200: var(--danger-200);
83
+ --color-danger-300: var(--danger-300);
84
+ --color-danger-400: var(--danger-400);
85
+ --color-danger-500: var(--danger-500);
86
+ --color-danger-600: var(--danger-600);
87
+ --color-danger-700: var(--danger-700);
88
+ --color-danger-800: var(--danger-800);
89
+ --color-danger-900: var(--danger-900);
90
+ --color-danger-1000: var(--danger-1000);
91
+ --color-danger-1100: var(--danger-1100);
92
+ --color-danger-1200: var(--danger-1200);
93
+ --color-info-100: var(--info-100);
94
+ --color-info-200: var(--info-200);
95
+ --color-info-300: var(--info-300);
96
+ --color-info-400: var(--info-400);
97
+ --color-info-500: var(--info-500);
98
+ --color-info-600: var(--info-600);
99
+ --color-info-700: var(--info-700);
100
+ --color-info-800: var(--info-800);
101
+ --color-info-900: var(--info-900);
102
+ --color-info-1000: var(--info-1000);
103
+ --color-info-1100: var(--info-1100);
104
+ --color-info-1200: var(--info-1200);
105
+
106
+ --color-floating-surface-1: var(--floating-surface-1);
107
+ --color-floating-surface-2: var(--floating-surface-2);
108
+ --color-floating-surface-3: var(--floating-surface-3);
109
+ --color-floating-surface-4: var(--floating-surface-4);
110
+ --color-floating-foreground-1: var(--floating-foreground-1);
111
+ --color-floating-foreground-2: var(--floating-foreground-2);
112
+ --color-floating-foreground-3: var(--floating-foreground-3);
113
+ --color-floating-foreground-4: var(--floating-foreground-4);
114
+ --color-floating-stroke-1: var(--floating-stroke-1);
115
+ --color-floating-stroke-2: var(--floating-stroke-2);
116
+ --color-floating-stroke-3: var(--floating-stroke-3);
117
+ --color-floating-stroke-4: var(--floating-stroke-4);
118
+
119
+ --radius-avatar: var(--radius-avatar);
120
+ --radius-button: var(--radius-button);
121
+ --radius-callout: var(--radius-callout);
122
+ --radius-card: var(--radius-card);
123
+ --radius-checkbox: var(--radius-checkbox);
124
+ --radius-codeblock: var(--radius-codeblock);
125
+ --radius-container: var(--radius-container);
126
+ --radius-dialog: var(--radius-dialog);
127
+ --radius-inline-code: var(--radius-inline-code);
128
+ --radius-input: var(--radius-input);
129
+ --radius-kbd: var(--radius-kbd);
130
+ --radius-media: var(--radius-media);
131
+ --radius-menu: var(--radius-menu);
132
+ --radius-panel: var(--radius-panel);
133
+ --radius-popup: var(--radius-popup);
134
+ --radius-radio: var(--radius-radio);
135
+ --radius-scrollarea: var(--radius-scrollarea);
136
+ --radius-scrollbar-thumb: var(--radius-scrollbar-thumb);
137
+ --radius-select: var(--radius-select);
138
+ --radius-spinner: var(--radius-spinner);
139
+ --radius-switch-thumb: var(--radius-switch-thumb);
140
+ --radius-switch-track: var(--radius-switch-track);
141
+ --radius-table: var(--radius-table);
142
+ --radius-tag: var(--radius-tag);
143
+ --radius-tooltip: var(--radius-tooltip);
144
+
145
+ --z-index-content: var(--z-content);
146
+ --z-index-nav: var(--z-nav);
147
+ --z-index-overlay: var(--z-overlay);
148
+ --z-index-modal: var(--z-modal);
149
+ --z-index-search: var(--z-search);
150
+ --z-index-toast: var(--z-toast);
151
+ --z-index-progress: var(--z-progress);
152
+
153
+ --spacing-layout-site-max-width: var(--layout-site-max-width);
154
+ --spacing-layout-sidebar-width: var(--layout-sidebar-width);
155
+ --spacing-layout-content-max-width: var(--layout-content-max-width);
156
+ --spacing-layout-toc-width: var(--layout-toc-width);
157
+ }
158
+
159
+ @layer base {
160
+ *,
161
+ *::before,
162
+ *::after {
163
+ box-sizing: border-box;
164
+ }
165
+
166
+ html {
167
+ min-height: 100%;
168
+ font-family: var(--font-main);
169
+ -webkit-font-smoothing: antialiased;
170
+ }
171
+
172
+ [data-theme-root] {
173
+ font-family: var(--font-main);
174
+ }
175
+
176
+ body {
177
+ min-height: 100%;
178
+ margin: 0;
179
+ background-color: var(--surface-page);
180
+ color: var(--foreground-2);
181
+ }
182
+
183
+ .publish-os-app-root {
184
+ isolation: isolate;
185
+ }
186
+
187
+ ::selection {
188
+ background-color: var(--selection-surface);
189
+ color: var(--selection-foreground);
190
+ }
191
+ }
@@ -0,0 +1,19 @@
1
+ import { Navbar } from "@components/blocks/navbar";
2
+ import type { RootLayoutProps } from "@publish.os/nextjs/types";
3
+ import { faviconsAndLogos } from "@source/.publishos/favicons-and-logos.generated";
4
+ import { log } from "@source/_internal/logger";
5
+
6
+ export default function DefaultRootLayout(props: RootLayoutProps) {
7
+ const { children, site, tree } = props;
8
+ log.debug("[default:root-layout]", {
9
+ site: site.name,
10
+ treeItems: tree.length,
11
+ });
12
+
13
+ return (
14
+ <div className="flex min-h-dvh flex-col bg-surface-2">
15
+ <Navbar logo={faviconsAndLogos.logo} site={site} tree={tree} />
16
+ <main className="flex w-full flex-1 flex-col">{children}</main>
17
+ </div>
18
+ );
19
+ }
@@ -0,0 +1,61 @@
1
+ import { Link } from "@components/ui/link";
2
+ import type {
3
+ LinkNode,
4
+ RootPageProps,
5
+ SectionNode,
6
+ TreeNode,
7
+ } from "@publish.os/nextjs/types";
8
+ import { log } from "@source/_internal/logger";
9
+
10
+ type RootNavNode = LinkNode | (SectionNode & { path: string });
11
+
12
+ function rootNavNodes(nodes: TreeNode[]): RootNavNode[] {
13
+ return nodes.filter((node): node is RootNavNode => {
14
+ if (node.type === "link") return true;
15
+ return node.type === "section" && typeof node.path === "string";
16
+ });
17
+ }
18
+
19
+ export default function HomePage(props: RootPageProps) {
20
+ log.debug("[default:root-page]", props);
21
+ const { site, tree } = props;
22
+ const navNodes = rootNavNodes(tree);
23
+
24
+ return (
25
+ <section className="mx-auto grid min-h-[calc(100vh_-_var(--layout-global-nav-height))] w-full max-w-(--layout-site-max-width) grid-cols-1 border-x border-stroke-3 bg-surface-1 md:grid-cols-[var(--layout-sidebar-width)_minmax(0,1fr)_var(--layout-toc-width)] supports-[height:100dvh]:min-h-[calc(100dvh_-_var(--layout-global-nav-height))] supports-[top:anchor-size(--global-navbar_height)]:min-h-[calc(100vh_-_anchor-size(--global-navbar_height,3.5rem))] supports-[top:anchor-size(--global-navbar_height)]:supports-[height:100dvh]:min-h-[calc(100dvh_-_anchor-size(--global-navbar_height,3.5rem))]">
26
+ <div className="hidden md:block" />
27
+ <main className="flex min-w-0 items-start justify-center px-6 pb-16 pt-[clamp(5rem,18vh,10rem)] text-foreground-1 lg:px-10">
28
+ <div className="w-full max-w-md">
29
+ <p className="mb-6 text-sm font-semibold text-foreground-1">
30
+ {site.name}
31
+ </p>
32
+ <h1 className="max-w-sm text-balance text-xl font-semibold leading-7 tracking-tight text-foreground-1">
33
+ {site.description ??
34
+ "Documentation, guides, and reference content for this site."}
35
+ </h1>
36
+
37
+ {navNodes.length > 0 ? (
38
+ <nav aria-label="Site sections" className="mt-8">
39
+ <ul className="flex flex-col gap-2 text-sm">
40
+ {navNodes.map((node) => (
41
+ <li key={node.id}>
42
+ {node.type === "link" ? (
43
+ <Link href={node.href} rightIcon="->" size="sm">
44
+ {node.title}
45
+ </Link>
46
+ ) : (
47
+ <Link href={node.path} rightIcon="->" size="sm">
48
+ {node.title}
49
+ </Link>
50
+ )}
51
+ </li>
52
+ ))}
53
+ </ul>
54
+ </nav>
55
+ ) : null}
56
+ </div>
57
+ </main>
58
+ <div className="hidden md:block" />
59
+ </section>
60
+ );
61
+ }
@@ -0,0 +1,50 @@
1
+ /* Complete monochrome defaults. Project theme.css loads after this file. */
2
+
3
+ :root {
4
+ --theme-radius: var(--theme-radius-md);
5
+
6
+ --gray-100: #ffffff;
7
+ --gray-200: #fafafa;
8
+ --gray-300: #f5f5f5;
9
+ --gray-400: #eeeeee;
10
+ --gray-500: #e5e5e5;
11
+ --gray-600: #d4d4d4;
12
+ --gray-700: #a3a3a3;
13
+ --gray-800: #737373;
14
+ --gray-900: #525252;
15
+ --gray-1000: #404040;
16
+ --gray-1100: #262626;
17
+ --gray-1200: #000000;
18
+
19
+ --neutral-100: var(--gray-100);
20
+ --neutral-200: var(--gray-200);
21
+ --neutral-300: var(--gray-300);
22
+ --neutral-400: var(--gray-400);
23
+ --neutral-500: var(--gray-500);
24
+ --neutral-600: var(--gray-600);
25
+ --neutral-700: var(--gray-700);
26
+ --neutral-800: var(--gray-800);
27
+ --neutral-900: var(--gray-900);
28
+ --neutral-1000: var(--gray-1000);
29
+ --neutral-1100: var(--gray-1100);
30
+ --neutral-1200: var(--gray-1200);
31
+
32
+ --accent: var(--gray-1200);
33
+ }
34
+
35
+ .dark {
36
+ --gray-100: #000000;
37
+ --gray-200: #0a0a0a;
38
+ --gray-300: #171717;
39
+ --gray-400: #262626;
40
+ --gray-500: #404040;
41
+ --gray-600: #525252;
42
+ --gray-700: #737373;
43
+ --gray-800: #a3a3a3;
44
+ --gray-900: #d4d4d4;
45
+ --gray-1000: #e5e5e5;
46
+ --gray-1100: #f5f5f5;
47
+ --gray-1200: #ffffff;
48
+
49
+ --accent: var(--gray-1200);
50
+ }
@@ -0,0 +1,21 @@
1
+ const isDev = process.env.NODE_ENV !== "production";
2
+ const isDebugEnabled = process.env.NEXT_PRIVATE_DEBUG_CACHE === "1";
3
+
4
+ export const log = {
5
+ debug(...args: unknown[]) {
6
+ // biome-ignore lint/suspicious/noConsole: generated runtime logger intentionally writes render diagnostics.
7
+ if (isDev && isDebugEnabled) console.debug("[publish.os:debug]", ...args);
8
+ },
9
+ info(...args: unknown[]) {
10
+ // biome-ignore lint/suspicious/noConsole: generated runtime logger intentionally writes render diagnostics.
11
+ console.log("[publish.os]", ...args);
12
+ },
13
+ warn(...args: unknown[]) {
14
+ // biome-ignore lint/suspicious/noConsole: generated runtime logger intentionally writes render diagnostics.
15
+ console.warn("[publish.os:warn]", ...args);
16
+ },
17
+ error(...args: unknown[]) {
18
+ // biome-ignore lint/suspicious/noConsole: generated runtime logger intentionally writes render diagnostics.
19
+ console.error("[publish.os:error]", ...args);
20
+ },
21
+ };
@@ -0,0 +1,19 @@
1
+ import manifest from "@manifest";
2
+ import { createGroupLayout } from "@publish.os/nextjs/kernel/routes/layouts/group";
3
+ import type { ReactNode } from "react";
4
+
5
+ __PUBLISHOS_THEME_IMPORTS__;
6
+ __PUBLISHOS_LAYOUT_IMPORTS__;
7
+
8
+ const route = {
9
+ group: __PUBLISHOS_GROUP_KEY__,
10
+ manifest,
11
+ layouts: [__PUBLISHOS_LAYOUTS__],
12
+ } as const;
13
+
14
+ const GroupLayout = createGroupLayout(route);
15
+
16
+ export default function GeneratedGroupLayout(props: { children: ReactNode }) {
17
+ __PUBLISHOS_FONT_PRELOADS__;
18
+ return <GroupLayout {...props} />;
19
+ }
@@ -0,0 +1,18 @@
1
+ import manifest from "@manifest";
2
+ import {
3
+ createGroupMetadata,
4
+ createGroupPage,
5
+ } from "@publish.os/nextjs/kernel/routes/pages/group";
6
+ import { ogManifest } from "@source/.publishos/og-manifest.generated";
7
+ import IndexPage from "@source/__PUBLISHOS_OWNER_KEY__/page";
8
+ import type { Metadata } from "next";
9
+
10
+ const route = {
11
+ group: __PUBLISHOS_GROUP_KEY__,
12
+ manifest,
13
+ ogManifest,
14
+ IndexPage,
15
+ } as const;
16
+
17
+ export default createGroupPage(route);
18
+ export const metadata: Metadata = createGroupMetadata(route);
@@ -0,0 +1,21 @@
1
+ import manifest from "@manifest";
2
+ import {
3
+ createLeafMetadata,
4
+ createLeafPage,
5
+ createLeafStaticParams,
6
+ } from "@publish.os/nextjs/kernel/routes/pages/leaf";
7
+ import { ogManifest } from "@source/.publishos/og-manifest.generated";
8
+ import Leaf from "@source/__PUBLISHOS_OWNER_KEY__/leaf";
9
+ import { PoweredByFooter } from "@source/_internal/powered-by-footer.generated";
10
+
11
+ const route = {
12
+ group: __PUBLISHOS_GROUP_KEY__,
13
+ manifest,
14
+ ogManifest,
15
+ Leaf,
16
+ PoweredByFooter,
17
+ } as const;
18
+
19
+ export default createLeafPage(route);
20
+ export const generateMetadata = createLeafMetadata(route);
21
+ export const generateStaticParams = createLeafStaticParams(route);
@@ -0,0 +1,134 @@
1
+ import manifest from "@manifest";
2
+ import "@source/.fonts.generated.css";
3
+ import { Providers } from "@app/providers";
4
+ import { preloadRootFonts, rootFontClassName } from "@source/.fonts.generated";
5
+ import { faviconsAndLogos } from "@source/.publishos/favicons-and-logos.generated";
6
+ import { ogManifest } from "@source/.publishos/og-manifest.generated";
7
+ import RootLayout from "@source/layout";
8
+ import type { Metadata } from "next";
9
+ import type { ReactNode } from "react";
10
+ import "@app/globals.css";
11
+
12
+ const siteDescription =
13
+ "description" in manifest.site &&
14
+ typeof manifest.site.description === "string"
15
+ ? manifest.site.description
16
+ : undefined;
17
+ const siteUrl =
18
+ "url" in manifest.site && typeof manifest.site.url === "string"
19
+ ? manifest.site.url
20
+ : undefined;
21
+ const isDevelopment = process.env.NODE_ENV === "development";
22
+ const metadataBase = isDevelopment
23
+ ? new URL(`http://localhost:${process.env.PORT ?? "3000"}`)
24
+ : siteUrl
25
+ ? new URL(siteUrl)
26
+ : undefined;
27
+ type GeneratedMetadataIcons = {
28
+ icon?: readonly {
29
+ media?: string;
30
+ sizes?: string;
31
+ type?: string;
32
+ url: string;
33
+ }[];
34
+ apple?: readonly {
35
+ sizes?: string;
36
+ type?: string;
37
+ url: string;
38
+ }[];
39
+ };
40
+ const generatedMetadataIcons =
41
+ faviconsAndLogos.metadataIcons as GeneratedMetadataIcons;
42
+ const metadataIcons: Metadata["icons"] | undefined =
43
+ Object.keys(generatedMetadataIcons).length > 0
44
+ ? {
45
+ ...(generatedMetadataIcons.icon
46
+ ? { icon: [...generatedMetadataIcons.icon] }
47
+ : {}),
48
+ ...(generatedMetadataIcons.apple
49
+ ? { apple: [...generatedMetadataIcons.apple] }
50
+ : {}),
51
+ }
52
+ : undefined;
53
+ const rootOgKey = ogManifest.routes["/"];
54
+ const rootOgImage = rootOgKey ? ogManifest.entries[rootOgKey] : undefined;
55
+ const absoluteUrl = (path: string): string => {
56
+ if (/^https:\/\//.test(path)) return path;
57
+ if (isDevelopment || !siteUrl) return path;
58
+ return new URL(path, siteUrl).toString();
59
+ };
60
+ const rootSocialMetadata: Pick<Metadata, "openGraph" | "twitter"> | undefined =
61
+ rootOgImage
62
+ ? {
63
+ openGraph: {
64
+ description: siteDescription,
65
+ images: [
66
+ {
67
+ alt: rootOgImage.alt,
68
+ height: rootOgImage.height,
69
+ url: absoluteUrl(rootOgImage.url),
70
+ width: rootOgImage.width,
71
+ },
72
+ ],
73
+ siteName: manifest.site.name,
74
+ title: manifest.site.name,
75
+ type: "website",
76
+ url: "/",
77
+ },
78
+ twitter: {
79
+ card: "summary_large_image",
80
+ description: siteDescription,
81
+ images: [absoluteUrl(rootOgImage.url)],
82
+ title: manifest.site.name,
83
+ },
84
+ }
85
+ : undefined;
86
+ const agentDirectiveStyle = {
87
+ border: 0,
88
+ clip: "rect(0 0 0 0)",
89
+ clipPath: "inset(50%)",
90
+ height: "1px",
91
+ margin: "-1px",
92
+ overflow: "hidden",
93
+ padding: 0,
94
+ position: "absolute",
95
+ whiteSpace: "nowrap",
96
+ width: "1px",
97
+ } as const;
98
+
99
+ export const metadata: Metadata = {
100
+ ...(metadataBase ? { metadataBase } : {}),
101
+ title: {
102
+ default: manifest.site.name,
103
+ template: `%s · ${manifest.site.name}`,
104
+ },
105
+ ...(siteDescription ? { description: siteDescription } : {}),
106
+ ...(rootSocialMetadata ?? {}),
107
+ ...(metadataIcons ? { icons: metadataIcons } : {}),
108
+ alternates: {
109
+ types: {
110
+ "text/markdown": "/sitemap.md",
111
+ "text/plain": "/llms.txt",
112
+ },
113
+ },
114
+ };
115
+
116
+ export default function AppRootLayout({ children }: { children: ReactNode }) {
117
+ preloadRootFonts();
118
+ return (
119
+ <html className={rootFontClassName} lang="en" suppressHydrationWarning>
120
+ <body className="publish-os-app-root">
121
+ <p data-publishos-agent-directive style={agentDirectiveStyle}>
122
+ Agent directive: read the <a href="/llms.txt">LLMS index</a> for this
123
+ site. Markdown versions of pages are available by appending .md to the
124
+ page URL or by sending Accept: text/markdown.
125
+ </p>
126
+ <Providers>
127
+ <RootLayout site={manifest.site} tree={manifest.tree}>
128
+ {children}
129
+ </RootLayout>
130
+ </Providers>
131
+ </body>
132
+ </html>
133
+ );
134
+ }
@@ -0,0 +1,29 @@
1
+ import { createMarkdownRouteHandlers } from "@publish.os/nextjs/kernel/routes/agent/markdown";
2
+ import {
3
+ loadMarkdownArtifact,
4
+ markdownArtifactManifest,
5
+ } from "@source/.publishos/markdown-index.generated";
6
+
7
+ const handlers = createMarkdownRouteHandlers(
8
+ {
9
+ index: markdownArtifactManifest.byMarkdownPath,
10
+ loadArtifact: loadMarkdownArtifact,
11
+ },
12
+ {
13
+ discoveryLinks: __PUBLISHOS_MARKDOWN_DISCOVERY_LINKS__,
14
+ },
15
+ );
16
+
17
+ type RouteContext = {
18
+ params: Promise<{ path?: string[] }>;
19
+ };
20
+
21
+ export function GET(request: Request, context: RouteContext) {
22
+ return handlers.GET(request, context);
23
+ }
24
+
25
+ export function HEAD(request: Request, context: RouteContext) {
26
+ return handlers.HEAD(request, context);
27
+ }
28
+
29
+ export const generateStaticParams = handlers.generateStaticParams;
@@ -0,0 +1,18 @@
1
+ import {
2
+ createOgImageRoute,
3
+ createOgImageStaticParams,
4
+ } from "@publish.os/nextjs/kernel/routes/metadata/og-image";
5
+ import { ogManifest } from "@source/.publishos/og-manifest.generated";
6
+
7
+ const getOgImage = createOgImageRoute({ manifest: ogManifest });
8
+
9
+ type RouteContext = {
10
+ params: Promise<{ key: string }>;
11
+ };
12
+
13
+ export function GET(request: Request, context: RouteContext) {
14
+ return getOgImage(request, context);
15
+ }
16
+
17
+ export const generateStaticParams = () =>
18
+ createOgImageStaticParams({ manifest: ogManifest });
@@ -0,0 +1,40 @@
1
+ import type { ResolvedAttribution } from "@publish.os/nextjs/types";
2
+
3
+ type PoweredByFooterProps = {
4
+ attribution: ResolvedAttribution;
5
+ };
6
+
7
+ const styles = {
8
+ attr: "flex min-h-6 w-full justify-end font-sans text-[max(12px,0.8rem)] leading-[max(16px,1.5rem)] tracking-normal",
9
+ hrefLabel:
10
+ "inline underline decoration-stroke-3 decoration-1 underline-offset-[0.16em] transition-colors duration-100 ease-out group-hover/link:decoration-stroke-2 group-active/link:decoration-stroke-2 group-hover/link:text-foreground-1",
11
+ link: "group/link inline-flex items-center gap-1 px-1 rounded-button text-foreground-3 !no-underline transition-colors duration-100 ease-out hover:!no-underline active:!no-underline focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-focus-stroke",
12
+ root: "!visible !block w-full py-8 !opacity-100",
13
+ rule: "mb-3.5 w-full border-stroke-3 border-t",
14
+ } as const;
15
+
16
+ export function PoweredByFooter({ attribution }: PoweredByFooterProps) {
17
+ if (!attribution.enabled) {
18
+ return null;
19
+ }
20
+
21
+ const label = attribution.label ?? "Powered by";
22
+ const hrefLabel = attribution.hrefLabel ?? "publish.dev";
23
+
24
+ return (
25
+ <footer className={styles.root} data-publishos-attribution-footer>
26
+ <div className={styles.rule} />
27
+ <div className={styles.attr}>
28
+ <a
29
+ className={styles.link}
30
+ href={attribution.href}
31
+ rel="noopener noreferrer"
32
+ target="_blank"
33
+ >
34
+ <span>{label}</span>
35
+ <span className={styles.hrefLabel}>{hrefLabel}</span>
36
+ </a>
37
+ </div>
38
+ </footer>
39
+ );
40
+ }
@@ -0,0 +1,13 @@
1
+ "use client";
2
+
3
+ import { PublishOSThemeProvider } from "@app/publish-os-theme-provider";
4
+ import { KeyboardShortcutsProvider } from "@publish.os/nextjs/keyboard-shortcuts";
5
+ import type { ReactNode } from "react";
6
+
7
+ export function Providers({ children }: { children: ReactNode }) {
8
+ return (
9
+ <KeyboardShortcutsProvider>
10
+ <PublishOSThemeProvider>{children}</PublishOSThemeProvider>
11
+ </KeyboardShortcutsProvider>
12
+ );
13
+ }