@astrojs/starlight 0.41.11 → 0.42.0

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 (402) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +13 -0
  2. package/dist/components/MobileMenuToggle.astro +65 -0
  3. package/{components → dist/components}/PageFrame.astro +32 -8
  4. package/dist/components-internals/Icons.d.ts +415 -0
  5. package/dist/components-internals/Icons.js +140 -0
  6. package/dist/components-internals/SidebarPersistState.d.ts +1 -0
  7. package/dist/components-internals/SidebarPersistState.js +53 -0
  8. package/dist/components-internals/TableOfContents/starlight-toc.d.ts +18 -0
  9. package/dist/components-internals/TableOfContents/starlight-toc.js +88 -0
  10. package/dist/constants.d.ts +4 -0
  11. package/dist/constants.js +4 -0
  12. package/{expressive-code.d.ts → dist/expressive-code.d.ts} +6 -13
  13. package/dist/expressive-code.js +31 -0
  14. package/dist/global.d.ts +62 -0
  15. package/dist/global.js +2 -0
  16. package/dist/index.d.ts +7 -0
  17. package/dist/index.js +109 -0
  18. package/dist/integrations/aside-utils.d.ts +9 -0
  19. package/dist/integrations/aside-utils.js +35 -0
  20. package/dist/integrations/expressive-code/hast.d.ts +1 -0
  21. package/dist/integrations/expressive-code/hast.js +2 -0
  22. package/dist/integrations/expressive-code/index.d.ts +60 -0
  23. package/dist/integrations/expressive-code/index.js +48 -0
  24. package/dist/integrations/expressive-code/preprocessor.d.ts +17 -0
  25. package/dist/integrations/expressive-code/preprocessor.js +76 -0
  26. package/dist/integrations/expressive-code/themes/night-owl-dark.js +4 -0
  27. package/dist/integrations/expressive-code/themes/night-owl-light.js +4 -0
  28. package/dist/integrations/expressive-code/theming.d.ts +16 -0
  29. package/dist/integrations/expressive-code/theming.js +71 -0
  30. package/dist/integrations/expressive-code/translations.d.ts +8 -0
  31. package/dist/integrations/expressive-code/translations.js +26 -0
  32. package/dist/integrations/markdown-icon.d.ts +8 -0
  33. package/dist/integrations/markdown-icon.js +14 -0
  34. package/dist/integrations/markdown-plugins.d.ts +18 -0
  35. package/dist/integrations/markdown-plugins.js +36 -0
  36. package/dist/integrations/markdown-processor.d.ts +29 -0
  37. package/dist/integrations/markdown-processor.js +44 -0
  38. package/dist/integrations/pagefind.d.ts +7 -0
  39. package/dist/integrations/pagefind.js +34 -0
  40. package/dist/integrations/rehype-code-rtl-support.d.ts +21 -0
  41. package/dist/integrations/rehype-code-rtl-support.js +36 -0
  42. package/dist/integrations/rehype-heading-links.d.ts +10 -0
  43. package/dist/integrations/rehype-heading-links.js +57 -0
  44. package/dist/integrations/remark-asides.d.ts +32 -0
  45. package/dist/integrations/remark-asides.js +166 -0
  46. package/dist/integrations/remark-rehype.d.ts +17 -0
  47. package/dist/integrations/remark-rehype.js +51 -0
  48. package/dist/integrations/satteri.d.ts +13 -0
  49. package/dist/integrations/satteri.js +209 -0
  50. package/dist/integrations/shared/absolutePathToLang.d.ts +10 -0
  51. package/dist/integrations/shared/absolutePathToLang.js +13 -0
  52. package/dist/integrations/shared/localeToLang.d.ts +10 -0
  53. package/dist/integrations/shared/localeToLang.js +13 -0
  54. package/dist/integrations/shared/slugToLocale.d.ts +12 -0
  55. package/dist/integrations/shared/slugToLocale.js +15 -0
  56. package/dist/integrations/sitemap.d.ts +12 -0
  57. package/dist/integrations/sitemap.js +19 -0
  58. package/dist/integrations/vite-layer-order.d.ts +15 -0
  59. package/dist/integrations/vite-layer-order.js +56 -0
  60. package/dist/integrations/vite-lazy-barrel-optimization.d.ts +12 -0
  61. package/dist/integrations/vite-lazy-barrel-optimization.js +33 -0
  62. package/dist/integrations/vite-virtual-modules.d.ts +14 -0
  63. package/dist/integrations/vite-virtual-modules.js +108 -0
  64. package/dist/internal.d.ts +3 -0
  65. package/dist/internal.js +3 -0
  66. package/dist/loaders.d.ts +20 -0
  67. package/dist/loaders.js +49 -0
  68. package/dist/locals.d.ts +15 -0
  69. package/dist/locals.js +33 -0
  70. package/dist/package.js +4 -0
  71. package/{props.ts → dist/props.d.ts} +6 -4
  72. package/dist/props.js +1 -0
  73. package/dist/route-data.d.ts +7 -0
  74. package/dist/route-data.js +6 -0
  75. package/dist/schema.d.ts +426 -0
  76. package/dist/schema.js +103 -0
  77. package/dist/schemas/badge.d.ts +86 -0
  78. package/dist/schemas/badge.js +39 -0
  79. package/dist/schemas/components.d.ts +236 -0
  80. package/dist/schemas/components.js +36 -0
  81. package/dist/schemas/expressiveCode.d.ts +7 -0
  82. package/dist/schemas/expressiveCode.js +5 -0
  83. package/dist/schemas/favicon.d.ts +9 -0
  84. package/dist/schemas/favicon.js +32 -0
  85. package/dist/schemas/head.d.ts +33 -0
  86. package/dist/schemas/head.js +41 -0
  87. package/dist/schemas/hero.d.ts +319 -0
  88. package/dist/schemas/hero.js +73 -0
  89. package/dist/schemas/i18n.d.ts +125 -0
  90. package/dist/schemas/i18n.js +76 -0
  91. package/dist/schemas/icon.d.ts +284 -0
  92. package/dist/schemas/icon.js +7 -0
  93. package/dist/schemas/locale.d.ts +20 -0
  94. package/dist/schemas/locale.js +11 -0
  95. package/dist/schemas/logo.d.ts +32 -0
  96. package/dist/schemas/logo.js +14 -0
  97. package/dist/schemas/pagefind.d.ts +166 -0
  98. package/dist/schemas/pagefind.js +31 -0
  99. package/dist/schemas/prevNextLink.d.ts +10 -0
  100. package/dist/schemas/prevNextLink.js +14 -0
  101. package/dist/schemas/sidebar.d.ts +205 -0
  102. package/dist/schemas/sidebar.js +71 -0
  103. package/dist/schemas/site-title.d.ts +7 -0
  104. package/dist/schemas/site-title.js +17 -0
  105. package/dist/schemas/social.d.ts +292 -0
  106. package/dist/schemas/social.js +18 -0
  107. package/dist/schemas/tableOfContents.d.ts +24 -0
  108. package/dist/schemas/tableOfContents.js +16 -0
  109. package/dist/translations/ar.js +36 -0
  110. package/dist/translations/ca.js +46 -0
  111. package/dist/translations/cs.js +46 -0
  112. package/dist/translations/da.js +33 -0
  113. package/dist/translations/de.js +33 -0
  114. package/dist/translations/el.js +33 -0
  115. package/dist/translations/en.js +33 -0
  116. package/dist/translations/es.js +46 -0
  117. package/dist/translations/fa.js +33 -0
  118. package/dist/translations/fi.js +33 -0
  119. package/dist/translations/fr.js +36 -0
  120. package/dist/translations/gl.js +46 -0
  121. package/dist/translations/he.js +33 -0
  122. package/dist/translations/hi.js +36 -0
  123. package/dist/translations/hu.js +46 -0
  124. package/dist/translations/id.js +33 -0
  125. package/dist/translations/index.d.ts +48 -0
  126. package/dist/translations/index.js +75 -0
  127. package/dist/translations/it.js +36 -0
  128. package/dist/translations/ja.js +36 -0
  129. package/dist/translations/ko.js +36 -0
  130. package/dist/translations/lv.js +33 -0
  131. package/dist/translations/nb.js +33 -0
  132. package/dist/translations/nl.js +33 -0
  133. package/dist/translations/pl.js +36 -0
  134. package/dist/translations/pt.js +36 -0
  135. package/dist/translations/ro.js +33 -0
  136. package/dist/translations/ru.js +36 -0
  137. package/dist/translations/sk.js +33 -0
  138. package/dist/translations/sv.js +33 -0
  139. package/dist/translations/th.js +33 -0
  140. package/dist/translations/tr.js +33 -0
  141. package/dist/translations/uk.js +33 -0
  142. package/dist/translations/vi.js +33 -0
  143. package/dist/translations/zh-CN.js +36 -0
  144. package/dist/translations/zh-TW.js +36 -0
  145. package/dist/types.d.ts +4 -0
  146. package/dist/types.js +1 -0
  147. package/{user-components → dist/user-components}/FileTree.astro +1 -1
  148. package/{user-components → dist/user-components}/Steps.astro +1 -1
  149. package/{user-components → dist/user-components}/TabItem.astro +1 -1
  150. package/{user-components → dist/user-components}/Tabs.astro +1 -1
  151. package/dist/user-components/file-tree-icons.d.ts +178 -0
  152. package/dist/user-components/file-tree-icons.js +632 -0
  153. package/dist/user-components/file-tree-processor.d.ts +16 -0
  154. package/dist/user-components/file-tree-processor.js +132 -0
  155. package/dist/user-components/steps-processor.d.ts +10 -0
  156. package/dist/user-components/steps-processor.js +39 -0
  157. package/dist/user-components/tabs-processor.d.ts +23 -0
  158. package/dist/user-components/tabs-processor.js +70 -0
  159. package/dist/utils/base.d.ts +7 -0
  160. package/dist/utils/base.js +15 -0
  161. package/dist/utils/canonical.d.ts +10 -0
  162. package/dist/utils/canonical.js +14 -0
  163. package/dist/utils/collection-fs.d.ts +13 -0
  164. package/dist/utils/collection-fs.js +19 -0
  165. package/{utils/collection.ts → dist/utils/collection.d.ts} +9 -20
  166. package/dist/utils/collection.js +26 -0
  167. package/dist/utils/createPathFormatter.d.ts +9 -0
  168. package/dist/utils/createPathFormatter.js +35 -0
  169. package/dist/utils/createTranslationSystem.d.ts +23 -0
  170. package/dist/utils/createTranslationSystem.js +84 -0
  171. package/dist/utils/error-map.d.ts +23 -0
  172. package/dist/utils/error-map.js +125 -0
  173. package/dist/utils/format-path.d.ts +4 -0
  174. package/dist/utils/format-path.js +9 -0
  175. package/dist/utils/generateToC.d.ts +14 -0
  176. package/dist/utils/generateToC.js +25 -0
  177. package/dist/utils/git.d.ts +12 -0
  178. package/dist/utils/git.js +71 -0
  179. package/dist/utils/gitInlined.d.ts +6 -0
  180. package/dist/utils/gitInlined.js +11 -0
  181. package/dist/utils/head.d.ts +7 -0
  182. package/dist/utils/head.js +233 -0
  183. package/dist/utils/i18n.d.ts +50 -0
  184. package/dist/utils/i18n.js +141 -0
  185. package/dist/utils/localizedUrl.d.ts +8 -0
  186. package/dist/utils/localizedUrl.js +28 -0
  187. package/dist/utils/navigation.d.ts +19 -0
  188. package/dist/utils/navigation.js +353 -0
  189. package/dist/utils/path.d.ts +21 -0
  190. package/dist/utils/path.js +51 -0
  191. package/dist/utils/plugins.d.ts +721 -0
  192. package/dist/utils/plugins.js +174 -0
  193. package/dist/utils/routing/data.d.ts +20 -0
  194. package/dist/utils/routing/data.js +127 -0
  195. package/dist/utils/routing/index.d.ts +21 -0
  196. package/dist/utils/routing/index.js +106 -0
  197. package/dist/utils/routing/middleware.d.ts +11 -0
  198. package/dist/utils/routing/middleware.js +65 -0
  199. package/dist/utils/routing/types.d.ts +93 -0
  200. package/dist/utils/routing/types.js +1 -0
  201. package/dist/utils/slugs.d.ts +45 -0
  202. package/dist/utils/slugs.js +104 -0
  203. package/dist/utils/starlight-page.d.ts +36 -0
  204. package/dist/utils/starlight-page.js +120 -0
  205. package/dist/utils/translations-fs.d.ts +15 -0
  206. package/dist/utils/translations-fs.js +39 -0
  207. package/dist/utils/translations.d.ts +20 -0
  208. package/dist/utils/translations.js +29 -0
  209. package/dist/utils/types.d.ts +5 -0
  210. package/dist/utils/types.js +1 -0
  211. package/dist/utils/url.d.ts +7 -0
  212. package/{utils/url.ts → dist/utils/url.js} +5 -4
  213. package/dist/utils/user-config.d.ts +2055 -0
  214. package/dist/utils/user-config.js +136 -0
  215. package/dist/utils/validateLogoImports.d.ts +5 -0
  216. package/dist/utils/validateLogoImports.js +16 -0
  217. package/dist/utils/zodDeepMerge.d.ts +16 -0
  218. package/dist/utils/zodDeepMerge.js +53 -0
  219. package/package.json +60 -34
  220. package/CHANGELOG.md +0 -3051
  221. package/components/MobileMenuToggle.astro +0 -114
  222. package/components-internals/Icons.ts +0 -248
  223. package/components-internals/SidebarPersistState.ts +0 -71
  224. package/components-internals/TableOfContents/starlight-toc.ts +0 -127
  225. package/constants.ts +0 -4
  226. package/expressive-code.mjs +0 -23
  227. package/global.d.ts +0 -11
  228. package/i18n.d.ts +0 -18
  229. package/index.ts +0 -200
  230. package/integrations/aside-utils.ts +0 -41
  231. package/integrations/expressive-code/hast.d.ts +0 -5
  232. package/integrations/expressive-code/hast.mjs +0 -9
  233. package/integrations/expressive-code/index.ts +0 -125
  234. package/integrations/expressive-code/preprocessor.ts +0 -126
  235. package/integrations/expressive-code/themes/night-owl-dark.jsonc +0 -1796
  236. package/integrations/expressive-code/themes/night-owl-light.jsonc +0 -1695
  237. package/integrations/expressive-code/theming.ts +0 -105
  238. package/integrations/expressive-code/translations.ts +0 -36
  239. package/integrations/markdown-icon.ts +0 -13
  240. package/integrations/markdown-plugins.ts +0 -71
  241. package/integrations/markdown-processor.ts +0 -64
  242. package/integrations/pagefind.ts +0 -60
  243. package/integrations/rehype-code-rtl-support.ts +0 -37
  244. package/integrations/rehype-heading-links.ts +0 -79
  245. package/integrations/remark-asides.ts +0 -219
  246. package/integrations/remark-rehype.ts +0 -87
  247. package/integrations/satteri.ts +0 -265
  248. package/integrations/shared/absolutePathToLang.ts +0 -26
  249. package/integrations/shared/localeToLang.ts +0 -15
  250. package/integrations/shared/slugToLocale.ts +0 -18
  251. package/integrations/sitemap.ts +0 -23
  252. package/integrations/vite-layer-order.ts +0 -69
  253. package/integrations/vite-lazy-barrel-optimization.ts +0 -40
  254. package/integrations/vite-virtual-modules.ts +0 -175
  255. package/internal.ts +0 -6
  256. package/loaders.ts +0 -63
  257. package/locals.d.ts +0 -43
  258. package/locals.ts +0 -43
  259. package/route-data.ts +0 -11
  260. package/schema.ts +0 -167
  261. package/schemas/badge.ts +0 -40
  262. package/schemas/components.ts +0 -265
  263. package/schemas/expressiveCode.ts +0 -12
  264. package/schemas/favicon.ts +0 -40
  265. package/schemas/head.ts +0 -50
  266. package/schemas/hero.ts +0 -69
  267. package/schemas/i18n.ts +0 -244
  268. package/schemas/icon.ts +0 -7
  269. package/schemas/logo.ts +0 -28
  270. package/schemas/pagefind.ts +0 -128
  271. package/schemas/prevNextLink.ts +0 -18
  272. package/schemas/sidebar.ts +0 -163
  273. package/schemas/site-title.ts +0 -20
  274. package/schemas/social.ts +0 -23
  275. package/schemas/tableOfContents.ts +0 -21
  276. package/translations/README.md +0 -14
  277. package/translations/ar.json +0 -33
  278. package/translations/ca.json +0 -43
  279. package/translations/cs.json +0 -43
  280. package/translations/da.json +0 -30
  281. package/translations/de.json +0 -30
  282. package/translations/el.json +0 -30
  283. package/translations/en.json +0 -30
  284. package/translations/es.json +0 -43
  285. package/translations/fa.json +0 -30
  286. package/translations/fi.json +0 -30
  287. package/translations/fr.json +0 -33
  288. package/translations/gl.json +0 -43
  289. package/translations/he.json +0 -30
  290. package/translations/hi.json +0 -33
  291. package/translations/hu.json +0 -43
  292. package/translations/id.json +0 -30
  293. package/translations/index.ts +0 -76
  294. package/translations/it.json +0 -33
  295. package/translations/ja.json +0 -33
  296. package/translations/ko.json +0 -33
  297. package/translations/lv.json +0 -30
  298. package/translations/nb.json +0 -30
  299. package/translations/nl.json +0 -30
  300. package/translations/pl.json +0 -33
  301. package/translations/pt.json +0 -33
  302. package/translations/ro.json +0 -30
  303. package/translations/ru.json +0 -33
  304. package/translations/sk.json +0 -30
  305. package/translations/sv.json +0 -30
  306. package/translations/th.json +0 -30
  307. package/translations/tr.json +0 -30
  308. package/translations/uk.json +0 -30
  309. package/translations/vi.json +0 -30
  310. package/translations/zh-CN.json +0 -33
  311. package/translations/zh-TW.json +0 -33
  312. package/types.ts +0 -7
  313. package/user-components/file-tree-icons.ts +0 -782
  314. package/user-components/rehype-file-tree.ts +0 -251
  315. package/user-components/rehype-steps.ts +0 -85
  316. package/user-components/rehype-tabs.ts +0 -121
  317. package/utils/base.ts +0 -15
  318. package/utils/canonical.ts +0 -19
  319. package/utils/collection-fs.ts +0 -20
  320. package/utils/createPathFormatter.ts +0 -60
  321. package/utils/createTranslationSystem.ts +0 -137
  322. package/utils/error-map.ts +0 -222
  323. package/utils/format-path.ts +0 -7
  324. package/utils/generateToC.ts +0 -33
  325. package/utils/git.ts +0 -121
  326. package/utils/gitInlined.ts +0 -20
  327. package/utils/head.ts +0 -235
  328. package/utils/i18n.ts +0 -221
  329. package/utils/localizedUrl.ts +0 -51
  330. package/utils/navigation.ts +0 -574
  331. package/utils/path.ts +0 -58
  332. package/utils/plugins.ts +0 -498
  333. package/utils/routing/data.ts +0 -154
  334. package/utils/routing/index.ts +0 -139
  335. package/utils/routing/middleware.ts +0 -81
  336. package/utils/routing/types.ts +0 -101
  337. package/utils/slugs.ts +0 -119
  338. package/utils/starlight-page.ts +0 -205
  339. package/utils/translations-fs.ts +0 -54
  340. package/utils/translations.ts +0 -57
  341. package/utils/types.ts +0 -15
  342. package/utils/user-config.ts +0 -348
  343. package/utils/validateLogoImports.ts +0 -21
  344. package/utils/zodDeepMerge.ts +0 -144
  345. package/virtual-internal.d.ts +0 -149
  346. package/virtual.d.ts +0 -27
  347. /package/{components → dist/components}/AnchorHeading.astro +0 -0
  348. /package/{components → dist/components}/Banner.astro +0 -0
  349. /package/{components → dist/components}/ContentNotice.astro +0 -0
  350. /package/{components → dist/components}/ContentPanel.astro +0 -0
  351. /package/{components → dist/components}/DraftContentNotice.astro +0 -0
  352. /package/{components → dist/components}/EditLink.astro +0 -0
  353. /package/{components → dist/components}/FallbackContentNotice.astro +0 -0
  354. /package/{components → dist/components}/Footer.astro +0 -0
  355. /package/{components → dist/components}/Head.astro +0 -0
  356. /package/{components → dist/components}/Header.astro +0 -0
  357. /package/{components → dist/components}/Hero.astro +0 -0
  358. /package/{components → dist/components}/LanguageSelect.astro +0 -0
  359. /package/{components → dist/components}/LastUpdated.astro +0 -0
  360. /package/{components → dist/components}/MarkdownContent.astro +0 -0
  361. /package/{components → dist/components}/MobileMenuFooter.astro +0 -0
  362. /package/{components → dist/components}/MobileTableOfContents.astro +0 -0
  363. /package/{components → dist/components}/Page.astro +0 -0
  364. /package/{components → dist/components}/PageSidebar.astro +0 -0
  365. /package/{components → dist/components}/PageTitle.astro +0 -0
  366. /package/{components → dist/components}/Pagination.astro +0 -0
  367. /package/{components → dist/components}/Search.astro +0 -0
  368. /package/{components → dist/components}/Select.astro +0 -0
  369. /package/{components → dist/components}/Sidebar.astro +0 -0
  370. /package/{components → dist/components}/SidebarPersister.astro +0 -0
  371. /package/{components → dist/components}/SidebarRestorePoint.astro +0 -0
  372. /package/{components → dist/components}/SidebarSublist.astro +0 -0
  373. /package/{components → dist/components}/SiteTitle.astro +0 -0
  374. /package/{components → dist/components}/SkipLink.astro +0 -0
  375. /package/{components → dist/components}/SocialIcons.astro +0 -0
  376. /package/{components → dist/components}/StarlightPage.astro +0 -0
  377. /package/{components → dist/components}/TableOfContents.astro +0 -0
  378. /package/{components → dist/components}/ThemeProvider.astro +0 -0
  379. /package/{components → dist/components}/ThemeSelect.astro +0 -0
  380. /package/{components → dist/components}/TwoColumnContent.astro +0 -0
  381. /package/{components-internals → dist/components-internals}/TableOfContents/TableOfContentsList.astro +0 -0
  382. /package/{components.ts → dist/components.ts} +0 -0
  383. /package/{routes → dist/routes}/common.astro +0 -0
  384. /package/{routes → dist/routes}/ssr/404.astro +0 -0
  385. /package/{routes → dist/routes}/ssr/index.astro +0 -0
  386. /package/{routes → dist/routes}/static/404.astro +0 -0
  387. /package/{routes → dist/routes}/static/index.astro +0 -0
  388. /package/{style → dist/style}/anchor-links.css +0 -0
  389. /package/{style → dist/style}/asides.css +0 -0
  390. /package/{style → dist/style}/layers.css +0 -0
  391. /package/{style → dist/style}/markdown.css +0 -0
  392. /package/{style → dist/style}/print.css +0 -0
  393. /package/{style → dist/style}/props.css +0 -0
  394. /package/{style → dist/style}/reset.css +0 -0
  395. /package/{style → dist/style}/util.css +0 -0
  396. /package/{user-components → dist/user-components}/Aside.astro +0 -0
  397. /package/{user-components → dist/user-components}/Badge.astro +0 -0
  398. /package/{user-components → dist/user-components}/Card.astro +0 -0
  399. /package/{user-components → dist/user-components}/CardGrid.astro +0 -0
  400. /package/{user-components → dist/user-components}/Icon.astro +0 -0
  401. /package/{user-components → dist/user-components}/LinkButton.astro +0 -0
  402. /package/{user-components → dist/user-components}/LinkCard.astro +0 -0
@@ -0,0 +1,56 @@
1
+ import MagicString from "magic-string";
2
+ //#region src/integrations/vite-layer-order.ts
3
+ const pluginTransformIdIncludeFilter = /\.astro$/;
4
+ const pluginTransformIdExcludeFilter = /@astrojs\/starlight\/components\/StarlightPage\.astro$/;
5
+ const pluginTransformCodeFilter = "StarlightPage.astro";
6
+ const starlightPageImportSource = "@astrojs/starlight/components/StarlightPage.astro";
7
+ /**
8
+ * Vite plugin that ensures the StarlightPage component is always imported first when imported in
9
+ * an Astro file.
10
+ *
11
+ * This is necessary to ensure a predictable CSS layer order which is defined by the `<Page />`
12
+ * imported by the `<StarlightPage />` component. If a user imports any other component using
13
+ * cascade layers before the `<StarlightPage />` component, it will result in undesired layers
14
+ * being created before we explicitly set the expected layer order.
15
+ */
16
+ function vitePluginStarlightCssLayerOrder() {
17
+ return {
18
+ name: "vite-plugin-starlight-css-layer-order",
19
+ enforce: "pre",
20
+ transform: {
21
+ filter: {
22
+ id: {
23
+ include: pluginTransformIdIncludeFilter,
24
+ exclude: pluginTransformIdExcludeFilter
25
+ },
26
+ code: pluginTransformCodeFilter
27
+ },
28
+ handler(code, id) {
29
+ let ast;
30
+ try {
31
+ ast = this.parse(code);
32
+ } catch {
33
+ return;
34
+ }
35
+ let hasStarlightPageImport = false;
36
+ for (const node of ast.body) {
37
+ if (node.type !== "ImportDeclaration") continue;
38
+ if (node.source.value !== starlightPageImportSource) continue;
39
+ if (!node.specifiers.find((specifier) => specifier.type === "ImportDefaultSpecifier")) continue;
40
+ hasStarlightPageImport = true;
41
+ break;
42
+ }
43
+ if (!hasStarlightPageImport) return;
44
+ const filename = id.replace(/\\/g, "/");
45
+ const ms = new MagicString(code, { filename });
46
+ ms.prepend(`import "${starlightPageImportSource}";\n`);
47
+ return {
48
+ code: ms.toString(),
49
+ map: ms.generateMap({ hires: "boundary" })
50
+ };
51
+ }
52
+ }
53
+ };
54
+ }
55
+ //#endregion
56
+ export { vitePluginStarlightCssLayerOrder };
@@ -0,0 +1,12 @@
1
+ import { ViteUserConfig } from "astro";
2
+ //#region src/integrations/vite-lazy-barrel-optimization.d.ts
3
+ /**
4
+ * Vite plugin that marks the Starlight components barrel file as having no side effects so that
5
+ * lazy barrel optimization can be applied to it.
6
+ *
7
+ * @see https://rolldown.rs/in-depth/lazy-barrel-optimization
8
+ */
9
+ declare function vitePluginStarlightLazyBarrelOptimization(): VitePlugin;
10
+ type VitePlugin = NonNullable<ViteUserConfig['plugins']>[number];
11
+ //#endregion
12
+ export { vitePluginStarlightLazyBarrelOptimization };
@@ -0,0 +1,33 @@
1
+ import { fileURLToPath } from "node:url";
2
+ //#region src/integrations/vite-lazy-barrel-optimization.ts
3
+ const componentsBarrelIdFilter = /[\\/]components\.ts(?:\?.*)?$/;
4
+ const backSlashRegex = /\\/g;
5
+ const queryStringRegex = /\?.*$/;
6
+ const starlightComponentsBarrelId = normalizeId(fileURLToPath(new URL("../components.ts", import.meta.url)));
7
+ /**
8
+ * Vite plugin that marks the Starlight components barrel file as having no side effects so that
9
+ * lazy barrel optimization can be applied to it.
10
+ *
11
+ * @see https://rolldown.rs/in-depth/lazy-barrel-optimization
12
+ */
13
+ function vitePluginStarlightLazyBarrelOptimization() {
14
+ return {
15
+ name: "vite-plugin-starlight-lazy-barrel-optimization",
16
+ enforce: "pre",
17
+ transform: {
18
+ filter: { id: componentsBarrelIdFilter },
19
+ handler(code, id) {
20
+ if (normalizeId(id) !== starlightComponentsBarrelId) return;
21
+ return {
22
+ code,
23
+ moduleSideEffects: false
24
+ };
25
+ }
26
+ }
27
+ };
28
+ }
29
+ function normalizeId(id) {
30
+ return id.replace(backSlashRegex, "/").replace(queryStringRegex, "");
31
+ }
32
+ //#endregion
33
+ export { vitePluginStarlightLazyBarrelOptimization };
@@ -0,0 +1,14 @@
1
+ import { StarlightConfig } from "../utils/user-config.js";
2
+ import { PluginTranslations } from "../utils/plugins.js";
3
+ import { AstroConfig, HookParameters, ViteUserConfig } from "astro";
4
+ //#region src/integrations/vite-virtual-modules.d.ts
5
+ /** Vite plugin that exposes Starlight user config and project context via virtual modules. */
6
+ declare function vitePluginStarlightVirtualModules({ command, isNodeCompatibleEnv }: {
7
+ command: HookParameters<'astro:config:setup'>['command'];
8
+ isNodeCompatibleEnv: boolean;
9
+ }, opts: StarlightConfig, { build, legacy, root, srcDir, trailingSlash }: Pick<AstroConfig, 'root' | 'srcDir' | 'trailingSlash'> & {
10
+ build: Pick<AstroConfig['build'], 'format'>;
11
+ legacy: Pick<AstroConfig['legacy'], 'collectionsBackwardsCompat'>;
12
+ }, pluginTranslations: PluginTranslations): NonNullable<ViteUserConfig['plugins']>[number];
13
+ //#endregion
14
+ export { vitePluginStarlightVirtualModules };
@@ -0,0 +1,108 @@
1
+ import { resolveCollectionPath } from "../utils/collection-fs.js";
2
+ import { getAllNewestCommitDate } from "../utils/git.js";
3
+ import { fileURLToPath } from "node:url";
4
+ import { resolve } from "node:path";
5
+ import { existsSync } from "node:fs";
6
+ //#region src/integrations/vite-virtual-modules.ts
7
+ const pluginResolveIdIdFilter = /^virtual:starlight\//;
8
+ const pluginLoadIdFilter = /^\x00virtual:starlight\//;
9
+ function resolveVirtualModuleId(id) {
10
+ return `\0${id}`;
11
+ }
12
+ /** Vite plugin that exposes Starlight user config and project context via virtual modules. */
13
+ function vitePluginStarlightVirtualModules({ command, isNodeCompatibleEnv }, opts, { build, legacy, root, srcDir, trailingSlash }, pluginTranslations) {
14
+ /**
15
+ * Resolves module IDs to a usable format:
16
+ * - Relative paths (e.g. `'./module.js'`) are resolved against `base` and formatted as an absolute path.
17
+ * - Package identifiers (e.g. `'module'`) are returned unchanged.
18
+ *
19
+ * By default, `base` is the project root directory.
20
+ */
21
+ const resolveId = (id, base = root) => JSON.stringify(id.startsWith(".") ? resolve(fileURLToPath(base), id) : id);
22
+ /**
23
+ * Resolves a path to a Starlight file relative to this file.
24
+ * When used with TypeScript files, makes sure to not include the `.ts` extension to ensure
25
+ * proper resolution when transpiled to JavaScript.
26
+ * @example
27
+ * resolveLocalPath('../utils/git');
28
+ * // => '"/users/houston/docs/node_modules/@astrojs/starlight/utils/git"'
29
+ * @example
30
+ * resolveLocalPath('../style/global.css');
31
+ * // => '"/users/houston/docs/node_modules/@astrojs/starlight/style/global.css"'
32
+ */
33
+ const resolveLocalPath = (path) => JSON.stringify(fileURLToPath(new URL(path, import.meta.url)));
34
+ const rootPath = fileURLToPath(root);
35
+ const docsPath = resolveCollectionPath("docs", srcDir);
36
+ let collectionConfigImportPath = resolve(fileURLToPath(srcDir), "./content.config.ts");
37
+ if (legacy.collectionsBackwardsCompat && !existsSync(collectionConfigImportPath)) collectionConfigImportPath = resolve(fileURLToPath(srcDir), "./content/config.ts");
38
+ const virtualComponentModules = Object.fromEntries(Object.entries(opts.components).map(([name, path]) => [`virtual:starlight/components/${name}`, `export { default } from ${resolveId(path)};`]));
39
+ /** Map of virtual module names to their code contents as strings. */
40
+ const modules = {
41
+ "virtual:starlight/user-config": `export default ${JSON.stringify(opts)}`,
42
+ "virtual:starlight/project-context": `export default ${JSON.stringify({
43
+ build: { format: build.format },
44
+ root,
45
+ srcDir,
46
+ trailingSlash
47
+ })}`,
48
+ "virtual:starlight/git-info": (command !== "build" && isNodeCompatibleEnv ? `import { makeAPI } from ${resolveLocalPath("../utils/git")};const api = makeAPI(${JSON.stringify(rootPath)});` : `import { makeAPI } from ${resolveLocalPath("../utils/gitInlined")};const api = makeAPI(${JSON.stringify(getAllNewestCommitDate(rootPath, docsPath))});`) + "export const getNewestCommitDate = api.getNewestCommitDate;",
49
+ /**
50
+ * Module containing styles for features that can be toggled on or off such as heading anchor links.
51
+ */
52
+ "virtual:starlight/optional-css": opts.markdown.headingLinks ? `import ${resolveLocalPath("../style/anchor-links.css")};` : "",
53
+ /**
54
+ * Module containing imports of user-specified custom CSS files.
55
+ */
56
+ "virtual:starlight/user-css": opts.customCss.map((id) => `import ${resolveId(id)};`).join(""),
57
+ "virtual:starlight/user-images": opts.logo ? "src" in opts.logo ? `import src from ${resolveId(opts.logo.src)}; export const logos = { dark: src, light: src };` : `import dark from ${resolveId(opts.logo.dark)}; import light from ${resolveId(opts.logo.light)}; export const logos = { dark, light };` : "export const logos = {};",
58
+ "virtual:starlight/collection-config": `let userCollections;
59
+ try {
60
+ userCollections = (await import(${JSON.stringify(collectionConfigImportPath)})).collections;
61
+ } catch {}
62
+ export const collections = userCollections;`,
63
+ "virtual:starlight/plugin-translations": `export default ${JSON.stringify(pluginTranslations)}`,
64
+ /**
65
+ * Exports an array of route middleware functions.
66
+ * For example, might generate a module that looks like:
67
+ *
68
+ * ```js
69
+ * import { onRequest as routeMiddleware0 } from "/users/houston/docs/src/middleware";
70
+ * import { onRequest as routeMiddleware1 } from "@houston-inc/plugin/middleware";
71
+ *
72
+ * export const routeMiddleware = [
73
+ * routeMiddleware0,
74
+ * routeMiddleware1,
75
+ * ];
76
+ * ```
77
+ */
78
+ "virtual:starlight/route-middleware": opts.routeMiddleware.reduce(([imports, entries], id, index) => {
79
+ const importName = `routeMiddleware${index}`;
80
+ imports += `import { onRequest as ${importName} } from ${resolveId(id)};\n`;
81
+ entries += `\t${importName},\n`;
82
+ return [imports, entries];
83
+ }, ["", "export const routeMiddleware = [\n"]).join("\n") + "];",
84
+ /** Map of modules exporting Starlight’s templating components. */
85
+ "virtual:starlight/pagefind-config": `export const pagefindUserConfig = ${JSON.stringify(opts.pagefind || {})}`,
86
+ ...virtualComponentModules
87
+ };
88
+ /** Mapping names prefixed with `\0` to their original form. */
89
+ const resolutionMap = Object.fromEntries(Object.keys(modules).map((key) => [resolveVirtualModuleId(key), key]));
90
+ return {
91
+ name: "vite-plugin-starlight-user-config",
92
+ resolveId: {
93
+ filter: { id: pluginResolveIdIdFilter },
94
+ handler(id) {
95
+ if (id in modules) return resolveVirtualModuleId(id);
96
+ }
97
+ },
98
+ load: {
99
+ filter: { id: pluginLoadIdFilter },
100
+ handler(id) {
101
+ const resolution = resolutionMap[id];
102
+ if (resolution) return modules[resolution];
103
+ }
104
+ }
105
+ };
106
+ }
107
+ //#endregion
108
+ export { vitePluginStarlightVirtualModules };
@@ -0,0 +1,3 @@
1
+ import { useTranslations } from "./utils/translations.js";
2
+ import { getStarlightEcConfigPreprocessor } from "./integrations/expressive-code/preprocessor.js";
3
+ export { getStarlightEcConfigPreprocessor, useTranslations };
@@ -0,0 +1,3 @@
1
+ import { getStarlightEcConfigPreprocessor } from "./integrations/expressive-code/preprocessor.js";
2
+ import { useTranslations } from "./utils/translations.js";
3
+ export { getStarlightEcConfigPreprocessor, useTranslations };
@@ -0,0 +1,20 @@
1
+ import { Loader, glob } from "astro/loaders";
2
+ //#region src/loaders.d.ts
3
+ type GlobOptions = Parameters<typeof glob>[0];
4
+ type GenerateIdFunction = NonNullable<GlobOptions['generateId']>;
5
+ /**
6
+ * Loads content files from the `src/content/docs/` directory, ignoring filenames starting with `_`.
7
+ */
8
+ declare function docsLoader({ generateId }?: {
9
+ /**
10
+ * Function that generates an ID for an entry. Default implementation generates a slug from the entry path.
11
+ * @returns The ID of the entry. Must be unique per collection.
12
+ **/
13
+ generateId?: GenerateIdFunction;
14
+ }): Loader;
15
+ /**
16
+ * Loads data files from the `src/content/i18n/` directory, ignoring filenames starting with `_`.
17
+ */
18
+ declare function i18nLoader(): Loader;
19
+ //#endregion
20
+ export { docsLoader, i18nLoader };
@@ -0,0 +1,49 @@
1
+ import { getCollectionPathFromRoot } from "./utils/collection.js";
2
+ import { glob } from "astro/loaders";
3
+ //#region src/loaders.ts
4
+ const docsExtensions = [
5
+ "markdown",
6
+ "mdown",
7
+ "mkdn",
8
+ "mkd",
9
+ "mdwn",
10
+ "md",
11
+ "mdx"
12
+ ];
13
+ const i18nExtensions = [
14
+ "json",
15
+ "yml",
16
+ "yaml"
17
+ ];
18
+ /**
19
+ * Loads content files from the `src/content/docs/` directory, ignoring filenames starting with `_`.
20
+ */
21
+ function docsLoader({ generateId } = {}) {
22
+ return {
23
+ name: "starlight-docs-loader",
24
+ load: createGlobLoadFn("docs", generateId)
25
+ };
26
+ }
27
+ /**
28
+ * Loads data files from the `src/content/i18n/` directory, ignoring filenames starting with `_`.
29
+ */
30
+ function i18nLoader() {
31
+ return {
32
+ name: "starlight-i18n-loader",
33
+ load: createGlobLoadFn("i18n")
34
+ };
35
+ }
36
+ function createGlobLoadFn(collection, generateId) {
37
+ return (context) => {
38
+ const extensions = collection === "docs" ? docsExtensions : i18nExtensions;
39
+ if (collection === "docs" && context.config.integrations.find(({ name }) => name === "@astrojs/markdoc")) extensions.push("mdoc");
40
+ const options = {
41
+ base: getCollectionPathFromRoot(collection, context.config),
42
+ pattern: `**/[^_]*.{${extensions.join(",")}}`
43
+ };
44
+ if (generateId) options.generateId = generateId;
45
+ return glob(options).load(context);
46
+ };
47
+ }
48
+ //#endregion
49
+ export { docsLoader, i18nLoader };
@@ -0,0 +1,15 @@
1
+ import { APIContext } from "astro";
2
+ //#region src/locals.d.ts
3
+ declare const onRequest: any;
4
+ /**
5
+ * Sets up a `starlightRoute` property on locals. Initially, this will throw an error if accessed.
6
+ * When rendering, Starlight’s routes set `starlightRoute` with the resolved route data object for
7
+ * the current page.
8
+ *
9
+ * This ensures Starlight components can easily access `starlightRoute` without needing type guards,
10
+ * we can throw a helpful message if `starlightRoute` is accessed on non-Starlight pages, and we
11
+ * avoid generating route data in this middleware which also runs for non-Starlight route.
12
+ */
13
+ declare function initializeStarlightRoute(context: APIContext): void;
14
+ //#endregion
15
+ export { initializeStarlightRoute, onRequest };
package/dist/locals.js ADDED
@@ -0,0 +1,33 @@
1
+ import { useTranslations } from "./utils/translations.js";
2
+ import { AstroError } from "astro/errors";
3
+ import { defineMiddleware } from "astro:middleware";
4
+ //#region src/locals.ts
5
+ const onRequest = defineMiddleware(async (context, next) => {
6
+ context.locals.t = useTranslations(context.currentLocale);
7
+ initializeStarlightRoute(context);
8
+ return next();
9
+ });
10
+ /**
11
+ * Sets up a `starlightRoute` property on locals. Initially, this will throw an error if accessed.
12
+ * When rendering, Starlight’s routes set `starlightRoute` with the resolved route data object for
13
+ * the current page.
14
+ *
15
+ * This ensures Starlight components can easily access `starlightRoute` without needing type guards,
16
+ * we can throw a helpful message if `starlightRoute` is accessed on non-Starlight pages, and we
17
+ * avoid generating route data in this middleware which also runs for non-Starlight route.
18
+ */
19
+ function initializeStarlightRoute(context) {
20
+ if ("starlightRoute" in context.locals) return;
21
+ const state = { routeData: void 0 };
22
+ Object.defineProperty(context.locals, "starlightRoute", {
23
+ get() {
24
+ if (!state.routeData) throw new AstroError("`locals.starlightRoute` is not defined", "This usually means a component that accesses `locals.starlightRoute` is being rendered outside of a Starlight page, which is not supported.\n\nIf this is a component you authored, you can do one of the following:\n\n1. Avoid using this component in non-Starlight pages.\n2. Wrap the code that reads `locals.starlightRoute` in a `try/catch` block and handle the cases where `starlightRoute` is not available.\n\nIf this is a Starlight built-in or third-party component, you may need to report a bug or avoid this use of the component.");
25
+ return state.routeData;
26
+ },
27
+ set(routeData) {
28
+ state.routeData = routeData;
29
+ }
30
+ });
31
+ }
32
+ //#endregion
33
+ export { initializeStarlightRoute, onRequest };
@@ -0,0 +1,4 @@
1
+ //#region package.json
2
+ var version = "0.42.0";
3
+ //#endregion
4
+ export { version };
@@ -1,6 +1,6 @@
1
- import type { StarlightRouteData } from './utils/routing/types';
2
- export type { StarlightPageProps } from './utils/starlight-page';
3
-
1
+ import { StarlightRouteData } from "./utils/routing/types.js";
2
+ import { StarlightPageProps } from "./utils/starlight-page.js";
3
+ //#region src/props.d.ts
4
4
  /**
5
5
  * @deprecated The `Props` type is deprecated. If updating an override to use
6
6
  * `Astro.locals.starlightRoute` instead of `Astro.props`, import the new `StarlightRouteData`
@@ -11,4 +11,6 @@ export type { StarlightPageProps } from './utils/starlight-page';
11
11
  * ---
12
12
  * ```
13
13
  */
14
- export type Props = StarlightRouteData;
14
+ type Props = StarlightRouteData;
15
+ //#endregion
16
+ export { Props, type StarlightPageProps };
package/dist/props.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import { StarlightRouteData } from "./utils/routing/types.js";
2
+ import { APIContext } from "astro";
3
+ //#region src/route-data.d.ts
4
+ type RouteMiddlewareHandler = (context: APIContext, next: () => Promise<void>) => void | Promise<void>;
5
+ declare function defineRouteMiddleware(fn: RouteMiddlewareHandler): RouteMiddlewareHandler;
6
+ //#endregion
7
+ export { RouteMiddlewareHandler, type StarlightRouteData, defineRouteMiddleware };
@@ -0,0 +1,6 @@
1
+ //#region src/route-data.ts
2
+ function defineRouteMiddleware(fn) {
3
+ return fn;
4
+ }
5
+ //#endregion
6
+ export { defineRouteMiddleware };