@indusaction/cms-design-system 0.1.0 → 0.2.0

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.
package/dist/index.cjs CHANGED
@@ -3,26 +3,24 @@
3
3
  var React = require('react');
4
4
  var antd = require('antd');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
+ var reactDom = require('react-dom');
6
7
 
7
8
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
9
 
9
10
  var React__default = /*#__PURE__*/_interopDefault(React);
10
11
 
11
12
  // src/components/Button/Button.tsx
12
- var Button = React__default.default.forwardRef(
13
- function Button2({ variant = "default", size = "middle", children, ...rest }, ref) {
14
- return /* @__PURE__ */ jsxRuntime.jsx(antd.Button, { ref, type: variant, size, ...rest, children });
15
- }
16
- );
13
+ var Button = React__default.default.forwardRef(function Button2({ variant = "default", size = "middle", children, ...rest }, ref) {
14
+ return /* @__PURE__ */ jsxRuntime.jsx(antd.Button, { ref, type: variant, size, ...rest, children });
15
+ });
17
16
  Button.displayName = "Button";
18
-
19
- // src/theme/colors.ts
20
17
  var colors = {
21
18
  brand: {
22
19
  primary: "#596993",
23
20
  primaryHover: "#6B7BA5",
24
21
  primaryActive: "#4A587C",
25
- primaryLight: "#E8EBF2"
22
+ primaryLight: "#E8EBF2",
23
+ accent: "#F69120"
26
24
  },
27
25
  neutral: {
28
26
  white: "#FFFFFF",
@@ -45,32 +43,1627 @@ var colors = {
45
43
  info: "#596993"
46
44
  }
47
45
  };
48
-
49
- // src/theme/theme.ts
46
+ var spacing = {
47
+ none: 0,
48
+ xxs: 4,
49
+ xs: 8,
50
+ sm: 12,
51
+ md: 16,
52
+ lg: 24,
53
+ xl: 32,
54
+ xxl: 48
55
+ };
56
+ var fontSize = {
57
+ xxs: 11,
58
+ xs: 12,
59
+ sm: 14,
60
+ md: 16,
61
+ lg: 20,
62
+ xl: 24,
63
+ xxl: 30
64
+ };
65
+ var breakpoints = {
66
+ xs: 480,
67
+ sm: 576,
68
+ md: 768,
69
+ lg: 992,
70
+ xl: 1200,
71
+ xxl: 1600
72
+ };
50
73
  var theme = {
74
+ algorithm: antd.theme.defaultAlgorithm,
51
75
  token: {
52
76
  colorPrimary: colors.brand.primary,
77
+ colorPrimaryHover: colors.brand.primaryHover,
78
+ colorPrimaryActive: colors.brand.primaryActive,
79
+ colorPrimaryBg: colors.brand.primaryLight,
80
+ colorLink: colors.brand.primary,
53
81
  colorInfo: colors.semantic.info,
54
82
  colorSuccess: colors.semantic.success,
55
83
  colorWarning: colors.semantic.warning,
56
84
  colorError: colors.semantic.error,
57
- colorLink: colors.brand.primary
58
- },
59
- components: {
60
- Button: {
61
- colorPrimary: colors.brand.primary,
62
- colorPrimaryHover: colors.brand.primaryHover,
63
- colorPrimaryActive: colors.brand.primaryActive
64
- }
85
+ paddingXXS: spacing.xxs,
86
+ paddingXS: spacing.xs,
87
+ paddingSM: spacing.sm,
88
+ padding: spacing.md,
89
+ paddingMD: spacing.md,
90
+ paddingLG: spacing.lg,
91
+ paddingXL: spacing.xl,
92
+ marginXXS: spacing.xxs,
93
+ marginXS: spacing.xs,
94
+ marginSM: spacing.sm,
95
+ margin: spacing.md,
96
+ marginMD: spacing.md,
97
+ marginLG: spacing.lg,
98
+ marginXL: spacing.xl,
99
+ marginXXL: spacing.xxl,
100
+ fontSizeSM: fontSize.xs,
101
+ fontSize: fontSize.sm,
102
+ fontSizeLG: fontSize.md,
103
+ fontSizeXL: fontSize.lg,
104
+ fontSizeHeading5: fontSize.md,
105
+ fontSizeHeading4: fontSize.lg,
106
+ fontSizeHeading3: fontSize.xl,
107
+ fontSizeHeading2: fontSize.xxl,
108
+ screenXS: breakpoints.xs,
109
+ screenSM: breakpoints.sm,
110
+ screenMD: breakpoints.md,
111
+ screenLG: breakpoints.lg,
112
+ screenXL: breakpoints.xl,
113
+ screenXXL: breakpoints.xxl
65
114
  }
66
115
  };
67
116
  function ThemeProvider({ children }) {
68
- return /* @__PURE__ */ jsxRuntime.jsx(antd.ConfigProvider, { theme, children });
117
+ return React__default.default.createElement(antd.ConfigProvider, { theme }, children);
118
+ }
119
+ var Tabs = ({ type = "line", ...rest }) => {
120
+ return /* @__PURE__ */ jsxRuntime.jsx(
121
+ antd.ConfigProvider,
122
+ {
123
+ theme: {
124
+ components: {
125
+ Tabs: {
126
+ titleFontSizeSM: fontSize.sm,
127
+ titleFontSize: fontSize.md,
128
+ titleFontSizeLG: fontSize.lg
129
+ }
130
+ }
131
+ },
132
+ children: /* @__PURE__ */ jsxRuntime.jsx(antd.Tabs, { type, ...rest })
133
+ }
134
+ );
135
+ };
136
+ Tabs.displayName = "Tabs";
137
+ var DropdownButton = ({
138
+ children,
139
+ ...rest
140
+ }) => {
141
+ return /* @__PURE__ */ jsxRuntime.jsx(
142
+ antd.ConfigProvider,
143
+ {
144
+ theme: {
145
+ components: {
146
+ Dropdown: {
147
+ paddingXXS: spacing.xxs,
148
+ paddingXS: spacing.xs
149
+ }
150
+ }
151
+ },
152
+ children: /* @__PURE__ */ jsxRuntime.jsx(antd.Dropdown.Button, { ...rest, children })
153
+ }
154
+ );
155
+ };
156
+ DropdownButton.displayName = "Dropdown.Button";
157
+ var Dropdown = ({ children, ...rest }) => {
158
+ return /* @__PURE__ */ jsxRuntime.jsx(
159
+ antd.ConfigProvider,
160
+ {
161
+ theme: {
162
+ components: {
163
+ Dropdown: {
164
+ paddingXXS: spacing.xxs,
165
+ paddingXS: spacing.xs
166
+ }
167
+ }
168
+ },
169
+ children: /* @__PURE__ */ jsxRuntime.jsx(antd.Dropdown, { ...rest, children })
170
+ }
171
+ );
172
+ };
173
+ Dropdown.Button = DropdownButton;
174
+ Dropdown.displayName = "Dropdown";
175
+ function DetailsSkeleton({ rows = 5, avatar = false }) {
176
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { "aria-busy": "true", "aria-live": "polite", children: [
177
+ avatar ? /* @__PURE__ */ jsxRuntime.jsxs(
178
+ "div",
179
+ {
180
+ style: {
181
+ display: "flex",
182
+ alignItems: "center",
183
+ gap: spacing.md,
184
+ marginBottom: spacing.lg
185
+ },
186
+ children: [
187
+ /* @__PURE__ */ jsxRuntime.jsx(antd.Skeleton.Avatar, { active: true, size: 48 }),
188
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
189
+ /* @__PURE__ */ jsxRuntime.jsx(
190
+ antd.Skeleton.Input,
191
+ {
192
+ active: true,
193
+ size: "small",
194
+ style: { width: 180, maxWidth: "70%", height: 16, marginBottom: spacing.xs }
195
+ }
196
+ ),
197
+ /* @__PURE__ */ jsxRuntime.jsx(
198
+ antd.Skeleton.Input,
199
+ {
200
+ active: true,
201
+ size: "small",
202
+ style: { width: 120, maxWidth: "50%", height: 12 }
203
+ }
204
+ )
205
+ ] })
206
+ ]
207
+ }
208
+ ) : null,
209
+ Array.from({ length: rows }, (_, index) => /* @__PURE__ */ jsxRuntime.jsxs(
210
+ "div",
211
+ {
212
+ style: {
213
+ display: "flex",
214
+ alignItems: "center",
215
+ gap: spacing.lg,
216
+ marginBottom: spacing.md
217
+ },
218
+ children: [
219
+ /* @__PURE__ */ jsxRuntime.jsx(
220
+ antd.Skeleton.Input,
221
+ {
222
+ active: true,
223
+ size: "small",
224
+ style: { width: 88, height: 12, flex: "0 0 88px" }
225
+ }
226
+ ),
227
+ /* @__PURE__ */ jsxRuntime.jsx(
228
+ antd.Skeleton.Input,
229
+ {
230
+ active: true,
231
+ size: "small",
232
+ style: {
233
+ width: `${58 + index % 3 * 14}%`,
234
+ maxWidth: 280,
235
+ height: 14,
236
+ minWidth: 0,
237
+ flex: 1
238
+ }
239
+ }
240
+ )
241
+ ]
242
+ },
243
+ index
244
+ ))
245
+ ] });
246
+ }
247
+ DetailsSkeleton.displayName = "Skeleton.Details";
248
+ var Skeleton = ({ active = true, ...rest }) => {
249
+ return /* @__PURE__ */ jsxRuntime.jsx(antd.Skeleton, { active, ...rest });
250
+ };
251
+ Skeleton.Button = antd.Skeleton.Button;
252
+ Skeleton.Avatar = antd.Skeleton.Avatar;
253
+ Skeleton.Input = antd.Skeleton.Input;
254
+ Skeleton.Image = antd.Skeleton.Image;
255
+ Skeleton.Node = antd.Skeleton.Node;
256
+ Skeleton.Details = DetailsSkeleton;
257
+ Skeleton.displayName = "Skeleton";
258
+ var DEFAULT_PAGE_SIZE = 10;
259
+ function isColumnGroup(column) {
260
+ return "children" in column && Array.isArray(column.children);
261
+ }
262
+ function getByDataIndex(record, dataIndex) {
263
+ if (dataIndex == null) return void 0;
264
+ const path = Array.isArray(dataIndex) ? dataIndex : [dataIndex];
265
+ let current = record;
266
+ for (const key of path) {
267
+ if (current == null || typeof current !== "object") return void 0;
268
+ current = current[key];
269
+ }
270
+ return current;
271
+ }
272
+ function compareValues(a, b) {
273
+ if (a == null && b == null) return 0;
274
+ if (a == null) return -1;
275
+ if (b == null) return 1;
276
+ if (typeof a === "number" && typeof b === "number") return a - b;
277
+ return String(a).localeCompare(String(b), void 0, {
278
+ numeric: true,
279
+ sensitivity: "base"
280
+ });
281
+ }
282
+ function flattenColumns(columns) {
283
+ const result = [];
284
+ for (const column of columns) {
285
+ if (isColumnGroup(column)) {
286
+ result.push(...flattenColumns(column.children));
287
+ } else {
288
+ result.push(column);
289
+ }
290
+ }
291
+ return result;
292
+ }
293
+ function matchesSearch(record, search, columns) {
294
+ const query = search.trim().toLowerCase();
295
+ if (!query) return true;
296
+ const leaves = flattenColumns(columns);
297
+ const optedIn = leaves.filter((column) => column.searchable === true);
298
+ const pool = optedIn.length > 0 ? optedIn : leaves.filter((column) => column.searchable !== false);
299
+ return pool.some((column) => {
300
+ const value = getByDataIndex(record, column.dataIndex);
301
+ if (value == null) return false;
302
+ return String(value).toLowerCase().includes(query);
303
+ });
304
+ }
305
+ function defaultCompare(dataIndex) {
306
+ return (a, b) => compareValues(getByDataIndex(a, dataIndex), getByDataIndex(b, dataIndex));
307
+ }
308
+ function enhanceColumnsForClient(columns) {
309
+ return columns.map((column) => {
310
+ if (isColumnGroup(column)) {
311
+ return { ...column, children: enhanceColumnsForClient(column.children) };
312
+ }
313
+ const next = { ...column };
314
+ if (next.sorter === true && next.dataIndex != null) {
315
+ next.sorter = defaultCompare(next.dataIndex);
316
+ }
317
+ if (next.filters && !next.onFilter && next.dataIndex != null) {
318
+ next.onFilter = (value, record) => String(getByDataIndex(record, next.dataIndex)) === String(value);
319
+ }
320
+ return next;
321
+ });
322
+ }
323
+ function adaptColumnsForServer(columns) {
324
+ return columns.map((column) => {
325
+ if (isColumnGroup(column)) {
326
+ return { ...column, children: adaptColumnsForServer(column.children) };
327
+ }
328
+ const next = { ...column };
329
+ if (typeof next.sorter === "function") {
330
+ next.sorter = true;
331
+ } else if (next.sorter && typeof next.sorter === "object" && "compare" in next.sorter) {
332
+ const { compare: _compare, ...rest } = next.sorter;
333
+ next.sorter = Object.keys(rest).length > 0 ? rest : true;
334
+ }
335
+ if (next.onFilter) {
336
+ delete next.onFilter;
337
+ }
338
+ return next;
339
+ });
340
+ }
341
+ var SKELETON_WIDTHS = [72, 88, 64, 80, 56];
342
+ function skeletonizeColumns(columns) {
343
+ return columns.map((column, index) => {
344
+ if (isColumnGroup(column)) {
345
+ return { ...column, children: skeletonizeColumns(column.children) };
346
+ }
347
+ const widthPct = SKELETON_WIDTHS[index % SKELETON_WIDTHS.length];
348
+ return {
349
+ ...column,
350
+ sorter: false,
351
+ filters: void 0,
352
+ onFilter: void 0,
353
+ filterDropdown: void 0,
354
+ render: () => /* @__PURE__ */ jsxRuntime.jsx(
355
+ Skeleton.Input,
356
+ {
357
+ active: true,
358
+ size: "small",
359
+ style: { width: `${widthPct}%`, height: 14, minWidth: 40 }
360
+ }
361
+ )
362
+ };
363
+ });
364
+ }
365
+ function isTableLoading(loading) {
366
+ if (loading == null) return false;
367
+ if (typeof loading === "boolean") return loading;
368
+ return loading.spinning !== false;
369
+ }
370
+ function firstSorter(sorter) {
371
+ return Array.isArray(sorter) ? sorter[0] : sorter;
372
+ }
373
+ function getTableLayout() {
374
+ if (typeof window === "undefined") {
375
+ return { isPhone: false, isTablet: false };
376
+ }
377
+ const width = window.innerWidth;
378
+ return {
379
+ isPhone: width < breakpoints.md,
380
+ isTablet: width >= breakpoints.md && width < breakpoints.lg
381
+ };
382
+ }
383
+ function useTableLayout() {
384
+ const [layout, setLayout] = React.useState(getTableLayout);
385
+ React.useEffect(() => {
386
+ const phoneQuery = window.matchMedia(`(max-width: ${breakpoints.md - 1}px)`);
387
+ const tabletQuery = window.matchMedia(
388
+ `(min-width: ${breakpoints.md}px) and (max-width: ${breakpoints.lg - 1}px)`
389
+ );
390
+ const update = () => setLayout(getTableLayout());
391
+ update();
392
+ phoneQuery.addEventListener("change", update);
393
+ tabletQuery.addEventListener("change", update);
394
+ return () => {
395
+ phoneQuery.removeEventListener("change", update);
396
+ tabletQuery.removeEventListener("change", update);
397
+ };
398
+ }, []);
399
+ return layout;
400
+ }
401
+ function resolveSearchConfig(search, mode) {
402
+ if (search === false) return { enabled: false };
403
+ const config = search === true || search == null ? {} : search;
404
+ return {
405
+ enabled: true,
406
+ placeholder: "Search",
407
+ debounceMs: mode === "server" ? 300 : 0,
408
+ ...config
409
+ };
410
+ }
411
+ function Table({
412
+ columns = [],
413
+ dataSource,
414
+ mode = "client",
415
+ search = true,
416
+ pagination,
417
+ onChange,
418
+ onQueryChange,
419
+ scroll,
420
+ size,
421
+ loading = false,
422
+ rowKey,
423
+ ...rest
424
+ }) {
425
+ const { isPhone, isTablet } = useTableLayout();
426
+ const paginationObj = pagination === false ? void 0 : pagination;
427
+ const searchConfig = resolveSearchConfig(search, mode);
428
+ const [query, setQuery] = React.useState(() => ({
429
+ search: searchConfig.enabled && (searchConfig.value ?? searchConfig.defaultValue) || "",
430
+ page: paginationObj?.current ?? 1,
431
+ pageSize: paginationObj?.pageSize ?? DEFAULT_PAGE_SIZE,
432
+ filters: {},
433
+ sortOrder: null
434
+ }));
435
+ const [inputSearch, setInputSearch] = React.useState(query.search);
436
+ const [clientFilteredCount, setClientFilteredCount] = React.useState(null);
437
+ const queryRef = React.useRef(query);
438
+ queryRef.current = query;
439
+ const onQueryChangeRef = React.useRef(onQueryChange);
440
+ onQueryChangeRef.current = onQueryChange;
441
+ const searchOnChangeRef = React.useRef(
442
+ searchConfig.enabled ? searchConfig.onChange : void 0
443
+ );
444
+ searchOnChangeRef.current = searchConfig.enabled ? searchConfig.onChange : void 0;
445
+ const debounceMs = searchConfig.enabled ? searchConfig.debounceMs ?? 0 : 0;
446
+ const debounceTimer = React.useRef(null);
447
+ const controlledSearch = searchConfig.enabled ? searchConfig.value : void 0;
448
+ React.useEffect(() => {
449
+ if (controlledSearch === void 0) return;
450
+ setInputSearch(controlledSearch);
451
+ setQuery(
452
+ (prev) => prev.search === controlledSearch ? prev : { ...prev, search: controlledSearch }
453
+ );
454
+ }, [controlledSearch]);
455
+ React.useEffect(() => {
456
+ if (paginationObj?.current != null) {
457
+ setQuery(
458
+ (prev) => prev.page === paginationObj.current ? prev : { ...prev, page: paginationObj.current }
459
+ );
460
+ }
461
+ }, [paginationObj?.current]);
462
+ React.useEffect(() => {
463
+ if (paginationObj?.pageSize != null) {
464
+ setQuery(
465
+ (prev) => prev.pageSize === paginationObj.pageSize ? prev : { ...prev, pageSize: paginationObj.pageSize }
466
+ );
467
+ }
468
+ }, [paginationObj?.pageSize]);
469
+ React.useEffect(() => {
470
+ return () => {
471
+ if (debounceTimer.current) clearTimeout(debounceTimer.current);
472
+ };
473
+ }, []);
474
+ const resolvedQuery = {
475
+ ...query,
476
+ search: controlledSearch ?? query.search,
477
+ page: paginationObj?.current ?? query.page,
478
+ pageSize: paginationObj?.pageSize ?? query.pageSize
479
+ };
480
+ const emitQuery = React.useCallback((next) => {
481
+ setQuery(next);
482
+ queryRef.current = next;
483
+ onQueryChangeRef.current?.(next);
484
+ }, []);
485
+ const commitSearch = React.useCallback(
486
+ (value, immediate = false) => {
487
+ const run = () => {
488
+ searchOnChangeRef.current?.(value);
489
+ emitQuery({ ...queryRef.current, search: value, page: 1 });
490
+ };
491
+ if (debounceTimer.current) {
492
+ clearTimeout(debounceTimer.current);
493
+ debounceTimer.current = null;
494
+ }
495
+ if (immediate || debounceMs <= 0) {
496
+ run();
497
+ return;
498
+ }
499
+ debounceTimer.current = setTimeout(run, debounceMs);
500
+ },
501
+ [debounceMs, emitQuery]
502
+ );
503
+ const rows = React.useMemo(() => {
504
+ const source = dataSource ?? [];
505
+ if (mode === "server" || !searchConfig.enabled) return source;
506
+ return source.filter((record) => matchesSearch(record, resolvedQuery.search, columns));
507
+ }, [columns, dataSource, mode, resolvedQuery.search, searchConfig.enabled]);
508
+ React.useEffect(() => {
509
+ setClientFilteredCount(null);
510
+ }, [resolvedQuery.search, dataSource]);
511
+ const resolvedColumns = React.useMemo(
512
+ () => mode === "server" ? adaptColumnsForServer(columns) : enhanceColumnsForClient(columns),
513
+ [columns, mode]
514
+ );
515
+ const tableLoading = isTableLoading(loading);
516
+ const skeletonRowCount = resolvedQuery.pageSize || DEFAULT_PAGE_SIZE;
517
+ const displayColumns = React.useMemo(
518
+ () => tableLoading ? skeletonizeColumns(resolvedColumns) : resolvedColumns,
519
+ [resolvedColumns, tableLoading]
520
+ );
521
+ const displayRows = React.useMemo(() => {
522
+ if (!tableLoading) return rows;
523
+ return Array.from({ length: skeletonRowCount }, (_, index) => ({
524
+ __skeletonKey: `skeleton-${index}`
525
+ }));
526
+ }, [rows, skeletonRowCount, tableLoading]);
527
+ const displayRowKey = tableLoading ? (record) => String(record.__skeletonKey) : rowKey;
528
+ const paginationTotal = mode === "server" ? paginationObj?.total ?? rows.length : clientFilteredCount ?? rows.length;
529
+ const resolvedPagination = React.useMemo(() => {
530
+ if (pagination === false) return false;
531
+ const merged = {
532
+ showSizeChanger: true,
533
+ showQuickJumper: true,
534
+ pageSizeOptions: ["10", "20", "50"],
535
+ showTotal: (total, range) => `${range[0]}\u2013${range[1]} of ${total}`,
536
+ ...paginationObj,
537
+ current: resolvedQuery.page,
538
+ pageSize: resolvedQuery.pageSize,
539
+ style: { display: "none" }
540
+ };
541
+ if (mode === "server") {
542
+ merged.total = paginationTotal;
543
+ }
544
+ return merged;
545
+ }, [
546
+ mode,
547
+ pagination,
548
+ paginationObj,
549
+ paginationTotal,
550
+ resolvedQuery.page,
551
+ resolvedQuery.pageSize
552
+ ]);
553
+ const handleTableChange = (nextPagination, filters, sorter, extra) => {
554
+ const active = firstSorter(sorter);
555
+ const next = {
556
+ ...queryRef.current,
557
+ page: extra.action === "paginate" ? nextPagination.current ?? 1 : 1,
558
+ pageSize: nextPagination.pageSize ?? queryRef.current.pageSize,
559
+ filters,
560
+ sortField: active?.field,
561
+ sortOrder: active?.order ?? null
562
+ };
563
+ if (mode === "client") {
564
+ setClientFilteredCount(extra.currentDataSource.length);
565
+ }
566
+ emitQuery(next);
567
+ onChange?.(nextPagination, filters, sorter, extra);
568
+ };
569
+ const handlePaginationChange = (page, pageSize) => {
570
+ const next = {
571
+ ...queryRef.current,
572
+ page,
573
+ pageSize
574
+ };
575
+ emitQuery(next);
576
+ onChange?.(
577
+ { current: page, pageSize, total: paginationTotal },
578
+ next.filters,
579
+ {
580
+ field: next.sortField,
581
+ order: next.sortOrder
582
+ },
583
+ { currentDataSource: rows, action: "paginate" }
584
+ );
585
+ };
586
+ const bothControls = searchConfig.enabled && pagination !== false;
587
+ const compactPager = isPhone || isTablet;
588
+ return /* @__PURE__ */ jsxRuntime.jsx(
589
+ antd.ConfigProvider,
590
+ {
591
+ theme: {
592
+ components: {
593
+ Table: {
594
+ headerBg: colors.neutral.gray50
595
+ }
596
+ }
597
+ },
598
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { minWidth: 0, width: "100%" }, children: [
599
+ searchConfig.enabled || pagination !== false ? /* @__PURE__ */ jsxRuntime.jsxs(
600
+ "div",
601
+ {
602
+ style: isPhone ? {
603
+ display: "flex",
604
+ flexDirection: "column",
605
+ alignItems: "stretch",
606
+ gap: spacing.sm,
607
+ marginBottom: spacing.md
608
+ } : {
609
+ display: "flex",
610
+ alignItems: "center",
611
+ justifyContent: bothControls ? "space-between" : searchConfig.enabled ? "flex-start" : "flex-end",
612
+ gap: spacing.md,
613
+ flexWrap: isTablet ? "wrap" : "nowrap",
614
+ marginBottom: spacing.md
615
+ },
616
+ children: [
617
+ searchConfig.enabled ? /* @__PURE__ */ jsxRuntime.jsx(
618
+ antd.Input.Search,
619
+ {
620
+ allowClear: true,
621
+ disabled: tableLoading,
622
+ placeholder: searchConfig.placeholder,
623
+ value: inputSearch,
624
+ onChange: (event) => {
625
+ const value = event.target.value;
626
+ setInputSearch(value);
627
+ commitSearch(value);
628
+ },
629
+ onSearch: (value) => {
630
+ setInputSearch(value);
631
+ commitSearch(value, true);
632
+ },
633
+ style: isPhone ? { width: "100%" } : isTablet ? {
634
+ width: 240,
635
+ maxWidth: "100%",
636
+ flex: "0 1 240px",
637
+ minWidth: 160
638
+ } : { width: 320, flex: "0 0 320px", maxWidth: "100%" }
639
+ }
640
+ ) : null,
641
+ pagination !== false ? /* @__PURE__ */ jsxRuntime.jsx(
642
+ "div",
643
+ {
644
+ style: {
645
+ display: "flex",
646
+ justifyContent: isPhone ? "center" : "flex-end",
647
+ maxWidth: "100%",
648
+ minWidth: 0,
649
+ overflowX: "auto",
650
+ flex: isPhone ? void 0 : "1 1 auto"
651
+ },
652
+ children: /* @__PURE__ */ jsxRuntime.jsx(
653
+ antd.Pagination,
654
+ {
655
+ current: resolvedQuery.page,
656
+ pageSize: resolvedQuery.pageSize,
657
+ total: paginationTotal,
658
+ size: compactPager ? "small" : void 0,
659
+ simple: isPhone,
660
+ showLessItems: compactPager,
661
+ responsive: true,
662
+ showSizeChanger: paginationObj?.showSizeChanger ?? !isPhone,
663
+ showQuickJumper: paginationObj?.showQuickJumper ?? !compactPager,
664
+ pageSizeOptions: paginationObj?.pageSizeOptions ?? ["10", "20", "50"],
665
+ showTotal: paginationObj?.showTotal ?? (isPhone ? (total, range) => `${range[0]}\u2013${range[1]} of ${total}` : compactPager ? void 0 : (total, range) => `${range[0]}\u2013${range[1]} of ${total}`),
666
+ disabled: paginationObj?.disabled || tableLoading,
667
+ onChange: handlePaginationChange,
668
+ style: { margin: 0, flexShrink: 0 }
669
+ }
670
+ )
671
+ }
672
+ ) : null
673
+ ]
674
+ }
675
+ ) : null,
676
+ /* @__PURE__ */ jsxRuntime.jsx(
677
+ antd.Table,
678
+ {
679
+ ...rest,
680
+ size: size ?? (isPhone ? "small" : "middle"),
681
+ scroll: { x: "max-content", ...scroll },
682
+ columns: displayColumns,
683
+ dataSource: displayRows,
684
+ rowKey: displayRowKey,
685
+ pagination: resolvedPagination,
686
+ onChange: handleTableChange
687
+ }
688
+ )
689
+ ] })
690
+ }
691
+ );
692
+ }
693
+ Table.displayName = "Table";
694
+ var Tag = React__default.default.forwardRef(function Tag2({ children, ...rest }, ref) {
695
+ return /* @__PURE__ */ jsxRuntime.jsx(antd.Tag, { ref, ...rest, children });
696
+ });
697
+ var { Link: AntLink } = antd.Typography;
698
+ var Link = React__default.default.forwardRef(function Link2({ children, ...rest }, ref) {
699
+ return /* @__PURE__ */ jsxRuntime.jsx(AntLink, { ref, ...rest, children });
700
+ });
701
+ var Card = React__default.default.forwardRef(
702
+ ({
703
+ title,
704
+ description,
705
+ tags,
706
+ extraInfo,
707
+ ctas,
708
+ layout = "inline",
709
+ children,
710
+ className = "",
711
+ loading = false,
712
+ loadingRows = 5,
713
+ ...rest
714
+ }, ref) => {
715
+ return /* @__PURE__ */ jsxRuntime.jsx(
716
+ antd.Card,
717
+ {
718
+ ref,
719
+ className: `cms-card cms-card-${layout} ${className}`,
720
+ ...rest,
721
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cms-card-content", children: [
722
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cms-card-main", children: [
723
+ title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cms-card-title", children: title }),
724
+ description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cms-card-description", children: description }),
725
+ tags && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cms-card-tags", children: tags }),
726
+ extraInfo && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cms-card-extra-info", children: extraInfo }),
727
+ loading ? /* @__PURE__ */ jsxRuntime.jsx(Skeleton.Details, { rows: loadingRows }) : children
728
+ ] }),
729
+ ctas && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cms-card-ctas", children: ctas })
730
+ ] })
731
+ }
732
+ );
733
+ }
734
+ );
735
+ Card.displayName = "Card";
736
+ var Modal = ({ children, ...rest }) => {
737
+ return /* @__PURE__ */ jsxRuntime.jsx(antd.Modal, { ...rest, children });
738
+ };
739
+ Modal.info = antd.Modal.info;
740
+ Modal.success = antd.Modal.success;
741
+ Modal.error = antd.Modal.error;
742
+ Modal.warning = antd.Modal.warning;
743
+ Modal.warn = antd.Modal.warn;
744
+ Modal.confirm = antd.Modal.confirm;
745
+ Modal.destroyAll = antd.Modal.destroyAll;
746
+ Modal.config = antd.Modal.config;
747
+ Modal.useModal = antd.Modal.useModal;
748
+ Modal.displayName = "Modal";
749
+ var { Text, Title } = antd.Typography;
750
+ function getInitials(name) {
751
+ const parts = name.trim().split(/\s+/).filter(Boolean);
752
+ if (parts.length === 0) return "";
753
+ if (parts.length === 1) return parts[0].charAt(0).toUpperCase();
754
+ return `${parts[0].charAt(0)}${parts[parts.length - 1].charAt(0)}`.toUpperCase();
755
+ }
756
+ var Header = React__default.default.forwardRef(
757
+ ({
758
+ title,
759
+ description,
760
+ subtitle,
761
+ breadcrumbs,
762
+ actions,
763
+ extra,
764
+ leading,
765
+ user,
766
+ userMenu,
767
+ onLogout,
768
+ sticky = true,
769
+ className,
770
+ style
771
+ }, ref) => {
772
+ const descriptionText = description ?? subtitle;
773
+ const hasActions = Boolean(actions?.length || extra || user);
774
+ const defaultUserItems = [
775
+ {
776
+ key: "profile",
777
+ label: user?.name,
778
+ disabled: true
779
+ },
780
+ ...user?.role ? [{ key: "role", label: user.role, disabled: true }] : [],
781
+ ...onLogout ? [{ type: "divider" }, { key: "logout", label: "Logout", danger: true }] : []
782
+ ];
783
+ const menu = user ? userMenu ?? {
784
+ items: defaultUserItems,
785
+ onClick: ({ key }) => {
786
+ if (key === "logout") onLogout?.();
787
+ }
788
+ } : void 0;
789
+ const breadcrumbItems = breadcrumbs?.map((item) => ({
790
+ title: item.href || item.onClick ? /* @__PURE__ */ jsxRuntime.jsx(
791
+ "a",
792
+ {
793
+ href: item.href ?? "#",
794
+ onClick: (event) => {
795
+ if (!item.href) event.preventDefault();
796
+ item.onClick?.();
797
+ },
798
+ children: item.title
799
+ }
800
+ ) : item.title
801
+ }));
802
+ return /* @__PURE__ */ jsxRuntime.jsxs(
803
+ "header",
804
+ {
805
+ ref,
806
+ className: ["cms-ds-header", className].filter(Boolean).join(" "),
807
+ style: {
808
+ display: "flex",
809
+ alignItems: "flex-start",
810
+ justifyContent: "space-between",
811
+ gap: spacing.lg,
812
+ flexWrap: "nowrap",
813
+ padding: `${spacing.lg}px ${spacing.xl}px`,
814
+ background: colors.neutral.white,
815
+ borderBottom: `1px solid ${colors.neutral.gray200}`,
816
+ position: sticky ? "sticky" : void 0,
817
+ top: sticky ? 0 : void 0,
818
+ zIndex: sticky ? 20 : void 0,
819
+ ...style
820
+ },
821
+ children: [
822
+ /* @__PURE__ */ jsxRuntime.jsxs(
823
+ "div",
824
+ {
825
+ style: {
826
+ display: "flex",
827
+ alignItems: "flex-start",
828
+ gap: spacing.sm,
829
+ flex: "1 1 auto",
830
+ minWidth: 0
831
+ },
832
+ children: [
833
+ leading ? /* @__PURE__ */ jsxRuntime.jsx(
834
+ "div",
835
+ {
836
+ style: {
837
+ flexShrink: 0,
838
+ display: "flex",
839
+ alignItems: "center",
840
+ paddingTop: 2
841
+ },
842
+ children: leading
843
+ }
844
+ ) : null,
845
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [
846
+ breadcrumbItems && breadcrumbItems.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
847
+ antd.Breadcrumb,
848
+ {
849
+ items: breadcrumbItems,
850
+ style: {
851
+ fontSize: fontSize.xs,
852
+ marginBottom: spacing.xs
853
+ }
854
+ }
855
+ ) : null,
856
+ title ? /* @__PURE__ */ jsxRuntime.jsx(
857
+ Title,
858
+ {
859
+ level: 3,
860
+ ellipsis: { tooltip: typeof title === "string" ? title : void 0 },
861
+ style: {
862
+ margin: 0,
863
+ color: colors.neutral.gray900,
864
+ fontSize: fontSize.xl,
865
+ lineHeight: "32px",
866
+ fontWeight: 600
867
+ },
868
+ children: title
869
+ }
870
+ ) : null,
871
+ descriptionText ? /* @__PURE__ */ jsxRuntime.jsx(
872
+ Text,
873
+ {
874
+ style: {
875
+ display: "block",
876
+ marginTop: spacing.xxs,
877
+ color: colors.neutral.gray600,
878
+ fontSize: fontSize.sm,
879
+ lineHeight: "22px",
880
+ maxWidth: 720
881
+ },
882
+ children: descriptionText
883
+ }
884
+ ) : null
885
+ ] })
886
+ ]
887
+ }
888
+ ),
889
+ hasActions ? /* @__PURE__ */ jsxRuntime.jsxs(
890
+ "div",
891
+ {
892
+ className: "cms-ds-header-actions",
893
+ style: {
894
+ display: "flex",
895
+ alignItems: "center",
896
+ justifyContent: "flex-end",
897
+ gap: spacing.sm,
898
+ flex: "0 0 auto",
899
+ flexWrap: "wrap",
900
+ paddingTop: title ? 2 : 0
901
+ },
902
+ children: [
903
+ extra,
904
+ actions?.map((action) => /* @__PURE__ */ jsxRuntime.jsx(
905
+ Button,
906
+ {
907
+ variant: action.variant ?? "default",
908
+ icon: action.icon,
909
+ onClick: action.onClick,
910
+ href: action.href,
911
+ disabled: action.disabled,
912
+ danger: action.danger,
913
+ children: action.label
914
+ },
915
+ action.key
916
+ )),
917
+ user && menu ? /* @__PURE__ */ jsxRuntime.jsx(Dropdown, { menu, trigger: ["click"], placement: "bottomRight", children: /* @__PURE__ */ jsxRuntime.jsx(
918
+ "button",
919
+ {
920
+ type: "button",
921
+ "aria-label": user.name,
922
+ style: {
923
+ display: "flex",
924
+ alignItems: "center",
925
+ gap: spacing.xs,
926
+ border: "none",
927
+ background: "transparent",
928
+ cursor: "pointer",
929
+ padding: spacing.xxs,
930
+ borderRadius: 999,
931
+ flexShrink: 0
932
+ },
933
+ children: /* @__PURE__ */ jsxRuntime.jsx(
934
+ antd.Avatar,
935
+ {
936
+ size: 36,
937
+ src: user.avatarSrc,
938
+ alt: user.name,
939
+ style: {
940
+ backgroundColor: colors.brand.primary,
941
+ color: colors.neutral.white,
942
+ fontWeight: 600,
943
+ fontSize: fontSize.xs
944
+ },
945
+ children: getInitials(user.name)
946
+ }
947
+ )
948
+ }
949
+ ) }) : null
950
+ ]
951
+ }
952
+ ) : null,
953
+ /* @__PURE__ */ jsxRuntime.jsx("style", { children: `@media (max-width: ${breakpoints.md - 1}px) {
954
+ .cms-ds-header { flex-wrap: wrap; }
955
+ .cms-ds-header-actions { width: 100%; justify-content: flex-start; }
956
+ }` })
957
+ ]
958
+ }
959
+ );
960
+ }
961
+ );
962
+ Header.displayName = "Header";
963
+
964
+ // src/assets/indusActionLogo.ts
965
+ var indusActionLogo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEu2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI1LTA0LTIzPC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjYwYThkMzVlLTM2NDMtNDg2Ni05NjYxLWY4NTI2N2ZjNGEyNTwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5Mb2dvX1VwZGF0ZWQgLSAxPC9yZGY6bGk+CiAgIDwvcmRmOkFsdD4KICA8L2RjOnRpdGxlPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiBy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";
966
+ function LogoutIcon({ size = 14, className, style }) {
967
+ return /* @__PURE__ */ jsxRuntime.jsxs(
968
+ "svg",
969
+ {
970
+ width: size,
971
+ height: size,
972
+ viewBox: "0 0 24 24",
973
+ fill: "none",
974
+ stroke: "currentColor",
975
+ strokeWidth: "2",
976
+ strokeLinecap: "round",
977
+ strokeLinejoin: "round",
978
+ "aria-hidden": "true",
979
+ className,
980
+ style,
981
+ children: [
982
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" }),
983
+ /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "16 17 21 12 16 7" }),
984
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "21", y1: "12", x2: "9", y2: "12" })
985
+ ]
986
+ }
987
+ );
988
+ }
989
+ function CollapseIcon({
990
+ collapsed,
991
+ size = 14,
992
+ className,
993
+ style
994
+ }) {
995
+ return /* @__PURE__ */ jsxRuntime.jsx(
996
+ "svg",
997
+ {
998
+ width: size,
999
+ height: size,
1000
+ viewBox: "0 0 24 24",
1001
+ fill: "none",
1002
+ stroke: "currentColor",
1003
+ strokeWidth: "2",
1004
+ strokeLinecap: "round",
1005
+ strokeLinejoin: "round",
1006
+ "aria-hidden": "true",
1007
+ className,
1008
+ style: {
1009
+ transform: collapsed ? "rotate(180deg)" : void 0,
1010
+ ...style
1011
+ },
1012
+ children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "15 18 9 12 15 6" })
1013
+ }
1014
+ );
1015
+ }
1016
+ function MenuIcon({ size = 18, className, style }) {
1017
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1018
+ "svg",
1019
+ {
1020
+ width: size,
1021
+ height: size,
1022
+ viewBox: "0 0 24 24",
1023
+ fill: "none",
1024
+ stroke: "currentColor",
1025
+ strokeWidth: "2",
1026
+ strokeLinecap: "round",
1027
+ "aria-hidden": "true",
1028
+ className,
1029
+ style,
1030
+ children: [
1031
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "3", y1: "6", x2: "21", y2: "6" }),
1032
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "3", y1: "12", x2: "21", y2: "12" }),
1033
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "3", y1: "18", x2: "21", y2: "18" })
1034
+ ]
1035
+ }
1036
+ );
1037
+ }
1038
+ function CloseIcon({ size = 14, className, style }) {
1039
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1040
+ "svg",
1041
+ {
1042
+ width: size,
1043
+ height: size,
1044
+ viewBox: "0 0 24 24",
1045
+ fill: "none",
1046
+ stroke: "currentColor",
1047
+ strokeWidth: "2",
1048
+ strokeLinecap: "round",
1049
+ "aria-hidden": "true",
1050
+ className,
1051
+ style,
1052
+ children: [
1053
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
1054
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
1055
+ ]
1056
+ }
1057
+ );
1058
+ }
1059
+ var { Sider } = antd.Layout;
1060
+ var MOBILE_HEADER = spacing.xxl;
1061
+ var LOGO_HEIGHT = spacing.xxl + spacing.md;
1062
+ var LOGO_HEIGHT_COMPACT = spacing.lg;
1063
+ function useBelowBreakpoint(breakpoint) {
1064
+ const screens = antd.Grid.useBreakpoint();
1065
+ if (!breakpoint) return false;
1066
+ if (Object.keys(screens).length === 0) {
1067
+ if (typeof window === "undefined") return false;
1068
+ return window.matchMedia(
1069
+ `(max-width: ${breakpoints[breakpoint] - 1}px)`
1070
+ ).matches;
1071
+ }
1072
+ return !screens[breakpoint];
1073
+ }
1074
+ function getInitials2(name) {
1075
+ const parts = name.trim().split(/\s+/).filter(Boolean);
1076
+ if (parts.length === 0) return "";
1077
+ if (parts.length === 1) return parts[0].charAt(0).toUpperCase();
1078
+ return `${parts[0].charAt(0)}${parts[parts.length - 1].charAt(0)}`.toUpperCase();
1079
+ }
1080
+ function SideNavFooter({
1081
+ user,
1082
+ collapsed = false,
1083
+ onLogout,
1084
+ logoutLabel = "Logout"
1085
+ }) {
1086
+ if (!user && !onLogout) return null;
1087
+ const initials = user ? getInitials2(user.name) : "";
1088
+ const logoutButton = /* @__PURE__ */ jsxRuntime.jsx(
1089
+ antd.Button,
1090
+ {
1091
+ type: "text",
1092
+ size: "small",
1093
+ icon: /* @__PURE__ */ jsxRuntime.jsx(LogoutIcon, {}),
1094
+ "aria-label": logoutLabel,
1095
+ style: {
1096
+ color: colors.brand.primary,
1097
+ width: 28,
1098
+ height: 28,
1099
+ padding: spacing.none,
1100
+ flexShrink: 0
1101
+ }
1102
+ }
1103
+ );
1104
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1105
+ "div",
1106
+ {
1107
+ style: {
1108
+ flexShrink: 0,
1109
+ borderTop: `1px solid ${colors.neutral.gray200}`,
1110
+ padding: collapsed ? spacing.sm : spacing.md,
1111
+ display: "flex",
1112
+ flexDirection: collapsed ? "column" : "row",
1113
+ alignItems: "center",
1114
+ gap: spacing.xs,
1115
+ background: colors.neutral.white
1116
+ },
1117
+ children: [
1118
+ user ? /* @__PURE__ */ jsxRuntime.jsxs(
1119
+ "div",
1120
+ {
1121
+ style: {
1122
+ display: "flex",
1123
+ alignItems: "center",
1124
+ gap: spacing.xs,
1125
+ justifyContent: collapsed ? "center" : "flex-start",
1126
+ minWidth: 0,
1127
+ flex: 1
1128
+ },
1129
+ children: [
1130
+ /* @__PURE__ */ jsxRuntime.jsx(
1131
+ antd.Avatar,
1132
+ {
1133
+ size: 28,
1134
+ src: user.avatarSrc,
1135
+ alt: user.name,
1136
+ style: {
1137
+ backgroundColor: colors.brand.primary,
1138
+ color: colors.neutral.white,
1139
+ fontWeight: 600,
1140
+ fontSize: fontSize.xs,
1141
+ flexShrink: 0
1142
+ },
1143
+ children: initials
1144
+ }
1145
+ ),
1146
+ collapsed ? null : /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { minWidth: 0, flex: 1 }, children: [
1147
+ /* @__PURE__ */ jsxRuntime.jsx(
1148
+ antd.Typography.Text,
1149
+ {
1150
+ strong: true,
1151
+ ellipsis: true,
1152
+ style: {
1153
+ display: "block",
1154
+ color: colors.neutral.gray800,
1155
+ fontSize: fontSize.sm,
1156
+ lineHeight: "18px"
1157
+ },
1158
+ children: user.name
1159
+ }
1160
+ ),
1161
+ user.role ? /* @__PURE__ */ jsxRuntime.jsx(
1162
+ antd.Typography.Text,
1163
+ {
1164
+ ellipsis: true,
1165
+ style: {
1166
+ display: "block",
1167
+ color: colors.neutral.gray500,
1168
+ fontSize: fontSize.xxs,
1169
+ lineHeight: "16px"
1170
+ },
1171
+ children: user.role
1172
+ }
1173
+ ) : null
1174
+ ] })
1175
+ ]
1176
+ }
1177
+ ) : null,
1178
+ onLogout ? /* @__PURE__ */ jsxRuntime.jsx(
1179
+ antd.Popconfirm,
1180
+ {
1181
+ title: logoutLabel,
1182
+ description: "Are you sure you want to logout?",
1183
+ okText: "Yes",
1184
+ cancelText: "No",
1185
+ onConfirm: onLogout,
1186
+ placement: "top",
1187
+ children: logoutButton
1188
+ }
1189
+ ) : null
1190
+ ]
1191
+ }
1192
+ );
1193
+ }
1194
+ function SideNavPanel({
1195
+ collapsed,
1196
+ items,
1197
+ menuStyle,
1198
+ menuTheme,
1199
+ menuRest,
1200
+ user,
1201
+ onLogout,
1202
+ logoutLabel,
1203
+ logoSrc,
1204
+ logoAlt,
1205
+ logo,
1206
+ headerButton
1207
+ }) {
1208
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1209
+ "div",
1210
+ {
1211
+ style: {
1212
+ display: "flex",
1213
+ flexDirection: "column",
1214
+ height: "100%",
1215
+ minHeight: 0,
1216
+ background: colors.neutral.white,
1217
+ overflow: "hidden"
1218
+ },
1219
+ children: [
1220
+ /* @__PURE__ */ jsxRuntime.jsxs(
1221
+ "div",
1222
+ {
1223
+ style: {
1224
+ flexShrink: 0,
1225
+ background: colors.neutral.white,
1226
+ display: "flex",
1227
+ flexDirection: collapsed ? "column" : "row",
1228
+ alignItems: "center",
1229
+ gap: spacing.xs,
1230
+ padding: collapsed ? spacing.sm : spacing.md,
1231
+ borderBottom: `1px solid ${colors.neutral.gray200}`
1232
+ },
1233
+ children: [
1234
+ /* @__PURE__ */ jsxRuntime.jsx(
1235
+ "div",
1236
+ {
1237
+ style: {
1238
+ flex: 1,
1239
+ display: "flex",
1240
+ alignItems: "center",
1241
+ justifyContent: collapsed ? "center" : "flex-start",
1242
+ minWidth: 0
1243
+ },
1244
+ children: logo ?? /* @__PURE__ */ jsxRuntime.jsx(
1245
+ "img",
1246
+ {
1247
+ src: logoSrc,
1248
+ alt: logoAlt,
1249
+ style: {
1250
+ display: "block",
1251
+ width: "auto",
1252
+ maxWidth: "100%",
1253
+ height: collapsed ? LOGO_HEIGHT_COMPACT : LOGO_HEIGHT,
1254
+ maxHeight: collapsed ? LOGO_HEIGHT_COMPACT : LOGO_HEIGHT,
1255
+ objectFit: "contain",
1256
+ objectPosition: collapsed ? "center" : "left center"
1257
+ }
1258
+ }
1259
+ )
1260
+ }
1261
+ ),
1262
+ headerButton
1263
+ ]
1264
+ }
1265
+ ),
1266
+ /* @__PURE__ */ jsxRuntime.jsx(
1267
+ "div",
1268
+ {
1269
+ style: {
1270
+ flex: "1 1 0%",
1271
+ minHeight: 0,
1272
+ overflow: "auto"
1273
+ },
1274
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1275
+ antd.ConfigProvider,
1276
+ {
1277
+ theme: {
1278
+ components: {
1279
+ Menu: {
1280
+ itemMarginInline: spacing.xxs,
1281
+ itemPaddingInline: spacing.md
1282
+ }
1283
+ }
1284
+ },
1285
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1286
+ antd.Menu,
1287
+ {
1288
+ mode: "inline",
1289
+ inlineIndent: spacing.sm,
1290
+ theme: menuTheme,
1291
+ items,
1292
+ style: {
1293
+ borderInlineEnd: "none",
1294
+ paddingBlock: spacing.sm,
1295
+ ...menuStyle
1296
+ },
1297
+ ...menuRest
1298
+ }
1299
+ )
1300
+ }
1301
+ )
1302
+ }
1303
+ ),
1304
+ /* @__PURE__ */ jsxRuntime.jsx(
1305
+ SideNavFooter,
1306
+ {
1307
+ user,
1308
+ collapsed,
1309
+ onLogout,
1310
+ logoutLabel
1311
+ }
1312
+ )
1313
+ ]
1314
+ }
1315
+ );
1316
+ }
1317
+ function SideNav({
1318
+ items,
1319
+ menu,
1320
+ user,
1321
+ onLogout,
1322
+ logoutLabel,
1323
+ logoSrc = indusActionLogo,
1324
+ logoAlt = "Indus Action",
1325
+ logo,
1326
+ width = 256,
1327
+ theme: theme2 = "light",
1328
+ collapsed: collapsedProp,
1329
+ defaultCollapsed,
1330
+ onCollapse,
1331
+ collapsible,
1332
+ trigger,
1333
+ style,
1334
+ breakpoint = "md",
1335
+ showMobileBar = true,
1336
+ mobileTrigger,
1337
+ mobileOpen: mobileOpenProp,
1338
+ onMobileOpenChange,
1339
+ ...siderProps
1340
+ }) {
1341
+ const isMobile = useBelowBreakpoint(breakpoint);
1342
+ const [uncontrolledCollapsed, setUncontrolledCollapsed] = React.useState(
1343
+ defaultCollapsed ?? false
1344
+ );
1345
+ const [uncontrolledMobileOpen, setUncontrolledMobileOpen] = React.useState(false);
1346
+ const isCollapsedControlled = collapsedProp !== void 0;
1347
+ const collapsed = isCollapsedControlled ? collapsedProp : uncontrolledCollapsed;
1348
+ const isMobileOpenControlled = mobileOpenProp !== void 0;
1349
+ const mobileOpen = isMobileOpenControlled ? mobileOpenProp : uncontrolledMobileOpen;
1350
+ const setMobileOpen = (open) => {
1351
+ if (!isMobileOpenControlled) setUncontrolledMobileOpen(open);
1352
+ onMobileOpenChange?.(open);
1353
+ };
1354
+ const handleCollapse = (value, type) => {
1355
+ if (!isCollapsedControlled) setUncontrolledCollapsed(value);
1356
+ onCollapse?.(value, type);
1357
+ };
1358
+ React.useEffect(() => {
1359
+ if (!isMobile) setMobileOpen(false);
1360
+ }, [isMobile]);
1361
+ React.useEffect(() => {
1362
+ if (!isMobile || !showMobileBar) return;
1363
+ const previous = document.body.style.paddingTop;
1364
+ document.body.style.paddingTop = `${MOBILE_HEADER}px`;
1365
+ return () => {
1366
+ document.body.style.paddingTop = previous;
1367
+ };
1368
+ }, [isMobile, showMobileBar]);
1369
+ const {
1370
+ style: menuStyle,
1371
+ theme: menuTheme,
1372
+ onClick: menuOnClick,
1373
+ ...menuRest
1374
+ } = menu ?? {};
1375
+ const handleMenuClick = (info) => {
1376
+ menuOnClick?.(info);
1377
+ if (isMobile) setMobileOpen(false);
1378
+ };
1379
+ const useHeaderToggle = Boolean(collapsible) && trigger === void 0;
1380
+ const panelTheme = menuTheme ?? theme2;
1381
+ const iconButtonStyle = {
1382
+ color: colors.brand.primary,
1383
+ width: 28,
1384
+ height: 28,
1385
+ padding: spacing.none,
1386
+ flexShrink: 0
1387
+ };
1388
+ const panel = (headerButton, panelCollapsed) => /* @__PURE__ */ jsxRuntime.jsx(
1389
+ SideNavPanel,
1390
+ {
1391
+ collapsed: panelCollapsed,
1392
+ items,
1393
+ menuStyle,
1394
+ menuTheme: panelTheme,
1395
+ menuRest: { ...menuRest, onClick: handleMenuClick },
1396
+ user,
1397
+ onLogout,
1398
+ logoutLabel,
1399
+ logoSrc,
1400
+ logoAlt,
1401
+ logo,
1402
+ headerButton
1403
+ }
1404
+ );
1405
+ if (isMobile) {
1406
+ const hamburger = showMobileBar && mobileTrigger !== null ? mobileTrigger ?? /* @__PURE__ */ jsxRuntime.jsx(
1407
+ antd.Button,
1408
+ {
1409
+ type: "text",
1410
+ "aria-label": "Open navigation",
1411
+ icon: /* @__PURE__ */ jsxRuntime.jsx(MenuIcon, {}),
1412
+ onClick: () => setMobileOpen(true),
1413
+ style: iconButtonStyle
1414
+ }
1415
+ ) : null;
1416
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1417
+ showMobileBar ? reactDom.createPortal(
1418
+ /* @__PURE__ */ jsxRuntime.jsxs(
1419
+ "header",
1420
+ {
1421
+ style: {
1422
+ position: "fixed",
1423
+ top: 0,
1424
+ left: 0,
1425
+ right: 0,
1426
+ height: MOBILE_HEADER,
1427
+ zIndex: 1e3,
1428
+ display: "flex",
1429
+ alignItems: "center",
1430
+ justifyContent: "space-between",
1431
+ gap: spacing.xs,
1432
+ paddingInline: spacing.md,
1433
+ borderBottom: `1px solid ${colors.neutral.gray200}`,
1434
+ background: colors.neutral.white
1435
+ },
1436
+ children: [
1437
+ /* @__PURE__ */ jsxRuntime.jsx(
1438
+ "div",
1439
+ {
1440
+ style: {
1441
+ display: "flex",
1442
+ alignItems: "center",
1443
+ minWidth: 0,
1444
+ flex: 1
1445
+ },
1446
+ children: logo ?? /* @__PURE__ */ jsxRuntime.jsx(
1447
+ "img",
1448
+ {
1449
+ src: logoSrc,
1450
+ alt: logoAlt,
1451
+ style: {
1452
+ display: "block",
1453
+ height: LOGO_HEIGHT_COMPACT,
1454
+ width: "auto",
1455
+ maxWidth: "100%",
1456
+ objectFit: "contain",
1457
+ objectPosition: "left center"
1458
+ }
1459
+ }
1460
+ )
1461
+ }
1462
+ ),
1463
+ hamburger
1464
+ ]
1465
+ }
1466
+ ),
1467
+ document.body
1468
+ ) : null,
1469
+ /* @__PURE__ */ jsxRuntime.jsx(
1470
+ antd.Drawer,
1471
+ {
1472
+ placement: "left",
1473
+ open: mobileOpen,
1474
+ onClose: () => setMobileOpen(false),
1475
+ width,
1476
+ closable: false,
1477
+ zIndex: 1100,
1478
+ styles: {
1479
+ body: {
1480
+ padding: 0,
1481
+ height: "100%",
1482
+ display: "flex",
1483
+ flexDirection: "column"
1484
+ }
1485
+ },
1486
+ children: panel(
1487
+ /* @__PURE__ */ jsxRuntime.jsx(
1488
+ antd.Button,
1489
+ {
1490
+ type: "text",
1491
+ size: "small",
1492
+ "aria-label": "Close navigation",
1493
+ icon: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, {}),
1494
+ onClick: () => setMobileOpen(false),
1495
+ style: iconButtonStyle
1496
+ }
1497
+ ),
1498
+ false
1499
+ )
1500
+ }
1501
+ )
1502
+ ] });
1503
+ }
1504
+ return /* @__PURE__ */ jsxRuntime.jsx(
1505
+ Sider,
1506
+ {
1507
+ theme: theme2,
1508
+ width,
1509
+ collapsed,
1510
+ collapsible,
1511
+ trigger: useHeaderToggle ? null : trigger,
1512
+ onCollapse: handleCollapse,
1513
+ style: {
1514
+ height: "100vh",
1515
+ position: "sticky",
1516
+ top: 0,
1517
+ overflow: "hidden",
1518
+ borderRight: `1px solid ${colors.neutral.gray200}`,
1519
+ background: colors.neutral.white,
1520
+ ...style
1521
+ },
1522
+ ...siderProps,
1523
+ children: panel(
1524
+ useHeaderToggle ? /* @__PURE__ */ jsxRuntime.jsx(
1525
+ antd.Button,
1526
+ {
1527
+ type: "text",
1528
+ size: "small",
1529
+ "aria-label": collapsed ? "Expand navigation" : "Collapse navigation",
1530
+ icon: /* @__PURE__ */ jsxRuntime.jsx(CollapseIcon, { collapsed }),
1531
+ onClick: () => handleCollapse(!collapsed, "clickTrigger"),
1532
+ style: iconButtonStyle
1533
+ }
1534
+ ) : null,
1535
+ collapsed
1536
+ )
1537
+ }
1538
+ );
1539
+ }
1540
+ SideNav.displayName = "SideNav";
1541
+ function StatusPage({
1542
+ status,
1543
+ title,
1544
+ subTitle,
1545
+ actionLabel,
1546
+ onAction,
1547
+ actionHref,
1548
+ extra,
1549
+ fullPage = true,
1550
+ className,
1551
+ style
1552
+ }) {
1553
+ const action = extra ?? (actionLabel ? /* @__PURE__ */ jsxRuntime.jsx(
1554
+ Button,
1555
+ {
1556
+ variant: "primary",
1557
+ size: "large",
1558
+ ...actionHref ? { href: actionHref } : {},
1559
+ onClick: onAction,
1560
+ children: actionLabel
1561
+ }
1562
+ ) : void 0);
1563
+ const result = /* @__PURE__ */ jsxRuntime.jsx(
1564
+ antd.Result,
1565
+ {
1566
+ status,
1567
+ title,
1568
+ subTitle,
1569
+ extra: action
1570
+ }
1571
+ );
1572
+ if (!fullPage) {
1573
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className, style, children: result });
1574
+ }
1575
+ return /* @__PURE__ */ jsxRuntime.jsx(
1576
+ "div",
1577
+ {
1578
+ className,
1579
+ style: {
1580
+ minHeight: "100vh",
1581
+ display: "flex",
1582
+ alignItems: "center",
1583
+ justifyContent: "center",
1584
+ background: colors.neutral.gray50,
1585
+ ...style
1586
+ },
1587
+ children: result
1588
+ }
1589
+ );
1590
+ }
1591
+ StatusPage.displayName = "StatusPage";
1592
+ function NotFoundPage({
1593
+ title = "404",
1594
+ subTitle = "Sorry, the page you visited does not exist.",
1595
+ actionLabel = "Home Page",
1596
+ actionHref,
1597
+ onAction,
1598
+ extra,
1599
+ ...rest
1600
+ }) {
1601
+ const href = actionHref ?? (onAction || extra ? void 0 : "/");
1602
+ return /* @__PURE__ */ jsxRuntime.jsx(
1603
+ StatusPage,
1604
+ {
1605
+ status: "404",
1606
+ title,
1607
+ subTitle,
1608
+ actionLabel,
1609
+ actionHref: href,
1610
+ onAction,
1611
+ extra,
1612
+ ...rest
1613
+ }
1614
+ );
1615
+ }
1616
+ NotFoundPage.displayName = "NotFoundPage";
1617
+ function UnauthorizedPage({
1618
+ title = "Unauthorized Access",
1619
+ subTitle = "You don't have permission to access this. Please ask the site admin for access.",
1620
+ actionLabel = "Back",
1621
+ actionHref,
1622
+ onAction,
1623
+ extra,
1624
+ ...rest
1625
+ }) {
1626
+ const href = actionHref ?? (onAction || extra ? void 0 : "/");
1627
+ return /* @__PURE__ */ jsxRuntime.jsx(
1628
+ StatusPage,
1629
+ {
1630
+ status: "403",
1631
+ title,
1632
+ subTitle,
1633
+ actionLabel,
1634
+ actionHref: href,
1635
+ onAction,
1636
+ extra,
1637
+ ...rest
1638
+ }
1639
+ );
69
1640
  }
1641
+ UnauthorizedPage.displayName = "UnauthorizedPage";
70
1642
 
71
1643
  exports.Button = Button;
1644
+ exports.Card = Card;
1645
+ exports.CloseIcon = CloseIcon;
1646
+ exports.CollapseIcon = CollapseIcon;
1647
+ exports.Dropdown = Dropdown;
1648
+ exports.Header = Header;
1649
+ exports.Link = Link;
1650
+ exports.LogoutIcon = LogoutIcon;
1651
+ exports.MenuIcon = MenuIcon;
1652
+ exports.Modal = Modal;
1653
+ exports.NotFoundPage = NotFoundPage;
1654
+ exports.SideNav = SideNav;
1655
+ exports.Skeleton = Skeleton;
1656
+ exports.StatusPage = StatusPage;
1657
+ exports.Table = Table;
1658
+ exports.Tabs = Tabs;
1659
+ exports.Tag = Tag;
72
1660
  exports.ThemeProvider = ThemeProvider;
1661
+ exports.UnauthorizedPage = UnauthorizedPage;
1662
+ exports.breakpoints = breakpoints;
73
1663
  exports.colors = colors;
1664
+ exports.fontSize = fontSize;
1665
+ exports.indusActionLogo = indusActionLogo;
1666
+ exports.spacing = spacing;
74
1667
  exports.theme = theme;
75
1668
  //# sourceMappingURL=index.cjs.map
76
1669
  //# sourceMappingURL=index.cjs.map