@rpcbase/ui 0.224.0 → 0.226.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/components/DayPickerField/index.d.ts.map +1 -1
- package/dist/components/Dialog/index.d.ts +13 -9
- package/dist/components/Dialog/index.d.ts.map +1 -1
- package/dist/components/FilesUploadField/index.d.ts.map +1 -1
- package/dist/components/HourPickerField/index.d.ts.map +1 -1
- package/dist/components/PhoneNumberInput/index.d.ts.map +1 -1
- package/dist/components/PhoneNumberInput/suggestions.d.ts.map +1 -1
- package/dist/components/Select/index.d.ts +16 -10
- package/dist/components/Select/index.d.ts.map +1 -1
- package/dist/index10.js +102 -103
- package/dist/index10.js.map +1 -1
- package/dist/index100.js +11 -4
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +69 -52
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +38 -5
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +14 -5
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +23 -15
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +110 -5
- package/dist/index105.js.map +1 -1
- package/dist/index106.js +13 -8
- package/dist/index106.js.map +1 -1
- package/dist/index107.js +4 -16
- package/dist/index107.js.map +1 -1
- package/dist/index108.js +4 -5
- package/dist/index108.js.map +1 -1
- package/dist/index109.js +5 -5
- package/dist/index109.js.map +1 -1
- package/dist/index110.js +11 -5
- package/dist/index110.js.map +1 -1
- package/dist/index111.js +19 -5
- package/dist/index111.js.map +1 -1
- package/dist/index112.js +13 -5
- package/dist/index112.js.map +1 -1
- package/dist/index113.js +261 -4
- package/dist/index113.js.map +1 -1
- package/dist/index114.js +4 -6
- package/dist/index114.js.map +1 -1
- package/dist/index115.js +28 -25
- package/dist/index115.js.map +1 -1
- package/dist/index116.js +126 -6
- package/dist/index116.js.map +1 -1
- package/dist/index117.js +5 -4
- package/dist/index117.js.map +1 -1
- package/dist/index118.js +78 -6
- package/dist/index118.js.map +1 -1
- package/dist/index119.js +66 -5
- package/dist/index119.js.map +1 -1
- package/dist/index12.js +1 -1
- package/dist/index120.js +8 -4
- package/dist/index120.js.map +1 -1
- package/dist/index121.js +16 -6
- package/dist/index121.js.map +1 -1
- package/dist/index122.js +92 -4
- package/dist/index122.js.map +1 -1
- package/dist/index123.js +65 -8
- package/dist/index123.js.map +1 -1
- package/dist/index124.js +45 -5
- package/dist/index124.js.map +1 -1
- package/dist/index125.js +52 -5
- package/dist/index125.js.map +1 -1
- package/dist/index126.js +4 -4
- package/dist/index126.js.map +1 -1
- package/dist/index127.js +4 -6
- package/dist/index127.js.map +1 -1
- package/dist/index128.js +15 -145
- package/dist/index128.js.map +1 -1
- package/dist/index129.js +5 -39
- package/dist/index129.js.map +1 -1
- package/dist/index130.js +7 -4
- package/dist/index130.js.map +1 -1
- package/dist/index131.js +16 -7
- package/dist/index131.js.map +1 -1
- package/dist/index132.js +4 -13
- package/dist/index132.js.map +1 -1
- package/dist/index133.js +4 -13
- package/dist/index133.js.map +1 -1
- package/dist/index134.js +5 -7
- package/dist/index134.js.map +1 -1
- package/dist/index135.js +5 -31
- package/dist/index135.js.map +1 -1
- package/dist/index136.js +4 -10
- package/dist/index136.js.map +1 -1
- package/dist/index137.js +4 -10
- package/dist/index137.js.map +1 -1
- package/dist/index138.js +6 -8
- package/dist/index138.js.map +1 -1
- package/dist/index139.js +24 -13
- package/dist/index139.js.map +1 -1
- package/dist/index140.js +6 -101
- package/dist/index140.js.map +1 -1
- package/dist/index141.js +5 -20
- package/dist/index141.js.map +1 -1
- package/dist/index142.js +6 -53
- package/dist/index142.js.map +1 -1
- package/dist/index143.js +5 -72
- package/dist/index143.js.map +1 -1
- package/dist/index144.js +4 -9
- package/dist/index144.js.map +1 -1
- package/dist/index145.js +5 -20
- package/dist/index145.js.map +1 -1
- package/dist/index146.js +4 -16
- package/dist/index146.js.map +1 -1
- package/dist/index147.js +8 -23
- package/dist/index147.js.map +1 -1
- package/dist/index148.js +5 -6
- package/dist/index148.js.map +1 -1
- package/dist/index149.js +4 -5
- package/dist/index149.js.map +1 -1
- package/dist/index150.js +3 -22
- package/dist/index150.js.map +1 -1
- package/dist/index151.js +7 -35
- package/dist/index151.js.map +1 -1
- package/dist/index152.js +146 -16
- package/dist/index152.js.map +1 -1
- package/dist/index153.js +39 -6
- package/dist/index153.js.map +1 -1
- package/dist/index154.js +4 -4
- package/dist/index154.js.map +1 -1
- package/dist/index155.js +7 -4
- package/dist/index155.js.map +1 -1
- package/dist/index156.js +13 -4
- package/dist/index156.js.map +1 -1
- package/dist/index157.js +13 -4
- package/dist/index157.js.map +1 -1
- package/dist/index158.js +7 -3
- package/dist/index158.js.map +1 -1
- package/dist/index159.js +31 -6
- package/dist/index159.js.map +1 -1
- package/dist/index16.js +77 -72
- package/dist/index16.js.map +1 -1
- package/dist/index160.js +11 -24
- package/dist/index160.js.map +1 -1
- package/dist/index161.js +10 -7
- package/dist/index161.js.map +1 -1
- package/dist/index162.js +8 -6
- package/dist/index162.js.map +1 -1
- package/dist/index163.js +13 -5
- package/dist/index163.js.map +1 -1
- package/dist/index164.js +101 -3
- package/dist/index164.js.map +1 -1
- package/dist/index165.js +20 -4
- package/dist/index165.js.map +1 -1
- package/dist/index166.js +53 -4
- package/dist/index166.js.map +1 -1
- package/dist/index167.js +72 -3
- package/dist/index167.js.map +1 -1
- package/dist/index168.js +9 -4
- package/dist/index168.js.map +1 -1
- package/dist/index169.js +20 -3
- package/dist/index169.js.map +1 -1
- package/dist/index170.js +16 -3
- package/dist/index170.js.map +1 -1
- package/dist/index171.js +23 -3
- package/dist/index171.js.map +1 -1
- package/dist/index172.js +6 -46
- package/dist/index172.js.map +1 -1
- package/dist/index173.js +5 -229
- package/dist/index173.js.map +1 -1
- package/dist/index174.js +24 -22
- package/dist/index174.js.map +1 -1
- package/dist/index175.js +35 -25
- package/dist/index175.js.map +1 -1
- package/dist/index176.js +16 -401
- package/dist/index176.js.map +1 -1
- package/dist/index177.js +6 -13
- package/dist/index177.js.map +1 -1
- package/dist/index178.js +4 -154
- package/dist/index178.js.map +1 -1
- package/dist/index179.js +4 -30
- package/dist/index179.js.map +1 -1
- package/dist/index18.js +205 -186
- package/dist/index18.js.map +1 -1
- package/dist/index180.js +4 -9
- package/dist/index180.js.map +1 -1
- package/dist/index181.js +4 -48
- package/dist/index181.js.map +1 -1
- package/dist/index182.js +3 -11
- package/dist/index182.js.map +1 -1
- package/dist/index183.js +6 -44
- package/dist/index183.js.map +1 -1
- package/dist/index184.js +24 -96
- package/dist/index184.js.map +1 -1
- package/dist/index185.js +7 -86
- package/dist/index185.js.map +1 -1
- package/dist/index186.js +6 -105
- package/dist/index186.js.map +1 -1
- package/dist/index187.js +5 -52
- package/dist/index187.js.map +1 -1
- package/dist/index188.js +3 -11
- package/dist/index188.js.map +1 -1
- package/dist/index189.js +3 -37
- package/dist/index189.js.map +1 -1
- package/dist/index19.js +280 -208
- package/dist/index19.js.map +1 -1
- package/dist/index190.js +4 -8
- package/dist/index190.js.map +1 -1
- package/dist/index191.js +3 -116
- package/dist/index191.js.map +1 -1
- package/dist/index192.js +4 -17
- package/dist/index192.js.map +1 -1
- package/dist/index193.js +3 -15
- package/dist/index193.js.map +1 -1
- package/dist/index194.js +3 -3
- package/dist/index194.js.map +1 -1
- package/dist/index195.js +3 -36
- package/dist/index195.js.map +1 -1
- package/dist/index196.js +13 -20
- package/dist/index196.js.map +1 -1
- package/dist/index197.js +154 -9
- package/dist/index197.js.map +1 -1
- package/dist/index198.js +30 -8
- package/dist/index198.js.map +1 -1
- package/dist/index199.js +9 -19
- package/dist/index199.js.map +1 -1
- package/dist/index200.js +45 -25
- package/dist/index200.js.map +1 -1
- package/dist/index201.js +11 -16
- package/dist/index201.js.map +1 -1
- package/dist/index202.js +44 -58
- package/dist/index202.js.map +1 -1
- package/dist/index203.js +95 -8
- package/dist/index203.js.map +1 -1
- package/dist/index204.js +81 -61
- package/dist/index204.js.map +1 -1
- package/dist/index205.js +103 -17
- package/dist/index205.js.map +1 -1
- package/dist/index206.js +50 -14
- package/dist/index206.js.map +1 -1
- package/dist/index207.js +10 -4
- package/dist/index207.js.map +1 -1
- package/dist/index208.js +36 -4
- package/dist/index208.js.map +1 -1
- package/dist/index209.js +8 -6
- package/dist/index209.js.map +1 -1
- package/dist/index210.js +116 -4
- package/dist/index210.js.map +1 -1
- package/dist/index211.js +17 -6
- package/dist/index211.js.map +1 -1
- package/dist/index212.js +15 -16
- package/dist/index212.js.map +1 -1
- package/dist/index213.js +3 -4
- package/dist/index213.js.map +1 -1
- package/dist/index214.js +36 -4
- package/dist/index214.js.map +1 -1
- package/dist/index215.js +20 -12
- package/dist/index215.js.map +1 -1
- package/dist/index216.js +9 -9
- package/dist/index216.js.map +1 -1
- package/dist/index217.js +8 -13
- package/dist/index217.js.map +1 -1
- package/dist/index218.js +19 -13
- package/dist/index218.js.map +1 -1
- package/dist/index219.js +28 -4
- package/dist/index219.js.map +1 -1
- package/dist/index220.js +16 -5
- package/dist/index220.js.map +1 -1
- package/dist/index221.js +66 -6
- package/dist/index221.js.map +1 -1
- package/dist/index222.js +8 -5
- package/dist/index222.js.map +1 -1
- package/dist/index223.js +11 -54
- package/dist/index223.js.map +1 -1
- package/dist/index224.js +8 -8
- package/dist/index224.js.map +1 -1
- package/dist/index225.js +5 -4
- package/dist/index225.js.map +1 -1
- package/dist/index226.js +13 -4
- package/dist/index226.js.map +1 -1
- package/dist/index227.js +3 -8
- package/dist/index227.js.map +1 -1
- package/dist/index228.js +3 -4
- package/dist/index228.js.map +1 -1
- package/dist/index229.js +99 -4
- package/dist/index229.js.map +1 -1
- package/dist/index230.js +29 -3
- package/dist/index230.js.map +1 -1
- package/dist/index231.js +51 -10
- package/dist/index231.js.map +1 -1
- package/dist/index232.js +17 -9
- package/dist/index232.js.map +1 -1
- package/dist/index233.js +5 -9
- package/dist/index233.js.map +1 -1
- package/dist/index234.js +122 -10
- package/dist/index234.js.map +1 -1
- package/dist/index235.js +27 -10
- package/dist/index235.js.map +1 -1
- package/dist/index236.js +32 -9
- package/dist/index236.js.map +1 -1
- package/dist/index237.js +73 -6
- package/dist/index237.js.map +1 -1
- package/dist/index238.js +262 -5
- package/dist/index238.js.map +1 -1
- package/dist/index239.js +28 -4
- package/dist/index239.js.map +1 -1
- package/dist/index240.js +6 -5
- package/dist/index240.js.map +1 -1
- package/dist/index241.js +142 -6
- package/dist/index241.js.map +1 -1
- package/dist/index242.js +61 -5
- package/dist/index242.js.map +1 -1
- package/dist/index243.js +49 -16
- package/dist/index243.js.map +1 -1
- package/dist/index244.js +15 -8
- package/dist/index244.js.map +1 -1
- package/dist/index245.js +132 -9
- package/dist/index245.js.map +1 -1
- package/dist/index246.js +7 -9
- package/dist/index246.js.map +1 -1
- package/dist/index247.js +5 -22
- package/dist/index247.js.map +1 -1
- package/dist/index248.js +4 -11
- package/dist/index248.js.map +1 -1
- package/dist/index249.js +11 -9
- package/dist/index249.js.map +1 -1
- package/dist/index250.js +21 -9
- package/dist/index250.js.map +1 -1
- package/dist/index251.js +20 -5
- package/dist/index251.js.map +1 -1
- package/dist/index252.js +11 -5
- package/dist/index252.js.map +1 -1
- package/dist/index253.js +48 -14
- package/dist/index253.js.map +1 -1
- package/dist/index254.js +16 -9
- package/dist/index254.js.map +1 -1
- package/dist/index255.js +21 -18
- package/dist/index255.js.map +1 -1
- package/dist/index256.js +50 -14
- package/dist/index256.js.map +1 -1
- package/dist/index257.js +25 -12
- package/dist/index257.js.map +1 -1
- package/dist/index258.js +41 -29
- package/dist/index258.js.map +1 -1
- package/dist/index259.js +39 -12
- package/dist/index259.js.map +1 -1
- package/dist/index260.js +45 -26
- package/dist/index260.js.map +1 -1
- package/dist/index261.js +20 -5
- package/dist/index261.js.map +1 -1
- package/dist/index262.js +68 -22
- package/dist/index262.js.map +1 -1
- package/dist/index263.js +18 -29
- package/dist/index263.js.map +1 -1
- package/dist/index264.js +12 -5
- package/dist/index264.js.map +1 -1
- package/dist/index265.js +12 -19
- package/dist/index265.js.map +1 -1
- package/dist/index266.js +18 -4
- package/dist/index266.js.map +1 -1
- package/dist/index267.js +36 -17
- package/dist/index267.js.map +1 -1
- package/dist/index268.js +278 -12
- package/dist/index268.js.map +1 -1
- package/dist/index269.js +69 -5
- package/dist/index269.js.map +1 -1
- package/dist/index270.js +84 -3
- package/dist/index270.js.map +1 -1
- package/dist/index271.js +3 -23
- package/dist/index271.js.map +1 -1
- package/dist/index272.js +28 -111
- package/dist/index272.js.map +1 -1
- package/dist/index273.js +16 -15
- package/dist/index273.js.map +1 -1
- package/dist/index274.js +32 -527
- package/dist/index274.js.map +1 -1
- package/dist/index275.js +14 -123
- package/dist/index275.js.map +1 -1
- package/dist/index276.js +3 -133
- package/dist/index276.js.map +1 -1
- package/dist/index277.js +26 -4
- package/dist/index277.js.map +1 -1
- package/dist/index278.js +4 -5
- package/dist/index278.js.map +1 -1
- package/dist/index279.js +79 -4
- package/dist/index279.js.map +1 -1
- package/dist/index28.js +1 -1
- package/dist/index280.js +269 -15
- package/dist/index280.js.map +1 -1
- package/dist/index281.js +11 -8
- package/dist/index281.js.map +1 -1
- package/dist/index282.js +10 -5
- package/dist/index282.js.map +1 -1
- package/dist/index283.js +25 -4
- package/dist/index283.js.map +1 -1
- package/dist/index284.js +16 -545
- package/dist/index284.js.map +1 -1
- package/dist/index285.js +123 -44
- package/dist/index285.js.map +1 -1
- package/dist/index286.js +5 -17
- package/dist/index286.js.map +1 -1
- package/dist/index287.js +40 -5
- package/dist/index287.js.map +1 -1
- package/dist/index288.js +65 -7
- package/dist/index288.js.map +1 -1
- package/dist/index289.js +14 -7
- package/dist/index289.js.map +1 -1
- package/dist/index290.js +7 -7
- package/dist/index290.js.map +1 -1
- package/dist/index291.js +5 -11
- package/dist/index291.js.map +1 -1
- package/dist/index292.js +3 -8
- package/dist/index292.js.map +1 -1
- package/dist/index293.js +10 -12
- package/dist/index293.js.map +1 -1
- package/dist/index294.js +8 -69
- package/dist/index294.js.map +1 -1
- package/dist/index295.js +398 -7
- package/dist/index295.js.map +1 -1
- package/dist/index296.js +53 -14
- package/dist/index296.js.map +1 -1
- package/dist/index297.js +12 -66
- package/dist/index297.js.map +1 -1
- package/dist/index298.js +11 -64
- package/dist/index298.js.map +1 -1
- package/dist/index299.js +58 -4
- package/dist/index299.js.map +1 -1
- package/dist/index30.js +1 -1
- package/dist/index300.js +9 -56
- package/dist/index300.js.map +1 -1
- package/dist/index301.js +66 -67
- package/dist/index301.js.map +1 -1
- package/dist/index302.js +20 -31
- package/dist/index302.js.map +1 -1
- package/dist/index303.js +17 -9
- package/dist/index303.js.map +1 -1
- package/dist/index304.js +5 -152
- package/dist/index304.js.map +1 -1
- package/dist/index305.js +5 -107
- package/dist/index305.js.map +1 -1
- package/dist/index306.js +6 -3
- package/dist/index306.js.map +1 -1
- package/dist/index307.js +4 -22
- package/dist/index307.js.map +1 -1
- package/dist/index308.js +6 -15
- package/dist/index308.js.map +1 -1
- package/dist/index309.js +16 -28
- package/dist/index309.js.map +1 -1
- package/dist/index31.js +227 -120
- package/dist/index31.js.map +1 -1
- package/dist/index310.js +4 -12
- package/dist/index310.js.map +1 -1
- package/dist/index311.js +4 -6
- package/dist/index311.js.map +1 -1
- package/dist/index312.js +13 -23
- package/dist/index312.js.map +1 -1
- package/dist/index313.js +10 -13
- package/dist/index313.js.map +1 -1
- package/dist/index314.js +13 -27
- package/dist/index314.js.map +1 -1
- package/dist/index315.js +14 -5
- package/dist/index315.js.map +1 -1
- package/dist/index316.js +8 -0
- package/dist/index316.js.map +1 -0
- package/dist/index317.js +9 -0
- package/dist/index317.js.map +1 -0
- package/dist/index318.js +10 -0
- package/dist/index318.js.map +1 -0
- package/dist/index319.js +9 -0
- package/dist/index319.js.map +1 -0
- package/dist/index32.js +21 -229
- package/dist/index32.js.map +1 -1
- package/dist/index320.js +58 -0
- package/dist/index320.js.map +1 -0
- package/dist/index321.js +12 -0
- package/dist/index321.js.map +1 -0
- package/dist/index322.js +8 -0
- package/dist/index322.js.map +1 -0
- package/dist/index323.js +8 -0
- package/dist/index323.js.map +1 -0
- package/dist/index324.js +12 -0
- package/dist/index324.js.map +1 -0
- package/dist/index325.js +8 -0
- package/dist/index325.js.map +1 -0
- package/dist/index326.js +8 -0
- package/dist/index326.js.map +1 -0
- package/dist/index327.js +7 -0
- package/dist/index327.js.map +1 -0
- package/dist/index328.js +14 -0
- package/dist/index328.js.map +1 -0
- package/dist/index329.js +13 -0
- package/dist/index329.js.map +1 -0
- package/dist/index33.js +4 -23
- package/dist/index33.js.map +1 -1
- package/dist/index330.js +13 -0
- package/dist/index330.js.map +1 -0
- package/dist/index331.js +14 -0
- package/dist/index331.js.map +1 -0
- package/dist/index332.js +14 -0
- package/dist/index332.js.map +1 -0
- package/dist/index333.js +13 -0
- package/dist/index333.js.map +1 -0
- package/dist/index334.js +10 -0
- package/dist/index334.js.map +1 -0
- package/dist/index335.js +9 -0
- package/dist/index335.js.map +1 -0
- package/dist/index336.js +8 -0
- package/dist/index336.js.map +1 -0
- package/dist/index337.js +9 -0
- package/dist/index337.js.map +1 -0
- package/dist/index338.js +10 -0
- package/dist/index338.js.map +1 -0
- package/dist/index339.js +9 -0
- package/dist/index339.js.map +1 -0
- package/dist/index34.js +62 -51
- package/dist/index34.js.map +1 -1
- package/dist/index340.js +20 -0
- package/dist/index340.js.map +1 -0
- package/dist/index341.js +11 -0
- package/dist/index341.js.map +1 -0
- package/dist/index342.js +14 -0
- package/dist/index342.js.map +1 -0
- package/dist/index343.js +14 -0
- package/dist/index343.js.map +1 -0
- package/dist/index344.js +25 -0
- package/dist/index344.js.map +1 -0
- package/dist/index345.js +14 -0
- package/dist/index345.js.map +1 -0
- package/dist/index346.js +13 -0
- package/dist/index346.js.map +1 -0
- package/dist/index347.js +13 -0
- package/dist/index347.js.map +1 -0
- package/dist/index348.js +8 -0
- package/dist/index348.js.map +1 -0
- package/dist/index349.js +9 -0
- package/dist/index349.js.map +1 -0
- package/dist/index35.js +38 -21
- package/dist/index35.js.map +1 -1
- package/dist/index350.js +20 -0
- package/dist/index350.js.map +1 -0
- package/dist/index351.js +13 -0
- package/dist/index351.js.map +1 -0
- package/dist/index352.js +22 -0
- package/dist/index352.js.map +1 -0
- package/dist/index353.js +19 -0
- package/dist/index353.js.map +1 -0
- package/dist/index354.js +16 -0
- package/dist/index354.js.map +1 -0
- package/dist/index355.js +33 -0
- package/dist/index355.js.map +1 -0
- package/dist/index356.js +16 -0
- package/dist/index356.js.map +1 -0
- package/dist/index357.js +29 -0
- package/dist/index357.js.map +1 -0
- package/dist/index358.js +9 -0
- package/dist/index358.js.map +1 -0
- package/dist/index359.js +24 -0
- package/dist/index359.js.map +1 -0
- package/dist/index36.js +75 -127
- package/dist/index36.js.map +1 -1
- package/dist/index360.js +12 -0
- package/dist/index360.js.map +1 -0
- package/dist/index361.js +29 -0
- package/dist/index361.js.map +1 -0
- package/dist/index362.js +30 -0
- package/dist/index362.js.map +1 -0
- package/dist/index363.js +141 -0
- package/dist/index363.js.map +1 -0
- package/dist/index364.js +16 -0
- package/dist/index364.js.map +1 -0
- package/dist/index365.js +230 -0
- package/dist/index365.js.map +1 -0
- package/dist/index366.js +7 -0
- package/dist/index366.js.map +1 -0
- package/dist/index367.js +23 -0
- package/dist/index367.js.map +1 -0
- package/dist/index368.js +81 -0
- package/dist/index368.js.map +1 -0
- package/dist/index369.js +15 -0
- package/dist/index369.js.map +1 -0
- package/dist/index37.js +22 -221
- package/dist/index37.js.map +1 -1
- package/dist/index370.js +7 -0
- package/dist/index370.js.map +1 -0
- package/dist/index371.js +81 -0
- package/dist/index371.js.map +1 -0
- package/dist/index372.js +204 -0
- package/dist/index372.js.map +1 -0
- package/dist/index373.js +75 -0
- package/dist/index373.js.map +1 -0
- package/dist/index374.js +12 -0
- package/dist/index374.js.map +1 -0
- package/dist/index375.js +20 -0
- package/dist/index375.js.map +1 -0
- package/dist/index376.js +19 -0
- package/dist/index376.js.map +1 -0
- package/dist/index377.js +7 -0
- package/dist/index377.js.map +1 -0
- package/dist/index378.js +15 -0
- package/dist/index378.js.map +1 -0
- package/dist/index379.js +9 -0
- package/dist/index379.js.map +1 -0
- package/dist/index38.js +37 -90
- package/dist/index38.js.map +1 -1
- package/dist/index380.js +24 -0
- package/dist/index380.js.map +1 -0
- package/dist/index381.js +48 -0
- package/dist/index381.js.map +1 -0
- package/dist/index382.js +21 -0
- package/dist/index382.js.map +1 -0
- package/dist/index383.js +8 -0
- package/dist/index383.js.map +1 -0
- package/dist/index384.js +8 -0
- package/dist/index384.js.map +1 -0
- package/dist/index385.js +21 -0
- package/dist/index385.js.map +1 -0
- package/dist/index386.js +16 -0
- package/dist/index386.js.map +1 -0
- package/dist/index387.js +18 -0
- package/dist/index387.js.map +1 -0
- package/dist/index388.js +495 -0
- package/dist/index388.js.map +1 -0
- package/dist/index389.js +6 -0
- package/dist/index389.js.map +1 -0
- package/dist/index39.js +28 -119
- package/dist/index39.js.map +1 -1
- package/dist/index390.js +6 -0
- package/dist/index390.js.map +1 -0
- package/dist/index391.js +8 -0
- package/dist/index391.js.map +1 -0
- package/dist/index392.js +8 -0
- package/dist/index392.js.map +1 -0
- package/dist/index393.js +7 -0
- package/dist/index393.js.map +1 -0
- package/dist/index394.js +19 -0
- package/dist/index394.js.map +1 -0
- package/dist/index395.js +12 -0
- package/dist/index395.js.map +1 -0
- package/dist/index396.js +9 -0
- package/dist/index396.js.map +1 -0
- package/dist/index397.js +8 -0
- package/dist/index397.js.map +1 -0
- package/dist/index398.js +549 -0
- package/dist/index398.js.map +1 -0
- package/dist/index399.js +50 -0
- package/dist/index399.js.map +1 -0
- package/dist/index40.js +23 -6
- package/dist/index40.js.map +1 -1
- package/dist/index400.js +21 -0
- package/dist/index400.js.map +1 -0
- package/dist/index401.js +9 -0
- package/dist/index401.js.map +1 -0
- package/dist/index402.js +11 -0
- package/dist/index402.js.map +1 -0
- package/dist/index403.js +10 -0
- package/dist/index403.js.map +1 -0
- package/dist/index404.js +11 -0
- package/dist/index404.js.map +1 -0
- package/dist/index405.js +15 -0
- package/dist/index405.js.map +1 -0
- package/dist/index406.js +12 -0
- package/dist/index406.js.map +1 -0
- package/dist/index407.js +16 -0
- package/dist/index407.js.map +1 -0
- package/dist/index408.js +11 -0
- package/dist/index408.js.map +1 -0
- package/dist/index409.js +5 -0
- package/dist/index409.js.map +1 -0
- package/dist/index41.js +51 -817
- package/dist/index41.js.map +1 -1
- package/dist/index410.js +47 -0
- package/dist/index410.js.map +1 -0
- package/dist/index411.js +59 -0
- package/dist/index411.js.map +1 -0
- package/dist/index412.js +11 -0
- package/dist/index412.js.map +1 -0
- package/dist/index413.js +5 -0
- package/dist/index413.js.map +1 -0
- package/dist/index414.js +58 -0
- package/dist/index414.js.map +1 -0
- package/dist/index415.js +59 -0
- package/dist/index415.js.map +1 -0
- package/dist/index416.js +8 -0
- package/dist/index416.js.map +1 -0
- package/dist/index417.js +59 -0
- package/dist/index417.js.map +1 -0
- package/dist/index418.js +71 -0
- package/dist/index418.js.map +1 -0
- package/dist/index419.js +34 -0
- package/dist/index419.js.map +1 -0
- package/dist/index42.js +51 -57
- package/dist/index42.js.map +1 -1
- package/dist/index420.js +12 -0
- package/dist/index420.js.map +1 -0
- package/dist/index421.js +156 -0
- package/dist/index421.js.map +1 -0
- package/dist/index422.js +111 -0
- package/dist/index422.js.map +1 -0
- package/dist/index423.js +5 -0
- package/dist/index423.js.map +1 -0
- package/dist/index424.js +5 -0
- package/dist/index424.js.map +1 -0
- package/dist/index425.js +5 -0
- package/dist/index425.js.map +1 -0
- package/dist/index426.js +5 -0
- package/dist/index426.js.map +1 -0
- package/dist/index427.js +19 -0
- package/dist/index427.js.map +1 -0
- package/dist/index428.js +32 -0
- package/dist/index428.js.map +1 -0
- package/dist/index429.js +16 -0
- package/dist/index429.js.map +1 -0
- package/dist/index43.js +21 -7
- package/dist/index43.js.map +1 -1
- package/dist/index430.js +10 -0
- package/dist/index430.js.map +1 -0
- package/dist/index44.js +130 -2
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +221 -11
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +90 -18
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +126 -7
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +6 -2
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +326 -23
- package/dist/index49.js.map +1 -1
- package/dist/index50.js +247 -221
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +27 -2
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +129 -2
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +26 -2
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +23 -2
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +145 -6
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +34 -33
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +28 -48
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +41 -8
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +21 -12
- package/dist/index59.js.map +1 -1
- package/dist/index6.js +84 -85
- package/dist/index6.js.map +1 -1
- package/dist/index60.js +132 -6
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +51 -8
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +30 -6
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +57 -4
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +7 -47
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +2 -51
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +11 -7
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +17 -13
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +7 -133
- package/dist/index68.js.map +1 -1
- package/dist/index69.js +2 -11
- package/dist/index69.js.map +1 -1
- package/dist/index7.js +123 -98
- package/dist/index7.js.map +1 -1
- package/dist/index70.js +22 -215
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +234 -13
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +5 -46
- package/dist/index72.js.map +1 -1
- package/dist/index73.js +7 -49
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +6 -4
- 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 -28
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +2 -50
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +2 -9
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +5 -46
- package/dist/index79.js.map +1 -1
- package/dist/index8.js +53 -54
- package/dist/index8.js.map +1 -1
- package/dist/index80.js +68 -5
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +2 -69
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +364 -2
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +201 -303
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +46 -247
- package/dist/index84.js.map +1 -1
- package/dist/index85.js +42 -56
- package/dist/index85.js.map +1 -1
- package/dist/index86.js +169 -46
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +96 -156
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +24 -109
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +8 -25
- package/dist/index89.js.map +1 -1
- package/dist/index9.js +1 -1
- package/dist/index90.js +5 -8
- package/dist/index90.js.map +1 -1
- package/dist/index91.js +5 -4
- package/dist/index91.js.map +1 -1
- package/dist/index92.js +4 -5
- package/dist/index92.js.map +1 -1
- package/dist/index93.js +466 -4
- package/dist/index93.js.map +1 -1
- package/dist/index94.js +139 -420
- package/dist/index94.js.map +1 -1
- package/dist/index95.js +71 -149
- package/dist/index95.js.map +1 -1
- package/dist/index96.js +229 -74
- package/dist/index96.js.map +1 -1
- package/dist/index97.js +9 -262
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +42 -9
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +4 -42
- package/dist/index99.js.map +1 -1
- package/dist/lib/render-as-child.d.ts +5 -0
- package/dist/lib/render-as-child.d.ts.map +1 -0
- package/package.json +3 -6
- package/dist/lib/react-compose-refs.d.ts +0 -5
- package/dist/lib/react-compose-refs.d.ts.map +0 -1
package/dist/index16.js
CHANGED
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
import { j as t } from "./index30.js";
|
|
2
|
-
import { c as
|
|
3
|
-
import { useContext as
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
2
|
+
import { c as q } from "./index28.js";
|
|
3
|
+
import { useContext as H, useState as T, useMemo as B, useCallback as Q, useEffect as Y, createContext as W, useRef as G } from "react";
|
|
4
|
+
import { X as Z, Loader2 as _, MoreVertical as ee } from "lucide-react";
|
|
5
|
+
import { cn as K } from "./index2.js";
|
|
6
|
+
import { DialogRoot as te } from "./index34.js";
|
|
7
|
+
import { DialogPortal as ne } from "./index39.js";
|
|
8
|
+
import { DialogBackdrop as re } from "./index38.js";
|
|
9
|
+
import { DialogPopup as oe } from "./index36.js";
|
|
10
|
+
import { DialogTitle as se } from "./index40.js";
|
|
11
|
+
import { DialogClose as ie } from "./index35.js";
|
|
12
|
+
const X = (s) => {
|
|
8
13
|
const e = Date.parse(s);
|
|
9
14
|
return Number.isFinite(e) ? e : 0;
|
|
10
|
-
},
|
|
11
|
-
const e = new Date(
|
|
15
|
+
}, ae = (s) => {
|
|
16
|
+
const e = new Date(X(s));
|
|
12
17
|
if (!Number.isFinite(e.getTime())) return "unknown";
|
|
13
18
|
const n = e.getFullYear(), i = String(e.getMonth() + 1).padStart(2, "0"), a = String(e.getDate()).padStart(2, "0");
|
|
14
19
|
return `${n}-${i}-${a}`;
|
|
15
|
-
},
|
|
20
|
+
}, le = (s) => {
|
|
16
21
|
if (s === "unknown") return "Unknown date";
|
|
17
|
-
const [e, n, i] = s.split("-"), a = Number(e),
|
|
18
|
-
if (!Number.isFinite(a) || !Number.isFinite(
|
|
19
|
-
const U = new Date(a,
|
|
22
|
+
const [e, n, i] = s.split("-"), a = Number(e), l = Number(n), o = Number(i);
|
|
23
|
+
if (!Number.isFinite(a) || !Number.isFinite(l) || !Number.isFinite(o)) return "Unknown date";
|
|
24
|
+
const U = new Date(a, l - 1, o);
|
|
20
25
|
if (!Number.isFinite(U.getTime())) return "Unknown date";
|
|
21
26
|
const f = (/* @__PURE__ */ new Date()).getFullYear() !== a;
|
|
22
27
|
return U.toLocaleDateString(void 0, f ? {
|
|
@@ -29,28 +34,28 @@ const q = (s) => {
|
|
|
29
34
|
month: "short",
|
|
30
35
|
day: "numeric"
|
|
31
36
|
});
|
|
32
|
-
},
|
|
37
|
+
}, J = (s) => {
|
|
33
38
|
const e = [];
|
|
34
39
|
let n = null;
|
|
35
40
|
for (const i of s) {
|
|
36
|
-
const a =
|
|
41
|
+
const a = ae(i.createdAt);
|
|
37
42
|
a !== n && (n = a, e.push({
|
|
38
43
|
key: a,
|
|
39
|
-
label:
|
|
44
|
+
label: le(a),
|
|
40
45
|
items: []
|
|
41
46
|
})), e[e.length - 1].items.push(i);
|
|
42
47
|
}
|
|
43
48
|
return e;
|
|
44
|
-
},
|
|
45
|
-
function
|
|
49
|
+
}, ce = W(null);
|
|
50
|
+
function Ne({
|
|
46
51
|
open: s,
|
|
47
52
|
onOpenChange: e,
|
|
48
53
|
className: n,
|
|
49
54
|
limit: i = 50,
|
|
50
55
|
defaultUnreadOnly: a = !1,
|
|
51
|
-
realtimeContext:
|
|
56
|
+
realtimeContext: l
|
|
52
57
|
}) {
|
|
53
|
-
const o =
|
|
58
|
+
const o = H(l ?? ce), [U, A] = T([]), [f, g] = T(0), [F, D] = T(0), [L, $] = T(!1), [S, h] = T(null), [c, M] = T(a), y = o?.notifications ?? U, v = o?.unreadCount ?? f, j = o?.unseenCount ?? F, R = o?.loading ?? L, O = o?.error ? o.error instanceof Error ? o.error.message : String(o.error) : S, p = B(() => y.slice(0, i), [i, y]), N = B(() => p.filter((r) => !r.readAt), [p]), w = B(() => p.filter((r) => !!r.readAt), [p]), k = B(() => J(N), [N]), E = B(() => J(w), [w]), b = Q(async ({
|
|
54
59
|
unreadOnly: r,
|
|
55
60
|
markSeen: u
|
|
56
61
|
}) => {
|
|
@@ -73,14 +78,14 @@ function ue({
|
|
|
73
78
|
return;
|
|
74
79
|
}
|
|
75
80
|
const C = Array.isArray(d.notifications) ? d.notifications : [];
|
|
76
|
-
A(C), g(Number.isFinite(d.unreadCount) ? Math.max(0, Math.floor(d.unreadCount ?? 0)) : 0),
|
|
81
|
+
A(C), g(Number.isFinite(d.unreadCount) ? Math.max(0, Math.floor(d.unreadCount ?? 0)) : 0), D(Number.isFinite(d.unseenCount) ? Math.max(0, Math.floor(d.unseenCount ?? 0)) : 0);
|
|
77
82
|
} catch {
|
|
78
83
|
h("Unable to load notifications.");
|
|
79
84
|
} finally {
|
|
80
85
|
$(!1);
|
|
81
86
|
}
|
|
82
87
|
}, [i]);
|
|
83
|
-
|
|
88
|
+
Y(() => {
|
|
84
89
|
if (s) {
|
|
85
90
|
if (o) {
|
|
86
91
|
(async () => {
|
|
@@ -104,17 +109,17 @@ function ue({
|
|
|
104
109
|
return;
|
|
105
110
|
}
|
|
106
111
|
b({
|
|
107
|
-
unreadOnly:
|
|
112
|
+
unreadOnly: c,
|
|
108
113
|
markSeen: !0
|
|
109
114
|
});
|
|
110
115
|
}
|
|
111
|
-
}, [s, o, b,
|
|
116
|
+
}, [s, o, b, c]), Y(() => {
|
|
112
117
|
s && (o || b({
|
|
113
|
-
unreadOnly:
|
|
118
|
+
unreadOnly: c,
|
|
114
119
|
markSeen: !1
|
|
115
120
|
}));
|
|
116
|
-
}, [s, o, b,
|
|
117
|
-
const
|
|
121
|
+
}, [s, o, b, c]);
|
|
122
|
+
const P = async (r) => {
|
|
118
123
|
try {
|
|
119
124
|
const u = await fetch(`/api/rb/notifications/${encodeURIComponent(r)}/read`, {
|
|
120
125
|
method: "POST",
|
|
@@ -130,7 +135,7 @@ function ue({
|
|
|
130
135
|
if (o) return;
|
|
131
136
|
A((C) => {
|
|
132
137
|
const m = C.find((x) => x.id === r);
|
|
133
|
-
return m && !m.readAt && g((x) => Math.max(0, x - 1)), m && !m.seenAt &&
|
|
138
|
+
return m && !m.readAt && g((x) => Math.max(0, x - 1)), m && !m.seenAt && D((x) => Math.max(0, x - 1)), C.map((x) => x.id === r && !x.readAt ? {
|
|
134
139
|
...x,
|
|
135
140
|
readAt: d,
|
|
136
141
|
...x.seenAt ? {} : {
|
|
@@ -154,54 +159,54 @@ function ue({
|
|
|
154
159
|
if (!u.ok || !I?.ok || o) return;
|
|
155
160
|
A((d) => {
|
|
156
161
|
const C = d.find((m) => m.id === r);
|
|
157
|
-
return C && !C.readAt && g((m) => Math.max(0, m - 1)), C && !C.seenAt &&
|
|
162
|
+
return C && !C.readAt && g((m) => Math.max(0, m - 1)), C && !C.seenAt && D((m) => Math.max(0, m - 1)), d.filter((m) => m.id !== r);
|
|
158
163
|
});
|
|
159
164
|
} catch {
|
|
160
165
|
return;
|
|
161
166
|
}
|
|
162
167
|
};
|
|
163
|
-
return /* @__PURE__ */ t.jsx(
|
|
164
|
-
/* @__PURE__ */ t.jsx(
|
|
165
|
-
/* @__PURE__ */ t.jsxs(
|
|
168
|
+
return /* @__PURE__ */ t.jsx(te, { open: s, onOpenChange: e, children: /* @__PURE__ */ t.jsxs(ne, { children: [
|
|
169
|
+
/* @__PURE__ */ t.jsx(re, { className: "fixed inset-0 z-50 bg-black/50" }),
|
|
170
|
+
/* @__PURE__ */ t.jsxs(oe, { className: K("fixed right-0 top-0 z-50 flex h-full w-full max-w-md flex-col border-l bg-background shadow-xl outline-none", n), children: [
|
|
166
171
|
/* @__PURE__ */ t.jsxs("header", { className: "flex items-center justify-between gap-2 border-b px-4 py-3", children: [
|
|
167
172
|
/* @__PURE__ */ t.jsxs("div", { className: "flex min-w-0 flex-col", children: [
|
|
168
|
-
/* @__PURE__ */ t.jsx(
|
|
173
|
+
/* @__PURE__ */ t.jsx(se, { className: "text-sm font-semibold", children: "Notifications" }),
|
|
169
174
|
/* @__PURE__ */ t.jsx("span", { className: "text-xs text-muted-foreground", children: v > 0 ? `${v} unread` : j > 0 ? `${j} new` : "All caught up" })
|
|
170
175
|
] }),
|
|
171
176
|
/* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
172
|
-
/* @__PURE__ */ t.jsx("button", { type: "button", onClick: () =>
|
|
173
|
-
/* @__PURE__ */ t.jsx(
|
|
177
|
+
/* @__PURE__ */ t.jsx("button", { type: "button", onClick: () => M((r) => !r), className: K("rounded-md border px-2 py-1 text-xs", c ? "bg-accent text-foreground" : "bg-background text-muted-foreground hover:bg-accent"), children: c ? "Unread" : "All" }),
|
|
178
|
+
/* @__PURE__ */ t.jsx(ie, { render: /* @__PURE__ */ t.jsx("button", { type: "button", className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent" }), children: /* @__PURE__ */ t.jsx(Z, { className: "h-4 w-4" }) })
|
|
174
179
|
] })
|
|
175
180
|
] }),
|
|
176
|
-
/* @__PURE__ */ t.jsx("div", { className: "flex-1 overflow-y-auto px-4 pb-3", children:
|
|
181
|
+
/* @__PURE__ */ t.jsx("div", { className: "flex-1 overflow-y-auto px-4 pb-3", children: R ? /* @__PURE__ */ t.jsx("div", { className: "flex items-center justify-center py-10 text-muted-foreground", children: /* @__PURE__ */ t.jsx(_, { className: "h-4 w-4 animate-spin" }) }) : O ? /* @__PURE__ */ t.jsx("div", { className: "py-10 text-center text-sm text-muted-foreground", children: O }) : p.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-10 text-center text-sm text-muted-foreground", children: "No notifications." }) : /* @__PURE__ */ t.jsxs("div", { className: "flex flex-col gap-4", children: [
|
|
177
182
|
/* @__PURE__ */ t.jsxs("div", { children: [
|
|
178
183
|
/* @__PURE__ */ t.jsx("div", { className: "sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground", children: "Unread notifications" }),
|
|
179
184
|
k.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No unread notifications." }) : k.map((r) => /* @__PURE__ */ t.jsxs("div", { children: [
|
|
180
185
|
/* @__PURE__ */ t.jsx("div", { className: "sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground", children: r.label }),
|
|
181
|
-
/* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: r.items.map((u) => /* @__PURE__ */ t.jsx(
|
|
186
|
+
/* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: r.items.map((u) => /* @__PURE__ */ t.jsx(V, { notification: u, onMarkRead: P, onArchive: z }, u.id)) })
|
|
182
187
|
] }, `unread:${r.key}`))
|
|
183
188
|
] }),
|
|
184
|
-
|
|
189
|
+
c ? null : /* @__PURE__ */ t.jsxs("div", { children: [
|
|
185
190
|
/* @__PURE__ */ t.jsx("div", { className: "sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground", children: "Previous notifications" }),
|
|
186
191
|
E.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No previous notifications." }) : E.map((r) => /* @__PURE__ */ t.jsxs("div", { children: [
|
|
187
192
|
/* @__PURE__ */ t.jsx("div", { className: "sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground", children: r.label }),
|
|
188
|
-
/* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: r.items.map((u) => /* @__PURE__ */ t.jsx(
|
|
193
|
+
/* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: r.items.map((u) => /* @__PURE__ */ t.jsx(V, { notification: u, onMarkRead: P, onArchive: z }, u.id)) })
|
|
189
194
|
] }, `previous:${r.key}`))
|
|
190
195
|
] })
|
|
191
196
|
] }) })
|
|
192
197
|
] })
|
|
193
198
|
] }) });
|
|
194
199
|
}
|
|
195
|
-
function
|
|
196
|
-
const e =
|
|
200
|
+
function V(s) {
|
|
201
|
+
const e = q.c(45), {
|
|
197
202
|
notification: n,
|
|
198
203
|
onMarkRead: i,
|
|
199
204
|
onArchive: a
|
|
200
|
-
} = s, [
|
|
205
|
+
} = s, [l, o] = T(!1), U = G(null), A = G(null), f = !n.readAt;
|
|
201
206
|
let g;
|
|
202
207
|
if (e[0] !== n.createdAt) {
|
|
203
208
|
e: {
|
|
204
|
-
const b = new Date(
|
|
209
|
+
const b = new Date(X(n.createdAt));
|
|
205
210
|
if (!Number.isFinite(b.getTime())) {
|
|
206
211
|
g = "";
|
|
207
212
|
break e;
|
|
@@ -212,76 +217,76 @@ function X(s) {
|
|
|
212
217
|
} else
|
|
213
218
|
g = e[1];
|
|
214
219
|
const F = g;
|
|
215
|
-
let
|
|
216
|
-
e[2] !==
|
|
217
|
-
if (!
|
|
220
|
+
let D, L;
|
|
221
|
+
e[2] !== l ? (D = () => {
|
|
222
|
+
if (!l)
|
|
218
223
|
return;
|
|
219
224
|
const b = (z) => {
|
|
220
225
|
const r = z.target;
|
|
221
226
|
r instanceof Node && (U.current?.contains(r) || A.current?.contains(r) || o(!1));
|
|
222
|
-
},
|
|
227
|
+
}, P = (z) => {
|
|
223
228
|
z.key === "Escape" && (o(!1), A.current?.focus());
|
|
224
229
|
};
|
|
225
|
-
return document.addEventListener("pointerdown", b), document.addEventListener("keydown",
|
|
226
|
-
document.removeEventListener("pointerdown", b), document.removeEventListener("keydown",
|
|
230
|
+
return document.addEventListener("pointerdown", b), document.addEventListener("keydown", P), () => {
|
|
231
|
+
document.removeEventListener("pointerdown", b), document.removeEventListener("keydown", P);
|
|
227
232
|
};
|
|
228
|
-
}, L = [
|
|
233
|
+
}, L = [l], e[2] = l, e[3] = D, e[4] = L) : (D = e[3], L = e[4]), Y(D, L);
|
|
229
234
|
const $ = f ? "bg-primary/5" : "bg-background";
|
|
230
|
-
let
|
|
231
|
-
e[5] !== $ ? (
|
|
235
|
+
let S;
|
|
236
|
+
e[5] !== $ ? (S = K("group flex w-full gap-3 px-4 py-3 hover:bg-accent/40", $), e[5] = $, e[6] = S) : S = e[6];
|
|
232
237
|
let h;
|
|
233
238
|
e[7] !== f || e[8] !== n.id || e[9] !== n.url || e[10] !== i ? (h = () => {
|
|
234
239
|
f && i(n.id), n.url && (window.location.href = n.url);
|
|
235
240
|
}, e[7] = f, e[8] = n.id, e[9] = n.url, e[10] = i, e[11] = h) : h = e[11];
|
|
236
|
-
let
|
|
237
|
-
e[12] !== n.title ? (
|
|
238
|
-
let
|
|
239
|
-
e[14] !== n.body ? (
|
|
241
|
+
let c;
|
|
242
|
+
e[12] !== n.title ? (c = /* @__PURE__ */ t.jsx("div", { className: "truncate text-sm font-semibold", children: n.title }), e[12] = n.title, e[13] = c) : c = e[13];
|
|
243
|
+
let M;
|
|
244
|
+
e[14] !== n.body ? (M = n.body ? /* @__PURE__ */ t.jsx("div", { className: "mt-0.5 line-clamp-2 text-xs text-muted-foreground", children: n.body }) : null, e[14] = n.body, e[15] = M) : M = e[15];
|
|
240
245
|
let y;
|
|
241
|
-
e[16] !==
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
] }), e[16] =
|
|
246
|
+
e[16] !== c || e[17] !== M ? (y = /* @__PURE__ */ t.jsxs("div", { className: "min-w-0", children: [
|
|
247
|
+
c,
|
|
248
|
+
M
|
|
249
|
+
] }), e[16] = c, e[17] = M, e[18] = y) : y = e[18];
|
|
245
250
|
let v;
|
|
246
251
|
e[19] !== n.url ? (v = n.url ? /* @__PURE__ */ t.jsx("div", { className: "mt-2 truncate text-xs text-primary", children: n.url }) : null, e[19] = n.url, e[20] = v) : v = e[20];
|
|
247
252
|
let j;
|
|
248
253
|
e[21] !== F ? (j = F ? /* @__PURE__ */ t.jsx("div", { className: "mt-2 text-[11px] text-muted-foreground", children: F }) : null, e[21] = F, e[22] = j) : j = e[22];
|
|
249
|
-
let
|
|
250
|
-
e[23] !== v || e[24] !== j || e[25] !== h || e[26] !== y ? (
|
|
254
|
+
let R;
|
|
255
|
+
e[23] !== v || e[24] !== j || e[25] !== h || e[26] !== y ? (R = /* @__PURE__ */ t.jsxs("button", { type: "button", className: "min-w-0 flex-1 text-left", onClick: h, children: [
|
|
251
256
|
y,
|
|
252
257
|
v,
|
|
253
258
|
j
|
|
254
|
-
] }), e[23] = v, e[24] = j, e[25] = h, e[26] = y, e[27] =
|
|
259
|
+
] }), e[23] = v, e[24] = j, e[25] = h, e[26] = y, e[27] = R) : R = e[27];
|
|
255
260
|
let O, p;
|
|
256
261
|
e[28] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (O = () => {
|
|
257
|
-
o(
|
|
258
|
-
}, p = /* @__PURE__ */ t.jsx(
|
|
262
|
+
o(de);
|
|
263
|
+
}, p = /* @__PURE__ */ t.jsx(ee, { className: "h-4 w-4" }), e[28] = O, e[29] = p) : (O = e[28], p = e[29]);
|
|
259
264
|
let N;
|
|
260
|
-
e[30] !==
|
|
265
|
+
e[30] !== l ? (N = /* @__PURE__ */ t.jsx("button", { ref: A, type: "button", className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent", "aria-label": "Notification options", "aria-haspopup": "menu", "aria-expanded": l, onClick: O, children: p }), e[30] = l, e[31] = N) : N = e[31];
|
|
261
266
|
let w;
|
|
262
|
-
e[32] !== f || e[33] !==
|
|
267
|
+
e[32] !== f || e[33] !== l || e[34] !== n.id || e[35] !== a || e[36] !== i ? (w = l ? /* @__PURE__ */ t.jsxs("div", { ref: U, role: "menu", className: K("absolute right-0 top-full z-50 mt-1 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md", "animate-in fade-in-0 zoom-in-95"), children: [
|
|
263
268
|
/* @__PURE__ */ t.jsx("button", { type: "button", role: "menuitem", className: "relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground", onClick: () => {
|
|
264
269
|
o(!1), a(n.id);
|
|
265
270
|
}, children: "Archive" }),
|
|
266
271
|
/* @__PURE__ */ t.jsx("button", { type: "button", role: "menuitem", className: "relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50", disabled: !f, onClick: () => {
|
|
267
272
|
o(!1), i(n.id);
|
|
268
273
|
}, children: "Mark as read" })
|
|
269
|
-
] }) : null, e[32] = f, e[33] =
|
|
274
|
+
] }) : null, e[32] = f, e[33] = l, e[34] = n.id, e[35] = a, e[36] = i, e[37] = w) : w = e[37];
|
|
270
275
|
let k;
|
|
271
276
|
e[38] !== N || e[39] !== w ? (k = /* @__PURE__ */ t.jsxs("div", { className: "relative flex items-start", children: [
|
|
272
277
|
N,
|
|
273
278
|
w
|
|
274
279
|
] }), e[38] = N, e[39] = w, e[40] = k) : k = e[40];
|
|
275
280
|
let E;
|
|
276
|
-
return e[41] !==
|
|
277
|
-
|
|
281
|
+
return e[41] !== R || e[42] !== k || e[43] !== S ? (E = /* @__PURE__ */ t.jsxs("div", { className: S, children: [
|
|
282
|
+
R,
|
|
278
283
|
k
|
|
279
|
-
] }), e[41] =
|
|
284
|
+
] }), e[41] = R, e[42] = k, e[43] = S, e[44] = E) : E = e[44], E;
|
|
280
285
|
}
|
|
281
|
-
function
|
|
286
|
+
function de(s) {
|
|
282
287
|
return !s;
|
|
283
288
|
}
|
|
284
289
|
export {
|
|
285
|
-
|
|
290
|
+
Ne as NotificationsDrawer
|
|
286
291
|
};
|
|
287
292
|
//# sourceMappingURL=index16.js.map
|
package/dist/index16.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index16.js","sources":["../src/components/Notifications/NotificationsDrawer.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, type Context } from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { Loader2, MoreVertical, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport type { NotificationItem, NotificationsRealtimeState } from \"./types\"\n\n\ntype ListResponse = {\n ok?: boolean\n error?: string\n notifications?: NotificationItem[]\n unreadCount?: number\n unseenCount?: number\n}\n\ntype DayGroup = {\n key: string\n label: string\n items: NotificationItem[]\n}\n\nconst toMs = (iso: string): number => {\n const ms = Date.parse(iso)\n return Number.isFinite(ms) ? ms : 0\n}\n\nconst getDayKey = (iso: string): string => {\n const date = new Date(toMs(iso))\n if (!Number.isFinite(date.getTime())) return \"unknown\"\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, \"0\")\n const day = String(date.getDate()).padStart(2, \"0\")\n\n return `${year}-${month}-${day}`\n}\n\nconst formatDayLabel = (key: string): string => {\n if (key === \"unknown\") return \"Unknown date\"\n const [yearRaw, monthRaw, dayRaw] = key.split(\"-\")\n const year = Number(yearRaw)\n const month = Number(monthRaw)\n const day = Number(dayRaw)\n\n if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) return \"Unknown date\"\n\n const date = new Date(year, month - 1, day)\n if (!Number.isFinite(date.getTime())) return \"Unknown date\"\n\n const now = new Date()\n const includeYear = now.getFullYear() !== year\n return date.toLocaleDateString(undefined, includeYear\n ? { weekday: \"short\", month: \"short\", day: \"numeric\", year: \"numeric\" }\n : { weekday: \"short\", month: \"short\", day: \"numeric\" })\n}\n\nconst groupByDay = (items: NotificationItem[]): DayGroup[] => {\n const groups: DayGroup[] = []\n let currentKey: string | null = null\n\n for (const item of items) {\n const key = getDayKey(item.createdAt)\n if (key !== currentKey) {\n currentKey = key\n groups.push({ key, label: formatDayLabel(key), items: [] })\n }\n groups[groups.length - 1]!.items.push(item)\n }\n\n return groups\n}\n\nconst EmptyRealtimeContext = createContext<NotificationsRealtimeState | null>(null)\n\nexport function NotificationsDrawer({\n open,\n onOpenChange,\n className,\n limit = 50,\n defaultUnreadOnly = false,\n realtimeContext,\n}: {\n open: boolean\n onOpenChange: (open: boolean) => void\n className?: string\n limit?: number\n defaultUnreadOnly?: boolean\n realtimeContext?: Context<NotificationsRealtimeState | null>\n}) {\n const realtime = useContext(realtimeContext ?? EmptyRealtimeContext)\n\n const [items, setItems] = useState<NotificationItem[]>([])\n const [unreadCount, setUnreadCount] = useState<number>(0)\n const [unseenCount, setUnseenCount] = useState<number>(0)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [unreadOnly, setUnreadOnly] = useState<boolean>(defaultUnreadOnly)\n\n const mergedItems = realtime?.notifications ?? items\n const mergedUnreadCount = realtime?.unreadCount ?? unreadCount\n const mergedUnseenCount = realtime?.unseenCount ?? unseenCount\n const mergedLoading = realtime?.loading ?? loading\n const mergedError = realtime?.error\n ? (realtime.error instanceof Error ? realtime.error.message : String(realtime.error))\n : error\n\n const visibleItems = useMemo(() => mergedItems.slice(0, limit), [limit, mergedItems])\n\n const unread = useMemo(() => visibleItems.filter((n) => !n.readAt), [visibleItems])\n const read = useMemo(() => visibleItems.filter((n) => Boolean(n.readAt)), [visibleItems])\n const unreadGroups = useMemo(() => groupByDay(unread), [unread])\n const readGroups = useMemo(() => groupByDay(read), [read])\n\n const refresh = useCallback(async ({ unreadOnly, markSeen }: { unreadOnly: boolean; markSeen: boolean }) => {\n setLoading(true)\n setError(null)\n\n try {\n const res = await fetch(\"/api/rb/notifications\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n body: JSON.stringify({ limit, unreadOnly, markSeen }),\n })\n\n const json = (await res.json().catch(() => null)) as ListResponse | null\n if (!res.ok || !json?.ok) {\n setError(json?.error || \"Unable to load notifications.\")\n return\n }\n\n const nextItems = Array.isArray(json.notifications) ? json.notifications : []\n setItems(nextItems)\n setUnreadCount(Number.isFinite(json.unreadCount) ? Math.max(0, Math.floor(json.unreadCount ?? 0)) : 0)\n setUnseenCount(Number.isFinite(json.unseenCount) ? Math.max(0, Math.floor(json.unseenCount ?? 0)) : 0)\n } catch {\n setError(\"Unable to load notifications.\")\n } finally {\n setLoading(false)\n }\n }, [limit])\n\n useEffect(() => {\n if (!open) return\n if (realtime) {\n void (async () => {\n try {\n await fetch(\"/api/rb/notifications\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n keepalive: true,\n body: JSON.stringify({ limit: 1, markSeen: true }),\n })\n } catch {\n return\n }\n })()\n return\n }\n void refresh({ unreadOnly, markSeen: true })\n }, [open, realtime, refresh, unreadOnly])\n\n useEffect(() => {\n if (!open) return\n if (realtime) return\n void refresh({ unreadOnly, markSeen: false })\n }, [open, realtime, refresh, unreadOnly])\n\n const markAsRead = async (id: string) => {\n try {\n const res = await fetch(`/api/rb/notifications/${encodeURIComponent(id)}/read`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n keepalive: true,\n body: \"{}\",\n })\n\n const json = (await res.json().catch(() => null)) as { ok?: boolean } | null\n if (!res.ok || !json?.ok) return\n\n const nowIso = new Date().toISOString()\n if (realtime) return\n setItems((current) => {\n const target = current.find((n) => n.id === id)\n if (target && !target.readAt) {\n setUnreadCount((count) => Math.max(0, count - 1))\n }\n if (target && !target.seenAt) {\n setUnseenCount((count) => Math.max(0, count - 1))\n }\n return current.map((n) => (n.id === id && !n.readAt ? { ...n, readAt: nowIso, ...(n.seenAt ? {} : { seenAt: nowIso }) } : n))\n })\n } catch {\n return\n }\n }\n\n const archive = async (id: string) => {\n try {\n const res = await fetch(`/api/rb/notifications/${encodeURIComponent(id)}/archive`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n body: \"{}\",\n })\n\n const json = (await res.json().catch(() => null)) as { ok?: boolean } | null\n if (!res.ok || !json?.ok) return\n\n if (realtime) return\n setItems((current) => {\n const target = current.find((n) => n.id === id)\n if (target && !target.readAt) {\n setUnreadCount((count) => Math.max(0, count - 1))\n }\n if (target && !target.seenAt) {\n setUnseenCount((count) => Math.max(0, count - 1))\n }\n return current.filter((n) => n.id !== id)\n })\n } catch {\n return\n }\n }\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className=\"fixed inset-0 z-50 bg-black/50\" />\n <DialogPrimitive.Content\n className={cn(\n \"fixed right-0 top-0 z-50 flex h-full w-full max-w-md flex-col border-l bg-background shadow-xl outline-none\",\n className,\n )}\n >\n <header className=\"flex items-center justify-between gap-2 border-b px-4 py-3\">\n <div className=\"flex min-w-0 flex-col\">\n <DialogPrimitive.Title className=\"text-sm font-semibold\">Notifications</DialogPrimitive.Title>\n <span className=\"text-xs text-muted-foreground\">\n {mergedUnreadCount > 0 ? `${mergedUnreadCount} unread` : mergedUnseenCount > 0 ? `${mergedUnseenCount} new` : \"All caught up\"}\n </span>\n </div>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => setUnreadOnly((v) => !v)}\n className={cn(\n \"rounded-md border px-2 py-1 text-xs\",\n unreadOnly ? \"bg-accent text-foreground\" : \"bg-background text-muted-foreground hover:bg-accent\",\n )}\n >\n {unreadOnly ? \"Unread\" : \"All\"}\n </button>\n <DialogPrimitive.Close asChild>\n <button type=\"button\" className=\"inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent\">\n <X className=\"h-4 w-4\" />\n </button>\n </DialogPrimitive.Close>\n </div>\n </header>\n\n <div className=\"flex-1 overflow-y-auto px-4 pb-3\">\n {mergedLoading ? (\n <div className=\"flex items-center justify-center py-10 text-muted-foreground\">\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n </div>\n ) : mergedError ? (\n <div className=\"py-10 text-center text-sm text-muted-foreground\">{mergedError}</div>\n ) : visibleItems.length === 0 ? (\n <div className=\"py-10 text-center text-sm text-muted-foreground\">No notifications.</div>\n ) : (\n <div className=\"flex flex-col gap-4\">\n <div>\n <div className=\"sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground\">\n Unread notifications\n </div>\n {unreadGroups.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">No unread notifications.</div>\n ) : (\n unreadGroups.map((group) => (\n <div key={`unread:${group.key}`}>\n <div className=\"sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground\">\n {group.label}\n </div>\n <div className=\"-mx-4 flex flex-col divide-y divide-border\">\n {group.items.map((n) => (\n <NotificationRow\n key={n.id}\n notification={n}\n onMarkRead={markAsRead}\n onArchive={archive}\n />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n\n {unreadOnly ? null : (\n <div>\n <div className=\"sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground\">\n Previous notifications\n </div>\n {readGroups.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">No previous notifications.</div>\n ) : (\n readGroups.map((group) => (\n <div key={`previous:${group.key}`}>\n <div className=\"sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground\">\n {group.label}\n </div>\n <div className=\"-mx-4 flex flex-col divide-y divide-border\">\n {group.items.map((n) => (\n <NotificationRow\n key={n.id}\n notification={n}\n onMarkRead={markAsRead}\n onArchive={archive}\n />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n\nfunction NotificationRow({\n notification,\n onMarkRead,\n onArchive,\n}: {\n notification: NotificationItem\n onMarkRead: (id: string) => void\n onArchive: (id: string) => void\n}) {\n const [menuOpen, setMenuOpen] = useState(false)\n const menuRef = useRef<HTMLDivElement | null>(null)\n const menuButtonRef = useRef<HTMLButtonElement | null>(null)\n const isUnread = !notification.readAt\n const createdAtLabel = (() => {\n const date = new Date(toMs(notification.createdAt))\n if (!Number.isFinite(date.getTime())) return \"\"\n return date.toLocaleString()\n })()\n\n useEffect(() => {\n if (!menuOpen) return\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target\n if (!(target instanceof Node)) return\n if (menuRef.current?.contains(target) || menuButtonRef.current?.contains(target)) return\n setMenuOpen(false)\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return\n setMenuOpen(false)\n menuButtonRef.current?.focus()\n }\n\n document.addEventListener(\"pointerdown\", handlePointerDown)\n document.addEventListener(\"keydown\", handleKeyDown)\n\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown)\n document.removeEventListener(\"keydown\", handleKeyDown)\n }\n }, [menuOpen])\n\n return (\n <div\n className={cn(\n \"group flex w-full gap-3 px-4 py-3 hover:bg-accent/40\",\n isUnread ? \"bg-primary/5\" : \"bg-background\",\n )}\n >\n <button\n type=\"button\"\n className=\"min-w-0 flex-1 text-left\"\n onClick={() => {\n if (isUnread) {\n void onMarkRead(notification.id)\n }\n if (notification.url) {\n window.location.href = notification.url\n }\n }}\n >\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold\">{notification.title}</div>\n {notification.body ? (\n <div className=\"mt-0.5 line-clamp-2 text-xs text-muted-foreground\">{notification.body}</div>\n ) : null}\n </div>\n {notification.url ? <div className=\"mt-2 truncate text-xs text-primary\">{notification.url}</div> : null}\n {createdAtLabel ? (\n <div className=\"mt-2 text-[11px] text-muted-foreground\">{createdAtLabel}</div>\n ) : null}\n </button>\n <div className=\"relative flex items-start\">\n <button\n ref={menuButtonRef}\n type=\"button\"\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent\"\n aria-label=\"Notification options\"\n aria-haspopup=\"menu\"\n aria-expanded={menuOpen}\n onClick={() => {\n setMenuOpen((open) => !open)\n }}\n >\n <MoreVertical className=\"h-4 w-4\" />\n </button>\n {menuOpen ? (\n <div\n ref={menuRef}\n role=\"menu\"\n className={cn(\n \"absolute right-0 top-full z-50 mt-1 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"animate-in fade-in-0 zoom-in-95\",\n )}\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground\"\n onClick={() => {\n setMenuOpen(false)\n onArchive(notification.id)\n }}\n >\n Archive\n </button>\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50\"\n disabled={!isUnread}\n onClick={() => {\n setMenuOpen(false)\n onMarkRead(notification.id)\n }}\n >\n Mark as read\n </button>\n </div>\n ) : null}\n </div>\n </div>\n )\n}\n"],"names":["toMs","iso","ms","Date","parse","Number","isFinite","getDayKey","date","getTime","year","getFullYear","month","String","getMonth","padStart","day","getDate","formatDayLabel","key","yearRaw","monthRaw","dayRaw","split","includeYear","toLocaleDateString","undefined","weekday","groupByDay","items","groups","currentKey","item","createdAt","push","label","length","EmptyRealtimeContext","createContext","NotificationsDrawer","open","onOpenChange","className","limit","defaultUnreadOnly","realtimeContext","realtime","useContext","setItems","useState","unreadCount","setUnreadCount","unseenCount","setUnseenCount","loading","setLoading","error","setError","unreadOnly","setUnreadOnly","mergedItems","notifications","mergedUnreadCount","mergedUnseenCount","mergedLoading","mergedError","Error","message","visibleItems","useMemo","slice","unread","filter","n","readAt","read","Boolean","unreadGroups","readGroups","refresh","useCallback","markSeen","res","fetch","method","headers","credentials","body","JSON","stringify","json","catch","ok","nextItems","Array","isArray","Math","max","floor","useEffect","keepalive","markAsRead","id","encodeURIComponent","nowIso","toISOString","current","target","find","count","seenAt","map","archive","jsx","DialogPrimitive","jsxs","cn","v","X","Loader2","group","NotificationRow","t0","$","_c","notification","onMarkRead","onArchive","menuOpen","setMenuOpen","menuRef","useRef","menuButtonRef","isUnread","t1","bb0","toLocaleString","createdAtLabel","t2","t3","handlePointerDown","event","Node","contains","handleKeyDown","event_0","focus","document","addEventListener","removeEventListener","t4","t5","t6","url","window","location","href","t7","title","t8","t9","t10","t11","t12","t13","t14","Symbol","for","_temp","MoreVertical","t15","t16","t17","t18"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index16.js","sources":["../src/components/Notifications/NotificationsDrawer.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, type Context } from \"react\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\nimport { Loader2, MoreVertical, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport type { NotificationItem, NotificationsRealtimeState } from \"./types\"\n\n\ntype ListResponse = {\n ok?: boolean\n error?: string\n notifications?: NotificationItem[]\n unreadCount?: number\n unseenCount?: number\n}\n\ntype DayGroup = {\n key: string\n label: string\n items: NotificationItem[]\n}\n\nconst toMs = (iso: string): number => {\n const ms = Date.parse(iso)\n return Number.isFinite(ms) ? ms : 0\n}\n\nconst getDayKey = (iso: string): string => {\n const date = new Date(toMs(iso))\n if (!Number.isFinite(date.getTime())) return \"unknown\"\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, \"0\")\n const day = String(date.getDate()).padStart(2, \"0\")\n\n return `${year}-${month}-${day}`\n}\n\nconst formatDayLabel = (key: string): string => {\n if (key === \"unknown\") return \"Unknown date\"\n const [yearRaw, monthRaw, dayRaw] = key.split(\"-\")\n const year = Number(yearRaw)\n const month = Number(monthRaw)\n const day = Number(dayRaw)\n\n if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) return \"Unknown date\"\n\n const date = new Date(year, month - 1, day)\n if (!Number.isFinite(date.getTime())) return \"Unknown date\"\n\n const now = new Date()\n const includeYear = now.getFullYear() !== year\n return date.toLocaleDateString(undefined, includeYear\n ? { weekday: \"short\", month: \"short\", day: \"numeric\", year: \"numeric\" }\n : { weekday: \"short\", month: \"short\", day: \"numeric\" })\n}\n\nconst groupByDay = (items: NotificationItem[]): DayGroup[] => {\n const groups: DayGroup[] = []\n let currentKey: string | null = null\n\n for (const item of items) {\n const key = getDayKey(item.createdAt)\n if (key !== currentKey) {\n currentKey = key\n groups.push({ key, label: formatDayLabel(key), items: [] })\n }\n groups[groups.length - 1]!.items.push(item)\n }\n\n return groups\n}\n\nconst EmptyRealtimeContext = createContext<NotificationsRealtimeState | null>(null)\n\nexport function NotificationsDrawer({\n open,\n onOpenChange,\n className,\n limit = 50,\n defaultUnreadOnly = false,\n realtimeContext,\n}: {\n open: boolean\n onOpenChange: (open: boolean) => void\n className?: string\n limit?: number\n defaultUnreadOnly?: boolean\n realtimeContext?: Context<NotificationsRealtimeState | null>\n}) {\n const realtime = useContext(realtimeContext ?? EmptyRealtimeContext)\n\n const [items, setItems] = useState<NotificationItem[]>([])\n const [unreadCount, setUnreadCount] = useState<number>(0)\n const [unseenCount, setUnseenCount] = useState<number>(0)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [unreadOnly, setUnreadOnly] = useState<boolean>(defaultUnreadOnly)\n\n const mergedItems = realtime?.notifications ?? items\n const mergedUnreadCount = realtime?.unreadCount ?? unreadCount\n const mergedUnseenCount = realtime?.unseenCount ?? unseenCount\n const mergedLoading = realtime?.loading ?? loading\n const mergedError = realtime?.error\n ? (realtime.error instanceof Error ? realtime.error.message : String(realtime.error))\n : error\n\n const visibleItems = useMemo(() => mergedItems.slice(0, limit), [limit, mergedItems])\n\n const unread = useMemo(() => visibleItems.filter((n) => !n.readAt), [visibleItems])\n const read = useMemo(() => visibleItems.filter((n) => Boolean(n.readAt)), [visibleItems])\n const unreadGroups = useMemo(() => groupByDay(unread), [unread])\n const readGroups = useMemo(() => groupByDay(read), [read])\n\n const refresh = useCallback(async ({ unreadOnly, markSeen }: { unreadOnly: boolean; markSeen: boolean }) => {\n setLoading(true)\n setError(null)\n\n try {\n const res = await fetch(\"/api/rb/notifications\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n body: JSON.stringify({ limit, unreadOnly, markSeen }),\n })\n\n const json = (await res.json().catch(() => null)) as ListResponse | null\n if (!res.ok || !json?.ok) {\n setError(json?.error || \"Unable to load notifications.\")\n return\n }\n\n const nextItems = Array.isArray(json.notifications) ? json.notifications : []\n setItems(nextItems)\n setUnreadCount(Number.isFinite(json.unreadCount) ? Math.max(0, Math.floor(json.unreadCount ?? 0)) : 0)\n setUnseenCount(Number.isFinite(json.unseenCount) ? Math.max(0, Math.floor(json.unseenCount ?? 0)) : 0)\n } catch {\n setError(\"Unable to load notifications.\")\n } finally {\n setLoading(false)\n }\n }, [limit])\n\n useEffect(() => {\n if (!open) return\n if (realtime) {\n void (async () => {\n try {\n await fetch(\"/api/rb/notifications\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n keepalive: true,\n body: JSON.stringify({ limit: 1, markSeen: true }),\n })\n } catch {\n return\n }\n })()\n return\n }\n void refresh({ unreadOnly, markSeen: true })\n }, [open, realtime, refresh, unreadOnly])\n\n useEffect(() => {\n if (!open) return\n if (realtime) return\n void refresh({ unreadOnly, markSeen: false })\n }, [open, realtime, refresh, unreadOnly])\n\n const markAsRead = async (id: string) => {\n try {\n const res = await fetch(`/api/rb/notifications/${encodeURIComponent(id)}/read`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n keepalive: true,\n body: \"{}\",\n })\n\n const json = (await res.json().catch(() => null)) as { ok?: boolean } | null\n if (!res.ok || !json?.ok) return\n\n const nowIso = new Date().toISOString()\n if (realtime) return\n setItems((current) => {\n const target = current.find((n) => n.id === id)\n if (target && !target.readAt) {\n setUnreadCount((count) => Math.max(0, count - 1))\n }\n if (target && !target.seenAt) {\n setUnseenCount((count) => Math.max(0, count - 1))\n }\n return current.map((n) => (n.id === id && !n.readAt ? { ...n, readAt: nowIso, ...(n.seenAt ? {} : { seenAt: nowIso }) } : n))\n })\n } catch {\n return\n }\n }\n\n const archive = async (id: string) => {\n try {\n const res = await fetch(`/api/rb/notifications/${encodeURIComponent(id)}/archive`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n body: \"{}\",\n })\n\n const json = (await res.json().catch(() => null)) as { ok?: boolean } | null\n if (!res.ok || !json?.ok) return\n\n if (realtime) return\n setItems((current) => {\n const target = current.find((n) => n.id === id)\n if (target && !target.readAt) {\n setUnreadCount((count) => Math.max(0, count - 1))\n }\n if (target && !target.seenAt) {\n setUnseenCount((count) => Math.max(0, count - 1))\n }\n return current.filter((n) => n.id !== id)\n })\n } catch {\n return\n }\n }\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Backdrop className=\"fixed inset-0 z-50 bg-black/50\" />\n <DialogPrimitive.Popup\n className={cn(\n \"fixed right-0 top-0 z-50 flex h-full w-full max-w-md flex-col border-l bg-background shadow-xl outline-none\",\n className,\n )}\n >\n <header className=\"flex items-center justify-between gap-2 border-b px-4 py-3\">\n <div className=\"flex min-w-0 flex-col\">\n <DialogPrimitive.Title className=\"text-sm font-semibold\">Notifications</DialogPrimitive.Title>\n <span className=\"text-xs text-muted-foreground\">\n {mergedUnreadCount > 0 ? `${mergedUnreadCount} unread` : mergedUnseenCount > 0 ? `${mergedUnseenCount} new` : \"All caught up\"}\n </span>\n </div>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => setUnreadOnly((v) => !v)}\n className={cn(\n \"rounded-md border px-2 py-1 text-xs\",\n unreadOnly ? \"bg-accent text-foreground\" : \"bg-background text-muted-foreground hover:bg-accent\",\n )}\n >\n {unreadOnly ? \"Unread\" : \"All\"}\n </button>\n <DialogPrimitive.Close\n render={<button type=\"button\" className=\"inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent\" />}\n >\n <X className=\"h-4 w-4\" />\n </DialogPrimitive.Close>\n </div>\n </header>\n\n <div className=\"flex-1 overflow-y-auto px-4 pb-3\">\n {mergedLoading ? (\n <div className=\"flex items-center justify-center py-10 text-muted-foreground\">\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n </div>\n ) : mergedError ? (\n <div className=\"py-10 text-center text-sm text-muted-foreground\">{mergedError}</div>\n ) : visibleItems.length === 0 ? (\n <div className=\"py-10 text-center text-sm text-muted-foreground\">No notifications.</div>\n ) : (\n <div className=\"flex flex-col gap-4\">\n <div>\n <div className=\"sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground\">\n Unread notifications\n </div>\n {unreadGroups.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">No unread notifications.</div>\n ) : (\n unreadGroups.map((group) => (\n <div key={`unread:${group.key}`}>\n <div className=\"sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground\">\n {group.label}\n </div>\n <div className=\"-mx-4 flex flex-col divide-y divide-border\">\n {group.items.map((n) => (\n <NotificationRow\n key={n.id}\n notification={n}\n onMarkRead={markAsRead}\n onArchive={archive}\n />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n\n {unreadOnly ? null : (\n <div>\n <div className=\"sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground\">\n Previous notifications\n </div>\n {readGroups.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">No previous notifications.</div>\n ) : (\n readGroups.map((group) => (\n <div key={`previous:${group.key}`}>\n <div className=\"sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground\">\n {group.label}\n </div>\n <div className=\"-mx-4 flex flex-col divide-y divide-border\">\n {group.items.map((n) => (\n <NotificationRow\n key={n.id}\n notification={n}\n onMarkRead={markAsRead}\n onArchive={archive}\n />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </DialogPrimitive.Popup>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n\nfunction NotificationRow({\n notification,\n onMarkRead,\n onArchive,\n}: {\n notification: NotificationItem\n onMarkRead: (id: string) => void\n onArchive: (id: string) => void\n}) {\n const [menuOpen, setMenuOpen] = useState(false)\n const menuRef = useRef<HTMLDivElement | null>(null)\n const menuButtonRef = useRef<HTMLButtonElement | null>(null)\n const isUnread = !notification.readAt\n const createdAtLabel = (() => {\n const date = new Date(toMs(notification.createdAt))\n if (!Number.isFinite(date.getTime())) return \"\"\n return date.toLocaleString()\n })()\n\n useEffect(() => {\n if (!menuOpen) return\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target\n if (!(target instanceof Node)) return\n if (menuRef.current?.contains(target) || menuButtonRef.current?.contains(target)) return\n setMenuOpen(false)\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return\n setMenuOpen(false)\n menuButtonRef.current?.focus()\n }\n\n document.addEventListener(\"pointerdown\", handlePointerDown)\n document.addEventListener(\"keydown\", handleKeyDown)\n\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown)\n document.removeEventListener(\"keydown\", handleKeyDown)\n }\n }, [menuOpen])\n\n return (\n <div\n className={cn(\n \"group flex w-full gap-3 px-4 py-3 hover:bg-accent/40\",\n isUnread ? \"bg-primary/5\" : \"bg-background\",\n )}\n >\n <button\n type=\"button\"\n className=\"min-w-0 flex-1 text-left\"\n onClick={() => {\n if (isUnread) {\n void onMarkRead(notification.id)\n }\n if (notification.url) {\n window.location.href = notification.url\n }\n }}\n >\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold\">{notification.title}</div>\n {notification.body ? (\n <div className=\"mt-0.5 line-clamp-2 text-xs text-muted-foreground\">{notification.body}</div>\n ) : null}\n </div>\n {notification.url ? <div className=\"mt-2 truncate text-xs text-primary\">{notification.url}</div> : null}\n {createdAtLabel ? (\n <div className=\"mt-2 text-[11px] text-muted-foreground\">{createdAtLabel}</div>\n ) : null}\n </button>\n <div className=\"relative flex items-start\">\n <button\n ref={menuButtonRef}\n type=\"button\"\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent\"\n aria-label=\"Notification options\"\n aria-haspopup=\"menu\"\n aria-expanded={menuOpen}\n onClick={() => {\n setMenuOpen((open) => !open)\n }}\n >\n <MoreVertical className=\"h-4 w-4\" />\n </button>\n {menuOpen ? (\n <div\n ref={menuRef}\n role=\"menu\"\n className={cn(\n \"absolute right-0 top-full z-50 mt-1 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"animate-in fade-in-0 zoom-in-95\",\n )}\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground\"\n onClick={() => {\n setMenuOpen(false)\n onArchive(notification.id)\n }}\n >\n Archive\n </button>\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50\"\n disabled={!isUnread}\n onClick={() => {\n setMenuOpen(false)\n onMarkRead(notification.id)\n }}\n >\n Mark as read\n </button>\n </div>\n ) : null}\n </div>\n </div>\n )\n}\n"],"names":["toMs","iso","ms","Date","parse","Number","isFinite","getDayKey","date","getTime","year","getFullYear","month","String","getMonth","padStart","day","getDate","formatDayLabel","key","yearRaw","monthRaw","dayRaw","split","includeYear","toLocaleDateString","undefined","weekday","groupByDay","items","groups","currentKey","item","createdAt","push","label","length","EmptyRealtimeContext","createContext","NotificationsDrawer","open","onOpenChange","className","limit","defaultUnreadOnly","realtimeContext","realtime","useContext","setItems","useState","unreadCount","setUnreadCount","unseenCount","setUnseenCount","loading","setLoading","error","setError","unreadOnly","setUnreadOnly","mergedItems","notifications","mergedUnreadCount","mergedUnseenCount","mergedLoading","mergedError","Error","message","visibleItems","useMemo","slice","unread","filter","n","readAt","read","Boolean","unreadGroups","readGroups","refresh","useCallback","markSeen","res","fetch","method","headers","credentials","body","JSON","stringify","json","catch","ok","nextItems","Array","isArray","Math","max","floor","useEffect","keepalive","markAsRead","id","encodeURIComponent","nowIso","toISOString","current","target","find","count","seenAt","map","archive","jsx","DialogPrimitive.Root","jsxs","DialogPrimitive.Portal","DialogPrimitive.Backdrop","DialogPrimitive.Popup","cn","DialogPrimitive.Title","v","DialogPrimitive.Close","X","Loader2","group","NotificationRow","t0","$","_c","notification","onMarkRead","onArchive","menuOpen","setMenuOpen","menuRef","useRef","menuButtonRef","isUnread","t1","bb0","toLocaleString","createdAtLabel","t2","t3","handlePointerDown","event","Node","contains","handleKeyDown","event_0","focus","document","addEventListener","removeEventListener","t4","t5","t6","url","window","location","href","t7","title","t8","t9","t10","t11","t12","t13","t14","Symbol","for","_temp","MoreVertical","t15","t16","t17","t18"],"mappings":"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"}
|
package/dist/index160.js
CHANGED
|
@@ -1,27 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import { labelYearDropdown as h } from "./index171.js";
|
|
1
|
+
function d(o, n, s, a, e) {
|
|
2
|
+
const { startOfMonth: r, startOfYear: c, endOfYear: f, eachMonthOfInterval: l, getMonth: p } = e;
|
|
3
|
+
return l({
|
|
4
|
+
start: c(o),
|
|
5
|
+
end: f(o)
|
|
6
|
+
}).map((t) => {
|
|
7
|
+
const O = a.formatMonthDropdown(t, e), h = p(t), u = n && t < r(n) || s && t > r(s) || !1;
|
|
8
|
+
return { value: h, label: O, disabled: u };
|
|
9
|
+
});
|
|
10
|
+
}
|
|
12
11
|
export {
|
|
13
|
-
|
|
14
|
-
o as labelDay,
|
|
15
|
-
l as labelDayButton,
|
|
16
|
-
b as labelGrid,
|
|
17
|
-
m as labelGridcell,
|
|
18
|
-
f as labelMonthDropdown,
|
|
19
|
-
n as labelNav,
|
|
20
|
-
u as labelNext,
|
|
21
|
-
N as labelPrevious,
|
|
22
|
-
v as labelWeekNumber,
|
|
23
|
-
G as labelWeekNumberHeader,
|
|
24
|
-
y as labelWeekday,
|
|
25
|
-
h as labelYearDropdown
|
|
12
|
+
d as getMonthOptions
|
|
26
13
|
};
|
|
27
14
|
//# sourceMappingURL=index160.js.map
|
package/dist/index160.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index160.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index160.js","sources":["../../../node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js"],"sourcesContent":["/**\n * Returns the months to show in the dropdown.\n *\n * This function generates a list of months for the current year, formatted\n * using the provided formatter, and determines whether each month should be\n * disabled based on the navigation range.\n *\n * @param displayMonth The currently displayed month.\n * @param navStart The start date for navigation.\n * @param navEnd The end date for navigation.\n * @param formatters The formatters to use for formatting the month labels.\n * @param dateLib The date library to use for date manipulation.\n * @returns An array of dropdown options representing the months, or `undefined`\n * if no months are available.\n */\nexport function getMonthOptions(displayMonth, navStart, navEnd, formatters, dateLib) {\n const { startOfMonth, startOfYear, endOfYear, eachMonthOfInterval, getMonth, } = dateLib;\n const months = eachMonthOfInterval({\n start: startOfYear(displayMonth),\n end: endOfYear(displayMonth),\n });\n const options = months.map((month) => {\n const label = formatters.formatMonthDropdown(month, dateLib);\n const value = getMonth(month);\n const disabled = (navStart && month < startOfMonth(navStart)) ||\n (navEnd && month > startOfMonth(navEnd)) ||\n false;\n return { value, label, disabled };\n });\n return options;\n}\n"],"names":["getMonthOptions","displayMonth","navStart","navEnd","formatters","dateLib","startOfMonth","startOfYear","endOfYear","eachMonthOfInterval","getMonth","month","label","value","disabled"],"mappings":"AAeO,SAASA,EAAgBC,GAAcC,GAAUC,GAAQC,GAAYC,GAAS;AACjF,QAAM,EAAE,cAAAC,GAAc,aAAAC,GAAa,WAAAC,GAAW,qBAAAC,GAAqB,UAAAC,EAAQ,IAAML;AAajF,SAZeI,EAAoB;AAAA,IAC/B,OAAOF,EAAYN,CAAY;AAAA,IAC/B,KAAKO,EAAUP,CAAY;AAAA,EACnC,CAAK,EACsB,IAAI,CAACU,MAAU;AAClC,UAAMC,IAAQR,EAAW,oBAAoBO,GAAON,CAAO,GACrDQ,IAAQH,EAASC,CAAK,GACtBG,IAAYZ,KAAYS,IAAQL,EAAaJ,CAAQ,KACtDC,KAAUQ,IAAQL,EAAaH,CAAM,KACtC;AACJ,WAAO,EAAE,OAAAU,GAAO,OAAAD,GAAO,UAAAE,EAAQ;AAAA,EACnC,CAAC;AAEL;","x_google_ignoreList":[0]}
|
package/dist/index161.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
function r
|
|
3
|
-
let e =
|
|
4
|
-
return
|
|
1
|
+
import { UI as f } from "./index165.js";
|
|
2
|
+
function n(r, o = {}, i = {}) {
|
|
3
|
+
let e = { ...o?.[f.Day] };
|
|
4
|
+
return Object.entries(r).filter(([, t]) => t === !0).forEach(([t]) => {
|
|
5
|
+
e = {
|
|
6
|
+
...e,
|
|
7
|
+
...i?.[t]
|
|
8
|
+
};
|
|
9
|
+
}), e;
|
|
5
10
|
}
|
|
6
|
-
const c = r;
|
|
7
11
|
export {
|
|
8
|
-
|
|
9
|
-
r as labelDayButton
|
|
12
|
+
n as getStyleForModifiers
|
|
10
13
|
};
|
|
11
14
|
//# sourceMappingURL=index161.js.map
|
package/dist/index161.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index161.js","sources":["../../../node_modules/react-day-picker/dist/esm/
|
|
1
|
+
{"version":3,"file":"index161.js","sources":["../../../node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js"],"sourcesContent":["import { UI } from \"../UI.js\";\n/**\n * Returns the computed style for a day based on its modifiers.\n *\n * This function merges the base styles for the day with any styles associated\n * with active modifiers.\n *\n * @param dayModifiers The modifiers applied to the day.\n * @param styles The base styles for the calendar elements.\n * @param modifiersStyles The styles associated with specific modifiers.\n * @returns The computed style for the day.\n */\nexport function getStyleForModifiers(dayModifiers, styles = {}, modifiersStyles = {}) {\n let style = { ...styles?.[UI.Day] };\n Object.entries(dayModifiers)\n .filter(([, active]) => active === true)\n .forEach(([modifier]) => {\n style = {\n ...style,\n ...modifiersStyles?.[modifier],\n };\n });\n return style;\n}\n"],"names":["getStyleForModifiers","dayModifiers","styles","modifiersStyles","style","UI","active","modifier"],"mappings":";AAYO,SAASA,EAAqBC,GAAcC,IAAS,CAAA,GAAIC,IAAkB,CAAA,GAAI;AAClF,MAAIC,IAAQ,EAAE,GAAGF,IAASG,EAAG,GAAG,EAAC;AACjC,gBAAO,QAAQJ,CAAY,EACtB,OAAO,CAAC,CAAA,EAAGK,CAAM,MAAMA,MAAW,EAAI,EACtC,QAAQ,CAAC,CAACC,CAAQ,MAAM;AACzB,IAAAH,IAAQ;AAAA,MACJ,GAAGA;AAAA,MACH,GAAGD,IAAkBI,CAAQ;AAAA,IACzC;AAAA,EACI,CAAC,GACMH;AACX;","x_google_ignoreList":[0]}
|
package/dist/index162.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
function y(t, o, a, n) {
|
|
2
|
+
const s = n ?? t.today(), c = a ? t.startOfBroadcastWeek(s, t) : o ? t.startOfISOWeek(s) : t.startOfWeek(s), r = [];
|
|
3
|
+
for (let e = 0; e < 7; e++) {
|
|
4
|
+
const f = t.addDays(c, e);
|
|
5
|
+
r.push(f);
|
|
6
|
+
}
|
|
7
|
+
return r;
|
|
4
8
|
}
|
|
5
|
-
const l = e;
|
|
6
9
|
export {
|
|
7
|
-
|
|
8
|
-
e as labelGrid
|
|
10
|
+
y as getWeekdays
|
|
9
11
|
};
|
|
10
12
|
//# sourceMappingURL=index162.js.map
|
package/dist/index162.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index162.js","sources":["../../../node_modules/react-day-picker/dist/esm/
|
|
1
|
+
{"version":3,"file":"index162.js","sources":["../../../node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js"],"sourcesContent":["/**\n * Generates a series of 7 days, starting from the beginning of the week, to use\n * for formatting weekday names (e.g., Monday, Tuesday, etc.).\n *\n * @param dateLib The date library to use for date manipulation.\n * @param ISOWeek Whether to use ISO week numbering (weeks start on Monday).\n * @param broadcastCalendar Whether to use the broadcast calendar (weeks start\n * on Monday, but may include adjustments for broadcast-specific rules).\n * @returns An array of 7 dates representing the weekdays.\n */\nexport function getWeekdays(dateLib, ISOWeek, broadcastCalendar, today) {\n const referenceToday = today ?? dateLib.today();\n const start = broadcastCalendar\n ? dateLib.startOfBroadcastWeek(referenceToday, dateLib)\n : ISOWeek\n ? dateLib.startOfISOWeek(referenceToday)\n : dateLib.startOfWeek(referenceToday);\n const days = [];\n for (let i = 0; i < 7; i++) {\n const day = dateLib.addDays(start, i);\n days.push(day);\n }\n return days;\n}\n"],"names":["getWeekdays","dateLib","ISOWeek","broadcastCalendar","today","referenceToday","start","days","i","day"],"mappings":"AAUO,SAASA,EAAYC,GAASC,GAASC,GAAmBC,GAAO;AACpE,QAAMC,IAAiBD,KAASH,EAAQ,MAAK,GACvCK,IAAQH,IACRF,EAAQ,qBAAqBI,GAAgBJ,CAAO,IACpDC,IACID,EAAQ,eAAeI,CAAc,IACrCJ,EAAQ,YAAYI,CAAc,GACtCE,IAAO,CAAA;AACb,WAASC,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB,UAAMC,IAAMR,EAAQ,QAAQK,GAAOE,CAAC;AACpC,IAAAD,EAAK,KAAKE,CAAG;AAAA,EACjB;AACA,SAAOF;AACX;","x_google_ignoreList":[0]}
|