@rpcbase/ui 0.182.0 → 0.184.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/helpers/index.d.ts +1 -0
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/useScrollPagination.d.ts +23 -0
- package/dist/helpers/useScrollPagination.d.ts.map +1 -0
- package/dist/helpers/useScrollPagination.test.d.ts +2 -0
- package/dist/helpers/useScrollPagination.test.d.ts.map +1 -0
- package/dist/index.js +62 -60
- package/dist/index.js.map +1 -1
- package/dist/index10.js +24 -69
- package/dist/index10.js.map +1 -1
- package/dist/index100.js +4 -3
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +5 -4
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +4 -6
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +4 -145
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +6 -39
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +24 -4
- package/dist/index105.js.map +1 -1
- package/dist/index106.js +6 -7
- package/dist/index106.js.map +1 -1
- package/dist/index107.js +4 -13
- package/dist/index107.js.map +1 -1
- package/dist/index108.js +6 -13
- package/dist/index108.js.map +1 -1
- package/dist/index109.js +5 -7
- package/dist/index109.js.map +1 -1
- package/dist/index11.js +38 -552
- package/dist/index11.js.map +1 -1
- package/dist/index110.js +4 -31
- package/dist/index110.js.map +1 -1
- package/dist/index111.js +5 -10
- package/dist/index111.js.map +1 -1
- package/dist/index112.js +4 -10
- package/dist/index112.js.map +1 -1
- package/dist/index113.js +8 -8
- package/dist/index113.js.map +1 -1
- package/dist/index114.js +5 -13
- package/dist/index114.js.map +1 -1
- package/dist/index115.js +4 -101
- package/dist/index115.js.map +1 -1
- package/dist/index116.js +5 -20
- package/dist/index116.js.map +1 -1
- package/dist/index117.js +6 -53
- package/dist/index117.js.map +1 -1
- package/dist/index118.js +145 -72
- package/dist/index118.js.map +1 -1
- package/dist/index119.js +39 -9
- package/dist/index119.js.map +1 -1
- package/dist/index12.js +571 -115
- package/dist/index12.js.map +1 -1
- package/dist/index120.js +4 -20
- package/dist/index120.js.map +1 -1
- package/dist/index121.js +7 -16
- package/dist/index121.js.map +1 -1
- package/dist/index122.js +13 -23
- package/dist/index122.js.map +1 -1
- package/dist/index123.js +13 -6
- package/dist/index123.js.map +1 -1
- package/dist/index124.js +7 -5
- package/dist/index124.js.map +1 -1
- package/dist/index125.js +31 -23
- package/dist/index125.js.map +1 -1
- package/dist/index126.js +11 -35
- package/dist/index126.js.map +1 -1
- package/dist/index127.js +11 -16
- package/dist/index127.js.map +1 -1
- package/dist/index128.js +8 -6
- package/dist/index128.js.map +1 -1
- package/dist/index129.js +13 -4
- package/dist/index129.js.map +1 -1
- package/dist/index13.js +137 -76
- package/dist/index13.js.map +1 -1
- package/dist/index130.js +101 -4
- package/dist/index130.js.map +1 -1
- package/dist/index131.js +20 -5
- package/dist/index131.js.map +1 -1
- package/dist/index132.js +53 -4
- package/dist/index132.js.map +1 -1
- package/dist/index133.js +72 -3
- package/dist/index133.js.map +1 -1
- package/dist/index134.js +9 -6
- package/dist/index134.js.map +1 -1
- package/dist/index135.js +21 -24
- package/dist/index135.js.map +1 -1
- package/dist/index136.js +16 -7
- package/dist/index136.js.map +1 -1
- package/dist/index137.js +23 -6
- package/dist/index137.js.map +1 -1
- package/dist/index138.js +6 -5
- package/dist/index138.js.map +1 -1
- package/dist/index139.js +5 -3
- package/dist/index139.js.map +1 -1
- package/dist/index14.js +74 -730
- package/dist/index14.js.map +1 -1
- package/dist/index140.js +23 -3
- package/dist/index140.js.map +1 -1
- package/dist/index141.js +35 -5
- package/dist/index141.js.map +1 -1
- package/dist/index142.js +16 -4
- package/dist/index142.js.map +1 -1
- package/dist/index143.js +6 -4
- package/dist/index143.js.map +1 -1
- package/dist/index144.js +4 -3
- package/dist/index144.js.map +1 -1
- package/dist/index145.js +4 -3
- package/dist/index145.js.map +1 -1
- package/dist/index146.js +4 -3
- package/dist/index146.js.map +1 -1
- package/dist/index147.js +4 -46
- package/dist/index147.js.map +1 -1
- package/dist/index148.js +3 -46
- package/dist/index148.js.map +1 -1
- package/dist/index149.js +6 -205
- package/dist/index149.js.map +1 -1
- package/dist/index15.js +870 -22
- package/dist/index15.js.map +1 -1
- package/dist/index150.js +24 -22
- package/dist/index150.js.map +1 -1
- package/dist/index151.js +7 -24
- package/dist/index151.js.map +1 -1
- package/dist/index152.js +6 -399
- package/dist/index152.js.map +1 -1
- package/dist/index153.js +5 -5
- package/dist/index153.js.map +1 -1
- package/dist/index154.js +3 -68
- package/dist/index154.js.map +1 -1
- package/dist/index155.js +4 -2
- package/dist/index155.js.map +1 -1
- package/dist/index156.js +4 -363
- package/dist/index156.js.map +1 -1
- package/dist/index157.js +3 -261
- package/dist/index157.js.map +1 -1
- package/dist/index158.js +4 -60
- package/dist/index158.js.map +1 -1
- package/dist/index159.js +3 -46
- package/dist/index159.js.map +1 -1
- package/dist/index16.js +20 -17
- package/dist/index16.js.map +1 -1
- package/dist/index160.js +3 -169
- package/dist/index160.js.map +1 -1
- package/dist/index161.js +3 -109
- package/dist/index161.js.map +1 -1
- package/dist/index162.js +5 -24
- package/dist/index162.js.map +1 -1
- package/dist/index163.js +69 -8
- package/dist/index163.js.map +1 -1
- package/dist/index164.js +2 -5
- package/dist/index164.js.map +1 -1
- package/dist/index165.js +363 -5
- package/dist/index165.js.map +1 -1
- package/dist/index166.js +261 -4
- package/dist/index166.js.map +1 -1
- package/dist/index167.js +52 -458
- package/dist/index167.js.map +1 -1
- package/dist/index168.js +42 -181
- package/dist/index168.js.map +1 -1
- package/dist/index169.js +156 -94
- package/dist/index169.js.map +1 -1
- package/dist/index17.js +18 -387
- package/dist/index17.js.map +1 -1
- package/dist/index170.js +102 -255
- package/dist/index170.js.map +1 -1
- package/dist/index171.js +24 -9
- package/dist/index171.js.map +1 -1
- package/dist/index172.js +8 -43
- package/dist/index172.js.map +1 -1
- package/dist/index173.js +4 -4
- package/dist/index173.js.map +1 -1
- package/dist/index174.js +5 -605
- package/dist/index174.js.map +1 -1
- package/dist/index175.js +4 -58
- package/dist/index175.js.map +1 -1
- package/dist/index176.js +466 -8
- package/dist/index176.js.map +1 -1
- package/dist/index177.js +178 -59
- package/dist/index177.js.map +1 -1
- package/dist/index178.js +105 -17
- package/dist/index178.js.map +1 -1
- package/dist/index179.js +260 -14
- package/dist/index179.js.map +1 -1
- package/dist/index18.js +431 -693
- package/dist/index18.js.map +1 -1
- package/dist/index180.js +9 -5
- package/dist/index180.js.map +1 -1
- package/dist/index181.js +41 -4
- package/dist/index181.js.map +1 -1
- package/dist/index182.js +4 -6
- package/dist/index182.js.map +1 -1
- package/dist/index183.js +24 -4
- package/dist/index183.js.map +1 -1
- package/dist/index184.js +29 -8
- package/dist/index184.js.map +1 -1
- package/dist/index185.js +5 -18
- package/dist/index185.js.map +1 -1
- package/dist/index186.js +67 -5
- package/dist/index186.js.map +1 -1
- package/dist/index187.js +180 -5
- package/dist/index187.js.map +1 -1
- package/dist/index188.js +46 -13
- package/dist/index188.js.map +1 -1
- package/dist/index189.js +58 -10
- package/dist/index189.js.map +1 -1
- package/dist/index19.js +661 -634
- package/dist/index19.js.map +1 -1
- package/dist/index190.js +8 -14
- package/dist/index190.js.map +1 -1
- package/dist/index191.js +66 -14
- package/dist/index191.js.map +1 -1
- package/dist/index192.js +19 -5
- package/dist/index192.js.map +1 -1
- package/dist/index193.js +16 -6
- package/dist/index193.js.map +1 -1
- package/dist/index194.js +5 -7
- package/dist/index194.js.map +1 -1
- package/dist/index195.js +5 -6
- package/dist/index195.js.map +1 -1
- package/dist/index196.js +6 -9
- package/dist/index196.js.map +1 -1
- package/dist/index197.js +4 -5
- package/dist/index197.js.map +1 -1
- package/dist/index198.js +7 -5
- package/dist/index198.js.map +1 -1
- package/dist/index199.js +17 -9
- package/dist/index199.js.map +1 -1
- package/dist/index2.js +2 -2
- package/dist/index20.js +455 -198
- package/dist/index20.js.map +1 -1
- package/dist/index200.js +5 -5
- package/dist/index200.js.map +1 -1
- package/dist/index201.js +5 -5
- package/dist/index201.js.map +1 -1
- package/dist/index202.js +13 -4
- package/dist/index202.js.map +1 -1
- package/dist/index203.js +9 -10
- package/dist/index203.js.map +1 -1
- package/dist/index204.js +14 -10
- package/dist/index204.js.map +1 -1
- package/dist/index205.js +14 -10
- package/dist/index205.js.map +1 -1
- package/dist/index206.js +5 -11
- package/dist/index206.js.map +1 -1
- package/dist/index207.js +6 -11
- package/dist/index207.js.map +1 -1
- package/dist/index208.js +6 -9
- package/dist/index208.js.map +1 -1
- package/dist/index209.js +6 -7
- package/dist/index209.js.map +1 -1
- package/dist/index21.js +263 -5
- package/dist/index21.js.map +1 -1
- package/dist/index210.js +9 -6
- package/dist/index210.js.map +1 -1
- package/dist/index211.js +5 -5
- package/dist/index211.js.map +1 -1
- package/dist/index212.js +5 -6
- package/dist/index212.js.map +1 -1
- package/dist/index213.js +9 -7
- package/dist/index213.js.map +1 -1
- package/dist/index214.js +5 -6
- package/dist/index214.js.map +1 -1
- package/dist/index215.js +5 -55
- package/dist/index215.js.map +1 -1
- package/dist/index216.js +4 -16
- package/dist/index216.js.map +1 -1
- package/dist/index217.js +11 -7
- package/dist/index217.js.map +1 -1
- package/dist/index218.js +10 -10
- package/dist/index218.js.map +1 -1
- package/dist/index219.js +10 -10
- package/dist/index219.js.map +1 -1
- package/dist/index22.js +5 -35
- package/dist/index22.js.map +1 -1
- package/dist/index220.js +11 -21
- package/dist/index220.js.map +1 -1
- package/dist/index221.js +11 -10
- package/dist/index221.js.map +1 -1
- package/dist/index222.js +10 -9
- package/dist/index222.js.map +1 -1
- package/dist/index223.js +7 -9
- package/dist/index223.js.map +1 -1
- package/dist/index224.js +6 -4
- package/dist/index224.js.map +1 -1
- package/dist/index225.js +5 -5
- package/dist/index225.js.map +1 -1
- package/dist/index226.js +6 -16
- package/dist/index226.js.map +1 -1
- package/dist/index227.js +7 -9
- package/dist/index227.js.map +1 -1
- package/dist/index228.js +6 -18
- package/dist/index228.js.map +1 -1
- package/dist/index229.js +54 -14
- package/dist/index229.js.map +1 -1
- package/dist/index23.js +27 -268
- package/dist/index23.js.map +1 -1
- package/dist/index230.js +16 -12
- package/dist/index230.js.map +1 -1
- package/dist/index231.js +7 -29
- package/dist/index231.js.map +1 -1
- package/dist/index232.js +9 -11
- package/dist/index232.js.map +1 -1
- package/dist/index233.js +9 -24
- package/dist/index233.js.map +1 -1
- package/dist/index234.js +21 -5
- package/dist/index234.js.map +1 -1
- package/dist/index235.js +10 -24
- package/dist/index235.js.map +1 -1
- package/dist/index236.js +10 -29
- package/dist/index236.js.map +1 -1
- package/dist/index237.js +10 -5
- package/dist/index237.js.map +1 -1
- package/dist/index238.js +4 -13
- package/dist/index238.js.map +1 -1
- package/dist/index239.js +5 -154
- package/dist/index239.js.map +1 -1
- package/dist/index24.js +251 -166
- package/dist/index24.js.map +1 -1
- package/dist/index240.js +15 -29
- package/dist/index240.js.map +1 -1
- package/dist/index241.js +9 -9
- package/dist/index241.js.map +1 -1
- package/dist/index242.js +18 -47
- package/dist/index242.js.map +1 -1
- package/dist/index243.js +15 -11
- package/dist/index243.js.map +1 -1
- package/dist/index244.js +12 -44
- package/dist/index244.js.map +1 -1
- package/dist/index245.js +28 -94
- package/dist/index245.js.map +1 -1
- package/dist/index246.js +11 -85
- package/dist/index246.js.map +1 -1
- package/dist/index247.js +23 -103
- package/dist/index247.js.map +1 -1
- package/dist/index248.js +5 -52
- package/dist/index248.js.map +1 -1
- package/dist/index249.js +13 -11
- package/dist/index249.js.map +1 -1
- package/dist/index25.js +176 -14
- package/dist/index25.js.map +1 -1
- package/dist/index250.js +149 -32
- package/dist/index250.js.map +1 -1
- package/dist/index251.js +30 -8
- package/dist/index251.js.map +1 -1
- package/dist/index252.js +9 -116
- package/dist/index252.js.map +1 -1
- package/dist/index253.js +46 -16
- package/dist/index253.js.map +1 -1
- package/dist/index254.js +11 -15
- package/dist/index254.js.map +1 -1
- package/dist/index255.js +44 -3
- package/dist/index255.js.map +1 -1
- package/dist/index256.js +91 -32
- package/dist/index256.js.map +1 -1
- package/dist/index257.js +85 -19
- package/dist/index257.js.map +1 -1
- package/dist/index258.js +105 -9
- package/dist/index258.js.map +1 -1
- package/dist/index259.js +52 -8
- package/dist/index259.js.map +1 -1
- package/dist/index26.js +15 -2763
- package/dist/index26.js.map +1 -1
- package/dist/index260.js +10 -18
- package/dist/index260.js.map +1 -1
- package/dist/index261.js +36 -27
- package/dist/index261.js.map +1 -1
- package/dist/index262.js +8 -16
- package/dist/index262.js.map +1 -1
- package/dist/index263.js +3 -67
- package/dist/index263.js.map +1 -1
- package/dist/index264.js +9 -180
- package/dist/index264.js.map +1 -1
- package/dist/index265.js +110 -40
- package/dist/index265.js.map +1 -1
- package/dist/index266.js +17 -4
- package/dist/index266.js.map +1 -1
- package/dist/index267.js +15 -18
- package/dist/index267.js.map +1 -1
- package/dist/index268.js +36 -12
- package/dist/index268.js.map +1 -1
- package/dist/index269.js +21 -5
- package/dist/index269.js.map +1 -1
- package/dist/index27.js +2761 -35
- package/dist/index27.js.map +1 -1
- package/dist/index270.js +9 -3
- package/dist/index270.js.map +1 -1
- package/dist/index271.js +19 -23
- package/dist/index271.js.map +1 -1
- package/dist/index272.js +26 -110
- package/dist/index272.js.map +1 -1
- package/dist/index273.js +16 -15
- package/dist/index273.js.map +1 -1
- package/dist/index274.js +5 -525
- package/dist/index274.js.map +1 -1
- package/dist/index275.js +3 -128
- package/dist/index275.js.map +1 -1
- package/dist/index276.js +22 -132
- package/dist/index276.js.map +1 -1
- package/dist/index277.js +111 -19
- package/dist/index277.js.map +1 -1
- package/dist/index278.js +15 -5
- package/dist/index278.js.map +1 -1
- package/dist/index279.js +524 -5
- package/dist/index279.js.map +1 -1
- package/dist/index28.js +2 -2
- package/dist/index280.js +128 -4
- package/dist/index280.js.map +1 -1
- package/dist/index281.js +132 -14
- package/dist/index281.js.map +1 -1
- package/dist/index282.js +4 -8
- package/dist/index282.js.map +1 -1
- package/dist/index283.js +19 -6
- package/dist/index283.js.map +1 -1
- package/dist/index284.js +12 -4
- package/dist/index284.js.map +1 -1
- package/dist/index285.js +19 -544
- package/dist/index285.js.map +1 -1
- package/dist/index286.js +65 -43
- package/dist/index286.js.map +1 -1
- package/dist/index287.js +9 -18
- package/dist/index287.js.map +1 -1
- package/dist/index288.js +14 -7
- package/dist/index288.js.map +1 -1
- package/dist/index289.js +66 -9
- package/dist/index289.js.map +1 -1
- package/dist/index29.js +33 -121
- package/dist/index29.js.map +1 -1
- package/dist/index290.js +64 -7
- package/dist/index290.js.map +1 -1
- package/dist/index291.js +5 -8
- package/dist/index291.js.map +1 -1
- package/dist/index292.js +5 -12
- package/dist/index292.js.map +1 -1
- package/dist/index293.js +4 -10
- package/dist/index293.js.map +1 -1
- package/dist/index294.js +15 -13
- package/dist/index294.js.map +1 -1
- package/dist/index295.js +8 -64
- package/dist/index295.js.map +1 -1
- package/dist/index296.js +6 -69
- package/dist/index296.js.map +1 -1
- package/dist/index297.js +5 -9
- package/dist/index297.js.map +1 -1
- package/dist/index298.js +545 -13
- package/dist/index298.js.map +1 -1
- package/dist/index299.js +45 -64
- package/dist/index299.js.map +1 -1
- package/dist/index3.js.map +1 -1
- package/dist/index30.js +3 -232
- package/dist/index30.js.map +1 -1
- package/dist/index300.js +17 -4
- package/dist/index300.js.map +1 -1
- package/dist/index301.js +7 -56
- package/dist/index301.js.map +1 -1
- package/dist/index302.js +9 -68
- package/dist/index302.js.map +1 -1
- package/dist/index303.js +8 -31
- package/dist/index303.js.map +1 -1
- package/dist/index304.js +9 -9
- package/dist/index304.js.map +1 -1
- package/dist/index305.js +13 -153
- package/dist/index305.js.map +1 -1
- package/dist/index306.js +10 -108
- package/dist/index306.js.map +1 -1
- package/dist/index307.js +13 -3
- package/dist/index307.js.map +1 -1
- package/dist/index308.js +3 -22
- package/dist/index308.js.map +1 -1
- package/dist/index309.js +22 -15
- package/dist/index309.js.map +1 -1
- package/dist/index31.js +123 -22
- package/dist/index31.js.map +1 -1
- package/dist/index310.js +4 -28
- package/dist/index310.js.map +1 -1
- package/dist/index311.js +56 -13
- package/dist/index311.js.map +1 -1
- package/dist/index312.js +68 -7
- package/dist/index312.js.map +1 -1
- package/dist/index313.js +30 -22
- package/dist/index313.js.map +1 -1
- package/dist/index314.js +9 -13
- package/dist/index314.js.map +1 -1
- package/dist/index315.js +151 -26
- package/dist/index315.js.map +1 -1
- package/dist/index316.js +107 -4
- package/dist/index316.js.map +1 -1
- package/dist/index317.js +26 -0
- package/dist/index317.js.map +1 -0
- package/dist/index318.js +16 -0
- package/dist/index318.js.map +1 -0
- package/dist/index319.js +31 -0
- package/dist/index319.js.map +1 -0
- package/dist/index32.js +230 -49
- package/dist/index32.js.map +1 -1
- package/dist/index320.js +8 -0
- package/dist/index320.js.map +1 -0
- package/dist/index321.js +19 -0
- package/dist/index321.js.map +1 -0
- package/dist/index322.js +32 -0
- package/dist/index322.js.map +1 -0
- package/dist/index323.js +16 -0
- package/dist/index323.js.map +1 -0
- package/dist/index324.js +10 -0
- package/dist/index324.js.map +1 -0
- package/dist/index33.js +20 -2637
- package/dist/index33.js.map +1 -1
- package/dist/index34.js +47 -390
- package/dist/index34.js.map +1 -1
- package/dist/index35.js +2604 -196
- package/dist/index35.js.map +1 -1
- package/dist/index36.js +390 -18
- package/dist/index36.js.map +1 -1
- package/dist/index37.js +222 -131
- package/dist/index37.js.map +1 -1
- package/dist/index38.js +18 -183
- package/dist/index38.js.map +1 -1
- package/dist/index39.js +118 -65
- package/dist/index39.js.map +1 -1
- package/dist/index4.js +17 -15
- package/dist/index4.js.map +1 -1
- package/dist/index40.js +216 -93
- package/dist/index40.js.map +1 -1
- package/dist/index41.js +90 -5
- package/dist/index41.js.map +1 -1
- package/dist/index42.js +115 -840
- package/dist/index42.js.map +1 -1
- package/dist/index43.js +6 -66
- package/dist/index43.js.map +1 -1
- package/dist/index44.js +843 -7
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +57 -2
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +7 -23
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +2 -234
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +11 -6
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +18 -33
- package/dist/index49.js.map +1 -1
- package/dist/index5.js +34 -34
- package/dist/index5.js.map +1 -1
- package/dist/index50.js +7 -26
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +2 -8
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +22 -10
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +233 -3
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +201 -44
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +3 -50
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +6 -7
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +47 -14
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +22 -129
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +50 -10
- package/dist/index59.js.map +1 -1
- package/dist/index6.js +172 -25
- package/dist/index6.js.map +1 -1
- package/dist/index60.js +7 -216
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +15 -13
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +128 -41
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +9 -48
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +216 -3
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +13 -6
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +34 -28
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +46 -49
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +8 -9
- package/dist/index68.js.map +1 -1
- package/dist/index69.js +50 -2
- package/dist/index69.js.map +1 -1
- package/dist/index7.js +31 -29
- package/dist/index7.js.map +1 -1
- package/dist/index70.js +4 -2
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +6 -205
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +28 -54
- package/dist/index72.js.map +1 -1
- package/dist/index73.js +50 -6
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +9 -8
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +2 -6
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +2 -52
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +11 -4
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +5 -4
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +7 -15
- package/dist/index79.js.map +1 -1
- package/dist/index8.js +25 -222
- package/dist/index8.js.map +1 -1
- package/dist/index80.js +5 -5
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +2 -8
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +2 -17
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +53 -4
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +46 -4
- package/dist/index84.js.map +1 -1
- package/dist/index85.js +205 -5
- package/dist/index85.js.map +1 -1
- package/dist/index86.js +22 -6
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +24 -4
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +399 -4
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +46 -6
- package/dist/index89.js.map +1 -1
- package/dist/index9.js +177 -23
- package/dist/index9.js.map +1 -1
- package/dist/index90.js +604 -23
- package/dist/index90.js.map +1 -1
- package/dist/index91.js +52 -7
- package/dist/index91.js.map +1 -1
- package/dist/index92.js +3 -3
- package/dist/index92.js.map +1 -1
- package/dist/index93.js +4 -6
- package/dist/index93.js.map +1 -1
- package/dist/index94.js +15 -5
- package/dist/index94.js.map +1 -1
- package/dist/index95.js +5 -4
- package/dist/index95.js.map +1 -1
- package/dist/index96.js +7 -5
- package/dist/index96.js.map +1 -1
- package/dist/index97.js +16 -4
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +4 -8
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +4 -5
- package/dist/index99.js.map +1 -1
- package/package.json +1 -1
package/dist/index24.js
CHANGED
|
@@ -1,184 +1,269 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
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
|
-
className: r,
|
|
54
|
-
topics: o
|
|
1
|
+
import { j as t } from "./index30.js";
|
|
2
|
+
import { c as H } from "./index28.js";
|
|
3
|
+
import { useContext as Q, createContext as W, useState as T, useMemo as $, useCallback as Z, useEffect as J } from "react";
|
|
4
|
+
import * as F from "@radix-ui/react-dialog";
|
|
5
|
+
import { Trigger as _, Item as K, Root as ee, Portal as te, Content as ne } from "./index54.js";
|
|
6
|
+
import { X as se, Loader2 as oe, MoreVertical as re } from "lucide-react";
|
|
7
|
+
import { cn as P } from "./index2.js";
|
|
8
|
+
const q = (i) => {
|
|
9
|
+
const e = Date.parse(i);
|
|
10
|
+
return Number.isFinite(e) ? e : 0;
|
|
11
|
+
}, ie = (i) => {
|
|
12
|
+
const e = new Date(q(i));
|
|
13
|
+
if (!Number.isFinite(e.getTime())) return "unknown";
|
|
14
|
+
const n = e.getFullYear(), r = String(e.getMonth() + 1).padStart(2, "0"), a = String(e.getDate()).padStart(2, "0");
|
|
15
|
+
return `${n}-${r}-${a}`;
|
|
16
|
+
}, ae = (i) => {
|
|
17
|
+
if (i === "unknown") return "Unknown date";
|
|
18
|
+
const [e, n, r] = i.split("-"), a = Number(e), f = Number(n), s = Number(r);
|
|
19
|
+
if (!Number.isFinite(a) || !Number.isFinite(f) || !Number.isFinite(s)) return "Unknown date";
|
|
20
|
+
const y = new Date(a, f - 1, s);
|
|
21
|
+
if (!Number.isFinite(y.getTime())) return "Unknown date";
|
|
22
|
+
const x = (/* @__PURE__ */ new Date()).getFullYear() !== a;
|
|
23
|
+
return y.toLocaleDateString(void 0, x ? {
|
|
24
|
+
weekday: "short",
|
|
25
|
+
month: "short",
|
|
26
|
+
day: "numeric",
|
|
27
|
+
year: "numeric"
|
|
28
|
+
} : {
|
|
29
|
+
weekday: "short",
|
|
30
|
+
month: "short",
|
|
31
|
+
day: "numeric"
|
|
32
|
+
});
|
|
33
|
+
}, V = (i) => {
|
|
34
|
+
const e = [];
|
|
35
|
+
let n = null;
|
|
36
|
+
for (const r of i) {
|
|
37
|
+
const a = ie(r.createdAt);
|
|
38
|
+
a !== n && (n = a, e.push({
|
|
39
|
+
key: a,
|
|
40
|
+
label: ae(a),
|
|
41
|
+
items: []
|
|
42
|
+
})), e[e.length - 1].items.push(r);
|
|
43
|
+
}
|
|
44
|
+
return e;
|
|
45
|
+
}, le = W(null);
|
|
46
|
+
function he({
|
|
47
|
+
open: i,
|
|
48
|
+
onOpenChange: e,
|
|
49
|
+
className: n,
|
|
50
|
+
limit: r = 50,
|
|
51
|
+
defaultUnreadOnly: a = !1,
|
|
52
|
+
realtimeContext: f
|
|
55
53
|
}) {
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
const s = Q(f ?? le), [y, C] = T([]), [x, h] = T(0), [A, p] = T(0), [S, j] = T(!1), [M, b] = T(null), [c, U] = T(a), v = s?.notifications ?? y, D = s?.unreadCount ?? x, N = s?.unseenCount ?? A, R = s?.loading ?? S, w = s?.error ? s.error instanceof Error ? s.error.message : String(s.error) : M, g = $(() => v.slice(0, r), [r, v]), I = $(() => g.filter((o) => !o.readAt), [g]), E = $(() => g.filter((o) => !!o.readAt), [g]), L = $(() => V(I), [I]), Y = $(() => V(E), [E]), z = Z(async ({
|
|
55
|
+
unreadOnly: o,
|
|
56
|
+
markSeen: d
|
|
57
|
+
}) => {
|
|
58
|
+
j(!0), b(null);
|
|
60
59
|
try {
|
|
61
|
-
const
|
|
62
|
-
method: "
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
60
|
+
const O = await fetch("/api/rb/notifications", {
|
|
61
|
+
method: "POST",
|
|
62
|
+
headers: {
|
|
63
|
+
"Content-Type": "application/json"
|
|
64
|
+
},
|
|
65
|
+
credentials: "include",
|
|
66
|
+
body: JSON.stringify({
|
|
67
|
+
limit: r,
|
|
68
|
+
unreadOnly: o,
|
|
69
|
+
markSeen: d
|
|
70
|
+
})
|
|
71
|
+
}), l = await O.json().catch(() => null);
|
|
72
|
+
if (!O.ok || !l?.ok) {
|
|
73
|
+
b(l?.error || "Unable to load notifications.");
|
|
67
74
|
return;
|
|
68
75
|
}
|
|
69
|
-
const
|
|
70
|
-
h(
|
|
76
|
+
const k = Array.isArray(l.notifications) ? l.notifications : [];
|
|
77
|
+
C(k), h(Number.isFinite(l.unreadCount) ? Math.max(0, Math.floor(l.unreadCount ?? 0)) : 0), p(Number.isFinite(l.unseenCount) ? Math.max(0, Math.floor(l.unseenCount ?? 0)) : 0);
|
|
71
78
|
} catch {
|
|
72
|
-
|
|
79
|
+
b("Unable to load notifications.");
|
|
73
80
|
} finally {
|
|
74
|
-
|
|
81
|
+
j(!1);
|
|
75
82
|
}
|
|
76
|
-
},
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
83
|
+
}, [r]);
|
|
84
|
+
J(() => {
|
|
85
|
+
if (i) {
|
|
86
|
+
if (s) {
|
|
87
|
+
(async () => {
|
|
88
|
+
try {
|
|
89
|
+
await fetch("/api/rb/notifications", {
|
|
90
|
+
method: "POST",
|
|
91
|
+
headers: {
|
|
92
|
+
"Content-Type": "application/json"
|
|
93
|
+
},
|
|
94
|
+
credentials: "include",
|
|
95
|
+
keepalive: !0,
|
|
96
|
+
body: JSON.stringify({
|
|
97
|
+
limit: 1,
|
|
98
|
+
markSeen: !0
|
|
99
|
+
})
|
|
100
|
+
});
|
|
101
|
+
} catch {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
})();
|
|
90
105
|
return;
|
|
91
106
|
}
|
|
92
|
-
|
|
93
|
-
|
|
107
|
+
z({
|
|
108
|
+
unreadOnly: c,
|
|
109
|
+
markSeen: !0
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}, [i, s, z, c]), J(() => {
|
|
113
|
+
i && (s || z({
|
|
114
|
+
unreadOnly: c,
|
|
115
|
+
markSeen: !1
|
|
116
|
+
}));
|
|
117
|
+
}, [i, s, z, c]);
|
|
118
|
+
const B = async (o) => {
|
|
119
|
+
try {
|
|
120
|
+
const d = await fetch(`/api/rb/notifications/${encodeURIComponent(o)}/read`, {
|
|
121
|
+
method: "POST",
|
|
122
|
+
headers: {
|
|
123
|
+
"Content-Type": "application/json"
|
|
124
|
+
},
|
|
125
|
+
credentials: "include",
|
|
126
|
+
keepalive: !0,
|
|
127
|
+
body: "{}"
|
|
128
|
+
}), O = await d.json().catch(() => null);
|
|
129
|
+
if (!d.ok || !O?.ok) return;
|
|
130
|
+
const l = (/* @__PURE__ */ new Date()).toISOString();
|
|
131
|
+
if (s) return;
|
|
132
|
+
C((k) => {
|
|
133
|
+
const m = k.find((u) => u.id === o);
|
|
134
|
+
return m && !m.readAt && h((u) => Math.max(0, u - 1)), m && !m.seenAt && p((u) => Math.max(0, u - 1)), k.map((u) => u.id === o && !u.readAt ? {
|
|
135
|
+
...u,
|
|
136
|
+
readAt: l,
|
|
137
|
+
...u.seenAt ? {} : {
|
|
138
|
+
seenAt: l
|
|
139
|
+
}
|
|
140
|
+
} : u);
|
|
141
|
+
});
|
|
94
142
|
} catch {
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
}, G = async (o) => {
|
|
146
|
+
try {
|
|
147
|
+
const d = await fetch(`/api/rb/notifications/${encodeURIComponent(o)}/archive`, {
|
|
148
|
+
method: "POST",
|
|
149
|
+
headers: {
|
|
150
|
+
"Content-Type": "application/json"
|
|
151
|
+
},
|
|
152
|
+
credentials: "include",
|
|
153
|
+
body: "{}"
|
|
154
|
+
}), O = await d.json().catch(() => null);
|
|
155
|
+
if (!d.ok || !O?.ok || s) return;
|
|
156
|
+
C((l) => {
|
|
157
|
+
const k = l.find((m) => m.id === o);
|
|
158
|
+
return k && !k.readAt && h((m) => Math.max(0, m - 1)), k && !k.seenAt && p((m) => Math.max(0, m - 1)), l.filter((m) => m.id !== o);
|
|
159
|
+
});
|
|
160
|
+
} catch {
|
|
161
|
+
return;
|
|
98
162
|
}
|
|
99
163
|
};
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
/* @__PURE__ */ e.jsx("div", { className: "text-sm font-semibold", children: "Email digest" }),
|
|
113
|
-
/* @__PURE__ */ e.jsx("div", { className: "mt-1 text-xs text-muted-foreground", children: "Choose how often we email you a summary." })
|
|
164
|
+
return /* @__PURE__ */ t.jsx(F.Root, { open: i, onOpenChange: e, children: /* @__PURE__ */ t.jsxs(F.Portal, { children: [
|
|
165
|
+
/* @__PURE__ */ t.jsx(F.Overlay, { className: "fixed inset-0 z-50 bg-black/50" }),
|
|
166
|
+
/* @__PURE__ */ t.jsxs(F.Content, { className: P("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: [
|
|
167
|
+
/* @__PURE__ */ t.jsxs("header", { className: "flex items-center justify-between gap-2 border-b px-4 py-3", children: [
|
|
168
|
+
/* @__PURE__ */ t.jsxs("div", { className: "flex min-w-0 flex-col", children: [
|
|
169
|
+
/* @__PURE__ */ t.jsx(F.Title, { className: "text-sm font-semibold", children: "Notifications" }),
|
|
170
|
+
/* @__PURE__ */ t.jsx("span", { className: "text-xs text-muted-foreground", children: D > 0 ? `${D} unread` : N > 0 ? `${N} new` : "All caught up" })
|
|
171
|
+
] }),
|
|
172
|
+
/* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
173
|
+
/* @__PURE__ */ t.jsx("button", { type: "button", onClick: () => U((o) => !o), className: P("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" }),
|
|
174
|
+
/* @__PURE__ */ t.jsx(F.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(se, { className: "h-4 w-4" }) }) })
|
|
175
|
+
] })
|
|
114
176
|
] }),
|
|
115
|
-
/* @__PURE__ */
|
|
116
|
-
"
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
/* @__PURE__ */ e.jsx("div", { className: "mt-1 text-xs text-muted-foreground", children: "Choose where you receive each topic." })
|
|
132
|
-
] }) }),
|
|
133
|
-
a.length === 0 ? /* @__PURE__ */ e.jsx("div", { className: "mt-4 text-sm text-muted-foreground", children: "No topics configured." }) : /* @__PURE__ */ e.jsx("div", { className: "mt-4 overflow-x-auto", children: /* @__PURE__ */ e.jsxs("table", { className: "w-full text-sm", children: [
|
|
134
|
-
/* @__PURE__ */ e.jsx("thead", { children: /* @__PURE__ */ e.jsxs("tr", { className: "text-left text-xs text-muted-foreground", children: [
|
|
135
|
-
/* @__PURE__ */ e.jsx("th", { className: "py-2 pr-4 font-medium", children: "Topic" }),
|
|
136
|
-
/* @__PURE__ */ e.jsx("th", { className: "py-2 pr-4 font-medium", children: "In-app" }),
|
|
137
|
-
/* @__PURE__ */ e.jsx("th", { className: "py-2 pr-4 font-medium", children: "Email digest" }),
|
|
138
|
-
/* @__PURE__ */ e.jsx("th", { className: "py-2 pr-4 font-medium", children: "Push" })
|
|
139
|
-
] }) }),
|
|
140
|
-
/* @__PURE__ */ e.jsx("tbody", { children: m.topicPreferences.map((t) => {
|
|
141
|
-
const c = a.find((n) => n.topic === t.topic);
|
|
142
|
-
return /* @__PURE__ */ e.jsxs("tr", { className: "border-t align-top", children: [
|
|
143
|
-
/* @__PURE__ */ e.jsx("td", { className: "py-3 pr-4", children: /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
144
|
-
/* @__PURE__ */ e.jsx("span", { className: "font-medium", children: c?.title || t.topic }),
|
|
145
|
-
c?.description ? /* @__PURE__ */ e.jsx("span", { className: "text-xs text-muted-foreground", children: c.description }) : null,
|
|
146
|
-
/* @__PURE__ */ e.jsx("span", { className: "text-[11px] text-muted-foreground", children: t.topic })
|
|
147
|
-
] }) }),
|
|
148
|
-
/* @__PURE__ */ e.jsx("td", { className: "py-3 pr-4", children: /* @__PURE__ */ e.jsx(
|
|
149
|
-
"input",
|
|
150
|
-
{
|
|
151
|
-
type: "checkbox",
|
|
152
|
-
checked: t.inApp,
|
|
153
|
-
onChange: (n) => N(t.topic, (l) => ({ ...l, inApp: n.target.checked }))
|
|
154
|
-
}
|
|
155
|
-
) }),
|
|
156
|
-
/* @__PURE__ */ e.jsx("td", { className: "py-3 pr-4", children: /* @__PURE__ */ e.jsx(
|
|
157
|
-
"input",
|
|
158
|
-
{
|
|
159
|
-
type: "checkbox",
|
|
160
|
-
checked: t.emailDigest,
|
|
161
|
-
onChange: (n) => N(t.topic, (l) => ({ ...l, emailDigest: n.target.checked }))
|
|
162
|
-
}
|
|
163
|
-
) }),
|
|
164
|
-
/* @__PURE__ */ e.jsx("td", { className: "py-3 pr-4", children: /* @__PURE__ */ e.jsx(
|
|
165
|
-
"input",
|
|
166
|
-
{
|
|
167
|
-
type: "checkbox",
|
|
168
|
-
checked: t.push,
|
|
169
|
-
disabled: !0,
|
|
170
|
-
className: "opacity-50",
|
|
171
|
-
"aria-label": "Push notifications (coming soon)"
|
|
172
|
-
}
|
|
173
|
-
) })
|
|
174
|
-
] }, t.topic);
|
|
175
|
-
}) })
|
|
176
|
-
] }) }),
|
|
177
|
-
j ? /* @__PURE__ */ e.jsx("div", { className: "mt-3 text-sm text-destructive", children: j }) : i ? /* @__PURE__ */ e.jsx("div", { className: "mt-3 text-xs text-muted-foreground", children: "Saving…" }) : null
|
|
177
|
+
/* @__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(oe, { className: "h-4 w-4 animate-spin" }) }) : w ? /* @__PURE__ */ t.jsx("div", { className: "py-10 text-center text-sm text-muted-foreground", children: w }) : g.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: [
|
|
178
|
+
/* @__PURE__ */ t.jsxs("div", { children: [
|
|
179
|
+
/* @__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" }),
|
|
180
|
+
L.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No unread notifications." }) : L.map((o) => /* @__PURE__ */ t.jsxs("div", { children: [
|
|
181
|
+
/* @__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: o.label }),
|
|
182
|
+
/* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: o.items.map((d) => /* @__PURE__ */ t.jsx(X, { notification: d, onMarkRead: B, onArchive: G }, d.id)) })
|
|
183
|
+
] }, `unread:${o.key}`))
|
|
184
|
+
] }),
|
|
185
|
+
c ? null : /* @__PURE__ */ t.jsxs("div", { children: [
|
|
186
|
+
/* @__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" }),
|
|
187
|
+
Y.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No previous notifications." }) : Y.map((o) => /* @__PURE__ */ t.jsxs("div", { children: [
|
|
188
|
+
/* @__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: o.label }),
|
|
189
|
+
/* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: o.items.map((d) => /* @__PURE__ */ t.jsx(X, { notification: d, onMarkRead: B, onArchive: G }, d.id)) })
|
|
190
|
+
] }, `previous:${o.key}`))
|
|
191
|
+
] })
|
|
192
|
+
] }) })
|
|
178
193
|
] })
|
|
179
|
-
] });
|
|
194
|
+
] }) });
|
|
195
|
+
}
|
|
196
|
+
function X(i) {
|
|
197
|
+
const e = H.c(43), {
|
|
198
|
+
notification: n,
|
|
199
|
+
onMarkRead: r,
|
|
200
|
+
onArchive: a
|
|
201
|
+
} = i, f = !n.readAt;
|
|
202
|
+
let s;
|
|
203
|
+
if (e[0] !== n.createdAt) {
|
|
204
|
+
e: {
|
|
205
|
+
const I = new Date(q(n.createdAt));
|
|
206
|
+
if (!Number.isFinite(I.getTime())) {
|
|
207
|
+
s = "";
|
|
208
|
+
break e;
|
|
209
|
+
}
|
|
210
|
+
s = I.toLocaleString();
|
|
211
|
+
}
|
|
212
|
+
e[0] = n.createdAt, e[1] = s;
|
|
213
|
+
} else
|
|
214
|
+
s = e[1];
|
|
215
|
+
const y = s, C = f ? "bg-primary/5" : "bg-background";
|
|
216
|
+
let x;
|
|
217
|
+
e[2] !== C ? (x = P("group flex w-full gap-3 px-4 py-3 hover:bg-accent/40", C), e[2] = C, e[3] = x) : x = e[3];
|
|
218
|
+
let h;
|
|
219
|
+
e[4] !== f || e[5] !== n.id || e[6] !== n.url || e[7] !== r ? (h = () => {
|
|
220
|
+
f && r(n.id), n.url && (window.location.href = n.url);
|
|
221
|
+
}, e[4] = f, e[5] = n.id, e[6] = n.url, e[7] = r, e[8] = h) : h = e[8];
|
|
222
|
+
let A;
|
|
223
|
+
e[9] !== n.title ? (A = /* @__PURE__ */ t.jsx("div", { className: "truncate text-sm font-semibold", children: n.title }), e[9] = n.title, e[10] = A) : A = e[10];
|
|
224
|
+
let p;
|
|
225
|
+
e[11] !== n.body ? (p = n.body ? /* @__PURE__ */ t.jsx("div", { className: "mt-0.5 line-clamp-2 text-xs text-muted-foreground", children: n.body }) : null, e[11] = n.body, e[12] = p) : p = e[12];
|
|
226
|
+
let S;
|
|
227
|
+
e[13] !== A || e[14] !== p ? (S = /* @__PURE__ */ t.jsxs("div", { className: "min-w-0", children: [
|
|
228
|
+
A,
|
|
229
|
+
p
|
|
230
|
+
] }), e[13] = A, e[14] = p, e[15] = S) : S = e[15];
|
|
231
|
+
let j;
|
|
232
|
+
e[16] !== n.url ? (j = n.url ? /* @__PURE__ */ t.jsx("div", { className: "mt-2 truncate text-xs text-primary", children: n.url }) : null, e[16] = n.url, e[17] = j) : j = e[17];
|
|
233
|
+
let M;
|
|
234
|
+
e[18] !== y ? (M = y ? /* @__PURE__ */ t.jsx("div", { className: "mt-2 text-[11px] text-muted-foreground", children: y }) : null, e[18] = y, e[19] = M) : M = e[19];
|
|
235
|
+
let b;
|
|
236
|
+
e[20] !== h || e[21] !== S || e[22] !== j || e[23] !== M ? (b = /* @__PURE__ */ t.jsxs("button", { type: "button", className: "min-w-0 flex-1 text-left", onClick: h, children: [
|
|
237
|
+
S,
|
|
238
|
+
j,
|
|
239
|
+
M
|
|
240
|
+
] }), e[20] = h, e[21] = S, e[22] = j, e[23] = M, e[24] = b) : b = e[24];
|
|
241
|
+
let c;
|
|
242
|
+
e[25] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (c = /* @__PURE__ */ t.jsx(_, { 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", "aria-label": "Notification options", children: /* @__PURE__ */ t.jsx(re, { className: "h-4 w-4" }) }) }), e[25] = c) : c = e[25];
|
|
243
|
+
let U;
|
|
244
|
+
e[26] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (U = P("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"), e[26] = U) : U = e[26];
|
|
245
|
+
let v;
|
|
246
|
+
e[27] !== n.id || e[28] !== a ? (v = /* @__PURE__ */ t.jsx(K, { 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", onSelect: () => a(n.id), children: "Archive" }), e[27] = n.id, e[28] = a, e[29] = v) : v = e[29];
|
|
247
|
+
const D = !f;
|
|
248
|
+
let N;
|
|
249
|
+
e[30] !== n.id || e[31] !== r ? (N = () => r(n.id), e[30] = n.id, e[31] = r, e[32] = N) : N = e[32];
|
|
250
|
+
let R;
|
|
251
|
+
e[33] !== D || e[34] !== N ? (R = /* @__PURE__ */ t.jsx(K, { 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", disabled: D, onSelect: N, children: "Mark as read" }), e[33] = D, e[34] = N, e[35] = R) : R = e[35];
|
|
252
|
+
let w;
|
|
253
|
+
e[36] !== v || e[37] !== R ? (w = /* @__PURE__ */ t.jsx("div", { className: "flex items-start", children: /* @__PURE__ */ t.jsxs(ee, { children: [
|
|
254
|
+
c,
|
|
255
|
+
/* @__PURE__ */ t.jsx(te, { children: /* @__PURE__ */ t.jsxs(ne, { align: "end", sideOffset: 6, className: U, children: [
|
|
256
|
+
v,
|
|
257
|
+
R
|
|
258
|
+
] }) })
|
|
259
|
+
] }) }), e[36] = v, e[37] = R, e[38] = w) : w = e[38];
|
|
260
|
+
let g;
|
|
261
|
+
return e[39] !== b || e[40] !== w || e[41] !== x ? (g = /* @__PURE__ */ t.jsxs("div", { className: x, children: [
|
|
262
|
+
b,
|
|
263
|
+
w
|
|
264
|
+
] }), e[39] = b, e[40] = w, e[41] = x, e[42] = g) : g = e[42], g;
|
|
180
265
|
}
|
|
181
266
|
export {
|
|
182
|
-
|
|
267
|
+
he as NotificationsDrawer
|
|
183
268
|
};
|
|
184
269
|
//# sourceMappingURL=index24.js.map
|
package/dist/index24.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index24.js","sources":["../src/components/Notifications/NotificationsSettings.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\"\nimport { Loader2 } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport type { NotificationDigestFrequency, NotificationSettings, NotificationTopicCatalogItem, NotificationTopicPreference } from \"./types\"\n\n\ntype SettingsResponse = {\n ok?: boolean\n error?: string\n settings?: NotificationSettings\n}\n\nconst digestValues: Array<{ value: NotificationDigestFrequency; label: string }> = [\n { value: \"off\", label: \"Off\" },\n { value: \"daily\", label: \"Daily\" },\n { value: \"weekly\", label: \"Weekly\" },\n]\n\nconst normalizeSettings = (settings: NotificationSettings | undefined): NotificationSettings => {\n const digestFrequency = settings?.digestFrequency\n const frequency: NotificationDigestFrequency =\n digestFrequency === \"off\" || digestFrequency === \"daily\" || digestFrequency === \"weekly\"\n ? digestFrequency\n : \"weekly\"\n\n const topicPreferences = Array.isArray(settings?.topicPreferences)\n ? settings!.topicPreferences\n .map((pref) => ({\n topic: typeof pref.topic === \"string\" ? pref.topic.trim() : \"\",\n inApp: pref.inApp === true,\n emailDigest: pref.emailDigest === true,\n push: pref.push === true,\n }))\n .filter((pref) => pref.topic.length > 0)\n : []\n\n return {\n digestFrequency: frequency,\n topicPreferences,\n ...(typeof settings?.lastDigestSentAt === \"string\" ? { lastDigestSentAt: settings.lastDigestSentAt } : {}),\n }\n}\n\nconst normalizeTopics = (topics: NotificationTopicCatalogItem[] | undefined): NotificationTopicCatalogItem[] => {\n if (!Array.isArray(topics)) return []\n\n const seen = new Set<string>()\n return topics\n .map((topic) => ({\n topic: typeof topic.topic === \"string\" ? topic.topic.trim() : \"\",\n title: typeof topic.title === \"string\" ? topic.title.trim() : \"\",\n description: typeof topic.description === \"string\" ? topic.description.trim() : undefined,\n }))\n .filter((topic) => topic.topic.length > 0)\n .filter((topic) => {\n if (seen.has(topic.topic)) return false\n seen.add(topic.topic)\n return true\n })\n}\n\nconst applyTopicsToSettings = (\n settings: NotificationSettings,\n topics: NotificationTopicCatalogItem[],\n): NotificationSettings => {\n const defaults: NotificationTopicPreference = {\n topic: \"\",\n inApp: true,\n emailDigest: true,\n push: false,\n }\n\n const byTopic = new Map(settings.topicPreferences.map((pref) => [pref.topic, pref]))\n return {\n ...settings,\n topicPreferences: topics.map((topic) => {\n const existing = byTopic.get(topic.topic)\n return existing\n ? {\n topic: topic.topic,\n inApp: existing.inApp === true,\n emailDigest: existing.emailDigest === true,\n push: existing.push === true,\n }\n : {\n ...defaults,\n topic: topic.topic,\n }\n }),\n }\n}\n\nexport function NotificationsSettings({\n className,\n topics,\n}: {\n className?: string\n topics?: NotificationTopicCatalogItem[]\n}) {\n const [loading, setLoading] = useState(true)\n const [saving, setSaving] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [settings, setSettings] = useState<NotificationSettings>(() =>\n normalizeSettings({ digestFrequency: \"weekly\", topicPreferences: [] }),\n )\n\n const normalizedTopics = useMemo(() => normalizeTopics(topics), [topics])\n\n const loadSettings = async () => {\n setLoading(true)\n setError(null)\n try {\n const res = await fetch(\"/api/rb/notifications/settings\", {\n method: \"GET\",\n credentials: \"include\",\n })\n const json = (await res.json().catch(() => null)) as SettingsResponse | null\n if (!res.ok || !json?.ok) {\n setError(json?.error || \"Unable to load notification settings.\")\n return\n }\n const normalized = normalizeSettings(json.settings)\n setSettings(normalizedTopics.length > 0 ? applyTopicsToSettings(normalized, normalizedTopics) : normalized)\n } catch {\n setError(\"Unable to load notification settings.\")\n } finally {\n setLoading(false)\n }\n }\n\n const saveSettings = async (next: NotificationSettings) => {\n setSaving(true)\n setError(null)\n try {\n const res = await fetch(\"/api/rb/notifications/settings\", {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n body: JSON.stringify({\n digestFrequency: next.digestFrequency,\n topicPreferences: next.topicPreferences,\n }),\n })\n const json = (await res.json().catch(() => null)) as SettingsResponse | null\n if (!res.ok || !json?.ok) {\n setError(json?.error || \"Unable to save notification settings.\")\n return\n }\n const normalized = normalizeSettings(json.settings)\n setSettings(normalizedTopics.length > 0 ? applyTopicsToSettings(normalized, normalizedTopics) : normalized)\n } catch {\n setError(\"Unable to save notification settings.\")\n } finally {\n setSaving(false)\n }\n }\n\n useEffect(() => {\n void loadSettings()\n }, [])\n\n useEffect(() => {\n if (normalizedTopics.length === 0) return\n setSettings((current) => applyTopicsToSettings(current, normalizedTopics))\n }, [normalizedTopics])\n\n const updatePreference = (topic: string, update: (p: NotificationTopicPreference) => NotificationTopicPreference) => {\n const hasExisting = settings.topicPreferences.some((p) => p.topic === topic)\n const nextPrefs = hasExisting\n ? settings.topicPreferences.map((p) => (p.topic === topic ? update(p) : p))\n : [...settings.topicPreferences, update({ topic, inApp: true, emailDigest: true, push: false })]\n const next = normalizeSettings({ ...settings, topicPreferences: nextPrefs })\n setSettings(next)\n void saveSettings(next)\n }\n\n if (loading) {\n return (\n <div className={cn(\"flex items-center justify-center py-10 text-muted-foreground\", className)}>\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n </div>\n )\n }\n\n return (\n <div className={cn(\"space-y-4\", className)}>\n <div className=\"rounded-md border bg-background p-4\">\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <div className=\"text-sm font-semibold\">Email digest</div>\n <div className=\"mt-1 text-xs text-muted-foreground\">Choose how often we email you a summary.</div>\n </div>\n <select\n value={settings.digestFrequency}\n onChange={(e) => {\n const value = e.target.value as NotificationDigestFrequency\n const next = normalizeSettings({ ...settings, digestFrequency: value })\n setSettings(next)\n void saveSettings(next)\n }}\n className=\"h-9 rounded-md border bg-background px-2 text-sm\"\n >\n {digestValues.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n </div>\n\n <div className=\"rounded-md border bg-background p-4\">\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <div className=\"text-sm font-semibold\">Topics</div>\n <div className=\"mt-1 text-xs text-muted-foreground\">Choose where you receive each topic.</div>\n </div>\n </div>\n\n {normalizedTopics.length === 0 ? (\n <div className=\"mt-4 text-sm text-muted-foreground\">No topics configured.</div>\n ) : (\n <div className=\"mt-4 overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"text-left text-xs text-muted-foreground\">\n <th className=\"py-2 pr-4 font-medium\">Topic</th>\n <th className=\"py-2 pr-4 font-medium\">In-app</th>\n <th className=\"py-2 pr-4 font-medium\">Email digest</th>\n <th className=\"py-2 pr-4 font-medium\">Push</th>\n </tr>\n </thead>\n <tbody>\n {settings.topicPreferences.map((pref) => {\n const meta = normalizedTopics.find((topic) => topic.topic === pref.topic)\n return (\n <tr key={pref.topic} className=\"border-t align-top\">\n <td className=\"py-3 pr-4\">\n <div className=\"flex flex-col gap-1\">\n <span className=\"font-medium\">{meta?.title || pref.topic}</span>\n {meta?.description ? (\n <span className=\"text-xs text-muted-foreground\">{meta.description}</span>\n ) : null}\n <span className=\"text-[11px] text-muted-foreground\">{pref.topic}</span>\n </div>\n </td>\n <td className=\"py-3 pr-4\">\n <input\n type=\"checkbox\"\n checked={pref.inApp}\n onChange={(e) =>\n updatePreference(pref.topic, (p) => ({ ...p, inApp: e.target.checked }))\n }\n />\n </td>\n <td className=\"py-3 pr-4\">\n <input\n type=\"checkbox\"\n checked={pref.emailDigest}\n onChange={(e) =>\n updatePreference(pref.topic, (p) => ({ ...p, emailDigest: e.target.checked }))\n }\n />\n </td>\n <td className=\"py-3 pr-4\">\n <input\n type=\"checkbox\"\n checked={pref.push}\n disabled\n className=\"opacity-50\"\n aria-label=\"Push notifications (coming soon)\"\n />\n </td>\n </tr>\n )\n })}\n </tbody>\n </table>\n </div>\n )}\n\n {error ? (\n <div className=\"mt-3 text-sm text-destructive\">{error}</div>\n ) : saving ? (\n <div className=\"mt-3 text-xs text-muted-foreground\">Saving…</div>\n ) : null}\n </div>\n </div>\n )\n}\n"],"names":["digestValues","normalizeSettings","settings","digestFrequency","frequency","topicPreferences","pref","normalizeTopics","topics","seen","topic","applyTopicsToSettings","defaults","byTopic","existing","NotificationsSettings","className","loading","setLoading","useState","saving","setSaving","error","setError","setSettings","normalizedTopics","useMemo","loadSettings","res","json","normalized","saveSettings","next","useEffect","current","updatePreference","update","nextPrefs","p","jsx","cn","Loader2","jsxs","e","value","opt","meta"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index24.js","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"],"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","isUnread","t1","bb0","toLocaleString","createdAtLabel","t2","t3","t4","url","window","location","href","t5","title","t6","t7","t8","t9","t10","t11","Symbol","for","DropdownMenuPrimitive.Trigger","MoreVertical","t12","t13","t14","t15","t16","t17","DropdownMenuPrimitive.Root","DropdownMenuPrimitive.Content","t18"],"mappings":"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"}
|
package/dist/index240.js
CHANGED
|
@@ -1,34 +1,20 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
function
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} else {
|
|
9
|
-
if (!e.phone)
|
|
10
|
-
return !1;
|
|
11
|
-
if (e.country) {
|
|
12
|
-
if (!r.hasCountry(e.country))
|
|
13
|
-
throw new Error("Unknown country: ".concat(e.country));
|
|
14
|
-
r.selectNumberingPlan(e.country);
|
|
15
|
-
} else {
|
|
16
|
-
if (!e.countryCallingCode)
|
|
17
|
-
throw new Error("Invalid phone number object passed");
|
|
18
|
-
r.selectNumberingPlan(e.countryCallingCode);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
if (r.possibleLengths())
|
|
22
|
-
return s(e.phone || e.nationalNumber, e.country, r);
|
|
23
|
-
if (e.countryCallingCode && r.isNonGeographicCallingCode(e.countryCallingCode))
|
|
24
|
-
return !0;
|
|
25
|
-
throw new Error('Missing "possibleLengths" in metadata. Perhaps the metadata has been generated before v1.0.18.');
|
|
1
|
+
import { DayFlag as s } from "./index131.js";
|
|
2
|
+
var d;
|
|
3
|
+
(function(e) {
|
|
4
|
+
e[e.Today = 0] = "Today", e[e.Selected = 1] = "Selected", e[e.LastFocused = 2] = "LastFocused", e[e.FocusedModifier = 3] = "FocusedModifier";
|
|
5
|
+
})(d || (d = {}));
|
|
6
|
+
function l(e) {
|
|
7
|
+
return !e[s.disabled] && !e[s.hidden] && !e[s.outside];
|
|
26
8
|
}
|
|
27
|
-
function
|
|
28
|
-
|
|
9
|
+
function F(e, u, t, n) {
|
|
10
|
+
let f, c = -1;
|
|
11
|
+
for (const o of e) {
|
|
12
|
+
const a = u(o);
|
|
13
|
+
l(a) && (a[s.focused] && c < d.FocusedModifier ? (f = o, c = d.FocusedModifier) : n?.isEqualTo(o) && c < d.LastFocused ? (f = o, c = d.LastFocused) : t(o.date) && c < d.Selected ? (f = o, c = d.Selected) : a[s.today] && c < d.Today && (f = o, c = d.Today));
|
|
14
|
+
}
|
|
15
|
+
return f || (f = e.find((o) => l(u(o)))), f;
|
|
29
16
|
}
|
|
30
17
|
export {
|
|
31
|
-
|
|
32
|
-
s as isPossibleNumber
|
|
18
|
+
F as calculateFocusTarget
|
|
33
19
|
};
|
|
34
20
|
//# sourceMappingURL=index240.js.map
|