polen 0.10.0-next.14 → 0.10.0-next.4

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 (525) hide show
  1. package/README.md +1 -2
  2. package/build/api/builder/builder.js +1 -1
  3. package/build/api/builder/builder.js.map +1 -1
  4. package/build/api/config/load.js +6 -6
  5. package/build/api/config/load.js.map +1 -1
  6. package/build/api/config-resolver/resolve.js +2 -2
  7. package/build/api/config-resolver/resolve.js.map +1 -1
  8. package/build/api/schema/data-sources/schema-directory/schema-directory.js +1 -1
  9. package/build/api/schema/data-sources/schema-directory/schema-directory.js.map +1 -1
  10. package/build/api/vite/plugins/branding/index.js +4 -4
  11. package/build/api/vite/plugins/branding/index.js.map +1 -1
  12. package/build/api/vite/plugins/build.d.ts.map +1 -1
  13. package/build/api/vite/plugins/build.js +4 -12
  14. package/build/api/vite/plugins/build.js.map +1 -1
  15. package/build/api/vite/plugins/core.d.ts +2 -2
  16. package/build/api/vite/plugins/core.d.ts.map +1 -1
  17. package/build/api/vite/plugins/core.js +13 -13
  18. package/build/api/vite/plugins/core.js.map +1 -1
  19. package/build/api/vite/plugins/pages.d.ts +14 -8
  20. package/build/api/vite/plugins/pages.d.ts.map +1 -1
  21. package/build/api/vite/plugins/pages.js +185 -111
  22. package/build/api/vite/plugins/pages.js.map +1 -1
  23. package/build/api/vite/plugins/serve.d.ts.map +1 -1
  24. package/build/api/vite/plugins/serve.js +12 -52
  25. package/build/api/vite/plugins/serve.js.map +1 -1
  26. package/build/cli/_/self-contained-mode.js +5 -5
  27. package/build/cli/_/self-contained-mode.js.map +1 -1
  28. package/build/lib/demos/config-schema.d.ts +20 -20
  29. package/build/lib/file-router/diagnostic-reporter.js +2 -2
  30. package/build/lib/file-router/diagnostic-reporter.js.map +1 -1
  31. package/build/lib/file-router/file-router.d.ts +2 -0
  32. package/build/lib/file-router/file-router.d.ts.map +1 -1
  33. package/build/lib/file-router/file-router.js +2 -0
  34. package/build/lib/file-router/file-router.js.map +1 -1
  35. package/build/lib/file-router/route.d.ts +0 -2
  36. package/build/lib/file-router/route.d.ts.map +1 -1
  37. package/build/lib/file-router/route.js.map +1 -1
  38. package/build/lib/file-router/scan-tree.d.ts +20 -0
  39. package/build/lib/file-router/scan-tree.d.ts.map +1 -0
  40. package/build/lib/file-router/scan-tree.js +158 -0
  41. package/build/lib/file-router/scan-tree.js.map +1 -0
  42. package/build/lib/file-router/scan.d.ts.map +1 -1
  43. package/build/lib/file-router/scan.js +13 -22
  44. package/build/lib/file-router/scan.js.map +1 -1
  45. package/build/lib/file-router/sidebar/index.d.ts +3 -0
  46. package/build/lib/file-router/sidebar/index.d.ts.map +1 -0
  47. package/build/lib/file-router/sidebar/index.js +4 -0
  48. package/build/lib/file-router/sidebar/index.js.map +1 -0
  49. package/build/lib/file-router/sidebar/sidebar-tree.d.ts +9 -0
  50. package/build/lib/file-router/sidebar/sidebar-tree.d.ts.map +1 -0
  51. package/build/lib/file-router/sidebar/sidebar-tree.js +85 -0
  52. package/build/lib/file-router/sidebar/sidebar-tree.js.map +1 -0
  53. package/build/lib/file-router/sidebar/types.d.ts +17 -0
  54. package/build/lib/file-router/sidebar/types.d.ts.map +1 -0
  55. package/build/lib/file-router/sidebar/types.js.map +1 -0
  56. package/build/lib/github-actions/runner.js +2 -2
  57. package/build/lib/github-actions/runner.js.map +1 -1
  58. package/build/lib/github-actions/schemas/context.d.ts +2 -2
  59. package/build/lib/kit-temp.d.ts +0 -103
  60. package/build/lib/kit-temp.d.ts.map +1 -1
  61. package/build/lib/kit-temp.js +3 -239
  62. package/build/lib/kit-temp.js.map +1 -1
  63. package/build/lib/tree/index.d.ts +3 -0
  64. package/build/lib/tree/index.d.ts.map +1 -0
  65. package/build/lib/tree/index.js +2 -0
  66. package/build/lib/tree/index.js.map +1 -0
  67. package/build/lib/tree/tree.d.ts +62 -0
  68. package/build/lib/tree/tree.d.ts.map +1 -0
  69. package/build/lib/tree/tree.js +134 -0
  70. package/build/lib/tree/tree.js.map +1 -0
  71. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.d.ts +8 -1
  72. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.d.ts.map +1 -1
  73. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.js +53 -48
  74. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.js.map +1 -1
  75. package/build/package-paths.js +3 -3
  76. package/build/package-paths.js.map +1 -1
  77. package/build/sandbox.js +2 -17
  78. package/build/sandbox.js.map +1 -1
  79. package/build/singletons/debug.d.ts +1 -1
  80. package/build/singletons/debug.d.ts.map +1 -1
  81. package/build/singletons/debug.js +1 -1
  82. package/build/singletons/debug.js.map +1 -1
  83. package/build/template/components/ArgumentAnnotation.jsx +16 -0
  84. package/build/template/components/ArgumentAnnotation.jsx.map +1 -0
  85. package/build/template/components/ArgumentList.jsx +16 -0
  86. package/build/template/components/ArgumentList.jsx.map +1 -0
  87. package/build/template/components/ArgumentListAnnotation.jsx +23 -0
  88. package/build/template/components/ArgumentListAnnotation.jsx.map +1 -0
  89. package/build/template/components/Changelog.jsx +68 -0
  90. package/build/template/components/Changelog.jsx.map +1 -0
  91. package/build/template/components/{CodeBlock.js → CodeBlock.jsx} +5 -4
  92. package/build/template/components/{CodeBlock.js.map → CodeBlock.jsx.map} +1 -1
  93. package/build/template/components/DeprecationReason.jsx +10 -0
  94. package/build/template/components/DeprecationReason.jsx.map +1 -0
  95. package/build/template/components/Description.jsx +10 -0
  96. package/build/template/components/Description.jsx.map +1 -0
  97. package/build/template/components/Field.jsx +22 -0
  98. package/build/template/components/Field.jsx.map +1 -0
  99. package/build/template/components/{FieldList.js → FieldList.jsx} +5 -4
  100. package/build/template/components/FieldList.jsx.map +1 -0
  101. package/build/template/components/{FieldListSection.js → FieldListSection.jsx} +6 -4
  102. package/build/template/components/FieldListSection.jsx.map +1 -0
  103. package/build/template/components/Link.d.ts +2 -2
  104. package/build/template/components/Link.d.ts.map +1 -1
  105. package/build/template/components/{Link.js → Link.jsx} +9 -17
  106. package/build/template/components/Link.jsx.map +1 -0
  107. package/build/template/components/Logo.jsx +29 -0
  108. package/build/template/components/Logo.jsx.map +1 -0
  109. package/build/template/components/{Markdown.js → Markdown.jsx} +2 -3
  110. package/build/template/components/Markdown.jsx.map +1 -0
  111. package/build/template/components/MissingSchema.d.ts +1 -1
  112. package/build/template/components/MissingSchema.d.ts.map +1 -1
  113. package/build/template/components/MissingSchema.jsx +4 -0
  114. package/build/template/components/MissingSchema.jsx.map +1 -0
  115. package/build/template/components/NamedType.jsx +17 -0
  116. package/build/template/components/NamedType.jsx.map +1 -0
  117. package/build/template/components/{RadixLink.js → RadixLink.jsx} +1 -1
  118. package/build/template/components/RadixLink.jsx.map +1 -0
  119. package/build/template/components/Texts/{MinorHeading.js → MinorHeading.jsx} +3 -4
  120. package/build/template/components/Texts/MinorHeading.jsx.map +1 -0
  121. package/build/template/components/Texts/texts.js +1 -1
  122. package/build/template/components/Texts/texts.js.map +1 -1
  123. package/build/template/components/{TypeAnnotation.js → TypeAnnotation.jsx} +18 -8
  124. package/build/template/components/TypeAnnotation.jsx.map +1 -0
  125. package/build/template/components/TypeFieldsLinkList.jsx +17 -0
  126. package/build/template/components/TypeFieldsLinkList.jsx.map +1 -0
  127. package/build/template/components/TypeIndex.jsx +27 -0
  128. package/build/template/components/TypeIndex.jsx.map +1 -0
  129. package/build/template/components/graphql/graphql.d.ts +2 -2
  130. package/build/template/components/graphql/graphql.jsx +3 -0
  131. package/build/template/components/graphql/graphql.jsx.map +1 -0
  132. package/build/template/components/graphql/index.d.ts +1 -1
  133. package/build/template/components/graphql/index.js +1 -1
  134. package/build/template/components/graphql/index.js.map +1 -1
  135. package/build/template/components/graphql/{type-kind-icon.js → type-kind-icon.jsx} +2 -3
  136. package/build/template/components/graphql/type-kind-icon.jsx.map +1 -0
  137. package/build/template/components/graphql/type-link.jsx +16 -0
  138. package/build/template/components/graphql/type-link.jsx.map +1 -0
  139. package/build/template/components/sidebar/Sidebar.d.ts +3 -3
  140. package/build/template/components/sidebar/Sidebar.d.ts.map +1 -1
  141. package/build/template/components/sidebar/Sidebar.jsx +15 -0
  142. package/build/template/components/sidebar/Sidebar.jsx.map +1 -0
  143. package/build/template/components/sidebar/SidebarItem.d.ts +3 -3
  144. package/build/template/components/sidebar/SidebarItem.d.ts.map +1 -1
  145. package/build/template/components/sidebar/{SidebarItem.js → SidebarItem.jsx} +35 -18
  146. package/build/template/components/sidebar/SidebarItem.jsx.map +1 -0
  147. package/build/template/components/sidebar/ToggleButton.d.ts +1 -1
  148. package/build/template/components/sidebar/ToggleButton.d.ts.map +1 -1
  149. package/build/template/components/sidebar/ToggleButton.jsx +6 -0
  150. package/build/template/components/sidebar/ToggleButton.jsx.map +1 -0
  151. package/build/template/entry.client.d.ts +0 -1
  152. package/build/template/entry.client.d.ts.map +1 -1
  153. package/build/template/{entry.client.js → entry.client.jsx} +9 -5
  154. package/build/template/entry.client.jsx.map +1 -0
  155. package/build/template/routes/changelog.d.ts +1 -1
  156. package/build/template/routes/{changelog.js → changelog.jsx} +4 -5
  157. package/build/template/routes/changelog.jsx.map +1 -0
  158. package/build/template/routes/{index.js → index.jsx} +2 -3
  159. package/build/template/routes/index.jsx.map +1 -0
  160. package/build/template/routes/reference.$type.$field.d.ts +1 -1
  161. package/build/template/routes/{reference.$type.$field.js → reference.$type.$field.jsx} +5 -6
  162. package/build/template/routes/reference.$type.$field.jsx.map +1 -0
  163. package/build/template/routes/reference.$type.d.ts +1 -1
  164. package/build/template/routes/{reference.$type.js → reference.$type.jsx} +5 -6
  165. package/build/template/routes/reference.$type.jsx.map +1 -0
  166. package/build/template/routes/reference.d.ts +2 -2
  167. package/build/template/routes/reference.d.ts.map +1 -1
  168. package/build/template/routes/{reference.js → reference.jsx} +12 -7
  169. package/build/template/routes/reference.jsx.map +1 -0
  170. package/build/template/routes/root.d.ts +2 -2
  171. package/build/template/routes/root.d.ts.map +1 -1
  172. package/build/template/routes/root.jsx +188 -0
  173. package/build/template/routes/root.jsx.map +1 -0
  174. package/build/template/routes.jsx +5 -0
  175. package/build/template/routes.jsx.map +1 -0
  176. package/build/template/server/app.d.ts +1 -8
  177. package/build/template/server/app.d.ts.map +1 -1
  178. package/build/template/server/app.js +21 -21
  179. package/build/template/server/app.js.map +1 -1
  180. package/build/template/server/main.js +1 -2
  181. package/build/template/server/main.js.map +1 -1
  182. package/build/template/server/render-page.d.ts +3 -0
  183. package/build/template/server/render-page.d.ts.map +1 -0
  184. package/build/template/server/{create-page-html-response.js → render-page.jsx} +17 -11
  185. package/build/template/server/render-page.jsx.map +1 -0
  186. package/build/template/server/ssg/generate.d.ts.map +1 -1
  187. package/build/template/server/ssg/generate.js +34 -33
  188. package/build/template/server/ssg/generate.js.map +1 -1
  189. package/build/template/server/ssg/get-route-paths.js +1 -1
  190. package/build/template/server/ssg/get-route-paths.js.map +1 -1
  191. package/build/template/server/view.js +1 -1
  192. package/build/template/server/view.js.map +1 -1
  193. package/package.json +9 -66
  194. package/src/api/config/load.ts +5 -5
  195. package/src/api/config-resolver/resolve.ts +2 -2
  196. package/src/api/schema/data-sources/schema-directory/schema-directory.ts +1 -1
  197. package/src/api/singletons/markdown/markdown.test.ts +1 -1
  198. package/src/api/vite/plugins/branding/index.ts +4 -4
  199. package/src/api/vite/plugins/build.ts +89 -97
  200. package/src/api/vite/plugins/core.ts +16 -18
  201. package/src/api/vite/plugins/pages.ts +209 -135
  202. package/src/api/vite/plugins/serve.ts +14 -67
  203. package/src/cli/_/self-contained-mode.ts +5 -5
  204. package/src/lib/deployment/$$.ts +1 -1
  205. package/src/lib/deployment/$.test.ts +3 -3
  206. package/src/lib/deployment/$.ts +1 -1
  207. package/src/lib/file-router/diagnostic-reporter.ts +2 -2
  208. package/src/lib/file-router/file-router.ts +2 -0
  209. package/src/lib/file-router/linter.test.ts +0 -2
  210. package/src/lib/file-router/route.ts +0 -2
  211. package/src/lib/file-router/scan-tree.test.ts +189 -0
  212. package/src/lib/file-router/scan-tree.ts +205 -0
  213. package/src/lib/file-router/scan.ts +14 -26
  214. package/src/lib/file-router/sidebar/index.ts +3 -0
  215. package/src/lib/file-router/sidebar/sidebar-tree.test.ts +123 -0
  216. package/src/lib/file-router/sidebar/sidebar-tree.ts +110 -0
  217. package/src/lib/file-router/sidebar/types.ts +19 -0
  218. package/src/lib/kit-temp.test.ts +7 -19
  219. package/src/lib/kit-temp.ts +5 -307
  220. package/src/lib/task/$.test.ts +3 -3
  221. package/src/lib/tree/index.ts +2 -0
  222. package/src/lib/tree/tree.test.ts +117 -0
  223. package/src/lib/tree/tree.ts +183 -0
  224. package/src/lib/version-history/index.test.ts +4 -12
  225. package/src/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.ts +58 -52
  226. package/src/package-paths.ts +3 -3
  227. package/src/sandbox.ts +1 -20
  228. package/src/singletons/debug.ts +1 -1
  229. package/src/template/components/ArgumentAnnotation.tsx +1 -1
  230. package/src/template/components/ArgumentList.tsx +1 -1
  231. package/src/template/components/ArgumentListAnnotation.tsx +2 -2
  232. package/src/template/components/DeprecationReason.tsx +1 -1
  233. package/src/template/components/Description.tsx +1 -1
  234. package/src/template/components/Field.tsx +4 -4
  235. package/src/template/components/FieldList.tsx +1 -1
  236. package/src/template/components/FieldListSection.tsx +1 -1
  237. package/src/template/components/Link.tsx +14 -22
  238. package/src/template/components/NamedType.tsx +2 -2
  239. package/src/template/components/TypeAnnotation.tsx +1 -1
  240. package/src/template/components/TypeFieldsLinkList.tsx +1 -1
  241. package/src/template/components/TypeIndex.tsx +1 -1
  242. package/src/template/components/graphql/graphql.tsx +2 -2
  243. package/src/template/components/graphql/index.ts +1 -1
  244. package/src/template/components/graphql/type-link.tsx +2 -2
  245. package/src/template/components/sidebar/Sidebar.tsx +2 -2
  246. package/src/template/components/sidebar/SidebarItem.tsx +14 -14
  247. package/src/template/entry.client.tsx +5 -2
  248. package/src/template/routes/changelog.tsx +1 -1
  249. package/src/template/routes/reference.$type.$field.tsx +3 -3
  250. package/src/template/routes/reference.$type.tsx +3 -3
  251. package/src/template/routes/reference.tsx +10 -6
  252. package/src/template/routes/root.tsx +108 -112
  253. package/src/template/routes.tsx +1 -1
  254. package/src/template/server/app.ts +23 -33
  255. package/src/template/server/main.ts +1 -2
  256. package/src/template/server/{create-page-html-response.ts → render-page.tsx} +16 -19
  257. package/src/template/server/ssg/generate.ts +72 -68
  258. package/src/template/server/ssg/get-route-paths.ts +1 -1
  259. package/src/template/server/view.ts +1 -1
  260. package/src/template/styles/code-block.css +0 -32
  261. package/build/api/content/$$.d.ts +0 -7
  262. package/build/api/content/$$.d.ts.map +0 -1
  263. package/build/api/content/$$.js +0 -7
  264. package/build/api/content/$$.js.map +0 -1
  265. package/build/api/content/$.d.ts +0 -2
  266. package/build/api/content/$.d.ts.map +0 -1
  267. package/build/api/content/$.js +0 -2
  268. package/build/api/content/$.js.map +0 -1
  269. package/build/api/content/metadata.d.ts +0 -10
  270. package/build/api/content/metadata.d.ts.map +0 -1
  271. package/build/api/content/metadata.js +0 -9
  272. package/build/api/content/metadata.js.map +0 -1
  273. package/build/api/content/navbar.d.ts +0 -10
  274. package/build/api/content/navbar.d.ts.map +0 -1
  275. package/build/api/content/navbar.js +0 -45
  276. package/build/api/content/navbar.js.map +0 -1
  277. package/build/api/content/page.d.ts +0 -11
  278. package/build/api/content/page.d.ts.map +0 -1
  279. package/build/api/content/page.js +0 -2
  280. package/build/api/content/page.js.map +0 -1
  281. package/build/api/content/scan.d.ts +0 -19
  282. package/build/api/content/scan.d.ts.map +0 -1
  283. package/build/api/content/scan.js +0 -90
  284. package/build/api/content/scan.js.map +0 -1
  285. package/build/api/content/sidebar.d.ts +0 -104
  286. package/build/api/content/sidebar.d.ts.map +0 -1
  287. package/build/api/content/sidebar.js +0 -166
  288. package/build/api/content/sidebar.js.map +0 -1
  289. package/build/api/content/utils.d.ts +0 -5
  290. package/build/api/content/utils.d.ts.map +0 -1
  291. package/build/api/content/utils.js +0 -8
  292. package/build/api/content/utils.js.map +0 -1
  293. package/build/exports/components.d.ts +0 -5
  294. package/build/exports/components.d.ts.map +0 -1
  295. package/build/exports/components.js +0 -5
  296. package/build/exports/components.js.map +0 -1
  297. package/build/lib/graphql-document/$$.d.ts +0 -5
  298. package/build/lib/graphql-document/$$.d.ts.map +0 -1
  299. package/build/lib/graphql-document/$$.js +0 -5
  300. package/build/lib/graphql-document/$$.js.map +0 -1
  301. package/build/lib/graphql-document/$.d.ts +0 -2
  302. package/build/lib/graphql-document/$.d.ts.map +0 -1
  303. package/build/lib/graphql-document/$.js +0 -2
  304. package/build/lib/graphql-document/$.js.map +0 -1
  305. package/build/lib/graphql-document/analysis.d.ts +0 -44
  306. package/build/lib/graphql-document/analysis.d.ts.map +0 -1
  307. package/build/lib/graphql-document/analysis.js +0 -361
  308. package/build/lib/graphql-document/analysis.js.map +0 -1
  309. package/build/lib/graphql-document/components/CopyButton.d.ts +0 -19
  310. package/build/lib/graphql-document/components/CopyButton.d.ts.map +0 -1
  311. package/build/lib/graphql-document/components/CopyButton.js +0 -43
  312. package/build/lib/graphql-document/components/CopyButton.js.map +0 -1
  313. package/build/lib/graphql-document/components/GraphQLDocument.d.ts +0 -38
  314. package/build/lib/graphql-document/components/GraphQLDocument.d.ts.map +0 -1
  315. package/build/lib/graphql-document/components/GraphQLDocument.js +0 -142
  316. package/build/lib/graphql-document/components/GraphQLDocument.js.map +0 -1
  317. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts +0 -7
  318. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts.map +0 -1
  319. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js +0 -45
  320. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js.map +0 -1
  321. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts +0 -33
  322. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts.map +0 -1
  323. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js +0 -48
  324. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js.map +0 -1
  325. package/build/lib/graphql-document/components/IdentifierLink.d.ts +0 -39
  326. package/build/lib/graphql-document/components/IdentifierLink.d.ts.map +0 -1
  327. package/build/lib/graphql-document/components/IdentifierLink.js +0 -75
  328. package/build/lib/graphql-document/components/IdentifierLink.js.map +0 -1
  329. package/build/lib/graphql-document/components/graphql-document-styles.d.ts +0 -5
  330. package/build/lib/graphql-document/components/graphql-document-styles.d.ts.map +0 -1
  331. package/build/lib/graphql-document/components/graphql-document-styles.js +0 -167
  332. package/build/lib/graphql-document/components/graphql-document-styles.js.map +0 -1
  333. package/build/lib/graphql-document/components/index.d.ts +0 -6
  334. package/build/lib/graphql-document/components/index.d.ts.map +0 -1
  335. package/build/lib/graphql-document/components/index.js +0 -6
  336. package/build/lib/graphql-document/components/index.js.map +0 -1
  337. package/build/lib/graphql-document/example.d.ts +0 -25
  338. package/build/lib/graphql-document/example.d.ts.map +0 -1
  339. package/build/lib/graphql-document/example.js +0 -140
  340. package/build/lib/graphql-document/example.js.map +0 -1
  341. package/build/lib/graphql-document/graphql-document.d.ts +0 -35
  342. package/build/lib/graphql-document/graphql-document.d.ts.map +0 -1
  343. package/build/lib/graphql-document/graphql-document.js +0 -36
  344. package/build/lib/graphql-document/graphql-document.js.map +0 -1
  345. package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts +0 -43
  346. package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts.map +0 -1
  347. package/build/lib/graphql-document/hooks/use-tooltip-state.js +0 -132
  348. package/build/lib/graphql-document/hooks/use-tooltip-state.js.map +0 -1
  349. package/build/lib/graphql-document/positioning-simple.d.ts +0 -63
  350. package/build/lib/graphql-document/positioning-simple.d.ts.map +0 -1
  351. package/build/lib/graphql-document/positioning-simple.js +0 -185
  352. package/build/lib/graphql-document/positioning-simple.js.map +0 -1
  353. package/build/lib/graphql-document/schema-context.d.ts +0 -8
  354. package/build/lib/graphql-document/schema-context.d.ts.map +0 -1
  355. package/build/lib/graphql-document/schema-context.js +0 -11
  356. package/build/lib/graphql-document/schema-context.js.map +0 -1
  357. package/build/lib/graphql-document/schema-integration-example.d.ts +0 -27
  358. package/build/lib/graphql-document/schema-integration-example.d.ts.map +0 -1
  359. package/build/lib/graphql-document/schema-integration-example.js +0 -297
  360. package/build/lib/graphql-document/schema-integration-example.js.map +0 -1
  361. package/build/lib/graphql-document/schema-integration.d.ts +0 -135
  362. package/build/lib/graphql-document/schema-integration.d.ts.map +0 -1
  363. package/build/lib/graphql-document/schema-integration.js +0 -328
  364. package/build/lib/graphql-document/schema-integration.js.map +0 -1
  365. package/build/lib/graphql-document/types.d.ts +0 -117
  366. package/build/lib/graphql-document/types.d.ts.map +0 -1
  367. package/build/lib/graphql-document/types.js.map +0 -1
  368. package/build/template/components/ArgumentAnnotation.js +0 -10
  369. package/build/template/components/ArgumentAnnotation.js.map +0 -1
  370. package/build/template/components/ArgumentList.js +0 -9
  371. package/build/template/components/ArgumentList.js.map +0 -1
  372. package/build/template/components/ArgumentListAnnotation.js +0 -15
  373. package/build/template/components/ArgumentListAnnotation.js.map +0 -1
  374. package/build/template/components/Changelog.js +0 -44
  375. package/build/template/components/Changelog.js.map +0 -1
  376. package/build/template/components/CodeBlockEnhancer.d.ts +0 -2
  377. package/build/template/components/CodeBlockEnhancer.d.ts.map +0 -1
  378. package/build/template/components/CodeBlockEnhancer.js +0 -175
  379. package/build/template/components/CodeBlockEnhancer.js.map +0 -1
  380. package/build/template/components/DeprecationReason.js +0 -9
  381. package/build/template/components/DeprecationReason.js.map +0 -1
  382. package/build/template/components/Description.js +0 -9
  383. package/build/template/components/Description.js.map +0 -1
  384. package/build/template/components/Field.js +0 -14
  385. package/build/template/components/Field.js.map +0 -1
  386. package/build/template/components/FieldList.js.map +0 -1
  387. package/build/template/components/FieldListSection.js.map +0 -1
  388. package/build/template/components/HamburgerMenu.d.ts +0 -9
  389. package/build/template/components/HamburgerMenu.d.ts.map +0 -1
  390. package/build/template/components/HamburgerMenu.js +0 -30
  391. package/build/template/components/HamburgerMenu.js.map +0 -1
  392. package/build/template/components/Link.js.map +0 -1
  393. package/build/template/components/Logo.js +0 -20
  394. package/build/template/components/Logo.js.map +0 -1
  395. package/build/template/components/MDXComponents.d.ts +0 -11
  396. package/build/template/components/MDXComponents.d.ts.map +0 -1
  397. package/build/template/components/MDXComponents.js +0 -70
  398. package/build/template/components/MDXComponents.js.map +0 -1
  399. package/build/template/components/Markdown.js.map +0 -1
  400. package/build/template/components/MissingSchema.js +0 -5
  401. package/build/template/components/MissingSchema.js.map +0 -1
  402. package/build/template/components/NamedType.js +0 -12
  403. package/build/template/components/NamedType.js.map +0 -1
  404. package/build/template/components/NotFound.d.ts +0 -2
  405. package/build/template/components/NotFound.d.ts.map +0 -1
  406. package/build/template/components/NotFound.js +0 -7
  407. package/build/template/components/NotFound.js.map +0 -1
  408. package/build/template/components/RadixLink.js.map +0 -1
  409. package/build/template/components/TestComponent.d.ts +0 -5
  410. package/build/template/components/TestComponent.d.ts.map +0 -1
  411. package/build/template/components/TestComponent.js +0 -7
  412. package/build/template/components/TestComponent.js.map +0 -1
  413. package/build/template/components/Texts/MinorHeading.js.map +0 -1
  414. package/build/template/components/ThemeToggle.d.ts +0 -3
  415. package/build/template/components/ThemeToggle.d.ts.map +0 -1
  416. package/build/template/components/ThemeToggle.js +0 -9
  417. package/build/template/components/ThemeToggle.js.map +0 -1
  418. package/build/template/components/TypeAnnotation.js.map +0 -1
  419. package/build/template/components/TypeFieldsLinkList.js +0 -9
  420. package/build/template/components/TypeFieldsLinkList.js.map +0 -1
  421. package/build/template/components/TypeIndex.js +0 -17
  422. package/build/template/components/TypeIndex.js.map +0 -1
  423. package/build/template/components/content/$$.d.ts +0 -3
  424. package/build/template/components/content/$$.d.ts.map +0 -1
  425. package/build/template/components/content/$$.js +0 -3
  426. package/build/template/components/content/$$.js.map +0 -1
  427. package/build/template/components/content/GraphQLDocumentWithSchema.d.ts +0 -8
  428. package/build/template/components/content/GraphQLDocumentWithSchema.d.ts.map +0 -1
  429. package/build/template/components/content/GraphQLDocumentWithSchema.js +0 -13
  430. package/build/template/components/content/GraphQLDocumentWithSchema.js.map +0 -1
  431. package/build/template/components/content/GraphQLDocumentWrapper.d.ts +0 -7
  432. package/build/template/components/content/GraphQLDocumentWrapper.d.ts.map +0 -1
  433. package/build/template/components/content/GraphQLDocumentWrapper.js +0 -63
  434. package/build/template/components/content/GraphQLDocumentWrapper.js.map +0 -1
  435. package/build/template/components/graphql/graphql.js +0 -3
  436. package/build/template/components/graphql/graphql.js.map +0 -1
  437. package/build/template/components/graphql/type-kind-icon.js.map +0 -1
  438. package/build/template/components/graphql/type-link.js +0 -11
  439. package/build/template/components/graphql/type-link.js.map +0 -1
  440. package/build/template/components/sidebar/Sidebar.js +0 -11
  441. package/build/template/components/sidebar/Sidebar.js.map +0 -1
  442. package/build/template/components/sidebar/SidebarItem.js.map +0 -1
  443. package/build/template/components/sidebar/ToggleButton.js +0 -5
  444. package/build/template/components/sidebar/ToggleButton.js.map +0 -1
  445. package/build/template/contexts/ThemeContext.d.ts +0 -12
  446. package/build/template/contexts/ThemeContext.d.ts.map +0 -1
  447. package/build/template/contexts/ThemeContext.js +0 -40
  448. package/build/template/contexts/ThemeContext.js.map +0 -1
  449. package/build/template/entry.client.js.map +0 -1
  450. package/build/template/hooks/useClientOnly.d.ts +0 -9
  451. package/build/template/hooks/useClientOnly.d.ts.map +0 -1
  452. package/build/template/hooks/useClientOnly.js +0 -16
  453. package/build/template/hooks/useClientOnly.js.map +0 -1
  454. package/build/template/routes/changelog.js.map +0 -1
  455. package/build/template/routes/index.js.map +0 -1
  456. package/build/template/routes/reference.$type.$field.js.map +0 -1
  457. package/build/template/routes/reference.$type.js.map +0 -1
  458. package/build/template/routes/reference.js.map +0 -1
  459. package/build/template/routes/root.js +0 -138
  460. package/build/template/routes/root.js.map +0 -1
  461. package/build/template/routes.js +0 -5
  462. package/build/template/routes.js.map +0 -1
  463. package/build/template/server/create-page-html-response.d.ts +0 -7
  464. package/build/template/server/create-page-html-response.d.ts.map +0 -1
  465. package/build/template/server/create-page-html-response.js.map +0 -1
  466. package/build/template/server/middleware/page.d.ts +0 -4
  467. package/build/template/server/middleware/page.d.ts.map +0 -1
  468. package/build/template/server/middleware/page.js +0 -15
  469. package/build/template/server/middleware/page.js.map +0 -1
  470. package/build/template/server/middleware/unsupported-assets.d.ts +0 -10
  471. package/build/template/server/middleware/unsupported-assets.d.ts.map +0 -1
  472. package/build/template/server/middleware/unsupported-assets.js +0 -21
  473. package/build/template/server/middleware/unsupported-assets.js.map +0 -1
  474. package/build/template/styles/code-block.css +0 -218
  475. package/src/api/content/$$.ts +0 -6
  476. package/src/api/content/$.test.ts +0 -72
  477. package/src/api/content/$.ts +0 -1
  478. package/src/api/content/metadata.ts +0 -11
  479. package/src/api/content/navbar.test.ts +0 -55
  480. package/src/api/content/navbar.ts +0 -61
  481. package/src/api/content/page.ts +0 -12
  482. package/src/api/content/scan.ts +0 -117
  483. package/src/api/content/sidebar.test.ts +0 -297
  484. package/src/api/content/sidebar.ts +0 -283
  485. package/src/api/content/utils.ts +0 -7
  486. package/src/exports/components.ts +0 -4
  487. package/src/lib/graphql-document/$$.ts +0 -4
  488. package/src/lib/graphql-document/$.test.ts +0 -132
  489. package/src/lib/graphql-document/$.ts +0 -1
  490. package/src/lib/graphql-document/README.md +0 -102
  491. package/src/lib/graphql-document/analysis.ts +0 -415
  492. package/src/lib/graphql-document/components/CopyButton.tsx +0 -76
  493. package/src/lib/graphql-document/components/GraphQLDocument.tsx +0 -262
  494. package/src/lib/graphql-document/components/GraphQLDocument.unit.test.ts +0 -188
  495. package/src/lib/graphql-document/components/GraphQLDocumentWithSchema.tsx +0 -70
  496. package/src/lib/graphql-document/components/GraphQLIdentifierPopover.tsx +0 -197
  497. package/src/lib/graphql-document/components/IdentifierLink.tsx +0 -160
  498. package/src/lib/graphql-document/components/graphql-document-styles.ts +0 -167
  499. package/src/lib/graphql-document/components/index.ts +0 -5
  500. package/src/lib/graphql-document/demo.md +0 -155
  501. package/src/lib/graphql-document/example.ts +0 -163
  502. package/src/lib/graphql-document/graphql-document.ts +0 -37
  503. package/src/lib/graphql-document/hooks/use-tooltip-state.test.ts +0 -76
  504. package/src/lib/graphql-document/hooks/use-tooltip-state.ts +0 -191
  505. package/src/lib/graphql-document/positioning-simple.test.ts +0 -248
  506. package/src/lib/graphql-document/positioning-simple.ts +0 -260
  507. package/src/lib/graphql-document/schema-context.tsx +0 -20
  508. package/src/lib/graphql-document/schema-integration-example.ts +0 -341
  509. package/src/lib/graphql-document/schema-integration.test.ts +0 -365
  510. package/src/lib/graphql-document/schema-integration.ts +0 -497
  511. package/src/lib/graphql-document/types.ts +0 -129
  512. package/src/template/components/CodeBlockEnhancer.tsx +0 -192
  513. package/src/template/components/HamburgerMenu.tsx +0 -96
  514. package/src/template/components/MDXComponents.tsx +0 -101
  515. package/src/template/components/NotFound.tsx +0 -28
  516. package/src/template/components/TestComponent.tsx +0 -6
  517. package/src/template/components/ThemeToggle.tsx +0 -21
  518. package/src/template/components/content/$$.ts +0 -2
  519. package/src/template/components/content/GraphQLDocumentWithSchema.tsx +0 -13
  520. package/src/template/components/content/GraphQLDocumentWrapper.tsx +0 -89
  521. package/src/template/contexts/ThemeContext.tsx +0 -60
  522. package/src/template/hooks/useClientOnly.ts +0 -21
  523. package/src/template/server/middleware/page.ts +0 -19
  524. package/src/template/server/middleware/unsupported-assets.ts +0 -25
  525. /package/build/lib/{graphql-document → file-router/sidebar}/types.js +0 -0
@@ -1,10 +0,0 @@
1
- import type { Hono } from '#dep/hono/index';
2
- /**
3
- * Temporary middleware to block unsupported asset requests
4
- *
5
- * TODO: Polen should eventually support favicon and apple-touch-icon generation
6
- * For now, we return 404 immediately to prevent these requests from reaching
7
- * React Router and causing unnecessary processing or errors.
8
- */
9
- export declare const UnsupportedAssetsMiddleware: () => Hono.MiddlewareHandler;
10
- //# sourceMappingURL=unsupported-assets.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unsupported-assets.d.ts","sourceRoot":"","sources":["../../../../src/template/server/middleware/unsupported-assets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAK3C;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,QAAO,IAAI,CAAC,iBAYnD,CAAA"}
@@ -1,21 +0,0 @@
1
- import { AppleTouchIcon } from '#lib/apple-touch-icon/index';
2
- import { Favicon } from '#lib/favicon/index';
3
- import { Http } from '@wollybeard/kit';
4
- /**
5
- * Temporary middleware to block unsupported asset requests
6
- *
7
- * TODO: Polen should eventually support favicon and apple-touch-icon generation
8
- * For now, we return 404 immediately to prevent these requests from reaching
9
- * React Router and causing unnecessary processing or errors.
10
- */
11
- export const UnsupportedAssetsMiddleware = () => {
12
- return async (ctx, next) => {
13
- // Block these asset requests until Polen supports them
14
- if (Favicon.fileNamePattern.test(ctx.req.path)
15
- || AppleTouchIcon.fileNamePattern.test(ctx.req.path)) {
16
- return Http.Response.notFound;
17
- }
18
- await next();
19
- };
20
- };
21
- //# sourceMappingURL=unsupported-assets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unsupported-assets.js","sourceRoot":"","sources":["../../../../src/template/server/middleware/unsupported-assets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAA2B,EAAE;IACtE,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,uDAAuD;QACvD,IACE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;eACvC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EACpD,CAAC;YACD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAA;QAC/B,CAAC;QAED,MAAM,IAAI,EAAE,CAAA;IACd,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -1,218 +0,0 @@
1
- /* Code Block Styles */
2
-
3
- /* Base code block container */
4
- .code-block {
5
- position: relative;
6
- margin: 1rem 0;
7
- border-radius: 8px;
8
- overflow: hidden;
9
- font-size: 14px;
10
- line-height: 1.6;
11
- }
12
-
13
- .code-block pre {
14
- margin: 0;
15
- padding: 1rem;
16
- overflow-x: auto;
17
- background: inherit;
18
- }
19
-
20
- .code-block code {
21
- font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Consolas, 'Liberation Mono', Menlo, monospace;
22
- font-variant-ligatures: contextual;
23
- }
24
-
25
- /* Shiki theme switching with CSS variables */
26
- /* Default to light theme */
27
- :root {
28
- color-scheme: light;
29
- }
30
-
31
- /* When dark mode is active */
32
- .dark {
33
- color-scheme: dark;
34
- }
35
-
36
- /* Shiki token colors for light theme (github-light) */
37
- :root {
38
- --shiki-color-text: #24292e;
39
- --shiki-color-background: #f6f8fa;
40
- --shiki-token-constant: #005cc5;
41
- --shiki-token-string: #032f62;
42
- --shiki-token-comment: #6a737d;
43
- --shiki-token-keyword: #d73a49;
44
- --shiki-token-parameter: #e36209;
45
- --shiki-token-function: #6f42c1;
46
- --shiki-token-string-expression: #032f62;
47
- --shiki-token-punctuation: #24292e;
48
- --shiki-token-link: #032f62;
49
- }
50
-
51
- /* Shiki token colors for dark theme (tokyo-night) */
52
- .dark {
53
- --shiki-color-text: #c0caf5;
54
- --shiki-color-background: #1a1b26;
55
- --shiki-token-constant: #ff9e64;
56
- --shiki-token-string: #9ece6a;
57
- --shiki-token-comment: #565f89;
58
- --shiki-token-keyword: #bb9af7;
59
- --shiki-token-parameter: #e0af68;
60
- --shiki-token-function: #7aa2f7;
61
- --shiki-token-string-expression: #9ece6a;
62
- --shiki-token-punctuation: #c0caf5;
63
- --shiki-token-link: #9ece6a;
64
- }
65
-
66
- /* Shiki code blocks */
67
- pre.shiki {
68
- margin: 1rem 0;
69
- padding: 1rem;
70
- border-radius: 8px;
71
- overflow-x: auto;
72
- font-size: 14px;
73
- line-height: 1.6;
74
- background-color: var(--shiki-color-background);
75
- color: var(--shiki-color-text);
76
- }
77
-
78
- pre.shiki code {
79
- font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Consolas, 'Liberation Mono', Menlo, monospace;
80
- font-variant-ligatures: contextual;
81
- }
82
-
83
- /* Line numbers */
84
- .code-block[data-line-numbers="true"] pre {
85
- padding-left: 3.5rem;
86
- position: relative;
87
- }
88
-
89
- .code-block[data-line-numbers="true"] .line {
90
- position: relative;
91
- }
92
-
93
- .code-block[data-line-numbers="true"] .line::before {
94
- content: attr(data-line);
95
- position: absolute;
96
- left: -3rem;
97
- width: 2.5rem;
98
- text-align: right;
99
- color: var(--gray-a6);
100
- user-select: none;
101
- }
102
-
103
- /* Line highlighting */
104
- .code-block .line[data-highlighted="true"] {
105
- background-color: var(--amber-a3);
106
- display: block;
107
- margin: 0 -1rem;
108
- padding: 0 1rem;
109
- }
110
-
111
- /* Diff lines */
112
- .code-block .line[data-diff="+"] {
113
- background-color: var(--green-a3);
114
- display: block;
115
- margin: 0 -1rem;
116
- padding: 0 1rem;
117
- }
118
-
119
- .code-block .line[data-diff="-"] {
120
- background-color: var(--red-a3);
121
- display: block;
122
- margin: 0 -1rem;
123
- padding: 0 1rem;
124
- }
125
-
126
- .code-block .line[data-diff="+"]::before {
127
- content: "+ ";
128
- color: var(--green-11);
129
- font-weight: bold;
130
- }
131
-
132
- .code-block .line[data-diff="-"]::before {
133
- content: "- ";
134
- color: var(--red-11);
135
- font-weight: bold;
136
- }
137
-
138
- /* Focus lines */
139
- .code-block .line:not([data-focus="true"]) {
140
- opacity: 0.5;
141
- filter: grayscale(100%);
142
- transition: opacity 0.2s, filter 0.2s;
143
- }
144
-
145
- .code-block:hover .line:not([data-focus="true"]) {
146
- opacity: 0.8;
147
- filter: grayscale(0%);
148
- }
149
-
150
- /* Copy button */
151
- .code-block-copy {
152
- position: absolute;
153
- top: 0.5rem;
154
- right: 0.5rem;
155
- padding: 0.25rem 0.5rem;
156
- border-radius: 4px;
157
- background: var(--gray-a3);
158
- color: var(--gray-12);
159
- border: 1px solid var(--gray-a5);
160
- cursor: pointer;
161
- font-size: 12px;
162
- transition: all 0.2s;
163
- }
164
-
165
- .code-block-copy:hover {
166
- background: var(--gray-a4);
167
- border-color: var(--gray-a6);
168
- }
169
-
170
- .code-block-copy.copied {
171
- background: var(--green-a3);
172
- border-color: var(--green-a5);
173
- color: var(--green-11);
174
- }
175
-
176
- /* Language badge */
177
- .code-block-lang {
178
- position: absolute;
179
- top: 0;
180
- right: 0;
181
- padding: 0.25rem 0.75rem;
182
- background: var(--gray-a3);
183
- color: var(--gray-11);
184
- font-size: 12px;
185
- font-weight: 500;
186
- border-bottom-left-radius: 4px;
187
- user-select: none;
188
- }
189
-
190
- /* Scrollbar styling */
191
- .code-block pre::-webkit-scrollbar {
192
- height: 8px;
193
- width: 8px;
194
- }
195
-
196
- .code-block pre::-webkit-scrollbar-track {
197
- background: var(--gray-a3);
198
- border-radius: 4px;
199
- }
200
-
201
- .code-block pre::-webkit-scrollbar-thumb {
202
- background: var(--gray-a6);
203
- border-radius: 4px;
204
- }
205
-
206
- .code-block pre::-webkit-scrollbar-thumb:hover {
207
- background: var(--gray-a7);
208
- }
209
-
210
- /* Inline code */
211
- code:not(.code-block code) {
212
- padding: 0.2em 0.4em;
213
- margin: 0;
214
- font-size: 0.85em;
215
- background-color: var(--gray-a3);
216
- border-radius: 4px;
217
- font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Consolas, 'Liberation Mono', Menlo, monospace;
218
- }
@@ -1,6 +0,0 @@
1
- export * from './metadata.ts'
2
- export * from './navbar.ts'
3
- export * from './page.ts'
4
- export * from './scan.ts'
5
- export * from './sidebar.ts'
6
- export * from './utils.ts'
@@ -1,72 +0,0 @@
1
- import { Fs, Path } from '@wollybeard/kit'
2
- import { afterEach, beforeEach, describe, expect, test } from 'vitest'
3
- import { Content } from './$.ts'
4
-
5
- describe('content', () => {
6
- let testDir: string
7
-
8
- beforeEach(async () => {
9
- testDir = await Fs.makeTemporaryDirectory()
10
- })
11
-
12
- afterEach(async () => {
13
- if (testDir && await Fs.exists(testDir)) {
14
- await Fs.remove(testDir)
15
- }
16
- })
17
-
18
- describe('MetadataSchema', () => {
19
- test('validates metadata correctly', () => {
20
- const valid = Content.MetadataSchema.safeParse({
21
- description: 'Test page description',
22
- hidden: true,
23
- })
24
- expect(valid.success).toBe(true)
25
- expect(valid.data).toEqual({
26
- description: 'Test page description',
27
- hidden: true,
28
- })
29
- })
30
-
31
- test('applies default values', () => {
32
- const result = Content.MetadataSchema.safeParse({
33
- description: 'Just a description',
34
- })
35
- expect(result.success).toBe(true)
36
- expect(result.data?.hidden).toBe(false)
37
- })
38
-
39
- test('rejects invalid values', () => {
40
- const result = Content.MetadataSchema.safeParse({
41
- hidden: 'not a boolean',
42
- invalid_field: 123,
43
- })
44
- expect(result.success).toBe(false)
45
- })
46
- })
47
-
48
- describe('scan', () => {
49
- test('scans directory and extracts metadata', async () => {
50
- const filePath = Path.join(testDir, 'page.md')
51
- await Fs.write({
52
- path: filePath,
53
- content: `---
54
- description: Page description
55
- ---
56
- Content`,
57
- })
58
-
59
- const result = await Content.scan({
60
- dir: testDir,
61
- glob: '**/*.md',
62
- })
63
-
64
- expect(result.list).toHaveLength(1)
65
- expect(result.list[0]?.metadata).toEqual({
66
- description: 'Page description',
67
- hidden: false,
68
- })
69
- expect(result.diagnostics).toEqual([])
70
- })
71
- })
72
- })
@@ -1 +0,0 @@
1
- export * as Content from './$$.ts'
@@ -1,11 +0,0 @@
1
- import { z } from 'zod/v4'
2
-
3
- /**
4
- * Schema for validating front matter content
5
- */
6
- export const MetadataSchema = z.object({
7
- description: z.string().optional(),
8
- hidden: z.boolean().default(false),
9
- })
10
-
11
- export type Metadata = z.infer<typeof MetadataSchema>
@@ -1,55 +0,0 @@
1
- import { describe, expect, it } from 'vitest'
2
- import { createNavbar } from './navbar.ts'
3
- import type { Page } from './page.ts'
4
-
5
- const createPage = (path: string[], fileName = 'index', hidden = false): Page => ({
6
- route: {
7
- id: path.join('/'),
8
- parentId: path.length > 1 ? path.slice(0, -1).join('/') : null,
9
- logical: { path },
10
- file: {
11
- path: {
12
- absolute: { root: '/', dir: `/pages/${path.join('/')}`, base: `${fileName}.md`, ext: '.md', name: fileName },
13
- relative: { root: '', dir: path.join('/'), base: `${fileName}.md`, ext: '.md', name: fileName },
14
- },
15
- },
16
- },
17
- metadata: { description: undefined, hidden },
18
- })
19
-
20
- describe('createNavbar', () => {
21
- it('returns empty for empty input', () => {
22
- expect(createNavbar([])).toEqual([])
23
- })
24
-
25
- it('excludes hidden pages', () => {
26
- const pages = [createPage(['visible'], 'index', false), createPage(['hidden'], 'index', true)]
27
- const result = createNavbar(pages)
28
- expect(result).toEqual([{ pathExp: '/visible', title: 'Visible' }])
29
- })
30
-
31
- it('includes directories with index pages', () => {
32
- const pages = [createPage(['guide'], 'index'), createPage(['guide', 'intro'], 'intro')]
33
- const result = createNavbar(pages)
34
- expect(result).toEqual([{ pathExp: '/guide', title: 'Guide' }])
35
- })
36
-
37
- it('excludes directories without index pages', () => {
38
- const pages = [createPage(['guide', 'intro'], 'intro')]
39
- const result = createNavbar(pages)
40
- expect(result).toEqual([])
41
- })
42
-
43
- it('includes single top-level pages', () => {
44
- const pages = [createPage(['about'], 'about')]
45
- const result = createNavbar(pages)
46
- expect(result).toEqual([{ pathExp: '/about', title: 'About' }])
47
- })
48
-
49
- it('sorts results alphabetically', () => {
50
- const pages = [createPage(['zebra'], 'zebra'), createPage(['alpha'], 'alpha')]
51
- const result = createNavbar(pages)
52
- expect(result[0]!.title).toBe('Alpha')
53
- expect(result[1]!.title).toBe('Zebra')
54
- })
55
- })
@@ -1,61 +0,0 @@
1
- import { Str } from '@wollybeard/kit'
2
- import type { Page } from './page.ts'
3
-
4
- export interface NavbarItem {
5
- pathExp: string
6
- title: string
7
- }
8
-
9
- /**
10
- * Generate navbar items from a list of pages
11
- */
12
- export const createNavbar = (pages: Page[]): NavbarItem[] => {
13
- const navbarItems: NavbarItem[] = []
14
-
15
- // Group pages by their top-level directory/segment
16
- const topLevelGroups = new Map<string, Page[]>()
17
-
18
- pages.forEach(page => {
19
- // Skip hidden pages
20
- if (page.metadata.hidden) return
21
-
22
- const firstSegment = page.route.logical.path[0]
23
- if (firstSegment) {
24
- if (!topLevelGroups.has(firstSegment)) {
25
- topLevelGroups.set(firstSegment, [])
26
- }
27
- topLevelGroups.get(firstSegment)!.push(page)
28
- }
29
- })
30
-
31
- // Add each top-level group to navbar
32
- topLevelGroups.forEach((pages, segment) => {
33
- // For directories, check if there's an index page
34
- const indexPage = pages.find(p =>
35
- p.route.logical.path.length === 1
36
- && p.route.file.path.relative.name === 'index'
37
- )
38
-
39
- // For single non-index files at top level
40
- const singlePage = pages.length === 1 && pages[0]!.route.logical.path.length === 1
41
- && pages[0]!.route.file.path.relative.name !== 'index'
42
-
43
- // Include in navbar if:
44
- // 1. It's a directory with an index page, OR
45
- // 2. It's a single top-level page (not index)
46
- if (indexPage || singlePage) {
47
- const title = Str.titlizeSlug(segment)
48
- const pathExp = `/${segment}`
49
-
50
- navbarItems.push({
51
- pathExp,
52
- title,
53
- })
54
- }
55
- })
56
-
57
- // Sort navbar items alphabetically for consistency
58
- navbarItems.sort((a, b) => a.title.localeCompare(b.title))
59
-
60
- return navbarItems
61
- }
@@ -1,12 +0,0 @@
1
- import type { FileRouter } from '#lib/file-router/index'
2
- import type { Metadata } from './metadata.ts'
3
-
4
- export type { Metadata }
5
-
6
- /**
7
- * A route with its associated metadata
8
- */
9
- export interface Page {
10
- route: FileRouter.Route
11
- metadata: Metadata
12
- }
@@ -1,117 +0,0 @@
1
- import { FileRouter } from '#lib/file-router/index'
2
- import { Fs, Path, Tree } from '@wollybeard/kit'
3
- import matter from 'gray-matter'
4
- import { MetadataSchema } from './metadata.ts'
5
- import type { Page } from './page.ts'
6
-
7
- export interface ScanResult {
8
- list: Page[]
9
- tree: Tree.Tree<Page>
10
- diagnostics: FileRouter.Diagnostic[]
11
- }
12
-
13
- /**
14
- * Scan a directory for pages and extract metadata from their front matter
15
- * By default, hidden pages are filtered out from both the pages list and route tree.
16
- */
17
- export const scan = async (options: {
18
- dir: string
19
- glob?: string
20
- /** Include hidden pages in the result (useful for debugging or admin interfaces) */
21
- includeHidden?: boolean
22
- }): Promise<ScanResult> => {
23
- // Scan for routes
24
- const routeScanResult = await FileRouter.scan({
25
- dir: options.dir,
26
- glob: options.glob ?? '**/*.{md,mdx}',
27
- })
28
-
29
- // Create pages with metadata (id/parentId now come from route)
30
- const allPages = await Promise.all(
31
- routeScanResult.routes.map(route => readRoute(route)),
32
- )
33
-
34
- // Apply filtering if needed
35
- const pages = options.includeHidden
36
- ? allPages
37
- : allPages.filter(page => !page.metadata.hidden)
38
-
39
- // Build tree from pages using Tree.fromList
40
- // Transform pages to include id/parentId at the top level for Tree.fromList
41
- const pagesWithIds = pages.map(page => ({
42
- ...page,
43
- id: page.route.id,
44
- parentId: page.route.parentId,
45
- }))
46
-
47
- // Handle cases where there might be multiple root nodes
48
- // If all pages are at root level (no parentId), create a virtual root
49
- const hasMultipleRoots = pagesWithIds.filter(p => !p.parentId).length > 1
50
-
51
- let tree: Tree.Tree<Page>
52
- if (hasMultipleRoots) {
53
- // Create a virtual root node to hold all root-level pages
54
- const virtualRoot: Page & { id: string; parentId: null } = {
55
- route: {
56
- id: '__virtual_root__',
57
- parentId: null,
58
- file: {
59
- path: {
60
- absolute: Path.parse(''),
61
- relative: Path.parse(''),
62
- },
63
- },
64
- logical: {
65
- path: [],
66
- },
67
- },
68
- metadata: { hidden: true },
69
- id: '__virtual_root__',
70
- parentId: null,
71
- }
72
-
73
- // Update pages to have virtual root as parent if they don't have one
74
- const pagesWithVirtualRoot = pagesWithIds.map(page => ({
75
- ...page,
76
- parentId: page.parentId || '__virtual_root__',
77
- }))
78
-
79
- tree = Tree.fromList([virtualRoot, ...pagesWithVirtualRoot])
80
- } else {
81
- tree = Tree.fromList(pagesWithIds)
82
- }
83
-
84
- return {
85
- list: pages,
86
- tree,
87
- diagnostics: routeScanResult.diagnostics,
88
- }
89
- }
90
-
91
- /**
92
- * Read a single route file and extract metadata from its front matter
93
- */
94
- const readRoute = async (route: FileRouter.Route): Promise<Page> => {
95
- const filePath = Path.format(route.file.path.absolute)
96
- const fileContent = await Fs.read(filePath)
97
-
98
- // Empty files still get default metadata (not hidden by default)
99
- // This allows placeholder pages to exist in the navigation
100
- if (!fileContent) {
101
- return { route, metadata: { hidden: false } }
102
- }
103
-
104
- // Parse front matter
105
- const { data } = matter(fileContent)
106
-
107
- // Validate and parse the data
108
- const parsed = MetadataSchema.safeParse(data)
109
-
110
- if (!parsed.success) {
111
- // Log warning but continue with defaults
112
- console.warn(`Invalid front matter in ${filePath}:`, parsed.error.issues)
113
- }
114
-
115
- const metadata = parsed.success ? parsed.data : { hidden: false }
116
- return { route, metadata }
117
- }