From 31d05ed5c58c4c2c04c72f748f55c222771aea13 Mon Sep 17 00:00:00 2001 From: Eelco Wiersma Date: Sat, 18 Nov 2023 12:21:41 +0100 Subject: [PATCH] feat: add navbar component (#176) * feat: add navbar component * chore: update pro * chore: add navbar docs * chore: add figma link * chore: update title and description * chore: cleanup * chore: fix component overview * chore: finish navbar docs * chore: remove unused element * chore: fix tests --- .changeset/dirty-eyes-rule.md | 7 + apps/website/src/components/overview/item.tsx | 125 +- apps/website/src/data/components-sidebar.ts | 5 + apps/website/src/data/header-nav.tsx | 5 + .../mdx-components/codeblock/codeblock.tsx | 4 + .../codeblock/react-live-block.tsx | 4 + .../codeblock/react-live-scope.tsx | 6 + .../src/pages/docs/components/index.tsx | 16 +- .../docs/components/layout/navbar/props.mdx | 18 + .../docs/components/layout/navbar/theming.mdx | 124 ++ .../docs/components/layout/navbar/usage.mdx | 1149 +++++++++++++++++ .../docs/components/layout/sidebar/usage.mdx | 2 +- apps/website/src/pages/figma.tsx | 35 +- packages/saas-ui-core/package.json | 1 + .../saas-ui-core/src/app-shell/app-shell.tsx | 24 +- packages/saas-ui-core/src/index.ts | 14 + packages/saas-ui-core/src/navbar/index.ts | 14 + .../saas-ui-core/src/navbar/navbar-brand.tsx | 26 + .../src/navbar/navbar-content.tsx | 46 + .../saas-ui-core/src/navbar/navbar-context.ts | 20 + .../saas-ui-core/src/navbar/navbar-item.tsx | 33 + .../saas-ui-core/src/navbar/navbar-link.tsx | 37 + .../src/navbar/navbar.stories.tsx | 397 ++++++ .../saas-ui-core/src/navbar/navbar.test.tsx | 49 + packages/saas-ui-core/src/navbar/navbar.tsx | 68 + .../saas-ui-core/src/navbar/use-navbar.ts | 135 ++ .../saas-ui-core/src/persona/persona.test.tsx | 2 +- .../src/property/property.test.tsx | 2 +- .../src/sidebar/saas-ui-glyph.tsx | 87 +- packages/saas-ui-hooks/src/index.ts | 1 + .../saas-ui-hooks/src/use-scroll-position.ts | 88 ++ .../src/base/components/index.ts | 3 + .../src/base/components/navbar.ts | 97 ++ packages/storybook/.storybook/main.mjs | 3 - yarn.lock | 933 +++++++------ 35 files changed, 3068 insertions(+), 512 deletions(-) create mode 100644 .changeset/dirty-eyes-rule.md create mode 100644 apps/website/src/pages/docs/components/layout/navbar/props.mdx create mode 100644 apps/website/src/pages/docs/components/layout/navbar/theming.mdx create mode 100644 apps/website/src/pages/docs/components/layout/navbar/usage.mdx create mode 100644 packages/saas-ui-core/src/navbar/index.ts create mode 100644 packages/saas-ui-core/src/navbar/navbar-brand.tsx create mode 100644 packages/saas-ui-core/src/navbar/navbar-content.tsx create mode 100644 packages/saas-ui-core/src/navbar/navbar-context.ts create mode 100644 packages/saas-ui-core/src/navbar/navbar-item.tsx create mode 100644 packages/saas-ui-core/src/navbar/navbar-link.tsx create mode 100644 packages/saas-ui-core/src/navbar/navbar.stories.tsx create mode 100644 packages/saas-ui-core/src/navbar/navbar.test.tsx create mode 100644 packages/saas-ui-core/src/navbar/navbar.tsx create mode 100644 packages/saas-ui-core/src/navbar/use-navbar.ts create mode 100644 packages/saas-ui-hooks/src/use-scroll-position.ts create mode 100644 packages/saas-ui-theme/src/base/components/navbar.ts diff --git a/.changeset/dirty-eyes-rule.md b/.changeset/dirty-eyes-rule.md new file mode 100644 index 000000000..8eccfaab5 --- /dev/null +++ b/.changeset/dirty-eyes-rule.md @@ -0,0 +1,7 @@ +--- +'@saas-ui/theme': minor +'@saas-ui/core': minor +'@saas-ui/react': minor +--- + +Added new Navbar component 🥳 diff --git a/apps/website/src/components/overview/item.tsx b/apps/website/src/components/overview/item.tsx index e1d0ef8be..259a43080 100644 --- a/apps/website/src/components/overview/item.tsx +++ b/apps/website/src/components/overview/item.tsx @@ -8,6 +8,7 @@ import { Checkbox, CloseButton, Code, + Flex, FormControl, FormErrorMessage, FormLabel, @@ -18,6 +19,7 @@ import { Input, LinkBox, LinkOverlay, + Spacer, Table, Tbody, Td, @@ -36,6 +38,7 @@ import { ToolbarButton, Command, ActiveFilter, + Beacon, } from '@saas-ui-pro/react' import { AppShell, @@ -65,11 +68,23 @@ import { Web3Address, Steps, StepsItem, + Navbar, + SelectOption, + SelectList, + Link, + Timeline, + TimelineItem, + TimelineSeparator, + TimelineDot, + TimelineContent, + TimelineTrack, + TimelineIcon, } from '@saas-ui/react' import NextLink from 'next/link' import { FiBold, FiCheck, + FiFilter, FiHome, FiItalic, FiMaximize, @@ -77,6 +92,8 @@ import { FiUnderline, FiUsers, } from 'react-icons/fi' +import SaasUIGlyph from '../saas-ui-glyph' +import { SelectButton } from '@saas-ui/forms' const autoform = `z.object({ name: z.string() @@ -111,11 +128,39 @@ const componentIllustrations = { /> ), + splitpage: ( + + + + + + } + /> + + + + + + ), section: ( -
+
), + commandbar: CMD+K, + togglebutton: ( + + ), + web3address: ( + + ), toolbar: ( } /> @@ -130,6 +175,21 @@ const componentIllustrations = { ), + navbar: ( + + + + + + ), sidebar: ( @@ -203,11 +263,16 @@ const componentIllustrations = { ), select: ( - + Fullstack Developer + + + Fullstack Developer + + + + ), passwordinput: ( @@ -219,6 +284,11 @@ const componentIllustrations = { ), + fileupload: ( + + Drop your files here or select files + + ), datatable: ( @@ -254,7 +324,7 @@ const componentIllustrations = { actions={} /> ), - list: ( + structuredlist: ( @@ -285,6 +355,27 @@ const componentIllustrations = { tertiaryLabel="Out for lunch" /> ), + timeline: ( + + + + + + + + New signup + + + + + + + + Account upgraded + + + + ), command: G then D, datagrid: ( @@ -329,6 +420,23 @@ const componentIllustrations = { filters: ( ), + kanban: ( + + + Todo + + + + Done + + + + + Doing + + + + ), banner: ( @@ -350,7 +458,7 @@ const componentIllustrations = { ), - loader: ( + loadingoverlay: ( @@ -424,6 +532,7 @@ const componentIllustrations = { Remove ), + beacon: , 'benefits-modal': ( import('@/components/overview/item')) type Component = { title: string @@ -32,6 +34,7 @@ type Props = { } export const ComponentsOverview = ({ categories, headings }: Props) => { + console.log(categories) return ( { } export const getStaticProps: GetStaticProps = async () => { - const data = docsSidebar.routes - .find((route) => route.path.match(/\/docs\/components/)) - .routes.concat() - .splice(1) + const data = docsSidebar.routes?.concat().splice(1) || [] const categories: Category[] = await Promise.all( - data.map(async ({ title, routes }) => { + data.map(async ({ title, routes = [] }) => { const components = await Promise.all( routes.map(async ({ title: routeTitle, path: url }) => { const doc = allDocs.find((doc) => doc.slug === url) const component: Component = { title: routeTitle, - url, + url: url!, description: doc?.description || null, } diff --git a/apps/website/src/pages/docs/components/layout/navbar/props.mdx b/apps/website/src/pages/docs/components/layout/navbar/props.mdx new file mode 100644 index 000000000..c3cdf51ca --- /dev/null +++ b/apps/website/src/pages/docs/components/layout/navbar/props.mdx @@ -0,0 +1,18 @@ +--- +id: navbar +scope: props +--- + +## Props + +The `Navbar` component and all sub components accept all `Box` properties. + + + + + + + + + + diff --git a/apps/website/src/pages/docs/components/layout/navbar/theming.mdx b/apps/website/src/pages/docs/components/layout/navbar/theming.mdx new file mode 100644 index 000000000..2a13f039d --- /dev/null +++ b/apps/website/src/pages/docs/components/layout/navbar/theming.mdx @@ -0,0 +1,124 @@ +--- +id: navbar +scope: theming +--- + +## Theming + +The `Navbar` component is a multipart component. The styling needs to be +applied to each part specifically. + +> To learn more about styling multipart components, visit the Chakra UI +> [Component Style](https://chakra-ui.com/docs/styled-system/component-style#styling-multipart-components) +> page. + +### Anatomy + +- `container` +- `inner` +- `brand` +- `content` +- `item` +- `link` + +### Default theme + +```jsx live=false +import { anatomy } from '@chakra-ui/anatomy' +import { createMultiStyleConfigHelpers } from '@chakra-ui/styled-system' + +const parts = anatomy('navbar').parts( + 'container', + 'inner', + 'brand', + 'content', + 'item', + 'link' +) + +const { defineMultiStyleConfig, definePartsStyle } = + createMultiStyleConfigHelpers(parts.keys) + +export const navbarTheme = defineMultiStyleConfig({ + baseStyle: definePartsStyle({ + container: { + display: 'flex', + bg: 'chakra-body-bg', + zIndex: 'overlay', + width: 'full', + height: 'auto', + alignItems: 'center', + justifyContent: 'center', + data: { + '& [data-menu-open=true]': { + border: 'none', + }, + }, + }, + inner: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + width: 'full', + height: 'var(--navbar-height)', + px: 6, + gap: 4, + flexWrap: 'nowrap', + }, + toggle: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + width: 6, + height: 'full', + outline: 'none', + borderRadius: 'sm', + }, + brand: { + display: 'flex', + alignItems: 'center', + justifyContent: 'flex-start', + height: 'full', + bg: 'transparent', + textDecoration: 'none', + color: 'inherit', + whiteSpace: 'nowrap', + boxSizing: 'border-box', + }, + content: { + display: 'flex', + alignItems: 'center', + justifyContent: 'flex-start', + flex: 1, + listStyle: 'none', + }, + item: { + display: 'inline-flex', + p: 0, + }, + link: { + display: 'inline-flex', + alignItems: 'center', + justifyContent: 'center', + textDecoration: 'none', + whiteSpace: 'nowrap', + boxSizing: 'border-box', + borderRadius: 'md', + transitionProperty: 'common', + transitionDuration: 'normal', + px: 3, + h: 8, + _hover: { + bg: 'gray.100', + textDecoration: 'none', + _dark: { + bg: 'gray.700', + }, + }, + _active: { + fontWeight: 'semibold', + }, + }, + }), +}) +``` diff --git a/apps/website/src/pages/docs/components/layout/navbar/usage.mdx b/apps/website/src/pages/docs/components/layout/navbar/usage.mdx new file mode 100644 index 000000000..5a33ee898 --- /dev/null +++ b/apps/website/src/pages/docs/components/layout/navbar/usage.mdx @@ -0,0 +1,1149 @@ +--- +id: navbar +title: Navbar +category: 'layout' +package: '@saas-ui/core' +description: Top navigation, typically used as primary navigation in website. +--- + + + +## Import + +- `Navbar`: The container component that manages composition. +- `NavbarBrand`: The component used for branding. +- `NavbarContent`: The component that contains navbar items. +- `NavbarItem`: A navbar item. +- `NavbarLink`: A navbar link. + +```ts +import { + Navbar, + NavbarBrand, + NavbarContent, + NavbarItem, + NavbarLink, +} from '@saas-ui/react' +``` + +## Usage + +### Basic navbar + +```jsx height=200px overflow=auto +import { + AppShell, + Navbar, + NavbarBrand, + NavbarContent, + NavbarItem, + NavbarLink, +} from '@saas-ui/react' + +import { + Button, + Box, + Container, + Stack, + Skeleton, + SkeletonText, +} from '@chakra-ui/react' + +export default function Page() { + return ( + + + + + + + + Home + + + + About + + + Contact + + + + + + + + + + + + } + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) +} +``` + +### Sticky navbar + +Navbar uses `position` static by default, you can use `sticky` to make it stick to the top of the page. + +```jsx height=200px overflow=auto padding=0 +import { + AppShell, + Navbar, + NavbarBrand, + NavbarContent, + NavbarItem, + NavbarLink, +} from '@saas-ui/react' + +import { + Button, + Box, + Container, + Stack, + Skeleton, + SkeletonText, +} from '@chakra-ui/react' + +export default function Page() { + return ( + + + + + + + + Home + + + + About + + + Contact + + + + + + + + + + + + } + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) +} +``` + +### Border bottom + +Simply add `borderBottomWidth="1px"` to the navbar to add a bottom border. + +```jsx height=200px overflow=auto padding=0 +import { + AppShell, + Navbar, + NavbarBrand, + NavbarContent, + NavbarItem, + NavbarLink, +} from '@saas-ui/react' + +import { + Button, + Box, + Container, + Stack, + Skeleton, + SkeletonText, +} from '@chakra-ui/react' + +export default function Page() { + return ( + + + + + + + + Home + + + + About + + + Contact + + + + + + + + + + + + } + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) +} +``` + +### Blurred background + +Using a transparent background with a backdrop blur filter can add a glassy effect to the navbar. + +```jsx height=200px overflow=auto padding=0 +import { + AppShell, + Navbar, + NavbarBrand, + NavbarContent, + NavbarItem, + NavbarLink, +} from '@saas-ui/react' + +import { + Button, + Box, + Container, + Stack, + Skeleton, + SkeletonText, +} from '@chakra-ui/react' + +export default function Page() { + return ( + + + + + + + + Home + + + + About + + + Contact + + + + + + + + + + + + } + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) +} +``` + +### Hide on scroll + +Setting the `shouldHideOnScroll` prop to `true` will hide the navbar when the user scrolls down and show it when the user scrolls up. +Use the `parentRef` prop to specify the parent scroll container, defaults to the `window` object. + +```jsx height=200px padding=0 overflow="hidden" position="relative" +import { + AppShell, + Navbar, + NavbarBrand, + NavbarContent, + NavbarItem, + NavbarLink, +} from '@saas-ui/react' + +import { + Button, + Box, + Container, + Stack, + Skeleton, + SkeletonText, +} from '@chakra-ui/react' + +export default function Page() { + const parentRef = React.useRef(null) + + return ( + + + + + + + + + Home + + + + About + + + Contact + + + + + + + + + + + + } + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) +} +``` + +### With mobile navigation + +Add a mobile navigation menu to the navbar using the `Drawer` component from `@chakra-ui/react`. + +```jsx height=200px overflowY=auto padding=0 +import { + AppShell, + Navbar, + NavbarBrand, + NavbarContent, + NavbarItem, + NavbarLink, +} from '@saas-ui/react' + +import { + Button, + Box, + Container, + Stack, + Skeleton, + SkeletonText, + Drawer, + DrawerBody, + DrawerCloseButton, + DrawerContent, + DrawerHeader, + DrawerOverlay, + useDisclosure, +} from '@chakra-ui/react' + +import { FiX, FiMenu } from 'react-icons/fi' + +export default function Page() { + const mobileNav = useDisclosure() + + const menuItems = ['Features', 'Customers', 'Integrations', 'Pricing'] + + return ( + + + + + + + + + Features + + + + + Customers + + + + + Integrations + + + + + Pricing + + + + + + Login + + + + + + + + + + + + + + + {menuItems.map((item, index) => ( + + + {item} + + + ))} + + + + + + } + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) +} +``` + +### With user menu + +Example with an avatar and dropdown menu. + +```jsx height=280px overflow=auto padding=0 +import { + AppShell, + Navbar, + NavbarBrand, + NavbarContent, + NavbarItem, + NavbarLink, + PersonaAvatar, +} from '@saas-ui/react' + +import { + Button, + Box, + Container, + Stack, + Skeleton, + SkeletonText, + Menu, + MenuButton, + MenuList, + MenuGroup, + MenuItem, + MenuDivider, + useDisclosure, +} from '@chakra-ui/react' + +export default function Page() { + return ( + + + + + + + + Inbox + + + + + Contacts + + + + + Tasks + + + + + + + + + + + Profile + Settings + Help & feedback + + + Log out + + + + + } + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) +} +``` + +### With search input + +An example with a global search input. + +```jsx height=280px overflow=auto padding=0 +import { + AppShell, + Navbar, + NavbarBrand, + NavbarContent, + NavbarItem, + NavbarLink, + PersonaAvatar, + SearchInput, +} from '@saas-ui/react' + +import { + Button, + Box, + Container, + Stack, + Skeleton, + SkeletonText, + Menu, + MenuButton, + MenuList, + MenuGroup, + MenuItem, + MenuDivider, + useDisclosure, +} from '@chakra-ui/react' + +export default function Page() { + return ( + + + + + + + + Inbox + + + + + Contacts + + + + + Tasks + + + + + + + + + + + + + + Profile + Settings + Help & feedback + + + Log out + + + + + } + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) +} +``` + +### With breadcrumbs + +An example with breadcrumbs and a workspace dropdown menu. + +```jsx height=280px overflow=auto padding=0 +import { + AppShell, + Navbar, + NavbarContent, + NavbarItem, + NavbarLink, + PersonaAvatar, + SearchInput, +} from '@saas-ui/react' + +import { + Button, + Box, + Breadcrumb + BreadcrumbItem, + BreadcrumbLink, + Container, + Stack, + Skeleton, + SkeletonText, + Menu, + MenuButton, + MenuList, + MenuGroup, + MenuItem, + MenuDivider, + useDisclosure, +} from '@chakra-ui/react' + +export default function Page() { + return ( + + + /}> + + + } rightIcon={}> + Saas UI + + + + Saas UI + Acme + + + Create workspace + + + + + Overview + + + + + + + + + + + + + + Profile + Settings + Help & feedback + + + Log out + + + + + } + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) +} +``` diff --git a/apps/website/src/pages/docs/components/layout/sidebar/usage.mdx b/apps/website/src/pages/docs/components/layout/sidebar/usage.mdx index cee73bec0..a7fcfa7b2 100644 --- a/apps/website/src/pages/docs/components/layout/sidebar/usage.mdx +++ b/apps/website/src/pages/docs/components/layout/sidebar/usage.mdx @@ -1,7 +1,7 @@ --- id: sidebar title: Sidebar -description: Side navigation, commonly used as the primary navigation. +description: Side navigation, commonly used as the primary navigation in web applications. --- { { _dark={{ opacity: 0.5 }} pointerEvents="none" /> - + diff --git a/packages/saas-ui-core/package.json b/packages/saas-ui-core/package.json index 3366b1578..e68b01f81 100644 --- a/packages/saas-ui-core/package.json +++ b/packages/saas-ui-core/package.json @@ -87,6 +87,7 @@ "@chakra-ui/system": "^2.6.1", "@chakra-ui/theme-tools": "^2.1.1", "@chakra-ui/utils": "^2.0.15", + "@react-aria/utils": "^3.22.0", "@saas-ui/react-utils": "workspace:*", "@saas-ui/theme": "workspace:*" }, diff --git a/packages/saas-ui-core/src/app-shell/app-shell.tsx b/packages/saas-ui-core/src/app-shell/app-shell.tsx index d67a63d34..b5860d69a 100644 --- a/packages/saas-ui-core/src/app-shell/app-shell.tsx +++ b/packages/saas-ui-core/src/app-shell/app-shell.tsx @@ -8,6 +8,7 @@ import { useMultiStyleConfig, omitThemingProps, SystemStyleObject, + forwardRef, } from '@chakra-ui/react' import { cx } from '@chakra-ui/utils' @@ -38,6 +39,7 @@ export interface AppShellProps * The main content */ children: React.ReactNode + mainRef?: React.RefObject } /** @@ -45,14 +47,21 @@ export interface AppShellProps * * @see Docs https://saas-ui.dev/docs/components/layout/app-shell */ -export const AppShell: React.FC = (props: AppShellProps) => { +export const AppShell = forwardRef((props, ref) => { const styles = useMultiStyleConfig('SuiAppShell', props) as Record< string, SystemStyleObject > - const { navbar, sidebar, aside, footer, children, ...containerProps } = - omitThemingProps(props) + const { + navbar, + sidebar, + aside, + footer, + children, + mainRef, + ...containerProps + } = omitThemingProps(props) const containerStyles: SystemStyleObject = { flexDirection: 'column', @@ -86,6 +95,7 @@ export const AppShell: React.FC = (props: AppShellProps) => { = (props: AppShellProps) => { {navbar} {sidebar} - + {children} {aside} @@ -103,6 +117,6 @@ export const AppShell: React.FC = (props: AppShellProps) => { ) -} +}) AppShell.displayName = 'AppShell' diff --git a/packages/saas-ui-core/src/index.ts b/packages/saas-ui-core/src/index.ts index 0fc3623d7..152eea15f 100644 --- a/packages/saas-ui-core/src/index.ts +++ b/packages/saas-ui-core/src/index.ts @@ -113,6 +113,20 @@ export { useLink, useSaas, } from './provider' +export { + Navbar, + NavbarBrand, + type NavbarBrandProps, + NavbarContent, + type NavbarContentProps, + NavbarItem, + type NavbarItemProps, + NavbarLink, + type NavbarProps, + NavbarProvider, + useNavbar, + useNavbarContext, +} from './navbar' export { Nav, NavGroup, diff --git a/packages/saas-ui-core/src/navbar/index.ts b/packages/saas-ui-core/src/navbar/index.ts new file mode 100644 index 000000000..1da6c8341 --- /dev/null +++ b/packages/saas-ui-core/src/navbar/index.ts @@ -0,0 +1,14 @@ +export type { NavbarProps } from './navbar' +export type { NavbarBrandProps } from './navbar-brand' +export type { NavbarContentProps } from './navbar-content' +export type { NavbarItemProps } from './navbar-item' + +export { useNavbar } from './use-navbar' + +export { NavbarProvider, useNavbarContext } from './navbar-context' + +export { Navbar } from './navbar' +export { NavbarBrand } from './navbar-brand' +export { NavbarContent } from './navbar-content' +export { NavbarItem } from './navbar-item' +export { NavbarLink } from './navbar-link' diff --git a/packages/saas-ui-core/src/navbar/navbar-brand.tsx b/packages/saas-ui-core/src/navbar/navbar-brand.tsx new file mode 100644 index 000000000..5f6722ea4 --- /dev/null +++ b/packages/saas-ui-core/src/navbar/navbar-brand.tsx @@ -0,0 +1,26 @@ +import { chakra, forwardRef, HTMLChakraProps } from '@chakra-ui/react' +import { cx } from '@chakra-ui/utils' +import { useNavBarStyles } from './navbar-context' + +export interface NavbarBrandProps extends HTMLChakraProps<'div'> { + children?: React.ReactNode | React.ReactNode[] +} + +export const NavbarBrand = forwardRef((props, ref) => { + const { className, children, ...rest } = props + + const styles = useNavBarStyles() + + return ( + + {children} + + ) +}) + +NavbarBrand.displayName = 'NavbarBrand' diff --git a/packages/saas-ui-core/src/navbar/navbar-content.tsx b/packages/saas-ui-core/src/navbar/navbar-content.tsx new file mode 100644 index 000000000..3bfa166ec --- /dev/null +++ b/packages/saas-ui-core/src/navbar/navbar-content.tsx @@ -0,0 +1,46 @@ +import { + chakra, + forwardRef, + HTMLChakraProps, + SystemProps, +} from '@chakra-ui/react' +import { cx } from '@chakra-ui/utils' + +import { useNavBarStyles } from './navbar-context' + +export interface NavbarContentProps extends HTMLChakraProps<'ul'> { + /** + * Typically the `NavbarItem` component + */ + children?: React.ReactNode | React.ReactNode[] + /** + * Spacing between each navbar item + */ + spacing?: SystemProps['margin'] +} + +export const NavbarContent = forwardRef( + (props, ref) => { + const { className, children, spacing = 0, ...rest } = props + + const styles = useNavBarStyles() + + const contentStyles = { + ...styles.content, + '& > *:not(style) ~ *:not(style)': { marginStart: spacing }, + } + + return ( + + {children} + + ) + } +) + +NavbarContent.displayName = 'NavbarContent' diff --git a/packages/saas-ui-core/src/navbar/navbar-context.ts b/packages/saas-ui-core/src/navbar/navbar-context.ts new file mode 100644 index 000000000..2695b8fc1 --- /dev/null +++ b/packages/saas-ui-core/src/navbar/navbar-context.ts @@ -0,0 +1,20 @@ +import { createContext } from '@chakra-ui/react-context' + +import { UseNavbarReturn } from './use-navbar' +import { SystemStyleObject } from '@chakra-ui/styled-system' + +export const [NavbarProvider, useNavbarContext] = + createContext({ + name: 'NavbarContext', + strict: true, + errorMessage: + 'useNavbarContext: `context` is undefined. Seems you forgot to wrap component within ', + }) + +export const [NavBarStylesProvider, useNavBarStyles] = createContext< + Record +>({ + name: `NavBarStylesContext`, + hookName: `useNavItemStyles`, + providerName: '', +}) diff --git a/packages/saas-ui-core/src/navbar/navbar-item.tsx b/packages/saas-ui-core/src/navbar/navbar-item.tsx new file mode 100644 index 000000000..91c1ec1dc --- /dev/null +++ b/packages/saas-ui-core/src/navbar/navbar-item.tsx @@ -0,0 +1,33 @@ +import { chakra, forwardRef, HTMLChakraProps } from '@chakra-ui/react' +import { cx, dataAttr } from '@chakra-ui/utils' + +import { useNavBarStyles } from './navbar-context' + +export interface NavbarItemProps extends HTMLChakraProps<'li'> { + children?: React.ReactNode + /** + * Whether the item is active or not. + * @default false + */ + isActive?: boolean +} + +export const NavbarItem = forwardRef((props, ref) => { + const { className, children, isActive, ...rest } = props + + const styles = useNavBarStyles() + + return ( + + {children} + + ) +}) + +NavbarItem.displayName = 'NavbarItem' diff --git a/packages/saas-ui-core/src/navbar/navbar-link.tsx b/packages/saas-ui-core/src/navbar/navbar-link.tsx new file mode 100644 index 000000000..0f1934944 --- /dev/null +++ b/packages/saas-ui-core/src/navbar/navbar-link.tsx @@ -0,0 +1,37 @@ +import { chakra, forwardRef, HTMLChakraProps } from '@chakra-ui/react' +import { cx, dataAttr } from '@chakra-ui/utils' + +import { useNavBarStyles } from './navbar-context' +import { useLink } from '../provider' + +export interface NavbarLinkProps extends HTMLChakraProps<'a'> { + children?: React.ReactNode + /** + * Whether the link is active or not. + * @default false + */ + isActive?: boolean +} + +export const NavbarLink = forwardRef((props, ref) => { + const { className, children, isActive, ...rest } = props + + const Link = useLink() + + const styles = useNavBarStyles() + + return ( + + {children} + + ) +}) + +NavbarLink.displayName = 'NavbarLink' diff --git a/packages/saas-ui-core/src/navbar/navbar.stories.tsx b/packages/saas-ui-core/src/navbar/navbar.stories.tsx new file mode 100644 index 000000000..afd73e726 --- /dev/null +++ b/packages/saas-ui-core/src/navbar/navbar.stories.tsx @@ -0,0 +1,397 @@ +import React from 'react' +import { Meta } from '@storybook/react' +import { + Button, + Menu, + MenuButton, + MenuList, + MenuItem, + Container, + Drawer, + DrawerContent, + DrawerBody, + useDisclosure, + DrawerHeader, + DrawerCloseButton, + DrawerOverlay, + MenuGroup, + MenuDivider, + Box, + Skeleton, + SkeletonText, + Stack, +} from '@chakra-ui/react' + +import { AppShell } from '../app-shell' +import { PersonaAvatar } from '../persona' +import { SearchInput } from '../search-input' + +import { FiMenu, FiX } from 'react-icons/fi' + +import SaasUILogo from '../sidebar/saas-ui-glyph' + +import { + Navbar, + NavbarBrand, + NavbarContent, + NavbarItem, + NavbarLink, + NavbarProps, +} from '.' + +export default { + title: 'Components/Layout/Navbar', + component: Navbar, + argTypes: { + position: { + control: { + type: 'select', + }, + options: ['static', 'fixed'], + }, + maxWidth: { + control: { + type: 'select', + }, + options: ['sm', 'md', 'lg', 'xl', '2xl', 'full'], + }, + }, + decorators: [(Story) => ], +} as Meta + +const AppLogo = () => + +const App = React.forwardRef(({ children, navbar }: any, ref: any) => { + return ( + + + {children} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) +}) + +App.displayName = 'App' + +const Template = (args: NavbarProps) => { + const parentRef = React.useRef(null) + + return ( + + + + + + + + Features + + + + Customers + + + + + Integrations + + + + + Pricing + + + + + + Login + + + + + + + + ) +} + +const WithMenuTemplate = (args: NavbarProps) => { + const parentRef = React.useRef(null) + + const mobileNav = useDisclosure() + + const menuItems = ['Features', 'Customers', 'Integrations', 'Pricing'] + + return ( + + + + + + + + + + Features + + + + + Customers + + + + + Integrations + + + + + Pricing + + + + + + Login + + + + + + + + + + + + + + + {menuItems.map((item, index) => ( + + + {item} + + + ))} + + + + + + + ) +} + +const WithUserMenuTemplate = (args: NavbarProps) => { + return ( + + + + + + + + + Inbox + + + + + Contacts + + + + + Tasks + + + + + + + + + + + Profile + Settings + Help & feedback + + + Log out + + + + + + ) +} + +const WithSearchInputTemplate = (args: NavbarProps) => { + return ( + + + + + + + + + Inbox + + + + + Contacts + + + + + Tasks + + + + + + + + + + + + + + Profile + Settings + Help & feedback + + + Log out + + + + + + ) +} + +export const Static = { + render: Template, + + args: { + position: 'static', + }, +} + +export const Sticky = { + render: Template, + + args: { + position: 'sticky', + }, +} + +export const Border = { + render: Template, + + args: { + position: 'sticky', + borderBottomWidth: '1px', + }, +} + +export const BlurredBg = { + render: Template, + + args: { + position: 'sticky', + borderBottomWidth: '1px', + background: 'transparent', + backdropFilter: 'blur(4px)', + }, +} + +export const Shadow = { + render: Template, + + args: { + position: 'sticky', + borderBottomWidth: '1px', + background: 'transparent', + backdropFilter: 'blur(4px)', + boxShadow: 'lg', + }, +} + +export const HideOnScroll = { + render: Template, + + args: { + position: 'sticky', + shouldHideOnScroll: true, + }, +} + +export const WithMenu = { + render: WithMenuTemplate, +} + +export const WithUserMenu = { + render: WithUserMenuTemplate, +} + +export const WithSearchInput = { + render: WithSearchInputTemplate, +} diff --git a/packages/saas-ui-core/src/navbar/navbar.test.tsx b/packages/saas-ui-core/src/navbar/navbar.test.tsx new file mode 100644 index 000000000..3c2a57e93 --- /dev/null +++ b/packages/saas-ui-core/src/navbar/navbar.test.tsx @@ -0,0 +1,49 @@ +import * as React from 'react' +import { render, testStories } from '@saas-ui/test-utils' + +import { Navbar, NavbarBrand, NavbarItem, NavbarContent } from './index' + +import * as stories from './navbar.stories' + +testStories(stories) + +describe('Navbar', () => { + it('should render correctly', () => { + const wrapper = render() + + expect(() => wrapper.unmount()).not.toThrow() + }) + + it('ref should be forwarded', () => { + const ref = React.createRef() + + render() + expect(ref.current).not.toBeNull() + }) + + it('should render correctly with brand', () => { + const wrapper = render( + + Saas UI + + ) + + expect(wrapper.getByTestId('navbar-test')).toBeInTheDocument() + }) + + it('should render correctly content children', () => { + const wrapper = render( + + + Dashboard + Contacts + Settings + + + ) + + const navbarContent = wrapper.getByTestId('navbar-content-test') + + expect(navbarContent.children.length).toBe(5) + }) +}) diff --git a/packages/saas-ui-core/src/navbar/navbar.tsx b/packages/saas-ui-core/src/navbar/navbar.tsx new file mode 100644 index 000000000..37505a232 --- /dev/null +++ b/packages/saas-ui-core/src/navbar/navbar.tsx @@ -0,0 +1,68 @@ +import { + HTMLChakraProps, + ThemingProps, + chakra, + forwardRef, + useMultiStyleConfig, +} from '@chakra-ui/react' +import { HTMLMotionProps, motion } from 'framer-motion' +import { UseNavbarProps, useNavbar } from './use-navbar' +import { NavBarStylesProvider, NavbarProvider } from './navbar-context' +import { cx } from '@saas-ui/react-utils' + +const MotionBox = chakra(motion.nav) + +type MotionProps = Pick< + HTMLMotionProps<'div'>, + 'onAnimationStart' | 'onDrag' | 'onDragStart' | 'onDragEnd' +> + +export interface NavbarProps + extends Omit, + Omit, keyof MotionProps | 'height'>, + MotionProps, + ThemingProps<'SuiNavbar'> { + children?: React.ReactNode | React.ReactNode[] +} + +export const Navbar = forwardRef((props, ref) => { + const { children, ...otherProps } = props + + const context = useNavbar({ ...otherProps, ref }) + + const styles = useMultiStyleConfig('SuiNavbar', props) + + const content = ( + + {children} + + ) + + const containerStyles = { + top: props.position === 'sticky' ? '0' : undefined, + insetX: props.position === 'sticky' ? '0' : undefined, + ...styles.container, + } + + return ( + + + + {content} + + + + ) +}) + +Navbar.displayName = 'Navbar' diff --git a/packages/saas-ui-core/src/navbar/use-navbar.ts b/packages/saas-ui-core/src/navbar/use-navbar.ts new file mode 100644 index 000000000..0cc65af57 --- /dev/null +++ b/packages/saas-ui-core/src/navbar/use-navbar.ts @@ -0,0 +1,135 @@ +import { PropGetterV2 } from '@chakra-ui/react-utils' +import { dataAttr } from '@chakra-ui/utils' +import React, { useEffect, useImperativeHandle, useRef, useState } from 'react' +import { useResizeObserver } from '@react-aria/utils' +import { useScrollPosition } from '@saas-ui/hooks' +import { HTMLMotionProps } from 'framer-motion' + +export interface UseNavbarProps { + /** + * Ref to the DOM node. + */ + ref: React.ForwardedRef + /** + * The parent element where the navbar is placed within. + * This is used to determine the scroll position and whether the navbar should be hidden or not. + * @default `window` + */ + parentRef?: React.RefObject + /** + * The height of the navbar. + * @default "3.5rem" (56px) + */ + height?: number | string + /** + * Whether the navbar should hide on scroll or not. + * @default false + */ + shouldHideOnScroll?: boolean + /** + * Whether the navbar parent scroll event should be listened to or not. + * @default false + */ + disableScrollHandler?: boolean + /** + * The props to modify the framer motion animation. Use the `variants` API to create your own animation. + * This motion is only available if the `shouldHideOnScroll` prop is set to `true`. + */ + motionProps?: HTMLMotionProps<'nav'> + /** + * The scroll event handler for the navbar. The event fires when the navbar parent element is scrolled. + * it only works if `disableScrollHandler` is set to `false` or `shouldHideOnScroll` is set to `true`. + */ + onScrollPositionChange?: (scrollPosition: number) => void + /** + * Style props to be applied to the navbar container. + */ + style?: React.CSSProperties +} + +export function useNavbar(props: UseNavbarProps) { + const { + ref, + parentRef, + height = '3.5rem', + shouldHideOnScroll = false, + disableScrollHandler = false, + onScrollPositionChange, + motionProps, + ...containerProps + } = props + + const containerRef = useRef(null) + + useImperativeHandle(ref, () => containerRef.current as HTMLElement) + + const prevWidth = useRef(0) + const navHeight = useRef(0) + + const [isHidden, setIsHidden] = useState(false) + + const updateWidth = () => { + if (containerRef.current) { + const width = containerRef.current.offsetWidth + + if (width !== prevWidth.current) { + prevWidth.current = width + } + } + } + + useResizeObserver({ + ref: containerRef, + onResize: () => { + const currentWidth = containerRef.current?.offsetWidth + + if (currentWidth !== prevWidth.current) { + updateWidth() + } + }, + }) + + useEffect(() => { + updateWidth() + + navHeight.current = containerRef.current?.offsetHeight || 0 + }, []) + + useScrollPosition({ + elementRef: parentRef, + isEnabled: shouldHideOnScroll || !disableScrollHandler, + callback: ({ prevPos, currPos }) => { + onScrollPositionChange?.(currPos.y) + if (shouldHideOnScroll) { + setIsHidden((prev) => { + const next = currPos.y > prevPos.y && currPos.y > navHeight.current + + return next !== prev ? next : prev + }) + } + }, + }) + + const getContainerProps: PropGetterV2 = (props = {}) => ({ + ...containerProps, + ...motionProps, + 'data-hidden': dataAttr(isHidden), + ref: containerRef, + style: { + '--navbar-height': height, + ...containerProps.style, + ...props?.style, + }, + }) + + return { + containerRef, + height, + isHidden, + shouldHideOnScroll, + motionProps, + getContainerProps, + } +} + +export type UseNavbarReturn = ReturnType diff --git a/packages/saas-ui-core/src/persona/persona.test.tsx b/packages/saas-ui-core/src/persona/persona.test.tsx index 678854048..88caf074e 100644 --- a/packages/saas-ui-core/src/persona/persona.test.tsx +++ b/packages/saas-ui-core/src/persona/persona.test.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { render, testStories } from '@saas-ui/test-utils' -import * as stories from '../stories/persona.stories' +import * as stories from './persona.stories' testStories(stories) diff --git a/packages/saas-ui-core/src/property/property.test.tsx b/packages/saas-ui-core/src/property/property.test.tsx index 58cb3ef9b..d15d3bb70 100644 --- a/packages/saas-ui-core/src/property/property.test.tsx +++ b/packages/saas-ui-core/src/property/property.test.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import { render, testStories } from '@saas-ui/test-utils' -import * as stories from '../stories/property.stories' +import * as stories from './property.stories' const { Basic } = testStories(stories) diff --git a/packages/saas-ui-core/src/sidebar/saas-ui-glyph.tsx b/packages/saas-ui-core/src/sidebar/saas-ui-glyph.tsx index d2d9cc945..b29e18593 100644 --- a/packages/saas-ui-core/src/sidebar/saas-ui-glyph.tsx +++ b/packages/saas-ui-core/src/sidebar/saas-ui-glyph.tsx @@ -1,71 +1,26 @@ -import * as React from 'react' -import { - chakra, - HTMLChakraProps, - keyframes, - useColorModeValue, -} from '@chakra-ui/react' - -const dash = keyframes` - from { - stroke-dashoffset: 0; - } - to { - stroke-dashoffset: 220%; - } -` - -interface LogoGlyph extends HTMLChakraProps<'svg'> { - isAnimating?: boolean - variant?: 'solid' | 'gradient' - color?: string -} - -const SaasUIGlyph: React.FC = (props) => { - const { isAnimating, variant = 'gradient', ...rest } = props - - let color = useColorModeValue('black', 'white') - - if (props.color) { - color = props.color - } +import { chakra, HTMLChakraProps, useColorModeValue } from '@chakra-ui/react' +const SaasUIGlyph: React.FC> = (props) => { return ( - - - - - - - - - - + + + + + ) } diff --git a/packages/saas-ui-hooks/src/index.ts b/packages/saas-ui-hooks/src/index.ts index 414002926..b553fcabb 100644 --- a/packages/saas-ui-hooks/src/index.ts +++ b/packages/saas-ui-hooks/src/index.ts @@ -5,3 +5,4 @@ export { } from './use-local-storage' export { useSteps } from './use-steps' export { type ScriptElt, type Status, useScript } from './use-script' +export { useScrollPosition } from './use-scroll-position' diff --git a/packages/saas-ui-hooks/src/use-scroll-position.ts b/packages/saas-ui-hooks/src/use-scroll-position.ts new file mode 100644 index 000000000..1d143b5cb --- /dev/null +++ b/packages/saas-ui-hooks/src/use-scroll-position.ts @@ -0,0 +1,88 @@ +import { useRef, useEffect } from 'react' + +const isBrowser = typeof window !== 'undefined' + +export type ScrollValue = { x: any; y: any } + +function getScrollPosition( + element: HTMLElement | undefined | null +): ScrollValue { + if (!isBrowser) return { x: 0, y: 0 } + if (!element) { + return { x: window.scrollX, y: window.scrollY } + } + + return { x: element.scrollLeft, y: element.scrollTop } +} + +export interface UseScrollPositionOptions { + /** + * The wait time in milliseconds before triggering the callback. + * @default 30 + */ + delay?: number + /** + * Whether the scroll position should be tracked or not. + * @default true + */ + isEnabled?: boolean + /** + * The element to track the scroll position for. + */ + elementRef?: React.RefObject | null + /** + * The callback function to be called when the scroll position changes. + */ + callback?: ({ + prevPos, + currPos, + }: { + prevPos: ScrollValue + currPos: ScrollValue + }) => void +} + +export const useScrollPosition = ( + props: UseScrollPositionOptions +): ScrollValue => { + const { elementRef, delay = 30, callback, isEnabled } = props + + const position = useRef( + isEnabled ? getScrollPosition(elementRef?.current) : { x: 0, y: 0 } + ) + + let throttleTimeout: ReturnType | null = null + + const handler = () => { + const currPos = getScrollPosition(elementRef?.current) + + if (typeof callback === 'function') { + callback({ prevPos: position.current, currPos }) + } + + position.current = currPos + throttleTimeout = null + } + + useEffect(() => { + if (!isEnabled) return + + const handleScroll = () => { + if (delay) { + if (throttleTimeout === null) { + throttleTimeout = setTimeout(handler, delay) + } + } else { + handler() + } + } + + const target = elementRef?.current || window + + target.addEventListener('scroll', handleScroll) + + return () => target.removeEventListener('scroll', handleScroll) + }, [elementRef?.current, delay, isEnabled]) + + return position.current +} diff --git a/packages/saas-ui-theme/src/base/components/index.ts b/packages/saas-ui-theme/src/base/components/index.ts index 934378963..c8ee87be3 100644 --- a/packages/saas-ui-theme/src/base/components/index.ts +++ b/packages/saas-ui-theme/src/base/components/index.ts @@ -18,6 +18,7 @@ import { selectTheme } from './select' import { structuredListTheme } from './structured-list' import { timelineTheme } from './timeline' import { iconBadgeTheme } from './icon-badge' +import { navbarTheme } from './navbar' export { appShellTheme as SuiAppShell } from './app-shell' export { bannerTheme as SuiBanner } from './banner' @@ -39,6 +40,7 @@ export { sidebarTheme as SuiSidebar } from './sidebar' export { structuredListTheme as SuiStructuredList } from './structured-list' export { timelineTheme as SuiTimeline } from './timeline' export { iconBadgeTheme as SuiIconBadge } from './icon-badge' +export { navbarTheme as SuiNavbarTheme } from './navbar' export const components = { SuiAppShell: appShellTheme, @@ -61,4 +63,5 @@ export const components = { SuiSidebar: sidebarTheme, SuiTimeline: timelineTheme, SuiIconBadge: iconBadgeTheme, + SuiNavbar: navbarTheme, } diff --git a/packages/saas-ui-theme/src/base/components/navbar.ts b/packages/saas-ui-theme/src/base/components/navbar.ts new file mode 100644 index 000000000..5df7103e9 --- /dev/null +++ b/packages/saas-ui-theme/src/base/components/navbar.ts @@ -0,0 +1,97 @@ +import { anatomy } from '@chakra-ui/anatomy' +import { createMultiStyleConfigHelpers } from '@chakra-ui/styled-system' + +const parts = anatomy('navbar').parts( + 'container', + 'inner', + 'brand', + 'content', + 'item', + 'link' +) + +const { defineMultiStyleConfig, definePartsStyle } = + createMultiStyleConfigHelpers(parts.keys) + +export const navbarTheme = defineMultiStyleConfig({ + baseStyle: definePartsStyle({ + container: { + display: 'flex', + bg: 'chakra-body-bg', + zIndex: 'overlay', + width: 'full', + height: 'auto', + alignItems: 'center', + justifyContent: 'center', + data: { + '& [data-menu-open=true]': { + border: 'none', + }, + }, + }, + inner: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + width: 'full', + height: 'var(--navbar-height)', + px: 6, + gap: 4, + flexWrap: 'nowrap', + }, + toggle: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + width: 6, + height: 'full', + outline: 'none', + borderRadius: 'sm', + }, + brand: { + display: 'flex', + alignItems: 'center', + justifyContent: 'flex-start', + height: 'full', + bg: 'transparent', + textDecoration: 'none', + color: 'inherit', + whiteSpace: 'nowrap', + boxSizing: 'border-box', + }, + content: { + display: 'flex', + alignItems: 'center', + justifyContent: 'flex-start', + flex: 1, + listStyle: 'none', + }, + item: { + display: 'inline-flex', + p: 0, + }, + link: { + display: 'inline-flex', + alignItems: 'center', + justifyContent: 'center', + textDecoration: 'none', + whiteSpace: 'nowrap', + boxSizing: 'border-box', + borderRadius: 'md', + transitionProperty: 'common', + transitionDuration: 'normal', + px: 3, + h: 8, + _hover: { + bg: 'gray.100', + textDecoration: 'none', + _dark: { + bg: 'gray.700', + }, + }, + _active: { + fontWeight: 'semibold', + }, + }, + }), +}) diff --git a/packages/storybook/.storybook/main.mjs b/packages/storybook/.storybook/main.mjs index 66c731776..951ffd8a3 100644 --- a/packages/storybook/.storybook/main.mjs +++ b/packages/storybook/.storybook/main.mjs @@ -81,7 +81,4 @@ export default { framework: { name: '@storybook/react-vite', }, - docs: { - autodocs: true, - }, } diff --git a/yarn.lock b/yarn.lock index a77548bf1..139c44836 100644 --- a/yarn.lock +++ b/yarn.lock @@ -80,7 +80,30 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.18.9, @babel/core@npm:^7.22.0, @babel/core@npm:^7.23.2": +"@babel/core@npm:^7.18.9, @babel/core@npm:^7.23.2": + version: 7.23.3 + resolution: "@babel/core@npm:7.23.3" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.23.3 + "@babel/helper-compilation-targets": ^7.22.15 + "@babel/helper-module-transforms": ^7.23.3 + "@babel/helpers": ^7.23.2 + "@babel/parser": ^7.23.3 + "@babel/template": ^7.22.15 + "@babel/traverse": ^7.23.3 + "@babel/types": ^7.23.3 + convert-source-map: ^2.0.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: d306c1fa68972f4e085e9e7ad165aee80eb801ef331f6f07808c86309f03534d638b82ad00a3bc08f4d3de4860ccd38512b2790a39e6acc2caf9ea21e526afe7 + languageName: node + linkType: hard + +"@babel/core@npm:^7.22.0": version: 7.23.2 resolution: "@babel/core@npm:7.23.2" dependencies: @@ -127,6 +150,18 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/generator@npm:7.23.3" + dependencies: + "@babel/types": ^7.23.3 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: b6e71cca852d4e1aa01a28a30b8c74ffc3b8d56ccb7ae3ee783028ee015f63ad861a2e386c3eb490a9a8634db485a503a33521680f4af510151e90346c46da17 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" @@ -296,6 +331,21 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/helper-module-transforms@npm:7.23.3" + dependencies: + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-module-imports": ^7.22.15 + "@babel/helper-simple-access": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/helper-validator-identifier": ^7.22.20 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 5d0895cfba0e16ae16f3aa92fee108517023ad89a855289c4eb1d46f7aef4519adf8e6f971e1d55ac20c5461610e17213f1144097a8f932e768a9132e2278d71 + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" @@ -455,6 +505,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/parser@npm:7.23.3" + bin: + parser: ./bin/babel-parser.js + checksum: 4aa7366e401b5467192c1dbf2bef99ac0958c45ef69ed6704abbae68f98fab6409a527b417d1528fddc49d7664450670528adc7f45abb04db5fafca7ed766d57 + languageName: node + linkType: hard + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.15": version: 7.22.15 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.15" @@ -1652,7 +1711,25 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.23.2": +"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/traverse@npm:7.23.3" + dependencies: + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.23.3 + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-function-name": ^7.23.0 + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.23.3 + "@babel/types": ^7.23.3 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: f4e0c05f2f82368b9be7e1fed38cfcc2e1074967a8b76ac837b89661adbd391e99d0b1fd8c31215ffc3a04d2d5d7ee5e627914a09082db84ec5606769409fe2b + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.23.2": version: 7.23.2 resolution: "@babel/traverse@npm:7.23.2" dependencies: @@ -1681,7 +1758,18 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.18.9, @babel/types@npm:^7.23.0": +"@babel/types@npm:^7.18.9, @babel/types@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/types@npm:7.23.3" + dependencies: + "@babel/helper-string-parser": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.20 + to-fast-properties: ^2.0.0 + checksum: b96f1ec495351aeb2a5f98dd494aafa17df02a351548ae96999460f35c933261c839002a34c1e83552ff0d9f5e94d0b5b8e105d38131c7c9b0f5a6588676f35d + languageName: node + linkType: hard + +"@babel/types@npm:^7.23.0": version: 7.23.0 resolution: "@babel/types@npm:7.23.0" dependencies: @@ -6691,6 +6779,17 @@ __metadata: languageName: node linkType: hard +"@react-aria/ssr@npm:^3.9.0": + version: 3.9.0 + resolution: "@react-aria/ssr@npm:3.9.0" + dependencies: + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 7b708494e7c59c4cda8c21f8580d989e7758e854b043d597a0513ee2b08c86e9b877d9f6d5eea9df758bf1b1abdb5adfcba1871e38578ecdf1fe561980addda9 + languageName: node + linkType: hard + "@react-aria/utils@npm:^3.20.0": version: 3.20.0 resolution: "@react-aria/utils@npm:3.20.0" @@ -6706,6 +6805,21 @@ __metadata: languageName: node linkType: hard +"@react-aria/utils@npm:^3.22.0": + version: 3.22.0 + resolution: "@react-aria/utils@npm:3.22.0" + dependencies: + "@react-aria/ssr": ^3.9.0 + "@react-stately/utils": ^3.9.0 + "@react-types/shared": ^3.22.0 + "@swc/helpers": ^0.5.0 + clsx: ^1.1.1 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 4ed769920d76eac437dbf31a09ac597bddbcf1f47f6c74336d1e19acbf2fda9a9e4bf00fe0da789512604dddb0ea16599dc9da49a58b74de3a8d7b72015dd787 + languageName: node + linkType: hard + "@react-hookz/deep-equal@npm:^1.0.4": version: 1.0.4 resolution: "@react-hookz/deep-equal@npm:1.0.4" @@ -6786,6 +6900,17 @@ __metadata: languageName: node linkType: hard +"@react-stately/utils@npm:^3.9.0": + version: 3.9.0 + resolution: "@react-stately/utils@npm:3.9.0" + dependencies: + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: aae38bc45086e086c47141e516f8608b6ad1a0a3c637c1da8b409515b978db0210ed102ca30135a4f733ae2265fecd1b9634cb21b7075fa48895fe7b1cfc6960 + languageName: node + linkType: hard + "@react-types/button@npm:^3.8.0": version: 3.8.0 resolution: "@react-types/button@npm:3.8.0" @@ -6866,6 +6991,15 @@ __metadata: languageName: node linkType: hard +"@react-types/shared@npm:^3.22.0": + version: 3.22.0 + resolution: "@react-types/shared@npm:3.22.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 108d171c006ee86d01418bb2ca0e54915e8cdb276ecd82cad43bd8aa3a360654a95983b60dbf196c7b004e0307690ae7b0315d051b015277699a552619ec2b29 + languageName: node + linkType: hard + "@resvg/resvg-wasm@npm:2.4.1": version: 2.4.1 resolution: "@resvg/resvg-wasm@npm:2.4.1" @@ -6913,7 +7047,7 @@ __metadata: dependencies: "@chakra-ui/utils": ^2.0.15 tsup: 6.7.0 - zustand: ^4.4.4 + zustand: ^4.4.5 peerDependencies: "@chakra-ui/react": ">=2.5.0" "@saas-ui/react": ">=2.0.0" @@ -6972,7 +7106,7 @@ __metadata: languageName: unknown linkType: soft -"@saas-ui-pro/react@^0.28.0, @saas-ui-pro/react@workspace:*, @saas-ui-pro/react@workspace:packages/pro/saas-ui/react": +"@saas-ui-pro/react@^0.29.0, @saas-ui-pro/react@workspace:*, @saas-ui-pro/react@workspace:packages/pro/saas-ui/react": version: 0.0.0-use.local resolution: "@saas-ui-pro/react@workspace:packages/pro/saas-ui/react" dependencies: @@ -6991,6 +7125,7 @@ __metadata: "@saas-ui/react-utils": ^2.0.1 "@saas-ui/theme": ^2.1.1 "@tanstack/react-table": ^8.10.7 + "@tanstack/react-virtual": ^3.0.0-beta.68 date-fns: ^2.30.0 polished: ^4.2.2 react-icons: ^4.11.0 @@ -7106,6 +7241,7 @@ __metadata: "@chakra-ui/system": ^2.6.1 "@chakra-ui/theme-tools": ^2.1.1 "@chakra-ui/utils": ^2.0.15 + "@react-aria/utils": ^3.22.0 "@saas-ui/react-utils": "workspace:*" "@saas-ui/theme": "workspace:*" tsup: ^6.7.0 @@ -7549,20 +7685,20 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-a11y@npm:^7.5.1": - version: 7.5.1 - resolution: "@storybook/addon-a11y@npm:7.5.1" +"@storybook/addon-a11y@npm:^7.5.2": + version: 7.5.3 + resolution: "@storybook/addon-a11y@npm:7.5.3" dependencies: - "@storybook/addon-highlight": 7.5.1 - "@storybook/channels": 7.5.1 - "@storybook/client-logger": 7.5.1 - "@storybook/components": 7.5.1 - "@storybook/core-events": 7.5.1 + "@storybook/addon-highlight": 7.5.3 + "@storybook/channels": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.5.1 - "@storybook/preview-api": 7.5.1 - "@storybook/theming": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 axe-core: ^4.2.0 lodash: ^4.17.21 react-resize-detector: ^7.1.2 @@ -7574,22 +7710,22 @@ __metadata: optional: true react-dom: optional: true - checksum: ae8e37be5ee8ce7ddcf085376aa8de0e635090d89353705b3a7d24839d0fa38303d76dec4cc42071de99636e05620c10fc03ff7c19c251909af7e5bb08006ab9 + checksum: 93cf28fcfc41fc8eea512c04021dae5f527013a9eac3c119b911c40e9f3080c7b7ef2a36730dda3b3f1a504627a4405954bb1b59da2de882f1dac5e2c59cce05 languageName: node linkType: hard -"@storybook/addon-actions@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/addon-actions@npm:7.5.1" +"@storybook/addon-actions@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-actions@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.5.1 - "@storybook/components": 7.5.1 - "@storybook/core-events": 7.5.1 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.5.1 - "@storybook/preview-api": 7.5.1 - "@storybook/theming": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 dequal: ^2.0.2 lodash: ^4.17.21 polished: ^4.2.2 @@ -7606,22 +7742,22 @@ __metadata: optional: true react-dom: optional: true - checksum: 0cc4b7cd05627fbbaa5182968c073167ae012fca00d118935472a7739c131d1a2f49bf48b9333c10d57cb6f332864e37856b7692148997f55c68758affaede83 + checksum: d79baf1da30da5f99d513f08f74093741725c9f865990bf7f99ca2ae171156ab9f11f6c354c32b73d7d9fed13665780cf3a2a7623b7d6877c8dc262dd5616733 languageName: node linkType: hard -"@storybook/addon-backgrounds@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/addon-backgrounds@npm:7.5.1" +"@storybook/addon-backgrounds@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-backgrounds@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.5.1 - "@storybook/components": 7.5.1 - "@storybook/core-events": 7.5.1 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.5.1 - "@storybook/preview-api": 7.5.1 - "@storybook/theming": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 memoizerific: ^1.11.3 ts-dedent: ^2.0.0 peerDependencies: @@ -7632,24 +7768,24 @@ __metadata: optional: true react-dom: optional: true - checksum: 75c530c53c4b49b1db870c2567901dffdf2659e829ae32787f5425fb93811eca261ed1e32466c9069cd2b45dd69100032aaac389a0f78ff1538fd8dc4464c90c + checksum: 6a432d490a8df336dc419dde7ee28abc3ca3966f2e512c1c3c6479b139f99e294213d832d91e8c8c18c96d3b3acb84299f0789800797d6338e691ee1e9c667fe languageName: node linkType: hard -"@storybook/addon-controls@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/addon-controls@npm:7.5.1" +"@storybook/addon-controls@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-controls@npm:7.5.3" dependencies: - "@storybook/blocks": 7.5.1 - "@storybook/client-logger": 7.5.1 - "@storybook/components": 7.5.1 - "@storybook/core-common": 7.5.1 - "@storybook/core-events": 7.5.1 - "@storybook/manager-api": 7.5.1 - "@storybook/node-logger": 7.5.1 - "@storybook/preview-api": 7.5.1 - "@storybook/theming": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/blocks": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-common": 7.5.3 + "@storybook/core-events": 7.5.3 + "@storybook/manager-api": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 lodash: ^4.17.21 ts-dedent: ^2.0.0 peerDependencies: @@ -7660,29 +7796,29 @@ __metadata: optional: true react-dom: optional: true - checksum: 9b4ddbbf9ce25e9643e7c61644617f29b5cd1c59945b467cfd1242e245be1cb0ffe35129d940a091580e3e6a90e1725579a1a2ae063dbaff0b288f78c8ebaf7f + checksum: c86f8da8a3a3e1b286826eb7c157991dfb62d9e2d1c4493966beadde5bcf8dec3ff6f88433fec99843b2020a9e025a0635d497abda0bd52b4fdbe0d3bce65638 languageName: node linkType: hard -"@storybook/addon-docs@npm:7.5.1, @storybook/addon-docs@npm:^7.5.1": - version: 7.5.1 - resolution: "@storybook/addon-docs@npm:7.5.1" +"@storybook/addon-docs@npm:7.5.3, @storybook/addon-docs@npm:^7.5.2": + version: 7.5.3 + resolution: "@storybook/addon-docs@npm:7.5.3" dependencies: "@jest/transform": ^29.3.1 "@mdx-js/react": ^2.1.5 - "@storybook/blocks": 7.5.1 - "@storybook/client-logger": 7.5.1 - "@storybook/components": 7.5.1 - "@storybook/csf-plugin": 7.5.1 - "@storybook/csf-tools": 7.5.1 + "@storybook/blocks": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/csf-plugin": 7.5.3 + "@storybook/csf-tools": 7.5.3 "@storybook/global": ^5.0.0 "@storybook/mdx2-csf": ^1.0.0 - "@storybook/node-logger": 7.5.1 - "@storybook/postinstall": 7.5.1 - "@storybook/preview-api": 7.5.1 - "@storybook/react-dom-shim": 7.5.1 - "@storybook/theming": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/node-logger": 7.5.3 + "@storybook/postinstall": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/react-dom-shim": 7.5.3 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 fs-extra: ^11.1.0 remark-external-links: ^8.0.0 remark-slug: ^6.0.0 @@ -7690,32 +7826,32 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 2acdcc4c286cb20a91e08801a0fdcb0b0a9954cb162866a122c73c3c57e84bdd9c47f898c7fc8f4fa13b8f440a43d6f718819c65c8a98fc64c0f18d6b856ae80 - languageName: node - linkType: hard - -"@storybook/addon-essentials@npm:^7.5.1": - version: 7.5.1 - resolution: "@storybook/addon-essentials@npm:7.5.1" - dependencies: - "@storybook/addon-actions": 7.5.1 - "@storybook/addon-backgrounds": 7.5.1 - "@storybook/addon-controls": 7.5.1 - "@storybook/addon-docs": 7.5.1 - "@storybook/addon-highlight": 7.5.1 - "@storybook/addon-measure": 7.5.1 - "@storybook/addon-outline": 7.5.1 - "@storybook/addon-toolbars": 7.5.1 - "@storybook/addon-viewport": 7.5.1 - "@storybook/core-common": 7.5.1 - "@storybook/manager-api": 7.5.1 - "@storybook/node-logger": 7.5.1 - "@storybook/preview-api": 7.5.1 + checksum: 54ef17505cdeb24995131842055256000f2894d7a8e7a46e33c2b29bb4067abdf4a1bc160421729e222fd32d1d77b435fe2afe4d3f9afb32a9ccff7c3d4eeafe + languageName: node + linkType: hard + +"@storybook/addon-essentials@npm:^7.5.2": + version: 7.5.3 + resolution: "@storybook/addon-essentials@npm:7.5.3" + dependencies: + "@storybook/addon-actions": 7.5.3 + "@storybook/addon-backgrounds": 7.5.3 + "@storybook/addon-controls": 7.5.3 + "@storybook/addon-docs": 7.5.3 + "@storybook/addon-highlight": 7.5.3 + "@storybook/addon-measure": 7.5.3 + "@storybook/addon-outline": 7.5.3 + "@storybook/addon-toolbars": 7.5.3 + "@storybook/addon-viewport": 7.5.3 + "@storybook/core-common": 7.5.3 + "@storybook/manager-api": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/preview-api": 7.5.3 ts-dedent: ^2.0.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: a312045bb3c0dd15daf1faa25f2b0964d0e3caff418ad122add49338c035b5c7270cf5c99cfc3134bfe863db91754b81f6c275b0b90ba2970898d1b74c608aac + checksum: 57341a40f9343f8dab11950c5bd70251e7221048cdf2ef5ac8577586d753988e7f51ce0eaa06a2e216c75412622d70fe9a98f0d2c3eb80d8a699823132c70b88 languageName: node linkType: hard @@ -7730,28 +7866,28 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-highlight@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/addon-highlight@npm:7.5.1" +"@storybook/addon-highlight@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-highlight@npm:7.5.3" dependencies: - "@storybook/core-events": 7.5.1 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.5.1 - checksum: 1087cd7c6fb70c674a150f53f81c3e21b26bf406ff7b6184f06a02e7d3f965cf03baff3ae0f6b50c5da7392aab57096523c1ae40086624711391c8967c161a0f + "@storybook/preview-api": 7.5.3 + checksum: be468def9a6c3495e72f2c0a15e132b519e909c42e58361fd8d55c1fb1b7764e86b9e0a6531ba0f61b227d9d2ed5646ad294db0729177a39e3da5a7e00a3f2f0 languageName: node linkType: hard -"@storybook/addon-measure@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/addon-measure@npm:7.5.1" +"@storybook/addon-measure@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-measure@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.5.1 - "@storybook/components": 7.5.1 - "@storybook/core-events": 7.5.1 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.5.1 - "@storybook/preview-api": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/types": 7.5.3 tiny-invariant: ^1.3.1 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -7761,21 +7897,21 @@ __metadata: optional: true react-dom: optional: true - checksum: 8b1dfb37e81003ab8e80b9d4cbb2bf83e8c48670c5b6a52a198ce7dcb5c7b581d4913deca5ac2268c2326c8b470da789f22ceaca1e7cb7ae603fad63db5ff0e8 + checksum: a0b6cf0a4d42ed9671dcf50df2c33dd5eadf6e1f32de6862ba3d3d507431831bc03c4a5be83566ec445635d2df180657bdc1e1a07a189b5b301c4a543229c8c1 languageName: node linkType: hard -"@storybook/addon-outline@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/addon-outline@npm:7.5.1" +"@storybook/addon-outline@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-outline@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.5.1 - "@storybook/components": 7.5.1 - "@storybook/core-events": 7.5.1 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.5.1 - "@storybook/preview-api": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/types": 7.5.3 ts-dedent: ^2.0.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -7785,7 +7921,7 @@ __metadata: optional: true react-dom: optional: true - checksum: c533aa45fc31e96303169e8c1539ba1947dc50d0a860df16a9cbbbc03c72b344e6eb1bc822a1771f7cacac2c5f0185dc4452fe7ae7e0c5fd2a7f322395e5f262 + checksum: 07bf04a6427742594fcd8edc323a3a27cf6c249919b4d855725b23a580274bb777877d87fd7dab19829af4e93f5ac3a8f4574a85a852042a4f368e519139ea28 languageName: node linkType: hard @@ -7816,17 +7952,17 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-storysource@npm:^7.5.1": - version: 7.5.1 - resolution: "@storybook/addon-storysource@npm:7.5.1" +"@storybook/addon-storysource@npm:^7.5.2": + version: 7.5.3 + resolution: "@storybook/addon-storysource@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.5.1 - "@storybook/components": 7.5.1 - "@storybook/manager-api": 7.5.1 - "@storybook/preview-api": 7.5.1 - "@storybook/router": 7.5.1 - "@storybook/source-loader": 7.5.1 - "@storybook/theming": 7.5.1 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/router": 7.5.3 + "@storybook/source-loader": 7.5.3 + "@storybook/theming": 7.5.3 estraverse: ^5.2.0 prop-types: ^15.7.2 react-syntax-highlighter: ^15.5.0 @@ -7839,19 +7975,19 @@ __metadata: optional: true react-dom: optional: true - checksum: 2da777a4f7a627e7e13bb4cc3a7733cdd9fa949faa1068a1fdb181aa5a087bc2450c7674fdb11afe921365671aecd9cef0374fd86a077b8d821ef3481fdaf62f + checksum: cbdcc173b04d91640888ba4cdc595d82888f5d9c624acb24871068eeef26bf19ec7b0bdd87d179e4b6275c36cd40ea2638fccba99bc7a6c738439ae520b57085 languageName: node linkType: hard -"@storybook/addon-toolbars@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/addon-toolbars@npm:7.5.1" +"@storybook/addon-toolbars@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-toolbars@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.5.1 - "@storybook/components": 7.5.1 - "@storybook/manager-api": 7.5.1 - "@storybook/preview-api": 7.5.1 - "@storybook/theming": 7.5.1 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/theming": 7.5.3 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -7860,7 +7996,7 @@ __metadata: optional: true react-dom: optional: true - checksum: 4f5ee434b91c997c80f94c2a3181aac87cefaf59d0813aca589528f3bd2e8364570382d07bc5aaeb09f07dfbb35d3e918207e665b79109500df1d6ae28baa02d + checksum: c61d953a53dd0eb23f3dfcb52b4227d3e3aa6b8bbd8260007b2334ceb2dc3910aa0633f18858e8caac0027b7badc57937a2094219c0f29ae414ce5c705b7a0bb languageName: node linkType: hard @@ -7885,17 +8021,17 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-viewport@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/addon-viewport@npm:7.5.1" +"@storybook/addon-viewport@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-viewport@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.5.1 - "@storybook/components": 7.5.1 - "@storybook/core-events": 7.5.1 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.5.1 - "@storybook/preview-api": 7.5.1 - "@storybook/theming": 7.5.1 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/theming": 7.5.3 memoizerific: ^1.11.3 prop-types: ^15.7.2 peerDependencies: @@ -7906,7 +8042,7 @@ __metadata: optional: true react-dom: optional: true - checksum: 31bae0fedffdb014d5a882ae848745c950b79d8287854e9affe9549239eac7f186918830f956fbb9d63009f2aae87872ecce32a66521a3c17c3eb25c77946c54 + checksum: 4b324c9edcc96ba72573093934d862005e20265dbd1e3a4430f07ecab7c1ee577e01a5a7b75907e2ab89fcb59c80dede5f16e6a6795426219170529baff654af languageName: node linkType: hard @@ -7967,21 +8103,21 @@ __metadata: languageName: node linkType: hard -"@storybook/blocks@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/blocks@npm:7.5.1" +"@storybook/blocks@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/blocks@npm:7.5.3" dependencies: - "@storybook/channels": 7.5.1 - "@storybook/client-logger": 7.5.1 - "@storybook/components": 7.5.1 - "@storybook/core-events": 7.5.1 + "@storybook/channels": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/csf": ^0.1.0 - "@storybook/docs-tools": 7.5.1 + "@storybook/docs-tools": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.5.1 - "@storybook/preview-api": 7.5.1 - "@storybook/theming": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 "@types/lodash": ^4.14.167 color-convert: ^2.0.1 dequal: ^2.0.2 @@ -7997,7 +8133,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 9cbfca47667b8b641503cc26be4d1ba2e785250113deb9ec8ad77091222555e6724168f0186324548bf7bafdddb4b117aca77dc0250925d8017a4605ff731510 + checksum: 0b7506a52903ab319280e3af77a8e72c53d229df75187fe1d60330a903fc8926e09b7cc9debea1395afa8698c11050900f41ca24ac852bf93790e322affbfcdb languageName: node linkType: hard @@ -8025,14 +8161,14 @@ __metadata: languageName: node linkType: hard -"@storybook/builder-manager@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/builder-manager@npm:7.5.1" +"@storybook/builder-manager@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/builder-manager@npm:7.5.3" dependencies: "@fal-works/esbuild-plugin-global-externals": ^2.1.2 - "@storybook/core-common": 7.5.1 - "@storybook/manager": 7.5.1 - "@storybook/node-logger": 7.5.1 + "@storybook/core-common": 7.5.3 + "@storybook/manager": 7.5.3 + "@storybook/node-logger": 7.5.3 "@types/ejs": ^3.1.1 "@types/find-cache-dir": ^3.2.1 "@yarnpkg/esbuild-plugin-pnp": ^3.0.0-rc.10 @@ -8045,7 +8181,7 @@ __metadata: fs-extra: ^11.1.0 process: ^0.11.10 util: ^0.12.4 - checksum: e429fe5f0e21d7de302ea39b37151052f4df6115a1ff0236be817959be02a11843ddc3722bec2731e35b5ec1c677357c8c07c9d2f7456379e1a2fcc54ee6d947 + checksum: dab636019edb2c9ff350c340a8722b49a61f013f90315a616f668175c441cee39a62308909fbf1e2429c14277809dd78a8322c16d8e7a5ab1fc7c3363ff19d98 languageName: node linkType: hard @@ -8088,18 +8224,18 @@ __metadata: languageName: node linkType: hard -"@storybook/builder-vite@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/builder-vite@npm:7.5.1" +"@storybook/builder-vite@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/builder-vite@npm:7.5.3" dependencies: - "@storybook/channels": 7.5.1 - "@storybook/client-logger": 7.5.1 - "@storybook/core-common": 7.5.1 - "@storybook/csf-plugin": 7.5.1 - "@storybook/node-logger": 7.5.1 - "@storybook/preview": 7.5.1 - "@storybook/preview-api": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/channels": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/core-common": 7.5.3 + "@storybook/csf-plugin": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/preview": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/types": 7.5.3 "@types/find-cache-dir": ^3.2.1 browser-assert: ^1.2.1 es-module-lexer: ^0.9.3 @@ -8120,23 +8256,23 @@ __metadata: optional: true vite-plugin-glimmerx: optional: true - checksum: 7764ba712b814b46f67fe0be665851b9c19cff900ecfe8fbf0ba848d58ef9125f09cd247dce41204d4c8225dc0c56ef830d4ec9d76dfd778fbe060dc63750671 + checksum: 5b323bfc89e6c02728224d08dacac6a8b669150ebacf97c53a28a65aed01d4a03b767c3a6b2a128cecba8718ce8636ce8e6cee6f006210d3a4acfb18d5a8d15c languageName: node linkType: hard -"@storybook/builder-webpack5@npm:^7.5.1": - version: 7.5.1 - resolution: "@storybook/builder-webpack5@npm:7.5.1" +"@storybook/builder-webpack5@npm:^7.5.2": + version: 7.5.3 + resolution: "@storybook/builder-webpack5@npm:7.5.3" dependencies: "@babel/core": ^7.22.0 - "@storybook/channels": 7.5.1 - "@storybook/client-logger": 7.5.1 - "@storybook/core-common": 7.5.1 - "@storybook/core-events": 7.5.1 - "@storybook/core-webpack": 7.5.1 - "@storybook/node-logger": 7.5.1 - "@storybook/preview": 7.5.1 - "@storybook/preview-api": 7.5.1 + "@storybook/channels": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/core-common": 7.5.3 + "@storybook/core-events": 7.5.3 + "@storybook/core-webpack": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/preview": 7.5.3 + "@storybook/preview-api": 7.5.3 "@swc/core": ^1.3.82 "@types/node": ^18.0.0 "@types/semver": ^7.3.4 @@ -8167,7 +8303,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: d09f2be562c020c7b2b0dee2cabd36b4959b5a25d02383140d964effe162cefe0a5e455a7494e7adfe1b30cd1afcebc278ac960715ff0cde716379e49b16a578 + checksum: 702175697c0f7e52c3c690b493fe06657cbb081c58e71567054f236e7521b7c421bef5876bcc9516d9ff99a570316477d1d57134c0fc4d0a9342bc153442207f languageName: node linkType: hard @@ -8185,17 +8321,17 @@ __metadata: languageName: node linkType: hard -"@storybook/channels@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/channels@npm:7.5.1" +"@storybook/channels@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/channels@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.5.1 - "@storybook/core-events": 7.5.1 + "@storybook/client-logger": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 qs: ^6.10.0 telejson: ^7.2.0 tiny-invariant: ^1.3.1 - checksum: 2f5f68caff1e84e75aa6df12192e464cd0cb370a425d4c72c72a5e15f1c1d2b64fd64a6adaa4cfffef8ecfc63edb42b4032365977705c7b10b51795f8ec55cdd + checksum: 1d354798d977b1f52dfa457e40352f38776016af7c6239dd6348cd80206df774401f9a7858bde72cb9f7be3d93e3bbc537eb3c07187a337559c60c65f962c1da languageName: node linkType: hard @@ -8251,22 +8387,22 @@ __metadata: languageName: node linkType: hard -"@storybook/cli@npm:^7.5.1": - version: 7.5.1 - resolution: "@storybook/cli@npm:7.5.1" +"@storybook/cli@npm:^7.5.2": + version: 7.5.3 + resolution: "@storybook/cli@npm:7.5.3" dependencies: "@babel/core": ^7.22.9 "@babel/preset-env": ^7.22.9 "@babel/types": ^7.22.5 "@ndelangen/get-tarball": ^3.0.7 - "@storybook/codemod": 7.5.1 - "@storybook/core-common": 7.5.1 - "@storybook/core-events": 7.5.1 - "@storybook/core-server": 7.5.1 - "@storybook/csf-tools": 7.5.1 - "@storybook/node-logger": 7.5.1 - "@storybook/telemetry": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/codemod": 7.5.3 + "@storybook/core-common": 7.5.3 + "@storybook/core-events": 7.5.3 + "@storybook/core-server": 7.5.3 + "@storybook/csf-tools": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/telemetry": 7.5.3 + "@storybook/types": 7.5.3 "@types/semver": ^7.3.4 "@yarnpkg/fslib": 2.10.3 "@yarnpkg/libzip": 2.3.0 @@ -8299,7 +8435,7 @@ __metadata: bin: getstorybook: ./bin/index.js sb: ./bin/index.js - checksum: 3cb3eb188bc1c0a6c7d4042136ac10a89f95cf9a724852d0f8706dd033da52ca5d36068acf1e61a32f84fda83f3589edcf26375248fb455dd058be817748ab66 + checksum: 1c65a342719e8da45dfe932c48fcfbfabb315e6c850ba0ee04193253ac766aaca9b2c8661e639c3f777d325d5bab3c80fc378f2fe20756f6512c6d960e4f9f8c languageName: node linkType: hard @@ -8322,12 +8458,12 @@ __metadata: languageName: node linkType: hard -"@storybook/client-logger@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/client-logger@npm:7.5.1" +"@storybook/client-logger@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/client-logger@npm:7.5.3" dependencies: "@storybook/global": ^5.0.0 - checksum: 9e937b933f8a0063bb31d9bb3b8374903ce9a88a77517915ac899fe6958f1aa5e256af09bbcfbc0351d9f03cd421e952cb2cb5000cb0144cdccc0949438e2784 + checksum: 0931daa2274f93dc1921e0c48cfb3a938b4c88843327e832c49115ea0aaa48ee5ddaeb37dc51ba0c7daac84215d62a9101befbfbf0088ce272396eb6c3f1d046 languageName: node linkType: hard @@ -8353,17 +8489,17 @@ __metadata: languageName: node linkType: hard -"@storybook/codemod@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/codemod@npm:7.5.1" +"@storybook/codemod@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/codemod@npm:7.5.3" dependencies: "@babel/core": ^7.22.9 "@babel/preset-env": ^7.22.9 "@babel/types": ^7.22.5 "@storybook/csf": ^0.1.0 - "@storybook/csf-tools": 7.5.1 - "@storybook/node-logger": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/csf-tools": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/types": 7.5.3 "@types/cross-spawn": ^6.0.2 cross-spawn: ^7.0.3 globby: ^11.0.2 @@ -8371,7 +8507,7 @@ __metadata: lodash: ^4.17.21 prettier: ^2.8.0 recast: ^0.23.1 - checksum: a88e01d0fef12ef4a982c5f4c98dd6acd8c9d97270e192d25bf9070e07b5e83755c37ea3769ca2f15edd14dcf9704920a4a6213f4f7c7cd4a702a3271dc4b770 + checksum: e701293d237c9f05dd2237cca77528c87412eeff3df516e7ab41b19521198855bf74347bc252a19ce4966d6727d4d9b9b49482917445d53e7fa1cdb3e49f1b29 languageName: node linkType: hard @@ -8396,24 +8532,24 @@ __metadata: languageName: node linkType: hard -"@storybook/components@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/components@npm:7.5.1" +"@storybook/components@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/components@npm:7.5.3" dependencies: "@radix-ui/react-select": ^1.2.2 "@radix-ui/react-toolbar": ^1.0.4 - "@storybook/client-logger": 7.5.1 + "@storybook/client-logger": 7.5.3 "@storybook/csf": ^0.1.0 "@storybook/global": ^5.0.0 - "@storybook/theming": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 memoizerific: ^1.11.3 use-resize-observer: ^9.1.0 util-deprecate: ^1.0.2 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 7af78446886f1476502cf456aacc104a226e4872cfc8b59956ac6a7ca674545e94cbe1f94953e27f533ff3f684cf53518ecd3e67b68fb83b5f7350d0eb2163eb + checksum: a73dbc33e0767b3152fa075e632635ba3bb2ab41917969ebd6c82790e47bc414832f5bd50be7d0a9f9d598b6241b96226eb0fe3f0da4c98ea2d6ccf439a86875 languageName: node linkType: hard @@ -8427,13 +8563,13 @@ __metadata: languageName: node linkType: hard -"@storybook/core-client@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/core-client@npm:7.5.1" +"@storybook/core-client@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/core-client@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.5.1 - "@storybook/preview-api": 7.5.1 - checksum: 801cfff4df8e3dacc597641487323f6f5ee4f541e73ce0df4eb153dee8c00658cd485e3bd32ad93cc17ebebff9eef90606aa487c4cad2af61805a1c38b1ddc3e + "@storybook/client-logger": 7.5.3 + "@storybook/preview-api": 7.5.3 + checksum: 9533de3f66516c223d90ba7a6a61c9aceab0cf19553d8499b9165f286fcb17a326581f5ef963161d6b18dee2640a6e0175f6ed579a0c21036e6d0993a5706a7f languageName: node linkType: hard @@ -8468,13 +8604,13 @@ __metadata: languageName: node linkType: hard -"@storybook/core-common@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/core-common@npm:7.5.1" +"@storybook/core-common@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/core-common@npm:7.5.3" dependencies: - "@storybook/core-events": 7.5.1 - "@storybook/node-logger": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/core-events": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/types": 7.5.3 "@types/find-cache-dir": ^3.2.1 "@types/node": ^18.0.0 "@types/node-fetch": ^2.6.4 @@ -8495,7 +8631,7 @@ __metadata: pretty-hrtime: ^1.0.3 resolve-from: ^5.0.0 ts-dedent: ^2.0.0 - checksum: 935a90cb754c15142e2029c3700f0b70ea9a1fa077f25604c7a3544b29a746d865d8cca22b8e46d93e2169d593ca528a9e0cd942a49a47087d044108c347751a + checksum: 152816728cb1c3c14038509c9f7da78331bb91fb0ab766fff25651c9c91e246617f78e9bd4ec6adae21bd3c92c2cfdfbaf5162fedf83b2e8725970a5ac3b28d4 languageName: node linkType: hard @@ -8508,12 +8644,12 @@ __metadata: languageName: node linkType: hard -"@storybook/core-events@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/core-events@npm:7.5.1" +"@storybook/core-events@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/core-events@npm:7.5.3" dependencies: ts-dedent: ^2.0.0 - checksum: 26fbb71ba1cc44a50a890377efcbc7e57f9f388174e5b37cda1fdfdb8abb266162fb18d0414535fe469fe048057c53e5b6d6c304486fc943af04ea729ce77be0 + checksum: 7f59f1fe5b5389b7f022fb68a295c80a6bf737d3bdd9233923a2efb042fd966b0a7c980467edcc2e3d5cf451ba080be54b84353f645cd868bbad9868f3c28d92 languageName: node linkType: hard @@ -8567,25 +8703,25 @@ __metadata: languageName: node linkType: hard -"@storybook/core-server@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/core-server@npm:7.5.1" +"@storybook/core-server@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/core-server@npm:7.5.3" dependencies: "@aw-web-design/x-default-browser": 1.4.126 "@discoveryjs/json-ext": ^0.5.3 - "@storybook/builder-manager": 7.5.1 - "@storybook/channels": 7.5.1 - "@storybook/core-common": 7.5.1 - "@storybook/core-events": 7.5.1 + "@storybook/builder-manager": 7.5.3 + "@storybook/channels": 7.5.3 + "@storybook/core-common": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/csf": ^0.1.0 - "@storybook/csf-tools": 7.5.1 + "@storybook/csf-tools": 7.5.3 "@storybook/docs-mdx": ^0.1.0 "@storybook/global": ^5.0.0 - "@storybook/manager": 7.5.1 - "@storybook/node-logger": 7.5.1 - "@storybook/preview-api": 7.5.1 - "@storybook/telemetry": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/manager": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/telemetry": 7.5.3 + "@storybook/types": 7.5.3 "@types/detect-port": ^1.3.0 "@types/node": ^18.0.0 "@types/pretty-hrtime": ^1.0.0 @@ -8612,20 +8748,20 @@ __metadata: util-deprecate: ^1.0.2 watchpack: ^2.2.0 ws: ^8.2.3 - checksum: d582a98c30f59f429151c2d249d4f5c626e8ce6b523b3227254b3dfb072c31f5c6e8bf788cee429f7019aa1c1bc2e1693e5571026531b70e08e7c47a15b96adf + checksum: 8d5da882230ceba7a35e769ccf5da0ac3964ad22ae14f8f2aed67ee84d916d3e4ff74dfd18e29eb59df18991a113f73f8b99ab16c772153100f57573595c3c71 languageName: node linkType: hard -"@storybook/core-webpack@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/core-webpack@npm:7.5.1" +"@storybook/core-webpack@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/core-webpack@npm:7.5.3" dependencies: - "@storybook/core-common": 7.5.1 - "@storybook/node-logger": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/core-common": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/types": 7.5.3 "@types/node": ^18.0.0 ts-dedent: ^2.0.0 - checksum: f77fcbcae2da1c328f479e0c0d7136f9141070888debe19987bf687594185fcb5f4cd7445beb5305a934106486bff6cdb2168c1db2d948bb556304e7205424fa + checksum: b40bc908e4bd60fe57b6296098605c5ca5fe3fa2605a1d8ae20a69dec9e98022bdacffad59211bcba8539ed9926da57799610b7f0ec6fa1ee3858e2ef46a03ec languageName: node linkType: hard @@ -8639,13 +8775,13 @@ __metadata: languageName: node linkType: hard -"@storybook/csf-plugin@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/csf-plugin@npm:7.5.1" +"@storybook/csf-plugin@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/csf-plugin@npm:7.5.3" dependencies: - "@storybook/csf-tools": 7.5.1 + "@storybook/csf-tools": 7.5.3 unplugin: ^1.3.1 - checksum: beaea3e56b8c17c54c50d9581a09c399327e54c0368901c9063e4ccd139d2f50894718d68cdcc1ef21cfeee7dff31ec6b81b0f0559261095426dfc150ade743c + checksum: 3252d8834e60b73fcb81601035e48b3847a1fdbef6ccce040b2685b100ca37c9faee4789124367c97e0a4cc018db323aa4f639ca1200b7921ef450276dd5d60e languageName: node linkType: hard @@ -8666,20 +8802,20 @@ __metadata: languageName: node linkType: hard -"@storybook/csf-tools@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/csf-tools@npm:7.5.1" +"@storybook/csf-tools@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/csf-tools@npm:7.5.3" dependencies: "@babel/generator": ^7.22.9 "@babel/parser": ^7.22.7 "@babel/traverse": ^7.22.8 "@babel/types": ^7.22.5 "@storybook/csf": ^0.1.0 - "@storybook/types": 7.5.1 + "@storybook/types": 7.5.3 fs-extra: ^11.1.0 recast: ^0.23.1 ts-dedent: ^2.0.0 - checksum: aaa9acc1d01e823090a84df6ad0a8491c7be95ee058a800857dad498de227475979c3892b4f397b2224885b98438c90fa5ffb2cbb6c2a0b91e38f6644a9ccc92 + checksum: 32867878a588feb03701dedb1dbb65f18aaf64d464c642fb68efa4bc6ad35b0bbfdbf452fdf38b997a8139af50ee44f5dc20c27d1fb3870bc4ef66b84a41c457 languageName: node linkType: hard @@ -8722,17 +8858,17 @@ __metadata: languageName: node linkType: hard -"@storybook/docs-tools@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/docs-tools@npm:7.5.1" +"@storybook/docs-tools@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/docs-tools@npm:7.5.3" dependencies: - "@storybook/core-common": 7.5.1 - "@storybook/preview-api": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/core-common": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/types": 7.5.3 "@types/doctrine": ^0.0.3 doctrine: ^3.0.0 lodash: ^4.17.21 - checksum: e402bb1a16e0fd6e5e406167be7471d667acd4c5b99922df48737ceec5d4511089cab7e572505e4715107fdedf3e8a213bdf174c22475371abc5e9522f162895 + checksum: 27d8e55927751a0ad553e1af2b173f186f0b5ef36055a462d2e098eb79bd786844fbc45d1c6e1d98dc89506abc2138a559852f7e10ce252ee8e5bd9a8d010521 languageName: node linkType: hard @@ -8769,18 +8905,18 @@ __metadata: languageName: node linkType: hard -"@storybook/manager-api@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/manager-api@npm:7.5.1" +"@storybook/manager-api@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/manager-api@npm:7.5.3" dependencies: - "@storybook/channels": 7.5.1 - "@storybook/client-logger": 7.5.1 - "@storybook/core-events": 7.5.1 + "@storybook/channels": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/csf": ^0.1.0 "@storybook/global": ^5.0.0 - "@storybook/router": 7.5.1 - "@storybook/theming": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/router": 7.5.3 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 dequal: ^2.0.2 lodash: ^4.17.21 memoizerific: ^1.11.3 @@ -8791,7 +8927,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 85c7e66d7e6df6ba862bc2fb2a80143f1854210883cdcfd58b5e67a76c2e02e8da514346af8d3e2a9bfc81c3bc168ecc51e2ccc24dda5b5b05c39fde00175687 + checksum: 82bb352a4e39f1035d969c584ff2c97c693f9b392b402ce7010507788f06c9a0024d1c23909f501a6524db0b393c26eb2361ba1c0374c62fa84c2b8a5bf2a4d5 languageName: node linkType: hard @@ -8802,10 +8938,10 @@ __metadata: languageName: node linkType: hard -"@storybook/manager@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/manager@npm:7.5.1" - checksum: f3f44137aac81f4f23c3bc11c323025490ab1ecac6e0e4ff783c86d599365f8a1d9e6fa6b3000833d95049a0cb9e70cb4e16b07f4904d1633d16e46888c023bb +"@storybook/manager@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/manager@npm:7.5.3" + checksum: 8f508f09a8a4bf662eeba6eea7eb0cf07e8590e1b8d2c82490bb21f5ce6e31937890de8fd9aac2b739bfc476fa5e445d3ad9d147d135d950bc9f3a9c7e638a77 languageName: node linkType: hard @@ -8823,17 +8959,17 @@ __metadata: languageName: node linkType: hard -"@storybook/node-logger@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/node-logger@npm:7.5.1" - checksum: 8c476e49a1ec19adba4c532476d4e5ccf58c8be16f7b70064a127f86a5d8bcf5c5bb947f18b0cb10c59cf3143b1f832379797009071ead5a586060afe9158760 +"@storybook/node-logger@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/node-logger@npm:7.5.3" + checksum: 9dec669a9a0d9862ca5f835a23b1b22b62eee5b74ff9a8759d323a06893baa9bdc2305c62f067ca5cbc80df017e564b8304bc9d161821780f32c77667601f76c languageName: node linkType: hard -"@storybook/postinstall@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/postinstall@npm:7.5.1" - checksum: 7a4487395bc7047d6f0b59d1662e11298bbbbb75997f243e68c07fe46ca468aef11c2ff021230ac5b37ca900664fcdb3218e8cb5db8938790cf2ec1b756adf62 +"@storybook/postinstall@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/postinstall@npm:7.5.3" + checksum: 66e54ca864449c5c436f8c3260b3f78dad8844fc3dc2e73174ad186c64dfbf0b11020993e858abdc7e411906273957e819af899c96dd507603a1566359900f57 languageName: node linkType: hard @@ -8859,16 +8995,16 @@ __metadata: languageName: node linkType: hard -"@storybook/preview-api@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/preview-api@npm:7.5.1" +"@storybook/preview-api@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/preview-api@npm:7.5.3" dependencies: - "@storybook/channels": 7.5.1 - "@storybook/client-logger": 7.5.1 - "@storybook/core-events": 7.5.1 + "@storybook/channels": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/csf": ^0.1.0 "@storybook/global": ^5.0.0 - "@storybook/types": 7.5.1 + "@storybook/types": 7.5.3 "@types/qs": ^6.9.5 dequal: ^2.0.2 lodash: ^4.17.21 @@ -8877,7 +9013,7 @@ __metadata: synchronous-promise: ^2.0.15 ts-dedent: ^2.0.0 util-deprecate: ^1.0.2 - checksum: ec4b24b314109c7a726dd4f87542af80732c94af165754f11a4ea61f44d11f5bcf05cb4f75bf249cec5e5ee016a790496ea4315c409044da7f766c49ff121258 + checksum: 9e75ad27a031c4b17200ffc815452d3379c6a3ef28c21ca4c389521d433be6a217f2a84ee7c38b5562c31783c31101d939233053e2634f62fe1f30e39fd1fcde languageName: node linkType: hard @@ -8898,10 +9034,10 @@ __metadata: languageName: node linkType: hard -"@storybook/preview@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/preview@npm:7.5.1" - checksum: c996a816d0574eab36f5e383b705a784974a1413a47252baa095bfb63549cf9e9457a2d38114a814a4537a54b7c6dcb7713d04978f3d79cc9f34f67d3e44cdeb +"@storybook/preview@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/preview@npm:7.5.3" + checksum: 4eac804aff380e7d4e7dbdc1721595056de06bff60a9a57d2d00c9dd1ec8fb58fd97f1a346822af5294148a4fa14f3f924c26b7f672711609a5c190b2e8b7003 languageName: node linkType: hard @@ -8915,13 +9051,13 @@ __metadata: languageName: node linkType: hard -"@storybook/react-dom-shim@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/react-dom-shim@npm:7.5.1" +"@storybook/react-dom-shim@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/react-dom-shim@npm:7.5.3" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 0b973a4cbe8cd3da1d33e6d6bf1f028d1ef4de54b2255286b41a0a20387426fd5c71c7025e817a48784441e46f8a039ab5fa3654b0fcd870cbb6eb03a4919cc2 + checksum: 41071d4102202d5965fb3f7068c4864160d98f63ddac67693e1bf8126de1d520968d1c094873dd8564165e7f9c35bb7c4894972047d8378f70a0b2f3c80485fe languageName: node linkType: hard @@ -8945,14 +9081,14 @@ __metadata: languageName: node linkType: hard -"@storybook/react-vite@npm:^7.5.1": - version: 7.5.1 - resolution: "@storybook/react-vite@npm:7.5.1" +"@storybook/react-vite@npm:^7.5.2": + version: 7.5.3 + resolution: "@storybook/react-vite@npm:7.5.3" dependencies: "@joshwooding/vite-plugin-react-docgen-typescript": 0.3.0 "@rollup/pluginutils": ^5.0.2 - "@storybook/builder-vite": 7.5.1 - "@storybook/react": 7.5.1 + "@storybook/builder-vite": 7.5.3 + "@storybook/react": 7.5.3 "@vitejs/plugin-react": ^3.0.1 magic-string: ^0.30.0 react-docgen: ^6.0.2 @@ -8960,7 +9096,7 @@ __metadata: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - checksum: 2dd9fd23da1995c1aca9f99a7320ba6ee18a1a62d33e49a0c9e05b6ee744130247b3992f34654adc829e5fd0ea9a989657ddf84b47e1722b14eec63bc4db3b63 + checksum: 701ae04b08e4f7c535a15dbd0e21f5d14e2826feb41dcb7b3615d2845aff5f5c57796a795a971d5b06a423b85a244311e847c8ffdc6190ba986feb4dd9939c88 languageName: node linkType: hard @@ -9000,17 +9136,17 @@ __metadata: languageName: node linkType: hard -"@storybook/react@npm:7.5.1, @storybook/react@npm:^7.5.1": - version: 7.5.1 - resolution: "@storybook/react@npm:7.5.1" +"@storybook/react@npm:7.5.3, @storybook/react@npm:^7.5.2": + version: 7.5.3 + resolution: "@storybook/react@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.5.1 - "@storybook/core-client": 7.5.1 - "@storybook/docs-tools": 7.5.1 + "@storybook/client-logger": 7.5.3 + "@storybook/core-client": 7.5.3 + "@storybook/docs-tools": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.5.1 - "@storybook/react-dom-shim": 7.5.1 - "@storybook/types": 7.5.1 + "@storybook/preview-api": 7.5.3 + "@storybook/react-dom-shim": 7.5.3 + "@storybook/types": 7.5.3 "@types/escodegen": ^0.0.6 "@types/estree": ^0.0.51 "@types/node": ^18.0.0 @@ -9032,7 +9168,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 1092ba0935aa153ad0a8c547c4383c9a92f83add582d16fc153461d9eb446bc402b34a6b838ff166ca739229858e6086841dd7e48c83673cc509996e79641430 + checksum: 0b931d4feb424bea501bd4977f9b61479d0bbe550998d4537e2c0370b39bc66e604f0408a063477641f9d65fde1e88702154b94ca16e00b9d023c44bc72925bf languageName: node linkType: hard @@ -9050,17 +9186,17 @@ __metadata: languageName: node linkType: hard -"@storybook/router@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/router@npm:7.5.1" +"@storybook/router@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/router@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.5.1 + "@storybook/client-logger": 7.5.3 memoizerific: ^1.11.3 qs: ^6.10.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 833f9c041b2dc15dd7bebba182ecce4a4ae1f12c572934ae111dd7b0bd0beddf22567c5781c678b6aa09f4ef4aa6a53e1c1bef4477822391f4c4899268b352c0 + checksum: 7c7c9a6f6e0ff6a46ab284c94e33398364115f6c4e06bbab89df770efeb654819fced83e5f37c627af91b620134c9c09fcdc112bc24698350dd8f6e2fbeaeaf4 languageName: node linkType: hard @@ -9080,19 +9216,19 @@ __metadata: languageName: node linkType: hard -"@storybook/source-loader@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/source-loader@npm:7.5.1" +"@storybook/source-loader@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/source-loader@npm:7.5.3" dependencies: "@storybook/csf": ^0.1.0 - "@storybook/types": 7.5.1 + "@storybook/types": 7.5.3 estraverse: ^5.2.0 lodash: ^4.17.21 prettier: ^2.8.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 3966e3ad39194c5de87d6ac573e23cf8590036f4e1f48c462f929ca510b257d080e5802dc856cbd39906e6666d1871173dd7869d80b4ac2daea6b1a648fb2f7b + checksum: 0caa5539f9ce8f323e730144cc5568f7a294684952b6238b6849958c0e22c71f6b779720d25ccbec209529d70abd8b8860f699ef6afb4b9a1a022fde59660b89 languageName: node linkType: hard @@ -9112,19 +9248,19 @@ __metadata: languageName: node linkType: hard -"@storybook/telemetry@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/telemetry@npm:7.5.1" +"@storybook/telemetry@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/telemetry@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.5.1 - "@storybook/core-common": 7.5.1 - "@storybook/csf-tools": 7.5.1 + "@storybook/client-logger": 7.5.3 + "@storybook/core-common": 7.5.3 + "@storybook/csf-tools": 7.5.3 chalk: ^4.1.0 detect-package-manager: ^2.0.1 fetch-retry: ^5.0.2 fs-extra: ^11.1.0 read-pkg-up: ^7.0.1 - checksum: 005da0d6e20908a1adb973ab6e06df2affd36985d50323195aa45eb7775f3147df0ff375799785632a92d8470a0ac1acaafb8dd9ebdb6b05da3417dedd53134d + checksum: b031ace4e1b3c01ea43d132de01f49393007344abf98ab496e2b74bb0e15372b92bf98754fb81095ba66861ac570e730b2ed637f686e5261ece0a4ad9901db63 languageName: node linkType: hard @@ -9158,18 +9294,18 @@ __metadata: languageName: node linkType: hard -"@storybook/theming@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/theming@npm:7.5.1" +"@storybook/theming@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/theming@npm:7.5.3" dependencies: "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@storybook/client-logger": 7.5.1 + "@storybook/client-logger": 7.5.3 "@storybook/global": ^5.0.0 memoizerific: ^1.11.3 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 0d2643dea9b3a9b48691131c539c76533a9ccdd46662cc30c1e2109d6bd239b5e77d56b739e30e270ae4379435a78c30c85a10ed758c2f820073af67bc59daa4 + checksum: e9769d0ad9144d47755d89fad0788ca6fa990116e2c8a3ab7c491357d71adea9feb248d1a5d6a81f4981720feaf80f42373a9ed4adb85906babc14422824fae9 languageName: node linkType: hard @@ -9185,15 +9321,15 @@ __metadata: languageName: node linkType: hard -"@storybook/types@npm:7.5.1": - version: 7.5.1 - resolution: "@storybook/types@npm:7.5.1" +"@storybook/types@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/types@npm:7.5.3" dependencies: - "@storybook/channels": 7.5.1 + "@storybook/channels": 7.5.3 "@types/babel__core": ^7.0.0 "@types/express": ^4.7.0 file-system-cache: 2.3.0 - checksum: 9134bd288760df17c36b1d05fa856b86463460ba5de29817156230cef717a0bd836c8637a638d28a87124470919133a897b94278de00be92823d24088f63622c + checksum: f9c14fc4579260fdc014e9f759c89b2214c90b9c75a31f7bf6e11d404d47d5d350650258febf8c13467615aeabab8ac4008af8cec5fc90959639bed68ce78408 languageName: node linkType: hard @@ -9715,6 +9851,18 @@ __metadata: languageName: node linkType: hard +"@tanstack/react-virtual@npm:^3.0.0-beta.68": + version: 3.0.0-beta.68 + resolution: "@tanstack/react-virtual@npm:3.0.0-beta.68" + dependencies: + "@tanstack/virtual-core": 3.0.0-beta.68 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: e8d4110fde9eb7e27b7067a300ac8bb08622a19b7c25a3b1b313b61e76093f1c500a90723011584971a0f5c4c7832df0c90276d4cf2d43f06281199636e50c4a + languageName: node + linkType: hard + "@tanstack/table-core@npm:8.10.7": version: 8.10.7 resolution: "@tanstack/table-core@npm:8.10.7" @@ -9729,6 +9877,13 @@ __metadata: languageName: node linkType: hard +"@tanstack/virtual-core@npm:3.0.0-beta.68": + version: 3.0.0-beta.68 + resolution: "@tanstack/virtual-core@npm:3.0.0-beta.68" + checksum: f06898afc6501e6a6240425f2bdbd0e2dc637f4f58cb4a9e13fca7e8e25b93be25543559c53b243bf70e386302844f419d9110010db964916a523495db114f51 + languageName: node + linkType: hard + "@testing-library/dom@npm:^9.0.0, @testing-library/dom@npm:^9.3.1": version: 9.3.1 resolution: "@testing-library/dom@npm:9.3.1" @@ -9879,15 +10034,15 @@ __metadata: linkType: hard "@types/babel__core@npm:^7.18.0": - version: 7.20.3 - resolution: "@types/babel__core@npm:7.20.3" + version: 7.20.4 + resolution: "@types/babel__core@npm:7.20.4" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 8d14acc14d99b4b8bf36c00da368f6d597bd9ae3344aa7048f83f0f701b0463fa7c7bf2e50c3e4382fdbcfd1e4187b3452a0f0888b0f3ae8fad975591f7bdb94 + checksum: 75ed6072213423d2b827740d68bbf96f5a7050ce8bd842dde0ceec8d352d06e847166bac757df4beba55525b65f8727c0432adeb5cb4f83aa42e155ac555767e languageName: node linkType: hard @@ -9920,11 +10075,11 @@ __metadata: linkType: hard "@types/babel__traverse@npm:^7.18.0": - version: 7.20.3 - resolution: "@types/babel__traverse@npm:7.20.3" + version: 7.20.4 + resolution: "@types/babel__traverse@npm:7.20.4" dependencies: "@babel/types": ^7.20.7 - checksum: 6d0f70d8972647c9b78b51a54f0b6481c4f23f0bb2699ad276e6070678bd121fede99e8e2c8c3e409d2f31a0bf83ae511abc6fefb91f0630c8d728a3a9136790 + checksum: f044ba80e00d07e46ee917c44f96cfc268fcf6d3871f7dfb8db8d3c6dab1508302f3e6bc508352a4a3ae627d2522e3fc500fa55907e0410a08e2e0902a8f3576 languageName: node linkType: hard @@ -10584,9 +10739,9 @@ __metadata: linkType: hard "@types/resolve@npm:^1.20.2": - version: 1.20.4 - resolution: "@types/resolve@npm:1.20.4" - checksum: d9ddf2a9231df86dd0e98046df531ac63d96d3a97db635d00a25f33520535d0679a2c451751fe26a2221e209c91f6d03286f8c6595bf5f71eddc3d7a7c64ee3f + version: 1.20.5 + resolution: "@types/resolve@npm:1.20.5" + checksum: 95d33b12fe1419873e415f83d1d5fcaf3a145e497763b11491fa90a4ab8c18edb2fdec6df60e290208df30244d34763c69b5fd01d63c34c986808323f3b1667e languageName: node linkType: hard @@ -12796,14 +12951,14 @@ __metadata: languageName: node linkType: hard -"chromatic@npm:^6.24.1": - version: 6.24.1 - resolution: "chromatic@npm:6.24.1" +"chromatic@npm:^7.6.0": + version: 7.6.0 + resolution: "chromatic@npm:7.6.0" bin: chroma: dist/bin.js chromatic: dist/bin.js chromatic-cli: dist/bin.js - checksum: 1ca3c11ac53401e822e372c47ccbb69d06c0e6f3028a0f8d952bcfed4e1a9b9944e9d6c52d2f91b4a5cdc5296817e0430635ad44754fc5c23cfae0dcb26c9e01 + checksum: 5f473385cc2c152b43487646803a213f0dc3fcf9f7755a051040e31b5f8e67486b8a80fff3bbe0752bdb0e41851ff965b587f122938b35acf5c5eba1d3d1b9e4 languageName: node linkType: hard @@ -24334,16 +24489,16 @@ __metadata: dependencies: "@babel/core": ^7.23.2 "@fontsource-variable/inter": ^5.0.15 - "@storybook/addon-a11y": ^7.5.1 - "@storybook/addon-docs": ^7.5.1 - "@storybook/addon-essentials": ^7.5.1 - "@storybook/addon-storysource": ^7.5.1 - "@storybook/builder-webpack5": ^7.5.1 - "@storybook/cli": ^7.5.1 + "@storybook/addon-a11y": ^7.5.2 + "@storybook/addon-docs": ^7.5.2 + "@storybook/addon-essentials": ^7.5.2 + "@storybook/addon-storysource": ^7.5.2 + "@storybook/builder-webpack5": ^7.5.2 + "@storybook/cli": ^7.5.2 "@storybook/mdx2-csf": ^1.1.0 - "@storybook/react": ^7.5.1 - "@storybook/react-vite": ^7.5.1 - chromatic: ^6.24.1 + "@storybook/react": ^7.5.2 + "@storybook/react-vite": ^7.5.2 + chromatic: ^7.6.0 framer-motion: ^10.16.4 lucide-react: ^0.260.0 react: ^18.2.0 @@ -24408,7 +24563,7 @@ __metadata: "@dnd-kit/sortable": ^7.0.2 "@emotion/react": ^11.11.1 "@emotion/styled": ^11.11.0 - "@saas-ui-pro/react": ^0.28.0 + "@saas-ui-pro/react": ^0.29.0 "@saas-ui/react": ^2.3.1 framer-motion: ^10.16.4 lucide-react: ^0.260.0 @@ -28613,9 +28768,9 @@ __metadata: languageName: node linkType: hard -"zustand@npm:^4.4.4": - version: 4.4.4 - resolution: "zustand@npm:4.4.4" +"zustand@npm:^4.4.5": + version: 4.4.6 + resolution: "zustand@npm:4.4.6" dependencies: use-sync-external-store: 1.2.0 peerDependencies: @@ -28629,7 +28784,7 @@ __metadata: optional: true react: optional: true - checksum: 371fd842dc704ed5983c6d64a77994c9c91867338c742d162ac95c4252b5f98fc38aeb2d5a07f48311babed5ca7dbff2d2258301db0ae143d32897bcf3ae651b + checksum: da7b00cc6dbe5cf5fc2e3fbca745317da4bbaf53bf4a6909bbd3e335242704df9689027f613461aff07eb5f672d5570bc1a2ef99d0ad7bc868920a3b331613d4 languageName: node linkType: hard