Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 

59 wiersze
1.7 KiB

  1. import { preloadClaims } from "@/app/api/claims";
  2. import { preloadStaff, preloadTeamLeads } from "@/app/api/staff";
  3. import { fetchUserAbilities } from "@/app/utils/fetchUtil";
  4. import StaffSearch from "@/components/StaffSearch";
  5. import TeamSearch from "@/components/TeamSearch";
  6. import { I18nProvider, getServerI18n } from "@/i18n";
  7. import { MAINTAIN_TEAM } from "@/middleware";
  8. import Add from "@mui/icons-material/Add";
  9. import Button from "@mui/material/Button";
  10. import Stack from "@mui/material/Stack";
  11. import Typography from "@mui/material/Typography";
  12. import { Metadata } from "next";
  13. import Link from "next/link";
  14. import { Suspense } from "react";
  15. export const metadata: Metadata = {
  16. title: "Team",
  17. };
  18. const Team: React.FC = async () => {
  19. const { t } = await getServerI18n("team");
  20. // preloadTeamLeads();
  21. // preloadStaff();
  22. const abilities = await fetchUserAbilities()
  23. const maintainTeam = abilities.includes(MAINTAIN_TEAM)
  24. return (
  25. <>
  26. <Stack
  27. direction="row"
  28. justifyContent="space-between"
  29. flexWrap="wrap"
  30. rowGap={2}
  31. >
  32. <Typography variant="h4" marginInlineEnd={2}>
  33. {t("Team")}
  34. </Typography>
  35. {maintainTeam && <Button
  36. variant="contained"
  37. startIcon={<Add />}
  38. LinkComponent={Link}
  39. href="/settings/team/create"
  40. >
  41. {t("Create Team")}
  42. </Button>}
  43. </Stack>
  44. <I18nProvider namespaces={["team", "common"]}>
  45. <Suspense fallback={<TeamSearch.Loading />}>
  46. <TeamSearch />
  47. </Suspense>
  48. </I18nProvider>
  49. </>
  50. );
  51. };
  52. export default Team;