Skip to content

Commit

Permalink
Merge pull request #139 from technologiestiftung/feat-add-weather-info
Browse files Browse the repository at this point in the history
Feat: add weather forecast overlay
  • Loading branch information
hanshack authored Jun 21, 2023
2 parents 1480b47 + ab0ec89 commit 722b716
Show file tree
Hide file tree
Showing 28 changed files with 646 additions and 11 deletions.
1 change: 1 addition & 0 deletions .tsconfig-lint.tsbuildinfo

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2021 Technologiestiftung Berlin
Copyright (c) 2023 Technologiestiftung Berlin

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
7 changes: 4 additions & 3 deletions pages/about.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { Accordion } from '@components/Accordion'
import { CitylabLogo } from '@components/CitylabLogo'
import { OdisLogo } from '@components/OdisLogo'
import { SenWebLogo } from '@components/SenWebLogo'
import { SenatskanzleiLogo } from '@components/SenatskanzleiLogo'

import { TsbLogo } from '@components/TsbLogo'
import {
ABOUT_ACCORDION_ITEMS,
Expand Down Expand Up @@ -58,7 +59,7 @@ export const About: FC = () => (
</div>
<div className="flex flex-col">
<span className="text-sm mb-2">Gefördert von</span>
<SenWebLogo className={focusStyles} />
<SenatskanzleiLogo className={focusStyles} />
</div>
</section>
<footer
Expand All @@ -71,7 +72,7 @@ export const About: FC = () => (
}}
>
<span className="text-xs w-full mb-4">
© 2021 Technologiestiftung Berlin
© 2023 Technologiestiftung Berlin
</span>
<a
href="https://www.technologiestiftung-berlin.de/de/impressum/"
Expand Down
14 changes: 14 additions & 0 deletions src/components/Icons/ClearDay.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import React, { FC, SVGProps } from 'react'

export const ClearDayIcon: FC<SVGProps<SVGSVGElement>> = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="50"
height="50"
fill="#1F2937"
viewBox="0 0 16 16"
{...props}
>
<path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z" />
</svg>
)
15 changes: 15 additions & 0 deletions src/components/Icons/ClearNight.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import React, { FC, SVGProps } from 'react'

export const ClearNightIcon: FC<SVGProps<SVGSVGElement>> = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="50"
height="50"
fill="#1F2937"
viewBox="0 0 16 16"
{...props}
>
<path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278zM4.858 1.311A7.269 7.269 0 0 0 1.025 7.71c0 4.02 3.279 7.276 7.319 7.276a7.316 7.316 0 0 0 5.205-2.162c-.337.042-.68.063-1.029.063-4.61 0-8.343-3.714-8.343-8.29 0-1.167.242-2.278.681-3.286z" />
<path d="M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.734 1.734 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.734 1.734 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.734 1.734 0 0 0 1.097-1.097l.387-1.162zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.156 1.156 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.156 1.156 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732L13.863.1z" />
</svg>
)
14 changes: 14 additions & 0 deletions src/components/Icons/Cloud.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import React, { FC, SVGProps } from 'react'

export const CloudIcon: FC<SVGProps<SVGSVGElement>> = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="#76B3A6"
viewBox="0 0 16 16"
{...props}
>
<path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383zm.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z" />
</svg>
)
15 changes: 15 additions & 0 deletions src/components/Icons/Cloudy.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import React, { FC, SVGProps } from 'react'

export const CloudyIcon: FC<SVGProps<SVGSVGElement>> = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="50"
height="50"
fill="#1F2937"
viewBox="0 0 16 16"
{...props}
>
<path d="M16 7.5a2.5 2.5 0 0 1-1.456 2.272 3.513 3.513 0 0 0-.65-.824 1.5 1.5 0 0 0-.789-2.896.5.5 0 0 1-.627-.421 3 3 0 0 0-5.22-1.625 5.587 5.587 0 0 0-1.276.088 4.002 4.002 0 0 1 7.392.91A2.5 2.5 0 0 1 16 7.5z" />
<path d="M7 5a4.5 4.5 0 0 1 4.473 4h.027a2.5 2.5 0 0 1 0 5H3a3 3 0 0 1-.247-5.99A4.502 4.502 0 0 1 7 5zm3.5 4.5a3.5 3.5 0 0 0-6.89-.873.5.5 0 0 1-.51.375A2 2 0 1 0 3 13h8.5a1.5 1.5 0 1 0-.376-2.953.5.5 0 0 1-.624-.492V9.5z" />
</svg>
)
15 changes: 15 additions & 0 deletions src/components/Icons/PartlyCloudyDay.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import React, { FC, SVGProps } from 'react'

export const PartlyCloudyDayIcon: FC<SVGProps<SVGSVGElement>> = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="50"
height="50"
fill="#1F2937"
viewBox="0 0 16 16"
{...props}
>
<path d="M7 8a3.5 3.5 0 0 1 3.5 3.555.5.5 0 0 0 .624.492A1.503 1.503 0 0 1 13 13.5a1.5 1.5 0 0 1-1.5 1.5H3a2 2 0 1 1 .1-3.998.5.5 0 0 0 .51-.375A3.502 3.502 0 0 1 7 8zm4.473 3a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 16h8.5a2.5 2.5 0 0 0 0-5h-.027z" />
<path d="M10.5 1.5a.5.5 0 0 0-1 0v1a.5.5 0 0 0 1 0v-1zm3.743 1.964a.5.5 0 1 0-.707-.707l-.708.707a.5.5 0 0 0 .708.708l.707-.708zm-7.779-.707a.5.5 0 0 0-.707.707l.707.708a.5.5 0 1 0 .708-.708l-.708-.707zm1.734 3.374a2 2 0 1 1 3.296 2.198c.199.281.372.582.516.898a3 3 0 1 0-4.84-3.225c.352.011.696.055 1.028.129zm4.484 4.074c.6.215 1.125.59 1.522 1.072a.5.5 0 0 0 .039-.742l-.707-.707a.5.5 0 0 0-.854.377zM14.5 6.5a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1z" />
</svg>
)
15 changes: 15 additions & 0 deletions src/components/Icons/PartlyCloudyNight.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import React, { FC, SVGProps } from 'react'

export const PartlyCloudyNightIcon: FC<SVGProps<SVGSVGElement>> = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="50"
height="50"
fill="#1F2937"
viewBox="0 0 16 16"
{...props}
>
<path d="M7 8a3.5 3.5 0 0 1 3.5 3.555.5.5 0 0 0 .625.492A1.503 1.503 0 0 1 13 13.5a1.5 1.5 0 0 1-1.5 1.5H3a2 2 0 1 1 .1-3.998.5.5 0 0 0 .509-.375A3.502 3.502 0 0 1 7 8zm4.473 3a4.5 4.5 0 0 0-8.72-.99A3 3 0 0 0 3 16h8.5a2.5 2.5 0 0 0 0-5h-.027z" />
<path d="M11.286 1.778a.5.5 0 0 0-.565-.755 4.595 4.595 0 0 0-3.18 5.003 5.46 5.46 0 0 1 1.055.209A3.603 3.603 0 0 1 9.83 2.617a4.593 4.593 0 0 0 4.31 5.744 3.576 3.576 0 0 1-2.241.634c.162.317.295.652.394 1a4.59 4.59 0 0 0 3.624-2.04.5.5 0 0 0-.565-.755 3.593 3.593 0 0 1-4.065-5.422z" />
</svg>
)
14 changes: 14 additions & 0 deletions src/components/Icons/Precipitation.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import React, { FC, SVGProps } from 'react'

export const PrecipitationIcon: FC<SVGProps<SVGSVGElement>> = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="#76B3A6"
viewBox="0 0 16 16"
{...props}
>
<path d="M8 0a.5.5 0 0 1 .5.5v.514C12.625 1.238 16 4.22 16 8c0 0 0 .5-.5.5-.149 0-.352-.145-.352-.145l-.004-.004-.025-.023a3.484 3.484 0 0 0-.555-.394A3.166 3.166 0 0 0 13 7.5c-.638 0-1.178.213-1.564.434a3.484 3.484 0 0 0-.555.394l-.025.023-.003.003s-.204.146-.353.146-.352-.145-.352-.145l-.004-.004-.025-.023a3.484 3.484 0 0 0-.555-.394 3.3 3.3 0 0 0-1.064-.39V13.5H8h.5v.039l-.005.083a2.958 2.958 0 0 1-.298 1.102 2.257 2.257 0 0 1-.763.88C7.06 15.851 6.587 16 6 16s-1.061-.148-1.434-.396a2.255 2.255 0 0 1-.763-.88 2.958 2.958 0 0 1-.302-1.185v-.025l-.001-.009v-.003s0-.002.5-.002h-.5V13a.5.5 0 0 1 1 0v.506l.003.044a1.958 1.958 0 0 0 .195.726c.095.191.23.367.423.495.19.127.466.229.879.229s.689-.102.879-.229c.193-.128.328-.304.424-.495a1.958 1.958 0 0 0 .197-.77V7.544a3.3 3.3 0 0 0-1.064.39 3.482 3.482 0 0 0-.58.417l-.004.004S5.65 8.5 5.5 8.5c-.149 0-.352-.145-.352-.145l-.004-.004a3.482 3.482 0 0 0-.58-.417A3.166 3.166 0 0 0 3 7.5c-.638 0-1.177.213-1.564.434a3.482 3.482 0 0 0-.58.417l-.004.004S.65 8.5.5 8.5C0 8.5 0 8 0 8c0-3.78 3.375-6.762 7.5-6.986V.5A.5.5 0 0 1 8 0zM6.577 2.123c-2.833.5-4.99 2.458-5.474 4.854A4.124 4.124 0 0 1 3 6.5c.806 0 1.48.25 1.962.511a9.706 9.706 0 0 1 .344-2.358c.242-.868.64-1.765 1.271-2.53zm-.615 4.93A4.16 4.16 0 0 1 8 6.5a4.16 4.16 0 0 1 2.038.553 8.688 8.688 0 0 0-.307-2.13C9.434 3.858 8.898 2.83 8 2.117c-.898.712-1.434 1.74-1.731 2.804a8.687 8.687 0 0 0-.307 2.131zm3.46-4.93c.631.765 1.03 1.662 1.272 2.53.233.833.328 1.66.344 2.358A4.14 4.14 0 0 1 13 6.5c.77 0 1.42.23 1.897.477-.484-2.396-2.641-4.355-5.474-4.854z" />
</svg>
)
14 changes: 14 additions & 0 deletions src/components/Icons/Pressure.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import React, { FC, SVGProps } from 'react'

export const PressureIcon: FC<SVGProps<SVGSVGElement>> = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="#76B3A6"
viewBox="0 0 16 16"
{...props}
>
<path d="M8.5 4a4.002 4.002 0 0 0-3.8 2.745.5.5 0 1 1-.949-.313 5.002 5.002 0 0 1 9.654.595A3 3 0 0 1 13 13H.5a.5.5 0 0 1 0-1H13a2 2 0 0 0 .001-4h-.026a.5.5 0 0 1-.5-.445A4 4 0 0 0 8.5 4zM0 8.5A.5.5 0 0 1 .5 8h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5z" />
</svg>
)
14 changes: 14 additions & 0 deletions src/components/Icons/Rainy.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import React, { FC, SVGProps } from 'react'

export const RainyIcon: FC<SVGProps<SVGSVGElement>> = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="50"
height="50"
fill="#1F2937"
viewBox="0 0 16 16"
{...props}
>
<path d="M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm-3.5 1.5a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317zm.747-8.498a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973zM8.5 2a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4.002 4.002 0 0 1 8.5 2z" />
</svg>
)
14 changes: 14 additions & 0 deletions src/components/Icons/Thunderstorm.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import React, { FC, SVGProps } from 'react'

export const ThunderstormIcon: FC<SVGProps<SVGSVGElement>> = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="50"
height="50"
fill="#1F2937"
viewBox="0 0 16 16"
{...props}
>
<path d="M2.658 11.026a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm9.5 0a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm-7.5 1.5a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm9.5 0a.5.5 0 0 1 .316.632l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.316zm-.753-8.499a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 10H13a3 3 0 0 0 .405-5.973zM8.5 1a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4.002 4.002 0 0 1 8.5 1zM7.053 11.276A.5.5 0 0 1 7.5 11h1a.5.5 0 0 1 .474.658l-.28.842H9.5a.5.5 0 0 1 .39.812l-2 2.5a.5.5 0 0 1-.875-.433L7.36 14H6.5a.5.5 0 0 1-.447-.724l1-2z" />
</svg>
)
14 changes: 14 additions & 0 deletions src/components/Icons/WindSpeed.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { FC, SVGProps } from 'react'

export const WindSpeedIcon: FC<SVGProps<SVGSVGElement>> = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="#76B3A6"
viewBox="0 0 16 16"
{...props}
>
<path d="M12.5 2A2.5 2.5 0 0 0 10 4.5a.5.5 0 0 1-1 0A3.5 3.5 0 1 1 12.5 8H.5a.5.5 0 0 1 0-1h12a2.5 2.5 0 0 0 0-5zm-7 1a1 1 0 0 0-1 1 .5.5 0 0 1-1 0 2 2 0 1 1 2 2h-5a.5.5 0 0 1 0-1h5a1 1 0 0 0 0-2zM0 9.5A.5.5 0 0 1 .5 9h10.042a3 3 0 1 1-3 3 .5.5 0 0 1 1 0 2 2 0 1 0 2-2H.5a.5.5 0 0 1-.5-.5z" />
</svg>
)
14 changes: 14 additions & 0 deletions src/components/Icons/Windy.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import React, { FC, SVGProps } from 'react'

export const WindyIcon: FC<SVGProps<SVGSVGElement>> = (props) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="50"
height="50"
fill="#1F2937"
viewBox="0 0 16 16"
{...props}
>
<path d="M12.5 2A2.5 2.5 0 0 0 10 4.5a.5.5 0 0 1-1 0A3.5 3.5 0 1 1 12.5 8H.5a.5.5 0 0 1 0-1h12a2.5 2.5 0 0 0 0-5zm-7 1a1 1 0 0 0-1 1 .5.5 0 0 1-1 0 2 2 0 1 1 2 2h-5a.5.5 0 0 1 0-1h5a1 1 0 0 0 0-2zM0 9.5A.5.5 0 0 1 .5 9h10.042a3 3 0 1 1-3 3 .5.5 0 0 1 1 0 2 2 0 1 0 2-2H.5a.5.5 0 0 1-.5-.5z" />
</svg>
)
12 changes: 12 additions & 0 deletions src/components/Icons/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,15 @@ export { WindIcon } from './Wind'
export { TemperatureIcon } from './Temperature'
export { ShadeIcon } from './Shade'
export { ExclamationIcon } from './Exclamation'
export { CloudIcon } from './Cloud'
export { PressureIcon } from './Pressure'
export { PrecipitationIcon } from './Precipitation'
export { WindSpeedIcon } from './WindSpeed'
export { RainyIcon } from './Rainy'
export { CloudyIcon } from './Cloudy'
export { PartlyCloudyDayIcon } from './PartlyCloudyDay'
export { ClearDayIcon } from './ClearDay'
export { WindyIcon } from './Windy'
export { ThunderstormIcon } from './Thunderstorm'
export { ClearNightIcon } from './ClearNight'
export { PartlyCloudyNightIcon } from './PartlyCloudyNight'
2 changes: 1 addition & 1 deletion src/components/MapControls/mapControls.css
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
}

.mapboxgl-ctrl-zoom-in {
margin: 1em 0;
margin: 0.75em 0;
}

.mapboxgl-ctrl-group button:focus {
Expand Down
13 changes: 13 additions & 0 deletions src/components/SenatskanzleiLogo/SenWebLogo.stories.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { Story, Meta } from '@storybook/react'

import { SenatskanzleiLogo } from '.'

export default {
title: 'Brand/SenatskanzleiLogo',
component: SenatskanzleiLogo,
} as Meta

const Template: Story = (args) => <SenatskanzleiLogo {...args} />

export const Default = Template.bind({})
Default.args = {}
9 changes: 9 additions & 0 deletions src/components/SenatskanzleiLogo/SenWebLogo.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { render } from '@testing-library/react'
import React from 'react'
import { SenatskanzleiLogo } from '.'

describe('SenatskanzleiLogo page', () => {
it('renders without crashing', () => {
render(<SenatskanzleiLogo />)
})
})
Loading

1 comment on commit 722b716

@vercel
Copy link

@vercel vercel bot commented on 722b716 Jun 21, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.