mirror of
https://github.com/makeplane/plane.git
synced 2025-12-22 22:59:33 +01:00
240 lines
12 KiB
TypeScript
240 lines
12 KiB
TypeScript
import { index, layout, route, prefix } from "@react-router/dev/routes";
|
|
import type { RouteConfig } from "@react-router/dev/routes";
|
|
|
|
export default [
|
|
// Home
|
|
layout("./(home)/layout.tsx", [index("./(home)/page.tsx")]),
|
|
|
|
// App Root (all)
|
|
layout("./(all)/layout.tsx", [
|
|
// Auth / invitations (leaf pages)
|
|
route("sign-up", "./(all)/sign-up/page.tsx"),
|
|
route("invitations", "./(all)/invitations/page.tsx"),
|
|
route("workspace-invitations", "./(all)/workspace-invitations/page.tsx"),
|
|
route("create-workspace", "./(all)/create-workspace/page.tsx"),
|
|
route("installations/:provider", "./(all)/installations/[provider]/page.tsx"),
|
|
route("accounts/forgot-password", "./(all)/accounts/forgot-password/page.tsx"),
|
|
route("accounts/reset-password", "./(all)/accounts/reset-password/page.tsx"),
|
|
route("accounts/set-password", "./(all)/accounts/set-password/page.tsx"),
|
|
route("onboarding", "./(all)/onboarding/page.tsx"),
|
|
|
|
// Profile
|
|
layout("./(all)/profile/layout.tsx", [
|
|
route("profile", "./(all)/profile/page.tsx"),
|
|
route("profile/appearance", "./(all)/profile/appearance/page.tsx"),
|
|
route("profile/notifications", "./(all)/profile/notifications/page.tsx"),
|
|
route("profile/activity", "./(all)/profile/activity/page.tsx"),
|
|
route("profile/security", "./(all)/profile/security/page.tsx"),
|
|
]),
|
|
|
|
// Workspace scope
|
|
route(":workspaceSlug", "./(all)/[workspaceSlug]/layout.tsx", [
|
|
// Settings
|
|
layout("./(all)/[workspaceSlug]/(settings)/layout.tsx", [
|
|
layout("./(all)/[workspaceSlug]/(settings)/settings/account/layout.tsx", [
|
|
route("settings/account", "./(all)/[workspaceSlug]/(settings)/settings/account/page.tsx"),
|
|
route("settings/account/activity", "./(all)/[workspaceSlug]/(settings)/settings/account/activity/page.tsx"),
|
|
route(
|
|
"settings/account/api-tokens",
|
|
"./(all)/[workspaceSlug]/(settings)/settings/account/api-tokens/page.tsx"
|
|
),
|
|
route(
|
|
"settings/account/notifications",
|
|
"./(all)/[workspaceSlug]/(settings)/settings/account/notifications/page.tsx"
|
|
),
|
|
route(
|
|
"settings/account/preferences",
|
|
"./(all)/[workspaceSlug]/(settings)/settings/account/preferences/page.tsx"
|
|
),
|
|
route("settings/account/security", "./(all)/[workspaceSlug]/(settings)/settings/account/security/page.tsx"),
|
|
]),
|
|
layout("./(all)/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx", [
|
|
route("settings", "./(all)/[workspaceSlug]/(settings)/settings/(workspace)/page.tsx"),
|
|
route("settings/members", "./(all)/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx"),
|
|
route("settings/billing", "./(all)/[workspaceSlug]/(settings)/settings/(workspace)/billing/page.tsx"),
|
|
route("settings/exports", "./(all)/[workspaceSlug]/(settings)/settings/(workspace)/exports/page.tsx"),
|
|
route("settings/imports", "./(all)/[workspaceSlug]/(settings)/settings/(workspace)/imports/page.tsx"),
|
|
route(
|
|
"settings/integrations",
|
|
"./(all)/[workspaceSlug]/(settings)/settings/(workspace)/integrations/page.tsx"
|
|
),
|
|
route("settings/webhooks", "./(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/page.tsx"),
|
|
route(
|
|
"settings/webhooks/:webhookId",
|
|
"./(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/[webhookId]/page.tsx"
|
|
),
|
|
]),
|
|
layout("./(all)/[workspaceSlug]/(settings)/settings/projects/layout.tsx", [
|
|
route("settings/projects", "./(all)/[workspaceSlug]/(settings)/settings/projects/page.tsx"),
|
|
route(
|
|
"settings/projects/:projectId",
|
|
"./(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/page.tsx"
|
|
),
|
|
route(
|
|
"settings/projects/:projectId/automations",
|
|
"./(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/automations/page.tsx"
|
|
),
|
|
route(
|
|
"settings/projects/:projectId/estimates",
|
|
"./(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/estimates/page.tsx"
|
|
),
|
|
route(
|
|
"settings/projects/:projectId/features",
|
|
"./(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/features/page.tsx"
|
|
),
|
|
route(
|
|
"settings/projects/:projectId/labels",
|
|
"./(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/labels/page.tsx"
|
|
),
|
|
route(
|
|
"settings/projects/:projectId/members",
|
|
"./(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/members/page.tsx"
|
|
),
|
|
route(
|
|
"settings/projects/:projectId/states",
|
|
"./(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/states/page.tsx"
|
|
),
|
|
]),
|
|
]),
|
|
|
|
// Projects scope
|
|
layout("./(all)/[workspaceSlug]/(projects)/layout.tsx", [
|
|
// Top-level project sections
|
|
index("./(all)/[workspaceSlug]/(projects)/page.tsx"),
|
|
route("active-cycles", "./(all)/[workspaceSlug]/(projects)/active-cycles/page.tsx"),
|
|
route("drafts", "./(all)/[workspaceSlug]/(projects)/drafts/page.tsx"),
|
|
route("notifications", "./(all)/[workspaceSlug]/(projects)/notifications/page.tsx"),
|
|
route("stickies", "./(all)/[workspaceSlug]/(projects)/stickies/page.tsx"),
|
|
route("workspace-views", "./(all)/[workspaceSlug]/(projects)/workspace-views/page.tsx"),
|
|
route(
|
|
"workspace-views/:globalViewId",
|
|
"./(all)/[workspaceSlug]/(projects)/workspace-views/[globalViewId]/page.tsx"
|
|
),
|
|
route("analytics/:tabId", "./(all)/[workspaceSlug]/(projects)/analytics/[tabId]/layout.tsx", [
|
|
index("./(all)/[workspaceSlug]/(projects)/analytics/[tabId]/page.tsx"),
|
|
]),
|
|
route("browse/:workItem", "./(all)/[workspaceSlug]/(projects)/browse/[workItem]/layout.tsx", [
|
|
index("./(all)/[workspaceSlug]/(projects)/browse/[workItem]/page.tsx"),
|
|
]),
|
|
|
|
// Projects list
|
|
layout("./(all)/[workspaceSlug]/(projects)/projects/(list)/layout.tsx", [
|
|
route("projects", "./(all)/[workspaceSlug]/(projects)/projects/(list)/page.tsx"),
|
|
]),
|
|
|
|
// Workspace-level Archives (not tied to a project)
|
|
layout("./(all)/[workspaceSlug]/(projects)/projects/(detail)/archives/layout.tsx", [
|
|
route("projects/archives", "./(all)/[workspaceSlug]/(projects)/projects/(detail)/archives/page.tsx"),
|
|
]),
|
|
|
|
// Project detail (attach :projectId at this layout level)
|
|
route("projects/:projectId", "./(all)/[workspaceSlug]/(projects)/projects/(detail)/layout.tsx", [
|
|
// Intake
|
|
layout("./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/layout.tsx", [
|
|
route("intake", "./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/intake/page.tsx"),
|
|
]),
|
|
|
|
// Cycles
|
|
layout("./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/layout.tsx", [
|
|
route("cycles", "./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/page.tsx"),
|
|
]),
|
|
route(
|
|
"cycles/:cycleId",
|
|
"./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/layout.tsx",
|
|
[
|
|
index(
|
|
"./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(detail)/[cycleId]/page.tsx"
|
|
),
|
|
]
|
|
),
|
|
|
|
// Issues
|
|
layout("./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/layout.tsx", [
|
|
route("issues", "./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(list)/page.tsx"),
|
|
route(
|
|
"issues/:issueId",
|
|
"./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(detail)/[issueId]/page.tsx"
|
|
),
|
|
]),
|
|
|
|
// Modules
|
|
layout("./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/layout.tsx", [
|
|
route(
|
|
"modules",
|
|
"./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(list)/page.tsx"
|
|
),
|
|
]),
|
|
route(
|
|
"modules/:moduleId",
|
|
"./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/layout.tsx",
|
|
[
|
|
index(
|
|
"./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/modules/(detail)/[moduleId]/page.tsx"
|
|
),
|
|
]
|
|
),
|
|
|
|
// Pages
|
|
layout("./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/layout.tsx", [
|
|
route("pages", "./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(list)/page.tsx"),
|
|
]),
|
|
route(
|
|
"pages/:pageId",
|
|
"./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/layout.tsx",
|
|
[index("./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/[pageId]/page.tsx")]
|
|
),
|
|
|
|
// Views
|
|
layout("./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/layout.tsx", [
|
|
route("views", "./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(list)/page.tsx"),
|
|
]),
|
|
route(
|
|
"views/:viewId",
|
|
"./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/layout.tsx",
|
|
[index("./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/views/(detail)/[viewId]/page.tsx")]
|
|
),
|
|
|
|
// Archives under project
|
|
layout("./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/cycles/layout.tsx", [
|
|
route(
|
|
"archives/cycles",
|
|
"./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/cycles/page.tsx"
|
|
),
|
|
]),
|
|
layout("./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/modules/layout.tsx", [
|
|
route(
|
|
"archives/modules",
|
|
"./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/modules/page.tsx"
|
|
),
|
|
]),
|
|
layout("./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(list)/layout.tsx", [
|
|
route(
|
|
"archives/issues",
|
|
"./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(list)/page.tsx"
|
|
),
|
|
]),
|
|
route(
|
|
"archives/issues/:archivedIssueId",
|
|
"./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/layout.tsx",
|
|
[
|
|
index(
|
|
"./(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/archives/issues/(detail)/[archivedIssueId]/page.tsx"
|
|
),
|
|
]
|
|
),
|
|
]),
|
|
|
|
// Project profile pages
|
|
route("profile/:userId", "./(all)/[workspaceSlug]/(projects)/profile/[userId]/layout.tsx", [
|
|
index("./(all)/[workspaceSlug]/(projects)/profile/[userId]/page.tsx"),
|
|
route("activity", "./(all)/[workspaceSlug]/(projects)/profile/[userId]/activity/page.tsx"),
|
|
route(":profileViewId", "./(all)/[workspaceSlug]/(projects)/profile/[userId]/[profileViewId]/page.tsx"),
|
|
]),
|
|
]),
|
|
]),
|
|
]),
|
|
|
|
// 404 fallback
|
|
route("*", "./components/404.tsx"),
|
|
] satisfies RouteConfig;
|