mirror of
https://github.com/modrinth/code.git
synced 2026-08-31 03:55:59 +00:00
# Conflicts: # apps/app-frontend/src/pages/Browse.vue # apps/app-frontend/src/pages/hosting/manage/Index.vue # apps/app-frontend/src/pages/instance/Index.vue # apps/app-frontend/src/pages/project/Index.vue # apps/app-frontend/src/routes.js # apps/frontend/src/locales/en-US/index.json # apps/frontend/src/middleware/project.global.ts # apps/frontend/src/pages/[type]/[project].vue # apps/frontend/src/pages/discover/[type]/index.vue # apps/frontend/src/pages/organization/[organization].vue # apps/frontend/src/pages/user/[user].vue # packages/ui/src/components/base/FloatingActionBar.vue # packages/ui/src/components/base/PageHeader.vue # packages/ui/src/components/base/StackedAdmonitions.vue # packages/ui/src/components/base/TeleportOverflowMenu.vue # packages/ui/src/components/base/index.ts # packages/ui/src/components/project/ProjectHeader.vue # packages/ui/src/components/servers/server-header/ServerManageHeader.vue # packages/ui/src/components/servers/server-header/index.ts # packages/ui/src/composables/index.ts # packages/ui/src/layouts/shared/browse-tab/composables/use-browse-search.ts # packages/ui/src/layouts/shared/browse-tab/header.vue # packages/ui/src/layouts/shared/browse-tab/layout.vue # packages/ui/src/layouts/shared/content-tab/components/ContentModpackCard.vue # packages/ui/src/layouts/shared/content-tab/layout.vue # packages/ui/src/layouts/shared/installation-settings/components/ContentDiffModal.vue # packages/ui/src/layouts/shared/installation-settings/providers/installation-settings.ts # packages/ui/src/layouts/wrapped/hosting/manage/[id]/index.vue # packages/ui/src/locales/cs-CZ/index.json # packages/ui/src/locales/de-CH/index.json # packages/ui/src/locales/de-DE/index.json # packages/ui/src/locales/es-419/index.json # packages/ui/src/locales/es-ES/index.json # packages/ui/src/locales/fr-FR/index.json # packages/ui/src/locales/hu-HU/index.json # packages/ui/src/locales/id-ID/index.json # packages/ui/src/locales/it-IT/index.json # packages/ui/src/locales/ja-JP/index.json # packages/ui/src/locales/ko-KR/index.json # packages/ui/src/locales/ms-MY/index.json # packages/ui/src/locales/nl-NL/index.json # packages/ui/src/locales/pl-PL/index.json # packages/ui/src/locales/pt-BR/index.json # packages/ui/src/locales/ru-RU/index.json # packages/ui/src/locales/sv-SE/index.json # packages/ui/src/locales/tr-TR/index.json # packages/ui/src/locales/uk-UA/index.json # packages/ui/src/locales/vi-VN/index.json # packages/ui/src/locales/zh-CN/index.json # packages/ui/src/locales/zh-TW/index.json # packages/ui/src/stories/base/PageHeader.stories.ts # packages/ui/src/utils/file-extensions.ts
221 lines
4.4 KiB
JavaScript
221 lines
4.4 KiB
JavaScript
import { createRouter, createWebHistory } from 'vue-router'
|
|
|
|
import * as Pages from '@/pages'
|
|
import * as Hosting from '@/pages/hosting/manage'
|
|
import * as Instance from '@/pages/instance'
|
|
import * as Library from '@/pages/library'
|
|
import * as Project from '@/pages/project'
|
|
|
|
/**
|
|
* Configures application routing. Add page to pages/index and then add to route table here.
|
|
*/
|
|
export default new createRouter({
|
|
history: createWebHistory(),
|
|
routes: [
|
|
{
|
|
path: '/',
|
|
name: 'Home',
|
|
component: Pages.Index,
|
|
},
|
|
{
|
|
path: '/hosting/manage/',
|
|
name: 'Servers',
|
|
component: Pages.Servers,
|
|
},
|
|
{
|
|
path: '/hosting/manage/:id',
|
|
name: 'ServerManage',
|
|
component: Hosting.Index,
|
|
children: [
|
|
{
|
|
path: '',
|
|
name: 'ServerManageOverview',
|
|
component: Hosting.Overview,
|
|
},
|
|
{
|
|
path: 'content',
|
|
name: 'ServerManageContent',
|
|
component: Hosting.Content,
|
|
},
|
|
{
|
|
path: 'instances',
|
|
name: 'ServerManageInstances',
|
|
component: Hosting.Instances,
|
|
},
|
|
{
|
|
path: 'instances/:instance_id',
|
|
name: 'ServerManageInstance',
|
|
component: Hosting.Instance,
|
|
children: [
|
|
{
|
|
path: '',
|
|
name: 'ServerManageInstanceContent',
|
|
component: Hosting.Content,
|
|
},
|
|
{
|
|
path: 'files',
|
|
name: 'ServerManageInstanceFiles',
|
|
component: Hosting.Files,
|
|
},
|
|
{
|
|
path: 'backups',
|
|
name: 'ServerManageInstanceBackups',
|
|
component: Hosting.Backups,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: 'files',
|
|
name: 'ServerManageFiles',
|
|
component: Hosting.Files,
|
|
},
|
|
{
|
|
path: 'backups',
|
|
name: 'ServerManageBackups',
|
|
component: Hosting.Backups,
|
|
},
|
|
{
|
|
path: 'access',
|
|
name: 'ServerManageAccess',
|
|
component: Hosting.Access,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/browse/:projectType',
|
|
name: 'Discover content',
|
|
component: Pages.Browse,
|
|
},
|
|
{
|
|
path: '/skins',
|
|
name: 'Skin selector',
|
|
component: Pages.Skins,
|
|
},
|
|
{
|
|
path: '/user/:user/:projectType?',
|
|
name: 'User',
|
|
component: Pages.User,
|
|
},
|
|
{
|
|
path: '/library',
|
|
name: 'Library',
|
|
component: Library.Index,
|
|
children: [
|
|
{
|
|
path: '',
|
|
name: 'Overview',
|
|
component: Library.Overview,
|
|
},
|
|
{
|
|
path: 'downloaded',
|
|
name: 'Downloaded',
|
|
component: Library.Downloaded,
|
|
},
|
|
{
|
|
path: 'modpacks',
|
|
name: 'Modpacks',
|
|
component: Library.Modpacks,
|
|
},
|
|
{
|
|
path: 'servers',
|
|
name: 'LibraryServers',
|
|
component: Library.Servers,
|
|
},
|
|
{
|
|
path: 'custom',
|
|
name: 'Custom',
|
|
component: Library.Custom,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/:projectType(mod|plugin|datapack|resourcepack|shader|modpack)/:id/:rest(.*)*',
|
|
redirect: (to) => {
|
|
const rest = to.params.rest ? `/${[].concat(to.params.rest).join('/')}` : ''
|
|
return `/project/${to.params.id}${rest}${to.hash}`
|
|
},
|
|
},
|
|
{
|
|
path: '/project/:id',
|
|
name: 'Project',
|
|
component: Project.Index,
|
|
props: true,
|
|
children: [
|
|
{
|
|
path: '',
|
|
name: 'Description',
|
|
component: Project.Description,
|
|
},
|
|
{
|
|
path: 'versions',
|
|
name: 'Versions',
|
|
component: Project.Versions,
|
|
},
|
|
{
|
|
path: 'version/:version',
|
|
name: 'Version',
|
|
component: Project.Version,
|
|
props: true,
|
|
},
|
|
{
|
|
path: 'gallery',
|
|
name: 'Gallery',
|
|
component: Project.Gallery,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/instance/:id',
|
|
name: 'Instance',
|
|
component: Instance.Index,
|
|
props: true,
|
|
children: [
|
|
{
|
|
path: 'worlds',
|
|
name: 'InstanceWorlds',
|
|
component: Instance.Worlds,
|
|
},
|
|
{
|
|
path: 'share',
|
|
name: 'InstanceShare',
|
|
component: Instance.Share,
|
|
},
|
|
{
|
|
path: '',
|
|
name: 'Mods',
|
|
component: Instance.Mods,
|
|
},
|
|
{
|
|
path: 'projects/:type',
|
|
name: 'ModsFilter',
|
|
component: Instance.Mods,
|
|
},
|
|
{
|
|
path: 'files',
|
|
name: 'Files',
|
|
component: Instance.Files,
|
|
},
|
|
{
|
|
path: 'logs',
|
|
name: 'Logs',
|
|
component: Instance.Logs,
|
|
meta: {
|
|
renderMode: 'fixed',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
linkActiveClass: 'router-link-active',
|
|
linkExactActiveClass: 'router-link-exact-active',
|
|
scrollBehavior(to, from) {
|
|
if (to.path === from.path) return
|
|
// Sometimes Vue's scroll behavior is not working as expected, so we need to manually scroll to top (especially on Linux)
|
|
document.querySelector('.app-viewport')?.scrollTo(0, 0)
|
|
return {
|
|
el: '.app-viewport',
|
|
top: 0,
|
|
}
|
|
},
|
|
})
|