@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,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 };