From c447436b90e1dc18c50de3da235b4b0864913373 Mon Sep 17 00:00:00 2001 From: Gabriel Castro Date: Fri, 7 Feb 2025 15:41:43 -0300 Subject: [PATCH 01/17] :recycle: refactor: start the onboarding refactor --- locales/extracted/en.json | 10 +- locales/extracted/pt.json | 12 +- public/svg/midaz-logo-white.svg | 6 + src/app/(auth-routes)/signin/page.tsx | 28 +++- .../onboarding/header-onboarding.tsx | 13 ++ src/app/(onboarding)/onboarding/layout.tsx | 25 ++++ src/app/(onboarding)/onboarding/page.tsx | 92 +++++++++++++ src/app/(routes)/page.tsx | 126 +----------------- src/app/(routes)/settings/page.tsx | 5 +- .../(routes)/settings/system-tab-content.tsx | 5 +- src/components/ui/dialog/index.tsx | 12 +- 11 files changed, 187 insertions(+), 147 deletions(-) create mode 100644 public/svg/midaz-logo-white.svg create mode 100644 src/app/(onboarding)/onboarding/header-onboarding.tsx create mode 100644 src/app/(onboarding)/onboarding/layout.tsx create mode 100644 src/app/(onboarding)/onboarding/page.tsx diff --git a/locales/extracted/en.json b/locales/extracted/en.json index a2b5f771..1c347c6a 100644 --- a/locales/extracted/en.json +++ b/locales/extracted/en.json @@ -151,13 +151,11 @@ "header.userDropdown.profile": "Profile", "header.userDropdown.subscription": "Subscription", "header.userDropdown.support": "Support", - "homePage.alert.description": "You don't have an organization, please create one.", - "homePage.alert.title": "Attention", - "homePage.dialog.description.part1": "Your Midaz Console is now active and operational.", - "homePage.dialog.description.part2": "However, to advance on the journey, you need to create an {organization}, where your ledger and all your information will be stored.", "homePage.dialog.footer.createOrganizationButton": "Create Organization", - "homePage.dialog.footer.laterButton": "Maybe later", - "homePage.greetings.title": "Greetings,", + "homePage.dialog.onboarding.description": "Complete your Organization's registration and create the first Ledger to activate the powerful features of the Midaz Console.", + "homePage.dialog.onboarding.gettingStarted": "Getting started", + "homePage.dialog.onboarding.title": "Launch the Midaz Console", + "homePage.dialog.startOnboarding.button": "Let's go", "homePage.welcome.title": "Welcome, {user}!", "language.english": "English", "language.portuguese": "Portuguese", diff --git a/locales/extracted/pt.json b/locales/extracted/pt.json index e237fad0..37492735 100644 --- a/locales/extracted/pt.json +++ b/locales/extracted/pt.json @@ -248,13 +248,7 @@ "common.noOptions": "Nenhuma opção encontrada.", "common.search": "Pesquisar...", "entity.auth.reset.password": "Esqueci a senha", - "homePage.alert.description": "Você não tem uma organização, por favor crie uma.", - "homePage.alert.title": "Atenção", - "homePage.dialog.description.part1": "Seu Midaz Console já está ativo e operante.", - "homePage.dialog.description.part2": "Porém, para avançar na jornada, é necessário que você crie uma {organization}, onde ficarão sua ledger e todas suas informações.", "homePage.dialog.footer.createOrganizationButton": "Criar Organização", - "homePage.dialog.footer.laterButton": "Agora não", - "homePage.greetings.title": "Saudações,", "organization": "Organização", "tooltip.passwordInfo": "Contacte o admin do sistema", "homePage.welcome.title": "Seja bem-vindo, {user}!", @@ -378,5 +372,9 @@ "transactions.tab.list": "Lista de transações", "transactions.tab.operations": "Operações e Metadados", "transactions.tab.summary": "Resumo", - "transactions.toast.update.success": "Transação atualizada com sucesso" + "transactions.toast.update.success": "Transação atualizada com sucesso", + "homePage.dialog.onboarding.description": "", + "homePage.dialog.onboarding.gettingStarted": "", + "homePage.dialog.onboarding.title": "", + "homePage.dialog.startOnboarding.button": "" } \ No newline at end of file diff --git a/public/svg/midaz-logo-white.svg b/public/svg/midaz-logo-white.svg new file mode 100644 index 00000000..be5eb766 --- /dev/null +++ b/public/svg/midaz-logo-white.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/app/(auth-routes)/signin/page.tsx b/src/app/(auth-routes)/signin/page.tsx index b5be0f70..91c6420b 100644 --- a/src/app/(auth-routes)/signin/page.tsx +++ b/src/app/(auth-routes)/signin/page.tsx @@ -23,7 +23,7 @@ import { TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip' -import { Arrow } from '@radix-ui/react-tooltip' +import { useListOrganizations } from '@/client/organizations' const FormSchema = z.object({ username: auth.username, @@ -48,6 +48,22 @@ const SignInPage = () => { const { showError } = useCustomToast() const [isLoading, setIsLoading] = React.useState(false) const [isSubmitting, setIsSubmitting] = React.useState(false) + const [redirectUrl, setRedirectUrl] = React.useState(null) + + const { data: organizationsData, isLoading: orgLoading } = + useListOrganizations({ + enabled: isLoading + }) + + React.useEffect(() => { + if (isLoading && !orgLoading) { + if (organizationsData?.items && organizationsData.items.length > 0) { + setRedirectUrl('/') + } else { + setRedirectUrl('/onboarding') + } + } + }, [isLoading, orgLoading, organizationsData]) const onSubmit = async (values: FormData) => { setIsSubmitting(true) @@ -74,7 +90,15 @@ const SignInPage = () => { } if (isLoading) { - return route.replace('/')} /> + return ( + { + if (redirectUrl) { + route.replace(redirectUrl) + } + }} + /> + ) } return ( diff --git a/src/app/(onboarding)/onboarding/header-onboarding.tsx b/src/app/(onboarding)/onboarding/header-onboarding.tsx new file mode 100644 index 00000000..f021a32f --- /dev/null +++ b/src/app/(onboarding)/onboarding/header-onboarding.tsx @@ -0,0 +1,13 @@ +import Image from 'next/image' +import MidazLogo from '@/svg/midaz-logo-white.svg' + +export const Header = () => { + return ( +
+ +
+ ) +} diff --git a/src/app/(onboarding)/onboarding/layout.tsx b/src/app/(onboarding)/onboarding/layout.tsx new file mode 100644 index 00000000..a6cce47a --- /dev/null +++ b/src/app/(onboarding)/onboarding/layout.tsx @@ -0,0 +1,25 @@ +import React from 'react' +import '@/app/globals.css' +import { redirect, RedirectType } from 'next/navigation' +import { getServerSession } from 'next-auth' +import { nextAuthCasdoorOptions } from '@/core/infrastructure/next-auth/casdoor/next-auth-casdoor-provider' +import { Header } from './header-onboarding' + +export default async function RootLayout({ + children +}: { + children: React.ReactNode +}) { + const session = await getServerSession(nextAuthCasdoorOptions) + + if (!session) { + redirect(`/signin`, RedirectType.replace) + } + + return ( + +
+ {children} + + ) +} diff --git a/src/app/(onboarding)/onboarding/page.tsx b/src/app/(onboarding)/onboarding/page.tsx new file mode 100644 index 00000000..825d5c25 --- /dev/null +++ b/src/app/(onboarding)/onboarding/page.tsx @@ -0,0 +1,92 @@ +'use client' + +import { useListOrganizations } from '@/client/organizations' +import { Button } from '@/components/ui/button' +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle +} from '@/components/ui/dialog' +import Rocket from '@/animations/rocket.gif' +import Image from 'next/image' +import { useRouter } from 'next/navigation' +import React from 'react' +import { FormattedMessage, useIntl } from 'react-intl' + +const Page = () => { + const intl = useIntl() + const router = useRouter() + const { data } = useListOrganizations({}) + const [dialogOpen, setDialogOpen] = React.useState(true) + + return ( + + event.preventDefault()} + onInteractOutside={(event) => event.preventDefault()} + onEscapeKeyDown={(event) => event.preventDefault()} + > + +

+ {intl.formatMessage({ + id: 'homePage.dialog.onboarding.gettingStarted', + defaultMessage: 'Getting started' + })} +

+ +
+ + {intl.formatMessage({ + id: 'homePage.dialog.onboarding.title', + defaultMessage: 'Launch the Midaz Console' + })} + + +
+ Rocket +
+
+ + +

+ + + + ) + }} + /> +

+
+
+ + + + +
+
+ ) +} + +export default Page diff --git a/src/app/(routes)/page.tsx b/src/app/(routes)/page.tsx index e5352ab8..bf90eccf 100644 --- a/src/app/(routes)/page.tsx +++ b/src/app/(routes)/page.tsx @@ -2,30 +2,14 @@ import { useListOrganizations } from '@/client/organizations' import { PageHeader } from '@/components/page-header' -import { FormattedMessage, useIntl } from 'react-intl' -import { - Dialog, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle -} from '@/components/ui/dialog' +import { useIntl } from 'react-intl' import React from 'react' -import Image from 'next/image' -import Rocket from '@/animations/rocket.gif' -import { Button } from '@/components/ui/button' -import { AlertCircle, ArrowRight } from 'lucide-react' -import { useRouter } from 'next/navigation' import { useSession } from 'next-auth/react' -import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert' const Page = () => { const intl = useIntl() - const router = useRouter() const { data: session } = useSession() const { data, isLoading } = useListOrganizations({}) - const [dialogOpen, setDialogOpen] = React.useState(true) const hasOrganizations = data?.items.length! > 0 if (isLoading) { @@ -34,114 +18,6 @@ const Page = () => { return ( - {!hasOrganizations && dialogOpen && ( - - event.preventDefault()} - > - -
- - {intl.formatMessage({ - id: 'homePage.greetings.title', - defaultMessage: 'Greetings,' - })} -
- {session?.user.name}! -
- Rocket -
- - -

- {intl.formatMessage({ - id: 'homePage.dialog.description.part1', - defaultMessage: - 'Your Midaz Console is now active and operational.' - })} -

-

- - - - ) - }} - /> -

-
-
- - - - - - -
-
- )} - - {!hasOrganizations && !dialogOpen && ( -
- - -
- - {intl.formatMessage({ - id: 'homePage.alert.title', - defaultMessage: 'Attention' - })} - - - {intl.formatMessage({ - id: 'homePage.alert.description', - defaultMessage: - "You don't have an organization, please create one." - })} - - -
-
-
- )} - {hasOrganizations && ( { const intl = useIntl() @@ -19,7 +20,7 @@ const Page = () => { }) return ( - <> + { - + ) } diff --git a/src/app/(routes)/settings/system-tab-content.tsx b/src/app/(routes)/settings/system-tab-content.tsx index 8cf310c7..b491f8b6 100644 --- a/src/app/(routes)/settings/system-tab-content.tsx +++ b/src/app/(routes)/settings/system-tab-content.tsx @@ -8,6 +8,7 @@ import { Separator } from '@/components/ui/separator' import { getLocaleCode } from '@/lib/intl/get-locale-code' import { useLocale } from '@/lib/intl/use-locale' import languages from '@/lib/languages' +import React from 'react' import { useForm } from 'react-hook-form' import { useIntl } from 'react-intl' import { z } from 'zod' @@ -38,7 +39,7 @@ export const SystemTabContent = () => { const handleCancel = () => form.reset() return ( - <> +

@@ -97,6 +98,6 @@ export const SystemTabContent = () => {

- +
) } diff --git a/src/components/ui/dialog/index.tsx b/src/components/ui/dialog/index.tsx index 113ab28f..4c88cc59 100644 --- a/src/components/ui/dialog/index.tsx +++ b/src/components/ui/dialog/index.tsx @@ -31,20 +31,26 @@ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName const DialogContent = React.forwardRef< React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( + React.ComponentPropsWithoutRef & { + showCloseButton?: boolean + } +>(({ className, children, showCloseButton = true, ...props }, ref) => ( [data-radix-dialog-close]]:hidden', className )} {...props} > {children} - + Close From bea00df7ba5127b069606e20250a92e46d9026e1 Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Fri, 7 Feb 2025 16:29:29 -0300 Subject: [PATCH 02/17] :boom: fix: Fixed dialog style --- src/app/(onboarding)/onboarding/page.tsx | 70 ++++++++++-------------- 1 file changed, 28 insertions(+), 42 deletions(-) diff --git a/src/app/(onboarding)/onboarding/page.tsx b/src/app/(onboarding)/onboarding/page.tsx index 825d5c25..7178815c 100644 --- a/src/app/(onboarding)/onboarding/page.tsx +++ b/src/app/(onboarding)/onboarding/page.tsx @@ -14,61 +14,47 @@ import Rocket from '@/animations/rocket.gif' import Image from 'next/image' import { useRouter } from 'next/navigation' import React from 'react' -import { FormattedMessage, useIntl } from 'react-intl' +import { useIntl } from 'react-intl' const Page = () => { const intl = useIntl() const router = useRouter() const { data } = useListOrganizations({}) - const [dialogOpen, setDialogOpen] = React.useState(true) return ( - + event.preventDefault()} - onInteractOutside={(event) => event.preventDefault()} - onEscapeKeyDown={(event) => event.preventDefault()} + className="[data-radix-dialog-close] w-full max-w-[640px] p-12 sm:min-w-[640px]" > -

- {intl.formatMessage({ - id: 'homePage.dialog.onboarding.gettingStarted', - defaultMessage: 'Getting started' - })} -

- -
- - {intl.formatMessage({ - id: 'homePage.dialog.onboarding.title', - defaultMessage: 'Launch the Midaz Console' - })} - - -
- Rocket +
+
+

+ {intl.formatMessage({ + id: 'onboarding.dialog.firstSteps', + defaultMessage: 'First steps' + })} +

+ + {intl.formatMessage({ + id: 'onboarding.dialog.title', + defaultMessage: 'Launch the Midaz Console' + })} + +
+
+
+ Rocket +
- -

- - - - ) - }} - /> -

+ + {intl.formatMessage({ + id: 'onboarding.dialog.description', + defaultMessage: `Complete your Organization's registration and create the first Ledger to activate the powerful features of the Midaz Console.` + })} @@ -79,7 +65,7 @@ const Page = () => { onClick={() => router.push('/settings')} > {intl.formatMessage({ - id: 'homePage.dialog.startOnboarding.button', + id: 'onboarding.dialog.button', defaultMessage: "Let's go" })} From 8a3dfcc48bd628842b9ee74d0b299dda4337dec3 Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Tue, 11 Feb 2025 11:11:06 -0300 Subject: [PATCH 03/17] :sparkles: feat: Implemented primitive stepper --- src/components/ui/stepper/index.tsx | 98 +++++++++++++++++++ src/components/ui/stepper/stepper.mdx | 19 ++++ src/components/ui/stepper/stepper.stories.tsx | 81 +++++++++++++++ 3 files changed, 198 insertions(+) create mode 100644 src/components/ui/stepper/index.tsx create mode 100644 src/components/ui/stepper/stepper.mdx create mode 100644 src/components/ui/stepper/stepper.stories.tsx diff --git a/src/components/ui/stepper/index.tsx b/src/components/ui/stepper/index.tsx new file mode 100644 index 00000000..776609e8 --- /dev/null +++ b/src/components/ui/stepper/index.tsx @@ -0,0 +1,98 @@ +import { cn } from '@/lib/utils' +import { CircleCheck } from 'lucide-react' +import { + forwardRef, + HTMLAttributes, + MouseEventHandler, + PropsWithChildren +} from 'react' + +export const Stepper = forwardRef< + HTMLDivElement, + HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +Stepper.displayName = 'Stepper' + +export type StepperItemProps = HTMLAttributes & { + active?: boolean + complete?: boolean +} + +export const StepperItem = forwardRef( + ({ className, active = false, complete = false, ...props }, ref) => ( +
+ ) +) +StepperItem.displayName = 'StepperItem' + +export const StepperItemNumber = forwardRef< + HTMLDivElement, + HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +StepperItemNumber.displayName = 'StepperItemNumber' + +export type StepperItemTextProps = HTMLAttributes & { + title: string + description?: string +} + +export const StepperItemText = forwardRef< + HTMLParagraphElement, + StepperItemTextProps +>(({ className, title, description, ...props }, ref) => ( +
+
+

{title}

+ +
+ {description && ( +

+ {description} +

+ )} +
+)) +StepperItemText.displayName = 'StepperItemText' + +export type StepperControlProps = PropsWithChildren & { + active?: boolean +} + +export const StepperContent = ({ active, children }: StepperControlProps) => { + return active ? <>{children} : null +} diff --git a/src/components/ui/stepper/stepper.mdx b/src/components/ui/stepper/stepper.mdx new file mode 100644 index 00000000..f392c81c --- /dev/null +++ b/src/components/ui/stepper/stepper.mdx @@ -0,0 +1,19 @@ +import { Meta, Controls, Primary, Canvas, Stories } from '@storybook/blocks' +import * as Story from './stepper.stories' + + + +# Stepper + +A set of steps that are used to indicate progress through a multi-step process. + + + +# Controlled + +Example below show how they can be controlled to show the correct step sequentially. + + + + + diff --git a/src/components/ui/stepper/stepper.stories.tsx b/src/components/ui/stepper/stepper.stories.tsx new file mode 100644 index 00000000..14545d75 --- /dev/null +++ b/src/components/ui/stepper/stepper.stories.tsx @@ -0,0 +1,81 @@ +import { Meta, StoryObj } from '@storybook/react' +import { Button } from '../button' +import { HTMLAttributes } from 'react' +import { Stepper, StepperItem, StepperItemNumber, StepperItemText } from '.' +import { Paper } from '../paper' +import { useStepper } from '@/hooks/use-stepper' + +const meta: Meta> = { + title: 'Primitives/Stepper', + component: Stepper +} + +export default meta + +export const Primary: StoryObj> = { + render: (args) => ( +
+ + + 1 + + + + 2 + + + + 3 + + + +
+ ) +} + +export const Controlled: StoryObj> = { + render: (args) => { + const { step, handlePrevious, handleNext } = useStepper({ maxSteps: 3 }) + + return ( +
+ + 0}> + 1 + + + 1}> + 2 + + + 2}> + 3 + + + + + + + +
+ ) + } +} From 5b19433daa4c9f50771af38285c52dfabfa1c872 Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Tue, 11 Feb 2025 11:23:28 -0300 Subject: [PATCH 04/17] :sparkles: feat: Changed usage to new stepper --- .../[id]/transactions/create/stepper.tsx | 2 +- .../transactions/primitives/stepper.tsx | 76 ------------------- src/components/ui/stepper/stepper.mdx | 2 +- 3 files changed, 2 insertions(+), 78 deletions(-) delete mode 100644 src/components/transactions/primitives/stepper.tsx diff --git a/src/app/(routes)/ledgers/[id]/transactions/create/stepper.tsx b/src/app/(routes)/ledgers/[id]/transactions/create/stepper.tsx index e04c1cfa..33ffe214 100644 --- a/src/app/(routes)/ledgers/[id]/transactions/create/stepper.tsx +++ b/src/app/(routes)/ledgers/[id]/transactions/create/stepper.tsx @@ -4,7 +4,7 @@ import { StepperItem, StepperItemNumber, StepperItemText -} from '@/components/transactions/primitives/stepper' +} from '@/components/ui/stepper' export type StepperProps = { step?: number diff --git a/src/components/transactions/primitives/stepper.tsx b/src/components/transactions/primitives/stepper.tsx deleted file mode 100644 index e8c60f38..00000000 --- a/src/components/transactions/primitives/stepper.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { cn } from '@/lib/utils' -import { forwardRef, HTMLAttributes, PropsWithChildren } from 'react' - -export const Stepper = forwardRef< - HTMLDivElement, - HTMLAttributes ->(({ className, ...props }, ref) => ( -
-)) -Stepper.displayName = 'Stepper' - -export type StepperItemProps = HTMLAttributes & { - active?: boolean -} - -export const StepperItem = forwardRef( - ({ className, active, ...props }, ref) => ( -
- ) -) -StepperItem.displayName = 'StepperItem' - -export const StepperItemNumber = forwardRef< - HTMLDivElement, - HTMLAttributes ->(({ className, ...props }, ref) => ( -
-)) -StepperItemNumber.displayName = 'StepperItemNumber' - -export type StepperItemTextProps = HTMLAttributes & { - title: string - description?: string -} - -export const StepperItemText = forwardRef< - HTMLParagraphElement, - StepperItemTextProps ->(({ className, title, description, ...props }, ref) => ( -
-
-

{title}

-
- {description && ( -

{description}

- )} -
-)) -StepperItemText.displayName = 'StepperItemText' - -export type StepperControlProps = PropsWithChildren & { - active?: boolean -} - -export const StepperContent = ({ active, children }: StepperControlProps) => { - return active ? <>{children} : null -} diff --git a/src/components/ui/stepper/stepper.mdx b/src/components/ui/stepper/stepper.mdx index f392c81c..becc3cd1 100644 --- a/src/components/ui/stepper/stepper.mdx +++ b/src/components/ui/stepper/stepper.mdx @@ -9,7 +9,7 @@ A set of steps that are used to indicate progress through a multi-step process. -# Controlled +### Controlled Example below show how they can be controlled to show the correct step sequentially. From 919314a97fa52e09f3c8571c75be0c7977e4b172 Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Tue, 11 Feb 2025 16:55:33 -0300 Subject: [PATCH 05/17] :sparkles: feat: Created the StaticHeader and stories --- .../onboarding/header-onboarding.tsx | 13 -------- src/app/(onboarding)/onboarding/layout.tsx | 4 +-- src/components/header.tsx | 20 ----------- src/components/header/header.mdx | 19 +++++++++++ src/components/header/header.stories.tsx | 31 +++++++++++++++++ src/components/header/index.tsx | 33 +++++++++++++++++++ 6 files changed, 85 insertions(+), 35 deletions(-) delete mode 100644 src/app/(onboarding)/onboarding/header-onboarding.tsx delete mode 100644 src/components/header.tsx create mode 100644 src/components/header/header.mdx create mode 100644 src/components/header/header.stories.tsx create mode 100644 src/components/header/index.tsx diff --git a/src/app/(onboarding)/onboarding/header-onboarding.tsx b/src/app/(onboarding)/onboarding/header-onboarding.tsx deleted file mode 100644 index f021a32f..00000000 --- a/src/app/(onboarding)/onboarding/header-onboarding.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Image from 'next/image' -import MidazLogo from '@/svg/midaz-logo-white.svg' - -export const Header = () => { - return ( -
- -
- ) -} diff --git a/src/app/(onboarding)/onboarding/layout.tsx b/src/app/(onboarding)/onboarding/layout.tsx index a6cce47a..830f5dd1 100644 --- a/src/app/(onboarding)/onboarding/layout.tsx +++ b/src/app/(onboarding)/onboarding/layout.tsx @@ -3,7 +3,7 @@ import '@/app/globals.css' import { redirect, RedirectType } from 'next/navigation' import { getServerSession } from 'next-auth' import { nextAuthCasdoorOptions } from '@/core/infrastructure/next-auth/casdoor/next-auth-casdoor-provider' -import { Header } from './header-onboarding' +import { StaticHeader } from '@/components/header' export default async function RootLayout({ children @@ -18,7 +18,7 @@ export default async function RootLayout({ return ( -
+ {children} ) diff --git a/src/components/header.tsx b/src/components/header.tsx deleted file mode 100644 index d58012e7..00000000 --- a/src/components/header.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { SettingsDropdown } from './settings-dropdown' -import { UserDropdown } from './user-dropdown' -import { Separator } from './ui/separator' - -export const Header = () => { - return ( -
- -
- ) -} diff --git a/src/components/header/header.mdx b/src/components/header/header.mdx new file mode 100644 index 00000000..474e7390 --- /dev/null +++ b/src/components/header/header.mdx @@ -0,0 +1,19 @@ +import { Meta, Controls, Primary, Canvas } from '@storybook/blocks' +import * as Story from './header.stories' + + + +# Header + +The main header component for the application. + + + +### Static Header + +An static version, used on the onboarding user flow. + + + + + diff --git a/src/components/header/header.stories.tsx b/src/components/header/header.stories.tsx new file mode 100644 index 00000000..b8669a42 --- /dev/null +++ b/src/components/header/header.stories.tsx @@ -0,0 +1,31 @@ +import React from 'react' +import { Meta, StoryObj } from '@storybook/react' +import { Header, StaticHeader } from '.' + +const meta: Meta = { + title: 'Components/Header', + component: Header, + parameters: { + nextjs: { + appDirectory: true + } + } +} + +export default meta + +export const Primary: StoryObj = { + render: (args) => ( +
+
+
+ ) +} + +export const StaticHeaderExample: StoryObj = { + render: (args) => ( +
+ +
+ ) +} diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx new file mode 100644 index 00000000..a5fa80ec --- /dev/null +++ b/src/components/header/index.tsx @@ -0,0 +1,33 @@ +import { SettingsDropdown } from '../settings-dropdown' +import { UserDropdown } from '../user-dropdown' +import { Separator } from '../ui/separator' +import Image from 'next/image' +import MidazLogo from '@/svg/midaz-logo-white.svg' + +export const Header = () => { + return ( +
+ +
+ ) +} + +export const StaticHeader = () => { + return ( +
+ +
+ ) +} From 1a075d7eaa4eb8400a7a3ebd18dcefc62e8b07c5 Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Thu, 13 Feb 2025 12:48:54 -0300 Subject: [PATCH 06/17] feat: Changed applyMiddleware path --- .../[id]/ledgers/[ledgerId]/accounts-portfolios/route.ts | 2 +- .../[id]/ledgers/[ledgerId]/accounts/[accountId]/route.ts | 2 +- .../api/organizations/[id]/ledgers/[ledgerId]/accounts/route.ts | 2 +- .../[id]/ledgers/[ledgerId]/assets/[assetId]/route.ts | 2 +- .../api/organizations/[id]/ledgers/[ledgerId]/assets/route.ts | 2 +- .../[id]/ledgers/[ledgerId]/portfolios-accounts/route.ts | 2 +- .../[id]/ledgers/[ledgerId]/portfolios/[portfolioId]/route.ts | 2 +- .../organizations/[id]/ledgers/[ledgerId]/portfolios/route.ts | 2 +- .../[id]/ledgers/[ledgerId]/products/[productId]/route.ts | 2 +- .../api/organizations/[id]/ledgers/[ledgerId]/products/route.ts | 2 +- src/app/api/organizations/[id]/ledgers/[ledgerId]/route.ts | 2 +- .../ledgers/[ledgerId]/transactions/[transactionId]/route.ts | 2 +- .../[id]/ledgers/[ledgerId]/transactions/json/route.ts | 2 +- .../organizations/[id]/ledgers/[ledgerId]/transactions/route.ts | 2 +- src/app/api/organizations/[id]/ledgers/ledgers-assets/route.ts | 2 +- src/app/api/organizations/[id]/route.ts | 2 +- src/app/api/organizations/parentOrganizations/route.ts | 2 +- src/app/api/organizations/route.ts | 2 +- src/lib/{applymiddleware => middleware}/apply-middleware.ts | 0 src/lib/middleware/index.ts | 2 ++ src/lib/{applymiddleware => middleware}/types.ts | 0 src/utils/logger-middleware-config.ts | 2 +- 22 files changed, 21 insertions(+), 19 deletions(-) rename src/lib/{applymiddleware => middleware}/apply-middleware.ts (100%) create mode 100644 src/lib/middleware/index.ts rename src/lib/{applymiddleware => middleware}/types.ts (100%) diff --git a/src/app/api/organizations/[id]/ledgers/[ledgerId]/accounts-portfolios/route.ts b/src/app/api/organizations/[id]/ledgers/[ledgerId]/accounts-portfolios/route.ts index ec463e24..997126e9 100644 --- a/src/app/api/organizations/[id]/ledgers/[ledgerId]/accounts-portfolios/route.ts +++ b/src/app/api/organizations/[id]/ledgers/[ledgerId]/accounts-portfolios/route.ts @@ -5,7 +5,7 @@ import { FetchAccountsWithPortfolios, FetchAccountsWithPortfoliosUseCase } from '@/core/application/use-cases/accounts-with-portfolios/fetch-accounts-with-portfolios-use-case' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' import { LoggerAggregator } from '@/core/application/logger/logger-aggregator' diff --git a/src/app/api/organizations/[id]/ledgers/[ledgerId]/accounts/[accountId]/route.ts b/src/app/api/organizations/[id]/ledgers/[ledgerId]/accounts/[accountId]/route.ts index fa6477c8..4bb3349e 100644 --- a/src/app/api/organizations/[id]/ledgers/[ledgerId]/accounts/[accountId]/route.ts +++ b/src/app/api/organizations/[id]/ledgers/[ledgerId]/accounts/[accountId]/route.ts @@ -13,7 +13,7 @@ import { UpdateAccountUseCase } from '@/core/application/use-cases/accounts/update-account-use-case' import { NextResponse, NextRequest } from 'next/server' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' import { LoggerAggregator } from '@/core/application/logger/logger-aggregator' diff --git a/src/app/api/organizations/[id]/ledgers/[ledgerId]/accounts/route.ts b/src/app/api/organizations/[id]/ledgers/[ledgerId]/accounts/route.ts index f1418fb0..8768491d 100644 --- a/src/app/api/organizations/[id]/ledgers/[ledgerId]/accounts/route.ts +++ b/src/app/api/organizations/[id]/ledgers/[ledgerId]/accounts/route.ts @@ -9,7 +9,7 @@ import { FetchAllAccountsUseCase } from '@/core/application/use-cases/accounts/fetch-all-account-use-case' import { NextResponse, NextRequest } from 'next/server' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' import { LoggerAggregator } from '@/core/application/logger/logger-aggregator' diff --git a/src/app/api/organizations/[id]/ledgers/[ledgerId]/assets/[assetId]/route.ts b/src/app/api/organizations/[id]/ledgers/[ledgerId]/assets/[assetId]/route.ts index 61d7f640..4ef44bc8 100644 --- a/src/app/api/organizations/[id]/ledgers/[ledgerId]/assets/[assetId]/route.ts +++ b/src/app/api/organizations/[id]/ledgers/[ledgerId]/assets/[assetId]/route.ts @@ -13,7 +13,7 @@ import { UpdateAssetUseCase } from '@/core/application/use-cases/assets/update-asset-use-case' import { NextResponse } from 'next/server' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' export const GET = applyMiddleware( diff --git a/src/app/api/organizations/[id]/ledgers/[ledgerId]/assets/route.ts b/src/app/api/organizations/[id]/ledgers/[ledgerId]/assets/route.ts index f4d051b3..61e9da33 100644 --- a/src/app/api/organizations/[id]/ledgers/[ledgerId]/assets/route.ts +++ b/src/app/api/organizations/[id]/ledgers/[ledgerId]/assets/route.ts @@ -9,7 +9,7 @@ import { FetchAllAssetsUseCase } from '@/core/application/use-cases/assets/fetch-all-assets-use-case' import { NextResponse } from 'next/server' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' export const POST = applyMiddleware( diff --git a/src/app/api/organizations/[id]/ledgers/[ledgerId]/portfolios-accounts/route.ts b/src/app/api/organizations/[id]/ledgers/[ledgerId]/portfolios-accounts/route.ts index 707790e9..09c01a1c 100644 --- a/src/app/api/organizations/[id]/ledgers/[ledgerId]/portfolios-accounts/route.ts +++ b/src/app/api/organizations/[id]/ledgers/[ledgerId]/portfolios-accounts/route.ts @@ -5,7 +5,7 @@ import { FetchPortfoliosWithAccounts, FetchPortfoliosWithAccountsUseCase } from '@/core/application/use-cases/portfolios-with-accounts/fetch-portfolios-with-account-use-case' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' export const GET = applyMiddleware( diff --git a/src/app/api/organizations/[id]/ledgers/[ledgerId]/portfolios/[portfolioId]/route.ts b/src/app/api/organizations/[id]/ledgers/[ledgerId]/portfolios/[portfolioId]/route.ts index 237057d7..b5c2e0a1 100644 --- a/src/app/api/organizations/[id]/ledgers/[ledgerId]/portfolios/[portfolioId]/route.ts +++ b/src/app/api/organizations/[id]/ledgers/[ledgerId]/portfolios/[portfolioId]/route.ts @@ -13,7 +13,7 @@ import { UpdatePortfolioUseCase } from '@/core/application/use-cases/portfolios/update-portfolio-use-case' import { NextRequest, NextResponse } from 'next/server' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' export const DELETE = applyMiddleware( diff --git a/src/app/api/organizations/[id]/ledgers/[ledgerId]/portfolios/route.ts b/src/app/api/organizations/[id]/ledgers/[ledgerId]/portfolios/route.ts index aa600007..8e6f407e 100644 --- a/src/app/api/organizations/[id]/ledgers/[ledgerId]/portfolios/route.ts +++ b/src/app/api/organizations/[id]/ledgers/[ledgerId]/portfolios/route.ts @@ -9,7 +9,7 @@ import { FetchAllPortfoliosUseCase } from '@/core/application/use-cases/portfolios/fetch-all-portfolio-use-case' import { NextRequest, NextResponse } from 'next/server' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' import { LoggerAggregator } from '@/core/application/logger/logger-aggregator' diff --git a/src/app/api/organizations/[id]/ledgers/[ledgerId]/products/[productId]/route.ts b/src/app/api/organizations/[id]/ledgers/[ledgerId]/products/[productId]/route.ts index 52e39ce0..9b6d4c51 100644 --- a/src/app/api/organizations/[id]/ledgers/[ledgerId]/products/[productId]/route.ts +++ b/src/app/api/organizations/[id]/ledgers/[ledgerId]/products/[productId]/route.ts @@ -13,7 +13,7 @@ import { UpdateProductUseCase } from '@/core/application/use-cases/product/update-product-use-case' import { NextResponse } from 'next/server' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' const fetchProductById: FetchProductById = container.get( diff --git a/src/app/api/organizations/[id]/ledgers/[ledgerId]/products/route.ts b/src/app/api/organizations/[id]/ledgers/[ledgerId]/products/route.ts index 72693a54..be8f0991 100644 --- a/src/app/api/organizations/[id]/ledgers/[ledgerId]/products/route.ts +++ b/src/app/api/organizations/[id]/ledgers/[ledgerId]/products/route.ts @@ -9,7 +9,7 @@ import { FetchAllProductsUseCase } from '@/core/application/use-cases/product/fetch-all-products-use-case' import { NextRequest, NextResponse } from 'next/server' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' interface ProductParams { diff --git a/src/app/api/organizations/[id]/ledgers/[ledgerId]/route.ts b/src/app/api/organizations/[id]/ledgers/[ledgerId]/route.ts index 8d73d9ab..6df433f6 100644 --- a/src/app/api/organizations/[id]/ledgers/[ledgerId]/route.ts +++ b/src/app/api/organizations/[id]/ledgers/[ledgerId]/route.ts @@ -13,7 +13,7 @@ import { UpdateLedgerUseCase } from '@/core/application/use-cases/ledgers/update-ledger-use-case' import { NextResponse } from 'next/server' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' export const GET = applyMiddleware( diff --git a/src/app/api/organizations/[id]/ledgers/[ledgerId]/transactions/[transactionId]/route.ts b/src/app/api/organizations/[id]/ledgers/[ledgerId]/transactions/[transactionId]/route.ts index 88bff53b..5af666c9 100644 --- a/src/app/api/organizations/[id]/ledgers/[ledgerId]/transactions/[transactionId]/route.ts +++ b/src/app/api/organizations/[id]/ledgers/[ledgerId]/transactions/[transactionId]/route.ts @@ -5,7 +5,7 @@ import { import { UpdateTransactionUseCase } from '@/core/application/use-cases/transactions/update-transaction-use-case' import { UpdateTransaction } from '@/core/application/use-cases/transactions/update-transaction-use-case' import { container } from '@/core/infrastructure/container-registry/container-registry' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' import { NextResponse } from 'next/server' diff --git a/src/app/api/organizations/[id]/ledgers/[ledgerId]/transactions/json/route.ts b/src/app/api/organizations/[id]/ledgers/[ledgerId]/transactions/json/route.ts index 7de56328..acc15df3 100644 --- a/src/app/api/organizations/[id]/ledgers/[ledgerId]/transactions/json/route.ts +++ b/src/app/api/organizations/[id]/ledgers/[ledgerId]/transactions/json/route.ts @@ -5,7 +5,7 @@ import { } from '@/core/application/use-cases/transactions/create-transaction-use-case' import { container } from '@/core/infrastructure/container-registry/container-registry' import { loggerMiddleware } from '@/utils/logger-middleware-config' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { NextResponse } from 'next/server' export const POST = applyMiddleware( diff --git a/src/app/api/organizations/[id]/ledgers/[ledgerId]/transactions/route.ts b/src/app/api/organizations/[id]/ledgers/[ledgerId]/transactions/route.ts index 9adcc4a2..35a2f6ec 100644 --- a/src/app/api/organizations/[id]/ledgers/[ledgerId]/transactions/route.ts +++ b/src/app/api/organizations/[id]/ledgers/[ledgerId]/transactions/route.ts @@ -5,7 +5,7 @@ import { FetchAllTransactions, FetchAllTransactionsUseCase } from '@/core/application/use-cases/transactions/fetch-all-transactions-use-case' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' export const GET = applyMiddleware( diff --git a/src/app/api/organizations/[id]/ledgers/ledgers-assets/route.ts b/src/app/api/organizations/[id]/ledgers/ledgers-assets/route.ts index 322aec79..07edc6ed 100644 --- a/src/app/api/organizations/[id]/ledgers/ledgers-assets/route.ts +++ b/src/app/api/organizations/[id]/ledgers/ledgers-assets/route.ts @@ -4,7 +4,7 @@ import { FetchAllLedgersAssets, FetchAllLedgersAssetsUseCase } from '@/core/application/use-cases/ledgers-assets/fetch-ledger-assets-use-case' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' import { NextResponse } from 'next/server' export const GET = applyMiddleware( diff --git a/src/app/api/organizations/[id]/route.ts b/src/app/api/organizations/[id]/route.ts index 1632e432..6dfa1343 100644 --- a/src/app/api/organizations/[id]/route.ts +++ b/src/app/api/organizations/[id]/route.ts @@ -13,7 +13,7 @@ import { } from '@/core/application/use-cases/organizations/update-organization-use-case' import { NextResponse } from 'next/server' import { apiErrorHandler } from '../../utils/api-error-handler' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' export const GET = applyMiddleware( diff --git a/src/app/api/organizations/parentOrganizations/route.ts b/src/app/api/organizations/parentOrganizations/route.ts index 7f8ddc9e..629303e2 100644 --- a/src/app/api/organizations/parentOrganizations/route.ts +++ b/src/app/api/organizations/parentOrganizations/route.ts @@ -4,7 +4,7 @@ import { FetchParentOrganizationsUseCase } from '@/core/application/use-cases/organizations/fetch-parent-organizations-use-case' import { NextResponse } from 'next/server' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' export const GET = applyMiddleware( diff --git a/src/app/api/organizations/route.ts b/src/app/api/organizations/route.ts index fd9d3e29..bc29d142 100644 --- a/src/app/api/organizations/route.ts +++ b/src/app/api/organizations/route.ts @@ -9,7 +9,7 @@ import { } from '@/core/application/use-cases/organizations/fetch-all-organizations-use-case' import { NextResponse } from 'next/server' import { apiErrorHandler } from '../utils/api-error-handler' -import { applyMiddleware } from '@/lib/applymiddleware/apply-middleware' +import { applyMiddleware } from '@/lib/middleware' import { loggerMiddleware } from '@/utils/logger-middleware-config' export const GET = applyMiddleware( diff --git a/src/lib/applymiddleware/apply-middleware.ts b/src/lib/middleware/apply-middleware.ts similarity index 100% rename from src/lib/applymiddleware/apply-middleware.ts rename to src/lib/middleware/apply-middleware.ts diff --git a/src/lib/middleware/index.ts b/src/lib/middleware/index.ts new file mode 100644 index 00000000..58774427 --- /dev/null +++ b/src/lib/middleware/index.ts @@ -0,0 +1,2 @@ +export * from './types' +export * from './apply-middleware' diff --git a/src/lib/applymiddleware/types.ts b/src/lib/middleware/types.ts similarity index 100% rename from src/lib/applymiddleware/types.ts rename to src/lib/middleware/types.ts diff --git a/src/utils/logger-middleware-config.ts b/src/utils/logger-middleware-config.ts index 930c5672..d1366869 100644 --- a/src/utils/logger-middleware-config.ts +++ b/src/utils/logger-middleware-config.ts @@ -1,7 +1,7 @@ import { LoggerAggregator } from '@/core/application/logger/logger-aggregator' import { container } from '@/core/infrastructure/container-registry/container-registry' import { MidazRequestContext } from '@/core/infrastructure/logger/decorators/midaz-id' -import { NextHandler } from '@/lib/applymiddleware/types' +import { NextHandler } from '@/lib/middleware/types' import { NextRequest } from 'next/server' interface LoggerMiddlewareConfig { From 04b5083e24edd871712c17dcfef86fdcc3b6d54a Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Thu, 13 Feb 2025 15:29:04 -0300 Subject: [PATCH 07/17] feat: Created page layout component --- src/components/page/index.tsx | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/components/page/index.tsx diff --git a/src/components/page/index.tsx b/src/components/page/index.tsx new file mode 100644 index 00000000..ac464475 --- /dev/null +++ b/src/components/page/index.tsx @@ -0,0 +1,44 @@ +import { cn } from '@/lib/utils' +import { forwardRef, HTMLAttributes } from 'react' + +export const PageRoot = forwardRef< + HTMLDivElement, + HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +PageRoot.displayName = 'PageRoot' + +export const PageView = forwardRef< + HTMLDivElement, + HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +PageView.displayName = 'PageView' + +export const PageContent = forwardRef< + HTMLDivElement, + HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +PageContent.displayName = 'PageContent' From 79033db3542da0a1b6d3ba015c33f4966561e487 Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Fri, 14 Feb 2025 10:51:45 -0300 Subject: [PATCH 08/17] feat: Adjusted layout setup --- src/app/(onboarding)/onboarding/layout.tsx | 25 ----------- src/app/(routes)/[...not_found]/layout.tsx | 16 +++++++ src/app/(routes)/layout.tsx | 15 +------ src/app/(routes)/ledgers/layout.tsx | 16 +++++++ src/app/(routes)/onboarding/create/layout.tsx | 8 ++++ src/app/(routes)/onboarding/layout.tsx | 20 +++++++++ src/app/(routes)/page.tsx | 44 +++++++++++-------- src/app/(routes)/settings/layout.tsx | 16 +++++++ src/app/(routes)/transactions/layout.tsx | 16 +++++++ 9 files changed, 119 insertions(+), 57 deletions(-) delete mode 100644 src/app/(onboarding)/onboarding/layout.tsx create mode 100644 src/app/(routes)/[...not_found]/layout.tsx create mode 100644 src/app/(routes)/ledgers/layout.tsx create mode 100644 src/app/(routes)/onboarding/create/layout.tsx create mode 100644 src/app/(routes)/onboarding/layout.tsx create mode 100644 src/app/(routes)/settings/layout.tsx create mode 100644 src/app/(routes)/transactions/layout.tsx diff --git a/src/app/(onboarding)/onboarding/layout.tsx b/src/app/(onboarding)/onboarding/layout.tsx deleted file mode 100644 index 830f5dd1..00000000 --- a/src/app/(onboarding)/onboarding/layout.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react' -import '@/app/globals.css' -import { redirect, RedirectType } from 'next/navigation' -import { getServerSession } from 'next-auth' -import { nextAuthCasdoorOptions } from '@/core/infrastructure/next-auth/casdoor/next-auth-casdoor-provider' -import { StaticHeader } from '@/components/header' - -export default async function RootLayout({ - children -}: { - children: React.ReactNode -}) { - const session = await getServerSession(nextAuthCasdoorOptions) - - if (!session) { - redirect(`/signin`, RedirectType.replace) - } - - return ( - - - {children} - - ) -} diff --git a/src/app/(routes)/[...not_found]/layout.tsx b/src/app/(routes)/[...not_found]/layout.tsx new file mode 100644 index 00000000..f3c79a55 --- /dev/null +++ b/src/app/(routes)/[...not_found]/layout.tsx @@ -0,0 +1,16 @@ +import { ReactNode } from 'react' +import { Header } from '@/components/header' +import { Sidebar } from '@/components/sidebar' +import { PageContent, PageRoot, PageView } from '@/components/page' + +export default function RootLayout({ children }: { children: ReactNode }) { + return ( + + + +
+ {children} + + + ) +} diff --git a/src/app/(routes)/layout.tsx b/src/app/(routes)/layout.tsx index 08cd5770..6b2fcbb6 100644 --- a/src/app/(routes)/layout.tsx +++ b/src/app/(routes)/layout.tsx @@ -1,8 +1,6 @@ import React from 'react' import '@/app/globals.css' import { redirect, RedirectType } from 'next/navigation' -import { Header } from '@/components/header' -import { Sidebar } from '@/components/sidebar' import { SidebarProvider } from '@/components/sidebar/primitive' import { OrganizationProvider } from '@/context/organization-provider' import { getServerSession } from 'next-auth' @@ -23,18 +21,7 @@ export default async function RootLayout({ return ( - -
- -
-
- -
- {children} -
-
-
-
+ {children}
) diff --git a/src/app/(routes)/ledgers/layout.tsx b/src/app/(routes)/ledgers/layout.tsx new file mode 100644 index 00000000..f3c79a55 --- /dev/null +++ b/src/app/(routes)/ledgers/layout.tsx @@ -0,0 +1,16 @@ +import { ReactNode } from 'react' +import { Header } from '@/components/header' +import { Sidebar } from '@/components/sidebar' +import { PageContent, PageRoot, PageView } from '@/components/page' + +export default function RootLayout({ children }: { children: ReactNode }) { + return ( + + + +
+ {children} + + + ) +} diff --git a/src/app/(routes)/onboarding/create/layout.tsx b/src/app/(routes)/onboarding/create/layout.tsx new file mode 100644 index 00000000..67f06563 --- /dev/null +++ b/src/app/(routes)/onboarding/create/layout.tsx @@ -0,0 +1,8 @@ +'use client' + +import { ReactNode } from 'react' +import { OnboardFormProvider } from './onboard-form-provider' + +export default function RootLayout({ children }: { children: ReactNode }) { + return {children} +} diff --git a/src/app/(routes)/onboarding/layout.tsx b/src/app/(routes)/onboarding/layout.tsx new file mode 100644 index 00000000..2a74a0bf --- /dev/null +++ b/src/app/(routes)/onboarding/layout.tsx @@ -0,0 +1,20 @@ +import { ReactNode } from 'react' +import { StaticHeader } from '@/components/header' +import { PageContent, PageRoot, PageView } from '@/components/page' + +export default async function RootLayout({ + children +}: { + children: ReactNode +}) { + return ( + <> + + + + {children} + + + + ) +} diff --git a/src/app/(routes)/page.tsx b/src/app/(routes)/page.tsx index bf90eccf..066d0884 100644 --- a/src/app/(routes)/page.tsx +++ b/src/app/(routes)/page.tsx @@ -3,8 +3,10 @@ import { useListOrganizations } from '@/client/organizations' import { PageHeader } from '@/components/page-header' import { useIntl } from 'react-intl' -import React from 'react' import { useSession } from 'next-auth/react' +import { PageContent, PageRoot, PageView } from '@/components/page' +import { Sidebar } from '@/components/sidebar' +import { Header } from '@/components/header' const Page = () => { const intl = useIntl() @@ -17,23 +19,29 @@ const Page = () => { } return ( - - {hasOrganizations && ( - - - - )} - + + + +
+ + {hasOrganizations && ( + + + + )} + + + ) } diff --git a/src/app/(routes)/settings/layout.tsx b/src/app/(routes)/settings/layout.tsx new file mode 100644 index 00000000..f3c79a55 --- /dev/null +++ b/src/app/(routes)/settings/layout.tsx @@ -0,0 +1,16 @@ +import { ReactNode } from 'react' +import { Header } from '@/components/header' +import { Sidebar } from '@/components/sidebar' +import { PageContent, PageRoot, PageView } from '@/components/page' + +export default function RootLayout({ children }: { children: ReactNode }) { + return ( + + + +
+ {children} + + + ) +} diff --git a/src/app/(routes)/transactions/layout.tsx b/src/app/(routes)/transactions/layout.tsx new file mode 100644 index 00000000..f3c79a55 --- /dev/null +++ b/src/app/(routes)/transactions/layout.tsx @@ -0,0 +1,16 @@ +import { ReactNode } from 'react' +import { Header } from '@/components/header' +import { Sidebar } from '@/components/sidebar' +import { PageContent, PageRoot, PageView } from '@/components/page' + +export default function RootLayout({ children }: { children: ReactNode }) { + return ( + + + +
+ {children} + + + ) +} From 47f4ae6544ecd3bb9fbf14cf87c67cdcdb53ec07 Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Fri, 14 Feb 2025 11:03:15 -0300 Subject: [PATCH 09/17] feat: Implemented helper components --- src/app/(routes)/onboarding/create/schemas.ts | 29 ++++++++ .../(routes)/onboarding/create/stepper.tsx | 74 +++++++++++++++++++ .../onboarding/onboard-dialog/index.tsx | 64 ++++++++++++++++ src/app/(routes)/onboarding/onboard-title.tsx | 19 +++++ .../organizations-form-color-field.tsx | 2 +- 5 files changed, 187 insertions(+), 1 deletion(-) create mode 100644 src/app/(routes)/onboarding/create/schemas.ts create mode 100644 src/app/(routes)/onboarding/create/stepper.tsx create mode 100644 src/app/(routes)/onboarding/onboard-dialog/index.tsx create mode 100644 src/app/(routes)/onboarding/onboard-title.tsx diff --git a/src/app/(routes)/onboarding/create/schemas.ts b/src/app/(routes)/onboarding/create/schemas.ts new file mode 100644 index 00000000..00ec2a82 --- /dev/null +++ b/src/app/(routes)/onboarding/create/schemas.ts @@ -0,0 +1,29 @@ +import { z } from 'zod' +import { organization } from '@/schema/organization' + +export const detailFormSchema = z.object({ + legalName: organization.legalName, + doingBusinessAs: organization.doingBusinessAs, + legalDocument: organization.legalDocument +}) +export type DetailFormData = z.infer + +export const addressFormSchema = z.object({ + address: z.object({ + line1: organization.address.line1, + line2: organization.address.line2, + city: organization.address.city, + state: organization.address.state, + country: organization.address.country, + zipCode: organization.address.zipCode + }) +}) +export type AddressFormData = z.infer + +export const themeFormSchema = z.object({ + accentColor: organization.accentColor, + avatar: organization.avatar +}) +export type ThemeFormData = z.infer + +export type FormData = DetailFormData & AddressFormData & ThemeFormData diff --git a/src/app/(routes)/onboarding/create/stepper.tsx b/src/app/(routes)/onboarding/create/stepper.tsx new file mode 100644 index 00000000..b76ab7a3 --- /dev/null +++ b/src/app/(routes)/onboarding/create/stepper.tsx @@ -0,0 +1,74 @@ +import { + Stepper as PrimitiveStepper, + StepperItem, + StepperItemNumber, + StepperItemText +} from '@/components/ui/stepper' +import { useIntl } from 'react-intl' +import { useOnboardForm } from './onboard-form-provider' + +export const Stepper = () => { + const intl = useIntl() + + const { step, setStep } = useOnboardForm() + + return ( + + 0} + onClick={() => { + if (step > 0) { + setStep(0) + } + }} + > + 1 + + + 1} + onClick={() => { + if (step > 1) { + setStep(1) + } + }} + > + 2 + + + 2}> + 3 + + + + ) +} diff --git a/src/app/(routes)/onboarding/onboard-dialog/index.tsx b/src/app/(routes)/onboarding/onboard-dialog/index.tsx new file mode 100644 index 00000000..821b89b3 --- /dev/null +++ b/src/app/(routes)/onboarding/onboard-dialog/index.tsx @@ -0,0 +1,64 @@ +import { DialogContent, DialogTitle } from '@/components/ui/dialog' +import { cn } from '@/lib/utils' +import { DialogContentProps } from '@radix-ui/react-dialog' +import { forwardRef, HTMLAttributes, ElementRef } from 'react' + +export const OnboardDialogContent = forwardRef< + ElementRef, + DialogContentProps +>(({ className, ...props }, ref) => ( + +)) +OnboardDialogContent.displayName = 'OnboardDialogContent' + +export const OnboardDialogHeader = forwardRef< + HTMLDivElement, + HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +OnboardDialogHeader.displayName = 'OnboardDialogHeader' + +export type OnboardDialogTitleProps = HTMLAttributes & { + upperTitle: string + title: string +} + +export const OnboardDialogTitle = forwardRef< + HTMLDivElement, + OnboardDialogTitleProps +>(({ upperTitle, title, className, ...props }, ref) => ( +
+

{upperTitle}

+ + {title} + +
+)) +OnboardDialogTitle.displayName = 'OnboardDialogTitle' + +export const OnboardDialogIcon = forwardRef< + HTMLDivElement, + HTMLAttributes +>(({ className, children, ...props }, ref) => ( +
+
{children}
+
+)) +OnboardDialogIcon.displayName = 'OnboardDialogIcon' diff --git a/src/app/(routes)/onboarding/onboard-title.tsx b/src/app/(routes)/onboarding/onboard-title.tsx new file mode 100644 index 00000000..19c24b1a --- /dev/null +++ b/src/app/(routes)/onboarding/onboard-title.tsx @@ -0,0 +1,19 @@ +import { cn } from '@/lib/utils' +import { forwardRef, HTMLAttributes } from 'react' + +type OnboardTitleProps = HTMLAttributes & { + title: string + subtitle?: string +} + +export const OnboardTitle = forwardRef( + ({ className, title, subtitle, ...props }, ref) => ( +
+ {subtitle && ( +

{subtitle}

+ )} +

{title}

+
+ ) +) +OnboardTitle.displayName = 'OnboardTitle' diff --git a/src/app/(routes)/settings/organizations/organizations-form-color-field.tsx b/src/app/(routes)/settings/organizations/organizations-form-color-field.tsx index b104131f..73ea7e3f 100644 --- a/src/app/(routes)/settings/organizations/organizations-form-color-field.tsx +++ b/src/app/(routes)/settings/organizations/organizations-form-color-field.tsx @@ -62,7 +62,7 @@ ColorInput.displayName = 'ColorInput' export type OrganizationsFormColorFieldProps = { name: string - description: string + description?: string control: Control } From 5af1ba682c10577a1ae92231d33375a3350f3452 Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Fri, 14 Feb 2025 11:21:18 -0300 Subject: [PATCH 10/17] feat: Created onboarding endpoints --- src/app/api/onboarding/[id]/complete/route.ts | 33 +++++++++++++ src/app/api/onboarding/route.ts | 34 +++++++++++++ .../complete-onboarding-use-case.ts | 49 +++++++++++++++++++ ...create-onboarding-organization-use-case.ts | 49 +++++++++++++++++++ .../container-registry/container-registry.ts | 3 +- .../use-cases/onboarding-module.ts | 18 +++++++ 6 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 src/app/api/onboarding/[id]/complete/route.ts create mode 100644 src/app/api/onboarding/route.ts create mode 100644 src/core/application/use-cases/onboarding/complete-onboarding-use-case.ts create mode 100644 src/core/application/use-cases/onboarding/create-onboarding-organization-use-case.ts create mode 100644 src/core/infrastructure/container-registry/use-cases/onboarding-module.ts diff --git a/src/app/api/onboarding/[id]/complete/route.ts b/src/app/api/onboarding/[id]/complete/route.ts new file mode 100644 index 00000000..4d9bf51a --- /dev/null +++ b/src/app/api/onboarding/[id]/complete/route.ts @@ -0,0 +1,33 @@ +import { container } from '@/core/infrastructure/container-registry/container-registry' +import { applyMiddleware } from '@/lib/middleware' +import { loggerMiddleware } from '@/utils/logger-middleware-config' +import { NextResponse } from 'next/server' +import { apiErrorHandler } from '../../../utils/api-error-handler' +import { + CompleteOnboarding, + CompleteOnboardingUseCase +} from '@/core/application/use-cases/onboarding/complete-onboarding-use-case' + +export const POST = applyMiddleware( + [ + loggerMiddleware({ + operationName: 'completeOnboarding', + method: 'POST' + }) + ], + async (request: Request, { params }: { params: { id: string } }) => { + try { + const completeOnboardingUseCase: CompleteOnboarding = + container.get(CompleteOnboardingUseCase) + const body = await request.json() + + const ledger = await completeOnboardingUseCase.execute(params.id, body) + + return NextResponse.json(ledger) + } catch (error: any) { + const { message, status } = await apiErrorHandler(error) + + return NextResponse.json({ message }, { status }) + } + } +) diff --git a/src/app/api/onboarding/route.ts b/src/app/api/onboarding/route.ts new file mode 100644 index 00000000..a6d49c64 --- /dev/null +++ b/src/app/api/onboarding/route.ts @@ -0,0 +1,34 @@ +import { container } from '@/core/infrastructure/container-registry/container-registry' +import { applyMiddleware } from '@/lib/middleware' +import { loggerMiddleware } from '@/utils/logger-middleware-config' +import { NextResponse } from 'next/server' +import { apiErrorHandler } from '../utils/api-error-handler' +import { + CreateOnboardingOrganization, + CreateOnboardingOrganizationUseCase +} from '@/core/application/use-cases/onboarding/create-onboarding-organization-use-case' + +export const POST = applyMiddleware( + [ + loggerMiddleware({ + operationName: 'createOnboardingOrganization', + method: 'POST' + }) + ], + async (request: Request) => { + try { + const createOnboardingOrganization: CreateOnboardingOrganization = + container.get( + CreateOnboardingOrganizationUseCase + ) + const body = await request.json() + const organization = await createOnboardingOrganization.execute(body) + + return NextResponse.json(organization) + } catch (error: any) { + const { message, status } = await apiErrorHandler(error) + + return NextResponse.json({ message }, { status }) + } + } +) diff --git a/src/core/application/use-cases/onboarding/complete-onboarding-use-case.ts b/src/core/application/use-cases/onboarding/complete-onboarding-use-case.ts new file mode 100644 index 00000000..cca87b76 --- /dev/null +++ b/src/core/application/use-cases/onboarding/complete-onboarding-use-case.ts @@ -0,0 +1,49 @@ +import { LedgerEntity } from '@/core/domain/entities/ledger-entity' +import { CreateLedgerDto } from '../../dto/create-ledger-dto' +import { CreateLedgerRepository } from '@/core/domain/repositories/ledgers/create-ledger-repository' +import { LedgerResponseDto } from '../../dto/ledger-response-dto' +import { inject, injectable } from 'inversify' +import { LedgerMapper } from '../../mappers/ledger-mapper' +import { UpdateOrganizationRepository } from '@/core/domain/repositories/organizations/update-organization-repository' +import { FetchOrganizationByIdRepository } from '@/core/domain/repositories/organizations/fetch-organization-by-id-repository' +import { omit } from 'lodash' + +export interface CompleteOnboarding { + execute: ( + organizationId: string, + ledger: CreateLedgerDto + ) => Promise +} + +@injectable() +export class CompleteOnboardingUseCase implements CompleteOnboarding { + constructor( + @inject(FetchOrganizationByIdRepository) + private readonly fetchOrganizationByIdRepository: FetchOrganizationByIdRepository, + @inject(UpdateOrganizationRepository) + private readonly updateOrganizationRepository: UpdateOrganizationRepository, + @inject(CreateLedgerRepository) + private readonly createLedgerRepository: CreateLedgerRepository + ) {} + + async execute( + organizationId: string, + ledger: CreateLedgerDto + ): Promise { + const organization = + await this.fetchOrganizationByIdRepository.fetchById(organizationId) + + await this.updateOrganizationRepository.updateOrganization(organizationId, { + // ...organization, + metadata: omit(organization.metadata, 'onboarding') + }) + + const ledgerEntity: LedgerEntity = LedgerMapper.toDomain(ledger) + const ledgerCreated = await this.createLedgerRepository.create( + organizationId, + ledgerEntity + ) + + return LedgerMapper.toResponseDto(ledgerCreated) + } +} diff --git a/src/core/application/use-cases/onboarding/create-onboarding-organization-use-case.ts b/src/core/application/use-cases/onboarding/create-onboarding-organization-use-case.ts new file mode 100644 index 00000000..abbc291c --- /dev/null +++ b/src/core/application/use-cases/onboarding/create-onboarding-organization-use-case.ts @@ -0,0 +1,49 @@ +import { CreateOrganizationRepository } from '@/core/domain/repositories/organizations/create-organization-repository' +import { CreateOrganizationDto } from '../../dto/create-organization-dto' +import { OrganizationResponseDto } from '../../dto/organization-response-dto' +import { OrganizationEntity } from '@/core/domain/entities/organization-entity' +import { OrganizationMapper } from '../../mappers/organization-mapper' +import { MidazError } from '@/core/infrastructure/errors/midaz-error' +import { inject, injectable } from 'inversify' + +export interface CreateOnboardingOrganization { + execute: ( + organization: CreateOrganizationDto + ) => Promise +} + +@injectable() +export class CreateOnboardingOrganizationUseCase + implements CreateOnboardingOrganization +{ + constructor( + @inject(CreateOrganizationRepository) + private readonly createOrganizationRepository: CreateOrganizationRepository + ) {} + + async execute( + organizationData: CreateOrganizationDto + ): Promise { + try { + const organizationEntity: OrganizationEntity = + OrganizationMapper.toDomain({ + ...organizationData, + metadata: { + ...organizationData.metadata, + onboarding: true + } + }) + + const organizationCreated = + await this.createOrganizationRepository.create(organizationEntity) + + return OrganizationMapper.toResponseDto(organizationCreated) + } catch (error: unknown) { + if (error instanceof MidazError) { + throw error + } + + throw new Error('Error creating onboarding organization Use Case') + } + } +} diff --git a/src/core/infrastructure/container-registry/container-registry.ts b/src/core/infrastructure/container-registry/container-registry.ts index 93255ecf..a287a852 100644 --- a/src/core/infrastructure/container-registry/container-registry.ts +++ b/src/core/infrastructure/container-registry/container-registry.ts @@ -14,8 +14,8 @@ import { LoggerModule } from '../logger/module/logger-module' import { LoggerApplicationModule } from './logger-application-module' import { MidazRequestContext } from '../logger/decorators/midaz-id' import { TransactionUseCaseModule } from './use-cases/transactions-module' -import { MidazHttpFetchUtils } from '../utils/http-fetch-utils' import { MidazHttpFetchModule } from './midaz-http-fetch-module' +import { OnboardingUseCaseModule } from './use-cases/onboarding-module' export const container = new Container() @@ -24,6 +24,7 @@ container.load(AuthUseCaseModule) container.load(LoggerModule) container.load(MidazModule) +container.load(OnboardingUseCaseModule) container.load(OrganizationUseCaseModule) container.load(LedgerUseCaseModule) container.load(PortfolioUseCaseModule) diff --git a/src/core/infrastructure/container-registry/use-cases/onboarding-module.ts b/src/core/infrastructure/container-registry/use-cases/onboarding-module.ts new file mode 100644 index 00000000..46bd8637 --- /dev/null +++ b/src/core/infrastructure/container-registry/use-cases/onboarding-module.ts @@ -0,0 +1,18 @@ +import { + CreateOnboardingOrganization, + CreateOnboardingOrganizationUseCase +} from '@/core/application/use-cases/onboarding/create-onboarding-organization-use-case' +import { Container, ContainerModule } from '../../utils/di/container' +import { + CompleteOnboarding, + CompleteOnboardingUseCase +} from '@/core/application/use-cases/onboarding/complete-onboarding-use-case' + +export const OnboardingUseCaseModule = new ContainerModule( + (container: Container) => { + container + .bind(CreateOnboardingOrganizationUseCase) + .toSelf() + container.bind(CompleteOnboardingUseCase).toSelf() + } +) From 2ff6c35dcba5e691f5da6e50330aacf9dbc8320f Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Fri, 14 Feb 2025 12:31:50 -0300 Subject: [PATCH 11/17] feat: Implemented onboarding redirect --- src/client/onboarding.ts | 26 +++++++++ src/context/organization-provider/index.tsx | 2 +- .../organization-provider-client.tsx | 55 ++++++++++++++++--- .../complete-onboarding-use-case.ts | 3 +- 4 files changed, 75 insertions(+), 11 deletions(-) create mode 100644 src/client/onboarding.ts diff --git a/src/client/onboarding.ts b/src/client/onboarding.ts new file mode 100644 index 00000000..b8ae12de --- /dev/null +++ b/src/client/onboarding.ts @@ -0,0 +1,26 @@ +import { postFetcher } from '@/lib/fetcher' +import { OrganizationsType } from '@/types/organizations-type' +import { useMutation, UseMutationOptions } from '@tanstack/react-query' + +export const useCreateOnboardingOrganization = ({ ...options }) => { + return useMutation({ + mutationKey: ['onboarding'], + mutationFn: postFetcher(`/api/onboarding`), + ...options + }) +} + +type UseCompleteOnboardingProps = UseMutationOptions & { + organizationId: string +} + +export const useCompleteOnboarding = ({ + organizationId, + ...options +}: UseCompleteOnboardingProps) => { + return useMutation({ + mutationKey: ['onboarding', organizationId, 'complete'], + mutationFn: postFetcher(`/api/onboarding/${organizationId}/complete`), + ...options + }) +} diff --git a/src/context/organization-provider/index.tsx b/src/context/organization-provider/index.tsx index 557eea15..0ea2fd35 100644 --- a/src/context/organization-provider/index.tsx +++ b/src/context/organization-provider/index.tsx @@ -25,7 +25,7 @@ export const OrganizationProvider = async ({ ) return ( - + {children} ) diff --git a/src/context/organization-provider/organization-provider-client.tsx b/src/context/organization-provider/organization-provider-client.tsx index 9dd636ea..4bc21d3e 100644 --- a/src/context/organization-provider/organization-provider-client.tsx +++ b/src/context/organization-provider/organization-provider-client.tsx @@ -1,33 +1,70 @@ 'use client' -import React from 'react' +import { + createContext, + PropsWithChildren, + useContext, + useEffect, + useState +} from 'react' import { OrganizationEntity } from '@/core/domain/entities/organization-entity' +import { usePathname, useRouter } from 'next/navigation' type OrganizationContextProps = { currentOrganization: OrganizationEntity setOrganization: (organization: OrganizationEntity) => void } -const OrganizationContext = React.createContext( +const OrganizationContext = createContext( {} as OrganizationContextProps ) -export const useOrganization = () => React.useContext(OrganizationContext) +export const useOrganization = () => useContext(OrganizationContext) -export type OrganizationProviderClientProps = React.PropsWithChildren & { - organization: OrganizationEntity +export type OrganizationProviderClientProps = PropsWithChildren & { + organizations: OrganizationEntity[] } export const OrganizationProviderClient = ({ - organization: organizationProp, + organizations: organizationsProp, children }: OrganizationProviderClientProps) => { - const [organization, setOrganization] = - React.useState(organizationProp) + const router = useRouter() + const pathname = usePathname() + const [current, setCurrent] = useState( + {} as OrganizationEntity + ) + const [organizations, setOrganizations] = useState( + organizationsProp ?? [] + ) + + useEffect(() => { + // Do nothing if the user is already at the onboarding + if (pathname.includes('/onboarding')) { + return + } + + // Redirect user to onboarding if it has no organizations + if (organizations.length === 0) { + router.replace('/onboarding') + } + + // Redirect user to ledger onboarding if it has only one organization and no ledgers + if (organizations.length === 1 && current?.metadata?.onboarding === true) { + router.replace('/onboarding/ledger') + } + }, [current?.id, organizations.length]) + + // Initialize a current organization + useEffect(() => { + if (organizations.length > 0) { + setCurrent(organizations[0]) + } + }, []) return ( {children} diff --git a/src/core/application/use-cases/onboarding/complete-onboarding-use-case.ts b/src/core/application/use-cases/onboarding/complete-onboarding-use-case.ts index cca87b76..5b335d16 100644 --- a/src/core/application/use-cases/onboarding/complete-onboarding-use-case.ts +++ b/src/core/application/use-cases/onboarding/complete-onboarding-use-case.ts @@ -34,7 +34,8 @@ export class CompleteOnboardingUseCase implements CompleteOnboarding { await this.fetchOrganizationByIdRepository.fetchById(organizationId) await this.updateOrganizationRepository.updateOrganization(organizationId, { - // ...organization, + legalName: organization.legalName, + doingBusinessAs: organization.doingBusinessAs, metadata: omit(organization.metadata, 'onboarding') }) From 5962d9aa5206837d982801a9dd91019a635aa9c7 Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Fri, 14 Feb 2025 12:39:43 -0300 Subject: [PATCH 12/17] feat: Implemented Form --- public/animations/confetti-ball.gif | Bin 0 -> 302605 bytes src/app/(onboarding)/onboarding/page.tsx | 78 -------- .../onboarding/create/onboard-address.tsx | 158 +++++++++++++++ .../onboarding/create/onboard-detail.tsx | 126 ++++++++++++ .../create/onboard-form-provider.tsx | 82 ++++++++ .../onboarding/create/onboard-theme.tsx | 162 +++++++++++++++ src/app/(routes)/onboarding/create/page.tsx | 64 ++++++ .../ledger/ledger-created-dialog.tsx | 66 ++++++ .../ledger/onboard-created-dialog.tsx | 80 ++++++++ src/app/(routes)/onboarding/ledger/page.tsx | 189 ++++++++++++++++++ src/app/(routes)/onboarding/onboard-title.tsx | 2 +- src/app/(routes)/onboarding/page.tsx | 69 +++++++ src/lib/fetcher/index.ts | 4 +- 13 files changed, 1000 insertions(+), 80 deletions(-) create mode 100644 public/animations/confetti-ball.gif delete mode 100644 src/app/(onboarding)/onboarding/page.tsx create mode 100644 src/app/(routes)/onboarding/create/onboard-address.tsx create mode 100644 src/app/(routes)/onboarding/create/onboard-detail.tsx create mode 100644 src/app/(routes)/onboarding/create/onboard-form-provider.tsx create mode 100644 src/app/(routes)/onboarding/create/onboard-theme.tsx create mode 100644 src/app/(routes)/onboarding/create/page.tsx create mode 100644 src/app/(routes)/onboarding/ledger/ledger-created-dialog.tsx create mode 100644 src/app/(routes)/onboarding/ledger/onboard-created-dialog.tsx create mode 100644 src/app/(routes)/onboarding/ledger/page.tsx create mode 100644 src/app/(routes)/onboarding/page.tsx diff --git a/public/animations/confetti-ball.gif b/public/animations/confetti-ball.gif new file mode 100644 index 0000000000000000000000000000000000000000..3128693f3ff39058eb3cdde1f8fdc0c81326aa78 GIT binary patch literal 302605 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�jc4#jA^a7a7E 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

m-Jqf}%x*1&NmEv;2|zO%(tOAk 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

#;D+FUkNo!8ZyLRvfA$f!3|gT-;$AFlgNXC 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 literal 0 HcmV?d00001 diff --git a/src/app/(onboarding)/onboarding/page.tsx b/src/app/(onboarding)/onboarding/page.tsx deleted file mode 100644 index 7178815c..00000000 --- a/src/app/(onboarding)/onboarding/page.tsx +++ /dev/null @@ -1,78 +0,0 @@ -'use client' - -import { useListOrganizations } from '@/client/organizations' -import { Button } from '@/components/ui/button' -import { - Dialog, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle -} from '@/components/ui/dialog' -import Rocket from '@/animations/rocket.gif' -import Image from 'next/image' -import { useRouter } from 'next/navigation' -import React from 'react' -import { useIntl } from 'react-intl' - -const Page = () => { - const intl = useIntl() - const router = useRouter() - const { data } = useListOrganizations({}) - - return ( -

- - -
-
-

- {intl.formatMessage({ - id: 'onboarding.dialog.firstSteps', - defaultMessage: 'First steps' - })} -

- - {intl.formatMessage({ - id: 'onboarding.dialog.title', - defaultMessage: 'Launch the Midaz Console' - })} - -
-
-
- Rocket -
-
-
- - - {intl.formatMessage({ - id: 'onboarding.dialog.description', - defaultMessage: `Complete your Organization's registration and create the first Ledger to activate the powerful features of the Midaz Console.` - })} - -
- - - - -
-
- ) -} - -export default Page diff --git a/src/app/(routes)/onboarding/create/onboard-address.tsx b/src/app/(routes)/onboarding/create/onboard-address.tsx new file mode 100644 index 00000000..04e71a48 --- /dev/null +++ b/src/app/(routes)/onboarding/create/onboard-address.tsx @@ -0,0 +1,158 @@ +import { Form } from '@/components/ui/form' +import { Stepper } from './stepper' +import { Paper } from '@/components/ui/paper' +import { useIntl } from 'react-intl' +import { useForm } from 'react-hook-form' +import { CountryField, InputField, StateField } from '@/components/form' +import { PageFooter, PageFooterSection } from '@/components/page-footer' +import { Button } from '@/components/ui/button' +import { useOnboardForm } from './onboard-form-provider' +import { OnboardTitle } from '../onboard-title' + +const initialValues = { + address: { + line1: '', + line2: '', + country: '', + state: '', + city: '', + zipCode: '' + } +} + +type OnboardAddressProps = { + onCancel?: () => void +} + +export function OnboardAddress({ onCancel }: OnboardAddressProps) { + const intl = useIntl() + + const form = useForm({ + defaultValues: initialValues + }) + + const { handleNext, setData } = useOnboardForm() + + const handleSubmit = form.handleSubmit((data) => { + setData(data) + handleNext() + }) + + return ( + <> + +
+ +
+ + + + + + + + + + + + + +
+
+ + + + + + + + + + + ) +} diff --git a/src/app/(routes)/onboarding/create/onboard-detail.tsx b/src/app/(routes)/onboarding/create/onboard-detail.tsx new file mode 100644 index 00000000..467d7528 --- /dev/null +++ b/src/app/(routes)/onboarding/create/onboard-detail.tsx @@ -0,0 +1,126 @@ +'use client' + +import { Paper } from '@/components/ui/paper' +import { useIntl } from 'react-intl' +import { Stepper } from './stepper' +import { InputField } from '@/components/form' +import { useForm } from 'react-hook-form' +import { Form } from '@/components/ui/form' +import { PageFooter, PageFooterSection } from '@/components/page-footer' +import { Button } from '@/components/ui/button' +import { useOnboardForm } from './onboard-form-provider' +import { zodResolver } from '@hookform/resolvers/zod' +import { DetailFormData, detailFormSchema } from './schemas' +import { OnboardTitle } from '../onboard-title' + +const initialValues = { + legalName: '', + doingBusinessAs: '', + legalDocument: '' +} + +type OnboardDetailProps = { + onCancel?: () => void +} + +export function OnboardDetail({ onCancel }: OnboardDetailProps) { + const intl = useIntl() + + const form = useForm({ + resolver: zodResolver(detailFormSchema), + defaultValues: initialValues + }) + + const { handleNext, setData } = useOnboardForm() + + const handleSubmit = form.handleSubmit((data) => { + setData(data) + handleNext() + }) + + return ( + <> + +
+ +
+ +
+ +
+ + + + +
+
+
+ + + + + + + + + + + ) +} diff --git a/src/app/(routes)/onboarding/create/onboard-form-provider.tsx b/src/app/(routes)/onboarding/create/onboard-form-provider.tsx new file mode 100644 index 00000000..91b3aaa5 --- /dev/null +++ b/src/app/(routes)/onboarding/create/onboard-form-provider.tsx @@ -0,0 +1,82 @@ +import { createContext, PropsWithChildren, useContext, useState } from 'react' +import { useStepper } from '@/hooks/use-stepper' +import { FormData } from './schemas' +import { useRouter } from 'next/navigation' +import { omit } from 'lodash' +import { createQueryString } from '@/lib/search' +import { OrganizationsType } from '@/types/organizations-type' +import { useOrganization } from '@/context/organization-provider/organization-provider-client' +import { useCreateOnboardingOrganization } from '@/client/onboarding' +import useCustomToast from '@/hooks/use-custom-toast' + +type OnboardFormContextProps = ReturnType & { + data: FormData + setData: (values: Partial) => void + loading: boolean + handleCancel: () => void + handleSubmit: (values?: Partial) => void +} + +const OnboardFormContext = createContext( + {} as OnboardFormContextProps +) + +export function useOnboardForm() { + return useContext(OnboardFormContext) +} + +export type OnboardFormProviderProps = PropsWithChildren + +export function OnboardFormProvider({ children }: OnboardFormProviderProps) { + const router = useRouter() + const { setOrganization } = useOrganization() + const { showError } = useCustomToast() + + const [data, _setData] = useState({} as FormData) + const stepper = useStepper({ maxSteps: 3 }) + + const { mutate: createOrganization, isPending: loading } = + useCreateOnboardingOrganization({ + onSuccess: (organization: OrganizationsType) => { + setOrganization(organization) + router.push(`/onboarding/ledger` + createQueryString({ process: true })) + }, + onError: (error: any) => { + showError(error.message) + } + }) + + const parse = (data: FormData) => ({ + ...omit(data, ['accentColor', 'avatar']), + metadata: { + ...(data?.accentColor ? { accentColor: data?.accentColor } : {}), + ...(data?.avatar ? { avatar: data?.avatar } : {}) + } + }) + + const handleCancel = () => router.push('/onboarding') + + const handleSubmit = (values: Partial = {} as FormData) => { + const newData = { ...data, ...values } as FormData + setData(newData) + createOrganization(parse(newData) as any) + } + + const setData = (values: Partial) => + _setData((prev) => ({ ...prev, ...values })) + + return ( + + {children} + + ) +} diff --git a/src/app/(routes)/onboarding/create/onboard-theme.tsx b/src/app/(routes)/onboarding/create/onboard-theme.tsx new file mode 100644 index 00000000..c261caca --- /dev/null +++ b/src/app/(routes)/onboarding/create/onboard-theme.tsx @@ -0,0 +1,162 @@ +'use client' + +import { Paper } from '@/components/ui/paper' +import { useIntl } from 'react-intl' +import { Stepper } from './stepper' +import { useForm } from 'react-hook-form' +import { Form, FormDescription } from '@/components/ui/form' +import { OrganizationsFormAvatarField } from '@/app/(routes)/settings/organizations/organizations-form-avatar-field' +import { Separator } from '@/components/ui/separator' +import { useOnboardForm } from './onboard-form-provider' +import { PageFooter, PageFooterSection } from '@/components/page-footer' +import { Button } from '@/components/ui/button' +import { Check } from 'lucide-react' +import { zodResolver } from '@hookform/resolvers/zod' +import { themeFormSchema } from './schemas' +import { OrganizationsFormColorField } from '@/app/(routes)/settings/organizations/organizations-form-color-field' +import ConfirmationDialog from '@/components/confirmation-dialog' +import { useConfirmDialog } from '@/components/confirmation-dialog/use-confirm-dialog' +import { LoadingButton } from '@/components/ui/loading-button' +import { OnboardTitle } from '../onboard-title' + +const initialValues = { + accentColor: '', + avatar: '' +} + +type OnboardThemeProps = { + onCancel?: () => void +} + +export function OnboardTheme({ onCancel }: OnboardThemeProps) { + const intl = useIntl() + + const form = useForm({ + resolver: zodResolver(themeFormSchema), + defaultValues: initialValues + }) + + const { handleSubmit: handleFormSubmit, loading } = useOnboardForm() + + const handleSubmit = () => + form.handleSubmit((values) => { + if (values.accentColor === '' && values.avatar === '') { + handleDialogOpen('') + } else { + handleFormSubmit(values) + } + })() + + const { handleDialogOpen, dialogProps } = useConfirmDialog({ + onConfirm: () => handleFormSubmit() + }) + + return ( + <> + + + +
+ +
+ +
+
+ {intl.formatMessage({ + id: 'common.icon', + defaultMessage: 'Icon' + })} +
+
+ +
+ + {intl.formatMessage({ + id: 'onboarding.form.avatarDescription', + defaultMessage: 'Format: SVG or PNG, 256x256 px' + })} + +
+ +
+
+ {intl.formatMessage({ + id: 'common.accentColor', + defaultMessage: 'Accent Color' + })} +
+
+ +
+ + {intl.formatMessage({ + id: 'onboarding.form.accentColorDescription', + defaultMessage: 'Format: HEX (Ex. #FF0000)' + })} + +
+
+
+
+ + + + + + + } + iconPlacement="end" + > + {intl.formatMessage({ + id: 'common.finish', + defaultMessage: 'Finish' + })} + + + + + ) +} diff --git a/src/app/(routes)/onboarding/create/page.tsx b/src/app/(routes)/onboarding/create/page.tsx new file mode 100644 index 00000000..0f42ee4d --- /dev/null +++ b/src/app/(routes)/onboarding/create/page.tsx @@ -0,0 +1,64 @@ +'use client' + +import { useIntl } from 'react-intl' +import { OnboardDetail } from './onboard-detail' +import { StepperContent } from '@/components/ui/stepper' +import { OnboardAddress } from './onboard-address' +import { OnboardTheme } from './onboard-theme' +import ConfirmationDialog from '@/components/confirmation-dialog' +import { useConfirmDialog } from '@/components/confirmation-dialog/use-confirm-dialog' +import { useOnboardForm } from './onboard-form-provider' + +export default function Page() { + const intl = useIntl() + + const { step, handleCancel } = useOnboardForm() + + const { handleDialogOpen, handleDialogClose, dialogProps } = useConfirmDialog( + { + onConfirm: () => { + handleCancel() + handleDialogClose() + } + } + ) + + return ( + <> + + +
+
+ + handleDialogOpen('')} /> + + + handleDialogOpen('')} /> + + + handleDialogOpen('')} /> + +
+
+ + ) +} diff --git a/src/app/(routes)/onboarding/ledger/ledger-created-dialog.tsx b/src/app/(routes)/onboarding/ledger/ledger-created-dialog.tsx new file mode 100644 index 00000000..28c02942 --- /dev/null +++ b/src/app/(routes)/onboarding/ledger/ledger-created-dialog.tsx @@ -0,0 +1,66 @@ +import { Button } from '@/components/ui/button' +import { + Dialog, + DialogDescription, + DialogFooter, + DialogHeader +} from '@/components/ui/dialog' +import { DialogProps } from '@radix-ui/react-dialog' +import Image from 'next/image' +import { useIntl } from 'react-intl' +import ConfettiBall from '@/animations/confetti-ball.gif' +import { + OnboardDialogContent, + OnboardDialogHeader, + OnboardDialogIcon, + OnboardDialogTitle +} from '../onboard-dialog' + +export type LedgerCreatedDialogProps = DialogProps & { + onContinue?: () => void +} + +export const LedgerCreatedDialog = ({ + onContinue, + ...others +}: LedgerCreatedDialogProps) => { + const intl = useIntl() + + return ( + + + + + + + Confetti + + + + {intl.formatMessage({ + id: 'onboarding.ledger.dialog.created.description', + defaultMessage: `The ledger has been successfully created and is now ready to receive Assets, Accounts and Portfolios.` + })} + + + + + + + + ) +} diff --git a/src/app/(routes)/onboarding/ledger/onboard-created-dialog.tsx b/src/app/(routes)/onboarding/ledger/onboard-created-dialog.tsx new file mode 100644 index 00000000..be1c5c9a --- /dev/null +++ b/src/app/(routes)/onboarding/ledger/onboard-created-dialog.tsx @@ -0,0 +1,80 @@ +import { Button } from '@/components/ui/button' +import { + Dialog, + DialogDescription, + DialogFooter, + DialogHeader +} from '@/components/ui/dialog' +import Image from 'next/image' +import { useIntl } from 'react-intl' +import Rocket from '@/animations/rocket.gif' +import { + OnboardDialogContent, + OnboardDialogHeader, + OnboardDialogIcon, + OnboardDialogTitle +} from '../onboard-dialog' +import { DialogProps } from '@radix-ui/react-dialog' + +export type OrganizationCreatedDialogProps = DialogProps & { + process?: boolean + onContinue?: () => void +} + +export const OrganizationCreatedDialog = ({ + process, + onContinue, + ...others +}: OrganizationCreatedDialogProps) => { + const intl = useIntl() + + return ( + + + + + + + Rocket + + + + {process + ? intl.formatMessage({ + id: 'onboarding.dialog.created.description', + defaultMessage: `The Lerian organization is ready. Now just create your first Ledger to add Assets, Accounts and Portfolios.` + }) + : intl.formatMessage({ + id: 'onboarding.ledger.dialog.description', + defaultMessage: `Your organization is now ready, but you still need to create a Ledger to activate the powerful features of Midaz Console.` + })} + + + + + + + + ) +} diff --git a/src/app/(routes)/onboarding/ledger/page.tsx b/src/app/(routes)/onboarding/ledger/page.tsx new file mode 100644 index 00000000..d5f2ab38 --- /dev/null +++ b/src/app/(routes)/onboarding/ledger/page.tsx @@ -0,0 +1,189 @@ +'use client' + +import { InputField } from '@/components/form' +import { PageFooter, PageFooterSection } from '@/components/page-footer' +import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert' +import { Button } from '@/components/ui/button' +import { Form } from '@/components/ui/form' +import { LoadingButton } from '@/components/ui/loading-button' +import { Paper } from '@/components/ui/paper' +import { + Stepper, + StepperItem, + StepperItemNumber, + StepperItemText +} from '@/components/ui/stepper' +import { useOrganization } from '@/context/organization-provider/organization-provider-client' +import { useSearchParams } from '@/lib/search' +import { ledger } from '@/schema/ledger' +import { zodResolver } from '@hookform/resolvers/zod' +import { AlertCircle, Check } from 'lucide-react' +import { useForm } from 'react-hook-form' +import { useIntl } from 'react-intl' +import { z } from 'zod' +import { OrganizationCreatedDialog } from './onboard-created-dialog' +import { useState } from 'react' +import { LedgerCreatedDialog } from './ledger-created-dialog' +import { useRouter } from 'next/navigation' +import { useCompleteOnboarding } from '@/client/onboarding' +import { OnboardTitle } from '../onboard-title' +import useCustomToast from '@/hooks/use-custom-toast' + +const initialValues = { + name: '' +} + +const formSchema = z.object({ + name: ledger.name +}) + +export default function Page() { + const intl = useIntl() + const router = useRouter() + const { currentOrganization } = useOrganization() + const { nextSearchParams: searchParams } = useSearchParams() + const [open, setOpen] = useState(true) + const [openCreated, setOpenCreated] = useState(false) + const { showError } = useCustomToast() + + const form = useForm({ + resolver: zodResolver(formSchema), + defaultValues: initialValues + }) + + const { mutate: completeOnboarding, isPending: completeLoading } = + useCompleteOnboarding({ + organizationId: currentOrganization.id!, + onSuccess: () => { + setOpenCreated(true) + }, + onError: async (error: any) => { + showError(error.message) + } + }) + + const handleCancel = () => { + form.reset() + setOpen(true) + } + + const handleSubmit = () => + form.handleSubmit((values) => completeOnboarding(values))() + + return ( +
+ setOpen(false)} + /> + + router.push('/')} + /> + +
+ +
+ + + 1 + + + + 2 + + + +
+ + + + + {intl.formatMessage({ + id: 'onboarding.ledger.alert.title', + defaultMessage: 'Additional metadata' + })} + + + {intl.formatMessage({ + id: 'onboarding.ledger.alert.description', + defaultMessage: + 'You can configure additional metadata later.' + })} + + + + + +
+
+
+ + + + + + } + iconPlacement="end" + loading={completeLoading} + onClick={handleSubmit} + > + {intl.formatMessage({ + id: 'common.finish', + defaultMessage: 'Finish' + })} + + + +
+ ) +} diff --git a/src/app/(routes)/onboarding/onboard-title.tsx b/src/app/(routes)/onboarding/onboard-title.tsx index 19c24b1a..57d32630 100644 --- a/src/app/(routes)/onboarding/onboard-title.tsx +++ b/src/app/(routes)/onboarding/onboard-title.tsx @@ -12,7 +12,7 @@ export const OnboardTitle = forwardRef( {subtitle && (

{subtitle}

)} -

{title}

+

{title}

) ) diff --git a/src/app/(routes)/onboarding/page.tsx b/src/app/(routes)/onboarding/page.tsx new file mode 100644 index 00000000..748191d9 --- /dev/null +++ b/src/app/(routes)/onboarding/page.tsx @@ -0,0 +1,69 @@ +'use client' + +import { Button } from '@/components/ui/button' +import { + Dialog, + DialogDescription, + DialogFooter, + DialogHeader +} from '@/components/ui/dialog' +import Rocket from '@/animations/rocket.gif' +import Image from 'next/image' +import { useRouter } from 'next/navigation' +import { useIntl } from 'react-intl' +import { + OnboardDialogContent, + OnboardDialogHeader, + OnboardDialogIcon, + OnboardDialogTitle +} from './onboard-dialog' + +const Page = () => { + const intl = useIntl() + const router = useRouter() + + return ( + + + + + + + Rocket + + + + {intl.formatMessage({ + id: 'onboarding.dialog.description', + defaultMessage: `In less than 5 minutes, create your Organization and first Ledger to activate the powerful features of Midaz Console.` + })} + + + + + + + + + ) +} + +export default Page diff --git a/src/lib/fetcher/index.ts b/src/lib/fetcher/index.ts index f1475c60..322bcfe7 100644 --- a/src/lib/fetcher/index.ts +++ b/src/lib/fetcher/index.ts @@ -92,7 +92,9 @@ const fetcherResponseHandler = async (response: Response) => { signOut({ callbackUrl: '/login' }) return } - throw new Error('Fetcher Error') + const error = await response.json() + + throw new Error(error.message) } return await response.json() From b5e23e3f6a5a8e4de66bf91bdbb0a2370ad6ab59 Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Fri, 14 Feb 2025 12:39:51 -0300 Subject: [PATCH 13/17] feat: Added translation keys --- locales/extracted/en.json | 44 ++++++++++++++++++++++++++++++++++----- locales/extracted/pt.json | 44 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 80 insertions(+), 8 deletions(-) diff --git a/locales/extracted/en.json b/locales/extracted/en.json index 13320bbf..27990fde 100644 --- a/locales/extracted/en.json +++ b/locales/extracted/en.json @@ -19,15 +19,18 @@ "assets.toast.delete.success": "Asset successfully deleted", "assets.toast.update.error": "Error updating Asset", "assets.toast.update.success": "Asset changes saved successfully", + "common.accentColor": "Accent Color", "common.accounts": "Accounts", "common.actions": "Actions", "common.active": "Active", "common.add": "Add", + "common.advance": "Next", "common.cancel": "Cancel", "common.code": "Code", "common.confirm": "Confirm", "common.confirmDeletion": "Confirm Deletion", "common.confirmDescription": "Are you sure you want to save?", + "common.continue": "Continue", "common.copyMessage": "Copied to clipboard!", "common.create": "Create", "common.credit": "Credit", @@ -35,6 +38,8 @@ "common.delete": "Delete", "common.edit": "Edit", "common.expand": "Expand", + "common.finish": "Finish", + "common.icon": "Icon", "common.id": "ID", "common.identification": "Identification", "common.inactive": "Inactive", @@ -85,6 +90,7 @@ "entity.auth.password": "Password", "entity.auth.reset.password": "I forgot the password", "entity.auth.username": "E-mail", + "entity.ledger": "Ledger", "entity.ledger.asset": "Assets", "entity.ledger.name": "Ledger Name", "entity.metadata.key": "Key", @@ -96,6 +102,7 @@ "entity.organization.id": "Organization ID", "entity.organization.legalDocument": "Document", "entity.organization.legalName": "Legal Name", + "entity.organization.legalNameDescription": "It will also be how we identify the Org internally.", "entity.organization.parentOrganization": "Parent Organization", "entity.organization.status": "Status", "entity.portfolio": "Portfolio", @@ -153,10 +160,6 @@ "header.userDropdown.subscription": "Subscription", "header.userDropdown.support": "Support", "homePage.dialog.footer.createOrganizationButton": "Create Organization", - "homePage.dialog.onboarding.description": "Complete your Organization's registration and create the first Ledger to activate the powerful features of the Midaz Console.", - "homePage.dialog.onboarding.gettingStarted": "Getting started", - "homePage.dialog.onboarding.title": "Launch the Midaz Console", - "homePage.dialog.startOnboarding.button": "Let's go", "homePage.welcome.title": "Welcome, {user}!", "language.english": "English", "language.portuguese": "Portuguese", @@ -267,7 +270,38 @@ "notFound.description": "Try accessing another page.", "notFound.title": "The page you are looking for does not exist.", "notFoundContent.goBack": "Go Back", - "organization": "Organization", + "onboarding.cancel.cancelLabel": "I changed my mind", + "onboarding.cancel.confirmLabel": "Yes, cancel", + "onboarding.cancel.description": "You will lose the information you entered and will need to restart the process.", + "onboarding.cancel.title": "Do you want to cancel?", + "onboarding.dialog.button": "Let's go", + "onboarding.dialog.created.description": "The Lerian organization is ready. Now just create your first Ledger to add Assets, Accounts and Portfolios.", + "onboarding.dialog.created.title": "Organization active and operational", + "onboarding.dialog.description": "In less than 5 minutes, create your Organization and first Ledger to activate the powerful features of Midaz Console.", + "onboarding.dialog.firstSteps": "First steps", + "onboarding.dialog.title": "Initial Midaz Console Setup", + "onboarding.form.accentColorDescription": "Format: HEX (Ex. #FF0000)", + "onboarding.form.avatarDescription": "Format: SVG or PNG, 256x256 px", + "onboarding.ledger.alert.description": "You can configure additional metadata later.", + "onboarding.ledger.alert.title": "Additional metadata", + "onboarding.ledger.description": "Finally, create the first ledger for the new organization.", + "onboarding.ledger.dialog.created.button": "Explore Midaz", + "onboarding.ledger.dialog.created.description": "The ledger has been successfully created and is now ready to receive Assets, Accounts and Portfolios.", + "onboarding.ledger.dialog.created.midazWelcome": "Midaz's Welcome", + "onboarding.ledger.dialog.created.title": "Initial setup complete!", + "onboarding.ledger.dialog.description": "Your organization is now ready, but you still need to create a Ledger to activate the powerful features of Midaz Console.", + "onboarding.ledger.dialog.title": "Create the first Ledger", + "onboarding.ledger.name.description": "This is how we identify the ledger internally.", + "onboarding.skip.cancelLabel": "I changed my mind", + "onboarding.skip.confirmLabel": "Yes, I will configure it later", + "onboarding.skip.description": "Are you sure you want to finish without finishing the theme setup?", + "onboarding.skip.title": "Incomplete theme", + "onboarding.stepper.step1": "Org details", + "onboarding.stepper.step1Description": "To get started, complete your Organization's registration", + "onboarding.stepper.step2": "Address", + "onboarding.stepper.step2Description": "Now provide your Organization address", + "onboarding.stepper.step3": "Theme", + "onboarding.stepper.step3Description": "Customize your Organization's UI (optional)", "organizations.delete.description": "You are about to permanently delete this organization. This action cannot be undone. Do you wish to continue?", "organizations.emptyResource": "You haven't created any Organization yet", "organizations.listingTemplate.addButton": "New Organization", diff --git a/locales/extracted/pt.json b/locales/extracted/pt.json index b380d44f..9a6a9e64 100644 --- a/locales/extracted/pt.json +++ b/locales/extracted/pt.json @@ -249,7 +249,6 @@ "common.search": "Pesquisar...", "entity.auth.reset.password": "Esqueci a senha", "homePage.dialog.footer.createOrganizationButton": "Criar Organização", - "organization": "Organização", "tooltip.passwordInfo": "Contacte o admin do sistema", "homePage.welcome.title": "Seja bem-vindo, {user}!", "ledgersPage.alert.description": "Para usar os recursos de ledger, você precisa criar uma organização.", @@ -373,5 +372,44 @@ "transactions.tab.operations": "Operações e Metadados", "transactions.tab.summary": "Resumo", "transactions.toast.update.success": "Transação atualizada com sucesso", - "common.user": "Usuário" -} + "common.user": "Usuário", + "common.accentColor": "Cor da marca", + "common.advance": "Avançar", + "common.continue": "Continuar", + "common.finish": "Finalizar", + "common.icon": "Ícone", + "entity.ledger": "Ledger", + "entity.organization.legalNameDescription": "Também será como identificaremos a Org internamente", + "onboarding.cancel.cancelLabel": "Mudei de ideia", + "onboarding.cancel.confirmLabel": "Sim, cancelar", + "onboarding.cancel.description": "Você perderá as informações inseridas e será necessário reiniciar o processo.", + "onboarding.cancel.title": "Deseja cancelar?", + "onboarding.dialog.button": "Vamos lá", + "onboarding.dialog.created.description": "A organização Lerian está pronta. Agora é só criar o seu primeiro Ledger para adicionar Ativos, Contas e Portfólios.", + "onboarding.dialog.created.title": "Organização ativa e operante", + "onboarding.dialog.description": "Em menos de 5 minutos, crie sua Organização e o primeiro Ledger para ativar os recursos potentes do Midaz Console.", + "onboarding.dialog.firstSteps": "Primeiros passos", + "onboarding.dialog.title": "Setup inicial do Midaz Console", + "onboarding.form.accentColorDescription": "Formato: HEX (Ex. #FF0000)", + "onboarding.form.avatarDescription": "Formato: SVG ou PNG, 256x256 px", + "onboarding.ledger.alert.description": "Você poderá configurar metadados adicionais mais tarde.", + "onboarding.ledger.alert.title": "Metadados adicionais", + "onboarding.ledger.description": "Para finalizar, crie o primeiro ledger da nova organização.", + "onboarding.ledger.dialog.created.button": "Explorar o Midaz", + "onboarding.ledger.dialog.created.description": "O ledger foi criado com sucesso e já está pronto para receber Ativos, Contas e Portfólios.", + "onboarding.ledger.dialog.created.midazWelcome": "Boas-vidas do Midaz", + "onboarding.ledger.dialog.created.title": "Setup inicial concluído!", + "onboarding.ledger.dialog.description": "Sua organização já está pronta, mas você ainda precisa criar um Ledger para ativar os recursos potentes do Midaz Console.", + "onboarding.ledger.dialog.title": "Crie a primeira Ledger", + "onboarding.ledger.name.description": "Será como identificaremos o ledger internamente", + "onboarding.skip.cancelLabel": "Mudei de ideia", + "onboarding.skip.confirmLabel": "Sim, vou configurar depois", + "onboarding.skip.description": "Tem certeza que deseja finalizar sem terminar a configuração do tema?", + "onboarding.skip.title": "Tema incompleto", + "onboarding.stepper.step1": "Detalhes da Org", + "onboarding.stepper.step1Description": "Para começar, complete o cadastro da sua Organização", + "onboarding.stepper.step2": "Endereço", + "onboarding.stepper.step2Description": "Agora forneça o endereço da sua Organização", + "onboarding.stepper.step3": "Tema", + "onboarding.stepper.step3Description": "Customize a UI da sua Organização (opcional)" +} \ No newline at end of file From 0c25847a41d7e52e9eed61019424a286cd123df9 Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Fri, 14 Feb 2025 12:42:58 -0300 Subject: [PATCH 14/17] feat: Merge --- locales/extracted/en.json | 19 +++++++++---------- locales/extracted/pt.json | 3 +-- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/locales/extracted/en.json b/locales/extracted/en.json index cfbe5297..5a68442a 100644 --- a/locales/extracted/en.json +++ b/locales/extracted/en.json @@ -118,26 +118,26 @@ "entity.transactions.value": "Value", "entity.user.email": "E-mail", "entity.user.name": "Name", + "error.midaz.accountIneligibilityError": "Error Midaz account ineligibility error", "error.midaz.actionNotPermitted": "Error Midaz action not permitted", "error.midaz.assetNameOrCodeDuplicate": "Error Midaz asset name or code duplicate", + "error.midaz.badRequest": "Error Midaz Bad Request", "error.midaz.codeUpperCaseRequirement": "Error Midaz code upper case requirement", "error.midaz.currencyCodeStandardCompliance": "Error Midaz currency code standard compliance", + "error.midaz.duplicateIdempotencyKey": "Error Midaz duplicate idempotency key", "error.midaz.duplicateSegmentNameError": "Error Midaz duplicate segment name error", "error.midaz.entityNotFound": "Error Midaz entity not found", + "error.midaz.externalAccountModificationProhibitedError": "Error Midaz external account modification prohibited error", + "error.midaz.insufficientFundsError": "Error Midaz insufficient funds error", "error.midaz.invalidCodeFormat": "Error Midaz invalid code format", "error.midaz.invalidCountryCode": "Error Midaz invalid country code", + "error.midaz.invalidPathParameter": "Error Midaz invalid path parameter", "error.midaz.invalidScriptError": "Error Midaz invalid script error", "error.midaz.invalidType": "Error Midaz invalid type", "error.midaz.ledgerNameConflict": "Error Midaz name conflict", "error.midaz.missingFields": "Error Midaz missing fields", "error.midaz.unauthorized": "Error Midaz unauthorized", - "error.midaz.accountIneligibilityError": "One or more accounts listed in the transaction are not eligible to participate. Please review the account statuses and try again.", - "error.midaz.insufficientFundsError": "The transaction could not be completed due to insufficient funds in the account. Please add sufficient funds to your account and try again.", - "error.midaz.invalidPathParameter": "The provided path parameter is not in the expected format. Please ensure the parameter adheres to the required format and try again.", - "error.midaz.duplicateIdempotencyKey": "The idempotency key is already in use. Please provide a unique key and try again.", - "error.midaz.badRequest": "The server could not understand the request due to malformed syntax. Please check the listed fields and try again.", - "error.midaz.externalAccountModificationProhibitedError": "Accounts of type 'external' cannot be deleted or modified as they are used for traceability with external systems. Please review your request and ensure operations are only performed on internal accounts.", - "error.midaz.unexpectedFieldsInTheRequest": "The request body contains more fields than expected. Please send only the allowed fields as per the documentation.", + "error.midaz.unexpectedFieldsInTheRequest": "Error Midaz unexpected fields in the request", "error.midaz.unknowError": "Error on Midaz.", "errors.custom.date.invalid": "Invalid date", "errors.custom.one_lowercase_letter": "Field must contain at least 1 lowercase letter", @@ -414,10 +414,9 @@ "transactions.subtitle": "View, edit, and manage the transactions of a specific ledger..", "transactions.tab.create": "New Transaction", "transactions.tab.data": "Transaction Data", - "transactions.tab.list": "Transactions list", "transactions.tab.operations": "Operations & Metadata", "transactions.tab.summary": "Summary", "transactions.title": "Transactions", - "transactions.toast.update.success": "Transaction updated successfully", - "transactions.toast.update.error": "Transaction updated Failed" + "transactions.toast.update.error": "An error occurred while updating the transaction", + "transactions.toast.update.success": "Transaction updated successfully" } \ No newline at end of file diff --git a/locales/extracted/pt.json b/locales/extracted/pt.json index 63ee8753..abd83baf 100644 --- a/locales/extracted/pt.json +++ b/locales/extracted/pt.json @@ -356,7 +356,6 @@ "transactions.operations.metadata.value": "Valor", "transactions.status.title": "Status da Transação", "transactions.tab.data": "Dados da Transação", - "transactions.tab.list": "Lista de transações", "transactions.tab.operations": "Operações e Metadados", "transactions.tab.summary": "Resumo", "transactions.toast.update.success": "Transação atualizada com sucesso", @@ -419,5 +418,5 @@ "segments.delete.description": "Você está prestes a excluir permanentemente este segmento. Essa ação não pode ser desfeita. Deseja continuar?", "settings.tab.segments": "Segmentos", "sideBar.accountHolders.segments": "Segmentos", - "common.user": "Usuário" + "transactions.toast.update.error": "" } \ No newline at end of file From 464f34d8d349f45205189dcb2f88bce6c5281f54 Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Mon, 17 Feb 2025 11:14:02 -0300 Subject: [PATCH 15/17] fix: Added zod validation to address --- src/app/(routes)/onboarding/create/onboard-address.tsx | 3 +++ src/schema/address.ts | 9 +++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/app/(routes)/onboarding/create/onboard-address.tsx b/src/app/(routes)/onboarding/create/onboard-address.tsx index 04e71a48..47df3119 100644 --- a/src/app/(routes)/onboarding/create/onboard-address.tsx +++ b/src/app/(routes)/onboarding/create/onboard-address.tsx @@ -8,6 +8,8 @@ import { PageFooter, PageFooterSection } from '@/components/page-footer' import { Button } from '@/components/ui/button' import { useOnboardForm } from './onboard-form-provider' import { OnboardTitle } from '../onboard-title' +import { zodResolver } from '@hookform/resolvers/zod' +import { addressFormSchema } from './schemas' const initialValues = { address: { @@ -28,6 +30,7 @@ export function OnboardAddress({ onCancel }: OnboardAddressProps) { const intl = useIntl() const form = useForm({ + resolver: zodResolver(addressFormSchema), defaultValues: initialValues }) diff --git a/src/schema/address.ts b/src/schema/address.ts index 05d0b944..09d17bba 100644 --- a/src/schema/address.ts +++ b/src/schema/address.ts @@ -1,22 +1,23 @@ import { z } from 'zod' import { onlyNumbers, regex } from './regex' -const line1 = z.string().max(255) +const line1 = z.string().min(1).max(255) const line2 = z.string().max(255).nullable().optional() const zipCode = z.coerce .string() + .min(1) .max(12) .refine(regex(onlyNumbers), { params: { id: 'custom_only_numbers' } }) -const city = z.string().max(255) +const city = z.string().min(1).max(255) -const state = z.string().max(5) +const state = z.string().min(1).max(5) -const country = z.string().max(5) +const country = z.string().min(1).max(5) export const address = { line1, From a4da3d7cf1f9516064fc921d51a3c4b1f00f57d0 Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Mon, 17 Feb 2025 14:37:12 -0300 Subject: [PATCH 16/17] fix: Audit --- package-lock.json | 484 +++++++++++++++++----------------------------- 1 file changed, 178 insertions(+), 306 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2a1e2264..5db09360 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4605,7 +4605,6 @@ "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/mdx": "^2.0.0" }, @@ -4883,11 +4882,10 @@ } }, "node_modules/@octokit/endpoint": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.2.tgz", - "integrity": "sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz", + "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/types": "^13.6.2", "universal-user-agent": "^7.0.2" @@ -4919,11 +4917,10 @@ "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.0.tgz", - "integrity": "sha512-ttpGck5AYWkwMkMazNCZMqxKqIq1fJBNxBfsFwwfyYKTf914jKkLF0POMS3YkPBwp5g1c2Y4L79gDz01GhSr1g==", + "version": "11.4.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.2.tgz", + "integrity": "sha512-BXJ7XPCTDXFF+wxcg/zscfgw2O/iDPtNSkwwR1W1W5c4Mb3zav/M2XvxQ23nVmKj7jpweB4g8viMeCQdm7LMVA==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/types": "^13.7.0" }, @@ -4970,14 +4967,13 @@ } }, "node_modules/@octokit/request": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.0.tgz", - "integrity": "sha512-kXLfcxhC4ozCnAXy2ff+cSxpcF0A1UqxjvYMqNuPIeOAzJbVWQ+dy5G2fTylofB/gTbObT8O6JORab+5XtA1Kw==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz", + "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==", "dev": true, - "license": "MIT", "dependencies": { - "@octokit/endpoint": "^10.0.0", - "@octokit/request-error": "^6.0.1", + "@octokit/endpoint": "^10.1.3", + "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.6.2", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" @@ -4987,11 +4983,10 @@ } }, "node_modules/@octokit/request-error": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.6.tgz", - "integrity": "sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz", + "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/types": "^13.6.2" }, @@ -7079,11 +7074,10 @@ } }, "node_modules/@storybook/addon-actions": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.5.3.tgz", - "integrity": "sha512-7a+SD4EZdZocm+NG1Kx4yV6Aw7+YUlRIyGvKcxsGtYMOLaqrUewApqveXF83+FbYWMoezXcoZCLQFROtS/Z6Fw==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.5.6.tgz", + "integrity": "sha512-kREkqUNmaYFYL5NsgbtYXxuFbVGuoA1reQPYl/ToqI/ujXZo1XDo0o+Sztjj8r2GVAjaM6a96FUxEJ7yg1yBCg==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "@types/uuid": "^9.0.1", @@ -7096,7 +7090,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/addon-actions/node_modules/uuid": { @@ -7108,17 +7102,15 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/@storybook/addon-backgrounds": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.5.3.tgz", - "integrity": "sha512-sZcw8/C/HIIgbRBY+0ZYTBc5Py8xvw3bt6lzSVQEXA2aygfJpO/jiQJlmOXTmK3g5F5pjFKaaCodfXT7V/9mzw==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.5.6.tgz", + "integrity": "sha512-vdkYPtrd9FtWPU22QylQF5GTh6hJa//s5I2r2+AZ3huHeqWvyOcFHyOM//RlwcPjkNDnaCbaSotDdeP6C77rcQ==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3", @@ -7129,15 +7121,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/addon-controls": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.5.3.tgz", - "integrity": "sha512-A4UVQhPyC7FvV+fM50xvEZO26/2uE41Ns0TN0qq7U5EH0Dlj43Salgay6qT8fve6XAI4SgVjkujPVCSbLg/yVQ==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.5.6.tgz", + "integrity": "sha512-OiIwgfKfx/4lOjHl4CEkO+d4eM31nsV2PfrCgtMsTOwg1YKZ4K5/Sq6HvEmqoAdJReonSlKnzBOzoVFVeG9A+A==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "dequal": "^2.0.2", @@ -7148,22 +7139,21 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/addon-docs": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.5.3.tgz", - "integrity": "sha512-XVcQlHX963nuoeRkb7qQg89t/9CThdT46UV7jX3FFn08NEMhmDEa+4iVA4l+4xNgJ+Av6uX+u6yRGnM/910mLg==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.5.6.tgz", + "integrity": "sha512-LOBupHN4K8eaSrfG/byl2d3lnFOIIkp4rDnsglgEbDe0Rv9E/yjaigcSW1pzFQ0pgRH7tg7sZz26cISHBvr50A==", "dev": true, - "license": "MIT", "dependencies": { "@mdx-js/react": "^3.0.0", - "@storybook/blocks": "8.5.3", - "@storybook/csf-plugin": "8.5.3", - "@storybook/react-dom-shim": "8.5.3", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "@storybook/blocks": "8.5.6", + "@storybook/csf-plugin": "8.5.6", + "@storybook/react-dom-shim": "8.5.6", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -7171,25 +7161,24 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/addon-essentials": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.5.3.tgz", - "integrity": "sha512-0zbEWQQZCiYRUxMo6FrfwQER/vi+B8mCLLivdjbSVSvZsjmlpcaBA5uBjbsXfIRcedHlou4QiJXn+nR8thDlKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/addon-actions": "8.5.3", - "@storybook/addon-backgrounds": "8.5.3", - "@storybook/addon-controls": "8.5.3", - "@storybook/addon-docs": "8.5.3", - "@storybook/addon-highlight": "8.5.3", - "@storybook/addon-measure": "8.5.3", - "@storybook/addon-outline": "8.5.3", - "@storybook/addon-toolbars": "8.5.3", - "@storybook/addon-viewport": "8.5.3", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.5.6.tgz", + "integrity": "sha512-CtOCbJ1TkCqvOoqrksKMTattJdIIe4N/x/o4IBNzvmaLJD0TUYbCnEsYAzm4WXTVdxQ9uJO4f/BHRkNShuHbew==", + "dev": true, + "dependencies": { + "@storybook/addon-actions": "8.5.6", + "@storybook/addon-backgrounds": "8.5.6", + "@storybook/addon-controls": "8.5.6", + "@storybook/addon-docs": "8.5.6", + "@storybook/addon-highlight": "8.5.6", + "@storybook/addon-measure": "8.5.6", + "@storybook/addon-outline": "8.5.6", + "@storybook/addon-toolbars": "8.5.6", + "@storybook/addon-viewport": "8.5.6", "ts-dedent": "^2.0.0" }, "funding": { @@ -7197,15 +7186,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/addon-highlight": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.5.3.tgz", - "integrity": "sha512-xhsr3W6KTvlOIIe+8JE9/sEOAgkW0yjMZzs47A+bWcxKwcFhAUgVLbAgEzjJ0u248rjGKlCJ2pswWefO+ZKJeg==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.5.6.tgz", + "integrity": "sha512-uuwBe+FwT9vKbEG9S/yqwZLD1GP3y5Mpu2gsiNcYcfhxHpwDQVbknOSeJJig/CGhuDMqy95GcgItIs/kPPFKqg==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0" }, @@ -7214,19 +7202,18 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.5.3.tgz", - "integrity": "sha512-nQuP65iFGgqfVp/O8NxNDUwLTWmQBW4bofUFaT4wzYn7Jk9zobOZYtgQvdqBZtNzBDYmLrfrCutEBj5jVPRyuQ==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.5.6.tgz", + "integrity": "sha512-0Ub4YksQImspx6NeiCDIQkDe3f7EgwiO5qYPRRgkUsSYFjn7c8cRElJn8bwyikC2YJGrWNe7rPdW9xBEvJm4uA==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.5.3", - "@storybook/test": "8.5.3", + "@storybook/instrumenter": "8.5.6", + "@storybook/test": "8.5.6", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -7235,15 +7222,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/addon-links": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.5.3.tgz", - "integrity": "sha512-MRhIif4tCoIucLgGX14dI7yptF9bYH2UaJasyywshzQZKAEjOfX19Aw5fwp2zJt6kukAF6mUxMtWKcQMH2XOmw==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.5.6.tgz", + "integrity": "sha512-srJRVows/5s257jPlkZFDxyuuBluGW1lWfaUoo3ls3jYx2ZP1v2ilZHh9WB3o2zcZQit4afX2FAK52s/ZwRB3w==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/csf": "0.1.12", "@storybook/global": "^5.0.0", @@ -7255,7 +7241,7 @@ }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.5.3" + "storybook": "^8.5.6" }, "peerDependenciesMeta": { "react": { @@ -7264,11 +7250,10 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.5.3.tgz", - "integrity": "sha512-unb0bRsnISXWiCBBECxNUUdM12hHpV+1uJUu5OJHtKb26YpiQvewDFLTLjuZJ3NIAfw+F5232Q7K88AWJV6weg==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.5.6.tgz", + "integrity": "sha512-Q83k/75/vcFcXz3YAvwfWpHQubJyOzpNT/jTLdeK27uXatVH6eq0+dRt/fW1plri9GA52HJmiZ7SvJ6MAHFQzQ==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "tiny-invariant": "^1.3.1" @@ -7278,29 +7263,27 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/addon-onboarding": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-8.5.3.tgz", - "integrity": "sha512-NZhYj3UZK65reO7mXcK7FPPu7QkLCRyIa6TpfQ3mRAocfjqg401mcBsRO37JNywYfHCZrU4w1l7pwpqjvcYceg==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-8.5.6.tgz", + "integrity": "sha512-4+4vevM+pKua6A0FqQhoHOHcrtUsa2PSmdsAHhi6I2QQEFpvK3QtRyK0qhyft2cap9Wf6h/M+HBXEHbiJQCS3A==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/addon-outline": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.5.3.tgz", - "integrity": "sha512-e1MkGN6XVdeRh2oUKGdqEDyAo2TD/47ashAAxw8DEiLRWgBMbQ+KBVH4EOG+dn5395jxh7YgRLJn/miqNnfN5g==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.5.6.tgz", + "integrity": "sha512-HypYCQ5aF0Htyhc8E+ZhJEnSojuNheYWq7Kgd51WnSYLtZbZfPbLKYiw/VHPvYWbS2IpKJ5YDAvkUPzgwqgBgA==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "ts-dedent": "^2.0.0" @@ -7310,7 +7293,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/addon-styling-webpack": { @@ -7327,25 +7310,23 @@ } }, "node_modules/@storybook/addon-toolbars": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.5.3.tgz", - "integrity": "sha512-AWr9Per9WDrbFtNlbVlj6CiEwKOvOyoBt3bCuMHuRfTdqKwkwInEtyUi4//T8U+c1qs7KJBpsWV2vhIuc5sODg==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.5.6.tgz", + "integrity": "sha512-e6wJne/bH0EOnqUCz4SDIYxwuEgDzLOYcJZvcl8aNWfoHTgZBSI/5ai9d23CvM0SFY9dGdKwjEejvdJjwRcK0w==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.5.3.tgz", - "integrity": "sha512-OkLJ2B8+PiOEAd2HtRG6XewVjtw6AkBMgoSbfKCMr6TWSbuKrOeiwIMqqieAAPVNfsOQ8hTK6JGhr/KPRCKgRA==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.5.6.tgz", + "integrity": "sha512-i0PJN587K9GMViXJr9Mb4cFF7ZiGvFpk215xRgtC33Pv7mIp8yRjbjNgi3TgEfDe4GQFQ1hKoisqk/pjs9quXg==", "dev": true, - "license": "MIT", "dependencies": { "memoizerific": "^1.11.3" }, @@ -7354,15 +7335,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/blocks": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.5.3.tgz", - "integrity": "sha512-a/PpHFmeBtVB9Q/6cNAnqfeCqMowsrI8nGka0Nl7BB3x1eJnS3I1Qo3Skht0LBEsmXOgXk4dwWxpeQL3qHMRkw==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.5.6.tgz", + "integrity": "sha512-5RL2hnk3y9MX8TxJUY4OxGw0rBuJ8OhuWtBK4DlFug3dRKd/TuOuAfIqVWzV5KybI6LyQLD0GOgt+REqP4YQeA==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/csf": "0.1.12", "@storybook/icons": "^1.2.12", @@ -7373,9 +7353,9 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.5.3" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "storybook": "^8.5.6" }, "peerDependenciesMeta": { "react": { @@ -7387,13 +7367,12 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.5.3.tgz", - "integrity": "sha512-5d892u2pWIN9Xp5i6ZoSYJ799C0voscmkGOLrjaWC/gqFJ6AT697z/xu3HMTFkt/mS+0cz/yFimaN8nzXwktrw==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.5.6.tgz", + "integrity": "sha512-DmoPr7p+oyoMjzm1TieJyAH4YINYmW/V+QCjFLl9mIP/JReSeJnLRrHwnkYp/nbPVoWEGwI2cjti/3xtnf5ORQ==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.5.3", + "@storybook/core-webpack": "8.5.6", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", @@ -7423,7 +7402,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" }, "peerDependenciesMeta": { "typescript": { @@ -7432,11 +7411,10 @@ } }, "node_modules/@storybook/components": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.5.3.tgz", - "integrity": "sha512-iC9VbpM8Equ8wXI2syBzov+8wys4sGYW7Xfz67LdSVbCMhsH9FRtvgbDppJQC/ZDCofg4sTAHhWpDV/KAQ385A==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.5.6.tgz", + "integrity": "sha512-d2mhnnce2C03lRhBEtVR9lS78YueQGBS949R3QXPsEXmrkfDMpcnFI3DIOByjnea6ZeS0+i4lYjnfiAJb0oiMQ==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -7446,11 +7424,10 @@ } }, "node_modules/@storybook/core": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.5.3.tgz", - "integrity": "sha512-ZLlr2pltbj/hmC54lggJTnh09FCAJR62lIdiXNwa+V+/eJz0CfD8tfGmZGKPSmaQeZBpMwAOeRM97k2oLPF+0w==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.5.6.tgz", + "integrity": "sha512-ibgTGI3mcSsADABIQuhHWL8rxqF6CvooKIWpkZsB9kwNActS3OJzfCSAZDcgtvRkwaarPVjYX/sAOBzjqQNkXg==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/csf": "0.1.12", "better-opn": "^3.0.2", @@ -7478,11 +7455,10 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.5.3.tgz", - "integrity": "sha512-r1Ogdk3/cHUUbGG7QcGUwygCYfFt+4R59jx5NGrrQ2dXNANINVgPY9EATuqfIkLjFq5yvHxAQ/C5qtLfJi1SSg==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.5.6.tgz", + "integrity": "sha512-oX6Oz6CXScy2Kvx/GJnli7DQhFPVtFwN8EJGf5euMG36Q3IZp04ttszE0RpLoaEAKJ0w110mu0yAadHJzVgC5g==", "dev": true, - "license": "MIT", "dependencies": { "ts-dedent": "^2.0.0" }, @@ -7491,7 +7467,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/csf": { @@ -7505,11 +7481,10 @@ } }, "node_modules/@storybook/csf-plugin": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.5.3.tgz", - "integrity": "sha512-u5oyXTFg3KIy4h9qoNyiCG2mJF3OpkLO/AcM4lMAwQVnBvz8pwITvr4jDZByVjGmcIbgKJQnWX+BwdK2NI4yAw==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.5.6.tgz", + "integrity": "sha512-60JBEVsW8x7u4hc+NmrCE0ij36QnaitqTDsxaT8BhbDrqFUvxwUjeaEmoyMn/UCJh080fQfKc2+dqBkFfbkAww==", "dev": true, - "license": "MIT", "dependencies": { "unplugin": "^1.3.1" }, @@ -7518,7 +7493,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/global": { @@ -7543,11 +7518,10 @@ } }, "node_modules/@storybook/instrumenter": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.5.3.tgz", - "integrity": "sha512-pxaTbGeju8MkwouIiaWX5DMWtpRruxqig8W3nZPOvzoSCCbQY+sLMQoyXxFlpGxLBjcvXivkL7AMVBKps5sFEQ==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.5.6.tgz", + "integrity": "sha512-uMOOiq/9dFoFhSl3IxuQ+yq4lClkcRtEuB6cPzD/rVCmlh+i//VkHTqFCNrDvpVA21Lsy9NLmnxLHJpBGN3Avg==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "@vitest/utils": "^2.1.1" @@ -7557,15 +7531,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/manager-api": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.5.3.tgz", - "integrity": "sha512-JtfuMgQpKIPU0ARn1jNPce8FmknpM0Ap0mppWl+KGAWWGadJPDaX/nrY/19dT1kRgIhyOnbX6tgJxII4E9dE5w==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.5.6.tgz", + "integrity": "sha512-24Fm1LnRs1uCTMDid1Mmii0mQvmyM//IfzdtuVvzh0OSvatEKKLX+o3vdG/3/QCN1FVyq1hI9uHnkOaz6EuH4Q==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -7575,11 +7548,10 @@ } }, "node_modules/@storybook/nextjs": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.5.3.tgz", - "integrity": "sha512-QP5+biHhPRWIOtEWspvNbGAHWzx/utyTioEwMu/P0jhpcJwDSbjmDmRy0ImDxyyRVO2jCrHOpBHU3sksiMMccw==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.5.6.tgz", + "integrity": "sha512-Ilapm5LKdmGOxWXyOfKSsUgnHKH/qxalmIak0RjCZMY+XRFFcyiwSMlJek4ww8HOVXI85E6RTeYpgpYpiCIKcA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.24.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -7595,10 +7567,10 @@ "@babel/preset-typescript": "^7.24.1", "@babel/runtime": "^7.24.4", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", - "@storybook/builder-webpack5": "8.5.3", - "@storybook/preset-react-webpack": "8.5.3", - "@storybook/react": "8.5.3", - "@storybook/test": "8.5.3", + "@storybook/builder-webpack5": "8.5.6", + "@storybook/preset-react-webpack": "8.5.6", + "@storybook/react": "8.5.6", + "@storybook/test": "8.5.6", "@types/semver": "^7.3.4", "babel-loader": "^9.1.3", "css-loader": "^6.7.3", @@ -7633,7 +7605,7 @@ "next": "^13.5.0 || ^14.0.0 || ^15.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.5.3", + "storybook": "^8.5.6", "webpack": "^5.0.0" }, "peerDependenciesMeta": { @@ -7719,14 +7691,13 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.5.3.tgz", - "integrity": "sha512-+I6uFcmR2dy3J8OagQLfLMCyQ/zo4O5FrzbCd5TaLxJ2q+VeWp8EIaVxracN02JabmpwhD8NcjXGD+ykUha2cw==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.5.6.tgz", + "integrity": "sha512-i1TvBUHIh9LBCe/flebYvhjHdSaFCQa6pvjRxYLSbaoVYJ838a5HQbW6wa5AtAj6gnksISuFm8aDUnszjZX3hg==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.5.3", - "@storybook/react": "8.5.3", + "@storybook/core-webpack": "8.5.6", + "@storybook/react": "8.5.6", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/semver": "^7.3.4", "find-up": "^5.0.0", @@ -7747,7 +7718,7 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.5.3" + "storybook": "^8.5.6" }, "peerDependenciesMeta": { "typescript": { @@ -7760,7 +7731,6 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -7777,7 +7747,6 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -7793,7 +7762,6 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -7809,17 +7777,15 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@storybook/preview-api": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.5.3.tgz", - "integrity": "sha512-dUsuXW+KgDg4tWXOB6dk5j5gwwRUzbPvicHAY9mzbpSVScbWXuE5T/S/9hHlbtfkhFroWQgPx2eB8z3rai+7RQ==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.5.6.tgz", + "integrity": "sha512-brT8jvw+QYoAyddOtPTqMc6tHDKye24oYkL5Bvp96nQi5AcNhkpL1eYfS7dtcQFV7j010Ox6RlzHPt+Ln8XB+Q==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -7829,18 +7795,17 @@ } }, "node_modules/@storybook/react": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.5.3.tgz", - "integrity": "sha512-QIdBSjsnwV/J919i4Fi7DlwxDKHU815t0c4B/w2KTMtKKBkk+Bge+vgVi0/lNqD3eF4w3yjVWGbkzUQZ63yiPg==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.5.6.tgz", + "integrity": "sha512-i+h3Kbeus7XaQBdxuAa2oLATMH/pMW3rLlilGXo/lnYkPanslRD77Eb4Oc+ChubzQZe2njda+C/SnHYgnp9tEg==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/components": "8.5.3", + "@storybook/components": "8.5.6", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.5.3", - "@storybook/preview-api": "8.5.3", - "@storybook/react-dom-shim": "8.5.3", - "@storybook/theming": "8.5.3" + "@storybook/manager-api": "8.5.6", + "@storybook/preview-api": "8.5.6", + "@storybook/react-dom-shim": "8.5.6", + "@storybook/theming": "8.5.6" }, "engines": { "node": ">=18.0.0" @@ -7850,10 +7815,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.5.3", + "@storybook/test": "8.5.6", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.5.3", + "storybook": "^8.5.6", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -7870,7 +7835,6 @@ "resolved": "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.6--canary.9.0c3f3b7.0.tgz", "integrity": "sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.1.1", "endent": "^2.0.1", @@ -7886,11 +7850,10 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.5.3.tgz", - "integrity": "sha512-kNIGk6mpXW3Wy+uS9pH9b9w/54EPJnH+QXA6MX4EQgmxhMQlGlS/l/YZp+3jsVQW4YgTmqe740qB+ccJAKZxBQ==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.5.6.tgz", + "integrity": "sha512-Wfu7HCLRyG+0HpHwz+YPeiY70KyZ0mBzcGrgdP+wJ0n6jVXx3+LWheN+5f21tEydAGbpdBT8FN784k2juPkE7A==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -7898,19 +7861,18 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/test": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.5.3.tgz", - "integrity": "sha512-2smoDbtU6Qh4yk0uD18qGfW6ll7lZBzKlF58Ha1CgWR4o+jpeeTQcfDLH9gG6sNrpojF7AVzMh/aN9BDHD+Chg==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.5.6.tgz", + "integrity": "sha512-U4HdyAcCwc/ictwq0HWKI6j2NAUggB9ENfyH3baEWaLEI+mp4pzQMuTnOIF9TvqU7K1D5UqOyfs/hlbFxUFysg==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/csf": "0.1.12", "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.5.3", + "@storybook/instrumenter": "8.5.6", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/user-event": "14.5.2", @@ -7922,7 +7884,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.3" + "storybook": "^8.5.6" } }, "node_modules/@storybook/test/node_modules/@testing-library/jest-dom": { @@ -7984,11 +7946,10 @@ "license": "MIT" }, "node_modules/@storybook/theming": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.5.3.tgz", - "integrity": "sha512-Jvzw+gT1HNarkJo21WZBq5pU89qDN8u/pD3woSh/1c2h5RS6UylWjQHotPFpcBIQiUSrDFtvCU9xugJm4MD0+w==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.5.6.tgz", + "integrity": "sha512-WX0NjPn6sao56OCSm3NVPqBjFhLhMLPjjDwC4fHCW25HZgI+u7oByNk/7YHcxpBYtoHSWMKMiCjOSJuW6731+A==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -8362,8 +8323,7 @@ "version": "0.0.9", "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/eslint": { "version": "9.6.1", @@ -8436,8 +8396,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", @@ -8564,8 +8523,7 @@ "version": "2.0.13", "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/ms": { "version": "2.1.0", @@ -8605,8 +8563,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/pino": { "version": "7.0.5", @@ -8672,8 +8629,7 @@ "version": "1.20.6", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/semver": { "version": "7.5.8", @@ -8706,8 +8662,7 @@ "version": "9.0.8", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/yargs": { "version": "17.0.33", @@ -9002,7 +8957,6 @@ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", "dev": true, - "license": "MIT", "dependencies": { "tinyrainbow": "^1.2.0" }, @@ -9028,7 +8982,6 @@ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", "dev": true, - "license": "MIT", "dependencies": { "@vitest/pretty-format": "2.1.9", "loupe": "^3.1.2", @@ -9749,7 +9702,6 @@ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.0.1" }, @@ -10192,7 +10144,6 @@ "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", "dev": true, - "license": "MIT", "dependencies": { "open": "^8.0.4" }, @@ -10233,8 +10184,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/bottleneck": { "version": "2.19.5", @@ -10544,7 +10494,6 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, - "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -10594,7 +10543,6 @@ "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -10784,7 +10732,6 @@ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, - "license": "MIT", "dependencies": { "source-map": "~0.6.0" }, @@ -10797,7 +10744,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -11243,8 +11189,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/compare-func": { "version": "2.0.0", @@ -11694,7 +11639,6 @@ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "dev": true, - "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", @@ -11730,7 +11674,6 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -11747,7 +11690,6 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -11952,8 +11894,7 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/deep-eql": { "version": "5.0.2", @@ -12015,7 +11956,6 @@ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -12184,7 +12124,6 @@ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, - "license": "MIT", "dependencies": { "utila": "~0.4" } @@ -12194,7 +12133,6 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, - "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -12209,7 +12147,6 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, - "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -12237,8 +12174,7 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ], - "license": "BSD-2-Clause" + ] }, "node_modules/domexception": { "version": "4.0.0", @@ -12259,7 +12195,6 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" }, @@ -12275,7 +12210,6 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -12290,7 +12224,6 @@ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, - "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -12441,7 +12374,6 @@ "resolved": "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz", "integrity": "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==", "dev": true, - "license": "MIT", "dependencies": { "dedent": "^0.7.0", "fast-json-parse": "^1.0.3", @@ -12900,7 +12832,6 @@ "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -13900,8 +13831,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", @@ -14034,7 +13964,6 @@ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -14166,7 +14095,6 @@ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "chalk": "^4.1.2", @@ -14195,7 +14123,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -14212,7 +14139,6 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -14222,7 +14148,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -14238,7 +14163,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14255,7 +14179,6 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, - "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -14272,7 +14195,6 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -14286,15 +14208,13 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -14313,7 +14233,6 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 6" } @@ -14410,8 +14329,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", - "dev": true, - "license": "Unlicense" + "dev": true }, "node_modules/fs.realpath": { "version": "1.0.0", @@ -15024,7 +14942,6 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "license": "MIT", "bin": { "he": "bin/he" } @@ -15147,7 +15064,6 @@ "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, - "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "^5.2.2", @@ -15169,7 +15085,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, - "license": "MIT", "engines": { "node": ">= 12" } @@ -15179,7 +15094,6 @@ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==", "dev": true, - "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -15219,7 +15133,6 @@ "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -15232,7 +15145,6 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, - "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -15316,7 +15228,6 @@ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -15769,7 +15680,6 @@ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -16140,7 +16050,6 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -17761,7 +17670,6 @@ "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", "dev": true, - "license": "MIT", "engines": { "node": ">=12.0.0" } @@ -18403,7 +18311,6 @@ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -18442,7 +18349,6 @@ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -18452,7 +18358,6 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -18468,7 +18373,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -18494,8 +18398,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/marked": { "version": "12.0.2", @@ -18594,7 +18497,6 @@ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, - "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.4" }, @@ -18607,7 +18509,6 @@ "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", "dev": true, - "license": "MIT", "dependencies": { "map-or-similar": "^1.5.0" } @@ -19003,7 +18904,6 @@ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, - "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -19013,8 +18913,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/node-emoji": { "version": "2.2.0", @@ -21975,7 +21874,6 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -22147,8 +22045,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz", "integrity": "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/oidc-token-hash": { "version": "5.0.3", @@ -22198,7 +22095,6 @@ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, - "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -22438,7 +22334,6 @@ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, - "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -22542,7 +22437,6 @@ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, - "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -23146,7 +23040,6 @@ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, - "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -23159,7 +23052,6 @@ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "dev": true, - "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^7.0.0", @@ -23177,7 +23069,6 @@ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "dev": true, - "license": "ISC", "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -23193,7 +23084,6 @@ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, - "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -23247,7 +23137,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "dev": true, - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -23413,7 +23302,6 @@ "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", "dev": true, - "license": "MIT", "dependencies": { "lodash": "^4.17.20", "renderkid": "^3.0.0" @@ -23718,7 +23606,6 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -23817,7 +23704,6 @@ "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.1.tgz", "integrity": "sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.18.9", "@babel/traverse": "^7.18.9", @@ -23839,7 +23725,6 @@ "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz", "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==", "dev": true, - "license": "MIT", "peerDependencies": { "typescript": ">= 4.3.x" } @@ -24191,7 +24076,6 @@ "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", "dev": true, - "license": "MIT", "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", @@ -24208,7 +24092,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -24414,7 +24297,6 @@ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -24424,7 +24306,6 @@ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "dev": true, - "license": "MIT", "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", @@ -24438,7 +24319,6 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -25803,13 +25683,12 @@ "license": "MIT" }, "node_modules/storybook": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.5.3.tgz", - "integrity": "sha512-2WtNBZ45u1AhviRU+U+ld588tH8gDa702dNSq5C8UBaE9PlOsazGsyp90dw1s9YRvi+ejrjKAupQAU0GwwUiVg==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.5.6.tgz", + "integrity": "sha512-mrcYAA5CP6QBrq5O9grz2eqBoEfJNsK3b+Iz+PdGYqpr04oMC7rg1h80murV2pRwsbHxIWBFpLpXAVX8tMK01w==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core": "8.5.3" + "@storybook/core": "8.5.6" }, "bin": { "getstorybook": "bin/index.cjs", @@ -26166,7 +26045,6 @@ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dev": true, - "license": "MIT", "dependencies": { "min-indent": "^1.0.1" }, @@ -26194,7 +26072,6 @@ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 12.13.0" }, @@ -26828,8 +26705,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/tinycolor2": { "version": "1.6.0", @@ -27864,7 +27740,6 @@ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz", "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", "dev": true, - "license": "MIT", "dependencies": { "acorn": "^8.14.0", "webpack-virtual-modules": "^0.6.2" @@ -28032,8 +27907,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/uuid": { "version": "10.0.0", @@ -28188,7 +28062,6 @@ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.3.tgz", "integrity": "sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==", "dev": true, - "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.12", @@ -28251,8 +28124,7 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/webpack/node_modules/ajv": { "version": "6.12.6", From 6e58f9d087ba537e146d3d5f8f3327b57552b0a2 Mon Sep 17 00:00:00 2001 From: Caio Alexandre Troti Caetano Date: Mon, 17 Feb 2025 15:55:30 -0300 Subject: [PATCH 17/17] fix: Data preservation between steps --- .../onboarding/create/onboard-address.tsx | 5 ++- .../onboarding/create/onboard-detail.tsx | 5 ++- .../onboarding/create/onboard-theme.tsx | 5 ++- src/lib/form/get-initial-values.test.ts | 35 +++++++++++++++++++ src/lib/form/get-initial-values.ts | 19 ++++++++++ src/lib/form/index.ts | 2 ++ src/lib/form/use-populate-form.ts | 22 ++++++++++++ 7 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 src/lib/form/get-initial-values.test.ts create mode 100644 src/lib/form/get-initial-values.ts create mode 100644 src/lib/form/index.ts create mode 100644 src/lib/form/use-populate-form.ts diff --git a/src/app/(routes)/onboarding/create/onboard-address.tsx b/src/app/(routes)/onboarding/create/onboard-address.tsx index 47df3119..c22bc0c6 100644 --- a/src/app/(routes)/onboarding/create/onboard-address.tsx +++ b/src/app/(routes)/onboarding/create/onboard-address.tsx @@ -10,6 +10,7 @@ import { useOnboardForm } from './onboard-form-provider' import { OnboardTitle } from '../onboard-title' import { zodResolver } from '@hookform/resolvers/zod' import { addressFormSchema } from './schemas' +import { usePopulateForm } from '@/lib/form' const initialValues = { address: { @@ -29,12 +30,14 @@ type OnboardAddressProps = { export function OnboardAddress({ onCancel }: OnboardAddressProps) { const intl = useIntl() + const { data, handleNext, setData } = useOnboardForm() + const form = useForm({ resolver: zodResolver(addressFormSchema), defaultValues: initialValues }) - const { handleNext, setData } = useOnboardForm() + usePopulateForm(form, data) const handleSubmit = form.handleSubmit((data) => { setData(data) diff --git a/src/app/(routes)/onboarding/create/onboard-detail.tsx b/src/app/(routes)/onboarding/create/onboard-detail.tsx index 467d7528..a2715711 100644 --- a/src/app/(routes)/onboarding/create/onboard-detail.tsx +++ b/src/app/(routes)/onboarding/create/onboard-detail.tsx @@ -12,6 +12,7 @@ import { useOnboardForm } from './onboard-form-provider' import { zodResolver } from '@hookform/resolvers/zod' import { DetailFormData, detailFormSchema } from './schemas' import { OnboardTitle } from '../onboard-title' +import { usePopulateForm } from '@/lib/form' const initialValues = { legalName: '', @@ -26,12 +27,14 @@ type OnboardDetailProps = { export function OnboardDetail({ onCancel }: OnboardDetailProps) { const intl = useIntl() + const { data, handleNext, setData } = useOnboardForm() + const form = useForm({ resolver: zodResolver(detailFormSchema), defaultValues: initialValues }) - const { handleNext, setData } = useOnboardForm() + usePopulateForm(form, data) const handleSubmit = form.handleSubmit((data) => { setData(data) diff --git a/src/app/(routes)/onboarding/create/onboard-theme.tsx b/src/app/(routes)/onboarding/create/onboard-theme.tsx index c261caca..438e48cf 100644 --- a/src/app/(routes)/onboarding/create/onboard-theme.tsx +++ b/src/app/(routes)/onboarding/create/onboard-theme.tsx @@ -18,6 +18,7 @@ import ConfirmationDialog from '@/components/confirmation-dialog' import { useConfirmDialog } from '@/components/confirmation-dialog/use-confirm-dialog' import { LoadingButton } from '@/components/ui/loading-button' import { OnboardTitle } from '../onboard-title' +import { usePopulateForm } from '@/lib/form' const initialValues = { accentColor: '', @@ -31,12 +32,14 @@ type OnboardThemeProps = { export function OnboardTheme({ onCancel }: OnboardThemeProps) { const intl = useIntl() + const { data, handleSubmit: handleFormSubmit, loading } = useOnboardForm() + const form = useForm({ resolver: zodResolver(themeFormSchema), defaultValues: initialValues }) - const { handleSubmit: handleFormSubmit, loading } = useOnboardForm() + usePopulateForm(form, data) const handleSubmit = () => form.handleSubmit((values) => { diff --git a/src/lib/form/get-initial-values.test.ts b/src/lib/form/get-initial-values.test.ts new file mode 100644 index 00000000..bebca01d --- /dev/null +++ b/src/lib/form/get-initial-values.test.ts @@ -0,0 +1,35 @@ +import { getInitialValues } from './get-initial-values' + +describe('getInitialValues', () => { + it('should return an empty object if initialValues is undefined', () => { + const result = getInitialValues(undefined, { name: 'John' }) + expect(result).toEqual({}) + }) + + it('should return initialValues if data is undefined', () => { + const initialValues = { name: '' } + const result = getInitialValues(initialValues, undefined) + expect(result).toEqual(initialValues) + }) + + it('should merge initialValues with data', () => { + const initialValues = { name: '', age: 0 } + const data = { name: 'Doe', age: 25, city: 'New York' } + const result = getInitialValues(initialValues, data) + expect(result).toEqual({ name: 'Doe', age: 25 }) + }) + + it('should not include keys from data that are not in initialValues', () => { + const initialValues = { name: '' } + const data = { name: 'Doe', age: 25 } + const result = getInitialValues(initialValues, data) + expect(result).toEqual({ name: 'Doe' }) + }) + + it('should return initialValues if data does not contain any matching keys', () => { + const initialValues = { name: '' } + const data = { age: 25, city: 'New York' } + const result = getInitialValues(initialValues, data) + expect(result).toEqual(initialValues) + }) +}) diff --git a/src/lib/form/get-initial-values.ts b/src/lib/form/get-initial-values.ts new file mode 100644 index 00000000..94562ade --- /dev/null +++ b/src/lib/form/get-initial-values.ts @@ -0,0 +1,19 @@ +import { isNil, pick } from 'lodash' + +/** + * Merge the initial values with the pre-populated data for a form. + * Data is filtered using the initial values object keys. + * @param initialValues An object with the initial values of the form + * @param data An object to pre-populate the form + * @returns + */ +export function getInitialValues(initialValues?: object, data?: object) { + if (isNil(initialValues)) { + return {} + } + + return { + ...initialValues, + ...pick(data, Object.keys(initialValues)) + } +} diff --git a/src/lib/form/index.ts b/src/lib/form/index.ts new file mode 100644 index 00000000..7f5a96ed --- /dev/null +++ b/src/lib/form/index.ts @@ -0,0 +1,2 @@ +export * from './get-initial-values' +export * from './use-populate-form' diff --git a/src/lib/form/use-populate-form.ts b/src/lib/form/use-populate-form.ts new file mode 100644 index 00000000..e4aa1fd4 --- /dev/null +++ b/src/lib/form/use-populate-form.ts @@ -0,0 +1,22 @@ +import { isNil } from 'lodash' +import { useEffect } from 'react' +import { UseFormReturn } from 'react-hook-form' +import { getInitialValues } from './get-initial-values' + +/** + * Pre-populate a form using external data. + * Useful for editing forms. + * @param form The form object + * @param data Data to populate the form + */ +export function usePopulateForm(form: UseFormReturn, data: any) { + useEffect(() => { + if (isNil(data)) { + return + } + + form.reset(getInitialValues(form.formState.defaultValues, data), { + keepDefaultValues: true + }) + }, [data]) +}