diff --git a/packages/twenty-front/src/modules/activities/emails/utils/__tests__/getDisplayNameFromParticipant.test.ts b/packages/twenty-front/src/modules/activities/emails/utils/__tests__/getDisplayNameFromParticipant.test.ts index 28c971308..4d4d5b62f 100644 --- a/packages/twenty-front/src/modules/activities/emails/utils/__tests__/getDisplayNameFromParticipant.test.ts +++ b/packages/twenty-front/src/modules/activities/emails/utils/__tests__/getDisplayNameFromParticipant.test.ts @@ -47,6 +47,7 @@ describe('getDisplayNameFromParticipant', () => { updatedAt: '', userEmail: '', userId: '', + colorScheme: 'Light', }, }; diff --git a/packages/twenty-front/src/modules/apollo/services/__tests__/apollo.factory.test.ts b/packages/twenty-front/src/modules/apollo/services/__tests__/apollo.factory.test.ts index 0d7fc8818..c5daf63c7 100644 --- a/packages/twenty-front/src/modules/apollo/services/__tests__/apollo.factory.test.ts +++ b/packages/twenty-front/src/modules/apollo/services/__tests__/apollo.factory.test.ts @@ -28,6 +28,7 @@ const mockWorkspaceMember = { firstName: 'John', lastName: 'Doe', }, + colorScheme: 'Light' as const, }; const createMockOptions = (): Options => ({ @@ -168,6 +169,7 @@ describe('ApolloFactory', () => { firstName: 'John', lastName: 'Doe', }, + colorScheme: 'Light' as const, }; apolloFactory.updateWorkspaceMember(newWorkspaceMember); diff --git a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useFindManyRecords.test.tsx b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useFindManyRecords.test.tsx index 5d85b80c9..8b1802d8f 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/__tests__/useFindManyRecords.test.tsx +++ b/packages/twenty-front/src/modules/object-record/hooks/__tests__/useFindManyRecords.test.tsx @@ -42,6 +42,7 @@ describe('useFindManyRecords', () => { id: '32219445-f587-4c40-b2b1-6d3205ed96da', name: { firstName: 'John', lastName: 'Connor' }, locale: 'en', + colorScheme: 'Light', }); const setMetadataItems = useSetRecoilState(objectMetadataItemsState); diff --git a/packages/twenty-front/src/modules/search/hooks/__tests__/useFilteredSearchRecordQuery.test.tsx b/packages/twenty-front/src/modules/search/hooks/__tests__/useFilteredSearchRecordQuery.test.tsx index 949becf16..ce06e67cb 100644 --- a/packages/twenty-front/src/modules/search/hooks/__tests__/useFilteredSearchRecordQuery.test.tsx +++ b/packages/twenty-front/src/modules/search/hooks/__tests__/useFilteredSearchRecordQuery.test.tsx @@ -73,6 +73,7 @@ describe('useFilteredSearchRecordQuery', () => { id: '32219445-f587-4c40-b2b1-6d3205ed96da', name: { firstName: 'John', lastName: 'Connor' }, locale: 'en', + colorScheme: 'Light', }); const setMetadataItems = useSetRecoilState(objectMetadataItemsState); diff --git a/packages/twenty-front/src/pages/settings/roles/components/Roles.tsx b/packages/twenty-front/src/modules/settings/roles/components/Roles.tsx similarity index 87% rename from packages/twenty-front/src/pages/settings/roles/components/Roles.tsx rename to packages/twenty-front/src/modules/settings/roles/components/Roles.tsx index cb8def5c9..cbe5f2ce8 100644 --- a/packages/twenty-front/src/pages/settings/roles/components/Roles.tsx +++ b/packages/twenty-front/src/modules/settings/roles/components/Roles.tsx @@ -2,10 +2,10 @@ import { Table } from '@/ui/layout/table/components/Table'; import styled from '@emotion/styled'; import { t } from '@lingui/core/macro'; +import { RolesTableHeader } from '@/settings/roles/components/RolesTableHeader'; +import { RolesTableRow } from '@/settings/roles/components/RolesTableRow'; import { Button, H2Title, IconPlus, Section } from 'twenty-ui'; import { Role } from '~/generated-metadata/graphql'; -import { RolesTableHeader } from '~/pages/settings/roles/components/RolesTableHeader'; -import { RolesTableRow } from '~/pages/settings/roles/components/RolesTableRow'; const StyledTable = styled(Table)` margin-top: ${({ theme }) => theme.spacing(0.5)}; diff --git a/packages/twenty-front/src/pages/settings/roles/components/RolesDefaultRole.tsx b/packages/twenty-front/src/modules/settings/roles/components/RolesDefaultRole.tsx similarity index 98% rename from packages/twenty-front/src/pages/settings/roles/components/RolesDefaultRole.tsx rename to packages/twenty-front/src/modules/settings/roles/components/RolesDefaultRole.tsx index cbf5a1b9c..a479a3f9c 100644 --- a/packages/twenty-front/src/pages/settings/roles/components/RolesDefaultRole.tsx +++ b/packages/twenty-front/src/modules/settings/roles/components/RolesDefaultRole.tsx @@ -44,7 +44,7 @@ export const RolesDefaultRole = ({ roles }: { roles: Role[] }) => { }); }; - if (!currentWorkspace) { + if (!currentWorkspace || !defaultRole) { return null; } diff --git a/packages/twenty-front/src/pages/settings/roles/components/RolesTableHeader.tsx b/packages/twenty-front/src/modules/settings/roles/components/RolesTableHeader.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/components/RolesTableHeader.tsx rename to packages/twenty-front/src/modules/settings/roles/components/RolesTableHeader.tsx diff --git a/packages/twenty-front/src/pages/settings/roles/components/RolesTableRow.tsx b/packages/twenty-front/src/modules/settings/roles/components/RolesTableRow.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/components/RolesTableRow.tsx rename to packages/twenty-front/src/modules/settings/roles/components/RolesTableRow.tsx diff --git a/packages/twenty-front/src/modules/settings/roles/components/__stories__/Roles.stories.tsx b/packages/twenty-front/src/modules/settings/roles/components/__stories__/Roles.stories.tsx new file mode 100644 index 000000000..ec49731c4 --- /dev/null +++ b/packages/twenty-front/src/modules/settings/roles/components/__stories__/Roles.stories.tsx @@ -0,0 +1,24 @@ +import { Meta, StoryObj } from '@storybook/react'; +import { ComponentDecorator, RouterDecorator } from 'twenty-ui'; + +import { Roles } from '@/settings/roles/components/Roles'; +import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; +import { getRolesMock } from '~/testing/mock-data/roles'; + +const meta: Meta = { + title: 'Modules/Settings/Roles/Roles', + component: Roles, + decorators: [ComponentDecorator, I18nFrontDecorator, RouterDecorator], + parameters: { + maxWidth: 800, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + roles: getRolesMock(), + }, +}; diff --git a/packages/twenty-front/src/modules/settings/roles/components/__stories__/RolesDefaultRole.stories.tsx b/packages/twenty-front/src/modules/settings/roles/components/__stories__/RolesDefaultRole.stories.tsx new file mode 100644 index 000000000..5afc1b9ca --- /dev/null +++ b/packages/twenty-front/src/modules/settings/roles/components/__stories__/RolesDefaultRole.stories.tsx @@ -0,0 +1,43 @@ +import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState'; +import { RolesDefaultRole } from '@/settings/roles/components/RolesDefaultRole'; +import { Meta, StoryObj } from '@storybook/react'; +import { RecoilRoot } from 'recoil'; +import { ComponentDecorator } from 'twenty-ui'; +import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; +import { getRolesMock } from '~/testing/mock-data/roles'; +import { mockCurrentWorkspace } from '~/testing/mock-data/users'; + +const rolesMock = getRolesMock(); + +const RolesDefaultRoleWrapper = () => { + return ( + { + snapshot.set(currentWorkspaceState, { + ...mockCurrentWorkspace, + defaultRole: rolesMock[1], + }); + }} + > + + + ); +}; + +const meta: Meta = { + title: 'Modules/Settings/Roles/RolesDefaultRole', + component: RolesDefaultRoleWrapper, + decorators: [ComponentDecorator, I18nFrontDecorator], + parameters: { + maxWidth: 800, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + roles: rolesMock, + }, +}; diff --git a/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignment.tsx b/packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignment.tsx similarity index 95% rename from packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignment.tsx rename to packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignment.tsx index 340778249..ffe2c5c33 100644 --- a/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignment.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignment.tsx @@ -1,5 +1,8 @@ import { currentWorkspaceMembersState } from '@/auth/states/currentWorkspaceMembersStates'; import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; +import { RoleAssignmentTableHeader } from '@/settings/roles/role-assignment/components/RoleAssignmentTableHeader'; +import { RoleAssignmentWorkspaceMemberPickerDropdown } from '@/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdown'; +import { RoleAssignmentConfirmationModalSelectedWorkspaceMember } from '@/settings/roles/role-assignment/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember'; import { SettingsPath } from '@/types/SettingsPath'; import { TextInput } from '@/ui/input/components/TextInput'; import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown'; @@ -25,9 +28,6 @@ import { useUpdateWorkspaceMemberRoleMutation, } from '~/generated/graphql'; import { useNavigateSettings } from '~/hooks/useNavigateSettings'; -import { RoleAssignmentTableHeader } from '~/pages/settings/roles/role-assignment/components/RoleAssignmentTableHeader'; -import { RoleAssignmentWorkspaceMemberPickerDropdown } from '~/pages/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdown'; -import { RoleAssignmentConfirmationModalSelectedWorkspaceMember } from '~/pages/settings/roles/role-assignment/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember'; import { RoleAssignmentConfirmationModal } from './RoleAssignmentConfirmationModal'; import { RoleAssignmentTableRow } from './RoleAssignmentTableRow'; diff --git a/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentConfirmationModal.tsx b/packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentConfirmationModal.tsx similarity index 81% rename from packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentConfirmationModal.tsx rename to packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentConfirmationModal.tsx index 8d9c71c8f..4f53eac02 100644 --- a/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentConfirmationModal.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentConfirmationModal.tsx @@ -1,7 +1,7 @@ +import { RoleAssignmentConfirmationModalSubtitle } from '@/settings/roles/role-assignment/components/RoleAssignmentConfirmationModalSubtitle'; +import { RoleAssignmentConfirmationModalSelectedWorkspaceMember } from '@/settings/roles/role-assignment/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember'; import { ConfirmationModal } from '@/ui/layout/modal/components/ConfirmationModal'; import { t } from '@lingui/core/macro'; -import { RoleAssignmentConfirmationModalSubtitle } from '~/pages/settings/roles/role-assignment/components/RoleAssignmentConfirmationModalSubtitle'; -import { RoleAssignmentConfirmationModalSelectedWorkspaceMember } from '~/pages/settings/roles/role-assignment/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember'; type RoleAssignmentConfirmationModalProps = { selectedWorkspaceMember: RoleAssignmentConfirmationModalSelectedWorkspaceMember; diff --git a/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentConfirmationModalSubtitle.tsx b/packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentConfirmationModalSubtitle.tsx similarity index 91% rename from packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentConfirmationModalSubtitle.tsx rename to packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentConfirmationModalSubtitle.tsx index 13020e9ee..158c02a49 100644 --- a/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentConfirmationModalSubtitle.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentConfirmationModalSubtitle.tsx @@ -1,8 +1,8 @@ import { SettingsCard } from '@/settings/components/SettingsCard'; +import { RoleAssignmentConfirmationModalSelectedWorkspaceMember } from '@/settings/roles/role-assignment/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember'; import styled from '@emotion/styled'; import { t } from '@lingui/core/macro'; import { IconUser } from 'twenty-ui'; -import { RoleAssignmentConfirmationModalSelectedWorkspaceMember } from '~/pages/settings/roles/role-assignment/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember'; const StyledSettingsCardContainer = styled.div` margin-top: ${({ theme }) => theme.spacing(2)}; diff --git a/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentTableHeader.tsx b/packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentTableHeader.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentTableHeader.tsx rename to packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentTableHeader.tsx diff --git a/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentTableRow.tsx b/packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentTableRow.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentTableRow.tsx rename to packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentTableRow.tsx diff --git a/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdown.tsx b/packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdown.tsx similarity index 95% rename from packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdown.tsx rename to packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdown.tsx index 16f8c9aac..fdc42be4d 100644 --- a/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdown.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdown.tsx @@ -1,12 +1,12 @@ import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { useSearchRecords } from '@/object-record/hooks/useSearchRecords'; +import { RoleAssignmentWorkspaceMemberPickerDropdownContent } from '@/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdownContent'; import { DropdownMenu } from '@/ui/layout/dropdown/components/DropdownMenu'; import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer'; import { DropdownMenuSearchInput } from '@/ui/layout/dropdown/components/DropdownMenuSearchInput'; import { DropdownMenuSeparator } from '@/ui/layout/dropdown/components/DropdownMenuSeparator'; import { ChangeEvent, useState } from 'react'; import { WorkspaceMember } from '~/generated-metadata/graphql'; -import { RoleAssignmentWorkspaceMemberPickerDropdownContent } from '~/pages/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdownContent'; type RoleAssignmentWorkspaceMemberPickerDropdownProps = { excludedWorkspaceMemberIds: string[]; diff --git a/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdownContent.tsx b/packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdownContent.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdownContent.tsx rename to packages/twenty-front/src/modules/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdownContent.tsx diff --git a/packages/twenty-front/src/pages/settings/roles/role-assignment/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember.ts b/packages/twenty-front/src/modules/settings/roles/role-assignment/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember.ts similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/role-assignment/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember.ts rename to packages/twenty-front/src/modules/settings/roles/role-assignment/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember.ts diff --git a/packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissions.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/components/RolePermissions.tsx similarity index 87% rename from packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissions.tsx rename to packages/twenty-front/src/modules/settings/roles/role-permissions/components/RolePermissions.tsx index 067b8e5e2..01d0e43c7 100644 --- a/packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissions.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/components/RolePermissions.tsx @@ -1,3 +1,7 @@ +import { RolePermissionsObjectsTableHeader } from '@/settings/roles/role-permissions/components/RolePermissionsObjectsTableHeader'; +import { RolePermissionsSettingsTableHeader } from '@/settings/roles/role-permissions/components/RolePermissionsSettingsTableHeader'; +import { RolePermissionsSettingsTableRow } from '@/settings/roles/role-permissions/components/RolePermissionsSettingsTableRow'; +import { RolePermissionsObjectPermission } from '@/settings/roles/types/RolePermissionsObjectPermission'; import styled from '@emotion/styled'; import { t } from '@lingui/core/macro'; import { @@ -10,10 +14,6 @@ import { } from 'twenty-ui'; import { Role } from '~/generated-metadata/graphql'; import { SettingsPermissions } from '~/generated/graphql'; -import { RolePermissionsObjectsTableHeader } from '~/pages/settings/roles/role-permissions/components/RolePermissionsObjectsTableHeader'; -import { RolePermissionsSettingsTableHeader } from '~/pages/settings/roles/role-permissions/components/RolePermissionsSettingsTableHeader'; -import { RolePermissionsSettingsTableRow } from '~/pages/settings/roles/role-permissions/components/RolePermissionsSettingsTableRow'; -import { RolePermissionsObjectPermission } from '~/pages/settings/roles/types/RolePermissionsObjectPermission'; import { RolePermissionsObjectsTableRow } from './RolePermissionsObjectsTableRow'; const StyledRolePermissionsContainer = styled.div` diff --git a/packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsObjectsTableHeader.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/components/RolePermissionsObjectsTableHeader.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsObjectsTableHeader.tsx rename to packages/twenty-front/src/modules/settings/roles/role-permissions/components/RolePermissionsObjectsTableHeader.tsx diff --git a/packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsObjectsTableRow.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/components/RolePermissionsObjectsTableRow.tsx similarity index 94% rename from packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsObjectsTableRow.tsx rename to packages/twenty-front/src/modules/settings/roles/role-permissions/components/RolePermissionsObjectsTableRow.tsx index d81974021..f2c04a4ea 100644 --- a/packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsObjectsTableRow.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/components/RolePermissionsObjectsTableRow.tsx @@ -1,8 +1,8 @@ +import { RolePermissionsObjectPermission } from '@/settings/roles/types/RolePermissionsObjectPermission'; import { TableCell } from '@/ui/layout/table/components/TableCell'; import { TableRow } from '@/ui/layout/table/components/TableRow'; import styled from '@emotion/styled'; import { Checkbox } from 'twenty-ui'; -import { RolePermissionsObjectPermission } from '~/pages/settings/roles/types/RolePermissionsObjectPermission'; const StyledIconWrapper = styled.div` align-items: center; diff --git a/packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsSettingsTableHeader.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/components/RolePermissionsSettingsTableHeader.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsSettingsTableHeader.tsx rename to packages/twenty-front/src/modules/settings/roles/role-permissions/components/RolePermissionsSettingsTableHeader.tsx diff --git a/packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsSettingsTableRow.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/components/RolePermissionsSettingsTableRow.tsx similarity index 92% rename from packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsSettingsTableRow.tsx rename to packages/twenty-front/src/modules/settings/roles/role-permissions/components/RolePermissionsSettingsTableRow.tsx index 5fd9a06d1..8ba459878 100644 --- a/packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsSettingsTableRow.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/components/RolePermissionsSettingsTableRow.tsx @@ -1,8 +1,8 @@ +import { RolePermissionsSettingPermission } from '@/settings/roles/types/RolePermissionsSettingPermission'; import { TableCell } from '@/ui/layout/table/components/TableCell'; import { TableRow } from '@/ui/layout/table/components/TableRow'; import styled from '@emotion/styled'; import { Checkbox } from 'twenty-ui'; -import { RolePermissionsSettingPermission } from '~/pages/settings/roles/types/RolePermissionsSettingPermission'; const StyledLabel = styled.span` color: ${({ theme }) => theme.font.color.primary}; diff --git a/packages/twenty-front/src/pages/settings/roles/role-settings/components/RoleSettings.tsx b/packages/twenty-front/src/modules/settings/roles/role-settings/components/RoleSettings.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/role-settings/components/RoleSettings.tsx rename to packages/twenty-front/src/modules/settings/roles/role-settings/components/RoleSettings.tsx diff --git a/packages/twenty-front/src/pages/settings/roles/types/RolePermissionsObjectPermission.ts b/packages/twenty-front/src/modules/settings/roles/types/RolePermissionsObjectPermission.ts similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/types/RolePermissionsObjectPermission.ts rename to packages/twenty-front/src/modules/settings/roles/types/RolePermissionsObjectPermission.ts diff --git a/packages/twenty-front/src/pages/settings/roles/types/RolePermissionsSettingPermission.ts b/packages/twenty-front/src/modules/settings/roles/types/RolePermissionsSettingPermission.ts similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/types/RolePermissionsSettingPermission.ts rename to packages/twenty-front/src/modules/settings/roles/types/RolePermissionsSettingPermission.ts diff --git a/packages/twenty-front/src/modules/ui/theme/hooks/__tests__/useColorScheme.test.tsx b/packages/twenty-front/src/modules/ui/theme/hooks/__tests__/useColorScheme.test.tsx index b37d7a759..29f45cebb 100644 --- a/packages/twenty-front/src/modules/ui/theme/hooks/__tests__/useColorScheme.test.tsx +++ b/packages/twenty-front/src/modules/ui/theme/hooks/__tests__/useColorScheme.test.tsx @@ -24,6 +24,7 @@ const workspaceMember: Omit< lastName: 'lastName', }, locale: 'en', + colorScheme: 'System', }; describe('useColorScheme', () => { diff --git a/packages/twenty-front/src/modules/workspace-member/types/WorkspaceMember.ts b/packages/twenty-front/src/modules/workspace-member/types/WorkspaceMember.ts index ded69618f..189757401 100644 --- a/packages/twenty-front/src/modules/workspace-member/types/WorkspaceMember.ts +++ b/packages/twenty-front/src/modules/workspace-member/types/WorkspaceMember.ts @@ -15,7 +15,7 @@ export type WorkspaceMember = { }; avatarUrl?: string | null; locale: string | null; - colorScheme?: ColorScheme; + colorScheme: ColorScheme; createdAt: string; updatedAt: string; userEmail: string; diff --git a/packages/twenty-front/src/pages/settings/roles/SettingsRoleEdit.tsx b/packages/twenty-front/src/pages/settings/roles/SettingsRoleEdit.tsx index db22bcff4..b12edd42e 100644 --- a/packages/twenty-front/src/pages/settings/roles/SettingsRoleEdit.tsx +++ b/packages/twenty-front/src/pages/settings/roles/SettingsRoleEdit.tsx @@ -11,16 +11,17 @@ import { } from 'twenty-ui'; import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer'; +import { RoleAssignment } from '@/settings/roles/role-assignment/components/RoleAssignment'; +import { RolePermissions } from '@/settings/roles/role-permissions/components/RolePermissions'; +import { RoleSettings } from '@/settings/roles/role-settings/components/RoleSettings'; import { SettingsPath } from '@/types/SettingsPath'; import { SubMenuTopBarContainer } from '@/ui/layout/page/components/SubMenuTopBarContainer'; import { TabList } from '@/ui/layout/tab/components/TabList'; import { useTabList } from '@/ui/layout/tab/hooks/useTabList'; +import { useTheme } from '@emotion/react'; import { useGetRolesQuery } from '~/generated/graphql'; import { useNavigateSettings } from '~/hooks/useNavigateSettings'; -import { RolePermissions } from '~/pages/settings/roles/role-permissions/components/RolePermissions'; -import { RoleSettings } from '~/pages/settings/roles/role-settings/components/RoleSettings'; import { getSettingsPath } from '~/utils/navigation/getSettingsPath'; -import { RoleAssignment } from './role-assignment/components/RoleAssignment'; const StyledContentContainer = styled.div` flex: 1; @@ -49,6 +50,7 @@ export const SETTINGS_ROLE_DETAIL_TABS = { export const SettingsRoleEdit = () => { const { roleId = '' } = useParams(); + const theme = useTheme(); const navigateSettings = useNavigateSettings(); const { data: rolesData, loading: rolesLoading } = useGetRolesQuery({ fetchPolicy: 'network-only', @@ -106,7 +108,7 @@ export const SettingsRoleEdit = () => { - + } diff --git a/packages/twenty-front/src/pages/settings/roles/SettingsRoles.tsx b/packages/twenty-front/src/pages/settings/roles/SettingsRoles.tsx index a31ec63b5..b0b5d7318 100644 --- a/packages/twenty-front/src/pages/settings/roles/SettingsRoles.tsx +++ b/packages/twenty-front/src/pages/settings/roles/SettingsRoles.tsx @@ -1,11 +1,11 @@ import { Trans, useLingui } from '@lingui/react/macro'; import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer'; +import { Roles } from '@/settings/roles/components/Roles'; +import { RolesDefaultRole } from '@/settings/roles/components/RolesDefaultRole'; import { SettingsPath } from '@/types/SettingsPath'; import { SubMenuTopBarContainer } from '@/ui/layout/page/components/SubMenuTopBarContainer'; import { useGetRolesQuery } from '~/generated/graphql'; -import { Roles } from '~/pages/settings/roles/components/Roles'; -import { RolesDefaultRole } from '~/pages/settings/roles/components/RolesDefaultRole'; import { getSettingsPath } from '~/utils/navigation/getSettingsPath'; export const SettingsRoles = () => { diff --git a/packages/twenty-front/src/pages/settings/roles/__stories__/SettingsRoleEdit.stories.tsx b/packages/twenty-front/src/pages/settings/roles/__stories__/SettingsRoleEdit.stories.tsx new file mode 100644 index 000000000..cc7c0a142 --- /dev/null +++ b/packages/twenty-front/src/pages/settings/roles/__stories__/SettingsRoleEdit.stories.tsx @@ -0,0 +1,30 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { + PageDecorator, + PageDecoratorArgs, +} from '~/testing/decorators/PageDecorator'; +import { graphqlMocks } from '~/testing/graphqlMocks'; + +import { SettingsRoleEdit } from '../SettingsRoleEdit'; + +const meta: Meta = { + title: 'Pages/Settings/Roles/SettingsRoleEdit', + component: SettingsRoleEdit, + decorators: [PageDecorator], + args: { + routePath: '/settings/roles/:roleId', + routeParams: { + ':roleId': '1', + }, + }, + parameters: { + msw: graphqlMocks, + }, +}; + +export default meta; + +export type Story = StoryObj; + +export const Default: Story = {}; diff --git a/packages/twenty-front/src/pages/settings/roles/__stories__/SettingsRoles.stories.tsx b/packages/twenty-front/src/pages/settings/roles/__stories__/SettingsRoles.stories.tsx new file mode 100644 index 000000000..f8f20f762 --- /dev/null +++ b/packages/twenty-front/src/pages/settings/roles/__stories__/SettingsRoles.stories.tsx @@ -0,0 +1,25 @@ +import { Meta, StoryObj } from '@storybook/react'; + +import { + PageDecorator, + PageDecoratorArgs, +} from '~/testing/decorators/PageDecorator'; +import { graphqlMocks } from '~/testing/graphqlMocks'; + +import { SettingsRoles } from '../SettingsRoles'; + +const meta: Meta = { + title: 'Pages/Settings/Roles/SettingsRoles', + component: SettingsRoles, + decorators: [PageDecorator], + args: { routePath: '/settings/roles' }, + parameters: { + msw: graphqlMocks, + }, +}; + +export default meta; + +export type Story = StoryObj; + +export const Default: Story = {}; diff --git a/packages/twenty-front/src/testing/graphqlMocks.ts b/packages/twenty-front/src/testing/graphqlMocks.ts index aca9a7e01..00e5679e8 100644 --- a/packages/twenty-front/src/testing/graphqlMocks.ts +++ b/packages/twenty-front/src/testing/graphqlMocks.ts @@ -21,7 +21,9 @@ import { mockedViewsData } from '~/testing/mock-data/views'; import { mockWorkspaceMembers } from '~/testing/mock-data/workspace-members'; import { GET_PUBLIC_WORKSPACE_DATA_BY_DOMAIN } from '@/auth/graphql/queries/getPublicWorkspaceDataByDomain'; +import { GET_ROLES } from '@/settings/roles/graphql/queries/getRolesQuery'; import { mockedStandardObjectMetadataQueryResult } from '~/testing/mock-data/generated/mock-metadata-query-result'; +import { getRolesMock } from '~/testing/mock-data/roles'; import { mockedTasks } from '~/testing/mock-data/tasks'; import { getWorkflowMock, @@ -719,6 +721,13 @@ export const graphqlMocks = { }, }); }), + graphql.query(getOperationName(GET_ROLES) ?? '', () => { + return HttpResponse.json({ + data: { + getRoles: getRolesMock(), + }, + }); + }), http.get('https://chat-assets.frontapp.com/v1/chat.bundle.js', () => { return HttpResponse.text( ` diff --git a/packages/twenty-front/src/testing/mock-data/roles.ts b/packages/twenty-front/src/testing/mock-data/roles.ts new file mode 100644 index 000000000..da750e09f --- /dev/null +++ b/packages/twenty-front/src/testing/mock-data/roles.ts @@ -0,0 +1,33 @@ +import { Role } from '~/generated/graphql'; +import { mockWorkspaceMembers } from '~/testing/mock-data/workspace-members'; + +const rolesMock: Role[] = [ + { + __typename: 'Role', + id: '1', + label: 'Admin', + canDestroyAllObjectRecords: true, + canReadAllObjectRecords: true, + canSoftDeleteAllObjectRecords: true, + canUpdateAllObjectRecords: true, + canUpdateAllSettings: true, + isEditable: false, + workspaceMembers: [mockWorkspaceMembers[0]], + }, + { + __typename: 'Role', + id: '2', + label: 'Guest', + canDestroyAllObjectRecords: false, + canReadAllObjectRecords: false, + canSoftDeleteAllObjectRecords: false, + canUpdateAllObjectRecords: false, + canUpdateAllSettings: false, + isEditable: true, + workspaceMembers: [mockWorkspaceMembers[1]], + }, +]; + +export const getRolesMock = () => { + return rolesMock; +};