import { ArrowUpRightIcon } from "@heroicons/react/20/solid"; import { motion } from "framer-motion"; import { Fragment, useState } from "react"; import { BookIcon } from "~/assets/icons/BookIcon"; import { BulbIcon } from "~/assets/icons/BulbIcon"; import { EnvelopeIcon } from "~/assets/icons/EnvelopeIcon"; import { QuestionMarkIcon } from "~/assets/icons/QuestionMarkIcon"; import { RadarPulseIcon } from "~/assets/icons/RadarPulseIcon"; import { StarIcon } from "~/assets/icons/StarIcon"; import { useShortcutKeys } from "~/hooks/useShortcutKeys"; import { sanitizeHttpUrl } from "~/utils/sanitizeUrl"; import { useCurrentPlan } from "~/routes/_app.orgs.$organizationSlug/route"; import { useRecentChangelogs } from "~/routes/resources.platform-changelogs"; import { cn } from "~/utils/cn"; import { Feedback } from "../Feedback"; import { Shortcuts } from "../Shortcuts"; import { Button } from "../primitives/Buttons"; import { Paragraph } from "../primitives/Paragraph"; import { Popover, PopoverContent, PopoverTrigger } from "../primitives/Popover"; import { ShortcutKey } from "../primitives/ShortcutKey"; import { SimpleTooltip } from "../primitives/Tooltip"; import { SideMenuItem } from "./SideMenuItem"; export function HelpAndFeedback({ disableShortcut = false, isCollapsed = false, organizationId, projectId, }: { disableShortcut?: boolean; isCollapsed?: boolean; organizationId?: string; projectId?: string; }) { const [isHelpMenuOpen, setHelpMenuOpen] = useState(false); const _currentPlan = useCurrentPlan(); const { changelogs } = useRecentChangelogs(organizationId, projectId); useShortcutKeys({ shortcut: disableShortcut ? undefined : { key: "h", enabledOnInputElements: false }, action: (e) => { e.preventDefault(); e.stopPropagation(); setHelpMenuOpen(true); }, }); return ( Help & Feedback } content={ Help & Feedback } side="right" sideOffset={8} hidden={!isCollapsed} buttonClassName="h-8! w-full" asChild disableHoverableContent />
Contact us… } />
What's new {changelogs.map((entry) => ( ))}
); } function GrayDotIcon({ className }: { className?: string }) { return ( ); }