@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,32 @@
1
+ import { MarkdownProcessorPluginOptions } from "./markdown-processor.js";
2
+ import { Root } from "mdast";
3
+ import { Plugin } from "unified";
4
+ //#region src/integrations/remark-asides.d.ts
5
+ /**
6
+ * remark plugin that converts blocks delimited with `:::` into styled
7
+ * asides (a.k.a. “callouts”, “admonitions”, etc.). Depends on the
8
+ * `remark-directive` module for the core parsing logic.
9
+ *
10
+ * For example, this Markdown
11
+ *
12
+ * ```md
13
+ * :::tip[Did you know?]
14
+ * Astro helps you build faster websites with “Islands Architecture”.
15
+ * :::
16
+ * ```
17
+ *
18
+ * will produce this output
19
+ *
20
+ * ```astro
21
+ * <aside class="starlight-aside starlight-aside--tip" aria-label="Did you know?">
22
+ * <p class="starlight-aside__title" aria-hidden="true">Did you know?</p>
23
+ * <div class="starlight-aside__content">
24
+ * <p>Astro helps you build faster websites with “Islands Architecture”.</p>
25
+ * </div>
26
+ * </aside>
27
+ * ```
28
+ */
29
+ declare function remarkAsides(options: MarkdownProcessorPluginOptions): Plugin<[], Root>;
30
+ declare function remarkDirectivesRestoration(): (tree: Root) => void;
31
+ //#endregion
32
+ export { remarkAsides, remarkDirectivesRestoration };
@@ -0,0 +1,166 @@
1
+ import { parseIconChildren } from "./markdown-icon.js";
2
+ import { getAsideIcon, isAsideVariant } from "./aside-utils.js";
3
+ import { directiveToMarkdown } from "mdast-util-directive";
4
+ import { toMarkdown } from "mdast-util-to-markdown";
5
+ import { visit } from "unist-util-visit";
6
+ import { h, s } from "hastscript";
7
+ import { toString } from "mdast-util-to-string";
8
+ //#region src/integrations/remark-asides.ts
9
+ /** Hacky function that generates an mdast HTML tree ready for conversion to HTML by rehype. */
10
+ function h$1(el, attrs = {}, children = []) {
11
+ const { tagName, properties } = h(el, attrs);
12
+ return {
13
+ type: "paragraph",
14
+ data: {
15
+ hName: tagName,
16
+ hProperties: properties
17
+ },
18
+ children
19
+ };
20
+ }
21
+ /** Hacky function that generates an mdast SVG tree ready for conversion to HTML by rehype. */
22
+ function s$1(el, attrs = {}, children = []) {
23
+ const { tagName, properties } = s(el, attrs);
24
+ return {
25
+ type: "paragraph",
26
+ data: {
27
+ hName: tagName,
28
+ hProperties: properties
29
+ },
30
+ children
31
+ };
32
+ }
33
+ /** Checks if a node is a directive. */
34
+ function isNodeDirective(node) {
35
+ return node.type === "textDirective" || node.type === "leafDirective" || node.type === "containerDirective";
36
+ }
37
+ /**
38
+ * Transforms back directives not handled by Starlight to avoid breaking user content.
39
+ * For example, a user might write `x:y` in the middle of a sentence, where `:y` would be
40
+ * identified as a text directive, which are not used by Starlight, and we definitely want that
41
+ * text to be rendered verbatim in the output.
42
+ */
43
+ function transformUnhandledDirective(node, index, parent) {
44
+ let markdown = toMarkdown(node, { extensions: [directiveToMarkdown()] });
45
+ /**
46
+ * `mdast-util-to-markdown` assumes that the tree represents a complete document (as it's an AST
47
+ * and not a CST) and to follow the POSIX definition of a line (a sequence of zero or more
48
+ * non- <newline> characters plus a terminating <newline> character), a newline is automatically
49
+ * added at the end of the output so that the output is a valid file.
50
+ * In this specific case, we can safely remove the newline character at the end of the output
51
+ * before replacing the directive with its value.
52
+ *
53
+ * @see https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206
54
+ * @see https://github.com/syntax-tree/mdast-util-to-markdown/blob/fd6a508cc619b862f75b762dcf876c6b8315d330/lib/index.js#L79-L85
55
+ */
56
+ if (markdown.at(-1) === "\n") markdown = markdown.slice(0, -1);
57
+ const textNode = {
58
+ type: "text",
59
+ value: markdown
60
+ };
61
+ if (node.type === "textDirective") parent.children[index] = textNode;
62
+ else parent.children[index] = {
63
+ type: "paragraph",
64
+ children: [textNode]
65
+ };
66
+ }
67
+ /** Hacky function that generates the children of an mdast SVG tree. */
68
+ function makeSvgChildNodes(children) {
69
+ const nodes = [];
70
+ for (const child of children) {
71
+ if (child.type !== "element") continue;
72
+ nodes.push({
73
+ type: "paragraph",
74
+ data: {
75
+ hName: child.tagName,
76
+ hProperties: child.properties
77
+ },
78
+ children: makeSvgChildNodes(child.children)
79
+ });
80
+ }
81
+ return nodes;
82
+ }
83
+ /**
84
+ * remark plugin that converts blocks delimited with `:::` into styled
85
+ * asides (a.k.a. “callouts”, “admonitions”, etc.). Depends on the
86
+ * `remark-directive` module for the core parsing logic.
87
+ *
88
+ * For example, this Markdown
89
+ *
90
+ * ```md
91
+ * :::tip[Did you know?]
92
+ * Astro helps you build faster websites with “Islands Architecture”.
93
+ * :::
94
+ * ```
95
+ *
96
+ * will produce this output
97
+ *
98
+ * ```astro
99
+ * <aside class="starlight-aside starlight-aside--tip" aria-label="Did you know?">
100
+ * <p class="starlight-aside__title" aria-hidden="true">Did you know?</p>
101
+ * <div class="starlight-aside__content">
102
+ * <p>Astro helps you build faster websites with “Islands Architecture”.</p>
103
+ * </div>
104
+ * </aside>
105
+ * ```
106
+ */
107
+ function remarkAsides(options) {
108
+ const iconPaths = {
109
+ note: parseIconChildren(getAsideIcon("note")),
110
+ tip: parseIconChildren(getAsideIcon("tip")),
111
+ caution: parseIconChildren(getAsideIcon("caution")),
112
+ danger: parseIconChildren(getAsideIcon("danger"))
113
+ };
114
+ const transformer = (tree, file) => {
115
+ const lang = options.absolutePathToLang(file.path);
116
+ const t = options.useTranslations(lang);
117
+ visit(tree, (node, index, parent) => {
118
+ if (!parent || index === void 0 || !isNodeDirective(node)) return;
119
+ if (node.type === "textDirective" || node.type === "leafDirective") return;
120
+ const variant = node.name;
121
+ const attributes = node.attributes;
122
+ if (!isAsideVariant(variant)) return;
123
+ let title = t(`aside.${variant}`);
124
+ let titleNode = [{
125
+ type: "text",
126
+ value: title
127
+ }];
128
+ const firstChild = node.children[0];
129
+ if (firstChild?.type === "paragraph" && firstChild.data && "directiveLabel" in firstChild.data && firstChild.children.length > 0) {
130
+ titleNode = firstChild.children;
131
+ title = toString(firstChild.children);
132
+ node.children.splice(0, 1);
133
+ }
134
+ const iconPath = makeSvgChildNodes(attributes?.["icon"] ? parseIconChildren(getAsideIcon(variant, attributes?.["icon"])) : iconPaths[variant]);
135
+ const aside = h$1("aside", {
136
+ "aria-label": title,
137
+ class: `starlight-aside starlight-aside--${variant}`
138
+ }, [h$1("p", {
139
+ class: "starlight-aside__title",
140
+ "aria-hidden": "true"
141
+ }, [s$1("svg", {
142
+ viewBox: "0 0 24 24",
143
+ width: 16,
144
+ height: 16,
145
+ fill: "currentColor",
146
+ class: "starlight-aside__icon"
147
+ }, iconPath), ...titleNode]), h$1("div", { class: "starlight-aside__content" }, node.children)]);
148
+ parent.children[index] = aside;
149
+ });
150
+ };
151
+ return function attacher() {
152
+ return transformer;
153
+ };
154
+ }
155
+ function remarkDirectivesRestoration() {
156
+ return function transformer(tree) {
157
+ visit(tree, (node, index, parent) => {
158
+ if (index !== void 0 && parent && (node.type === "textDirective" || node.type === "leafDirective") && node.data === void 0) {
159
+ transformUnhandledDirective(node, index, parent);
160
+ return;
161
+ }
162
+ });
163
+ };
164
+ }
165
+ //#endregion
166
+ export { remarkAsides, remarkDirectivesRestoration };
@@ -0,0 +1,17 @@
1
+ import { MarkdownProcessorPluginOptions } from "./markdown-processor.js";
2
+ import { remarkDirectivesRestoration } from "./remark-asides.js";
3
+ import { isUnifiedProcessor } from "@astrojs/markdown-remark";
4
+ import { Root } from "hast";
5
+ import { Root as Root$1 } from "mdast";
6
+ import { Plugin } from "unified";
7
+ declare namespace remark_rehype_d_exports {
8
+ export { isUnifiedProcessor, remarkDirectivesRestoration, starlightRehypePlugins, starlightRemarkPlugins };
9
+ }
10
+ /** List of remark plugins to apply. */
11
+ declare function starlightRemarkPlugins(options: MarkdownProcessorPluginOptions): RemarkPlugin[];
12
+ /** List of rehype plugins to apply. */
13
+ declare function starlightRehypePlugins(options: MarkdownProcessorPluginOptions): RehypePlugin[];
14
+ type RemarkPlugin = Plugin<[], Root$1>;
15
+ type RehypePlugin = Plugin<[], Root>;
16
+ //#endregion
17
+ export { isUnifiedProcessor, remarkDirectivesRestoration, remark_rehype_d_exports, starlightRehypePlugins, starlightRemarkPlugins };
@@ -0,0 +1,51 @@
1
+ import { getMarkdownProcessorPaths, shouldTransformPath } from "./markdown-processor.js";
2
+ import { rehypeRtlCodeSupport } from "./rehype-code-rtl-support.js";
3
+ import rehypeAutolinkHeadings from "./rehype-heading-links.js";
4
+ import { remarkAsides, remarkDirectivesRestoration } from "./remark-asides.js";
5
+ import { isUnifiedProcessor, rehypeHeadingIds } from "@astrojs/markdown-remark";
6
+ import remarkDirective from "remark-directive";
7
+ //#region src/integrations/remark-rehype.ts
8
+ /** List of remark plugins to apply. */
9
+ function starlightRemarkPlugins(options) {
10
+ return [remarkDirective, remarkPlugins(options)];
11
+ }
12
+ /** List of rehype plugins to apply. */
13
+ function starlightRehypePlugins(options) {
14
+ return [...options.starlightConfig.markdown.headingLinks ? [[rehypeHeadingIds]] : [], rehypePlugins(options)];
15
+ }
16
+ /** Remark plugin applying other Starlight remark plugins if necessary. */
17
+ function remarkPlugins(options) {
18
+ const allowedPaths = getMarkdownProcessorPaths(options);
19
+ return function attacher() {
20
+ const remarkAsidesTransformer = remarkAsides(options).call(this);
21
+ return async function transformer(...args) {
22
+ const [, file] = args;
23
+ if (!shouldTransformFile(file, allowedPaths)) return;
24
+ await remarkAsidesTransformer(...args);
25
+ };
26
+ };
27
+ }
28
+ /** Rehype plugin applying other Starlight rehype plugins if necessary. */
29
+ function rehypePlugins(options) {
30
+ const allowedPaths = getMarkdownProcessorPaths(options);
31
+ return function attacher() {
32
+ const rehypeRtlCodeSupportTransformer = rehypeRtlCodeSupport(options).call(this);
33
+ const rehypeAutolinkHeadingsTransformer = rehypeAutolinkHeadings(options).call(this);
34
+ return async function transformer(...args) {
35
+ const [, file] = args;
36
+ if (!shouldTransformFile(file, allowedPaths)) return;
37
+ await rehypeRtlCodeSupportTransformer(...args);
38
+ if (options.starlightConfig.markdown.headingLinks) await rehypeAutolinkHeadingsTransformer(...args);
39
+ };
40
+ };
41
+ }
42
+ /**
43
+ * Determines if a file should be transformed by a remark/rehype plugin, e.g. files without a known
44
+ * path or files that are not part of the allowed paths are skipped.
45
+ */
46
+ function shouldTransformFile(file, allowedPaths) {
47
+ if (!file?.path) return false;
48
+ return shouldTransformPath(file.path, allowedPaths);
49
+ }
50
+ //#endregion
51
+ export { isUnifiedProcessor, remarkDirectivesRestoration, starlightRehypePlugins, starlightRemarkPlugins };
@@ -0,0 +1,13 @@
1
+ import { MarkdownProcessorPluginOptions } from "./markdown-processor.js";
2
+ import { HastPluginEntry, MdastPluginDefinition, MdastPluginEntry } from "satteri";
3
+ //#region src/integrations/satteri.d.ts
4
+ declare function starlightSatteriPlugins(options: MarkdownProcessorPluginOptions): {
5
+ mdastPlugins: MdastPluginEntry[];
6
+ hastPlugins: HastPluginEntry[];
7
+ };
8
+ /**
9
+ * Recover directives Starlight didn't claim so user content isn't dropped
10
+ */
11
+ declare function satteriDirectivesRestoration(): MdastPluginDefinition;
12
+ //#endregion
13
+ export { satteriDirectivesRestoration, starlightSatteriPlugins };
@@ -0,0 +1,209 @@
1
+ import { headingLinkIconChildren } from "./markdown-icon.js";
2
+ import { getAsideIcon, isAsideVariant } from "./aside-utils.js";
3
+ import { getMarkdownProcessorPaths, shouldTransformPath } from "./markdown-processor.js";
4
+ import { satteriHeadingIdsPlugin } from "@astrojs/markdown-satteri";
5
+ import { fileURLToPath } from "node:url";
6
+ import { directiveToMarkdown } from "mdast-util-directive";
7
+ import { toMarkdown } from "mdast-util-to-markdown";
8
+ //#region src/integrations/satteri.ts
9
+ function starlightSatteriPlugins(options) {
10
+ const allowedPaths = getMarkdownProcessorPaths(options);
11
+ return {
12
+ mdastPlugins: [({ fileURL, sourceFormat }) => {
13
+ if (!shouldTransformPath(fileURL, allowedPaths)) return;
14
+ const lang = options.absolutePathToLang(fileURLToPath(fileURL));
15
+ return satteriAsidesPlugin(options.useTranslations(lang), sourceFormat);
16
+ }],
17
+ hastPlugins: [({ fileURL }) => {
18
+ if (!shouldTransformPath(fileURL, allowedPaths)) return;
19
+ const plugins = [satteriRtlCodeSupportPlugin()];
20
+ if (options.starlightConfig.markdown.headingLinks) {
21
+ const lang = options.absolutePathToLang(fileURLToPath(fileURL));
22
+ const t = options.useTranslations(lang);
23
+ plugins.push(satteriHeadingIdsPlugin(), satteriAutolinkHeadingsPlugin(t));
24
+ }
25
+ return plugins;
26
+ }]
27
+ };
28
+ }
29
+ /**
30
+ * Recover directives Starlight didn't claim so user content isn't dropped
31
+ */
32
+ function satteriDirectivesRestoration() {
33
+ return {
34
+ name: "starlight-directives-restoration",
35
+ textDirective(node) {
36
+ if (node.data !== void 0) return;
37
+ return {
38
+ type: "text",
39
+ value: serializeDirective(node)
40
+ };
41
+ },
42
+ leafDirective(node) {
43
+ if (node.data !== void 0) return;
44
+ return {
45
+ type: "paragraph",
46
+ children: [{
47
+ type: "text",
48
+ value: serializeDirective(node)
49
+ }]
50
+ };
51
+ },
52
+ containerDirective(node) {
53
+ if (node.data !== void 0) return;
54
+ return paragraphElement("div", {}, [...node.children]);
55
+ }
56
+ };
57
+ }
58
+ function paragraphElement(tagName, properties, children = []) {
59
+ return {
60
+ type: "paragraph",
61
+ data: {
62
+ hName: tagName,
63
+ hProperties: properties
64
+ },
65
+ children
66
+ };
67
+ }
68
+ /** Convert `:::variant` directive blocks into styled asides. */
69
+ function satteriAsidesPlugin(t, sourceFormat) {
70
+ return {
71
+ name: "starlight-asides",
72
+ containerDirective(node, ctx) {
73
+ if (!isAsideVariant(node.name)) return;
74
+ const variant = node.name;
75
+ let title = t(`aside.${variant}`);
76
+ let titleNode = [{
77
+ type: "text",
78
+ value: title
79
+ }];
80
+ const children = [...node.children];
81
+ const firstChild = children[0];
82
+ if (firstChild?.type === "paragraph" && firstChild.data?.directiveLabel && firstChild.children.length > 0) {
83
+ titleNode = firstChild.children;
84
+ title = ctx.textContent(firstChild);
85
+ children.shift();
86
+ }
87
+ const iconSvg = `<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor" class="starlight-aside__icon">${getAsideIcon(variant, node.attributes?.["icon"])}</svg>`;
88
+ const iconNode = sourceFormat === "mdx" ? {
89
+ type: "mdxJsxTextElement",
90
+ name: "Fragment",
91
+ attributes: [{
92
+ type: "mdxJsxAttribute",
93
+ name: "set:html",
94
+ value: iconSvg
95
+ }]
96
+ } : {
97
+ type: "html",
98
+ value: iconSvg
99
+ };
100
+ return paragraphElement("aside", {
101
+ "aria-label": title,
102
+ class: `starlight-aside starlight-aside--${variant}`
103
+ }, [paragraphElement("p", {
104
+ class: "starlight-aside__title",
105
+ "aria-hidden": "true"
106
+ }, [iconNode, ...titleNode]), paragraphElement("div", { class: "starlight-aside__content" }, children)]);
107
+ }
108
+ };
109
+ }
110
+ function serializeDirective(node) {
111
+ const md = toMarkdown(node, { extensions: [directiveToMarkdown()] });
112
+ return md.at(-1) === "\n" ? md.slice(0, -1) : md;
113
+ }
114
+ function satteriRtlCodeSupportPlugin() {
115
+ return {
116
+ name: "starlight-rtl-code-support",
117
+ element: [{
118
+ filter: ["pre"],
119
+ visit(node, ctx) {
120
+ if (node.properties && "dir" in node.properties) return;
121
+ ctx.setProperty(node, "dir", "ltr");
122
+ }
123
+ }, {
124
+ filter: ["code"],
125
+ visit(node, ctx) {
126
+ if (!(node.properties && "dir" in node.properties) && !hasPreParent(node, ctx)) ctx.setProperty(node, "dir", "auto");
127
+ }
128
+ }]
129
+ };
130
+ }
131
+ /**
132
+ * Check if any parent of `child` is a `<pre>` element by walking up the tree.
133
+ */
134
+ function hasPreParent(child, ctx) {
135
+ while (child) {
136
+ const parent = ctx.parent(child);
137
+ if (parent?.type === "element" && parent.tagName === "pre") return true;
138
+ child = parent;
139
+ }
140
+ return false;
141
+ }
142
+ function satteriAutolinkHeadingsPlugin(t) {
143
+ return {
144
+ name: "starlight-autolink-headings",
145
+ element: {
146
+ filter: [
147
+ "h1",
148
+ "h2",
149
+ "h3",
150
+ "h4",
151
+ "h5",
152
+ "h6"
153
+ ],
154
+ visit(node, ctx) {
155
+ const id = node.properties?.["id"];
156
+ if (typeof id !== "string" || !id) return;
157
+ const accessibleLabel = t("heading.anchorLabel", {
158
+ title: ctx.textContent(node),
159
+ interpolation: { escapeValue: false }
160
+ });
161
+ return {
162
+ type: "element",
163
+ tagName: "div",
164
+ properties: { class: `sl-heading-wrapper level-${node.tagName}` },
165
+ children: [node, {
166
+ type: "element",
167
+ tagName: "a",
168
+ properties: {
169
+ class: "sl-anchor-link",
170
+ href: "#" + id
171
+ },
172
+ children: [{
173
+ type: "element",
174
+ tagName: "span",
175
+ properties: {
176
+ "aria-hidden": "true",
177
+ class: "sl-anchor-icon"
178
+ },
179
+ children: [{
180
+ type: "element",
181
+ tagName: "svg",
182
+ properties: {
183
+ width: "16",
184
+ height: "16",
185
+ viewBox: "0 0 24 24",
186
+ fill: "currentColor"
187
+ },
188
+ children: headingLinkIconChildren
189
+ }]
190
+ }, {
191
+ type: "element",
192
+ tagName: "span",
193
+ properties: {
194
+ class: "sr-only",
195
+ "data-pagefind-ignore": true
196
+ },
197
+ children: [{
198
+ type: "text",
199
+ value: accessibleLabel
200
+ }]
201
+ }]
202
+ }]
203
+ };
204
+ }
205
+ }
206
+ };
207
+ }
208
+ //#endregion
209
+ export { satteriDirectivesRestoration, starlightSatteriPlugins };
@@ -0,0 +1,10 @@
1
+ import { StarlightConfig } from "../../utils/user-config.js";
2
+ import "../../types.js";
3
+ //#region src/integrations/shared/absolutePathToLang.d.ts
4
+ /** Get current language from an absolute file path. */
5
+ declare function absolutePathToLang(path: string, { docsPath, starlightConfig }: {
6
+ docsPath: string;
7
+ starlightConfig: Pick<StarlightConfig, 'defaultLocale' | 'locales'>;
8
+ }): string;
9
+ //#endregion
10
+ export { absolutePathToLang };
@@ -0,0 +1,13 @@
1
+ import { localeToLang } from "./localeToLang.js";
2
+ import { slugToLocale } from "./slugToLocale.js";
3
+ //#region src/integrations/shared/absolutePathToLang.ts
4
+ /** Get current language from an absolute file path. */
5
+ function absolutePathToLang(path, { docsPath, starlightConfig }) {
6
+ path = path?.replace(/\\/g, "/");
7
+ if (path && !path.startsWith("/") && docsPath.startsWith("/")) path = "/" + path;
8
+ const slug = path?.replace(docsPath, "");
9
+ const locale = slugToLocale(slug, starlightConfig);
10
+ return localeToLang(starlightConfig, locale);
11
+ }
12
+ //#endregion
13
+ export { absolutePathToLang };
@@ -0,0 +1,10 @@
1
+ import { StarlightConfig } from "../../utils/user-config.js";
2
+ import "../../types.js";
3
+ //#region src/integrations/shared/localeToLang.d.ts
4
+ /**
5
+ * Get the BCP-47 language tag for the given locale.
6
+ * @param locale Locale string or `undefined` for the root locale.
7
+ */
8
+ declare function localeToLang(config: Pick<StarlightConfig, 'defaultLocale' | 'locales'>, locale: string | undefined): string;
9
+ //#endregion
10
+ export { localeToLang };
@@ -0,0 +1,13 @@
1
+ import { BuiltInDefaultLocale } from "../../utils/i18n.js";
2
+ //#region src/integrations/shared/localeToLang.ts
3
+ /**
4
+ * Get the BCP-47 language tag for the given locale.
5
+ * @param locale Locale string or `undefined` for the root locale.
6
+ */
7
+ function localeToLang(config, locale) {
8
+ const lang = locale ? config.locales?.[locale]?.lang : config.locales?.root?.lang;
9
+ const defaultLang = config.defaultLocale?.lang || config.defaultLocale?.locale;
10
+ return lang || defaultLang || BuiltInDefaultLocale.lang;
11
+ }
12
+ //#endregion
13
+ export { localeToLang };
@@ -0,0 +1,12 @@
1
+ import { StarlightConfig } from "../../utils/user-config.js";
2
+ import "../../types.js";
3
+ //#region src/integrations/shared/slugToLocale.d.ts
4
+ /**
5
+ * Get the “locale” of a slug. This is the base path at which a language is served.
6
+ * For example, if French docs are in `src/content/docs/french/`, the locale is `french`.
7
+ * Root locale slugs will return `undefined`.
8
+ * @param slug A collection entry slug
9
+ */
10
+ declare function slugToLocale(slug: string | undefined, config: Pick<StarlightConfig, 'defaultLocale' | 'locales'>): string | undefined;
11
+ //#endregion
12
+ export { slugToLocale };
@@ -0,0 +1,15 @@
1
+ //#region src/integrations/shared/slugToLocale.ts
2
+ /**
3
+ * Get the “locale” of a slug. This is the base path at which a language is served.
4
+ * For example, if French docs are in `src/content/docs/french/`, the locale is `french`.
5
+ * Root locale slugs will return `undefined`.
6
+ * @param slug A collection entry slug
7
+ */
8
+ function slugToLocale(slug, config) {
9
+ const localesConfig = config.locales ?? {};
10
+ const baseSegment = slug?.split("/")[0];
11
+ if (baseSegment && localesConfig[baseSegment]) return baseSegment;
12
+ if (!localesConfig.root) return config.defaultLocale.locale;
13
+ }
14
+ //#endregion
15
+ export { slugToLocale };
@@ -0,0 +1,12 @@
1
+ import { StarlightConfig } from "../utils/user-config.js";
2
+ import "../types.js";
3
+ import { SitemapOptions } from "@astrojs/sitemap";
4
+ //#region src/integrations/sitemap.d.ts
5
+ declare function getSitemapConfig(opts: StarlightConfig): SitemapOptions;
6
+ /**
7
+ * A wrapped version of the `@astrojs/sitemap` integration configured based
8
+ * on Starlight i18n config.
9
+ */
10
+ declare function starlightSitemap(opts: StarlightConfig): import("astro").AstroIntegration;
11
+ //#endregion
12
+ export { getSitemapConfig, starlightSitemap };
@@ -0,0 +1,19 @@
1
+ import sitemap from "@astrojs/sitemap";
2
+ //#region src/integrations/sitemap.ts
3
+ function getSitemapConfig(opts) {
4
+ const sitemapConfig = {};
5
+ if (opts.isMultilingual) sitemapConfig.i18n = {
6
+ defaultLocale: opts.defaultLocale.locale || "root",
7
+ locales: Object.fromEntries(Object.entries(opts.locales).map(([locale, config]) => [locale, config.lang]))
8
+ };
9
+ return sitemapConfig;
10
+ }
11
+ /**
12
+ * A wrapped version of the `@astrojs/sitemap` integration configured based
13
+ * on Starlight i18n config.
14
+ */
15
+ function starlightSitemap(opts) {
16
+ return sitemap(getSitemapConfig(opts));
17
+ }
18
+ //#endregion
19
+ export { getSitemapConfig, starlightSitemap };
@@ -0,0 +1,15 @@
1
+ import { ViteUserConfig } from "astro";
2
+ //#region src/integrations/vite-layer-order.d.ts
3
+ /**
4
+ * Vite plugin that ensures the StarlightPage component is always imported first when imported in
5
+ * an Astro file.
6
+ *
7
+ * This is necessary to ensure a predictable CSS layer order which is defined by the `<Page />`
8
+ * imported by the `<StarlightPage />` component. If a user imports any other component using
9
+ * cascade layers before the `<StarlightPage />` component, it will result in undesired layers
10
+ * being created before we explicitly set the expected layer order.
11
+ */
12
+ declare function vitePluginStarlightCssLayerOrder(): VitePlugin;
13
+ type VitePlugin = NonNullable<ViteUserConfig['plugins']>[number];
14
+ //#endregion
15
+ export { vitePluginStarlightCssLayerOrder };