@astrojs/starlight 0.41.10 → 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/{style → dist/style}/anchor-links.css +13 -1
  110. package/dist/translations/ar.js +36 -0
  111. package/dist/translations/ca.js +46 -0
  112. package/dist/translations/cs.js +46 -0
  113. package/dist/translations/da.js +33 -0
  114. package/dist/translations/de.js +33 -0
  115. package/dist/translations/el.js +33 -0
  116. package/dist/translations/en.js +33 -0
  117. package/dist/translations/es.js +46 -0
  118. package/dist/translations/fa.js +33 -0
  119. package/dist/translations/fi.js +33 -0
  120. package/dist/translations/fr.js +36 -0
  121. package/dist/translations/gl.js +46 -0
  122. package/dist/translations/he.js +33 -0
  123. package/dist/translations/hi.js +36 -0
  124. package/dist/translations/hu.js +46 -0
  125. package/dist/translations/id.js +33 -0
  126. package/dist/translations/index.d.ts +48 -0
  127. package/dist/translations/index.js +75 -0
  128. package/dist/translations/it.js +36 -0
  129. package/dist/translations/ja.js +36 -0
  130. package/dist/translations/ko.js +36 -0
  131. package/dist/translations/lv.js +33 -0
  132. package/dist/translations/nb.js +33 -0
  133. package/dist/translations/nl.js +33 -0
  134. package/dist/translations/pl.js +36 -0
  135. package/dist/translations/pt.js +36 -0
  136. package/dist/translations/ro.js +33 -0
  137. package/dist/translations/ru.js +36 -0
  138. package/dist/translations/sk.js +33 -0
  139. package/dist/translations/sv.js +33 -0
  140. package/dist/translations/th.js +33 -0
  141. package/dist/translations/tr.js +33 -0
  142. package/dist/translations/uk.js +33 -0
  143. package/dist/translations/vi.js +33 -0
  144. package/dist/translations/zh-CN.js +36 -0
  145. package/dist/translations/zh-TW.js +36 -0
  146. package/dist/types.d.ts +4 -0
  147. package/dist/types.js +1 -0
  148. package/{user-components → dist/user-components}/FileTree.astro +1 -1
  149. package/{user-components → dist/user-components}/Steps.astro +1 -1
  150. package/{user-components → dist/user-components}/TabItem.astro +1 -1
  151. package/{user-components → dist/user-components}/Tabs.astro +1 -1
  152. package/dist/user-components/file-tree-icons.d.ts +178 -0
  153. package/dist/user-components/file-tree-icons.js +632 -0
  154. package/dist/user-components/file-tree-processor.d.ts +16 -0
  155. package/dist/user-components/file-tree-processor.js +132 -0
  156. package/dist/user-components/steps-processor.d.ts +10 -0
  157. package/dist/user-components/steps-processor.js +39 -0
  158. package/dist/user-components/tabs-processor.d.ts +23 -0
  159. package/dist/user-components/tabs-processor.js +70 -0
  160. package/dist/utils/base.d.ts +7 -0
  161. package/dist/utils/base.js +15 -0
  162. package/dist/utils/canonical.d.ts +10 -0
  163. package/dist/utils/canonical.js +14 -0
  164. package/dist/utils/collection-fs.d.ts +13 -0
  165. package/dist/utils/collection-fs.js +19 -0
  166. package/{utils/collection.ts → dist/utils/collection.d.ts} +9 -20
  167. package/dist/utils/collection.js +26 -0
  168. package/dist/utils/createPathFormatter.d.ts +9 -0
  169. package/dist/utils/createPathFormatter.js +35 -0
  170. package/dist/utils/createTranslationSystem.d.ts +23 -0
  171. package/dist/utils/createTranslationSystem.js +84 -0
  172. package/dist/utils/error-map.d.ts +23 -0
  173. package/dist/utils/error-map.js +125 -0
  174. package/dist/utils/format-path.d.ts +4 -0
  175. package/dist/utils/format-path.js +9 -0
  176. package/dist/utils/generateToC.d.ts +14 -0
  177. package/dist/utils/generateToC.js +25 -0
  178. package/dist/utils/git.d.ts +12 -0
  179. package/dist/utils/git.js +71 -0
  180. package/dist/utils/gitInlined.d.ts +6 -0
  181. package/dist/utils/gitInlined.js +11 -0
  182. package/dist/utils/head.d.ts +7 -0
  183. package/dist/utils/head.js +233 -0
  184. package/dist/utils/i18n.d.ts +50 -0
  185. package/dist/utils/i18n.js +141 -0
  186. package/dist/utils/localizedUrl.d.ts +8 -0
  187. package/dist/utils/localizedUrl.js +28 -0
  188. package/dist/utils/navigation.d.ts +19 -0
  189. package/dist/utils/navigation.js +353 -0
  190. package/dist/utils/path.d.ts +21 -0
  191. package/dist/utils/path.js +51 -0
  192. package/dist/utils/plugins.d.ts +721 -0
  193. package/dist/utils/plugins.js +174 -0
  194. package/dist/utils/routing/data.d.ts +20 -0
  195. package/dist/utils/routing/data.js +127 -0
  196. package/dist/utils/routing/index.d.ts +21 -0
  197. package/dist/utils/routing/index.js +106 -0
  198. package/dist/utils/routing/middleware.d.ts +11 -0
  199. package/dist/utils/routing/middleware.js +65 -0
  200. package/dist/utils/routing/types.d.ts +93 -0
  201. package/dist/utils/routing/types.js +1 -0
  202. package/dist/utils/slugs.d.ts +45 -0
  203. package/dist/utils/slugs.js +104 -0
  204. package/dist/utils/starlight-page.d.ts +36 -0
  205. package/dist/utils/starlight-page.js +120 -0
  206. package/dist/utils/translations-fs.d.ts +15 -0
  207. package/dist/utils/translations-fs.js +39 -0
  208. package/dist/utils/translations.d.ts +20 -0
  209. package/dist/utils/translations.js +29 -0
  210. package/dist/utils/types.d.ts +5 -0
  211. package/dist/utils/types.js +1 -0
  212. package/dist/utils/url.d.ts +7 -0
  213. package/{utils/url.ts → dist/utils/url.js} +5 -4
  214. package/dist/utils/user-config.d.ts +2055 -0
  215. package/dist/utils/user-config.js +136 -0
  216. package/dist/utils/validateLogoImports.d.ts +5 -0
  217. package/dist/utils/validateLogoImports.js +16 -0
  218. package/dist/utils/zodDeepMerge.d.ts +16 -0
  219. package/dist/utils/zodDeepMerge.js +53 -0
  220. package/package.json +62 -33
  221. package/CHANGELOG.md +0 -3043
  222. package/components/MobileMenuToggle.astro +0 -114
  223. package/components-internals/Icons.ts +0 -248
  224. package/components-internals/SidebarPersistState.ts +0 -71
  225. package/components-internals/TableOfContents/starlight-toc.ts +0 -127
  226. package/constants.ts +0 -4
  227. package/expressive-code.mjs +0 -23
  228. package/global.d.ts +0 -11
  229. package/i18n.d.ts +0 -18
  230. package/index.ts +0 -200
  231. package/integrations/aside-utils.ts +0 -41
  232. package/integrations/expressive-code/hast.d.ts +0 -5
  233. package/integrations/expressive-code/hast.mjs +0 -9
  234. package/integrations/expressive-code/index.ts +0 -125
  235. package/integrations/expressive-code/preprocessor.ts +0 -126
  236. package/integrations/expressive-code/themes/night-owl-dark.jsonc +0 -1796
  237. package/integrations/expressive-code/themes/night-owl-light.jsonc +0 -1695
  238. package/integrations/expressive-code/theming.ts +0 -105
  239. package/integrations/expressive-code/translations.ts +0 -36
  240. package/integrations/markdown-icon.ts +0 -13
  241. package/integrations/markdown-plugins.ts +0 -71
  242. package/integrations/markdown-processor.ts +0 -64
  243. package/integrations/pagefind.ts +0 -60
  244. package/integrations/rehype-code-rtl-support.ts +0 -37
  245. package/integrations/rehype-heading-links.ts +0 -79
  246. package/integrations/remark-asides.ts +0 -219
  247. package/integrations/remark-rehype.ts +0 -87
  248. package/integrations/satteri.ts +0 -265
  249. package/integrations/shared/absolutePathToLang.ts +0 -26
  250. package/integrations/shared/localeToLang.ts +0 -15
  251. package/integrations/shared/slugToLocale.ts +0 -18
  252. package/integrations/sitemap.ts +0 -23
  253. package/integrations/vite-layer-order.ts +0 -69
  254. package/integrations/vite-lazy-barrel-optimization.ts +0 -40
  255. package/integrations/vite-virtual-modules.ts +0 -175
  256. package/internal.ts +0 -6
  257. package/loaders.ts +0 -63
  258. package/locals.d.ts +0 -43
  259. package/locals.ts +0 -43
  260. package/route-data.ts +0 -11
  261. package/schema.ts +0 -167
  262. package/schemas/badge.ts +0 -40
  263. package/schemas/components.ts +0 -265
  264. package/schemas/expressiveCode.ts +0 -12
  265. package/schemas/favicon.ts +0 -40
  266. package/schemas/head.ts +0 -50
  267. package/schemas/hero.ts +0 -69
  268. package/schemas/i18n.ts +0 -244
  269. package/schemas/icon.ts +0 -7
  270. package/schemas/logo.ts +0 -28
  271. package/schemas/pagefind.ts +0 -128
  272. package/schemas/prevNextLink.ts +0 -18
  273. package/schemas/sidebar.ts +0 -163
  274. package/schemas/site-title.ts +0 -20
  275. package/schemas/social.ts +0 -23
  276. package/schemas/tableOfContents.ts +0 -21
  277. package/translations/README.md +0 -14
  278. package/translations/ar.json +0 -33
  279. package/translations/ca.json +0 -43
  280. package/translations/cs.json +0 -43
  281. package/translations/da.json +0 -30
  282. package/translations/de.json +0 -30
  283. package/translations/el.json +0 -30
  284. package/translations/en.json +0 -30
  285. package/translations/es.json +0 -43
  286. package/translations/fa.json +0 -30
  287. package/translations/fi.json +0 -30
  288. package/translations/fr.json +0 -33
  289. package/translations/gl.json +0 -43
  290. package/translations/he.json +0 -30
  291. package/translations/hi.json +0 -33
  292. package/translations/hu.json +0 -43
  293. package/translations/id.json +0 -30
  294. package/translations/index.ts +0 -76
  295. package/translations/it.json +0 -33
  296. package/translations/ja.json +0 -33
  297. package/translations/ko.json +0 -33
  298. package/translations/lv.json +0 -30
  299. package/translations/nb.json +0 -30
  300. package/translations/nl.json +0 -30
  301. package/translations/pl.json +0 -33
  302. package/translations/pt.json +0 -33
  303. package/translations/ro.json +0 -30
  304. package/translations/ru.json +0 -33
  305. package/translations/sk.json +0 -30
  306. package/translations/sv.json +0 -30
  307. package/translations/th.json +0 -30
  308. package/translations/tr.json +0 -30
  309. package/translations/uk.json +0 -30
  310. package/translations/vi.json +0 -30
  311. package/translations/zh-CN.json +0 -33
  312. package/translations/zh-TW.json +0 -33
  313. package/types.ts +0 -7
  314. package/user-components/file-tree-icons.ts +0 -782
  315. package/user-components/rehype-file-tree.ts +0 -251
  316. package/user-components/rehype-steps.ts +0 -85
  317. package/user-components/rehype-tabs.ts +0 -121
  318. package/utils/base.ts +0 -15
  319. package/utils/canonical.ts +0 -19
  320. package/utils/collection-fs.ts +0 -20
  321. package/utils/createPathFormatter.ts +0 -60
  322. package/utils/createTranslationSystem.ts +0 -137
  323. package/utils/error-map.ts +0 -222
  324. package/utils/format-path.ts +0 -7
  325. package/utils/generateToC.ts +0 -33
  326. package/utils/git.ts +0 -121
  327. package/utils/gitInlined.ts +0 -20
  328. package/utils/head.ts +0 -235
  329. package/utils/i18n.ts +0 -221
  330. package/utils/localizedUrl.ts +0 -51
  331. package/utils/navigation.ts +0 -566
  332. package/utils/path.ts +0 -58
  333. package/utils/plugins.ts +0 -498
  334. package/utils/routing/data.ts +0 -154
  335. package/utils/routing/index.ts +0 -135
  336. package/utils/routing/middleware.ts +0 -81
  337. package/utils/routing/types.ts +0 -101
  338. package/utils/slugs.ts +0 -119
  339. package/utils/starlight-page.ts +0 -205
  340. package/utils/translations-fs.ts +0 -54
  341. package/utils/translations.ts +0 -57
  342. package/utils/types.ts +0 -15
  343. package/utils/user-config.ts +0 -348
  344. package/utils/validateLogoImports.ts +0 -21
  345. package/utils/zodDeepMerge.ts +0 -144
  346. package/virtual-internal.d.ts +0 -149
  347. package/virtual.d.ts +0 -27
  348. /package/{components → dist/components}/AnchorHeading.astro +0 -0
  349. /package/{components → dist/components}/Banner.astro +0 -0
  350. /package/{components → dist/components}/ContentNotice.astro +0 -0
  351. /package/{components → dist/components}/ContentPanel.astro +0 -0
  352. /package/{components → dist/components}/DraftContentNotice.astro +0 -0
  353. /package/{components → dist/components}/EditLink.astro +0 -0
  354. /package/{components → dist/components}/FallbackContentNotice.astro +0 -0
  355. /package/{components → dist/components}/Footer.astro +0 -0
  356. /package/{components → dist/components}/Head.astro +0 -0
  357. /package/{components → dist/components}/Header.astro +0 -0
  358. /package/{components → dist/components}/Hero.astro +0 -0
  359. /package/{components → dist/components}/LanguageSelect.astro +0 -0
  360. /package/{components → dist/components}/LastUpdated.astro +0 -0
  361. /package/{components → dist/components}/MarkdownContent.astro +0 -0
  362. /package/{components → dist/components}/MobileMenuFooter.astro +0 -0
  363. /package/{components → dist/components}/MobileTableOfContents.astro +0 -0
  364. /package/{components → dist/components}/Page.astro +0 -0
  365. /package/{components → dist/components}/PageSidebar.astro +0 -0
  366. /package/{components → dist/components}/PageTitle.astro +0 -0
  367. /package/{components → dist/components}/Pagination.astro +0 -0
  368. /package/{components → dist/components}/Search.astro +0 -0
  369. /package/{components → dist/components}/Select.astro +0 -0
  370. /package/{components → dist/components}/Sidebar.astro +0 -0
  371. /package/{components → dist/components}/SidebarPersister.astro +0 -0
  372. /package/{components → dist/components}/SidebarRestorePoint.astro +0 -0
  373. /package/{components → dist/components}/SidebarSublist.astro +0 -0
  374. /package/{components → dist/components}/SiteTitle.astro +0 -0
  375. /package/{components → dist/components}/SkipLink.astro +0 -0
  376. /package/{components → dist/components}/SocialIcons.astro +0 -0
  377. /package/{components → dist/components}/StarlightPage.astro +0 -0
  378. /package/{components → dist/components}/TableOfContents.astro +0 -0
  379. /package/{components → dist/components}/ThemeProvider.astro +0 -0
  380. /package/{components → dist/components}/ThemeSelect.astro +0 -0
  381. /package/{components → dist/components}/TwoColumnContent.astro +0 -0
  382. /package/{components-internals → dist/components-internals}/TableOfContents/TableOfContentsList.astro +0 -0
  383. /package/{components.ts → dist/components.ts} +0 -0
  384. /package/{routes → dist/routes}/common.astro +0 -0
  385. /package/{routes → dist/routes}/ssr/404.astro +0 -0
  386. /package/{routes → dist/routes}/ssr/index.astro +0 -0
  387. /package/{routes → dist/routes}/static/404.astro +0 -0
  388. /package/{routes → dist/routes}/static/index.astro +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 };