react-better-html 1.1.74 → 1.1.75

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/Div.tsx","../src/constants.ts","../src/utils/hooks.ts","../src/constants/css.ts","../src/components/BetterHtmlProvider.tsx","../src/constants/theme.ts","../src/constants/icons.ts","../src/constants/assets.ts","../src/constants/app.ts","../src/components/Text.tsx","../src/components/Loader.tsx","../src/components/Icon.tsx","../src/components/Image.tsx","../src/components/Button.tsx","../src/components/Divider.tsx","../src/components/Modal.tsx","../src/components/PageHolder.tsx","../src/components/PageHeader.tsx","../src/components/Chip.tsx","../src/components/InputField.tsx","../src/constants/countries.ts","../src/components/Label.tsx","../src/components/Dropdown.tsx","../src/components/ToggleInput.tsx","../src/components/Form.tsx","../src/components/FormRow.tsx","../src/components/ColorThemeSwitch.tsx","../src/components/Table.tsx","../src/utils/functions.ts","../src/utils/variableFunctions.ts","../src/plugins/react-router-dom.ts"],"sourcesContent":["import Div, { type DivProps } from \"./components/Div\";\nimport Text, { type TextProps, type TextAs } from \"./components/Text\";\nimport Loader, { type LoaderProps } from \"./components/Loader\";\nimport Icon, { type IconProps } from \"./components/Icon\";\nimport Image, { type ImageProps } from \"./components/Image\";\nimport Button, { type ButtonProps } from \"./components/Button\";\nimport Divider, { type HorizontalDividerProps, type VerticalDividerProps } from \"./components/Divider\";\nimport Modal, { type ModalRef, type ModalProps } from \"./components/Modal\";\nimport PageHolder, { type PageHolderProps } from \"./components/PageHolder\";\nimport PageHeader, { type PageHeaderProps } from \"./components/PageHeader\";\nimport Chip, { type ChipProps } from \"./components/Chip\";\nimport InputField, { type InputFieldProps, type TextareaFieldProps } from \"./components/InputField\";\nimport Dropdown, { type DropdownOption, type DropdownProps } from \"./components/Dropdown\";\nimport ToggleInput, { type ToggleInputRef, type ToggleInputProps } from \"./components/ToggleInput\";\nimport Form, { type FormProps } from \"./components/Form\";\nimport Label, { type LabelProps } from \"./components/Label\";\nimport FormRow, { type FormRowProps } from \"./components/FormRow\";\nimport ColorThemeSwitch, { type ColorThemeSwitchProps } from \"./components/ColorThemeSwitch\";\nimport Table, { type TableColumn } from \"./components/Table\";\n\nimport BetterHtmlProvider, {\n useBetterHtmlContext,\n useTheme,\n useLoader,\n useLoaderControls,\n type BetterHtmlProviderValue,\n} from \"./components/BetterHtmlProvider\";\nimport {\n usePageResize,\n usePageScroll,\n useMediaQuery,\n useBooleanState,\n useDebounceState,\n useForm,\n useUrlQuery,\n} from \"./utils/hooks\";\nimport { generateRandomString, getBrowser, formatPhoneNumber, getFormErrorObject } from \"./utils/functions\";\nimport { loaderControls } from \"./utils/variableFunctions\";\n\nimport {\n type OmitProps,\n type ExcludeOptions,\n type PickValue,\n type PartialRecord,\n type DeepPartialRecord,\n type PickAllRequired,\n} from \"./types/app\";\nimport { type AppConfig, type BetterHtmlConfig } from \"./types/config\";\nimport { type AssetName, type AssetsConfig } from \"./types/asset\";\nimport { type IconName, type IconsConfig } from \"./types/icon\";\nimport { type LoaderName, type LoaderConfig } from \"./types/loader\";\nimport { type PluginName, type BetterHtmlPlugin } from \"./types/plugin\";\nimport {\n type Color,\n type ColorName,\n type ColorTheme,\n type Colors,\n type Styles,\n type Theme,\n type ThemeConfig,\n} from \"./types/theme\";\nimport { type BrowserName } from \"./types/other\";\n\nimport { isMobileDevice } from \"./constants\";\n\nexport * from \"./plugins\";\n\nexport {\n BetterHtmlProvider,\n BetterHtmlProviderValue,\n // Components\n Div,\n DivProps,\n Text,\n TextProps,\n TextAs,\n Loader,\n LoaderProps,\n Icon,\n IconProps,\n Image,\n ImageProps,\n Button,\n ButtonProps,\n Divider,\n HorizontalDividerProps,\n VerticalDividerProps,\n Modal,\n ModalProps,\n ModalRef,\n PageHolder,\n PageHolderProps,\n PageHeader,\n PageHeaderProps,\n Chip,\n ChipProps,\n InputField,\n InputFieldProps,\n TextareaFieldProps,\n Dropdown,\n DropdownOption,\n DropdownProps,\n ToggleInput,\n ToggleInputRef,\n ToggleInputProps,\n Form,\n FormProps,\n Label,\n LabelProps,\n FormRow,\n FormRowProps,\n ColorThemeSwitch,\n ColorThemeSwitchProps,\n Table,\n TableColumn,\n // Hooks\n useBetterHtmlContext,\n useTheme,\n useLoader,\n useLoaderControls,\n usePageResize,\n usePageScroll,\n useMediaQuery,\n useBooleanState,\n useDebounceState,\n useForm,\n useUrlQuery,\n // Functions\n generateRandomString,\n getBrowser,\n formatPhoneNumber,\n getFormErrorObject,\n // Variable Functions\n loaderControls,\n // Types\n OmitProps,\n ExcludeOptions,\n PickValue,\n PartialRecord,\n DeepPartialRecord,\n PickAllRequired,\n AppConfig,\n BetterHtmlConfig,\n AssetName,\n AssetsConfig,\n IconName,\n IconsConfig,\n LoaderName,\n PluginName,\n BetterHtmlPlugin,\n LoaderConfig,\n Color,\n ColorName,\n ColorTheme,\n Colors,\n Styles,\n Theme,\n ThemeConfig,\n BrowserName,\n // Constants\n isMobileDevice,\n};\n","import { forwardRef, memo, useCallback } from \"react\";\nimport styled, { WebTarget } from \"styled-components\";\n\nimport { isMobileDevice } from \"../constants\";\n\nimport { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from \"../types/components\";\nimport { OmitProps } from \"../types/app\";\n\nimport { useStyledComponentStyles, useComponentPropsWithPrefix, useComponentPropsWithoutStyle } from \"../utils/hooks\";\n\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nconst DivStyledComponent = styled.div.withConfig({\n shouldForwardProp: (prop) => ![\"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{ normalStyle: ComponentStyle; hoverStyle: ComponentStyle }>`\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nexport type DivProps<Value> = {\n value?: Value;\n /** @default \"div\" */\n as?: WebTarget;\n /** @default false */\n isTabAccessed?: boolean;\n onClickWithValue?: (value: Value) => void;\n} & OmitProps<React.ComponentProps<\"div\">, \"style\" | \"defaultValue\"> &\n ComponentStyle &\n ComponentHoverStyle;\n\ntype DivComponentType = {\n <Value>(props: ComponentPropWithRef<HTMLDivElement, DivProps<Value>>): React.ReactElement;\n row: <Value>(\n props: ComponentPropWithRef<\n HTMLDivElement,\n OmitProps<DivProps<Value>, \"display\" | \"flexDirection\"> & {\n invertFlexDirection?: boolean;\n }\n >,\n ) => React.ReactElement;\n column: <Value>(\n props: ComponentPropWithRef<\n HTMLDivElement,\n OmitProps<DivProps<Value>, \"display\" | \"flexDirection\"> & {\n invertFlexDirection?: boolean;\n }\n >,\n ) => React.ReactElement;\n grid: <Value>(\n props: ComponentPropWithRef<HTMLDivElement, OmitProps<DivProps<Value>, \"display\">>,\n ) => React.ReactElement;\n box: <Value>(props: ComponentPropWithRef<HTMLDivElement, DivProps<Value>>) => React.ReactElement;\n};\n\nconst DivComponent: DivComponentType = forwardRef(function Div<Value>(\n { value, as, isTabAccessed, onClickWithValue, role, onClick, onKeyDown, children, ...props }: DivProps<Value>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const theme = useTheme();\n\n const styledComponentStyles = useStyledComponentStyles(props, theme);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n const onClickElement = useCallback(\n (event: React.MouseEvent<HTMLDivElement, globalThis.MouseEvent>) => {\n onClick?.(event);\n onClickWithValue?.(value as any);\n },\n [onClick, onClickWithValue, value],\n );\n const onKeyDownElement = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n\n if (!isTabAccessed) return;\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n event.currentTarget.click();\n }\n },\n [onKeyDown, isTabAccessed],\n );\n\n return (\n <DivStyledComponent\n as={as}\n tabIndex={isTabAccessed && !isMobileDevice ? 0 : undefined}\n role={role ?? (onClick ? \"button\" : undefined)}\n onClick={onClickElement}\n onKeyDown={onKeyDownElement}\n {...styledComponentStyles}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n ref={ref}\n >\n {children}\n </DivStyledComponent>\n );\n}) as any;\n\nDivComponent.row = forwardRef(function Row({ invertFlexDirection, ...props }, ref) {\n return <DivComponent display=\"flex\" flexDirection={invertFlexDirection ? \"column\" : \"row\"} ref={ref} {...props} />;\n}) as DivComponentType[\"row\"];\n\nDivComponent.column = forwardRef(function Column({ invertFlexDirection, ...props }, ref) {\n return <DivComponent display=\"flex\" flexDirection={invertFlexDirection ? \"row\" : \"column\"} ref={ref} {...props} />;\n}) as DivComponentType[\"column\"];\n\nDivComponent.grid = forwardRef(function Grid(props, ref) {\n return <DivComponent display=\"grid\" ref={ref} {...props} />;\n}) as DivComponentType[\"grid\"];\n\nDivComponent.box = forwardRef(function Box(props, ref) {\n const theme = useTheme();\n\n return (\n <DivComponent\n backgroundColor={theme.colors.backgroundContent}\n border={`1px solid ${theme.colors.border}`}\n borderRadius={theme.styles.borderRadius}\n paddingBlock={theme.styles.gap}\n paddingInline={theme.styles.space}\n ref={ref}\n {...props}\n />\n );\n}) as DivComponentType[\"box\"];\n\nconst Div = memo(DivComponent) as any as typeof DivComponent & {\n row: typeof DivComponent.row;\n column: typeof DivComponent.column;\n grid: typeof DivComponent.grid;\n box: typeof DivComponent.box;\n};\n\nDiv.row = DivComponent.row;\nDiv.column = DivComponent.column;\nDiv.grid = DivComponent.grid;\nDiv.box = DivComponent.box;\n\nexport default Div;\n","export const isMobileDevice: boolean = /Mobi|Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent,\n);\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { createSearchParams, useInRouterContext, useNavigate, useSearchParams } from \"react-router-dom\";\n\nimport { cssProps } from \"../constants/css\";\n\nimport { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from \"../types/components\";\nimport { Theme } from \"../types/theme\";\nimport { OmitProps, PartialRecord } from \"../types/app\";\n\nimport { InputFieldProps, TextareaFieldProps } from \"../components/InputField\";\nimport { DropdownProps } from \"../components/Dropdown\";\nimport { ToggleInputProps, ToggleInputRef } from \"../components/ToggleInput\";\nimport { usePlugin, useTheme } from \"../components/BetterHtmlProvider\";\n\nconst cssPropsToExclude: (keyof React.CSSProperties)[] = [\n \"position\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\",\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\",\n \"margin\",\n \"marginTop\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginRight\",\n \"marginBlock\",\n \"marginInline\",\n \"marginBlockStart\",\n \"marginBlockEnd\",\n \"marginInlineStart\",\n \"marginInlineEnd\",\n \"marginTrim\",\n \"zIndex\",\n];\n\nexport function useStyledComponentStyles(\n props: ComponentStyle & ComponentHoverStyle,\n theme?: Theme,\n /** @default false */\n excludeProps?: boolean,\n): {\n normalStyle: ComponentStyle;\n hoverStyle: ComponentStyle;\n} {\n return useMemo(() => {\n const normalStyle: ComponentStyle = {};\n const hoverStyle: ComponentStyle = {};\n\n let haveHover = false;\n\n for (const key in props) {\n if (excludeProps && cssPropsToExclude.includes(key as keyof React.CSSProperties)) continue;\n\n if (key.endsWith(\"Hover\")) {\n haveHover = true;\n\n const normalKey = key.slice(0, -5) as keyof ComponentStyle;\n (hoverStyle[normalKey] as any) = props[key as keyof ComponentStyle];\n } else {\n if (!cssProps[key.toLowerCase()]) continue;\n\n (normalStyle[key as keyof ComponentStyle] as any) = props[key as keyof ComponentStyle];\n }\n }\n\n if (haveHover) normalStyle.transition = theme?.styles.transition ?? \"\";\n\n return {\n normalStyle,\n hoverStyle,\n };\n }, [props, theme]);\n}\n\nexport function useComponentPropsWithPrefix<Props extends Record<string, any>, Prefix extends string>(\n props: Props,\n prefix: Prefix,\n) {\n return useMemo<Record<`${Prefix}-${string}`, any>>(() => {\n const returnValue: any = {};\n\n for (const key in props) {\n if (key.startsWith(`${prefix}-`)) {\n returnValue[key] = props[key];\n }\n }\n\n return returnValue;\n }, [props, prefix]);\n}\n\nexport function useComponentPropsWithExcludedStyle<Props extends Record<string, any>>(props: Props) {\n return useMemo(\n () =>\n Object.keys(props).reduce((previousValue, currentValue) => {\n const key = currentValue as keyof React.CSSProperties;\n\n if (!cssPropsToExclude.includes(key)) return previousValue;\n\n (previousValue[key] as any) = props[key];\n\n return previousValue;\n }, {} as Partial<Props>),\n [props],\n );\n}\n\nexport function useComponentPropsWithoutStyle<Props extends Record<string, any>>(props: Props) {\n return useMemo(\n () =>\n Object.keys(props).reduce((previousValue, currentValue) => {\n if (!cssProps[currentValue.toLowerCase()]) previousValue[currentValue as keyof Props] = props[currentValue];\n\n return previousValue;\n }, {} as Partial<Props>),\n [props],\n );\n}\n\nexport function useComponentInputFieldDateProps(\n props: InputFieldProps,\n holderRef: React.RefObject<HTMLDivElement | null>,\n): {\n internalValue: string;\n setInternalValue: React.Dispatch<React.SetStateAction<string>>;\n inputFieldProps: InputFieldProps;\n insideInputFieldComponentProps: InputFieldProps;\n isOpen: boolean;\n} {\n const theme = useTheme();\n\n const [isOpen, setIsOpen] = useBooleanState();\n const [isOpenLate, setIsOpenLate] = useBooleanState();\n const [isFocused, setIsFocused] = useBooleanState();\n\n const [internalValue, setInternalValue] = useState<string>(props.value?.toString() ?? \"\");\n\n const inputFieldProps = useMemo<InputFieldProps>(\n () => ({\n value: internalValue,\n className: `${isOpen ? \"react-better-html-inputField-dateTime-opened\" : \"\"}${\n isOpenLate ? \" react-better-html-inputField-dateTime-opened-late\" : \"\"\n }${props.className ? ` ${props.className}` : \"\"}`,\n onClick: (event: React.MouseEvent<HTMLInputElement>) => {\n if (props.disabled) return;\n\n setIsOpen.setTrue();\n props.onClick?.(event);\n },\n onFocus: (event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused.setTrue();\n props.onFocus?.(event);\n },\n onBlur: (event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused.setFalse();\n props.onBlur?.(event);\n },\n onChangeValue: (value) => {\n setInternalValue(value);\n props.onChangeValue?.(value);\n },\n }),\n [props, internalValue, isOpen, isOpenLate],\n );\n const insideInputFieldComponentProps = useMemo<InputFieldProps>(\n () => ({\n border: `1px solid ${isFocused ? theme.colors.primary : theme.colors.border}`,\n borderTop: \"none\",\n opacity: !isOpen ? 0 : undefined,\n pointerEvents: !isOpen ? \"none\" : undefined,\n transform: `translateY(${!isOpen ? -10 : 0}px)`,\n zIndex: 1000,\n transition: theme.styles.transition,\n }),\n [isOpen, isFocused],\n );\n\n useEffect(() => {\n if (props.value === undefined || props.value === null) return;\n\n setInternalValue(props.value.toString());\n }, [props.value]);\n useEffect(() => {\n if (isOpen) {\n setIsOpenLate.setTrue();\n } else {\n const timeout = setTimeout(setIsOpenLate.setFalse, 0.2 * 1000);\n\n return () => {\n clearTimeout(timeout);\n };\n }\n }, [isOpen]);\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (holderRef.current && !holderRef.current.contains(event.target as Node)) {\n setIsOpen.setFalse();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpen]);\n\n return {\n internalValue,\n setInternalValue,\n inputFieldProps,\n insideInputFieldComponentProps,\n isOpen,\n };\n}\n\nexport function usePageResize() {\n const [width, setWidth] = useState<number>(window.innerWidth);\n const [height, setHeight] = useState<number>(window.innerHeight);\n\n useEffect(() => {\n const onResize = () => {\n setWidth(window.innerWidth);\n setHeight(window.innerHeight);\n };\n\n window.addEventListener(\"resize\", onResize);\n\n return () => {\n window.removeEventListener(\"resize\", onResize);\n };\n }, []);\n\n return {\n width,\n height,\n };\n}\n\nexport function usePageScroll() {\n const [scrollX, setScrollX] = useState<number>(window.scrollX ?? 0);\n const [scrollY, setScrollY] = useState<number>(window.scrollY ?? 0);\n\n useEffect(() => {\n const onScroll = () => {\n setScrollX(window.scrollX);\n setScrollY(window.scrollY);\n };\n\n window.addEventListener(\"scroll\", onScroll);\n\n return () => {\n window.removeEventListener(\"scroll\", onScroll);\n };\n }, []);\n\n return {\n scrollX,\n scrollY,\n };\n}\n\nexport function useMediaQuery() {\n const { width } = usePageResize();\n\n return {\n size320: width <= 320,\n size400: width <= 400,\n size500: width <= 500,\n size600: width <= 600,\n size700: width <= 700,\n size800: width <= 800,\n size900: width <= 900,\n size1000: width <= 1000,\n size1100: width <= 1100,\n size1200: width <= 1200,\n size1300: width <= 1300,\n size1400: width <= 1400,\n size1500: width <= 1500,\n size1600: width <= 1600,\n };\n}\n\nexport function useBooleanState(initialValue = false): [\n state: boolean,\n actions: {\n setState: React.Dispatch<React.SetStateAction<boolean>>;\n setTrue: () => void;\n setFalse: () => void;\n toggle: () => void;\n },\n] {\n const [state, setState] = useState<boolean>(initialValue);\n\n const setTrue = useCallback(() => setState(true), []);\n const setFalse = useCallback(() => setState(false), []);\n const toggle = useCallback(() => setState((oldValue) => !oldValue), []);\n\n return [state, { setState, setTrue, setFalse, toggle }];\n}\n\nexport function useDebounceState<Value>(\n initialValue: Value,\n delay = 0.5,\n): [value: Value, debouncedValue: Value, setValue: React.Dispatch<React.SetStateAction<Value>>, isLoading: boolean] {\n const [value, setValue] = useState<Value>(initialValue);\n const [debouncedValue, setDebouncedValue] = useState<Value>(initialValue);\n const [isLoading, setIsLoading] = useBooleanState();\n\n useEffect(() => {\n setIsLoading.setTrue();\n\n const timer = setTimeout(() => {\n setDebouncedValue(value);\n setIsLoading.setFalse();\n }, delay * 1000);\n\n return () => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return [value, debouncedValue, setValue, isLoading];\n}\n\nexport function useForm<FormFields extends Record<string | number, string | number | boolean | undefined>>(options: {\n defaultValues: FormFields;\n requiredFields?: (keyof FormFields)[];\n onSubmit?: (values: FormFields) => void | Promise<void>;\n validate?: (values: FormFields) => PartialRecord<keyof FormFields, string>;\n}) {\n const { defaultValues, requiredFields, onSubmit, validate } = options;\n\n const inputFieldRefs = useRef<Record<keyof FormFields, HTMLInputElement | undefined>>(\n {} as Record<keyof FormFields, HTMLInputElement | undefined>,\n );\n const [inputTypes, setInputTypes] = useState<Record<keyof FormFields, React.HTMLInputTypeAttribute>>(\n {} as Record<keyof FormFields, React.HTMLInputTypeAttribute>,\n );\n\n const [values, setValues] = useState<FormFields>(defaultValues);\n const [errors, setErrors] = useState<PartialRecord<keyof FormFields, string>>({});\n const [isSubmitting, setIsSubmitting] = useBooleanState();\n\n const setFieldValue = useCallback(\n <FieldName extends keyof FormFields>(field: FieldName, value: FormFields[FieldName] | undefined) => {\n setValues((oldValue) => ({\n ...oldValue,\n [field]: value,\n }));\n\n setErrors((oldValue) => ({\n ...oldValue,\n [field]: undefined,\n }));\n },\n [],\n );\n const setFieldsValue = useCallback((values: Partial<FormFields>) => {\n setValues((oldValue) => ({\n ...oldValue,\n ...values,\n }));\n\n setErrors((oldValue) => {\n const newErrors: typeof oldValue = {};\n\n for (const key in values) newErrors[key] = undefined;\n\n return newErrors;\n });\n }, []);\n const getInputFieldProps = useCallback(\n <FieldName extends keyof FormFields>(\n field: FieldName,\n ): ComponentPropWithRef<HTMLInputElement, InputFieldProps> => {\n const type = inputTypes[field] ?? \"text\";\n\n return {\n required: requiredFields?.includes(field),\n value: values[field]?.toString() ?? \"\",\n onChangeValue: (newValue) => {\n const readyValue = type === \"number\" ? (newValue ? Number(newValue) : undefined) : newValue;\n\n setFieldValue(field, readyValue as FormFields[FieldName]);\n },\n ref: (element) => {\n if (!element) return;\n\n inputFieldRefs.current[field] = element;\n\n if (inputTypes[field] === undefined)\n setInputTypes((oldValue) => ({\n ...oldValue,\n [field]: element.getAttribute(\"type\"),\n }));\n },\n errorText: errors[field],\n };\n },\n [values, setFieldValue, inputTypes, errors],\n );\n const getTextAreaProps = useCallback(\n <FieldName extends keyof FormFields>(\n field: FieldName,\n ): ComponentPropWithRef<HTMLTextAreaElement, TextareaFieldProps> => {\n return {\n required: requiredFields?.includes(field),\n value: values[field]?.toString() ?? \"\",\n onChangeValue: (newValue) => {\n setFieldValue(field, newValue as FormFields[FieldName]);\n },\n errorText: errors[field],\n };\n },\n [values, setFieldValue, inputTypes, errors],\n );\n const getDropdownFieldProps = useCallback(\n <FieldName extends keyof FormFields>(\n field: FieldName,\n ): OmitProps<ComponentPropWithRef<HTMLDivElement, DropdownProps<FormFields[FieldName], unknown>>, \"options\"> => {\n return {\n required: requiredFields?.includes(field),\n value: values[field],\n onChange: (value) => {\n setFieldValue(field, value);\n },\n errorText: errors[field],\n };\n },\n [values, errors, setFieldValue],\n );\n const getCheckboxProps = useCallback(\n <FieldName extends keyof FormFields>(\n field: FieldName,\n ): ComponentPropWithRef<ToggleInputRef, ToggleInputProps<FormFields[FieldName]>> => {\n return {\n required: requiredFields?.includes(field),\n checked: values[field] as boolean,\n onChange: (checked) => {\n setFieldValue(field, checked as FormFields[FieldName]);\n },\n errorText: errors[field],\n };\n },\n [values, errors, setFieldValue],\n );\n const getRadioButtonProps = useCallback(\n <FieldName extends keyof FormFields>(\n field: FieldName,\n value: FormFields[FieldName],\n ): ComponentPropWithRef<ToggleInputRef, ToggleInputProps<FormFields[FieldName]>> => {\n return {\n required: requiredFields?.includes(field),\n checked: values[field] === value,\n name: field.toString(),\n value,\n onChange: (checked, newValue) => {\n setFieldValue(field, checked ? newValue : undefined);\n },\n errorText: errors[field],\n };\n },\n [values, errors, setFieldValue],\n );\n const getSwitchProps = useCallback(\n <FieldName extends keyof FormFields>(\n field: FieldName,\n ): ComponentPropWithRef<ToggleInputRef, ToggleInputProps<FormFields[FieldName]>> => {\n return {\n required: requiredFields?.includes(field),\n checked: values[field] as boolean,\n onChange: (checked) => {\n setFieldValue(field, checked as FormFields[FieldName]);\n },\n errorText: errors[field],\n };\n },\n [values, errors, setFieldValue],\n );\n const focusField = useCallback((field: keyof FormFields) => {\n inputFieldRefs.current[field]?.focus();\n }, []);\n const onSubmitFunction = useCallback(\n async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n setIsSubmitting.setTrue();\n\n try {\n const validationErrors = validate?.(values) || {};\n setErrors(validationErrors);\n\n if (Object.keys(validationErrors).length === 0) {\n await onSubmit?.(values);\n } else {\n const firstErrorField = Object.keys(validationErrors)[0] as keyof FormFields;\n focusField(firstErrorField);\n }\n } finally {\n setIsSubmitting.setFalse();\n }\n },\n [values, validate, onSubmit, focusField],\n );\n const reset = useCallback(() => {\n setValues(defaultValues);\n setErrors({});\n }, [defaultValues]);\n\n const isDirty = useMemo<boolean>(\n () => Object.keys(defaultValues).some((key) => defaultValues[key] !== values[key]),\n [defaultValues, values],\n );\n const isValid = useMemo<boolean>(() => {\n const validationErrors = validate?.(values) || {};\n\n return Object.keys(validationErrors).length === 0;\n }, [validate, values]);\n const canSubmit = useMemo<boolean>(() => {\n const requiredFieldsHaveValues =\n requiredFields?.every((field) => values[field] !== undefined && values[field] !== \"\") ?? true;\n\n return isValid && requiredFieldsHaveValues;\n }, [isValid, requiredFields]);\n\n return {\n values,\n errors,\n isSubmitting,\n setFieldValue,\n setFieldsValue,\n getInputFieldProps,\n getTextAreaProps,\n getDropdownFieldProps,\n getCheckboxProps,\n getRadioButtonProps,\n getSwitchProps,\n focusField,\n onSubmit: onSubmitFunction,\n reset,\n requiredFields,\n isDirty,\n isValid,\n canSubmit,\n };\n}\n\nexport function useUrlQuery() {\n const reactRouterDomPlugin = usePlugin(\"react-router-dom\");\n\n if (!reactRouterDomPlugin) {\n throw new Error(\n \"`useUrlQuery` hook requires the `react-router-dom` plugin to be added to the `plugins` prop in `<BetterHtmlProvider>`.\",\n );\n }\n\n const isInRouterContext = useInRouterContext();\n\n if (!isInRouterContext) {\n throw new Error(\n \"`useUrlQuery` hook must be used inside a React Router context. Make sure your component is wrapped in a `<BrowserRouter>`, or another Router component.\",\n );\n }\n\n const navigate = useNavigate();\n const [searchParams] = useSearchParams();\n\n const setQuery = useCallback(\n (query: Record<string, string | number>, keepHistory = true) => {\n const currentSearchParams: Record<string, string> = {};\n searchParams.forEach((value, key) => {\n (currentSearchParams as any)[key] = value;\n });\n\n navigate(\n {\n search: createSearchParams({\n ...currentSearchParams,\n ...Object.fromEntries(Object.entries(query).map(([key, value]) => [key, value.toString()])),\n }).toString(),\n },\n {\n replace: !keepHistory,\n },\n );\n },\n [navigate, searchParams],\n );\n const getQuery = useCallback((name: string) => searchParams.get(name), [searchParams]);\n const removeQuery = useCallback(\n (name: string, keepHistory = true) => {\n searchParams.delete(name);\n\n navigate(\n {\n search: searchParams.toString(),\n },\n {\n replace: !keepHistory,\n },\n );\n },\n [navigate, searchParams],\n );\n\n return {\n setQuery,\n getQuery,\n removeQuery,\n };\n}\n","export const cssProps: Record<string, boolean> = {\n accentcolor: true,\n accentcolorhover: true,\n additivesymbols: true,\n additivesymbolshover: true,\n aligncontent: true,\n aligncontenthover: true,\n alignitems: true,\n alignitemshover: true,\n alignself: true,\n alignselfhover: true,\n alignmentbaseline: true,\n alignmentbaselinehover: true,\n all: true,\n allhover: true,\n anchorname: true,\n anchornamehover: true,\n anchorscope: true,\n anchorscopehover: true,\n animation: true,\n animationhover: true,\n animationcomposition: true,\n animationcompositionhover: true,\n animationdelay: true,\n animationdelayhover: true,\n animationdirection: true,\n animationdirectionhover: true,\n animationduration: true,\n animationdurationhover: true,\n animationfillmode: true,\n animationfillmodehover: true,\n animationiterationcount: true,\n animationiterationcounthover: true,\n animationname: true,\n animationnamehover: true,\n animationplaystate: true,\n animationplaystatehover: true,\n animationrange: true,\n animationrangehover: true,\n animationrangeend: true,\n animationrangeendhover: true,\n animationrangestart: true,\n animationrangestarthover: true,\n animationtimeline: true,\n animationtimelinehover: true,\n animationtimingfunction: true,\n animationtimingfunctionhover: true,\n appregion: true,\n appregionhover: true,\n appearance: true,\n appearancehover: true,\n ascentoverride: true,\n ascentoverridehover: true,\n aspectratio: true,\n aspectratiohover: true,\n backdropfilter: true,\n backdropfilterhover: true,\n backfacevisibility: true,\n backfacevisibilityhover: true,\n background: true,\n backgroundhover: true,\n backgroundattachment: true,\n backgroundattachmenthover: true,\n backgroundblendmode: true,\n backgroundblendmodehover: true,\n backgroundclip: true,\n backgroundcliphover: true,\n backgroundcolor: true,\n backgroundcolorhover: true,\n backgroundimage: true,\n backgroundimagehover: true,\n backgroundorigin: true,\n backgroundoriginhover: true,\n backgroundposition: true,\n backgroundpositionhover: true,\n backgroundpositionx: true,\n backgroundpositionxhover: true,\n backgroundpositiony: true,\n backgroundpositionyhover: true,\n backgroundrepeat: true,\n backgroundrepeathover: true,\n backgroundsize: true,\n backgroundsizehover: true,\n basepalette: true,\n basepalettehover: true,\n baselineshift: true,\n baselineshifthover: true,\n baselinesource: true,\n baselinesourcehover: true,\n blocksize: true,\n blocksizehover: true,\n border: true,\n borderhover: true,\n borderblock: true,\n borderblockhover: true,\n borderblockcolor: true,\n borderblockcolorhover: true,\n borderblockend: true,\n borderblockendhover: true,\n borderblockendcolor: true,\n borderblockendcolorhover: true,\n borderblockendstyle: true,\n borderblockendstylehover: true,\n borderblockendwidth: true,\n borderblockendwidthhover: true,\n borderblockstart: true,\n borderblockstarthover: true,\n borderblockstartcolor: true,\n borderblockstartcolorhover: true,\n borderblockstartstyle: true,\n borderblockstartstylehover: true,\n borderblockstartwidth: true,\n borderblockstartwidthhover: true,\n borderblockstyle: true,\n borderblockstylehover: true,\n borderblockwidth: true,\n borderblockwidthhover: true,\n borderbottom: true,\n borderbottomhover: true,\n borderbottomcolor: true,\n borderbottomcolorhover: true,\n borderbottomleftradius: true,\n borderbottomleftradiushover: true,\n borderbottomrightradius: true,\n borderbottomrightradiushover: true,\n borderbottomstyle: true,\n borderbottomstylehover: true,\n borderbottomwidth: true,\n borderbottomwidthhover: true,\n bordercollapse: true,\n bordercollapsehover: true,\n bordercolor: true,\n bordercolorhover: true,\n borderendendradius: true,\n borderendendradiushover: true,\n borderendstartradius: true,\n borderendstartradiushover: true,\n borderimage: true,\n borderimagehover: true,\n borderimageoutset: true,\n borderimageoutsethover: true,\n borderimagerepeat: true,\n borderimagerepeathover: true,\n borderimageslice: true,\n borderimageslicehover: true,\n borderimagesource: true,\n borderimagesourcehover: true,\n borderimagewidth: true,\n borderimagewidthhover: true,\n borderinline: true,\n borderinlinehover: true,\n borderinlinecolor: true,\n borderinlinecolorhover: true,\n borderinlineend: true,\n borderinlineendhover: true,\n borderinlineendcolor: true,\n borderinlineendcolorhover: true,\n borderinlineendstyle: true,\n borderinlineendstylehover: true,\n borderinlineendwidth: true,\n borderinlineendwidthhover: true,\n borderinlinestart: true,\n borderinlinestarthover: true,\n borderinlinestartcolor: true,\n borderinlinestartcolorhover: true,\n borderinlinestartstyle: true,\n borderinlinestartstylehover: true,\n borderinlinestartwidth: true,\n borderinlinestartwidthhover: true,\n borderinlinestyle: true,\n borderinlinestylehover: true,\n borderinlinewidth: true,\n borderinlinewidthhover: true,\n borderleft: true,\n borderlefthover: true,\n borderleftcolor: true,\n borderleftcolorhover: true,\n borderleftstyle: true,\n borderleftstylehover: true,\n borderleftwidth: true,\n borderleftwidthhover: true,\n borderradius: true,\n borderradiushover: true,\n borderright: true,\n borderrighthover: true,\n borderrightcolor: true,\n borderrightcolorhover: true,\n borderrightstyle: true,\n borderrightstylehover: true,\n borderrightwidth: true,\n borderrightwidthhover: true,\n borderspacing: true,\n borderspacinghover: true,\n borderstartendradius: true,\n borderstartendradiushover: true,\n borderstartstartradius: true,\n borderstartstartradiushover: true,\n borderstyle: true,\n borderstylehover: true,\n bordertop: true,\n bordertophover: true,\n bordertopcolor: true,\n bordertopcolorhover: true,\n bordertopleftradius: true,\n bordertopleftradiushover: true,\n bordertoprightradius: true,\n bordertoprightradiushover: true,\n bordertopstyle: true,\n bordertopstylehover: true,\n bordertopwidth: true,\n bordertopwidthhover: true,\n borderwidth: true,\n borderwidthhover: true,\n bottom: true,\n bottomhover: true,\n boxdecorationbreak: true,\n boxdecorationbreakhover: true,\n boxshadow: true,\n boxshadowhover: true,\n boxsizing: true,\n boxsizinghover: true,\n breakafter: true,\n breakafterhover: true,\n breakbefore: true,\n breakbeforehover: true,\n breakinside: true,\n breakinsidehover: true,\n bufferedrendering: true,\n bufferedrenderinghover: true,\n captionside: true,\n captionsidehover: true,\n caretcolor: true,\n caretcolorhover: true,\n clear: true,\n clearhover: true,\n clip: true,\n cliphover: true,\n clippath: true,\n clippathhover: true,\n cliprule: true,\n cliprulehover: true,\n color: true,\n colorhover: true,\n colorinterpolation: true,\n colorinterpolationhover: true,\n colorinterpolationfilters: true,\n colorinterpolationfiltershover: true,\n colorrendering: true,\n colorrenderinghover: true,\n colorscheme: true,\n colorschemehover: true,\n columncount: true,\n columncounthover: true,\n columnfill: true,\n columnfillhover: true,\n columngap: true,\n columngaphover: true,\n columnrule: true,\n columnrulehover: true,\n columnrulecolor: true,\n columnrulecolorhover: true,\n columnrulestyle: true,\n columnrulestylehover: true,\n columnrulewidth: true,\n columnrulewidthhover: true,\n columnspan: true,\n columnspanhover: true,\n columnwidth: true,\n columnwidthhover: true,\n columns: true,\n columnshover: true,\n contain: true,\n containhover: true,\n containintrinsicblocksize: true,\n containintrinsicblocksizehover: true,\n containintrinsicheight: true,\n containintrinsicheighthover: true,\n containintrinsicinlinesize: true,\n containintrinsicinlinesizehover: true,\n containintrinsicsize: true,\n containintrinsicsizehover: true,\n containintrinsicwidth: true,\n containintrinsicwidthhover: true,\n container: true,\n containerhover: true,\n containername: true,\n containernamehover: true,\n containertype: true,\n containertypehover: true,\n content: true,\n contenthover: true,\n contentvisibility: true,\n contentvisibilityhover: true,\n counterincrement: true,\n counterincrementhover: true,\n counterreset: true,\n counterresethover: true,\n counterset: true,\n countersethover: true,\n cursor: true,\n cursorhover: true,\n cx: true,\n cxhover: true,\n cy: true,\n cyhover: true,\n d: true,\n dhover: true,\n descentoverride: true,\n descentoverridehover: true,\n direction: true,\n directionhover: true,\n display: true,\n displayhover: true,\n dominantbaseline: true,\n dominantbaselinehover: true,\n emptycells: true,\n emptycellshover: true,\n fallback: true,\n fallbackhover: true,\n fieldsizing: true,\n fieldsizinghover: true,\n fill: true,\n fillhover: true,\n fillopacity: true,\n fillopacityhover: true,\n fillrule: true,\n fillrulehover: true,\n filter: true,\n filterhover: true,\n flex: true,\n flexhover: true,\n flexbasis: true,\n flexbasishover: true,\n flexdirection: true,\n flexdirectionhover: true,\n flexflow: true,\n flexflowhover: true,\n flexgrow: true,\n flexgrowhover: true,\n flexshrink: true,\n flexshrinkhover: true,\n flexwrap: true,\n flexwraphover: true,\n float: true,\n floathover: true,\n floodcolor: true,\n floodcolorhover: true,\n floodopacity: true,\n floodopacityhover: true,\n font: true,\n fonthover: true,\n fontdisplay: true,\n fontdisplayhover: true,\n fontfamily: true,\n fontfamilyhover: true,\n fontfeaturesettings: true,\n fontfeaturesettingshover: true,\n fontkerning: true,\n fontkerninghover: true,\n fontopticalsizing: true,\n fontopticalsizinghover: true,\n fontpalette: true,\n fontpalettehover: true,\n fontsize: true,\n fontsizehover: true,\n fontsizeadjust: true,\n fontsizeadjusthover: true,\n fontstretch: true,\n fontstretchhover: true,\n fontstyle: true,\n fontstylehover: true,\n fontsynthesis: true,\n fontsynthesishover: true,\n fontsynthesissmallcaps: true,\n fontsynthesissmallcapshover: true,\n fontsynthesisstyle: true,\n fontsynthesisstylehover: true,\n fontsynthesisweight: true,\n fontsynthesisweighthover: true,\n fontvariant: true,\n fontvarianthover: true,\n fontvariantalternates: true,\n fontvariantalternateshover: true,\n fontvariantcaps: true,\n fontvariantcapshover: true,\n fontvarianteastasian: true,\n fontvarianteastasianhover: true,\n fontvariantemoji: true,\n fontvariantemojihover: true,\n fontvariantligatures: true,\n fontvariantligatureshover: true,\n fontvariantnumeric: true,\n fontvariantnumerichover: true,\n fontvariantposition: true,\n fontvariantpositionhover: true,\n fontvariationsettings: true,\n fontvariationsettingshover: true,\n fontweight: true,\n fontweighthover: true,\n forcedcoloradjust: true,\n forcedcoloradjusthover: true,\n gap: true,\n gaphover: true,\n grid: true,\n gridhover: true,\n gridarea: true,\n gridareahover: true,\n gridautocolumns: true,\n gridautocolumnshover: true,\n gridautoflow: true,\n gridautoflowhover: true,\n gridautorows: true,\n gridautorowshover: true,\n gridcolumn: true,\n gridcolumnhover: true,\n gridcolumnend: true,\n gridcolumnendhover: true,\n gridcolumngap: true,\n gridcolumngaphover: true,\n gridcolumnstart: true,\n gridcolumnstarthover: true,\n gridgap: true,\n gridgaphover: true,\n gridrow: true,\n gridrowhover: true,\n gridrowend: true,\n gridrowendhover: true,\n gridrowgap: true,\n gridrowgaphover: true,\n gridrowstart: true,\n gridrowstarthover: true,\n gridtemplate: true,\n gridtemplatehover: true,\n gridtemplateareas: true,\n gridtemplateareashover: true,\n gridtemplatecolumns: true,\n gridtemplatecolumnshover: true,\n gridtemplaterows: true,\n gridtemplaterowshover: true,\n height: true,\n heighthover: true,\n hyphenatecharacter: true,\n hyphenatecharacterhover: true,\n hyphenatelimitchars: true,\n hyphenatelimitcharshover: true,\n hyphens: true,\n hyphenshover: true,\n imageorientation: true,\n imageorientationhover: true,\n imagerendering: true,\n imagerenderinghover: true,\n inherits: true,\n inheritshover: true,\n initialletter: true,\n initialletterhover: true,\n initialvalue: true,\n initialvaluehover: true,\n inlinesize: true,\n inlinesizehover: true,\n inset: true,\n insethover: true,\n insetblock: true,\n insetblockhover: true,\n insetblockend: true,\n insetblockendhover: true,\n insetblockstart: true,\n insetblockstarthover: true,\n insetinline: true,\n insetinlinehover: true,\n insetinlineend: true,\n insetinlineendhover: true,\n insetinlinestart: true,\n insetinlinestarthover: true,\n interpolatesize: true,\n interpolatesizehover: true,\n isolation: true,\n isolationhover: true,\n justifycontent: true,\n justifycontenthover: true,\n justifyitems: true,\n justifyitemshover: true,\n justifyself: true,\n justifyselfhover: true,\n left: true,\n lefthover: true,\n letterspacing: true,\n letterspacinghover: true,\n lightingcolor: true,\n lightingcolorhover: true,\n linebreak: true,\n linebreakhover: true,\n linegapoverride: true,\n linegapoverridehover: true,\n lineheight: true,\n lineheighthover: true,\n liststyle: true,\n liststylehover: true,\n liststyleimage: true,\n liststyleimagehover: true,\n liststyleposition: true,\n liststylepositionhover: true,\n liststyletype: true,\n liststyletypehover: true,\n margin: true,\n marginhover: true,\n marginblock: true,\n marginblockhover: true,\n marginblockend: true,\n marginblockendhover: true,\n marginblockstart: true,\n marginblockstarthover: true,\n marginbottom: true,\n marginbottomhover: true,\n margininline: true,\n margininlinehover: true,\n margininlineend: true,\n margininlineendhover: true,\n margininlinestart: true,\n margininlinestarthover: true,\n marginleft: true,\n marginlefthover: true,\n marginright: true,\n marginrighthover: true,\n margintop: true,\n margintophover: true,\n marker: true,\n markerhover: true,\n markerend: true,\n markerendhover: true,\n markermid: true,\n markermidhover: true,\n markerstart: true,\n markerstarthover: true,\n mask: true,\n maskhover: true,\n maskclip: true,\n maskcliphover: true,\n maskcomposite: true,\n maskcompositehover: true,\n maskimage: true,\n maskimagehover: true,\n maskmode: true,\n maskmodehover: true,\n maskorigin: true,\n maskoriginhover: true,\n maskposition: true,\n maskpositionhover: true,\n maskrepeat: true,\n maskrepeathover: true,\n masksize: true,\n masksizehover: true,\n masktype: true,\n masktypehover: true,\n mathdepth: true,\n mathdepthhover: true,\n mathshift: true,\n mathshifthover: true,\n mathstyle: true,\n mathstylehover: true,\n maxblocksize: true,\n maxblocksizehover: true,\n maxheight: true,\n maxheighthover: true,\n maxinlinesize: true,\n maxinlinesizehover: true,\n maxwidth: true,\n maxwidthhover: true,\n minblocksize: true,\n minblocksizehover: true,\n minheight: true,\n minheighthover: true,\n mininlinesize: true,\n mininlinesizehover: true,\n minwidth: true,\n minwidthhover: true,\n mixblendmode: true,\n mixblendmodehover: true,\n navigation: true,\n navigationhover: true,\n negative: true,\n negativehover: true,\n objectfit: true,\n objectfithover: true,\n objectposition: true,\n objectpositionhover: true,\n objectviewbox: true,\n objectviewboxhover: true,\n offset: true,\n offsethover: true,\n offsetanchor: true,\n offsetanchorhover: true,\n offsetdistance: true,\n offsetdistancehover: true,\n offsetpath: true,\n offsetpathhover: true,\n offsetposition: true,\n offsetpositionhover: true,\n offsetrotate: true,\n offsetrotatehover: true,\n opacity: true,\n opacityhover: true,\n order: true,\n orderhover: true,\n orphans: true,\n orphanshover: true,\n outline: true,\n outlinehover: true,\n outlinecolor: true,\n outlinecolorhover: true,\n outlineoffset: true,\n outlineoffsethover: true,\n outlinestyle: true,\n outlinestylehover: true,\n outlinewidth: true,\n outlinewidthhover: true,\n overflow: true,\n overflowhover: true,\n overflowanchor: true,\n overflowanchorhover: true,\n overflowclipmargin: true,\n overflowclipmarginhover: true,\n overflowwrap: true,\n overflowwraphover: true,\n overflowx: true,\n overflowxhover: true,\n overflowy: true,\n overflowyhover: true,\n overlay: true,\n overlayhover: true,\n overridecolors: true,\n overridecolorshover: true,\n overscrollbehavior: true,\n overscrollbehaviorhover: true,\n overscrollbehaviorblock: true,\n overscrollbehaviorblockhover: true,\n overscrollbehaviorinline: true,\n overscrollbehaviorinlinehover: true,\n overscrollbehaviorx: true,\n overscrollbehaviorxhover: true,\n overscrollbehaviory: true,\n overscrollbehavioryhover: true,\n pad: true,\n padhover: true,\n padding: true,\n paddinghover: true,\n paddingblock: true,\n paddingblockhover: true,\n paddingblockend: true,\n paddingblockendhover: true,\n paddingblockstart: true,\n paddingblockstarthover: true,\n paddingbottom: true,\n paddingbottomhover: true,\n paddinginline: true,\n paddinginlinehover: true,\n paddinginlineend: true,\n paddinginlineendhover: true,\n paddinginlinestart: true,\n paddinginlinestarthover: true,\n paddingleft: true,\n paddinglefthover: true,\n paddingright: true,\n paddingrighthover: true,\n paddingtop: true,\n paddingtophover: true,\n page: true,\n pagehover: true,\n pagebreakafter: true,\n pagebreakafterhover: true,\n pagebreakbefore: true,\n pagebreakbeforehover: true,\n pagebreakinside: true,\n pagebreakinsidehover: true,\n pageorientation: true,\n pageorientationhover: true,\n paintorder: true,\n paintorderhover: true,\n perspective: true,\n perspectivehover: true,\n perspectiveorigin: true,\n perspectiveoriginhover: true,\n placecontent: true,\n placecontenthover: true,\n placeitems: true,\n placeitemshover: true,\n placeself: true,\n placeselfhover: true,\n pointerevents: true,\n pointereventshover: true,\n position: true,\n positionhover: true,\n positionanchor: true,\n positionanchorhover: true,\n positionarea: true,\n positionareahover: true,\n positiontry: true,\n positiontryhover: true,\n positiontryfallbacks: true,\n positiontryfallbackshover: true,\n positiontryorder: true,\n positiontryorderhover: true,\n positionvisibility: true,\n positionvisibilityhover: true,\n prefix: true,\n prefixhover: true,\n quotes: true,\n quoteshover: true,\n r: true,\n rhover: true,\n range: true,\n rangehover: true,\n resize: true,\n resizehover: true,\n right: true,\n righthover: true,\n rotate: true,\n rotatehover: true,\n rowgap: true,\n rowgaphover: true,\n rubyalign: true,\n rubyalignhover: true,\n rubyposition: true,\n rubypositionhover: true,\n rx: true,\n rxhover: true,\n ry: true,\n ryhover: true,\n scale: true,\n scalehover: true,\n scrollbehavior: true,\n scrollbehaviorhover: true,\n scrollinitialtarget: true,\n scrollinitialtargethover: true,\n scrollmargin: true,\n scrollmarginhover: true,\n scrollmarginblock: true,\n scrollmarginblockhover: true,\n scrollmarginblockend: true,\n scrollmarginblockendhover: true,\n scrollmarginblockstart: true,\n scrollmarginblockstarthover: true,\n scrollmarginbottom: true,\n scrollmarginbottomhover: true,\n scrollmargininline: true,\n scrollmargininlinehover: true,\n scrollmargininlineend: true,\n scrollmargininlineendhover: true,\n scrollmargininlinestart: true,\n scrollmargininlinestarthover: true,\n scrollmarginleft: true,\n scrollmarginlefthover: true,\n scrollmarginright: true,\n scrollmarginrighthover: true,\n scrollmargintop: true,\n scrollmargintophover: true,\n scrollpadding: true,\n scrollpaddinghover: true,\n scrollpaddingblock: true,\n scrollpaddingblockhover: true,\n scrollpaddingblockend: true,\n scrollpaddingblockendhover: true,\n scrollpaddingblockstart: true,\n scrollpaddingblockstarthover: true,\n scrollpaddingbottom: true,\n scrollpaddingbottomhover: true,\n scrollpaddinginline: true,\n scrollpaddinginlinehover: true,\n scrollpaddinginlineend: true,\n scrollpaddinginlineendhover: true,\n scrollpaddinginlinestart: true,\n scrollpaddinginlinestarthover: true,\n scrollpaddingleft: true,\n scrollpaddinglefthover: true,\n scrollpaddingright: true,\n scrollpaddingrighthover: true,\n scrollpaddingtop: true,\n scrollpaddingtophover: true,\n scrollsnapalign: true,\n scrollsnapalignhover: true,\n scrollsnapstop: true,\n scrollsnapstophover: true,\n scrollsnaptype: true,\n scrollsnaptypehover: true,\n scrolltimeline: true,\n scrolltimelinehover: true,\n scrolltimelineaxis: true,\n scrolltimelineaxishover: true,\n scrolltimelinename: true,\n scrolltimelinenamehover: true,\n scrollbarcolor: true,\n scrollbarcolorhover: true,\n scrollbargutter: true,\n scrollbargutterhover: true,\n scrollbarwidth: true,\n scrollbarwidthhover: true,\n shapeimagethreshold: true,\n shapeimagethresholdhover: true,\n shapemargin: true,\n shapemarginhover: true,\n shapeoutside: true,\n shapeoutsidehover: true,\n shaperendering: true,\n shaperenderinghover: true,\n size: true,\n sizehover: true,\n sizeadjust: true,\n sizeadjusthover: true,\n speak: true,\n speakhover: true,\n speakas: true,\n speakashover: true,\n src: true,\n srchover: true,\n stopcolor: true,\n stopcolorhover: true,\n stopopacity: true,\n stopopacityhover: true,\n stroke: true,\n strokehover: true,\n strokedasharray: true,\n strokedasharrayhover: true,\n strokedashoffset: true,\n strokedashoffsethover: true,\n strokelinecap: true,\n strokelinecaphover: true,\n strokelinejoin: true,\n strokelinejoinhover: true,\n strokemiterlimit: true,\n strokemiterlimithover: true,\n strokeopacity: true,\n strokeopacityhover: true,\n strokewidth: true,\n strokewidthhover: true,\n suffix: true,\n suffixhover: true,\n symbols: true,\n symbolshover: true,\n syntax: true,\n syntaxhover: true,\n system: true,\n systemhover: true,\n tabsize: true,\n tabsizehover: true,\n tablelayout: true,\n tablelayouthover: true,\n textalign: true,\n textalignhover: true,\n textalignlast: true,\n textalignlasthover: true,\n textanchor: true,\n textanchorhover: true,\n textbox: true,\n textboxhover: true,\n textboxedge: true,\n textboxedgehover: true,\n textboxtrim: true,\n textboxtrimhover: true,\n textcombineupright: true,\n textcombineuprighthover: true,\n textdecoration: true,\n textdecorationhover: true,\n textdecorationcolor: true,\n textdecorationcolorhover: true,\n textdecorationline: true,\n textdecorationlinehover: true,\n textdecorationskipink: true,\n textdecorationskipinkhover: true,\n textdecorationstyle: true,\n textdecorationstylehover: true,\n textdecorationthickness: true,\n textdecorationthicknesshover: true,\n textemphasis: true,\n textemphasishover: true,\n textemphasiscolor: true,\n textemphasiscolorhover: true,\n textemphasisposition: true,\n textemphasispositionhover: true,\n textemphasisstyle: true,\n textemphasisstylehover: true,\n textindent: true,\n textindenthover: true,\n textorientation: true,\n textorientationhover: true,\n textoverflow: true,\n textoverflowhover: true,\n textrendering: true,\n textrenderinghover: true,\n textshadow: true,\n textshadowhover: true,\n textsizeadjust: true,\n textsizeadjusthover: true,\n textspacingtrim: true,\n textspacingtrimhover: true,\n texttransform: true,\n texttransformhover: true,\n textunderlineoffset: true,\n textunderlineoffsethover: true,\n textunderlineposition: true,\n textunderlinepositionhover: true,\n textwrap: true,\n textwraphover: true,\n textwrapmode: true,\n textwrapmodehover: true,\n textwrapstyle: true,\n textwrapstylehover: true,\n timelinescope: true,\n timelinescopehover: true,\n top: true,\n tophover: true,\n touchaction: true,\n touchactionhover: true,\n transform: true,\n transformhover: true,\n transformbox: true,\n transformboxhover: true,\n transformorigin: true,\n transformoriginhover: true,\n transformstyle: true,\n transformstylehover: true,\n transition: true,\n transitionhover: true,\n transitionbehavior: true,\n transitionbehaviorhover: true,\n transitiondelay: true,\n transitiondelayhover: true,\n transitionduration: true,\n transitiondurationhover: true,\n transitionproperty: true,\n transitionpropertyhover: true,\n transitiontimingfunction: true,\n transitiontimingfunctionhover: true,\n translate: true,\n translatehover: true,\n types: true,\n typeshover: true,\n unicodebidi: true,\n unicodebidihover: true,\n unicoderange: true,\n unicoderangehover: true,\n userselect: true,\n userselecthover: true,\n vectoreffect: true,\n vectoreffecthover: true,\n verticalalign: true,\n verticalalignhover: true,\n viewtimeline: true,\n viewtimelinehover: true,\n viewtimelineaxis: true,\n viewtimelineaxishover: true,\n viewtimelineinset: true,\n viewtimelineinsethover: true,\n viewtimelinename: true,\n viewtimelinenamehover: true,\n viewtransitionclass: true,\n viewtransitionclasshover: true,\n viewtransitionname: true,\n viewtransitionnamehover: true,\n visibility: true,\n visibilityhover: true,\n webkitaligncontent: true,\n webkitaligncontenthover: true,\n webkitalignitems: true,\n webkitalignitemshover: true,\n webkitalignself: true,\n webkitalignselfhover: true,\n webkitanimation: true,\n webkitanimationhover: true,\n webkitanimationdelay: true,\n webkitanimationdelayhover: true,\n webkitanimationdirection: true,\n webkitanimationdirectionhover: true,\n webkitanimationduration: true,\n webkitanimationdurationhover: true,\n webkitanimationfillmode: true,\n webkitanimationfillmodehover: true,\n webkitanimationiterationcount: true,\n webkitanimationiterationcounthover: true,\n webkitanimationname: true,\n webkitanimationnamehover: true,\n webkitanimationplaystate: true,\n webkitanimationplaystatehover: true,\n webkitanimationtimingfunction: true,\n webkitanimationtimingfunctionhover: true,\n webkitappregion: true,\n webkitappregionhover: true,\n webkitappearance: true,\n webkitappearancehover: true,\n webkitbackfacevisibility: true,\n webkitbackfacevisibilityhover: true,\n webkitbackgroundclip: true,\n webkitbackgroundcliphover: true,\n webkitbackgroundorigin: true,\n webkitbackgroundoriginhover: true,\n webkitbackgroundsize: true,\n webkitbackgroundsizehover: true,\n webkitborderafter: true,\n webkitborderafterhover: true,\n webkitborderaftercolor: true,\n webkitborderaftercolorhover: true,\n webkitborderafterstyle: true,\n webkitborderafterstylehover: true,\n webkitborderafterwidth: true,\n webkitborderafterwidthhover: true,\n webkitborderbefore: true,\n webkitborderbeforehover: true,\n webkitborderbeforecolor: true,\n webkitborderbeforecolorhover: true,\n webkitborderbeforestyle: true,\n webkitborderbeforestylehover: true,\n webkitborderbeforewidth: true,\n webkitborderbeforewidthhover: true,\n webkitborderbottomleftradius: true,\n webkitborderbottomleftradiushover: true,\n webkitborderbottomrightradius: true,\n webkitborderbottomrightradiushover: true,\n webkitborderend: true,\n webkitborderendhover: true,\n webkitborderendcolor: true,\n webkitborderendcolorhover: true,\n webkitborderendstyle: true,\n webkitborderendstylehover: true,\n webkitborderendwidth: true,\n webkitborderendwidthhover: true,\n webkitborderhorizontalspacing: true,\n webkitborderhorizontalspacinghover: true,\n webkitborderimage: true,\n webkitborderimagehover: true,\n webkitborderradius: true,\n webkitborderradiushover: true,\n webkitborderstart: true,\n webkitborderstarthover: true,\n webkitborderstartcolor: true,\n webkitborderstartcolorhover: true,\n webkitborderstartstyle: true,\n webkitborderstartstylehover: true,\n webkitborderstartwidth: true,\n webkitborderstartwidthhover: true,\n webkitbordertopleftradius: true,\n webkitbordertopleftradiushover: true,\n webkitbordertoprightradius: true,\n webkitbordertoprightradiushover: true,\n webkitborderverticalspacing: true,\n webkitborderverticalspacinghover: true,\n webkitboxalign: true,\n webkitboxalignhover: true,\n webkitboxdecorationbreak: true,\n webkitboxdecorationbreakhover: true,\n webkitboxdirection: true,\n webkitboxdirectionhover: true,\n webkitboxflex: true,\n webkitboxflexhover: true,\n webkitboxordinalgroup: true,\n webkitboxordinalgrouphover: true,\n webkitboxorient: true,\n webkitboxorienthover: true,\n webkitboxpack: true,\n webkitboxpackhover: true,\n webkitboxreflect: true,\n webkitboxreflecthover: true,\n webkitboxshadow: true,\n webkitboxshadowhover: true,\n webkitboxsizing: true,\n webkitboxsizinghover: true,\n webkitclippath: true,\n webkitclippathhover: true,\n webkitcolumnbreakafter: true,\n webkitcolumnbreakafterhover: true,\n webkitcolumnbreakbefore: true,\n webkitcolumnbreakbeforehover: true,\n webkitcolumnbreakinside: true,\n webkitcolumnbreakinsidehover: true,\n webkitcolumncount: true,\n webkitcolumncounthover: true,\n webkitcolumngap: true,\n webkitcolumngaphover: true,\n webkitcolumnrule: true,\n webkitcolumnrulehover: true,\n webkitcolumnrulecolor: true,\n webkitcolumnrulecolorhover: true,\n webkitcolumnrulestyle: true,\n webkitcolumnrulestylehover: true,\n webkitcolumnrulewidth: true,\n webkitcolumnrulewidthhover: true,\n webkitcolumnspan: true,\n webkitcolumnspanhover: true,\n webkitcolumnwidth: true,\n webkitcolumnwidthhover: true,\n webkitcolumns: true,\n webkitcolumnshover: true,\n webkitfilter: true,\n webkitfilterhover: true,\n webkitflex: true,\n webkitflexhover: true,\n webkitflexbasis: true,\n webkitflexbasishover: true,\n webkitflexdirection: true,\n webkitflexdirectionhover: true,\n webkitflexflow: true,\n webkitflexflowhover: true,\n webkitflexgrow: true,\n webkitflexgrowhover: true,\n webkitflexshrink: true,\n webkitflexshrinkhover: true,\n webkitflexwrap: true,\n webkitflexwraphover: true,\n webkitfontfeaturesettings: true,\n webkitfontfeaturesettingshover: true,\n webkitfontsmoothing: true,\n webkitfontsmoothinghover: true,\n webkithyphenatecharacter: true,\n webkithyphenatecharacterhover: true,\n webkitjustifycontent: true,\n webkitjustifycontenthover: true,\n webkitlinebreak: true,\n webkitlinebreakhover: true,\n webkitlineclamp: true,\n webkitlineclamphover: true,\n webkitlocale: true,\n webkitlocalehover: true,\n webkitlogicalheight: true,\n webkitlogicalheighthover: true,\n webkitlogicalwidth: true,\n webkitlogicalwidthhover: true,\n webkitmarginafter: true,\n webkitmarginafterhover: true,\n webkitmarginbefore: true,\n webkitmarginbeforehover: true,\n webkitmarginend: true,\n webkitmarginendhover: true,\n webkitmarginstart: true,\n webkitmarginstarthover: true,\n webkitmask: true,\n webkitmaskhover: true,\n webkitmaskboximage: true,\n webkitmaskboximagehover: true,\n webkitmaskboximageoutset: true,\n webkitmaskboximageoutsethover: true,\n webkitmaskboximagerepeat: true,\n webkitmaskboximagerepeathover: true,\n webkitmaskboximageslice: true,\n webkitmaskboximageslicehover: true,\n webkitmaskboximagesource: true,\n webkitmaskboximagesourcehover: true,\n webkitmaskboximagewidth: true,\n webkitmaskboximagewidthhover: true,\n webkitmaskclip: true,\n webkitmaskcliphover: true,\n webkitmaskcomposite: true,\n webkitmaskcompositehover: true,\n webkitmaskimage: true,\n webkitmaskimagehover: true,\n webkitmaskorigin: true,\n webkitmaskoriginhover: true,\n webkitmaskposition: true,\n webkitmaskpositionhover: true,\n webkitmaskpositionx: true,\n webkitmaskpositionxhover: true,\n webkitmaskpositiony: true,\n webkitmaskpositionyhover: true,\n webkitmaskrepeat: true,\n webkitmaskrepeathover: true,\n webkitmasksize: true,\n webkitmasksizehover: true,\n webkitmaxlogicalheight: true,\n webkitmaxlogicalheighthover: true,\n webkitmaxlogicalwidth: true,\n webkitmaxlogicalwidthhover: true,\n webkitminlogicalheight: true,\n webkitminlogicalheighthover: true,\n webkitminlogicalwidth: true,\n webkitminlogicalwidthhover: true,\n webkitopacity: true,\n webkitopacityhover: true,\n webkitorder: true,\n webkitorderhover: true,\n webkitpaddingafter: true,\n webkitpaddingafterhover: true,\n webkitpaddingbefore: true,\n webkitpaddingbeforehover: true,\n webkitpaddingend: true,\n webkitpaddingendhover: true,\n webkitpaddingstart: true,\n webkitpaddingstarthover: true,\n webkitperspective: true,\n webkitperspectivehover: true,\n webkitperspectiveorigin: true,\n webkitperspectiveoriginhover: true,\n webkitperspectiveoriginx: true,\n webkitperspectiveoriginxhover: true,\n webkitperspectiveoriginy: true,\n webkitperspectiveoriginyhover: true,\n webkitprintcoloradjust: true,\n webkitprintcoloradjusthover: true,\n webkitrtlordering: true,\n webkitrtlorderinghover: true,\n webkitrubyposition: true,\n webkitrubypositionhover: true,\n webkitshapeimagethreshold: true,\n webkitshapeimagethresholdhover: true,\n webkitshapemargin: true,\n webkitshapemarginhover: true,\n webkitshapeoutside: true,\n webkitshapeoutsidehover: true,\n webkittaphighlightcolor: true,\n webkittaphighlightcolorhover: true,\n webkittextcombine: true,\n webkittextcombinehover: true,\n webkittextdecorationsineffect: true,\n webkittextdecorationsineffecthover: true,\n webkittextemphasis: true,\n webkittextemphasishover: true,\n webkittextemphasiscolor: true,\n webkittextemphasiscolorhover: true,\n webkittextemphasisposition: true,\n webkittextemphasispositionhover: true,\n webkittextemphasisstyle: true,\n webkittextemphasisstylehover: true,\n webkittextfillcolor: true,\n webkittextfillcolorhover: true,\n webkittextorientation: true,\n webkittextorientationhover: true,\n webkittextsecurity: true,\n webkittextsecurityhover: true,\n webkittextsizeadjust: true,\n webkittextsizeadjusthover: true,\n webkittextstroke: true,\n webkittextstrokehover: true,\n webkittextstrokecolor: true,\n webkittextstrokecolorhover: true,\n webkittextstrokewidth: true,\n webkittextstrokewidthhover: true,\n webkittransform: true,\n webkittransformhover: true,\n webkittransformorigin: true,\n webkittransformoriginhover: true,\n webkittransformoriginx: true,\n webkittransformoriginxhover: true,\n webkittransformoriginy: true,\n webkittransformoriginyhover: true,\n webkittransformoriginz: true,\n webkittransformoriginzhover: true,\n webkittransformstyle: true,\n webkittransformstylehover: true,\n webkittransition: true,\n webkittransitionhover: true,\n webkittransitiondelay: true,\n webkittransitiondelayhover: true,\n webkittransitionduration: true,\n webkittransitiondurationhover: true,\n webkittransitionproperty: true,\n webkittransitionpropertyhover: true,\n webkittransitiontimingfunction: true,\n webkittransitiontimingfunctionhover: true,\n webkituserdrag: true,\n webkituserdraghover: true,\n webkitusermodify: true,\n webkitusermodifyhover: true,\n webkituserselect: true,\n webkituserselecthover: true,\n webkitwritingmode: true,\n webkitwritingmodehover: true,\n whitespace: true,\n whitespacehover: true,\n whitespacecollapse: true,\n whitespacecollapsehover: true,\n widows: true,\n widowshover: true,\n width: true,\n widthhover: true,\n willchange: true,\n willchangehover: true,\n wordbreak: true,\n wordbreakhover: true,\n wordspacing: true,\n wordspacinghover: true,\n wordwrap: true,\n wordwraphover: true,\n writingmode: true,\n writingmodehover: true,\n x: true,\n xhover: true,\n y: true,\n yhover: true,\n zindex: true,\n zindexhover: true,\n zoom: true,\n zoomhover: true,\n};\n","import { createContext, memo, useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport { createGlobalStyle } from \"styled-components\";\n\nimport { theme } from \"../constants/theme\";\nimport { icons } from \"../constants/icons\";\nimport { assets } from \"../constants/assets\";\nimport { appConfig } from \"../constants/app\";\n\nimport { BetterHtmlConfig } from \"../types/config\";\nimport { AnyOtherString, DeepPartialRecord, OmitProps } from \"../types/app\";\nimport { ColorTheme } from \"../types/theme\";\nimport { LoaderConfig, LoaderName } from \"../types/loader\";\nimport { BetterHtmlPlugin, PluginName } from \"../types/plugin\";\n\nconst GlobalStyle = createGlobalStyle<{ fontFamily: string; color: string; backgroundColor: string }>`\n body {\n font-family: ${(props) => props.fontFamily};\n color: ${(props) => props.color};\n background-color: ${(props) => props.backgroundColor};\n }\n\n * {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n -webkit-tap-highlight-color: transparent;\n }\n\n a {\n text-decoration: none;\n color: inherit;\n }\n\n .react-better-html-no-scrollbar::-webkit-scrollbar {\n display: none;\n }\n`;\n\nexport type BetterHtmlInternalConfig = BetterHtmlConfig & {\n setLoaders: React.Dispatch<React.SetStateAction<Partial<LoaderConfig>>>;\n plugins: BetterHtmlPlugin[];\n};\n\nconst betterHtmlContext = createContext<BetterHtmlInternalConfig | undefined>(undefined);\n\nexport let externalBetterHtmlContextValue: BetterHtmlInternalConfig | undefined;\n\nexport const useBetterHtmlContext = (): BetterHtmlConfig => {\n const context = useContext(betterHtmlContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterHtmlContext()` must be used within a `<BetterHtmlProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n const { setLoaders, plugins, ...rest } = context;\n\n return rest;\n};\n\nexport const useTheme = () => {\n const context = useContext(betterHtmlContext);\n\n if (context === undefined)\n throw new Error(\n \"`useTheme()` must be used within a `<BetterHtmlProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n return {\n ...context.theme,\n colors: context.theme.colors[context.colorTheme] ?? context.theme.colors.light,\n };\n};\n\nexport const useLoader = (loaderName?: LoaderName | AnyOtherString): boolean => {\n const context = useContext(betterHtmlContext);\n\n if (context === undefined)\n throw new Error(\n \"`useLoader()` must be used within a `<BetterHtmlProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n return loaderName ? context.loaders[loaderName.toString()] ?? false : false;\n};\n\nexport const useLoaderControls = () => {\n const context = useContext(betterHtmlContext);\n\n if (context === undefined)\n throw new Error(\n \"`useLoaderControls()` must be used within a `<BetterHtmlProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n const startLoading = useCallback((loaderName: LoaderName | AnyOtherString) => {\n context.setLoaders((oldValue) => ({\n ...oldValue,\n [loaderName.toString()]: true,\n }));\n }, []);\n const stopLoading = useCallback((loaderName: LoaderName | AnyOtherString) => {\n context.setLoaders((oldValue) => ({\n ...oldValue,\n [loaderName.toString()]: false,\n }));\n }, []);\n\n return {\n startLoading,\n stopLoading,\n };\n};\n\nexport const usePlugin = (pluginName: PluginName): BetterHtmlPlugin | undefined => {\n const context = useContext(betterHtmlContext);\n\n if (context === undefined) {\n throw new Error(\n \"`usePlugin()` must be used within a `<BetterHtmlProvider>`. Make sure to add one at the root of your component tree.\",\n );\n }\n\n return context.plugins.find((plugin: BetterHtmlPlugin) => plugin.name === pluginName);\n};\n\ntype BetterHtmlProviderContentProps = {\n children?: React.ReactNode;\n};\n\nfunction BetterHtmlProviderContent({ children }: BetterHtmlProviderContentProps) {\n const theme = useTheme();\n\n return (\n <>\n <GlobalStyle\n fontFamily={theme.styles.fontFamily}\n color={theme.colors.textPrimary}\n backgroundColor={theme.colors.backgroundBase}\n />\n\n {children}\n </>\n );\n}\n\nexport type BetterHtmlProviderValue = DeepPartialRecord<OmitProps<BetterHtmlConfig, \"colorTheme\">>;\n\ntype BetterHtmlProviderProps = {\n value?: BetterHtmlProviderValue;\n plugins?: BetterHtmlPlugin[];\n children?: React.ReactNode;\n};\n\nfunction BetterHtmlProvider({ value, plugins: pluginsToUse, children }: BetterHtmlProviderProps) {\n const [loaders, setLoaders] = useState<Partial<LoaderConfig>>(value?.loaders ?? {});\n const [plugins] = useState<BetterHtmlPlugin[]>(pluginsToUse ?? []);\n const [colorTheme, setColorTheme] = useState<ColorTheme>(\n localStorage.getItem(\"theme\") === \"dark\" ? \"dark\" : \"light\",\n );\n\n const readyValue = useMemo<BetterHtmlInternalConfig>(\n () => ({\n app: {\n ...appConfig,\n ...value?.app,\n },\n theme: {\n styles: {\n ...theme.styles,\n ...value?.theme?.styles,\n },\n colors: {\n light: {\n ...theme.colors.light,\n ...value?.theme?.colors?.light,\n },\n dark: {\n ...theme.colors.dark,\n ...value?.theme?.colors?.dark,\n },\n },\n },\n colorTheme,\n icons: {\n ...icons,\n ...value?.icons,\n },\n assets: {\n ...assets,\n ...value?.assets,\n },\n loaders,\n setLoaders,\n components: {\n ...value?.components,\n },\n plugins,\n }),\n [value, colorTheme, loaders, plugins],\n );\n\n useEffect(() => {\n plugins.forEach((plugin) => {\n plugin.initialize?.();\n });\n }, [plugins]);\n useEffect(() => {\n const html = document.querySelector(\"html\");\n\n if (!html) return;\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === \"attributes\") {\n setColorTheme(html.getAttribute(\"data-theme\") === \"dark\" ? \"dark\" : \"light\");\n }\n });\n });\n\n observer.observe(html, {\n attributes: true,\n });\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n externalBetterHtmlContextValue = readyValue;\n\n return (\n <betterHtmlContext.Provider value={readyValue}>\n <BetterHtmlProviderContent>{children}</BetterHtmlProviderContent>\n </betterHtmlContext.Provider>\n );\n}\n\nexport default memo(BetterHtmlProvider);\n","import { ThemeConfig } from \"../types/theme\";\n\nexport const theme: ThemeConfig = {\n styles: {\n space: 16,\n gap: 8,\n borderRadius: 10,\n fontFamily: \"Arial, sans-serif\",\n transition: \"ease 0.2s\",\n },\n colors: {\n light: {\n textPrimary: \"#111111\",\n textSecondary: \"#777777\",\n textLink: \"#0894ff\",\n label: \"#111111\",\n primary: \"#6d466b\",\n secondary: \"#412234\",\n accent: \"#16d7ed\",\n success: \"#28a745\",\n info: \"#0fa0da\",\n warn: \"#ffc107\",\n error: \"#dc3545\",\n base: \"#f8f8f8\",\n backgroundBase: \"#f8f8f8\",\n backgroundSecondary: \"#e8e8e8\",\n backgroundContent: \"#ffffff\",\n border: \"#ced4da\",\n },\n dark: {\n textPrimary: \"#f8f8f8\",\n textSecondary: \"#e8e8e8\",\n textLink: \"#0894ff\",\n label: \"#111111\",\n primary: \"#9b6499\",\n secondary: \"#6c466b\",\n accent: \"#16d7ed\",\n success: \"#28a745\",\n info: \"#0fa0da\",\n warn: \"#ffc107\",\n error: \"#dc3545\",\n base: \"#f8f8f8\",\n backgroundBase: \"#111111\",\n backgroundSecondary: \"#222222\",\n backgroundContent: \"#333333\",\n border: \"#777777\",\n },\n },\n};\n","import { IconsConfig } from \"../types/icon\";\n\nexport const icons: IconsConfig = {\n XMark: {\n width: 384,\n height: 512,\n paths: [\n {\n d: \"M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z\",\n type: \"fill\",\n },\n ],\n },\n uploadCloud: {\n width: 640,\n height: 512,\n paths: [\n {\n d: \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128l-368 0zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39L296 392c0 13.3 10.7 24 24 24s24-10.7 24-24l0-134.1 39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\",\n type: \"fill\",\n },\n ],\n },\n trash: {\n width: 448,\n height: 512,\n paths: [\n {\n d: \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3zM32 128l384 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zm96 64c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16z\",\n type: \"fill\",\n },\n ],\n },\n chevronDown: {\n width: 512,\n height: 512,\n paths: [\n {\n d: \"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\",\n type: \"fill\",\n },\n ],\n },\n eye: {\n width: 576,\n height: 512,\n paths: [\n {\n d: \"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z\",\n type: \"fill\",\n },\n ],\n },\n eyeDashed: {\n width: 640,\n height: 512,\n paths: [\n {\n d: \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\",\n type: \"fill\",\n },\n ],\n },\n magnifyingGlass: {\n width: 512,\n height: 512,\n paths: [\n {\n d: \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\",\n type: \"fill\",\n },\n ],\n },\n check: {\n width: 448,\n height: 512,\n paths: [\n {\n d: \"M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\",\n type: \"fill\",\n },\n ],\n },\n};\n","import { AssetsConfig } from \"../types/asset\";\n\nexport const assets: AssetsConfig = {\n logo: \"\",\n};\n","import { AppConfig } from \"../types/config\";\n\nexport const appConfig: AppConfig = {\n contentMaxWidth: 1100,\n};\n","import { forwardRef, memo } from \"react\";\nimport styled from \"styled-components\";\n\nimport { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from \"../types/components\";\nimport { OmitProps } from \"../types/app\";\n\nimport { useComponentPropsWithoutStyle, useComponentPropsWithPrefix, useStyledComponentStyles } from \"../utils/hooks\";\n\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nconst TextStyledComponent = styled.div.withConfig({\n shouldForwardProp: (prop) => ![\"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{ normalStyle: ComponentStyle; hoverStyle: ComponentStyle }>`\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nexport type TextAs = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"label\";\n\nexport type TextProps = {\n /** @default \"p\" */\n as?: TextAs;\n} & OmitProps<React.ComponentProps<\"p\">, \"style\"> &\n ComponentStyle &\n ComponentHoverStyle;\n\ntype TextComponentType = {\n (props: ComponentPropWithRef<HTMLParagraphElement, TextProps>): React.ReactElement;\n unknown: (props: ComponentPropWithRef<HTMLParagraphElement, TextProps>) => React.ReactElement;\n oneLine: (props: ComponentPropWithRef<HTMLParagraphElement, TextProps>) => React.ReactElement;\n};\n\nconst TextComponent: TextComponentType = forwardRef(function Text(\n { as = \"p\", children, ...props }: TextProps,\n ref: React.ForwardedRef<HTMLParagraphElement>,\n) {\n const theme = useTheme();\n\n const styledComponentStyles = useStyledComponentStyles(props, theme);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n return (\n <TextStyledComponent as={as} {...styledComponentStyles} {...dataProps} {...ariaProps} {...restProps} ref={ref}>\n {children}\n </TextStyledComponent>\n );\n}) as any;\n\nTextComponent.unknown = forwardRef(function Unknown(props, ref) {\n const theme = useTheme();\n\n return (\n <TextComponent fontStyle=\"italic\" textAlign=\"center\" color={theme.colors.textSecondary} ref={ref} {...props} />\n );\n}) as TextComponentType[\"unknown\"];\n\nTextComponent.oneLine = forwardRef(function OneLine(props, ref) {\n return <TextComponent textOverflow=\"ellipsis\" whiteSpace=\"nowrap\" overflow=\"hidden\" ref={ref} {...props} />;\n}) as TextComponentType[\"oneLine\"];\n\nconst Text = memo(TextComponent) as any as typeof TextComponent & {\n unknown: typeof TextComponent.unknown;\n oneLine: typeof TextComponent.oneLine;\n};\n\nText.unknown = TextComponent.unknown;\nText.oneLine = TextComponent.oneLine;\n\nexport default Text;\n","import { memo } from \"react\";\nimport styled from \"styled-components\";\n\nimport { Color } from \"../types/theme\";\nimport { OmitProps } from \"../types/app\";\n\nimport Div, { DivProps } from \"./Div\";\nimport Text from \"./Text\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nexport type LoaderProps = {\n /** @default textPrimary */\n color?: Color;\n /** @default 16 */\n size?: number;\n /** @default 5 */\n width?: number;\n /** @default false */\n disabled?: boolean;\n} & OmitProps<\n DivProps<unknown>,\n | \"width\"\n | \"height\"\n | \"color\"\n | \"background\"\n | \"borderRadius\"\n | \"mask\"\n | \"WebkitMask\"\n | \"padding\"\n | \"animation\"\n | \"animationName\"\n>;\n\ntype LoaderComponentType = {\n (props: LoaderProps): React.ReactElement;\n box: (\n props: OmitProps<LoaderProps, \"size\"> & {\n /** @default \"Loading...\" */\n text?: string;\n /** @default 20 */\n size?: number;\n },\n ) => React.ReactElement;\n text: (\n props: OmitProps<LoaderProps, \"size\"> & {\n /** @default \"Loading...\" */\n text?: string;\n /** @default 14 */\n size?: number;\n },\n ) => React.ReactElement;\n};\n\nconst StyledDiv = styled(Div)`\n @keyframes loaderAnimation {\n to {\n transform: rotate(360deg);\n }\n }\n\n @keyframes textLoaderAnimation {\n to {\n clip-path: inset(0 -1ch 0 0);\n }\n }\n`;\n\nconst LoaderComponent: LoaderComponentType = function Loader({\n color,\n size = 16,\n width,\n disabled,\n ...props\n}: LoaderProps) {\n const theme = useTheme();\n\n const readyColor: Color = color ?? theme.colors.textPrimary;\n const readyWidth: number = width ?? size / 3;\n const mask: React.CSSProperties[\"mask\"] = `radial-gradient(farthest-side, #0000 calc(100% - ${readyWidth}px), #000 0)`;\n\n return (\n <StyledDiv\n width={size + readyWidth * 2}\n height={size + readyWidth * 2}\n background={`radial-gradient(farthest-side, ${readyColor} 94%, #0000) top/${readyWidth}px ${readyWidth}px no-repeat, conic-gradient(#0000 30%, ${readyColor})`}\n borderRadius={999}\n mask={mask}\n WebkitMask={mask}\n padding={readyWidth}\n animation={!disabled ? \"loaderAnimation .6s infinite linear\" : undefined}\n {...props}\n />\n );\n} as any;\n\nLoaderComponent.box = function Box({ text = \"Loading...\", size = 20, ...props }) {\n const theme = useTheme();\n\n return (\n <Div.column width=\"100%\" alignItems=\"center\" gap={theme.styles.gap}>\n <Loader size={size} {...props} />\n\n {text && (\n <Text textAlign=\"center\" color={props.color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </Div.column>\n );\n} as LoaderComponentType[\"box\"];\n\nLoaderComponent.text = function LoaderText({ text = \"Loading...\", size = 14, ...props }) {\n const theme = useTheme();\n\n return (\n <Div.row alignItems=\"center\" gap={theme.styles.gap}>\n <Loader size={size} {...props} />\n\n {text && (\n <Text textAlign=\"center\" color={props.color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </Div.row>\n );\n} as LoaderComponentType[\"text\"];\n\nconst Loader = memo(LoaderComponent) as any as typeof LoaderComponent & {\n box: typeof LoaderComponent.box;\n text: typeof LoaderComponent.text;\n};\n\nLoader.box = LoaderComponent.box;\nLoader.text = LoaderComponent.text;\n\nexport default Loader;\n","import { forwardRef, memo, useEffect } from \"react\";\nimport styled from \"styled-components\";\n\nimport { AnyOtherString, OmitProps } from \"../types/app\";\nimport { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from \"../types/components\";\nimport { IconName } from \"../types/icon\";\n\nimport { useComponentPropsWithoutStyle, useComponentPropsWithPrefix, useStyledComponentStyles } from \"../utils/hooks\";\n\nimport { useBetterHtmlContext, useTheme } from \"./BetterHtmlProvider\";\n\nexport type IconProps = {\n name: IconName | AnyOtherString;\n /** @default 16 */\n size?: number;\n} & OmitProps<React.ComponentProps<\"svg\">, \"style\" | \"width\" | \"height\" | \"viewBox\" | \"fill\" | \"xmlns\" | \"name\"> &\n ComponentStyle &\n ComponentHoverStyle;\n\ntype IconComponent = {\n (props: ComponentPropWithRef<SVGSVGElement, IconProps>): React.ReactElement;\n};\n\nconst IconElement = styled.svg.withConfig({\n shouldForwardProp: (prop) => ![\"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{ normalStyle: ComponentStyle; hoverStyle: ComponentStyle }>`\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nconst Icon: IconComponent = forwardRef(function Icon(\n { name, size = 16, ...props }: IconProps,\n ref: React.ForwardedRef<SVGSVGElement>,\n) {\n const theme = useTheme();\n const { icons } = useBetterHtmlContext();\n\n const styledComponentStyles = useStyledComponentStyles(props, theme);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n const svgColor = props.color ?? theme.colors.textPrimary;\n\n useEffect(() => {\n if (!icons[name.toString()])\n console.warn(\n `The icon \\`${name}\\` you are trying to use does not exist. Make sure to add it to the \\`icons\\` object in \\`<BetterHtmlProvider>\\` config value prop.`,\n );\n }, [icons, name]);\n\n return (\n <IconElement\n width={size}\n height={size}\n viewBox={`0 0 ${icons[name.toString()]?.width ?? 0} ${icons[name.toString()]?.height ?? 0}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...styledComponentStyles}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n ref={ref}\n >\n {icons[name.toString()]?.paths.map((path) => (\n <path\n {...path}\n fill={path.type === \"fill\" ? svgColor : undefined}\n stroke={path.type === \"stroke\" ? svgColor : undefined}\n key={path.d}\n />\n ))}\n </IconElement>\n );\n}) as any;\n\nconst MemoizedIcon = memo(Icon) as any as typeof Icon & {};\n\nexport default { Icon: MemoizedIcon }.Icon;\n","import { forwardRef, memo, useCallback, useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport { AnyOtherString, OmitProps } from \"../types/app\";\nimport { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from \"../types/components\";\nimport { AssetName } from \"../types/asset\";\nimport { useBetterHtmlContext, useTheme } from \"./BetterHtmlProvider\";\nimport { useComponentPropsWithoutStyle, useComponentPropsWithPrefix, useStyledComponentStyles } from \"../utils/hooks\";\n\nexport type ImageProps = {\n name?: AssetName | AnyOtherString;\n} & OmitProps<React.ComponentProps<\"img\">, \"style\"> &\n ComponentStyle &\n ComponentHoverStyle;\n\ntype ImageComponent = {\n (props: ComponentPropWithRef<HTMLImageElement, ImageProps>): React.ReactElement;\n profileImage: (\n props: ComponentPropWithRef<\n HTMLImageElement,\n OmitProps<ImageProps, \"width\" | \"height\"> & {\n /** @default 40 */\n size?: number;\n }\n >,\n ) => React.ReactElement;\n};\n\nconst ImageElement = styled.img.withConfig({\n shouldForwardProp: (prop) => ![\"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{ normalStyle: ComponentStyle; hoverStyle: ComponentStyle }>`\n display: block;\n user-select: none;\n -webkit-user-drag: none;\n\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nconst Image: ImageComponent = forwardRef(function Image(\n { name, src, ...props }: ImageProps,\n ref: React.ForwardedRef<HTMLImageElement>,\n) {\n const theme = useTheme();\n const { assets } = useBetterHtmlContext();\n\n const styledComponentStyles = useStyledComponentStyles(props, theme);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n useEffect(() => {\n if (!name) return;\n\n if (!assets[name.toString()])\n console.warn(\n `The asset \\`${name}\\` you are trying to use does not exist. Make sure to add it to the \\`assets\\` object in \\`<BetterHtmlProvider>\\` config value prop.`,\n );\n }, [assets, name]);\n\n return (\n <ImageElement\n {...styledComponentStyles}\n src={name ? assets[name.toString()] : src}\n {...styledComponentStyles}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n ref={ref}\n />\n );\n}) as any;\n\nImage.profileImage = forwardRef(function ProfileImage({ size = 40, ...props }, ref) {\n return <Image width={size} height={size} borderRadius=\"50%\" objectFit=\"cover\" ref={ref} {...props} />;\n}) as ImageComponent[\"profileImage\"];\n\nconst MemoizedImage = memo(Image) as any as typeof Image & {\n profileImage: typeof Image.profileImage;\n};\n\nMemoizedImage.profileImage = Image.profileImage;\n\nexport default { Image: MemoizedImage }.Image;\n","import { ComponentProps, memo, useCallback } from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport { IconName } from \"../types/icon\";\nimport { AssetName } from \"../types/asset\";\nimport { LoaderName } from \"../types/loader\";\nimport { AnyOtherString, OmitProps } from \"../types/app\";\nimport { ComponentHoverStyle, ComponentStyle } from \"../types/components\";\nimport { Color, Theme } from \"../types/theme\";\n\nimport { useComponentPropsWithoutStyle, useComponentPropsWithPrefix, useStyledComponentStyles } from \"../utils/hooks\";\n\nimport Div from \"./Div\";\nimport Icon from \"./Icon\";\nimport Loader from \"./Loader\";\nimport Image from \"./Image\";\nimport { useTheme, useLoader, useBetterHtmlContext } from \"./BetterHtmlProvider\";\n\nconst ButtonElement = styled.button.withConfig({\n shouldForwardProp: (prop) =>\n ![\"theme\", \"normalStyle\", \"hoverStyle\", \"isSmall\", \"withText\", \"isLoading\"].includes(prop),\n})<{\n theme: Theme;\n normalStyle: ComponentStyle;\n hoverStyle: ComponentStyle;\n isSmall?: boolean;\n withText?: boolean;\n disabled?: boolean;\n isLoading?: boolean;\n}>`\n display: block;\n position: relative;\n width: fit-content;\n min-width: max-content;\n font-family: ${(props) => props.theme.styles.fontFamily};\n font-size: 16px;\n line-height: 20px;\n text-decoration: none;\n color: ${(props) => props.theme.colors.base};\n background-color: ${(props) => props.theme.colors.primary};\n border: none;\n border-radius: ${(props) => props.theme.styles.borderRadius}px;\n padding: ${(props) =>\n props.isSmall\n ? `${props.theme.styles.gap + 1}px ${props.theme.styles.space}px`\n : `${(props.theme.styles.gap + props.theme.styles.space) / 2 + 1}px ${\n props.theme.styles.space + (props.withText ? props.theme.styles.gap : 0)\n }px`};\n user-select: none;\n flex-shrink: 0;\n transition: ${(props) => props.theme.styles.transition};\n\n ${(props) =>\n props.disabled\n ? css`\n opacity: 0.6;\n cursor: not-allowed;\n\n &.secondary:disabled {\n filter: brightness(0.9);\n }\n `\n : !props.isLoading\n ? css`\n cursor: pointer;\n\n &:not(.secondary):hover {\n filter: brightness(0.9);\n }\n\n &.secondary:hover {\n border-color: ${props.theme.colors.primary};\n }\n `\n : \"\"}\n\n &.secondary {\n padding-block: ${(props) =>\n props.isSmall ? props.theme.styles.gap : (props.theme.styles.space + props.theme.styles.gap) / 2}px;\n border: solid 1px ${(props) => props.theme.colors.border};\n background-color: ${(props) => props.theme.colors.backgroundContent};\n background-image: none;\n\n ${(props) => props.normalStyle as any}\n }\n\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nexport type ButtonProps<Value> = {\n text?: string;\n value?: Value;\n\n href?: string;\n download?: string;\n target?: React.ComponentProps<\"a\">[\"target\"];\n\n icon?: IconName | AnyOtherString;\n /** @default \"left\" */\n iconPosition?: \"left\" | \"right\";\n /** @default Same as text color */\n iconColor?: string;\n /** @default 16 */\n iconSize?: number;\n\n image?: AssetName | AnyOtherString;\n /** @default \"left\" */\n imagePosition?: \"left\" | \"right\";\n /** @default 16 */\n imageWidth?: number;\n /** @default undefined */\n imageHeight?: number;\n\n loaderName?: LoaderName | AnyOtherString;\n /** @default 16 */\n loaderSize?: number;\n /** @default false */\n isLoading?: boolean;\n\n /** @default false */\n disabled?: boolean;\n /** @default false */\n isSmall?: boolean;\n /** @default false */\n isSubmit?: boolean;\n\n onClickWithValue?: (value: Value) => void;\n} & OmitProps<React.ComponentProps<\"button\">, \"style\" | \"defaultValue\" | \"translate\" | \"value\"> &\n ComponentStyle &\n ComponentHoverStyle;\n\ntype ButtonComponent = {\n <Value>(props: ButtonProps<Value>): React.ReactElement;\n secondary: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n destructive: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n icon: <Value>(\n props: OmitProps<ButtonProps<Value>, \"icon\" | \"width\" | \"height\" | \"isSmall\"> & {\n icon: IconName | AnyOtherString;\n /** @default 16 */\n size?: number;\n /** @default \"#000000\" */\n backgroundButtonColor?: string;\n },\n ) => React.ReactElement;\n upload: <Value>(\n props: OmitProps<ButtonProps<Value>, \"onClick\"> & {\n accept?: ComponentProps<\"input\">[\"accept\"];\n /** @default false */\n multiple?: boolean;\n onUpload?: (files: FileList | null) => void;\n },\n ) => React.ReactElement;\n};\n\nconst ButtonComponent: ButtonComponent = function Button<Value>({\n href,\n text,\n value,\n download,\n target,\n\n icon,\n iconPosition = \"left\",\n iconColor,\n iconSize,\n\n image,\n imagePosition = \"left\",\n imageWidth,\n imageHeight,\n\n loaderName,\n loaderSize,\n isLoading,\n\n disabled,\n isSmall,\n isSubmit,\n\n onClick,\n onClickWithValue,\n ...props\n}: ButtonProps<Value>) {\n const theme = useTheme();\n const isLoadingHook = useLoader(loaderName);\n const betterHtmlContext = useBetterHtmlContext();\n\n const isLoadingElement = isLoading ?? isLoadingHook;\n\n const styledComponentStyles = useStyledComponentStyles(\n {\n ...betterHtmlContext.components.button?.default,\n ...props,\n },\n theme,\n );\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n const onClickElement = useCallback(\n (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n onClick?.(event);\n onClickWithValue?.(value as any);\n },\n [onClick, onClickWithValue, value],\n );\n\n const iconComponent = icon ? (\n <Div.row height={20} alignItems=\"center\" justifyContent=\"center\">\n <Icon\n name={icon}\n color={iconColor ?? props.color ?? theme.colors.base}\n size={iconSize ?? parseInt(styledComponentStyles.normalStyle.fontSize?.toString() ?? \"16\")}\n />\n </Div.row>\n ) : undefined;\n const imageComponent = image ? (\n <Image\n name={image}\n color={iconColor ?? props.color ?? theme.colors.base}\n width={imageWidth ?? parseInt(styledComponentStyles.normalStyle.fontSize?.toString() ?? \"16\")}\n height={imageHeight}\n />\n ) : undefined;\n\n return (\n <ButtonElement\n as={(href ? \"a\" : \"button\") as any}\n theme={theme}\n isSmall={isSmall}\n withText={text !== undefined}\n isLoading={isLoadingElement}\n disabled={disabled}\n href={href}\n download={download}\n target={target}\n type={isSubmit && !isLoadingElement ? \"submit\" : \"button\"}\n onClick={!disabled && !isLoadingElement ? onClickElement : undefined}\n {...styledComponentStyles}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n >\n <Div.row\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={10}\n pointerEvents=\"none\"\n opacity={isLoadingElement ? 0 : 1}\n transition={theme.styles.transition}\n >\n {iconPosition === \"left\" && iconComponent}\n {imagePosition === \"left\" && imageComponent}\n\n {text}\n\n {iconPosition === \"right\" && iconComponent}\n {imagePosition === \"right\" && imageComponent}\n </Div.row>\n\n <Div.row\n position=\"absolute\"\n width=\"100%\"\n height=\"100%\"\n top={0}\n left={0}\n pointerEvents=\"none\"\n alignItems=\"center\"\n justifyContent=\"center\"\n opacity={isLoadingElement ? 1 : 0}\n transition={theme.styles.transition}\n >\n <Loader\n color={(props.color as Color) ?? theme.colors.base}\n size={loaderSize}\n disabled={!isLoadingElement}\n />\n </Div.row>\n </ButtonElement>\n );\n} as any;\n\nButtonComponent.secondary = function Secondary({ className, ...props }) {\n const theme = useTheme();\n const betterHtmlContext = useBetterHtmlContext();\n\n return (\n <ButtonComponent\n {...betterHtmlContext.components.button?.secondary}\n className={`secondary${className ? ` ${className}` : \"\"}`}\n color={theme.colors.textPrimary}\n {...props}\n />\n );\n} as ButtonComponent[\"secondary\"];\n\nButtonComponent.destructive = function Destructive(props) {\n const theme = useTheme();\n const betterHtmlContext = useBetterHtmlContext();\n\n return (\n <ButtonComponent\n {...betterHtmlContext.components.button?.destructive}\n backgroundColor={theme.colors.error}\n color={theme.colors.base}\n {...props}\n />\n );\n} as ButtonComponent[\"destructive\"];\n\nButtonComponent.icon = function Icon({ size = 16, backgroundButtonColor, ...props }) {\n const theme = useTheme();\n const betterHtmlContext = useBetterHtmlContext();\n\n const buttonSize = size + theme.styles.space;\n const backgroundButtonColorReady = backgroundButtonColor ?? theme.colors.textPrimary;\n\n return (\n <ButtonComponent\n {...betterHtmlContext.components.button?.icon}\n width={buttonSize}\n height={buttonSize}\n color={theme.colors.textPrimary}\n backgroundColor={backgroundButtonColorReady + \"00\"}\n backgroundImage=\"none\"\n backgroundColorHover={backgroundButtonColorReady + \"20\"}\n borderRadius={999}\n iconSize={size}\n loaderSize={12}\n border=\"none\"\n padding={0}\n filterHover=\"none !important\"\n {...props}\n />\n );\n} as ButtonComponent[\"icon\"];\n\nButtonComponent.upload = function Upload({ accept, multiple, onUpload, ...props }) {\n const betterHtmlContext = useBetterHtmlContext();\n\n const onClickElement = useCallback(() => {\n const input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"file\");\n if (accept) input.setAttribute(\"accept\", accept);\n if (multiple) input.setAttribute(\"multiple\", \"true\");\n\n input.addEventListener(\"change\", () => {\n onUpload?.(input.files);\n });\n\n input.click();\n }, [accept]);\n\n return (\n <ButtonComponent\n {...betterHtmlContext.components.button?.upload}\n text=\"Upload\"\n icon=\"uploadCloud\"\n onClick={onClickElement}\n {...props}\n />\n );\n} as ButtonComponent[\"upload\"];\n\nconst Button = memo(ButtonComponent) as any as typeof ButtonComponent & {\n secondary: typeof ButtonComponent.secondary;\n destructive: typeof ButtonComponent.destructive;\n icon: typeof ButtonComponent.icon;\n upload: typeof ButtonComponent.upload;\n};\n\nButton.secondary = ButtonComponent.secondary;\nButton.destructive = ButtonComponent.destructive;\nButton.icon = ButtonComponent.icon;\nButton.upload = ButtonComponent.upload;\n\nexport default Button;\n","import { memo } from \"react\";\n\nimport { ComponentMarginProps } from \"../types/components\";\n\nimport Div from \"./Div\";\nimport Text from \"./Text\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\ntype DividerProps = {\n /** @default 1 */\n width?: number;\n /** @default border */\n backgroundColor?: string;\n} & ComponentMarginProps;\n\nexport type VerticalDividerProps = DividerProps & {\n /** @default \"100%\" */\n height?: number;\n};\n\nexport type HorizontalDividerProps = DividerProps & {\n text?: string;\n /** @default textSecondary */\n textColor?: string;\n};\n\nexport default {\n vertical: memo(function Divider({ width = 1, backgroundColor, height, ...props }: VerticalDividerProps) {\n const theme = useTheme();\n\n return (\n <Div\n width={width}\n height={height ?? \"100%\"}\n flexShrink={0}\n backgroundColor={backgroundColor ?? theme.colors.border}\n {...props}\n />\n );\n }),\n horizontal: memo(function Divider({\n width = 1,\n backgroundColor,\n text,\n textColor,\n ...props\n }: HorizontalDividerProps) {\n const theme = useTheme();\n\n return (\n <Div.row width=\"100%\" alignItems=\"center\" gap={text ? theme.styles.space : undefined} {...props}>\n <Div flex={1} height={width} flexShrink={0} backgroundColor={backgroundColor ?? theme.colors.border} />\n\n {text && <Text color={textColor ?? theme.colors.textSecondary}>{text}</Text>}\n\n <Div flex={1} height={width} flexShrink={0} backgroundColor={backgroundColor ?? theme.colors.border} />\n </Div.row>\n );\n }),\n};\n","import { memo, useCallback, forwardRef, useImperativeHandle, useRef, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport { ColorTheme, Theme } from \"../types/theme\";\nimport { ComponentPropWithRef } from \"../types/components\";\nimport { AnyOtherString, OmitProps } from \"../types/app\";\nimport { LoaderName } from \"../types/loader\";\n\nimport { useUrlQuery } from \"../utils/hooks\";\n\nimport Div from \"./Div\";\nimport Button from \"./Button\";\nimport Text from \"./Text\";\nimport Divider from \"./Divider\";\nimport { useBetterHtmlContext, usePlugin, useTheme } from \"./BetterHtmlProvider\";\n\nexport type ModalProps = {\n /**\n * If you want to have a small modal, you can use 660px as it looks good on most screens.\n *\n * @default 30% smaller than app.contentMaxWidth\n * */\n maxWidth?: number;\n title?: string;\n titleColor?: string;\n description?: string;\n descriptionColor?: string;\n headerBackgroundColor?: string;\n /** @requires ReactRouterDomPlugin */\n name?: string;\n overflow?: React.CSSProperties[\"overflow\"];\n onOpen?: () => void;\n onClose?: () => void;\n children?: React.ReactNode;\n};\n\nexport type ModalRef = {\n open: () => void;\n close: () => void;\n isOpened: boolean;\n};\n\ntype ModalComponent = {\n (props: ComponentPropWithRef<ModalRef, ModalProps>): React.ReactElement;\n confirmation: (\n props: ComponentPropWithRef<\n ModalRef,\n OmitProps<ModalProps, \"maxWidth\" | \"children\" | \"overflow\"> & {\n continueButtonLoaderName?: LoaderName | AnyOtherString;\n onContinue?: () => void;\n onCancel?: () => void;\n }\n >,\n ) => React.ReactElement;\n destructive: (\n props: ComponentPropWithRef<\n ModalRef,\n OmitProps<ModalProps, \"maxWidth\" | \"children\" | \"overflow\"> & {\n deleteButtonLoaderName?: LoaderName | AnyOtherString;\n onDelete?: () => void;\n onCancel?: () => void;\n }\n >,\n ) => React.ReactElement;\n};\n\nconst DialogStylesElement = styled.dialog.withConfig({\n shouldForwardProp: (prop) => ![\"theme\", \"colorTheme\", \"opacity\"].includes(prop),\n})<{ theme: Theme; colorTheme: ColorTheme; opacity?: number }>`\n width: 100%;\n max-width: none;\n height: 100%;\n max-height: none;\n color: ${(props) => props.theme.colors.textPrimary};\n border: none;\n outline: none;\n background-color: transparent;\n margin: auto auto;\n padding-inline: ${(props) => props.theme.styles.gap}px;\n opacity: ${(props) => props.opacity};\n transition: ${(props) => props.theme.styles.transition};\n\n &::backdrop {\n background-color: ${(props) => (props.colorTheme === \"light\" ? \"#000000a0\" : \"#222222e0\")};\n opacity: ${(props) => props.opacity};\n transition: ${(props) => props.theme.styles.transition};\n }\n\n @keyframes fadeInAnimation {\n from {\n transform: translateY(${(props) => props.theme.styles.space}px);\n }\n to {\n transform: translateY(0px);\n }\n }\n\n @keyframes fadeOutAnimation {\n from {\n transform: translateY(0px);\n }\n to {\n transform: translateY(${(props) => props.theme.styles.space}px);\n }\n }\n`;\n\nconst ModalComponent: ModalComponent = forwardRef(function Modal(\n {\n maxWidth,\n title,\n titleColor,\n description,\n descriptionColor,\n headerBackgroundColor,\n name,\n overflow,\n onOpen,\n onClose,\n children,\n }: ModalProps,\n ref: React.ForwardedRef<ModalRef>,\n) {\n const reactRouterDomPlugin = usePlugin(\"react-router-dom\");\n const urlQuery = reactRouterDomPlugin ? useUrlQuery() : undefined;\n\n const theme = useTheme();\n const { app, colorTheme } = useBetterHtmlContext();\n\n const dialogRef = useRef<HTMLDialogElement>(null);\n\n const [isOpened, setIsOpened] = useState<boolean>(false);\n const [isOpenedLate, setIsOpenedLate] = useState<boolean>(false);\n\n const onClickOpen = useCallback(() => {\n dialogRef.current?.showModal();\n\n setIsOpened(true);\n setIsOpenedLate(true);\n\n if (urlQuery && name)\n urlQuery.setQuery(\n {\n [`${name}-modal`]: \"opened\",\n },\n false,\n );\n\n onOpen?.();\n }, [onOpen, urlQuery, name]);\n const onClickClose = useCallback(() => {\n setIsOpened(false);\n onClose?.();\n\n if (urlQuery && name) urlQuery.removeQuery(`${name}-modal`, false);\n\n setTimeout(() => {\n dialogRef.current?.close();\n setIsOpenedLate(false);\n }, 0.2 * 1000);\n }, [onClose, urlQuery, name]);\n\n useImperativeHandle(\n ref,\n (): ModalRef => {\n return {\n open: onClickOpen,\n close: onClickClose,\n isOpened,\n };\n },\n [onClickOpen, onClickClose, isOpened],\n );\n\n return (\n <DialogStylesElement\n theme={theme}\n colorTheme={colorTheme}\n opacity={!isOpened ? 0 : 1}\n onClose={onClickClose}\n ref={dialogRef}\n >\n {isOpenedLate ? (\n <Div.column\n position=\"relative\"\n width=\"100%\"\n maxWidth={maxWidth ?? app.contentMaxWidth / 1.3}\n minHeight={`calc(100% - ${theme.styles.space * 2}px)`}\n alignItems=\"center\"\n justifyContent=\"center\"\n marginBlock={theme.styles.space}\n marginInline=\"auto\"\n transform={`translateY(${theme.styles.space}px)`}\n transition={theme.styles.transition}\n animation={isOpened ? \"fadeInAnimation 0.2s ease forwards\" : \"fadeOutAnimation 0.2s ease forwards\"}\n >\n <Div\n position=\"relative\"\n width=\"100%\"\n minHeight={32 + theme.styles.space * 2}\n backgroundColor={theme.colors.backgroundBase}\n borderRadius={theme.styles.borderRadius * 2}\n paddingInline={!title ? theme.styles.space + theme.styles.gap : undefined}\n paddingBlock={!title ? theme.styles.space : undefined}\n overflow={overflow}\n >\n {title ? (\n <>\n <Div.row\n alignItems=\"center\"\n gap={theme.styles.gap}\n backgroundColor={headerBackgroundColor}\n borderTopLeftRadius={theme.styles.borderRadius * 2 - 1}\n borderTopRightRadius={theme.styles.borderRadius * 2 - 1}\n paddingInline={theme.styles.space + theme.styles.gap}\n paddingBlock={theme.styles.space}\n transition={theme.styles.transition}\n >\n <Div.column flex={1} gap={theme.styles.gap / 2}>\n <Text\n as=\"h1\"\n color={titleColor ?? theme.colors.textPrimary}\n transition={theme.styles.transition}\n >\n {title}\n </Text>\n\n {description && (\n <Text\n color={descriptionColor ?? theme.colors.textSecondary}\n transition={theme.styles.transition}\n >\n {description}\n </Text>\n )}\n </Div.column>\n\n <Button.icon\n icon=\"XMark\"\n marginTop={1}\n iconColor={titleColor}\n onClick={onClickClose}\n transition={theme.styles.transition}\n />\n </Div.row>\n\n <Divider.horizontal />\n </>\n ) : (\n <Div position=\"absolute\" top={theme.styles.space} right={theme.styles.space}>\n <Button.icon icon=\"XMark\" onClick={onClickClose} />\n </Div>\n )}\n\n <Div\n paddingInline={title ? theme.styles.space + theme.styles.gap : undefined}\n paddingBlock={title ? theme.styles.space : undefined}\n >\n {children}\n </Div>\n </Div>\n </Div.column>\n ) : undefined}\n </DialogStylesElement>\n );\n}) as any;\n\nModalComponent.confirmation = forwardRef(function Confirmation(\n { continueButtonLoaderName, onContinue, onCancel, ...props },\n ref,\n) {\n const theme = useTheme();\n\n const modalRef = useRef<ModalRef>(null);\n\n const onCancelElement = useCallback(() => {\n onCancel?.();\n modalRef.current?.close();\n }, [onCancel]);\n const onContinueElement = useCallback(() => {\n onContinue?.();\n modalRef.current?.close();\n }, [onContinue]);\n\n useImperativeHandle(ref, (): ModalRef => modalRef.current as ModalRef, []);\n\n return (\n <Modal title=\"Are you sure?\" maxWidth={660} {...props} ref={modalRef}>\n <Text color={theme.colors.textSecondary}>\n Do you really want to continue? This action may be irreversible.\n </Text>\n\n <Div.row\n alignItems=\"center\"\n justifyContent=\"flex-end\"\n gap={theme.styles.gap}\n marginTop={theme.styles.space * 2}\n >\n <Button.secondary text=\"Cancel\" onClick={onCancelElement} />\n <Button text=\"Continue\" loaderName={continueButtonLoaderName} onClick={onContinueElement} />\n </Div.row>\n </Modal>\n );\n}) as ModalComponent[\"confirmation\"];\n\nModalComponent.destructive = forwardRef(function Destructive(\n { deleteButtonLoaderName, onDelete, onCancel, ...props },\n ref,\n) {\n const theme = useTheme();\n\n const modalRef = useRef<ModalRef>(null);\n\n const onCancelElement = useCallback(() => {\n onCancel?.();\n modalRef.current?.close();\n }, [onCancel]);\n const onDeleteElement = useCallback(() => {\n onDelete?.();\n modalRef.current?.close();\n }, [onDelete]);\n\n useImperativeHandle(ref, (): ModalRef => modalRef.current as ModalRef, []);\n\n return (\n <Modal title=\"Are you sure?\" maxWidth={660} {...props} ref={modalRef}>\n <Text color={theme.colors.textSecondary}>\n Do you really want to continue with the deleting of the item? This action may be irreversible.\n </Text>\n\n <Div.row\n alignItems=\"center\"\n justifyContent=\"flex-end\"\n gap={theme.styles.gap}\n marginTop={theme.styles.space * 2}\n >\n <Button.secondary text=\"Cancel\" onClick={onCancelElement} />\n <Button.destructive\n icon=\"trash\"\n text=\"Delete\"\n loaderName={deleteButtonLoaderName}\n onClick={onDeleteElement}\n />\n </Div.row>\n </Modal>\n );\n}) as ModalComponent[\"destructive\"];\n\nconst Modal = memo(ModalComponent) as any as typeof ModalComponent & {\n confirmation: typeof ModalComponent.confirmation;\n destructive: typeof ModalComponent.destructive;\n};\n\nModal.confirmation = ModalComponent.confirmation;\nModal.destructive = ModalComponent.destructive;\n\nexport default Modal;\n","import { memo } from \"react\";\n\nimport Div from \"./Div\";\nimport { useBetterHtmlContext, useTheme } from \"./BetterHtmlProvider\";\n\nexport type PageHolderProps = {\n /** @default false */\n noMaxContentWidth?: boolean;\n children?: React.ReactNode;\n};\n\nfunction PageHolder({ noMaxContentWidth, children }: PageHolderProps) {\n const theme = useTheme();\n const { app } = useBetterHtmlContext();\n\n return (\n <Div\n as=\"main\"\n width=\"100%\"\n maxWidth={!noMaxContentWidth ? app.contentMaxWidth : undefined}\n margin=\"0px auto\"\n padding={theme.styles.space}\n >\n {children}\n </Div>\n );\n}\n\nexport default memo(PageHolder);\n","import React, { memo } from \"react\";\n\nimport { ComponentMarginProps } from \"../types/components\";\n\nimport { useMediaQuery } from \"../utils/hooks\";\n\nimport Div from \"./Div\";\nimport Text, { TextAs } from \"./Text\";\nimport Image from \"./Image\";\nimport { useBetterHtmlContext, useTheme } from \"./BetterHtmlProvider\";\n\nexport type PageHeaderProps = {\n imageUrl?: string;\n imageSize?: number;\n title?: string;\n titleAs?: TextAs;\n titleRightElement?: React.ReactNode;\n description?: string;\n textAlign?: React.CSSProperties[\"textAlign\"];\n rightElement?: React.ReactNode;\n /** @default false */\n lightMode?: boolean;\n} & Pick<ComponentMarginProps, \"marginBottom\">;\n\nfunction PageHeader({\n imageUrl,\n imageSize = 60,\n title,\n titleAs,\n titleRightElement,\n description,\n textAlign,\n rightElement,\n lightMode,\n marginBottom,\n}: PageHeaderProps) {\n const theme = useTheme();\n const { app } = useBetterHtmlContext();\n const mediaQuery = useMediaQuery();\n\n return (\n <Div.row alignItems=\"center\" gap={theme.styles.space} marginBottom={marginBottom ?? theme.styles.space * 2}>\n {imageUrl && <Image.profileImage src={imageUrl} size={imageSize ?? (mediaQuery.size600 ? 46 : 60)} />}\n\n <Div.column\n justifyContent={textAlign === \"center\" ? \"center\" : textAlign === \"right\" ? \"flex-end\" : undefined}\n flex={1}\n gap={theme.styles.gap / 2}\n >\n <Div.row\n alignItems=\"center\"\n justifyContent={textAlign === \"center\" ? \"center\" : textAlign === \"right\" ? \"flex-end\" : undefined}\n gap={theme.styles.space}\n >\n <Text\n as={titleAs ?? \"h1\"}\n textAlign={textAlign}\n color={lightMode ? theme.colors.base : theme.colors.textPrimary}\n >\n {title}\n </Text>\n\n {titleRightElement}\n </Div.row>\n\n {description && (\n <Text\n maxWidth={!mediaQuery.size600 ? app.contentMaxWidth * 0.6 : undefined}\n textAlign={textAlign}\n color={lightMode ? theme.colors.base : theme.colors.textSecondary}\n opacity={lightMode ? 0.7 : undefined}\n >\n {description}\n </Text>\n )}\n </Div.column>\n\n {rightElement}\n </Div.row>\n );\n}\n\nexport default memo(PageHeader);\n","import { forwardRef, memo } from \"react\";\n\nimport { ComponentPropWithRef } from \"../types/components\";\nimport { OmitProps } from \"../types/app\";\n\nimport Div from \"./Div\";\nimport Text from \"./Text\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nexport type ChipProps = {\n text: string;\n /** @default theme.colors.textPrimary */\n color?: string;\n /** @default backgroundSecondary */\n backgroundColor?: string;\n /** @default theme.styles.borderRadius / 1.3 */\n borderRadius?: number;\n};\n\ntype ChipComponentType = {\n (props: ComponentPropWithRef<HTMLDivElement, ChipProps>): React.ReactElement;\n circle: (props: ComponentPropWithRef<HTMLDivElement, OmitProps<ChipProps, \"borderRadius\">>) => React.ReactElement;\n};\n\nconst ChipComponent: ChipComponentType = forwardRef(function Chip(\n { text, color, backgroundColor, borderRadius }: ChipProps,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const theme = useTheme();\n\n return (\n <Div\n width=\"fit-content\"\n backgroundColor={backgroundColor ?? theme.colors.backgroundSecondary}\n borderRadius={borderRadius ?? theme.styles.borderRadius / 1.3}\n paddingBlock={theme.styles.gap}\n paddingInline={theme.styles.space}\n ref={ref}\n >\n <Text color={color ?? theme.colors.textPrimary}>{text}</Text>\n </Div>\n );\n}) as any;\n\nChipComponent.circle = forwardRef(function Circle(props, ref) {\n return <ChipComponent borderRadius={999} ref={ref} {...props} />;\n}) as ChipComponentType[\"circle\"];\n\nconst Chip = memo(ChipComponent) as any as typeof ChipComponent & {\n circle: typeof ChipComponent.circle;\n};\n\nChip.circle = ChipComponent.circle;\n\nexport default Chip;\n","import React, { forwardRef, memo, useCallback, useState, useEffect, useMemo, useRef } from \"react\";\nimport styled from \"styled-components\";\n\nimport { countries } from \"../constants/countries\";\n\nimport { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from \"../types/components\";\nimport { AnyOtherString, OmitProps } from \"../types/app\";\nimport { Theme } from \"../types/theme\";\nimport { IconName } from \"../types/icon\";\nimport { Country } from \"../types/countries\";\n\nimport {\n useBooleanState,\n useComponentInputFieldDateProps,\n useComponentPropsWithExcludedStyle,\n useComponentPropsWithoutStyle,\n useComponentPropsWithPrefix,\n useDebounceState,\n useStyledComponentStyles,\n} from \"../utils/hooks\";\n\nimport Text from \"./Text\";\nimport Div from \"./Div\";\nimport Icon from \"./Icon\";\nimport Button from \"./Button\";\nimport Label from \"./Label\";\nimport Dropdown, { DropdownOption } from \"./Dropdown\";\nimport Image from \"./Image\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nconst InputElement = styled.input.withConfig({\n shouldForwardProp: (prop) => ![\"theme\", \"withLeftIcon\", \"withRightIcon\", \"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{\n theme: Theme;\n withLeftIcon?: boolean;\n withRightIcon?: boolean;\n normalStyle: ComponentStyle;\n hoverStyle: ComponentStyle;\n}>`\n position: relative;\n width: 100%;\n font-family: ${(props) => props.theme.styles.fontFamily};\n font-size: 16px;\n line-height: 20px;\n color: ${(props) => props.theme.colors.textPrimary};\n background: ${(props) => props.theme.colors.backgroundContent};\n border: 1px solid ${(props) => props.theme.colors.border};\n border-radius: ${(props) => props.theme.styles.borderRadius}px;\n outline: none;\n padding: ${(props) =>\n `${(props.theme.styles.space + props.theme.styles.gap) / 2}px ${\n props.theme.styles.space + props.theme.styles.gap\n }px`};\n padding-left: ${(props) =>\n props.withLeftIcon ? `${props.theme.styles.space + 16 + props.theme.styles.space - 1}px` : undefined};\n padding-right: ${(props) =>\n props.withRightIcon ? `${props.theme.styles.space + 16 + props.theme.styles.space - 1}px` : undefined};\n transition: ${(props) => props.theme.styles.transition};\n\n &::placeholder {\n color: ${(props) => props.theme.colors.textSecondary}80;\n }\n\n &:focus {\n border-color: ${(props) => props.theme.colors.primary};\n }\n\n &:disabled {\n filter: brightness(0.9);\n cursor: not-allowed;\n }\n\n &[type=\"date\"]::-webkit-calendar-picker-indicator,\n &[type=\"datetime-local\"]::-webkit-calendar-picker-indicator,\n &[type=\"time\"]::-webkit-calendar-picker-indicator {\n display: none;\n -webkit-appearance: none;\n }\n\n &.react-better-html-phone-number-holder {\n border-right: none;\n border-top-right-radius: 0px;\n border-bottom-right-radius: 0px;\n }\n\n &.react-better-html-phone-number {\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n }\n\n &.react-better-html-dropdown {\n padding-right: ${(props) => props.theme.styles.space + 16 + props.theme.styles.space - 1}px;\n\n &.react-better-html-dropdown-open {\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n }\n\n &.react-better-html-dropdown-open-late {\n z-index: 1001;\n }\n }\n\n &.react-better-html-inputField-dateTime-opened {\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n }\n\n &.react-better-html-inputField-dateTime-opened-late {\n z-index: 1001;\n }\n\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nconst TextareaElement = styled.textarea.withConfig({\n shouldForwardProp: (prop) => ![\"theme\", \"withLeftIcon\", \"withRightIcon\", \"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{\n theme: Theme;\n withLeftIcon?: boolean;\n withRightIcon?: boolean;\n normalStyle: ComponentStyle;\n hoverStyle: ComponentStyle;\n}>`\n width: 100%;\n min-height: 3lh;\n max-height: 8lh;\n font-family: ${(props) => props.theme.styles.fontFamily};\n font-size: 16px;\n line-height: 20px;\n color: ${(props) => props.theme.colors.textPrimary};\n background: ${(props) => props.theme.colors.backgroundContent};\n border: 1px solid ${(props) => props.theme.colors.border};\n border-radius: ${(props) => props.theme.styles.borderRadius}px;\n outline: none;\n padding: ${(props) =>\n `${(props.theme.styles.gap + props.theme.styles.space) / 2}px ${\n props.theme.styles.space + props.theme.styles.gap\n }px`};\n padding-left: ${(props) =>\n props.withLeftIcon ? `${props.theme.styles.space + 16 + props.theme.styles.space - 1}px` : undefined};\n padding-right: ${(props) =>\n props.withRightIcon ? `${props.theme.styles.space + 16 + props.theme.styles.space - 1}px` : undefined};\n resize: vertical;\n transition: border-color ${(props) => props.theme.styles.transition};\n\n &::placeholder {\n color: ${(props) => props.theme.colors.textSecondary}80;\n }\n\n &:focus {\n border-color: ${(props) => props.theme.colors.primary};\n }\n\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nconst hours = Array.from({ length: 24 }, (_, index) => index);\nconst minutes = Array.from({ length: 60 }, (_, index) => index);\n\nexport type InputFieldProps = {\n label?: string;\n labelColor?: string;\n errorText?: string;\n infoText?: string;\n leftIcon?: IconName | AnyOtherString;\n rightIcon?: IconName | AnyOtherString;\n insideInputFieldComponent?: React.ReactNode;\n /** @default false */\n withDebounce?: boolean;\n /** @default 0.5s */\n debounceDelay?: number;\n onChangeValue?: (value: string) => void;\n onClickRightIcon?: () => void;\n holderRef?: React.ForwardedRef<HTMLDivElement>;\n} & OmitProps<React.ComponentProps<\"input\">, \"style\" | \"ref\"> &\n ComponentStyle &\n ComponentHoverStyle;\n\nexport type TextareaFieldProps = OmitProps<InputFieldProps, \"type\"> &\n OmitProps<React.ComponentProps<\"textarea\">, \"style\" | \"ref\">;\n\ntype InputFieldComponentType = {\n (props: ComponentPropWithRef<HTMLInputElement, InputFieldProps>): React.ReactElement;\n multiline: (props: ComponentPropWithRef<HTMLTextAreaElement, TextareaFieldProps>) => React.ReactElement;\n email: (props: ComponentPropWithRef<HTMLInputElement, InputFieldProps>) => React.ReactElement;\n password: (props: ComponentPropWithRef<HTMLInputElement, InputFieldProps>) => React.ReactElement;\n search: (props: ComponentPropWithRef<HTMLInputElement, InputFieldProps>) => React.ReactElement;\n phoneNumber: (\n props: ComponentPropWithRef<HTMLInputElement, OmitProps<InputFieldProps, \"type\">>,\n ) => React.ReactElement;\n date: (props: ComponentPropWithRef<HTMLInputElement, InputFieldProps>) => React.ReactElement;\n dateTime: (props: ComponentPropWithRef<HTMLInputElement, InputFieldProps>) => React.ReactElement;\n time: (props: ComponentPropWithRef<HTMLInputElement, InputFieldProps>) => React.ReactElement;\n};\n\nconst InputFieldComponent: InputFieldComponentType = forwardRef(function InputField(\n {\n label,\n labelColor,\n errorText,\n infoText,\n leftIcon,\n rightIcon,\n insideInputFieldComponent,\n withDebounce,\n debounceDelay = 0.5,\n onChange,\n onChangeValue,\n onClickRightIcon,\n holderRef,\n required,\n placeholder,\n ...props\n }: InputFieldProps,\n ref: React.ForwardedRef<HTMLInputElement>,\n) {\n const theme = useTheme();\n const [_, debouncedValue, setDebouncedValue] = useDebounceState<string>(\n props.value?.toString() ?? \"\",\n debounceDelay,\n );\n\n const styledComponentStylesWithoutExcluded = useStyledComponentStyles(props, theme, true);\n const styledComponentStylesWithExcluded = useComponentPropsWithExcludedStyle(props);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n const onChangeElement = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n\n if (withDebounce) {\n onChange?.(event);\n setDebouncedValue(newValue);\n } else {\n onChange?.(event);\n onChangeValue?.(newValue);\n }\n },\n [onChange, onChangeValue, withDebounce],\n );\n\n useEffect(() => {\n if (!withDebounce) return;\n\n onChangeValue?.(debouncedValue);\n }, [withDebounce, onChangeValue, debouncedValue]);\n\n return (\n <Div.column width=\"100%\" gap={theme.styles.gap} {...styledComponentStylesWithExcluded} ref={holderRef}>\n {label && <Label text={label} color={labelColor} required={required} isError={!!errorText} />}\n\n <Div position=\"relative\" width=\"100%\">\n {leftIcon && (\n <Icon\n name={leftIcon}\n position=\"absolute\"\n top={46 / 2}\n left={theme.styles.space + 1}\n transform=\"translateY(-50%)\"\n pointerEvents=\"none\"\n zIndex={props.className?.includes(\"react-better-html-dropdown-open-late\") ? 1002 : 1}\n />\n )}\n\n <InputElement\n theme={theme}\n withLeftIcon={leftIcon !== undefined}\n withRightIcon={rightIcon !== undefined}\n required={required}\n placeholder={placeholder ?? label}\n onChange={onChangeElement}\n {...styledComponentStylesWithoutExcluded}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n ref={ref}\n />\n\n {rightIcon ? (\n onClickRightIcon ? (\n <Button.icon\n icon={rightIcon}\n position=\"absolute\"\n top={46 / 2}\n right={theme.styles.space + 1 - theme.styles.space / 2}\n transform=\"translateY(-50%)\"\n onClick={onClickRightIcon}\n />\n ) : (\n <Icon\n name={rightIcon}\n position=\"absolute\"\n top={46 / 2}\n right={theme.styles.space + 1}\n transform=\"translateY(-50%)\"\n pointerEvents=\"none\"\n />\n )\n ) : undefined}\n\n {insideInputFieldComponent}\n </Div>\n\n {(errorText || infoText) && (\n <Text\n as=\"span\"\n display=\"block\"\n fontSize={14}\n color={errorText ? theme.colors.error : labelColor ?? theme.colors.textSecondary}\n >\n {errorText || infoText}\n </Text>\n )}\n </Div.column>\n );\n}) as any;\n\nInputFieldComponent.multiline = forwardRef(function Multiline(\n {\n label,\n placeholder,\n errorText,\n infoText,\n leftIcon,\n rightIcon,\n onChange,\n onChangeValue,\n onClickRightIcon,\n required,\n ...props\n },\n ref,\n) {\n const theme = useTheme();\n\n const styledComponentStyles = useStyledComponentStyles(props, theme);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n const onChangeElement = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(event);\n onChangeValue?.(event.target.value);\n },\n [onChange, onChangeValue],\n );\n\n return (\n <Div.column gap={theme.styles.gap}>\n {label && <Label text={label} required={required} isError={!!errorText} />}\n\n <Div position=\"relative\" width=\"100%\">\n {leftIcon && (\n <Icon\n name={leftIcon}\n position=\"absolute\"\n top={46 / 2}\n left={theme.styles.space + 1}\n transform=\"translateY(-50%)\"\n pointerEvents=\"none\"\n />\n )}\n\n <TextareaElement\n theme={theme}\n withLeftIcon={leftIcon !== undefined}\n withRightIcon={rightIcon !== undefined}\n required={required}\n placeholder={placeholder ?? label}\n onChange={onChangeElement}\n {...styledComponentStyles}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n ref={ref}\n />\n\n {rightIcon ? (\n onClickRightIcon ? (\n <Button.icon\n icon={rightIcon}\n position=\"absolute\"\n top={46 / 2}\n right={theme.styles.space + 1 - theme.styles.space / 2}\n transform=\"translateY(-50%)\"\n onClick={onClickRightIcon}\n />\n ) : (\n <Icon\n name={rightIcon}\n position=\"absolute\"\n top={46 / 2}\n right={theme.styles.space + 1}\n transform=\"translateY(-50%)\"\n pointerEvents=\"none\"\n />\n )\n ) : undefined}\n </Div>\n\n {(errorText || infoText) && (\n <Text\n as=\"span\"\n display=\"block\"\n marginTop={theme.styles.gap / 2}\n color={errorText ? theme.colors.error : props.labelColor ?? theme.colors.textSecondary}\n fontSize={14}\n >\n {errorText || infoText}\n </Text>\n )}\n </Div.column>\n );\n}) as InputFieldComponentType[\"multiline\"];\n\nInputFieldComponent.email = forwardRef(function Email({ ...props }, ref) {\n return (\n <InputFieldComponent\n type=\"email\"\n placeholder=\"your@email.here\"\n autoComplete=\"email\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n ref={ref}\n {...props}\n />\n );\n}) as InputFieldComponentType[\"email\"];\n\nInputFieldComponent.password = forwardRef(function Password({ ...props }, ref) {\n const [isPassword, setIsPassword] = useBooleanState(true);\n\n return (\n <InputFieldComponent\n type={isPassword ? \"password\" : \"text\"}\n placeholder=\"******\"\n rightIcon={isPassword ? \"eye\" : \"eyeDashed\"}\n onClickRightIcon={setIsPassword.toggle}\n autoComplete=\"current-password\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n ref={ref}\n {...props}\n />\n );\n}) as InputFieldComponentType[\"password\"];\n\nInputFieldComponent.search = forwardRef(function Search({ ...props }, ref) {\n return <InputFieldComponent leftIcon=\"magnifyingGlass\" placeholder=\"Search...\" ref={ref} {...props} />;\n}) as InputFieldComponentType[\"search\"];\n\nInputFieldComponent.phoneNumber = forwardRef(function PhoneNumber(\n { label, value, onChangeValue, labelColor, ...props },\n ref,\n) {\n const theme = useTheme();\n\n const [dropdownValue, setDropdownValue] = useState<string>();\n const [inputFieldValue, setInputFieldValue] = useState<string>(value?.toString() ?? \"\");\n\n const renderOption = useCallback(\n (option: DropdownOption<string, Country>, index: number, isSelected: boolean): React.ReactNode => (\n <Div.row alignItems=\"center\" gap={theme.styles.gap}>\n <Image src={`https://flagcdn.com/w80/${option.data?.code.toString().toLowerCase()}.webp`} width={20} />\n <Text>{option.label}</Text>\n </Div.row>\n ),\n [],\n );\n const onChangeValueElement = useCallback(\n (value: string) => {\n const readyValue = value.replace(/\\D/g, \"\");\n\n setInputFieldValue(readyValue);\n onChangeValue?.(dropdownValue ? `+${dropdownValue}${readyValue}` : readyValue);\n },\n [onChangeValue, dropdownValue],\n );\n\n const options = useMemo<DropdownOption<string, Country>[]>(\n () =>\n countries.map((country) => ({\n value: country.phoneNumberExtension,\n label: `+${country.phoneNumberExtension}`,\n data: country,\n })),\n [],\n );\n const defaultValue = useMemo<string>(() => {\n const thisTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const initialDefaultValue = options.find((option) => option.data?.timeZone === thisTimeZone)?.value ?? \"\";\n setDropdownValue(initialDefaultValue);\n\n return initialDefaultValue;\n }, [options]);\n\n useEffect(() => {\n if (value === undefined || value === null) return;\n\n const newValue = value.toString();\n\n const country = countries.find(\n (country) =>\n country.phoneNumberExtension ===\n newValue.slice(\n newValue.startsWith(\"+\") ? 1 : 0,\n country.phoneNumberExtension.length + (newValue.startsWith(\"+\") ? 1 : 0),\n ),\n );\n\n if (!country) {\n setInputFieldValue(newValue);\n return;\n }\n\n setDropdownValue(country.phoneNumberExtension);\n setInputFieldValue(newValue.slice(country?.phoneNumberExtension.length + 1));\n }, [value]);\n\n return (\n <Div.column width=\"100%\" gap={theme.styles.gap}>\n {label && <Label text={label} color={labelColor} required={props.required} isError={!!props.errorText} />}\n\n <Div.row>\n <Dropdown\n options={options}\n renderOption={renderOption}\n width={130}\n minWidth={116}\n withSearch\n placeholder=\"+00\"\n inputFieldClassName=\"react-better-html-phone-number-holder\"\n defaultValue={defaultValue}\n value={dropdownValue}\n onChange={setDropdownValue}\n withoutClearButton\n />\n <InputFieldComponent\n placeholder={label ?? \"Phone number\"}\n className=\"react-better-html-phone-number\"\n value={inputFieldValue}\n onChangeValue={onChangeValueElement}\n ref={ref}\n {...props}\n />\n </Div.row>\n </Div.column>\n );\n}) as InputFieldComponentType[\"phoneNumber\"];\n\nInputFieldComponent.date = forwardRef(function Date({ className, onFocus, onBlur, ...props }, ref) {\n const theme = useTheme();\n\n const holderRef = useRef<HTMLDivElement>(null);\n\n const { internalValue, setInternalValue, inputFieldProps, insideInputFieldComponentProps } =\n useComponentInputFieldDateProps(props, holderRef);\n\n return (\n <InputFieldComponent\n type=\"date\"\n insideInputFieldComponent={\n <Div\n position=\"absolute\"\n top=\"100%\"\n left={0}\n width=\"100%\"\n maxHeight={300}\n backgroundColor={theme.colors.backgroundContent}\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n boxShadow=\"0px 10px 20px #00000020\"\n overflowY=\"auto\"\n {...insideInputFieldComponentProps}\n >\n Hello there\n </Div>\n }\n holderRef={holderRef}\n ref={ref}\n {...props}\n {...inputFieldProps}\n />\n );\n}) as InputFieldComponentType[\"date\"];\n\nInputFieldComponent.dateTime = forwardRef(function DateTime({ className, onFocus, onBlur, ...props }, ref) {\n const theme = useTheme();\n\n const holderRef = useRef<HTMLDivElement>(null);\n\n const { internalValue, setInternalValue, inputFieldProps, insideInputFieldComponentProps } =\n useComponentInputFieldDateProps(props, holderRef);\n\n return (\n <InputFieldComponent\n type=\"datetime-local\"\n insideInputFieldComponent={\n <Div\n position=\"absolute\"\n top=\"100%\"\n left={0}\n width=\"100%\"\n maxHeight={300}\n backgroundColor={theme.colors.backgroundContent}\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n boxShadow=\"0px 10px 20px #00000020\"\n overflowY=\"auto\"\n {...insideInputFieldComponentProps}\n >\n Hello there\n </Div>\n }\n holderRef={holderRef}\n ref={ref}\n {...props}\n {...inputFieldProps}\n />\n );\n}) as InputFieldComponentType[\"dateTime\"];\n\nInputFieldComponent.time = forwardRef(function Time({ ...props }, ref) {\n const theme = useTheme();\n\n const holderRef = useRef<HTMLDivElement>(null);\n const selectedHourRef = useRef<HTMLDivElement>(null);\n const selectedMinuteRef = useRef<HTMLDivElement>(null);\n\n const { internalValue, setInternalValue, inputFieldProps, insideInputFieldComponentProps, isOpen } =\n useComponentInputFieldDateProps(props, holderRef);\n\n const onClickHour = useCallback(\n (hour: number) => {\n const value = `${hour.toString().padStart(2, \"0\")}:${internalValue?.toString().split(\":\")[1] || \"00\"}`;\n\n inputFieldProps.onChangeValue?.(value);\n setInternalValue(value);\n },\n [internalValue, inputFieldProps.onChangeValue],\n );\n const onClickMinute = useCallback(\n (minute: number) => {\n const value = `${internalValue?.toString().split(\":\")[0] || \"00\"}:${minute.toString().padStart(2, \"0\")}`;\n\n inputFieldProps.onChangeValue?.(value);\n setInternalValue(value);\n },\n [internalValue, inputFieldProps.onChangeValue],\n );\n\n useEffect(() => {\n if (isOpen && selectedHourRef.current)\n selectedHourRef.current.scrollIntoView({ block: \"nearest\", behavior: \"instant\" });\n\n if (isOpen && selectedMinuteRef.current)\n selectedMinuteRef.current.scrollIntoView({ block: \"nearest\", behavior: \"instant\" });\n }, [isOpen]);\n\n const valueHour = parseInt(internalValue?.toString().split(\":\")?.[0]).toString();\n const valueMinute = parseInt(internalValue?.toString().split(\":\")?.[1]).toString();\n\n const buttonWidth = 50;\n\n return (\n <InputFieldComponent\n type=\"time\"\n insideInputFieldComponent={\n <Div\n position=\"absolute\"\n top=\"100%\"\n left={0}\n width={buttonWidth * 2 + 2}\n height={300}\n backgroundColor={theme.colors.backgroundContent}\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n boxShadow=\"0px 10px 20px #00000020\"\n overflowY=\"auto\"\n {...insideInputFieldComponentProps}\n >\n <Div.row height=\"100%\">\n <Div className=\"react-better-html-no-scrollbar\" width={buttonWidth} height=\"100%\" overflowY=\"auto\">\n {hours.map((hour) => {\n const isSelected = hour.toString() === valueHour;\n\n return (\n <Div.row\n alignItems=\"center\"\n justifyContent=\"center\"\n color={isSelected ? theme.colors.base : theme.colors.textPrimary}\n backgroundColor={isSelected ? theme.colors.primary : theme.colors.backgroundContent}\n filterHover=\"brightness(0.9)\"\n cursor=\"pointer\"\n padding={`${theme.styles.space / 2}px ${theme.styles.space + theme.styles.gap}px`}\n value={hour}\n onClickWithValue={onClickHour}\n ref={isSelected ? selectedHourRef : undefined}\n key={hour}\n >\n <Text textAlign=\"center\">{hour.toString().padStart(2, \"0\")}</Text>\n </Div.row>\n );\n })}\n </Div>\n\n <Div className=\"react-better-html-no-scrollbar\" width={buttonWidth} height=\"100%\" overflowY=\"auto\">\n {minutes.map((minute) => {\n const isSelected = minute.toString() === valueMinute;\n\n return (\n <Div.row\n alignItems=\"center\"\n justifyContent=\"center\"\n color={isSelected ? theme.colors.base : theme.colors.textPrimary}\n backgroundColor={isSelected ? theme.colors.primary : theme.colors.backgroundContent}\n filterHover=\"brightness(0.9)\"\n cursor=\"pointer\"\n padding={`${theme.styles.space / 2}px ${theme.styles.space + theme.styles.gap}px`}\n value={minute}\n onClickWithValue={onClickMinute}\n ref={isSelected ? selectedMinuteRef : undefined}\n key={minute}\n >\n <Text textAlign=\"center\">{minute.toString().padStart(2, \"0\")}</Text>\n </Div.row>\n );\n })}\n </Div>\n </Div.row>\n </Div>\n }\n holderRef={holderRef}\n ref={ref}\n {...props}\n {...inputFieldProps}\n minWidth={buttonWidth * 2 + 2}\n />\n );\n}) as InputFieldComponentType[\"time\"];\n\nconst InputField = memo(InputFieldComponent) as any as typeof InputFieldComponent & {\n multiline: typeof InputFieldComponent.multiline;\n email: typeof InputFieldComponent.email;\n password: typeof InputFieldComponent.password;\n search: typeof InputFieldComponent.search;\n phoneNumber: typeof InputFieldComponent.phoneNumber;\n date: typeof InputFieldComponent.date;\n dateTime: typeof InputFieldComponent.dateTime;\n time: typeof InputFieldComponent.time;\n};\n\nInputField.multiline = InputFieldComponent.multiline;\nInputField.email = InputFieldComponent.email;\nInputField.password = InputFieldComponent.password;\nInputField.search = InputFieldComponent.search;\nInputField.phoneNumber = InputFieldComponent.phoneNumber;\nInputField.date = InputFieldComponent.date;\nInputField.dateTime = InputFieldComponent.dateTime;\nInputField.time = InputFieldComponent.time;\n\nexport default InputField;\n","import { Country } from \"../types/countries\";\n\nexport const countries: Country[] = [\n {\n name: \"Afghanistan\",\n code: \"AF\",\n timeZone: \"Asia/Kabul\",\n phoneNumberExtension: \"93\",\n },\n {\n name: \"Åland Islands\",\n code: \"AX\",\n timeZone: \"Europe/Mariehamn\",\n phoneNumberExtension: \"358\",\n },\n {\n name: \"Albania\",\n code: \"AL\",\n timeZone: \"Europe/Tirane\",\n phoneNumberExtension: \"355\",\n },\n {\n name: \"Algeria\",\n code: \"DZ\",\n timeZone: \"Africa/Algiers\",\n phoneNumberExtension: \"213\",\n },\n {\n name: \"United States of America\",\n code: \"US\",\n timeZone: \"America/New_York\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"American Samoa\",\n code: \"AS\",\n timeZone: \"Pacific/Pago_Pago\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"AndorrA\",\n code: \"AD\",\n timeZone: \"Europe/Andorra\",\n phoneNumberExtension: \"376\",\n },\n {\n name: \"Angola\",\n code: \"AO\",\n timeZone: \"Africa/Luanda\",\n phoneNumberExtension: \"244\",\n },\n {\n name: \"Anguilla\",\n code: \"AI\",\n timeZone: \"America/Anguilla\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Antarctica\",\n code: \"AQ\",\n timeZone: \"Antarctica/Casey\",\n phoneNumberExtension: \"672\",\n },\n {\n name: \"Antigua and Barbuda\",\n code: \"AG\",\n timeZone: \"America/Antigua\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Argentina\",\n code: \"AR\",\n timeZone: \"America/Argentina/Buenos_Aires\",\n phoneNumberExtension: \"54\",\n },\n {\n name: \"Armenia\",\n code: \"AM\",\n timeZone: \"Asia/Yerevan\",\n phoneNumberExtension: \"374\",\n },\n {\n name: \"Aruba\",\n code: \"AW\",\n timeZone: \"America/Aruba\",\n phoneNumberExtension: \"297\",\n },\n {\n name: \"Australia\",\n code: \"AU\",\n timeZone: \"Australia/Sydney\",\n phoneNumberExtension: \"61\",\n },\n {\n name: \"Austria\",\n code: \"AT\",\n timeZone: \"Europe/Vienna\",\n phoneNumberExtension: \"43\",\n },\n {\n name: \"Azerbaijan\",\n code: \"AZ\",\n timeZone: \"Asia/Baku\",\n phoneNumberExtension: \"994\",\n },\n {\n name: \"Bahamas\",\n code: \"BS\",\n timeZone: \"America/Nassau\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Bahrain\",\n code: \"BH\",\n timeZone: \"Asia/Bahrain\",\n phoneNumberExtension: \"973\",\n },\n {\n name: \"Bangladesh\",\n code: \"BD\",\n timeZone: \"Asia/Dhaka\",\n phoneNumberExtension: \"880\",\n },\n {\n name: \"Barbados\",\n code: \"BB\",\n timeZone: \"America/Barbados\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Belarus\",\n code: \"BY\",\n timeZone: \"Europe/Minsk\",\n phoneNumberExtension: \"375\",\n },\n {\n name: \"Belgium\",\n code: \"BE\",\n timeZone: \"Europe/Brussels\",\n phoneNumberExtension: \"32\",\n },\n {\n name: \"Belize\",\n code: \"BZ\",\n timeZone: \"America/Belize\",\n phoneNumberExtension: \"501\",\n },\n {\n name: \"Benin\",\n code: \"BJ\",\n timeZone: \"Africa/Porto-Novo\",\n phoneNumberExtension: \"229\",\n },\n {\n name: \"Bermuda\",\n code: \"BM\",\n timeZone: \"Atlantic/Bermuda\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Bhutan\",\n code: \"BT\",\n timeZone: \"Asia/Thimphu\",\n phoneNumberExtension: \"975\",\n },\n {\n name: \"Bolivia\",\n code: \"BO\",\n timeZone: \"America/La_Paz\",\n phoneNumberExtension: \"591\",\n },\n {\n name: \"Bosnia and Herzegovina\",\n code: \"BA\",\n timeZone: \"Europe/Sarajevo\",\n phoneNumberExtension: \"387\",\n },\n {\n name: \"Botswana\",\n code: \"BW\",\n timeZone: \"Africa/Gaborone\",\n phoneNumberExtension: \"267\",\n },\n {\n name: \"Bouvet Island\",\n code: \"BV\",\n timeZone: \"Europe/Oslo\",\n phoneNumberExtension: \"47\",\n },\n {\n name: \"Brazil\",\n code: \"BR\",\n timeZone: \"America/Sao_Paulo\",\n phoneNumberExtension: \"55\",\n },\n {\n name: \"British Indian Ocean Territory\",\n code: \"IO\",\n timeZone: \"Indian/Chagos\",\n phoneNumberExtension: \"246\",\n },\n {\n name: \"Brunei Darussalam\",\n code: \"BN\",\n timeZone: \"Asia/Brunei\",\n phoneNumberExtension: \"673\",\n },\n {\n name: \"Bulgaria\",\n code: \"BG\",\n timeZone: \"Europe/Sofia\",\n phoneNumberExtension: \"359\",\n phoneNumberFormat: \"XX XXX XXXX\",\n },\n {\n name: \"Burkina Faso\",\n code: \"BF\",\n timeZone: \"Africa/Ouagadougou\",\n phoneNumberExtension: \"226\",\n },\n {\n name: \"Burundi\",\n code: \"BI\",\n timeZone: \"Africa/Bujumbura\",\n phoneNumberExtension: \"257\",\n },\n {\n name: \"Cambodia\",\n code: \"KH\",\n timeZone: \"Asia/Phnom_Penh\",\n phoneNumberExtension: \"855\",\n },\n {\n name: \"Cameroon\",\n code: \"CM\",\n timeZone: \"Africa/Douala\",\n phoneNumberExtension: \"237\",\n },\n {\n name: \"Canada\",\n code: \"CA\",\n timeZone: \"America/Toronto\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Cape Verde\",\n code: \"CV\",\n timeZone: \"Atlantic/Cape_Verde\",\n phoneNumberExtension: \"238\",\n },\n {\n name: \"Cayman Islands\",\n code: \"KY\",\n timeZone: \"America/Cayman\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Central African Republic\",\n code: \"CF\",\n timeZone: \"Africa/Bangui\",\n phoneNumberExtension: \"236\",\n },\n {\n name: \"Chad\",\n code: \"TD\",\n timeZone: \"Africa/Ndjamena\",\n phoneNumberExtension: \"235\",\n },\n {\n name: \"Chile\",\n code: \"CL\",\n timeZone: \"America/Santiago\",\n phoneNumberExtension: \"56\",\n },\n {\n name: \"China\",\n code: \"CN\",\n timeZone: \"Asia/Shanghai\",\n phoneNumberExtension: \"86\",\n },\n {\n name: \"Christmas Island\",\n code: \"CX\",\n timeZone: \"Indian/Christmas\",\n phoneNumberExtension: \"61\",\n },\n {\n name: \"Cocos (Keeling) Islands\",\n code: \"CC\",\n timeZone: \"Indian/Cocos\",\n phoneNumberExtension: \"61\",\n },\n {\n name: \"Colombia\",\n code: \"CO\",\n timeZone: \"America/Bogota\",\n phoneNumberExtension: \"57\",\n },\n {\n name: \"Comoros\",\n code: \"KM\",\n timeZone: \"Indian/Comoro\",\n phoneNumberExtension: \"269\",\n },\n {\n name: \"Congo\",\n code: \"CG\",\n timeZone: \"Africa/Brazzaville\",\n phoneNumberExtension: \"242\",\n },\n {\n name: \"Congo, The Democratic Republic of the\",\n code: \"CD\",\n timeZone: \"Africa/Kinshasa\",\n phoneNumberExtension: \"243\",\n },\n {\n name: \"Cook Islands\",\n code: \"CK\",\n timeZone: \"Pacific/Rarotonga\",\n phoneNumberExtension: \"682\",\n },\n {\n name: \"Costa Rica\",\n code: \"CR\",\n timeZone: \"America/Costa_Rica\",\n phoneNumberExtension: \"506\",\n },\n {\n name: \"Cote D'Ivoire\",\n code: \"CI\",\n timeZone: \"Africa/Abidjan\",\n phoneNumberExtension: \"225\",\n },\n {\n name: \"Croatia\",\n code: \"HR\",\n timeZone: \"Europe/Zagreb\",\n phoneNumberExtension: \"385\",\n },\n {\n name: \"Cuba\",\n code: \"CU\",\n timeZone: \"America/Havana\",\n phoneNumberExtension: \"53\",\n },\n {\n name: \"Cyprus\",\n code: \"CY\",\n timeZone: \"Asia/Nicosia\",\n phoneNumberExtension: \"357\",\n },\n {\n name: \"Czech Republic\",\n code: \"CZ\",\n timeZone: \"Europe/Prague\",\n phoneNumberExtension: \"420\",\n },\n {\n name: \"Denmark\",\n code: \"DK\",\n timeZone: \"Europe/Copenhagen\",\n phoneNumberExtension: \"45\",\n },\n {\n name: \"Djibouti\",\n code: \"DJ\",\n timeZone: \"Africa/Djibouti\",\n phoneNumberExtension: \"253\",\n },\n {\n name: \"Dominica\",\n code: \"DM\",\n timeZone: \"America/Dominica\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Dominican Republic\",\n code: \"DO\",\n timeZone: \"America/Santo_Domingo\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Ecuador\",\n code: \"EC\",\n timeZone: \"America/Guayaquil\",\n phoneNumberExtension: \"593\",\n },\n {\n name: \"Egypt\",\n code: \"EG\",\n timeZone: \"Africa/Cairo\",\n phoneNumberExtension: \"20\",\n },\n {\n name: \"El Salvador\",\n code: \"SV\",\n timeZone: \"America/El_Salvador\",\n phoneNumberExtension: \"503\",\n },\n {\n name: \"Equatorial Guinea\",\n code: \"GQ\",\n timeZone: \"Africa/Malabo\",\n phoneNumberExtension: \"240\",\n },\n {\n name: \"Eritrea\",\n code: \"ER\",\n timeZone: \"Africa/Asmara\",\n phoneNumberExtension: \"291\",\n },\n {\n name: \"Estonia\",\n code: \"EE\",\n timeZone: \"Europe/Tallinn\",\n phoneNumberExtension: \"372\",\n },\n {\n name: \"Ethiopia\",\n code: \"ET\",\n timeZone: \"Africa/Addis_Ababa\",\n phoneNumberExtension: \"251\",\n },\n {\n name: \"Falkland Islands (Malvinas)\",\n code: \"FK\",\n timeZone: \"Atlantic/Stanley\",\n phoneNumberExtension: \"500\",\n },\n {\n name: \"Faroe Islands\",\n code: \"FO\",\n timeZone: \"Atlantic/Faroe\",\n phoneNumberExtension: \"298\",\n },\n {\n name: \"Fiji\",\n code: \"FJ\",\n timeZone: \"Pacific/Fiji\",\n phoneNumberExtension: \"679\",\n },\n {\n name: \"Finland\",\n code: \"FI\",\n timeZone: \"Europe/Helsinki\",\n phoneNumberExtension: \"358\",\n },\n {\n name: \"France\",\n code: \"FR\",\n timeZone: \"Europe/Paris\",\n phoneNumberExtension: \"33\",\n },\n {\n name: \"French Guiana\",\n code: \"GF\",\n timeZone: \"America/Cayenne\",\n phoneNumberExtension: \"594\",\n },\n {\n name: \"French Polynesia\",\n code: \"PF\",\n timeZone: \"Pacific/Tahiti\",\n phoneNumberExtension: \"689\",\n },\n {\n name: \"French Southern Territories\",\n code: \"TF\",\n timeZone: \"Indian/Kerguelen\",\n phoneNumberExtension: \"262\",\n },\n {\n name: \"Gabon\",\n code: \"GA\",\n timeZone: \"Africa/Libreville\",\n phoneNumberExtension: \"241\",\n },\n {\n name: \"Gambia\",\n code: \"GM\",\n timeZone: \"Africa/Banjul\",\n phoneNumberExtension: \"220\",\n },\n {\n name: \"Georgia\",\n code: \"GE\",\n timeZone: \"Asia/Tbilisi\",\n phoneNumberExtension: \"995\",\n },\n {\n name: \"Germany\",\n code: \"DE\",\n timeZone: \"Europe/Berlin\",\n phoneNumberExtension: \"49\",\n phoneNumberFormat: \"XXXX XXXXXX\",\n },\n {\n name: \"Ghana\",\n code: \"GH\",\n timeZone: \"Africa/Accra\",\n phoneNumberExtension: \"233\",\n },\n {\n name: \"Gibraltar\",\n code: \"GI\",\n timeZone: \"Europe/Gibraltar\",\n phoneNumberExtension: \"350\",\n },\n {\n name: \"Greece\",\n code: \"GR\",\n timeZone: \"Europe/Athens\",\n phoneNumberExtension: \"30\",\n },\n {\n name: \"Greenland\",\n code: \"GL\",\n timeZone: \"America/Godthab\",\n phoneNumberExtension: \"299\",\n },\n {\n name: \"Grenada\",\n code: \"GD\",\n timeZone: \"America/Grenada\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Guadeloupe\",\n code: \"GP\",\n timeZone: \"America/Guadeloupe\",\n phoneNumberExtension: \"590\",\n },\n {\n name: \"Guam\",\n code: \"GU\",\n timeZone: \"Pacific/Guam\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Guatemala\",\n code: \"GT\",\n timeZone: \"America/Guatemala\",\n phoneNumberExtension: \"502\",\n },\n {\n name: \"United Kingdom\",\n code: \"GB\",\n timeZone: \"Europe/London\",\n phoneNumberExtension: \"44\",\n phoneNumberFormat: \"XX XXXX XXXX\",\n },\n {\n name: \"Guernsey\",\n code: \"GG\",\n timeZone: \"Europe/Guernsey\",\n phoneNumberExtension: \"44\",\n phoneNumberFormat: \"XX XXXX XXXX\",\n },\n {\n name: \"Guinea\",\n code: \"GN\",\n timeZone: \"Africa/Conakry\",\n phoneNumberExtension: \"224\",\n },\n {\n name: \"Guinea-Bissau\",\n code: \"GW\",\n timeZone: \"Africa/Bissau\",\n phoneNumberExtension: \"245\",\n },\n {\n name: \"Guyana\",\n code: \"GY\",\n timeZone: \"America/Guyana\",\n phoneNumberExtension: \"592\",\n },\n {\n name: \"Haiti\",\n code: \"HT\",\n timeZone: \"America/Port-au-Prince\",\n phoneNumberExtension: \"509\",\n },\n {\n name: \"Heard Island and Mcdonald Islands\",\n code: \"HM\",\n timeZone: \"Indian/Kerguelen\",\n phoneNumberExtension: \"672\",\n },\n {\n name: \"Holy See (Vatican City State)\",\n code: \"VA\",\n timeZone: \"Europe/Vatican\",\n phoneNumberExtension: \"379\",\n },\n {\n name: \"Honduras\",\n code: \"HN\",\n timeZone: \"America/Tegucigalpa\",\n phoneNumberExtension: \"504\",\n },\n {\n name: \"Hong Kong\",\n code: \"HK\",\n timeZone: \"Asia/Hong_Kong\",\n phoneNumberExtension: \"852\",\n },\n {\n name: \"Hungary\",\n code: \"HU\",\n timeZone: \"Europe/Budapest\",\n phoneNumberExtension: \"36\",\n },\n {\n name: \"Iceland\",\n code: \"IS\",\n timeZone: \"Atlantic/Reykjavik\",\n phoneNumberExtension: \"354\",\n },\n {\n name: \"India\",\n code: \"IN\",\n timeZone: \"Asia/Kolkata\",\n phoneNumberExtension: \"91\",\n },\n {\n name: \"Indonesia\",\n code: \"ID\",\n timeZone: \"Asia/Jakarta\",\n phoneNumberExtension: \"62\",\n },\n {\n name: \"Iran, Islamic Republic Of\",\n code: \"IR\",\n timeZone: \"Asia/Tehran\",\n phoneNumberExtension: \"98\",\n },\n {\n name: \"Iraq\",\n code: \"IQ\",\n timeZone: \"Asia/Baghdad\",\n phoneNumberExtension: \"964\",\n },\n {\n name: \"Ireland\",\n code: \"IE\",\n timeZone: \"Europe/Dublin\",\n phoneNumberExtension: \"353\",\n },\n {\n name: \"Israel\",\n code: \"IL\",\n timeZone: \"Asia/Jerusalem\",\n phoneNumberExtension: \"972\",\n },\n {\n name: \"Italy\",\n code: \"IT\",\n timeZone: \"Europe/Rome\",\n phoneNumberExtension: \"39\",\n phoneNumberFormat: \"XXX XXX XXXX\",\n },\n {\n name: \"Jamaica\",\n code: \"JM\",\n timeZone: \"America/Jamaica\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Japan\",\n code: \"JP\",\n timeZone: \"Asia/Tokyo\",\n phoneNumberExtension: \"81\",\n },\n {\n name: \"Jersey\",\n code: \"JE\",\n timeZone: \"Europe/Jersey\",\n phoneNumberExtension: \"44\",\n phoneNumberFormat: \"XX XXXX XXXX\",\n },\n {\n name: \"Jordan\",\n code: \"JO\",\n timeZone: \"Asia/Amman\",\n phoneNumberExtension: \"962\",\n },\n {\n name: \"Kazakhstan\",\n code: \"KZ\",\n timeZone: \"Asia/Almaty\",\n phoneNumberExtension: \"7\",\n },\n {\n name: \"Kenya\",\n code: \"KE\",\n timeZone: \"Africa/Nairobi\",\n phoneNumberExtension: \"254\",\n },\n {\n name: \"Kiribati\",\n code: \"KI\",\n timeZone: \"Pacific/Tarawa\",\n phoneNumberExtension: \"686\",\n },\n {\n name: \"Korea, Democratic People's Republic of (North Korea)\",\n code: \"KP\",\n timeZone: \"Asia/Pyongyang\",\n phoneNumberExtension: \"850\",\n },\n {\n name: \"Korea, Republic of (South Korea)\",\n code: \"KR\",\n timeZone: \"Asia/Seoul\",\n phoneNumberExtension: \"82\",\n },\n {\n name: \"Kuwait\",\n code: \"KW\",\n timeZone: \"Asia/Kuwait\",\n phoneNumberExtension: \"965\",\n },\n {\n name: \"Kyrgyzstan\",\n code: \"KG\",\n timeZone: \"Asia/Bishkek\",\n phoneNumberExtension: \"996\",\n },\n {\n name: \"Lao People's Democratic Republic\",\n code: \"LA\",\n timeZone: \"Asia/Vientiane\",\n phoneNumberExtension: \"856\",\n },\n {\n name: \"Latvia\",\n code: \"LV\",\n timeZone: \"Europe/Riga\",\n phoneNumberExtension: \"371\",\n },\n {\n name: \"Lebanon\",\n code: \"LB\",\n timeZone: \"Asia/Beirut\",\n phoneNumberExtension: \"961\",\n },\n {\n name: \"Lesotho\",\n code: \"LS\",\n timeZone: \"Africa/Maseru\",\n phoneNumberExtension: \"266\",\n },\n {\n name: \"Liberia\",\n code: \"LR\",\n timeZone: \"Africa/Monrovia\",\n phoneNumberExtension: \"231\",\n },\n {\n name: \"Libyan Arab Jamahiriya\",\n code: \"LY\",\n timeZone: \"Africa/Tripoli\",\n phoneNumberExtension: \"218\",\n },\n {\n name: \"Liechtenstein\",\n code: \"LI\",\n timeZone: \"Europe/Vaduz\",\n phoneNumberExtension: \"423\",\n },\n {\n name: \"Lithuania\",\n code: \"LT\",\n timeZone: \"Europe/Vilnius\",\n phoneNumberExtension: \"370\",\n },\n {\n name: \"Luxembourg\",\n code: \"LU\",\n timeZone: \"Europe/Luxembourg\",\n phoneNumberExtension: \"352\",\n },\n {\n name: \"Macao\",\n code: \"MO\",\n timeZone: \"Asia/Macau\",\n phoneNumberExtension: \"853\",\n },\n {\n name: \"Macedonia, The Former Yugoslav Republic of\",\n code: \"MK\",\n timeZone: \"Europe/Skopje\",\n phoneNumberExtension: \"389\",\n },\n {\n name: \"Madagascar\",\n code: \"MG\",\n timeZone: \"Indian/Antananarivo\",\n phoneNumberExtension: \"261\",\n },\n {\n name: \"Malawi\",\n code: \"MW\",\n timeZone: \"Africa/Blantyre\",\n phoneNumberExtension: \"265\",\n },\n {\n name: \"Malaysia\",\n code: \"MY\",\n timeZone: \"Asia/Kuala_Lumpur\",\n phoneNumberExtension: \"60\",\n },\n {\n name: \"Maldives\",\n code: \"MV\",\n timeZone: \"Indian/Maldives\",\n phoneNumberExtension: \"960\",\n },\n {\n name: \"Mali\",\n code: \"ML\",\n timeZone: \"Africa/Bamako\",\n phoneNumberExtension: \"223\",\n },\n {\n name: \"Malta\",\n code: \"MT\",\n timeZone: \"Europe/Malta\",\n phoneNumberExtension: \"356\",\n },\n {\n name: \"Marshall Islands\",\n code: \"MH\",\n timeZone: \"Pacific/Majuro\",\n phoneNumberExtension: \"692\",\n },\n {\n name: \"Martinique\",\n code: \"MQ\",\n timeZone: \"America/Martinique\",\n phoneNumberExtension: \"596\",\n },\n {\n name: \"Mauritania\",\n code: \"MR\",\n timeZone: \"Africa/Nouakchott\",\n phoneNumberExtension: \"222\",\n },\n {\n name: \"Mauritius\",\n code: \"MU\",\n timeZone: \"Indian/Mauritius\",\n phoneNumberExtension: \"230\",\n },\n {\n name: \"Mayotte\",\n code: \"YT\",\n timeZone: \"Indian/Mayotte\",\n phoneNumberExtension: \"262\",\n },\n {\n name: \"Mexico\",\n code: \"MX\",\n timeZone: \"America/Mexico_City\",\n phoneNumberExtension: \"52\",\n },\n {\n name: \"Micronesia, Federated States of\",\n code: \"FM\",\n timeZone: \"Pacific/Chuuk\",\n phoneNumberExtension: \"691\",\n },\n {\n name: \"Moldova, Republic of\",\n code: \"MD\",\n timeZone: \"Europe/Chisinau\",\n phoneNumberExtension: \"373\",\n },\n {\n name: \"Monaco\",\n code: \"MC\",\n timeZone: \"Europe/Monaco\",\n phoneNumberExtension: \"377\",\n },\n {\n name: \"Mongolia\",\n code: \"MN\",\n timeZone: \"Asia/Ulaanbaatar\",\n phoneNumberExtension: \"976\",\n },\n {\n name: \"Montserrat\",\n code: \"MS\",\n timeZone: \"America/Montserrat\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Morocco\",\n code: \"MA\",\n timeZone: \"Africa/Casablanca\",\n phoneNumberExtension: \"212\",\n },\n {\n name: \"Mozambique\",\n code: \"MZ\",\n timeZone: \"Africa/Maputo\",\n phoneNumberExtension: \"258\",\n },\n {\n name: \"Myanmar\",\n code: \"MM\",\n timeZone: \"Asia/Yangon\",\n phoneNumberExtension: \"95\",\n },\n {\n name: \"Namibia\",\n code: \"NA\",\n timeZone: \"Africa/Windhoek\",\n phoneNumberExtension: \"264\",\n },\n {\n name: \"Nauru\",\n code: \"NR\",\n timeZone: \"Pacific/Nauru\",\n phoneNumberExtension: \"674\",\n },\n {\n name: \"Nepal\",\n code: \"NP\",\n timeZone: \"Asia/Kathmandu\",\n phoneNumberExtension: \"977\",\n },\n {\n name: \"Netherlands\",\n code: \"NL\",\n timeZone: \"Europe/Amsterdam\",\n phoneNumberExtension: \"31\",\n },\n {\n name: \"New Caledonia\",\n code: \"NC\",\n timeZone: \"Pacific/Noumea\",\n phoneNumberExtension: \"687\",\n },\n {\n name: \"New Zealand\",\n code: \"NZ\",\n timeZone: \"Pacific/Auckland\",\n phoneNumberExtension: \"64\",\n },\n {\n name: \"Nicaragua\",\n code: \"NI\",\n timeZone: \"America/Managua\",\n phoneNumberExtension: \"505\",\n },\n {\n name: \"Niger\",\n code: \"NE\",\n timeZone: \"Africa/Niamey\",\n phoneNumberExtension: \"227\",\n },\n {\n name: \"Nigeria\",\n code: \"NG\",\n timeZone: \"Africa/Lagos\",\n phoneNumberExtension: \"234\",\n },\n {\n name: \"Niue\",\n code: \"NU\",\n timeZone: \"Pacific/Niue\",\n phoneNumberExtension: \"683\",\n },\n {\n name: \"Norfolk Island\",\n code: \"NF\",\n timeZone: \"Pacific/Norfolk\",\n phoneNumberExtension: \"672\",\n },\n {\n name: \"Northern Mariana Islands\",\n code: \"MP\",\n timeZone: \"Pacific/Saipan\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Norway\",\n code: \"NO\",\n timeZone: \"Europe/Oslo\",\n phoneNumberExtension: \"47\",\n },\n {\n name: \"Oman\",\n code: \"OM\",\n timeZone: \"Asia/Muscat\",\n phoneNumberExtension: \"968\",\n },\n {\n name: \"Pakistan\",\n code: \"PK\",\n timeZone: \"Asia/Karachi\",\n phoneNumberExtension: \"92\",\n },\n {\n name: \"Palau\",\n code: \"PW\",\n timeZone: \"Pacific/Palau\",\n phoneNumberExtension: \"680\",\n },\n {\n name: \"Palestinian Territory, Occupied\",\n code: \"PS\",\n timeZone: \"Asia/Hebron\",\n phoneNumberExtension: \"970\",\n },\n {\n name: \"Panama\",\n code: \"PA\",\n timeZone: \"America/Panama\",\n phoneNumberExtension: \"507\",\n },\n {\n name: \"Papua New Guinea\",\n code: \"PG\",\n timeZone: \"Pacific/Port_Moresby\",\n phoneNumberExtension: \"675\",\n },\n {\n name: \"Paraguay\",\n code: \"PY\",\n timeZone: \"America/Asuncion\",\n phoneNumberExtension: \"595\",\n },\n {\n name: \"Peru\",\n code: \"PE\",\n timeZone: \"America/Lima\",\n phoneNumberExtension: \"51\",\n },\n {\n name: \"Philippines\",\n code: \"PH\",\n timeZone: \"Asia/Manila\",\n phoneNumberExtension: \"63\",\n },\n {\n name: \"Pitcairn\",\n code: \"PN\",\n timeZone: \"Pacific/Pitcairn\",\n phoneNumberExtension: \"64\",\n },\n {\n name: \"Poland\",\n code: \"PL\",\n timeZone: \"Europe/Warsaw\",\n phoneNumberExtension: \"48\",\n },\n {\n name: \"Portugal\",\n code: \"PT\",\n timeZone: \"Europe/Lisbon\",\n phoneNumberExtension: \"351\",\n },\n {\n name: \"Puerto Rico\",\n code: \"PR\",\n timeZone: \"America/Puerto_Rico\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Qatar\",\n code: \"QA\",\n timeZone: \"Asia/Qatar\",\n phoneNumberExtension: \"974\",\n },\n {\n name: \"Reunion\",\n code: \"RE\",\n timeZone: \"Indian/Reunion\",\n phoneNumberExtension: \"262\",\n },\n {\n name: \"Romania\",\n code: \"RO\",\n timeZone: \"Europe/Bucharest\",\n phoneNumberExtension: \"40\",\n },\n {\n name: \"Russian Federation\",\n code: \"RU\",\n timeZone: \"Europe/Moscow\",\n phoneNumberExtension: \"7\",\n },\n {\n name: \"RWANDA\",\n code: \"RW\",\n timeZone: \"Africa/Kigali\",\n phoneNumberExtension: \"250\",\n },\n {\n name: \"Saint Helena\",\n code: \"SH\",\n timeZone: \"Atlantic/St_Helena\",\n phoneNumberExtension: \"290\",\n },\n {\n name: \"Saint Kitts and Nevis\",\n code: \"KN\",\n timeZone: \"America/St_Kitts\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Saint Lucia\",\n code: \"LC\",\n timeZone: \"America/St_Lucia\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Saint Pierre and Miquelon\",\n code: \"PM\",\n timeZone: \"America/Miquelon\",\n phoneNumberExtension: \"508\",\n },\n {\n name: \"Saint Vincent and the Grenadines\",\n code: \"VC\",\n timeZone: \"America/St_Vincent\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Samoa\",\n code: \"WS\",\n timeZone: \"Pacific/Apia\",\n phoneNumberExtension: \"685\",\n },\n {\n name: \"San Marino\",\n code: \"SM\",\n timeZone: \"Europe/San_Marino\",\n phoneNumberExtension: \"378\",\n },\n {\n name: \"Sao Tome and Principe\",\n code: \"ST\",\n timeZone: \"Africa/Sao_Tome\",\n phoneNumberExtension: \"239\",\n },\n {\n name: \"Saudi Arabia\",\n code: \"SA\",\n timeZone: \"Asia/Riyadh\",\n phoneNumberExtension: \"966\",\n },\n {\n name: \"Senegal\",\n code: \"SN\",\n timeZone: \"Africa/Dakar\",\n phoneNumberExtension: \"221\",\n },\n {\n name: \"Republic of Serbia\",\n code: \"RS\",\n timeZone: \"Europe/Belgrade\",\n phoneNumberExtension: \"381\",\n },\n {\n name: \"Seychelles\",\n code: \"SC\",\n timeZone: \"Indian/Mahe\",\n phoneNumberExtension: \"248\",\n },\n {\n name: \"Sierra Leone\",\n code: \"SL\",\n timeZone: \"Africa/Freetown\",\n phoneNumberExtension: \"232\",\n },\n {\n name: \"Singapore\",\n code: \"SG\",\n timeZone: \"Asia/Singapore\",\n phoneNumberExtension: \"65\",\n },\n {\n name: \"Slovakia\",\n code: \"SK\",\n timeZone: \"Europe/Bratislava\",\n phoneNumberExtension: \"421\",\n },\n {\n name: \"Slovenia\",\n code: \"SI\",\n timeZone: \"Europe/Ljubljana\",\n phoneNumberExtension: \"386\",\n },\n {\n name: \"Solomon Islands\",\n code: \"SB\",\n timeZone: \"Pacific/Guadalcanal\",\n phoneNumberExtension: \"677\",\n },\n {\n name: \"Somalia\",\n code: \"SO\",\n timeZone: \"Africa/Mogadishu\",\n phoneNumberExtension: \"252\",\n },\n {\n name: \"South Africa\",\n code: \"ZA\",\n timeZone: \"Africa/Johannesburg\",\n phoneNumberExtension: \"27\",\n },\n {\n name: \"South Georgia and the South Sandwich Islands\",\n code: \"GS\",\n timeZone: \"Atlantic/South_Georgia\",\n phoneNumberExtension: \"500\",\n },\n {\n name: \"Spain\",\n code: \"ES\",\n timeZone: \"Europe/Madrid\",\n phoneNumberExtension: \"34\",\n },\n {\n name: \"Sri Lanka\",\n code: \"LK\",\n timeZone: \"Asia/Colombo\",\n phoneNumberExtension: \"94\",\n },\n {\n name: \"Sudan\",\n code: \"SD\",\n timeZone: \"Africa/Khartoum\",\n phoneNumberExtension: \"249\",\n },\n {\n name: \"Suriname\",\n code: \"SR\",\n timeZone: \"America/Paramaribo\",\n phoneNumberExtension: \"597\",\n },\n {\n name: \"Svalbard and Jan Mayen\",\n code: \"SJ\",\n timeZone: \"Arctic/Longyearbyen\",\n phoneNumberExtension: \"47\",\n },\n {\n name: \"Swaziland\",\n code: \"SZ\",\n timeZone: \"Africa/Mbabane\",\n phoneNumberExtension: \"268\",\n },\n {\n name: \"Sweden\",\n code: \"SE\",\n timeZone: \"Europe/Stockholm\",\n phoneNumberExtension: \"46\",\n },\n {\n name: \"Switzerland\",\n code: \"CH\",\n timeZone: \"Europe/Zurich\",\n phoneNumberExtension: \"41\",\n },\n {\n name: \"Syrian Arab Republic\",\n code: \"SY\",\n timeZone: \"Asia/Damascus\",\n phoneNumberExtension: \"963\",\n },\n {\n name: \"Taiwan, Province of China\",\n code: \"TW\",\n timeZone: \"Asia/Taipei\",\n phoneNumberExtension: \"886\",\n },\n {\n name: \"Tajikistan\",\n code: \"TJ\",\n timeZone: \"Asia/Dushanbe\",\n phoneNumberExtension: \"992\",\n },\n {\n name: \"Tanzania, United Republic of\",\n code: \"TZ\",\n timeZone: \"Africa/Dar_es_Salaam\",\n phoneNumberExtension: \"255\",\n },\n {\n name: \"Thailand\",\n code: \"TH\",\n timeZone: \"Asia/Bangkok\",\n phoneNumberExtension: \"66\",\n },\n {\n name: \"Timor-Leste\",\n code: \"TL\",\n timeZone: \"Asia/Dili\",\n phoneNumberExtension: \"670\",\n },\n {\n name: \"Togo\",\n code: \"TG\",\n timeZone: \"Africa/Lome\",\n phoneNumberExtension: \"228\",\n },\n {\n name: \"Tokelau\",\n code: \"TK\",\n timeZone: \"Pacific/Fakaofo\",\n phoneNumberExtension: \"690\",\n },\n {\n name: \"Tonga\",\n code: \"TO\",\n timeZone: \"Pacific/Tongatapu\",\n phoneNumberExtension: \"676\",\n },\n {\n name: \"Trinidad and Tobago\",\n code: \"TT\",\n timeZone: \"America/Port_of_Spain\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Tunisia\",\n code: \"TN\",\n timeZone: \"Africa/Tunis\",\n phoneNumberExtension: \"216\",\n },\n {\n name: \"Turkey\",\n code: \"TR\",\n timeZone: \"Europe/Istanbul\",\n phoneNumberExtension: \"90\",\n },\n {\n name: \"Turkmenistan\",\n code: \"TM\",\n timeZone: \"Asia/Ashgabat\",\n phoneNumberExtension: \"993\",\n },\n {\n name: \"Turks and Caicos Islands\",\n code: \"TC\",\n timeZone: \"America/Grand_Turk\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Tuvalu\",\n code: \"TV\",\n timeZone: \"Pacific/Funafuti\",\n phoneNumberExtension: \"688\",\n },\n {\n name: \"Uganda\",\n code: \"UG\",\n timeZone: \"Africa/Kampala\",\n phoneNumberExtension: \"256\",\n },\n {\n name: \"Ukraine\",\n code: \"UA\",\n timeZone: \"Europe/Kiev\",\n phoneNumberExtension: \"380\",\n },\n {\n name: \"United Arab Emirates\",\n code: \"AE\",\n timeZone: \"Asia/Dubai\",\n phoneNumberExtension: \"971\",\n },\n {\n name: \"United States Minor Outlying Islands\",\n code: \"UM\",\n timeZone: \"Pacific/Midway\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Uruguay\",\n code: \"UY\",\n timeZone: \"America/Montevideo\",\n phoneNumberExtension: \"598\",\n },\n {\n name: \"Uzbekistan\",\n code: \"UZ\",\n timeZone: \"Asia/Tashkent\",\n phoneNumberExtension: \"998\",\n },\n {\n name: \"Vanuatu\",\n code: \"VU\",\n timeZone: \"Pacific/Efate\",\n phoneNumberExtension: \"678\",\n },\n {\n name: \"Venezuela\",\n code: \"VE\",\n timeZone: \"America/Caracas\",\n phoneNumberExtension: \"58\",\n },\n {\n name: \"Viet Nam\",\n code: \"VN\",\n timeZone: \"Asia/Ho_Chi_Minh\",\n phoneNumberExtension: \"84\",\n },\n {\n name: \"Virgin Islands, British\",\n code: \"VG\",\n timeZone: \"America/Tortola\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Virgin Islands, U.S.\",\n code: \"VI\",\n timeZone: \"America/St_Thomas\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Wallis and Futuna\",\n code: \"WF\",\n timeZone: \"Pacific/Wallis\",\n phoneNumberExtension: \"681\",\n },\n {\n name: \"Western Sahara\",\n code: \"EH\",\n timeZone: \"Africa/El_Aaiun\",\n phoneNumberExtension: \"212\",\n },\n {\n name: \"Yemen\",\n code: \"YE\",\n timeZone: \"Asia/Aden\",\n phoneNumberExtension: \"967\",\n },\n {\n name: \"Zambia\",\n code: \"ZM\",\n timeZone: \"Africa/Lusaka\",\n phoneNumberExtension: \"260\",\n },\n {\n name: \"Zimbabwe\",\n code: \"ZW\",\n timeZone: \"Africa/Harare\",\n phoneNumberExtension: \"263\",\n },\n] as const;\n","import { memo } from \"react\";\n\nimport Text from \"./Text\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nexport type LabelProps = {\n text?: string;\n /** @default false */\n required?: boolean;\n /** @default false */\n isError?: boolean;\n color?: string;\n};\n\nfunction Label({ text, required, isError, color }: LabelProps) {\n const theme = useTheme();\n\n return (\n <Text\n as=\"label\"\n height={16}\n fontSize={14}\n color={isError ? theme.colors.error : color ?? theme.colors.textSecondary}\n >\n {text}\n\n {required && (\n <Text as=\"span\" fontSize={16} color={theme.colors.error}>\n {\" \"}\n *\n </Text>\n )}\n </Text>\n );\n}\n\nexport default memo(Label);\n","import { forwardRef, memo, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { ComponentPropWithRef } from \"../types/components\";\nimport { AnyOtherString, OmitProps } from \"../types/app\";\nimport { IconName } from \"../types/icon\";\n\nimport { useBooleanState } from \"../utils/hooks\";\nimport { useDebounceState } from \"../utils/hooks\";\n\nimport Text from \"./Text\";\nimport Div, { DivProps } from \"./Div\";\nimport InputField from \"./InputField\";\nimport Icon from \"./Icon\";\nimport Button from \"./Button\";\nimport Loader from \"./Loader\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nexport type DropdownOption<Value, Data = unknown> = {\n value: Value;\n label: string;\n /** @default false */\n disabled?: boolean;\n searchValues?: string[];\n data?: Data;\n};\n\nexport type DropdownProps<Value, Data = unknown> = {\n label?: string;\n labelColor?: string;\n errorText?: string;\n infoText?: string;\n /** @default false */\n required?: boolean;\n /** @default false */\n disabled?: boolean;\n options: DropdownOption<Value, Data>[];\n value?: Value;\n defaultValue?: Value;\n placeholder?: string;\n leftIcon?: IconName | AnyOtherString;\n inputFieldClassName?: string;\n /** @default false */\n withSearch?: boolean;\n /** @default false */\n withDebounce?: boolean;\n /** @default 0.5s */\n debounceDelay?: number;\n /** @default false */\n debounceIsLoading?: boolean;\n debounceMinimumSymbolsRequired?: number;\n /** @default false */\n withoutClearButton?: boolean;\n onChange?: (value: Value | undefined) => void;\n onChangeSearch?: (query: string) => void;\n renderOption?: (option: DropdownOption<Value, Data>, index: number, isSelected: boolean) => React.ReactNode;\n} & OmitProps<DivProps<unknown>, \"onChange\" | \"defaultChecked\">;\n\ntype DropdownComponentType = {\n <Value, Data>(props: ComponentPropWithRef<HTMLDivElement, DropdownProps<Value, Data>>): React.ReactElement;\n};\n\nconst DropdownComponent: DropdownComponentType = forwardRef(function Dropdown<Value, Data>(\n {\n label,\n labelColor,\n errorText,\n infoText,\n required,\n disabled,\n options,\n value: controlledValue,\n defaultValue,\n placeholder,\n leftIcon,\n inputFieldClassName,\n withSearch,\n withDebounce,\n debounceDelay = 0.5,\n debounceIsLoading,\n debounceMinimumSymbolsRequired,\n withoutClearButton,\n onChange,\n onChangeSearch,\n renderOption,\n ...props\n }: DropdownProps<Value, Data>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const theme = useTheme();\n\n const dropdownHolderRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const [isOpen, setIsOpen] = useBooleanState();\n const [isOpenLate, setIsOpenLate] = useBooleanState();\n const [isFocused, setIsFocused] = useBooleanState();\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [_, debouncedSearchQuery, setDebouncedSearchQuery, isLoadingDebouncedSearchQuery] = useDebounceState<string>(\n \"\",\n debounceDelay,\n );\n const [focusedOptionIndex, setFocusedOptionIndex] = useState<number | undefined>();\n\n const [internalValue, setInternalValue] = useState<Value | undefined>(defaultValue);\n\n const value = controlledValue ?? internalValue;\n\n const filteredOptions = useMemo(() => {\n if (!searchQuery) return options;\n\n const query = searchQuery.toLowerCase();\n\n return options.filter(\n (option) =>\n option.label.toLowerCase().includes(query) ||\n option.searchValues?.some((value) => value.toLowerCase().includes(query)),\n );\n }, [options, searchQuery]);\n\n const onKeyDownInputField = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\" || (!withSearch && event.key === \" \")) {\n event.preventDefault();\n\n if (!disabled) {\n setIsOpen.toggle();\n\n if (isOpen && filteredOptions.length > 0 && focusedOptionIndex !== undefined) {\n const option = filteredOptions[focusedOptionIndex];\n\n if (!option.disabled) {\n if (controlledValue === undefined) setInternalValue(option.value);\n\n onChange?.(option.value);\n\n setIsOpen.setFalse();\n inputRef.current?.blur();\n setSearchQuery(\"\");\n setFocusedOptionIndex(undefined);\n }\n }\n }\n } else if (event.key === \"Escape\") {\n setIsOpen.setFalse();\n setFocusedOptionIndex(undefined);\n } else if (event.key === \"ArrowDown\") {\n event.preventDefault();\n\n if (!isOpen) setIsOpen.setTrue();\n\n if (filteredOptions.length > 0) {\n setFocusedOptionIndex((oldValue) =>\n oldValue === undefined ? 0 : (oldValue + 1) % filteredOptions.length,\n );\n }\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n\n if (!isOpen) setIsOpen.setTrue();\n\n if (filteredOptions.length > 0) {\n setFocusedOptionIndex((oldValue) =>\n oldValue === undefined\n ? filteredOptions.length - 1\n : (oldValue - 1 + filteredOptions.length) % filteredOptions.length,\n );\n }\n }\n },\n [disabled, withSearch, isOpen, filteredOptions, focusedOptionIndex, controlledValue, onChange],\n );\n const onClickOption = useCallback(\n (option: DropdownOption<Value, Data>) => {\n if (!option.disabled) {\n if (controlledValue === undefined) setInternalValue(option.value);\n\n onChange?.(option.value);\n\n setIsOpen.setFalse();\n inputRef.current?.blur();\n setSearchQuery(\"\");\n setFocusedOptionIndex(undefined);\n }\n },\n [onChange, controlledValue],\n );\n const onClickClearButton = useCallback(\n (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n event.stopPropagation();\n\n setInternalValue(undefined);\n onChange?.(undefined);\n\n setIsOpen.setFalse();\n inputRef.current?.blur();\n setSearchQuery(\"\");\n setFocusedOptionIndex(undefined);\n },\n [onChange],\n );\n const onChangeValue = useCallback(\n (newValue: string) => {\n setSearchQuery(newValue);\n\n if (withDebounce) setDebouncedSearchQuery(newValue);\n else onChangeSearch?.(newValue);\n },\n [withDebounce, onChangeSearch],\n );\n\n const selectedOption = useMemo(() => options.find((option) => option.value === value), [options, value]);\n\n useEffect(() => {\n if (isOpen) {\n setIsOpenLate.setTrue();\n\n if (withSearch && inputRef.current) inputRef.current.focus();\n } else {\n const timeout = setTimeout(setIsOpenLate.setFalse, 0.2 * 1000);\n\n return () => {\n clearTimeout(timeout);\n };\n }\n }, [isOpen, withSearch]);\n useEffect(() => {\n setFocusedOptionIndex(undefined);\n }, [filteredOptions]);\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownHolderRef.current && !dropdownHolderRef.current.contains(event.target as Node)) {\n setIsOpen.setFalse();\n setSearchQuery(\"\");\n setFocusedOptionIndex(undefined);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpen]);\n useEffect(() => {\n if (!withDebounce) return;\n\n onChangeSearch?.(debouncedSearchQuery);\n }, [withDebounce, onChangeSearch, debouncedSearchQuery]);\n\n const displayValue = withSearch && isFocused ? searchQuery : selectedOption?.label ?? \"\";\n const withClearButton = isOpen && selectedOption;\n const readyPlaceholder = placeholder ? placeholder : `Select an ${label?.toLowerCase() ?? \"option\"}`;\n\n return (\n <Div.column width=\"100%\" position=\"relative\" userSelect=\"none\" {...props} ref={dropdownHolderRef}>\n <Div.row position=\"relative\" width=\"100%\">\n <InputField\n label={label}\n labelColor={labelColor}\n errorText={errorText}\n infoText={infoText}\n required={required}\n disabled={disabled}\n readOnly={!withSearch}\n value={displayValue}\n cursor={!withSearch ? \"pointer\" : undefined}\n placeholder={withSearch ? (selectedOption ? selectedOption.label : readyPlaceholder) : readyPlaceholder}\n leftIcon={leftIcon}\n className={`react-better-html-dropdown${isOpen ? \" react-better-html-dropdown-open\" : \"\"}${\n isOpenLate ? \" react-better-html-dropdown-open-late\" : \"\"\n }${inputFieldClassName ? ` ${inputFieldClassName}` : \"\"}`}\n onClick={!disabled ? setIsOpen.toggle : undefined}\n onFocus={setIsFocused.setTrue}\n onBlur={setIsFocused.setFalse}\n onKeyDown={onKeyDownInputField}\n onChangeValue={withSearch ? onChangeValue : undefined}\n insideInputFieldComponent={\n <Div\n position=\"absolute\"\n top=\"100%\"\n left={0}\n width=\"100%\"\n maxHeight={300}\n backgroundColor={theme.colors.backgroundContent}\n border={`1px solid ${isFocused ? theme.colors.primary : theme.colors.border}`}\n borderTop=\"none\"\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n boxShadow=\"0px 10px 20px #00000020\"\n zIndex={1000}\n overflowY=\"auto\"\n opacity={!isOpen ? 0 : undefined}\n pointerEvents={!isOpen ? \"none\" : undefined}\n transform={`translateY(${!isOpen ? -10 : 0}px)`}\n transition={theme.styles.transition}\n role=\"listbox\"\n aria-label={label}\n >\n {isLoadingDebouncedSearchQuery || debounceIsLoading ? (\n <Div padding={`${theme.styles.space / 2}px ${theme.styles.space + theme.styles.gap}px`}>\n <Loader.text />\n </Div>\n ) : filteredOptions.length ? (\n filteredOptions.map((option, index) => {\n const isSelected = option.value === value;\n const isDisabled = option.disabled;\n const isFocused = index === focusedOptionIndex;\n\n return (\n <Div\n color={\n isDisabled\n ? theme.colors.textSecondary + \"80\"\n : isSelected\n ? theme.colors.base\n : theme.colors.textPrimary\n }\n backgroundColor={isSelected ? theme.colors.primary : theme.colors.backgroundContent}\n filter={isFocused ? (isDisabled ? \"brightness(0.95)\" : \"brightness(0.9)\") : undefined}\n filterHover={\n focusedOptionIndex === undefined && !isDisabled ? \"brightness(0.9)\" : undefined\n }\n cursor={isDisabled ? \"not-allowed\" : \"pointer\"}\n padding={`${theme.styles.space / 2}px ${theme.styles.space + theme.styles.gap}px`}\n value={option}\n onClickWithValue={onClickOption}\n onMouseMove={() => setFocusedOptionIndex(undefined)}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={isDisabled}\n key={JSON.stringify(option)}\n >\n {renderOption ? renderOption(option, index, isSelected) : <Text>{option.label}</Text>}\n </Div>\n );\n })\n ) : (\n <Div padding={`${theme.styles.space / 2}px ${theme.styles.space + theme.styles.gap}px`}>\n <Text.unknown textAlign=\"left\">\n {debounceMinimumSymbolsRequired !== undefined &&\n searchQuery.length < debounceMinimumSymbolsRequired\n ? `Enter at least ${debounceMinimumSymbolsRequired} characters`\n : \"No options\"}\n </Text.unknown>\n </Div>\n )}\n </Div>\n }\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-controls=\"dropdown-list\"\n aria-haspopup=\"listbox\"\n aria-label={label}\n ref={inputRef}\n />\n\n <Div.row\n position=\"absolute\"\n top={46 / 2 + (label ? 16 + theme.styles.gap / 2 : 0)}\n right={theme.styles.space + 1}\n alignItems=\"center\"\n gap={theme.styles.gap}\n transform=\"translateY(-50%)\"\n pointerEvents=\"none\"\n filter={disabled ? \"brightness(0.9)\" : undefined}\n opacity={disabled ? 0.6 : undefined}\n zIndex={isOpen || isOpenLate ? 1001 : undefined}\n >\n {!withoutClearButton && (\n <Button.icon\n icon=\"XMark\"\n position=\"relative\"\n size={10}\n iconSize={14}\n opacity={!withClearButton ? 0 : undefined}\n pointerEvents={withClearButton ? \"all\" : undefined}\n onClick={onClickClearButton}\n disabled={!withClearButton}\n />\n )}\n\n <Icon\n name=\"chevronDown\"\n position=\"relative\"\n size={16}\n color={theme.colors.textSecondary}\n transform={`rotate(${isOpen ? 180 : 0}deg)`}\n transition={theme.styles.transition}\n pointerEvents=\"none\"\n />\n </Div.row>\n </Div.row>\n </Div.column>\n );\n}) as any;\n\nconst Dropdown = memo(DropdownComponent) as any as typeof DropdownComponent & {};\n\nexport default Dropdown;\n","import { forwardRef, useCallback, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from \"../types/components\";\nimport { OmitProps } from \"../types/app\";\nimport { Theme } from \"../types/theme\";\n\nimport {\n useBooleanState,\n useComponentPropsWithExcludedStyle,\n useComponentPropsWithoutStyle,\n useComponentPropsWithPrefix,\n useStyledComponentStyles,\n} from \"../utils/hooks\";\n\nimport Text from \"./Text\";\nimport Div from \"./Div\";\nimport Icon from \"./Icon\";\nimport Label from \"./Label\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nconst componentSize = 26;\nconst switchComponentBallGap = 3;\nconst switchComponentMouseDownDifference = 4;\n\nconst InputElement = styled.input.withConfig({\n shouldForwardProp: (prop) => ![\"theme\", \"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{ theme: Theme; normalStyle: ComponentStyle; hoverStyle: ComponentStyle }>`\n position: relative;\n appearance: none;\n width: ${componentSize}px;\n height: ${componentSize}px;\n background-color: ${(props) => props.theme.colors.backgroundContent};\n border: 1px solid ${(props) => props.theme.colors.border};\n border-radius: ${(props) => props.theme.styles.borderRadius / 2}px;\n cursor: pointer;\n transition: ${(props) => props.theme.styles.transition};\n flex-shrink: 0;\n\n &[type=\"radio\"] {\n border-radius: 999px;\n }\n\n &:checked {\n background-color: ${(props) => props.theme.colors.primary};\n border-color: ${(props) => props.theme.colors.primary};\n }\n\n &:disabled {\n filter: brightness(0.9);\n cursor: not-allowed;\n }\n\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nconst SwitchElement = styled.div.withConfig({\n shouldForwardProp: (prop) =>\n ![\"theme\", \"checked\", \"disabled\", \"isMouseDown\", \"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{\n theme: Theme;\n checked: boolean;\n disabled: boolean;\n isMouseDown: boolean;\n normalStyle: ComponentStyle;\n hoverStyle: ComponentStyle;\n}>`\n --width: ${(props) => componentSize * 2 - props.theme.styles.gap / 2}px;\n --ball-size: ${componentSize - switchComponentBallGap * 2}px;\n\n position: relative;\n width: var(--width);\n height: ${componentSize}px;\n background-color: ${(props) => (props.checked ? props.theme.colors.primary : props.theme.colors.border)};\n border-radius: 999px;\n cursor: ${(props) => (props.disabled ? \"not-allowed\" : \"pointer\")};\n opacity: ${(props) => (props.disabled ? 0.5 : 1)};\n transition: ${(props) => props.theme.styles.transition};\n\n &::before {\n content: \"\";\n position: absolute;\n width: ${(props) =>\n componentSize - switchComponentBallGap * 2 + (props.isMouseDown ? switchComponentMouseDownDifference : 0)}px;\n height: ${componentSize - switchComponentBallGap * 2}px;\n background-color: ${(props) => props.theme.colors.base};\n border-radius: 999px;\n top: ${switchComponentBallGap}px;\n left: ${switchComponentBallGap}px;\n transform: translateX(\n ${(props) =>\n props.checked\n ? `calc(var(--width) - ${\n componentSize + (props.isMouseDown ? switchComponentMouseDownDifference : 0)\n }px)`\n : \"0px\"}\n );\n transition: ${(props) => props.theme.styles.transition};\n }\n\n &.react-better-html-color-theme-switch-with-moon {\n &::after {\n content: \"\";\n position: absolute;\n width: ${(props) =>\n componentSize -\n switchComponentBallGap * 2 +\n (props.isMouseDown ? switchComponentMouseDownDifference : 0)}px;\n height: ${componentSize - switchComponentBallGap * 2}px;\n background-color: ${(props) => (props.checked ? props.theme.colors.primary : \"transparent\")};\n border-radius: 999px;\n top: ${switchComponentBallGap}px;\n left: ${switchComponentBallGap}px;\n transform: translateX(\n ${(props) =>\n props.checked\n ? `calc(var(--width) - ${\n componentSize + (props.isMouseDown ? switchComponentMouseDownDifference * 2 : 0)\n }px - calc(var(--ball-size) / 3))`\n : \"0px\"}\n );\n transition: ${(props) => props.theme.styles.transition};\n }\n }\n\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nexport type ToggleInputRef = {};\n\ntype InternalToggleInputProps<Value> = {\n label?: string;\n labelColor?: string;\n text?: string;\n errorText?: string;\n infoText?: string;\n value?: Value;\n onChange?: (checked: boolean, value?: Value) => void;\n} & OmitProps<React.ComponentProps<\"input\">, \"style\" | \"value\" | \"ref\" | \"onChange\"> &\n ComponentStyle &\n ComponentHoverStyle;\n\nexport type ToggleInputProps<Value> = ComponentPropWithRef<\n ToggleInputRef,\n OmitProps<InternalToggleInputProps<Value>, \"type\">\n>;\ntype ToggleInputComponentType = <Value>(props: ToggleInputProps<Value>) => React.ReactElement;\n\nconst ToggleInputComponent = forwardRef(function ToggleInput<Value>(\n {\n label,\n labelColor,\n text,\n errorText,\n infoText,\n value,\n onChange,\n checked: controlledChecked,\n color,\n required,\n ...props\n }: InternalToggleInputProps<Value>,\n ref: React.ForwardedRef<ToggleInputRef>,\n) {\n const theme = useTheme();\n\n const styledComponentStyles = useStyledComponentStyles(props, theme, true);\n const styledComponentStylesWithExcluded = useComponentPropsWithExcludedStyle(props);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n const [internalChecked, setInternalChecked] = useState(false);\n\n const onChangeElement = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const newIsChecked = event.target.checked;\n\n if (controlledChecked === undefined) setInternalChecked(newIsChecked);\n onChange?.(newIsChecked, value);\n },\n [onChange, controlledChecked, value],\n );\n\n const checked = controlledChecked ?? internalChecked;\n\n const onClickText = useCallback(() => {\n const newIsChecked = !checked;\n\n if (controlledChecked === undefined) setInternalChecked(newIsChecked);\n onChange?.(newIsChecked, value);\n }, [checked, controlledChecked, onChange, value]);\n\n return (\n <Div.column width=\"100%\" gap={theme.styles.gap} {...styledComponentStylesWithExcluded}>\n {label && <Label text={label} color={labelColor} required={required} isError={!!errorText} />}\n\n <Div.row alignItems=\"center\" gap={theme.styles.gap}>\n <Div.row position=\"relative\" alignItems=\"center\">\n <InputElement\n theme={theme}\n type={props.type ?? \"checkbox\"}\n checked={checked}\n onChange={onChangeElement}\n {...styledComponentStyles}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n />\n\n {props.type === \"checkbox\" ? (\n <Icon\n name=\"check\"\n position=\"absolute\"\n top=\"50%\"\n left=\"50%\"\n color={theme.colors.base}\n size={14}\n transform={`translate(-50%, -50%)${checked ? \"\" : \" scale(0.4)\"}`}\n opacity={checked ? 1 : 0}\n pointerEvents=\"none\"\n transition={theme.styles.transition}\n />\n ) : props.type === \"radio\" ? (\n <Div\n position=\"absolute\"\n width={10}\n height={10}\n top=\"50%\"\n left=\"50%\"\n backgroundColor={theme.colors.base}\n borderRadius={999}\n transform={`translate(-50%, -50%)${checked ? \"\" : \" scale(0.4)\"}`}\n opacity={checked ? 1 : 0}\n pointerEvents=\"none\"\n />\n ) : undefined}\n </Div.row>\n\n {text && (\n <Text color={color} userSelect=\"none\" cursor=\"pointer\" onClick={onClickText}>\n {text}\n {required && !label && (\n <Text as=\"span\" fontSize={16} color={theme.colors.error}>\n {\" \"}\n *\n </Text>\n )}\n </Text>\n )}\n </Div.row>\n\n {(errorText || infoText) && (\n <Text\n as=\"span\"\n display=\"block\"\n fontSize={14}\n color={errorText ? theme.colors.error : labelColor ?? theme.colors.textSecondary}\n >\n {errorText || infoText}\n </Text>\n )}\n </Div.column>\n );\n}) as <Value>(props: ComponentPropWithRef<ToggleInputRef, InternalToggleInputProps<Value>>) => React.ReactElement;\n\nexport default {\n checkbox: forwardRef(function Checkbox<Value>(\n props: ToggleInputProps<Value>,\n ref: React.ForwardedRef<ToggleInputRef>,\n ) {\n return <ToggleInputComponent type=\"checkbox\" ref={ref} {...props} />;\n }) as ToggleInputComponentType,\n radiobutton: forwardRef(function RadioButton<Value>(\n props: ToggleInputProps<Value>,\n ref: React.ForwardedRef<ToggleInputRef>,\n ) {\n return <ToggleInputComponent type=\"radio\" ref={ref} {...props} />;\n }) as ToggleInputComponentType,\n switch: forwardRef(function Switch<Value>(\n {\n label,\n labelColor,\n errorText,\n infoText,\n disabled,\n value,\n onChange,\n checked: controlledChecked,\n required,\n ...props\n }: InternalToggleInputProps<Value>,\n ref: React.ForwardedRef<ToggleInputRef>,\n ) {\n const theme = useTheme();\n\n const styledComponentStyles = useStyledComponentStyles(props, theme, true);\n const styledComponentStylesWithExcluded = useComponentPropsWithExcludedStyle(props);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n const [internalChecked, setInternalChecked] = useBooleanState();\n const [isMouseDown, setIsMouseDown] = useBooleanState();\n\n const checked = controlledChecked ?? internalChecked;\n\n const onClickElement = useCallback(() => {\n if (disabled) return;\n\n const newIsChecked = !checked;\n\n if (controlledChecked === undefined) setInternalChecked.setState(newIsChecked);\n onChange?.(newIsChecked, value);\n }, [disabled, checked, onChange, controlledChecked, value]);\n\n return (\n <Div.column width=\"fit-content\" gap={theme.styles.gap} {...styledComponentStylesWithExcluded}>\n {label && <Label text={label} color={labelColor} required={required} isError={!!errorText} />}\n\n <Div.row\n alignItems=\"center\"\n gap={theme.styles.gap}\n onMouseDown={setIsMouseDown.setTrue}\n onMouseUp={setIsMouseDown.setFalse}\n onMouseOut={setIsMouseDown.setFalse}\n onTouchStart={setIsMouseDown.setTrue}\n onTouchEnd={setIsMouseDown.setFalse}\n onTouchCancel={setIsMouseDown.setFalse}\n >\n <SwitchElement\n theme={theme}\n checked={checked}\n disabled={disabled ?? false}\n isMouseDown={isMouseDown}\n onClick={onClickElement}\n {...styledComponentStyles}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n />\n </Div.row>\n\n {(errorText || infoText) && (\n <Text\n as=\"span\"\n display=\"block\"\n fontSize={14}\n color={errorText ? theme.colors.error : labelColor ?? theme.colors.textSecondary}\n >\n {errorText || infoText}\n </Text>\n )}\n </Div.column>\n );\n }) as ToggleInputComponentType,\n};\n","import { memo, useMemo } from \"react\";\n\nimport { ComponentMarginProps } from \"../types/components\";\nimport { LoaderName } from \"../types/loader\";\nimport { AnyOtherString, OmitProps } from \"../types/app\";\n\nimport { useForm } from \"../utils/hooks\";\n\nimport Div from \"./Div\";\nimport Button from \"./Button\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nexport type FormProps = {\n form?: OmitProps<ReturnType<typeof useForm>, \"focusField\">;\n submitButtonText?: string;\n submitButtonLoaderName?: LoaderName | AnyOtherString;\n submitButtonId?: string;\n /** @default false */\n submitButtonIsDisabled?: boolean;\n /** @default \"right\" */\n actionButtonsLocation?: \"left\" | \"center\" | \"right\";\n gap?: React.CSSProperties[\"gap\"];\n /** @default false */\n isSubmitting?: boolean;\n /** @default false */\n isDestructive?: boolean;\n onClickCancel?: () => void;\n onSubmit?: (value: React.FormEvent<HTMLFormElement>) => void;\n children?: React.ReactNode;\n} & ComponentMarginProps;\n\nfunction Form({\n form,\n submitButtonText,\n submitButtonLoaderName,\n submitButtonId,\n submitButtonIsDisabled,\n actionButtonsLocation = \"right\",\n gap,\n isSubmitting,\n isDestructive,\n onClickCancel,\n onSubmit,\n children,\n ...props\n}: FormProps) {\n const theme = useTheme();\n\n const submitButtonIsDisabledInternal = useMemo<boolean>(() => {\n if (!form || !form.requiredFields) return false;\n\n return Object.entries(form.values).some(\n ([key, value]) =>\n form.requiredFields?.includes(key) &&\n (value === undefined || value === null || value?.toString().trim() === \"\"),\n );\n }, [form]);\n\n const SubmitButtonTag = isDestructive ? Button.destructive : Button;\n const submitButtonIsDisabledFinal = submitButtonIsDisabled || submitButtonIsDisabledInternal;\n\n return (\n <Div width=\"100%\" {...props}>\n <form onSubmit={onSubmit ?? form?.onSubmit}>\n {gap !== undefined ? <Div.column gap={gap}>{children}</Div.column> : children}\n\n {submitButtonText && (\n <Div.row\n alignItems=\"center\"\n justifyContent={\n actionButtonsLocation === \"left\"\n ? \"flex-start\"\n : actionButtonsLocation === \"center\"\n ? \"center\"\n : \"flex-end\"\n }\n gap={theme.styles.gap}\n marginTop={theme.styles.space}\n >\n {onClickCancel && <Button.secondary text=\"Cancel\" onClick={onClickCancel} />}\n\n <SubmitButtonTag\n text={submitButtonText}\n isLoading={isSubmitting || form?.isSubmitting}\n loaderName={submitButtonLoaderName}\n disabled={submitButtonIsDisabledFinal}\n id={submitButtonId}\n isSubmit\n />\n </Div.row>\n )}\n </form>\n </Div>\n );\n}\n\nexport default memo(Form);\n","import { forwardRef, memo } from \"react\";\n\nimport { IconName } from \"../types/icon\";\nimport { AnyOtherString } from \"../types/app\";\nimport { ComponentMarginProps, ComponentPropWithRef } from \"../types/components\";\nimport { LoaderName } from \"../types/loader\";\n\nimport { useMediaQuery } from \"../utils/hooks\";\n\nimport Div from \"./Div\";\nimport Icon from \"./Icon\";\nimport Text from \"./Text\";\nimport Button from \"./Button\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nexport type FormRowProps = {\n oneItemOnly?: boolean;\n /**\n * @description Weather to break the two items into two separate lines on mobile or not\n * @default false\n */\n noBreakingPoint?: boolean;\n gap?: React.CSSProperties[\"gap\"];\n children?: React.ReactNode;\n} & ComponentMarginProps;\n\ntype FormRowComponentType = {\n (props: ComponentPropWithRef<HTMLDivElement, FormRowProps>): React.ReactElement;\n withTitle: (\n props: ComponentPropWithRef<\n HTMLDivElement,\n FormRowProps & {\n icon?: IconName | AnyOtherString;\n title?: string;\n description?: string;\n withActions?: boolean;\n saveButtonLoaderName?: LoaderName | AnyOtherString;\n resetButtonLoaderName?: LoaderName | AnyOtherString;\n onClickSave?: () => void;\n onClickReset?: () => void;\n }\n >,\n ) => React.ReactElement;\n};\n\nconst FormRowComponent: FormRowComponentType = forwardRef(function FormRow(\n { oneItemOnly, noBreakingPoint, gap, children, ...props }: FormRowProps,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const theme = useTheme();\n const mediaQuery = useMediaQuery();\n\n const breakingPoint = !noBreakingPoint ? mediaQuery.size900 : false;\n const readyGap =\n breakingPoint || (noBreakingPoint && mediaQuery.size900) ? theme.styles.gap : theme.styles.space * 2;\n\n return (\n <Div.row alignItems=\"center\" gap={gap ?? readyGap} invertFlexDirection={breakingPoint} {...props} ref={ref}>\n {children}\n\n {oneItemOnly && <Div width=\"100%\" />}\n </Div.row>\n );\n}) as any;\n\nFormRowComponent.withTitle = forwardRef(function WithTitle(\n {\n icon,\n title,\n description,\n withActions,\n saveButtonLoaderName,\n resetButtonLoaderName,\n onClickSave,\n onClickReset,\n children,\n ...props\n },\n ref,\n) {\n const theme = useTheme();\n const mediaQuery = useMediaQuery();\n\n return (\n <FormRowComponent {...props} ref={ref}>\n <Div.row width=\"100%\" alignItems=\"center\" gap={theme.styles.space}>\n {icon && <Icon name={icon} />}\n\n <Div.column flex={1} gap={theme.styles.gap / 2}>\n <Text as=\"h3\">{title}</Text>\n\n {description && <Text color={theme.colors.textSecondary}>{description}</Text>}\n </Div.column>\n </Div.row>\n\n <Div.row\n width={props.noBreakingPoint && mediaQuery.size900 ? undefined : \"100%\"}\n alignItems=\"center\"\n gap={theme.styles.gap}\n >\n {children}\n\n {withActions && (\n <Div.row alignItems=\"center\" gap={theme.styles.gap}>\n {onClickReset && (\n <Button.icon icon=\"XMark\" loaderName={resetButtonLoaderName} onClick={onClickReset} />\n )}\n <Button.icon icon=\"check\" loaderName={saveButtonLoaderName} onClick={onClickSave} />\n </Div.row>\n )}\n </Div.row>\n </FormRowComponent>\n );\n}) as FormRowComponentType[\"withTitle\"];\n\nconst FormRow = memo(FormRowComponent) as any as typeof FormRowComponent & {\n withTitle: typeof FormRowComponent.withTitle;\n};\n\nFormRow.withTitle = FormRowComponent.withTitle;\n\nexport default FormRow;\n","import { memo, useEffect } from \"react\";\n\nimport { ComponentMarginProps } from \"../types/components\";\n\nimport { useForm } from \"../utils/hooks\";\n\nimport Div from \"./Div\";\nimport Text from \"./Text\";\nimport ToggleInput from \"./ToggleInput\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nexport type ColorThemeSwitchProps = {\n /** @default false */\n withMoon?: boolean;\n className?: string;\n} & ComponentMarginProps;\n\ntype ColorThemeSwitchComponentType = {\n (props: ColorThemeSwitchProps): React.ReactElement;\n withText: (props: ColorThemeSwitchProps) => React.ReactElement;\n};\n\nconst ColorThemeSwitchComponent: ColorThemeSwitchComponentType = function ColorThemeSwitch({\n withMoon,\n className,\n ...props\n}: ColorThemeSwitchProps) {\n const form = useForm({\n defaultValues: {\n darkMode: localStorage.getItem(\"theme\") === \"dark\",\n },\n });\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n window.document.body.parentElement?.setAttribute(\"data-theme\", form.values.darkMode ? \"dark\" : \"light\");\n localStorage.setItem(\"theme\", form.values.darkMode ? \"dark\" : \"light\");\n }, 0.2 * 1000);\n\n return () => {\n clearTimeout(timeout);\n };\n }, [form.values.darkMode]);\n useEffect(() => {\n const html = document.querySelector(\"html\");\n\n if (!html) return;\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === \"attributes\") {\n form.setFieldValue(\"darkMode\", html.getAttribute(\"data-theme\") === \"dark\");\n }\n });\n });\n\n observer.observe(html, {\n attributes: true,\n });\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return (\n <ToggleInput.switch\n className={`react-better-html-color-theme-switch ${\n withMoon ? ` react-better-html-color-theme-switch-with-moon` : \"\"\n }${className ? ` ${className}` : \"\"}`}\n {...form.getSwitchProps(\"darkMode\")}\n {...props}\n />\n );\n} as any;\n\nColorThemeSwitchComponent.withText = function WithText({ withMoon, className, ...props }) {\n const theme = useTheme();\n\n return (\n <Div.row width=\"fit-content\" alignItems=\"center\" gap={theme.styles.gap} userSelect=\"none\" {...props}>\n <Text>Light</Text>\n <ColorThemeSwitchComponent withMoon={withMoon} className={className} />\n <Text>Dark</Text>\n </Div.row>\n );\n} as ColorThemeSwitchComponentType[\"withText\"];\n\nconst ColorThemeSwitch = memo(ColorThemeSwitchComponent) as any as typeof ColorThemeSwitchComponent & {\n withText: typeof ColorThemeSwitchComponent.withText;\n};\n\nColorThemeSwitch.withText = ColorThemeSwitchComponent.withText;\n\nexport default ColorThemeSwitch;\n","import { forwardRef, memo, useCallback, ReactNode, useMemo, useState } from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport { Theme } from \"../types/theme\";\nimport { ComponentMarginProps, ComponentPropWithRef } from \"../types/components\";\n\nimport Div from \"./Div\";\nimport ToggleInput, { ToggleInputProps } from \"./ToggleInput\";\nimport Image, { ImageProps } from \"./Image\";\nimport { useTheme } from \"./BetterHtmlProvider\";\nimport Text from \"./Text\";\n\nconst defaultImageWidth = 120;\n\nconst TableStyledComponent = styled.table.withConfig({\n shouldForwardProp: (prop) => ![\"isStriped\", \"withHover\", \"withStickyHeader\", \"theme\"].includes(prop),\n})<{\n isStriped?: boolean;\n withHover?: boolean;\n withStickyHeader?: boolean;\n theme: Theme;\n}>`\n width: 100%;\n border-collapse: collapse;\n border-spacing: 0;\n\n tr {\n background-color: ${(props) => props.theme.colors.backgroundContent};\n\n &.isHeader {\n background-color: ${(props) => props.theme.colors.backgroundSecondary};\n font-weight: 700;\n }\n\n &.isClickable {\n cursor: pointer;\n }\n\n ${(props) =>\n props.isStriped\n ? css`\n &:nth-child(even) {\n background-color: ${props.theme.colors.backgroundSecondary};\n }\n `\n : \"\"}\n\n ${(props) =>\n props.withHover\n ? css`\n transition: ${props.theme.styles.transition};\n\n &:not(.isHeader):hover {\n background-color: ${props.theme.colors.backgroundSecondary}20;\n }\n `\n : \"\"}\n\n th {\n font-size: 18px;\n text-align: left;\n padding: ${(props) => props.theme.styles.space}px;\n }\n\n td {\n border-top: 1px solid ${(props) => props.theme.colors.border}60;\n padding: ${(props) => props.theme.styles.gap}px ${(props) => props.theme.styles.space}px;\n\n &.noData {\n text-align: center;\n padding: ${(props) => props.theme.styles.space}px;\n }\n }\n }\n`;\n\nconst ThStyledComponent = styled.th.withConfig({\n shouldForwardProp: (prop) => ![\"width\", \"minWidth\", \"maxWidth\", \"textAlign\"].includes(prop),\n})<{\n width?: React.CSSProperties[\"width\"];\n minWidth?: React.CSSProperties[\"minWidth\"];\n maxWidth?: React.CSSProperties[\"maxWidth\"];\n textAlign?: React.CSSProperties[\"textAlign\"];\n}>`\n ${(props) => (props.width ? `width: ${props.width}px;` : \"\")}\n ${(props) => (props.minWidth ? `min-width: ${props.minWidth}px;` : \"\")}\n ${(props) => (props.maxWidth ? `max-width: ${props.maxWidth}px;` : \"\")}\n ${(props) => (props.textAlign ? `text-align: ${props.textAlign} !important;` : \"\")}\n`;\n\nconst TdStyledComponent = styled.td.withConfig({\n shouldForwardProp: (prop) => ![\"width\", \"textAlign\"].includes(prop),\n})<{\n textAlign?: React.CSSProperties[\"textAlign\"];\n}>`\n ${(props) => (props.textAlign ? `text-align: ${props.textAlign} !important;` : \"\")}\n`;\n\ntype TextColumn<DataItem> = {\n type: \"text\";\n keyName?: keyof DataItem;\n format?: (item: DataItem, index: number) => string;\n};\n\ntype ElementColumn<DataItem> = {\n type: \"element\";\n render?: (item: DataItem, index: number) => ReactNode;\n};\n\ntype ImageColumn<DataItem> = {\n type: \"image\";\n keyName?: keyof DataItem;\n} & ImageProps;\n\ntype CheckboxColumn = {\n type: \"checkbox\";\n} & ToggleInputProps<boolean>;\n\nexport type TableColumn<DataItem> = {\n label?: string;\n width?: string | number;\n minWidth?: string | number;\n maxWidth?: string | number;\n align?: \"left\" | \"center\" | \"right\";\n} & (TextColumn<DataItem> | ElementColumn<DataItem> | ImageColumn<DataItem> | CheckboxColumn);\n\nexport type TableProps<DataItem> = {\n columns: TableColumn<DataItem>[];\n data: DataItem[];\n /** @default false */\n isStriped?: boolean;\n /** @default false */\n withStickyHeader?: boolean;\n /** @default \"No data available\" */\n noDataItemsMessage?: string;\n onClickRow?: (item: DataItem, index: number) => void;\n onClickAllCheckboxes?: (checked: boolean) => void;\n} & ComponentMarginProps;\n\ntype TableComponentType = {\n <DataItem>(props: ComponentPropWithRef<HTMLDivElement, TableProps<DataItem>>): React.ReactElement;\n};\n\nconst TableComponent: TableComponentType = forwardRef(function Table<DataItem>(\n {\n columns,\n data,\n isStriped,\n withStickyHeader,\n noDataItemsMessage = \"No data available\",\n onClickRow,\n onClickAllCheckboxes,\n ...props\n }: TableProps<DataItem>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const theme = useTheme();\n\n const [checkedItems, setCheckedItems] = useState<boolean[]>([]);\n\n const renderCellContent = useCallback(\n (column: (typeof columns)[number], item: DataItem, index: number) => {\n switch (column.type) {\n case \"text\": {\n const value = column.keyName ? item[column.keyName] : undefined;\n\n return column.format ? column.format(item, index) : String(value ?? \"\");\n }\n\n case \"element\": {\n return column.render?.(item, index) ?? <></>;\n }\n\n case \"image\": {\n const { type, keyName, ...props } = column;\n\n const src = keyName ? (item[keyName] as string) : undefined;\n\n return (\n <Image src={src} width={defaultImageWidth} borderRadius={theme.styles.borderRadius / 2} {...props} />\n );\n }\n\n case \"checkbox\": {\n const { type, onChange, ...props } = column;\n\n const checkedValue = checkedItems[index];\n\n return (\n <ToggleInput.checkbox\n checked={checkedValue}\n onChange={(checked: boolean, value) => {\n setCheckedItems((oldValue) =>\n oldValue.map((isChecked, internalIndex) => (internalIndex === index ? checked : isChecked)),\n );\n\n onChange?.(checked, value);\n }}\n {...props}\n />\n );\n }\n\n default: {\n return <></>;\n }\n }\n },\n [theme, checkedItems],\n );\n const onClickRowElement = useCallback(\n (item: DataItem, index: number) => {\n onClickRow?.(item, index);\n },\n [onClickRow],\n );\n const onClickAllCheckboxesElement = useCallback(\n (checked: boolean) => {\n onClickAllCheckboxes?.(checked);\n setCheckedItems(data.map(() => checked));\n },\n [onClickAllCheckboxes, data],\n );\n\n const everythingIsChecked = useMemo<boolean>(() => {\n return checkedItems.every((checked) => checked) && checkedItems.length === data.length;\n }, [data, checkedItems]);\n\n return (\n <Div\n border={`1px solid ${theme.colors.border}`}\n borderRadius={theme.styles.borderRadius * 2}\n overflow=\"auto\"\n {...props}\n ref={ref}\n >\n <TableStyledComponent\n isStriped={isStriped}\n withHover={onClickRow !== undefined}\n withStickyHeader={withStickyHeader}\n theme={theme}\n >\n <thead>\n <tr className=\"isHeader\">\n {columns.map((column, index) => (\n <ThStyledComponent\n width={\n column.type === \"image\" ? defaultImageWidth : column.type === \"checkbox\" ? 26 : column.width\n }\n minWidth={column.minWidth}\n maxWidth={column.maxWidth}\n textAlign={column.align}\n key={column.type + column.label + index}\n >\n {column.label ??\n (column.type === \"checkbox\" && onClickAllCheckboxes ? (\n <ToggleInput.checkbox\n checked={everythingIsChecked}\n onChange={onClickAllCheckboxesElement}\n />\n ) : (\n \"\"\n ))}\n </ThStyledComponent>\n ))}\n </tr>\n </thead>\n\n <tbody>\n {data.length > 0 ? (\n data.map((item, rowIndex) => (\n <tr\n className={onClickRow ? \"isClickable\" : undefined}\n onClick={() => onClickRowElement(item, rowIndex)}\n key={JSON.stringify(item) + rowIndex}\n >\n {columns.map((column, colIndex) => (\n <TdStyledComponent textAlign={column.align} key={column.type + column.label + colIndex}>\n {renderCellContent(column, item, rowIndex)}\n </TdStyledComponent>\n ))}\n </tr>\n ))\n ) : (\n <tr>\n <td className=\"noData\" colSpan={columns.length}>\n <Text.unknown>{noDataItemsMessage}</Text.unknown>\n </td>\n </tr>\n )}\n </tbody>\n </TableStyledComponent>\n </Div>\n );\n}) as any;\n\nconst Table = memo(TableComponent) as any as typeof TableComponent;\n\nexport default Table;\n","import { countries } from \"../constants/countries\";\n\nimport { PartialRecord } from \"../types/app\";\nimport { BrowserName } from \"../types/other\";\n\nimport { useForm } from \"./hooks\";\n\nexport const generateRandomString = (\n stringLength: number,\n options?: {\n /** @default true */\n includeCapitalLetters?: boolean;\n /** @default true */\n includeLowerLetters?: boolean;\n /** @default true */\n includeNumbers?: boolean;\n /** @default 1 */\n dashSections?: number;\n },\n): string => {\n const capitals = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n const lowers = \"abcdefghijklmnopqrstuvwxyz\";\n const numbers = \"0123456789\";\n\n const includes: string[] = [];\n\n if (options?.includeCapitalLetters !== false) includes.push(capitals);\n if (options?.includeLowerLetters !== false) includes.push(lowers);\n if (options?.includeNumbers !== false) includes.push(numbers);\n\n const characters = includes.join(\"\");\n\n const dashSections = Math.max(1, options?.dashSections ?? 1);\n const dashSectionLength = Math.floor(stringLength / dashSections);\n\n if (stringLength < dashSections) return \"\";\n\n let result = \"\";\n let currentSectionLength = 0;\n\n while (result.length < stringLength) {\n if (currentSectionLength >= dashSectionLength) {\n result += \"-\";\n currentSectionLength = 0;\n }\n\n if (result.length < stringLength) {\n result += characters.charAt(Math.floor(Math.random() * characters.length));\n currentSectionLength += 1;\n }\n }\n\n return result;\n};\n\nexport const getBrowser = (): BrowserName | undefined => {\n const userAgent = navigator.userAgent.toLowerCase();\n\n if (userAgent.includes(\"firefox\")) return \"firefox\";\n if (userAgent.includes(\"chrome\") && !userAgent.includes(\"edg\")) return \"chrome\";\n if (userAgent.includes(\"safari\") && !userAgent.includes(\"chrome\")) return \"safari\";\n if (userAgent.includes(\"edg\")) return \"edge\";\n if (userAgent.includes(\"opr\") || userAgent.includes(\"opera\")) return \"opera\";\n\n return;\n};\n\nexport const formatPhoneNumber = (phoneNumber: string): string => {\n const cleanPhoneNumber = phoneNumber.replace(/\\D/g, \"\");\n\n const country = countries.find(\n (country) => country.phoneNumberExtension === cleanPhoneNumber.slice(0, country.phoneNumberExtension.length),\n );\n\n if (!country) return phoneNumber;\n\n let phonNumberRest = cleanPhoneNumber.slice(country.phoneNumberExtension.length);\n\n if (country.phoneNumberFormat) {\n let formattedNumber = \"\";\n let index = 0;\n\n for (const char of country.phoneNumberFormat) {\n if (char === \"X\" && index < phonNumberRest.length) {\n formattedNumber += phonNumberRest[index];\n index++;\n } else {\n formattedNumber += char;\n }\n }\n\n phonNumberRest = formattedNumber.replace(/X/g, \"\").trim();\n }\n\n return `+${country.phoneNumberExtension} ${phonNumberRest}`;\n};\n\nexport const getFormErrorObject = <FormFields extends ReturnType<typeof useForm>[\"values\"]>(\n formValues: FormFields,\n): PartialRecord<keyof FormFields, string> => {\n return {};\n};\n","import { AnyOtherString } from \"../types/app\";\nimport { LoaderName } from \"../types/loader\";\n\nimport { BetterHtmlInternalConfig, externalBetterHtmlContextValue } from \"../components/BetterHtmlProvider\";\n\nconst checkBetterHtmlContextValue = (\n value: BetterHtmlInternalConfig | undefined,\n functionsName: string,\n): value is BetterHtmlInternalConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterHtmlProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\n\nexport const loaderControls = {\n startLoading: (loaderName: LoaderName | AnyOtherString) => {\n if (!checkBetterHtmlContextValue(externalBetterHtmlContextValue, \"loaderControls.startLoading\")) return;\n\n externalBetterHtmlContextValue.setLoaders((oldValue) => ({\n ...oldValue,\n [loaderName.toString()]: true,\n }));\n },\n stopLoading: (loaderName: LoaderName | AnyOtherString) => {\n if (!checkBetterHtmlContextValue(externalBetterHtmlContextValue, \"loaderControls.stopLoading\")) return;\n\n externalBetterHtmlContextValue.setLoaders((oldValue) => ({\n ...oldValue,\n [loaderName.toString()]: false,\n }));\n },\n};\n","import { Link as RouterLink, NavLink as RouterNavLink } from \"react-router-dom\";\n\nimport { BetterHtmlPlugin } from \"../types/plugin\";\n\nexport const reactRouterDomPlugin: BetterHtmlPlugin = {\n name: \"react-router-dom\",\n components: {\n Link: RouterLink,\n NavLink: RouterNavLink,\n },\n initialize: () => {\n console.log(\"react-router-dom plugin initialized\");\n },\n};\n"],"mappings":"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,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,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AAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV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","names":["import_react","import_styled_components","import_react","theme","theme","values","reactRouterDomPlugin","import_jsx_runtime","styled","theme","Div","import_react","import_styled_components","import_jsx_runtime","styled","theme","Text","import_react","import_styled_components","import_jsx_runtime","styled","theme","Box","Loader","import_react","import_styled_components","import_jsx_runtime","import_react","styled","Icon","theme","icons","import_react","import_styled_components","import_jsx_runtime","styled","Image","theme","assets","import_react","import_styled_components","import_jsx_runtime","styled","theme","betterHtmlContext","Icon","Button","import_react","import_jsx_runtime","theme","Divider","import_react","import_styled_components","import_jsx_runtime","styled","reactRouterDomPlugin","theme","Modal","Destructive","import_react","import_jsx_runtime","theme","import_react","import_jsx_runtime","theme","import_react","import_jsx_runtime","theme","Chip","import_react","import_styled_components","import_react","import_jsx_runtime","theme","import_react","import_jsx_runtime","theme","value","isFocused","Dropdown","import_jsx_runtime","styled","theme","value","country","InputField","import_react","import_styled_components","import_jsx_runtime","InputElement","styled","theme","import_react","import_jsx_runtime","theme","import_react","import_jsx_runtime","theme","FormRow","import_react","import_jsx_runtime","theme","ColorThemeSwitch","import_react","import_styled_components","import_jsx_runtime","styled","theme","props","Table","country","import_react_router_dom","RouterLink","RouterNavLink"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/Div.tsx","../src/constants.ts","../src/utils/hooks.ts","../src/constants/css.ts","../src/components/BetterHtmlProvider.tsx","../src/constants/theme.ts","../src/constants/icons.ts","../src/constants/assets.ts","../src/constants/app.ts","../src/components/Text.tsx","../src/components/Loader.tsx","../src/components/Icon.tsx","../src/components/Image.tsx","../src/components/Button.tsx","../src/components/Divider.tsx","../src/components/Modal.tsx","../src/components/PageHolder.tsx","../src/components/PageHeader.tsx","../src/components/Chip.tsx","../src/components/InputField.tsx","../src/constants/countries.ts","../src/components/Label.tsx","../src/components/Dropdown.tsx","../src/components/ToggleInput.tsx","../src/components/Form.tsx","../src/components/FormRow.tsx","../src/components/ColorThemeSwitch.tsx","../src/components/Table.tsx","../src/utils/functions.ts","../src/utils/variableFunctions.ts","../src/plugins/react-router-dom.ts"],"sourcesContent":["import Div, { type DivProps } from \"./components/Div\";\nimport Text, { type TextProps, type TextAs } from \"./components/Text\";\nimport Loader, { type LoaderProps } from \"./components/Loader\";\nimport Icon, { type IconProps } from \"./components/Icon\";\nimport Image, { type ImageProps } from \"./components/Image\";\nimport Button, { type ButtonProps } from \"./components/Button\";\nimport Divider, { type HorizontalDividerProps, type VerticalDividerProps } from \"./components/Divider\";\nimport Modal, { type ModalRef, type ModalProps } from \"./components/Modal\";\nimport PageHolder, { type PageHolderProps } from \"./components/PageHolder\";\nimport PageHeader, { type PageHeaderProps } from \"./components/PageHeader\";\nimport Chip, { type ChipProps } from \"./components/Chip\";\nimport InputField, { type InputFieldProps, type TextareaFieldProps } from \"./components/InputField\";\nimport Dropdown, { type DropdownOption, type DropdownProps } from \"./components/Dropdown\";\nimport ToggleInput, { type ToggleInputRef, type ToggleInputProps } from \"./components/ToggleInput\";\nimport Form, { type FormProps } from \"./components/Form\";\nimport Label, { type LabelProps } from \"./components/Label\";\nimport FormRow, { type FormRowProps } from \"./components/FormRow\";\nimport ColorThemeSwitch, { type ColorThemeSwitchProps } from \"./components/ColorThemeSwitch\";\nimport Table, { type TableColumn } from \"./components/Table\";\n\nimport BetterHtmlProvider, {\n useBetterHtmlContext,\n useTheme,\n useLoader,\n useLoaderControls,\n type BetterHtmlProviderValue,\n} from \"./components/BetterHtmlProvider\";\nimport {\n usePageResize,\n usePageScroll,\n useMediaQuery,\n useBooleanState,\n useDebounceState,\n useForm,\n useUrlQuery,\n} from \"./utils/hooks\";\nimport { generateRandomString, getBrowser, formatPhoneNumber, getFormErrorObject } from \"./utils/functions\";\nimport { loaderControls } from \"./utils/variableFunctions\";\n\nimport {\n type OmitProps,\n type ExcludeOptions,\n type PickValue,\n type PartialRecord,\n type DeepPartialRecord,\n type PickAllRequired,\n} from \"./types/app\";\nimport { type AppConfig, type BetterHtmlConfig } from \"./types/config\";\nimport { type AssetName, type AssetsConfig } from \"./types/asset\";\nimport { type IconName, type IconsConfig } from \"./types/icon\";\nimport { type LoaderName, type LoaderConfig } from \"./types/loader\";\nimport { type PluginName, type BetterHtmlPlugin } from \"./types/plugin\";\nimport {\n type Color,\n type ColorName,\n type ColorTheme,\n type Colors,\n type Styles,\n type Theme,\n type ThemeConfig,\n} from \"./types/theme\";\nimport { type BrowserName } from \"./types/other\";\n\nimport { isMobileDevice } from \"./constants\";\n\nexport * from \"./plugins\";\n\nexport {\n BetterHtmlProvider,\n BetterHtmlProviderValue,\n // Components\n Div,\n DivProps,\n Text,\n TextProps,\n TextAs,\n Loader,\n LoaderProps,\n Icon,\n IconProps,\n Image,\n ImageProps,\n Button,\n ButtonProps,\n Divider,\n HorizontalDividerProps,\n VerticalDividerProps,\n Modal,\n ModalProps,\n ModalRef,\n PageHolder,\n PageHolderProps,\n PageHeader,\n PageHeaderProps,\n Chip,\n ChipProps,\n InputField,\n InputFieldProps,\n TextareaFieldProps,\n Dropdown,\n DropdownOption,\n DropdownProps,\n ToggleInput,\n ToggleInputRef,\n ToggleInputProps,\n Form,\n FormProps,\n Label,\n LabelProps,\n FormRow,\n FormRowProps,\n ColorThemeSwitch,\n ColorThemeSwitchProps,\n Table,\n TableColumn,\n // Hooks\n useBetterHtmlContext,\n useTheme,\n useLoader,\n useLoaderControls,\n usePageResize,\n usePageScroll,\n useMediaQuery,\n useBooleanState,\n useDebounceState,\n useForm,\n useUrlQuery,\n // Functions\n generateRandomString,\n getBrowser,\n formatPhoneNumber,\n getFormErrorObject,\n // Variable Functions\n loaderControls,\n // Types\n OmitProps,\n ExcludeOptions,\n PickValue,\n PartialRecord,\n DeepPartialRecord,\n PickAllRequired,\n AppConfig,\n BetterHtmlConfig,\n AssetName,\n AssetsConfig,\n IconName,\n IconsConfig,\n LoaderName,\n PluginName,\n BetterHtmlPlugin,\n LoaderConfig,\n Color,\n ColorName,\n ColorTheme,\n Colors,\n Styles,\n Theme,\n ThemeConfig,\n BrowserName,\n // Constants\n isMobileDevice,\n};\n","import { forwardRef, memo, useCallback } from \"react\";\nimport styled, { WebTarget } from \"styled-components\";\n\nimport { isMobileDevice } from \"../constants\";\n\nimport { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from \"../types/components\";\nimport { OmitProps } from \"../types/app\";\n\nimport { useStyledComponentStyles, useComponentPropsWithPrefix, useComponentPropsWithoutStyle } from \"../utils/hooks\";\n\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nconst DivStyledComponent = styled.div.withConfig({\n shouldForwardProp: (prop) => ![\"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{ normalStyle: ComponentStyle; hoverStyle: ComponentStyle }>`\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nexport type DivProps<Value> = {\n value?: Value;\n /** @default \"div\" */\n as?: WebTarget;\n /** @default false */\n isTabAccessed?: boolean;\n onClickWithValue?: (value: Value) => void;\n} & OmitProps<React.ComponentProps<\"div\">, \"style\" | \"defaultValue\"> &\n ComponentStyle &\n ComponentHoverStyle;\n\ntype DivComponentType = {\n <Value>(props: ComponentPropWithRef<HTMLDivElement, DivProps<Value>>): React.ReactElement;\n row: <Value>(\n props: ComponentPropWithRef<\n HTMLDivElement,\n OmitProps<DivProps<Value>, \"display\" | \"flexDirection\"> & {\n invertFlexDirection?: boolean;\n }\n >,\n ) => React.ReactElement;\n column: <Value>(\n props: ComponentPropWithRef<\n HTMLDivElement,\n OmitProps<DivProps<Value>, \"display\" | \"flexDirection\"> & {\n invertFlexDirection?: boolean;\n }\n >,\n ) => React.ReactElement;\n grid: <Value>(\n props: ComponentPropWithRef<HTMLDivElement, OmitProps<DivProps<Value>, \"display\">>,\n ) => React.ReactElement;\n box: <Value>(props: ComponentPropWithRef<HTMLDivElement, DivProps<Value>>) => React.ReactElement;\n};\n\nconst DivComponent: DivComponentType = forwardRef(function Div<Value>(\n { value, as, isTabAccessed, onClickWithValue, role, onClick, onKeyDown, children, ...props }: DivProps<Value>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const theme = useTheme();\n\n const styledComponentStyles = useStyledComponentStyles(props, theme);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n const onClickElement = useCallback(\n (event: React.MouseEvent<HTMLDivElement, globalThis.MouseEvent>) => {\n onClick?.(event);\n onClickWithValue?.(value as any);\n },\n [onClick, onClickWithValue, value],\n );\n const onKeyDownElement = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n\n if (!isTabAccessed) return;\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n event.currentTarget.click();\n }\n },\n [onKeyDown, isTabAccessed],\n );\n\n return (\n <DivStyledComponent\n as={as}\n tabIndex={isTabAccessed && !isMobileDevice ? 0 : undefined}\n role={role ?? (onClick ? \"button\" : undefined)}\n onClick={onClickElement}\n onKeyDown={onKeyDownElement}\n {...styledComponentStyles}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n ref={ref}\n >\n {children}\n </DivStyledComponent>\n );\n}) as any;\n\nDivComponent.row = forwardRef(function Row({ invertFlexDirection, ...props }, ref) {\n return <DivComponent display=\"flex\" flexDirection={invertFlexDirection ? \"column\" : \"row\"} ref={ref} {...props} />;\n}) as DivComponentType[\"row\"];\n\nDivComponent.column = forwardRef(function Column({ invertFlexDirection, ...props }, ref) {\n return <DivComponent display=\"flex\" flexDirection={invertFlexDirection ? \"row\" : \"column\"} ref={ref} {...props} />;\n}) as DivComponentType[\"column\"];\n\nDivComponent.grid = forwardRef(function Grid(props, ref) {\n return <DivComponent display=\"grid\" ref={ref} {...props} />;\n}) as DivComponentType[\"grid\"];\n\nDivComponent.box = forwardRef(function Box(props, ref) {\n const theme = useTheme();\n\n return (\n <DivComponent\n backgroundColor={theme.colors.backgroundContent}\n border={`1px solid ${theme.colors.border}`}\n borderRadius={theme.styles.borderRadius}\n paddingBlock={theme.styles.gap}\n paddingInline={theme.styles.space}\n ref={ref}\n {...props}\n />\n );\n}) as DivComponentType[\"box\"];\n\nconst Div = memo(DivComponent) as any as typeof DivComponent & {\n row: typeof DivComponent.row;\n column: typeof DivComponent.column;\n grid: typeof DivComponent.grid;\n box: typeof DivComponent.box;\n};\n\nDiv.row = DivComponent.row;\nDiv.column = DivComponent.column;\nDiv.grid = DivComponent.grid;\nDiv.box = DivComponent.box;\n\nexport default Div;\n","export const isMobileDevice: boolean = /Mobi|Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent,\n);\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { createSearchParams, useInRouterContext, useNavigate, useSearchParams } from \"react-router-dom\";\n\nimport { cssProps } from \"../constants/css\";\n\nimport { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from \"../types/components\";\nimport { Theme } from \"../types/theme\";\nimport { OmitProps, PartialRecord } from \"../types/app\";\n\nimport { InputFieldProps, TextareaFieldProps } from \"../components/InputField\";\nimport { DropdownProps } from \"../components/Dropdown\";\nimport { ToggleInputProps, ToggleInputRef } from \"../components/ToggleInput\";\nimport { usePlugin, useTheme } from \"../components/BetterHtmlProvider\";\n\nconst cssPropsToExclude: (keyof React.CSSProperties)[] = [\n \"position\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\",\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\",\n \"margin\",\n \"marginTop\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginRight\",\n \"marginBlock\",\n \"marginInline\",\n \"marginBlockStart\",\n \"marginBlockEnd\",\n \"marginInlineStart\",\n \"marginInlineEnd\",\n \"marginTrim\",\n \"zIndex\",\n];\n\nexport function useStyledComponentStyles(\n props: ComponentStyle & ComponentHoverStyle,\n theme?: Theme,\n /** @default false */\n excludeProps?: boolean,\n): {\n normalStyle: ComponentStyle;\n hoverStyle: ComponentStyle;\n} {\n return useMemo(() => {\n const normalStyle: ComponentStyle = {};\n const hoverStyle: ComponentStyle = {};\n\n let haveHover = false;\n\n for (const key in props) {\n if (excludeProps && cssPropsToExclude.includes(key as keyof React.CSSProperties)) continue;\n\n if (key.endsWith(\"Hover\")) {\n haveHover = true;\n\n const normalKey = key.slice(0, -5) as keyof ComponentStyle;\n (hoverStyle[normalKey] as any) = props[key as keyof ComponentStyle];\n } else {\n if (!cssProps[key.toLowerCase()]) continue;\n\n (normalStyle[key as keyof ComponentStyle] as any) = props[key as keyof ComponentStyle];\n }\n }\n\n if (haveHover) normalStyle.transition = theme?.styles.transition ?? \"\";\n\n return {\n normalStyle,\n hoverStyle,\n };\n }, [props, theme]);\n}\n\nexport function useComponentPropsWithPrefix<Props extends Record<string, any>, Prefix extends string>(\n props: Props,\n prefix: Prefix,\n) {\n return useMemo<Record<`${Prefix}-${string}`, any>>(() => {\n const returnValue: any = {};\n\n for (const key in props) {\n if (key.startsWith(`${prefix}-`)) {\n returnValue[key] = props[key];\n }\n }\n\n return returnValue;\n }, [props, prefix]);\n}\n\nexport function useComponentPropsWithExcludedStyle<Props extends Record<string, any>>(props: Props) {\n return useMemo(\n () =>\n Object.keys(props).reduce((previousValue, currentValue) => {\n const key = currentValue as keyof React.CSSProperties;\n\n if (!cssPropsToExclude.includes(key)) return previousValue;\n\n (previousValue[key] as any) = props[key];\n\n return previousValue;\n }, {} as Partial<Props>),\n [props],\n );\n}\n\nexport function useComponentPropsWithoutStyle<Props extends Record<string, any>>(props: Props) {\n return useMemo(\n () =>\n Object.keys(props).reduce((previousValue, currentValue) => {\n if (!cssProps[currentValue.toLowerCase()]) previousValue[currentValue as keyof Props] = props[currentValue];\n\n return previousValue;\n }, {} as Partial<Props>),\n [props],\n );\n}\n\nexport function useComponentInputFieldDateProps(\n props: InputFieldProps,\n holderRef: React.RefObject<HTMLDivElement | null>,\n): {\n internalValue: string;\n setInternalValue: React.Dispatch<React.SetStateAction<string>>;\n inputFieldProps: InputFieldProps;\n insideInputFieldComponentProps: InputFieldProps;\n isOpen: boolean;\n} {\n const theme = useTheme();\n\n const [isOpen, setIsOpen] = useBooleanState();\n const [isOpenLate, setIsOpenLate] = useBooleanState();\n const [isFocused, setIsFocused] = useBooleanState();\n\n const [internalValue, setInternalValue] = useState<string>(props.value?.toString() ?? \"\");\n\n const inputFieldProps = useMemo<InputFieldProps>(\n () => ({\n value: internalValue,\n className: `${isOpen ? \"react-better-html-inputField-dateTime-opened\" : \"\"}${\n isOpenLate ? \" react-better-html-inputField-dateTime-opened-late\" : \"\"\n }${props.className ? ` ${props.className}` : \"\"}`,\n onClick: (event: React.MouseEvent<HTMLInputElement>) => {\n if (props.disabled) return;\n\n setIsOpen.setTrue();\n props.onClick?.(event);\n },\n onFocus: (event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused.setTrue();\n props.onFocus?.(event);\n },\n onBlur: (event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused.setFalse();\n props.onBlur?.(event);\n },\n onChangeValue: (value) => {\n setInternalValue(value);\n props.onChangeValue?.(value);\n },\n }),\n [props, internalValue, isOpen, isOpenLate],\n );\n const insideInputFieldComponentProps = useMemo<InputFieldProps>(\n () => ({\n border: `1px solid ${isFocused ? theme.colors.primary : theme.colors.border}`,\n borderTop: \"none\",\n opacity: !isOpen ? 0 : undefined,\n pointerEvents: !isOpen ? \"none\" : undefined,\n transform: `translateY(${!isOpen ? -10 : 0}px)`,\n zIndex: 1000,\n transition: theme.styles.transition,\n }),\n [isOpen, isFocused],\n );\n\n useEffect(() => {\n if (props.value === undefined || props.value === null) return;\n\n setInternalValue(props.value.toString());\n }, [props.value]);\n useEffect(() => {\n if (isOpen) {\n setIsOpenLate.setTrue();\n } else {\n const timeout = setTimeout(setIsOpenLate.setFalse, 0.2 * 1000);\n\n return () => {\n clearTimeout(timeout);\n };\n }\n }, [isOpen]);\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (holderRef.current && !holderRef.current.contains(event.target as Node)) {\n setIsOpen.setFalse();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpen]);\n\n return {\n internalValue,\n setInternalValue,\n inputFieldProps,\n insideInputFieldComponentProps,\n isOpen,\n };\n}\n\nexport function usePageResize() {\n const [width, setWidth] = useState<number>(window.innerWidth);\n const [height, setHeight] = useState<number>(window.innerHeight);\n\n useEffect(() => {\n const onResize = () => {\n setWidth(window.innerWidth);\n setHeight(window.innerHeight);\n };\n\n window.addEventListener(\"resize\", onResize);\n\n return () => {\n window.removeEventListener(\"resize\", onResize);\n };\n }, []);\n\n return {\n width,\n height,\n };\n}\n\nexport function usePageScroll() {\n const [scrollX, setScrollX] = useState<number>(window.scrollX ?? 0);\n const [scrollY, setScrollY] = useState<number>(window.scrollY ?? 0);\n\n useEffect(() => {\n const onScroll = () => {\n setScrollX(window.scrollX);\n setScrollY(window.scrollY);\n };\n\n window.addEventListener(\"scroll\", onScroll);\n\n return () => {\n window.removeEventListener(\"scroll\", onScroll);\n };\n }, []);\n\n return {\n scrollX,\n scrollY,\n };\n}\n\nexport function useMediaQuery() {\n const { width } = usePageResize();\n\n return {\n size320: width <= 320,\n size400: width <= 400,\n size500: width <= 500,\n size600: width <= 600,\n size700: width <= 700,\n size800: width <= 800,\n size900: width <= 900,\n size1000: width <= 1000,\n size1100: width <= 1100,\n size1200: width <= 1200,\n size1300: width <= 1300,\n size1400: width <= 1400,\n size1500: width <= 1500,\n size1600: width <= 1600,\n };\n}\n\nexport function useBooleanState(initialValue = false): [\n state: boolean,\n actions: {\n setState: React.Dispatch<React.SetStateAction<boolean>>;\n setTrue: () => void;\n setFalse: () => void;\n toggle: () => void;\n },\n] {\n const [state, setState] = useState<boolean>(initialValue);\n\n const setTrue = useCallback(() => setState(true), []);\n const setFalse = useCallback(() => setState(false), []);\n const toggle = useCallback(() => setState((oldValue) => !oldValue), []);\n\n return [state, { setState, setTrue, setFalse, toggle }];\n}\n\nexport function useDebounceState<Value>(\n initialValue: Value,\n delay = 0.5,\n): [value: Value, debouncedValue: Value, setValue: React.Dispatch<React.SetStateAction<Value>>, isLoading: boolean] {\n const [value, setValue] = useState<Value>(initialValue);\n const [debouncedValue, setDebouncedValue] = useState<Value>(initialValue);\n const [isLoading, setIsLoading] = useBooleanState();\n\n useEffect(() => {\n setIsLoading.setTrue();\n\n const timer = setTimeout(() => {\n setDebouncedValue(value);\n setIsLoading.setFalse();\n }, delay * 1000);\n\n return () => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return [value, debouncedValue, setValue, isLoading];\n}\n\nexport function useForm<FormFields extends Record<string | number, string | number | boolean | undefined>>(options: {\n defaultValues: FormFields;\n requiredFields?: (keyof FormFields)[];\n onSubmit?: (values: FormFields) => void | Promise<void>;\n validate?: (values: FormFields) => PartialRecord<keyof FormFields, string>;\n}) {\n const { defaultValues, requiredFields, onSubmit, validate } = options;\n\n const inputFieldRefs = useRef<Record<keyof FormFields, HTMLInputElement | undefined>>(\n {} as Record<keyof FormFields, HTMLInputElement | undefined>,\n );\n const [inputTypes, setInputTypes] = useState<Record<keyof FormFields, React.HTMLInputTypeAttribute>>(\n {} as Record<keyof FormFields, React.HTMLInputTypeAttribute>,\n );\n\n const [values, setValues] = useState<FormFields>(defaultValues);\n const [errors, setErrors] = useState<PartialRecord<keyof FormFields, string>>({});\n const [isSubmitting, setIsSubmitting] = useBooleanState();\n\n const setFieldValue = useCallback(\n <FieldName extends keyof FormFields>(field: FieldName, value: FormFields[FieldName] | undefined) => {\n setValues((oldValue) => ({\n ...oldValue,\n [field]: value,\n }));\n\n setErrors((oldValue) => ({\n ...oldValue,\n [field]: undefined,\n }));\n },\n [],\n );\n const setFieldsValue = useCallback((values: Partial<FormFields>) => {\n setValues((oldValue) => ({\n ...oldValue,\n ...values,\n }));\n\n setErrors((oldValue) => {\n const newErrors: typeof oldValue = {};\n\n for (const key in values) newErrors[key] = undefined;\n\n return newErrors;\n });\n }, []);\n const getInputFieldProps = useCallback(\n <FieldName extends keyof FormFields>(\n field: FieldName,\n ): ComponentPropWithRef<HTMLInputElement, InputFieldProps> => {\n const type = inputTypes[field] ?? \"text\";\n\n return {\n required: requiredFields?.includes(field),\n value: values[field]?.toString() ?? \"\",\n onChangeValue: (newValue) => {\n const readyValue = type === \"number\" ? (newValue ? Number(newValue) : undefined) : newValue;\n\n setFieldValue(field, readyValue as FormFields[FieldName]);\n },\n ref: (element) => {\n if (!element) return;\n\n inputFieldRefs.current[field] = element;\n\n if (inputTypes[field] === undefined)\n setInputTypes((oldValue) => ({\n ...oldValue,\n [field]: element.getAttribute(\"type\"),\n }));\n },\n errorText: errors[field],\n };\n },\n [values, setFieldValue, inputTypes, errors],\n );\n const getTextAreaProps = useCallback(\n <FieldName extends keyof FormFields>(\n field: FieldName,\n ): ComponentPropWithRef<HTMLTextAreaElement, TextareaFieldProps> => {\n return {\n required: requiredFields?.includes(field),\n value: values[field]?.toString() ?? \"\",\n onChangeValue: (newValue) => {\n setFieldValue(field, newValue as FormFields[FieldName]);\n },\n errorText: errors[field],\n };\n },\n [values, setFieldValue, inputTypes, errors],\n );\n const getDropdownFieldProps = useCallback(\n <FieldName extends keyof FormFields>(\n field: FieldName,\n ): OmitProps<ComponentPropWithRef<HTMLDivElement, DropdownProps<FormFields[FieldName], unknown>>, \"options\"> => {\n return {\n required: requiredFields?.includes(field),\n value: values[field],\n onChange: (value) => {\n setFieldValue(field, value);\n },\n errorText: errors[field],\n };\n },\n [values, errors, setFieldValue],\n );\n const getCheckboxProps = useCallback(\n <FieldName extends keyof FormFields>(\n field: FieldName,\n ): ComponentPropWithRef<ToggleInputRef, ToggleInputProps<FormFields[FieldName]>> => {\n return {\n required: requiredFields?.includes(field),\n checked: values[field] as boolean,\n onChange: (checked) => {\n setFieldValue(field, checked as FormFields[FieldName]);\n },\n errorText: errors[field],\n };\n },\n [values, errors, setFieldValue],\n );\n const getRadioButtonProps = useCallback(\n <FieldName extends keyof FormFields>(\n field: FieldName,\n value: FormFields[FieldName],\n ): ComponentPropWithRef<ToggleInputRef, ToggleInputProps<FormFields[FieldName]>> => {\n return {\n required: requiredFields?.includes(field),\n checked: values[field] === value,\n name: field.toString(),\n value,\n onChange: (checked, newValue) => {\n setFieldValue(field, checked ? newValue : undefined);\n },\n errorText: errors[field],\n };\n },\n [values, errors, setFieldValue],\n );\n const getSwitchProps = useCallback(\n <FieldName extends keyof FormFields>(\n field: FieldName,\n ): ComponentPropWithRef<ToggleInputRef, ToggleInputProps<FormFields[FieldName]>> => {\n return {\n required: requiredFields?.includes(field),\n checked: values[field] as boolean,\n onChange: (checked) => {\n setFieldValue(field, checked as FormFields[FieldName]);\n },\n errorText: errors[field],\n };\n },\n [values, errors, setFieldValue],\n );\n const focusField = useCallback((field: keyof FormFields) => {\n inputFieldRefs.current[field]?.focus();\n }, []);\n const onSubmitFunction = useCallback(\n async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n setIsSubmitting.setTrue();\n\n try {\n const validationErrors = validate?.(values) || {};\n setErrors(validationErrors);\n\n if (Object.keys(validationErrors).length === 0) {\n await onSubmit?.(values);\n } else {\n const firstErrorField = Object.keys(validationErrors)[0] as keyof FormFields;\n focusField(firstErrorField);\n }\n } finally {\n setIsSubmitting.setFalse();\n }\n },\n [values, validate, onSubmit, focusField],\n );\n const reset = useCallback(() => {\n setValues(defaultValues);\n setErrors({});\n }, [defaultValues]);\n\n const isDirty = useMemo<boolean>(\n () => Object.keys(defaultValues).some((key) => defaultValues[key] !== values[key]),\n [defaultValues, values],\n );\n const isValid = useMemo<boolean>(() => {\n const validationErrors = validate?.(values) || {};\n\n return Object.keys(validationErrors).length === 0;\n }, [validate, values]);\n const canSubmit = useMemo<boolean>(() => {\n const requiredFieldsHaveValues =\n requiredFields?.every((field) => values[field] !== undefined && values[field] !== \"\") ?? true;\n\n return isValid && requiredFieldsHaveValues;\n }, [isValid, requiredFields]);\n\n return {\n values,\n errors,\n isSubmitting,\n setFieldValue,\n setFieldsValue,\n getInputFieldProps,\n getTextAreaProps,\n getDropdownFieldProps,\n getCheckboxProps,\n getRadioButtonProps,\n getSwitchProps,\n focusField,\n onSubmit: onSubmitFunction,\n reset,\n requiredFields,\n isDirty,\n isValid,\n canSubmit,\n };\n}\n\nexport function useUrlQuery() {\n const reactRouterDomPlugin = usePlugin(\"react-router-dom\");\n\n if (!reactRouterDomPlugin) {\n throw new Error(\n \"`useUrlQuery` hook requires the `react-router-dom` plugin to be added to the `plugins` prop in `<BetterHtmlProvider>`.\",\n );\n }\n\n const isInRouterContext = useInRouterContext();\n\n if (!isInRouterContext) {\n throw new Error(\n \"`useUrlQuery` hook must be used inside a React Router context. Make sure your component is wrapped in a `<BrowserRouter>`, or another Router component.\",\n );\n }\n\n const navigate = useNavigate();\n const [searchParams] = useSearchParams();\n\n const setQuery = useCallback(\n (query: Record<string, string | number>, keepHistory = true) => {\n const currentSearchParams: Record<string, string> = {};\n searchParams.forEach((value, key) => {\n (currentSearchParams as any)[key] = value;\n });\n\n navigate(\n {\n search: createSearchParams({\n ...currentSearchParams,\n ...Object.fromEntries(Object.entries(query).map(([key, value]) => [key, value.toString()])),\n }).toString(),\n },\n {\n replace: !keepHistory,\n },\n );\n },\n [navigate, searchParams],\n );\n const getQuery = useCallback((name: string) => searchParams.get(name), [searchParams]);\n const removeQuery = useCallback(\n (name: string, keepHistory = true) => {\n searchParams.delete(name);\n\n navigate(\n {\n search: searchParams.toString(),\n },\n {\n replace: !keepHistory,\n },\n );\n },\n [navigate, searchParams],\n );\n\n return {\n setQuery,\n getQuery,\n removeQuery,\n };\n}\n","export const cssProps: Record<string, boolean> = {\n accentcolor: true,\n accentcolorhover: true,\n additivesymbols: true,\n additivesymbolshover: true,\n aligncontent: true,\n aligncontenthover: true,\n alignitems: true,\n alignitemshover: true,\n alignself: true,\n alignselfhover: true,\n alignmentbaseline: true,\n alignmentbaselinehover: true,\n all: true,\n allhover: true,\n anchorname: true,\n anchornamehover: true,\n anchorscope: true,\n anchorscopehover: true,\n animation: true,\n animationhover: true,\n animationcomposition: true,\n animationcompositionhover: true,\n animationdelay: true,\n animationdelayhover: true,\n animationdirection: true,\n animationdirectionhover: true,\n animationduration: true,\n animationdurationhover: true,\n animationfillmode: true,\n animationfillmodehover: true,\n animationiterationcount: true,\n animationiterationcounthover: true,\n animationname: true,\n animationnamehover: true,\n animationplaystate: true,\n animationplaystatehover: true,\n animationrange: true,\n animationrangehover: true,\n animationrangeend: true,\n animationrangeendhover: true,\n animationrangestart: true,\n animationrangestarthover: true,\n animationtimeline: true,\n animationtimelinehover: true,\n animationtimingfunction: true,\n animationtimingfunctionhover: true,\n appregion: true,\n appregionhover: true,\n appearance: true,\n appearancehover: true,\n ascentoverride: true,\n ascentoverridehover: true,\n aspectratio: true,\n aspectratiohover: true,\n backdropfilter: true,\n backdropfilterhover: true,\n backfacevisibility: true,\n backfacevisibilityhover: true,\n background: true,\n backgroundhover: true,\n backgroundattachment: true,\n backgroundattachmenthover: true,\n backgroundblendmode: true,\n backgroundblendmodehover: true,\n backgroundclip: true,\n backgroundcliphover: true,\n backgroundcolor: true,\n backgroundcolorhover: true,\n backgroundimage: true,\n backgroundimagehover: true,\n backgroundorigin: true,\n backgroundoriginhover: true,\n backgroundposition: true,\n backgroundpositionhover: true,\n backgroundpositionx: true,\n backgroundpositionxhover: true,\n backgroundpositiony: true,\n backgroundpositionyhover: true,\n backgroundrepeat: true,\n backgroundrepeathover: true,\n backgroundsize: true,\n backgroundsizehover: true,\n basepalette: true,\n basepalettehover: true,\n baselineshift: true,\n baselineshifthover: true,\n baselinesource: true,\n baselinesourcehover: true,\n blocksize: true,\n blocksizehover: true,\n border: true,\n borderhover: true,\n borderblock: true,\n borderblockhover: true,\n borderblockcolor: true,\n borderblockcolorhover: true,\n borderblockend: true,\n borderblockendhover: true,\n borderblockendcolor: true,\n borderblockendcolorhover: true,\n borderblockendstyle: true,\n borderblockendstylehover: true,\n borderblockendwidth: true,\n borderblockendwidthhover: true,\n borderblockstart: true,\n borderblockstarthover: true,\n borderblockstartcolor: true,\n borderblockstartcolorhover: true,\n borderblockstartstyle: true,\n borderblockstartstylehover: true,\n borderblockstartwidth: true,\n borderblockstartwidthhover: true,\n borderblockstyle: true,\n borderblockstylehover: true,\n borderblockwidth: true,\n borderblockwidthhover: true,\n borderbottom: true,\n borderbottomhover: true,\n borderbottomcolor: true,\n borderbottomcolorhover: true,\n borderbottomleftradius: true,\n borderbottomleftradiushover: true,\n borderbottomrightradius: true,\n borderbottomrightradiushover: true,\n borderbottomstyle: true,\n borderbottomstylehover: true,\n borderbottomwidth: true,\n borderbottomwidthhover: true,\n bordercollapse: true,\n bordercollapsehover: true,\n bordercolor: true,\n bordercolorhover: true,\n borderendendradius: true,\n borderendendradiushover: true,\n borderendstartradius: true,\n borderendstartradiushover: true,\n borderimage: true,\n borderimagehover: true,\n borderimageoutset: true,\n borderimageoutsethover: true,\n borderimagerepeat: true,\n borderimagerepeathover: true,\n borderimageslice: true,\n borderimageslicehover: true,\n borderimagesource: true,\n borderimagesourcehover: true,\n borderimagewidth: true,\n borderimagewidthhover: true,\n borderinline: true,\n borderinlinehover: true,\n borderinlinecolor: true,\n borderinlinecolorhover: true,\n borderinlineend: true,\n borderinlineendhover: true,\n borderinlineendcolor: true,\n borderinlineendcolorhover: true,\n borderinlineendstyle: true,\n borderinlineendstylehover: true,\n borderinlineendwidth: true,\n borderinlineendwidthhover: true,\n borderinlinestart: true,\n borderinlinestarthover: true,\n borderinlinestartcolor: true,\n borderinlinestartcolorhover: true,\n borderinlinestartstyle: true,\n borderinlinestartstylehover: true,\n borderinlinestartwidth: true,\n borderinlinestartwidthhover: true,\n borderinlinestyle: true,\n borderinlinestylehover: true,\n borderinlinewidth: true,\n borderinlinewidthhover: true,\n borderleft: true,\n borderlefthover: true,\n borderleftcolor: true,\n borderleftcolorhover: true,\n borderleftstyle: true,\n borderleftstylehover: true,\n borderleftwidth: true,\n borderleftwidthhover: true,\n borderradius: true,\n borderradiushover: true,\n borderright: true,\n borderrighthover: true,\n borderrightcolor: true,\n borderrightcolorhover: true,\n borderrightstyle: true,\n borderrightstylehover: true,\n borderrightwidth: true,\n borderrightwidthhover: true,\n borderspacing: true,\n borderspacinghover: true,\n borderstartendradius: true,\n borderstartendradiushover: true,\n borderstartstartradius: true,\n borderstartstartradiushover: true,\n borderstyle: true,\n borderstylehover: true,\n bordertop: true,\n bordertophover: true,\n bordertopcolor: true,\n bordertopcolorhover: true,\n bordertopleftradius: true,\n bordertopleftradiushover: true,\n bordertoprightradius: true,\n bordertoprightradiushover: true,\n bordertopstyle: true,\n bordertopstylehover: true,\n bordertopwidth: true,\n bordertopwidthhover: true,\n borderwidth: true,\n borderwidthhover: true,\n bottom: true,\n bottomhover: true,\n boxdecorationbreak: true,\n boxdecorationbreakhover: true,\n boxshadow: true,\n boxshadowhover: true,\n boxsizing: true,\n boxsizinghover: true,\n breakafter: true,\n breakafterhover: true,\n breakbefore: true,\n breakbeforehover: true,\n breakinside: true,\n breakinsidehover: true,\n bufferedrendering: true,\n bufferedrenderinghover: true,\n captionside: true,\n captionsidehover: true,\n caretcolor: true,\n caretcolorhover: true,\n clear: true,\n clearhover: true,\n clip: true,\n cliphover: true,\n clippath: true,\n clippathhover: true,\n cliprule: true,\n cliprulehover: true,\n color: true,\n colorhover: true,\n colorinterpolation: true,\n colorinterpolationhover: true,\n colorinterpolationfilters: true,\n colorinterpolationfiltershover: true,\n colorrendering: true,\n colorrenderinghover: true,\n colorscheme: true,\n colorschemehover: true,\n columncount: true,\n columncounthover: true,\n columnfill: true,\n columnfillhover: true,\n columngap: true,\n columngaphover: true,\n columnrule: true,\n columnrulehover: true,\n columnrulecolor: true,\n columnrulecolorhover: true,\n columnrulestyle: true,\n columnrulestylehover: true,\n columnrulewidth: true,\n columnrulewidthhover: true,\n columnspan: true,\n columnspanhover: true,\n columnwidth: true,\n columnwidthhover: true,\n columns: true,\n columnshover: true,\n contain: true,\n containhover: true,\n containintrinsicblocksize: true,\n containintrinsicblocksizehover: true,\n containintrinsicheight: true,\n containintrinsicheighthover: true,\n containintrinsicinlinesize: true,\n containintrinsicinlinesizehover: true,\n containintrinsicsize: true,\n containintrinsicsizehover: true,\n containintrinsicwidth: true,\n containintrinsicwidthhover: true,\n container: true,\n containerhover: true,\n containername: true,\n containernamehover: true,\n containertype: true,\n containertypehover: true,\n content: true,\n contenthover: true,\n contentvisibility: true,\n contentvisibilityhover: true,\n counterincrement: true,\n counterincrementhover: true,\n counterreset: true,\n counterresethover: true,\n counterset: true,\n countersethover: true,\n cursor: true,\n cursorhover: true,\n cx: true,\n cxhover: true,\n cy: true,\n cyhover: true,\n d: true,\n dhover: true,\n descentoverride: true,\n descentoverridehover: true,\n direction: true,\n directionhover: true,\n display: true,\n displayhover: true,\n dominantbaseline: true,\n dominantbaselinehover: true,\n emptycells: true,\n emptycellshover: true,\n fallback: true,\n fallbackhover: true,\n fieldsizing: true,\n fieldsizinghover: true,\n fill: true,\n fillhover: true,\n fillopacity: true,\n fillopacityhover: true,\n fillrule: true,\n fillrulehover: true,\n filter: true,\n filterhover: true,\n flex: true,\n flexhover: true,\n flexbasis: true,\n flexbasishover: true,\n flexdirection: true,\n flexdirectionhover: true,\n flexflow: true,\n flexflowhover: true,\n flexgrow: true,\n flexgrowhover: true,\n flexshrink: true,\n flexshrinkhover: true,\n flexwrap: true,\n flexwraphover: true,\n float: true,\n floathover: true,\n floodcolor: true,\n floodcolorhover: true,\n floodopacity: true,\n floodopacityhover: true,\n font: true,\n fonthover: true,\n fontdisplay: true,\n fontdisplayhover: true,\n fontfamily: true,\n fontfamilyhover: true,\n fontfeaturesettings: true,\n fontfeaturesettingshover: true,\n fontkerning: true,\n fontkerninghover: true,\n fontopticalsizing: true,\n fontopticalsizinghover: true,\n fontpalette: true,\n fontpalettehover: true,\n fontsize: true,\n fontsizehover: true,\n fontsizeadjust: true,\n fontsizeadjusthover: true,\n fontstretch: true,\n fontstretchhover: true,\n fontstyle: true,\n fontstylehover: true,\n fontsynthesis: true,\n fontsynthesishover: true,\n fontsynthesissmallcaps: true,\n fontsynthesissmallcapshover: true,\n fontsynthesisstyle: true,\n fontsynthesisstylehover: true,\n fontsynthesisweight: true,\n fontsynthesisweighthover: true,\n fontvariant: true,\n fontvarianthover: true,\n fontvariantalternates: true,\n fontvariantalternateshover: true,\n fontvariantcaps: true,\n fontvariantcapshover: true,\n fontvarianteastasian: true,\n fontvarianteastasianhover: true,\n fontvariantemoji: true,\n fontvariantemojihover: true,\n fontvariantligatures: true,\n fontvariantligatureshover: true,\n fontvariantnumeric: true,\n fontvariantnumerichover: true,\n fontvariantposition: true,\n fontvariantpositionhover: true,\n fontvariationsettings: true,\n fontvariationsettingshover: true,\n fontweight: true,\n fontweighthover: true,\n forcedcoloradjust: true,\n forcedcoloradjusthover: true,\n gap: true,\n gaphover: true,\n grid: true,\n gridhover: true,\n gridarea: true,\n gridareahover: true,\n gridautocolumns: true,\n gridautocolumnshover: true,\n gridautoflow: true,\n gridautoflowhover: true,\n gridautorows: true,\n gridautorowshover: true,\n gridcolumn: true,\n gridcolumnhover: true,\n gridcolumnend: true,\n gridcolumnendhover: true,\n gridcolumngap: true,\n gridcolumngaphover: true,\n gridcolumnstart: true,\n gridcolumnstarthover: true,\n gridgap: true,\n gridgaphover: true,\n gridrow: true,\n gridrowhover: true,\n gridrowend: true,\n gridrowendhover: true,\n gridrowgap: true,\n gridrowgaphover: true,\n gridrowstart: true,\n gridrowstarthover: true,\n gridtemplate: true,\n gridtemplatehover: true,\n gridtemplateareas: true,\n gridtemplateareashover: true,\n gridtemplatecolumns: true,\n gridtemplatecolumnshover: true,\n gridtemplaterows: true,\n gridtemplaterowshover: true,\n height: true,\n heighthover: true,\n hyphenatecharacter: true,\n hyphenatecharacterhover: true,\n hyphenatelimitchars: true,\n hyphenatelimitcharshover: true,\n hyphens: true,\n hyphenshover: true,\n imageorientation: true,\n imageorientationhover: true,\n imagerendering: true,\n imagerenderinghover: true,\n inherits: true,\n inheritshover: true,\n initialletter: true,\n initialletterhover: true,\n initialvalue: true,\n initialvaluehover: true,\n inlinesize: true,\n inlinesizehover: true,\n inset: true,\n insethover: true,\n insetblock: true,\n insetblockhover: true,\n insetblockend: true,\n insetblockendhover: true,\n insetblockstart: true,\n insetblockstarthover: true,\n insetinline: true,\n insetinlinehover: true,\n insetinlineend: true,\n insetinlineendhover: true,\n insetinlinestart: true,\n insetinlinestarthover: true,\n interpolatesize: true,\n interpolatesizehover: true,\n isolation: true,\n isolationhover: true,\n justifycontent: true,\n justifycontenthover: true,\n justifyitems: true,\n justifyitemshover: true,\n justifyself: true,\n justifyselfhover: true,\n left: true,\n lefthover: true,\n letterspacing: true,\n letterspacinghover: true,\n lightingcolor: true,\n lightingcolorhover: true,\n linebreak: true,\n linebreakhover: true,\n linegapoverride: true,\n linegapoverridehover: true,\n lineheight: true,\n lineheighthover: true,\n liststyle: true,\n liststylehover: true,\n liststyleimage: true,\n liststyleimagehover: true,\n liststyleposition: true,\n liststylepositionhover: true,\n liststyletype: true,\n liststyletypehover: true,\n margin: true,\n marginhover: true,\n marginblock: true,\n marginblockhover: true,\n marginblockend: true,\n marginblockendhover: true,\n marginblockstart: true,\n marginblockstarthover: true,\n marginbottom: true,\n marginbottomhover: true,\n margininline: true,\n margininlinehover: true,\n margininlineend: true,\n margininlineendhover: true,\n margininlinestart: true,\n margininlinestarthover: true,\n marginleft: true,\n marginlefthover: true,\n marginright: true,\n marginrighthover: true,\n margintop: true,\n margintophover: true,\n marker: true,\n markerhover: true,\n markerend: true,\n markerendhover: true,\n markermid: true,\n markermidhover: true,\n markerstart: true,\n markerstarthover: true,\n mask: true,\n maskhover: true,\n maskclip: true,\n maskcliphover: true,\n maskcomposite: true,\n maskcompositehover: true,\n maskimage: true,\n maskimagehover: true,\n maskmode: true,\n maskmodehover: true,\n maskorigin: true,\n maskoriginhover: true,\n maskposition: true,\n maskpositionhover: true,\n maskrepeat: true,\n maskrepeathover: true,\n masksize: true,\n masksizehover: true,\n masktype: true,\n masktypehover: true,\n mathdepth: true,\n mathdepthhover: true,\n mathshift: true,\n mathshifthover: true,\n mathstyle: true,\n mathstylehover: true,\n maxblocksize: true,\n maxblocksizehover: true,\n maxheight: true,\n maxheighthover: true,\n maxinlinesize: true,\n maxinlinesizehover: true,\n maxwidth: true,\n maxwidthhover: true,\n minblocksize: true,\n minblocksizehover: true,\n minheight: true,\n minheighthover: true,\n mininlinesize: true,\n mininlinesizehover: true,\n minwidth: true,\n minwidthhover: true,\n mixblendmode: true,\n mixblendmodehover: true,\n navigation: true,\n navigationhover: true,\n negative: true,\n negativehover: true,\n objectfit: true,\n objectfithover: true,\n objectposition: true,\n objectpositionhover: true,\n objectviewbox: true,\n objectviewboxhover: true,\n offset: true,\n offsethover: true,\n offsetanchor: true,\n offsetanchorhover: true,\n offsetdistance: true,\n offsetdistancehover: true,\n offsetpath: true,\n offsetpathhover: true,\n offsetposition: true,\n offsetpositionhover: true,\n offsetrotate: true,\n offsetrotatehover: true,\n opacity: true,\n opacityhover: true,\n order: true,\n orderhover: true,\n orphans: true,\n orphanshover: true,\n outline: true,\n outlinehover: true,\n outlinecolor: true,\n outlinecolorhover: true,\n outlineoffset: true,\n outlineoffsethover: true,\n outlinestyle: true,\n outlinestylehover: true,\n outlinewidth: true,\n outlinewidthhover: true,\n overflow: true,\n overflowhover: true,\n overflowanchor: true,\n overflowanchorhover: true,\n overflowclipmargin: true,\n overflowclipmarginhover: true,\n overflowwrap: true,\n overflowwraphover: true,\n overflowx: true,\n overflowxhover: true,\n overflowy: true,\n overflowyhover: true,\n overlay: true,\n overlayhover: true,\n overridecolors: true,\n overridecolorshover: true,\n overscrollbehavior: true,\n overscrollbehaviorhover: true,\n overscrollbehaviorblock: true,\n overscrollbehaviorblockhover: true,\n overscrollbehaviorinline: true,\n overscrollbehaviorinlinehover: true,\n overscrollbehaviorx: true,\n overscrollbehaviorxhover: true,\n overscrollbehaviory: true,\n overscrollbehavioryhover: true,\n pad: true,\n padhover: true,\n padding: true,\n paddinghover: true,\n paddingblock: true,\n paddingblockhover: true,\n paddingblockend: true,\n paddingblockendhover: true,\n paddingblockstart: true,\n paddingblockstarthover: true,\n paddingbottom: true,\n paddingbottomhover: true,\n paddinginline: true,\n paddinginlinehover: true,\n paddinginlineend: true,\n paddinginlineendhover: true,\n paddinginlinestart: true,\n paddinginlinestarthover: true,\n paddingleft: true,\n paddinglefthover: true,\n paddingright: true,\n paddingrighthover: true,\n paddingtop: true,\n paddingtophover: true,\n page: true,\n pagehover: true,\n pagebreakafter: true,\n pagebreakafterhover: true,\n pagebreakbefore: true,\n pagebreakbeforehover: true,\n pagebreakinside: true,\n pagebreakinsidehover: true,\n pageorientation: true,\n pageorientationhover: true,\n paintorder: true,\n paintorderhover: true,\n perspective: true,\n perspectivehover: true,\n perspectiveorigin: true,\n perspectiveoriginhover: true,\n placecontent: true,\n placecontenthover: true,\n placeitems: true,\n placeitemshover: true,\n placeself: true,\n placeselfhover: true,\n pointerevents: true,\n pointereventshover: true,\n position: true,\n positionhover: true,\n positionanchor: true,\n positionanchorhover: true,\n positionarea: true,\n positionareahover: true,\n positiontry: true,\n positiontryhover: true,\n positiontryfallbacks: true,\n positiontryfallbackshover: true,\n positiontryorder: true,\n positiontryorderhover: true,\n positionvisibility: true,\n positionvisibilityhover: true,\n prefix: true,\n prefixhover: true,\n quotes: true,\n quoteshover: true,\n r: true,\n rhover: true,\n range: true,\n rangehover: true,\n resize: true,\n resizehover: true,\n right: true,\n righthover: true,\n rotate: true,\n rotatehover: true,\n rowgap: true,\n rowgaphover: true,\n rubyalign: true,\n rubyalignhover: true,\n rubyposition: true,\n rubypositionhover: true,\n rx: true,\n rxhover: true,\n ry: true,\n ryhover: true,\n scale: true,\n scalehover: true,\n scrollbehavior: true,\n scrollbehaviorhover: true,\n scrollinitialtarget: true,\n scrollinitialtargethover: true,\n scrollmargin: true,\n scrollmarginhover: true,\n scrollmarginblock: true,\n scrollmarginblockhover: true,\n scrollmarginblockend: true,\n scrollmarginblockendhover: true,\n scrollmarginblockstart: true,\n scrollmarginblockstarthover: true,\n scrollmarginbottom: true,\n scrollmarginbottomhover: true,\n scrollmargininline: true,\n scrollmargininlinehover: true,\n scrollmargininlineend: true,\n scrollmargininlineendhover: true,\n scrollmargininlinestart: true,\n scrollmargininlinestarthover: true,\n scrollmarginleft: true,\n scrollmarginlefthover: true,\n scrollmarginright: true,\n scrollmarginrighthover: true,\n scrollmargintop: true,\n scrollmargintophover: true,\n scrollpadding: true,\n scrollpaddinghover: true,\n scrollpaddingblock: true,\n scrollpaddingblockhover: true,\n scrollpaddingblockend: true,\n scrollpaddingblockendhover: true,\n scrollpaddingblockstart: true,\n scrollpaddingblockstarthover: true,\n scrollpaddingbottom: true,\n scrollpaddingbottomhover: true,\n scrollpaddinginline: true,\n scrollpaddinginlinehover: true,\n scrollpaddinginlineend: true,\n scrollpaddinginlineendhover: true,\n scrollpaddinginlinestart: true,\n scrollpaddinginlinestarthover: true,\n scrollpaddingleft: true,\n scrollpaddinglefthover: true,\n scrollpaddingright: true,\n scrollpaddingrighthover: true,\n scrollpaddingtop: true,\n scrollpaddingtophover: true,\n scrollsnapalign: true,\n scrollsnapalignhover: true,\n scrollsnapstop: true,\n scrollsnapstophover: true,\n scrollsnaptype: true,\n scrollsnaptypehover: true,\n scrolltimeline: true,\n scrolltimelinehover: true,\n scrolltimelineaxis: true,\n scrolltimelineaxishover: true,\n scrolltimelinename: true,\n scrolltimelinenamehover: true,\n scrollbarcolor: true,\n scrollbarcolorhover: true,\n scrollbargutter: true,\n scrollbargutterhover: true,\n scrollbarwidth: true,\n scrollbarwidthhover: true,\n shapeimagethreshold: true,\n shapeimagethresholdhover: true,\n shapemargin: true,\n shapemarginhover: true,\n shapeoutside: true,\n shapeoutsidehover: true,\n shaperendering: true,\n shaperenderinghover: true,\n size: true,\n sizehover: true,\n sizeadjust: true,\n sizeadjusthover: true,\n speak: true,\n speakhover: true,\n speakas: true,\n speakashover: true,\n src: true,\n srchover: true,\n stopcolor: true,\n stopcolorhover: true,\n stopopacity: true,\n stopopacityhover: true,\n stroke: true,\n strokehover: true,\n strokedasharray: true,\n strokedasharrayhover: true,\n strokedashoffset: true,\n strokedashoffsethover: true,\n strokelinecap: true,\n strokelinecaphover: true,\n strokelinejoin: true,\n strokelinejoinhover: true,\n strokemiterlimit: true,\n strokemiterlimithover: true,\n strokeopacity: true,\n strokeopacityhover: true,\n strokewidth: true,\n strokewidthhover: true,\n suffix: true,\n suffixhover: true,\n symbols: true,\n symbolshover: true,\n syntax: true,\n syntaxhover: true,\n system: true,\n systemhover: true,\n tabsize: true,\n tabsizehover: true,\n tablelayout: true,\n tablelayouthover: true,\n textalign: true,\n textalignhover: true,\n textalignlast: true,\n textalignlasthover: true,\n textanchor: true,\n textanchorhover: true,\n textbox: true,\n textboxhover: true,\n textboxedge: true,\n textboxedgehover: true,\n textboxtrim: true,\n textboxtrimhover: true,\n textcombineupright: true,\n textcombineuprighthover: true,\n textdecoration: true,\n textdecorationhover: true,\n textdecorationcolor: true,\n textdecorationcolorhover: true,\n textdecorationline: true,\n textdecorationlinehover: true,\n textdecorationskipink: true,\n textdecorationskipinkhover: true,\n textdecorationstyle: true,\n textdecorationstylehover: true,\n textdecorationthickness: true,\n textdecorationthicknesshover: true,\n textemphasis: true,\n textemphasishover: true,\n textemphasiscolor: true,\n textemphasiscolorhover: true,\n textemphasisposition: true,\n textemphasispositionhover: true,\n textemphasisstyle: true,\n textemphasisstylehover: true,\n textindent: true,\n textindenthover: true,\n textorientation: true,\n textorientationhover: true,\n textoverflow: true,\n textoverflowhover: true,\n textrendering: true,\n textrenderinghover: true,\n textshadow: true,\n textshadowhover: true,\n textsizeadjust: true,\n textsizeadjusthover: true,\n textspacingtrim: true,\n textspacingtrimhover: true,\n texttransform: true,\n texttransformhover: true,\n textunderlineoffset: true,\n textunderlineoffsethover: true,\n textunderlineposition: true,\n textunderlinepositionhover: true,\n textwrap: true,\n textwraphover: true,\n textwrapmode: true,\n textwrapmodehover: true,\n textwrapstyle: true,\n textwrapstylehover: true,\n timelinescope: true,\n timelinescopehover: true,\n top: true,\n tophover: true,\n touchaction: true,\n touchactionhover: true,\n transform: true,\n transformhover: true,\n transformbox: true,\n transformboxhover: true,\n transformorigin: true,\n transformoriginhover: true,\n transformstyle: true,\n transformstylehover: true,\n transition: true,\n transitionhover: true,\n transitionbehavior: true,\n transitionbehaviorhover: true,\n transitiondelay: true,\n transitiondelayhover: true,\n transitionduration: true,\n transitiondurationhover: true,\n transitionproperty: true,\n transitionpropertyhover: true,\n transitiontimingfunction: true,\n transitiontimingfunctionhover: true,\n translate: true,\n translatehover: true,\n types: true,\n typeshover: true,\n unicodebidi: true,\n unicodebidihover: true,\n unicoderange: true,\n unicoderangehover: true,\n userselect: true,\n userselecthover: true,\n vectoreffect: true,\n vectoreffecthover: true,\n verticalalign: true,\n verticalalignhover: true,\n viewtimeline: true,\n viewtimelinehover: true,\n viewtimelineaxis: true,\n viewtimelineaxishover: true,\n viewtimelineinset: true,\n viewtimelineinsethover: true,\n viewtimelinename: true,\n viewtimelinenamehover: true,\n viewtransitionclass: true,\n viewtransitionclasshover: true,\n viewtransitionname: true,\n viewtransitionnamehover: true,\n visibility: true,\n visibilityhover: true,\n webkitaligncontent: true,\n webkitaligncontenthover: true,\n webkitalignitems: true,\n webkitalignitemshover: true,\n webkitalignself: true,\n webkitalignselfhover: true,\n webkitanimation: true,\n webkitanimationhover: true,\n webkitanimationdelay: true,\n webkitanimationdelayhover: true,\n webkitanimationdirection: true,\n webkitanimationdirectionhover: true,\n webkitanimationduration: true,\n webkitanimationdurationhover: true,\n webkitanimationfillmode: true,\n webkitanimationfillmodehover: true,\n webkitanimationiterationcount: true,\n webkitanimationiterationcounthover: true,\n webkitanimationname: true,\n webkitanimationnamehover: true,\n webkitanimationplaystate: true,\n webkitanimationplaystatehover: true,\n webkitanimationtimingfunction: true,\n webkitanimationtimingfunctionhover: true,\n webkitappregion: true,\n webkitappregionhover: true,\n webkitappearance: true,\n webkitappearancehover: true,\n webkitbackfacevisibility: true,\n webkitbackfacevisibilityhover: true,\n webkitbackgroundclip: true,\n webkitbackgroundcliphover: true,\n webkitbackgroundorigin: true,\n webkitbackgroundoriginhover: true,\n webkitbackgroundsize: true,\n webkitbackgroundsizehover: true,\n webkitborderafter: true,\n webkitborderafterhover: true,\n webkitborderaftercolor: true,\n webkitborderaftercolorhover: true,\n webkitborderafterstyle: true,\n webkitborderafterstylehover: true,\n webkitborderafterwidth: true,\n webkitborderafterwidthhover: true,\n webkitborderbefore: true,\n webkitborderbeforehover: true,\n webkitborderbeforecolor: true,\n webkitborderbeforecolorhover: true,\n webkitborderbeforestyle: true,\n webkitborderbeforestylehover: true,\n webkitborderbeforewidth: true,\n webkitborderbeforewidthhover: true,\n webkitborderbottomleftradius: true,\n webkitborderbottomleftradiushover: true,\n webkitborderbottomrightradius: true,\n webkitborderbottomrightradiushover: true,\n webkitborderend: true,\n webkitborderendhover: true,\n webkitborderendcolor: true,\n webkitborderendcolorhover: true,\n webkitborderendstyle: true,\n webkitborderendstylehover: true,\n webkitborderendwidth: true,\n webkitborderendwidthhover: true,\n webkitborderhorizontalspacing: true,\n webkitborderhorizontalspacinghover: true,\n webkitborderimage: true,\n webkitborderimagehover: true,\n webkitborderradius: true,\n webkitborderradiushover: true,\n webkitborderstart: true,\n webkitborderstarthover: true,\n webkitborderstartcolor: true,\n webkitborderstartcolorhover: true,\n webkitborderstartstyle: true,\n webkitborderstartstylehover: true,\n webkitborderstartwidth: true,\n webkitborderstartwidthhover: true,\n webkitbordertopleftradius: true,\n webkitbordertopleftradiushover: true,\n webkitbordertoprightradius: true,\n webkitbordertoprightradiushover: true,\n webkitborderverticalspacing: true,\n webkitborderverticalspacinghover: true,\n webkitboxalign: true,\n webkitboxalignhover: true,\n webkitboxdecorationbreak: true,\n webkitboxdecorationbreakhover: true,\n webkitboxdirection: true,\n webkitboxdirectionhover: true,\n webkitboxflex: true,\n webkitboxflexhover: true,\n webkitboxordinalgroup: true,\n webkitboxordinalgrouphover: true,\n webkitboxorient: true,\n webkitboxorienthover: true,\n webkitboxpack: true,\n webkitboxpackhover: true,\n webkitboxreflect: true,\n webkitboxreflecthover: true,\n webkitboxshadow: true,\n webkitboxshadowhover: true,\n webkitboxsizing: true,\n webkitboxsizinghover: true,\n webkitclippath: true,\n webkitclippathhover: true,\n webkitcolumnbreakafter: true,\n webkitcolumnbreakafterhover: true,\n webkitcolumnbreakbefore: true,\n webkitcolumnbreakbeforehover: true,\n webkitcolumnbreakinside: true,\n webkitcolumnbreakinsidehover: true,\n webkitcolumncount: true,\n webkitcolumncounthover: true,\n webkitcolumngap: true,\n webkitcolumngaphover: true,\n webkitcolumnrule: true,\n webkitcolumnrulehover: true,\n webkitcolumnrulecolor: true,\n webkitcolumnrulecolorhover: true,\n webkitcolumnrulestyle: true,\n webkitcolumnrulestylehover: true,\n webkitcolumnrulewidth: true,\n webkitcolumnrulewidthhover: true,\n webkitcolumnspan: true,\n webkitcolumnspanhover: true,\n webkitcolumnwidth: true,\n webkitcolumnwidthhover: true,\n webkitcolumns: true,\n webkitcolumnshover: true,\n webkitfilter: true,\n webkitfilterhover: true,\n webkitflex: true,\n webkitflexhover: true,\n webkitflexbasis: true,\n webkitflexbasishover: true,\n webkitflexdirection: true,\n webkitflexdirectionhover: true,\n webkitflexflow: true,\n webkitflexflowhover: true,\n webkitflexgrow: true,\n webkitflexgrowhover: true,\n webkitflexshrink: true,\n webkitflexshrinkhover: true,\n webkitflexwrap: true,\n webkitflexwraphover: true,\n webkitfontfeaturesettings: true,\n webkitfontfeaturesettingshover: true,\n webkitfontsmoothing: true,\n webkitfontsmoothinghover: true,\n webkithyphenatecharacter: true,\n webkithyphenatecharacterhover: true,\n webkitjustifycontent: true,\n webkitjustifycontenthover: true,\n webkitlinebreak: true,\n webkitlinebreakhover: true,\n webkitlineclamp: true,\n webkitlineclamphover: true,\n webkitlocale: true,\n webkitlocalehover: true,\n webkitlogicalheight: true,\n webkitlogicalheighthover: true,\n webkitlogicalwidth: true,\n webkitlogicalwidthhover: true,\n webkitmarginafter: true,\n webkitmarginafterhover: true,\n webkitmarginbefore: true,\n webkitmarginbeforehover: true,\n webkitmarginend: true,\n webkitmarginendhover: true,\n webkitmarginstart: true,\n webkitmarginstarthover: true,\n webkitmask: true,\n webkitmaskhover: true,\n webkitmaskboximage: true,\n webkitmaskboximagehover: true,\n webkitmaskboximageoutset: true,\n webkitmaskboximageoutsethover: true,\n webkitmaskboximagerepeat: true,\n webkitmaskboximagerepeathover: true,\n webkitmaskboximageslice: true,\n webkitmaskboximageslicehover: true,\n webkitmaskboximagesource: true,\n webkitmaskboximagesourcehover: true,\n webkitmaskboximagewidth: true,\n webkitmaskboximagewidthhover: true,\n webkitmaskclip: true,\n webkitmaskcliphover: true,\n webkitmaskcomposite: true,\n webkitmaskcompositehover: true,\n webkitmaskimage: true,\n webkitmaskimagehover: true,\n webkitmaskorigin: true,\n webkitmaskoriginhover: true,\n webkitmaskposition: true,\n webkitmaskpositionhover: true,\n webkitmaskpositionx: true,\n webkitmaskpositionxhover: true,\n webkitmaskpositiony: true,\n webkitmaskpositionyhover: true,\n webkitmaskrepeat: true,\n webkitmaskrepeathover: true,\n webkitmasksize: true,\n webkitmasksizehover: true,\n webkitmaxlogicalheight: true,\n webkitmaxlogicalheighthover: true,\n webkitmaxlogicalwidth: true,\n webkitmaxlogicalwidthhover: true,\n webkitminlogicalheight: true,\n webkitminlogicalheighthover: true,\n webkitminlogicalwidth: true,\n webkitminlogicalwidthhover: true,\n webkitopacity: true,\n webkitopacityhover: true,\n webkitorder: true,\n webkitorderhover: true,\n webkitpaddingafter: true,\n webkitpaddingafterhover: true,\n webkitpaddingbefore: true,\n webkitpaddingbeforehover: true,\n webkitpaddingend: true,\n webkitpaddingendhover: true,\n webkitpaddingstart: true,\n webkitpaddingstarthover: true,\n webkitperspective: true,\n webkitperspectivehover: true,\n webkitperspectiveorigin: true,\n webkitperspectiveoriginhover: true,\n webkitperspectiveoriginx: true,\n webkitperspectiveoriginxhover: true,\n webkitperspectiveoriginy: true,\n webkitperspectiveoriginyhover: true,\n webkitprintcoloradjust: true,\n webkitprintcoloradjusthover: true,\n webkitrtlordering: true,\n webkitrtlorderinghover: true,\n webkitrubyposition: true,\n webkitrubypositionhover: true,\n webkitshapeimagethreshold: true,\n webkitshapeimagethresholdhover: true,\n webkitshapemargin: true,\n webkitshapemarginhover: true,\n webkitshapeoutside: true,\n webkitshapeoutsidehover: true,\n webkittaphighlightcolor: true,\n webkittaphighlightcolorhover: true,\n webkittextcombine: true,\n webkittextcombinehover: true,\n webkittextdecorationsineffect: true,\n webkittextdecorationsineffecthover: true,\n webkittextemphasis: true,\n webkittextemphasishover: true,\n webkittextemphasiscolor: true,\n webkittextemphasiscolorhover: true,\n webkittextemphasisposition: true,\n webkittextemphasispositionhover: true,\n webkittextemphasisstyle: true,\n webkittextemphasisstylehover: true,\n webkittextfillcolor: true,\n webkittextfillcolorhover: true,\n webkittextorientation: true,\n webkittextorientationhover: true,\n webkittextsecurity: true,\n webkittextsecurityhover: true,\n webkittextsizeadjust: true,\n webkittextsizeadjusthover: true,\n webkittextstroke: true,\n webkittextstrokehover: true,\n webkittextstrokecolor: true,\n webkittextstrokecolorhover: true,\n webkittextstrokewidth: true,\n webkittextstrokewidthhover: true,\n webkittransform: true,\n webkittransformhover: true,\n webkittransformorigin: true,\n webkittransformoriginhover: true,\n webkittransformoriginx: true,\n webkittransformoriginxhover: true,\n webkittransformoriginy: true,\n webkittransformoriginyhover: true,\n webkittransformoriginz: true,\n webkittransformoriginzhover: true,\n webkittransformstyle: true,\n webkittransformstylehover: true,\n webkittransition: true,\n webkittransitionhover: true,\n webkittransitiondelay: true,\n webkittransitiondelayhover: true,\n webkittransitionduration: true,\n webkittransitiondurationhover: true,\n webkittransitionproperty: true,\n webkittransitionpropertyhover: true,\n webkittransitiontimingfunction: true,\n webkittransitiontimingfunctionhover: true,\n webkituserdrag: true,\n webkituserdraghover: true,\n webkitusermodify: true,\n webkitusermodifyhover: true,\n webkituserselect: true,\n webkituserselecthover: true,\n webkitwritingmode: true,\n webkitwritingmodehover: true,\n whitespace: true,\n whitespacehover: true,\n whitespacecollapse: true,\n whitespacecollapsehover: true,\n widows: true,\n widowshover: true,\n width: true,\n widthhover: true,\n willchange: true,\n willchangehover: true,\n wordbreak: true,\n wordbreakhover: true,\n wordspacing: true,\n wordspacinghover: true,\n wordwrap: true,\n wordwraphover: true,\n writingmode: true,\n writingmodehover: true,\n x: true,\n xhover: true,\n y: true,\n yhover: true,\n zindex: true,\n zindexhover: true,\n zoom: true,\n zoomhover: true,\n};\n","import { createContext, memo, useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport { createGlobalStyle } from \"styled-components\";\n\nimport { theme } from \"../constants/theme\";\nimport { icons } from \"../constants/icons\";\nimport { assets } from \"../constants/assets\";\nimport { appConfig } from \"../constants/app\";\n\nimport { BetterHtmlConfig } from \"../types/config\";\nimport { AnyOtherString, DeepPartialRecord, OmitProps } from \"../types/app\";\nimport { ColorTheme } from \"../types/theme\";\nimport { LoaderConfig, LoaderName } from \"../types/loader\";\nimport { BetterHtmlPlugin, PluginName } from \"../types/plugin\";\n\nconst GlobalStyle = createGlobalStyle<{ fontFamily: string; color: string; backgroundColor: string }>`\n body {\n font-family: ${(props) => props.fontFamily};\n color: ${(props) => props.color};\n background-color: ${(props) => props.backgroundColor};\n }\n\n * {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n -webkit-tap-highlight-color: transparent;\n }\n\n a {\n text-decoration: none;\n color: inherit;\n }\n\n .react-better-html-no-scrollbar::-webkit-scrollbar {\n display: none;\n }\n`;\n\nexport type BetterHtmlInternalConfig = BetterHtmlConfig & {\n setLoaders: React.Dispatch<React.SetStateAction<Partial<LoaderConfig>>>;\n plugins: BetterHtmlPlugin[];\n};\n\nconst betterHtmlContext = createContext<BetterHtmlInternalConfig | undefined>(undefined);\n\nexport let externalBetterHtmlContextValue: BetterHtmlInternalConfig | undefined;\n\nexport const useBetterHtmlContext = (): BetterHtmlConfig => {\n const context = useContext(betterHtmlContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterHtmlContext()` must be used within a `<BetterHtmlProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n const { setLoaders, plugins, ...rest } = context;\n\n return rest;\n};\n\nexport const useTheme = () => {\n const context = useContext(betterHtmlContext);\n\n if (context === undefined)\n throw new Error(\n \"`useTheme()` must be used within a `<BetterHtmlProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n return {\n ...context.theme,\n colors: context.theme.colors[context.colorTheme] ?? context.theme.colors.light,\n };\n};\n\nexport const useLoader = (loaderName?: LoaderName | AnyOtherString): boolean => {\n const context = useContext(betterHtmlContext);\n\n if (context === undefined)\n throw new Error(\n \"`useLoader()` must be used within a `<BetterHtmlProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n return loaderName ? context.loaders[loaderName.toString()] ?? false : false;\n};\n\nexport const useLoaderControls = () => {\n const context = useContext(betterHtmlContext);\n\n if (context === undefined)\n throw new Error(\n \"`useLoaderControls()` must be used within a `<BetterHtmlProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n const startLoading = useCallback((loaderName: LoaderName | AnyOtherString) => {\n context.setLoaders((oldValue) => ({\n ...oldValue,\n [loaderName.toString()]: true,\n }));\n }, []);\n const stopLoading = useCallback((loaderName: LoaderName | AnyOtherString) => {\n context.setLoaders((oldValue) => ({\n ...oldValue,\n [loaderName.toString()]: false,\n }));\n }, []);\n\n return {\n startLoading,\n stopLoading,\n };\n};\n\nexport const usePlugin = (pluginName: PluginName): BetterHtmlPlugin | undefined => {\n const context = useContext(betterHtmlContext);\n\n if (context === undefined) {\n throw new Error(\n \"`usePlugin()` must be used within a `<BetterHtmlProvider>`. Make sure to add one at the root of your component tree.\",\n );\n }\n\n return context.plugins.find((plugin: BetterHtmlPlugin) => plugin.name === pluginName);\n};\n\ntype BetterHtmlProviderContentProps = {\n children?: React.ReactNode;\n};\n\nfunction BetterHtmlProviderContent({ children }: BetterHtmlProviderContentProps) {\n const theme = useTheme();\n\n return (\n <>\n <GlobalStyle\n fontFamily={theme.styles.fontFamily}\n color={theme.colors.textPrimary}\n backgroundColor={theme.colors.backgroundBase}\n />\n\n {children}\n </>\n );\n}\n\nexport type BetterHtmlProviderValue = DeepPartialRecord<BetterHtmlConfig>;\n\ntype BetterHtmlProviderProps = {\n value?: BetterHtmlProviderValue;\n plugins?: BetterHtmlPlugin[];\n children?: React.ReactNode;\n};\n\nfunction BetterHtmlProvider({ value, plugins: pluginsToUse, children }: BetterHtmlProviderProps) {\n const [loaders, setLoaders] = useState<Partial<LoaderConfig>>(value?.loaders ?? {});\n const [plugins] = useState<BetterHtmlPlugin[]>(pluginsToUse ?? []);\n const [colorTheme, setColorTheme] = useState<ColorTheme>(\n localStorage.getItem(\"theme\") === \"dark\" ? \"dark\" : value?.colorTheme ?? \"light\",\n );\n\n const readyValue = useMemo<BetterHtmlInternalConfig>(\n () => ({\n app: {\n ...appConfig,\n ...value?.app,\n },\n theme: {\n styles: {\n ...theme.styles,\n ...value?.theme?.styles,\n },\n colors: {\n light: {\n ...theme.colors.light,\n ...value?.theme?.colors?.light,\n },\n dark: {\n ...theme.colors.dark,\n ...value?.theme?.colors?.dark,\n },\n },\n },\n colorTheme,\n icons: {\n ...icons,\n ...value?.icons,\n },\n assets: {\n ...assets,\n ...value?.assets,\n },\n loaders,\n setLoaders,\n components: {\n ...value?.components,\n },\n plugins,\n }),\n [value, colorTheme, loaders, plugins],\n );\n\n useEffect(() => {\n plugins.forEach((plugin) => {\n plugin.initialize?.();\n });\n }, [plugins]);\n useEffect(() => {\n const html = document.querySelector(\"html\");\n\n if (!html) return;\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === \"attributes\") {\n setColorTheme(html.getAttribute(\"data-theme\") === \"dark\" ? \"dark\" : value?.colorTheme ?? \"light\");\n }\n });\n });\n\n observer.observe(html, {\n attributes: true,\n });\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n externalBetterHtmlContextValue = readyValue;\n\n return (\n <betterHtmlContext.Provider value={readyValue}>\n <BetterHtmlProviderContent>{children}</BetterHtmlProviderContent>\n </betterHtmlContext.Provider>\n );\n}\n\nexport default memo(BetterHtmlProvider);\n","import { ThemeConfig } from \"../types/theme\";\n\nexport const theme: ThemeConfig = {\n styles: {\n space: 16,\n gap: 8,\n borderRadius: 10,\n fontFamily: \"Arial, sans-serif\",\n transition: \"ease 0.2s\",\n },\n colors: {\n light: {\n textPrimary: \"#111111\",\n textSecondary: \"#777777\",\n textLink: \"#0894ff\",\n label: \"#111111\",\n primary: \"#6d466b\",\n secondary: \"#412234\",\n accent: \"#16d7ed\",\n success: \"#28a745\",\n info: \"#0fa0da\",\n warn: \"#ffc107\",\n error: \"#dc3545\",\n base: \"#f8f8f8\",\n backgroundBase: \"#f8f8f8\",\n backgroundSecondary: \"#e8e8e8\",\n backgroundContent: \"#ffffff\",\n border: \"#ced4da\",\n },\n dark: {\n textPrimary: \"#f8f8f8\",\n textSecondary: \"#e8e8e8\",\n textLink: \"#0894ff\",\n label: \"#111111\",\n primary: \"#9b6499\",\n secondary: \"#6c466b\",\n accent: \"#16d7ed\",\n success: \"#28a745\",\n info: \"#0fa0da\",\n warn: \"#ffc107\",\n error: \"#dc3545\",\n base: \"#f8f8f8\",\n backgroundBase: \"#111111\",\n backgroundSecondary: \"#222222\",\n backgroundContent: \"#333333\",\n border: \"#777777\",\n },\n },\n};\n","import { IconsConfig } from \"../types/icon\";\n\nexport const icons: IconsConfig = {\n XMark: {\n width: 384,\n height: 512,\n paths: [\n {\n d: \"M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z\",\n type: \"fill\",\n },\n ],\n },\n uploadCloud: {\n width: 640,\n height: 512,\n paths: [\n {\n d: \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128l-368 0zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39L296 392c0 13.3 10.7 24 24 24s24-10.7 24-24l0-134.1 39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\",\n type: \"fill\",\n },\n ],\n },\n trash: {\n width: 448,\n height: 512,\n paths: [\n {\n d: \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3zM32 128l384 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zm96 64c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16z\",\n type: \"fill\",\n },\n ],\n },\n chevronDown: {\n width: 512,\n height: 512,\n paths: [\n {\n d: \"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\",\n type: \"fill\",\n },\n ],\n },\n eye: {\n width: 576,\n height: 512,\n paths: [\n {\n d: \"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z\",\n type: \"fill\",\n },\n ],\n },\n eyeDashed: {\n width: 640,\n height: 512,\n paths: [\n {\n d: \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\",\n type: \"fill\",\n },\n ],\n },\n magnifyingGlass: {\n width: 512,\n height: 512,\n paths: [\n {\n d: \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\",\n type: \"fill\",\n },\n ],\n },\n check: {\n width: 448,\n height: 512,\n paths: [\n {\n d: \"M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\",\n type: \"fill\",\n },\n ],\n },\n};\n","import { AssetsConfig } from \"../types/asset\";\n\nexport const assets: AssetsConfig = {\n logo: \"\",\n};\n","import { AppConfig } from \"../types/config\";\n\nexport const appConfig: AppConfig = {\n contentMaxWidth: 1100,\n};\n","import { forwardRef, memo } from \"react\";\nimport styled from \"styled-components\";\n\nimport { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from \"../types/components\";\nimport { OmitProps } from \"../types/app\";\n\nimport { useComponentPropsWithoutStyle, useComponentPropsWithPrefix, useStyledComponentStyles } from \"../utils/hooks\";\n\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nconst TextStyledComponent = styled.div.withConfig({\n shouldForwardProp: (prop) => ![\"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{ normalStyle: ComponentStyle; hoverStyle: ComponentStyle }>`\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nexport type TextAs = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"label\";\n\nexport type TextProps = {\n /** @default \"p\" */\n as?: TextAs;\n} & OmitProps<React.ComponentProps<\"p\">, \"style\"> &\n ComponentStyle &\n ComponentHoverStyle;\n\ntype TextComponentType = {\n (props: ComponentPropWithRef<HTMLParagraphElement, TextProps>): React.ReactElement;\n unknown: (props: ComponentPropWithRef<HTMLParagraphElement, TextProps>) => React.ReactElement;\n oneLine: (props: ComponentPropWithRef<HTMLParagraphElement, TextProps>) => React.ReactElement;\n};\n\nconst TextComponent: TextComponentType = forwardRef(function Text(\n { as = \"p\", children, ...props }: TextProps,\n ref: React.ForwardedRef<HTMLParagraphElement>,\n) {\n const theme = useTheme();\n\n const styledComponentStyles = useStyledComponentStyles(props, theme);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n return (\n <TextStyledComponent as={as} {...styledComponentStyles} {...dataProps} {...ariaProps} {...restProps} ref={ref}>\n {children}\n </TextStyledComponent>\n );\n}) as any;\n\nTextComponent.unknown = forwardRef(function Unknown(props, ref) {\n const theme = useTheme();\n\n return (\n <TextComponent fontStyle=\"italic\" textAlign=\"center\" color={theme.colors.textSecondary} ref={ref} {...props} />\n );\n}) as TextComponentType[\"unknown\"];\n\nTextComponent.oneLine = forwardRef(function OneLine(props, ref) {\n return <TextComponent textOverflow=\"ellipsis\" whiteSpace=\"nowrap\" overflow=\"hidden\" ref={ref} {...props} />;\n}) as TextComponentType[\"oneLine\"];\n\nconst Text = memo(TextComponent) as any as typeof TextComponent & {\n unknown: typeof TextComponent.unknown;\n oneLine: typeof TextComponent.oneLine;\n};\n\nText.unknown = TextComponent.unknown;\nText.oneLine = TextComponent.oneLine;\n\nexport default Text;\n","import { memo } from \"react\";\nimport styled from \"styled-components\";\n\nimport { Color } from \"../types/theme\";\nimport { OmitProps } from \"../types/app\";\n\nimport Div, { DivProps } from \"./Div\";\nimport Text from \"./Text\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nexport type LoaderProps = {\n /** @default textPrimary */\n color?: Color;\n /** @default 16 */\n size?: number;\n /** @default 5 */\n width?: number;\n /** @default false */\n disabled?: boolean;\n} & OmitProps<\n DivProps<unknown>,\n | \"width\"\n | \"height\"\n | \"color\"\n | \"background\"\n | \"borderRadius\"\n | \"mask\"\n | \"WebkitMask\"\n | \"padding\"\n | \"animation\"\n | \"animationName\"\n>;\n\ntype LoaderComponentType = {\n (props: LoaderProps): React.ReactElement;\n box: (\n props: OmitProps<LoaderProps, \"size\"> & {\n /** @default \"Loading...\" */\n text?: string;\n /** @default 20 */\n size?: number;\n },\n ) => React.ReactElement;\n text: (\n props: OmitProps<LoaderProps, \"size\"> & {\n /** @default \"Loading...\" */\n text?: string;\n /** @default 14 */\n size?: number;\n },\n ) => React.ReactElement;\n};\n\nconst StyledDiv = styled(Div)`\n @keyframes loaderAnimation {\n to {\n transform: rotate(360deg);\n }\n }\n\n @keyframes textLoaderAnimation {\n to {\n clip-path: inset(0 -1ch 0 0);\n }\n }\n`;\n\nconst LoaderComponent: LoaderComponentType = function Loader({\n color,\n size = 16,\n width,\n disabled,\n ...props\n}: LoaderProps) {\n const theme = useTheme();\n\n const readyColor: Color = color ?? theme.colors.textPrimary;\n const readyWidth: number = width ?? size / 3;\n const mask: React.CSSProperties[\"mask\"] = `radial-gradient(farthest-side, #0000 calc(100% - ${readyWidth}px), #000 0)`;\n\n return (\n <StyledDiv\n width={size + readyWidth * 2}\n height={size + readyWidth * 2}\n background={`radial-gradient(farthest-side, ${readyColor} 94%, #0000) top/${readyWidth}px ${readyWidth}px no-repeat, conic-gradient(#0000 30%, ${readyColor})`}\n borderRadius={999}\n mask={mask}\n WebkitMask={mask}\n padding={readyWidth}\n animation={!disabled ? \"loaderAnimation .6s infinite linear\" : undefined}\n {...props}\n />\n );\n} as any;\n\nLoaderComponent.box = function Box({ text = \"Loading...\", size = 20, ...props }) {\n const theme = useTheme();\n\n return (\n <Div.column width=\"100%\" alignItems=\"center\" gap={theme.styles.gap}>\n <Loader size={size} {...props} />\n\n {text && (\n <Text textAlign=\"center\" color={props.color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </Div.column>\n );\n} as LoaderComponentType[\"box\"];\n\nLoaderComponent.text = function LoaderText({ text = \"Loading...\", size = 14, ...props }) {\n const theme = useTheme();\n\n return (\n <Div.row alignItems=\"center\" gap={theme.styles.gap}>\n <Loader size={size} {...props} />\n\n {text && (\n <Text textAlign=\"center\" color={props.color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </Div.row>\n );\n} as LoaderComponentType[\"text\"];\n\nconst Loader = memo(LoaderComponent) as any as typeof LoaderComponent & {\n box: typeof LoaderComponent.box;\n text: typeof LoaderComponent.text;\n};\n\nLoader.box = LoaderComponent.box;\nLoader.text = LoaderComponent.text;\n\nexport default Loader;\n","import { forwardRef, memo, useEffect } from \"react\";\nimport styled from \"styled-components\";\n\nimport { AnyOtherString, OmitProps } from \"../types/app\";\nimport { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from \"../types/components\";\nimport { IconName } from \"../types/icon\";\n\nimport { useComponentPropsWithoutStyle, useComponentPropsWithPrefix, useStyledComponentStyles } from \"../utils/hooks\";\n\nimport { useBetterHtmlContext, useTheme } from \"./BetterHtmlProvider\";\n\nexport type IconProps = {\n name: IconName | AnyOtherString;\n /** @default 16 */\n size?: number;\n} & OmitProps<React.ComponentProps<\"svg\">, \"style\" | \"width\" | \"height\" | \"viewBox\" | \"fill\" | \"xmlns\" | \"name\"> &\n ComponentStyle &\n ComponentHoverStyle;\n\ntype IconComponent = {\n (props: ComponentPropWithRef<SVGSVGElement, IconProps>): React.ReactElement;\n};\n\nconst IconElement = styled.svg.withConfig({\n shouldForwardProp: (prop) => ![\"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{ normalStyle: ComponentStyle; hoverStyle: ComponentStyle }>`\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nconst Icon: IconComponent = forwardRef(function Icon(\n { name, size = 16, ...props }: IconProps,\n ref: React.ForwardedRef<SVGSVGElement>,\n) {\n const theme = useTheme();\n const { icons } = useBetterHtmlContext();\n\n const styledComponentStyles = useStyledComponentStyles(props, theme);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n const svgColor = props.color ?? theme.colors.textPrimary;\n\n useEffect(() => {\n if (!icons[name.toString()])\n console.warn(\n `The icon \\`${name}\\` you are trying to use does not exist. Make sure to add it to the \\`icons\\` object in \\`<BetterHtmlProvider>\\` config value prop.`,\n );\n }, [icons, name]);\n\n return (\n <IconElement\n width={size}\n height={size}\n viewBox={`0 0 ${icons[name.toString()]?.width ?? 0} ${icons[name.toString()]?.height ?? 0}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...styledComponentStyles}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n ref={ref}\n >\n {icons[name.toString()]?.paths.map((path) => (\n <path\n {...path}\n fill={path.type === \"fill\" ? svgColor : undefined}\n stroke={path.type === \"stroke\" ? svgColor : undefined}\n key={path.d}\n />\n ))}\n </IconElement>\n );\n}) as any;\n\nconst MemoizedIcon = memo(Icon) as any as typeof Icon & {};\n\nexport default { Icon: MemoizedIcon }.Icon;\n","import { forwardRef, memo, useCallback, useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport { AnyOtherString, OmitProps } from \"../types/app\";\nimport { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from \"../types/components\";\nimport { AssetName } from \"../types/asset\";\nimport { useBetterHtmlContext, useTheme } from \"./BetterHtmlProvider\";\nimport { useComponentPropsWithoutStyle, useComponentPropsWithPrefix, useStyledComponentStyles } from \"../utils/hooks\";\n\nexport type ImageProps = {\n name?: AssetName | AnyOtherString;\n} & OmitProps<React.ComponentProps<\"img\">, \"style\"> &\n ComponentStyle &\n ComponentHoverStyle;\n\ntype ImageComponent = {\n (props: ComponentPropWithRef<HTMLImageElement, ImageProps>): React.ReactElement;\n profileImage: (\n props: ComponentPropWithRef<\n HTMLImageElement,\n OmitProps<ImageProps, \"width\" | \"height\"> & {\n /** @default 40 */\n size?: number;\n }\n >,\n ) => React.ReactElement;\n};\n\nconst ImageElement = styled.img.withConfig({\n shouldForwardProp: (prop) => ![\"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{ normalStyle: ComponentStyle; hoverStyle: ComponentStyle }>`\n display: block;\n user-select: none;\n -webkit-user-drag: none;\n\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nconst Image: ImageComponent = forwardRef(function Image(\n { name, src, ...props }: ImageProps,\n ref: React.ForwardedRef<HTMLImageElement>,\n) {\n const theme = useTheme();\n const { assets } = useBetterHtmlContext();\n\n const styledComponentStyles = useStyledComponentStyles(props, theme);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n useEffect(() => {\n if (!name) return;\n\n if (!assets[name.toString()])\n console.warn(\n `The asset \\`${name}\\` you are trying to use does not exist. Make sure to add it to the \\`assets\\` object in \\`<BetterHtmlProvider>\\` config value prop.`,\n );\n }, [assets, name]);\n\n return (\n <ImageElement\n {...styledComponentStyles}\n src={name ? assets[name.toString()] : src}\n {...styledComponentStyles}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n ref={ref}\n />\n );\n}) as any;\n\nImage.profileImage = forwardRef(function ProfileImage({ size = 40, ...props }, ref) {\n return <Image width={size} height={size} borderRadius=\"50%\" objectFit=\"cover\" ref={ref} {...props} />;\n}) as ImageComponent[\"profileImage\"];\n\nconst MemoizedImage = memo(Image) as any as typeof Image & {\n profileImage: typeof Image.profileImage;\n};\n\nMemoizedImage.profileImage = Image.profileImage;\n\nexport default { Image: MemoizedImage }.Image;\n","import { ComponentProps, memo, useCallback } from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport { IconName } from \"../types/icon\";\nimport { AssetName } from \"../types/asset\";\nimport { LoaderName } from \"../types/loader\";\nimport { AnyOtherString, OmitProps } from \"../types/app\";\nimport { ComponentHoverStyle, ComponentStyle } from \"../types/components\";\nimport { Color, Theme } from \"../types/theme\";\n\nimport { useComponentPropsWithoutStyle, useComponentPropsWithPrefix, useStyledComponentStyles } from \"../utils/hooks\";\n\nimport Div from \"./Div\";\nimport Icon from \"./Icon\";\nimport Loader from \"./Loader\";\nimport Image from \"./Image\";\nimport { useTheme, useLoader, useBetterHtmlContext } from \"./BetterHtmlProvider\";\n\nconst ButtonElement = styled.button.withConfig({\n shouldForwardProp: (prop) =>\n ![\"theme\", \"normalStyle\", \"hoverStyle\", \"isSmall\", \"withText\", \"isLoading\"].includes(prop),\n})<{\n theme: Theme;\n normalStyle: ComponentStyle;\n hoverStyle: ComponentStyle;\n isSmall?: boolean;\n withText?: boolean;\n disabled?: boolean;\n isLoading?: boolean;\n}>`\n display: block;\n position: relative;\n width: fit-content;\n min-width: max-content;\n font-family: ${(props) => props.theme.styles.fontFamily};\n font-size: 16px;\n line-height: 20px;\n text-decoration: none;\n color: ${(props) => props.theme.colors.base};\n background-color: ${(props) => props.theme.colors.primary};\n border: none;\n border-radius: ${(props) => props.theme.styles.borderRadius}px;\n padding: ${(props) =>\n props.isSmall\n ? `${props.theme.styles.gap + 1}px ${props.theme.styles.space}px`\n : `${(props.theme.styles.gap + props.theme.styles.space) / 2 + 1}px ${\n props.theme.styles.space + (props.withText ? props.theme.styles.gap : 0)\n }px`};\n user-select: none;\n flex-shrink: 0;\n transition: ${(props) => props.theme.styles.transition};\n\n ${(props) =>\n props.disabled\n ? css`\n opacity: 0.6;\n cursor: not-allowed;\n\n &.secondary:disabled {\n filter: brightness(0.9);\n }\n `\n : !props.isLoading\n ? css`\n cursor: pointer;\n\n &:not(.secondary):hover {\n filter: brightness(0.9);\n }\n\n &.secondary:hover {\n border-color: ${props.theme.colors.primary};\n }\n `\n : \"\"}\n\n &.secondary {\n padding-block: ${(props) =>\n props.isSmall ? props.theme.styles.gap : (props.theme.styles.space + props.theme.styles.gap) / 2}px;\n border: solid 1px ${(props) => props.theme.colors.border};\n background-color: ${(props) => props.theme.colors.backgroundContent};\n background-image: none;\n\n ${(props) => props.normalStyle as any}\n }\n\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nexport type ButtonProps<Value> = {\n text?: string;\n value?: Value;\n\n href?: string;\n download?: string;\n target?: React.ComponentProps<\"a\">[\"target\"];\n\n icon?: IconName | AnyOtherString;\n /** @default \"left\" */\n iconPosition?: \"left\" | \"right\";\n /** @default Same as text color */\n iconColor?: string;\n /** @default 16 */\n iconSize?: number;\n\n image?: AssetName | AnyOtherString;\n /** @default \"left\" */\n imagePosition?: \"left\" | \"right\";\n /** @default 16 */\n imageWidth?: number;\n /** @default undefined */\n imageHeight?: number;\n\n loaderName?: LoaderName | AnyOtherString;\n /** @default 16 */\n loaderSize?: number;\n /** @default false */\n isLoading?: boolean;\n\n /** @default false */\n disabled?: boolean;\n /** @default false */\n isSmall?: boolean;\n /** @default false */\n isSubmit?: boolean;\n\n onClickWithValue?: (value: Value) => void;\n} & OmitProps<React.ComponentProps<\"button\">, \"style\" | \"defaultValue\" | \"translate\" | \"value\"> &\n ComponentStyle &\n ComponentHoverStyle;\n\ntype ButtonComponent = {\n <Value>(props: ButtonProps<Value>): React.ReactElement;\n secondary: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n destructive: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n icon: <Value>(\n props: OmitProps<ButtonProps<Value>, \"icon\" | \"width\" | \"height\" | \"isSmall\"> & {\n icon: IconName | AnyOtherString;\n /** @default 16 */\n size?: number;\n /** @default \"#000000\" */\n backgroundButtonColor?: string;\n },\n ) => React.ReactElement;\n upload: <Value>(\n props: OmitProps<ButtonProps<Value>, \"onClick\"> & {\n accept?: ComponentProps<\"input\">[\"accept\"];\n /** @default false */\n multiple?: boolean;\n onUpload?: (files: FileList | null) => void;\n },\n ) => React.ReactElement;\n};\n\nconst ButtonComponent: ButtonComponent = function Button<Value>({\n href,\n text,\n value,\n download,\n target,\n\n icon,\n iconPosition = \"left\",\n iconColor,\n iconSize,\n\n image,\n imagePosition = \"left\",\n imageWidth,\n imageHeight,\n\n loaderName,\n loaderSize,\n isLoading,\n\n disabled,\n isSmall,\n isSubmit,\n\n onClick,\n onClickWithValue,\n ...props\n}: ButtonProps<Value>) {\n const theme = useTheme();\n const isLoadingHook = useLoader(loaderName);\n const betterHtmlContext = useBetterHtmlContext();\n\n const isLoadingElement = isLoading ?? isLoadingHook;\n\n const styledComponentStyles = useStyledComponentStyles(\n {\n ...betterHtmlContext.components.button?.default,\n ...props,\n },\n theme,\n );\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n const onClickElement = useCallback(\n (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n onClick?.(event);\n onClickWithValue?.(value as any);\n },\n [onClick, onClickWithValue, value],\n );\n\n const iconComponent = icon ? (\n <Div.row height={20} alignItems=\"center\" justifyContent=\"center\">\n <Icon\n name={icon}\n color={iconColor ?? props.color ?? theme.colors.base}\n size={iconSize ?? parseInt(styledComponentStyles.normalStyle.fontSize?.toString() ?? \"16\")}\n />\n </Div.row>\n ) : undefined;\n const imageComponent = image ? (\n <Image\n name={image}\n color={iconColor ?? props.color ?? theme.colors.base}\n width={imageWidth ?? parseInt(styledComponentStyles.normalStyle.fontSize?.toString() ?? \"16\")}\n height={imageHeight}\n />\n ) : undefined;\n\n return (\n <ButtonElement\n as={(href ? \"a\" : \"button\") as any}\n theme={theme}\n isSmall={isSmall}\n withText={text !== undefined}\n isLoading={isLoadingElement}\n disabled={disabled}\n href={href}\n download={download}\n target={target}\n type={isSubmit && !isLoadingElement ? \"submit\" : \"button\"}\n onClick={!disabled && !isLoadingElement ? onClickElement : undefined}\n {...styledComponentStyles}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n >\n <Div.row\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={10}\n pointerEvents=\"none\"\n opacity={isLoadingElement ? 0 : 1}\n transition={theme.styles.transition}\n >\n {iconPosition === \"left\" && iconComponent}\n {imagePosition === \"left\" && imageComponent}\n\n {text}\n\n {iconPosition === \"right\" && iconComponent}\n {imagePosition === \"right\" && imageComponent}\n </Div.row>\n\n <Div.row\n position=\"absolute\"\n width=\"100%\"\n height=\"100%\"\n top={0}\n left={0}\n pointerEvents=\"none\"\n alignItems=\"center\"\n justifyContent=\"center\"\n opacity={isLoadingElement ? 1 : 0}\n transition={theme.styles.transition}\n >\n <Loader\n color={(props.color as Color) ?? theme.colors.base}\n size={loaderSize}\n disabled={!isLoadingElement}\n />\n </Div.row>\n </ButtonElement>\n );\n} as any;\n\nButtonComponent.secondary = function Secondary({ className, ...props }) {\n const theme = useTheme();\n const betterHtmlContext = useBetterHtmlContext();\n\n return (\n <ButtonComponent\n {...betterHtmlContext.components.button?.secondary}\n className={`secondary${className ? ` ${className}` : \"\"}`}\n color={theme.colors.textPrimary}\n {...props}\n />\n );\n} as ButtonComponent[\"secondary\"];\n\nButtonComponent.destructive = function Destructive(props) {\n const theme = useTheme();\n const betterHtmlContext = useBetterHtmlContext();\n\n return (\n <ButtonComponent\n {...betterHtmlContext.components.button?.destructive}\n backgroundColor={theme.colors.error}\n color={theme.colors.base}\n {...props}\n />\n );\n} as ButtonComponent[\"destructive\"];\n\nButtonComponent.icon = function Icon({ size = 16, backgroundButtonColor, ...props }) {\n const theme = useTheme();\n const betterHtmlContext = useBetterHtmlContext();\n\n const buttonSize = size + theme.styles.space;\n const backgroundButtonColorReady = backgroundButtonColor ?? theme.colors.textPrimary;\n\n return (\n <ButtonComponent\n {...betterHtmlContext.components.button?.icon}\n width={buttonSize}\n height={buttonSize}\n color={theme.colors.textPrimary}\n backgroundColor={backgroundButtonColorReady + \"00\"}\n backgroundImage=\"none\"\n backgroundColorHover={backgroundButtonColorReady + \"20\"}\n borderRadius={999}\n iconSize={size}\n loaderSize={12}\n border=\"none\"\n padding={0}\n filterHover=\"none !important\"\n {...props}\n />\n );\n} as ButtonComponent[\"icon\"];\n\nButtonComponent.upload = function Upload({ accept, multiple, onUpload, ...props }) {\n const betterHtmlContext = useBetterHtmlContext();\n\n const onClickElement = useCallback(() => {\n const input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"file\");\n if (accept) input.setAttribute(\"accept\", accept);\n if (multiple) input.setAttribute(\"multiple\", \"true\");\n\n input.addEventListener(\"change\", () => {\n onUpload?.(input.files);\n });\n\n input.click();\n }, [accept]);\n\n return (\n <ButtonComponent\n {...betterHtmlContext.components.button?.upload}\n text=\"Upload\"\n icon=\"uploadCloud\"\n onClick={onClickElement}\n {...props}\n />\n );\n} as ButtonComponent[\"upload\"];\n\nconst Button = memo(ButtonComponent) as any as typeof ButtonComponent & {\n secondary: typeof ButtonComponent.secondary;\n destructive: typeof ButtonComponent.destructive;\n icon: typeof ButtonComponent.icon;\n upload: typeof ButtonComponent.upload;\n};\n\nButton.secondary = ButtonComponent.secondary;\nButton.destructive = ButtonComponent.destructive;\nButton.icon = ButtonComponent.icon;\nButton.upload = ButtonComponent.upload;\n\nexport default Button;\n","import { memo } from \"react\";\n\nimport { ComponentMarginProps } from \"../types/components\";\n\nimport Div from \"./Div\";\nimport Text from \"./Text\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\ntype DividerProps = {\n /** @default 1 */\n width?: number;\n /** @default border */\n backgroundColor?: string;\n} & ComponentMarginProps;\n\nexport type VerticalDividerProps = DividerProps & {\n /** @default \"100%\" */\n height?: number;\n};\n\nexport type HorizontalDividerProps = DividerProps & {\n text?: string;\n /** @default textSecondary */\n textColor?: string;\n};\n\nexport default {\n vertical: memo(function Divider({ width = 1, backgroundColor, height, ...props }: VerticalDividerProps) {\n const theme = useTheme();\n\n return (\n <Div\n width={width}\n height={height ?? \"100%\"}\n flexShrink={0}\n backgroundColor={backgroundColor ?? theme.colors.border}\n {...props}\n />\n );\n }),\n horizontal: memo(function Divider({\n width = 1,\n backgroundColor,\n text,\n textColor,\n ...props\n }: HorizontalDividerProps) {\n const theme = useTheme();\n\n return (\n <Div.row width=\"100%\" alignItems=\"center\" gap={text ? theme.styles.space : undefined} {...props}>\n <Div flex={1} height={width} flexShrink={0} backgroundColor={backgroundColor ?? theme.colors.border} />\n\n {text && <Text color={textColor ?? theme.colors.textSecondary}>{text}</Text>}\n\n <Div flex={1} height={width} flexShrink={0} backgroundColor={backgroundColor ?? theme.colors.border} />\n </Div.row>\n );\n }),\n};\n","import { memo, useCallback, forwardRef, useImperativeHandle, useRef, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport { ColorTheme, Theme } from \"../types/theme\";\nimport { ComponentPropWithRef } from \"../types/components\";\nimport { AnyOtherString, OmitProps } from \"../types/app\";\nimport { LoaderName } from \"../types/loader\";\n\nimport { useUrlQuery } from \"../utils/hooks\";\n\nimport Div from \"./Div\";\nimport Button from \"./Button\";\nimport Text from \"./Text\";\nimport Divider from \"./Divider\";\nimport { useBetterHtmlContext, usePlugin, useTheme } from \"./BetterHtmlProvider\";\n\nexport type ModalProps = {\n /**\n * If you want to have a small modal, you can use 660px as it looks good on most screens.\n *\n * @default 30% smaller than app.contentMaxWidth\n * */\n maxWidth?: number;\n title?: string;\n titleColor?: string;\n description?: string;\n descriptionColor?: string;\n headerBackgroundColor?: string;\n /** @requires ReactRouterDomPlugin */\n name?: string;\n overflow?: React.CSSProperties[\"overflow\"];\n onOpen?: () => void;\n onClose?: () => void;\n children?: React.ReactNode;\n};\n\nexport type ModalRef = {\n open: () => void;\n close: () => void;\n isOpened: boolean;\n};\n\ntype ModalComponent = {\n (props: ComponentPropWithRef<ModalRef, ModalProps>): React.ReactElement;\n confirmation: (\n props: ComponentPropWithRef<\n ModalRef,\n OmitProps<ModalProps, \"maxWidth\" | \"children\" | \"overflow\"> & {\n continueButtonLoaderName?: LoaderName | AnyOtherString;\n onContinue?: () => void;\n onCancel?: () => void;\n }\n >,\n ) => React.ReactElement;\n destructive: (\n props: ComponentPropWithRef<\n ModalRef,\n OmitProps<ModalProps, \"maxWidth\" | \"children\" | \"overflow\"> & {\n deleteButtonLoaderName?: LoaderName | AnyOtherString;\n onDelete?: () => void;\n onCancel?: () => void;\n }\n >,\n ) => React.ReactElement;\n};\n\nconst DialogStylesElement = styled.dialog.withConfig({\n shouldForwardProp: (prop) => ![\"theme\", \"colorTheme\", \"opacity\"].includes(prop),\n})<{ theme: Theme; colorTheme: ColorTheme; opacity?: number }>`\n width: 100%;\n max-width: none;\n height: 100%;\n max-height: none;\n color: ${(props) => props.theme.colors.textPrimary};\n border: none;\n outline: none;\n background-color: transparent;\n margin: auto auto;\n padding-inline: ${(props) => props.theme.styles.gap}px;\n opacity: ${(props) => props.opacity};\n transition: ${(props) => props.theme.styles.transition};\n\n &::backdrop {\n background-color: ${(props) => (props.colorTheme === \"light\" ? \"#000000a0\" : \"#222222e0\")};\n opacity: ${(props) => props.opacity};\n transition: ${(props) => props.theme.styles.transition};\n }\n\n @keyframes fadeInAnimation {\n from {\n transform: translateY(${(props) => props.theme.styles.space}px);\n }\n to {\n transform: translateY(0px);\n }\n }\n\n @keyframes fadeOutAnimation {\n from {\n transform: translateY(0px);\n }\n to {\n transform: translateY(${(props) => props.theme.styles.space}px);\n }\n }\n`;\n\nconst ModalComponent: ModalComponent = forwardRef(function Modal(\n {\n maxWidth,\n title,\n titleColor,\n description,\n descriptionColor,\n headerBackgroundColor,\n name,\n overflow,\n onOpen,\n onClose,\n children,\n }: ModalProps,\n ref: React.ForwardedRef<ModalRef>,\n) {\n const reactRouterDomPlugin = usePlugin(\"react-router-dom\");\n const urlQuery = reactRouterDomPlugin ? useUrlQuery() : undefined;\n\n const theme = useTheme();\n const { app, colorTheme } = useBetterHtmlContext();\n\n const dialogRef = useRef<HTMLDialogElement>(null);\n\n const [isOpened, setIsOpened] = useState<boolean>(false);\n const [isOpenedLate, setIsOpenedLate] = useState<boolean>(false);\n\n const onClickOpen = useCallback(() => {\n dialogRef.current?.showModal();\n\n setIsOpened(true);\n setIsOpenedLate(true);\n\n if (urlQuery && name)\n urlQuery.setQuery(\n {\n [`${name}-modal`]: \"opened\",\n },\n false,\n );\n\n onOpen?.();\n }, [onOpen, urlQuery, name]);\n const onClickClose = useCallback(() => {\n setIsOpened(false);\n onClose?.();\n\n if (urlQuery && name) urlQuery.removeQuery(`${name}-modal`, false);\n\n setTimeout(() => {\n dialogRef.current?.close();\n setIsOpenedLate(false);\n }, 0.2 * 1000);\n }, [onClose, urlQuery, name]);\n\n useImperativeHandle(\n ref,\n (): ModalRef => {\n return {\n open: onClickOpen,\n close: onClickClose,\n isOpened,\n };\n },\n [onClickOpen, onClickClose, isOpened],\n );\n\n return (\n <DialogStylesElement\n theme={theme}\n colorTheme={colorTheme}\n opacity={!isOpened ? 0 : 1}\n onClose={onClickClose}\n ref={dialogRef}\n >\n {isOpenedLate ? (\n <Div.column\n position=\"relative\"\n width=\"100%\"\n maxWidth={maxWidth ?? app.contentMaxWidth / 1.3}\n minHeight={`calc(100% - ${theme.styles.space * 2}px)`}\n alignItems=\"center\"\n justifyContent=\"center\"\n marginBlock={theme.styles.space}\n marginInline=\"auto\"\n transform={`translateY(${theme.styles.space}px)`}\n transition={theme.styles.transition}\n animation={isOpened ? \"fadeInAnimation 0.2s ease forwards\" : \"fadeOutAnimation 0.2s ease forwards\"}\n >\n <Div\n position=\"relative\"\n width=\"100%\"\n minHeight={32 + theme.styles.space * 2}\n backgroundColor={theme.colors.backgroundBase}\n borderRadius={theme.styles.borderRadius * 2}\n paddingInline={!title ? theme.styles.space + theme.styles.gap : undefined}\n paddingBlock={!title ? theme.styles.space : undefined}\n overflow={overflow}\n >\n {title ? (\n <>\n <Div.row\n alignItems=\"center\"\n gap={theme.styles.gap}\n backgroundColor={headerBackgroundColor}\n borderTopLeftRadius={theme.styles.borderRadius * 2 - 1}\n borderTopRightRadius={theme.styles.borderRadius * 2 - 1}\n paddingInline={theme.styles.space + theme.styles.gap}\n paddingBlock={theme.styles.space}\n transition={theme.styles.transition}\n >\n <Div.column flex={1} gap={theme.styles.gap / 2}>\n <Text\n as=\"h1\"\n color={titleColor ?? theme.colors.textPrimary}\n transition={theme.styles.transition}\n >\n {title}\n </Text>\n\n {description && (\n <Text\n color={descriptionColor ?? theme.colors.textSecondary}\n transition={theme.styles.transition}\n >\n {description}\n </Text>\n )}\n </Div.column>\n\n <Button.icon\n icon=\"XMark\"\n marginTop={1}\n iconColor={titleColor}\n onClick={onClickClose}\n transition={theme.styles.transition}\n />\n </Div.row>\n\n <Divider.horizontal />\n </>\n ) : (\n <Div position=\"absolute\" top={theme.styles.space} right={theme.styles.space}>\n <Button.icon icon=\"XMark\" onClick={onClickClose} />\n </Div>\n )}\n\n <Div\n paddingInline={title ? theme.styles.space + theme.styles.gap : undefined}\n paddingBlock={title ? theme.styles.space : undefined}\n >\n {children}\n </Div>\n </Div>\n </Div.column>\n ) : undefined}\n </DialogStylesElement>\n );\n}) as any;\n\nModalComponent.confirmation = forwardRef(function Confirmation(\n { continueButtonLoaderName, onContinue, onCancel, ...props },\n ref,\n) {\n const theme = useTheme();\n\n const modalRef = useRef<ModalRef>(null);\n\n const onCancelElement = useCallback(() => {\n onCancel?.();\n modalRef.current?.close();\n }, [onCancel]);\n const onContinueElement = useCallback(() => {\n onContinue?.();\n modalRef.current?.close();\n }, [onContinue]);\n\n useImperativeHandle(ref, (): ModalRef => modalRef.current as ModalRef, []);\n\n return (\n <Modal title=\"Are you sure?\" maxWidth={660} {...props} ref={modalRef}>\n <Text color={theme.colors.textSecondary}>\n Do you really want to continue? This action may be irreversible.\n </Text>\n\n <Div.row\n alignItems=\"center\"\n justifyContent=\"flex-end\"\n gap={theme.styles.gap}\n marginTop={theme.styles.space * 2}\n >\n <Button.secondary text=\"Cancel\" onClick={onCancelElement} />\n <Button text=\"Continue\" loaderName={continueButtonLoaderName} onClick={onContinueElement} />\n </Div.row>\n </Modal>\n );\n}) as ModalComponent[\"confirmation\"];\n\nModalComponent.destructive = forwardRef(function Destructive(\n { deleteButtonLoaderName, onDelete, onCancel, ...props },\n ref,\n) {\n const theme = useTheme();\n\n const modalRef = useRef<ModalRef>(null);\n\n const onCancelElement = useCallback(() => {\n onCancel?.();\n modalRef.current?.close();\n }, [onCancel]);\n const onDeleteElement = useCallback(() => {\n onDelete?.();\n modalRef.current?.close();\n }, [onDelete]);\n\n useImperativeHandle(ref, (): ModalRef => modalRef.current as ModalRef, []);\n\n return (\n <Modal title=\"Are you sure?\" maxWidth={660} {...props} ref={modalRef}>\n <Text color={theme.colors.textSecondary}>\n Do you really want to continue with the deleting of the item? This action may be irreversible.\n </Text>\n\n <Div.row\n alignItems=\"center\"\n justifyContent=\"flex-end\"\n gap={theme.styles.gap}\n marginTop={theme.styles.space * 2}\n >\n <Button.secondary text=\"Cancel\" onClick={onCancelElement} />\n <Button.destructive\n icon=\"trash\"\n text=\"Delete\"\n loaderName={deleteButtonLoaderName}\n onClick={onDeleteElement}\n />\n </Div.row>\n </Modal>\n );\n}) as ModalComponent[\"destructive\"];\n\nconst Modal = memo(ModalComponent) as any as typeof ModalComponent & {\n confirmation: typeof ModalComponent.confirmation;\n destructive: typeof ModalComponent.destructive;\n};\n\nModal.confirmation = ModalComponent.confirmation;\nModal.destructive = ModalComponent.destructive;\n\nexport default Modal;\n","import { memo } from \"react\";\n\nimport Div from \"./Div\";\nimport { useBetterHtmlContext, useTheme } from \"./BetterHtmlProvider\";\n\nexport type PageHolderProps = {\n /** @default false */\n noMaxContentWidth?: boolean;\n children?: React.ReactNode;\n};\n\nfunction PageHolder({ noMaxContentWidth, children }: PageHolderProps) {\n const theme = useTheme();\n const { app } = useBetterHtmlContext();\n\n return (\n <Div\n as=\"main\"\n width=\"100%\"\n maxWidth={!noMaxContentWidth ? app.contentMaxWidth : undefined}\n margin=\"0px auto\"\n padding={theme.styles.space}\n >\n {children}\n </Div>\n );\n}\n\nexport default memo(PageHolder);\n","import React, { memo } from \"react\";\n\nimport { ComponentMarginProps } from \"../types/components\";\n\nimport { useMediaQuery } from \"../utils/hooks\";\n\nimport Div from \"./Div\";\nimport Text, { TextAs } from \"./Text\";\nimport Image from \"./Image\";\nimport { useBetterHtmlContext, useTheme } from \"./BetterHtmlProvider\";\n\nexport type PageHeaderProps = {\n imageUrl?: string;\n imageSize?: number;\n title?: string;\n titleAs?: TextAs;\n titleRightElement?: React.ReactNode;\n description?: string;\n textAlign?: React.CSSProperties[\"textAlign\"];\n rightElement?: React.ReactNode;\n /** @default false */\n lightMode?: boolean;\n} & Pick<ComponentMarginProps, \"marginBottom\">;\n\nfunction PageHeader({\n imageUrl,\n imageSize = 60,\n title,\n titleAs,\n titleRightElement,\n description,\n textAlign,\n rightElement,\n lightMode,\n marginBottom,\n}: PageHeaderProps) {\n const theme = useTheme();\n const { app } = useBetterHtmlContext();\n const mediaQuery = useMediaQuery();\n\n return (\n <Div.row alignItems=\"center\" gap={theme.styles.space} marginBottom={marginBottom ?? theme.styles.space * 2}>\n {imageUrl && <Image.profileImage src={imageUrl} size={imageSize ?? (mediaQuery.size600 ? 46 : 60)} />}\n\n <Div.column\n alignItems={textAlign === \"center\" ? \"center\" : textAlign === \"right\" ? \"flex-end\" : undefined}\n flex={1}\n gap={theme.styles.gap / 2}\n >\n <Div.row\n alignItems=\"center\"\n justifyContent={textAlign === \"center\" ? \"center\" : textAlign === \"right\" ? \"flex-end\" : undefined}\n gap={theme.styles.space}\n >\n <Text\n as={titleAs ?? \"h1\"}\n textAlign={textAlign}\n color={lightMode ? theme.colors.base : theme.colors.textPrimary}\n >\n {title}\n </Text>\n\n {titleRightElement}\n </Div.row>\n\n {description && (\n <Text\n maxWidth={!mediaQuery.size600 ? app.contentMaxWidth * 0.6 : undefined}\n textAlign={textAlign}\n color={lightMode ? theme.colors.base : theme.colors.textSecondary}\n opacity={lightMode ? 0.7 : undefined}\n >\n {description}\n </Text>\n )}\n </Div.column>\n\n {rightElement}\n </Div.row>\n );\n}\n\nexport default memo(PageHeader);\n","import { forwardRef, memo } from \"react\";\n\nimport { ComponentPropWithRef } from \"../types/components\";\nimport { OmitProps } from \"../types/app\";\n\nimport Div from \"./Div\";\nimport Text from \"./Text\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nexport type ChipProps = {\n text: string;\n /** @default theme.colors.textPrimary */\n color?: string;\n /** @default backgroundSecondary */\n backgroundColor?: string;\n /** @default theme.styles.borderRadius / 1.3 */\n borderRadius?: number;\n};\n\ntype ChipComponentType = {\n (props: ComponentPropWithRef<HTMLDivElement, ChipProps>): React.ReactElement;\n circle: (props: ComponentPropWithRef<HTMLDivElement, OmitProps<ChipProps, \"borderRadius\">>) => React.ReactElement;\n};\n\nconst ChipComponent: ChipComponentType = forwardRef(function Chip(\n { text, color, backgroundColor, borderRadius }: ChipProps,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const theme = useTheme();\n\n return (\n <Div\n width=\"fit-content\"\n backgroundColor={backgroundColor ?? theme.colors.backgroundSecondary}\n borderRadius={borderRadius ?? theme.styles.borderRadius / 1.3}\n paddingBlock={theme.styles.gap}\n paddingInline={theme.styles.space}\n ref={ref}\n >\n <Text color={color ?? theme.colors.textPrimary}>{text}</Text>\n </Div>\n );\n}) as any;\n\nChipComponent.circle = forwardRef(function Circle(props, ref) {\n return <ChipComponent borderRadius={999} ref={ref} {...props} />;\n}) as ChipComponentType[\"circle\"];\n\nconst Chip = memo(ChipComponent) as any as typeof ChipComponent & {\n circle: typeof ChipComponent.circle;\n};\n\nChip.circle = ChipComponent.circle;\n\nexport default Chip;\n","import React, { forwardRef, memo, useCallback, useState, useEffect, useMemo, useRef } from \"react\";\nimport styled from \"styled-components\";\n\nimport { countries } from \"../constants/countries\";\n\nimport { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from \"../types/components\";\nimport { AnyOtherString, OmitProps } from \"../types/app\";\nimport { Theme } from \"../types/theme\";\nimport { IconName } from \"../types/icon\";\nimport { Country } from \"../types/countries\";\n\nimport {\n useBooleanState,\n useComponentInputFieldDateProps,\n useComponentPropsWithExcludedStyle,\n useComponentPropsWithoutStyle,\n useComponentPropsWithPrefix,\n useDebounceState,\n useStyledComponentStyles,\n} from \"../utils/hooks\";\n\nimport Text from \"./Text\";\nimport Div from \"./Div\";\nimport Icon from \"./Icon\";\nimport Button from \"./Button\";\nimport Label from \"./Label\";\nimport Dropdown, { DropdownOption } from \"./Dropdown\";\nimport Image from \"./Image\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nconst InputElement = styled.input.withConfig({\n shouldForwardProp: (prop) => ![\"theme\", \"withLeftIcon\", \"withRightIcon\", \"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{\n theme: Theme;\n withLeftIcon?: boolean;\n withRightIcon?: boolean;\n normalStyle: ComponentStyle;\n hoverStyle: ComponentStyle;\n}>`\n position: relative;\n width: 100%;\n font-family: ${(props) => props.theme.styles.fontFamily};\n font-size: 16px;\n line-height: 20px;\n color: ${(props) => props.theme.colors.textPrimary};\n background: ${(props) => props.theme.colors.backgroundContent};\n border: 1px solid ${(props) => props.theme.colors.border};\n border-radius: ${(props) => props.theme.styles.borderRadius}px;\n outline: none;\n padding: ${(props) =>\n `${(props.theme.styles.space + props.theme.styles.gap) / 2}px ${\n props.theme.styles.space + props.theme.styles.gap\n }px`};\n padding-left: ${(props) =>\n props.withLeftIcon ? `${props.theme.styles.space + 16 + props.theme.styles.space - 1}px` : undefined};\n padding-right: ${(props) =>\n props.withRightIcon ? `${props.theme.styles.space + 16 + props.theme.styles.space - 1}px` : undefined};\n transition: ${(props) => props.theme.styles.transition};\n\n &::placeholder {\n color: ${(props) => props.theme.colors.textSecondary}80;\n }\n\n &:focus {\n border-color: ${(props) => props.theme.colors.primary};\n }\n\n &:disabled {\n filter: brightness(0.9);\n cursor: not-allowed;\n }\n\n &[type=\"date\"]::-webkit-calendar-picker-indicator,\n &[type=\"datetime-local\"]::-webkit-calendar-picker-indicator,\n &[type=\"time\"]::-webkit-calendar-picker-indicator {\n display: none;\n -webkit-appearance: none;\n }\n\n &.react-better-html-phone-number-holder {\n border-right: none;\n border-top-right-radius: 0px;\n border-bottom-right-radius: 0px;\n }\n\n &.react-better-html-phone-number {\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n }\n\n &.react-better-html-dropdown {\n padding-right: ${(props) => props.theme.styles.space + 16 + props.theme.styles.space - 1}px;\n\n &.react-better-html-dropdown-open {\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n }\n\n &.react-better-html-dropdown-open-late {\n z-index: 1001;\n }\n }\n\n &.react-better-html-inputField-dateTime-opened {\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n }\n\n &.react-better-html-inputField-dateTime-opened-late {\n z-index: 1001;\n }\n\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nconst TextareaElement = styled.textarea.withConfig({\n shouldForwardProp: (prop) => ![\"theme\", \"withLeftIcon\", \"withRightIcon\", \"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{\n theme: Theme;\n withLeftIcon?: boolean;\n withRightIcon?: boolean;\n normalStyle: ComponentStyle;\n hoverStyle: ComponentStyle;\n}>`\n width: 100%;\n min-height: 3lh;\n max-height: 8lh;\n font-family: ${(props) => props.theme.styles.fontFamily};\n font-size: 16px;\n line-height: 20px;\n color: ${(props) => props.theme.colors.textPrimary};\n background: ${(props) => props.theme.colors.backgroundContent};\n border: 1px solid ${(props) => props.theme.colors.border};\n border-radius: ${(props) => props.theme.styles.borderRadius}px;\n outline: none;\n padding: ${(props) =>\n `${(props.theme.styles.gap + props.theme.styles.space) / 2}px ${\n props.theme.styles.space + props.theme.styles.gap\n }px`};\n padding-left: ${(props) =>\n props.withLeftIcon ? `${props.theme.styles.space + 16 + props.theme.styles.space - 1}px` : undefined};\n padding-right: ${(props) =>\n props.withRightIcon ? `${props.theme.styles.space + 16 + props.theme.styles.space - 1}px` : undefined};\n resize: vertical;\n transition: border-color ${(props) => props.theme.styles.transition};\n\n &::placeholder {\n color: ${(props) => props.theme.colors.textSecondary}80;\n }\n\n &:focus {\n border-color: ${(props) => props.theme.colors.primary};\n }\n\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nconst hours = Array.from({ length: 24 }, (_, index) => index);\nconst minutes = Array.from({ length: 60 }, (_, index) => index);\n\nexport type InputFieldProps = {\n label?: string;\n labelColor?: string;\n errorText?: string;\n infoText?: string;\n leftIcon?: IconName | AnyOtherString;\n rightIcon?: IconName | AnyOtherString;\n insideInputFieldComponent?: React.ReactNode;\n /** @default false */\n withDebounce?: boolean;\n /** @default 0.5s */\n debounceDelay?: number;\n onChangeValue?: (value: string) => void;\n onClickRightIcon?: () => void;\n holderRef?: React.ForwardedRef<HTMLDivElement>;\n} & OmitProps<React.ComponentProps<\"input\">, \"style\" | \"ref\"> &\n ComponentStyle &\n ComponentHoverStyle;\n\nexport type TextareaFieldProps = OmitProps<InputFieldProps, \"type\"> &\n OmitProps<React.ComponentProps<\"textarea\">, \"style\" | \"ref\">;\n\ntype InputFieldComponentType = {\n (props: ComponentPropWithRef<HTMLInputElement, InputFieldProps>): React.ReactElement;\n multiline: (props: ComponentPropWithRef<HTMLTextAreaElement, TextareaFieldProps>) => React.ReactElement;\n email: (props: ComponentPropWithRef<HTMLInputElement, InputFieldProps>) => React.ReactElement;\n password: (props: ComponentPropWithRef<HTMLInputElement, InputFieldProps>) => React.ReactElement;\n search: (props: ComponentPropWithRef<HTMLInputElement, InputFieldProps>) => React.ReactElement;\n phoneNumber: (\n props: ComponentPropWithRef<HTMLInputElement, OmitProps<InputFieldProps, \"type\">>,\n ) => React.ReactElement;\n date: (props: ComponentPropWithRef<HTMLInputElement, InputFieldProps>) => React.ReactElement;\n dateTime: (props: ComponentPropWithRef<HTMLInputElement, InputFieldProps>) => React.ReactElement;\n time: (props: ComponentPropWithRef<HTMLInputElement, InputFieldProps>) => React.ReactElement;\n};\n\nconst InputFieldComponent: InputFieldComponentType = forwardRef(function InputField(\n {\n label,\n labelColor,\n errorText,\n infoText,\n leftIcon,\n rightIcon,\n insideInputFieldComponent,\n withDebounce,\n debounceDelay = 0.5,\n onChange,\n onChangeValue,\n onClickRightIcon,\n holderRef,\n required,\n placeholder,\n ...props\n }: InputFieldProps,\n ref: React.ForwardedRef<HTMLInputElement>,\n) {\n const theme = useTheme();\n const [_, debouncedValue, setDebouncedValue] = useDebounceState<string>(\n props.value?.toString() ?? \"\",\n debounceDelay,\n );\n\n const styledComponentStylesWithoutExcluded = useStyledComponentStyles(props, theme, true);\n const styledComponentStylesWithExcluded = useComponentPropsWithExcludedStyle(props);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n const onChangeElement = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n\n if (withDebounce) {\n onChange?.(event);\n setDebouncedValue(newValue);\n } else {\n onChange?.(event);\n onChangeValue?.(newValue);\n }\n },\n [onChange, onChangeValue, withDebounce],\n );\n\n useEffect(() => {\n if (!withDebounce) return;\n\n onChangeValue?.(debouncedValue);\n }, [withDebounce, onChangeValue, debouncedValue]);\n\n return (\n <Div.column width=\"100%\" gap={theme.styles.gap} {...styledComponentStylesWithExcluded} ref={holderRef}>\n {label && <Label text={label} color={labelColor} required={required} isError={!!errorText} />}\n\n <Div position=\"relative\" width=\"100%\">\n {leftIcon && (\n <Icon\n name={leftIcon}\n position=\"absolute\"\n top={46 / 2}\n left={theme.styles.space + 1}\n transform=\"translateY(-50%)\"\n pointerEvents=\"none\"\n zIndex={props.className?.includes(\"react-better-html-dropdown-open-late\") ? 1002 : 1}\n />\n )}\n\n <InputElement\n theme={theme}\n withLeftIcon={leftIcon !== undefined}\n withRightIcon={rightIcon !== undefined}\n required={required}\n placeholder={placeholder ?? label}\n onChange={onChangeElement}\n {...styledComponentStylesWithoutExcluded}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n ref={ref}\n />\n\n {rightIcon ? (\n onClickRightIcon ? (\n <Button.icon\n icon={rightIcon}\n position=\"absolute\"\n top={46 / 2}\n right={theme.styles.space + 1 - theme.styles.space / 2}\n transform=\"translateY(-50%)\"\n onClick={onClickRightIcon}\n />\n ) : (\n <Icon\n name={rightIcon}\n position=\"absolute\"\n top={46 / 2}\n right={theme.styles.space + 1}\n transform=\"translateY(-50%)\"\n pointerEvents=\"none\"\n />\n )\n ) : undefined}\n\n {insideInputFieldComponent}\n </Div>\n\n {(errorText || infoText) && (\n <Text\n as=\"span\"\n display=\"block\"\n fontSize={14}\n color={errorText ? theme.colors.error : labelColor ?? theme.colors.textSecondary}\n >\n {errorText || infoText}\n </Text>\n )}\n </Div.column>\n );\n}) as any;\n\nInputFieldComponent.multiline = forwardRef(function Multiline(\n {\n label,\n placeholder,\n errorText,\n infoText,\n leftIcon,\n rightIcon,\n onChange,\n onChangeValue,\n onClickRightIcon,\n required,\n ...props\n },\n ref,\n) {\n const theme = useTheme();\n\n const styledComponentStyles = useStyledComponentStyles(props, theme);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n const onChangeElement = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(event);\n onChangeValue?.(event.target.value);\n },\n [onChange, onChangeValue],\n );\n\n return (\n <Div.column gap={theme.styles.gap}>\n {label && <Label text={label} required={required} isError={!!errorText} />}\n\n <Div position=\"relative\" width=\"100%\">\n {leftIcon && (\n <Icon\n name={leftIcon}\n position=\"absolute\"\n top={46 / 2}\n left={theme.styles.space + 1}\n transform=\"translateY(-50%)\"\n pointerEvents=\"none\"\n />\n )}\n\n <TextareaElement\n theme={theme}\n withLeftIcon={leftIcon !== undefined}\n withRightIcon={rightIcon !== undefined}\n required={required}\n placeholder={placeholder ?? label}\n onChange={onChangeElement}\n {...styledComponentStyles}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n ref={ref}\n />\n\n {rightIcon ? (\n onClickRightIcon ? (\n <Button.icon\n icon={rightIcon}\n position=\"absolute\"\n top={46 / 2}\n right={theme.styles.space + 1 - theme.styles.space / 2}\n transform=\"translateY(-50%)\"\n onClick={onClickRightIcon}\n />\n ) : (\n <Icon\n name={rightIcon}\n position=\"absolute\"\n top={46 / 2}\n right={theme.styles.space + 1}\n transform=\"translateY(-50%)\"\n pointerEvents=\"none\"\n />\n )\n ) : undefined}\n </Div>\n\n {(errorText || infoText) && (\n <Text\n as=\"span\"\n display=\"block\"\n marginTop={theme.styles.gap / 2}\n color={errorText ? theme.colors.error : props.labelColor ?? theme.colors.textSecondary}\n fontSize={14}\n >\n {errorText || infoText}\n </Text>\n )}\n </Div.column>\n );\n}) as InputFieldComponentType[\"multiline\"];\n\nInputFieldComponent.email = forwardRef(function Email({ ...props }, ref) {\n return (\n <InputFieldComponent\n type=\"email\"\n placeholder=\"your@email.here\"\n autoComplete=\"email\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n ref={ref}\n {...props}\n />\n );\n}) as InputFieldComponentType[\"email\"];\n\nInputFieldComponent.password = forwardRef(function Password({ ...props }, ref) {\n const [isPassword, setIsPassword] = useBooleanState(true);\n\n return (\n <InputFieldComponent\n type={isPassword ? \"password\" : \"text\"}\n placeholder=\"******\"\n rightIcon={isPassword ? \"eye\" : \"eyeDashed\"}\n onClickRightIcon={setIsPassword.toggle}\n autoComplete=\"current-password\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n ref={ref}\n {...props}\n />\n );\n}) as InputFieldComponentType[\"password\"];\n\nInputFieldComponent.search = forwardRef(function Search({ ...props }, ref) {\n return <InputFieldComponent leftIcon=\"magnifyingGlass\" placeholder=\"Search...\" ref={ref} {...props} />;\n}) as InputFieldComponentType[\"search\"];\n\nInputFieldComponent.phoneNumber = forwardRef(function PhoneNumber(\n { label, value, onChangeValue, labelColor, ...props },\n ref,\n) {\n const theme = useTheme();\n\n const [dropdownValue, setDropdownValue] = useState<string>();\n const [inputFieldValue, setInputFieldValue] = useState<string>(value?.toString() ?? \"\");\n\n const renderOption = useCallback(\n (option: DropdownOption<string, Country>, index: number, isSelected: boolean): React.ReactNode => (\n <Div.row alignItems=\"center\" gap={theme.styles.gap}>\n <Image src={`https://flagcdn.com/w80/${option.data?.code.toString().toLowerCase()}.webp`} width={20} />\n <Text>{option.label}</Text>\n </Div.row>\n ),\n [],\n );\n const onChangeValueElement = useCallback(\n (value: string) => {\n const readyValue = value.replace(/\\D/g, \"\");\n\n setInputFieldValue(readyValue);\n onChangeValue?.(dropdownValue ? `+${dropdownValue}${readyValue}` : readyValue);\n },\n [onChangeValue, dropdownValue],\n );\n\n const options = useMemo<DropdownOption<string, Country>[]>(\n () =>\n countries.map((country) => ({\n value: country.phoneNumberExtension,\n label: `+${country.phoneNumberExtension}`,\n data: country,\n })),\n [],\n );\n const defaultValue = useMemo<string>(() => {\n const thisTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const initialDefaultValue = options.find((option) => option.data?.timeZone === thisTimeZone)?.value ?? \"\";\n setDropdownValue(initialDefaultValue);\n\n return initialDefaultValue;\n }, [options]);\n\n useEffect(() => {\n if (value === undefined || value === null) return;\n\n const newValue = value.toString();\n\n const country = countries.find(\n (country) =>\n country.phoneNumberExtension ===\n newValue.slice(\n newValue.startsWith(\"+\") ? 1 : 0,\n country.phoneNumberExtension.length + (newValue.startsWith(\"+\") ? 1 : 0),\n ),\n );\n\n if (!country) {\n setInputFieldValue(newValue);\n return;\n }\n\n setDropdownValue(country.phoneNumberExtension);\n setInputFieldValue(newValue.slice(country?.phoneNumberExtension.length + 1));\n }, [value]);\n\n return (\n <Div.column width=\"100%\" gap={theme.styles.gap}>\n {label && <Label text={label} color={labelColor} required={props.required} isError={!!props.errorText} />}\n\n <Div.row>\n <Dropdown\n options={options}\n renderOption={renderOption}\n width={130}\n minWidth={116}\n withSearch\n placeholder=\"+00\"\n inputFieldClassName=\"react-better-html-phone-number-holder\"\n defaultValue={defaultValue}\n value={dropdownValue}\n onChange={setDropdownValue}\n withoutClearButton\n />\n <InputFieldComponent\n placeholder={label ?? \"Phone number\"}\n className=\"react-better-html-phone-number\"\n value={inputFieldValue}\n onChangeValue={onChangeValueElement}\n ref={ref}\n {...props}\n />\n </Div.row>\n </Div.column>\n );\n}) as InputFieldComponentType[\"phoneNumber\"];\n\nInputFieldComponent.date = forwardRef(function Date({ className, onFocus, onBlur, ...props }, ref) {\n const theme = useTheme();\n\n const holderRef = useRef<HTMLDivElement>(null);\n\n const { internalValue, setInternalValue, inputFieldProps, insideInputFieldComponentProps } =\n useComponentInputFieldDateProps(props, holderRef);\n\n return (\n <InputFieldComponent\n type=\"date\"\n insideInputFieldComponent={\n <Div\n position=\"absolute\"\n top=\"100%\"\n left={0}\n width=\"100%\"\n maxHeight={300}\n backgroundColor={theme.colors.backgroundContent}\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n boxShadow=\"0px 10px 20px #00000020\"\n overflowY=\"auto\"\n {...insideInputFieldComponentProps}\n >\n Hello there\n </Div>\n }\n holderRef={holderRef}\n ref={ref}\n {...props}\n {...inputFieldProps}\n />\n );\n}) as InputFieldComponentType[\"date\"];\n\nInputFieldComponent.dateTime = forwardRef(function DateTime({ className, onFocus, onBlur, ...props }, ref) {\n const theme = useTheme();\n\n const holderRef = useRef<HTMLDivElement>(null);\n\n const { internalValue, setInternalValue, inputFieldProps, insideInputFieldComponentProps } =\n useComponentInputFieldDateProps(props, holderRef);\n\n return (\n <InputFieldComponent\n type=\"datetime-local\"\n insideInputFieldComponent={\n <Div\n position=\"absolute\"\n top=\"100%\"\n left={0}\n width=\"100%\"\n maxHeight={300}\n backgroundColor={theme.colors.backgroundContent}\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n boxShadow=\"0px 10px 20px #00000020\"\n overflowY=\"auto\"\n {...insideInputFieldComponentProps}\n >\n Hello there\n </Div>\n }\n holderRef={holderRef}\n ref={ref}\n {...props}\n {...inputFieldProps}\n />\n );\n}) as InputFieldComponentType[\"dateTime\"];\n\nInputFieldComponent.time = forwardRef(function Time({ ...props }, ref) {\n const theme = useTheme();\n\n const holderRef = useRef<HTMLDivElement>(null);\n const selectedHourRef = useRef<HTMLDivElement>(null);\n const selectedMinuteRef = useRef<HTMLDivElement>(null);\n\n const { internalValue, setInternalValue, inputFieldProps, insideInputFieldComponentProps, isOpen } =\n useComponentInputFieldDateProps(props, holderRef);\n\n const onClickHour = useCallback(\n (hour: number) => {\n const value = `${hour.toString().padStart(2, \"0\")}:${internalValue?.toString().split(\":\")[1] || \"00\"}`;\n\n inputFieldProps.onChangeValue?.(value);\n setInternalValue(value);\n },\n [internalValue, inputFieldProps.onChangeValue],\n );\n const onClickMinute = useCallback(\n (minute: number) => {\n const value = `${internalValue?.toString().split(\":\")[0] || \"00\"}:${minute.toString().padStart(2, \"0\")}`;\n\n inputFieldProps.onChangeValue?.(value);\n setInternalValue(value);\n },\n [internalValue, inputFieldProps.onChangeValue],\n );\n\n useEffect(() => {\n if (isOpen && selectedHourRef.current)\n selectedHourRef.current.scrollIntoView({ block: \"nearest\", behavior: \"instant\" });\n\n if (isOpen && selectedMinuteRef.current)\n selectedMinuteRef.current.scrollIntoView({ block: \"nearest\", behavior: \"instant\" });\n }, [isOpen]);\n\n const valueHour = parseInt(internalValue?.toString().split(\":\")?.[0]).toString();\n const valueMinute = parseInt(internalValue?.toString().split(\":\")?.[1]).toString();\n\n const buttonWidth = 50;\n\n return (\n <InputFieldComponent\n type=\"time\"\n insideInputFieldComponent={\n <Div\n position=\"absolute\"\n top=\"100%\"\n left={0}\n width={buttonWidth * 2 + 2}\n height={300}\n backgroundColor={theme.colors.backgroundContent}\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n boxShadow=\"0px 10px 20px #00000020\"\n overflowY=\"auto\"\n {...insideInputFieldComponentProps}\n >\n <Div.row height=\"100%\">\n <Div className=\"react-better-html-no-scrollbar\" width={buttonWidth} height=\"100%\" overflowY=\"auto\">\n {hours.map((hour) => {\n const isSelected = hour.toString() === valueHour;\n\n return (\n <Div.row\n alignItems=\"center\"\n justifyContent=\"center\"\n color={isSelected ? theme.colors.base : theme.colors.textPrimary}\n backgroundColor={isSelected ? theme.colors.primary : theme.colors.backgroundContent}\n filterHover=\"brightness(0.9)\"\n cursor=\"pointer\"\n padding={`${theme.styles.space / 2}px ${theme.styles.space + theme.styles.gap}px`}\n value={hour}\n onClickWithValue={onClickHour}\n ref={isSelected ? selectedHourRef : undefined}\n key={hour}\n >\n <Text textAlign=\"center\">{hour.toString().padStart(2, \"0\")}</Text>\n </Div.row>\n );\n })}\n </Div>\n\n <Div className=\"react-better-html-no-scrollbar\" width={buttonWidth} height=\"100%\" overflowY=\"auto\">\n {minutes.map((minute) => {\n const isSelected = minute.toString() === valueMinute;\n\n return (\n <Div.row\n alignItems=\"center\"\n justifyContent=\"center\"\n color={isSelected ? theme.colors.base : theme.colors.textPrimary}\n backgroundColor={isSelected ? theme.colors.primary : theme.colors.backgroundContent}\n filterHover=\"brightness(0.9)\"\n cursor=\"pointer\"\n padding={`${theme.styles.space / 2}px ${theme.styles.space + theme.styles.gap}px`}\n value={minute}\n onClickWithValue={onClickMinute}\n ref={isSelected ? selectedMinuteRef : undefined}\n key={minute}\n >\n <Text textAlign=\"center\">{minute.toString().padStart(2, \"0\")}</Text>\n </Div.row>\n );\n })}\n </Div>\n </Div.row>\n </Div>\n }\n holderRef={holderRef}\n ref={ref}\n {...props}\n {...inputFieldProps}\n minWidth={buttonWidth * 2 + 2}\n />\n );\n}) as InputFieldComponentType[\"time\"];\n\nconst InputField = memo(InputFieldComponent) as any as typeof InputFieldComponent & {\n multiline: typeof InputFieldComponent.multiline;\n email: typeof InputFieldComponent.email;\n password: typeof InputFieldComponent.password;\n search: typeof InputFieldComponent.search;\n phoneNumber: typeof InputFieldComponent.phoneNumber;\n date: typeof InputFieldComponent.date;\n dateTime: typeof InputFieldComponent.dateTime;\n time: typeof InputFieldComponent.time;\n};\n\nInputField.multiline = InputFieldComponent.multiline;\nInputField.email = InputFieldComponent.email;\nInputField.password = InputFieldComponent.password;\nInputField.search = InputFieldComponent.search;\nInputField.phoneNumber = InputFieldComponent.phoneNumber;\nInputField.date = InputFieldComponent.date;\nInputField.dateTime = InputFieldComponent.dateTime;\nInputField.time = InputFieldComponent.time;\n\nexport default InputField;\n","import { Country } from \"../types/countries\";\n\nexport const countries: Country[] = [\n {\n name: \"Afghanistan\",\n code: \"AF\",\n timeZone: \"Asia/Kabul\",\n phoneNumberExtension: \"93\",\n },\n {\n name: \"Åland Islands\",\n code: \"AX\",\n timeZone: \"Europe/Mariehamn\",\n phoneNumberExtension: \"358\",\n },\n {\n name: \"Albania\",\n code: \"AL\",\n timeZone: \"Europe/Tirane\",\n phoneNumberExtension: \"355\",\n },\n {\n name: \"Algeria\",\n code: \"DZ\",\n timeZone: \"Africa/Algiers\",\n phoneNumberExtension: \"213\",\n },\n {\n name: \"United States of America\",\n code: \"US\",\n timeZone: \"America/New_York\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"American Samoa\",\n code: \"AS\",\n timeZone: \"Pacific/Pago_Pago\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"AndorrA\",\n code: \"AD\",\n timeZone: \"Europe/Andorra\",\n phoneNumberExtension: \"376\",\n },\n {\n name: \"Angola\",\n code: \"AO\",\n timeZone: \"Africa/Luanda\",\n phoneNumberExtension: \"244\",\n },\n {\n name: \"Anguilla\",\n code: \"AI\",\n timeZone: \"America/Anguilla\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Antarctica\",\n code: \"AQ\",\n timeZone: \"Antarctica/Casey\",\n phoneNumberExtension: \"672\",\n },\n {\n name: \"Antigua and Barbuda\",\n code: \"AG\",\n timeZone: \"America/Antigua\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Argentina\",\n code: \"AR\",\n timeZone: \"America/Argentina/Buenos_Aires\",\n phoneNumberExtension: \"54\",\n },\n {\n name: \"Armenia\",\n code: \"AM\",\n timeZone: \"Asia/Yerevan\",\n phoneNumberExtension: \"374\",\n },\n {\n name: \"Aruba\",\n code: \"AW\",\n timeZone: \"America/Aruba\",\n phoneNumberExtension: \"297\",\n },\n {\n name: \"Australia\",\n code: \"AU\",\n timeZone: \"Australia/Sydney\",\n phoneNumberExtension: \"61\",\n },\n {\n name: \"Austria\",\n code: \"AT\",\n timeZone: \"Europe/Vienna\",\n phoneNumberExtension: \"43\",\n },\n {\n name: \"Azerbaijan\",\n code: \"AZ\",\n timeZone: \"Asia/Baku\",\n phoneNumberExtension: \"994\",\n },\n {\n name: \"Bahamas\",\n code: \"BS\",\n timeZone: \"America/Nassau\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Bahrain\",\n code: \"BH\",\n timeZone: \"Asia/Bahrain\",\n phoneNumberExtension: \"973\",\n },\n {\n name: \"Bangladesh\",\n code: \"BD\",\n timeZone: \"Asia/Dhaka\",\n phoneNumberExtension: \"880\",\n },\n {\n name: \"Barbados\",\n code: \"BB\",\n timeZone: \"America/Barbados\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Belarus\",\n code: \"BY\",\n timeZone: \"Europe/Minsk\",\n phoneNumberExtension: \"375\",\n },\n {\n name: \"Belgium\",\n code: \"BE\",\n timeZone: \"Europe/Brussels\",\n phoneNumberExtension: \"32\",\n },\n {\n name: \"Belize\",\n code: \"BZ\",\n timeZone: \"America/Belize\",\n phoneNumberExtension: \"501\",\n },\n {\n name: \"Benin\",\n code: \"BJ\",\n timeZone: \"Africa/Porto-Novo\",\n phoneNumberExtension: \"229\",\n },\n {\n name: \"Bermuda\",\n code: \"BM\",\n timeZone: \"Atlantic/Bermuda\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Bhutan\",\n code: \"BT\",\n timeZone: \"Asia/Thimphu\",\n phoneNumberExtension: \"975\",\n },\n {\n name: \"Bolivia\",\n code: \"BO\",\n timeZone: \"America/La_Paz\",\n phoneNumberExtension: \"591\",\n },\n {\n name: \"Bosnia and Herzegovina\",\n code: \"BA\",\n timeZone: \"Europe/Sarajevo\",\n phoneNumberExtension: \"387\",\n },\n {\n name: \"Botswana\",\n code: \"BW\",\n timeZone: \"Africa/Gaborone\",\n phoneNumberExtension: \"267\",\n },\n {\n name: \"Bouvet Island\",\n code: \"BV\",\n timeZone: \"Europe/Oslo\",\n phoneNumberExtension: \"47\",\n },\n {\n name: \"Brazil\",\n code: \"BR\",\n timeZone: \"America/Sao_Paulo\",\n phoneNumberExtension: \"55\",\n },\n {\n name: \"British Indian Ocean Territory\",\n code: \"IO\",\n timeZone: \"Indian/Chagos\",\n phoneNumberExtension: \"246\",\n },\n {\n name: \"Brunei Darussalam\",\n code: \"BN\",\n timeZone: \"Asia/Brunei\",\n phoneNumberExtension: \"673\",\n },\n {\n name: \"Bulgaria\",\n code: \"BG\",\n timeZone: \"Europe/Sofia\",\n phoneNumberExtension: \"359\",\n phoneNumberFormat: \"XX XXX XXXX\",\n },\n {\n name: \"Burkina Faso\",\n code: \"BF\",\n timeZone: \"Africa/Ouagadougou\",\n phoneNumberExtension: \"226\",\n },\n {\n name: \"Burundi\",\n code: \"BI\",\n timeZone: \"Africa/Bujumbura\",\n phoneNumberExtension: \"257\",\n },\n {\n name: \"Cambodia\",\n code: \"KH\",\n timeZone: \"Asia/Phnom_Penh\",\n phoneNumberExtension: \"855\",\n },\n {\n name: \"Cameroon\",\n code: \"CM\",\n timeZone: \"Africa/Douala\",\n phoneNumberExtension: \"237\",\n },\n {\n name: \"Canada\",\n code: \"CA\",\n timeZone: \"America/Toronto\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Cape Verde\",\n code: \"CV\",\n timeZone: \"Atlantic/Cape_Verde\",\n phoneNumberExtension: \"238\",\n },\n {\n name: \"Cayman Islands\",\n code: \"KY\",\n timeZone: \"America/Cayman\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Central African Republic\",\n code: \"CF\",\n timeZone: \"Africa/Bangui\",\n phoneNumberExtension: \"236\",\n },\n {\n name: \"Chad\",\n code: \"TD\",\n timeZone: \"Africa/Ndjamena\",\n phoneNumberExtension: \"235\",\n },\n {\n name: \"Chile\",\n code: \"CL\",\n timeZone: \"America/Santiago\",\n phoneNumberExtension: \"56\",\n },\n {\n name: \"China\",\n code: \"CN\",\n timeZone: \"Asia/Shanghai\",\n phoneNumberExtension: \"86\",\n },\n {\n name: \"Christmas Island\",\n code: \"CX\",\n timeZone: \"Indian/Christmas\",\n phoneNumberExtension: \"61\",\n },\n {\n name: \"Cocos (Keeling) Islands\",\n code: \"CC\",\n timeZone: \"Indian/Cocos\",\n phoneNumberExtension: \"61\",\n },\n {\n name: \"Colombia\",\n code: \"CO\",\n timeZone: \"America/Bogota\",\n phoneNumberExtension: \"57\",\n },\n {\n name: \"Comoros\",\n code: \"KM\",\n timeZone: \"Indian/Comoro\",\n phoneNumberExtension: \"269\",\n },\n {\n name: \"Congo\",\n code: \"CG\",\n timeZone: \"Africa/Brazzaville\",\n phoneNumberExtension: \"242\",\n },\n {\n name: \"Congo, The Democratic Republic of the\",\n code: \"CD\",\n timeZone: \"Africa/Kinshasa\",\n phoneNumberExtension: \"243\",\n },\n {\n name: \"Cook Islands\",\n code: \"CK\",\n timeZone: \"Pacific/Rarotonga\",\n phoneNumberExtension: \"682\",\n },\n {\n name: \"Costa Rica\",\n code: \"CR\",\n timeZone: \"America/Costa_Rica\",\n phoneNumberExtension: \"506\",\n },\n {\n name: \"Cote D'Ivoire\",\n code: \"CI\",\n timeZone: \"Africa/Abidjan\",\n phoneNumberExtension: \"225\",\n },\n {\n name: \"Croatia\",\n code: \"HR\",\n timeZone: \"Europe/Zagreb\",\n phoneNumberExtension: \"385\",\n },\n {\n name: \"Cuba\",\n code: \"CU\",\n timeZone: \"America/Havana\",\n phoneNumberExtension: \"53\",\n },\n {\n name: \"Cyprus\",\n code: \"CY\",\n timeZone: \"Asia/Nicosia\",\n phoneNumberExtension: \"357\",\n },\n {\n name: \"Czech Republic\",\n code: \"CZ\",\n timeZone: \"Europe/Prague\",\n phoneNumberExtension: \"420\",\n },\n {\n name: \"Denmark\",\n code: \"DK\",\n timeZone: \"Europe/Copenhagen\",\n phoneNumberExtension: \"45\",\n },\n {\n name: \"Djibouti\",\n code: \"DJ\",\n timeZone: \"Africa/Djibouti\",\n phoneNumberExtension: \"253\",\n },\n {\n name: \"Dominica\",\n code: \"DM\",\n timeZone: \"America/Dominica\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Dominican Republic\",\n code: \"DO\",\n timeZone: \"America/Santo_Domingo\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Ecuador\",\n code: \"EC\",\n timeZone: \"America/Guayaquil\",\n phoneNumberExtension: \"593\",\n },\n {\n name: \"Egypt\",\n code: \"EG\",\n timeZone: \"Africa/Cairo\",\n phoneNumberExtension: \"20\",\n },\n {\n name: \"El Salvador\",\n code: \"SV\",\n timeZone: \"America/El_Salvador\",\n phoneNumberExtension: \"503\",\n },\n {\n name: \"Equatorial Guinea\",\n code: \"GQ\",\n timeZone: \"Africa/Malabo\",\n phoneNumberExtension: \"240\",\n },\n {\n name: \"Eritrea\",\n code: \"ER\",\n timeZone: \"Africa/Asmara\",\n phoneNumberExtension: \"291\",\n },\n {\n name: \"Estonia\",\n code: \"EE\",\n timeZone: \"Europe/Tallinn\",\n phoneNumberExtension: \"372\",\n },\n {\n name: \"Ethiopia\",\n code: \"ET\",\n timeZone: \"Africa/Addis_Ababa\",\n phoneNumberExtension: \"251\",\n },\n {\n name: \"Falkland Islands (Malvinas)\",\n code: \"FK\",\n timeZone: \"Atlantic/Stanley\",\n phoneNumberExtension: \"500\",\n },\n {\n name: \"Faroe Islands\",\n code: \"FO\",\n timeZone: \"Atlantic/Faroe\",\n phoneNumberExtension: \"298\",\n },\n {\n name: \"Fiji\",\n code: \"FJ\",\n timeZone: \"Pacific/Fiji\",\n phoneNumberExtension: \"679\",\n },\n {\n name: \"Finland\",\n code: \"FI\",\n timeZone: \"Europe/Helsinki\",\n phoneNumberExtension: \"358\",\n },\n {\n name: \"France\",\n code: \"FR\",\n timeZone: \"Europe/Paris\",\n phoneNumberExtension: \"33\",\n },\n {\n name: \"French Guiana\",\n code: \"GF\",\n timeZone: \"America/Cayenne\",\n phoneNumberExtension: \"594\",\n },\n {\n name: \"French Polynesia\",\n code: \"PF\",\n timeZone: \"Pacific/Tahiti\",\n phoneNumberExtension: \"689\",\n },\n {\n name: \"French Southern Territories\",\n code: \"TF\",\n timeZone: \"Indian/Kerguelen\",\n phoneNumberExtension: \"262\",\n },\n {\n name: \"Gabon\",\n code: \"GA\",\n timeZone: \"Africa/Libreville\",\n phoneNumberExtension: \"241\",\n },\n {\n name: \"Gambia\",\n code: \"GM\",\n timeZone: \"Africa/Banjul\",\n phoneNumberExtension: \"220\",\n },\n {\n name: \"Georgia\",\n code: \"GE\",\n timeZone: \"Asia/Tbilisi\",\n phoneNumberExtension: \"995\",\n },\n {\n name: \"Germany\",\n code: \"DE\",\n timeZone: \"Europe/Berlin\",\n phoneNumberExtension: \"49\",\n phoneNumberFormat: \"XXXX XXXXXX\",\n },\n {\n name: \"Ghana\",\n code: \"GH\",\n timeZone: \"Africa/Accra\",\n phoneNumberExtension: \"233\",\n },\n {\n name: \"Gibraltar\",\n code: \"GI\",\n timeZone: \"Europe/Gibraltar\",\n phoneNumberExtension: \"350\",\n },\n {\n name: \"Greece\",\n code: \"GR\",\n timeZone: \"Europe/Athens\",\n phoneNumberExtension: \"30\",\n },\n {\n name: \"Greenland\",\n code: \"GL\",\n timeZone: \"America/Godthab\",\n phoneNumberExtension: \"299\",\n },\n {\n name: \"Grenada\",\n code: \"GD\",\n timeZone: \"America/Grenada\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Guadeloupe\",\n code: \"GP\",\n timeZone: \"America/Guadeloupe\",\n phoneNumberExtension: \"590\",\n },\n {\n name: \"Guam\",\n code: \"GU\",\n timeZone: \"Pacific/Guam\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Guatemala\",\n code: \"GT\",\n timeZone: \"America/Guatemala\",\n phoneNumberExtension: \"502\",\n },\n {\n name: \"United Kingdom\",\n code: \"GB\",\n timeZone: \"Europe/London\",\n phoneNumberExtension: \"44\",\n phoneNumberFormat: \"XX XXXX XXXX\",\n },\n {\n name: \"Guernsey\",\n code: \"GG\",\n timeZone: \"Europe/Guernsey\",\n phoneNumberExtension: \"44\",\n phoneNumberFormat: \"XX XXXX XXXX\",\n },\n {\n name: \"Guinea\",\n code: \"GN\",\n timeZone: \"Africa/Conakry\",\n phoneNumberExtension: \"224\",\n },\n {\n name: \"Guinea-Bissau\",\n code: \"GW\",\n timeZone: \"Africa/Bissau\",\n phoneNumberExtension: \"245\",\n },\n {\n name: \"Guyana\",\n code: \"GY\",\n timeZone: \"America/Guyana\",\n phoneNumberExtension: \"592\",\n },\n {\n name: \"Haiti\",\n code: \"HT\",\n timeZone: \"America/Port-au-Prince\",\n phoneNumberExtension: \"509\",\n },\n {\n name: \"Heard Island and Mcdonald Islands\",\n code: \"HM\",\n timeZone: \"Indian/Kerguelen\",\n phoneNumberExtension: \"672\",\n },\n {\n name: \"Holy See (Vatican City State)\",\n code: \"VA\",\n timeZone: \"Europe/Vatican\",\n phoneNumberExtension: \"379\",\n },\n {\n name: \"Honduras\",\n code: \"HN\",\n timeZone: \"America/Tegucigalpa\",\n phoneNumberExtension: \"504\",\n },\n {\n name: \"Hong Kong\",\n code: \"HK\",\n timeZone: \"Asia/Hong_Kong\",\n phoneNumberExtension: \"852\",\n },\n {\n name: \"Hungary\",\n code: \"HU\",\n timeZone: \"Europe/Budapest\",\n phoneNumberExtension: \"36\",\n },\n {\n name: \"Iceland\",\n code: \"IS\",\n timeZone: \"Atlantic/Reykjavik\",\n phoneNumberExtension: \"354\",\n },\n {\n name: \"India\",\n code: \"IN\",\n timeZone: \"Asia/Kolkata\",\n phoneNumberExtension: \"91\",\n },\n {\n name: \"Indonesia\",\n code: \"ID\",\n timeZone: \"Asia/Jakarta\",\n phoneNumberExtension: \"62\",\n },\n {\n name: \"Iran, Islamic Republic Of\",\n code: \"IR\",\n timeZone: \"Asia/Tehran\",\n phoneNumberExtension: \"98\",\n },\n {\n name: \"Iraq\",\n code: \"IQ\",\n timeZone: \"Asia/Baghdad\",\n phoneNumberExtension: \"964\",\n },\n {\n name: \"Ireland\",\n code: \"IE\",\n timeZone: \"Europe/Dublin\",\n phoneNumberExtension: \"353\",\n },\n {\n name: \"Israel\",\n code: \"IL\",\n timeZone: \"Asia/Jerusalem\",\n phoneNumberExtension: \"972\",\n },\n {\n name: \"Italy\",\n code: \"IT\",\n timeZone: \"Europe/Rome\",\n phoneNumberExtension: \"39\",\n phoneNumberFormat: \"XXX XXX XXXX\",\n },\n {\n name: \"Jamaica\",\n code: \"JM\",\n timeZone: \"America/Jamaica\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Japan\",\n code: \"JP\",\n timeZone: \"Asia/Tokyo\",\n phoneNumberExtension: \"81\",\n },\n {\n name: \"Jersey\",\n code: \"JE\",\n timeZone: \"Europe/Jersey\",\n phoneNumberExtension: \"44\",\n phoneNumberFormat: \"XX XXXX XXXX\",\n },\n {\n name: \"Jordan\",\n code: \"JO\",\n timeZone: \"Asia/Amman\",\n phoneNumberExtension: \"962\",\n },\n {\n name: \"Kazakhstan\",\n code: \"KZ\",\n timeZone: \"Asia/Almaty\",\n phoneNumberExtension: \"7\",\n },\n {\n name: \"Kenya\",\n code: \"KE\",\n timeZone: \"Africa/Nairobi\",\n phoneNumberExtension: \"254\",\n },\n {\n name: \"Kiribati\",\n code: \"KI\",\n timeZone: \"Pacific/Tarawa\",\n phoneNumberExtension: \"686\",\n },\n {\n name: \"Korea, Democratic People's Republic of (North Korea)\",\n code: \"KP\",\n timeZone: \"Asia/Pyongyang\",\n phoneNumberExtension: \"850\",\n },\n {\n name: \"Korea, Republic of (South Korea)\",\n code: \"KR\",\n timeZone: \"Asia/Seoul\",\n phoneNumberExtension: \"82\",\n },\n {\n name: \"Kuwait\",\n code: \"KW\",\n timeZone: \"Asia/Kuwait\",\n phoneNumberExtension: \"965\",\n },\n {\n name: \"Kyrgyzstan\",\n code: \"KG\",\n timeZone: \"Asia/Bishkek\",\n phoneNumberExtension: \"996\",\n },\n {\n name: \"Lao People's Democratic Republic\",\n code: \"LA\",\n timeZone: \"Asia/Vientiane\",\n phoneNumberExtension: \"856\",\n },\n {\n name: \"Latvia\",\n code: \"LV\",\n timeZone: \"Europe/Riga\",\n phoneNumberExtension: \"371\",\n },\n {\n name: \"Lebanon\",\n code: \"LB\",\n timeZone: \"Asia/Beirut\",\n phoneNumberExtension: \"961\",\n },\n {\n name: \"Lesotho\",\n code: \"LS\",\n timeZone: \"Africa/Maseru\",\n phoneNumberExtension: \"266\",\n },\n {\n name: \"Liberia\",\n code: \"LR\",\n timeZone: \"Africa/Monrovia\",\n phoneNumberExtension: \"231\",\n },\n {\n name: \"Libyan Arab Jamahiriya\",\n code: \"LY\",\n timeZone: \"Africa/Tripoli\",\n phoneNumberExtension: \"218\",\n },\n {\n name: \"Liechtenstein\",\n code: \"LI\",\n timeZone: \"Europe/Vaduz\",\n phoneNumberExtension: \"423\",\n },\n {\n name: \"Lithuania\",\n code: \"LT\",\n timeZone: \"Europe/Vilnius\",\n phoneNumberExtension: \"370\",\n },\n {\n name: \"Luxembourg\",\n code: \"LU\",\n timeZone: \"Europe/Luxembourg\",\n phoneNumberExtension: \"352\",\n },\n {\n name: \"Macao\",\n code: \"MO\",\n timeZone: \"Asia/Macau\",\n phoneNumberExtension: \"853\",\n },\n {\n name: \"Macedonia, The Former Yugoslav Republic of\",\n code: \"MK\",\n timeZone: \"Europe/Skopje\",\n phoneNumberExtension: \"389\",\n },\n {\n name: \"Madagascar\",\n code: \"MG\",\n timeZone: \"Indian/Antananarivo\",\n phoneNumberExtension: \"261\",\n },\n {\n name: \"Malawi\",\n code: \"MW\",\n timeZone: \"Africa/Blantyre\",\n phoneNumberExtension: \"265\",\n },\n {\n name: \"Malaysia\",\n code: \"MY\",\n timeZone: \"Asia/Kuala_Lumpur\",\n phoneNumberExtension: \"60\",\n },\n {\n name: \"Maldives\",\n code: \"MV\",\n timeZone: \"Indian/Maldives\",\n phoneNumberExtension: \"960\",\n },\n {\n name: \"Mali\",\n code: \"ML\",\n timeZone: \"Africa/Bamako\",\n phoneNumberExtension: \"223\",\n },\n {\n name: \"Malta\",\n code: \"MT\",\n timeZone: \"Europe/Malta\",\n phoneNumberExtension: \"356\",\n },\n {\n name: \"Marshall Islands\",\n code: \"MH\",\n timeZone: \"Pacific/Majuro\",\n phoneNumberExtension: \"692\",\n },\n {\n name: \"Martinique\",\n code: \"MQ\",\n timeZone: \"America/Martinique\",\n phoneNumberExtension: \"596\",\n },\n {\n name: \"Mauritania\",\n code: \"MR\",\n timeZone: \"Africa/Nouakchott\",\n phoneNumberExtension: \"222\",\n },\n {\n name: \"Mauritius\",\n code: \"MU\",\n timeZone: \"Indian/Mauritius\",\n phoneNumberExtension: \"230\",\n },\n {\n name: \"Mayotte\",\n code: \"YT\",\n timeZone: \"Indian/Mayotte\",\n phoneNumberExtension: \"262\",\n },\n {\n name: \"Mexico\",\n code: \"MX\",\n timeZone: \"America/Mexico_City\",\n phoneNumberExtension: \"52\",\n },\n {\n name: \"Micronesia, Federated States of\",\n code: \"FM\",\n timeZone: \"Pacific/Chuuk\",\n phoneNumberExtension: \"691\",\n },\n {\n name: \"Moldova, Republic of\",\n code: \"MD\",\n timeZone: \"Europe/Chisinau\",\n phoneNumberExtension: \"373\",\n },\n {\n name: \"Monaco\",\n code: \"MC\",\n timeZone: \"Europe/Monaco\",\n phoneNumberExtension: \"377\",\n },\n {\n name: \"Mongolia\",\n code: \"MN\",\n timeZone: \"Asia/Ulaanbaatar\",\n phoneNumberExtension: \"976\",\n },\n {\n name: \"Montserrat\",\n code: \"MS\",\n timeZone: \"America/Montserrat\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Morocco\",\n code: \"MA\",\n timeZone: \"Africa/Casablanca\",\n phoneNumberExtension: \"212\",\n },\n {\n name: \"Mozambique\",\n code: \"MZ\",\n timeZone: \"Africa/Maputo\",\n phoneNumberExtension: \"258\",\n },\n {\n name: \"Myanmar\",\n code: \"MM\",\n timeZone: \"Asia/Yangon\",\n phoneNumberExtension: \"95\",\n },\n {\n name: \"Namibia\",\n code: \"NA\",\n timeZone: \"Africa/Windhoek\",\n phoneNumberExtension: \"264\",\n },\n {\n name: \"Nauru\",\n code: \"NR\",\n timeZone: \"Pacific/Nauru\",\n phoneNumberExtension: \"674\",\n },\n {\n name: \"Nepal\",\n code: \"NP\",\n timeZone: \"Asia/Kathmandu\",\n phoneNumberExtension: \"977\",\n },\n {\n name: \"Netherlands\",\n code: \"NL\",\n timeZone: \"Europe/Amsterdam\",\n phoneNumberExtension: \"31\",\n },\n {\n name: \"New Caledonia\",\n code: \"NC\",\n timeZone: \"Pacific/Noumea\",\n phoneNumberExtension: \"687\",\n },\n {\n name: \"New Zealand\",\n code: \"NZ\",\n timeZone: \"Pacific/Auckland\",\n phoneNumberExtension: \"64\",\n },\n {\n name: \"Nicaragua\",\n code: \"NI\",\n timeZone: \"America/Managua\",\n phoneNumberExtension: \"505\",\n },\n {\n name: \"Niger\",\n code: \"NE\",\n timeZone: \"Africa/Niamey\",\n phoneNumberExtension: \"227\",\n },\n {\n name: \"Nigeria\",\n code: \"NG\",\n timeZone: \"Africa/Lagos\",\n phoneNumberExtension: \"234\",\n },\n {\n name: \"Niue\",\n code: \"NU\",\n timeZone: \"Pacific/Niue\",\n phoneNumberExtension: \"683\",\n },\n {\n name: \"Norfolk Island\",\n code: \"NF\",\n timeZone: \"Pacific/Norfolk\",\n phoneNumberExtension: \"672\",\n },\n {\n name: \"Northern Mariana Islands\",\n code: \"MP\",\n timeZone: \"Pacific/Saipan\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Norway\",\n code: \"NO\",\n timeZone: \"Europe/Oslo\",\n phoneNumberExtension: \"47\",\n },\n {\n name: \"Oman\",\n code: \"OM\",\n timeZone: \"Asia/Muscat\",\n phoneNumberExtension: \"968\",\n },\n {\n name: \"Pakistan\",\n code: \"PK\",\n timeZone: \"Asia/Karachi\",\n phoneNumberExtension: \"92\",\n },\n {\n name: \"Palau\",\n code: \"PW\",\n timeZone: \"Pacific/Palau\",\n phoneNumberExtension: \"680\",\n },\n {\n name: \"Palestinian Territory, Occupied\",\n code: \"PS\",\n timeZone: \"Asia/Hebron\",\n phoneNumberExtension: \"970\",\n },\n {\n name: \"Panama\",\n code: \"PA\",\n timeZone: \"America/Panama\",\n phoneNumberExtension: \"507\",\n },\n {\n name: \"Papua New Guinea\",\n code: \"PG\",\n timeZone: \"Pacific/Port_Moresby\",\n phoneNumberExtension: \"675\",\n },\n {\n name: \"Paraguay\",\n code: \"PY\",\n timeZone: \"America/Asuncion\",\n phoneNumberExtension: \"595\",\n },\n {\n name: \"Peru\",\n code: \"PE\",\n timeZone: \"America/Lima\",\n phoneNumberExtension: \"51\",\n },\n {\n name: \"Philippines\",\n code: \"PH\",\n timeZone: \"Asia/Manila\",\n phoneNumberExtension: \"63\",\n },\n {\n name: \"Pitcairn\",\n code: \"PN\",\n timeZone: \"Pacific/Pitcairn\",\n phoneNumberExtension: \"64\",\n },\n {\n name: \"Poland\",\n code: \"PL\",\n timeZone: \"Europe/Warsaw\",\n phoneNumberExtension: \"48\",\n },\n {\n name: \"Portugal\",\n code: \"PT\",\n timeZone: \"Europe/Lisbon\",\n phoneNumberExtension: \"351\",\n },\n {\n name: \"Puerto Rico\",\n code: \"PR\",\n timeZone: \"America/Puerto_Rico\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Qatar\",\n code: \"QA\",\n timeZone: \"Asia/Qatar\",\n phoneNumberExtension: \"974\",\n },\n {\n name: \"Reunion\",\n code: \"RE\",\n timeZone: \"Indian/Reunion\",\n phoneNumberExtension: \"262\",\n },\n {\n name: \"Romania\",\n code: \"RO\",\n timeZone: \"Europe/Bucharest\",\n phoneNumberExtension: \"40\",\n },\n {\n name: \"Russian Federation\",\n code: \"RU\",\n timeZone: \"Europe/Moscow\",\n phoneNumberExtension: \"7\",\n },\n {\n name: \"RWANDA\",\n code: \"RW\",\n timeZone: \"Africa/Kigali\",\n phoneNumberExtension: \"250\",\n },\n {\n name: \"Saint Helena\",\n code: \"SH\",\n timeZone: \"Atlantic/St_Helena\",\n phoneNumberExtension: \"290\",\n },\n {\n name: \"Saint Kitts and Nevis\",\n code: \"KN\",\n timeZone: \"America/St_Kitts\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Saint Lucia\",\n code: \"LC\",\n timeZone: \"America/St_Lucia\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Saint Pierre and Miquelon\",\n code: \"PM\",\n timeZone: \"America/Miquelon\",\n phoneNumberExtension: \"508\",\n },\n {\n name: \"Saint Vincent and the Grenadines\",\n code: \"VC\",\n timeZone: \"America/St_Vincent\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Samoa\",\n code: \"WS\",\n timeZone: \"Pacific/Apia\",\n phoneNumberExtension: \"685\",\n },\n {\n name: \"San Marino\",\n code: \"SM\",\n timeZone: \"Europe/San_Marino\",\n phoneNumberExtension: \"378\",\n },\n {\n name: \"Sao Tome and Principe\",\n code: \"ST\",\n timeZone: \"Africa/Sao_Tome\",\n phoneNumberExtension: \"239\",\n },\n {\n name: \"Saudi Arabia\",\n code: \"SA\",\n timeZone: \"Asia/Riyadh\",\n phoneNumberExtension: \"966\",\n },\n {\n name: \"Senegal\",\n code: \"SN\",\n timeZone: \"Africa/Dakar\",\n phoneNumberExtension: \"221\",\n },\n {\n name: \"Republic of Serbia\",\n code: \"RS\",\n timeZone: \"Europe/Belgrade\",\n phoneNumberExtension: \"381\",\n },\n {\n name: \"Seychelles\",\n code: \"SC\",\n timeZone: \"Indian/Mahe\",\n phoneNumberExtension: \"248\",\n },\n {\n name: \"Sierra Leone\",\n code: \"SL\",\n timeZone: \"Africa/Freetown\",\n phoneNumberExtension: \"232\",\n },\n {\n name: \"Singapore\",\n code: \"SG\",\n timeZone: \"Asia/Singapore\",\n phoneNumberExtension: \"65\",\n },\n {\n name: \"Slovakia\",\n code: \"SK\",\n timeZone: \"Europe/Bratislava\",\n phoneNumberExtension: \"421\",\n },\n {\n name: \"Slovenia\",\n code: \"SI\",\n timeZone: \"Europe/Ljubljana\",\n phoneNumberExtension: \"386\",\n },\n {\n name: \"Solomon Islands\",\n code: \"SB\",\n timeZone: \"Pacific/Guadalcanal\",\n phoneNumberExtension: \"677\",\n },\n {\n name: \"Somalia\",\n code: \"SO\",\n timeZone: \"Africa/Mogadishu\",\n phoneNumberExtension: \"252\",\n },\n {\n name: \"South Africa\",\n code: \"ZA\",\n timeZone: \"Africa/Johannesburg\",\n phoneNumberExtension: \"27\",\n },\n {\n name: \"South Georgia and the South Sandwich Islands\",\n code: \"GS\",\n timeZone: \"Atlantic/South_Georgia\",\n phoneNumberExtension: \"500\",\n },\n {\n name: \"Spain\",\n code: \"ES\",\n timeZone: \"Europe/Madrid\",\n phoneNumberExtension: \"34\",\n },\n {\n name: \"Sri Lanka\",\n code: \"LK\",\n timeZone: \"Asia/Colombo\",\n phoneNumberExtension: \"94\",\n },\n {\n name: \"Sudan\",\n code: \"SD\",\n timeZone: \"Africa/Khartoum\",\n phoneNumberExtension: \"249\",\n },\n {\n name: \"Suriname\",\n code: \"SR\",\n timeZone: \"America/Paramaribo\",\n phoneNumberExtension: \"597\",\n },\n {\n name: \"Svalbard and Jan Mayen\",\n code: \"SJ\",\n timeZone: \"Arctic/Longyearbyen\",\n phoneNumberExtension: \"47\",\n },\n {\n name: \"Swaziland\",\n code: \"SZ\",\n timeZone: \"Africa/Mbabane\",\n phoneNumberExtension: \"268\",\n },\n {\n name: \"Sweden\",\n code: \"SE\",\n timeZone: \"Europe/Stockholm\",\n phoneNumberExtension: \"46\",\n },\n {\n name: \"Switzerland\",\n code: \"CH\",\n timeZone: \"Europe/Zurich\",\n phoneNumberExtension: \"41\",\n },\n {\n name: \"Syrian Arab Republic\",\n code: \"SY\",\n timeZone: \"Asia/Damascus\",\n phoneNumberExtension: \"963\",\n },\n {\n name: \"Taiwan, Province of China\",\n code: \"TW\",\n timeZone: \"Asia/Taipei\",\n phoneNumberExtension: \"886\",\n },\n {\n name: \"Tajikistan\",\n code: \"TJ\",\n timeZone: \"Asia/Dushanbe\",\n phoneNumberExtension: \"992\",\n },\n {\n name: \"Tanzania, United Republic of\",\n code: \"TZ\",\n timeZone: \"Africa/Dar_es_Salaam\",\n phoneNumberExtension: \"255\",\n },\n {\n name: \"Thailand\",\n code: \"TH\",\n timeZone: \"Asia/Bangkok\",\n phoneNumberExtension: \"66\",\n },\n {\n name: \"Timor-Leste\",\n code: \"TL\",\n timeZone: \"Asia/Dili\",\n phoneNumberExtension: \"670\",\n },\n {\n name: \"Togo\",\n code: \"TG\",\n timeZone: \"Africa/Lome\",\n phoneNumberExtension: \"228\",\n },\n {\n name: \"Tokelau\",\n code: \"TK\",\n timeZone: \"Pacific/Fakaofo\",\n phoneNumberExtension: \"690\",\n },\n {\n name: \"Tonga\",\n code: \"TO\",\n timeZone: \"Pacific/Tongatapu\",\n phoneNumberExtension: \"676\",\n },\n {\n name: \"Trinidad and Tobago\",\n code: \"TT\",\n timeZone: \"America/Port_of_Spain\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Tunisia\",\n code: \"TN\",\n timeZone: \"Africa/Tunis\",\n phoneNumberExtension: \"216\",\n },\n {\n name: \"Turkey\",\n code: \"TR\",\n timeZone: \"Europe/Istanbul\",\n phoneNumberExtension: \"90\",\n },\n {\n name: \"Turkmenistan\",\n code: \"TM\",\n timeZone: \"Asia/Ashgabat\",\n phoneNumberExtension: \"993\",\n },\n {\n name: \"Turks and Caicos Islands\",\n code: \"TC\",\n timeZone: \"America/Grand_Turk\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Tuvalu\",\n code: \"TV\",\n timeZone: \"Pacific/Funafuti\",\n phoneNumberExtension: \"688\",\n },\n {\n name: \"Uganda\",\n code: \"UG\",\n timeZone: \"Africa/Kampala\",\n phoneNumberExtension: \"256\",\n },\n {\n name: \"Ukraine\",\n code: \"UA\",\n timeZone: \"Europe/Kiev\",\n phoneNumberExtension: \"380\",\n },\n {\n name: \"United Arab Emirates\",\n code: \"AE\",\n timeZone: \"Asia/Dubai\",\n phoneNumberExtension: \"971\",\n },\n {\n name: \"United States Minor Outlying Islands\",\n code: \"UM\",\n timeZone: \"Pacific/Midway\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Uruguay\",\n code: \"UY\",\n timeZone: \"America/Montevideo\",\n phoneNumberExtension: \"598\",\n },\n {\n name: \"Uzbekistan\",\n code: \"UZ\",\n timeZone: \"Asia/Tashkent\",\n phoneNumberExtension: \"998\",\n },\n {\n name: \"Vanuatu\",\n code: \"VU\",\n timeZone: \"Pacific/Efate\",\n phoneNumberExtension: \"678\",\n },\n {\n name: \"Venezuela\",\n code: \"VE\",\n timeZone: \"America/Caracas\",\n phoneNumberExtension: \"58\",\n },\n {\n name: \"Viet Nam\",\n code: \"VN\",\n timeZone: \"Asia/Ho_Chi_Minh\",\n phoneNumberExtension: \"84\",\n },\n {\n name: \"Virgin Islands, British\",\n code: \"VG\",\n timeZone: \"America/Tortola\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Virgin Islands, U.S.\",\n code: \"VI\",\n timeZone: \"America/St_Thomas\",\n phoneNumberExtension: \"1\",\n phoneNumberFormat: \"(XXX)XXX-XXXX\",\n },\n {\n name: \"Wallis and Futuna\",\n code: \"WF\",\n timeZone: \"Pacific/Wallis\",\n phoneNumberExtension: \"681\",\n },\n {\n name: \"Western Sahara\",\n code: \"EH\",\n timeZone: \"Africa/El_Aaiun\",\n phoneNumberExtension: \"212\",\n },\n {\n name: \"Yemen\",\n code: \"YE\",\n timeZone: \"Asia/Aden\",\n phoneNumberExtension: \"967\",\n },\n {\n name: \"Zambia\",\n code: \"ZM\",\n timeZone: \"Africa/Lusaka\",\n phoneNumberExtension: \"260\",\n },\n {\n name: \"Zimbabwe\",\n code: \"ZW\",\n timeZone: \"Africa/Harare\",\n phoneNumberExtension: \"263\",\n },\n] as const;\n","import { memo } from \"react\";\n\nimport Text from \"./Text\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nexport type LabelProps = {\n text?: string;\n /** @default false */\n required?: boolean;\n /** @default false */\n isError?: boolean;\n color?: string;\n};\n\nfunction Label({ text, required, isError, color }: LabelProps) {\n const theme = useTheme();\n\n return (\n <Text\n as=\"label\"\n height={16}\n fontSize={14}\n color={isError ? theme.colors.error : color ?? theme.colors.textSecondary}\n >\n {text}\n\n {required && (\n <Text as=\"span\" fontSize={16} color={theme.colors.error}>\n {\" \"}\n *\n </Text>\n )}\n </Text>\n );\n}\n\nexport default memo(Label);\n","import { forwardRef, memo, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { ComponentPropWithRef } from \"../types/components\";\nimport { AnyOtherString, OmitProps } from \"../types/app\";\nimport { IconName } from \"../types/icon\";\n\nimport { useBooleanState } from \"../utils/hooks\";\nimport { useDebounceState } from \"../utils/hooks\";\n\nimport Text from \"./Text\";\nimport Div, { DivProps } from \"./Div\";\nimport InputField from \"./InputField\";\nimport Icon from \"./Icon\";\nimport Button from \"./Button\";\nimport Loader from \"./Loader\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nexport type DropdownOption<Value, Data = unknown> = {\n value: Value;\n label: string;\n /** @default false */\n disabled?: boolean;\n searchValues?: string[];\n data?: Data;\n};\n\nexport type DropdownProps<Value, Data = unknown> = {\n label?: string;\n labelColor?: string;\n errorText?: string;\n infoText?: string;\n /** @default false */\n required?: boolean;\n /** @default false */\n disabled?: boolean;\n options: DropdownOption<Value, Data>[];\n value?: Value;\n defaultValue?: Value;\n placeholder?: string;\n leftIcon?: IconName | AnyOtherString;\n inputFieldClassName?: string;\n /** @default false */\n withSearch?: boolean;\n /** @default false */\n withDebounce?: boolean;\n /** @default 0.5s */\n debounceDelay?: number;\n /** @default false */\n debounceIsLoading?: boolean;\n debounceMinimumSymbolsRequired?: number;\n /** @default false */\n withoutClearButton?: boolean;\n onChange?: (value: Value | undefined) => void;\n onChangeSearch?: (query: string) => void;\n renderOption?: (option: DropdownOption<Value, Data>, index: number, isSelected: boolean) => React.ReactNode;\n} & OmitProps<DivProps<unknown>, \"onChange\" | \"defaultChecked\">;\n\ntype DropdownComponentType = {\n <Value, Data>(props: ComponentPropWithRef<HTMLDivElement, DropdownProps<Value, Data>>): React.ReactElement;\n};\n\nconst DropdownComponent: DropdownComponentType = forwardRef(function Dropdown<Value, Data>(\n {\n label,\n labelColor,\n errorText,\n infoText,\n required,\n disabled,\n options,\n value: controlledValue,\n defaultValue,\n placeholder,\n leftIcon,\n inputFieldClassName,\n withSearch,\n withDebounce,\n debounceDelay = 0.5,\n debounceIsLoading,\n debounceMinimumSymbolsRequired,\n withoutClearButton,\n onChange,\n onChangeSearch,\n renderOption,\n ...props\n }: DropdownProps<Value, Data>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const theme = useTheme();\n\n const dropdownHolderRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const [isOpen, setIsOpen] = useBooleanState();\n const [isOpenLate, setIsOpenLate] = useBooleanState();\n const [isFocused, setIsFocused] = useBooleanState();\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [_, debouncedSearchQuery, setDebouncedSearchQuery, isLoadingDebouncedSearchQuery] = useDebounceState<string>(\n \"\",\n debounceDelay,\n );\n const [focusedOptionIndex, setFocusedOptionIndex] = useState<number | undefined>();\n\n const [internalValue, setInternalValue] = useState<Value | undefined>(defaultValue);\n\n const value = controlledValue ?? internalValue;\n\n const filteredOptions = useMemo(() => {\n if (!searchQuery) return options;\n\n const query = searchQuery.toLowerCase();\n\n return options.filter(\n (option) =>\n option.label.toLowerCase().includes(query) ||\n option.searchValues?.some((value) => value.toLowerCase().includes(query)),\n );\n }, [options, searchQuery]);\n\n const onKeyDownInputField = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\" || (!withSearch && event.key === \" \")) {\n event.preventDefault();\n\n if (!disabled) {\n setIsOpen.toggle();\n\n if (isOpen && filteredOptions.length > 0 && focusedOptionIndex !== undefined) {\n const option = filteredOptions[focusedOptionIndex];\n\n if (!option.disabled) {\n if (controlledValue === undefined) setInternalValue(option.value);\n\n onChange?.(option.value);\n\n setIsOpen.setFalse();\n inputRef.current?.blur();\n setSearchQuery(\"\");\n setFocusedOptionIndex(undefined);\n }\n }\n }\n } else if (event.key === \"Escape\") {\n setIsOpen.setFalse();\n setFocusedOptionIndex(undefined);\n } else if (event.key === \"ArrowDown\") {\n event.preventDefault();\n\n if (!isOpen) setIsOpen.setTrue();\n\n if (filteredOptions.length > 0) {\n setFocusedOptionIndex((oldValue) =>\n oldValue === undefined ? 0 : (oldValue + 1) % filteredOptions.length,\n );\n }\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n\n if (!isOpen) setIsOpen.setTrue();\n\n if (filteredOptions.length > 0) {\n setFocusedOptionIndex((oldValue) =>\n oldValue === undefined\n ? filteredOptions.length - 1\n : (oldValue - 1 + filteredOptions.length) % filteredOptions.length,\n );\n }\n }\n },\n [disabled, withSearch, isOpen, filteredOptions, focusedOptionIndex, controlledValue, onChange],\n );\n const onClickOption = useCallback(\n (option: DropdownOption<Value, Data>) => {\n if (!option.disabled) {\n if (controlledValue === undefined) setInternalValue(option.value);\n\n onChange?.(option.value);\n\n setIsOpen.setFalse();\n inputRef.current?.blur();\n setSearchQuery(\"\");\n setFocusedOptionIndex(undefined);\n }\n },\n [onChange, controlledValue],\n );\n const onClickClearButton = useCallback(\n (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n event.stopPropagation();\n\n setInternalValue(undefined);\n onChange?.(undefined);\n\n setIsOpen.setFalse();\n inputRef.current?.blur();\n setSearchQuery(\"\");\n setFocusedOptionIndex(undefined);\n },\n [onChange],\n );\n const onChangeValue = useCallback(\n (newValue: string) => {\n setSearchQuery(newValue);\n\n if (withDebounce) setDebouncedSearchQuery(newValue);\n else onChangeSearch?.(newValue);\n },\n [withDebounce, onChangeSearch],\n );\n\n const selectedOption = useMemo(() => options.find((option) => option.value === value), [options, value]);\n\n useEffect(() => {\n if (isOpen) {\n setIsOpenLate.setTrue();\n\n if (withSearch && inputRef.current) inputRef.current.focus();\n } else {\n const timeout = setTimeout(setIsOpenLate.setFalse, 0.2 * 1000);\n\n return () => {\n clearTimeout(timeout);\n };\n }\n }, [isOpen, withSearch]);\n useEffect(() => {\n setFocusedOptionIndex(undefined);\n }, [filteredOptions]);\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownHolderRef.current && !dropdownHolderRef.current.contains(event.target as Node)) {\n setIsOpen.setFalse();\n setSearchQuery(\"\");\n setFocusedOptionIndex(undefined);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpen]);\n useEffect(() => {\n if (!withDebounce) return;\n\n onChangeSearch?.(debouncedSearchQuery);\n }, [withDebounce, onChangeSearch, debouncedSearchQuery]);\n\n const displayValue = withSearch && isFocused ? searchQuery : selectedOption?.label ?? \"\";\n const withClearButton = isOpen && selectedOption;\n const readyPlaceholder = placeholder ? placeholder : `Select an ${label?.toLowerCase() ?? \"option\"}`;\n\n return (\n <Div.column width=\"100%\" position=\"relative\" userSelect=\"none\" {...props} ref={dropdownHolderRef}>\n <Div.row position=\"relative\" width=\"100%\">\n <InputField\n label={label}\n labelColor={labelColor}\n errorText={errorText}\n infoText={infoText}\n required={required}\n disabled={disabled}\n readOnly={!withSearch}\n value={displayValue}\n cursor={!withSearch ? \"pointer\" : undefined}\n placeholder={withSearch ? (selectedOption ? selectedOption.label : readyPlaceholder) : readyPlaceholder}\n leftIcon={leftIcon}\n className={`react-better-html-dropdown${isOpen ? \" react-better-html-dropdown-open\" : \"\"}${\n isOpenLate ? \" react-better-html-dropdown-open-late\" : \"\"\n }${inputFieldClassName ? ` ${inputFieldClassName}` : \"\"}`}\n onClick={!disabled ? setIsOpen.toggle : undefined}\n onFocus={setIsFocused.setTrue}\n onBlur={setIsFocused.setFalse}\n onKeyDown={onKeyDownInputField}\n onChangeValue={withSearch ? onChangeValue : undefined}\n insideInputFieldComponent={\n <Div\n position=\"absolute\"\n top=\"100%\"\n left={0}\n width=\"100%\"\n maxHeight={300}\n backgroundColor={theme.colors.backgroundContent}\n border={`1px solid ${isFocused ? theme.colors.primary : theme.colors.border}`}\n borderTop=\"none\"\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n boxShadow=\"0px 10px 20px #00000020\"\n zIndex={1000}\n overflowY=\"auto\"\n opacity={!isOpen ? 0 : undefined}\n pointerEvents={!isOpen ? \"none\" : undefined}\n transform={`translateY(${!isOpen ? -10 : 0}px)`}\n transition={theme.styles.transition}\n role=\"listbox\"\n aria-label={label}\n >\n {isLoadingDebouncedSearchQuery || debounceIsLoading ? (\n <Div padding={`${theme.styles.space / 2}px ${theme.styles.space + theme.styles.gap}px`}>\n <Loader.text />\n </Div>\n ) : filteredOptions.length ? (\n filteredOptions.map((option, index) => {\n const isSelected = option.value === value;\n const isDisabled = option.disabled;\n const isFocused = index === focusedOptionIndex;\n\n return (\n <Div\n color={\n isDisabled\n ? theme.colors.textSecondary + \"80\"\n : isSelected\n ? theme.colors.base\n : theme.colors.textPrimary\n }\n backgroundColor={isSelected ? theme.colors.primary : theme.colors.backgroundContent}\n filter={isFocused ? (isDisabled ? \"brightness(0.95)\" : \"brightness(0.9)\") : undefined}\n filterHover={\n focusedOptionIndex === undefined && !isDisabled ? \"brightness(0.9)\" : undefined\n }\n cursor={isDisabled ? \"not-allowed\" : \"pointer\"}\n padding={`${theme.styles.space / 2}px ${theme.styles.space + theme.styles.gap}px`}\n value={option}\n onClickWithValue={onClickOption}\n onMouseMove={() => setFocusedOptionIndex(undefined)}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={isDisabled}\n key={JSON.stringify(option)}\n >\n {renderOption ? renderOption(option, index, isSelected) : <Text>{option.label}</Text>}\n </Div>\n );\n })\n ) : (\n <Div padding={`${theme.styles.space / 2}px ${theme.styles.space + theme.styles.gap}px`}>\n <Text.unknown textAlign=\"left\">\n {debounceMinimumSymbolsRequired !== undefined &&\n searchQuery.length < debounceMinimumSymbolsRequired\n ? `Enter at least ${debounceMinimumSymbolsRequired} characters`\n : \"No options\"}\n </Text.unknown>\n </Div>\n )}\n </Div>\n }\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-controls=\"dropdown-list\"\n aria-haspopup=\"listbox\"\n aria-label={label}\n ref={inputRef}\n />\n\n <Div.row\n position=\"absolute\"\n top={46 / 2 + (label ? 16 + theme.styles.gap / 2 : 0)}\n right={theme.styles.space + 1}\n alignItems=\"center\"\n gap={theme.styles.gap}\n transform=\"translateY(-50%)\"\n pointerEvents=\"none\"\n filter={disabled ? \"brightness(0.9)\" : undefined}\n opacity={disabled ? 0.6 : undefined}\n zIndex={isOpen || isOpenLate ? 1001 : undefined}\n >\n {!withoutClearButton && (\n <Button.icon\n icon=\"XMark\"\n position=\"relative\"\n size={10}\n iconSize={14}\n opacity={!withClearButton ? 0 : undefined}\n pointerEvents={withClearButton ? \"all\" : undefined}\n onClick={onClickClearButton}\n disabled={!withClearButton}\n />\n )}\n\n <Icon\n name=\"chevronDown\"\n position=\"relative\"\n size={16}\n color={theme.colors.textSecondary}\n transform={`rotate(${isOpen ? 180 : 0}deg)`}\n transition={theme.styles.transition}\n pointerEvents=\"none\"\n />\n </Div.row>\n </Div.row>\n </Div.column>\n );\n}) as any;\n\nconst Dropdown = memo(DropdownComponent) as any as typeof DropdownComponent & {};\n\nexport default Dropdown;\n","import { forwardRef, useCallback, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport { ComponentHoverStyle, ComponentPropWithRef, ComponentStyle } from \"../types/components\";\nimport { OmitProps } from \"../types/app\";\nimport { Theme } from \"../types/theme\";\n\nimport {\n useBooleanState,\n useComponentPropsWithExcludedStyle,\n useComponentPropsWithoutStyle,\n useComponentPropsWithPrefix,\n useStyledComponentStyles,\n} from \"../utils/hooks\";\n\nimport Text from \"./Text\";\nimport Div from \"./Div\";\nimport Icon from \"./Icon\";\nimport Label from \"./Label\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nconst componentSize = 26;\nconst switchComponentBallGap = 3;\nconst switchComponentMouseDownDifference = 4;\n\nconst InputElement = styled.input.withConfig({\n shouldForwardProp: (prop) => ![\"theme\", \"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{ theme: Theme; normalStyle: ComponentStyle; hoverStyle: ComponentStyle }>`\n position: relative;\n appearance: none;\n width: ${componentSize}px;\n height: ${componentSize}px;\n background-color: ${(props) => props.theme.colors.backgroundContent};\n border: 1px solid ${(props) => props.theme.colors.border};\n border-radius: ${(props) => props.theme.styles.borderRadius / 2}px;\n cursor: pointer;\n transition: ${(props) => props.theme.styles.transition};\n flex-shrink: 0;\n\n &[type=\"radio\"] {\n border-radius: 999px;\n }\n\n &:checked {\n background-color: ${(props) => props.theme.colors.primary};\n border-color: ${(props) => props.theme.colors.primary};\n }\n\n &:disabled {\n filter: brightness(0.9);\n cursor: not-allowed;\n }\n\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nconst SwitchElement = styled.div.withConfig({\n shouldForwardProp: (prop) =>\n ![\"theme\", \"checked\", \"disabled\", \"isMouseDown\", \"normalStyle\", \"hoverStyle\"].includes(prop),\n})<{\n theme: Theme;\n checked: boolean;\n disabled: boolean;\n isMouseDown: boolean;\n normalStyle: ComponentStyle;\n hoverStyle: ComponentStyle;\n}>`\n --width: ${(props) => componentSize * 2 - props.theme.styles.gap / 2}px;\n --ball-size: ${componentSize - switchComponentBallGap * 2}px;\n\n position: relative;\n width: var(--width);\n height: ${componentSize}px;\n background-color: ${(props) => (props.checked ? props.theme.colors.primary : props.theme.colors.border)};\n border-radius: 999px;\n cursor: ${(props) => (props.disabled ? \"not-allowed\" : \"pointer\")};\n opacity: ${(props) => (props.disabled ? 0.5 : 1)};\n transition: ${(props) => props.theme.styles.transition};\n\n &::before {\n content: \"\";\n position: absolute;\n width: ${(props) =>\n componentSize - switchComponentBallGap * 2 + (props.isMouseDown ? switchComponentMouseDownDifference : 0)}px;\n height: ${componentSize - switchComponentBallGap * 2}px;\n background-color: ${(props) => props.theme.colors.base};\n border-radius: 999px;\n top: ${switchComponentBallGap}px;\n left: ${switchComponentBallGap}px;\n transform: translateX(\n ${(props) =>\n props.checked\n ? `calc(var(--width) - ${\n componentSize + (props.isMouseDown ? switchComponentMouseDownDifference : 0)\n }px)`\n : \"0px\"}\n );\n transition: ${(props) => props.theme.styles.transition};\n }\n\n &.react-better-html-color-theme-switch-with-moon {\n &::after {\n content: \"\";\n position: absolute;\n width: ${(props) =>\n componentSize -\n switchComponentBallGap * 2 +\n (props.isMouseDown ? switchComponentMouseDownDifference : 0)}px;\n height: ${componentSize - switchComponentBallGap * 2}px;\n background-color: ${(props) => (props.checked ? props.theme.colors.primary : \"transparent\")};\n border-radius: 999px;\n top: ${switchComponentBallGap}px;\n left: ${switchComponentBallGap}px;\n transform: translateX(\n ${(props) =>\n props.checked\n ? `calc(var(--width) - ${\n componentSize + (props.isMouseDown ? switchComponentMouseDownDifference * 2 : 0)\n }px - calc(var(--ball-size) / 3))`\n : \"0px\"}\n );\n transition: ${(props) => props.theme.styles.transition};\n }\n }\n\n ${(props) => props.normalStyle as any}\n\n &:hover {\n ${(props) => props.hoverStyle as any}\n }\n`;\n\nexport type ToggleInputRef = {};\n\ntype InternalToggleInputProps<Value> = {\n label?: string;\n labelColor?: string;\n text?: string;\n errorText?: string;\n infoText?: string;\n value?: Value;\n onChange?: (checked: boolean, value?: Value) => void;\n} & OmitProps<React.ComponentProps<\"input\">, \"style\" | \"value\" | \"ref\" | \"onChange\"> &\n ComponentStyle &\n ComponentHoverStyle;\n\nexport type ToggleInputProps<Value> = ComponentPropWithRef<\n ToggleInputRef,\n OmitProps<InternalToggleInputProps<Value>, \"type\">\n>;\ntype ToggleInputComponentType = <Value>(props: ToggleInputProps<Value>) => React.ReactElement;\n\nconst ToggleInputComponent = forwardRef(function ToggleInput<Value>(\n {\n label,\n labelColor,\n text,\n errorText,\n infoText,\n value,\n onChange,\n checked: controlledChecked,\n color,\n required,\n ...props\n }: InternalToggleInputProps<Value>,\n ref: React.ForwardedRef<ToggleInputRef>,\n) {\n const theme = useTheme();\n\n const styledComponentStyles = useStyledComponentStyles(props, theme, true);\n const styledComponentStylesWithExcluded = useComponentPropsWithExcludedStyle(props);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n const [internalChecked, setInternalChecked] = useState(false);\n\n const onChangeElement = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const newIsChecked = event.target.checked;\n\n if (controlledChecked === undefined) setInternalChecked(newIsChecked);\n onChange?.(newIsChecked, value);\n },\n [onChange, controlledChecked, value],\n );\n\n const checked = controlledChecked ?? internalChecked;\n\n const onClickText = useCallback(() => {\n const newIsChecked = !checked;\n\n if (controlledChecked === undefined) setInternalChecked(newIsChecked);\n onChange?.(newIsChecked, value);\n }, [checked, controlledChecked, onChange, value]);\n\n return (\n <Div.column width=\"100%\" gap={theme.styles.gap} {...styledComponentStylesWithExcluded}>\n {label && <Label text={label} color={labelColor} required={required} isError={!!errorText} />}\n\n <Div.row alignItems=\"center\" gap={theme.styles.gap}>\n <Div.row position=\"relative\" alignItems=\"center\">\n <InputElement\n theme={theme}\n type={props.type ?? \"checkbox\"}\n checked={checked}\n onChange={onChangeElement}\n {...styledComponentStyles}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n />\n\n {props.type === \"checkbox\" ? (\n <Icon\n name=\"check\"\n position=\"absolute\"\n top=\"50%\"\n left=\"50%\"\n color={theme.colors.base}\n size={14}\n transform={`translate(-50%, -50%)${checked ? \"\" : \" scale(0.4)\"}`}\n opacity={checked ? 1 : 0}\n pointerEvents=\"none\"\n transition={theme.styles.transition}\n />\n ) : props.type === \"radio\" ? (\n <Div\n position=\"absolute\"\n width={10}\n height={10}\n top=\"50%\"\n left=\"50%\"\n backgroundColor={theme.colors.base}\n borderRadius={999}\n transform={`translate(-50%, -50%)${checked ? \"\" : \" scale(0.4)\"}`}\n opacity={checked ? 1 : 0}\n pointerEvents=\"none\"\n />\n ) : undefined}\n </Div.row>\n\n {text && (\n <Text color={color} userSelect=\"none\" cursor=\"pointer\" onClick={onClickText}>\n {text}\n {required && !label && (\n <Text as=\"span\" fontSize={16} color={theme.colors.error}>\n {\" \"}\n *\n </Text>\n )}\n </Text>\n )}\n </Div.row>\n\n {(errorText || infoText) && (\n <Text\n as=\"span\"\n display=\"block\"\n fontSize={14}\n color={errorText ? theme.colors.error : labelColor ?? theme.colors.textSecondary}\n >\n {errorText || infoText}\n </Text>\n )}\n </Div.column>\n );\n}) as <Value>(props: ComponentPropWithRef<ToggleInputRef, InternalToggleInputProps<Value>>) => React.ReactElement;\n\nexport default {\n checkbox: forwardRef(function Checkbox<Value>(\n props: ToggleInputProps<Value>,\n ref: React.ForwardedRef<ToggleInputRef>,\n ) {\n return <ToggleInputComponent type=\"checkbox\" ref={ref} {...props} />;\n }) as ToggleInputComponentType,\n radiobutton: forwardRef(function RadioButton<Value>(\n props: ToggleInputProps<Value>,\n ref: React.ForwardedRef<ToggleInputRef>,\n ) {\n return <ToggleInputComponent type=\"radio\" ref={ref} {...props} />;\n }) as ToggleInputComponentType,\n switch: forwardRef(function Switch<Value>(\n {\n label,\n labelColor,\n errorText,\n infoText,\n disabled,\n value,\n onChange,\n checked: controlledChecked,\n required,\n ...props\n }: InternalToggleInputProps<Value>,\n ref: React.ForwardedRef<ToggleInputRef>,\n ) {\n const theme = useTheme();\n\n const styledComponentStyles = useStyledComponentStyles(props, theme, true);\n const styledComponentStylesWithExcluded = useComponentPropsWithExcludedStyle(props);\n const dataProps = useComponentPropsWithPrefix(props, \"data\");\n const ariaProps = useComponentPropsWithPrefix(props, \"aria\");\n const restProps = useComponentPropsWithoutStyle(props);\n\n const [internalChecked, setInternalChecked] = useBooleanState();\n const [isMouseDown, setIsMouseDown] = useBooleanState();\n\n const checked = controlledChecked ?? internalChecked;\n\n const onClickElement = useCallback(() => {\n if (disabled) return;\n\n const newIsChecked = !checked;\n\n if (controlledChecked === undefined) setInternalChecked.setState(newIsChecked);\n onChange?.(newIsChecked, value);\n }, [disabled, checked, onChange, controlledChecked, value]);\n\n return (\n <Div.column width=\"fit-content\" gap={theme.styles.gap} {...styledComponentStylesWithExcluded}>\n {label && <Label text={label} color={labelColor} required={required} isError={!!errorText} />}\n\n <Div.row\n alignItems=\"center\"\n gap={theme.styles.gap}\n onMouseDown={setIsMouseDown.setTrue}\n onMouseUp={setIsMouseDown.setFalse}\n onMouseOut={setIsMouseDown.setFalse}\n onTouchStart={setIsMouseDown.setTrue}\n onTouchEnd={setIsMouseDown.setFalse}\n onTouchCancel={setIsMouseDown.setFalse}\n >\n <SwitchElement\n theme={theme}\n checked={checked}\n disabled={disabled ?? false}\n isMouseDown={isMouseDown}\n onClick={onClickElement}\n {...styledComponentStyles}\n {...dataProps}\n {...ariaProps}\n {...restProps}\n />\n </Div.row>\n\n {(errorText || infoText) && (\n <Text\n as=\"span\"\n display=\"block\"\n fontSize={14}\n color={errorText ? theme.colors.error : labelColor ?? theme.colors.textSecondary}\n >\n {errorText || infoText}\n </Text>\n )}\n </Div.column>\n );\n }) as ToggleInputComponentType,\n};\n","import { memo, useMemo } from \"react\";\n\nimport { ComponentMarginProps } from \"../types/components\";\nimport { LoaderName } from \"../types/loader\";\nimport { AnyOtherString, OmitProps } from \"../types/app\";\n\nimport { useForm } from \"../utils/hooks\";\n\nimport Div from \"./Div\";\nimport Button from \"./Button\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nexport type FormProps = {\n form?: OmitProps<ReturnType<typeof useForm>, \"focusField\">;\n submitButtonText?: string;\n submitButtonLoaderName?: LoaderName | AnyOtherString;\n submitButtonId?: string;\n /** @default false */\n submitButtonIsDisabled?: boolean;\n /** @default \"right\" */\n actionButtonsLocation?: \"left\" | \"center\" | \"right\";\n gap?: React.CSSProperties[\"gap\"];\n /** @default false */\n isSubmitting?: boolean;\n /** @default false */\n isDestructive?: boolean;\n onClickCancel?: () => void;\n onSubmit?: (value: React.FormEvent<HTMLFormElement>) => void;\n children?: React.ReactNode;\n} & ComponentMarginProps;\n\nfunction Form({\n form,\n submitButtonText,\n submitButtonLoaderName,\n submitButtonId,\n submitButtonIsDisabled,\n actionButtonsLocation = \"right\",\n gap,\n isSubmitting,\n isDestructive,\n onClickCancel,\n onSubmit,\n children,\n ...props\n}: FormProps) {\n const theme = useTheme();\n\n const submitButtonIsDisabledInternal = useMemo<boolean>(() => {\n if (!form || !form.requiredFields) return false;\n\n return Object.entries(form.values).some(\n ([key, value]) =>\n form.requiredFields?.includes(key) &&\n (value === undefined || value === null || value?.toString().trim() === \"\"),\n );\n }, [form]);\n\n const SubmitButtonTag = isDestructive ? Button.destructive : Button;\n const submitButtonIsDisabledFinal = submitButtonIsDisabled || submitButtonIsDisabledInternal;\n\n return (\n <Div width=\"100%\" {...props}>\n <form onSubmit={onSubmit ?? form?.onSubmit}>\n {gap !== undefined ? <Div.column gap={gap}>{children}</Div.column> : children}\n\n {submitButtonText && (\n <Div.row\n alignItems=\"center\"\n justifyContent={\n actionButtonsLocation === \"left\"\n ? \"flex-start\"\n : actionButtonsLocation === \"center\"\n ? \"center\"\n : \"flex-end\"\n }\n gap={theme.styles.gap}\n marginTop={theme.styles.space}\n >\n {onClickCancel && <Button.secondary text=\"Cancel\" onClick={onClickCancel} />}\n\n <SubmitButtonTag\n text={submitButtonText}\n isLoading={isSubmitting || form?.isSubmitting}\n loaderName={submitButtonLoaderName}\n disabled={submitButtonIsDisabledFinal}\n id={submitButtonId}\n isSubmit\n />\n </Div.row>\n )}\n </form>\n </Div>\n );\n}\n\nexport default memo(Form);\n","import { forwardRef, memo } from \"react\";\n\nimport { IconName } from \"../types/icon\";\nimport { AnyOtherString } from \"../types/app\";\nimport { ComponentMarginProps, ComponentPropWithRef } from \"../types/components\";\nimport { LoaderName } from \"../types/loader\";\n\nimport { useMediaQuery } from \"../utils/hooks\";\n\nimport Div from \"./Div\";\nimport Icon from \"./Icon\";\nimport Text from \"./Text\";\nimport Button from \"./Button\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nexport type FormRowProps = {\n oneItemOnly?: boolean;\n /**\n * @description Weather to break the two items into two separate lines on mobile or not\n * @default false\n */\n noBreakingPoint?: boolean;\n gap?: React.CSSProperties[\"gap\"];\n children?: React.ReactNode;\n} & ComponentMarginProps;\n\ntype FormRowComponentType = {\n (props: ComponentPropWithRef<HTMLDivElement, FormRowProps>): React.ReactElement;\n withTitle: (\n props: ComponentPropWithRef<\n HTMLDivElement,\n FormRowProps & {\n icon?: IconName | AnyOtherString;\n title?: string;\n description?: string;\n withActions?: boolean;\n saveButtonLoaderName?: LoaderName | AnyOtherString;\n resetButtonLoaderName?: LoaderName | AnyOtherString;\n onClickSave?: () => void;\n onClickReset?: () => void;\n }\n >,\n ) => React.ReactElement;\n};\n\nconst FormRowComponent: FormRowComponentType = forwardRef(function FormRow(\n { oneItemOnly, noBreakingPoint, gap, children, ...props }: FormRowProps,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const theme = useTheme();\n const mediaQuery = useMediaQuery();\n\n const breakingPoint = !noBreakingPoint ? mediaQuery.size900 : false;\n const readyGap =\n breakingPoint || (noBreakingPoint && mediaQuery.size900) ? theme.styles.gap : theme.styles.space * 2;\n\n return (\n <Div.row alignItems=\"center\" gap={gap ?? readyGap} invertFlexDirection={breakingPoint} {...props} ref={ref}>\n {children}\n\n {oneItemOnly && <Div width=\"100%\" />}\n </Div.row>\n );\n}) as any;\n\nFormRowComponent.withTitle = forwardRef(function WithTitle(\n {\n icon,\n title,\n description,\n withActions,\n saveButtonLoaderName,\n resetButtonLoaderName,\n onClickSave,\n onClickReset,\n children,\n ...props\n },\n ref,\n) {\n const theme = useTheme();\n const mediaQuery = useMediaQuery();\n\n return (\n <FormRowComponent {...props} ref={ref}>\n <Div.row width=\"100%\" alignItems=\"center\" gap={theme.styles.space}>\n {icon && <Icon name={icon} />}\n\n <Div.column flex={1} gap={theme.styles.gap / 2}>\n <Text as=\"h3\">{title}</Text>\n\n {description && <Text color={theme.colors.textSecondary}>{description}</Text>}\n </Div.column>\n </Div.row>\n\n <Div.row\n width={props.noBreakingPoint && mediaQuery.size900 ? undefined : \"100%\"}\n alignItems=\"center\"\n gap={theme.styles.gap}\n >\n {children}\n\n {withActions && (\n <Div.row alignItems=\"center\" gap={theme.styles.gap}>\n {onClickReset && (\n <Button.icon icon=\"XMark\" loaderName={resetButtonLoaderName} onClick={onClickReset} />\n )}\n <Button.icon icon=\"check\" loaderName={saveButtonLoaderName} onClick={onClickSave} />\n </Div.row>\n )}\n </Div.row>\n </FormRowComponent>\n );\n}) as FormRowComponentType[\"withTitle\"];\n\nconst FormRow = memo(FormRowComponent) as any as typeof FormRowComponent & {\n withTitle: typeof FormRowComponent.withTitle;\n};\n\nFormRow.withTitle = FormRowComponent.withTitle;\n\nexport default FormRow;\n","import { memo, useEffect } from \"react\";\n\nimport { ComponentMarginProps } from \"../types/components\";\n\nimport { useForm } from \"../utils/hooks\";\n\nimport Div from \"./Div\";\nimport Text from \"./Text\";\nimport ToggleInput from \"./ToggleInput\";\nimport { useTheme } from \"./BetterHtmlProvider\";\n\nexport type ColorThemeSwitchProps = {\n /** @default false */\n withMoon?: boolean;\n className?: string;\n} & ComponentMarginProps;\n\ntype ColorThemeSwitchComponentType = {\n (props: ColorThemeSwitchProps): React.ReactElement;\n withText: (props: ColorThemeSwitchProps) => React.ReactElement;\n};\n\nconst ColorThemeSwitchComponent: ColorThemeSwitchComponentType = function ColorThemeSwitch({\n withMoon,\n className,\n ...props\n}: ColorThemeSwitchProps) {\n const form = useForm({\n defaultValues: {\n darkMode: localStorage.getItem(\"theme\") === \"dark\",\n },\n });\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n window.document.body.parentElement?.setAttribute(\"data-theme\", form.values.darkMode ? \"dark\" : \"light\");\n localStorage.setItem(\"theme\", form.values.darkMode ? \"dark\" : \"light\");\n }, 0.2 * 1000);\n\n return () => {\n clearTimeout(timeout);\n };\n }, [form.values.darkMode]);\n useEffect(() => {\n const html = document.querySelector(\"html\");\n\n if (!html) return;\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === \"attributes\") {\n form.setFieldValue(\"darkMode\", html.getAttribute(\"data-theme\") === \"dark\");\n }\n });\n });\n\n observer.observe(html, {\n attributes: true,\n });\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return (\n <ToggleInput.switch\n className={`react-better-html-color-theme-switch ${\n withMoon ? ` react-better-html-color-theme-switch-with-moon` : \"\"\n }${className ? ` ${className}` : \"\"}`}\n {...form.getSwitchProps(\"darkMode\")}\n {...props}\n />\n );\n} as any;\n\nColorThemeSwitchComponent.withText = function WithText({ withMoon, className, ...props }) {\n const theme = useTheme();\n\n return (\n <Div.row width=\"fit-content\" alignItems=\"center\" gap={theme.styles.gap} userSelect=\"none\" {...props}>\n <Text>Light</Text>\n <ColorThemeSwitchComponent withMoon={withMoon} className={className} />\n <Text>Dark</Text>\n </Div.row>\n );\n} as ColorThemeSwitchComponentType[\"withText\"];\n\nconst ColorThemeSwitch = memo(ColorThemeSwitchComponent) as any as typeof ColorThemeSwitchComponent & {\n withText: typeof ColorThemeSwitchComponent.withText;\n};\n\nColorThemeSwitch.withText = ColorThemeSwitchComponent.withText;\n\nexport default ColorThemeSwitch;\n","import { forwardRef, memo, useCallback, ReactNode, useMemo, useState } from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport { Theme } from \"../types/theme\";\nimport { ComponentMarginProps, ComponentPropWithRef } from \"../types/components\";\n\nimport Div from \"./Div\";\nimport ToggleInput, { ToggleInputProps } from \"./ToggleInput\";\nimport Image, { ImageProps } from \"./Image\";\nimport { useTheme } from \"./BetterHtmlProvider\";\nimport Text from \"./Text\";\n\nconst defaultImageWidth = 120;\n\nconst TableStyledComponent = styled.table.withConfig({\n shouldForwardProp: (prop) => ![\"isStriped\", \"withHover\", \"withStickyHeader\", \"theme\"].includes(prop),\n})<{\n isStriped?: boolean;\n withHover?: boolean;\n withStickyHeader?: boolean;\n theme: Theme;\n}>`\n width: 100%;\n border-collapse: collapse;\n border-spacing: 0;\n\n tr {\n background-color: ${(props) => props.theme.colors.backgroundContent};\n\n &.isHeader {\n background-color: ${(props) => props.theme.colors.backgroundSecondary};\n font-weight: 700;\n }\n\n &.isClickable {\n cursor: pointer;\n }\n\n ${(props) =>\n props.isStriped\n ? css`\n &:nth-child(even) {\n background-color: ${props.theme.colors.backgroundSecondary};\n }\n `\n : \"\"}\n\n ${(props) =>\n props.withHover\n ? css`\n transition: ${props.theme.styles.transition};\n\n &:not(.isHeader):hover {\n filter: brightness(0.95);\n }\n `\n : \"\"}\n\n th {\n font-size: 18px;\n text-align: left;\n padding: ${(props) => props.theme.styles.space}px;\n }\n\n td {\n border-top: 1px solid ${(props) => props.theme.colors.border}60;\n padding: ${(props) => props.theme.styles.gap}px ${(props) => props.theme.styles.space}px;\n\n &.noData {\n text-align: center;\n padding: ${(props) => props.theme.styles.space}px;\n }\n }\n }\n`;\n\nconst ThStyledComponent = styled.th.withConfig({\n shouldForwardProp: (prop) => ![\"width\", \"minWidth\", \"maxWidth\", \"textAlign\"].includes(prop),\n})<{\n width?: React.CSSProperties[\"width\"];\n minWidth?: React.CSSProperties[\"minWidth\"];\n maxWidth?: React.CSSProperties[\"maxWidth\"];\n textAlign?: React.CSSProperties[\"textAlign\"];\n}>`\n ${(props) => (props.width ? `width: ${props.width}px;` : \"\")}\n ${(props) => (props.minWidth ? `min-width: ${props.minWidth}px;` : \"\")}\n ${(props) => (props.maxWidth ? `max-width: ${props.maxWidth}px;` : \"\")}\n ${(props) => (props.textAlign ? `text-align: ${props.textAlign} !important;` : \"\")}\n`;\n\nconst TdStyledComponent = styled.td.withConfig({\n shouldForwardProp: (prop) => ![\"width\", \"textAlign\"].includes(prop),\n})<{\n textAlign?: React.CSSProperties[\"textAlign\"];\n}>`\n ${(props) => (props.textAlign ? `text-align: ${props.textAlign} !important;` : \"\")}\n`;\n\ntype TextColumn<DataItem> = {\n type: \"text\";\n keyName?: keyof DataItem;\n format?: (item: DataItem, index: number) => string;\n};\n\ntype ElementColumn<DataItem> = {\n type: \"element\";\n render?: (item: DataItem, index: number) => ReactNode;\n};\n\ntype ImageColumn<DataItem> = {\n type: \"image\";\n keyName?: keyof DataItem;\n} & ImageProps;\n\ntype CheckboxColumn = {\n type: \"checkbox\";\n} & ToggleInputProps<boolean>;\n\nexport type TableColumn<DataItem> = {\n label?: string;\n width?: string | number;\n minWidth?: string | number;\n maxWidth?: string | number;\n align?: \"left\" | \"center\" | \"right\";\n} & (TextColumn<DataItem> | ElementColumn<DataItem> | ImageColumn<DataItem> | CheckboxColumn);\n\nexport type TableProps<DataItem> = {\n columns: TableColumn<DataItem>[];\n data: DataItem[];\n /** @default false */\n isStriped?: boolean;\n /** @default false */\n withStickyHeader?: boolean;\n /** @default \"No data available\" */\n noDataItemsMessage?: string;\n onClickRow?: (item: DataItem, index: number) => void;\n onClickAllCheckboxes?: (checked: boolean) => void;\n} & ComponentMarginProps;\n\ntype TableComponentType = {\n <DataItem>(props: ComponentPropWithRef<HTMLDivElement, TableProps<DataItem>>): React.ReactElement;\n};\n\nconst TableComponent: TableComponentType = forwardRef(function Table<DataItem>(\n {\n columns,\n data,\n isStriped,\n withStickyHeader,\n noDataItemsMessage = \"No data available\",\n onClickRow,\n onClickAllCheckboxes,\n ...props\n }: TableProps<DataItem>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const theme = useTheme();\n\n const [checkedItems, setCheckedItems] = useState<boolean[]>([]);\n\n const renderCellContent = useCallback(\n (column: (typeof columns)[number], item: DataItem, index: number) => {\n switch (column.type) {\n case \"text\": {\n const value = column.keyName ? item[column.keyName] : undefined;\n\n return column.format ? column.format(item, index) : String(value ?? \"\");\n }\n\n case \"element\": {\n return column.render?.(item, index) ?? <></>;\n }\n\n case \"image\": {\n const { type, keyName, ...props } = column;\n\n const src = keyName ? (item[keyName] as string) : undefined;\n\n return (\n <Image src={src} width={defaultImageWidth} borderRadius={theme.styles.borderRadius / 2} {...props} />\n );\n }\n\n case \"checkbox\": {\n const { type, onChange, ...props } = column;\n\n const checkedValue = checkedItems[index];\n\n return (\n <ToggleInput.checkbox\n checked={checkedValue}\n onChange={(checked: boolean, value) => {\n setCheckedItems((oldValue) =>\n oldValue.map((isChecked, internalIndex) => (internalIndex === index ? checked : isChecked)),\n );\n\n onChange?.(checked, value);\n }}\n {...props}\n />\n );\n }\n\n default: {\n return <></>;\n }\n }\n },\n [theme, checkedItems],\n );\n const onClickRowElement = useCallback(\n (item: DataItem, index: number) => {\n onClickRow?.(item, index);\n },\n [onClickRow],\n );\n const onClickAllCheckboxesElement = useCallback(\n (checked: boolean) => {\n onClickAllCheckboxes?.(checked);\n setCheckedItems(data.map(() => checked));\n },\n [onClickAllCheckboxes, data],\n );\n\n const everythingIsChecked = useMemo<boolean>(() => {\n return checkedItems.every((checked) => checked) && checkedItems.length === data.length;\n }, [data, checkedItems]);\n\n return (\n <Div\n border={`1px solid ${theme.colors.border}`}\n borderRadius={theme.styles.borderRadius * 2}\n overflow=\"auto\"\n {...props}\n ref={ref}\n >\n <TableStyledComponent\n isStriped={isStriped}\n withHover={onClickRow !== undefined}\n withStickyHeader={withStickyHeader}\n theme={theme}\n >\n <thead>\n <tr className=\"isHeader\">\n {columns.map((column, index) => (\n <ThStyledComponent\n width={\n column.type === \"image\" ? defaultImageWidth : column.type === \"checkbox\" ? 26 : column.width\n }\n minWidth={column.minWidth}\n maxWidth={column.maxWidth}\n textAlign={column.align}\n key={column.type + column.label + index}\n >\n {column.label ??\n (column.type === \"checkbox\" && onClickAllCheckboxes ? (\n <ToggleInput.checkbox\n checked={everythingIsChecked}\n onChange={onClickAllCheckboxesElement}\n />\n ) : (\n \"\"\n ))}\n </ThStyledComponent>\n ))}\n </tr>\n </thead>\n\n <tbody>\n {data.length > 0 ? (\n data.map((item, rowIndex) => (\n <tr\n className={onClickRow ? \"isClickable\" : undefined}\n onClick={() => onClickRowElement(item, rowIndex)}\n key={JSON.stringify(item) + rowIndex}\n >\n {columns.map((column, colIndex) => (\n <TdStyledComponent textAlign={column.align} key={column.type + column.label + colIndex}>\n {renderCellContent(column, item, rowIndex)}\n </TdStyledComponent>\n ))}\n </tr>\n ))\n ) : (\n <tr>\n <td className=\"noData\" colSpan={columns.length}>\n <Text.unknown>{noDataItemsMessage}</Text.unknown>\n </td>\n </tr>\n )}\n </tbody>\n </TableStyledComponent>\n </Div>\n );\n}) as any;\n\nconst Table = memo(TableComponent) as any as typeof TableComponent;\n\nexport default Table;\n","import { countries } from \"../constants/countries\";\n\nimport { PartialRecord } from \"../types/app\";\nimport { BrowserName } from \"../types/other\";\n\nimport { useForm } from \"./hooks\";\n\nexport const generateRandomString = (\n stringLength: number,\n options?: {\n /** @default true */\n includeCapitalLetters?: boolean;\n /** @default true */\n includeLowerLetters?: boolean;\n /** @default true */\n includeNumbers?: boolean;\n /** @default 1 */\n dashSections?: number;\n },\n): string => {\n const capitals = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n const lowers = \"abcdefghijklmnopqrstuvwxyz\";\n const numbers = \"0123456789\";\n\n const includes: string[] = [];\n\n if (options?.includeCapitalLetters !== false) includes.push(capitals);\n if (options?.includeLowerLetters !== false) includes.push(lowers);\n if (options?.includeNumbers !== false) includes.push(numbers);\n\n const characters = includes.join(\"\");\n\n const dashSections = Math.max(1, options?.dashSections ?? 1);\n const dashSectionLength = Math.floor(stringLength / dashSections);\n\n if (stringLength < dashSections) return \"\";\n\n let result = \"\";\n let currentSectionLength = 0;\n\n while (result.length < stringLength) {\n if (currentSectionLength >= dashSectionLength) {\n result += \"-\";\n currentSectionLength = 0;\n }\n\n if (result.length < stringLength) {\n result += characters.charAt(Math.floor(Math.random() * characters.length));\n currentSectionLength += 1;\n }\n }\n\n return result;\n};\n\nexport const getBrowser = (): BrowserName | undefined => {\n const userAgent = navigator.userAgent.toLowerCase();\n\n if (userAgent.includes(\"firefox\")) return \"firefox\";\n if (userAgent.includes(\"chrome\") && !userAgent.includes(\"edg\")) return \"chrome\";\n if (userAgent.includes(\"safari\") && !userAgent.includes(\"chrome\")) return \"safari\";\n if (userAgent.includes(\"edg\")) return \"edge\";\n if (userAgent.includes(\"opr\") || userAgent.includes(\"opera\")) return \"opera\";\n\n return;\n};\n\nexport const formatPhoneNumber = (phoneNumber: string): string => {\n const cleanPhoneNumber = phoneNumber.replace(/\\D/g, \"\");\n\n const country = countries.find(\n (country) => country.phoneNumberExtension === cleanPhoneNumber.slice(0, country.phoneNumberExtension.length),\n );\n\n if (!country) return phoneNumber;\n\n let phonNumberRest = cleanPhoneNumber.slice(country.phoneNumberExtension.length);\n\n if (country.phoneNumberFormat) {\n let formattedNumber = \"\";\n let index = 0;\n\n for (const char of country.phoneNumberFormat) {\n if (char === \"X\" && index < phonNumberRest.length) {\n formattedNumber += phonNumberRest[index];\n index++;\n } else {\n formattedNumber += char;\n }\n }\n\n phonNumberRest = formattedNumber.replace(/X/g, \"\").trim();\n }\n\n return `+${country.phoneNumberExtension} ${phonNumberRest}`;\n};\n\nexport const getFormErrorObject = <FormFields extends ReturnType<typeof useForm>[\"values\"]>(\n formValues: FormFields,\n): PartialRecord<keyof FormFields, string> => {\n return {};\n};\n","import { AnyOtherString } from \"../types/app\";\nimport { LoaderName } from \"../types/loader\";\n\nimport { BetterHtmlInternalConfig, externalBetterHtmlContextValue } from \"../components/BetterHtmlProvider\";\n\nconst checkBetterHtmlContextValue = (\n value: BetterHtmlInternalConfig | undefined,\n functionsName: string,\n): value is BetterHtmlInternalConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterHtmlProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\n\nexport const loaderControls = {\n startLoading: (loaderName: LoaderName | AnyOtherString) => {\n if (!checkBetterHtmlContextValue(externalBetterHtmlContextValue, \"loaderControls.startLoading\")) return;\n\n externalBetterHtmlContextValue.setLoaders((oldValue) => ({\n ...oldValue,\n [loaderName.toString()]: true,\n }));\n },\n stopLoading: (loaderName: LoaderName | AnyOtherString) => {\n if (!checkBetterHtmlContextValue(externalBetterHtmlContextValue, \"loaderControls.stopLoading\")) return;\n\n externalBetterHtmlContextValue.setLoaders((oldValue) => ({\n ...oldValue,\n [loaderName.toString()]: false,\n }));\n },\n};\n","import { Link as RouterLink, NavLink as RouterNavLink } from \"react-router-dom\";\n\nimport { BetterHtmlPlugin } from \"../types/plugin\";\n\nexport const reactRouterDomPlugin: BetterHtmlPlugin = {\n name: \"react-router-dom\",\n components: {\n Link: RouterLink,\n NavLink: RouterNavLink,\n },\n initialize: () => {\n console.log(\"react-router-dom plugin initialized\");\n },\n};\n"],"mappings":"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AAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,EACtB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IA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A;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,sBAAsB;AAAA,EACzB;AAAA,EACA;AAAA,IACG,MAAM;AAAA,IACN,MAAM;AAAA,I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","names":["import_react","import_styled_components","import_react","theme","theme","values","reactRouterDomPlugin","import_jsx_runtime","styled","theme","Div","import_react","import_styled_components","import_jsx_runtime","styled","theme","Text","import_react","import_styled_components","import_jsx_runtime","styled","theme","Box","Loader","import_react","import_styled_components","import_jsx_runtime","import_react","styled","Icon","theme","icons","import_react","import_styled_components","import_jsx_runtime","styled","Image","theme","assets","import_react","import_styled_components","import_jsx_runtime","styled","theme","betterHtmlContext","Icon","Button","import_react","import_jsx_runtime","theme","Divider","import_react","import_styled_components","import_jsx_runtime","styled","reactRouterDomPlugin","theme","Modal","Destructive","import_react","import_jsx_runtime","theme","import_react","import_jsx_runtime","theme","import_react","import_jsx_runtime","theme","Chip","import_react","import_styled_components","import_react","import_jsx_runtime","theme","import_react","import_jsx_runtime","theme","value","isFocused","Dropdown","import_jsx_runtime","styled","theme","value","country","InputField","import_react","import_styled_components","import_jsx_runtime","InputElement","styled","theme","import_react","import_jsx_runtime","theme","import_react","import_jsx_runtime","theme","FormRow","import_react","import_jsx_runtime","theme","ColorThemeSwitch","import_react","import_styled_components","import_jsx_runtime","styled","theme","props","Table","country","import_react_router_dom","RouterLink","RouterNavLink"]}