diff --git a/packages/ui/src/views/user-management/components/dialogs/create-user/create-user.tsx b/packages/ui/src/views/user-management/components/dialogs/create-user/create-user.tsx index fcea43029e..d809e66f6c 100644 --- a/packages/ui/src/views/user-management/components/dialogs/create-user/create-user.tsx +++ b/packages/ui/src/views/user-management/components/dialogs/create-user/create-user.tsx @@ -13,18 +13,9 @@ import { Spacer, Text } from '@/components' +import { newUserSchema } from '@/views/user-management/components/dialogs/create-user/schemas' +import { ICreateUserDialogProps, NewUserFields } from '@/views/user-management/components/dialogs/create-user/types' import { zodResolver } from '@hookform/resolvers/zod' -import { z } from 'zod' - -import { ICreateUserDialogProps } from './types' - -const newUserSchema = z.object({ - uid: z.string().min(1, { message: 'Please provide a user ID' }), - email: z.string().email({ message: 'Please enter a valid email address' }), - display_name: z.string().min(1, { message: 'Please provide a display name' }) -}) - -export type NewUserFields = z.infer export function CreateUserDialog({ handleCreateUser, isLoading, apiError, open, onClose }: ICreateUserDialogProps) { const { diff --git a/packages/ui/src/views/user-management/components/dialogs/create-user/schemas.ts b/packages/ui/src/views/user-management/components/dialogs/create-user/schemas.ts new file mode 100644 index 0000000000..067878d3b7 --- /dev/null +++ b/packages/ui/src/views/user-management/components/dialogs/create-user/schemas.ts @@ -0,0 +1,7 @@ +import { z } from 'zod' + +export const newUserSchema = z.object({ + uid: z.string().min(1, { message: 'Please provide a user ID' }), + email: z.string().email({ message: 'Please enter a valid email address' }), + display_name: z.string().min(1, { message: 'Please provide a display name' }) +}) diff --git a/packages/ui/src/views/user-management/components/dialogs/create-user/types.ts b/packages/ui/src/views/user-management/components/dialogs/create-user/types.ts index ddaae72b93..a0bc02e707 100644 --- a/packages/ui/src/views/user-management/components/dialogs/create-user/types.ts +++ b/packages/ui/src/views/user-management/components/dialogs/create-user/types.ts @@ -1,4 +1,7 @@ -import { NewUserFields } from '../../create-user-dialog' +import { newUserSchema } from '@/views/user-management/components/dialogs/create-user/schemas' +import { z } from 'zod' + +export type NewUserFields = z.infer export interface ICreateUserDialogProps { handleCreateUser: (data: NewUserFields) => void diff --git a/packages/ui/src/views/user-management/components/dialogs/delete-user/delete-user.tsx b/packages/ui/src/views/user-management/components/dialogs/delete-user/delete-user.tsx index 7aaf417e89..5414735b5f 100644 --- a/packages/ui/src/views/user-management/components/dialogs/delete-user/delete-user.tsx +++ b/packages/ui/src/views/user-management/components/dialogs/delete-user/delete-user.tsx @@ -1,6 +1,5 @@ import { AlertDialog, Button, Spacer } from '@/components' - -import { IDeleteDialogProps } from './types' +import { IDeleteDialogProps } from '@/views/user-management/components/dialogs/delete-user/types' export const DeleteUserDialog: React.FC = ({ useAdminListUsersStore, @@ -10,6 +9,7 @@ export const DeleteUserDialog: React.FC = ({ open }) => { const { user } = useAdminListUsersStore() + return ( diff --git a/packages/ui/src/views/user-management/components/dialogs/edit-user/edit-user.tsx b/packages/ui/src/views/user-management/components/dialogs/edit-user/edit-user.tsx index 05c2caa2ab..4dd347cb37 100644 --- a/packages/ui/src/views/user-management/components/dialogs/edit-user/edit-user.tsx +++ b/packages/ui/src/views/user-management/components/dialogs/edit-user/edit-user.tsx @@ -2,10 +2,9 @@ import { useEffect } from 'react' import { SubmitHandler, useForm } from 'react-hook-form' import { AlertDialog, Button, ButtonGroup, ControlGroup, Fieldset, FormWrapper, Input } from '@/components' +import { newUserSchema } from '@/views/user-management/components/dialogs/edit-user/schemas' +import { IEditUserDialogProps, MemberFields } from '@/views/user-management/components/dialogs/edit-user/types' import { zodResolver } from '@hookform/resolvers/zod' -import { z } from 'zod' - -import { IEditUserDialogProps } from './types' export const EditUserDialog: React.FC = ({ useAdminListUsersStore, @@ -15,13 +14,6 @@ export const EditUserDialog: React.FC = ({ open }) => { const { user } = useAdminListUsersStore() - const newUserSchema = z.object({ - userID: z.string(), - email: z.string().email({ message: 'Please provide a valid email, ex: example@yourcompany.com' }), - displayName: z.string().min(1, { message: 'Please provide a display name' }) - }) - - type MemberFields = z.infer const { handleSubmit, @@ -33,7 +25,6 @@ export const EditUserDialog: React.FC = ({ mode: 'onChange' }) - // Form edit submit handler const onSubmit: SubmitHandler = data => { handleUpdateUser(data) resetNewMemberForm(data) diff --git a/packages/ui/src/views/user-management/components/dialogs/edit-user/schemas.ts b/packages/ui/src/views/user-management/components/dialogs/edit-user/schemas.ts new file mode 100644 index 0000000000..f2b889d921 --- /dev/null +++ b/packages/ui/src/views/user-management/components/dialogs/edit-user/schemas.ts @@ -0,0 +1,7 @@ +import { z } from 'zod' + +export const newUserSchema = z.object({ + userID: z.string(), + email: z.string().email({ message: 'Please provide a valid email, ex: example@yourcompany.com' }), + displayName: z.string().min(1, { message: 'Please provide a display name' }) +}) diff --git a/packages/ui/src/views/user-management/components/dialogs/edit-user/types.ts b/packages/ui/src/views/user-management/components/dialogs/edit-user/types.ts index 595969b0a0..6a61fefae3 100644 --- a/packages/ui/src/views/user-management/components/dialogs/edit-user/types.ts +++ b/packages/ui/src/views/user-management/components/dialogs/edit-user/types.ts @@ -1,4 +1,8 @@ -import { IAdminListUsersStore } from 'dist/views' +import { IAdminListUsersStore } from '@/views' +import { newUserSchema } from '@/views/user-management/components/dialogs/edit-user/schemas' +import { z } from 'zod' + +export type MemberFields = z.infer export interface IEditUserDialogProps { isSubmitting: boolean diff --git a/packages/ui/src/views/user-management/components/dialogs/remove-admin/remove-admin.tsx b/packages/ui/src/views/user-management/components/dialogs/remove-admin/remove-admin.tsx index e307f5278b..9094f9a001 100644 --- a/packages/ui/src/views/user-management/components/dialogs/remove-admin/remove-admin.tsx +++ b/packages/ui/src/views/user-management/components/dialogs/remove-admin/remove-admin.tsx @@ -1,8 +1,6 @@ import { AlertDialog, Button } from '@/components' +import { IRemoveAdminDialogProps } from '@/views/user-management/components/dialogs/remove-admin/types' -import { IRemoveAdminDialogProps } from './types' - -// Form Remove/Add Admin Dialog export const AdminDialog: React.FC = ({ useAdminListUsersStore, open, diff --git a/packages/ui/src/views/user-management/components/dialogs/reset-password/reset-password.tsx b/packages/ui/src/views/user-management/components/dialogs/reset-password/reset-password.tsx index 80e381c641..0bcf669955 100644 --- a/packages/ui/src/views/user-management/components/dialogs/reset-password/reset-password.tsx +++ b/packages/ui/src/views/user-management/components/dialogs/reset-password/reset-password.tsx @@ -1,8 +1,7 @@ import { FC } from 'react' import { AlertDialog, Button, CopyButton, Input, Text } from '@/components' - -import { IResetPasswordDialogProps } from './types' +import { IResetPasswordDialogProps } from '@/views/user-management/components/dialogs/reset-password/types' export const ResetPasswordDialog: FC = ({ open, diff --git a/packages/ui/src/views/user-management/components/dialogs/reset-password/types.ts b/packages/ui/src/views/user-management/components/dialogs/reset-password/types.ts index 1e5605b2ca..7d323ab2b0 100644 --- a/packages/ui/src/views/user-management/components/dialogs/reset-password/types.ts +++ b/packages/ui/src/views/user-management/components/dialogs/reset-password/types.ts @@ -1,4 +1,4 @@ -import { IAdminListUsersStore } from 'dist/views' +import { IAdminListUsersStore } from '@/views' export interface IResetPasswordDialogProps { onClose: () => void diff --git a/packages/ui/src/views/user-management/components/empty-state/empty-state.tsx b/packages/ui/src/views/user-management/components/empty-state/empty-state.tsx index 822d10f0c9..97662fb567 100644 --- a/packages/ui/src/views/user-management/components/empty-state/empty-state.tsx +++ b/packages/ui/src/views/user-management/components/empty-state/empty-state.tsx @@ -1,6 +1,5 @@ import { NoData } from '@/components' - -import { IEmptyStateProps } from './types' +import { IEmptyStateProps } from '@/views/user-management/components/empty-state/types' export const EmptyState = ({ t, onButtonClick }: IEmptyStateProps) => { return ( diff --git a/packages/ui/src/views/user-management/components/page-components/actions/actions.tsx b/packages/ui/src/views/user-management/components/page-components/actions/actions.tsx index fd0be07bc1..53bf267208 100644 --- a/packages/ui/src/views/user-management/components/page-components/actions/actions.tsx +++ b/packages/ui/src/views/user-management/components/page-components/actions/actions.tsx @@ -1,7 +1,6 @@ import { Button, Filters, ListActions, SearchBox } from '@/components' - -import { DialogLabels } from '../../../types' -import { ActionsProps } from './types' +import { ActionsProps } from '@/views/user-management/components/page-components/actions/types' +import { DialogLabels } from '@/views/user-management/types' export const Actions = ({ searchQuery, diff --git a/packages/ui/src/views/user-management/components/page-components/content/components/users-list/index.ts b/packages/ui/src/views/user-management/components/page-components/content/components/users-list/index.ts new file mode 100644 index 0000000000..be5b630d99 --- /dev/null +++ b/packages/ui/src/views/user-management/components/page-components/content/components/users-list/index.ts @@ -0,0 +1 @@ +export { UsersList } from './users-list' diff --git a/packages/ui/src/views/user-management/components/page-components/content/components/users-list/types.ts b/packages/ui/src/views/user-management/components/page-components/content/components/users-list/types.ts new file mode 100644 index 0000000000..dc1c2592f3 --- /dev/null +++ b/packages/ui/src/views/user-management/components/page-components/content/components/users-list/types.ts @@ -0,0 +1,6 @@ +import { UsersProps } from '@views/user-management/types' + +export interface PageProps { + users: UsersProps[] + handleDialogOpen: (user: UsersProps | null, dialogLabel: string) => void +} diff --git a/packages/ui/src/views/user-management/components/users-list.tsx b/packages/ui/src/views/user-management/components/page-components/content/components/users-list/users-list.tsx similarity index 95% rename from packages/ui/src/views/user-management/components/users-list.tsx rename to packages/ui/src/views/user-management/components/page-components/content/components/users-list/users-list.tsx index c25919e48c..352dfe11ff 100644 --- a/packages/ui/src/views/user-management/components/users-list.tsx +++ b/packages/ui/src/views/user-management/components/page-components/content/components/users-list/users-list.tsx @@ -13,13 +13,8 @@ import { Text } from '@/components' import { getInitials } from '@/utils/utils' - -import { DialogLabels, UsersProps } from '../types' - -interface PageProps { - users: UsersProps[] - handleDialogOpen: (user: UsersProps | null, dialogLabel: string) => void -} +import { PageProps } from '@/views/user-management/components/page-components/content/components/users-list/types' +import { DialogLabels } from '@/views/user-management/types' export const UsersList = ({ users, handleDialogOpen }: PageProps) => { return ( diff --git a/packages/ui/src/views/user-management/components/page-components/content/content.tsx b/packages/ui/src/views/user-management/components/page-components/content/content.tsx index 47400d1890..314f525dbf 100644 --- a/packages/ui/src/views/user-management/components/page-components/content/content.tsx +++ b/packages/ui/src/views/user-management/components/page-components/content/content.tsx @@ -1,12 +1,11 @@ import { FiltersBar, PaginationComponent, Spacer } from '@/components' import { SandboxLayout } from '@/views' - -import { DialogLabels } from '../../../types' -import { EmptyState } from '../../empty-state' -import { UsersList } from '../../users-list' -import { Actions } from '../actions' -import { Header } from '../header' -import { ContentProps } from './types' +import { EmptyState } from '@/views/user-management/components/empty-state' +import { Actions } from '@/views/user-management/components/page-components/actions' +import { UsersList } from '@/views/user-management/components/page-components/content/components/users-list' +import { ContentProps } from '@/views/user-management/components/page-components/content/types' +import { Header } from '@/views/user-management/components/page-components/header' +import { DialogLabels } from '@/views/user-management/types' export const Content = ({ userData, diff --git a/packages/ui/src/views/user-management/components/page-components/content/types.ts b/packages/ui/src/views/user-management/components/page-components/content/types.ts index 985cff5d85..969fc56671 100644 --- a/packages/ui/src/views/user-management/components/page-components/content/types.ts +++ b/packages/ui/src/views/user-management/components/page-components/content/types.ts @@ -1,6 +1,5 @@ import { TranslationStore } from '@/views' - -import { UsersProps } from '../../../types' +import { UsersProps } from '@/views/user-management/types' export interface ContentProps { userData: UsersProps[] | null diff --git a/packages/ui/src/views/user-management/components/tabs.tsx b/packages/ui/src/views/user-management/components/tabs.tsx index 56bca45ba3..7535a44042 100644 --- a/packages/ui/src/views/user-management/components/tabs.tsx +++ b/packages/ui/src/views/user-management/components/tabs.tsx @@ -1,9 +1,8 @@ import { Tabs, TabsList, TabsTrigger } from '@/components' import { SandboxLayout, TranslationStore } from '@/views' +import { EActiveTab } from '@/views/user-management/types' -import { EActiveTab } from '../types' - -const UserManagementTabs = ({ +export const UserManagementTabs = ({ activeTab, setActiveTab, useTranslationStore @@ -32,5 +31,3 @@ const UserManagementTabs = ({ ) } - -export { UserManagementTabs } diff --git a/packages/ui/src/views/user-management/hooks/use-user-management.ts b/packages/ui/src/views/user-management/hooks/use-user-management.ts index 9f14caeee5..ad48ccb26e 100644 --- a/packages/ui/src/views/user-management/hooks/use-user-management.ts +++ b/packages/ui/src/views/user-management/hooks/use-user-management.ts @@ -1,6 +1,6 @@ import { useMemo } from 'react' -import { filterItems } from '../utils' +import { filterItems } from '@/views/user-management/utils' export const useUserManagement = (userData: any[], searchQuery: string) => { const filteredUsers = useMemo(() => { diff --git a/packages/ui/src/views/user-management/user-management-page.tsx b/packages/ui/src/views/user-management/user-management-page.tsx index c412263a8f..42016cd011 100644 --- a/packages/ui/src/views/user-management/user-management-page.tsx +++ b/packages/ui/src/views/user-management/user-management-page.tsx @@ -1,12 +1,11 @@ +import { SandboxLayout } from '@/views' +import { Content } from '@/views/user-management/components/page-components/content' +import { UserManagementTabs } from '@/views/user-management/components/tabs' +import { useUserManagement } from '@/views/user-management/hooks/use-user-management' +import { IUserManagementPageProps } from '@/views/user-management/types' import { getFilterOptions, getSortDirections, getSortOptions } from '@views/repo/constants/filter-options' import { useFilters } from '@views/repo/hooks' -import { SandboxLayout } from '..' -import { Content } from './components/page-components/content' -import { UserManagementTabs } from './components/tabs' -import { useUserManagement } from './hooks/use-user-management' -import { IUserManagementPageProps } from './types' - export const UserManagementPage: React.FC = ({ useAdminListUsersStore, useTranslationStore, diff --git a/packages/ui/src/views/user-management/utils.ts b/packages/ui/src/views/user-management/utils.ts index cb57461045..207e502b95 100644 --- a/packages/ui/src/views/user-management/utils.ts +++ b/packages/ui/src/views/user-management/utils.ts @@ -1,4 +1,4 @@ -import { UsersProps } from './types' +import { UsersProps } from '@/views/user-management/types' export const filterItems = (items: UsersProps[], query: string) => { if (!query.trim()) return items