({ hideAnnouncement }: AnnouncementProps)
| 23 | */ |
| 24 | |
| 25 | const Announcement = ({ hideAnnouncement }: AnnouncementProps) => { |
| 26 | const { t } = useAppTranslation() |
| 27 | const [open, setOpen] = useState(true) |
| 28 | |
| 29 | return ( |
| 30 | <Dialog |
| 31 | open={open} |
| 32 | onOpenChange={(open) => { |
| 33 | setOpen(open) |
| 34 | |
| 35 | if (!open) { |
| 36 | hideAnnouncement() |
| 37 | } |
| 38 | }}> |
| 39 | <DialogContent> |
| 40 | <DialogHeader> |
| 41 | <DialogTitle>{t("chat:announcement.title", { version: Package.version })}</DialogTitle> |
| 42 | </DialogHeader> |
| 43 | <div> |
| 44 | <div className="mb-4"> |
| 45 | <p className="mb-3">{t("chat:announcement.release.heading")}</p> |
| 46 | <ul className="list-disc list-inside text-sm space-y-1.5"> |
| 47 | <li>{t("chat:announcement.release.highlight1")}</li> |
| 48 | <li>{t("chat:announcement.release.highlight2")}</li> |
| 49 | <li>{t("chat:announcement.release.highlight3")}</li> |
| 50 | </ul> |
| 51 | </div> |
| 52 | |
| 53 | <div className="mt-4 text-sm text-center text-vscode-descriptionForeground"> |
| 54 | <div className="flex items-center justify-center gap-4"> |
| 55 | <SocialLink |
| 56 | icon={<SiX className="w-4 h-4" aria-hidden />} |
| 57 | label="X" |
| 58 | href="https://x.com/ZooCodeDev" |
| 59 | /> |
| 60 | <SocialLink |
| 61 | icon={<SiDiscord className="w-4 h-4" aria-hidden />} |
| 62 | label="Discord" |
| 63 | href="https://discord.gg/VxfP4Vx3gX" |
| 64 | /> |
| 65 | <SocialLink |
| 66 | icon={<SiReddit className="w-4 h-4" aria-hidden />} |
| 67 | label="Reddit" |
| 68 | href="https://www.reddit.com/r/ZooCode/" |
| 69 | /> |
| 70 | </div> |
| 71 | </div> |
| 72 | |
| 73 | <div className="mt-3 text-sm text-center text-vscode-descriptionForeground"> |
| 74 | <Trans i18nKey="chat:announcement.support" components={{ githubLink: <GitHubLink /> }} /> |
| 75 | </div> |
| 76 | </div> |
| 77 | </DialogContent> |
| 78 | </Dialog> |
| 79 | ) |
| 80 | } |
| 81 | |
| 82 | const SocialLink = ({ icon, label, href }: { icon: ReactNode; label: string; href: string }) => ( |
nothing calls this directly
no test coverage detected