@bigbinary/neeto-molecules 3.16.86 → 3.16.88

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.
@@ -0,0 +1,205 @@
1
+ import React from 'react';
2
+
3
+ type Version = {
4
+ id: string;
5
+ date: Date;
6
+ user: string;
7
+ onClick?: () => void;
8
+ isDraft?: boolean;
9
+ isPublished?: boolean;
10
+ showMoreDropdown?: boolean;
11
+ moreDropdownProps?: MoreDropdownProps;
12
+ };
13
+ type MoreDropdownProps = {
14
+ menuItems: MenuItem[];
15
+ disabled?: boolean;
16
+ dropdownButtonProps?: Record<string, any>;
17
+ dropdownProps?: Record<string, any>;
18
+ };
19
+ type MenuItem = {
20
+ key: string;
21
+ label: string;
22
+ onClick: () => void;
23
+ prefix?: React.ReactNode;
24
+ suffix?: React.ReactNode;
25
+ disabled?: boolean;
26
+ [key: string]: any;
27
+ };
28
+ /**
29
+ *
30
+ * A React component that displays a timeline of versions with user information,
31
+ *
32
+ * dates, and status indicators. Each version can be a draft, published, or regular
33
+ *
34
+ * version with optional dropdown actions.
35
+ *
36
+ * undefined
37
+ *
38
+ * undefined
39
+ *
40
+ * Each version object in draftVersions and publishedVersions should have the
41
+ *
42
+ * following properties:
43
+ *
44
+ * @example
45
+ *
46
+ * {
47
+ * id: string, // Required: Unique identifier for the version
48
+ * date: Date, // Required: Date when the version was created
49
+ * user: string, // Required: Name of the user who created this version
50
+ * onClick: function, // Optional: Function called when version is clicked
51
+ * isDraft: boolean, // Optional: Whether this is a draft version
52
+ * isPublished: boolean, // Optional: Whether this is a published version
53
+ * showMoreDropdown: boolean, // Optional: Whether to show more dropdown menu
54
+ * moreDropdownProps: object, // Optional: Props for MoreDropdown component
55
+ * }
56
+ * @endexample
57
+ * @example
58
+ *
59
+ * import VersionHistory from "@bigbinary/neeto-molecules/VersionHistory";
60
+ *
61
+ * const MyComponent = () => {
62
+ * const [isOpen, setIsOpen] = useState(false);
63
+ *
64
+ * const draftVersions = [
65
+ * {
66
+ * id: "draft-1",
67
+ * date: new Date("2024-01-15T10:30:00"),
68
+ * user: "Oliver Smith",
69
+ * isDraft: true,
70
+ * },
71
+ * ];
72
+ *
73
+ * const publishedVersions = [
74
+ * {
75
+ * id: "pub-1",
76
+ * date: new Date("2024-01-14T15:45:00"),
77
+ * user: "Sam Smith",
78
+ * isPublished: true,
79
+ * },
80
+ * ];
81
+ *
82
+ * return (
83
+ * <VersionHistory
84
+ * isOpen={isOpen}
85
+ * onClose={() => setIsOpen(false)}
86
+ * draftVersions={draftVersions}
87
+ * publishedVersions={publishedVersions}
88
+ * />
89
+ * );
90
+ * };
91
+ * @endexample
92
+ * @example
93
+ *
94
+ * import VersionHistory from "@bigbinary/neeto-molecules/VersionHistory";
95
+ * import { Refresh } from "neetoicons";
96
+ *
97
+ * const MyComponent = () => {
98
+ * const [isOpen, setIsOpen] = useState(false);
99
+ *
100
+ * const draftVersions = [
101
+ * {
102
+ * id: "draft-1",
103
+ * date: new Date("2024-01-15T10:30:00"),
104
+ * user: "Oliver Smith",
105
+ * isDraft: true,
106
+ * },
107
+ * ];
108
+ *
109
+ * const publishedVersions = [
110
+ * {
111
+ * id: "pub-1",
112
+ * date: new Date(),
113
+ * user: "Sam Smith",
114
+ * isPublished: true,
115
+ * showMoreDropdown: true,
116
+ * moreDropdownProps: {
117
+ * menuItems: [
118
+ * {
119
+ * key: "revert",
120
+ * label: "Revert to this version",
121
+ * onClick: () => handleRevert("version-1"),
122
+ * prefix: <Refresh size={16} />,
123
+ * },
124
+ * ],
125
+ * },
126
+ * },
127
+ * ];
128
+ *
129
+ * return (
130
+ * <VersionHistory
131
+ * isOpen={isOpen}
132
+ * onClose={() => setIsOpen(false)}
133
+ * draftVersions={draftVersions}
134
+ * publishedVersions={publishedVersions}
135
+ * />
136
+ * );
137
+ * };
138
+ * @endexample
139
+ * @example
140
+ *
141
+ * import VersionHistory from "@bigbinary/neeto-molecules/VersionHistory";
142
+ *
143
+ * const MyComponent = () => {
144
+ * const [isOpen, setIsOpen] = useState(false);
145
+ *
146
+ * const handleRefresh = () => {
147
+ * // Fetch updated versions
148
+ * fetchVersions();
149
+ * };
150
+ *
151
+ * const draftVersions = [
152
+ * {
153
+ * id: "draft-1",
154
+ * date: new Date("2024-01-15T10:30:00"),
155
+ * user: "Oliver Smith",
156
+ * isDraft: true,
157
+ * },
158
+ * ];
159
+ *
160
+ * const publishedVersions = [
161
+ * {
162
+ * id: "version-1",
163
+ * date: new Date(),
164
+ * user: "Sam Smith",
165
+ * isPublished: true,
166
+ * showMoreDropdown: true,
167
+ * moreDropdownProps: {
168
+ * menuItems: [
169
+ * {
170
+ * key: "revert",
171
+ * label: "Revert to this version",
172
+ * onClick: () => handleRevert("version-1"),
173
+ * prefix: <Refresh size={16} />,
174
+ * },
175
+ * ],
176
+ * },
177
+ * },
178
+ * ];
179
+ *
180
+ * return (
181
+ * <VersionHistory
182
+ * isOpen={isOpen}
183
+ * onClose={() => setIsOpen(false)}
184
+ * paneTitle="Article Version History"
185
+ * showRefreshButton={true}
186
+ * onRefreshClick={handleRefresh}
187
+ * draftVersions={draftVersions}
188
+ * publishedVersions={publishedVersions}
189
+ * />
190
+ * );
191
+ * };
192
+ * @endexample
193
+ */
194
+ declare const VersionHistory: React.FC<{
195
+ isOpen: boolean;
196
+ onClose: () => void;
197
+ isLoading?: boolean;
198
+ draftVersions?: Version[];
199
+ publishedVersions?: Version[];
200
+ paneTitle?: string;
201
+ showRefreshButton?: boolean;
202
+ onRefreshClick?: () => void;
203
+ }>;
204
+
205
+ export { VersionHistory as default };