diff --git a/apps/webapp/app/components/Feedback.tsx b/apps/webapp/app/components/Feedback.tsx index b42067586..ac151f814 100644 --- a/apps/webapp/app/components/Feedback.tsx +++ b/apps/webapp/app/components/Feedback.tsx @@ -1,14 +1,17 @@ import { conform, useForm } from "@conform-to/react"; import { parse } from "@conform-to/zod"; -import { ChatBubbleLeftRightIcon } from "@heroicons/react/24/solid"; import { Form, useActionData, useLocation, useNavigation, } from "@remix-run/react"; -import { useState } from "react"; -import { feedbackTypeLabel, schema } from "~/routes/resources.feedback"; +import { ReactNode, useState } from "react"; +import { + FeedbackType, + feedbackTypeLabel, + schema, +} from "~/routes/resources.feedback"; import { Button } from "./primitives/Buttons"; import { Fieldset } from "./primitives/Fieldset"; import { FormButtons } from "./primitives/FormButtons"; @@ -33,7 +36,12 @@ import { } from "./primitives/Sheet"; import { TextArea } from "./primitives/TextArea"; -export function Feedback() { +type FeedbackProps = { + button: ReactNode; + defaultValue?: FeedbackType; +}; + +export function Feedback({ button, defaultValue = "bug" }: FeedbackProps) { const [open, setOpen] = useState(false); const location = useLocation(); const lastSubmission = useActionData(); @@ -58,15 +66,7 @@ export function Feedback() { return ( - - - + {button} Give us feedback @@ -82,7 +82,10 @@ export function Feedback() { - diff --git a/apps/webapp/app/components/navigation/NavBar.tsx b/apps/webapp/app/components/navigation/NavBar.tsx index 31a7d45af..007961528 100644 --- a/apps/webapp/app/components/navigation/NavBar.tsx +++ b/apps/webapp/app/components/navigation/NavBar.tsx @@ -1,11 +1,14 @@ import { Popover, Transition } from "@headlessui/react"; -import { BookOpenIcon } from "@heroicons/react/20/solid"; +import { + BookOpenIcon, + ChatBubbleLeftRightIcon, +} from "@heroicons/react/20/solid"; import { Link } from "@remix-run/react"; import { Fragment } from "react"; import { cn } from "~/utils/cn"; import { Feedback } from "../Feedback"; import { LogoIcon } from "../LogoIcon"; -import { LinkButton } from "../primitives/Buttons"; +import { Button, LinkButton } from "../primitives/Buttons"; import { Breadcrumb } from "./Breadcrumb"; import { docsRoot } from "~/utils/pathBuilder"; @@ -27,7 +30,17 @@ export function NavBar() { > Documentation - + + Send us feedback + + } + /> ); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.integrations/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.integrations/route.tsx index ce7271c08..afddf672b 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.integrations/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.integrations/route.tsx @@ -2,6 +2,7 @@ import { ChevronRightIcon } from "@heroicons/react/24/solid"; import type { LoaderArgs } from "@remix-run/server-runtime"; import { useCallback, useState } from "react"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; +import { Feedback } from "~/components/Feedback"; import { LogoIcon } from "~/components/LogoIcon"; import { HowToConnectAnIntegration } from "~/components/helpContent/HelpContentText"; import { ConnectToIntegrationSheet } from "~/components/integrations/ConnectToIntegrationSheet"; @@ -211,9 +212,28 @@ function PossibleIntegrationsList({ } })} - {/* Missing an API? */} - {/* - Create your own Integration */} + Missing an API? + + + + } + defaultValue="integration" + /> + + Create an Integration + + + ); } @@ -511,6 +531,38 @@ function AddIntegrationConnection({ ); } +function ExternalIntegrationLink({ + name, + label, + trailingIcon, +}: { + name: string; + label: string; + trailingIcon: string; +}) { + return ( + + + + {label} + +
+ +
+
+ ); +} + export function IntegrationIcon() { return ; }