@rpcbase/ui 0.202.0 → 0.204.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +25 -73
- package/dist/index10.js +18 -28
- package/dist/index10.js.map +1 -1
- package/dist/index100.js +8 -8
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +8 -7
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +14 -7
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +9 -9
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +14 -148
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +21 -43
- package/dist/index105.js.map +1 -1
- package/dist/index106.js +27 -7
- package/dist/index106.js.map +1 -1
- package/dist/index107.js +8 -10
- package/dist/index107.js.map +1 -1
- package/dist/index108.js +8 -16
- package/dist/index108.js.map +1 -1
- package/dist/index109.js +9 -16
- package/dist/index109.js.map +1 -1
- package/dist/index11.js +1674 -41
- package/dist/index11.js.map +1 -1
- package/dist/index110.js +9 -10
- package/dist/index110.js.map +1 -1
- package/dist/index111.js +8 -34
- package/dist/index111.js.map +1 -1
- package/dist/index112.js +8 -13
- package/dist/index112.js.map +1 -1
- package/dist/index113.js +11 -13
- package/dist/index113.js.map +1 -1
- package/dist/index114.js +10 -11
- package/dist/index114.js.map +1 -1
- package/dist/index115.js +37 -16
- package/dist/index115.js.map +1 -1
- package/dist/index116.js +10 -104
- package/dist/index116.js.map +1 -1
- package/dist/index117.js +9 -23
- package/dist/index117.js.map +1 -1
- package/dist/index118.js +10 -56
- package/dist/index118.js.map +1 -1
- package/dist/index119.js +12 -75
- package/dist/index119.js.map +1 -1
- package/dist/index12.js +10 -470
- package/dist/index12.js.map +1 -1
- package/dist/index120.js +8 -12
- package/dist/index120.js.map +1 -1
- package/dist/index121.js +9 -23
- package/dist/index121.js.map +1 -1
- package/dist/index122.js +8 -19
- package/dist/index122.js.map +1 -1
- package/dist/index123.js +8 -26
- package/dist/index123.js.map +1 -1
- package/dist/index124.js +9 -9
- package/dist/index124.js.map +1 -1
- package/dist/index125.js +8 -8
- package/dist/index125.js.map +1 -1
- package/dist/index126.js +9 -27
- package/dist/index126.js.map +1 -1
- package/dist/index127.js +11 -38
- package/dist/index127.js.map +1 -1
- package/dist/index128.js +60 -19
- package/dist/index128.js.map +1 -1
- package/dist/index129.js +9 -9
- package/dist/index129.js.map +1 -1
- package/dist/index13.js +22 -140
- package/dist/index13.js.map +1 -1
- package/dist/index130.js +23 -8
- package/dist/index130.js.map +1 -1
- package/dist/index131.js +22 -7
- package/dist/index131.js.map +1 -1
- package/dist/index132.js +37 -7
- package/dist/index132.js.map +1 -1
- package/dist/index133.js +8 -7
- package/dist/index133.js.map +1 -1
- package/dist/index134.js +11 -6
- package/dist/index134.js.map +1 -1
- package/dist/index135.js +17 -9
- package/dist/index135.js.map +1 -1
- package/dist/index136.js +14 -27
- package/dist/index136.js.map +1 -1
- package/dist/index137.js +9 -10
- package/dist/index137.js.map +1 -1
- package/dist/index138.js +8 -9
- package/dist/index138.js.map +1 -1
- package/dist/index139.js +8 -8
- package/dist/index139.js.map +1 -1
- package/dist/index14.js +194 -78
- package/dist/index14.js.map +1 -1
- package/dist/index140.js +8 -6
- package/dist/index140.js.map +1 -1
- package/dist/index141.js +8 -6
- package/dist/index141.js.map +1 -1
- package/dist/index142.js +7 -7
- package/dist/index142.js.map +1 -1
- package/dist/index143.js +9 -6
- package/dist/index143.js.map +1 -1
- package/dist/index144.js +24 -8
- package/dist/index144.js.map +1 -1
- package/dist/index145.js +11 -6
- package/dist/index145.js.map +1 -1
- package/dist/index146.js +10 -6
- package/dist/index146.js.map +1 -1
- package/dist/index147.js +9 -6
- package/dist/index147.js.map +1 -1
- package/dist/index148.js +9 -8
- package/dist/index148.js.map +1 -1
- package/dist/index149.js +7 -10
- package/dist/index149.js.map +1 -1
- package/dist/index15.js +33 -874
- package/dist/index15.js.map +1 -1
- package/dist/index150.js +7 -8
- package/dist/index150.js.map +1 -1
- package/dist/index151.js +9 -50
- package/dist/index151.js.map +1 -1
- package/dist/index152.js +8 -50
- package/dist/index152.js.map +1 -1
- package/dist/index153.js +9 -209
- package/dist/index153.js.map +1 -1
- package/dist/index154.js +8 -25
- package/dist/index154.js.map +1 -1
- package/dist/index155.js +7 -27
- package/dist/index155.js.map +1 -1
- package/dist/index156.js +8 -403
- package/dist/index156.js.map +1 -1
- package/dist/index157.js +32 -609
- package/dist/index157.js.map +1 -1
- package/dist/index158.js +35 -19
- package/dist/index158.js.map +1 -1
- package/dist/index159.js +18 -8
- package/dist/index159.js.map +1 -1
- package/dist/index16.js +57 -23
- package/dist/index16.js.map +1 -1
- package/dist/index160.js +14 -8
- package/dist/index160.js.map +1 -1
- package/dist/index161.js +12 -61
- package/dist/index161.js.map +1 -1
- package/dist/index162.js +19 -69
- package/dist/index162.js.map +1 -1
- package/dist/index163.js +89 -9
- package/dist/index163.js.map +1 -1
- package/dist/index164.js +50 -7
- package/dist/index164.js.map +1 -1
- package/dist/index165.js +20 -10
- package/dist/index165.js.map +1 -1
- package/dist/index166.js +11 -20
- package/dist/index166.js.map +1 -1
- package/dist/index167.js +13 -8
- package/dist/index167.js.map +1 -1
- package/dist/index168.js +8 -8
- package/dist/index168.js.map +1 -1
- package/dist/index169.js +25 -16
- package/dist/index169.js.map +1 -1
- package/dist/index17.js +9 -20
- package/dist/index17.js.map +1 -1
- package/dist/index170.js +10 -13
- package/dist/index170.js.map +1 -1
- package/dist/index171.js +9 -17
- package/dist/index171.js.map +1 -1
- package/dist/index172.js +9 -17
- package/dist/index172.js.map +1 -1
- package/dist/index173.js +7 -8
- package/dist/index173.js.map +1 -1
- package/dist/index174.js +9 -9
- package/dist/index174.js.map +1 -1
- package/dist/index175.js +70 -10
- package/dist/index175.js.map +1 -1
- package/dist/index176.js +20 -9
- package/dist/index176.js.map +1 -1
- package/dist/index177.js +15 -12
- package/dist/index177.js.map +1 -1
- package/dist/index178.js +12 -8
- package/dist/index178.js.map +1 -1
- package/dist/index179.js +23 -8
- package/dist/index179.js.map +1 -1
- package/dist/index18.js +27 -460
- package/dist/index18.js.map +1 -1
- package/dist/index180.js +20 -12
- package/dist/index180.js.map +1 -1
- package/dist/index181.js +58 -8
- package/dist/index181.js.map +1 -1
- package/dist/index182.js +13 -8
- package/dist/index182.js.map +1 -1
- package/dist/index183.js +9 -7
- package/dist/index183.js.map +1 -1
- package/dist/index184.js +29 -14
- package/dist/index184.js.map +1 -1
- package/dist/index185.js +29 -13
- package/dist/index185.js.map +1 -1
- package/dist/index186.js +16 -13
- package/dist/index186.js.map +1 -1
- package/dist/index187.js +16 -14
- package/dist/index187.js.map +1 -1
- package/dist/index188.js +9 -14
- package/dist/index188.js.map +1 -1
- package/dist/index189.js +26 -13
- package/dist/index189.js.map +1 -1
- package/dist/index19.js +65 -666
- package/dist/index19.js.map +1 -1
- package/dist/index190.js +388 -10
- package/dist/index190.js.map +1 -1
- package/dist/index191.js +499 -10
- package/dist/index191.js.map +1 -1
- package/dist/index192.js +134 -9
- package/dist/index192.js.map +1 -1
- package/dist/index193.js +55 -9
- package/dist/index193.js.map +1 -1
- package/dist/index194.js +80 -10
- package/dist/index194.js.map +1 -1
- package/dist/index195.js +902 -9
- package/dist/index195.js.map +1 -1
- package/dist/index196.js +22 -58
- package/dist/index196.js.map +1 -1
- package/dist/index197.js +452 -12
- package/dist/index197.js.map +1 -1
- package/dist/index198.js +7 -22
- package/dist/index198.js.map +1 -1
- package/dist/index199.js +60 -32
- package/dist/index199.js.map +1 -1
- package/dist/index2.js +10 -8
- package/dist/index20.js +43 -469
- package/dist/index20.js.map +1 -1
- package/dist/index200.js +63 -15
- package/dist/index200.js.map +1 -1
- package/dist/index201.js +11 -28
- package/dist/index201.js.map +1 -1
- package/dist/index202.js +19 -8
- package/dist/index202.js.map +1 -1
- package/dist/index203.js +148 -20
- package/dist/index203.js.map +1 -1
- package/dist/index204.js +7 -11
- package/dist/index204.js.map +1 -1
- package/dist/index205.js +13 -13
- package/dist/index205.js.map +1 -1
- package/dist/index206.js +107 -13
- package/dist/index206.js.map +1 -1
- package/dist/index207.js +359 -23
- package/dist/index207.js.map +1 -1
- package/dist/index208.js +99 -14
- package/dist/index208.js.map +1 -1
- package/dist/index209.js +329 -12
- package/dist/index209.js.map +1 -1
- package/dist/index21.js +12 -266
- package/dist/index21.js.map +1 -1
- package/dist/index210.js +213 -12
- package/dist/index210.js.map +1 -1
- package/dist/index211.js +22 -8
- package/dist/index211.js.map +1 -1
- package/dist/index212.js +30 -8
- package/dist/index212.js.map +1 -1
- package/dist/index213.js +189 -18
- package/dist/index213.js.map +1 -1
- package/dist/index214.js +21 -13
- package/dist/index214.js.map +1 -1
- package/dist/index215.js +46 -21
- package/dist/index215.js.map +1 -1
- package/dist/index216.js +12 -18
- package/dist/index216.js.map +1 -1
- package/dist/index217.js +28 -16
- package/dist/index217.js.map +1 -1
- package/dist/index218.js +47 -8
- package/dist/index218.js.map +1 -1
- package/dist/index219.js +19 -70
- package/dist/index219.js.map +1 -1
- package/dist/index22.js +16 -8
- package/dist/index22.js.map +1 -1
- package/dist/index220.js +6 -5
- package/dist/index220.js.map +1 -1
- package/dist/index221.js +8 -367
- package/dist/index221.js.map +1 -1
- package/dist/index222.js +24 -265
- package/dist/index222.js.map +1 -1
- package/dist/index223.js +27 -63
- package/dist/index223.js.map +1 -1
- package/dist/index224.js +68 -47
- package/dist/index224.js.map +1 -1
- package/dist/index225.js +17 -172
- package/dist/index225.js.map +1 -1
- package/dist/index226.js +7 -113
- package/dist/index226.js.map +1 -1
- package/dist/index227.js +53 -27
- package/dist/index227.js.map +1 -1
- package/dist/index228.js +8 -10
- package/dist/index228.js.map +1 -1
- package/dist/index229.js +28 -6
- package/dist/index229.js.map +1 -1
- package/dist/index23.js +109 -30
- package/dist/index23.js.map +1 -1
- package/dist/index230.js +16 -8
- package/dist/index230.js.map +1 -1
- package/dist/index231.js +12 -7
- package/dist/index231.js.map +1 -1
- package/dist/index232.js +3 -470
- package/dist/index233.js +28 -188
- package/dist/index233.js.map +1 -1
- package/dist/index234.js +68 -107
- package/dist/index234.js.map +1 -1
- package/dist/index235.js +3 -266
- package/dist/index236.js +14 -12
- package/dist/index236.js.map +1 -1
- package/dist/index237.js +53 -45
- package/dist/index237.js.map +1 -1
- package/dist/index238.js +117 -7
- package/dist/index238.js.map +1 -1
- package/dist/index239.js +9 -28
- package/dist/index239.js.map +1 -1
- package/dist/index24.js +3 -269
- package/dist/index24.js.map +1 -1
- package/dist/index240.js +15 -31
- package/dist/index240.js.map +1 -1
- package/dist/index241.js +689 -7
- package/dist/index241.js.map +1 -1
- package/dist/index242.js +256 -71
- package/dist/index242.js.map +1 -1
- package/dist/index243.js +704 -184
- package/dist/index243.js.map +1 -1
- package/dist/index244.js +7433 -49
- package/dist/index244.js.map +1 -1
- package/dist/index245.js +9 -7
- package/dist/index245.js.map +1 -1
- package/dist/index246.js +16 -22
- package/dist/index246.js.map +1 -1
- package/dist/index247.js +8 -15
- package/dist/index247.js.map +1 -1
- package/dist/index248.js +462 -16
- package/dist/index248.js.map +1 -1
- package/dist/index249.js +41 -158
- package/dist/index249.js.map +1 -1
- package/dist/index25.js +11 -179
- package/dist/index25.js.map +1 -1
- package/dist/index250.js +21 -32
- package/dist/index250.js.map +1 -1
- package/dist/index251.js +30 -12
- package/dist/index251.js.map +1 -1
- package/dist/index252.js +8 -52
- package/dist/index252.js.map +1 -1
- package/dist/index253.js +62 -15
- package/dist/index253.js.map +1 -1
- package/dist/index254.js +10 -47
- package/dist/index254.js.map +1 -1
- package/dist/index255.js +14 -97
- package/dist/index255.js.map +1 -1
- package/dist/index256.js +6 -90
- package/dist/index256.js.map +1 -1
- package/dist/index257.js +20 -109
- package/dist/index257.js.map +1 -1
- package/dist/index258.js +28 -55
- package/dist/index258.js.map +1 -1
- package/dist/index259.js +47 -15
- package/dist/index259.js.map +1 -1
- package/dist/index26.js +22 -16
- package/dist/index26.js.map +1 -1
- package/dist/index260.js +16 -40
- package/dist/index260.js.map +1 -1
- package/dist/index261.js +28 -11
- package/dist/index261.js.map +1 -1
- package/dist/index262.js +20 -119
- package/dist/index262.js.map +1 -1
- package/dist/index263.js +38 -20
- package/dist/index263.js.map +1 -1
- package/dist/index264.js +8 -18
- package/dist/index264.js.map +1 -1
- package/dist/index265.js +12 -6
- package/dist/index265.js.map +1 -1
- package/dist/index266.js +11 -39
- package/dist/index266.js.map +1 -1
- package/dist/index267.js +12 -23
- package/dist/index267.js.map +1 -1
- package/dist/index268.js +13 -12
- package/dist/index268.js.map +1 -1
- package/dist/index269.js +10 -11
- package/dist/index269.js.map +1 -1
- package/dist/index27.js +61 -2924
- package/dist/index27.js.map +1 -1
- package/dist/index270.js +76 -22
- package/dist/index270.js.map +1 -1
- package/dist/index271.js +174 -31
- package/dist/index271.js.map +1 -1
- package/dist/index272.js +118 -20
- package/dist/index272.js.map +1 -1
- package/dist/index273.js +18 -8
- package/dist/index273.js.map +1 -1
- package/dist/index274.js +83 -5
- package/dist/index274.js.map +1 -1
- package/dist/index275.js +49 -26
- package/dist/index275.js.map +1 -1
- package/dist/index276.js +15 -114
- package/dist/index276.js.map +1 -1
- package/dist/index277.js +19 -18
- package/dist/index277.js.map +1 -1
- package/dist/index278.js +98 -523
- package/dist/index278.js.map +1 -1
- package/dist/index279.js +60 -131
- package/dist/index279.js.map +1 -1
- package/dist/index28.js +58 -5
- package/dist/index28.js.map +1 -1
- package/dist/index280.js +109 -134
- package/dist/index280.js.map +1 -1
- package/dist/index281.js +75 -9
- package/dist/index281.js.map +1 -1
- package/dist/index282.js +117 -9
- package/dist/index282.js.map +1 -1
- package/dist/index283.js +59 -7
- package/dist/index283.js.map +1 -1
- package/dist/index284.js +46 -18
- package/dist/index284.js.map +1 -1
- package/dist/index285.js +146 -12
- package/dist/index285.js.map +1 -1
- package/dist/index286.js +143 -9
- package/dist/index286.js.map +1 -1
- package/dist/index287.js +258 -8
- package/dist/index287.js.map +1 -1
- package/dist/index288.js +241 -546
- package/dist/index288.js.map +1 -1
- package/dist/index289.js +302 -50
- package/dist/index289.js.map +1 -1
- package/dist/index29.js +1 -40
- package/dist/index290.js +9 -21
- package/dist/index290.js.map +1 -1
- package/dist/index291.js +9 -9
- package/dist/index291.js.map +1 -1
- package/dist/index292.js +10 -11
- package/dist/index292.js.map +1 -1
- package/dist/index293.js +9 -10
- package/dist/index293.js.map +1 -1
- package/dist/index294.js +9 -11
- package/dist/index294.js.map +1 -1
- package/dist/index295.js +24 -15
- package/dist/index295.js.map +1 -1
- package/dist/index296.js +13 -12
- package/dist/index296.js.map +1 -1
- package/dist/index297.js +130 -17
- package/dist/index297.js.map +1 -1
- package/dist/index298.js +167 -23
- package/dist/index298.js.map +1 -1
- package/dist/index299.js +69 -65
- package/dist/index299.js.map +1 -1
- package/dist/index3.js +6 -5
- package/dist/index3.js.map +1 -1
- package/dist/index30.js +6 -6
- package/dist/index300.js +113 -72
- package/dist/index300.js.map +1 -1
- package/dist/index301.js +495 -12
- package/dist/index301.js.map +1 -1
- package/dist/index302.js +65 -16
- package/dist/index302.js.map +1 -1
- package/dist/index303.js +7 -69
- package/dist/index303.js.map +1 -1
- package/dist/index304.js +30 -7
- package/dist/index304.js.map +1 -1
- package/dist/index305.js +68 -58
- package/dist/index305.js.map +1 -1
- package/dist/index306.js +155 -70
- package/dist/index306.js.map +1 -1
- package/dist/index307.js +563 -32
- package/dist/index307.js.map +1 -1
- package/dist/index308.js +213 -11
- package/dist/index308.js.map +1 -1
- package/dist/index309.js +335 -156
- package/dist/index309.js.map +1 -1
- package/dist/index31.js +8 -128
- package/dist/index31.js.map +1 -1
- package/dist/index310.js +271 -110
- package/dist/index310.js.map +1 -1
- package/dist/index32.js +8 -234
- package/dist/index32.js.map +1 -1
- package/dist/index33.js +8 -26
- package/dist/index33.js.map +1 -1
- package/dist/index34.js +11 -54
- package/dist/index34.js.map +1 -1
- package/dist/index35.js +13 -24
- package/dist/index35.js.map +1 -1
- package/dist/index36.js +9 -133
- package/dist/index36.js.map +1 -1
- package/dist/index37.js +11 -225
- package/dist/index37.js.map +1 -1
- package/dist/index38.js +12 -94
- package/dist/index38.js.map +1 -1
- package/dist/index39.js +15 -121
- package/dist/index39.js.map +1 -1
- package/dist/index4.js +24 -28
- package/dist/index4.js.map +1 -1
- package/dist/index40.js +9 -8
- package/dist/index40.js.map +1 -1
- package/dist/index41.js +10 -847
- package/dist/index41.js.map +1 -1
- package/dist/index42.js +10 -60
- package/dist/index42.js.map +1 -1
- package/dist/index43.js +12 -10
- package/dist/index43.js.map +1 -1
- package/dist/index44.js +12 -5
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +8 -14
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +8 -21
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +14 -10
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +15 -5
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +10 -26
- package/dist/index49.js.map +1 -1
- package/dist/index5.js +34 -48
- package/dist/index5.js.map +1 -1
- package/dist/index50.js +7 -236
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +9 -9
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +9 -36
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +9 -29
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +12 -10
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +16 -14
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +10 -5
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +10 -5
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +10 -5
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +17 -5
- package/dist/index59.js.map +1 -1
- package/dist/index6.js +42 -227
- package/dist/index6.js.map +1 -1
- package/dist/index60.js +11 -208
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +11 -6
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +70 -50
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +10 -53
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +33 -10
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +13 -18
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +19 -137
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +203 -13
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +22 -218
- package/dist/index68.js.map +1 -1
- package/dist/index69.js +20 -16
- package/dist/index69.js.map +1 -1
- package/dist/index7.js +225 -37
- package/dist/index7.js.map +1 -1
- package/dist/index70.js +125 -49
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +21 -52
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +12 -7
- package/dist/index72.js.map +1 -1
- package/dist/index73.js +12 -8
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +17 -31
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +13 -53
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +13 -12
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +8 -55
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +44 -7
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +383 -7
- package/dist/index79.js.map +1 -1
- package/dist/index8.js +36 -32
- package/dist/index8.js.map +1 -1
- package/dist/index80.js +41 -18
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +25 -9
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +60 -10
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +10 -19
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +8 -7
- package/dist/index84.js.map +1 -1
- package/dist/index85.js +8 -7
- package/dist/index85.js.map +1 -1
- package/dist/index86.js +8 -8
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +8 -8
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +9 -7
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +9 -7
- package/dist/index89.js.map +1 -1
- package/dist/index9.js +33 -181
- package/dist/index9.js.map +1 -1
- package/dist/index90.js +13 -9
- package/dist/index90.js.map +1 -1
- package/dist/index91.js +10 -27
- package/dist/index91.js.map +1 -1
- package/dist/index92.js +9 -9
- package/dist/index92.js.map +1 -1
- package/dist/index93.js +8 -7
- package/dist/index93.js.map +1 -1
- package/dist/index94.js +10 -9
- package/dist/index94.js.map +1 -1
- package/dist/index95.js +50 -8
- package/dist/index95.js.map +1 -1
- package/dist/index96.js +108 -7
- package/dist/index96.js.map +1 -1
- package/dist/index97.js +13 -8
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +9 -7
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +9 -11
- package/dist/index99.js.map +1 -1
- package/package.json +6 -6
- package/dist/index.js.map +0 -1
- package/dist/index2.js.map +0 -1
- package/dist/index232.js.map +0 -1
- package/dist/index235.js.map +0 -1
- package/dist/index29.js.map +0 -1
- package/dist/index30.js.map +0 -1
- package/dist/index311.js +0 -7
- package/dist/index311.js.map +0 -1
- package/dist/index312.js +0 -26
- package/dist/index312.js.map +0 -1
- package/dist/index313.js +0 -19
- package/dist/index313.js.map +0 -1
- package/dist/index314.js +0 -32
- package/dist/index314.js.map +0 -1
- package/dist/index315.js +0 -16
- package/dist/index315.js.map +0 -1
- package/dist/index316.js +0 -10
- package/dist/index316.js.map +0 -1
- package/dist/index317.js +0 -26
- package/dist/index317.js.map +0 -1
- package/dist/index318.js +0 -16
- package/dist/index318.js.map +0 -1
- package/dist/index319.js +0 -31
- package/dist/index319.js.map +0 -1
- package/dist/index320.js +0 -8
- package/dist/index320.js.map +0 -1
package/dist/index309.js
CHANGED
|
@@ -1,156 +1,335 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
},
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
1
|
+
import { cn as e } from "./index12.js";
|
|
2
|
+
import { Content2 as t, Item2 as n, Portal2 as r, Root2 as i, Trigger as a } from "./index308.js";
|
|
3
|
+
import { c as o } from "react/compiler-runtime";
|
|
4
|
+
import { createContext as s, useCallback as c, useContext as l, useEffect as u, useMemo as d, useState as f } from "react";
|
|
5
|
+
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
6
|
+
import { Loader2 as h, MoreVertical as g, X as _ } from "lucide-react";
|
|
7
|
+
import * as v from "@radix-ui/react-dialog";
|
|
8
|
+
//#region src/components/Notifications/NotificationsDrawer.tsx
|
|
9
|
+
var y = (e) => {
|
|
10
|
+
let t = Date.parse(e);
|
|
11
|
+
return Number.isFinite(t) ? t : 0;
|
|
12
|
+
}, b = (e) => {
|
|
13
|
+
let t = new Date(y(e));
|
|
14
|
+
return Number.isFinite(t.getTime()) ? `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, "0")}-${String(t.getDate()).padStart(2, "0")}` : "unknown";
|
|
15
|
+
}, x = (e) => {
|
|
16
|
+
if (e === "unknown") return "Unknown date";
|
|
17
|
+
let [t, n, r] = e.split("-"), i = Number(t), a = Number(n), o = Number(r);
|
|
18
|
+
if (!Number.isFinite(i) || !Number.isFinite(a) || !Number.isFinite(o)) return "Unknown date";
|
|
19
|
+
let s = new Date(i, a - 1, o);
|
|
20
|
+
if (!Number.isFinite(s.getTime())) return "Unknown date";
|
|
21
|
+
let c = (/* @__PURE__ */ new Date()).getFullYear() !== i;
|
|
22
|
+
return s.toLocaleDateString(void 0, c ? {
|
|
23
|
+
weekday: "short",
|
|
24
|
+
month: "short",
|
|
25
|
+
day: "numeric",
|
|
26
|
+
year: "numeric"
|
|
27
|
+
} : {
|
|
28
|
+
weekday: "short",
|
|
29
|
+
month: "short",
|
|
30
|
+
day: "numeric"
|
|
31
|
+
});
|
|
32
|
+
}, S = (e) => {
|
|
33
|
+
let t = [], n = null;
|
|
34
|
+
for (let r of e) {
|
|
35
|
+
let e = b(r.createdAt);
|
|
36
|
+
e !== n && (n = e, t.push({
|
|
37
|
+
key: e,
|
|
38
|
+
label: x(e),
|
|
39
|
+
items: []
|
|
40
|
+
})), t[t.length - 1].items.push(r);
|
|
41
|
+
}
|
|
42
|
+
return t;
|
|
43
|
+
}, C = s(null);
|
|
44
|
+
function w({ open: t, onOpenChange: n, className: r, limit: i = 50, defaultUnreadOnly: a = !1, realtimeContext: o }) {
|
|
45
|
+
let s = l(o ?? C), [g, y] = f([]), [b, x] = f(0), [w, E] = f(0), [D, O] = f(!1), [k, A] = f(null), [j, M] = f(a), N = s?.notifications ?? g, P = s?.unreadCount ?? b, F = s?.unseenCount ?? w, I = s?.loading ?? D, L = s?.error ? s.error instanceof Error ? s.error.message : String(s.error) : k, R = d(() => N.slice(0, i), [i, N]), z = d(() => R.filter((e) => !e.readAt), [R]), B = d(() => R.filter((e) => !!e.readAt), [R]), V = d(() => S(z), [z]), H = d(() => S(B), [B]), U = c(async ({ unreadOnly: e, markSeen: t }) => {
|
|
46
|
+
O(!0), A(null);
|
|
47
|
+
try {
|
|
48
|
+
let n = await fetch("/api/rb/notifications", {
|
|
49
|
+
method: "POST",
|
|
50
|
+
headers: { "Content-Type": "application/json" },
|
|
51
|
+
credentials: "include",
|
|
52
|
+
body: JSON.stringify({
|
|
53
|
+
limit: i,
|
|
54
|
+
unreadOnly: e,
|
|
55
|
+
markSeen: t
|
|
56
|
+
})
|
|
57
|
+
}), r = await n.json().catch(() => null);
|
|
58
|
+
if (!n.ok || !r?.ok) {
|
|
59
|
+
A(r?.error || "Unable to load notifications.");
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
y(Array.isArray(r.notifications) ? r.notifications : []), x(Number.isFinite(r.unreadCount) ? Math.max(0, Math.floor(r.unreadCount ?? 0)) : 0), E(Number.isFinite(r.unseenCount) ? Math.max(0, Math.floor(r.unseenCount ?? 0)) : 0);
|
|
63
|
+
} catch {
|
|
64
|
+
A("Unable to load notifications.");
|
|
65
|
+
} finally {
|
|
66
|
+
O(!1);
|
|
67
|
+
}
|
|
68
|
+
}, [i]);
|
|
69
|
+
u(() => {
|
|
70
|
+
if (t) {
|
|
71
|
+
if (s) {
|
|
72
|
+
(async () => {
|
|
73
|
+
try {
|
|
74
|
+
await fetch("/api/rb/notifications", {
|
|
75
|
+
method: "POST",
|
|
76
|
+
headers: { "Content-Type": "application/json" },
|
|
77
|
+
credentials: "include",
|
|
78
|
+
keepalive: !0,
|
|
79
|
+
body: JSON.stringify({
|
|
80
|
+
limit: 1,
|
|
81
|
+
markSeen: !0
|
|
82
|
+
})
|
|
83
|
+
});
|
|
84
|
+
} catch {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
})();
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
U({
|
|
91
|
+
unreadOnly: j,
|
|
92
|
+
markSeen: !0
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}, [
|
|
96
|
+
t,
|
|
97
|
+
s,
|
|
98
|
+
U,
|
|
99
|
+
j
|
|
100
|
+
]), u(() => {
|
|
101
|
+
t && (s || U({
|
|
102
|
+
unreadOnly: j,
|
|
103
|
+
markSeen: !1
|
|
104
|
+
}));
|
|
105
|
+
}, [
|
|
106
|
+
t,
|
|
107
|
+
s,
|
|
108
|
+
U,
|
|
109
|
+
j
|
|
110
|
+
]);
|
|
111
|
+
let W = async (e) => {
|
|
112
|
+
try {
|
|
113
|
+
let t = await fetch(`/api/rb/notifications/${encodeURIComponent(e)}/read`, {
|
|
114
|
+
method: "POST",
|
|
115
|
+
headers: { "Content-Type": "application/json" },
|
|
116
|
+
credentials: "include",
|
|
117
|
+
keepalive: !0,
|
|
118
|
+
body: "{}"
|
|
119
|
+
}), n = await t.json().catch(() => null);
|
|
120
|
+
if (!t.ok || !n?.ok) return;
|
|
121
|
+
let r = (/* @__PURE__ */ new Date()).toISOString();
|
|
122
|
+
if (s) return;
|
|
123
|
+
y((t) => {
|
|
124
|
+
let n = t.find((t) => t.id === e);
|
|
125
|
+
return n && !n.readAt && x((e) => Math.max(0, e - 1)), n && !n.seenAt && E((e) => Math.max(0, e - 1)), t.map((t) => t.id === e && !t.readAt ? {
|
|
126
|
+
...t,
|
|
127
|
+
readAt: r,
|
|
128
|
+
...t.seenAt ? {} : { seenAt: r }
|
|
129
|
+
} : t);
|
|
130
|
+
});
|
|
131
|
+
} catch {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
}, G = async (e) => {
|
|
135
|
+
try {
|
|
136
|
+
let t = await fetch(`/api/rb/notifications/${encodeURIComponent(e)}/archive`, {
|
|
137
|
+
method: "POST",
|
|
138
|
+
headers: { "Content-Type": "application/json" },
|
|
139
|
+
credentials: "include",
|
|
140
|
+
body: "{}"
|
|
141
|
+
}), n = await t.json().catch(() => null);
|
|
142
|
+
if (!t.ok || !n?.ok || s) return;
|
|
143
|
+
y((t) => {
|
|
144
|
+
let n = t.find((t) => t.id === e);
|
|
145
|
+
return n && !n.readAt && x((e) => Math.max(0, e - 1)), n && !n.seenAt && E((e) => Math.max(0, e - 1)), t.filter((t) => t.id !== e);
|
|
146
|
+
});
|
|
147
|
+
} catch {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
return /* @__PURE__ */ p(v.Root, {
|
|
152
|
+
open: t,
|
|
153
|
+
onOpenChange: n,
|
|
154
|
+
children: /* @__PURE__ */ m(v.Portal, { children: [/* @__PURE__ */ p(v.Overlay, { className: "fixed inset-0 z-50 bg-black/50" }), /* @__PURE__ */ m(v.Content, {
|
|
155
|
+
className: e("fixed right-0 top-0 z-50 flex h-full w-full max-w-md flex-col border-l bg-background shadow-xl outline-none", r),
|
|
156
|
+
children: [/* @__PURE__ */ m("header", {
|
|
157
|
+
className: "flex items-center justify-between gap-2 border-b px-4 py-3",
|
|
158
|
+
children: [/* @__PURE__ */ m("div", {
|
|
159
|
+
className: "flex min-w-0 flex-col",
|
|
160
|
+
children: [/* @__PURE__ */ p(v.Title, {
|
|
161
|
+
className: "text-sm font-semibold",
|
|
162
|
+
children: "Notifications"
|
|
163
|
+
}), /* @__PURE__ */ p("span", {
|
|
164
|
+
className: "text-xs text-muted-foreground",
|
|
165
|
+
children: P > 0 ? `${P} unread` : F > 0 ? `${F} new` : "All caught up"
|
|
166
|
+
})]
|
|
167
|
+
}), /* @__PURE__ */ m("div", {
|
|
168
|
+
className: "flex items-center gap-2",
|
|
169
|
+
children: [/* @__PURE__ */ p("button", {
|
|
170
|
+
type: "button",
|
|
171
|
+
onClick: () => M((e) => !e),
|
|
172
|
+
className: e("rounded-md border px-2 py-1 text-xs", j ? "bg-accent text-foreground" : "bg-background text-muted-foreground hover:bg-accent"),
|
|
173
|
+
children: j ? "Unread" : "All"
|
|
174
|
+
}), /* @__PURE__ */ p(v.Close, {
|
|
175
|
+
asChild: !0,
|
|
176
|
+
children: /* @__PURE__ */ p("button", {
|
|
177
|
+
type: "button",
|
|
178
|
+
className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent",
|
|
179
|
+
children: /* @__PURE__ */ p(_, { className: "h-4 w-4" })
|
|
180
|
+
})
|
|
181
|
+
})]
|
|
182
|
+
})]
|
|
183
|
+
}), /* @__PURE__ */ p("div", {
|
|
184
|
+
className: "flex-1 overflow-y-auto px-4 pb-3",
|
|
185
|
+
children: I ? /* @__PURE__ */ p("div", {
|
|
186
|
+
className: "flex items-center justify-center py-10 text-muted-foreground",
|
|
187
|
+
children: /* @__PURE__ */ p(h, { className: "h-4 w-4 animate-spin" })
|
|
188
|
+
}) : L ? /* @__PURE__ */ p("div", {
|
|
189
|
+
className: "py-10 text-center text-sm text-muted-foreground",
|
|
190
|
+
children: L
|
|
191
|
+
}) : R.length === 0 ? /* @__PURE__ */ p("div", {
|
|
192
|
+
className: "py-10 text-center text-sm text-muted-foreground",
|
|
193
|
+
children: "No notifications."
|
|
194
|
+
}) : /* @__PURE__ */ m("div", {
|
|
195
|
+
className: "flex flex-col gap-4",
|
|
196
|
+
children: [/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("div", {
|
|
197
|
+
className: "sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground",
|
|
198
|
+
children: "Unread notifications"
|
|
199
|
+
}), V.length === 0 ? /* @__PURE__ */ p("div", {
|
|
200
|
+
className: "py-6 text-center text-sm text-muted-foreground",
|
|
201
|
+
children: "No unread notifications."
|
|
202
|
+
}) : V.map((e) => /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("div", {
|
|
203
|
+
className: "sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground",
|
|
204
|
+
children: e.label
|
|
205
|
+
}), /* @__PURE__ */ p("div", {
|
|
206
|
+
className: "-mx-4 flex flex-col divide-y divide-border",
|
|
207
|
+
children: e.items.map((e) => /* @__PURE__ */ p(T, {
|
|
208
|
+
notification: e,
|
|
209
|
+
onMarkRead: W,
|
|
210
|
+
onArchive: G
|
|
211
|
+
}, e.id))
|
|
212
|
+
})] }, `unread:${e.key}`))] }), j ? null : /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("div", {
|
|
213
|
+
className: "sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground",
|
|
214
|
+
children: "Previous notifications"
|
|
215
|
+
}), H.length === 0 ? /* @__PURE__ */ p("div", {
|
|
216
|
+
className: "py-6 text-center text-sm text-muted-foreground",
|
|
217
|
+
children: "No previous notifications."
|
|
218
|
+
}) : H.map((e) => /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("div", {
|
|
219
|
+
className: "sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground",
|
|
220
|
+
children: e.label
|
|
221
|
+
}), /* @__PURE__ */ p("div", {
|
|
222
|
+
className: "-mx-4 flex flex-col divide-y divide-border",
|
|
223
|
+
children: e.items.map((e) => /* @__PURE__ */ p(T, {
|
|
224
|
+
notification: e,
|
|
225
|
+
onMarkRead: W,
|
|
226
|
+
onArchive: G
|
|
227
|
+
}, e.id))
|
|
228
|
+
})] }, `previous:${e.key}`))] })]
|
|
229
|
+
})
|
|
230
|
+
})]
|
|
231
|
+
})] })
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
function T(s) {
|
|
235
|
+
let c = o(43), { notification: l, onMarkRead: u, onArchive: d } = s, f = !l.readAt, h;
|
|
236
|
+
if (c[0] !== l.createdAt) {
|
|
237
|
+
bb0: {
|
|
238
|
+
let e = new Date(y(l.createdAt));
|
|
239
|
+
if (!Number.isFinite(e.getTime())) {
|
|
240
|
+
h = "";
|
|
241
|
+
break bb0;
|
|
242
|
+
}
|
|
243
|
+
h = e.toLocaleString();
|
|
244
|
+
}
|
|
245
|
+
c[0] = l.createdAt, c[1] = h;
|
|
246
|
+
} else h = c[1];
|
|
247
|
+
let _ = h, v = f ? "bg-primary/5" : "bg-background", b;
|
|
248
|
+
c[2] === v ? b = c[3] : (b = e("group flex w-full gap-3 px-4 py-3 hover:bg-accent/40", v), c[2] = v, c[3] = b);
|
|
249
|
+
let x;
|
|
250
|
+
c[4] !== f || c[5] !== l.id || c[6] !== l.url || c[7] !== u ? (x = () => {
|
|
251
|
+
f && u(l.id), l.url && (window.location.href = l.url);
|
|
252
|
+
}, c[4] = f, c[5] = l.id, c[6] = l.url, c[7] = u, c[8] = x) : x = c[8];
|
|
253
|
+
let S;
|
|
254
|
+
c[9] === l.title ? S = c[10] : (S = /* @__PURE__ */ p("div", {
|
|
255
|
+
className: "truncate text-sm font-semibold",
|
|
256
|
+
children: l.title
|
|
257
|
+
}), c[9] = l.title, c[10] = S);
|
|
258
|
+
let C;
|
|
259
|
+
c[11] === l.body ? C = c[12] : (C = l.body ? /* @__PURE__ */ p("div", {
|
|
260
|
+
className: "mt-0.5 line-clamp-2 text-xs text-muted-foreground",
|
|
261
|
+
children: l.body
|
|
262
|
+
}) : null, c[11] = l.body, c[12] = C);
|
|
263
|
+
let w;
|
|
264
|
+
c[13] !== S || c[14] !== C ? (w = /* @__PURE__ */ m("div", {
|
|
265
|
+
className: "min-w-0",
|
|
266
|
+
children: [S, C]
|
|
267
|
+
}), c[13] = S, c[14] = C, c[15] = w) : w = c[15];
|
|
268
|
+
let T;
|
|
269
|
+
c[16] === l.url ? T = c[17] : (T = l.url ? /* @__PURE__ */ p("div", {
|
|
270
|
+
className: "mt-2 truncate text-xs text-primary",
|
|
271
|
+
children: l.url
|
|
272
|
+
}) : null, c[16] = l.url, c[17] = T);
|
|
273
|
+
let E;
|
|
274
|
+
c[18] === _ ? E = c[19] : (E = _ ? /* @__PURE__ */ p("div", {
|
|
275
|
+
className: "mt-2 text-[11px] text-muted-foreground",
|
|
276
|
+
children: _
|
|
277
|
+
}) : null, c[18] = _, c[19] = E);
|
|
278
|
+
let D;
|
|
279
|
+
c[20] !== x || c[21] !== w || c[22] !== T || c[23] !== E ? (D = /* @__PURE__ */ m("button", {
|
|
280
|
+
type: "button",
|
|
281
|
+
className: "min-w-0 flex-1 text-left",
|
|
282
|
+
onClick: x,
|
|
283
|
+
children: [
|
|
284
|
+
w,
|
|
285
|
+
T,
|
|
286
|
+
E
|
|
287
|
+
]
|
|
288
|
+
}), c[20] = x, c[21] = w, c[22] = T, c[23] = E, c[24] = D) : D = c[24];
|
|
289
|
+
let O;
|
|
290
|
+
c[25] === Symbol.for("react.memo_cache_sentinel") ? (O = /* @__PURE__ */ p(a, {
|
|
291
|
+
asChild: !0,
|
|
292
|
+
children: /* @__PURE__ */ p("button", {
|
|
293
|
+
type: "button",
|
|
294
|
+
className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent",
|
|
295
|
+
"aria-label": "Notification options",
|
|
296
|
+
children: /* @__PURE__ */ p(g, { className: "h-4 w-4" })
|
|
297
|
+
})
|
|
298
|
+
}), c[25] = O) : O = c[25];
|
|
299
|
+
let k;
|
|
300
|
+
c[26] === Symbol.for("react.memo_cache_sentinel") ? (k = e("z-50 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md", "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95", "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"), c[26] = k) : k = c[26];
|
|
301
|
+
let A;
|
|
302
|
+
c[27] !== l.id || c[28] !== d ? (A = /* @__PURE__ */ p(n, {
|
|
303
|
+
className: "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
304
|
+
onSelect: () => d(l.id),
|
|
305
|
+
children: "Archive"
|
|
306
|
+
}), c[27] = l.id, c[28] = d, c[29] = A) : A = c[29];
|
|
307
|
+
let j = !f, M;
|
|
308
|
+
c[30] !== l.id || c[31] !== u ? (M = () => u(l.id), c[30] = l.id, c[31] = u, c[32] = M) : M = c[32];
|
|
309
|
+
let N;
|
|
310
|
+
c[33] !== j || c[34] !== M ? (N = /* @__PURE__ */ p(n, {
|
|
311
|
+
className: "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
312
|
+
disabled: j,
|
|
313
|
+
onSelect: M,
|
|
314
|
+
children: "Mark as read"
|
|
315
|
+
}), c[33] = j, c[34] = M, c[35] = N) : N = c[35];
|
|
316
|
+
let P;
|
|
317
|
+
c[36] !== A || c[37] !== N ? (P = /* @__PURE__ */ p("div", {
|
|
318
|
+
className: "flex items-start",
|
|
319
|
+
children: /* @__PURE__ */ m(i, { children: [O, /* @__PURE__ */ p(r, { children: /* @__PURE__ */ m(t, {
|
|
320
|
+
align: "end",
|
|
321
|
+
sideOffset: 6,
|
|
322
|
+
className: k,
|
|
323
|
+
children: [A, N]
|
|
324
|
+
}) })] })
|
|
325
|
+
}), c[36] = A, c[37] = N, c[38] = P) : P = c[38];
|
|
326
|
+
let F;
|
|
327
|
+
return c[39] !== D || c[40] !== P || c[41] !== b ? (F = /* @__PURE__ */ m("div", {
|
|
328
|
+
className: b,
|
|
329
|
+
children: [D, P]
|
|
330
|
+
}), c[39] = D, c[40] = P, c[41] = b, c[42] = F) : F = c[42], F;
|
|
331
|
+
}
|
|
332
|
+
//#endregion
|
|
333
|
+
export { w as NotificationsDrawer };
|
|
334
|
+
|
|
335
|
+
//# sourceMappingURL=index309.js.map
|
package/dist/index309.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index309.js","sources":["../../../node_modules/date-fns/locale/en-US/_lib/localize.js"],"sourcesContent":["import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n"],"names":["eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","_options","number","rem100","localize","buildLocalizeFn","quarter"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index309.js","names":["createContext","useCallback","useContext","useEffect","useMemo","useState","Context","DialogPrimitive","DropdownMenuPrimitive","Loader2","MoreVertical","X","cn","NotificationItem","NotificationsRealtimeState","ListResponse","ok","error","notifications","unreadCount","unseenCount","DayGroup","key","label","items","toMs","iso","ms","Date","parse","Number","isFinite","getDayKey","date","getTime","year","getFullYear","month","String","getMonth","padStart","day","getDate","formatDayLabel","yearRaw","monthRaw","dayRaw","split","now","includeYear","toLocaleDateString","undefined","weekday","groupByDay","groups","currentKey","item","createdAt","push","length","EmptyRealtimeContext","NotificationsDrawer","open","onOpenChange","className","limit","defaultUnreadOnly","realtimeContext","realtime","setItems","setUnreadCount","setUnseenCount","loading","setLoading","setError","unreadOnly","setUnreadOnly","mergedItems","mergedUnreadCount","mergedUnseenCount","mergedLoading","mergedError","Error","message","visibleItems","slice","unread","filter","n","readAt","read","Boolean","unreadGroups","readGroups","refresh","markSeen","res","fetch","method","headers","credentials","body","JSON","stringify","json","catch","nextItems","Array","isArray","Math","max","floor","keepalive","markAsRead","id","encodeURIComponent","nowIso","toISOString","current","target","find","count","seenAt","map","archive","v","group","NotificationRow","t0","$","_c","notification","onMarkRead","onArchive","isUnread","t1","bb0","toLocaleString","createdAtLabel","t2","t3","t4","url","window","location","href","t5","title","t6","t7","t8","t9","t10","t11","Symbol","for","t12","t13","t14","t15","t16","t17","t18"],"sources":["../src/components/Notifications/NotificationsDrawer.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect, useMemo, useState, type Context } from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Loader2, MoreVertical, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport type { NotificationItem, NotificationsRealtimeState } from \"./types\"\n\n\ntype ListResponse = {\n ok?: boolean\n error?: string\n notifications?: NotificationItem[]\n unreadCount?: number\n unseenCount?: number\n}\n\ntype DayGroup = {\n key: string\n label: string\n items: NotificationItem[]\n}\n\nconst toMs = (iso: string): number => {\n const ms = Date.parse(iso)\n return Number.isFinite(ms) ? ms : 0\n}\n\nconst getDayKey = (iso: string): string => {\n const date = new Date(toMs(iso))\n if (!Number.isFinite(date.getTime())) return \"unknown\"\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, \"0\")\n const day = String(date.getDate()).padStart(2, \"0\")\n\n return `${year}-${month}-${day}`\n}\n\nconst formatDayLabel = (key: string): string => {\n if (key === \"unknown\") return \"Unknown date\"\n const [yearRaw, monthRaw, dayRaw] = key.split(\"-\")\n const year = Number(yearRaw)\n const month = Number(monthRaw)\n const day = Number(dayRaw)\n\n if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) return \"Unknown date\"\n\n const date = new Date(year, month - 1, day)\n if (!Number.isFinite(date.getTime())) return \"Unknown date\"\n\n const now = new Date()\n const includeYear = now.getFullYear() !== year\n return date.toLocaleDateString(undefined, includeYear\n ? { weekday: \"short\", month: \"short\", day: \"numeric\", year: \"numeric\" }\n : { weekday: \"short\", month: \"short\", day: \"numeric\" })\n}\n\nconst groupByDay = (items: NotificationItem[]): DayGroup[] => {\n const groups: DayGroup[] = []\n let currentKey: string | null = null\n\n for (const item of items) {\n const key = getDayKey(item.createdAt)\n if (key !== currentKey) {\n currentKey = key\n groups.push({ key, label: formatDayLabel(key), items: [] })\n }\n groups[groups.length - 1]!.items.push(item)\n }\n\n return groups\n}\n\nconst EmptyRealtimeContext = createContext<NotificationsRealtimeState | null>(null)\n\nexport function NotificationsDrawer({\n open,\n onOpenChange,\n className,\n limit = 50,\n defaultUnreadOnly = false,\n realtimeContext,\n}: {\n open: boolean\n onOpenChange: (open: boolean) => void\n className?: string\n limit?: number\n defaultUnreadOnly?: boolean\n realtimeContext?: Context<NotificationsRealtimeState | null>\n}) {\n const realtime = useContext(realtimeContext ?? EmptyRealtimeContext)\n\n const [items, setItems] = useState<NotificationItem[]>([])\n const [unreadCount, setUnreadCount] = useState<number>(0)\n const [unseenCount, setUnseenCount] = useState<number>(0)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [unreadOnly, setUnreadOnly] = useState<boolean>(defaultUnreadOnly)\n\n const mergedItems = realtime?.notifications ?? items\n const mergedUnreadCount = realtime?.unreadCount ?? unreadCount\n const mergedUnseenCount = realtime?.unseenCount ?? unseenCount\n const mergedLoading = realtime?.loading ?? loading\n const mergedError = realtime?.error\n ? (realtime.error instanceof Error ? realtime.error.message : String(realtime.error))\n : error\n\n const visibleItems = useMemo(() => mergedItems.slice(0, limit), [limit, mergedItems])\n\n const unread = useMemo(() => visibleItems.filter((n) => !n.readAt), [visibleItems])\n const read = useMemo(() => visibleItems.filter((n) => Boolean(n.readAt)), [visibleItems])\n const unreadGroups = useMemo(() => groupByDay(unread), [unread])\n const readGroups = useMemo(() => groupByDay(read), [read])\n\n const refresh = useCallback(async ({ unreadOnly, markSeen }: { unreadOnly: boolean; markSeen: boolean }) => {\n setLoading(true)\n setError(null)\n\n try {\n const res = await fetch(\"/api/rb/notifications\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n body: JSON.stringify({ limit, unreadOnly, markSeen }),\n })\n\n const json = (await res.json().catch(() => null)) as ListResponse | null\n if (!res.ok || !json?.ok) {\n setError(json?.error || \"Unable to load notifications.\")\n return\n }\n\n const nextItems = Array.isArray(json.notifications) ? json.notifications : []\n setItems(nextItems)\n setUnreadCount(Number.isFinite(json.unreadCount) ? Math.max(0, Math.floor(json.unreadCount ?? 0)) : 0)\n setUnseenCount(Number.isFinite(json.unseenCount) ? Math.max(0, Math.floor(json.unseenCount ?? 0)) : 0)\n } catch {\n setError(\"Unable to load notifications.\")\n } finally {\n setLoading(false)\n }\n }, [limit])\n\n useEffect(() => {\n if (!open) return\n if (realtime) {\n void (async () => {\n try {\n await fetch(\"/api/rb/notifications\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n keepalive: true,\n body: JSON.stringify({ limit: 1, markSeen: true }),\n })\n } catch {\n return\n }\n })()\n return\n }\n void refresh({ unreadOnly, markSeen: true })\n }, [open, realtime, refresh, unreadOnly])\n\n useEffect(() => {\n if (!open) return\n if (realtime) return\n void refresh({ unreadOnly, markSeen: false })\n }, [open, realtime, refresh, unreadOnly])\n\n const markAsRead = async (id: string) => {\n try {\n const res = await fetch(`/api/rb/notifications/${encodeURIComponent(id)}/read`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n keepalive: true,\n body: \"{}\",\n })\n\n const json = (await res.json().catch(() => null)) as { ok?: boolean } | null\n if (!res.ok || !json?.ok) return\n\n const nowIso = new Date().toISOString()\n if (realtime) return\n setItems((current) => {\n const target = current.find((n) => n.id === id)\n if (target && !target.readAt) {\n setUnreadCount((count) => Math.max(0, count - 1))\n }\n if (target && !target.seenAt) {\n setUnseenCount((count) => Math.max(0, count - 1))\n }\n return current.map((n) => (n.id === id && !n.readAt ? { ...n, readAt: nowIso, ...(n.seenAt ? {} : { seenAt: nowIso }) } : n))\n })\n } catch {\n return\n }\n }\n\n const archive = async (id: string) => {\n try {\n const res = await fetch(`/api/rb/notifications/${encodeURIComponent(id)}/archive`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n body: \"{}\",\n })\n\n const json = (await res.json().catch(() => null)) as { ok?: boolean } | null\n if (!res.ok || !json?.ok) return\n\n if (realtime) return\n setItems((current) => {\n const target = current.find((n) => n.id === id)\n if (target && !target.readAt) {\n setUnreadCount((count) => Math.max(0, count - 1))\n }\n if (target && !target.seenAt) {\n setUnseenCount((count) => Math.max(0, count - 1))\n }\n return current.filter((n) => n.id !== id)\n })\n } catch {\n return\n }\n }\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className=\"fixed inset-0 z-50 bg-black/50\" />\n <DialogPrimitive.Content\n className={cn(\n \"fixed right-0 top-0 z-50 flex h-full w-full max-w-md flex-col border-l bg-background shadow-xl outline-none\",\n className,\n )}\n >\n <header className=\"flex items-center justify-between gap-2 border-b px-4 py-3\">\n <div className=\"flex min-w-0 flex-col\">\n <DialogPrimitive.Title className=\"text-sm font-semibold\">Notifications</DialogPrimitive.Title>\n <span className=\"text-xs text-muted-foreground\">\n {mergedUnreadCount > 0 ? `${mergedUnreadCount} unread` : mergedUnseenCount > 0 ? `${mergedUnseenCount} new` : \"All caught up\"}\n </span>\n </div>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => setUnreadOnly((v) => !v)}\n className={cn(\n \"rounded-md border px-2 py-1 text-xs\",\n unreadOnly ? \"bg-accent text-foreground\" : \"bg-background text-muted-foreground hover:bg-accent\",\n )}\n >\n {unreadOnly ? \"Unread\" : \"All\"}\n </button>\n <DialogPrimitive.Close asChild>\n <button type=\"button\" className=\"inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent\">\n <X className=\"h-4 w-4\" />\n </button>\n </DialogPrimitive.Close>\n </div>\n </header>\n\n <div className=\"flex-1 overflow-y-auto px-4 pb-3\">\n {mergedLoading ? (\n <div className=\"flex items-center justify-center py-10 text-muted-foreground\">\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n </div>\n ) : mergedError ? (\n <div className=\"py-10 text-center text-sm text-muted-foreground\">{mergedError}</div>\n ) : visibleItems.length === 0 ? (\n <div className=\"py-10 text-center text-sm text-muted-foreground\">No notifications.</div>\n ) : (\n <div className=\"flex flex-col gap-4\">\n <div>\n <div className=\"sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground\">\n Unread notifications\n </div>\n {unreadGroups.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">No unread notifications.</div>\n ) : (\n unreadGroups.map((group) => (\n <div key={`unread:${group.key}`}>\n <div className=\"sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground\">\n {group.label}\n </div>\n <div className=\"-mx-4 flex flex-col divide-y divide-border\">\n {group.items.map((n) => (\n <NotificationRow\n key={n.id}\n notification={n}\n onMarkRead={markAsRead}\n onArchive={archive}\n />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n\n {unreadOnly ? null : (\n <div>\n <div className=\"sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground\">\n Previous notifications\n </div>\n {readGroups.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">No previous notifications.</div>\n ) : (\n readGroups.map((group) => (\n <div key={`previous:${group.key}`}>\n <div className=\"sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground\">\n {group.label}\n </div>\n <div className=\"-mx-4 flex flex-col divide-y divide-border\">\n {group.items.map((n) => (\n <NotificationRow\n key={n.id}\n notification={n}\n onMarkRead={markAsRead}\n onArchive={archive}\n />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n\nfunction NotificationRow({\n notification,\n onMarkRead,\n onArchive,\n}: {\n notification: NotificationItem\n onMarkRead: (id: string) => void\n onArchive: (id: string) => void\n}) {\n const isUnread = !notification.readAt\n const createdAtLabel = (() => {\n const date = new Date(toMs(notification.createdAt))\n if (!Number.isFinite(date.getTime())) return \"\"\n return date.toLocaleString()\n })()\n\n return (\n <div\n className={cn(\n \"group flex w-full gap-3 px-4 py-3 hover:bg-accent/40\",\n isUnread ? \"bg-primary/5\" : \"bg-background\",\n )}\n >\n <button\n type=\"button\"\n className=\"min-w-0 flex-1 text-left\"\n onClick={() => {\n if (isUnread) {\n void onMarkRead(notification.id)\n }\n if (notification.url) {\n window.location.href = notification.url\n }\n }}\n >\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold\">{notification.title}</div>\n {notification.body ? (\n <div className=\"mt-0.5 line-clamp-2 text-xs text-muted-foreground\">{notification.body}</div>\n ) : null}\n </div>\n {notification.url ? <div className=\"mt-2 truncate text-xs text-primary\">{notification.url}</div> : null}\n {createdAtLabel ? (\n <div className=\"mt-2 text-[11px] text-muted-foreground\">{createdAtLabel}</div>\n ) : null}\n </button>\n <div className=\"flex items-start\">\n <DropdownMenuPrimitive.Root>\n <DropdownMenuPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent\"\n aria-label=\"Notification options\"\n >\n <MoreVertical className=\"h-4 w-4\" />\n </button>\n </DropdownMenuPrimitive.Trigger>\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n align=\"end\"\n sideOffset={6}\n className={cn(\n \"z-50 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n )}\n >\n <DropdownMenuPrimitive.Item\n className=\"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n onSelect={() => onArchive(notification.id)}\n >\n Archive\n </DropdownMenuPrimitive.Item>\n <DropdownMenuPrimitive.Item\n className=\"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n disabled={!isUnread}\n onSelect={() => onMarkRead(notification.id)}\n >\n Mark as read\n </DropdownMenuPrimitive.Item>\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n </DropdownMenuPrimitive.Root>\n </div>\n </div>\n )\n}\n"],"mappings":"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"}
|