Files
worklenz/worklenz-frontend/src/shared/antd-imports.ts

363 lines
6.4 KiB
TypeScript

/**
* Centralized Ant Design imports for better tree-shaking and React context sharing
*
* This file provides:
* - Consistent imports across the application
* - Better tree-shaking through centralized management
* - Proper React context sharing
*/
// Import React to ensure context availability
import React from 'react';
// Import Ant Design components using the standard method for better context sharing
import {
AutoComplete,
Button,
Input,
Select,
Typography,
Card,
Spin,
Empty,
Space,
Tooltip,
Badge,
Popconfirm,
Checkbox,
Dropdown,
Menu,
Modal,
Tag,
Avatar,
List,
Table,
Flex,
Divider,
Progress,
Result,
Skeleton,
Alert,
Tabs,
ConfigProvider,
DatePicker,
TimePicker,
Form,
InputNumber,
Row,
Col,
Layout,
Drawer,
message,
notification,
theme,
Statistic,
Segmented,
Switch,
Calendar,
FloatButton,
Pagination,
ColorPicker,
Popover,
Image,
Collapse,
Breadcrumb,
Timeline,
Mentions,
Radio,
} from 'antd/es';
// Icons - Import commonly used ones
export {
EditOutlined,
DeleteOutlined,
PlusOutlined,
MoreOutlined,
CheckOutlined,
CloseOutlined,
CalendarOutlined,
ClockCircleOutlined,
UserOutlined,
TeamOutlined,
TagOutlined,
BarsOutlined,
AppstoreOutlined,
FilterOutlined,
SearchOutlined,
SettingOutlined,
DownOutlined,
RightOutlined,
LeftOutlined,
UpOutlined,
ArrowLeftOutlined,
BellFilled,
BellOutlined,
SaveOutlined,
SyncOutlined,
PushpinFilled,
PushpinOutlined,
UsergroupAddOutlined,
ImportOutlined,
UnorderedListOutlined,
TableOutlined,
BarChartOutlined,
FileOutlined,
MessageOutlined,
FlagOutlined,
GroupOutlined,
EyeOutlined,
InboxOutlined,
PaperClipOutlined,
HolderOutlined,
ExpandAltOutlined,
CheckCircleOutlined,
MinusCircleOutlined,
RetweetOutlined,
DoubleRightOutlined,
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,
ArrowUpOutlined,
ArrowDownOutlined,
CalculatorOutlined,
DollarOutlined,
DollarCircleOutlined,
DatabaseOutlined
} from '@ant-design/icons';
// Re-export all components with React
export {
React,
AutoComplete,
Button,
Input,
Select,
Typography,
Card,
Spin,
Empty,
Space,
Tooltip,
Badge,
Popconfirm,
Checkbox,
Dropdown,
Menu,
Modal,
Tag,
Avatar,
List,
Table,
Flex,
Divider,
Progress,
Result,
Skeleton,
Alert,
Tabs,
ConfigProvider,
DatePicker,
TimePicker,
Form,
InputNumber,
Row,
Col,
Layout,
Drawer,
message,
notification,
theme,
Statistic,
Segmented,
Switch,
Calendar,
FloatButton,
Pagination,
ColorPicker,
Popover,
Image,
Collapse,
Breadcrumb,
Timeline,
Mentions,
Radio,
};
// TypeScript Types - Import commonly used ones
export type {
ButtonProps,
InputProps,
InputRef,
SelectProps,
TypographyProps,
CardProps,
TooltipProps,
DropdownProps,
MenuProps,
DatePickerProps,
FormProps,
FormInstance,
FlexProps,
TabsProps,
TableProps,
TableColumnsType,
PaginationProps,
CollapseProps,
TablePaginationConfig,
CheckboxChangeEvent
} from 'antd/es';
// Dayjs
export { default as dayjs } from 'dayjs';
export type { Dayjs } from 'dayjs';
// Optimized message utilities
export const appMessage = {
success: (content: string) => message.success(content),
error: (content: string) => message.error(content),
warning: (content: string) => message.warning(content),
info: (content: string) => message.info(content),
loading: (content: string) => message.loading(content),
};
export const appNotification = {
success: (config: any) => notification.success(config),
error: (config: any) => notification.error(config),
warning: (config: any) => notification.warning(config),
info: (config: any) => notification.info(config),
};
// Default configurations
export const antdConfig = {
datePickerDefaults: {
format: 'MMM DD, YYYY',
placeholder: 'Set Date',
size: 'small' as const,
},
buttonDefaults: {
size: 'small' as const,
},
inputDefaults: {
size: 'small' as const,
},
selectDefaults: {
size: 'small' as const,
showSearch: true,
},
};
export default {
config: antdConfig,
message: appMessage,
notification: appNotification,
};
// Commonly used Ant Design configurations for task management
export const taskManagementAntdConfig = {
// DatePicker default props for consistency
datePickerDefaults: {
format: 'MMM DD, YYYY',
placeholder: 'Set Date',
suffixIcon: null,
size: 'small' as const,
},
// Button default props for task actions
taskButtonDefaults: {
size: 'small' as const,
type: 'text' as const,
},
// Input default props for task editing
taskInputDefaults: {
size: 'small' as const,
variant: 'borderless' as const,
},
// Select default props for dropdowns
taskSelectDefaults: {
size: 'small' as const,
variant: 'borderless' as const,
showSearch: true,
optionFilterProp: 'label' as const,
},
// Tooltip default props
tooltipDefaults: {
placement: 'top' as const,
mouseEnterDelay: 0.5,
mouseLeaveDelay: 0.1,
},
// Dropdown default props
dropdownDefaults: {
trigger: ['click'] as const,
placement: 'bottomLeft' as const,
},
};