From 63ef4d6ea2c85b516aed69fb6334f1b8695291a6 Mon Sep 17 00:00:00 2001
From: haydencleary <5160414+haydencleary@users.noreply.github.com>
Date: Thu, 8 Aug 2024 17:04:05 +0200
Subject: [PATCH 1/4] feat(feedback): basic drawer
---
app/feedback/page.tsx | 18 ++++++++++
package-lock.json | 7 ++++
package.json | 1 +
.../feedback-drawer/feedback-drawer.hooks.ts | 5 +++
.../feedback-drawer/feedback-drawer.tsx | 35 +++++++++++++++++++
5 files changed, 66 insertions(+)
create mode 100644 app/feedback/page.tsx
create mode 100644 shared/features/feedback-drawer/feedback-drawer.hooks.ts
create mode 100644 shared/features/feedback-drawer/feedback-drawer.tsx
diff --git a/app/feedback/page.tsx b/app/feedback/page.tsx
new file mode 100644
index 00000000..d08b2280
--- /dev/null
+++ b/app/feedback/page.tsx
@@ -0,0 +1,18 @@
+"use client";
+
+import { Button } from "@/design-system/atoms/button/variants/button-default";
+
+import { FeedbackDrawer } from "@/shared/features/feedback-drawer/feedback-drawer";
+import { useFeedbackDrawerState } from "@/shared/features/feedback-drawer/feedback-drawer.hooks";
+
+export default function FeedbackPage() {
+ const feedbackDrawerState = useFeedbackDrawerState();
+ const [, setIsOpen] = feedbackDrawerState;
+
+ return (
+
+
+
+
+ );
+}
diff --git a/package-lock.json b/package-lock.json
index e391c49e..7e41c5a8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,6 +9,7 @@
"version": "0.1.0",
"dependencies": {
"@auth0/auth0-react": "^2.2.4",
+ "@fillout/react": "^1.1.2",
"@nextui-org/react": "^2.4.6",
"@tanstack/react-query": "^5.51.21",
"clsx": "^2.1.1",
@@ -4247,6 +4248,12 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/@fillout/react": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@fillout/react/-/react-1.1.2.tgz",
+ "integrity": "sha512-XyzLY74Zhxxwym3A9770Tb3NINwaaWyWwvaw1lMJ5sA/P6hgsdzvefUOqohzR3+KVyspvBOR4BoR0nBMPFd/Vw==",
+ "license": "MIT"
+ },
"node_modules/@formatjs/ecma402-abstract": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz",
diff --git a/package.json b/package.json
index d5d7fba5..12cfe998 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,7 @@
},
"dependencies": {
"@auth0/auth0-react": "^2.2.4",
+ "@fillout/react": "^1.1.2",
"@nextui-org/react": "^2.4.6",
"@tanstack/react-query": "^5.51.21",
"clsx": "^2.1.1",
diff --git a/shared/features/feedback-drawer/feedback-drawer.hooks.ts b/shared/features/feedback-drawer/feedback-drawer.hooks.ts
new file mode 100644
index 00000000..748ce50e
--- /dev/null
+++ b/shared/features/feedback-drawer/feedback-drawer.hooks.ts
@@ -0,0 +1,5 @@
+import { useState } from "react";
+
+export function useFeedbackDrawerState() {
+ return useState(false);
+}
diff --git a/shared/features/feedback-drawer/feedback-drawer.tsx b/shared/features/feedback-drawer/feedback-drawer.tsx
new file mode 100644
index 00000000..88cdb217
--- /dev/null
+++ b/shared/features/feedback-drawer/feedback-drawer.tsx
@@ -0,0 +1,35 @@
+"use client";
+
+import { FilloutStandardEmbed } from "@fillout/react";
+
+import { Drawer } from "@/design-system/molecules/drawer";
+
+import { useFeedbackDrawerState } from "@/shared/features/feedback-drawer/feedback-drawer.hooks";
+
+export function FeedbackDrawer({ state }: { state: ReturnType }) {
+ const [isOpen, setIsOpen] = state;
+
+ return (
+
+
+
+ );
+}
From 02ddb04fd7c7b23d4b7a3fc81f431ad9d5649e0f Mon Sep 17 00:00:00 2001
From: haydencleary <5160414+haydencleary@users.noreply.github.com>
Date: Thu, 8 Aug 2024 17:09:37 +0200
Subject: [PATCH 2/4] feat(feedback): get current user
---
.../feedback-drawer/feedback-drawer.tsx | 21 ++++++++++---------
shared/hooks/user/use-current-user.ts | 7 +++++++
2 files changed, 18 insertions(+), 10 deletions(-)
create mode 100644 shared/hooks/user/use-current-user.ts
diff --git a/shared/features/feedback-drawer/feedback-drawer.tsx b/shared/features/feedback-drawer/feedback-drawer.tsx
index 88cdb217..f33c26b7 100644
--- a/shared/features/feedback-drawer/feedback-drawer.tsx
+++ b/shared/features/feedback-drawer/feedback-drawer.tsx
@@ -1,14 +1,15 @@
-"use client";
-
import { FilloutStandardEmbed } from "@fillout/react";
import { Drawer } from "@/design-system/molecules/drawer";
import { useFeedbackDrawerState } from "@/shared/features/feedback-drawer/feedback-drawer.hooks";
+import { useCurrentUser } from "@/shared/hooks/user/use-current-user";
export function FeedbackDrawer({ state }: { state: ReturnType }) {
const [isOpen, setIsOpen] = state;
+ const { user } = useCurrentUser();
+
return (
);
diff --git a/shared/hooks/user/use-current-user.ts b/shared/hooks/user/use-current-user.ts
new file mode 100644
index 00000000..8faeaae9
--- /dev/null
+++ b/shared/hooks/user/use-current-user.ts
@@ -0,0 +1,7 @@
+import { UserReactQueryAdapter } from "@/core/application/react-query-adapter/user";
+
+export function useCurrentUser() {
+ const { data: user, ...restQuery } = UserReactQueryAdapter.client.useGetMe({});
+
+ return { user, ...restQuery };
+}
From 9e1468dac235662dc0b37fc75f7618197c8d349a Mon Sep 17 00:00:00 2001
From: Alexis Benoliel
Date: Fri, 9 Aug 2024 10:28:53 +0200
Subject: [PATCH 3/4] Update feedback to add it in menu
---
app/feedback/page.tsx | 18 -----
.../adapters/default/default.adapter.tsx | 79 ++++++++++++-------
.../molecules/item-nav/item-nav.types.ts | 1 +
.../feedback-drawer/feedback-drawer.tsx | 4 +-
.../menu/secondary-menu/secondary-menu.tsx | 17 ++--
shared/hooks/user/use-current-user.ts | 7 --
6 files changed, 65 insertions(+), 61 deletions(-)
delete mode 100644 app/feedback/page.tsx
delete mode 100644 shared/hooks/user/use-current-user.ts
diff --git a/app/feedback/page.tsx b/app/feedback/page.tsx
deleted file mode 100644
index d08b2280..00000000
--- a/app/feedback/page.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-"use client";
-
-import { Button } from "@/design-system/atoms/button/variants/button-default";
-
-import { FeedbackDrawer } from "@/shared/features/feedback-drawer/feedback-drawer";
-import { useFeedbackDrawerState } from "@/shared/features/feedback-drawer/feedback-drawer.hooks";
-
-export default function FeedbackPage() {
- const feedbackDrawerState = useFeedbackDrawerState();
- const [, setIsOpen] = feedbackDrawerState;
-
- return (
-
-
-
-
- );
-}
diff --git a/design-system/molecules/item-nav/adapters/default/default.adapter.tsx b/design-system/molecules/item-nav/adapters/default/default.adapter.tsx
index 2a886bd3..ab2cf7be 100644
--- a/design-system/molecules/item-nav/adapters/default/default.adapter.tsx
+++ b/design-system/molecules/item-nav/adapters/default/default.adapter.tsx
@@ -6,42 +6,63 @@ import { ItemNavPort } from "@/design-system/molecules/item-nav/item-nav.types";
import { BaseLink } from "@/shared/components/base-link/base-link";
import { cn } from "@/shared/helpers/cn";
-export function ItemNavDefaultAdapter({ classNames, children, translate, ...props }: ItemNavPort) {
- const { isDisabled, isFolded, icon, labelProps = {}, ...linkProps } = props;
+function Content({
+ classNames,
+ children,
+ translate,
+ icon,
+ labelProps = {},
+ isExternal,
+ isDisabled,
+ isFolded,
+}: ItemNavPort & { isExternal: boolean }) {
const slots = ItemNavDefaultVariants({
isDisabled,
});
- const showChildren = !!children || !!translate;
+ return (
+
+
+
+
+ {children}
+
+ {isExternal ? (
+
+ ) : null}
+
+
+ );
+}
+
+export function ItemNavDefaultAdapter({ ...props }: ItemNavPort) {
+ const { isDisabled, classNames, onClick, ...linkProps } = props;
+ const slots = ItemNavDefaultVariants({
+ isDisabled,
+ });
+
+ if (onClick) {
+ return (
+
+ );
+ }
return (
- {({ isExternal }) => (
-
-
-
- {showChildren && (
-
- {children}
-
- )}
- {isExternal ? (
-
- ) : null}
-
-
- )}
+ {({ isExternal }) => }
);
}
diff --git a/design-system/molecules/item-nav/item-nav.types.ts b/design-system/molecules/item-nav/item-nav.types.ts
index 2928df9f..0e4c379a 100644
--- a/design-system/molecules/item-nav/item-nav.types.ts
+++ b/design-system/molecules/item-nav/item-nav.types.ts
@@ -20,4 +20,5 @@ export interface ItemNavPort extends _BaseLinkProps, PropsWithChildren {
translate?: TranslateProps;
isDisabled?: boolean;
isFolded?: boolean;
+ onClick?: () => void;
}
diff --git a/shared/features/feedback-drawer/feedback-drawer.tsx b/shared/features/feedback-drawer/feedback-drawer.tsx
index f33c26b7..0cfa8e1c 100644
--- a/shared/features/feedback-drawer/feedback-drawer.tsx
+++ b/shared/features/feedback-drawer/feedback-drawer.tsx
@@ -3,12 +3,12 @@ import { FilloutStandardEmbed } from "@fillout/react";
import { Drawer } from "@/design-system/molecules/drawer";
import { useFeedbackDrawerState } from "@/shared/features/feedback-drawer/feedback-drawer.hooks";
-import { useCurrentUser } from "@/shared/hooks/user/use-current-user";
+import { useAuthUser } from "@/shared/hooks/auth/use-auth-user";
export function FeedbackDrawer({ state }: { state: ReturnType }) {
const [isOpen, setIsOpen] = state;
- const { user } = useCurrentUser();
+ const { user } = useAuthUser();
return (
setIsOpen(true)}
/>
+
>
);
}
diff --git a/shared/hooks/user/use-current-user.ts b/shared/hooks/user/use-current-user.ts
deleted file mode 100644
index 8faeaae9..00000000
--- a/shared/hooks/user/use-current-user.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { UserReactQueryAdapter } from "@/core/application/react-query-adapter/user";
-
-export function useCurrentUser() {
- const { data: user, ...restQuery } = UserReactQueryAdapter.client.useGetMe({});
-
- return { user, ...restQuery };
-}
From ca934a4897e49339ad6bafb911a97a87d11e2a8e Mon Sep 17 00:00:00 2001
From: Alexis Benoliel
Date: Fri, 9 Aug 2024 10:29:41 +0200
Subject: [PATCH 4/4] Fix imports
---
shared/features/navigation/menu/primary-menu/primary-menu.tsx | 4 ++--
shared/features/navigation/menu/user-menu/user-menu.tsx | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/shared/features/navigation/menu/primary-menu/primary-menu.tsx b/shared/features/navigation/menu/primary-menu/primary-menu.tsx
index 12a152d2..b856eb88 100644
--- a/shared/features/navigation/menu/primary-menu/primary-menu.tsx
+++ b/shared/features/navigation/menu/primary-menu/primary-menu.tsx
@@ -1,7 +1,7 @@
-import { PrimaryMenuProps } from "shared/features/navigation/menu/primary-menu/primary-menu.types";
-
import { ItemNav } from "@/design-system/molecules/item-nav";
+import { PrimaryMenuProps } from "./primary-menu.types";
+
export function PrimaryMenu({ isFolded }: PrimaryMenuProps) {
return (
<>
diff --git a/shared/features/navigation/menu/user-menu/user-menu.tsx b/shared/features/navigation/menu/user-menu/user-menu.tsx
index a23df563..51fe9644 100644
--- a/shared/features/navigation/menu/user-menu/user-menu.tsx
+++ b/shared/features/navigation/menu/user-menu/user-menu.tsx
@@ -1,5 +1,3 @@
-import { UserMenuProps } from "shared/features/navigation/menu/user-menu/user-menu.types";
-
import { useClientBootstrapContext } from "@/core/bootstrap/client-bootstrap-context";
import { Avatar } from "@/design-system/atoms/avatar";
@@ -10,6 +8,8 @@ import { Typo } from "@/design-system/atoms/typo";
import { cn } from "@/shared/helpers/cn";
import { useAuthUser } from "@/shared/hooks/auth/use-auth-user";
+import { UserMenuProps } from "./user-menu.types";
+
export function UserMenu({ isFolded }: UserMenuProps) {
const { user, isLoading } = useAuthUser();
const login = user?.login;