@rpcbase/ui 0.224.0 → 0.225.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 (829) hide show
  1. package/dist/components/DayPickerField/index.d.ts.map +1 -1
  2. package/dist/components/Dialog/index.d.ts +13 -9
  3. package/dist/components/Dialog/index.d.ts.map +1 -1
  4. package/dist/components/FilesUploadField/index.d.ts.map +1 -1
  5. package/dist/components/HourPickerField/index.d.ts.map +1 -1
  6. package/dist/components/Select/index.d.ts +16 -10
  7. package/dist/components/Select/index.d.ts.map +1 -1
  8. package/dist/index10.js +102 -103
  9. package/dist/index10.js.map +1 -1
  10. package/dist/index100.js +4 -4
  11. package/dist/index100.js.map +1 -1
  12. package/dist/index101.js +9 -52
  13. package/dist/index101.js.map +1 -1
  14. package/dist/index102.js +5 -4
  15. package/dist/index102.js.map +1 -1
  16. package/dist/index103.js +3 -3
  17. package/dist/index103.js.map +1 -1
  18. package/dist/index104.js +4 -15
  19. package/dist/index104.js.map +1 -1
  20. package/dist/index105.js +5 -4
  21. package/dist/index105.js.map +1 -1
  22. package/dist/index106.js +145 -7
  23. package/dist/index106.js.map +1 -1
  24. package/dist/index107.js +39 -16
  25. package/dist/index107.js.map +1 -1
  26. package/dist/index108.js +4 -4
  27. package/dist/index108.js.map +1 -1
  28. package/dist/index109.js +7 -4
  29. package/dist/index109.js.map +1 -1
  30. package/dist/index110.js +13 -5
  31. package/dist/index110.js.map +1 -1
  32. package/dist/index111.js +13 -5
  33. package/dist/index111.js.map +1 -1
  34. package/dist/index112.js +7 -4
  35. package/dist/index112.js.map +1 -1
  36. package/dist/index113.js +31 -4
  37. package/dist/index113.js.map +1 -1
  38. package/dist/index114.js +10 -6
  39. package/dist/index114.js.map +1 -1
  40. package/dist/index115.js +10 -24
  41. package/dist/index115.js.map +1 -1
  42. package/dist/index116.js +8 -6
  43. package/dist/index116.js.map +1 -1
  44. package/dist/index117.js +13 -4
  45. package/dist/index117.js.map +1 -1
  46. package/dist/index118.js +101 -6
  47. package/dist/index118.js.map +1 -1
  48. package/dist/index119.js +20 -6
  49. package/dist/index119.js.map +1 -1
  50. package/dist/index12.js +1 -1
  51. package/dist/index120.js +53 -4
  52. package/dist/index120.js.map +1 -1
  53. package/dist/index121.js +72 -5
  54. package/dist/index121.js.map +1 -1
  55. package/dist/index122.js +9 -4
  56. package/dist/index122.js.map +1 -1
  57. package/dist/index123.js +20 -8
  58. package/dist/index123.js.map +1 -1
  59. package/dist/index124.js +16 -5
  60. package/dist/index124.js.map +1 -1
  61. package/dist/index125.js +23 -4
  62. package/dist/index125.js.map +1 -1
  63. package/dist/index126.js +6 -4
  64. package/dist/index126.js.map +1 -1
  65. package/dist/index127.js +5 -6
  66. package/dist/index127.js.map +1 -1
  67. package/dist/index128.js +23 -145
  68. package/dist/index128.js.map +1 -1
  69. package/dist/index129.js +34 -39
  70. package/dist/index129.js.map +1 -1
  71. package/dist/index130.js +16 -5
  72. package/dist/index130.js.map +1 -1
  73. package/dist/index131.js +6 -7
  74. package/dist/index131.js.map +1 -1
  75. package/dist/index132.js +4 -13
  76. package/dist/index132.js.map +1 -1
  77. package/dist/index133.js +4 -13
  78. package/dist/index133.js.map +1 -1
  79. package/dist/index134.js +4 -7
  80. package/dist/index134.js.map +1 -1
  81. package/dist/index135.js +4 -31
  82. package/dist/index135.js.map +1 -1
  83. package/dist/index136.js +3 -10
  84. package/dist/index136.js.map +1 -1
  85. package/dist/index137.js +6 -10
  86. package/dist/index137.js.map +1 -1
  87. package/dist/index138.js +24 -9
  88. package/dist/index138.js.map +1 -1
  89. package/dist/index139.js +7 -13
  90. package/dist/index139.js.map +1 -1
  91. package/dist/index140.js +6 -101
  92. package/dist/index140.js.map +1 -1
  93. package/dist/index141.js +6 -20
  94. package/dist/index141.js.map +1 -1
  95. package/dist/index142.js +3 -53
  96. package/dist/index142.js.map +1 -1
  97. package/dist/index143.js +3 -72
  98. package/dist/index143.js.map +1 -1
  99. package/dist/index144.js +4 -9
  100. package/dist/index144.js.map +1 -1
  101. package/dist/index145.js +3 -20
  102. package/dist/index145.js.map +1 -1
  103. package/dist/index146.js +4 -16
  104. package/dist/index146.js.map +1 -1
  105. package/dist/index147.js +3 -23
  106. package/dist/index147.js.map +1 -1
  107. package/dist/index148.js +3 -6
  108. package/dist/index148.js.map +1 -1
  109. package/dist/index149.js +3 -5
  110. package/dist/index149.js.map +1 -1
  111. package/dist/index150.js +5 -23
  112. package/dist/index150.js.map +1 -1
  113. package/dist/index151.js +68 -34
  114. package/dist/index151.js.map +1 -1
  115. package/dist/index152.js +2 -16
  116. package/dist/index152.js.map +1 -1
  117. package/dist/index153.js +363 -6
  118. package/dist/index153.js.map +1 -1
  119. package/dist/index154.js +261 -4
  120. package/dist/index154.js.map +1 -1
  121. package/dist/index155.js +60 -4
  122. package/dist/index155.js.map +1 -1
  123. package/dist/index156.js +46 -4
  124. package/dist/index156.js.map +1 -1
  125. package/dist/index157.js +169 -4
  126. package/dist/index157.js.map +1 -1
  127. package/dist/index158.js +109 -3
  128. package/dist/index158.js.map +1 -1
  129. package/dist/index159.js +24 -6
  130. package/dist/index159.js.map +1 -1
  131. package/dist/index16.js +77 -72
  132. package/dist/index16.js.map +1 -1
  133. package/dist/index160.js +8 -24
  134. package/dist/index160.js.map +1 -1
  135. package/dist/index161.js +4 -7
  136. package/dist/index161.js.map +1 -1
  137. package/dist/index162.js +5 -6
  138. package/dist/index162.js.map +1 -1
  139. package/dist/index163.js +4 -5
  140. package/dist/index163.js.map +1 -1
  141. package/dist/index164.js +466 -3
  142. package/dist/index164.js.map +1 -1
  143. package/dist/index165.js +185 -3
  144. package/dist/index165.js.map +1 -1
  145. package/dist/index166.js +107 -4
  146. package/dist/index166.js.map +1 -1
  147. package/dist/index167.js +262 -3
  148. package/dist/index167.js.map +1 -1
  149. package/dist/index168.js +9 -4
  150. package/dist/index168.js.map +1 -1
  151. package/dist/index169.js +42 -3
  152. package/dist/index169.js.map +1 -1
  153. package/dist/index170.js +4 -3
  154. package/dist/index170.js.map +1 -1
  155. package/dist/index171.js +11 -3
  156. package/dist/index171.js.map +1 -1
  157. package/dist/index172.js +63 -41
  158. package/dist/index172.js.map +1 -1
  159. package/dist/index173.js +35 -227
  160. package/dist/index173.js.map +1 -1
  161. package/dist/index174.js +14 -22
  162. package/dist/index174.js.map +1 -1
  163. package/dist/index175.js +23 -24
  164. package/dist/index175.js.map +1 -1
  165. package/dist/index176.js +104 -394
  166. package/dist/index176.js.map +1 -1
  167. package/dist/index177.js +13 -14
  168. package/dist/index177.js.map +1 -1
  169. package/dist/index178.js +4 -154
  170. package/dist/index178.js.map +1 -1
  171. package/dist/index179.js +4 -31
  172. package/dist/index179.js.map +1 -1
  173. package/dist/index18.js +6 -6
  174. package/dist/index180.js +5 -10
  175. package/dist/index180.js.map +1 -1
  176. package/dist/index181.js +11 -48
  177. package/dist/index181.js.map +1 -1
  178. package/dist/index182.js +19 -11
  179. package/dist/index182.js.map +1 -1
  180. package/dist/index183.js +13 -45
  181. package/dist/index183.js.map +1 -1
  182. package/dist/index184.js +255 -89
  183. package/dist/index184.js.map +1 -1
  184. package/dist/index185.js +4 -86
  185. package/dist/index185.js.map +1 -1
  186. package/dist/index186.js +26 -104
  187. package/dist/index186.js.map +1 -1
  188. package/dist/index187.js +126 -52
  189. package/dist/index187.js.map +1 -1
  190. package/dist/index188.js +5 -11
  191. package/dist/index188.js.map +1 -1
  192. package/dist/index189.js +78 -37
  193. package/dist/index189.js.map +1 -1
  194. package/dist/index19.js +280 -208
  195. package/dist/index19.js.map +1 -1
  196. package/dist/index190.js +66 -8
  197. package/dist/index190.js.map +1 -1
  198. package/dist/index191.js +7 -115
  199. package/dist/index191.js.map +1 -1
  200. package/dist/index192.js +16 -18
  201. package/dist/index192.js.map +1 -1
  202. package/dist/index193.js +92 -15
  203. package/dist/index193.js.map +1 -1
  204. package/dist/index194.js +65 -3
  205. package/dist/index194.js.map +1 -1
  206. package/dist/index195.js +42 -33
  207. package/dist/index195.js.map +1 -1
  208. package/dist/index196.js +58 -20
  209. package/dist/index196.js.map +1 -1
  210. package/dist/index197.js +8 -9
  211. package/dist/index197.js.map +1 -1
  212. package/dist/index198.js +66 -8
  213. package/dist/index198.js.map +1 -1
  214. package/dist/index199.js +18 -18
  215. package/dist/index199.js.map +1 -1
  216. package/dist/index200.js +15 -27
  217. package/dist/index200.js.map +1 -1
  218. package/dist/index201.js +4 -15
  219. package/dist/index201.js.map +1 -1
  220. package/dist/index202.js +4 -57
  221. package/dist/index202.js.map +1 -1
  222. package/dist/index203.js +6 -8
  223. package/dist/index203.js.map +1 -1
  224. package/dist/index204.js +4 -66
  225. package/dist/index204.js.map +1 -1
  226. package/dist/index205.js +6 -19
  227. package/dist/index205.js.map +1 -1
  228. package/dist/index206.js +16 -16
  229. package/dist/index206.js.map +1 -1
  230. package/dist/index207.js +4 -5
  231. package/dist/index207.js.map +1 -1
  232. package/dist/index208.js +4 -5
  233. package/dist/index208.js.map +1 -1
  234. package/dist/index209.js +12 -6
  235. package/dist/index209.js.map +1 -1
  236. package/dist/index210.js +9 -4
  237. package/dist/index210.js.map +1 -1
  238. package/dist/index211.js +13 -6
  239. package/dist/index211.js.map +1 -1
  240. package/dist/index212.js +13 -16
  241. package/dist/index212.js.map +1 -1
  242. package/dist/index213.js +4 -4
  243. package/dist/index213.js.map +1 -1
  244. package/dist/index214.js +5 -4
  245. package/dist/index214.js.map +1 -1
  246. package/dist/index215.js +6 -12
  247. package/dist/index215.js.map +1 -1
  248. package/dist/index216.js +5 -9
  249. package/dist/index216.js.map +1 -1
  250. package/dist/index217.js +54 -13
  251. package/dist/index217.js.map +1 -1
  252. package/dist/index218.js +8 -13
  253. package/dist/index218.js.map +1 -1
  254. package/dist/index219.js +4 -4
  255. package/dist/index219.js.map +1 -1
  256. package/dist/index220.js +4 -5
  257. package/dist/index220.js.map +1 -1
  258. package/dist/index221.js +8 -6
  259. package/dist/index221.js.map +1 -1
  260. package/dist/index222.js +4 -5
  261. package/dist/index222.js.map +1 -1
  262. package/dist/index223.js +4 -54
  263. package/dist/index223.js.map +1 -1
  264. package/dist/index224.js +3 -8
  265. package/dist/index224.js.map +1 -1
  266. package/dist/index225.js +10 -4
  267. package/dist/index225.js.map +1 -1
  268. package/dist/index226.js +9 -4
  269. package/dist/index226.js.map +1 -1
  270. package/dist/index227.js +9 -8
  271. package/dist/index227.js.map +1 -1
  272. package/dist/index228.js +10 -4
  273. package/dist/index228.js.map +1 -1
  274. package/dist/index229.js +10 -4
  275. package/dist/index229.js.map +1 -1
  276. package/dist/index230.js +9 -3
  277. package/dist/index230.js.map +1 -1
  278. package/dist/index231.js +6 -10
  279. package/dist/index231.js.map +1 -1
  280. package/dist/index232.js +5 -9
  281. package/dist/index232.js.map +1 -1
  282. package/dist/index233.js +4 -9
  283. package/dist/index233.js.map +1 -1
  284. package/dist/index234.js +5 -10
  285. package/dist/index234.js.map +1 -1
  286. package/dist/index235.js +6 -10
  287. package/dist/index235.js.map +1 -1
  288. package/dist/index236.js +5 -9
  289. package/dist/index236.js.map +1 -1
  290. package/dist/index237.js +29 -6
  291. package/dist/index237.js.map +1 -1
  292. package/dist/index238.js +12 -5
  293. package/dist/index238.js.map +1 -1
  294. package/dist/index239.js +25 -4
  295. package/dist/index239.js.map +1 -1
  296. package/dist/index240.js +5 -5
  297. package/dist/index240.js.map +1 -1
  298. package/dist/index241.js +16 -6
  299. package/dist/index241.js.map +1 -1
  300. package/dist/index242.js +7 -5
  301. package/dist/index242.js.map +1 -1
  302. package/dist/index243.js +9 -15
  303. package/dist/index243.js.map +1 -1
  304. package/dist/index244.js +10 -7
  305. package/dist/index244.js.map +1 -1
  306. package/dist/index245.js +21 -10
  307. package/dist/index245.js.map +1 -1
  308. package/dist/index246.js +10 -10
  309. package/dist/index246.js.map +1 -1
  310. package/dist/index247.js +9 -21
  311. package/dist/index247.js.map +1 -1
  312. package/dist/index248.js +9 -10
  313. package/dist/index248.js.map +1 -1
  314. package/dist/index249.js +4 -9
  315. package/dist/index249.js.map +1 -1
  316. package/dist/index250.js +5 -9
  317. package/dist/index250.js.map +1 -1
  318. package/dist/index251.js +16 -4
  319. package/dist/index251.js.map +1 -1
  320. package/dist/index252.js +9 -5
  321. package/dist/index252.js.map +1 -1
  322. package/dist/index253.js +18 -16
  323. package/dist/index253.js.map +1 -1
  324. package/dist/index254.js +15 -9
  325. package/dist/index254.js.map +1 -1
  326. package/dist/index255.js +8 -14
  327. package/dist/index255.js.map +1 -1
  328. package/dist/index256.js +13 -15
  329. package/dist/index256.js.map +1 -1
  330. package/dist/index257.js +154 -12
  331. package/dist/index257.js.map +1 -1
  332. package/dist/index258.js +29 -28
  333. package/dist/index258.js.map +1 -1
  334. package/dist/index259.js +9 -12
  335. package/dist/index259.js.map +1 -1
  336. package/dist/index260.js +46 -23
  337. package/dist/index260.js.map +1 -1
  338. package/dist/index261.js +11 -5
  339. package/dist/index261.js.map +1 -1
  340. package/dist/index262.js +43 -23
  341. package/dist/index262.js.map +1 -1
  342. package/dist/index263.js +95 -28
  343. package/dist/index263.js.map +1 -1
  344. package/dist/index264.js +87 -5
  345. package/dist/index264.js.map +1 -1
  346. package/dist/index265.js +105 -20
  347. package/dist/index265.js.map +1 -1
  348. package/dist/index266.js +52 -4
  349. package/dist/index266.js.map +1 -1
  350. package/dist/index267.js +11 -17
  351. package/dist/index267.js.map +1 -1
  352. package/dist/index268.js +37 -12
  353. package/dist/index268.js.map +1 -1
  354. package/dist/index269.js +9 -5
  355. package/dist/index269.js.map +1 -1
  356. package/dist/index270.js +117 -3
  357. package/dist/index270.js.map +1 -1
  358. package/dist/index271.js +17 -23
  359. package/dist/index271.js.map +1 -1
  360. package/dist/index272.js +14 -111
  361. package/dist/index272.js.map +1 -1
  362. package/dist/index273.js +3 -15
  363. package/dist/index273.js.map +1 -1
  364. package/dist/index274.js +29 -522
  365. package/dist/index274.js.map +1 -1
  366. package/dist/index275.js +19 -124
  367. package/dist/index275.js.map +1 -1
  368. package/dist/index276.js +9 -133
  369. package/dist/index276.js.map +1 -1
  370. package/dist/index277.js +8 -4
  371. package/dist/index277.js.map +1 -1
  372. package/dist/index278.js +19 -4
  373. package/dist/index278.js.map +1 -1
  374. package/dist/index279.js +29 -4
  375. package/dist/index279.js.map +1 -1
  376. package/dist/index28.js +1 -1
  377. package/dist/index280.js +16 -15
  378. package/dist/index280.js.map +1 -1
  379. package/dist/index281.js +66 -8
  380. package/dist/index281.js.map +1 -1
  381. package/dist/index282.js +8 -5
  382. package/dist/index282.js.map +1 -1
  383. package/dist/index283.js +11 -4
  384. package/dist/index283.js.map +1 -1
  385. package/dist/index284.js +7 -544
  386. package/dist/index284.js.map +1 -1
  387. package/dist/index285.js +6 -47
  388. package/dist/index285.js.map +1 -1
  389. package/dist/index286.js +13 -17
  390. package/dist/index286.js.map +1 -1
  391. package/dist/index287.js +3 -5
  392. package/dist/index287.js.map +1 -1
  393. package/dist/index288.js +3 -7
  394. package/dist/index288.js.map +1 -1
  395. package/dist/index289.js +99 -6
  396. package/dist/index289.js.map +1 -1
  397. package/dist/index290.js +17 -7
  398. package/dist/index290.js.map +1 -1
  399. package/dist/index291.js +5 -11
  400. package/dist/index291.js.map +1 -1
  401. package/dist/index292.js +29 -8
  402. package/dist/index292.js.map +1 -1
  403. package/dist/index293.js +51 -12
  404. package/dist/index293.js.map +1 -1
  405. package/dist/index294.js +131 -66
  406. package/dist/index294.js.map +1 -1
  407. package/dist/index295.js +9 -9
  408. package/dist/index295.js.map +1 -1
  409. package/dist/index296.js +5 -14
  410. package/dist/index296.js.map +1 -1
  411. package/dist/index297.js +4 -66
  412. package/dist/index297.js.map +1 -1
  413. package/dist/index298.js +11 -64
  414. package/dist/index298.js.map +1 -1
  415. package/dist/index299.js +21 -4
  416. package/dist/index299.js.map +1 -1
  417. package/dist/index30.js +1 -1
  418. package/dist/index300.js +121 -54
  419. package/dist/index300.js.map +1 -1
  420. package/dist/index301.js +28 -68
  421. package/dist/index301.js.map +1 -1
  422. package/dist/index302.js +33 -31
  423. package/dist/index302.js.map +1 -1
  424. package/dist/index303.js +74 -9
  425. package/dist/index303.js.map +1 -1
  426. package/dist/index304.js +262 -152
  427. package/dist/index304.js.map +1 -1
  428. package/dist/index305.js +28 -107
  429. package/dist/index305.js.map +1 -1
  430. package/dist/index306.js +6 -3
  431. package/dist/index306.js.map +1 -1
  432. package/dist/index307.js +141 -21
  433. package/dist/index307.js.map +1 -1
  434. package/dist/index308.js +61 -15
  435. package/dist/index308.js.map +1 -1
  436. package/dist/index309.js +48 -27
  437. package/dist/index309.js.map +1 -1
  438. package/dist/index31.js +227 -120
  439. package/dist/index31.js.map +1 -1
  440. package/dist/index310.js +15 -13
  441. package/dist/index310.js.map +1 -1
  442. package/dist/index311.js +20 -7
  443. package/dist/index311.js.map +1 -1
  444. package/dist/index312.js +12 -23
  445. package/dist/index312.js.map +1 -1
  446. package/dist/index313.js +51 -13
  447. package/dist/index313.js.map +1 -1
  448. package/dist/index314.js +14 -25
  449. package/dist/index314.js.map +1 -1
  450. package/dist/index315.js +22 -5
  451. package/dist/index315.js.map +1 -1
  452. package/dist/index316.js +55 -0
  453. package/dist/index316.js.map +1 -0
  454. package/dist/index317.js +29 -0
  455. package/dist/index317.js.map +1 -0
  456. package/dist/index318.js +45 -0
  457. package/dist/index318.js.map +1 -0
  458. package/dist/index319.js +43 -0
  459. package/dist/index319.js.map +1 -0
  460. package/dist/index32.js +21 -229
  461. package/dist/index32.js.map +1 -1
  462. package/dist/index320.js +48 -0
  463. package/dist/index320.js.map +1 -0
  464. package/dist/index321.js +24 -0
  465. package/dist/index321.js.map +1 -0
  466. package/dist/index322.js +74 -0
  467. package/dist/index322.js.map +1 -0
  468. package/dist/index323.js +21 -0
  469. package/dist/index323.js.map +1 -0
  470. package/dist/index324.js +15 -0
  471. package/dist/index324.js.map +1 -0
  472. package/dist/index325.js +17 -0
  473. package/dist/index325.js.map +1 -0
  474. package/dist/index326.js +22 -0
  475. package/dist/index326.js.map +1 -0
  476. package/dist/index327.js +40 -0
  477. package/dist/index327.js.map +1 -0
  478. package/dist/index328.js +282 -0
  479. package/dist/index328.js.map +1 -0
  480. package/dist/index329.js +72 -0
  481. package/dist/index329.js.map +1 -0
  482. package/dist/index33.js +4 -23
  483. package/dist/index33.js.map +1 -1
  484. package/dist/index330.js +87 -0
  485. package/dist/index330.js.map +1 -0
  486. package/dist/index331.js +7 -0
  487. package/dist/index331.js.map +1 -0
  488. package/dist/index332.js +33 -0
  489. package/dist/index332.js.map +1 -0
  490. package/dist/index333.js +20 -0
  491. package/dist/index333.js.map +1 -0
  492. package/dist/index334.js +38 -0
  493. package/dist/index334.js.map +1 -0
  494. package/dist/index335.js +20 -0
  495. package/dist/index335.js.map +1 -0
  496. package/dist/index336.js +7 -0
  497. package/dist/index336.js.map +1 -0
  498. package/dist/index337.js +30 -0
  499. package/dist/index337.js.map +1 -0
  500. package/dist/index338.js +7 -0
  501. package/dist/index338.js.map +1 -0
  502. package/dist/index339.js +82 -0
  503. package/dist/index339.js.map +1 -0
  504. package/dist/index34.js +62 -51
  505. package/dist/index34.js.map +1 -1
  506. package/dist/index340.js +273 -0
  507. package/dist/index340.js.map +1 -0
  508. package/dist/index341.js +15 -0
  509. package/dist/index341.js.map +1 -0
  510. package/dist/index342.js +14 -0
  511. package/dist/index342.js.map +1 -0
  512. package/dist/index343.js +29 -0
  513. package/dist/index343.js.map +1 -0
  514. package/dist/index344.js +20 -0
  515. package/dist/index344.js.map +1 -0
  516. package/dist/index345.js +129 -0
  517. package/dist/index345.js.map +1 -0
  518. package/dist/index346.js +9 -0
  519. package/dist/index346.js.map +1 -0
  520. package/dist/index347.js +44 -0
  521. package/dist/index347.js.map +1 -0
  522. package/dist/index348.js +69 -0
  523. package/dist/index348.js.map +1 -0
  524. package/dist/index349.js +17 -0
  525. package/dist/index349.js.map +1 -0
  526. package/dist/index35.js +38 -21
  527. package/dist/index35.js.map +1 -1
  528. package/dist/index350.js +11 -0
  529. package/dist/index350.js.map +1 -0
  530. package/dist/index351.js +9 -0
  531. package/dist/index351.js.map +1 -0
  532. package/dist/index352.js +7 -0
  533. package/dist/index352.js.map +1 -0
  534. package/dist/index353.js +14 -0
  535. package/dist/index353.js.map +1 -0
  536. package/dist/index354.js +11 -0
  537. package/dist/index354.js.map +1 -0
  538. package/dist/index355.js +403 -0
  539. package/dist/index355.js.map +1 -0
  540. package/dist/index356.js +56 -0
  541. package/dist/index356.js.map +1 -0
  542. package/dist/index357.js +15 -0
  543. package/dist/index357.js.map +1 -0
  544. package/dist/index358.js +15 -0
  545. package/dist/index358.js.map +1 -0
  546. package/dist/index359.js +8 -0
  547. package/dist/index359.js.map +1 -0
  548. package/dist/index36.js +75 -127
  549. package/dist/index36.js.map +1 -1
  550. package/dist/index360.js +21 -0
  551. package/dist/index360.js.map +1 -0
  552. package/dist/index361.js +16 -0
  553. package/dist/index361.js.map +1 -0
  554. package/dist/index362.js +24 -0
  555. package/dist/index362.js.map +1 -0
  556. package/dist/index363.js +12 -0
  557. package/dist/index363.js.map +1 -0
  558. package/dist/index364.js +29 -0
  559. package/dist/index364.js.map +1 -0
  560. package/dist/index365.js +30 -0
  561. package/dist/index365.js.map +1 -0
  562. package/dist/index366.js +141 -0
  563. package/dist/index366.js.map +1 -0
  564. package/dist/index367.js +16 -0
  565. package/dist/index367.js.map +1 -0
  566. package/dist/index368.js +230 -0
  567. package/dist/index368.js.map +1 -0
  568. package/dist/index369.js +7 -0
  569. package/dist/index369.js.map +1 -0
  570. package/dist/index37.js +22 -221
  571. package/dist/index37.js.map +1 -1
  572. package/dist/index370.js +23 -0
  573. package/dist/index370.js.map +1 -0
  574. package/dist/index371.js +81 -0
  575. package/dist/index371.js.map +1 -0
  576. package/dist/index372.js +15 -0
  577. package/dist/index372.js.map +1 -0
  578. package/dist/index373.js +7 -0
  579. package/dist/index373.js.map +1 -0
  580. package/dist/index374.js +81 -0
  581. package/dist/index374.js.map +1 -0
  582. package/dist/index375.js +204 -0
  583. package/dist/index375.js.map +1 -0
  584. package/dist/index376.js +75 -0
  585. package/dist/index376.js.map +1 -0
  586. package/dist/index377.js +12 -0
  587. package/dist/index377.js.map +1 -0
  588. package/dist/index378.js +19 -0
  589. package/dist/index378.js.map +1 -0
  590. package/dist/index379.js +20 -0
  591. package/dist/index379.js.map +1 -0
  592. package/dist/index38.js +37 -90
  593. package/dist/index38.js.map +1 -1
  594. package/dist/index380.js +7 -0
  595. package/dist/index380.js.map +1 -0
  596. package/dist/index381.js +15 -0
  597. package/dist/index381.js.map +1 -0
  598. package/dist/index382.js +9 -0
  599. package/dist/index382.js.map +1 -0
  600. package/dist/index383.js +24 -0
  601. package/dist/index383.js.map +1 -0
  602. package/dist/index384.js +48 -0
  603. package/dist/index384.js.map +1 -0
  604. package/dist/index385.js +21 -0
  605. package/dist/index385.js.map +1 -0
  606. package/dist/index386.js +8 -0
  607. package/dist/index386.js.map +1 -0
  608. package/dist/index387.js +8 -0
  609. package/dist/index387.js.map +1 -0
  610. package/dist/index388.js +8 -0
  611. package/dist/index388.js.map +1 -0
  612. package/dist/index389.js +7 -0
  613. package/dist/index389.js.map +1 -0
  614. package/dist/index39.js +28 -119
  615. package/dist/index39.js.map +1 -1
  616. package/dist/index390.js +19 -0
  617. package/dist/index390.js.map +1 -0
  618. package/dist/index391.js +12 -0
  619. package/dist/index391.js.map +1 -0
  620. package/dist/index392.js +9 -0
  621. package/dist/index392.js.map +1 -0
  622. package/dist/index393.js +8 -0
  623. package/dist/index393.js.map +1 -0
  624. package/dist/index394.js +549 -0
  625. package/dist/index394.js.map +1 -0
  626. package/dist/index395.js +50 -0
  627. package/dist/index395.js.map +1 -0
  628. package/dist/index396.js +21 -0
  629. package/dist/index396.js.map +1 -0
  630. package/dist/index397.js +9 -0
  631. package/dist/index397.js.map +1 -0
  632. package/dist/index398.js +11 -0
  633. package/dist/index398.js.map +1 -0
  634. package/dist/index399.js +10 -0
  635. package/dist/index399.js.map +1 -0
  636. package/dist/index40.js +23 -6
  637. package/dist/index40.js.map +1 -1
  638. package/dist/index400.js +11 -0
  639. package/dist/index400.js.map +1 -0
  640. package/dist/index401.js +15 -0
  641. package/dist/index401.js.map +1 -0
  642. package/dist/index402.js +12 -0
  643. package/dist/index402.js.map +1 -0
  644. package/dist/index403.js +16 -0
  645. package/dist/index403.js.map +1 -0
  646. package/dist/index404.js +18 -0
  647. package/dist/index404.js.map +1 -0
  648. package/dist/index405.js +495 -0
  649. package/dist/index405.js.map +1 -0
  650. package/dist/index406.js +6 -0
  651. package/dist/index406.js.map +1 -0
  652. package/dist/index407.js +6 -0
  653. package/dist/index407.js.map +1 -0
  654. package/dist/index408.js +8 -0
  655. package/dist/index408.js.map +1 -0
  656. package/dist/index409.js +59 -0
  657. package/dist/index409.js.map +1 -0
  658. package/dist/index41.js +51 -817
  659. package/dist/index41.js.map +1 -1
  660. package/dist/index410.js +71 -0
  661. package/dist/index410.js.map +1 -0
  662. package/dist/index411.js +34 -0
  663. package/dist/index411.js.map +1 -0
  664. package/dist/index412.js +12 -0
  665. package/dist/index412.js.map +1 -0
  666. package/dist/index413.js +156 -0
  667. package/dist/index413.js.map +1 -0
  668. package/dist/index414.js +111 -0
  669. package/dist/index414.js.map +1 -0
  670. package/dist/index415.js +11 -0
  671. package/dist/index415.js.map +1 -0
  672. package/dist/index416.js +5 -0
  673. package/dist/index416.js.map +1 -0
  674. package/dist/index417.js +47 -0
  675. package/dist/index417.js.map +1 -0
  676. package/dist/index418.js +59 -0
  677. package/dist/index418.js.map +1 -0
  678. package/dist/index419.js +11 -0
  679. package/dist/index419.js.map +1 -0
  680. package/dist/index42.js +51 -57
  681. package/dist/index42.js.map +1 -1
  682. package/dist/index420.js +5 -0
  683. package/dist/index420.js.map +1 -0
  684. package/dist/index421.js +58 -0
  685. package/dist/index421.js.map +1 -0
  686. package/dist/index422.js +59 -0
  687. package/dist/index422.js.map +1 -0
  688. package/dist/index423.js +19 -0
  689. package/dist/index423.js.map +1 -0
  690. package/dist/index424.js +32 -0
  691. package/dist/index424.js.map +1 -0
  692. package/dist/index425.js +16 -0
  693. package/dist/index425.js.map +1 -0
  694. package/dist/index426.js +10 -0
  695. package/dist/index426.js.map +1 -0
  696. package/dist/index427.js +5 -0
  697. package/dist/index427.js.map +1 -0
  698. package/dist/index428.js +5 -0
  699. package/dist/index428.js.map +1 -0
  700. package/dist/index429.js +5 -0
  701. package/dist/index429.js.map +1 -0
  702. package/dist/index43.js +21 -7
  703. package/dist/index43.js.map +1 -1
  704. package/dist/index430.js +5 -0
  705. package/dist/index430.js.map +1 -0
  706. package/dist/index44.js +130 -2
  707. package/dist/index44.js.map +1 -1
  708. package/dist/index45.js +221 -11
  709. package/dist/index45.js.map +1 -1
  710. package/dist/index46.js +90 -18
  711. package/dist/index46.js.map +1 -1
  712. package/dist/index47.js +118 -7
  713. package/dist/index47.js.map +1 -1
  714. package/dist/index48.js +6 -2
  715. package/dist/index48.js.map +1 -1
  716. package/dist/index49.js +326 -23
  717. package/dist/index49.js.map +1 -1
  718. package/dist/index50.js +247 -221
  719. package/dist/index50.js.map +1 -1
  720. package/dist/index51.js +27 -2
  721. package/dist/index51.js.map +1 -1
  722. package/dist/index52.js +129 -2
  723. package/dist/index52.js.map +1 -1
  724. package/dist/index53.js +26 -2
  725. package/dist/index53.js.map +1 -1
  726. package/dist/index54.js +23 -2
  727. package/dist/index54.js.map +1 -1
  728. package/dist/index55.js +145 -6
  729. package/dist/index55.js.map +1 -1
  730. package/dist/index56.js +34 -33
  731. package/dist/index56.js.map +1 -1
  732. package/dist/index57.js +28 -48
  733. package/dist/index57.js.map +1 -1
  734. package/dist/index58.js +41 -8
  735. package/dist/index58.js.map +1 -1
  736. package/dist/index59.js +21 -12
  737. package/dist/index59.js.map +1 -1
  738. package/dist/index6.js +84 -85
  739. package/dist/index6.js.map +1 -1
  740. package/dist/index60.js +132 -6
  741. package/dist/index60.js.map +1 -1
  742. package/dist/index61.js +51 -8
  743. package/dist/index61.js.map +1 -1
  744. package/dist/index62.js +30 -6
  745. package/dist/index62.js.map +1 -1
  746. package/dist/index63.js +57 -4
  747. package/dist/index63.js.map +1 -1
  748. package/dist/index64.js +7 -47
  749. package/dist/index64.js.map +1 -1
  750. package/dist/index65.js +2 -51
  751. package/dist/index65.js.map +1 -1
  752. package/dist/index66.js +11 -7
  753. package/dist/index66.js.map +1 -1
  754. package/dist/index67.js +17 -13
  755. package/dist/index67.js.map +1 -1
  756. package/dist/index68.js +7 -133
  757. package/dist/index68.js.map +1 -1
  758. package/dist/index69.js +2 -11
  759. package/dist/index69.js.map +1 -1
  760. package/dist/index7.js +123 -98
  761. package/dist/index7.js.map +1 -1
  762. package/dist/index70.js +22 -215
  763. package/dist/index70.js.map +1 -1
  764. package/dist/index71.js +234 -13
  765. package/dist/index71.js.map +1 -1
  766. package/dist/index72.js +2 -47
  767. package/dist/index72.js.map +1 -1
  768. package/dist/index73.js +2 -50
  769. package/dist/index73.js.map +1 -1
  770. package/dist/index74.js +2 -4
  771. package/dist/index74.js.map +1 -1
  772. package/dist/index75.js +2 -6
  773. package/dist/index75.js.map +1 -1
  774. package/dist/index76.js +6 -28
  775. package/dist/index76.js.map +1 -1
  776. package/dist/index77.js +8 -50
  777. package/dist/index77.js.map +1 -1
  778. package/dist/index78.js +6 -9
  779. package/dist/index78.js.map +1 -1
  780. package/dist/index79.js +52 -47
  781. package/dist/index79.js.map +1 -1
  782. package/dist/index8.js +53 -54
  783. package/dist/index8.js.map +1 -1
  784. package/dist/index80.js +4 -5
  785. package/dist/index80.js.map +1 -1
  786. package/dist/index81.js +4 -68
  787. package/dist/index81.js.map +1 -1
  788. package/dist/index82.js +16 -2
  789. package/dist/index82.js.map +1 -1
  790. package/dist/index83.js +5 -363
  791. package/dist/index83.js.map +1 -1
  792. package/dist/index84.js +7 -261
  793. package/dist/index84.js.map +1 -1
  794. package/dist/index85.js +16 -60
  795. package/dist/index85.js.map +1 -1
  796. package/dist/index86.js +4 -46
  797. package/dist/index86.js.map +1 -1
  798. package/dist/index87.js +4 -169
  799. package/dist/index87.js.map +1 -1
  800. package/dist/index88.js +5 -109
  801. package/dist/index88.js.map +1 -1
  802. package/dist/index89.js +5 -24
  803. package/dist/index89.js.map +1 -1
  804. package/dist/index9.js +1 -1
  805. package/dist/index90.js +5 -8
  806. package/dist/index90.js.map +1 -1
  807. package/dist/index91.js +4 -4
  808. package/dist/index91.js.map +1 -1
  809. package/dist/index92.js +6 -5
  810. package/dist/index92.js.map +1 -1
  811. package/dist/index93.js +24 -4
  812. package/dist/index93.js.map +1 -1
  813. package/dist/index94.js +6 -466
  814. package/dist/index94.js.map +1 -1
  815. package/dist/index95.js +4 -185
  816. package/dist/index95.js.map +1 -1
  817. package/dist/index96.js +6 -107
  818. package/dist/index96.js.map +1 -1
  819. package/dist/index97.js +5 -262
  820. package/dist/index97.js.map +1 -1
  821. package/dist/index98.js +4 -9
  822. package/dist/index98.js.map +1 -1
  823. package/dist/index99.js +5 -42
  824. package/dist/index99.js.map +1 -1
  825. package/dist/lib/render-as-child.d.ts +5 -0
  826. package/dist/lib/render-as-child.d.ts.map +1 -0
  827. package/package.json +3 -6
  828. package/dist/lib/react-compose-refs.d.ts +0 -5
  829. package/dist/lib/react-compose-refs.d.ts.map +0 -1
package/dist/index16.js CHANGED
@@ -1,22 +1,27 @@
1
1
  import { j as t } from "./index30.js";
2
- import { c as H } from "./index28.js";
3
- import { useContext as Q, useState as T, useMemo as K, useCallback as W, useEffect as G, createContext as Z, useRef as J } from "react";
4
- import * as P from "@radix-ui/react-dialog";
5
- import { X as _, Loader2 as ee, MoreVertical as te } from "lucide-react";
6
- import { cn as Y } from "./index2.js";
7
- const q = (s) => {
2
+ import { c as q } from "./index28.js";
3
+ import { useContext as H, useState as T, useMemo as B, useCallback as Q, useEffect as Y, createContext as W, useRef as G } from "react";
4
+ import { X as Z, Loader2 as _, MoreVertical as ee } from "lucide-react";
5
+ import { cn as K } from "./index2.js";
6
+ import { DialogRoot as te } from "./index34.js";
7
+ import { DialogPortal as ne } from "./index39.js";
8
+ import { DialogBackdrop as re } from "./index38.js";
9
+ import { DialogPopup as oe } from "./index36.js";
10
+ import { DialogTitle as se } from "./index40.js";
11
+ import { DialogClose as ie } from "./index35.js";
12
+ const X = (s) => {
8
13
  const e = Date.parse(s);
9
14
  return Number.isFinite(e) ? e : 0;
10
- }, ne = (s) => {
11
- const e = new Date(q(s));
15
+ }, ae = (s) => {
16
+ const e = new Date(X(s));
12
17
  if (!Number.isFinite(e.getTime())) return "unknown";
13
18
  const n = e.getFullYear(), i = String(e.getMonth() + 1).padStart(2, "0"), a = String(e.getDate()).padStart(2, "0");
14
19
  return `${n}-${i}-${a}`;
15
- }, re = (s) => {
20
+ }, le = (s) => {
16
21
  if (s === "unknown") return "Unknown date";
17
- const [e, n, i] = s.split("-"), a = Number(e), c = Number(n), o = Number(i);
18
- if (!Number.isFinite(a) || !Number.isFinite(c) || !Number.isFinite(o)) return "Unknown date";
19
- const U = new Date(a, c - 1, o);
22
+ const [e, n, i] = s.split("-"), a = Number(e), l = Number(n), o = Number(i);
23
+ if (!Number.isFinite(a) || !Number.isFinite(l) || !Number.isFinite(o)) return "Unknown date";
24
+ const U = new Date(a, l - 1, o);
20
25
  if (!Number.isFinite(U.getTime())) return "Unknown date";
21
26
  const f = (/* @__PURE__ */ new Date()).getFullYear() !== a;
22
27
  return U.toLocaleDateString(void 0, f ? {
@@ -29,28 +34,28 @@ const q = (s) => {
29
34
  month: "short",
30
35
  day: "numeric"
31
36
  });
32
- }, V = (s) => {
37
+ }, J = (s) => {
33
38
  const e = [];
34
39
  let n = null;
35
40
  for (const i of s) {
36
- const a = ne(i.createdAt);
41
+ const a = ae(i.createdAt);
37
42
  a !== n && (n = a, e.push({
38
43
  key: a,
39
- label: re(a),
44
+ label: le(a),
40
45
  items: []
41
46
  })), e[e.length - 1].items.push(i);
42
47
  }
43
48
  return e;
44
- }, oe = Z(null);
45
- function ue({
49
+ }, ce = W(null);
50
+ function Ne({
46
51
  open: s,
47
52
  onOpenChange: e,
48
53
  className: n,
49
54
  limit: i = 50,
50
55
  defaultUnreadOnly: a = !1,
51
- realtimeContext: c
56
+ realtimeContext: l
52
57
  }) {
53
- const o = Q(c ?? oe), [U, A] = T([]), [f, g] = T(0), [F, S] = T(0), [L, $] = T(!1), [M, h] = T(null), [l, R] = T(a), y = o?.notifications ?? U, v = o?.unreadCount ?? f, j = o?.unseenCount ?? F, D = o?.loading ?? L, O = o?.error ? o.error instanceof Error ? o.error.message : String(o.error) : M, p = K(() => y.slice(0, i), [i, y]), N = K(() => p.filter((r) => !r.readAt), [p]), w = K(() => p.filter((r) => !!r.readAt), [p]), k = K(() => V(N), [N]), E = K(() => V(w), [w]), b = W(async ({
58
+ const o = H(l ?? ce), [U, A] = T([]), [f, g] = T(0), [F, D] = T(0), [L, $] = T(!1), [S, h] = T(null), [c, M] = T(a), y = o?.notifications ?? U, v = o?.unreadCount ?? f, j = o?.unseenCount ?? F, R = o?.loading ?? L, O = o?.error ? o.error instanceof Error ? o.error.message : String(o.error) : S, p = B(() => y.slice(0, i), [i, y]), N = B(() => p.filter((r) => !r.readAt), [p]), w = B(() => p.filter((r) => !!r.readAt), [p]), k = B(() => J(N), [N]), E = B(() => J(w), [w]), b = Q(async ({
54
59
  unreadOnly: r,
55
60
  markSeen: u
56
61
  }) => {
@@ -73,14 +78,14 @@ function ue({
73
78
  return;
74
79
  }
75
80
  const C = Array.isArray(d.notifications) ? d.notifications : [];
76
- A(C), g(Number.isFinite(d.unreadCount) ? Math.max(0, Math.floor(d.unreadCount ?? 0)) : 0), S(Number.isFinite(d.unseenCount) ? Math.max(0, Math.floor(d.unseenCount ?? 0)) : 0);
81
+ A(C), g(Number.isFinite(d.unreadCount) ? Math.max(0, Math.floor(d.unreadCount ?? 0)) : 0), D(Number.isFinite(d.unseenCount) ? Math.max(0, Math.floor(d.unseenCount ?? 0)) : 0);
77
82
  } catch {
78
83
  h("Unable to load notifications.");
79
84
  } finally {
80
85
  $(!1);
81
86
  }
82
87
  }, [i]);
83
- G(() => {
88
+ Y(() => {
84
89
  if (s) {
85
90
  if (o) {
86
91
  (async () => {
@@ -104,17 +109,17 @@ function ue({
104
109
  return;
105
110
  }
106
111
  b({
107
- unreadOnly: l,
112
+ unreadOnly: c,
108
113
  markSeen: !0
109
114
  });
110
115
  }
111
- }, [s, o, b, l]), G(() => {
116
+ }, [s, o, b, c]), Y(() => {
112
117
  s && (o || b({
113
- unreadOnly: l,
118
+ unreadOnly: c,
114
119
  markSeen: !1
115
120
  }));
116
- }, [s, o, b, l]);
117
- const B = async (r) => {
121
+ }, [s, o, b, c]);
122
+ const P = async (r) => {
118
123
  try {
119
124
  const u = await fetch(`/api/rb/notifications/${encodeURIComponent(r)}/read`, {
120
125
  method: "POST",
@@ -130,7 +135,7 @@ function ue({
130
135
  if (o) return;
131
136
  A((C) => {
132
137
  const m = C.find((x) => x.id === r);
133
- return m && !m.readAt && g((x) => Math.max(0, x - 1)), m && !m.seenAt && S((x) => Math.max(0, x - 1)), C.map((x) => x.id === r && !x.readAt ? {
138
+ return m && !m.readAt && g((x) => Math.max(0, x - 1)), m && !m.seenAt && D((x) => Math.max(0, x - 1)), C.map((x) => x.id === r && !x.readAt ? {
134
139
  ...x,
135
140
  readAt: d,
136
141
  ...x.seenAt ? {} : {
@@ -154,54 +159,54 @@ function ue({
154
159
  if (!u.ok || !I?.ok || o) return;
155
160
  A((d) => {
156
161
  const C = d.find((m) => m.id === r);
157
- return C && !C.readAt && g((m) => Math.max(0, m - 1)), C && !C.seenAt && S((m) => Math.max(0, m - 1)), d.filter((m) => m.id !== r);
162
+ return C && !C.readAt && g((m) => Math.max(0, m - 1)), C && !C.seenAt && D((m) => Math.max(0, m - 1)), d.filter((m) => m.id !== r);
158
163
  });
159
164
  } catch {
160
165
  return;
161
166
  }
162
167
  };
163
- return /* @__PURE__ */ t.jsx(P.Root, { open: s, onOpenChange: e, children: /* @__PURE__ */ t.jsxs(P.Portal, { children: [
164
- /* @__PURE__ */ t.jsx(P.Overlay, { className: "fixed inset-0 z-50 bg-black/50" }),
165
- /* @__PURE__ */ t.jsxs(P.Content, { className: Y("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), children: [
168
+ return /* @__PURE__ */ t.jsx(te, { open: s, onOpenChange: e, children: /* @__PURE__ */ t.jsxs(ne, { children: [
169
+ /* @__PURE__ */ t.jsx(re, { className: "fixed inset-0 z-50 bg-black/50" }),
170
+ /* @__PURE__ */ t.jsxs(oe, { className: K("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), children: [
166
171
  /* @__PURE__ */ t.jsxs("header", { className: "flex items-center justify-between gap-2 border-b px-4 py-3", children: [
167
172
  /* @__PURE__ */ t.jsxs("div", { className: "flex min-w-0 flex-col", children: [
168
- /* @__PURE__ */ t.jsx(P.Title, { className: "text-sm font-semibold", children: "Notifications" }),
173
+ /* @__PURE__ */ t.jsx(se, { className: "text-sm font-semibold", children: "Notifications" }),
169
174
  /* @__PURE__ */ t.jsx("span", { className: "text-xs text-muted-foreground", children: v > 0 ? `${v} unread` : j > 0 ? `${j} new` : "All caught up" })
170
175
  ] }),
171
176
  /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-2", children: [
172
- /* @__PURE__ */ t.jsx("button", { type: "button", onClick: () => R((r) => !r), className: Y("rounded-md border px-2 py-1 text-xs", l ? "bg-accent text-foreground" : "bg-background text-muted-foreground hover:bg-accent"), children: l ? "Unread" : "All" }),
173
- /* @__PURE__ */ t.jsx(P.Close, { asChild: !0, children: /* @__PURE__ */ t.jsx("button", { type: "button", className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent", children: /* @__PURE__ */ t.jsx(_, { className: "h-4 w-4" }) }) })
177
+ /* @__PURE__ */ t.jsx("button", { type: "button", onClick: () => M((r) => !r), className: K("rounded-md border px-2 py-1 text-xs", c ? "bg-accent text-foreground" : "bg-background text-muted-foreground hover:bg-accent"), children: c ? "Unread" : "All" }),
178
+ /* @__PURE__ */ t.jsx(ie, { render: /* @__PURE__ */ t.jsx("button", { type: "button", className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent" }), children: /* @__PURE__ */ t.jsx(Z, { className: "h-4 w-4" }) })
174
179
  ] })
175
180
  ] }),
176
- /* @__PURE__ */ t.jsx("div", { className: "flex-1 overflow-y-auto px-4 pb-3", children: D ? /* @__PURE__ */ t.jsx("div", { className: "flex items-center justify-center py-10 text-muted-foreground", children: /* @__PURE__ */ t.jsx(ee, { className: "h-4 w-4 animate-spin" }) }) : O ? /* @__PURE__ */ t.jsx("div", { className: "py-10 text-center text-sm text-muted-foreground", children: O }) : p.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-10 text-center text-sm text-muted-foreground", children: "No notifications." }) : /* @__PURE__ */ t.jsxs("div", { className: "flex flex-col gap-4", children: [
181
+ /* @__PURE__ */ t.jsx("div", { className: "flex-1 overflow-y-auto px-4 pb-3", children: R ? /* @__PURE__ */ t.jsx("div", { className: "flex items-center justify-center py-10 text-muted-foreground", children: /* @__PURE__ */ t.jsx(_, { className: "h-4 w-4 animate-spin" }) }) : O ? /* @__PURE__ */ t.jsx("div", { className: "py-10 text-center text-sm text-muted-foreground", children: O }) : p.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-10 text-center text-sm text-muted-foreground", children: "No notifications." }) : /* @__PURE__ */ t.jsxs("div", { className: "flex flex-col gap-4", children: [
177
182
  /* @__PURE__ */ t.jsxs("div", { children: [
178
183
  /* @__PURE__ */ t.jsx("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", children: "Unread notifications" }),
179
184
  k.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No unread notifications." }) : k.map((r) => /* @__PURE__ */ t.jsxs("div", { children: [
180
185
  /* @__PURE__ */ t.jsx("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", children: r.label }),
181
- /* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: r.items.map((u) => /* @__PURE__ */ t.jsx(X, { notification: u, onMarkRead: B, onArchive: z }, u.id)) })
186
+ /* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: r.items.map((u) => /* @__PURE__ */ t.jsx(V, { notification: u, onMarkRead: P, onArchive: z }, u.id)) })
182
187
  ] }, `unread:${r.key}`))
183
188
  ] }),
184
- l ? null : /* @__PURE__ */ t.jsxs("div", { children: [
189
+ c ? null : /* @__PURE__ */ t.jsxs("div", { children: [
185
190
  /* @__PURE__ */ t.jsx("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", children: "Previous notifications" }),
186
191
  E.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No previous notifications." }) : E.map((r) => /* @__PURE__ */ t.jsxs("div", { children: [
187
192
  /* @__PURE__ */ t.jsx("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", children: r.label }),
188
- /* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: r.items.map((u) => /* @__PURE__ */ t.jsx(X, { notification: u, onMarkRead: B, onArchive: z }, u.id)) })
193
+ /* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: r.items.map((u) => /* @__PURE__ */ t.jsx(V, { notification: u, onMarkRead: P, onArchive: z }, u.id)) })
189
194
  ] }, `previous:${r.key}`))
190
195
  ] })
191
196
  ] }) })
192
197
  ] })
193
198
  ] }) });
194
199
  }
195
- function X(s) {
196
- const e = H.c(45), {
200
+ function V(s) {
201
+ const e = q.c(45), {
197
202
  notification: n,
198
203
  onMarkRead: i,
199
204
  onArchive: a
200
- } = s, [c, o] = T(!1), U = J(null), A = J(null), f = !n.readAt;
205
+ } = s, [l, o] = T(!1), U = G(null), A = G(null), f = !n.readAt;
201
206
  let g;
202
207
  if (e[0] !== n.createdAt) {
203
208
  e: {
204
- const b = new Date(q(n.createdAt));
209
+ const b = new Date(X(n.createdAt));
205
210
  if (!Number.isFinite(b.getTime())) {
206
211
  g = "";
207
212
  break e;
@@ -212,76 +217,76 @@ function X(s) {
212
217
  } else
213
218
  g = e[1];
214
219
  const F = g;
215
- let S, L;
216
- e[2] !== c ? (S = () => {
217
- if (!c)
220
+ let D, L;
221
+ e[2] !== l ? (D = () => {
222
+ if (!l)
218
223
  return;
219
224
  const b = (z) => {
220
225
  const r = z.target;
221
226
  r instanceof Node && (U.current?.contains(r) || A.current?.contains(r) || o(!1));
222
- }, B = (z) => {
227
+ }, P = (z) => {
223
228
  z.key === "Escape" && (o(!1), A.current?.focus());
224
229
  };
225
- return document.addEventListener("pointerdown", b), document.addEventListener("keydown", B), () => {
226
- document.removeEventListener("pointerdown", b), document.removeEventListener("keydown", B);
230
+ return document.addEventListener("pointerdown", b), document.addEventListener("keydown", P), () => {
231
+ document.removeEventListener("pointerdown", b), document.removeEventListener("keydown", P);
227
232
  };
228
- }, L = [c], e[2] = c, e[3] = S, e[4] = L) : (S = e[3], L = e[4]), G(S, L);
233
+ }, L = [l], e[2] = l, e[3] = D, e[4] = L) : (D = e[3], L = e[4]), Y(D, L);
229
234
  const $ = f ? "bg-primary/5" : "bg-background";
230
- let M;
231
- e[5] !== $ ? (M = Y("group flex w-full gap-3 px-4 py-3 hover:bg-accent/40", $), e[5] = $, e[6] = M) : M = e[6];
235
+ let S;
236
+ e[5] !== $ ? (S = K("group flex w-full gap-3 px-4 py-3 hover:bg-accent/40", $), e[5] = $, e[6] = S) : S = e[6];
232
237
  let h;
233
238
  e[7] !== f || e[8] !== n.id || e[9] !== n.url || e[10] !== i ? (h = () => {
234
239
  f && i(n.id), n.url && (window.location.href = n.url);
235
240
  }, e[7] = f, e[8] = n.id, e[9] = n.url, e[10] = i, e[11] = h) : h = e[11];
236
- let l;
237
- e[12] !== n.title ? (l = /* @__PURE__ */ t.jsx("div", { className: "truncate text-sm font-semibold", children: n.title }), e[12] = n.title, e[13] = l) : l = e[13];
238
- let R;
239
- e[14] !== n.body ? (R = n.body ? /* @__PURE__ */ t.jsx("div", { className: "mt-0.5 line-clamp-2 text-xs text-muted-foreground", children: n.body }) : null, e[14] = n.body, e[15] = R) : R = e[15];
241
+ let c;
242
+ e[12] !== n.title ? (c = /* @__PURE__ */ t.jsx("div", { className: "truncate text-sm font-semibold", children: n.title }), e[12] = n.title, e[13] = c) : c = e[13];
243
+ let M;
244
+ e[14] !== n.body ? (M = n.body ? /* @__PURE__ */ t.jsx("div", { className: "mt-0.5 line-clamp-2 text-xs text-muted-foreground", children: n.body }) : null, e[14] = n.body, e[15] = M) : M = e[15];
240
245
  let y;
241
- e[16] !== l || e[17] !== R ? (y = /* @__PURE__ */ t.jsxs("div", { className: "min-w-0", children: [
242
- l,
243
- R
244
- ] }), e[16] = l, e[17] = R, e[18] = y) : y = e[18];
246
+ e[16] !== c || e[17] !== M ? (y = /* @__PURE__ */ t.jsxs("div", { className: "min-w-0", children: [
247
+ c,
248
+ M
249
+ ] }), e[16] = c, e[17] = M, e[18] = y) : y = e[18];
245
250
  let v;
246
251
  e[19] !== n.url ? (v = n.url ? /* @__PURE__ */ t.jsx("div", { className: "mt-2 truncate text-xs text-primary", children: n.url }) : null, e[19] = n.url, e[20] = v) : v = e[20];
247
252
  let j;
248
253
  e[21] !== F ? (j = F ? /* @__PURE__ */ t.jsx("div", { className: "mt-2 text-[11px] text-muted-foreground", children: F }) : null, e[21] = F, e[22] = j) : j = e[22];
249
- let D;
250
- e[23] !== v || e[24] !== j || e[25] !== h || e[26] !== y ? (D = /* @__PURE__ */ t.jsxs("button", { type: "button", className: "min-w-0 flex-1 text-left", onClick: h, children: [
254
+ let R;
255
+ e[23] !== v || e[24] !== j || e[25] !== h || e[26] !== y ? (R = /* @__PURE__ */ t.jsxs("button", { type: "button", className: "min-w-0 flex-1 text-left", onClick: h, children: [
251
256
  y,
252
257
  v,
253
258
  j
254
- ] }), e[23] = v, e[24] = j, e[25] = h, e[26] = y, e[27] = D) : D = e[27];
259
+ ] }), e[23] = v, e[24] = j, e[25] = h, e[26] = y, e[27] = R) : R = e[27];
255
260
  let O, p;
256
261
  e[28] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (O = () => {
257
- o(se);
258
- }, p = /* @__PURE__ */ t.jsx(te, { className: "h-4 w-4" }), e[28] = O, e[29] = p) : (O = e[28], p = e[29]);
262
+ o(de);
263
+ }, p = /* @__PURE__ */ t.jsx(ee, { className: "h-4 w-4" }), e[28] = O, e[29] = p) : (O = e[28], p = e[29]);
259
264
  let N;
260
- e[30] !== c ? (N = /* @__PURE__ */ t.jsx("button", { ref: A, type: "button", className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent", "aria-label": "Notification options", "aria-haspopup": "menu", "aria-expanded": c, onClick: O, children: p }), e[30] = c, e[31] = N) : N = e[31];
265
+ e[30] !== l ? (N = /* @__PURE__ */ t.jsx("button", { ref: A, type: "button", className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent", "aria-label": "Notification options", "aria-haspopup": "menu", "aria-expanded": l, onClick: O, children: p }), e[30] = l, e[31] = N) : N = e[31];
261
266
  let w;
262
- e[32] !== f || e[33] !== c || e[34] !== n.id || e[35] !== a || e[36] !== i ? (w = c ? /* @__PURE__ */ t.jsxs("div", { ref: U, role: "menu", className: Y("absolute right-0 top-full z-50 mt-1 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md", "animate-in fade-in-0 zoom-in-95"), children: [
267
+ e[32] !== f || e[33] !== l || e[34] !== n.id || e[35] !== a || e[36] !== i ? (w = l ? /* @__PURE__ */ t.jsxs("div", { ref: U, role: "menu", className: K("absolute right-0 top-full z-50 mt-1 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md", "animate-in fade-in-0 zoom-in-95"), children: [
263
268
  /* @__PURE__ */ t.jsx("button", { type: "button", role: "menuitem", className: "relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground", onClick: () => {
264
269
  o(!1), a(n.id);
265
270
  }, children: "Archive" }),
266
271
  /* @__PURE__ */ t.jsx("button", { type: "button", role: "menuitem", className: "relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50", disabled: !f, onClick: () => {
267
272
  o(!1), i(n.id);
268
273
  }, children: "Mark as read" })
269
- ] }) : null, e[32] = f, e[33] = c, e[34] = n.id, e[35] = a, e[36] = i, e[37] = w) : w = e[37];
274
+ ] }) : null, e[32] = f, e[33] = l, e[34] = n.id, e[35] = a, e[36] = i, e[37] = w) : w = e[37];
270
275
  let k;
271
276
  e[38] !== N || e[39] !== w ? (k = /* @__PURE__ */ t.jsxs("div", { className: "relative flex items-start", children: [
272
277
  N,
273
278
  w
274
279
  ] }), e[38] = N, e[39] = w, e[40] = k) : k = e[40];
275
280
  let E;
276
- return e[41] !== D || e[42] !== k || e[43] !== M ? (E = /* @__PURE__ */ t.jsxs("div", { className: M, children: [
277
- D,
281
+ return e[41] !== R || e[42] !== k || e[43] !== S ? (E = /* @__PURE__ */ t.jsxs("div", { className: S, children: [
282
+ R,
278
283
  k
279
- ] }), e[41] = D, e[42] = k, e[43] = M, e[44] = E) : E = e[44], E;
284
+ ] }), e[41] = R, e[42] = k, e[43] = S, e[44] = E) : E = e[44], E;
280
285
  }
281
- function se(s) {
286
+ function de(s) {
282
287
  return !s;
283
288
  }
284
289
  export {
285
- ue as NotificationsDrawer
290
+ Ne as NotificationsDrawer
286
291
  };
287
292
  //# sourceMappingURL=index16.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index16.js","sources":["../src/components/Notifications/NotificationsDrawer.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, type Context } from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\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 [menuOpen, setMenuOpen] = useState(false)\n const menuRef = useRef<HTMLDivElement | null>(null)\n const menuButtonRef = useRef<HTMLButtonElement | null>(null)\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 useEffect(() => {\n if (!menuOpen) return\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target\n if (!(target instanceof Node)) return\n if (menuRef.current?.contains(target) || menuButtonRef.current?.contains(target)) return\n setMenuOpen(false)\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return\n setMenuOpen(false)\n menuButtonRef.current?.focus()\n }\n\n document.addEventListener(\"pointerdown\", handlePointerDown)\n document.addEventListener(\"keydown\", handleKeyDown)\n\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown)\n document.removeEventListener(\"keydown\", handleKeyDown)\n }\n }, [menuOpen])\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=\"relative flex items-start\">\n <button\n ref={menuButtonRef}\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 aria-haspopup=\"menu\"\n aria-expanded={menuOpen}\n onClick={() => {\n setMenuOpen((open) => !open)\n }}\n >\n <MoreVertical className=\"h-4 w-4\" />\n </button>\n {menuOpen ? (\n <div\n ref={menuRef}\n role=\"menu\"\n className={cn(\n \"absolute right-0 top-full z-50 mt-1 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"animate-in fade-in-0 zoom-in-95\",\n )}\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground\"\n onClick={() => {\n setMenuOpen(false)\n onArchive(notification.id)\n }}\n >\n Archive\n </button>\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50\"\n disabled={!isUnread}\n onClick={() => {\n setMenuOpen(false)\n onMarkRead(notification.id)\n }}\n >\n Mark as read\n </button>\n </div>\n ) : null}\n </div>\n </div>\n )\n}\n"],"names":["toMs","iso","ms","Date","parse","Number","isFinite","getDayKey","date","getTime","year","getFullYear","month","String","getMonth","padStart","day","getDate","formatDayLabel","key","yearRaw","monthRaw","dayRaw","split","includeYear","toLocaleDateString","undefined","weekday","groupByDay","items","groups","currentKey","item","createdAt","push","label","length","EmptyRealtimeContext","createContext","NotificationsDrawer","open","onOpenChange","className","limit","defaultUnreadOnly","realtimeContext","realtime","useContext","setItems","useState","unreadCount","setUnreadCount","unseenCount","setUnseenCount","loading","setLoading","error","setError","unreadOnly","setUnreadOnly","mergedItems","notifications","mergedUnreadCount","mergedUnseenCount","mergedLoading","mergedError","Error","message","visibleItems","useMemo","slice","unread","filter","n","readAt","read","Boolean","unreadGroups","readGroups","refresh","useCallback","markSeen","res","fetch","method","headers","credentials","body","JSON","stringify","json","catch","ok","nextItems","Array","isArray","Math","max","floor","useEffect","keepalive","markAsRead","id","encodeURIComponent","nowIso","toISOString","current","target","find","count","seenAt","map","archive","jsx","DialogPrimitive","jsxs","cn","v","X","Loader2","group","NotificationRow","t0","$","_c","notification","onMarkRead","onArchive","menuOpen","setMenuOpen","menuRef","useRef","menuButtonRef","isUnread","t1","bb0","toLocaleString","createdAtLabel","t2","t3","handlePointerDown","event","Node","contains","handleKeyDown","event_0","focus","document","addEventListener","removeEventListener","t4","t5","t6","url","window","location","href","t7","title","t8","t9","t10","t11","t12","t13","t14","Symbol","for","_temp","MoreVertical","t15","t16","t17","t18"],"mappings":"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"}
1
+ {"version":3,"file":"index16.js","sources":["../src/components/Notifications/NotificationsDrawer.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, type Context } from \"react\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\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.Backdrop className=\"fixed inset-0 z-50 bg-black/50\" />\n <DialogPrimitive.Popup\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\n render={<button type=\"button\" className=\"inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent\" />}\n >\n <X className=\"h-4 w-4\" />\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.Popup>\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 [menuOpen, setMenuOpen] = useState(false)\n const menuRef = useRef<HTMLDivElement | null>(null)\n const menuButtonRef = useRef<HTMLButtonElement | null>(null)\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 useEffect(() => {\n if (!menuOpen) return\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target\n if (!(target instanceof Node)) return\n if (menuRef.current?.contains(target) || menuButtonRef.current?.contains(target)) return\n setMenuOpen(false)\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return\n setMenuOpen(false)\n menuButtonRef.current?.focus()\n }\n\n document.addEventListener(\"pointerdown\", handlePointerDown)\n document.addEventListener(\"keydown\", handleKeyDown)\n\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown)\n document.removeEventListener(\"keydown\", handleKeyDown)\n }\n }, [menuOpen])\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=\"relative flex items-start\">\n <button\n ref={menuButtonRef}\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 aria-haspopup=\"menu\"\n aria-expanded={menuOpen}\n onClick={() => {\n setMenuOpen((open) => !open)\n }}\n >\n <MoreVertical className=\"h-4 w-4\" />\n </button>\n {menuOpen ? (\n <div\n ref={menuRef}\n role=\"menu\"\n className={cn(\n \"absolute right-0 top-full z-50 mt-1 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"animate-in fade-in-0 zoom-in-95\",\n )}\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground\"\n onClick={() => {\n setMenuOpen(false)\n onArchive(notification.id)\n }}\n >\n Archive\n </button>\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50\"\n disabled={!isUnread}\n onClick={() => {\n setMenuOpen(false)\n onMarkRead(notification.id)\n }}\n >\n Mark as read\n </button>\n </div>\n ) : null}\n </div>\n </div>\n )\n}\n"],"names":["toMs","iso","ms","Date","parse","Number","isFinite","getDayKey","date","getTime","year","getFullYear","month","String","getMonth","padStart","day","getDate","formatDayLabel","key","yearRaw","monthRaw","dayRaw","split","includeYear","toLocaleDateString","undefined","weekday","groupByDay","items","groups","currentKey","item","createdAt","push","label","length","EmptyRealtimeContext","createContext","NotificationsDrawer","open","onOpenChange","className","limit","defaultUnreadOnly","realtimeContext","realtime","useContext","setItems","useState","unreadCount","setUnreadCount","unseenCount","setUnseenCount","loading","setLoading","error","setError","unreadOnly","setUnreadOnly","mergedItems","notifications","mergedUnreadCount","mergedUnseenCount","mergedLoading","mergedError","Error","message","visibleItems","useMemo","slice","unread","filter","n","readAt","read","Boolean","unreadGroups","readGroups","refresh","useCallback","markSeen","res","fetch","method","headers","credentials","body","JSON","stringify","json","catch","ok","nextItems","Array","isArray","Math","max","floor","useEffect","keepalive","markAsRead","id","encodeURIComponent","nowIso","toISOString","current","target","find","count","seenAt","map","archive","jsx","DialogPrimitive.Root","jsxs","DialogPrimitive.Portal","DialogPrimitive.Backdrop","DialogPrimitive.Popup","cn","DialogPrimitive.Title","v","DialogPrimitive.Close","X","Loader2","group","NotificationRow","t0","$","_c","notification","onMarkRead","onArchive","menuOpen","setMenuOpen","menuRef","useRef","menuButtonRef","isUnread","t1","bb0","toLocaleString","createdAtLabel","t2","t3","handlePointerDown","event","Node","contains","handleKeyDown","event_0","focus","document","addEventListener","removeEventListener","t4","t5","t6","url","window","location","href","t7","title","t8","t9","t10","t11","t12","t13","t14","Symbol","for","_temp","MoreVertical","t15","t16","t17","t18"],"mappings":"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"}
package/dist/index160.js CHANGED
@@ -1,27 +1,11 @@
1
- import { labelDay as o, labelDayButton as l } from "./index161.js";
2
- import { labelCaption as t, labelGrid as b } from "./index162.js";
3
- import { labelGridcell as m } from "./index163.js";
4
- import { labelMonthDropdown as f } from "./index164.js";
5
- import { labelNav as n } from "./index165.js";
6
- import { labelNext as u } from "./index166.js";
7
- import { labelPrevious as N } from "./index167.js";
8
- import { labelWeekday as y } from "./index168.js";
9
- import { labelWeekNumber as v } from "./index169.js";
10
- import { labelWeekNumberHeader as G } from "./index170.js";
11
- import { labelYearDropdown as h } from "./index171.js";
1
+ var v = 2, A = 17, E = 3, _ = "0-90-9٠-٩۰-۹", F = "-‐-―−ー-", u = "//", a = "..", S = "  ­​⁠ ", r = "()()[]\\[\\]", c = "~⁓∼~", N = "".concat(F).concat(u).concat(a).concat(S).concat(r).concat(c), T = "++";
12
2
  export {
13
- t as labelCaption,
14
- o as labelDay,
15
- l as labelDayButton,
16
- b as labelGrid,
17
- m as labelGridcell,
18
- f as labelMonthDropdown,
19
- n as labelNav,
20
- u as labelNext,
21
- N as labelPrevious,
22
- v as labelWeekNumber,
23
- G as labelWeekNumberHeader,
24
- y as labelWeekday,
25
- h as labelYearDropdown
3
+ E as MAX_LENGTH_COUNTRY_CODE,
4
+ A as MAX_LENGTH_FOR_NSN,
5
+ v as MIN_LENGTH_FOR_NSN,
6
+ T as PLUS_CHARS,
7
+ _ as VALID_DIGITS,
8
+ N as VALID_PUNCTUATION,
9
+ S as WHITESPACE
26
10
  };
27
11
  //# sourceMappingURL=index160.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index160.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
1
+ {"version":3,"file":"index160.js","sources":["../../../node_modules/libphonenumber-js/es6/constants.js"],"sourcesContent":["// The minimum length of the national significant number.\nexport var MIN_LENGTH_FOR_NSN = 2;\n\n// The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\nexport var MAX_LENGTH_FOR_NSN = 17;\n\n// The maximum length of the country calling code.\nexport var MAX_LENGTH_COUNTRY_CODE = 3;\n\n// Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\nexport var VALID_DIGITS = \"0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9\";\n\n// `DASHES` will be right after the opening square bracket of the \"character class\"\nvar DASHES = \"-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D\";\nvar SLASHES = \"\\uFF0F/\";\nvar DOTS = \"\\uFF0E.\";\nexport var WHITESPACE = \" \\xA0\\xAD\\u200B\\u2060\\u3000\";\nvar BRACKETS = \"()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]\";\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\nvar TILDES = \"~\\u2053\\u223C\\uFF5E\";\n\n// Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\nexport var VALID_PUNCTUATION = \"\".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);\nexport var PLUS_CHARS = \"+\\uFF0B\";\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')\n//# sourceMappingURL=constants.js.map"],"names":["MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","VALID_DIGITS","DASHES","SLASHES","DOTS","WHITESPACE","BRACKETS","TILDES","VALID_PUNCTUATION","PLUS_CHARS"],"mappings":"AACU,IAACA,IAAqB,GAIrBC,IAAqB,IAGrBC,IAA0B,GAI1BC,IAAe,gBAGtBC,IAAS,WACTC,IAAU,MACVC,IAAO,MACAC,IAAa,UACpBC,IAAW,gBAEXC,IAAS,QAMFC,IAAoB,GAAG,OAAON,CAAM,EAAE,OAAOC,CAAO,EAAE,OAAOC,CAAI,EAAE,OAAOC,CAAU,EAAE,OAAOC,CAAQ,EAAE,OAAOC,CAAM,GACpHE,IAAa;","x_google_ignoreList":[0]}
package/dist/index161.js CHANGED
@@ -1,11 +1,8 @@
1
- import { DateLib as n } from "./index128.js";
2
- function r(a, t, l, o) {
3
- let e = (o ?? new n(l)).format(a, "PPPP");
4
- return t.today && (e = `Today, ${e}`), t.selected && (e = `${e}, selected`), e;
1
+ import { VALID_PUNCTUATION as e } from "./index160.js";
2
+ function a(t) {
3
+ return t.replace(new RegExp("[".concat(e, "]+"), "g"), " ").trim();
5
4
  }
6
- const c = r;
7
5
  export {
8
- c as labelDay,
9
- r as labelDayButton
6
+ a as default
10
7
  };
11
8
  //# sourceMappingURL=index161.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index161.js","sources":["../../../node_modules/react-day-picker/dist/esm/labels/labelDayButton.js"],"sourcesContent":["import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Generates the ARIA label for a day button.\n *\n * Use the `modifiers` argument to provide additional context for the label,\n * such as indicating if the day is \"today\" or \"selected.\"\n *\n * @defaultValue The formatted date.\n * @param date - The date to format.\n * @param modifiers - The modifiers providing context for the day.\n * @param options - Optional configuration for the date formatting library.\n * @param dateLib - An optional instance of the date formatting library.\n * @returns The ARIA label for the day button.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelDayButton(date, modifiers, options, dateLib) {\n let label = (dateLib ?? new DateLib(options)).format(date, \"PPPP\");\n if (modifiers.today)\n label = `Today, ${label}`;\n if (modifiers.selected)\n label = `${label}, selected`;\n return label;\n}\n/**\n * @ignore\n * @deprecated Use `labelDayButton` instead.\n */\nexport const labelDay = labelDayButton;\n"],"names":["labelDayButton","date","modifiers","options","dateLib","label","DateLib","labelDay"],"mappings":";AAgBO,SAASA,EAAeC,GAAMC,GAAWC,GAASC,GAAS;AAC9D,MAAIC,KAASD,KAAW,IAAIE,EAAQH,CAAO,GAAG,OAAOF,GAAM,MAAM;AACjE,SAAIC,EAAU,UACVG,IAAQ,UAAUA,CAAK,KACvBH,EAAU,aACVG,IAAQ,GAAGA,CAAK,eACbA;AACX;AAKY,MAACE,IAAWP;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index161.js","sources":["../../../node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js"],"sourcesContent":["import { VALID_PUNCTUATION } from '../constants.js';\n\n// Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains `<intlFormat/>`s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `<intlFormat/>` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\n return formattedNumber.replace(new RegExp(\"[\".concat(VALID_PUNCTUATION, \"]+\"), 'g'), ' ').trim();\n}\n//# sourceMappingURL=applyInternationalSeparatorStyle.js.map"],"names":["applyInternationalSeparatorStyle","formattedNumber","VALID_PUNCTUATION"],"mappings":";AAgCe,SAASA,EAAiCC,GAAiB;AACxE,SAAOA,EAAgB,QAAQ,IAAI,OAAO,IAAI,OAAOC,GAAmB,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,KAAI;AAChG;","x_google_ignoreList":[0]}
package/dist/index162.js CHANGED
@@ -1,10 +1,9 @@
1
- import { DateLib as r } from "./index128.js";
2
- function e(t, o, n) {
3
- return (n ?? new r(o)).formatMonthYear(t);
1
+ import t from "./index150.js";
2
+ import r from "./index163.js";
3
+ function n() {
4
+ return t(r, arguments);
4
5
  }
5
- const l = e;
6
6
  export {
7
- l as labelCaption,
8
- e as labelGrid
7
+ n as getCountries
9
8
  };
10
9
  //# sourceMappingURL=index162.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index162.js","sources":["../../../node_modules/react-day-picker/dist/esm/labels/labelGrid.js"],"sourcesContent":["import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Generates the ARIA label for the month grid, which is announced when entering\n * the grid.\n *\n * @defaultValue Locale-specific month/year order (e.g., \"November 2022\").\n * @param date - The date representing the month.\n * @param options - Optional configuration for the date formatting library.\n * @param dateLib - An optional instance of the date formatting library.\n * @returns The ARIA label for the month grid.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelGrid(date, options, dateLib) {\n const lib = dateLib ?? new DateLib(options);\n return lib.formatMonthYear(date);\n}\n/**\n * @ignore\n * @deprecated Use {@link labelGrid} instead.\n */\nexport const labelCaption = labelGrid;\n"],"names":["labelGrid","date","options","dateLib","DateLib","labelCaption"],"mappings":";AAaO,SAASA,EAAUC,GAAMC,GAASC,GAAS;AAE9C,UADYA,KAAW,IAAIC,EAAQF,CAAO,GAC/B,gBAAgBD,CAAI;AACnC;AAKY,MAACI,IAAeL;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index162.js","sources":["../../../node_modules/libphonenumber-js/min/exports/getCountries.js"],"sourcesContent":["import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getCountries as _getCountries } from '../../core/index.js'\r\n\r\nexport function getCountries() {\r\n\treturn withMetadataArgument(_getCountries, arguments)\r\n}"],"names":["getCountries","withMetadataArgument","_getCountries"],"mappings":";;AAGO,SAASA,IAAe;AAC9B,SAAOC,EAAqBC,GAAe,SAAS;AACrD;","x_google_ignoreList":[0]}
package/dist/index163.js CHANGED
@@ -1,9 +1,8 @@
1
- import { DateLib as a } from "./index128.js";
2
- function f(t, l, o, r) {
3
- let e = (r ?? new a(o)).format(t, "PPPP");
4
- return l?.today && (e = `Today, ${e}`), e;
1
+ import e from "./index164.js";
2
+ function n(t) {
3
+ return new e(t).getCountries();
5
4
  }
6
5
  export {
7
- f as labelGridcell
6
+ n as default
8
7
  };
9
8
  //# sourceMappingURL=index163.js.map