@rpcbase/ui 0.206.0 → 0.208.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.
Files changed (232) hide show
  1. package/dist/index.js +7 -7
  2. package/dist/index19.js +1 -1
  3. package/dist/index19.js.map +1 -1
  4. package/dist/index200.js +56 -55
  5. package/dist/index200.js.map +1 -1
  6. package/dist/index201.js +60 -8
  7. package/dist/index201.js.map +1 -1
  8. package/dist/index202.js +7 -15
  9. package/dist/index202.js.map +1 -1
  10. package/dist/index203.js +15 -143
  11. package/dist/index203.js.map +1 -1
  12. package/dist/index204.js +145 -4
  13. package/dist/index204.js.map +1 -1
  14. package/dist/index205.js +4 -11
  15. package/dist/index205.js.map +1 -1
  16. package/dist/index206.js +10 -104
  17. package/dist/index206.js.map +1 -1
  18. package/dist/index207.js +94 -347
  19. package/dist/index207.js.map +1 -1
  20. package/dist/index208.js +349 -87
  21. package/dist/index208.js.map +1 -1
  22. package/dist/index209.js +73 -304
  23. package/dist/index209.js.map +1 -1
  24. package/dist/index210.js +309 -193
  25. package/dist/index210.js.map +1 -1
  26. package/dist/index211.js +211 -19
  27. package/dist/index211.js.map +1 -1
  28. package/dist/index212.js +18 -27
  29. package/dist/index212.js.map +1 -1
  30. package/dist/index213.js +27 -187
  31. package/dist/index213.js.map +1 -1
  32. package/dist/index214.js +186 -16
  33. package/dist/index214.js.map +1 -1
  34. package/dist/index215.js +18 -44
  35. package/dist/index215.js.map +1 -1
  36. package/dist/index216.js +60 -8
  37. package/dist/index216.js.map +1 -1
  38. package/dist/index217.js +42 -23
  39. package/dist/index217.js.map +1 -1
  40. package/dist/index218.js +9 -44
  41. package/dist/index218.js.map +1 -1
  42. package/dist/index219.js +25 -18
  43. package/dist/index219.js.map +1 -1
  44. package/dist/index220.js +45 -3
  45. package/dist/index220.js.map +1 -1
  46. package/dist/index221.js +17 -4
  47. package/dist/index221.js.map +1 -1
  48. package/dist/index222.js +3 -21
  49. package/dist/index222.js.map +1 -1
  50. package/dist/index223.js +4 -24
  51. package/dist/index223.js.map +1 -1
  52. package/dist/index224.js +17 -64
  53. package/dist/index224.js.map +1 -1
  54. package/dist/index225.js +23 -13
  55. package/dist/index225.js.map +1 -1
  56. package/dist/index226.js +68 -4
  57. package/dist/index226.js.map +1 -1
  58. package/dist/index227.js +14 -50
  59. package/dist/index227.js.map +1 -1
  60. package/dist/index228.js +4 -6
  61. package/dist/index228.js.map +1 -1
  62. package/dist/index229.js +50 -26
  63. package/dist/index229.js.map +1 -1
  64. package/dist/index230.js +5 -13
  65. package/dist/index230.js.map +1 -1
  66. package/dist/index231.js +25 -8
  67. package/dist/index231.js.map +1 -1
  68. package/dist/index232.js +17 -3
  69. package/dist/index232.js.map +1 -0
  70. package/dist/index233.js +8 -24
  71. package/dist/index233.js.map +1 -1
  72. package/dist/index234.js +2 -71
  73. package/dist/index235.js +29 -3
  74. package/dist/index235.js.map +1 -0
  75. package/dist/index236.js +69 -12
  76. package/dist/index236.js.map +1 -1
  77. package/dist/index237.js +3 -54
  78. package/dist/index238.js +11 -114
  79. package/dist/index238.js.map +1 -1
  80. package/dist/index239.js +51 -6
  81. package/dist/index239.js.map +1 -1
  82. package/dist/index240.js +115 -13
  83. package/dist/index240.js.map +1 -1
  84. package/dist/index241.js +6 -687
  85. package/dist/index241.js.map +1 -1
  86. package/dist/index242.js +13 -253
  87. package/dist/index242.js.map +1 -1
  88. package/dist/index243.js +662 -676
  89. package/dist/index243.js.map +1 -1
  90. package/dist/index244.js +252 -7430
  91. package/dist/index244.js.map +1 -1
  92. package/dist/index245.js +700 -6
  93. package/dist/index245.js.map +1 -1
  94. package/dist/index246.js +7429 -11
  95. package/dist/index246.js.map +1 -1
  96. package/dist/index247.js +5 -4
  97. package/dist/index247.js.map +1 -1
  98. package/dist/index248.js +11 -458
  99. package/dist/index248.js.map +1 -1
  100. package/dist/index249.js +5 -37
  101. package/dist/index249.js.map +1 -1
  102. package/dist/index250.js +458 -18
  103. package/dist/index250.js.map +1 -1
  104. package/dist/index251.js +34 -24
  105. package/dist/index251.js.map +1 -1
  106. package/dist/index252.js +19 -4
  107. package/dist/index252.js.map +1 -1
  108. package/dist/index253.js +23 -54
  109. package/dist/index253.js.map +1 -1
  110. package/dist/index254.js +4 -7
  111. package/dist/index254.js.map +1 -1
  112. package/dist/index255.js +57 -11
  113. package/dist/index255.js.map +1 -1
  114. package/dist/index256.js +8 -3
  115. package/dist/index256.js.map +1 -1
  116. package/dist/index257.js +12 -16
  117. package/dist/index257.js.map +1 -1
  118. package/dist/index258.js +3 -26
  119. package/dist/index258.js.map +1 -1
  120. package/dist/index259.js +15 -42
  121. package/dist/index259.js.map +1 -1
  122. package/dist/index260.js +25 -13
  123. package/dist/index260.js.map +1 -1
  124. package/dist/index261.js +40 -22
  125. package/dist/index261.js.map +1 -1
  126. package/dist/index262.js +13 -17
  127. package/dist/index262.js.map +1 -1
  128. package/dist/index263.js +24 -34
  129. package/dist/index263.js.map +1 -1
  130. package/dist/index264.js +17 -5
  131. package/dist/index264.js.map +1 -1
  132. package/dist/index265.js +35 -9
  133. package/dist/index265.js.map +1 -1
  134. package/dist/index266.js +5 -8
  135. package/dist/index266.js.map +1 -1
  136. package/dist/index267.js +9 -9
  137. package/dist/index267.js.map +1 -1
  138. package/dist/index268.js +8 -10
  139. package/dist/index268.js.map +1 -1
  140. package/dist/index269.js +9 -7
  141. package/dist/index269.js.map +1 -1
  142. package/dist/index270.js +9 -72
  143. package/dist/index270.js.map +1 -1
  144. package/dist/index271.js +7 -171
  145. package/dist/index271.js.map +1 -1
  146. package/dist/index272.js +63 -104
  147. package/dist/index272.js.map +1 -1
  148. package/dist/index273.js +169 -12
  149. package/dist/index273.js.map +1 -1
  150. package/dist/index274.js +109 -75
  151. package/dist/index274.js.map +1 -1
  152. package/dist/index275.js +12 -44
  153. package/dist/index275.js.map +1 -1
  154. package/dist/index276.js +79 -12
  155. package/dist/index276.js.map +1 -1
  156. package/dist/index277.js +45 -15
  157. package/dist/index277.js.map +1 -1
  158. package/dist/index278.js +12 -98
  159. package/dist/index278.js.map +1 -1
  160. package/dist/index279.js +15 -55
  161. package/dist/index279.js.map +1 -1
  162. package/dist/index280.js +89 -98
  163. package/dist/index280.js.map +1 -1
  164. package/dist/index281.js +27 -42
  165. package/dist/index281.js.map +1 -1
  166. package/dist/index282.js +92 -97
  167. package/dist/index282.js.map +1 -1
  168. package/dist/index283.js +62 -46
  169. package/dist/index283.js.map +1 -1
  170. package/dist/index284.js +108 -38
  171. package/dist/index284.js.map +1 -1
  172. package/dist/index285.js +48 -135
  173. package/dist/index285.js.map +1 -1
  174. package/dist/index286.js +43 -139
  175. package/dist/index286.js.map +1 -1
  176. package/dist/index287.js +105 -217
  177. package/dist/index287.js.map +1 -1
  178. package/dist/index288.js +109 -210
  179. package/dist/index288.js.map +1 -1
  180. package/dist/index289.js +168 -212
  181. package/dist/index289.js.map +1 -1
  182. package/dist/index290.js +240 -5
  183. package/dist/index290.js.map +1 -1
  184. package/dist/index291.js +298 -6
  185. package/dist/index291.js.map +1 -1
  186. package/dist/index292.js +5 -7
  187. package/dist/index292.js.map +1 -1
  188. package/dist/index293.js +4 -4
  189. package/dist/index293.js.map +1 -1
  190. package/dist/index294.js +7 -6
  191. package/dist/index294.js.map +1 -1
  192. package/dist/index295.js +6 -21
  193. package/dist/index295.js.map +1 -1
  194. package/dist/index296.js +6 -10
  195. package/dist/index296.js.map +1 -1
  196. package/dist/index297.js +18 -123
  197. package/dist/index297.js.map +1 -1
  198. package/dist/index298.js +10 -164
  199. package/dist/index298.js.map +1 -1
  200. package/dist/index299.js +116 -58
  201. package/dist/index299.js.map +1 -1
  202. package/dist/index300.js +161 -106
  203. package/dist/index300.js.map +1 -1
  204. package/dist/index301.js +66 -489
  205. package/dist/index301.js.map +1 -1
  206. package/dist/index302.js +106 -59
  207. package/dist/index302.js.map +1 -1
  208. package/dist/index303.js +492 -4
  209. package/dist/index303.js.map +1 -1
  210. package/dist/index304.js +62 -27
  211. package/dist/index304.js.map +1 -1
  212. package/dist/index305.js +4 -66
  213. package/dist/index305.js.map +1 -1
  214. package/dist/index306.js +27 -152
  215. package/dist/index306.js.map +1 -1
  216. package/dist/index307.js +59 -555
  217. package/dist/index307.js.map +1 -1
  218. package/dist/index308.js +143 -201
  219. package/dist/index308.js.map +1 -1
  220. package/dist/index309.js +56 -326
  221. package/dist/index309.js.map +1 -1
  222. package/dist/index310.js +553 -260
  223. package/dist/index310.js.map +1 -1
  224. package/dist/index311.js +214 -0
  225. package/dist/index311.js.map +1 -0
  226. package/dist/index312.js +335 -0
  227. package/dist/index312.js.map +1 -0
  228. package/dist/index313.js +272 -0
  229. package/dist/index313.js.map +1 -0
  230. package/package.json +2 -2
  231. package/dist/index234.js.map +0 -1
  232. package/dist/index237.js.map +0 -1
package/dist/index309.js CHANGED
@@ -1,335 +1,65 @@
1
- import { cn as e } from "./index12.js";
2
- import { Content2 as t, Item2 as n, Portal2 as r, Root2 as i, Trigger as a } from "./index308.js";
3
- import { c as o } from "react/compiler-runtime";
4
- import { createContext as s, useCallback as c, useContext as l, useEffect as u, useMemo as d, useState as f } from "react";
5
- import { jsx as p, jsxs as m } from "react/jsx-runtime";
6
- import { Loader2 as h, MoreVertical as g, X as _ } from "lucide-react";
7
- import * as v from "@radix-ui/react-dialog";
8
- //#region src/components/Notifications/NotificationsDrawer.tsx
9
- var y = (e) => {
10
- let t = Date.parse(e);
11
- return Number.isFinite(t) ? t : 0;
12
- }, b = (e) => {
13
- let t = new Date(y(e));
14
- return Number.isFinite(t.getTime()) ? `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, "0")}-${String(t.getDate()).padStart(2, "0")}` : "unknown";
15
- }, x = (e) => {
16
- if (e === "unknown") return "Unknown date";
17
- let [t, n, r] = e.split("-"), i = Number(t), a = Number(n), o = Number(r);
18
- if (!Number.isFinite(i) || !Number.isFinite(a) || !Number.isFinite(o)) return "Unknown date";
19
- let s = new Date(i, a - 1, o);
20
- if (!Number.isFinite(s.getTime())) return "Unknown date";
21
- let c = (/* @__PURE__ */ new Date()).getFullYear() !== i;
22
- return s.toLocaleDateString(void 0, c ? {
23
- weekday: "short",
24
- month: "short",
25
- day: "numeric",
26
- year: "numeric"
27
- } : {
28
- weekday: "short",
29
- month: "short",
30
- day: "numeric"
31
- });
32
- }, S = (e) => {
33
- let t = [], n = null;
34
- for (let r of e) {
35
- let e = b(r.createdAt);
36
- e !== n && (n = e, t.push({
37
- key: e,
38
- label: x(e),
39
- items: []
40
- })), t[t.length - 1].items.push(r);
41
- }
42
- return t;
43
- }, C = s(null);
44
- function w({ open: t, onOpenChange: n, className: r, limit: i = 50, defaultUnreadOnly: a = !1, realtimeContext: o }) {
45
- let s = l(o ?? C), [g, y] = f([]), [b, x] = f(0), [w, E] = f(0), [D, O] = f(!1), [k, A] = f(null), [j, M] = f(a), N = s?.notifications ?? g, P = s?.unreadCount ?? b, F = s?.unseenCount ?? w, I = s?.loading ?? D, L = s?.error ? s.error instanceof Error ? s.error.message : String(s.error) : k, R = d(() => N.slice(0, i), [i, N]), z = d(() => R.filter((e) => !e.readAt), [R]), B = d(() => R.filter((e) => !!e.readAt), [R]), V = d(() => S(z), [z]), H = d(() => S(B), [B]), U = c(async ({ unreadOnly: e, markSeen: t }) => {
46
- O(!0), A(null);
47
- try {
48
- let n = await fetch("/api/rb/notifications", {
49
- method: "POST",
50
- headers: { "Content-Type": "application/json" },
51
- credentials: "include",
52
- body: JSON.stringify({
53
- limit: i,
54
- unreadOnly: e,
55
- markSeen: t
56
- })
57
- }), r = await n.json().catch(() => null);
58
- if (!n.ok || !r?.ok) {
59
- A(r?.error || "Unable to load notifications.");
60
- return;
61
- }
62
- y(Array.isArray(r.notifications) ? r.notifications : []), x(Number.isFinite(r.unreadCount) ? Math.max(0, Math.floor(r.unreadCount ?? 0)) : 0), E(Number.isFinite(r.unseenCount) ? Math.max(0, Math.floor(r.unseenCount ?? 0)) : 0);
63
- } catch {
64
- A("Unable to load notifications.");
65
- } finally {
66
- O(!1);
67
- }
68
- }, [i]);
69
- u(() => {
70
- if (t) {
71
- if (s) {
72
- (async () => {
73
- try {
74
- await fetch("/api/rb/notifications", {
75
- method: "POST",
76
- headers: { "Content-Type": "application/json" },
77
- credentials: "include",
78
- keepalive: !0,
79
- body: JSON.stringify({
80
- limit: 1,
81
- markSeen: !0
82
- })
83
- });
84
- } catch {
85
- return;
86
- }
87
- })();
88
- return;
89
- }
90
- U({
91
- unreadOnly: j,
92
- markSeen: !0
93
- });
94
- }
95
- }, [
96
- t,
97
- s,
98
- U,
99
- j
100
- ]), u(() => {
101
- t && (s || U({
102
- unreadOnly: j,
103
- markSeen: !1
104
- }));
105
- }, [
106
- t,
107
- s,
108
- U,
109
- j
110
- ]);
111
- let W = async (e) => {
112
- try {
113
- let t = await fetch(`/api/rb/notifications/${encodeURIComponent(e)}/read`, {
114
- method: "POST",
115
- headers: { "Content-Type": "application/json" },
116
- credentials: "include",
117
- keepalive: !0,
118
- body: "{}"
119
- }), n = await t.json().catch(() => null);
120
- if (!t.ok || !n?.ok) return;
121
- let r = (/* @__PURE__ */ new Date()).toISOString();
122
- if (s) return;
123
- y((t) => {
124
- let n = t.find((t) => t.id === e);
125
- return n && !n.readAt && x((e) => Math.max(0, e - 1)), n && !n.seenAt && E((e) => Math.max(0, e - 1)), t.map((t) => t.id === e && !t.readAt ? {
126
- ...t,
127
- readAt: r,
128
- ...t.seenAt ? {} : { seenAt: r }
129
- } : t);
130
- });
131
- } catch {
132
- return;
133
- }
134
- }, G = async (e) => {
135
- try {
136
- let t = await fetch(`/api/rb/notifications/${encodeURIComponent(e)}/archive`, {
137
- method: "POST",
138
- headers: { "Content-Type": "application/json" },
139
- credentials: "include",
140
- body: "{}"
141
- }), n = await t.json().catch(() => null);
142
- if (!t.ok || !n?.ok || s) return;
143
- y((t) => {
144
- let n = t.find((t) => t.id === e);
145
- return n && !n.readAt && x((e) => Math.max(0, e - 1)), n && !n.seenAt && E((e) => Math.max(0, e - 1)), t.filter((t) => t.id !== e);
1
+ import { composeRefs as e } from "./index18.js";
2
+ import * as t from "react";
3
+ import { jsx as n } from "react/jsx-runtime";
4
+ //#region ../../node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot/dist/index.mjs
5
+ /* @__NO_SIDE_EFFECTS__ */
6
+ function r(e) {
7
+ let r = /* @__PURE__ */ i(e), a = t.forwardRef((e, i) => {
8
+ let { children: a, ...s } = e, c = t.Children.toArray(a), l = c.find(o);
9
+ if (l) {
10
+ let e = l.props.children, a = c.map((n) => n === l ? t.Children.count(e) > 1 ? t.Children.only(null) : t.isValidElement(e) ? e.props.children : null : n);
11
+ return /* @__PURE__ */ n(r, {
12
+ ...s,
13
+ ref: i,
14
+ children: t.isValidElement(e) ? t.cloneElement(e, void 0, a) : null
146
15
  });
147
- } catch {
148
- return;
149
16
  }
150
- };
151
- return /* @__PURE__ */ p(v.Root, {
152
- open: t,
153
- onOpenChange: n,
154
- children: /* @__PURE__ */ m(v.Portal, { children: [/* @__PURE__ */ p(v.Overlay, { className: "fixed inset-0 z-50 bg-black/50" }), /* @__PURE__ */ m(v.Content, {
155
- className: e("fixed right-0 top-0 z-50 flex h-full w-full max-w-md flex-col border-l bg-background shadow-xl outline-none", r),
156
- children: [/* @__PURE__ */ m("header", {
157
- className: "flex items-center justify-between gap-2 border-b px-4 py-3",
158
- children: [/* @__PURE__ */ m("div", {
159
- className: "flex min-w-0 flex-col",
160
- children: [/* @__PURE__ */ p(v.Title, {
161
- className: "text-sm font-semibold",
162
- children: "Notifications"
163
- }), /* @__PURE__ */ p("span", {
164
- className: "text-xs text-muted-foreground",
165
- children: P > 0 ? `${P} unread` : F > 0 ? `${F} new` : "All caught up"
166
- })]
167
- }), /* @__PURE__ */ m("div", {
168
- className: "flex items-center gap-2",
169
- children: [/* @__PURE__ */ p("button", {
170
- type: "button",
171
- onClick: () => M((e) => !e),
172
- className: e("rounded-md border px-2 py-1 text-xs", j ? "bg-accent text-foreground" : "bg-background text-muted-foreground hover:bg-accent"),
173
- children: j ? "Unread" : "All"
174
- }), /* @__PURE__ */ p(v.Close, {
175
- asChild: !0,
176
- children: /* @__PURE__ */ p("button", {
177
- type: "button",
178
- className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent",
179
- children: /* @__PURE__ */ p(_, { className: "h-4 w-4" })
180
- })
181
- })]
182
- })]
183
- }), /* @__PURE__ */ p("div", {
184
- className: "flex-1 overflow-y-auto px-4 pb-3",
185
- children: I ? /* @__PURE__ */ p("div", {
186
- className: "flex items-center justify-center py-10 text-muted-foreground",
187
- children: /* @__PURE__ */ p(h, { className: "h-4 w-4 animate-spin" })
188
- }) : L ? /* @__PURE__ */ p("div", {
189
- className: "py-10 text-center text-sm text-muted-foreground",
190
- children: L
191
- }) : R.length === 0 ? /* @__PURE__ */ p("div", {
192
- className: "py-10 text-center text-sm text-muted-foreground",
193
- children: "No notifications."
194
- }) : /* @__PURE__ */ m("div", {
195
- className: "flex flex-col gap-4",
196
- children: [/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("div", {
197
- className: "sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground",
198
- children: "Unread notifications"
199
- }), V.length === 0 ? /* @__PURE__ */ p("div", {
200
- className: "py-6 text-center text-sm text-muted-foreground",
201
- children: "No unread notifications."
202
- }) : V.map((e) => /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("div", {
203
- className: "sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground",
204
- children: e.label
205
- }), /* @__PURE__ */ p("div", {
206
- className: "-mx-4 flex flex-col divide-y divide-border",
207
- children: e.items.map((e) => /* @__PURE__ */ p(T, {
208
- notification: e,
209
- onMarkRead: W,
210
- onArchive: G
211
- }, e.id))
212
- })] }, `unread:${e.key}`))] }), j ? null : /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("div", {
213
- className: "sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground",
214
- children: "Previous notifications"
215
- }), H.length === 0 ? /* @__PURE__ */ p("div", {
216
- className: "py-6 text-center text-sm text-muted-foreground",
217
- children: "No previous notifications."
218
- }) : H.map((e) => /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("div", {
219
- className: "sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground",
220
- children: e.label
221
- }), /* @__PURE__ */ p("div", {
222
- className: "-mx-4 flex flex-col divide-y divide-border",
223
- children: e.items.map((e) => /* @__PURE__ */ p(T, {
224
- notification: e,
225
- onMarkRead: W,
226
- onArchive: G
227
- }, e.id))
228
- })] }, `previous:${e.key}`))] })]
229
- })
230
- })]
231
- })] })
17
+ return /* @__PURE__ */ n(r, {
18
+ ...s,
19
+ ref: i,
20
+ children: a
21
+ });
232
22
  });
23
+ return a.displayName = `${e}.Slot`, a;
233
24
  }
234
- function T(s) {
235
- let c = o(43), { notification: l, onMarkRead: u, onArchive: d } = s, f = !l.readAt, h;
236
- if (c[0] !== l.createdAt) {
237
- bb0: {
238
- let e = new Date(y(l.createdAt));
239
- if (!Number.isFinite(e.getTime())) {
240
- h = "";
241
- break bb0;
242
- }
243
- h = e.toLocaleString();
25
+ /* @__NO_SIDE_EFFECTS__ */
26
+ function i(n) {
27
+ let r = t.forwardRef((n, r) => {
28
+ let { children: i, ...a } = n;
29
+ if (t.isValidElement(i)) {
30
+ let n = c(i), o = s(a, i.props);
31
+ return i.type !== t.Fragment && (o.ref = r ? e(r, n) : n), t.cloneElement(i, o);
244
32
  }
245
- c[0] = l.createdAt, c[1] = h;
246
- } else h = c[1];
247
- let _ = h, v = f ? "bg-primary/5" : "bg-background", b;
248
- c[2] === v ? b = c[3] : (b = e("group flex w-full gap-3 px-4 py-3 hover:bg-accent/40", v), c[2] = v, c[3] = b);
249
- let x;
250
- c[4] !== f || c[5] !== l.id || c[6] !== l.url || c[7] !== u ? (x = () => {
251
- f && u(l.id), l.url && (window.location.href = l.url);
252
- }, c[4] = f, c[5] = l.id, c[6] = l.url, c[7] = u, c[8] = x) : x = c[8];
253
- let S;
254
- c[9] === l.title ? S = c[10] : (S = /* @__PURE__ */ p("div", {
255
- className: "truncate text-sm font-semibold",
256
- children: l.title
257
- }), c[9] = l.title, c[10] = S);
258
- let C;
259
- c[11] === l.body ? C = c[12] : (C = l.body ? /* @__PURE__ */ p("div", {
260
- className: "mt-0.5 line-clamp-2 text-xs text-muted-foreground",
261
- children: l.body
262
- }) : null, c[11] = l.body, c[12] = C);
263
- let w;
264
- c[13] !== S || c[14] !== C ? (w = /* @__PURE__ */ m("div", {
265
- className: "min-w-0",
266
- children: [S, C]
267
- }), c[13] = S, c[14] = C, c[15] = w) : w = c[15];
268
- let T;
269
- c[16] === l.url ? T = c[17] : (T = l.url ? /* @__PURE__ */ p("div", {
270
- className: "mt-2 truncate text-xs text-primary",
271
- children: l.url
272
- }) : null, c[16] = l.url, c[17] = T);
273
- let E;
274
- c[18] === _ ? E = c[19] : (E = _ ? /* @__PURE__ */ p("div", {
275
- className: "mt-2 text-[11px] text-muted-foreground",
276
- children: _
277
- }) : null, c[18] = _, c[19] = E);
278
- let D;
279
- c[20] !== x || c[21] !== w || c[22] !== T || c[23] !== E ? (D = /* @__PURE__ */ m("button", {
280
- type: "button",
281
- className: "min-w-0 flex-1 text-left",
282
- onClick: x,
283
- children: [
284
- w,
285
- T,
286
- E
287
- ]
288
- }), c[20] = x, c[21] = w, c[22] = T, c[23] = E, c[24] = D) : D = c[24];
289
- let O;
290
- c[25] === Symbol.for("react.memo_cache_sentinel") ? (O = /* @__PURE__ */ p(a, {
291
- asChild: !0,
292
- children: /* @__PURE__ */ p("button", {
293
- type: "button",
294
- className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent",
295
- "aria-label": "Notification options",
296
- children: /* @__PURE__ */ p(g, { className: "h-4 w-4" })
297
- })
298
- }), c[25] = O) : O = c[25];
299
- let k;
300
- c[26] === Symbol.for("react.memo_cache_sentinel") ? (k = e("z-50 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md", "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95", "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"), c[26] = k) : k = c[26];
301
- let A;
302
- c[27] !== l.id || c[28] !== d ? (A = /* @__PURE__ */ p(n, {
303
- className: "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
304
- onSelect: () => d(l.id),
305
- children: "Archive"
306
- }), c[27] = l.id, c[28] = d, c[29] = A) : A = c[29];
307
- let j = !f, M;
308
- c[30] !== l.id || c[31] !== u ? (M = () => u(l.id), c[30] = l.id, c[31] = u, c[32] = M) : M = c[32];
309
- let N;
310
- c[33] !== j || c[34] !== M ? (N = /* @__PURE__ */ p(n, {
311
- className: "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
312
- disabled: j,
313
- onSelect: M,
314
- children: "Mark as read"
315
- }), c[33] = j, c[34] = M, c[35] = N) : N = c[35];
316
- let P;
317
- c[36] !== A || c[37] !== N ? (P = /* @__PURE__ */ p("div", {
318
- className: "flex items-start",
319
- children: /* @__PURE__ */ m(i, { children: [O, /* @__PURE__ */ p(r, { children: /* @__PURE__ */ m(t, {
320
- align: "end",
321
- sideOffset: 6,
322
- className: k,
323
- children: [A, N]
324
- }) })] })
325
- }), c[36] = A, c[37] = N, c[38] = P) : P = c[38];
326
- let F;
327
- return c[39] !== D || c[40] !== P || c[41] !== b ? (F = /* @__PURE__ */ m("div", {
328
- className: b,
329
- children: [D, P]
330
- }), c[39] = D, c[40] = P, c[41] = b, c[42] = F) : F = c[42], F;
33
+ return t.Children.count(i) > 1 ? t.Children.only(null) : null;
34
+ });
35
+ return r.displayName = `${n}.SlotClone`, r;
36
+ }
37
+ var a = Symbol("radix.slottable");
38
+ function o(e) {
39
+ return t.isValidElement(e) && typeof e.type == "function" && "__radixId" in e.type && e.type.__radixId === a;
40
+ }
41
+ function s(e, t) {
42
+ let n = { ...t };
43
+ for (let r in t) {
44
+ let i = e[r], a = t[r];
45
+ /^on[A-Z]/.test(r) ? i && a ? n[r] = (...e) => {
46
+ let t = a(...e);
47
+ return i(...e), t;
48
+ } : i && (n[r] = i) : r === "style" ? n[r] = {
49
+ ...i,
50
+ ...a
51
+ } : r === "className" && (n[r] = [i, a].filter(Boolean).join(" "));
52
+ }
53
+ return {
54
+ ...e,
55
+ ...n
56
+ };
57
+ }
58
+ function c(e) {
59
+ let t = Object.getOwnPropertyDescriptor(e.props, "ref")?.get, n = t && "isReactWarning" in t && t.isReactWarning;
60
+ return n ? e.ref : (t = Object.getOwnPropertyDescriptor(e, "ref")?.get, n = t && "isReactWarning" in t && t.isReactWarning, n ? e.props.ref : e.props.ref || e.ref);
331
61
  }
332
62
  //#endregion
333
- export { w as NotificationsDrawer };
63
+ export { r as createSlot };
334
64
 
335
65
  //# sourceMappingURL=index309.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index309.js","names":["createContext","useCallback","useContext","useEffect","useMemo","useState","Context","DialogPrimitive","DropdownMenuPrimitive","Loader2","MoreVertical","X","cn","NotificationItem","NotificationsRealtimeState","ListResponse","ok","error","notifications","unreadCount","unseenCount","DayGroup","key","label","items","toMs","iso","ms","Date","parse","Number","isFinite","getDayKey","date","getTime","year","getFullYear","month","String","getMonth","padStart","day","getDate","formatDayLabel","yearRaw","monthRaw","dayRaw","split","now","includeYear","toLocaleDateString","undefined","weekday","groupByDay","groups","currentKey","item","createdAt","push","length","EmptyRealtimeContext","NotificationsDrawer","open","onOpenChange","className","limit","defaultUnreadOnly","realtimeContext","realtime","setItems","setUnreadCount","setUnseenCount","loading","setLoading","setError","unreadOnly","setUnreadOnly","mergedItems","mergedUnreadCount","mergedUnseenCount","mergedLoading","mergedError","Error","message","visibleItems","slice","unread","filter","n","readAt","read","Boolean","unreadGroups","readGroups","refresh","markSeen","res","fetch","method","headers","credentials","body","JSON","stringify","json","catch","nextItems","Array","isArray","Math","max","floor","keepalive","markAsRead","id","encodeURIComponent","nowIso","toISOString","current","target","find","count","seenAt","map","archive","v","group","NotificationRow","t0","$","_c","notification","onMarkRead","onArchive","isUnread","t1","bb0","toLocaleString","createdAtLabel","t2","t3","t4","url","window","location","href","t5","title","t6","t7","t8","t9","t10","t11","Symbol","for","t12","t13","t14","t15","t16","t17","t18"],"sources":["../src/components/Notifications/NotificationsDrawer.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect, useMemo, useState, type Context } from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Loader2, MoreVertical, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport type { NotificationItem, NotificationsRealtimeState } from \"./types\"\n\n\ntype ListResponse = {\n ok?: boolean\n error?: string\n notifications?: NotificationItem[]\n unreadCount?: number\n unseenCount?: number\n}\n\ntype DayGroup = {\n key: string\n label: string\n items: NotificationItem[]\n}\n\nconst toMs = (iso: string): number => {\n const ms = Date.parse(iso)\n return Number.isFinite(ms) ? ms : 0\n}\n\nconst getDayKey = (iso: string): string => {\n const date = new Date(toMs(iso))\n if (!Number.isFinite(date.getTime())) return \"unknown\"\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, \"0\")\n const day = String(date.getDate()).padStart(2, \"0\")\n\n return `${year}-${month}-${day}`\n}\n\nconst formatDayLabel = (key: string): string => {\n if (key === \"unknown\") return \"Unknown date\"\n const [yearRaw, monthRaw, dayRaw] = key.split(\"-\")\n const year = Number(yearRaw)\n const month = Number(monthRaw)\n const day = Number(dayRaw)\n\n if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) return \"Unknown date\"\n\n const date = new Date(year, month - 1, day)\n if (!Number.isFinite(date.getTime())) return \"Unknown date\"\n\n const now = new Date()\n const includeYear = now.getFullYear() !== year\n return date.toLocaleDateString(undefined, includeYear\n ? { weekday: \"short\", month: \"short\", day: \"numeric\", year: \"numeric\" }\n : { weekday: \"short\", month: \"short\", day: \"numeric\" })\n}\n\nconst groupByDay = (items: NotificationItem[]): DayGroup[] => {\n const groups: DayGroup[] = []\n let currentKey: string | null = null\n\n for (const item of items) {\n const key = getDayKey(item.createdAt)\n if (key !== currentKey) {\n currentKey = key\n groups.push({ key, label: formatDayLabel(key), items: [] })\n }\n groups[groups.length - 1]!.items.push(item)\n }\n\n return groups\n}\n\nconst EmptyRealtimeContext = createContext<NotificationsRealtimeState | null>(null)\n\nexport function NotificationsDrawer({\n open,\n onOpenChange,\n className,\n limit = 50,\n defaultUnreadOnly = false,\n realtimeContext,\n}: {\n open: boolean\n onOpenChange: (open: boolean) => void\n className?: string\n limit?: number\n defaultUnreadOnly?: boolean\n realtimeContext?: Context<NotificationsRealtimeState | null>\n}) {\n const realtime = useContext(realtimeContext ?? EmptyRealtimeContext)\n\n const [items, setItems] = useState<NotificationItem[]>([])\n const [unreadCount, setUnreadCount] = useState<number>(0)\n const [unseenCount, setUnseenCount] = useState<number>(0)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [unreadOnly, setUnreadOnly] = useState<boolean>(defaultUnreadOnly)\n\n const mergedItems = realtime?.notifications ?? items\n const mergedUnreadCount = realtime?.unreadCount ?? unreadCount\n const mergedUnseenCount = realtime?.unseenCount ?? unseenCount\n const mergedLoading = realtime?.loading ?? loading\n const mergedError = realtime?.error\n ? (realtime.error instanceof Error ? realtime.error.message : String(realtime.error))\n : error\n\n const visibleItems = useMemo(() => mergedItems.slice(0, limit), [limit, mergedItems])\n\n const unread = useMemo(() => visibleItems.filter((n) => !n.readAt), [visibleItems])\n const read = useMemo(() => visibleItems.filter((n) => Boolean(n.readAt)), [visibleItems])\n const unreadGroups = useMemo(() => groupByDay(unread), [unread])\n const readGroups = useMemo(() => groupByDay(read), [read])\n\n const refresh = useCallback(async ({ unreadOnly, markSeen }: { unreadOnly: boolean; markSeen: boolean }) => {\n setLoading(true)\n setError(null)\n\n try {\n const res = await fetch(\"/api/rb/notifications\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n body: JSON.stringify({ limit, unreadOnly, markSeen }),\n })\n\n const json = (await res.json().catch(() => null)) as ListResponse | null\n if (!res.ok || !json?.ok) {\n setError(json?.error || \"Unable to load notifications.\")\n return\n }\n\n const nextItems = Array.isArray(json.notifications) ? json.notifications : []\n setItems(nextItems)\n setUnreadCount(Number.isFinite(json.unreadCount) ? Math.max(0, Math.floor(json.unreadCount ?? 0)) : 0)\n setUnseenCount(Number.isFinite(json.unseenCount) ? Math.max(0, Math.floor(json.unseenCount ?? 0)) : 0)\n } catch {\n setError(\"Unable to load notifications.\")\n } finally {\n setLoading(false)\n }\n }, [limit])\n\n useEffect(() => {\n if (!open) return\n if (realtime) {\n void (async () => {\n try {\n await fetch(\"/api/rb/notifications\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n keepalive: true,\n body: JSON.stringify({ limit: 1, markSeen: true }),\n })\n } catch {\n return\n }\n })()\n return\n }\n void refresh({ unreadOnly, markSeen: true })\n }, [open, realtime, refresh, unreadOnly])\n\n useEffect(() => {\n if (!open) return\n if (realtime) return\n void refresh({ unreadOnly, markSeen: false })\n }, [open, realtime, refresh, unreadOnly])\n\n const markAsRead = async (id: string) => {\n try {\n const res = await fetch(`/api/rb/notifications/${encodeURIComponent(id)}/read`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n keepalive: true,\n body: \"{}\",\n })\n\n const json = (await res.json().catch(() => null)) as { ok?: boolean } | null\n if (!res.ok || !json?.ok) return\n\n const nowIso = new Date().toISOString()\n if (realtime) return\n setItems((current) => {\n const target = current.find((n) => n.id === id)\n if (target && !target.readAt) {\n setUnreadCount((count) => Math.max(0, count - 1))\n }\n if (target && !target.seenAt) {\n setUnseenCount((count) => Math.max(0, count - 1))\n }\n return current.map((n) => (n.id === id && !n.readAt ? { ...n, readAt: nowIso, ...(n.seenAt ? {} : { seenAt: nowIso }) } : n))\n })\n } catch {\n return\n }\n }\n\n const archive = async (id: string) => {\n try {\n const res = await fetch(`/api/rb/notifications/${encodeURIComponent(id)}/archive`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n body: \"{}\",\n })\n\n const json = (await res.json().catch(() => null)) as { ok?: boolean } | null\n if (!res.ok || !json?.ok) return\n\n if (realtime) return\n setItems((current) => {\n const target = current.find((n) => n.id === id)\n if (target && !target.readAt) {\n setUnreadCount((count) => Math.max(0, count - 1))\n }\n if (target && !target.seenAt) {\n setUnseenCount((count) => Math.max(0, count - 1))\n }\n return current.filter((n) => n.id !== id)\n })\n } catch {\n return\n }\n }\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className=\"fixed inset-0 z-50 bg-black/50\" />\n <DialogPrimitive.Content\n className={cn(\n \"fixed right-0 top-0 z-50 flex h-full w-full max-w-md flex-col border-l bg-background shadow-xl outline-none\",\n className,\n )}\n >\n <header className=\"flex items-center justify-between gap-2 border-b px-4 py-3\">\n <div className=\"flex min-w-0 flex-col\">\n <DialogPrimitive.Title className=\"text-sm font-semibold\">Notifications</DialogPrimitive.Title>\n <span className=\"text-xs text-muted-foreground\">\n {mergedUnreadCount > 0 ? `${mergedUnreadCount} unread` : mergedUnseenCount > 0 ? `${mergedUnseenCount} new` : \"All caught up\"}\n </span>\n </div>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => setUnreadOnly((v) => !v)}\n className={cn(\n \"rounded-md border px-2 py-1 text-xs\",\n unreadOnly ? \"bg-accent text-foreground\" : \"bg-background text-muted-foreground hover:bg-accent\",\n )}\n >\n {unreadOnly ? \"Unread\" : \"All\"}\n </button>\n <DialogPrimitive.Close asChild>\n <button type=\"button\" className=\"inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent\">\n <X className=\"h-4 w-4\" />\n </button>\n </DialogPrimitive.Close>\n </div>\n </header>\n\n <div className=\"flex-1 overflow-y-auto px-4 pb-3\">\n {mergedLoading ? (\n <div className=\"flex items-center justify-center py-10 text-muted-foreground\">\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n </div>\n ) : mergedError ? (\n <div className=\"py-10 text-center text-sm text-muted-foreground\">{mergedError}</div>\n ) : visibleItems.length === 0 ? (\n <div className=\"py-10 text-center text-sm text-muted-foreground\">No notifications.</div>\n ) : (\n <div className=\"flex flex-col gap-4\">\n <div>\n <div className=\"sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground\">\n Unread notifications\n </div>\n {unreadGroups.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">No unread notifications.</div>\n ) : (\n unreadGroups.map((group) => (\n <div key={`unread:${group.key}`}>\n <div className=\"sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground\">\n {group.label}\n </div>\n <div className=\"-mx-4 flex flex-col divide-y divide-border\">\n {group.items.map((n) => (\n <NotificationRow\n key={n.id}\n notification={n}\n onMarkRead={markAsRead}\n onArchive={archive}\n />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n\n {unreadOnly ? null : (\n <div>\n <div className=\"sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground\">\n Previous notifications\n </div>\n {readGroups.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">No previous notifications.</div>\n ) : (\n readGroups.map((group) => (\n <div key={`previous:${group.key}`}>\n <div className=\"sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground\">\n {group.label}\n </div>\n <div className=\"-mx-4 flex flex-col divide-y divide-border\">\n {group.items.map((n) => (\n <NotificationRow\n key={n.id}\n notification={n}\n onMarkRead={markAsRead}\n onArchive={archive}\n />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n\nfunction NotificationRow({\n notification,\n onMarkRead,\n onArchive,\n}: {\n notification: NotificationItem\n onMarkRead: (id: string) => void\n onArchive: (id: string) => void\n}) {\n const isUnread = !notification.readAt\n const createdAtLabel = (() => {\n const date = new Date(toMs(notification.createdAt))\n if (!Number.isFinite(date.getTime())) return \"\"\n return date.toLocaleString()\n })()\n\n return (\n <div\n className={cn(\n \"group flex w-full gap-3 px-4 py-3 hover:bg-accent/40\",\n isUnread ? \"bg-primary/5\" : \"bg-background\",\n )}\n >\n <button\n type=\"button\"\n className=\"min-w-0 flex-1 text-left\"\n onClick={() => {\n if (isUnread) {\n void onMarkRead(notification.id)\n }\n if (notification.url) {\n window.location.href = notification.url\n }\n }}\n >\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold\">{notification.title}</div>\n {notification.body ? (\n <div className=\"mt-0.5 line-clamp-2 text-xs text-muted-foreground\">{notification.body}</div>\n ) : null}\n </div>\n {notification.url ? <div className=\"mt-2 truncate text-xs text-primary\">{notification.url}</div> : null}\n {createdAtLabel ? (\n <div className=\"mt-2 text-[11px] text-muted-foreground\">{createdAtLabel}</div>\n ) : null}\n </button>\n <div className=\"flex items-start\">\n <DropdownMenuPrimitive.Root>\n <DropdownMenuPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent\"\n aria-label=\"Notification options\"\n >\n <MoreVertical className=\"h-4 w-4\" />\n </button>\n </DropdownMenuPrimitive.Trigger>\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n align=\"end\"\n sideOffset={6}\n className={cn(\n \"z-50 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n )}\n >\n <DropdownMenuPrimitive.Item\n className=\"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n onSelect={() => onArchive(notification.id)}\n >\n Archive\n </DropdownMenuPrimitive.Item>\n <DropdownMenuPrimitive.Item\n className=\"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n disabled={!isUnread}\n onSelect={() => onMarkRead(notification.id)}\n >\n Mark as read\n </DropdownMenuPrimitive.Item>\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n </DropdownMenuPrimitive.Root>\n </div>\n </div>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index309.js","names":["React"],"sources":["../../../node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot/dist/index.mjs"],"sourcesContent":["// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n"],"x_google_ignoreList":[0],"mappings":";;;;;AAKA,SAAS,EAAW,GAAW;CAC7B,IAAM,IAA4B,kBAAgB,EAAU,EACtD,IAAQA,EAAM,YAAY,GAAO,MAAiB;EACtD,IAAM,EAAE,aAAU,GAAG,MAAc,GAC7B,IAAgBA,EAAM,SAAS,QAAQ,EAAS,EAChD,IAAY,EAAc,KAAK,EAAY;AACjD,MAAI,GAAW;GACb,IAAM,IAAa,EAAU,MAAM,UAC7B,IAAc,EAAc,KAAK,MACjC,MAAU,IACRA,EAAM,SAAS,MAAM,EAAW,GAAG,IAAUA,EAAM,SAAS,KAAK,KAAK,GACnEA,EAAM,eAAe,EAAW,GAAG,EAAW,MAAM,WAAW,OAE/D,EAET;AACF,UAAuB,kBAAI,GAAW;IAAE,GAAG;IAAW,KAAK;IAAc,UAAUA,EAAM,eAAe,EAAW,GAAGA,EAAM,aAAa,GAAY,KAAK,GAAG,EAAY,GAAG;IAAM,CAAC;;AAErL,SAAuB,kBAAI,GAAW;GAAE,GAAG;GAAW,KAAK;GAAc;GAAU,CAAC;GACpF;AAEF,QADA,EAAM,cAAc,GAAG,EAAU,QAC1B;;;AAIT,SAAS,EAAgB,GAAW;CAClC,IAAM,IAAYA,EAAM,YAAY,GAAO,MAAiB;EAC1D,IAAM,EAAE,aAAU,GAAG,MAAc;AACnC,MAAIA,EAAM,eAAe,EAAS,EAAE;GAClC,IAAM,IAAc,EAAc,EAAS,EACrC,IAAS,EAAW,GAAW,EAAS,MAAM;AAIpD,UAHI,EAAS,SAASA,EAAM,aAC1B,EAAO,MAAM,IAAe,EAAY,GAAc,EAAY,GAAG,IAEhEA,EAAM,aAAa,GAAU,EAAO;;AAE7C,SAAOA,EAAM,SAAS,MAAM,EAAS,GAAG,IAAIA,EAAM,SAAS,KAAK,KAAK,GAAG;GACxE;AAEF,QADA,EAAU,cAAc,GAAG,EAAU,aAC9B;;AAET,IAAI,IAAuB,OAAO,kBAAkB;AAWpD,SAAS,EAAY,GAAO;AAC1B,QAAOA,EAAM,eAAe,EAAM,IAAI,OAAO,EAAM,QAAS,cAAc,eAAe,EAAM,QAAQ,EAAM,KAAK,cAAc;;AAElI,SAAS,EAAW,GAAW,GAAY;CACzC,IAAM,IAAgB,EAAE,GAAG,GAAY;AACvC,MAAK,IAAM,KAAY,GAAY;EACjC,IAAM,IAAgB,EAAU,IAC1B,IAAiB,EAAW;AAElC,EADkB,WAAW,KAAK,EAAS,GAErC,KAAiB,IACnB,EAAc,MAAa,GAAG,MAAS;GACrC,IAAM,IAAS,EAAe,GAAG,EAAK;AAEtC,UADA,EAAc,GAAG,EAAK,EACf;MAEA,MACT,EAAc,KAAY,KAEnB,MAAa,UACtB,EAAc,KAAY;GAAE,GAAG;GAAe,GAAG;GAAgB,GACxD,MAAa,gBACtB,EAAc,KAAY,CAAC,GAAe,EAAe,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;;AAGvF,QAAO;EAAE,GAAG;EAAW,GAAG;EAAe;;AAE3C,SAAS,EAAc,GAAS;CAC9B,IAAI,IAAS,OAAO,yBAAyB,EAAQ,OAAO,MAAM,EAAE,KAChE,IAAU,KAAU,oBAAoB,KAAU,EAAO;AAS7D,QARI,IACK,EAAQ,OAEjB,IAAS,OAAO,yBAAyB,GAAS,MAAM,EAAE,KAC1D,IAAU,KAAU,oBAAoB,KAAU,EAAO,gBACrD,IACK,EAAQ,MAAM,MAEhB,EAAQ,MAAM,OAAO,EAAQ"}