@nice2dev/social 1.0.6 → 1.0.10

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 (2) hide show
  1. package/dist/index.mjs +539 -483
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -1,417 +1,456 @@
1
1
  import { jsxs as c, jsx as e, Fragment as H } from "react/jsx-runtime";
2
2
  import { forwardRef as R, useState as $, useCallback as D, useMemo as F } from "react";
3
- const ee = R(function(p, I) {
4
- const {
5
- comments: m,
6
- currentUserId: a,
7
- onSubmit: o,
8
- onEdit: _,
9
- onDelete: g,
10
- onReact: r,
11
- readOnly: w = !1,
12
- maxDepth: T = 4,
13
- reactions: E = ["👍", "❤️", "😂", "😮", "😢"],
14
- placeholder: b = "Write a comment…",
15
- className: C,
16
- style: S
17
- } = p, [v, i] = $(""), [h, N] = $(null), [n, t] = $(""), [l, s] = $(null), [k, L] = $(""), A = /* @__PURE__ */ new Map();
18
- for (const d of m) {
19
- const P = d.parentId ?? "__root__";
20
- A.has(P) || A.set(P, []), A.get(P).push(d);
21
- }
22
- const j = D(() => {
23
- !v.trim() || !o || (o(v.trim()), i(""));
24
- }, [v, o]), z = D(() => {
25
- !n.trim() || !o || !h || (o(n.trim(), h), t(""), N(null));
26
- }, [n, h, o]), x = D(() => {
27
- !l || !k.trim() || !_ || (_(l, k.trim()), s(null), L(""));
28
- }, [l, k, _]), W = (d, P) => {
29
- const U = a && d.authorId === a, u = A.get(d.id) ?? [];
30
- return /* @__PURE__ */ c("div", { className: "nice-comments__item", style: { marginLeft: P * 24 }, children: [
31
- /* @__PURE__ */ c("div", { className: "nice-comments__header", children: [
32
- d.authorAvatarUrl && /* @__PURE__ */ e("img", { src: d.authorAvatarUrl, alt: "", className: "nice-comments__avatar" }),
33
- /* @__PURE__ */ e("strong", { className: "nice-comments__author", children: d.authorName }),
34
- /* @__PURE__ */ e("time", { className: "nice-comments__time", children: d.createdAt }),
35
- d.isEdited && /* @__PURE__ */ e("span", { className: "nice-comments__edited", children: "(edited)" })
36
- ] }),
37
- l === d.id ? /* @__PURE__ */ c("div", { className: "nice-comments__edit-form", children: [
38
- /* @__PURE__ */ e("textarea", { value: k, onChange: (y) => L(y.target.value) }),
39
- /* @__PURE__ */ e("button", { onClick: x, children: "Save" }),
40
- /* @__PURE__ */ e("button", { onClick: () => s(null), children: "Cancel" })
41
- ] }) : /* @__PURE__ */ e("p", { className: "nice-comments__content", children: d.isDeleted ? /* @__PURE__ */ e("em", { children: "Comment deleted" }) : d.content }),
42
- !d.isDeleted && d.reactions && /* @__PURE__ */ e("div", { className: "nice-comments__reactions", children: Object.entries(d.reactions).map(([y, f]) => /* @__PURE__ */ c(
43
- "button",
44
- {
45
- className: "nice-comments__reaction",
46
- onClick: () => r == null ? void 0 : r(d.id, y),
47
- children: [
48
- y,
49
- " ",
50
- f
51
- ]
52
- },
53
- y
54
- )) }),
55
- !d.isDeleted && !w && /* @__PURE__ */ c("div", { className: "nice-comments__actions", children: [
56
- r && E.map((y) => /* @__PURE__ */ e("button", { onClick: () => r(d.id, y), title: y, children: y }, y)),
57
- P < T && /* @__PURE__ */ e("button", { onClick: () => {
58
- N(d.id), t("");
59
- }, children: "Reply" }),
60
- U && _ && /* @__PURE__ */ e("button", { onClick: () => {
61
- s(d.id), L(d.content);
62
- }, children: "Edit" }),
63
- U && g && /* @__PURE__ */ e("button", { onClick: () => g(d.id), children: "Delete" })
64
- ] }),
65
- h === d.id && /* @__PURE__ */ c("div", { className: "nice-comments__reply-form", children: [
3
+ const ee = R(
4
+ function(p, I) {
5
+ const {
6
+ comments: m,
7
+ currentUserId: a,
8
+ onSubmit: o,
9
+ onEdit: _,
10
+ onDelete: g,
11
+ onReact: r,
12
+ readOnly: w = !1,
13
+ maxDepth: T = 4,
14
+ reactions: E = ["👍", "❤️", "😂", "😮", "😢"],
15
+ placeholder: b = "Write a comment…",
16
+ className: C,
17
+ style: S
18
+ } = p, [v, i] = $(""), [h, N] = $(null), [n, t] = $(""), [l, s] = $(null), [k, L] = $(""), A = /* @__PURE__ */ new Map();
19
+ for (const d of m) {
20
+ const P = d.parentId ?? "__root__";
21
+ A.has(P) || A.set(P, []), A.get(P).push(d);
22
+ }
23
+ const j = D(() => {
24
+ !v.trim() || !o || (o(v.trim()), i(""));
25
+ }, [v, o]), z = D(() => {
26
+ !n.trim() || !o || !h || (o(n.trim(), h), t(""), N(null));
27
+ }, [n, h, o]), x = D(() => {
28
+ !l || !k.trim() || !_ || (_(l, k.trim()), s(null), L(""));
29
+ }, [l, k, _]), W = (d, P) => {
30
+ const U = a && d.authorId === a, u = A.get(d.id) ?? [];
31
+ return /* @__PURE__ */ c("div", { className: "nice-comments__item", style: { marginLeft: P * 24 }, children: [
32
+ /* @__PURE__ */ c("div", { className: "nice-comments__header", children: [
33
+ d.authorAvatarUrl && /* @__PURE__ */ e("img", { src: d.authorAvatarUrl, alt: "", className: "nice-comments__avatar" }),
34
+ /* @__PURE__ */ e("strong", { className: "nice-comments__author", children: d.authorName }),
35
+ /* @__PURE__ */ e("time", { className: "nice-comments__time", children: d.createdAt }),
36
+ d.isEdited && /* @__PURE__ */ e("span", { className: "nice-comments__edited", children: "(edited)" })
37
+ ] }),
38
+ l === d.id ? /* @__PURE__ */ c("div", { className: "nice-comments__edit-form", children: [
39
+ /* @__PURE__ */ e("textarea", { value: k, onChange: (y) => L(y.target.value) }),
40
+ /* @__PURE__ */ e("button", { onClick: x, children: "Save" }),
41
+ /* @__PURE__ */ e("button", { onClick: () => s(null), children: "Cancel" })
42
+ ] }) : /* @__PURE__ */ e("p", { className: "nice-comments__content", children: d.isDeleted ? /* @__PURE__ */ e("em", { children: "Comment deleted" }) : d.content }),
43
+ !d.isDeleted && d.reactions && /* @__PURE__ */ e("div", { className: "nice-comments__reactions", children: Object.entries(d.reactions).map(([y, f]) => /* @__PURE__ */ c(
44
+ "button",
45
+ {
46
+ className: "nice-comments__reaction",
47
+ onClick: () => r == null ? void 0 : r(d.id, y),
48
+ children: [
49
+ y,
50
+ " ",
51
+ f
52
+ ]
53
+ },
54
+ y
55
+ )) }),
56
+ !d.isDeleted && !w && /* @__PURE__ */ c("div", { className: "nice-comments__actions", children: [
57
+ r && E.map((y) => /* @__PURE__ */ e("button", { onClick: () => r(d.id, y), title: y, children: y }, y)),
58
+ P < T && /* @__PURE__ */ e(
59
+ "button",
60
+ {
61
+ onClick: () => {
62
+ N(d.id), t("");
63
+ },
64
+ children: "Reply"
65
+ }
66
+ ),
67
+ U && _ && /* @__PURE__ */ e(
68
+ "button",
69
+ {
70
+ onClick: () => {
71
+ s(d.id), L(d.content);
72
+ },
73
+ children: "Edit"
74
+ }
75
+ ),
76
+ U && g && /* @__PURE__ */ e("button", { onClick: () => g(d.id), children: "Delete" })
77
+ ] }),
78
+ h === d.id && /* @__PURE__ */ c("div", { className: "nice-comments__reply-form", children: [
79
+ /* @__PURE__ */ e(
80
+ "textarea",
81
+ {
82
+ value: n,
83
+ onChange: (y) => t(y.target.value),
84
+ placeholder: "Write a reply…"
85
+ }
86
+ ),
87
+ /* @__PURE__ */ e("button", { onClick: z, disabled: !n.trim(), children: "Send" }),
88
+ /* @__PURE__ */ e("button", { onClick: () => N(null), children: "Cancel" })
89
+ ] }),
90
+ u.map((y) => W(y, P + 1))
91
+ ] }, d.id);
92
+ }, O = A.get("__root__") ?? [];
93
+ return /* @__PURE__ */ c("div", { ref: I, className: `nice-comments ${C ?? ""}`, style: S, children: [
94
+ !w && /* @__PURE__ */ c("div", { className: "nice-comments__new", children: [
66
95
  /* @__PURE__ */ e(
67
96
  "textarea",
68
97
  {
69
- value: n,
70
- onChange: (y) => t(y.target.value),
71
- placeholder: "Write a reply…"
98
+ value: v,
99
+ onChange: (d) => i(d.target.value),
100
+ placeholder: b
72
101
  }
73
102
  ),
74
- /* @__PURE__ */ e("button", { onClick: z, disabled: !n.trim(), children: "Send" }),
75
- /* @__PURE__ */ e("button", { onClick: () => N(null), children: "Cancel" })
103
+ /* @__PURE__ */ e("button", { onClick: j, disabled: !v.trim(), children: "Post" })
76
104
  ] }),
77
- u.map((y) => W(y, P + 1))
78
- ] }, d.id);
79
- }, O = A.get("__root__") ?? [];
80
- return /* @__PURE__ */ c("div", { ref: I, className: `nice-comments ${C ?? ""}`, style: S, children: [
81
- !w && /* @__PURE__ */ c("div", { className: "nice-comments__new", children: [
105
+ O.length === 0 ? /* @__PURE__ */ e("p", { className: "nice-comments__empty", children: "No comments yet." }) : O.map((d) => W(d, 0))
106
+ ] });
107
+ }
108
+ ), V = "", Y = "★", q = "♡", G = "", ie = R(
109
+ function(p, I) {
110
+ const {
111
+ value: m,
112
+ max: a = 5,
113
+ mode: o = "stars",
114
+ aggregation: _,
115
+ onChange: g,
116
+ readOnly: r = !1,
117
+ size: w = "md",
118
+ showValue: T = !1,
119
+ label: E,
120
+ emojiSet: b = ["😢", "😕", "😐", "🙂", "😍"],
121
+ className: C,
122
+ style: S
123
+ } = p, [v, i] = $(null), h = v !== null ? v + 1 : m ?? 0, N = D(
124
+ (l) => {
125
+ r || !g || g(l + 1);
126
+ },
127
+ [r, g]
128
+ ), n = () => {
129
+ const l = [];
130
+ for (let s = 0; s < a; s++) {
131
+ const k = s < h;
132
+ let L;
133
+ o === "emoji" ? L = b[s] ?? b[b.length - 1] : o === "hearts" ? L = k ? G : q : o === "thumbs" ? L = k ? "👍" : "👎" : L = k ? Y : V, l.push(
134
+ /* @__PURE__ */ e(
135
+ "span",
136
+ {
137
+ className: `nice-ratings__symbol ${k ? "nice-ratings__symbol--active" : ""}`,
138
+ onClick: () => N(s),
139
+ onMouseEnter: () => !r && i(s),
140
+ onMouseLeave: () => !r && i(null),
141
+ role: r ? void 0 : "button",
142
+ tabIndex: r ? void 0 : 0,
143
+ onKeyDown: (A) => {
144
+ (A.key === "Enter" || A.key === " ") && N(s);
145
+ },
146
+ children: L
147
+ },
148
+ s
149
+ )
150
+ );
151
+ }
152
+ return l;
153
+ }, t = () => /* @__PURE__ */ c("div", { className: "nice-ratings__numeric", children: [
82
154
  /* @__PURE__ */ e(
83
- "textarea",
155
+ "input",
84
156
  {
85
- value: v,
86
- onChange: (d) => i(d.target.value),
87
- placeholder: b
157
+ type: "number",
158
+ min: 0,
159
+ max: a,
160
+ step: 0.5,
161
+ value: m ?? 0,
162
+ onChange: (l) => g == null ? void 0 : g(parseFloat(l.target.value) || 0),
163
+ readOnly: r,
164
+ className: "nice-ratings__numeric-input"
88
165
  }
89
166
  ),
90
- /* @__PURE__ */ e("button", { onClick: j, disabled: !v.trim(), children: "Post" })
91
- ] }),
92
- O.length === 0 ? /* @__PURE__ */ e("p", { className: "nice-comments__empty", children: "No comments yet." }) : O.map((d) => W(d, 0))
93
- ] });
94
- }), V = "☆", Y = "★", q = "♡", G = "♥", ie = R(function(p, I) {
95
- const {
96
- value: m,
97
- max: a = 5,
98
- mode: o = "stars",
99
- aggregation: _,
100
- onChange: g,
101
- readOnly: r = !1,
102
- size: w = "md",
103
- showValue: T = !1,
104
- label: E,
105
- emojiSet: b = ["😢", "😕", "😐", "🙂", "😍"],
106
- className: C,
107
- style: S
108
- } = p, [v, i] = $(null), h = v !== null ? v + 1 : m ?? 0, N = D((l) => {
109
- r || !g || g(l + 1);
110
- }, [r, g]), n = () => {
111
- const l = [];
112
- for (let s = 0; s < a; s++) {
113
- const k = s < h;
114
- let L;
115
- o === "emoji" ? L = b[s] ?? b[b.length - 1] : o === "hearts" ? L = k ? G : q : o === "thumbs" ? L = k ? "👍" : "👎" : L = k ? Y : V, l.push(
116
- /* @__PURE__ */ e(
117
- "span",
167
+ /* @__PURE__ */ c("span", { className: "nice-ratings__numeric-max", children: [
168
+ "/ ",
169
+ a
170
+ ] })
171
+ ] });
172
+ return /* @__PURE__ */ c(
173
+ "div",
174
+ {
175
+ ref: I,
176
+ className: `nice-ratings nice-ratings--${w} nice-ratings--${o} ${r ? "nice-ratings--readonly" : ""} ${C ?? ""}`,
177
+ style: S,
178
+ children: [
179
+ E && /* @__PURE__ */ e("span", { className: "nice-ratings__label", children: E }),
180
+ /* @__PURE__ */ c("div", { className: "nice-ratings__body", children: [
181
+ o === "numeric" ? t() : n(),
182
+ T && o !== "numeric" && /* @__PURE__ */ c("span", { className: "nice-ratings__value", children: [
183
+ h,
184
+ " / ",
185
+ a
186
+ ] })
187
+ ] }),
188
+ _ && /* @__PURE__ */ c("div", { className: "nice-ratings__aggregation", children: [
189
+ /* @__PURE__ */ e("span", { className: "nice-ratings__avg", children: _.average.toFixed(1) }),
190
+ /* @__PURE__ */ c("span", { className: "nice-ratings__count", children: [
191
+ "(",
192
+ _.count,
193
+ " ratings)"
194
+ ] }),
195
+ _.distribution && /* @__PURE__ */ e("div", { className: "nice-ratings__distribution", children: Object.entries(_.distribution).sort(([l], [s]) => +s - +l).map(([l, s]) => /* @__PURE__ */ c("div", { className: "nice-ratings__distribution-row", children: [
196
+ /* @__PURE__ */ e("span", { children: l }),
197
+ /* @__PURE__ */ e("div", { className: "nice-ratings__bar", children: /* @__PURE__ */ e(
198
+ "div",
199
+ {
200
+ className: "nice-ratings__bar-fill",
201
+ style: {
202
+ width: `${_.count ? s / _.count * 100 : 0}%`
203
+ }
204
+ }
205
+ ) }),
206
+ /* @__PURE__ */ e("span", { children: s })
207
+ ] }, l)) })
208
+ ] })
209
+ ]
210
+ }
211
+ );
212
+ }
213
+ ), te = R(
214
+ function(p, I) {
215
+ const {
216
+ stats: m,
217
+ userState: a,
218
+ onLike: o,
219
+ onShare: _,
220
+ onBookmark: g,
221
+ direction: r = "horizontal",
222
+ size: w = "md",
223
+ showCounts: T = !0,
224
+ showLabels: E = !1,
225
+ className: b,
226
+ style: C
227
+ } = p, S = D((i) => i >= 1e6 ? (i / 1e6).toFixed(1) + "M" : i >= 1e3 ? (i / 1e3).toFixed(1) + "K" : i.toString(), []), v = [
228
+ {
229
+ key: "like",
230
+ icon: "♡",
231
+ activeIcon: "♥",
232
+ label: "Like",
233
+ count: m.likes,
234
+ isActive: (a == null ? void 0 : a.liked) ?? !1,
235
+ onClick: o
236
+ },
237
+ {
238
+ key: "share",
239
+ icon: "↗",
240
+ activeIcon: "↗",
241
+ label: "Share",
242
+ count: m.shares,
243
+ isActive: (a == null ? void 0 : a.shared) ?? !1,
244
+ onClick: _
245
+ },
246
+ {
247
+ key: "bookmark",
248
+ icon: "☆",
249
+ activeIcon: "★",
250
+ label: "Bookmark",
251
+ count: m.bookmarks,
252
+ isActive: (a == null ? void 0 : a.bookmarked) ?? !1,
253
+ onClick: g
254
+ }
255
+ ];
256
+ return /* @__PURE__ */ e(
257
+ "div",
258
+ {
259
+ ref: I,
260
+ className: `nice-social-panel nice-social-panel--${r} nice-social-panel--${w} ${b ?? ""}`,
261
+ style: C,
262
+ children: v.map((i) => /* @__PURE__ */ c(
263
+ "button",
118
264
  {
119
- className: `nice-ratings__symbol ${k ? "nice-ratings__symbol--active" : ""}`,
120
- onClick: () => N(s),
121
- onMouseEnter: () => !r && i(s),
122
- onMouseLeave: () => !r && i(null),
123
- role: r ? void 0 : "button",
124
- tabIndex: r ? void 0 : 0,
125
- onKeyDown: (A) => {
126
- (A.key === "Enter" || A.key === " ") && N(s);
127
- },
128
- children: L
265
+ className: `nice-social-panel__btn nice-social-panel__btn--${i.key} ${i.isActive ? "nice-social-panel__btn--active" : ""}`,
266
+ onClick: i.onClick,
267
+ title: i.label,
268
+ children: [
269
+ /* @__PURE__ */ e("span", { className: "nice-social-panel__icon", children: i.isActive ? i.activeIcon : i.icon }),
270
+ E && /* @__PURE__ */ e("span", { className: "nice-social-panel__label", children: i.label }),
271
+ T && /* @__PURE__ */ e("span", { className: "nice-social-panel__count", children: S(i.count) })
272
+ ]
129
273
  },
130
- s
131
- )
132
- );
133
- }
134
- return l;
135
- }, t = () => /* @__PURE__ */ c("div", { className: "nice-ratings__numeric", children: [
136
- /* @__PURE__ */ e(
137
- "input",
138
- {
139
- type: "number",
140
- min: 0,
141
- max: a,
142
- step: 0.5,
143
- value: m ?? 0,
144
- onChange: (l) => g == null ? void 0 : g(parseFloat(l.target.value) || 0),
145
- readOnly: r,
146
- className: "nice-ratings__numeric-input"
274
+ i.key
275
+ ))
147
276
  }
148
- ),
149
- /* @__PURE__ */ c("span", { className: "nice-ratings__numeric-max", children: [
150
- "/ ",
151
- a
152
- ] })
153
- ] });
154
- return /* @__PURE__ */ c(
155
- "div",
156
- {
157
- ref: I,
158
- className: `nice-ratings nice-ratings--${w} nice-ratings--${o} ${r ? "nice-ratings--readonly" : ""} ${C ?? ""}`,
159
- style: S,
160
- children: [
161
- E && /* @__PURE__ */ e("span", { className: "nice-ratings__label", children: E }),
162
- /* @__PURE__ */ c("div", { className: "nice-ratings__body", children: [
163
- o === "numeric" ? t() : n(),
164
- T && o !== "numeric" && /* @__PURE__ */ c("span", { className: "nice-ratings__value", children: [
165
- h,
166
- " / ",
167
- a
168
- ] })
169
- ] }),
170
- _ && /* @__PURE__ */ c("div", { className: "nice-ratings__aggregation", children: [
171
- /* @__PURE__ */ e("span", { className: "nice-ratings__avg", children: _.average.toFixed(1) }),
172
- /* @__PURE__ */ c("span", { className: "nice-ratings__count", children: [
173
- "(",
174
- _.count,
175
- " ratings)"
176
- ] }),
177
- _.distribution && /* @__PURE__ */ e("div", { className: "nice-ratings__distribution", children: Object.entries(_.distribution).sort(([l], [s]) => +s - +l).map(([l, s]) => /* @__PURE__ */ c("div", { className: "nice-ratings__distribution-row", children: [
178
- /* @__PURE__ */ e("span", { children: l }),
179
- /* @__PURE__ */ e("div", { className: "nice-ratings__bar", children: /* @__PURE__ */ e(
180
- "div",
181
- {
182
- className: "nice-ratings__bar-fill",
183
- style: { width: `${_.count ? s / _.count * 100 : 0}%` }
184
- }
185
- ) }),
186
- /* @__PURE__ */ e("span", { children: s })
187
- ] }, l)) })
188
- ] })
189
- ]
190
- }
191
- );
192
- }), te = R(function(p, I) {
193
- const {
194
- stats: m,
195
- userState: a,
196
- onLike: o,
197
- onShare: _,
198
- onBookmark: g,
199
- direction: r = "horizontal",
200
- size: w = "md",
201
- showCounts: T = !0,
202
- showLabels: E = !1,
203
- className: b,
204
- style: C
205
- } = p, S = D((i) => i >= 1e6 ? (i / 1e6).toFixed(1) + "M" : i >= 1e3 ? (i / 1e3).toFixed(1) + "K" : i.toString(), []), v = [
206
- {
207
- key: "like",
208
- icon: "♡",
209
- activeIcon: "♥",
210
- label: "Like",
211
- count: m.likes,
212
- isActive: (a == null ? void 0 : a.liked) ?? !1,
213
- onClick: o
214
- },
215
- {
216
- key: "share",
217
- icon: "↗",
218
- activeIcon: "↗",
219
- label: "Share",
220
- count: m.shares,
221
- isActive: (a == null ? void 0 : a.shared) ?? !1,
222
- onClick: _
223
- },
224
- {
225
- key: "bookmark",
226
- icon: "☆",
227
- activeIcon: "★",
228
- label: "Bookmark",
229
- count: m.bookmarks,
230
- isActive: (a == null ? void 0 : a.bookmarked) ?? !1,
231
- onClick: g
232
- }
233
- ];
234
- return /* @__PURE__ */ e(
235
- "div",
236
- {
237
- ref: I,
238
- className: `nice-social-panel nice-social-panel--${r} nice-social-panel--${w} ${b ?? ""}`,
239
- style: C,
240
- children: v.map((i) => /* @__PURE__ */ c(
241
- "button",
277
+ );
278
+ }
279
+ ), ne = R(
280
+ function(p, I) {
281
+ const {
282
+ tags: m,
283
+ onTagClick: a,
284
+ minFontSize: o = 12,
285
+ maxFontSize: _ = 36,
286
+ sortBy: g = "weight",
287
+ maxTags: r,
288
+ selectedIds: w,
289
+ className: T,
290
+ style: E
291
+ } = p, b = F(() => {
292
+ let i = [...m];
293
+ if (g === "weight")
294
+ i.sort((h, N) => N.weight - h.weight);
295
+ else if (g === "alphabetical")
296
+ i.sort((h, N) => h.label.localeCompare(N.label));
297
+ else
298
+ for (let h = i.length - 1; h > 0; h--) {
299
+ const N = Math.floor(Math.random() * (h + 1));
300
+ [i[h], i[N]] = [i[N], i[h]];
301
+ }
302
+ return r && i.length > r && (i = i.slice(0, r)), i;
303
+ }, [m, g, r]), { minW: C, maxW: S } = F(() => {
304
+ if (b.length === 0)
305
+ return { minW: 0, maxW: 1 };
306
+ const i = b.map((h) => h.weight);
307
+ return { minW: Math.min(...i), maxW: Math.max(...i) };
308
+ }, [b]), v = (i) => {
309
+ if (S === C)
310
+ return (o + _) / 2;
311
+ const h = (i - C) / (S - C);
312
+ return o + h * (_ - o);
313
+ };
314
+ return /* @__PURE__ */ e("div", { ref: I, className: `nice-tag-cloud ${T ?? ""}`, style: E, children: b.length === 0 ? /* @__PURE__ */ e("p", { className: "nice-tag-cloud__empty", children: "No tags." }) : b.map((i) => {
315
+ const h = w == null ? void 0 : w.includes(i.id), N = v(i.weight);
316
+ return /* @__PURE__ */ e(
317
+ "span",
242
318
  {
243
- className: `nice-social-panel__btn nice-social-panel__btn--${i.key} ${i.isActive ? "nice-social-panel__btn--active" : ""}`,
244
- onClick: i.onClick,
245
- title: i.label,
246
- children: [
247
- /* @__PURE__ */ e("span", { className: "nice-social-panel__icon", children: i.isActive ? i.activeIcon : i.icon }),
248
- E && /* @__PURE__ */ e("span", { className: "nice-social-panel__label", children: i.label }),
249
- T && /* @__PURE__ */ e("span", { className: "nice-social-panel__count", children: S(i.count) })
250
- ]
319
+ className: `nice-tag-cloud__tag ${h ? "nice-tag-cloud__tag--selected" : ""}`,
320
+ style: {
321
+ fontSize: N,
322
+ color: i.color,
323
+ cursor: a ? "pointer" : void 0
324
+ },
325
+ onClick: () => a == null ? void 0 : a(i),
326
+ role: a ? "button" : void 0,
327
+ tabIndex: a ? 0 : void 0,
328
+ onKeyDown: (n) => {
329
+ (n.key === "Enter" || n.key === " ") && a && a(i);
330
+ },
331
+ title: `${i.label} (${i.weight})`,
332
+ children: i.label
251
333
  },
252
- i.key
253
- ))
254
- }
255
- );
256
- }), ne = R(function(p, I) {
257
- const {
258
- tags: m,
259
- onTagClick: a,
260
- minFontSize: o = 12,
261
- maxFontSize: _ = 36,
262
- sortBy: g = "weight",
263
- maxTags: r,
264
- selectedIds: w,
265
- className: T,
266
- style: E
267
- } = p, b = F(() => {
268
- let i = [...m];
269
- if (g === "weight")
270
- i.sort((h, N) => N.weight - h.weight);
271
- else if (g === "alphabetical")
272
- i.sort((h, N) => h.label.localeCompare(N.label));
273
- else
274
- for (let h = i.length - 1; h > 0; h--) {
275
- const N = Math.floor(Math.random() * (h + 1));
276
- [i[h], i[N]] = [i[N], i[h]];
334
+ i.id
335
+ );
336
+ }) });
337
+ }
338
+ ), J = {
339
+ online: "#22c55e",
340
+ away: "#eab308",
341
+ busy: "#ef4444",
342
+ offline: "#9ca3af"
343
+ }, ae = R(
344
+ function(p, I) {
345
+ const {
346
+ users: m,
347
+ onUserClick: a,
348
+ onAction: o,
349
+ actions: _ = [],
350
+ searchable: g = !1,
351
+ statusFilter: r,
352
+ showStatus: w = !0,
353
+ layout: T = "list",
354
+ groupByRole: E = !1,
355
+ className: b,
356
+ style: C
357
+ } = p, [S, v] = $(""), i = F(() => {
358
+ let n = m;
359
+ if (r && r.length > 0 && (n = n.filter((t) => t.status && r.includes(t.status))), S.trim()) {
360
+ const t = S.toLowerCase();
361
+ n = n.filter(
362
+ (l) => {
363
+ var s, k;
364
+ return l.name.toLowerCase().includes(t) || ((s = l.email) == null ? void 0 : s.toLowerCase().includes(t)) || ((k = l.role) == null ? void 0 : k.toLowerCase().includes(t));
365
+ }
366
+ );
277
367
  }
278
- return r && i.length > r && (i = i.slice(0, r)), i;
279
- }, [m, g, r]), { minW: C, maxW: S } = F(() => {
280
- if (b.length === 0) return { minW: 0, maxW: 1 };
281
- const i = b.map((h) => h.weight);
282
- return { minW: Math.min(...i), maxW: Math.max(...i) };
283
- }, [b]), v = (i) => {
284
- if (S === C) return (o + _) / 2;
285
- const h = (i - C) / (S - C);
286
- return o + h * (_ - o);
287
- };
288
- return /* @__PURE__ */ e("div", { ref: I, className: `nice-tag-cloud ${T ?? ""}`, style: E, children: b.length === 0 ? /* @__PURE__ */ e("p", { className: "nice-tag-cloud__empty", children: "No tags." }) : b.map((i) => {
289
- const h = w == null ? void 0 : w.includes(i.id), N = v(i.weight);
290
- return /* @__PURE__ */ e(
291
- "span",
368
+ return n;
369
+ }, [m, r, S]), h = F(() => {
370
+ if (!E)
371
+ return { "": i };
372
+ const n = {};
373
+ for (const t of i) {
374
+ const l = t.role ?? "Other";
375
+ n[l] || (n[l] = []), n[l].push(t);
376
+ }
377
+ return n;
378
+ }, [i, E]), N = (n) => /* @__PURE__ */ c(
379
+ "div",
292
380
  {
293
- className: `nice-tag-cloud__tag ${h ? "nice-tag-cloud__tag--selected" : ""}`,
294
- style: {
295
- fontSize: N,
296
- color: i.color,
297
- cursor: a ? "pointer" : void 0
298
- },
299
- onClick: () => a == null ? void 0 : a(i),
381
+ className: `nice-user-list__item nice-user-list__item--${T}`,
382
+ onClick: () => a == null ? void 0 : a(n),
300
383
  role: a ? "button" : void 0,
301
384
  tabIndex: a ? 0 : void 0,
302
- onKeyDown: (n) => {
303
- (n.key === "Enter" || n.key === " ") && a && a(i);
385
+ onKeyDown: (t) => {
386
+ t.key === "Enter" && a && a(n);
304
387
  },
305
- title: `${i.label} (${i.weight})`,
306
- children: i.label
388
+ children: [
389
+ /* @__PURE__ */ c("div", { className: "nice-user-list__avatar-wrap", children: [
390
+ n.avatarUrl ? /* @__PURE__ */ e("img", { src: n.avatarUrl, alt: n.name, className: "nice-user-list__avatar" }) : /* @__PURE__ */ e("span", { className: "nice-user-list__avatar-placeholder", children: n.name.charAt(0).toUpperCase() }),
391
+ w && n.status && /* @__PURE__ */ e(
392
+ "span",
393
+ {
394
+ className: "nice-user-list__status-dot",
395
+ style: { backgroundColor: J[n.status] },
396
+ title: n.status
397
+ }
398
+ )
399
+ ] }),
400
+ /* @__PURE__ */ c("div", { className: "nice-user-list__info", children: [
401
+ /* @__PURE__ */ e("span", { className: "nice-user-list__name", children: n.name }),
402
+ n.email && /* @__PURE__ */ e("span", { className: "nice-user-list__email", children: n.email }),
403
+ n.role && /* @__PURE__ */ e("span", { className: "nice-user-list__role", children: n.role })
404
+ ] }),
405
+ _.length > 0 && /* @__PURE__ */ e("div", { className: "nice-user-list__actions", children: _.map((t) => /* @__PURE__ */ e(
406
+ "button",
407
+ {
408
+ className: "nice-user-list__action-btn",
409
+ onClick: (l) => {
410
+ l.stopPropagation(), o == null || o(n, t);
411
+ },
412
+ children: t
413
+ },
414
+ t
415
+ )) })
416
+ ]
307
417
  },
308
- i.id
418
+ n.id
309
419
  );
310
- }) });
311
- }), J = {
312
- online: "#22c55e",
313
- away: "#eab308",
314
- busy: "#ef4444",
315
- offline: "#9ca3af"
316
- }, ae = R(function(p, I) {
317
- const {
318
- users: m,
319
- onUserClick: a,
320
- onAction: o,
321
- actions: _ = [],
322
- searchable: g = !1,
323
- statusFilter: r,
324
- showStatus: w = !0,
325
- layout: T = "list",
326
- groupByRole: E = !1,
327
- className: b,
328
- style: C
329
- } = p, [S, v] = $(""), i = F(() => {
330
- let n = m;
331
- if (r && r.length > 0 && (n = n.filter((t) => t.status && r.includes(t.status))), S.trim()) {
332
- const t = S.toLowerCase();
333
- n = n.filter(
334
- (l) => {
335
- var s, k;
336
- return l.name.toLowerCase().includes(t) || ((s = l.email) == null ? void 0 : s.toLowerCase().includes(t)) || ((k = l.role) == null ? void 0 : k.toLowerCase().includes(t));
337
- }
338
- );
339
- }
340
- return n;
341
- }, [m, r, S]), h = F(() => {
342
- if (!E) return { "": i };
343
- const n = {};
344
- for (const t of i) {
345
- const l = t.role ?? "Other";
346
- n[l] || (n[l] = []), n[l].push(t);
347
- }
348
- return n;
349
- }, [i, E]), N = (n) => /* @__PURE__ */ c(
350
- "div",
351
- {
352
- className: `nice-user-list__item nice-user-list__item--${T}`,
353
- onClick: () => a == null ? void 0 : a(n),
354
- role: a ? "button" : void 0,
355
- tabIndex: a ? 0 : void 0,
356
- onKeyDown: (t) => {
357
- t.key === "Enter" && a && a(n);
358
- },
359
- children: [
360
- /* @__PURE__ */ c("div", { className: "nice-user-list__avatar-wrap", children: [
361
- n.avatarUrl ? /* @__PURE__ */ e("img", { src: n.avatarUrl, alt: n.name, className: "nice-user-list__avatar" }) : /* @__PURE__ */ e("span", { className: "nice-user-list__avatar-placeholder", children: n.name.charAt(0).toUpperCase() }),
362
- w && n.status && /* @__PURE__ */ e(
363
- "span",
420
+ return /* @__PURE__ */ c(
421
+ "div",
422
+ {
423
+ ref: I,
424
+ className: `nice-user-list nice-user-list--${T} ${b ?? ""}`,
425
+ style: C,
426
+ children: [
427
+ g && /* @__PURE__ */ e(
428
+ "input",
364
429
  {
365
- className: "nice-user-list__status-dot",
366
- style: { backgroundColor: J[n.status] },
367
- title: n.status
430
+ type: "text",
431
+ value: S,
432
+ onChange: (n) => v(n.target.value),
433
+ placeholder: "Search users…",
434
+ className: "nice-user-list__search"
368
435
  }
369
- )
370
- ] }),
371
- /* @__PURE__ */ c("div", { className: "nice-user-list__info", children: [
372
- /* @__PURE__ */ e("span", { className: "nice-user-list__name", children: n.name }),
373
- n.email && /* @__PURE__ */ e("span", { className: "nice-user-list__email", children: n.email }),
374
- n.role && /* @__PURE__ */ e("span", { className: "nice-user-list__role", children: n.role })
375
- ] }),
376
- _.length > 0 && /* @__PURE__ */ e("div", { className: "nice-user-list__actions", children: _.map((t) => /* @__PURE__ */ e(
377
- "button",
378
- {
379
- className: "nice-user-list__action-btn",
380
- onClick: (l) => {
381
- l.stopPropagation(), o == null || o(n, t);
382
- },
383
- children: t
384
- },
385
- t
386
- )) })
387
- ]
388
- },
389
- n.id
390
- );
391
- return /* @__PURE__ */ c("div", { ref: I, className: `nice-user-list nice-user-list--${T} ${b ?? ""}`, style: C, children: [
392
- g && /* @__PURE__ */ e(
393
- "input",
394
- {
395
- type: "text",
396
- value: S,
397
- onChange: (n) => v(n.target.value),
398
- placeholder: "Search users…",
399
- className: "nice-user-list__search"
436
+ ),
437
+ i.length === 0 ? /* @__PURE__ */ e("p", { className: "nice-user-list__empty", children: "No users found." }) : Object.entries(h).map(([n, t]) => /* @__PURE__ */ c("div", { className: "nice-user-list__group", children: [
438
+ E && n && /* @__PURE__ */ c("h4", { className: "nice-user-list__group-title", children: [
439
+ n,
440
+ " (",
441
+ t.length,
442
+ ")"
443
+ ] }),
444
+ t.map(N)
445
+ ] }, n))
446
+ ]
400
447
  }
401
- ),
402
- i.length === 0 ? /* @__PURE__ */ e("p", { className: "nice-user-list__empty", children: "No users found." }) : Object.entries(h).map(([n, t]) => /* @__PURE__ */ c("div", { className: "nice-user-list__group", children: [
403
- E && n && /* @__PURE__ */ c("h4", { className: "nice-user-list__group-title", children: [
404
- n,
405
- " (",
406
- t.length,
407
- ")"
408
- ] }),
409
- t.map(N)
410
- ] }, n))
411
- ] });
412
- });
448
+ );
449
+ }
450
+ );
413
451
  function Q(M) {
414
- if (!M) return "";
452
+ if (!M)
453
+ return "";
415
454
  let p = M;
416
455
  return p = p.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, ""), p = p.replace(/\s+on\w+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi, ""), p = p.replace(/(href|src|action)\s*=\s*(?:"javascript:[^"]*"|'javascript:[^']*')/gi, '$1=""'), p = p.replace(/(href|src|action)\s*=\s*(?:"vbscript:[^"]*"|'vbscript:[^']*')/gi, '$1=""'), p = p.replace(/<\/?(iframe|object|embed|form)\b[^>]*>/gi, ""), p;
417
456
  }
@@ -430,7 +469,8 @@ const se = R(function(p, I) {
430
469
  className: C,
431
470
  style: S
432
471
  } = p, [v, i] = $(""), [h, N] = $(!1), [n, t] = $(""), [l, s] = $(""), [k, L] = $(""), [A, j] = $(!1), z = F(() => {
433
- if (m.some((f) => f.children && f.children.length > 0)) return m.filter((f) => !f.parentId);
472
+ if (m.some((f) => f.children && f.children.length > 0))
473
+ return m.filter((f) => !f.parentId);
434
474
  const u = /* @__PURE__ */ new Map();
435
475
  for (const f of m)
436
476
  u.set(f.id, { ...f, children: [] });
@@ -438,9 +478,15 @@ const se = R(function(p, I) {
438
478
  for (const f of u.values())
439
479
  f.parentId && u.has(f.parentId) ? u.get(f.parentId).children.push(f) : y.push(f);
440
480
  return y;
441
- }, [m]), x = F(() => m.find((u) => u.id === a), [m, a]), W = F(() => {
442
- if (!v.trim()) return z;
443
- const u = v.toLowerCase(), y = new Set(m.filter((f) => f.title.toLowerCase().includes(u)).map((f) => f.id));
481
+ }, [m]), x = F(
482
+ () => m.find((u) => u.id === a),
483
+ [m, a]
484
+ ), W = F(() => {
485
+ if (!v.trim())
486
+ return z;
487
+ const u = v.toLowerCase(), y = new Set(
488
+ m.filter((f) => f.title.toLowerCase().includes(u)).map((f) => f.id)
489
+ );
444
490
  return m.filter((f) => y.has(f.id));
445
491
  }, [z, m, v]), O = D(() => {
446
492
  x && (t(x.title), s(x.content ?? ""), N(!0));
@@ -560,101 +606,111 @@ const se = R(function(p, I) {
560
606
  upload: "📎",
561
607
  mention: "@",
562
608
  custom: "📌"
563
- }, ce = R(function(p, I) {
564
- const {
565
- events: m,
566
- onEventClick: a,
567
- groupByDate: o = !0,
568
- typeFilter: _,
569
- showFilters: g = !1,
570
- maxEvents: r,
571
- onLoadMore: w,
572
- hasMore: T = !1,
573
- className: E,
574
- style: b
575
- } = p, [C, S] = $(/* @__PURE__ */ new Set()), v = _ ?? (C.size > 0 ? Array.from(C) : void 0), i = F(() => {
576
- let t = m;
577
- if (v && v.length > 0) {
578
- const l = new Set(v);
579
- t = t.filter((s) => l.has(s.type));
580
- }
581
- return r && (t = t.slice(0, r)), t;
582
- }, [m, v, r]), h = F(() => {
583
- if (!o) return [{ label: "", events: i }];
584
- const t = /* @__PURE__ */ new Map();
585
- for (const l of i) {
586
- const s = l.timestamp.slice(0, 10);
587
- t.has(s) || t.set(s, []), t.get(s).push(l);
588
- }
589
- return Array.from(t.entries()).map(([l, s]) => ({ label: l, events: s }));
590
- }, [i, o]), N = F(() => {
591
- const t = new Set(m.map((l) => l.type));
592
- return Array.from(t).sort();
593
- }, [m]), n = (t) => {
594
- S((l) => {
595
- const s = new Set(l);
596
- return s.has(t) ? s.delete(t) : s.add(t), s;
597
- });
598
- };
599
- return /* @__PURE__ */ c("div", { ref: I, className: `nice-activity-feed ${E ?? ""}`, style: b, children: [
600
- g && !_ && /* @__PURE__ */ c("div", { className: "nice-activity-feed__filters", children: [
601
- N.map((t) => /* @__PURE__ */ c(
602
- "button",
603
- {
604
- className: `nice-activity-feed__filter-chip ${C.has(t) ? "nice-activity-feed__filter-chip--active" : ""}`,
605
- onClick: () => n(t),
606
- children: [
607
- K[t],
608
- " ",
609
- t
610
- ]
611
- },
612
- t
613
- )),
614
- C.size > 0 && /* @__PURE__ */ e(
615
- "button",
616
- {
617
- className: "nice-activity-feed__filter-clear",
618
- onClick: () => S(/* @__PURE__ */ new Set()),
619
- children: "Clear"
620
- }
621
- )
622
- ] }),
623
- i.length === 0 ? /* @__PURE__ */ e("p", { className: "nice-activity-feed__empty", children: "No activity." }) : h.map(({ label: t, events: l }) => /* @__PURE__ */ c("div", { className: "nice-activity-feed__group", children: [
624
- o && t && /* @__PURE__ */ e("div", { className: "nice-activity-feed__date-label", children: t }),
625
- l.map((s) => /* @__PURE__ */ c(
626
- "div",
627
- {
628
- className: "nice-activity-feed__event",
629
- onClick: () => a == null ? void 0 : a(s),
630
- role: a ? "button" : void 0,
631
- tabIndex: a ? 0 : void 0,
632
- onKeyDown: (k) => {
633
- k.key === "Enter" && a && a(s);
609
+ }, ce = R(
610
+ function(p, I) {
611
+ const {
612
+ events: m,
613
+ onEventClick: a,
614
+ groupByDate: o = !0,
615
+ typeFilter: _,
616
+ showFilters: g = !1,
617
+ maxEvents: r,
618
+ onLoadMore: w,
619
+ hasMore: T = !1,
620
+ className: E,
621
+ style: b
622
+ } = p, [C, S] = $(/* @__PURE__ */ new Set()), v = _ ?? (C.size > 0 ? Array.from(C) : void 0), i = F(() => {
623
+ let t = m;
624
+ if (v && v.length > 0) {
625
+ const l = new Set(v);
626
+ t = t.filter((s) => l.has(s.type));
627
+ }
628
+ return r && (t = t.slice(0, r)), t;
629
+ }, [m, v, r]), h = F(() => {
630
+ if (!o)
631
+ return [{ label: "", events: i }];
632
+ const t = /* @__PURE__ */ new Map();
633
+ for (const l of i) {
634
+ const s = l.timestamp.slice(0, 10);
635
+ t.has(s) || t.set(s, []), t.get(s).push(l);
636
+ }
637
+ return Array.from(t.entries()).map(([l, s]) => ({ label: l, events: s }));
638
+ }, [i, o]), N = F(() => {
639
+ const t = new Set(m.map((l) => l.type));
640
+ return Array.from(t).sort();
641
+ }, [m]), n = (t) => {
642
+ S((l) => {
643
+ const s = new Set(l);
644
+ return s.has(t) ? s.delete(t) : s.add(t), s;
645
+ });
646
+ };
647
+ return /* @__PURE__ */ c("div", { ref: I, className: `nice-activity-feed ${E ?? ""}`, style: b, children: [
648
+ g && !_ && /* @__PURE__ */ c("div", { className: "nice-activity-feed__filters", children: [
649
+ N.map((t) => /* @__PURE__ */ c(
650
+ "button",
651
+ {
652
+ className: `nice-activity-feed__filter-chip ${C.has(t) ? "nice-activity-feed__filter-chip--active" : ""}`,
653
+ onClick: () => n(t),
654
+ children: [
655
+ K[t],
656
+ " ",
657
+ t
658
+ ]
634
659
  },
635
- children: [
636
- /* @__PURE__ */ e("span", { className: "nice-activity-feed__icon", children: K[s.type] }),
637
- /* @__PURE__ */ c("div", { className: "nice-activity-feed__body", children: [
638
- s.actorAvatarUrl && /* @__PURE__ */ e("img", { src: s.actorAvatarUrl, alt: "", className: "nice-activity-feed__avatar" }),
639
- /* @__PURE__ */ c("span", { className: "nice-activity-feed__message", children: [
640
- /* @__PURE__ */ e("strong", { children: s.actorName }),
641
- " ",
642
- s.message,
643
- s.targetLabel && /* @__PURE__ */ c(H, { children: [
660
+ t
661
+ )),
662
+ C.size > 0 && /* @__PURE__ */ e(
663
+ "button",
664
+ {
665
+ className: "nice-activity-feed__filter-clear",
666
+ onClick: () => S(/* @__PURE__ */ new Set()),
667
+ children: "Clear"
668
+ }
669
+ )
670
+ ] }),
671
+ i.length === 0 ? /* @__PURE__ */ e("p", { className: "nice-activity-feed__empty", children: "No activity." }) : h.map(({ label: t, events: l }) => /* @__PURE__ */ c("div", { className: "nice-activity-feed__group", children: [
672
+ o && t && /* @__PURE__ */ e("div", { className: "nice-activity-feed__date-label", children: t }),
673
+ l.map((s) => /* @__PURE__ */ c(
674
+ "div",
675
+ {
676
+ className: "nice-activity-feed__event",
677
+ onClick: () => a == null ? void 0 : a(s),
678
+ role: a ? "button" : void 0,
679
+ tabIndex: a ? 0 : void 0,
680
+ onKeyDown: (k) => {
681
+ k.key === "Enter" && a && a(s);
682
+ },
683
+ children: [
684
+ /* @__PURE__ */ e("span", { className: "nice-activity-feed__icon", children: K[s.type] }),
685
+ /* @__PURE__ */ c("div", { className: "nice-activity-feed__body", children: [
686
+ s.actorAvatarUrl && /* @__PURE__ */ e(
687
+ "img",
688
+ {
689
+ src: s.actorAvatarUrl,
690
+ alt: "",
691
+ className: "nice-activity-feed__avatar"
692
+ }
693
+ ),
694
+ /* @__PURE__ */ c("span", { className: "nice-activity-feed__message", children: [
695
+ /* @__PURE__ */ e("strong", { children: s.actorName }),
644
696
  " ",
645
- /* @__PURE__ */ e("em", { children: s.targetLabel })
646
- ] })
647
- ] }),
648
- /* @__PURE__ */ e("time", { className: "nice-activity-feed__time", children: s.timestamp })
649
- ] })
650
- ]
651
- },
652
- s.id
653
- ))
654
- ] }, t || "__all")),
655
- T && w && /* @__PURE__ */ e("button", { className: "nice-activity-feed__load-more", onClick: w, children: "Load more" })
656
- ] });
657
- });
697
+ s.message,
698
+ s.targetLabel && /* @__PURE__ */ c(H, { children: [
699
+ " ",
700
+ /* @__PURE__ */ e("em", { children: s.targetLabel })
701
+ ] })
702
+ ] }),
703
+ /* @__PURE__ */ e("time", { className: "nice-activity-feed__time", children: s.timestamp })
704
+ ] })
705
+ ]
706
+ },
707
+ s.id
708
+ ))
709
+ ] }, t || "__all")),
710
+ T && w && /* @__PURE__ */ e("button", { className: "nice-activity-feed__load-more", onClick: w, children: "Load more" })
711
+ ] });
712
+ }
713
+ );
658
714
  export {
659
715
  ce as NiceActivityFeed,
660
716
  ee as NiceComments,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nice2dev/social",
3
- "version": "1.0.6",
3
+ "version": "1.0.10",
4
4
  "description": "Nice2Dev Social — Comments, ratings, activity feed, tag cloud, social panel, user list, wiki for React",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",