import { type RouteConfig, index, route } from "@react-router/dev/routes";
export default [
index("routes/home.tsx"),
route("login", "routes/login.tsx"),
route("register", "routes/register.tsx"),
route("logout", "routes/logout.tsx"),
route("verify", "routes/verify.tsx"),
route("forgot", "routes/forgot.tsx"),
route("reset", "routes/reset.tsx"),
route("device", "routes/device.tsx"),
route("oauth/authorize", "routes/oauth-authorize.tsx"),
route("new", "routes/new.tsx"),
route("settings", "routes/settings.tsx"),
route("explore", "routes/explore.tsx", { id: "explore" }),
route("pricing", "routes/pricing.tsx"),
route("search", "routes/explore.tsx", { id: "search" }),
route("workspaces/new", "routes/workspace/new.tsx"),
// A workspace's own pages sit under `-`, which no repository can be named.
route(":owner", "routes/workspace/layout.tsx", [
index("routes/workspace/overview.tsx"),
route("-/people", "routes/workspace/people.tsx"),
route("-/tokens", "routes/workspace/tokens.tsx"),
route("-/usage", "routes/workspace/usage.tsx"),
route("-/billing", "routes/workspace/billing.tsx"),
route("-/integrations", "routes/workspace/integrations.tsx"),
route("-/webhooks", "routes/workspace/webhooks.tsx"),
route("-/secrets", "routes/workspace/secrets.tsx"),
route("-/settings", "routes/workspace/settings.tsx"),
// What the workspace will have across its projects.
route("-/soon/:feature", "routes/workspace/soon.tsx"),
]),
// Why a line is the way it is, fetched by the blame view.
route(":owner/:repo/why/:hash", "routes/repo/why.ts"),
// A project: its overview first, its repository's code under Code. The
// 1:1 project of a repository has the repository's name, so every
// repository address below keeps working.
route(":owner/:repo", "routes/repo/layout.tsx", [
index("routes/repo/overview.tsx"),
route("code", "routes/repo/code.tsx"),
route("tree/:ref/*", "routes/repo/tree.tsx"),
route("blob/:ref/*", "routes/repo/blob.tsx"),
route("commits", "routes/repo/commits.tsx"),
route("commit/:hash", "routes/repo/commit.tsx"),
route("issues", "routes/repo/issues.tsx"),
route("issues/new", "routes/repo/issue-new.tsx"),
route("issues/:number", "routes/repo/issue.tsx"),
route("pulls", "routes/repo/pulls.tsx"),
route("pulls/new", "routes/repo/pull-new.tsx"),
route("pull/:number", "routes/repo/pull.tsx"),
route("queue", "routes/repo/queue.tsx"),
route("actions", "routes/repo/actions.tsx"),
route("actions/runs/:id", "routes/repo/actions-run.tsx"),
route("actions/runs/:id/artifacts/:name", "routes/repo/actions-artifact.ts"),
route("actions/jobs/:job/log", "routes/repo/actions-log.ts"),
route("deployments", "routes/repo/deployments.tsx"),
route("deployments/:id", "routes/repo/deployment.tsx"),
route("plans", "routes/repo/plans.tsx"),
route("plans/:id", "routes/repo/plan.tsx"),
route("settings", "routes/repo/settings.tsx"),
route("settings/repository", "routes/repo/settings-repository.tsx"),
route("settings/webhooks", "routes/repo/webhooks.tsx"),
route("settings/secrets", "routes/repo/secrets.tsx"),
route("settings/deployments", "routes/repo/settings-deployments.tsx"),
route("settings/dependencies", "routes/repo/settings-dependencies.tsx"),
// What the project will have: one page for each Soon in its menu.
route("soon/:feature", "routes/repo/soon.tsx"),
]),
// Anything else: a 404 that still knows who is signed in.
route("*", "routes/not-found.tsx"),
] satisfies RouteConfig;