@opencxh/ui-kit 3.105.0 → 3.107.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 +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2253 -2168
- package/dist/index.js.map +1 -1
- package/dist/src/content/List.d.ts +46 -17
- package/dist/src/navigation/Sidebar.d.ts +11 -1
- package/package.json +1 -1
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
+
export interface ListGroup {
|
|
3
|
+
/** Group key — must match what `groupBy` returns */
|
|
4
|
+
id: string;
|
|
5
|
+
/** Header label; defaults to `id` */
|
|
6
|
+
title?: string;
|
|
7
|
+
/** Override the row count shown on the right */
|
|
8
|
+
count?: number;
|
|
9
|
+
/** Start collapsed (only with `collapsible`) */
|
|
10
|
+
defaultCollapsed?: boolean;
|
|
11
|
+
}
|
|
2
12
|
export interface ListProps<T> {
|
|
3
13
|
/** Rows to render */
|
|
4
14
|
items: T[];
|
|
@@ -20,6 +30,21 @@ export interface ListProps<T> {
|
|
|
20
30
|
unread?: (item: T, index: number) => boolean;
|
|
21
31
|
/** Deprioritised noise (opacity) */
|
|
22
32
|
dimmed?: (item: T, index: number) => boolean;
|
|
33
|
+
/** Group rows under headers. Return the group id for each row. */
|
|
34
|
+
groupBy?: (item: T, index: number) => string;
|
|
35
|
+
/**
|
|
36
|
+
* Group order and labels. Groups missing here are appended in order of first
|
|
37
|
+
* appearance; groups listed here but empty are skipped.
|
|
38
|
+
*/
|
|
39
|
+
groups?: ListGroup[];
|
|
40
|
+
/** Header renderer; defaults to label + count */
|
|
41
|
+
renderGroupHeader?: (group: ListGroup, items: T[]) => React.ReactNode;
|
|
42
|
+
/** Headers stick to the top of the scroll container */
|
|
43
|
+
stickyGroupHeaders?: boolean;
|
|
44
|
+
/** Headers become a toggle that folds the group */
|
|
45
|
+
collapsibleGroups?: boolean;
|
|
46
|
+
/** Hide the count on the right of the header */
|
|
47
|
+
hideGroupCount?: boolean;
|
|
23
48
|
/** Checkbox column + bulk bar */
|
|
24
49
|
selectable?: boolean;
|
|
25
50
|
/** Selected rows (controlled) */
|
|
@@ -28,6 +53,13 @@ export interface ListProps<T> {
|
|
|
28
53
|
onSelectionChange?: (selected: T[]) => void;
|
|
29
54
|
/** Actions shown in the bulk bar when a selection exists */
|
|
30
55
|
bulkActions?: React.ReactNode;
|
|
56
|
+
/**
|
|
57
|
+
* Column-label strip above the rows ("Van · Gesprek · tijd"), like the inbox.
|
|
58
|
+
* Align it with the row by reusing the same widths as `renderItem`.
|
|
59
|
+
*/
|
|
60
|
+
header?: React.ReactNode;
|
|
61
|
+
/** Keep the column-label strip visible while scrolling */
|
|
62
|
+
stickyHeader?: boolean;
|
|
31
63
|
/** Wrap the list in a bordered container */
|
|
32
64
|
bordered?: boolean;
|
|
33
65
|
/** Empty state content */
|
|
@@ -47,30 +79,27 @@ export interface ListProps<T> {
|
|
|
47
79
|
* Use `Table` instead when you compare values between rows (sortable columns,
|
|
48
80
|
* aligned amounts, select-all in a header).
|
|
49
81
|
*
|
|
82
|
+
* Grouped, like the inbox and task views:
|
|
83
|
+
*
|
|
50
84
|
* @example
|
|
51
85
|
* ```tsx
|
|
52
86
|
* <List
|
|
53
|
-
* items={
|
|
87
|
+
* items={tasks}
|
|
54
88
|
* getRowKey={(t) => t.id}
|
|
55
|
-
* variant="divided"
|
|
56
89
|
* bordered
|
|
90
|
+
* groupBy={(t) => t.bucket} // "today" | "tomorrow" | "later"
|
|
91
|
+
* groups={[
|
|
92
|
+
* { id: "today", title: "Vandaag" },
|
|
93
|
+
* { id: "tomorrow", title: "Morgen" },
|
|
94
|
+
* { id: "later", title: "Later" },
|
|
95
|
+
* ]}
|
|
96
|
+
* stickyGroupHeaders
|
|
97
|
+
* collapsibleGroups
|
|
57
98
|
* leading={(t) => <ChannelBadge channel={t.channel} size="sm" />}
|
|
58
|
-
* renderItem={(t) =>
|
|
59
|
-
*
|
|
60
|
-
* <span className="w-30 shrink-0 truncate">{t.sender}</span>
|
|
61
|
-
* <span className="min-w-0 flex-1 truncate">
|
|
62
|
-
* <strong>{t.subject}</strong>
|
|
63
|
-
* <span className="text-text-muted"> — {t.preview}</span>
|
|
64
|
-
* </span>
|
|
65
|
-
* </>
|
|
66
|
-
* )}
|
|
67
|
-
* trailing={(t) => <span className="text-xs text-text-subtle">{t.time}</span>}
|
|
99
|
+
* renderItem={(t) => <span className="truncate">{t.title}</span>}
|
|
100
|
+
* trailing={(t) => t.due}
|
|
68
101
|
* unread={(t) => !t.read}
|
|
69
|
-
* selectable
|
|
70
|
-
* selectedItems={selection}
|
|
71
|
-
* onSelectionChange={setSelection}
|
|
72
|
-
* bulkActions={<Button size="sm" variant="secondary">Archiveren</Button>}
|
|
73
102
|
* />
|
|
74
103
|
* ```
|
|
75
104
|
*/
|
|
76
|
-
export declare function List<T>({ items, getRowKey, variant, leading, renderItem, trailing, onSelect, isActive, unread, dimmed, selectable, selectedItems, onSelectionChange, bulkActions, bordered, emptyContent, loading, loadingRows, className, "aria-label": ariaLabel, }: ListProps<T>): React.JSX.Element;
|
|
105
|
+
export declare function List<T>({ items, getRowKey, variant, leading, renderItem, trailing, onSelect, isActive, unread, dimmed, groupBy, groups, renderGroupHeader, stickyGroupHeaders, collapsibleGroups, hideGroupCount, selectable, selectedItems, onSelectionChange, bulkActions, header, stickyHeader, bordered, emptyContent, loading, loadingRows, className, "aria-label": ariaLabel, }: ListProps<T>): React.JSX.Element;
|
|
@@ -5,7 +5,11 @@ export interface MenuItem {
|
|
|
5
5
|
count?: number;
|
|
6
6
|
children?: MenuItem[];
|
|
7
7
|
path?: string;
|
|
8
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated Groepen klappen niet meer in — een sectie met children rendert
|
|
10
|
+
* als kop met zijn items eronder. Blijft bestaan zodat bestaande call-sites
|
|
11
|
+
* blijven compileren; de waarde wordt genegeerd.
|
|
12
|
+
*/
|
|
9
13
|
defaultCollapsed?: boolean;
|
|
10
14
|
}
|
|
11
15
|
interface SidebarMenuProps {
|
|
@@ -16,5 +20,11 @@ interface SidebarMenuProps {
|
|
|
16
20
|
onClick?: (path: string | undefined) => void;
|
|
17
21
|
preMenuItemsComponent?: React.ReactNode;
|
|
18
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Sidebar — appnaam met optioneel één icon-actie rechts, daarboven/onder een
|
|
25
|
+
* vrije slot (zoek), dan de nav-items. Secties met children zijn koppen, geen
|
|
26
|
+
* knoppen. Geen workspace-switcher en geen gebruikersvoet: accountzaken staan
|
|
27
|
+
* in de topbar.
|
|
28
|
+
*/
|
|
19
29
|
export declare const SidebarMenu: React.FC<SidebarMenuProps>;
|
|
20
30
|
export default SidebarMenu;
|