From 5f86ba6b1308071be5118e3501621ae4246c4828 Mon Sep 17 00:00:00 2001 From: chamikaJ Date: Tue, 22 Jul 2025 12:27:05 +0530 Subject: [PATCH 01/13] feat(auth): implement new authentication pages and refactor routes - Added new authentication pages: LoginPage, SignupPage, ForgotPasswordPage, AuthenticatingPage, LoggingOutPage, and VerifyResetEmailPage. - Refactored auth routes to use updated component names for better consistency and clarity. - Enhanced user experience with improved loading states and error handling across authentication processes. --- .../src/app/routes/auth-routes.tsx | 12 +-- ...henticating.tsx => AuthenticatingPage.tsx} | 0 ...ssword-page.tsx => ForgotPasswordPage.tsx} | 6 +- .../{logging-out.tsx => LoggingOutPage.tsx} | 0 .../auth/{login-page.tsx => LoginPage.tsx} | 0 .../auth/{signup-page.tsx => SignupPage.tsx} | 89 ++++++++++++++++--- ...set-email.tsx => VerifyResetEmailPage.tsx} | 72 +++++++++++++-- 7 files changed, 150 insertions(+), 29 deletions(-) rename worklenz-frontend/src/pages/auth/{authenticating.tsx => AuthenticatingPage.tsx} (100%) rename worklenz-frontend/src/pages/auth/{forgot-password-page.tsx => ForgotPasswordPage.tsx} (95%) rename worklenz-frontend/src/pages/auth/{logging-out.tsx => LoggingOutPage.tsx} (100%) rename worklenz-frontend/src/pages/auth/{login-page.tsx => LoginPage.tsx} (100%) rename worklenz-frontend/src/pages/auth/{signup-page.tsx => SignupPage.tsx} (78%) rename worklenz-frontend/src/pages/auth/{verify-reset-email.tsx => VerifyResetEmailPage.tsx} (64%) diff --git a/worklenz-frontend/src/app/routes/auth-routes.tsx b/worklenz-frontend/src/app/routes/auth-routes.tsx index 5cddb925..b0909963 100644 --- a/worklenz-frontend/src/app/routes/auth-routes.tsx +++ b/worklenz-frontend/src/app/routes/auth-routes.tsx @@ -4,12 +4,12 @@ import { Navigate } from 'react-router-dom'; import { SuspenseFallback } from '@/components/suspense-fallback/suspense-fallback'; // Lazy load auth page components for better code splitting -const LoginPage = lazy(() => import('@/pages/auth/login-page')); -const SignupPage = lazy(() => import('@/pages/auth/signup-page')); -const ForgotPasswordPage = lazy(() => import('@/pages/auth/forgot-password-page')); -const LoggingOutPage = lazy(() => import('@/pages/auth/logging-out')); -const AuthenticatingPage = lazy(() => import('@/pages/auth/authenticating')); -const VerifyResetEmailPage = lazy(() => import('@/pages/auth/verify-reset-email')); +const LoginPage = lazy(() => import('@/pages/auth/LoginPage')); +const SignupPage = lazy(() => import('@/pages/auth/SignupPage')); +const ForgotPasswordPage = lazy(() => import('@/pages/auth/ForgotPasswordPage')); +const LoggingOutPage = lazy(() => import('@/pages/auth/LoggingOutPage')); +const AuthenticatingPage = lazy(() => import('@/pages/auth/AuthenticatingPage')); +const VerifyResetEmailPage = lazy(() => import('@/pages/auth/VerifyResetEmailPage')); const authRoutes = [ { diff --git a/worklenz-frontend/src/pages/auth/authenticating.tsx b/worklenz-frontend/src/pages/auth/AuthenticatingPage.tsx similarity index 100% rename from worklenz-frontend/src/pages/auth/authenticating.tsx rename to worklenz-frontend/src/pages/auth/AuthenticatingPage.tsx diff --git a/worklenz-frontend/src/pages/auth/forgot-password-page.tsx b/worklenz-frontend/src/pages/auth/ForgotPasswordPage.tsx similarity index 95% rename from worklenz-frontend/src/pages/auth/forgot-password-page.tsx rename to worklenz-frontend/src/pages/auth/ForgotPasswordPage.tsx index 46e51259..94f2863b 100644 --- a/worklenz-frontend/src/pages/auth/forgot-password-page.tsx +++ b/worklenz-frontend/src/pages/auth/ForgotPasswordPage.tsx @@ -118,7 +118,7 @@ const ForgotPasswordPage = () => { > } - placeholder={t('emailPlaceholder')} + placeholder={t('emailPlaceholder', {defaultValue: 'Enter your email'})} size="large" style={{ borderRadius: 4 }} /> @@ -134,7 +134,7 @@ const ForgotPasswordPage = () => { loading={isLoading} style={{ borderRadius: 4 }} > - {t('resetPasswordButton')} + {t('resetPasswordButton', {defaultValue: 'Reset Password'})} {t('orText')} @@ -146,7 +146,7 @@ const ForgotPasswordPage = () => { borderRadius: 4, }} > - {t('returnToLoginButton')} + {t('returnToLoginButton', {defaultValue: 'Return to Login'})} diff --git a/worklenz-frontend/src/pages/auth/logging-out.tsx b/worklenz-frontend/src/pages/auth/LoggingOutPage.tsx similarity index 100% rename from worklenz-frontend/src/pages/auth/logging-out.tsx rename to worklenz-frontend/src/pages/auth/LoggingOutPage.tsx diff --git a/worklenz-frontend/src/pages/auth/login-page.tsx b/worklenz-frontend/src/pages/auth/LoginPage.tsx similarity index 100% rename from worklenz-frontend/src/pages/auth/login-page.tsx rename to worklenz-frontend/src/pages/auth/LoginPage.tsx diff --git a/worklenz-frontend/src/pages/auth/signup-page.tsx b/worklenz-frontend/src/pages/auth/SignupPage.tsx similarity index 78% rename from worklenz-frontend/src/pages/auth/signup-page.tsx rename to worklenz-frontend/src/pages/auth/SignupPage.tsx index 68d3f9e7..de6ae10a 100644 --- a/worklenz-frontend/src/pages/auth/signup-page.tsx +++ b/worklenz-frontend/src/pages/auth/SignupPage.tsx @@ -5,6 +5,8 @@ import { useMediaQuery } from 'react-responsive'; import { LockOutlined, MailOutlined, UserOutlined } from '@ant-design/icons'; import { Form, Card, Input, Flex, Button, Typography, Space, message } from 'antd/es'; import { Rule } from 'antd/es/form'; +import { CheckCircleTwoTone, CloseCircleTwoTone } from '@ant-design/icons'; +import { useAppSelector } from '@/hooks/useAppSelector'; import googleIcon from '@/assets/images/google-icon.png'; import PageHeader from '@components/AuthPageHeader'; @@ -291,19 +293,51 @@ const SignupPage = () => { password: [ { required: true, - message: t('passwordRequired'), + message: null, }, { min: 8, - message: t('passwordMinCharacterRequired'), + message: null, }, { pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&#])/, - message: t('passwordPatternRequired'), + message: null, }, ], }; + const passwordChecklistItems = [ + { + key: 'minLength', + test: (v: string) => v.length >= 8, + label: t('passwordChecklist.minLength', { defaultValue: 'At least 8 characters' }), + }, + { + key: 'uppercase', + test: (v: string) => /[A-Z]/.test(v), + label: t('passwordChecklist.uppercase', { defaultValue: 'One uppercase letter' }), + }, + { + key: 'lowercase', + test: (v: string) => /[a-z]/.test(v), + label: t('passwordChecklist.lowercase', { defaultValue: 'One lowercase letter' }), + }, + { + key: 'number', + test: (v: string) => /\d/.test(v), + label: t('passwordChecklist.number', { defaultValue: 'One number' }), + }, + { + key: 'special', + test: (v: string) => /[@$!%*?&#]/.test(v), + label: t('passwordChecklist.special', { defaultValue: 'One special character' }), + }, + ]; + + const themeMode = useAppSelector(state => state.themeReducer.mode); + const [passwordValue, setPasswordValue] = useState(''); + const [passwordTouched, setPasswordTouched] = useState(false); + return ( { }} variant="outlined" > - +
{ name: urlParams.name, }} > - + } - placeholder={t('namePlaceholder')} + placeholder={t('namePlaceholder', {defaultValue: 'Enter your full name'})} size="large" style={{ borderRadius: 4 }} /> - + } - placeholder={t('emailPlaceholder')} + placeholder={t('emailPlaceholder', {defaultValue: 'Enter your email'})} size="large" style={{ borderRadius: 4 }} /> - +
} - placeholder={t('strongPasswordPlaceholder')} + placeholder={t('strongPasswordPlaceholder', {defaultValue: 'Enter a strong password'})} size="large" style={{ borderRadius: 4 }} + value={passwordValue} + onChange={e => { + setPasswordValue(e.target.value); + if (!passwordTouched) setPasswordTouched(true); + }} + onBlur={() => setPasswordTouched(true)} /> - - {t('passwordValidationAltText')} - +
+ {passwordChecklistItems.map(item => { + const passed = item.test(passwordValue); + // Only green if passed, otherwise neutral (never red) + let color = passed + ? (themeMode === 'dark' ? '#52c41a' : '#389e0d') + : (themeMode === 'dark' ? '#b0b3b8' : '#bfbfbf'); + return ( + + {passed ? ( + + ) : ( + + )} + {item.label} + + ); + })} +
@@ -416,7 +477,7 @@ const SignupPage = () => { - {t('alreadyHaveAccountText')} + {t('alreadyHaveAccountText', {defaultValue: 'Already have an account?'})} { const { t } = useTranslation('auth/verify-reset-email'); const isMobile = useMediaQuery({ query: '(max-width: 576px)' }); + const themeMode = useAppSelector(state => state.themeReducer.mode); + const [passwordValue, setPasswordValue] = useState(''); + const [passwordTouched, setPasswordTouched] = useState(false); + const passwordChecklistItems = [ + { + key: 'minLength', + test: (v: string) => v.length >= 8, + label: t('passwordChecklist.minLength', { defaultValue: 'At least 8 characters' }), + }, + { + key: 'uppercase', + test: (v: string) => /[A-Z]/.test(v), + label: t('passwordChecklist.uppercase', { defaultValue: 'One uppercase letter' }), + }, + { + key: 'lowercase', + test: (v: string) => /[a-z]/.test(v), + label: t('passwordChecklist.lowercase', { defaultValue: 'One lowercase letter' }), + }, + { + key: 'number', + test: (v: string) => /\d/.test(v), + label: t('passwordChecklist.number', { defaultValue: 'One number' }), + }, + { + key: 'special', + test: (v: string) => /[@$!%*?&#]/.test(v), + label: t('passwordChecklist.special', { defaultValue: 'One special character' }), + }, + ]; useEffect(() => { trackMixpanelEvent(evt_verify_reset_email_page_visit); @@ -104,12 +136,38 @@ const VerifyResetEmailPage = () => { }, ]} > - } - placeholder={t('placeholder')} - size="large" - style={{ borderRadius: 4 }} - /> +
+ } + placeholder={t('placeholder')} + size="large" + style={{ borderRadius: 4 }} + value={passwordValue} + onChange={e => { + setPasswordValue(e.target.value); + if (!passwordTouched) setPasswordTouched(true); + }} + onBlur={() => setPasswordTouched(true)} + /> +
+ {passwordChecklistItems.map(item => { + const passed = item.test(passwordValue); + let color = passed + ? (themeMode === 'dark' ? '#52c41a' : '#389e0d') + : (themeMode === 'dark' ? '#b0b3b8' : '#bfbfbf'); + return ( + + {passed ? ( + + ) : ( + + )} + {item.label} + + ); + })} +
+
{ placeholder={t('confirmPasswordPlaceholder')} size="large" style={{ borderRadius: 4 }} + value={form.getFieldValue('confirmPassword') || ''} + onChange={e => form.setFieldsValue({ confirmPassword: e.target.value })} /> From 256f1eb3a987cd0313e63227ad8f011c6f4190b5 Mon Sep 17 00:00:00 2001 From: chamikaJ Date: Tue, 22 Jul 2025 12:46:09 +0530 Subject: [PATCH 02/13] feat(task-list): enhance empty state display in task list component - Added EmptyListPlaceholder component to visually represent the empty state in the task list. - Adjusted styling and layout for the empty group drop zone to improve user experience. - Removed unused progress properties from the task group data structure for cleaner code. --- .../src/components/EmptyListPlaceholder.tsx | 11 +++++++-- .../task-list-v2/TaskListV2Table.tsx | 24 +++++++------------ 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/worklenz-frontend/src/components/EmptyListPlaceholder.tsx b/worklenz-frontend/src/components/EmptyListPlaceholder.tsx index dfe1aa76..58cf691e 100644 --- a/worklenz-frontend/src/components/EmptyListPlaceholder.tsx +++ b/worklenz-frontend/src/components/EmptyListPlaceholder.tsx @@ -1,17 +1,24 @@ import { Empty, Typography } from 'antd'; import React from 'react'; +import { useTranslation } from 'react-i18next'; type EmptyListPlaceholderProps = { imageSrc?: string; imageHeight?: number; - text: string; + text?: string; + textKey?: string; + i18nNs?: string; }; const EmptyListPlaceholder = ({ imageSrc = 'https://s3.us-west-2.amazonaws.com/worklenz.com/assets/empty-box.webp', imageHeight = 60, text, + textKey, + i18nNs = 'task-list-table', }: EmptyListPlaceholderProps) => { + const { t } = useTranslation(i18nNs); + const description = textKey ? t(textKey) : text; return ( {text}} + description={{description}} /> ); }; diff --git a/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx b/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx index 1cc6c680..2c810cec 100644 --- a/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx +++ b/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx @@ -67,6 +67,7 @@ import AddTaskRow from './components/AddTaskRow'; import { AddCustomColumnButton, CustomColumnHeader } from './components/CustomColumnComponents'; import TaskListSkeleton from './components/TaskListSkeleton'; import ConvertToSubtaskDrawer from '@/components/task-list-common/convert-to-subtask-drawer/convert-to-subtask-drawer'; +import EmptyListPlaceholder from '@/components/EmptyListPlaceholder'; // Empty Group Drop Zone Component const EmptyGroupDropZone: React.FC<{ @@ -89,8 +90,9 @@ const EmptyGroupDropZone: React.FC<{ className={`relative w-full transition-colors duration-200 ${ isOver && active ? 'bg-blue-50 dark:bg-blue-900/20' : '' }`} + style={{ minHeight: 80 }} > -
+
{visibleColumns.map((column, index) => { const emptyColumnStyle = { width: column.width, @@ -105,16 +107,12 @@ const EmptyGroupDropZone: React.FC<{ ); })}
-
-
- {isOver && active ? t('dropTaskHere') || 'Drop task here' : t('noTasksInGroup')} -
+ {/* Left-aligned visually appealing empty state */} +
+
{isOver && active && (
@@ -551,10 +549,6 @@ const TaskListV2Section: React.FC = () => { name: group.title, count: group.actualCount, color: group.color, - todo_progress: group.todo_progress, - doing_progress: group.doing_progress, - done_progress: group.done_progress, - groupType: group.groupType, }} isCollapsed={isGroupCollapsed} onToggle={() => handleGroupCollapse(group.id)} From 354b9422edfb0c845c4a91e15593bb0ef86463ee Mon Sep 17 00:00:00 2001 From: chamikaJ Date: Tue, 22 Jul 2025 16:08:41 +0530 Subject: [PATCH 03/13] feat(tasks): add color_code_dark to task groups and enhance task list display - Introduced color_code_dark property to task groups for improved theming support. - Updated task list components to utilize color_code_dark based on the current theme mode. - Enhanced empty state handling in task list to dynamically create an unmapped group for better user experience. - Refactored task management slice to support dynamic group creation for unmapped tasks. --- .../src/controllers/tasks-controller-base.ts | 1 + .../src/controllers/tasks-controller-v2.ts | 41 ++---- worklenz-backend/src/shared/constants.ts | 18 +-- .../task-list-v2/GroupProgressBar.tsx | 74 ++++++---- .../task-list-v2/TaskListV2Table.tsx | 128 +++++++++++++++--- .../task-management/task-management.slice.ts | 20 ++- .../src/hooks/useTaskSocketHandlers.ts | 5 +- .../src/types/task-management.types.ts | 1 + 8 files changed, 194 insertions(+), 94 deletions(-) diff --git a/worklenz-backend/src/controllers/tasks-controller-base.ts b/worklenz-backend/src/controllers/tasks-controller-base.ts index 58558c1e..43a4909c 100644 --- a/worklenz-backend/src/controllers/tasks-controller-base.ts +++ b/worklenz-backend/src/controllers/tasks-controller-base.ts @@ -16,6 +16,7 @@ export interface ITaskGroup { start_date?: string; end_date?: string; color_code: string; + color_code_dark: string; category_id: string | null; old_category_id?: string; todo_progress?: number; diff --git a/worklenz-backend/src/controllers/tasks-controller-v2.ts b/worklenz-backend/src/controllers/tasks-controller-v2.ts index d38a563d..73dbcf5d 100644 --- a/worklenz-backend/src/controllers/tasks-controller-v2.ts +++ b/worklenz-backend/src/controllers/tasks-controller-v2.ts @@ -110,20 +110,20 @@ export default class TasksControllerV2 extends TasksControllerBase { private static getQuery(userId: string, options: ParsedQs) { // Determine which sort column to use based on grouping - const groupBy = options.group || 'status'; - let defaultSortColumn = 'sort_order'; + const groupBy = options.group || "status"; + let defaultSortColumn = "sort_order"; switch (groupBy) { - case 'status': - defaultSortColumn = 'status_sort_order'; + case "status": + defaultSortColumn = "status_sort_order"; break; - case 'priority': - defaultSortColumn = 'priority_sort_order'; + case "priority": + defaultSortColumn = "priority_sort_order"; break; - case 'phase': - defaultSortColumn = 'phase_sort_order'; + case "phase": + defaultSortColumn = "phase_sort_order"; break; default: - defaultSortColumn = 'sort_order'; + defaultSortColumn = "sort_order"; } const searchField = options.search ? ["t.name", "CONCAT((SELECT key FROM projects WHERE id = t.project_id), '-', task_no)"] : defaultSortColumn; @@ -436,6 +436,7 @@ export default class TasksControllerV2 extends TasksControllerBase { name: UNMAPPED, category_id: null, color_code: "#fbc84c69", + color_code_dark: "#fbc84c69", tasks: unmapped }; } @@ -1008,7 +1009,6 @@ export default class TasksControllerV2 extends TasksControllerBase { const startTime = performance.now(); const isSubTasks = !!req.query.parent_task; const groupBy = (req.query.group || GroupBy.STATUS) as string; - const archived = req.query.archived === "true"; // PERFORMANCE OPTIMIZATION: Skip expensive progress calculation by default // Progress values are already calculated and stored in the database @@ -1017,23 +1017,17 @@ export default class TasksControllerV2 extends TasksControllerBase { const shouldRefreshProgress = req.query.refresh_progress === "true"; if (shouldRefreshProgress && req.params.id) { - const progressStartTime = performance.now(); await this.refreshProjectTaskProgressValues(req.params.id); - const progressEndTime = performance.now(); } - const queryStartTime = performance.now(); const q = TasksControllerV2.getQuery(req.user?.id as string, req.query); const params = isSubTasks ? [req.params.id || null, req.query.parent_task] : [req.params.id || null]; const result = await db.query(q, params); const tasks = [...result.rows]; - const queryEndTime = performance.now(); // Get groups metadata dynamically from database - const groupsStartTime = performance.now(); const groups = await this.getGroups(groupBy, req.params.id); - const groupsEndTime = performance.now(); // Create priority value to name mapping const priorityMap: Record = { @@ -1051,10 +1045,7 @@ export default class TasksControllerV2 extends TasksControllerBase { } } - - // Transform tasks with all necessary data preprocessing - const transformStartTime = performance.now(); const transformedTasks = tasks.map((task, index) => { // Update task with calculated values (lightweight version) TasksControllerV2.updateTaskViewModel(task); @@ -1125,10 +1116,6 @@ export default class TasksControllerV2 extends TasksControllerBase { reporter: task.reporter || null, }; }); - const transformEndTime = performance.now(); - - // Create groups based on dynamic data from database - const groupingStartTime = performance.now(); const groupedResponse: Record = {}; // Initialize groups from database data @@ -1148,6 +1135,7 @@ export default class TasksControllerV2 extends TasksControllerBase { tasks: [], taskIds: [], color: group.color_code || this.getDefaultGroupColor(groupBy, groupKey), + color_code_dark: group.color_code_dark || this.getDefaultGroupColor(groupBy, groupKey), // Include additional metadata from database category_id: group.category_id, start_date: group.start_date, @@ -1294,8 +1282,6 @@ export default class TasksControllerV2 extends TasksControllerBase { responseGroups.push(groupedResponse[UNMAPPED.toLowerCase()]); } - const groupingEndTime = performance.now(); - const endTime = performance.now(); const totalTime = endTime - startTime; @@ -1333,16 +1319,11 @@ export default class TasksControllerV2 extends TasksControllerBase { done: "#52c41a", }, [GroupBy.PRIORITY]: { - critical: "#ff4d4f", high: "#ff7a45", medium: "#faad14", low: "#52c41a", }, [GroupBy.PHASE]: { - planning: "#722ed1", - development: "#1890ff", - testing: "#faad14", - deployment: "#52c41a", unmapped: "#fbc84c69", }, }; diff --git a/worklenz-backend/src/shared/constants.ts b/worklenz-backend/src/shared/constants.ts index c814c603..ffda9e67 100644 --- a/worklenz-backend/src/shared/constants.ts +++ b/worklenz-backend/src/shared/constants.ts @@ -89,24 +89,24 @@ export const NumbersColorMap: { [x: string]: string } = { }; export const PriorityColorCodes: { [x: number]: string; } = { - 0: "#75c997", - 1: "#fbc84c", - 2: "#f37070" + 0: "#2E8B57", + 1: "#DAA520", + 2: "#CD5C5C" }; export const PriorityColorCodesDark: { [x: number]: string; } = { - 0: "#46D980", - 1: "#FFC227", - 2: "#FF4141" + 0: "#3CB371", + 1: "#B8860B", + 2: "#F08080" }; export const TASK_STATUS_TODO_COLOR = "#a9a9a9"; export const TASK_STATUS_DOING_COLOR = "#70a6f3"; export const TASK_STATUS_DONE_COLOR = "#75c997"; -export const TASK_PRIORITY_LOW_COLOR = "#75c997"; -export const TASK_PRIORITY_MEDIUM_COLOR = "#fbc84c"; -export const TASK_PRIORITY_HIGH_COLOR = "#f37070"; +export const TASK_PRIORITY_LOW_COLOR = "#2E8B57"; +export const TASK_PRIORITY_MEDIUM_COLOR = "#DAA520"; +export const TASK_PRIORITY_HIGH_COLOR = "#CD5C5C"; export const TASK_DUE_COMPLETED_COLOR = "#75c997"; export const TASK_DUE_UPCOMING_COLOR = "#70a6f3"; diff --git a/worklenz-frontend/src/components/task-list-v2/GroupProgressBar.tsx b/worklenz-frontend/src/components/task-list-v2/GroupProgressBar.tsx index a8623d27..427110d4 100644 --- a/worklenz-frontend/src/components/task-list-v2/GroupProgressBar.tsx +++ b/worklenz-frontend/src/components/task-list-v2/GroupProgressBar.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; +import { Tooltip } from 'antd'; interface GroupProgressBarProps { todoProgress: number; @@ -21,18 +22,27 @@ const GroupProgressBar: React.FC = ({ return null; } - const total = todoProgress + doingProgress + doneProgress; + const total = (todoProgress || 0) + (doingProgress || 0) + (doneProgress || 0); // Don't show if no progress values exist if (total === 0) { return null; } + // Tooltip content with all values in rows + const tooltipContent = ( +
+
{t('todo')}: {todoProgress || 0}%
+
{t('inProgress')}: {doingProgress || 0}%
+
{t('done')}: {doneProgress || 0}%
+
+ ); + return (
{/* Compact progress text */} - {doneProgress}% {t('done')} + {doneProgress || 0}% {t('done')} {/* Compact progress bar */} @@ -40,27 +50,30 @@ const GroupProgressBar: React.FC = ({
{/* Todo section - light green */} {todoProgress > 0 && ( -
+ +
+ )} {/* Doing section - medium green */} {doingProgress > 0 && ( -
+ +
+ )} {/* Done section - dark green */} {doneProgress > 0 && ( -
+ +
+ )}
@@ -68,22 +81,25 @@ const GroupProgressBar: React.FC = ({ {/* Small legend dots with better spacing */}
{todoProgress > 0 && ( -
+ +
+ )} {doingProgress > 0 && ( -
+ +
+ )} {doneProgress > 0 && ( -
+ +
+ )}
diff --git a/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx b/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx index 2c810cec..33c7e36f 100644 --- a/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx +++ b/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx @@ -60,7 +60,6 @@ import { fetchPhasesByProjectId } from '@/features/projects/singleProject/phase/ // Components import TaskRowWithSubtasks from './TaskRowWithSubtasks'; import TaskGroupHeader from './TaskGroupHeader'; -import ImprovedTaskFilters from '@/components/task-management/improved-task-filters'; import OptimizedBulkActionBar from '@/components/task-management/optimized-bulk-action-bar'; import CustomColumnModal from '@/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/custom-column-modal'; import AddTaskRow from './components/AddTaskRow'; @@ -177,7 +176,9 @@ const TaskListV2Section: React.FC = () => { const { projectId: urlProjectId } = useParams(); const { t } = useTranslation('task-list-table'); const { socket, connected } = useSocket(); - + const themeMode = useAppSelector(state => state.themeReducer.mode); + const isDarkMode = themeMode === 'dark'; + // Redux state selectors const allTasks = useAppSelector(selectAllTasksArray); const groups = useAppSelector(selectGroups); @@ -490,7 +491,7 @@ const TaskListV2Section: React.FC = () => { isAddTaskRow: true, groupId: group.id, groupType: currentGrouping || 'status', - groupValue: group.id, // Use the actual database ID from backend + groupValue: group.id, // Send the UUID that backend expects projectId: urlProjectId, rowId: `add-task-${group.id}-0`, autoFocus: false, @@ -501,7 +502,7 @@ const TaskListV2Section: React.FC = () => { isAddTaskRow: true, groupId: group.id, groupType: currentGrouping || 'status', - groupValue: group.id, + groupValue: group.id, // Send the UUID that backend expects projectId: urlProjectId, rowId: rowId, autoFocus: index === groupAddRows.length - 1, // Auto-focus the latest row @@ -534,6 +535,7 @@ const TaskListV2Section: React.FC = () => { return virtuosoGroups.flatMap(group => group.tasks); }, [virtuosoGroups]); + // Render functions const renderGroup = useCallback( (groupIndex: number) => { @@ -548,7 +550,7 @@ const TaskListV2Section: React.FC = () => { id: group.id, name: group.title, count: group.actualCount, - color: group.color, + color: isDarkMode ? group.color_code_dark : group.color, }} isCollapsed={isGroupCollapsed} onToggle={() => handleGroupCollapse(group.id)} @@ -679,13 +681,97 @@ const TaskListV2Section: React.FC = () => {
); - // Show message when no data + // Show message when no data - but for phase grouping, create an unmapped group if (groups.length === 0 && !loading) { + // If grouped by phase, show an unmapped group to allow task creation + if (currentGrouping === 'phase') { + const unmappedGroup = { + id: 'Unmapped', + title: 'Unmapped', + groupType: 'phase', + groupValue: 'Unmapped', // Use same ID as groupValue for consistency + collapsed: false, + tasks: [], + taskIds: [], + color: '#fbc84c69', + actualCount: 0, + count: 1, // For the add task row + startIndex: 0 + }; + + + const unmappedVirtuosoGroups = [unmappedGroup]; + + return ( + +
+
+
+ {/* Sticky Column Headers */} +
+ {renderColumnHeaders()} +
+ +
+
+ {}} + projectId={urlProjectId || ''} + /> + +
+
+
+
+
+
+ ); + } + + // For other groupings, show the empty state message return (
-
- -
@@ -806,19 +892,17 @@ const TaskListV2Section: React.FC = () => { {/* Drag Overlay */} {activeId ? ( -
-
-
- -
-
- {allTasks.find(task => task.id === activeId)?.name || - allTasks.find(task => task.id === activeId)?.title || - t('emptyStates.dragTaskFallback')} -
-
- {allTasks.find(task => task.id === activeId)?.task_key} -
+
col.id === 'title')?.width || '300px' }} + > +
+
+ +
+ {allTasks.find(task => task.id === activeId)?.name || + allTasks.find(task => task.id === activeId)?.title || + t('emptyStates.dragTaskFallback')}
diff --git a/worklenz-frontend/src/features/task-management/task-management.slice.ts b/worklenz-frontend/src/features/task-management/task-management.slice.ts index f0e9c494..b28da652 100644 --- a/worklenz-frontend/src/features/task-management/task-management.slice.ts +++ b/worklenz-frontend/src/features/task-management/task-management.slice.ts @@ -526,9 +526,25 @@ const taskManagementSlice = createSlice({ }, addTaskToGroup: (state, action: PayloadAction<{ task: Task; groupId: string }>) => { const { task, groupId } = action.payload; + state.ids.push(task.id); state.entities[task.id] = task; - const group = state.groups.find(g => g.id === groupId); + let group = state.groups.find(g => g.id === groupId); + + // If group doesn't exist and it's "Unmapped", create it dynamically + if (!group && groupId === 'Unmapped') { + const unmappedGroup = { + id: 'Unmapped', + title: 'Unmapped', + taskIds: [], + type: 'phase' as const, + color: '#fbc84c69', + groupValue: 'Unmapped' + }; + state.groups.push(unmappedGroup); + group = unmappedGroup; + } + if (group) { group.taskIds.push(task.id); } @@ -1170,7 +1186,7 @@ export default taskManagementSlice.reducer; // V3 API selectors - no processing needed, data is pre-processed by backend export const selectTaskGroupsV3 = (state: RootState) => state.taskManagement.groups; -export const selectCurrentGroupingV3 = (state: RootState) => state.taskManagement.grouping; +export const selectCurrentGroupingV3 = (state: RootState) => state.grouping.currentGrouping; // Column-related selectors export const selectColumns = (state: RootState) => state.taskManagement.columns; diff --git a/worklenz-frontend/src/hooks/useTaskSocketHandlers.ts b/worklenz-frontend/src/hooks/useTaskSocketHandlers.ts index 2cb419a9..0c70e38d 100644 --- a/worklenz-frontend/src/hooks/useTaskSocketHandlers.ts +++ b/worklenz-frontend/src/hooks/useTaskSocketHandlers.ts @@ -855,10 +855,11 @@ export const useTaskSocketHandlers = () => { // For priority grouping, use priority field (which contains the priority UUID) groupId = data.priority; } else if (grouping === 'phase') { - // For phase grouping, use phase_id - groupId = data.phase_id; + // For phase grouping, use phase_id, or 'Unmapped' if no phase_id + groupId = data.phase_id || 'Unmapped'; } + // Use addTaskToGroup with the actual group UUID dispatch(addTaskToGroup({ task, groupId: groupId || '' })); diff --git a/worklenz-frontend/src/types/task-management.types.ts b/worklenz-frontend/src/types/task-management.types.ts index 11f6dd6a..d6942d0b 100644 --- a/worklenz-frontend/src/types/task-management.types.ts +++ b/worklenz-frontend/src/types/task-management.types.ts @@ -62,6 +62,7 @@ export interface TaskGroup { taskIds: string[]; type?: 'status' | 'priority' | 'phase' | 'members'; color?: string; + color_code_dark?: string; collapsed?: boolean; groupValue?: string; // Add any other group properties as needed From 33aace71c8d3297bd30aafde3a814888fc0760f3 Mon Sep 17 00:00:00 2001 From: chamikaJ Date: Tue, 22 Jul 2025 17:12:06 +0530 Subject: [PATCH 04/13] refactor(tasks): improve code readability and formatting in tasks-controller-v2 - Refactored import statements for better organization and clarity. - Enhanced formatting of methods and conditionals for improved readability. - Updated task filtering methods to maintain consistent formatting and style. - Added performance logging for deprecated methods to assist in monitoring usage. - Cleaned up unnecessary comments and improved inline documentation for better understanding. --- .../src/controllers/tasks-controller-v2.ts | 635 ++++++++++++------ .../task-list-v2/GroupProgressBar.tsx | 1 + .../task-list-v2/TaskGroupHeader.tsx | 479 +++++++------ .../task-list-v2/TaskListV2Table.tsx | 33 +- .../task-list-v2/components/AddTaskRow.tsx | 4 +- 5 files changed, 746 insertions(+), 406 deletions(-) diff --git a/worklenz-backend/src/controllers/tasks-controller-v2.ts b/worklenz-backend/src/controllers/tasks-controller-v2.ts index 73dbcf5d..daa29ee5 100644 --- a/worklenz-backend/src/controllers/tasks-controller-v2.ts +++ b/worklenz-backend/src/controllers/tasks-controller-v2.ts @@ -5,9 +5,16 @@ import HandleExceptions from "../decorators/handle-exceptions"; import { IWorkLenzRequest } from "../interfaces/worklenz-request"; import { IWorkLenzResponse } from "../interfaces/worklenz-response"; import { ServerResponse } from "../models/server-response"; -import { TASK_PRIORITY_COLOR_ALPHA, TASK_STATUS_COLOR_ALPHA, UNMAPPED } from "../shared/constants"; +import { + TASK_PRIORITY_COLOR_ALPHA, + TASK_STATUS_COLOR_ALPHA, + UNMAPPED, +} from "../shared/constants"; import { getColor, log_error } from "../shared/utils"; -import TasksControllerBase, { GroupBy, ITaskGroup } from "./tasks-controller-base"; +import TasksControllerBase, { + GroupBy, + ITaskGroup, +} from "./tasks-controller-base"; export class TaskListGroup implements ITaskGroup { name: string; @@ -45,7 +52,10 @@ export default class TasksControllerV2 extends TasksControllerBase { } private static flatString(text: string) { - return (text || "").split(" ").map(s => `'${s}'`).join(","); + return (text || "") + .split(" ") + .map((s) => `'${s}'`) + .join(","); } private static getFilterByStatusWhereClosure(text: string) { @@ -58,13 +68,17 @@ export default class TasksControllerV2 extends TasksControllerBase { private static getFilterByLabelsWhereClosure(text: string) { return text - ? `id IN (SELECT task_id FROM task_labels WHERE label_id IN (${this.flatString(text)}))` + ? `id IN (SELECT task_id FROM task_labels WHERE label_id IN (${this.flatString( + text + )}))` : ""; } private static getFilterByMembersWhereClosure(text: string) { return text - ? `id IN (SELECT task_id FROM tasks_assignees WHERE team_member_id IN (${this.flatString(text)}))` + ? `id IN (SELECT task_id FROM tasks_assignees WHERE team_member_id IN (${this.flatString( + text + )}))` : ""; } @@ -95,10 +109,13 @@ export default class TasksControllerV2 extends TasksControllerBase { total_tasks: number; } | null> { try { - const result = await db.query("SELECT get_task_complete_ratio($1) AS info;", [taskId]); + const result = await db.query( + "SELECT get_task_complete_ratio($1) AS info;", + [taskId] + ); const [data] = result.rows; if (data && data.info && data.info.ratio !== undefined) { - data.info.ratio = +((data.info.ratio || 0).toFixed()); + data.info.ratio = +(data.info.ratio || 0).toFixed(); return data.info; } return null; @@ -126,27 +143,51 @@ export default class TasksControllerV2 extends TasksControllerBase { defaultSortColumn = "sort_order"; } - const searchField = options.search ? ["t.name", "CONCAT((SELECT key FROM projects WHERE id = t.project_id), '-', task_no)"] : defaultSortColumn; - const { searchQuery, sortField } = TasksControllerV2.toPaginationOptions(options, searchField); + const searchField = options.search + ? [ + "t.name", + "CONCAT((SELECT key FROM projects WHERE id = t.project_id), '-', task_no)", + ] + : defaultSortColumn; + const { searchQuery, sortField } = TasksControllerV2.toPaginationOptions( + options, + searchField + ); const isSubTasks = !!options.parent_task; - const sortFields = sortField.replace(/ascend/g, "ASC").replace(/descend/g, "DESC") || defaultSortColumn; + const sortFields = + sortField.replace(/ascend/g, "ASC").replace(/descend/g, "DESC") || + defaultSortColumn; // Filter tasks by statuses - const statusesFilter = TasksControllerV2.getFilterByStatusWhereClosure(options.statuses as string); + const statusesFilter = TasksControllerV2.getFilterByStatusWhereClosure( + options.statuses as string + ); // Filter tasks by labels - const labelsFilter = TasksControllerV2.getFilterByLabelsWhereClosure(options.labels as string); + const labelsFilter = TasksControllerV2.getFilterByLabelsWhereClosure( + options.labels as string + ); // Filter tasks by its members - const membersFilter = TasksControllerV2.getFilterByMembersWhereClosure(options.members as string); + const membersFilter = TasksControllerV2.getFilterByMembersWhereClosure( + options.members as string + ); // Filter tasks by projects - const projectsFilter = TasksControllerV2.getFilterByProjectsWhereClosure(options.projects as string); + const projectsFilter = TasksControllerV2.getFilterByProjectsWhereClosure( + options.projects as string + ); // Filter tasks by priorities - const priorityFilter = TasksControllerV2.getFilterByPriorityWhereClosure(options.priorities as string); + const priorityFilter = TasksControllerV2.getFilterByPriorityWhereClosure( + options.priorities as string + ); // Filter tasks by a single assignee - const filterByAssignee = TasksControllerV2.getFilterByAssignee(options.filterBy as string); + const filterByAssignee = TasksControllerV2.getFilterByAssignee( + options.filterBy as string + ); // Returns statuses of each task as a json array if filterBy === "member" - const statusesQuery = TasksControllerV2.getStatusesQuery(options.filterBy as string); + const statusesQuery = TasksControllerV2.getStatusesQuery( + options.filterBy as string + ); // Custom columns data query const customColumnsQuery = options.customColumns @@ -175,26 +216,31 @@ export default class TasksControllerV2 extends TasksControllerBase { WHERE custom_cols.value IS NOT NULL) AS custom_column_values` : ""; - const archivedFilter = options.archived === "true" ? "archived IS TRUE" : "archived IS FALSE"; + const archivedFilter = + options.archived === "true" ? "archived IS TRUE" : "archived IS FALSE"; let subTasksFilter; if (options.isSubtasksInclude === "true") { subTasksFilter = ""; } else { - subTasksFilter = isSubTasks ? "parent_task_id = $2" : "parent_task_id IS NULL"; + subTasksFilter = isSubTasks + ? "parent_task_id = $2" + : "parent_task_id IS NULL"; } const filters = [ subTasksFilter, - (isSubTasks ? "1 = 1" : archivedFilter), - (isSubTasks ? "$1 = $1" : filterByAssignee), // ignored filter by member in peoples page for sub-tasks + isSubTasks ? "1 = 1" : archivedFilter, + isSubTasks ? "$1 = $1" : filterByAssignee, // ignored filter by member in peoples page for sub-tasks statusesFilter, priorityFilter, labelsFilter, membersFilter, - projectsFilter - ].filter(i => !!i).join(" AND "); + projectsFilter, + ] + .filter((i) => !!i) + .join(" AND "); return ` SELECT id, @@ -292,7 +338,10 @@ export default class TasksControllerV2 extends TasksControllerBase { `; } - public static async getGroups(groupBy: string, projectId: string): Promise { + public static async getGroups( + groupBy: string, + projectId: string + ): Promise { let q = ""; let params: any[] = []; switch (groupBy) { @@ -345,19 +394,30 @@ export default class TasksControllerV2 extends TasksControllerBase { } @HandleExceptions() - public static async getList(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise { + public static async getList( + req: IWorkLenzRequest, + res: IWorkLenzResponse + ): Promise { const startTime = performance.now(); - console.log(`[PERFORMANCE] getList method called for project ${req.params.id} - THIS METHOD IS DEPRECATED, USE getTasksV3 INSTEAD`); + console.log( + `[PERFORMANCE] getList method called for project ${req.params.id} - THIS METHOD IS DEPRECATED, USE getTasksV3 INSTEAD` + ); // PERFORMANCE OPTIMIZATION: Skip expensive progress calculation by default // Progress values are already calculated and stored in the database // Only refresh if explicitly requested via refresh_progress=true query parameter if (req.query.refresh_progress === "true" && req.params.id) { - console.log(`[PERFORMANCE] Starting progress refresh for project ${req.params.id} (getList)`); + console.log( + `[PERFORMANCE] Starting progress refresh for project ${req.params.id} (getList)` + ); const progressStartTime = performance.now(); await this.refreshProjectTaskProgressValues(req.params.id); const progressEndTime = performance.now(); - console.log(`[PERFORMANCE] Progress refresh completed in ${(progressEndTime - progressStartTime).toFixed(2)}ms`); + console.log( + `[PERFORMANCE] Progress refresh completed in ${( + progressEndTime - progressStartTime + ).toFixed(2)}ms` + ); } const isSubTasks = !!req.query.parent_task; @@ -367,21 +427,22 @@ export default class TasksControllerV2 extends TasksControllerBase { req.query.customColumns = "true"; const q = TasksControllerV2.getQuery(req.user?.id as string, req.query); - const params = isSubTasks ? [req.params.id || null, req.query.parent_task] : [req.params.id || null]; + const params = isSubTasks + ? [req.params.id || null, req.query.parent_task] + : [req.params.id || null]; const result = await db.query(q, params); const tasks = [...result.rows]; const groups = await this.getGroups(groupBy, req.params.id); const map = groups.reduce((g: { [x: string]: ITaskGroup }, group) => { - if (group.id) - g[group.id] = new TaskListGroup(group); + if (group.id) g[group.id] = new TaskListGroup(group); return g; }, {}); await this.updateMapByGroup(tasks, groupBy, map); - const updatedGroups = Object.keys(map).map(key => { + const updatedGroups = Object.keys(map).map((key) => { const group = map[key]; TasksControllerV2.updateTaskProgresses(group); @@ -391,23 +452,35 @@ export default class TasksControllerV2 extends TasksControllerBase { return { id: key, - ...group + ...group, }; }); const endTime = performance.now(); const totalTime = endTime - startTime; - console.log(`[PERFORMANCE] getList method completed in ${totalTime.toFixed(2)}ms for project ${req.params.id} with ${tasks.length} tasks`); + console.log( + `[PERFORMANCE] getList method completed in ${totalTime.toFixed( + 2 + )}ms for project ${req.params.id} with ${tasks.length} tasks` + ); // Log warning if this deprecated method is taking too long if (totalTime > 1000) { - console.warn(`[PERFORMANCE WARNING] DEPRECATED getList method taking ${totalTime.toFixed(2)}ms - Frontend should use getTasksV3 instead!`); + console.warn( + `[PERFORMANCE WARNING] DEPRECATED getList method taking ${totalTime.toFixed( + 2 + )}ms - Frontend should use getTasksV3 instead!` + ); } return res.status(200).send(new ServerResponse(true, updatedGroups)); } - public static async updateMapByGroup(tasks: any[], groupBy: string, map: { [p: string]: ITaskGroup }) { + public static async updateMapByGroup( + tasks: any[], + groupBy: string, + map: { [p: string]: ITaskGroup } + ) { let index = 0; const unmapped = []; @@ -437,15 +510,21 @@ export default class TasksControllerV2 extends TasksControllerBase { category_id: null, color_code: "#fbc84c69", color_code_dark: "#fbc84c69", - tasks: unmapped + tasks: unmapped, }; } } public static updateTaskProgresses(group: ITaskGroup) { - const todoCount = group.tasks.filter(t => t.status_category?.is_todo).length; - const doingCount = group.tasks.filter(t => t.status_category?.is_doing).length; - const doneCount = group.tasks.filter(t => t.status_category?.is_done).length; + const todoCount = group.tasks.filter( + (t) => t.status_category?.is_todo + ).length; + const doingCount = group.tasks.filter( + (t) => t.status_category?.is_doing + ).length; + const doneCount = group.tasks.filter( + (t) => t.status_category?.is_done + ).length; const total = group.tasks.length; @@ -455,19 +534,30 @@ export default class TasksControllerV2 extends TasksControllerBase { } @HandleExceptions() - public static async getTasksOnly(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise { + public static async getTasksOnly( + req: IWorkLenzRequest, + res: IWorkLenzResponse + ): Promise { const startTime = performance.now(); - console.log(`[PERFORMANCE] getTasksOnly method called for project ${req.params.id} - Consider using getTasksV3 for better performance`); + console.log( + `[PERFORMANCE] getTasksOnly method called for project ${req.params.id} - Consider using getTasksV3 for better performance` + ); // PERFORMANCE OPTIMIZATION: Skip expensive progress calculation by default // Progress values are already calculated and stored in the database // Only refresh if explicitly requested via refresh_progress=true query parameter if (req.query.refresh_progress === "true" && req.params.id) { - console.log(`[PERFORMANCE] Starting progress refresh for project ${req.params.id} (getTasksOnly)`); + console.log( + `[PERFORMANCE] Starting progress refresh for project ${req.params.id} (getTasksOnly)` + ); const progressStartTime = performance.now(); await this.refreshProjectTaskProgressValues(req.params.id); const progressEndTime = performance.now(); - console.log(`[PERFORMANCE] Progress refresh completed in ${(progressEndTime - progressStartTime).toFixed(2)}ms`); + console.log( + `[PERFORMANCE] Progress refresh completed in ${( + progressEndTime - progressStartTime + ).toFixed(2)}ms` + ); } const isSubTasks = !!req.query.parent_task; @@ -476,7 +566,9 @@ export default class TasksControllerV2 extends TasksControllerBase { req.query.customColumns = "true"; const q = TasksControllerV2.getQuery(req.user?.id as string, req.query); - const params = isSubTasks ? [req.params.id || null, req.query.parent_task] : [req.params.id || null]; + const params = isSubTasks + ? [req.params.id || null, req.query.parent_task] + : [req.params.id || null]; const result = await db.query(q, params); let data: any[] = []; @@ -484,7 +576,8 @@ export default class TasksControllerV2 extends TasksControllerBase { // if true, we only return the record count if (this.isCountsOnly(req.query)) { [data] = result.rows; - } else { // else we return a flat list of tasks + } else { + // else we return a flat list of tasks data = [...result.rows]; // PERFORMANCE OPTIMIZATION: Remove expensive individual DB calls for each task @@ -498,18 +591,29 @@ export default class TasksControllerV2 extends TasksControllerBase { const endTime = performance.now(); const totalTime = endTime - startTime; - console.log(`[PERFORMANCE] getTasksOnly method completed in ${totalTime.toFixed(2)}ms for project ${req.params.id} with ${data.length} tasks`); + console.log( + `[PERFORMANCE] getTasksOnly method completed in ${totalTime.toFixed( + 2 + )}ms for project ${req.params.id} with ${data.length} tasks` + ); // Log warning if this method is taking too long if (totalTime > 1000) { - console.warn(`[PERFORMANCE WARNING] getTasksOnly method taking ${totalTime.toFixed(2)}ms - Consider using getTasksV3 for better performance!`); + console.warn( + `[PERFORMANCE WARNING] getTasksOnly method taking ${totalTime.toFixed( + 2 + )}ms - Consider using getTasksV3 for better performance!` + ); } return res.status(200).send(new ServerResponse(true, data)); } @HandleExceptions() - public static async convertToTask(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise { + public static async convertToTask( + req: IWorkLenzRequest, + res: IWorkLenzResponse + ): Promise { const q = ` UPDATE tasks SET parent_task_id = NULL, @@ -518,14 +622,19 @@ export default class TasksControllerV2 extends TasksControllerBase { `; await db.query(q, [req.body.id, req.body.project_id]); - const result = await db.query("SELECT get_single_task($1) AS task;", [req.body.id]); + const result = await db.query("SELECT get_single_task($1) AS task;", [ + req.body.id, + ]); const [data] = result.rows; const model = TasksControllerV2.updateTaskViewModel(data.task); return res.status(200).send(new ServerResponse(true, model)); } @HandleExceptions() - public static async getNewKanbanTask(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise { + public static async getNewKanbanTask( + req: IWorkLenzRequest, + res: IWorkLenzResponse + ): Promise { const { id } = req.params; const result = await db.query("SELECT get_single_task($1) AS task;", [id]); const [data] = result.rows; @@ -534,7 +643,9 @@ export default class TasksControllerV2 extends TasksControllerBase { } @HandleExceptions() - public static async resetParentTaskManualProgress(parentTaskId: string): Promise { + public static async resetParentTaskManualProgress( + parentTaskId: string + ): Promise { try { // Check if this task has subtasks const subTasksResult = await db.query( @@ -542,7 +653,9 @@ export default class TasksControllerV2 extends TasksControllerBase { [parentTaskId] ); - const subtaskCount = parseInt(subTasksResult.rows[0]?.subtask_count || "0"); + const subtaskCount = parseInt( + subTasksResult.rows[0]?.subtask_count || "0" + ); // If it has subtasks, reset the manual_progress flag to false if (subtaskCount > 0) { @@ -550,7 +663,9 @@ export default class TasksControllerV2 extends TasksControllerBase { "UPDATE tasks SET manual_progress = false WHERE id = $1", [parentTaskId] ); - console.log(`Reset manual progress for parent task ${parentTaskId} with ${subtaskCount} subtasks`); + console.log( + `Reset manual progress for parent task ${parentTaskId} with ${subtaskCount} subtasks` + ); // Get the project settings to determine which calculation method to use const projectResult = await db.query( @@ -572,7 +687,9 @@ export default class TasksControllerV2 extends TasksControllerBase { // Emit the updated progress value to all clients // Note: We don't have socket context here, so we can't directly emit // This will be picked up on the next client refresh - console.log(`Recalculated progress for parent task ${parentTaskId}: ${progressRatio}%`); + console.log( + `Recalculated progress for parent task ${parentTaskId}: ${progressRatio}%` + ); } } } catch (error) { @@ -581,8 +698,10 @@ export default class TasksControllerV2 extends TasksControllerBase { } @HandleExceptions() - public static async convertToSubtask(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise { - + public static async convertToSubtask( + req: IWorkLenzRequest, + res: IWorkLenzResponse + ): Promise { const groupType = req.body.group_by; let q = ``; @@ -603,21 +722,29 @@ export default class TasksControllerV2 extends TasksControllerBase { WHERE id = $1; `; } else if (groupType === "phase") { - await db.query(` + await db.query( + ` UPDATE tasks SET parent_task_id = $3, sort_order = COALESCE((SELECT MAX(sort_order) + 1 FROM tasks WHERE project_id = $2), 0) WHERE id = $1; - `, [req.body.id, req.body.project_id, req.body.parent_task_id]); + `, + [req.body.id, req.body.project_id, req.body.parent_task_id] + ); q = `SELECT handle_on_task_phase_change($1, $2);`; } - if (req.body.to_group_id === UNMAPPED) - req.body.to_group_id = null; + if (req.body.to_group_id === UNMAPPED) req.body.to_group_id = null; - const params = groupType === "phase" - ? [req.body.id, req.body.to_group_id] - : [req.body.id, req.body.project_id, req.body.parent_task_id, req.body.to_group_id]; + const params = + groupType === "phase" + ? [req.body.id, req.body.to_group_id] + : [ + req.body.id, + req.body.project_id, + req.body.parent_task_id, + req.body.to_group_id, + ]; await db.query(q, params); // Reset the parent task's manual progress when converting a task to a subtask @@ -625,7 +752,9 @@ export default class TasksControllerV2 extends TasksControllerBase { await this.resetParentTaskManualProgress(req.body.parent_task_id); } - const result = await db.query("SELECT get_single_task($1) AS task;", [req.body.id]); + const result = await db.query("SELECT get_single_task($1) AS task;", [ + req.body.id, + ]); const [data] = result.rows; const model = TasksControllerV2.updateTaskViewModel(data.task); return res.status(200).send(new ServerResponse(true, model)); @@ -640,8 +769,7 @@ export default class TasksControllerV2 extends TasksControllerBase { `; const result = await db.query(q, [taskId]); - for (const member of result.rows) - member.color_code = getColor(member.name); + for (const member of result.rows) member.color_code = getColor(member.name); return this.createTagList(result.rows); } @@ -655,13 +783,16 @@ export default class TasksControllerV2 extends TasksControllerBase { `; const result = await db.query(q, [projectId]); - for (const member of result.rows) - member.color_code = getColor(member.name); + for (const member of result.rows) member.color_code = getColor(member.name); return this.createTagList(result.rows); } - public static async checkUserAssignedToTask(taskId: string, userId: string, teamId: string) { + public static async checkUserAssignedToTask( + taskId: string, + userId: string, + teamId: string + ) { const q = ` SELECT EXISTS( SELECT * FROM tasks_assignees WHERE task_id = $1 AND team_member_id = (SELECT team_member_id FROM team_member_info_view WHERE user_id = $2 AND team_id = $3) @@ -671,10 +802,13 @@ export default class TasksControllerV2 extends TasksControllerBase { const [data] = result.rows; return data.exists; - } - public static async getTasksByName(searchString: string, projectId: string, taskId: string) { + public static async getTasksByName( + searchString: string, + projectId: string, + taskId: string + ) { const q = `SELECT id AS value , name AS label, CONCAT((SELECT key FROM projects WHERE id = t.project_id), '-', task_no) AS task_key @@ -688,27 +822,48 @@ export default class TasksControllerV2 extends TasksControllerBase { } @HandleExceptions() - public static async getSubscribers(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise { + public static async getSubscribers( + req: IWorkLenzRequest, + res: IWorkLenzResponse + ): Promise { const subscribers = await this.getTaskSubscribers(req.params.id); return res.status(200).send(new ServerResponse(true, subscribers)); } @HandleExceptions() - public static async searchTasks(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise { + public static async searchTasks( + req: IWorkLenzRequest, + res: IWorkLenzResponse + ): Promise { const { projectId, taskId, searchQuery } = req.query; - const tasks = await this.getTasksByName(searchQuery as string, projectId as string, taskId as string); + const tasks = await this.getTasksByName( + searchQuery as string, + projectId as string, + taskId as string + ); return res.status(200).send(new ServerResponse(true, tasks)); } @HandleExceptions() - public static async getTaskDependencyStatus(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise { + public static async getTaskDependencyStatus( + req: IWorkLenzRequest, + res: IWorkLenzResponse + ): Promise { const { statusId, taskId } = req.query; - const canContinue = await TasksControllerV2.checkForCompletedDependencies(taskId as string, statusId as string); - return res.status(200).send(new ServerResponse(true, { can_continue: canContinue })); + const canContinue = await TasksControllerV2.checkForCompletedDependencies( + taskId as string, + statusId as string + ); + return res + .status(200) + .send(new ServerResponse(true, { can_continue: canContinue })); } @HandleExceptions() - public static async checkForCompletedDependencies(taskId: string, nextStatusId: string): Promise { + public static async checkForCompletedDependencies( + taskId: string, + nextStatusId: string + ): Promise { const q = `SELECT CASE WHEN EXISTS ( @@ -760,7 +915,10 @@ export default class TasksControllerV2 extends TasksControllerBase { } @HandleExceptions() - public static async assignLabelsToTask(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise { + public static async assignLabelsToTask( + req: IWorkLenzRequest, + res: IWorkLenzResponse + ): Promise { const { id } = req.params; const { labels }: { labels: string[] } = req.body; @@ -768,7 +926,9 @@ export default class TasksControllerV2 extends TasksControllerBase { const q = `SELECT add_or_remove_task_label($1, $2) AS labels;`; await db.query(q, [id, label]); }); - return res.status(200).send(new ServerResponse(true, null, "Labels assigned successfully")); + return res + .status(200) + .send(new ServerResponse(true, null, "Labels assigned successfully")); } /** @@ -785,7 +945,9 @@ export default class TasksControllerV2 extends TasksControllerBase { const { column_key, value, project_id } = req.body; if (!taskId || !column_key || value === undefined || !project_id) { - return res.status(400).send(new ServerResponse(false, "Missing required parameters")); + return res + .status(400) + .send(new ServerResponse(false, "Missing required parameters")); } // Get column information @@ -797,7 +959,9 @@ export default class TasksControllerV2 extends TasksControllerBase { const columnResult = await db.query(columnQuery, [project_id, column_key]); if (columnResult.rowCount === 0) { - return res.status(404).send(new ServerResponse(false, "Custom column not found")); + return res + .status(404) + .send(new ServerResponse(false, "Custom column not found")); } const column = columnResult.rows[0]; @@ -834,7 +998,10 @@ export default class TasksControllerV2 extends TasksControllerBase { FROM cc_column_values WHERE task_id = $1 AND column_id = $2 `; - const existingValueResult = await db.query(existingValueQuery, [taskId, columnId]); + const existingValueResult = await db.query(existingValueQuery, [ + taskId, + columnId, + ]); if (existingValueResult.rowCount && existingValueResult.rowCount > 0) { // Update existing value @@ -855,7 +1022,7 @@ export default class TasksControllerV2 extends TasksControllerBase { booleanValue, jsonValue, taskId, - columnId + columnId, ]); } else { // Insert new value @@ -871,18 +1038,22 @@ export default class TasksControllerV2 extends TasksControllerBase { numberValue, dateValue, booleanValue, - jsonValue + jsonValue, ]); } - return res.status(200).send(new ServerResponse(true, { - task_id: taskId, - column_key, - value - })); + return res.status(200).send( + new ServerResponse(true, { + task_id: taskId, + column_key, + value, + }) + ); } - public static async refreshProjectTaskProgressValues(projectId: string): Promise { + public static async refreshProjectTaskProgressValues( + projectId: string + ): Promise { try { // Run the recalculate_all_task_progress function only for tasks in this project const query = ` @@ -942,7 +1113,9 @@ export default class TasksControllerV2 extends TasksControllerBase { `; await db.query(query); - console.log(`Finished refreshing progress values for project ${projectId}`); + console.log( + `Finished refreshing progress values for project ${projectId}` + ); } catch (error) { log_error("Error refreshing project task progress values", error); } @@ -951,17 +1124,20 @@ export default class TasksControllerV2 extends TasksControllerBase { public static async updateTaskProgress(taskId: string): Promise { try { // Calculate the task's progress using get_task_complete_ratio - const result = await db.query("SELECT get_task_complete_ratio($1) AS info;", [taskId]); + const result = await db.query( + "SELECT get_task_complete_ratio($1) AS info;", + [taskId] + ); const [data] = result.rows; if (data && data.info && data.info.ratio !== undefined) { - const progressValue = +((data.info.ratio || 0).toFixed()); + const progressValue = +(data.info.ratio || 0).toFixed(); // Update the task's progress_value in the database - await db.query( - "UPDATE tasks SET progress_value = $1 WHERE id = $2", - [progressValue, taskId] - ); + await db.query("UPDATE tasks SET progress_value = $1 WHERE id = $2", [ + progressValue, + taskId, + ]); console.log(`Updated progress for task ${taskId} to ${progressValue}%`); @@ -971,7 +1147,10 @@ export default class TasksControllerV2 extends TasksControllerBase { [taskId] ); - if (parentResult.rows.length > 0 && parentResult.rows[0].parent_task_id) { + if ( + parentResult.rows.length > 0 && + parentResult.rows[0].parent_task_id + ) { await this.updateTaskProgress(parentResult.rows[0].parent_task_id); } } @@ -981,13 +1160,16 @@ export default class TasksControllerV2 extends TasksControllerBase { } // Add this method to update progress when a task's weight is changed - public static async updateTaskWeight(taskId: string, weight: number): Promise { + public static async updateTaskWeight( + taskId: string, + weight: number + ): Promise { try { // Update the task's weight - await db.query( - "UPDATE tasks SET weight = $1 WHERE id = $2", - [weight, taskId] - ); + await db.query("UPDATE tasks SET weight = $1 WHERE id = $2", [ + weight, + taskId, + ]); // Get the parent task ID const parentResult = await db.query( @@ -1005,7 +1187,10 @@ export default class TasksControllerV2 extends TasksControllerBase { } @HandleExceptions() - public static async getTasksV3(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise { + public static async getTasksV3( + req: IWorkLenzRequest, + res: IWorkLenzResponse + ): Promise { const startTime = performance.now(); const isSubTasks = !!req.query.parent_task; const groupBy = (req.query.group || GroupBy.STATUS) as string; @@ -1021,7 +1206,9 @@ export default class TasksControllerV2 extends TasksControllerBase { } const q = TasksControllerV2.getQuery(req.user?.id as string, req.query); - const params = isSubTasks ? [req.params.id || null, req.query.parent_task] : [req.params.id || null]; + const params = isSubTasks + ? [req.params.id || null, req.query.parent_task] + : [req.params.id || null]; const result = await db.query(q, params); const tasks = [...result.rows]; @@ -1033,7 +1220,7 @@ export default class TasksControllerV2 extends TasksControllerBase { const priorityMap: Record = { "0": "low", "1": "medium", - "2": "high" + "2": "high", }; // Create status category mapping based on actual status names from database @@ -1041,7 +1228,9 @@ export default class TasksControllerV2 extends TasksControllerBase { for (const group of groups) { if (groupBy === GroupBy.STATUS && group.id) { // Use the actual status name from database, convert to lowercase for consistency - statusCategoryMap[group.id] = group.name.toLowerCase().replace(/\s+/g, "_"); + statusCategoryMap[group.id] = group.name + .toLowerCase() + .replace(/\s+/g, "_"); } } @@ -1062,7 +1251,7 @@ export default class TasksControllerV2 extends TasksControllerBase { if ("hours" in value || "minutes" in value) { const hours = Number(value.hours || 0); const minutes = Number(value.minutes || 0); - return hours + (minutes / 60); + return hours + minutes / 60; } } return 0; @@ -1079,16 +1268,18 @@ export default class TasksControllerV2 extends TasksControllerBase { priority: priorityMap[task.priority_value?.toString()] || "medium", // Use actual phase name from database phase: task.phase_name || "Development", - progress: typeof task.complete_ratio === "number" ? task.complete_ratio : 0, + progress: + typeof task.complete_ratio === "number" ? task.complete_ratio : 0, assignees: task.assignees?.map((a: any) => a.team_member_id) || [], assignee_names: task.assignee_names || task.names || [], - labels: task.labels?.map((l: any) => ({ - id: l.id || l.label_id, - name: l.name, - color: l.color_code || "#1890ff", - end: l.end, - names: l.names - })) || [], + labels: + task.labels?.map((l: any) => ({ + id: l.id || l.label_id, + name: l.name, + color: l.color_code || "#1890ff", + end: l.end, + names: l.names, + })) || [], dueDate: task.end_date || task.END_DATE, startDate: task.start_date, timeTracking: { @@ -1119,12 +1310,14 @@ export default class TasksControllerV2 extends TasksControllerBase { const groupedResponse: Record = {}; // Initialize groups from database data - groups.forEach(group => { - const groupKey = groupBy === GroupBy.STATUS - ? group.name.toLowerCase().replace(/\s+/g, "_") - : groupBy === GroupBy.PRIORITY - ? priorityMap[(group as any).value?.toString()] || group.name.toLowerCase() - : group.name.toLowerCase().replace(/\s+/g, "_"); + groups.forEach((group) => { + const groupKey = + groupBy === GroupBy.STATUS + ? group.name.toLowerCase().replace(/\s+/g, "_") + : groupBy === GroupBy.PRIORITY + ? priorityMap[(group as any).value?.toString()] || + group.name.toLowerCase() + : group.name.toLowerCase().replace(/\s+/g, "_"); groupedResponse[groupKey] = { id: group.id, @@ -1135,7 +1328,8 @@ export default class TasksControllerV2 extends TasksControllerBase { tasks: [], taskIds: [], color: group.color_code || this.getDefaultGroupColor(groupBy, groupKey), - color_code_dark: group.color_code_dark || this.getDefaultGroupColor(groupBy, groupKey), + color_code_dark: + group.color_code_dark || this.getDefaultGroupColor(groupBy, groupKey), // Include additional metadata from database category_id: group.category_id, start_date: group.start_date, @@ -1147,7 +1341,7 @@ export default class TasksControllerV2 extends TasksControllerBase { // Distribute tasks into groups const unmappedTasks: any[] = []; - transformedTasks.forEach(task => { + transformedTasks.forEach((task) => { let groupKey: string; let taskAssigned = false; @@ -1188,27 +1382,33 @@ export default class TasksControllerV2 extends TasksControllerBase { if (group.tasks && group.tasks.length > 0) { const todoCount = group.tasks.filter((task: any) => { // For tasks, we need to check their original status category - const originalTask = tasks.find(t => t.id === task.id); + const originalTask = tasks.find((t) => t.id === task.id); return originalTask?.status_category?.is_todo; }).length; - + const doingCount = group.tasks.filter((task: any) => { - const originalTask = tasks.find(t => t.id === task.id); + const originalTask = tasks.find((t) => t.id === task.id); return originalTask?.status_category?.is_doing; }).length; - + const doneCount = group.tasks.filter((task: any) => { - const originalTask = tasks.find(t => t.id === task.id); + const originalTask = tasks.find((t) => t.id === task.id); return originalTask?.status_category?.is_done; }).length; const total = group.tasks.length; // Calculate progress percentages - group.todo_progress = total > 0 ? +((todoCount / total) * 100).toFixed(0) : 0; - group.doing_progress = total > 0 ? +((doingCount / total) * 100).toFixed(0) : 0; - group.done_progress = total > 0 ? +((doneCount / total) * 100).toFixed(0) : 0; + group.todo_progress = + total > 0 ? +((todoCount / total) * 100).toFixed(0) : 0; + group.doing_progress = + total > 0 ? +((doingCount / total) * 100).toFixed(0) : 0; + group.done_progress = + total > 0 ? +((doneCount / total) * 100).toFixed(0) : 0; } + group.todo_progress = 0; + group.doing_progress = 0; + group.done_progress = 0; }); } @@ -1221,7 +1421,7 @@ export default class TasksControllerV2 extends TasksControllerBase { groupValue: UNMAPPED.toLowerCase(), collapsed: false, tasks: unmappedTasks, - taskIds: unmappedTasks.map(task => task.id), + taskIds: unmappedTasks.map((task) => task.id), color: "#fbc84c69", // Orange color with transparency category_id: null, start_date: null, @@ -1235,25 +1435,28 @@ export default class TasksControllerV2 extends TasksControllerBase { // Calculate progress stats for unmapped group if (unmappedTasks.length > 0) { const todoCount = unmappedTasks.filter((task: any) => { - const originalTask = tasks.find(t => t.id === task.id); + const originalTask = tasks.find((t) => t.id === task.id); return originalTask?.status_category?.is_todo; }).length; - + const doingCount = unmappedTasks.filter((task: any) => { - const originalTask = tasks.find(t => t.id === task.id); + const originalTask = tasks.find((t) => t.id === task.id); return originalTask?.status_category?.is_doing; }).length; - + const doneCount = unmappedTasks.filter((task: any) => { - const originalTask = tasks.find(t => t.id === task.id); + const originalTask = tasks.find((t) => t.id === task.id); return originalTask?.status_category?.is_done; }).length; const total = unmappedTasks.length; - unmappedGroup.todo_progress = total > 0 ? +((todoCount / total) * 100).toFixed(0) : 0; - unmappedGroup.doing_progress = total > 0 ? +((doingCount / total) * 100).toFixed(0) : 0; - unmappedGroup.done_progress = total > 0 ? +((doneCount / total) * 100).toFixed(0) : 0; + unmappedGroup.todo_progress = + total > 0 ? +((todoCount / total) * 100).toFixed(0) : 0; + unmappedGroup.doing_progress = + total > 0 ? +((doingCount / total) * 100).toFixed(0) : 0; + unmappedGroup.done_progress = + total > 0 ? +((doneCount / total) * 100).toFixed(0) : 0; } groupedResponse[UNMAPPED.toLowerCase()] = unmappedGroup; @@ -1266,16 +1469,22 @@ export default class TasksControllerV2 extends TasksControllerBase { // Convert to array format expected by frontend, maintaining database order const responseGroups = groups - .map(group => { - const groupKey = groupBy === GroupBy.STATUS - ? group.name.toLowerCase().replace(/\s+/g, "_") - : groupBy === GroupBy.PRIORITY - ? priorityMap[(group as any).value?.toString()] || group.name.toLowerCase() - : group.name.toLowerCase().replace(/\s+/g, "_"); + .map((group) => { + const groupKey = + groupBy === GroupBy.STATUS + ? group.name.toLowerCase().replace(/\s+/g, "_") + : groupBy === GroupBy.PRIORITY + ? priorityMap[(group as any).value?.toString()] || + group.name.toLowerCase() + : group.name.toLowerCase().replace(/\s+/g, "_"); return groupedResponse[groupKey]; }) - .filter(group => group && (group.tasks.length > 0 || req.query.include_empty === "true")); + .filter( + (group) => + group && + (group.tasks.length > 0 || req.query.include_empty === "true") + ); // Add unmapped group to the end if it exists if (groupedResponse[UNMAPPED.toLowerCase()]) { @@ -1287,31 +1496,46 @@ export default class TasksControllerV2 extends TasksControllerBase { // Log warning if request is taking too long if (totalTime > 1000) { - console.warn(`[PERFORMANCE WARNING] Slow request detected: ${totalTime.toFixed(2)}ms for project ${req.params.id} with ${transformedTasks.length} tasks`); + console.warn( + `[PERFORMANCE WARNING] Slow request detected: ${totalTime.toFixed( + 2 + )}ms for project ${req.params.id} with ${transformedTasks.length} tasks` + ); } - return res.status(200).send(new ServerResponse(true, { - groups: responseGroups, - allTasks: transformedTasks, - grouping: groupBy, - totalTasks: transformedTasks.length - })); + return res.status(200).send( + new ServerResponse(true, { + groups: responseGroups, + allTasks: transformedTasks, + grouping: groupBy, + totalTasks: transformedTasks.length, + }) + ); } private static getTaskSortOrder(task: any, groupBy: string): number { switch (groupBy) { case GroupBy.STATUS: - return typeof task.status_sort_order === "number" ? task.status_sort_order : 0; + return typeof task.status_sort_order === "number" + ? task.status_sort_order + : 0; case GroupBy.PRIORITY: - return typeof task.priority_sort_order === "number" ? task.priority_sort_order : 0; + return typeof task.priority_sort_order === "number" + ? task.priority_sort_order + : 0; case GroupBy.PHASE: - return typeof task.phase_sort_order === "number" ? task.phase_sort_order : 0; + return typeof task.phase_sort_order === "number" + ? task.phase_sort_order + : 0; default: return typeof task.sort_order === "number" ? task.sort_order : 0; } } - private static getDefaultGroupColor(groupBy: string, groupValue: string): string { + private static getDefaultGroupColor( + groupBy: string, + groupValue: string + ): string { const colorMaps: Record> = { [GroupBy.STATUS]: { todo: "#f0f0f0", @@ -1332,43 +1556,66 @@ export default class TasksControllerV2 extends TasksControllerBase { } @HandleExceptions() - public static async refreshTaskProgress(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise { + public static async refreshTaskProgress( + req: IWorkLenzRequest, + res: IWorkLenzResponse + ): Promise { try { const startTime = performance.now(); if (req.params.id) { - console.log(`[PERFORMANCE] Starting background progress refresh for project ${req.params.id}`); + console.log( + `[PERFORMANCE] Starting background progress refresh for project ${req.params.id}` + ); await this.refreshProjectTaskProgressValues(req.params.id); const endTime = performance.now(); const totalTime = endTime - startTime; - console.log(`[PERFORMANCE] Background progress refresh completed in ${totalTime.toFixed(2)}ms for project ${req.params.id}`); + console.log( + `[PERFORMANCE] Background progress refresh completed in ${totalTime.toFixed( + 2 + )}ms for project ${req.params.id}` + ); - return res.status(200).send(new ServerResponse(true, { - message: "Task progress values refreshed successfully", - performanceMetrics: { - refreshTime: Math.round(totalTime), - projectId: req.params.id - } - })); + return res.status(200).send( + new ServerResponse(true, { + message: "Task progress values refreshed successfully", + performanceMetrics: { + refreshTime: Math.round(totalTime), + projectId: req.params.id, + }, + }) + ); } - return res.status(400).send(new ServerResponse(false, null, "Project ID is required")); + return res + .status(400) + .send(new ServerResponse(false, null, "Project ID is required")); } catch (error) { console.error("Error refreshing task progress:", error); - return res.status(500).send(new ServerResponse(false, null, "Failed to refresh task progress")); + return res + .status(500) + .send( + new ServerResponse(false, null, "Failed to refresh task progress") + ); } } // Optimized method for getting task progress without blocking main UI @HandleExceptions() - public static async getTaskProgressStatus(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise { + public static async getTaskProgressStatus( + req: IWorkLenzRequest, + res: IWorkLenzResponse + ): Promise { try { if (!req.params.id) { - return res.status(400).send(new ServerResponse(false, null, "Project ID is required")); + return res + .status(400) + .send(new ServerResponse(false, null, "Project ID is required")); } // Get basic progress stats without expensive calculations - const result = await db.query(` + const result = await db.query( + ` SELECT COUNT(*) as total_tasks, COUNT(CASE WHEN EXISTS( @@ -1383,22 +1630,36 @@ export default class TasksControllerV2 extends TasksControllerBase { MAX(updated_at) as last_updated FROM tasks WHERE project_id = $1 AND archived IS FALSE - `, [req.params.id]); + `, + [req.params.id] + ); const [stats] = result.rows; - return res.status(200).send(new ServerResponse(true, { - projectId: req.params.id, - totalTasks: parseInt(stats.total_tasks) || 0, - completedTasks: parseInt(stats.completed_tasks) || 0, - avgProgress: parseFloat(stats.avg_progress) || 0, - lastUpdated: stats.last_updated, - completionPercentage: stats.total_tasks > 0 ? - Math.round((parseInt(stats.completed_tasks) / parseInt(stats.total_tasks)) * 100) : 0 - })); + return res.status(200).send( + new ServerResponse(true, { + projectId: req.params.id, + totalTasks: parseInt(stats.total_tasks) || 0, + completedTasks: parseInt(stats.completed_tasks) || 0, + avgProgress: parseFloat(stats.avg_progress) || 0, + lastUpdated: stats.last_updated, + completionPercentage: + stats.total_tasks > 0 + ? Math.round( + (parseInt(stats.completed_tasks) / + parseInt(stats.total_tasks)) * + 100 + ) + : 0, + }) + ); } catch (error) { console.error("Error getting task progress status:", error); - return res.status(500).send(new ServerResponse(false, null, "Failed to get task progress status")); + return res + .status(500) + .send( + new ServerResponse(false, null, "Failed to get task progress status") + ); } } } diff --git a/worklenz-frontend/src/components/task-list-v2/GroupProgressBar.tsx b/worklenz-frontend/src/components/task-list-v2/GroupProgressBar.tsx index 427110d4..0d17c779 100644 --- a/worklenz-frontend/src/components/task-list-v2/GroupProgressBar.tsx +++ b/worklenz-frontend/src/components/task-list-v2/GroupProgressBar.tsx @@ -16,6 +16,7 @@ const GroupProgressBar: React.FC = ({ groupType }) => { const { t } = useTranslation('task-management'); + console.log(todoProgress, doingProgress, doneProgress); // Only show for priority and phase grouping if (groupType !== 'priority' && groupType !== 'phase') { diff --git a/worklenz-frontend/src/components/task-list-v2/TaskGroupHeader.tsx b/worklenz-frontend/src/components/task-list-v2/TaskGroupHeader.tsx index d3f2e5b7..27adf3be 100644 --- a/worklenz-frontend/src/components/task-list-v2/TaskGroupHeader.tsx +++ b/worklenz-frontend/src/components/task-list-v2/TaskGroupHeader.tsx @@ -1,15 +1,29 @@ import React, { useMemo, useCallback, useState } from 'react'; import { useDroppable } from '@dnd-kit/core'; // @ts-ignore: Heroicons module types -import { ChevronDownIcon, ChevronRightIcon, EllipsisHorizontalIcon, PencilIcon, ArrowPathIcon } from '@heroicons/react/24/outline'; +import { + ChevronDownIcon, + ChevronRightIcon, + EllipsisHorizontalIcon, + PencilIcon, + ArrowPathIcon, +} from '@heroicons/react/24/outline'; import { Checkbox, Dropdown, Menu, Input, Modal, Badge, Flex } from 'antd'; import GroupProgressBar from './GroupProgressBar'; import { useTranslation } from 'react-i18next'; import { getContrastColor } from '@/utils/colorUtils'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; -import { selectSelectedTaskIds, selectTask, deselectTask } from '@/features/task-management/selection.slice'; -import { selectGroups, fetchTasksV3, selectAllTasksArray } from '@/features/task-management/task-management.slice'; +import { + selectSelectedTaskIds, + selectTask, + deselectTask, +} from '@/features/task-management/selection.slice'; +import { + selectGroups, + fetchTasksV3, + selectAllTasksArray, +} from '@/features/task-management/task-management.slice'; import { selectCurrentGrouping } from '@/features/task-management/grouping.slice'; import { statusApiService } from '@/api/taskAttributes/status/status.api.service'; import { phasesApiService } from '@/api/taskAttributes/phases/phases.api.service'; @@ -38,7 +52,12 @@ interface TaskGroupHeaderProps { projectId: string; } -const TaskGroupHeader: React.FC = ({ group, isCollapsed, onToggle, projectId }) => { +const TaskGroupHeader: React.FC = ({ + group, + isCollapsed, + onToggle, + projectId, +}) => { const { t } = useTranslation('task-management'); const dispatch = useAppDispatch(); const selectedTaskIds = useAppSelector(selectSelectedTaskIds); @@ -48,14 +67,14 @@ const TaskGroupHeader: React.FC = ({ group, isCollapsed, o const { statusCategories, status: statusList } = useAppSelector(state => state.taskStatusReducer); const { trackMixpanelEvent } = useMixpanelTracking(); const { isOwnerOrAdmin } = useAuthService(); - + const [dropdownVisible, setDropdownVisible] = useState(false); const [isRenaming, setIsRenaming] = useState(false); const [isChangingCategory, setIsChangingCategory] = useState(false); const [isEditingName, setIsEditingName] = useState(false); const [editingName, setEditingName] = useState(group.name); - + const headerBackgroundColor = group.color || '#F0F0F0'; // Default light gray if no color const headerTextColor = getContrastColor(headerBackgroundColor); @@ -85,53 +104,79 @@ const TaskGroupHeader: React.FC = ({ group, isCollapsed, o // If we're grouping by status, show progress based on task completion if (currentGrouping === 'status') { // For status grouping, calculate based on task progress values - const progressStats = tasksInCurrentGroup.reduce((acc, task) => { - const progress = task.progress || 0; - if (progress === 0) { - acc.todo += 1; - } else if (progress === 100) { - acc.done += 1; - } else { - acc.doing += 1; - } - return acc; - }, { todo: 0, doing: 0, done: 0 }); + const progressStats = tasksInCurrentGroup.reduce( + (acc, task) => { + const progress = task.progress || 0; + if (progress === 0) { + acc.todo += 1; + } else if (progress === 100) { + acc.done += 1; + } else { + acc.doing += 1; + } + return acc; + }, + { todo: 0, doing: 0, done: 0 } + ); const totalTasks = tasksInCurrentGroup.length; - + return { - todoProgress: totalTasks > 0 ? Math.round((progressStats.todo / totalTasks) * 100) : 0, - doingProgress: totalTasks > 0 ? Math.round((progressStats.doing / totalTasks) * 100) : 0, - doneProgress: totalTasks > 0 ? Math.round((progressStats.done / totalTasks) * 100) : 0, + todoProgress: totalTasks > 0 ? Math.round((progressStats.todo / totalTasks) * 100) || 0 : 0, + doingProgress: + totalTasks > 0 ? Math.round((progressStats.doing / totalTasks) * 100) || 0 : 0, + doneProgress: totalTasks > 0 ? Math.round((progressStats.done / totalTasks) * 100) || 0 : 0, }; } else { // For priority/phase grouping, show progress based on status distribution // Use a simplified approach based on status names and common patterns - const statusCounts = tasksInCurrentGroup.reduce((acc, task) => { - // Find the status by ID first - const statusInfo = statusList.find(s => s.id === task.status); - const statusName = statusInfo?.name?.toLowerCase() || task.status?.toLowerCase() || ''; - - // Categorize based on common status name patterns - if (statusName.includes('todo') || statusName.includes('to do') || statusName.includes('pending') || statusName.includes('open') || statusName.includes('backlog')) { - acc.todo += 1; - } else if (statusName.includes('doing') || statusName.includes('progress') || statusName.includes('active') || statusName.includes('working') || statusName.includes('development')) { - acc.doing += 1; - } else if (statusName.includes('done') || statusName.includes('completed') || statusName.includes('finished') || statusName.includes('closed') || statusName.includes('resolved')) { - acc.done += 1; - } else { - // Default unknown statuses to "doing" (in progress) - acc.doing += 1; - } - return acc; - }, { todo: 0, doing: 0, done: 0 }); + const statusCounts = tasksInCurrentGroup.reduce( + (acc, task) => { + // Find the status by ID first + const statusInfo = statusList.find(s => s.id === task.status); + const statusName = statusInfo?.name?.toLowerCase() || task.status?.toLowerCase() || ''; + + // Categorize based on common status name patterns + if ( + statusName.includes('todo') || + statusName.includes('to do') || + statusName.includes('pending') || + statusName.includes('open') || + statusName.includes('backlog') + ) { + acc.todo += 1; + } else if ( + statusName.includes('doing') || + statusName.includes('progress') || + statusName.includes('active') || + statusName.includes('working') || + statusName.includes('development') + ) { + acc.doing += 1; + } else if ( + statusName.includes('done') || + statusName.includes('completed') || + statusName.includes('finished') || + statusName.includes('closed') || + statusName.includes('resolved') + ) { + acc.done += 1; + } else { + // Default unknown statuses to "doing" (in progress) + acc.doing += 1; + } + return acc; + }, + { todo: 0, doing: 0, done: 0 } + ); const totalTasks = tasksInCurrentGroup.length; - + return { - todoProgress: totalTasks > 0 ? Math.round((statusCounts.todo / totalTasks) * 100) : 0, - doingProgress: totalTasks > 0 ? Math.round((statusCounts.doing / totalTasks) * 100) : 0, - doneProgress: totalTasks > 0 ? Math.round((statusCounts.done / totalTasks) * 100) : 0, + todoProgress: totalTasks > 0 ? Math.round((statusCounts.todo / totalTasks) * 100) || 0 : 0, + doingProgress: + totalTasks > 0 ? Math.round((statusCounts.doing / totalTasks) * 100) || 0 : 0, + doneProgress: totalTasks > 0 ? Math.round((statusCounts.done / totalTasks) * 100) || 0 : 0, }; } }, [currentGroup, allTasks, statusList, currentGrouping]); @@ -141,30 +186,34 @@ const TaskGroupHeader: React.FC = ({ group, isCollapsed, o if (tasksInGroup.length === 0) { return { isAllSelected: false, isPartiallySelected: false }; } - + const selectedTasksInGroup = tasksInGroup.filter(taskId => selectedTaskIds.includes(taskId)); const allSelected = selectedTasksInGroup.length === tasksInGroup.length; - const partiallySelected = selectedTasksInGroup.length > 0 && selectedTasksInGroup.length < tasksInGroup.length; - + const partiallySelected = + selectedTasksInGroup.length > 0 && selectedTasksInGroup.length < tasksInGroup.length; + return { isAllSelected: allSelected, isPartiallySelected: partiallySelected }; }, [tasksInGroup, selectedTaskIds]); // Handle select all checkbox change - const handleSelectAllChange = useCallback((e: any) => { - e.stopPropagation(); - - if (isAllSelected) { - // Deselect all tasks in this group - tasksInGroup.forEach(taskId => { - dispatch(deselectTask(taskId)); - }); - } else { - // Select all tasks in this group - tasksInGroup.forEach(taskId => { - dispatch(selectTask(taskId)); - }); - } - }, [dispatch, isAllSelected, tasksInGroup]); + const handleSelectAllChange = useCallback( + (e: any) => { + e.stopPropagation(); + + if (isAllSelected) { + // Deselect all tasks in this group + tasksInGroup.forEach(taskId => { + dispatch(deselectTask(taskId)); + }); + } else { + // Select all tasks in this group + tasksInGroup.forEach(taskId => { + dispatch(selectTask(taskId)); + }); + } + }, + [dispatch, isAllSelected, tasksInGroup] + ); // Handle inline name editing const handleNameSave = useCallback(async () => { @@ -184,24 +233,22 @@ const TaskGroupHeader: React.FC = ({ group, isCollapsed, o name: editingName.trim(), project_id: projectId, }; - + await statusApiService.updateNameOfStatus(statusId, body, projectId); trackMixpanelEvent(evt_project_board_column_setting_click, { Rename: 'Status' }); dispatch(fetchStatuses(projectId)); - } else if (currentGrouping === 'phase') { // Extract phase ID from group ID (format: "phase-{phaseId}") const phaseId = group.id.replace('phase-', ''); const body = { id: phaseId, name: editingName.trim() }; - + await phasesApiService.updateNameOfPhase(phaseId, body as ITaskPhase, projectId); trackMixpanelEvent(evt_project_board_column_setting_click, { Rename: 'Phase' }); dispatch(fetchPhasesByProjectId(projectId)); } - + // Refresh task list to get updated group names dispatch(fetchTasksV3(projectId)); - } catch (error) { logger.error('Error renaming group:', error); setEditingName(group.name); @@ -209,24 +256,39 @@ const TaskGroupHeader: React.FC = ({ group, isCollapsed, o setIsEditingName(false); setIsRenaming(false); } - }, [editingName, group.name, group.id, currentGrouping, projectId, dispatch, trackMixpanelEvent, isRenaming]); + }, [ + editingName, + group.name, + group.id, + currentGrouping, + projectId, + dispatch, + trackMixpanelEvent, + isRenaming, + ]); - const handleNameClick = useCallback((e: React.MouseEvent) => { - e.stopPropagation(); - if (!isOwnerOrAdmin) return; - setIsEditingName(true); - setEditingName(group.name); - }, [group.name, isOwnerOrAdmin]); - - const handleNameKeyDown = useCallback((e: React.KeyboardEvent) => { - if (e.key === 'Enter') { - handleNameSave(); - } else if (e.key === 'Escape') { - setIsEditingName(false); + const handleNameClick = useCallback( + (e: React.MouseEvent) => { + e.stopPropagation(); + if (!isOwnerOrAdmin) return; + setIsEditingName(true); setEditingName(group.name); - } - e.stopPropagation(); - }, [group.name, handleNameSave]); + }, + [group.name, isOwnerOrAdmin] + ); + + const handleNameKeyDown = useCallback( + (e: React.KeyboardEvent) => { + if (e.key === 'Enter') { + handleNameSave(); + } else if (e.key === 'Escape') { + setIsEditingName(false); + setEditingName(group.name); + } + e.stopPropagation(); + }, + [group.name, handleNameSave] + ); const handleNameBlur = useCallback(() => { handleNameSave(); @@ -239,31 +301,31 @@ const TaskGroupHeader: React.FC = ({ group, isCollapsed, o setEditingName(group.name); }, [group.name]); - - // Handle category change - const handleCategoryChange = useCallback(async (categoryId: string, e?: React.MouseEvent) => { - e?.stopPropagation(); - if (isChangingCategory) return; + const handleCategoryChange = useCallback( + async (categoryId: string, e?: React.MouseEvent) => { + e?.stopPropagation(); + if (isChangingCategory) return; - setIsChangingCategory(true); - try { - // Extract status ID from group ID (format: "status-{statusId}") - const statusId = group.id.replace('status-', ''); - - await statusApiService.updateStatusCategory(statusId, categoryId, projectId); - trackMixpanelEvent(evt_project_board_column_setting_click, { 'Change category': 'Status' }); - - // Refresh status list and tasks - dispatch(fetchStatuses(projectId)); - dispatch(fetchTasksV3(projectId)); - - } catch (error) { - logger.error('Error changing category:', error); - } finally { - setIsChangingCategory(false); - } - }, [group.id, projectId, dispatch, trackMixpanelEvent, isChangingCategory]); + setIsChangingCategory(true); + try { + // Extract status ID from group ID (format: "status-{statusId}") + const statusId = group.id.replace('status-', ''); + + await statusApiService.updateStatusCategory(statusId, categoryId, projectId); + trackMixpanelEvent(evt_project_board_column_setting_click, { 'Change category': 'Status' }); + + // Refresh status list and tasks + dispatch(fetchStatuses(projectId)); + dispatch(fetchTasksV3(projectId)); + } catch (error) { + logger.error('Error changing category:', error); + } finally { + setIsChangingCategory(false); + } + }, + [group.id, projectId, dispatch, trackMixpanelEvent, isChangingCategory] + ); // Create dropdown menu items const menuItems = useMemo(() => { @@ -273,7 +335,12 @@ const TaskGroupHeader: React.FC = ({ group, isCollapsed, o { key: 'rename', icon: , - label: currentGrouping === 'status' ? t('renameStatus') : currentGrouping === 'phase' ? t('renamePhase') : t('renameGroup'), + label: + currentGrouping === 'status' + ? t('renameStatus') + : currentGrouping === 'phase' + ? t('renamePhase') + : t('renameGroup'), onClick: (e: any) => { e?.domEvent?.stopPropagation(); handleRenameGroup(); @@ -283,7 +350,7 @@ const TaskGroupHeader: React.FC = ({ group, isCollapsed, o // Only show "Change Category" when grouped by status if (currentGrouping === 'status') { - const categorySubMenuItems = statusCategories.map((category) => ({ + const categorySubMenuItems = statusCategories.map(category => ({ key: `category-${category.id}`, label: (
@@ -297,16 +364,23 @@ const TaskGroupHeader: React.FC = ({ group, isCollapsed, o }, })); - items.push({ - key: 'changeCategory', - icon: , - label: t('changeCategory'), - children: categorySubMenuItems, - } as any); + items.push({ + key: 'changeCategory', + icon: , + label: t('changeCategory'), + children: categorySubMenuItems, + } as any); } return items; - }, [currentGrouping, handleRenameGroup, handleCategoryChange, isOwnerOrAdmin, statusCategories, t]); + }, [ + currentGrouping, + handleRenameGroup, + handleCategoryChange, + isOwnerOrAdmin, + statusCategories, + t, + ]); // Make the group header droppable const { isOver, setNodeRef } = useDroppable({ @@ -317,7 +391,7 @@ const TaskGroupHeader: React.FC = ({ group, isCollapsed, o }, }); - return ( + return (
= ({ group, isCollapsed, o zIndex: 25, // Higher than task rows but lower than column headers (z-30) height: '36px', minHeight: '36px', - maxHeight: '36px' + maxHeight: '36px', }} onClick={onToggle} > {/* Drag Handle Space - ultra minimal width */}
{/* Chevron button */} - + +
+ )}
- {/* Three-dot menu - only show for status and phase grouping */} - {menuItems.length > 0 && (currentGrouping === 'status' || currentGrouping === 'phase') && ( -
- - - -
- )} - -
- {/* Progress Bar - sticky to the right edge during horizontal scroll */} - {(currentGrouping === 'priority' || currentGrouping === 'phase') && - (groupProgressValues.todoProgress || groupProgressValues.doingProgress || groupProgressValues.doneProgress) && ( -
- -
- )} + {(currentGrouping === 'priority' || currentGrouping === 'phase') && + !(groupProgressValues.todoProgress === 0 && groupProgressValues.doingProgress === 0 && groupProgressValues.doneProgress === 0) && ( +
+ +
+ )}
); }; -export default TaskGroupHeader; \ No newline at end of file +export default TaskGroupHeader; diff --git a/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx b/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx index 33c7e36f..7a5888b2 100644 --- a/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx +++ b/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx @@ -89,14 +89,29 @@ const EmptyGroupDropZone: React.FC<{ className={`relative w-full transition-colors duration-200 ${ isOver && active ? 'bg-blue-50 dark:bg-blue-900/20' : '' }`} - style={{ minHeight: 80 }} > -
+
{visibleColumns.map((column, index) => { const emptyColumnStyle = { width: column.width, flexShrink: 0, }; + + // Show text in the title column + if (column.id === 'title') { + return ( +
+ + No tasks in this group + +
+ ); + } + return (
- {/* Left-aligned visually appealing empty state */} -
- -
{isOver && active && (
)} @@ -178,7 +186,7 @@ const TaskListV2Section: React.FC = () => { const { socket, connected } = useSocket(); const themeMode = useAppSelector(state => state.themeReducer.mode); const isDarkMode = themeMode === 'dark'; - + // Redux state selectors const allTasks = useAppSelector(selectAllTasksArray); const groups = useAppSelector(selectGroups); @@ -698,10 +706,7 @@ const TaskListV2Section: React.FC = () => { count: 1, // For the add task row startIndex: 0 }; - - - const unmappedVirtuosoGroups = [unmappedGroup]; - + return ( = memo(({ return
; case 'title': return ( -
+
-
+
{!isAdding ? (
From e3c002b0882a0e3ce3f07c57514c93ab51c0081d Mon Sep 17 00:00:00 2001 From: chamikaJ Date: Tue, 22 Jul 2025 17:25:37 +0530 Subject: [PATCH 06/13] style(task-list): enhance styling for task list components - Updated the EmptyGroupDropZone component to include top and bottom borders for better visual separation. - Adjusted the AddTaskRow component by removing the bottom border for a cleaner appearance. --- .../src/components/task-list-v2/TaskListV2Table.tsx | 2 +- .../src/components/task-list-v2/components/AddTaskRow.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx b/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx index 7a5888b2..4991cc3b 100644 --- a/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx +++ b/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx @@ -90,7 +90,7 @@ const EmptyGroupDropZone: React.FC<{ isOver && active ? 'bg-blue-50 dark:bg-blue-900/20' : '' }`} > -
+
{visibleColumns.map((column, index) => { const emptyColumnStyle = { width: column.width, diff --git a/worklenz-frontend/src/components/task-list-v2/components/AddTaskRow.tsx b/worklenz-frontend/src/components/task-list-v2/components/AddTaskRow.tsx index 9ecf8999..43dfa7f5 100644 --- a/worklenz-frontend/src/components/task-list-v2/components/AddTaskRow.tsx +++ b/worklenz-frontend/src/components/task-list-v2/components/AddTaskRow.tsx @@ -165,7 +165,7 @@ const AddTaskRow: React.FC = memo(({ }, [isAdding, taskName, handleAddTask, handleCancel, handleKeyDown, t]); return ( -
+
{visibleColumns.map((column, index) => ( {renderColumn(column.id, column.width)} From a6286eb2b8171df4991b0d3f3c15b651ff2cabc2 Mon Sep 17 00:00:00 2001 From: chamiakJ Date: Wed, 23 Jul 2025 07:46:39 +0530 Subject: [PATCH 07/13] feat(migrations): add README for node-pg-migrate and enhance frontend configuration - Created a README file for database migrations using node-pg-migrate, detailing commands, file format, best practices, and an example migration. - Added a Vite configuration file for the frontend, including plugin setup, alias resolution, build optimizations, and responsive design adjustments for task list components. - Updated i18n configuration to preload the 'home' namespace for improved localization. - Enhanced task list styling with responsive design features for better mobile usability. --- .../database/pg-migrations/README.md | 72 +++++++++++++++++ worklenz-frontend/src/i18n.ts | 1 + .../src/pages/home/task-list/tasks-list.css | 78 +++++++++++++++++++ .../src/pages/home/task-list/tasks-list.tsx | 28 ++++--- .../{vite.config.ts => vite.config.mts} | 0 5 files changed, 169 insertions(+), 10 deletions(-) create mode 100644 worklenz-backend/database/pg-migrations/README.md rename worklenz-frontend/{vite.config.ts => vite.config.mts} (100%) diff --git a/worklenz-backend/database/pg-migrations/README.md b/worklenz-backend/database/pg-migrations/README.md new file mode 100644 index 00000000..ee063447 --- /dev/null +++ b/worklenz-backend/database/pg-migrations/README.md @@ -0,0 +1,72 @@ +# Node-pg-migrate Migrations + +This directory contains database migrations managed by node-pg-migrate. + +## Migration Commands + +- `npm run migrate:create -- migration-name` - Create a new migration file +- `npm run migrate:up` - Run all pending migrations +- `npm run migrate:down` - Rollback the last migration +- `npm run migrate:redo` - Rollback and re-run the last migration + +## Migration File Format + +Migrations are JavaScript files with timestamp prefixes (e.g., `20250115000000_performance-indexes.js`). + +Each migration file exports two functions: +- `exports.up` - Contains the forward migration logic +- `exports.down` - Contains the rollback logic + +## Best Practices + +1. **Always use IF EXISTS/IF NOT EXISTS checks** to make migrations idempotent +2. **Test migrations locally** before deploying to production +3. **Include rollback logic** in the `down` function for all changes +4. **Use descriptive names** for migration files +5. **Keep migrations focused** - one logical change per migration + +## Example Migration + +```javascript +exports.up = pgm => { + // Create table with IF NOT EXISTS + pgm.createTable('users', { + id: 'id', + name: { type: 'varchar(100)', notNull: true }, + created_at: { + type: 'timestamp', + notNull: true, + default: pgm.func('current_timestamp') + } + }, { ifNotExists: true }); + + // Add index with IF NOT EXISTS + pgm.createIndex('users', 'name', { + name: 'idx_users_name', + ifNotExists: true + }); +}; + +exports.down = pgm => { + // Drop in reverse order + pgm.dropIndex('users', 'name', { + name: 'idx_users_name', + ifExists: true + }); + + pgm.dropTable('users', { ifExists: true }); +}; +``` + +## Migration History + +The `pgmigrations` table tracks which migrations have been run. Do not modify this table manually. + +## Converting from SQL Migrations + +When converting SQL migrations to node-pg-migrate format: + +1. Wrap SQL statements in `pgm.sql()` calls +2. Use node-pg-migrate helper methods where possible (createTable, addColumns, etc.) +3. Always include `IF EXISTS/IF NOT EXISTS` checks +4. Ensure proper rollback logic in the `down` function \ No newline at end of file diff --git a/worklenz-frontend/src/i18n.ts b/worklenz-frontend/src/i18n.ts index c7337343..f70b2f5c 100644 --- a/worklenz-frontend/src/i18n.ts +++ b/worklenz-frontend/src/i18n.ts @@ -10,6 +10,7 @@ i18n .init({ fallbackLng: 'en', defaultNS: 'common', + ns: ['common', 'home'], // Preload home namespace interpolation: { escapeValue: false, diff --git a/worklenz-frontend/src/pages/home/task-list/tasks-list.css b/worklenz-frontend/src/pages/home/task-list/tasks-list.css index 698cfcdc..bb9c82ce 100644 --- a/worklenz-frontend/src/pages/home/task-list/tasks-list.css +++ b/worklenz-frontend/src/pages/home/task-list/tasks-list.css @@ -6,3 +6,81 @@ .ant-table-row:hover .row-action-button { opacity: 1; } + +/* Responsive styles for task list */ +@media (max-width: 768px) { + .task-list-card .ant-card-head { + flex-direction: column; + gap: 12px; + } + + .task-list-card .ant-card-head-title { + flex: 1; + width: 100%; + } + + .task-list-card .ant-card-extra { + width: 100%; + justify-content: space-between; + } + + .task-list-mobile-header { + flex-direction: column; + gap: 8px; + align-items: stretch !important; + } + + .task-list-mobile-controls { + flex-direction: column; + gap: 8px; + align-items: stretch !important; + } + + .task-list-mobile-select { + width: 100% !important; + } + + .task-list-mobile-segmented { + width: 100% !important; + } +} + +@media (max-width: 576px) { + .task-list-card .ant-table { + font-size: 12px; + } + + .task-list-card .ant-table-thead > tr > th { + padding: 8px 4px; + font-size: 12px; + } + + .task-list-card .ant-table-tbody > tr > td { + padding: 8px 4px; + } + + .row-action-button { + opacity: 1; /* Always show on mobile */ + } + + /* Hide project column on very small screens */ + .task-list-card .ant-table-thead > tr > th:nth-child(2), + .task-list-card .ant-table-tbody > tr > td:nth-child(2) { + display: none; + } +} + +/* Table responsive container */ +.task-list-card .ant-table-container { + overflow-x: auto; +} + +@media (max-width: 768px) { + .task-list-card .ant-table-wrapper { + overflow-x: auto; + } + + .task-list-card .ant-table { + min-width: 600px; + } +} diff --git a/worklenz-frontend/src/pages/home/task-list/tasks-list.tsx b/worklenz-frontend/src/pages/home/task-list/tasks-list.tsx index 01e7706c..17ba17dd 100644 --- a/worklenz-frontend/src/pages/home/task-list/tasks-list.tsx +++ b/worklenz-frontend/src/pages/home/task-list/tasks-list.tsx @@ -15,6 +15,7 @@ import { } from 'antd'; import React, { useState, useMemo, useCallback, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; +import { useMediaQuery } from 'react-responsive'; import ListView from './list-view'; import CalendarView from './calendar-view'; @@ -61,21 +62,22 @@ const TasksList: React.FC = React.memo(() => { refetchOnFocus: false, }); - const { t } = useTranslation('home'); + const { t, ready } = useTranslation('home'); const { model } = useAppSelector(state => state.homePageReducer); + const isMobile = useMediaQuery({ maxWidth: 768 }); const taskModes = useMemo( () => [ { value: 0, - label: t('home:tasks.assignedToMe'), + label: ready ? t('tasks.assignedToMe') : 'Assigned to me', }, { value: 1, - label: t('home:tasks.assignedByMe'), + label: ready ? t('tasks.assignedByMe') : 'Assigned by me', }, ], - [t] + [t, ready] ); const handleSegmentChange = (value: 'List' | 'Calendar') => { @@ -123,7 +125,7 @@ const TasksList: React.FC = React.memo(() => { {t('tasks.name')} ), - width: '40%', + width: isMobile ? '50%' : '40%', render: (_, record) => (
@@ -155,7 +157,7 @@ const TasksList: React.FC = React.memo(() => { { key: 'project', title: t('tasks.project'), - width: '25%', + width: isMobile ? '30%' : '25%', render: (_, record) => { return ( @@ -185,7 +187,7 @@ const TasksList: React.FC = React.memo(() => { render: (_, record) => , }, ], - [t, data?.body?.total, currentPage, pageSize, handlePageChange] + [t, data?.body?.total, currentPage, pageSize, handlePageChange, isMobile] ); const handleTaskModeChange = (value: number) => { @@ -210,23 +212,27 @@ const TasksList: React.FC = React.memo(() => { ); }, [dispatch]); + return ( + {t('tasks.tasks')} + + + + + + { {t('freePlan')}} + title={{t('freePlan', 'Free Plan')}} onClick={() => setSelectedCard(paddlePlans.FREE)} >
$ 0.00 - {t('freeForever')} + {t('freeForever', 'Free Forever')} - {t('bestForPersonalUse')} + {t('bestForPersonalUse', 'Best for Personal Use')}
- {renderFeature(`${plans.free_tier_storage} ${t('storage')}`)} - {renderFeature(`${plans.projects_limit} ${t('projects')}`)} - {renderFeature(`${plans.team_member_limit} ${t('teamMembers')}`)} + {renderFeature(`${plans.free_tier_storage} ${t('storage', 'Storage')}`)} + {renderFeature(`${plans.projects_limit} ${t('projects', 'Projects')}`)} + {renderFeature(`${plans.team_member_limit} ${t('teamMembers', 'Team Members')}`)}
@@ -401,9 +412,9 @@ const UpgradePlans = () => { hoverable title={ - {t('annualPlan')}{' '} + {t('annualPlan', 'Annual Plan')}{' '} - {t('tag')} + {t('tag', 'Popular')} } @@ -429,16 +440,16 @@ const UpgradePlans = () => {
- {t('billedAnnually')} + {t('billedAnnually', 'Billed Annually')}
- {renderFeature(t('startupText01'))} - {renderFeature(t('startupText02'))} - {renderFeature(t('startupText03'))} - {renderFeature(t('startupText04'))} - {renderFeature(t('startupText05'))} + {renderFeature(t('startupText01', 'Unlimited Projects'))} + {renderFeature(t('startupText02', 'Unlimited Team Members'))} + {renderFeature(t('startupText03', 'Unlimited Storage'))} + {renderFeature(t('startupText04', 'Priority Support'))} + {renderFeature(t('startupText05', 'Advanced Analytics'))}
diff --git a/worklenz-frontend/src/components/admin-center/configuration/configuration.tsx b/worklenz-frontend/src/components/admin-center/configuration/configuration.tsx index afa5b51a..ffb1e806 100644 --- a/worklenz-frontend/src/components/admin-center/configuration/configuration.tsx +++ b/worklenz-frontend/src/components/admin-center/configuration/configuration.tsx @@ -1,5 +1,5 @@ -import { Button, Card, Col, Divider, Form, Input, notification, Row, Select } from 'antd'; -import React, { useEffect, useState } from 'react'; +import { Button, Card, Col, Divider, Form, Input, Row, Select } from '@/shared/antd-imports'; +import React, { useEffect, useState, useMemo, useCallback } from 'react'; import { RootState } from '../../../app/store'; import { useAppSelector } from '@/hooks/useAppSelector'; import { IBillingConfigurationCountry } from '@/types/admin-center/country.types'; @@ -7,14 +7,15 @@ import { adminCenterApiService } from '@/api/admin-center/admin-center.api.servi import { IBillingConfiguration } from '@/types/admin-center/admin-center.types'; import logger from '@/utils/errorLogger'; -const Configuration: React.FC = () => { +const Configuration: React.FC = React.memo(() => { const themeMode = useAppSelector((state: RootState) => state.themeReducer.mode); const [countries, setCountries] = useState([]); const [configuration, setConfiguration] = useState(); const [loading, setLoading] = useState(false); const [form] = Form.useForm(); - const fetchCountries = async () => { + + const fetchCountries = useCallback(async () => { try { const res = await adminCenterApiService.getCountries(); if (res.done) { @@ -23,61 +24,85 @@ const Configuration: React.FC = () => { } catch (error) { logger.error('Error fetching countries:', error); } - }; + }, []); - const fetchConfiguration = async () => { + const fetchConfiguration = useCallback(async () => { const res = await adminCenterApiService.getBillingConfiguration(); if (res.done) { setConfiguration(res.body); form.setFieldsValue(res.body); } - }; + }, [form]); useEffect(() => { fetchCountries(); fetchConfiguration(); - }, []); + }, [fetchCountries, fetchConfiguration]); - const handleSave = async (values: any) => { - try { - setLoading(true); - const res = await adminCenterApiService.updateBillingConfiguration(values); - if (res.done) { - fetchConfiguration(); + const handleSave = useCallback( + async (values: any) => { + try { + setLoading(true); + const res = await adminCenterApiService.updateBillingConfiguration(values); + if (res.done) { + fetchConfiguration(); + } + } catch (error) { + logger.error('Error updating configuration:', error); + } finally { + setLoading(false); } - } catch (error) { - logger.error('Error updating configuration:', error); - } finally { - setLoading(false); - } - }; + }, + [fetchConfiguration] + ); - const countryOptions = countries.map(country => ({ - label: country.name, - value: country.id, - })); + const countryOptions = useMemo( + () => + countries.map(country => ({ + label: country.name, + value: country.id, + })), + [countries] + ); + + const titleStyle = useMemo( + () => ({ + color: `${themeMode === 'dark' ? '#ffffffd9' : '#000000d9'}`, + fontWeight: 500, + fontSize: '16px', + display: 'flex', + gap: '4px', + }), + [themeMode] + ); + + const dividerTitleStyle = useMemo( + () => ({ + color: `${themeMode === 'dark' ? '#ffffffd9' : '#000000d9'}`, + fontWeight: 600, + fontSize: '16px', + display: 'flex', + gap: '4px', + }), + [themeMode] + ); + + const cardStyle = useMemo(() => ({ marginTop: '16px' }), []); + const colStyle = useMemo(() => ({ padding: '0 12px', height: '86px' }), []); + const dividerStyle = useMemo(() => ({ margin: '16px 0' }), []); + const buttonColStyle = useMemo(() => ({ paddingLeft: '12px' }), []); + + const handlePhoneInput = useCallback((e: React.FormEvent) => { + const input = e.target as HTMLInputElement; + input.value = input.value.replace(/[^0-9]/g, ''); + }, []); return (
- - Billing Details - - } - style={{ marginTop: '16px' }} - > + Billing Details} style={cardStyle}> - + { }, ]} > - + - + { }, ]} > - + - + { }, ]} > - { - const input = e.target as HTMLInputElement; // Type assertion to access 'value' - input.value = input.value.replace(/[^0-9]/g, ''); // Restrict non-numeric input - }} - /> + - - - Company Details - + + Company Details - + - + - + - + - + - + - + - @@ -212,6 +213,8 @@ const Configuration: React.FC = () => {
); -}; +}); + +Configuration.displayName = 'Configuration'; export default Configuration; diff --git a/worklenz-frontend/src/pages/admin-center/billing/billing.tsx b/worklenz-frontend/src/pages/admin-center/billing/billing.tsx index b4eaa864..bc18dcbb 100644 --- a/worklenz-frontend/src/pages/admin-center/billing/billing.tsx +++ b/worklenz-frontend/src/pages/admin-center/billing/billing.tsx @@ -1,32 +1,39 @@ import { PageHeader } from '@ant-design/pro-components'; -import { Tabs, TabsProps } from 'antd'; -import React from 'react'; +import { Tabs, TabsProps } from '@/shared/antd-imports'; +import React, { useMemo } from 'react'; import CurrentBill from '@/components/admin-center/billing/current-bill'; import Configuration from '@/components/admin-center/configuration/configuration'; import { useTranslation } from 'react-i18next'; -const Billing: React.FC = () => { +const Billing: React.FC = React.memo(() => { const { t } = useTranslation('admin-center/current-bill'); - const items: TabsProps['items'] = [ - { - key: '1', - label: t('currentBill'), - children: , - }, - { - key: '2', - label: t('configuration'), - children: , - }, - ]; + const items: TabsProps['items'] = useMemo( + () => [ + { + key: '1', + label: t('currentBill'), + children: , + }, + { + key: '2', + label: t('configuration'), + children: , + }, + ], + [t] + ); + + const pageHeaderStyle = useMemo(() => ({ padding: '16px 0' }), []); return (
- {t('title')}} style={{ padding: '16px 0' }} /> - + {t('title')}} style={pageHeaderStyle} /> +
); -}; +}); + +Billing.displayName = 'Billing'; export default Billing; diff --git a/worklenz-frontend/src/shared/antd-imports.ts b/worklenz-frontend/src/shared/antd-imports.ts index bd0b31bd..253ff847 100644 --- a/worklenz-frontend/src/shared/antd-imports.ts +++ b/worklenz-frontend/src/shared/antd-imports.ts @@ -50,6 +50,7 @@ import { message, notification, theme, + Statistic, } from 'antd'; // Icons - Import commonly used ones @@ -145,6 +146,7 @@ export { message, notification, theme, + Statistic, }; // TypeScript Types - Import commonly used ones From edf81dbe5767eeb39e1b50539a245dfb4da04e9b Mon Sep 17 00:00:00 2001 From: chamikaJ Date: Wed, 23 Jul 2025 11:05:39 +0530 Subject: [PATCH 09/13] refactor: update Ant Design imports to centralized path - Replaced direct imports from 'antd' with centralized imports from '@/shared/antd-imports' to align with new import rules and improve maintainability. --- .cursor/rules/antd-components.mdc | 6 ++-- .../src/components/AuthPageHeader.tsx | 2 +- .../src/components/CustomColordLabel.tsx | 2 +- .../src/components/CustomNumberLabel.tsx | 2 +- .../src/components/CustomSearchbar.tsx | 2 +- .../src/components/CustomTableTitle.tsx | 2 +- .../src/components/EmptyListPlaceholder.tsx | 2 +- .../src/components/ErrorBoundary.tsx | 2 +- .../src/components/ModuleErrorBoundary.tsx | 2 +- .../src/components/PinRouteToNavbarButton.tsx | 2 +- .../src/components/PreferenceSelector.tsx | 2 +- .../components/account-setup/members-step.tsx | 4 +-- .../account-setup/organization-step.tsx | 2 +- .../components/account-setup/project-step.tsx | 2 +- .../components/account-setup/tasks-step.tsx | 2 +- .../add-members-dropdown.tsx | 2 +- .../add-members-dropdown.tsx | 2 +- .../billing/billing-tables/charges-table.tsx | 2 +- .../billing/billing-tables/invoices-table.tsx | 2 +- .../redeem-code-drawer/redeem-code-drawer.tsx | 2 +- .../upgrade-plans-lkr/upgrade-plans-lkr.tsx | 2 +- .../drawers/upgrade-plans/upgrade-plans.tsx | 22 ++++++------ .../organization-admins-table.tsx | 2 +- .../organization-name/organization-name.tsx | 2 +- .../organization-owner/organization-owner.tsx | 2 +- .../teams/add-team-drawer/add-team-drawer.tsx | 2 +- .../teams/settings-drawer/settings-drawer.tsx | 2 +- .../teams/teams-table/teams-table.tsx | 2 +- .../src/components/avatars/avatars.tsx | 2 +- .../ChangeCategoryDropdown.tsx | 2 +- .../common-members-section.tsx | 2 +- .../common-phase-section.tsx | 2 +- .../common-priority-section.tsx | 2 +- .../CommonStatusSection.tsx | 2 +- .../components/board/custom-avatar-group.tsx | 2 +- .../board/custom-due-date-picker.tsx | 2 +- .../board/kanban-group/kanban-group.tsx | 2 +- .../board/subTaskCard/SubTaskCard.tsx | 2 +- .../components/board/taskCard/TaskCard.tsx | 2 +- .../priority-section/priority-section.tsx | 2 +- .../board/taskCreateCard/TaskCreateCard.tsx | 2 +- .../priority-task-create-card.tsx | 2 +- .../calendars/homeCalendar/HomeCalendar.tsx | 2 +- .../components/charts/LazyChartComponents.tsx | 2 +- .../src/components/charts/chart-loader.tsx | 2 +- .../invite-team-members.tsx | 2 +- .../common/single-avatar/single-avatar.tsx | 2 +- .../template-drawer/template-drawer.tsx | 5 ++- .../tooltip-wrapper/tooltip-wrapper.tsx | 2 +- .../enhanced-kanban/EnhancedKanbanBoard.tsx | 2 +- .../EnhancedKanbanCreateSection.tsx | 2 +- .../EnhancedKanbanCreateSubtaskCard.tsx | 2 +- .../EnhancedKanbanCreateTaskCard.tsx | 2 +- .../enhanced-kanban/EnhancedKanbanGroup.tsx | 12 +++---- .../EnhancedKanbanTaskCard.tsx | 6 ++-- .../home-tasks-status-dropdown.tsx | 2 +- .../taskDatePicker/home-tasks-date-picker.tsx | 2 +- .../kanbanGroup.tsx | 2 +- .../kanbanTaskCard.tsx | 2 +- .../kanbanTaskListBoard.tsx | 11 ++---- .../notification/notfication-drawer.tsx | 2 +- .../notification/notification-button.tsx | 2 +- .../notification/notification-item.tsx | 2 +- .../notification/notification-template.tsx | 2 +- .../push-notification-template.tsx | 2 +- .../project-group/project-group-list.tsx | 3 +- .../project-list-actions.tsx | 3 +- .../project-list-category.tsx | 2 +- .../project-rate-cell.tsx | 2 +- .../progress-list-progress.tsx | 2 +- .../project-list-updated.tsx | 2 +- .../project-name/project-name-cell.tsx | 2 +- .../delete-status-drawer.tsx | 2 +- .../column-configuration-modal.tsx | 2 +- .../members-filter-dropdown.tsx | 4 +-- .../priority-filter-dropdown.tsx | 2 +- .../project-create-button.tsx | 2 +- .../project-basic-info/project-basic-info.tsx | 2 +- .../project-category-section.tsx | 2 +- .../project-client-section.tsx | 2 +- .../project-drawer/project-drawer.tsx | 2 +- .../project-health-section.tsx | 2 +- .../project-status-section.tsx | 2 +- .../project-manager-dropdown.tsx | 2 +- .../projects/project-stats-card.tsx | 2 +- .../reporting-overview-members-tab.tsx | 2 +- .../reporting-overview-members-table.tsx | 2 +- .../reports-overview-category-graph.tsx | 2 +- .../reports-overview-project-health-graph.tsx | 2 +- .../reports-overview-status-graph.tsx | 2 +- .../overview-team-info-drawer-tabs.tsx | 2 +- .../overview-team-info-drawer.tsx | 2 +- .../reporting-overview-projects-tab.tsx | 2 +- .../reporting-overview-projects-table.tsx | 2 +- .../components/reporting/time-wise-filter.tsx | 2 +- .../src/components/schedule-old/team/Team.tsx | 2 +- .../grant-chart/day-allocation-cell.tsx | 2 +- .../schedule/grant-chart/grantt-chart.tsx | 2 +- .../grant-chart/grantt-members-table.tsx | 2 +- .../grant-chart/project-timeline-bar.tsx | 2 +- .../schedule/grant-chart/timeline.tsx | 2 +- .../ServiceWorkerStatus.tsx | 2 +- .../settings/edit-team-name-modal.tsx | 2 +- .../settings/update-member-drawer.tsx | 2 +- .../suspense-fallback/suspense-fallback.tsx | 2 +- .../activity-log/task-drawer-activity-log.tsx | 2 +- .../info-tab/attachments/attachments-grid.tsx | 2 +- .../attachments/attachments-preview.tsx | 2 +- .../info-tab/comments/task-comments.tsx | 2 +- .../comments/task-view-comment-edit.tsx | 2 +- .../shared/info-tab/dependencies-table.tsx | 2 +- .../task-drawer-due-date.tsx | 2 +- .../task-drawer-estimation.tsx | 2 +- .../task-drawer-key/task-drawer-key.tsx | 4 +-- .../task-drawer-labels/task-drawer-labels.tsx | 2 +- .../task-drawer-phase-selector.tsx | 4 +-- .../task-drawer-priority-selector.tsx | 2 +- .../task-drawer-progress.tsx | 2 +- .../task-drawer-recurring-config.tsx | 2 +- .../shared/info-tab/info-tab-footer.tsx | 2 +- .../info-tab/notify-member-selector.tsx | 2 +- .../shared/info-tab/subtask-table.tsx | 2 +- .../shared/info-tab/task-details-form.tsx | 2 +- .../shared/info-tab/task-drawer-info-tab.tsx | 2 +- .../shared/time-log/TaskDrawerTimeLog.tsx | 2 +- .../shared/time-log/task-drawer-time-log.tsx | 2 +- .../shared/time-log/time-log-form.tsx | 2 +- .../shared/time-log/time-log-item.tsx | 2 +- .../shared/time-log/time-log-list.tsx | 2 +- .../task-drawer-header/task-drawer-header.tsx | 2 +- .../task-drawer-status-dropdown.tsx | 2 +- .../components/task-drawer/task-drawer.tsx | 4 +-- .../task-hierarchy-breadcrumb.tsx | 2 +- .../assigneeSelector/AssigneeSelector.tsx | 2 +- .../labelsSelector/color-changed-label.tsx | 2 +- .../labelsSelector/custom-color-label.tsx | 2 +- .../labelsSelector/custom-number-label.tsx | 2 +- .../labelsSelector/labels-selector.tsx | 2 +- .../phaseDropdown/PhaseDropdown.tsx | 2 +- .../priorityDropdown/priority-dropdown.tsx | 2 +- .../status-dropdown/status-dropdown.tsx | 2 +- .../task-row-due-time.tsx | 2 +- .../task-row-description.tsx | 2 +- .../task-row/task-row-name/task-row-name.tsx | 2 +- .../task-row-progress/task-row-progress.tsx | 2 +- .../task-row-time-tracking.tsx | 2 +- .../task-list-v2/GroupProgressBar.tsx | 2 +- .../task-list-v2/TaskGroupHeader.tsx | 2 +- .../task-list-v2/TaskListV2Table.tsx | 2 +- .../task-list-v2/TaskRowWithSubtasks.tsx | 2 +- .../task-list-v2/components/AddTaskRow.tsx | 2 +- .../components/CustomColumnComponents.tsx | 2 +- .../components/DatePickerColumn.tsx | 2 +- .../components/TaskListSkeleton.tsx | 2 +- .../components/TaskRowColumns.tsx | 4 +-- .../task-list-v2/components/TitleColumn.tsx | 4 +-- .../task-management/CreateTaskModal.tsx | 4 +-- .../task-management/ManagePhaseModal.tsx | 4 +-- .../task-management/ManageStatusModal.tsx | 4 +-- .../lazy-loading-optimizations.tsx | 2 +- .../optimized-bulk-action-bar.tsx | 2 +- .../task-management/performance-analysis.tsx | 2 +- .../task-management/task-list-board.tsx | 2 +- .../task-management/virtualized-task-list.tsx | 2 +- .../task-templates/task-template-drawer.tsx | 2 +- .../labelsSelector/CustomColordLabel.old.tsx | 2 +- .../labelsSelector/CustomNumberLabel.tsx | 2 +- .../labelsSelector/LabelsSelector.tsx | 2 +- .../labelsSelector/color-changed-label.tsx | 2 +- .../phase-dropdown/phase-dropdown.tsx | 2 +- .../priorityDropdown/PriorityDropdown.tsx | 2 +- .../statusDropdown/StatusDropdown.tsx | 2 +- .../components/AssigneesDropdown.tsx | 2 +- .../components/LabelsDropdown.tsx | 2 +- .../src/features/i18n/language-selector.tsx | 2 +- .../src/features/navbar/help/HelpButton.tsx | 2 +- .../features/navbar/invite/InviteButton.tsx | 2 +- .../navbar/mobileMenu/MobileMenuButton.tsx | 2 +- .../src/features/navbar/navbar.tsx | 2 +- .../navbar/switchTeam/SwitchTeamButton.tsx | 2 +- .../features/navbar/timers/timer-button.tsx | 2 +- .../navbar/upgradePlan/UpgradePlanButton.tsx | 2 +- .../navbar/user-profile/profile-button.tsx | 2 +- .../bulkActions/BulkTasksActionContainer.tsx | 2 +- .../singleProject/phase/ConfigPhaseButton.tsx | 2 +- .../singleProject/phase/PhaseDrawer.tsx | 2 +- .../singleProject/phase/PhaseHeader.tsx | 2 +- .../singleProject/phase/PhaseOptionItem.tsx | 2 +- .../update-project/update-project-drawer.tsx | 2 +- .../activity-log-tab/activity-log-card.tsx | 2 +- .../members-reports-activity-logs-tab.tsx | 2 +- .../members-reports-drawer-tabs.tsx | 2 +- .../members-reports-drawer.tsx | 2 +- .../MembersReportsPriorityGraph.tsx | 2 +- .../MembersReportsProjectGraph.tsx | 2 +- .../overviewTab/MembersReportsStatusGraph.tsx | 2 +- ...members-overview-projects-stats-drawer.tsx | 2 +- .../members-overview-projects-stats-table.tsx | 2 +- .../members-overview-tasks-stats-drawer.tsx | 2 +- .../members-overview-tasks-stats-table.tsx | 2 +- .../overviewTab/members-reports-stat-card.tsx | 2 +- .../taskTab/MembersReportsTasksTab.tsx | 2 +- .../taskTab/MembersReportsTasksTable.tsx | 2 +- .../taskTab/ProjectFilter.tsx | 2 +- .../time-log-tab/billable-filter.tsx | 2 +- .../members-reports-time-logs-tab.tsx | 2 +- .../time-log-tab/time-log-card.tsx | 2 +- .../ProjectReportsDrawer.tsx | 2 +- .../ProjectReportsDrawerTabs.tsx | 2 +- .../membersTab/ProjectReportsMembersTab.tsx | 2 +- .../membersTab/ProjectReportsMembersTable.tsx | 2 +- .../ProjectReportsMembersTaskDrawer.tsx | 2 +- .../ProjectReportsMembersTaskTable.tsx | 2 +- .../ProjectReportsDueDateGraph.tsx | 2 +- .../ProjectReportsPriorityGraph.tsx | 2 +- .../overviewTab/ProjectReportsStatCard.tsx | 2 +- .../overviewTab/ProjectReportsStatusGraph.tsx | 2 +- .../tasksTab/ProjectReportsTaskTable.tsx | 2 +- .../tasksTab/ProjectReportsTasksTab.tsx | 2 +- .../tasksTab/group-by-filter.tsx | 2 +- .../schedule-old/ProjectTimelineModal.tsx | 2 +- .../features/schedule-old/ScheduleDrawer.tsx | 2 +- .../schedule-old/ScheduleSettingsDrawer.tsx | 2 +- .../schedule/ProjectTimelineModal.tsx | 2 +- .../src/features/schedule/ScheduleDrawer.tsx | 2 +- .../schedule/ScheduleSettingsDrawer.tsx | 2 +- .../categories/CustomColorsCategoryTag.tsx | 2 +- .../categories/color-changed-category.tsx | 2 +- .../settings/client/CreateClientDrawer.tsx | 2 +- .../settings/client/UpdateClientDrawer.tsx | 2 +- .../settings/job/CreateJobTitlesDrawer.tsx | 2 +- .../settings/job/UpdateJobTitlesDrawer.tsx | 2 +- .../src/features/theme/ThemeWrapper.tsx | 2 +- .../projects/ProjectTimeLogDrawer.tsx | 2 +- worklenz-frontend/src/index.tsx | 2 +- .../src/layouts/AdminCenterLayout.tsx | 2 +- worklenz-frontend/src/layouts/AuthLayout.tsx | 2 +- worklenz-frontend/src/layouts/MainLayout.tsx | 2 +- .../src/layouts/ReportingLayout.tsx | 2 +- .../src/layouts/SettingsLayout.tsx | 2 +- .../src/pages/404-page/404-page.tsx | 2 +- .../pages/admin-center/overview/overview.tsx | 2 +- .../pages/admin-center/projects/projects.tsx | 2 +- .../pages/admin-center/sidebar/sidebar.tsx | 2 +- .../src/pages/admin-center/teams/teams.tsx | 2 +- .../src/pages/admin-center/users/users.tsx | 2 +- .../add-favourite-project-button.tsx | 2 +- .../recent-and-favourite-project-list.tsx | 2 +- .../home/task-list/add-task-inline-form.tsx | 2 +- .../pages/home/task-list/calendar-view.tsx | 2 +- .../src/pages/home/task-list/list-view.tsx | 2 +- .../src/pages/home/task-list/tasks-list.tsx | 2 +- .../pages/license-expired/license-expired.tsx | 2 +- .../src/pages/projects/project-list.tsx | 2 +- .../board/project-view-board.tsx | 2 +- .../roadmap/project-view-roadmap.tsx | 2 +- .../roadmap/roadmap-table/roadmap-table.tsx | 2 +- .../roadmap-table/roadmap-task-cell.tsx | 2 +- .../project-view-1/roadmap/time-filter.tsx | 2 +- .../project-view-1/task-list/table-v2.tsx | 2 +- .../task-list-columns/task-list-columns.tsx | 2 +- .../task-list/task-list-custom.tsx | 2 +- .../task-list-header/task-list-header.tsx | 2 +- .../task-list-instant-task-input.tsx | 2 +- .../task-list-table-old.tsx | 2 +- .../task-list-table-wrapper.tsx | 2 +- .../project-view-1/task-list/task-list.tsx | 2 +- .../taskList/ProjectViewTaskList.tsx | 2 +- .../statusTables/StatusGroupTables.tsx | 2 +- .../taskListFilters/GroupByFilterDropdown.tsx | 2 +- .../taskListFilters/LabelsFilterDropdown.tsx | 2 +- .../taskListFilters/MembersFilterDropdown.tsx | 2 +- .../PriorityFilterDropdown.tsx | 2 +- .../taskListFilters/SearchDropdown.tsx | 2 +- .../ShowFieldsFilterDropdown.tsx | 2 +- .../taskListFilters/SortFilterDropdown.tsx | 2 +- .../taskListFilters/TaskListFilters.tsx | 2 +- .../taskList/taskListTable/TaskListTable.tsx | 2 +- .../taskListTable/TaskListTableWrapper.tsx | 3 +- .../contextMenu/TaskContextMenu.tsx | 2 +- .../taskListTableCells/TaskCell.tsx | 2 +- .../taskListTableCells/TaskProgress.tsx | 2 +- .../taskListTableCells/TimeTracker.tsx | 2 +- .../taskListTableRows/AddSubTaskListRow.tsx | 2 +- .../taskListTableRows/AddTaskListRow.tsx | 2 +- .../updates/project-view-updates.tsx | 2 +- .../board-create-section-card.tsx | 2 +- .../board-section-card-header.tsx | 4 +-- .../board-section-card/board-section-card.tsx | 2 +- .../board-section/board-section-container.tsx | 2 +- .../board-create-sub-task-card.tsx | 2 +- .../board-sub-task-card.tsx | 2 +- .../board-view-create-task-card.tsx | 2 +- .../board-task-card/board-view-task-card.tsx | 2 +- .../projectView/files/project-view-files.tsx | 2 +- .../insights-members/insights-members.tsx | 2 +- .../tables/assigned-tasks-list.tsx | 2 +- .../tables/tasks-by-members.tsx | 2 +- .../graphs/priority-overview.tsx | 2 +- .../graphs/status-overview.tsx | 2 +- .../insights-overview/insights-overview.tsx | 2 +- .../tables/last-updated-tasks.tsx | 2 +- .../tables/project-deadline.tsx | 2 +- .../insights-tasks/insights-tasks.tsx | 2 +- .../tables/over-logged-tasks-table.tsx | 2 +- .../tables/overdue-tasks-table.tsx | 2 +- .../tables/task-completed-early-table.tsx | 2 +- .../tables/task-completed-late-table.tsx | 2 +- .../insights/member-stats/member-stats.tsx | 2 +- .../insights/project-stats/project-stats.tsx | 2 +- .../insights/project-view-insights.tsx | 2 +- .../members/project-view-members.tsx | 2 +- .../priorityTables/PriorityGroupTables.tsx | 2 +- .../context-menu/task-context-menu.tsx | 2 +- .../custom-column-label-cell.tsx | 2 +- .../custom-column-selection-cell.tsx | 2 +- .../custom-column-header.tsx | 2 +- .../add-custom-column-button.tsx | 2 +- .../formula-type-column.tsx | 2 +- .../key-type-column/key-type-column.tsx | 2 +- .../label-type-column/label-type-column.tsx | 2 +- .../formatted-type-number-column.tsx | 2 +- .../number-type-column/number-type-column.tsx | 2 +- .../percentage-type-number-column.tsx | 2 +- .../unformatted-type-number-column.tsx | 2 +- .../with-label-type-number-column.tsx | 2 +- .../selection-type-column.tsx | 2 +- .../task-list-completed-date-cell.tsx | 2 +- .../task-list-created-date-cell.tsx | 2 +- .../task-list-description-cell.tsx | 2 +- .../task-list-due-date-cell.tsx | 2 +- .../task-list-due-time-cell.tsx | 2 +- .../task-list-estimation-cell.tsx | 2 +- .../task-list-labels-cell.tsx | 2 +- .../task-list-last-updated-cell.tsx | 2 +- .../task-list-progress-cell.tsx | 2 +- .../task-list-reporter-cell.tsx | 2 +- .../task-list-start-date-cell.tsx | 2 +- .../task-list-task-cell.tsx | 4 +-- .../task-list-task-id-cell.tsx | 2 +- .../add-sub-task-list-row.tsx | 2 +- .../add-task-list-row.tsx | 2 +- .../task-list-table/task-list-table.tsx | 2 +- .../updates/ProjectViewUpdates.tsx | 2 +- .../members-reports-table.tsx | 2 +- .../tablesCells/memberCell/MemberCell.tsx | 2 +- .../tasksProgressCell/TasksProgressCell.tsx | 2 +- .../members-reports/members-reports.tsx | 2 +- .../overview-reports/overview-reports.tsx | 2 +- .../overview-reports/overview-stat-card.tsx | 2 +- .../overview-reports/overview-stats.tsx | 2 +- .../overview-table/overview-reports-table.tsx | 2 +- .../project-categories-filter-dropdown.tsx | 2 +- .../project-health-filter-dropdown.tsx | 2 +- .../project-managers-filter-dropdown.tsx | 2 +- .../project-reports-filters.tsx | 2 +- .../project-status-filter-dropdown.tsx | 2 +- .../project-table-show-fields-dropdown.tsx | 2 +- .../projects-reports-table.tsx | 2 +- .../estimated-vs-actual-cell.tsx | 2 +- .../last-activity-cell/last-activity-cell.tsx | 2 +- .../project-category-cell.tsx | 2 +- .../table-cells/project-cell/project-cell.tsx | 2 +- .../project-client-cell.tsx | 2 +- .../project-dates-cell/project-dates-cell.tsx | 2 +- .../project-days-left-and-overdue-cell.tsx | 2 +- .../project-health-cell.tsx | 2 +- .../project-manager-cell.tsx | 2 +- .../project-status-cell.tsx | 2 +- .../project-team-cell/project-team-cell.tsx | 2 +- .../project-update-cell.tsx | 2 +- .../tasks-progress-cell.tsx | 2 +- .../projects-reports/projects-reports.tsx | 2 +- .../sidebar/reporting-collapsed-button.tsx | 2 +- .../reporting/sidebar/reporting-sider.tsx | 2 +- .../project-time-sheet-chart.tsx | 2 +- .../time-sheet-table/time-sheet-table.tsx | 2 +- .../estimated-vs-actual-time-reports.tsx | 2 +- .../timeReports/members-time-reports.tsx | 2 +- .../timeReports/overview-time-reports.tsx | 2 +- .../timeReports/page-header/billable.tsx | 2 +- .../timeReports/page-header/categories.tsx | 2 +- .../timeReports/page-header/projects.tsx | 2 +- .../timeReports/page-header/team.tsx | 2 +- .../timeReports/projects-time-reports.tsx | 2 +- .../TimeReportingRightHeader.tsx | 2 +- .../src/pages/schedule-old/schedule.tsx | 2 +- .../src/pages/schedule/grant-chart.tsx | 4 +-- .../src/pages/schedule/schedule.tsx | 2 +- .../appearance/appearance-settings.tsx | 2 +- .../categories/categories-settings.tsx | 2 +- .../change-password/change-password.tsx | 2 +- .../pages/settings/clients/client-drawer.tsx | 2 +- .../settings/clients/clients-settings.tsx | 2 +- .../settings/job-titles/job-titles-drawer.tsx | 2 +- .../job-titles/job-titles-settings.tsx | 2 +- .../pages/settings/labels/labels-settings.tsx | 2 +- .../language-and-region-settings.tsx | 2 +- .../settings/profile/profile-settings.tsx | 2 +- .../project-templates-settings.tsx | 2 +- .../ProjectTemplateEditView.tsx | 2 +- .../settings/sidebar/settings-sidebar.tsx | 2 +- .../task-templates-settings.tsx | 2 +- .../team-members/team-members-settings.tsx | 2 +- .../pages/settings/teams/teams-settings.tsx | 2 +- .../src/pages/unauthorized/unauthorized.tsx | 2 +- .../src/services/alerts/alertService.ts | 2 +- .../src/services/alerts/alertSlice.ts | 2 +- worklenz-frontend/src/shared/antd-imports.ts | 34 +++++++++++++++++-- .../src/socket/socketContext.tsx | 2 +- 410 files changed, 475 insertions(+), 456 deletions(-) diff --git a/.cursor/rules/antd-components.mdc b/.cursor/rules/antd-components.mdc index 756179bd..7db5eb05 100644 --- a/.cursor/rules/antd-components.mdc +++ b/.cursor/rules/antd-components.mdc @@ -52,14 +52,14 @@ Common icons including: EditOutlined, DeleteOutlined, PlusOutlined, MoreOutlined ## Implementation Guidelines ### When Creating New Components: -1. **Always** import from `@antd-imports` or `@/shared/antd-imports` +1. **Always** import from `@/shared/antd-imports` 2. Use `appMessage` and `appNotification` for user feedback 3. Apply `antdConfig` for consistent styling 4. Use `taskManagementAntdConfig` for task-related components ### When Refactoring Existing Code: -1. Replace direct 'antd' imports with `@antd-imports` -2. Replace direct '@ant-design/icons' imports with `@antd-imports` +1. Replace direct 'antd' imports with `@/shared/antd-imports` +2. Replace direct '@ant-design/icons' imports with `@/shared/antd-imports` 3. Update any custom message/notification calls to use the utilities ### File Location diff --git a/worklenz-frontend/src/components/AuthPageHeader.tsx b/worklenz-frontend/src/components/AuthPageHeader.tsx index e48b8ce8..f3ce0d46 100644 --- a/worklenz-frontend/src/components/AuthPageHeader.tsx +++ b/worklenz-frontend/src/components/AuthPageHeader.tsx @@ -1,4 +1,4 @@ -import { Flex, Typography } from 'antd'; +import { Flex, Typography } from '@/shared/antd-imports'; import logo from '@/assets/images/worklenz-light-mode.png'; import logoDark from '@/assets/images/worklenz-dark-mode.png'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/components/CustomColordLabel.tsx b/worklenz-frontend/src/components/CustomColordLabel.tsx index 83c25281..23b03bc5 100644 --- a/worklenz-frontend/src/components/CustomColordLabel.tsx +++ b/worklenz-frontend/src/components/CustomColordLabel.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Tooltip } from 'antd'; +import { Tooltip } from '@/shared/antd-imports'; import { Label } from '@/types/task-management.types'; import { ITaskLabel } from '@/types/tasks/taskLabel.types'; diff --git a/worklenz-frontend/src/components/CustomNumberLabel.tsx b/worklenz-frontend/src/components/CustomNumberLabel.tsx index e13289aa..3a302a30 100644 --- a/worklenz-frontend/src/components/CustomNumberLabel.tsx +++ b/worklenz-frontend/src/components/CustomNumberLabel.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Tooltip } from 'antd'; +import { Tooltip } from '@/shared/antd-imports'; import { NumbersColorMap } from '@/shared/constants'; interface CustomNumberLabelProps { diff --git a/worklenz-frontend/src/components/CustomSearchbar.tsx b/worklenz-frontend/src/components/CustomSearchbar.tsx index 002a052b..cfc18946 100644 --- a/worklenz-frontend/src/components/CustomSearchbar.tsx +++ b/worklenz-frontend/src/components/CustomSearchbar.tsx @@ -1,5 +1,5 @@ import { SearchOutlined } from '@ant-design/icons'; -import { Input } from 'antd'; +import { Input } from '@/shared/antd-imports'; type CustomSearchbarProps = { placeholderText: string; diff --git a/worklenz-frontend/src/components/CustomTableTitle.tsx b/worklenz-frontend/src/components/CustomTableTitle.tsx index ed45e964..729d0e82 100644 --- a/worklenz-frontend/src/components/CustomTableTitle.tsx +++ b/worklenz-frontend/src/components/CustomTableTitle.tsx @@ -1,4 +1,4 @@ -import { Flex, Tooltip, Typography } from 'antd'; +import { Flex, Tooltip, Typography } from '@/shared/antd-imports'; import { colors } from '../styles/colors'; import { ExclamationCircleOutlined } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/components/EmptyListPlaceholder.tsx b/worklenz-frontend/src/components/EmptyListPlaceholder.tsx index 58cf691e..cb8840ad 100644 --- a/worklenz-frontend/src/components/EmptyListPlaceholder.tsx +++ b/worklenz-frontend/src/components/EmptyListPlaceholder.tsx @@ -1,4 +1,4 @@ -import { Empty, Typography } from 'antd'; +import { Empty, Typography } from '@/shared/antd-imports'; import React from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/ErrorBoundary.tsx b/worklenz-frontend/src/components/ErrorBoundary.tsx index f624214d..c64abf70 100644 --- a/worklenz-frontend/src/components/ErrorBoundary.tsx +++ b/worklenz-frontend/src/components/ErrorBoundary.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Button, Result } from 'antd'; +import { Button, Result } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import logger from '@/utils/errorLogger'; diff --git a/worklenz-frontend/src/components/ModuleErrorBoundary.tsx b/worklenz-frontend/src/components/ModuleErrorBoundary.tsx index 64c3809b..7d006bc4 100644 --- a/worklenz-frontend/src/components/ModuleErrorBoundary.tsx +++ b/worklenz-frontend/src/components/ModuleErrorBoundary.tsx @@ -1,5 +1,5 @@ import React, { Component, ErrorInfo, ReactNode } from 'react'; -import { Button, Result } from 'antd'; +import { Button, Result } from '@/shared/antd-imports'; import CacheCleanup from '@/utils/cache-cleanup'; interface Props { diff --git a/worklenz-frontend/src/components/PinRouteToNavbarButton.tsx b/worklenz-frontend/src/components/PinRouteToNavbarButton.tsx index c2e415a9..0f59fc6a 100644 --- a/worklenz-frontend/src/components/PinRouteToNavbarButton.tsx +++ b/worklenz-frontend/src/components/PinRouteToNavbarButton.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import { getJSONFromLocalStorage, saveJSONToLocalStorage } from '../utils/localStorageFunctions'; -import { Button, ConfigProvider, Tooltip } from 'antd'; +import { Button, ConfigProvider, Tooltip } from '@/shared/antd-imports'; import { PushpinFilled, PushpinOutlined } from '@ant-design/icons'; import { colors } from '../styles/colors'; import { navRoutes, NavRoutesType } from '../features/navbar/navRoutes'; diff --git a/worklenz-frontend/src/components/PreferenceSelector.tsx b/worklenz-frontend/src/components/PreferenceSelector.tsx index b908c247..6c8e4e49 100644 --- a/worklenz-frontend/src/components/PreferenceSelector.tsx +++ b/worklenz-frontend/src/components/PreferenceSelector.tsx @@ -1,4 +1,4 @@ -import { FloatButton, Space, Tooltip } from 'antd'; +import { FloatButton, Space, Tooltip } from '@/shared/antd-imports'; import { FormatPainterOutlined } from '@ant-design/icons'; // import LanguageSelector from '../features/i18n/language-selector'; // import ThemeSelector from '../features/theme/ThemeSelector'; diff --git a/worklenz-frontend/src/components/account-setup/members-step.tsx b/worklenz-frontend/src/components/account-setup/members-step.tsx index 22534f55..a3ca66b0 100644 --- a/worklenz-frontend/src/components/account-setup/members-step.tsx +++ b/worklenz-frontend/src/components/account-setup/members-step.tsx @@ -1,8 +1,8 @@ import React, { useEffect, useRef } from 'react'; -import { Form, Input, Button, List, Alert, message, InputRef } from 'antd'; +import { Form, Input, Button, List, Alert, message, InputRef } from '@/shared/antd-imports'; import { CloseCircleOutlined, MailOutlined, PlusOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; -import { Typography } from 'antd'; +import { Typography } from '@/shared/antd-imports'; import { setTeamMembers, setTasks } from '@/features/account-setup/account-setup.slice'; import { useDispatch, useSelector } from 'react-redux'; import { RootState } from '@/app/store'; diff --git a/worklenz-frontend/src/components/account-setup/organization-step.tsx b/worklenz-frontend/src/components/account-setup/organization-step.tsx index c61d1eee..ec69b999 100644 --- a/worklenz-frontend/src/components/account-setup/organization-step.tsx +++ b/worklenz-frontend/src/components/account-setup/organization-step.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useRef } from 'react'; -import { Form, Input, InputRef, Typography } from 'antd'; +import { Form, Input, InputRef, Typography } from '@/shared/antd-imports'; import { useDispatch, useSelector } from 'react-redux'; import { useTranslation } from 'react-i18next'; import { setOrganizationName } from '@/features/account-setup/account-setup.slice'; diff --git a/worklenz-frontend/src/components/account-setup/project-step.tsx b/worklenz-frontend/src/components/account-setup/project-step.tsx index 89e86ea9..1447bfd8 100644 --- a/worklenz-frontend/src/components/account-setup/project-step.tsx +++ b/worklenz-frontend/src/components/account-setup/project-step.tsx @@ -3,7 +3,7 @@ import { useSelector } from 'react-redux'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; -import { Button, Drawer, Form, Input, InputRef, Select, Typography } from 'antd'; +import { Button, Drawer, Form, Input, InputRef, Select, Typography } from '@/shared/antd-imports'; import TemplateDrawer from '../common/template-drawer/template-drawer'; import { RootState } from '@/app/store'; diff --git a/worklenz-frontend/src/components/account-setup/tasks-step.tsx b/worklenz-frontend/src/components/account-setup/tasks-step.tsx index 129e4409..fa1b34db 100644 --- a/worklenz-frontend/src/components/account-setup/tasks-step.tsx +++ b/worklenz-frontend/src/components/account-setup/tasks-step.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useRef } from 'react'; -import { Form, Input, Button, Typography, List, InputRef } from 'antd'; +import { Form, Input, Button, Typography, List, InputRef } from '@/shared/antd-imports'; import { PlusOutlined, DeleteOutlined, CloseCircleOutlined } from '@ant-design/icons'; import { useDispatch, useSelector } from 'react-redux'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/add-members-dropdown-v2/add-members-dropdown.tsx b/worklenz-frontend/src/components/add-members-dropdown-v2/add-members-dropdown.tsx index 6bfd98e7..b8924516 100644 --- a/worklenz-frontend/src/components/add-members-dropdown-v2/add-members-dropdown.tsx +++ b/worklenz-frontend/src/components/add-members-dropdown-v2/add-members-dropdown.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { Avatar, Button, Checkbox, Dropdown, Input, Menu, Typography } from 'antd'; +import { Avatar, Button, Checkbox, Dropdown, Input, Menu, Typography } from '@/shared/antd-imports'; import { UserAddOutlined, UsergroupAddOutlined } from '@ant-design/icons'; import './add-members-dropdown.css'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/components/add-members-dropdown/add-members-dropdown.tsx b/worklenz-frontend/src/components/add-members-dropdown/add-members-dropdown.tsx index b2ab8128..38b7004e 100644 --- a/worklenz-frontend/src/components/add-members-dropdown/add-members-dropdown.tsx +++ b/worklenz-frontend/src/components/add-members-dropdown/add-members-dropdown.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { Avatar, Button, Checkbox, Dropdown, Input, Menu, Typography } from 'antd'; +import { Avatar, Button, Checkbox, Dropdown, Input, Menu, Typography } from '@/shared/antd-imports'; import { PlusOutlined, UsergroupAddOutlined } from '@ant-design/icons'; import './add-members-dropdown.css'; import { AvatarNamesMap } from '../../shared/constants'; diff --git a/worklenz-frontend/src/components/admin-center/billing/billing-tables/charges-table.tsx b/worklenz-frontend/src/components/admin-center/billing/billing-tables/charges-table.tsx index 24a483f8..ef3d918c 100644 --- a/worklenz-frontend/src/components/admin-center/billing/billing-tables/charges-table.tsx +++ b/worklenz-frontend/src/components/admin-center/billing/billing-tables/charges-table.tsx @@ -2,7 +2,7 @@ import { adminCenterApiService } from '@/api/admin-center/admin-center.api.servi import { IBillingCharge, IBillingChargesResponse } from '@/types/admin-center/admin-center.types'; import logger from '@/utils/errorLogger'; import { formatDate } from '@/utils/timeUtils'; -import { Table, TableProps, Tag } from 'antd'; +import { Table, TableProps, Tag } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/admin-center/billing/billing-tables/invoices-table.tsx b/worklenz-frontend/src/components/admin-center/billing/billing-tables/invoices-table.tsx index 56290ed3..0598cff4 100644 --- a/worklenz-frontend/src/components/admin-center/billing/billing-tables/invoices-table.tsx +++ b/worklenz-frontend/src/components/admin-center/billing/billing-tables/invoices-table.tsx @@ -3,7 +3,7 @@ import { IBillingTransaction } from '@/types/admin-center/admin-center.types'; import logger from '@/utils/errorLogger'; import { formatDate } from '@/utils/timeUtils'; import { ContainerOutlined } from '@ant-design/icons'; -import { Button, Table, TableProps, Tag, Tooltip } from 'antd'; +import { Button, Table, TableProps, Tag, Tooltip } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/admin-center/billing/drawers/redeem-code-drawer/redeem-code-drawer.tsx b/worklenz-frontend/src/components/admin-center/billing/drawers/redeem-code-drawer/redeem-code-drawer.tsx index c466d24c..b4235b79 100644 --- a/worklenz-frontend/src/components/admin-center/billing/drawers/redeem-code-drawer/redeem-code-drawer.tsx +++ b/worklenz-frontend/src/components/admin-center/billing/drawers/redeem-code-drawer/redeem-code-drawer.tsx @@ -1,4 +1,4 @@ -import { Button, Drawer, Form, Input, notification, Typography } from 'antd'; +import { Button, Drawer, Form, Input, notification, Typography } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans-lkr/upgrade-plans-lkr.tsx b/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans-lkr/upgrade-plans-lkr.tsx index 2a0595c9..91e2406e 100644 --- a/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans-lkr/upgrade-plans-lkr.tsx +++ b/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans-lkr/upgrade-plans-lkr.tsx @@ -1,4 +1,4 @@ -import { Button, Card, Col, Form, Input, notification, Row, Tag, Typography } from 'antd'; +import { Button, Card, Col, Form, Input, notification, Row, Tag, Typography } from '@/shared/antd-imports'; import React, { useState } from 'react'; import './upgrade-plans-lkr.css'; import { CheckCircleFilled } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx b/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx index c6e148e3..bc592d09 100644 --- a/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx +++ b/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx @@ -459,7 +459,7 @@ const UpgradePlans = () => { {t('monthlyPlan')}} + title={{t('monthlyPlan', 'Monthly Plan')}} onClick={() => setSelectedCard(paddlePlans.MONTHLY)} >
@@ -480,16 +480,16 @@ const UpgradePlans = () => { - {t('billedMonthly')} + {t('billedMonthly', 'Billed Monthly')}
- {renderFeature(t('startupText01'))} - {renderFeature(t('startupText02'))} - {renderFeature(t('startupText03'))} - {renderFeature(t('startupText04'))} - {renderFeature(t('startupText05'))} + {renderFeature(t('startupText01', 'Unlimited Projects'))} + {renderFeature(t('startupText02', 'Unlimited Team Members'))} + {renderFeature(t('startupText03', 'Unlimited Storage'))} + {renderFeature(t('startupText04', 'Priority Support'))} + {renderFeature(t('startupText05', 'Advanced Analytics'))}
@@ -520,8 +520,8 @@ const UpgradePlans = () => { disabled={billingInfo?.plan_id === plans.annual_plan_id} > {billingInfo?.status === SUBSCRIPTION_STATUS.ACTIVE - ? t('changeToPlan', { plan: t('annualPlan') }) - : t('continueWith', { plan: t('annualPlan') })} + ? t('changeToPlan', 'Change to {{plan}}', { plan: t('annualPlan', 'Annual Plan') }) + : t('continueWith', 'Continue with {{plan}}', { plan: t('annualPlan', 'Annual Plan') })} )} {selectedPlan === paddlePlans.MONTHLY && ( @@ -533,8 +533,8 @@ const UpgradePlans = () => { disabled={billingInfo?.plan_id === plans.monthly_plan_id} > {billingInfo?.status === SUBSCRIPTION_STATUS.ACTIVE - ? t('changeToPlan', { plan: t('monthlyPlan') }) - : t('continueWith', { plan: t('monthlyPlan') })} + ? t('changeToPlan', 'Change to {{plan}}', { plan: t('monthlyPlan', 'Monthly Plan') }) + : t('continueWith', 'Continue with {{plan}}', { plan: t('monthlyPlan', 'Monthly Plan') })} )} diff --git a/worklenz-frontend/src/components/admin-center/overview/organization-admins-table/organization-admins-table.tsx b/worklenz-frontend/src/components/admin-center/overview/organization-admins-table/organization-admins-table.tsx index 4e757d28..b563f9e7 100644 --- a/worklenz-frontend/src/components/admin-center/overview/organization-admins-table/organization-admins-table.tsx +++ b/worklenz-frontend/src/components/admin-center/overview/organization-admins-table/organization-admins-table.tsx @@ -1,4 +1,4 @@ -import { Table, TableProps, Typography } from 'antd'; +import { Table, TableProps, Typography } from '@/shared/antd-imports'; import React, { useMemo } from 'react'; import { IOrganizationAdmin } from '@/types/admin-center/admin-center.types'; diff --git a/worklenz-frontend/src/components/admin-center/overview/organization-name/organization-name.tsx b/worklenz-frontend/src/components/admin-center/overview/organization-name/organization-name.tsx index 0a4a6b46..41ed592c 100644 --- a/worklenz-frontend/src/components/admin-center/overview/organization-name/organization-name.tsx +++ b/worklenz-frontend/src/components/admin-center/overview/organization-name/organization-name.tsx @@ -1,7 +1,7 @@ import { adminCenterApiService } from '@/api/admin-center/admin-center.api.service'; import logger from '@/utils/errorLogger'; import { EnterOutlined, EditOutlined } from '@ant-design/icons'; -import { Card, Button, Tooltip, Typography } from 'antd'; +import { Card, Button, Tooltip, Typography } from '@/shared/antd-imports'; import TextArea from 'antd/es/input/TextArea'; import Paragraph from 'antd/es/typography/Paragraph'; import { TFunction } from 'i18next'; diff --git a/worklenz-frontend/src/components/admin-center/overview/organization-owner/organization-owner.tsx b/worklenz-frontend/src/components/admin-center/overview/organization-owner/organization-owner.tsx index 505f8f03..de73841c 100644 --- a/worklenz-frontend/src/components/admin-center/overview/organization-owner/organization-owner.tsx +++ b/worklenz-frontend/src/components/admin-center/overview/organization-owner/organization-owner.tsx @@ -2,7 +2,7 @@ import { adminCenterApiService } from '@/api/admin-center/admin-center.api.servi import { IOrganization } from '@/types/admin-center/admin-center.types'; import logger from '@/utils/errorLogger'; import { MailOutlined, PhoneOutlined, EditOutlined } from '@ant-design/icons'; -import { Card, Tooltip, Input, Button, Typography, InputRef } from 'antd'; +import { Card, Tooltip, Input, Button, Typography, InputRef } from '@/shared/antd-imports'; import { TFunction } from 'i18next'; import { useEffect, useRef, useState } from 'react'; diff --git a/worklenz-frontend/src/components/admin-center/teams/add-team-drawer/add-team-drawer.tsx b/worklenz-frontend/src/components/admin-center/teams/add-team-drawer/add-team-drawer.tsx index 06a24da3..9626e09b 100644 --- a/worklenz-frontend/src/components/admin-center/teams/add-team-drawer/add-team-drawer.tsx +++ b/worklenz-frontend/src/components/admin-center/teams/add-team-drawer/add-team-drawer.tsx @@ -1,5 +1,5 @@ import React, { useRef, useState } from 'react'; -import { Button, Drawer, Form, Input, InputRef, Typography } from 'antd'; +import { Button, Drawer, Form, Input, InputRef, Typography } from '@/shared/antd-imports'; import { fetchTeams } from '@features/teams/teamSlice'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/admin-center/teams/settings-drawer/settings-drawer.tsx b/worklenz-frontend/src/components/admin-center/teams/settings-drawer/settings-drawer.tsx index ff8e8bc0..148899b7 100644 --- a/worklenz-frontend/src/components/admin-center/teams/settings-drawer/settings-drawer.tsx +++ b/worklenz-frontend/src/components/admin-center/teams/settings-drawer/settings-drawer.tsx @@ -11,7 +11,7 @@ import { TableProps, Typography, Tooltip, -} from 'antd'; +} from '@/shared/antd-imports'; import React, { useState } from 'react'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import './settings-drawer.css'; diff --git a/worklenz-frontend/src/components/admin-center/teams/teams-table/teams-table.tsx b/worklenz-frontend/src/components/admin-center/teams/teams-table/teams-table.tsx index 91748681..d861dd48 100644 --- a/worklenz-frontend/src/components/admin-center/teams/teams-table/teams-table.tsx +++ b/worklenz-frontend/src/components/admin-center/teams/teams-table/teams-table.tsx @@ -6,7 +6,7 @@ import { useAppDispatch } from '@/hooks/useAppDispatch'; import { IOrganizationTeam } from '@/types/admin-center/admin-center.types'; import logger from '@/utils/errorLogger'; import { SettingOutlined, DeleteOutlined } from '@ant-design/icons'; -import { Badge, Button, Card, Popconfirm, Table, TableProps, Tooltip, Typography } from 'antd'; +import { Badge, Button, Card, Popconfirm, Table, TableProps, Tooltip, Typography } from '@/shared/antd-imports'; import { TFunction } from 'i18next'; import { useState } from 'react'; import { useMediaQuery } from 'react-responsive'; diff --git a/worklenz-frontend/src/components/avatars/avatars.tsx b/worklenz-frontend/src/components/avatars/avatars.tsx index bd3b160e..f33cdf6c 100644 --- a/worklenz-frontend/src/components/avatars/avatars.tsx +++ b/worklenz-frontend/src/components/avatars/avatars.tsx @@ -1,4 +1,4 @@ -import { Avatar, Tooltip } from 'antd'; +import { Avatar, Tooltip } from '@/shared/antd-imports'; import React, { useCallback, useMemo } from 'react'; import { InlineMember } from '@/types/teamMembers/inlineMember.types'; diff --git a/worklenz-frontend/src/components/board/changeCategoryDropdown/ChangeCategoryDropdown.tsx b/worklenz-frontend/src/components/board/changeCategoryDropdown/ChangeCategoryDropdown.tsx index 3e577c2e..0be131a3 100644 --- a/worklenz-frontend/src/components/board/changeCategoryDropdown/ChangeCategoryDropdown.tsx +++ b/worklenz-frontend/src/components/board/changeCategoryDropdown/ChangeCategoryDropdown.tsx @@ -1,4 +1,4 @@ -import { Badge, Card, Dropdown, Flex, Menu, MenuProps } from 'antd'; +import { Badge, Card, Dropdown, Flex, Menu, MenuProps } from '@/shared/antd-imports'; import React from 'react'; import { TaskStatusType } from '../../../types/task.types'; import { colors } from '../../../styles/colors'; diff --git a/worklenz-frontend/src/components/board/common-members-section/common-members-section.tsx b/worklenz-frontend/src/components/board/common-members-section/common-members-section.tsx index b4aca42f..a34fd64c 100644 --- a/worklenz-frontend/src/components/board/common-members-section/common-members-section.tsx +++ b/worklenz-frontend/src/components/board/common-members-section/common-members-section.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useRef, useState } from 'react'; -import { Button, Dropdown, Input, InputRef, MenuProps, Typography } from 'antd'; +import { Button, Dropdown, Input, InputRef, MenuProps, Typography } from '@/shared/antd-imports'; import { DeleteOutlined, EditOutlined, diff --git a/worklenz-frontend/src/components/board/common-phase-section/common-phase-section.tsx b/worklenz-frontend/src/components/board/common-phase-section/common-phase-section.tsx index 54e5dd9c..7d241f70 100644 --- a/worklenz-frontend/src/components/board/common-phase-section/common-phase-section.tsx +++ b/worklenz-frontend/src/components/board/common-phase-section/common-phase-section.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useRef, useState } from 'react'; -import { Button, Dropdown, Input, InputRef, MenuProps, Typography } from 'antd'; +import { Button, Dropdown, Input, InputRef, MenuProps, Typography } from '@/shared/antd-imports'; import { DeleteOutlined, EditOutlined, diff --git a/worklenz-frontend/src/components/board/common-priority-section/common-priority-section.tsx b/worklenz-frontend/src/components/board/common-priority-section/common-priority-section.tsx index d718acfd..ce1661c6 100644 --- a/worklenz-frontend/src/components/board/common-priority-section/common-priority-section.tsx +++ b/worklenz-frontend/src/components/board/common-priority-section/common-priority-section.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useRef, useState } from 'react'; -import { Button, Dropdown, Input, InputRef, MenuProps, Typography } from 'antd'; +import { Button, Dropdown, Input, InputRef, MenuProps, Typography } from '@/shared/antd-imports'; import { DeleteOutlined, EditOutlined, diff --git a/worklenz-frontend/src/components/board/commonStatusSection/CommonStatusSection.tsx b/worklenz-frontend/src/components/board/commonStatusSection/CommonStatusSection.tsx index bcb67b73..a51ba511 100644 --- a/worklenz-frontend/src/components/board/commonStatusSection/CommonStatusSection.tsx +++ b/worklenz-frontend/src/components/board/commonStatusSection/CommonStatusSection.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useRef, useState } from 'react'; -import { Button, Dropdown, Input, InputRef, MenuProps, Typography } from 'antd'; +import { Button, Dropdown, Input, InputRef, MenuProps, Typography } from '@/shared/antd-imports'; import { DeleteOutlined, EditOutlined, diff --git a/worklenz-frontend/src/components/board/custom-avatar-group.tsx b/worklenz-frontend/src/components/board/custom-avatar-group.tsx index 74668782..a69133e6 100644 --- a/worklenz-frontend/src/components/board/custom-avatar-group.tsx +++ b/worklenz-frontend/src/components/board/custom-avatar-group.tsx @@ -1,4 +1,4 @@ -import { Button, Flex } from 'antd'; +import { Button, Flex } from '@/shared/antd-imports'; import AddMembersDropdown from '@/components/add-members-dropdown/add-members-dropdown'; import Avatars from '../avatars/avatars'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; diff --git a/worklenz-frontend/src/components/board/custom-due-date-picker.tsx b/worklenz-frontend/src/components/board/custom-due-date-picker.tsx index 5f5a25b0..9ca32744 100644 --- a/worklenz-frontend/src/components/board/custom-due-date-picker.tsx +++ b/worklenz-frontend/src/components/board/custom-due-date-picker.tsx @@ -1,5 +1,5 @@ import React, { useState, useRef } from 'react'; -import { DatePicker, Button, Flex } from 'antd'; +import { DatePicker, Button, Flex } from '@/shared/antd-imports'; import { CalendarOutlined } from '@ant-design/icons'; import dayjs, { Dayjs } from 'dayjs'; import { useSocket } from '@/socket/socketContext'; diff --git a/worklenz-frontend/src/components/board/kanban-group/kanban-group.tsx b/worklenz-frontend/src/components/board/kanban-group/kanban-group.tsx index c9e402b2..0b9b6f9a 100644 --- a/worklenz-frontend/src/components/board/kanban-group/kanban-group.tsx +++ b/worklenz-frontend/src/components/board/kanban-group/kanban-group.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useRef, useState } from 'react'; -import { Button, Dropdown, Input, InputRef, MenuProps, Typography } from 'antd'; +import { Button, Dropdown, Input, InputRef, MenuProps, Typography } from '@/shared/antd-imports'; import { DeleteOutlined, EditOutlined, diff --git a/worklenz-frontend/src/components/board/subTaskCard/SubTaskCard.tsx b/worklenz-frontend/src/components/board/subTaskCard/SubTaskCard.tsx index 09adcc50..1076d82e 100644 --- a/worklenz-frontend/src/components/board/subTaskCard/SubTaskCard.tsx +++ b/worklenz-frontend/src/components/board/subTaskCard/SubTaskCard.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react'; -import { Avatar, Col, DatePicker, Divider, Flex, Row, Tooltip, Typography } from 'antd'; +import { Avatar, Col, DatePicker, Divider, Flex, Row, Tooltip, Typography } from '@/shared/antd-imports'; import StatusDropdown from '../../taskListCommon/statusDropdown/StatusDropdown'; import dayjs, { Dayjs } from 'dayjs'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/board/taskCard/TaskCard.tsx b/worklenz-frontend/src/components/board/taskCard/TaskCard.tsx index fe6651f1..6c8475ba 100644 --- a/worklenz-frontend/src/components/board/taskCard/TaskCard.tsx +++ b/worklenz-frontend/src/components/board/taskCard/TaskCard.tsx @@ -9,7 +9,7 @@ import { Dropdown, MenuProps, Button, -} from 'antd'; +} from '@/shared/antd-imports'; import { DoubleRightOutlined, PauseOutlined, diff --git a/worklenz-frontend/src/components/board/taskCard/priority-section/priority-section.tsx b/worklenz-frontend/src/components/board/taskCard/priority-section/priority-section.tsx index deb1cc7c..754279a7 100644 --- a/worklenz-frontend/src/components/board/taskCard/priority-section/priority-section.tsx +++ b/worklenz-frontend/src/components/board/taskCard/priority-section/priority-section.tsx @@ -1,4 +1,4 @@ -import { Flex, Typography } from 'antd'; +import { Flex, Typography } from '@/shared/antd-imports'; import './priority-section.css'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useState, useEffect, useMemo } from 'react'; diff --git a/worklenz-frontend/src/components/board/taskCreateCard/TaskCreateCard.tsx b/worklenz-frontend/src/components/board/taskCreateCard/TaskCreateCard.tsx index d7cab6ce..c72efe23 100644 --- a/worklenz-frontend/src/components/board/taskCreateCard/TaskCreateCard.tsx +++ b/worklenz-frontend/src/components/board/taskCreateCard/TaskCreateCard.tsx @@ -1,4 +1,4 @@ -import { Avatar, Button, DatePicker, Input, InputRef } from 'antd'; +import { Avatar, Button, DatePicker, Input, InputRef } from '@/shared/antd-imports'; import React, { forwardRef, useEffect, useRef, useState } from 'react'; import AddMembersDropdown from '../../add-members-dropdown/add-members-dropdown'; import dayjs, { Dayjs } from 'dayjs'; diff --git a/worklenz-frontend/src/components/board/taskCreateCard/priority-task-create-card.tsx b/worklenz-frontend/src/components/board/taskCreateCard/priority-task-create-card.tsx index f7f86a22..fbde3a28 100644 --- a/worklenz-frontend/src/components/board/taskCreateCard/priority-task-create-card.tsx +++ b/worklenz-frontend/src/components/board/taskCreateCard/priority-task-create-card.tsx @@ -1,4 +1,4 @@ -import { Avatar, Button, DatePicker, Input, InputRef } from 'antd'; +import { Avatar, Button, DatePicker, Input, InputRef } from '@/shared/antd-imports'; import React, { forwardRef, useEffect, useRef, useState } from 'react'; import AddMembersDropdown from '../../add-members-dropdown/add-members-dropdown'; import dayjs, { Dayjs } from 'dayjs'; diff --git a/worklenz-frontend/src/components/calendars/homeCalendar/HomeCalendar.tsx b/worklenz-frontend/src/components/calendars/homeCalendar/HomeCalendar.tsx index dcf50dda..44145520 100644 --- a/worklenz-frontend/src/components/calendars/homeCalendar/HomeCalendar.tsx +++ b/worklenz-frontend/src/components/calendars/homeCalendar/HomeCalendar.tsx @@ -1,4 +1,4 @@ -import { Calendar } from 'antd'; +import { Calendar } from '@/shared/antd-imports'; import React, { useEffect } from 'react'; import type { Dayjs } from 'dayjs'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/charts/LazyChartComponents.tsx b/worklenz-frontend/src/components/charts/LazyChartComponents.tsx index 3a170a7b..3a606acb 100644 --- a/worklenz-frontend/src/components/charts/LazyChartComponents.tsx +++ b/worklenz-frontend/src/components/charts/LazyChartComponents.tsx @@ -1,5 +1,5 @@ import { lazy, Suspense } from 'react'; -import { Spin } from 'antd'; +import { Spin } from '@/shared/antd-imports'; // Lazy load Chart.js components const LazyBarChart = lazy(() => diff --git a/worklenz-frontend/src/components/charts/chart-loader.tsx b/worklenz-frontend/src/components/charts/chart-loader.tsx index 142b8e2d..85f07765 100644 --- a/worklenz-frontend/src/components/charts/chart-loader.tsx +++ b/worklenz-frontend/src/components/charts/chart-loader.tsx @@ -1,5 +1,5 @@ import React, { Suspense } from 'react'; -import { Spin } from 'antd'; +import { Spin } from '@/shared/antd-imports'; // Lazy load chart components to reduce initial bundle size const LazyBar = React.lazy(() => diff --git a/worklenz-frontend/src/components/common/invite-team-members/invite-team-members.tsx b/worklenz-frontend/src/components/common/invite-team-members/invite-team-members.tsx index b71e4d65..da36593d 100644 --- a/worklenz-frontend/src/components/common/invite-team-members/invite-team-members.tsx +++ b/worklenz-frontend/src/components/common/invite-team-members/invite-team-members.tsx @@ -1,4 +1,4 @@ -import { AutoComplete, Button, Drawer, Flex, Form, message, Select, Spin, Typography } from 'antd'; +import { AutoComplete, Button, Drawer, Flex, Form, message, Select, Spin, Typography } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { diff --git a/worklenz-frontend/src/components/common/single-avatar/single-avatar.tsx b/worklenz-frontend/src/components/common/single-avatar/single-avatar.tsx index d6886d7f..b9d0447d 100644 --- a/worklenz-frontend/src/components/common/single-avatar/single-avatar.tsx +++ b/worklenz-frontend/src/components/common/single-avatar/single-avatar.tsx @@ -1,5 +1,5 @@ import { AvatarNamesMap } from '@/shared/constants'; -import { Avatar, Flex, Space } from 'antd'; +import { Avatar, Flex, Space } from '@/shared/antd-imports'; interface SingleAvatarProps { avatarUrl?: string; diff --git a/worklenz-frontend/src/components/common/template-drawer/template-drawer.tsx b/worklenz-frontend/src/components/common/template-drawer/template-drawer.tsx index 3dd9dd75..e6afa440 100644 --- a/worklenz-frontend/src/components/common/template-drawer/template-drawer.tsx +++ b/worklenz-frontend/src/components/common/template-drawer/template-drawer.tsx @@ -1,4 +1,4 @@ -import type { MenuProps } from 'antd'; +import type { MenuProps } from '@/shared/antd-imports'; import { Empty, List, @@ -10,8 +10,7 @@ import { Image, Input, Flex, - Button, -} from 'antd'; +} from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; import { useSelector } from 'react-redux'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/common/tooltip-wrapper/tooltip-wrapper.tsx b/worklenz-frontend/src/components/common/tooltip-wrapper/tooltip-wrapper.tsx index ab9d1504..83c55127 100644 --- a/worklenz-frontend/src/components/common/tooltip-wrapper/tooltip-wrapper.tsx +++ b/worklenz-frontend/src/components/common/tooltip-wrapper/tooltip-wrapper.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Tooltip, TooltipProps } from 'antd'; +import { Tooltip, TooltipProps } from '@/shared/antd-imports'; interface TooltipWrapperProps extends Omit { children: React.ReactElement; diff --git a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanBoard.tsx b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanBoard.tsx index b048744e..e98073f9 100644 --- a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanBoard.tsx +++ b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanBoard.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState, useMemo } from 'react'; import { useSelector, useDispatch } from 'react-redux'; -import { Card, Spin, Empty } from 'antd'; +import { Card, Spin, Empty } from '@/shared/antd-imports'; import { DndContext, DragOverlay, diff --git a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateSection.tsx b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateSection.tsx index eb9b87cc..530ee0c6 100644 --- a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateSection.tsx +++ b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateSection.tsx @@ -1,5 +1,5 @@ import React, { useState, useRef, useEffect, useMemo } from 'react'; -import { Button, Flex } from 'antd'; +import { Button, Flex } from '@/shared/antd-imports'; import { PlusOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; import { nanoid } from '@reduxjs/toolkit'; diff --git a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateSubtaskCard.tsx b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateSubtaskCard.tsx index e15044b9..43440a2a 100644 --- a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateSubtaskCard.tsx +++ b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateSubtaskCard.tsx @@ -1,4 +1,4 @@ -import { Flex, Input, InputRef } from 'antd'; +import { Flex, Input, InputRef } from '@/shared/antd-imports'; import React, { useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateTaskCard.tsx b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateTaskCard.tsx index f677c4bc..f3147149 100644 --- a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateTaskCard.tsx +++ b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateTaskCard.tsx @@ -1,5 +1,5 @@ import React, { useRef, useState, useEffect } from 'react'; -import { Button, Flex, Input, InputRef } from 'antd'; +import { Button, Flex, Input, InputRef } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { nanoid } from '@reduxjs/toolkit'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanGroup.tsx b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanGroup.tsx index 86b98521..d9e5d24a 100644 --- a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanGroup.tsx +++ b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanGroup.tsx @@ -12,7 +12,7 @@ import EnhancedKanbanTaskCard from './EnhancedKanbanTaskCard'; import VirtualizedTaskList from './VirtualizedTaskList'; import { useAppSelector } from '@/hooks/useAppSelector'; import './EnhancedKanbanGroup.css'; -import { Badge, Flex, InputRef, MenuProps, Popconfirm } from 'antd'; +import { Badge, Flex, InputRef, MenuProps, Popconfirm } from '@/shared/antd-imports'; import { themeWiseColor } from '@/utils/themeWiseColor'; import useIsProjectManager from '@/hooks/useIsProjectManager'; import { useAuthService } from '@/hooks/useAuth'; @@ -25,11 +25,11 @@ import { MoreOutlined, } from '@ant-design/icons/lib/icons'; import { colors } from '@/styles/colors'; -import { Input } from 'antd'; -import { Tooltip } from 'antd'; -import { Typography } from 'antd'; -import { Dropdown } from 'antd'; -import { Button } from 'antd'; +import { Input } from '@/shared/antd-imports'; +import { Tooltip } from '@/shared/antd-imports'; +import { Typography } from '@/shared/antd-imports'; +import { Dropdown } from '@/shared/antd-imports'; +import { Button } from '@/shared/antd-imports'; import { PlusOutlined } from '@ant-design/icons/lib/icons'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanTaskCard.tsx b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanTaskCard.tsx index c431b321..0fa3f73a 100644 --- a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanTaskCard.tsx +++ b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanTaskCard.tsx @@ -23,9 +23,9 @@ import { fetchBoardSubTasks, toggleTaskExpansion, } from '@/features/enhanced-kanban/enhanced-kanban.slice'; -import { Divider } from 'antd'; -import { List } from 'antd'; -import { Skeleton } from 'antd'; +import { Divider } from '@/shared/antd-imports'; +import { List } from '@/shared/antd-imports'; +import { Skeleton } from '@/shared/antd-imports'; import { PlusOutlined } from '@ant-design/icons'; import BoardSubTaskCard from '@/pages/projects/projectView/board/board-section/board-sub-task-card/board-sub-task-card'; import BoardCreateSubtaskCard from '@/pages/projects/projectView/board/board-section/board-sub-task-card/board-create-sub-task-card'; diff --git a/worklenz-frontend/src/components/home-tasks/statusDropdown/home-tasks-status-dropdown.tsx b/worklenz-frontend/src/components/home-tasks/statusDropdown/home-tasks-status-dropdown.tsx index 424d3388..245dfbe6 100644 --- a/worklenz-frontend/src/components/home-tasks/statusDropdown/home-tasks-status-dropdown.tsx +++ b/worklenz-frontend/src/components/home-tasks/statusDropdown/home-tasks-status-dropdown.tsx @@ -1,4 +1,4 @@ -import { Badge, Flex, Select } from 'antd'; +import { Badge, Flex, Select } from '@/shared/antd-imports'; import './home-tasks-status-dropdown.css'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/home-tasks/taskDatePicker/home-tasks-date-picker.tsx b/worklenz-frontend/src/components/home-tasks/taskDatePicker/home-tasks-date-picker.tsx index 37f4d5a3..3e1ff724 100644 --- a/worklenz-frontend/src/components/home-tasks/taskDatePicker/home-tasks-date-picker.tsx +++ b/worklenz-frontend/src/components/home-tasks/taskDatePicker/home-tasks-date-picker.tsx @@ -1,6 +1,6 @@ import { useSocket } from '@/socket/socketContext'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; -import { DatePicker } from 'antd'; +import { DatePicker } from '@/shared/antd-imports'; import dayjs from 'dayjs'; import calendar from 'dayjs/plugin/calendar'; import { SocketEvents } from '@/shared/socket-events'; diff --git a/worklenz-frontend/src/components/kanban-board-management-v2/kanbanGroup.tsx b/worklenz-frontend/src/components/kanban-board-management-v2/kanbanGroup.tsx index 98f57505..3e8ce29d 100644 --- a/worklenz-frontend/src/components/kanban-board-management-v2/kanbanGroup.tsx +++ b/worklenz-frontend/src/components/kanban-board-management-v2/kanbanGroup.tsx @@ -1,7 +1,7 @@ import React, { useState } from 'react'; import { useDroppable } from '@dnd-kit/core'; import { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable'; -import { Button, Typography } from 'antd'; +import { Button, Typography } from '@/shared/antd-imports'; import { PlusOutlined, MenuOutlined } from '@ant-design/icons'; import { ITaskListGroup } from '@/types/tasks/taskList.types'; import { IGroupBy } from '@/features/tasks/tasks.slice'; diff --git a/worklenz-frontend/src/components/kanban-board-management-v2/kanbanTaskCard.tsx b/worklenz-frontend/src/components/kanban-board-management-v2/kanbanTaskCard.tsx index 766fbfce..1356e3ae 100644 --- a/worklenz-frontend/src/components/kanban-board-management-v2/kanbanTaskCard.tsx +++ b/worklenz-frontend/src/components/kanban-board-management-v2/kanbanTaskCard.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { useSortable } from '@dnd-kit/sortable'; import { CSS } from '@dnd-kit/utilities'; -import { Avatar, Tag, Progress, Typography, Button, Tooltip, Space } from 'antd'; +import { Avatar, Tag, Progress, Typography, Button, Tooltip, Space } from '@/shared/antd-imports'; import { HolderOutlined, MessageOutlined, diff --git a/worklenz-frontend/src/components/kanban-board-management-v2/kanbanTaskListBoard.tsx b/worklenz-frontend/src/components/kanban-board-management-v2/kanbanTaskListBoard.tsx index 314f0f72..9ea40133 100644 --- a/worklenz-frontend/src/components/kanban-board-management-v2/kanbanTaskListBoard.tsx +++ b/worklenz-frontend/src/components/kanban-board-management-v2/kanbanTaskListBoard.tsx @@ -17,18 +17,13 @@ import { SortableContext, sortableKeyboardCoordinates, } from '@dnd-kit/sortable'; -import { Card, Spin, Empty, Flex } from 'antd'; +import { Card, Spin, Empty } from '@/shared/antd-imports'; import { RootState } from '@/app/store'; -import { IGroupBy, setGroup, fetchTaskGroups, reorderTasks } from '@/features/tasks/tasks.slice'; +import { fetchTaskGroups, reorderTasks } from '@/features/tasks/tasks.slice'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; import { AppDispatch } from '@/app/store'; -import BoardSectionCard from '@/pages/projects/projectView/board/board-section/board-section-card/board-section-card'; -import BoardCreateSectionCard from '@/pages/projects/projectView/board/board-section/board-section-card/board-create-section-card'; -import { useAuthService } from '@/hooks/useAuth'; +import { useAuthService } from '@/hooks/useAuth'; import useIsProjectManager from '@/hooks/useIsProjectManager'; -import BoardViewTaskCard from '@/pages/projects/projectView/board/board-section/board-task-card/board-view-task-card'; -import TaskGroup from '../task-management/TaskGroup'; -import TaskRow from '../task-management/TaskRow'; import KanbanGroup from './kanbanGroup'; import KanbanTaskCard from './kanbanTaskCard'; import SortableKanbanGroup from './SortableKanbanGroup'; diff --git a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notfication-drawer.tsx b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notfication-drawer.tsx index 4f6d7201..44c761db 100644 --- a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notfication-drawer.tsx +++ b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notfication-drawer.tsx @@ -1,4 +1,4 @@ -import { Drawer, Empty, Segmented, Typography, Spin, Button, Flex } from 'antd'; +import { Drawer, Empty, Segmented, Typography, Spin, Button, Flex } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-button.tsx b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-button.tsx index c78731c4..43a5c621 100644 --- a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-button.tsx +++ b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-button.tsx @@ -1,5 +1,5 @@ import { BellOutlined } from '@ant-design/icons'; -import { Badge, Button, Tooltip } from 'antd'; +import { Badge, Button, Tooltip } from '@/shared/antd-imports'; import { toggleDrawer } from '@features/navbar/notificationSlice'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-item.tsx b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-item.tsx index abbc0721..e6591ab7 100644 --- a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-item.tsx +++ b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-item.tsx @@ -1,6 +1,6 @@ import { IWorklenzNotification } from '@/types/notifications/notifications.types'; import { BankOutlined } from '@ant-design/icons'; -import { Button, Tag, Typography, theme } from 'antd'; +import { Button, Tag, Typography, theme } from '@/shared/antd-imports'; import DOMPurify from 'dompurify'; import React, { useState } from 'react'; import { fromNow } from '@/utils/dateUtils'; diff --git a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-template.tsx b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-template.tsx index 17b7fe91..bbbe03e2 100644 --- a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-template.tsx +++ b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-template.tsx @@ -1,4 +1,4 @@ -import { Button, Typography, Tag } from 'antd'; +import { Button, Typography, Tag } from '@/shared/antd-imports'; import { BankOutlined } from '@ant-design/icons'; import { IWorklenzNotification } from '@/types/notifications/notifications.types'; import { useNavigate } from 'react-router-dom'; diff --git a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/push-notification-template.tsx b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/push-notification-template.tsx index 05575285..7465ff26 100644 --- a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/push-notification-template.tsx +++ b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/push-notification-template.tsx @@ -1,4 +1,4 @@ -import { notification } from 'antd'; +import { notification } from '@/shared/antd-imports'; import { IWorklenzNotification } from '@/types/notifications/notifications.types'; import { teamsApiService } from '@/api/teams/teams.api.service'; import { toQueryString } from '@/utils/toQueryString'; diff --git a/worklenz-frontend/src/components/project-list/project-group/project-group-list.tsx b/worklenz-frontend/src/components/project-list/project-group/project-group-list.tsx index bb07669d..208802d8 100644 --- a/worklenz-frontend/src/components/project-list/project-group/project-group-list.tsx +++ b/worklenz-frontend/src/components/project-list/project-group/project-group-list.tsx @@ -10,10 +10,9 @@ import { Tooltip, Badge, Space, - Avatar, theme, Divider, -} from 'antd'; +} from '@/shared/antd-imports'; import { ClockCircleOutlined, TeamOutlined, diff --git a/worklenz-frontend/src/components/project-list/project-list-table/project-list-actions/project-list-actions.tsx b/worklenz-frontend/src/components/project-list/project-list-table/project-list-actions/project-list-actions.tsx index c447ddeb..fe69580a 100644 --- a/worklenz-frontend/src/components/project-list/project-list-table/project-list-actions/project-list-actions.tsx +++ b/worklenz-frontend/src/components/project-list/project-list-table/project-list-actions/project-list-actions.tsx @@ -11,11 +11,10 @@ import { } from '@/features/projects/projectsSlice'; import { useAppSelector } from '@/hooks/useAppSelector'; import useIsProjectManager from '@/hooks/useIsProjectManager'; -import { useAuthService } from '@/hooks/useAuth'; import { IProjectViewModel } from '@/types/project/projectViewModel.types'; import logger from '@/utils/errorLogger'; import { SettingOutlined, InboxOutlined } from '@ant-design/icons'; -import { Tooltip, Button, Popconfirm, Space } from 'antd'; +import { Tooltip, Button, Popconfirm, Space } from '@/shared/antd-imports'; import { evt_projects_archive, evt_projects_archive_all, diff --git a/worklenz-frontend/src/components/project-list/project-list-table/project-list-category/project-list-category.tsx b/worklenz-frontend/src/components/project-list/project-list-table/project-list-category/project-list-category.tsx index 240267b9..07bc22b5 100644 --- a/worklenz-frontend/src/components/project-list/project-list-table/project-list-category/project-list-category.tsx +++ b/worklenz-frontend/src/components/project-list/project-list-table/project-list-category/project-list-category.tsx @@ -1,5 +1,5 @@ import { IProjectViewModel } from '@/types/project/projectViewModel.types'; -import { Tooltip, Tag } from 'antd'; +import { Tooltip, Tag } from '@/shared/antd-imports'; import { TFunction } from 'i18next'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { setFilteredCategories, setRequestParams } from '@/features/projects/projectsSlice'; diff --git a/worklenz-frontend/src/components/project-list/project-list-table/project-list-favorite/project-rate-cell.tsx b/worklenz-frontend/src/components/project-list/project-list-table/project-list-favorite/project-rate-cell.tsx index c7e9ff89..64723387 100644 --- a/worklenz-frontend/src/components/project-list/project-list-table/project-list-favorite/project-rate-cell.tsx +++ b/worklenz-frontend/src/components/project-list/project-list-table/project-list-favorite/project-rate-cell.tsx @@ -8,7 +8,7 @@ import { useAppSelector } from '@/hooks/useAppSelector'; import { colors } from '@/styles/colors'; import { IProjectViewModel } from '@/types/project/projectViewModel.types'; import { StarFilled } from '@ant-design/icons'; -import { Button, ConfigProvider, Tooltip } from 'antd'; +import { Button, ConfigProvider, Tooltip } from '@/shared/antd-imports'; import { TFunction } from 'i18next'; import { useCallback, useMemo } from 'react'; diff --git a/worklenz-frontend/src/components/project-list/project-list-table/project-list-progress/progress-list-progress.tsx b/worklenz-frontend/src/components/project-list/project-list-table/project-list-progress/progress-list-progress.tsx index 1be0b55d..7f2ce1bd 100644 --- a/worklenz-frontend/src/components/project-list/project-list-table/project-list-progress/progress-list-progress.tsx +++ b/worklenz-frontend/src/components/project-list/project-list-table/project-list-progress/progress-list-progress.tsx @@ -1,6 +1,6 @@ import { IProjectViewModel } from '@/types/project/projectViewModel.types'; import { getTaskProgressTitle } from '@/utils/project-list-utils'; -import { Tooltip, Progress } from 'antd'; +import { Tooltip, Progress } from '@/shared/antd-imports'; export const ProgressListProgress: React.FC<{ record: IProjectViewModel }> = ({ record }) => { return ( diff --git a/worklenz-frontend/src/components/project-list/project-list-table/project-list-updated-at/project-list-updated.tsx b/worklenz-frontend/src/components/project-list/project-list-table/project-list-updated-at/project-list-updated.tsx index bd0c7b5a..51257d84 100644 --- a/worklenz-frontend/src/components/project-list/project-list-table/project-list-updated-at/project-list-updated.tsx +++ b/worklenz-frontend/src/components/project-list/project-list-table/project-list-updated-at/project-list-updated.tsx @@ -1,7 +1,7 @@ import { IProjectViewModel } from '@/types/project/projectViewModel.types'; import { calculateTimeDifference } from '@/utils/calculate-time-difference'; import { formatDateTimeWithLocale } from '@/utils/format-date-time-with-locale'; -import { Tooltip } from 'antd'; +import { Tooltip } from '@/shared/antd-imports'; export const ProjectListUpdatedAt: React.FC<{ record: IProjectViewModel }> = ({ record }) => { return ( diff --git a/worklenz-frontend/src/components/project-list/project-list-table/project-name/project-name-cell.tsx b/worklenz-frontend/src/components/project-list/project-list-table/project-name/project-name-cell.tsx index 25a948ae..27a66287 100644 --- a/worklenz-frontend/src/components/project-list/project-list-table/project-name/project-name-cell.tsx +++ b/worklenz-frontend/src/components/project-list/project-list-table/project-name/project-name-cell.tsx @@ -7,7 +7,7 @@ import { useAppSelector } from '@/hooks/useAppSelector'; import { IProjectViewModel } from '@/types/project/projectViewModel.types'; import { formatDateRange } from '@/utils/project-list-utils'; import { CalendarOutlined } from '@ant-design/icons'; -import { Badge, Tooltip } from 'antd'; +import { Badge, Tooltip } from '@/shared/antd-imports'; import { TFunction } from 'i18next'; import { NavigateFunction } from 'react-router-dom'; diff --git a/worklenz-frontend/src/components/project-task-filters/delete-status-drawer/delete-status-drawer.tsx b/worklenz-frontend/src/components/project-task-filters/delete-status-drawer/delete-status-drawer.tsx index 0dd5015c..bc28501b 100644 --- a/worklenz-frontend/src/components/project-task-filters/delete-status-drawer/delete-status-drawer.tsx +++ b/worklenz-frontend/src/components/project-task-filters/delete-status-drawer/delete-status-drawer.tsx @@ -9,7 +9,7 @@ import useTabSearchParam from '@/hooks/useTabSearchParam'; import { fetchTaskGroups } from '@/features/tasks/tasks.slice'; import { deleteStatusToggleDrawer } from '@/features/projects/status/DeleteStatusSlice'; -import { Drawer, Alert, Card, Select, Button, Typography, Badge } from 'antd'; +import { Drawer, Alert, Card, Select, Button, Typography, Badge } from '@/shared/antd-imports'; import { DownOutlined } from '@ant-design/icons'; import { useSelector } from 'react-redux'; import { diff --git a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/column-configuration-modal.tsx b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/column-configuration-modal.tsx index 34b317a4..147c1277 100644 --- a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/column-configuration-modal.tsx +++ b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/column-configuration-modal.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect } from 'react'; -import { Modal, Checkbox, Button, Flex, Typography, Space, Divider, message } from 'antd'; +import { Modal, Checkbox, Button, Flex, Typography, Space, Divider, message } from '@/shared/antd-imports'; import { SettingOutlined, UpOutlined, DownOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/members-filter-dropdown.tsx b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/members-filter-dropdown.tsx index 41c920c0..755cbdf3 100644 --- a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/members-filter-dropdown.tsx +++ b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/members-filter-dropdown.tsx @@ -13,8 +13,8 @@ import { List, Space, Typography, -} from 'antd'; -import type { InputRef } from 'antd'; + InputRef +} from '@/shared/antd-imports'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/priority-filter-dropdown.tsx b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/priority-filter-dropdown.tsx index 094771dd..79858de2 100644 --- a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/priority-filter-dropdown.tsx +++ b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/priority-filter-dropdown.tsx @@ -2,7 +2,7 @@ import { CaretDownFilled } from '@ant-design/icons'; import { useMemo, useEffect, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { Badge, Button, Card, Checkbox, Dropdown, List, Space } from 'antd'; +import { Badge, Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/components/projects/project-create-button/project-create-button.tsx b/worklenz-frontend/src/components/projects/project-create-button/project-create-button.tsx index 5386ce0c..bdde03c9 100644 --- a/worklenz-frontend/src/components/projects/project-create-button/project-create-button.tsx +++ b/worklenz-frontend/src/components/projects/project-create-button/project-create-button.tsx @@ -1,4 +1,4 @@ -import { Button, Drawer, Dropdown } from 'antd'; +import { Button, Drawer, Dropdown } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { DownOutlined, EditOutlined, ImportOutlined } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/components/projects/project-drawer/project-basic-info/project-basic-info.tsx b/worklenz-frontend/src/components/projects/project-drawer/project-basic-info/project-basic-info.tsx index c01b8c70..63c512ed 100644 --- a/worklenz-frontend/src/components/projects/project-drawer/project-basic-info/project-basic-info.tsx +++ b/worklenz-frontend/src/components/projects/project-drawer/project-basic-info/project-basic-info.tsx @@ -1,4 +1,4 @@ -import { ColorPicker, Form, FormInstance, Input } from 'antd'; +import { ColorPicker, Form, FormInstance, Input } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { IProjectViewModel } from '@/types/project/projectViewModel.types'; diff --git a/worklenz-frontend/src/components/projects/project-drawer/project-category-section/project-category-section.tsx b/worklenz-frontend/src/components/projects/project-drawer/project-category-section/project-category-section.tsx index 984c9b96..ccf1a647 100644 --- a/worklenz-frontend/src/components/projects/project-drawer/project-category-section/project-category-section.tsx +++ b/worklenz-frontend/src/components/projects/project-drawer/project-category-section/project-category-section.tsx @@ -10,7 +10,7 @@ import { InputRef, Select, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { PlusOutlined } from '@ant-design/icons'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/projects/project-drawer/project-client-section/project-client-section.tsx b/worklenz-frontend/src/components/projects/project-drawer/project-client-section/project-client-section.tsx index 426f8002..67f8daa9 100644 --- a/worklenz-frontend/src/components/projects/project-drawer/project-client-section/project-client-section.tsx +++ b/worklenz-frontend/src/components/projects/project-drawer/project-client-section/project-client-section.tsx @@ -3,7 +3,7 @@ import { useAppDispatch } from '@/hooks/useAppDispatch'; import { IClientsViewModel } from '@/types/client.types'; import { IProjectViewModel } from '@/types/project/projectViewModel.types'; import { QuestionCircleOutlined } from '@ant-design/icons'; -import { AutoComplete, Flex, Form, FormInstance, Spin, Tooltip, Typography } from 'antd'; +import { AutoComplete, Flex, Form, FormInstance, Spin, Tooltip, Typography } from '@/shared/antd-imports'; import { TFunction } from 'i18next'; import { useState } from 'react'; diff --git a/worklenz-frontend/src/components/projects/project-drawer/project-drawer.tsx b/worklenz-frontend/src/components/projects/project-drawer/project-drawer.tsx index f6519cb9..2b6ef0c0 100644 --- a/worklenz-frontend/src/components/projects/project-drawer/project-drawer.tsx +++ b/worklenz-frontend/src/components/projects/project-drawer/project-drawer.tsx @@ -17,7 +17,7 @@ import { Switch, Tooltip, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import dayjs from 'dayjs'; import { fetchClients } from '@/features/settings/client/clientSlice'; diff --git a/worklenz-frontend/src/components/projects/project-drawer/project-health-section/project-health-section.tsx b/worklenz-frontend/src/components/projects/project-drawer/project-health-section/project-health-section.tsx index 95e1001e..83f3573a 100644 --- a/worklenz-frontend/src/components/projects/project-drawer/project-health-section/project-health-section.tsx +++ b/worklenz-frontend/src/components/projects/project-drawer/project-health-section/project-health-section.tsx @@ -1,5 +1,5 @@ import { TFunction } from 'i18next'; -import { Badge, Form, FormInstance, Select, Typography } from 'antd'; +import { Badge, Form, FormInstance, Select, Typography } from '@/shared/antd-imports'; import { IProjectHealth } from '@/types/project/projectHealth.types'; diff --git a/worklenz-frontend/src/components/projects/project-drawer/project-status-section/project-status-section.tsx b/worklenz-frontend/src/components/projects/project-drawer/project-status-section/project-status-section.tsx index d8e59933..10d1b12a 100644 --- a/worklenz-frontend/src/components/projects/project-drawer/project-status-section/project-status-section.tsx +++ b/worklenz-frontend/src/components/projects/project-drawer/project-status-section/project-status-section.tsx @@ -1,4 +1,4 @@ -import { Form, FormInstance, Select, Typography } from 'antd'; +import { Form, FormInstance, Select, Typography } from '@/shared/antd-imports'; import { TFunction } from 'i18next'; import { IProjectStatus } from '@/types/project/projectStatus.types'; diff --git a/worklenz-frontend/src/components/projects/project-manager-dropdown/project-manager-dropdown.tsx b/worklenz-frontend/src/components/projects/project-manager-dropdown/project-manager-dropdown.tsx index dd43960f..8c2ca57b 100644 --- a/worklenz-frontend/src/components/projects/project-manager-dropdown/project-manager-dropdown.tsx +++ b/worklenz-frontend/src/components/projects/project-manager-dropdown/project-manager-dropdown.tsx @@ -4,7 +4,7 @@ import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { ITeamMemberViewModel } from '@/types/teamMembers/teamMembersGetResponse.types'; import { CloseCircleFilled, PlusCircleOutlined } from '@ant-design/icons'; -import { Button, Dropdown, Flex, Input, InputRef, theme, Typography } from 'antd'; +import { Button, Dropdown, Flex, Input, InputRef, theme, Typography } from '@/shared/antd-imports'; import React, { useEffect, useMemo, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; import './project-manager-dropdown.css'; diff --git a/worklenz-frontend/src/components/projects/project-stats-card.tsx b/worklenz-frontend/src/components/projects/project-stats-card.tsx index 68e539e5..45226ed7 100644 --- a/worklenz-frontend/src/components/projects/project-stats-card.tsx +++ b/worklenz-frontend/src/components/projects/project-stats-card.tsx @@ -1,5 +1,5 @@ import { ReactNode } from 'react'; -import { Card, Flex, Skeleton, Tooltip, Typography } from 'antd'; +import { Card, Flex, Skeleton, Tooltip, Typography } from '@/shared/antd-imports'; import { ExclamationCircleOutlined } from '@ant-design/icons'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/members-tab/reporting-overview-members-tab.tsx b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/members-tab/reporting-overview-members-tab.tsx index 7a98303e..13ae06e0 100644 --- a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/members-tab/reporting-overview-members-tab.tsx +++ b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/members-tab/reporting-overview-members-tab.tsx @@ -1,4 +1,4 @@ -import { Flex, Skeleton } from 'antd'; +import { Flex, Skeleton } from '@/shared/antd-imports'; import React, { useEffect, useMemo, useState } from 'react'; import CustomSearchbar from '../../../../CustomSearchbar'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/members-tab/reporting-overview-members-table.tsx b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/members-tab/reporting-overview-members-table.tsx index 4318bc04..f3a9f914 100644 --- a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/members-tab/reporting-overview-members-table.tsx +++ b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/members-tab/reporting-overview-members-table.tsx @@ -1,5 +1,5 @@ import React, { memo, useEffect, useMemo, useState } from 'react'; -import { ConfigProvider, Table, TableColumnsType } from 'antd'; +import { ConfigProvider, Table, TableColumnsType } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import CustomTableTitle from '../../../../CustomTableTitle'; diff --git a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-tab/reports-overview-category-graph.tsx b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-tab/reports-overview-category-graph.tsx index ccb0ff60..96a442cc 100644 --- a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-tab/reports-overview-category-graph.tsx +++ b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-tab/reports-overview-category-graph.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Doughnut } from 'react-chartjs-2'; import { Chart, ArcElement, Tooltip, ChartOptions } from 'chart.js'; -import { Badge, Card, Flex, Typography } from 'antd'; +import { Badge, Card, Flex, Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { IRPTOverviewTeamChartData } from '@/types/reporting/reporting.types'; diff --git a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-tab/reports-overview-project-health-graph.tsx b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-tab/reports-overview-project-health-graph.tsx index 9ca3b4b6..ce9eb541 100644 --- a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-tab/reports-overview-project-health-graph.tsx +++ b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-tab/reports-overview-project-health-graph.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Doughnut } from 'react-chartjs-2'; import { Chart, ArcElement, Tooltip, ChartOptions } from 'chart.js'; -import { Badge, Card, Flex, Typography } from 'antd'; +import { Badge, Card, Flex, Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { IRPTOverviewTeamByHealth, diff --git a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-tab/reports-overview-status-graph.tsx b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-tab/reports-overview-status-graph.tsx index 862945ad..dde25b74 100644 --- a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-tab/reports-overview-status-graph.tsx +++ b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-tab/reports-overview-status-graph.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Doughnut } from 'react-chartjs-2'; import { Chart, ArcElement, Tooltip, ChartOptions } from 'chart.js'; -import { Badge, Card, Flex, Typography } from 'antd'; +import { Badge, Card, Flex, Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { IRPTOverviewTeamByStatus, IRPTOverviewTeamInfo } from '@/types/reporting/reporting.types'; import { ALPHA_CHANNEL } from '@/shared/constants'; diff --git a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-team-info-drawer-tabs.tsx b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-team-info-drawer-tabs.tsx index a285e3cf..60d0ea0a 100644 --- a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-team-info-drawer-tabs.tsx +++ b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-team-info-drawer-tabs.tsx @@ -1,4 +1,4 @@ -import { Tabs } from 'antd'; +import { Tabs } from '@/shared/antd-imports'; import { TabsProps } from 'antd/lib'; import { useTranslation } from 'react-i18next'; import OverviewReportsOverviewTab from './overview-tab/reports-overview-tab'; diff --git a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-team-info-drawer.tsx b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-team-info-drawer.tsx index d838a561..c3eabdca 100644 --- a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-team-info-drawer.tsx +++ b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-team-info-drawer.tsx @@ -1,4 +1,4 @@ -import { Drawer, Typography, Flex, Button, Dropdown } from 'antd'; +import { Drawer, Typography, Flex, Button, Dropdown } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { useAppSelector } from '../../../../hooks/useAppSelector'; import { useAppDispatch } from '../../../../hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/projects-tab/reporting-overview-projects-tab.tsx b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/projects-tab/reporting-overview-projects-tab.tsx index 2ea591ed..556649e4 100644 --- a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/projects-tab/reporting-overview-projects-tab.tsx +++ b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/projects-tab/reporting-overview-projects-tab.tsx @@ -1,4 +1,4 @@ -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import { useState } from 'react'; import CustomSearchbar from '@components/CustomSearchbar'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/projects-tab/reporting-overview-projects-table.tsx b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/projects-tab/reporting-overview-projects-table.tsx index 641ce9e7..c712b0dc 100644 --- a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/projects-tab/reporting-overview-projects-table.tsx +++ b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/projects-tab/reporting-overview-projects-table.tsx @@ -1,5 +1,5 @@ import { useEffect, useState, useMemo } from 'react'; -import { Button, ConfigProvider, Flex, PaginationProps, Table, TableColumnsType } from 'antd'; +import { Button, ConfigProvider, Flex, PaginationProps, Table, TableColumnsType } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { createPortal } from 'react-dom'; import { ExpandAltOutlined } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/components/reporting/time-wise-filter.tsx b/worklenz-frontend/src/components/reporting/time-wise-filter.tsx index 8819d207..f9e7c72d 100644 --- a/worklenz-frontend/src/components/reporting/time-wise-filter.tsx +++ b/worklenz-frontend/src/components/reporting/time-wise-filter.tsx @@ -1,5 +1,5 @@ import { CaretDownFilled, DownOutlined } from '@ant-design/icons'; -import { Button, Card, DatePicker, Divider, Dropdown, Flex, List, Typography } from 'antd'; +import { Button, Card, DatePicker, Divider, Dropdown, Flex, List, Typography } from '@/shared/antd-imports'; import { useState, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import dayjs from 'dayjs'; diff --git a/worklenz-frontend/src/components/schedule-old/team/Team.tsx b/worklenz-frontend/src/components/schedule-old/team/Team.tsx index 75d93d09..4cffd0d3 100644 --- a/worklenz-frontend/src/components/schedule-old/team/Team.tsx +++ b/worklenz-frontend/src/components/schedule-old/team/Team.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react'; import { AvatarNamesMap } from '@/shared/constants'; import { Member } from '@/types/schedule/schedule.types'; -import { Avatar, Badge, Button, Col, Flex, Popover, Row, Tooltip } from 'antd'; +import { Avatar, Badge, Button, Col, Flex, Popover, Row, Tooltip } from '@/shared/antd-imports'; import { CaretDownOutlined, CaretRightFilled } from '@ant-design/icons'; import { useAppSelector } from '@/hooks/useAppSelector'; import './Team.css'; diff --git a/worklenz-frontend/src/components/schedule/grant-chart/day-allocation-cell.tsx b/worklenz-frontend/src/components/schedule/grant-chart/day-allocation-cell.tsx index 1054b569..86ae9d24 100644 --- a/worklenz-frontend/src/components/schedule/grant-chart/day-allocation-cell.tsx +++ b/worklenz-frontend/src/components/schedule/grant-chart/day-allocation-cell.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Tooltip } from 'antd'; +import { Tooltip } from '@/shared/antd-imports'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { toggleScheduleDrawer } from '../../../features/schedule/scheduleSlice'; diff --git a/worklenz-frontend/src/components/schedule/grant-chart/grantt-chart.tsx b/worklenz-frontend/src/components/schedule/grant-chart/grantt-chart.tsx index a6170c50..790695cc 100644 --- a/worklenz-frontend/src/components/schedule/grant-chart/grantt-chart.tsx +++ b/worklenz-frontend/src/components/schedule/grant-chart/grantt-chart.tsx @@ -5,7 +5,7 @@ import { fetchDateList, fetchTeamData } from '../../../features/schedule/schedul import { themeWiseColor } from '../../../utils/themeWiseColor'; import GranttMembersTable from './grantt-members-table'; import { CELL_WIDTH } from '../../../shared/constants'; -import { Flex, Popover } from 'antd'; +import { Flex, Popover } from '@/shared/antd-imports'; import DayAllocationCell from './day-allocation-cell'; import ProjectTimelineBar from './project-timeline-bar'; import ProjectTimelineModal from '@/features/schedule/ProjectTimelineModal'; diff --git a/worklenz-frontend/src/components/schedule/grant-chart/grantt-members-table.tsx b/worklenz-frontend/src/components/schedule/grant-chart/grantt-members-table.tsx index 6a402b88..8882decc 100644 --- a/worklenz-frontend/src/components/schedule/grant-chart/grantt-members-table.tsx +++ b/worklenz-frontend/src/components/schedule/grant-chart/grantt-members-table.tsx @@ -1,4 +1,4 @@ -import { Badge, Button, Flex, Tooltip } from 'antd'; +import { Badge, Button, Flex, Tooltip } from '@/shared/antd-imports'; import React, { useCallback } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import CustomAvatar from '../../CustomAvatar'; diff --git a/worklenz-frontend/src/components/schedule/grant-chart/project-timeline-bar.tsx b/worklenz-frontend/src/components/schedule/grant-chart/project-timeline-bar.tsx index f51e2556..57331b97 100644 --- a/worklenz-frontend/src/components/schedule/grant-chart/project-timeline-bar.tsx +++ b/worklenz-frontend/src/components/schedule/grant-chart/project-timeline-bar.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { Flex, Popover, Typography } from 'antd'; +import { Flex, Popover, Typography } from '@/shared/antd-imports'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useTranslation } from 'react-i18next'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/components/schedule/grant-chart/timeline.tsx b/worklenz-frontend/src/components/schedule/grant-chart/timeline.tsx index c68c9d4a..f458f932 100644 --- a/worklenz-frontend/src/components/schedule/grant-chart/timeline.tsx +++ b/worklenz-frontend/src/components/schedule/grant-chart/timeline.tsx @@ -1,5 +1,5 @@ import React, { useMemo, useState } from 'react'; -import { Flex, Typography } from 'antd'; +import { Flex, Typography } from '@/shared/antd-imports'; import { Member } from '../../../types/schedule/schedule.types'; import DayAllocationCell from './day-allocation-cell'; import { CELL_WIDTH } from '../../../shared/constants'; diff --git a/worklenz-frontend/src/components/service-worker-status/ServiceWorkerStatus.tsx b/worklenz-frontend/src/components/service-worker-status/ServiceWorkerStatus.tsx index 90c7f589..d5f20839 100644 --- a/worklenz-frontend/src/components/service-worker-status/ServiceWorkerStatus.tsx +++ b/worklenz-frontend/src/components/service-worker-status/ServiceWorkerStatus.tsx @@ -2,7 +2,7 @@ // Shows offline status and provides cache management controls import React from 'react'; -import { Badge, Button, Space, Tooltip, message } from 'antd'; +import { Badge, Button, Space, Tooltip, message } from '@/shared/antd-imports'; import { WifiOutlined, DisconnectOutlined, ReloadOutlined, DeleteOutlined } from '@ant-design/icons'; import { useServiceWorker } from '../../utils/serviceWorkerRegistration'; diff --git a/worklenz-frontend/src/components/settings/edit-team-name-modal.tsx b/worklenz-frontend/src/components/settings/edit-team-name-modal.tsx index 243a6146..fa4c8d9e 100644 --- a/worklenz-frontend/src/components/settings/edit-team-name-modal.tsx +++ b/worklenz-frontend/src/components/settings/edit-team-name-modal.tsx @@ -1,4 +1,4 @@ -import { Divider, Form, Input, message, Modal, Typography } from 'antd'; +import { Divider, Form, Input, message, Modal, Typography } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/settings/update-member-drawer.tsx b/worklenz-frontend/src/components/settings/update-member-drawer.tsx index 1af06fcc..5be63897 100644 --- a/worklenz-frontend/src/components/settings/update-member-drawer.tsx +++ b/worklenz-frontend/src/components/settings/update-member-drawer.tsx @@ -11,7 +11,7 @@ import { Spin, Tooltip, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAuthService } from '@/hooks/useAuth'; diff --git a/worklenz-frontend/src/components/suspense-fallback/suspense-fallback.tsx b/worklenz-frontend/src/components/suspense-fallback/suspense-fallback.tsx index 377ba150..98077c97 100644 --- a/worklenz-frontend/src/components/suspense-fallback/suspense-fallback.tsx +++ b/worklenz-frontend/src/components/suspense-fallback/suspense-fallback.tsx @@ -1,5 +1,5 @@ import React, { memo } from 'react'; -import { Skeleton } from 'antd'; +import { Skeleton } from '@/shared/antd-imports'; // Lightweight loading component with skeleton animation export const SuspenseFallback = memo(() => { diff --git a/worklenz-frontend/src/components/task-drawer/shared/activity-log/task-drawer-activity-log.tsx b/worklenz-frontend/src/components/task-drawer/shared/activity-log/task-drawer-activity-log.tsx index 7b23a596..d0d1a7c3 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/activity-log/task-drawer-activity-log.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/activity-log/task-drawer-activity-log.tsx @@ -1,4 +1,4 @@ -import { Timeline, Typography, Flex, ConfigProvider, Tag, Tooltip, Skeleton } from 'antd'; +import { Timeline, Typography, Flex, ConfigProvider, Tag, Tooltip, Skeleton } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { ArrowRightOutlined } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/attachments/attachments-grid.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/attachments/attachments-grid.tsx index 7145a556..bc5d30fc 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/attachments/attachments-grid.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/attachments/attachments-grid.tsx @@ -4,7 +4,7 @@ import './attachments-preview.css'; import type { RcFile, UploadProps } from 'antd/es/upload'; import { TFunction } from 'i18next'; import { ReloadOutlined } from '@ant-design/icons'; -import { message } from 'antd'; +import { message } from '@/shared/antd-imports'; import AttachmentsUpload from './attachments-upload'; interface AttachmentsGridProps { diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/attachments/attachments-preview.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/attachments/attachments-preview.tsx index ad9b8aba..6ca6bfb5 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/attachments/attachments-preview.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/attachments/attachments-preview.tsx @@ -1,6 +1,6 @@ import { useState } from 'react'; import { ITaskAttachmentViewModel } from '@/types/tasks/task-attachment-view-model'; -import { Button, Modal, Spin, Tooltip, Typography, Popconfirm, message } from 'antd'; +import { Button, Modal, Spin, Tooltip, Typography, Popconfirm, message } from '@/shared/antd-imports'; import { EyeOutlined, DownloadOutlined, diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/comments/task-comments.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/comments/task-comments.tsx index 95e636fc..2da440e7 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/comments/task-comments.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/comments/task-comments.tsx @@ -1,5 +1,5 @@ import { useState, useEffect, useRef, useCallback } from 'react'; -import { Skeleton, Avatar, Tooltip, Popconfirm } from 'antd'; +import { Skeleton, Avatar, Tooltip, Popconfirm } from '@/shared/antd-imports'; import { Comment } from '@ant-design/compatible'; import dayjs from 'dayjs'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/comments/task-view-comment-edit.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/comments/task-view-comment-edit.tsx index e215ad99..1c4348f6 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/comments/task-view-comment-edit.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/comments/task-view-comment-edit.tsx @@ -1,5 +1,5 @@ import { useState, useEffect } from 'react'; -import { Button, Form, Input, Space } from 'antd'; +import { Button, Form, Input, Space } from '@/shared/antd-imports'; import { ITaskCommentViewModel } from '@/types/tasks/task-comments.types'; import taskCommentsApiService from '@/api/tasks/task-comments.api.service'; import logger from '@/utils/errorLogger'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/dependencies-table.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/dependencies-table.tsx index 28568a38..14028a1b 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/dependencies-table.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/dependencies-table.tsx @@ -10,7 +10,7 @@ import { TableProps, Tag, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import React, { useState, useEffect } from 'react'; import { DeleteOutlined, ExclamationCircleFilled } from '@ant-design/icons'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-due-date/task-drawer-due-date.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-due-date/task-drawer-due-date.tsx index b6a03690..0c8325b7 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-due-date/task-drawer-due-date.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-due-date/task-drawer-due-date.tsx @@ -1,5 +1,5 @@ import { useState } from 'react'; -import { Flex, DatePicker, Typography, Button, Form, FormInstance } from 'antd'; +import { Flex, DatePicker, Typography, Button, Form, FormInstance } from '@/shared/antd-imports'; import { t, TFunction } from 'i18next'; import dayjs, { Dayjs } from 'dayjs'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-estimation/task-drawer-estimation.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-estimation/task-drawer-estimation.tsx index ed204673..37bc6f55 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-estimation/task-drawer-estimation.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-estimation/task-drawer-estimation.tsx @@ -2,7 +2,7 @@ import { SocketEvents } from '@/shared/socket-events'; import { useSocket } from '@/socket/socketContext'; import { colors } from '@/styles/colors'; import { ITaskViewModel } from '@/types/tasks/task.types'; -import { Flex, Form, FormInstance, InputNumber, Typography } from 'antd'; +import { Flex, Form, FormInstance, InputNumber, Typography } from '@/shared/antd-imports'; import { TFunction } from 'i18next'; import { useState } from 'react'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-key/task-drawer-key.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-key/task-drawer-key.tsx index 659f39b9..d884c832 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-key/task-drawer-key.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-key/task-drawer-key.tsx @@ -1,7 +1,7 @@ import { ITaskFormViewModel } from '@/types/tasks/task.types'; -import { Tag } from 'antd'; +import { Tag } from '@/shared/antd-imports'; -import { Form } from 'antd'; +import { Form } from '@/shared/antd-imports'; interface TaskDrawerKeyProps { taskKey: string; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-labels/task-drawer-labels.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-labels/task-drawer-labels.tsx index 55f957b3..f93e8236 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-labels/task-drawer-labels.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-labels/task-drawer-labels.tsx @@ -12,7 +12,7 @@ import { List, Tag, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { useEffect, useMemo, useRef, useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-phase-selector/task-drawer-phase-selector.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-phase-selector/task-drawer-phase-selector.tsx index e7504761..2588d078 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-phase-selector/task-drawer-phase-selector.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-phase-selector/task-drawer-phase-selector.tsx @@ -1,8 +1,8 @@ import { useSocket } from '@/socket/socketContext'; import { ITaskPhase } from '@/types/tasks/taskPhase.types'; -import { Select } from 'antd'; +import { Select } from '@/shared/antd-imports'; -import { Form } from 'antd'; +import { Form } from '@/shared/antd-imports'; import { SocketEvents } from '@/shared/socket-events'; import { ITaskViewModel } from '@/types/tasks/task.types'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-priority-selector/task-drawer-priority-selector.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-priority-selector/task-drawer-priority-selector.tsx index 6436dfd9..e2b71e49 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-priority-selector/task-drawer-priority-selector.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-priority-selector/task-drawer-priority-selector.tsx @@ -1,4 +1,4 @@ -import { Flex, Select, Typography } from 'antd'; +import { Flex, Select, Typography } from '@/shared/antd-imports'; import './priority-dropdown.css'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useState, useEffect, useMemo } from 'react'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-progress/task-drawer-progress.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-progress/task-drawer-progress.tsx index c8600ed9..dc157fa1 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-progress/task-drawer-progress.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-progress/task-drawer-progress.tsx @@ -1,4 +1,4 @@ -import { Form, InputNumber, Tooltip, Modal } from 'antd'; +import { Form, InputNumber, Tooltip, Modal } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { QuestionCircleOutlined } from '@ant-design/icons'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-recurring-config/task-drawer-recurring-config.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-recurring-config/task-drawer-recurring-config.tsx index 1d12c480..f1568f21 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-recurring-config/task-drawer-recurring-config.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/details/task-drawer-recurring-config/task-drawer-recurring-config.tsx @@ -11,7 +11,7 @@ import { Skeleton, Row, Col, -} from 'antd'; +} from '@/shared/antd-imports'; import { SettingOutlined } from '@ant-design/icons'; import { useSocket } from '@/socket/socketContext'; import { SocketEvents } from '@/shared/socket-events'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/info-tab-footer.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/info-tab-footer.tsx index 0bfabd28..b4abacc2 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/info-tab-footer.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/info-tab-footer.tsx @@ -1,4 +1,4 @@ -import { Button, Flex, Form, Mentions, Space, Tooltip, Typography, message } from 'antd'; +import { Button, Flex, Form, Mentions, Space, Tooltip, Typography, message } from '@/shared/antd-imports'; import { useCallback, useEffect, useRef, useState, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { PaperClipOutlined, DeleteOutlined, PlusOutlined } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/notify-member-selector.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/notify-member-selector.tsx index cde137d9..cf6e0deb 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/notify-member-selector.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/notify-member-selector.tsx @@ -10,7 +10,7 @@ import { InputRef, List, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { useEffect, useMemo, useRef, useState } from 'react'; import { TFunction } from 'i18next'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/subtask-table.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/subtask-table.tsx index d8ca806b..2ed6015c 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/subtask-table.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/subtask-table.tsx @@ -1,4 +1,4 @@ -import { Button, Flex, Input, Popconfirm, Progress, Table, Tag, Tooltip } from 'antd'; +import { Button, Flex, Input, Popconfirm, Progress, Table, Tag, Tooltip } from '@/shared/antd-imports'; import { useState, useMemo, useEffect } from 'react'; import { DeleteOutlined, EditOutlined, ExclamationCircleFilled } from '@ant-design/icons'; import { nanoid } from '@reduxjs/toolkit'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/task-details-form.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/task-details-form.tsx index 23dac128..8e960674 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/task-details-form.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/task-details-form.tsx @@ -9,7 +9,7 @@ import { Button, ConfigProvider, Flex, -} from 'antd'; +} from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { colors } from '@/styles/colors'; import { ITaskFormViewModel, ITaskViewModel } from '@/types/tasks/task.types'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/task-drawer-info-tab.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/task-drawer-info-tab.tsx index e90c9cce..d99da5e9 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/task-drawer-info-tab.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/task-drawer-info-tab.tsx @@ -1,4 +1,4 @@ -import { Button, Collapse, CollapseProps, Flex, Skeleton, Tooltip, Typography, Upload } from 'antd'; +import { Button, Collapse, CollapseProps, Flex, Skeleton, Tooltip, Typography, Upload } from '@/shared/antd-imports'; import React, { useEffect, useState, useRef } from 'react'; import { ReloadOutlined } from '@ant-design/icons'; import DescriptionEditor from './description-editor'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/time-log/TaskDrawerTimeLog.tsx b/worklenz-frontend/src/components/task-drawer/shared/time-log/TaskDrawerTimeLog.tsx index 02e073d8..d8c49a45 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/time-log/TaskDrawerTimeLog.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/time-log/TaskDrawerTimeLog.tsx @@ -1,5 +1,5 @@ import { DownloadOutlined, PlusOutlined } from '@ant-design/icons'; -import { Button, Divider, Flex, Skeleton, Typography } from 'antd'; +import { Button, Divider, Flex, Skeleton, Typography } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import EmptyListPlaceholder from '@/components/EmptyListPlaceholder'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/time-log/task-drawer-time-log.tsx b/worklenz-frontend/src/components/task-drawer/shared/time-log/task-drawer-time-log.tsx index 97daf8b5..1bb388cc 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/time-log/task-drawer-time-log.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/time-log/task-drawer-time-log.tsx @@ -1,5 +1,5 @@ import { DownloadOutlined, PlayCircleFilled, PlusOutlined } from '@ant-design/icons'; -import { Button, Divider, Flex, Skeleton, Typography } from 'antd'; +import { Button, Divider, Flex, Skeleton, Typography } from '@/shared/antd-imports'; import { useEffect, useState, useCallback } from 'react'; import { TFunction } from 'i18next'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/time-log/time-log-form.tsx b/worklenz-frontend/src/components/task-drawer/shared/time-log/time-log-form.tsx index 91463e6b..4bda050c 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/time-log/time-log-form.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/time-log/time-log-form.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Button, DatePicker, Form, Input, TimePicker, Flex } from 'antd'; +import { Button, DatePicker, Form, Input, TimePicker, Flex } from '@/shared/antd-imports'; import { ClockCircleOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; import dayjs from 'dayjs'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/time-log/time-log-item.tsx b/worklenz-frontend/src/components/task-drawer/shared/time-log/time-log-item.tsx index a7d88fe6..8e1fcbe9 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/time-log/time-log-item.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/time-log/time-log-item.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Button, Divider, Flex, Popconfirm, Typography, Space } from 'antd'; +import { Button, Divider, Flex, Popconfirm, Typography, Space } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import { ITaskLogViewModel } from '@/types/tasks/task-log-view.types'; import SingleAvatar from '@/components/common/single-avatar/single-avatar'; diff --git a/worklenz-frontend/src/components/task-drawer/shared/time-log/time-log-list.tsx b/worklenz-frontend/src/components/task-drawer/shared/time-log/time-log-list.tsx index 192d6990..05ff540a 100644 --- a/worklenz-frontend/src/components/task-drawer/shared/time-log/time-log-list.tsx +++ b/worklenz-frontend/src/components/task-drawer/shared/time-log/time-log-list.tsx @@ -1,4 +1,4 @@ -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import React, { useState } from 'react'; import TimeLogItem from './time-log-item'; import { ITaskLogViewModel } from '@/types/tasks/task-log-view.types'; diff --git a/worklenz-frontend/src/components/task-drawer/task-drawer-header/task-drawer-header.tsx b/worklenz-frontend/src/components/task-drawer/task-drawer-header/task-drawer-header.tsx index 40de65e8..e5937e6e 100644 --- a/worklenz-frontend/src/components/task-drawer/task-drawer-header/task-drawer-header.tsx +++ b/worklenz-frontend/src/components/task-drawer/task-drawer-header/task-drawer-header.tsx @@ -1,4 +1,4 @@ -import { Button, Dropdown, Flex, Input, InputRef, MenuProps, Tooltip } from 'antd'; +import { Button, Dropdown, Flex, Input, InputRef, MenuProps, Tooltip } from '@/shared/antd-imports'; import React, { ChangeEvent, useEffect, useRef, useState } from 'react'; import { EllipsisOutlined } from '@ant-design/icons'; import { TFunction } from 'i18next'; diff --git a/worklenz-frontend/src/components/task-drawer/task-drawer-status-dropdown/task-drawer-status-dropdown.tsx b/worklenz-frontend/src/components/task-drawer/task-drawer-status-dropdown/task-drawer-status-dropdown.tsx index a7460e0a..e965d6a3 100644 --- a/worklenz-frontend/src/components/task-drawer/task-drawer-status-dropdown/task-drawer-status-dropdown.tsx +++ b/worklenz-frontend/src/components/task-drawer/task-drawer-status-dropdown/task-drawer-status-dropdown.tsx @@ -11,7 +11,7 @@ import { ITaskListStatusChangeResponse } from '@/types/tasks/task-list-status.ty import { ITaskViewModel } from '@/types/tasks/task.types'; import { ITaskStatus } from '@/types/tasks/taskStatus.types'; import { checkTaskDependencyStatus } from '@/utils/check-task-dependency-status'; -import { Select } from 'antd'; +import { Select } from '@/shared/antd-imports'; import { useMemo } from 'react'; import { updateEnhancedKanbanTaskStatus } from '@/features/enhanced-kanban/enhanced-kanban.slice'; diff --git a/worklenz-frontend/src/components/task-drawer/task-drawer.tsx b/worklenz-frontend/src/components/task-drawer/task-drawer.tsx index de80fb4f..8f6bf924 100644 --- a/worklenz-frontend/src/components/task-drawer/task-drawer.tsx +++ b/worklenz-frontend/src/components/task-drawer/task-drawer.tsx @@ -1,4 +1,4 @@ -import { TabsProps, Tabs, Button } from 'antd'; +import { TabsProps, Tabs, Button } from '@/shared/antd-imports'; import Drawer from 'antd/es/drawer'; import { InputRef } from 'antd/es/input'; import { useTranslation } from 'react-i18next'; @@ -25,7 +25,7 @@ import TimeLogForm from './shared/time-log/time-log-form'; import { DEFAULT_TASK_NAME } from '@/shared/constants'; import useTaskDrawerUrlSync from '@/hooks/useTaskDrawerUrlSync'; import InfoTabFooter from './shared/info-tab/info-tab-footer'; -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; const TaskDrawer = () => { const { t } = useTranslation('task-drawer/task-drawer'); diff --git a/worklenz-frontend/src/components/task-drawer/task-hierarchy-breadcrumb/task-hierarchy-breadcrumb.tsx b/worklenz-frontend/src/components/task-drawer/task-hierarchy-breadcrumb/task-hierarchy-breadcrumb.tsx index 792b4347..c77afc71 100644 --- a/worklenz-frontend/src/components/task-drawer/task-hierarchy-breadcrumb/task-hierarchy-breadcrumb.tsx +++ b/worklenz-frontend/src/components/task-drawer/task-hierarchy-breadcrumb/task-hierarchy-breadcrumb.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect } from 'react'; -import { Breadcrumb, Button, Typography, Tooltip } from 'antd'; +import { Breadcrumb, Button, Typography, Tooltip } from '@/shared/antd-imports'; import { HomeOutlined } from '@ant-design/icons'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/task-list-common/assigneeSelector/AssigneeSelector.tsx b/worklenz-frontend/src/components/task-list-common/assigneeSelector/AssigneeSelector.tsx index 256e7eb6..9e53b949 100644 --- a/worklenz-frontend/src/components/task-list-common/assigneeSelector/AssigneeSelector.tsx +++ b/worklenz-frontend/src/components/task-list-common/assigneeSelector/AssigneeSelector.tsx @@ -11,7 +11,7 @@ import { InputRef, List, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import React, { useMemo, useRef, useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/task-list-common/labelsSelector/color-changed-label.tsx b/worklenz-frontend/src/components/task-list-common/labelsSelector/color-changed-label.tsx index f76e9d8d..ce708d81 100644 --- a/worklenz-frontend/src/components/task-list-common/labelsSelector/color-changed-label.tsx +++ b/worklenz-frontend/src/components/task-list-common/labelsSelector/color-changed-label.tsx @@ -1,4 +1,4 @@ -import { Select, Tag, Tooltip } from 'antd'; +import { Select, Tag, Tooltip } from '@/shared/antd-imports'; import { PhaseColorCodes } from '../../../shared/constants'; import { useTranslation } from 'react-i18next'; import { ITaskLabel } from '@/types/tasks/taskLabel.types'; diff --git a/worklenz-frontend/src/components/task-list-common/labelsSelector/custom-color-label.tsx b/worklenz-frontend/src/components/task-list-common/labelsSelector/custom-color-label.tsx index 29f582dc..aff1f4c4 100644 --- a/worklenz-frontend/src/components/task-list-common/labelsSelector/custom-color-label.tsx +++ b/worklenz-frontend/src/components/task-list-common/labelsSelector/custom-color-label.tsx @@ -1,4 +1,4 @@ -import { Tag, Typography } from 'antd'; +import { Tag, Typography } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import { ITaskLabel } from '@/types/tasks/taskLabel.types'; import { ALPHA_CHANNEL } from '@/shared/constants'; diff --git a/worklenz-frontend/src/components/task-list-common/labelsSelector/custom-number-label.tsx b/worklenz-frontend/src/components/task-list-common/labelsSelector/custom-number-label.tsx index 9e8505af..d354ca72 100644 --- a/worklenz-frontend/src/components/task-list-common/labelsSelector/custom-number-label.tsx +++ b/worklenz-frontend/src/components/task-list-common/labelsSelector/custom-number-label.tsx @@ -1,4 +1,4 @@ -import { Tag, Tooltip } from 'antd'; +import { Tag, Tooltip } from '@/shared/antd-imports'; import { ITaskLabel } from '@/types/tasks/taskLabel.types'; const CustomNumberLabel = ({ labelList }: { labelList: ITaskLabel[] | null }) => { diff --git a/worklenz-frontend/src/components/task-list-common/labelsSelector/labels-selector.tsx b/worklenz-frontend/src/components/task-list-common/labelsSelector/labels-selector.tsx index 554236b5..49235697 100644 --- a/worklenz-frontend/src/components/task-list-common/labelsSelector/labels-selector.tsx +++ b/worklenz-frontend/src/components/task-list-common/labelsSelector/labels-selector.tsx @@ -12,7 +12,7 @@ import { InputRef, List, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import React, { useMemo, useRef, useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/components/task-list-common/phaseDropdown/PhaseDropdown.tsx b/worklenz-frontend/src/components/task-list-common/phaseDropdown/PhaseDropdown.tsx index 468f2e24..100e1ffc 100644 --- a/worklenz-frontend/src/components/task-list-common/phaseDropdown/PhaseDropdown.tsx +++ b/worklenz-frontend/src/components/task-list-common/phaseDropdown/PhaseDropdown.tsx @@ -1,4 +1,4 @@ -import { Badge, Flex, Select, Typography } from 'antd'; +import { Badge, Flex, Select, Typography } from '@/shared/antd-imports'; import React, { useState } from 'react'; // custom css file import './phaseDropdown.css'; diff --git a/worklenz-frontend/src/components/task-list-common/priorityDropdown/priority-dropdown.tsx b/worklenz-frontend/src/components/task-list-common/priorityDropdown/priority-dropdown.tsx index 7e7ee9c7..16460876 100644 --- a/worklenz-frontend/src/components/task-list-common/priorityDropdown/priority-dropdown.tsx +++ b/worklenz-frontend/src/components/task-list-common/priorityDropdown/priority-dropdown.tsx @@ -1,4 +1,4 @@ -import { Flex, Select, Typography } from 'antd'; +import { Flex, Select, Typography } from '@/shared/antd-imports'; import './priority-dropdown.css'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useState, useEffect, useMemo } from 'react'; diff --git a/worklenz-frontend/src/components/task-list-common/status-dropdown/status-dropdown.tsx b/worklenz-frontend/src/components/task-list-common/status-dropdown/status-dropdown.tsx index 09f27c8b..92a38e9d 100644 --- a/worklenz-frontend/src/components/task-list-common/status-dropdown/status-dropdown.tsx +++ b/worklenz-frontend/src/components/task-list-common/status-dropdown/status-dropdown.tsx @@ -1,4 +1,4 @@ -import { Flex, Select } from 'antd'; +import { Flex, Select } from '@/shared/antd-imports'; import './status-dropdown.css'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useMemo } from 'react'; diff --git a/worklenz-frontend/src/components/task-list-common/task-row/task-list-due-time-cell/task-row-due-time.tsx b/worklenz-frontend/src/components/task-list-common/task-row/task-list-due-time-cell/task-row-due-time.tsx index 3cdb9a45..7898cf20 100644 --- a/worklenz-frontend/src/components/task-list-common/task-row/task-list-due-time-cell/task-row-due-time.tsx +++ b/worklenz-frontend/src/components/task-list-common/task-row/task-list-due-time-cell/task-row-due-time.tsx @@ -1,4 +1,4 @@ -import { TimePicker, TimePickerProps } from 'antd'; +import { TimePicker, TimePickerProps } from '@/shared/antd-imports'; type TaskRowDueTimeProps = { dueTime: string; diff --git a/worklenz-frontend/src/components/task-list-common/task-row/task-row-description/task-row-description.tsx b/worklenz-frontend/src/components/task-list-common/task-row/task-row-description/task-row-description.tsx index 3deffddc..e90ff63e 100644 --- a/worklenz-frontend/src/components/task-list-common/task-row/task-row-description/task-row-description.tsx +++ b/worklenz-frontend/src/components/task-list-common/task-row/task-row-description/task-row-description.tsx @@ -1,4 +1,4 @@ -import { Typography } from 'antd'; +import { Typography } from '@/shared/antd-imports'; const TaskRowDescription = ({ description }: { description: string }) => { return ( diff --git a/worklenz-frontend/src/components/task-list-common/task-row/task-row-name/task-row-name.tsx b/worklenz-frontend/src/components/task-list-common/task-row/task-row-name/task-row-name.tsx index 11ee8514..373a1410 100644 --- a/worklenz-frontend/src/components/task-list-common/task-row/task-row-name/task-row-name.tsx +++ b/worklenz-frontend/src/components/task-list-common/task-row/task-row-name/task-row-name.tsx @@ -1,6 +1,6 @@ // TaskNameCell.tsx import React, { useCallback } from 'react'; -import { Flex, Typography, Button } from 'antd'; +import { Flex, Typography, Button } from '@/shared/antd-imports'; import { DoubleRightOutlined, DownOutlined, diff --git a/worklenz-frontend/src/components/task-list-common/task-row/task-row-progress/task-row-progress.tsx b/worklenz-frontend/src/components/task-list-common/task-row/task-row-progress/task-row-progress.tsx index 6bfaa7fb..564d0c23 100644 --- a/worklenz-frontend/src/components/task-list-common/task-row/task-row-progress/task-row-progress.tsx +++ b/worklenz-frontend/src/components/task-list-common/task-row/task-row-progress/task-row-progress.tsx @@ -1,4 +1,4 @@ -import { Progress, Tooltip } from 'antd'; +import { Progress, Tooltip } from '@/shared/antd-imports'; import './task-row-progress.css'; import React from 'react'; diff --git a/worklenz-frontend/src/components/task-list-common/task-row/task-row-time-tracking/task-row-time-tracking.tsx b/worklenz-frontend/src/components/task-list-common/task-row/task-row-time-tracking/task-row-time-tracking.tsx index 2d4f7395..f7f6cdb3 100644 --- a/worklenz-frontend/src/components/task-list-common/task-row/task-row-time-tracking/task-row-time-tracking.tsx +++ b/worklenz-frontend/src/components/task-list-common/task-row/task-row-time-tracking/task-row-time-tracking.tsx @@ -1,5 +1,5 @@ import React, { useMemo } from 'react'; -import { Divider, Empty, Flex, Popover, Typography } from 'antd'; +import { Divider, Empty, Flex, Popover, Typography } from '@/shared/antd-imports'; import { PlayCircleFilled } from '@ant-design/icons'; import { colors } from '@/styles/colors'; import CustomAvatar from '@components/CustomAvatar'; diff --git a/worklenz-frontend/src/components/task-list-v2/GroupProgressBar.tsx b/worklenz-frontend/src/components/task-list-v2/GroupProgressBar.tsx index 0d17c779..10a89f84 100644 --- a/worklenz-frontend/src/components/task-list-v2/GroupProgressBar.tsx +++ b/worklenz-frontend/src/components/task-list-v2/GroupProgressBar.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import { Tooltip } from 'antd'; +import { Tooltip } from '@/shared/antd-imports'; interface GroupProgressBarProps { todoProgress: number; diff --git a/worklenz-frontend/src/components/task-list-v2/TaskGroupHeader.tsx b/worklenz-frontend/src/components/task-list-v2/TaskGroupHeader.tsx index 27adf3be..32a19dd4 100644 --- a/worklenz-frontend/src/components/task-list-v2/TaskGroupHeader.tsx +++ b/worklenz-frontend/src/components/task-list-v2/TaskGroupHeader.tsx @@ -8,7 +8,7 @@ import { PencilIcon, ArrowPathIcon, } from '@heroicons/react/24/outline'; -import { Checkbox, Dropdown, Menu, Input, Modal, Badge, Flex } from 'antd'; +import { Checkbox, Dropdown, Menu, Input, Modal, Badge, Flex } from '@/shared/antd-imports'; import GroupProgressBar from './GroupProgressBar'; import { useTranslation } from 'react-i18next'; import { getContrastColor } from '@/utils/colorUtils'; diff --git a/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx b/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx index 4991cc3b..a336aad4 100644 --- a/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx +++ b/worklenz-frontend/src/components/task-list-v2/TaskListV2Table.tsx @@ -19,7 +19,7 @@ import { import { useTranslation } from 'react-i18next'; import { useParams } from 'react-router-dom'; import { createPortal } from 'react-dom'; -import { Skeleton } from 'antd'; +import { Skeleton } from '@/shared/antd-imports'; import { HolderOutlined } from '@ant-design/icons'; // Redux hooks and selectors diff --git a/worklenz-frontend/src/components/task-list-v2/TaskRowWithSubtasks.tsx b/worklenz-frontend/src/components/task-list-v2/TaskRowWithSubtasks.tsx index f6c35cfc..c3535101 100644 --- a/worklenz-frontend/src/components/task-list-v2/TaskRowWithSubtasks.tsx +++ b/worklenz-frontend/src/components/task-list-v2/TaskRowWithSubtasks.tsx @@ -5,7 +5,7 @@ import { selectTaskById, createSubtask, selectSubtaskLoading } from '@/features/ import TaskRow from './TaskRow'; import SubtaskLoadingSkeleton from './SubtaskLoadingSkeleton'; import { Task } from '@/types/task-management.types'; -import { Input, Button } from 'antd'; +import { Input, Button } from '@/shared/antd-imports'; import { PlusOutlined } from '@ant-design/icons'; import { useSocket } from '@/socket/socketContext'; import { SocketEvents } from '@/shared/socket-events'; diff --git a/worklenz-frontend/src/components/task-list-v2/components/AddTaskRow.tsx b/worklenz-frontend/src/components/task-list-v2/components/AddTaskRow.tsx index 43dfa7f5..b4275b49 100644 --- a/worklenz-frontend/src/components/task-list-v2/components/AddTaskRow.tsx +++ b/worklenz-frontend/src/components/task-list-v2/components/AddTaskRow.tsx @@ -1,5 +1,5 @@ import React, { useState, useCallback, memo, useRef, useEffect } from 'react'; -import { Input } from 'antd'; +import { Input } from '@/shared/antd-imports'; import { PlusOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; import { useSocket } from '@/socket/socketContext'; diff --git a/worklenz-frontend/src/components/task-list-v2/components/CustomColumnComponents.tsx b/worklenz-frontend/src/components/task-list-v2/components/CustomColumnComponents.tsx index a79839ac..5133679a 100644 --- a/worklenz-frontend/src/components/task-list-v2/components/CustomColumnComponents.tsx +++ b/worklenz-frontend/src/components/task-list-v2/components/CustomColumnComponents.tsx @@ -1,5 +1,5 @@ import React, { useState, useCallback, useMemo, memo, useEffect } from 'react'; -import { Button, Tooltip, Flex, Dropdown, DatePicker, Input } from 'antd'; +import { Button, Tooltip, Flex, Dropdown, DatePicker, Input } from '@/shared/antd-imports'; import { PlusOutlined, SettingOutlined, UsergroupAddOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/components/task-list-v2/components/DatePickerColumn.tsx b/worklenz-frontend/src/components/task-list-v2/components/DatePickerColumn.tsx index 22e90ed4..f41de431 100644 --- a/worklenz-frontend/src/components/task-list-v2/components/DatePickerColumn.tsx +++ b/worklenz-frontend/src/components/task-list-v2/components/DatePickerColumn.tsx @@ -1,5 +1,5 @@ import React, { memo, useCallback, useState } from 'react'; -import { DatePicker, Tooltip } from 'antd'; +import { DatePicker, Tooltip } from '@/shared/antd-imports'; import { CloseOutlined } from '@ant-design/icons'; import { dayjs, taskManagementAntdConfig } from '@/shared/antd-imports'; import { Task } from '@/types/task-management.types'; diff --git a/worklenz-frontend/src/components/task-list-v2/components/TaskListSkeleton.tsx b/worklenz-frontend/src/components/task-list-v2/components/TaskListSkeleton.tsx index 54351f60..e363deb1 100644 --- a/worklenz-frontend/src/components/task-list-v2/components/TaskListSkeleton.tsx +++ b/worklenz-frontend/src/components/task-list-v2/components/TaskListSkeleton.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Skeleton } from 'antd'; +import { Skeleton } from '@/shared/antd-imports'; import ImprovedTaskFilters from '@/components/task-management/improved-task-filters'; interface TaskListSkeletonProps { diff --git a/worklenz-frontend/src/components/task-list-v2/components/TaskRowColumns.tsx b/worklenz-frontend/src/components/task-list-v2/components/TaskRowColumns.tsx index 78548f50..62f36984 100644 --- a/worklenz-frontend/src/components/task-list-v2/components/TaskRowColumns.tsx +++ b/worklenz-frontend/src/components/task-list-v2/components/TaskRowColumns.tsx @@ -1,7 +1,7 @@ import React, { memo, useCallback, useState, useRef } from 'react'; import { CheckCircleOutlined, HolderOutlined, CloseOutlined, DownOutlined, RightOutlined, DoubleRightOutlined, ArrowsAltOutlined, CommentOutlined, EyeOutlined, PaperClipOutlined, MinusCircleOutlined, RetweetOutlined } from '@ant-design/icons'; -import { Checkbox, DatePicker, Tooltip, Input } from 'antd'; -import type { InputRef } from 'antd'; +import { Checkbox, DatePicker, Tooltip, Input } from '@/shared/antd-imports'; +import type { InputRef } from '@/shared/antd-imports'; import { dayjs, taskManagementAntdConfig } from '@/shared/antd-imports'; import { Task } from '@/types/task-management.types'; import { InlineMember } from '@/types/teamMembers/inlineMember.types'; diff --git a/worklenz-frontend/src/components/task-list-v2/components/TitleColumn.tsx b/worklenz-frontend/src/components/task-list-v2/components/TitleColumn.tsx index 990b4a16..860a4df8 100644 --- a/worklenz-frontend/src/components/task-list-v2/components/TitleColumn.tsx +++ b/worklenz-frontend/src/components/task-list-v2/components/TitleColumn.tsx @@ -1,7 +1,7 @@ import React, { memo, useCallback, useState, useRef, useEffect } from 'react'; import { RightOutlined, DoubleRightOutlined, ArrowsAltOutlined, CommentOutlined, EyeOutlined, PaperClipOutlined, MinusCircleOutlined, RetweetOutlined } from '@ant-design/icons'; -import { Input, Tooltip } from 'antd'; -import type { InputRef } from 'antd'; +import { Input, Tooltip } from '@/shared/antd-imports'; +import type { InputRef } from '@/shared/antd-imports'; import { createPortal } from 'react-dom'; import { Task } from '@/types/task-management.types'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/task-management/CreateTaskModal.tsx b/worklenz-frontend/src/components/task-management/CreateTaskModal.tsx index c69aad5d..4be8402a 100644 --- a/worklenz-frontend/src/components/task-management/CreateTaskModal.tsx +++ b/worklenz-frontend/src/components/task-management/CreateTaskModal.tsx @@ -1,5 +1,5 @@ import React, { useState, useCallback, useRef, useEffect } from 'react'; -import { Modal, Form, Input, Button, Tabs, Space, Divider, Typography, Flex, DatePicker, Select } from 'antd'; +import { Modal, Form, Input, Button, Tabs, Space, Divider, Typography, Flex, DatePicker, Select } from '@/shared/antd-imports'; import { PlusOutlined, DragOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; import { DndContext, DragEndEvent, PointerSensor, useSensor, useSensors } from '@dnd-kit/core'; @@ -14,7 +14,7 @@ import LabelsSelector from '@/components/LabelsSelector'; import { createStatus, fetchStatuses, fetchStatusesCategories } from '@/features/taskAttributes/taskStatusSlice'; import { statusApiService } from '@/api/taskAttributes/status/status.api.service'; import { ITaskStatusUpdateModel } from '@/types/tasks/task-status-update-model.types'; -import { Modal as AntModal } from 'antd'; +import { Modal as AntModal } from '@/shared/antd-imports'; import { useSocket } from '@/socket/socketContext'; import { SocketEvents } from '@/shared/socket-events'; import { useAuthService } from '@/hooks/useAuth'; diff --git a/worklenz-frontend/src/components/task-management/ManagePhaseModal.tsx b/worklenz-frontend/src/components/task-management/ManagePhaseModal.tsx index e746851c..61d2746f 100644 --- a/worklenz-frontend/src/components/task-management/ManagePhaseModal.tsx +++ b/worklenz-frontend/src/components/task-management/ManagePhaseModal.tsx @@ -1,5 +1,5 @@ import React, { useState, useCallback, useRef, useEffect } from 'react'; -import { Modal, Form, Input, Button, Space, Divider, Typography, Flex, ColorPicker, Tooltip } from 'antd'; +import { Modal, Form, Input, Button, Space, Divider, Typography, Flex, ColorPicker, Tooltip } from '@/shared/antd-imports'; import { PlusOutlined, HolderOutlined, EditOutlined, DeleteOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; import { DndContext, DragEndEvent, PointerSensor, useSensor, useSensors } from '@dnd-kit/core'; @@ -20,7 +20,7 @@ import { } from '@/features/projects/singleProject/phase/phases.slice'; import { updatePhaseLabel } from '@/features/project/project.slice'; import { ITaskPhase } from '@/types/tasks/taskPhase.types'; -import { Modal as AntModal } from 'antd'; +import { Modal as AntModal } from '@/shared/antd-imports'; import { fetchTasksV3 } from '@/features/task-management/task-management.slice'; import { fetchEnhancedKanbanGroups } from '@/features/enhanced-kanban/enhanced-kanban.slice'; import { PhaseColorCodes } from '@/shared/constants'; diff --git a/worklenz-frontend/src/components/task-management/ManageStatusModal.tsx b/worklenz-frontend/src/components/task-management/ManageStatusModal.tsx index 8c24c88b..4b678d79 100644 --- a/worklenz-frontend/src/components/task-management/ManageStatusModal.tsx +++ b/worklenz-frontend/src/components/task-management/ManageStatusModal.tsx @@ -1,5 +1,5 @@ import React, { useState, useCallback, useRef, useEffect } from 'react'; -import { Modal, Form, Input, Button, Space, Divider, Typography, Flex, Select, Tooltip } from 'antd'; +import { Modal, Form, Input, Button, Space, Divider, Typography, Flex, Select, Tooltip } from '@/shared/antd-imports'; import { PlusOutlined, HolderOutlined, EditOutlined, DeleteOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; import { DndContext, DragEndEvent, PointerSensor, useSensor, useSensors, DragOverEvent, useDroppable, closestCenter, DragOverlay } from '@dnd-kit/core'; @@ -12,7 +12,7 @@ import { createStatus, fetchStatuses, fetchStatusesCategories } from '@/features import { statusApiService } from '@/api/taskAttributes/status/status.api.service'; import { ITaskStatusUpdateModel } from '@/types/tasks/task-status-update-model.types'; import { IKanbanTaskStatus } from '@/types/tasks/taskStatus.types'; -import { Modal as AntModal } from 'antd'; +import { Modal as AntModal } from '@/shared/antd-imports'; import { fetchTasksV3 } from '@/features/task-management/task-management.slice'; import { fetchEnhancedKanbanGroups } from '@/features/enhanced-kanban/enhanced-kanban.slice'; import './ManageStatusModal.css'; diff --git a/worklenz-frontend/src/components/task-management/lazy-loading-optimizations.tsx b/worklenz-frontend/src/components/task-management/lazy-loading-optimizations.tsx index afdf83bb..259fe7a0 100644 --- a/worklenz-frontend/src/components/task-management/lazy-loading-optimizations.tsx +++ b/worklenz-frontend/src/components/task-management/lazy-loading-optimizations.tsx @@ -1,5 +1,5 @@ import React, { lazy, Suspense, ComponentType, ReactNode } from 'react'; -import { Skeleton, Spin } from 'antd'; +import { Skeleton, Spin } from '@/shared/antd-imports'; // Enhanced lazy loading with error boundary and retry logic export function createOptimizedLazy>( diff --git a/worklenz-frontend/src/components/task-management/optimized-bulk-action-bar.tsx b/worklenz-frontend/src/components/task-management/optimized-bulk-action-bar.tsx index 0797783f..28ea3e83 100644 --- a/worklenz-frontend/src/components/task-management/optimized-bulk-action-bar.tsx +++ b/worklenz-frontend/src/components/task-management/optimized-bulk-action-bar.tsx @@ -1,6 +1,6 @@ import React, { useMemo, useCallback, useState, useEffect, useRef } from 'react'; import { createPortal } from 'react-dom'; -import { Button, Typography, Dropdown, Popconfirm, Tooltip, Space, Badge, Divider } from 'antd'; +import { Button, Typography, Dropdown, Popconfirm, Tooltip, Space, Badge, Divider } from '@/shared/antd-imports'; import { DeleteOutlined, CloseOutlined, diff --git a/worklenz-frontend/src/components/task-management/performance-analysis.tsx b/worklenz-frontend/src/components/task-management/performance-analysis.tsx index 9e30789b..60499469 100644 --- a/worklenz-frontend/src/components/task-management/performance-analysis.tsx +++ b/worklenz-frontend/src/components/task-management/performance-analysis.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect, useCallback } from 'react'; -import { Card, Button, Table, Progress, Alert, Space, Typography, Divider } from 'antd'; +import { Card, Button, Table, Progress, Alert, Space, Typography, Divider } from '@/shared/antd-imports'; import { performanceMonitor } from '@/utils/performance-monitor'; const { Title, Text } = Typography; diff --git a/worklenz-frontend/src/components/task-management/task-list-board.tsx b/worklenz-frontend/src/components/task-management/task-list-board.tsx index ad2421f6..563986e5 100644 --- a/worklenz-frontend/src/components/task-management/task-list-board.tsx +++ b/worklenz-frontend/src/components/task-management/task-list-board.tsx @@ -14,7 +14,7 @@ import { useSensors, } from '@dnd-kit/core'; import { sortableKeyboardCoordinates } from '@dnd-kit/sortable'; -import { Card, Spin, Empty, Alert } from 'antd'; +import { Card, Spin, Empty, Alert } from '@/shared/antd-imports'; import { RootState } from '@/app/store'; import { selectAllTasks, diff --git a/worklenz-frontend/src/components/task-management/virtualized-task-list.tsx b/worklenz-frontend/src/components/task-management/virtualized-task-list.tsx index 0304c3a1..b6c25932 100644 --- a/worklenz-frontend/src/components/task-management/virtualized-task-list.tsx +++ b/worklenz-frontend/src/components/task-management/virtualized-task-list.tsx @@ -3,7 +3,7 @@ import { FixedSizeList as List, FixedSizeList } from 'react-window'; import { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable'; import { useSelector, useDispatch } from 'react-redux'; import { useTranslation } from 'react-i18next'; -import { Empty, Button, Input } from 'antd'; +import { Empty, Button, Input } from '@/shared/antd-imports'; import { RightOutlined, DownOutlined } from '@ant-design/icons'; import { taskManagementSelectors, diff --git a/worklenz-frontend/src/components/task-templates/task-template-drawer.tsx b/worklenz-frontend/src/components/task-templates/task-template-drawer.tsx index 881157db..4fca590a 100644 --- a/worklenz-frontend/src/components/task-templates/task-template-drawer.tsx +++ b/worklenz-frontend/src/components/task-templates/task-template-drawer.tsx @@ -1,5 +1,5 @@ import { useState } from 'react'; -import { Button, Drawer, Form, Input, List, Typography } from 'antd'; +import { Button, Drawer, Form, Input, List, Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/taskListCommon/labelsSelector/CustomColordLabel.old.tsx b/worklenz-frontend/src/components/taskListCommon/labelsSelector/CustomColordLabel.old.tsx index f31da318..b073dd21 100644 --- a/worklenz-frontend/src/components/taskListCommon/labelsSelector/CustomColordLabel.old.tsx +++ b/worklenz-frontend/src/components/taskListCommon/labelsSelector/CustomColordLabel.old.tsx @@ -1,4 +1,4 @@ -import { Tag, Tooltip } from 'antd'; +import { Tag, Tooltip } from '@/shared/antd-imports'; import { ITaskLabel } from '@/types/tasks/taskLabel.types'; interface ICustomColordLabelProps { diff --git a/worklenz-frontend/src/components/taskListCommon/labelsSelector/CustomNumberLabel.tsx b/worklenz-frontend/src/components/taskListCommon/labelsSelector/CustomNumberLabel.tsx index 976fe2e6..f898bf89 100644 --- a/worklenz-frontend/src/components/taskListCommon/labelsSelector/CustomNumberLabel.tsx +++ b/worklenz-frontend/src/components/taskListCommon/labelsSelector/CustomNumberLabel.tsx @@ -1,4 +1,4 @@ -import { Tag, Tooltip } from 'antd'; +import { Tag, Tooltip } from '@/shared/antd-imports'; interface ICustomNumberLabelProps { labelList: string[]; diff --git a/worklenz-frontend/src/components/taskListCommon/labelsSelector/LabelsSelector.tsx b/worklenz-frontend/src/components/taskListCommon/labelsSelector/LabelsSelector.tsx index 6b47cedc..64bd330e 100644 --- a/worklenz-frontend/src/components/taskListCommon/labelsSelector/LabelsSelector.tsx +++ b/worklenz-frontend/src/components/taskListCommon/labelsSelector/LabelsSelector.tsx @@ -10,7 +10,7 @@ import { InputRef, List, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { useEffect, useMemo, useRef, useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/components/taskListCommon/labelsSelector/color-changed-label.tsx b/worklenz-frontend/src/components/taskListCommon/labelsSelector/color-changed-label.tsx index 059b313f..0622bbb6 100644 --- a/worklenz-frontend/src/components/taskListCommon/labelsSelector/color-changed-label.tsx +++ b/worklenz-frontend/src/components/taskListCommon/labelsSelector/color-changed-label.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { LabelType } from '../../../types/label.type'; -import { Select, Tag, Tooltip } from 'antd'; +import { Select, Tag, Tooltip } from '@/shared/antd-imports'; import { PhaseColorCodes } from '../../../shared/constants'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/taskListCommon/phase-dropdown/phase-dropdown.tsx b/worklenz-frontend/src/components/taskListCommon/phase-dropdown/phase-dropdown.tsx index 307b3a5e..1e000d85 100644 --- a/worklenz-frontend/src/components/taskListCommon/phase-dropdown/phase-dropdown.tsx +++ b/worklenz-frontend/src/components/taskListCommon/phase-dropdown/phase-dropdown.tsx @@ -1,4 +1,4 @@ -import { Badge, Flex, Select, Tooltip, Typography } from 'antd'; +import { Badge, Flex, Select, Tooltip, Typography } from '@/shared/antd-imports'; import './phase-dropdown.css'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/components/taskListCommon/priorityDropdown/PriorityDropdown.tsx b/worklenz-frontend/src/components/taskListCommon/priorityDropdown/PriorityDropdown.tsx index 940bdecf..60b5c68f 100644 --- a/worklenz-frontend/src/components/taskListCommon/priorityDropdown/PriorityDropdown.tsx +++ b/worklenz-frontend/src/components/taskListCommon/priorityDropdown/PriorityDropdown.tsx @@ -1,4 +1,4 @@ -import { Card, Dropdown, Flex, Menu, MenuProps, Typography } from 'antd'; +import { Card, Dropdown, Flex, Menu, MenuProps, Typography } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { DoubleLeftOutlined, DownOutlined, MinusOutlined, PauseOutlined } from '@ant-design/icons'; // custom css file diff --git a/worklenz-frontend/src/components/taskListCommon/statusDropdown/StatusDropdown.tsx b/worklenz-frontend/src/components/taskListCommon/statusDropdown/StatusDropdown.tsx index 49a5a0d8..d85fe078 100644 --- a/worklenz-frontend/src/components/taskListCommon/statusDropdown/StatusDropdown.tsx +++ b/worklenz-frontend/src/components/taskListCommon/statusDropdown/StatusDropdown.tsx @@ -1,4 +1,4 @@ -import { Badge, Card, Dropdown, Flex, Menu, MenuProps, Typography } from 'antd'; +import { Badge, Card, Dropdown, Flex, Menu, MenuProps, Typography } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; import { DownOutlined } from '@ant-design/icons'; import './statusDropdown.css'; diff --git a/worklenz-frontend/src/components/taskListCommon/task-list-bulk-actions-bar/components/AssigneesDropdown.tsx b/worklenz-frontend/src/components/taskListCommon/task-list-bulk-actions-bar/components/AssigneesDropdown.tsx index 8b02eb4b..bf459284 100644 --- a/worklenz-frontend/src/components/taskListCommon/task-list-bulk-actions-bar/components/AssigneesDropdown.tsx +++ b/worklenz-frontend/src/components/taskListCommon/task-list-bulk-actions-bar/components/AssigneesDropdown.tsx @@ -1,4 +1,4 @@ -import { Button, Card, Checkbox, Flex, List, Typography } from 'antd'; +import { Button, Card, Checkbox, Flex, List, Typography } from '@/shared/antd-imports'; import { CheckboxChangeEvent } from 'antd/es/checkbox'; import { ITeamMemberViewModel } from '@/types/teamMembers/teamMembersGetResponse.types'; import SingleAvatar from '@/components/common/single-avatar/single-avatar'; diff --git a/worklenz-frontend/src/components/taskListCommon/task-list-bulk-actions-bar/components/LabelsDropdown.tsx b/worklenz-frontend/src/components/taskListCommon/task-list-bulk-actions-bar/components/LabelsDropdown.tsx index c069a987..c4692b3d 100644 --- a/worklenz-frontend/src/components/taskListCommon/task-list-bulk-actions-bar/components/LabelsDropdown.tsx +++ b/worklenz-frontend/src/components/taskListCommon/task-list-bulk-actions-bar/components/LabelsDropdown.tsx @@ -1,4 +1,4 @@ -import { Badge, Button, Card, Checkbox, Empty, Flex, Input, List, Typography } from 'antd'; +import { Badge, Button, Card, Checkbox, Empty, Flex, Input, List, Typography } from '@/shared/antd-imports'; import { CheckboxChangeEvent } from 'antd/es/checkbox'; import { ITaskLabel } from '@/types/tasks/taskLabel.types'; import { InputRef } from 'antd/es/input'; diff --git a/worklenz-frontend/src/features/i18n/language-selector.tsx b/worklenz-frontend/src/features/i18n/language-selector.tsx index fd61c8c0..36c88757 100644 --- a/worklenz-frontend/src/features/i18n/language-selector.tsx +++ b/worklenz-frontend/src/features/i18n/language-selector.tsx @@ -1,4 +1,4 @@ -import { Button, Dropdown } from 'antd'; +import { Button, Dropdown } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { ILanguageType, setLanguage } from './localesSlice'; diff --git a/worklenz-frontend/src/features/navbar/help/HelpButton.tsx b/worklenz-frontend/src/features/navbar/help/HelpButton.tsx index 6796c595..72b2d90a 100644 --- a/worklenz-frontend/src/features/navbar/help/HelpButton.tsx +++ b/worklenz-frontend/src/features/navbar/help/HelpButton.tsx @@ -1,5 +1,5 @@ import { QuestionCircleOutlined } from '@ant-design/icons'; -import { Button, Tooltip } from 'antd'; +import { Button, Tooltip } from '@/shared/antd-imports'; import React from 'react'; import { useTranslation } from 'react-i18next'; import './HelpButton.css'; diff --git a/worklenz-frontend/src/features/navbar/invite/InviteButton.tsx b/worklenz-frontend/src/features/navbar/invite/InviteButton.tsx index f9bf0248..2db618ef 100644 --- a/worklenz-frontend/src/features/navbar/invite/InviteButton.tsx +++ b/worklenz-frontend/src/features/navbar/invite/InviteButton.tsx @@ -1,5 +1,5 @@ import { UsergroupAddOutlined } from '@ant-design/icons'; -import { Button, Tooltip } from 'antd'; +import { Button, Tooltip } from '@/shared/antd-imports'; import React from 'react'; import { useTranslation } from 'react-i18next'; import { colors } from '../../../styles/colors'; diff --git a/worklenz-frontend/src/features/navbar/mobileMenu/MobileMenuButton.tsx b/worklenz-frontend/src/features/navbar/mobileMenu/MobileMenuButton.tsx index 93611545..1d82cb3b 100644 --- a/worklenz-frontend/src/features/navbar/mobileMenu/MobileMenuButton.tsx +++ b/worklenz-frontend/src/features/navbar/mobileMenu/MobileMenuButton.tsx @@ -6,7 +6,7 @@ import { QuestionCircleOutlined, ReadOutlined, } from '@ant-design/icons'; -import { Button, Card, Dropdown, Flex, MenuProps, Space, Typography } from 'antd'; +import { Button, Card, Dropdown, Flex, MenuProps, Space, Typography } from '@/shared/antd-imports'; import React from 'react'; import { useTranslation } from 'react-i18next'; import { colors } from '../../../styles/colors'; diff --git a/worklenz-frontend/src/features/navbar/navbar.tsx b/worklenz-frontend/src/features/navbar/navbar.tsx index fb67f6ee..1630c25e 100644 --- a/worklenz-frontend/src/features/navbar/navbar.tsx +++ b/worklenz-frontend/src/features/navbar/navbar.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useState, useMemo } from 'react'; import { Link, useLocation } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; -import { Col, ConfigProvider, Flex, Menu, MenuProps, Alert } from 'antd'; +import { Col, ConfigProvider, Flex, Menu, MenuProps, Alert } from '@/shared/antd-imports'; import { createPortal } from 'react-dom'; import InviteTeamMembers from '../../components/common/invite-team-members/invite-team-members'; diff --git a/worklenz-frontend/src/features/navbar/switchTeam/SwitchTeamButton.tsx b/worklenz-frontend/src/features/navbar/switchTeam/SwitchTeamButton.tsx index c017b23b..f3da6cb5 100644 --- a/worklenz-frontend/src/features/navbar/switchTeam/SwitchTeamButton.tsx +++ b/worklenz-frontend/src/features/navbar/switchTeam/SwitchTeamButton.tsx @@ -2,7 +2,7 @@ import { BankOutlined, CaretDownFilled, CheckCircleFilled } from '@ant-design/icons'; // Ant Design Components -import { Card, Divider, Dropdown, Flex, Tooltip, Typography } from 'antd'; +import { Card, Divider, Dropdown, Flex, Tooltip, Typography } from '@/shared/antd-imports'; // Redux Hooks import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/navbar/timers/timer-button.tsx b/worklenz-frontend/src/features/navbar/timers/timer-button.tsx index 6c1b031b..06a852e3 100644 --- a/worklenz-frontend/src/features/navbar/timers/timer-button.tsx +++ b/worklenz-frontend/src/features/navbar/timers/timer-button.tsx @@ -1,5 +1,5 @@ import { ClockCircleOutlined, StopOutlined } from '@ant-design/icons'; -import { Badge, Button, Dropdown, List, Tooltip, Typography, Space, Divider, theme } from 'antd'; +import { Badge, Button, Dropdown, List, Tooltip, Typography, Space, Divider, theme } from '@/shared/antd-imports'; import React, { useEffect, useState, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { taskTimeLogsApiService, IRunningTimer } from '@/api/tasks/task-time-logs.api.service'; diff --git a/worklenz-frontend/src/features/navbar/upgradePlan/UpgradePlanButton.tsx b/worklenz-frontend/src/features/navbar/upgradePlan/UpgradePlanButton.tsx index f09457cd..16c1332c 100644 --- a/worklenz-frontend/src/features/navbar/upgradePlan/UpgradePlanButton.tsx +++ b/worklenz-frontend/src/features/navbar/upgradePlan/UpgradePlanButton.tsx @@ -1,4 +1,4 @@ -import { Button, Tooltip } from 'antd'; +import { Button, Tooltip } from '@/shared/antd-imports'; import React from 'react'; import { colors } from '../../../styles/colors'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/features/navbar/user-profile/profile-button.tsx b/worklenz-frontend/src/features/navbar/user-profile/profile-button.tsx index 1be5c3e4..18c153a6 100644 --- a/worklenz-frontend/src/features/navbar/user-profile/profile-button.tsx +++ b/worklenz-frontend/src/features/navbar/user-profile/profile-button.tsx @@ -1,5 +1,5 @@ import { UserOutlined } from '@ant-design/icons'; -import { Button, Card, Dropdown, Flex, MenuProps, Tooltip, Typography } from 'antd'; +import { Button, Card, Dropdown, Flex, MenuProps, Tooltip, Typography } from '@/shared/antd-imports'; import { Link } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/features/projects/bulkActions/BulkTasksActionContainer.tsx b/worklenz-frontend/src/features/projects/bulkActions/BulkTasksActionContainer.tsx index c0c3e27e..6b5187ae 100644 --- a/worklenz-frontend/src/features/projects/bulkActions/BulkTasksActionContainer.tsx +++ b/worklenz-frontend/src/features/projects/bulkActions/BulkTasksActionContainer.tsx @@ -8,7 +8,7 @@ import { UserAddOutlined, UsergroupAddOutlined, } from '@ant-design/icons'; -import { Button, Flex, Tooltip, Typography } from 'antd'; +import { Button, Flex, Tooltip, Typography } from '@/shared/antd-imports'; import { colors } from '../../../styles/colors'; type BulkTasksActionProps = { diff --git a/worklenz-frontend/src/features/projects/singleProject/phase/ConfigPhaseButton.tsx b/worklenz-frontend/src/features/projects/singleProject/phase/ConfigPhaseButton.tsx index 23e6773d..c35664d0 100644 --- a/worklenz-frontend/src/features/projects/singleProject/phase/ConfigPhaseButton.tsx +++ b/worklenz-frontend/src/features/projects/singleProject/phase/ConfigPhaseButton.tsx @@ -1,5 +1,5 @@ import { SettingOutlined } from '@ant-design/icons'; -import { Button, Tooltip } from 'antd'; +import { Button, Tooltip } from '@/shared/antd-imports'; import React from 'react'; import { useAppDispatch } from '../../../../hooks/useAppDispatch'; import { toggleDrawer } from './phases.slice'; diff --git a/worklenz-frontend/src/features/projects/singleProject/phase/PhaseDrawer.tsx b/worklenz-frontend/src/features/projects/singleProject/phase/PhaseDrawer.tsx index 3b9d8f52..49de1ac3 100644 --- a/worklenz-frontend/src/features/projects/singleProject/phase/PhaseDrawer.tsx +++ b/worklenz-frontend/src/features/projects/singleProject/phase/PhaseDrawer.tsx @@ -1,4 +1,4 @@ -import { Button, Drawer, Flex, Input, Skeleton, Spin, Typography } from 'antd'; +import { Button, Drawer, Flex, Input, Skeleton, Spin, Typography } from '@/shared/antd-imports'; import { useState } from 'react'; import { useAppSelector } from '../../../../hooks/useAppSelector'; import { useAppDispatch } from '../../../../hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/projects/singleProject/phase/PhaseHeader.tsx b/worklenz-frontend/src/features/projects/singleProject/phase/PhaseHeader.tsx index e10df057..5b36cbde 100644 --- a/worklenz-frontend/src/features/projects/singleProject/phase/PhaseHeader.tsx +++ b/worklenz-frontend/src/features/projects/singleProject/phase/PhaseHeader.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { useAppSelector } from '../../../../hooks/useAppSelector'; -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import ConfigPhaseButton from './ConfigPhaseButton'; import { colors } from '../../../../styles/colors'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/features/projects/singleProject/phase/PhaseOptionItem.tsx b/worklenz-frontend/src/features/projects/singleProject/phase/PhaseOptionItem.tsx index 091ebb6f..e27e8e1f 100644 --- a/worklenz-frontend/src/features/projects/singleProject/phase/PhaseOptionItem.tsx +++ b/worklenz-frontend/src/features/projects/singleProject/phase/PhaseOptionItem.tsx @@ -1,4 +1,4 @@ -import { Button, ColorPicker, ConfigProvider, Flex, Input } from 'antd'; +import { Button, ColorPicker, ConfigProvider, Flex, Input } from '@/shared/antd-imports'; import { CloseCircleOutlined, HolderOutlined } from '@ant-design/icons'; import { nanoid } from '@reduxjs/toolkit'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/projects/update-project/update-project-drawer.tsx b/worklenz-frontend/src/features/projects/update-project/update-project-drawer.tsx index 9c323992..d0028a95 100644 --- a/worklenz-frontend/src/features/projects/update-project/update-project-drawer.tsx +++ b/worklenz-frontend/src/features/projects/update-project/update-project-drawer.tsx @@ -11,7 +11,7 @@ import { Select, Tag, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import React, { useRef, useState } from 'react'; import { healthStatusData, diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/activity-log-tab/activity-log-card.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/activity-log-tab/activity-log-card.tsx index f5434c06..47137776 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/activity-log-tab/activity-log-card.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/activity-log-tab/activity-log-card.tsx @@ -1,4 +1,4 @@ -import { Card, ConfigProvider, Tag, Timeline, Typography } from 'antd'; +import { Card, ConfigProvider, Tag, Timeline, Typography } from '@/shared/antd-imports'; import { simpleDateFormat } from '@/utils/simpleDateFormat'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { colors } from '../../../../../styles/colors'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/activity-log-tab/members-reports-activity-logs-tab.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/activity-log-tab/members-reports-activity-logs-tab.tsx index b933164b..cfc3164c 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/activity-log-tab/members-reports-activity-logs-tab.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/activity-log-tab/members-reports-activity-logs-tab.tsx @@ -1,4 +1,4 @@ -import { Flex, Skeleton } from 'antd'; +import { Flex, Skeleton } from '@/shared/antd-imports'; import React, { useEffect, useMemo, useState } from 'react'; import EmptyListPlaceholder from '@/components/EmptyListPlaceholder'; import ActivityLogCard from './activity-log-card'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/members-reports-drawer-tabs.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/members-reports-drawer-tabs.tsx index 209c5a7b..9bb22c5e 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/members-reports-drawer-tabs.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/members-reports-drawer-tabs.tsx @@ -1,4 +1,4 @@ -import { Tabs } from 'antd'; +import { Tabs } from '@/shared/antd-imports'; import { TabsProps } from 'antd/lib'; import React from 'react'; import MembersReportsOverviewTab from './overviewTab/MembersReportsOverviewTab'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/members-reports-drawer.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/members-reports-drawer.tsx index 9262dd61..fca70984 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/members-reports-drawer.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/members-reports-drawer.tsx @@ -1,4 +1,4 @@ -import { Drawer, Typography, Flex, Button, Space, Dropdown } from 'antd'; +import { Drawer, Typography, Flex, Button, Space, Dropdown } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { toggleMembersReportsDrawer } from '../membersReportsSlice'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/MembersReportsPriorityGraph.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/MembersReportsPriorityGraph.tsx index d2155d75..6cedb1f6 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/MembersReportsPriorityGraph.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/MembersReportsPriorityGraph.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Doughnut } from 'react-chartjs-2'; import { Chart, ArcElement, Tooltip } from 'chart.js'; -import { Badge, Card, Flex, Typography } from 'antd'; +import { Badge, Card, Flex, Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { IRPTOverviewMemberChartData } from '@/types/reporting/reporting.types'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/MembersReportsProjectGraph.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/MembersReportsProjectGraph.tsx index d7732d51..210ebb42 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/MembersReportsProjectGraph.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/MembersReportsProjectGraph.tsx @@ -1,6 +1,6 @@ import { Doughnut } from 'react-chartjs-2'; import { Chart, ArcElement, Tooltip } from 'chart.js'; -import { Badge, Card, Flex, Typography, Tooltip as AntTooltip } from 'antd'; +import { Badge, Card, Flex, Typography, Tooltip as AntTooltip } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { IRPTOverviewMemberChartData } from '@/types/reporting/reporting.types'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/MembersReportsStatusGraph.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/MembersReportsStatusGraph.tsx index eeed8eab..b2bf6752 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/MembersReportsStatusGraph.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/MembersReportsStatusGraph.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Doughnut } from 'react-chartjs-2'; import { Chart, ArcElement, Tooltip } from 'chart.js'; -import { Badge, Card, Flex, Typography } from 'antd'; +import { Badge, Card, Flex, Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { IRPTOverviewMemberChartData } from '@/types/reporting/reporting.types'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-projects-stats-drawer/members-overview-projects-stats-drawer.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-projects-stats-drawer/members-overview-projects-stats-drawer.tsx index 78032d30..a14354b2 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-projects-stats-drawer/members-overview-projects-stats-drawer.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-projects-stats-drawer/members-overview-projects-stats-drawer.tsx @@ -1,4 +1,4 @@ -import { Drawer, Typography } from 'antd'; +import { Drawer, Typography } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-projects-stats-drawer/members-overview-projects-stats-table.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-projects-stats-drawer/members-overview-projects-stats-table.tsx index c17d0733..89f1ee1f 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-projects-stats-drawer/members-overview-projects-stats-table.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-projects-stats-drawer/members-overview-projects-stats-table.tsx @@ -1,5 +1,5 @@ import { memo } from 'react'; -import { ConfigProvider, Flex, Skeleton, Spin, Table, TableColumnsType, Typography } from 'antd'; +import { ConfigProvider, Flex, Skeleton, Spin, Table, TableColumnsType, Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import CustomTableTitle from '@components/CustomTableTitle'; import { simpleDateFormat } from '@/utils/simpleDateFormat'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-tasks-stats-drawer/members-overview-tasks-stats-drawer.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-tasks-stats-drawer/members-overview-tasks-stats-drawer.tsx index 0a574fd7..e9443187 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-tasks-stats-drawer/members-overview-tasks-stats-drawer.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-tasks-stats-drawer/members-overview-tasks-stats-drawer.tsx @@ -1,4 +1,4 @@ -import { Drawer, Typography } from 'antd'; +import { Drawer, Typography } from '@/shared/antd-imports'; import React, { useMemo, useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-tasks-stats-drawer/members-overview-tasks-stats-table.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-tasks-stats-drawer/members-overview-tasks-stats-table.tsx index 75d05303..b740d8aa 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-tasks-stats-drawer/members-overview-tasks-stats-table.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-tasks-stats-drawer/members-overview-tasks-stats-table.tsx @@ -1,4 +1,4 @@ -import { Badge, Collapse, Flex, Table, TableColumnsType, Tag, Typography } from 'antd'; +import { Badge, Collapse, Flex, Table, TableColumnsType, Tag, Typography } from '@/shared/antd-imports'; import CustomTableTitle from '@components/CustomTableTitle'; import { colors } from '@/styles/colors'; import dayjs from 'dayjs'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-reports-stat-card.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-reports-stat-card.tsx index a4735fdd..34737c4d 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-reports-stat-card.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-reports-stat-card.tsx @@ -3,7 +3,7 @@ import { ExclamationCircleOutlined, FileExcelOutlined, } from '@ant-design/icons'; -import { Button, Card, Flex } from 'antd'; +import { Button, Card, Flex } from '@/shared/antd-imports'; import React, { ReactNode } from 'react'; import { useTranslation } from 'react-i18next'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/MembersReportsTasksTab.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/MembersReportsTasksTab.tsx index 9ea4dbac..362a6f80 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/MembersReportsTasksTab.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/MembersReportsTasksTab.tsx @@ -1,4 +1,4 @@ -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import React, { useEffect, useMemo, useState } from 'react'; import CustomSearchbar from '../../../../../components/CustomSearchbar'; import { fetchData } from '@/utils/fetchData'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/MembersReportsTasksTable.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/MembersReportsTasksTable.tsx index 7ca70cc8..cfd9928f 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/MembersReportsTasksTable.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/MembersReportsTasksTable.tsx @@ -1,4 +1,4 @@ -import { Badge, Flex, Table, TableColumnsType, Tag, Typography } from 'antd'; +import { Badge, Flex, Table, TableColumnsType, Tag, Typography } from '@/shared/antd-imports'; import React from 'react'; import dayjs from 'dayjs'; import { DoubleRightOutlined } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/ProjectFilter.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/ProjectFilter.tsx index b0a7c4f4..d242b8ea 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/ProjectFilter.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/ProjectFilter.tsx @@ -1,5 +1,5 @@ import { IRPTOverviewProject } from '@/types/reporting/reporting.types'; -import { Flex, Select, Typography } from 'antd'; +import { Flex, Select, Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; type ProjectFilterProps = { diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/billable-filter.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/billable-filter.tsx index c0521146..1612a4fc 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/billable-filter.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/billable-filter.tsx @@ -1,5 +1,5 @@ import { CaretDownFilled } from '@ant-design/icons'; -import { Button, Card, Checkbox, Dropdown, List, Space } from 'antd'; +import { Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/members-reports-time-logs-tab.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/members-reports-time-logs-tab.tsx index 67bac8f8..c6516291 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/members-reports-time-logs-tab.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/members-reports-time-logs-tab.tsx @@ -1,4 +1,4 @@ -import { Flex, Skeleton } from 'antd'; +import { Flex, Skeleton } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; import BillableFilter from './billable-filter'; import { fetchData } from '@/utils/fetchData'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/time-log-card.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/time-log-card.tsx index 1d64bab4..a44ca056 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/time-log-card.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/time-log-card.tsx @@ -1,4 +1,4 @@ -import { Card, ConfigProvider, Tag, Timeline, Typography } from 'antd'; +import { Card, ConfigProvider, Tag, Timeline, Typography } from '@/shared/antd-imports'; import { simpleDateFormat } from '@/utils/simpleDateFormat'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/ProjectReportsDrawer.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/ProjectReportsDrawer.tsx index 37fa99b7..49a71ecd 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/ProjectReportsDrawer.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/ProjectReportsDrawer.tsx @@ -1,4 +1,4 @@ -import { Drawer, Typography, Flex, Button, Dropdown } from 'antd'; +import { Drawer, Typography, Flex, Button, Dropdown } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { useAppSelector } from '../../../../hooks/useAppSelector'; import { useAppDispatch } from '../../../../hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/ProjectReportsDrawerTabs.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/ProjectReportsDrawerTabs.tsx index 6cf0083d..804f49e2 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/ProjectReportsDrawerTabs.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/ProjectReportsDrawerTabs.tsx @@ -1,4 +1,4 @@ -import { Tabs } from 'antd'; +import { Tabs } from '@/shared/antd-imports'; import { TabsProps } from 'antd/lib'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/ProjectReportsMembersTab.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/ProjectReportsMembersTab.tsx index 620ef912..cf9ba654 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/ProjectReportsMembersTab.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/ProjectReportsMembersTab.tsx @@ -1,4 +1,4 @@ -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import { useEffect, useMemo, useState } from 'react'; import CustomSearchbar from '../../../../../components/CustomSearchbar'; import ProjectReportsMembersTable from './ProjectReportsMembersTable'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/ProjectReportsMembersTable.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/ProjectReportsMembersTable.tsx index eb675eef..0ad20740 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/ProjectReportsMembersTable.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/ProjectReportsMembersTable.tsx @@ -1,4 +1,4 @@ -import { Progress, Table, TableColumnsType } from 'antd'; +import { Progress, Table, TableColumnsType } from '@/shared/antd-imports'; import React from 'react'; import CustomTableTitle from '../../../../../components/CustomTableTitle'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskDrawer.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskDrawer.tsx index 432c0ae0..4059fe3b 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskDrawer.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskDrawer.tsx @@ -1,4 +1,4 @@ -import { Drawer, Typography, Flex, Button } from 'antd'; +import { Drawer, Typography, Flex, Button } from '@/shared/antd-imports'; import React, { useMemo, useState } from 'react'; import { FileOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskTable.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskTable.tsx index 5905b121..06c5da9f 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskTable.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskTable.tsx @@ -1,7 +1,7 @@ import { useTranslation } from 'react-i18next'; import React from 'react'; import { createPortal } from 'react-dom'; -import { Badge, Flex, Table, TableColumnsType, Tag, Typography } from 'antd'; +import { Badge, Flex, Table, TableColumnsType, Tag, Typography } from '@/shared/antd-imports'; import dayjs from 'dayjs'; import { DoubleRightOutlined } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsDueDateGraph.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsDueDateGraph.tsx index 2acdc99c..494407e2 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsDueDateGraph.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsDueDateGraph.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Doughnut } from 'react-chartjs-2'; import { Chart, ArcElement, Tooltip } from 'chart.js'; -import { Badge, Card, Flex, Typography } from 'antd'; +import { Badge, Card, Flex, Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { IRPTOverviewProjectTasksByDue } from '@/types/reporting/reporting.types'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsPriorityGraph.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsPriorityGraph.tsx index cbaa0d77..a97860cb 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsPriorityGraph.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsPriorityGraph.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Doughnut } from 'react-chartjs-2'; import { Chart, ArcElement, Tooltip } from 'chart.js'; -import { Badge, Card, Flex, Typography } from 'antd'; +import { Badge, Card, Flex, Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { IRPTOverviewProjectTasksByPriority } from '@/types/reporting/reporting.types'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsStatCard.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsStatCard.tsx index 9d43214b..fb9cf3ad 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsStatCard.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsStatCard.tsx @@ -4,7 +4,7 @@ import { ExclamationCircleOutlined, FileExcelOutlined, } from '@ant-design/icons'; -import { Card, Flex, Typography } from 'antd'; +import { Card, Flex, Typography } from '@/shared/antd-imports'; import React, { ReactNode } from 'react'; import { colors } from '../../../../../styles/colors'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsStatusGraph.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsStatusGraph.tsx index bf08d1d5..8cdee581 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsStatusGraph.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsStatusGraph.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Doughnut } from 'react-chartjs-2'; import { Chart, ArcElement, Tooltip } from 'chart.js'; -import { Badge, Card, Flex, Typography } from 'antd'; +import { Badge, Card, Flex, Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { IRPTOverviewProjectTasksByStatus } from '@/types/reporting/reporting.types'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/ProjectReportsTaskTable.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/ProjectReportsTaskTable.tsx index 7afed0bb..3fc58c66 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/ProjectReportsTaskTable.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/ProjectReportsTaskTable.tsx @@ -1,4 +1,4 @@ -import { Badge, Collapse, Flex, Table, TableColumnsType, Tag, Typography } from 'antd'; +import { Badge, Collapse, Flex, Table, TableColumnsType, Tag, Typography } from '@/shared/antd-imports'; import { useEffect } from 'react'; import CustomTableTitle from '@/components/CustomTableTitle'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/ProjectReportsTasksTab.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/ProjectReportsTasksTab.tsx index 1df6ac9b..f9976dd3 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/ProjectReportsTasksTab.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/ProjectReportsTasksTab.tsx @@ -1,4 +1,4 @@ -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import React, { useEffect, useMemo, useState } from 'react'; import CustomSearchbar from '@components/CustomSearchbar'; import GroupByFilter from './group-by-filter'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/group-by-filter.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/group-by-filter.tsx index f11f0a70..fd6dfda1 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/group-by-filter.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/group-by-filter.tsx @@ -1,6 +1,6 @@ import { IGroupBy } from '@/features/board/board-slice'; import { CaretDownFilled } from '@ant-design/icons'; -import { Flex, Select } from 'antd'; +import { Flex, Select } from '@/shared/antd-imports'; import React from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/features/schedule-old/ProjectTimelineModal.tsx b/worklenz-frontend/src/features/schedule-old/ProjectTimelineModal.tsx index fa613baa..937cca67 100644 --- a/worklenz-frontend/src/features/schedule-old/ProjectTimelineModal.tsx +++ b/worklenz-frontend/src/features/schedule-old/ProjectTimelineModal.tsx @@ -1,4 +1,4 @@ -import { Button, Col, DatePicker, Flex, Input, Row } from 'antd'; +import { Button, Col, DatePicker, Flex, Input, Row } from '@/shared/antd-imports'; import React from 'react'; import { useDispatch } from 'react-redux'; import { toggleModal } from './scheduleSlice'; diff --git a/worklenz-frontend/src/features/schedule-old/ScheduleDrawer.tsx b/worklenz-frontend/src/features/schedule-old/ScheduleDrawer.tsx index b9753d34..9ecd9765 100644 --- a/worklenz-frontend/src/features/schedule-old/ScheduleDrawer.tsx +++ b/worklenz-frontend/src/features/schedule-old/ScheduleDrawer.tsx @@ -1,4 +1,4 @@ -import { Avatar, Drawer, Tabs, TabsProps } from 'antd'; +import { Avatar, Drawer, Tabs, TabsProps } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { toggleScheduleDrawer } from './scheduleSlice'; diff --git a/worklenz-frontend/src/features/schedule-old/ScheduleSettingsDrawer.tsx b/worklenz-frontend/src/features/schedule-old/ScheduleSettingsDrawer.tsx index 65a126b3..cbe93b88 100644 --- a/worklenz-frontend/src/features/schedule-old/ScheduleSettingsDrawer.tsx +++ b/worklenz-frontend/src/features/schedule-old/ScheduleSettingsDrawer.tsx @@ -1,4 +1,4 @@ -import { Button, Checkbox, Col, Drawer, Form, Input, Row } from 'antd'; +import { Button, Checkbox, Col, Drawer, Form, Input, Row } from '@/shared/antd-imports'; import React, { ReactHTMLElement, useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { toggleSettingsDrawer, updateSettings } from './scheduleSlice'; diff --git a/worklenz-frontend/src/features/schedule/ProjectTimelineModal.tsx b/worklenz-frontend/src/features/schedule/ProjectTimelineModal.tsx index 079d2e90..ce0b7532 100644 --- a/worklenz-frontend/src/features/schedule/ProjectTimelineModal.tsx +++ b/worklenz-frontend/src/features/schedule/ProjectTimelineModal.tsx @@ -1,6 +1,6 @@ import { useAppDispatch } from '@/hooks/useAppDispatch'; import { ScheduleData } from '@/types/schedule/schedule-v2.types'; -import { Button, Col, DatePicker, Flex, Form, Input, Row } from 'antd'; +import { Button, Col, DatePicker, Flex, Form, Input, Row } from '@/shared/antd-imports'; import React, { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { createSchedule, fetchTeamData } from './scheduleSlice'; diff --git a/worklenz-frontend/src/features/schedule/ScheduleDrawer.tsx b/worklenz-frontend/src/features/schedule/ScheduleDrawer.tsx index 7f21a2af..a8604051 100644 --- a/worklenz-frontend/src/features/schedule/ScheduleDrawer.tsx +++ b/worklenz-frontend/src/features/schedule/ScheduleDrawer.tsx @@ -1,4 +1,4 @@ -import { Avatar, Drawer, Tabs, TabsProps } from 'antd'; +import { Avatar, Drawer, Tabs, TabsProps } from '@/shared/antd-imports'; import React from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/schedule/ScheduleSettingsDrawer.tsx b/worklenz-frontend/src/features/schedule/ScheduleSettingsDrawer.tsx index 63ce9643..3b3d06c4 100644 --- a/worklenz-frontend/src/features/schedule/ScheduleSettingsDrawer.tsx +++ b/worklenz-frontend/src/features/schedule/ScheduleSettingsDrawer.tsx @@ -1,4 +1,4 @@ -import { Button, Checkbox, Col, Drawer, Form, Input, Row } from 'antd'; +import { Button, Checkbox, Col, Drawer, Form, Input, Row } from '@/shared/antd-imports'; import React, { ReactHTMLElement, useEffect, useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { diff --git a/worklenz-frontend/src/features/settings/categories/CustomColorsCategoryTag.tsx b/worklenz-frontend/src/features/settings/categories/CustomColorsCategoryTag.tsx index 060cb189..b0588e1a 100644 --- a/worklenz-frontend/src/features/settings/categories/CustomColorsCategoryTag.tsx +++ b/worklenz-frontend/src/features/settings/categories/CustomColorsCategoryTag.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Tag, Typography } from 'antd'; +import { Tag, Typography } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import { IProjectCategory } from '@/types/project/projectCategory.types'; diff --git a/worklenz-frontend/src/features/settings/categories/color-changed-category.tsx b/worklenz-frontend/src/features/settings/categories/color-changed-category.tsx index f0de1ae1..9d97ff6d 100644 --- a/worklenz-frontend/src/features/settings/categories/color-changed-category.tsx +++ b/worklenz-frontend/src/features/settings/categories/color-changed-category.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Select, Tag, Tooltip } from 'antd'; +import { Select, Tag, Tooltip } from '@/shared/antd-imports'; import { CategoryType } from '../../../types/categories.types'; import { useTranslation } from 'react-i18next'; import { PhaseColorCodes } from '../../../shared/constants'; diff --git a/worklenz-frontend/src/features/settings/client/CreateClientDrawer.tsx b/worklenz-frontend/src/features/settings/client/CreateClientDrawer.tsx index 7c5e911f..5e3ca781 100644 --- a/worklenz-frontend/src/features/settings/client/CreateClientDrawer.tsx +++ b/worklenz-frontend/src/features/settings/client/CreateClientDrawer.tsx @@ -1,4 +1,4 @@ -import { Button, Drawer, Form, Input, message, Typography } from 'antd'; +import { Button, Drawer, Form, Input, message, Typography } from '@/shared/antd-imports'; import React from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/settings/client/UpdateClientDrawer.tsx b/worklenz-frontend/src/features/settings/client/UpdateClientDrawer.tsx index d23a0960..076b7800 100644 --- a/worklenz-frontend/src/features/settings/client/UpdateClientDrawer.tsx +++ b/worklenz-frontend/src/features/settings/client/UpdateClientDrawer.tsx @@ -1,4 +1,4 @@ -import { Button, Drawer, Form, Input, message, Typography } from 'antd'; +import { Button, Drawer, Form, Input, message, Typography } from '@/shared/antd-imports'; import React, { useEffect } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/settings/job/CreateJobTitlesDrawer.tsx b/worklenz-frontend/src/features/settings/job/CreateJobTitlesDrawer.tsx index 713e7c18..379d9315 100644 --- a/worklenz-frontend/src/features/settings/job/CreateJobTitlesDrawer.tsx +++ b/worklenz-frontend/src/features/settings/job/CreateJobTitlesDrawer.tsx @@ -1,4 +1,4 @@ -import { Button, Drawer, Form, Input, message, Typography } from 'antd'; +import { Button, Drawer, Form, Input, message, Typography } from '@/shared/antd-imports'; import React from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/settings/job/UpdateJobTitlesDrawer.tsx b/worklenz-frontend/src/features/settings/job/UpdateJobTitlesDrawer.tsx index b03d3da3..e2d5f9ab 100644 --- a/worklenz-frontend/src/features/settings/job/UpdateJobTitlesDrawer.tsx +++ b/worklenz-frontend/src/features/settings/job/UpdateJobTitlesDrawer.tsx @@ -1,4 +1,4 @@ -import { Button, Drawer, Form, Input, message, Typography } from 'antd'; +import { Button, Drawer, Form, Input, message, Typography } from '@/shared/antd-imports'; import React, { useEffect } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/theme/ThemeWrapper.tsx b/worklenz-frontend/src/features/theme/ThemeWrapper.tsx index e32ea424..e6783f1e 100644 --- a/worklenz-frontend/src/features/theme/ThemeWrapper.tsx +++ b/worklenz-frontend/src/features/theme/ThemeWrapper.tsx @@ -1,4 +1,4 @@ -import { ConfigProvider, theme } from 'antd'; +import { ConfigProvider, theme } from '@/shared/antd-imports'; import React, { useEffect, useRef, memo, useMemo, useCallback } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/timeReport/projects/ProjectTimeLogDrawer.tsx b/worklenz-frontend/src/features/timeReport/projects/ProjectTimeLogDrawer.tsx index 1580138b..b6d4a732 100644 --- a/worklenz-frontend/src/features/timeReport/projects/ProjectTimeLogDrawer.tsx +++ b/worklenz-frontend/src/features/timeReport/projects/ProjectTimeLogDrawer.tsx @@ -1,4 +1,4 @@ -import { Avatar, Button, Card, Divider, Drawer, Tag, Timeline, Typography } from 'antd'; +import { Avatar, Button, Card, Divider, Drawer, Tag, Timeline, Typography } from '@/shared/antd-imports'; import React, { useState, useEffect } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/index.tsx b/worklenz-frontend/src/index.tsx index c8cf3b99..08956ec1 100644 --- a/worklenz-frontend/src/index.tsx +++ b/worklenz-frontend/src/index.tsx @@ -8,7 +8,7 @@ import './i18n'; import { Provider } from 'react-redux'; import { store } from './app/store'; import { applyCssVariables } from './styles/colors'; -import { ConfigProvider, theme } from 'antd'; +import { ConfigProvider, theme } from '@/shared/antd-imports'; import { colors } from './styles/colors'; import { getInitialTheme } from './utils/get-initial-theme'; import { initializePerformanceMonitoring } from './utils/enhanced-performance-monitoring'; diff --git a/worklenz-frontend/src/layouts/AdminCenterLayout.tsx b/worklenz-frontend/src/layouts/AdminCenterLayout.tsx index 4addfd3c..d46595b9 100644 --- a/worklenz-frontend/src/layouts/AdminCenterLayout.tsx +++ b/worklenz-frontend/src/layouts/AdminCenterLayout.tsx @@ -1,4 +1,4 @@ -import { Flex, Typography } from 'antd'; +import { Flex, Typography } from '@/shared/antd-imports'; import React from 'react'; import { Outlet } from 'react-router-dom'; import { useMediaQuery } from 'react-responsive'; diff --git a/worklenz-frontend/src/layouts/AuthLayout.tsx b/worklenz-frontend/src/layouts/AuthLayout.tsx index 925bca19..c3a197c3 100644 --- a/worklenz-frontend/src/layouts/AuthLayout.tsx +++ b/worklenz-frontend/src/layouts/AuthLayout.tsx @@ -1,4 +1,4 @@ -import { ConfigProvider, Flex, Layout } from 'antd'; +import { ConfigProvider, Flex, Layout } from '@/shared/antd-imports'; import React from 'react'; import { Outlet } from 'react-router-dom'; import { useAppSelector } from '../hooks/useAppSelector'; diff --git a/worklenz-frontend/src/layouts/MainLayout.tsx b/worklenz-frontend/src/layouts/MainLayout.tsx index 8e3cc66b..d861be23 100644 --- a/worklenz-frontend/src/layouts/MainLayout.tsx +++ b/worklenz-frontend/src/layouts/MainLayout.tsx @@ -1,4 +1,4 @@ -import { Col, ConfigProvider, Layout } from 'antd'; +import { Col, ConfigProvider, Layout } from '@/shared/antd-imports'; import { Outlet, useNavigate } from 'react-router-dom'; import { memo, useMemo, useEffect, useRef } from 'react'; import { useMediaQuery } from 'react-responsive'; diff --git a/worklenz-frontend/src/layouts/ReportingLayout.tsx b/worklenz-frontend/src/layouts/ReportingLayout.tsx index 09f8c6b2..c9538390 100644 --- a/worklenz-frontend/src/layouts/ReportingLayout.tsx +++ b/worklenz-frontend/src/layouts/ReportingLayout.tsx @@ -1,4 +1,4 @@ -import { Col, ConfigProvider, Layout } from 'antd'; +import { Col, ConfigProvider, Layout } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import Navbar from '../features/navbar/navbar'; import { useAppSelector } from '../hooks/useAppSelector'; diff --git a/worklenz-frontend/src/layouts/SettingsLayout.tsx b/worklenz-frontend/src/layouts/SettingsLayout.tsx index 87f0f525..84e050f6 100644 --- a/worklenz-frontend/src/layouts/SettingsLayout.tsx +++ b/worklenz-frontend/src/layouts/SettingsLayout.tsx @@ -1,4 +1,4 @@ -import { Flex, Typography } from 'antd'; +import { Flex, Typography } from '@/shared/antd-imports'; import SettingsSidebar from '../pages/settings/sidebar/settings-sidebar'; import { Outlet, useNavigate } from 'react-router-dom'; import { useMediaQuery } from 'react-responsive'; diff --git a/worklenz-frontend/src/pages/404-page/404-page.tsx b/worklenz-frontend/src/pages/404-page/404-page.tsx index e651dc2c..130ad3ef 100644 --- a/worklenz-frontend/src/pages/404-page/404-page.tsx +++ b/worklenz-frontend/src/pages/404-page/404-page.tsx @@ -1,6 +1,6 @@ import React from 'react'; import notFoundImg from '../../assets/images/not-found-img.png'; -import { Button, Flex, Layout, Typography } from 'antd'; +import { Button, Flex, Layout, Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; const NotFoundPage = () => { diff --git a/worklenz-frontend/src/pages/admin-center/overview/overview.tsx b/worklenz-frontend/src/pages/admin-center/overview/overview.tsx index e20d103c..077b23ff 100644 --- a/worklenz-frontend/src/pages/admin-center/overview/overview.tsx +++ b/worklenz-frontend/src/pages/admin-center/overview/overview.tsx @@ -1,6 +1,6 @@ import { EditOutlined, MailOutlined, PhoneOutlined } from '@ant-design/icons'; import { PageHeader } from '@ant-design/pro-components'; -import { Button, Card, Input, Space, Tooltip, Typography } from 'antd'; +import { Button, Card, Input, Space, Tooltip, Typography } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; import OrganizationAdminsTable from '@/components/admin-center/overview/organization-admins-table/organization-admins-table'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/admin-center/projects/projects.tsx b/worklenz-frontend/src/pages/admin-center/projects/projects.tsx index 41d92db8..e76d04bd 100644 --- a/worklenz-frontend/src/pages/admin-center/projects/projects.tsx +++ b/worklenz-frontend/src/pages/admin-center/projects/projects.tsx @@ -21,7 +21,7 @@ import { TableProps, Tooltip, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { DeleteOutlined, SearchOutlined, SyncOutlined } from '@ant-design/icons'; import { PageHeader } from '@ant-design/pro-components'; import { projectsApiService } from '@/api/projects/projects.api.service'; diff --git a/worklenz-frontend/src/pages/admin-center/sidebar/sidebar.tsx b/worklenz-frontend/src/pages/admin-center/sidebar/sidebar.tsx index 0a893d02..480cb210 100644 --- a/worklenz-frontend/src/pages/admin-center/sidebar/sidebar.tsx +++ b/worklenz-frontend/src/pages/admin-center/sidebar/sidebar.tsx @@ -1,5 +1,5 @@ import { RightOutlined } from '@ant-design/icons'; -import { ConfigProvider, Flex, Menu, MenuProps } from 'antd'; +import { ConfigProvider, Flex, Menu, MenuProps } from '@/shared/antd-imports'; import React from 'react'; import { Link, useLocation } from 'react-router-dom'; import { colors } from '../../../styles/colors'; diff --git a/worklenz-frontend/src/pages/admin-center/teams/teams.tsx b/worklenz-frontend/src/pages/admin-center/teams/teams.tsx index db4522c8..da2d9eeb 100644 --- a/worklenz-frontend/src/pages/admin-center/teams/teams.tsx +++ b/worklenz-frontend/src/pages/admin-center/teams/teams.tsx @@ -1,6 +1,6 @@ import { SearchOutlined, SyncOutlined } from '@ant-design/icons'; import { PageHeader } from '@ant-design/pro-components'; -import { Button, Flex, Input, Tooltip } from 'antd'; +import { Button, Flex, Input, Tooltip } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; diff --git a/worklenz-frontend/src/pages/admin-center/users/users.tsx b/worklenz-frontend/src/pages/admin-center/users/users.tsx index 2795a30e..f6b298e5 100644 --- a/worklenz-frontend/src/pages/admin-center/users/users.tsx +++ b/worklenz-frontend/src/pages/admin-center/users/users.tsx @@ -1,6 +1,6 @@ import { SearchOutlined, SyncOutlined } from '@ant-design/icons'; import { PageHeader } from '@ant-design/pro-components'; -import { Button, Card, Flex, Input, Table, TableProps, Tooltip, Typography } from 'antd'; +import { Button, Card, Flex, Input, Table, TableProps, Tooltip, Typography } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; import { RootState } from '@/app/store'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/add-favourite-project-button.tsx b/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/add-favourite-project-button.tsx index 43262a78..410b5b01 100644 --- a/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/add-favourite-project-button.tsx +++ b/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/add-favourite-project-button.tsx @@ -1,5 +1,5 @@ import { StarFilled } from '@ant-design/icons'; -import { Button, ConfigProvider, Tooltip } from 'antd'; +import { Button, ConfigProvider, Tooltip } from '@/shared/antd-imports'; import { useMemo } from 'react'; import { colors } from '@/styles/colors'; import { IProjectViewModel } from '@/types/project/projectViewModel.types'; diff --git a/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/recent-and-favourite-project-list.tsx b/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/recent-and-favourite-project-list.tsx index ff7d70cc..548b9e99 100644 --- a/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/recent-and-favourite-project-list.tsx +++ b/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/recent-and-favourite-project-list.tsx @@ -10,7 +10,7 @@ import { TableProps, Tooltip, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { useCallback, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/home/task-list/add-task-inline-form.tsx b/worklenz-frontend/src/pages/home/task-list/add-task-inline-form.tsx index caff5f7f..8e806fe2 100644 --- a/worklenz-frontend/src/pages/home/task-list/add-task-inline-form.tsx +++ b/worklenz-frontend/src/pages/home/task-list/add-task-inline-form.tsx @@ -1,4 +1,4 @@ -import { Alert, DatePicker, Flex, Form, Input, InputRef, Select, Typography } from 'antd'; +import { Alert, DatePicker, Flex, Form, Input, InputRef, Select, Typography } from '@/shared/antd-imports'; import { useEffect, useRef, useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { TFunction } from 'i18next'; diff --git a/worklenz-frontend/src/pages/home/task-list/calendar-view.tsx b/worklenz-frontend/src/pages/home/task-list/calendar-view.tsx index c0bfac8f..4c70ea4e 100644 --- a/worklenz-frontend/src/pages/home/task-list/calendar-view.tsx +++ b/worklenz-frontend/src/pages/home/task-list/calendar-view.tsx @@ -1,5 +1,5 @@ import HomeCalendar from '../../../components/calendars/homeCalendar/HomeCalendar'; -import { Tag, Typography } from 'antd'; +import { Tag, Typography } from '@/shared/antd-imports'; import { ClockCircleOutlined } from '@ant-design/icons'; import { useAppSelector } from '@/hooks/useAppSelector'; import AddTaskInlineForm from './add-task-inline-form'; diff --git a/worklenz-frontend/src/pages/home/task-list/list-view.tsx b/worklenz-frontend/src/pages/home/task-list/list-view.tsx index 255a650c..cef270c5 100644 --- a/worklenz-frontend/src/pages/home/task-list/list-view.tsx +++ b/worklenz-frontend/src/pages/home/task-list/list-view.tsx @@ -1,4 +1,4 @@ -import { Tabs } from 'antd'; +import { Tabs } from '@/shared/antd-imports'; import AddTaskInlineForm from './add-task-inline-form'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/home/task-list/tasks-list.tsx b/worklenz-frontend/src/pages/home/task-list/tasks-list.tsx index 17ba17dd..1f8e10ec 100644 --- a/worklenz-frontend/src/pages/home/task-list/tasks-list.tsx +++ b/worklenz-frontend/src/pages/home/task-list/tasks-list.tsx @@ -12,7 +12,7 @@ import { Tooltip, Typography, Pagination, -} from 'antd'; +} from '@/shared/antd-imports'; import React, { useState, useMemo, useCallback, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { useMediaQuery } from 'react-responsive'; diff --git a/worklenz-frontend/src/pages/license-expired/license-expired.tsx b/worklenz-frontend/src/pages/license-expired/license-expired.tsx index 37f8b596..6b724bb5 100644 --- a/worklenz-frontend/src/pages/license-expired/license-expired.tsx +++ b/worklenz-frontend/src/pages/license-expired/license-expired.tsx @@ -1,4 +1,4 @@ -import { Button, Result } from 'antd'; +import { Button, Result } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import { useAuthService } from '@/hooks/useAuth'; diff --git a/worklenz-frontend/src/pages/projects/project-list.tsx b/worklenz-frontend/src/pages/projects/project-list.tsx index 38729c17..b11c331d 100644 --- a/worklenz-frontend/src/pages/projects/project-list.tsx +++ b/worklenz-frontend/src/pages/projects/project-list.tsx @@ -16,7 +16,7 @@ import { Table, TablePaginationConfig, Tooltip, -} from 'antd'; +} from '@/shared/antd-imports'; import { PageHeader } from '@ant-design/pro-components'; import { SearchOutlined, diff --git a/worklenz-frontend/src/pages/projects/project-view-1/board/project-view-board.tsx b/worklenz-frontend/src/pages/projects/project-view-1/board/project-view-board.tsx index b9d407e4..e0acc2ac 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/board/project-view-board.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/board/project-view-board.tsx @@ -10,7 +10,7 @@ import { import { useAppSelector } from '@/hooks/useAppSelector'; import TaskListFilters from '../taskList/taskListFilters/TaskListFilters'; -import { Button, Skeleton } from 'antd'; +import { Button, Skeleton } from '@/shared/antd-imports'; import { PlusOutlined } from '@ant-design/icons'; import { useDispatch } from 'react-redux'; import { toggleDrawer } from '@/features/projects/status/StatusSlice'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/roadmap/project-view-roadmap.tsx b/worklenz-frontend/src/pages/projects/project-view-1/roadmap/project-view-roadmap.tsx index ec256f67..cb7ca914 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/roadmap/project-view-roadmap.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/roadmap/project-view-roadmap.tsx @@ -2,7 +2,7 @@ import { useState } from 'react'; import { ViewMode } from 'gantt-task-react'; import 'gantt-task-react/dist/index.css'; import './project-view-roadmap.css'; -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import { useAppSelector } from '../../../../hooks/useAppSelector'; import { TimeFilter } from './time-filter'; import RoadmapTable from './roadmap-table/roadmap-table'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/roadmap/roadmap-table/roadmap-table.tsx b/worklenz-frontend/src/pages/projects/project-view-1/roadmap/roadmap-table/roadmap-table.tsx index 96991e6c..f81b03f1 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/roadmap/roadmap-table/roadmap-table.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/roadmap/roadmap-table/roadmap-table.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { DatePicker, Typography } from 'antd'; +import { DatePicker, Typography } from '@/shared/antd-imports'; import dayjs, { Dayjs } from 'dayjs'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/roadmap/roadmap-table/roadmap-task-cell.tsx b/worklenz-frontend/src/pages/projects/project-view-1/roadmap/roadmap-table/roadmap-task-cell.tsx index d56d809a..c92bf49a 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/roadmap/roadmap-table/roadmap-task-cell.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/roadmap/roadmap-table/roadmap-task-cell.tsx @@ -1,4 +1,4 @@ -import { Flex, Typography, Button, Tooltip } from 'antd'; +import { Flex, Typography, Button, Tooltip } from '@/shared/antd-imports'; import { DoubleRightOutlined, DownOutlined, diff --git a/worklenz-frontend/src/pages/projects/project-view-1/roadmap/time-filter.tsx b/worklenz-frontend/src/pages/projects/project-view-1/roadmap/time-filter.tsx index ff1461f1..bf26e722 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/roadmap/time-filter.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/roadmap/time-filter.tsx @@ -1,7 +1,7 @@ import React from 'react'; import 'gantt-task-react/dist/index.css'; import { ViewMode } from 'gantt-task-react'; -import { Flex, Select } from 'antd'; +import { Flex, Select } from '@/shared/antd-imports'; type TimeFilterProps = { onViewModeChange: (viewMode: ViewMode) => void; }; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/task-list/table-v2.tsx b/worklenz-frontend/src/pages/projects/project-view-1/task-list/table-v2.tsx index 7f756485..ce722a19 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/task-list/table-v2.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/task-list/table-v2.tsx @@ -1,5 +1,5 @@ import { useCallback, useMemo, useRef, useState } from 'react'; -import { Checkbox, Flex, Tag, Tooltip } from 'antd'; +import { Checkbox, Flex, Tag, Tooltip } from '@/shared/antd-imports'; import { HolderOutlined } from '@ant-design/icons'; import { DndContext, diff --git a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-columns/task-list-columns.tsx b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-columns/task-list-columns.tsx index 773b683a..20728257 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-columns/task-list-columns.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-columns/task-list-columns.tsx @@ -1,4 +1,4 @@ -import { Avatar, Checkbox, DatePicker, Flex, Select, Tag } from 'antd'; +import { Avatar, Checkbox, DatePicker, Flex, Select, Tag } from '@/shared/antd-imports'; import { createColumnHelper, ColumnDef } from '@tanstack/react-table'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; import { HolderOutlined, PlusOutlined } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-custom.tsx b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-custom.tsx index da30ca2f..ebdbe404 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-custom.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-custom.tsx @@ -1,5 +1,5 @@ import { useCallback, useMemo, useRef, useState } from 'react'; -import { Checkbox, theme } from 'antd'; +import { Checkbox, theme } from '@/shared/antd-imports'; import { useReactTable, getCoreRowModel, diff --git a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-header/task-list-header.tsx b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-header/task-list-header.tsx index 12043805..358a3a85 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-header/task-list-header.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-header/task-list-header.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { Button, Dropdown, Input, Menu, Badge, Tooltip } from 'antd'; +import { Button, Dropdown, Input, Menu, Badge, Tooltip } from '@/shared/antd-imports'; import { RightOutlined, LoadingOutlined, diff --git a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-instant-task-input/task-list-instant-task-input.tsx b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-instant-task-input/task-list-instant-task-input.tsx index d41534cd..0c726f36 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-instant-task-input/task-list-instant-task-input.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-instant-task-input/task-list-instant-task-input.tsx @@ -1,4 +1,4 @@ -import { Input, InputRef, theme } from 'antd'; +import { Input, InputRef, theme } from '@/shared/antd-imports'; import React, { useState, useMemo, useRef } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-table-old/task-list-table-old.tsx b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-table-old/task-list-table-old.tsx index 5972a489..6cc52e12 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-table-old/task-list-table-old.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-table-old/task-list-table-old.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react'; -import { Avatar, Checkbox, DatePicker, Flex, Tag, Tooltip, Typography } from 'antd'; +import { Avatar, Checkbox, DatePicker, Flex, Tag, Tooltip, Typography } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { columnList } from '@/pages/projects/project-view-1/taskList/taskListTable/columns/columnList'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-table-wrapper/task-list-table-wrapper.tsx b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-table-wrapper/task-list-table-wrapper.tsx index e3ec231f..edc63353 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-table-wrapper/task-list-table-wrapper.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-table-wrapper/task-list-table-wrapper.tsx @@ -1,4 +1,4 @@ -import { Badge, Button, Collapse, ConfigProvider, Dropdown, Flex, Input, Typography } from 'antd'; +import { Badge, Button, Collapse, ConfigProvider, Dropdown, Flex, Input, Typography } from '@/shared/antd-imports'; import { useState } from 'react'; import { TaskType } from '@/types/task.types'; import { EditOutlined, EllipsisOutlined, RetweetOutlined, RightOutlined } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list.tsx b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list.tsx index a5ad9f85..928ad63e 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list.tsx @@ -1,5 +1,5 @@ import { useEffect } from 'react'; -import { Flex, Skeleton } from 'antd'; +import { Flex, Skeleton } from '@/shared/antd-imports'; import TaskListFilters from '@/pages/projects/project-view-1/taskList/taskListFilters/TaskListFilters'; import { useAppSelector } from '@/hooks/useAppSelector'; import { ITaskListConfigV2, ITaskListGroup } from '@/types/tasks/taskList.types'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/ProjectViewTaskList.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/ProjectViewTaskList.tsx index 676a7dbe..0d70c695 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/ProjectViewTaskList.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/ProjectViewTaskList.tsx @@ -1,5 +1,5 @@ import { useEffect } from 'react'; -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { fetchStatusesCategories } from '@/features/taskAttributes/taskStatusSlice'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/statusTables/StatusGroupTables.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/statusTables/StatusGroupTables.tsx index 4c74ca4a..b433323b 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/statusTables/StatusGroupTables.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/statusTables/StatusGroupTables.tsx @@ -1,6 +1,6 @@ import { TaskType } from '@/types/task.types'; import { useAppSelector } from '@/hooks/useAppSelector'; -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import TaskListTableWrapper from '@/pages/projects/project-view-1/taskList/taskListTable/TaskListTableWrapper'; import { createPortal } from 'react-dom'; import BulkTasksActionContainer from '@/features/projects/bulkActions/BulkTasksActionContainer'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/GroupByFilterDropdown.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/GroupByFilterDropdown.tsx index bdc87e82..ebd5ddd8 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/GroupByFilterDropdown.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/GroupByFilterDropdown.tsx @@ -1,5 +1,5 @@ import { CaretDownFilled } from '@ant-design/icons'; -import { ConfigProvider, Flex, Select } from 'antd'; +import { ConfigProvider, Flex, Select } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { colors } from '@/styles/colors'; import ConfigPhaseButton from '@features/projects/singleProject/phase/ConfigPhaseButton'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/LabelsFilterDropdown.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/LabelsFilterDropdown.tsx index afa395d4..53f83fdb 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/LabelsFilterDropdown.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/LabelsFilterDropdown.tsx @@ -11,7 +11,7 @@ import { InputRef, List, Space, -} from 'antd'; +} from '@/shared/antd-imports'; import { useEffect, useRef, useState } from 'react'; import { colors } from '@/styles/colors'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/MembersFilterDropdown.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/MembersFilterDropdown.tsx index ea59bd1b..0af08d0e 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/MembersFilterDropdown.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/MembersFilterDropdown.tsx @@ -13,7 +13,7 @@ import { List, Space, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { useMemo, useRef, useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/PriorityFilterDropdown.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/PriorityFilterDropdown.tsx index dafc5af2..834f0498 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/PriorityFilterDropdown.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/PriorityFilterDropdown.tsx @@ -1,5 +1,5 @@ import { CaretDownFilled } from '@ant-design/icons'; -import { Badge, Button, Card, Checkbox, Dropdown, List, Space } from 'antd'; +import { Badge, Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import { useState } from 'react'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SearchDropdown.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SearchDropdown.tsx index 8eb0d3b0..3480b4f4 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SearchDropdown.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SearchDropdown.tsx @@ -1,5 +1,5 @@ import { SearchOutlined } from '@ant-design/icons'; -import { Button, Card, Dropdown, Flex, Input, InputRef, Space } from 'antd'; +import { Button, Card, Dropdown, Flex, Input, InputRef, Space } from '@/shared/antd-imports'; import { useRef } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/ShowFieldsFilterDropdown.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/ShowFieldsFilterDropdown.tsx index f98b6c3c..301399d4 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/ShowFieldsFilterDropdown.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/ShowFieldsFilterDropdown.tsx @@ -1,5 +1,5 @@ import { MoreOutlined } from '@ant-design/icons'; -import { Button, Card, Checkbox, Dropdown, List, Space } from 'antd'; +import { Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SortFilterDropdown.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SortFilterDropdown.tsx index 85c2cfd5..fa3a202b 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SortFilterDropdown.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SortFilterDropdown.tsx @@ -1,5 +1,5 @@ import { CaretDownFilled, SortAscendingOutlined, SortDescendingOutlined } from '@ant-design/icons'; -import { Badge, Button, Card, Checkbox, Dropdown, List, Space } from 'antd'; +import { Badge, Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { colors } from '../../../../../styles/colors'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/TaskListFilters.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/TaskListFilters.tsx index d794c414..e1bfad6a 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/TaskListFilters.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/TaskListFilters.tsx @@ -1,4 +1,4 @@ -import { Checkbox, Flex, Typography } from 'antd'; +import { Checkbox, Flex, Typography } from '@/shared/antd-imports'; import SearchDropdown from './SearchDropdown'; import SortFilterDropdown from './SortFilterDropdown'; import LabelsFilterDropdown from './LabelsFilterDropdown'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTable.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTable.tsx index 1acd6c30..257252b1 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTable.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTable.tsx @@ -1,7 +1,7 @@ import { useAppSelector } from '@/hooks/useAppSelector'; import { columnList } from './columns/columnList'; import AddTaskListRow from './taskListTableRows/AddTaskListRow'; -import { Checkbox, Flex, Tag, Tooltip } from 'antd'; +import { Checkbox, Flex, Tag, Tooltip } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; import { useSelectedProject } from '@/hooks/useSelectedProject'; import TaskCell from './taskListTableCells/TaskCell'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTableWrapper.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTableWrapper.tsx index b71ba97c..ad8d6e6f 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTableWrapper.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTableWrapper.tsx @@ -1,6 +1,5 @@ -import { Badge, Button, Collapse, ConfigProvider, Dropdown, Flex, Input, Typography } from 'antd'; +import { Badge, Button, Collapse, ConfigProvider, Dropdown, Flex, Input, Typography } from '@/shared/antd-imports'; import { useState } from 'react'; -import { TaskType } from '../../../../../types/task.types'; import { EditOutlined, EllipsisOutlined, RetweetOutlined, RightOutlined } from '@ant-design/icons'; import { colors } from '../../../../../styles/colors'; import './taskListTableWrapper.css'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/contextMenu/TaskContextMenu.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/contextMenu/TaskContextMenu.tsx index 757570b2..88054503 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/contextMenu/TaskContextMenu.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/contextMenu/TaskContextMenu.tsx @@ -5,7 +5,7 @@ import { RetweetOutlined, UserAddOutlined, } from '@ant-design/icons'; -import { Badge, Dropdown, Flex, Typography } from 'antd'; +import { Badge, Dropdown, Flex, Typography } from '@/shared/antd-imports'; import { MenuProps } from 'antd/lib'; import React from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TaskCell.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TaskCell.tsx index b5e53016..a9dccbfa 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TaskCell.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TaskCell.tsx @@ -1,6 +1,6 @@ // TaskNameCell.tsx import React from 'react'; -import { Flex, Typography, Button } from 'antd'; +import { Flex, Typography, Button } from '@/shared/antd-imports'; import { DoubleRightOutlined, DownOutlined, diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TaskProgress.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TaskProgress.tsx index 24df83f9..0f15bd5a 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TaskProgress.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TaskProgress.tsx @@ -1,4 +1,4 @@ -import { Progress, Tooltip } from 'antd'; +import { Progress, Tooltip } from '@/shared/antd-imports'; import React from 'react'; import './TaskProgress.css'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TimeTracker.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TimeTracker.tsx index 03496d0a..f4832223 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TimeTracker.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TimeTracker.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Divider, Empty, Flex, Popover, Typography } from 'antd'; +import { Divider, Empty, Flex, Popover, Typography } from '@/shared/antd-imports'; import { PlayCircleFilled } from '@ant-design/icons'; import { colors } from '../../../../../../styles/colors'; import CustomAvatar from '../../../../../../components/CustomAvatar'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableRows/AddSubTaskListRow.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableRows/AddSubTaskListRow.tsx index 5fc71fdf..1c5cdea9 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableRows/AddSubTaskListRow.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableRows/AddSubTaskListRow.tsx @@ -1,4 +1,4 @@ -import { Input } from 'antd'; +import { Input } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableRows/AddTaskListRow.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableRows/AddTaskListRow.tsx index fa7e9f85..17258412 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableRows/AddTaskListRow.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableRows/AddTaskListRow.tsx @@ -1,4 +1,4 @@ -import { Input } from 'antd'; +import { Input } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/updates/project-view-updates.tsx b/worklenz-frontend/src/pages/projects/project-view-1/updates/project-view-updates.tsx index c432b766..b46a735d 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/updates/project-view-updates.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/updates/project-view-updates.tsx @@ -11,7 +11,7 @@ import { Dropdown, Menu, Popconfirm, -} from 'antd'; +} from '@/shared/antd-imports'; import { useEffect, useState, useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import DOMPurify from 'dompurify'; diff --git a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-create-section-card.tsx b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-create-section-card.tsx index 7e61385e..dbe56678 100644 --- a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-create-section-card.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-create-section-card.tsx @@ -1,4 +1,4 @@ -import { Button, Flex } from 'antd'; +import { Button, Flex } from '@/shared/antd-imports'; import { PlusOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; import { nanoid } from '@reduxjs/toolkit'; diff --git a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card-header.tsx b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card-header.tsx index 3c6ec55d..3e5483f6 100644 --- a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card-header.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card-header.tsx @@ -9,7 +9,7 @@ import { Popconfirm, Tooltip, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { DeleteOutlined, EditOutlined, @@ -19,7 +19,7 @@ import { PlusOutlined, RetweetOutlined, } from '@ant-design/icons'; -import { MenuProps } from 'antd'; +import { MenuProps } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import ChangeCategoryDropdown from '@/components/board/changeCategoryDropdown/ChangeCategoryDropdown'; diff --git a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card.tsx b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card.tsx index 6bf60f80..5a037f9e 100644 --- a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card.tsx @@ -1,4 +1,4 @@ -import { Button, Flex } from 'antd'; +import { Button, Flex } from '@/shared/antd-imports'; import { useEffect, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useDroppable } from '@dnd-kit/core'; diff --git a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-container.tsx b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-container.tsx index bb9d41b3..45e4a9e0 100644 --- a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-container.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-container.tsx @@ -1,4 +1,4 @@ -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import { SortableContext, horizontalListSortingStrategy } from '@dnd-kit/sortable'; import BoardSectionCard from './board-section-card/board-section-card'; import BoardCreateSectionCard from './board-section-card/board-create-section-card'; diff --git a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-sub-task-card/board-create-sub-task-card.tsx b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-sub-task-card/board-create-sub-task-card.tsx index f26a0136..4773be40 100644 --- a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-sub-task-card/board-create-sub-task-card.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-sub-task-card/board-create-sub-task-card.tsx @@ -1,4 +1,4 @@ -import { Flex, Input, InputRef } from 'antd'; +import { Flex, Input, InputRef } from '@/shared/antd-imports'; import React, { useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-sub-task-card/board-sub-task-card.tsx b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-sub-task-card/board-sub-task-card.tsx index d3b074d7..a0af1cdc 100644 --- a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-sub-task-card/board-sub-task-card.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-sub-task-card/board-sub-task-card.tsx @@ -1,6 +1,6 @@ import { useCallback, useState } from 'react'; import dayjs, { Dayjs } from 'dayjs'; -import { Col, Flex, Typography, List, Dropdown, MenuProps, Popconfirm } from 'antd'; +import { Col, Flex, Typography, List, Dropdown, MenuProps, Popconfirm } from '@/shared/antd-imports'; import { UserAddOutlined, DeleteOutlined, diff --git a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-task-card/board-view-create-task-card.tsx b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-task-card/board-view-create-task-card.tsx index 4b628d1b..b7612b1c 100644 --- a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-task-card/board-view-create-task-card.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-task-card/board-view-create-task-card.tsx @@ -1,4 +1,4 @@ -import { Button, Flex, Input, InputRef } from 'antd'; +import { Button, Flex, Input, InputRef } from '@/shared/antd-imports'; import React, { useRef, useState, useEffect } from 'react'; import { Dayjs } from 'dayjs'; import { nanoid } from '@reduxjs/toolkit'; diff --git a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-task-card/board-view-task-card.tsx b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-task-card/board-view-task-card.tsx index 542d3796..a067c16f 100644 --- a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-task-card/board-view-task-card.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-task-card/board-view-task-card.tsx @@ -12,7 +12,7 @@ import { Divider, Popconfirm, Skeleton, -} from 'antd'; +} from '@/shared/antd-imports'; import { DoubleRightOutlined, PauseOutlined, diff --git a/worklenz-frontend/src/pages/projects/projectView/files/project-view-files.tsx b/worklenz-frontend/src/pages/projects/projectView/files/project-view-files.tsx index 358c5122..f4593fa2 100644 --- a/worklenz-frontend/src/pages/projects/projectView/files/project-view-files.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/files/project-view-files.tsx @@ -8,7 +8,7 @@ import { TableProps, Tooltip, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import { colors } from '@/styles/colors'; import { diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/insights-members.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/insights-members.tsx index 45361236..59408d4f 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/insights-members.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/insights-members.tsx @@ -1,4 +1,4 @@ -import { Card, Flex, Typography } from 'antd'; +import { Card, Flex, Typography } from '@/shared/antd-imports'; import TaskByMembersTable from './tables/tasks-by-members'; import MemberStats from '../member-stats/member-stats'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/tables/assigned-tasks-list.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/tables/assigned-tasks-list.tsx index d78f9797..2d07951c 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/tables/assigned-tasks-list.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/tables/assigned-tasks-list.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react'; -import { Flex, Tooltip, Typography } from 'antd'; +import { Flex, Tooltip, Typography } from '@/shared/antd-imports'; import { projectInsightsApiService } from '@/api/projects/insights/project-insights.api.service'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/tables/tasks-by-members.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/tables/tasks-by-members.tsx index dad92582..d4408bff 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/tables/tasks-by-members.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/tables/tasks-by-members.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react'; -import { Flex, Progress } from 'antd'; +import { Flex, Progress } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import { useAppSelector } from '@/hooks/useAppSelector'; import { themeWiseColor } from '@/utils/themeWiseColor'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/graphs/priority-overview.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/graphs/priority-overview.tsx index 2c822b94..58aa56b9 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/graphs/priority-overview.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/graphs/priority-overview.tsx @@ -1,7 +1,7 @@ import { Bar } from 'react-chartjs-2'; import { Chart, ArcElement, Tooltip, CategoryScale, LinearScale, BarElement } from 'chart.js'; import { ChartOptions } from 'chart.js'; -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import { ITaskPriorityCounts } from '@/types/project/project-insights.types'; import { useEffect, useState } from 'react'; import { projectInsightsApiService } from '@/api/projects/insights/project-insights.api.service'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/graphs/status-overview.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/graphs/status-overview.tsx index 450cfecb..65503fc0 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/graphs/status-overview.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/graphs/status-overview.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react'; import { Doughnut } from 'react-chartjs-2'; import { Chart, ArcElement } from 'chart.js'; -import { Badge, Flex, Tooltip, Typography, Spin } from 'antd'; +import { Badge, Flex, Tooltip, Typography, Spin } from '@/shared/antd-imports'; import { ChartOptions } from 'chart.js'; import { projectInsightsApiService } from '@/api/projects/insights/project-insights.api.service'; import { ITaskStatusCounts } from '@/types/project/project-insights.types'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/insights-overview.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/insights-overview.tsx index edb51aa3..d089136d 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/insights-overview.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/insights-overview.tsx @@ -1,4 +1,4 @@ -import { Button, Card, Flex, Typography } from 'antd'; +import { Button, Card, Flex, Typography } from '@/shared/antd-imports'; import StatusOverview from './graphs/status-overview'; import PriorityOverview from './graphs/priority-overview'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/tables/last-updated-tasks.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/tables/last-updated-tasks.tsx index ad438cc1..8b96c6e0 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/tables/last-updated-tasks.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/tables/last-updated-tasks.tsx @@ -1,4 +1,4 @@ -import { Flex, Table, Tooltip, Typography } from 'antd'; +import { Flex, Table, Tooltip, Typography } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import { colors } from '@/styles/colors'; import { TableProps } from 'antd/lib'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/tables/project-deadline.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/tables/project-deadline.tsx index 4475ad12..dc346a89 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/tables/project-deadline.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-overview/tables/project-deadline.tsx @@ -1,4 +1,4 @@ -import { Card, Flex, Skeleton, Table, Typography } from 'antd'; +import { Card, Flex, Skeleton, Table, Typography } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import { colors } from '@/styles/colors'; import { TableProps } from 'antd/lib'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/insights-tasks.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/insights-tasks.tsx index 48ab18e2..1dd2c3d7 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/insights-tasks.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/insights-tasks.tsx @@ -1,4 +1,4 @@ -import { Button, Card, Flex, Tooltip, Typography } from 'antd'; +import { Button, Card, Flex, Tooltip, Typography } from '@/shared/antd-imports'; import { ExclamationCircleOutlined } from '@ant-design/icons'; import { colors } from '@/styles/colors'; import OverdueTasksTable from './tables/overdue-tasks-table'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/over-logged-tasks-table.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/over-logged-tasks-table.tsx index 95dd1986..3cc9c390 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/over-logged-tasks-table.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/over-logged-tasks-table.tsx @@ -1,4 +1,4 @@ -import { Avatar, Button, Flex, Table, Typography } from 'antd'; +import { Avatar, Button, Flex, Table, Typography } from '@/shared/antd-imports'; import { useState, useEffect } from 'react'; import { colors } from '@/styles/colors'; import { TableProps } from 'antd/lib'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/overdue-tasks-table.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/overdue-tasks-table.tsx index 6e36cbae..4d5c9ffa 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/overdue-tasks-table.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/overdue-tasks-table.tsx @@ -1,4 +1,4 @@ -import { Flex, Table, Typography } from 'antd'; +import { Flex, Table, Typography } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import { colors } from '@/styles/colors'; import { TableProps } from 'antd/lib'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/task-completed-early-table.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/task-completed-early-table.tsx index 75b0d1d3..56749587 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/task-completed-early-table.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/task-completed-early-table.tsx @@ -1,4 +1,4 @@ -import { Flex, Table, Typography } from 'antd'; +import { Flex, Table, Typography } from '@/shared/antd-imports'; import { TableProps } from 'antd/lib'; import { useEffect, useState } from 'react'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/task-completed-late-table.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/task-completed-late-table.tsx index 764d0e21..27c2ea35 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/task-completed-late-table.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/task-completed-late-table.tsx @@ -1,4 +1,4 @@ -import { Flex, Table, Typography } from 'antd'; +import { Flex, Table, Typography } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import { colors } from '@/styles/colors'; import { TableProps } from 'antd/lib'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/member-stats/member-stats.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/member-stats/member-stats.tsx index 2f897cc4..ab3a2078 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/member-stats/member-stats.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/member-stats/member-stats.tsx @@ -1,5 +1,5 @@ import ProjectStatsCard from '@/components/projects/project-stats-card'; -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import groupIcon from '@/assets/icons/insightsIcons/group.png'; import warningIcon from '@/assets/icons/insightsIcons/warning.png'; import unassignedIcon from '@/assets/icons/insightsIcons/block-user.png'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/project-stats/project-stats.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/project-stats/project-stats.tsx index cbee0f5b..99d655c7 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/project-stats/project-stats.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/project-stats/project-stats.tsx @@ -1,5 +1,5 @@ import ProjectStatsCard from '@/components/projects/project-stats-card'; -import { Flex, Tooltip } from 'antd'; +import { Flex, Tooltip } from '@/shared/antd-imports'; import checkIcon from '@assets/icons/insightsIcons/insights-check.png'; import clipboardIcon from '@assets/icons/insightsIcons/clipboard.png'; import clockIcon from '@assets/icons/insightsIcons/clock-green.png'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/project-view-insights.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/project-view-insights.tsx index 81b7c717..ad3c5766 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/project-view-insights.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/project-view-insights.tsx @@ -1,5 +1,5 @@ import { DownloadOutlined } from '@ant-design/icons'; -import { Badge, Button, Checkbox, Flex, Segmented } from 'antd'; +import { Badge, Button, Checkbox, Flex, Segmented } from '@/shared/antd-imports'; import { useEffect, useRef, useState } from 'react'; import { useParams } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/projects/projectView/members/project-view-members.tsx b/worklenz-frontend/src/pages/projects/projectView/members/project-view-members.tsx index 5393ea95..2592aa15 100644 --- a/worklenz-frontend/src/pages/projects/projectView/members/project-view-members.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/members/project-view-members.tsx @@ -11,7 +11,7 @@ import { TableProps, Tooltip, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; // Icons import { DeleteOutlined, ExclamationCircleFilled, SyncOutlined } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/groupTables/priorityTables/PriorityGroupTables.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/groupTables/priorityTables/PriorityGroupTables.tsx index d72929be..9d8fd153 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/groupTables/priorityTables/PriorityGroupTables.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/groupTables/priorityTables/PriorityGroupTables.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { TaskPriorityType, TaskType } from '../../../../../../types/task.types'; -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import TaskListTableWrapper from '../../task-list-table/task-list-table-wrapper/task-list-table-wrapper'; import { useAppSelector } from '../../../../../../hooks/useAppSelector'; import { getPriorityColor } from '../../../../../../utils/getPriorityColors'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/context-menu/task-context-menu.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/context-menu/task-context-menu.tsx index eaab7cf5..7e18428f 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/context-menu/task-context-menu.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/context-menu/task-context-menu.tsx @@ -6,7 +6,7 @@ import { RetweetOutlined, UserAddOutlined, } from '@ant-design/icons'; -import { Badge, Dropdown, Flex, Typography, Modal } from 'antd'; +import { Badge, Dropdown, Flex, Typography, Modal } from '@/shared/antd-imports'; import { MenuProps } from 'antd/lib'; import { useState } from 'react'; import { TFunction } from 'i18next'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-label-cell/custom-column-label-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-label-cell/custom-column-label-cell.tsx index 2985a352..ad9c32d0 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-label-cell/custom-column-label-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-label-cell/custom-column-label-cell.tsx @@ -1,4 +1,4 @@ -import { Badge, Card, Dropdown, Empty, Flex, Menu, MenuProps, Typography } from 'antd'; +import { Badge, Card, Dropdown, Empty, Flex, Menu, MenuProps, Typography } from '@/shared/antd-imports'; import React, { useState, useEffect } from 'react'; import { DownOutlined } from '@ant-design/icons'; // custom css file diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-selection-cell/custom-column-selection-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-selection-cell/custom-column-selection-cell.tsx index 6d200fc1..833fd61b 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-selection-cell/custom-column-selection-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-selection-cell/custom-column-selection-cell.tsx @@ -1,4 +1,4 @@ -import { Badge, Card, Dropdown, Empty, Flex, Menu, MenuProps, Typography } from 'antd'; +import { Badge, Card, Dropdown, Empty, Flex, Menu, MenuProps, Typography } from '@/shared/antd-imports'; import React, { useState, useEffect } from 'react'; import { DownOutlined } from '@ant-design/icons'; // custom css file diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-header/custom-column-header.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-header/custom-column-header.tsx index 20ab7316..1aa9b695 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-header/custom-column-header.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-header/custom-column-header.tsx @@ -1,5 +1,5 @@ import { SettingOutlined } from '@ant-design/icons'; -import { Button, Flex, Tooltip, Typography } from 'antd'; +import { Button, Flex, Tooltip, Typography } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import CustomColumnModal from '../custom-column-modal/custom-column-modal'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/add-custom-column-button.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/add-custom-column-button.tsx index 738971b4..fb088dba 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/add-custom-column-button.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/add-custom-column-button.tsx @@ -1,5 +1,5 @@ import { PlusOutlined } from '@ant-design/icons'; -import { Button, Tooltip } from 'antd'; +import { Button, Tooltip } from '@/shared/antd-imports'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { setCustomColumnModalAttributes, diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/formula-type-column/formula-type-column.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/formula-type-column/formula-type-column.tsx index c5022639..bc1825a7 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/formula-type-column/formula-type-column.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/formula-type-column/formula-type-column.tsx @@ -1,4 +1,4 @@ -import { Flex, Form, Select, Typography } from 'antd'; +import { Flex, Form, Select, Typography } from '@/shared/antd-imports'; import React from 'react'; import { themeWiseColor } from '../../../../../../../../utils/themeWiseColor'; import { useAppSelector } from '../../../../../../../../hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/key-type-column/key-type-column.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/key-type-column/key-type-column.tsx index 963605a7..6b729943 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/key-type-column/key-type-column.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/key-type-column/key-type-column.tsx @@ -1,4 +1,4 @@ -import { Flex, Form, Input, Typography } from 'antd'; +import { Flex, Form, Input, Typography } from '@/shared/antd-imports'; import React, { useState } from 'react'; const KeyTypeColumn = () => { diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/label-type-column/label-type-column.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/label-type-column/label-type-column.tsx index ec5a0093..736096f1 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/label-type-column/label-type-column.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/label-type-column/label-type-column.tsx @@ -1,7 +1,7 @@ import React, { useState, useEffect } from 'react'; import { nanoid } from 'nanoid'; import { PhaseColorCodes } from '../../../../../../../../shared/constants'; -import { Button, Flex, Input, Select, Tag, Typography } from 'antd'; +import { Button, Flex, Input, Select, Tag, Typography } from '@/shared/antd-imports'; import { CloseCircleOutlined, HolderOutlined } from '@ant-design/icons'; import { useAppDispatch } from '../../../../../../../../hooks/useAppDispatch'; import { useAppSelector } from '../../../../../../../../hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/formatted-type-number-column.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/formatted-type-number-column.tsx index a4091030..629c1fe8 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/formatted-type-number-column.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/formatted-type-number-column.tsx @@ -1,4 +1,4 @@ -import { Form, Select, Typography } from 'antd'; +import { Form, Select, Typography } from '@/shared/antd-imports'; import React from 'react'; import { useAppSelector } from '../../../../../../../../hooks/useAppSelector'; import { themeWiseColor } from '../../../../../../../../utils/themeWiseColor'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/number-type-column.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/number-type-column.tsx index ba56f7ec..e628d322 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/number-type-column.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/number-type-column.tsx @@ -1,4 +1,4 @@ -import { Form, Select, Typography } from 'antd'; +import { Form, Select, Typography } from '@/shared/antd-imports'; import React from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { themeWiseColor } from '@/utils/themeWiseColor'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/percentage-type-number-column.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/percentage-type-number-column.tsx index 590befb9..62f75358 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/percentage-type-number-column.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/percentage-type-number-column.tsx @@ -1,4 +1,4 @@ -import { Form, Select, Typography } from 'antd'; +import { Form, Select, Typography } from '@/shared/antd-imports'; import React from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { themeWiseColor } from '@/utils/themeWiseColor'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/unformatted-type-number-column.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/unformatted-type-number-column.tsx index 2287b584..37d21f4d 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/unformatted-type-number-column.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/unformatted-type-number-column.tsx @@ -1,4 +1,4 @@ -import { Form, Typography } from 'antd'; +import { Form, Typography } from '@/shared/antd-imports'; import React from 'react'; import { useAppSelector } from '../../../../../../../../hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/with-label-type-number-column.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/with-label-type-number-column.tsx index ff86e95f..da592df0 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/with-label-type-number-column.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/number-type-column/with-label-type-number-column.tsx @@ -1,4 +1,4 @@ -import { Form, Input, Select, Typography } from 'antd'; +import { Form, Input, Select, Typography } from '@/shared/antd-imports'; import React from 'react'; import { useAppSelector } from '../../../../../../../../hooks/useAppSelector'; import { themeWiseColor } from '../../../../../../../../utils/themeWiseColor'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/selection-type-column/selection-type-column.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/selection-type-column/selection-type-column.tsx index 415d58ca..79d0ce6b 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/selection-type-column/selection-type-column.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/selection-type-column/selection-type-column.tsx @@ -1,7 +1,7 @@ import React, { useState, useEffect } from 'react'; import { nanoid } from 'nanoid'; import { PhaseColorCodes } from '../../../../../../../../shared/constants'; -import { Button, Flex, Input, Select, Tag, Typography } from 'antd'; +import { Button, Flex, Input, Select, Tag, Typography } from '@/shared/antd-imports'; import { CloseCircleOutlined, HolderOutlined } from '@ant-design/icons'; import { useAppDispatch } from '../../../../../../../../hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-completed-date-cell/task-list-completed-date-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-completed-date-cell/task-list-completed-date-cell.tsx index 92c625d1..4a7dcdd4 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-completed-date-cell/task-list-completed-date-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-completed-date-cell/task-list-completed-date-cell.tsx @@ -1,4 +1,4 @@ -import { Tooltip, Typography } from 'antd'; +import { Tooltip, Typography } from '@/shared/antd-imports'; import React from 'react'; import { durationDateFormat } from '@/utils/durationDateFormat'; import { formatDate } from '@/utils/timeUtils'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-created-date-cell/task-list-created-date-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-created-date-cell/task-list-created-date-cell.tsx index 2b843aa2..b79ab97f 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-created-date-cell/task-list-created-date-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-created-date-cell/task-list-created-date-cell.tsx @@ -1,4 +1,4 @@ -import { Tooltip, Typography } from 'antd'; +import { Tooltip, Typography } from '@/shared/antd-imports'; import { durationDateFormat } from '@/utils/durationDateFormat'; import { formatDate } from '@/utils/timeUtils'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-description-cell/task-list-description-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-description-cell/task-list-description-cell.tsx index 1ee5c921..fd1be167 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-description-cell/task-list-description-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-description-cell/task-list-description-cell.tsx @@ -1,4 +1,4 @@ -import { Typography } from 'antd'; +import { Typography } from '@/shared/antd-imports'; import DOMPurify from 'dompurify'; const TaskListDescriptionCell = ({ description }: { description: string }) => { diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-due-date-cell/task-list-due-date-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-due-date-cell/task-list-due-date-cell.tsx index 9e584d3a..e8cb18d5 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-due-date-cell/task-list-due-date-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-due-date-cell/task-list-due-date-cell.tsx @@ -1,4 +1,4 @@ -import { DatePicker } from 'antd'; +import { DatePicker } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import dayjs, { Dayjs } from 'dayjs'; import { useSocket } from '@/socket/socketContext'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-due-time-cell/task-list-due-time-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-due-time-cell/task-list-due-time-cell.tsx index a6fe9516..a479c47d 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-due-time-cell/task-list-due-time-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-due-time-cell/task-list-due-time-cell.tsx @@ -1,4 +1,4 @@ -import { TimePicker, TimePickerProps } from 'antd'; +import { TimePicker, TimePickerProps } from '@/shared/antd-imports'; import React from 'react'; // import dayjs from 'dayjs'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-estimation-cell/task-list-estimation-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-estimation-cell/task-list-estimation-cell.tsx index ffd04062..fd57d903 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-estimation-cell/task-list-estimation-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-estimation-cell/task-list-estimation-cell.tsx @@ -1,5 +1,5 @@ import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; -import { Typography } from 'antd'; +import { Typography } from '@/shared/antd-imports'; import React from 'react'; interface ITaskListEstimationCellProps { diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-labels-cell/task-list-labels-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-labels-cell/task-list-labels-cell.tsx index 1104e7b6..b64aa311 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-labels-cell/task-list-labels-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-labels-cell/task-list-labels-cell.tsx @@ -1,4 +1,4 @@ -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import CustomNumberLabel from '@/components/taskListCommon/labelsSelector/CustomNumberLabel'; import LabelsSelector from '@/components/taskListCommon/labelsSelector/LabelsSelector'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-last-updated-cell/task-list-last-updated-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-last-updated-cell/task-list-last-updated-cell.tsx index c040550e..13b99e62 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-last-updated-cell/task-list-last-updated-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-last-updated-cell/task-list-last-updated-cell.tsx @@ -1,4 +1,4 @@ -import { Tooltip, Typography } from 'antd'; +import { Tooltip, Typography } from '@/shared/antd-imports'; import { durationDateFormat } from '@/utils/durationDateFormat'; import { formatDate } from '@/utils/timeUtils'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-progress-cell/task-list-progress-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-progress-cell/task-list-progress-cell.tsx index d4099e73..b37098a4 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-progress-cell/task-list-progress-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-progress-cell/task-list-progress-cell.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Progress, Tooltip } from 'antd'; +import { Progress, Tooltip } from '@/shared/antd-imports'; import './task-list-progress-cell.css'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-reporter-cell/task-list-reporter-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-reporter-cell/task-list-reporter-cell.tsx index 1930650e..bffb3463 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-reporter-cell/task-list-reporter-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-reporter-cell/task-list-reporter-cell.tsx @@ -1,5 +1,5 @@ import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; -import { Typography } from 'antd'; +import { Typography } from '@/shared/antd-imports'; const TaskListReporterCell = ({ task }: { task: IProjectTask }) => { return {task?.reporter}; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-start-date-cell/task-list-start-date-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-start-date-cell/task-list-start-date-cell.tsx index 53f40cbe..d101e875 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-start-date-cell/task-list-start-date-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-start-date-cell/task-list-start-date-cell.tsx @@ -1,4 +1,4 @@ -import { DatePicker } from 'antd'; +import { DatePicker } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import dayjs, { Dayjs } from 'dayjs'; import { useSocket } from '@/socket/socketContext'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-task-cell/task-list-task-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-task-cell/task-list-task-cell.tsx index 2c313d79..72410be7 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-task-cell/task-list-task-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-task-cell/task-list-task-cell.tsx @@ -1,5 +1,5 @@ -import { Flex, Typography, Button, Input, Tooltip } from 'antd'; -import type { InputRef } from 'antd'; +import { Flex, Typography, Button, Input, Tooltip } from '@/shared/antd-imports'; +import type { InputRef } from '@/shared/antd-imports'; import { DoubleRightOutlined, DownOutlined, diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-task-id-cell/task-list-task-id-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-task-id-cell/task-list-task-id-cell.tsx index b7cdf949..37e24d06 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-task-id-cell/task-list-task-id-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-task-id-cell/task-list-task-id-cell.tsx @@ -1,4 +1,4 @@ -import { Tag, Tooltip } from 'antd'; +import { Tag, Tooltip } from '@/shared/antd-imports'; import React from 'react'; const TaskListTaskIdCell = ({ taskId }: { taskId: string | null }) => { diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-rows/add-sub-task-list-row.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-rows/add-sub-task-list-row.tsx index 260b6c2e..6b9c13e6 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-rows/add-sub-task-list-row.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-rows/add-sub-task-list-row.tsx @@ -1,4 +1,4 @@ -import { Input, Button } from 'antd'; +import { Input, Button } from '@/shared/antd-imports'; import React, { useRef, useEffect, useState } from 'react'; import { useAppSelector } from '../../../../../../hooks/useAppSelector'; import { colors } from '../../../../../../styles/colors'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-rows/add-task-list-row.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-rows/add-task-list-row.tsx index 01f2dc96..a3761009 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-rows/add-task-list-row.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-rows/add-task-list-row.tsx @@ -1,6 +1,6 @@ import Input, { InputRef } from 'antd/es/input'; import { useMemo, useRef, useState, useEffect } from 'react'; -import { Spin } from 'antd'; +import { Spin } from '@/shared/antd-imports'; import { LoadingOutlined } from '@ant-design/icons'; import { useAppSelector } from '@/hooks/useAppSelector'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table.tsx index 255bbf78..013dccbd 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table.tsx @@ -33,7 +33,7 @@ import { } from '@dnd-kit/sortable'; import { createPortal } from 'react-dom'; import { DragOverEvent } from '@dnd-kit/core'; -import { List, Card, Avatar, Dropdown, Empty, Divider, Button } from 'antd'; +import { List, Card, Avatar, Dropdown, Empty, Divider, Button } from '@/shared/antd-imports'; import dayjs from 'dayjs'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/projects/projectView/updates/ProjectViewUpdates.tsx b/worklenz-frontend/src/pages/projects/projectView/updates/ProjectViewUpdates.tsx index 608bfd94..dae57f95 100644 --- a/worklenz-frontend/src/pages/projects/projectView/updates/ProjectViewUpdates.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/updates/ProjectViewUpdates.tsx @@ -1,4 +1,4 @@ -import { Button, ConfigProvider, Flex, Form, Mentions, Space, Tooltip, Typography } from 'antd'; +import { Button, ConfigProvider, Flex, Form, Mentions, Space, Tooltip, Typography } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useAppSelector } from '../../../../hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/reporting/members-reports/members-reports-table/members-reports-table.tsx b/worklenz-frontend/src/pages/reporting/members-reports/members-reports-table/members-reports-table.tsx index 5a59feb7..fa349e2b 100644 --- a/worklenz-frontend/src/pages/reporting/members-reports/members-reports-table/members-reports-table.tsx +++ b/worklenz-frontend/src/pages/reporting/members-reports/members-reports-table/members-reports-table.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react'; -import { ConfigProvider, Table, TableColumnsType } from 'antd'; +import { ConfigProvider, Table, TableColumnsType } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/pages/reporting/members-reports/members-reports-table/tablesCells/memberCell/MemberCell.tsx b/worklenz-frontend/src/pages/reporting/members-reports/members-reports-table/tablesCells/memberCell/MemberCell.tsx index 869b2161..8b600a58 100644 --- a/worklenz-frontend/src/pages/reporting/members-reports/members-reports-table/tablesCells/memberCell/MemberCell.tsx +++ b/worklenz-frontend/src/pages/reporting/members-reports/members-reports-table/tablesCells/memberCell/MemberCell.tsx @@ -1,4 +1,4 @@ -import { Avatar, Flex, Typography } from 'antd'; +import { Avatar, Flex, Typography } from '@/shared/antd-imports'; import CustomAvatar from '@components/CustomAvatar'; type ProjectMangerCellProps = { diff --git a/worklenz-frontend/src/pages/reporting/members-reports/members-reports-table/tablesCells/tasksProgressCell/TasksProgressCell.tsx b/worklenz-frontend/src/pages/reporting/members-reports/members-reports-table/tablesCells/tasksProgressCell/TasksProgressCell.tsx index 3c9514af..9acfcd0b 100644 --- a/worklenz-frontend/src/pages/reporting/members-reports/members-reports-table/tablesCells/tasksProgressCell/TasksProgressCell.tsx +++ b/worklenz-frontend/src/pages/reporting/members-reports/members-reports-table/tablesCells/tasksProgressCell/TasksProgressCell.tsx @@ -1,4 +1,4 @@ -import { Flex, Tooltip, Typography } from 'antd'; +import { Flex, Tooltip, Typography } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/members-reports/members-reports.tsx b/worklenz-frontend/src/pages/reporting/members-reports/members-reports.tsx index eddfd3fd..8ef5d8fb 100644 --- a/worklenz-frontend/src/pages/reporting/members-reports/members-reports.tsx +++ b/worklenz-frontend/src/pages/reporting/members-reports/members-reports.tsx @@ -1,4 +1,4 @@ -import { Button, Card, Checkbox, Dropdown, Flex, Skeleton, Space, Typography } from 'antd'; +import { Button, Card, Checkbox, Dropdown, Flex, Skeleton, Space, Typography } from '@/shared/antd-imports'; import { DownOutlined } from '@ant-design/icons'; import MembersReportsTable from './members-reports-table/members-reports-table'; import TimeWiseFilter from '@/components/reporting/time-wise-filter'; diff --git a/worklenz-frontend/src/pages/reporting/overview-reports/overview-reports.tsx b/worklenz-frontend/src/pages/reporting/overview-reports/overview-reports.tsx index 0bb76d1d..d55e900e 100644 --- a/worklenz-frontend/src/pages/reporting/overview-reports/overview-reports.tsx +++ b/worklenz-frontend/src/pages/reporting/overview-reports/overview-reports.tsx @@ -1,5 +1,5 @@ import { useEffect, useCallback, useMemo } from 'react'; -import { Button, Card, Checkbox, Flex, Typography } from 'antd'; +import { Button, Card, Checkbox, Flex, Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { useDocumentTitle } from '@/hooks/useDoumentTItle'; import { useMixpanelTracking } from '@/hooks/useMixpanelTracking'; diff --git a/worklenz-frontend/src/pages/reporting/overview-reports/overview-stat-card.tsx b/worklenz-frontend/src/pages/reporting/overview-reports/overview-stat-card.tsx index d1f3491d..e7145ccb 100644 --- a/worklenz-frontend/src/pages/reporting/overview-reports/overview-stat-card.tsx +++ b/worklenz-frontend/src/pages/reporting/overview-reports/overview-stat-card.tsx @@ -1,4 +1,4 @@ -import { Card, Flex, Typography, theme } from 'antd'; +import { Card, Flex, Typography, theme } from '@/shared/antd-imports'; import React, { useMemo } from 'react'; interface InsightCardProps { diff --git a/worklenz-frontend/src/pages/reporting/overview-reports/overview-stats.tsx b/worklenz-frontend/src/pages/reporting/overview-reports/overview-stats.tsx index 3b359d17..8fb7f3fc 100644 --- a/worklenz-frontend/src/pages/reporting/overview-reports/overview-stats.tsx +++ b/worklenz-frontend/src/pages/reporting/overview-reports/overview-stats.tsx @@ -1,4 +1,4 @@ -import { Flex, Typography, theme } from 'antd'; +import { Flex, Typography, theme } from '@/shared/antd-imports'; import React, { useEffect, useState, useCallback, useMemo } from 'react'; import OverviewStatCard from './overview-stat-card'; import { BankOutlined, FileOutlined, UsergroupAddOutlined } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/pages/reporting/overview-reports/overview-table/overview-reports-table.tsx b/worklenz-frontend/src/pages/reporting/overview-reports/overview-table/overview-reports-table.tsx index a49215e0..2442f2b6 100644 --- a/worklenz-frontend/src/pages/reporting/overview-reports/overview-table/overview-reports-table.tsx +++ b/worklenz-frontend/src/pages/reporting/overview-reports/overview-table/overview-reports-table.tsx @@ -1,5 +1,5 @@ import { memo, useEffect, useState, useCallback, useMemo } from 'react'; -import { ConfigProvider, Table, TableColumnsType } from 'antd'; +import { ConfigProvider, Table, TableColumnsType } from '@/shared/antd-imports'; import { useAppDispatch } from '../../../../hooks/useAppDispatch'; import CustomTableTitle from '../../../../components/CustomTableTitle'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-categories-filter-dropdown.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-categories-filter-dropdown.tsx index 10968817..2a918aa4 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-categories-filter-dropdown.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-categories-filter-dropdown.tsx @@ -5,7 +5,7 @@ import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { IProjectCategoryViewModel } from '@/types/project/projectCategory.types'; import { CaretDownFilled } from '@ant-design/icons'; -import { Badge, Button, Card, Checkbox, Dropdown, Empty, Flex, Input, InputRef, List } from 'antd'; +import { Badge, Button, Card, Checkbox, Dropdown, Empty, Flex, Input, InputRef, List } from '@/shared/antd-imports'; import React, { useEffect, useMemo, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-health-filter-dropdown.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-health-filter-dropdown.tsx index 274edaaf..74f68631 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-health-filter-dropdown.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-health-filter-dropdown.tsx @@ -7,7 +7,7 @@ import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { IProjectHealth } from '@/types/project/projectHealth.types'; import { CaretDownFilled } from '@ant-design/icons'; -import { Button, Card, Checkbox, Dropdown, List, Space } from 'antd'; +import { Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import React, { useEffect, useState, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import debounce from 'lodash/debounce'; // Install lodash if not already present diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-managers-filter-dropdown.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-managers-filter-dropdown.tsx index 433c65eb..f875a042 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-managers-filter-dropdown.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-managers-filter-dropdown.tsx @@ -4,7 +4,7 @@ import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { IProjectManager } from '@/types/project/projectManager.types'; import { CaretDownFilled } from '@ant-design/icons'; -import { Button, Card, Checkbox, Dropdown, Empty, Flex, Input, InputRef, List } from 'antd'; +import { Button, Card, Checkbox, Dropdown, Empty, Flex, Input, InputRef, List } from '@/shared/antd-imports'; import React, { useEffect, useMemo, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-reports-filters.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-reports-filters.tsx index 05473501..efb3ed92 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-reports-filters.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-reports-filters.tsx @@ -1,4 +1,4 @@ -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import { useMemo, useCallback, memo } from 'react'; import { useTranslation } from 'react-i18next'; import ProjectStatusFilterDropdown from './project-status-filter-dropdown'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-status-filter-dropdown.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-status-filter-dropdown.tsx index f9a59440..ad51539b 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-status-filter-dropdown.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-status-filter-dropdown.tsx @@ -7,7 +7,7 @@ import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { IProjectStatus } from '@/types/project/projectStatus.types'; import { CaretDownFilled } from '@ant-design/icons'; -import { Button, Card, Checkbox, Dropdown, List, Space } from 'antd'; +import { Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import { debounce } from 'lodash'; import React, { useCallback, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-table-show-fields-dropdown.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-table-show-fields-dropdown.tsx index 7de0fb89..73349556 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-table-show-fields-dropdown.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-table-show-fields-dropdown.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import { MoreOutlined } from '@ant-design/icons'; -import { Button, Card, Checkbox, Dropdown, List, Space } from 'antd'; +import { Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { toggleColumnHidden } from '@/features/reporting/projectReports/project-reports-table-column-slice/project-reports-table-column-slice'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/projects-reports-table.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/projects-reports-table.tsx index 10570e65..d55452fc 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/projects-reports-table.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/projects-reports-table.tsx @@ -1,5 +1,5 @@ import { useEffect, useState, useMemo, useCallback, memo } from 'react'; -import { Button, ConfigProvider, Flex, PaginationProps, Table, TableColumnsType } from 'antd'; +import { Button, ConfigProvider, Flex, PaginationProps, Table, TableColumnsType } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { createPortal } from 'react-dom'; import { ExpandAltOutlined } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/estimated-vs-actual-cell/estimated-vs-actual-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/estimated-vs-actual-cell/estimated-vs-actual-cell.tsx index 07499c88..60b5c5bb 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/estimated-vs-actual-cell/estimated-vs-actual-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/estimated-vs-actual-cell/estimated-vs-actual-cell.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { Bar } from 'react-chartjs-2'; import { Chart, BarElement, CategoryScale, LinearScale } from 'chart.js'; import { ChartOptions } from 'chart.js'; -import { Typography } from 'antd'; +import { Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; Chart.register(BarElement, CategoryScale, LinearScale); diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/last-activity-cell/last-activity-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/last-activity-cell/last-activity-cell.tsx index bc3c2c20..72a55235 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/last-activity-cell/last-activity-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/last-activity-cell/last-activity-cell.tsx @@ -1,4 +1,4 @@ -import { Tooltip, Typography } from 'antd'; +import { Tooltip, Typography } from '@/shared/antd-imports'; import React from 'react'; const LastActivityCell = ({ activity }: { activity: string }) => { diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-category-cell/project-category-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-category-cell/project-category-cell.tsx index 9b68baa9..90a6104c 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-category-cell/project-category-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-category-cell/project-category-cell.tsx @@ -1,6 +1,6 @@ /* eslint-disable react-hooks/exhaustive-deps */ import { DownOutlined } from '@ant-design/icons'; -import { Badge, Card, Dropdown, Flex, Input, InputRef, Menu, MenuProps, Typography } from 'antd'; +import { Badge, Card, Dropdown, Flex, Input, InputRef, Menu, MenuProps, Typography } from '@/shared/antd-imports'; import React, { useEffect, useMemo, useRef, useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-cell/project-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-cell/project-cell.tsx index ff6c6bca..e7ac7508 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-cell/project-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-cell/project-cell.tsx @@ -1,4 +1,4 @@ -import { Badge, Flex, Space, Tooltip, Typography } from 'antd'; +import { Badge, Flex, Space, Tooltip, Typography } from '@/shared/antd-imports'; import React from 'react'; type ProjectCellProps = { diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-client-cell/project-client-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-client-cell/project-client-cell.tsx index a921cdfe..a55a3cde 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-client-cell/project-client-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-client-cell/project-client-cell.tsx @@ -1,4 +1,4 @@ -import { Typography } from 'antd'; +import { Typography } from '@/shared/antd-imports'; import React from 'react'; const ProjectClientCell = ({ client }: { client: string }) => { diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-dates-cell/project-dates-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-dates-cell/project-dates-cell.tsx index 1f9d283e..79962636 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-dates-cell/project-dates-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-dates-cell/project-dates-cell.tsx @@ -1,4 +1,4 @@ -import { DatePicker, Flex, Typography } from 'antd'; +import { DatePicker, Flex, Typography } from '@/shared/antd-imports'; import { useEffect } from 'react'; import { colors } from '@/styles/colors'; import dayjs, { Dayjs } from 'dayjs'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-days-left-and-overdue-cell/project-days-left-and-overdue-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-days-left-and-overdue-cell/project-days-left-and-overdue-cell.tsx index 87406690..7c617ef0 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-days-left-and-overdue-cell/project-days-left-and-overdue-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-days-left-and-overdue-cell/project-days-left-and-overdue-cell.tsx @@ -1,4 +1,4 @@ -import { Typography } from 'antd'; +import { Typography } from '@/shared/antd-imports'; import React from 'react'; import { colors } from '../../../../../../styles/colors'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-health-cell/project-health-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-health-cell/project-health-cell.tsx index c2dfe5a9..b09e5f5b 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-health-cell/project-health-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-health-cell/project-health-cell.tsx @@ -1,4 +1,4 @@ -import { Badge, Card, Dropdown, Flex, Menu, MenuProps, Typography } from 'antd'; +import { Badge, Card, Dropdown, Flex, Menu, MenuProps, Typography } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import { DownOutlined } from '@ant-design/icons'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-manager-cell/project-manager-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-manager-cell/project-manager-cell.tsx index 3066159f..b4ddc86e 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-manager-cell/project-manager-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-manager-cell/project-manager-cell.tsx @@ -1,4 +1,4 @@ -import { Avatar, Flex, Typography } from 'antd'; +import { Avatar, Flex, Typography } from '@/shared/antd-imports'; import CustomAvatar from '@components/CustomAvatar'; import { ITeamMemberViewModel } from '@/types/teamMembers/teamMembersGetResponse.types'; import SingleAvatar from '@/components/common/single-avatar/single-avatar'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-status-cell/project-status-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-status-cell/project-status-cell.tsx index aa7e581d..4757746b 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-status-cell/project-status-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-status-cell/project-status-cell.tsx @@ -1,4 +1,4 @@ -import { ConfigProvider, Select, Typography } from 'antd'; +import { ConfigProvider, Select, Typography } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import { useTranslation } from 'react-i18next'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-team-cell/project-team-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-team-cell/project-team-cell.tsx index c6f1bf34..d9fe1024 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-team-cell/project-team-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-team-cell/project-team-cell.tsx @@ -1,4 +1,4 @@ -import { Tag } from 'antd'; +import { Tag } from '@/shared/antd-imports'; import React from 'react'; import { colors } from '../../../../../../styles/colors'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-update-cell/project-update-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-update-cell/project-update-cell.tsx index d61a3b43..81ce5ec1 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-update-cell/project-update-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-update-cell/project-update-cell.tsx @@ -1,4 +1,4 @@ -import { Typography } from 'antd'; +import { Typography } from '@/shared/antd-imports'; import React from 'react'; type ProjectUpdateCellProps = { diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/tasks-progress-cell/tasks-progress-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/tasks-progress-cell/tasks-progress-cell.tsx index 751b5979..c6608fe9 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/tasks-progress-cell/tasks-progress-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/tasks-progress-cell/tasks-progress-cell.tsx @@ -1,4 +1,4 @@ -import { Flex, Tooltip, Typography } from 'antd'; +import { Flex, Tooltip, Typography } from '@/shared/antd-imports'; import React from 'react'; import { colors } from '../../../../../../styles/colors'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports.tsx index c2451d72..d92c270e 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports.tsx @@ -1,4 +1,4 @@ -import { Button, Card, Checkbox, Dropdown, Flex, Space, Typography } from 'antd'; +import { Button, Card, Checkbox, Dropdown, Flex, Space, Typography } from '@/shared/antd-imports'; import { useMemo, useCallback, memo } from 'react'; import CustomPageHeader from '@/pages/reporting/page-header/custom-page-header'; import { DownOutlined } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/pages/reporting/sidebar/reporting-collapsed-button.tsx b/worklenz-frontend/src/pages/reporting/sidebar/reporting-collapsed-button.tsx index e0c17085..e6befefa 100644 --- a/worklenz-frontend/src/pages/reporting/sidebar/reporting-collapsed-button.tsx +++ b/worklenz-frontend/src/pages/reporting/sidebar/reporting-collapsed-button.tsx @@ -1,7 +1,7 @@ import { GlobalOutlined, LeftCircleOutlined, RightCircleOutlined } from '@ant-design/icons'; import React, { useEffect, useState } from 'react'; import { colors } from '@/styles/colors'; -import { Button, Flex, Tooltip, Typography } from 'antd'; +import { Button, Flex, Tooltip, Typography } from '@/shared/antd-imports'; import { themeWiseColor } from '@utils/themeWiseColor'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/sidebar/reporting-sider.tsx b/worklenz-frontend/src/pages/reporting/sidebar/reporting-sider.tsx index 46cb2beb..33272c12 100644 --- a/worklenz-frontend/src/pages/reporting/sidebar/reporting-sider.tsx +++ b/worklenz-frontend/src/pages/reporting/sidebar/reporting-sider.tsx @@ -1,4 +1,4 @@ -import { ConfigProvider, Flex, Menu, MenuProps } from 'antd'; +import { ConfigProvider, Flex, Menu, MenuProps } from '@/shared/antd-imports'; import { Link, useLocation } from 'react-router-dom'; import { colors } from '@/styles/colors'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/time-reports/project-time-sheet/project-time-sheet-chart.tsx b/worklenz-frontend/src/pages/reporting/time-reports/project-time-sheet/project-time-sheet-chart.tsx index 6881c702..4eadccc0 100644 --- a/worklenz-frontend/src/pages/reporting/time-reports/project-time-sheet/project-time-sheet-chart.tsx +++ b/worklenz-frontend/src/pages/reporting/time-reports/project-time-sheet/project-time-sheet-chart.tsx @@ -16,7 +16,7 @@ import { useAppSelector } from '../../../../hooks/useAppSelector'; import { useTranslation } from 'react-i18next'; import { reportingTimesheetApiService } from '@/api/reporting/reporting.timesheet.api.service'; import { IRPTTimeProject } from '@/types/reporting/reporting.types'; -import { Empty, Spin } from 'antd'; +import { Empty, Spin } from '@/shared/antd-imports'; import logger from '@/utils/errorLogger'; // Lazy load the Bar chart component diff --git a/worklenz-frontend/src/pages/reporting/time-reports/time-sheet-table/time-sheet-table.tsx b/worklenz-frontend/src/pages/reporting/time-reports/time-sheet-table/time-sheet-table.tsx index 8a7ee8e7..ff74a6f4 100644 --- a/worklenz-frontend/src/pages/reporting/time-reports/time-sheet-table/time-sheet-table.tsx +++ b/worklenz-frontend/src/pages/reporting/time-reports/time-sheet-table/time-sheet-table.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react'; import { MemberLoggedTimeType } from '@/types/timeSheet/project.types'; -import { Empty, Progress, Spin } from 'antd'; +import { Empty, Progress, Spin } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useTranslation } from 'react-i18next'; import { reportingTimesheetApiService } from '@/api/reporting/reporting.timesheet.api.service'; diff --git a/worklenz-frontend/src/pages/reporting/timeReports/estimated-vs-actual-time-reports.tsx b/worklenz-frontend/src/pages/reporting/timeReports/estimated-vs-actual-time-reports.tsx index 9a9deb4c..8bcf649c 100644 --- a/worklenz-frontend/src/pages/reporting/timeReports/estimated-vs-actual-time-reports.tsx +++ b/worklenz-frontend/src/pages/reporting/timeReports/estimated-vs-actual-time-reports.tsx @@ -1,4 +1,4 @@ -import { Card, Flex, Segmented } from 'antd'; +import { Card, Flex, Segmented } from '@/shared/antd-imports'; import TimeReportPageHeader from '@/pages/reporting/timeReports/page-header/time-report-page-header'; import EstimatedVsActualTimeSheet, { EstimatedVsActualTimeSheetRef, diff --git a/worklenz-frontend/src/pages/reporting/timeReports/members-time-reports.tsx b/worklenz-frontend/src/pages/reporting/timeReports/members-time-reports.tsx index 2c0d87de..351f46c2 100644 --- a/worklenz-frontend/src/pages/reporting/timeReports/members-time-reports.tsx +++ b/worklenz-frontend/src/pages/reporting/timeReports/members-time-reports.tsx @@ -1,4 +1,4 @@ -import { Card, Flex } from 'antd'; +import { Card, Flex } from '@/shared/antd-imports'; import TimeReportPageHeader from '@/pages/reporting/timeReports/page-header/time-report-page-header'; import MembersTimeSheet, { MembersTimeSheetRef, diff --git a/worklenz-frontend/src/pages/reporting/timeReports/overview-time-reports.tsx b/worklenz-frontend/src/pages/reporting/timeReports/overview-time-reports.tsx index bc899835..7219ce5a 100644 --- a/worklenz-frontend/src/pages/reporting/timeReports/overview-time-reports.tsx +++ b/worklenz-frontend/src/pages/reporting/timeReports/overview-time-reports.tsx @@ -1,6 +1,6 @@ import React from 'react'; import TimeReportPageHeader from '@/pages/reporting/timeReports/page-header/time-report-page-header'; -import { Flex } from 'antd'; +import { Flex } from '@/shared/antd-imports'; import TimeSheetTable from '@/pages/reporting/time-reports/time-sheet-table/time-sheet-table'; import TimeReportingRightHeader from './timeReportingRightHeader/TimeReportingRightHeader'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/timeReports/page-header/billable.tsx b/worklenz-frontend/src/pages/reporting/timeReports/page-header/billable.tsx index ffb15f59..5b2bd1c3 100644 --- a/worklenz-frontend/src/pages/reporting/timeReports/page-header/billable.tsx +++ b/worklenz-frontend/src/pages/reporting/timeReports/page-header/billable.tsx @@ -2,7 +2,7 @@ import { setSelectOrDeselectBillable } from '@/features/reporting/time-reports/t import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { CaretDownFilled } from '@ant-design/icons'; -import { Button, Checkbox, Dropdown, MenuProps } from 'antd'; +import { Button, Checkbox, Dropdown, MenuProps } from '@/shared/antd-imports'; import React from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/timeReports/page-header/categories.tsx b/worklenz-frontend/src/pages/reporting/timeReports/page-header/categories.tsx index c35aa873..5f0c673e 100644 --- a/worklenz-frontend/src/pages/reporting/timeReports/page-header/categories.tsx +++ b/worklenz-frontend/src/pages/reporting/timeReports/page-header/categories.tsx @@ -7,7 +7,7 @@ import { import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { CaretDownFilled } from '@ant-design/icons'; -import { Button, Card, Checkbox, Divider, Dropdown, Input, theme } from 'antd'; +import { Button, Card, Checkbox, Divider, Dropdown, Input, theme } from '@/shared/antd-imports'; import { CheckboxChangeEvent } from 'antd/es/checkbox'; import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/timeReports/page-header/projects.tsx b/worklenz-frontend/src/pages/reporting/timeReports/page-header/projects.tsx index 48d83ce6..1b5b564d 100644 --- a/worklenz-frontend/src/pages/reporting/timeReports/page-header/projects.tsx +++ b/worklenz-frontend/src/pages/reporting/timeReports/page-header/projects.tsx @@ -26,7 +26,7 @@ import { Space, Tooltip, Empty, -} from 'antd'; +} from '@/shared/antd-imports'; import { CheckboxChangeEvent } from 'antd/es/checkbox'; import React, { useState, useMemo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/timeReports/page-header/team.tsx b/worklenz-frontend/src/pages/reporting/timeReports/page-header/team.tsx index 76aea69c..cac788ca 100644 --- a/worklenz-frontend/src/pages/reporting/timeReports/page-header/team.tsx +++ b/worklenz-frontend/src/pages/reporting/timeReports/page-header/team.tsx @@ -1,5 +1,5 @@ import { CaretDownFilled } from '@ant-design/icons'; -import { Button, Checkbox, Divider, Dropdown, Input, theme } from 'antd'; +import { Button, Checkbox, Divider, Dropdown, Input, theme } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; import type { CheckboxChangeEvent } from 'antd/es/checkbox'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/timeReports/projects-time-reports.tsx b/worklenz-frontend/src/pages/reporting/timeReports/projects-time-reports.tsx index d5dd13f5..45b829b3 100644 --- a/worklenz-frontend/src/pages/reporting/timeReports/projects-time-reports.tsx +++ b/worklenz-frontend/src/pages/reporting/timeReports/projects-time-reports.tsx @@ -1,4 +1,4 @@ -import { Card, Flex } from 'antd'; +import { Card, Flex } from '@/shared/antd-imports'; import TimeReportPageHeader from '@/pages/reporting/timeReports/page-header/time-report-page-header'; import ProjectTimeSheetChart, { ProjectTimeSheetChartRef, diff --git a/worklenz-frontend/src/pages/reporting/timeReports/timeReportingRightHeader/TimeReportingRightHeader.tsx b/worklenz-frontend/src/pages/reporting/timeReports/timeReportingRightHeader/TimeReportingRightHeader.tsx index d2594db0..36b1ae81 100644 --- a/worklenz-frontend/src/pages/reporting/timeReports/timeReportingRightHeader/TimeReportingRightHeader.tsx +++ b/worklenz-frontend/src/pages/reporting/timeReports/timeReportingRightHeader/TimeReportingRightHeader.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Button, Checkbox, Dropdown, Space, Typography } from 'antd'; +import { Button, Checkbox, Dropdown, Space, Typography } from '@/shared/antd-imports'; import { DownOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; import CustomPageHeader from '../../page-header/custom-page-header'; diff --git a/worklenz-frontend/src/pages/schedule-old/schedule.tsx b/worklenz-frontend/src/pages/schedule-old/schedule.tsx index 45c5885f..cdd6599d 100644 --- a/worklenz-frontend/src/pages/schedule-old/schedule.tsx +++ b/worklenz-frontend/src/pages/schedule-old/schedule.tsx @@ -1,4 +1,4 @@ -import { Button, DatePicker, DatePickerProps, Select, Space } from 'antd'; +import { Button, DatePicker, DatePickerProps, Select, Space } from '@/shared/antd-imports'; import React, { Suspense, useState } from 'react'; import Team from '../../components/schedule-old/team/Team'; import { SettingOutlined } from '@ant-design/icons'; diff --git a/worklenz-frontend/src/pages/schedule/grant-chart.tsx b/worklenz-frontend/src/pages/schedule/grant-chart.tsx index 4f93090e..ccf89d53 100644 --- a/worklenz-frontend/src/pages/schedule/grant-chart.tsx +++ b/worklenz-frontend/src/pages/schedule/grant-chart.tsx @@ -10,7 +10,7 @@ // Row, // Tooltip, // Typography, -// } from 'antd'; +// } from '@/shared/antd-imports'; // import { avatarNamesMap } from '../../../shared/constants'; // import { CaretDownOutlined, CaretRightFilled } from '@ant-design/icons'; // import { useAppSelector } from '@/hooks/useAppSelector'; @@ -563,7 +563,7 @@ export default Grant; // useState, // } from 'react'; // import { Member } from '../../../../types/schedule/schedule.types'; -// import { Col, Flex, Row, Typography } from 'antd'; +// import { Col, Flex, Row, Typography } from '@/shared/antd-imports'; // import { useAppSelector } from '../../../../hooks/useAppSelector'; // import { useDispatch } from 'react-redux'; // import { toggleScheduleDrawer } from '../../../../features/schedule/scheduleSlice'; diff --git a/worklenz-frontend/src/pages/schedule/schedule.tsx b/worklenz-frontend/src/pages/schedule/schedule.tsx index d1d013fe..b6f54ead 100644 --- a/worklenz-frontend/src/pages/schedule/schedule.tsx +++ b/worklenz-frontend/src/pages/schedule/schedule.tsx @@ -1,4 +1,4 @@ -import { Button, DatePicker, DatePickerProps, Flex, Select, Space } from 'antd'; +import { Button, DatePicker, DatePickerProps, Flex, Select, Space } from '@/shared/antd-imports'; import React, { useRef, useState } from 'react'; import { SettingOutlined } from '@ant-design/icons'; import { useDispatch } from 'react-redux'; diff --git a/worklenz-frontend/src/pages/settings/appearance/appearance-settings.tsx b/worklenz-frontend/src/pages/settings/appearance/appearance-settings.tsx index 89d6970b..a0f50758 100644 --- a/worklenz-frontend/src/pages/settings/appearance/appearance-settings.tsx +++ b/worklenz-frontend/src/pages/settings/appearance/appearance-settings.tsx @@ -1,4 +1,4 @@ -import { Card, Divider, Flex, Switch, Typography } from 'antd'; +import { Card, Flex, Switch, Typography } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/settings/categories/categories-settings.tsx b/worklenz-frontend/src/pages/settings/categories/categories-settings.tsx index f583ce0b..4ac631b4 100644 --- a/worklenz-frontend/src/pages/settings/categories/categories-settings.tsx +++ b/worklenz-frontend/src/pages/settings/categories/categories-settings.tsx @@ -9,7 +9,7 @@ import { TableProps, Tooltip, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/pages/settings/change-password/change-password.tsx b/worklenz-frontend/src/pages/settings/change-password/change-password.tsx index e7187fff..5086279b 100644 --- a/worklenz-frontend/src/pages/settings/change-password/change-password.tsx +++ b/worklenz-frontend/src/pages/settings/change-password/change-password.tsx @@ -1,5 +1,5 @@ import { EyeInvisibleOutlined, EyeOutlined } from '@ant-design/icons'; -import { Button, Card, Form, Input, notification, Row, Typography } from 'antd'; +import { Button, Card, Form, Input, notification, Row, Typography } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { useDocumentTitle } from '@/hooks/useDoumentTItle'; import { profileSettingsApiService } from '@/api/settings/profile/profile-settings.api.service'; diff --git a/worklenz-frontend/src/pages/settings/clients/client-drawer.tsx b/worklenz-frontend/src/pages/settings/clients/client-drawer.tsx index a0003f7e..d27f16b2 100644 --- a/worklenz-frontend/src/pages/settings/clients/client-drawer.tsx +++ b/worklenz-frontend/src/pages/settings/clients/client-drawer.tsx @@ -1,4 +1,4 @@ -import { Button, Drawer, Form, Input, message, Typography } from 'antd'; +import { Button, Drawer, Form, Input, message, Typography } from '@/shared/antd-imports'; import { useEffect } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/pages/settings/clients/clients-settings.tsx b/worklenz-frontend/src/pages/settings/clients/clients-settings.tsx index b4466838..dc468067 100644 --- a/worklenz-frontend/src/pages/settings/clients/clients-settings.tsx +++ b/worklenz-frontend/src/pages/settings/clients/clients-settings.tsx @@ -14,7 +14,7 @@ import { TableProps, Tooltip, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { useEffect, useMemo, useState } from 'react'; import { colors } from '@/styles/colors'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/pages/settings/job-titles/job-titles-drawer.tsx b/worklenz-frontend/src/pages/settings/job-titles/job-titles-drawer.tsx index de1d7227..8f3b5f41 100644 --- a/worklenz-frontend/src/pages/settings/job-titles/job-titles-drawer.tsx +++ b/worklenz-frontend/src/pages/settings/job-titles/job-titles-drawer.tsx @@ -1,4 +1,4 @@ -import { Button, Drawer, Form, Input, message, Typography } from 'antd'; +import { Button, Drawer, Form, Input, message, Typography } from '@/shared/antd-imports'; import { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { jobTitlesApiService } from '@/api/settings/job-titles/job-titles.api.service'; diff --git a/worklenz-frontend/src/pages/settings/job-titles/job-titles-settings.tsx b/worklenz-frontend/src/pages/settings/job-titles/job-titles-settings.tsx index ae47ca01..0db03cf9 100644 --- a/worklenz-frontend/src/pages/settings/job-titles/job-titles-settings.tsx +++ b/worklenz-frontend/src/pages/settings/job-titles/job-titles-settings.tsx @@ -22,7 +22,7 @@ import { TableProps, Tooltip, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import JobTitleDrawer from './job-titles-drawer'; diff --git a/worklenz-frontend/src/pages/settings/labels/labels-settings.tsx b/worklenz-frontend/src/pages/settings/labels/labels-settings.tsx index 4deb4540..21687cd5 100644 --- a/worklenz-frontend/src/pages/settings/labels/labels-settings.tsx +++ b/worklenz-frontend/src/pages/settings/labels/labels-settings.tsx @@ -8,7 +8,7 @@ import { TableProps, Tooltip, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { useEffect, useMemo, useState } from 'react'; import PinRouteToNavbarButton from '../../../components/PinRouteToNavbarButton'; diff --git a/worklenz-frontend/src/pages/settings/language-and-region/language-and-region-settings.tsx b/worklenz-frontend/src/pages/settings/language-and-region/language-and-region-settings.tsx index 4dc0191c..9e860b46 100644 --- a/worklenz-frontend/src/pages/settings/language-and-region/language-and-region-settings.tsx +++ b/worklenz-frontend/src/pages/settings/language-and-region/language-and-region-settings.tsx @@ -1,4 +1,4 @@ -import { Button, Card, Flex, Form, Select, Skeleton, Typography } from 'antd'; +import { Button, Card, Flex, Form, Select, Skeleton, Typography } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/pages/settings/profile/profile-settings.tsx b/worklenz-frontend/src/pages/settings/profile/profile-settings.tsx index cd8950e1..d590a27f 100644 --- a/worklenz-frontend/src/pages/settings/profile/profile-settings.tsx +++ b/worklenz-frontend/src/pages/settings/profile/profile-settings.tsx @@ -9,7 +9,7 @@ import { Typography, Spin, Skeleton, -} from 'antd'; +} from '@/shared/antd-imports'; import { useEffect, useState, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import { changeUserName, setUser } from '@features/user/userSlice'; diff --git a/worklenz-frontend/src/pages/settings/project-templates/project-templates-settings.tsx b/worklenz-frontend/src/pages/settings/project-templates/project-templates-settings.tsx index 2d8b60f1..5cf69782 100644 --- a/worklenz-frontend/src/pages/settings/project-templates/project-templates-settings.tsx +++ b/worklenz-frontend/src/pages/settings/project-templates/project-templates-settings.tsx @@ -1,4 +1,4 @@ -import { Button, Card, Popconfirm, Table, TableProps, Tooltip, Typography } from 'antd'; +import { Button, Card, Popconfirm, Table, TableProps, Tooltip, Typography } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/settings/project-templates/projectTemplateEditView/ProjectTemplateEditView.tsx b/worklenz-frontend/src/pages/settings/project-templates/projectTemplateEditView/ProjectTemplateEditView.tsx index de56a6e8..3c5c75d5 100644 --- a/worklenz-frontend/src/pages/settings/project-templates/projectTemplateEditView/ProjectTemplateEditView.tsx +++ b/worklenz-frontend/src/pages/settings/project-templates/projectTemplateEditView/ProjectTemplateEditView.tsx @@ -1,4 +1,4 @@ -import { Button, Flex, Select, Typography } from 'antd'; +import { Button, Flex, Select, Typography } from '@/shared/antd-imports'; import { useState } from 'react'; import StatusGroupTables from '../../../projects/project-view-1/taskList/statusTables/StatusGroupTables'; import { TaskType } from '../../../../types/task.types'; diff --git a/worklenz-frontend/src/pages/settings/sidebar/settings-sidebar.tsx b/worklenz-frontend/src/pages/settings/sidebar/settings-sidebar.tsx index 61f67a94..4936c2f1 100644 --- a/worklenz-frontend/src/pages/settings/sidebar/settings-sidebar.tsx +++ b/worklenz-frontend/src/pages/settings/sidebar/settings-sidebar.tsx @@ -1,5 +1,5 @@ import { RightOutlined } from '@ant-design/icons'; -import { ConfigProvider, Flex, Menu, MenuProps } from 'antd'; +import { ConfigProvider, Flex, Menu, MenuProps } from '@/shared/antd-imports'; import { Link, useLocation } from 'react-router-dom'; import { colors } from '@/styles/colors'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/settings/task-templates/task-templates-settings.tsx b/worklenz-frontend/src/pages/settings/task-templates/task-templates-settings.tsx index 82ef4736..7e55c711 100644 --- a/worklenz-frontend/src/pages/settings/task-templates/task-templates-settings.tsx +++ b/worklenz-frontend/src/pages/settings/task-templates/task-templates-settings.tsx @@ -1,4 +1,4 @@ -import { Button, Card, Popconfirm, Table, TableProps, Tooltip, Typography } from 'antd'; +import { Button, Card, Popconfirm, Table, TableProps, Tooltip, Typography } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import './task-templates-settings.css'; diff --git a/worklenz-frontend/src/pages/settings/team-members/team-members-settings.tsx b/worklenz-frontend/src/pages/settings/team-members/team-members-settings.tsx index f7656c6f..f7cce8f9 100644 --- a/worklenz-frontend/src/pages/settings/team-members/team-members-settings.tsx +++ b/worklenz-frontend/src/pages/settings/team-members/team-members-settings.tsx @@ -18,7 +18,7 @@ import { TableProps, Tooltip, Typography, -} from 'antd'; +} from '@/shared/antd-imports'; import { createPortal } from 'react-dom'; import { useEffect, useState, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/settings/teams/teams-settings.tsx b/worklenz-frontend/src/pages/settings/teams/teams-settings.tsx index 5c21fb0c..3a94cb5a 100644 --- a/worklenz-frontend/src/pages/settings/teams/teams-settings.tsx +++ b/worklenz-frontend/src/pages/settings/teams/teams-settings.tsx @@ -1,4 +1,4 @@ -import { Button, Card, Flex, Table, TableProps, Tooltip, Typography } from 'antd'; +import { Button, Card, Flex, Table, TableProps, Tooltip, Typography } from '@/shared/antd-imports'; import PinRouteToNavbarButton from '@components/PinRouteToNavbarButton'; import { useAppSelector } from '@/hooks/useAppSelector'; import { durationDateFormat } from '@utils/durationDateFormat'; diff --git a/worklenz-frontend/src/pages/unauthorized/unauthorized.tsx b/worklenz-frontend/src/pages/unauthorized/unauthorized.tsx index 7be795bf..ee31c5bf 100644 --- a/worklenz-frontend/src/pages/unauthorized/unauthorized.tsx +++ b/worklenz-frontend/src/pages/unauthorized/unauthorized.tsx @@ -1,5 +1,5 @@ import { useDocumentTitle } from '@/hooks/useDoumentTItle'; -import { Button, Result } from 'antd'; +import { Button, Result } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; diff --git a/worklenz-frontend/src/services/alerts/alertService.ts b/worklenz-frontend/src/services/alerts/alertService.ts index df4d2865..4de3f663 100644 --- a/worklenz-frontend/src/services/alerts/alertService.ts +++ b/worklenz-frontend/src/services/alerts/alertService.ts @@ -1,6 +1,6 @@ import { AlertType } from '@/types/alert.types'; import DOMPurify from 'dompurify'; -import { notification } from 'antd'; +import { notification } from '@/shared/antd-imports'; class AlertService { private static instance: AlertService; private activeAlerts: Set = new Set(); diff --git a/worklenz-frontend/src/services/alerts/alertSlice.ts b/worklenz-frontend/src/services/alerts/alertSlice.ts index f7dd324d..94332ff0 100644 --- a/worklenz-frontend/src/services/alerts/alertSlice.ts +++ b/worklenz-frontend/src/services/alerts/alertSlice.ts @@ -1,6 +1,6 @@ import { AlertConfig, AlertState, AlertType } from '@/types/alert.types'; import { createSlice, PayloadAction } from '@reduxjs/toolkit'; -import { notification } from 'antd'; +import { notification } from '@/shared/antd-imports'; import DOMPurify from 'dompurify'; const initialState: AlertState = { diff --git a/worklenz-frontend/src/shared/antd-imports.ts b/worklenz-frontend/src/shared/antd-imports.ts index 253ff847..680d6e58 100644 --- a/worklenz-frontend/src/shared/antd-imports.ts +++ b/worklenz-frontend/src/shared/antd-imports.ts @@ -12,6 +12,7 @@ import React from 'react'; // Import Ant Design components using the standard method for better context sharing import { + AutoComplete, Button, Input, Select, @@ -51,7 +52,20 @@ import { notification, theme, Statistic, -} from 'antd'; + Segmented, + Switch, + Calendar, + FloatButton, + Pagination, + ColorPicker, + Popover, + Image, + Collapse, + Breadcrumb, + Timeline, + Mentions, + Radio, +} from 'antd/es'; // Icons - Import commonly used ones export { @@ -102,12 +116,13 @@ export { DoubleRightOutlined, UserAddOutlined, ArrowsAltOutlined, - EllipsisOutlined + EllipsisOutlined, } from '@ant-design/icons'; // Re-export all components with React export { React, + AutoComplete, Button, Input, Select, @@ -147,6 +162,19 @@ export { notification, theme, Statistic, + Segmented, + Switch, + Calendar, + FloatButton, + Pagination, + ColorPicker, + Popover, + Image, + Collapse, + Breadcrumb, + Timeline, + Mentions, + Radio }; // TypeScript Types - Import commonly used ones @@ -167,7 +195,7 @@ export type { TabsProps, TableProps, TableColumnsType, -} from 'antd'; +} from 'antd/es'; // Dayjs export { default as dayjs } from 'dayjs'; diff --git a/worklenz-frontend/src/socket/socketContext.tsx b/worklenz-frontend/src/socket/socketContext.tsx index c20d676c..c0bf99af 100644 --- a/worklenz-frontend/src/socket/socketContext.tsx +++ b/worklenz-frontend/src/socket/socketContext.tsx @@ -4,7 +4,7 @@ import { useTranslation } from 'react-i18next'; import { SOCKET_CONFIG } from './config'; import logger from '@/utils/errorLogger'; -import { Modal, message } from 'antd'; +import { Modal, message } from '@/shared/antd-imports'; import { SocketEvents } from '@/shared/socket-events'; import { getUserSession } from '@/utils/session-helper'; From a6863d8280653d11e18eb4107904fd329571d147 Mon Sep 17 00:00:00 2001 From: chamikaJ Date: Wed, 23 Jul 2025 12:07:48 +0530 Subject: [PATCH 10/13] refactor: update code to use centralized Ant Design imports - Replaced direct import of '@ant-design/icons' with centralized import from '@/shared/antd-imports' --- .../src/components/AssigneeSelector.tsx | 2 +- .../src/components/CustomSearchbar.tsx | 2 +- .../src/components/CustomTableTitle.tsx | 2 +- .../src/components/LabelsSelector.tsx | 2 +- .../src/components/PinRouteToNavbarButton.tsx | 2 +- .../src/components/PreferenceSelector.tsx | 2 +- .../components/account-setup/members-step.tsx | 2 +- .../components/account-setup/tasks-step.tsx | 2 +- .../add-members-dropdown.tsx | 2 +- .../add-members-dropdown.tsx | 2 +- .../billing/billing-tables/invoices-table.tsx | 2 +- .../admin-center/billing/current-bill.tsx | 2 +- .../current-plan-details.tsx | 2 +- .../upgrade-plans-lkr/upgrade-plans-lkr.tsx | 2 +- .../drawers/upgrade-plans/upgrade-plans.tsx | 2 +- .../organization-name/organization-name.tsx | 3 +- .../organization-owner/organization-owner.tsx | 2 +- .../teams/teams-table/teams-table.tsx | 2 +- .../board-assignee-selector.tsx | 2 +- .../ChangeCategoryDropdown.tsx | 2 +- .../common-members-section.tsx | 2 +- .../common-phase-section.tsx | 2 +- .../common-priority-section.tsx | 2 +- .../CommonStatusSection.tsx | 2 +- .../board/custom-due-date-picker.tsx | 2 +- .../board/kanban-group/kanban-group.tsx | 2 +- .../components/board/taskCard/TaskCard.tsx | 2 +- .../priority-section/priority-section.tsx | 2 +- .../common/people-dropdown/PeopleDropdown.tsx | 2 +- .../project-status-icon.tsx | 2 +- .../template-drawer/template-drawer.tsx | 2 +- .../EnhancedKanbanCreateSection.tsx | 4 +- .../EnhancedKanbanTaskCard.tsx | 6 +- .../kanbanGroup.tsx | 2 +- .../kanbanTaskCard.tsx | 2 +- .../notification/notification-button.tsx | 2 +- .../notification/notification-item.tsx | 2 +- .../notification/notification-template.tsx | 2 +- .../push-notification-template.tsx | 2 +- .../project-group/project-group-list.tsx | 3 +- .../project-list-actions.tsx | 2 +- .../project-rate-cell.tsx | 2 +- .../project-name/project-name-cell.tsx | 2 +- .../create-status-button.tsx | 2 +- .../delete-status-drawer.tsx | 2 +- .../column-configuration-modal.tsx | 2 +- .../group-by-filter-dropdown.tsx | 2 +- .../labels-filter-dropdown.tsx | 2 +- .../members-filter-dropdown.tsx | 2 +- .../priority-filter-dropdown.tsx | 2 +- .../filter-dropdowns/search-dropdown.tsx | 2 +- .../show-fields-filter-dropdown.tsx | 2 +- .../filter-dropdowns/sort-filter-dropdown.tsx | 2 +- .../project-create-button.tsx | 2 +- .../project-category-section.tsx | 2 +- .../project-client-section.tsx | 2 +- .../project-manager-dropdown.tsx | 2 +- .../project-member-invite-drawer.tsx | 2 +- .../projects/project-stats-card.tsx | 2 +- .../overview-team-info-drawer.tsx | 5 +- .../reporting-overview-projects-table.tsx | 2 +- .../components/reporting/time-wise-filter.tsx | 2 +- .../src/components/schedule-old/team/Team.tsx | 2 +- .../grant-chart/grantt-members-table.tsx | 2 +- .../grant-chart/project-timeline-bar.tsx | 2 +- .../ServiceWorkerStatus.tsx | 2 +- .../activity-log/task-drawer-activity-log.tsx | 2 +- .../info-tab/attachments/attachments-grid.tsx | 2 - .../attachments/attachments-preview.tsx | 3 +- .../attachments/attachments-upload.tsx | 2 +- .../info-tab/comments/task-comments.tsx | 2 +- .../shared/info-tab/dependencies-table.tsx | 2 +- .../task-drawer-assignee-selector.tsx | 2 +- .../task-drawer-labels/task-drawer-labels.tsx | 2 +- .../task-drawer-priority-selector.tsx | 2 +- .../task-drawer-progress.tsx | 2 +- .../task-drawer-recurring-config.tsx | 2 +- .../shared/info-tab/info-tab-footer.tsx | 2 +- .../info-tab/notify-member-selector.tsx | 2 +- .../shared/info-tab/subtask-table.tsx | 2 +- .../shared/info-tab/task-drawer-info-tab.tsx | 4 +- .../shared/time-log/TaskDrawerTimeLog.tsx | 2 +- .../shared/time-log/task-drawer-time-log.tsx | 2 +- .../shared/time-log/time-log-form.tsx | 2 +- .../task-drawer-header/task-drawer-header.tsx | 2 +- .../components/task-drawer/task-drawer.tsx | 2 +- .../task-hierarchy-breadcrumb.tsx | 2 +- .../assigneeSelector/AssigneeSelector.tsx | 2 +- .../convert-to-subtask-drawer.tsx | 2 +- .../labelsSelector/labels-selector.tsx | 2 +- .../priorityDropdown/priority-dropdown.tsx | 2 +- .../task-row/task-row-name/task-row-name.tsx | 2 +- .../task-row-time-tracking.tsx | 2 +- .../task-list-v2/TaskListV2Table.tsx | 3 +- .../task-list-v2/TaskRowWithSubtasks.tsx | 2 +- .../task-list-v2/components/AddTaskRow.tsx | 2 +- .../components/CustomColumnComponents.tsx | 4 +- .../components/DatePickerColumn.tsx | 2 +- .../components/TaskContextMenu.tsx | 2 +- .../components/TaskRowColumns.tsx | 12 +--- .../task-list-v2/components/TitleColumn.tsx | 2 +- .../task-management/CreateTaskModal.tsx | 2 +- .../task-management/ManagePhaseModal.tsx | 2 +- .../task-management/ManageStatusModal.tsx | 2 +- .../lazy-assignee-selector.tsx | 2 +- .../optimized-bulk-action-bar.tsx | 2 +- .../task-management/task-phase-dropdown.tsx | 2 +- .../task-priority-dropdown.tsx | 2 +- .../task-management/virtualized-task-list.tsx | 2 +- .../assignee-selector/assignee-selector.tsx | 2 +- .../labelsSelector/LabelsSelector.tsx | 2 +- .../priorityDropdown/PriorityDropdown.tsx | 2 +- .../statusDropdown/StatusDropdown.tsx | 2 +- .../task-list-bulk-actions-bar.tsx | 2 +- .../taskListCommon/task-timer/task-timer.tsx | 3 +- .../src/features/navbar/help/HelpButton.tsx | 2 +- .../features/navbar/invite/InviteButton.tsx | 2 +- .../navbar/mobileMenu/MobileMenuButton.tsx | 2 +- .../navbar/switchTeam/SwitchTeamButton.tsx | 2 +- .../features/navbar/timers/timer-button.tsx | 2 +- .../navbar/user-profile/profile-button.tsx | 2 +- .../bulkActions/BulkTasksActionContainer.tsx | 2 +- .../singleProject/phase/ConfigPhaseButton.tsx | 9 ++- .../singleProject/phase/PhaseDrawer.tsx | 4 +- .../singleProject/phase/PhaseOptionItem.tsx | 2 +- .../update-project/update-project-drawer.tsx | 2 +- .../members-reports-drawer.tsx | 2 +- .../members-overview-tasks-stats-table.tsx | 2 +- .../overviewTab/members-reports-stat-card.tsx | 2 +- .../taskTab/MembersReportsTasksTable.tsx | 2 +- .../time-log-tab/billable-filter.tsx | 2 +- .../ProjectReportsDrawer.tsx | 2 +- .../ProjectReportsMembersTaskDrawer.tsx | 2 +- .../ProjectReportsMembersTaskTable.tsx | 2 +- .../overviewTab/ProjectReportsStatCard.tsx | 2 +- .../tasksTab/ProjectReportsTaskTable.tsx | 2 +- .../tasksTab/group-by-filter.tsx | 2 +- .../projects/ProjectTimeLogDrawer.tsx | 2 +- .../src/lib/settings/settings-constants.ts | 2 +- .../admin-center/admin-center-constants.ts | 2 +- .../pages/admin-center/overview/overview.tsx | 2 +- .../pages/admin-center/projects/projects.tsx | 2 +- .../pages/admin-center/sidebar/sidebar.tsx | 2 +- .../src/pages/admin-center/teams/teams.tsx | 2 +- .../src/pages/admin-center/users/users.tsx | 2 +- .../src/pages/auth/ForgotPasswordPage.tsx | 2 +- .../src/pages/auth/LoginPage.tsx | 2 +- .../src/pages/auth/SignupPage.tsx | 4 +- .../src/pages/auth/VerifyResetEmailPage.tsx | 4 +- .../add-favourite-project-button.tsx | 2 +- .../recent-and-favourite-project-list.tsx | 2 +- .../pages/home/task-list/calendar-view.tsx | 2 +- .../src/pages/home/task-list/tasks-list.tsx | 2 +- .../pages/home/todo-list/todo-done-button.tsx | 2 +- .../src/pages/home/todo-list/todo-list.tsx | 2 +- .../src/pages/projects/project-list.tsx | 2 +- .../board/project-view-board.tsx | 2 +- .../roadmap-table/roadmap-task-cell.tsx | 2 +- .../project-view-1/task-list/table-v2.tsx | 2 +- .../task-list-columns/task-list-columns.tsx | 2 +- .../task-list-header/task-list-header.tsx | 2 +- .../task-list-table-wrapper.tsx | 2 +- .../taskListFilters/GroupByFilterDropdown.tsx | 2 +- .../taskListFilters/LabelsFilterDropdown.tsx | 2 +- .../taskListFilters/MembersFilterDropdown.tsx | 2 +- .../PriorityFilterDropdown.tsx | 2 +- .../taskListFilters/SearchDropdown.tsx | 2 +- .../ShowFieldsFilterDropdown.tsx | 2 +- .../taskListFilters/SortFilterDropdown.tsx | 2 +- .../taskList/taskListTable/TaskListTable.tsx | 2 +- .../taskListTable/TaskListTableWrapper.tsx | 2 +- .../contextMenu/TaskContextMenu.tsx | 2 +- .../taskListTableCells/TaskCell.tsx | 2 +- .../taskListTableCells/TimeTracker.tsx | 2 +- .../updates/project-view-updates.tsx | 2 +- .../board-create-section-card.tsx | 2 +- .../board-section-card-header.tsx | 2 +- .../board-section-card/board-section-card.tsx | 2 +- .../board-sub-task-card.tsx | 2 +- .../board-task-card/board-view-task-card.tsx | 2 +- .../projectView/files/project-view-files.tsx | 2 +- .../tables/tasks-by-members.tsx | 2 +- .../insights-tasks/insights-tasks.tsx | 2 +- .../tables/over-logged-tasks-table.tsx | 2 +- .../insights/project-view-insights.tsx | 2 +- .../members/project-view-members.tsx | 2 +- .../projectView/project-view-header.tsx | 2 +- .../projects/projectView/project-view.tsx | 2 - .../components/task-group/task-group.tsx | 2 +- .../taskList/groupTables/TaskGroupList.tsx | 2 +- .../context-menu/task-context-menu.tsx | 2 +- .../custom-column-label-cell.tsx | 2 +- .../custom-column-selection-cell.tsx | 2 +- .../custom-column-header.tsx | 2 +- .../add-custom-column-button.tsx | 2 +- .../custom-column-modal.tsx | 2 +- .../label-type-column/label-type-column.tsx | 2 +- .../selection-type-column.tsx | 2 +- .../task-list-task-cell.tsx | 2 +- .../add-task-list-row.tsx | 2 +- .../task-list-table-wrapper.tsx | 2 +- .../task-list-table/task-list-table.tsx | 2 +- .../members-reports/members-reports.tsx | 2 +- .../overview-reports/overview-stats.tsx | 2 +- .../project-categories-filter-dropdown.tsx | 2 +- .../project-health-filter-dropdown.tsx | 2 +- .../project-managers-filter-dropdown.tsx | 2 +- .../project-status-filter-dropdown.tsx | 2 +- .../project-table-show-fields-dropdown.tsx | 2 +- .../projects-reports-table.tsx | 2 +- .../project-category-cell.tsx | 2 +- .../project-health-cell.tsx | 2 +- .../projects-reports/projects-reports.tsx | 2 +- .../sidebar/reporting-collapsed-button.tsx | 2 +- .../timeReports/page-header/billable.tsx | 2 +- .../timeReports/page-header/categories.tsx | 2 +- .../timeReports/page-header/projects.tsx | 2 +- .../timeReports/page-header/team.tsx | 9 +-- .../TimeReportingRightHeader.tsx | 2 +- .../src/pages/schedule-old/schedule.tsx | 2 +- .../src/pages/schedule/schedule.tsx | 2 +- .../appearance/appearance-settings.tsx | 2 +- .../categories/categories-settings.tsx | 3 +- .../change-password/change-password.tsx | 2 +- .../settings/clients/clients-settings.tsx | 2 +- .../job-titles/job-titles-settings.tsx | 2 +- .../pages/settings/labels/labels-settings.tsx | 2 +- .../settings/profile/profile-settings.tsx | 2 +- .../project-templates-settings.tsx | 4 +- .../ProjectTemplateEditView.tsx | 2 +- .../settings/sidebar/settings-sidebar.tsx | 2 +- .../task-templates-settings.tsx | 2 +- .../team-members/team-members-settings.tsx | 2 +- .../pages/settings/teams/teams-settings.tsx | 2 +- worklenz-frontend/src/shared/antd-imports.ts | 70 ++++++++++++++++++- worklenz-frontend/src/shared/constants.ts | 2 +- .../src/types/project/project.types.ts | 2 +- 237 files changed, 319 insertions(+), 274 deletions(-) diff --git a/worklenz-frontend/src/components/AssigneeSelector.tsx b/worklenz-frontend/src/components/AssigneeSelector.tsx index f9d8fd1f..7a489885 100644 --- a/worklenz-frontend/src/components/AssigneeSelector.tsx +++ b/worklenz-frontend/src/components/AssigneeSelector.tsx @@ -1,7 +1,7 @@ import React, { useState, useRef, useEffect, useMemo, useCallback } from 'react'; import { createPortal } from 'react-dom'; import { useSelector } from 'react-redux'; -import { PlusOutlined, UserAddOutlined } from '@ant-design/icons'; +import { PlusOutlined, UserAddOutlined } from '@/shared/antd-imports'; import { RootState } from '@/app/store'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; import { ITeamMembersViewModel } from '@/types/teamMembers/teamMembersViewModel.types'; diff --git a/worklenz-frontend/src/components/CustomSearchbar.tsx b/worklenz-frontend/src/components/CustomSearchbar.tsx index cfc18946..a4e5be92 100644 --- a/worklenz-frontend/src/components/CustomSearchbar.tsx +++ b/worklenz-frontend/src/components/CustomSearchbar.tsx @@ -1,4 +1,4 @@ -import { SearchOutlined } from '@ant-design/icons'; +import { SearchOutlined } from '@/shared/antd-imports'; import { Input } from '@/shared/antd-imports'; type CustomSearchbarProps = { diff --git a/worklenz-frontend/src/components/CustomTableTitle.tsx b/worklenz-frontend/src/components/CustomTableTitle.tsx index 729d0e82..635293c5 100644 --- a/worklenz-frontend/src/components/CustomTableTitle.tsx +++ b/worklenz-frontend/src/components/CustomTableTitle.tsx @@ -1,6 +1,6 @@ import { Flex, Tooltip, Typography } from '@/shared/antd-imports'; import { colors } from '../styles/colors'; -import { ExclamationCircleOutlined } from '@ant-design/icons'; +import { ExclamationCircleOutlined } from '@/shared/antd-imports'; // this custom table title used when the typography font weigh 500 needed const CustomTableTitle = ({ title, tooltip }: { title: string; tooltip?: string | null }) => { diff --git a/worklenz-frontend/src/components/LabelsSelector.tsx b/worklenz-frontend/src/components/LabelsSelector.tsx index 350e5aad..0faf6ec3 100644 --- a/worklenz-frontend/src/components/LabelsSelector.tsx +++ b/worklenz-frontend/src/components/LabelsSelector.tsx @@ -1,7 +1,7 @@ import React, { useState, useRef, useEffect, useMemo, useCallback } from 'react'; import { createPortal } from 'react-dom'; import { useSelector } from 'react-redux'; -import { PlusOutlined, TagOutlined } from '@ant-design/icons'; +import { PlusOutlined, TagOutlined } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { RootState } from '@/app/store'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; diff --git a/worklenz-frontend/src/components/PinRouteToNavbarButton.tsx b/worklenz-frontend/src/components/PinRouteToNavbarButton.tsx index 0f59fc6a..4e8f8dc1 100644 --- a/worklenz-frontend/src/components/PinRouteToNavbarButton.tsx +++ b/worklenz-frontend/src/components/PinRouteToNavbarButton.tsx @@ -1,7 +1,7 @@ import React, { useState } from 'react'; import { getJSONFromLocalStorage, saveJSONToLocalStorage } from '../utils/localStorageFunctions'; import { Button, ConfigProvider, Tooltip } from '@/shared/antd-imports'; -import { PushpinFilled, PushpinOutlined } from '@ant-design/icons'; +import { PushpinFilled, PushpinOutlined } from '@/shared/antd-imports'; import { colors } from '../styles/colors'; import { navRoutes, NavRoutesType } from '../features/navbar/navRoutes'; diff --git a/worklenz-frontend/src/components/PreferenceSelector.tsx b/worklenz-frontend/src/components/PreferenceSelector.tsx index 6c8e4e49..bece4825 100644 --- a/worklenz-frontend/src/components/PreferenceSelector.tsx +++ b/worklenz-frontend/src/components/PreferenceSelector.tsx @@ -1,5 +1,5 @@ import { FloatButton, Space, Tooltip } from '@/shared/antd-imports'; -import { FormatPainterOutlined } from '@ant-design/icons'; +import { FormatPainterOutlined } from '@/shared/antd-imports'; // import LanguageSelector from '../features/i18n/language-selector'; // import ThemeSelector from '../features/theme/ThemeSelector'; diff --git a/worklenz-frontend/src/components/account-setup/members-step.tsx b/worklenz-frontend/src/components/account-setup/members-step.tsx index a3ca66b0..d3feedc1 100644 --- a/worklenz-frontend/src/components/account-setup/members-step.tsx +++ b/worklenz-frontend/src/components/account-setup/members-step.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useRef } from 'react'; import { Form, Input, Button, List, Alert, message, InputRef } from '@/shared/antd-imports'; -import { CloseCircleOutlined, MailOutlined, PlusOutlined } from '@ant-design/icons'; +import { CloseCircleOutlined, MailOutlined, PlusOutlined } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { Typography } from '@/shared/antd-imports'; import { setTeamMembers, setTasks } from '@/features/account-setup/account-setup.slice'; diff --git a/worklenz-frontend/src/components/account-setup/tasks-step.tsx b/worklenz-frontend/src/components/account-setup/tasks-step.tsx index fa1b34db..5feb3552 100644 --- a/worklenz-frontend/src/components/account-setup/tasks-step.tsx +++ b/worklenz-frontend/src/components/account-setup/tasks-step.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useRef } from 'react'; import { Form, Input, Button, Typography, List, InputRef } from '@/shared/antd-imports'; -import { PlusOutlined, DeleteOutlined, CloseCircleOutlined } from '@ant-design/icons'; +import { PlusOutlined, DeleteOutlined, CloseCircleOutlined } from '@/shared/antd-imports'; import { useDispatch, useSelector } from 'react-redux'; import { useTranslation } from 'react-i18next'; import { RootState } from '@/app/store'; diff --git a/worklenz-frontend/src/components/add-members-dropdown-v2/add-members-dropdown.tsx b/worklenz-frontend/src/components/add-members-dropdown-v2/add-members-dropdown.tsx index b8924516..bacefba2 100644 --- a/worklenz-frontend/src/components/add-members-dropdown-v2/add-members-dropdown.tsx +++ b/worklenz-frontend/src/components/add-members-dropdown-v2/add-members-dropdown.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import { Avatar, Button, Checkbox, Dropdown, Input, Menu, Typography } from '@/shared/antd-imports'; -import { UserAddOutlined, UsergroupAddOutlined } from '@ant-design/icons'; +import { UserAddOutlined, UsergroupAddOutlined } from '@/shared/antd-imports'; import './add-members-dropdown.css'; import { useAppSelector } from '@/hooks/useAppSelector'; import { AvatarNamesMap } from '@/shared/constants'; diff --git a/worklenz-frontend/src/components/add-members-dropdown/add-members-dropdown.tsx b/worklenz-frontend/src/components/add-members-dropdown/add-members-dropdown.tsx index 38b7004e..816ecc81 100644 --- a/worklenz-frontend/src/components/add-members-dropdown/add-members-dropdown.tsx +++ b/worklenz-frontend/src/components/add-members-dropdown/add-members-dropdown.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import { Avatar, Button, Checkbox, Dropdown, Input, Menu, Typography } from '@/shared/antd-imports'; -import { PlusOutlined, UsergroupAddOutlined } from '@ant-design/icons'; +import { PlusOutlined, UsergroupAddOutlined } from '@/shared/antd-imports'; import './add-members-dropdown.css'; import { AvatarNamesMap } from '../../shared/constants'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/admin-center/billing/billing-tables/invoices-table.tsx b/worklenz-frontend/src/components/admin-center/billing/billing-tables/invoices-table.tsx index 0598cff4..015b3c7d 100644 --- a/worklenz-frontend/src/components/admin-center/billing/billing-tables/invoices-table.tsx +++ b/worklenz-frontend/src/components/admin-center/billing/billing-tables/invoices-table.tsx @@ -2,7 +2,7 @@ import { adminCenterApiService } from '@/api/admin-center/admin-center.api.servi import { IBillingTransaction } from '@/types/admin-center/admin-center.types'; import logger from '@/utils/errorLogger'; import { formatDate } from '@/utils/timeUtils'; -import { ContainerOutlined } from '@ant-design/icons'; +import { ContainerOutlined } from '@/shared/antd-imports'; import { Button, Table, TableProps, Tag, Tooltip } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/admin-center/billing/current-bill.tsx b/worklenz-frontend/src/components/admin-center/billing/current-bill.tsx index e255d00b..891368b5 100644 --- a/worklenz-frontend/src/components/admin-center/billing/current-bill.tsx +++ b/worklenz-frontend/src/components/admin-center/billing/current-bill.tsx @@ -1,7 +1,7 @@ import { Card, Col, Row, Tooltip } from '@/shared/antd-imports'; import React, { useEffect, useMemo, useCallback } from 'react'; import './current-bill.css'; -import { InfoCircleTwoTone } from '@ant-design/icons'; +import { InfoCircleTwoTone } from '@/shared/antd-imports'; import ChargesTable from './billing-tables/charges-table'; import InvoicesTable from './billing-tables/invoices-table'; diff --git a/worklenz-frontend/src/components/admin-center/billing/current-plan-details/current-plan-details.tsx b/worklenz-frontend/src/components/admin-center/billing/current-plan-details/current-plan-details.tsx index ba2e09b0..28ec12ce 100644 --- a/worklenz-frontend/src/components/admin-center/billing/current-plan-details/current-plan-details.tsx +++ b/worklenz-frontend/src/components/admin-center/billing/current-plan-details/current-plan-details.tsx @@ -29,7 +29,7 @@ import { import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useTranslation } from 'react-i18next'; -import { WarningTwoTone, PlusOutlined } from '@ant-design/icons'; +import { WarningTwoTone, PlusOutlined } from '@/shared/antd-imports'; import { calculateTimeGap } from '@/utils/calculate-time-gap'; import { formatDate } from '@/utils/timeUtils'; import UpgradePlansLKR from '../drawers/upgrade-plans-lkr/upgrade-plans-lkr'; diff --git a/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans-lkr/upgrade-plans-lkr.tsx b/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans-lkr/upgrade-plans-lkr.tsx index 91e2406e..892bf833 100644 --- a/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans-lkr/upgrade-plans-lkr.tsx +++ b/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans-lkr/upgrade-plans-lkr.tsx @@ -1,7 +1,7 @@ import { Button, Card, Col, Form, Input, notification, Row, Tag, Typography } from '@/shared/antd-imports'; import React, { useState } from 'react'; import './upgrade-plans-lkr.css'; -import { CheckCircleFilled } from '@ant-design/icons'; +import { CheckCircleFilled } from '@/shared/antd-imports'; import { RootState } from '@/app/store'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx b/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx index bc592d09..dd1a6b07 100644 --- a/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx +++ b/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx @@ -22,7 +22,7 @@ import { import logger from '@/utils/errorLogger'; import { useAppSelector } from '@/hooks/useAppSelector'; import { IPaddlePlans, SUBSCRIPTION_STATUS } from '@/shared/constants'; -import { CheckCircleFilled, InfoCircleOutlined } from '@ant-design/icons'; +import { CheckCircleFilled, InfoCircleOutlined } from '@/shared/antd-imports'; import { useAuthService } from '@/hooks/useAuth'; import { fetchBillingInfo, toggleUpgradeModal } from '@/features/admin-center/admin-center.slice'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/admin-center/overview/organization-name/organization-name.tsx b/worklenz-frontend/src/components/admin-center/overview/organization-name/organization-name.tsx index 41ed592c..d86ea72d 100644 --- a/worklenz-frontend/src/components/admin-center/overview/organization-name/organization-name.tsx +++ b/worklenz-frontend/src/components/admin-center/overview/organization-name/organization-name.tsx @@ -1,9 +1,8 @@ import { adminCenterApiService } from '@/api/admin-center/admin-center.api.service'; import logger from '@/utils/errorLogger'; -import { EnterOutlined, EditOutlined } from '@ant-design/icons'; +import { EnterOutlined, EditOutlined } from '@/shared/antd-imports'; import { Card, Button, Tooltip, Typography } from '@/shared/antd-imports'; import TextArea from 'antd/es/input/TextArea'; -import Paragraph from 'antd/es/typography/Paragraph'; import { TFunction } from 'i18next'; import { useState, useEffect } from 'react'; diff --git a/worklenz-frontend/src/components/admin-center/overview/organization-owner/organization-owner.tsx b/worklenz-frontend/src/components/admin-center/overview/organization-owner/organization-owner.tsx index de73841c..1a28cc42 100644 --- a/worklenz-frontend/src/components/admin-center/overview/organization-owner/organization-owner.tsx +++ b/worklenz-frontend/src/components/admin-center/overview/organization-owner/organization-owner.tsx @@ -1,7 +1,7 @@ import { adminCenterApiService } from '@/api/admin-center/admin-center.api.service'; import { IOrganization } from '@/types/admin-center/admin-center.types'; import logger from '@/utils/errorLogger'; -import { MailOutlined, PhoneOutlined, EditOutlined } from '@ant-design/icons'; +import { MailOutlined, PhoneOutlined, EditOutlined } from '@/shared/antd-imports'; import { Card, Tooltip, Input, Button, Typography, InputRef } from '@/shared/antd-imports'; import { TFunction } from 'i18next'; import { useEffect, useRef, useState } from 'react'; diff --git a/worklenz-frontend/src/components/admin-center/teams/teams-table/teams-table.tsx b/worklenz-frontend/src/components/admin-center/teams/teams-table/teams-table.tsx index d861dd48..1ea75af2 100644 --- a/worklenz-frontend/src/components/admin-center/teams/teams-table/teams-table.tsx +++ b/worklenz-frontend/src/components/admin-center/teams/teams-table/teams-table.tsx @@ -5,7 +5,7 @@ import { toggleSettingDrawer, deleteTeam, fetchTeams } from '@/features/teams/te import { useAppDispatch } from '@/hooks/useAppDispatch'; import { IOrganizationTeam } from '@/types/admin-center/admin-center.types'; import logger from '@/utils/errorLogger'; -import { SettingOutlined, DeleteOutlined } from '@ant-design/icons'; +import { SettingOutlined, DeleteOutlined } from '@/shared/antd-imports'; import { Badge, Button, Card, Popconfirm, Table, TableProps, Tooltip, Typography } from '@/shared/antd-imports'; import { TFunction } from 'i18next'; import { useState } from 'react'; diff --git a/worklenz-frontend/src/components/board/board-assignee-selector/board-assignee-selector.tsx b/worklenz-frontend/src/components/board/board-assignee-selector/board-assignee-selector.tsx index 308b2482..27604a44 100644 --- a/worklenz-frontend/src/components/board/board-assignee-selector/board-assignee-selector.tsx +++ b/worklenz-frontend/src/components/board/board-assignee-selector/board-assignee-selector.tsx @@ -15,7 +15,7 @@ import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { toggleProjectMemberDrawer } from '../../../features/projects/singleProject/members/projectMembersSlice'; import { colors } from '../../../styles/colors'; -import { PlusOutlined, UsergroupAddOutlined } from '@ant-design/icons'; +import { PlusOutlined, UsergroupAddOutlined } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import SingleAvatar from '@/components/common/single-avatar/single-avatar'; import { CheckboxChangeEvent } from 'antd/es/checkbox'; diff --git a/worklenz-frontend/src/components/board/changeCategoryDropdown/ChangeCategoryDropdown.tsx b/worklenz-frontend/src/components/board/changeCategoryDropdown/ChangeCategoryDropdown.tsx index 0be131a3..1b5e59ba 100644 --- a/worklenz-frontend/src/components/board/changeCategoryDropdown/ChangeCategoryDropdown.tsx +++ b/worklenz-frontend/src/components/board/changeCategoryDropdown/ChangeCategoryDropdown.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { TaskStatusType } from '../../../types/task.types'; import { colors } from '../../../styles/colors'; import { useAppDispatch } from '@/hooks/useAppDispatch'; -import { RetweetOutlined, RightOutlined } from '@ant-design/icons'; +import { RetweetOutlined, RightOutlined } from '@/shared/antd-imports'; import './ChangeCategoryDropdown.css'; import { updateStatusCategory } from '../../../features/projects/status/StatusSlice'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/board/common-members-section/common-members-section.tsx b/worklenz-frontend/src/components/board/common-members-section/common-members-section.tsx index a34fd64c..c4c0411c 100644 --- a/worklenz-frontend/src/components/board/common-members-section/common-members-section.tsx +++ b/worklenz-frontend/src/components/board/common-members-section/common-members-section.tsx @@ -6,7 +6,7 @@ import { LoadingOutlined, MoreOutlined, PlusOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { setTaskCardDisabled, initializeStatus } from '../../../features/board/create-card.slice'; import { TaskType } from '../../../types/task.types'; import TaskCreateCard from '../taskCreateCard/TaskCreateCard'; diff --git a/worklenz-frontend/src/components/board/common-phase-section/common-phase-section.tsx b/worklenz-frontend/src/components/board/common-phase-section/common-phase-section.tsx index 7d241f70..3e1b0333 100644 --- a/worklenz-frontend/src/components/board/common-phase-section/common-phase-section.tsx +++ b/worklenz-frontend/src/components/board/common-phase-section/common-phase-section.tsx @@ -6,7 +6,7 @@ import { LoadingOutlined, MoreOutlined, PlusOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { setTaskCardDisabled, initializeStatus } from '../../../features/board/create-card.slice'; import { TaskType } from '../../../types/task.types'; import TaskCreateCard from '../taskCreateCard/TaskCreateCard'; diff --git a/worklenz-frontend/src/components/board/common-priority-section/common-priority-section.tsx b/worklenz-frontend/src/components/board/common-priority-section/common-priority-section.tsx index ce1661c6..f2c04e51 100644 --- a/worklenz-frontend/src/components/board/common-priority-section/common-priority-section.tsx +++ b/worklenz-frontend/src/components/board/common-priority-section/common-priority-section.tsx @@ -6,7 +6,7 @@ import { LoadingOutlined, MoreOutlined, PlusOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { setTaskCardDisabled, initializeStatus } from '../../../features/board/create-card.slice'; import { TaskType } from '../../../types/task.types'; import TaskCreateCard from '../taskCreateCard/TaskCreateCard'; diff --git a/worklenz-frontend/src/components/board/commonStatusSection/CommonStatusSection.tsx b/worklenz-frontend/src/components/board/commonStatusSection/CommonStatusSection.tsx index a51ba511..af36a9c5 100644 --- a/worklenz-frontend/src/components/board/commonStatusSection/CommonStatusSection.tsx +++ b/worklenz-frontend/src/components/board/commonStatusSection/CommonStatusSection.tsx @@ -6,7 +6,7 @@ import { LoadingOutlined, MoreOutlined, PlusOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { setTaskCardDisabled, initializeStatus } from '../../../features/board/create-card.slice'; import { TaskType } from '../../../types/task.types'; import TaskCreateCard from '../taskCreateCard/TaskCreateCard'; diff --git a/worklenz-frontend/src/components/board/custom-due-date-picker.tsx b/worklenz-frontend/src/components/board/custom-due-date-picker.tsx index 9ca32744..ff68110e 100644 --- a/worklenz-frontend/src/components/board/custom-due-date-picker.tsx +++ b/worklenz-frontend/src/components/board/custom-due-date-picker.tsx @@ -1,6 +1,6 @@ import React, { useState, useRef } from 'react'; import { DatePicker, Button, Flex } from '@/shared/antd-imports'; -import { CalendarOutlined } from '@ant-design/icons'; +import { CalendarOutlined } from '@/shared/antd-imports'; import dayjs, { Dayjs } from 'dayjs'; import { useSocket } from '@/socket/socketContext'; import { SocketEvents } from '@/shared/socket-events'; diff --git a/worklenz-frontend/src/components/board/kanban-group/kanban-group.tsx b/worklenz-frontend/src/components/board/kanban-group/kanban-group.tsx index 0b9b6f9a..1f37a56f 100644 --- a/worklenz-frontend/src/components/board/kanban-group/kanban-group.tsx +++ b/worklenz-frontend/src/components/board/kanban-group/kanban-group.tsx @@ -6,7 +6,7 @@ import { LoadingOutlined, MoreOutlined, PlusOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { useDroppable } from '@dnd-kit/core'; import { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable'; diff --git a/worklenz-frontend/src/components/board/taskCard/TaskCard.tsx b/worklenz-frontend/src/components/board/taskCard/TaskCard.tsx index 6c8475ba..7a21184c 100644 --- a/worklenz-frontend/src/components/board/taskCard/TaskCard.tsx +++ b/worklenz-frontend/src/components/board/taskCard/TaskCard.tsx @@ -20,7 +20,7 @@ import { ForkOutlined, CaretRightFilled, CaretDownFilled, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import './TaskCard.css'; import dayjs, { Dayjs } from 'dayjs'; import AddMembersDropdown from '../../add-members-dropdown/add-members-dropdown'; diff --git a/worklenz-frontend/src/components/board/taskCard/priority-section/priority-section.tsx b/worklenz-frontend/src/components/board/taskCard/priority-section/priority-section.tsx index 754279a7..6134536c 100644 --- a/worklenz-frontend/src/components/board/taskCard/priority-section/priority-section.tsx +++ b/worklenz-frontend/src/components/board/taskCard/priority-section/priority-section.tsx @@ -4,7 +4,7 @@ import { useAppSelector } from '@/hooks/useAppSelector'; import { useState, useEffect, useMemo } from 'react'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; import { ITaskPriority } from '@/types/tasks/taskPriority.types'; -import { DoubleLeftOutlined, MinusOutlined, PauseOutlined } from '@ant-design/icons'; +import { DoubleLeftOutlined, MinusOutlined, PauseOutlined } from '@/shared/antd-imports'; type PrioritySectionProps = { task: IProjectTask; diff --git a/worklenz-frontend/src/components/common/people-dropdown/PeopleDropdown.tsx b/worklenz-frontend/src/components/common/people-dropdown/PeopleDropdown.tsx index c2f7ac78..dfbc862c 100644 --- a/worklenz-frontend/src/components/common/people-dropdown/PeopleDropdown.tsx +++ b/worklenz-frontend/src/components/common/people-dropdown/PeopleDropdown.tsx @@ -1,6 +1,6 @@ import React, { useState, useRef, useEffect, useMemo, useCallback } from 'react'; import { createPortal } from 'react-dom'; -import { PlusOutlined, UserAddOutlined } from '@ant-design/icons'; +import { PlusOutlined, UserAddOutlined } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { toggleProjectMemberDrawer } from '@/features/projects/singleProject/members/projectMembersSlice'; diff --git a/worklenz-frontend/src/components/common/project-status-icon/project-status-icon.tsx b/worklenz-frontend/src/components/common/project-status-icon/project-status-icon.tsx index 09974db2..919ce401 100644 --- a/worklenz-frontend/src/components/common/project-status-icon/project-status-icon.tsx +++ b/worklenz-frontend/src/components/common/project-status-icon/project-status-icon.tsx @@ -4,7 +4,7 @@ import Icon, { ClockCircleOutlined, CloseCircleOutlined, StopOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; const iconMap = { 'clock-circle': ClockCircleOutlined, diff --git a/worklenz-frontend/src/components/common/template-drawer/template-drawer.tsx b/worklenz-frontend/src/components/common/template-drawer/template-drawer.tsx index e6afa440..2250b869 100644 --- a/worklenz-frontend/src/components/common/template-drawer/template-drawer.tsx +++ b/worklenz-frontend/src/components/common/template-drawer/template-drawer.tsx @@ -22,7 +22,7 @@ import { IWorklenzTemplate, } from '@/types/project-templates/project-templates.types'; import './template-drawer.css'; -import { SearchOutlined } from '@ant-design/icons'; +import { SearchOutlined } from '@/shared/antd-imports'; import logger from '@/utils/errorLogger'; const { Title, Text } = Typography; diff --git a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateSection.tsx b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateSection.tsx index 530ee0c6..7aec4fe7 100644 --- a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateSection.tsx +++ b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanCreateSection.tsx @@ -1,9 +1,9 @@ import React, { useState, useRef, useEffect, useMemo } from 'react'; import { Button, Flex } from '@/shared/antd-imports'; -import { PlusOutlined } from '@ant-design/icons'; +import { PlusOutlined } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { nanoid } from '@reduxjs/toolkit'; -import { DownOutlined } from '@ant-design/icons'; +import { DownOutlined } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { themeWiseColor } from '@/utils/themeWiseColor'; diff --git a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanTaskCard.tsx b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanTaskCard.tsx index 0fa3f73a..82f79c55 100644 --- a/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanTaskCard.tsx +++ b/worklenz-frontend/src/components/enhanced-kanban/EnhancedKanbanTaskCard.tsx @@ -15,10 +15,10 @@ import PrioritySection from '../board/taskCard/priority-section/priority-section import Typography from 'antd/es/typography'; import CustomDueDatePicker from '../board/custom-due-date-picker'; import { themeWiseColor } from '@/utils/themeWiseColor'; -import { ForkOutlined } from '@ant-design/icons'; +import { ForkOutlined } from '@/shared/antd-imports'; import { Dayjs } from 'dayjs'; import dayjs from 'dayjs'; -import { CaretDownFilled, CaretRightFilled } from '@ant-design/icons'; +import { CaretDownFilled, CaretRightFilled } from '@/shared/antd-imports'; import { fetchBoardSubTasks, toggleTaskExpansion, @@ -26,7 +26,7 @@ import { import { Divider } from '@/shared/antd-imports'; import { List } from '@/shared/antd-imports'; import { Skeleton } from '@/shared/antd-imports'; -import { PlusOutlined } from '@ant-design/icons'; +import { PlusOutlined } from '@/shared/antd-imports'; import BoardSubTaskCard from '@/pages/projects/projectView/board/board-section/board-sub-task-card/board-sub-task-card'; import BoardCreateSubtaskCard from '@/pages/projects/projectView/board/board-section/board-sub-task-card/board-create-sub-task-card'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/kanban-board-management-v2/kanbanGroup.tsx b/worklenz-frontend/src/components/kanban-board-management-v2/kanbanGroup.tsx index 3e8ce29d..996653e1 100644 --- a/worklenz-frontend/src/components/kanban-board-management-v2/kanbanGroup.tsx +++ b/worklenz-frontend/src/components/kanban-board-management-v2/kanbanGroup.tsx @@ -2,7 +2,7 @@ import React, { useState } from 'react'; import { useDroppable } from '@dnd-kit/core'; import { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable'; import { Button, Typography } from '@/shared/antd-imports'; -import { PlusOutlined, MenuOutlined } from '@ant-design/icons'; +import { PlusOutlined, MenuOutlined } from '@/shared/antd-imports'; import { ITaskListGroup } from '@/types/tasks/taskList.types'; import { IGroupBy } from '@/features/tasks/tasks.slice'; import KanbanTaskCard from './kanbanTaskCard'; diff --git a/worklenz-frontend/src/components/kanban-board-management-v2/kanbanTaskCard.tsx b/worklenz-frontend/src/components/kanban-board-management-v2/kanbanTaskCard.tsx index 1356e3ae..4e35a990 100644 --- a/worklenz-frontend/src/components/kanban-board-management-v2/kanbanTaskCard.tsx +++ b/worklenz-frontend/src/components/kanban-board-management-v2/kanbanTaskCard.tsx @@ -7,7 +7,7 @@ import { MessageOutlined, PaperClipOutlined, ClockCircleOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; import { IGroupBy } from '@/features/tasks/tasks.slice'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-button.tsx b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-button.tsx index 43a5c621..16ae3b3c 100644 --- a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-button.tsx +++ b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-button.tsx @@ -1,4 +1,4 @@ -import { BellOutlined } from '@ant-design/icons'; +import { BellOutlined } from '@/shared/antd-imports'; import { Badge, Button, Tooltip } from '@/shared/antd-imports'; import { toggleDrawer } from '@features/navbar/notificationSlice'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-item.tsx b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-item.tsx index e6591ab7..39023968 100644 --- a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-item.tsx +++ b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-item.tsx @@ -1,5 +1,5 @@ import { IWorklenzNotification } from '@/types/notifications/notifications.types'; -import { BankOutlined } from '@ant-design/icons'; +import { BankOutlined } from '@/shared/antd-imports'; import { Button, Tag, Typography, theme } from '@/shared/antd-imports'; import DOMPurify from 'dompurify'; import React, { useState } from 'react'; diff --git a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-template.tsx b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-template.tsx index bbbe03e2..f4a6e60a 100644 --- a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-template.tsx +++ b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/notification-template.tsx @@ -1,5 +1,5 @@ import { Button, Typography, Tag } from '@/shared/antd-imports'; -import { BankOutlined } from '@ant-design/icons'; +import { BankOutlined } from '@/shared/antd-imports'; import { IWorklenzNotification } from '@/types/notifications/notifications.types'; import { useNavigate } from 'react-router-dom'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/push-notification-template.tsx b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/push-notification-template.tsx index 7465ff26..b0bcc7bb 100644 --- a/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/push-notification-template.tsx +++ b/worklenz-frontend/src/components/navbar/notifications/notifications-drawer/notification/push-notification-template.tsx @@ -2,7 +2,7 @@ import { notification } from '@/shared/antd-imports'; import { IWorklenzNotification } from '@/types/notifications/notifications.types'; import { teamsApiService } from '@/api/teams/teams.api.service'; import { toQueryString } from '@/utils/toQueryString'; -import { BankOutlined } from '@ant-design/icons'; +import { BankOutlined } from '@/shared/antd-imports'; import './push-notification-template.css'; const PushNotificationTemplate = ({ diff --git a/worklenz-frontend/src/components/project-list/project-group/project-group-list.tsx b/worklenz-frontend/src/components/project-list/project-group/project-group-list.tsx index 208802d8..4c742efe 100644 --- a/worklenz-frontend/src/components/project-list/project-group/project-group-list.tsx +++ b/worklenz-frontend/src/components/project-list/project-group/project-group-list.tsx @@ -14,7 +14,6 @@ import { Divider, } from '@/shared/antd-imports'; import { - ClockCircleOutlined, TeamOutlined, CheckCircleOutlined, ProjectOutlined, @@ -22,7 +21,7 @@ import { SettingOutlined, InboxOutlined, MoreOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { ProjectGroupListProps } from '@/types/project/project.types'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/project-list/project-list-table/project-list-actions/project-list-actions.tsx b/worklenz-frontend/src/components/project-list/project-list-table/project-list-actions/project-list-actions.tsx index fe69580a..4a319a44 100644 --- a/worklenz-frontend/src/components/project-list/project-list-table/project-list-actions/project-list-actions.tsx +++ b/worklenz-frontend/src/components/project-list/project-list-table/project-list-actions/project-list-actions.tsx @@ -13,7 +13,7 @@ import { useAppSelector } from '@/hooks/useAppSelector'; import useIsProjectManager from '@/hooks/useIsProjectManager'; import { IProjectViewModel } from '@/types/project/projectViewModel.types'; import logger from '@/utils/errorLogger'; -import { SettingOutlined, InboxOutlined } from '@ant-design/icons'; +import { SettingOutlined, InboxOutlined } from '@/shared/antd-imports'; import { Tooltip, Button, Popconfirm, Space } from '@/shared/antd-imports'; import { evt_projects_archive, diff --git a/worklenz-frontend/src/components/project-list/project-list-table/project-list-favorite/project-rate-cell.tsx b/worklenz-frontend/src/components/project-list/project-list-table/project-list-favorite/project-rate-cell.tsx index 64723387..90e8e505 100644 --- a/worklenz-frontend/src/components/project-list/project-list-table/project-list-favorite/project-rate-cell.tsx +++ b/worklenz-frontend/src/components/project-list/project-list-table/project-list-favorite/project-rate-cell.tsx @@ -7,7 +7,7 @@ import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { colors } from '@/styles/colors'; import { IProjectViewModel } from '@/types/project/projectViewModel.types'; -import { StarFilled } from '@ant-design/icons'; +import { StarFilled } from '@/shared/antd-imports'; import { Button, ConfigProvider, Tooltip } from '@/shared/antd-imports'; import { TFunction } from 'i18next'; import { useCallback, useMemo } from 'react'; diff --git a/worklenz-frontend/src/components/project-list/project-list-table/project-name/project-name-cell.tsx b/worklenz-frontend/src/components/project-list/project-list-table/project-name/project-name-cell.tsx index 27a66287..fc517782 100644 --- a/worklenz-frontend/src/components/project-list/project-list-table/project-name/project-name-cell.tsx +++ b/worklenz-frontend/src/components/project-list/project-list-table/project-name/project-name-cell.tsx @@ -6,7 +6,7 @@ import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { IProjectViewModel } from '@/types/project/projectViewModel.types'; import { formatDateRange } from '@/utils/project-list-utils'; -import { CalendarOutlined } from '@ant-design/icons'; +import { CalendarOutlined } from '@/shared/antd-imports'; import { Badge, Tooltip } from '@/shared/antd-imports'; import { TFunction } from 'i18next'; import { NavigateFunction } from 'react-router-dom'; diff --git a/worklenz-frontend/src/components/project-task-filters/create-status-button/create-status-button.tsx b/worklenz-frontend/src/components/project-task-filters/create-status-button/create-status-button.tsx index 64ac806b..29aefae5 100644 --- a/worklenz-frontend/src/components/project-task-filters/create-status-button/create-status-button.tsx +++ b/worklenz-frontend/src/components/project-task-filters/create-status-button/create-status-button.tsx @@ -1,4 +1,4 @@ -import { SettingOutlined } from '@ant-design/icons'; +import { SettingOutlined } from '@/shared/antd-imports'; import Tooltip from 'antd/es/tooltip'; import Button from 'antd/es/button'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/components/project-task-filters/delete-status-drawer/delete-status-drawer.tsx b/worklenz-frontend/src/components/project-task-filters/delete-status-drawer/delete-status-drawer.tsx index bc28501b..3b6b7fd0 100644 --- a/worklenz-frontend/src/components/project-task-filters/delete-status-drawer/delete-status-drawer.tsx +++ b/worklenz-frontend/src/components/project-task-filters/delete-status-drawer/delete-status-drawer.tsx @@ -10,7 +10,7 @@ import { fetchTaskGroups } from '@/features/tasks/tasks.slice'; import { deleteStatusToggleDrawer } from '@/features/projects/status/DeleteStatusSlice'; import { Drawer, Alert, Card, Select, Button, Typography, Badge } from '@/shared/antd-imports'; -import { DownOutlined } from '@ant-design/icons'; +import { DownOutlined } from '@/shared/antd-imports'; import { useSelector } from 'react-redux'; import { deleteSection, diff --git a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/column-configuration-modal.tsx b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/column-configuration-modal.tsx index 147c1277..ca56a761 100644 --- a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/column-configuration-modal.tsx +++ b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/column-configuration-modal.tsx @@ -1,6 +1,6 @@ import React, { useState, useEffect } from 'react'; import { Modal, Checkbox, Button, Flex, Typography, Space, Divider, message } from '@/shared/antd-imports'; -import { SettingOutlined, UpOutlined, DownOutlined } from '@ant-design/icons'; +import { SettingOutlined, UpOutlined, DownOutlined } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; // Configuration interface for column visibility diff --git a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/group-by-filter-dropdown.tsx b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/group-by-filter-dropdown.tsx index 7d290026..4969a406 100644 --- a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/group-by-filter-dropdown.tsx +++ b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/group-by-filter-dropdown.tsx @@ -1,6 +1,6 @@ import { useEffect, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { ConfigProvider, Flex, Dropdown, Button } from 'antd/es'; import { useSearchParams } from 'react-router-dom'; diff --git a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/labels-filter-dropdown.tsx b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/labels-filter-dropdown.tsx index dc63e9be..c4ae5b44 100644 --- a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/labels-filter-dropdown.tsx +++ b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/labels-filter-dropdown.tsx @@ -1,4 +1,4 @@ -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import Badge from 'antd/es/badge'; import Button from 'antd/es/button'; import Card from 'antd/es/card'; diff --git a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/members-filter-dropdown.tsx b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/members-filter-dropdown.tsx index 755cbdf3..051f4522 100644 --- a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/members-filter-dropdown.tsx +++ b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/members-filter-dropdown.tsx @@ -1,6 +1,6 @@ import { useMemo, useRef, useState, useCallback, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { Badge, Button, diff --git a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/priority-filter-dropdown.tsx b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/priority-filter-dropdown.tsx index 79858de2..d2af5eb3 100644 --- a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/priority-filter-dropdown.tsx +++ b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/priority-filter-dropdown.tsx @@ -1,4 +1,4 @@ -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { useMemo, useEffect, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/search-dropdown.tsx b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/search-dropdown.tsx index e8743f39..bc072207 100644 --- a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/search-dropdown.tsx +++ b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/search-dropdown.tsx @@ -13,7 +13,7 @@ import Space from 'antd/es/space'; import Dropdown from 'antd/es/dropdown'; import { setSearch } from '@/features/tasks/tasks.slice'; -import { SearchOutlined } from '@ant-design/icons'; +import { SearchOutlined } from '@/shared/antd-imports'; import { setBoardSearch } from '@/features/board/board-slice'; diff --git a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/show-fields-filter-dropdown.tsx b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/show-fields-filter-dropdown.tsx index 56d1b7d5..8b76a129 100644 --- a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/show-fields-filter-dropdown.tsx +++ b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/show-fields-filter-dropdown.tsx @@ -1,4 +1,4 @@ -import { MoreOutlined, SettingOutlined } from '@ant-design/icons'; +import { MoreOutlined, SettingOutlined } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import Button from 'antd/es/button'; import Checkbox from 'antd/es/checkbox'; diff --git a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/sort-filter-dropdown.tsx b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/sort-filter-dropdown.tsx index a74f15b5..c86d2ff8 100644 --- a/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/sort-filter-dropdown.tsx +++ b/worklenz-frontend/src/components/project-task-filters/filter-dropdowns/sort-filter-dropdown.tsx @@ -1,4 +1,4 @@ -import { CaretDownFilled, SortAscendingOutlined, SortDescendingOutlined } from '@ant-design/icons'; +import { CaretDownFilled, SortAscendingOutlined, SortDescendingOutlined } from '@/shared/antd-imports'; import Badge from 'antd/es/badge'; import Button from 'antd/es/button'; diff --git a/worklenz-frontend/src/components/projects/project-create-button/project-create-button.tsx b/worklenz-frontend/src/components/projects/project-create-button/project-create-button.tsx index bdde03c9..2cb2729b 100644 --- a/worklenz-frontend/src/components/projects/project-create-button/project-create-button.tsx +++ b/worklenz-frontend/src/components/projects/project-create-button/project-create-button.tsx @@ -1,7 +1,7 @@ import { Button, Drawer, Dropdown } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import { useAppDispatch } from '@/hooks/useAppDispatch'; -import { DownOutlined, EditOutlined, ImportOutlined } from '@ant-design/icons'; +import { DownOutlined, EditOutlined, ImportOutlined } from '@/shared/antd-imports'; import TemplateDrawer from '@/components/common/template-drawer/template-drawer'; import { useTranslation } from 'react-i18next'; import { useLocation, useNavigate } from 'react-router-dom'; diff --git a/worklenz-frontend/src/components/projects/project-drawer/project-category-section/project-category-section.tsx b/worklenz-frontend/src/components/projects/project-drawer/project-category-section/project-category-section.tsx index ccf1a647..a388fdca 100644 --- a/worklenz-frontend/src/components/projects/project-drawer/project-category-section/project-category-section.tsx +++ b/worklenz-frontend/src/components/projects/project-drawer/project-category-section/project-category-section.tsx @@ -11,7 +11,7 @@ import { Select, Typography, } from '@/shared/antd-imports'; -import { PlusOutlined } from '@ant-design/icons'; +import { PlusOutlined } from '@/shared/antd-imports'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { diff --git a/worklenz-frontend/src/components/projects/project-drawer/project-client-section/project-client-section.tsx b/worklenz-frontend/src/components/projects/project-drawer/project-client-section/project-client-section.tsx index 67f8daa9..d8e2a4b8 100644 --- a/worklenz-frontend/src/components/projects/project-drawer/project-client-section/project-client-section.tsx +++ b/worklenz-frontend/src/components/projects/project-drawer/project-client-section/project-client-section.tsx @@ -2,7 +2,7 @@ import { createClient, fetchClients } from '@/features/settings/client/clientSli import { useAppDispatch } from '@/hooks/useAppDispatch'; import { IClientsViewModel } from '@/types/client.types'; import { IProjectViewModel } from '@/types/project/projectViewModel.types'; -import { QuestionCircleOutlined } from '@ant-design/icons'; +import { QuestionCircleOutlined } from '@/shared/antd-imports'; import { AutoComplete, Flex, Form, FormInstance, Spin, Tooltip, Typography } from '@/shared/antd-imports'; import { TFunction } from 'i18next'; import { useState } from 'react'; diff --git a/worklenz-frontend/src/components/projects/project-manager-dropdown/project-manager-dropdown.tsx b/worklenz-frontend/src/components/projects/project-manager-dropdown/project-manager-dropdown.tsx index 8c2ca57b..f8ac27f3 100644 --- a/worklenz-frontend/src/components/projects/project-manager-dropdown/project-manager-dropdown.tsx +++ b/worklenz-frontend/src/components/projects/project-manager-dropdown/project-manager-dropdown.tsx @@ -3,7 +3,7 @@ import { getTeamMembers } from '@/features/team-members/team-members.slice'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { ITeamMemberViewModel } from '@/types/teamMembers/teamMembersGetResponse.types'; -import { CloseCircleFilled, PlusCircleOutlined } from '@ant-design/icons'; +import { CloseCircleFilled, PlusCircleOutlined } from '@/shared/antd-imports'; import { Button, Dropdown, Flex, Input, InputRef, theme, Typography } from '@/shared/antd-imports'; import React, { useEffect, useMemo, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/components/projects/project-member-invite-drawer/project-member-invite-drawer.tsx b/worklenz-frontend/src/components/projects/project-member-invite-drawer/project-member-invite-drawer.tsx index 4d461de4..92f05b50 100644 --- a/worklenz-frontend/src/components/projects/project-member-invite-drawer/project-member-invite-drawer.tsx +++ b/worklenz-frontend/src/components/projects/project-member-invite-drawer/project-member-invite-drawer.tsx @@ -12,7 +12,7 @@ import { toggleProjectMemberDrawer, } from '@/features/projects/singleProject/members/projectMembersSlice'; import SingleAvatar from '@/components/common/single-avatar/single-avatar'; -import { DeleteOutlined, MailOutlined } from '@ant-design/icons'; +import { DeleteOutlined, MailOutlined } from '@/shared/antd-imports'; import { getTeamMembers } from '@/features/team-members/team-members.slice'; import logger from '@/utils/errorLogger'; import { validateEmail } from '@/utils/validateEmail'; diff --git a/worklenz-frontend/src/components/projects/project-stats-card.tsx b/worklenz-frontend/src/components/projects/project-stats-card.tsx index 45226ed7..68dd46d1 100644 --- a/worklenz-frontend/src/components/projects/project-stats-card.tsx +++ b/worklenz-frontend/src/components/projects/project-stats-card.tsx @@ -1,6 +1,6 @@ import { ReactNode } from 'react'; import { Card, Flex, Skeleton, Tooltip, Typography } from '@/shared/antd-imports'; -import { ExclamationCircleOutlined } from '@ant-design/icons'; +import { ExclamationCircleOutlined } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; type InsightCardProps = { diff --git a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-team-info-drawer.tsx b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-team-info-drawer.tsx index c3eabdca..a0e8301f 100644 --- a/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-team-info-drawer.tsx +++ b/worklenz-frontend/src/components/reporting/drawers/overview-team-info/overview-team-info-drawer.tsx @@ -1,8 +1,7 @@ import { Drawer, Typography, Flex, Button, Dropdown } from '@/shared/antd-imports'; -import React, { useState } from 'react'; import { useAppSelector } from '../../../../hooks/useAppSelector'; import { useAppDispatch } from '../../../../hooks/useAppDispatch'; -import { BankOutlined, DownOutlined } from '@ant-design/icons'; +import { BankOutlined } from '@/shared/antd-imports'; import { colors } from '../../../../styles/colors'; import { useTranslation } from 'react-i18next'; @@ -28,7 +27,7 @@ const OverviewTeamInfoDrawer = ({ team }: OverviewTeamInfoDrawerProps) => { return ( { diff --git a/worklenz-frontend/src/features/projects/singleProject/phase/PhaseDrawer.tsx b/worklenz-frontend/src/features/projects/singleProject/phase/PhaseDrawer.tsx index 49de1ac3..af4e2488 100644 --- a/worklenz-frontend/src/features/projects/singleProject/phase/PhaseDrawer.tsx +++ b/worklenz-frontend/src/features/projects/singleProject/phase/PhaseDrawer.tsx @@ -1,4 +1,4 @@ -import { Button, Drawer, Flex, Input, Skeleton, Spin, Typography } from '@/shared/antd-imports'; +import { Button, Drawer, Flex, Input, Spin, Typography } from '@/shared/antd-imports'; import { useState } from 'react'; import { useAppSelector } from '../../../../hooks/useAppSelector'; import { useAppDispatch } from '../../../../hooks/useAppDispatch'; @@ -11,7 +11,7 @@ import { updateProjectPhaseLabel, } from './phases.slice'; import { Divider } from 'antd/lib'; -import { PlusOutlined } from '@ant-design/icons'; +import { PlusOutlined } from '@/shared/antd-imports'; import { useParams } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import PhaseOptionItem from './PhaseOptionItem'; diff --git a/worklenz-frontend/src/features/projects/singleProject/phase/PhaseOptionItem.tsx b/worklenz-frontend/src/features/projects/singleProject/phase/PhaseOptionItem.tsx index e27e8e1f..61d27ad4 100644 --- a/worklenz-frontend/src/features/projects/singleProject/phase/PhaseOptionItem.tsx +++ b/worklenz-frontend/src/features/projects/singleProject/phase/PhaseOptionItem.tsx @@ -1,5 +1,5 @@ import { Button, ColorPicker, ConfigProvider, Flex, Input } from '@/shared/antd-imports'; -import { CloseCircleOutlined, HolderOutlined } from '@ant-design/icons'; +import { CloseCircleOutlined, HolderOutlined } from '@/shared/antd-imports'; import { nanoid } from '@reduxjs/toolkit'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { diff --git a/worklenz-frontend/src/features/projects/update-project/update-project-drawer.tsx b/worklenz-frontend/src/features/projects/update-project/update-project-drawer.tsx index d0028a95..46e12815 100644 --- a/worklenz-frontend/src/features/projects/update-project/update-project-drawer.tsx +++ b/worklenz-frontend/src/features/projects/update-project/update-project-drawer.tsx @@ -18,7 +18,7 @@ import { projectColors, statusData, } from '../../../lib/project/project-constants'; -import { PlusCircleOutlined, PlusOutlined, QuestionCircleOutlined } from '@ant-design/icons'; +import { PlusCircleOutlined, PlusOutlined, QuestionCircleOutlined } from '@/shared/antd-imports'; import { colors } from '../../../styles/colors'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/members-reports-drawer.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/members-reports-drawer.tsx index fca70984..5ebef482 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/members-reports-drawer.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/members-reports-drawer.tsx @@ -2,7 +2,7 @@ import { Drawer, Typography, Flex, Button, Space, Dropdown } from '@/shared/antd import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { toggleMembersReportsDrawer } from '../membersReportsSlice'; -import { DownOutlined } from '@ant-design/icons'; +import { DownOutlined } from '@/shared/antd-imports'; import MembersReportsDrawerTabs from './members-reports-drawer-tabs'; import { useTranslation } from 'react-i18next'; import MembersOverviewTasksStatsDrawer from './overviewTab/members-overview-tasks-stats-drawer/members-overview-tasks-stats-drawer'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-tasks-stats-drawer/members-overview-tasks-stats-table.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-tasks-stats-drawer/members-overview-tasks-stats-table.tsx index b740d8aa..104f9265 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-tasks-stats-drawer/members-overview-tasks-stats-table.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-overview-tasks-stats-drawer/members-overview-tasks-stats-table.tsx @@ -3,7 +3,7 @@ import CustomTableTitle from '@components/CustomTableTitle'; import { colors } from '@/styles/colors'; import dayjs from 'dayjs'; import { useAppDispatch } from '@/hooks/useAppDispatch'; -import { DoubleRightOutlined } from '@ant-design/icons'; +import { DoubleRightOutlined } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { setShowTaskDrawer } from '@/features/task-drawer/task-drawer.slice'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-reports-stat-card.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-reports-stat-card.tsx index 34737c4d..4905972a 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-reports-stat-card.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/overviewTab/members-reports-stat-card.tsx @@ -2,7 +2,7 @@ import { ClockCircleOutlined, ExclamationCircleOutlined, FileExcelOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { Button, Card, Flex } from '@/shared/antd-imports'; import React, { ReactNode } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/MembersReportsTasksTable.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/MembersReportsTasksTable.tsx index cfd9928f..9c8cdcfe 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/MembersReportsTasksTable.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/taskTab/MembersReportsTasksTable.tsx @@ -1,7 +1,7 @@ import { Badge, Flex, Table, TableColumnsType, Tag, Typography } from '@/shared/antd-imports'; import React from 'react'; import dayjs from 'dayjs'; -import { DoubleRightOutlined } from '@ant-design/icons'; +import { DoubleRightOutlined } from '@/shared/antd-imports'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { setSelectedTaskId, setShowTaskDrawer } from '@/features/task-drawer/task-drawer.slice'; import CustomTableTitle from '@/components/CustomTableTitle'; diff --git a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/billable-filter.tsx b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/billable-filter.tsx index 1612a4fc..37fc11e4 100644 --- a/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/billable-filter.tsx +++ b/worklenz-frontend/src/features/reporting/membersReports/membersReportsDrawer/time-log-tab/billable-filter.tsx @@ -1,4 +1,4 @@ -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/ProjectReportsDrawer.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/ProjectReportsDrawer.tsx index 49a71ecd..2355dd5e 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/ProjectReportsDrawer.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/ProjectReportsDrawer.tsx @@ -3,7 +3,7 @@ import React, { useState } from 'react'; import { useAppSelector } from '../../../../hooks/useAppSelector'; import { useAppDispatch } from '../../../../hooks/useAppDispatch'; import { setSelectedProject, toggleProjectReportsDrawer } from '../project-reports-slice'; -import { BankOutlined, DownOutlined } from '@ant-design/icons'; +import { BankOutlined, DownOutlined } from '@/shared/antd-imports'; import ProjectReportsDrawerTabs from './ProjectReportsDrawerTabs'; import { colors } from '../../../../styles/colors'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskDrawer.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskDrawer.tsx index 4059fe3b..29f40154 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskDrawer.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskDrawer.tsx @@ -1,6 +1,6 @@ import { Drawer, Typography, Flex, Button } from '@/shared/antd-imports'; import React, { useMemo, useState } from 'react'; -import { FileOutlined } from '@ant-design/icons'; +import { FileOutlined } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskTable.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskTable.tsx index 06c5da9f..2badfc44 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskTable.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/membersTab/projectReportsMembersTaskDrawer/ProjectReportsMembersTaskTable.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { createPortal } from 'react-dom'; import { Badge, Flex, Table, TableColumnsType, Tag, Typography } from '@/shared/antd-imports'; import dayjs from 'dayjs'; -import { DoubleRightOutlined } from '@ant-design/icons'; +import { DoubleRightOutlined } from '@/shared/antd-imports'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { setShowTaskDrawer } from '@/features/task-drawer/task-drawer.slice'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsStatCard.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsStatCard.tsx index fb9cf3ad..f8fd2b87 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsStatCard.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/overviewTab/ProjectReportsStatCard.tsx @@ -3,7 +3,7 @@ import { ClockCircleOutlined, ExclamationCircleOutlined, FileExcelOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { Card, Flex, Typography } from '@/shared/antd-imports'; import React, { ReactNode } from 'react'; import { colors } from '../../../../../styles/colors'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/ProjectReportsTaskTable.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/ProjectReportsTaskTable.tsx index 3fc58c66..6c016562 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/ProjectReportsTaskTable.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/ProjectReportsTaskTable.tsx @@ -9,7 +9,7 @@ import { fetchTask, setSelectedTaskId, } from '@/features/task-drawer/task-drawer.slice'; -import { DoubleRightOutlined } from '@ant-design/icons'; +import { DoubleRightOutlined } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { fetchPriorities } from '@/features/taskAttributes/taskPrioritySlice'; import { fetchPhasesByProjectId } from '@/features/projects/singleProject/phase/phases.slice'; diff --git a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/group-by-filter.tsx b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/group-by-filter.tsx index fd6dfda1..d8f8d816 100644 --- a/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/group-by-filter.tsx +++ b/worklenz-frontend/src/features/reporting/projectReports/projectReportsDrawer/tasksTab/group-by-filter.tsx @@ -1,5 +1,5 @@ import { IGroupBy } from '@/features/board/board-slice'; -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { Flex, Select } from '@/shared/antd-imports'; import React from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/features/timeReport/projects/ProjectTimeLogDrawer.tsx b/worklenz-frontend/src/features/timeReport/projects/ProjectTimeLogDrawer.tsx index b6d4a732..512ffaf8 100644 --- a/worklenz-frontend/src/features/timeReport/projects/ProjectTimeLogDrawer.tsx +++ b/worklenz-frontend/src/features/timeReport/projects/ProjectTimeLogDrawer.tsx @@ -3,7 +3,7 @@ import React, { useState, useEffect } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { toggleTimeLogDrawer } from './timeLogSlice'; -import { DownloadOutlined } from '@ant-design/icons'; +import { DownloadOutlined } from '@/shared/antd-imports'; import jsonData from './ProjectTimeLog.json'; import { AvatarNamesMap, durations } from '../../../shared/constants'; import './ProjectTimeLogDrawer.css'; diff --git a/worklenz-frontend/src/lib/settings/settings-constants.ts b/worklenz-frontend/src/lib/settings/settings-constants.ts index 8823bd7e..04305a8e 100644 --- a/worklenz-frontend/src/lib/settings/settings-constants.ts +++ b/worklenz-frontend/src/lib/settings/settings-constants.ts @@ -12,7 +12,7 @@ import { UserOutlined, UserSwitchOutlined, BulbOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import React, { ReactNode, lazy } from 'react'; const ProfileSettings = lazy(() => import('../../pages/settings/profile/profile-settings')); const NotificationsSettings = lazy(() => import('../../pages/settings/notifications/notifications-settings')); diff --git a/worklenz-frontend/src/pages/admin-center/admin-center-constants.ts b/worklenz-frontend/src/pages/admin-center/admin-center-constants.ts index 1cee4eb8..7494ff78 100644 --- a/worklenz-frontend/src/pages/admin-center/admin-center-constants.ts +++ b/worklenz-frontend/src/pages/admin-center/admin-center-constants.ts @@ -4,7 +4,7 @@ import { ProfileOutlined, TeamOutlined, UserOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import React, { ReactNode, lazy } from 'react'; const Overview = lazy(() => import('./overview/overview')); const Users = lazy(() => import('./users/users')); diff --git a/worklenz-frontend/src/pages/admin-center/overview/overview.tsx b/worklenz-frontend/src/pages/admin-center/overview/overview.tsx index 077b23ff..dd46d605 100644 --- a/worklenz-frontend/src/pages/admin-center/overview/overview.tsx +++ b/worklenz-frontend/src/pages/admin-center/overview/overview.tsx @@ -1,4 +1,4 @@ -import { EditOutlined, MailOutlined, PhoneOutlined } from '@ant-design/icons'; +import { EditOutlined, MailOutlined, PhoneOutlined } from '@/shared/antd-imports'; import { PageHeader } from '@ant-design/pro-components'; import { Button, Card, Input, Space, Tooltip, Typography } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; diff --git a/worklenz-frontend/src/pages/admin-center/projects/projects.tsx b/worklenz-frontend/src/pages/admin-center/projects/projects.tsx index e76d04bd..46eaf214 100644 --- a/worklenz-frontend/src/pages/admin-center/projects/projects.tsx +++ b/worklenz-frontend/src/pages/admin-center/projects/projects.tsx @@ -22,7 +22,7 @@ import { Tooltip, Typography, } from '@/shared/antd-imports'; -import { DeleteOutlined, SearchOutlined, SyncOutlined } from '@ant-design/icons'; +import { DeleteOutlined, SearchOutlined, SyncOutlined } from '@/shared/antd-imports'; import { PageHeader } from '@ant-design/pro-components'; import { projectsApiService } from '@/api/projects/projects.api.service'; diff --git a/worklenz-frontend/src/pages/admin-center/sidebar/sidebar.tsx b/worklenz-frontend/src/pages/admin-center/sidebar/sidebar.tsx index 480cb210..8103790c 100644 --- a/worklenz-frontend/src/pages/admin-center/sidebar/sidebar.tsx +++ b/worklenz-frontend/src/pages/admin-center/sidebar/sidebar.tsx @@ -1,4 +1,4 @@ -import { RightOutlined } from '@ant-design/icons'; +import { RightOutlined } from '@/shared/antd-imports'; import { ConfigProvider, Flex, Menu, MenuProps } from '@/shared/antd-imports'; import React from 'react'; import { Link, useLocation } from 'react-router-dom'; diff --git a/worklenz-frontend/src/pages/admin-center/teams/teams.tsx b/worklenz-frontend/src/pages/admin-center/teams/teams.tsx index da2d9eeb..f5043392 100644 --- a/worklenz-frontend/src/pages/admin-center/teams/teams.tsx +++ b/worklenz-frontend/src/pages/admin-center/teams/teams.tsx @@ -1,4 +1,4 @@ -import { SearchOutlined, SyncOutlined } from '@ant-design/icons'; +import { SearchOutlined, SyncOutlined } from '@/shared/antd-imports'; import { PageHeader } from '@ant-design/pro-components'; import { Button, Flex, Input, Tooltip } from '@/shared/antd-imports'; diff --git a/worklenz-frontend/src/pages/admin-center/users/users.tsx b/worklenz-frontend/src/pages/admin-center/users/users.tsx index f6b298e5..d8db586c 100644 --- a/worklenz-frontend/src/pages/admin-center/users/users.tsx +++ b/worklenz-frontend/src/pages/admin-center/users/users.tsx @@ -1,4 +1,4 @@ -import { SearchOutlined, SyncOutlined } from '@ant-design/icons'; +import { SearchOutlined, SyncOutlined } from '@/shared/antd-imports'; import { PageHeader } from '@ant-design/pro-components'; import { Button, Card, Flex, Input, Table, TableProps, Tooltip, Typography } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; diff --git a/worklenz-frontend/src/pages/auth/ForgotPasswordPage.tsx b/worklenz-frontend/src/pages/auth/ForgotPasswordPage.tsx index 94f2863b..da3e3563 100644 --- a/worklenz-frontend/src/pages/auth/ForgotPasswordPage.tsx +++ b/worklenz-frontend/src/pages/auth/ForgotPasswordPage.tsx @@ -2,7 +2,7 @@ import { useCallback, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useMediaQuery } from 'react-responsive'; import { Link, useNavigate } from 'react-router-dom'; -import { UserOutlined } from '@ant-design/icons'; +import { UserOutlined } from '@/shared/antd-imports'; import { Form, Card, Input, Flex, Button, Typography, Result } from 'antd/es'; import PageHeader from '@components/AuthPageHeader'; diff --git a/worklenz-frontend/src/pages/auth/LoginPage.tsx b/worklenz-frontend/src/pages/auth/LoginPage.tsx index df5fa088..1f8b8824 100644 --- a/worklenz-frontend/src/pages/auth/LoginPage.tsx +++ b/worklenz-frontend/src/pages/auth/LoginPage.tsx @@ -2,7 +2,7 @@ import React, { useCallback, useEffect, useState } from 'react'; import { Card, Input, Flex, Checkbox, Button, Typography, Space, Form, message } from 'antd/es'; import { Rule } from 'antd/es/form'; -import { LockOutlined, UserOutlined } from '@ant-design/icons'; +import { LockOutlined, UserOutlined } from '@/shared/antd-imports'; import { Link, useNavigate } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { useMediaQuery } from 'react-responsive'; diff --git a/worklenz-frontend/src/pages/auth/SignupPage.tsx b/worklenz-frontend/src/pages/auth/SignupPage.tsx index 7f096da2..065989d2 100644 --- a/worklenz-frontend/src/pages/auth/SignupPage.tsx +++ b/worklenz-frontend/src/pages/auth/SignupPage.tsx @@ -2,10 +2,10 @@ import { useEffect, useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { useMediaQuery } from 'react-responsive'; -import { LockOutlined, MailOutlined, UserOutlined } from '@ant-design/icons'; +import { LockOutlined, MailOutlined, UserOutlined } from '@/shared/antd-imports'; import { Form, Card, Input, Flex, Button, Typography, Space, message } from 'antd/es'; import { Rule } from 'antd/es/form'; -import { CheckCircleTwoTone, CloseCircleTwoTone } from '@ant-design/icons'; +import { CheckCircleTwoTone, CloseCircleTwoTone } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import googleIcon from '@/assets/images/google-icon.png'; diff --git a/worklenz-frontend/src/pages/auth/VerifyResetEmailPage.tsx b/worklenz-frontend/src/pages/auth/VerifyResetEmailPage.tsx index 00c48b7d..ba46b465 100644 --- a/worklenz-frontend/src/pages/auth/VerifyResetEmailPage.tsx +++ b/worklenz-frontend/src/pages/auth/VerifyResetEmailPage.tsx @@ -1,10 +1,10 @@ import { useCallback, useEffect, useState } from 'react'; import { Link, useNavigate, useParams } from 'react-router-dom'; import { Form, Card, Input, Flex, Button, Typography, Result } from 'antd/es'; -import { LockOutlined } from '@ant-design/icons'; +import { LockOutlined } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { useMediaQuery } from 'react-responsive'; -import { CheckCircleTwoTone, CloseCircleTwoTone } from '@ant-design/icons'; +import { CheckCircleTwoTone, CloseCircleTwoTone } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import PageHeader from '@components/AuthPageHeader'; diff --git a/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/add-favourite-project-button.tsx b/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/add-favourite-project-button.tsx index 410b5b01..ca781ecd 100644 --- a/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/add-favourite-project-button.tsx +++ b/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/add-favourite-project-button.tsx @@ -1,4 +1,4 @@ -import { StarFilled } from '@ant-design/icons'; +import { StarFilled } from '@/shared/antd-imports'; import { Button, ConfigProvider, Tooltip } from '@/shared/antd-imports'; import { useMemo } from 'react'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/recent-and-favourite-project-list.tsx b/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/recent-and-favourite-project-list.tsx index 548b9e99..198808a4 100644 --- a/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/recent-and-favourite-project-list.tsx +++ b/worklenz-frontend/src/pages/home/recent-and-favourite-project-list/recent-and-favourite-project-list.tsx @@ -1,4 +1,4 @@ -import { SyncOutlined } from '@ant-design/icons'; +import { SyncOutlined } from '@/shared/antd-imports'; import { Badge, Button, diff --git a/worklenz-frontend/src/pages/home/task-list/calendar-view.tsx b/worklenz-frontend/src/pages/home/task-list/calendar-view.tsx index 4c70ea4e..32a5fdb2 100644 --- a/worklenz-frontend/src/pages/home/task-list/calendar-view.tsx +++ b/worklenz-frontend/src/pages/home/task-list/calendar-view.tsx @@ -1,6 +1,6 @@ import HomeCalendar from '../../../components/calendars/homeCalendar/HomeCalendar'; import { Tag, Typography } from '@/shared/antd-imports'; -import { ClockCircleOutlined } from '@ant-design/icons'; +import { ClockCircleOutlined } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import AddTaskInlineForm from './add-task-inline-form'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/home/task-list/tasks-list.tsx b/worklenz-frontend/src/pages/home/task-list/tasks-list.tsx index 1f8e10ec..d8ce0bed 100644 --- a/worklenz-frontend/src/pages/home/task-list/tasks-list.tsx +++ b/worklenz-frontend/src/pages/home/task-list/tasks-list.tsx @@ -1,4 +1,4 @@ -import { ExpandAltOutlined, SyncOutlined } from '@ant-design/icons'; +import { ExpandAltOutlined, SyncOutlined } from '@/shared/antd-imports'; import { Badge, Button, diff --git a/worklenz-frontend/src/pages/home/todo-list/todo-done-button.tsx b/worklenz-frontend/src/pages/home/todo-list/todo-done-button.tsx index 01437aba..efa48a4b 100644 --- a/worklenz-frontend/src/pages/home/todo-list/todo-done-button.tsx +++ b/worklenz-frontend/src/pages/home/todo-list/todo-done-button.tsx @@ -1,4 +1,4 @@ -import { CheckCircleOutlined } from '@ant-design/icons'; +import { CheckCircleOutlined } from '@/shared/antd-imports'; import ConfigProvider from 'antd/es/config-provider'; import Button from 'antd/es/button'; import Tooltip from 'antd/es/tooltip'; diff --git a/worklenz-frontend/src/pages/home/todo-list/todo-list.tsx b/worklenz-frontend/src/pages/home/todo-list/todo-list.tsx index f8715808..28054667 100644 --- a/worklenz-frontend/src/pages/home/todo-list/todo-list.tsx +++ b/worklenz-frontend/src/pages/home/todo-list/todo-list.tsx @@ -1,4 +1,4 @@ -import { CheckCircleOutlined, SyncOutlined } from '@ant-design/icons'; +import { CheckCircleOutlined, SyncOutlined } from '@/shared/antd-imports'; import { useRef, useState } from 'react'; import Form from 'antd/es/form'; import Input, { InputRef } from 'antd/es/input'; diff --git a/worklenz-frontend/src/pages/projects/project-list.tsx b/worklenz-frontend/src/pages/projects/project-list.tsx index b11c331d..b82688dc 100644 --- a/worklenz-frontend/src/pages/projects/project-list.tsx +++ b/worklenz-frontend/src/pages/projects/project-list.tsx @@ -23,7 +23,7 @@ import { SyncOutlined, UnorderedListOutlined, AppstoreOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import type { FilterValue, SorterResult } from 'antd/es/table/interface'; import ProjectDrawer from '@/components/projects/project-drawer/project-drawer'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/board/project-view-board.tsx b/worklenz-frontend/src/pages/projects/project-view-1/board/project-view-board.tsx index e0acc2ac..cf0a839f 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/board/project-view-board.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/board/project-view-board.tsx @@ -11,7 +11,7 @@ import { import { useAppSelector } from '@/hooks/useAppSelector'; import TaskListFilters from '../taskList/taskListFilters/TaskListFilters'; import { Button, Skeleton } from '@/shared/antd-imports'; -import { PlusOutlined } from '@ant-design/icons'; +import { PlusOutlined } from '@/shared/antd-imports'; import { useDispatch } from 'react-redux'; import { toggleDrawer } from '@/features/projects/status/StatusSlice'; import KanbanGroup from '@/components/board/kanban-group/kanban-group'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/roadmap/roadmap-table/roadmap-task-cell.tsx b/worklenz-frontend/src/pages/projects/project-view-1/roadmap/roadmap-table/roadmap-task-cell.tsx index c92bf49a..c565414c 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/roadmap/roadmap-table/roadmap-task-cell.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/roadmap/roadmap-table/roadmap-task-cell.tsx @@ -4,7 +4,7 @@ import { DownOutlined, RightOutlined, ExpandAltOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { NewTaskType, toggleTaskExpansion } from '@features/roadmap/roadmap-slice'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { toggleTaskDrawer } from '@features/tasks/taskSlice'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/task-list/table-v2.tsx b/worklenz-frontend/src/pages/projects/project-view-1/task-list/table-v2.tsx index ce722a19..5f90b63b 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/task-list/table-v2.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/task-list/table-v2.tsx @@ -1,6 +1,6 @@ import { useCallback, useMemo, useRef, useState } from 'react'; import { Checkbox, Flex, Tag, Tooltip } from '@/shared/antd-imports'; -import { HolderOutlined } from '@ant-design/icons'; +import { HolderOutlined } from '@/shared/antd-imports'; import { DndContext, DragEndEvent, diff --git a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-columns/task-list-columns.tsx b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-columns/task-list-columns.tsx index 20728257..23c0ed7a 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-columns/task-list-columns.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-columns/task-list-columns.tsx @@ -1,7 +1,7 @@ import { Avatar, Checkbox, DatePicker, Flex, Select, Tag } from '@/shared/antd-imports'; import { createColumnHelper, ColumnDef } from '@tanstack/react-table'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; -import { HolderOutlined, PlusOutlined } from '@ant-design/icons'; +import { HolderOutlined, PlusOutlined } from '@/shared/antd-imports'; import StatusDropdown from '@/components/task-list-common/status-dropdown/status-dropdown'; import Avatars from '@/components/avatars/avatars'; import LabelsSelector from '@/components/task-list-common/labelsSelector/labels-selector'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-header/task-list-header.tsx b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-header/task-list-header.tsx index 358a3a85..db648652 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-header/task-list-header.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-header/task-list-header.tsx @@ -6,7 +6,7 @@ import { EllipsisOutlined, EditOutlined, RetweetOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { ITaskListGroup } from '@/types/tasks/taskList.types'; import { ITaskStatusCategory } from '@/types/status.types'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-table-wrapper/task-list-table-wrapper.tsx b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-table-wrapper/task-list-table-wrapper.tsx index edc63353..e499a99b 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-table-wrapper/task-list-table-wrapper.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/task-list/task-list-table-wrapper/task-list-table-wrapper.tsx @@ -1,7 +1,7 @@ import { Badge, Button, Collapse, ConfigProvider, Dropdown, Flex, Input, Typography } from '@/shared/antd-imports'; import { useState } from 'react'; import { TaskType } from '@/types/task.types'; -import { EditOutlined, EllipsisOutlined, RetweetOutlined, RightOutlined } from '@ant-design/icons'; +import { EditOutlined, EllipsisOutlined, RetweetOutlined, RightOutlined } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import './task-list-table-wrapper.css'; import TaskListTable from '../table-v2'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/GroupByFilterDropdown.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/GroupByFilterDropdown.tsx index ebd5ddd8..89dcce16 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/GroupByFilterDropdown.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/GroupByFilterDropdown.tsx @@ -1,4 +1,4 @@ -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { ConfigProvider, Flex, Select } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/LabelsFilterDropdown.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/LabelsFilterDropdown.tsx index 53f83fdb..fc398f04 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/LabelsFilterDropdown.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/LabelsFilterDropdown.tsx @@ -1,4 +1,4 @@ -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { Badge, Button, diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/MembersFilterDropdown.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/MembersFilterDropdown.tsx index 0af08d0e..dbdcf027 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/MembersFilterDropdown.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/MembersFilterDropdown.tsx @@ -1,5 +1,5 @@ /* eslint-disable react-hooks/exhaustive-deps */ -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { Badge, Button, diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/PriorityFilterDropdown.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/PriorityFilterDropdown.tsx index 834f0498..a0b0c002 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/PriorityFilterDropdown.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/PriorityFilterDropdown.tsx @@ -1,4 +1,4 @@ -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { Badge, Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import { useState } from 'react'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SearchDropdown.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SearchDropdown.tsx index 3480b4f4..f968ec4a 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SearchDropdown.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SearchDropdown.tsx @@ -1,4 +1,4 @@ -import { SearchOutlined } from '@ant-design/icons'; +import { SearchOutlined } from '@/shared/antd-imports'; import { Button, Card, Dropdown, Flex, Input, InputRef, Space } from '@/shared/antd-imports'; import { useRef } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/ShowFieldsFilterDropdown.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/ShowFieldsFilterDropdown.tsx index 301399d4..0ef98fc7 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/ShowFieldsFilterDropdown.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/ShowFieldsFilterDropdown.tsx @@ -1,4 +1,4 @@ -import { MoreOutlined } from '@ant-design/icons'; +import { MoreOutlined } from '@/shared/antd-imports'; import { Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SortFilterDropdown.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SortFilterDropdown.tsx index fa3a202b..35612aac 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SortFilterDropdown.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListFilters/SortFilterDropdown.tsx @@ -1,4 +1,4 @@ -import { CaretDownFilled, SortAscendingOutlined, SortDescendingOutlined } from '@ant-design/icons'; +import { CaretDownFilled, SortAscendingOutlined, SortDescendingOutlined } from '@/shared/antd-imports'; import { Badge, Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { colors } from '../../../../../styles/colors'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTable.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTable.tsx index 257252b1..ea336c4f 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTable.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTable.tsx @@ -12,7 +12,7 @@ import { useAppDispatch } from '@/hooks/useAppDispatch'; import { deselectAll } from '@features/projects/bulkActions/bulkActionSlice'; import { useTranslation } from 'react-i18next'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; -import { HolderOutlined } from '@ant-design/icons'; +import { HolderOutlined } from '@/shared/antd-imports'; const TaskListTable = ({ taskList, diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTableWrapper.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTableWrapper.tsx index ad8d6e6f..ecdf01a2 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTableWrapper.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/TaskListTableWrapper.tsx @@ -1,6 +1,6 @@ import { Badge, Button, Collapse, ConfigProvider, Dropdown, Flex, Input, Typography } from '@/shared/antd-imports'; import { useState } from 'react'; -import { EditOutlined, EllipsisOutlined, RetweetOutlined, RightOutlined } from '@ant-design/icons'; +import { EditOutlined, EllipsisOutlined, RetweetOutlined, RightOutlined } from '@/shared/antd-imports'; import { colors } from '../../../../../styles/colors'; import './taskListTableWrapper.css'; import TaskListTable from './TaskListTable'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/contextMenu/TaskContextMenu.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/contextMenu/TaskContextMenu.tsx index 88054503..f87955fb 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/contextMenu/TaskContextMenu.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/contextMenu/TaskContextMenu.tsx @@ -4,7 +4,7 @@ import { InboxOutlined, RetweetOutlined, UserAddOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { Badge, Dropdown, Flex, Typography } from '@/shared/antd-imports'; import { MenuProps } from 'antd/lib'; import React from 'react'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TaskCell.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TaskCell.tsx index a9dccbfa..b244796f 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TaskCell.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TaskCell.tsx @@ -6,7 +6,7 @@ import { DownOutlined, RightOutlined, ExpandAltOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { setShowTaskDrawer } from '@/features/task-drawer/task-drawer.slice'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TimeTracker.tsx b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TimeTracker.tsx index f4832223..1f19d6c9 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TimeTracker.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/taskList/taskListTable/taskListTableCells/TimeTracker.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Divider, Empty, Flex, Popover, Typography } from '@/shared/antd-imports'; -import { PlayCircleFilled } from '@ant-design/icons'; +import { PlayCircleFilled } from '@/shared/antd-imports'; import { colors } from '../../../../../../styles/colors'; import CustomAvatar from '../../../../../../components/CustomAvatar'; import { mockTimeLogs } from './mockTimeLogs'; diff --git a/worklenz-frontend/src/pages/projects/project-view-1/updates/project-view-updates.tsx b/worklenz-frontend/src/pages/projects/project-view-1/updates/project-view-updates.tsx index b46a735d..2a4d0994 100644 --- a/worklenz-frontend/src/pages/projects/project-view-1/updates/project-view-updates.tsx +++ b/worklenz-frontend/src/pages/projects/project-view-1/updates/project-view-updates.tsx @@ -29,7 +29,7 @@ import { calculateTimeDifference } from '@/utils/calculate-time-difference'; import { getUserSession } from '@/utils/session-helper'; import './project-view-updates.css'; import { useAppSelector } from '@/hooks/useAppSelector'; -import { DeleteOutlined } from '@ant-design/icons'; +import { DeleteOutlined } from '@/shared/antd-imports'; const MAX_COMMENT_LENGTH = 2000; diff --git a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-create-section-card.tsx b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-create-section-card.tsx index dbe56678..876b1ea0 100644 --- a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-create-section-card.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-create-section-card.tsx @@ -1,5 +1,5 @@ import { Button, Flex } from '@/shared/antd-imports'; -import { PlusOutlined } from '@ant-design/icons'; +import { PlusOutlined } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { nanoid } from '@reduxjs/toolkit'; diff --git a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card-header.tsx b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card-header.tsx index 3e5483f6..427dfe20 100644 --- a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card-header.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card-header.tsx @@ -18,7 +18,7 @@ import { MoreOutlined, PlusOutlined, RetweetOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { MenuProps } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card.tsx b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card.tsx index 5a037f9e..14b2b36c 100644 --- a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-section-card/board-section-card.tsx @@ -9,7 +9,7 @@ import { CSS } from '@dnd-kit/utilities'; import { useAppSelector } from '@/hooks/useAppSelector'; import { themeWiseColor } from '@/utils/themeWiseColor'; import BoardSectionCardHeader from './board-section-card-header'; -import { PlusOutlined } from '@ant-design/icons'; +import { PlusOutlined } from '@/shared/antd-imports'; import BoardViewTaskCard from '../board-task-card/board-view-task-card'; import BoardViewCreateTaskCard from '../board-task-card/board-view-create-task-card'; import { ITaskListGroup } from '@/types/tasks/taskList.types'; diff --git a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-sub-task-card/board-sub-task-card.tsx b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-sub-task-card/board-sub-task-card.tsx index a0af1cdc..a9ba68d0 100644 --- a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-sub-task-card/board-sub-task-card.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-sub-task-card/board-sub-task-card.tsx @@ -6,7 +6,7 @@ import { DeleteOutlined, ExclamationCircleFilled, InboxOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import CustomAvatarGroup from '@/components/board/custom-avatar-group'; import CustomDueDatePicker from '@/components/board/custom-due-date-picker'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; diff --git a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-task-card/board-view-task-card.tsx b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-task-card/board-view-task-card.tsx index a067c16f..770cfb2f 100644 --- a/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-task-card/board-view-task-card.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/board/board-section/board-task-card/board-view-task-card.tsx @@ -25,7 +25,7 @@ import { CaretDownFilled, ExclamationCircleFilled, PlusOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import dayjs, { Dayjs } from 'dayjs'; import { useTranslation } from 'react-i18next'; import { useSortable } from '@dnd-kit/sortable'; diff --git a/worklenz-frontend/src/pages/projects/projectView/files/project-view-files.tsx b/worklenz-frontend/src/pages/projects/projectView/files/project-view-files.tsx index f4593fa2..0ec8d85b 100644 --- a/worklenz-frontend/src/pages/projects/projectView/files/project-view-files.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/files/project-view-files.tsx @@ -18,7 +18,7 @@ import { DeleteOutlined, ExclamationCircleFilled, ExclamationCircleOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { durationDateFormat } from '@utils/durationDateFormat'; import { DEFAULT_PAGE_SIZE, IconsMap } from '@/shared/constants'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/tables/tasks-by-members.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/tables/tasks-by-members.tsx index d4408bff..49b39a0a 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/tables/tasks-by-members.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-members/tables/tasks-by-members.tsx @@ -3,7 +3,7 @@ import { Flex, Progress } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import { useAppSelector } from '@/hooks/useAppSelector'; import { themeWiseColor } from '@/utils/themeWiseColor'; -import { DownOutlined, ExclamationCircleOutlined, RightOutlined } from '@ant-design/icons'; +import { DownOutlined, ExclamationCircleOutlined, RightOutlined } from '@/shared/antd-imports'; import logger from '@/utils/errorLogger'; import { projectsApiService } from '@/api/projects/projects.api.service'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/insights-tasks.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/insights-tasks.tsx index 1dd2c3d7..7f027d70 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/insights-tasks.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/insights-tasks.tsx @@ -1,5 +1,5 @@ import { Button, Card, Flex, Tooltip, Typography } from '@/shared/antd-imports'; -import { ExclamationCircleOutlined } from '@ant-design/icons'; +import { ExclamationCircleOutlined } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import OverdueTasksTable from './tables/overdue-tasks-table'; import OverLoggedTasksTable from './tables/over-logged-tasks-table'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/over-logged-tasks-table.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/over-logged-tasks-table.tsx index 3cc9c390..eb123902 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/over-logged-tasks-table.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/insights-tasks/tables/over-logged-tasks-table.tsx @@ -2,7 +2,7 @@ import { Avatar, Button, Flex, Table, Typography } from '@/shared/antd-imports'; import { useState, useEffect } from 'react'; import { colors } from '@/styles/colors'; import { TableProps } from 'antd/lib'; -import { PlusOutlined } from '@ant-design/icons'; +import { PlusOutlined } from '@/shared/antd-imports'; import { IInsightTasks } from '@/types/project/projectInsights.types'; import logger from '@/utils/errorLogger'; import { projectInsightsApiService } from '@/api/projects/insights/project-insights.api.service'; diff --git a/worklenz-frontend/src/pages/projects/projectView/insights/project-view-insights.tsx b/worklenz-frontend/src/pages/projects/projectView/insights/project-view-insights.tsx index ad3c5766..45474ef0 100644 --- a/worklenz-frontend/src/pages/projects/projectView/insights/project-view-insights.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/insights/project-view-insights.tsx @@ -1,4 +1,4 @@ -import { DownloadOutlined } from '@ant-design/icons'; +import { DownloadOutlined } from '@/shared/antd-imports'; import { Badge, Button, Checkbox, Flex, Segmented } from '@/shared/antd-imports'; import { useEffect, useRef, useState } from 'react'; import { useParams } from 'react-router-dom'; diff --git a/worklenz-frontend/src/pages/projects/projectView/members/project-view-members.tsx b/worklenz-frontend/src/pages/projects/projectView/members/project-view-members.tsx index 2592aa15..e66ec582 100644 --- a/worklenz-frontend/src/pages/projects/projectView/members/project-view-members.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/members/project-view-members.tsx @@ -14,7 +14,7 @@ import { } from '@/shared/antd-imports'; // Icons -import { DeleteOutlined, ExclamationCircleFilled, SyncOutlined } from '@ant-design/icons'; +import { DeleteOutlined, ExclamationCircleFilled, SyncOutlined } from '@/shared/antd-imports'; // React & Router import { useEffect, useState } from 'react'; diff --git a/worklenz-frontend/src/pages/projects/projectView/project-view-header.tsx b/worklenz-frontend/src/pages/projects/projectView/project-view-header.tsx index ed604d88..050541e4 100644 --- a/worklenz-frontend/src/pages/projects/projectView/project-view-header.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/project-view-header.tsx @@ -65,7 +65,7 @@ import { addTaskCardToTheTop, fetchBoardTaskGroups } from '@/features/board/boar import { fetchPhasesByProjectId } from '@/features/projects/singleProject/phase/phases.slice'; import { fetchEnhancedKanbanGroups } from '@/features/enhanced-kanban/enhanced-kanban.slice'; import { fetchTasksV3 } from '@/features/task-management/task-management.slice'; -import { ShareAltOutlined } from '@ant-design/icons'; +import { ShareAltOutlined } from '@/shared/antd-imports'; import { fetchStatuses } from '@/features/taskAttributes/taskStatusSlice'; const ProjectViewHeader = memo(() => { diff --git a/worklenz-frontend/src/pages/projects/projectView/project-view.tsx b/worklenz-frontend/src/pages/projects/projectView/project-view.tsx index 30bed530..7361fd50 100644 --- a/worklenz-frontend/src/pages/projects/projectView/project-view.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/project-view.tsx @@ -10,7 +10,6 @@ import { Tabs, PushpinFilled, PushpinOutlined, - type TabsProps, } from '@/shared/antd-imports'; import { useAppDispatch } from '@/hooks/useAppDispatch'; @@ -41,7 +40,6 @@ import { SuspenseFallback } from '@/components/suspense-fallback/suspense-fallba import { useTranslation } from 'react-i18next'; import { useTimerInitialization } from '@/hooks/useTimerInitialization'; - // Import critical components synchronously to avoid suspense interruptions import TaskDrawer from '@components/task-drawer/task-drawer'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/components/task-group/task-group.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/components/task-group/task-group.tsx index 87cd04fd..ba1fb4a3 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/components/task-group/task-group.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/components/task-group/task-group.tsx @@ -8,7 +8,7 @@ import Dropdown from 'antd/es/dropdown'; import Input from 'antd/es/input'; import Typography from 'antd/es/typography'; import { MenuProps } from 'antd/es/menu'; -import { EditOutlined, EllipsisOutlined, RetweetOutlined, RightOutlined } from '@ant-design/icons'; +import { EditOutlined, EllipsisOutlined, RetweetOutlined, RightOutlined } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/groupTables/TaskGroupList.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/groupTables/TaskGroupList.tsx index b0abc8f9..e672bd83 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/groupTables/TaskGroupList.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/groupTables/TaskGroupList.tsx @@ -17,7 +17,7 @@ import { DragEndEvent, DragStartEvent, } from '@dnd-kit/core'; -import { EditOutlined, EllipsisOutlined, RetweetOutlined, RightOutlined } from '@ant-design/icons'; +import { EditOutlined, EllipsisOutlined, RetweetOutlined, RightOutlined } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/context-menu/task-context-menu.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/context-menu/task-context-menu.tsx index 7e18428f..f359ecd8 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/context-menu/task-context-menu.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/context-menu/task-context-menu.tsx @@ -5,7 +5,7 @@ import { LoadingOutlined, RetweetOutlined, UserAddOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { Badge, Dropdown, Flex, Typography, Modal } from '@/shared/antd-imports'; import { MenuProps } from 'antd/lib'; import { useState } from 'react'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-label-cell/custom-column-label-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-label-cell/custom-column-label-cell.tsx index ad9c32d0..117ad3d9 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-label-cell/custom-column-label-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-label-cell/custom-column-label-cell.tsx @@ -1,6 +1,6 @@ import { Badge, Card, Dropdown, Empty, Flex, Menu, MenuProps, Typography } from '@/shared/antd-imports'; import React, { useState, useEffect } from 'react'; -import { DownOutlined } from '@ant-design/icons'; +import { DownOutlined } from '@/shared/antd-imports'; // custom css file import './custom-column-label-cell.css'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-selection-cell/custom-column-selection-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-selection-cell/custom-column-selection-cell.tsx index 833fd61b..981cc674 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-selection-cell/custom-column-selection-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-cells/custom-column-selection-cell/custom-column-selection-cell.tsx @@ -1,6 +1,6 @@ import { Badge, Card, Dropdown, Empty, Flex, Menu, MenuProps, Typography } from '@/shared/antd-imports'; import React, { useState, useEffect } from 'react'; -import { DownOutlined } from '@ant-design/icons'; +import { DownOutlined } from '@/shared/antd-imports'; // custom css file import './custom-column-selection-cell.css'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-header/custom-column-header.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-header/custom-column-header.tsx index 1aa9b695..b7401c55 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-header/custom-column-header.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-header/custom-column-header.tsx @@ -1,4 +1,4 @@ -import { SettingOutlined } from '@ant-design/icons'; +import { SettingOutlined } from '@/shared/antd-imports'; import { Button, Flex, Tooltip, Typography } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/add-custom-column-button.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/add-custom-column-button.tsx index fb088dba..6b8301c0 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/add-custom-column-button.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/add-custom-column-button.tsx @@ -1,4 +1,4 @@ -import { PlusOutlined } from '@ant-design/icons'; +import { PlusOutlined } from '@/shared/antd-imports'; import { Button, Tooltip } from '@/shared/antd-imports'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/custom-column-modal.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/custom-column-modal.tsx index 52b8e553..5ebf1ef7 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/custom-column-modal.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/custom-column-modal.tsx @@ -51,7 +51,7 @@ import { } from '@/features/task-management/task-management.slice'; import { useParams } from 'react-router-dom'; import { tasksCustomColumnsService } from '@/api/tasks/tasks-custom-columns.service'; -import { ExclamationCircleFilled } from '@ant-design/icons'; +import { ExclamationCircleFilled } from '@/shared/antd-imports'; const CustomColumnModal = () => { const [mainForm] = Form.useForm(); diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/label-type-column/label-type-column.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/label-type-column/label-type-column.tsx index 736096f1..84f62455 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/label-type-column/label-type-column.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/label-type-column/label-type-column.tsx @@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react'; import { nanoid } from 'nanoid'; import { PhaseColorCodes } from '../../../../../../../../shared/constants'; import { Button, Flex, Input, Select, Tag, Typography } from '@/shared/antd-imports'; -import { CloseCircleOutlined, HolderOutlined } from '@ant-design/icons'; +import { CloseCircleOutlined, HolderOutlined } from '@/shared/antd-imports'; import { useAppDispatch } from '../../../../../../../../hooks/useAppDispatch'; import { useAppSelector } from '../../../../../../../../hooks/useAppSelector'; import { setLabelsList } from '../../../../../../../../features/projects/singleProject/task-list-custom-columns/task-list-custom-columns-slice'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/selection-type-column/selection-type-column.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/selection-type-column/selection-type-column.tsx index 79d0ce6b..eeb165e9 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/selection-type-column/selection-type-column.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/custom-columns/custom-column-modal/selection-type-column/selection-type-column.tsx @@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react'; import { nanoid } from 'nanoid'; import { PhaseColorCodes } from '../../../../../../../../shared/constants'; import { Button, Flex, Input, Select, Tag, Typography } from '@/shared/antd-imports'; -import { CloseCircleOutlined, HolderOutlined } from '@ant-design/icons'; +import { CloseCircleOutlined, HolderOutlined } from '@/shared/antd-imports'; import { useAppDispatch } from '../../../../../../../../hooks/useAppDispatch'; import { useAppSelector } from '../../../../../../../../hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-task-cell/task-list-task-cell.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-task-cell/task-list-task-cell.tsx index 72410be7..61d3eca5 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-task-cell/task-list-task-cell.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-cells/task-list-task-cell/task-list-task-cell.tsx @@ -10,7 +10,7 @@ import { PaperClipOutlined, MinusCircleOutlined, RetweetOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-rows/add-task-list-row.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-rows/add-task-list-row.tsx index a3761009..c5403162 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-rows/add-task-list-row.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-rows/add-task-list-row.tsx @@ -1,7 +1,7 @@ import Input, { InputRef } from 'antd/es/input'; import { useMemo, useRef, useState, useEffect } from 'react'; import { Spin } from '@/shared/antd-imports'; -import { LoadingOutlined } from '@ant-design/icons'; +import { LoadingOutlined } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { colors } from '@/styles/colors'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-wrapper/task-list-table-wrapper.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-wrapper/task-list-table-wrapper.tsx index fb7c9fb1..1c445a09 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-wrapper/task-list-table-wrapper.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table-wrapper/task-list-table-wrapper.tsx @@ -9,7 +9,7 @@ import Dropdown from 'antd/es/dropdown'; import Input from 'antd/es/input'; import Typography from 'antd/es/typography'; import { MenuProps } from 'antd/es/menu'; -import { EditOutlined, EllipsisOutlined, RetweetOutlined, RightOutlined } from '@ant-design/icons'; +import { EditOutlined, EllipsisOutlined, RetweetOutlined, RightOutlined } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import './task-list-table-wrapper.css'; import TaskListTable from '../task-list-table'; diff --git a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table.tsx b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table.tsx index 013dccbd..3a505155 100644 --- a/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table.tsx +++ b/worklenz-frontend/src/pages/projects/projectView/taskList/task-list-table/task-list-table.tsx @@ -11,7 +11,7 @@ import { SettingOutlined, UsergroupAddOutlined, PlusOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { useSortable } from '@dnd-kit/sortable'; import { CSS } from '@dnd-kit/utilities'; diff --git a/worklenz-frontend/src/pages/reporting/members-reports/members-reports.tsx b/worklenz-frontend/src/pages/reporting/members-reports/members-reports.tsx index 8ef5d8fb..192f7dae 100644 --- a/worklenz-frontend/src/pages/reporting/members-reports/members-reports.tsx +++ b/worklenz-frontend/src/pages/reporting/members-reports/members-reports.tsx @@ -1,5 +1,5 @@ import { Button, Card, Checkbox, Dropdown, Flex, Skeleton, Space, Typography } from '@/shared/antd-imports'; -import { DownOutlined } from '@ant-design/icons'; +import { DownOutlined } from '@/shared/antd-imports'; import MembersReportsTable from './members-reports-table/members-reports-table'; import TimeWiseFilter from '@/components/reporting/time-wise-filter'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/pages/reporting/overview-reports/overview-stats.tsx b/worklenz-frontend/src/pages/reporting/overview-reports/overview-stats.tsx index 8fb7f3fc..1e7ac239 100644 --- a/worklenz-frontend/src/pages/reporting/overview-reports/overview-stats.tsx +++ b/worklenz-frontend/src/pages/reporting/overview-reports/overview-stats.tsx @@ -1,7 +1,7 @@ import { Flex, Typography, theme } from '@/shared/antd-imports'; import React, { useEffect, useState, useCallback, useMemo } from 'react'; import OverviewStatCard from './overview-stat-card'; -import { BankOutlined, FileOutlined, UsergroupAddOutlined } from '@ant-design/icons'; +import { BankOutlined, FileOutlined, UsergroupAddOutlined } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import { useTranslation } from 'react-i18next'; import { IRPTOverviewStatistics } from '@/types/reporting/reporting.types'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-categories-filter-dropdown.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-categories-filter-dropdown.tsx index 2a918aa4..b01fda4e 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-categories-filter-dropdown.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-categories-filter-dropdown.tsx @@ -4,7 +4,7 @@ import { setSelectedProjectCategories } from '@/features/reporting/projectReport import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { IProjectCategoryViewModel } from '@/types/project/projectCategory.types'; -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { Badge, Button, Card, Checkbox, Dropdown, Empty, Flex, Input, InputRef, List } from '@/shared/antd-imports'; import React, { useEffect, useMemo, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-health-filter-dropdown.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-health-filter-dropdown.tsx index 74f68631..9f730e38 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-health-filter-dropdown.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-health-filter-dropdown.tsx @@ -6,7 +6,7 @@ import { import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { IProjectHealth } from '@/types/project/projectHealth.types'; -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import React, { useEffect, useState, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-managers-filter-dropdown.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-managers-filter-dropdown.tsx index f875a042..2a7f13c0 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-managers-filter-dropdown.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-managers-filter-dropdown.tsx @@ -3,7 +3,7 @@ import { setSelectedProjectManagers } from '@/features/reporting/projectReports/ import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { IProjectManager } from '@/types/project/projectManager.types'; -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { Button, Card, Checkbox, Dropdown, Empty, Flex, Input, InputRef, List } from '@/shared/antd-imports'; import React, { useEffect, useMemo, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-status-filter-dropdown.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-status-filter-dropdown.tsx index ad51539b..326eb338 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-status-filter-dropdown.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-status-filter-dropdown.tsx @@ -6,7 +6,7 @@ import { import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { IProjectStatus } from '@/types/project/projectStatus.types'; -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import { debounce } from 'lodash'; import React, { useCallback, useEffect, useState } from 'react'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-table-show-fields-dropdown.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-table-show-fields-dropdown.tsx index 73349556..1e1ef542 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-table-show-fields-dropdown.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-filters/project-table-show-fields-dropdown.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { MoreOutlined } from '@ant-design/icons'; +import { MoreOutlined } from '@/shared/antd-imports'; import { Button, Card, Checkbox, Dropdown, List, Space } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/projects-reports-table.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/projects-reports-table.tsx index d55452fc..ccb2ba1d 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/projects-reports-table.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/projects-reports-table.tsx @@ -2,7 +2,7 @@ import { useEffect, useState, useMemo, useCallback, memo } from 'react'; import { Button, ConfigProvider, Flex, PaginationProps, Table, TableColumnsType } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import { createPortal } from 'react-dom'; -import { ExpandAltOutlined } from '@ant-design/icons'; +import { ExpandAltOutlined } from '@/shared/antd-imports'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-category-cell/project-category-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-category-cell/project-category-cell.tsx index 90a6104c..2024829c 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-category-cell/project-category-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-category-cell/project-category-cell.tsx @@ -1,5 +1,5 @@ /* eslint-disable react-hooks/exhaustive-deps */ -import { DownOutlined } from '@ant-design/icons'; +import { DownOutlined } from '@/shared/antd-imports'; import { Badge, Card, Dropdown, Flex, Input, InputRef, Menu, MenuProps, Typography } from '@/shared/antd-imports'; import React, { useEffect, useMemo, useRef, useState } from 'react'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-health-cell/project-health-cell.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-health-cell/project-health-cell.tsx index b09e5f5b..194debf1 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-health-cell/project-health-cell.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports-table/table-cells/project-health-cell/project-health-cell.tsx @@ -1,6 +1,6 @@ import { Badge, Card, Dropdown, Flex, Menu, MenuProps, Typography } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; -import { DownOutlined } from '@ant-design/icons'; +import { DownOutlined } from '@/shared/antd-imports'; import { colors } from '@/styles/colors'; import './project-health-cell.css'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports.tsx b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports.tsx index d92c270e..acc0541b 100644 --- a/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports.tsx +++ b/worklenz-frontend/src/pages/reporting/projects-reports/projects-reports.tsx @@ -1,7 +1,7 @@ import { Button, Card, Checkbox, Dropdown, Flex, Space, Typography } from '@/shared/antd-imports'; import { useMemo, useCallback, memo } from 'react'; import CustomPageHeader from '@/pages/reporting/page-header/custom-page-header'; -import { DownOutlined } from '@ant-design/icons'; +import { DownOutlined } from '@/shared/antd-imports'; import ProjectReportsTable from './projects-reports-table/projects-reports-table'; import ProjectsReportsFilters from './projects-reports-filters/project-reports-filters'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/reporting/sidebar/reporting-collapsed-button.tsx b/worklenz-frontend/src/pages/reporting/sidebar/reporting-collapsed-button.tsx index e6befefa..6bc7dcc6 100644 --- a/worklenz-frontend/src/pages/reporting/sidebar/reporting-collapsed-button.tsx +++ b/worklenz-frontend/src/pages/reporting/sidebar/reporting-collapsed-button.tsx @@ -1,4 +1,4 @@ -import { GlobalOutlined, LeftCircleOutlined, RightCircleOutlined } from '@ant-design/icons'; +import { GlobalOutlined, LeftCircleOutlined, RightCircleOutlined } from '@/shared/antd-imports'; import React, { useEffect, useState } from 'react'; import { colors } from '@/styles/colors'; import { Button, Flex, Tooltip, Typography } from '@/shared/antd-imports'; diff --git a/worklenz-frontend/src/pages/reporting/timeReports/page-header/billable.tsx b/worklenz-frontend/src/pages/reporting/timeReports/page-header/billable.tsx index 5b2bd1c3..8fd29c77 100644 --- a/worklenz-frontend/src/pages/reporting/timeReports/page-header/billable.tsx +++ b/worklenz-frontend/src/pages/reporting/timeReports/page-header/billable.tsx @@ -1,7 +1,7 @@ import { setSelectOrDeselectBillable } from '@/features/reporting/time-reports/time-reports-overview.slice'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { Button, Checkbox, Dropdown, MenuProps } from '@/shared/antd-imports'; import React from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/pages/reporting/timeReports/page-header/categories.tsx b/worklenz-frontend/src/pages/reporting/timeReports/page-header/categories.tsx index 5f0c673e..064d65d5 100644 --- a/worklenz-frontend/src/pages/reporting/timeReports/page-header/categories.tsx +++ b/worklenz-frontend/src/pages/reporting/timeReports/page-header/categories.tsx @@ -6,7 +6,7 @@ import { } from '@/features/reporting/time-reports/time-reports-overview.slice'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { Button, Card, Checkbox, Divider, Dropdown, Input, theme } from '@/shared/antd-imports'; import { CheckboxChangeEvent } from 'antd/es/checkbox'; import React, { useState } from 'react'; diff --git a/worklenz-frontend/src/pages/reporting/timeReports/page-header/projects.tsx b/worklenz-frontend/src/pages/reporting/timeReports/page-header/projects.tsx index 1b5b564d..823461b3 100644 --- a/worklenz-frontend/src/pages/reporting/timeReports/page-header/projects.tsx +++ b/worklenz-frontend/src/pages/reporting/timeReports/page-header/projects.tsx @@ -11,7 +11,7 @@ import { DownOutlined, RightOutlined, FilterOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { Button, Checkbox, diff --git a/worklenz-frontend/src/pages/reporting/timeReports/page-header/team.tsx b/worklenz-frontend/src/pages/reporting/timeReports/page-header/team.tsx index cac788ca..0022ab3b 100644 --- a/worklenz-frontend/src/pages/reporting/timeReports/page-header/team.tsx +++ b/worklenz-frontend/src/pages/reporting/timeReports/page-header/team.tsx @@ -1,24 +1,19 @@ -import { CaretDownFilled } from '@ant-design/icons'; +import { CaretDownFilled } from '@/shared/antd-imports'; import { Button, Checkbox, Divider, Dropdown, Input, theme } from '@/shared/antd-imports'; -import React, { useEffect, useState } from 'react'; +import React, { useState } from 'react'; import type { CheckboxChangeEvent } from 'antd/es/checkbox'; import { useTranslation } from 'react-i18next'; -import { ISelectableTeam } from '@/types/reporting/reporting-filters.types'; -import { reportingApiService } from '@/api/reporting/reporting.api.service'; -import logger from '@/utils/errorLogger'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { fetchReportingCategories, fetchReportingProjects, - fetchReportingTeams, setSelectOrDeselectAllTeams, setSelectOrDeselectTeam, } from '@/features/reporting/time-reports/time-reports-overview.slice'; const Team: React.FC = () => { const dispatch = useAppDispatch(); - const [checkedList, setCheckedList] = useState([]); const [searchText, setSearchText] = useState(''); const [selectAll, setSelectAll] = useState(true); const { t } = useTranslation('time-report'); diff --git a/worklenz-frontend/src/pages/reporting/timeReports/timeReportingRightHeader/TimeReportingRightHeader.tsx b/worklenz-frontend/src/pages/reporting/timeReports/timeReportingRightHeader/TimeReportingRightHeader.tsx index 36b1ae81..415527a4 100644 --- a/worklenz-frontend/src/pages/reporting/timeReports/timeReportingRightHeader/TimeReportingRightHeader.tsx +++ b/worklenz-frontend/src/pages/reporting/timeReports/timeReportingRightHeader/TimeReportingRightHeader.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Button, Checkbox, Dropdown, Space, Typography } from '@/shared/antd-imports'; -import { DownOutlined } from '@ant-design/icons'; +import { DownOutlined } from '@/shared/antd-imports'; import { useTranslation } from 'react-i18next'; import CustomPageHeader from '../../page-header/custom-page-header'; import TimeWiseFilter from '../../../../components/reporting/time-wise-filter'; diff --git a/worklenz-frontend/src/pages/schedule-old/schedule.tsx b/worklenz-frontend/src/pages/schedule-old/schedule.tsx index cdd6599d..f81c7f07 100644 --- a/worklenz-frontend/src/pages/schedule-old/schedule.tsx +++ b/worklenz-frontend/src/pages/schedule-old/schedule.tsx @@ -1,7 +1,7 @@ import { Button, DatePicker, DatePickerProps, Select, Space } from '@/shared/antd-imports'; import React, { Suspense, useState } from 'react'; import Team from '../../components/schedule-old/team/Team'; -import { SettingOutlined } from '@ant-design/icons'; +import { SettingOutlined } from '@/shared/antd-imports'; import { useDispatch } from 'react-redux'; import { toggleSettingsDrawer } from '@/features/schedule-old/scheduleSlice'; import ScheduleSettingsDrawer from '@/features/schedule-old/ScheduleSettingsDrawer'; diff --git a/worklenz-frontend/src/pages/schedule/schedule.tsx b/worklenz-frontend/src/pages/schedule/schedule.tsx index b6f54ead..ba51d28c 100644 --- a/worklenz-frontend/src/pages/schedule/schedule.tsx +++ b/worklenz-frontend/src/pages/schedule/schedule.tsx @@ -1,5 +1,5 @@ import { Button, DatePicker, DatePickerProps, Flex, Select, Space } from '@/shared/antd-imports'; -import React, { useRef, useState } from 'react'; +import React, { useRef } from 'react'; import { SettingOutlined } from '@ant-design/icons'; import { useDispatch } from 'react-redux'; import { setDate, setType, toggleSettingsDrawer } from '@/features/schedule/scheduleSlice'; diff --git a/worklenz-frontend/src/pages/settings/appearance/appearance-settings.tsx b/worklenz-frontend/src/pages/settings/appearance/appearance-settings.tsx index a0f50758..20e25e5a 100644 --- a/worklenz-frontend/src/pages/settings/appearance/appearance-settings.tsx +++ b/worklenz-frontend/src/pages/settings/appearance/appearance-settings.tsx @@ -4,7 +4,7 @@ import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useAppSelector } from '@/hooks/useAppSelector'; import { toggleTheme } from '@/features/theme/themeSlice'; import { useDocumentTitle } from '@/hooks/useDoumentTItle'; -import { MoonOutlined, SunOutlined } from '@ant-design/icons'; +import { MoonOutlined, SunOutlined } from '@/shared/antd-imports'; const AppearanceSettings = () => { const { t } = useTranslation('settings/appearance'); diff --git a/worklenz-frontend/src/pages/settings/categories/categories-settings.tsx b/worklenz-frontend/src/pages/settings/categories/categories-settings.tsx index 4ac631b4..2f7b5362 100644 --- a/worklenz-frontend/src/pages/settings/categories/categories-settings.tsx +++ b/worklenz-frontend/src/pages/settings/categories/categories-settings.tsx @@ -1,4 +1,4 @@ -import { DeleteOutlined, ExclamationCircleFilled, SearchOutlined } from '@ant-design/icons'; +import { DeleteOutlined, ExclamationCircleFilled, SearchOutlined } from '@/shared/antd-imports'; import { Button, Card, @@ -13,7 +13,6 @@ import { import { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { colors } from '@/styles/colors'; -import { CategoryType } from '@/types/categories.types'; import CustomColorsCategoryTag from '@features/settings/categories/CustomColorsCategoryTag'; import { deleteCategory } from '@features/settings/categories/categoriesSlice'; import { categoriesApiService } from '@/api/settings/categories/categories.api.service'; diff --git a/worklenz-frontend/src/pages/settings/change-password/change-password.tsx b/worklenz-frontend/src/pages/settings/change-password/change-password.tsx index 5086279b..ddc245dc 100644 --- a/worklenz-frontend/src/pages/settings/change-password/change-password.tsx +++ b/worklenz-frontend/src/pages/settings/change-password/change-password.tsx @@ -1,4 +1,4 @@ -import { EyeInvisibleOutlined, EyeOutlined } from '@ant-design/icons'; +import { EyeInvisibleOutlined, EyeOutlined } from '@/shared/antd-imports'; import { Button, Card, Form, Input, notification, Row, Typography } from '@/shared/antd-imports'; import React, { useState } from 'react'; import { useDocumentTitle } from '@/hooks/useDoumentTItle'; diff --git a/worklenz-frontend/src/pages/settings/clients/clients-settings.tsx b/worklenz-frontend/src/pages/settings/clients/clients-settings.tsx index dc468067..161a3df7 100644 --- a/worklenz-frontend/src/pages/settings/clients/clients-settings.tsx +++ b/worklenz-frontend/src/pages/settings/clients/clients-settings.tsx @@ -3,7 +3,7 @@ import { EditOutlined, ExclamationCircleFilled, SearchOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { Button, Card, diff --git a/worklenz-frontend/src/pages/settings/job-titles/job-titles-settings.tsx b/worklenz-frontend/src/pages/settings/job-titles/job-titles-settings.tsx index 0db03cf9..896e05bf 100644 --- a/worklenz-frontend/src/pages/settings/job-titles/job-titles-settings.tsx +++ b/worklenz-frontend/src/pages/settings/job-titles/job-titles-settings.tsx @@ -3,7 +3,7 @@ import { EditOutlined, ExclamationCircleFilled, SearchOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { useDocumentTitle } from '@/hooks/useDoumentTItle'; import { jobTitlesApiService } from '@/api/settings/job-titles/job-titles.api.service'; diff --git a/worklenz-frontend/src/pages/settings/labels/labels-settings.tsx b/worklenz-frontend/src/pages/settings/labels/labels-settings.tsx index 21687cd5..dffc7eaa 100644 --- a/worklenz-frontend/src/pages/settings/labels/labels-settings.tsx +++ b/worklenz-frontend/src/pages/settings/labels/labels-settings.tsx @@ -13,7 +13,7 @@ import { useEffect, useMemo, useState } from 'react'; import PinRouteToNavbarButton from '../../../components/PinRouteToNavbarButton'; import { useTranslation } from 'react-i18next'; -import { DeleteOutlined, ExclamationCircleFilled, SearchOutlined } from '@ant-design/icons'; +import { DeleteOutlined, ExclamationCircleFilled, SearchOutlined } from '@/shared/antd-imports'; import { ITaskLabel } from '@/types/label.type'; import { labelsApiService } from '@/api/taskAttributes/labels/labels.api.service'; import CustomColorLabel from '@components/task-list-common/labelsSelector/custom-color-label'; diff --git a/worklenz-frontend/src/pages/settings/profile/profile-settings.tsx b/worklenz-frontend/src/pages/settings/profile/profile-settings.tsx index d590a27f..e238b2dd 100644 --- a/worklenz-frontend/src/pages/settings/profile/profile-settings.tsx +++ b/worklenz-frontend/src/pages/settings/profile/profile-settings.tsx @@ -1,4 +1,4 @@ -import { LoadingOutlined, PlusOutlined } from '@ant-design/icons'; +import { LoadingOutlined, PlusOutlined } from '@/shared/antd-imports'; import { Button, Card, diff --git a/worklenz-frontend/src/pages/settings/project-templates/project-templates-settings.tsx b/worklenz-frontend/src/pages/settings/project-templates/project-templates-settings.tsx index 5cf69782..167b748c 100644 --- a/worklenz-frontend/src/pages/settings/project-templates/project-templates-settings.tsx +++ b/worklenz-frontend/src/pages/settings/project-templates/project-templates-settings.tsx @@ -1,8 +1,8 @@ import { Button, Card, Popconfirm, Table, TableProps, Tooltip, Typography } from '@/shared/antd-imports'; -import React, { useEffect, useState } from 'react'; +import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useAppSelector } from '@/hooks/useAppSelector'; -import { DeleteOutlined, EditOutlined } from '@ant-design/icons'; +import { DeleteOutlined } from '@/shared/antd-imports'; import { useNavigate } from 'react-router-dom'; import { useDocumentTitle } from '@/hooks/useDoumentTItle'; import { projectTemplatesApiService } from '@/api/project-templates/project-templates.api.service'; diff --git a/worklenz-frontend/src/pages/settings/project-templates/projectTemplateEditView/ProjectTemplateEditView.tsx b/worklenz-frontend/src/pages/settings/project-templates/projectTemplateEditView/ProjectTemplateEditView.tsx index 3c5c75d5..4c8eee61 100644 --- a/worklenz-frontend/src/pages/settings/project-templates/projectTemplateEditView/ProjectTemplateEditView.tsx +++ b/worklenz-frontend/src/pages/settings/project-templates/projectTemplateEditView/ProjectTemplateEditView.tsx @@ -4,7 +4,7 @@ import StatusGroupTables from '../../../projects/project-view-1/taskList/statusT import { TaskType } from '../../../../types/task.types'; import { useAppSelector } from '../../../../hooks/useAppSelector'; import { PageHeader } from '@ant-design/pro-components'; -import { ArrowLeftOutlined, CaretDownFilled } from '@ant-design/icons'; +import { ArrowLeftOutlined, CaretDownFilled } from '@/shared/antd-imports'; import { useNavigate, useParams } from 'react-router-dom'; import SearchDropdown from '../../../projects/project-view-1/taskList/taskListFilters/SearchDropdown'; import { useSelectedProject } from '../../../../hooks/useSelectedProject'; diff --git a/worklenz-frontend/src/pages/settings/sidebar/settings-sidebar.tsx b/worklenz-frontend/src/pages/settings/sidebar/settings-sidebar.tsx index 4936c2f1..f39bc8d5 100644 --- a/worklenz-frontend/src/pages/settings/sidebar/settings-sidebar.tsx +++ b/worklenz-frontend/src/pages/settings/sidebar/settings-sidebar.tsx @@ -1,4 +1,4 @@ -import { RightOutlined } from '@ant-design/icons'; +import { RightOutlined } from '@/shared/antd-imports'; import { ConfigProvider, Flex, Menu, MenuProps } from '@/shared/antd-imports'; import { Link, useLocation } from 'react-router-dom'; import { colors } from '@/styles/colors'; diff --git a/worklenz-frontend/src/pages/settings/task-templates/task-templates-settings.tsx b/worklenz-frontend/src/pages/settings/task-templates/task-templates-settings.tsx index 7e55c711..5bf3f18e 100644 --- a/worklenz-frontend/src/pages/settings/task-templates/task-templates-settings.tsx +++ b/worklenz-frontend/src/pages/settings/task-templates/task-templates-settings.tsx @@ -2,7 +2,7 @@ import { Button, Card, Popconfirm, Table, TableProps, Tooltip, Typography } from import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import './task-templates-settings.css'; -import { DeleteOutlined, EditOutlined } from '@ant-design/icons'; +import { DeleteOutlined, EditOutlined } from '@/shared/antd-imports'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import TaskTemplateDrawer from '@/components/task-templates/task-template-drawer'; import { useAppSelector } from '@/hooks/useAppSelector'; diff --git a/worklenz-frontend/src/pages/settings/team-members/team-members-settings.tsx b/worklenz-frontend/src/pages/settings/team-members/team-members-settings.tsx index f7cce8f9..4087c1c2 100644 --- a/worklenz-frontend/src/pages/settings/team-members/team-members-settings.tsx +++ b/worklenz-frontend/src/pages/settings/team-members/team-members-settings.tsx @@ -5,7 +5,7 @@ import { SearchOutlined, SyncOutlined, UserSwitchOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import { Avatar, Badge, diff --git a/worklenz-frontend/src/pages/settings/teams/teams-settings.tsx b/worklenz-frontend/src/pages/settings/teams/teams-settings.tsx index 3a94cb5a..e6932d09 100644 --- a/worklenz-frontend/src/pages/settings/teams/teams-settings.tsx +++ b/worklenz-frontend/src/pages/settings/teams/teams-settings.tsx @@ -2,7 +2,7 @@ import { Button, Card, Flex, Table, TableProps, Tooltip, Typography } from '@/sh import PinRouteToNavbarButton from '@components/PinRouteToNavbarButton'; import { useAppSelector } from '@/hooks/useAppSelector'; import { durationDateFormat } from '@utils/durationDateFormat'; -import { EditOutlined } from '@ant-design/icons'; +import { EditOutlined } from '@/shared/antd-imports'; import { useEffect, useState } from 'react'; import EditTeamModal from '@/components/settings/edit-team-name-modal'; import { useTranslation } from 'react-i18next'; diff --git a/worklenz-frontend/src/shared/antd-imports.ts b/worklenz-frontend/src/shared/antd-imports.ts index 680d6e58..9f532aa2 100644 --- a/worklenz-frontend/src/shared/antd-imports.ts +++ b/worklenz-frontend/src/shared/antd-imports.ts @@ -117,6 +117,71 @@ export { UserAddOutlined, ArrowsAltOutlined, EllipsisOutlined, + ExclamationCircleOutlined, + FormatPainterOutlined, + CloseCircleOutlined, + MailOutlined, + InfoCircleTwoTone, + ContainerOutlined, + CheckCircleFilled, + PhoneOutlined, + LoadingOutlined, + PauseOutlined, + MinusOutlined, + ForkOutlined, + CaretRightFilled, + CaretDownFilled, + DoubleLeftOutlined, + StopOutlined, + MenuOutlined, + BankOutlined, + ProjectOutlined, + StarFilled, + SortAscendingOutlined, + SortDescendingOutlined, + CaretDownOutlined, + CaretLeftOutlined, + CaretRightOutlined, + CaretUpOutlined, + QuestionCircleOutlined, + CloseCircleFilled, + PlusCircleOutlined, + WifiOutlined, + DisconnectOutlined, + ReloadOutlined, + ArrowRightOutlined, + ExclamationCircleFilled, + DownloadOutlined, + LikeOutlined, + LikeTwoTone, + HomeOutlined, + PlayCircleFilled, + CommentOutlined, + TagsOutlined, + BulbOutlined, + ReadOutlined, + FileExcelOutlined, + FileZipOutlined, + GlobalOutlined, + IdcardOutlined, + LockOutlined, + NotificationOutlined, + ProfileOutlined, + UserSwitchOutlined, + LeftCircleOutlined, + RightCircleOutlined, + ClearOutlined, + MoonOutlined, + SunOutlined, + EyeInvisibleOutlined, + CreditCardOutlined, + CheckCircleTwoTone, + CloseCircleTwoTone, + EnterOutlined, + InfoCircleOutlined, + WarningTwoTone, + ShareAltOutlined, + CloudDownloadOutlined } from '@ant-design/icons'; // Re-export all components with React @@ -174,7 +239,7 @@ export { Breadcrumb, Timeline, Mentions, - Radio + Radio, }; // TypeScript Types - Import commonly used ones @@ -195,6 +260,9 @@ export type { TabsProps, TableProps, TableColumnsType, + PaginationProps, + CollapseProps, + TablePaginationConfig, } from 'antd/es'; // Dayjs diff --git a/worklenz-frontend/src/shared/constants.ts b/worklenz-frontend/src/shared/constants.ts index 7c46718e..a4a5bd6e 100644 --- a/worklenz-frontend/src/shared/constants.ts +++ b/worklenz-frontend/src/shared/constants.ts @@ -4,7 +4,7 @@ import { ClockCircleOutlined, CloseCircleOutlined, StopOutlined, -} from '@ant-design/icons'; +} from '@/shared/antd-imports'; import dayjs from 'dayjs'; export const avatarNamesMap: { [x: string]: string } = { diff --git a/worklenz-frontend/src/types/project/project.types.ts b/worklenz-frontend/src/types/project/project.types.ts index 0f39b125..4c8c3def 100644 --- a/worklenz-frontend/src/types/project/project.types.ts +++ b/worklenz-frontend/src/types/project/project.types.ts @@ -3,7 +3,7 @@ import { IProjectStatus } from '@/types/project/projectStatus.types'; import { IProjectViewModel } from './projectViewModel.types'; import { NavigateFunction } from 'react-router-dom'; import { AppDispatch } from '@/app/store'; -import { TablePaginationConfig } from 'antd'; +import { TablePaginationConfig } from '@/shared/antd-imports'; import { FilterValue, SorterResult } from 'antd/es/table/interface'; export interface IProject { From 4887383dc4a844d6aefec5044690410d0410e4ec Mon Sep 17 00:00:00 2001 From: chamikaJ Date: Wed, 23 Jul 2025 13:03:00 +0530 Subject: [PATCH 11/13] feat(upgrade-plans): add responsive styles and improve layout for upgrade plans component - Introduced a new CSS file for responsive design in the upgrade plans component, enhancing mobile usability. - Updated the upgrade plans component to utilize the new styles, ensuring a better layout on various screen sizes. - Refactored seat count options logic for improved clarity and functionality. --- .../drawers/upgrade-plans/upgrade-plans.css | 44 +++++++++++++++++++ .../drawers/upgrade-plans/upgrade-plans.tsx | 41 ++++++++--------- .../configuration/configuration.tsx | 34 +++++++------- 3 files changed, 79 insertions(+), 40 deletions(-) create mode 100644 worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.css diff --git a/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.css b/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.css new file mode 100644 index 00000000..6baef71a --- /dev/null +++ b/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.css @@ -0,0 +1,44 @@ +.upgrade-plans-responsive { + padding: 24px; +} + +.upgrade-plans-row-responsive { + width: 100%; + flex-wrap: wrap; +} + +@media (max-width: 900px) { + .upgrade-plans-row-responsive .ant-col { + flex: 0 0 100%; + max-width: 100%; + margin-bottom: 16px; + } + .upgrade-plans-row-responsive .ant-card { + width: 100%; + min-width: 0; + } +} + +@media (max-width: 600px) { + .upgrade-plans-responsive { + padding: 8px; + } + .upgrade-plans-row-responsive .ant-col { + padding: 0 !important; + margin-bottom: 12px; + } + .upgrade-plans-row-responsive .ant-card { + width: 100%; + min-width: 0; + box-sizing: border-box; + } + .upgrade-plans-responsive .ant-typography, + .upgrade-plans-responsive .ant-btn, + .upgrade-plans-responsive .ant-form-item { + width: 100%; + text-align: center; + } + .upgrade-plans-responsive .ant-btn { + margin-top: 12px; + } +} \ No newline at end of file diff --git a/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx b/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx index dd1a6b07..48199a16 100644 --- a/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx +++ b/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx @@ -30,6 +30,7 @@ import { billingApiService } from '@/api/admin-center/billing.api.service'; import { authApiService } from '@/api/auth/auth.api.service'; import { setUser } from '@/features/user/userSlice'; import { setSession } from '@/utils/session-helper'; +import './upgrade-plans.css'; // Extend Window interface to include Paddle declare global { @@ -65,30 +66,23 @@ const UpgradePlans = () => { const [paddleError, setPaddleError] = useState(null); const populateSeatCountOptions = (currentSeats: number) => { - if (!currentSeats) return []; + if (typeof currentSeats !== 'number') return []; const step = 5; const maxSeats = 90; - const minValue = Math.max(1, currentSeats + 1); // Start from 1 or currentSeats + 1, whichever is higher - const rangeStart = Math.ceil(minValue / step) * step; - const range = Array.from( - { length: Math.floor((maxSeats - rangeStart) / step) + 1 }, - (_, i) => rangeStart + i * step - ); + const minValue = currentSeats + 1; + const options: { value: number; disabled: boolean }[] = []; - // Always include 1 as the first option - const options = [1]; - - if (currentSeats < step) { - // Add individual numbers from minValue to rangeStart - for (let i = Math.max(2, minValue); i < rangeStart; i++) { - options.push(i); - } + // Always show 1-5, but disable if less than minValue + for (let i = 1; i <= 5; i++) { + options.push({ value: i, disabled: i < minValue }); } - - // Add the range of step-based numbers - options.push(...range); - + + // Show all multiples of 5 from 10 to maxSeats + for (let i = 10; i <= maxSeats; i += step) { + options.push({ value: i, disabled: i < minValue }); + } + return options; }; @@ -350,7 +344,7 @@ const UpgradePlans = () => { }, []); return ( -
+
{billingInfo?.status === SUBSCRIPTION_STATUS.TRIALING @@ -366,8 +360,9 @@ const UpgradePlans = () => { style={{ width: 100 }} value={selectedSeatCount} options={seatCountOptions.map(option => ({ - value: option, - text: option.toString(), + value: option.value, + label: option.value.toString(), + disabled: option.disabled, }))} onChange={setSelectedSeatCount} /> @@ -376,7 +371,7 @@ const UpgradePlans = () => { - + {/* Free Plan */} {
Billing Details} style={cardStyle}> - - + + { - + { - + { - + Company Details - - + + - + - + - - + + - + - - + + - + - From 9946c9a00e1c7e41633ab968b138ea5fb4b38e19 Mon Sep 17 00:00:00 2001 From: chamikaJ Date: Wed, 23 Jul 2025 13:24:58 +0530 Subject: [PATCH 12/13] fix(upgrade-plans): adjust minimum seat value logic and enhance HubSpot widget dark mode styles - Updated the minimum seat value logic in the upgrade plans component to allow the current seat count. - Added CSS overrides for the HubSpot widget to ensure proper display in dark mode, removing unwanted backgrounds and shadows. --- .../drawers/upgrade-plans/upgrade-plans.tsx | 2 +- .../src/styles/customOverrides.css | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx b/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx index 48199a16..a9c16efc 100644 --- a/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx +++ b/worklenz-frontend/src/components/admin-center/billing/drawers/upgrade-plans/upgrade-plans.tsx @@ -70,7 +70,7 @@ const UpgradePlans = () => { const step = 5; const maxSeats = 90; - const minValue = currentSeats + 1; + const minValue = currentSeats; const options: { value: number; disabled: boolean }[] = []; // Always show 1-5, but disable if less than minValue diff --git a/worklenz-frontend/src/styles/customOverrides.css b/worklenz-frontend/src/styles/customOverrides.css index b4332cfb..b2f9586e 100644 --- a/worklenz-frontend/src/styles/customOverrides.css +++ b/worklenz-frontend/src/styles/customOverrides.css @@ -180,3 +180,42 @@ body.dark .overview-stat-card .ant-card-body, .ql-snow .ql-stroke { stroke: #6c757d !important; } + +/* HubSpot Widget Dark Mode Fixes */ +html.dark #hubspot-messages-iframe-container { + background-color: transparent !important; +} + +html.dark #hubspot-messages-iframe-container iframe { + background-color: transparent !important; +} + +/* Target the HubSpot widget container */ +html.dark .hs-messages-widget-open { + background-color: transparent !important; +} + +/* Remove white background from HubSpot elements */ +html.dark #hs-messages-iframe-container, +html.dark .hs-messages-iframe-container { + background: transparent !important; + background-color: transparent !important; +} + +/* Ensure the iframe wrapper has no background */ +html.dark iframe#hs-messages-iframe { + background: transparent !important; +} + +/* Target the widget launcher button area */ +html.dark .hs-messages-widget, +html.dark .hs-messages-widget-container { + background: transparent !important; + background-color: transparent !important; +} + +/* Remove any box shadow that might appear white */ +html.dark #hubspot-messages-iframe-container, +html.dark .hs-messages-widget { + box-shadow: none !important; +} From 78516d8d6c26fea005e5d5242d3354e05dd1c054 Mon Sep 17 00:00:00 2001 From: chamikaJ Date: Wed, 23 Jul 2025 14:36:50 +0530 Subject: [PATCH 13/13] feat(analytics-hubspot): modularize analytics and HubSpot integration - Moved Google Analytics and HubSpot integration scripts to separate modules for better organization and maintainability. - Implemented an AnalyticsManager class to handle Google Analytics initialization and privacy notice display. - Created a HubSpotManager class to manage HubSpot widget loading and dark mode theming. - Updated index.html to reference the new modules, improving code clarity and separation of concerns. --- worklenz-frontend/index.html | 109 +-------------- worklenz-frontend/public/js/analytics.js | 97 +++++++++++++ worklenz-frontend/public/js/hubspot.js | 137 +++++++++++++++++++ worklenz-frontend/src/layouts/MainLayout.tsx | 4 +- 4 files changed, 239 insertions(+), 108 deletions(-) create mode 100644 worklenz-frontend/public/js/analytics.js create mode 100644 worklenz-frontend/public/js/hubspot.js diff --git a/worklenz-frontend/index.html b/worklenz-frontend/index.html index 5ac671f0..21675992 100644 --- a/worklenz-frontend/index.html +++ b/worklenz-frontend/index.html @@ -57,116 +57,15 @@ - - + +
- + + diff --git a/worklenz-frontend/public/js/analytics.js b/worklenz-frontend/public/js/analytics.js new file mode 100644 index 00000000..90a4f2d7 --- /dev/null +++ b/worklenz-frontend/public/js/analytics.js @@ -0,0 +1,97 @@ +/** + * Google Analytics initialization module + * Handles analytics loading and privacy notices + */ + +class AnalyticsManager { + constructor() { + this.isProduction = window.location.hostname === 'app.worklenz.com'; + this.trackingId = this.isProduction ? 'G-7KSRKQ1397' : 'G-3LM2HGWEXG'; + } + + /** + * Initialize Google Analytics asynchronously + */ + init() { + const loadAnalytics = () => { + // Load the Google Analytics script + const script = document.createElement('script'); + script.async = true; + script.src = `https://www.googletagmanager.com/gtag/js?id=${this.trackingId}`; + document.head.appendChild(script); + + // Initialize Google Analytics + window.dataLayer = window.dataLayer || []; + function gtag() { + dataLayer.push(arguments); + } + gtag('js', new Date()); + gtag('config', this.trackingId); + }; + + // Use requestIdleCallback if available, otherwise setTimeout + if ('requestIdleCallback' in window) { + requestIdleCallback(loadAnalytics, { timeout: 2000 }); + } else { + setTimeout(loadAnalytics, 1000); + } + } + + /** + * Show privacy notice for non-production environments + */ + showPrivacyNotice() { + const notice = document.createElement('div'); + notice.style.cssText = ` + position: fixed; + bottom: 16px; + right: 16px; + background: #222; + color: #f5f5f5; + padding: 12px 16px 10px 16px; + border-radius: 7px; + box-shadow: 0 2px 8px rgba(0,0,0,0.18); + z-index: 1000; + max-width: 320px; + font-family: Inter, sans-serif; + border: 1px solid #333; + font-size: 0.95rem; + `; + notice.innerHTML = ` +
Analytics Notice
+
This app uses Google Analytics for anonymous usage stats. No personal data is tracked.
+ + `; + document.body.appendChild(notice); + + // Add event listener to button + const btn = notice.querySelector('#analytics-notice-btn'); + btn.addEventListener('click', (e) => { + e.preventDefault(); + localStorage.setItem('privacyNoticeShown', 'true'); + notice.remove(); + }); + } + + /** + * Check if privacy notice should be shown + */ + checkPrivacyNotice() { + const isProduction = + window.location.hostname === 'worklenz.com' || + window.location.hostname === 'app.worklenz.com'; + const noticeShown = localStorage.getItem('privacyNoticeShown') === 'true'; + + // Show notice if not in production and not shown before + if (!isProduction && !noticeShown) { + this.showPrivacyNotice(); + } + } +} + +// Initialize analytics when DOM is ready +document.addEventListener('DOMContentLoaded', () => { + const analytics = new AnalyticsManager(); + analytics.init(); + analytics.checkPrivacyNotice(); +}); \ No newline at end of file diff --git a/worklenz-frontend/public/js/hubspot.js b/worklenz-frontend/public/js/hubspot.js new file mode 100644 index 00000000..d1a3afee --- /dev/null +++ b/worklenz-frontend/public/js/hubspot.js @@ -0,0 +1,137 @@ +/** + * HubSpot Chat Widget integration module + * Handles widget loading and dark mode theming + */ + +class HubSpotManager { + constructor() { + this.isProduction = window.location.hostname === 'app.worklenz.com'; + this.scriptId = 'hs-script-loader'; + this.scriptSrc = '//js.hs-scripts.com/22348300.js'; + this.styleId = 'hubspot-dark-mode-override'; + } + + /** + * Load HubSpot script with dark mode support + */ + init() { + if (!this.isProduction) return; + + const loadHubSpot = () => { + const script = document.createElement('script'); + script.type = 'text/javascript'; + script.id = this.scriptId; + script.async = true; + script.defer = true; + script.src = this.scriptSrc; + + // Configure dark mode after script loads + script.onload = () => this.setupDarkModeSupport(); + + document.body.appendChild(script); + }; + + // Use requestIdleCallback for better performance + if ('requestIdleCallback' in window) { + requestIdleCallback(loadHubSpot, { timeout: 3000 }); + } else { + setTimeout(loadHubSpot, 2000); + } + } + + /** + * Setup dark mode theme switching for HubSpot widget + */ + setupDarkModeSupport() { + const applyTheme = () => { + const isDark = document.documentElement.classList.contains('dark'); + + // Remove existing theme styles + const existingStyle = document.getElementById(this.styleId); + if (existingStyle) { + existingStyle.remove(); + } + + if (isDark) { + this.injectDarkModeCSS(); + } + }; + + // Apply initial theme after delay to ensure widget is loaded + setTimeout(applyTheme, 1000); + + // Watch for theme changes + const observer = new MutationObserver(applyTheme); + observer.observe(document.documentElement, { + attributes: true, + attributeFilter: ['class'] + }); + } + + /** + * Inject CSS for dark mode styling + */ + injectDarkModeCSS() { + const style = document.createElement('style'); + style.id = this.styleId; + style.textContent = ` + /* HubSpot Chat Widget Dark Mode Override */ + #hubspot-conversations-inline-parent, + #hubspot-conversations-iframe-container, + .shadow-2xl.widget-align-right.widget-align-bottom, + [data-test-id="chat-widget"], + [class*="VizExCollapsedChat"], + [class*="VizExExpandedChat"], + iframe[src*="hubspot"] { + filter: invert(1) hue-rotate(180deg) !important; + background: transparent !important; + } + + /* Target HubSpot widget container backgrounds */ + #hubspot-conversations-inline-parent div, + #hubspot-conversations-iframe-container div, + [data-test-id="chat-widget"] div { + background-color: transparent !important; + } + + /* Prevent double inversion of images, avatars, and icons */ + #hubspot-conversations-iframe-container img, + #hubspot-conversations-iframe-container [style*="background-image"], + #hubspot-conversations-iframe-container svg, + iframe[src*="hubspot"] img, + iframe[src*="hubspot"] svg, + [data-test-id="chat-widget"] img, + [data-test-id="chat-widget"] svg { + filter: invert(1) hue-rotate(180deg) !important; + } + + /* Additional targeting for widget launcher and chat bubble */ + div[class*="shadow-2xl"], + div[class*="widget-align"], + div[style*="position: fixed"] { + filter: invert(1) hue-rotate(180deg) !important; + } + `; + document.head.appendChild(style); + } + + /** + * Remove HubSpot widget and associated styles + */ + cleanup() { + const script = document.getElementById(this.scriptId); + const style = document.getElementById(this.styleId); + + if (script) script.remove(); + if (style) style.remove(); + } +} + +// Initialize HubSpot integration +document.addEventListener('DOMContentLoaded', () => { + const hubspot = new HubSpotManager(); + hubspot.init(); + + // Make available globally for potential cleanup + window.HubSpotManager = hubspot; +}); \ No newline at end of file diff --git a/worklenz-frontend/src/layouts/MainLayout.tsx b/worklenz-frontend/src/layouts/MainLayout.tsx index d861be23..b1c6a7d3 100644 --- a/worklenz-frontend/src/layouts/MainLayout.tsx +++ b/worklenz-frontend/src/layouts/MainLayout.tsx @@ -1,15 +1,13 @@ import { Col, ConfigProvider, Layout } from '@/shared/antd-imports'; -import { Outlet, useNavigate } from 'react-router-dom'; +import { Outlet } from 'react-router-dom'; import { memo, useMemo, useEffect, useRef } from 'react'; import { useMediaQuery } from 'react-responsive'; import Navbar from '../features/navbar/navbar'; import { useAppSelector } from '../hooks/useAppSelector'; -import { useAppDispatch } from '../hooks/useAppDispatch'; import { colors } from '../styles/colors'; import { useRenderPerformance } from '@/utils/performance'; -import HubSpot from '@/components/HubSpot'; import { DynamicCSSLoader, LayoutStabilizer } from '@/utils/css-optimizations'; const MainLayout = memo(() => {