@itilite/lumina-ui 1.2.1 → 1.2.21

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 (88) hide show
  1. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.mjs +1 -1
  2. package/dist/atom/Switch/Switch.d.mts +1 -1
  3. package/dist/atom/Switch/Switch.d.ts +1 -1
  4. package/dist/atom/Switch/Switch.js +2 -2
  5. package/dist/atom/Switch/Switch.mjs +1 -1
  6. package/dist/{chunk-4JX54OKI.mjs → chunk-IIJUGDEJ.mjs} +20 -29
  7. package/dist/{chunk-QQA7KWAJ.mjs → chunk-LTP5I3GX.mjs} +4 -4
  8. package/dist/chunk-O6PQFAXN.mjs +47 -0
  9. package/dist/index.js +2 -2
  10. package/dist/index.mjs +10 -10
  11. package/dist/styles.css +826 -806
  12. package/package.json +28 -27
  13. package/dist/AdvancedDateRangePicker-D7xn4So6.d.mts +0 -59
  14. package/dist/AdvancedDateRangePicker-D7xn4So6.d.ts +0 -59
  15. package/dist/AdvancedDateRangePicker-D9Sdk4rK.d.mts +0 -64
  16. package/dist/AdvancedDateRangePicker-D9Sdk4rK.d.ts +0 -64
  17. package/dist/AdvancedDateRangePicker-DGg-rucL.d.mts +0 -62
  18. package/dist/AdvancedDateRangePicker-DGg-rucL.d.ts +0 -62
  19. package/dist/AdvancedDateRangePicker-Di3rHxqf.d.mts +0 -64
  20. package/dist/AdvancedDateRangePicker-Di3rHxqf.d.ts +0 -64
  21. package/dist/AdvancedDateRangePicker-Dxug2Mcf.d.mts +0 -60
  22. package/dist/AdvancedDateRangePicker-Dxug2Mcf.d.ts +0 -60
  23. package/dist/AdvancedDateRangePicker-ozItnkhp.d.mts +0 -57
  24. package/dist/AdvancedDateRangePicker-ozItnkhp.d.ts +0 -57
  25. package/dist/Table-BOq-_9Nr.d.mts +0 -121
  26. package/dist/Table-BOq-_9Nr.d.ts +0 -121
  27. package/dist/Table-BxaCiQmh.d.mts +0 -82
  28. package/dist/Table-BxaCiQmh.d.ts +0 -82
  29. package/dist/Table-CnzP9dkc.d.mts +0 -82
  30. package/dist/Table-CnzP9dkc.d.ts +0 -82
  31. package/dist/Table-DNvoh2P8.d.mts +0 -127
  32. package/dist/Table-DNvoh2P8.d.ts +0 -127
  33. package/dist/Table-DSFYzrpU.d.mts +0 -129
  34. package/dist/Table-DSFYzrpU.d.ts +0 -129
  35. package/dist/Table-DmfNNnuD.d.mts +0 -86
  36. package/dist/Table-DmfNNnuD.d.ts +0 -86
  37. package/dist/Table-DoCPt3ri.d.mts +0 -129
  38. package/dist/Table-DoCPt3ri.d.ts +0 -129
  39. package/dist/chunk-27LRL4RO.mjs +0 -428
  40. package/dist/chunk-2IT3XM7C.mjs +0 -473
  41. package/dist/chunk-3HXZIFV6.mjs +0 -438
  42. package/dist/chunk-53O7JM5I.mjs +0 -424
  43. package/dist/chunk-5JXIJTAS.mjs +0 -448
  44. package/dist/chunk-5OUMKJWI.mjs +0 -301
  45. package/dist/chunk-5PMUTA6S.mjs +0 -303
  46. package/dist/chunk-5PQ43JFX.mjs +0 -440
  47. package/dist/chunk-62VAYFZA.mjs +0 -437
  48. package/dist/chunk-6ON32H2N.mjs +0 -431
  49. package/dist/chunk-6RIZXTFP.mjs +0 -290
  50. package/dist/chunk-6XIT27XY.mjs +0 -269
  51. package/dist/chunk-772C454L.mjs +0 -438
  52. package/dist/chunk-7L267Y4P.mjs +0 -429
  53. package/dist/chunk-7WSVCE2C.mjs +0 -269
  54. package/dist/chunk-ANJI6SPV.mjs +0 -283
  55. package/dist/chunk-BFFLWW7N.mjs +0 -250
  56. package/dist/chunk-C5VYFNVC.mjs +0 -441
  57. package/dist/chunk-DL7BZMGE.mjs +0 -295
  58. package/dist/chunk-DXPVJNGY.mjs +0 -284
  59. package/dist/chunk-FTL3PFC2.mjs +0 -438
  60. package/dist/chunk-G4P6XGQX.mjs +0 -278
  61. package/dist/chunk-GGWY2SYX.mjs +0 -452
  62. package/dist/chunk-GZ4P7OL3.mjs +0 -429
  63. package/dist/chunk-I6GLPWHS.mjs +0 -278
  64. package/dist/chunk-IPVJEGDI.mjs +0 -476
  65. package/dist/chunk-J4YYP4IZ.mjs +0 -0
  66. package/dist/chunk-J5JDQ4R6.mjs +0 -278
  67. package/dist/chunk-K2A4TWA3.mjs +0 -430
  68. package/dist/chunk-L3L42SIL.mjs +0 -429
  69. package/dist/chunk-LRNKIRH3.mjs +0 -289
  70. package/dist/chunk-MA23J4WQ.mjs +0 -430
  71. package/dist/chunk-N4DPPZVJ.mjs +0 -269
  72. package/dist/chunk-PQ3B2FEB.mjs +0 -249
  73. package/dist/chunk-QRGHJP7U.mjs +0 -437
  74. package/dist/chunk-QU73KNTT.mjs +0 -452
  75. package/dist/chunk-RC6IGURJ.mjs +0 -428
  76. package/dist/chunk-SKPCOHON.mjs +0 -473
  77. package/dist/chunk-SRKN7WS7.mjs +0 -448
  78. package/dist/chunk-T43CWNOG.mjs +0 -283
  79. package/dist/chunk-TE5EOIIW.mjs +0 -301
  80. package/dist/chunk-TQDZWJZP.mjs +0 -269
  81. package/dist/chunk-UAGSPM3T.mjs +0 -288
  82. package/dist/chunk-UC4NTBDH.mjs +0 -439
  83. package/dist/chunk-UPSQTJJ4.mjs +0 -294
  84. package/dist/chunk-V3CHJHUX.mjs +0 -424
  85. package/dist/chunk-X3NDICAU.mjs +0 -284
  86. package/dist/chunk-XECXKSTC.mjs +0 -453
  87. package/dist/chunk-XIVTXS3Y.mjs +0 -439
  88. package/dist/chunk-ZGV6QMVM.mjs +0 -437
@@ -1,269 +0,0 @@
1
- import {
2
- Chevron
3
- } from "./chunk-ZTRM4HZJ.mjs";
4
-
5
- // src/atom/AdvancedDateRangePicker/InternalCalendar.tsx
6
- import { memo, useEffect, useRef, useState } from "react";
7
- import dayjs from "dayjs";
8
- import { jsx, jsxs } from "react/jsx-runtime";
9
- var InternalCalendar = ({
10
- id = "",
11
- onChange = () => {
12
- },
13
- dateRange = ["", ""],
14
- showSingleCalendar: showSingleCalendarProp = false,
15
- disablePastDates = false,
16
- minDate = null,
17
- maxDate = null,
18
- minYear = 1900,
19
- maxYear = (/* @__PURE__ */ new Date()).getFullYear() + 10,
20
- allowSameDates = false
21
- }) => {
22
- const onChangeRef = useRef(onChange);
23
- useEffect(() => {
24
- onChangeRef.current = onChange;
25
- }, [onChange]);
26
- const getInitialDate = () => {
27
- const today2 = /* @__PURE__ */ new Date();
28
- today2.setHours(0, 0, 0, 0);
29
- if (dateRange[0]) return new Date(dateRange[0]);
30
- if (today2.getFullYear() >= minYear && today2.getFullYear() <= maxYear) {
31
- return today2;
32
- }
33
- if (minDate) {
34
- const minDateTime = new Date(minDate);
35
- minDateTime.setHours(0, 0, 0, 0);
36
- return minDateTime;
37
- }
38
- return today2;
39
- };
40
- const [currentDate, setCurrentDate] = useState(() => getInitialDate());
41
- const [startDate, setStartDate] = useState(
42
- dateRange[0] ? new Date(dateRange[0]) : null
43
- );
44
- const [endDate, setEndDate] = useState(
45
- dateRange[0] && dateRange[1] ? new Date(dateRange[1]) : null
46
- );
47
- const [hoverDate, setHoverDate] = useState(null);
48
- const [isSelectingEnd, setIsSelectingEnd] = useState(
49
- dateRange[0] && !dateRange[1] ? true : false
50
- );
51
- const [isMobile, setIsMobile] = useState(false);
52
- useEffect(() => {
53
- const checkMobile = () => {
54
- setIsMobile(window.innerWidth < 1024);
55
- };
56
- checkMobile();
57
- window.addEventListener("resize", checkMobile);
58
- return () => window.removeEventListener("resize", checkMobile);
59
- }, []);
60
- const showSingle = showSingleCalendarProp || isMobile;
61
- const prevRangeRef = useRef(dateRange);
62
- useEffect(() => {
63
- const isSameRange = dateRange[0] === prevRangeRef.current[0] && dateRange[1] === prevRangeRef.current[1];
64
- if (isSameRange) return;
65
- prevRangeRef.current = dateRange;
66
- const nextStart = dateRange[0] ? new Date(dateRange[0]) : null;
67
- const nextEnd = dateRange[1] ? new Date(dateRange[1]) : null;
68
- setStartDate(nextStart);
69
- setEndDate(nextEnd);
70
- if (nextStart) {
71
- const startMonth = nextStart.getFullYear() * 12 + nextStart.getMonth();
72
- const currentMonthVal = currentDate.getFullYear() * 12 + currentDate.getMonth();
73
- const isVisibleInFirst = startMonth === currentMonthVal;
74
- const isVisibleInSecond = !showSingle && startMonth === currentMonthVal + 1;
75
- if (!isVisibleInFirst && !isVisibleInSecond) {
76
- setCurrentDate(new Date(nextStart.getFullYear(), nextStart.getMonth(), 1));
77
- }
78
- }
79
- }, [dateRange, showSingle]);
80
- const today = /* @__PURE__ */ new Date();
81
- today.setHours(0, 0, 0, 0);
82
- const firstMonth = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1);
83
- const secondMonth = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1);
84
- const monthNames = [
85
- "January",
86
- "February",
87
- "March",
88
- "April",
89
- "May",
90
- "June",
91
- "July",
92
- "August",
93
- "September",
94
- "October",
95
- "November",
96
- "December"
97
- ];
98
- const dayNames = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
99
- const generateCalendarDays = (monthDate) => {
100
- const year = monthDate.getFullYear();
101
- const month = monthDate.getMonth();
102
- const firstDay = new Date(year, month, 1);
103
- const lastDay = new Date(year, month + 1, 0);
104
- const daysInMonth = lastDay.getDate();
105
- const startingDayOfWeek = firstDay.getDay();
106
- const days = [];
107
- for (let i = 0; i < startingDayOfWeek; i++) days.push(null);
108
- for (let day = 1; day <= daysInMonth; day++) days.push(new Date(year, month, day));
109
- return days;
110
- };
111
- const isSameDate = (d1, d2) => {
112
- if (!d1 || !d2) return false;
113
- return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth() && d1.getDate() === d2.getDate();
114
- };
115
- const isDateDisabled = (date) => {
116
- if (!date) return false;
117
- const checkDate = new Date(date);
118
- checkDate.setHours(0, 0, 0, 0);
119
- if (disablePastDates && checkDate < today) return true;
120
- if (minDate) {
121
- const m = new Date(minDate);
122
- m.setHours(0, 0, 0, 0);
123
- if (checkDate < m) return true;
124
- }
125
- if (maxDate) {
126
- const m = new Date(maxDate);
127
- m.setHours(0, 0, 0, 0);
128
- if (checkDate > m) return true;
129
- }
130
- return false;
131
- };
132
- const isDateBetweenRange = (date) => {
133
- if (!startDate || !date) return false;
134
- const comp = endDate || hoverDate;
135
- if (!comp) return false;
136
- const s = startDate < comp ? startDate : comp;
137
- const e = startDate < comp ? comp : startDate;
138
- return date > s && date < e;
139
- };
140
- const isDateInRange = (date) => {
141
- if (!startDate || !date) return false;
142
- const comp = endDate || hoverDate;
143
- if (!comp) return false;
144
- const s = startDate < comp ? startDate : comp;
145
- const e = startDate < comp ? comp : startDate;
146
- return date >= s && date <= e;
147
- };
148
- const handleDateClick = (date) => {
149
- if (isDateDisabled(date)) return;
150
- let nextStart = startDate;
151
- let nextEnd = endDate;
152
- const isSame = startDate && dayjs(date).isSame(startDate, "day");
153
- if (!allowSameDates && isSame) {
154
- setStartDate(null);
155
- setEndDate(null);
156
- setIsSelectingEnd(false);
157
- onChangeRef.current(["", ""]);
158
- return;
159
- }
160
- if (!startDate || startDate && endDate) {
161
- nextStart = date;
162
- nextEnd = null;
163
- setStartDate(nextStart);
164
- setEndDate(nextEnd);
165
- setIsSelectingEnd(true);
166
- } else {
167
- if (date < startDate) {
168
- nextEnd = startDate;
169
- nextStart = date;
170
- } else {
171
- nextEnd = date;
172
- }
173
- setStartDate(nextStart);
174
- setEndDate(nextEnd);
175
- setIsSelectingEnd(false);
176
- }
177
- onChangeRef.current([
178
- nextStart ? dayjs(nextStart).format("D MMM, YYYY") : "",
179
- nextEnd ? dayjs(nextEnd).format("D MMM, YYYY") : ""
180
- ]);
181
- };
182
- const handleDateHover = (date) => {
183
- if (isDateDisabled(date)) return;
184
- if (isSelectingEnd && startDate && !endDate) setHoverDate(date);
185
- };
186
- const navigateMonth = (direction) => {
187
- const newDate = new Date(currentDate);
188
- newDate.setMonth(currentDate.getMonth() + direction);
189
- setCurrentDate(newDate);
190
- };
191
- const renderCalendar = (monthDate) => {
192
- const days = generateCalendarDays(monthDate);
193
- const monthName = monthNames[monthDate.getMonth()];
194
- const year = monthDate.getFullYear();
195
- return /* @__PURE__ */ jsxs("div", { className: "tw-flex-1 tw-mb-2", children: [
196
- /* @__PURE__ */ jsx("div", { className: "tw-text-center tw-mb-4", children: /* @__PURE__ */ jsxs("h3", { className: "tw-typography-footNoteBold tw-text-gray-900 tw-m-0", children: [
197
- monthName,
198
- " ",
199
- year
200
- ] }) }),
201
- /* @__PURE__ */ jsx("div", { className: "tw-grid tw-grid-cols-7 tw-mb-2", children: dayNames.map((day) => /* @__PURE__ */ jsx("div", { className: "tw-py-2 tw-text-center tw-typography-caption2 tw-text-gray-500", children: day }, day)) }),
202
- /* @__PURE__ */ jsx("div", { className: "tw-grid tw-grid-cols-7", children: days.map((date, index) => {
203
- if (!date) return /* @__PURE__ */ jsx("div", { className: "tw-h-7" }, index);
204
- const isStart = isSameDate(date, startDate);
205
- const isEnd = isSameDate(date, endDate);
206
- const isInRange = isDateBetweenRange(date);
207
- const isSelected = isDateInRange(date);
208
- const isDisabled = isDateDisabled(date);
209
- const isHovering = isSelectingEnd && hoverDate && isSameDate(date, hoverDate);
210
- let cellClasses = "tw-relative tw-z-20 tw-h-7 tw-w-7 tw-flex tw-items-center tw-justify-center tw-typography-caption1Bold tw-cursor-pointer tw-transition-all ";
211
- if (isDisabled) {
212
- cellClasses += "tw-text-gray-300 tw-cursor-not-allowed ";
213
- } else if (isStart || isEnd) {
214
- cellClasses += "tw-bg-black tw-text-white tw-rounded-full ";
215
- } else if (isInRange) {
216
- cellClasses += "tw-text-gray-900 ";
217
- } else {
218
- cellClasses += "tw-text-gray-700 hover:tw-bg-gray-100 tw-rounded-full ";
219
- }
220
- if (isHovering && !isEnd) {
221
- cellClasses += "tw-border-2 tw-border-gray-400 tw-border-dashed ";
222
- }
223
- return /* @__PURE__ */ jsxs("div", { className: "tw-relative tw-flex tw-justify-center", children: [
224
- isInRange && /* @__PURE__ */ jsx("div", { className: "tw-absolute tw-inset-y-1 tw-inset-x-0 tw-bg-[#f2efec] tw-z-10" }),
225
- isStart && endDate && !isSameDate(startDate, endDate) && /* @__PURE__ */ jsx("div", { className: "tw-absolute tw-inset-y-1 tw-right-0 tw-left-1/2 tw-bg-[#f2efec] tw-z-10" }),
226
- isEnd && startDate && !isSameDate(startDate, endDate) && /* @__PURE__ */ jsx("div", { className: "tw-absolute tw-inset-y-1 tw-left-0 tw-right-1/2 tw-bg-[#f2efec] tw-z-10" }),
227
- /* @__PURE__ */ jsx(
228
- "div",
229
- {
230
- className: cellClasses,
231
- onClick: () => handleDateClick(date),
232
- onMouseEnter: () => handleDateHover(date),
233
- children: date.getDate()
234
- }
235
- )
236
- ] }, date.toISOString());
237
- }) })
238
- ] });
239
- };
240
- return /* @__PURE__ */ jsxs("div", { className: "tw-relative tw-bg-white tw-w-full", children: [
241
- /* @__PURE__ */ jsxs("div", { className: "tw-flex tw-items-center tw-justify-between tw-absolute tw-inset-x-0 tw-top-0 tw-z-30 tw-px-4", children: [
242
- /* @__PURE__ */ jsx(
243
- "div",
244
- {
245
- className: "tw-cursor-pointer tw-p-2 tw-rounded-full hover:tw-bg-gray-100",
246
- onClick: () => navigateMonth(-1),
247
- children: /* @__PURE__ */ jsx(Chevron, { size: "medium" })
248
- }
249
- ),
250
- /* @__PURE__ */ jsx(
251
- "div",
252
- {
253
- className: "tw-cursor-pointer tw-p-2 tw-rounded-full hover:tw-bg-gray-100",
254
- onClick: () => navigateMonth(1),
255
- children: /* @__PURE__ */ jsx(Chevron, { size: "medium", className: "tw-rotate-180" })
256
- }
257
- )
258
- ] }),
259
- /* @__PURE__ */ jsxs("div", { className: "tw-flex tw-gap-8 tw-pt-2", children: [
260
- renderCalendar(firstMonth),
261
- !showSingle && renderCalendar(secondMonth)
262
- ] })
263
- ] });
264
- };
265
- var InternalCalendar_default = memo(InternalCalendar);
266
-
267
- export {
268
- InternalCalendar_default
269
- };
@@ -1,283 +0,0 @@
1
- import {
2
- __objRest,
3
- __spreadProps,
4
- __spreadValues
5
- } from "./chunk-FWCSY2DS.mjs";
6
-
7
- // src/atom/Table/Table.tsx
8
- import * as React from "react";
9
- import { Table as AntTable } from "antd";
10
- import clsx from "clsx";
11
-
12
- // src/atom/Table/Table.module.scss
13
- var Table_module_default = { "tableWrapper": "Table-module__tableWrapper___3cqiD", "isAccordion": "Table-module__isAccordion___-uIs6", "isToolbar": "Table-module__isToolbar___LdS-m", "hasCustomHeaderCell": "Table-module__hasCustomHeaderCell___AtCk8", "table": "Table-module__table___5d7g0", "ant-table-selection-column": "Table-module__ant-table-selection-column___H9vtu", "hasCustomBodyCell": "Table-module__hasCustomBodyCell___sf8j8", "firstRow": "Table-module__firstRow___Xq-Hi", "lastRow": "Table-module__lastRow___ahv4g", "showHoverEffect": "Table-module__showHoverEffect___IyKyO", "columnHeader": "Table-module__columnHeader___Unr6d", "columnHeaderLeft": "Table-module__columnHeaderLeft___mp7pK", "columnHeaderSortArea": "Table-module__columnHeaderSortArea___jrIYo", "columnHeaderLabel": "Table-module__columnHeaderLabel___A-mRu", "columnHeaderSortIcon": "Table-module__columnHeaderSortIcon___mWVZN", "columnHeaderSortIconActive": "Table-module__columnHeaderSortIconActive___wHAqC", "columnHeaderFilterWrapper": "Table-module__columnHeaderFilterWrapper___DnSve", "columnHeaderFilterBtn": "Table-module__columnHeaderFilterBtn___NR7DY", "columnHeaderFilterBtnActive": "Table-module__columnHeaderFilterBtnActive___JdO11", "columnHeaderFilterBadge": "Table-module__columnHeaderFilterBadge___-Q2T2", "columnHeaderFilterDropdown": "Table-module__columnHeaderFilterDropdown___M-fD4" };
14
-
15
- // src/atom/Table/Table.tsx
16
- import { jsx, jsxs } from "react/jsx-runtime";
17
- function buildPagination(pagination, overrides = {}) {
18
- var _a, _b, _c, _d;
19
- if (pagination === false) {
20
- return false;
21
- }
22
- const defaults = {
23
- showSizeChanger: true,
24
- pageSizeOptions: ["10", "25", "50"],
25
- locale: { items_per_page: "" },
26
- // Removes "/ page" text
27
- showTotal: (total, range) => `${range[0]}\u2013${range[1]} of ${total} items`
28
- };
29
- const baseConfig = pagination === true || pagination === void 0 ? defaults : __spreadValues(__spreadValues({}, defaults), pagination);
30
- return __spreadProps(__spreadValues({}, baseConfig), {
31
- total: (_a = overrides.total) != null ? _a : baseConfig.total,
32
- current: (_b = overrides.current) != null ? _b : baseConfig.current,
33
- pageSize: (_c = overrides.pageSize) != null ? _c : baseConfig.pageSize,
34
- onChange: (_d = overrides.onChange) != null ? _d : baseConfig.onChange
35
- });
36
- }
37
- function nextSortOrder(current) {
38
- if (current === void 0) return "ascend";
39
- if (current === "ascend") return "descend";
40
- return void 0;
41
- }
42
- function ColumnHeader({
43
- label,
44
- sortable = false,
45
- sortOrder,
46
- onSortChange,
47
- sortIcon,
48
- filterCount = 0,
49
- filterIcon,
50
- filterContent,
51
- className = ""
52
- }) {
53
- const [filterOpen, setFilterOpen] = React.useState(false);
54
- const wrapperRef = React.useRef(null);
55
- const filterActive = filterCount > 0;
56
- const hasFilter = filterContent !== void 0 && filterIcon !== void 0;
57
- const hasSort = sortable && sortIcon !== void 0;
58
- React.useEffect(() => {
59
- if (!filterOpen) return;
60
- const onOutside = (e) => {
61
- if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {
62
- setFilterOpen(false);
63
- }
64
- };
65
- document.addEventListener("mousedown", onOutside);
66
- return () => document.removeEventListener("mousedown", onOutside);
67
- }, [filterOpen]);
68
- return /* @__PURE__ */ jsxs("div", { className: Table_module_default.columnHeader, ref: wrapperRef, children: [
69
- /* @__PURE__ */ jsx("div", { className: Table_module_default.columnHeaderLeft, children: hasSort ? /* @__PURE__ */ jsxs(
70
- "button",
71
- {
72
- type: "button",
73
- className: Table_module_default.columnHeaderSortArea,
74
- onClick: () => onSortChange == null ? void 0 : onSortChange(nextSortOrder(sortOrder)),
75
- "aria-label": typeof label === "string" ? `Sort by ${label}` : "Sort",
76
- children: [
77
- /* @__PURE__ */ jsx("span", { className: clsx(Table_module_default.columnHeaderLabel, "tw-typography-caption2Bold tw-text-color-text-weak", className), children: label }),
78
- /* @__PURE__ */ jsx(
79
- "span",
80
- {
81
- className: clsx(Table_module_default.columnHeaderSortIcon, {
82
- [Table_module_default.columnHeaderSortIconActive]: sortOrder !== void 0
83
- }),
84
- children: sortIcon
85
- }
86
- )
87
- ]
88
- }
89
- ) : /* @__PURE__ */ jsx("span", { className: clsx(Table_module_default.columnHeaderLabel, "tw-typography-caption2Bold tw-text-color-text-weak", className), children: label }) }),
90
- hasFilter && /* @__PURE__ */ jsxs("div", { className: Table_module_default.columnHeaderFilterWrapper, children: [
91
- /* @__PURE__ */ jsxs(
92
- "button",
93
- {
94
- type: "button",
95
- className: clsx(Table_module_default.columnHeaderFilterBtn, {
96
- [Table_module_default.columnHeaderFilterBtnActive]: filterActive
97
- }),
98
- onClick: () => setFilterOpen((v) => !v),
99
- "aria-label": typeof label === "string" ? `Filter ${label}` : "Filter",
100
- "aria-expanded": filterOpen,
101
- "aria-haspopup": "dialog",
102
- children: [
103
- filterIcon,
104
- filterActive && /* @__PURE__ */ jsx("span", { className: Table_module_default.columnHeaderFilterBadge, children: filterCount })
105
- ]
106
- }
107
- ),
108
- filterOpen && /* @__PURE__ */ jsx("div", { className: Table_module_default.columnHeaderFilterDropdown, role: "dialog", children: filterContent })
109
- ] })
110
- ] });
111
- }
112
- function processColumns(columns, headerCellClassName, bodyCellClassName) {
113
- if (!columns) return void 0;
114
- return columns.map((col) => {
115
- const _a = col, { headerProps, title, onHeaderCell, onCell } = _a, rest = __objRest(_a, ["headerProps", "title", "onHeaderCell", "onCell"]);
116
- const resolvedOnHeaderCell = (column) => {
117
- var _a2;
118
- const base = (_a2 = onHeaderCell == null ? void 0 : onHeaderCell(column)) != null ? _a2 : {};
119
- return __spreadProps(__spreadValues({}, base), {
120
- className: clsx(base.className, headerCellClassName)
121
- });
122
- };
123
- const resolvedOnCell = (record, rowIndex) => {
124
- var _a2;
125
- const base = (_a2 = onCell == null ? void 0 : onCell(record, rowIndex)) != null ? _a2 : {};
126
- return __spreadProps(__spreadValues({}, base), {
127
- className: clsx(base.className, bodyCellClassName)
128
- });
129
- };
130
- const processedTitle = headerProps ? /* @__PURE__ */ jsx(ColumnHeader, __spreadValues({ label: title }, headerProps)) : title;
131
- return __spreadProps(__spreadValues({}, rest), {
132
- title: processedTitle,
133
- onHeaderCell: resolvedOnHeaderCell,
134
- onCell: resolvedOnCell
135
- });
136
- });
137
- }
138
- function Table(props) {
139
- var _b;
140
- const _a = props, {
141
- size = "middle",
142
- variant = "default",
143
- isAccordion = false,
144
- isToolbar = false,
145
- className = "",
146
- pagination,
147
- loading,
148
- total,
149
- current,
150
- pageSize,
151
- onPaginationChange,
152
- columns,
153
- rowSelection,
154
- rowKey = "key",
155
- onRow,
156
- dataSource,
157
- emptyState,
158
- hideHeader,
159
- loadingIndicator,
160
- style,
161
- headerCellClassName,
162
- bodyCellClassName,
163
- rowClassName
164
- } = _a, rest = __objRest(_a, [
165
- "size",
166
- "variant",
167
- "isAccordion",
168
- "isToolbar",
169
- "className",
170
- "pagination",
171
- "loading",
172
- "total",
173
- "current",
174
- "pageSize",
175
- "onPaginationChange",
176
- "columns",
177
- "rowSelection",
178
- "rowKey",
179
- "onRow",
180
- "dataSource",
181
- "emptyState",
182
- "hideHeader",
183
- "loadingIndicator",
184
- "style",
185
- "headerCellClassName",
186
- "bodyCellClassName",
187
- "rowClassName"
188
- ]);
189
- const resolvedPagination = buildPagination(pagination, {
190
- total,
191
- current,
192
- pageSize,
193
- onChange: onPaginationChange
194
- });
195
- const processedColumns = React.useMemo(
196
- () => processColumns(columns, headerCellClassName, bodyCellClassName),
197
- [columns, headerCellClassName, bodyCellClassName]
198
- );
199
- const resolvedRowSelection = React.useMemo(() => {
200
- if (!rowSelection) return void 0;
201
- return __spreadValues({
202
- columnWidth: 48
203
- }, rowSelection);
204
- }, [rowSelection]);
205
- const resolvedOnRow = React.useMemo(() => {
206
- const onChange = resolvedRowSelection == null ? void 0 : resolvedRowSelection.onChange;
207
- if (variant !== "selectable" || !onChange) return onRow;
208
- return (record, index) => {
209
- var _a2;
210
- const base = (_a2 = onRow == null ? void 0 : onRow(record, index)) != null ? _a2 : {};
211
- const getKey = (r, i) => typeof rowKey === "function" ? rowKey(r, i) : r[rowKey];
212
- return __spreadProps(__spreadValues({}, base), {
213
- style: __spreadValues({ cursor: "pointer" }, base.style),
214
- onClick: (e) => {
215
- var _a3, _b2;
216
- (_a3 = base.onClick) == null ? void 0 : _a3.call(base, e);
217
- const key = getKey(record, index);
218
- const current2 = (_b2 = resolvedRowSelection.selectedRowKeys) != null ? _b2 : [];
219
- const isSelected = current2.some((k) => k === key);
220
- const newKeys = isSelected ? current2.filter((k) => k !== key) : [...current2, key];
221
- const newRows = (dataSource != null ? dataSource : []).filter(
222
- (r, idx) => newKeys.some((k) => k === getKey(r, idx))
223
- );
224
- onChange(newKeys, newRows, { type: "single" });
225
- }
226
- });
227
- };
228
- }, [variant, resolvedRowSelection, rowKey, onRow, dataSource]);
229
- return /* @__PURE__ */ jsx(
230
- "div",
231
- {
232
- className: clsx(
233
- Table_module_default.tableWrapper,
234
- Table_module_default.showHoverEffect,
235
- {
236
- [Table_module_default.isAccordion]: isAccordion,
237
- [Table_module_default.isToolbar]: isToolbar,
238
- [Table_module_default.hasCustomHeaderCell]: !!headerCellClassName,
239
- [Table_module_default.hasCustomBodyCell]: !!bodyCellClassName
240
- },
241
- className
242
- ),
243
- style,
244
- "data-testid": "lumina-table",
245
- children: /* @__PURE__ */ jsx(
246
- AntTable,
247
- __spreadProps(__spreadValues({
248
- className: Table_module_default.table,
249
- size,
250
- pagination: resolvedPagination,
251
- columns: processedColumns,
252
- rowSelection: resolvedRowSelection,
253
- rowKey,
254
- onRow: resolvedOnRow,
255
- dataSource,
256
- showHeader: !hideHeader,
257
- locale: {
258
- emptyText: loading && loadingIndicator ? loadingIndicator : loading ? " " : emptyState
259
- }
260
- }, rest), {
261
- loading: loadingIndicator ? { spinning: !!loading && ((_b = dataSource == null ? void 0 : dataSource.length) != null ? _b : 0) > 0, indicator: loadingIndicator } : loading,
262
- rowClassName: (record, index) => {
263
- var _a2;
264
- return clsx(
265
- {
266
- [Table_module_default.firstRow]: index === 0,
267
- [Table_module_default.lastRow]: index === ((_a2 = dataSource == null ? void 0 : dataSource.length) != null ? _a2 : 0) - 1
268
- },
269
- typeof rowClassName === "function" ? rowClassName(record, index) : rowClassName
270
- );
271
- }
272
- })
273
- )
274
- }
275
- );
276
- }
277
- Table.displayName = "Table";
278
- var Table_default = Table;
279
-
280
- export {
281
- Table,
282
- Table_default
283
- };