diff --git a/apps/desktop/src/renderer/src/pages/team-surface-pages.tsx b/apps/desktop/src/renderer/src/pages/team-surface-pages.tsx index ce151d3abf..e513fe4f5b 100644 --- a/apps/desktop/src/renderer/src/pages/team-surface-pages.tsx +++ b/apps/desktop/src/renderer/src/pages/team-surface-pages.tsx @@ -3,7 +3,7 @@ import { TeamIssuesPage, TeamProjectsPage, TeamAutopilotsPage, - TeamSettingsPage, + TeamDetailPage, } from "@multica/views/teams"; // Router wrappers: resolve the :teamKey param and hand it to the shared @@ -27,8 +27,8 @@ export function TeamAutopilotsRoute() { return ; } -export function TeamSettingsRoute() { +export function TeamDetailRoute() { const { teamKey } = useParams<{ teamKey: string }>(); if (!teamKey) return null; - return ; + return ; } diff --git a/apps/desktop/src/renderer/src/routes.tsx b/apps/desktop/src/renderer/src/routes.tsx index 5ac3cab7cc..469532e79c 100644 --- a/apps/desktop/src/renderer/src/routes.tsx +++ b/apps/desktop/src/renderer/src/routes.tsx @@ -16,7 +16,7 @@ import { TeamIssuesRoute, TeamProjectsRoute, TeamAutopilotsRoute, - TeamSettingsRoute, + TeamDetailRoute, } from "./pages/team-surface-pages"; import { IssuesPage } from "@multica/views/issues/components"; import { ProjectsPage } from "@multica/views/projects/components"; @@ -174,9 +174,9 @@ export const appRoutes: RouteObject[] = [ handle: { title: "Team autopilots" }, }, { - path: "team/:teamKey/settings", - element: , - handle: { title: "Team settings" }, + path: "team/:teamKey", + element: , + handle: { title: "Team detail" }, }, { path: "projects/:id", diff --git a/apps/web/app/[workspaceSlug]/(dashboard)/team/[teamKey]/page.tsx b/apps/web/app/[workspaceSlug]/(dashboard)/team/[teamKey]/page.tsx index c7189916b1..f2e17798b4 100644 --- a/apps/web/app/[workspaceSlug]/(dashboard)/team/[teamKey]/page.tsx +++ b/apps/web/app/[workspaceSlug]/(dashboard)/team/[teamKey]/page.tsx @@ -1,7 +1,7 @@ "use client"; import { use } from "react"; -import { TeamSettingsPage } from "@multica/views/teams"; +import { TeamDetailPage } from "@multica/views/teams"; export default function Page({ params, @@ -9,5 +9,5 @@ export default function Page({ params: Promise<{ teamKey: string }>; }) { const { teamKey } = use(params); - return ; + return ; } diff --git a/packages/core/paths/paths.ts b/packages/core/paths/paths.ts index b0ccb3bce1..321ab3df61 100644 --- a/packages/core/paths/paths.ts +++ b/packages/core/paths/paths.ts @@ -32,7 +32,7 @@ function workspaceScoped(slug: string) { teamIssues: (key: string) => `${ws}/team/${encode(key)}/issues`, teamProjects: (key: string) => `${ws}/team/${encode(key)}/projects`, teamAutopilots: (key: string) => `${ws}/team/${encode(key)}/autopilots`, - teamSettings: (key: string) => `${ws}/team/${encode(key)}/settings`, + teamDetail: (key: string) => `${ws}/team/${encode(key)}`, projects: () => `${ws}/projects`, projectDetail: (id: string) => `${ws}/projects/${encode(id)}`, autopilots: () => `${ws}/autopilots`, diff --git a/packages/views/layout/app-sidebar.tsx b/packages/views/layout/app-sidebar.tsx index 99d11c5349..b416d3c273 100644 --- a/packages/views/layout/app-sidebar.tsx +++ b/packages/views/layout/app-sidebar.tsx @@ -215,13 +215,13 @@ function SortableTeamGroup({ team, pathname, buildHref, - settingsHref, + detailHref, forceCollapsed, }: { team: Team; pathname: string; buildHref: (pathKey: (typeof teamChildNav)[number]["pathKey"], teamKey: string) => string; - settingsHref: string; + detailHref: string; /** True while any team drag is in flight: every group renders collapsed so all sortable items are the same height — variable-height blocks make dnd-kit's rect math (and thus the whole gesture) feel broken. */ @@ -237,11 +237,10 @@ function SortableTeamGroup({ useEffect(() => { if (isDragging) wasDragged.current = true; }, [isDragging]); - // The row itself is the team's home (overview/settings). It stays - // highlighted anywhere inside the team (issues/projects/autopilots too) so - // the sidebar always shows which team you're in. - const teamBase = settingsHref.replace(/\/settings$/, ""); - const isTeamActive = isNavActive(pathname, teamBase); + // The row itself is the team's home (detail page). It stays highlighted + // anywhere inside the team (issues/projects/autopilots too) so the sidebar + // always shows which team you're in. + const isTeamActive = isNavActive(pathname, detailHref); return (
} + render={} onClick={(event) => { if (wasDragged.current) { wasDragged.current = false; @@ -282,7 +281,7 @@ function SortableTeamGroup({ e.stopPropagation(); collapse.onOpenChange(!collapse.open); }} - className="ml-1 flex size-4 shrink-0 cursor-pointer items-center justify-center rounded-sm text-muted-foreground hover:bg-sidebar-accent hover:text-foreground" + className="-ml-1 flex size-4 shrink-0 cursor-pointer items-center justify-center rounded-sm text-muted-foreground hover:bg-sidebar-accent hover:text-foreground" > p[pathKey](teamKey)} - settingsHref={p.teamSettings(team.key)} + detailHref={p.teamDetail(team.key)} /> ))} diff --git a/packages/views/teams/components/index.ts b/packages/views/teams/components/index.ts index daf0825d8a..739dec2a00 100644 --- a/packages/views/teams/components/index.ts +++ b/packages/views/teams/components/index.ts @@ -2,4 +2,4 @@ export { TeamsPage } from "./teams-page"; export { TeamPicker, TeamMultiPicker } from "./team-picker"; export { TeamIcon } from "./team-icon"; export { TeamIssuesPage, TeamProjectsPage, TeamAutopilotsPage } from "./team-surface-pages"; -export { TeamSettingsPage } from "./team-settings-page"; +export { TeamDetailPage } from "./team-detail-page"; diff --git a/packages/views/teams/components/team-detail-page.tsx b/packages/views/teams/components/team-detail-page.tsx index 6a0e669131..4550b1fcde 100644 --- a/packages/views/teams/components/team-detail-page.tsx +++ b/packages/views/teams/components/team-detail-page.tsx @@ -46,13 +46,13 @@ const underline = "rounded-none border-0 border-b border-input bg-transparent dark:bg-transparent px-0 shadow-none focus-visible:ring-0 focus-visible:border-foreground"; /** - * Team settings — /team/:key/settings, Linear team-page shape. Left column is - * the identity itself rendered as page text (icon picker applies on pick, - * name and description commit on blur — no save buttons); the right column - * holds members (avatar stack → checkbox config; saving an empty set - * archives behind a confirm), go-to links, and archive. + * Team detail — /team/:key, the sidebar team row's landing page. A single + * narrow column: the identity rendered as page text (icon picker applies on + * pick, name and description commit on blur — no save buttons), then members + * (avatar stack → checkbox config; saving an empty set archives behind a + * confirm), go-to links, and archive. */ -export function TeamSettingsPage({ teamKey }: { teamKey: string }) { +export function TeamDetailPage({ teamKey }: { teamKey: string }) { const { t } = useT("teams"); const wsId = useWorkspaceId(); // Full list (not active-only): an archived team's settings stay viewable. @@ -77,15 +77,11 @@ export function TeamSettingsPage({ teamKey }: { teamKey: string }) {
-
-
- -
- +
+ + + +
@@ -299,7 +295,7 @@ function MembersSection({ team }: { team: Team }) { ) : ( - {t(($) => $.picker.empty)} + {t(($) => $.settings.members_empty)} )} @@ -337,7 +333,7 @@ function MembersSection({ team }: { team: Team }) { ))} {filteredMembers.length === 0 && (
- {t(($) => $.picker.empty)} + {t(($) => $.dialog.member_search_empty)}
)}
diff --git a/packages/views/teams/components/team-surface-pages.tsx b/packages/views/teams/components/team-surface-pages.tsx index 70f883c447..5547b836ee 100644 --- a/packages/views/teams/components/team-surface-pages.tsx +++ b/packages/views/teams/components/team-surface-pages.tsx @@ -47,7 +47,7 @@ export function TeamIssuesPage({ teamKey }: { teamKey: string }) { {/* Team name links into the team's settings page. */} diff --git a/packages/views/teams/components/teams-page.tsx b/packages/views/teams/components/teams-page.tsx index 4d08a4023e..69013b37fe 100644 --- a/packages/views/teams/components/teams-page.tsx +++ b/packages/views/teams/components/teams-page.tsx @@ -103,7 +103,7 @@ export function TeamsPage() { diff --git a/packages/views/teams/index.ts b/packages/views/teams/index.ts index 91b032abdd..25cdc971e4 100644 --- a/packages/views/teams/index.ts +++ b/packages/views/teams/index.ts @@ -6,5 +6,5 @@ export { TeamIssuesPage, TeamProjectsPage, TeamAutopilotsPage, - TeamSettingsPage, + TeamDetailPage, } from "./components";