diff --git a/components/icons/arrow-left.tsx b/components/icons/arrow-left.tsx
deleted file mode 100644
index 95d5af173..000000000
--- a/components/icons/arrow-left.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-export default function ArrowLeftIcon({ className }: { className?: string }) {
- return (
-
- );
-}
diff --git a/components/icons/caret-right.tsx b/components/icons/caret-right.tsx
deleted file mode 100644
index fbed04236..000000000
--- a/components/icons/caret-right.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-export default function CaretRightIcon({ className }: { className?: string }) {
- return (
-
- );
-}
diff --git a/components/icons/cart.tsx b/components/icons/cart.tsx
deleted file mode 100644
index 52f761485..000000000
--- a/components/icons/cart.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import clsx from 'clsx';
-import ShoppingBagIcon from './shopping-bag';
-
-export default function CartIcon({
- className,
- quantity
-}: {
- className?: string;
- quantity?: number;
-}) {
- return (
-
-
- {quantity ? (
-
- {quantity}
-
- ) : null}
-
- );
-}
diff --git a/components/icons/close.tsx b/components/icons/close.tsx
deleted file mode 100644
index a92a43154..000000000
--- a/components/icons/close.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-export default function CloseIcon({ className }: { className?: string }) {
- return (
-
- );
-}
diff --git a/components/icons/language.tsx b/components/icons/language.tsx
deleted file mode 100644
index 4d781a0b3..000000000
--- a/components/icons/language.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-export default function LanguageIcon({ className }: { className?: string }) {
- return (
-
- );
-}
diff --git a/components/icons/logo.tsx b/components/icons/logo.tsx
deleted file mode 100644
index d961f7960..000000000
--- a/components/icons/logo.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-export default function LogoIcon({ className }: { className?: string }) {
- return (
-
- );
-}
diff --git a/components/icons/menu.tsx b/components/icons/menu.tsx
deleted file mode 100644
index acaed1188..000000000
--- a/components/icons/menu.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-export default function MenuIcon({ className }: { className?: string }) {
- return (
-
- );
-}
diff --git a/components/icons/minus.tsx b/components/icons/minus.tsx
deleted file mode 100644
index 93c46e1dc..000000000
--- a/components/icons/minus.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-export default function MinusIcon({ className }: { className?: string }) {
- return (
-
- );
-}
diff --git a/components/icons/plus.tsx b/components/icons/plus.tsx
deleted file mode 100644
index 8ae449578..000000000
--- a/components/icons/plus.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-export default function PlusIcon({ className }: { className?: string }) {
- return (
-
- );
-}
diff --git a/components/icons/search.tsx b/components/icons/search.tsx
deleted file mode 100644
index a03574025..000000000
--- a/components/icons/search.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-export default function SearchIcon({ className }: { className?: string }) {
- return (
-
- );
-}
diff --git a/components/icons/shopping-bag.tsx b/components/icons/shopping-bag.tsx
deleted file mode 100644
index a5dd1768e..000000000
--- a/components/icons/shopping-bag.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-export default function ShoppingBagIcon({ className }: { className?: string }) {
- return (
-
- );
-}
diff --git a/components/layout/dynamic-content-manager/dynamic-content-manager.tsx b/components/layout/dynamic-content-manager/dynamic-content-manager.tsx
index f951f5cdc..349857863 100644
--- a/components/layout/dynamic-content-manager/dynamic-content-manager.tsx
+++ b/components/layout/dynamic-content-manager/dynamic-content-manager.tsx
@@ -6,82 +6,83 @@ import Hero from '@/components/modules/hero';
import ReusableSection from '@/components/modules/reusable-section/reusable-section';
import Slider from '@/components/modules/slider/slider';
import USPSection from '@/components/modules/usp-section/usp-section';
-import { InfoCircledIcon } from '@radix-ui/react-icons';
+import { InformationCircleIcon } from '@heroicons/react/24/outline';
+import { Suspense } from 'react';
-interface getContentComponentProps {
- _type: string;
- _key: number;
- disabled: boolean;
-}
+// interface getContentComponentProps {
+// _type: string;
+// _key: number;
+// disabled: boolean;
+// }
-const getContentComponent = ({ _type, _key, disabled, ...rest }: getContentComponentProps) => {
- let Component: any;
+// const getContentComponent = ({ _type, _key, disabled, ...rest }: getContentComponentProps) => {
+// let Component: any;
- switch (_type) {
- case 'hero':
- if (disabled !== true) {
- Component = Hero;
- } else {
- return;
- }
- break;
- case 'slider':
- if (disabled !== true) {
- Component = Slider;
- } else {
- return;
- }
- break;
- case 'filteredProductList':
- if (disabled !== true) {
- Component = FilteredProductList;
- } else {
- return;
- }
- break;
- case 'blurbSection':
- if (disabled !== true) {
- Component = BlurbSection;
- } else {
- return;
- }
- break;
- case 'uspSection':
- if (disabled !== true) {
- Component = USPSection;
- } else {
- return;
- }
- break;
- case 'reusableSection':
- if (disabled !== true) {
- Component = ReusableSection;
- } else {
- return;
- }
- break;
- default:
- return (
-
-
-
- {`No matching component (Type: ${_type})`}
-
-
- );
- }
+// switch (_type) {
+// case 'hero':
+// if (disabled !== true) {
+// Component = Hero;
+// } else {
+// return;
+// }
+// break;
+// case 'slider':
+// if (disabled !== true) {
+// Component = Slider;
+// } else {
+// return;
+// }
+// break;
+// case 'filteredProductList':
+// if (disabled !== true) {
+// Component = FilteredProductList;
+// } else {
+// return;
+// }
+// break;
+// case 'blurbSection':
+// if (disabled !== true) {
+// Component = BlurbSection;
+// } else {
+// return;
+// }
+// break;
+// case 'uspSection':
+// if (disabled !== true) {
+// Component = USPSection;
+// } else {
+// return;
+// }
+// break;
+// case 'reusableSection':
+// if (disabled !== true) {
+// Component = ReusableSection;
+// } else {
+// return;
+// }
+// break;
+// default:
+// return (
+//
+//
+//
+// {`No matching component (Type: ${_type})`}
+//
+//
+// );
+// }
- return Component ? (
-
- ) : (
-
Something else
- );
-};
+// return Component ? (
+//
+// ) : (
+//
Something else
+// );
+// };
interface dynamicContentManagerProps {
content: [] | any;
@@ -89,7 +90,91 @@ interface dynamicContentManagerProps {
const DynamicContentManager = ({ content }: dynamicContentManagerProps) => {
return (
-
{content?.map(getContentComponent)}
+
+ {/* {content?.map(getContentComponent)} */}
+
+ {content.map(
+ (
+ component: { _type: string; _key: number; disabled: boolean; rest: any } | any,
+ index: number
+ ) => {
+ const { _type, _key, disabled, ...rest } = component;
+
+ let Component: any;
+
+ switch (_type) {
+ case 'hero':
+ if (disabled !== true) {
+ Component = Hero;
+ } else {
+ return;
+ }
+ break;
+ case 'slider':
+ if (disabled !== true) {
+ Component = Slider;
+ } else {
+ return;
+ }
+ break;
+ case 'filteredProductList':
+ if (disabled !== true) {
+ Component = FilteredProductList;
+ } else {
+ return;
+ }
+ break;
+ case 'blurbSection':
+ if (disabled !== true) {
+ Component = BlurbSection;
+ } else {
+ return;
+ }
+ break;
+ case 'uspSection':
+ if (disabled !== true) {
+ Component = USPSection;
+ } else {
+ return;
+ }
+ break;
+ case 'reusableSection':
+ if (disabled !== true) {
+ Component = ReusableSection;
+ } else {
+ return;
+ }
+ break;
+ default:
+ return (
+
+
+
+ {`No matching component (Type: ${_type})`}
+
+
+ );
+ }
+
+ if (Component && index === 0) {
+ return
;
+ } else if (Component) {
+ return (
+
+
+
+ );
+ } else {
+
Something else
;
+ }
+ }
+ )}
+
);
};
diff --git a/components/layout/header/header.tsx b/components/layout/header/header.tsx
index b56c230dc..1ed29fdbd 100644
--- a/components/layout/header/header.tsx
+++ b/components/layout/header/header.tsx
@@ -3,9 +3,14 @@ import OpenCart from 'components/cart/open-cart';
import Logo from 'components/ui/logo/logo';
import Link from 'next/link';
import { Suspense } from 'react';
-import DesktopMenu from './desktop-menu';
import HeaderRoot from './header-root';
-import MobileModal from './mobile-modal';
+import MainMenu from './main-menu/main-menu';
+import MobileMenuModal from './mobile-menu/modal';
+import OpenMobileMenu from './mobile-menu/open-mobile-menu';
+import SearchModal from './search/modal';
+import OpenSearch from './search/open-search';
+import UserModal from './user-menu/modal';
+import OpenUserMenu from './user-menu/open-user-menu';
interface HeaderProps {
locale: string;
@@ -16,8 +21,10 @@ const Header = ({ locale }: HeaderProps) => {
-
-
+
+ }>
+
+
@@ -31,9 +38,15 @@ const Header = ({ locale }: HeaderProps) => {
-
+
-
+
+
}>
+
+
+
}>
+
+
}>
diff --git a/components/layout/header/desktop-menu.tsx b/components/layout/header/main-menu/main-menu.tsx
similarity index 80%
rename from components/layout/header/desktop-menu.tsx
rename to components/layout/header/main-menu/main-menu.tsx
index 00fd871e6..4d56a6a21 100644
--- a/components/layout/header/desktop-menu.tsx
+++ b/components/layout/header/main-menu/main-menu.tsx
@@ -2,11 +2,11 @@ import { categoriesQuery } from '@/lib/sanity/queries';
import { clientFetch } from '@/lib/sanity/sanity.client';
import Link from 'next/link';
-interface DesktopMenuProps {
+interface MainMenuProps {
locale: string;
}
-export default async function DesktopMenu({ locale }: DesktopMenuProps) {
+export default async function MainMenu({ locale }: MainMenuProps) {
const params = {
locale: locale
};
@@ -18,7 +18,7 @@ export default async function DesktopMenu({ locale }: DesktopMenuProps) {
}
return (
-
+
{categories.map((category: { slug: string } | any, index: number) => {
return (
-
diff --git a/components/layout/header/mobile-modal.tsx b/components/layout/header/mobile-menu/modal.tsx
similarity index 64%
rename from components/layout/header/mobile-modal.tsx
rename to components/layout/header/mobile-menu/modal.tsx
index 3f2f1fb29..a23715d54 100644
--- a/components/layout/header/mobile-modal.tsx
+++ b/components/layout/header/mobile-menu/modal.tsx
@@ -1,24 +1,30 @@
'use client';
-import MenuIcon from '@/components/icons/menu';
import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from '@/components/ui/sheet';
import { useState } from 'react';
+import MainMenu from '../main-menu/main-menu';
+import OpenMobileMenu from './open-mobile-menu';
-export default function MobileModal() {
+interface MobileMenuModalProps {
+ locale: string;
+}
+
+export default function MobileMenuModal({ locale }: MobileMenuModalProps) {
const [isOpen, setIsOpen] = useState(false);
return (
<>
setIsOpen(!isOpen)}>
-
-
-
+
Menu
+
+
+
>
diff --git a/components/layout/header/mobile-menu/open-mobile-menu.tsx b/components/layout/header/mobile-menu/open-mobile-menu.tsx
new file mode 100644
index 000000000..0a7087504
--- /dev/null
+++ b/components/layout/header/mobile-menu/open-mobile-menu.tsx
@@ -0,0 +1,15 @@
+import { Bars3Icon } from '@heroicons/react/24/outline';
+import clsx from 'clsx';
+
+export default function OpenMobileMenu({ className }: { className?: string }) {
+ return (
+
+
+
+ );
+}
diff --git a/components/layout/header/search/modal.tsx b/components/layout/header/search/modal.tsx
new file mode 100644
index 000000000..c881702cf
--- /dev/null
+++ b/components/layout/header/search/modal.tsx
@@ -0,0 +1,26 @@
+'use client';
+
+import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from '@/components/ui/sheet';
+import { useTranslations } from 'next-intl';
+import { useState } from 'react';
+import OpenSearch from './open-search';
+
+export default function SearchModal() {
+ const [isOpen, setIsOpen] = useState(false);
+ const t = useTranslations('search');
+
+ return (
+ <>
+ setIsOpen(!isOpen)}>
+
+
+
+
+
+ {t('search')}
+
+
+
+ >
+ );
+}
diff --git a/components/layout/header/search/open-search.tsx b/components/layout/header/search/open-search.tsx
new file mode 100644
index 000000000..d31aecae8
--- /dev/null
+++ b/components/layout/header/search/open-search.tsx
@@ -0,0 +1,12 @@
+import { MagnifyingGlassIcon } from '@heroicons/react/24/outline';
+import clsx from 'clsx';
+
+export default function OpenSearch({ className }: { className?: string }) {
+ return (
+
+
+
+ );
+}
diff --git a/components/layout/header/user-menu/modal.tsx b/components/layout/header/user-menu/modal.tsx
new file mode 100644
index 000000000..ca06a4b7c
--- /dev/null
+++ b/components/layout/header/user-menu/modal.tsx
@@ -0,0 +1,37 @@
+'use client';
+
+import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from '@/components/ui/sheet';
+import { useTranslations } from 'next-intl';
+import { useState } from 'react';
+import OpenUserMenu from './open-user-menu';
+
+import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
+
+export default function UserModal() {
+ const [isOpen, setIsOpen] = useState(false);
+ const t = useTranslations('auth');
+
+ return (
+ <>
+ setIsOpen(!isOpen)}>
+
+
+
+
+
+ {t('login.logIn')}
+
+
+
+
+ {t('login.logIn')}
+ {t('signUp.register')}
+
+ Log in to your account here.
+ Register for account here.
+
+
+
+ >
+ );
+}
diff --git a/components/layout/header/user-menu/open-user-menu.tsx b/components/layout/header/user-menu/open-user-menu.tsx
new file mode 100644
index 000000000..8d421fc10
--- /dev/null
+++ b/components/layout/header/user-menu/open-user-menu.tsx
@@ -0,0 +1,15 @@
+import { UserCircleIcon } from '@heroicons/react/24/outline';
+import clsx from 'clsx';
+
+export default function OpenUserMenu({ className }: { className?: string }) {
+ return (
+
+
+
+ );
+}
diff --git a/components/modules/carousel/carousel.tsx b/components/modules/carousel/carousel.tsx
index 76d35a296..b4b623e4d 100644
--- a/components/modules/carousel/carousel.tsx
+++ b/components/modules/carousel/carousel.tsx
@@ -1,4 +1,4 @@
-import { ArrowLeftIcon, ArrowRightIcon } from '@radix-ui/react-icons';
+import { ArrowLeftIcon, ArrowRightIcon } from '@heroicons/react/24/outline';
import 'glider-js/glider.min.css';
import React from 'react';
import Glider from 'react-glider';
diff --git a/components/ui/dropdown-menu.tsx b/components/ui/dropdown-menu.tsx
index ef793c703..ee6de438d 100644
--- a/components/ui/dropdown-menu.tsx
+++ b/components/ui/dropdown-menu.tsx
@@ -1,7 +1,7 @@
'use client';
+import { CheckIcon, ChevronRightIcon } from '@heroicons/react/24/outline';
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
-import { CheckIcon, ChevronRightIcon, CircleIcon } from '@radix-ui/react-icons';
import * as React from 'react';
@@ -128,7 +128,7 @@ const DropdownMenuRadioItem = React.forwardRef<
>
-
+
{children}
diff --git a/components/ui/locale-switcher/locale-switcher.tsx b/components/ui/locale-switcher/locale-switcher.tsx
index b08651dab..421cbd5f8 100644
--- a/components/ui/locale-switcher/locale-switcher.tsx
+++ b/components/ui/locale-switcher/locale-switcher.tsx
@@ -6,7 +6,7 @@ import {
DropdownMenuItem,
DropdownMenuTrigger
} from '@/components/ui/dropdown-menu';
-import LanguageIcon from 'components/icons/language';
+import { LanguageIcon } from '@heroicons/react/24/outline';
import { useLocale, useTranslations } from 'next-intl';
import Link from 'next/link';
import { usePathname } from 'next/navigation';
diff --git a/components/ui/sheet.tsx b/components/ui/sheet.tsx
index bbcfe2f6f..0cecbe501 100644
--- a/components/ui/sheet.tsx
+++ b/components/ui/sheet.tsx
@@ -1,7 +1,7 @@
'use client';
+import { XMarkIcon } from '@heroicons/react/24/outline';
import * as SheetPrimitive from '@radix-ui/react-dialog';
-import { Cross1Icon } from '@radix-ui/react-icons';
import { cva, type VariantProps } from 'class-variance-authority';
import * as React from 'react';
@@ -65,7 +65,7 @@ const SheetContent = React.forwardRef<
{children}
-
+
Close
diff --git a/components/ui/tabs.tsx b/components/ui/tabs.tsx
new file mode 100644
index 000000000..26eb10912
--- /dev/null
+++ b/components/ui/tabs.tsx
@@ -0,0 +1,55 @@
+"use client"
+
+import * as React from "react"
+import * as TabsPrimitive from "@radix-ui/react-tabs"
+
+import { cn } from "@/lib/utils"
+
+const Tabs = TabsPrimitive.Root
+
+const TabsList = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+TabsList.displayName = TabsPrimitive.List.displayName
+
+const TabsTrigger = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+TabsTrigger.displayName = TabsPrimitive.Trigger.displayName
+
+const TabsContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+TabsContent.displayName = TabsPrimitive.Content.displayName
+
+export { Tabs, TabsList, TabsTrigger, TabsContent }
diff --git a/package.json b/package.json
index 9981493d8..82670a78a 100644
--- a/package.json
+++ b/package.json
@@ -19,14 +19,14 @@
"*": "prettier --write --ignore-unknown"
},
"dependencies": {
+ "@heroicons/react": "^2.0.18",
"@next/bundle-analyzer": "^13.4.3",
"@portabletext/react": "^3.0.0",
"@radix-ui/react-dialog": "^1.0.4",
"@radix-ui/react-dropdown-menu": "^2.0.4",
- "@radix-ui/react-icons": "^1.3.0",
"@radix-ui/react-navigation-menu": "^1.1.2",
+ "@radix-ui/react-tabs": "^1.0.4",
"@sanity/client": "^6.4.4",
- "@sanity/icons": "^2.3.1",
"@sanity/image-url": "^1.0.2",
"@sanity/preview-kit": "^2.4.9",
"@sanity/types": "^3.11.1",
@@ -72,4 +72,3 @@
"typescript": "^5.1.3"
}
}
-
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c16335786..ce1726ea8 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,15 +1,15 @@
lockfileVersion: 5.4
specifiers:
+ '@heroicons/react': ^2.0.18
'@next/bundle-analyzer': ^13.4.3
'@playwright/test': ^1.34.1
'@portabletext/react': ^3.0.0
'@radix-ui/react-dialog': ^1.0.4
'@radix-ui/react-dropdown-menu': ^2.0.4
- '@radix-ui/react-icons': ^1.3.0
'@radix-ui/react-navigation-menu': ^1.1.2
+ '@radix-ui/react-tabs': ^1.0.4
'@sanity/client': ^6.4.4
- '@sanity/icons': ^2.3.1
'@sanity/image-url': ^1.0.2
'@sanity/preview-kit': ^2.4.9
'@sanity/types': ^3.11.1
@@ -52,14 +52,14 @@ specifiers:
typescript: ^5.1.3
dependencies:
+ '@heroicons/react': 2.0.18_react@18.2.0
'@next/bundle-analyzer': 13.4.13
'@portabletext/react': 3.0.4_react@18.2.0
'@radix-ui/react-dialog': 1.0.4_ml6diaeoljuxdq7psn5bilsrme
'@radix-ui/react-dropdown-menu': 2.0.5_ml6diaeoljuxdq7psn5bilsrme
- '@radix-ui/react-icons': 1.3.0_react@18.2.0
'@radix-ui/react-navigation-menu': 1.1.3_ml6diaeoljuxdq7psn5bilsrme
+ '@radix-ui/react-tabs': 1.0.4_ml6diaeoljuxdq7psn5bilsrme
'@sanity/client': 6.4.4
- '@sanity/icons': 2.4.1_react@18.2.0
'@sanity/image-url': 1.0.2
'@sanity/preview-kit': 2.4.9_esptxo4lplqmefuoebcrocvktm
'@sanity/types': 3.15.0
@@ -790,6 +790,14 @@ packages:
tslib: 2.6.1
dev: false
+ /@heroicons/react/2.0.18_react@18.2.0:
+ resolution: {integrity: sha512-7TyMjRrZZMBPa+/5Y8lN0iyvUU/01PeMGX2+RE7cQWpEUIcb4QotzUObFkJDejj/HUH4qjP/eQ0gzzKs2f+6Yw==}
+ peerDependencies:
+ react: '>= 16'
+ dependencies:
+ react: 18.2.0
+ dev: false
+
/@humanwhocodes/config-array/0.11.10:
resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==}
engines: {node: '>=10.10.0'}
@@ -1274,14 +1282,6 @@ packages:
react-dom: 18.2.0_react@18.2.0
dev: false
- /@radix-ui/react-icons/1.3.0_react@18.2.0:
- resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==}
- peerDependencies:
- react: ^16.x || ^17.x || ^18.x
- dependencies:
- react: 18.2.0
- dev: false
-
/@radix-ui/react-id/1.0.1_6kgymidexis2l23kiss4by6rqm:
resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==}
peerDependencies:
@@ -1507,6 +1507,34 @@ packages:
react: 18.2.0
dev: false
+ /@radix-ui/react-tabs/1.0.4_ml6diaeoljuxdq7psn5bilsrme:
+ resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.22.10
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-context': 1.0.1_6kgymidexis2l23kiss4by6rqm
+ '@radix-ui/react-direction': 1.0.1_6kgymidexis2l23kiss4by6rqm
+ '@radix-ui/react-id': 1.0.1_6kgymidexis2l23kiss4by6rqm
+ '@radix-ui/react-presence': 1.0.1_ml6diaeoljuxdq7psn5bilsrme
+ '@radix-ui/react-primitive': 1.0.3_ml6diaeoljuxdq7psn5bilsrme
+ '@radix-ui/react-roving-focus': 1.0.4_ml6diaeoljuxdq7psn5bilsrme
+ '@radix-ui/react-use-controllable-state': 1.0.1_6kgymidexis2l23kiss4by6rqm
+ '@types/react': 18.2.19
+ '@types/react-dom': 18.2.7
+ react: 18.2.0
+ react-dom: 18.2.0_react@18.2.0
+ dev: false
+
/@radix-ui/react-use-callback-ref/1.0.1_6kgymidexis2l23kiss4by6rqm:
resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==}
peerDependencies: