rez-table-listing-mui 1.2.12 → 1.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/dist/index.d.ts +116 -1
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.mjs +1 -1
  5. package/dist/index.mjs.map +1 -1
  6. package/package.json +1 -1
  7. package/src/App.tsx +47 -405
  8. package/src/assets/Satoshi/Satoshi-Black.ttf +0 -0
  9. package/src/assets/Satoshi/Satoshi-BlackItalic.ttf +0 -0
  10. package/src/assets/Satoshi/Satoshi-Bold.ttf +0 -0
  11. package/src/assets/Satoshi/Satoshi-BoldItalic.ttf +0 -0
  12. package/src/assets/Satoshi/Satoshi-Italic.ttf +0 -0
  13. package/src/assets/Satoshi/Satoshi-Light.ttf +0 -0
  14. package/src/assets/Satoshi/Satoshi-LightItalic.ttf +0 -0
  15. package/src/assets/Satoshi/Satoshi-Medium.ttf +0 -0
  16. package/src/assets/Satoshi/Satoshi-MediumItalic.ttf +0 -0
  17. package/src/assets/Satoshi/Satoshi-Regular.ttf +0 -0
  18. package/src/assets/Satoshi/Satoshi-Variable.ttf +0 -0
  19. package/src/assets/Satoshi/Satoshi-VariableItalic.ttf +0 -0
  20. package/src/assets/global.css +88 -0
  21. package/src/assets/variable.ts +15 -0
  22. package/src/index.ts +10 -9
  23. package/src/kanban/components/LeadCard.tsx +130 -0
  24. package/src/kanban/constants/kanban-constants.ts +249 -0
  25. package/src/kanban/hooks/hooks.ts +16 -0
  26. package/src/kanban/index.tsx +331 -0
  27. package/src/kanban/services/service.ts +11 -0
  28. package/src/kanban/styles/styles.tsx +256 -0
  29. package/src/kanban/types/types.ts +132 -0
  30. package/src/{components → listing/components}/column-visibility-modal/column-list-item.tsx +1 -1
  31. package/src/{components → listing/components}/column-visibility-modal/index.tsx +1 -1
  32. package/src/{components → listing/components}/common/index.scss +2 -1
  33. package/src/{components → listing/components}/filter/components/forms/components/Filter-criteria.tsx +1 -1
  34. package/src/{components → listing/components}/filter/components/forms/index.tsx +1 -1
  35. package/src/{components → listing/components}/filter/components/saved-filter.tsx +2 -2
  36. package/src/{components → listing/components}/filter/components/search/index.tsx +1 -1
  37. package/src/{components → listing/components}/filter/components/tabs/index.tsx +1 -1
  38. package/src/{components → listing/components}/index-table.tsx +1 -1
  39. package/src/{components → listing/components}/index.scss +1 -2
  40. package/src/{components → listing/components}/pagination/default/index.tsx +1 -1
  41. package/src/{components → listing/components}/search/index.tsx +1 -1
  42. package/src/{components → listing/components}/sorting-modal.tsx/index.tsx +1 -1
  43. package/src/{components → listing/components}/sorting-modal.tsx/sorting-item.tsx +1 -1
  44. package/src/{components → listing/components}/table-change-layout.tsx +1 -1
  45. package/src/{components → listing/components}/table-head-dnd-cell.tsx +1 -1
  46. package/src/{components → listing/components}/table-head-pin.tsx +1 -1
  47. package/src/{components → listing/components}/table-head-popover.tsx +1 -1
  48. package/src/{components → listing/components}/table-head.tsx +1 -1
  49. package/src/{components → listing/components}/table-settings/common/listing-values.tsx +1 -1
  50. package/src/{components → listing/components}/table-settings/components/sorting.tsx +1 -1
  51. package/src/{components → listing/components}/tabs/index.scss +2 -1
  52. package/src/{components → listing/components}/tabs/index.tsx +1 -1
  53. package/src/{components → listing/components}/topbar/index.tsx +7 -7
  54. package/src/{components → listing/components}/viewmore/index.tsx +1 -1
  55. package/src/{libs → listing/libs}/utils/common.ts +2 -2
  56. package/src/main.tsx +1 -0
  57. package/src/view/KanbanView.tsx +16 -0
  58. package/src/view/ListingView.tsx +423 -0
  59. /package/src/{components → listing/components}/column-visibility-modal/index.scss +0 -0
  60. /package/src/{components → listing/components}/common/confirm-modal/index.tsx +0 -0
  61. /package/src/{components → listing/components}/common/index.tsx +0 -0
  62. /package/src/{components → listing/components}/common/loader/loader.tsx +0 -0
  63. /package/src/{components → listing/components}/dropdown/index.scss +0 -0
  64. /package/src/{components → listing/components}/dropdown/index.tsx +0 -0
  65. /package/src/{components → listing/components}/filter/components/attributes-filter.tsx +0 -0
  66. /package/src/{components → listing/components}/filter/components/forms/components/Date.tsx +0 -0
  67. /package/src/{components → listing/components}/filter/components/forms/components/Dropdown.tsx +0 -0
  68. /package/src/{components → listing/components}/filter/components/forms/components/Multi-Select.tsx +0 -0
  69. /package/src/{components → listing/components}/filter/components/forms/components/Select.tsx +0 -0
  70. /package/src/{components → listing/components}/filter/components/forms/components/Textfield.tsx +0 -0
  71. /package/src/{components → listing/components}/filter/components/forms/components/styles.tsx +0 -0
  72. /package/src/{components → listing/components}/filter/components/main-filter.tsx +0 -0
  73. /package/src/{components → listing/components}/filter/components/saved-edit-filter.tsx +0 -0
  74. /package/src/{components → listing/components}/filter/components/tabs/custom-tab-panel.tsx +0 -0
  75. /package/src/{components → listing/components}/filter/index.tsx +0 -0
  76. /package/src/{components → listing/components}/filter/style.ts +0 -0
  77. /package/src/{components → listing/components}/inputs/checkbox/index.tsx +0 -0
  78. /package/src/{components → listing/components}/inputs/index.scss +0 -0
  79. /package/src/{components → listing/components}/inputs/switch.tsx +0 -0
  80. /package/src/{components → listing/components}/login/index.tsx +0 -0
  81. /package/src/{components → listing/components}/nestedcomponent/index.scss +0 -0
  82. /package/src/{components → listing/components}/nestedcomponent/index.tsx +0 -0
  83. /package/src/{components → listing/components}/pagination/default/index.scss +0 -0
  84. /package/src/{components → listing/components}/search/style.ts +0 -0
  85. /package/src/{components → listing/components}/table-body-dnd-cell.tsx +0 -0
  86. /package/src/{components → listing/components}/table-body.tsx +0 -0
  87. /package/src/{components → listing/components}/table-dnd.tsx +0 -0
  88. /package/src/{components → listing/components}/table-settings/common/draggable-listitem.tsx +0 -0
  89. /package/src/{components → listing/components}/table-settings/common/info-alert.tsx +0 -0
  90. /package/src/{components → listing/components}/table-settings/components/column.tsx +0 -0
  91. /package/src/{components → listing/components}/table-settings/components/custom-button.tsx +0 -0
  92. /package/src/{components → listing/components}/table-settings/components/custom-dialog.tsx +0 -0
  93. /package/src/{components → listing/components}/table-settings/components/quick-tab.tsx +0 -0
  94. /package/src/{components → listing/components}/table-settings/components/toggle-button-switch.tsx +0 -0
  95. /package/src/{components → listing/components}/table-settings/constants.ts +0 -0
  96. /package/src/{components → listing/components}/table-settings/index.tsx +0 -0
  97. /package/src/{components → listing/components}/table-settings/style.ts +0 -0
  98. /package/src/{components → listing/components}/table-settings/tabs/horizontal/index.tsx +0 -0
  99. /package/src/{components → listing/components}/table-settings/tabs/styles.ts +0 -0
  100. /package/src/{components → listing/components}/table-settings/tabs/vertical/custom-tab-panel.tsx +0 -0
  101. /package/src/{components → listing/components}/table-settings/tabs/vertical/index.tsx +0 -0
  102. /package/src/{components → listing/components}/table.tsx +0 -0
  103. /package/src/{components → listing/components}/tabs/styles.ts +0 -0
  104. /package/src/{components → listing/components}/topbar/index.scss +0 -0
  105. /package/src/{components → listing/components}/viewmore/index.scss +0 -0
  106. /package/src/{libs → listing/libs}/hooks/useCraftTable.tsx +0 -0
  107. /package/src/{libs → listing/libs}/hooks/useCraftTableFilterSettings.tsx +0 -0
  108. /package/src/{libs → listing/libs}/hooks/useDefaultColumns.tsx +0 -0
  109. /package/src/{libs → listing/libs}/hooks/useElementWidth.tsx +0 -0
  110. /package/src/{libs → listing/libs}/hooks/useEntityTableAPI.tsx +0 -0
  111. /package/src/{libs → listing/libs}/hooks/useEntityTableHooks.ts +0 -0
  112. /package/src/{libs → listing/libs}/hooks/useFullScreen.tsx +0 -0
  113. /package/src/{libs → listing/libs}/hooks/useOutsideClick.tsx +0 -0
  114. /package/src/{libs → listing/libs}/utils/Data-format.ts +0 -0
  115. /package/src/{libs → listing/libs}/utils/amount-format.ts +0 -0
  116. /package/src/{libs → listing/libs}/utils/apiColumn.ts +0 -0
  117. /package/src/{libs → listing/libs}/utils/date-format.ts +0 -0
  118. /package/src/{libs → listing/libs}/utils/debounce.ts +0 -0
  119. /package/src/{libs → listing/libs}/utils/make-data.ts +0 -0
  120. /package/src/{libs → listing/libs}/utils/make-hierar-data.ts +0 -0
  121. /package/src/{libs → listing/libs}/utils/make-nested-data.ts +0 -0
  122. /package/src/{libs → listing/libs}/utils/rows-data.ts +0 -0
  123. /package/src/{types → listing/types}/common.ts +0 -0
  124. /package/src/{types → listing/types}/filter-settings.ts +0 -0
  125. /package/src/{types → listing/types}/filter.ts +0 -0
  126. /package/src/{types → listing/types}/table-options.ts +0 -0
  127. /package/src/{types → listing/types}/table.ts +0 -0
@@ -0,0 +1,331 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import {
3
+ Box,
4
+ Typography,
5
+ Accordion,
6
+ AccordionSummary,
7
+ AccordionDetails,
8
+ IconButton,
9
+ Badge,
10
+ } from "@mui/material";
11
+ import SettingsOutlinedIcon from "@mui/icons-material/SettingsOutlined";
12
+ import {
13
+ Add,
14
+ ExpandMore as ExpandMoreIcon,
15
+ Settings as SettingsIcon,
16
+ } from "@mui/icons-material";
17
+ import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown";
18
+ import { useGetKanbanData } from "./hooks/hooks";
19
+ import { kanbanStyles } from "./styles/styles";
20
+ import LeadCard from "./components/LeadCard";
21
+ import { Lane, LeadData, SubLane, SwimLane } from "./types/types";
22
+ import { COLOR_CONSTANTS } from "./constants/kanban-constants";
23
+ import Loader from "../listing/components/common/loader/loader";
24
+
25
+ const Kanban = ({
26
+ rawData,
27
+ isLoading,
28
+ KanbanCardComponent,
29
+ }: {
30
+ rawData: any;
31
+ isLoading?: boolean;
32
+ KanbanCardComponent: React.ComponentType<{
33
+ key: string | number;
34
+ lead: LeadData;
35
+ }>;
36
+ }) => {
37
+ const [expandedPanels, setExpandedPanels] = useState<{
38
+ [key: string]: boolean;
39
+ }>({
40
+ Active: true,
41
+ });
42
+
43
+ const [subLaneExpanded, setSubLaneExpanded] = useState<{
44
+ [key: string]: boolean;
45
+ }>({});
46
+
47
+ useEffect(() => {
48
+ if (rawData?.swim_lanes?.length) {
49
+ const initial: { [key: string]: boolean } = {};
50
+ rawData.swim_lanes.forEach((swim_lane: SwimLane) => {
51
+ swim_lane?.sub_lanes?.forEach((sub_lane) => {
52
+ const key = `${swim_lane.id}-${sub_lane.lane_id}-${sub_lane.id}`;
53
+ initial[key] = sub_lane.expanded || false;
54
+ });
55
+ });
56
+ setSubLaneExpanded(initial);
57
+ }
58
+ }, [rawData]);
59
+
60
+ const handleAccordionChange =
61
+ (panel: string) => (event: React.SyntheticEvent, isExpanded: boolean) => {
62
+ setExpandedPanels((prev) => ({
63
+ ...prev,
64
+ [panel]: isExpanded,
65
+ }));
66
+ };
67
+
68
+ const toggleSubLane = (subLaneId: number | string) => {
69
+ setSubLaneExpanded((prev) => ({
70
+ ...prev,
71
+ [subLaneId]: !prev[subLaneId],
72
+ }));
73
+ };
74
+
75
+ const getLeadCount = (laneId: number): number => {
76
+ if (!rawData?.swim_lanes || !rawData?.data) return 0;
77
+
78
+ const seenLeadIds = new Set<number | string>();
79
+ let count = 0;
80
+
81
+ rawData.swim_lanes.forEach((swimLane: SwimLane) => {
82
+ swimLane.sub_lanes
83
+ ?.filter((subLane) => subLane.lane_id === laneId)
84
+ ?.forEach((subLane) => {
85
+ rawData.data.forEach((lead: LeadData) => {
86
+ if (lead.sub_lane_id === subLane.id && !seenLeadIds.has(lead.id)) {
87
+ seenLeadIds.add(lead.id);
88
+ count++;
89
+ }
90
+ });
91
+ });
92
+ });
93
+
94
+ return count;
95
+ };
96
+
97
+ return (
98
+ <>
99
+ {isLoading ? (
100
+ <Loader />
101
+ ) : (
102
+ <Box>
103
+ <Box sx={{ width: "100%", bgcolor: "white", overflowX: "auto" }}>
104
+ {/* Header */}
105
+ <Box sx={kanbanStyles.topHeader}>
106
+ <IconButton sx={kanbanStyles.settingStyle}>
107
+ <SettingsOutlinedIcon />
108
+ </IconButton>
109
+
110
+ {/* Lane Headers - Replaced Grid with Flex */}
111
+ <Box
112
+ sx={{
113
+ ...kanbanStyles.syncingStyle,
114
+ flex: 1,
115
+ }}
116
+ >
117
+ {rawData?.lanes?.map((lane: Lane, index: number) => (
118
+ <Box
119
+ className="lane-header"
120
+ sx={{
121
+ ...kanbanStyles.laneHeader,
122
+
123
+ bgcolor: lane.color || COLOR_CONSTANTS[index % 4].color,
124
+ }}
125
+ key={lane.id}
126
+ >
127
+ <Box
128
+ sx={{
129
+ ...kanbanStyles.badge,
130
+
131
+ bgcolor:
132
+ lane.darkColor ||
133
+ COLOR_CONSTANTS[index % 4].darkColor,
134
+ }}
135
+ >
136
+ {getLeadCount(Number(lane.id))}
137
+ </Box>
138
+
139
+ <Typography variant="h6" fontWeight="bold" sx={{ px: 2 }}>
140
+ {lane.name}
141
+ </Typography>
142
+ </Box>
143
+ ))}
144
+ </Box>
145
+ </Box>
146
+
147
+ {/* Content */}
148
+ <Box
149
+ className="kanban-content"
150
+ id="kanban-content"
151
+ sx={{
152
+ maxHeight: "calc(100vh - 186px)",
153
+ // minWidth: "100%",
154
+
155
+ width: "fit-content",
156
+ }}
157
+ >
158
+ {/* Swim Lanes */}
159
+ {rawData?.swim_lanes?.map((swim_lane: SwimLane) => (
160
+ <Accordion
161
+ key={swim_lane.id}
162
+ expanded={!!expandedPanels[swim_lane.name]}
163
+ onChange={handleAccordionChange(swim_lane.name)}
164
+ sx={kanbanStyles.swimLaneAccordionStyle}
165
+ // disabled={getSwimLaneCount(swim_lane.id) === 0 ? true : false}
166
+ >
167
+ <AccordionSummary
168
+ disabled={swim_lane?.sub_lanes?.length > 0 ? false : true}
169
+ expandIcon={
170
+ <ArrowDropDownIcon
171
+ sx={{
172
+ color: "black",
173
+ }}
174
+ />
175
+ }
176
+ sx={kanbanStyles.swimlaneWrapperStyle}
177
+ >
178
+ <Typography
179
+ variant="body1"
180
+ fontWeight="medium"
181
+ sx={{ ml: 1.5 }}
182
+ >
183
+ {swim_lane.name} ({swim_lane?.count})
184
+ </Typography>
185
+ </AccordionSummary>
186
+
187
+ <AccordionDetails
188
+ sx={{ pl: "16px", pr: "8px", width: "fit-content", py: 0 }}
189
+ >
190
+ {/* Replaced Grid with Flex */}
191
+ <Box sx={{ ...kanbanStyles.syncingStyle, pl: 7 }}>
192
+ {rawData?.lanes?.map((lane: Lane, index: number) => (
193
+ <Box
194
+ className="column"
195
+ sx={{
196
+ ...kanbanStyles.columnStyle,
197
+ bgcolor:
198
+ lane.color || COLOR_CONSTANTS[index % 4].color,
199
+ }}
200
+ key={lane.id}
201
+ >
202
+ {/* Sub-lanes for this lane */}
203
+ {swim_lane?.sub_lanes
204
+ ?.filter(
205
+ (sub_lane: SubLane) =>
206
+ sub_lane.lane_id.toString() === lane.id
207
+ )
208
+ ?.map((sub_section: SubLane) => {
209
+ const subLaneKey = `${swim_lane.id}-${lane.id}-${sub_section.id}`;
210
+ return (
211
+ <Accordion
212
+ key={sub_section.id}
213
+ expanded={
214
+ rawData?.data?.filter(
215
+ (lead: LeadData) =>
216
+ lead.sub_lane_id === sub_section.id &&
217
+ lead.lead_status == swim_lane.id
218
+ )?.length === 0
219
+ ? false
220
+ : subLaneExpanded[subLaneKey] || false
221
+ }
222
+ onChange={() => toggleSubLane(subLaneKey)}
223
+ sx={{
224
+ ...kanbanStyles.stageStyle,
225
+ borderLeft: `4px solid ${
226
+ lane.darkColor ||
227
+ COLOR_CONSTANTS[index % 4].darkColor
228
+ }`,
229
+ }}
230
+ // disabled={
231
+ // rawData?.data?.filter(
232
+ // (lead: LeadData) =>
233
+ // lead.sub_lane_id === sub_section.id &&
234
+ // !usedLeadIds.has(lead.id)
235
+ // )?.length === 0
236
+ // ? true
237
+ // : false
238
+ // }
239
+ >
240
+ <AccordionSummary
241
+ expandIcon={
242
+ <ExpandMoreIcon
243
+ sx={{
244
+ display:
245
+ rawData?.data?.filter(
246
+ (lead: LeadData) =>
247
+ lead.sub_lane_id ===
248
+ sub_section.id &&
249
+ lead.lead_status == swim_lane.id
250
+ )?.length === 0
251
+ ? "none"
252
+ : "block",
253
+ }}
254
+ />
255
+ }
256
+ sx={kanbanStyles.subSectionAccordion}
257
+ >
258
+ <Box
259
+ sx={
260
+ kanbanStyles.subSectionHeaderContainer
261
+ }
262
+ >
263
+ <Box
264
+ className="sub-section-count"
265
+ sx={{
266
+ ...kanbanStyles.subSectionCountContainer,
267
+ bgcolor:
268
+ lane.darkColor ||
269
+ COLOR_CONSTANTS[index % 4]
270
+ .darkColor,
271
+ }}
272
+ >
273
+ {rawData?.data?.filter(
274
+ (lead: LeadData) =>
275
+ lead.sub_lane_id ===
276
+ sub_section.id &&
277
+ lead.lead_status === swim_lane.id
278
+ )?.length || 0}
279
+ </Box>
280
+ <Typography
281
+ fontWeight="700"
282
+ color="#555354"
283
+ fontSize="12px"
284
+ >
285
+ {sub_section.name}
286
+ </Typography>
287
+ </Box>
288
+ </AccordionSummary>
289
+
290
+ <AccordionDetails
291
+ sx={kanbanStyles.cardsContainer}
292
+ >
293
+ {(() => {
294
+ const leadsForThisSubLane =
295
+ rawData?.data?.filter(
296
+ (lead: LeadData) =>
297
+ lead.sub_lane_id ===
298
+ sub_section.id &&
299
+ lead.lead_status == swim_lane.id
300
+ ) || [];
301
+
302
+ return leadsForThisSubLane.map(
303
+ (lead_card: LeadData) =>
304
+ (KanbanCardComponent && (
305
+ <KanbanCardComponent
306
+ key={lead_card.id}
307
+ lead={lead_card}
308
+ />
309
+ )) ||
310
+ null
311
+ );
312
+ })()}
313
+ </AccordionDetails>
314
+ </Accordion>
315
+ );
316
+ })}
317
+ </Box>
318
+ ))}
319
+ </Box>
320
+ </AccordionDetails>
321
+ </Accordion>
322
+ ))}
323
+ </Box>
324
+ </Box>
325
+ </Box>
326
+ )}
327
+ </>
328
+ );
329
+ };
330
+
331
+ export default Kanban;
@@ -0,0 +1,11 @@
1
+ import { api } from "../../listing/libs/utils/common";
2
+
3
+ export const getKanbanData = async (entity_type: string) => {
4
+ try {
5
+ const response = await api.get(`/lead/getleads?entity_type=${entity_type}`);
6
+ return response.data;
7
+ } catch (error) {
8
+ console.error("Failed to fetch action category:", error);
9
+ throw error;
10
+ }
11
+ };
@@ -0,0 +1,256 @@
1
+ import { Theme } from "@emotion/react";
2
+ import { SxProps } from "@mui/material";
3
+
4
+ interface KanbanStyles {
5
+ syncingStyle: SxProps<Theme>;
6
+ topHeader: SxProps<Theme>;
7
+ laneHeader: SxProps<Theme>;
8
+ badge: SxProps<Theme>;
9
+ swimlaneWrapperStyle: SxProps<Theme>;
10
+ columnStyle: SxProps<Theme>;
11
+ stageStyle: SxProps<Theme>;
12
+ stageBadge: SxProps<Theme>;
13
+ cardContainer: SxProps<Theme>;
14
+ cardContent: SxProps<Theme>;
15
+ cardHeaderStyle: SxProps<Theme>;
16
+ cardAvatar: SxProps<Theme>;
17
+ statusStyle: SxProps<Theme>;
18
+ codeStyle: SxProps<Theme>;
19
+ nameIconContainer: SxProps<Theme>;
20
+ leadName: SxProps<Theme>;
21
+ iconStyle: SxProps<Theme>;
22
+ leadOwnerStyle: SxProps<Theme>;
23
+ calendarIcon: SxProps<Theme>;
24
+ dateStyle: SxProps<Theme>;
25
+ subSectionAccordion: SxProps<Theme>;
26
+ subSectionCountContainer: SxProps<Theme>;
27
+ cardsContainer: SxProps<Theme>;
28
+ settingStyle: SxProps<Theme>;
29
+ swimLaneAccordionStyle: SxProps<Theme>;
30
+ subSectionHeaderContainer: SxProps<Theme>;
31
+ }
32
+
33
+ export const kanbanStyles: KanbanStyles = {
34
+ syncingStyle: {
35
+ display: "flex",
36
+ flexDirection: "row",
37
+ gap: "8px",
38
+ width: "100%",
39
+ },
40
+ topHeader: {
41
+ display: "flex",
42
+ alignItems: "center",
43
+ gap: 1,
44
+ px: 1,
45
+ pt: 2,
46
+ bgcolor: "white",
47
+ width: "fit-content",
48
+ position: "sticky", // Add sticky positioning
49
+ top: 0, // Stick to the top of the viewport
50
+ right: 0,
51
+ zIndex: 1100, // Ensure it stays above other content
52
+ },
53
+ laneHeader: {
54
+ flex: 1, // Equal width distribution
55
+ minWidth: "263px",
56
+ maxWidth: "263px",
57
+ display: "flex",
58
+ fontWeight: 700,
59
+ fontSize: "16px",
60
+ borderRadius: "6px",
61
+ alignItems: "center",
62
+ justifyContent: "center",
63
+ py: "8px",
64
+ px: "12px",
65
+ position: "relative",
66
+ },
67
+ badge: {
68
+ position: "absolute",
69
+ top: "-12px",
70
+ left: "8px",
71
+ px: 1,
72
+ color: "white",
73
+ borderRadius: "8px",
74
+ },
75
+ swimlaneWrapperStyle: {
76
+ flexDirection: "row-reverse",
77
+ bgcolor: "white",
78
+ minHeight: 44, // overall height
79
+ px: 2,
80
+ py: 0, // remove vertical padding
81
+ "&.Mui-expanded": {
82
+ minHeight: 44,
83
+ },
84
+ "& .MuiAccordionSummary-content": {
85
+ margin: "8px 0", // reduced vertical spacing
86
+ display: "flex",
87
+ alignItems: "center",
88
+ justifyContent: "flex-start",
89
+ gap: 5,
90
+ "&.Mui-expanded": {
91
+ margin: "8px 0", // maintain same margin when expanded
92
+ },
93
+ },
94
+ "& .MuiAccordionSummary-expandIconWrapper": {
95
+ mr: 0, // reduce gap between icon and content
96
+ },
97
+ },
98
+ columnStyle: {
99
+ flex: 1, // Equal width distribution
100
+ p: "12px",
101
+ // px: "2px",
102
+ minHeight: "500px",
103
+ // borderRight: "1px solid #e0e0e0",
104
+
105
+ borderRadius: "6px",
106
+ minWidth: "263px",
107
+ maxWidth: "263px",
108
+ },
109
+ stageStyle: {
110
+ mb: 2,
111
+ bgcolor: "#f9fafb",
112
+ borderTopLeftRadius: "8px !important",
113
+ borderBottomLeftRadius: "8px !important",
114
+ borderTopRightRadius: "8px !important",
115
+ // borderRadius: 2,
116
+ overflow: "hidden",
117
+ boxShadow: "none",
118
+ "&:before": { display: "none" }, // remove default divider line
119
+ },
120
+ stageBadge: {
121
+ "& .MuiBadge-badge": {
122
+ color: "black",
123
+ fontWeight: "bold",
124
+ fontSize: "0.75rem",
125
+ },
126
+ },
127
+ cardContainer: {
128
+ borderRadius: 2,
129
+ bgcolor: "#fff",
130
+ position: "relative",
131
+
132
+ boxShadow:
133
+ "0px 1.36px 2.72px rgba(23, 23, 23, 0.06), 0px 2.72px 5.44px rgba(23, 23, 23, 0.1)",
134
+ border: "none", // explicitly remove border
135
+ },
136
+ cardContent: {
137
+ p: "12px !important",
138
+ display: "flex",
139
+ flexDirection: "column",
140
+ gap: "4px",
141
+ },
142
+ cardHeaderStyle: {
143
+ display: "flex",
144
+ justifyContent: "space-between",
145
+ alignItems: "flex-start",
146
+ // mb: 1,
147
+ },
148
+ cardAvatar: {
149
+ width: "18px",
150
+ height: "18px",
151
+ fontSize: "12px",
152
+ fontWeight: 600,
153
+ bgcolor: "#e5e7eb",
154
+ color: "#374151",
155
+ mr: 1,
156
+ },
157
+ statusStyle: {
158
+ height: 20,
159
+ fontSize: "0.6875rem",
160
+
161
+ fontWeight: 500,
162
+ },
163
+ codeStyle: {
164
+ fontSize: "12px",
165
+ color: "#6b7280",
166
+ fontWeight: 500,
167
+ mb: 0.5,
168
+ cursor: "pointer",
169
+ },
170
+ nameIconContainer: {
171
+ display: "flex",
172
+ justifyContent: "space-between",
173
+ alignItems: "flex-start",
174
+ borderBottom: "1px solid #e5e7eb",
175
+ pb: 2,
176
+ },
177
+ leadName: {
178
+ fontSize: "15px",
179
+ fontWeight: 500,
180
+ color: "#1f2937",
181
+ lineHeight: 1.3,
182
+ },
183
+ iconStyle: {
184
+ color: "#6b7280",
185
+ bgcolor: "#f3f4f6",
186
+ borderRadius: "50%",
187
+ width: "20px",
188
+ height: "20px",
189
+ p: 0.6,
190
+ },
191
+ leadOwnerStyle: {
192
+ fontSize: "12px",
193
+ color: "#374151",
194
+ fontWeight: 500,
195
+ },
196
+ calendarIcon: {
197
+ width: "14px",
198
+ height: "14px",
199
+ color: "#7b7a79",
200
+ mr: 0.5,
201
+ },
202
+ dateStyle: {
203
+ fontSize: "12px",
204
+ color: "#7b7a79",
205
+
206
+ fontWeight: 500,
207
+ },
208
+ subSectionAccordion: {
209
+ height: "52px", // fixed height
210
+ minHeight: "52px", // prevent auto-expansion
211
+ "&.Mui-expanded": {
212
+ minHeight: "52px", // fix expanded state height
213
+ height: "52px",
214
+ },
215
+ border: "1px solid #e2e8f0",
216
+ borderTopRightRadius: "8px",
217
+ px: 2,
218
+ },
219
+ subSectionCountContainer: {
220
+ // px: 1,
221
+ color: "white",
222
+ height: "26px",
223
+ width: "26px !important",
224
+ fontSize: "10px",
225
+ fontWeight: "bold",
226
+ display: "flex",
227
+ alignItems: "center",
228
+ justifyContent: "center",
229
+ borderRadius: "50%",
230
+ },
231
+ cardsContainer: {
232
+ px: 1,
233
+ gap: "12px",
234
+ display: "flex",
235
+ flexDirection: "column",
236
+ p: "8px",
237
+ },
238
+ settingStyle: {
239
+ bgcolor: "#f8fafc",
240
+ width: "56px",
241
+ height: "41px",
242
+ borderRadius: "6px",
243
+ border: "1px solid #e2e8f0",
244
+ },
245
+ swimLaneAccordionStyle: {
246
+ mb: 1,
247
+ "&:before": { display: "none" },
248
+ py: 0,
249
+ boxShadow: "none",
250
+ },
251
+ subSectionHeaderContainer: {
252
+ display: "flex",
253
+ alignItems: "center",
254
+ gap: "8px",
255
+ },
256
+ };