@rpcbase/ui 0.202.0 → 0.204.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 (641) hide show
  1. package/dist/index.js +25 -73
  2. package/dist/index10.js +18 -28
  3. package/dist/index10.js.map +1 -1
  4. package/dist/index100.js +8 -8
  5. package/dist/index100.js.map +1 -1
  6. package/dist/index101.js +8 -7
  7. package/dist/index101.js.map +1 -1
  8. package/dist/index102.js +14 -7
  9. package/dist/index102.js.map +1 -1
  10. package/dist/index103.js +9 -9
  11. package/dist/index103.js.map +1 -1
  12. package/dist/index104.js +14 -148
  13. package/dist/index104.js.map +1 -1
  14. package/dist/index105.js +21 -43
  15. package/dist/index105.js.map +1 -1
  16. package/dist/index106.js +27 -7
  17. package/dist/index106.js.map +1 -1
  18. package/dist/index107.js +8 -10
  19. package/dist/index107.js.map +1 -1
  20. package/dist/index108.js +8 -16
  21. package/dist/index108.js.map +1 -1
  22. package/dist/index109.js +9 -16
  23. package/dist/index109.js.map +1 -1
  24. package/dist/index11.js +1674 -41
  25. package/dist/index11.js.map +1 -1
  26. package/dist/index110.js +9 -10
  27. package/dist/index110.js.map +1 -1
  28. package/dist/index111.js +8 -34
  29. package/dist/index111.js.map +1 -1
  30. package/dist/index112.js +8 -13
  31. package/dist/index112.js.map +1 -1
  32. package/dist/index113.js +11 -13
  33. package/dist/index113.js.map +1 -1
  34. package/dist/index114.js +10 -11
  35. package/dist/index114.js.map +1 -1
  36. package/dist/index115.js +37 -16
  37. package/dist/index115.js.map +1 -1
  38. package/dist/index116.js +10 -104
  39. package/dist/index116.js.map +1 -1
  40. package/dist/index117.js +9 -23
  41. package/dist/index117.js.map +1 -1
  42. package/dist/index118.js +10 -56
  43. package/dist/index118.js.map +1 -1
  44. package/dist/index119.js +12 -75
  45. package/dist/index119.js.map +1 -1
  46. package/dist/index12.js +10 -470
  47. package/dist/index12.js.map +1 -1
  48. package/dist/index120.js +8 -12
  49. package/dist/index120.js.map +1 -1
  50. package/dist/index121.js +9 -23
  51. package/dist/index121.js.map +1 -1
  52. package/dist/index122.js +8 -19
  53. package/dist/index122.js.map +1 -1
  54. package/dist/index123.js +8 -26
  55. package/dist/index123.js.map +1 -1
  56. package/dist/index124.js +9 -9
  57. package/dist/index124.js.map +1 -1
  58. package/dist/index125.js +8 -8
  59. package/dist/index125.js.map +1 -1
  60. package/dist/index126.js +9 -27
  61. package/dist/index126.js.map +1 -1
  62. package/dist/index127.js +11 -38
  63. package/dist/index127.js.map +1 -1
  64. package/dist/index128.js +60 -19
  65. package/dist/index128.js.map +1 -1
  66. package/dist/index129.js +9 -9
  67. package/dist/index129.js.map +1 -1
  68. package/dist/index13.js +22 -140
  69. package/dist/index13.js.map +1 -1
  70. package/dist/index130.js +23 -8
  71. package/dist/index130.js.map +1 -1
  72. package/dist/index131.js +22 -7
  73. package/dist/index131.js.map +1 -1
  74. package/dist/index132.js +37 -7
  75. package/dist/index132.js.map +1 -1
  76. package/dist/index133.js +8 -7
  77. package/dist/index133.js.map +1 -1
  78. package/dist/index134.js +11 -6
  79. package/dist/index134.js.map +1 -1
  80. package/dist/index135.js +17 -9
  81. package/dist/index135.js.map +1 -1
  82. package/dist/index136.js +14 -27
  83. package/dist/index136.js.map +1 -1
  84. package/dist/index137.js +9 -10
  85. package/dist/index137.js.map +1 -1
  86. package/dist/index138.js +8 -9
  87. package/dist/index138.js.map +1 -1
  88. package/dist/index139.js +8 -8
  89. package/dist/index139.js.map +1 -1
  90. package/dist/index14.js +194 -78
  91. package/dist/index14.js.map +1 -1
  92. package/dist/index140.js +8 -6
  93. package/dist/index140.js.map +1 -1
  94. package/dist/index141.js +8 -6
  95. package/dist/index141.js.map +1 -1
  96. package/dist/index142.js +7 -7
  97. package/dist/index142.js.map +1 -1
  98. package/dist/index143.js +9 -6
  99. package/dist/index143.js.map +1 -1
  100. package/dist/index144.js +24 -8
  101. package/dist/index144.js.map +1 -1
  102. package/dist/index145.js +11 -6
  103. package/dist/index145.js.map +1 -1
  104. package/dist/index146.js +10 -6
  105. package/dist/index146.js.map +1 -1
  106. package/dist/index147.js +9 -6
  107. package/dist/index147.js.map +1 -1
  108. package/dist/index148.js +9 -8
  109. package/dist/index148.js.map +1 -1
  110. package/dist/index149.js +7 -10
  111. package/dist/index149.js.map +1 -1
  112. package/dist/index15.js +33 -874
  113. package/dist/index15.js.map +1 -1
  114. package/dist/index150.js +7 -8
  115. package/dist/index150.js.map +1 -1
  116. package/dist/index151.js +9 -50
  117. package/dist/index151.js.map +1 -1
  118. package/dist/index152.js +8 -50
  119. package/dist/index152.js.map +1 -1
  120. package/dist/index153.js +9 -209
  121. package/dist/index153.js.map +1 -1
  122. package/dist/index154.js +8 -25
  123. package/dist/index154.js.map +1 -1
  124. package/dist/index155.js +7 -27
  125. package/dist/index155.js.map +1 -1
  126. package/dist/index156.js +8 -403
  127. package/dist/index156.js.map +1 -1
  128. package/dist/index157.js +32 -609
  129. package/dist/index157.js.map +1 -1
  130. package/dist/index158.js +35 -19
  131. package/dist/index158.js.map +1 -1
  132. package/dist/index159.js +18 -8
  133. package/dist/index159.js.map +1 -1
  134. package/dist/index16.js +57 -23
  135. package/dist/index16.js.map +1 -1
  136. package/dist/index160.js +14 -8
  137. package/dist/index160.js.map +1 -1
  138. package/dist/index161.js +12 -61
  139. package/dist/index161.js.map +1 -1
  140. package/dist/index162.js +19 -69
  141. package/dist/index162.js.map +1 -1
  142. package/dist/index163.js +89 -9
  143. package/dist/index163.js.map +1 -1
  144. package/dist/index164.js +50 -7
  145. package/dist/index164.js.map +1 -1
  146. package/dist/index165.js +20 -10
  147. package/dist/index165.js.map +1 -1
  148. package/dist/index166.js +11 -20
  149. package/dist/index166.js.map +1 -1
  150. package/dist/index167.js +13 -8
  151. package/dist/index167.js.map +1 -1
  152. package/dist/index168.js +8 -8
  153. package/dist/index168.js.map +1 -1
  154. package/dist/index169.js +25 -16
  155. package/dist/index169.js.map +1 -1
  156. package/dist/index17.js +9 -20
  157. package/dist/index17.js.map +1 -1
  158. package/dist/index170.js +10 -13
  159. package/dist/index170.js.map +1 -1
  160. package/dist/index171.js +9 -17
  161. package/dist/index171.js.map +1 -1
  162. package/dist/index172.js +9 -17
  163. package/dist/index172.js.map +1 -1
  164. package/dist/index173.js +7 -8
  165. package/dist/index173.js.map +1 -1
  166. package/dist/index174.js +9 -9
  167. package/dist/index174.js.map +1 -1
  168. package/dist/index175.js +70 -10
  169. package/dist/index175.js.map +1 -1
  170. package/dist/index176.js +20 -9
  171. package/dist/index176.js.map +1 -1
  172. package/dist/index177.js +15 -12
  173. package/dist/index177.js.map +1 -1
  174. package/dist/index178.js +12 -8
  175. package/dist/index178.js.map +1 -1
  176. package/dist/index179.js +23 -8
  177. package/dist/index179.js.map +1 -1
  178. package/dist/index18.js +27 -460
  179. package/dist/index18.js.map +1 -1
  180. package/dist/index180.js +20 -12
  181. package/dist/index180.js.map +1 -1
  182. package/dist/index181.js +58 -8
  183. package/dist/index181.js.map +1 -1
  184. package/dist/index182.js +13 -8
  185. package/dist/index182.js.map +1 -1
  186. package/dist/index183.js +9 -7
  187. package/dist/index183.js.map +1 -1
  188. package/dist/index184.js +29 -14
  189. package/dist/index184.js.map +1 -1
  190. package/dist/index185.js +29 -13
  191. package/dist/index185.js.map +1 -1
  192. package/dist/index186.js +16 -13
  193. package/dist/index186.js.map +1 -1
  194. package/dist/index187.js +16 -14
  195. package/dist/index187.js.map +1 -1
  196. package/dist/index188.js +9 -14
  197. package/dist/index188.js.map +1 -1
  198. package/dist/index189.js +26 -13
  199. package/dist/index189.js.map +1 -1
  200. package/dist/index19.js +65 -666
  201. package/dist/index19.js.map +1 -1
  202. package/dist/index190.js +388 -10
  203. package/dist/index190.js.map +1 -1
  204. package/dist/index191.js +499 -10
  205. package/dist/index191.js.map +1 -1
  206. package/dist/index192.js +134 -9
  207. package/dist/index192.js.map +1 -1
  208. package/dist/index193.js +55 -9
  209. package/dist/index193.js.map +1 -1
  210. package/dist/index194.js +80 -10
  211. package/dist/index194.js.map +1 -1
  212. package/dist/index195.js +902 -9
  213. package/dist/index195.js.map +1 -1
  214. package/dist/index196.js +22 -58
  215. package/dist/index196.js.map +1 -1
  216. package/dist/index197.js +452 -12
  217. package/dist/index197.js.map +1 -1
  218. package/dist/index198.js +7 -22
  219. package/dist/index198.js.map +1 -1
  220. package/dist/index199.js +60 -32
  221. package/dist/index199.js.map +1 -1
  222. package/dist/index2.js +10 -8
  223. package/dist/index20.js +43 -469
  224. package/dist/index20.js.map +1 -1
  225. package/dist/index200.js +63 -15
  226. package/dist/index200.js.map +1 -1
  227. package/dist/index201.js +11 -28
  228. package/dist/index201.js.map +1 -1
  229. package/dist/index202.js +19 -8
  230. package/dist/index202.js.map +1 -1
  231. package/dist/index203.js +148 -20
  232. package/dist/index203.js.map +1 -1
  233. package/dist/index204.js +7 -11
  234. package/dist/index204.js.map +1 -1
  235. package/dist/index205.js +13 -13
  236. package/dist/index205.js.map +1 -1
  237. package/dist/index206.js +107 -13
  238. package/dist/index206.js.map +1 -1
  239. package/dist/index207.js +359 -23
  240. package/dist/index207.js.map +1 -1
  241. package/dist/index208.js +99 -14
  242. package/dist/index208.js.map +1 -1
  243. package/dist/index209.js +329 -12
  244. package/dist/index209.js.map +1 -1
  245. package/dist/index21.js +12 -266
  246. package/dist/index21.js.map +1 -1
  247. package/dist/index210.js +213 -12
  248. package/dist/index210.js.map +1 -1
  249. package/dist/index211.js +22 -8
  250. package/dist/index211.js.map +1 -1
  251. package/dist/index212.js +30 -8
  252. package/dist/index212.js.map +1 -1
  253. package/dist/index213.js +189 -18
  254. package/dist/index213.js.map +1 -1
  255. package/dist/index214.js +21 -13
  256. package/dist/index214.js.map +1 -1
  257. package/dist/index215.js +46 -21
  258. package/dist/index215.js.map +1 -1
  259. package/dist/index216.js +12 -18
  260. package/dist/index216.js.map +1 -1
  261. package/dist/index217.js +28 -16
  262. package/dist/index217.js.map +1 -1
  263. package/dist/index218.js +47 -8
  264. package/dist/index218.js.map +1 -1
  265. package/dist/index219.js +19 -70
  266. package/dist/index219.js.map +1 -1
  267. package/dist/index22.js +16 -8
  268. package/dist/index22.js.map +1 -1
  269. package/dist/index220.js +6 -5
  270. package/dist/index220.js.map +1 -1
  271. package/dist/index221.js +8 -367
  272. package/dist/index221.js.map +1 -1
  273. package/dist/index222.js +24 -265
  274. package/dist/index222.js.map +1 -1
  275. package/dist/index223.js +27 -63
  276. package/dist/index223.js.map +1 -1
  277. package/dist/index224.js +68 -47
  278. package/dist/index224.js.map +1 -1
  279. package/dist/index225.js +17 -172
  280. package/dist/index225.js.map +1 -1
  281. package/dist/index226.js +7 -113
  282. package/dist/index226.js.map +1 -1
  283. package/dist/index227.js +53 -27
  284. package/dist/index227.js.map +1 -1
  285. package/dist/index228.js +8 -10
  286. package/dist/index228.js.map +1 -1
  287. package/dist/index229.js +28 -6
  288. package/dist/index229.js.map +1 -1
  289. package/dist/index23.js +109 -30
  290. package/dist/index23.js.map +1 -1
  291. package/dist/index230.js +16 -8
  292. package/dist/index230.js.map +1 -1
  293. package/dist/index231.js +12 -7
  294. package/dist/index231.js.map +1 -1
  295. package/dist/index232.js +3 -470
  296. package/dist/index233.js +28 -188
  297. package/dist/index233.js.map +1 -1
  298. package/dist/index234.js +68 -107
  299. package/dist/index234.js.map +1 -1
  300. package/dist/index235.js +3 -266
  301. package/dist/index236.js +14 -12
  302. package/dist/index236.js.map +1 -1
  303. package/dist/index237.js +53 -45
  304. package/dist/index237.js.map +1 -1
  305. package/dist/index238.js +117 -7
  306. package/dist/index238.js.map +1 -1
  307. package/dist/index239.js +9 -28
  308. package/dist/index239.js.map +1 -1
  309. package/dist/index24.js +3 -269
  310. package/dist/index24.js.map +1 -1
  311. package/dist/index240.js +15 -31
  312. package/dist/index240.js.map +1 -1
  313. package/dist/index241.js +689 -7
  314. package/dist/index241.js.map +1 -1
  315. package/dist/index242.js +256 -71
  316. package/dist/index242.js.map +1 -1
  317. package/dist/index243.js +704 -184
  318. package/dist/index243.js.map +1 -1
  319. package/dist/index244.js +7433 -49
  320. package/dist/index244.js.map +1 -1
  321. package/dist/index245.js +9 -7
  322. package/dist/index245.js.map +1 -1
  323. package/dist/index246.js +16 -22
  324. package/dist/index246.js.map +1 -1
  325. package/dist/index247.js +8 -15
  326. package/dist/index247.js.map +1 -1
  327. package/dist/index248.js +462 -16
  328. package/dist/index248.js.map +1 -1
  329. package/dist/index249.js +41 -158
  330. package/dist/index249.js.map +1 -1
  331. package/dist/index25.js +11 -179
  332. package/dist/index25.js.map +1 -1
  333. package/dist/index250.js +21 -32
  334. package/dist/index250.js.map +1 -1
  335. package/dist/index251.js +30 -12
  336. package/dist/index251.js.map +1 -1
  337. package/dist/index252.js +8 -52
  338. package/dist/index252.js.map +1 -1
  339. package/dist/index253.js +62 -15
  340. package/dist/index253.js.map +1 -1
  341. package/dist/index254.js +10 -47
  342. package/dist/index254.js.map +1 -1
  343. package/dist/index255.js +14 -97
  344. package/dist/index255.js.map +1 -1
  345. package/dist/index256.js +6 -90
  346. package/dist/index256.js.map +1 -1
  347. package/dist/index257.js +20 -109
  348. package/dist/index257.js.map +1 -1
  349. package/dist/index258.js +28 -55
  350. package/dist/index258.js.map +1 -1
  351. package/dist/index259.js +47 -15
  352. package/dist/index259.js.map +1 -1
  353. package/dist/index26.js +22 -16
  354. package/dist/index26.js.map +1 -1
  355. package/dist/index260.js +16 -40
  356. package/dist/index260.js.map +1 -1
  357. package/dist/index261.js +28 -11
  358. package/dist/index261.js.map +1 -1
  359. package/dist/index262.js +20 -119
  360. package/dist/index262.js.map +1 -1
  361. package/dist/index263.js +38 -20
  362. package/dist/index263.js.map +1 -1
  363. package/dist/index264.js +8 -18
  364. package/dist/index264.js.map +1 -1
  365. package/dist/index265.js +12 -6
  366. package/dist/index265.js.map +1 -1
  367. package/dist/index266.js +11 -39
  368. package/dist/index266.js.map +1 -1
  369. package/dist/index267.js +12 -23
  370. package/dist/index267.js.map +1 -1
  371. package/dist/index268.js +13 -12
  372. package/dist/index268.js.map +1 -1
  373. package/dist/index269.js +10 -11
  374. package/dist/index269.js.map +1 -1
  375. package/dist/index27.js +61 -2924
  376. package/dist/index27.js.map +1 -1
  377. package/dist/index270.js +76 -22
  378. package/dist/index270.js.map +1 -1
  379. package/dist/index271.js +174 -31
  380. package/dist/index271.js.map +1 -1
  381. package/dist/index272.js +118 -20
  382. package/dist/index272.js.map +1 -1
  383. package/dist/index273.js +18 -8
  384. package/dist/index273.js.map +1 -1
  385. package/dist/index274.js +83 -5
  386. package/dist/index274.js.map +1 -1
  387. package/dist/index275.js +49 -26
  388. package/dist/index275.js.map +1 -1
  389. package/dist/index276.js +15 -114
  390. package/dist/index276.js.map +1 -1
  391. package/dist/index277.js +19 -18
  392. package/dist/index277.js.map +1 -1
  393. package/dist/index278.js +98 -523
  394. package/dist/index278.js.map +1 -1
  395. package/dist/index279.js +60 -131
  396. package/dist/index279.js.map +1 -1
  397. package/dist/index28.js +58 -5
  398. package/dist/index28.js.map +1 -1
  399. package/dist/index280.js +109 -134
  400. package/dist/index280.js.map +1 -1
  401. package/dist/index281.js +75 -9
  402. package/dist/index281.js.map +1 -1
  403. package/dist/index282.js +117 -9
  404. package/dist/index282.js.map +1 -1
  405. package/dist/index283.js +59 -7
  406. package/dist/index283.js.map +1 -1
  407. package/dist/index284.js +46 -18
  408. package/dist/index284.js.map +1 -1
  409. package/dist/index285.js +146 -12
  410. package/dist/index285.js.map +1 -1
  411. package/dist/index286.js +143 -9
  412. package/dist/index286.js.map +1 -1
  413. package/dist/index287.js +258 -8
  414. package/dist/index287.js.map +1 -1
  415. package/dist/index288.js +241 -546
  416. package/dist/index288.js.map +1 -1
  417. package/dist/index289.js +302 -50
  418. package/dist/index289.js.map +1 -1
  419. package/dist/index29.js +1 -40
  420. package/dist/index290.js +9 -21
  421. package/dist/index290.js.map +1 -1
  422. package/dist/index291.js +9 -9
  423. package/dist/index291.js.map +1 -1
  424. package/dist/index292.js +10 -11
  425. package/dist/index292.js.map +1 -1
  426. package/dist/index293.js +9 -10
  427. package/dist/index293.js.map +1 -1
  428. package/dist/index294.js +9 -11
  429. package/dist/index294.js.map +1 -1
  430. package/dist/index295.js +24 -15
  431. package/dist/index295.js.map +1 -1
  432. package/dist/index296.js +13 -12
  433. package/dist/index296.js.map +1 -1
  434. package/dist/index297.js +130 -17
  435. package/dist/index297.js.map +1 -1
  436. package/dist/index298.js +167 -23
  437. package/dist/index298.js.map +1 -1
  438. package/dist/index299.js +69 -65
  439. package/dist/index299.js.map +1 -1
  440. package/dist/index3.js +6 -5
  441. package/dist/index3.js.map +1 -1
  442. package/dist/index30.js +6 -6
  443. package/dist/index300.js +113 -72
  444. package/dist/index300.js.map +1 -1
  445. package/dist/index301.js +495 -12
  446. package/dist/index301.js.map +1 -1
  447. package/dist/index302.js +65 -16
  448. package/dist/index302.js.map +1 -1
  449. package/dist/index303.js +7 -69
  450. package/dist/index303.js.map +1 -1
  451. package/dist/index304.js +30 -7
  452. package/dist/index304.js.map +1 -1
  453. package/dist/index305.js +68 -58
  454. package/dist/index305.js.map +1 -1
  455. package/dist/index306.js +155 -70
  456. package/dist/index306.js.map +1 -1
  457. package/dist/index307.js +563 -32
  458. package/dist/index307.js.map +1 -1
  459. package/dist/index308.js +213 -11
  460. package/dist/index308.js.map +1 -1
  461. package/dist/index309.js +335 -156
  462. package/dist/index309.js.map +1 -1
  463. package/dist/index31.js +8 -128
  464. package/dist/index31.js.map +1 -1
  465. package/dist/index310.js +271 -110
  466. package/dist/index310.js.map +1 -1
  467. package/dist/index32.js +8 -234
  468. package/dist/index32.js.map +1 -1
  469. package/dist/index33.js +8 -26
  470. package/dist/index33.js.map +1 -1
  471. package/dist/index34.js +11 -54
  472. package/dist/index34.js.map +1 -1
  473. package/dist/index35.js +13 -24
  474. package/dist/index35.js.map +1 -1
  475. package/dist/index36.js +9 -133
  476. package/dist/index36.js.map +1 -1
  477. package/dist/index37.js +11 -225
  478. package/dist/index37.js.map +1 -1
  479. package/dist/index38.js +12 -94
  480. package/dist/index38.js.map +1 -1
  481. package/dist/index39.js +15 -121
  482. package/dist/index39.js.map +1 -1
  483. package/dist/index4.js +24 -28
  484. package/dist/index4.js.map +1 -1
  485. package/dist/index40.js +9 -8
  486. package/dist/index40.js.map +1 -1
  487. package/dist/index41.js +10 -847
  488. package/dist/index41.js.map +1 -1
  489. package/dist/index42.js +10 -60
  490. package/dist/index42.js.map +1 -1
  491. package/dist/index43.js +12 -10
  492. package/dist/index43.js.map +1 -1
  493. package/dist/index44.js +12 -5
  494. package/dist/index44.js.map +1 -1
  495. package/dist/index45.js +8 -14
  496. package/dist/index45.js.map +1 -1
  497. package/dist/index46.js +8 -21
  498. package/dist/index46.js.map +1 -1
  499. package/dist/index47.js +14 -10
  500. package/dist/index47.js.map +1 -1
  501. package/dist/index48.js +15 -5
  502. package/dist/index48.js.map +1 -1
  503. package/dist/index49.js +10 -26
  504. package/dist/index49.js.map +1 -1
  505. package/dist/index5.js +34 -48
  506. package/dist/index5.js.map +1 -1
  507. package/dist/index50.js +7 -236
  508. package/dist/index50.js.map +1 -1
  509. package/dist/index51.js +9 -9
  510. package/dist/index51.js.map +1 -1
  511. package/dist/index52.js +9 -36
  512. package/dist/index52.js.map +1 -1
  513. package/dist/index53.js +9 -29
  514. package/dist/index53.js.map +1 -1
  515. package/dist/index54.js +12 -10
  516. package/dist/index54.js.map +1 -1
  517. package/dist/index55.js +16 -14
  518. package/dist/index55.js.map +1 -1
  519. package/dist/index56.js +10 -5
  520. package/dist/index56.js.map +1 -1
  521. package/dist/index57.js +10 -5
  522. package/dist/index57.js.map +1 -1
  523. package/dist/index58.js +10 -5
  524. package/dist/index58.js.map +1 -1
  525. package/dist/index59.js +17 -5
  526. package/dist/index59.js.map +1 -1
  527. package/dist/index6.js +42 -227
  528. package/dist/index6.js.map +1 -1
  529. package/dist/index60.js +11 -208
  530. package/dist/index60.js.map +1 -1
  531. package/dist/index61.js +11 -6
  532. package/dist/index61.js.map +1 -1
  533. package/dist/index62.js +70 -50
  534. package/dist/index62.js.map +1 -1
  535. package/dist/index63.js +10 -53
  536. package/dist/index63.js.map +1 -1
  537. package/dist/index64.js +33 -10
  538. package/dist/index64.js.map +1 -1
  539. package/dist/index65.js +13 -18
  540. package/dist/index65.js.map +1 -1
  541. package/dist/index66.js +19 -137
  542. package/dist/index66.js.map +1 -1
  543. package/dist/index67.js +203 -13
  544. package/dist/index67.js.map +1 -1
  545. package/dist/index68.js +22 -218
  546. package/dist/index68.js.map +1 -1
  547. package/dist/index69.js +20 -16
  548. package/dist/index69.js.map +1 -1
  549. package/dist/index7.js +225 -37
  550. package/dist/index7.js.map +1 -1
  551. package/dist/index70.js +125 -49
  552. package/dist/index70.js.map +1 -1
  553. package/dist/index71.js +21 -52
  554. package/dist/index71.js.map +1 -1
  555. package/dist/index72.js +12 -7
  556. package/dist/index72.js.map +1 -1
  557. package/dist/index73.js +12 -8
  558. package/dist/index73.js.map +1 -1
  559. package/dist/index74.js +17 -31
  560. package/dist/index74.js.map +1 -1
  561. package/dist/index75.js +13 -53
  562. package/dist/index75.js.map +1 -1
  563. package/dist/index76.js +13 -12
  564. package/dist/index76.js.map +1 -1
  565. package/dist/index77.js +8 -55
  566. package/dist/index77.js.map +1 -1
  567. package/dist/index78.js +44 -7
  568. package/dist/index78.js.map +1 -1
  569. package/dist/index79.js +383 -7
  570. package/dist/index79.js.map +1 -1
  571. package/dist/index8.js +36 -32
  572. package/dist/index8.js.map +1 -1
  573. package/dist/index80.js +41 -18
  574. package/dist/index80.js.map +1 -1
  575. package/dist/index81.js +25 -9
  576. package/dist/index81.js.map +1 -1
  577. package/dist/index82.js +60 -10
  578. package/dist/index82.js.map +1 -1
  579. package/dist/index83.js +10 -19
  580. package/dist/index83.js.map +1 -1
  581. package/dist/index84.js +8 -7
  582. package/dist/index84.js.map +1 -1
  583. package/dist/index85.js +8 -7
  584. package/dist/index85.js.map +1 -1
  585. package/dist/index86.js +8 -8
  586. package/dist/index86.js.map +1 -1
  587. package/dist/index87.js +8 -8
  588. package/dist/index87.js.map +1 -1
  589. package/dist/index88.js +9 -7
  590. package/dist/index88.js.map +1 -1
  591. package/dist/index89.js +9 -7
  592. package/dist/index89.js.map +1 -1
  593. package/dist/index9.js +33 -181
  594. package/dist/index9.js.map +1 -1
  595. package/dist/index90.js +13 -9
  596. package/dist/index90.js.map +1 -1
  597. package/dist/index91.js +10 -27
  598. package/dist/index91.js.map +1 -1
  599. package/dist/index92.js +9 -9
  600. package/dist/index92.js.map +1 -1
  601. package/dist/index93.js +8 -7
  602. package/dist/index93.js.map +1 -1
  603. package/dist/index94.js +10 -9
  604. package/dist/index94.js.map +1 -1
  605. package/dist/index95.js +50 -8
  606. package/dist/index95.js.map +1 -1
  607. package/dist/index96.js +108 -7
  608. package/dist/index96.js.map +1 -1
  609. package/dist/index97.js +13 -8
  610. package/dist/index97.js.map +1 -1
  611. package/dist/index98.js +9 -7
  612. package/dist/index98.js.map +1 -1
  613. package/dist/index99.js +9 -11
  614. package/dist/index99.js.map +1 -1
  615. package/package.json +6 -6
  616. package/dist/index.js.map +0 -1
  617. package/dist/index2.js.map +0 -1
  618. package/dist/index232.js.map +0 -1
  619. package/dist/index235.js.map +0 -1
  620. package/dist/index29.js.map +0 -1
  621. package/dist/index30.js.map +0 -1
  622. package/dist/index311.js +0 -7
  623. package/dist/index311.js.map +0 -1
  624. package/dist/index312.js +0 -26
  625. package/dist/index312.js.map +0 -1
  626. package/dist/index313.js +0 -19
  627. package/dist/index313.js.map +0 -1
  628. package/dist/index314.js +0 -32
  629. package/dist/index314.js.map +0 -1
  630. package/dist/index315.js +0 -16
  631. package/dist/index315.js.map +0 -1
  632. package/dist/index316.js +0 -10
  633. package/dist/index316.js.map +0 -1
  634. package/dist/index317.js +0 -26
  635. package/dist/index317.js.map +0 -1
  636. package/dist/index318.js +0 -16
  637. package/dist/index318.js.map +0 -1
  638. package/dist/index319.js +0 -31
  639. package/dist/index319.js.map +0 -1
  640. package/dist/index320.js +0 -8
  641. package/dist/index320.js.map +0 -1
package/dist/index309.js CHANGED
@@ -1,156 +1,335 @@
1
- import { buildLocalizeFn as e } from "./index313.js";
2
- const a = {
3
- narrow: ["B", "A"],
4
- abbreviated: ["BC", "AD"],
5
- wide: ["Before Christ", "Anno Domini"]
6
- }, r = {
7
- narrow: ["1", "2", "3", "4"],
8
- abbreviated: ["Q1", "Q2", "Q3", "Q4"],
9
- wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"]
10
- }, o = {
11
- narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"],
12
- abbreviated: [
13
- "Jan",
14
- "Feb",
15
- "Mar",
16
- "Apr",
17
- "May",
18
- "Jun",
19
- "Jul",
20
- "Aug",
21
- "Sep",
22
- "Oct",
23
- "Nov",
24
- "Dec"
25
- ],
26
- wide: [
27
- "January",
28
- "February",
29
- "March",
30
- "April",
31
- "May",
32
- "June",
33
- "July",
34
- "August",
35
- "September",
36
- "October",
37
- "November",
38
- "December"
39
- ]
40
- }, d = {
41
- narrow: ["S", "M", "T", "W", "T", "F", "S"],
42
- short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
43
- abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
44
- wide: [
45
- "Sunday",
46
- "Monday",
47
- "Tuesday",
48
- "Wednesday",
49
- "Thursday",
50
- "Friday",
51
- "Saturday"
52
- ]
53
- }, m = {
54
- narrow: {
55
- am: "a",
56
- pm: "p",
57
- midnight: "mi",
58
- noon: "n",
59
- morning: "morning",
60
- afternoon: "afternoon",
61
- evening: "evening",
62
- night: "night"
63
- },
64
- abbreviated: {
65
- am: "AM",
66
- pm: "PM",
67
- midnight: "midnight",
68
- noon: "noon",
69
- morning: "morning",
70
- afternoon: "afternoon",
71
- evening: "evening",
72
- night: "night"
73
- },
74
- wide: {
75
- am: "a.m.",
76
- pm: "p.m.",
77
- midnight: "midnight",
78
- noon: "noon",
79
- morning: "morning",
80
- afternoon: "afternoon",
81
- evening: "evening",
82
- night: "night"
83
- }
84
- }, g = {
85
- narrow: {
86
- am: "a",
87
- pm: "p",
88
- midnight: "mi",
89
- noon: "n",
90
- morning: "in the morning",
91
- afternoon: "in the afternoon",
92
- evening: "in the evening",
93
- night: "at night"
94
- },
95
- abbreviated: {
96
- am: "AM",
97
- pm: "PM",
98
- midnight: "midnight",
99
- noon: "noon",
100
- morning: "in the morning",
101
- afternoon: "in the afternoon",
102
- evening: "in the evening",
103
- night: "at night"
104
- },
105
- wide: {
106
- am: "a.m.",
107
- pm: "p.m.",
108
- midnight: "midnight",
109
- noon: "noon",
110
- morning: "in the morning",
111
- afternoon: "in the afternoon",
112
- evening: "in the evening",
113
- night: "at night"
114
- }
115
- }, u = (i, h) => {
116
- const n = Number(i), t = n % 100;
117
- if (t > 20 || t < 10)
118
- switch (t % 10) {
119
- case 1:
120
- return n + "st";
121
- case 2:
122
- return n + "nd";
123
- case 3:
124
- return n + "rd";
125
- }
126
- return n + "th";
127
- }, l = {
128
- ordinalNumber: u,
129
- era: e({
130
- values: a,
131
- defaultWidth: "wide"
132
- }),
133
- quarter: e({
134
- values: r,
135
- defaultWidth: "wide",
136
- argumentCallback: (i) => i - 1
137
- }),
138
- month: e({
139
- values: o,
140
- defaultWidth: "wide"
141
- }),
142
- day: e({
143
- values: d,
144
- defaultWidth: "wide"
145
- }),
146
- dayPeriod: e({
147
- values: m,
148
- defaultWidth: "wide",
149
- formattingValues: g,
150
- defaultFormattingWidth: "wide"
151
- })
152
- };
153
- export {
154
- l as localize
155
- };
156
- //# sourceMappingURL=index309.js.map
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);
146
+ });
147
+ } catch {
148
+ return;
149
+ }
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
+ })] })
232
+ });
233
+ }
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();
244
+ }
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;
331
+ }
332
+ //#endregion
333
+ export { w as NotificationsDrawer };
334
+
335
+ //# sourceMappingURL=index309.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index309.js","sources":["../../../node_modules/date-fns/locale/en-US/_lib/localize.js"],"sourcesContent":["import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n"],"names":["eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","number","rem100","localize","buildLocalizeFn","quarter"],"mappings":"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","x_google_ignoreList":[0]}
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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"}