import React, { useCallback, useContext, useEffect, useRef, useState, } from 'react' import clsx from 'clsx' import { CSSTransition } from 'react-transition-group' import { IoShieldCheckmark } from '@react-icons/all-files/io5/IoShieldCheckmark' import { IoClose } from '@react-icons/all-files/io5/IoClose' import loadable from '@loadable/component' import { disableBodyScroll, enableBodyScroll, clearAllBodyScrollLocks, } from 'body-scroll-lock' import { use100vh } from 'react-div-100vh' import { DecisionsFormProps, useConsentFormVisible, } from '@consent-manager/core' import { Switch as DefaultSwitch } from './switch' import defaultStyles from './index.module.css' import defaultAnimationStyles from './animation-slide.module.css' import { Introduction } from './introduction' import { Backdrop } from './backdrop' import { ConsentManagerDefaultInterfaceContext } from './context' import { ConsentManagerDefaultInterfaceDesignProps } from './index' import { ToggleButton as DefaultToggleButton } from './toggle-button' import { useDefaultButton } from './default-button' const DefaultForm = loadable(() => import(/* webpackChunkName: "consent-manager-form" */ './form') ) export interface InterfaceProps extends DecisionsFormProps, ConsentManagerDefaultInterfaceDesignProps {} export const Interface: React.FC = ({ integrations, initialValues, onSubmit, useDefaultButtonForIntroduction = true, slideDuration = 700, styles = defaultStyles, CloseIcon = IoClose, ToggleIcon = IoShieldCheckmark, ToggleButton = DefaultToggleButton, Switch = DefaultSwitch, Button = props =>