From a66487d12693c340cbcc625e1b1edcc0ea0cfc14 Mon Sep 17 00:00:00 2001 From: Eric Crowell Date: Mon, 17 Jun 2024 01:14:01 +0200 Subject: [PATCH] dev: Simplified navigation component with context --- .../src/components/Navigation/Navigation.tsx | 54 +----- .../Navigation/NavigationExtended.tsx | 52 +++-- .../Navigation/NavigationIsland.tsx | 48 ++--- .../Navigation/NavigationStandard.tsx | 53 +++-- .../Navigation/data/NavigationContext.ts | 81 ++++++++ .../Navigation/data/NavigationProvider.tsx | 25 +++ .../parts/NavigationPart_Actions.tsx | 31 +-- .../Navigation/parts/NavigationPart_Brand.tsx | 30 +-- .../Navigation/parts/NavigationPart_Links.tsx | 29 +-- pnpm-lock.yaml | 183 ------------------ 10 files changed, 191 insertions(+), 395 deletions(-) create mode 100644 packages/ui/src/components/Navigation/data/NavigationContext.ts create mode 100644 packages/ui/src/components/Navigation/data/NavigationProvider.tsx diff --git a/packages/ui/src/components/Navigation/Navigation.tsx b/packages/ui/src/components/Navigation/Navigation.tsx index 871eb9a..50c2b8b 100644 --- a/packages/ui/src/components/Navigation/Navigation.tsx +++ b/packages/ui/src/components/Navigation/Navigation.tsx @@ -1,61 +1,9 @@ -import type { Link, ThemeColor, SocialLinks } from '@do-ob/ui/types'; +import type { NavigationProps } from './data/NavigationContext'; import { NavigationStandard } from './NavigationStandard'; import { NavigationIsland } from './NavigationIsland'; import { NavigationExtended } from './NavigationExtended'; -export interface NavigationProps { - /** - * The brand title to display - */ - title?: string; - - /** - * The brand image to display - */ - logo?: string; - - /** - * The theme color of the navigation - */ - color?: ThemeColor; - - /** - * The links of the navigation - */ - links?: Link[]; - - /** - * Class name for the navigation - */ - className?: string; - - /** - * The search form action URL - */ - search?: string; - - /** - * Enable the dark mode toggle - */ - modeToggle?: boolean; - - /** - * The social links of the navigation - */ - socials?: SocialLinks; - - /** - * Class names to modify. - */ - classNames?: { - /** - * The logo image class name - */ - logo?: string; - } -} - export interface NavigationVariantProps extends NavigationProps { /** * The variant of the navigation diff --git a/packages/ui/src/components/Navigation/NavigationExtended.tsx b/packages/ui/src/components/Navigation/NavigationExtended.tsx index b1c9df0..0a95383 100644 --- a/packages/ui/src/components/Navigation/NavigationExtended.tsx +++ b/packages/ui/src/components/Navigation/NavigationExtended.tsx @@ -1,42 +1,36 @@ import { Navbar, NavbarContent } from '@nextui-org/react'; -import { twColors } from '@do-ob/ui/utility'; import { clsx, clmg } from '@do-ob/core'; -import type { NavigationProps } from './Navigation'; +import type { NavigationProps } from './data/NavigationContext'; import { NavigationPart_Brand } from './parts/NavigationPart_Brand'; import { NavigationPart_Links } from './parts/NavigationPart_Links'; import { NavigationPart_Actions } from './parts/NavigationPart_Actions'; +import { NavigationProvider } from './data/NavigationProvider'; -export function NavigationExtended({ - title, - color, - links, - className, - search, - modeToggle, - socials, -}: NavigationProps) { - - const [ colors ] = twColors(color); +export function NavigationExtended(props: NavigationProps) { return ( - - - - + + {({ color, colors, className }) => ( + + + + - - - + + + - -
- -
-
+ +
+ +
+
-
+
+ )} + ); } diff --git a/packages/ui/src/components/Navigation/NavigationIsland.tsx b/packages/ui/src/components/Navigation/NavigationIsland.tsx index 3685876..597e613 100644 --- a/packages/ui/src/components/Navigation/NavigationIsland.tsx +++ b/packages/ui/src/components/Navigation/NavigationIsland.tsx @@ -1,39 +1,31 @@ import { Navbar, NavbarContent } from '@nextui-org/react'; -import { twColors } from '@do-ob/ui/utility'; import { clsx, clmg } from '@do-ob/core'; -import type { NavigationProps } from './Navigation'; +import type { NavigationProps } from './data/NavigationContext'; +import { NavigationProvider } from './data/NavigationProvider'; import { NavigationPart_Brand } from './parts/NavigationPart_Brand'; import { NavigationPart_Links } from './parts/NavigationPart_Links'; import { NavigationPart_Actions } from './parts/NavigationPart_Actions'; -export function NavigationIsland({ - title, - logo, - color, - links, - className, - search, - modeToggle, - socials, - classNames = {} -}: NavigationProps) { - - const [ colors ] = twColors(color); +export function NavigationIsland(props: NavigationProps) { return ( - - - - - -
- -
-
- - - -
+ + {({ color, colors, className }) => ( + + + + + +
+ +
+
+ + + +
+ )} +
); } diff --git a/packages/ui/src/components/Navigation/NavigationStandard.tsx b/packages/ui/src/components/Navigation/NavigationStandard.tsx index e4c56fa..c84db43 100644 --- a/packages/ui/src/components/Navigation/NavigationStandard.tsx +++ b/packages/ui/src/components/Navigation/NavigationStandard.tsx @@ -1,43 +1,36 @@ import { Navbar, NavbarContent } from '@nextui-org/react'; -import { twColors } from '@do-ob/ui/utility'; import { clsx, clmg } from '@do-ob/core'; -import type { NavigationProps } from './Navigation'; +import type { NavigationProps } from './data/NavigationContext'; +import { NavigationProvider } from './data/NavigationProvider'; import { NavigationPart_Brand } from './parts/NavigationPart_Brand'; import { NavigationPart_Links } from './parts/NavigationPart_Links'; import { NavigationPart_Actions } from './parts/NavigationPart_Actions'; -export function NavigationStandard({ - title, - color, - links, - className, - search, - modeToggle, - socials -}: NavigationProps) { - - const [ colors ] = twColors(color); - +export function NavigationStandard(props: NavigationProps) { return ( - - - - + + {({ color, colors, className }) => ( + + + + - - - + + + - -
- -
-
+ +
+ +
+
-
+
+ )} + ); } diff --git a/packages/ui/src/components/Navigation/data/NavigationContext.ts b/packages/ui/src/components/Navigation/data/NavigationContext.ts new file mode 100644 index 0000000..16cebe0 --- /dev/null +++ b/packages/ui/src/components/Navigation/data/NavigationContext.ts @@ -0,0 +1,81 @@ +'use client'; + +import { Link, SocialLinks, ThemeColor } from '@do-ob/ui/types'; +import { createContext } from 'react'; + +/** + * Context properties for the do-ob ui provider + */ +export interface NavigationProps { + /** + * The brand title to display + */ + title?: string; + + /** + * The brand image to display + */ + logo?: string; + + /** + * The theme color of the navigation + */ + color?: ThemeColor; + + /** + * The links of the navigation + */ + links?: Link[]; + + /** + * Class name for the navigation + */ + className?: string; + + /** + * The search form action URL + */ + search?: string; + + /** + * Enable the dark mode toggle + */ + modeToggle?: boolean; + + /** + * The social links of the navigation + */ + socials?: SocialLinks; + + /** + * Class names to modify. + */ + classNames?: { + /** + * The logo image class name + */ + logo?: string; + } +} + +/** + * The context interface + */ +export interface NavigationContextProps extends NavigationProps { + /** + * Compiled tailwind color classes + */ + colors: [full: string, bg: string, text: string]; +} + +/** + * Default properties for the do-ob ui context + */ +export const NavigationProps: NavigationContextProps = { + colors: [ '', '', '' ], +}; + +/** + * The do-ob user interface (ui) context + */ +export const NavigationContext = createContext(NavigationProps); diff --git a/packages/ui/src/components/Navigation/data/NavigationProvider.tsx b/packages/ui/src/components/Navigation/data/NavigationProvider.tsx new file mode 100644 index 0000000..3adfc3d --- /dev/null +++ b/packages/ui/src/components/Navigation/data/NavigationProvider.tsx @@ -0,0 +1,25 @@ +'use client'; + +import { twColors } from '@do-ob/ui/utility'; +import { NavigationContext, NavigationContextProps, NavigationProps } from './NavigationContext'; + +export interface NavigationProviderProps extends NavigationProps { + children: ((props: NavigationContextProps) => React.ReactNode )| React.ReactNode; +} + +export function NavigationProvider({ + children, + ...props +}: NavigationProviderProps) { + + const value = { + ...props, + colors: twColors(props.color), + }; + + return ( + + {typeof children === 'function' ? children(value) : children} + + ); +} diff --git a/packages/ui/src/components/Navigation/parts/NavigationPart_Actions.tsx b/packages/ui/src/components/Navigation/parts/NavigationPart_Actions.tsx index 3fc2f42..a255965 100644 --- a/packages/ui/src/components/Navigation/parts/NavigationPart_Actions.tsx +++ b/packages/ui/src/components/Navigation/parts/NavigationPart_Actions.tsx @@ -1,36 +1,15 @@ import { ThemeSwitch, SearchButton } from '@do-ob/ui/components'; -import type { SocialLinks } from '@do-ob/ui/types'; import { SocialIcons } from '@do-ob/ui/icons'; import { Link, Button, Divider } from '@nextui-org/react'; - -/** - * Navigation Brand properties - */ -export interface NavigationPart_ActionsProps { - /** - * The search form action URL. - */ - search?: string; - - /** - * Enable the dark mode toggle. - */ - modeToggle?: boolean; - - /** - * The social links of the navigation. - */ - socials?: SocialLinks; -} +import { NavigationContext } from '../data/NavigationContext'; +import { useContext } from 'react'; /** * Navigation Search component */ -export function NavigationPart_Actions({ - search, - modeToggle, - socials = [], -}: NavigationPart_ActionsProps) { +export function NavigationPart_Actions() { + + const { socials = [], search, modeToggle } = useContext(NavigationContext); return (
diff --git a/packages/ui/src/components/Navigation/parts/NavigationPart_Brand.tsx b/packages/ui/src/components/Navigation/parts/NavigationPart_Brand.tsx index 03f60db..e0706e2 100644 --- a/packages/ui/src/components/Navigation/parts/NavigationPart_Brand.tsx +++ b/packages/ui/src/components/Navigation/parts/NavigationPart_Brand.tsx @@ -3,43 +3,21 @@ import React from 'react'; import { NavbarBrand, Link, Image } from '@nextui-org/react'; import { DoobUiContext } from '@do-ob/ui/context'; - -/** - * Navigation Brand properties - */ -export interface NavigationPart_BrandProps { - /** - * The branding title to display. - */ - title?: string; - - /** - * The branding image to display. - */ - logo?: string; - - /** - * The class name for the branding image. - */ - logoClassName?: string; -} +import { NavigationContext } from '../data/NavigationContext'; /** * Navigation Brand component */ -export function NavigationPart_Brand({ - title, - logo, - logoClassName, -}: NavigationPart_BrandProps) { +export function NavigationPart_Brand() { const { image: imageNode } = React.useContext(DoobUiContext); + const { title, logo, classNames } = React.useContext(NavigationContext); return ( {logo ? ( - {title} + {title} ) : null}

{title}

diff --git a/packages/ui/src/components/Navigation/parts/NavigationPart_Links.tsx b/packages/ui/src/components/Navigation/parts/NavigationPart_Links.tsx index 2c59184..84a35e0 100644 --- a/packages/ui/src/components/Navigation/parts/NavigationPart_Links.tsx +++ b/packages/ui/src/components/Navigation/parts/NavigationPart_Links.tsx @@ -1,22 +1,11 @@ +'use client'; + import { NavbarMenuItem, Link, Button, Popover, PopoverTrigger, PopoverContent, Divider } from '@nextui-org/react'; import { ChevronDownIcon } from '@heroicons/react/24/solid'; import { Link as LinkType } from '@do-ob/ui/types'; import { clsx } from '@do-ob/core'; - -/** - * Navigation Brand properties - */ -export interface NavigationPart_LinksProps { - /** - * The branding title to display. - */ - links?: LinkType[]; - - /** - * bg and text colors - */ - colors?: string; -} +import { useContext } from 'react'; +import { NavigationContext } from '../data/NavigationContext'; function LinkLeaf({ link }: { link: LinkType }) { return ( @@ -100,14 +89,14 @@ function LinkTrunk({ link, colors }: { link: LinkType, colors?: string }) { /** * Navigation Links component */ -export function NavigationPart_Links({ - links = [], - colors, -}: NavigationPart_LinksProps) { +export function NavigationPart_Links() { + + const { links = [], colors } = useContext(NavigationContext); + return links.length ? links.map((link) => !link.links?.length ? ( ) : ( - + )) : (   diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 315e5ab..962944a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -68,18 +68,12 @@ importers: autoprefixer: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) - babel-plugin-react-compiler: - specifier: 0.0.0-experimental-938cd9a-20240601 - version: 0.0.0-experimental-938cd9a-20240601 cssnano: specifier: ^7.0.2 version: 7.0.2(postcss@8.4.38) eslint: specifier: ^9.2.0 version: 9.4.0 - eslint-plugin-react-compiler: - specifier: 0.0.0-experimental-51a85ea-20240601 - version: 0.0.0-experimental-51a85ea-20240601(eslint@9.4.0) framer-motion: specifier: ^11.2.10 version: 11.2.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -92,12 +86,6 @@ importers: react-dom: specifier: 18.3.1 version: 18.3.1(react@18.3.1) - react-dom19: - specifier: npm:react-dom@19.0.0-rc-fb9a90fa48-20240614 - version: react-dom@19.0.0-rc-fb9a90fa48-20240614(react@18.3.1) - react19: - specifier: npm:react@19.0.0-rc-fb9a90fa48-20240614 - version: react@19.0.0-rc-fb9a90fa48-20240614 storybook: specifier: 8.2.0-alpha.9 version: 8.2.0-alpha.9(@babel/preset-env@7.24.7(@babel/core@7.24.7))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -161,9 +149,6 @@ packages: resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} engines: {node: '>=6.9.0'} - '@babel/generator@7.2.0': - resolution: {integrity: sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==} - '@babel/generator@7.24.7': resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} engines: {node: '>=6.9.0'} @@ -308,13 +293,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-proposal-private-methods@7.18.6': - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} @@ -1042,10 +1020,6 @@ packages: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/types@24.9.0': - resolution: {integrity: sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==} - engines: {node: '>= 6'} - '@joshwooding/vite-plugin-react-docgen-typescript@0.3.1': resolution: {integrity: sha512-pdoMZ9QaPnVlSM+SdU/wgg0nyD/8wQ7y90ttO2CMCyrrm7RxveYIJ5eNfjPaoMFqW41LZra7QO9j+xV4Y18Glw==} peerDependencies: @@ -3348,15 +3322,6 @@ packages: '@types/http-errors@2.0.4': resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@1.1.2': - resolution: {integrity: sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -3420,12 +3385,6 @@ packages: '@types/uuid@9.0.8': resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - - '@types/yargs@13.0.12': - resolution: {integrity: sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==} - '@typescript-eslint/eslint-plugin@8.0.0-alpha.13': resolution: {integrity: sha512-FQeu2HGVZ6wDAn2m6MxpS+or7LyBEjjCXnFv79aCJtcJnxtgDQa0po88GHZv1tZwzIsgxQ3bnbz4vNgbPisMbA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3613,10 +3572,6 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -3719,9 +3674,6 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-react-compiler@0.0.0-experimental-938cd9a-20240601: - resolution: {integrity: sha512-t+uBHxbfxq2z4j83ZYgOsV0dlSaRgPfhrYB5+CMv6ByXUAv5wm7m7YLFx67fWKrG3eDhq3+KH1OMeFypuDLkUA==} - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -4257,12 +4209,6 @@ packages: engines: {node: '>=6.0'} hasBin: true - eslint-plugin-react-compiler@0.0.0-experimental-51a85ea-20240601: - resolution: {integrity: sha512-ROiKTVu9pZsNHyJepZj/JULWnkw8+I8+9gOF/MkJ8Q22/9f9MkPQkD2f6FXzVH+iyWbp7DQ3RXKhB3hWhf8AIg==} - engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} - peerDependencies: - eslint: '>=7' - eslint-plugin-tailwindcss@3.17.3: resolution: {integrity: sha512-DVMVVUFQ+lPraRSuUk2I41XMnusXT6b3WaQZYlUHduULnERaqe9sNfmpRY1IyxlzmKoQxSbZ8IHRhl9ePo8PeA==} engines: {node: '>=18.12.0'} @@ -4608,12 +4554,6 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - hermes-estree@0.20.1: - resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} - - hermes-parser@0.20.1: - resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} - hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -5559,10 +5499,6 @@ packages: engines: {node: '>=14'} hasBin: true - pretty-format@24.9.0: - resolution: {integrity: sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==} - engines: {node: '>= 6'} - pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -5725,10 +5661,6 @@ packages: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} - react@19.0.0-rc-fb9a90fa48-20240614: - resolution: {integrity: sha512-nvE3Gy+IOIfH/DXhkyxFVQSrITarFcQz4+shzC/McxQXEUSonpw2oDy/Wi9hdDtV3hlP12VYuDL95iiBREedNQ==} - engines: {node: '>=0.10.0'} - read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} @@ -5920,10 +5852,6 @@ packages: source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -6141,10 +6069,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - trim-right@1.0.1: - resolution: {integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==} - engines: {node: '>=0.10.0'} - ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} @@ -6549,21 +6473,6 @@ packages: engines: {node: '>=8.0.0'} hasBin: true - zod-validation-error@2.1.0: - resolution: {integrity: sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - zod: ^3.18.0 - - zod-validation-error@3.3.0: - resolution: {integrity: sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw==} - engines: {node: '>=18.0.0'} - peerDependencies: - zod: ^3.18.0 - - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - snapshots: '@adobe/css-tools@4.4.0': {} @@ -6606,14 +6515,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.2.0': - dependencies: - '@babel/types': 7.24.7 - jsesc: 2.5.2 - lodash: 4.17.21 - source-map: 0.5.7 - trim-right: 1.0.1 - '@babel/generator@7.24.7': dependencies: '@babel/types': 7.24.7 @@ -6810,14 +6711,6 @@ snapshots: '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) - '@babel/helper-plugin-utils': 7.24.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -7636,12 +7529,6 @@ snapshots: dependencies: '@sinclair/typebox': 0.27.8 - '@jest/types@24.9.0': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 1.1.2 - '@types/yargs': 13.0.12 - '@joshwooding/vite-plugin-react-docgen-typescript@0.3.1(typescript@5.4.5)(vite@5.2.13(@types/node@20.14.2)(terser@5.31.1))': dependencies: glob: 7.2.3 @@ -12028,17 +11915,6 @@ snapshots: '@types/http-errors@2.0.4': {} - '@types/istanbul-lib-coverage@2.0.6': {} - - '@types/istanbul-lib-report@3.0.3': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - - '@types/istanbul-reports@1.1.2': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-lib-report': 3.0.3 - '@types/json-schema@7.0.15': {} '@types/lodash.debounce@4.0.9': @@ -12099,12 +11975,6 @@ snapshots: '@types/uuid@9.0.8': {} - '@types/yargs-parser@21.0.3': {} - - '@types/yargs@13.0.12': - dependencies: - '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.0.0-alpha.13(@typescript-eslint/parser@8.0.0-alpha.13(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.1 @@ -12360,8 +12230,6 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ansi-regex@4.1.1: {} - ansi-regex@5.0.1: {} ansi-regex@6.0.1: {} @@ -12459,16 +12327,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-react-compiler@0.0.0-experimental-938cd9a-20240601: - dependencies: - '@babel/generator': 7.2.0 - '@babel/types': 7.24.7 - chalk: 4.1.2 - invariant: 2.2.4 - pretty-format: 24.9.0 - zod: 3.23.8 - zod-validation-error: 2.1.0(zod@3.23.8) - balanced-match@1.0.2: {} base64-js@1.5.1: {} @@ -13023,18 +12881,6 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-plugin-react-compiler@0.0.0-experimental-51a85ea-20240601(eslint@9.4.0): - dependencies: - '@babel/core': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.24.7) - eslint: 9.4.0 - hermes-parser: 0.20.1 - zod: 3.23.8 - zod-validation-error: 3.3.0(zod@3.23.8) - transitivePeerDependencies: - - supports-color - eslint-plugin-tailwindcss@3.17.3(tailwindcss@3.4.4): dependencies: fast-glob: 3.3.2 @@ -13474,12 +13320,6 @@ snapshots: he@1.2.0: {} - hermes-estree@0.20.1: {} - - hermes-parser@0.20.1: - dependencies: - hermes-estree: 0.20.1 - hosted-git-info@2.8.9: {} html-tags@3.3.1: {} @@ -14298,13 +14138,6 @@ snapshots: prettier@3.3.2: {} - pretty-format@24.9.0: - dependencies: - '@jest/types': 24.9.0 - ansi-regex: 4.1.1 - ansi-styles: 3.2.1 - react-is: 16.13.1 - pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 @@ -14483,8 +14316,6 @@ snapshots: dependencies: loose-envify: 1.4.0 - react@19.0.0-rc-fb9a90fa48-20240614: {} - read-cache@1.0.0: dependencies: pify: 2.3.0 @@ -14733,8 +14564,6 @@ snapshots: buffer-from: 1.1.2 source-map: 0.6.1 - source-map@0.5.7: {} - source-map@0.6.1: {} space-separated-tokens@2.0.2: {} @@ -14985,8 +14814,6 @@ snapshots: tr46@0.0.3: {} - trim-right@1.0.1: {} - ts-api-utils@1.3.0(typescript@5.4.5): dependencies: typescript: 5.4.5 @@ -15354,13 +15181,3 @@ snapshots: validator: 13.12.0 optionalDependencies: commander: 9.5.0 - - zod-validation-error@2.1.0(zod@3.23.8): - dependencies: - zod: 3.23.8 - - zod-validation-error@3.3.0(zod@3.23.8): - dependencies: - zod: 3.23.8 - - zod@3.23.8: {}