@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
@@ -1,69 +0,0 @@
1
- import type { ViteUserConfig } from 'astro';
2
- import MagicString from 'magic-string';
3
-
4
- // https://vite.dev/guide/api-plugin#hook-filters
5
- const pluginTransformIdIncludeFilter = /\.astro$/;
6
- const pluginTransformIdExcludeFilter = /@astrojs\/starlight\/components\/StarlightPage\.astro$/;
7
- const pluginTransformCodeFilter = 'StarlightPage.astro';
8
-
9
- const starlightPageImportSource = '@astrojs/starlight/components/StarlightPage.astro';
10
-
11
- /**
12
- * Vite plugin that ensures the StarlightPage component is always imported first when imported in
13
- * an Astro file.
14
- *
15
- * This is necessary to ensure a predictable CSS layer order which is defined by the `<Page />`
16
- * imported by the `<StarlightPage />` component. If a user imports any other component using
17
- * cascade layers before the `<StarlightPage />` component, it will result in undesired layers
18
- * being created before we explicitly set the expected layer order.
19
- */
20
- export function vitePluginStarlightCssLayerOrder(): VitePlugin {
21
- return {
22
- name: 'vite-plugin-starlight-css-layer-order',
23
- enforce: 'pre',
24
- transform: {
25
- filter: {
26
- id: { include: pluginTransformIdIncludeFilter, exclude: pluginTransformIdExcludeFilter },
27
- code: pluginTransformCodeFilter,
28
- },
29
- handler(code, id) {
30
- let ast: ReturnType<typeof this.parse>;
31
-
32
- try {
33
- ast = this.parse(code);
34
- } catch {
35
- return;
36
- }
37
-
38
- let hasStarlightPageImport = false;
39
-
40
- for (const node of ast.body) {
41
- if (node.type !== 'ImportDeclaration') continue;
42
- if (node.source.value !== starlightPageImportSource) continue;
43
-
44
- const importDefaultSpecifier = node.specifiers.find(
45
- (specifier) => specifier.type === 'ImportDefaultSpecifier'
46
- );
47
- if (!importDefaultSpecifier) continue;
48
-
49
- hasStarlightPageImport = true;
50
- break;
51
- }
52
-
53
- if (!hasStarlightPageImport) return;
54
-
55
- // Format path to unix style path.
56
- const filename = id.replace(/\\/g, '/');
57
- const ms = new MagicString(code, { filename });
58
- ms.prepend(`import "${starlightPageImportSource}";\n`);
59
-
60
- return {
61
- code: ms.toString(),
62
- map: ms.generateMap({ hires: 'boundary' }),
63
- };
64
- },
65
- },
66
- };
67
- }
68
-
69
- type VitePlugin = NonNullable<ViteUserConfig['plugins']>[number];
@@ -1,40 +0,0 @@
1
- import { fileURLToPath } from 'node:url';
2
- import type { ViteUserConfig } from 'astro';
3
-
4
- // https://vite.dev/guide/api-plugin#hook-filters
5
- const componentsBarrelIdFilter = /[\\/]components\.ts(?:\?.*)?$/;
6
-
7
- const backSlashRegex = /\\/g;
8
- const queryStringRegex = /\?.*$/;
9
-
10
- const starlightComponentsBarrelId = normalizeId(
11
- fileURLToPath(new URL('../components.ts', import.meta.url))
12
- );
13
-
14
- /**
15
- * Vite plugin that marks the Starlight components barrel file as having no side effects so that
16
- * lazy barrel optimization can be applied to it.
17
- *
18
- * @see https://rolldown.rs/in-depth/lazy-barrel-optimization
19
- */
20
- export function vitePluginStarlightLazyBarrelOptimization(): VitePlugin {
21
- return {
22
- name: 'vite-plugin-starlight-lazy-barrel-optimization',
23
- enforce: 'pre',
24
- transform: {
25
- filter: {
26
- id: componentsBarrelIdFilter,
27
- },
28
- handler(code, id) {
29
- if (normalizeId(id) !== starlightComponentsBarrelId) return;
30
- return { code, moduleSideEffects: false };
31
- },
32
- },
33
- };
34
- }
35
-
36
- function normalizeId(id: string) {
37
- return id.replace(backSlashRegex, '/').replace(queryStringRegex, '');
38
- }
39
-
40
- type VitePlugin = NonNullable<ViteUserConfig['plugins']>[number];
@@ -1,175 +0,0 @@
1
- import type { AstroConfig, HookParameters, ViteUserConfig } from 'astro';
2
- import { existsSync } from 'node:fs';
3
- import { resolve } from 'node:path';
4
- import { fileURLToPath } from 'node:url';
5
- import { resolveCollectionPath } from '../utils/collection-fs';
6
- import type { StarlightConfig } from '../utils/user-config';
7
- import { getAllNewestCommitDate } from '../utils/git';
8
- import type { PluginTranslations } from '../utils/plugins';
9
-
10
- // https://vite.dev/guide/api-plugin#hook-filters
11
- const pluginResolveIdIdFilter = /^virtual:starlight\//;
12
- // eslint-disable-next-line no-control-regex -- virtual module prefix
13
- const pluginLoadIdFilter = /^\x00virtual:starlight\//;
14
-
15
- function resolveVirtualModuleId<T extends string>(id: T): `\0${T}` {
16
- return `\0${id}`;
17
- }
18
-
19
- /** Vite plugin that exposes Starlight user config and project context via virtual modules. */
20
- export function vitePluginStarlightVirtualModules(
21
- {
22
- command,
23
- isNodeCompatibleEnv,
24
- }: {
25
- command: HookParameters<'astro:config:setup'>['command'];
26
- isNodeCompatibleEnv: boolean;
27
- },
28
- opts: StarlightConfig,
29
- {
30
- build,
31
- legacy,
32
- root,
33
- srcDir,
34
- trailingSlash,
35
- }: Pick<AstroConfig, 'root' | 'srcDir' | 'trailingSlash'> & {
36
- build: Pick<AstroConfig['build'], 'format'>;
37
- legacy: Pick<AstroConfig['legacy'], 'collectionsBackwardsCompat'>;
38
- },
39
- pluginTranslations: PluginTranslations
40
- ): NonNullable<ViteUserConfig['plugins']>[number] {
41
- /**
42
- * Resolves module IDs to a usable format:
43
- * - Relative paths (e.g. `'./module.js'`) are resolved against `base` and formatted as an absolute path.
44
- * - Package identifiers (e.g. `'module'`) are returned unchanged.
45
- *
46
- * By default, `base` is the project root directory.
47
- */
48
- const resolveId = (id: string, base = root) =>
49
- JSON.stringify(id.startsWith('.') ? resolve(fileURLToPath(base), id) : id);
50
-
51
- /**
52
- * Resolves a path to a Starlight file relative to this file.
53
- * @example
54
- * resolveLocalPath('../utils/git.ts');
55
- * // => '"/users/houston/docs/node_modules/@astrojs/starlight/utils/git.ts"'
56
- */
57
- const resolveLocalPath = (path: string) =>
58
- JSON.stringify(fileURLToPath(new URL(path, import.meta.url)));
59
-
60
- const rootPath = fileURLToPath(root);
61
- const docsPath = resolveCollectionPath('docs', srcDir);
62
-
63
- let collectionConfigImportPath = resolve(fileURLToPath(srcDir), './content.config.ts');
64
- // If using the collections backwards compatibility mode and the config doesn't exist, fallback
65
- // to the legacy location. We need to test this ahead of time as we cannot `try/catch` a failing
66
- // import in the virtual module as this would fail at build time when Rollup tries to resolve a
67
- // non-existent path.
68
- if (legacy.collectionsBackwardsCompat && !existsSync(collectionConfigImportPath)) {
69
- collectionConfigImportPath = resolve(fileURLToPath(srcDir), './content/config.ts');
70
- }
71
-
72
- const virtualComponentModules = Object.fromEntries(
73
- Object.entries(opts.components).map(([name, path]) => [
74
- `virtual:starlight/components/${name}`,
75
- `export { default } from ${resolveId(path)};`,
76
- ])
77
- );
78
-
79
- /** Map of virtual module names to their code contents as strings. */
80
- const modules = {
81
- 'virtual:starlight/user-config': `export default ${JSON.stringify(opts)}`,
82
- 'virtual:starlight/project-context': `export default ${JSON.stringify({
83
- build: { format: build.format },
84
- root,
85
- srcDir,
86
- trailingSlash,
87
- })}`,
88
- 'virtual:starlight/git-info':
89
- (command !== 'build' && isNodeCompatibleEnv
90
- ? `import { makeAPI } from ${resolveLocalPath('../utils/git.ts')};` +
91
- `const api = makeAPI(${JSON.stringify(rootPath)});`
92
- : `import { makeAPI } from ${resolveLocalPath('../utils/gitInlined.ts')};` +
93
- `const api = makeAPI(${JSON.stringify(getAllNewestCommitDate(rootPath, docsPath))});`) +
94
- 'export const getNewestCommitDate = api.getNewestCommitDate;',
95
- /**
96
- * Module containing styles for features that can be toggled on or off such as heading anchor links.
97
- */
98
- 'virtual:starlight/optional-css': opts.markdown.headingLinks
99
- ? `import ${resolveLocalPath('../style/anchor-links.css')};`
100
- : '',
101
- /**
102
- * Module containing imports of user-specified custom CSS files.
103
- */
104
- 'virtual:starlight/user-css': opts.customCss.map((id) => `import ${resolveId(id)};`).join(''),
105
- 'virtual:starlight/user-images': opts.logo
106
- ? 'src' in opts.logo
107
- ? `import src from ${resolveId(
108
- opts.logo.src
109
- )}; export const logos = { dark: src, light: src };`
110
- : `import dark from ${resolveId(opts.logo.dark)}; import light from ${resolveId(
111
- opts.logo.light
112
- )}; export const logos = { dark, light };`
113
- : 'export const logos = {};',
114
- 'virtual:starlight/collection-config': `let userCollections;
115
- try {
116
- userCollections = (await import(${JSON.stringify(collectionConfigImportPath)})).collections;
117
- } catch {}
118
- export const collections = userCollections;`,
119
- 'virtual:starlight/plugin-translations': `export default ${JSON.stringify(pluginTranslations)}`,
120
- /**
121
- * Exports an array of route middleware functions.
122
- * For example, might generate a module that looks like:
123
- *
124
- * ```js
125
- * import { onRequest as routeMiddleware0 } from "/users/houston/docs/src/middleware";
126
- * import { onRequest as routeMiddleware1 } from "@houston-inc/plugin/middleware";
127
- *
128
- * export const routeMiddleware = [
129
- * routeMiddleware0,
130
- * routeMiddleware1,
131
- * ];
132
- * ```
133
- */
134
- 'virtual:starlight/route-middleware':
135
- opts.routeMiddleware
136
- .reduce(
137
- ([imports, entries], id, index) => {
138
- const importName = `routeMiddleware${index}`;
139
- imports += `import { onRequest as ${importName} } from ${resolveId(id)};\n`;
140
- entries += `\t${importName},\n`;
141
- return [imports, entries] as [string, string];
142
- },
143
- ['', 'export const routeMiddleware = [\n'] as [string, string]
144
- )
145
- .join('\n') + '];',
146
- /** Map of modules exporting Starlight’s templating components. */
147
- 'virtual:starlight/pagefind-config': `export const pagefindUserConfig = ${JSON.stringify(opts.pagefind || {})}`,
148
- ...virtualComponentModules,
149
- } satisfies Record<string, string>;
150
-
151
- /** Mapping names prefixed with `\0` to their original form. */
152
- const resolutionMap = Object.fromEntries(
153
- (Object.keys(modules) as (keyof typeof modules)[]).map((key) => [
154
- resolveVirtualModuleId(key),
155
- key,
156
- ])
157
- );
158
-
159
- return {
160
- name: 'vite-plugin-starlight-user-config',
161
- resolveId: {
162
- filter: { id: pluginResolveIdIdFilter },
163
- handler(id): string | void {
164
- if (id in modules) return resolveVirtualModuleId(id);
165
- },
166
- },
167
- load: {
168
- filter: { id: pluginLoadIdFilter },
169
- handler(id): string | void {
170
- const resolution = resolutionMap[id];
171
- if (resolution) return modules[resolution];
172
- },
173
- },
174
- };
175
- }
package/internal.ts DELETED
@@ -1,6 +0,0 @@
1
- /**
2
- * @file This file contains utility functions imported by the `<Code>` component.
3
- */
4
-
5
- export { useTranslations } from './utils/translations';
6
- export { getStarlightEcConfigPreprocessor } from './integrations/expressive-code/preprocessor';
package/loaders.ts DELETED
@@ -1,63 +0,0 @@
1
- import { glob, type Loader, type LoaderContext } from 'astro/loaders';
2
- import { getCollectionPathFromRoot, type StarlightCollection } from './utils/collection';
3
-
4
- // https://github.com/withastro/astro/blob/main/packages/astro/src/core/constants.ts#L87
5
- // https://github.com/withastro/astro/blob/main/packages/integrations/mdx/src/index.ts#L59
6
- const docsExtensions = ['markdown', 'mdown', 'mkdn', 'mkd', 'mdwn', 'md', 'mdx'];
7
- const i18nExtensions = ['json', 'yml', 'yaml'];
8
-
9
- type GlobOptions = Parameters<typeof glob>[0];
10
- type GenerateIdFunction = NonNullable<GlobOptions['generateId']>;
11
-
12
- /**
13
- * Loads content files from the `src/content/docs/` directory, ignoring filenames starting with `_`.
14
- */
15
- export function docsLoader({
16
- generateId,
17
- }: {
18
- /**
19
- * Function that generates an ID for an entry. Default implementation generates a slug from the entry path.
20
- * @returns The ID of the entry. Must be unique per collection.
21
- **/
22
- generateId?: GenerateIdFunction;
23
- } = {}): Loader {
24
- return {
25
- name: 'starlight-docs-loader',
26
- load: createGlobLoadFn('docs', generateId),
27
- };
28
- }
29
-
30
- /**
31
- * Loads data files from the `src/content/i18n/` directory, ignoring filenames starting with `_`.
32
- */
33
- export function i18nLoader(): Loader {
34
- return {
35
- name: 'starlight-i18n-loader',
36
- load: createGlobLoadFn('i18n'),
37
- };
38
- }
39
-
40
- function createGlobLoadFn(
41
- collection: StarlightCollection,
42
- generateId?: GenerateIdFunction
43
- ): Loader['load'] {
44
- return (context: LoaderContext) => {
45
- const extensions = collection === 'docs' ? docsExtensions : i18nExtensions;
46
-
47
- if (
48
- collection === 'docs' &&
49
- context.config.integrations.find(({ name }) => name === '@astrojs/markdoc')
50
- ) {
51
- // https://github.com/withastro/astro/blob/main/packages/integrations/markdoc/src/content-entry-type.ts#L28
52
- extensions.push('mdoc');
53
- }
54
-
55
- const options: GlobOptions = {
56
- base: getCollectionPathFromRoot(collection, context.config),
57
- pattern: `**/[^_]*.{${extensions.join(',')}}`,
58
- };
59
- if (generateId) options.generateId = generateId;
60
-
61
- return glob(options).load(context);
62
- };
63
- }
package/locals.d.ts DELETED
@@ -1,43 +0,0 @@
1
- /**
2
- * This namespace is reserved for Starlight (only used for i18n at the moment).
3
- * It can be extended by plugins using module augmentation and interface merging.
4
- * For an example, see: https://starlight.astro.build/reference/plugins/#injecttranslations
5
- */
6
- declare namespace StarlightApp {
7
- interface I18n {}
8
- }
9
-
10
- /**
11
- * Extending Astro’s `App.Locals` interface registers types for the middleware added by Starlight.
12
- */
13
- declare namespace App {
14
- interface Locals {
15
- /**
16
- * Starlight’s localization API, powered by i18next.
17
- *
18
- * @see https://starlight.astro.build/guides/i18n/#using-ui-translations
19
- *
20
- * @example
21
- * // Render a UI string for the current locale.
22
- * <p>{Astro.locals.t('404.text')}</p>
23
- */
24
- t: import('./utils/createTranslationSystem').I18nT;
25
-
26
- /**
27
- * Starlight’s data for the current route.
28
- *
29
- * @see https://starlight.astro.build/guides/route-data/
30
- *
31
- * @throws Will throw an error if accessed on non-Starlight routes.
32
- *
33
- * @example
34
- * // Render the title for the current page
35
- * <h1>{Astro.locals.starlightRoute.entry.data.title}</h1>
36
- *
37
- * @example
38
- * // Check if the current page should render the sidebar
39
- * const { hasSidebar } = Astro.locals.starlightRoute;
40
- */
41
- starlightRoute: import('./utils/routing/types').StarlightRouteData;
42
- }
43
- }
package/locals.ts DELETED
@@ -1,43 +0,0 @@
1
- import type { APIContext } from 'astro';
2
- import { AstroError } from 'astro/errors';
3
- import { defineMiddleware } from 'astro:middleware';
4
- import type { StarlightRouteData } from './route-data';
5
- import { useTranslations } from './utils/translations';
6
-
7
- export const onRequest = defineMiddleware(async (context, next) => {
8
- context.locals.t = useTranslations(context.currentLocale);
9
- initializeStarlightRoute(context);
10
- return next();
11
- });
12
-
13
- /**
14
- * Sets up a `starlightRoute` property on locals. Initially, this will throw an error if accessed.
15
- * When rendering, Starlight’s routes set `starlightRoute` with the resolved route data object for
16
- * the current page.
17
- *
18
- * This ensures Starlight components can easily access `starlightRoute` without needing type guards,
19
- * we can throw a helpful message if `starlightRoute` is accessed on non-Starlight pages, and we
20
- * avoid generating route data in this middleware which also runs for non-Starlight route.
21
- */
22
- export function initializeStarlightRoute(context: APIContext) {
23
- if ('starlightRoute' in context.locals) return;
24
- const state: { routeData: StarlightRouteData | undefined } = { routeData: undefined };
25
- Object.defineProperty(context.locals, 'starlightRoute', {
26
- get() {
27
- if (!state.routeData) {
28
- throw new AstroError(
29
- '`locals.starlightRoute` is not defined',
30
- 'This usually means a component that accesses `locals.starlightRoute` is being rendered outside of a Starlight page, which is not supported.\n\n' +
31
- 'If this is a component you authored, you can do one of the following:\n\n' +
32
- '1. Avoid using this component in non-Starlight pages.\n' +
33
- '2. Wrap the code that reads `locals.starlightRoute` in a `try/catch` block and handle the cases where `starlightRoute` is not available.\n\n' +
34
- 'If this is a Starlight built-in or third-party component, you may need to report a bug or avoid this use of the component.'
35
- );
36
- }
37
- return state.routeData;
38
- },
39
- set(routeData: StarlightRouteData) {
40
- state.routeData = routeData;
41
- },
42
- });
43
- }
package/route-data.ts DELETED
@@ -1,11 +0,0 @@
1
- import type { APIContext } from 'astro';
2
- export type { StarlightRouteData } from './utils/routing/types';
3
-
4
- export type RouteMiddlewareHandler = (
5
- context: APIContext,
6
- next: () => Promise<void>
7
- ) => void | Promise<void>;
8
-
9
- export function defineRouteMiddleware(fn: RouteMiddlewareHandler) {
10
- return fn;
11
- }
package/schema.ts DELETED
@@ -1,167 +0,0 @@
1
- import { z } from 'astro/zod';
2
- import type { SchemaContext } from 'astro:content';
3
- import { HeadConfigSchema } from './schemas/head';
4
- import { PrevNextLinkConfigSchema } from './schemas/prevNextLink';
5
- import { FrontmatterTableOfContentsSchema } from './schemas/tableOfContents';
6
- import { BadgeConfigSchema } from './schemas/badge';
7
- import { HeroSchema } from './schemas/hero';
8
- import { SidebarLinkItemHTMLAttributesSchema } from './schemas/sidebar';
9
- import { deepMergeSchemas, type DeepMergedSchema } from './utils/zodDeepMerge';
10
- export { i18nSchema } from './schemas/i18n';
11
-
12
- /** Default content collection schema for Starlight’s `docs` collection. */
13
- const StarlightFrontmatterSchema = (context: SchemaContext) =>
14
- z.object({
15
- /** The title of the current page. Required. */
16
- title: z.string(),
17
-
18
- /**
19
- * A short description of the current page’s content. Optional, but recommended.
20
- * A good description is 150–160 characters long and outlines the key content
21
- * of the page in a clear and engaging way.
22
- */
23
- description: z.string().optional(),
24
-
25
- /**
26
- * Custom URL where a reader can edit this page.
27
- * Overrides the `editLink.baseUrl` global config if set.
28
- *
29
- * Can also be set to `false` to disable showing an edit link on this page.
30
- */
31
- editUrl: z.union([z.url(), z.boolean()]).optional().default(true),
32
-
33
- /** Set custom `<head>` tags just for this page. */
34
- head: HeadConfigSchema({ source: 'content' }),
35
-
36
- /** Override global table of contents configuration for this page. */
37
- tableOfContents: FrontmatterTableOfContentsSchema(),
38
-
39
- /**
40
- * Set the layout style for this page.
41
- * Can be `'doc'` (the default) or `'splash'` for a wider layout without any sidebars.
42
- */
43
- template: z.enum(['doc', 'splash']).default('doc'),
44
-
45
- /** Display a hero section on this page. */
46
- hero: HeroSchema(context).optional(),
47
-
48
- /**
49
- * The last update date of the current page.
50
- * Overrides the `lastUpdated` global config or the date generated from the Git history.
51
- */
52
- lastUpdated: z.union([z.date(), z.boolean()]).optional(),
53
-
54
- /**
55
- * The previous navigation link configuration.
56
- * Overrides the `pagination` global config or the link text and/or URL.
57
- */
58
- prev: PrevNextLinkConfigSchema(),
59
- /**
60
- * The next navigation link configuration.
61
- * Overrides the `pagination` global config or the link text and/or URL.
62
- */
63
- next: PrevNextLinkConfigSchema(),
64
-
65
- sidebar: z
66
- .object({
67
- /**
68
- * The order of this page in the navigation.
69
- * Pages are sorted by this value in ascending order. Then by slug.
70
- * If not provided, pages will be sorted alphabetically by slug.
71
- * If two pages have the same order value, they will be sorted alphabetically by slug.
72
- */
73
- order: z.number().optional(),
74
-
75
- /**
76
- * The label for this page in the navigation.
77
- * Defaults to the page `title` if not set.
78
- */
79
- label: z.string().optional(),
80
-
81
- /**
82
- * Prevents this page from being included in autogenerated sidebar groups.
83
- */
84
- hidden: z.boolean().default(false),
85
- /**
86
- * Adds a badge to the sidebar link.
87
- * Can be a string or an object with a variant and text.
88
- * Variants include 'note', 'tip', 'caution', 'danger', 'success', and 'default'.
89
- * Passing only a string defaults to the 'default' variant which uses the site accent color.
90
- */
91
- badge: BadgeConfigSchema(),
92
- /** HTML attributes to add to the sidebar link. */
93
- attrs: SidebarLinkItemHTMLAttributesSchema(),
94
- })
95
- .prefault({}),
96
-
97
- /** Display an announcement banner at the top of this page. */
98
- banner: z
99
- .object({
100
- /** The content of the banner. Supports HTML syntax. */
101
- content: z.string(),
102
- })
103
- .optional(),
104
-
105
- /** Pagefind indexing for this page - set to false to disable. */
106
- pagefind: z.boolean().default(true),
107
-
108
- /**
109
- * Indicates that this page is a draft and will not be included in production builds.
110
- * Note that the page will still be available when running Astro in development mode.
111
- */
112
- draft: z.boolean().default(false),
113
- });
114
- /** Type of Starlight’s default frontmatter schema. */
115
- type DefaultSchema = ReturnType<typeof StarlightFrontmatterSchema>;
116
-
117
- /** Base subset of Zod types that we support passing to the `extend` option. */
118
- type BaseObjectSchema = z.ZodObject<z.ZodRawShape, z.core.$ZodObjectConfig>;
119
- type BaseSchema = BaseObjectSchema | z.ZodUnion<readonly BaseObjectSchema[]>;
120
-
121
- /** Type that extends Starlight’s default schema with an optional, user-defined schema. */
122
- type ExtendedSchema<T extends BaseSchema = never> = [T] extends [never]
123
- ? DefaultSchema
124
- : DeepMergedSchema<DefaultSchema, T>;
125
-
126
- interface DocsSchemaOpts<T extends BaseSchema> {
127
- /**
128
- * Extend Starlight’s schema with additional fields.
129
- *
130
- * @example
131
- * // Extend the built-in schema with a Zod schema.
132
- * docsSchema({
133
- * extend: z.object({
134
- * // Add a new field to the schema.
135
- * category: z.enum(['tutorial', 'guide', 'reference']).optional(),
136
- * }),
137
- * })
138
- *
139
- * // Use the Astro image helper.
140
- * docsSchema({
141
- * extend: ({ image }) => {
142
- * return z.object({
143
- * cover: image(),
144
- * });
145
- * },
146
- * })
147
- */
148
- extend?: T | ((context: SchemaContext) => T);
149
- }
150
-
151
- /** Content collection schema for Starlight’s `docs` collection. */
152
- export function docsSchema<T extends BaseSchema = never>(
153
- ...args: [DocsSchemaOpts<T>?]
154
- ): (context: SchemaContext) => ExtendedSchema<T> {
155
- const [options = {}] = args;
156
- const { extend } = options;
157
-
158
- return (context: SchemaContext) => {
159
- const UserSchema = typeof extend === 'function' ? extend(context) : extend;
160
-
161
- return (
162
- UserSchema
163
- ? deepMergeSchemas(StarlightFrontmatterSchema(context), UserSchema)
164
- : StarlightFrontmatterSchema(context)
165
- ) as ExtendedSchema<T>;
166
- };
167
- }
package/schemas/badge.ts DELETED
@@ -1,40 +0,0 @@
1
- import { z } from 'astro/zod';
2
-
3
- const badgeBaseSchema = z.object({
4
- variant: z.enum(['note', 'danger', 'success', 'caution', 'tip', 'default']).default('default'),
5
- class: z.string().optional(),
6
- });
7
-
8
- const badgeSchema = z.object({
9
- ...badgeBaseSchema.shape,
10
- text: z.string(),
11
- });
12
-
13
- const i18nBadgeSchema = z.object({
14
- ...badgeBaseSchema.shape,
15
- text: z.union([z.string(), z.record(z.string(), z.string())]),
16
- });
17
-
18
- export const BadgeComponentSchema = z.looseObject({
19
- ...badgeSchema.shape,
20
- size: z.enum(['small', 'medium', 'large']).default('small'),
21
- });
22
-
23
- export type BadgeComponentProps = z.input<typeof BadgeComponentSchema>;
24
-
25
- export const BadgeConfigSchema = () =>
26
- z
27
- .union([z.string(), badgeSchema])
28
- .transform((badge) => {
29
- if (typeof badge === 'string') {
30
- return { variant: 'default' as const, text: badge };
31
- }
32
- return badge;
33
- })
34
- .optional();
35
-
36
- export const I18nBadgeConfigSchema = () => z.union([z.string(), i18nBadgeSchema]).optional();
37
-
38
- export type Badge = z.output<typeof badgeSchema>;
39
- export type I18nBadge = z.output<typeof i18nBadgeSchema>;
40
- export type I18nBadgeConfig = z.output<ReturnType<typeof I18nBadgeConfigSchema>>;