demos.ts 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. import type { RouteRecordRaw } from 'vue-router';
  2. import { $t } from '@vben/locales/helper';
  3. import { BasicLayout, IFrameView } from '#/layouts';
  4. const routes: RouteRecordRaw[] = [
  5. {
  6. component: BasicLayout,
  7. meta: {
  8. icon: 'ic:baseline-view-in-ar',
  9. keepAlive: true,
  10. order: 1000,
  11. title: $t('page.demos.title'),
  12. },
  13. name: 'Demos',
  14. path: '/demos',
  15. redirect: '/demos/fallback/403',
  16. children: [
  17. {
  18. meta: {
  19. icon: 'mdi:lightbulb-error-outline',
  20. title: $t('page.demos.fallback.title'),
  21. },
  22. name: 'FallbackLayout',
  23. path: '/fallback',
  24. redirect: '/fallback/403',
  25. children: [
  26. {
  27. name: 'Fallback403',
  28. path: '403',
  29. component: () =>
  30. import('#/views/_essential/fallback/forbidden.vue'),
  31. meta: {
  32. icon: 'mdi:do-not-disturb-alt',
  33. title: '403',
  34. },
  35. },
  36. {
  37. name: 'Fallback404',
  38. path: '404',
  39. component: () =>
  40. import('#/views/_essential/fallback/not-found.vue'),
  41. meta: {
  42. icon: 'mdi:table-off',
  43. title: '404',
  44. },
  45. },
  46. {
  47. name: 'Fallback500',
  48. path: '500',
  49. component: () =>
  50. import('#/views/_essential/fallback/internal-error.vue'),
  51. meta: {
  52. icon: 'mdi:server-network-off',
  53. title: '500',
  54. },
  55. },
  56. {
  57. name: 'FallbackOffline',
  58. path: 'offline',
  59. component: () => import('#/views/_essential/fallback/offline.vue'),
  60. meta: {
  61. icon: 'mdi:offline',
  62. title: $t('fallback.offline'),
  63. },
  64. },
  65. ],
  66. },
  67. {
  68. meta: {
  69. icon: 'ic:round-settings-input-composite',
  70. title: $t('page.demos.outside.title'),
  71. },
  72. name: 'Outside',
  73. path: '/outside',
  74. redirect: '/outside/iframe',
  75. children: [
  76. {
  77. name: 'iframe',
  78. path: 'iframe',
  79. meta: {
  80. icon: 'mdi:newspaper-variant-outline',
  81. title: $t('page.demos.outside.embedded'),
  82. },
  83. redirect: '/outside/iframe/vue-document',
  84. children: [
  85. {
  86. name: 'VueDocument',
  87. path: 'vue-document',
  88. component: IFrameView,
  89. meta: {
  90. icon: 'logos:vue',
  91. iframeSrc: 'https://cn.vuejs.org/',
  92. keepAlive: true,
  93. title: 'Vue',
  94. },
  95. },
  96. {
  97. name: 'Tailwindcss',
  98. path: 'tailwindcss',
  99. component: IFrameView,
  100. meta: {
  101. icon: 'devicon:tailwindcss',
  102. iframeSrc: 'https://tailwindcss.com/',
  103. // keepAlive: true,
  104. title: 'Tailwindcss',
  105. },
  106. },
  107. ],
  108. },
  109. {
  110. name: 'ExternalLink',
  111. path: 'external-link',
  112. meta: {
  113. icon: 'mdi:newspaper-variant-multiple-outline',
  114. title: $t('page.demos.outside.external-link'),
  115. },
  116. redirect: '/outside/external-link/vite',
  117. children: [
  118. {
  119. name: 'Vite',
  120. path: 'vite',
  121. component: IFrameView,
  122. meta: {
  123. icon: 'logos:vitejs',
  124. link: 'https://vitejs.dev/',
  125. title: 'Vite',
  126. },
  127. },
  128. {
  129. name: 'VueUse',
  130. path: 'vue-use',
  131. component: IFrameView,
  132. meta: {
  133. icon: 'logos:vueuse',
  134. link: 'https://vueuse.org',
  135. title: 'VueUse',
  136. },
  137. },
  138. ],
  139. },
  140. ],
  141. },
  142. {
  143. meta: {
  144. icon: 'ic:round-menu',
  145. title: $t('page.demos.nested.title'),
  146. },
  147. name: 'Nested',
  148. path: 'nested',
  149. redirect: '/demos/nested/menu1',
  150. children: [
  151. {
  152. name: 'Menu1',
  153. path: 'menu1',
  154. component: () => import('#/views/demos/nested/menu-1.vue'),
  155. meta: {
  156. icon: 'ic:round-menu',
  157. keepAlive: true,
  158. title: $t('page.demos.nested.menu1'),
  159. },
  160. },
  161. {
  162. name: 'Menu2',
  163. path: 'menu2',
  164. meta: {
  165. icon: 'ic:round-menu',
  166. keepAlive: true,
  167. title: $t('page.demos.nested.menu2'),
  168. },
  169. redirect: '/nested/menu2/menu2-1',
  170. children: [
  171. {
  172. name: 'Menu21',
  173. path: 'menu2-1',
  174. component: () => import('#/views/demos/nested/menu-2-1.vue'),
  175. meta: {
  176. icon: 'ic:round-menu',
  177. keepAlive: true,
  178. title: $t('page.demos.nested.menu21'),
  179. },
  180. },
  181. ],
  182. },
  183. {
  184. name: 'Menu3',
  185. path: 'menu3',
  186. meta: {
  187. icon: 'ic:round-menu',
  188. title: $t('page.demos.nested.menu3'),
  189. },
  190. redirect: '/nested/menu3/menu3-1',
  191. children: [
  192. {
  193. name: 'Menu31',
  194. path: 'menu3-1',
  195. component: () => import('#/views/demos/nested/menu-3-1.vue'),
  196. meta: {
  197. icon: 'ic:round-menu',
  198. keepAlive: true,
  199. title: $t('page.demos.nested.menu31'),
  200. },
  201. },
  202. {
  203. name: 'Menu32',
  204. path: 'menu3-2',
  205. meta: {
  206. icon: 'ic:round-menu',
  207. title: $t('page.demos.nested.menu32'),
  208. },
  209. redirect: '/nested/menu3/menu3-2/menu3-2-1',
  210. children: [
  211. {
  212. name: 'Menu321',
  213. path: 'menu3-2-1',
  214. component: () =>
  215. import('#/views/demos/nested/menu-3-2-1.vue'),
  216. meta: {
  217. icon: 'ic:round-menu',
  218. keepAlive: true,
  219. title: $t('page.demos.nested.menu321'),
  220. },
  221. },
  222. ],
  223. },
  224. ],
  225. },
  226. ],
  227. },
  228. ],
  229. },
  230. ];
  231. export default routes;