diff --git a/src/app/(main)/profile/ProfileSettings.tsx b/src/app/(main)/profile/ProfileSettings.tsx
index 59f30fbe..f6b0a08b 100644
--- a/src/app/(main)/profile/ProfileSettings.tsx
+++ b/src/app/(main)/profile/ProfileSettings.tsx
@@ -11,7 +11,7 @@ import { ROLES } from 'lib/constants';
export function ProfileSettings() {
const { user } = useLogin();
const { formatMessage, labels } = useMessages();
- const cloudMode = Boolean(process.env.cloudMode);
+ const cloudMode = !!process.env.cloudMode;
if (!user) {
return null;
@@ -24,7 +24,7 @@ export function ProfileSettings() {
return formatMessage(labels.user);
}
if (value === ROLES.admin) {
- return formatMessage(labels.admin);
+ return formatMessage(labels.administrator);
}
if (value === ROLES.viewOnly) {
return formatMessage(labels.viewOnly);
diff --git a/src/app/(main)/settings/teams/[teamId]/TeamMemberRemoveButton.tsx b/src/app/(main)/settings/teams/[teamId]/members/TeamMemberRemoveButton.tsx
similarity index 100%
rename from src/app/(main)/settings/teams/[teamId]/TeamMemberRemoveButton.tsx
rename to src/app/(main)/settings/teams/[teamId]/members/TeamMemberRemoveButton.tsx
diff --git a/src/app/(main)/teams/[teamId]/settings/members/Members.tsx b/src/app/(main)/settings/teams/[teamId]/members/TeamMembers.tsx
similarity index 55%
rename from src/app/(main)/teams/[teamId]/settings/members/Members.tsx
rename to src/app/(main)/settings/teams/[teamId]/members/TeamMembers.tsx
index 28639981..34cb248c 100644
--- a/src/app/(main)/teams/[teamId]/settings/members/Members.tsx
+++ b/src/app/(main)/settings/teams/[teamId]/members/TeamMembers.tsx
@@ -1,15 +1,17 @@
'use client';
-import TeamMembers from 'app/(main)/settings/teams/[teamId]/TeamMembers';
+import TeamMembersDataTable from './TeamMembersDataTable';
import PageHeader from 'components/layout/PageHeader';
import { useMessages } from 'components/hooks';
-export default function ({ teamId }: { teamId: string }) {
+export function TeamMembers({ teamId }: { teamId: string }) {
const { formatMessage, labels } = useMessages();
return (
<>
-
+
>
);
}
+
+export default TeamMembers;
diff --git a/src/app/(main)/settings/teams/[teamId]/TeamMembers.tsx b/src/app/(main)/settings/teams/[teamId]/members/TeamMembersDataTable.tsx
similarity index 71%
rename from src/app/(main)/settings/teams/[teamId]/TeamMembers.tsx
rename to src/app/(main)/settings/teams/[teamId]/members/TeamMembersDataTable.tsx
index 1fedc55f..ff95e522 100644
--- a/src/app/(main)/settings/teams/[teamId]/TeamMembers.tsx
+++ b/src/app/(main)/settings/teams/[teamId]/members/TeamMembersDataTable.tsx
@@ -3,7 +3,13 @@ import DataTable from 'components/common/DataTable';
import TeamMembersTable from './TeamMembersTable';
import { useTeamMembers } from 'components/hooks';
-export function TeamMembers({ teamId, allowEdit }: { teamId: string; allowEdit: boolean }) {
+export function TeamMembersDataTable({
+ teamId,
+ allowEdit = false,
+}: {
+ teamId: string;
+ allowEdit?: boolean;
+}) {
const queryResult = useTeamMembers(teamId);
return (
@@ -13,4 +19,4 @@ export function TeamMembers({ teamId, allowEdit }: { teamId: string; allowEdit:
);
}
-export default TeamMembers;
+export default TeamMembersDataTable;
diff --git a/src/app/(main)/settings/teams/[teamId]/TeamMembersTable.tsx b/src/app/(main)/settings/teams/[teamId]/members/TeamMembersTable.tsx
similarity index 100%
rename from src/app/(main)/settings/teams/[teamId]/TeamMembersTable.tsx
rename to src/app/(main)/settings/teams/[teamId]/members/TeamMembersTable.tsx
diff --git a/src/app/(main)/settings/teams/[teamId]/members/page.tsx b/src/app/(main)/settings/teams/[teamId]/members/page.tsx
new file mode 100644
index 00000000..295b3f15
--- /dev/null
+++ b/src/app/(main)/settings/teams/[teamId]/members/page.tsx
@@ -0,0 +1,15 @@
+import TeamMembers from './TeamMembers';
+import TeamProvider from 'app/(main)/teams/[teamId]/TeamProvider';
+import { Metadata } from 'next';
+
+export default function ({ params: { teamId } }) {
+ return (
+
+
+
+ );
+}
+
+export const metadata: Metadata = {
+ title: 'Team members - Umami',
+};
diff --git a/src/app/(main)/settings/teams/[teamId]/TeamSettings.tsx b/src/app/(main)/settings/teams/[teamId]/team/Team.tsx
similarity index 58%
rename from src/app/(main)/settings/teams/[teamId]/TeamSettings.tsx
rename to src/app/(main)/settings/teams/[teamId]/team/Team.tsx
index 9ebfc973..18e0c014 100644
--- a/src/app/(main)/settings/teams/[teamId]/TeamSettings.tsx
+++ b/src/app/(main)/settings/teams/[teamId]/team/Team.tsx
@@ -6,13 +6,11 @@ import { ROLES } from 'lib/constants';
import Icons from 'components/icons';
import { useLogin, useMessages } from 'components/hooks';
import TeamEditForm from './TeamEditForm';
-import TeamMembers from './TeamMembers';
-import TeamWebsites from './TeamWebsites';
-import TeamData from './TeamData';
+import TeamAdmin from './TeamAdmin';
import LinkButton from 'components/common/LinkButton';
import { TeamContext } from 'app/(main)/teams/[teamId]/TeamProvider';
-export function TeamSettings({ teamId }: { teamId: string }) {
+export function Team({ teamId }: { teamId: string }) {
const team = useContext(TeamContext);
const { formatMessage, labels } = useMessages();
const { user } = useLogin();
@@ -25,25 +23,23 @@ export function TeamSettings({ teamId }: { teamId: string }) {
return (
}>
-
-
-
-
- {formatMessage(labels.view)}
-
+ {!canEdit && (
+
+
+
+
+ {formatMessage(labels.leaveTeam)}
+
+ )}
setTab(value)} style={{ marginBottom: 30 }}>
- {formatMessage(labels.details)}
- - {formatMessage(labels.members)}
- - {formatMessage(labels.websites)}
- - {formatMessage(labels.data)}
+ - {formatMessage(labels.admin)}
{tab === 'details' && }
- {tab === 'members' && }
- {tab === 'websites' && }
- {canEdit && tab === 'data' && }
+ {canEdit && tab === 'admin' && }
);
}
-export default TeamSettings;
+export default Team;
diff --git a/src/app/(main)/settings/teams/[teamId]/TeamData.tsx b/src/app/(main)/settings/teams/[teamId]/team/TeamAdmin.tsx
similarity index 82%
rename from src/app/(main)/settings/teams/[teamId]/TeamData.tsx
rename to src/app/(main)/settings/teams/[teamId]/team/TeamAdmin.tsx
index facee764..ff20989a 100644
--- a/src/app/(main)/settings/teams/[teamId]/TeamData.tsx
+++ b/src/app/(main)/settings/teams/[teamId]/team/TeamAdmin.tsx
@@ -1,9 +1,9 @@
'use client';
import { ActionForm, Button, Modal, ModalTrigger } from 'react-basics';
import { useMessages } from 'components/hooks';
-import TeamDeleteForm from '../TeamDeleteForm';
+import TeamDeleteForm from './TeamDeleteForm';
-export function TeamData({ teamId }: { teamId: string }) {
+export function TeamAdmin({ teamId }: { teamId: string }) {
const { formatMessage, labels, messages } = useMessages();
return (
@@ -21,4 +21,4 @@ export function TeamData({ teamId }: { teamId: string }) {
);
}
-export default TeamData;
+export default TeamAdmin;
diff --git a/src/app/(main)/settings/teams/TeamDeleteForm.tsx b/src/app/(main)/settings/teams/[teamId]/team/TeamDeleteForm.tsx
similarity index 100%
rename from src/app/(main)/settings/teams/TeamDeleteForm.tsx
rename to src/app/(main)/settings/teams/[teamId]/team/TeamDeleteForm.tsx
diff --git a/src/app/(main)/settings/teams/[teamId]/TeamEditForm.tsx b/src/app/(main)/settings/teams/[teamId]/team/TeamEditForm.tsx
similarity index 100%
rename from src/app/(main)/settings/teams/[teamId]/TeamEditForm.tsx
rename to src/app/(main)/settings/teams/[teamId]/team/TeamEditForm.tsx
diff --git a/src/app/(main)/settings/teams/[teamId]/page.tsx b/src/app/(main)/settings/teams/[teamId]/team/page.tsx
similarity index 53%
rename from src/app/(main)/settings/teams/[teamId]/page.tsx
rename to src/app/(main)/settings/teams/[teamId]/team/page.tsx
index ef37b536..e23b670e 100644
--- a/src/app/(main)/settings/teams/[teamId]/page.tsx
+++ b/src/app/(main)/settings/teams/[teamId]/team/page.tsx
@@ -1,10 +1,15 @@
-import TeamSettings from './TeamSettings';
+import Team from './Team';
import TeamProvider from 'app/(main)/teams/[teamId]/TeamProvider';
+import { Metadata } from 'next';
export default function ({ params: { teamId } }) {
return (
-
+
);
}
+
+export const metadata: Metadata = {
+ title: 'Teams Settings - Umami',
+};
diff --git a/src/app/(main)/settings/teams/[teamId]/TeamWebsiteRemoveButton.tsx b/src/app/(main)/settings/teams/[teamId]/websites/TeamWebsiteRemoveButton.tsx
similarity index 100%
rename from src/app/(main)/settings/teams/[teamId]/TeamWebsiteRemoveButton.tsx
rename to src/app/(main)/settings/teams/[teamId]/websites/TeamWebsiteRemoveButton.tsx
diff --git a/src/app/(main)/settings/teams/[teamId]/websites/TeamWebsites.tsx b/src/app/(main)/settings/teams/[teamId]/websites/TeamWebsites.tsx
new file mode 100644
index 00000000..36f8d39b
--- /dev/null
+++ b/src/app/(main)/settings/teams/[teamId]/websites/TeamWebsites.tsx
@@ -0,0 +1,17 @@
+'use client';
+import TeamWebsitesDataTable from './TeamWebsitesDataTable';
+import PageHeader from 'components/layout/PageHeader';
+import { useMessages } from 'components/hooks';
+
+export function TeamWebsites({ teamId }: { teamId: string }) {
+ const { formatMessage, labels } = useMessages();
+
+ return (
+ <>
+
+
+ >
+ );
+}
+
+export default TeamWebsites;
diff --git a/src/app/(main)/settings/teams/[teamId]/TeamWebsites.tsx b/src/app/(main)/settings/teams/[teamId]/websites/TeamWebsitesDataTable.tsx
similarity index 71%
rename from src/app/(main)/settings/teams/[teamId]/TeamWebsites.tsx
rename to src/app/(main)/settings/teams/[teamId]/websites/TeamWebsitesDataTable.tsx
index 0bd49883..794ce948 100644
--- a/src/app/(main)/settings/teams/[teamId]/TeamWebsites.tsx
+++ b/src/app/(main)/settings/teams/[teamId]/websites/TeamWebsitesDataTable.tsx
@@ -3,7 +3,13 @@ import DataTable from 'components/common/DataTable';
import { useTeamWebsites } from 'components/hooks';
import TeamWebsitesTable from './TeamWebsitesTable';
-export function TeamWebsites({ teamId, allowEdit }: { teamId: string; allowEdit: boolean }) {
+export function TeamWebsitesDataTable({
+ teamId,
+ allowEdit = false,
+}: {
+ teamId: string;
+ allowEdit?: boolean;
+}) {
const queryResult = useTeamWebsites(teamId);
return (
@@ -13,4 +19,4 @@ export function TeamWebsites({ teamId, allowEdit }: { teamId: string; allowEdit:
);
}
-export default TeamWebsites;
+export default TeamWebsitesDataTable;
diff --git a/src/app/(main)/settings/teams/[teamId]/TeamWebsitesTable.tsx b/src/app/(main)/settings/teams/[teamId]/websites/TeamWebsitesTable.tsx
similarity index 97%
rename from src/app/(main)/settings/teams/[teamId]/TeamWebsitesTable.tsx
rename to src/app/(main)/settings/teams/[teamId]/websites/TeamWebsitesTable.tsx
index fdd0169a..0d54763e 100644
--- a/src/app/(main)/settings/teams/[teamId]/TeamWebsitesTable.tsx
+++ b/src/app/(main)/settings/teams/[teamId]/websites/TeamWebsitesTable.tsx
@@ -35,7 +35,7 @@ export function TeamWebsitesTable({
)}
-
+
{formatMessage(labels.view)}
diff --git a/src/app/(main)/settings/teams/[teamId]/websites/page.tsx b/src/app/(main)/settings/teams/[teamId]/websites/page.tsx
new file mode 100644
index 00000000..31b02065
--- /dev/null
+++ b/src/app/(main)/settings/teams/[teamId]/websites/page.tsx
@@ -0,0 +1,15 @@
+import TeamWebsites from './TeamWebsites';
+import TeamProvider from 'app/(main)/teams/[teamId]/TeamProvider';
+import { Metadata } from 'next';
+
+export default function ({ params: { teamId } }) {
+ return (
+
+
+
+ );
+}
+
+export const metadata: Metadata = {
+ title: 'Teams websites - Umami',
+};
diff --git a/src/app/(main)/settings/users/UserAddForm.tsx b/src/app/(main)/settings/users/UserAddForm.tsx
index 2781e743..0632165c 100644
--- a/src/app/(main)/settings/users/UserAddForm.tsx
+++ b/src/app/(main)/settings/users/UserAddForm.tsx
@@ -30,12 +30,12 @@ export function UserAddForm({ onSave, onClose }) {
});
};
- const renderValue = value => {
+ const renderValue = (value: string) => {
if (value === ROLES.user) {
return formatMessage(labels.user);
}
if (value === ROLES.admin) {
- return formatMessage(labels.admin);
+ return formatMessage(labels.administrator);
}
if (value === ROLES.viewOnly) {
return formatMessage(labels.viewOnly);
@@ -59,7 +59,7 @@ export function UserAddForm({ onSave, onClose }) {
- {formatMessage(labels.viewOnly)}
- {formatMessage(labels.user)}
- - {formatMessage(labels.admin)}
+ - {formatMessage(labels.administrator)}
diff --git a/src/app/(main)/settings/users/UserEditForm.tsx b/src/app/(main)/settings/users/UserEditForm.tsx
index af2b7534..53384285 100644
--- a/src/app/(main)/settings/users/UserEditForm.tsx
+++ b/src/app/(main)/settings/users/UserEditForm.tsx
@@ -49,7 +49,7 @@ export function UserEditForm({
return formatMessage(labels.user);
}
if (value === ROLES.admin) {
- return formatMessage(labels.admin);
+ return formatMessage(labels.administrator);
}
if (value === ROLES.viewOnly) {
return formatMessage(labels.viewOnly);
@@ -78,7 +78,7 @@ export function UserEditForm({
- {formatMessage(labels.viewOnly)}
- {formatMessage(labels.user)}
- - {formatMessage(labels.admin)}
+ - {formatMessage(labels.administrator)}
diff --git a/src/app/(main)/teams/[teamId]/settings/members/page.tsx b/src/app/(main)/teams/[teamId]/settings/members/page.tsx
index 04f89399..a4045ab4 100644
--- a/src/app/(main)/teams/[teamId]/settings/members/page.tsx
+++ b/src/app/(main)/teams/[teamId]/settings/members/page.tsx
@@ -1,5 +1,3 @@
-import Members from './Members';
+import Page from 'app/(main)/settings/teams/[teamId]/members/page';
-export default function ({ params: { teamId } }) {
- return ;
-}
+export default Page;
diff --git a/src/app/(main)/teams/[teamId]/settings/team/Team.tsx b/src/app/(main)/teams/[teamId]/settings/team/Team.tsx
deleted file mode 100644
index 2da9c7a8..00000000
--- a/src/app/(main)/teams/[teamId]/settings/team/Team.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-'use client';
-import { useContext } from 'react';
-import { useLogin, useMessages } from 'components/hooks';
-import PageHeader from 'components/layout/PageHeader';
-import { ROLES } from 'lib/constants';
-import TeamEditForm from 'app/(main)/settings/teams/[teamId]/TeamEditForm';
-import { TeamContext } from 'app/(main)/teams/[teamId]/TeamProvider';
-
-export default function Team({ teamId }: { teamId: string }) {
- const team = useContext(TeamContext);
- const { user } = useLogin();
- const { formatMessage, labels } = useMessages();
- const allowEdit = !!team?.teamUser?.find(
- ({ userId, role }) => role === ROLES.teamOwner && userId === user.id,
- );
-
- return (
- <>
-
-
- >
- );
-}
diff --git a/src/app/(main)/teams/[teamId]/settings/team/page.tsx b/src/app/(main)/teams/[teamId]/settings/team/page.tsx
index 19edd98c..c36e667c 100644
--- a/src/app/(main)/teams/[teamId]/settings/team/page.tsx
+++ b/src/app/(main)/teams/[teamId]/settings/team/page.tsx
@@ -1,5 +1,3 @@
-import Team from './Team';
+import Page from 'app/(main)/settings/teams/[teamId]/team/page';
-export default function ({ params: { teamId } }) {
- return ;
-}
+export default Page;
diff --git a/src/app/(main)/teams/[teamId]/settings/websites/[websiteId]/page.tsx b/src/app/(main)/teams/[teamId]/settings/websites/[websiteId]/page.tsx
index ad1a97dd..224ff4d5 100644
--- a/src/app/(main)/teams/[teamId]/settings/websites/[websiteId]/page.tsx
+++ b/src/app/(main)/teams/[teamId]/settings/websites/[websiteId]/page.tsx
@@ -1,3 +1,3 @@
-import Page from 'app/(main)/settings/websites/[websiteId]/page';
+import Page from 'app/(main)/websites/[websiteId]/page';
export default Page;
diff --git a/src/app/(main)/teams/[teamId]/settings/websites/page.tsx b/src/app/(main)/teams/[teamId]/settings/websites/page.tsx
index 66290215..897c60fe 100644
--- a/src/app/(main)/teams/[teamId]/settings/websites/page.tsx
+++ b/src/app/(main)/teams/[teamId]/settings/websites/page.tsx
@@ -1,3 +1,3 @@
-import Page from 'app/(main)/settings/websites/page';
+import Page from 'app/(main)/settings/teams/[teamId]/websites/page';
export default Page;
diff --git a/src/components/messages.ts b/src/components/messages.ts
index 7bf9a1f7..19f60b46 100644
--- a/src/components/messages.ts
+++ b/src/components/messages.ts
@@ -17,7 +17,8 @@ export const labels = defineMessages({
role: { id: 'label.role', defaultMessage: 'Role' },
user: { id: 'label.user', defaultMessage: 'User' },
viewOnly: { id: 'label.view-only', defaultMessage: 'View only' },
- admin: { id: 'label.admin', defaultMessage: 'Administrator' },
+ admin: { id: 'label.admin', defaultMessage: 'Admin' },
+ administrator: { id: 'label.administrator', defaultMessage: 'Administrator' },
confirm: { id: 'label.confirm', defaultMessage: 'Confirm' },
details: { id: 'label.details', defaultMessage: 'Details' },
website: { id: 'label.website', defaultMessage: 'Website' },
diff --git a/src/index.ts b/src/index.ts
index f067d2fa..2d7b6015 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,16 +1,21 @@
export * from 'components/hooks';
-export * from 'app/(main)/settings/teams/[teamId]/TeamData';
-export * from 'app/(main)/settings/teams/[teamId]/TeamEditForm';
-export * from 'app/(main)/settings/teams/[teamId]/TeamMemberRemoveButton';
-export * from 'app/(main)/settings/teams/[teamId]/TeamMembers';
-export * from 'app/(main)/settings/teams/[teamId]/TeamMembersTable';
-export * from 'app/(main)/settings/teams/[teamId]/TeamSettings';
-export * from 'app/(main)/settings/teams/[teamId]/TeamWebsiteRemoveButton';
-export * from 'app/(main)/settings/teams/[teamId]/TeamWebsites';
-export * from 'app/(main)/settings/teams/[teamId]/TeamWebsitesTable';
+export * from 'app/(main)/settings/teams/[teamId]/members/TeamMemberRemoveButton';
+export * from 'app/(main)/settings/teams/[teamId]/members/TeamMembers';
+export * from 'app/(main)/settings/teams/[teamId]/members/TeamMembersDataTable';
+export * from 'app/(main)/settings/teams/[teamId]/members/TeamMembersTable';
+
+export * from 'app/(main)/settings/teams/[teamId]/team/Team';
+export * from 'app/(main)/settings/teams/[teamId]/team/TeamAdmin';
+export * from 'app/(main)/settings/teams/[teamId]/team/TeamDeleteForm';
+export * from 'app/(main)/settings/teams/[teamId]/team/TeamEditForm';
+
+export * from 'app/(main)/settings/teams/[teamId]/websites/TeamWebsiteRemoveButton';
+export * from 'app/(main)/settings/teams/[teamId]/websites/TeamWebsites';
+export * from 'app/(main)/settings/teams/[teamId]/websites/TeamWebsitesDataTable';
+export * from 'app/(main)/settings/teams/[teamId]/websites/TeamWebsitesTable';
+
export * from 'app/(main)/settings/teams/TeamAddForm';
-export * from 'app/(main)/settings/teams/TeamDeleteForm';
export * from 'app/(main)/settings/teams/TeamsHeader';
export * from 'app/(main)/settings/teams/TeamJoinForm';
export * from 'app/(main)/settings/teams/TeamLeaveForm';