@momo-webplatform/mobase 0.2.35 → 0.2.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/components/Accordion/Accordion.tsx","../../src/helpers/utils.ts","../../src/helpers/constants.ts","../../src/components/ActionButton/ActionButton.tsx","../../src/components/Button/Button.tsx","../../src/foundation/SpinerIcon.tsx","../../src/components/Dialog/Dialog.tsx","../../src/components/DialogQr/DialogQr.tsx","../../src/components/Breadcrumb/Breadcrumb.tsx","../../src/components/Calendar/Calendar.tsx","../../src/components/Checkbox/Checkbox.tsx","../../src/components/Popover/Popover.tsx","../../src/components/DatePicker/DatePicker.tsx","../../src/components/AlertDialog/AlertDialog.tsx","../../src/components/IconButton/IconButton.tsx","../../src/components/HeadingGroup/HeadingGroup.tsx","../../src/components/Pagination/Pagination.tsx","../../src/components/Tabs/Tabs.tsx","../../src/components/TextArea/TextArea.tsx","../../src/components/Toast/useToast.tsx","../../src/components/Toast/Toast.tsx","../../src/components/Toast/toaster.tsx","../../src/components/TextButton/TextButton.tsx","../../src/components/Tooltip/Tooltip.tsx","../../src/components/TextInput/TextInput.tsx","../../src/components/Stepper/Stepper.tsx","../../src/components/Select/Select.tsx","../../src/components/NavigationMenu/NavigationMenu.tsx","../../src/components/Switch/Switch.tsx","../../src/components/RadioGroup/RadioGroup.tsx","../../src/components/HeaderNavigation/ListItem.tsx","../../src/components/HeaderNavigation/NavItems.tsx","../../src/components/HeaderNavigation/MobileMenu.tsx","../../src/helpers/animations.ts","../../src/components/HeaderNavigation/ListItemMobile.tsx","../../src/components/HeaderNavigation/NavItemsMobile.tsx","../../src/components/HeaderNavigation/HeaderNavigation.tsx","../../src/components/Footer/FooterContent.tsx","../../src/components/Footer/Footer.tsx","../../src/components/Card/Card.tsx","../../src/components/Command/Command.tsx","../../src/components/Combobox/Combobox.tsx","../../src/components/Callout/Callout.tsx","../../src/components/SearchBar/SearchBar.tsx","../../src/components/LightboxGallery/LightboxGallery.tsx","../../src/components/Choicebox/Choicebox.tsx","../../src/components/Badge/Badge.tsx","../../src/components/Progressbar/Progressbar.tsx","../../src/components/HeroSection/HeroSection.tsx","../../src/components/HeroSection/utils.ts","../../src/components/AspectRatio/AspectRatio.tsx","../../src/components/Slider/Slider.tsx","../../src/mobase-tw-plugin/plugin.ts","../../src/mobase-tw-plugin/utilities/transition.ts","../../src/mobase-tw-plugin/utilities/custom.ts","../../src/mobase-tw-plugin/utilities/scrollbar-hide.ts","../../src/mobase-tw-plugin/utilities/index.ts","../../src/mobase-tw-plugin/utils/object.ts","../../src/mobase-tw-plugin/utils/theme.ts","../../src/mobase-tw-plugin/colors/blue.ts","../../src/mobase-tw-plugin/colors/green.ts","../../src/mobase-tw-plugin/colors/pink.ts","../../src/mobase-tw-plugin/colors/purple.ts","../../src/mobase-tw-plugin/colors/red.ts","../../src/mobase-tw-plugin/colors/yellow.ts","../../src/mobase-tw-plugin/colors/orange.ts","../../src/mobase-tw-plugin/colors/gray.ts","../../src/mobase-tw-plugin/colors/common.ts","../../src/mobase-tw-plugin/colors/index.ts","../../src/mobase-tw-plugin/layout.ts","../../src/mobase-tw-plugin/animations/index.ts","../../src/mobase-tw-plugin/font-sizes.ts","../../src/mobase-tw-plugin/radius.ts","../../src/site/meta.tsx"],"sourcesContent":["export * from \"./components\";\nexport * from \"./mobase-tw-plugin\";\nexport * from \"./site\";\n","import * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDownIcon } from \"@heroicons/react/20/solid\";\n\nimport { cn } from \"../../helpers/utils\";\n\nimport {\n AccordionContentProps,\n AccordionItemProps,\n AccordionTriggerProps,\n AccordionSingleProps,\n AccordionMultipleProps,\n} from \"@radix-ui/react-accordion\";\n\nexport interface AccordionInterface extends AccordionItemProps {\n css?: string;\n}\nexport type AccordionRootInterface =\n | AccordionSingleProps\n | AccordionMultipleProps;\n// const Accordion = AccordionPrimitive.Root;\n\nconst Accordion = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Root>,\n AccordionRootInterface\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Root ref={ref} {...props} />\n));\nAccordion.displayName = \"AccordionRoot\";\n\nexport interface AccordionItemInterface extends AccordionItemProps {\n css?: string;\n}\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n AccordionItemInterface\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b border-gray-200\", className)}\n {...props}\n />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nexport interface AccordionTriggerInterface extends AccordionTriggerProps {\n css?: string;\n}\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n AccordionTriggerInterface\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center text-left justify-between py-4 font-medium transition-all hover:underline hover:text-pink-600 [&[data-state=open]]:text-pink-600 [&[data-state=open]>svg]:rotate-180 text-gray-900\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\" h-5 w-5 shrink-0 transition-transform duration-200 ml-1\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nexport interface AccordionContentInterface extends AccordionContentProps {\n css?: string;\n}\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n AccordionContentInterface\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down text-left \"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0 text-gray-900 \", className)}>\n {children}\n </div>\n </AccordionPrimitive.Content>\n));\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import { type ClassValue, clsx } from \"clsx\";\nimport * as React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { NEXT_PUBLIC_REACT_APP_FRONT_END } from \"../helpers/constants\";\nimport { useEffect, useLayoutEffect, useState } from \"react\";\nimport UAParser from \"ua-parser-js\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ninterface AddQueryToLinkParams {\n link?: string;\n query?: Record<string, string>;\n}\n\nexport const addQueryToLink = ({\n link,\n query = {},\n}: AddQueryToLinkParams): string => {\n if (!link) return \"\";\n\n const url = new URL(link, NEXT_PUBLIC_REACT_APP_FRONT_END || \"\");\n\n const searchParams = new URLSearchParams(url.search);\n\n Object.entries(query).forEach(([key, value]) => {\n if (value) searchParams.append(key, value);\n });\n\n url.search = searchParams.toString();\n\n return url.toString();\n};\n\n/**\n * Checks if the given element is a React element.\n *\n * @param element - The element to check.\n * @returns Whether the element is a React element.\n */\nexport const isReactElement = (\n element: React.ReactNode\n): element is React.ReactElement => {\n return React.isValidElement(element);\n};\n\nexport const checkIsMoMoAgent = () => {\n if (typeof window === \"undefined\") return undefined;\n return !!navigator?.userAgent?.includes(\n process.env.NEXT_PUBLIC_REACT_APP_MOMO_APP_USER_AGENT || \"\"\n );\n};\n\nexport const checkIsMobileAgent = () => UAParser().device.type === \"mobile\";\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport const useIsMobile = () => {\n const [isMobile, setIsMobile] = useState<boolean | undefined>(false);\n useIsomorphicLayoutEffect(() => {\n setIsMobile(checkIsMobileAgent() || checkIsMoMoAgent());\n }, []);\n\n return isMobile;\n};\n","export const FooterItemsDefault = {\n heading: \"Về chúng tôi\",\n lists: [\n {\n title: \"Giới thiệu\",\n url: \"/sieu-ung-dung-momo\",\n newTab: false,\n },\n {\n title: \"An toàn - Bảo mật\",\n url: \"/an-toan-bao-mat\",\n newTab: false,\n },\n {\n title: \"Điều khoản điều lệ\",\n url: \"/dieu-khoan-dieu-le\",\n newTab: false,\n },\n {\n title: \"Chính sách quyền riêng tư\",\n url: \"/chinh-sach-quyen-rieng-tu\",\n newTab: false,\n },\n {\n title: \"Điều khoản liên kết Google trên ứng dụng MoMo\",\n url: \"/google-cloud-policy\",\n newTab: false,\n },\n {\n title: \"Blog\",\n url: \"/blog\",\n newTab: false,\n },\n {\n title: \"Liên hệ\",\n url: \"/lienhe\",\n newTab: false,\n },\n {\n title: \"Hỏi đáp\",\n url: \"/hoi-dap\",\n newTab: false,\n },\n ],\n};\n\nexport const MoMoText = {\n Business: {\n Phome: \"1900636652\",\n Phome_Format: \"1900 636 652 (Phí 1.000đ/phút)\",\n Email: \"merchant.care@momo.vn\",\n },\n Support: {\n Hotline: \"1900545441\",\n Hotline_Format: \"1900 5454 41\",\n Phone_Ext_1: \"02873065555\",\n Phone_Ext_1_Format: \"028.7306.5555\",\n Phone_Ext_2: \"02899995555\",\n Phone_Ext_2_Format: \"028.9999.5555\",\n Email: \"hotro@momo.vn\",\n },\n};\n\nexport const NEXT_PUBLIC_REACT_APP_FRONT_END = \"https://www.momo.vn/\";\n\nexport const SUPPORT = {\n Address:\n \"Lầu 6, Toà nhà Phú Mỹ Hưng, số 8 Hoàng Văn Thái, khu phố 1, Phường Tân Phú, Quận 7, Thành phố Hồ Chí Minh\",\n};\nexport const LIST_LINK = [\n { Name: \"Giới thiệu\", Href: \"/sieu-ung-dung-momo\" },\n { Name: \"An toàn - Bảo mật\", Href: \"/an-toan-bao-mat\" },\n { Name: \"Điều khoản điều lệ\", Href: \"/dieu-khoan-dieu-le\" },\n {\n Name: \"Chính sách quyền riêng tư\",\n Href: \"/chinh-sach-quyen-rieng-tu\",\n },\n {\n Name: \"Điều khoản liên kết Google trên ứng dụng MoMo\",\n Href: \"/google-cloud-policy\",\n },\n { Name: \"Blog\", Href: \"/blog\" },\n { Name: \"Liên hệ\", Href: \"/lienhe\" },\n { Name: \"Hỏi đáp\", Href: \"/hoi-dap\" },\n];\n\nexport const SOCIAL_ITEMS = [\n {\n Name: \"Facebook\",\n Image:\n \"https://homepage.momocdn.net/styles/desktop/images/social/facebook.svg\",\n Link: \"https://www.facebook.com/vimomo\",\n },\n {\n Name: \"Linkedin\",\n Image:\n \"https://homepage.momocdn.net/styles/desktop/images/social/linkedin.svg\",\n Link: \"https://www.linkedin.com/company/momo-mservice/\",\n },\n {\n Name: \"Youtube\",\n Image:\n \"https://homepage.momocdn.net/styles/desktop/images/social/youtube.svg\",\n Link: \"https://www.youtube.com/channel/UCKHHW-qL2JoZqcSNm1jPlqw\",\n },\n];\n\nexport const APP_DOWNLOAD = [\n {\n Name: \"App Store\",\n Image:\n \"https://homepage.momocdn.net/img/momo-upload-api-210724113855-637627235353131497.jpg\",\n Link: \"https://itunes.apple.com/vn/app/id918751511?utm_source=website-momo&utm_medium=download&utm_campaign=momo-1dong\",\n },\n {\n Name: \"Google Play\",\n Image:\n \"https://homepage.momocdn.net/img/momo-upload-api-210724113959-637627235994410679.jpg\",\n Link: \"https://play.google.com/store/apps/details?id=com.mservice.momotransfer&utm_source=website-momo&utm_medium=download&utm_campaign=momo-1dong\",\n },\n];\n\nexport const SERVICES_DEFAULT = {\n heading: \"Dịch vụ nổi bật\",\n lists: [\n {\n title: \"Vé xem phim\",\n url: \"/cinema\",\n image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-230629144722.svg\",\n newTab: false,\n },\n {\n title: \"Bảo hiểm Ô tô\",\n url: \"/bao-hiem-o-to/vat-chat\",\n image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-230629144844.svg\",\n newTab: false,\n },\n {\n title: \"Vé máy bay\",\n url: \"/ve-may-bay\",\n image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-201210145350.svg\",\n newTab: false,\n },\n {\n title: \"Ví nhân ái\",\n url: \"/vi-nhan-ai\",\n image:\n \"https://homepage.momocdn.net/img/momo-upload-api-231214222240-638381893608141712.png\",\n newTab: false,\n },\n {\n title: \"Túi thần tài\",\n url: \"/tui-than-tai\",\n image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-210716153611.svg\",\n newTab: false,\n },\n {\n title: \"Ví trả sau\",\n url: \"/vi-tra-sau\",\n image:\n \"https://homepage.momocdn.net/img/momo-upload-api-230629144414-638236466540028217.png\",\n newTab: false,\n },\n\n {\n title: \"Vay nhanh\",\n url: \"/vay-nhanh\",\n image:\n \"https://homepage.momocdn.net/img/momo-upload-api-230418101312-638174095928506551.png\",\n newTab: false,\n },\n {\n title: \"Trả Góp Apple\",\n url: \"/tra-gop-san-pham-apple\",\n image:\n \"https://homepage.momocdn.net/img/momo-amazone-s3-api-240719154503-638570007030998565.png\",\n newTab: false,\n },\n ],\n};\n\nexport const SERVICES_PAGE = [\n {\n Name: \"Vé xem phim\",\n Href: \"/cinema\",\n Image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-230629144722.svg\",\n },\n {\n Name: \"Bảo hiểm Ô tô\",\n Href: \"/bao-hiem-o-to/vat-chat\",\n Image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-230629144844.svg\",\n },\n {\n Name: \"Vé máy bay\",\n Href: \"/ve-may-bay\",\n Image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-201210145350.svg\",\n },\n {\n Name: \"Khách sạn\",\n Href: \"/khach-san-theo-gio\",\n Image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-210315154805.svg\",\n },\n {\n Name: \"Ví nhân ái\",\n Href: \"/vi-nhan-ai\",\n Image:\n \"https://homepage.momocdn.net/img/momo-upload-api-231214222240-638381893608141712.png\",\n },\n {\n Name: \"Vay nhanh\",\n Href: \"/vay-nhanh\",\n Image:\n \"https://homepage.momocdn.net/img/momo-upload-api-230418101312-638174095928506551.png\",\n },\n];\n\nexport const MOMO_TEXT = {\n Business: {\n Phome: \"1900636652\",\n Phome_Format: \"1900 636 652 (Phí 1.000đ/phút)\",\n Email: \"merchant.care@momo.vn\",\n },\n Support: {\n Hotline: \"1900545441\",\n Hotline_Format: \"1900 5454 41\",\n Phone_Ext_1: \"02873065555\",\n Phone_Ext_1_Format: \"028.7306.5555\",\n Phone_Ext_2: \"02899995555\",\n Phone_Ext_2_Format: \"028.9999.5555\",\n Phone_Ext_3: \"02855555555\",\n Phone_Ext_3_Format: \"028.5555.5555\",\n Email: \"hotro@momo.vn\",\n },\n};\n\nexport const FROM_TYPE_FOOTER_MENU = \"nav_footer\";","import React, { useState } from \"react\";\nimport { checkIsMoMoAgent, cn, useIsMobile } from \"../../helpers/utils\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { DialogQr, DialogQrProps } from \"../DialogQr\";\n\ninterface ActionButtonProps extends ButtonProps {\n /**\n * Action to be performed when the button is clicked.\n */\n action?: string | (() => void) | undefined;\n /**\n * Opens a new tab when href link.\n */\n newTab?: boolean;\n /**\n * Offset top when use button scroll to element.\n */\n offset?: number;\n /**\n * Props to pass to the DialogQr component. If this prop is provided, the button will open a dialog with a QR code. qrLink in DialogQrProps is required.\n */\n dialogQrProps?: Partial<DialogQrProps>;\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * The content for button.\n */\n children?: React.ReactNode;\n}\n\nconst ActionButton = ({\n action,\n newTab,\n offset,\n dialogQrProps,\n className,\n children,\n ...props\n}: ActionButtonProps) => {\n const [isOpenQR, setOpenQR] = useState(false);\n const isMobileDevice = useIsMobile();\n const isMoMoApp =\n checkIsMoMoAgent() ||\n (typeof window !== \"undefined\" &&\n window.location.search.includes(\"view=app\"));\n \n const hasQrButton = Boolean(dialogQrProps?.qrLink);\n\n const handleGetLink = () => {\n const basicLink = hasQrButton ? dialogQrProps?.qrLink : action;\n return typeof basicLink === \"string\" ? basicLink.trim() : \"\";\n };\n\n const handleAction = () => {\n const modifiedLink = handleGetLink();\n \n if (!modifiedLink && typeof action !== \"function\") return;\n\n if (typeof action === \"function\") {\n action();\n } else {\n window.open(\n /^http|^momo:/.test(modifiedLink)\n ? modifiedLink\n : `${process.env.NEXT_PUBLIC_REACT_APP_BASE_PATH}${modifiedLink}`,\n newTab ? \"_blank\" : \"_self\"\n );\n }\n };\n\n const scrollToElement = (selector: string, offset: number = 0) => {\n const element = document.querySelector(selector);\n if (!element) return;\n\n const elementPosition = element.getBoundingClientRect().top + window.scrollY;\n const offsetPosition = elementPosition - offset;\n\n window.scrollTo({\n top: offsetPosition,\n behavior: \"smooth\",\n });\n };\n\n const handleScrollOrAction = () => {\n if (typeof action === \"string\" && action.startsWith(\"#\")) {\n scrollToElement(action, offset);\n } else {\n handleAction();\n }\n };\n\n const renderButtonWithDialogQr = () => (\n <>\n <Button\n {...props}\n className={className}\n onClick={() => setOpenQR(true)}\n data-name=\"button-action-with-qr\"\n >\n {children}\n </Button>\n <DialogQr\n {...dialogQrProps}\n open={isOpenQR}\n onOpenChange={() => setOpenQR(false)}\n qrLink={dialogQrProps?.qrLink || \"\"}\n />\n </>\n );\n\n const renderButtonWithoutQr = () => (\n <Button\n {...props}\n onClick={handleScrollOrAction}\n className={cn(\"cursor-pointer\", className)}\n data-name=\"button-action-without-qr\"\n rel=\"noreferrer\"\n >\n {children}\n </Button>\n );\n\n return hasQrButton ? (\n isMobileDevice || isMoMoApp ? (\n dialogQrProps?.isQrForAll ? renderButtonWithDialogQr() : (\n <Button\n {...props}\n className={className}\n onClick={handleAction}\n data-name=\"button-action-with-qr\"\n >\n {children}\n </Button>\n )\n ) : (\n renderButtonWithDialogQr()\n )\n ) : (\n renderButtonWithoutQr()\n );\n};\n\nexport { ActionButton };","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../helpers/utils\";\nimport SpinerIcon from \"../../foundation/SpinerIcon\";\n\n// /dwd\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-lg text-sm font-bold transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed border border-transparent\",\n {\n variants: {\n /**\n * Determines style variation of Button component.\n */\n variant: {\n primary:\n \"bg-pink-500 text-white hover:bg-pink-600 disabled:bg-pink-300\",\n secondary:\n \"bg-white text-gray-900 hover:bg-gray-100 disabled:text-gray-400 disabled:bg-white border-gray-300\",\n outline:\n \"border-pink-500 text-pink-500 bg-white hover:bg-pink-50 disabled:bg-white disabled:border-pink-300 disabled:text-pink-300\",\n tonal:\n \"bg-pink-100 text-pink-500 hover:bg-pink-200 disabled:bg-gray-200 disabled:text-gray-400\",\n danger: \"bg-red-500 text-white hover:bg-red-600 disabled:bg-red-300\",\n transparent: \"text-gray-900 bg-transparent hover:bg-gray-100 disabled:text-gray-400 disabled:bg-transparent\",\n },\n /**\n * Determines size variation of Button component.\n */\n size: {\n default: \"text-sm h-10 px-4\",\n sm: \"h-8 px-3 text-sm rounded-md\",\n lg: \"h-12 px-4 text-base\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"default\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n */\n asChild?: boolean;\n /**\n * Adds loading indicator icon and disables interactions\n */\n isLoading?: boolean;\n /**\n * Disabled interaction and applies disabled styles\n */\n isDisabled?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n size = \"default\",\n asChild = false,\n isLoading = false,\n isDisabled = false,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const buttonClassName = cn(buttonVariants({ variant, size, className }), {\n \"cursor-wait\": isLoading,\n });\n const loaderSize =\n size === \"default\" || size === \"sm\" ? \"w-4 h-4\" : \"w-5 h-5\";\n return (\n <>\n {asChild ? (\n <Comp\n className={buttonClassName}\n type=\"button\"\n disabled={isDisabled}\n ref={ref}\n {...props}\n >\n {props.children}\n </Comp>\n ) : (\n <Comp\n className={buttonClassName}\n type=\"button\"\n disabled={isDisabled}\n ref={ref}\n {...props}\n >\n {isLoading && (\n <SpinerIcon className={`${loaderSize} animate-spin-loading mr-2`} />\n )}\n {props.children}\n </Comp>\n )}\n </>\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React from \"react\";\n\ntype SpinerIconProps = {\n className?: string;\n};\n\nconst SpinerIcon: React.FC<SpinerIconProps> = ({ className }) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n className={`${className}`}\n >\n <path\n opacity=\"0.9\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15 9H19C19.55 9 20 9.45 20 10C20 10.55 19.55 11 19 11H15C14.45 11 14 10.55 14 10C14 9.45 14.45 9 15 9Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.2\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.8301 11.634L18.2942 13.634C18.7706 13.909 18.9353 14.5237 18.6603 15C18.3853 15.4763 17.7706 15.641 17.2942 15.366L13.8301 13.366C13.3538 13.091 13.1891 12.4763 13.4641 12C13.7391 11.5237 14.3538 11.359 14.8301 11.634Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.25\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.366 13.8301L15.366 17.2942C15.641 17.7706 15.4763 18.3853 14.9999 18.6603C14.5236 18.9353 13.9089 18.7706 13.6339 18.2942L11.6339 14.8301C11.3589 14.3538 11.5236 13.7391 11.9999 13.4641C12.4763 13.1891 13.091 13.3538 13.366 13.8301Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.3\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11 15V19C11 19.55 10.55 20 10 20C9.45 20 9 19.55 9 19V15C9 14.45 9.45 14 10 14C10.55 14 11 14.45 11 15Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.35\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.36597 14.8301L6.36597 18.2942C6.09097 18.7706 5.47626 18.9353 4.99994 18.6603C4.52363 18.3853 4.35892 17.7706 4.63392 17.2942L6.63392 13.8301C6.90892 13.3538 7.52363 13.1891 7.99994 13.4641C8.47626 13.7391 8.64097 14.3538 8.36597 14.8301Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.4\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.16986 13.366L2.70576 15.366C2.22945 15.641 1.61474 15.4763 1.33974 15C1.06474 14.5237 1.22945 13.909 1.70576 13.634L5.16986 11.634C5.64618 11.359 6.26089 11.5237 6.53589 12C6.81089 12.4763 6.64618 13.091 6.16986 13.366Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.45\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5 11H1C0.45 11 0 10.55 0 10C0 9.45 0.45 9 1 9H5C5.55 9 6 9.45 6 10C6 10.55 5.55 11 5 11Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.5\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.16986 8.36603L1.70576 6.36603C1.22945 6.09103 1.06474 5.47632 1.33974 5C1.61474 4.52369 2.22945 4.35898 2.70576 4.63398L6.16986 6.63398C6.64618 6.90898 6.81089 7.52369 6.53589 8C6.26089 8.47632 5.64618 8.64103 5.16986 8.36603Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.55\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.63403 6.16986L4.63403 2.70576C4.35903 2.22945 4.52374 1.61474 5.00006 1.33974C5.47637 1.06474 6.09108 1.22945 6.36608 1.70576L8.36608 5.16986C8.64108 5.64618 8.47637 6.26089 8.00006 6.53589C7.52374 6.81089 6.90903 6.64618 6.63403 6.16986Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.65\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9 5L9 1C9 0.45 9.45 0 10 0C10.55 0 11 0.45 11 1V5C11 5.55 10.55 6 10 6C9.45 6 9 5.55 9 5Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.75\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.634 5.16986L13.634 1.70576C13.909 1.22945 14.5237 1.06474 15.0001 1.33974C15.4764 1.61474 15.6411 2.22945 15.3661 2.70576L13.3661 6.16986C13.0911 6.64618 12.4764 6.81089 12.0001 6.53589C11.5237 6.26089 11.359 5.64618 11.634 5.16986Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.85\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.8301 6.63397L17.2942 4.63397C17.7706 4.35897 18.3853 4.52368 18.6603 5C18.9353 5.47631 18.7706 6.09102 18.2942 6.36602L14.8301 8.36602C14.3538 8.64102 13.7391 8.47631 13.4641 8C13.1891 7.52368 13.3538 6.90897 13.8301 6.63397Z\"\n fill=\"currentColor\"\n />\n </svg>\n\n );\n};\n\nexport default SpinerIcon;\n","import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cn } from \"../../helpers/utils\";\n\nimport { XMarkIcon } from \"@heroicons/react/16/solid\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/60 !duration-300 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n\n /**\n * Determines whether the close button should be positioned on the right side.\n */\n positionRightCloseBtn?: boolean;\n /**\n * Size of the modal window\n */\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n /**\n * Position of the modal window\n */\n position?: \"center\" | \"left\" | \"right\" | \"bottom\";\n /**\n * Determines whether the close button hide or not\n */\n hideCloseBtn?: boolean;\n /**\n * Height of the modal window\n */\n height?: \"auto\" | \"small\" | \"large\" | \"full\";\n /**\n * Open full screen dialog in mobile\n */\n isFull?: boolean;\n }\n>(\n (\n {\n className,\n positionRightCloseBtn,\n hideCloseBtn = false,\n size = \"md\",\n position = \"center\",\n height = \"auto\",\n isFull = false,\n children,\n ...props\n },\n ref,\n ) => {\n const classNames = {\n base: \"fixed z-50 flex bg-white shadow-lg sm:rounded-xl bg-white text-gray-900 w-full max-w-[calc(-64px_+_100vw)] max-h-[calc(-64px_+_100vh)] flex-col\",\n center:\n \"left-[50%] top-[50%] translate-x-[-50%] translate-y-[-50%] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] rounded-xl\",\n bottom:\n \"!duration-300 bottom-0 sm:bottom-1/2 left-1/2 rounded-t-xl sm:translate-y-1/2 data-[state=closed]:animate-out -translate-x-1/2 data-[state=open]:animate-in data-[state=open]:slide-in-from-left-1/2 ease-in-out data-[state=open]:slide-in-from-bottom-2/3 data-[state=closed]:slide-out-to-bottom-2/3 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 max-w-full max-h-[calc(-32px_+_100vh)] sm:max-h-[calc(-64px_+_100vh)] sm:max-w-[calc(-64px_+_100vw)]\",\n left: \"!duration-300 max-h-screen !h-full rounded-r-xl sm:rounded-l-none top-0 data-[state=open]:animate-in data-[state=open]:slide-in-from-left data-[state=closed]:animate-out data-[state=closed]:slide-out-to-left ease-in-out\",\n right:\n \"!duration-300 !h-full rounded-l-xl sm:rounded-r-none max-h-screen top-0 right-0 data-[state=open]:animate-in data-[state=open]:slide-in-from-right data-[state=closed]:animate-out data-[state=closed]:slide-out-to-right ease-in-out\",\n };\n\n const sizeClassNames = {\n sm: \"w-80 sm:w-80\",\n md: \"w-[512px] sm:w-[512px]\",\n lg: \"w-[672px] sm:w-[672px]\",\n xl: \"w-[1024px] sm:-[1024px]\",\n };\n\n const heightClassNames = {\n auto: \"h-auto sm:h-auto\",\n small: \"h-[480px] sm:h-[480px]\",\n large: \"h-[640px] sm:h-[640px]\",\n full: \"h-full\",\n };\n\n const classNamesDialogContent = [\n classNames.base,\n classNames[position],\n sizeClassNames[size],\n heightClassNames[height],\n isFull &&\n \"h-full max-h-screen max-w-full w-full rounded-none sm:rounded-xl sm:max-h-[calc(-64px_+_100vh)]\",\n className,\n ];\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(...classNamesDialogContent)}\n {...props}\n >\n {children}\n {!hideCloseBtn && <DialogPrimitive.Close\n className={cn(\n \"absolute md:top-4 top-2 focus:outline-none focus:ring-0 disabled:pointer-events-none data-[state=open]:bg-gray-100 data-[state=open]:text-gray-700 text-gray-900 w-8 h-8 flex justify-center items-center rounded-full before:opacity-0 hover:before:opacity-100 before:transition-opacity before:z-[-1] before:content-[''] before:absolute before:inset-0 before:rounded-full before:select-none before:left-0 before:top-0 before:bg-gray-200 left-3 md:left-auto md:right-4\",\n positionRightCloseBtn && \"left-auto right-3 md:right-4\",\n )}\n title=\"Đóng\"\n >\n <XMarkIcon className=\"h-5 w-5 text-gray-700\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>}\n\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n },\n);\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"dialog-header py-2 md:py-4 h-12 md:h-16 px-10 md:px-12 items-center justify-center flex border-b border-gray-200 w-full shrink-0\",\n className,\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogBody = ({\n className,\n isCondensed = false,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n /**\n * Determines whether the dialog body should be condensed.\n */\n isCondensed?: boolean;\n}) => (\n <div\n className={cn(\n \"dialog-body p-6 flex-1 overflow-y-auto\",\n isCondensed && \"p-5\",\n className,\n )}\n {...props}\n />\n);\nDialogBody.displayName = \"DialogBody\";\n\nconst DialogFooter = ({\n className,\n isDivider = true,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { isDivider?: boolean }) => (\n <div\n className={cn(\n \"dialog-footer flex sm:flex-row justify-center [&>*]:basis-1/2 [&>*]:sm:basis-auto sm:justify-end space-x-2 px-6 pb-4 shrink-0\",\n isDivider && \"border-gray-200 border-t py-4\",\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"text-base font-semibold line-clamp-1 max-w-full\", className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-gray-700\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogBody,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import { type DialogProps } from \"@radix-ui/react-dialog\";\nimport { Dialog, DialogContent, DialogBody } from \"../Dialog\";\nimport { cn } from \"../../helpers/utils\";\nimport {QRCodeSVG} from 'qrcode.react';\n/**\n * Props for the DialogQr component.\n */\nexport interface DialogQrProps extends DialogProps {\n /**\n * The title of the dialog QR.\n */\n title?: string;\n\n /**\n * The short title of the step 3 in dialog QR.\n */\n shortTitle?: string;\n\n /**\n * The image URL for the QR code.\n */\n qrImage?: string;\n\n /**\n * The link associated with the QR code.\n */\n qrLink?: string;\n\n /**\n * The logo image URL for the QR code.\n */\n logoQr?: string;\n\n /**\n * Indicates whether the QR code is all in one.\n */\n isQrForAll?: boolean;\n className?: string;\n}\n\nconst QRCodeScan = ({ img = \"\", children, isQrForAll }) => {\n return (\n <>\n <div className=\"qrcode__scan__container\">\n <div className=\"qrcode__scan\">\n <div className=\"qrcode__gradient\">\n <img\n alt=\"step 1\"\n className=\"img-fluid\"\n src=\"https://homepage.momocdn.net/jk/momo2020/img/qrcode/qrcode-gradient.png\"\n />\n </div>\n <div className=\"qrcode__border\">\n <img\n alt=\"step 2\"\n className=\"img-fluid\"\n src=\"https://homepage.momocdn.net/jk/momo2020/img/qrcode/border-qrcode.svg\"\n />\n </div>\n\n <div className=\"qrcode__image p-4\">\n {img ? (\n <img\n alt=\"step 3\"\n className=\"img-fluid d-block mx-auto\"\n src={img}\n loading=\"lazy\"\n />\n ) : (\n children\n )}\n </div>\n </div>\n </div>\n <div className=\"mt-4 text-sm text-white\">\n {isQrForAll ? (\n <>\n <img\n src=\"https://homepage.momocdn.net/img/momo-upload-api-231211171009-638379114093056419.png\"\n width={255}\n height={32}\n className=\"mx-auto\"\n alt=\"QR all\"\n />\n\n <div className=\"mt-3\">Nhận tiền từ mọi Ví Điện Tử và Ngân Hàng</div>\n </>\n ) : (\n <>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"mr-1 inline h-6 w-6\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 4v1m6 11h2m-6 0h-2v4m0-11v3m0 0h.01M12 12h4.01M16 20h4M4 12h4m12 0h.01M5 8h2a1 1 0 001-1V5a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1zm12 0h2a1 1 0 001-1V5a1 1 0 00-1-1h-2a1 1 0 00-1 1v2a1 1 0 001 1zM5 20h2a1 1 0 001-1v-2a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1z\"\n />\n </svg>\n Sử dụng App MoMo hoặc\n <br />\n ứng dụng Camera hỗ trợ QR code để quét mã.\n </>\n )}\n </div>\n <style>\n {`\n .qrcode__scan__container {\n padding: 15px;\n background-color: white;\n width: 280px;\n height: 280px;\n border-radius: 20px;\n border-radius: 15px;\n margin: 0 auto;\n }\n \n .qrcode__image {\n width: 100%;\n }\n \n .qrcode__image img {\n width: 100%;\n }\n \n .qrcode__scan {\n width: 245px;\n height: 245px;\n margin: 0 auto;\n overflow: hidden;\n background-color: white;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n \n .qrcode__border {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: 5;\n opacity: 0.9;\n pointer-events: none;\n }\n \n .qrcode__gradient {\n position: absolute;\n opacity: 0.6;\n width: 98%;\n height: 98%;\n top: 1%;\n left: 1%;\n z-index: 6;\n // pointer-events: none;\n transform: translate3d(0, -110%, 0);\n animation: QRCodeScan 3s infinite cubic-bezier(0.45, 0.03, 0.81, 0.63);\n \n backface-visibility: hidden;\n }\n \n @keyframes QRCodeScan {\n 0% {\n transform: translate3d(0, -110%, 0);\n }\n \n 90% {\n transform: translate3d(0, 30%, 0);\n }\n 100% {\n transform: translate3d(0, 30%, 0);\n }\n }\n `}\n </style>\n </>\n );\n};\n\nexport const DialogQr = ({\n className,\n children,\n title,\n shortTitle,\n qrImage,\n qrLink,\n logoQr,\n isQrForAll = false,\n ...props\n}: DialogQrProps) => {\n return (\n <Dialog {...props}>\n <DialogContent\n className={cn(\n \"md:max-w-2xl lg:max-w-3xl h-auto md:max-h-screen max-h-screen overflow-hidden [&>button>svg]:text-white border-0\",\n className,\n )}\n size=\"xl\"\n positionRightCloseBtn\n >\n <DialogBody className=\"p-0\">\n <div className=\"flex flex-row flex-wrap\">\n <div className=\"w-full flex-none md:w-5/12 hidden sm:block\">\n {children || (\n <div className=\"px-5 text-sm py-8 grid grid-cols-1 gap-y-6\">\n <div className=\"flex flex-nowrap items-center\">\n <div className=\"flex-none\">\n <img\n className=\"w-20\"\n loading=\"lazy\"\n src=\"https://homepage.momocdn.net/images/s/momo-upload-api-200917091602-637359309621891617.png\"\n alt=\"Step 1\"\n />\n </div>\n <div className=\"flex-1 pl-4\">\n <div className=\"step font-semibold text-gray-800 \">\n Bước 1 :\n </div>\n <div className=\"mt-1 text-gray-500 \">\n {isQrForAll\n ? \"Mở app MoMo hoặc ứng dụng ngân hàng/ví điện tử chấp nhận mã vạch từ QR Đa Năng\"\n : \"Mở ứng dụng camera mặc định hoặc ứng dụng hỗ trợ QR code của bạn\"}\n </div>\n </div>\n </div>\n <div className=\"flex flex-nowrap items-center\">\n <div className=\"flex-none\">\n <img\n className=\"w-20 \"\n loading=\"lazy\"\n src=\"https://homepage.momocdn.net/images/s/momo-upload-api-200917091443-637359308837905996.png\"\n alt=\"Step 2\"\n />\n </div>\n <div className=\"flex-1 pl-4\">\n <div className=\"step font-semibold text-gray-800 \">\n Bước 2 :\n </div>\n <div className=\"mt-1 text-gray-500 \">\n Quét mã QR Code theo hình bên phải\n </div>\n </div>\n </div>\n <div className=\"flex flex-nowrap items-center\">\n <div className=\"flex-none\">\n <img\n className=\"w-20 \"\n loading=\"lazy\"\n src=\"https://homepage.momocdn.net/images/s/momo-upload-api-200917090146-637359301062519803.png\"\n alt=\"Step 3\"\n />\n </div>\n <div className=\"flex-1 pl-4\">\n <div className=\"step font-semibold text-gray-800 \">\n Bước 3 :\n </div>\n <div className=\"mt-1 text-gray-500 \">\n Bấm vào thông báo hiển thị để tải ứng dụng hoặc{\" \"}\n {shortTitle || \"Truy cập ngay\"}\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n <div\n className=\"flex w-full items-center justify-center md:w-7/12 h-auto\"\n style={{\n background:\n \"url(https://homepage.momocdn.net/jk/momo2020/img/intro/qrcode-pattern.png) 10px 10px no-repeat,linear-gradient(to top,#c1177c,#e11b90)\",\n }}\n >\n <div className=\"px-5 py-10 text-center\">\n {title && (\n <h4 className=\"mb-5 text-base font-semibold text-white\">\n {title}\n </h4>\n )}\n <div className=\"relative\">\n {isQrForAll && (\n <div className=\"absolute -top-2 left-1/2 z-[5] -translate-x-1/2\">\n <img\n src=\"https://homepage.momocdn.net/fileuploads/svg/momo-file-231211170324.svg\"\n alt=\"Title QR all\"\n />\n </div>\n )}\n <QRCodeScan img={qrImage} isQrForAll={isQrForAll}>\n {qrLink && (\n <QRCodeSVG\n value={qrLink}\n size={215}\n imageSettings={{\n src: `${\n logoQr ||\n \"https://homepage.momocdn.net/pwa/images/logoMomox50.png\"\n }`,\n // x: null,\n // y: null,\n height: 50,\n width: 50,\n excavate: true,\n }}\n level=\"H\"\n />\n )}\n </QRCodeScan>\n </div>\n </div>\n </div>\n </div>\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n};\n","import * as React from \"react\"\nimport { ChevronRightIcon, DotsHorizontalIcon } from \"@radix-ui/react-icons\"\nimport { Slot } from \"@radix-ui/react-slot\"\n \nimport { cn } from \"../../helpers/utils\";\n \nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\"> & {\n separator?: React.ReactNode\n }\n>(({ className,...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" className={cn(\"\", className)} {...props} />)\nBreadcrumb.displayName = \"Breadcrumb\"\n \nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.ComponentPropsWithoutRef<\"ol\">\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex items-center gap-2 break-words text-sm overflow-x-auto snap-mandatory snap-x [&::-webkit-scrollbar]:hidden\",\n className\n )}\n {...props}\n />\n))\nBreadcrumbList.displayName = \"BreadcrumbList\"\n \nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"shrink-0 text-gray-900 hover:text-pink-500\", className)}\n {...props}\n />\n))\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\n \nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<\"a\"> & {\n asChild?: boolean\n }\n>(({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n \n return (\n <Comp\n ref={ref}\n className={cn(\"transition-colors hover:text-foreground\", className)}\n {...props}\n />\n )\n})\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\n \nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-sm text-gray-500\", className)}\n {...props}\n />\n))\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\n \nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"text-gray-900\", className)}\n {...props}\n >\n {children ?? <ChevronRightIcon className=\"w-2 h-2\" />}\n </li>\n)\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\n \nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex h-5 w-5 items-center justify-center\", className)}\n {...props}\n >\n <DotsHorizontalIcon className=\"w-4 h-4 text-gray-900\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = \"BreadcrumbElipssis\"\n \nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}","import * as React from \"react\";\nimport { buttonVariants } from \"../Button\";\nimport { cn } from \"../../helpers/utils\";\nimport { enUS, vi } from \"date-fns/locale\";\nimport { DayPicker, Formatters } from \"react-day-picker\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport lunisolar from \"lunisolar\";\nimport { Checkbox } from \"../Checkbox\";\n\n\ntype DayContentProps = {\n date: Date;\n cusContent?: (date: Date) => void;\n};\n\nconst CusDayContent: React.FC<DayContentProps> = ({\n date,\n cusContent,\n}) => {\n let lunarDate: { day: number; month: number } | null = null;\n lunarDate = lunisolar(date).lunar;\n return (\n <>\n {cusContent ? cusContent(date) : date.getDate()}\n { lunarDate && (\n <span className=\"text-[8px] absolute top-1 right-0.5 leading-none text-gray-700 group-aria-selected:text-white group-aria-selected/mid:!text-gray-700 luna-date hidden group-[.show-luna]:block \">\n {lunarDate.day}\n </span>\n )}\n </>\n );\n};\n\nconst customFormatters: Partial<Formatters> = {\n formatCaption: (month) =>\n `Tháng ${month.getMonth() + 1}/${month.getFullYear()}`,\n\n formatWeekdayName: (weekday) => {\n const dayIndex = weekday.getDay();\n const weekdays = [\"CN\", \"T2\", \"T3\", \"T4\", \"T5\", \"T6\", \"T7\"];\n return weekdays[dayIndex];\n },\n};\n\nfunction CheckboxLunaDate({\n isShow,\n setIsShow,\n lang\n}: {\n isShow: boolean;\n setIsShow: React.Dispatch<React.SetStateAction<boolean>>;\n lang: 'vi' | 'en'; \n}) {\n const uniqueId = React.useId();\n return (\n <div className=\"w-full p-3 pt-0\">\n <div className=\"flex items-center space-x-2 border-t border-gray-100 pt-3 cursor-pointer\">\n <Checkbox\n checked={isShow}\n id={`check-show-luna-${uniqueId}`}\n onCheckedChange={(checked) => {\n if (typeof checked === \"boolean\") {\n setIsShow(checked);\n }\n }}\n />\n <label\n htmlFor={`check-show-luna-${uniqueId}`}\n className=\"text-sm text-gray-900 peer-disabled:text-gray-400 leading-none peer-disabled:cursor-default cursor-pointer\"\n >\n {lang === \"vi\" ? \"Hiện ngày âm lịch\" : \"Show lunar date\" }\n </label>\n </div>\n </div>\n );\n}\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker> & {\n /**\n * Enable show luna date in calendar cell\n */\n enableLunaDate?: boolean;\n /**\n * A function custom content for day cell.\n */\n cusContentDay?: (date: Date) => void;\n /**\n * Language for calendar support vi or en. Default is vi.\n */\n lang?: 'vi' | 'en';\n};\n\nconst isWeekend = (date: Date) => date.getDay() === 0 || date.getDay() === 6;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = false,\n enableLunaDate = false,\n lang = \"vi\",\n cusContentDay,\n ...props\n}: CalendarProps) {\n const [showLunaDate, setShowLunaDate] = React.useState(true);\n\n return (\n <DayPicker\n locale={lang === \"vi\" ? vi : enUS} \n showOutsideDays={showOutsideDays}\n className={cn(\n \"border border-gray-200 rounded-b-md b bg-white shadow-md w-fit\",\n className\n )}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-y-0\",\n month: \"p-3 pt-0 w-full\", \n caption: \"flex justify-center p-3 bg-blue-50 relative items-center -mx-3 mb-3\",\n caption_label: \"text-sm font-medium text-gray-900\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(\n buttonVariants({ variant: \"transparent\" }),\n \"h-7 w-7 p-0 text-gray-900 hover:bg-transparent hover:opacity-70\"\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse\",\n head_row: \"flex space-x-0.5\",\n head_cell: cn(\"font-medium rounded-md w-11 text-xs text-gray-500 [&:nth-child(7)]:text-red-600\", lang === \"vi\" ? \"[&:nth-child(6)]:text-red-600\" : \"[&:nth-child(1)]:text-red-600\"), \n row: \"flex w-full mt-0.5 space-x-0.5\",\n cell: \"h-11 w-11 text-center text-sm p-0 relative\",\n day: cn(\n buttonVariants({ variant: \"transparent\" }),\n \"h-11 w-11 text-center text-sm p-0 aria-selected:opacity-100 aria-selected:bg-pink-500 aria-selected:text-white [&.day-range-end.day-range-start]:rounded-md focus-within:relative focus-within:z-20 font-semibold relative group\",enableLunaDate && showLunaDate && \"show-luna\"\n ),\n day_range_end: \"day-range-end [&.day-range-end]:rounded-l-none\",\n day_range_start: \"day-range-start [&.day-range-start]:rounded-r-none\",\n day_today: \"day-today [&:not([aria-selected])]:text-pink-500 [&:not([aria-selected])]:border-gray-200\",\n day_outside:\n \"day-outside opacity-50 aria-selected:bg-accent/50 aria-selected:opacity-30\",\n day_disabled: \"opacity-50\",\n day_range_middle: \"!text-gray-900 !bg-pink-50 !rounded-none group/mid\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n modifiers={{\n weekend: isWeekend,\n }}\n modifiersClassNames={{\n weekend: \"text-red-600\",\n }}\n components={{\n IconLeft: () => <ChevronLeft className=\"h-6 w-6\" />,\n IconRight: () => <ChevronRight className=\"h-6 w-6\" />,\n DayContent: (dayProps) => {\n return (\n <CusDayContent\n date={dayProps.date}\n cusContent={cusContentDay}\n />\n );\n },\n Months: ({ children }) => (\n <div className=\"w-full\">\n <div\n className={cn(\n \"flex flex-col sm:flex-row months-wrapper\"\n )}\n >\n {children}\n </div>\n {enableLunaDate && (\n <CheckboxLunaDate\n isShow={showLunaDate}\n setIsShow={setShowLunaDate}\n lang={lang}\n />\n )}\n </div>\n ),\n }}\n formatters={lang === \"vi\" ? customFormatters : {} }\n {...props}\n />\n );\n}\n\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"@heroicons/react/16/solid\";\n\nimport { cn } from \"../../helpers/utils\";\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded border-2 disabled:bg-gray-300 border-gray-300 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-default disabled:bg-gray-100 data-[state=checked]:border-none disabled:data-[state=checked]:bg-gray-400 disabled:data-[state=checked]:text-gray-100 data-[state=checked]:bg-pink-500 data-[state=checked]:text-white\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../../helpers/utils\";\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border border-gray-200 bg-white p-4 sm:p-5 text-gray-900 shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent }\n","import { PopoverProps } from \"@radix-ui/react-popover\";\nimport { Popover, PopoverTrigger, PopoverContent } from \"../Popover\";\nimport { Calendar, CalendarProps } from \"../Calendar\";\nimport { format } from \"date-fns\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { Calendar as CalendarIcon } from \"lucide-react\";\nimport { cn } from \"../../helpers/utils\";\nimport { QuestionMarkCircleIcon, XCircleIcon } from \"@heroicons/react/16/solid\";\n\nexport type DatePickerProps = {\n /**\n * Label for the DatePicker component\n */\n label?: string;\n /**\n * Placeholder for the DatePicker component\n */\n placeholder?: string;\n /**\n * Size of the DatePicker component\n */\n size?: 1 | 2;\n /**\n * Error state of the DatePicker component\n */\n isError?: boolean;\n /**\n * disabled state of the DatePicker component\n */\n disabled?: boolean;\n /**\n * Message to display below the DatePicker\n */\n message?: string;\n /**\n * Format that is used to display date in the input, It is based on (Unicode Technical Standart #35)[https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table]\n */\n dateFormat?: string;\n /**\n * Props to pass to the Button component\n */\n buttonProps?: Partial<ButtonProps>;\n /**\n * Props to pass to the Popover component\n */\n popoverProps?: Partial<PopoverProps>;\n /**\n * Props to pass to the Calendar component\n */\n calendarProps?: Partial<CalendarProps>;\n};\n\n\nconst DatePicker = ({label, placeholder = \"Select a value\", size = 1, message, isError, disabled, dateFormat = \"dd/MM/yyyy\", buttonProps, popoverProps, calendarProps}: DatePickerProps) => {\n\n const dateSelected = calendarProps?.selected || null;\n return (\n <div>\n <Popover {...popoverProps}>\n <PopoverTrigger asChild>\n <Button\n variant={\"secondary\"}\n className={cn(\n \"w-full justify-between text-left text-sm font-normal h-11 text-gray-900 overflow-visible hover:ring-1 focus:ring-1 hover:ring-gray-400 focus:ring-gray-400 [&[data-state=open]]:border-pink-500 [&[data-state=open]]:ring-pink-500 [&[data-state=open]]:ring-1 relative disabled:bg-gray-50 disabled:border-gray-200 disabled:pointer-events-none disabled:text-gray-500\",\n size === 2 && \"h-12 text-base\",\n (!dateSelected ||\n (!(dateSelected instanceof Date) &&\n typeof dateSelected === \"object\" &&\n (!(\"from\" in dateSelected) || !dateSelected.from))) &&\n \"text-gray-500\",\n isError && \"border-red-500 ring-red-500 ring-1\"\n )}\n disabled={disabled} \n {...buttonProps}\n >\n <span className=\"line-clamp-1 flex-1\">\n {dateSelected instanceof Date ? (\n format(dateSelected, dateFormat)\n ) : dateSelected &&\n typeof dateSelected === \"object\" &&\n \"from\" in dateSelected &&\n \"to\" in dateSelected ? (\n <>\n {dateSelected.from ? (\n dateSelected.to ? (\n <>\n {format(dateSelected.from, dateFormat)} -{\" \"}\n {format(dateSelected.to, dateFormat)}\n </>\n ) : (\n format(dateSelected.from, dateFormat)\n )\n ) : (\n placeholder\n )}\n </>\n ) : (\n placeholder\n )}\n </span>\n\n {label && (\n <span\n className={cn(\n \"absolute bg-white -top-2 px-1.5 left-2 text-xs text-gray-500\",\n size === 2 && \" -top-2.5 text-sm\",\n isError && \"text-red-500\"\n )}\n >\n {label}\n </span>\n )}\n <CalendarIcon className=\"ml-2 h-4 w-4 text-gray-500 flex-none\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto !p-0 border-none\">\n <Calendar {...calendarProps} />\n </PopoverContent>\n </Popover>\n {message && (\n <div className=\"mobase-text-input-message flex space-x-1 items-center mt-0.5\">\n {isError ? (\n <XCircleIcon width={16} height={16} className=\"text-red-500\" />\n ) : (\n <QuestionMarkCircleIcon\n width={16}\n height={16}\n className=\"text-gray-500\"\n />\n )}\n <span\n className={cn(\n isError ? \"text-red-500\" : \"text-gray-500\",\n size === 2 ? \"text-sm\" : \"text-xs\"\n )}\n >\n {message}\n </span>\n </div>\n )}\n </div>\n );\n};\n\nexport { DatePicker };\n","import * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\n\nimport { cn } from \"../../helpers/utils\";\nimport { buttonVariants } from \"../Button\";\n\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\n\nimport type * as Radix from \"@radix-ui/react-primitive\";\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialog\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogProps = Radix.ComponentPropsWithoutRef<typeof DialogPrimitive.Root>;\ninterface AlertDialogProps extends Omit<DialogProps, \"modal\"> {}\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogTrigger\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogTriggerProps = Radix.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Trigger\n>;\ninterface AlertDialogTriggerProps extends DialogTriggerProps {}\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogPortal\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogPortalProps = Radix.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Portal\n>;\ninterface AlertDialogPortalProps extends DialogPortalProps {}\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogOverlay\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogOverlayProps = Radix.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Overlay\n>;\ninterface AlertDialogOverlayProps extends DialogOverlayProps {}\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogAction\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogCloseProps = Radix.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Close\n>;\ninterface AlertDialogActionProps extends DialogCloseProps {}\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogCancel\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AlertDialogCancelProps extends DialogCloseProps {}\n\n/* ---------------------------------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogTitle\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogTitleProps = Radix.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Title\n>;\ninterface AlertDialogTitleProps extends DialogTitleProps {}\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogDescription\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogDescriptionProps = Radix.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Description\n>;\ninterface AlertDialogDescriptionProps extends DialogDescriptionProps {}\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogContentProps = Radix.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Content\n>;\ninterface AlertDialogContentProps\n extends Omit<\n DialogContentProps,\n \"onPointerDownOutside\" | \"onInteractOutside\"\n > {}\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/70 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n ref={ref}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] w-[90vw] bg-white text-gray-700 border border-gray-300 top-[50%] z-50 grid w- max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] rounded-xl\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-col space-y-2 text-left\", className)}\n {...props}\n />\n);\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-row justify-end space-x-4\", className)}\n {...props}\n />\n);\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg text-gray-900 font-semibold\", className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants({ variant: \"primary\" }), \"\", className)}\n {...props}\n />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(buttonVariants({ variant: \"secondary\" }), className)}\n {...props}\n />\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n\nexport type {\n AlertDialogProps,\n AlertDialogTriggerProps,\n AlertDialogPortalProps,\n AlertDialogOverlayProps,\n AlertDialogContentProps,\n AlertDialogActionProps,\n AlertDialogCancelProps,\n AlertDialogTitleProps,\n AlertDialogDescriptionProps,\n};\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../helpers/utils\";\n\n// /dwd\nconst iconButtonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-semibold transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed border border-transparent\",\n {\n variants: {\n /**\n * Determines style variation of Button component.\n */\n variant: {\n primary:\n \"bg-pink-500 text-white hover:bg-pink-600 disabled:bg-pink-300\",\n secondary:\n \"bg-white text-gray-900 hover:bg-gray-100 disabled:text-gray-400 disabled:bg-white border-gray-300\",\n outline:\n \"border-pink-500 text-pink-500 bg-white hover:bg-pink-50 disabled:bg-white disabled:border-pink-300 disabled:text-pink-300\",\n tonal:\n \"bg-pink-100 text-pink-500 hover:bg-pink-200 disabled:bg-gray-200 disabled:text-gray-400\",\n danger: \"bg-red-500 text-white hover:bg-red-600 disabled:bg-red-300\",\n transparent: \"text-gray-900 bg-transparent hover:bg-gray-100 disabled:text-gray-400 disabled:bg-transparent\",\n },\n /**\n * Determines size variation of Button component.\n */\n size: {\n default: \"text-sm h-10 w-10\",\n sm: \"h-8 w-8 text-sm\",\n lg: \"h-12 w-12 text-base\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"default\",\n },\n }\n);\n\nexport interface IconButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof iconButtonVariants> {\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n */\n asChild?: boolean;\n /**\n * Disabled interaction and applies disabled styles\n */\n isDisabled?: boolean;\n}\n\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n size = \"default\",\n asChild = false,\n isDisabled = false,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const buttonClassName = cn(\n iconButtonVariants({ variant, size, className })\n );\n return (\n <Comp\n className={buttonClassName}\n disabled={isDisabled}\n ref={ref}\n {...props}\n >\n {props.children}\n </Comp>\n );\n }\n);\nIconButton.displayName = \"IconButton\";\n\nexport { IconButton, iconButtonVariants };\n","import React, { createContext, useContext } from \"react\";\nimport { cn } from \"../../helpers/utils\";\n\ninterface HeadingGroupProps {\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * Heading group alignment.\n */\n align?: \"left\" | \"center\" | \"right\";\n /**\n * The children of the HeadingGroup, which could include TagLine, Heading, Heading sub,..\n */\n children?: React.ReactNode;\n}\n\ntype HeadingGroupContextProps = {\n align?: HeadingGroupProps[\"align\"];\n}\n\nconst HeadingGroupContext = createContext<HeadingGroupContextProps>({\n align: \"center\",\n});\n\ninterface HeadingTaglineProps {\n /**\n * Tagline color.\n */\n color?: \"regular\" | \"pink\" | \"white\";\n /**\n * Tagline size.\n */\n size?: \"small\" | \"large\";\n /**\n * Tagline use truncate.\n */\n isTruncated?: boolean;\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * The children of the Tagline.\n */\n children?: React.ReactNode;\n}\n\ninterface HeadingProps {\n /**\n * Shorthand for changing the default rendered element into a semantically appropriate alternative.\n */\n as?: \"h1\" | \"h2\";\n /**\n * Heading color.\n */\n color?: \"regular\" | \"pink\" | \"white\";\n /**\n * Heading size.\n */\n size?: \"small\" | \"large\";\n /**\n * Heading use truncate.\n */\n isTruncated?: boolean;\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * The children of the Heading.\n */\n children?: React.ReactNode;\n}\n\ninterface HeadingSubProps {\n /**\n * Sub heading color.\n */\n color?: \"regular\" | \"white\";\n /**\n * Sub heading size.\n */\n size?: \"small\" | \"large\";\n /**\n * Sub heading margin top: none: 0px, spacingX: 8px, spacingM: 12px, spacingL: 16px, spacingXl: 20px, spacing2Xl: 24px\n */\n marginTop?:\n | \"none\"\n | \"spacingX\"\n | \"spacingM\"\n | \"spacingL\"\n | \"spacingXl\"\n | \"spacing2Xl\";\n /**\n * Sub heading use truncate.\n */\n isTruncated?: boolean;\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * The children of the Heading sub.\n */\n children?: React.ReactNode;\n}\n\nconst HeadingTagline = ({\n color = \"pink\",\n size = \"small\",\n isTruncated = false,\n className,\n children,\n}: HeadingTaglineProps) => {\n const colorClasses = {\n regular: \"text-gray-900\",\n pink: \"text-pink-500\",\n white: \"text-white\",\n };\n const sizeClasses = {\n small: \"text-sm\",\n large: \"text-lg\",\n };\n return (\n <div\n className={cn(\n \"mb-1 font-semibold\",\n colorClasses[color],\n sizeClasses[size],\n isTruncated && \"truncate\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nconst Heading = ({\n as = \"h2\",\n size = \"small\",\n color = \"pink\",\n isTruncated = false,\n className,\n children,\n}: HeadingProps) => {\n const HeadingTag = as;\n const colorClasses = {\n regular: \"text-gray-900\",\n pink: \"text-pink-500\",\n white: \"text-white\",\n };\n const sizeClasses = {\n small: \"lg:text-3xl text-2xl\",\n large: \"lg:text-4xl text-2xl\",\n };\n const { align } = useContext(HeadingGroupContext);\n return (\n <HeadingTag\n className={cn(\n \"font-bold max-w-4xl\",\n align === \"center\" ? \"mx-auto\" : \"\", \n colorClasses[color],\n sizeClasses[size],\n isTruncated && \"truncate\",\n className\n )}\n >\n {children}\n </HeadingTag>\n );\n};\n\nconst HeadingSub = ({\n color = \"regular\",\n size = \"small\",\n marginTop = \"spacingX\",\n isTruncated = false,\n className,\n children,\n}: HeadingSubProps) => {\n const colorClasses = {\n regular: \"text-gray-500\",\n white: \"text-white/80\",\n };\n const sizeClasses = {\n small: \"md:text-base text-sm\",\n large: \"md:text-lg text-base\",\n };\n const marginTopClasses = {\n none: \"\",\n spacingX: \"mt-2\",\n spacingM: \"mt-3\",\n spacingL: \"mt-4\",\n spacingXl: \"mt-5\",\n spacing2Xl: \"mt-6\",\n };\n const { align } = useContext(HeadingGroupContext);\n return (\n <div\n className={cn(\n \"mt-2\",\n align === \"center\" ? \"mx-auto max-w-3xl\" : \"max-w-4xl\", \n colorClasses[color],\n sizeClasses[size],\n marginTopClasses[marginTop],\n isTruncated && \"truncate\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nconst HeadingGroup = ({\n className,\n align = \"center\",\n children,\n}: HeadingGroupProps) => {\n const alignClassnames = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n };\n return (\n <div className={cn(\"mb-5 md:mb-8\", alignClassnames[align], className)}>\n <HeadingGroupContext.Provider value={{ align }}>\n {children}\n </HeadingGroupContext.Provider>\n </div>\n );\n};\n\nexport { HeadingGroup, HeadingTagline, Heading, HeadingSub };\n","import { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { iconButtonVariants } from \"../IconButton/IconButton\";\nimport { cn } from \"../../helpers/utils\";\n\ninterface PaginationProps {\n /**\n * Current page.\n */\n current: number;\n /**\n * Items total count.\n */\n total: number;\n /**\n * Page change callback\n */\n onChange: (page: number) => void;\n}\n\nexport default function Pagination({\n current,\n total,\n onChange,\n}: PaginationProps) {\n const getButton = (index: number) => (\n <li key={index}>\n <button\n className={cn(\n iconButtonVariants({\n variant: current === index ? \"outline\" : \"secondary\",\n size: \"sm\",\n }),\n )}\n onClick={() => onChange(index)}\n >\n {index}\n </button>\n </li>\n );\n\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\")}\n >\n <ul className={cn(\"flex flex-row flex-wrap items-center gap-2\")}>\n {total > 1 && (\n <li>\n <button\n className={cn(\n iconButtonVariants({\n variant: \"secondary\",\n size: \"sm\",\n }),\n )}\n disabled={current === 1}\n onClick={() => current > 1 && onChange(current - 1)}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n </li>\n )}\n\n {total <= 6 ? (\n Array(total)\n .fill(0)\n .map((_, index) => getButton(index + 1))\n ) : (\n <>\n {getButton(1)}\n {current === 1 && [getButton(2), getButton(3)]}\n {current > 3 && (\n <li>\n <button\n className={cn(\n iconButtonVariants({\n variant: \"secondary\",\n size: \"sm\",\n }),\n )}\n disabled={current === 1}\n onClick={() => onChange(current - 3)}\n >\n ...\n </button>\n </li>\n )}\n {current > 2 &&\n current !== 1 &&\n current !== total &&\n getButton(current - 1)}\n {current > 1 && current < total && getButton(current)}\n {current < total - 1 && current !== 1 && getButton(current + 1)}\n {current === total && [getButton(total - 2), getButton(total - 1)]}\n {current < total - 2 && current !== total && (\n <button\n className={cn(\n iconButtonVariants({\n variant: \"secondary\",\n size: \"sm\",\n }),\n )}\n disabled={current === 1}\n onClick={() => onChange(current + 3)}\n >\n ...\n </button>\n )}\n {getButton(total)}\n </>\n )}\n\n {total > 1 && (\n <li>\n <button\n className={cn(\n iconButtonVariants({\n variant: \"secondary\",\n size: \"sm\",\n }),\n )}\n disabled={current === total}\n onClick={() => current < total && onChange(current + 1)}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </button>\n </li>\n )}\n </ul>\n </nav>\n );\n}\n","import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"../../helpers/utils\";\n\nconst Tabs = TabsPrimitive.Root;\n\ntype TabsListProps = React.ComponentPropsWithoutRef<\n typeof TabsPrimitive.List\n> & {\n /**\n * Control the size of the tabs list..\n */\n size?: \"base\" | \"sm\";\n /**\n * The direction of navigation between toolbar items.\n */\n\n isDivider?: boolean;\n};\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(({ className, size = \"sm\", isDivider = false, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex w-full flex-row items-center bg-muted text-muted-foreground space-x-5 overflow-x-auto [&::-webkit-scrollbar]:hidden\",\n `text-${size}`,\n isDivider && \"border-b border-gray-200\",\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap py-3 font-semibold ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border-b-2 border-transparent data-[state=active]:text-pink-500 data-[state=active]:border-pink-500 text-gray-900 hover:text-pink-500\",\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-3 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 text-gray-900\",\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import { forwardRef, TextareaHTMLAttributes } from \"react\";\nimport { QuestionMarkCircleIcon } from \"@heroicons/react/24/outline\";\nimport { XCircleIcon } from \"@heroicons/react/24/solid\";\nimport { cn } from \"../../helpers/utils\";\n\nexport interface TextAreaProps\n extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n label?: string;\n message?: string;\n isError?: boolean;\n inputClassName?: string;\n size?: 1 | 2;\n}\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n disabled,\n isError,\n message,\n label,\n className,\n inputClassName,\n size,\n rows = 3,\n ...restProps\n },\n ref,\n ) => {\n return (\n <div\n className={cn(\n \"relative\",\n className,\n isError && \"mobase-text-area-error\",\n )}\n >\n {label && (\n <span\n className={cn(\n \"mobase-text-area-label absolute bg-white -top-2.5 px-1.5 left-2 text-sm text-gray-500\",\n size === 2 && \" -top-2.5 text-sm\",\n )}\n >\n {label}\n </span>\n )}\n <textarea\n disabled={disabled}\n ref={ref}\n className={cn(\n \"mobase-text-area-box bg-white w-full text-sm transition-all rounded-md border border-gray-300 placeholder:text-gray-500 p-3 text-gray-900 focus:border-pink-500 disabled:bg-gray-50 disabled:border-gray-200 outline-none block\",\n size === 2 && \"text-base\",\n inputClassName,\n )}\n rows={rows}\n {...restProps}\n />\n {message && (\n <div className=\"mobase-text-area-message flex space-x-1 items-center mt-0.5\">\n {isError ? (\n <XCircleIcon width={16} height={16} className=\"text-red-500\" />\n ) : (\n <QuestionMarkCircleIcon\n width={16}\n height={16}\n className=\"text-gray-500\"\n />\n )}\n <span\n className={cn(\n \"text-gray-500 \",\n size === 2 ? \"text-sm\" : \"text-xs\",\n )}\n >\n {message}\n </span>\n </div>\n )}\n\n <style>\n {`\n .mobase-text-area-box:hover {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-gray-400) / 1) inset;\n }\n\n .mobase-text-area-box:focus, .mobase-text-area-box:focus-visible {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-pink-500) / 1) inset;\n }\n\n .mobase-text-area-box:disabled {\n box-shadow: none;\n }\n\n .mobase-text-area-error {\n .mobase-text-area-label {\n color: rgb(var(--mobase-red-500) / 1);\n }\n\n .mobase-text-area-box {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-red-500) / 1) inset;\n border-color: rgb(var(--mobase-red-500) / 1);\n }\n\n .mobase-text-area-message span {\n color: rgb(var(--mobase-red-500) / 1);\n }\n }\n `}\n </style>\n </div>\n );\n },\n);\n","// Inspired by react-hot-toast library\nimport * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"./Toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n default:\n return state;\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open: boolean) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n","import * as React from \"react\";\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../helpers/utils\";\nimport {\n XMarkIcon,\n CheckCircleIcon,\n ExclamationTriangleIcon,\n InformationCircleIcon,\n} from \"@heroicons/react/20/solid\";\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed bottom-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 left-0 sm:right-0 sm:left-auto sm:top-0 sm:bottom-auto sm:flex-col md:max-w-[420px]\",\n className,\n )}\n {...props}\n />\n));\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative w-full overflow-hidden rounded-md border py-4 pr-10 pl-10 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-bottom-full data-[state=open]:sm:slide-in-from-top-full bg-white text-gray-900 border border-gray-200 border-l-4\",\n {\n variants: {\n variant: {\n sucess: \"border-l-green-500\",\n warning: \"border-l-yellow-500\",\n error: \"border-l-red-500\",\n },\n },\n defaultVariants: {\n variant: \"sucess\",\n },\n },\n);\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>\n>(({ className, variant = \"sucess\", children, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n >\n <div className=\"w-5 h-5 flex items-center justify-center absolute top-4 left-3\">\n {variant === \"sucess\" && (\n <CheckCircleIcon className=\"w-5 h-5 text-green-500\" />\n )}\n {variant === \"warning\" && (\n <ExclamationTriangleIcon className=\"w-5 h-5 text-yellow-500\" />\n )}\n {variant === \"error\" && (\n <InformationCircleIcon className=\"w-5 h-5 text-red-500\" />\n )}\n </div>\n {children}\n </ToastPrimitives.Root>\n );\n});\nToast.displayName = ToastPrimitives.Root.displayName;\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex shrink-0 items-center justify-center bg-transparent text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-0 focus:ring-ring focus:ring-offset-0 disabled:pointer-events-none disabled:opacity-50 text-blue-600 hover:underline mt-2\",\n className,\n )}\n {...props}\n />\n));\nToastAction.displayName = ToastPrimitives.Action.displayName;\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-2 top-2 rounded-md transition-opacity hover:opacity-70 focus:opacity-100 focus:outline-none focus:ring-2 text-gray-800 w-8 h-8 flex items-center justify-center\",\n className,\n )}\n toast-close=\"\"\n {...props}\n >\n <XMarkIcon className=\"h-5 w-5\" />\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"text-base font-semibold leading-tight\", className)}\n {...props}\n />\n));\nToastTitle.displayName = ToastPrimitives.Title.displayName;\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", className)}\n {...props}\n />\n));\nToastDescription.displayName = ToastPrimitives.Description.displayName;\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n};\n","\"use client\";\n\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from \"./Toast\";\nimport { useToast } from \"./useToast\";\n\nexport function Toaster() {\n const { toasts } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, ...props }) {\n return (\n <Toast key={id} {...props}>\n <div className=\"grid gap-2\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription>{description}</ToastDescription>\n )}\n </div>\n {action}\n <ToastClose />\n </Toast>\n );\n })}\n <ToastViewport />\n </ToastProvider>\n );\n}\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../helpers/utils\";\n\n// /dwd\nconst textButtonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap font-semibold transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed border border-transparent flex-nowrap\",\n {\n variants: {\n /**\n * Determines style variation of Button component.\n */\n variant: {\n default:\n \"text-blue-700 hover:underline hover:bg-blue-50 disabled:bg-transparent disabled:text-gray-400 disabled:no-underline\",\n primary:\n \"text-pink-500 hover:underline hover:bg-pink-50 disabled:bg-transparent disabled:text-gray-400 disabled:no-underline\",\n secondary:\n \"text-gray-700 hover:underline hover:text-blue-700 hover:bg-blue-50 disabled:bg-transparent disabled:text-gray-400 disabled:no-underline\",\n },\n /**\n * Determines size variation of Button component.\n */\n size: {\n default: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface TextButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof textButtonVariants> {\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n */\n asChild?: boolean;\n /**\n * Disabled interaction and applies disabled styles\n */\n isDisabled?: boolean;\n}\n\nconst TextButton = React.forwardRef<HTMLButtonElement, TextButtonProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n isDisabled = false,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const buttonClassName = cn(\n textButtonVariants({ variant, size, className }),\n );\n return (\n <Comp\n className={buttonClassName}\n disabled={isDisabled}\n ref={ref}\n {...props}\n >\n {props.children}\n </Comp>\n );\n },\n);\nTextButton.displayName = \"TextButton\";\n\nexport { TextButton, textButtonVariants };\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"../../helpers/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow> & {\n className?: string;\n }\n>((props, ref) => (\n <TooltipPrimitive.Arrow\n ref={ref}\n className={cn(\"drop-shadow-md\", props.className)}\n {...props}\n />\n));\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> & {\n type?: \"dark\" | \"light\";\n }\n>(({ className, type = \"dark\", sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 p-1.5 shadow-md\",\n type === \"light\"\n ? \"bg-white text-gray-900 fill-white\"\n : \"bg-gray-800 fill-gray-800 text-white\",\n className,\n )}\n {...props}\n />\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n TooltipArrow,\n};\n","import {\n ChangeEvent,\n FocusEvent,\n forwardRef,\n InputHTMLAttributes,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport {\n QuestionMarkCircleIcon,\n XCircleIcon,\n XCircleIcon as XCircleIconSolid,\n} from \"@heroicons/react/16/solid\";\nimport { cn } from \"../../helpers/utils\";\n\nexport interface TextInputProps extends InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n message?: string;\n isError?: boolean;\n inputClassName?: string;\n withClearButton?: boolean;\n size?: 1 | 2;\n onClickClear?: (inputValue: string) => void;\n}\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n disabled,\n isError,\n message,\n label,\n className,\n inputClassName,\n withClearButton,\n size,\n onChange,\n onFocus,\n onClickClear,\n value,\n defaultValue,\n type = \"text\",\n ...restProps\n },\n ref,\n ) => {\n const [clearable, setClearable] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n\n const handleShowClearButton = (inputValue) => {\n if (inputValue && !clearable) {\n setClearable(true);\n }\n\n if (!inputValue && clearable) {\n setClearable(false);\n }\n };\n\n const onChangeFactory = (event: ChangeEvent<HTMLInputElement>) => {\n if (withClearButton) handleShowClearButton(event.target.value);\n onChange?.(event);\n };\n\n const onFocusFactory = (event: FocusEvent<HTMLInputElement, Element>) => {\n if (withClearButton) handleShowClearButton(event.target.value);\n onFocus?.(event);\n };\n\n const handleClear = () => {\n const inputTarget = rootRef.current?.querySelector(\"input\");\n if (!inputTarget) return;\n onClickClear?.(inputTarget.value);\n\n inputTarget.value = \"\";\n inputTarget.focus();\n setClearable(false);\n };\n\n useEffect(() => {\n handleShowClearButton(defaultValue || value);\n }, [value, defaultValue]);\n\n return (\n <div\n className={cn(className, isError && \"mobase-text-input-error\")}\n ref={rootRef}\n >\n <div className=\"relative\">\n {label && (\n <span\n className={cn(\n \"mobase-text-input-label absolute bg-white -top-2 px-1.5 left-2 text-xs text-gray-500\",\n size === 2 && \" -top-2.5 text-sm\",\n )}\n >\n {label}\n </span>\n )}\n <input\n disabled={disabled}\n type={type}\n ref={ref}\n className={cn(\n \"mobase-text-input-box bg-white w-full transition-all text-sm rounded-md border border-gray-300 placeholder:text-gray-500 p-3 text-gray-900 h-11 focus:border-pink-500 disabled:bg-gray-50 disabled:border-gray-200 disabled:pointer-events-none block outline-none\",\n size === 2 && \"h-12 text-base\",\n inputClassName,\n )}\n onChange={onChangeFactory}\n onFocus={onFocusFactory}\n value={value}\n defaultValue={defaultValue}\n {...restProps}\n />\n\n {withClearButton && clearable && (\n <button\n aria-label=\"button\"\n type=\"button\"\n className=\"absolute right-3 top-1/2 -translate-y-1/2 shrink-0 cursor-pointer text-gray-500 duration-200 hover:opacity-70 disabled:pointer-events-none\"\n disabled={disabled}\n onClick={handleClear}\n >\n <XCircleIcon strokeWidth={2} width={20} height={20} />\n </button>\n )}\n </div>\n\n {message && (\n <div className=\"mobase-text-input-message flex space-x-1 items-center mt-0.5\">\n {isError ? (\n <XCircleIconSolid\n width={16}\n height={16}\n className=\"text-red-500\"\n />\n ) : (\n <QuestionMarkCircleIcon\n width={16}\n height={16}\n className=\"text-gray-500\"\n />\n )}\n <span\n className={cn(\n \"text-gray-500 \",\n size === 2 ? \"text-sm\" : \"text-xs\",\n )}\n >\n {message}\n </span>\n </div>\n )}\n\n <style>\n {`\n .mobase-text-input-box:hover {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-gray-400) / 1) inset;\n }\n\n .mobase-text-input-box:focus , .mobase-text-input-box:focus-visible {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-pink-500) / 1) inset;\n }\n\n .mobase-text-input-error {\n .mobase-text-input-label {\n color: rgb(var(--mobase-red-500) / 1);\n }\n\n .mobase-text-input-box {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-red-500) / 1) inset;\n border-color: rgb(var(--mobase-red-500) / 1);\n }\n\n .mobase-text-input-message span {\n color: rgb(var(--mobase-red-500) / 1);\n }\n }\n `}\n </style>\n </div>\n );\n },\n);\n","import { MinusCircleIcon, PlusCircleIcon } from \"@heroicons/react/24/outline\";\nimport { IconButton } from \"../IconButton\";\nimport {\n useRef,\n ChangeEvent,\n forwardRef,\n InputHTMLAttributes,\n useState,\n useEffect,\n} from \"react\";\nimport { cn } from \"../../helpers/utils\";\n\nexport interface StepperProps extends InputHTMLAttributes<HTMLInputElement> {\n value?: number;\n min?: number;\n max?: number;\n step?: number;\n inputClassName?: string;\n stepperClassName?: string;\n disabledInput?: boolean;\n disabled?: boolean;\n onChangeInputStepper?: (inputValue: number | string) => void;\n onDecrement?: (inputValue: number | string) => void;\n onIncrement?: (inputValue: number | string) => void;\n}\nexport const Stepper = forwardRef<HTMLInputElement, StepperProps>(\n (\n {\n value = 0,\n min = 0,\n max = 999,\n disabled = false,\n disabledInput = false,\n step = 1,\n inputClassName = \"\",\n stepperClassName = \"\",\n className = \"\",\n onChange = () => {},\n onChangeInputStepper,\n onDecrement,\n onIncrement,\n ...restProps\n },\n ref,\n ) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const [isDisablePlus, setIsDisablePlus] = useState(false);\n const [isDisableMinus, setIsDisableMinus] = useState(false);\n const [inputValue, setInputValue] = useState(\"\");\n const spanRef = useRef<HTMLSpanElement>(null);\n\n const handleDisable = (inputValue: string | number) => {\n if (Number(inputValue) >= max) {\n setIsDisablePlus(true);\n } else {\n setIsDisablePlus(false);\n }\n if (Number(inputValue) > min) {\n setIsDisableMinus(false);\n } else {\n setIsDisableMinus(true);\n }\n };\n\n const onIncrementChange = () => {\n if (disabled || isDisablePlus) return;\n const inputTarget =\n rootRef?.current?.querySelector<HTMLInputElement>(\"input\");\n if (!inputTarget) return;\n let newValue: number = 0;\n newValue = Math.min(Number(inputTarget.value) + step, max);\n handleDisable(newValue);\n inputTarget.value = String(newValue);\n setInputValue(inputTarget.value || \"\");\n onChangeInputStepper?.(inputTarget.value);\n onIncrement?.(inputTarget.value);\n };\n\n const onDecrementChange = () => {\n if (disabled || isDisableMinus) return;\n const inputTarget =\n rootRef?.current?.querySelector<HTMLInputElement>(\"input\");\n if (!inputTarget) return;\n let newValue: number = 0;\n newValue = Math.max(Number(inputTarget.value) - step, 0);\n handleDisable(newValue);\n inputTarget.value = String(newValue);\n setInputValue(inputTarget.value || \"\");\n onChangeInputStepper?.(inputTarget.value);\n onDecrement?.(inputTarget.value);\n };\n\n const onStepperInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (!e) return;\n let inputValue = e?.target?.value;\n if (!inputValue?.match(/^[0-9]*$/)) {\n inputValue = inputValue.replace(/[^0-9]/g, \"\");\n }\n handleDisable(inputValue);\n const numericValue = parseInt(inputValue, 10);\n if (Number.isNaN(numericValue) || numericValue < min) {\n e.target.value = String(min);\n } else if (numericValue >= max) {\n e.target.value = String(max);\n } else {\n e.target.value = String(numericValue);\n }\n setInputValue(e?.target?.value || \"\");\n onChangeInputStepper?.(e.target.value);\n onChange?.(e);\n };\n\n useEffect(() => {\n const inputTarget =\n rootRef?.current?.querySelector<HTMLInputElement>(\"input\");\n if (!inputTarget) return;\n handleDisable(inputTarget?.value);\n }, []);\n\n useEffect(() => {\n const inputTarget =\n rootRef?.current?.querySelector<HTMLInputElement>(\"input\");\n if (inputTarget && spanRef?.current) {\n inputTarget.style.width = `${spanRef.current.offsetWidth + 10}px`;\n }\n }, [inputValue]);\n\n return (\n <div ref={rootRef} className=\"flex items-center space-x-1\">\n <IconButton\n id=\"btn-minus\"\n className={cn(\n !isDisableMinus && !disabled\n ? \"cursor-pointer text-pink-500\"\n : \"text-gray-400 cursor-default\",\n stepperClassName,\n )}\n variant=\"transparent\"\n onClick={onDecrementChange}\n >\n <MinusCircleIcon className=\"w-8 h-8 \" />\n </IconButton>\n <div>\n <input\n pattern=\"[0-9]*\"\n inputMode=\"numeric\"\n defaultValue={value}\n ref={ref}\n min={min}\n max={max}\n onChange={(e) => onStepperInputChange(e)}\n id=\"numberInput\"\n disabled={disabled || disabledInput}\n autoComplete=\"off\"\n {...restProps}\n className={cn(\n \"text-gray-800 min-w-7 border-gray-300 border transition-width duration-100 focus-visible:outline-none focus-visible:ring-0 focus:ring-0 shadow-none focus-visible:ring-offset-0 w-7 h-7 rounded-md text-center bg-white\",\n inputClassName,\n )}\n />\n <span\n ref={spanRef}\n style={{\n visibility: \"hidden\",\n position: \"absolute\",\n whiteSpace: \"pre\",\n }}\n >\n {inputValue || \" \"}\n </span>\n </div>\n <IconButton\n id=\"btn-plus\"\n className={cn(\n !isDisablePlus && !disabled\n ? \"cursor-pointer text-pink-500\"\n : \"text-gray-400 cursor-default\",\n stepperClassName,\n )}\n variant=\"transparent\"\n onClick={onIncrementChange}\n >\n <PlusCircleIcon className=\"w-8 h-8 \" />\n </IconButton>\n </div>\n );\n },\n);\n","import * as React from \"react\";\n\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n CheckIcon,\n XCircleIcon,\n} from \"@heroicons/react/16/solid\";\nimport { QuestionMarkCircleIcon } from \"@heroicons/react/24/outline\";\n\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { cn } from \"../../helpers/utils\";\n\nconst Select = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Root> & {\n className?: string;\n label?: string | null;\n message?: string | null;\n size?: 1 | 2;\n isError?: boolean;\n }\n>(\n ({\n className,\n children,\n label,\n message,\n size,\n isError,\n disabled,\n ...props\n },ref) => (\n <div\n ref={ref} \n className={cn(\n \"select-mobase relative\",\n className,\n disabled ? \"disabled\" : \"\",\n isError\n ? \"[&>.select-mobase-button]:border-red-500 [&>.select-mobase-button]:ring-red-500 [&>.select-mobase-button]:ring-1\"\n : \"\",\n size === 2\n ? \"[&>.select-mobase-button]:text-base [&>.select-mobase-button]:h-12\"\n : \"\",\n )}\n >\n {label && (\n <span\n className={cn(\n \"mobase-select-label absolute bg-white -top-2 px-1.5 left-2 text-xs text-gray-500 z-[1]\",\n size === 2 && \"text-sm -top-2.5\",\n isError && \"text-red-500\",\n )}\n >\n {label}\n </span>\n )}\n <SelectPrimitive.Root disabled={disabled} {...props}>\n {children}\n </SelectPrimitive.Root>\n {message && (\n <div\n className={cn(\n \"mobase-select-message flex space-x-1 items-center mt-1 text-gray-500\",\n isError && \"text-red-500\",\n )}\n >\n {isError ? (\n <XCircleIcon width={16} height={16} />\n ) : (\n <QuestionMarkCircleIcon width={16} height={16} />\n )}\n <span className={cn(size === 2 ? \"text-sm\" : \"text-xs\")}>\n {message}\n </span>\n </div>\n )}\n </div>\n ),\n);\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"select-mobase-button bg-white w-full ring-0 transition-all focus-visible:border-pink-500 focus-visible:ring-offset-0 focus-visible:ring-offset-transparent focus-visible:ring-1 focus-visible:!ring-pink-500 rounded-md border border-gray-300 data-[placeholder]:text-gray-500 p-3 disabled:bg-gray-50 disabled:border-gray-200 disabled:pointer-events-none flex items-center justify-between data-[state=open]:border-pink-500 data-[state=open]:ring-1 hover:ring-1 hover:ring-gray-400 data-[state=open]:ring-pink-500 text-gray-900 h-11 ring-inset text-sm\",\n className,\n )}\n {...props}\n >\n <div className=\"line-clamp-1 text-left\">{children}</div>\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"h-4 w-4 text-gray-500 flex-none\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"h-5 w-5\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1 bg-gradient-to-t from-white to-transparent\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"h-5 w-5\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-gray-300 bg-white text-gray-900 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-0\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectGroup = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Group>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Group\n ref={ref}\n className={cn(\n \"relative p-1 after:w-full border-b border-gray-200 last:border-0\",\n className,\n )}\n {...props}\n >\n {children}\n </SelectPrimitive.Group>\n));\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"pr-2 pl-8 py-1.5 text-sm font-semibold z-[1]\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => {\n return (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-none focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-4 w-4 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n});\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","// import { buttonVariants } from \"../Button/Button\";\nimport { cn } from \"../../helpers/utils\";\nimport * as React from \"react\"\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDownIcon } from \"@heroicons/react/16/solid\";\nimport { buttonVariants } from \"../Button/Button\";\n\ntype AlignDropdown = \"left\" | \"right\" | \"center\";\ninterface NavigationMenuProviderProps {\n value: { alignDropdown?: AlignDropdown };\n children: React.ReactNode;\n}\n\nconst NavigationMenuContext = React.createContext<null | { alignDropdown?: AlignDropdown }>(null);\n\nconst NavigationMenuProvider: React.FC<NavigationMenuProviderProps> = ({ value, children }) => {\n return (\n <NavigationMenuContext.Provider value={value}>\n {children}\n </NavigationMenuContext.Provider>\n );\n};\n\nconst useNavigationMenu = (): { alignDropdown?: AlignDropdown } => {\n const context = React.useContext(NavigationMenuContext);\n if (!context) {\n throw new Error(\n \"useNavigationMenu must be used within a NavigationMenuProvider\"\n );\n }\n return context;\n};\n\nconst NavigationMenu = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root> & {\n alignDropdown?: AlignDropdown;\n }\n>(({ className, children, alignDropdown = \"left\", ...props }, ref) => (\n <NavigationMenuProvider value={{ alignDropdown }}>\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn(\n \"relative z-10 flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n {...props}\n >\n {children}\n {/* <NavigationMenuViewport /> */}\n </NavigationMenuPrimitive.Root>\n </NavigationMenuProvider>\n))\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(\n \"group flex flex-1 list-none items-center justify-center space-x-0\",\n className\n )}\n {...props}\n />\n))\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\n\nconst navigationMenuTriggerStyle = cva(\n buttonVariants({\n variant: \"transparent\",\n size: \"sm\",\n })\n)\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), \"group px-2\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative ml-1 h-4 w-4 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n))\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => {\n const { alignDropdown } = useNavigationMenu();\n return (<NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"absolute top-full mt-3 rounded-lg bg-white text-gray-900 ring-1 ring-gray-900/5 shadow-[0_10px_32px_rgba(34,42,53,0.15),0_1px_1px_rgba(0,0,0,0.05),0_4px_6px_rgba(34,42,53,0.08),0_1px_1px_rgba(34,42,53,0.1),0_24px_68px_rgba(47,48,55,0.1)]\",\n className, \"before:content-[''] before:absolute before:-top-3 before:left-0 before:right-0 before:w-full before:bg-transparent before:opacity-0 before:h-3\", alignDropdown !== 'center' && \"data-[state=open]:animate-in data-[state=open]:fade-in data-[state=open]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out \", \n alignDropdown === 'left' && \"left-0\",\n alignDropdown === 'right' && \"right-0\",\n alignDropdown === 'center' && \" left-1/2 -translate-x-1/2 \"\n )}\n\n {...props}\n />)\n})\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\n <NavigationMenuPrimitive.Viewport\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n))\nNavigationMenuViewport.displayName =\n NavigationMenuPrimitive.Viewport.displayName\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n className\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n))\nNavigationMenuIndicator.displayName =\n NavigationMenuPrimitive.Indicator.displayName\n\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n}\n","import * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\n\nimport { cn } from \"../../helpers/utils\";\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-5 w-10 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-default disabled:opacity-20 data-[state=checked]:bg-pink-500 data-[state=unchecked]:bg-gray-400\",\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none relative cik before:content-[''] before:absolute before:w-1.5 before:h-1.5 before:rounded-full before:bg-pink-600 before:-translate-x-1/2 before:translate-y-1 disabled:opacity-20 before:data-[state=unchecked]:bg-gray-400 block h-3.5 w-3.5 bg-white rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0.5\",\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { Circle } from \"lucide-react\"\n\nimport { cn } from \"../../helpers/utils\";\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border-2 border-gray-300 disabled:bg-gray-100 disabled:data-[state=checked]:text-gray-100 data-[state=checked]:text-white disabled:data-[state=checked]:bg-gray-400 data-[state=checked]:bg-pink-500 data-[state=checked]:border-none ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-default peer\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center w-full h-full rounded-full \">\n <Circle className=\"h-2 w-2 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n","import { cn } from \"../../helpers/utils\";\n\nimport { NavigationMenuLink } from \"../NavigationMenu/index\";\n\nconst ListItem = ({\n className = \"\",\n icon = \"\",\n title,\n children = \"\",\n href = \"\",\n newTab = false,\n}) => {\n const linkProps = newTab\n ? { target: \"_blank\", rel: \"noopener noreferrer\" }\n : {};\n return (\n <li className=\"\">\n <NavigationMenuLink asChild>\n <a\n className={cn(\n \" select-none space-y-1 rounded-md px-2 py-2 leading-none no-underline outline-none transition-colors hover:bg-pink-50 hover:text-pink-500 focus:bg-pink-50 focus:text-pink-500 flex flex-nowrap space-x-2 min-h-9 \",\n className,\n !icon && \"items-center px-3\"\n )}\n href={href}\n {...linkProps}\n >\n {icon && (\n <div className=\"w-7 h-7 shrink-0 mt-1\">\n <img\n src={icon}\n loading=\"lazy\"\n className=\"w-7 h-7 object-cover\"\n alt={title}\n />\n </div>\n )}\n\n <div className=\" \">\n <div className=\"text-sm font-medium text-gray-900 leading-none\">\n {title}\n </div>\n {children && (\n <p className=\"line-clamp-2 text-xs mt-1 text-gray-500\">\n {children}\n </p>\n )}\n </div>\n </a>\n </NavigationMenuLink>\n </li>\n );\n};\n\nexport default ListItem;\n","import { cn } from \"../../helpers/utils\";\nimport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n navigationMenuTriggerStyle,\n \n} from \"../NavigationMenu/index\";\nimport ListItem from \"./ListItem\";\n\nconst NavItems = ({ data, alignDropdown }: any) => {\n return (\n <NavigationMenu alignDropdown={alignDropdown}>\n <NavigationMenuList >\n {data.map((menuItem) => {\n const linkProps = menuItem.newTab\n ? { target: \"_blank\", rel: \"noopener noreferrer\" }\n : {};\n return menuItem.hasDropdown ? (\n <NavigationMenuItem className=\"relative\" key={menuItem.id}>\n <NavigationMenuTrigger>{menuItem.title}</NavigationMenuTrigger>\n <NavigationMenuContent >\n <ul\n className={cn(\n \"grid w-[300px] p-2 grid-cols-1\",\n menuItem.dropDownCompact === true && menuItem.subMenu.length > 6 && \" w-[530px] md:grid-cols-2 \",\n menuItem.dropDownCompact === true && menuItem.subMenu.length > 12 && \" w-[800px] md:grid-cols-3 \",\n )}\n >\n {menuItem.subMenu &&\n menuItem.subMenu.map((component) => (\n <ListItem\n key={component.title}\n title={component.title}\n href={component.url}\n newTab={component.newTab}\n icon={\n menuItem.dropDownCompact === true\n ? component.icon\n : \"\"\n }\n >\n {menuItem.dropDownCompact === true\n ? component.description\n : \"\"}\n </ListItem>\n ))}\n </ul>\n </NavigationMenuContent>\n </NavigationMenuItem>\n ) : (\n <NavigationMenuItem className=\"relative\" key={menuItem.id}>\n <NavigationMenuLink\n href={menuItem.url}\n className={navigationMenuTriggerStyle()}\n {...linkProps}\n >\n {menuItem.title}\n </NavigationMenuLink>\n </NavigationMenuItem>\n );\n })}\n </NavigationMenuList>\n </NavigationMenu>\n );\n};\n\nexport default NavItems;\n","import { useEffect, useState } from \"react\";\nimport { DEFAULT_EASE } from \"../../helpers/animations\";\nimport { cn } from \"../../helpers/utils\";\nimport { useKey } from \"react-use\";\nimport Router from \"next/router\";\nimport NavItemsMobile from \"./NavItemsMobile\";\nimport { ArrowDownTrayIcon } from \"@heroicons/react/16/solid\";\nimport { buttonVariants } from \"../Button\";\nimport {\n motion,\n AnimatePresence,\n LazyMotion,\n domAnimation,\n} from \"framer-motion\";\n\nimport { MoMoText } from \"../../helpers/constants\"\n\ninterface Props {\n data: any;\n className?: string;\n}\n\nconst computeInsetTop = () =>\n typeof window !== \"undefined\" && window.pageYOffset !== undefined\n ? window.pageYOffset\n : 0;\n\n\nconst MobileMenu = ({ data, className }: Props) => {\n // useKey(\"Escape\", () => setOpen(false));\n const [isOpen, setIsOpen] = useState(false);\n\n useKey(\"Escape\", () => setIsOpen(false));\n\n useEffect(() => {\n if (!isOpen) return;\n const memoizedInsetTop = computeInsetTop();\n function handleRouteChange() {\n setIsOpen(false);\n }\n document.body.style.position = \"fixed\";\n document.body.style.width = \"100%\"\n Router.events.on(\"routeChangeComplete\", handleRouteChange);\n return () => {\n document.body.style.position = ''\n document.body.style.width = ''\n window.scrollTo({\n top: memoizedInsetTop || 0,\n behavior: \"instant\",\n });\n Router.events.off(\"routeChangeComplete\", handleRouteChange);\n };\n }, [isOpen]);\n\n const variants = {\n visible: { opacity: 1, transition: { duration: 0.2 } },\n hidden: { opacity: 0, transition: { duration: 0.2 } },\n };\n\n const containerVariants = {\n hidden: { opacity: 0 },\n show: {\n opacity: 1,\n transition: {\n duration: 0.15,\n staggerChildren: 0.05,\n ease: DEFAULT_EASE,\n },\n },\n exit: { opacity: 0, transition: { duration: 0.15 } },\n };\n\n return (\n <div className={cn(className)}>\n <button\n type=\"button\"\n className=\"text-gray-800 w-10 h-10 flex items-center justify-center hover:text-gray-700 \"\n onClick={() => setIsOpen(!isOpen)}\n >\n <span className=\"sr-only\">Navigation</span>\n <motion.div animate={isOpen ? \"hidden\" : \"visible\"} variants={variants}>\n <svg\n className={cn(\"block w-7 h-7\", isOpen && \"hidden\")}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"M4 6h16M4 12h16M4 18h16\"\n />\n </svg>\n </motion.div>\n <motion.div animate={isOpen ? \"visible\" : \"hidden\"} variants={variants}>\n <svg\n className={cn(\"block w-7 h-7\", !isOpen && \"hidden\")}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </motion.div>\n </button>\n\n\n <LazyMotion features={domAnimation}>\n <AnimatePresence mode=\"wait\">\n {isOpen && (\n <motion.nav\n variants={containerVariants}\n initial=\"hidden\"\n animate=\"show\"\n exit=\"exit\"\n className={cn(\n className,\n \"fixed block w-full max-w-full z-50 px-5 bg-white left-0 right-0 bottom-0 overflow-y-auto top-[calc(var(--header-height)+1px)] pb-24 \",\n )}\n >\n <NavItemsMobile data={data} />\n \n\n\n <div className=\"py-4 text-sm animate-fade-in duration-500 delay-300\">\n <h4 className=\"mb-2 mt-5 text-sm font-semibold text-gray-700 \">\n TẢI VÀ ĐĂNG KÝ\n </h4>\n\n <div className=\"flex flex-nowrap\">\n <div className=\"flex-initial\">\n\n <a className=\"link-white\" target=\"_blank\" href=\"https://itunes.apple.com/vn/app/id918751511?utm_source=website-momo&utm_medium=download&utm_campaign=momo-1dong\">\n <img\n src=\"https://homepage.momocdn.net/img/momo-upload-api-210724113855-637627235353131497.jpg\"\n width={130}\n loading=\"lazy\"\n className=\"img-fluid\"\n alt=\"\"\n />\n </a>\n </div>\n <div className=\"ml-3 flex-initial\">\n\n <a href=\"https://play.google.com/store/apps/details?id=com.mservice.momotransfer&utm_source=website-momo&utm_medium=download&utm_campaign=momo-1dong\" className=\"link-white\" target=\"_blank\">\n <img\n src=\"https://homepage.momocdn.net/img/momo-upload-api-210724113959-637627235994410679.jpg\"\n width={130}\n loading=\"lazy\"\n className=\"img-fluid\"\n alt=\"\"\n />\n </a>\n </div>\n </div>\n\n <h4 className=\"mb-2 mt-5 text-sm font-semibold text-gray-700\">\n HỖ TRỢ KHÁCH HÀNG\n </h4>\n\n <ul className=\"mb-2 text-sm text-gray-500\">\n <li className=\"mb-1\">\n Hotline : \n <a href={`tel:${MoMoText.Support.Hotline}`} className=\"text-gray-600\">\n {MoMoText.Support.Hotline_Format}\n </a>\n </li>\n <li className=\"mb-1\">\n Email : \n <a href={`mailto:${MoMoText.Support.Email}`} className=\"text-gray-600\">{MoMoText.Support.Email}</a>\n </li>\n </ul>\n <a\n href=\"https://www.momo.vn/huong-dan/huong-dan-gui-yeu-cau-ho-tro-bang-tinh-nang-tro-giup\"\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n <div className=\"relative inline-block overflow-hidden rounded border border-gray-300 bg-white py-1 pl-10 pr-2 hover:bg-gray-100\">\n <div\n className=\"absolute left-1 top-1 \"\n style={{ paddingTop: \"3px\" }}\n >\n <svg\n className=\"h-7 w-7 text-pink-700 \"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n viewBox=\"0 0 345.1 512\"\n >\n <g>\n <title>Asset 1</title>\n <path\n d=\"M279.4,23.7H30.8C14.5,23.7,0,38.2,0,56.3v401.8c0,16.3,14.5,30.8,30.8,30.8H76h23.8L76,449.4H34.5V96.2h243.1v152l34.5,22\n V56.3C312,38.2,297.5,23.7,279.4,23.7z M226.8,77.1H86.1c-8.1,0-13.5-5.4-13.5-13.5c0-8.1,5.4-13.5,13.5-13.5h140.8\n c5.4,0,10.8,5.4,10.8,13.5C237.7,71.7,232.3,77.1,226.8,77.1z\"\n />\n <path\n d=\"M189.4,200.7c-14.4,0-25.9,11.6-25.9,25.9v155.7l-17.3-34.6c-14.2-26.3-28.1-23.6-38.9-17.3c-12.5,8.3-17.2,17-8.6,38.9\n c19.6,48.2,49.8,105.6,82.2,142.7h116.7c41-30.4,74-175,17.3-181.6c-5.2,0-13.5,0.8-17.3,4.3c0-17.3-15.1-21.7-21.6-21.6\n c-7.5,0.1-13,4.3-17.3,13c0-17.3-14.1-21.6-21.6-21.6c-8.3,0-17.9,5.2-21.6,13v-90.8C215.4,212.3,203.8,200.7,189.4,200.7z\"\n />\n </g>\n </svg>\n </div>\n <div className=\"text-xs text-gray-500 \">\n Hướng dẫn trợ giúp trên\n </div>\n <div className=\"text-sm font-semibold text-gray-800\">\n Ứng dụng Ví MoMo\n </div>\n </div>\n </a>\n <h4 className=\"mb-2 mt-5 text-sm font-semibold text-gray-700\">\n HỢP TÁC DOANH NGHIỆP\n </h4>\n\n <ul className=\"mb-2 text-sm text-gray-500\">\n <li className=\"mb-1\">\n Hotline : \n <a className=\"text-gray-600\" href={`tel:${MoMoText.Business.Phome}`}>\n {MoMoText.Business.Phome_Format}\n </a>\n </li>\n <li className=\"mb-1\">\n Email : \n <a href={`mailto:${MoMoText.Business.Email}`} className=\"text-gray-600\"> {MoMoText.Business.Email}\n </a>\n </li>\n </ul>\n\n <a\n href=\"https://business.momo.vn/#menutop\"\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n <div className=\"relative inline-block overflow-hidden rounded border border-gray-300 bg-white py-1 pl-12 pr-2 hover:bg-gray-100\">\n <div className=\"absolute left-1 top-1 \">\n <img\n src=\"https://homepage.momocdn.net/fileuploads/svg/momo-file-210724114053.svg\"\n className=\"w-10\"\n loading=\"lazy\"\n alt=\"\"\n />\n </div>\n <div className=\"text-xs text-gray-500 \">\n Hợp tác doanh nghiệp\n </div>\n <div className=\"text-sm font-semibold text-gray-800\">\n Đăng ký hợp tác\n </div>\n </div>\n </a>\n </div>\n\n {/* <div className=\"fixed inset-x-0 bottom-0 grid grid-cols-1 gap-x-5 px-4 py-6 bg-white\">\n <a\n className={cn(\"w-full tracking-cta-header\",\n buttonVariants({ variant: \"primary\", size: \"lg\" })\n )}\n target=\"_blank\"\n href=\"http://momo.vn/download\"\n >\n <ArrowDownTrayIcon className=\"mr-1 w-4 h-4\" /> Tải Ví MoMo\n </a>\n </div> */}\n </motion.nav>\n )}\n </AnimatePresence>\n </LazyMotion>\n </div>\n );\n};\n\nexport default MobileMenu;\n","export const DEFAULT_EASE = [0.24, 0.25, 0.05, 1]\nexport const DEFAULT_DURATION = 0.4\nexport const DEFAULT_DELAY = 0\nexport const DEFAULT_TRANSITION = { ease: DEFAULT_EASE, duration: DEFAULT_DURATION }\n\ninterface AnimationProps {\n delay?: number\n duration?: number\n ease?: number\n}\n\nexport const INITIAL_BOTTOM = { opacity: 0, y: 20 }\nexport const getAnimation = ({ delay, duration, ease }: AnimationProps) => ({\n opacity: 1,\n y: 0,\n transition: {\n delay: delay ?? DEFAULT_DELAY,\n ease: ease ?? DEFAULT_EASE,\n duration: duration ?? DEFAULT_DURATION,\n },\n})\n","import { cn } from \"../../helpers/utils\";\n\nconst ListItemMobile = ({\n className = \"\",\n icon = \"\",\n title,\n children = \"\",\n href = \"\",\n newTab = false,\n}) => {\n const linkProps = newTab\n ? { target: \"_blank\", rel: \"noopener noreferrer\" }\n : {};\n return (\n <li className=\"min-h-8\">\n <a\n className={cn(\n \" select-none py-2 flex flex-nowrap space-x-1 items-center text\",\n className,\n )}\n href={href}\n {...linkProps}\n >\n {icon && (\n <div className=\"w-6 h-6 shrink-0\">\n <img\n src={icon}\n loading=\"lazy\"\n className=\"w-6 h-6 object-cover\"\n alt={title}\n />\n </div>\n )}\n\n <div className=\" \">\n <div className=\"text-sm text-gray-800 line-clamp-1\">{title}</div>\n {children && (\n <p className=\"line-clamp-1 text-xs mt-0 text-gray-500\">\n {children}\n </p>\n )}\n </div>\n </a>\n </li>\n );\n};\n\nexport default ListItemMobile;\n","import { cn } from \"../../helpers/utils\";\nimport { DEFAULT_EASE } from \"../../helpers/animations\";\nimport {\n Accordion,\n AccordionItem,\n AccordionTrigger,\n AccordionContent,\n} from \"../Accordion/index\";\nimport ListItemMobile from \"./ListItemMobile\";\nimport { motion } from \"framer-motion\";\n\nconst listItem = {\n hidden: { opacity: 0, y: 10 },\n show: {\n opacity: 1,\n y: 0,\n transition: { duration: 0.25, ease: DEFAULT_EASE },\n },\n exit: { opacity: 0, transition: { duration: 0.05 } },\n};\n\nconst NavItemsMobile = ({ data }: any) => {\n return (\n <Accordion type=\"single\" collapsible>\n {data.map((menuItem) => {\n const linkProps = menuItem.newTab\n ? { target: \"_blank\", rel: \"noopener noreferrer\" }\n : {};\n return (\n <motion.div key={menuItem.id} variants={listItem}>\n {menuItem.hasDropdown ? (\n <AccordionItem value={menuItem.id}>\n <AccordionTrigger className=\"py-3\">\n {menuItem.title}\n </AccordionTrigger>\n <AccordionContent>\n <ul className={cn(\"grid gap-y-1 gap-x-2 grid-cols-2 \")}>\n {menuItem.subMenu &&\n menuItem.subMenu.map((component) => (\n <ListItemMobile\n key={component.title}\n title={component.title}\n href={component.url}\n newTab={component.newTab}\n icon={\n menuItem.dropDownCompact === true\n ? component.icon\n : \"\"\n }\n >\n {menuItem.dropDownCompact === true\n ? component.description\n : \"\"}\n </ListItemMobile>\n ))}\n </ul>\n </AccordionContent>\n </AccordionItem>\n ) : (\n <a\n className=\"py-3 flex flex-1 items-center text-left justify-between font-medium transition-all hover:underline text-gray-900 border-b border-gray-200\"\n href={menuItem.url}\n {...linkProps}\n >\n {menuItem.title}\n </a>\n )}\n </motion.div>\n );\n })}\n </Accordion>\n );\n};\n\nexport default NavItemsMobile;\n","import { cn } from \"../../helpers/utils\";\n\nimport NavItems from \"./NavItems\";\nimport MobileMenu from \"./MobileMenu\";\nimport parse from 'html-react-parser';\nimport { Button } from \"../Button\";\nimport { ArrowDownTrayIcon } from \"@heroicons/react/16/solid\";\nimport { ReactElement, useState } from \"react\";\nimport { DialogQr } from \"../DialogQr\";\ninterface ComponentData {\n title: string;\n icon: string;\n url: string;\n description: string;\n newTab: boolean;\n}\n\ninterface MainNavItemWithDropdown {\n id: number;\n title: string;\n hasDropdown: boolean;\n dropDownCompact: boolean;\n subMenu: ComponentData[];\n}\n\ninterface MainNavItemWithoutDropdown {\n id: number;\n title: string;\n hasDropdown: boolean;\n url: string;\n newTab: boolean;\n}\n\ntype MainNavItem = MainNavItemWithDropdown | MainNavItemWithoutDropdown;\n\ninterface ServiceInfo {\n logo?: string;\n name?: string;\n url: string;\n}\nexport interface HeaderNavigationProps {\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * Data menu\n */\n dataMenu: MainNavItem[];\n /**\n * Service info\n */\n serviceInfo?: ServiceInfo;\n /**\n * Right Navigation\n */\n navigationRight?: ReactElement;\n /**\n * Has Download App\n */\n hasDownloadApp?: Boolean;\n /**\n * Has sticky Navigation Header, default is true\n */\n isSticky?: Boolean;\n /**\n * Align dropdown menu position\n */\n alignDropdown? : \"left\" | \"right\" | \"center\" \n}\n\n\nconst HeaderNavigation = ({ className, dataMenu, serviceInfo, hasDownloadApp = false, navigationRight, isSticky = true, alignDropdown=\"left\" }: HeaderNavigationProps) => {\n const { logo, name, url } = serviceInfo || {};\n const [openDialogQr, setOpenDialogQr] = useState<boolean>(false);\n return (\n <div\n className={cn(\n className,\n \"z-40 w-full flex-none lg:z-50 \", isSticky ? \"sticky top-0 \" : \"relative\"\n )}\n >\n\n <div\n className={cn(\n \"absolute h-full w-full bg-white shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]\",\n )}\n />\n <nav\n className={cn(\n \"wrapper grid grid-cols-1 items-center lg:border-0 [--header-height:64px] \",\n )}\n style={{ minHeight: \"var(--header-height)\" }}\n >\n <div className=\"relative flex items-center \">\n <a\n href=\"/\"\n title=\"MoMo\"\n className=\"mr-3 flex-none w-9 h-9 overflow-hidden rounded-none hover:opacity-80\"\n >\n <span className=\"sr-only\">MoMo home page</span>\n <img\n src=\"https://homepage.momocdn.net/fileuploads/svg/momo-file-240411162904.svg\"\n className=\"w-9 h-9\"\n alt=\"MoMo\"\n />\n </a>\n {serviceInfo && <a\n href={url}\n title={name}\n className=\" relative flex flex-none space-x-1 pl-2 items-center rounded-none hover:opacity-80 after:absolute after:left-0 after:h-8 after:w-[1px] after:bg-gray-300 after:content-[''] \"\n >\n <img\n src={logo}\n className=\"w-9 h-9\"\n alt=\"MoMo\"\n />\n\n <div className=\"text-sm font-semibold leading-[1.1] text-pink-500 line-clamp-2\">\n {name && parse(name)}\n </div>\n </a>}\n\n <div className=\"relative lg:ml-2 xl:ml-4 hidden lg:flex items-center \">\n <NavItems data={dataMenu} alignDropdown={alignDropdown}/>\n </div>\n <div className=\"ml-auto flex space-x-3 flex-nowrap items-center\">\n {navigationRight && navigationRight}\n {hasDownloadApp && <div className=\" hidden sm:flex\">\n <Button variant={\"primary\"} size={\"sm\"} className=\"tracking-cta-header\" onClick={() => setOpenDialogQr(true)}> <ArrowDownTrayIcon className=\"mr-1 w-4 h-4\" /> Tải Ví MoMo</Button>\n <DialogQr\n open={openDialogQr}\n onOpenChange={() => setOpenDialogQr(false)}\n title=\"Quét mã để tải Ví MoMo\"\n shortTitle=\"Tải ngay\"\n qrLink={\"http://momo.vn/download\"}\n />\n </div>}\n\n\n <MobileMenu data={dataMenu} className=\"lg:hidden \" />\n </div>\n </div>\n </nav>\n </div>\n );\n};\nHeaderNavigation.displayName = \"HeaderNavigation\";\n\nexport { HeaderNavigation };\n","import { useState } from \"react\";\nimport {\n APP_DOWNLOAD,\n MOMO_TEXT,\n SOCIAL_ITEMS,\n SUPPORT,\n} from \"../../helpers/constants\";\n\nimport { Button } from \"../Button\";\nimport { DialogQr } from \"../DialogQr\";\n\nconst FooterContentItem = ({ item }) => {\n return <div className=\"mt-3 flex w-full text-sm\">\n <a\n href={item.url}\n target={item.newTab ? \"_blank\" : \"_self\"}\n rel=\"noreferrer\"\n className=\"flex items-center space-x-2 text-white text-opacity-50 duration-300 hover:text-opacity-100\"\n >\n {item.icon &&\n <span className=\"relative flex-none h-5 w-5 md:h-6 md:w-6\">\n <img src={item.icon} className=\"absolute inset-0\" />\n </span>}\n\n <span className=\"block \">{item.title}</span>\n </a>\n </div>\n}\n\nconst FooterContent = ({ primaryMenu, secondaryMenu }) => {\n const [openDialogQr, setOpenDialogQr] = useState<number | null>(null);\n return (\n <>\n <div className=\"footer-main order-2 py-7 text-white md:order-1 text-sm\">\n <div className=\"wrapper grid grid-cols-2 gap-5 sm:gap-x-20 sm:gap-y-10 lg:flex lg:flex-nowrap lg:gap-14\">\n <div className=\"block grow md:w-44 md:shrink-0 md:border-none md:pb-0\">\n <div className=\"whitespace-nowrap text-xs font-bold uppercase text-white text-opacity-80\">\n {primaryMenu?.heading}\n </div>\n {primaryMenu?.lists?.map((item, index) => (\n <FooterContentItem key={index} item={item} />\n ))}\n </div>\n\n <div className=\" md:order-none md:w-40 md:flex-none md:shrink-0 md:border-none md:pb-0\">\n <div className=\"whitespace-nowrap text-xs font-bold uppercase text-white text-opacity-80\">\n {secondaryMenu?.heading}\n </div>\n <div className=\"flex flex-wrap\">\n {secondaryMenu?.lists?.map((item, index) => (\n <FooterContentItem key={index} item={item} />\n ))}\n </div>\n </div>\n\n <div className=\"col-span-2 grow border-t border-gray-700 pt-5 sm:col-span-1 md:border-none md:pt-0\">\n <div className=\"border-b border-gray-700 pb-5 md:border-0 md:pb-0\">\n <div className=\"whitespace-nowrap text-xs font-bold uppercase text-white text-opacity-80\">\n Chăm sóc khách hàng\n </div>\n <div className=\"mt-2 text-sm md:mt-3\">\n <span className=\"text-white text-opacity-50\">Địa chỉ : </span>\n <span className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\">\n {SUPPORT.Address}\n </span>\n </div>\n <div className=\"mt-1 text-sm\">\n <span className=\"text-white text-opacity-50\">Hotline : </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href={`tel:${MOMO_TEXT.Support.Hotline}`}\n >\n {MOMO_TEXT.Support.Hotline_Format}\n </a>\n <small className=\"text-xs italic text-white text-opacity-60\">\n {\" \"}\n (Phí 1.000đ/phút)\n </small>\n </div>\n <div className=\"mt-1 text-sm\">\n <span className=\"text-white text-opacity-50\">Email : </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href={`mailto:${MOMO_TEXT.Support.Email}`}\n >\n {MOMO_TEXT.Support.Email}\n </a>\n </div>\n <div className=\"mt-1 text-sm\">\n <span className=\"text-white text-opacity-50\">\n Tổng đài gọi ra :{\" \"}\n </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href={`tel:${MOMO_TEXT.Support.Phone_Ext_1}`}\n >\n {MOMO_TEXT.Support.Phone_Ext_1_Format}\n </a>\n <span className=\"text-white text-opacity-60\"> - </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href={`tel:${MOMO_TEXT.Support.Phone_Ext_2}`}\n >\n {MOMO_TEXT.Support.Phone_Ext_2_Format}\n </a>\n <span className=\"text-white text-opacity-60\"> - </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href={`tel:${MOMO_TEXT.Support.Phone_Ext_3}`}\n >\n {MOMO_TEXT.Support.Phone_Ext_3_Format}\n </a>\n <span className=\"text-white text-opacity-60\">\n , các đầu số di động Brandname MoMo\n </span>\n </div>\n <div className=\"mt-3 flex\">\n <a\n href=\"https://www.momo.vn/huong-dan/huong-dan-gui-yeu-cau-ho-tro-bang-tinh-nang-tro-giup\"\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n <div className=\"relative block overflow-hidden rounded border border-gray-400 bg-black py-1 pl-10 pr-2\">\n <div\n className=\"absolute left-1 top-1 \"\n style={{ paddingTop: \"3px\" }}\n >\n <svg\n className=\"h-7 w-7 text-gray-100 \"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n viewBox=\"0 0 345.1 512\"\n >\n <g>\n <title>Asset 1</title>\n <path\n d=\"M279.4,23.7H30.8C14.5,23.7,0,38.2,0,56.3v401.8c0,16.3,14.5,30.8,30.8,30.8H76h23.8L76,449.4H34.5V96.2h243.1v152l34.5,22\n V56.3C312,38.2,297.5,23.7,279.4,23.7z M226.8,77.1H86.1c-8.1,0-13.5-5.4-13.5-13.5c0-8.1,5.4-13.5,13.5-13.5h140.8\n c5.4,0,10.8,5.4,10.8,13.5C237.7,71.7,232.3,77.1,226.8,77.1z\"\n />\n <path\n d=\"M189.4,200.7c-14.4,0-25.9,11.6-25.9,25.9v155.7l-17.3-34.6c-14.2-26.3-28.1-23.6-38.9-17.3c-12.5,8.3-17.2,17-8.6,38.9\n c19.6,48.2,49.8,105.6,82.2,142.7h116.7c41-30.4,74-175,17.3-181.6c-5.2,0-13.5,0.8-17.3,4.3c0-17.3-15.1-21.7-21.6-21.6\n c-7.5,0.1-13,4.3-17.3,13c0-17.3-14.1-21.6-21.6-21.6c-8.3,0-17.9,5.2-21.6,13v-90.8C215.4,212.3,203.8,200.7,189.4,200.7z\"\n />\n </g>\n </svg>\n </div>\n <div className=\"text-xs text-white text-opacity-70\">\n Hướng dẫn trợ giúp trên\n </div>\n <div className=\"text-xs font-bold uppercase text-white text-opacity-90\">\n Ứng dụng MoMo\n </div>\n </div>\n </a>\n </div>\n </div>\n <div className=\"mt-4 border-b border-gray-700 pb-5 md:mt-8 md:border-none md:pb-0\">\n <div className=\"whitespace-nowrap text-xs font-bold uppercase text-white text-opacity-80\">\n Hợp tác doanh nghiệp\n </div>\n <div className=\"mt-2 text-sm md:mt-3\">\n <span className=\"text-white text-opacity-50\">Hotline : </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href={`tel:${MOMO_TEXT.Business.Phome}`}\n >\n {MOMO_TEXT.Business.Phome_Format}\n </a>\n </div>\n <div className=\"mt-1 text-sm\">\n <span className=\"text-white text-opacity-50\">Email : </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href={`mailto:${MOMO_TEXT.Business.Email}`}\n >\n {MOMO_TEXT.Business.Email}\n </a>\n </div>\n <div className=\"mt-1 text-sm\">\n <span className=\"text-white text-opacity-50\">Website : </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href=\"https://business.momo.vn/\"\n aria-label=\"MoMo Business\"\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n business.momo.vn\n </a>\n </div>\n <div className=\"mt-3 flex\">\n <a\n href=\"https://business.momo.vn/#menutop\"\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n <div className=\"relative block overflow-hidden rounded border border-gray-400 bg-black py-1 pl-12 pr-2 \">\n <div className=\"absolute left-1 top-1 flex aspect-1 items-center justify-center\">\n <svg\n width=\"30\"\n height=\"20\"\n viewBox=\"0 0 30 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"mt-2\"\n >\n <path\n d=\"M9.5688 5.21563C8.63815 5.98097 9.08817 8.15453 11.2556 6.84427C11.2556 6.84427 13.9037 5.51871 15.4497 4.6401C15.7864 4.4503 16.0129 4.51152 16.2946 4.83297C16.6038 5.05644 23.6112 12.8813 23.6112 12.8813C23.6112 12.8813 25.7725 11.2404 26.6144 9.51683C26.6144 9.51683 24.6735 5.8677 22.8214 2.24612C22.2857 2.5492 21.8265 2.83696 21.2111 2.66247C20.5744 2.48185 20.0478 1.98285 19.4723 1.64916C18.8171 1.26649 18.26 0.92362 17.5283 0.819534C16.4446 0.663406 15.5935 1.15016 14.6598 1.6859C13.5975 2.29511 12.5689 2.97779 11.5617 3.69414C10.8821 4.17171 10.2178 4.6799 9.5688 5.21563Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M10.9281 17.4029C10.5638 16.9008 10.6342 16.1538 11.0842 15.7344L13.3068 13.7109C13.7568 13.2884 14.415 13.3527 14.7793 13.8517C15.1436 14.3507 15.0731 15.0977 14.6231 15.5232L12.4006 17.5467C11.9536 17.9631 11.2924 17.9019 10.9281 17.4029Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M8.87706 15.5385C8.51275 15.0364 8.58317 14.2895 9.03318 13.867L10.7873 12.272C11.2374 11.8496 11.8955 11.9139 12.2598 12.4129C12.6241 12.9149 12.5537 13.6619 12.1037 14.0844L10.3496 15.6824C9.90261 16.1018 9.24136 16.0375 8.87706 15.5385Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M6.39426 14.014C6.05751 13.4905 6.1616 12.7496 6.62998 12.3547L7.02184 12.0486C7.49022 11.6537 8.14535 11.7608 8.48822 12.2812L8.51271 12.3118C8.85252 12.8353 8.72395 13.5456 8.2525 13.9405L7.86065 14.2466C7.39226 14.6415 6.73407 14.5374 6.39426 14.014Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M16.2182 16.2671C15.8325 15.7895 15.1712 15.762 14.7396 16.2089L13.7814 17.2039C13.3497 17.6508 13.313 18.4009 13.6987 18.8815C14.0844 19.3621 14.7488 19.3866 15.1773 18.9397L16.1355 17.9447C16.5672 17.4978 16.6039 16.7477 16.2182 16.2671Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M29.9207 7.86982C30.0799 8.1729 29.9911 8.53108 29.7278 8.66884L28.1145 9.51989C27.8512 9.65459 27.5084 9.51989 27.3522 9.21682L23.5255 1.81447C23.3694 1.5114 23.4551 1.15322 23.7184 1.01546L25.3317 0.167464C25.595 0.0297027 25.9379 0.167463 26.094 0.470537L29.9207 7.86982Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M2.61348 9.14334C2.49409 9.46479 2.18489 9.6454 1.92467 9.54744L0.299097 8.98415C0.0388821 8.88619 -0.0713265 8.54638 0.0480662 8.228L2.9839 0.430738C3.10329 0.109296 3.41249 -0.0713245 3.67271 0.0266388L5.29828 0.592989C5.5585 0.690952 5.66871 1.03076 5.54931 1.34914L2.61348 9.14334Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M23.5224 13.8395L23.5163 13.8333C23.4826 14.0109 23.4336 14.1609 23.2989 14.3109C23.0816 14.5528 22.7999 14.6721 22.5152 14.6721C22.2183 14.6721 21.9183 14.5405 21.6887 14.2772L18.9212 11.1393C18.8692 11.0781 18.8049 11.0506 18.7375 11.0506C18.4742 11.0506 18.1804 11.4853 18.4191 11.7363L20.6907 14.2466C21.1223 14.7426 21.1315 15.5079 20.7029 15.9855C20.5039 16.2059 20.259 16.313 20.011 16.313C19.7233 16.313 19.4294 16.1722 19.1967 15.9059L16.5946 13.0037C16.5364 12.9119 16.4629 12.8721 16.3864 12.8721C16.1415 12.8721 15.8843 13.2792 16.1415 13.5731L18.1436 15.8691C18.563 16.3498 18.5293 17.0967 18.1161 17.5621C17.9263 17.7733 17.6936 17.8743 17.4548 17.8743C17.3171 17.8743 17.1762 17.8406 17.0415 17.7733C16.9589 17.9937 16.8364 18.2019 16.6772 18.3856C16.9221 18.5203 17.1885 18.5968 17.4548 18.5968C17.8926 18.5968 18.3059 18.407 18.6181 18.058C18.9426 17.6968 19.111 17.2376 19.1294 16.7753C19.3988 16.9437 19.7049 17.0355 20.011 17.0355C20.4611 17.0355 20.8866 16.8396 21.208 16.4814C21.5295 16.1232 21.6948 15.6579 21.707 15.1895C21.955 15.3242 22.2336 15.3946 22.5152 15.3946C23.005 15.3946 23.4612 15.1834 23.801 14.8038C24.1255 14.4395 24.1837 14.0599 24.2235 13.7844C24.2449 13.6343 24.2173 13.4843 24.1561 13.3527C24.0765 13.417 24.0275 13.4537 24.0153 13.4629L23.5224 13.8395Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M6.20135 11.7914L6.21053 11.7822L6.21972 11.7731L6.38503 11.6445C5.02579 10.2669 4.19616 9.2505 4.19616 9.2505C5.5003 5.92894 6.97587 1.88183 6.97587 1.88183C6.96363 2.11143 7.73509 2.52166 7.89122 2.58288C8.14837 2.68697 8.42695 2.73595 8.70553 2.73595C8.78513 2.73595 8.86166 2.73289 8.9382 2.7237C9.75252 2.64105 10.5179 2.17266 11.2342 1.7655C11.7179 1.49304 12.3179 1.21446 12.8843 1.21446C13.1537 1.21446 13.4139 1.28487 13.6557 1.441C13.8731 1.30936 14.0874 1.18078 14.2986 1.06139C14.2619 1.01547 14.2221 0.972612 14.1762 0.935876C13.8088 0.641986 13.3741 0.495041 12.8873 0.495041C12.1312 0.495041 11.3965 0.859342 10.9097 1.1318L10.723 1.23895C10.1107 1.58794 9.48006 1.94612 8.87391 2.00735C8.8188 2.01347 8.76064 2.01653 8.70553 2.01653C8.50349 2.01653 8.30756 1.9798 8.13918 1.91245C8.01673 1.8604 7.73815 1.69815 7.60651 1.59407C7.52079 1.38589 7.34323 1.22977 7.11976 1.17772C7.07077 1.16548 7.02179 1.16242 6.97587 1.16242C6.69729 1.16242 6.43707 1.34304 6.33299 1.62774C6.31768 1.66754 4.84517 5.70546 3.5594 8.97804C3.46144 9.22907 3.5043 9.51684 3.67267 9.72195C3.70941 9.76481 4.52985 10.7659 5.87991 12.1374C5.97175 12.0149 6.0789 11.8955 6.20135 11.7914Z\"\n fill=\"#fff\"\n />\n </svg>\n </div>\n <div className=\"text-xs text-white text-opacity-70\">\n Hợp tác doanh nghiệp\n </div>\n <div className=\"text-xs font-semibold uppercase text-white text-opacity-90\">\n Đăng ký hợp tác\n </div>\n </div>\n </a>\n </div>\n </div>\n </div>\n <div className=\"col-span-2 gap-8 sm:col-span-1 md:mt-0 md:flex md:flex-col md:flex-wrap md:justify-between \">\n <div className=\"h-auto\">\n <div className=\"hidden whitespace-nowrap text-xs font-bold uppercase text-white text-opacity-80 md:block\">\n Kết nối với chúng tôi\n </div>\n <div className=\"mt-3 hidden flex-row items-stretch md:flex\">\n <ul className=\"item-center flex list-none flex-wrap space-x-4\">\n {SOCIAL_ITEMS &&\n SOCIAL_ITEMS.map((item, index) => (\n <li className=\"inline-block\" key={index}>\n <a\n href={item.Link}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"duration-300 hover:brightness-125\"\n >\n <img\n src={item.Image}\n loading=\"lazy\"\n width=\"40\"\n height=\"40\"\n />\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n <div className=\"h-auto\">\n <div className=\"hidden whitespace-nowrap text-xs font-bold uppercase text-white text-opacity-80 md:block\">\n Tải ứng dụng trên điện thoại\n </div>\n <div className=\"flex items-center flex-wrap md:mt-3 md:space-x-1.5\">\n <div className=\"relative hidden h-24 w-24 lg:w-20 lg:h-20 grow-0 overflow-hidden rounded-sm bg-white md:block\">\n <img\n src=\"https://homepage.momocdn.net/img/momo-upload-api-230627140125-638234712853800898.jpg\"\n alt=\"Qr-Dowbnload MoMo\"\n className=\" absolute inset-0\"\n />\n </div>\n <div className=\"flex grow justify-center gap-2 md:grid md:grid-cols-1 md:gap-1.5\">\n {APP_DOWNLOAD &&\n APP_DOWNLOAD.map((item, index) => (\n <div\n className=\"w-full md:flex md:items-center button-download\"\n key={index}\n style={{\n background: `url(${item.Image}) center center / contain no-repeat`,\n }}\n >\n <Button\n onClick={() => setOpenDialogQr(index)}\n className=\"!bg-transparent rounded-none w-full hidden sm:block\"\n style={{ fontSize: \"0px\", padding: \"0 0 30.23%0\" }}\n >\n {item.Name}\n </Button>\n <a\n href={item.Link}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"button-download block sm:hidden\"\n style={{ fontSize: \"0px\", padding: \"0 0 30.23%0\" }}\n />\n <DialogQr\n open={openDialogQr === index}\n onOpenChange={() => setOpenDialogQr(null)}\n title=\"Quét mã để tải ứng dụng\"\n shortTitle=\"Tải ngay\"\n qrLink={item.Link}\n />\n </div>\n ))}\n </div>\n <div className=\"mt-4 flex w-full justify-center text-center md:hidden\">\n <ul className=\"item-center flex list-none flex-wrap space-x-3.5\">\n {SOCIAL_ITEMS &&\n SOCIAL_ITEMS.map((item, index) => (\n <li key={index}>\n <a\n href={item.Link}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"flex duration-300 hover:brightness-125\"\n >\n <img\n alt={item.Name}\n src={item.Image}\n loading=\"lazy\"\n width=\"36\"\n height=\"36\"\n />\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </div>\n <div className=\"h-auto\">\n <div className=\"hidden whitespace-nowrap text-xs font-bold uppercase text-white text-opacity-80 md:block\">\n Được chứng nhận bởi\n </div>\n <div className=\"mt-6 flex items-center justify-between md:mt-3 md:justify-normal\">\n <span className=\"block text-right text-xs text-white text-opacity-50 md:hidden\">\n ©Copyright M_Service {new Date().getFullYear()}\n </span>\n <a\n rel=\"noopener noreferrer\"\n href=\"http://online.gov.vn/Home/AppDetails/163\"\n target=\"_blank\"\n className=\" flex w-28 items-center md:w-auto\"\n >\n <img\n alt=\"chứng nhận\"\n src=\"https://homepage.momocdn.net/blogscontents/momo-upload-api-210629153623-637605777831780706.png\"\n width={119}\n height={45}\n />\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div className=\" footer-bottom order-1 bg-gray-800 py-3.5 md:order-2 md:py-5\">\n <div className=\"wrapper flex flex-wrap items-end justify-between md:flex-nowrap md:space-x-3\">\n <div className=\"mb-2.5 flex justify-between md:mb-0\">\n <img\n src=\"https://homepage.momocdn.net/fileuploads/svg/momo-file-240411162904.svg\"\n className=\"w-9 h-9\"\n alt=\"MoMo\"\n />\n <div className=\"shrink pl-3\">\n <div className=\"text-sm text-white text-opacity-80 md:mb-1.5 \">\n CÔNG TY CỔ PHẦN DỊCH VỤ DI ĐỘNG TRỰC TUYẾN\n </div>\n <span className=\"hidden text-xs text-white text-opacity-50 md:block lg:text-sm lg:leading-none\">\n Lầu 6, Toà nhà Phú Mỹ Hưng, số 8 Hoàng Văn Thái, khu phố 1, P.\n Tân Phú, Q. 7, Thành phố Hồ Chí Minh\n </span>\n </div>\n </div>\n <span className=\"block text-sm text-white text-opacity-50 md:hidden\">\n Lầu 6, Toà nhà Phú Mỹ Hưng, số 8 Hoàng Văn Thái, khu phố 1, P. Tân\n Phú, Q. 7, Thành phố Hồ Chí Minh\n </span>\n\n <span className=\"hidden w-48 flex-none text-right text-sm text-white text-opacity-50 md:block\">\n ©Copyright M_Service {new Date().getFullYear()}\n </span>\n </div>\n </div>\n <style>{`\n footer .button-download {\n max-width: 150px;\n }\n `}</style>\n </>\n );\n};\n\nexport default FooterContent;","import FooterContent from \"./FooterContent\"\nimport { cn } from \"../../helpers/utils\";\nexport interface FooterItem {\n title: string;\n url: string;\n icon?: string | null;\n newTab: boolean;\n}\n\n// Define interface for footer data\nexport interface FooterData {\n heading: string;\n lists: FooterItem[];\n}\n\nexport interface FooterProps {\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * Data menu column 1\n */\n primaryMenu?: FooterData;\n /**\n * Data menu column 2\n */\n secondaryMenu?: FooterData;\n}\n\nconst Footer = ({ className, primaryMenu, secondaryMenu }: FooterProps) => {\n return (\n <footer className={cn('grid grid-cols-1 flex-wrap bg-gray-900', className)}>\n <FooterContent primaryMenu={primaryMenu} secondaryMenu={secondaryMenu} />\n </footer>\n );\n};\n\nexport { Footer }","import * as React from \"react\"\n\nimport { cn } from \"../../helpers/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border bg-card text-card-foreground shadow\",\n className\n )}\n {...props}\n />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import * as React from \"react\";\nimport { type DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { cn } from \"../../helpers/utils\";\nimport { Dialog, DialogContent } from \"../Dialog\";\nimport {\n XCircleIcon,\n MagnifyingGlassIcon,\n CheckIcon,\n} from \"@heroicons/react/16/solid\";\n\ninterface ItemProps {\n isActive?: boolean;\n}\n\ninterface InputProps {\n onClickClear?: (value: string) => void;\n}\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex text-gray-900 border border-gray-300 shadow-lg bg-white h-full w-full flex-col overflow-hidden rounded-md\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ninterface CommandDialogProps extends DialogProps {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input> & InputProps\n>(({ className, onClickClear, ...props }, ref) => {\n const divRef = React.useRef<HTMLDivElement>(null);\n const [search, setSearch] = React.useState(\"\");\n\n const handleClearInput = () => {\n if (!search || search?.length <= 0) return;\n setSearch(\"\");\n onClickClear?.(search);\n };\n\n return (\n <div\n ref={divRef}\n className=\"flex items-center border-b px-3\"\n cmdk-input-wrapper=\"\"\n >\n <MagnifyingGlassIcon className=\"mr-2 h-4 w-4 shrink-0 text-gray-500\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 text-gray-900 w-full rounded-md focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-offset-0 focus:ring-0 bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n value={search}\n onValueChange={setSearch}\n {...props}\n />\n <XCircleIcon\n onClick={handleClearInput}\n className={cn(\n \"ml-2 transition-all cursor-pointer h-4 w-4 duration-75 shrink-0 text-gray-500\",\n search?.length > 0 ? \"opacity-100\" : \"opacity-0\",\n )}\n />\n </div>\n );\n});\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\n \"max-h-[300px] text-gray-900 overflow-y-auto overflow-x-hidden\",\n className,\n )}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-gray-900 text-center text-sm\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden text-gray-900 p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 text-gray-900 h-px bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item> & ItemProps\n>(({ className, children, isActive, ...props }, ref) => {\n return (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative cursor-pointer text-gray-900 flex rounded-md select-none hover:bg-gray-100 aria-selected:bg-gray-100 aria-selected:text-gray-900 items-center px-2 py-1.5 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n isActive ? \"bg-gray-100\" : \"\",\n className,\n )}\n {...props}\n >\n <CheckIcon\n className={cn(\"h-4 w-4 mr-2\", isActive ? \"opacity-100\" : \"opacity-0\")}\n />\n {children}\n </CommandPrimitive.Item>\n );\n});\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs text-gray-900 tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","import * as React from \"react\";\nimport { cn } from \"../../helpers/utils\";\nimport { ChevronDownIcon } from \"@heroicons/react/16/solid\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { Popover, PopoverTrigger, PopoverContent } from \"../Popover\";\n\ninterface ComboboxTriggerProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {\n className?: string;\n value?: string;\n label?: string;\n children: any;\n placeholder?: string;\n}\n\ninterface ComboboxContentProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {\n children?: any;\n className?: string;\n}\n\ninterface ComboboxProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Popover> {}\n\nexport const ComboboxTrigger = ({\n className,\n value,\n label,\n children,\n placeholder,\n}: ComboboxTriggerProps) => {\n return (\n <div className=\"relative\">\n <PopoverTrigger\n className={cn(\n \"focus-visible:outline-none w-72 focus-visible:ring-0 focus-visible:ring-offset-0 focus:ring-0 select-mobase-button bg-white ring-0 transition-all rounded-md border border-gray-300 data-[placeholder]:text-gray-500 p-3 disabled:bg-gray-50 disabled:border-gray-200 disabled:pointer-events-none flex items-center justify-between data-[state=open]:border-pink-500 data-[state=open]:ring-1 hover:ring-1 hover:ring-gray-400 data-[state=open]:ring-pink-500 text-gray-900 h-11 ring-inset text-sm\",\n className,\n )}\n >\n {value || children || placeholder}\n <ChevronDownIcon className=\"h-4 w-4 text-gray-700 flex-none\" />\n </PopoverTrigger>\n {label && (\n <span className=\"absolute bg-white -top-2 px-1.5 left-2 text-xs text-gray-500 z-[1]\">\n {label}\n </span>\n )}\n </div>\n );\n};\n\nexport const ComboboxContent = ({\n children,\n className,\n}: ComboboxContentProps) => {\n return (\n <PopoverContent className={cn(\"!p-0 border-none\", className)}>\n {children}\n </PopoverContent>\n );\n};\n\nexport const Combobox = ({ open, onOpenChange, children }: ComboboxProps) => {\n return (\n <Popover open={open} onOpenChange={onOpenChange}>\n {children}\n </Popover>\n );\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\nimport { cn } from \"../../helpers/utils\";\nimport { InformationCircleIcon } from \"@heroicons/react/24/outline\";\nimport { TextButton } from \"../TextButton\";\n\ninterface CalloutProps {\n message: string;\n type: \"neutral\" | \"error\" | \"success\" | \"warning\" | \"info\";\n withAction?: string;\n onClickAction?: () => void;\n className?: string;\n disabled?: boolean;\n actionClassName?: string;\n}\n\nconst calloutVariants = cva(\n \"px-3 py-2 rounded-md border flex items-center space-x-2 text-gray-700 text-sm \",\n {\n variants: {\n typeDiv: {\n neutral: \"bg-gray-50 border-gray-300 \",\n error: \"bg-red-50 border-red-300\",\n success: \"bg-green-50 border-green-300\",\n warning: \"bg-yellow-50 border-yellow-300\",\n info: \"bg-blue-50 border-blue-300\",\n },\n disabled: {\n true: \"text-gray-400 bg-gray-50 opacity-55 pointer-events-none border-gray-300\",\n },\n },\n defaultVariants: {\n typeDiv: \"neutral\",\n },\n },\n);\n\nconst iconVariants = cva(\"w-5 h-5 shrink-0 border-none p-0 \", {\n variants: {\n typeIcon: {\n neutral: \"text-gray-700\",\n error: \"text-red-700\",\n success: \"text-green-700\",\n warning: \"text-yellow-700\",\n info: \"text-blue-700\",\n },\n disabled: {\n true: \"text-gray-400\",\n },\n },\n defaultVariants: {\n typeIcon: \"neutral\",\n },\n});\n\nexport const Callout = forwardRef<\n HTMLDivElement,\n CalloutProps &\n VariantProps<typeof calloutVariants> &\n VariantProps<typeof iconVariants>\n>(\n (\n {\n type = \"neutral\",\n message = \"\",\n withAction = false,\n onClickAction,\n className,\n disabled,\n actionClassName,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"\",\n className,\n calloutVariants({ typeDiv: type, disabled }),\n )}\n {...props}\n >\n <div className=\"flex items-center space-x-2\">\n <InformationCircleIcon\n className={cn(iconVariants({ typeIcon: type, disabled }))}\n width={20}\n height={20}\n />\n <div>\n Bạn cần cho phép website sử dụng thông tin vị trí để sử dụng tính\n năng này\n </div>\n </div>\n {withAction && (\n <TextButton\n variant=\"primary\"\n onClick={() => onClickAction?.()}\n className={cn(\"\", actionClassName)}\n isDisabled={disabled}\n >\n {withAction}\n </TextButton>\n )}\n </div>\n );\n },\n);\n","import {\n ChangeEvent,\n FocusEvent,\n forwardRef,\n InputHTMLAttributes,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { MagnifyingGlassIcon } from \"@heroicons/react/20/solid\";\nimport { XCircleIcon } from \"@heroicons/react/24/outline\";\nimport { cn } from \"../../helpers/utils\";\n\nexport interface SearchBarProps extends InputHTMLAttributes<HTMLInputElement> {\n inputClassName?: string;\n size?: 1 | 2;\n onClickClear?: (inputValue: string) => void;\n}\n\nexport const SearchBar = forwardRef<HTMLInputElement, SearchBarProps>(\n (\n {\n disabled,\n className,\n inputClassName,\n size,\n onChange,\n onFocus,\n onClickClear,\n value,\n defaultValue,\n type = \"text\",\n ...restProps\n },\n ref,\n ) => {\n const [clearable, setClearable] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n\n const handleShowClearButton = (inputValue) => {\n if (inputValue && !clearable) {\n setClearable(true);\n }\n\n if (!inputValue && clearable) {\n setClearable(false);\n }\n };\n\n const onChangeFactory = (event: ChangeEvent<HTMLInputElement>) => {\n handleShowClearButton(event.target.value);\n onChange?.(event);\n };\n\n const onFocusFactory = (event: FocusEvent<HTMLInputElement, Element>) => {\n handleShowClearButton(event.target.value);\n onFocus?.(event);\n };\n\n const handleClear = () => {\n const inputTarget = rootRef.current?.querySelector(\"input\");\n if (!inputTarget) return;\n onClickClear?.(inputTarget.value);\n\n inputTarget.value = \"\";\n inputTarget.focus();\n setClearable(false);\n };\n\n useEffect(() => {\n handleShowClearButton(defaultValue || value);\n }, [value, defaultValue]);\n\n return (\n <div className={cn(className)} ref={rootRef}>\n <div className=\"relative flex items-center\">\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 shrink-0 text-gray-500 duration-200 \">\n <MagnifyingGlassIcon className=\"w-4 h-4 text-gray-500\" />\n </div>\n <input\n disabled={disabled}\n type={type}\n ref={ref}\n className={cn(\n \"mobase-text-input-box text-gray-900 h-10 bg-white w-full transition-all text-sm rounded-md border border-gray-300 placeholder:text-gray-500 px-9 focus:border-pink-500 disabled:bg-gray-50 disabled:border-gray-200 disabled:pointer-events-none block disabled:opacity-50\",\n inputClassName,\n )}\n onChange={onChangeFactory}\n onFocus={onFocusFactory}\n value={value}\n defaultValue={defaultValue}\n {...restProps}\n />\n\n {clearable && (\n <button\n aria-label=\"button\"\n type=\"button\"\n className=\"absolute right-3 top-1/2 -translate-y-1/2 shrink-0 cursor-pointer text-gray-500 duration-200 hover:opacity-70 disabled:pointer-events-none\"\n disabled={disabled}\n onClick={handleClear}\n >\n <XCircleIcon strokeWidth={2} width={20} height={20} />\n </button>\n )}\n </div>\n\n <style>\n {`\n .mobase-text-input-box:hover {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-gray-400) / 1) inset;\n }\n .mobase-text-input-box:focus {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-pink-500) / 1) inset;\n }\n `}\n </style>\n </div>\n );\n },\n);\n","import { Swiper, SwiperSlide } from \"swiper/react\";\nimport { Navigation, Lazy, Pagination } from \"swiper\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport React, { ReactNode, useEffect, useState } from \"react\";\nimport { IconButton } from \"../IconButton\";\nimport { cn } from \"../../helpers/utils\";\nimport { X } from \"lucide-react\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"@heroicons/react/24/outline\";\nimport _ from \"lodash\";\n\nexport const LightboxGalleryDialog = DialogPrimitive.Root;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 bg-black/80 z-50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\ninterface CloseDialogProps {\n clearActiveIndex?: () => void;\n}\n\nconst CloseDialog = ({ clearActiveIndex }: CloseDialogProps) => {\n return (\n <DialogPrimitive.Close\n onClick={() => clearActiveIndex?.()}\n className=\"flex transition-all z-10 text-sm items-center space-x-1 absolute left-3 top-6 md:left-6 hover:bg-white/20 text-white rounded-md px-4 py-2\"\n >\n <X className=\"h-4 w-4 mt-0.5\" />\n <div className=\"\">Đóng cửa sổ</div>\n </DialogPrimitive.Close>\n );\n};\n\ninterface LightboxThumbnailProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Trigger> {\n children?: ReactNode;\n onClick?: () => void;\n src?: string;\n alt?: string;\n className?: string;\n classNameImage?: string;\n}\n\nexport const LightboxThumbnail = ({\n children,\n src,\n alt,\n className,\n classNameImage,\n onClick,\n}: LightboxThumbnailProps) => {\n const handleOnClickThumbnail = () => {\n onClick?.();\n };\n return (\n <DialogPrimitive.Trigger\n className={cn(\n \"aspect-[2/3] relative overflow-hidden rounded-lg\",\n className,\n )}\n onClick={handleOnClickThumbnail}\n >\n {children}\n <img\n src={src}\n alt={alt}\n className={cn(\"w-full h-full object-cover rounded-lg\", classNameImage)}\n />\n </DialogPrimitive.Trigger>\n );\n};\n\nexport const DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay className=\"bg-black\" />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"h-full min-w-full border-none rounded-none z-[999] fixed bg-black left-[50%] top-[50%] grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] \",\n className,\n )}\n {...props}\n >\n {children}\n <CloseDialog />\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\ninterface LightBoxContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n images: { url: string; titleImage?: string; idx?: number }[];\n activeSlideIndex?: number;\n withSideBar?: boolean;\n subHtmlSideBar?: ReactNode;\n classNameSubHtmSideBar?: string;\n isPagination?: boolean;\n}\n\nexport const LightBoxContent = ({\n images,\n activeSlideIndex = 0,\n withSideBar,\n subHtmlSideBar,\n classNameSubHtmSideBar,\n className,\n isPagination = false,\n}: LightBoxContentProps) => {\n const [activeSlide, setActiveSlide] = useState(activeSlideIndex);\n const [titleImage, setTitleImg] = useState(\"\");\n\n const onGetTitleImage = () => {\n const result = _.filter(images, (_, idx) => idx === activeSlideIndex);\n const titleImgDraf = result.length > 0 ? result[0]?.titleImage : \"\";\n setTitleImg(titleImgDraf);\n };\n\n useEffect(() => {\n setActiveSlide(activeSlideIndex);\n onGetTitleImage();\n }, [activeSlideIndex]);\n\n const pagination = {\n clickable: true,\n renderBullet(index, className) {\n const classNameParent = cn(\n \"aspect-[1/1] min-w-[96px] mt-40 min-h-[76px] !rounded-lg overflow-hidden\",\n className,\n );\n const classNameImage = cn(\"w-full h-full object-cover rounded-lg\");\n if (!images[index]?.url) {\n return \"<div></div>\";\n }\n return `\n <div class=\"${classNameParent} \">\n <img class=\"${classNameImage} \" src=\"${images[index]?.url}\" alt=\"Slide ${index + 1}\" />\n </div>\n `;\n },\n };\n\n const arrayModule = isPagination\n ? [Navigation, Lazy, Pagination]\n : [Navigation, Lazy];\n\n return (\n <DialogContent className={cn(\"flex py-0\", className)}>\n <div className=\"lightbox flex-1 py-6\">\n <div className=\"flex items-center justify-end md:justify-center mt-2 w-full\">\n <div>\n {activeSlide ? activeSlide + 1 : 1} / {images?.length}\n </div>\n </div>\n <Swiper\n initialSlide={activeSlideIndex}\n onSlideChange={({ realIndex }) => {\n setActiveSlide(realIndex);\n onGetTitleImage();\n const activeBullet = document.querySelector(\n \".swiper-pagination-bullet-active\",\n );\n if (activeBullet) {\n activeBullet.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }}\n onDestroy={() => {\n setActiveSlide(activeSlideIndex);\n onGetTitleImage();\n }}\n slidesPerView=\"auto\"\n className=\"swiper lightboxSwiper\"\n navigation={{\n nextEl: \".lightbox .next-lightbox\",\n prevEl: \".lightbox .prev-lightbox\",\n }}\n pagination={pagination}\n modules={arrayModule}\n lazy={{\n loadPrevNext: true,\n }}\n >\n {images.map((img, index) => (\n <SwiperSlide key={index}>\n <div className=\"absolute top-28 bottom-28 left-0 right-0 min-h-0 sm:left-20 sm:right-20\">\n <img\n src={img.url}\n alt=\"\"\n className=\"absolute h-full w-full object-contain\"\n loading=\"lazy\"\n />\n </div>\n <div className=\"swiper-lazy-preloader swiper-lazy-preloader-white\" />\n <div className=\"text-sm px-20 text-center text-white/80 absolute bottom-10 my-4 flex items-center justify-center w-full z-[999]\">\n {titleImage}\n </div>\n </SwiperSlide>\n ))}\n <IconButton className=\"disabled:bg-white/60 prev-lightbox button-swiper translate swiper-cate-merchant absolute inset-y-1/2 left-6 z-10 hidden h-12 w-12 -translate-y-1/2 cursor-pointer items-center justify-center rounded-full border border-gray-300 bg-white text-white shadow-md duration-200 ease-in-out hover:bg-white/80 hover:shadow-md md:flex\">\n <ChevronLeftIcon className=\"w-7 text-slate-900\" />\n </IconButton>\n <IconButton className=\"disabled:bg-white/60 next-lightbox translate swiper-cate-merchant button-swiper absolute inset-y-1/2 right-6 z-10 hidden h-12 w-12 -translate-y-1/2 cursor-pointer items-center justify-center rounded-full border border-gray-300 bg-white text-white shadow-md duration-300 ease-in-out hover:bg-white/80 hover:shadow-md md:flex\">\n <ChevronRightIcon className=\"w-7 text-slate-900\" />\n </IconButton>\n </Swiper>\n\n <style>\n {`\n .lightbox {\n --lightbox-topnav: 112px;\n --lightbox-botnav: 80px;\n }\n\n @media (max-width: 639px) {\n .lightbox {\n --lightbox-topnav: 60px;\n --lightbox-botnav: 80px;\n }\n .lightbox .swiper-button-prev {\n display: none;\n }\n\n .lightbox .swiper-button-next {\n display: none;\n }\n .swiper-pagination{\n justify-content: start !important;\n }\n }\n\n .lightbox-content {\n top: var(--lightbox-topnav) !important;\n height: calc(100% - var(--lightbox-topnav)) !important;\n width: 100% !important;\n }\n .lightboxSwiper {\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .lightboxSwiper .swiper-slide {\n text-align: center;\n display: -webkit-box;\n display: -ms-flexbox;\n display: -webkit-flex;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n -webkit-align-items: center;\n align-items: center;\n }\n\n .lightboxSwiper.swiper-slide img {\n display: block;\n width: 100%;\n height: 100%;\n }\n .swiper-wrapper{\n bottom: 0px;\n }\n .swiper-pagination{\n max-width: 100%;\n width: 100%;\n overflow-x: auto;\n display: flex;\n justify-content: center;\n }\n\n .swiper-pagination-bullet{\n background: unset;\n opacity: 1;\n }\n .swiper-pagination-bullet-active{\n border: 2px solid white;\n }\n `}\n </style>\n </div>\n {withSideBar && (\n <div\n className={cn(\n \"hidden md:flex overflow-y-auto bg-white text-gray-900 px-6 pb-4 pt-2 w-full max-w-sm lg:max-w-md\",\n classNameSubHtmSideBar,\n )}\n >\n {subHtmlSideBar}\n </div>\n )}\n </DialogContent>\n );\n};\n\ninterface LightboxGalleryProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Dialog> {\n className?: string;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport const LightboxGallery = ({\n children,\n className,\n open,\n onOpenChange,\n}: LightboxGalleryProps & { children: ReactNode }) => {\n return (\n <div className={cn(\"lightbox-gallery \", className)}>\n <LightboxGalleryDialog open={open} onOpenChange={onOpenChange}>\n {React.Children?.map(children, (child) => {\n if (React.isValidElement(child)) {\n const updatedProps = {};\n const knownProps = Object.keys(updatedProps).reduce((acc, key) => {\n if (updatedProps[key] !== undefined) {\n acc[key] = updatedProps[key];\n }\n return acc;\n }, {});\n return React.cloneElement(child, knownProps);\n }\n return null;\n })}\n </LightboxGalleryDialog>\n </div>\n );\n};\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { cn } from \"../../helpers/utils\";\nimport { Circle } from \"lucide-react\";\n\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"@heroicons/react/16/solid\";\n\ntype ChoiceboxGroupProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> & {\n /**\n * Hide indicator when needed, default is false\n */\n hideIndicator?: boolean;\n}\n\ntype ChoiceboxGroupContextProps = {\n hideIndicator?: ChoiceboxGroupProps[\"hideIndicator\"]\n}\n\nconst ChoiceboxGroupContext = React.createContext<ChoiceboxGroupContextProps>({\n hideIndicator: false\n});\n\n/**\n * Hook to get the current context value for ChoiceboxGroup.\n *\n * @returns The current context value for ChoiceboxGroup.\n * @throws If the context is undefined.\n */\nexport function useChoiceboxGroupContext() {\n const context = React.useContext(ChoiceboxGroupContext);\n\n if (!context) {\n throw new Error(\"ChoiceboxGroup.Item must be used within a ChoiceboxGroup \");\n }\n return context;\n}\n\nconst ChoiceboxGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>, ChoiceboxGroupProps\n>(({ className, hideIndicator = false, ...props }, ref) => {\n\n return (\n <ChoiceboxGroupContext.Provider value={{ hideIndicator }}>\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", hideIndicator && \"hide-indicator\", className)}\n {...props}\n ref={ref}\n />\n </ChoiceboxGroupContext.Provider>\n )\n})\nChoiceboxGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst ChoiceboxGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, children, ...props }, ref) => {\n const context = useChoiceboxGroupContext();\n const { hideIndicator } = context ?? {};\n return (\n\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"cursor-pointer relative block border border-gray-300 text-gray-900 p-3 md:px-4 md:py-3 rounded-md bg-white w-full hover:border-pink-500 disabled:bg-gray-100 disabled:border-gray-300 disabled:pointer-events-none disabled:cursor-default data-[state=checked]:border-pink-500 ring-inset ring-pink-500 data-[state=checked]:ring-[1px] group flex items-center space-x-2 text-left\",\n className\n )}\n {...props}\n >\n <div className=\"flex-1 min-w-0\">{children}</div>\n {!hideIndicator && <div className={cn(\"flex-none aspect-square h-4 w-4 rounded-full border-2 border-gray-300 group-disabled:bg-gray-200 group-disabled:data-[state=checked]:text-gray-300 group-data-[state=checked]:text-white group-disabled:data-[state=checked]:bg-gray-100 group-data-[state=checked]:bg-pink-500 group-data-[state=checked]:border-none group-disabled:cursor-default has\")}>\n\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center w-full h-full rounded-full \">\n <Circle className=\"h-1.5 w-1.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n\n </div>}\n </RadioGroupPrimitive.Item>\n\n )\n})\n\nChoiceboxGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\n\n\nconst ChoiceboxMultiItem = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className,children, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"cursor-pointer relative block border border-gray-300 text-gray-900 p-3 md:px-4 md:py-3 rounded-md bg-white w-full hover:border-pink-500 disabled:bg-gray-100 disabled:border-gray-300 disabled:pointer-events-none disabled:cursor-default data-[state=checked]:border-pink-500 ring-inset ring-pink-500 data-[state=checked]:ring-[1px] group flex items-center space-x-2 text-left\",\n className\n )}\n {...props}\n >\n <div className=\"flex-1 min-w-0\">{children}</div>\n <div className=\"h-4 w-4 shrink-0 rounded border-2 group-disabled:bg-gray-300 border-gray-300 ring-offset-background group-disabled:cursor-default group-disabled:bg-gray-100 group-data-[state=checked]:border-none group-disabled:data-[state=checked]:bg-gray-400 group-disabled:data-[state=checked]:text-gray-100 group-data-[state=checked]:bg-pink-500 group-data-[state=checked]:text-white\">\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </div>\n\n </CheckboxPrimitive.Root>\n))\nChoiceboxMultiItem.displayName = CheckboxPrimitive.Root.displayName\n\nexport { ChoiceboxGroup, ChoiceboxGroupItem, ChoiceboxMultiItem }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../helpers/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-md border border-gray-300 px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 font-semibold\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-pink-500 text-white/90 shadow hover:bg-pink-500/80\",\n secondary:\n \"border-transparent bg-gray-200 text-gray-900 hover:bg-gray-200/80\",\n outline: \"text-gray-900\",\n danger:\n \"border-transparent bg-red-500 text-white/90 shadow hover:bg-red-500/80\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> { }\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }","import * as React from \"react\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../helpers/utils\";\n\nconst progressbarVariants = cva(\n \"h-full w-full rounded-full flex-1 transition-all\",\n {\n variants: {\n variant: {\n progress: \"bg-pink-500\",\n success: \"bg-green-600\",\n disabled: \"bg-gray-400\",\n empty: \"bg-gray-200\",\n },\n },\n defaultVariants: {\n variant: \"progress\",\n },\n }\n);\n\nconst progressbarSecondaryVariants = cva(\n \"relative h-4 w-full overflow-hidden rounded-full bg-gray-200\",\n {\n variants: {\n size: {\n small: \"h-[6px]\",\n medium: \"h-2\",\n large: \"h-[10px]\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport interface ProgressBarProps {\n variant?: \"progress\" | \"success\" | \"disabled\" | \"empty\";\n size?: \"small\" | \"medium\" | \"large\";\n disabled?: boolean;\n}\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root> &\n ProgressBarProps &\n VariantProps<typeof progressbarVariants>\n>(\n (\n {\n className,\n value,\n variant = \"progress\",\n size = \"medium\",\n disabled = false,\n ...props\n },\n ref\n ) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\"\", progressbarSecondaryVariants({ size }), className)}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(\"\", progressbarVariants({ variant }))}\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n);\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress as Progressbar };\n","import React, { forwardRef } from \"react\";\n\nimport {\n HeroContentTitleProps,\n HeroContentListFeatureProps,\n HeroContentCTAPrimaryProps,\n HeroContentMediaProps,\n HeroContentDescriptionProps,\n HeroContentProps,\n HeroContentTagProps,\n DataPropsContent,\n TYPE_MEDIA_IMAGE,\n DUMMY_NONE_DATA_CTAS,\n DUMMY_NONE_DATA,\n DUMMY_NONE_DATA_FEATURS,\n} from \"./utils\";\nimport { cn } from \"../../helpers/utils\";\nimport { Button } from \"../Button\";\nimport { CheckIcon } from \"@heroicons/react/24/outline\";\nimport { AspectRatio } from \"../AspectRatio\";\nimport { cva } from \"class-variance-authority\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\n\nconst Dialog = DialogPrimitive.Root;\n\nconst CloseDialog = () => {\n return (\n <DialogPrimitive.Close className=\"flex transition-all z-10 text-sm items-center space-x-1 absolute left-3 top-6 md:left-6 hover:bg-white/20 text-white rounded-md px-4 py-2\">\n <X className=\"h-4 w-4 mt-0.5\" />\n <div className=\"\">Đóng cửa sổ</div>\n </DialogPrimitive.Close>\n );\n};\n\nexport const DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay className=\"bg-black\" />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"h-full min-w-full border-none rounded-none z-[999] fixed left-[50%] top-[50%] grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] \",\n className\n )}\n {...props}\n >\n {children}\n <CloseDialog />\n </DialogPrimitive.Content>\n </DialogPortal>\n));\n\nconst featureVariants = cva(\n \"max-w-md space-y-1 text-gray-800 font-semibold list-inside \",\n {\n variants: {\n template: {\n col: \" flex-col flex mt-5\",\n row: \"grid grid-cols-3 items-center divide-x gap-2 mt-5 \",\n customize:\n \"grid grid-cols-2 md:grid-cols-4 gap-12 max-w-5xl mx-auto font-semibold items-center py-12 text-left text-sm\",\n },\n },\n defaultVariants: {\n template: \"col\",\n },\n }\n);\n\nexport const SectionHeroTitle = ({\n title,\n className,\n}: HeroContentTitleProps) => {\n return (\n <h1\n dangerouslySetInnerHTML={{ __html: title || \"\" }}\n className={cn(\n \"text-3xl md:text-4xl font-bold py-3 text-gray-900\",\n className\n )}\n />\n );\n};\n\nexport const SectionHeroTag = ({ tagName, className }: HeroContentTagProps) => {\n return (\n <div\n className={cn(\n \"text-pink-500 font-bold text-sm tracking-wider \",\n className\n )}\n >\n {tagName}\n </div>\n );\n};\n\nexport const SectionHeroDescription = ({\n description,\n className,\n}: HeroContentDescriptionProps) => {\n return (\n <div\n dangerouslySetInnerHTML={{ __html: description || \"\" }}\n className={cn(\"text-lg text-gray-700 pb-2\", className)}\n />\n );\n};\n\nexport const SectionHeroCTA = ({\n dataCtas,\n className,\n}: {\n dataCtas: HeroContentCTAPrimaryProps[];\n className?: string;\n}) => {\n const handleOnClickCTA = (e, onClickFC) => {\n e.preventDefault();\n e.stopPropagation();\n onClickFC?.();\n };\n\n const ButtonCTAQR = ({ cta, index }: { cta: any; index: number }) => {\n return (\n <>\n <Button\n key={index}\n onClick={(e) =>\n cta?.onClickCTA?.() && handleOnClickCTA(e, cta?.onClickCTA?.())\n }\n variant={cta?.variant}\n className={cn(\n \"md:block hidden\",\n cta?.variant !== \"primary\" && \"text-pink-500 hidden \"\n )}\n >\n {cta?.content}\n </Button>\n <Button\n key={index}\n variant={cta?.variant}\n className={cn(\n \"md:hidden\",\n cta?.variant !== \"primary\" && \"text-pink-500\"\n )}\n >\n <a href={cta?.url} target=\"_blank\" rel=\"noreferrer\">\n {cta?.content}\n </a>\n </Button>\n </>\n );\n };\n\n return (\n <div\n className={cn(\n \"flex items-center mt-10\",\n className,\n dataCtas?.length > 1 ? \"space-x-6\" : \"\"\n )}\n >\n {dataCtas?.map((cta, index) =>\n cta?.isQRCode ? (\n <ButtonCTAQR cta={cta} index={index} key={index} />\n ) : (\n <Button\n key={index}\n onClick={(e) => {\n if (!cta?.url) {\n e.stopPropagation();\n e.preventDefault();\n }\n }}\n variant={cta?.variant}\n className={cn(\"\", cta?.variant !== \"primary\" && \"text-pink-500\")}\n >\n <a href={cta?.url} target=\"_blank\" rel=\"noreferrer\">\n {cta?.content}\n </a>\n </Button>\n )\n )}\n </div>\n );\n};\n\nexport const SectionHeroItemFeature = ({\n template,\n title,\n label,\n icon,\n idx,\n}: {\n template: string;\n title: string;\n label: string;\n icon: string;\n idx: number;\n}) => {\n const renderTemplateFeature = () => {\n switch (template) {\n case \"col\":\n return (\n <li className=\"flex items-center pb-3\">\n <div className=\"bg-pink-100 p-1 rounded-full w-5 h-5 flex items-center justify-center\">\n <CheckIcon className=\"w-4 h-4 text-pink-500 \" />\n </div>\n <div className=\"ml-2\">{title}</div>\n </li>\n );\n case \"row\":\n return (\n <div className={cn(\"\", idx > 0 ? \"pl-4\" : \"\")}>\n <div className=\"font-bold text-gray-900\">{title}</div>\n <div className=\"text-sm mt-1 text-gray-500\">{label}</div>\n </div>\n );\n case \"customize\":\n return (\n <div className=\"flex items-center space-x-4\">\n <img src={icon} alt=\"\" className=\"shrink-0\" />\n <div className=\"text-gray-900 text-left\">{title}</div>\n </div>\n );\n default:\n return null;\n }\n };\n\n return <>{renderTemplateFeature()}</>;\n};\n\nexport const SectionHeroListFeature = ({\n dataFeatures,\n}: {\n dataFeatures: HeroContentListFeatureProps;\n}) => {\n return (\n <ul className={cn(\"\", featureVariants({ template: dataFeatures?.type }))}>\n {dataFeatures?.contents?.map((feature, index) => (\n <SectionHeroItemFeature\n title={feature?.title}\n template={dataFeatures?.type}\n label={feature?.label}\n icon={feature?.icon}\n key={index}\n idx={index}\n />\n ))}\n </ul>\n );\n};\n\nexport const SectionHeroVideo = ({\n type = 1,\n src,\n ratioImg,\n className,\n video,\n onClickFC = () => {},\n}: HeroContentMediaProps) => {\n return (\n <AspectRatio className={cn(\"\")} ratio={ratioImg}>\n <img\n src={src}\n className={cn(\n \"w-full h-full object-cover md:block hidden\",\n className,\n !src ? \"bg-gray-200\" : \"\"\n )}\n alt=\"\"\n />\n {type !== TYPE_MEDIA_IMAGE && video?.codeVideo && (\n <div className=\"aspect-[16/9] realtive overflow-hidden w-full\">\n <iframe\n title={video?.titleVideo}\n src={`https://www.youtube.com/embed/${video?.codeVideo}?controls=1`}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n referrerPolicy=\"strict-origin-when-cross-origin\"\n allowFullScreen\n className=\"w-full h-full object-cover md:hidden\"\n />\n </div>\n )}\n {type !== TYPE_MEDIA_IMAGE && video?.codeVideo && (\n <Dialog>\n <DialogPrimitive.Trigger onClick={onClickFC}>\n <div className=\"w-full hidden md:flex h-full cursor-pointer transition-transform group-hover:scale-105 top-0 absolute z-10 items-center justify-center\">\n <svg\n className=\"w-14 h-14\"\n viewBox=\"0 0 48 48\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g fill=\"none\" fillRule=\"evenodd\">\n <circle\n stroke=\"#FFF\"\n strokeWidth={2}\n fillOpacity=\".24\"\n fill=\"#000\"\n cx={24}\n cy={24}\n r={23}\n />\n <path\n d=\"M34.667 24.335c0 .515-.529.885-.529.885l-14.84 9.133c-1.08.704-1.965.182-1.965-1.153V15.467c0-1.338.884-1.856 1.968-1.153L34.14 23.45c-.002 0 .527.37.527.885Z\"\n fill=\"#FFF\"\n fillRule=\"nonzero\"\n />\n </g>\n </svg>\n </div>\n </DialogPrimitive.Trigger>\n <DialogContent className=\"w-full h-full flex items-center justify-center bg-gray-900 p-0\">\n <iframe\n width={738}\n height={439}\n title={video?.titleVideo}\n src={`https://www.youtube.com/embed/${video?.codeVideo}?autoplay=1`}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n referrerPolicy=\"strict-origin-when-cross-origin\"\n allowFullScreen\n className=\"\"\n />\n </DialogContent>\n </Dialog>\n )}\n </AspectRatio>\n );\n};\n\nexport const SectionHeroMedia = ({\n type = 1,\n url = \"\",\n src,\n ratioImg,\n className,\n video,\n onClickFC = () => {},\n}: HeroContentMediaProps) => {\n return (\n <div>\n {type === TYPE_MEDIA_IMAGE && !video?.codeVideo ? (\n <AspectRatio className={cn(\"\")} ratio={ratioImg}>\n <img\n src={src}\n className={cn(\n \"w-full h-full object-cover\",\n className,\n !src ? \"bg-gray-200\" : \"\"\n )}\n alt=\"\"\n />\n </AspectRatio>\n ) : (\n <SectionHeroVideo\n type={type}\n url={url}\n src={src}\n ratioImg={ratioImg}\n video={video}\n onClickFC={onClickFC}\n />\n )}\n </div>\n );\n};\n\nconst HeroContentTemplateOne = ({\n data,\n dataCtas,\n dataFeatures,\n}: {\n data: DataPropsContent;\n dataCtas: HeroContentCTAPrimaryProps[];\n dataFeatures: HeroContentListFeatureProps;\n}) => {\n return (\n <div\n className={cn(\n \"grid grid-cols-1 md:grid-cols-2 md:gap-16 gap-4 items-center\"\n )}\n >\n <div className=\"col-span-1\">\n <SectionHeroTag tagName={data?.tagName} />\n <SectionHeroTitle title={data?.title} />\n <SectionHeroDescription description={data?.description} />\n <SectionHeroListFeature dataFeatures={dataFeatures} />\n <div className=\"md:block hidden\">\n <SectionHeroCTA dataCtas={dataCtas} />\n </div>\n </div>\n <div className=\"col-span-1\">\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n video={data?.media?.video}\n />\n <div className=\"block md:hidden flex items-center justify-center\">\n <SectionHeroCTA dataCtas={dataCtas} />\n </div>\n </div>\n </div>\n );\n};\n\nconst HeroContentTemplateTwo = ({\n data,\n dataCtas,\n dataFeatures,\n}: {\n data: DataPropsContent;\n dataCtas: HeroContentCTAPrimaryProps[];\n dataFeatures: HeroContentListFeatureProps;\n}) => {\n return (\n <div className={cn(\"grid grid-cols-1 md:grid-cols-2 gap-16 items-center\")}>\n <div className=\"col-span-1\">\n <div className=\"hidden md:block\">\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n />\n </div>\n </div>\n <div className=\"col-span-1\">\n <SectionHeroTag tagName={data?.tagName} />\n <SectionHeroTitle title={data?.title} />\n <SectionHeroDescription description={data?.description} />\n <SectionHeroListFeature dataFeatures={dataFeatures} />\n <div className=\"md:hidden mt-10\">\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n />\n </div>\n <div className=\"w-full flex items-center justify-center md:justify-start\">\n <SectionHeroCTA dataCtas={dataCtas} />\n </div>\n </div>\n </div>\n );\n};\n\nconst HeroContentTemplateThree = ({\n data,\n dataCtas,\n dataFeatures,\n}: {\n data: DataPropsContent;\n dataCtas: HeroContentCTAPrimaryProps[];\n dataFeatures: HeroContentListFeatureProps;\n}) => {\n return (\n <div className={cn(\"grid grid-cols-1 md:grid-cols-2 gap-16 items-center\")}>\n <div className=\"col-span-1\">\n <SectionHeroTag tagName={data?.tagName} />\n <SectionHeroTitle title={data?.title} />\n <SectionHeroDescription description={data?.description} />\n <SectionHeroListFeature dataFeatures={dataFeatures} />\n <div className=\"hidden md:block\">\n <SectionHeroCTA dataCtas={dataCtas} />\n </div>\n </div>\n <div className=\"col-span-1\">\n <div className=\"hidden md:block\">\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n />\n </div>\n <div className=\"md:hidden\">\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n />\n </div>\n <div className=\"md:hidden block w-full flex items-center justify-center\">\n <SectionHeroCTA dataCtas={dataCtas} />\n </div>\n </div>\n </div>\n );\n};\n\nconst HeroContentTemplateFour = ({\n data,\n dataCtas,\n dataFeatures,\n}: {\n data: DataPropsContent;\n dataCtas: HeroContentCTAPrimaryProps[];\n dataFeatures: HeroContentListFeatureProps;\n}) => {\n return (\n <div className={cn(\"grid grid-cols-1 md:grid-cols-2 gap-16 items-center\")}>\n <div className=\"col-span-1\">\n <SectionHeroTag tagName={data?.tagName} />\n <SectionHeroTitle title={data?.title} />\n <SectionHeroDescription description={data?.description} />\n <SectionHeroListFeature dataFeatures={dataFeatures} />\n <div className=\"hidden md:block\">\n <SectionHeroCTA dataCtas={dataCtas} />\n </div>\n </div>\n <div className=\"col-span-1\">\n <div className=\"hidden md:block\">\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n className=\"relative overflow-hidden -bottom-20\"\n />\n </div>\n <div className=\"md:hidden\">\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n />\n </div>\n <div className=\"md:hidden block w-full flex items-center justify-center\">\n <SectionHeroCTA dataCtas={dataCtas} />\n </div>\n </div>\n </div>\n );\n};\n\nconst HeroContentTemplateFive = ({\n data,\n dataCtas,\n dataFeatures,\n}: {\n data: DataPropsContent;\n dataCtas: HeroContentCTAPrimaryProps[];\n dataFeatures: HeroContentListFeatureProps;\n}) => {\n return (\n <div>\n <SectionHeroTag\n tagName={data?.tagName}\n className=\"max-w-4xl mx-auto text-center text-base leading-7 text-pink-500 font-bold\"\n />\n <SectionHeroTitle\n title={data?.title}\n className=\"max-w-4xl mx-auto text-center font-manrope font-bold text-2xl text-gray-900 mb-5 md:text-4xl lg:text-5xl\"\n />\n <SectionHeroDescription\n description={data?.description}\n className=\"max-w-4xl mx-auto text-center text-base md:text-lg lg:text-xl font-normal leading-7 text-gray-700\"\n />\n <SectionHeroCTA\n dataCtas={dataCtas}\n className=\"w-full md:w-full inline-flex items-center justify-center text-base font-semibold text-center \"\n />\n <SectionHeroListFeature dataFeatures={dataFeatures} />\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n className=\"rounded-lg\"\n />\n </div>\n );\n};\n\nconst renderTemplate = ({\n template,\n data,\n dataCtas,\n dataFeatures,\n}: {\n template: 1 | 2 | 3 | 4 | 5;\n data: DataPropsContent;\n dataCtas: HeroContentCTAPrimaryProps[];\n dataFeatures: HeroContentListFeatureProps;\n}) => {\n switch (template) {\n case 1:\n return (\n <HeroContentTemplateOne\n data={data}\n dataCtas={dataCtas}\n dataFeatures={dataFeatures}\n />\n );\n case 2:\n return (\n <HeroContentTemplateTwo\n data={data}\n dataCtas={dataCtas}\n dataFeatures={dataFeatures}\n />\n );\n case 3:\n return (\n <HeroContentTemplateThree\n data={data}\n dataCtas={dataCtas}\n dataFeatures={dataFeatures}\n />\n );\n case 4:\n return (\n <HeroContentTemplateFour\n data={data}\n dataCtas={dataCtas}\n dataFeatures={dataFeatures}\n />\n );\n case 5:\n return (\n <HeroContentTemplateFive\n data={data}\n dataCtas={dataCtas}\n dataFeatures={dataFeatures}\n />\n );\n default:\n return null;\n }\n};\n\nconst SectionHeroContent = ({ template, data, dataCtas, dataFeatures }) => {\n return <>{renderTemplate({ template, data, dataCtas, dataFeatures })}</>;\n};\n\nexport const HeroSection = forwardRef<HTMLDivElement, HeroContentProps>(\n ({ template = 1, className, data, dataCtas, dataFeatures }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\" bg-section-hero overflow-hidden py-20\", className)}\n >\n <div className=\"wrapper relative\">\n <SectionHeroContent\n dataCtas={dataCtas || DUMMY_NONE_DATA_CTAS}\n template={template}\n data={data || DUMMY_NONE_DATA}\n dataFeatures={dataFeatures || DUMMY_NONE_DATA_FEATURS}\n />\n </div>\n <style>\n {`\n .bg-section-hero {\n background: var(\n --gradient-pink-1,\n linear-gradient(\n 38deg,\n rgba(255, 255, 255, 0) 78%,\n rgba(255, 255, 255, 0.69) 100%\n ),\n linear-gradient(45deg, #fff 10%, rgba(255, 255, 255, 0) 22%),\n linear-gradient(0deg, #fff 0%, rgba(255, 255, 255, 0) 91%),\n linear-gradient(\n 214deg,\n rgba(255, 255, 255, 0) 0%,\n rgba(255, 91, 189, 0.2) 25%,\n rgba(255, 255, 255, 0) 71%\n ),\n linear-gradient(\n 212deg,\n rgba(255, 255, 255, 0) 51%,\n rgba(255, 196, 233, 0.7) 64%,\n rgba(255, 255, 255, 0) 80%\n ),\n #fff\n );\n }\n `}\n </style>\n </div>\n );\n }\n);\n","import { VariantProps } from \"class-variance-authority\";\nimport { buttonVariants } from \"../Button\";\n\nexport const TYPE_MEDIA_IMAGE = 1;\nexport const TYPE_MEDIA_VIDEO = 2;\n\nexport const DUMMY_NONE_DATA = {\n tagName: \"DUMMY TAG\",\n title: \"Lorem ipsum, dolor sit amet consectetur adipisicing elit. \",\n description:\n \"Lorem ipsum, dolor sit amet consectetur adipisicing elit. Maxime minima amet porro.nam asperiores omnis labore doloribus excepturi?\",\n media: {\n type: 1,\n src: \"https://homepage.momocdn.net/img/momo-upload-api-240522112100-638519736605993862.jpg\",\n ratioImg: 1 / 1,\n },\n};\n\nexport const DUMMY_NONE_DATA_CTAS = [\n { variant: \"primary\", content: \"Button Primary\", url: \"\" },\n { variant: \"transparent\", content: \"Button Text\", url: \"\" },\n];\n\nexport const DUMMY_NONE_DATA_FEATURS: HeroContentListFeatureProps = {\n type: \"col\",\n contents: [\n {\n title: \"Lorem ipsum, dolor sit amet consectetur adipisicing elit\",\n label: \"\",\n icon: \"\",\n },\n {\n title: \"Lorem ipsum, dolor sit amet consectetur adipisicing elit\",\n label: \"\",\n icon: \"\",\n },\n {\n title: \"Lorem ipsum, dolor sit amet consectetur adipisicing elit\",\n label: \"\",\n icon: \"\",\n },\n {\n title: \"Lorem ipsum, dolor sit amet consectetur adipisicing elit\",\n label: \"\",\n icon: \"\",\n },\n ],\n};\n\ninterface HeroContentProps {\n template?: 1 | 2 | 3 | 4 | 5 | string;\n className?: string;\n data?: DataPropsContent;\n dataCtas?: HeroContentCTAPrimaryProps[];\n dataFeatures?: HeroContentListFeatureProps;\n}\n\ninterface DataPropsContent {\n title: string;\n description?: string;\n tagName?: string;\n listFeature?: string[];\n media?: HeroContentMediaProps;\n}\n\ninterface HeroContentTitleProps {\n title?: string;\n className?: string;\n}\n\ninterface HeroContentDescriptionProps {\n description?: string;\n className?: string;\n}\n\ninterface HeroContentCTAPrimaryProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n className?: string;\n asChild?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n variant?:\n | \"primary\"\n | \"secondary\"\n | \"outline\"\n | \"tonal\"\n | \"danger\"\n | \"transparent\"\n | any\n url?: string;\n content?: string;\n onClickCTA?: () => void;\n isQRCode?: boolean;\n}\n\ninterface HeroContentListFeatureProps {\n contents: { title: string; label: string; icon: string }[];\n type: \"row\" | \"col\" | \"customize\" | any;\n}\n// TODO : 1 - Image | 2 - Video\ninterface HeroContentMediaProps {\n type: 1 | 2 | number;\n url?: string;\n src: string;\n ratioImg?: number;\n onClickFC?: () => void;\n className?: string;\n video?: { codeVideo: string; titleVideo: string };\n}\n\ninterface HeroContentTagProps {\n tagName?: string;\n className?: string;\n}\n\nexport type {\n HeroContentProps,\n HeroContentTitleProps,\n HeroContentDescriptionProps,\n HeroContentListFeatureProps,\n HeroContentCTAPrimaryProps,\n HeroContentMediaProps,\n HeroContentTagProps,\n DataPropsContent,\n};\n","\"use client\"\n\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\n\nconst AspectRatio = AspectRatioPrimitive.Root\n\nexport { AspectRatio }\n","import * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\n\nimport { cn } from \"../../helpers/utils\";\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n props?.disabled && \"opacity-40\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-gray-200\">\n <SliderPrimitive.Range className=\"absolute h-full bg-pink-500\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"hover:cursor-grabbing\t block h-5 w-5 rounded-full border-2 border-pink-500 bg-white ring-offset-bg-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n <SliderPrimitive.Thumb className=\"hover:cursor-grabbing\t block h-5 w-5 rounded-full border-2 border-pink-500 bg-white ring-offset-bg-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/**\n * This Tailwind plugin is based and inspired on \"tw-colors\" and \"NextUI\".\n *\n * @see https://github.com/L-Blondy/tw-colors\n * @see https://github.com/nextui-org/nextui\n */\n\nimport Color from \"color\";\nimport plugin from \"tailwindcss/plugin.js\";\nimport { utilities } from \"./utilities\";\nimport { flattenThemeObject } from \"./utils/object\";\nimport { generateSpacingScale } from \"./utils/theme\";\nimport { colors as listColors } from \"./colors\";\nimport { layout } from \"./layout\";\n\nimport { animations } from \"./animations\";\nimport { fontSizes } from \"./font-sizes\";\n\nimport { radius } from \"./radius\";\n\n// import { animations } from \"./animations\";\n// import { fontSizes } from \"./font-sizes\";\n\n// import { radius } from \"./radius\";\n\nconst resolveConfig = (prefix: string) => {\n const resolved = {\n utilities: {},\n colors: {},\n };\n\n const flatColors = flattenThemeObject(listColors);\n\n const flatLayout = layout;\n\n const cssSelector = \":root\";\n\n resolved.utilities[cssSelector] = {};\n // Color\n Object.entries(flatColors).forEach(([colorName, colorValue]) => {\n if (!colorValue) return;\n try {\n const [r, g, b] = Color(colorValue).rgb().array();\n const colorVar = `--${prefix}-${colorName}`;\n // Set the css variable in \"@layer utilities\"\n resolved.utilities[cssSelector]![colorVar] = `${r} ${g} ${b}`;\n resolved.colors[colorName] = `rgb(var(${colorVar}) / <alpha-value>)`;\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.log(\"error\", error?.message);\n }\n });\n // Layout\n\n Object.entries(flatLayout).forEach(([key, value]) => {\n if (!value) return;\n const layoutVariablePrefix = `--${prefix}-${key}`;\n\n if (typeof value === \"object\") {\n Object.entries(value).forEach(([nestedKey, nestedValue]) => {\n const nestedLayoutVariable = `${layoutVariablePrefix}-${nestedKey}`;\n resolved.utilities[cssSelector]![nestedLayoutVariable] = nestedValue;\n });\n } else if (key === \"spacing-unit\") {\n resolved.utilities[cssSelector]![layoutVariablePrefix] = value;\n const spacingScale = generateSpacingScale(Number(value));\n Object.entries(spacingScale).forEach(([scaleKey, scaleValue]) => {\n const spacingVariable = `${layoutVariablePrefix}-${scaleKey}`;\n resolved.utilities[cssSelector]![spacingVariable] = scaleValue;\n });\n } else {\n const formattedValue =\n layoutVariablePrefix.includes(\"opacity\") && typeof value === \"number\"\n ? value.toString().replace(/^0\\./, \".\")\n : value;\n resolved.utilities[cssSelector]![layoutVariablePrefix] = formattedValue;\n }\n });\n\n return resolved;\n};\nexport const mobaseTW = () => {\n const prefix = \"mobase\";\n const resolved = resolveConfig(prefix);\n return plugin(\n ({ addBase, addUtilities, addComponents }) => {\n addComponents({\n \".wrapper\": {\n maxWidth: \"72rem\",\n paddingLeft: \"1.25rem\",\n paddingRight: \"1.25rem\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n \"@media (min-width: 768px)\": {\n paddingLeft: \"2rem\",\n paddingRight: \"2rem\",\n },\n },\n });\n addBase({\n \":root\": {\n \"font-smooth--webkit\": \"antialiased\",\n },\n ...resolved?.utilities, // Xem lai cho nay, addBase\n });\n addUtilities({\n // ...resolved?.utilities, //Xem lai cho nay, addBase\n ...utilities,\n });\n },\n // Extend the Tailwind config\n {\n theme: {\n container: {\n center: true,\n },\n screens: {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n },\n aspectRatio: {\n auto: \"auto\",\n square: \"1 / 1\",\n video: \"16 / 9\",\n 1: \"1\",\n 2: \"2\",\n 3: \"3\",\n 4: \"4\",\n 5: \"5\",\n 6: \"6\",\n 7: \"7\",\n 8: \"8\",\n 9: \"9\",\n 10: \"10\",\n 11: \"11\",\n 12: \"12\",\n 13: \"13\",\n 14: \"14\",\n 15: \"15\",\n 16: \"16\",\n },\n extend: {\n fontFamily: {\n sans: [\n \"-apple-system\",\n \"BlinkMacSystemFont\",\n \"Segoe UI\",\n \"Helvetica\",\n \"Arial\",\n \"sans-serif\",\n \"Apple Color Emoji\",\n \"Segoe UI Emoji\",\n \"Segoe UI Symbol\",\n ],\n mono: [\n \"SFMono-Regular\",\n \"Consolas\",\n \"Liberation Mono\",\n \"Menlo\",\n \"monospace\",\n ],\n },\n colors: {\n ...listColors,\n ...resolved?.colors,\n border: \"rgba(var(--border))\",\n },\n boxShadow: {\n small: `var(--${prefix}-box-shadow-small)`,\n medium: `var(--${prefix}-box-shadow-medium)`,\n large: `var(--${prefix}-box-shadow-large)`,\n },\n zIndex: {\n negative: `var(--${prefix}-z-index-negative)`,\n workbench: `var(--${prefix}-z-index-workbench)`,\n default: `var(--${prefix}-z-index-default)`,\n \"workbench-header\": `var(--${prefix}-z-index-workbench-header)`,\n modal: `var(--${prefix}-z-index-modal)`,\n \"modal-content\": `var(--${prefix}-z-index-modal-content)`,\n dropdown: `var(--${prefix}-z-index-dropdown)`,\n tooltip: `var(--${prefix}-z-index-tooltip)`,\n notification: `var(--${prefix}-z-index-notification)`,\n },\n borderRadius: {\n ...radius(prefix),\n },\n fontSize: {\n ...fontSizes(prefix),\n },\n // spacing: {\n // unit: `var(--${prefix}-spacing-unit)`,\n // ...createSpacingUnits(prefix),\n // },\n ...animations,\n },\n },\n },\n );\n};\n","const DEFAULT_TRANSITION_DURATION = \"250ms\";\n\nexport default {\n /**\n * Transition utilities\n */\n \".transition-all\": {\n \"transition-property\": \"all\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-background\": {\n \"transition-property\": \"background\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition\": {\n \"transition-property\":\n \"color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-colors\": {\n \"transition-property\":\n \"color, background-color, border-color, text-decoration-color, fill, stroke\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-opacity\": {\n \"transition-property\": \"opacity\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-colors-opacity\": {\n \"transition-property\":\n \"color, background-color, border-color, text-decoration-color, fill, stroke, opacity\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-width\": {\n \"transition-property\": \"width\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-height\": {\n \"transition-property\": \"height\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-size\": {\n \"transition-property\": \"width, height\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-left\": {\n \"transition-property\": \"left\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-shadow\": {\n \"transition-property\": \"box-shadow\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-transform\": {\n \"transition-property\": \"transform\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-transform-opacity\": {\n \"transition-property\": \"transform, opacity\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-transform-background\": {\n \"transition-property\": \"transform, background\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-transform-colors\": {\n \" transition-property\":\n \"transform, color, background, background-color, border-color, text-decoration-color, fill, stroke\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-transform-colors-opacity\": {\n \" transition-property\":\n \"transform, color, background, background-color, border-color, text-decoration-color, fill, stroke, opacity\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n};\n","export default {\n /**\n * Custom utilities\n */\n \".leading-inherit\": {\n \"line-height\": \"inherit\",\n },\n \".bg-img-inherit\": {\n \"background-image\": \"inherit\",\n },\n \".bg-clip-inherit\": {\n \"background-clip\": \"inherit\",\n },\n \".text-fill-inherit\": {\n \"-webkit-text-fill-color\": \"inherit\",\n },\n \".tap-highlight-transparent\": {\n \"-webkit-tap-highlight-color\": \"transparent\",\n },\n \"*\": {\n \"border-color\": \"rgb(var(--mobase-gray-300))\",\n },\n};\n","/**\n * Credits to: https://github.com/reslear/tailwind-scrollbar-hide/tree/main\n */\n\nexport default {\n /**\n * Scroll Hide\n */\n \".scrollbar-hide\": {\n /* IE and Edge */\n \"-ms-overflow-style\": \"none\",\n /* Firefox */\n \"scrollbar-width\": \"none\",\n /* Safari and Chrome */\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n },\n \".scrollbar-default\": {\n /* IE and Edge */\n \"-ms-overflow-style\": \"auto\",\n /* Firefox */\n \"scrollbar-width\": \"auto\",\n /* Safari and Chrome */\n \"&::-webkit-scrollbar\": {\n display: \"block\",\n },\n },\n};\n","import transition from \"./transition\";\nimport custom from \"./custom\";\nimport scrollbarHide from \"./scrollbar-hide\";\n\nexport const utilities = {\n ...custom,\n ...transition,\n ...scrollbarHide,\n};\n","import { flatten } from 'flat'\nexport function swapColorValues<T extends Object>(colors: T) {\n const swappedColors = {};\n const keys = Object.keys(colors);\n const length = keys.length;\n\n for (let i = 0; i < length / 2; i++) {\n const key1 = keys[i];\n const key2 = keys[length - 1 - i];\n\n // @ts-ignore\n swappedColors[key1] = colors[key2];\n // @ts-ignore\n swappedColors[key2] = colors[key1];\n }\n if (length % 2 !== 0) {\n const middleKey = keys[Math.floor(length / 2)];\n\n // @ts-ignore\n swappedColors[middleKey] = colors[middleKey];\n }\n\n return swappedColors;\n}\n\nexport function removeDefaultKeys<T extends Object>(obj: T) {\n const newObj = {};\n\n for (const key in obj) {\n if (key.endsWith(\"-DEFAULT\")) {\n // @ts-ignore\n newObj[key.replace(\"-DEFAULT\", \"\")] = obj[key];\n continue;\n }\n // @ts-ignore\n newObj[key] = obj[key];\n }\n\n return newObj;\n}\n\n/**\n *\n * Flatten theme object and remove default keys\n *\n * @param obj theme object\n * @returns object with flattened keys\n */\n\nexport const flattenThemeObject = <TTarget>(obj: TTarget) =>\n removeDefaultKeys(\n flatten(obj, {\n safe: true,\n delimiter: \"-\",\n }) as Object\n );\n","import { spacingScaleKeys, SpacingScaleKeys, SpacingScale } from \"../types\";\n\n/**\n * Determines if the theme is a base theme\n *\n * @param theme string\n * @returns \"light\" | \"dark\n */\n\nconst ROOT_FONT_SIZE = 16;\nconst baseScale = [\n 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18,\n];\nconst extendedScale = [\n 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 72, 80, 96,\n];\n\nexport const generateSpacingScale = (spacingUnit: number) => {\n const scaleLabels: Partial<Record<SpacingScaleKeys, number>> = {\n xs: 2,\n sm: 3,\n md: 4,\n lg: 5.5,\n xl: 9,\n \"2xl\": 12,\n \"3xl\": 20,\n \"4xl\": 30,\n \"5xl\": 56,\n \"6xl\": 72,\n \"7xl\": 96,\n \"8xl\": 128,\n \"9xl\": 160,\n };\n\n const scale = { 0: \"0px\" } as SpacingScale;\n\n Object.entries(scaleLabels).forEach(([label, multiplier]) => {\n scale[label as SpacingScaleKeys] = multiplier\n ? `${(spacingUnit * multiplier) / ROOT_FONT_SIZE}rem`\n : `${spacingUnit / ROOT_FONT_SIZE}rem`;\n });\n\n baseScale.forEach((i) => {\n let key = `${i}` as SpacingScaleKeys;\n\n // if the key has decimal e.g 3.5 change it to \"3-5\" format\n if (key.includes(\".\")) {\n const [first, second] = key.split(\".\");\n\n key = `${first}_${second}`;\n }\n\n scale[key] = `${(spacingUnit * i) / ROOT_FONT_SIZE}rem`;\n });\n\n extendedScale.forEach((i) => {\n const key = `${i}` as SpacingScaleKeys;\n\n scale[key] = `${(spacingUnit * i) / ROOT_FONT_SIZE}rem`;\n });\n\n return scale;\n};\n\nexport function createSpacingUnits(prefix: string) {\n const result = spacingScaleKeys.reduce((acc, key) => {\n let value = `var(--${prefix}-spacing-unit-${key})`;\n\n if (key.includes(\".\")) {\n const [first, second] = key.split(\".\");\n\n value = `var(--${prefix}-spacing-unit-${first}_${second})`;\n }\n\n return {\n ...acc,\n [`${key}`]: value,\n };\n }, {});\n\n return result as Record<SpacingScaleKeys, string>;\n}\n","export const blue = {\n 50: \"#eef8ff\",\n 100: \"#d9eeff\",\n 200: \"#bce1ff\",\n 300: \"#8ed0ff\",\n 400: \"#59b4ff\",\n 500: \"#429cff\",\n 600: \"#1b74f5\",\n 700: \"#145ee1\",\n 800: \"#174bb6\",\n 900: \"#19428f\",\n DEFAULT: \"#429cff\",\n};\n","export const green = {\n 50: \"#f1fcf3\",\n 100: \"#dff9e5\",\n 200: \"#c0f2cc\",\n 300: \"#8fe6a4\",\n 400: \"#57d175\",\n 500: \"#34c759\",\n 600: \"#22973f\",\n 700: \"#1e7735\",\n 800: \"#1d5e2e\",\n 900: \"#194e28\",\n DEFAULT: \"#34c759\",\n};\n","export const pink = {\n 50: \"#fef1f9\",\n 100: \"#fee5f6\",\n 200: \"#fecced\",\n 300: \"#ffa2df\",\n 400: \"#fe68c6\",\n 500: \"#EB2F96\",\n 600: \"#D42A87\",\n 700: \"#CB0B6F\",\n 800: \"#A70D5B\",\n 900: \"#8B104E\",\n DEFAULT: \"#EB2F96\",\n};\n","export const purple = {\n 50: \"#faf5ff\",\n 100: \"#f4e9fe\",\n 200: \"#ead6fe\",\n 300: \"#dab6fc\",\n 400: \"#c487f9\",\n 500: \"#ab55f3\",\n 600: \"#9937e6\",\n 700: \"#8326ca\",\n 800: \"#6f24a5\",\n 900: \"#5b1e85\",\n DEFAULT: \"#ab55f3\",\n};\n","export const red = {\n 50: \"#fff1f2\",\n 100: \"#ffe1e3\",\n 200: \"#ffc8cb\",\n 300: \"#ffa1a6\",\n 400: \"#fe6b73\",\n 500: \"#f74e57\",\n 600: \"#e41e29\",\n 700: \"#c0151e\",\n 800: \"#9e161d\",\n 900: \"#83191f\",\n DEFAULT: \"#f74e57\",\n};\n","export const yellow = {\n 50: \"#fffee7\",\n 100: \"#fffec1\",\n 200: \"#fff886\",\n 300: \"#ffec41\",\n 400: \"#ffdb0d\",\n 500: \"#ffcc00\",\n 600: \"#d19500\",\n 700: \"#a66a02\",\n 800: \"#89530a\",\n 900: \"#74430f\",\n DEFAULT: \"#ffcc00\",\n};\n","export const orange = {\n 50: \"#fff4ed\",\n 100: \"#ffe6d5\",\n 200: \"#fecaaa\",\n 300: \"#fea473\",\n 400: \"#fc743b\",\n 500: \"#fa541c\",\n 600: \"#eb350b\",\n 700: \"#c3240b\",\n 800: \"#9b1e11\",\n 900: \"#7c1c12\",\n DEFAULT: \"#fa541c\",\n};\n","export const gray = {\n 50: \"#FAFAFA\",\n 100: \"#F5F5F5\",\n 200: \"#E5E5E5\",\n 300: \"#D4D4D4\",\n 400: \"#A3A3A3\",\n 500: \"#737373\",\n 600: \"#525252\",\n 700: \"#404040\",\n 800: \"#262626\",\n 900: \"#171717\",\n DEFAULT: \"#737373\",\n};\n","import { blue } from \"./blue\";\nimport { green } from \"./green\";\nimport { pink } from \"./pink\";\nimport { purple } from \"./purple\";\nimport { red } from \"./red\";\nimport { yellow } from \"./yellow\";\nimport { orange } from \"./orange\";\nimport { gray } from \"./gray\";\n\nexport const commonColors = {\n white: \"#ffffff\",\n black: \"#000000\",\n blue,\n green,\n pink,\n purple,\n red,\n yellow,\n gray,\n orange,\n};\n\nexport type CommonColors = typeof commonColors;\n","import { commonColors } from \"./common\";\n\nconst colors = {\n ...commonColors,\n};\n\nexport { colors, commonColors };\n","export const layout = {\n \"spacing-unit\": 4,\n \"disabled-opacity\": 0.5, // Numeric values don't need quotes\n \"font-size\": {\n xxs: \"0.625rem\",\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n },\n radius: {\n sm: \"0.125rem\",\n base: \"0.25rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n \"2xl\": \"1rem\",\n \"3xl\": \"1.5rem\",\n },\n \"z-index\": {\n negative: \"-1\",\n workbench: \"0\",\n default: \"1\",\n \"workbench-header\": \"10\",\n modal: \"100\",\n \"modal-content\": \"101\",\n dropdown: \"1000\",\n tooltip: \"10000\",\n notification: \"100000\",\n },\n \"box-shadow\": {\n small:\n \"0px 0px 5px 0px rgb(0 0 0 / 0.02), 0px 2px 10px 0px rgb(0 0 0 / 0.06), 0px 0px 1px 0px rgb(0 0 0 / 0.3)\",\n medium:\n \"0px 0px 15px 0px rgb(0 0 0 / 0.03), 0px 2px 30px 0px rgb(0 0 0 / 0.08), 0px 0px 1px 0px rgb(0 0 0 / 0.3)\",\n large:\n \"0px 0px 30px 0px rgb(0 0 0 / 0.04), 0px 30px 60px 0px rgb(0 0 0 / 0.12), 0px 0px 1px 0px rgb(0 0 0 / 0.3)\",\n },\n};\n","export const animations = {\n animation: {\n \"accordion-down\": \"accordion-down 0.2s ease-out\",\n \"accordion-up\": \"accordion-up 0.2s ease-out\",\n \"spin-loading\": \"spin 1s steps(12, end) infinite\",\n \"fade-in\": \"fade-in 250ms cubic-bezier(0.25, 0.46, 0.45, 0.94) both\",\n },\n keyframes: {\n \"accordion-down\": {\n from: { height: \"0\" },\n to: { height: \"var(--radix-accordion-content-height)\" },\n },\n \"accordion-up\": {\n from: { height: \"var(--radix-accordion-content-height)\" },\n to: { height: \"0\" },\n },\n \"fade-in\": {\n \"0%\": { opacity: \"0\" },\n \"100%\": { opacity: \"1\" },\n },\n },\n};\n","type FontSizeValue = [\n fontSize: string,\n configuration: {\n lineHeight?: string;\n letterSpacing?: string;\n fontWeight?: string;\n },\n];\n\nexport type FontSizes = Record<string, FontSizeValue>;\nexport function fontSizes(prefix:string) {\n const fontSizes = {\n xxs: [\n `var(--${prefix}-font-size-xxs)`,\n {\n lineHeight: \"1rem\",\n },\n ],\n xs: [\n `var(--${prefix}-font-size-xs)`,\n {\n lineHeight: \"1rem\",\n },\n ],\n sm: [\n `var(--${prefix}-font-size-sm)`,\n {\n lineHeight: \"1.25rem\",\n },\n ],\n base: [\n `var(--${prefix}-font-size-base)`,\n {\n lineHeight: \"1.5rem\",\n },\n ],\n lg: [\n `var(--${prefix}-font-size-lg)`,\n {\n lineHeight: \"1.75rem\",\n },\n ],\n xl: [\n `var(--${prefix}-font-size-xl)`,\n {\n lineHeight: \"1.75rem\",\n },\n ],\n \"2xl\": [\n `var(--${prefix}-font-size-2xl)`,\n {\n lineHeight: \"2rem\",\n },\n ],\n \"3xl\": [\n `var(--${prefix}-font-size-3xl)`,\n {\n lineHeight: \"2.25rem\",\n },\n ],\n \"4xl\": [\n `var(--${prefix}-font-size-4xl)`,\n {\n lineHeight: \"2.5rem\",\n },\n ],\n \"5xl\": [\n `var(--${prefix}-font-size-5xl)`,\n {\n lineHeight: \"3.5rem\",\n letterSpacing: \"-0.075rem\",\n },\n ],\n \"6xl\": [\n `var(--${prefix}-font-size-6xl)`,\n {\n lineHeight: \"4.5rem\",\n letterSpacing: \"-0.09375rem\",\n },\n ],\n \"7xl\": [\n `var(--${prefix}-font-size-7xl)`,\n {\n lineHeight: \"5rem\",\n letterSpacing: \"-0.1125rem\",\n },\n ],\n \"8xl\": [\n `var(--${prefix}-font-size-8xl)`,\n {\n lineHeight: \"6.5rem\",\n letterSpacing: \"-0.15rem\",\n },\n ],\n \"9xl\": [\n `var(--${prefix}-font-size-9xl)`,\n {\n lineHeight: \"8rem\",\n letterSpacing: \"-0.2rem\",\n },\n ],\n } satisfies FontSizes;\n\n return fontSizes\n}\n","export function radius(prefix: string) {\n const radiusV = {\n sm: `var(--${prefix}-radius-sm)`,\n DEFAULT: `var(--${prefix}-radius-base)`,\n md: `var(--${prefix}-radius-md)`,\n lg: `var(--${prefix}-radius-lg)`,\n xl: `var(--${prefix}-radius-xl)`,\n \"2xl\": `var(--${prefix}-radius-2xl)`,\n \"3xl\": `var(--${prefix}-radius-3xl)`,\n };\n return radiusV;\n}\n\n","export const SiteMeta = (\n <>\n <meta\n name=\"abstract\"\n content=\"Ví điện tử MoMo - Siêu ứng dụng thanh toán số 1 Việt Nam\"\n />\n <meta name=\"distribution\" content=\"Global\" />\n <meta name=\"author\" content=\"Ví MoMo\" />\n\n <meta property=\"fb:app_id\" content=\"320653355376196\" />\n <meta property=\"fb:pages\" content=\"138010322921640\" />\n\n <link rel=\"shortcut icon\" href=\"/favicon.ico\" />\n\n <link\n href=\"https://www.momo.vn/favicon-32x32.png\"\n rel=\"icon\"\n sizes=\"32x32\"\n type=\"image/png\"\n />\n\n <link\n href=\"https://www.momo.vn/favicon-16x16.png\"\n rel=\"icon\"\n sizes=\"16x16\"\n type=\"image/png\"\n />\n\n <link\n href=\"https://www.momo.vn/apple-touch-icon.png\"\n rel=\"apple-touch-icon\"\n sizes=\"180x180\"\n />\n\n <meta name=\"language\" content=\"vietnamese\" />\n <meta name=\"copyright\" content=\"Copyright © 2019 by MOMO.VN\" />\n <meta name=\"REVISIT-AFTER\" content=\"1 DAYS\" />\n <meta name=\"RATING\" content=\"GENERAL\" />\n <meta httpEquiv=\"x-dns-prefetch-control\" content=\"on\" />\n <link rel=\"dns-prefetch\" href=\"//www.google-analytics.com\" />\n <link rel=\"dns-prefetch\" href=\"//connect.facebook.net\" />\n <link rel=\"dns-prefetch\" href=\"//www.googletagservices.com\" />\n <link rel=\"dns-prefetch\" href=\"//www.googletagmanager.com\" />\n <link rel=\"dns-prefetch\" href=\"//facebook.com\" />\n <link rel=\"dns-prefetch\" href=\"//homepage.momocdn.net\" />\n <link rel=\"dns-prefetch\" href=\"//www.google.com\" />\n <link rel=\"dns-prefetch\" href=\"//www.google.com.vn\" />\n <link rel=\"dns-prefetch\" href=\"//www.googleadservices.com\" />\n <link rel=\"preconnect\" href=\"//connect.facebook.net\" />\n <link rel=\"preconnect\" href=\"//www.googletagmanager.com\" />\n <link rel=\"preconnect\" href=\"//www.google-analytics.com\" />\n <link rel=\"preconnect\" href=\"//googleads.g.doubleclick.net\" />\n <link rel=\"preconnect\" href=\"//homepage.momocdn.net\" />\n <link rel=\"preconnect\" href=\"//www.google.com\" />\n <link rel=\"preconnect\" href=\"//www.google.com.vn\" />\n <link rel=\"preconnect\" href=\"//www.googleadservices.com\" />\n\n <script\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: `{\n \"@context\": \"https://schema.org/\",\n \"@type\": \"WebSite\",\n \"@id\":\"https://www.momo.vn/#website\",\n \"name\": \"Ví MoMo\",\n \"url\": \"https://www.momo.vn\",\n \"potentialAction\": {\n \"@type\": \"SearchAction\",\n \"target\": \"https://www.momo.vn/tim-kiem?q={search_term_string}\",\n \"query-input\": \"required name=search_term_string\"\n }}`,\n }}\n />\n <script\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: `{\n \"@context\": \"https://schema.org\",\n \"@type\": \"Organization\",\n \"name\": \"Siêu ứng dụng MoMo\",\n \"alternateName\": \"Siêu ứng dụng MoMo - Siêu Ứng Dụng Thanh Toán số 1 Việt Nam\",\n \"legalName\": \"ONLINE MOBILE SERVICES JSC (M_Service)\",\n \"url\": \"https://www.momo.vn\",\n \"logo\": \"https://homepage.momocdn.net/img/logo-momo.png\",\n \"foundingDate\": \"2007\",\n \"founders\": [\n {\n \"@type\": \"Person\",\n \"name\": \"Nguyễn Mạnh Tường\"\n }\n ],\n \"address\":{\n \"@type\": \"PostalAddress\",\n \"streetAddress\": \"Lầu 6, Toà nhà Phú Mỹ Hưng, số 8 Hoàng Văn Thái, khu phố 1, Phường Tân Phú, Quận 7, Thành phố Hồ Chí Minh\",\n \"addressLocality\": \"Hồ Chí Minh\",\n \"addressRegion\": \"VN\",\n \"postalCode\": \"700000\",\n \"addressCountry\": \"VN\"\n },\n \"contactPoint\":{\n \"@type\": \"ContactPoint\",\n \"contactType\": \"customer support\",\n \"telephone\": \"1900545441\",\n \"email\": \"hotro@momo.vn\"\n },\n \"sameAs\": [\n \"https://www.facebook.com/vimomo/\",\n \"https://www.youtube.com/channel/UCKHHW-qL2JoZqcSNm1jPlqw\",\n \"https://www.linkedin.com/company/momo-mservice/\",\n \"https://github.com/momo-wallet\"\n ]\n }`,\n }}\n />\n </>\n);\n"],"mappings":"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AW,CACT,iBAAkB,CAChB,KAAM,CAAE,OAAQ,GAAI,EACpB,GAAI,CAAE,OAAQ,uCAAwC,CACxD,EACA,eAAgB,CACd,KAAM,CAAE,OAAQ,uCAAwC,EACxD,GAAI,CAAE,OAAQ,GAAI,CACpB,EACA,UAAW,CACT,KAAM,CAAE,QAAS,GAAI,EACrB,OAAQ,CAAE,QAAS,GAAI,CACzB,CACF,CACF,ECXO,SAASC,GAAUC,EAAe,CA6FvC,MA5FkB,CAChB,IAAK,CACH,SAASA,CAAM,kBACf,CACE,WAAY,MACd,CACF,EACA,GAAI,CACF,SAASA,CAAM,iBACf,CACE,WAAY,MACd,CACF,EACA,GAAI,CACF,SAASA,CAAM,iBACf,CACE,WAAY,SACd,CACF,EACA,KAAM,CACJ,SAASA,CAAM,mBACf,CACE,WAAY,QACd,CACF,EACA,GAAI,CACF,SAASA,CAAM,iBACf,CACE,WAAY,SACd,CACF,EACA,GAAI,CACF,SAASA,CAAM,iBACf,CACE,WAAY,SACd,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,MACd,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,SACd,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,QACd,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,SACZ,cAAe,WACjB,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,SACZ,cAAe,aACjB,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,OACZ,cAAe,YACjB,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,SACZ,cAAe,UACjB,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,OACZ,cAAe,SACjB,CACF,CACF,CAGF,CCxGO,SAASC,GAAOC,EAAgB,CAUrC,MATgB,CACd,GAAI,SAASA,CAAM,cACnB,QAAS,SAASA,CAAM,gBACxB,GAAI,SAASA,CAAM,cACnB,GAAI,SAASA,CAAM,cACnB,GAAI,SAASA,CAAM,cA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","names":["src_exports","__export","Accordion","AccordionContent","AccordionItem","AccordionTrigger","ActionButton","AlertDialog","AlertDialogAction","AlertDialogCancel","AlertDialogContent","AlertDialogDescription","AlertDialogFooter","AlertDialogHeader","AlertDialogOverlay","AlertDialogPortal","AlertDialogTitle","AlertDialogTrigger","AspectRatio","Badge","Breadcrumb","BreadcrumbEllipsis","BreadcrumbItem","BreadcrumbLink","BreadcrumbList","BreadcrumbPage","BreadcrumbSeparator","Button","Calendar","Callout","Card","CardContent","CardDescription","CardFooter","CardHeader","CardTitle","Checkbox","ChoiceboxGroup","ChoiceboxGroupItem","ChoiceboxMultiItem","Combobox","ComboboxContent","ComboboxTrigger","Command","CommandDialog","CommandEmpty","CommandGroup","CommandInput","CommandItem","CommandList","CommandSeparator","CommandShortcut","DatePicker","Dialog","DialogBody","DialogClose","DialogContent","DialogDescription","DialogFooter","DialogHeader","DialogOverlay","DialogPortal","DialogQr","DialogTitle","DialogTrigger","Footer","HeaderNavigation","Heading","HeadingGroup","HeadingSub","HeadingTagline","HeroSection","IconButton","LightBoxContent","LightboxGallery","LightboxThumbnail","NavigationMenu","NavigationMenuContent","NavigationMenuItem","NavigationMenuLink","NavigationMenuList","NavigationMenuTrigger","Pagination","Popover","PopoverContent","PopoverTrigger","Progress","RadioGroup","RadioGroupItem","SearchBar","Select","SelectContent","SelectGroup","SelectItem","SelectLabel","SelectScrollDownButton","SelectScrollUpButton","SelectSeparator","SelectTrigger","SelectValue","SiteMeta","Slider","Stepper","Switch","Tabs","TabsContent","TabsList","TabsTrigger","TextArea","TextButton","TextInput","ToastAction","Toaster","Tooltip","TooltipArrow","TooltipContent","TooltipProvider","TooltipTrigger","badgeVariants","buttonVariants","mobaseTW","navigationMenuTriggerStyle","textButtonVariants","toast","useToast","__toCommonJS","React","AccordionPrimitive","import_solid","import_clsx","React","import_tailwind_merge","MoMoText","SUPPORT","SOCIAL_ITEMS","APP_DOWNLOAD","MOMO_TEXT","import_react","import_ua_parser_js","cn","inputs","checkIsMoMoAgent","checkIsMobileAgent","UAParser","useIsomorphicLayoutEffect","useIsMobile","isMobile","setIsMobile","import_jsx_runtime","Accordion","className","props","ref","AccordionItem","cn","AccordionTrigger","children","AccordionContent","import_react","React","import_react_slot","import_class_variance_authority","import_jsx_runtime","SpinerIcon","className","SpinerIcon_default","import_jsx_runtime","buttonVariants","Button","className","variant","size","asChild","isLoading","isDisabled","props","ref","Comp","buttonClassName","cn","SpinerIcon_default","React","DialogPrimitive","import_solid","import_jsx_runtime","Dialog","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","props","ref","cn","DialogContent","positionRightCloseBtn","hideCloseBtn","size","position","height","isFull","children","classNames","sizeClassNames","heightClassNames","classNamesDialogContent","DialogHeader","DialogBody","isCondensed","DialogFooter","isDivider","DialogTitle","DialogDescription","import_qrcode","import_jsx_runtime","QRCodeScan","img","children","isQrForAll","DialogQr","className","title","shortTitle","qrImage","qrLink","logoQr","props","Dialog","DialogContent","cn","DialogBody","import_jsx_runtime","ActionButton","action","newTab","offset","dialogQrProps","className","children","props","isOpenQR","setOpenQR","isMobileDevice","useIsMobile","isMoMoApp","checkIsMoMoAgent","hasQrButton","handleGetLink","basicLink","handleAction","modifiedLink","scrollToElement","selector","element","offsetPosition","handleScrollOrAction","renderButtonWithDialogQr","Button","DialogQr","cn","React","import_react_icons","import_react_slot","import_jsx_runtime","Breadcrumb","className","props","ref","cn","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","asChild","BreadcrumbPage","BreadcrumbSeparator","children","BreadcrumbEllipsis","React","import_locale","import_react_day_picker","import_lucide_react","import_lunisolar","React","CheckboxPrimitive","import_solid","import_jsx_runtime","Checkbox","className","props","ref","cn","import_jsx_runtime","CusDayContent","date","cusContent","lunarDate","lunisolar","customFormatters","month","weekday","dayIndex","CheckboxLunaDate","isShow","setIsShow","lang","uniqueId","Checkbox","checked","isWeekend","Calendar","className","classNames","showOutsideDays","enableLunaDate","cusContentDay","props","showLunaDate","setShowLunaDate","cn","buttonVariants","dayProps","children","React","PopoverPrimitive","import_jsx_runtime","Popover","PopoverTrigger","PopoverContent","className","align","sideOffset","props","ref","cn","import_date_fns","import_lucide_react","import_solid","import_jsx_runtime","DatePicker","label","placeholder","size","message","isError","disabled","dateFormat","buttonProps","popoverProps","calendarProps","dateSelected","Popover","PopoverTrigger","Button","cn","CalendarIcon","PopoverContent","Calendar","React","AlertDialogPrimitive","import_jsx_runtime","AlertDialog","AlertDialogTrigger","AlertDialogPortal","AlertDialogOverlay","className","props","ref","cn","AlertDialogContent","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","buttonVariants","AlertDialogCancel","React","import_react_slot","import_class_variance_authority","import_jsx_runtime","iconButtonVariants","IconButton","className","variant","size","asChild","isDisabled","props","ref","Comp","buttonClassName","cn","import_react","import_jsx_runtime","HeadingGroupContext","HeadingTagline","color","size","isTruncated","className","children","colorClasses","sizeClasses","cn","Heading","as","HeadingTag","align","HeadingSub","marginTop","marginTopClasses","HeadingGroup","import_lucide_react","import_jsx_runtime","Pagination","current","total","onChange","getButton","index","cn","iconButtonVariants","_","React","TabsPrimitive","import_jsx_runtime","Tabs","TabsList","className","size","isDivider","props","ref","cn","TabsTrigger","TabsContent","import_react","import_outline","import_solid","import_jsx_runtime","TextArea","disabled","isError","message","label","className","inputClassName","size","rows","restProps","ref","cn","React","TOAST_LIMIT","TOAST_REMOVE_DELAY","count","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","TOAST_REMOVE_DELAY","reducer","state","action","TOAST_LIMIT","t","toast","listeners","memoryState","listener","props","id","update","dismiss","open","useToast","setState","index","React","ToastPrimitives","import_class_variance_authority","import_solid","import_jsx_runtime","ToastProvider","ToastViewport","className","props","ref","cn","toastVariants","Toast","variant","children","ToastAction","ToastClose","ToastTitle","ToastDescription","import_jsx_runtime","Toaster","toasts","useToast","ToastProvider","id","title","description","action","props","Toast","ToastTitle","ToastDescription","ToastClose","ToastViewport","React","import_react_slot","import_class_variance_authority","import_jsx_runtime","textButtonVariants","TextButton","className","variant","size","asChild","isDisabled","props","ref","Comp","buttonClassName","cn","React","TooltipPrimitive","import_jsx_runtime","TooltipProvider","Tooltip","TooltipTrigger","TooltipArrow","props","ref","cn","TooltipContent","className","type","sideOffset","import_react","import_solid","import_jsx_runtime","TextInput","disabled","isError","message","label","className","inputClassName","withClearButton","size","onChange","onFocus","onClickClear","value","defaultValue","type","restProps","ref","clearable","setClearable","rootRef","handleShowClearButton","inputValue","onChangeFactory","event","onFocusFactory","handleClear","inputTarget","cn","XCircleIconSolid","import_outline","import_react","import_jsx_runtime","Stepper","value","min","max","disabled","disabledInput","step","inputClassName","stepperClassName","className","onChange","onChangeInputStepper","onDecrement","onIncrement","restProps","ref","rootRef","isDisablePlus","setIsDisablePlus","isDisableMinus","setIsDisableMinus","inputValue","setInputValue","spanRef","handleDisable","onIncrementChange","inputTarget","newValue","onDecrementChange","onStepperInputChange","e","numericValue","IconButton","cn","React","import_solid","import_outline","SelectPrimitive","import_jsx_runtime","Select","className","children","label","message","size","isError","disabled","props","ref","cn","SelectValue","SelectTrigger","SelectScrollUpButton","SelectScrollDownButton","SelectContent","position","SelectGroup","SelectLabel","SelectItem","SelectSeparator","React","NavigationMenuPrimitive","import_class_variance_authority","import_solid","import_jsx_runtime","NavigationMenuContext","NavigationMenuProvider","value","children","useNavigationMenu","context","NavigationMenu","className","alignDropdown","props","ref","cn","NavigationMenuList","NavigationMenuItem","navigationMenuTriggerStyle","buttonVariants","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuLink","NavigationMenuViewport","NavigationMenuIndicator","React","SwitchPrimitives","import_jsx_runtime","Switch","className","props","ref","cn","React","RadioGroupPrimitive","import_lucide_react","import_jsx_runtime","RadioGroup","className","props","ref","cn","RadioGroupItem","import_jsx_runtime","ListItem","className","icon","title","children","href","newTab","linkProps","NavigationMenuLink","cn","ListItem_default","import_jsx_runtime","NavItems","data","alignDropdown","NavigationMenu","NavigationMenuList","menuItem","linkProps","NavigationMenuItem","NavigationMenuTrigger","NavigationMenuContent","cn","component","ListItem_default","NavigationMenuLink","navigationMenuTriggerStyle","NavItems_default","import_react","DEFAULT_EASE","import_react_use","import_router","import_jsx_runtime","ListItemMobile","className","icon","title","children","href","newTab","linkProps","cn","ListItemMobile_default","import_framer_motion","import_jsx_runtime","listItem","DEFAULT_EASE","NavItemsMobile","data","Accordion","menuItem","linkProps","AccordionItem","AccordionTrigger","AccordionContent","cn","component","ListItemMobile_default","NavItemsMobile_default","import_framer_motion","import_jsx_runtime","computeInsetTop","MobileMenu","data","className","isOpen","setIsOpen","memoizedInsetTop","handleRouteChange","Router","variants","containerVariants","DEFAULT_EASE","cn","NavItemsMobile_default","MoMoText","MobileMenu_default","import_html_react_parser","import_solid","import_react","import_jsx_runtime","HeaderNavigation","className","dataMenu","serviceInfo","hasDownloadApp","navigationRight","isSticky","alignDropdown","logo","name","url","openDialogQr","setOpenDialogQr","cn","parse","NavItems_default","Button","DialogQr","MobileMenu_default","import_react","import_jsx_runtime","FooterContentItem","item","FooterContent","primaryMenu","secondaryMenu","openDialogQr","setOpenDialogQr","index","SUPPORT","MOMO_TEXT","SOCIAL_ITEMS","APP_DOWNLOAD","Button","DialogQr","FooterContent_default","import_jsx_runtime","Footer","className","primaryMenu","secondaryMenu","cn","FooterContent_default","React","import_jsx_runtime","Card","className","props","ref","cn","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","React","import_cmdk","import_solid","import_jsx_runtime","Command","className","props","ref","CommandPrimitive","cn","CommandDialog","children","Dialog","DialogContent","CommandInput","onClickClear","divRef","search","setSearch","handleClearInput","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","isActive","CommandShortcut","import_solid","import_jsx_runtime","ComboboxTrigger","className","value","label","children","placeholder","PopoverTrigger","cn","ComboboxContent","PopoverContent","Combobox","open","onOpenChange","Popover","import_class_variance_authority","import_react","import_outline","import_jsx_runtime","calloutVariants","iconVariants","Callout","type","message","withAction","onClickAction","className","disabled","actionClassName","props","ref","cn","TextButton","import_react","import_solid","import_outline","import_jsx_runtime","SearchBar","disabled","className","inputClassName","size","onChange","onFocus","onClickClear","value","defaultValue","type","restProps","ref","clearable","setClearable","rootRef","handleShowClearButton","inputValue","onChangeFactory","event","onFocusFactory","handleClear","inputTarget","cn","import_react","import_swiper","DialogPrimitive","import_lucide_react","import_outline","import_lodash","import_jsx_runtime","LightboxGalleryDialog","DialogPortal","DialogOverlay","React","className","props","ref","cn","CloseDialog","clearActiveIndex","LightboxThumbnail","children","src","alt","classNameImage","onClick","handleOnClickThumbnail","DialogContent","DialogHeader","DialogFooter","DialogTitle","DialogDescription","LightBoxContent","images","activeSlideIndex","withSideBar","subHtmlSideBar","classNameSubHtmSideBar","isPagination","activeSlide","setActiveSlide","titleImage","setTitleImg","onGetTitleImage","result","_","idx","titleImgDraf","pagination","index","classNameParent","arrayModule","realIndex","activeBullet","img","IconButton","LightboxGallery","open","onOpenChange","child","updatedProps","knownProps","acc","key","React","RadioGroupPrimitive","import_lucide_react","CheckboxPrimitive","import_solid","import_jsx_runtime","ChoiceboxGroupContext","useChoiceboxGroupContext","context","ChoiceboxGroup","className","hideIndicator","props","ref","cn","ChoiceboxGroupItem","children","ChoiceboxMultiItem","import_class_variance_authority","import_jsx_runtime","badgeVariants","Badge","className","variant","props","cn","React","ProgressPrimitive","import_class_variance_authority","import_jsx_runtime","progressbarVariants","progressbarSecondaryVariants","Progress","className","value","variant","size","disabled","props","ref","cn","import_react","TYPE_MEDIA_IMAGE","DUMMY_NONE_DATA","DUMMY_NONE_DATA_CTAS","DUMMY_NONE_DATA_FEATURS","import_outline","AspectRatioPrimitive","AspectRatio","import_class_variance_authority","DialogPrimitive","import_lucide_react","import_jsx_runtime","DialogPortal","DialogOverlay","React","className","props","ref","cn","Dialog","CloseDialog","DialogContent","children","featureVariants","SectionHeroTitle","title","SectionHeroTag","tagName","SectionHeroDescription","description","SectionHeroCTA","dataCtas","handleOnClickCTA","e","onClickFC","ButtonCTAQR","cta","index","Button","SectionHeroItemFeature","template","label","icon","idx","SectionHeroListFeature","dataFeatures","feature","SectionHeroVideo","type","src","ratioImg","video","AspectRatio","TYPE_MEDIA_IMAGE","SectionHeroMedia","url","HeroContentTemplateOne","data","HeroContentTemplateTwo","HeroContentTemplateThree","HeroContentTemplateFour","HeroContentTemplateFive","renderTemplate","SectionHeroContent","HeroSection","DUMMY_NONE_DATA_CTAS","DUMMY_NONE_DATA","DUMMY_NONE_DATA_FEATURS","React","SliderPrimitive","import_jsx_runtime","Slider","className","props","ref","cn","import_color","import_plugin","DEFAULT_TRANSITION_DURATION","transition_default","custom_default","scrollbar_hide_default","utilities","custom_default","transition_default","scrollbar_hide_default","import_flat","removeDefaultKeys","obj","newObj","key","flattenThemeObject","ROOT_FONT_SIZE","baseScale","extendedScale","generateSpacingScale","spacingUnit","scaleLabels","scale","label","multiplier","key","first","second","blue","green","pink","purple","red","yellow","orange","gray","commonColors","blue","green","pink","purple","red","yellow","gray","orange","colors","commonColors","layout","animations","fontSizes","prefix","radius","prefix","resolveConfig","prefix","resolved","flatColors","flattenThemeObject","colors","flatLayout","layout","cssSelector","colorName","colorValue","r","g","Color","colorVar","error","key","value","layoutVariablePrefix","nestedKey","nestedValue","nestedLayoutVariable","spacingScale","generateSpacingScale","scaleKey","scaleValue","spacingVariable","formattedValue","mobaseTW","plugin","addBase","addUtilities","addComponents","utilities","radius","fontSizes","animations","import_jsx_runtime","SiteMeta"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/components/Accordion/Accordion.tsx","../../src/helpers/utils.ts","../../src/helpers/constants.ts","../../src/components/ActionButton/ActionButton.tsx","../../src/components/Button/Button.tsx","../../src/foundation/SpinerIcon.tsx","../../src/components/Dialog/Dialog.tsx","../../src/components/DialogQr/DialogQr.tsx","../../src/components/Breadcrumb/Breadcrumb.tsx","../../src/components/Calendar/Calendar.tsx","../../src/components/Checkbox/Checkbox.tsx","../../src/components/Popover/Popover.tsx","../../src/components/DatePicker/DatePicker.tsx","../../src/components/AlertDialog/AlertDialog.tsx","../../src/components/IconButton/IconButton.tsx","../../src/components/HeadingGroup/HeadingGroup.tsx","../../src/components/Pagination/Pagination.tsx","../../src/components/Tabs/Tabs.tsx","../../src/components/TextArea/TextArea.tsx","../../src/components/Toast/useToast.tsx","../../src/components/Toast/Toast.tsx","../../src/components/Toast/toaster.tsx","../../src/components/TextButton/TextButton.tsx","../../src/components/Tooltip/Tooltip.tsx","../../src/components/TextInput/TextInput.tsx","../../src/components/Stepper/Stepper.tsx","../../src/components/Select/Select.tsx","../../src/components/NavigationMenu/NavigationMenu.tsx","../../src/components/Switch/Switch.tsx","../../src/components/RadioGroup/RadioGroup.tsx","../../src/components/HeaderNavigation/ListItem.tsx","../../src/components/HeaderNavigation/NavItems.tsx","../../src/components/HeaderNavigation/MobileMenu.tsx","../../src/helpers/animations.ts","../../src/components/HeaderNavigation/ListItemMobile.tsx","../../src/components/HeaderNavigation/NavItemsMobile.tsx","../../src/components/HeaderNavigation/HeaderNavigation.tsx","../../src/components/Footer/FooterContent.tsx","../../src/components/Footer/Footer.tsx","../../src/components/Card/Card.tsx","../../src/components/Command/Command.tsx","../../src/components/Combobox/Combobox.tsx","../../src/components/Callout/Callout.tsx","../../src/components/SearchBar/SearchBar.tsx","../../src/components/LightboxGallery/LightboxGallery.tsx","../../src/components/Choicebox/Choicebox.tsx","../../src/components/Badge/Badge.tsx","../../src/components/Progressbar/Progressbar.tsx","../../src/components/HeroSection/HeroSection.tsx","../../src/components/HeroSection/utils.ts","../../src/components/AspectRatio/AspectRatio.tsx","../../src/components/Slider/Slider.tsx","../../src/mobase-tw-plugin/plugin.ts","../../src/mobase-tw-plugin/utilities/transition.ts","../../src/mobase-tw-plugin/utilities/custom.ts","../../src/mobase-tw-plugin/utilities/scrollbar-hide.ts","../../src/mobase-tw-plugin/utilities/index.ts","../../src/mobase-tw-plugin/utils/object.ts","../../src/mobase-tw-plugin/utils/theme.ts","../../src/mobase-tw-plugin/colors/blue.ts","../../src/mobase-tw-plugin/colors/green.ts","../../src/mobase-tw-plugin/colors/pink.ts","../../src/mobase-tw-plugin/colors/purple.ts","../../src/mobase-tw-plugin/colors/red.ts","../../src/mobase-tw-plugin/colors/yellow.ts","../../src/mobase-tw-plugin/colors/orange.ts","../../src/mobase-tw-plugin/colors/gray.ts","../../src/mobase-tw-plugin/colors/common.ts","../../src/mobase-tw-plugin/colors/index.ts","../../src/mobase-tw-plugin/layout.ts","../../src/mobase-tw-plugin/animations/index.ts","../../src/mobase-tw-plugin/font-sizes.ts","../../src/mobase-tw-plugin/radius.ts","../../src/site/meta.tsx"],"sourcesContent":["export * from \"./components\";\nexport * from \"./mobase-tw-plugin\";\nexport * from \"./site\";\n","import * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDownIcon } from \"@heroicons/react/20/solid\";\n\nimport { cn } from \"../../helpers/utils\";\n\nimport {\n AccordionContentProps,\n AccordionItemProps,\n AccordionTriggerProps,\n AccordionSingleProps,\n AccordionMultipleProps,\n} from \"@radix-ui/react-accordion\";\n\nexport interface AccordionInterface extends AccordionItemProps {\n css?: string;\n}\nexport type AccordionRootInterface =\n | AccordionSingleProps\n | AccordionMultipleProps;\n// const Accordion = AccordionPrimitive.Root;\n\nconst Accordion = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Root>,\n AccordionRootInterface\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Root ref={ref} {...props} />\n));\nAccordion.displayName = \"AccordionRoot\";\n\nexport interface AccordionItemInterface extends AccordionItemProps {\n css?: string;\n}\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n AccordionItemInterface\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b border-gray-200\", className)}\n {...props}\n />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nexport interface AccordionTriggerInterface extends AccordionTriggerProps {\n css?: string;\n}\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n AccordionTriggerInterface\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center text-left justify-between py-4 font-medium transition-all hover:underline hover:text-pink-600 [&[data-state=open]]:text-pink-600 [&[data-state=open]>svg]:rotate-180 text-gray-900\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\" h-5 w-5 shrink-0 transition-transform duration-200 ml-1\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nexport interface AccordionContentInterface extends AccordionContentProps {\n css?: string;\n}\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n AccordionContentInterface\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down text-left \"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0 text-gray-900 \", className)}>\n {children}\n </div>\n </AccordionPrimitive.Content>\n));\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import { type ClassValue, clsx } from \"clsx\";\nimport * as React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { NEXT_PUBLIC_REACT_APP_FRONT_END } from \"../helpers/constants\";\nimport { useEffect, useLayoutEffect, useState } from \"react\";\nimport UAParser from \"ua-parser-js\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ninterface AddQueryToLinkParams {\n link?: string;\n query?: Record<string, string>;\n}\n\nexport const addQueryToLink = ({\n link,\n query = {},\n}: AddQueryToLinkParams): string => {\n if (!link) return \"\";\n\n const url = new URL(link, NEXT_PUBLIC_REACT_APP_FRONT_END || \"\");\n\n const searchParams = new URLSearchParams(url.search);\n\n Object.entries(query).forEach(([key, value]) => {\n if (value) searchParams.append(key, value);\n });\n\n url.search = searchParams.toString();\n\n return url.toString();\n};\n\n/**\n * Checks if the given element is a React element.\n *\n * @param element - The element to check.\n * @returns Whether the element is a React element.\n */\nexport const isReactElement = (\n element: React.ReactNode\n): element is React.ReactElement => {\n return React.isValidElement(element);\n};\n\nexport const checkIsMoMoAgent = () => {\n if (typeof window === \"undefined\") return undefined;\n return !!navigator?.userAgent?.includes(\n process.env.NEXT_PUBLIC_REACT_APP_MOMO_APP_USER_AGENT || \"\"\n );\n};\n\nexport const checkIsMobileAgent = () => UAParser().device.type === \"mobile\";\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport const useIsMobile = () => {\n const [isMobile, setIsMobile] = useState<boolean | undefined>(false);\n useIsomorphicLayoutEffect(() => {\n setIsMobile(checkIsMobileAgent() || checkIsMoMoAgent());\n }, []);\n\n return isMobile;\n};\n","export const FooterItemsDefault = {\n heading: \"Về chúng tôi\",\n lists: [\n {\n title: \"Giới thiệu\",\n url: \"/sieu-ung-dung-momo\",\n newTab: false,\n },\n {\n title: \"An toàn - Bảo mật\",\n url: \"/an-toan-bao-mat\",\n newTab: false,\n },\n {\n title: \"Điều khoản điều lệ\",\n url: \"/dieu-khoan-dieu-le\",\n newTab: false,\n },\n {\n title: \"Chính sách quyền riêng tư\",\n url: \"/chinh-sach-quyen-rieng-tu\",\n newTab: false,\n },\n {\n title: \"Điều khoản liên kết Google trên ứng dụng MoMo\",\n url: \"/google-cloud-policy\",\n newTab: false,\n },\n {\n title: \"Blog\",\n url: \"/blog\",\n newTab: false,\n },\n {\n title: \"Liên hệ\",\n url: \"/lienhe\",\n newTab: false,\n },\n {\n title: \"Hỏi đáp\",\n url: \"/hoi-dap\",\n newTab: false,\n },\n ],\n};\n\nexport const MoMoText = {\n Business: {\n Phome: \"1900636652\",\n Phome_Format: \"1900 636 652 (Phí 1.000đ/phút)\",\n Email: \"merchant.care@momo.vn\",\n },\n Support: {\n Hotline: \"1900545441\",\n Hotline_Format: \"1900 5454 41\",\n Phone_Ext_1: \"02873065555\",\n Phone_Ext_1_Format: \"028.7306.5555\",\n Phone_Ext_2: \"02899995555\",\n Phone_Ext_2_Format: \"028.9999.5555\",\n Email: \"hotro@momo.vn\",\n },\n};\n\nexport const NEXT_PUBLIC_REACT_APP_FRONT_END = \"https://www.momo.vn/\";\n\nexport const SUPPORT = {\n Address:\n \"Lầu 6, Toà nhà Phú Mỹ Hưng, số 8 Hoàng Văn Thái, khu phố 1, Phường Tân Phú, Quận 7, Thành phố Hồ Chí Minh\",\n};\nexport const LIST_LINK = [\n { Name: \"Giới thiệu\", Href: \"/sieu-ung-dung-momo\" },\n { Name: \"An toàn - Bảo mật\", Href: \"/an-toan-bao-mat\" },\n { Name: \"Điều khoản điều lệ\", Href: \"/dieu-khoan-dieu-le\" },\n {\n Name: \"Chính sách quyền riêng tư\",\n Href: \"/chinh-sach-quyen-rieng-tu\",\n },\n {\n Name: \"Điều khoản liên kết Google trên ứng dụng MoMo\",\n Href: \"/google-cloud-policy\",\n },\n { Name: \"Blog\", Href: \"/blog\" },\n { Name: \"Liên hệ\", Href: \"/lienhe\" },\n { Name: \"Hỏi đáp\", Href: \"/hoi-dap\" },\n];\n\nexport const SOCIAL_ITEMS = [\n {\n Name: \"Facebook\",\n Image:\n \"https://homepage.momocdn.net/styles/desktop/images/social/facebook.svg\",\n Link: \"https://www.facebook.com/vimomo\",\n },\n {\n Name: \"Linkedin\",\n Image:\n \"https://homepage.momocdn.net/styles/desktop/images/social/linkedin.svg\",\n Link: \"https://www.linkedin.com/company/momo-mservice/\",\n },\n {\n Name: \"Youtube\",\n Image:\n \"https://homepage.momocdn.net/styles/desktop/images/social/youtube.svg\",\n Link: \"https://www.youtube.com/channel/UCKHHW-qL2JoZqcSNm1jPlqw\",\n },\n];\n\nexport const APP_DOWNLOAD = [\n {\n Name: \"App Store\",\n Image:\n \"https://homepage.momocdn.net/img/momo-upload-api-210724113855-637627235353131497.jpg\",\n Link: \"https://itunes.apple.com/vn/app/id918751511?utm_source=website-momo&utm_medium=download&utm_campaign=momo-1dong\",\n },\n {\n Name: \"Google Play\",\n Image:\n \"https://homepage.momocdn.net/img/momo-upload-api-210724113959-637627235994410679.jpg\",\n Link: \"https://play.google.com/store/apps/details?id=com.mservice.momotransfer&utm_source=website-momo&utm_medium=download&utm_campaign=momo-1dong\",\n },\n];\n\nexport const SERVICES_DEFAULT = {\n heading: \"Dịch vụ nổi bật\",\n lists: [\n {\n title: \"Vé xem phim\",\n url: \"/cinema\",\n image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-230629144722.svg\",\n newTab: false,\n },\n {\n title: \"Bảo hiểm Ô tô\",\n url: \"/bao-hiem-o-to/vat-chat\",\n image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-230629144844.svg\",\n newTab: false,\n },\n {\n title: \"Vé máy bay\",\n url: \"/ve-may-bay\",\n image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-201210145350.svg\",\n newTab: false,\n },\n {\n title: \"Ví nhân ái\",\n url: \"/vi-nhan-ai\",\n image:\n \"https://homepage.momocdn.net/img/momo-upload-api-231214222240-638381893608141712.png\",\n newTab: false,\n },\n {\n title: \"Túi thần tài\",\n url: \"/tui-than-tai\",\n image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-210716153611.svg\",\n newTab: false,\n },\n {\n title: \"Ví trả sau\",\n url: \"/vi-tra-sau\",\n image:\n \"https://homepage.momocdn.net/img/momo-upload-api-230629144414-638236466540028217.png\",\n newTab: false,\n },\n\n {\n title: \"Vay nhanh\",\n url: \"/vay-nhanh\",\n image:\n \"https://homepage.momocdn.net/img/momo-upload-api-230418101312-638174095928506551.png\",\n newTab: false,\n },\n {\n title: \"Trả Góp Apple\",\n url: \"/tra-gop-san-pham-apple\",\n image:\n \"https://homepage.momocdn.net/img/momo-amazone-s3-api-240719154503-638570007030998565.png\",\n newTab: false,\n },\n ],\n};\n\nexport const SERVICES_PAGE = [\n {\n Name: \"Vé xem phim\",\n Href: \"/cinema\",\n Image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-230629144722.svg\",\n },\n {\n Name: \"Bảo hiểm Ô tô\",\n Href: \"/bao-hiem-o-to/vat-chat\",\n Image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-230629144844.svg\",\n },\n {\n Name: \"Vé máy bay\",\n Href: \"/ve-may-bay\",\n Image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-201210145350.svg\",\n },\n {\n Name: \"Khách sạn\",\n Href: \"/khach-san-theo-gio\",\n Image:\n \"https://homepage.momocdn.net/fileuploads/svg/momo-file-210315154805.svg\",\n },\n {\n Name: \"Ví nhân ái\",\n Href: \"/vi-nhan-ai\",\n Image:\n \"https://homepage.momocdn.net/img/momo-upload-api-231214222240-638381893608141712.png\",\n },\n {\n Name: \"Vay nhanh\",\n Href: \"/vay-nhanh\",\n Image:\n \"https://homepage.momocdn.net/img/momo-upload-api-230418101312-638174095928506551.png\",\n },\n];\n\nexport const MOMO_TEXT = {\n Business: {\n Phome: \"1900636652\",\n Phome_Format: \"1900 636 652 (Phí 1.000đ/phút)\",\n Email: \"merchant.care@momo.vn\",\n },\n Support: {\n Hotline: \"1900545441\",\n Hotline_Format: \"1900 5454 41\",\n Phone_Ext_1: \"02873065555\",\n Phone_Ext_1_Format: \"028.7306.5555\",\n Phone_Ext_2: \"02899995555\",\n Phone_Ext_2_Format: \"028.9999.5555\",\n Phone_Ext_3: \"02855555555\",\n Phone_Ext_3_Format: \"028.5555.5555\",\n Email: \"hotro@momo.vn\",\n },\n};\n\nexport const FROM_TYPE_FOOTER_MENU = \"nav_footer\";","import React, { useState } from \"react\";\nimport { checkIsMoMoAgent, cn, useIsMobile } from \"../../helpers/utils\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { DialogQr, DialogQrProps } from \"../DialogQr\";\n\ninterface ActionButtonProps extends ButtonProps {\n /**\n * Action to be performed when the button is clicked.\n */\n action?: string | (() => void) | undefined;\n /**\n * Opens a new tab when href link.\n */\n newTab?: boolean;\n /**\n * Offset top when use button scroll to element.\n */\n offset?: number;\n /**\n * Props to pass to the DialogQr component. If this prop is provided, the button will open a dialog with a QR code. qrLink in DialogQrProps is required.\n */\n dialogQrProps?: Partial<DialogQrProps>;\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * The content for button.\n */\n children?: React.ReactNode;\n}\n\nconst ActionButton = ({\n action,\n newTab,\n offset,\n dialogQrProps,\n className,\n children,\n ...props\n}: ActionButtonProps) => {\n const [isOpenQR, setOpenQR] = useState(false);\n const isMobileDevice = useIsMobile();\n const isMoMoApp =\n checkIsMoMoAgent() ||\n (typeof window !== \"undefined\" &&\n window.location.search.includes(\"view=app\"));\n \n const hasQrButton = Boolean(dialogQrProps?.qrLink);\n\n const handleGetLink = () => {\n const basicLink = hasQrButton ? dialogQrProps?.qrLink : action;\n return typeof basicLink === \"string\" ? basicLink.trim() : \"\";\n };\n\n const handleAction = () => {\n const modifiedLink = handleGetLink();\n \n if (!modifiedLink && typeof action !== \"function\") return;\n\n if (typeof action === \"function\") {\n action();\n } else {\n window.open(\n /^http|^momo:/.test(modifiedLink)\n ? modifiedLink\n : `${process.env.NEXT_PUBLIC_REACT_APP_BASE_PATH}${modifiedLink}`,\n newTab ? \"_blank\" : \"_self\"\n );\n }\n };\n\n const scrollToElement = (selector: string, offset: number = 0) => {\n const element = document.querySelector(selector);\n if (!element) return;\n\n const elementPosition = element.getBoundingClientRect().top + window.scrollY;\n const offsetPosition = elementPosition - offset;\n\n window.scrollTo({\n top: offsetPosition,\n behavior: \"smooth\",\n });\n };\n\n const handleScrollOrAction = () => {\n if (typeof action === \"string\" && action.startsWith(\"#\")) {\n scrollToElement(action, offset);\n } else {\n handleAction();\n }\n };\n\n const renderButtonWithDialogQr = () => (\n <>\n <Button\n {...props}\n className={className}\n onClick={() => setOpenQR(true)}\n data-name=\"button-action-with-qr\"\n >\n {children}\n </Button>\n <DialogQr\n {...dialogQrProps}\n open={isOpenQR}\n onOpenChange={() => setOpenQR(false)}\n qrLink={dialogQrProps?.qrLink || \"\"}\n />\n </>\n );\n\n const renderButtonWithoutQr = () => (\n <Button\n {...props}\n onClick={handleScrollOrAction}\n className={cn(\"cursor-pointer\", className)}\n data-name=\"button-action-without-qr\"\n rel=\"noreferrer\"\n >\n {children}\n </Button>\n );\n\n return hasQrButton ? (\n isMobileDevice || isMoMoApp ? (\n dialogQrProps?.isQrForAll ? renderButtonWithDialogQr() : (\n <Button\n {...props}\n className={className}\n onClick={handleAction}\n data-name=\"button-action-with-qr\"\n >\n {children}\n </Button>\n )\n ) : (\n renderButtonWithDialogQr()\n )\n ) : (\n renderButtonWithoutQr()\n );\n};\n\nexport { ActionButton };","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../helpers/utils\";\nimport SpinerIcon from \"../../foundation/SpinerIcon\";\n\n// /dwd\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-lg text-sm font-bold transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed border border-transparent\",\n {\n variants: {\n /**\n * Determines style variation of Button component.\n */\n variant: {\n primary:\n \"bg-pink-500 text-white hover:bg-pink-600 disabled:bg-pink-300\",\n secondary:\n \"bg-white text-gray-900 hover:bg-gray-100 disabled:text-gray-400 disabled:bg-white border-gray-300\",\n outline:\n \"border-pink-500 text-pink-500 bg-white hover:bg-pink-50 disabled:bg-white disabled:border-pink-300 disabled:text-pink-300\",\n tonal:\n \"bg-pink-100 text-pink-500 hover:bg-pink-200 disabled:bg-gray-200 disabled:text-gray-400\",\n danger: \"bg-red-500 text-white hover:bg-red-600 disabled:bg-red-300\",\n transparent: \"text-gray-900 bg-transparent hover:bg-gray-100 disabled:text-gray-400 disabled:bg-transparent\",\n },\n /**\n * Determines size variation of Button component.\n */\n size: {\n default: \"text-sm h-10 px-4\",\n sm: \"h-8 px-3 text-sm rounded-md\",\n lg: \"h-12 px-4 text-base\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"default\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n */\n asChild?: boolean;\n /**\n * Adds loading indicator icon and disables interactions\n */\n isLoading?: boolean;\n /**\n * Disabled interaction and applies disabled styles\n */\n isDisabled?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n size = \"default\",\n asChild = false,\n isLoading = false,\n isDisabled = false,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const buttonClassName = cn(buttonVariants({ variant, size, className }), {\n \"cursor-wait\": isLoading,\n });\n const loaderSize =\n size === \"default\" || size === \"sm\" ? \"w-4 h-4\" : \"w-5 h-5\";\n return (\n <>\n {asChild ? (\n <Comp\n className={buttonClassName}\n type=\"button\"\n disabled={isDisabled}\n ref={ref}\n {...props}\n >\n {props.children}\n </Comp>\n ) : (\n <Comp\n className={buttonClassName}\n type=\"button\"\n disabled={isDisabled}\n ref={ref}\n {...props}\n >\n {isLoading && (\n <SpinerIcon className={`${loaderSize} animate-spin-loading mr-2`} />\n )}\n {props.children}\n </Comp>\n )}\n </>\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React from \"react\";\n\ntype SpinerIconProps = {\n className?: string;\n};\n\nconst SpinerIcon: React.FC<SpinerIconProps> = ({ className }) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n className={`${className}`}\n >\n <path\n opacity=\"0.9\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15 9H19C19.55 9 20 9.45 20 10C20 10.55 19.55 11 19 11H15C14.45 11 14 10.55 14 10C14 9.45 14.45 9 15 9Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.2\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.8301 11.634L18.2942 13.634C18.7706 13.909 18.9353 14.5237 18.6603 15C18.3853 15.4763 17.7706 15.641 17.2942 15.366L13.8301 13.366C13.3538 13.091 13.1891 12.4763 13.4641 12C13.7391 11.5237 14.3538 11.359 14.8301 11.634Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.25\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.366 13.8301L15.366 17.2942C15.641 17.7706 15.4763 18.3853 14.9999 18.6603C14.5236 18.9353 13.9089 18.7706 13.6339 18.2942L11.6339 14.8301C11.3589 14.3538 11.5236 13.7391 11.9999 13.4641C12.4763 13.1891 13.091 13.3538 13.366 13.8301Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.3\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11 15V19C11 19.55 10.55 20 10 20C9.45 20 9 19.55 9 19V15C9 14.45 9.45 14 10 14C10.55 14 11 14.45 11 15Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.35\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.36597 14.8301L6.36597 18.2942C6.09097 18.7706 5.47626 18.9353 4.99994 18.6603C4.52363 18.3853 4.35892 17.7706 4.63392 17.2942L6.63392 13.8301C6.90892 13.3538 7.52363 13.1891 7.99994 13.4641C8.47626 13.7391 8.64097 14.3538 8.36597 14.8301Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.4\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.16986 13.366L2.70576 15.366C2.22945 15.641 1.61474 15.4763 1.33974 15C1.06474 14.5237 1.22945 13.909 1.70576 13.634L5.16986 11.634C5.64618 11.359 6.26089 11.5237 6.53589 12C6.81089 12.4763 6.64618 13.091 6.16986 13.366Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.45\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5 11H1C0.45 11 0 10.55 0 10C0 9.45 0.45 9 1 9H5C5.55 9 6 9.45 6 10C6 10.55 5.55 11 5 11Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.5\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.16986 8.36603L1.70576 6.36603C1.22945 6.09103 1.06474 5.47632 1.33974 5C1.61474 4.52369 2.22945 4.35898 2.70576 4.63398L6.16986 6.63398C6.64618 6.90898 6.81089 7.52369 6.53589 8C6.26089 8.47632 5.64618 8.64103 5.16986 8.36603Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.55\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.63403 6.16986L4.63403 2.70576C4.35903 2.22945 4.52374 1.61474 5.00006 1.33974C5.47637 1.06474 6.09108 1.22945 6.36608 1.70576L8.36608 5.16986C8.64108 5.64618 8.47637 6.26089 8.00006 6.53589C7.52374 6.81089 6.90903 6.64618 6.63403 6.16986Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.65\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9 5L9 1C9 0.45 9.45 0 10 0C10.55 0 11 0.45 11 1V5C11 5.55 10.55 6 10 6C9.45 6 9 5.55 9 5Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.75\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.634 5.16986L13.634 1.70576C13.909 1.22945 14.5237 1.06474 15.0001 1.33974C15.4764 1.61474 15.6411 2.22945 15.3661 2.70576L13.3661 6.16986C13.0911 6.64618 12.4764 6.81089 12.0001 6.53589C11.5237 6.26089 11.359 5.64618 11.634 5.16986Z\"\n fill=\"currentColor\"\n />\n <path\n opacity=\"0.85\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.8301 6.63397L17.2942 4.63397C17.7706 4.35897 18.3853 4.52368 18.6603 5C18.9353 5.47631 18.7706 6.09102 18.2942 6.36602L14.8301 8.36602C14.3538 8.64102 13.7391 8.47631 13.4641 8C13.1891 7.52368 13.3538 6.90897 13.8301 6.63397Z\"\n fill=\"currentColor\"\n />\n </svg>\n\n );\n};\n\nexport default SpinerIcon;\n","import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cn } from \"../../helpers/utils\";\n\nimport { XMarkIcon } from \"@heroicons/react/16/solid\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/60 !duration-300 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n\n /**\n * Determines whether the close button should be positioned on the right side.\n */\n positionRightCloseBtn?: boolean;\n /**\n * Size of the modal window\n */\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n /**\n * Position of the modal window\n */\n position?: \"center\" | \"left\" | \"right\" | \"bottom\";\n /**\n * Determines whether the close button hide or not\n */\n hideCloseBtn?: boolean;\n /**\n * Height of the modal window\n */\n height?: \"auto\" | \"small\" | \"large\" | \"full\";\n /**\n * Open full screen dialog in mobile\n */\n isFull?: boolean;\n }\n>(\n (\n {\n className,\n positionRightCloseBtn,\n hideCloseBtn = false,\n size = \"md\",\n position = \"center\",\n height = \"auto\",\n isFull = false,\n children,\n ...props\n },\n ref,\n ) => {\n const classNames = {\n base: \"fixed z-50 flex bg-white shadow-lg sm:rounded-xl bg-white text-gray-900 w-full max-w-[calc(-64px_+_100vw)] max-h-[calc(-64px_+_100vh)] flex-col\",\n center:\n \"left-[50%] top-[50%] translate-x-[-50%] translate-y-[-50%] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] rounded-xl\",\n bottom:\n \"!duration-300 bottom-0 sm:bottom-1/2 left-1/2 rounded-t-xl sm:translate-y-1/2 data-[state=closed]:animate-out -translate-x-1/2 data-[state=open]:animate-in data-[state=open]:slide-in-from-left-1/2 ease-in-out data-[state=open]:slide-in-from-bottom-2/3 data-[state=closed]:slide-out-to-bottom-2/3 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 max-w-full max-h-[calc(-32px_+_100vh)] sm:max-h-[calc(-64px_+_100vh)] sm:max-w-[calc(-64px_+_100vw)]\",\n left: \"!duration-300 max-h-screen !h-full rounded-r-xl sm:rounded-l-none top-0 data-[state=open]:animate-in data-[state=open]:slide-in-from-left data-[state=closed]:animate-out data-[state=closed]:slide-out-to-left ease-in-out\",\n right:\n \"!duration-300 !h-full rounded-l-xl sm:rounded-r-none max-h-screen top-0 right-0 data-[state=open]:animate-in data-[state=open]:slide-in-from-right data-[state=closed]:animate-out data-[state=closed]:slide-out-to-right ease-in-out\",\n };\n\n const sizeClassNames = {\n sm: \"w-80 sm:w-80\",\n md: \"w-[512px] sm:w-[512px]\",\n lg: \"w-[672px] sm:w-[672px]\",\n xl: \"w-[1024px] sm:-[1024px]\",\n };\n\n const heightClassNames = {\n auto: \"h-auto sm:h-auto\",\n small: \"h-[480px] sm:h-[480px]\",\n large: \"h-[640px] sm:h-[640px]\",\n full: \"h-full\",\n };\n\n const classNamesDialogContent = [\n classNames.base,\n classNames[position],\n sizeClassNames[size],\n heightClassNames[height],\n isFull &&\n \"h-full max-h-screen max-w-full w-full rounded-none sm:rounded-xl sm:max-h-[calc(-64px_+_100vh)]\",\n className,\n ];\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(...classNamesDialogContent)}\n {...props}\n >\n {children}\n {!hideCloseBtn && <DialogPrimitive.Close\n className={cn(\n \"absolute md:top-4 top-2 focus:outline-none focus:ring-0 disabled:pointer-events-none data-[state=open]:bg-gray-100 data-[state=open]:text-gray-700 text-gray-900 w-8 h-8 flex justify-center items-center rounded-full before:opacity-0 hover:before:opacity-100 before:transition-opacity before:z-[-1] before:content-[''] before:absolute before:inset-0 before:rounded-full before:select-none before:left-0 before:top-0 before:bg-gray-200 left-3 md:left-auto md:right-4\",\n positionRightCloseBtn && \"left-auto right-3 md:right-4\",\n )}\n title=\"Đóng\"\n >\n <XMarkIcon className=\"h-5 w-5 text-gray-700\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>}\n\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n },\n);\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"dialog-header py-2 md:py-4 h-12 md:h-16 px-10 md:px-12 items-center justify-center flex border-b border-gray-200 w-full shrink-0\",\n className,\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogBody = ({\n className,\n isCondensed = false,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n /**\n * Determines whether the dialog body should be condensed.\n */\n isCondensed?: boolean;\n}) => (\n <div\n className={cn(\n \"dialog-body p-6 flex-1 overflow-y-auto\",\n isCondensed && \"p-5\",\n className,\n )}\n {...props}\n />\n);\nDialogBody.displayName = \"DialogBody\";\n\nconst DialogFooter = ({\n className,\n isDivider = true,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { isDivider?: boolean }) => (\n <div\n className={cn(\n \"dialog-footer flex sm:flex-row justify-center [&>*]:basis-1/2 [&>*]:sm:basis-auto sm:justify-end space-x-2 px-6 pb-4 shrink-0\",\n isDivider && \"border-gray-200 border-t py-4\",\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"text-base font-semibold line-clamp-1 max-w-full\", className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-gray-700\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogBody,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import { type DialogProps } from \"@radix-ui/react-dialog\";\nimport { Dialog, DialogContent, DialogBody } from \"../Dialog\";\nimport { cn } from \"../../helpers/utils\";\nimport {QRCodeSVG} from 'qrcode.react';\n/**\n * Props for the DialogQr component.\n */\nexport interface DialogQrProps extends DialogProps {\n /**\n * The title of the dialog QR.\n */\n title?: string;\n\n /**\n * The short title of the step 3 in dialog QR.\n */\n shortTitle?: string;\n\n /**\n * The image URL for the QR code.\n */\n qrImage?: string;\n\n /**\n * The link associated with the QR code.\n */\n qrLink?: string;\n\n /**\n * The logo image URL for the QR code.\n */\n logoQr?: string;\n\n /**\n * Indicates whether the QR code is all in one.\n */\n isQrForAll?: boolean;\n className?: string;\n}\n\nconst QRCodeScan = ({ img = \"\", children, isQrForAll }) => {\n return (\n <>\n <div className=\"qrcode__scan__container\">\n <div className=\"qrcode__scan\">\n <div className=\"qrcode__gradient\">\n <img\n alt=\"step 1\"\n className=\"img-fluid\"\n src=\"https://homepage.momocdn.net/jk/momo2020/img/qrcode/qrcode-gradient.png\"\n />\n </div>\n <div className=\"qrcode__border\">\n <img\n alt=\"step 2\"\n className=\"img-fluid\"\n src=\"https://homepage.momocdn.net/jk/momo2020/img/qrcode/border-qrcode.svg\"\n />\n </div>\n\n <div className=\"qrcode__image p-4\">\n {img ? (\n <img\n alt=\"step 3\"\n className=\"img-fluid d-block mx-auto\"\n src={img}\n loading=\"lazy\"\n />\n ) : (\n children\n )}\n </div>\n </div>\n </div>\n <div className=\"mt-4 text-sm text-white\">\n {isQrForAll ? (\n <>\n <img\n src=\"https://homepage.momocdn.net/img/momo-upload-api-231211171009-638379114093056419.png\"\n width={255}\n height={32}\n className=\"mx-auto\"\n alt=\"QR all\"\n />\n\n <div className=\"mt-3\">Nhận tiền từ mọi Ví Điện Tử và Ngân Hàng</div>\n </>\n ) : (\n <>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"mr-1 inline h-6 w-6\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 4v1m6 11h2m-6 0h-2v4m0-11v3m0 0h.01M12 12h4.01M16 20h4M4 12h4m12 0h.01M5 8h2a1 1 0 001-1V5a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1zm12 0h2a1 1 0 001-1V5a1 1 0 00-1-1h-2a1 1 0 00-1 1v2a1 1 0 001 1zM5 20h2a1 1 0 001-1v-2a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1z\"\n />\n </svg>\n Sử dụng App MoMo hoặc\n <br />\n ứng dụng Camera hỗ trợ QR code để quét mã.\n </>\n )}\n </div>\n <style>\n {`\n .qrcode__scan__container {\n padding: 15px;\n background-color: white;\n width: 280px;\n height: 280px;\n border-radius: 20px;\n border-radius: 15px;\n margin: 0 auto;\n }\n \n .qrcode__image {\n width: 100%;\n }\n \n .qrcode__image img {\n width: 100%;\n }\n \n .qrcode__scan {\n width: 245px;\n height: 245px;\n margin: 0 auto;\n overflow: hidden;\n background-color: white;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n \n .qrcode__border {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: 5;\n opacity: 0.9;\n pointer-events: none;\n }\n \n .qrcode__gradient {\n position: absolute;\n opacity: 0.6;\n width: 98%;\n height: 98%;\n top: 1%;\n left: 1%;\n z-index: 6;\n // pointer-events: none;\n transform: translate3d(0, -110%, 0);\n animation: QRCodeScan 3s infinite cubic-bezier(0.45, 0.03, 0.81, 0.63);\n \n backface-visibility: hidden;\n }\n \n @keyframes QRCodeScan {\n 0% {\n transform: translate3d(0, -110%, 0);\n }\n \n 90% {\n transform: translate3d(0, 30%, 0);\n }\n 100% {\n transform: translate3d(0, 30%, 0);\n }\n }\n `}\n </style>\n </>\n );\n};\n\nexport const DialogQr = ({\n className,\n children,\n title,\n shortTitle,\n qrImage,\n qrLink,\n logoQr,\n isQrForAll = false,\n ...props\n}: DialogQrProps) => {\n return (\n <Dialog {...props}>\n <DialogContent\n className={cn(\n \"md:max-w-2xl lg:max-w-3xl h-auto md:max-h-screen max-h-screen overflow-hidden [&>button>svg]:text-white border-0\",\n className,\n )}\n size=\"xl\"\n positionRightCloseBtn\n >\n <DialogBody className=\"p-0\">\n <div className=\"flex flex-row flex-wrap\">\n <div className=\"w-full flex-none md:w-5/12 hidden sm:block\">\n {children || (\n <div className=\"px-5 text-sm py-8 grid grid-cols-1 gap-y-6\">\n <div className=\"flex flex-nowrap items-center\">\n <div className=\"flex-none\">\n <img\n className=\"w-20\"\n loading=\"lazy\"\n src=\"https://homepage.momocdn.net/images/s/momo-upload-api-200917091602-637359309621891617.png\"\n alt=\"Step 1\"\n />\n </div>\n <div className=\"flex-1 pl-4\">\n <div className=\"step font-semibold text-gray-800 \">\n Bước 1 :\n </div>\n <div className=\"mt-1 text-gray-500 \">\n {isQrForAll\n ? \"Mở app MoMo hoặc ứng dụng ngân hàng/ví điện tử chấp nhận mã vạch từ QR Đa Năng\"\n : \"Mở ứng dụng camera mặc định hoặc ứng dụng hỗ trợ QR code của bạn\"}\n </div>\n </div>\n </div>\n <div className=\"flex flex-nowrap items-center\">\n <div className=\"flex-none\">\n <img\n className=\"w-20 \"\n loading=\"lazy\"\n src=\"https://homepage.momocdn.net/images/s/momo-upload-api-200917091443-637359308837905996.png\"\n alt=\"Step 2\"\n />\n </div>\n <div className=\"flex-1 pl-4\">\n <div className=\"step font-semibold text-gray-800 \">\n Bước 2 :\n </div>\n <div className=\"mt-1 text-gray-500 \">\n Quét mã QR Code theo hình bên phải\n </div>\n </div>\n </div>\n <div className=\"flex flex-nowrap items-center\">\n <div className=\"flex-none\">\n <img\n className=\"w-20 \"\n loading=\"lazy\"\n src=\"https://homepage.momocdn.net/images/s/momo-upload-api-200917090146-637359301062519803.png\"\n alt=\"Step 3\"\n />\n </div>\n <div className=\"flex-1 pl-4\">\n <div className=\"step font-semibold text-gray-800 \">\n Bước 3 :\n </div>\n <div className=\"mt-1 text-gray-500 \">\n Bấm vào thông báo hiển thị để tải ứng dụng hoặc{\" \"}\n {shortTitle || \"Truy cập ngay\"}\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n <div\n className=\"flex w-full items-center justify-center md:w-7/12 h-auto\"\n style={{\n background:\n \"url(https://homepage.momocdn.net/jk/momo2020/img/intro/qrcode-pattern.png) 10px 10px no-repeat,linear-gradient(to top,#c1177c,#e11b90)\",\n }}\n >\n <div className=\"px-5 py-10 text-center\">\n {title && (\n <h4 className=\"mb-5 text-base font-semibold text-white\">\n {title}\n </h4>\n )}\n <div className=\"relative\">\n {isQrForAll && (\n <div className=\"absolute -top-2 left-1/2 z-[5] -translate-x-1/2\">\n <img\n src=\"https://homepage.momocdn.net/fileuploads/svg/momo-file-231211170324.svg\"\n alt=\"Title QR all\"\n />\n </div>\n )}\n <QRCodeScan img={qrImage} isQrForAll={isQrForAll}>\n {qrLink && (\n <QRCodeSVG\n value={qrLink}\n size={215}\n imageSettings={{\n src: `${\n logoQr ||\n \"https://homepage.momocdn.net/pwa/images/logoMomox50.png\"\n }`,\n // x: null,\n // y: null,\n height: 50,\n width: 50,\n excavate: true,\n }}\n level=\"H\"\n />\n )}\n </QRCodeScan>\n </div>\n </div>\n </div>\n </div>\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n};\n","import * as React from \"react\"\nimport { ChevronRightIcon, DotsHorizontalIcon } from \"@radix-ui/react-icons\"\nimport { Slot } from \"@radix-ui/react-slot\"\n \nimport { cn } from \"../../helpers/utils\";\n \nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\"> & {\n separator?: React.ReactNode\n }\n>(({ className,...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" className={cn(\"\", className)} {...props} />)\nBreadcrumb.displayName = \"Breadcrumb\"\n \nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.ComponentPropsWithoutRef<\"ol\">\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex items-center gap-2 break-words text-sm overflow-x-auto snap-mandatory snap-x [&::-webkit-scrollbar]:hidden\",\n className\n )}\n {...props}\n />\n))\nBreadcrumbList.displayName = \"BreadcrumbList\"\n \nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"shrink-0 text-gray-900 hover:text-pink-500\", className)}\n {...props}\n />\n))\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\n \nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<\"a\"> & {\n asChild?: boolean\n }\n>(({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n \n return (\n <Comp\n ref={ref}\n className={cn(\"transition-colors hover:text-foreground\", className)}\n {...props}\n />\n )\n})\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\n \nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-sm text-gray-500\", className)}\n {...props}\n />\n))\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\n \nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"text-gray-900\", className)}\n {...props}\n >\n {children ?? <ChevronRightIcon className=\"w-2 h-2\" />}\n </li>\n)\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\n \nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex h-5 w-5 items-center justify-center\", className)}\n {...props}\n >\n <DotsHorizontalIcon className=\"w-4 h-4 text-gray-900\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = \"BreadcrumbElipssis\"\n \nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}","import * as React from \"react\";\nimport { buttonVariants } from \"../Button\";\nimport { cn } from \"../../helpers/utils\";\nimport { enUS, vi } from \"date-fns/locale\";\nimport { DayPicker, Formatters } from \"react-day-picker\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport lunisolar from \"lunisolar\";\nimport { Checkbox } from \"../Checkbox\";\n\n\ntype DayContentProps = {\n date: Date;\n cusContent?: (date: Date) => void;\n};\n\nconst CusDayContent: React.FC<DayContentProps> = ({\n date,\n cusContent,\n}) => {\n let lunarDate: { day: number; month: number } | null = null;\n lunarDate = lunisolar(date).lunar;\n return (\n <>\n {cusContent ? cusContent(date) : date.getDate()}\n { lunarDate && (\n <span className=\"text-[8px] absolute top-1 right-0.5 leading-none text-gray-700 group-aria-selected:text-white group-aria-selected/mid:!text-gray-700 luna-date hidden group-[.show-luna]:block \">\n {lunarDate.day}\n </span>\n )}\n </>\n );\n};\n\nconst customFormatters: Partial<Formatters> = {\n formatCaption: (month) =>\n `Tháng ${month.getMonth() + 1}/${month.getFullYear()}`,\n\n formatWeekdayName: (weekday) => {\n const dayIndex = weekday.getDay();\n const weekdays = [\"CN\", \"T2\", \"T3\", \"T4\", \"T5\", \"T6\", \"T7\"];\n return weekdays[dayIndex];\n },\n};\n\nfunction CheckboxLunaDate({\n isShow,\n setIsShow,\n lang\n}: {\n isShow: boolean;\n setIsShow: React.Dispatch<React.SetStateAction<boolean>>;\n lang: 'vi' | 'en'; \n}) {\n const uniqueId = React.useId();\n return (\n <div className=\"w-full p-3 pt-0\">\n <div className=\"flex items-center space-x-2 border-t border-gray-100 pt-3 cursor-pointer\">\n <Checkbox\n checked={isShow}\n id={`check-show-luna-${uniqueId}`}\n onCheckedChange={(checked) => {\n if (typeof checked === \"boolean\") {\n setIsShow(checked);\n }\n }}\n />\n <label\n htmlFor={`check-show-luna-${uniqueId}`}\n className=\"text-sm text-gray-900 peer-disabled:text-gray-400 leading-none peer-disabled:cursor-default cursor-pointer\"\n >\n {lang === \"vi\" ? \"Hiện ngày âm lịch\" : \"Show lunar date\" }\n </label>\n </div>\n </div>\n );\n}\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker> & {\n /**\n * Enable show luna date in calendar cell\n */\n enableLunaDate?: boolean;\n /**\n * A function custom content for day cell.\n */\n cusContentDay?: (date: Date) => void;\n /**\n * Language for calendar support vi or en. Default is vi.\n */\n lang?: 'vi' | 'en';\n};\n\nconst isWeekend = (date: Date) => date.getDay() === 0 || date.getDay() === 6;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = false,\n enableLunaDate = false,\n lang = \"vi\",\n cusContentDay,\n ...props\n}: CalendarProps) {\n const [showLunaDate, setShowLunaDate] = React.useState(true);\n\n return (\n <DayPicker\n locale={lang === \"vi\" ? vi : enUS} \n showOutsideDays={showOutsideDays}\n className={cn(\n \"border border-gray-200 rounded-b-md b bg-white shadow-md w-fit\",\n className\n )}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-y-0\",\n month: \"p-3 pt-0 w-full\", \n caption: \"flex justify-center p-3 bg-blue-50 relative items-center -mx-3 mb-3\",\n caption_label: \"text-sm font-medium text-gray-900\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(\n buttonVariants({ variant: \"transparent\" }),\n \"h-7 w-7 p-0 text-gray-900 hover:bg-transparent hover:opacity-70\"\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse\",\n head_row: \"flex space-x-0.5\",\n head_cell: cn(\"font-medium rounded-md w-11 text-xs text-gray-500 [&:nth-child(7)]:text-red-600\", lang === \"vi\" ? \"[&:nth-child(6)]:text-red-600\" : \"[&:nth-child(1)]:text-red-600\"), \n row: \"flex w-full mt-0.5 space-x-0.5\",\n cell: \"h-11 w-11 text-center text-sm p-0 relative\",\n day: cn(\n buttonVariants({ variant: \"transparent\" }),\n \"h-11 w-11 text-center text-sm p-0 aria-selected:opacity-100 aria-selected:bg-pink-500 aria-selected:text-white [&.day-range-end.day-range-start]:rounded-md focus-within:relative focus-within:z-20 font-semibold relative group\",enableLunaDate && showLunaDate && \"show-luna\"\n ),\n day_range_end: \"day-range-end [&.day-range-end]:rounded-l-none\",\n day_range_start: \"day-range-start [&.day-range-start]:rounded-r-none\",\n day_today: \"day-today [&:not([aria-selected])]:text-pink-500 [&:not([aria-selected])]:border-gray-200\",\n day_outside:\n \"day-outside opacity-50 aria-selected:bg-accent/50 aria-selected:opacity-30\",\n day_disabled: \"opacity-50\",\n day_range_middle: \"!text-gray-900 !bg-pink-50 !rounded-none group/mid\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n modifiers={{\n weekend: isWeekend,\n }}\n modifiersClassNames={{\n weekend: \"text-red-600\",\n }}\n components={{\n IconLeft: () => <ChevronLeft className=\"h-6 w-6\" />,\n IconRight: () => <ChevronRight className=\"h-6 w-6\" />,\n DayContent: (dayProps) => {\n return (\n <CusDayContent\n date={dayProps.date}\n cusContent={cusContentDay}\n />\n );\n },\n Months: ({ children }) => (\n <div className=\"w-full\">\n <div\n className={cn(\n \"flex flex-col sm:flex-row months-wrapper\"\n )}\n >\n {children}\n </div>\n {enableLunaDate && (\n <CheckboxLunaDate\n isShow={showLunaDate}\n setIsShow={setShowLunaDate}\n lang={lang}\n />\n )}\n </div>\n ),\n }}\n formatters={lang === \"vi\" ? customFormatters : {} }\n {...props}\n />\n );\n}\n\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"@heroicons/react/16/solid\";\n\nimport { cn } from \"../../helpers/utils\";\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded border-2 disabled:bg-gray-300 border-gray-300 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-default disabled:bg-gray-100 data-[state=checked]:border-none disabled:data-[state=checked]:bg-gray-400 disabled:data-[state=checked]:text-gray-100 data-[state=checked]:bg-pink-500 data-[state=checked]:text-white\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../../helpers/utils\";\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border border-gray-200 bg-white p-4 sm:p-5 text-gray-900 shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent }\n","import { PopoverProps } from \"@radix-ui/react-popover\";\nimport { Popover, PopoverTrigger, PopoverContent } from \"../Popover\";\nimport { Calendar, CalendarProps } from \"../Calendar\";\nimport { format } from \"date-fns\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { Calendar as CalendarIcon } from \"lucide-react\";\nimport { cn } from \"../../helpers/utils\";\nimport { QuestionMarkCircleIcon, XCircleIcon } from \"@heroicons/react/16/solid\";\n\nexport type DatePickerProps = {\n /**\n * Label for the DatePicker component\n */\n label?: string;\n /**\n * Placeholder for the DatePicker component\n */\n placeholder?: string;\n /**\n * Size of the DatePicker component\n */\n size?: 1 | 2;\n /**\n * Error state of the DatePicker component\n */\n isError?: boolean;\n /**\n * disabled state of the DatePicker component\n */\n disabled?: boolean;\n /**\n * Message to display below the DatePicker\n */\n message?: string;\n /**\n * Format that is used to display date in the input, It is based on (Unicode Technical Standart #35)[https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table]\n */\n dateFormat?: string;\n /**\n * Props to pass to the Button component\n */\n buttonProps?: Partial<ButtonProps>;\n /**\n * Props to pass to the Popover component\n */\n popoverProps?: Partial<PopoverProps>;\n /**\n * Props to pass to the Calendar component\n */\n calendarProps?: Partial<CalendarProps>;\n};\n\n\nconst DatePicker = ({label, placeholder = \"Select a value\", size = 1, message, isError, disabled, dateFormat = \"dd/MM/yyyy\", buttonProps, popoverProps, calendarProps}: DatePickerProps) => {\n\n const dateSelected = calendarProps?.selected || null;\n return (\n <div>\n <Popover {...popoverProps}>\n <PopoverTrigger asChild>\n <Button\n variant={\"secondary\"}\n className={cn(\n \"w-full justify-between text-left text-sm font-normal h-11 text-gray-900 overflow-visible hover:ring-1 focus:ring-1 hover:ring-gray-400 focus:ring-gray-400 [&[data-state=open]]:border-pink-500 [&[data-state=open]]:ring-pink-500 [&[data-state=open]]:ring-1 relative disabled:bg-gray-50 disabled:border-gray-200 disabled:pointer-events-none disabled:text-gray-500\",\n size === 2 && \"h-12 text-base\",\n (!dateSelected ||\n (!(dateSelected instanceof Date) &&\n typeof dateSelected === \"object\" &&\n (!(\"from\" in dateSelected) || !dateSelected.from))) &&\n \"text-gray-500\",\n isError && \"border-red-500 ring-red-500 ring-1\"\n )}\n disabled={disabled} \n {...buttonProps}\n >\n <span className=\"line-clamp-1 flex-1\">\n {dateSelected instanceof Date ? (\n format(dateSelected, dateFormat)\n ) : dateSelected &&\n typeof dateSelected === \"object\" &&\n \"from\" in dateSelected &&\n \"to\" in dateSelected ? (\n <>\n {dateSelected.from ? (\n dateSelected.to ? (\n <>\n {format(dateSelected.from, dateFormat)} -{\" \"}\n {format(dateSelected.to, dateFormat)}\n </>\n ) : (\n format(dateSelected.from, dateFormat)\n )\n ) : (\n placeholder\n )}\n </>\n ) : (\n placeholder\n )}\n </span>\n\n {label && (\n <span\n className={cn(\n \"absolute bg-white -top-2 px-1.5 left-2 text-xs text-gray-500\",\n size === 2 && \" -top-2.5 text-sm\",\n isError && \"text-red-500\"\n )}\n >\n {label}\n </span>\n )}\n <CalendarIcon className=\"ml-2 h-4 w-4 text-gray-500 flex-none\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto !p-0 border-none\">\n <Calendar {...calendarProps} />\n </PopoverContent>\n </Popover>\n {message && (\n <div className=\"mobase-text-input-message flex space-x-1 items-center mt-0.5\">\n {isError ? (\n <XCircleIcon width={16} height={16} className=\"text-red-500\" />\n ) : (\n <QuestionMarkCircleIcon\n width={16}\n height={16}\n className=\"text-gray-500\"\n />\n )}\n <span\n className={cn(\n isError ? \"text-red-500\" : \"text-gray-500\",\n size === 2 ? \"text-sm\" : \"text-xs\"\n )}\n >\n {message}\n </span>\n </div>\n )}\n </div>\n );\n};\n\nexport { DatePicker };\n","import * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\n\nimport { cn } from \"../../helpers/utils\";\nimport { buttonVariants } from \"../Button\";\n\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\n\nimport type * as Radix from \"@radix-ui/react-primitive\";\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialog\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogProps = Radix.ComponentPropsWithoutRef<typeof DialogPrimitive.Root>;\ninterface AlertDialogProps extends Omit<DialogProps, \"modal\"> {}\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogTrigger\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogTriggerProps = Radix.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Trigger\n>;\ninterface AlertDialogTriggerProps extends DialogTriggerProps {}\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogPortal\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogPortalProps = Radix.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Portal\n>;\ninterface AlertDialogPortalProps extends DialogPortalProps {}\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogOverlay\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogOverlayProps = Radix.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Overlay\n>;\ninterface AlertDialogOverlayProps extends DialogOverlayProps {}\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogAction\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogCloseProps = Radix.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Close\n>;\ninterface AlertDialogActionProps extends DialogCloseProps {}\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogCancel\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AlertDialogCancelProps extends DialogCloseProps {}\n\n/* ---------------------------------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogTitle\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogTitleProps = Radix.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Title\n>;\ninterface AlertDialogTitleProps extends DialogTitleProps {}\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogDescription\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogDescriptionProps = Radix.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Description\n>;\ninterface AlertDialogDescriptionProps extends DialogDescriptionProps {}\n\n/* -------------------------------------------------------------------------------------------------\n * AlertDialogContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype DialogContentProps = Radix.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Content\n>;\ninterface AlertDialogContentProps\n extends Omit<\n DialogContentProps,\n \"onPointerDownOutside\" | \"onInteractOutside\"\n > {}\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/70 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n ref={ref}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] w-[90vw] bg-white text-gray-700 border border-gray-300 top-[50%] z-50 grid w- max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] rounded-xl\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-col space-y-2 text-left\", className)}\n {...props}\n />\n);\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-row justify-end space-x-4\", className)}\n {...props}\n />\n);\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg text-gray-900 font-semibold\", className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants({ variant: \"primary\" }), \"\", className)}\n {...props}\n />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(buttonVariants({ variant: \"secondary\" }), className)}\n {...props}\n />\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n\nexport type {\n AlertDialogProps,\n AlertDialogTriggerProps,\n AlertDialogPortalProps,\n AlertDialogOverlayProps,\n AlertDialogContentProps,\n AlertDialogActionProps,\n AlertDialogCancelProps,\n AlertDialogTitleProps,\n AlertDialogDescriptionProps,\n};\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../helpers/utils\";\n\n// /dwd\nconst iconButtonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-semibold transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed border border-transparent\",\n {\n variants: {\n /**\n * Determines style variation of Button component.\n */\n variant: {\n primary:\n \"bg-pink-500 text-white hover:bg-pink-600 disabled:bg-pink-300\",\n secondary:\n \"bg-white text-gray-900 hover:bg-gray-100 disabled:text-gray-400 disabled:bg-white border-gray-300\",\n outline:\n \"border-pink-500 text-pink-500 bg-white hover:bg-pink-50 disabled:bg-white disabled:border-pink-300 disabled:text-pink-300\",\n tonal:\n \"bg-pink-100 text-pink-500 hover:bg-pink-200 disabled:bg-gray-200 disabled:text-gray-400\",\n danger: \"bg-red-500 text-white hover:bg-red-600 disabled:bg-red-300\",\n transparent: \"text-gray-900 bg-transparent hover:bg-gray-100 disabled:text-gray-400 disabled:bg-transparent\",\n },\n /**\n * Determines size variation of Button component.\n */\n size: {\n default: \"text-sm h-10 w-10\",\n sm: \"h-8 w-8 text-sm\",\n lg: \"h-12 w-12 text-base\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"default\",\n },\n }\n);\n\nexport interface IconButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof iconButtonVariants> {\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n */\n asChild?: boolean;\n /**\n * Disabled interaction and applies disabled styles\n */\n isDisabled?: boolean;\n}\n\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n size = \"default\",\n asChild = false,\n isDisabled = false,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const buttonClassName = cn(\n iconButtonVariants({ variant, size, className })\n );\n return (\n <Comp\n className={buttonClassName}\n disabled={isDisabled}\n ref={ref}\n {...props}\n >\n {props.children}\n </Comp>\n );\n }\n);\nIconButton.displayName = \"IconButton\";\n\nexport { IconButton, iconButtonVariants };\n","import React, { createContext, useContext } from \"react\";\nimport { cn } from \"../../helpers/utils\";\n\ninterface HeadingGroupProps {\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * Heading group alignment.\n */\n align?: \"left\" | \"center\" | \"right\";\n /**\n * The children of the HeadingGroup, which could include TagLine, Heading, Heading sub,..\n */\n children?: React.ReactNode;\n}\n\ntype HeadingGroupContextProps = {\n align?: HeadingGroupProps[\"align\"];\n}\n\nconst HeadingGroupContext = createContext<HeadingGroupContextProps>({\n align: \"center\",\n});\n\ninterface HeadingTaglineProps {\n /**\n * Tagline color.\n */\n color?: \"regular\" | \"pink\" | \"white\";\n /**\n * Tagline size.\n */\n size?: \"small\" | \"large\";\n /**\n * Tagline use truncate.\n */\n isTruncated?: boolean;\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * The children of the Tagline.\n */\n children?: React.ReactNode;\n}\n\ninterface HeadingProps {\n /**\n * Shorthand for changing the default rendered element into a semantically appropriate alternative.\n */\n as?: \"h1\" | \"h2\";\n /**\n * Heading color.\n */\n color?: \"regular\" | \"pink\" | \"white\";\n /**\n * Heading size.\n */\n size?: \"small\" | \"large\";\n /**\n * Heading use truncate.\n */\n isTruncated?: boolean;\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * The children of the Heading.\n */\n children?: React.ReactNode;\n}\n\ninterface HeadingSubProps {\n /**\n * Sub heading color.\n */\n color?: \"regular\" | \"white\";\n /**\n * Sub heading size.\n */\n size?: \"small\" | \"large\";\n /**\n * Sub heading margin top: none: 0px, spacingX: 8px, spacingM: 12px, spacingL: 16px, spacingXl: 20px, spacing2Xl: 24px\n */\n marginTop?:\n | \"none\"\n | \"spacingX\"\n | \"spacingM\"\n | \"spacingL\"\n | \"spacingXl\"\n | \"spacing2Xl\";\n /**\n * Sub heading use truncate.\n */\n isTruncated?: boolean;\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * The children of the Heading sub.\n */\n children?: React.ReactNode;\n}\n\nconst HeadingTagline = ({\n color = \"pink\",\n size = \"small\",\n isTruncated = false,\n className,\n children,\n}: HeadingTaglineProps) => {\n const colorClasses = {\n regular: \"text-gray-900\",\n pink: \"text-pink-500\",\n white: \"text-white\",\n };\n const sizeClasses = {\n small: \"text-sm\",\n large: \"text-lg\",\n };\n return (\n <div\n className={cn(\n \"mb-1 font-semibold\",\n colorClasses[color],\n sizeClasses[size],\n isTruncated && \"truncate\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nconst Heading = ({\n as = \"h2\",\n size = \"small\",\n color = \"pink\",\n isTruncated = false,\n className,\n children,\n}: HeadingProps) => {\n const HeadingTag = as;\n const colorClasses = {\n regular: \"text-gray-900\",\n pink: \"text-pink-500\",\n white: \"text-white\",\n };\n const sizeClasses = {\n small: \"lg:text-3xl text-2xl\",\n large: \"lg:text-4xl text-2xl\",\n };\n const { align } = useContext(HeadingGroupContext);\n return (\n <HeadingTag\n className={cn(\n \"font-bold max-w-4xl\",\n align === \"center\" ? \"mx-auto\" : \"\", \n colorClasses[color],\n sizeClasses[size],\n isTruncated && \"truncate\",\n className\n )}\n >\n {children}\n </HeadingTag>\n );\n};\n\nconst HeadingSub = ({\n color = \"regular\",\n size = \"small\",\n marginTop = \"spacingX\",\n isTruncated = false,\n className,\n children,\n}: HeadingSubProps) => {\n const colorClasses = {\n regular: \"text-gray-500\",\n white: \"text-white/80\",\n };\n const sizeClasses = {\n small: \"md:text-base text-sm\",\n large: \"md:text-lg text-base\",\n };\n const marginTopClasses = {\n none: \"\",\n spacingX: \"mt-2\",\n spacingM: \"mt-3\",\n spacingL: \"mt-4\",\n spacingXl: \"mt-5\",\n spacing2Xl: \"mt-6\",\n };\n const { align } = useContext(HeadingGroupContext);\n return (\n <div\n className={cn(\n \"mt-2\",\n align === \"center\" ? \"mx-auto max-w-3xl\" : \"max-w-4xl\", \n colorClasses[color],\n sizeClasses[size],\n marginTopClasses[marginTop],\n isTruncated && \"truncate\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nconst HeadingGroup = ({\n className,\n align = \"center\",\n children,\n}: HeadingGroupProps) => {\n const alignClassnames = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n };\n return (\n <div className={cn(\"mb-5 md:mb-8\", alignClassnames[align], className)}>\n <HeadingGroupContext.Provider value={{ align }}>\n {children}\n </HeadingGroupContext.Provider>\n </div>\n );\n};\n\nexport { HeadingGroup, HeadingTagline, Heading, HeadingSub };\n","import { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { iconButtonVariants } from \"../IconButton/IconButton\";\nimport { cn } from \"../../helpers/utils\";\n\ninterface PaginationProps {\n /**\n * Current page.\n */\n current: number;\n /**\n * Items total count.\n */\n total: number;\n /**\n * Page change callback\n */\n onChange: (page: number) => void;\n}\n\nexport default function Pagination({\n current,\n total,\n onChange,\n}: PaginationProps) {\n const getButton = (index: number) => (\n <li key={index}>\n <button\n className={cn(\n iconButtonVariants({\n variant: current === index ? \"outline\" : \"secondary\",\n size: \"sm\",\n }),\n )}\n onClick={() => onChange(index)}\n >\n {index}\n </button>\n </li>\n );\n\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\")}\n >\n <ul className={cn(\"flex flex-row flex-wrap items-center gap-2\")}>\n {total > 1 && (\n <li>\n <button\n className={cn(\n iconButtonVariants({\n variant: \"secondary\",\n size: \"sm\",\n }),\n )}\n disabled={current === 1}\n onClick={() => current > 1 && onChange(current - 1)}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n </li>\n )}\n\n {total <= 6 ? (\n Array(total)\n .fill(0)\n .map((_, index) => getButton(index + 1))\n ) : (\n <>\n {getButton(1)}\n {current === 1 && [getButton(2), getButton(3)]}\n {current > 3 && (\n <li>\n <button\n className={cn(\n iconButtonVariants({\n variant: \"secondary\",\n size: \"sm\",\n }),\n )}\n disabled={current === 1}\n onClick={() => onChange(current - 3)}\n >\n ...\n </button>\n </li>\n )}\n {current > 2 &&\n current !== 1 &&\n current !== total &&\n getButton(current - 1)}\n {current > 1 && current < total && getButton(current)}\n {current < total - 1 && current !== 1 && getButton(current + 1)}\n {current === total && [getButton(total - 2), getButton(total - 1)]}\n {current < total - 2 && current !== total && (\n <button\n className={cn(\n iconButtonVariants({\n variant: \"secondary\",\n size: \"sm\",\n }),\n )}\n disabled={current === 1}\n onClick={() => onChange(current + 3)}\n >\n ...\n </button>\n )}\n {getButton(total)}\n </>\n )}\n\n {total > 1 && (\n <li>\n <button\n className={cn(\n iconButtonVariants({\n variant: \"secondary\",\n size: \"sm\",\n }),\n )}\n disabled={current === total}\n onClick={() => current < total && onChange(current + 1)}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </button>\n </li>\n )}\n </ul>\n </nav>\n );\n}\n","import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"../../helpers/utils\";\n\nconst Tabs = TabsPrimitive.Root;\n\ntype TabsListProps = React.ComponentPropsWithoutRef<\n typeof TabsPrimitive.List\n> & {\n /**\n * Control the size of the tabs list..\n */\n size?: \"base\" | \"sm\";\n /**\n * The direction of navigation between toolbar items.\n */\n\n isDivider?: boolean;\n};\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(({ className, size = \"sm\", isDivider = false, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex w-full flex-row items-center bg-muted text-muted-foreground space-x-5 overflow-x-auto [&::-webkit-scrollbar]:hidden\",\n `text-${size}`,\n isDivider && \"border-b border-gray-200\",\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap py-3 font-semibold ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border-b-2 border-transparent data-[state=active]:text-pink-500 data-[state=active]:border-pink-500 text-gray-900 hover:text-pink-500\",\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-3 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 text-gray-900\",\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import { forwardRef, TextareaHTMLAttributes } from \"react\";\nimport { QuestionMarkCircleIcon } from \"@heroicons/react/24/outline\";\nimport { XCircleIcon } from \"@heroicons/react/24/solid\";\nimport { cn } from \"../../helpers/utils\";\n\nexport interface TextAreaProps\n extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n label?: string;\n message?: string;\n isError?: boolean;\n inputClassName?: string;\n size?: 1 | 2;\n}\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n disabled,\n isError,\n message,\n label,\n className,\n inputClassName,\n size,\n rows = 3,\n ...restProps\n },\n ref,\n ) => {\n return (\n <div\n className={cn(\n \"relative\",\n className,\n isError && \"mobase-text-area-error\",\n )}\n >\n {label && (\n <span\n className={cn(\n \"mobase-text-area-label absolute bg-white -top-2.5 px-1.5 left-2 text-sm text-gray-500\",\n size === 2 && \" -top-2.5 text-sm\",\n )}\n >\n {label}\n </span>\n )}\n <textarea\n disabled={disabled}\n ref={ref}\n className={cn(\n \"mobase-text-area-box bg-white w-full text-sm transition-all rounded-md border border-gray-300 placeholder:text-gray-500 p-3 text-gray-900 focus:border-pink-500 disabled:bg-gray-50 disabled:border-gray-200 outline-none block\",\n size === 2 && \"text-base\",\n inputClassName,\n )}\n rows={rows}\n {...restProps}\n />\n {message && (\n <div className=\"mobase-text-area-message flex space-x-1 items-center mt-0.5\">\n {isError ? (\n <XCircleIcon width={16} height={16} className=\"text-red-500\" />\n ) : (\n <QuestionMarkCircleIcon\n width={16}\n height={16}\n className=\"text-gray-500\"\n />\n )}\n <span\n className={cn(\n \"text-gray-500 \",\n size === 2 ? \"text-sm\" : \"text-xs\",\n )}\n >\n {message}\n </span>\n </div>\n )}\n\n <style>\n {`\n .mobase-text-area-box:hover {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-gray-400) / 1) inset;\n }\n\n .mobase-text-area-box:focus, .mobase-text-area-box:focus-visible {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-pink-500) / 1) inset;\n }\n\n .mobase-text-area-box:disabled {\n box-shadow: none;\n }\n\n .mobase-text-area-error {\n .mobase-text-area-label {\n color: rgb(var(--mobase-red-500) / 1);\n }\n\n .mobase-text-area-box {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-red-500) / 1) inset;\n border-color: rgb(var(--mobase-red-500) / 1);\n }\n\n .mobase-text-area-message span {\n color: rgb(var(--mobase-red-500) / 1);\n }\n }\n `}\n </style>\n </div>\n );\n },\n);\n","// Inspired by react-hot-toast library\nimport * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"./Toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n default:\n return state;\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open: boolean) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n","import * as React from \"react\";\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../helpers/utils\";\nimport {\n XMarkIcon,\n CheckCircleIcon,\n ExclamationTriangleIcon,\n InformationCircleIcon,\n} from \"@heroicons/react/20/solid\";\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed bottom-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 left-0 sm:right-0 sm:left-auto sm:top-0 sm:bottom-auto sm:flex-col md:max-w-[420px]\",\n className,\n )}\n {...props}\n />\n));\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative w-full overflow-hidden rounded-md border py-4 pr-10 pl-10 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-bottom-full data-[state=open]:sm:slide-in-from-top-full bg-white text-gray-900 border border-gray-200 border-l-4\",\n {\n variants: {\n variant: {\n sucess: \"border-l-green-500\",\n warning: \"border-l-yellow-500\",\n error: \"border-l-red-500\",\n },\n },\n defaultVariants: {\n variant: \"sucess\",\n },\n },\n);\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>\n>(({ className, variant = \"sucess\", children, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n >\n <div className=\"w-5 h-5 flex items-center justify-center absolute top-4 left-3\">\n {variant === \"sucess\" && (\n <CheckCircleIcon className=\"w-5 h-5 text-green-500\" />\n )}\n {variant === \"warning\" && (\n <ExclamationTriangleIcon className=\"w-5 h-5 text-yellow-500\" />\n )}\n {variant === \"error\" && (\n <InformationCircleIcon className=\"w-5 h-5 text-red-500\" />\n )}\n </div>\n {children}\n </ToastPrimitives.Root>\n );\n});\nToast.displayName = ToastPrimitives.Root.displayName;\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex shrink-0 items-center justify-center bg-transparent text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-0 focus:ring-ring focus:ring-offset-0 disabled:pointer-events-none disabled:opacity-50 text-blue-600 hover:underline mt-2\",\n className,\n )}\n {...props}\n />\n));\nToastAction.displayName = ToastPrimitives.Action.displayName;\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-2 top-2 rounded-md transition-opacity hover:opacity-70 focus:opacity-100 focus:outline-none focus:ring-2 text-gray-800 w-8 h-8 flex items-center justify-center\",\n className,\n )}\n toast-close=\"\"\n {...props}\n >\n <XMarkIcon className=\"h-5 w-5\" />\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"text-base font-semibold leading-tight\", className)}\n {...props}\n />\n));\nToastTitle.displayName = ToastPrimitives.Title.displayName;\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", className)}\n {...props}\n />\n));\nToastDescription.displayName = ToastPrimitives.Description.displayName;\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n};\n","\"use client\";\n\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from \"./Toast\";\nimport { useToast } from \"./useToast\";\n\nexport function Toaster() {\n const { toasts } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, ...props }) {\n return (\n <Toast key={id} {...props}>\n <div className=\"grid gap-2\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription>{description}</ToastDescription>\n )}\n </div>\n {action}\n <ToastClose />\n </Toast>\n );\n })}\n <ToastViewport />\n </ToastProvider>\n );\n}\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../helpers/utils\";\n\n// /dwd\nconst textButtonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap font-semibold transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed border border-transparent flex-nowrap\",\n {\n variants: {\n /**\n * Determines style variation of Button component.\n */\n variant: {\n default:\n \"text-blue-700 hover:underline hover:bg-blue-50 disabled:bg-transparent disabled:text-gray-400 disabled:no-underline\",\n primary:\n \"text-pink-500 hover:underline hover:bg-pink-50 disabled:bg-transparent disabled:text-gray-400 disabled:no-underline\",\n secondary:\n \"text-gray-700 hover:underline hover:text-blue-700 hover:bg-blue-50 disabled:bg-transparent disabled:text-gray-400 disabled:no-underline\",\n },\n /**\n * Determines size variation of Button component.\n */\n size: {\n default: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface TextButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof textButtonVariants> {\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n */\n asChild?: boolean;\n /**\n * Disabled interaction and applies disabled styles\n */\n isDisabled?: boolean;\n}\n\nconst TextButton = React.forwardRef<HTMLButtonElement, TextButtonProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n isDisabled = false,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const buttonClassName = cn(\n textButtonVariants({ variant, size, className }),\n );\n return (\n <Comp\n className={buttonClassName}\n disabled={isDisabled}\n ref={ref}\n {...props}\n >\n {props.children}\n </Comp>\n );\n },\n);\nTextButton.displayName = \"TextButton\";\n\nexport { TextButton, textButtonVariants };\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"../../helpers/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow> & {\n className?: string;\n }\n>((props, ref) => (\n <TooltipPrimitive.Arrow\n ref={ref}\n className={cn(\"drop-shadow-md\", props.className)}\n {...props}\n />\n));\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> & {\n type?: \"dark\" | \"light\";\n }\n>(({ className, type = \"dark\", sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 p-1.5 shadow-md\",\n type === \"light\"\n ? \"bg-white text-gray-900 fill-white\"\n : \"bg-gray-800 fill-gray-800 text-white\",\n className,\n )}\n {...props}\n />\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n TooltipArrow,\n};\n","import {\n ChangeEvent,\n FocusEvent,\n forwardRef,\n InputHTMLAttributes,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport {\n QuestionMarkCircleIcon,\n XCircleIcon,\n XCircleIcon as XCircleIconSolid,\n} from \"@heroicons/react/16/solid\";\nimport { cn } from \"../../helpers/utils\";\n\nexport interface TextInputProps extends InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n message?: string;\n isError?: boolean;\n inputClassName?: string;\n withClearButton?: boolean;\n size?: 1 | 2;\n onClickClear?: (inputValue: string) => void;\n}\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n disabled,\n isError,\n message,\n label,\n className,\n inputClassName,\n withClearButton,\n size,\n onChange,\n onFocus,\n onClickClear,\n value,\n defaultValue,\n type = \"text\",\n ...restProps\n },\n ref,\n ) => {\n const [clearable, setClearable] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n\n const handleShowClearButton = (inputValue) => {\n if (inputValue && !clearable) {\n setClearable(true);\n }\n\n if (!inputValue && clearable) {\n setClearable(false);\n }\n };\n\n const onChangeFactory = (event: ChangeEvent<HTMLInputElement>) => {\n if (withClearButton) handleShowClearButton(event.target.value);\n onChange?.(event);\n };\n\n const onFocusFactory = (event: FocusEvent<HTMLInputElement, Element>) => {\n if (withClearButton) handleShowClearButton(event.target.value);\n onFocus?.(event);\n };\n\n const handleClear = () => {\n const inputTarget = rootRef.current?.querySelector(\"input\");\n if (!inputTarget) return;\n onClickClear?.(inputTarget.value);\n\n inputTarget.value = \"\";\n inputTarget.focus();\n setClearable(false);\n };\n\n useEffect(() => {\n handleShowClearButton(defaultValue || value);\n }, [value, defaultValue]);\n\n return (\n <div\n className={cn(className, isError && \"mobase-text-input-error\")}\n ref={rootRef}\n >\n <div className=\"relative\">\n {label && (\n <span\n className={cn(\n \"mobase-text-input-label absolute bg-white -top-2 px-1.5 left-2 text-xs text-gray-500\",\n size === 2 && \" -top-2.5 text-sm\",\n )}\n >\n {label}\n </span>\n )}\n <input\n disabled={disabled}\n type={type}\n ref={ref}\n className={cn(\n \"mobase-text-input-box bg-white w-full transition-all text-sm rounded-md border border-gray-300 placeholder:text-gray-500 p-3 text-gray-900 h-11 focus:border-pink-500 disabled:bg-gray-50 disabled:border-gray-200 disabled:pointer-events-none block outline-none\",\n size === 2 && \"h-12 text-base\",\n inputClassName,\n )}\n onChange={onChangeFactory}\n onFocus={onFocusFactory}\n value={value}\n defaultValue={defaultValue}\n {...restProps}\n />\n\n {withClearButton && clearable && (\n <button\n aria-label=\"button\"\n type=\"button\"\n className=\"absolute right-3 top-1/2 -translate-y-1/2 shrink-0 cursor-pointer text-gray-500 duration-200 hover:opacity-70 disabled:pointer-events-none\"\n disabled={disabled}\n onClick={handleClear}\n >\n <XCircleIcon strokeWidth={2} width={20} height={20} />\n </button>\n )}\n </div>\n\n {message && (\n <div className=\"mobase-text-input-message flex space-x-1 items-center mt-0.5\">\n {isError ? (\n <XCircleIconSolid\n width={16}\n height={16}\n className=\"text-red-500\"\n />\n ) : (\n <QuestionMarkCircleIcon\n width={16}\n height={16}\n className=\"text-gray-500\"\n />\n )}\n <span\n className={cn(\n \"text-gray-500 \",\n size === 2 ? \"text-sm\" : \"text-xs\",\n )}\n >\n {message}\n </span>\n </div>\n )}\n\n <style>\n {`\n .mobase-text-input-box:hover {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-gray-400) / 1) inset;\n }\n\n .mobase-text-input-box:focus , .mobase-text-input-box:focus-visible {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-pink-500) / 1) inset;\n }\n\n .mobase-text-input-error {\n .mobase-text-input-label {\n color: rgb(var(--mobase-red-500) / 1);\n }\n\n .mobase-text-input-box {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-red-500) / 1) inset;\n border-color: rgb(var(--mobase-red-500) / 1);\n }\n\n .mobase-text-input-message span {\n color: rgb(var(--mobase-red-500) / 1);\n }\n }\n `}\n </style>\n </div>\n );\n },\n);\n","import { MinusCircleIcon, PlusCircleIcon } from \"@heroicons/react/24/outline\";\nimport { IconButton } from \"../IconButton\";\nimport {\n useRef,\n ChangeEvent,\n forwardRef,\n InputHTMLAttributes,\n useState,\n useEffect,\n} from \"react\";\nimport { cn } from \"../../helpers/utils\";\n\nexport interface StepperProps extends InputHTMLAttributes<HTMLInputElement> {\n value?: number;\n min?: number;\n max?: number;\n step?: number;\n inputClassName?: string;\n stepperClassName?: string;\n disabledInput?: boolean;\n disabled?: boolean;\n onChangeInputStepper?: (inputValue: number | string) => void;\n onDecrement?: (inputValue: number | string) => void;\n onIncrement?: (inputValue: number | string) => void;\n}\nexport const Stepper = forwardRef<HTMLInputElement, StepperProps>(\n (\n {\n value = 0,\n min = 0,\n max = 999,\n disabled = false,\n disabledInput = false,\n step = 1,\n inputClassName = \"\",\n stepperClassName = \"\",\n className = \"\",\n onChange = () => {},\n onChangeInputStepper,\n onDecrement,\n onIncrement,\n ...restProps\n },\n ref,\n ) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const [isDisablePlus, setIsDisablePlus] = useState(false);\n const [isDisableMinus, setIsDisableMinus] = useState(false);\n const [inputValue, setInputValue] = useState(\"\");\n const spanRef = useRef<HTMLSpanElement>(null);\n\n const handleDisable = (inputValue: string | number) => {\n if (Number(inputValue) >= max) {\n setIsDisablePlus(true);\n } else {\n setIsDisablePlus(false);\n }\n if (Number(inputValue) > min) {\n setIsDisableMinus(false);\n } else {\n setIsDisableMinus(true);\n }\n };\n\n const onIncrementChange = () => {\n if (disabled || isDisablePlus) return;\n const inputTarget =\n rootRef?.current?.querySelector<HTMLInputElement>(\"input\");\n if (!inputTarget) return;\n let newValue: number = 0;\n newValue = Math.min(Number(inputTarget.value) + step, max);\n handleDisable(newValue);\n inputTarget.value = String(newValue);\n setInputValue(inputTarget.value || \"\");\n onChangeInputStepper?.(inputTarget.value);\n onIncrement?.(inputTarget.value);\n };\n\n const onDecrementChange = () => {\n if (disabled || isDisableMinus) return;\n const inputTarget =\n rootRef?.current?.querySelector<HTMLInputElement>(\"input\");\n if (!inputTarget) return;\n let newValue: number = 0;\n newValue = Math.max(Number(inputTarget.value) - step, 0);\n handleDisable(newValue);\n inputTarget.value = String(newValue);\n setInputValue(inputTarget.value || \"\");\n onChangeInputStepper?.(inputTarget.value);\n onDecrement?.(inputTarget.value);\n };\n\n const onStepperInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (!e) return;\n let inputValue = e?.target?.value;\n if (!inputValue?.match(/^[0-9]*$/)) {\n inputValue = inputValue.replace(/[^0-9]/g, \"\");\n }\n handleDisable(inputValue);\n const numericValue = parseInt(inputValue, 10);\n if (Number.isNaN(numericValue) || numericValue < min) {\n e.target.value = String(min);\n } else if (numericValue >= max) {\n e.target.value = String(max);\n } else {\n e.target.value = String(numericValue);\n }\n setInputValue(e?.target?.value || \"\");\n onChangeInputStepper?.(e.target.value);\n onChange?.(e);\n };\n\n useEffect(() => {\n const inputTarget =\n rootRef?.current?.querySelector<HTMLInputElement>(\"input\");\n if (!inputTarget) return;\n handleDisable(inputTarget?.value);\n }, []);\n\n useEffect(() => {\n const inputTarget =\n rootRef?.current?.querySelector<HTMLInputElement>(\"input\");\n if (inputTarget && spanRef?.current) {\n inputTarget.style.width = `${spanRef.current.offsetWidth + 10}px`;\n }\n }, [inputValue]);\n\n return (\n <div ref={rootRef} className=\"flex items-center space-x-1\">\n <IconButton\n id=\"btn-minus\"\n className={cn(\n !isDisableMinus && !disabled\n ? \"cursor-pointer text-pink-500\"\n : \"text-gray-400 cursor-default\",\n stepperClassName,\n )}\n variant=\"transparent\"\n onClick={onDecrementChange}\n >\n <MinusCircleIcon className=\"w-8 h-8 \" />\n </IconButton>\n <div>\n <input\n pattern=\"[0-9]*\"\n inputMode=\"numeric\"\n defaultValue={value}\n ref={ref}\n min={min}\n max={max}\n onChange={(e) => onStepperInputChange(e)}\n id=\"numberInput\"\n disabled={disabled || disabledInput}\n autoComplete=\"off\"\n {...restProps}\n className={cn(\n \"text-gray-800 min-w-7 border-gray-300 border transition-width duration-100 focus-visible:outline-none focus-visible:ring-0 focus:ring-0 shadow-none focus-visible:ring-offset-0 w-7 h-7 rounded-md text-center bg-white\",\n inputClassName,\n )}\n />\n <span\n ref={spanRef}\n style={{\n visibility: \"hidden\",\n position: \"absolute\",\n whiteSpace: \"pre\",\n }}\n >\n {inputValue || \" \"}\n </span>\n </div>\n <IconButton\n id=\"btn-plus\"\n className={cn(\n !isDisablePlus && !disabled\n ? \"cursor-pointer text-pink-500\"\n : \"text-gray-400 cursor-default\",\n stepperClassName,\n )}\n variant=\"transparent\"\n onClick={onIncrementChange}\n >\n <PlusCircleIcon className=\"w-8 h-8 \" />\n </IconButton>\n </div>\n );\n },\n);\n","import * as React from \"react\";\n\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n CheckIcon,\n XCircleIcon,\n} from \"@heroicons/react/16/solid\";\nimport { QuestionMarkCircleIcon } from \"@heroicons/react/24/outline\";\n\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { cn } from \"../../helpers/utils\";\n\nconst Select = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Root> & {\n className?: string;\n label?: string | null;\n message?: string | null;\n size?: 1 | 2;\n isError?: boolean;\n }\n>(\n ({\n className,\n children,\n label,\n message,\n size,\n isError,\n disabled,\n ...props\n },ref) => (\n <div\n ref={ref} \n className={cn(\n \"select-mobase relative\",\n className,\n disabled ? \"disabled\" : \"\",\n isError\n ? \"[&>.select-mobase-button]:border-red-500 [&>.select-mobase-button]:ring-red-500 [&>.select-mobase-button]:ring-1\"\n : \"\",\n size === 2\n ? \"[&>.select-mobase-button]:text-base [&>.select-mobase-button]:h-12\"\n : \"\",\n )}\n >\n {label && (\n <span\n className={cn(\n \"mobase-select-label absolute bg-white -top-2 px-1.5 left-2 text-xs text-gray-500 z-[1]\",\n size === 2 && \"text-sm -top-2.5\",\n isError && \"text-red-500\",\n )}\n >\n {label}\n </span>\n )}\n <SelectPrimitive.Root disabled={disabled} {...props}>\n {children}\n </SelectPrimitive.Root>\n {message && (\n <div\n className={cn(\n \"mobase-select-message flex space-x-1 items-center mt-1 text-gray-500\",\n isError && \"text-red-500\",\n )}\n >\n {isError ? (\n <XCircleIcon width={16} height={16} />\n ) : (\n <QuestionMarkCircleIcon width={16} height={16} />\n )}\n <span className={cn(size === 2 ? \"text-sm\" : \"text-xs\")}>\n {message}\n </span>\n </div>\n )}\n </div>\n ),\n);\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"select-mobase-button bg-white w-full ring-0 transition-all focus-visible:border-pink-500 focus-visible:ring-offset-0 focus-visible:ring-offset-transparent focus-visible:ring-1 focus-visible:!ring-pink-500 rounded-md border border-gray-300 data-[placeholder]:text-gray-500 p-3 disabled:bg-gray-50 disabled:border-gray-200 disabled:pointer-events-none flex items-center justify-between data-[state=open]:border-pink-500 data-[state=open]:ring-1 hover:ring-1 hover:ring-gray-400 data-[state=open]:ring-pink-500 text-gray-900 h-11 ring-inset text-sm\",\n className,\n )}\n {...props}\n >\n <div className=\"line-clamp-1 text-left\">{children}</div>\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"h-4 w-4 text-gray-500 flex-none\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"h-5 w-5\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1 bg-gradient-to-t from-white to-transparent\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"h-5 w-5\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-gray-300 bg-white text-gray-900 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-0\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectGroup = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Group>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Group\n ref={ref}\n className={cn(\n \"relative p-1 after:w-full border-b border-gray-200 last:border-0\",\n className,\n )}\n {...props}\n >\n {children}\n </SelectPrimitive.Group>\n));\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"pr-2 pl-8 py-1.5 text-sm font-semibold z-[1]\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => {\n return (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-none focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-4 w-4 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n});\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","// import { buttonVariants } from \"../Button/Button\";\nimport { cn } from \"../../helpers/utils\";\nimport * as React from \"react\"\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDownIcon } from \"@heroicons/react/16/solid\";\nimport { buttonVariants } from \"../Button/Button\";\n\ntype AlignDropdown = \"left\" | \"right\" | \"center\";\ninterface NavigationMenuProviderProps {\n value: { alignDropdown?: AlignDropdown };\n children: React.ReactNode;\n}\n\nconst NavigationMenuContext = React.createContext<null | { alignDropdown?: AlignDropdown }>(null);\n\nconst NavigationMenuProvider: React.FC<NavigationMenuProviderProps> = ({ value, children }) => {\n return (\n <NavigationMenuContext.Provider value={value}>\n {children}\n </NavigationMenuContext.Provider>\n );\n};\n\nconst useNavigationMenu = (): { alignDropdown?: AlignDropdown } => {\n const context = React.useContext(NavigationMenuContext);\n if (!context) {\n throw new Error(\n \"useNavigationMenu must be used within a NavigationMenuProvider\"\n );\n }\n return context;\n};\n\nconst NavigationMenu = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root> & {\n alignDropdown?: AlignDropdown;\n }\n>(({ className, children, alignDropdown = \"left\", ...props }, ref) => (\n <NavigationMenuProvider value={{ alignDropdown }}>\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn(\n \"relative z-10 flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n {...props}\n >\n {children}\n {/* <NavigationMenuViewport /> */}\n </NavigationMenuPrimitive.Root>\n </NavigationMenuProvider>\n))\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(\n \"group flex flex-1 list-none items-center justify-center space-x-0\",\n className\n )}\n {...props}\n />\n))\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\n\nconst navigationMenuTriggerStyle = cva(\n buttonVariants({\n variant: \"transparent\",\n size: \"sm\",\n })\n)\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), \"group px-2\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative ml-1 h-4 w-4 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n))\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => {\n const { alignDropdown } = useNavigationMenu();\n return (<NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"absolute top-full mt-3 rounded-lg bg-white text-gray-900 ring-1 ring-gray-900/5 shadow-[0_10px_32px_rgba(34,42,53,0.15),0_1px_1px_rgba(0,0,0,0.05),0_4px_6px_rgba(34,42,53,0.08),0_1px_1px_rgba(34,42,53,0.1),0_24px_68px_rgba(47,48,55,0.1)]\",\n className, \"before:content-[''] before:absolute before:-top-3 before:left-0 before:right-0 before:w-full before:bg-transparent before:opacity-0 before:h-3\", alignDropdown !== 'center' && \"data-[state=open]:animate-in data-[state=open]:fade-in data-[state=open]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out \", \n alignDropdown === 'left' && \"left-0\",\n alignDropdown === 'right' && \"right-0\",\n alignDropdown === 'center' && \" left-1/2 -translate-x-1/2 \"\n )}\n\n {...props}\n />)\n})\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\n <NavigationMenuPrimitive.Viewport\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n))\nNavigationMenuViewport.displayName =\n NavigationMenuPrimitive.Viewport.displayName\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n className\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n))\nNavigationMenuIndicator.displayName =\n NavigationMenuPrimitive.Indicator.displayName\n\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n}\n","import * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\n\nimport { cn } from \"../../helpers/utils\";\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-5 w-10 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-default disabled:opacity-20 data-[state=checked]:bg-pink-500 data-[state=unchecked]:bg-gray-400\",\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none relative cik before:content-[''] before:absolute before:w-1.5 before:h-1.5 before:rounded-full before:bg-pink-600 before:-translate-x-1/2 before:translate-y-1 disabled:opacity-20 before:data-[state=unchecked]:bg-gray-400 block h-3.5 w-3.5 bg-white rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0.5\",\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { Circle } from \"lucide-react\"\n\nimport { cn } from \"../../helpers/utils\";\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border-2 border-gray-300 disabled:bg-gray-100 disabled:data-[state=checked]:text-gray-100 data-[state=checked]:text-white disabled:data-[state=checked]:bg-gray-400 data-[state=checked]:bg-pink-500 data-[state=checked]:border-none ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-default peer\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center w-full h-full rounded-full \">\n <Circle className=\"h-2 w-2 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n","import { cn } from \"../../helpers/utils\";\n\nimport { NavigationMenuLink } from \"../NavigationMenu/index\";\n\nconst ListItem = ({\n className = \"\",\n icon = \"\",\n title,\n children = \"\",\n href = \"\",\n newTab = false,\n}) => {\n const linkProps = newTab\n ? { target: \"_blank\", rel: \"noopener noreferrer\" }\n : {};\n return (\n <li className=\"\">\n <NavigationMenuLink asChild>\n <a\n className={cn(\n \" select-none space-y-1 rounded-md px-2 py-2 leading-none no-underline outline-none transition-colors hover:bg-pink-50 hover:text-pink-500 focus:bg-pink-50 focus:text-pink-500 flex flex-nowrap space-x-2 min-h-9 \",\n className,\n !icon && \"items-center px-3\"\n )}\n href={href}\n {...linkProps}\n >\n {icon && (\n <div className=\"w-7 h-7 shrink-0 mt-1\">\n <img\n src={icon}\n loading=\"lazy\"\n className=\"w-7 h-7 object-cover\"\n alt={title}\n />\n </div>\n )}\n\n <div className=\" \">\n <div className=\"text-sm font-medium text-gray-900 leading-none\">\n {title}\n </div>\n {children && (\n <p className=\"line-clamp-2 text-xs mt-1 text-gray-500\">\n {children}\n </p>\n )}\n </div>\n </a>\n </NavigationMenuLink>\n </li>\n );\n};\n\nexport default ListItem;\n","import { cn } from \"../../helpers/utils\";\nimport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n navigationMenuTriggerStyle,\n \n} from \"../NavigationMenu/index\";\nimport ListItem from \"./ListItem\";\n\nconst NavItems = ({ data, alignDropdown }: any) => {\n return (\n <NavigationMenu alignDropdown={alignDropdown}>\n <NavigationMenuList >\n {data.map((menuItem) => {\n const linkProps = menuItem.newTab\n ? { target: \"_blank\", rel: \"noopener noreferrer\" }\n : {};\n return menuItem.hasDropdown ? (\n <NavigationMenuItem className=\"relative\" key={menuItem.id}>\n <NavigationMenuTrigger>{menuItem.title}</NavigationMenuTrigger>\n <NavigationMenuContent >\n <ul\n className={cn(\n \"grid w-[300px] p-2 grid-cols-1\",\n menuItem.dropDownCompact === true && menuItem.subMenu.length > 6 && \" w-[530px] md:grid-cols-2 \",\n menuItem.dropDownCompact === true && menuItem.subMenu.length > 12 && \" w-[800px] md:grid-cols-3 \",\n )}\n >\n {menuItem.subMenu &&\n menuItem.subMenu.map((component) => (\n <ListItem\n key={component.title}\n title={component.title}\n href={component.url}\n newTab={component.newTab}\n icon={\n menuItem.dropDownCompact === true\n ? component.icon\n : \"\"\n }\n >\n {menuItem.dropDownCompact === true\n ? component.description\n : \"\"}\n </ListItem>\n ))}\n </ul>\n </NavigationMenuContent>\n </NavigationMenuItem>\n ) : (\n <NavigationMenuItem className=\"relative\" key={menuItem.id}>\n <NavigationMenuLink\n href={menuItem.url}\n className={navigationMenuTriggerStyle()}\n {...linkProps}\n >\n {menuItem.title}\n </NavigationMenuLink>\n </NavigationMenuItem>\n );\n })}\n </NavigationMenuList>\n </NavigationMenu>\n );\n};\n\nexport default NavItems;\n","import { useEffect, useState } from \"react\";\nimport { DEFAULT_EASE } from \"../../helpers/animations\";\nimport { cn } from \"../../helpers/utils\";\nimport { useKey } from \"react-use\";\nimport Router from \"next/router\";\nimport NavItemsMobile from \"./NavItemsMobile\";\nimport { ArrowDownTrayIcon } from \"@heroicons/react/16/solid\";\nimport { buttonVariants } from \"../Button\";\nimport {\n motion,\n AnimatePresence,\n LazyMotion,\n domAnimation,\n} from \"framer-motion\";\n\nimport { MoMoText } from \"../../helpers/constants\"\n\ninterface Props {\n data: any;\n className?: string;\n}\n\nconst computeInsetTop = () =>\n typeof window !== \"undefined\" && window.pageYOffset !== undefined\n ? window.pageYOffset\n : 0;\n\n\nconst MobileMenu = ({ data, className }: Props) => {\n // useKey(\"Escape\", () => setOpen(false));\n const [isOpen, setIsOpen] = useState(false);\n\n useKey(\"Escape\", () => setIsOpen(false));\n\n useEffect(() => {\n if (!isOpen) return;\n const memoizedInsetTop = computeInsetTop();\n function handleRouteChange() {\n setIsOpen(false);\n }\n document.body.style.position = \"fixed\";\n document.body.style.width = \"100%\"\n Router.events.on(\"routeChangeComplete\", handleRouteChange);\n return () => {\n document.body.style.position = ''\n document.body.style.width = ''\n window.scrollTo({\n top: memoizedInsetTop || 0,\n behavior: \"instant\",\n });\n Router.events.off(\"routeChangeComplete\", handleRouteChange);\n };\n }, [isOpen]);\n\n const variants = {\n visible: { opacity: 1, transition: { duration: 0.2 } },\n hidden: { opacity: 0, transition: { duration: 0.2 } },\n };\n\n const containerVariants = {\n hidden: { opacity: 0 },\n show: {\n opacity: 1,\n transition: {\n duration: 0.15,\n staggerChildren: 0.05,\n ease: DEFAULT_EASE,\n },\n },\n exit: { opacity: 0, transition: { duration: 0.15 } },\n };\n\n return (\n <div className={cn(className)}>\n <button\n type=\"button\"\n className=\"text-gray-800 w-10 h-10 flex items-center justify-center hover:text-gray-700 \"\n onClick={() => setIsOpen(!isOpen)}\n >\n <span className=\"sr-only\">Navigation</span>\n <motion.div animate={isOpen ? \"hidden\" : \"visible\"} variants={variants}>\n <svg\n className={cn(\"block w-7 h-7\", isOpen && \"hidden\")}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"M4 6h16M4 12h16M4 18h16\"\n />\n </svg>\n </motion.div>\n <motion.div animate={isOpen ? \"visible\" : \"hidden\"} variants={variants}>\n <svg\n className={cn(\"block w-7 h-7\", !isOpen && \"hidden\")}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </motion.div>\n </button>\n\n\n <LazyMotion features={domAnimation}>\n <AnimatePresence mode=\"wait\">\n {isOpen && (\n <motion.nav\n variants={containerVariants}\n initial=\"hidden\"\n animate=\"show\"\n exit=\"exit\"\n className={cn(\n className,\n \"fixed block w-full max-w-full z-50 px-5 bg-white left-0 right-0 bottom-0 overflow-y-auto top-[calc(var(--header-height)+1px)] pb-24 \",\n )}\n >\n <NavItemsMobile data={data} />\n \n\n\n <div className=\"py-4 text-sm animate-fade-in duration-500 delay-300\">\n <h4 className=\"mb-2 mt-5 text-sm font-semibold text-gray-700 \">\n TẢI VÀ ĐĂNG KÝ\n </h4>\n\n <div className=\"flex flex-nowrap\">\n <div className=\"flex-initial\">\n\n <a className=\"link-white\" target=\"_blank\" href=\"https://itunes.apple.com/vn/app/id918751511?utm_source=website-momo&utm_medium=download&utm_campaign=momo-1dong\">\n <img\n src=\"https://homepage.momocdn.net/img/momo-upload-api-210724113855-637627235353131497.jpg\"\n width={130}\n loading=\"lazy\"\n className=\"img-fluid\"\n alt=\"\"\n />\n </a>\n </div>\n <div className=\"ml-3 flex-initial\">\n\n <a href=\"https://play.google.com/store/apps/details?id=com.mservice.momotransfer&utm_source=website-momo&utm_medium=download&utm_campaign=momo-1dong\" className=\"link-white\" target=\"_blank\">\n <img\n src=\"https://homepage.momocdn.net/img/momo-upload-api-210724113959-637627235994410679.jpg\"\n width={130}\n loading=\"lazy\"\n className=\"img-fluid\"\n alt=\"\"\n />\n </a>\n </div>\n </div>\n\n <h4 className=\"mb-2 mt-5 text-sm font-semibold text-gray-700\">\n HỖ TRỢ KHÁCH HÀNG\n </h4>\n\n <ul className=\"mb-2 text-sm text-gray-500\">\n <li className=\"mb-1\">\n Hotline : \n <a href={`tel:${MoMoText.Support.Hotline}`} className=\"text-gray-600\">\n {MoMoText.Support.Hotline_Format}\n </a>\n </li>\n <li className=\"mb-1\">\n Email : \n <a href={`mailto:${MoMoText.Support.Email}`} className=\"text-gray-600\">{MoMoText.Support.Email}</a>\n </li>\n </ul>\n <a\n href=\"https://www.momo.vn/huong-dan/huong-dan-gui-yeu-cau-ho-tro-bang-tinh-nang-tro-giup\"\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n <div className=\"relative inline-block overflow-hidden rounded border border-gray-300 bg-white py-1 pl-10 pr-2 hover:bg-gray-100\">\n <div\n className=\"absolute left-1 top-1 \"\n style={{ paddingTop: \"3px\" }}\n >\n <svg\n className=\"h-7 w-7 text-pink-700 \"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n viewBox=\"0 0 345.1 512\"\n >\n <g>\n <title>Asset 1</title>\n <path\n d=\"M279.4,23.7H30.8C14.5,23.7,0,38.2,0,56.3v401.8c0,16.3,14.5,30.8,30.8,30.8H76h23.8L76,449.4H34.5V96.2h243.1v152l34.5,22\n V56.3C312,38.2,297.5,23.7,279.4,23.7z M226.8,77.1H86.1c-8.1,0-13.5-5.4-13.5-13.5c0-8.1,5.4-13.5,13.5-13.5h140.8\n c5.4,0,10.8,5.4,10.8,13.5C237.7,71.7,232.3,77.1,226.8,77.1z\"\n />\n <path\n d=\"M189.4,200.7c-14.4,0-25.9,11.6-25.9,25.9v155.7l-17.3-34.6c-14.2-26.3-28.1-23.6-38.9-17.3c-12.5,8.3-17.2,17-8.6,38.9\n c19.6,48.2,49.8,105.6,82.2,142.7h116.7c41-30.4,74-175,17.3-181.6c-5.2,0-13.5,0.8-17.3,4.3c0-17.3-15.1-21.7-21.6-21.6\n c-7.5,0.1-13,4.3-17.3,13c0-17.3-14.1-21.6-21.6-21.6c-8.3,0-17.9,5.2-21.6,13v-90.8C215.4,212.3,203.8,200.7,189.4,200.7z\"\n />\n </g>\n </svg>\n </div>\n <div className=\"text-xs text-gray-500 \">\n Hướng dẫn trợ giúp trên\n </div>\n <div className=\"text-sm font-semibold text-gray-800\">\n Ứng dụng Ví MoMo\n </div>\n </div>\n </a>\n <h4 className=\"mb-2 mt-5 text-sm font-semibold text-gray-700\">\n HỢP TÁC DOANH NGHIỆP\n </h4>\n\n <ul className=\"mb-2 text-sm text-gray-500\">\n <li className=\"mb-1\">\n Hotline : \n <a className=\"text-gray-600\" href={`tel:${MoMoText.Business.Phome}`}>\n {MoMoText.Business.Phome_Format}\n </a>\n </li>\n <li className=\"mb-1\">\n Email : \n <a href={`mailto:${MoMoText.Business.Email}`} className=\"text-gray-600\"> {MoMoText.Business.Email}\n </a>\n </li>\n </ul>\n\n <a\n href=\"https://business.momo.vn/#menutop\"\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n <div className=\"relative inline-block overflow-hidden rounded border border-gray-300 bg-white py-1 pl-12 pr-2 hover:bg-gray-100\">\n <div className=\"absolute left-1 top-1 \">\n <img\n src=\"https://homepage.momocdn.net/fileuploads/svg/momo-file-210724114053.svg\"\n className=\"w-10\"\n loading=\"lazy\"\n alt=\"\"\n />\n </div>\n <div className=\"text-xs text-gray-500 \">\n Hợp tác doanh nghiệp\n </div>\n <div className=\"text-sm font-semibold text-gray-800\">\n Đăng ký hợp tác\n </div>\n </div>\n </a>\n </div>\n\n {/* <div className=\"fixed inset-x-0 bottom-0 grid grid-cols-1 gap-x-5 px-4 py-6 bg-white\">\n <a\n className={cn(\"w-full tracking-cta-header\",\n buttonVariants({ variant: \"primary\", size: \"lg\" })\n )}\n target=\"_blank\"\n href=\"http://momo.vn/download\"\n >\n <ArrowDownTrayIcon className=\"mr-1 w-4 h-4\" /> Tải Ví MoMo\n </a>\n </div> */}\n </motion.nav>\n )}\n </AnimatePresence>\n </LazyMotion>\n </div>\n );\n};\n\nexport default MobileMenu;\n","export const DEFAULT_EASE = [0.24, 0.25, 0.05, 1]\nexport const DEFAULT_DURATION = 0.4\nexport const DEFAULT_DELAY = 0\nexport const DEFAULT_TRANSITION = { ease: DEFAULT_EASE, duration: DEFAULT_DURATION }\n\ninterface AnimationProps {\n delay?: number\n duration?: number\n ease?: number\n}\n\nexport const INITIAL_BOTTOM = { opacity: 0, y: 20 }\nexport const getAnimation = ({ delay, duration, ease }: AnimationProps) => ({\n opacity: 1,\n y: 0,\n transition: {\n delay: delay ?? DEFAULT_DELAY,\n ease: ease ?? DEFAULT_EASE,\n duration: duration ?? DEFAULT_DURATION,\n },\n})\n","import { cn } from \"../../helpers/utils\";\n\nconst ListItemMobile = ({\n className = \"\",\n icon = \"\",\n title,\n children = \"\",\n href = \"\",\n newTab = false,\n}) => {\n const linkProps = newTab\n ? { target: \"_blank\", rel: \"noopener noreferrer\" }\n : {};\n return (\n <li className=\"min-h-8\">\n <a\n className={cn(\n \" select-none py-2 flex flex-nowrap space-x-1 items-center text\",\n className,\n )}\n href={href}\n {...linkProps}\n >\n {icon && (\n <div className=\"w-6 h-6 shrink-0\">\n <img\n src={icon}\n loading=\"lazy\"\n className=\"w-6 h-6 object-cover\"\n alt={title}\n />\n </div>\n )}\n\n <div className=\" \">\n <div className=\"text-sm text-gray-800 line-clamp-1\">{title}</div>\n {children && (\n <p className=\"line-clamp-1 text-xs mt-0 text-gray-500\">\n {children}\n </p>\n )}\n </div>\n </a>\n </li>\n );\n};\n\nexport default ListItemMobile;\n","import { cn } from \"../../helpers/utils\";\nimport { DEFAULT_EASE } from \"../../helpers/animations\";\nimport {\n Accordion,\n AccordionItem,\n AccordionTrigger,\n AccordionContent,\n} from \"../Accordion/index\";\nimport ListItemMobile from \"./ListItemMobile\";\nimport { motion } from \"framer-motion\";\n\nconst listItem = {\n hidden: { opacity: 0, y: 10 },\n show: {\n opacity: 1,\n y: 0,\n transition: { duration: 0.25, ease: DEFAULT_EASE },\n },\n exit: { opacity: 0, transition: { duration: 0.05 } },\n};\n\nconst NavItemsMobile = ({ data }: any) => {\n return (\n <Accordion type=\"single\" collapsible>\n {data.map((menuItem) => {\n const linkProps = menuItem.newTab\n ? { target: \"_blank\", rel: \"noopener noreferrer\" }\n : {};\n return (\n <motion.div key={menuItem.id} variants={listItem}>\n {menuItem.hasDropdown ? (\n <AccordionItem value={menuItem.id}>\n <AccordionTrigger className=\"py-3\">\n {menuItem.title}\n </AccordionTrigger>\n <AccordionContent>\n <ul className={cn(\"grid gap-y-1 gap-x-2 grid-cols-2 \")}>\n {menuItem.subMenu &&\n menuItem.subMenu.map((component) => (\n <ListItemMobile\n key={component.title}\n title={component.title}\n href={component.url}\n newTab={component.newTab}\n icon={\n menuItem.dropDownCompact === true\n ? component.icon\n : \"\"\n }\n >\n {menuItem.dropDownCompact === true\n ? component.description\n : \"\"}\n </ListItemMobile>\n ))}\n </ul>\n </AccordionContent>\n </AccordionItem>\n ) : (\n <a\n className=\"py-3 flex flex-1 items-center text-left justify-between font-medium transition-all hover:underline text-gray-900 border-b border-gray-200\"\n href={menuItem.url}\n {...linkProps}\n >\n {menuItem.title}\n </a>\n )}\n </motion.div>\n );\n })}\n </Accordion>\n );\n};\n\nexport default NavItemsMobile;\n","import { cn } from \"../../helpers/utils\";\n\nimport NavItems from \"./NavItems\";\nimport MobileMenu from \"./MobileMenu\";\nimport parse from 'html-react-parser';\nimport { Button } from \"../Button\";\nimport { ArrowDownTrayIcon } from \"@heroicons/react/16/solid\";\nimport { ReactElement, useState } from \"react\";\nimport { DialogQr } from \"../DialogQr\";\ninterface ComponentData {\n title: string;\n icon: string;\n url: string;\n description: string;\n newTab: boolean;\n}\n\ninterface MainNavItemWithDropdown {\n id: number;\n title: string;\n hasDropdown: boolean;\n dropDownCompact: boolean;\n subMenu: ComponentData[];\n}\n\ninterface MainNavItemWithoutDropdown {\n id: number;\n title: string;\n hasDropdown: boolean;\n url: string;\n newTab: boolean;\n}\n\ntype MainNavItem = MainNavItemWithDropdown | MainNavItemWithoutDropdown;\n\ninterface ServiceInfo {\n logo?: string;\n name?: string;\n url: string;\n}\nexport interface HeaderNavigationProps {\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * Data menu\n */\n dataMenu: MainNavItem[];\n /**\n * Service info\n */\n serviceInfo?: ServiceInfo;\n /**\n * Right Navigation\n */\n navigationRight?: ReactElement;\n /**\n * Has Download App\n */\n hasDownloadApp?: Boolean;\n /**\n * Has sticky Navigation Header, default is true\n */\n isSticky?: Boolean;\n /**\n * Align dropdown menu position\n */\n alignDropdown? : \"left\" | \"right\" | \"center\" \n}\n\n\nconst HeaderNavigation = ({ className, dataMenu, serviceInfo, hasDownloadApp = false, navigationRight, isSticky = true, alignDropdown=\"left\" }: HeaderNavigationProps) => {\n const { logo, name, url } = serviceInfo || {};\n const [openDialogQr, setOpenDialogQr] = useState<boolean>(false);\n return (\n <div\n className={cn(\n className,\n \"z-40 w-full flex-none lg:z-50 \", isSticky ? \"sticky top-0 \" : \"relative\"\n )}\n >\n\n <div\n className={cn(\n \"absolute h-full w-full bg-white shadow-[inset_0px_-1px_0px_0px_rgba(0,0,0,0.08)]\",\n )}\n />\n <nav\n className={cn(\n \"wrapper grid grid-cols-1 items-center lg:border-0 [--header-height:64px] \",\n )}\n style={{ minHeight: \"var(--header-height)\" }}\n >\n <div className=\"relative flex items-center \">\n <a\n href=\"/\"\n title=\"MoMo\"\n className=\"mr-3 flex-none w-9 h-9 overflow-hidden rounded-none hover:opacity-80\"\n >\n <span className=\"sr-only\">MoMo home page</span>\n <img\n src=\"https://homepage.momocdn.net/fileuploads/svg/momo-file-240411162904.svg\"\n className=\"w-9 h-9\"\n alt=\"MoMo\"\n />\n </a>\n {serviceInfo && <a\n href={url}\n title={name}\n className=\" relative flex flex-none space-x-1 pl-2 items-center rounded-none hover:opacity-80 after:absolute after:left-0 after:h-8 after:w-[1px] after:bg-gray-300 after:content-[''] \"\n >\n <img\n src={logo}\n className=\"w-9 h-9\"\n alt=\"MoMo\"\n />\n\n <div className=\"text-sm font-semibold leading-[1.1] text-pink-500 line-clamp-2\">\n {name && parse(name)}\n </div>\n </a>}\n\n <div className=\"relative lg:ml-2 xl:ml-4 hidden lg:flex items-center \">\n <NavItems data={dataMenu} alignDropdown={alignDropdown}/>\n </div>\n <div className=\"ml-auto flex space-x-3 flex-nowrap items-center\">\n {navigationRight && navigationRight}\n {hasDownloadApp && <div className=\" hidden sm:flex\">\n <Button variant={\"primary\"} size={\"sm\"} className=\"tracking-cta-header\" onClick={() => setOpenDialogQr(true)}> <ArrowDownTrayIcon className=\"mr-1 w-4 h-4\" /> Tải Ví MoMo</Button>\n <DialogQr\n open={openDialogQr}\n onOpenChange={() => setOpenDialogQr(false)}\n title=\"Quét mã để tải Ví MoMo\"\n shortTitle=\"Tải ngay\"\n qrLink={\"http://momo.vn/download\"}\n />\n </div>}\n\n\n <MobileMenu data={dataMenu} className=\"lg:hidden \" />\n </div>\n </div>\n </nav>\n </div>\n );\n};\nHeaderNavigation.displayName = \"HeaderNavigation\";\n\nexport { HeaderNavigation };\n","import { useState } from \"react\";\nimport {\n APP_DOWNLOAD,\n MOMO_TEXT,\n SOCIAL_ITEMS,\n SUPPORT,\n} from \"../../helpers/constants\";\n\nimport { Button } from \"../Button\";\nimport { DialogQr } from \"../DialogQr\";\n\nconst FooterContentItem = ({ item }) => {\n return <div className=\"mt-3 flex w-full text-sm\">\n <a\n href={item.url}\n target={item.newTab ? \"_blank\" : \"_self\"}\n rel=\"noreferrer\"\n className=\"flex items-center space-x-2 text-white text-opacity-50 duration-300 hover:text-opacity-100\"\n >\n {item.icon &&\n <span className=\"relative flex-none h-5 w-5 md:h-6 md:w-6\">\n <img src={item.icon} className=\"absolute inset-0\" />\n </span>}\n\n <span className=\"block \">{item.title}</span>\n </a>\n </div>\n}\n\nconst FooterContent = ({ primaryMenu, secondaryMenu }) => {\n const [openDialogQr, setOpenDialogQr] = useState<number | null>(null);\n return (\n <>\n <div className=\"footer-main order-2 py-7 text-white md:order-1 text-sm\">\n <div className=\"wrapper grid grid-cols-2 gap-5 sm:gap-x-20 sm:gap-y-10 lg:flex lg:flex-nowrap lg:gap-14\">\n <div className=\"block grow md:w-44 md:shrink-0 md:border-none md:pb-0\">\n <div className=\"whitespace-nowrap text-xs font-bold uppercase text-white text-opacity-80\">\n {primaryMenu?.heading}\n </div>\n {primaryMenu?.lists?.map((item, index) => (\n <FooterContentItem key={index} item={item} />\n ))}\n </div>\n\n <div className=\" md:order-none md:w-40 md:flex-none md:shrink-0 md:border-none md:pb-0\">\n <div className=\"whitespace-nowrap text-xs font-bold uppercase text-white text-opacity-80\">\n {secondaryMenu?.heading}\n </div>\n <div className=\"flex flex-wrap\">\n {secondaryMenu?.lists?.map((item, index) => (\n <FooterContentItem key={index} item={item} />\n ))}\n </div>\n </div>\n\n <div className=\"col-span-2 grow border-t border-gray-700 pt-5 sm:col-span-1 md:border-none md:pt-0\">\n <div className=\"border-b border-gray-700 pb-5 md:border-0 md:pb-0\">\n <div className=\"whitespace-nowrap text-xs font-bold uppercase text-white text-opacity-80\">\n Chăm sóc khách hàng\n </div>\n <div className=\"mt-2 text-sm md:mt-3\">\n <span className=\"text-white text-opacity-50\">Địa chỉ : </span>\n <span className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\">\n {SUPPORT.Address}\n </span>\n </div>\n <div className=\"mt-1 text-sm\">\n <span className=\"text-white text-opacity-50\">Hotline : </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href={`tel:${MOMO_TEXT.Support.Hotline}`}\n >\n {MOMO_TEXT.Support.Hotline_Format}\n </a>\n <small className=\"text-xs italic text-white text-opacity-60\">\n {\" \"}\n (Phí 1.000đ/phút)\n </small>\n </div>\n <div className=\"mt-1 text-sm\">\n <span className=\"text-white text-opacity-50\">Email : </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href={`mailto:${MOMO_TEXT.Support.Email}`}\n >\n {MOMO_TEXT.Support.Email}\n </a>\n </div>\n <div className=\"mt-1 text-sm\">\n <span className=\"text-white text-opacity-50\">\n Tổng đài gọi ra :{\" \"}\n </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href={`tel:${MOMO_TEXT.Support.Phone_Ext_1}`}\n >\n {MOMO_TEXT.Support.Phone_Ext_1_Format}\n </a>\n <span className=\"text-white text-opacity-60\"> - </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href={`tel:${MOMO_TEXT.Support.Phone_Ext_2}`}\n >\n {MOMO_TEXT.Support.Phone_Ext_2_Format}\n </a>\n <span className=\"text-white text-opacity-60\"> - </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href={`tel:${MOMO_TEXT.Support.Phone_Ext_3}`}\n >\n {MOMO_TEXT.Support.Phone_Ext_3_Format}\n </a>\n <span className=\"text-white text-opacity-60\">\n , các đầu số di động Brandname MoMo\n </span>\n </div>\n <div className=\"mt-3 flex\">\n <a\n href=\"https://www.momo.vn/huong-dan/huong-dan-gui-yeu-cau-ho-tro-bang-tinh-nang-tro-giup\"\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n <div className=\"relative block overflow-hidden rounded border border-gray-400 bg-black py-1 pl-10 pr-2\">\n <div\n className=\"absolute left-1 top-1 \"\n style={{ paddingTop: \"3px\" }}\n >\n <svg\n className=\"h-7 w-7 text-gray-100 \"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n viewBox=\"0 0 345.1 512\"\n >\n <g>\n <title>Asset 1</title>\n <path\n d=\"M279.4,23.7H30.8C14.5,23.7,0,38.2,0,56.3v401.8c0,16.3,14.5,30.8,30.8,30.8H76h23.8L76,449.4H34.5V96.2h243.1v152l34.5,22\n V56.3C312,38.2,297.5,23.7,279.4,23.7z M226.8,77.1H86.1c-8.1,0-13.5-5.4-13.5-13.5c0-8.1,5.4-13.5,13.5-13.5h140.8\n c5.4,0,10.8,5.4,10.8,13.5C237.7,71.7,232.3,77.1,226.8,77.1z\"\n />\n <path\n d=\"M189.4,200.7c-14.4,0-25.9,11.6-25.9,25.9v155.7l-17.3-34.6c-14.2-26.3-28.1-23.6-38.9-17.3c-12.5,8.3-17.2,17-8.6,38.9\n c19.6,48.2,49.8,105.6,82.2,142.7h116.7c41-30.4,74-175,17.3-181.6c-5.2,0-13.5,0.8-17.3,4.3c0-17.3-15.1-21.7-21.6-21.6\n c-7.5,0.1-13,4.3-17.3,13c0-17.3-14.1-21.6-21.6-21.6c-8.3,0-17.9,5.2-21.6,13v-90.8C215.4,212.3,203.8,200.7,189.4,200.7z\"\n />\n </g>\n </svg>\n </div>\n <div className=\"text-xs text-white text-opacity-70\">\n Hướng dẫn trợ giúp trên\n </div>\n <div className=\"text-xs font-bold uppercase text-white text-opacity-90\">\n Ứng dụng MoMo\n </div>\n </div>\n </a>\n </div>\n </div>\n <div className=\"mt-4 border-b border-gray-700 pb-5 md:mt-8 md:border-none md:pb-0\">\n <div className=\"whitespace-nowrap text-xs font-bold uppercase text-white text-opacity-80\">\n Hợp tác doanh nghiệp\n </div>\n <div className=\"mt-2 text-sm md:mt-3\">\n <span className=\"text-white text-opacity-50\">Hotline : </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href={`tel:${MOMO_TEXT.Business.Phome}`}\n >\n {MOMO_TEXT.Business.Phome_Format}\n </a>\n </div>\n <div className=\"mt-1 text-sm\">\n <span className=\"text-white text-opacity-50\">Email : </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href={`mailto:${MOMO_TEXT.Business.Email}`}\n >\n {MOMO_TEXT.Business.Email}\n </a>\n </div>\n <div className=\"mt-1 text-sm\">\n <span className=\"text-white text-opacity-50\">Website : </span>\n <a\n className=\"inline text-white text-opacity-70 duration-300 hover:text-opacity-100\"\n href=\"https://business.momo.vn/\"\n aria-label=\"MoMo Business\"\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n business.momo.vn\n </a>\n </div>\n <div className=\"mt-3 flex\">\n <a\n href=\"https://business.momo.vn/#menutop\"\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n <div className=\"relative block overflow-hidden rounded border border-gray-400 bg-black py-1 pl-12 pr-2 \">\n <div className=\"absolute left-1 top-1 flex aspect-1 items-center justify-center\">\n <svg\n width=\"30\"\n height=\"20\"\n viewBox=\"0 0 30 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"mt-2\"\n >\n <path\n d=\"M9.5688 5.21563C8.63815 5.98097 9.08817 8.15453 11.2556 6.84427C11.2556 6.84427 13.9037 5.51871 15.4497 4.6401C15.7864 4.4503 16.0129 4.51152 16.2946 4.83297C16.6038 5.05644 23.6112 12.8813 23.6112 12.8813C23.6112 12.8813 25.7725 11.2404 26.6144 9.51683C26.6144 9.51683 24.6735 5.8677 22.8214 2.24612C22.2857 2.5492 21.8265 2.83696 21.2111 2.66247C20.5744 2.48185 20.0478 1.98285 19.4723 1.64916C18.8171 1.26649 18.26 0.92362 17.5283 0.819534C16.4446 0.663406 15.5935 1.15016 14.6598 1.6859C13.5975 2.29511 12.5689 2.97779 11.5617 3.69414C10.8821 4.17171 10.2178 4.6799 9.5688 5.21563Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M10.9281 17.4029C10.5638 16.9008 10.6342 16.1538 11.0842 15.7344L13.3068 13.7109C13.7568 13.2884 14.415 13.3527 14.7793 13.8517C15.1436 14.3507 15.0731 15.0977 14.6231 15.5232L12.4006 17.5467C11.9536 17.9631 11.2924 17.9019 10.9281 17.4029Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M8.87706 15.5385C8.51275 15.0364 8.58317 14.2895 9.03318 13.867L10.7873 12.272C11.2374 11.8496 11.8955 11.9139 12.2598 12.4129C12.6241 12.9149 12.5537 13.6619 12.1037 14.0844L10.3496 15.6824C9.90261 16.1018 9.24136 16.0375 8.87706 15.5385Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M6.39426 14.014C6.05751 13.4905 6.1616 12.7496 6.62998 12.3547L7.02184 12.0486C7.49022 11.6537 8.14535 11.7608 8.48822 12.2812L8.51271 12.3118C8.85252 12.8353 8.72395 13.5456 8.2525 13.9405L7.86065 14.2466C7.39226 14.6415 6.73407 14.5374 6.39426 14.014Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M16.2182 16.2671C15.8325 15.7895 15.1712 15.762 14.7396 16.2089L13.7814 17.2039C13.3497 17.6508 13.313 18.4009 13.6987 18.8815C14.0844 19.3621 14.7488 19.3866 15.1773 18.9397L16.1355 17.9447C16.5672 17.4978 16.6039 16.7477 16.2182 16.2671Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M29.9207 7.86982C30.0799 8.1729 29.9911 8.53108 29.7278 8.66884L28.1145 9.51989C27.8512 9.65459 27.5084 9.51989 27.3522 9.21682L23.5255 1.81447C23.3694 1.5114 23.4551 1.15322 23.7184 1.01546L25.3317 0.167464C25.595 0.0297027 25.9379 0.167463 26.094 0.470537L29.9207 7.86982Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M2.61348 9.14334C2.49409 9.46479 2.18489 9.6454 1.92467 9.54744L0.299097 8.98415C0.0388821 8.88619 -0.0713265 8.54638 0.0480662 8.228L2.9839 0.430738C3.10329 0.109296 3.41249 -0.0713245 3.67271 0.0266388L5.29828 0.592989C5.5585 0.690952 5.66871 1.03076 5.54931 1.34914L2.61348 9.14334Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M23.5224 13.8395L23.5163 13.8333C23.4826 14.0109 23.4336 14.1609 23.2989 14.3109C23.0816 14.5528 22.7999 14.6721 22.5152 14.6721C22.2183 14.6721 21.9183 14.5405 21.6887 14.2772L18.9212 11.1393C18.8692 11.0781 18.8049 11.0506 18.7375 11.0506C18.4742 11.0506 18.1804 11.4853 18.4191 11.7363L20.6907 14.2466C21.1223 14.7426 21.1315 15.5079 20.7029 15.9855C20.5039 16.2059 20.259 16.313 20.011 16.313C19.7233 16.313 19.4294 16.1722 19.1967 15.9059L16.5946 13.0037C16.5364 12.9119 16.4629 12.8721 16.3864 12.8721C16.1415 12.8721 15.8843 13.2792 16.1415 13.5731L18.1436 15.8691C18.563 16.3498 18.5293 17.0967 18.1161 17.5621C17.9263 17.7733 17.6936 17.8743 17.4548 17.8743C17.3171 17.8743 17.1762 17.8406 17.0415 17.7733C16.9589 17.9937 16.8364 18.2019 16.6772 18.3856C16.9221 18.5203 17.1885 18.5968 17.4548 18.5968C17.8926 18.5968 18.3059 18.407 18.6181 18.058C18.9426 17.6968 19.111 17.2376 19.1294 16.7753C19.3988 16.9437 19.7049 17.0355 20.011 17.0355C20.4611 17.0355 20.8866 16.8396 21.208 16.4814C21.5295 16.1232 21.6948 15.6579 21.707 15.1895C21.955 15.3242 22.2336 15.3946 22.5152 15.3946C23.005 15.3946 23.4612 15.1834 23.801 14.8038C24.1255 14.4395 24.1837 14.0599 24.2235 13.7844C24.2449 13.6343 24.2173 13.4843 24.1561 13.3527C24.0765 13.417 24.0275 13.4537 24.0153 13.4629L23.5224 13.8395Z\"\n fill=\"#fff\"\n />\n <path\n d=\"M6.20135 11.7914L6.21053 11.7822L6.21972 11.7731L6.38503 11.6445C5.02579 10.2669 4.19616 9.2505 4.19616 9.2505C5.5003 5.92894 6.97587 1.88183 6.97587 1.88183C6.96363 2.11143 7.73509 2.52166 7.89122 2.58288C8.14837 2.68697 8.42695 2.73595 8.70553 2.73595C8.78513 2.73595 8.86166 2.73289 8.9382 2.7237C9.75252 2.64105 10.5179 2.17266 11.2342 1.7655C11.7179 1.49304 12.3179 1.21446 12.8843 1.21446C13.1537 1.21446 13.4139 1.28487 13.6557 1.441C13.8731 1.30936 14.0874 1.18078 14.2986 1.06139C14.2619 1.01547 14.2221 0.972612 14.1762 0.935876C13.8088 0.641986 13.3741 0.495041 12.8873 0.495041C12.1312 0.495041 11.3965 0.859342 10.9097 1.1318L10.723 1.23895C10.1107 1.58794 9.48006 1.94612 8.87391 2.00735C8.8188 2.01347 8.76064 2.01653 8.70553 2.01653C8.50349 2.01653 8.30756 1.9798 8.13918 1.91245C8.01673 1.8604 7.73815 1.69815 7.60651 1.59407C7.52079 1.38589 7.34323 1.22977 7.11976 1.17772C7.07077 1.16548 7.02179 1.16242 6.97587 1.16242C6.69729 1.16242 6.43707 1.34304 6.33299 1.62774C6.31768 1.66754 4.84517 5.70546 3.5594 8.97804C3.46144 9.22907 3.5043 9.51684 3.67267 9.72195C3.70941 9.76481 4.52985 10.7659 5.87991 12.1374C5.97175 12.0149 6.0789 11.8955 6.20135 11.7914Z\"\n fill=\"#fff\"\n />\n </svg>\n </div>\n <div className=\"text-xs text-white text-opacity-70\">\n Hợp tác doanh nghiệp\n </div>\n <div className=\"text-xs font-semibold uppercase text-white text-opacity-90\">\n Đăng ký hợp tác\n </div>\n </div>\n </a>\n </div>\n </div>\n </div>\n <div className=\"col-span-2 gap-8 sm:col-span-1 md:mt-0 md:flex md:flex-col md:flex-wrap md:justify-between \">\n <div className=\"h-auto\">\n <div className=\"hidden whitespace-nowrap text-xs font-bold uppercase text-white text-opacity-80 md:block\">\n Kết nối với chúng tôi\n </div>\n <div className=\"mt-3 hidden flex-row items-stretch md:flex\">\n <ul className=\"item-center flex list-none flex-wrap space-x-4\">\n {SOCIAL_ITEMS &&\n SOCIAL_ITEMS.map((item, index) => (\n <li className=\"inline-block\" key={index}>\n <a\n href={item.Link}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"duration-300 hover:brightness-125\"\n >\n <img\n src={item.Image}\n loading=\"lazy\"\n width=\"40\"\n height=\"40\"\n />\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n <div className=\"h-auto\">\n <div className=\"hidden whitespace-nowrap text-xs font-bold uppercase text-white text-opacity-80 md:block\">\n Tải ứng dụng trên điện thoại\n </div>\n <div className=\"flex items-center flex-wrap md:mt-3 md:space-x-1.5\">\n <div className=\"relative hidden h-24 w-24 lg:w-20 lg:h-20 grow-0 overflow-hidden rounded-sm bg-white md:block\">\n <img\n src=\"https://homepage.momocdn.net/img/momo-upload-api-230627140125-638234712853800898.jpg\"\n alt=\"Qr-Dowbnload MoMo\"\n className=\" absolute inset-0\"\n />\n </div>\n <div className=\"flex grow justify-center gap-2 md:grid md:grid-cols-1 md:gap-1.5\">\n {APP_DOWNLOAD &&\n APP_DOWNLOAD.map((item, index) => (\n <div\n className=\"w-full md:flex md:items-center button-download\"\n key={index}\n style={{\n background: `url(${item.Image}) center center / contain no-repeat`,\n }}\n >\n <Button\n onClick={() => setOpenDialogQr(index)}\n className=\"!bg-transparent rounded-none w-full hidden sm:block\"\n style={{ fontSize: \"0px\", padding: \"0 0 30.23%0\" }}\n >\n {item.Name}\n </Button>\n <a\n href={item.Link}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"button-download block sm:hidden\"\n style={{ fontSize: \"0px\", padding: \"0 0 30.23%0\" }}\n />\n <DialogQr\n open={openDialogQr === index}\n onOpenChange={() => setOpenDialogQr(null)}\n title=\"Quét mã để tải ứng dụng\"\n shortTitle=\"Tải ngay\"\n qrLink={item.Link}\n />\n </div>\n ))}\n </div>\n <div className=\"mt-4 flex w-full justify-center text-center md:hidden\">\n <ul className=\"item-center flex list-none flex-wrap space-x-3.5\">\n {SOCIAL_ITEMS &&\n SOCIAL_ITEMS.map((item, index) => (\n <li key={index}>\n <a\n href={item.Link}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"flex duration-300 hover:brightness-125\"\n >\n <img\n alt={item.Name}\n src={item.Image}\n loading=\"lazy\"\n width=\"36\"\n height=\"36\"\n />\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </div>\n <div className=\"h-auto\">\n <div className=\"hidden whitespace-nowrap text-xs font-bold uppercase text-white text-opacity-80 md:block\">\n Được chứng nhận bởi\n </div>\n <div className=\"mt-6 flex items-center justify-between md:mt-3 md:justify-normal\">\n <span className=\"block text-right text-xs text-white text-opacity-50 md:hidden\">\n ©Copyright M_Service {new Date().getFullYear()}\n </span>\n <a\n rel=\"noopener noreferrer\"\n href=\"http://online.gov.vn/Home/AppDetails/163\"\n target=\"_blank\"\n className=\" flex w-28 items-center md:w-auto\"\n >\n <img\n alt=\"chứng nhận\"\n src=\"https://homepage.momocdn.net/blogscontents/momo-upload-api-210629153623-637605777831780706.png\"\n width={119}\n height={45}\n />\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div className=\" footer-bottom order-1 bg-gray-800 py-3.5 md:order-2 md:py-5\">\n <div className=\"wrapper flex flex-wrap items-end justify-between md:flex-nowrap md:space-x-3\">\n <div className=\"mb-2.5 flex justify-between md:mb-0\">\n <img\n src=\"https://homepage.momocdn.net/fileuploads/svg/momo-file-240411162904.svg\"\n className=\"w-9 h-9\"\n alt=\"MoMo\"\n />\n <div className=\"shrink pl-3\">\n <div className=\"text-sm text-white text-opacity-80 md:mb-1.5 \">\n CÔNG TY CỔ PHẦN DỊCH VỤ DI ĐỘNG TRỰC TUYẾN\n </div>\n <span className=\"hidden text-xs text-white text-opacity-50 md:block lg:text-sm lg:leading-none\">\n Lầu 6, Toà nhà Phú Mỹ Hưng, số 8 Hoàng Văn Thái, khu phố 1, P.\n Tân Phú, Q. 7, Thành phố Hồ Chí Minh\n </span>\n </div>\n </div>\n <span className=\"block text-sm text-white text-opacity-50 md:hidden\">\n Lầu 6, Toà nhà Phú Mỹ Hưng, số 8 Hoàng Văn Thái, khu phố 1, P. Tân\n Phú, Q. 7, Thành phố Hồ Chí Minh\n </span>\n\n <span className=\"hidden w-48 flex-none text-right text-sm text-white text-opacity-50 md:block\">\n ©Copyright M_Service {new Date().getFullYear()}\n </span>\n </div>\n </div>\n <style>{`\n footer .button-download {\n max-width: 150px;\n }\n `}</style>\n </>\n );\n};\n\nexport default FooterContent;","import FooterContent from \"./FooterContent\"\nimport { cn } from \"../../helpers/utils\";\nexport interface FooterItem {\n title: string;\n url: string;\n icon?: string | null;\n newTab: boolean;\n}\n\n// Define interface for footer data\nexport interface FooterData {\n heading: string;\n lists: FooterItem[];\n}\n\nexport interface FooterProps {\n /**\n * CSS class to be appended to the root element.\n */\n className?: string;\n /**\n * Data menu column 1\n */\n primaryMenu?: FooterData;\n /**\n * Data menu column 2\n */\n secondaryMenu?: FooterData;\n}\n\nconst Footer = ({ className, primaryMenu, secondaryMenu }: FooterProps) => {\n return (\n <footer className={cn('grid grid-cols-1 flex-wrap bg-gray-900', className)}>\n <FooterContent primaryMenu={primaryMenu} secondaryMenu={secondaryMenu} />\n </footer>\n );\n};\n\nexport { Footer }","import * as React from \"react\"\n\nimport { cn } from \"../../helpers/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border bg-card text-card-foreground shadow\",\n className\n )}\n {...props}\n />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import * as React from \"react\";\nimport { type DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { cn } from \"../../helpers/utils\";\nimport { Dialog, DialogContent } from \"../Dialog\";\nimport {\n XCircleIcon,\n MagnifyingGlassIcon,\n CheckIcon,\n} from \"@heroicons/react/16/solid\";\n\ninterface ItemProps {\n isActive?: boolean;\n}\n\ninterface InputProps {\n onClickClear?: (value: string) => void;\n}\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex text-gray-900 border border-gray-300 shadow-lg bg-white h-full w-full flex-col overflow-hidden rounded-md\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ninterface CommandDialogProps extends DialogProps {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input> & InputProps\n>(({ className, onClickClear, ...props }, ref) => {\n const divRef = React.useRef<HTMLDivElement>(null);\n const [search, setSearch] = React.useState(\"\");\n\n const handleClearInput = () => {\n if (!search || search?.length <= 0) return;\n setSearch(\"\");\n onClickClear?.(search);\n };\n\n return (\n <div\n ref={divRef}\n className=\"flex items-center border-b px-3\"\n cmdk-input-wrapper=\"\"\n >\n <MagnifyingGlassIcon className=\"mr-2 h-4 w-4 shrink-0 text-gray-500\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 text-gray-900 w-full rounded-md focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-offset-0 focus:ring-0 bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n value={search}\n onValueChange={setSearch}\n {...props}\n />\n <XCircleIcon\n onClick={handleClearInput}\n className={cn(\n \"ml-2 transition-all cursor-pointer h-4 w-4 duration-75 shrink-0 text-gray-500\",\n search?.length > 0 ? \"opacity-100\" : \"opacity-0\",\n )}\n />\n </div>\n );\n});\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\n \"max-h-[300px] text-gray-900 overflow-y-auto overflow-x-hidden\",\n className,\n )}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-gray-900 text-center text-sm\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden text-gray-900 p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 text-gray-900 h-px bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item> & ItemProps\n>(({ className, children, isActive, ...props }, ref) => {\n return (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative cursor-pointer text-gray-900 flex rounded-md select-none hover:bg-gray-100 aria-selected:bg-gray-100 aria-selected:text-gray-900 items-center px-2 py-1.5 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n isActive ? \"bg-gray-100\" : \"\",\n className,\n )}\n {...props}\n >\n <CheckIcon\n className={cn(\"h-4 w-4 mr-2\", isActive ? \"opacity-100\" : \"opacity-0\")}\n />\n {children}\n </CommandPrimitive.Item>\n );\n});\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs text-gray-900 tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","import * as React from \"react\";\nimport { cn } from \"../../helpers/utils\";\nimport { ChevronDownIcon } from \"@heroicons/react/16/solid\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { Popover, PopoverTrigger, PopoverContent } from \"../Popover\";\n\ninterface ComboboxTriggerProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {\n className?: string;\n value?: string;\n label?: string;\n children: any;\n placeholder?: string;\n}\n\ninterface ComboboxContentProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {\n children?: any;\n className?: string;\n}\n\ninterface ComboboxProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Popover> {}\n\nexport const ComboboxTrigger = ({\n className,\n value,\n label,\n children,\n placeholder,\n}: ComboboxTriggerProps) => {\n return (\n <div className=\"relative\">\n <PopoverTrigger\n className={cn(\n \"focus-visible:outline-none w-72 focus-visible:ring-0 focus-visible:ring-offset-0 focus:ring-0 select-mobase-button bg-white ring-0 transition-all rounded-md border border-gray-300 data-[placeholder]:text-gray-500 p-3 disabled:bg-gray-50 disabled:border-gray-200 disabled:pointer-events-none flex items-center justify-between data-[state=open]:border-pink-500 data-[state=open]:ring-1 hover:ring-1 hover:ring-gray-400 data-[state=open]:ring-pink-500 text-gray-900 h-11 ring-inset text-sm\",\n className,\n )}\n >\n {value || children || placeholder}\n <ChevronDownIcon className=\"h-4 w-4 text-gray-700 flex-none\" />\n </PopoverTrigger>\n {label && (\n <span className=\"absolute bg-white -top-2 px-1.5 left-2 text-xs text-gray-500 z-[1]\">\n {label}\n </span>\n )}\n </div>\n );\n};\n\nexport const ComboboxContent = ({\n children,\n className,\n}: ComboboxContentProps) => {\n return (\n <PopoverContent className={cn(\"!p-0 border-none\", className)}>\n {children}\n </PopoverContent>\n );\n};\n\nexport const Combobox = ({ open, onOpenChange, children }: ComboboxProps) => {\n return (\n <Popover open={open} onOpenChange={onOpenChange}>\n {children}\n </Popover>\n );\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\nimport { cn } from \"../../helpers/utils\";\nimport { InformationCircleIcon } from \"@heroicons/react/24/outline\";\nimport { TextButton } from \"../TextButton\";\n\ninterface CalloutProps {\n message: string;\n type: \"neutral\" | \"error\" | \"success\" | \"warning\" | \"info\";\n withAction?: string;\n onClickAction?: () => void;\n className?: string;\n disabled?: boolean;\n actionClassName?: string;\n}\n\nconst calloutVariants = cva(\n \"px-3 py-2 rounded-md border flex items-center space-x-2 text-gray-700 text-sm \",\n {\n variants: {\n typeDiv: {\n neutral: \"bg-gray-50 border-gray-300 \",\n error: \"bg-red-50 border-red-300\",\n success: \"bg-green-50 border-green-300\",\n warning: \"bg-yellow-50 border-yellow-300\",\n info: \"bg-blue-50 border-blue-300\",\n },\n disabled: {\n true: \"text-gray-400 bg-gray-50 opacity-55 pointer-events-none border-gray-300\",\n },\n },\n defaultVariants: {\n typeDiv: \"neutral\",\n },\n },\n);\n\nconst iconVariants = cva(\"w-5 h-5 shrink-0 border-none p-0 \", {\n variants: {\n typeIcon: {\n neutral: \"text-gray-700\",\n error: \"text-red-700\",\n success: \"text-green-700\",\n warning: \"text-yellow-700\",\n info: \"text-blue-700\",\n },\n disabled: {\n true: \"text-gray-400\",\n },\n },\n defaultVariants: {\n typeIcon: \"neutral\",\n },\n});\n\nexport const Callout = forwardRef<\n HTMLDivElement,\n CalloutProps &\n VariantProps<typeof calloutVariants> &\n VariantProps<typeof iconVariants>\n>(\n (\n {\n type = \"neutral\",\n message = \"\",\n withAction = false,\n onClickAction,\n className,\n disabled,\n actionClassName,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"\",\n className,\n calloutVariants({ typeDiv: type, disabled }),\n )}\n {...props}\n >\n <div className=\"flex items-center space-x-2\">\n <InformationCircleIcon\n className={cn(iconVariants({ typeIcon: type, disabled }))}\n width={20}\n height={20}\n />\n <div>\n Bạn cần cho phép website sử dụng thông tin vị trí để sử dụng tính\n năng này\n </div>\n </div>\n {withAction && (\n <TextButton\n variant=\"primary\"\n onClick={() => onClickAction?.()}\n className={cn(\"\", actionClassName)}\n isDisabled={disabled}\n >\n {withAction}\n </TextButton>\n )}\n </div>\n );\n },\n);\n","import {\n ChangeEvent,\n FocusEvent,\n forwardRef,\n InputHTMLAttributes,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { MagnifyingGlassIcon } from \"@heroicons/react/20/solid\";\nimport { XCircleIcon } from \"@heroicons/react/24/outline\";\nimport { cn } from \"../../helpers/utils\";\n\nexport interface SearchBarProps extends InputHTMLAttributes<HTMLInputElement> {\n inputClassName?: string;\n size?: 1 | 2;\n onClickClear?: (inputValue: string) => void;\n}\n\nexport const SearchBar = forwardRef<HTMLInputElement, SearchBarProps>(\n (\n {\n disabled,\n className,\n inputClassName,\n size,\n onChange,\n onFocus,\n onClickClear,\n value,\n defaultValue,\n type = \"text\",\n ...restProps\n },\n ref,\n ) => {\n const [clearable, setClearable] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n\n const handleShowClearButton = (inputValue) => {\n if (inputValue && !clearable) {\n setClearable(true);\n }\n\n if (!inputValue && clearable) {\n setClearable(false);\n }\n };\n\n const onChangeFactory = (event: ChangeEvent<HTMLInputElement>) => {\n handleShowClearButton(event.target.value);\n onChange?.(event);\n };\n\n const onFocusFactory = (event: FocusEvent<HTMLInputElement, Element>) => {\n handleShowClearButton(event.target.value);\n onFocus?.(event);\n };\n\n const handleClear = () => {\n const inputTarget = rootRef.current?.querySelector(\"input\");\n if (!inputTarget) return;\n onClickClear?.(inputTarget.value);\n\n inputTarget.value = \"\";\n inputTarget.focus();\n setClearable(false);\n };\n\n useEffect(() => {\n handleShowClearButton(defaultValue || value);\n }, [value, defaultValue]);\n\n return (\n <div className={cn(className)} ref={rootRef}>\n <div className=\"relative flex items-center\">\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 shrink-0 text-gray-500 duration-200 \">\n <MagnifyingGlassIcon className=\"w-4 h-4 text-gray-500\" />\n </div>\n <input\n disabled={disabled}\n type={type}\n ref={ref}\n className={cn(\n \"mobase-text-input-box text-gray-900 h-10 bg-white w-full transition-all text-sm rounded-md border border-gray-300 placeholder:text-gray-500 px-9 focus:border-pink-500 disabled:bg-gray-50 disabled:border-gray-200 disabled:pointer-events-none block disabled:opacity-50\",\n inputClassName,\n )}\n onChange={onChangeFactory}\n onFocus={onFocusFactory}\n value={value}\n defaultValue={defaultValue}\n {...restProps}\n />\n\n {clearable && (\n <button\n aria-label=\"button\"\n type=\"button\"\n className=\"absolute right-3 top-1/2 -translate-y-1/2 shrink-0 cursor-pointer text-gray-500 duration-200 hover:opacity-70 disabled:pointer-events-none\"\n disabled={disabled}\n onClick={handleClear}\n >\n <XCircleIcon strokeWidth={2} width={20} height={20} />\n </button>\n )}\n </div>\n\n <style>\n {`\n .mobase-text-input-box:hover {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-gray-400) / 1) inset;\n }\n .mobase-text-input-box:focus {\n box-shadow: 0px 0px 0px 1px rgb(var(--mobase-pink-500) / 1) inset;\n }\n `}\n </style>\n </div>\n );\n },\n);\n","import { Swiper, SwiperSlide } from \"swiper/react\";\nimport { Navigation, Lazy, Pagination } from \"swiper\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport React, { ReactNode, useEffect, useState } from \"react\";\nimport { IconButton } from \"../IconButton\";\nimport { cn } from \"../../helpers/utils\";\nimport { X } from \"lucide-react\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"@heroicons/react/24/outline\";\nimport _ from \"lodash\";\n\nexport const LightboxGalleryDialog = DialogPrimitive.Root;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 bg-black/80 z-50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\ninterface CloseDialogProps {\n clearActiveIndex?: () => void;\n}\n\nconst CloseDialog = ({ clearActiveIndex }: CloseDialogProps) => {\n return (\n <DialogPrimitive.Close\n onClick={() => clearActiveIndex?.()}\n className=\"flex transition-all z-10 text-sm items-center space-x-1 absolute left-3 top-6 md:left-6 hover:bg-white/20 text-white rounded-md px-4 py-2\"\n >\n <X className=\"h-4 w-4 mt-0.5\" />\n <div className=\"\">Đóng cửa sổ</div>\n </DialogPrimitive.Close>\n );\n};\n\ninterface LightboxThumbnailProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Trigger> {\n children?: ReactNode;\n onClick?: () => void;\n src?: string;\n alt?: string;\n className?: string;\n classNameImage?: string;\n}\n\nexport const LightboxThumbnail = ({\n children,\n src,\n alt,\n className,\n classNameImage,\n onClick,\n}: LightboxThumbnailProps) => {\n const handleOnClickThumbnail = () => {\n onClick?.();\n };\n return (\n <DialogPrimitive.Trigger\n className={cn(\n \"aspect-[2/3] relative overflow-hidden rounded-lg\",\n className,\n )}\n onClick={handleOnClickThumbnail}\n >\n {children}\n <img\n src={src}\n alt={alt}\n className={cn(\"w-full h-full object-cover rounded-lg\", classNameImage)}\n />\n </DialogPrimitive.Trigger>\n );\n};\n\nexport const DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay className=\"bg-black\" />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"h-full min-w-full border-none rounded-none z-[999] fixed bg-black left-[50%] top-[50%] grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] \",\n className,\n )}\n {...props}\n >\n {children}\n <CloseDialog />\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\ninterface LightBoxContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n images: { url: string; titleImage?: string; idx?: number }[];\n activeSlideIndex?: number;\n withSideBar?: boolean;\n subHtmlSideBar?: ReactNode;\n classNameSubHtmSideBar?: string;\n isPagination?: boolean;\n}\n\nexport const LightBoxContent = ({\n images,\n activeSlideIndex = 0,\n withSideBar,\n subHtmlSideBar,\n classNameSubHtmSideBar,\n className,\n isPagination = false,\n}: LightBoxContentProps) => {\n const [activeSlide, setActiveSlide] = useState(activeSlideIndex);\n const [titleImage, setTitleImg] = useState(\"\");\n\n const onGetTitleImage = () => {\n const result = _.filter(images, (_, idx) => idx === activeSlideIndex);\n const titleImgDraf = result.length > 0 ? result[0]?.titleImage : \"\";\n setTitleImg(titleImgDraf);\n };\n\n useEffect(() => {\n setActiveSlide(activeSlideIndex);\n onGetTitleImage();\n }, [activeSlideIndex]);\n\n const pagination = {\n clickable: true,\n renderBullet(index, className) {\n const classNameParent = cn(\n \"aspect-[1/1] min-w-[96px] mt-40 min-h-[76px] !rounded-lg overflow-hidden\",\n className,\n );\n const classNameImage = cn(\"w-full h-full object-cover rounded-lg\");\n if (!images[index]?.url) {\n return \"<div></div>\";\n }\n return `\n <div class=\"${classNameParent} \">\n <img class=\"${classNameImage} \" src=\"${images[index]?.url}\" alt=\"Slide ${index + 1}\" />\n </div>\n `;\n },\n };\n\n const arrayModule = isPagination\n ? [Navigation, Lazy, Pagination]\n : [Navigation, Lazy];\n\n return (\n <DialogContent className={cn(\"flex py-0\", className)}>\n <div className=\"lightbox flex-1 py-6\">\n <div className=\"flex items-center justify-end md:justify-center mt-2 w-full\">\n <div>\n {activeSlide ? activeSlide + 1 : 1} / {images?.length}\n </div>\n </div>\n <Swiper\n initialSlide={activeSlideIndex}\n onSlideChange={({ realIndex }) => {\n setActiveSlide(realIndex);\n onGetTitleImage();\n const activeBullet = document.querySelector(\n \".swiper-pagination-bullet-active\",\n );\n if (activeBullet) {\n activeBullet.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n }}\n onDestroy={() => {\n setActiveSlide(activeSlideIndex);\n onGetTitleImage();\n }}\n slidesPerView=\"auto\"\n className=\"swiper lightboxSwiper\"\n navigation={{\n nextEl: \".lightbox .next-lightbox\",\n prevEl: \".lightbox .prev-lightbox\",\n }}\n pagination={pagination}\n modules={arrayModule}\n lazy={{\n loadPrevNext: true,\n }}\n >\n {images.map((img, index) => (\n <SwiperSlide key={index}>\n <div className=\"absolute top-28 bottom-28 left-0 right-0 min-h-0 sm:left-20 sm:right-20\">\n <img\n src={img.url}\n alt=\"\"\n className=\"absolute h-full w-full object-contain\"\n loading=\"lazy\"\n />\n </div>\n <div className=\"swiper-lazy-preloader swiper-lazy-preloader-white\" />\n <div className=\"text-sm px-20 text-center text-white/80 absolute bottom-10 my-4 flex items-center justify-center w-full z-[999]\">\n {titleImage}\n </div>\n </SwiperSlide>\n ))}\n <IconButton className=\"disabled:bg-white/60 prev-lightbox button-swiper translate swiper-cate-merchant absolute inset-y-1/2 left-6 z-10 hidden h-12 w-12 -translate-y-1/2 cursor-pointer items-center justify-center rounded-full border border-gray-300 bg-white text-white shadow-md duration-200 ease-in-out hover:bg-white/80 hover:shadow-md md:flex\">\n <ChevronLeftIcon className=\"w-7 text-slate-900\" />\n </IconButton>\n <IconButton className=\"disabled:bg-white/60 next-lightbox translate swiper-cate-merchant button-swiper absolute inset-y-1/2 right-6 z-10 hidden h-12 w-12 -translate-y-1/2 cursor-pointer items-center justify-center rounded-full border border-gray-300 bg-white text-white shadow-md duration-300 ease-in-out hover:bg-white/80 hover:shadow-md md:flex\">\n <ChevronRightIcon className=\"w-7 text-slate-900\" />\n </IconButton>\n </Swiper>\n\n <style>\n {`\n .lightbox {\n --lightbox-topnav: 112px;\n --lightbox-botnav: 80px;\n }\n\n @media (max-width: 639px) {\n .lightbox {\n --lightbox-topnav: 60px;\n --lightbox-botnav: 80px;\n }\n .lightbox .swiper-button-prev {\n display: none;\n }\n\n .lightbox .swiper-button-next {\n display: none;\n }\n .swiper-pagination{\n justify-content: start !important;\n }\n }\n\n .lightbox-content {\n top: var(--lightbox-topnav) !important;\n height: calc(100% - var(--lightbox-topnav)) !important;\n width: 100% !important;\n }\n .lightboxSwiper {\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .lightboxSwiper .swiper-slide {\n text-align: center;\n display: -webkit-box;\n display: -ms-flexbox;\n display: -webkit-flex;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n -webkit-align-items: center;\n align-items: center;\n }\n\n .lightboxSwiper.swiper-slide img {\n display: block;\n width: 100%;\n height: 100%;\n }\n .swiper-wrapper{\n bottom: 0px;\n }\n .swiper-pagination{\n max-width: 100%;\n width: 100%;\n overflow-x: auto;\n display: flex;\n justify-content: center;\n }\n\n .swiper-pagination-bullet{\n background: unset;\n opacity: 1;\n }\n .swiper-pagination-bullet-active{\n border: 2px solid white;\n }\n `}\n </style>\n </div>\n {withSideBar && (\n <div\n className={cn(\n \"hidden md:flex overflow-y-auto bg-white text-gray-900 px-6 pb-4 pt-2 w-full max-w-sm lg:max-w-md\",\n classNameSubHtmSideBar,\n )}\n >\n {subHtmlSideBar}\n </div>\n )}\n </DialogContent>\n );\n};\n\ninterface LightboxGalleryProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Dialog> {\n className?: string;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport const LightboxGallery = ({\n children,\n className,\n open,\n onOpenChange,\n}: LightboxGalleryProps & { children: ReactNode }) => {\n return (\n <div className={cn(\"lightbox-gallery \", className)}>\n <LightboxGalleryDialog open={open} onOpenChange={onOpenChange}>\n {React.Children?.map(children, (child) => {\n if (React.isValidElement(child)) {\n const updatedProps = {};\n const knownProps = Object.keys(updatedProps).reduce((acc, key) => {\n if (updatedProps[key] !== undefined) {\n acc[key] = updatedProps[key];\n }\n return acc;\n }, {});\n return React.cloneElement(child, knownProps);\n }\n return null;\n })}\n </LightboxGalleryDialog>\n </div>\n );\n};\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { cn } from \"../../helpers/utils\";\nimport { Circle } from \"lucide-react\";\n\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"@heroicons/react/16/solid\";\n\ntype ChoiceboxGroupProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> & {\n /**\n * Hide indicator when needed, default is false\n */\n hideIndicator?: boolean;\n}\n\ntype ChoiceboxGroupContextProps = {\n hideIndicator?: ChoiceboxGroupProps[\"hideIndicator\"]\n}\n\nconst ChoiceboxGroupContext = React.createContext<ChoiceboxGroupContextProps>({\n hideIndicator: false\n});\n\n/**\n * Hook to get the current context value for ChoiceboxGroup.\n *\n * @returns The current context value for ChoiceboxGroup.\n * @throws If the context is undefined.\n */\nexport function useChoiceboxGroupContext() {\n const context = React.useContext(ChoiceboxGroupContext);\n\n if (!context) {\n throw new Error(\"ChoiceboxGroup.Item must be used within a ChoiceboxGroup \");\n }\n return context;\n}\n\nconst ChoiceboxGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>, ChoiceboxGroupProps\n>(({ className, hideIndicator = false, ...props }, ref) => {\n\n return (\n <ChoiceboxGroupContext.Provider value={{ hideIndicator }}>\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", hideIndicator && \"hide-indicator\", className)}\n {...props}\n ref={ref}\n />\n </ChoiceboxGroupContext.Provider>\n )\n})\nChoiceboxGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst ChoiceboxGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, children, ...props }, ref) => {\n const context = useChoiceboxGroupContext();\n const { hideIndicator } = context ?? {};\n return (\n\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"cursor-pointer relative block border border-gray-300 text-gray-900 p-3 md:px-4 md:py-3 rounded-md bg-white w-full hover:border-pink-500 disabled:bg-gray-100 disabled:border-gray-300 disabled:pointer-events-none disabled:cursor-default data-[state=checked]:border-pink-500 ring-inset ring-pink-500 data-[state=checked]:ring-[1px] group flex items-center space-x-2 text-left\",\n className\n )}\n {...props}\n >\n <div className=\"flex-1 min-w-0\">{children}</div>\n {!hideIndicator && <div className={cn(\"flex-none aspect-square h-4 w-4 rounded-full border-2 border-gray-300 group-disabled:bg-gray-200 group-disabled:data-[state=checked]:text-gray-300 group-data-[state=checked]:text-white group-disabled:data-[state=checked]:bg-gray-100 group-data-[state=checked]:bg-pink-500 group-data-[state=checked]:border-none group-disabled:cursor-default has\")}>\n\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center w-full h-full rounded-full \">\n <Circle className=\"h-1.5 w-1.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n\n </div>}\n </RadioGroupPrimitive.Item>\n\n )\n})\n\nChoiceboxGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\n\n\nconst ChoiceboxMultiItem = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className,children, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"cursor-pointer relative block border border-gray-300 text-gray-900 p-3 md:px-4 md:py-3 rounded-md bg-white w-full hover:border-pink-500 disabled:bg-gray-100 disabled:border-gray-300 disabled:pointer-events-none disabled:cursor-default data-[state=checked]:border-pink-500 ring-inset ring-pink-500 data-[state=checked]:ring-[1px] group flex items-center space-x-2 text-left\",\n className\n )}\n {...props}\n >\n <div className=\"flex-1 min-w-0\">{children}</div>\n <div className=\"h-4 w-4 shrink-0 rounded border-2 group-disabled:bg-gray-300 border-gray-300 ring-offset-background group-disabled:cursor-default group-disabled:bg-gray-100 group-data-[state=checked]:border-none group-disabled:data-[state=checked]:bg-gray-400 group-disabled:data-[state=checked]:text-gray-100 group-data-[state=checked]:bg-pink-500 group-data-[state=checked]:text-white\">\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </div>\n\n </CheckboxPrimitive.Root>\n))\nChoiceboxMultiItem.displayName = CheckboxPrimitive.Root.displayName\n\nexport { ChoiceboxGroup, ChoiceboxGroupItem, ChoiceboxMultiItem }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../helpers/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-md border border-gray-300 px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 font-semibold\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-pink-500 text-white/90 shadow hover:bg-pink-500/80\",\n secondary:\n \"border-transparent bg-gray-200 text-gray-900 hover:bg-gray-200/80\",\n outline: \"text-gray-900\",\n danger:\n \"border-transparent bg-red-500 text-white/90 shadow hover:bg-red-500/80\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> { }\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }","import * as React from \"react\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../helpers/utils\";\n\nconst progressbarVariants = cva(\n \"h-full w-full rounded-full flex-1 transition-all\",\n {\n variants: {\n variant: {\n progress: \"bg-pink-500\",\n success: \"bg-green-600\",\n disabled: \"bg-gray-400\",\n empty: \"bg-gray-200\",\n },\n },\n defaultVariants: {\n variant: \"progress\",\n },\n }\n);\n\nconst progressbarSecondaryVariants = cva(\n \"relative h-4 w-full overflow-hidden rounded-full bg-gray-200\",\n {\n variants: {\n size: {\n small: \"h-[6px]\",\n medium: \"h-2\",\n large: \"h-[10px]\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport interface ProgressBarProps {\n variant?: \"progress\" | \"success\" | \"disabled\" | \"empty\";\n size?: \"small\" | \"medium\" | \"large\";\n disabled?: boolean;\n}\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root> &\n ProgressBarProps &\n VariantProps<typeof progressbarVariants>\n>(\n (\n {\n className,\n value,\n variant = \"progress\",\n size = \"medium\",\n disabled = false,\n ...props\n },\n ref\n ) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\"\", progressbarSecondaryVariants({ size }), className)}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(\"\", progressbarVariants({ variant }))}\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n);\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress as Progressbar };\n","import React, { forwardRef } from \"react\";\n\nimport {\n HeroContentTitleProps,\n HeroContentListFeatureProps,\n HeroContentCTAPrimaryProps,\n HeroContentMediaProps,\n HeroContentDescriptionProps,\n HeroContentProps,\n HeroContentTagProps,\n DataPropsContent,\n TYPE_MEDIA_IMAGE,\n DUMMY_NONE_DATA_CTAS,\n DUMMY_NONE_DATA,\n DUMMY_NONE_DATA_FEATURS,\n} from \"./utils\";\nimport { cn } from \"../../helpers/utils\";\nimport { Button } from \"../Button\";\nimport { CheckIcon } from \"@heroicons/react/24/outline\";\nimport { AspectRatio } from \"../AspectRatio\";\nimport { cva } from \"class-variance-authority\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\n\nconst Dialog = DialogPrimitive.Root;\n\nconst CloseDialog = () => {\n return (\n <DialogPrimitive.Close className=\"flex transition-all z-10 text-sm items-center space-x-1 absolute left-3 top-6 md:left-6 hover:bg-white/20 text-white rounded-md px-4 py-2\">\n <X className=\"h-4 w-4 mt-0.5\" />\n <div className=\"\">Đóng cửa sổ</div>\n </DialogPrimitive.Close>\n );\n};\n\nexport const DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay className=\"bg-black\" />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"h-full min-w-full border-none rounded-none z-[999] fixed left-[50%] top-[50%] grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] \",\n className\n )}\n {...props}\n >\n {children}\n <CloseDialog />\n </DialogPrimitive.Content>\n </DialogPortal>\n));\n\nconst featureVariants = cva(\n \"max-w-md space-y-1 text-gray-800 font-semibold list-inside \",\n {\n variants: {\n template: {\n col: \" flex-col flex mt-5\",\n row: \"grid grid-cols-3 items-center divide-x gap-2 mt-5 \",\n customize:\n \"grid grid-cols-2 md:grid-cols-4 gap-12 max-w-5xl mx-auto font-semibold items-center py-12 text-left text-sm\",\n },\n },\n defaultVariants: {\n template: \"col\",\n },\n }\n);\n\nexport const SectionHeroTitle = ({\n title,\n className,\n}: HeroContentTitleProps) => {\n return (\n <h1\n dangerouslySetInnerHTML={{ __html: title || \"\" }}\n className={cn(\n \"text-3xl md:text-4xl font-bold py-3 text-gray-900\",\n className\n )}\n />\n );\n};\n\nexport const SectionHeroTag = ({ tagName, className }: HeroContentTagProps) => {\n return (\n <div\n className={cn(\n \"text-pink-500 font-bold text-sm tracking-wider \",\n className\n )}\n >\n {tagName}\n </div>\n );\n};\n\nexport const SectionHeroDescription = ({\n description,\n className,\n}: HeroContentDescriptionProps) => {\n return (\n <div\n dangerouslySetInnerHTML={{ __html: description || \"\" }}\n className={cn(\"text-lg text-gray-700 pb-2\", className)}\n />\n );\n};\n\nexport const SectionHeroCTA = ({\n dataCtas,\n className,\n}: {\n dataCtas: HeroContentCTAPrimaryProps[];\n className?: string;\n}) => {\n const handleOnClickCTA = (e, onClickFC) => {\n e.preventDefault();\n e.stopPropagation();\n onClickFC?.();\n };\n\n const ButtonCTAQR = ({ cta, index }: { cta: any; index: number }) => {\n return (\n <>\n <Button\n key={index}\n onClick={(e) =>\n cta?.onClickCTA?.() && handleOnClickCTA(e, cta?.onClickCTA?.())\n }\n variant={cta?.variant}\n className={cn(\n \"md:block hidden\",\n cta?.variant !== \"primary\" && \"text-pink-500 hidden \"\n )}\n >\n {cta?.content}\n </Button>\n <Button\n key={index}\n variant={cta?.variant}\n className={cn(\n \"md:hidden\",\n cta?.variant !== \"primary\" && \"text-pink-500\"\n )}\n >\n <a href={cta?.url} target=\"_blank\" rel=\"noreferrer\">\n {cta?.content}\n </a>\n </Button>\n </>\n );\n };\n\n return (\n <div\n className={cn(\n \"flex items-center mt-10\",\n className,\n dataCtas?.length > 1 ? \"space-x-6\" : \"\"\n )}\n >\n {dataCtas?.map((cta, index) =>\n cta?.isQRCode ? (\n <ButtonCTAQR cta={cta} index={index} key={index} />\n ) : (\n <Button\n key={index}\n onClick={(e) => {\n if (!cta?.url) {\n e.stopPropagation();\n e.preventDefault();\n }\n }}\n variant={cta?.variant}\n className={cn(\"\", cta?.variant !== \"primary\" && \"text-pink-500\")}\n >\n <a href={cta?.url} target=\"_blank\" rel=\"noreferrer\">\n {cta?.content}\n </a>\n </Button>\n )\n )}\n </div>\n );\n};\n\nexport const SectionHeroItemFeature = ({\n template,\n title,\n label,\n icon,\n idx,\n}: {\n template: string;\n title: string;\n label: string;\n icon: string;\n idx: number;\n}) => {\n const renderTemplateFeature = () => {\n switch (template) {\n case \"col\":\n return (\n <li className=\"flex items-center pb-3\">\n <div className=\"bg-pink-100 p-1 rounded-full w-5 h-5 flex items-center justify-center\">\n <CheckIcon className=\"w-4 h-4 text-pink-500 \" />\n </div>\n <div className=\"ml-2\">{title}</div>\n </li>\n );\n case \"row\":\n return (\n <div className={cn(\"\", idx > 0 ? \"pl-4\" : \"\")}>\n <div className=\"font-bold text-gray-900\">{title}</div>\n <div className=\"text-sm mt-1 text-gray-500\">{label}</div>\n </div>\n );\n case \"customize\":\n return (\n <div className=\"flex items-center space-x-4\">\n <img src={icon} alt=\"\" className=\"shrink-0\" />\n <div className=\"text-gray-900 text-left\">{title}</div>\n </div>\n );\n default:\n return null;\n }\n };\n\n return <>{renderTemplateFeature()}</>;\n};\n\nexport const SectionHeroListFeature = ({\n dataFeatures,\n}: {\n dataFeatures: HeroContentListFeatureProps;\n}) => {\n return (\n <ul className={cn(\"\", featureVariants({ template: dataFeatures?.type }))}>\n {dataFeatures?.contents?.map((feature, index) => (\n <SectionHeroItemFeature\n title={feature?.title}\n template={dataFeatures?.type}\n label={feature?.label}\n icon={feature?.icon}\n key={index}\n idx={index}\n />\n ))}\n </ul>\n );\n};\n\nexport const SectionHeroVideo = ({\n type = 1,\n src,\n ratioImg,\n className,\n video,\n onClickFC = () => {},\n}: HeroContentMediaProps) => {\n return (\n <AspectRatio className={cn(\"\")} ratio={ratioImg}>\n <img\n src={src}\n className={cn(\n \"w-full h-full object-cover md:block hidden\",\n className,\n !src ? \"bg-gray-200\" : \"\"\n )}\n alt=\"\"\n />\n {type !== TYPE_MEDIA_IMAGE && video?.codeVideo && (\n <div className=\"aspect-[16/9] realtive overflow-hidden w-full\">\n <iframe\n title={video?.titleVideo}\n src={`https://www.youtube.com/embed/${video?.codeVideo}?controls=1`}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n referrerPolicy=\"strict-origin-when-cross-origin\"\n allowFullScreen\n className=\"w-full h-full object-cover md:hidden\"\n />\n </div>\n )}\n {type !== TYPE_MEDIA_IMAGE && video?.codeVideo && (\n <Dialog>\n <DialogPrimitive.Trigger onClick={onClickFC}>\n <div className=\"w-full hidden md:flex h-full cursor-pointer transition-transform group-hover:scale-105 top-0 absolute z-10 items-center justify-center\">\n <svg\n className=\"w-14 h-14\"\n viewBox=\"0 0 48 48\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g fill=\"none\" fillRule=\"evenodd\">\n <circle\n stroke=\"#FFF\"\n strokeWidth={2}\n fillOpacity=\".24\"\n fill=\"#000\"\n cx={24}\n cy={24}\n r={23}\n />\n <path\n d=\"M34.667 24.335c0 .515-.529.885-.529.885l-14.84 9.133c-1.08.704-1.965.182-1.965-1.153V15.467c0-1.338.884-1.856 1.968-1.153L34.14 23.45c-.002 0 .527.37.527.885Z\"\n fill=\"#FFF\"\n fillRule=\"nonzero\"\n />\n </g>\n </svg>\n </div>\n </DialogPrimitive.Trigger>\n <DialogContent className=\"w-full h-full flex items-center justify-center bg-gray-900 p-0\">\n <iframe\n width={738}\n height={439}\n title={video?.titleVideo}\n src={`https://www.youtube.com/embed/${video?.codeVideo}?autoplay=1`}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n referrerPolicy=\"strict-origin-when-cross-origin\"\n allowFullScreen\n className=\"\"\n />\n </DialogContent>\n </Dialog>\n )}\n </AspectRatio>\n );\n};\n\nexport const SectionHeroMedia = ({\n type = 1,\n url = \"\",\n src,\n ratioImg,\n className,\n video,\n onClickFC = () => {},\n}: HeroContentMediaProps) => {\n return (\n <div>\n {type === TYPE_MEDIA_IMAGE && !video?.codeVideo ? (\n <AspectRatio className={cn(\"\")} ratio={ratioImg}>\n <img\n src={src}\n className={cn(\n \"w-full h-full object-cover\",\n className,\n !src ? \"bg-gray-200\" : \"\"\n )}\n alt=\"\"\n />\n </AspectRatio>\n ) : (\n <SectionHeroVideo\n type={type}\n url={url}\n src={src}\n ratioImg={ratioImg}\n video={video}\n onClickFC={onClickFC}\n />\n )}\n </div>\n );\n};\n\nconst HeroContentTemplateOne = ({\n data,\n dataCtas,\n dataFeatures,\n}: {\n data: DataPropsContent;\n dataCtas: HeroContentCTAPrimaryProps[];\n dataFeatures: HeroContentListFeatureProps;\n}) => {\n return (\n <div\n className={cn(\n \"grid grid-cols-1 md:grid-cols-2 md:gap-16 gap-4 items-center\"\n )}\n >\n <div className=\"col-span-1\">\n <SectionHeroTag tagName={data?.tagName} />\n <SectionHeroTitle title={data?.title} />\n <SectionHeroDescription description={data?.description} />\n <SectionHeroListFeature dataFeatures={dataFeatures} />\n <div className=\"md:block hidden\">\n <SectionHeroCTA dataCtas={dataCtas} />\n </div>\n </div>\n <div className=\"col-span-1\">\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n video={data?.media?.video}\n />\n <div className=\"block md:hidden flex items-center justify-center\">\n <SectionHeroCTA dataCtas={dataCtas} />\n </div>\n </div>\n </div>\n );\n};\n\nconst HeroContentTemplateTwo = ({\n data,\n dataCtas,\n dataFeatures,\n}: {\n data: DataPropsContent;\n dataCtas: HeroContentCTAPrimaryProps[];\n dataFeatures: HeroContentListFeatureProps;\n}) => {\n return (\n <div className={cn(\"grid grid-cols-1 md:grid-cols-2 gap-16 items-center\")}>\n <div className=\"col-span-1\">\n <div className=\"hidden md:block\">\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n />\n </div>\n </div>\n <div className=\"col-span-1\">\n <SectionHeroTag tagName={data?.tagName} />\n <SectionHeroTitle title={data?.title} />\n <SectionHeroDescription description={data?.description} />\n <SectionHeroListFeature dataFeatures={dataFeatures} />\n <div className=\"md:hidden mt-10\">\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n />\n </div>\n <div className=\"w-full flex items-center justify-center md:justify-start\">\n <SectionHeroCTA dataCtas={dataCtas} />\n </div>\n </div>\n </div>\n );\n};\n\nconst HeroContentTemplateThree = ({\n data,\n dataCtas,\n dataFeatures,\n}: {\n data: DataPropsContent;\n dataCtas: HeroContentCTAPrimaryProps[];\n dataFeatures: HeroContentListFeatureProps;\n}) => {\n return (\n <div className={cn(\"grid grid-cols-1 md:grid-cols-2 gap-16 items-center\")}>\n <div className=\"col-span-1\">\n <SectionHeroTag tagName={data?.tagName} />\n <SectionHeroTitle title={data?.title} />\n <SectionHeroDescription description={data?.description} />\n <SectionHeroListFeature dataFeatures={dataFeatures} />\n <div className=\"hidden md:block\">\n <SectionHeroCTA dataCtas={dataCtas} />\n </div>\n </div>\n <div className=\"col-span-1\">\n <div className=\"hidden md:block\">\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n />\n </div>\n <div className=\"md:hidden\">\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n />\n </div>\n <div className=\"md:hidden block w-full flex items-center justify-center\">\n <SectionHeroCTA dataCtas={dataCtas} />\n </div>\n </div>\n </div>\n );\n};\n\nconst HeroContentTemplateFour = ({\n data,\n dataCtas,\n dataFeatures,\n}: {\n data: DataPropsContent;\n dataCtas: HeroContentCTAPrimaryProps[];\n dataFeatures: HeroContentListFeatureProps;\n}) => {\n return (\n <div className={cn(\"grid grid-cols-1 md:grid-cols-2 gap-16 items-center\")}>\n <div className=\"col-span-1\">\n <SectionHeroTag tagName={data?.tagName} />\n <SectionHeroTitle title={data?.title} />\n <SectionHeroDescription description={data?.description} />\n <SectionHeroListFeature dataFeatures={dataFeatures} />\n <div className=\"hidden md:block\">\n <SectionHeroCTA dataCtas={dataCtas} />\n </div>\n </div>\n <div className=\"col-span-1\">\n <div className=\"hidden md:block\">\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n className=\"relative overflow-hidden -bottom-20\"\n />\n </div>\n <div className=\"md:hidden\">\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n />\n </div>\n <div className=\"md:hidden block w-full flex items-center justify-center\">\n <SectionHeroCTA dataCtas={dataCtas} />\n </div>\n </div>\n </div>\n );\n};\n\nconst HeroContentTemplateFive = ({\n data,\n dataCtas,\n dataFeatures,\n}: {\n data: DataPropsContent;\n dataCtas: HeroContentCTAPrimaryProps[];\n dataFeatures: HeroContentListFeatureProps;\n}) => {\n return (\n <div>\n <SectionHeroTag\n tagName={data?.tagName}\n className=\"max-w-4xl mx-auto text-center text-base leading-7 text-pink-500 font-bold\"\n />\n <SectionHeroTitle\n title={data?.title}\n className=\"max-w-4xl mx-auto text-center font-manrope font-bold text-2xl text-gray-900 mb-5 md:text-4xl lg:text-5xl\"\n />\n <SectionHeroDescription\n description={data?.description}\n className=\"max-w-4xl mx-auto text-center text-base md:text-lg lg:text-xl font-normal leading-7 text-gray-700\"\n />\n <SectionHeroCTA\n dataCtas={dataCtas}\n className=\"w-full md:w-full inline-flex items-center justify-center text-base font-semibold text-center \"\n />\n <SectionHeroListFeature dataFeatures={dataFeatures} />\n <SectionHeroMedia\n type={data?.media?.type || 1}\n url={data?.media?.url || \"\"}\n src={data?.media?.src || \"\"}\n ratioImg={data?.media?.ratioImg}\n className=\"rounded-lg\"\n />\n </div>\n );\n};\n\nconst renderTemplate = ({\n template,\n data,\n dataCtas,\n dataFeatures,\n}: {\n template: 1 | 2 | 3 | 4 | 5;\n data: DataPropsContent;\n dataCtas: HeroContentCTAPrimaryProps[];\n dataFeatures: HeroContentListFeatureProps;\n}) => {\n switch (template) {\n case 1:\n return (\n <HeroContentTemplateOne\n data={data}\n dataCtas={dataCtas}\n dataFeatures={dataFeatures}\n />\n );\n case 2:\n return (\n <HeroContentTemplateTwo\n data={data}\n dataCtas={dataCtas}\n dataFeatures={dataFeatures}\n />\n );\n case 3:\n return (\n <HeroContentTemplateThree\n data={data}\n dataCtas={dataCtas}\n dataFeatures={dataFeatures}\n />\n );\n case 4:\n return (\n <HeroContentTemplateFour\n data={data}\n dataCtas={dataCtas}\n dataFeatures={dataFeatures}\n />\n );\n case 5:\n return (\n <HeroContentTemplateFive\n data={data}\n dataCtas={dataCtas}\n dataFeatures={dataFeatures}\n />\n );\n default:\n return null;\n }\n};\n\nconst SectionHeroContent = ({ template, data, dataCtas, dataFeatures }) => {\n return <>{renderTemplate({ template, data, dataCtas, dataFeatures })}</>;\n};\n\nexport const HeroSection = forwardRef<HTMLDivElement, HeroContentProps>(\n ({ template = 1, className, data, dataCtas, dataFeatures }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\" bg-section-hero overflow-hidden py-20\", className)}\n >\n <div className=\"wrapper relative\">\n <SectionHeroContent\n dataCtas={dataCtas || DUMMY_NONE_DATA_CTAS}\n template={template}\n data={data || DUMMY_NONE_DATA}\n dataFeatures={dataFeatures || DUMMY_NONE_DATA_FEATURS}\n />\n </div>\n <style>\n {`\n .bg-section-hero {\n background: var(\n --gradient-pink-1,\n linear-gradient(\n 38deg,\n rgba(255, 255, 255, 0) 78%,\n rgba(255, 255, 255, 0.69) 100%\n ),\n linear-gradient(45deg, #fff 10%, rgba(255, 255, 255, 0) 22%),\n linear-gradient(0deg, #fff 0%, rgba(255, 255, 255, 0) 91%),\n linear-gradient(\n 214deg,\n rgba(255, 255, 255, 0) 0%,\n rgba(255, 91, 189, 0.2) 25%,\n rgba(255, 255, 255, 0) 71%\n ),\n linear-gradient(\n 212deg,\n rgba(255, 255, 255, 0) 51%,\n rgba(255, 196, 233, 0.7) 64%,\n rgba(255, 255, 255, 0) 80%\n ),\n #fff\n );\n }\n `}\n </style>\n </div>\n );\n }\n);\n","import { VariantProps } from \"class-variance-authority\";\nimport { buttonVariants } from \"../Button\";\n\nexport const TYPE_MEDIA_IMAGE = 1;\nexport const TYPE_MEDIA_VIDEO = 2;\n\nexport const DUMMY_NONE_DATA = {\n tagName: \"DUMMY TAG\",\n title: \"Lorem ipsum, dolor sit amet consectetur adipisicing elit. \",\n description:\n \"Lorem ipsum, dolor sit amet consectetur adipisicing elit. Maxime minima amet porro.nam asperiores omnis labore doloribus excepturi?\",\n media: {\n type: 1,\n src: \"https://homepage.momocdn.net/img/momo-upload-api-240522112100-638519736605993862.jpg\",\n ratioImg: 1 / 1,\n },\n};\n\nexport const DUMMY_NONE_DATA_CTAS = [\n { variant: \"primary\", content: \"Button Primary\", url: \"\" },\n { variant: \"transparent\", content: \"Button Text\", url: \"\" },\n];\n\nexport const DUMMY_NONE_DATA_FEATURS: HeroContentListFeatureProps = {\n type: \"col\",\n contents: [\n {\n title: \"Lorem ipsum, dolor sit amet consectetur adipisicing elit\",\n label: \"\",\n icon: \"\",\n },\n {\n title: \"Lorem ipsum, dolor sit amet consectetur adipisicing elit\",\n label: \"\",\n icon: \"\",\n },\n {\n title: \"Lorem ipsum, dolor sit amet consectetur adipisicing elit\",\n label: \"\",\n icon: \"\",\n },\n {\n title: \"Lorem ipsum, dolor sit amet consectetur adipisicing elit\",\n label: \"\",\n icon: \"\",\n },\n ],\n};\n\ninterface HeroContentProps {\n template?: 1 | 2 | 3 | 4 | 5 | string;\n className?: string;\n data?: DataPropsContent;\n dataCtas?: HeroContentCTAPrimaryProps[];\n dataFeatures?: HeroContentListFeatureProps;\n}\n\ninterface DataPropsContent {\n title: string;\n description?: string;\n tagName?: string;\n listFeature?: string[];\n media?: HeroContentMediaProps;\n}\n\ninterface HeroContentTitleProps {\n title?: string;\n className?: string;\n}\n\ninterface HeroContentDescriptionProps {\n description?: string;\n className?: string;\n}\n\ninterface HeroContentCTAPrimaryProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n className?: string;\n asChild?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n variant?:\n | \"primary\"\n | \"secondary\"\n | \"outline\"\n | \"tonal\"\n | \"danger\"\n | \"transparent\"\n | any\n url?: string;\n content?: string;\n onClickCTA?: () => void;\n isQRCode?: boolean;\n}\n\ninterface HeroContentListFeatureProps {\n contents: { title: string; label: string; icon: string }[];\n type: \"row\" | \"col\" | \"customize\" | any;\n}\n// TODO : 1 - Image | 2 - Video\ninterface HeroContentMediaProps {\n type: 1 | 2 | number;\n url?: string;\n src: string;\n ratioImg?: number;\n onClickFC?: () => void;\n className?: string;\n video?: { codeVideo: string; titleVideo: string };\n}\n\ninterface HeroContentTagProps {\n tagName?: string;\n className?: string;\n}\n\nexport type {\n HeroContentProps,\n HeroContentTitleProps,\n HeroContentDescriptionProps,\n HeroContentListFeatureProps,\n HeroContentCTAPrimaryProps,\n HeroContentMediaProps,\n HeroContentTagProps,\n DataPropsContent,\n};\n","import * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\n \nconst AspectRatio = AspectRatioPrimitive.Root\n \nexport { AspectRatio }\n","import * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\n\nimport { cn } from \"../../helpers/utils\";\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n props?.disabled && \"opacity-40\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-gray-200\">\n <SliderPrimitive.Range className=\"absolute h-full bg-pink-500\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"hover:cursor-grabbing\t block h-5 w-5 rounded-full border-2 border-pink-500 bg-white ring-offset-bg-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n <SliderPrimitive.Thumb className=\"hover:cursor-grabbing\t block h-5 w-5 rounded-full border-2 border-pink-500 bg-white ring-offset-bg-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/**\n * This Tailwind plugin is based and inspired on \"tw-colors\" and \"NextUI\".\n *\n * @see https://github.com/L-Blondy/tw-colors\n * @see https://github.com/nextui-org/nextui\n */\n\nimport Color from \"color\";\nimport plugin from \"tailwindcss/plugin.js\";\nimport { utilities } from \"./utilities\";\nimport { flattenThemeObject } from \"./utils/object\";\nimport { generateSpacingScale } from \"./utils/theme\";\nimport { colors as listColors } from \"./colors\";\nimport { layout } from \"./layout\";\n\nimport { animations } from \"./animations\";\nimport { fontSizes } from \"./font-sizes\";\n\nimport { radius } from \"./radius\";\n\n// import { animations } from \"./animations\";\n// import { fontSizes } from \"./font-sizes\";\n\n// import { radius } from \"./radius\";\n\nconst resolveConfig = (prefix: string) => {\n const resolved = {\n utilities: {},\n colors: {},\n };\n\n const flatColors = flattenThemeObject(listColors);\n\n const flatLayout = layout;\n\n const cssSelector = \":root\";\n\n resolved.utilities[cssSelector] = {};\n // Color\n Object.entries(flatColors).forEach(([colorName, colorValue]) => {\n if (!colorValue) return;\n try {\n const [r, g, b] = Color(colorValue).rgb().array();\n const colorVar = `--${prefix}-${colorName}`;\n // Set the css variable in \"@layer utilities\"\n resolved.utilities[cssSelector]![colorVar] = `${r} ${g} ${b}`;\n resolved.colors[colorName] = `rgb(var(${colorVar}) / <alpha-value>)`;\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.log(\"error\", error?.message);\n }\n });\n // Layout\n\n Object.entries(flatLayout).forEach(([key, value]) => {\n if (!value) return;\n const layoutVariablePrefix = `--${prefix}-${key}`;\n\n if (typeof value === \"object\") {\n Object.entries(value).forEach(([nestedKey, nestedValue]) => {\n const nestedLayoutVariable = `${layoutVariablePrefix}-${nestedKey}`;\n resolved.utilities[cssSelector]![nestedLayoutVariable] = nestedValue;\n });\n } else if (key === \"spacing-unit\") {\n resolved.utilities[cssSelector]![layoutVariablePrefix] = value;\n const spacingScale = generateSpacingScale(Number(value));\n Object.entries(spacingScale).forEach(([scaleKey, scaleValue]) => {\n const spacingVariable = `${layoutVariablePrefix}-${scaleKey}`;\n resolved.utilities[cssSelector]![spacingVariable] = scaleValue;\n });\n } else {\n const formattedValue =\n layoutVariablePrefix.includes(\"opacity\") && typeof value === \"number\"\n ? value.toString().replace(/^0\\./, \".\")\n : value;\n resolved.utilities[cssSelector]![layoutVariablePrefix] = formattedValue;\n }\n });\n\n return resolved;\n};\nexport const mobaseTW = () => {\n const prefix = \"mobase\";\n const resolved = resolveConfig(prefix);\n return plugin(\n ({ addBase, addUtilities, addComponents }) => {\n addComponents({\n \".wrapper\": {\n maxWidth: \"72rem\",\n paddingLeft: \"1.25rem\",\n paddingRight: \"1.25rem\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n \"@media (min-width: 768px)\": {\n paddingLeft: \"2rem\",\n paddingRight: \"2rem\",\n },\n },\n });\n addBase({\n \":root\": {\n \"font-smooth--webkit\": \"antialiased\",\n },\n ...resolved?.utilities, // Xem lai cho nay, addBase\n });\n addUtilities({\n // ...resolved?.utilities, //Xem lai cho nay, addBase\n ...utilities,\n });\n },\n // Extend the Tailwind config\n {\n theme: {\n container: {\n center: true,\n },\n screens: {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n },\n aspectRatio: {\n auto: \"auto\",\n square: \"1 / 1\",\n video: \"16 / 9\",\n 1: \"1\",\n 2: \"2\",\n 3: \"3\",\n 4: \"4\",\n 5: \"5\",\n 6: \"6\",\n 7: \"7\",\n 8: \"8\",\n 9: \"9\",\n 10: \"10\",\n 11: \"11\",\n 12: \"12\",\n 13: \"13\",\n 14: \"14\",\n 15: \"15\",\n 16: \"16\",\n },\n extend: {\n fontFamily: {\n sans: [\n \"-apple-system\",\n \"BlinkMacSystemFont\",\n \"Segoe UI\",\n \"Helvetica\",\n \"Arial\",\n \"sans-serif\",\n \"Apple Color Emoji\",\n \"Segoe UI Emoji\",\n \"Segoe UI Symbol\",\n ],\n mono: [\n \"SFMono-Regular\",\n \"Consolas\",\n \"Liberation Mono\",\n \"Menlo\",\n \"monospace\",\n ],\n },\n colors: {\n ...listColors,\n ...resolved?.colors,\n border: \"rgba(var(--border))\",\n },\n boxShadow: {\n small: `var(--${prefix}-box-shadow-small)`,\n medium: `var(--${prefix}-box-shadow-medium)`,\n large: `var(--${prefix}-box-shadow-large)`,\n },\n zIndex: {\n negative: `var(--${prefix}-z-index-negative)`,\n workbench: `var(--${prefix}-z-index-workbench)`,\n default: `var(--${prefix}-z-index-default)`,\n \"workbench-header\": `var(--${prefix}-z-index-workbench-header)`,\n modal: `var(--${prefix}-z-index-modal)`,\n \"modal-content\": `var(--${prefix}-z-index-modal-content)`,\n dropdown: `var(--${prefix}-z-index-dropdown)`,\n tooltip: `var(--${prefix}-z-index-tooltip)`,\n notification: `var(--${prefix}-z-index-notification)`,\n },\n borderRadius: {\n ...radius(prefix),\n },\n fontSize: {\n ...fontSizes(prefix),\n },\n // spacing: {\n // unit: `var(--${prefix}-spacing-unit)`,\n // ...createSpacingUnits(prefix),\n // },\n ...animations,\n },\n },\n },\n );\n};\n","const DEFAULT_TRANSITION_DURATION = \"250ms\";\n\nexport default {\n /**\n * Transition utilities\n */\n \".transition-all\": {\n \"transition-property\": \"all\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-background\": {\n \"transition-property\": \"background\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition\": {\n \"transition-property\":\n \"color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-colors\": {\n \"transition-property\":\n \"color, background-color, border-color, text-decoration-color, fill, stroke\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-opacity\": {\n \"transition-property\": \"opacity\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-colors-opacity\": {\n \"transition-property\":\n \"color, background-color, border-color, text-decoration-color, fill, stroke, opacity\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-width\": {\n \"transition-property\": \"width\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-height\": {\n \"transition-property\": \"height\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-size\": {\n \"transition-property\": \"width, height\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-left\": {\n \"transition-property\": \"left\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-shadow\": {\n \"transition-property\": \"box-shadow\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-transform\": {\n \"transition-property\": \"transform\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-transform-opacity\": {\n \"transition-property\": \"transform, opacity\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-transform-background\": {\n \"transition-property\": \"transform, background\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-transform-colors\": {\n \" transition-property\":\n \"transform, color, background, background-color, border-color, text-decoration-color, fill, stroke\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n \".transition-transform-colors-opacity\": {\n \" transition-property\":\n \"transform, color, background, background-color, border-color, text-decoration-color, fill, stroke, opacity\",\n \"transition-timing-function\": \"ease\",\n \"transition-duration\": DEFAULT_TRANSITION_DURATION,\n },\n};\n","export default {\n /**\n * Custom utilities\n */\n \".leading-inherit\": {\n \"line-height\": \"inherit\",\n },\n \".bg-img-inherit\": {\n \"background-image\": \"inherit\",\n },\n \".bg-clip-inherit\": {\n \"background-clip\": \"inherit\",\n },\n \".text-fill-inherit\": {\n \"-webkit-text-fill-color\": \"inherit\",\n },\n \".tap-highlight-transparent\": {\n \"-webkit-tap-highlight-color\": \"transparent\",\n },\n \"*\": {\n \"border-color\": \"rgb(var(--mobase-gray-300))\",\n },\n};\n","/**\n * Credits to: https://github.com/reslear/tailwind-scrollbar-hide/tree/main\n */\n\nexport default {\n /**\n * Scroll Hide\n */\n \".scrollbar-hide\": {\n /* IE and Edge */\n \"-ms-overflow-style\": \"none\",\n /* Firefox */\n \"scrollbar-width\": \"none\",\n /* Safari and Chrome */\n \"&::-webkit-scrollbar\": {\n display: \"none\",\n },\n },\n \".scrollbar-default\": {\n /* IE and Edge */\n \"-ms-overflow-style\": \"auto\",\n /* Firefox */\n \"scrollbar-width\": \"auto\",\n /* Safari and Chrome */\n \"&::-webkit-scrollbar\": {\n display: \"block\",\n },\n },\n};\n","import transition from \"./transition\";\nimport custom from \"./custom\";\nimport scrollbarHide from \"./scrollbar-hide\";\n\nexport const utilities = {\n ...custom,\n ...transition,\n ...scrollbarHide,\n};\n","import { flatten } from 'flat'\nexport function swapColorValues<T extends Object>(colors: T) {\n const swappedColors = {};\n const keys = Object.keys(colors);\n const length = keys.length;\n\n for (let i = 0; i < length / 2; i++) {\n const key1 = keys[i];\n const key2 = keys[length - 1 - i];\n\n // @ts-ignore\n swappedColors[key1] = colors[key2];\n // @ts-ignore\n swappedColors[key2] = colors[key1];\n }\n if (length % 2 !== 0) {\n const middleKey = keys[Math.floor(length / 2)];\n\n // @ts-ignore\n swappedColors[middleKey] = colors[middleKey];\n }\n\n return swappedColors;\n}\n\nexport function removeDefaultKeys<T extends Object>(obj: T) {\n const newObj = {};\n\n for (const key in obj) {\n if (key.endsWith(\"-DEFAULT\")) {\n // @ts-ignore\n newObj[key.replace(\"-DEFAULT\", \"\")] = obj[key];\n continue;\n }\n // @ts-ignore\n newObj[key] = obj[key];\n }\n\n return newObj;\n}\n\n/**\n *\n * Flatten theme object and remove default keys\n *\n * @param obj theme object\n * @returns object with flattened keys\n */\n\nexport const flattenThemeObject = <TTarget>(obj: TTarget) =>\n removeDefaultKeys(\n flatten(obj, {\n safe: true,\n delimiter: \"-\",\n }) as Object\n );\n","import { spacingScaleKeys, SpacingScaleKeys, SpacingScale } from \"../types\";\n\n/**\n * Determines if the theme is a base theme\n *\n * @param theme string\n * @returns \"light\" | \"dark\n */\n\nconst ROOT_FONT_SIZE = 16;\nconst baseScale = [\n 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18,\n];\nconst extendedScale = [\n 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 72, 80, 96,\n];\n\nexport const generateSpacingScale = (spacingUnit: number) => {\n const scaleLabels: Partial<Record<SpacingScaleKeys, number>> = {\n xs: 2,\n sm: 3,\n md: 4,\n lg: 5.5,\n xl: 9,\n \"2xl\": 12,\n \"3xl\": 20,\n \"4xl\": 30,\n \"5xl\": 56,\n \"6xl\": 72,\n \"7xl\": 96,\n \"8xl\": 128,\n \"9xl\": 160,\n };\n\n const scale = { 0: \"0px\" } as SpacingScale;\n\n Object.entries(scaleLabels).forEach(([label, multiplier]) => {\n scale[label as SpacingScaleKeys] = multiplier\n ? `${(spacingUnit * multiplier) / ROOT_FONT_SIZE}rem`\n : `${spacingUnit / ROOT_FONT_SIZE}rem`;\n });\n\n baseScale.forEach((i) => {\n let key = `${i}` as SpacingScaleKeys;\n\n // if the key has decimal e.g 3.5 change it to \"3-5\" format\n if (key.includes(\".\")) {\n const [first, second] = key.split(\".\");\n\n key = `${first}_${second}`;\n }\n\n scale[key] = `${(spacingUnit * i) / ROOT_FONT_SIZE}rem`;\n });\n\n extendedScale.forEach((i) => {\n const key = `${i}` as SpacingScaleKeys;\n\n scale[key] = `${(spacingUnit * i) / ROOT_FONT_SIZE}rem`;\n });\n\n return scale;\n};\n\nexport function createSpacingUnits(prefix: string) {\n const result = spacingScaleKeys.reduce((acc, key) => {\n let value = `var(--${prefix}-spacing-unit-${key})`;\n\n if (key.includes(\".\")) {\n const [first, second] = key.split(\".\");\n\n value = `var(--${prefix}-spacing-unit-${first}_${second})`;\n }\n\n return {\n ...acc,\n [`${key}`]: value,\n };\n }, {});\n\n return result as Record<SpacingScaleKeys, string>;\n}\n","export const blue = {\n 50: \"#eef8ff\",\n 100: \"#d9eeff\",\n 200: \"#bce1ff\",\n 300: \"#8ed0ff\",\n 400: \"#59b4ff\",\n 500: \"#429cff\",\n 600: \"#1b74f5\",\n 700: \"#145ee1\",\n 800: \"#174bb6\",\n 900: \"#19428f\",\n DEFAULT: \"#429cff\",\n};\n","export const green = {\n 50: \"#f1fcf3\",\n 100: \"#dff9e5\",\n 200: \"#c0f2cc\",\n 300: \"#8fe6a4\",\n 400: \"#57d175\",\n 500: \"#34c759\",\n 600: \"#22973f\",\n 700: \"#1e7735\",\n 800: \"#1d5e2e\",\n 900: \"#194e28\",\n DEFAULT: \"#34c759\",\n};\n","export const pink = {\n 50: \"#fef1f9\",\n 100: \"#fee5f6\",\n 200: \"#fecced\",\n 300: \"#ffa2df\",\n 400: \"#fe68c6\",\n 500: \"#EB2F96\",\n 600: \"#D42A87\",\n 700: \"#CB0B6F\",\n 800: \"#A70D5B\",\n 900: \"#8B104E\",\n DEFAULT: \"#EB2F96\",\n};\n","export const purple = {\n 50: \"#faf5ff\",\n 100: \"#f4e9fe\",\n 200: \"#ead6fe\",\n 300: \"#dab6fc\",\n 400: \"#c487f9\",\n 500: \"#ab55f3\",\n 600: \"#9937e6\",\n 700: \"#8326ca\",\n 800: \"#6f24a5\",\n 900: \"#5b1e85\",\n DEFAULT: \"#ab55f3\",\n};\n","export const red = {\n 50: \"#fff1f2\",\n 100: \"#ffe1e3\",\n 200: \"#ffc8cb\",\n 300: \"#ffa1a6\",\n 400: \"#fe6b73\",\n 500: \"#f74e57\",\n 600: \"#e41e29\",\n 700: \"#c0151e\",\n 800: \"#9e161d\",\n 900: \"#83191f\",\n DEFAULT: \"#f74e57\",\n};\n","export const yellow = {\n 50: \"#fffee7\",\n 100: \"#fffec1\",\n 200: \"#fff886\",\n 300: \"#ffec41\",\n 400: \"#ffdb0d\",\n 500: \"#ffcc00\",\n 600: \"#d19500\",\n 700: \"#a66a02\",\n 800: \"#89530a\",\n 900: \"#74430f\",\n DEFAULT: \"#ffcc00\",\n};\n","export const orange = {\n 50: \"#fff4ed\",\n 100: \"#ffe6d5\",\n 200: \"#fecaaa\",\n 300: \"#fea473\",\n 400: \"#fc743b\",\n 500: \"#fa541c\",\n 600: \"#eb350b\",\n 700: \"#c3240b\",\n 800: \"#9b1e11\",\n 900: \"#7c1c12\",\n DEFAULT: \"#fa541c\",\n};\n","export const gray = {\n 50: \"#FAFAFA\",\n 100: \"#F5F5F5\",\n 200: \"#E5E5E5\",\n 300: \"#D4D4D4\",\n 400: \"#A3A3A3\",\n 500: \"#737373\",\n 600: \"#525252\",\n 700: \"#404040\",\n 800: \"#262626\",\n 900: \"#171717\",\n DEFAULT: \"#737373\",\n};\n","import { blue } from \"./blue\";\nimport { green } from \"./green\";\nimport { pink } from \"./pink\";\nimport { purple } from \"./purple\";\nimport { red } from \"./red\";\nimport { yellow } from \"./yellow\";\nimport { orange } from \"./orange\";\nimport { gray } from \"./gray\";\n\nexport const commonColors = {\n white: \"#ffffff\",\n black: \"#000000\",\n blue,\n green,\n pink,\n purple,\n red,\n yellow,\n gray,\n orange,\n};\n\nexport type CommonColors = typeof commonColors;\n","import { commonColors } from \"./common\";\n\nconst colors = {\n ...commonColors,\n};\n\nexport { colors, commonColors };\n","export const layout = {\n \"spacing-unit\": 4,\n \"disabled-opacity\": 0.5, // Numeric values don't need quotes\n \"font-size\": {\n xxs: \"0.625rem\",\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n },\n radius: {\n sm: \"0.125rem\",\n base: \"0.25rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n \"2xl\": \"1rem\",\n \"3xl\": \"1.5rem\",\n },\n \"z-index\": {\n negative: \"-1\",\n workbench: \"0\",\n default: \"1\",\n \"workbench-header\": \"10\",\n modal: \"100\",\n \"modal-content\": \"101\",\n dropdown: \"1000\",\n tooltip: \"10000\",\n notification: \"100000\",\n },\n \"box-shadow\": {\n small:\n \"0px 0px 5px 0px rgb(0 0 0 / 0.02), 0px 2px 10px 0px rgb(0 0 0 / 0.06), 0px 0px 1px 0px rgb(0 0 0 / 0.3)\",\n medium:\n \"0px 0px 15px 0px rgb(0 0 0 / 0.03), 0px 2px 30px 0px rgb(0 0 0 / 0.08), 0px 0px 1px 0px rgb(0 0 0 / 0.3)\",\n large:\n \"0px 0px 30px 0px rgb(0 0 0 / 0.04), 0px 30px 60px 0px rgb(0 0 0 / 0.12), 0px 0px 1px 0px rgb(0 0 0 / 0.3)\",\n },\n};\n","export const animations = {\n animation: {\n \"accordion-down\": \"accordion-down 0.2s ease-out\",\n \"accordion-up\": \"accordion-up 0.2s ease-out\",\n \"spin-loading\": \"spin 1s steps(12, end) infinite\",\n \"fade-in\": \"fade-in 250ms cubic-bezier(0.25, 0.46, 0.45, 0.94) both\",\n },\n keyframes: {\n \"accordion-down\": {\n from: { height: \"0\" },\n to: { height: \"var(--radix-accordion-content-height)\" },\n },\n \"accordion-up\": {\n from: { height: \"var(--radix-accordion-content-height)\" },\n to: { height: \"0\" },\n },\n \"fade-in\": {\n \"0%\": { opacity: \"0\" },\n \"100%\": { opacity: \"1\" },\n },\n },\n};\n","type FontSizeValue = [\n fontSize: string,\n configuration: {\n lineHeight?: string;\n letterSpacing?: string;\n fontWeight?: string;\n },\n];\n\nexport type FontSizes = Record<string, FontSizeValue>;\nexport function fontSizes(prefix:string) {\n const fontSizes = {\n xxs: [\n `var(--${prefix}-font-size-xxs)`,\n {\n lineHeight: \"1rem\",\n },\n ],\n xs: [\n `var(--${prefix}-font-size-xs)`,\n {\n lineHeight: \"1rem\",\n },\n ],\n sm: [\n `var(--${prefix}-font-size-sm)`,\n {\n lineHeight: \"1.25rem\",\n },\n ],\n base: [\n `var(--${prefix}-font-size-base)`,\n {\n lineHeight: \"1.5rem\",\n },\n ],\n lg: [\n `var(--${prefix}-font-size-lg)`,\n {\n lineHeight: \"1.75rem\",\n },\n ],\n xl: [\n `var(--${prefix}-font-size-xl)`,\n {\n lineHeight: \"1.75rem\",\n },\n ],\n \"2xl\": [\n `var(--${prefix}-font-size-2xl)`,\n {\n lineHeight: \"2rem\",\n },\n ],\n \"3xl\": [\n `var(--${prefix}-font-size-3xl)`,\n {\n lineHeight: \"2.25rem\",\n },\n ],\n \"4xl\": [\n `var(--${prefix}-font-size-4xl)`,\n {\n lineHeight: \"2.5rem\",\n },\n ],\n \"5xl\": [\n `var(--${prefix}-font-size-5xl)`,\n {\n lineHeight: \"3.5rem\",\n letterSpacing: \"-0.075rem\",\n },\n ],\n \"6xl\": [\n `var(--${prefix}-font-size-6xl)`,\n {\n lineHeight: \"4.5rem\",\n letterSpacing: \"-0.09375rem\",\n },\n ],\n \"7xl\": [\n `var(--${prefix}-font-size-7xl)`,\n {\n lineHeight: \"5rem\",\n letterSpacing: \"-0.1125rem\",\n },\n ],\n \"8xl\": [\n `var(--${prefix}-font-size-8xl)`,\n {\n lineHeight: \"6.5rem\",\n letterSpacing: \"-0.15rem\",\n },\n ],\n \"9xl\": [\n `var(--${prefix}-font-size-9xl)`,\n {\n lineHeight: \"8rem\",\n letterSpacing: \"-0.2rem\",\n },\n ],\n } satisfies FontSizes;\n\n return fontSizes\n}\n","export function radius(prefix: string) {\n const radiusV = {\n sm: `var(--${prefix}-radius-sm)`,\n DEFAULT: `var(--${prefix}-radius-base)`,\n md: `var(--${prefix}-radius-md)`,\n lg: `var(--${prefix}-radius-lg)`,\n xl: `var(--${prefix}-radius-xl)`,\n \"2xl\": `var(--${prefix}-radius-2xl)`,\n \"3xl\": `var(--${prefix}-radius-3xl)`,\n };\n return radiusV;\n}\n\n","export const SiteMeta = (\n <>\n <meta\n name=\"abstract\"\n content=\"Ví điện tử MoMo - Siêu ứng dụng thanh toán số 1 Việt Nam\"\n />\n <meta name=\"distribution\" content=\"Global\" />\n <meta name=\"author\" content=\"Ví MoMo\" />\n\n <meta property=\"fb:app_id\" content=\"320653355376196\" />\n <meta property=\"fb:pages\" content=\"138010322921640\" />\n\n <link rel=\"shortcut icon\" href=\"/favicon.ico\" />\n\n <link\n href=\"https://www.momo.vn/favicon-32x32.png\"\n rel=\"icon\"\n sizes=\"32x32\"\n type=\"image/png\"\n />\n\n <link\n href=\"https://www.momo.vn/favicon-16x16.png\"\n rel=\"icon\"\n sizes=\"16x16\"\n type=\"image/png\"\n />\n\n <link\n href=\"https://www.momo.vn/apple-touch-icon.png\"\n rel=\"apple-touch-icon\"\n sizes=\"180x180\"\n />\n\n <meta name=\"language\" content=\"vietnamese\" />\n <meta name=\"copyright\" content=\"Copyright © 2019 by MOMO.VN\" />\n <meta name=\"REVISIT-AFTER\" content=\"1 DAYS\" />\n <meta name=\"RATING\" content=\"GENERAL\" />\n <meta httpEquiv=\"x-dns-prefetch-control\" content=\"on\" />\n <link rel=\"dns-prefetch\" href=\"//www.google-analytics.com\" />\n <link rel=\"dns-prefetch\" href=\"//connect.facebook.net\" />\n <link rel=\"dns-prefetch\" href=\"//www.googletagservices.com\" />\n <link rel=\"dns-prefetch\" href=\"//www.googletagmanager.com\" />\n <link rel=\"dns-prefetch\" href=\"//facebook.com\" />\n <link rel=\"dns-prefetch\" href=\"//homepage.momocdn.net\" />\n <link rel=\"dns-prefetch\" href=\"//www.google.com\" />\n <link rel=\"dns-prefetch\" href=\"//www.google.com.vn\" />\n <link rel=\"dns-prefetch\" href=\"//www.googleadservices.com\" />\n <link rel=\"preconnect\" href=\"//connect.facebook.net\" />\n <link rel=\"preconnect\" href=\"//www.googletagmanager.com\" />\n <link rel=\"preconnect\" href=\"//www.google-analytics.com\" />\n <link rel=\"preconnect\" href=\"//googleads.g.doubleclick.net\" />\n <link rel=\"preconnect\" href=\"//homepage.momocdn.net\" />\n <link rel=\"preconnect\" href=\"//www.google.com\" />\n <link rel=\"preconnect\" href=\"//www.google.com.vn\" />\n <link rel=\"preconnect\" href=\"//www.googleadservices.com\" />\n\n <script\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: `{\n \"@context\": \"https://schema.org/\",\n \"@type\": \"WebSite\",\n \"@id\":\"https://www.momo.vn/#website\",\n \"name\": \"Ví MoMo\",\n \"url\": \"https://www.momo.vn\",\n \"potentialAction\": {\n \"@type\": \"SearchAction\",\n \"target\": \"https://www.momo.vn/tim-kiem?q={search_term_string}\",\n \"query-input\": \"required name=search_term_string\"\n }}`,\n }}\n />\n <script\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: `{\n \"@context\": \"https://schema.org\",\n \"@type\": \"Organization\",\n \"name\": \"Siêu ứng dụng MoMo\",\n \"alternateName\": \"Siêu ứng dụng MoMo - Siêu Ứng Dụng Thanh Toán số 1 Việt Nam\",\n \"legalName\": \"ONLINE MOBILE SERVICES JSC (M_Service)\",\n \"url\": \"https://www.momo.vn\",\n \"logo\": \"https://homepage.momocdn.net/img/logo-momo.png\",\n \"foundingDate\": \"2007\",\n \"founders\": [\n {\n \"@type\": \"Person\",\n \"name\": \"Nguyễn Mạnh Tường\"\n }\n ],\n \"address\":{\n \"@type\": \"PostalAddress\",\n \"streetAddress\": \"Lầu 6, Toà nhà Phú Mỹ Hưng, số 8 Hoàng Văn Thái, khu phố 1, Phường Tân Phú, Quận 7, Thành phố Hồ Chí Minh\",\n \"addressLocality\": \"Hồ Chí Minh\",\n \"addressRegion\": \"VN\",\n \"postalCode\": \"700000\",\n \"addressCountry\": \"VN\"\n },\n \"contactPoint\":{\n \"@type\": \"ContactPoint\",\n \"contactType\": \"customer support\",\n \"telephone\": \"1900545441\",\n \"email\": \"hotro@momo.vn\"\n },\n \"sameAs\": [\n \"https://www.facebook.com/vimomo/\",\n \"https://www.youtube.com/channel/UCKHHW-qL2JoZqcSNm1jPlqw\",\n \"https://www.linkedin.com/company/momo-mservice/\",\n \"https://github.com/momo-wallet\"\n ]\n }`,\n }}\n />\n </>\n);\n"],"mappings":"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AW,CACT,iBAAkB,CAChB,KAAM,CAAE,OAAQ,GAAI,EACpB,GAAI,CAAE,OAAQ,uCAAwC,CACxD,EACA,eAAgB,CACd,KAAM,CAAE,OAAQ,uCAAwC,EACxD,GAAI,CAAE,OAAQ,GAAI,CACpB,EACA,UAAW,CACT,KAAM,CAAE,QAAS,GAAI,EACrB,OAAQ,CAAE,QAAS,GAAI,CACzB,CACF,CACF,ECXO,SAASC,GAAUC,EAAe,CA6FvC,MA5FkB,CAChB,IAAK,CACH,SAASA,CAAM,kBACf,CACE,WAAY,MACd,CACF,EACA,GAAI,CACF,SAASA,CAAM,iBACf,CACE,WAAY,MACd,CACF,EACA,GAAI,CACF,SAASA,CAAM,iBACf,CACE,WAAY,SACd,CACF,EACA,KAAM,CACJ,SAASA,CAAM,mBACf,CACE,WAAY,QACd,CACF,EACA,GAAI,CACF,SAASA,CAAM,iBACf,CACE,WAAY,SACd,CACF,EACA,GAAI,CACF,SAASA,CAAM,iBACf,CACE,WAAY,SACd,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,MACd,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,SACd,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,QACd,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,SACZ,cAAe,WACjB,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,SACZ,cAAe,aACjB,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,OACZ,cAAe,YACjB,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,SACZ,cAAe,UACjB,CACF,EACA,MAAO,CACL,SAASA,CAAM,kBACf,CACE,WAAY,OACZ,cAAe,SACjB,CACF,CACF,CAGF,CCxGO,SAASC,GAAOC,EAAgB,CAUrC,MATgB,CACd,GAAI,SAASA,CAAM,cACnB,QAAS,SAASA,CAAM,gBACxB,GAAI,SAASA,CAAM,cACnB,GAAI,SAASA,CAAM,cACnB,GAAI,SAASA,CAAM,cA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","names":["src_exports","__export","Accordion","AccordionContent","AccordionItem","AccordionTrigger","ActionButton","AlertDialog","AlertDialogAction","AlertDialogCancel","AlertDialogContent","AlertDialogDescription","AlertDialogFooter","AlertDialogHeader","AlertDialogOverlay","AlertDialogPortal","AlertDialogTitle","AlertDialogTrigger","AspectRatio","Badge","Breadcrumb","BreadcrumbEllipsis","BreadcrumbItem","BreadcrumbLink","BreadcrumbList","BreadcrumbPage","BreadcrumbSeparator","Button","Calendar","Callout","Card","CardContent","CardDescription","CardFooter","CardHeader","CardTitle","Checkbox","ChoiceboxGroup","ChoiceboxGroupItem","ChoiceboxMultiItem","Combobox","ComboboxContent","ComboboxTrigger","Command","CommandDialog","CommandEmpty","CommandGroup","CommandInput","CommandItem","CommandList","CommandSeparator","CommandShortcut","DatePicker","Dialog","DialogBody","DialogClose","DialogContent","DialogDescription","DialogFooter","DialogHeader","DialogOverlay","DialogPortal","DialogQr","DialogTitle","DialogTrigger","Footer","HeaderNavigation","Heading","HeadingGroup","HeadingSub","HeadingTagline","HeroSection","IconButton","LightBoxContent","LightboxGallery","LightboxThumbnail","NavigationMenu","NavigationMenuContent","NavigationMenuItem","NavigationMenuLink","NavigationMenuList","NavigationMenuTrigger","Pagination","Popover","PopoverContent","PopoverTrigger","Progress","RadioGroup","RadioGroupItem","SearchBar","Select","SelectContent","SelectGroup","SelectItem","SelectLabel","SelectScrollDownButton","SelectScrollUpButton","SelectSeparator","SelectTrigger","SelectValue","SiteMeta","Slider","Stepper","Switch","Tabs","TabsContent","TabsList","TabsTrigger","TextArea","TextButton","TextInput","ToastAction","Toaster","Tooltip","TooltipArrow","TooltipContent","TooltipProvider","TooltipTrigger","badgeVariants","buttonVariants","mobaseTW","navigationMenuTriggerStyle","textButtonVariants","toast","useToast","__toCommonJS","React","AccordionPrimitive","import_solid","import_clsx","React","import_tailwind_merge","MoMoText","SUPPORT","SOCIAL_ITEMS","APP_DOWNLOAD","MOMO_TEXT","import_react","import_ua_parser_js","cn","inputs","checkIsMoMoAgent","checkIsMobileAgent","UAParser","useIsomorphicLayoutEffect","useIsMobile","isMobile","setIsMobile","import_jsx_runtime","Accordion","className","props","ref","AccordionItem","cn","AccordionTrigger","children","AccordionContent","import_react","React","import_react_slot","import_class_variance_authority","import_jsx_runtime","SpinerIcon","className","SpinerIcon_default","import_jsx_runtime","buttonVariants","Button","className","variant","size","asChild","isLoading","isDisabled","props","ref","Comp","buttonClassName","cn","SpinerIcon_default","React","DialogPrimitive","import_solid","import_jsx_runtime","Dialog","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","props","ref","cn","DialogContent","positionRightCloseBtn","hideCloseBtn","size","position","height","isFull","children","classNames","sizeClassNames","heightClassNames","classNamesDialogContent","DialogHeader","DialogBody","isCondensed","DialogFooter","isDivider","DialogTitle","DialogDescription","import_qrcode","import_jsx_runtime","QRCodeScan","img","children","isQrForAll","DialogQr","className","title","shortTitle","qrImage","qrLink","logoQr","props","Dialog","DialogContent","cn","DialogBody","import_jsx_runtime","ActionButton","action","newTab","offset","dialogQrProps","className","children","props","isOpenQR","setOpenQR","isMobileDevice","useIsMobile","isMoMoApp","checkIsMoMoAgent","hasQrButton","handleGetLink","basicLink","handleAction","modifiedLink","scrollToElement","selector","element","offsetPosition","handleScrollOrAction","renderButtonWithDialogQr","Button","DialogQr","cn","React","import_react_icons","import_react_slot","import_jsx_runtime","Breadcrumb","className","props","ref","cn","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","asChild","BreadcrumbPage","BreadcrumbSeparator","children","BreadcrumbEllipsis","React","import_locale","import_react_day_picker","import_lucide_react","import_lunisolar","React","CheckboxPrimitive","import_solid","import_jsx_runtime","Checkbox","className","props","ref","cn","import_jsx_runtime","CusDayContent","date","cusContent","lunarDate","lunisolar","customFormatters","month","weekday","dayIndex","CheckboxLunaDate","isShow","setIsShow","lang","uniqueId","Checkbox","checked","isWeekend","Calendar","className","classNames","showOutsideDays","enableLunaDate","cusContentDay","props","showLunaDate","setShowLunaDate","cn","buttonVariants","dayProps","children","React","PopoverPrimitive","import_jsx_runtime","Popover","PopoverTrigger","PopoverContent","className","align","sideOffset","props","ref","cn","import_date_fns","import_lucide_react","import_solid","import_jsx_runtime","DatePicker","label","placeholder","size","message","isError","disabled","dateFormat","buttonProps","popoverProps","calendarProps","dateSelected","Popover","PopoverTrigger","Button","cn","CalendarIcon","PopoverContent","Calendar","React","AlertDialogPrimitive","import_jsx_runtime","AlertDialog","AlertDialogTrigger","AlertDialogPortal","AlertDialogOverlay","className","props","ref","cn","AlertDialogContent","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","buttonVariants","AlertDialogCancel","React","import_react_slot","import_class_variance_authority","import_jsx_runtime","iconButtonVariants","IconButton","className","variant","size","asChild","isDisabled","props","ref","Comp","buttonClassName","cn","import_react","import_jsx_runtime","HeadingGroupContext","HeadingTagline","color","size","isTruncated","className","children","colorClasses","sizeClasses","cn","Heading","as","HeadingTag","align","HeadingSub","marginTop","marginTopClasses","HeadingGroup","import_lucide_react","import_jsx_runtime","Pagination","current","total","onChange","getButton","index","cn","iconButtonVariants","_","React","TabsPrimitive","import_jsx_runtime","Tabs","TabsList","className","size","isDivider","props","ref","cn","TabsTrigger","TabsContent","import_react","import_outline","import_solid","import_jsx_runtime","TextArea","disabled","isError","message","label","className","inputClassName","size","rows","restProps","ref","cn","React","TOAST_LIMIT","TOAST_REMOVE_DELAY","count","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","TOAST_REMOVE_DELAY","reducer","state","action","TOAST_LIMIT","t","toast","listeners","memoryState","listener","props","id","update","dismiss","open","useToast","setState","index","React","ToastPrimitives","import_class_variance_authority","import_solid","import_jsx_runtime","ToastProvider","ToastViewport","className","props","ref","cn","toastVariants","Toast","variant","children","ToastAction","ToastClose","ToastTitle","ToastDescription","import_jsx_runtime","Toaster","toasts","useToast","ToastProvider","id","title","description","action","props","Toast","ToastTitle","ToastDescription","ToastClose","ToastViewport","React","import_react_slot","import_class_variance_authority","import_jsx_runtime","textButtonVariants","TextButton","className","variant","size","asChild","isDisabled","props","ref","Comp","buttonClassName","cn","React","TooltipPrimitive","import_jsx_runtime","TooltipProvider","Tooltip","TooltipTrigger","TooltipArrow","props","ref","cn","TooltipContent","className","type","sideOffset","import_react","import_solid","import_jsx_runtime","TextInput","disabled","isError","message","label","className","inputClassName","withClearButton","size","onChange","onFocus","onClickClear","value","defaultValue","type","restProps","ref","clearable","setClearable","rootRef","handleShowClearButton","inputValue","onChangeFactory","event","onFocusFactory","handleClear","inputTarget","cn","XCircleIconSolid","import_outline","import_react","import_jsx_runtime","Stepper","value","min","max","disabled","disabledInput","step","inputClassName","stepperClassName","className","onChange","onChangeInputStepper","onDecrement","onIncrement","restProps","ref","rootRef","isDisablePlus","setIsDisablePlus","isDisableMinus","setIsDisableMinus","inputValue","setInputValue","spanRef","handleDisable","onIncrementChange","inputTarget","newValue","onDecrementChange","onStepperInputChange","e","numericValue","IconButton","cn","React","import_solid","import_outline","SelectPrimitive","import_jsx_runtime","Select","className","children","label","message","size","isError","disabled","props","ref","cn","SelectValue","SelectTrigger","SelectScrollUpButton","SelectScrollDownButton","SelectContent","position","SelectGroup","SelectLabel","SelectItem","SelectSeparator","React","NavigationMenuPrimitive","import_class_variance_authority","import_solid","import_jsx_runtime","NavigationMenuContext","NavigationMenuProvider","value","children","useNavigationMenu","context","NavigationMenu","className","alignDropdown","props","ref","cn","NavigationMenuList","NavigationMenuItem","navigationMenuTriggerStyle","buttonVariants","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuLink","NavigationMenuViewport","NavigationMenuIndicator","React","SwitchPrimitives","import_jsx_runtime","Switch","className","props","ref","cn","React","RadioGroupPrimitive","import_lucide_react","import_jsx_runtime","RadioGroup","className","props","ref","cn","RadioGroupItem","import_jsx_runtime","ListItem","className","icon","title","children","href","newTab","linkProps","NavigationMenuLink","cn","ListItem_default","import_jsx_runtime","NavItems","data","alignDropdown","NavigationMenu","NavigationMenuList","menuItem","linkProps","NavigationMenuItem","NavigationMenuTrigger","NavigationMenuContent","cn","component","ListItem_default","NavigationMenuLink","navigationMenuTriggerStyle","NavItems_default","import_react","DEFAULT_EASE","import_react_use","import_router","import_jsx_runtime","ListItemMobile","className","icon","title","children","href","newTab","linkProps","cn","ListItemMobile_default","import_framer_motion","import_jsx_runtime","listItem","DEFAULT_EASE","NavItemsMobile","data","Accordion","menuItem","linkProps","AccordionItem","AccordionTrigger","AccordionContent","cn","component","ListItemMobile_default","NavItemsMobile_default","import_framer_motion","import_jsx_runtime","computeInsetTop","MobileMenu","data","className","isOpen","setIsOpen","memoizedInsetTop","handleRouteChange","Router","variants","containerVariants","DEFAULT_EASE","cn","NavItemsMobile_default","MoMoText","MobileMenu_default","import_html_react_parser","import_solid","import_react","import_jsx_runtime","HeaderNavigation","className","dataMenu","serviceInfo","hasDownloadApp","navigationRight","isSticky","alignDropdown","logo","name","url","openDialogQr","setOpenDialogQr","cn","parse","NavItems_default","Button","DialogQr","MobileMenu_default","import_react","import_jsx_runtime","FooterContentItem","item","FooterContent","primaryMenu","secondaryMenu","openDialogQr","setOpenDialogQr","index","SUPPORT","MOMO_TEXT","SOCIAL_ITEMS","APP_DOWNLOAD","Button","DialogQr","FooterContent_default","import_jsx_runtime","Footer","className","primaryMenu","secondaryMenu","cn","FooterContent_default","React","import_jsx_runtime","Card","className","props","ref","cn","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","React","import_cmdk","import_solid","import_jsx_runtime","Command","className","props","ref","CommandPrimitive","cn","CommandDialog","children","Dialog","DialogContent","CommandInput","onClickClear","divRef","search","setSearch","handleClearInput","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","isActive","CommandShortcut","import_solid","import_jsx_runtime","ComboboxTrigger","className","value","label","children","placeholder","PopoverTrigger","cn","ComboboxContent","PopoverContent","Combobox","open","onOpenChange","Popover","import_class_variance_authority","import_react","import_outline","import_jsx_runtime","calloutVariants","iconVariants","Callout","type","message","withAction","onClickAction","className","disabled","actionClassName","props","ref","cn","TextButton","import_react","import_solid","import_outline","import_jsx_runtime","SearchBar","disabled","className","inputClassName","size","onChange","onFocus","onClickClear","value","defaultValue","type","restProps","ref","clearable","setClearable","rootRef","handleShowClearButton","inputValue","onChangeFactory","event","onFocusFactory","handleClear","inputTarget","cn","import_react","import_swiper","DialogPrimitive","import_lucide_react","import_outline","import_lodash","import_jsx_runtime","LightboxGalleryDialog","DialogPortal","DialogOverlay","React","className","props","ref","cn","CloseDialog","clearActiveIndex","LightboxThumbnail","children","src","alt","classNameImage","onClick","handleOnClickThumbnail","DialogContent","DialogHeader","DialogFooter","DialogTitle","DialogDescription","LightBoxContent","images","activeSlideIndex","withSideBar","subHtmlSideBar","classNameSubHtmSideBar","isPagination","activeSlide","setActiveSlide","titleImage","setTitleImg","onGetTitleImage","result","_","idx","titleImgDraf","pagination","index","classNameParent","arrayModule","realIndex","activeBullet","img","IconButton","LightboxGallery","open","onOpenChange","child","updatedProps","knownProps","acc","key","React","RadioGroupPrimitive","import_lucide_react","CheckboxPrimitive","import_solid","import_jsx_runtime","ChoiceboxGroupContext","useChoiceboxGroupContext","context","ChoiceboxGroup","className","hideIndicator","props","ref","cn","ChoiceboxGroupItem","children","ChoiceboxMultiItem","import_class_variance_authority","import_jsx_runtime","badgeVariants","Badge","className","variant","props","cn","React","ProgressPrimitive","import_class_variance_authority","import_jsx_runtime","progressbarVariants","progressbarSecondaryVariants","Progress","className","value","variant","size","disabled","props","ref","cn","import_react","TYPE_MEDIA_IMAGE","DUMMY_NONE_DATA","DUMMY_NONE_DATA_CTAS","DUMMY_NONE_DATA_FEATURS","import_outline","AspectRatioPrimitive","AspectRatio","import_class_variance_authority","DialogPrimitive","import_lucide_react","import_jsx_runtime","DialogPortal","DialogOverlay","React","className","props","ref","cn","Dialog","CloseDialog","DialogContent","children","featureVariants","SectionHeroTitle","title","SectionHeroTag","tagName","SectionHeroDescription","description","SectionHeroCTA","dataCtas","handleOnClickCTA","e","onClickFC","ButtonCTAQR","cta","index","Button","SectionHeroItemFeature","template","label","icon","idx","SectionHeroListFeature","dataFeatures","feature","SectionHeroVideo","type","src","ratioImg","video","AspectRatio","TYPE_MEDIA_IMAGE","SectionHeroMedia","url","HeroContentTemplateOne","data","HeroContentTemplateTwo","HeroContentTemplateThree","HeroContentTemplateFour","HeroContentTemplateFive","renderTemplate","SectionHeroContent","HeroSection","DUMMY_NONE_DATA_CTAS","DUMMY_NONE_DATA","DUMMY_NONE_DATA_FEATURS","React","SliderPrimitive","import_jsx_runtime","Slider","className","props","ref","cn","import_color","import_plugin","DEFAULT_TRANSITION_DURATION","transition_default","custom_default","scrollbar_hide_default","utilities","custom_default","transition_default","scrollbar_hide_default","import_flat","removeDefaultKeys","obj","newObj","key","flattenThemeObject","ROOT_FONT_SIZE","baseScale","extendedScale","generateSpacingScale","spacingUnit","scaleLabels","scale","label","multiplier","key","first","second","blue","green","pink","purple","red","yellow","orange","gray","commonColors","blue","green","pink","purple","red","yellow","gray","orange","colors","commonColors","layout","animations","fontSizes","prefix","radius","prefix","resolveConfig","prefix","resolved","flatColors","flattenThemeObject","colors","flatLayout","layout","cssSelector","colorName","colorValue","r","g","Color","colorVar","error","key","value","layoutVariablePrefix","nestedKey","nestedValue","nestedLayoutVariable","spacingScale","generateSpacingScale","scaleKey","scaleValue","spacingVariable","formattedValue","mobaseTW","plugin","addBase","addUtilities","addComponents","utilities","radius","fontSizes","animations","import_jsx_runtime","SiteMeta"]}
|