diff --git a/apps/backend/src/lib/users.tsx b/apps/backend/src/lib/users.tsx
index 48ce59c97..a775e3fd4 100644
--- a/apps/backend/src/lib/users.tsx
+++ b/apps/backend/src/lib/users.tsx
@@ -109,7 +109,6 @@ export async function updateServerUser(
primaryEmailVerified: update.primaryEmailVerified,
clientMetadata: update.clientMetadata as any,
serverMetadata: update.serverMetadata as any,
- selectedTeamId: update.selectedTeamId,
}),
});
} catch (e) {
diff --git a/apps/dashboard/src/lib/users.tsx b/apps/dashboard/src/lib/users.tsx
index b3237159c..c096ae3a2 100644
--- a/apps/dashboard/src/lib/users.tsx
+++ b/apps/dashboard/src/lib/users.tsx
@@ -111,7 +111,6 @@ export async function updateServerUser(
primaryEmailVerified: update.primaryEmailVerified,
clientMetadata: update.clientMetadata as any,
serverMetadata: update.serverMetadata as any,
- selectedTeamId: update.selectedTeamId,
}),
});
} catch (e) {
diff --git a/docs/fern/docs/pages/concepts/team-selection.mdx b/docs/fern/docs/pages/concepts/team-selection.mdx
index 74c03150c..a202508f8 100644
--- a/docs/fern/docs/pages/concepts/team-selection.mdx
+++ b/docs/fern/docs/pages/concepts/team-selection.mdx
@@ -96,14 +96,14 @@ export default function TeamsPage() {
const user = useUser({ or: 'redirect' });
const teams = user.useTeams();
const router = useRouter();
+ const selectedTeam = user.selectedTeam;
return (
- {user.selectedTeam &&
-
}
All Teams
{teams.map(team => (
diff --git a/examples/custom-pages-example/.env b/examples/docs-examples/.env
similarity index 100%
rename from examples/custom-pages-example/.env
rename to examples/docs-examples/.env
diff --git a/examples/custom-pages-example/.env.development b/examples/docs-examples/.env.development
similarity index 100%
rename from examples/custom-pages-example/.env.development
rename to examples/docs-examples/.env.development
diff --git a/examples/custom-pages-example/.eslintrc.js b/examples/docs-examples/.eslintrc.js
similarity index 100%
rename from examples/custom-pages-example/.eslintrc.js
rename to examples/docs-examples/.eslintrc.js
diff --git a/examples/custom-pages-example/.gitignore b/examples/docs-examples/.gitignore
similarity index 100%
rename from examples/custom-pages-example/.gitignore
rename to examples/docs-examples/.gitignore
diff --git a/examples/custom-pages-example/CHANGELOG.md b/examples/docs-examples/CHANGELOG.md
similarity index 100%
rename from examples/custom-pages-example/CHANGELOG.md
rename to examples/docs-examples/CHANGELOG.md
diff --git a/examples/custom-pages-example/LICENSE b/examples/docs-examples/LICENSE
similarity index 100%
rename from examples/custom-pages-example/LICENSE
rename to examples/docs-examples/LICENSE
diff --git a/examples/custom-pages-example/next.config.js b/examples/docs-examples/next.config.js
similarity index 100%
rename from examples/custom-pages-example/next.config.js
rename to examples/docs-examples/next.config.js
diff --git a/examples/custom-pages-example/package.json b/examples/docs-examples/package.json
similarity index 95%
rename from examples/custom-pages-example/package.json
rename to examples/docs-examples/package.json
index 99126c6e9..9bc752677 100644
--- a/examples/custom-pages-example/package.json
+++ b/examples/docs-examples/package.json
@@ -1,5 +1,5 @@
{
- "name": "@stackframe/custom-pages-example",
+ "name": "@stackframe/docs-examples",
"version": "2.4.28",
"description": "",
"private": true,
diff --git a/examples/custom-pages-example/postcss.config.js b/examples/docs-examples/postcss.config.js
similarity index 100%
rename from examples/custom-pages-example/postcss.config.js
rename to examples/docs-examples/postcss.config.js
diff --git a/examples/custom-pages-example/src/app/drive/page.tsx b/examples/docs-examples/src/app/drive/page.tsx
similarity index 100%
rename from examples/custom-pages-example/src/app/drive/page.tsx
rename to examples/docs-examples/src/app/drive/page.tsx
diff --git a/examples/custom-pages-example/src/app/favicon.ico b/examples/docs-examples/src/app/favicon.ico
similarity index 100%
rename from examples/custom-pages-example/src/app/favicon.ico
rename to examples/docs-examples/src/app/favicon.ico
diff --git a/examples/custom-pages-example/src/app/global.css b/examples/docs-examples/src/app/global.css
similarity index 100%
rename from examples/custom-pages-example/src/app/global.css
rename to examples/docs-examples/src/app/global.css
diff --git a/examples/custom-pages-example/src/app/handler/[...stack]/page.tsx b/examples/docs-examples/src/app/handler/[...stack]/page.tsx
similarity index 100%
rename from examples/custom-pages-example/src/app/handler/[...stack]/page.tsx
rename to examples/docs-examples/src/app/handler/[...stack]/page.tsx
diff --git a/examples/custom-pages-example/src/app/layout.tsx b/examples/docs-examples/src/app/layout.tsx
similarity index 100%
rename from examples/custom-pages-example/src/app/layout.tsx
rename to examples/docs-examples/src/app/layout.tsx
diff --git a/examples/custom-pages-example/src/app/loading.tsx b/examples/docs-examples/src/app/loading.tsx
similarity index 100%
rename from examples/custom-pages-example/src/app/loading.tsx
rename to examples/docs-examples/src/app/loading.tsx
diff --git a/examples/custom-pages-example/src/app/page-client.tsx b/examples/docs-examples/src/app/page-client.tsx
similarity index 100%
rename from examples/custom-pages-example/src/app/page-client.tsx
rename to examples/docs-examples/src/app/page-client.tsx
diff --git a/examples/custom-pages-example/src/app/page.tsx b/examples/docs-examples/src/app/page.tsx
similarity index 100%
rename from examples/custom-pages-example/src/app/page.tsx
rename to examples/docs-examples/src/app/page.tsx
diff --git a/examples/custom-pages-example/src/app/signin/page.tsx b/examples/docs-examples/src/app/signin/page.tsx
similarity index 100%
rename from examples/custom-pages-example/src/app/signin/page.tsx
rename to examples/docs-examples/src/app/signin/page.tsx
diff --git a/examples/custom-pages-example/src/app/signup/page.tsx b/examples/docs-examples/src/app/signup/page.tsx
similarity index 100%
rename from examples/custom-pages-example/src/app/signup/page.tsx
rename to examples/docs-examples/src/app/signup/page.tsx
diff --git a/examples/docs-examples/src/app/team/[teamId]/page.tsx b/examples/docs-examples/src/app/team/[teamId]/page.tsx
new file mode 100644
index 000000000..6430fbf4a
--- /dev/null
+++ b/examples/docs-examples/src/app/team/[teamId]/page.tsx
@@ -0,0 +1,24 @@
+"use client";
+
+import { useUser, SelectedTeamSwitcher } from "@stackframe/stack";
+
+export default function TeamPage({ params }: { params: { teamId: string } }) {
+ const user = useUser({ or: 'redirect' });
+ const team = user.useTeam(params.teamId);
+
+ if (!team) {
+ return
Team not found
;
+ }
+
+ return (
+
+
`/team/${team.id}`}
+ selectedTeam={team}
+ />
+
+ Team Name: {team.displayName}
+ You are a member of this team.
+
+ );
+}
\ No newline at end of file
diff --git a/examples/docs-examples/src/app/team/page.tsx b/examples/docs-examples/src/app/team/page.tsx
new file mode 100644
index 000000000..30d371ffa
--- /dev/null
+++ b/examples/docs-examples/src/app/team/page.tsx
@@ -0,0 +1,27 @@
+"use client";
+
+import { useRouter } from "next/navigation";
+import { useUser } from "@stackframe/stack";
+
+export default function TeamsPage() {
+ const user = useUser({ or: 'redirect' });
+ const teams = user.useTeams();
+ const router = useRouter();
+ const selectedTeam = user.selectedTeam;
+
+ return (
+
+ {selectedTeam &&
+ router.push(`/team/${selectedTeam.id}`)}>
+ Most recent team
+ }
+
+
All Teams
+ {teams.map(team => (
+ router.push(`/team/${team.id}`)}>
+ Open {team.displayName}
+
+ ))}
+
+ );
+}
\ No newline at end of file
diff --git a/examples/custom-pages-example/src/components/provider.tsx b/examples/docs-examples/src/components/provider.tsx
similarity index 100%
rename from examples/custom-pages-example/src/components/provider.tsx
rename to examples/docs-examples/src/components/provider.tsx
diff --git a/examples/custom-pages-example/src/stack.tsx b/examples/docs-examples/src/stack.tsx
similarity index 100%
rename from examples/custom-pages-example/src/stack.tsx
rename to examples/docs-examples/src/stack.tsx
diff --git a/examples/custom-pages-example/tailwind.config.js b/examples/docs-examples/tailwind.config.js
similarity index 100%
rename from examples/custom-pages-example/tailwind.config.js
rename to examples/docs-examples/tailwind.config.js
diff --git a/examples/custom-pages-example/tsconfig.json b/examples/docs-examples/tsconfig.json
similarity index 100%
rename from examples/custom-pages-example/tsconfig.json
rename to examples/docs-examples/tsconfig.json
diff --git a/packages/stack/src/components/selected-team-switcher.tsx b/packages/stack/src/components/selected-team-switcher.tsx
index 307511988..750c38f49 100644
--- a/packages/stack/src/components/selected-team-switcher.tsx
+++ b/packages/stack/src/components/selected-team-switcher.tsx
@@ -15,7 +15,7 @@ import {
import { useEffect, useMemo } from "react";
type SelectedTeamSwitcherProps = {
- urlMap?: (projectId: string) => string,
+ urlMap?: (team: Team) => string,
selectedTeam?: Team,
noUpdateSelectedTeam?: boolean,
};
@@ -36,32 +36,36 @@ export function SelectedTeamSwitcher(props: SelectedTeamSwitcherProps) {
const teams = useMemo(() => rawTeams?.sort((a, b) => b.id === selectedTeam?.id ? 1 : -1), [rawTeams, selectedTeam]);
useEffect(() => {
- if (!props.noUpdateSelectedTeam && teams && selectedTeam && !teams.find(team => team.id === selectedTeam.id)) {
- runAsynchronouslyWithAlert(user?.setSelectedTeam(selectedTeam));
+ if (!props.noUpdateSelectedTeam && props.selectedTeam) {
+ runAsynchronouslyWithAlert(user?.setSelectedTeam(props.selectedTeam));
}
- }, [teams, selectedTeam, props.noUpdateSelectedTeam]);
+ }, [props.noUpdateSelectedTeam, props.selectedTeam]);
return (
-