config.ts 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. import { defineConfig } from 'vitepress'
  2. const githubSocialLink = {
  3. icon: {
  4. svg: '<svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path fill="currentColor" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8Z"></path></svg>'
  5. },
  6. link: 'https://github.com/flyfish-dev/file-viewer'
  7. }
  8. const enNav = [
  9. { text: 'Docs', link: '/en/guide/' },
  10. { text: 'Quickstart', link: '/en/guide/quickstart' },
  11. { text: 'Ecosystem', link: '/en/guide/ecosystem' },
  12. { text: 'Formats', link: '/en/guide/formats' },
  13. {
  14. text: 'Resources',
  15. items: [
  16. { text: 'Live Demo', link: 'https://demo.file-viewer.app' },
  17. { text: 'Compare Demo', link: 'https://demo.file-viewer.app/compare.html' },
  18. { text: 'npm Core', link: 'https://www.npmjs.com/package/@file-viewer/core' },
  19. { text: 'npm Web Component', link: 'https://www.npmjs.com/package/@file-viewer/web' },
  20. { text: 'npm Vue 3', link: 'https://www.npmjs.com/package/@file-viewer/vue3' },
  21. { text: 'npm React', link: 'https://www.npmjs.com/package/@file-viewer/react' },
  22. { text: 'npm Svelte', link: 'https://www.npmjs.com/package/@file-viewer/svelte' },
  23. { text: 'GitHub Repository', link: 'https://github.com/flyfish-dev/file-viewer' },
  24. { text: 'GitHub Wiki', link: 'https://github.com/flyfish-dev/file-viewer/wiki' },
  25. { text: 'Sponsor / Priority Support', link: 'https://dev.flyfish.group/shop' }
  26. ]
  27. }
  28. ]
  29. const enSidebar = {
  30. '/en/guide/': [
  31. {
  32. text: 'Start Here',
  33. items: [
  34. { text: 'Docs Home', link: '/en/guide/' },
  35. { text: 'Overview', link: '/en/guide/overview' },
  36. { text: 'Demo Guide', link: '/en/guide/demo' },
  37. { text: 'Quickstart', link: '/en/guide/quickstart' },
  38. ]
  39. },
  40. {
  41. text: 'Integration',
  42. items: [
  43. { text: 'Ecosystem Packages', link: '/en/guide/ecosystem' },
  44. { text: 'Modular Assembly', link: '/en/guide/on-demand-renderers' },
  45. { text: 'Vanilla JS / Script Tag', link: '/en/guide/quickstart-web' },
  46. { text: 'Vue 3', link: '/en/guide/quickstart-vue3' },
  47. { text: 'Vue 2.7 / 2.6', link: '/en/guide/quickstart-vue2' },
  48. { text: 'React', link: '/en/guide/quickstart-react' },
  49. { text: 'React Legacy', link: '/en/guide/ecosystem#react-legacy' },
  50. { text: 'jQuery', link: '/en/guide/ecosystem#jquery' },
  51. { text: 'Svelte', link: '/en/guide/ecosystem#svelte' },
  52. { text: 'Core API', link: '/en/guide/ecosystem#core-api' },
  53. { text: 'PPTX Engine', link: '/en/guide/ecosystem#pptx-engine' },
  54. { text: 'Component Options', link: '/en/guide/usage' }
  55. ]
  56. },
  57. {
  58. text: 'Capability',
  59. items: [
  60. { text: 'Supported Formats', link: '/en/guide/formats' },
  61. { text: 'Format Fidelity', link: '/en/guide/format-fidelity' },
  62. { text: 'Comparison', link: '/en/guide/compare' },
  63. { text: 'FAQ', link: '/en/guide/faq' }
  64. ]
  65. },
  66. {
  67. text: 'Development And Release',
  68. items: [
  69. { text: 'Local Development', link: '/en/guide/development' },
  70. { text: 'Docker Deployment', link: '/en/guide/docker' },
  71. { text: 'Distribution', link: '/en/guide/distribution' }
  72. ]
  73. },
  74. {
  75. text: 'More',
  76. items: [
  77. { text: 'Changelog', link: '/changelog' },
  78. { text: 'Sponsor', link: '/donate' }
  79. ]
  80. }
  81. ]
  82. }
  83. const enSearch = {
  84. provider: 'local' as const,
  85. options: {
  86. locales: {
  87. root: {
  88. translations: {
  89. button: {
  90. buttonText: 'Search docs',
  91. buttonAriaLabel: 'Search docs'
  92. },
  93. modal: {
  94. displayDetails: 'Display details',
  95. resetButtonTitle: 'Reset search',
  96. backButtonTitle: 'Back',
  97. noResultsText: 'No results found',
  98. footer: {
  99. selectText: 'select',
  100. navigateText: 'navigate',
  101. closeText: 'close'
  102. }
  103. }
  104. }
  105. }
  106. }
  107. }
  108. }
  109. export default defineConfig({
  110. lang: 'zh-CN',
  111. title: 'Flyfish Viewer',
  112. description: '面向企业后台、内网和私有化系统的纯前端文件预览组件,无需服务端转码,覆盖 206+ 扩展名和 24 条预览链路。',
  113. cleanUrls: true,
  114. lastUpdated: true,
  115. locales: {
  116. root: {
  117. label: '简体中文',
  118. lang: 'zh-CN'
  119. },
  120. en: {
  121. label: 'English',
  122. lang: 'en-US',
  123. link: '/en/',
  124. title: 'Flyfish Viewer',
  125. description: 'Browser-native file preview for internal web apps, covering 206+ extensions across 24 preview pipelines without server-side conversion.',
  126. themeConfig: {
  127. logo: '/_media/logo.svg',
  128. nav: enNav,
  129. sidebar: enSidebar,
  130. outline: { level: [2, 3], label: 'On This Page' },
  131. docFooter: {
  132. prev: 'Previous page',
  133. next: 'Next page'
  134. },
  135. lastUpdatedText: 'Last updated',
  136. search: enSearch,
  137. socialLinks: [githubSocialLink],
  138. footer: {
  139. message: 'Released under the Apache-2.0 License.',
  140. copyright: 'Copyright © 2026 Flyfish Viewer'
  141. }
  142. }
  143. }
  144. },
  145. head: [
  146. ['meta', { name: 'theme-color', content: '#1d6fd6' }],
  147. ['meta', { property: 'og:title', content: 'Flyfish Viewer' }],
  148. ['meta', { property: 'og:description', content: '面向企业后台、内网和私有化系统的纯前端文件预览组件,覆盖 206+ 扩展名和 24 条预览链路。' }]
  149. ],
  150. themeConfig: {
  151. logo: '/_media/logo.svg',
  152. nav: [
  153. { text: '文档', link: '/guide/' },
  154. { text: '快速开始', link: '/guide/quickstart' },
  155. { text: '生态接入', link: '/guide/ecosystem' },
  156. { text: '支持格式', link: '/guide/formats' },
  157. {
  158. text: '资源',
  159. items: [
  160. { text: '官方文档', link: 'https://doc.file-viewer.app' },
  161. { text: '官网门户', link: 'https://file-viewer.app' },
  162. { text: '在线 Demo', link: 'https://demo.file-viewer.app' },
  163. { text: 'npm Core', link: 'https://www.npmjs.com/package/@file-viewer/core' },
  164. { text: 'npm Vanilla JS / Pure Web', link: 'https://www.npmjs.com/package/@file-viewer/web' },
  165. { text: 'npm Vue3', link: 'https://www.npmjs.com/package/@file-viewer/vue3' },
  166. { text: 'npm React', link: 'https://www.npmjs.com/package/@file-viewer/react' },
  167. { text: 'npm Svelte', link: 'https://www.npmjs.com/package/@file-viewer/svelte' },
  168. { text: 'GitHub 开源总仓库', link: 'https://github.com/flyfish-dev/file-viewer' },
  169. { text: 'GitHub Wiki', link: 'https://github.com/flyfish-dev/file-viewer/wiki' },
  170. { text: 'Gitee 开源总仓库', link: 'https://gitee.com/flyfish-dev/file-viewer' },
  171. { text: '打赏与优先支持', link: 'https://dev.flyfish.group/shop' }
  172. ]
  173. }
  174. ],
  175. sidebar: {
  176. '/guide/': [
  177. {
  178. text: '开始阅读',
  179. items: [
  180. { text: '文档导览', link: '/guide/' },
  181. { text: '概述', link: '/guide/overview' },
  182. { text: 'Demo 说明', link: '/guide/demo' },
  183. { text: '快速开始', link: '/guide/quickstart' }
  184. ]
  185. },
  186. {
  187. text: '集成方式',
  188. items: [
  189. { text: '生态组件总览', link: '/guide/ecosystem' },
  190. { text: '模块化与按需装配', link: '/guide/on-demand-renderers#_2-1-0-推荐接入步骤' },
  191. { text: '纯 JS / Script 标签集成', link: '/guide/quickstart-web' },
  192. { text: 'Vue3 集成', link: '/guide/quickstart-vue3' },
  193. { text: 'Vue2.7 / 2.6 集成', link: '/guide/quickstart-vue2' },
  194. { text: 'React 集成', link: '/guide/quickstart-react' },
  195. { text: 'React Legacy 集成', link: '/guide/ecosystem#react-legacy' },
  196. { text: 'jQuery 集成', link: '/guide/ecosystem#jquery' },
  197. { text: 'Svelte 集成', link: '/guide/ecosystem#svelte' },
  198. { text: 'Core 自定义接入', link: '/guide/ecosystem#core' },
  199. { text: 'PPTX 引擎接入', link: '/guide/ecosystem#pptx' },
  200. { text: '组件用法', link: '/guide/usage' }
  201. ]
  202. },
  203. {
  204. text: '能力与边界',
  205. items: [
  206. { text: '支持格式', link: '/guide/formats' },
  207. { text: '格式完整度', link: '/guide/format-fidelity' },
  208. { text: '方案对比', link: '/guide/compare' },
  209. { text: '按需渲染架构', link: '/guide/on-demand-renderers' },
  210. { text: '常见问题', link: '/guide/faq' }
  211. ]
  212. },
  213. {
  214. text: '开发与发布',
  215. items: [
  216. { text: '本地开发与打包', link: '/guide/development' },
  217. { text: 'Docker 部署', link: '/guide/docker' },
  218. { text: '发布与开源分发', link: '/guide/distribution' }
  219. ]
  220. },
  221. {
  222. text: '更多信息',
  223. items: [
  224. { text: '更新日志', link: '/changelog' },
  225. { text: '捐赠支持', link: '/donate' }
  226. ]
  227. }
  228. ]
  229. },
  230. outline: { level: [2, 3], label: '本页导航' },
  231. docFooter: {
  232. prev: '上一页',
  233. next: '下一页'
  234. },
  235. lastUpdatedText: '最近更新',
  236. search: {
  237. provider: 'local',
  238. options: {
  239. locales: {
  240. root: {
  241. translations: {
  242. button: {
  243. buttonText: '搜索文档',
  244. buttonAriaLabel: '搜索文档'
  245. },
  246. modal: {
  247. displayDetails: '显示详情',
  248. resetButtonTitle: '清空搜索',
  249. backButtonTitle: '返回',
  250. noResultsText: '没有找到相关内容',
  251. footer: {
  252. selectText: '选择',
  253. navigateText: '切换',
  254. closeText: '关闭'
  255. }
  256. }
  257. }
  258. }
  259. }
  260. }
  261. },
  262. socialLinks: [
  263. githubSocialLink
  264. ],
  265. footer: {
  266. message: 'Released under the Apache-2.0 License.',
  267. copyright: 'Copyright © 2026 Flyfish Viewer'
  268. }
  269. }
  270. })