diff --git a/apps/web/components/team/SkeletonloaderTeamList.tsx b/apps/web/components/team/SkeletonloaderTeamList.tsx
new file mode 100644
index 0000000000..ddd93620e8
--- /dev/null
+++ b/apps/web/components/team/SkeletonloaderTeamList.tsx
@@ -0,0 +1,42 @@
+import React from "react";
+
+import { SkeletonText } from "@calcom/ui";
+
+import { ShellSubHeading } from "@components/Shell";
+
+function SkeletonLoaderTeamList({ className }: { className?: string }) {
+ return (
+ <>
+
+ >
+ );
+}
+
+export default SkeletonLoaderTeamList;
+
+function SkeletonItem() {
+ return (
+
+
+
+
+ );
+}
diff --git a/apps/web/pages/settings/teams/[id]/index.tsx b/apps/web/pages/settings/teams/[id]/index.tsx
index 443fdb2b40..96da9b3ea4 100644
--- a/apps/web/pages/settings/teams/[id]/index.tsx
+++ b/apps/web/pages/settings/teams/[id]/index.tsx
@@ -4,15 +4,16 @@ import { useRouter } from "next/router";
import { useEffect, useState } from "react";
import showToast from "@calcom/lib/notification";
+import { SkeletonAvatar, SkeletonText } from "@calcom/ui";
import { Alert } from "@calcom/ui/Alert";
import { Button } from "@calcom/ui/Button";
import SAMLConfiguration from "@ee/components/saml/Configuration";
+import { QueryCell } from "@lib/QueryCell";
import { getPlaceholderAvatar } from "@lib/getPlaceholderAvatar";
import { useLocale } from "@lib/hooks/useLocale";
import { trpc } from "@lib/trpc";
-import Loader from "@components/Loader";
import Shell from "@components/Shell";
import MemberInvitationModal from "@components/team/MemberInvitationModal";
import MemberList from "@components/team/MemberList";
@@ -37,121 +38,151 @@ export function TeamSettingsPage() {
const [showMemberInvitationModal, setShowMemberInvitationModal] = useState(false);
const [errorMessage, setErrorMessage] = useState("");
- const { data: team, isLoading } = trpc.useQuery(["viewer.teams.get", { teamId: Number(router.query.id) }], {
+ const query = trpc.useQuery(["viewer.teams.get", { teamId: Number(router.query.id) }], {
onError: (e) => {
setErrorMessage(e.message);
},
});
- const isAdmin =
- team && (team.membership.role === MembershipRole.OWNER || team.membership.role === MembershipRole.ADMIN);
-
return (
-
- )
- }>
- {!!errorMessage && }
- {isLoading && }
- {team && (
- <>
-
-
- {team.membership.role === MembershipRole.OWNER &&
- team.membership.isMissingSeat &&
- team.requiresUpgrade ? (
-
- {t("hidden_team_owner_message")}
- {/*
- {"https://cal.com/upgrade"}
- */}
- >
- }
- className="mb-4 "
+ {
+ return (
+
+
+
+ }
+ subtitle={
}
+ HeadingLeftIcon={
}>
+ <>
+
+ >
+
+ );
+ }}
+ success={({ data: team }) => {
+ const isAdmin =
+ team &&
+ (team.membership.role === MembershipRole.OWNER || team.membership.role === MembershipRole.ADMIN);
+ return (
+
- ) : (
- <>
- {team.membership.isMissingSeat && (
-
- )}
- {team.membership.role === MembershipRole.OWNER && team.requiresUpgrade && (
-
- {t("upgrade_to_flexible_pro_message")}
-
-
- }
- className="mb-4"
- />
- )}
- >
- )}
+ )
+ }>
+ {!!errorMessage && }
+ {team && (
+ <>
+
+
+ {team.membership.role === MembershipRole.OWNER &&
+ team.membership.isMissingSeat &&
+ team.requiresUpgrade ? (
+
+ {t("hidden_team_owner_message")}
+ {/*
+ {"https://cal.com/upgrade"}
+ */}
+ >
+ }
+ className="mb-4 "
+ />
+ ) : (
+ <>
+ {team.membership.isMissingSeat && (
+
+ )}
+ {team.membership.role === MembershipRole.OWNER && team.requiresUpgrade && (
+
+ {t("upgrade_to_flexible_pro_message")}
+
+
+ }
+ className="mb-4"
+ />
+ )}
+ >
+ )}
-
- {isAdmin ? (
-
- ) : (
-
-
{t("team_info")}
-
{team.bio}
+
+ {isAdmin ? (
+
+ ) : (
+
+
{t("team_info")}
+
{team.bio}
+
+ )}
+
+
+
{t("members")}
+ {isAdmin && (
+
+
+
+ )}
+
+
+ {isAdmin &&
}
- )}
-
-
-
{t("members")}
- {isAdmin && (
-
-
+
+
+
+ {showMemberInvitationModal && (
+
setShowMemberInvitationModal(false)}
+ />
)}
-
-
- {isAdmin && }
-
-
-
-
-
- {showMemberInvitationModal && (
- setShowMemberInvitationModal(false)}
- />
- )}
- >
- )}
-
+ >
+ )}
+
+ );
+ }}>
);
}
diff --git a/apps/web/pages/settings/teams/index.tsx b/apps/web/pages/settings/teams/index.tsx
index 21483cd6df..e6620b1bc3 100644
--- a/apps/web/pages/settings/teams/index.tsx
+++ b/apps/web/pages/settings/teams/index.tsx
@@ -12,15 +12,14 @@ import EmptyScreen from "@calcom/ui/EmptyScreen";
import useMeQuery from "@lib/hooks/useMeQuery";
import { trpc } from "@lib/trpc";
-import Loader from "@components/Loader";
import SettingsShell from "@components/SettingsShell";
+import SkeletonLoaderTeamList from "@components/team/SkeletonloaderTeamList";
import TeamCreateModal from "@components/team/TeamCreateModal";
import TeamList from "@components/team/TeamList";
function Teams() {
const { t } = useLocale();
const { status } = useSession();
- const loading = status === "loading";
const [showCreateTeamModal, setShowCreateTeamModal] = useState(false);
const [errorMessage, setErrorMessage] = useState("");
@@ -32,8 +31,6 @@ function Teams() {
},
});
- if (loading) return ;
-
const teams = data?.filter((m) => m.accepted) || [];
const invites = data?.filter((m) => !m.accepted) || [];
const isFreePlan = me.data?.plan === "FREE";
@@ -78,7 +75,8 @@ function Teams() {
)}
- {!isLoading && !teams.length && (
+ {isLoading && }
+ {!teams.length && !isLoading && (
= ({ width, height }) => {
};
const SkeletonText: React.FC = ({ width, height }) => {
- return ;
+ return ;
};
const SkeletonButton: React.FC = ({ width, height }) => {