@itilite/lumina-ui 1.0.13-alpha → 1.0.15-alpha

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 (35) hide show
  1. package/dist/AdvancedDateRangePicker-DOSprRQR.d.mts +52 -0
  2. package/dist/AdvancedDateRangePicker-DOSprRQR.d.ts +52 -0
  3. package/dist/Table-BfGn3Pa0.d.mts +82 -0
  4. package/dist/Table-BfGn3Pa0.d.ts +82 -0
  5. package/dist/Table-BxaCiQmh.d.mts +82 -0
  6. package/dist/Table-BxaCiQmh.d.ts +82 -0
  7. package/dist/Table-CnzP9dkc.d.mts +82 -0
  8. package/dist/Table-CnzP9dkc.d.ts +82 -0
  9. package/dist/Table-DmfNNnuD.d.mts +86 -0
  10. package/dist/Table-DmfNNnuD.d.ts +86 -0
  11. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.d.mts +1 -1
  12. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.d.ts +1 -1
  13. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.js +3 -2
  14. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.mjs +2 -2
  15. package/dist/atom/RangePicker/RangePicker.js +17 -26
  16. package/dist/atom/RangePicker/RangePicker.mjs +1 -1
  17. package/dist/atom/Table/Table.d.mts +1 -1
  18. package/dist/atom/Table/Table.d.ts +1 -1
  19. package/dist/atom/Table/Table.js +3 -4
  20. package/dist/atom/Table/Table.mjs +1 -1
  21. package/dist/chunk-5OUMKJWI.mjs +301 -0
  22. package/dist/chunk-5PMUTA6S.mjs +303 -0
  23. package/dist/chunk-ANJI6SPV.mjs +283 -0
  24. package/dist/chunk-GOIABK2Y.mjs +283 -0
  25. package/dist/chunk-PSBEYGD4.mjs +618 -0
  26. package/dist/chunk-QQA7KWAJ.mjs +477 -0
  27. package/dist/chunk-T43CWNOG.mjs +283 -0
  28. package/dist/chunk-TE5EOIIW.mjs +301 -0
  29. package/dist/chunk-Z3N4E2C5.mjs +477 -0
  30. package/dist/index.d.mts +2 -2
  31. package/dist/index.d.ts +2 -2
  32. package/dist/index.js +27 -34
  33. package/dist/index.mjs +15 -15
  34. package/dist/styles.css +248 -219
  35. package/package.json +1 -1
@@ -0,0 +1,52 @@
1
+ import * as React from 'react';
2
+
3
+ interface TimeValue {
4
+ hour: string;
5
+ minute: string;
6
+ period: "AM" | "PM";
7
+ }
8
+ interface DateRangeValue {
9
+ startDate: Date | null;
10
+ endDate: Date | null;
11
+ startTime: TimeValue;
12
+ endTime: TimeValue;
13
+ timezone: string;
14
+ activePreset?: string;
15
+ }
16
+ interface PresetOption {
17
+ label: string;
18
+ key: string;
19
+ getRange: () => (Date | null)[];
20
+ }
21
+ interface TimezoneOption {
22
+ label: string;
23
+ value: string;
24
+ }
25
+ interface DateRangePickerProps {
26
+ value?: DateRangeValue;
27
+ onChange?: (value: DateRangeValue) => void;
28
+ onRangeChange?: (value: DateRangeValue) => void;
29
+ confirmLabel?: string;
30
+ className?: string;
31
+ disabled?: boolean;
32
+ disablePastDates?: boolean;
33
+ minDate?: string | null;
34
+ maxDate?: string | null;
35
+ showSingleCalendar?: boolean;
36
+ id?: string;
37
+ defaultTimezone?: string;
38
+ isTimezoneDisabled?: boolean;
39
+ timezoneOptions?: TimezoneOption[];
40
+ /** Initial active preset key. e.g. "custom", "this-month", "yesterday" */
41
+ defaultPreset?: string;
42
+ presets?: PresetOption[];
43
+ hidePresets?: boolean;
44
+ hideFooter?: boolean;
45
+ }
46
+
47
+ declare function AdvancedDateRangePicker({ value, onChange, confirmLabel, className, disabled, disablePastDates, minDate, maxDate, showSingleCalendar, id, defaultTimezone, isTimezoneDisabled, timezoneOptions, defaultPreset, presets, hidePresets, hideFooter, }: DateRangePickerProps): React.JSX.Element;
48
+ declare namespace AdvancedDateRangePicker {
49
+ var displayName: string;
50
+ }
51
+
52
+ export { AdvancedDateRangePicker as A, type DateRangePickerProps as D, type PresetOption as P, type TimeValue as T, type DateRangeValue as a, type TimezoneOption as b };
@@ -0,0 +1,52 @@
1
+ import * as React from 'react';
2
+
3
+ interface TimeValue {
4
+ hour: string;
5
+ minute: string;
6
+ period: "AM" | "PM";
7
+ }
8
+ interface DateRangeValue {
9
+ startDate: Date | null;
10
+ endDate: Date | null;
11
+ startTime: TimeValue;
12
+ endTime: TimeValue;
13
+ timezone: string;
14
+ activePreset?: string;
15
+ }
16
+ interface PresetOption {
17
+ label: string;
18
+ key: string;
19
+ getRange: () => (Date | null)[];
20
+ }
21
+ interface TimezoneOption {
22
+ label: string;
23
+ value: string;
24
+ }
25
+ interface DateRangePickerProps {
26
+ value?: DateRangeValue;
27
+ onChange?: (value: DateRangeValue) => void;
28
+ onRangeChange?: (value: DateRangeValue) => void;
29
+ confirmLabel?: string;
30
+ className?: string;
31
+ disabled?: boolean;
32
+ disablePastDates?: boolean;
33
+ minDate?: string | null;
34
+ maxDate?: string | null;
35
+ showSingleCalendar?: boolean;
36
+ id?: string;
37
+ defaultTimezone?: string;
38
+ isTimezoneDisabled?: boolean;
39
+ timezoneOptions?: TimezoneOption[];
40
+ /** Initial active preset key. e.g. "custom", "this-month", "yesterday" */
41
+ defaultPreset?: string;
42
+ presets?: PresetOption[];
43
+ hidePresets?: boolean;
44
+ hideFooter?: boolean;
45
+ }
46
+
47
+ declare function AdvancedDateRangePicker({ value, onChange, confirmLabel, className, disabled, disablePastDates, minDate, maxDate, showSingleCalendar, id, defaultTimezone, isTimezoneDisabled, timezoneOptions, defaultPreset, presets, hidePresets, hideFooter, }: DateRangePickerProps): React.JSX.Element;
48
+ declare namespace AdvancedDateRangePicker {
49
+ var displayName: string;
50
+ }
51
+
52
+ export { AdvancedDateRangePicker as A, type DateRangePickerProps as D, type PresetOption as P, type TimeValue as T, type DateRangeValue as a, type TimezoneOption as b };
@@ -0,0 +1,82 @@
1
+ import * as React from 'react';
2
+ import { TableProps as TableProps$1, TablePaginationConfig } from 'antd';
3
+
4
+ type SortOrder = "ascend" | "descend" | undefined;
5
+ type AntColumnType<RecordType> = NonNullable<TableProps$1<RecordType>["columns"]>[number];
6
+ interface LuminaColumnHeaderProps {
7
+ /** Clicking cycles: undefined → ascend → descend → undefined */
8
+ sortable?: boolean;
9
+ /** Provide to make sort controlled. */
10
+ sortOrder?: SortOrder;
11
+ onSortChange?: (order: SortOrder) => void;
12
+ /** Sort icon to render. Must be provided if sortable is true. */
13
+ sortIcon?: React.ReactNode;
14
+ /** > 0 turns the filter icon red and shows a count badge. */
15
+ filterCount?: number;
16
+ /** MUST be provided if filterContent is present, otherwise no icon renders. */
17
+ filterIcon?: React.ReactNode;
18
+ /** Renders a filter icon button; clicking it toggles visibility of this content. */
19
+ filterContent?: React.ReactNode;
20
+ className?: string;
21
+ }
22
+ type LuminaColumnType<RecordType = any> = AntColumnType<RecordType> & {
23
+ headerProps?: LuminaColumnHeaderProps;
24
+ };
25
+ type LuminaColumnsType<RecordType = any> = LuminaColumnType<RecordType>[];
26
+ interface TableProps<RecordType = any> extends Omit<TableProps$1<RecordType>, "size" | "bordered" | "pagination" | "columns"> {
27
+ /** `selectable` — clicking any row toggles its checkbox */
28
+ variant?: "default" | "selectable";
29
+ isAccordion?: boolean;
30
+ isToolbar?: boolean;
31
+ size?: "small" | "middle" | "large";
32
+ className?: string;
33
+ pagination?: TablePaginationConfig | boolean;
34
+ /** Add `headerProps` to any column to enable sort/filter icons. */
35
+ columns?: LuminaColumnsType<RecordType>;
36
+ /** Total items for server-side pagination. */
37
+ total?: number;
38
+ /** Current page number (1-indexed). */
39
+ current?: number;
40
+ pageSize?: number;
41
+ onPaginationChange?: TablePaginationConfig["onChange"];
42
+ emptyState?: React.ReactNode;
43
+ hideHeader?: boolean;
44
+ loadingIndicator?: React.ReactElement;
45
+ /** Extra class applied to header cells (th). */
46
+ headerCellClassName?: string;
47
+ /** Extra class applied to body cells (td). */
48
+ bodyCellClassName?: string;
49
+ /** Can be a string or a per-row function. */
50
+ rowClassName?: string | ((record: RecordType, index: number) => string);
51
+ }
52
+
53
+ /**
54
+ * Lumina Table component.
55
+ *
56
+ * Variants:
57
+ * - `default` – standard table
58
+ * - `selectable` – use with `rowSelection`; clicking any row toggles its checkbox
59
+ *
60
+ * Use `isAccordion` / `isToolbar` to strip outer chrome when embedded.
61
+ * Row hover tint is enabled by default via styles.
62
+ *
63
+ * Column header icons — add `headerProps` to any column definition:
64
+ * ```tsx
65
+ * columns={[{
66
+ * key: "name", dataIndex: "name", title: "Name",
67
+ * headerProps: {
68
+ * sortable: true,
69
+ * sortOrder: sortOrders.name,
70
+ * onSortChange: (order) => setSortOrders(prev => ({ ...prev, name: order })),
71
+ * filterCount: activeFilters.name ?? 0,
72
+ * filterContent: <MyFilterPanel />,
73
+ * },
74
+ * }]}
75
+ * ```
76
+ */
77
+ declare function Table<RecordType extends object = any>(props: TableProps<RecordType>): React.JSX.Element;
78
+ declare namespace Table {
79
+ var displayName: string;
80
+ }
81
+
82
+ export { type LuminaColumnHeaderProps as L, type SortOrder as S, Table as T, type LuminaColumnType as a, type LuminaColumnsType as b, type TableProps as c };
@@ -0,0 +1,82 @@
1
+ import * as React from 'react';
2
+ import { TableProps as TableProps$1, TablePaginationConfig } from 'antd';
3
+
4
+ type SortOrder = "ascend" | "descend" | undefined;
5
+ type AntColumnType<RecordType> = NonNullable<TableProps$1<RecordType>["columns"]>[number];
6
+ interface LuminaColumnHeaderProps {
7
+ /** Clicking cycles: undefined → ascend → descend → undefined */
8
+ sortable?: boolean;
9
+ /** Provide to make sort controlled. */
10
+ sortOrder?: SortOrder;
11
+ onSortChange?: (order: SortOrder) => void;
12
+ /** Sort icon to render. Must be provided if sortable is true. */
13
+ sortIcon?: React.ReactNode;
14
+ /** > 0 turns the filter icon red and shows a count badge. */
15
+ filterCount?: number;
16
+ /** MUST be provided if filterContent is present, otherwise no icon renders. */
17
+ filterIcon?: React.ReactNode;
18
+ /** Renders a filter icon button; clicking it toggles visibility of this content. */
19
+ filterContent?: React.ReactNode;
20
+ className?: string;
21
+ }
22
+ type LuminaColumnType<RecordType = any> = AntColumnType<RecordType> & {
23
+ headerProps?: LuminaColumnHeaderProps;
24
+ };
25
+ type LuminaColumnsType<RecordType = any> = LuminaColumnType<RecordType>[];
26
+ interface TableProps<RecordType = any> extends Omit<TableProps$1<RecordType>, "size" | "bordered" | "pagination" | "columns"> {
27
+ /** `selectable` — clicking any row toggles its checkbox */
28
+ variant?: "default" | "selectable";
29
+ isAccordion?: boolean;
30
+ isToolbar?: boolean;
31
+ size?: "small" | "middle" | "large";
32
+ className?: string;
33
+ pagination?: TablePaginationConfig | boolean;
34
+ /** Add `headerProps` to any column to enable sort/filter icons. */
35
+ columns?: LuminaColumnsType<RecordType>;
36
+ /** Total items for server-side pagination. */
37
+ total?: number;
38
+ /** Current page number (1-indexed). */
39
+ current?: number;
40
+ pageSize?: number;
41
+ onPaginationChange?: TablePaginationConfig["onChange"];
42
+ emptyState?: React.ReactNode;
43
+ hideHeader?: boolean;
44
+ loadingIndicator?: React.ReactElement;
45
+ /** Extra class applied to header cells (th). */
46
+ headerCellClassName?: string;
47
+ /** Extra class applied to body cells (td). */
48
+ bodyCellClassName?: string;
49
+ /** Can be a string or a per-row function. */
50
+ rowClassName?: string | ((record: RecordType, index: number) => string);
51
+ }
52
+
53
+ /**
54
+ * Lumina Table component.
55
+ *
56
+ * Variants:
57
+ * - `default` – standard table
58
+ * - `selectable` – use with `rowSelection`; clicking any row toggles its checkbox
59
+ *
60
+ * Use `isAccordion` / `isToolbar` to strip outer chrome when embedded.
61
+ * Row hover tint is enabled by default via styles.
62
+ *
63
+ * Column header icons — add `headerProps` to any column definition:
64
+ * ```tsx
65
+ * columns={[{
66
+ * key: "name", dataIndex: "name", title: "Name",
67
+ * headerProps: {
68
+ * sortable: true,
69
+ * sortOrder: sortOrders.name,
70
+ * onSortChange: (order) => setSortOrders(prev => ({ ...prev, name: order })),
71
+ * filterCount: activeFilters.name ?? 0,
72
+ * filterContent: <MyFilterPanel />,
73
+ * },
74
+ * }]}
75
+ * ```
76
+ */
77
+ declare function Table<RecordType extends object = any>(props: TableProps<RecordType>): React.JSX.Element;
78
+ declare namespace Table {
79
+ var displayName: string;
80
+ }
81
+
82
+ export { type LuminaColumnHeaderProps as L, type SortOrder as S, Table as T, type LuminaColumnType as a, type LuminaColumnsType as b, type TableProps as c };
@@ -0,0 +1,82 @@
1
+ import * as React from 'react';
2
+ import { TableProps as TableProps$1, TablePaginationConfig } from 'antd';
3
+
4
+ type SortOrder = "ascend" | "descend" | undefined;
5
+ type AntColumnType<RecordType> = NonNullable<TableProps$1<RecordType>["columns"]>[number];
6
+ interface LuminaColumnHeaderProps {
7
+ /** Clicking cycles: undefined → ascend → descend → undefined */
8
+ sortable?: boolean;
9
+ /** Provide to make sort controlled. */
10
+ sortOrder?: SortOrder;
11
+ onSortChange?: (order: SortOrder) => void;
12
+ /** MUST be provided if sortable is true, otherwise no icon renders. */
13
+ sortIcon?: React.ReactNode;
14
+ /** > 0 turns the filter icon red and shows a count badge. */
15
+ filterCount?: number;
16
+ /** MUST be provided if filterContent is present, otherwise no icon renders. */
17
+ filterIcon?: React.ReactNode;
18
+ /** Renders a filter icon button; clicking it toggles visibility of this content. */
19
+ filterContent?: React.ReactNode;
20
+ className?: string;
21
+ }
22
+ type LuminaColumnType<RecordType = any> = AntColumnType<RecordType> & {
23
+ headerProps?: LuminaColumnHeaderProps;
24
+ };
25
+ type LuminaColumnsType<RecordType = any> = LuminaColumnType<RecordType>[];
26
+ interface TableProps<RecordType = any> extends Omit<TableProps$1<RecordType>, "size" | "bordered" | "pagination" | "columns"> {
27
+ /** `selectable` — clicking any row toggles its checkbox */
28
+ variant?: "default" | "selectable";
29
+ isAccordion?: boolean;
30
+ isToolbar?: boolean;
31
+ size?: "small" | "middle" | "large";
32
+ className?: string;
33
+ pagination?: TablePaginationConfig | boolean;
34
+ /** Add `headerProps` to any column to enable sort/filter icons. */
35
+ columns?: LuminaColumnsType<RecordType>;
36
+ /** Total items for server-side pagination. */
37
+ total?: number;
38
+ /** Current page number (1-indexed). */
39
+ current?: number;
40
+ pageSize?: number;
41
+ onPaginationChange?: TablePaginationConfig["onChange"];
42
+ emptyState?: React.ReactNode;
43
+ hideHeader?: boolean;
44
+ loadingIndicator?: React.ReactElement;
45
+ /** Extra class applied to header cells (th). */
46
+ headerCellClassName?: string;
47
+ /** Extra class applied to body cells (td). */
48
+ bodyCellClassName?: string;
49
+ /** Can be a string or a per-row function. */
50
+ rowClassName?: string | ((record: RecordType, index: number) => string);
51
+ }
52
+
53
+ /**
54
+ * Lumina Table component.
55
+ *
56
+ * Variants:
57
+ * - `default` – standard table
58
+ * - `selectable` – use with `rowSelection`; clicking any row toggles its checkbox
59
+ *
60
+ * Use `isAccordion` / `isToolbar` to strip outer chrome when embedded.
61
+ * Row hover tint is enabled by default via styles.
62
+ *
63
+ * Column header icons — add `headerProps` to any column definition:
64
+ * ```tsx
65
+ * columns={[{
66
+ * key: "name", dataIndex: "name", title: "Name",
67
+ * headerProps: {
68
+ * sortable: true,
69
+ * sortOrder: sortOrders.name,
70
+ * onSortChange: (order) => setSortOrders(prev => ({ ...prev, name: order })),
71
+ * filterCount: activeFilters.name ?? 0,
72
+ * filterContent: <MyFilterPanel />,
73
+ * },
74
+ * }]}
75
+ * ```
76
+ */
77
+ declare function Table<RecordType extends object = any>(props: TableProps<RecordType>): React.JSX.Element;
78
+ declare namespace Table {
79
+ var displayName: string;
80
+ }
81
+
82
+ export { type LuminaColumnHeaderProps as L, type SortOrder as S, Table as T, type LuminaColumnType as a, type LuminaColumnsType as b, type TableProps as c };
@@ -0,0 +1,82 @@
1
+ import * as React from 'react';
2
+ import { TableProps as TableProps$1, TablePaginationConfig } from 'antd';
3
+
4
+ type SortOrder = "ascend" | "descend" | undefined;
5
+ type AntColumnType<RecordType> = NonNullable<TableProps$1<RecordType>["columns"]>[number];
6
+ interface LuminaColumnHeaderProps {
7
+ /** Clicking cycles: undefined → ascend → descend → undefined */
8
+ sortable?: boolean;
9
+ /** Provide to make sort controlled. */
10
+ sortOrder?: SortOrder;
11
+ onSortChange?: (order: SortOrder) => void;
12
+ /** MUST be provided if sortable is true, otherwise no icon renders. */
13
+ sortIcon?: React.ReactNode;
14
+ /** > 0 turns the filter icon red and shows a count badge. */
15
+ filterCount?: number;
16
+ /** MUST be provided if filterContent is present, otherwise no icon renders. */
17
+ filterIcon?: React.ReactNode;
18
+ /** Renders a filter icon button; clicking it toggles visibility of this content. */
19
+ filterContent?: React.ReactNode;
20
+ className?: string;
21
+ }
22
+ type LuminaColumnType<RecordType = any> = AntColumnType<RecordType> & {
23
+ headerProps?: LuminaColumnHeaderProps;
24
+ };
25
+ type LuminaColumnsType<RecordType = any> = LuminaColumnType<RecordType>[];
26
+ interface TableProps<RecordType = any> extends Omit<TableProps$1<RecordType>, "size" | "bordered" | "pagination" | "columns"> {
27
+ /** `selectable` — clicking any row toggles its checkbox */
28
+ variant?: "default" | "selectable";
29
+ isAccordion?: boolean;
30
+ isToolbar?: boolean;
31
+ size?: "small" | "middle" | "large";
32
+ className?: string;
33
+ pagination?: TablePaginationConfig | boolean;
34
+ /** Add `headerProps` to any column to enable sort/filter icons. */
35
+ columns?: LuminaColumnsType<RecordType>;
36
+ /** Total items for server-side pagination. */
37
+ total?: number;
38
+ /** Current page number (1-indexed). */
39
+ current?: number;
40
+ pageSize?: number;
41
+ onPaginationChange?: TablePaginationConfig["onChange"];
42
+ emptyState?: React.ReactNode;
43
+ hideHeader?: boolean;
44
+ loadingIndicator?: React.ReactElement;
45
+ /** Extra class applied to header cells (th). */
46
+ headerCellClassName?: string;
47
+ /** Extra class applied to body cells (td). */
48
+ bodyCellClassName?: string;
49
+ /** Can be a string or a per-row function. */
50
+ rowClassName?: string | ((record: RecordType, index: number) => string);
51
+ }
52
+
53
+ /**
54
+ * Lumina Table component.
55
+ *
56
+ * Variants:
57
+ * - `default` – standard table
58
+ * - `selectable` – use with `rowSelection`; clicking any row toggles its checkbox
59
+ *
60
+ * Use `isAccordion` / `isToolbar` to strip outer chrome when embedded.
61
+ * Row hover tint is enabled by default via styles.
62
+ *
63
+ * Column header icons — add `headerProps` to any column definition:
64
+ * ```tsx
65
+ * columns={[{
66
+ * key: "name", dataIndex: "name", title: "Name",
67
+ * headerProps: {
68
+ * sortable: true,
69
+ * sortOrder: sortOrders.name,
70
+ * onSortChange: (order) => setSortOrders(prev => ({ ...prev, name: order })),
71
+ * filterCount: activeFilters.name ?? 0,
72
+ * filterContent: <MyFilterPanel />,
73
+ * },
74
+ * }]}
75
+ * ```
76
+ */
77
+ declare function Table<RecordType extends object = any>(props: TableProps<RecordType>): React.JSX.Element;
78
+ declare namespace Table {
79
+ var displayName: string;
80
+ }
81
+
82
+ export { type LuminaColumnHeaderProps as L, type SortOrder as S, Table as T, type LuminaColumnType as a, type LuminaColumnsType as b, type TableProps as c };
@@ -0,0 +1,82 @@
1
+ import * as React from 'react';
2
+ import { TableProps as TableProps$1, TablePaginationConfig } from 'antd';
3
+
4
+ type SortOrder = "ascend" | "descend" | undefined;
5
+ type AntColumnType<RecordType> = NonNullable<TableProps$1<RecordType>["columns"]>[number];
6
+ interface LuminaColumnHeaderProps {
7
+ /** Clicking cycles: undefined → ascend → descend → undefined */
8
+ sortable?: boolean;
9
+ /** Provide to make sort controlled. */
10
+ sortOrder?: SortOrder;
11
+ onSortChange?: (order: SortOrder) => void;
12
+ /** If not provided, dynamic default/up/down sort icons will render. */
13
+ sortIcon?: React.ReactNode;
14
+ /** > 0 turns the filter icon red and shows a count badge. */
15
+ filterCount?: number;
16
+ /** MUST be provided if filterContent is present, otherwise no icon renders. */
17
+ filterIcon?: React.ReactNode;
18
+ /** Renders a filter icon button; clicking it toggles visibility of this content. */
19
+ filterContent?: React.ReactNode;
20
+ className?: string;
21
+ }
22
+ type LuminaColumnType<RecordType = any> = AntColumnType<RecordType> & {
23
+ headerProps?: LuminaColumnHeaderProps;
24
+ };
25
+ type LuminaColumnsType<RecordType = any> = LuminaColumnType<RecordType>[];
26
+ interface TableProps<RecordType = any> extends Omit<TableProps$1<RecordType>, "size" | "bordered" | "pagination" | "columns"> {
27
+ /** `selectable` — clicking any row toggles its checkbox */
28
+ variant?: "default" | "selectable";
29
+ isAccordion?: boolean;
30
+ isToolbar?: boolean;
31
+ size?: "small" | "middle" | "large";
32
+ className?: string;
33
+ pagination?: TablePaginationConfig | boolean;
34
+ /** Add `headerProps` to any column to enable sort/filter icons. */
35
+ columns?: LuminaColumnsType<RecordType>;
36
+ /** Total items for server-side pagination. */
37
+ total?: number;
38
+ /** Current page number (1-indexed). */
39
+ current?: number;
40
+ pageSize?: number;
41
+ onPaginationChange?: TablePaginationConfig["onChange"];
42
+ emptyState?: React.ReactNode;
43
+ hideHeader?: boolean;
44
+ loadingIndicator?: React.ReactElement;
45
+ /** Extra class applied to header cells (th). */
46
+ headerCellClassName?: string;
47
+ /** Extra class applied to body cells (td). */
48
+ bodyCellClassName?: string;
49
+ /** Can be a string or a per-row function. */
50
+ rowClassName?: string | ((record: RecordType, index: number) => string);
51
+ }
52
+
53
+ /**
54
+ * Lumina Table component.
55
+ *
56
+ * Variants:
57
+ * - `default` – standard table
58
+ * - `selectable` – use with `rowSelection`; clicking any row toggles its checkbox
59
+ *
60
+ * Use `isAccordion` / `isToolbar` to strip outer chrome when embedded.
61
+ * Row hover tint is enabled by default via styles.
62
+ *
63
+ * Column header icons — add `headerProps` to any column definition:
64
+ * ```tsx
65
+ * columns={[{
66
+ * key: "name", dataIndex: "name", title: "Name",
67
+ * headerProps: {
68
+ * sortable: true,
69
+ * sortOrder: sortOrders.name,
70
+ * onSortChange: (order) => setSortOrders(prev => ({ ...prev, name: order })),
71
+ * filterCount: activeFilters.name ?? 0,
72
+ * filterContent: <MyFilterPanel />,
73
+ * },
74
+ * }]}
75
+ * ```
76
+ */
77
+ declare function Table<RecordType extends object = any>(props: TableProps<RecordType>): React.JSX.Element;
78
+ declare namespace Table {
79
+ var displayName: string;
80
+ }
81
+
82
+ export { type LuminaColumnHeaderProps as L, type SortOrder as S, Table as T, type LuminaColumnType as a, type LuminaColumnsType as b, type TableProps as c };
@@ -0,0 +1,82 @@
1
+ import * as React from 'react';
2
+ import { TableProps as TableProps$1, TablePaginationConfig } from 'antd';
3
+
4
+ type SortOrder = "ascend" | "descend" | undefined;
5
+ type AntColumnType<RecordType> = NonNullable<TableProps$1<RecordType>["columns"]>[number];
6
+ interface LuminaColumnHeaderProps {
7
+ /** Clicking cycles: undefined → ascend → descend → undefined */
8
+ sortable?: boolean;
9
+ /** Provide to make sort controlled. */
10
+ sortOrder?: SortOrder;
11
+ onSortChange?: (order: SortOrder) => void;
12
+ /** If not provided, dynamic default/up/down sort icons will render. */
13
+ sortIcon?: React.ReactNode;
14
+ /** > 0 turns the filter icon red and shows a count badge. */
15
+ filterCount?: number;
16
+ /** MUST be provided if filterContent is present, otherwise no icon renders. */
17
+ filterIcon?: React.ReactNode;
18
+ /** Renders a filter icon button; clicking it toggles visibility of this content. */
19
+ filterContent?: React.ReactNode;
20
+ className?: string;
21
+ }
22
+ type LuminaColumnType<RecordType = any> = AntColumnType<RecordType> & {
23
+ headerProps?: LuminaColumnHeaderProps;
24
+ };
25
+ type LuminaColumnsType<RecordType = any> = LuminaColumnType<RecordType>[];
26
+ interface TableProps<RecordType = any> extends Omit<TableProps$1<RecordType>, "size" | "bordered" | "pagination" | "columns"> {
27
+ /** `selectable` — clicking any row toggles its checkbox */
28
+ variant?: "default" | "selectable";
29
+ isAccordion?: boolean;
30
+ isToolbar?: boolean;
31
+ size?: "small" | "middle" | "large";
32
+ className?: string;
33
+ pagination?: TablePaginationConfig | boolean;
34
+ /** Add `headerProps` to any column to enable sort/filter icons. */
35
+ columns?: LuminaColumnsType<RecordType>;
36
+ /** Total items for server-side pagination. */
37
+ total?: number;
38
+ /** Current page number (1-indexed). */
39
+ current?: number;
40
+ pageSize?: number;
41
+ onPaginationChange?: TablePaginationConfig["onChange"];
42
+ emptyState?: React.ReactNode;
43
+ hideHeader?: boolean;
44
+ loadingIndicator?: React.ReactElement;
45
+ /** Extra class applied to header cells (th). */
46
+ headerCellClassName?: string;
47
+ /** Extra class applied to body cells (td). */
48
+ bodyCellClassName?: string;
49
+ /** Can be a string or a per-row function. */
50
+ rowClassName?: string | ((record: RecordType, index: number) => string);
51
+ }
52
+
53
+ /**
54
+ * Lumina Table component.
55
+ *
56
+ * Variants:
57
+ * - `default` – standard table
58
+ * - `selectable` – use with `rowSelection`; clicking any row toggles its checkbox
59
+ *
60
+ * Use `isAccordion` / `isToolbar` to strip outer chrome when embedded.
61
+ * Row hover tint is enabled by default via styles.
62
+ *
63
+ * Column header icons — add `headerProps` to any column definition:
64
+ * ```tsx
65
+ * columns={[{
66
+ * key: "name", dataIndex: "name", title: "Name",
67
+ * headerProps: {
68
+ * sortable: true,
69
+ * sortOrder: sortOrders.name,
70
+ * onSortChange: (order) => setSortOrders(prev => ({ ...prev, name: order })),
71
+ * filterCount: activeFilters.name ?? 0,
72
+ * filterContent: <MyFilterPanel />,
73
+ * },
74
+ * }]}
75
+ * ```
76
+ */
77
+ declare function Table<RecordType extends object = any>(props: TableProps<RecordType>): React.JSX.Element;
78
+ declare namespace Table {
79
+ var displayName: string;
80
+ }
81
+
82
+ export { type LuminaColumnHeaderProps as L, type SortOrder as S, Table as T, type LuminaColumnType as a, type LuminaColumnsType as b, type TableProps as c };