config.ts 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. import { createRequire } from 'module'
  2. import { defineAdditionalConfig, type DefaultTheme } from 'vitepress'
  3. const require = createRequire(import.meta.url)
  4. const pkg = require('vitepress/package.json')
  5. export default defineAdditionalConfig({
  6. lang: 'fa-IR',
  7. description: 'ژنراتور استاتیک وب‌سایت با Vite و Vue',
  8. dir: 'rtl',
  9. // prettier-ignore
  10. head: [
  11. ['link', { rel: 'preconnect', href: 'https://fonts.googleapis.com' }],
  12. ['link', { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' }],
  13. ['link', { href: 'https://fonts.googleapis.com/css2?family=Vazirmatn:wght@100..900&display=swap', rel: 'stylesheet' }],
  14. ],
  15. themeConfig: {
  16. nav: nav(),
  17. search: { options: searchOptions() },
  18. sidebar: {
  19. '/fa/guide/': { base: '/fa/guide/', items: sidebarGuide() },
  20. '/fa/reference/': { base: '/fa/reference/', items: sidebarReference() }
  21. },
  22. editLink: {
  23. pattern: 'https://github.com/vuejs/vitepress/edit/main/docs/:path',
  24. text: 'ویرایش این صفحه در گیت‌هاب'
  25. },
  26. footer: {
  27. message: 'انتشار یافته تحت لایسنس MIT',
  28. copyright: 'حق نسخه‌برداری © 2019-کنون Evan You'
  29. },
  30. docFooter: {
  31. prev: 'قبلی',
  32. next: 'بعدی'
  33. },
  34. outline: {
  35. label: 'در این صفحه'
  36. },
  37. lastUpdated: {
  38. text: 'آخرین به‌روزرسانی‌'
  39. },
  40. notFound: {
  41. title: 'صفحه پیدا نشد',
  42. quote:
  43. 'اما اگر جهت خود را تغییر ندهید و همچنان به جستجو ادامه دهید، ممکن است در نهایت به جایی برسید که در حال رفتن به آن هستید.',
  44. linkLabel: 'برو به خانه',
  45. linkText: 'من را به خانه ببر'
  46. },
  47. langMenuLabel: 'تغییر زبان',
  48. returnToTopLabel: 'بازگشت به بالا',
  49. sidebarMenuLabel: 'منوی جانبی',
  50. darkModeSwitchLabel: 'تم تاریک',
  51. lightModeSwitchTitle: 'رفتن به حالت روشن',
  52. darkModeSwitchTitle: 'رفتن به حالت تاریک',
  53. siteTitle: 'ویت‌پرس'
  54. }
  55. })
  56. function nav(): DefaultTheme.NavItem[] {
  57. return [
  58. {
  59. text: 'راهنما',
  60. link: 'fa/guide/what-is-vitepress',
  61. activeMatch: '/guide/'
  62. },
  63. {
  64. text: 'مرجع',
  65. link: 'fa/reference/site-config',
  66. activeMatch: '/reference/'
  67. },
  68. {
  69. text: pkg.version,
  70. items: [
  71. {
  72. text: 'Changelog',
  73. link: 'https://github.com/vuejs/vitepress/blob/main/CHANGELOG.md'
  74. },
  75. {
  76. text: 'مشارکت',
  77. link: 'https://github.com/vuejs/vitepress/blob/main/.github/contributing.md'
  78. }
  79. ]
  80. }
  81. ]
  82. }
  83. function sidebarGuide(): DefaultTheme.SidebarItem[] {
  84. return [
  85. {
  86. text: 'معرفی',
  87. collapsed: false,
  88. items: [
  89. { text: 'ویت‌پرس چیست؟', link: 'what-is-vitepress' },
  90. { text: 'شروع کار', link: 'getting-started' },
  91. { text: 'مسیریابی', link: 'routing' },
  92. { text: 'استقرار', link: 'deploy' }
  93. ]
  94. },
  95. {
  96. text: 'نوشتن',
  97. collapsed: false,
  98. items: [
  99. { text: 'افزونه‌های Markdown', link: 'markdown' },
  100. { text: 'مدیریت منابع', link: 'asset-handling' },
  101. { text: 'Frontmatter', link: 'frontmatter' },
  102. { text: 'استفاده از Vue در Markdown', link: 'using-vue' },
  103. { text: 'بین‌المللی سازی', link: 'i18n' }
  104. ]
  105. },
  106. {
  107. text: 'شخصی‌سازی',
  108. collapsed: false,
  109. items: [
  110. { text: 'استفاده از تم شخصی', link: 'custom-theme' },
  111. {
  112. text: 'گسترش تم پیش‌فرض',
  113. link: 'extending-default-theme'
  114. },
  115. { text: 'بارگیری داده در زمان Build', link: 'data-loading' },
  116. { text: 'سازگاری SSR', link: 'ssr-compat' },
  117. { text: 'اتصال به CMS', link: 'cms' }
  118. ]
  119. },
  120. {
  121. text: 'آزمایشی',
  122. collapsed: false,
  123. items: [
  124. { text: 'حالت MPA', link: 'mpa-mode' },
  125. { text: 'جنریت کردن Sitemap', link: 'sitemap-generation' }
  126. ]
  127. },
  128. { text: 'پیکربندی و مرجع API', base: 'fa/reference/', link: 'site-config' }
  129. ]
  130. }
  131. function sidebarReference(): DefaultTheme.SidebarItem[] {
  132. return [
  133. {
  134. text: 'مرجع',
  135. base: 'fa/reference/',
  136. items: [
  137. { text: 'پیکربندی Site', link: 'site-config' },
  138. { text: 'پیکربندی Frontmatter', link: 'frontmatter-config' },
  139. { text: 'Runtime API', link: 'runtime-api' },
  140. { text: 'CLI', link: 'cli' },
  141. {
  142. text: 'تم پیش‌فرض',
  143. base: 'fa/reference/default-theme-',
  144. items: [
  145. { text: 'بررسی اجمالی', link: 'config' },
  146. { text: 'ناوبری', link: 'nav' },
  147. { text: 'نوار کنار صفحه', link: 'sidebar' },
  148. { text: 'صفحه اصلی', link: 'home-page' },
  149. { text: 'پاورقی', link: 'footer' },
  150. { text: 'طرح', link: 'layout' },
  151. { text: 'نشان', link: 'badge' },
  152. { text: 'صفحه تیم', link: 'team-page' },
  153. { text: 'لینک‌های قبلی / بعدی', link: 'prev-next-links' },
  154. { text: 'ویرایش لینک', link: 'edit-link' },
  155. { text: 'Timestamp آخرین به‌روزرسانی', link: 'last-updated' },
  156. { text: 'جستجو', link: 'search' },
  157. { text: 'تبلیغات Carbon', link: 'carbon-ads' }
  158. ]
  159. }
  160. ]
  161. }
  162. ]
  163. }
  164. function searchOptions(): Partial<DefaultTheme.AlgoliaSearchOptions> {
  165. return {
  166. placeholder: 'جستجوی مستندات',
  167. translations: {
  168. button: {
  169. buttonText: 'جستجو',
  170. buttonAriaLabel: 'جستجو'
  171. },
  172. modal: {
  173. searchBox: {
  174. resetButtonTitle: 'آغاز مجدد جستجو',
  175. resetButtonAriaLabel: 'آغاز مجدد جستجو',
  176. cancelButtonText: 'لغو',
  177. cancelButtonAriaLabel: 'لغو'
  178. },
  179. startScreen: {
  180. recentSearchesTitle: 'جستجو‌های اخیر',
  181. noRecentSearchesText: 'تاریخچه جستجویی یافت نشد.',
  182. saveRecentSearchButtonTitle: 'ذخیره تاریخچه جستجو',
  183. removeRecentSearchButtonTitle: 'حذف تاریخچه جستجو',
  184. favoriteSearchesTitle: 'موارد دلخواه',
  185. removeFavoriteSearchButtonTitle: 'حذف مورد دلخواه'
  186. },
  187. errorScreen: {
  188. titleText: 'نتیجه‌ای یافت نشد برای',
  189. helpText: 'اتصال شبکه خود را بررسی کنید'
  190. },
  191. footer: {
  192. selectText: 'انتخاب',
  193. navigateText: 'رفتن',
  194. closeText: 'بستن',
  195. searchByText: ' جستجو با '
  196. },
  197. noResultsScreen: {
  198. noResultsText: 'نتیجه‌ای یافت نشد برای'
  199. }
  200. }
  201. }
  202. }
  203. }