polpo 0.1.11 → 0.1.13

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/accordion/accordion.component.tsx","../src/hooks/use-classnames.ts","../src/hooks/use-event-listener.ts","../src/hooks/use-click-outside.ts","../src/hooks/use-debounce.ts","../src/hooks/use-resize-observer.ts","../src/hooks/use-dom-container.ts","../src/helpers/format-bytes.ts","../src/helpers/get-modal-position.ts","../src/helpers/get-modal-position-relative-to-screen.ts","../src/hooks/use-in-view.ts","../src/hooks/use-intersection-observer.ts","../src/hooks/use-input-handlers.ts","../src/hooks/use-media-query.ts","../src/hooks/use-modal.ts","../src/hooks/use-modal-in-container.ts","../src/hooks/use-modal-transition.ts","../src/hooks/use-mouse-position.ts","../src/hooks/use-toggle-values.ts","../src/components/line/line.component.tsx","../src/components/accordion/accordion-item.tsx","../src/components/cards/slide-card/slide-card.component.tsx","../src/components/cards/flip-card/flip-card.component.tsx","../src/components/cards/hover-card/hover-card.component.tsx","../src/components/typography/typography.component.tsx","../src/components/typography/typography.constants.ts","../src/components/ripple/ripple.component.tsx","../src/components/button/button.component.tsx","../src/components/cursor/cursor.component.tsx","../src/components/form/checkbox/checkbox.component.tsx","../src/components/form/controller/controller.component.tsx","../src/components/form/date-picker/date-picker.component.tsx","../src/components/form/field/field.component.tsx","../src/components/form/field/field.types.ts","../src/components/form/input/input.component.tsx","../src/components/form/input-password/input-password.component.tsx","../src/components/form/input-color/input-color.component.tsx","../src/components/modals/action-modal/action-modal.component.tsx","../src/components/modals/modal/modal.component.tsx","../src/components/modals/portal/portal.component.tsx","../src/components/modals/modal/modal.backdrop.tsx","../src/components/modals/aside-modal/aside-modal.component.tsx","../src/components/modals/confirmation-modal/confirmation-modal.component.tsx","../src/components/modals/menu/menu.component.tsx","../src/components/form/input-file/input-file.component.tsx","../src/layouts/grid/grid.component.tsx","../src/components/form/input-number/input-number.component.tsx","../src/components/form/radio/radio.component.tsx","../src/components/form/select/select.component.tsx","../src/components/infinity-scroll/infinity-scroll.component.tsx","../src/components/form/select/option.tsx","../src/components/form/select/options.tsx","../src/components/form/slider/slider.component.tsx","../src/components/form/textarea/textarea.component.tsx","../src/components/form/switch/switch.component.tsx","../src/components/tooltips/click-to-copy/click-to-copy.component.tsx","../src/components/tooltips/tooltip/tooltip.component.tsx","../src/components/image/image.tsx","../src/components/smart-table/smart-table.component.tsx","../src/components/smart-table/smart-table.column.tsx","../src/components/smart-table/smart-table.helpers.tsx","../src/components/smart-table/smart-table.hooks.ts","../src/components/smart-table/smart-table.row.tsx","../src/components/tabs/tabs.tsx","../src/components/tabs/tabs-list.tsx","../src/components/tag/tag.component.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useMemo, useState } from 'react';\n\nimport { useClassNames } from '../../hooks';\nimport { Line } from '../line';\n\nimport './accordion.styles.css';\n\ntype AccordionContextState = {\n toggleItem: (id: string) => void;\n openedItems: Array<string>;\n};\n\nconst AccordionContext = createContext<AccordionContextState | null>(null);\n\nexport const useAccordionItem = (id: string): [boolean, () => void] => {\n const context = useContext(AccordionContext);\n\n if (!context) {\n throw new Error('You cant use this component out off an Accordion component');\n }\n\n const { toggleItem, openedItems } = context;\n\n const toggle = () => toggleItem(id);\n\n return [openedItems.includes(id), toggle];\n};\n\ntype AccordionProps = {\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n noSeparators?: boolean;\n multiple?: boolean;\n defaultOpened?: Array<string> | string;\n};\n\nexport const Accordion = ({\n children,\n className = '',\n noSeparators,\n multiple,\n style = {},\n defaultOpened = [],\n}: AccordionProps) => {\n const [openedItems, setOpenedItems] = useState<{ [index: string]: boolean }>(() => {\n return (Array.isArray(defaultOpened) ? defaultOpened : [defaultOpened]).reduce((acc, id) => {\n return typeof id === 'string' ? { ...acc, [id]: true } : acc;\n }, {});\n });\n\n const toggleItem = useCallback(\n (id: string) => {\n setOpenedItems(prev => ({ ...(multiple ? prev : {}), [id]: !prev[id] }));\n },\n [multiple],\n );\n\n const openedItemsIDs = useMemo(() => Object.keys(openedItems).filter(id => openedItems[id]), [openedItems]);\n\n const accordionClassName = useClassNames({\n accordion: true,\n [className]: Boolean(className),\n });\n\n return (\n <AccordionContext.Provider\n value={{\n toggleItem,\n openedItems: openedItemsIDs,\n }}\n >\n <section className={accordionClassName} style={style}>\n {(Array.isArray(children) ? children : [children]).flatMap((child, key) => {\n return key === 0 ? child : [noSeparators ? null : <Line orientation='horizontal' key={`${key}.5`} />, child];\n })}\n </section>\n </AccordionContext.Provider>\n );\n};\n","import { useMemo } from 'react';\n\nexport const useClassNames = (classes: Record<string, boolean>): string =>\n useMemo<string>(\n () =>\n Object.entries(classes)\n .reduce<Array<string>>(\n (compiledClassNames, [classname, value]) => (value ? [...compiledClassNames, classname] : compiledClassNames),\n [],\n )\n .join(' '),\n [classes],\n );\n","import { RefObject, useEffect, useLayoutEffect, useRef } from 'react';\n\nfunction useEventListener<EventName extends keyof MediaQueryListEventMap>(\n eventName: EventName,\n callback: (event: MediaQueryListEventMap[EventName]) => void,\n element: RefObject<MediaQueryList | null> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof WindowEventMap>(\n eventName: EventName,\n callback: (event: WindowEventMap[EventName]) => void,\n element?: undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof HTMLElementEventMap, ElementRef extends HTMLElement = HTMLDivElement>(\n eventName: EventName,\n callback: (event: HTMLElementEventMap[EventName]) => void,\n element: RefObject<ElementRef | null> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof DocumentEventMap>(\n eventName: EventName,\n callback: (event: DocumentEventMap[EventName]) => void,\n element: RefObject<Document | null> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<\n MediaQueryEventName extends keyof MediaQueryListEventMap,\n WindowEventName extends keyof WindowEventMap,\n ElementEventName extends keyof HTMLElementEventMap,\n DocumentEventName extends keyof DocumentEventMap,\n ElementRef extends HTMLElement | MediaQueryList | Document | Window | void = void,\n>(\n eventName: WindowEventName | DocumentEventName | ElementEventName | MediaQueryEventName,\n callback: (\n event:\n | MediaQueryListEventMap[MediaQueryEventName]\n | WindowEventMap[WindowEventName]\n | HTMLElementEventMap[ElementEventName]\n | DocumentEventMap[DocumentEventName]\n | Event,\n ) => void,\n element?: RefObject<ElementRef | null> | undefined,\n options?: boolean | AddEventListenerOptions,\n) {\n const callbackRef = useRef<EventListener>(callback);\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useLayoutEffect(() => {\n const targetElement = element?.current ?? window;\n\n if (!(targetElement && targetElement.addEventListener)) return;\n\n const listener: typeof callback = event => callbackRef.current(event);\n\n targetElement.addEventListener(eventName, listener, options);\n\n return () => {\n targetElement.removeEventListener(eventName, listener, options);\n };\n }, [eventName, element, options]);\n}\n\nexport { useEventListener };\n","import { RefObject } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\nconst checkIsOutside = (ref: RefObject<HTMLElement | null>, target: Node) => {\n return ref.current && !ref.current.contains(target);\n};\n\nexport const useClickOutside = <T extends HTMLElement>(\n ref: RefObject<T | null> | Array<RefObject<T | null>>,\n callback: () => void,\n) => {\n useEventListener('keydown', e => {\n if (e.key === 'Escape') {\n callback();\n }\n });\n\n useEventListener('mousedown', event => {\n const target = event.target as Node;\n\n if (!target?.isConnected) {\n return;\n }\n\n const isOutside = (Array.isArray(ref) ? ref : [ref]).every(r => checkIsOutside(r, target));\n\n if (isOutside) {\n callback();\n }\n });\n};\n","import { useEffect, useState } from 'react';\n\nexport const useDebounce = <T>(value: T, delay: number = 500): T => {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay);\n\n return () => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return debouncedValue;\n};\n","import { RefObject, useEffect } from 'react';\n\nexport const useResizeObserver = <T extends Element>(\n ref: RefObject<T | null> | Array<RefObject<T | null>>,\n callback: ResizeObserverCallback,\n) => {\n useEffect(() => {\n const refs = Array.isArray(ref) ? ref : [ref];\n\n const observer = new ResizeObserver(callback);\n\n refs.forEach(r => r.current && observer.observe(r.current));\n\n return () => {\n observer.disconnect();\n };\n }, [ref, callback]);\n};\n","import { useEffect, useState } from 'react';\n\nconst createContainer = (containerID: string) => {\n let domContainer = document.getElementById(containerID);\n\n if (domContainer === null) {\n domContainer = document.createElement('div');\n domContainer.setAttribute('id', containerID);\n document.body.appendChild(domContainer);\n }\n\n return domContainer;\n};\n\nexport const useDomContainer = (containerID: string) => {\n const [container, setContainer] = useState<HTMLElement | null>(() => createContainer(containerID));\n\n useEffect(() => {\n const domContainer = document.getElementById(containerID);\n\n if (container === null || domContainer === null) {\n const domContainer = createContainer(containerID);\n\n setContainer(domContainer);\n }\n\n return () => {\n if (container && container.parentNode && process.env.NODE_ENV === 'production') {\n document.body.removeChild(container);\n }\n };\n }, [container, containerID]);\n\n return container;\n};\n","export const formatBytes = (bytes: number, decimals = 2) => {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1000;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n};\n","export enum PositionContainer {\n CENTER = 'center',\n TOP = 'top',\n TOP_LEFT = 'top left',\n TOP_RIGHT = 'top right',\n TOP_CENTER = 'top center',\n LEFT = 'left',\n LEFT_TOP = 'left top',\n LEFT_BOTTOM = 'left bottom',\n LEFT_CENTER = 'left center',\n RIGHT = 'right',\n RIGHT_TOP = 'right top',\n RIGHT_BOTTOM = 'right bottom',\n RIGHT_CENTER = 'right center',\n BOTTOM = 'bottom',\n BOTTOM_LEFT = 'bottom left',\n BOTTOM_RIGHT = 'bottom right',\n BOTTOM_CENTER = 'bottom center',\n}\n\nexport type PositionObject = {\n x: number;\n y: number;\n top: number;\n left: number;\n w: number;\n h: number;\n};\n\nexport type ModalPosition = {\n left: number;\n top: number;\n};\n\nexport type GetModalPositionParams = {\n c: PositionObject;\n m: PositionObject;\n offset: number;\n position: PositionContainer;\n};\n\n/*\n * @description Calculates the position of the modal relative to the container\n *\n * @param c - The container's position object\n * @param m - The modal's position object\n * @param offset - The offset between the container and the modal\n * @param position - The position of the modal\n *\n * -----------------------------------------------------------------------------\n * @returns The position of the modal relative to the container\n */\nexport const getModalPosition = ({ c, m, offset, position }: GetModalPositionParams): ModalPosition => {\n // Default bottom\n let top = c.y + c.h + offset;\n let left = c.x - (m.w - c.w) * (50 / 100);\n\n switch (position) {\n case PositionContainer.TOP:\n case PositionContainer.TOP_CENTER:\n top = c.y - m.h - offset;\n left = c.x - (m.w - c.w) / 2;\n\n break;\n case PositionContainer.TOP_LEFT:\n top = c.y - m.h - offset;\n left = c.x - m.w + c.w;\n\n break;\n\n case PositionContainer.TOP_RIGHT:\n top = c.y - m.h - offset;\n left = c.x;\n\n break;\n\n case PositionContainer.BOTTOM:\n case PositionContainer.BOTTOM_CENTER:\n top = c.y + c.h + offset;\n left = c.x - (m.w - c.w) / 2;\n\n break;\n\n case PositionContainer.BOTTOM_LEFT:\n top = c.y + c.h + offset;\n left = c.x - m.w + c.w;\n\n break;\n\n case PositionContainer.BOTTOM_RIGHT:\n top = c.y + c.h + offset;\n left = c.x;\n\n break;\n\n case PositionContainer.LEFT:\n case PositionContainer.LEFT_CENTER:\n top = c.y - (m.h - c.h) / 2;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.LEFT_TOP:\n top = c.y - m.h + c.h;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.LEFT_BOTTOM:\n top = c.y;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.RIGHT:\n case PositionContainer.RIGHT_CENTER:\n top = c.y - (m.h - c.h) / 2;\n left = c.x + c.w + offset;\n\n break;\n\n case PositionContainer.RIGHT_TOP:\n top = c.y - m.h + c.h;\n left = c.x + c.w + offset;\n\n break;\n\n case PositionContainer.RIGHT_BOTTOM:\n top = c.y;\n left = c.x + c.w + offset;\n\n break;\n }\n\n return {\n left: Math.round(left),\n top: Math.round(top),\n };\n};\n\nexport const getOppositePosition = (\n { top, left }: ModalPosition,\n position: PositionContainer,\n windowOffset: number,\n m: PositionObject,\n) => {\n const positions = position.split(' ');\n const newPosition = [];\n const rightOffset = left + m.w + windowOffset - window.innerWidth;\n const bottomOffset = top + m.h + windowOffset - window.innerHeight;\n\n for (const p of positions) {\n if (p === PositionContainer.TOP && top < windowOffset) {\n newPosition.push(PositionContainer.BOTTOM);\n } else if (p === PositionContainer.LEFT && left < windowOffset) {\n newPosition.push(PositionContainer.RIGHT);\n } else if (p === PositionContainer.BOTTOM && bottomOffset > 0) {\n newPosition.push(PositionContainer.TOP);\n } else if (p === PositionContainer.RIGHT && rightOffset > 0) {\n newPosition.push(PositionContainer.LEFT);\n } else {\n newPosition.push(p);\n }\n }\n\n return newPosition.join(' ') as PositionContainer;\n};\n\nexport const fixModalPosition = ({ top, left }: ModalPosition, m: PositionObject, windowOffset: number) => {\n const rightOffset = left + m.w + windowOffset - window.innerWidth;\n const bottomOffset = top + m.h + windowOffset - window.innerHeight;\n\n left = rightOffset > 0 ? left - rightOffset : left;\n top = bottomOffset > 0 ? top - bottomOffset : top;\n\n left = left < windowOffset ? windowOffset : left;\n top = top < windowOffset ? windowOffset : top;\n\n return { top, left };\n};\n\ntype getModalPositionRelativeToContainerParams = GetModalPositionParams & {\n windowOffset: number;\n};\n\nexport const getModalPositionRelativeToContainer = ({\n c,\n m,\n offset,\n windowOffset,\n position,\n}: getModalPositionRelativeToContainerParams): Record<string, string> => {\n const params = { c, m, offset, position };\n let modalContainerStyle = getModalPosition(params);\n\n const oppositePosition = getOppositePosition(modalContainerStyle, position, windowOffset, m);\n\n if (oppositePosition !== position) {\n modalContainerStyle = getModalPosition({\n ...params,\n position: oppositePosition,\n });\n }\n\n const fixedPosition = fixModalPosition(modalContainerStyle, m, windowOffset);\n\n return {\n left: `${fixedPosition.left}px`,\n top: `${fixedPosition.top}px`,\n };\n};\n","import { PositionContainer } from './get-modal-position';\n\nexport type GetModalPositionRelativeToScreenParams = {\n position: PositionContainer;\n windowOffset: number;\n};\n\nexport const getModalPositionRelativeToScreen = ({\n position,\n windowOffset,\n}: GetModalPositionRelativeToScreenParams): Record<string, string> => {\n switch (position) {\n case PositionContainer.CENTER:\n return {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n\n case PositionContainer.TOP:\n case PositionContainer.TOP_CENTER:\n return {\n top: `${windowOffset}px`,\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n case PositionContainer.TOP_LEFT:\n case PositionContainer.LEFT_TOP:\n return {\n top: `${windowOffset}px`,\n left: `${windowOffset}px`,\n };\n\n case PositionContainer.TOP_RIGHT:\n case PositionContainer.RIGHT_TOP:\n return {\n top: `${windowOffset}px`,\n right: `${windowOffset}px`,\n };\n\n case PositionContainer.BOTTOM:\n case PositionContainer.BOTTOM_CENTER:\n return {\n bottom: `${windowOffset}px`,\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n case PositionContainer.LEFT_BOTTOM:\n case PositionContainer.BOTTOM_LEFT:\n return {\n bottom: `${windowOffset}px`,\n left: `${windowOffset}px`,\n };\n\n case PositionContainer.RIGHT_BOTTOM:\n case PositionContainer.BOTTOM_RIGHT:\n return {\n bottom: `${windowOffset}px`,\n right: `${windowOffset}px`,\n };\n\n case PositionContainer.LEFT:\n case PositionContainer.LEFT_CENTER:\n return {\n top: '50%',\n left: `${windowOffset}px`,\n transform: 'translateY(-50%)',\n };\n\n case PositionContainer.RIGHT:\n case PositionContainer.RIGHT_CENTER:\n return {\n top: '50%',\n right: `${windowOffset}px`,\n transform: 'translateY(-50%)',\n };\n }\n\n return {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n};\n","import { useRef, useState } from 'react';\n\nimport { useIntersectionObserver } from './use-intersection-observer';\n\nexport const useInView = (initOptions: IntersectionObserverInit = {}) => {\n const [inView, setInView] = useState(false);\n const ref = useRef<HTMLElement>(null);\n\n useIntersectionObserver(\n ref,\n ([entry]) => {\n setInView(entry.isIntersecting);\n },\n initOptions,\n );\n\n return { ref, inView };\n};\n","import { RefObject, useEffect } from 'react';\n\nexport const useIntersectionObserver = <T extends Element>(\n ref: RefObject<T | null> | Array<RefObject<T | null>>,\n callback: IntersectionObserverCallback,\n initOptions: IntersectionObserverInit = {},\n) => {\n useEffect(() => {\n const refs = Array.isArray(ref) ? ref : [ref];\n\n const observer = new IntersectionObserver(callback, initOptions);\n\n refs.forEach(r => r.current && observer.observe(r.current));\n\n return () => {\n observer.disconnect();\n };\n }, [callback, initOptions, ref]);\n};\n","import React, { useCallback, useState } from 'react';\n\ntype InputTypes = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n\ntype UseInputHandlersProps<T extends InputTypes> = {\n onBlur?: (e: React.FocusEvent<T>) => void;\n onFocus?: (e: React.FocusEvent<T>) => void;\n onChange?: (e: React.ChangeEvent<T>) => void;\n};\n\nexport const useInputHandlers = <T extends InputTypes>({\n onBlur,\n onFocus,\n onChange,\n}: UseInputHandlersProps<T> = {}) => {\n const [isFocus, setIsFocus] = useState(false);\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<T>) => {\n setIsFocus(true);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n onFocus && onFocus(e);\n },\n [onFocus],\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<T>) => {\n setIsFocus(false);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n onBlur && onBlur(e);\n },\n [onBlur],\n );\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<T>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n onChange && onChange(e);\n },\n [onChange],\n );\n\n return {\n isFocus,\n handlers: {\n onFocus: handleFocus,\n onBlur: handleBlur,\n onChange: handleChange,\n },\n };\n};\n","import { useEffect, useState } from 'react';\n\nexport const useMediaQuery = (query: string): boolean => {\n const [matches, setMatches] = useState(false);\n\n useEffect(() => {\n const media = window.matchMedia(query);\n\n if (media.matches !== matches) {\n setMatches(media.matches);\n }\n\n const listener = () => {\n setMatches(media.matches);\n };\n\n media.addEventListener('change', listener);\n\n return () => {\n media.removeEventListener('change', listener);\n };\n }, [matches, query]);\n\n return matches;\n};\n","import { useRef, useState } from 'react';\n\nexport const useModal = <T extends HTMLElement>() => {\n const containerRef = useRef<T>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n const openModal = () => {\n setIsOpen(true);\n };\n\n const closeModal = () => {\n setIsOpen(false);\n };\n\n return {\n containerRef,\n isOpen,\n openModal,\n closeModal,\n };\n};\n","import { RefObject, useCallback, useLayoutEffect, useRef } from 'react';\n\nimport {\n getModalPositionRelativeToContainer,\n getModalPositionRelativeToScreen,\n PositionContainer,\n PositionObject,\n} from '../helpers';\n\nimport { useEventListener } from './use-event-listener';\nimport { useResizeObserver } from './use-resize-observer';\n\nconst convertDOMRectToPosition = (rect: DOMRectReadOnly): PositionObject => ({\n x: rect.x,\n y: rect.y,\n w: rect.width,\n h: rect.height,\n top: rect.top,\n left: rect.left,\n});\n\nexport type UseModalInContainerParams<\n Container extends HTMLElement = HTMLElement,\n Modal extends HTMLElement = Container,\n> = {\n windowOffset?: number;\n offset?: number;\n position?: `${PositionContainer}`;\n modalRef: RefObject<Modal | null>;\n containerRef?: RefObject<Container | null>;\n isOpen: boolean;\n};\n\nexport const useModalInContainer = <\n Container extends HTMLElement = HTMLElement,\n Modal extends HTMLElement = Container,\n>({\n offset = 0,\n windowOffset = 0,\n position = PositionContainer.BOTTOM,\n modalRef,\n containerRef,\n isOpen,\n}: UseModalInContainerParams<Container, Modal>) => {\n const containerTemporalRef = useRef<Container>(null);\n\n const getPosition = useCallback(\n (modalRef: RefObject<Modal | null>, containerRef: RefObject<Container | null>) => {\n const modal = modalRef.current?.getClientRects()[0];\n const container = containerRef.current?.getClientRects()[0];\n\n if (!modal) {\n return;\n }\n\n const modalStyle: Record<string, string> = !container\n ? getModalPositionRelativeToScreen({ position: position as PositionContainer, windowOffset })\n : getModalPositionRelativeToContainer({\n c: convertDOMRectToPosition(container),\n m: convertDOMRectToPosition(modal),\n offset,\n windowOffset,\n position: position as PositionContainer,\n });\n\n Object.keys(modalStyle).forEach(key => {\n modalRef.current?.style.setProperty(key, modalStyle[key]);\n });\n },\n [position, windowOffset, offset],\n );\n\n const callback = useCallback(() => {\n if (isOpen) {\n getPosition(modalRef, containerRef ?? containerTemporalRef);\n }\n }, [getPosition, isOpen, containerRef, modalRef]);\n\n useLayoutEffect(callback, [callback]);\n\n useResizeObserver<Container>(containerRef ?? containerTemporalRef, callback);\n useResizeObserver<Modal>(modalRef, callback);\n useEventListener('resize', callback);\n useEventListener('scroll', callback, modalRef);\n};\n","import React, { useCallback, useEffect, useLayoutEffect, useMemo } from 'react';\n\nexport enum ModalState {\n OPENING = 'OPENING',\n OPEN = 'OPEN',\n CLOSING = 'CLOSING',\n CLOSED = 'CLOSED',\n}\n\nexport type UseModalTransitionParams = {\n transitionDuration?: number;\n isOpen: boolean;\n};\n\nexport const useModalTransition = ({ transitionDuration = 0, isOpen }: UseModalTransitionParams) => {\n const [modalState, setModalState] = React.useState<ModalState>(ModalState.CLOSED);\n\n const isVisible = useMemo(() => {\n return modalState !== ModalState.CLOSED;\n }, [modalState]);\n\n useEffect(() => {\n document.documentElement.style.overflow = isVisible ? 'hidden' : 'auto';\n }, [isVisible]);\n\n const closeModal = useCallback(() => {\n if ([ModalState.OPENING, ModalState.OPEN].includes(modalState)) {\n if (transitionDuration > 0) {\n setModalState(ModalState.CLOSING);\n setTimeout(() => {\n setModalState(ModalState.CLOSED);\n }, transitionDuration);\n } else {\n setModalState(ModalState.CLOSED);\n }\n }\n }, [modalState, transitionDuration]);\n\n const openModal = useCallback(() => {\n if ([ModalState.CLOSING, ModalState.CLOSED].includes(modalState)) {\n if (transitionDuration > 0) {\n setModalState(ModalState.OPENING);\n setTimeout(() => {\n setModalState(ModalState.OPEN);\n }, transitionDuration);\n } else {\n setModalState(ModalState.OPEN);\n }\n }\n }, [modalState, transitionDuration]);\n\n useLayoutEffect(() => {\n if (modalState === ModalState.CLOSED && isOpen) {\n openModal();\n } else if (modalState === ModalState.OPEN && !isOpen) {\n closeModal();\n }\n }, [isOpen, openModal, closeModal, modalState]);\n\n return {\n isVisible,\n modalState,\n };\n};\n","import React, { useRef, useState } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\ntype MousePosition = {\n x: null | number;\n y: null | number;\n elementX: number | null;\n elementY: number | null;\n elementPositionX: number | null;\n elementPositionY: number | null;\n};\n\nconst getMousePosition = (domRect: DOMRect, e: MouseEvent) => {\n const { left, top } = domRect;\n const containerPositionX = left + window.scrollX;\n const containerPositionY = top + window.scrollY;\n const containerX = e.pageX - containerPositionX;\n const containerY = e.pageY - containerPositionY;\n\n return {\n x: e.pageX,\n y: e.pageY,\n elementX: containerX,\n elementY: containerY,\n elementPositionX: containerPositionX,\n elementPositionY: containerPositionY,\n };\n};\n\nexport const useMousePosition = (containerRef?: React.RefObject<HTMLElement | SVGElement | null>) => {\n const ref = useRef<HTMLElement>(null);\n const [position, setPosition] = useState<MousePosition>({\n x: null,\n y: null,\n elementX: null,\n elementY: null,\n elementPositionX: null,\n elementPositionY: null,\n });\n\n const mouseMove = (e: MouseEvent) => {\n const { clientX, clientY } = e;\n setPosition(prev => ({ ...prev, x: clientX, y: clientY }));\n\n if (containerRef?.current instanceof Element) {\n const newState = getMousePosition(containerRef.current.getBoundingClientRect(), e);\n setPosition(prev => ({\n ...prev,\n ...newState,\n }));\n } else if (ref.current instanceof Element) {\n const newState = getMousePosition(ref.current.getBoundingClientRect(), e);\n setPosition(prev => ({\n ...prev,\n ...newState,\n }));\n }\n };\n\n useEventListener('mousemove', mouseMove);\n\n return { ...position, ref };\n};\n","import { useCallback, useState } from 'react';\n\nexport const useToggleValues = <T>(values: Array<T>, defaultIndex: number = 0): [T, (index?: number) => void] => {\n const [index, setIndex] = useState(defaultIndex);\n\n const toggle = useCallback(\n (index?: number) => {\n setIndex(index !== undefined ? index : prev => (prev + 1) % values.length);\n },\n [values.length],\n );\n\n return [values[index], toggle];\n};\n","import { useClassNames } from '../../hooks';\n\nimport './line.styles.css';\n\nexport enum LineOrientation {\n VERTICAL = 'vertical',\n HORIZONTAL = 'horizontal',\n}\n\nexport enum LineStyle {\n SOLID = 'solid',\n DOTTED = 'dotted',\n DASHED = 'dashed',\n}\n\ntype LineCommonProps = {\n orientation?: `${LineOrientation}`;\n className?: string;\n style?: React.CSSProperties;\n color?: string;\n};\n\ntype LineSolidProps = LineCommonProps & {\n lineStyle?: `${LineStyle.SOLID}`;\n spacing?: never;\n dashedSize?: never;\n size?: number;\n};\n\ntype LineDottedProps = LineCommonProps & {\n lineStyle: `${LineStyle.DOTTED}`;\n spacing?: number;\n size?: number;\n dashedSize?: never;\n};\n\ntype LineDashedProps = LineCommonProps & {\n lineStyle: `${LineStyle.DASHED}`;\n spacing?: number;\n dashedSize?: number;\n size?: number;\n};\n\ntype LineProps = LineSolidProps | LineDottedProps | LineDashedProps;\n\nexport const Line = ({\n orientation = LineOrientation.HORIZONTAL,\n className = '',\n style = {},\n color = 'currentColor',\n size = 1,\n lineStyle = LineStyle.SOLID,\n dashedSize = 1,\n spacing = 1,\n}: LineProps) => {\n const classNames = useClassNames({\n 'custom-line': true,\n [orientation]: true,\n [className]: !!className,\n [lineStyle]: true,\n });\n\n return (\n <span\n className={classNames}\n style={\n {\n ...style,\n '--color': color,\n '--size': `${size}px`,\n '--spacing': `${spacing}px`,\n '--dashSize': `${dashedSize}px`,\n } as React.CSSProperties\n }\n />\n );\n};\n","import React, { useMemo } from 'react';\nimport { IconType } from 'react-icons';\nimport { FaCaretLeft } from 'react-icons/fa';\n\nimport { useClassNames } from '../../hooks';\nimport { SlideCard } from '../cards';\nimport { Typography } from '../typography';\n\nimport { useAccordionItem } from './accordion.component';\n\ntype NodeFunction = (isOpen: boolean) => React.ReactNode;\n\ntype ContentType = React.ReactNode | NodeFunction;\n\ntype AccordionItemCommonProps = {\n icon?: IconType;\n children: React.ReactNode;\n startContent?: ContentType;\n endContent?: ContentType;\n className?: string;\n style?: React.CSSProperties;\n classNames?: {\n header?: string;\n headerContent?: string;\n title?: string;\n subtitle?: string;\n toggleIcon?: string;\n body?: string;\n };\n};\n\ntype AccordionItemTitleProps = AccordionItemCommonProps & {\n title?: ContentType;\n subtitle?: ContentType;\n content?: never;\n};\n\ntype AccordionItemContentProps = AccordionItemCommonProps & {\n title?: never;\n subtitle?: never;\n content?: ContentType;\n};\n\ntype AccordionItemProps = AccordionItemTitleProps | AccordionItemContentProps;\n\nconst getContent = (content: ContentType | undefined, isOpen: boolean): React.ReactNode | undefined => {\n if (typeof content === 'function') {\n return content(isOpen);\n }\n\n return content;\n};\n\nexport const AccordionItem: React.FC<AccordionItemProps> = ({\n title,\n subtitle,\n children,\n icon: Icon = FaCaretLeft,\n startContent,\n content,\n endContent,\n classNames = {},\n className = '',\n style = {},\n}: AccordionItemProps) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const [isOpen, toggle] = useAccordionItem(id);\n const headerClassName = useClassNames({\n 'accordion-header': true,\n 'has-start-content': !!startContent,\n [classNames?.header ?? '']: !!classNames?.header,\n 'is-open': isOpen,\n });\n\n const headerContentClassName = useClassNames({\n 'accordion-header-content': true,\n [classNames?.headerContent ?? '']: !!classNames?.headerContent,\n });\n\n const toggleIconClassName = useClassNames({\n 'accordion-toggle-icon': true,\n isOpen: isOpen,\n [classNames?.toggleIcon ?? '']: !!classNames?.toggleIcon,\n });\n\n const bodyContentClassName = useClassNames({\n 'accordion-body': true,\n [classNames?.body ?? '']: !!classNames?.body,\n });\n\n const titleContent = getContent(title, isOpen);\n const subtitleContent = getContent(subtitle, isOpen);\n const headerStart = getContent(startContent, isOpen);\n const headerMiddle = getContent(content, isOpen) ?? (\n <section className={headerContentClassName}>\n <Typography className={classNames?.title} variant='body' noPadding weight='bold'>\n {titleContent}\n </Typography>\n <Typography className={classNames?.subtitle} variant='label' noPadding weight='light'>\n {subtitleContent}\n </Typography>\n </section>\n );\n const headerEnd = getContent(endContent, isOpen) ?? <Icon className={toggleIconClassName} />;\n\n const accordionItemClassName = useClassNames({\n 'accordion-item': true,\n [className]: Boolean(className),\n });\n\n return (\n <section className={accordionItemClassName} style={style}>\n <section className={headerClassName} onClick={toggle}>\n {headerStart}\n {headerMiddle}\n {headerEnd}\n </section>\n <SlideCard isOpen={isOpen}>\n <section className={bodyContentClassName}>{children}</section>\n </SlideCard>\n </section>\n );\n};\n","import React from 'react';\n\ntype SlideCardProps = {\n children: React.ReactNode;\n isOpen: boolean;\n className?: string;\n style?: React.CSSProperties;\n};\n\nexport const SlideCard = ({ children, isOpen, className = '', style = {} }: SlideCardProps) => {\n return (\n <section\n className={className}\n style={\n {\n overflow: 'hidden',\n height: isOpen ? 'auto' : 0,\n transition: 'height 300ms ease',\n interpolateSize: 'allow-keywords',\n ...style,\n } as React.CSSProperties\n }\n >\n {children}\n </section>\n );\n};\n","import { CSSProperties, useMemo } from 'react';\n\nimport { useClassNames } from '../../../hooks';\n\nimport './flip-card.styles.css';\n\ntype FlipCardProps = {\n cardZIndex?: CSSProperties['zIndex'];\n isFlipped?: boolean;\n flipSpeed?: number;\n flipDirection?: 'horizontal' | 'vertical';\n children: [React.ReactNode, React.ReactNode];\n};\n\nexport const FlipCard = ({\n cardZIndex = 'auto',\n flipDirection = 'vertical',\n flipSpeed = 500,\n isFlipped = false,\n children,\n}: FlipCardProps) => {\n const getComponent = (key: 0 | 1): React.ReactNode => {\n if (children.length !== 2) {\n throw new Error('Component FlipCard requires 2 children');\n }\n\n return children[key] as React.ReactNode;\n };\n\n const frontRotate = useMemo(() => {\n const deg = isFlipped ? 180 : 0;\n\n return `rotate${flipDirection === 'horizontal' ? 'Y' : 'X'}(${deg}deg)`;\n }, [flipDirection, isFlipped]);\n\n const backRotate = useMemo(() => {\n const deg = isFlipped ? 0 : -180;\n\n return `rotate${flipDirection === 'horizontal' ? 'Y' : 'X'}(${deg}deg)`;\n }, [flipDirection, isFlipped]);\n\n const className = useClassNames({\n 'flip-card': true,\n 'is-flipped': isFlipped,\n });\n\n return (\n <section\n className={className}\n style={\n {\n '--cardZIndex': cardZIndex,\n '--flipSpeed': `${flipSpeed}ms`,\n '--frontRotate': frontRotate,\n '--backRotate': backRotate,\n } as React.CSSProperties\n }\n >\n <section className='flipper'>\n <section className='front'>{getComponent(0)}</section>\n\n <section className='back'>{getComponent(1)}</section>\n </section>\n </section>\n );\n};\n","import { MouseEvent, MouseEventHandler, useCallback, useRef } from 'react';\n\nimport { useClassNames, useEventListener } from '../../../hooks';\n\nimport './hover-card.styles.css';\n\ntype HoverCardProps = {\n children: React.ReactNode;\n threshold?: number;\n translationZ?: number;\n width?: 'fit-content' | '100%';\n className?: string;\n};\n\nexport const HoverCard = ({\n children,\n threshold = 5,\n translationZ = 25,\n width = 'fit-content',\n className = '',\n}: HoverCardProps) => {\n const refCard = useRef<HTMLElement>(null);\n const refLayer = useRef<HTMLElement>(null);\n\n const mouseMoveCallback = useCallback(\n (e: MouseEvent) => {\n const card = refCard.current;\n const layer = refLayer.current;\n\n if (!card || !layer) return;\n\n const { clientX, clientY, currentTarget } = e;\n const { clientWidth, clientHeight } = currentTarget;\n const { top, left } = card.getBoundingClientRect();\n\n const horizontal = (clientX - left) / clientWidth;\n const vertical = (clientY - top) / clientHeight;\n\n const relativePercentageX = horizontal * 2 - 1;\n const relativePercentageY = vertical * 2 - 1;\n\n const rotateY = (relativePercentageY * threshold).toFixed(2);\n const rotateX = (relativePercentageX * threshold).toFixed(2);\n\n layer.style.transform = `perspective(${clientWidth}px) rotateX(${-rotateY}deg) rotateY(${rotateX}deg)`;\n card.style.transform = `perspective(${clientWidth}px) translateZ(${translationZ}px)`;\n },\n [threshold, translationZ],\n );\n\n const mouseLeaveCallback = useCallback<MouseEventHandler>(e => {\n const card = refCard.current;\n const layer = refLayer.current;\n\n if (!card || !layer) return;\n\n layer.style.transform = `perspective(${e.currentTarget.clientWidth}px) rotateX(0) rotateY(0)`;\n card.style.transform = `perspective(${e.currentTarget.clientWidth}px) translateZ(0)`;\n }, []);\n\n useEventListener('mousemove', mouseMoveCallback as unknown as EventListener, refCard);\n useEventListener('mouseleave', mouseLeaveCallback as unknown as EventListener, refCard);\n\n const cardClassName = useClassNames({\n 'hover-card': true,\n [className]: Boolean(className),\n });\n\n return (\n <span ref={refCard} style={{ width }} className={cardClassName}>\n <span className='card-hover-layer' ref={refLayer}>\n {children}\n </span>\n </span>\n );\n};\n","import React, { createElement, useMemo } from 'react';\n\nimport { useClassNames } from '../../hooks';\n\nimport {\n TypographyColors,\n TypographyVariant,\n TypographyVariantsClassNames,\n TypographyVariantsElements,\n TypographyWeight,\n} from './typography.constants';\nimport './typography.styles.css';\n\nexport type TypographyProps = React.HTMLAttributes<HTMLElement | HTMLLabelElement> & {\n variant?: `${TypographyVariant}`;\n nowrap?: boolean | number;\n as?: React.HTMLElementType;\n weight?: `${TypographyWeight}`;\n children: React.ReactNode;\n noPadding?: boolean;\n htmlFor?: string;\n align?: React.CSSProperties['textAlign'];\n family?: 'primary' | 'code';\n recommendedWidth?: boolean;\n color?: `${TypographyColors}`;\n ref?: React.RefObject<HTMLElement>;\n style?: React.CSSProperties;\n};\n\nexport const Typography = ({\n variant = TypographyVariant.BODY,\n nowrap = false,\n className: customClassname = '',\n style = {},\n children,\n as,\n weight,\n family = 'primary',\n noPadding = false,\n align,\n color,\n htmlFor,\n recommendedWidth = false,\n ...props\n}: TypographyProps) => {\n const className = useClassNames({\n typography: true,\n [TypographyVariantsClassNames[variant]]: TypographyVariantsClassNames[variant] !== undefined,\n [customClassname]: !!customClassname,\n [weight ?? '']: !!weight,\n [color ?? '']: Boolean(color),\n 'no-padding': noPadding,\n 'code-family': family === 'code',\n 'recommended-width': recommendedWidth,\n 'nowrap-max-lines': typeof nowrap === 'number',\n 'nowrap-max-lines-2': nowrap === 2,\n 'nowrap-max-lines-3': nowrap === 3,\n 'nowrap-max-lines-4': nowrap === 4,\n 'nowrap-max-lines-5': nowrap === 5,\n nowrap: nowrap === true,\n });\n\n const component = useMemo<React.HTMLElementType>(\n () => TypographyVariantsElements[variant] ?? TypographyVariantsElements[TypographyVariant.BODY],\n [variant],\n );\n\n return createElement(\n as ?? component,\n {\n ...props,\n className,\n htmlFor,\n style: {\n textAlign: align,\n ...style,\n },\n },\n children,\n );\n};\n","import React from 'react';\n\nexport enum TypographyColors {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n TERTIARY = 'tertiary',\n ACTIVE = 'active',\n WARNING = 'warning',\n ALERT = 'alert',\n INFO = 'info',\n}\n\nexport enum TypographyVariant {\n HERO = 'hero',\n HEADER1 = 'header1',\n HEADER2 = 'header2',\n HEADER3 = 'header3',\n HEADER4 = 'header4',\n BODY = 'body',\n LABEL = 'label',\n LABEL_FORM = 'label-form',\n SMALL = 'small',\n}\n\nexport const TypographyVariantsElements: Record<TypographyVariant, React.HTMLElementType> = {\n [TypographyVariant.HERO]: 'h1',\n [TypographyVariant.HEADER1]: 'h1',\n [TypographyVariant.HEADER2]: 'h2',\n [TypographyVariant.HEADER3]: 'h3',\n [TypographyVariant.HEADER4]: 'h4',\n [TypographyVariant.BODY]: 'p',\n [TypographyVariant.LABEL]: 'span',\n [TypographyVariant.LABEL_FORM]: 'label',\n [TypographyVariant.SMALL]: 'small',\n};\n\nexport const TypographyVariantsClassNames: Record<TypographyVariant, string> = {\n [TypographyVariant.HERO]: 'hero',\n [TypographyVariant.HEADER1]: 'header1',\n [TypographyVariant.HEADER2]: 'header2',\n [TypographyVariant.HEADER3]: 'header3',\n [TypographyVariant.HEADER4]: 'header4',\n [TypographyVariant.BODY]: 'body',\n [TypographyVariant.LABEL]: 'label',\n [TypographyVariant.LABEL_FORM]: 'label',\n [TypographyVariant.SMALL]: 'small',\n};\n\nexport enum TypographyWeight {\n LIGHT = 'light',\n REGULAR = 'regular',\n BOLD = 'bold',\n}\n","import React, { useEffect, useRef } from 'react';\n\nimport './ripple.styles.css';\n\ninterface RippleProps {\n color?: string;\n duration?: number;\n timingFunction?: React.CSSProperties['animationTimingFunction'];\n times?: number;\n className?: string;\n style?: React.CSSProperties;\n zIndex?: React.CSSProperties['zIndex'];\n}\n\nexport const Ripple = ({\n color,\n duration = 1000,\n timingFunction = 'ease-out',\n times = 1,\n className = '',\n style = {},\n zIndex = 1,\n}: RippleProps) => {\n const ref = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!ref.current?.parentElement) {\n return;\n }\n\n const computedPosition = getComputedStyle(ref.current.parentElement).position;\n\n if (!['absolute', 'fixed', 'sticky', 'relative'].includes(computedPosition)) {\n ref.current.parentElement.style.position = 'relative';\n }\n }, []);\n\n const handleClick = (e: React.MouseEvent<HTMLSpanElement>) => {\n const { pageX, pageY, currentTarget } = e;\n\n const rect = currentTarget.getBoundingClientRect();\n\n const x = ((pageX - rect.left) * 100) / rect.width;\n const y = ((pageY - rect.top) * 100) / rect.height;\n\n const ripple = document.createElement('span');\n ripple.classList.add('ripple-effect');\n ripple.style.animationDuration = `${duration}ms`;\n ripple.style.animationTimingFunction = timingFunction;\n ripple.style.left = `${x}%`;\n ripple.style.top = `${y}%`;\n\n if (color) {\n ripple.style.background = color;\n }\n\n currentTarget.appendChild(ripple);\n\n setTimeout(\n () => {\n ripple.remove();\n },\n Math.max(duration, 500) * Math.max(times, 1),\n );\n };\n\n return <span ref={ref} onMouseDown={handleClick} className={`ripple ${className}`} style={{ ...style, zIndex }} />;\n};\n","import type { ButtonHTMLAttributes } from 'react';\n\nimport { useClassNames } from '../../hooks';\nimport { ColorTypes, RadiusTypes, SizeTypes, VariantTypes } from '../component.types';\nimport { Ripple } from '../ripple';\n\nimport './button.styles.css';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n children: React.ReactNode;\n color?: `${ColorTypes}`;\n variant?: `${VariantTypes}`;\n radius?: `${RadiusTypes}`;\n size?: `${SizeTypes}`;\n noWrap?: boolean;\n ref?: React.Ref<HTMLButtonElement>;\n forIcon?: boolean;\n isLoading?: boolean;\n}\n\nexport const Button = ({\n children,\n color = ColorTypes.DEFAULT,\n variant = VariantTypes.SOLID,\n radius = RadiusTypes.MEDIUM,\n size = SizeTypes.REGULAR,\n noWrap = false,\n forIcon = false,\n className = '',\n ...props\n}: ButtonProps) => {\n const classNames = useClassNames({\n button: true,\n [color]: Boolean(color),\n [variant]: Boolean(variant),\n [`radius-${radius}`]: Boolean(radius),\n [`size-${size}`]: Boolean(size),\n 'no-wrap': noWrap,\n icon: forIcon,\n [className]: Boolean(className),\n });\n\n return (\n <button {...props} className={classNames}>\n {children}\n <Ripple />\n </button>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport { useEventListener, useMousePosition } from '../../hooks';\n\nimport './cursor.styles.css';\n\nexport const Cursor = () => {\n const { x, y, elementX, elementY, ref } = useMousePosition();\n const [isCursorHover, setIsCursorHover] = useState(false);\n\n useEventListener('mouseover', e => {\n const computedCursor = getComputedStyle(e.target as HTMLElement).cursor;\n\n setIsCursorHover(computedCursor === 'pointer');\n });\n\n useEffect(() => {\n if (!('ontouchstart' in window || navigator.maxTouchPoints)) {\n document.body.style.cursor = 'none';\n }\n\n return () => {\n document.body.style.cursor = 'auto';\n };\n }, []);\n\n if (x === null || y === null || 'ontouchstart' in window || navigator.maxTouchPoints) {\n return null;\n }\n\n const translate3d = `translate3d(${elementX}px, ${elementY}px, 0)`;\n\n return (\n <section className='cursor-overlay' ref={ref}>\n <span\n className={`cursor outer-circle ${isCursorHover ? 'cursor-hover' : ''}`}\n style={{\n transform: translate3d,\n }}\n />\n <span\n className={`cursor inner-circle ${isCursorHover ? 'cursor-hover' : ''}`}\n style={{\n transform: translate3d,\n }}\n />\n </section>\n );\n};\n","import { useMemo } from 'react';\nimport { IconType } from 'react-icons';\nimport { IoCheckmarkOutline } from 'react-icons/io5';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { ColorTypes, SizeTypes } from '../../component.types';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './checkbox.styles.css';\n\ntype CheckboxProps = {\n label?: React.ReactNode;\n placeholder?: never;\n icon?: IconType;\n color?: `${ColorTypes}`;\n size?: `${SizeTypes}`;\n};\n\nexport const Checkbox = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n autoComplete = 'off',\n icon: Icon = IoCheckmarkOutline,\n label,\n color = ColorTypes.PRIMARY,\n size = SizeTypes.REGULAR,\n /*\n * isDirty = false,\n * isTouched = false,\n * invalid = false,\n * error,\n */\n}: UnControlledComponentProps<CheckboxProps, boolean>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n\n const { handlers } = useInputHandlers<HTMLInputElement>({\n onChange: e => setValue(e.target.checked),\n onBlur: onBlur,\n onFocus: onFocus,\n });\n\n const checkboxContainerClassName = useClassNames({\n 'checkbox-container': true,\n [className]: Boolean(className),\n [`color-${color}`]: Boolean(color),\n });\n\n const checkboxClassName = useClassNames({\n checkbox: true,\n 'is-checked': value,\n [`size-${size}`]: Boolean(size),\n });\n\n return (\n <section className={checkboxContainerClassName} style={style} onClick={e => e.stopPropagation()}>\n <section className={checkboxClassName}>\n <section className='checkbox-fill'>\n <Icon size='1.3em' className='checkbox-icon' />\n </section>\n <input\n id={id}\n type='checkbox'\n name={name}\n className='checkbox-input'\n checked={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n disabled={disabled || readOnly}\n {...handlers}\n />\n </section>\n {label ? (\n <Typography variant='label-form' htmlFor={id} className='checkbox-label'>\n {label}\n </Typography>\n ) : null}\n </section>\n );\n};\n\nconst CheckboxController = ({ rules, ...props }: ControllerGeneratorProps<CheckboxProps, boolean>) => {\n return <Controller Component={Checkbox} defaultValue={false} inputProps={props} rules={rules} />;\n};\n\nCheckbox.Controller = CheckboxController;\n","import React from 'react';\nimport { Controller as RHFController, useFormContext, UseControllerProps } from 'react-hook-form';\n\nimport { ControlledComponentProps, Props, UnControlledComponentProps } from '../form.types';\n\ntype ControllerProps<T extends Props, V> = {\n inputProps: ControlledComponentProps<T, V>;\n Component: React.FC<UnControlledComponentProps<T, V>>;\n rules?: UseControllerProps['rules'];\n defaultValue: V;\n};\n\nexport const Controller = <T extends Props, V>({\n Component,\n inputProps,\n defaultValue: fieldDefaultValue,\n rules,\n}: ControllerProps<T, V>) => {\n const { control, setValue } = useFormContext();\n const { name, defaultValue } = inputProps;\n\n return (\n <RHFController\n name={name}\n control={control}\n rules={rules}\n defaultValue={defaultValue ?? fieldDefaultValue}\n render={({ field: { onBlur, value }, fieldState }) => (\n <Component\n value={value}\n error={fieldState.error?.message}\n invalid={fieldState.invalid}\n isTouched={fieldState.isTouched}\n isDirty={fieldState.isDirty}\n setValue={value => setValue(name, value)}\n onBlur={onBlur}\n {...inputProps}\n />\n )}\n />\n );\n};\n","import { useMemo } from 'react';\n\nimport { useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\ntype DatePickerProps = InputFieldProps<{\n type?: 'date' | 'datetime-local' | 'month' | 'time' | 'week';\n}>;\n\nexport const DatePicker = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n type = 'date',\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<DatePickerProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { isFocus, handlers } = useInputHandlers({\n onBlur: onBlur,\n onChange: e => setValue(e.target.value),\n onFocus: onFocus,\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <input\n id={id}\n type={type}\n name={name}\n className={className}\n style={style}\n value={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n {...handlers}\n />\n </Field>\n );\n};\n\nconst DatePickerController = ({ rules, ...props }: ControllerGeneratorProps<DatePickerProps, string>) => {\n return <Controller Component={DatePicker} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nDatePicker.Controller = DatePickerController;\n","import React from 'react';\nimport { IconType } from 'react-icons';\nimport { ImCross } from 'react-icons/im';\n\nimport { useClassNames } from '../../../hooks';\nimport { Typography } from '../../typography';\n\nimport './field.styles.css';\nimport { FieldOrientation, FieldProps, FieldVariant } from './field.types';\n\ntype GetIconParams = {\n icon?: IconType;\n onClick: (e: React.MouseEvent) => void;\n className: string;\n};\n\nconst getIcon = ({ icon: Icon, className, onClick }: GetIconParams) =>\n Icon ? <Icon className={className} onClick={onClick} /> : <span />;\n\nexport const Field = ({\n id,\n label,\n leftIcon,\n rightIcon,\n errorIcon: ErrorIcon = ImCross,\n error,\n onClickLeftIcon,\n onClickRightIcon,\n fieldOrientation = FieldOrientation.VERTICAL,\n children,\n isFocus = false,\n variant,\n ref,\n}: FieldProps) => {\n const fieldClassName = useClassNames({\n 'form-field': true,\n focus: isFocus,\n error: !!error,\n 'variant-content-border': variant === FieldVariant.CONTENT_BORDER,\n 'variant-content-line': variant === FieldVariant.CONTENT_LINE,\n 'variant-full-border': variant === FieldVariant.FULL_BORDER,\n 'variant-inline': fieldOrientation === FieldOrientation.HORIZONTAL,\n });\n\n const handleClick = (callback?: () => void) => (e: React.MouseEvent) => {\n e.stopPropagation();\n const input = document.getElementById(id);\n input?.focus();\n input?.click();\n\n if (callback) callback();\n };\n\n return (\n <section className={fieldClassName} ref={ref}>\n {label ? (\n <Typography className='field-label' noPadding variant='label-form' htmlFor={id}>\n {label}\n </Typography>\n ) : null}\n <section className='field-content'>\n {getIcon({\n className: 'field-left-icon',\n icon: leftIcon,\n onClick: handleClick(onClickLeftIcon),\n })}\n <section className='field-children'>{children}</section>\n {getIcon({\n className: 'field-right-icon',\n icon: rightIcon,\n onClick: handleClick(onClickRightIcon),\n })}\n </section>\n {Boolean(error) && (\n <section className='field-message'>\n {ErrorIcon ? <ErrorIcon size={10} /> : <span />}\n <Typography noPadding variant='small'>\n {error}\n </Typography>\n </section>\n )}\n </section>\n );\n};\n","import React from 'react';\nimport { IconType } from 'react-icons';\n\nexport enum FieldVariant {\n FULL_BORDER = 'full-border',\n CONTENT_BORDER = 'content-border',\n CONTENT_LINE = 'line',\n}\n\nexport enum FieldOrientation {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\ntype FieldSharedProps = {\n rightIcon?: IconType;\n leftIcon?: IconType;\n errorIcon?: IconType;\n onClickLeftIcon?: () => void;\n onClickRightIcon?: () => void;\n label?: string;\n variant?: `${FieldVariant}`;\n ref?: React.RefObject<HTMLElement | null>;\n};\n\nexport type FieldProps = FieldSharedProps & {\n children: React.ReactNode;\n id: string;\n error?: string;\n isFocus?: boolean;\n fieldOrientation?: `${FieldOrientation}`;\n};\n\nexport type InputFieldProps<T> = T & FieldSharedProps;\n","import { useMemo } from 'react';\n\nimport { useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\ntype IProps = InputFieldProps<{\n pattern?: string;\n type?: 'email' | 'search' | 'text' | 'url';\n min?: number;\n max?: number;\n}>;\n\nexport const Input = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n pattern,\n type = 'text',\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n min,\n max,\n ...fieldProps\n}: UnControlledComponentProps<IProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers, isFocus } = useInputHandlers({\n onChange: e => setValue(e.target.value),\n onBlur: onBlur,\n onFocus: onFocus,\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <input\n id={id}\n type={type}\n name={name}\n className={className}\n style={style}\n value={value}\n pattern={pattern}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n min={min}\n max={max}\n {...handlers}\n />\n </Field>\n );\n};\n\nconst InputController = ({ rules, ...props }: ControllerGeneratorProps<IProps, string>) => {\n return <Controller Component={Input} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nInput.Controller = InputController;\n","import { useMemo } from 'react';\nimport { IconType } from 'react-icons';\nimport { FiEye, FiEyeOff } from 'react-icons/fi';\nimport { IoIosWarning } from 'react-icons/io';\n\nimport { useInputHandlers, useToggleValues } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\ntype InputPasswordProps = InputFieldProps<{\n rightIcon?: never;\n}>;\n\nexport const InputPassword = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<InputPasswordProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const [type, toggle] = useToggleValues<'password' | 'text'>(['password', 'text']);\n const { isFocus, handlers } = useInputHandlers({\n onBlur: onBlur,\n onChange: e => setValue(e.target.value),\n onFocus: onFocus,\n });\n\n const icon = useMemo<IconType>(() => {\n if (type === 'password') return FiEye;\n\n if (type === 'text') return FiEyeOff;\n\n return IoIosWarning;\n }, [type]);\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps} rightIcon={icon} onClickRightIcon={() => toggle()}>\n <input\n id={id}\n type={type}\n name={name}\n className={className}\n style={style}\n value={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n {...handlers}\n />\n </Field>\n );\n};\n\nconst InputPasswordController = ({ rules, ...props }: ControllerGeneratorProps<InputPasswordProps, string>) => {\n return <Controller Component={InputPassword} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nInputPassword.Controller = InputPasswordController;\n","import Color from 'color';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { HexAlphaColorPicker, HexColorInput } from 'react-colorful';\nimport { FaEyeDropper } from 'react-icons/fa6';\nimport useEyeDropper from 'use-eye-dropper';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { Modal } from '../../modals';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './input-color.styles.css';\n\ntype ColorProps = InputFieldProps<{\n showValueText?: boolean;\n}>;\n\nexport const InputColor = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n showValueText = false,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<ColorProps, string>) => {\n const { open, isSupported } = useEyeDropper();\n const [inputValue, setInputValue] = useState<string>(value);\n const id = useMemo(() => crypto.randomUUID(), []);\n const containerRef = useRef<HTMLElement>(null);\n const [isOpen, setIsOpen] = useState(false);\n const { handlers, isFocus } = useInputHandlers({\n onChange: e => setInputValue(e.target.value),\n onBlur: e => {\n setInputColor();\n\n if (onBlur) onBlur(e as React.FocusEvent<HTMLInputElement>);\n },\n onFocus: e => {\n setInputColor();\n\n if (onFocus) onFocus(e as React.FocusEvent<HTMLInputElement>);\n },\n });\n\n const borderColor = useMemo(() => {\n const color = Color(value === '' ? '#000000' : value);\n\n if (color.isLight() || color.alpha() < 0.5) {\n return '#000000';\n }\n\n return '#FFFFFF';\n }, [value]);\n\n const openEyeDropper = async () => {\n const { sRGBHex } = await open();\n setValue(sRGBHex);\n };\n\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n const setInputColor = useCallback(() => {\n if (inputValue.match(/^#(?:(?:[\\da-f]{3}){1,2}|(?:[\\da-f]{4}){1,2})$/i)) {\n setValue(inputValue);\n } else {\n setInputValue(value);\n }\n }, [inputValue, setValue, value]);\n\n const inputBoxClassName = useClassNames({\n 'input-color-box': true,\n [className]: Boolean(className),\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <section\n className='input-color'\n onClick={e => {\n e.stopPropagation();\n setIsOpen(true);\n }}\n ref={containerRef}\n >\n <section\n className={inputBoxClassName}\n style={{\n borderColor,\n background: value,\n color: value,\n ...style,\n }}\n />\n {showValueText ? (\n <input\n id={id}\n name={name}\n value={inputValue}\n placeholder={placeholder}\n readOnly={readOnly}\n autoFocus={autoFocus}\n disabled={disabled}\n autoComplete={autoComplete}\n className='color-input'\n {...handlers}\n />\n ) : null}\n </section>\n\n <Modal\n id='input-color'\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n position='bottom right'\n offset={5}\n backdrop='transparent'\n containerRef={containerRef}\n className='input-color-selector'\n >\n <HexAlphaColorPicker id={id} color={value} onChange={setValue} />\n <section className='color-input-container'>\n {isSupported() ? (\n <FaEyeDropper\n onClick={() => {\n void openEyeDropper();\n }}\n />\n ) : (\n <span />\n )}\n <HexColorInput\n className='color-input'\n id={id}\n name={name}\n color={value}\n placeholder='Type a color'\n prefixed\n alpha\n onChange={setValue}\n />\n <span />\n </section>\n </Modal>\n </Field>\n );\n};\n\nconst InputColorController = ({ rules, ...props }: ControllerGeneratorProps<ColorProps, string>) => {\n return <Controller Component={InputColor} defaultValue='#147EFB' inputProps={props} rules={rules} />;\n};\n\nInputColor.Controller = InputColorController;\n","import { createContext, useCallback, useContext, useRef, useState } from 'react';\nimport { IconType } from 'react-icons';\nimport { ImCross } from 'react-icons/im';\n\nimport { PositionContainer } from '../../../helpers';\nimport { useClassNames } from '../../../hooks';\nimport { Button, ButtonProps } from '../../button';\nimport { Typography } from '../../typography';\nimport { Modal, ModalProps } from '../modal';\n\nimport './action-modal.styles.css';\n\ntype ActionModalContextType = {\n onClose: () => void;\n isActionInProgress: boolean;\n setIsActionInProgress: (isActionInProgress: boolean) => void;\n};\n\nconst ActionModalContext = createContext<ActionModalContextType | null>(null);\n\nconst useActionModalContext = () => {\n const context = useContext(ActionModalContext);\n\n if (!context) {\n throw new Error('useActionModalContext must be used within a ActionModal');\n }\n\n return context;\n};\n\nexport type ActionModalProps = Omit<\n ModalProps,\n 'id' | 'animation' | 'closeAnimationClassName' | 'position' | 'rootStyle' | 'className' | 'style'\n> & {\n actionRequired?: boolean;\n icon?: IconType;\n noCloseButton?: boolean;\n lineOnTop?: boolean;\n backCard?: boolean;\n noPadding?: boolean;\n className?: string;\n style?: React.CSSProperties;\n};\n\nexport const ActionModal = ({\n children,\n isOpen,\n onClose,\n actionRequired,\n icon: Icon,\n noCloseButton,\n lineOnTop = false,\n backCard = false,\n noPadding = false,\n className = '',\n style = {},\n ...modalProps\n}: ActionModalProps) => {\n const [isActionInProgress, setIsActionInProgress] = useState(false);\n const ref = useRef<HTMLElement>(null);\n\n const remainAction = useCallback(() => {\n ref.current?.classList.add('shake-animation');\n setTimeout(() => {\n ref.current?.classList.remove('shake-animation');\n }, 500);\n }, []);\n\n const actionModalClassName = useClassNames({\n 'action-modal-content': true,\n 'back-card': backCard,\n 'line-on-top': lineOnTop,\n 'no-padding': noPadding,\n });\n\n return (\n <ActionModalContext.Provider value={{ onClose, isActionInProgress, setIsActionInProgress }}>\n <Modal\n className='action-modal'\n id='action-modal'\n animation='bounce'\n opacity={0.8}\n isOpen={isOpen}\n onClose={onClose}\n {...modalProps}\n backdropOnClick={actionRequired ? remainAction : onClose}\n position={PositionContainer.CENTER}\n >\n <section ref={ref} className='modal-content'>\n <section className={actionModalClassName}>\n {!noCloseButton && !actionRequired && (\n <section className='close-modal-button' onClick={() => onClose()}>\n <ImCross />\n </section>\n )}\n {Icon ? (\n <Typography variant='header4' className='action-modal-icon'>\n <Icon />\n </Typography>\n ) : null}\n <section className='action-modal-body'>\n <section className={`action-modal-content ${className}`} style={style}>\n {children}\n </section>\n </section>\n </section>\n </section>\n </Modal>\n </ActionModalContext.Provider>\n );\n};\n\ntype ActionButtonProps = Omit<ButtonProps, 'onClick'> & {\n onClick: (() => Promise<void>) | (() => void);\n};\n\nconst ActionButton = ({ onClick, children, isLoading: manualIsLoading, ...buttonProps }: ActionButtonProps) => {\n const { onClose, isActionInProgress, setIsActionInProgress } = useActionModalContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const handleAction = useCallback(() => {\n setIsLoading(true);\n setIsActionInProgress(true);\n const result = onClick();\n\n if (result instanceof Promise) {\n result.then(() => {\n onClose();\n setIsLoading(false);\n setIsActionInProgress(false);\n });\n } else {\n onClose();\n setIsLoading(false);\n setIsActionInProgress(false);\n }\n }, [onClick, onClose, setIsActionInProgress]);\n\n if (!isLoading && isActionInProgress) {\n return null;\n }\n\n return (\n <Button {...buttonProps} onClick={handleAction} isLoading={manualIsLoading || isLoading}>\n {children}\n </Button>\n );\n};\n\nActionModal.ActionButton = ActionButton;\n","import React, { CSSProperties, useMemo, useRef } from 'react';\n\nimport {\n ModalState,\n useClassNames,\n useClickOutside,\n useModalInContainer,\n UseModalInContainerParams,\n useModalTransition,\n UseModalTransitionParams,\n} from '../../../hooks';\nimport { Portal } from '../portal';\n\nimport { Backdrop, BackdropProps } from './modal.backdrop';\nimport './modal.styles.css';\n\nexport type ModalProps = Omit<BackdropProps, 'modalState'> &\n UseModalTransitionParams &\n Omit<UseModalInContainerParams, 'modalRef'> & {\n id: string;\n children: React.ReactNode;\n onClose: () => void;\n className?: string;\n style?: React.CSSProperties;\n rootStyle?: CSSProperties;\n animation?: 'none' | 'fade-down' | 'bounce';\n closeAnimationClassName?: string;\n modalRef?: React.RefObject<HTMLElement | null>;\n closeOnClickOutside?: boolean;\n };\n\nexport const Modal = ({\n id,\n children,\n isOpen,\n onClose,\n className = '',\n style = {},\n rootStyle = {},\n animation = 'fade-down',\n closeAnimationClassName = 'modal-close',\n modalRef: modalRefProp,\n closeOnClickOutside = true,\n transitionDuration = 300,\n windowOffset = 10,\n offset = 20,\n position,\n containerRef,\n zIndex = 1000,\n ...backdropProps\n}: ModalProps) => {\n const uuid = useMemo(() => crypto.randomUUID(), []);\n const modalRef = useRef<HTMLElement>(null);\n const { modalState, isVisible } = useModalTransition({\n transitionDuration,\n isOpen,\n });\n\n useModalInContainer({\n modalRef: modalRefProp ?? modalRef,\n containerRef,\n offset,\n windowOffset,\n position,\n isOpen: isVisible,\n });\n\n useClickOutside<HTMLElement>(modalRefProp ?? modalRef, () => {\n if (isOpen && closeOnClickOutside) {\n onClose();\n }\n });\n\n const modalContentClassName = useClassNames({\n 'modal-content': true,\n [className]: Boolean(className),\n [`animation-${animation}`]: Boolean(animation) && animation !== 'none',\n [closeAnimationClassName]: modalState === ModalState.CLOSING || modalState === ModalState.CLOSED,\n });\n\n if (!isVisible) {\n return null;\n }\n\n return (\n <Portal id={`modal-${id}-${uuid}`}>\n <Backdrop {...backdropProps} modalState={modalState} zIndex={zIndex} />\n <section\n className='modal'\n ref={modalRefProp ?? modalRef}\n style={{\n maxWidth: `calc(100dvw - ${windowOffset * 2}px)`,\n maxHeight: `calc(100dvh - ${windowOffset * 2}px)`,\n ...rootStyle,\n zIndex: +zIndex + 1,\n }}\n >\n <section style={{ ...style, animationDuration: `${transitionDuration}ms` }} className={modalContentClassName}>\n {children}\n </section>\n </section>\n </Portal>\n );\n};\n","import { ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { useDomContainer } from '../../../hooks';\n\ntype PortalProps = {\n id: string;\n children: ReactNode;\n};\n\nexport const Portal = ({ children, id }: PortalProps) => {\n const root = useDomContainer(id);\n\n if (root === null) {\n return null;\n }\n\n return createPortal(children, root);\n};\n","import React, { useMemo } from 'react';\n\nimport { ModalState, useClassNames } from '../../../hooks';\n\nexport enum ModalBackdrop {\n OPAQUE = 'opaque',\n TRANSPARENT = 'transparent',\n BLUR = 'blur',\n NONE = 'none',\n}\n\nexport type BackdropProps = {\n opacity?: number;\n backdrop?: `${ModalBackdrop}`;\n zIndex?: React.CSSProperties['zIndex'];\n backdropOnClick?: () => void;\n modalState?: ModalState;\n};\n\nexport const Backdrop = ({\n opacity = 0.6,\n backdrop = ModalBackdrop.BLUR,\n zIndex,\n backdropOnClick,\n modalState,\n}: BackdropProps) => {\n const backdropClassName = useClassNames({\n 'modal-backdrop': true,\n 'backdrop-close': modalState === ModalState.CLOSING || modalState === ModalState.CLOSED,\n });\n\n const backgroundStyles = useMemo(() => {\n const backdropStyles = {\n [ModalBackdrop.OPAQUE]: {\n background: `hsl(from var(--background-paper) h s l / ${opacity * 100}%)`,\n },\n [ModalBackdrop.TRANSPARENT]: {\n background: 'transparent',\n },\n [ModalBackdrop.BLUR]: {\n background: `hsl(from var(--background-paper) h s l / ${opacity * 100}%)`,\n backdropFilter: 'blur(5px)',\n },\n [ModalBackdrop.NONE]: {\n display: 'none',\n },\n };\n\n return backdropStyles[backdrop] ?? {};\n }, [backdrop, opacity]);\n\n if (backdrop === ModalBackdrop.NONE) {\n return null;\n }\n\n return (\n <section\n tabIndex={-1}\n onClick={backdropOnClick}\n className={backdropClassName}\n style={{\n zIndex,\n ...backgroundStyles,\n }}\n />\n );\n};\n","import { CSSProperties, useMemo } from 'react';\nimport { ImCross } from 'react-icons/im';\n\nimport { PositionContainer } from '../../../helpers';\nimport { Modal, ModalProps } from '../modal';\n\nimport './aside-modal.styles.css';\n\ntype AsideModalProps = Omit<\n ModalProps,\n 'id' | 'animation' | 'closeAnimationClassName' | 'position' | 'rootStyle' | 'className' | 'style'\n> & {\n position?:\n | `${PositionContainer.TOP}`\n | `${PositionContainer.LEFT}`\n | `${PositionContainer.RIGHT}`\n | `${PositionContainer.BOTTOM}`;\n size?: number | `${number}px` | `${number}em`;\n className?: string;\n style?: React.CSSProperties;\n};\n\nexport const AsideModal = ({\n children,\n isOpen,\n onClose,\n position = PositionContainer.LEFT,\n size,\n className = '',\n ...modalProps\n}: AsideModalProps) => {\n const modalRootStyles = useMemo<CSSProperties>(() => {\n const computedSize = {\n [PositionContainer.TOP]: { height: size, width: '100%' },\n [PositionContainer.LEFT]: { height: '100%', width: size },\n [PositionContainer.RIGHT]: { height: '100%', width: size },\n [PositionContainer.BOTTOM]: { height: size, width: '100%' },\n };\n\n return computedSize[position];\n }, [position, size]);\n\n return (\n <Modal\n id='aside'\n isOpen={isOpen}\n onClose={onClose}\n opacity={0.6}\n windowOffset={0}\n animation='none'\n className={`aside-modal ${className} ${position}`}\n rootStyle={modalRootStyles}\n backdropOnClick={onClose}\n position={position}\n {...modalProps}\n >\n <span className='close-modal-button' onClick={onClose}>\n <ImCross />\n </span>\n <section className='aside-modal-content'>{children}</section>\n </Modal>\n );\n};\n","import { Typography } from '../../typography';\nimport { ActionModal, ActionModalProps } from '../action-modal';\n\nimport './confirmation-modal.styles.css';\n\ntype ConfirmationModalProps = ActionModalProps & {\n title: string;\n onAccept: (() => Promise<void>) | (() => void);\n onReject?: (() => Promise<void>) | (() => void);\n acceptText: string;\n rejectText: string;\n isLoading?: boolean;\n};\n\nexport const ConfirmationModal = ({\n title,\n onAccept,\n onReject = () => null,\n acceptText,\n rejectText,\n children,\n isLoading,\n ...actionModalProps\n}: ConfirmationModalProps) => {\n return (\n <ActionModal {...actionModalProps} backCard>\n <section className='confirmation-modal'>\n <Typography variant='header4'>{title}</Typography>\n <section>{children}</section>\n <section className='confirmation-modal-actions'>\n {!isLoading && (\n <ActionModal.ActionButton variant='flat' onClick={onReject}>\n {rejectText}\n </ActionModal.ActionButton>\n )}\n <ActionModal.ActionButton isLoading={isLoading} onClick={onAccept}>\n {acceptText}\n </ActionModal.ActionButton>\n </section>\n </section>\n </ActionModal>\n );\n};\n","import React, { RefObject, useCallback, useMemo } from 'react';\nimport { IconType } from 'react-icons';\n\nimport { useClassNames } from '../../../hooks';\nimport { Checkbox } from '../../form';\nimport { Line } from '../../line';\nimport { Ripple } from '../../ripple';\nimport { Typography, TypographyProps } from '../../typography';\nimport { Modal, ModalProps } from '../modal';\n\nimport './menu.styles.css';\n\ntype MenuProps = ModalProps & {\n children: React.ReactNode;\n contentClassName?: string;\n contentStyle?: React.CSSProperties;\n menuContentRef?: RefObject<HTMLUListElement>;\n};\n\nexport const Menu = ({\n children,\n isOpen,\n onClose,\n id,\n menuContentRef,\n contentClassName = '',\n contentStyle = {},\n className = '',\n ...modalProps\n}: MenuProps) => {\n const modalClassName = useClassNames({\n 'menu-modal': true,\n [className]: Boolean(className),\n });\n\n return (\n <Modal className={modalClassName} {...modalProps} id={`menu-${id}`} isOpen={isOpen} onClose={onClose}>\n <ul className={`menu-content ${contentClassName}`} role='listbox' style={contentStyle} ref={menuContentRef}>\n {children}\n </ul>\n </Modal>\n );\n};\n\nexport type MenuOptionProps = Omit<React.HTMLAttributes<HTMLLIElement>, 'onClick'> & {\n id?: string;\n children?: React.ReactNode;\n label?: React.ReactNode;\n disabled?: boolean;\n selected?: boolean;\n className?: string;\n style?: React.CSSProperties;\n asCheckbox?: boolean;\n icon?: IconType;\n onClick?: (newValue: boolean) => void;\n};\n\nconst MenuOption = ({\n children,\n label = '',\n asCheckbox,\n icon: Icon,\n id,\n disabled = false,\n selected = false,\n className = '',\n style = {},\n onClick = () => null,\n ...liProps\n}: MenuOptionProps) => {\n const menuOptionClassName = useClassNames({\n 'menu-option': true,\n [className]: true,\n 'is-disabled': disabled,\n 'is-selected': selected,\n });\n\n const handleClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n\n if (!disabled) {\n onClick(!selected);\n }\n },\n [disabled, onClick, selected],\n );\n\n const menuOptionContent = useMemo(() => {\n if (children) {\n return children;\n }\n\n if (asCheckbox) {\n return (\n <Checkbox\n className='menu-checkbox'\n disabled={disabled}\n value={selected}\n setValue={n => onClick(n)}\n name='option'\n style={{ pointerEvents: 'none' }}\n size='small'\n label={\n <>\n {Icon !== undefined && <Icon className='option-icon' />}\n <Typography variant='label'>{label}</Typography>\n </>\n }\n />\n );\n }\n\n return (\n <>\n {Icon !== undefined && <Icon className='option-icon' />}\n {typeof label === 'string' ? <Typography variant='label'>{label}</Typography> : label}\n </>\n );\n }, [asCheckbox, children, disabled, Icon, label, onClick, selected]);\n\n return (\n <li\n {...liProps}\n id={id}\n role='option'\n tabIndex={-1}\n aria-selected={selected}\n aria-disabled={disabled}\n onClick={handleClick}\n className={menuOptionClassName}\n style={style}\n >\n <Ripple zIndex={10} />\n {menuOptionContent}\n </li>\n );\n};\n\nconst Divider = () => {\n return (\n <li>\n <Line className='divider' />\n </li>\n );\n};\n\nconst Label = ({ children, className = '', ...props }: Omit<TypographyProps, 'variant'>) => {\n return (\n <li tabIndex={-1} className='menu-label'>\n <Typography {...props} variant='small' className={`menu-group-label ${className}`}>\n {children}\n </Typography>\n </li>\n );\n};\n\ntype MenuGroupProps = Omit<React.HTMLAttributes<HTMLLIElement>, 'onClick'> & {\n children: React.ReactNode;\n label: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n contentClassName?: string;\n contentStyle?: React.CSSProperties;\n};\n\nconst Group = ({\n children,\n label,\n className = '',\n style = {},\n contentClassName = '',\n contentStyle = {},\n ...props\n}: MenuGroupProps) => {\n const groupClassName = useClassNames({\n 'menu-group': true,\n [className]: Boolean(className),\n });\n\n return (\n <li tabIndex={-1} {...props} className={groupClassName} style={style}>\n {label && <Label>{label}</Label>}\n <ul className={`menu-group-content ${contentClassName}`} role='listbox' style={contentStyle}>\n {children}\n </ul>\n </li>\n );\n};\n\nMenu.Option = MenuOption;\nMenu.Divider = Divider;\nMenu.GroupLabel = Label;\nMenu.Group = Group;\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { IconType } from 'react-icons';\nimport { FaMagnifyingGlass, FaRegTrashCan } from 'react-icons/fa6';\nimport { IoIosWarning } from 'react-icons/io';\nimport { PiFilePdfFill, PiFilePngFill } from 'react-icons/pi';\n\nimport { formatBytes } from '../../../helpers';\nimport { FileTypeEnum, useInputHandlers } from '../../../hooks';\nimport { Grid } from '../../../layouts';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './input-file.styles.css';\n\ntype InputFileProps = {\n label?: string;\n accept?: string;\n multiple?: boolean;\n limitSize?: number;\n errorTimeout?: number;\n};\n\ntype InputFileValue = { [key: string]: File };\n\nexport const InputFile = ({\n name,\n value = {},\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = 'Click to upload or drag and drop',\n autoComplete = 'off',\n accept,\n multiple = false,\n limitSize = 5000000,\n errorTimeout = 3000,\n label,\n /*\n * isDirty = false,\n * isTouched = false,\n * invalid = false,\n * error,\n */\n}: UnControlledComponentProps<InputFileProps, InputFileValue>) => {\n const [error, setError] = useState<string | null>(null);\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers } = useInputHandlers<HTMLInputElement>({\n onBlur,\n onFocus,\n onChange: e => {\n const { files } = e.target;\n\n if (files) saveFiles(files);\n },\n });\n\n useEffect(() => {\n let intervalId: ReturnType<typeof setTimeout> | null = null;\n\n if (error !== null) {\n intervalId = setTimeout(() => {\n setError(null);\n }, errorTimeout);\n }\n\n return () => {\n if (intervalId !== null) {\n clearTimeout(intervalId);\n }\n };\n }, [error, errorTimeout]);\n\n const saveFiles = (files: FileList) => {\n const finalFiles = multiple ? { ...value } : {};\n\n const filesToCheck = multiple ? files.length : 1;\n\n for (let i = 0; i < filesToCheck; i++) {\n const file = files.item(i);\n\n if (!file) {\n continue;\n }\n\n if (file.size < limitSize) {\n finalFiles[file.name] = file;\n } else {\n setError(`File '${file.name}' size is larger than ${formatBytes(limitSize)}`);\n }\n }\n\n setValue(finalFiles);\n };\n\n const handleDrop = (e: React.DragEvent<HTMLInputElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.dataTransfer.files && e.dataTransfer.files.length) {\n saveFiles(e.dataTransfer.files);\n }\n };\n\n const getIconType = useCallback((type: FileTypeEnum): IconType => {\n const iconTypes: Record<FileTypeEnum, IconType> = {\n [FileTypeEnum.PNG]: PiFilePngFill,\n [FileTypeEnum.PDF]: PiFilePdfFill,\n };\n\n return iconTypes[type] ?? IoIosWarning;\n }, []);\n\n const deleteFile = (file: File) => {\n const prevValue = { ...value };\n delete prevValue[file.name];\n setValue(prevValue);\n };\n\n const deleteAll = () => {\n setValue({});\n };\n\n const totalSize = useMemo(() => Object.values(value).reduce((prev, { size }) => prev + size, 0), [value]);\n\n const renderFileToCard = (file: File, key: number) => {\n const Icon = getIconType(file.type as FileTypeEnum);\n\n return (\n <section className='input-file-card' key={key}>\n <section className='file-card--image'>\n <Icon />\n </section>\n <Grid>\n <Typography variant='label' noPadding nowrap>\n {file.name}\n </Typography>\n <Typography noPadding variant='small'>\n {formatBytes(file.size)}\n </Typography>\n </Grid>\n <section className='file-card--delete' onClick={() => deleteFile(file)}>\n <FaRegTrashCan />\n </section>\n </section>\n );\n };\n\n return (\n <section className='input-file-container'>\n {Boolean(label) && (\n <Typography variant='label-form' htmlFor={id} noPadding>\n {label}\n </Typography>\n )}\n <section className='input-file--box' onDrop={handleDrop}>\n <section className='input-file--box--icon'>\n <FaMagnifyingGlass />\n </section>\n <Grid>\n <Typography variant='label-form' htmlFor={id} noPadding weight='bold'>\n {placeholder}\n </Typography>\n <Typography variant='small' noPadding>\n Max size ({formatBytes(limitSize)})\n </Typography>\n </Grid>\n <input\n id={id}\n type='file'\n name={name}\n value=''\n placeholder={placeholder}\n readOnly={readOnly}\n autoFocus={autoFocus}\n disabled={disabled}\n autoComplete={autoComplete}\n className={className}\n style={style}\n accept={accept}\n multiple={multiple}\n title=''\n {...handlers}\n />\n </section>\n {error !== null && (\n <Typography variant='small' noPadding className='error'>\n {error}\n </Typography>\n )}\n {Object.keys(value).length > 0 && (\n <>\n {multiple && (\n <span className='total-info'>\n <Typography variant='small' noPadding>\n {Object.keys(value).length} files - {formatBytes(totalSize)}\n </Typography>\n <span className='total-info--delete' onClick={deleteAll}>\n <FaRegTrashCan />\n </span>\n </span>\n )}\n <section className='input-file--files'>\n <section className='input-file--files--content'>{Object.values(value).map(renderFileToCard)}</section>\n </section>\n </>\n )}\n </section>\n );\n};\n\nconst InputFileController = ({ rules, ...props }: ControllerGeneratorProps<InputFileProps, InputFileValue>) => {\n return <Controller Component={InputFile} defaultValue={{}} inputProps={props} rules={rules} />;\n};\n\nInputFile.Controller = InputFileController;\n","import React, { createElement } from 'react';\n\nimport './grid.styles.css';\n\ntype GridProps = React.HTMLAttributes<HTMLDivElement> & {\n tag?: React.HTMLElementType;\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n flow?: React.CSSProperties['gridAutoFlow'];\n columnSize?: React.CSSProperties['gridAutoColumns'];\n rowSize?: React.CSSProperties['gridAutoRows'];\n column?: React.CSSProperties['gridColumn'];\n row?: React.CSSProperties['gridRow'];\n pc?: React.CSSProperties['placeContent'];\n pi?: React.CSSProperties['placeItems'];\n ps?: React.CSSProperties['placeSelf'];\n jc?: React.CSSProperties['justifyContent'];\n ji?: React.CSSProperties['justifyItems'];\n js?: React.CSSProperties['justifySelf'];\n ac?: React.CSSProperties['alignContent'];\n ai?: React.CSSProperties['alignItems'];\n as?: React.CSSProperties['alignSelf'];\n gtc?: React.CSSProperties['gridTemplateColumns'];\n gtr?: React.CSSProperties['gridTemplateRows'];\n gta?: React.CSSProperties['gridTemplateAreas'];\n gt?: React.CSSProperties['gridTemplate'];\n gap?: React.CSSProperties['gap'];\n ref?: React.Ref<HTMLElement>;\n};\n\nexport const Grid = ({\n tag = 'section',\n children,\n className,\n style,\n flow,\n columnSize,\n rowSize,\n column,\n row,\n pc,\n pi,\n ps,\n jc,\n ji,\n js,\n ac,\n ai,\n as,\n gtc,\n gtr,\n gta,\n gt,\n gap,\n ...props\n}: GridProps) => {\n return createElement(\n tag,\n {\n className,\n ...props,\n style: {\n ...style,\n ...(flow ? { gridAutoFlow: flow } : {}),\n ...(columnSize ? { gridAutoColumns: columnSize } : {}),\n ...(rowSize ? { gridAutoRows: rowSize } : {}),\n ...(column ? { gridColumn: column } : {}),\n ...(row ? { gridRow: row } : {}),\n ...(pc ? { placeContent: pc } : {}),\n ...(pi ? { placeItems: pi } : {}),\n ...(ps ? { placeSelf: ps } : {}),\n ...(jc ? { justifyContent: jc } : {}),\n ...(ji ? { justifyItems: ji } : {}),\n ...(js ? { justifySelf: js } : {}),\n ...(ac ? { alignContent: ac } : {}),\n ...(ai ? { alignItems: ai } : {}),\n ...(as ? { alignSelf: as } : {}),\n ...(gtc ? { gridTemplateColumns: gtc } : {}),\n ...(gtr ? { gridTemplateRows: gtr } : {}),\n ...(gta ? { gridTemplateAreas: gta } : {}),\n ...(gt ? { gridTemplate: gt } : {}),\n ...(gap ? { gap: gap } : {}),\n display: 'grid',\n },\n },\n children,\n );\n};\n","import { useEffect, useMemo, useState } from 'react';\n\nimport { useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\ntype FormatFunction = (value: number) => string;\n\nconst RegexDecimal = {\n comma: /(?!^-)[^0-9,]/g,\n dot: /(?!^-)[^0-9.]/g,\n} as const;\n\nconst getCleanedValue = (input: string, decimalSeparator = '.'): string => {\n const regex = decimalSeparator === '.' ? RegexDecimal.dot : RegexDecimal.comma;\n const cleaned = input.replace(regex, '').replace(',', '.');\n\n if (!cleaned) {\n return '';\n }\n\n return cleaned;\n};\n\nconst getFormattedValue = (value: number, format: FormatFunction) => {\n if (!value || Number.isNaN(value)) {\n return format(0);\n }\n\n return format(value);\n};\n\ntype FormatConfig = Intl.NumberFormatOptions & {\n locales: Intl.LocalesArgument;\n};\n\ntype IProps = InputFieldProps<{\n pattern?: string;\n min?: number;\n max?: number;\n format?: FormatConfig | FormatFunction;\n decimalSeparator?: string;\n}>;\n\nexport const InputNumber = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n pattern,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n min,\n max,\n decimalSeparator,\n format = {\n locales: 'en-US',\n style: 'decimal',\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n },\n ...fieldProps\n}: UnControlledComponentProps<IProps, number>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const formatFunction = useMemo<FormatFunction>(() => {\n if (typeof format === 'function') return format;\n\n const { locales, ...formatConfig } = format;\n\n return Intl.NumberFormat(locales, formatConfig).format;\n }, [format]);\n const [formattedValue, setFormattedValue] = useState(getFormattedValue(value, formatFunction));\n\n const { handlers, isFocus } = useInputHandlers({\n onChange: e => {\n const cleaned = getCleanedValue(e.target.value, decimalSeparator);\n\n if (cleaned.endsWith('.')) {\n setFormattedValue(e.target.value);\n } else {\n setFormattedValue(getFormattedValue(Number(cleaned), formatFunction));\n setValue(Number(cleaned));\n }\n },\n onBlur: e => {\n const cleaned = getCleanedValue(e.target.value, decimalSeparator);\n setFormattedValue(getFormattedValue(Number(cleaned), formatFunction));\n setValue(Number(cleaned));\n\n if (onBlur) onBlur(e);\n },\n onFocus: onFocus,\n });\n\n useEffect(() => {\n const formatted = getFormattedValue(value, formatFunction);\n\n if (formattedValue !== formatted) {\n setFormattedValue(formatted);\n }\n }, [formatFunction, formattedValue, value]);\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <input\n id={id}\n type='text'\n name={name}\n className={className}\n style={style}\n value={formattedValue}\n pattern={pattern}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n min={min}\n max={max}\n {...handlers}\n />\n </Field>\n );\n};\n\nconst InputController = ({ rules, ...props }: ControllerGeneratorProps<IProps, number>) => {\n return <Controller Component={InputNumber} defaultValue={0} inputProps={props} rules={rules} />;\n};\n\nInputNumber.Controller = InputController;\n","import { useMemo } from 'react';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { ColorTypes, SizeTypes } from '../../component.types';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './radio.styles.css';\n\ntype RadioProps = {\n label?: string;\n radioValue: string;\n placeholder?: never;\n color?: `${ColorTypes}`;\n size?: `${SizeTypes}`;\n};\n\nexport const Radio = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n autoComplete = 'off',\n radioValue,\n label,\n color = ColorTypes.PRIMARY,\n size = SizeTypes.REGULAR,\n /*\n * isDirty = false,\n * isTouched = false,\n * invalid = false,\n * error,\n */\n}: UnControlledComponentProps<RadioProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers } = useInputHandlers({\n onChange: e => setValue(e.target.value),\n onBlur: onBlur,\n onFocus: onFocus,\n });\n\n const radioContainerClassName = useClassNames({\n 'radio-container': true,\n [className]: Boolean(className),\n [`color-${color}`]: Boolean(color),\n });\n\n const radioClassName = useClassNames({\n radio: true,\n 'is-checked': radioValue === value,\n [`size-${size}`]: Boolean(size),\n });\n\n return (\n <section className={radioContainerClassName} style={style}>\n <section className={radioClassName}>\n <section className='radio-fill' />\n <input\n id={id}\n type='radio'\n name={name}\n className={`radio-input ${className}`}\n style={style}\n value={radioValue}\n checked={radioValue === value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n disabled={disabled || readOnly}\n {...handlers}\n />\n </section>\n {label ? (\n <Typography variant='label-form' htmlFor={id} className='radio-label'>\n {label}\n </Typography>\n ) : null}\n </section>\n );\n};\n\nconst RadioController = ({ rules, ...props }: ControllerGeneratorProps<RadioProps, string>) => {\n return <Controller Component={Radio} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nRadio.Controller = RadioController;\n","import React, { createContext, useCallback, useContext, useMemo, useRef, useState } from 'react';\nimport { ImCross } from 'react-icons/im';\nimport { PiCaretDown } from 'react-icons/pi';\n\nimport { useMediaQuery } from '../../../hooks';\nimport { InfinityScroll } from '../../infinity-scroll';\nimport { Menu } from '../../modals';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { Field } from '../field';\nimport { ControllerGeneratorProps } from '../form.types';\n\nimport { Option } from './option';\nimport { Options } from './options';\nimport './select.styles.css';\nimport {\n ControllerGeneratorSelectProps,\n MultiSelectProps,\n MultiValue,\n OptionComponentProps,\n SelectItem,\n SingleSelectProps,\n SingleValue,\n UnControlledSelectProps,\n SelectContextValue,\n ValueComponentProps,\n} from './select.types';\n\nconst SelectContext = createContext<SelectContextValue<unknown> | null>(null);\n\nexport const useSelectContext = <T extends SelectItem>(): SelectContextValue<T> => {\n const context = useContext(SelectContext as React.Context<SelectContextValue<T> | null>);\n\n if (!context) {\n throw new Error('useSelectContext must be used within a Select component');\n }\n\n return context;\n};\n\ntype OptionLabelProps = {\n children: React.ReactNode;\n};\n\nconst OptionLabel = ({ children }: OptionLabelProps) => {\n const labelComponent = useMemo(() => {\n if (typeof children === 'string') {\n return (\n <Typography noPadding variant='label' nowrap>\n {children}\n </Typography>\n );\n }\n\n return children;\n }, [children]);\n\n return <Menu.GroupLabel>{labelComponent}</Menu.GroupLabel>;\n};\n\nconst DefaultOption = <T extends SelectItem>({ value }: OptionComponentProps<T>) => {\n return (\n <Typography variant='label' nowrap>\n {typeof value === 'string' || typeof value === 'number' ? value : JSON.stringify(value)}\n </Typography>\n );\n};\n\nconst DefaultValue = <T extends SelectItem>({ value, multiselect }: ValueComponentProps<T>) => {\n if (multiselect) {\n return (\n <Typography noPadding nowrap variant='label'>\n {`${value.length} item${value.length === 1 ? '' : 's'} selected`}\n </Typography>\n );\n }\n\n if (value === null) {\n return null;\n }\n\n return (\n <Typography noPadding variant='label' nowrap>\n {typeof value === 'string' || typeof value === 'number' ? value : JSON.stringify(value)}\n </Typography>\n );\n};\n\nexport const Select = <T extends SelectItem>({\n // Select props\n options,\n isEqualComparator,\n searchQueryValue,\n searchQueryPlaceholder,\n onSearchQuery,\n loadMore = () => null,\n isLoading = false,\n hasNextPage = false,\n emptyMessage = 'No options to select',\n multiselect,\n optionComponent: OptionComponent = DefaultOption,\n valueComponent: ValueComponent = DefaultValue,\n maxOptions,\n children,\n // Shared props\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n showClearOption = false,\n height,\n searchQueryStyle,\n searchQueryClassName,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n autoFocus = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n readOnly = false,\n disabled = false,\n placeholder = '',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n // Field props\n ...fieldProps\n}: UnControlledSelectProps<T>) => {\n const modalRef = useRef<HTMLElement>(null);\n const isMobile = useMediaQuery('(max-width: 480px)');\n const id = useMemo(() => crypto.randomUUID(), []);\n const containerRef = useRef<HTMLElement>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n const openSelect = useCallback(\n (open: boolean) => {\n setIsOpen(open && !disabled);\n },\n [disabled],\n );\n\n const clearOption = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n\n if (multiselect) {\n setValue([]);\n } else {\n setValue(null);\n }\n },\n [multiselect, setValue],\n );\n\n const valueNonEmpty = useMemo(() => {\n if (multiselect) {\n return value.length > 0;\n } else {\n return Boolean(value);\n }\n }, [multiselect, value]);\n\n const renderedOptions = useMemo<React.ReactNode>(() => {\n if (!children)\n return options.map((value, key) => (\n <Select.Option value={value} key={key}>\n <OptionComponent value={value} />\n </Select.Option>\n ));\n\n return children;\n }, [OptionComponent, children, options]);\n\n return (\n <SelectContext.Provider\n value={\n {\n selectedValue: value,\n setValue,\n multiselect: multiselect ?? false,\n isEqualComparator,\n maxOptions: maxOptions ?? null,\n setIsOpen,\n } as SelectContextValue<unknown>\n }\n >\n <Field id={id} error={error} isFocus={isOpen} ref={containerRef} {...fieldProps}>\n <section\n id={name}\n style={style}\n onBlur={onBlur}\n className={`select ${disabled ? 'disabled' : ''} ${className}`}\n >\n <section\n id={id}\n className={`select-container ${valueNonEmpty && showClearOption ? 'three-columns' : ''}`}\n onClick={() => openSelect(true)}\n >\n <button\n type='button'\n className={`input-button ${(Array.isArray(value) ? value.length > 0 : value) ? '' : 'placeholder'}`}\n aria-haspopup='listbox'\n aria-expanded={isOpen}\n onFocus={e => {\n openSelect(true);\n\n if (onFocus) onFocus(e);\n }}\n >\n {valueNonEmpty ? (\n <ValueComponent {...(multiselect ? { value, multiselect } : { value: value })} />\n ) : (\n <Typography variant='label' noPadding nowrap>\n {placeholder}\n </Typography>\n )}\n </button>\n {valueNonEmpty && showClearOption && (\n <section className='icon-close' onClick={clearOption}>\n <ImCross />\n </section>\n )}\n <PiCaretDown className={`select-caret-icon ${isOpen && 'is-select-open'}`} />\n </section>\n <Menu\n id='form-select'\n isOpen={isOpen}\n onClose={() => openSelect(false)}\n backdrop={isMobile ? 'blur' : 'transparent'}\n opacity={isMobile ? 0.8 : 0.4}\n position={isMobile ? 'center' : 'bottom'}\n offset={5}\n modalRef={modalRef}\n windowOffset={10}\n transitionDuration={200}\n containerRef={isMobile ? undefined : containerRef}\n contentClassName='select-menu-content'\n className='select-options-menu'\n >\n <Options\n containerRef={containerRef}\n onSearchQuery={onSearchQuery}\n searchQueryValue={searchQueryValue}\n searchQueryPlaceholder={searchQueryPlaceholder}\n searchQueryClassName={searchQueryClassName}\n searchQueryStyle={searchQueryStyle}\n height={height}\n >\n <InfinityScroll\n isLoading={isLoading}\n hasNextPage={hasNextPage}\n loadMore={loadMore}\n emptyMessage={emptyMessage}\n >\n {renderedOptions}\n </InfinityScroll>\n </Options>\n </Menu>\n </section>\n </Field>\n </SelectContext.Provider>\n );\n};\n\nconst MultiSelectController = <T extends SelectItem>({\n rules,\n ...props\n}: ControllerGeneratorProps<MultiSelectProps<T>, MultiValue<T>>) => {\n return (\n <Controller<MultiSelectProps<T>, MultiValue<T>>\n Component={Select}\n defaultValue={[]}\n inputProps={{\n ...props,\n multiselect: true,\n }}\n rules={rules}\n />\n );\n};\n\nconst SingleSelectController = <T extends SelectItem>({\n rules,\n ...props\n}: ControllerGeneratorProps<SingleSelectProps<T>, SingleValue<T>>) => {\n return (\n <Controller<SingleSelectProps<T>, SingleValue<T>>\n Component={Select}\n defaultValue={null}\n inputProps={{\n ...props,\n multiselect: false,\n }}\n rules={rules}\n />\n );\n};\n\nconst SelectController = <T extends SelectItem>(props: ControllerGeneratorSelectProps<T>) => {\n const { multiselect } = props;\n\n if (multiselect) {\n return <MultiSelectController<T> {...props} multiselect={true} />;\n }\n\n return <SingleSelectController<T> {...props} multiselect={false} />;\n};\n\nSelect.Controller = SelectController;\nSelect.Option = Option;\nSelect.OptionLabel = OptionLabel;\n","import { useEffect } from 'react';\n\nimport { useDebounce, useInView } from '../../hooks';\n\nimport './infinity-scroll.styles.css';\n\ninterface InfinityScrollProps extends React.HTMLAttributes<HTMLDivElement> {\n isLoading: boolean;\n hasNextPage: boolean;\n loadMore: () => void;\n customLoadMoreElement?: (ref: React.RefObject<HTMLElement | null>) => React.ReactNode;\n emptyMessage?: string;\n children?: React.ReactNode;\n}\n\nexport const InfinityScroll = ({\n isLoading: isLoadingProp = false,\n hasNextPage = false,\n loadMore,\n customLoadMoreElement,\n emptyMessage,\n children,\n}: InfinityScrollProps) => {\n const { ref, inView } = useInView();\n const isLoading = useDebounce(isLoadingProp, 100);\n\n useEffect(() => {\n if (hasNextPage && inView && !isLoading) {\n loadMore();\n }\n }, [hasNextPage, isLoading, loadMore, inView]);\n\n const childrenExists = Array.isArray(children) ? children.length > 0 : Boolean(children);\n\n return (\n <>\n {children}\n <section className='infinity-scroll'>\n {Boolean(emptyMessage) && !childrenExists && !isLoading && <p className='empty-message'>{emptyMessage}</p>}\n {(hasNextPage || isLoading) &&\n (customLoadMoreElement ? (\n customLoadMoreElement(ref)\n ) : (\n <section ref={ref} className='loading'>\n {isLoading && <span className='loading--icon'>:D</span>}\n </section>\n ))}\n </section>\n </>\n );\n};\n","import React, { useCallback, useMemo } from 'react';\n\nimport { Menu } from '../../modals';\nimport { Typography } from '../../typography';\n\nimport { useSelectContext } from './select.component';\nimport { SelectItem } from './select.types';\n\ntype OptionProps<T extends SelectItem> = {\n children: React.ReactNode;\n value: T;\n};\n\nexport const Option = <T extends SelectItem>({ children, value }: OptionProps<T>) => {\n const { multiselect, isEqualComparator, maxOptions, selectedValue, setValue, setIsOpen } = useSelectContext<T>();\n\n const compareValuesIsEqual = useCallback(\n (a: T, b: T): boolean => {\n if (['number', 'string'].includes(typeof a)) {\n return a === b;\n }\n\n return !!isEqualComparator && isEqualComparator(a, b);\n },\n [isEqualComparator],\n );\n\n const toggleOption = useCallback(\n (isSelected: boolean) => {\n if (isSelected) {\n if (multiselect) {\n if (maxOptions && Array.isArray(selectedValue) && selectedValue.length >= maxOptions) {\n return;\n }\n\n setValue([...selectedValue, value]);\n } else {\n setValue(value);\n setIsOpen(false);\n }\n } else {\n if (multiselect) {\n setValue(selectedValue.filter(item => !compareValuesIsEqual(item, value)));\n } else {\n setValue(null);\n setIsOpen(false);\n }\n }\n },\n [multiselect, maxOptions, selectedValue, setValue, value, setIsOpen, compareValuesIsEqual],\n );\n\n const isSelected = useMemo(() => {\n if (selectedValue === '' || selectedValue === null) {\n return false;\n }\n\n if (!Array.isArray(selectedValue)) {\n return compareValuesIsEqual(value, selectedValue);\n }\n\n if (['number', 'string'].includes(typeof value)) {\n return selectedValue.includes(value);\n }\n\n return selectedValue.some(item => !!isEqualComparator && isEqualComparator(value, item));\n }, [compareValuesIsEqual, isEqualComparator, selectedValue, value]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (['Enter', ' '].includes(e.key)) {\n e.preventDefault();\n\n toggleOption(!(isSelected && multiselect));\n }\n },\n [toggleOption, isSelected, multiselect],\n );\n\n const optionLabel = useMemo(() => {\n if (typeof children === 'string') {\n return (\n <Typography data-value={value} variant='label' nowrap>\n {children}\n </Typography>\n );\n }\n\n return children;\n }, [children, value]);\n\n return (\n <Menu.Option\n label={optionLabel}\n onKeyDown={handleKeyDown}\n asCheckbox={multiselect}\n selected={isSelected}\n onClick={(selected: boolean) => toggleOption(multiselect ? selected : true)}\n />\n );\n};\n","import React, { RefObject, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { useClassNames, useEventListener, useMediaQuery, useResizeObserver } from '../../../hooks';\n\nimport { OptionsProps } from './select.types';\n\ntype UseDynamicHeight = {\n height: number;\n minHeight: number;\n containerRef: RefObject<HTMLElement | null>;\n offset: number;\n windowOffset: number;\n};\n\nconst useDynamicHeight = ({\n height,\n minHeight: defaultMinHeight,\n containerRef,\n offset,\n windowOffset,\n}: UseDynamicHeight) => {\n const [h, setH] = useState<string | undefined>(undefined);\n\n const getMaxHeight = useCallback(() => {\n const containerBottom = containerRef.current?.getBoundingClientRect().bottom ?? 0;\n\n const heightBottom = window.innerHeight - containerBottom - windowOffset - offset - 5;\n const heightTop = window.innerHeight - windowOffset * 3;\n const heightCalculated = heightBottom < defaultMinHeight ? heightTop : heightBottom;\n const maxHeight = Math.min(heightCalculated, height);\n const minHeight = Math.max(maxHeight, defaultMinHeight);\n\n setH(`${Math.round(minHeight)}px`);\n }, [containerRef, windowOffset, offset, defaultMinHeight, height]);\n\n useEffect(() => {\n getMaxHeight();\n }, [getMaxHeight]);\n\n useResizeObserver(containerRef, getMaxHeight);\n useEventListener('resize', getMaxHeight);\n\n return { h };\n};\n\nexport const Options = ({\n children,\n searchQueryValue,\n searchQueryPlaceholder = 'Search option',\n searchQueryClassName = '',\n searchQueryStyle = {},\n onSearchQuery,\n containerRef,\n height = 300,\n}: OptionsProps) => {\n const optionsGroupContainerRef = useRef<HTMLDivElement>(null);\n const optionsGroupRef = useRef<HTMLUListElement>(null);\n const [internalSearchQuery, setInternalSearchQuery] = useState('');\n const searchInputRef = useRef<HTMLInputElement>(null);\n const isMobile = useMediaQuery('(max-width: 480px)');\n\n useEventListener('keydown', e => {\n if (['ArrowDown', 'ArrowUp'].includes(e.code)) {\n e.preventDefault();\n const focusedItem = document.activeElement;\n const isListItem = focusedItem?.tagName === 'LI';\n\n if (isListItem) {\n switch (e.code) {\n case 'ArrowDown':\n (focusedItem?.nextSibling as HTMLElement)?.focus();\n\n break;\n case 'ArrowUp':\n (focusedItem?.previousElementSibling as HTMLElement)?.focus();\n\n break;\n }\n }\n }\n });\n\n const handleSearchQuery = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = e.target;\n\n if (onSearchQuery) onSearchQuery(value);\n\n setInternalSearchQuery(value);\n },\n [onSearchQuery],\n );\n\n useEffect(() => {\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, []);\n\n const { h } = useDynamicHeight({\n height,\n minHeight: 150,\n containerRef,\n offset: 5,\n windowOffset: 10,\n });\n\n const [shouldUseAuto, setShouldUseAuto] = useState(false);\n\n const calculateHeight = useCallback(() => {\n const optionsContainerHeight =\n Math.round(optionsGroupContainerRef.current?.getBoundingClientRect().height ?? 0) + 2;\n const optionsHeight = Math.round(optionsGroupRef.current?.scrollHeight ?? 0);\n\n setShouldUseAuto(optionsContainerHeight >= optionsHeight);\n }, []);\n\n useEffect(calculateHeight, [calculateHeight]);\n useResizeObserver(optionsGroupContainerRef, calculateHeight);\n useResizeObserver(optionsGroupRef, calculateHeight);\n useEventListener('resize', calculateHeight);\n\n const selectOptionsHeader = useClassNames({\n 'select-options-header': true,\n [searchQueryClassName]: Boolean(searchQueryClassName),\n });\n\n return (\n <section\n className={`select-options ${onSearchQuery ? 'with-search-query' : ''}`}\n style={\n isMobile\n ? {\n maxHeight: window.innerHeight - 100,\n width: window.innerWidth - 100,\n }\n : {\n height: shouldUseAuto ? 'auto' : h,\n maxHeight: height,\n width: containerRef.current?.offsetWidth ?? 'auto',\n }\n }\n >\n {onSearchQuery && (\n <section className={selectOptionsHeader} style={searchQueryStyle}>\n <input\n name='query'\n className='input-search'\n value={searchQueryValue ?? internalSearchQuery}\n onChange={handleSearchQuery}\n placeholder={searchQueryPlaceholder}\n onClick={e => e.stopPropagation()}\n ref={searchInputRef}\n autoFocus\n />\n </section>\n )}\n <section className='select-options-list-container' ref={optionsGroupContainerRef}>\n <ul className='select-options-list' ref={optionsGroupRef}>\n {children}\n </ul>\n </section>\n </section>\n );\n};\n","import { useMemo } from 'react';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './slider.styles.css';\n\ntype SliderProps = InputFieldProps<{\n min?: number;\n max?: number;\n step?: number;\n onlySlider?: boolean;\n}>;\n\nexport const Slider = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n min,\n max,\n step,\n onlySlider = false,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<SliderProps, number>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const onBlurInput = (e: React.FocusEvent<HTMLInputElement>) => {\n if (onBlur) onBlur(e);\n\n const parsedValue = parseInt(`${value}`);\n\n if (min !== undefined && parsedValue < min) {\n setValue(min);\n }\n\n if (max !== undefined && parsedValue > max) {\n setValue(max);\n }\n\n setValue(parsedValue);\n };\n\n const { isFocus, handlers } = useInputHandlers({\n onBlur: onBlurInput,\n onChange: e => setValue(+e.target.value),\n onFocus: onFocus,\n });\n\n const inputSliderClassName = useClassNames({\n 'input-slider': true,\n 'is-focus': isFocus,\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <section className={inputSliderClassName}>\n <input\n id={id}\n type='range'\n name={name}\n className={`slider ${className}`}\n style={style}\n value={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n min={min}\n max={max}\n step={step}\n {...handlers}\n />\n {!onlySlider && (\n <input\n id={id}\n type='number'\n name={name}\n className={`slider-number ${className}`}\n style={style}\n value={value}\n autoComplete={autoComplete}\n disabled={disabled}\n readOnly={readOnly}\n min={min}\n max={max}\n step={step}\n {...handlers}\n />\n )}\n </section>\n </Field>\n );\n};\n\nconst SliderController = ({ rules, ...props }: ControllerGeneratorProps<SliderProps, number>) => {\n return <Controller Component={Slider} defaultValue={0} inputProps={props} rules={rules} />;\n};\n\nSlider.Controller = SliderController;\n","import React, { useMemo } from 'react';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './textarea.styles.css';\n\ntype TextareaProps = InputFieldProps<{\n rows?: number;\n resize?: React.CSSProperties['resize'];\n leftIcon?: never;\n rightIcon?: never;\n}>;\n\nexport const Textarea = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n rows = 4,\n resize = 'vertical',\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<TextareaProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers, isFocus } = useInputHandlers<HTMLTextAreaElement>({\n onBlur: onBlur,\n onChange: e => setValue(e.target.value),\n onFocus: onFocus,\n });\n\n const textareaClassName = useClassNames({\n textarea: true,\n [className]: Boolean(className),\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <textarea\n id={id}\n name={name}\n className={textareaClassName}\n style={{\n resize: resize,\n ...style,\n }}\n value={value}\n rows={rows}\n {...handlers}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n />\n </Field>\n );\n};\n\nconst TextareaController = ({ rules, ...props }: ControllerGeneratorProps<TextareaProps, string>) => {\n return <Controller Component={Textarea} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nTextarea.Controller = TextareaController;\n","import { useMemo } from 'react';\nimport { IconType } from 'react-icons';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { ColorTypes, SizeTypes } from '../../component.types';\nimport { Tooltip } from '../../tooltips';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './switch.styles.css';\n\nconst DotSizeMap = {\n [SizeTypes.SMALL]: 1,\n [SizeTypes.REGULAR]: 1.2,\n [SizeTypes.LARGE]: 1.4,\n};\n\nconst WidthMap = {\n [SizeTypes.SMALL]: 2,\n [SizeTypes.REGULAR]: 2.5,\n [SizeTypes.LARGE]: 3,\n};\n\ntype SwitchProps = {\n leftLabel?: string;\n rightLabel?: string;\n label?: string;\n dotHoverSize?: number;\n padding?: number;\n leftIcon?: IconType;\n rightIcon?: IconType;\n internalLeftIcon?: IconType;\n internalRightIcon?: IconType;\n leftIconTooltip?: string;\n rightIconTooltip?: string;\n color?: `${ColorTypes}`;\n size?: `${SizeTypes}`;\n width?: `${SizeTypes}`;\n};\n\nexport const Switch = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n label,\n leftLabel,\n rightLabel,\n width = SizeTypes.REGULAR,\n size = SizeTypes.REGULAR,\n dotHoverSize = 1.3,\n padding = 0.25,\n leftIcon: LeftIcon,\n rightIcon: RightIcon,\n internalLeftIcon: InternalLeftIcon,\n internalRightIcon: InternalRightIcon,\n leftIconTooltip,\n rightIconTooltip,\n color,\n /*\n * isDirty = false,\n * isTouched = false,\n * invalid = false,\n * error,\n */\n}: UnControlledComponentProps<SwitchProps, boolean>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers } = useInputHandlers<HTMLInputElement>({\n onChange: e => setValue(e.target.checked),\n onBlur: onBlur,\n onFocus: onFocus,\n });\n\n const switchContainerClassName = useClassNames({\n 'switch-container': true,\n [className]: Boolean(className),\n [`color-${color}`]: Boolean(color),\n });\n\n const switchClassName = useClassNames({\n switch: true,\n 'is-checked': value,\n 'is-readonly': !disabled && readOnly,\n });\n\n const dotSize = DotSizeMap[size] ?? DotSizeMap[SizeTypes.REGULAR];\n const _width = (WidthMap[width] ?? WidthMap[SizeTypes.REGULAR]) * dotSize;\n const _padding = Math.min(padding, dotSize);\n\n return (\n <section\n className={switchContainerClassName}\n style={\n {\n ...style,\n '--width': `${_width}em`,\n '--dot-size': `${dotSize}em`,\n '--dot-hover-size': `${dotSize * Math.min(Math.max(dotHoverSize, 1), 2)}em`,\n '--padding': `${_padding}em`,\n } as React.CSSProperties\n }\n >\n {leftLabel ? (\n <Typography variant='label-form' className='switch-label' htmlFor={id}>\n {leftLabel}\n </Typography>\n ) : null}\n {LeftIcon !== undefined && (\n <Tooltip content={leftIconTooltip} disabled={!leftIconTooltip} offset={10}>\n <LeftIcon size={`${dotSize * 0.7}em`} className='switch-icon' onClick={() => setValue(!value)} />\n </Tooltip>\n )}\n <section className={switchClassName}>\n {InternalLeftIcon !== undefined && (\n <span className='switch-internal-left-icon'>\n <InternalLeftIcon size={`${dotSize * 0.7}em`} />\n </span>\n )}\n {InternalRightIcon !== undefined && (\n <span className='switch-internal-right-icon'>\n <InternalRightIcon size={`${dotSize * 0.7}em`} />\n </span>\n )}\n <span className='switch-dot' />\n <input\n id={id}\n type='checkbox'\n name={name}\n className={`switch-checkbox ${className}`}\n style={style}\n checked={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled || readOnly}\n {...handlers}\n />\n </section>\n {RightIcon !== undefined && (\n <Tooltip content={rightIconTooltip} disabled={!rightIconTooltip} offset={10}>\n <RightIcon size={`${dotSize * 0.7}em`} className='switch-icon' onClick={() => setValue(!value)} />\n </Tooltip>\n )}\n {label || rightLabel ? (\n <Typography variant='label-form' className='switch-label' htmlFor={id}>\n {label || rightLabel}\n </Typography>\n ) : null}\n </section>\n );\n};\n\nconst SwitchController = ({ rules, ...props }: ControllerGeneratorProps<SwitchProps, boolean>) => {\n return <Controller Component={Switch} defaultValue={false} inputProps={props} rules={rules} />;\n};\n\nSwitch.Controller = SwitchController;\n","import { useState } from 'react';\n\nimport { Tooltip, TooltipProps } from '../tooltip';\n\ntype ClickToCopyProps = {\n children?: React.ReactNode;\n position?: TooltipProps['position'];\n offset?: TooltipProps['offset'];\n value: string;\n tooltipText: string;\n tooltipCopiedText?: string;\n copiedTextTimeout?: number;\n};\n\nexport const ClickToCopy = ({\n children,\n value,\n position,\n offset,\n tooltipText,\n tooltipCopiedText,\n copiedTextTimeout = 500,\n}: ClickToCopyProps) => {\n const [justCopied, setJustCopied] = useState(false);\n\n const handleCopy = () => {\n setJustCopied(true);\n navigator.clipboard.writeText(value);\n setTimeout(() => setJustCopied(false), copiedTextTimeout);\n };\n\n return (\n <Tooltip\n content={justCopied && tooltipCopiedText ? tooltipCopiedText : tooltipText}\n position={position}\n offset={offset}\n >\n <span onClick={handleCopy}>{children}</span>\n </Tooltip>\n );\n};\n","import React, { cloneElement } from 'react';\n\nimport { PositionContainer } from '../../../helpers';\nimport { useClassNames, useEventListener, useModal } from '../../../hooks';\nimport { Modal } from '../../modals';\n\nimport './tooltip.styles.css';\n\nexport type TooltipProps = {\n position?:\n | `${PositionContainer.TOP}`\n | `${PositionContainer.LEFT}`\n | `${PositionContainer.RIGHT}`\n | `${PositionContainer.BOTTOM}`;\n offset?: number | `${number}`;\n disabled?: boolean;\n children: React.ReactElement<{\n ref: React.RefObject<HTMLElement | null>;\n }>;\n content: React.ReactNode;\n};\n\nexport const Tooltip = ({\n position = PositionContainer.TOP,\n children,\n content,\n offset = 5,\n disabled = false,\n}: TooltipProps) => {\n const { containerRef, openModal, closeModal, isOpen } = useModal();\n\n const classNames = useClassNames({\n tooltip: true,\n [position]: true,\n });\n\n useEventListener('mouseenter', () => openModal(), containerRef);\n useEventListener('mouseleave', () => closeModal(), containerRef);\n\n if (disabled) return children;\n\n return (\n <>\n {cloneElement(children, { ref: containerRef })}\n\n <Modal\n backdrop='none'\n id='tooltip'\n isOpen={isOpen}\n containerRef={containerRef}\n onClose={closeModal}\n position={position}\n className={classNames}\n closeOnClickOutside={false}\n offset={6 + +offset}\n windowOffset={10}\n transitionDuration={100}\n closeAnimationClassName='close-animation'\n >\n <span className='tooltip-content'>{content}</span>\n </Modal>\n </>\n );\n};\n","import { DetailedHTMLProps, ImgHTMLAttributes } from 'react';\n\ntype ImageProps = DetailedHTMLProps<ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> & {};\n\nexport const Image = ({ alt = '', loading = 'eager', ...props }: ImageProps) => {\n return <img loading={loading} alt={alt} {...props} width='100%' />;\n};\n","import { useMemo, useState } from 'react';\n\nimport { useClassNames } from '../../hooks';\nimport { KeyValuesOf } from '../../types';\nimport { Checkbox } from '../form';\n\nimport { SmartTableColumn } from './smart-table.column';\nimport { sortData } from './smart-table.helpers';\nimport { useSort } from './smart-table.hooks';\nimport { SmartTableRow } from './smart-table.row';\nimport './smart-table.styles.css';\nimport { ColumnData, RowDataObject } from './smart-table.types';\n\ntype SmartTableProps<RowData extends RowDataObject> = {\n columns: Array<ColumnData<RowData>>;\n data: Array<RowData>;\n width?: 'scroll' | 'content';\n selectable?: boolean;\n rowId: KeyValuesOf<RowData, React.Key>;\n className?: string;\n tableClassName?: string;\n};\n\nexport const SmartTable = <RowData extends RowDataObject>({\n columns: initialColumns,\n data,\n width,\n selectable = false,\n rowId,\n className = '',\n tableClassName: _tableClassName = '',\n}: SmartTableProps<RowData>) => {\n const [selected, setSelected] = useState<{ [key: string]: RowData }>({});\n\n const tableClassName = useClassNames({\n 'smart-table': true,\n [_tableClassName]: Boolean(_tableClassName),\n 'layout-fixed': width === 'content',\n 'layout-scrollable': width === 'scroll',\n });\n\n const tableContainerClassName = useClassNames({\n 'smart-table-container': true,\n [className]: Boolean(className),\n });\n\n const { sortBy, order, toggleSortField } = useSort<RowData>();\n\n const columns = useMemo(() => {\n let finalColumns = [...initialColumns];\n\n if (selectable) {\n finalColumns = [\n {\n header: `${Object.values(selected).length}`,\n render: (data, rowKey) => (\n <Checkbox\n name={`selected-${rowKey}`}\n value={`${rowKey}` in selected}\n setValue={isSelected => {\n setSelected(prev => {\n const copy = { ...prev };\n\n if (isSelected) {\n copy[`${rowKey}`] = data;\n } else {\n delete copy[`${rowKey}`];\n }\n\n return copy;\n });\n }}\n />\n ),\n },\n ...finalColumns,\n ];\n }\n\n return finalColumns;\n }, [initialColumns, selectable, selected]);\n\n const rows = useMemo(() => sortData<RowData>(data, sortBy, order), [data, sortBy, order]);\n\n return (\n <section className={tableContainerClassName}>\n <table className={tableClassName}>\n <thead>\n <tr>\n {columns.map((column, key) => (\n <SmartTableColumn\n key={key}\n toggleSortField={toggleSortField}\n sortField={sortBy}\n orderField={order}\n {...column}\n />\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map(row => (\n <SmartTableRow\n key={row[rowId] as React.Key}\n rowKey={row[rowId] as React.Key}\n data={row}\n columns={columns}\n isSelected={`${row[rowId] as React.Key}` in selected}\n selectable={selectable}\n />\n ))}\n </tbody>\n </table>\n </section>\n );\n};\n","import { useMemo } from 'react';\nimport { MdArrowDownward, MdArrowUpward } from 'react-icons/md';\n\nimport { useClassNames } from '../../hooks';\nimport { Grid } from '../../layouts';\nimport { Ripple } from '../ripple';\nimport { Typography } from '../typography';\n\nimport { ColumnData, Order, RowDataObject } from './smart-table.types';\n\ntype SmartTableColumnProps<RowData extends RowDataObject> = ColumnData<RowData> & {\n toggleSortField: (field: ColumnData<RowData>['sortBy']) => void;\n sortField: ColumnData<RowData>['sortBy'] | null;\n orderField: Order | null;\n};\n\nexport const SmartTableColumn = <RowData extends RowDataObject>({\n header,\n sortBy,\n icon: Icon,\n width,\n field,\n toggleSortField,\n sortField,\n orderField,\n hidden,\n}: SmartTableColumnProps<RowData>) => {\n const sortByKey = sortBy !== undefined ? sortBy : field;\n\n const columnClassName = useClassNames({\n 'sort-on-click': Boolean(sortByKey),\n });\n\n const columnOnClick = sortByKey ? () => toggleSortField(sortByKey) : undefined;\n\n const sortIcon = useMemo(() => {\n if (!sortByKey) return null;\n\n return (\n <span className='sort-icon'>\n {Boolean(sortField) &&\n sortField === sortByKey &&\n (orderField === 'asc' ? <MdArrowUpward /> : <MdArrowDownward />)}\n </span>\n );\n }, [sortByKey, sortField, orderField]);\n\n if (hidden) return null;\n\n return (\n <th style={{ width }} className={columnClassName} onClick={columnOnClick}>\n <Grid flow='column' gap='0.5em' jc='space-between' ai='center'>\n {Icon ? <Icon /> : null}\n <Typography variant='label' noPadding>\n {header}\n </Typography>\n {sortIcon}\n </Grid>\n <Ripple color='var(--primary-700)' />\n </th>\n );\n};\n","import React from 'react';\n\nimport { Typography } from '../typography';\n\nimport { ColumnData, Order, Primitive, RowDataObject } from './smart-table.types';\n\nconst renderRowColumn = <RowData extends RowDataObject>(\n data: RowData,\n { field, render, Component }: ColumnData<RowData>,\n rowKey: React.Key,\n): React.ReactNode => {\n if (field && data[field])\n return (\n <Typography noPadding nowrap>\n {data[field] as Primitive}\n </Typography>\n );\n\n if (render) return render(data, rowKey);\n\n if (Component) return <Component data={data} rowKey={rowKey} />;\n};\n\nexport const renderRow = <RowData extends RowDataObject>(\n data: RowData,\n columns: Array<ColumnData<RowData>>,\n rowKey: React.Key,\n) => columns.map((column, key) => (column.hidden ? null : <td key={key}>{renderRowColumn(data, column, rowKey)}</td>));\n\nexport const sortData = <RowData extends RowDataObject>(\n data: Array<RowData>,\n sortBy: ColumnData<RowData>['sortBy'] | null,\n order: Order | null,\n) => {\n if (sortBy) {\n return data.toSorted((a, b) => {\n const fieldA = a[sortBy];\n const fieldB = b[sortBy];\n\n if (\n ['number', 'boolean', 'string'].includes(typeof fieldA) &&\n ['number', 'boolean', 'string'].includes(typeof fieldB)\n ) {\n if (fieldA === fieldB) return 0;\n\n if (order === 'asc') {\n return fieldA > fieldB ? 1 : -1;\n }\n\n return fieldA > fieldB ? -1 : 1;\n }\n\n return 0;\n });\n }\n\n return data;\n};\n","import { useCallback, useState } from 'react';\n\nimport { ColumnData, Order, RowDataObject } from './smart-table.types';\n\nexport const useSort = <RowData extends RowDataObject>() => {\n const [[sortBy, order], setSortField] = useState<[ColumnData<RowData>['sortBy'] | null, Order | null]>([null, null]);\n\n const toggleSortField = useCallback((sortByField: ColumnData<RowData>['sortBy']) => {\n setSortField(([sortBy, order]) => {\n if (sortByField !== sortBy) {\n return [sortByField, 'asc'];\n }\n\n if (order === 'asc') {\n return [sortByField, 'desc'];\n }\n\n return [null, null];\n });\n }, []);\n\n return {\n sortBy,\n order,\n toggleSortField,\n };\n};\n","import React from 'react';\n\nimport { useClassNames } from '../../hooks';\n\nimport { renderRow } from './smart-table.helpers';\nimport { ColumnData, RowDataObject } from './smart-table.types';\n\ntype SmartTableRowProps<RowData extends RowDataObject> = {\n data: RowData;\n columns: Array<ColumnData<RowData>>;\n isSelected: boolean;\n selectable: boolean;\n rowKey: React.Key;\n};\n\nexport const SmartTableRow = <RowData extends RowDataObject>({\n data,\n columns,\n isSelected = false,\n selectable = false,\n rowKey,\n}: SmartTableRowProps<RowData>) => {\n const rowClassName = useClassNames({\n 'row-selected': selectable && isSelected,\n });\n\n return <tr className={rowClassName}>{renderRow(data, columns, rowKey)}</tr>;\n};\n","import React, { createContext, useContext, useEffect, useState } from 'react';\n\nimport { useClassNames } from '../../hooks';\n\nimport { TabsList as TabListComponent, TabListProps } from './tabs-list';\nimport './tabs.styles.css';\n\ntype TabsContextState = {\n openTab: string;\n changeOpenTab: (id: string) => void;\n};\n\nconst TabsContext = createContext<TabsContextState | null>(null);\n\nconst useTab = (id: string): [boolean, () => void] => {\n const context = useContext(TabsContext);\n\n if (!context) {\n throw new Error('You cant use this component out off an Tabs component');\n }\n\n const { openTab, changeOpenTab } = context;\n\n return [openTab === id, () => changeOpenTab(id)];\n};\n\nconst useTabsContext = (): TabsContextState => {\n const context = useContext(TabsContext);\n\n if (!context) {\n throw new Error('You cant use this component out off an Tabs component');\n }\n\n return context;\n};\n\ntype TabsProps = {\n children: React.ReactNode;\n defaultOpenTab: string;\n onChange?: (id: string) => void;\n};\n\nexport const Tabs = ({ children, defaultOpenTab, onChange }: TabsProps) => {\n const [openTab, setOpenTab] = useState(defaultOpenTab);\n\n useEffect(() => {\n if (onChange) {\n onChange(openTab);\n }\n }, [openTab, onChange]);\n\n return (\n <TabsContext.Provider\n value={{\n openTab,\n changeOpenTab: id => setOpenTab(id),\n }}\n >\n {children}\n </TabsContext.Provider>\n );\n};\n\ntype TabProps = {\n id: string;\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n onClick?: (e: React.MouseEvent<HTMLSpanElement>) => void;\n ref?: React.RefObject<HTMLSpanElement | null>;\n};\n\nconst Tab = ({ id, children, className = '', style = {}, onClick, ref }: TabProps) => {\n const [isOpen, openTab] = useTab(id);\n const tabClassNames = useClassNames({\n tab: true,\n [className]: !!className,\n 'is-open': isOpen,\n });\n\n const handleClick = (e: React.MouseEvent<HTMLSpanElement>) => {\n openTab();\n\n if (onClick) {\n onClick(e);\n }\n };\n\n return (\n <span className={tabClassNames} style={style} onClick={handleClick} ref={ref}>\n {children}\n </span>\n );\n};\n\ntype TabPanelProps = {\n id: string;\n children: React.ReactNode;\n};\n\nconst TabPanel = ({ id, children }: TabPanelProps) => {\n const [isOpen] = useTab(id);\n\n return isOpen ? children : null;\n};\n\nconst TabList = ({ children, ...props }: Omit<TabListProps, 'openTab'>) => {\n const { openTab } = useTabsContext();\n\n return (\n <TabListComponent {...props} openTab={openTab}>\n {children}\n </TabListComponent>\n );\n};\n\nTabs.Tab = Tab;\nTabs.TabPanel = TabPanel;\nTabs.TabList = TabList;\n","import React, { useEffect, useRef, useState } from 'react';\n\nimport { useClassNames } from '../../hooks';\n\nimport { Tabs } from './tabs';\n\nexport enum RadiusVariants {\n None = 'none',\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n Full = 'full',\n}\n\nexport enum SizeVariants {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\nconst DefaultRect = {\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n};\n\nexport enum TabListVariant {\n SOLID = 'solid',\n GHOST = 'ghost',\n FLAT = 'flat',\n LINE = 'line',\n}\n\nexport enum TabListColor {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n TERTIARY = 'tertiary',\n}\n\nexport enum TabListDirection {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\nexport type TabListProps = {\n openTab: string;\n variant?: `${TabListVariant}`;\n children?: React.ReactNode;\n size?: `${SizeVariants}`;\n color?: `${TabListColor}`;\n radius?: `${RadiusVariants}`;\n direction?: `${TabListDirection}`;\n className?: string;\n style?: React.CSSProperties;\n tabs?: Array<{\n id: string;\n label: React.ReactNode;\n }>;\n};\n\nexport const TabsList = ({\n tabs = [],\n variant = TabListVariant.SOLID,\n radius = RadiusVariants.Full,\n direction = TabListDirection.HORIZONTAL,\n color,\n children,\n openTab,\n size = SizeVariants.Medium,\n className = '',\n style = {},\n}: TabListProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const selectedTabRef = useRef<HTMLSpanElement>(null);\n const [isSelectorActive, setIsSelectorActive] = useState(false);\n const [selector, setSelector] = useState(DefaultRect);\n const containerClassNames = useClassNames({\n 'tab-list': true,\n [`variant-${variant}`]: Boolean(variant),\n [`size-${size}`]: Boolean(size),\n [`radius-${radius}`]: Boolean(radius),\n [`color-${color}`]: Boolean(color),\n 'vertical-direction': direction === TabListDirection.VERTICAL,\n [className]: Boolean(className),\n });\n\n useEffect(() => {\n const selectedRect = selectedTabRef.current?.getBoundingClientRect() ?? DefaultRect;\n const containerRect = containerRef.current?.getBoundingClientRect() ?? DefaultRect;\n\n const width = selectedRect.width;\n const height = variant === TabListVariant.LINE ? 2 : selectedRect.height;\n const left = selectedRect.left - containerRect.left;\n const top =\n variant === TabListVariant.LINE\n ? selectedRect.top + selectedRect.height - containerRect.top\n : selectedRect.top - containerRect.top;\n\n setSelector({ left, top, width, height });\n\n if (!isSelectorActive) {\n setTimeout(() => {\n setIsSelectorActive(true);\n }, 100);\n }\n }, [isSelectorActive, variant, openTab]);\n\n return (\n <section className={containerClassNames} ref={containerRef} style={style}>\n {Boolean(variant) && <span className={`tabs-selector ${isSelectorActive ? 'active' : ''}`} style={selector} />}\n {tabs.map(({ id, label }) => (\n <Tabs.Tab key={id} id={id} ref={id === openTab ? selectedTabRef : undefined}>\n {label}\n </Tabs.Tab>\n ))}\n {children}\n </section>\n );\n};\n","import { useClassNames } from '../../hooks';\n\nimport './tag.styles.css';\n\nexport enum TagRounded {\n NONE = 'none',\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large',\n FULL = 'full',\n}\n\ninterface TagProps extends React.HTMLAttributes<HTMLSpanElement> {\n children: React.ReactNode;\n selected?: boolean;\n rounded?: `${TagRounded}`;\n noWrap?: boolean;\n ref?: React.Ref<HTMLElement>;\n}\n\nexport const Tag = ({ children, rounded = TagRounded.MEDIUM, selected = false, noWrap = false, ref }: TagProps) => {\n const className = useClassNames({\n tag: true,\n [`rounded-${rounded}`]: Boolean(rounded),\n 'is-selected': selected,\n 'no-wrap': noWrap,\n });\n\n return (\n <span className={className} ref={ref}>\n {children}\n </span>\n );\n};\n"],"mappings":"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","names":["createContext","useCallback","useContext","useMemo","useState","useMemo","useClassNames","classes","compiledClassNames","classname","value","useEffect","useLayoutEffect","useRef","useEventListener","eventName","callback","element","options","callbackRef","targetElement","listener","event","checkIsOutside","ref","target","useClickOutside","callback","useEventListener","e","event","r","useEffect","useState","useDebounce","value","delay","debouncedValue","setDebouncedValue","timer","useEffect","useResizeObserver","ref","callback","refs","observer","r","useEffect","useState","createContainer","containerID","domContainer","useDomContainer","container","setContainer","formatBytes","bytes","decimals","k","dm","sizes","i","getModalPosition","c","m","offset","position","top","left","getOppositePosition","windowOffset","positions","newPosition","rightOffset","bottomOffset","p","fixModalPosition","getModalPositionRelativeToContainer","params","modalContainerStyle","oppositePosition","fixedPosition","getModalPositionRelativeToScreen","position","windowOffset","useRef","useState","useEffect","useIntersectionObserver","ref","callback","initOptions","refs","observer","r","useInView","initOptions","inView","setInView","useState","ref","useRef","useIntersectionObserver","entry","useCallback","useState","useInputHandlers","onBlur","onFocus","onChange","isFocus","setIsFocus","handleFocus","e","handleBlur","handleChange","useEffect","useState","useMediaQuery","query","matches","setMatches","media","listener","useRef","useState","useModal","containerRef","isOpen","setIsOpen","useCallback","useLayoutEffect","useRef","convertDOMRectToPosition","rect","useModalInContainer","offset","windowOffset","position","modalRef","containerRef","isOpen","containerTemporalRef","useRef","getPosition","useCallback","modal","container","modalStyle","getModalPositionRelativeToContainer","getModalPositionRelativeToScreen","key","callback","useLayoutEffect","useResizeObserver","useEventListener","React","useCallback","useEffect","useLayoutEffect","useMemo","useModalTransition","transitionDuration","isOpen","modalState","setModalState","React","isVisible","useMemo","useEffect","closeModal","useCallback","openModal","useLayoutEffect","useRef","useState","getMousePosition","domRect","e","left","top","containerPositionX","containerPositionY","containerX","containerY","useMousePosition","containerRef","ref","useRef","position","setPosition","useState","useEventListener","clientX","clientY","prev","newState","useCallback","useState","useToggleValues","values","defaultIndex","index","setIndex","toggle","prev","jsx","LineOrientation","LineStyle","Line","orientation","className","style","color","size","lineStyle","dashedSize","spacing","classNames","useClassNames","jsx","AccordionContext","createContext","useAccordionItem","id","context","useContext","toggleItem","openedItems","toggle","Accordion","children","className","noSeparators","multiple","style","defaultOpened","setOpenedItems","useState","acc","useCallback","prev","openedItemsIDs","useMemo","accordionClassName","useClassNames","child","key","Line","useMemo","FaCaretLeft","jsx","SlideCard","children","isOpen","className","style","useMemo","jsx","jsxs","FlipCard","cardZIndex","flipDirection","flipSpeed","isFlipped","children","getComponent","key","frontRotate","useMemo","backRotate","className","useClassNames","useCallback","useRef","jsx","HoverCard","children","threshold","translationZ","width","className","refCard","useRef","refLayer","mouseMoveCallback","useCallback","e","card","layer","clientX","clientY","currentTarget","clientWidth","clientHeight","top","left","horizontal","vertical","relativePercentageX","rotateY","rotateX","mouseLeaveCallback","useEventListener","cardClassName","useClassNames","createElement","useMemo","TypographyVariantsElements","TypographyVariantsClassNames","Typography","variant","nowrap","customClassname","style","children","as","weight","family","noPadding","align","color","htmlFor","recommendedWidth","props","className","useClassNames","TypographyVariantsClassNames","component","useMemo","TypographyVariantsElements","createElement","jsx","jsxs","getContent","content","isOpen","AccordionItem","title","subtitle","children","Icon","FaCaretLeft","startContent","endContent","classNames","className","style","id","useMemo","toggle","useAccordionItem","headerClassName","useClassNames","headerContentClassName","toggleIconClassName","bodyContentClassName","titleContent","subtitleContent","headerStart","headerMiddle","Typography","headerEnd","accordionItemClassName","SlideCard","useEffect","useRef","jsx","Ripple","color","duration","timingFunction","times","className","style","zIndex","ref","useRef","useEffect","computedPosition","e","pageX","pageY","currentTarget","rect","x","ripple","jsx","jsxs","Button","children","color","variant","radius","size","noWrap","forIcon","className","props","classNames","useClassNames","Ripple","useEffect","useState","jsx","jsxs","Cursor","x","y","elementX","elementY","ref","useMousePosition","isCursorHover","setIsCursorHover","useState","useEventListener","e","computedCursor","useEffect","translate3d","useMemo","IoCheckmarkOutline","RHFController","useFormContext","jsx","Controller","Component","inputProps","fieldDefaultValue","rules","control","setValue","name","defaultValue","onBlur","value","fieldState","jsx","jsxs","Checkbox","name","value","setValue","onBlur","onFocus","className","style","autoFocus","readOnly","disabled","autoComplete","Icon","IoCheckmarkOutline","label","color","size","id","useMemo","handlers","useInputHandlers","e","checkboxContainerClassName","useClassNames","checkboxClassName","Typography","CheckboxController","rules","props","Controller","useMemo","ImCross","FieldVariant","FieldOrientation","jsx","jsxs","getIcon","Icon","className","onClick","Field","id","label","leftIcon","rightIcon","ErrorIcon","ImCross","error","onClickLeftIcon","onClickRightIcon","fieldOrientation","children","isFocus","variant","ref","fieldClassName","useClassNames","handleClick","callback","e","input","Typography","jsx","DatePicker","name","value","setValue","onBlur","onFocus","type","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","id","useMemo","isFocus","handlers","useInputHandlers","e","Field","DatePickerController","rules","props","Controller","useMemo","jsx","Input","name","value","setValue","onBlur","onFocus","pattern","type","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","min","max","fieldProps","id","useMemo","handlers","isFocus","useInputHandlers","e","Field","InputController","rules","props","Controller","useMemo","FiEye","FiEyeOff","IoIosWarning","jsx","InputPassword","name","value","setValue","onBlur","onFocus","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","id","useMemo","type","toggle","useToggleValues","isFocus","handlers","useInputHandlers","e","icon","FiEye","FiEyeOff","IoIosWarning","Field","InputPasswordController","rules","props","Controller","Color","useCallback","useEffect","useMemo","useRef","useState","HexAlphaColorPicker","HexColorInput","FaEyeDropper","useEyeDropper","createContext","useCallback","useContext","useRef","useState","ImCross","useMemo","useRef","createPortal","Portal","children","id","root","useDomContainer","createPortal","useMemo","jsx","ModalBackdrop","Backdrop","opacity","backdrop","zIndex","backdropOnClick","modalState","backdropClassName","useClassNames","backgroundStyles","useMemo","jsx","jsxs","Modal","id","children","isOpen","onClose","className","style","rootStyle","animation","closeAnimationClassName","modalRefProp","closeOnClickOutside","transitionDuration","windowOffset","offset","position","containerRef","zIndex","backdropProps","uuid","useMemo","modalRef","useRef","modalState","isVisible","useModalTransition","useModalInContainer","useClickOutside","modalContentClassName","useClassNames","Portal","Backdrop","jsx","jsxs","ActionModalContext","createContext","useActionModalContext","context","useContext","ActionModal","children","isOpen","onClose","actionRequired","Icon","noCloseButton","lineOnTop","backCard","noPadding","className","style","modalProps","isActionInProgress","setIsActionInProgress","useState","ref","useRef","remainAction","useCallback","actionModalClassName","useClassNames","Modal","ImCross","Typography","ActionButton","onClick","manualIsLoading","buttonProps","isLoading","setIsLoading","handleAction","result","Button","useMemo","ImCross","jsx","jsxs","AsideModal","children","isOpen","onClose","position","size","className","modalProps","modalRootStyles","useMemo","Modal","ImCross","jsx","jsxs","ConfirmationModal","title","onAccept","onReject","acceptText","rejectText","children","isLoading","actionModalProps","ActionModal","Typography","useCallback","useMemo","Fragment","jsx","jsxs","Menu","children","isOpen","onClose","id","menuContentRef","contentClassName","contentStyle","className","modalProps","modalClassName","useClassNames","Modal","MenuOption","label","asCheckbox","Icon","disabled","selected","style","onClick","liProps","menuOptionClassName","handleClick","useCallback","e","menuOptionContent","useMemo","Checkbox","n","Typography","Ripple","Divider","Line","Label","props","Group","groupClassName","jsx","jsxs","InputColor","name","value","setValue","onBlur","onFocus","showValueText","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","open","isSupported","useEyeDropper","inputValue","setInputValue","useState","id","useMemo","containerRef","useRef","isOpen","setIsOpen","handlers","isFocus","useInputHandlers","e","setInputColor","borderColor","color","Color","openEyeDropper","sRGBHex","useEffect","useCallback","inputBoxClassName","useClassNames","Field","Modal","HexAlphaColorPicker","FaEyeDropper","HexColorInput","InputColorController","rules","props","Controller","useCallback","useEffect","useMemo","useState","FaMagnifyingGlass","FaRegTrashCan","IoIosWarning","PiFilePdfFill","PiFilePngFill","createElement","Grid","tag","children","className","style","flow","columnSize","rowSize","column","row","pc","pi","ps","jc","ji","js","ac","ai","as","gtc","gtr","gta","gt","gap","props","createElement","Fragment","jsx","jsxs","InputFile","name","value","setValue","onBlur","onFocus","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","accept","multiple","limitSize","errorTimeout","label","error","setError","useState","id","useMemo","handlers","useInputHandlers","e","files","saveFiles","useEffect","intervalId","finalFiles","filesToCheck","i","file","formatBytes","handleDrop","getIconType","useCallback","type","PiFilePngFill","PiFilePdfFill","IoIosWarning","deleteFile","prevValue","deleteAll","totalSize","prev","size","renderFileToCard","key","Icon","Grid","Typography","FaRegTrashCan","FaMagnifyingGlass","InputFileController","rules","props","Controller","useEffect","useMemo","useState","jsx","RegexDecimal","getCleanedValue","input","decimalSeparator","regex","cleaned","getFormattedValue","value","format","InputNumber","name","setValue","onBlur","onFocus","pattern","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","min","max","fieldProps","id","useMemo","formatFunction","locales","formatConfig","formattedValue","setFormattedValue","useState","handlers","isFocus","useInputHandlers","e","useEffect","formatted","Field","InputController","rules","props","Controller","useMemo","jsx","jsxs","Radio","name","value","setValue","onBlur","onFocus","className","style","autoFocus","readOnly","disabled","autoComplete","radioValue","label","color","size","id","useMemo","handlers","useInputHandlers","e","radioContainerClassName","useClassNames","radioClassName","Typography","RadioController","rules","props","Controller","createContext","useCallback","useContext","useMemo","useRef","useState","ImCross","PiCaretDown","useEffect","Fragment","jsx","jsxs","InfinityScroll","isLoadingProp","hasNextPage","loadMore","customLoadMoreElement","emptyMessage","children","ref","inView","useInView","isLoading","useDebounce","useEffect","childrenExists","useCallback","useMemo","jsx","Option","children","value","multiselect","isEqualComparator","maxOptions","selectedValue","setValue","setIsOpen","useSelectContext","compareValuesIsEqual","useCallback","a","b","toggleOption","isSelected","item","useMemo","handleKeyDown","e","optionLabel","Typography","Menu","selected","useCallback","useEffect","useRef","useState","jsx","jsxs","useDynamicHeight","height","defaultMinHeight","containerRef","offset","windowOffset","h","setH","useState","getMaxHeight","useCallback","containerBottom","heightBottom","heightTop","heightCalculated","maxHeight","minHeight","useEffect","useResizeObserver","useEventListener","Options","children","searchQueryValue","searchQueryPlaceholder","searchQueryClassName","searchQueryStyle","onSearchQuery","optionsGroupContainerRef","useRef","optionsGroupRef","internalSearchQuery","setInternalSearchQuery","searchInputRef","isMobile","useMediaQuery","e","focusedItem","handleSearchQuery","value","shouldUseAuto","setShouldUseAuto","calculateHeight","optionsContainerHeight","optionsHeight","selectOptionsHeader","useClassNames","jsx","jsxs","SelectContext","createContext","useSelectContext","context","useContext","OptionLabel","children","labelComponent","useMemo","Typography","Menu","DefaultOption","value","DefaultValue","multiselect","Select","options","isEqualComparator","searchQueryValue","searchQueryPlaceholder","onSearchQuery","loadMore","isLoading","hasNextPage","emptyMessage","OptionComponent","ValueComponent","maxOptions","name","setValue","onBlur","onFocus","className","style","showClearOption","height","searchQueryStyle","searchQueryClassName","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","modalRef","useRef","isMobile","useMediaQuery","id","containerRef","isOpen","setIsOpen","useState","openSelect","useCallback","open","clearOption","e","valueNonEmpty","renderedOptions","key","Field","ImCross","PiCaretDown","Options","InfinityScroll","MultiSelectController","rules","props","Controller","SingleSelectController","SelectController","Option","useMemo","jsx","jsxs","Slider","name","value","setValue","onBlur","onFocus","min","max","step","onlySlider","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","id","useMemo","onBlurInput","e","parsedValue","isFocus","handlers","useInputHandlers","inputSliderClassName","useClassNames","Field","SliderController","rules","props","Controller","useMemo","jsx","Textarea","name","value","setValue","onBlur","onFocus","rows","resize","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","id","useMemo","handlers","isFocus","useInputHandlers","e","textareaClassName","useClassNames","Field","TextareaController","rules","props","Controller","useMemo","useState","cloneElement","Fragment","jsx","jsxs","Tooltip","position","children","content","offset","disabled","containerRef","openModal","closeModal","isOpen","useModal","classNames","useClassNames","useEventListener","cloneElement","Modal","jsx","ClickToCopy","children","value","position","offset","tooltipText","tooltipCopiedText","copiedTextTimeout","justCopied","setJustCopied","useState","Tooltip","jsx","jsxs","DotSizeMap","WidthMap","Switch","name","value","setValue","onBlur","onFocus","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","label","leftLabel","rightLabel","width","size","dotHoverSize","padding","LeftIcon","RightIcon","InternalLeftIcon","InternalRightIcon","leftIconTooltip","rightIconTooltip","color","id","useMemo","handlers","useInputHandlers","e","switchContainerClassName","useClassNames","switchClassName","dotSize","_width","_padding","Typography","Tooltip","SwitchController","rules","props","Controller","jsx","Image","alt","loading","props","useMemo","useState","useMemo","MdArrowDownward","MdArrowUpward","jsx","jsxs","SmartTableColumn","header","sortBy","Icon","width","field","toggleSortField","sortField","orderField","hidden","sortByKey","columnClassName","useClassNames","columnOnClick","sortIcon","useMemo","MdArrowUpward","MdArrowDownward","Grid","Typography","Ripple","jsx","renderRowColumn","data","field","render","Component","rowKey","Typography","renderRow","columns","column","key","sortData","sortBy","order","a","b","fieldA","fieldB","useCallback","useState","useSort","sortBy","order","setSortField","toggleSortField","sortByField","jsx","SmartTableRow","data","columns","isSelected","selectable","rowKey","rowClassName","useClassNames","renderRow","jsx","jsxs","SmartTable","initialColumns","data","width","selectable","rowId","className","_tableClassName","selected","setSelected","useState","tableClassName","useClassNames","tableContainerClassName","sortBy","order","toggleSortField","useSort","columns","useMemo","finalColumns","rowKey","Checkbox","isSelected","prev","copy","rows","sortData","column","key","SmartTableColumn","row","SmartTableRow","createContext","useContext","useEffect","useState","useEffect","useRef","useState","jsx","jsxs","DefaultRect","TabsList","tabs","variant","radius","direction","color","children","openTab","size","className","style","containerRef","useRef","selectedTabRef","isSelectorActive","setIsSelectorActive","useState","selector","setSelector","DefaultRect","containerClassNames","useClassNames","useEffect","selectedRect","containerRect","width","height","left","top","jsxs","jsx","id","label","Tabs","jsx","TabsContext","createContext","useTab","id","context","useContext","openTab","changeOpenTab","useTabsContext","Tabs","children","defaultOpenTab","onChange","setOpenTab","useState","useEffect","Tab","className","style","onClick","ref","isOpen","tabClassNames","useClassNames","e","TabPanel","TabList","props","TabsList","jsx","TagRounded","Tag","children","rounded","selected","noWrap","ref","className","useClassNames"]}
1
+ {"version":3,"sources":["../src/components/accordion/accordion.component.tsx","../src/hooks/use-classnames.ts","../src/hooks/use-event-listener.ts","../src/hooks/use-click-outside.ts","../src/hooks/use-debounce.ts","../src/hooks/use-resize-observer.ts","../src/hooks/use-dom-container.ts","../src/helpers/format-bytes.ts","../src/helpers/get-modal-position.ts","../src/helpers/get-modal-position-relative-to-screen.ts","../src/hooks/use-in-view.ts","../src/hooks/use-intersection-observer.ts","../src/hooks/use-input-handlers.ts","../src/hooks/use-media-query.ts","../src/hooks/use-modal.ts","../src/hooks/use-modal-in-container.ts","../src/hooks/use-modal-transition.ts","../src/hooks/use-mouse-position.ts","../src/hooks/use-toggle-values.ts","../src/components/line/line.component.tsx","../src/components/accordion/accordion-item.tsx","../src/components/cards/slide-card/slide-card.component.tsx","../src/components/cards/flip-card/flip-card.component.tsx","../src/components/cards/hover-card/hover-card.component.tsx","../src/components/typography/typography.component.tsx","../src/components/typography/typography.constants.ts","../src/components/ripple/ripple.component.tsx","../src/components/button/button.component.tsx","../src/components/cursor/cursor.component.tsx","../src/components/form/checkbox/checkbox.component.tsx","../src/components/form/controller/controller.component.tsx","../src/components/form/date-picker/date-picker.component.tsx","../src/components/form/field/field.component.tsx","../src/components/form/field/field.types.ts","../src/components/form/input/input.component.tsx","../src/components/form/input-password/input-password.component.tsx","../src/components/form/input-color/input-color.component.tsx","../src/components/modals/action-modal/action-modal.component.tsx","../src/components/modals/modal/modal.component.tsx","../src/components/modals/portal/portal.component.tsx","../src/components/modals/modal/modal.backdrop.tsx","../src/components/modals/aside-modal/aside-modal.component.tsx","../src/components/modals/confirmation-modal/confirmation-modal.component.tsx","../src/components/modals/menu/menu.component.tsx","../src/components/form/input-file/input-file.component.tsx","../src/layouts/grid/grid.component.tsx","../src/components/form/input-number/input-number.component.tsx","../src/components/form/radio/radio.component.tsx","../src/components/form/select/select.component.tsx","../src/components/infinity-scroll/infinity-scroll.component.tsx","../src/components/form/select/option.tsx","../src/components/form/select/options.tsx","../src/components/form/slider/slider.component.tsx","../src/components/form/textarea/textarea.component.tsx","../src/components/form/switch/switch.component.tsx","../src/components/tooltips/click-to-copy/click-to-copy.component.tsx","../src/components/tooltips/tooltip/tooltip.component.tsx","../src/components/image/image.tsx","../src/components/smart-table/smart-table.component.tsx","../src/components/smart-table/smart-table.column.tsx","../src/components/smart-table/smart-table.helpers.tsx","../src/components/smart-table/smart-table.hooks.ts","../src/components/smart-table/smart-table.row.tsx","../src/components/tabs/tabs.tsx","../src/components/tabs/tabs-list.tsx","../src/components/tag/tag.component.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useMemo, useState } from 'react';\n\nimport { useClassNames } from '../../hooks';\nimport { Line } from '../line';\n\nimport './accordion.styles.css';\n\ntype AccordionContextState = {\n toggleItem: (id: string) => void;\n openedItems: Array<string>;\n};\n\nconst AccordionContext = createContext<AccordionContextState | null>(null);\n\nexport const useAccordionItem = (id: string): [boolean, () => void] => {\n const context = useContext(AccordionContext);\n\n if (!context) {\n throw new Error('You cant use this component out off an Accordion component');\n }\n\n const { toggleItem, openedItems } = context;\n\n const toggle = () => toggleItem(id);\n\n return [openedItems.includes(id), toggle];\n};\n\ntype AccordionProps = {\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n noSeparators?: boolean;\n multiple?: boolean;\n defaultOpened?: Array<string> | string;\n};\n\nexport const Accordion = ({\n children,\n className = '',\n noSeparators,\n multiple,\n style = {},\n defaultOpened = [],\n}: AccordionProps) => {\n const [openedItems, setOpenedItems] = useState<{ [index: string]: boolean }>(() => {\n return (Array.isArray(defaultOpened) ? defaultOpened : [defaultOpened]).reduce((acc, id) => {\n return typeof id === 'string' ? { ...acc, [id]: true } : acc;\n }, {});\n });\n\n const toggleItem = useCallback(\n (id: string) => {\n setOpenedItems(prev => ({ ...(multiple ? prev : {}), [id]: !prev[id] }));\n },\n [multiple],\n );\n\n const openedItemsIDs = useMemo(() => Object.keys(openedItems).filter(id => openedItems[id]), [openedItems]);\n\n const accordionClassName = useClassNames({\n accordion: true,\n [className]: Boolean(className),\n });\n\n return (\n <AccordionContext.Provider\n value={{\n toggleItem,\n openedItems: openedItemsIDs,\n }}\n >\n <section className={accordionClassName} style={style}>\n {(Array.isArray(children) ? children : [children]).flatMap((child, key) => {\n return key === 0 ? child : [noSeparators ? null : <Line orientation='horizontal' key={`${key}.5`} />, child];\n })}\n </section>\n </AccordionContext.Provider>\n );\n};\n","import { useMemo } from 'react';\n\nexport const useClassNames = (classes: Record<string, boolean>): string =>\n useMemo<string>(\n () =>\n Object.entries(classes)\n .reduce<Array<string>>(\n (compiledClassNames, [classname, value]) => (value ? [...compiledClassNames, classname] : compiledClassNames),\n [],\n )\n .join(' '),\n [classes],\n );\n","import { RefObject, useEffect, useLayoutEffect, useRef } from 'react';\n\nfunction useEventListener<EventName extends keyof MediaQueryListEventMap>(\n eventName: EventName,\n callback: (event: MediaQueryListEventMap[EventName]) => void,\n element: RefObject<MediaQueryList | null> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof WindowEventMap>(\n eventName: EventName,\n callback: (event: WindowEventMap[EventName]) => void,\n element?: undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof HTMLElementEventMap, ElementRef extends HTMLElement = HTMLDivElement>(\n eventName: EventName,\n callback: (event: HTMLElementEventMap[EventName]) => void,\n element: RefObject<ElementRef | null> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof DocumentEventMap>(\n eventName: EventName,\n callback: (event: DocumentEventMap[EventName]) => void,\n element: RefObject<Document | null> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<\n MediaQueryEventName extends keyof MediaQueryListEventMap,\n WindowEventName extends keyof WindowEventMap,\n ElementEventName extends keyof HTMLElementEventMap,\n DocumentEventName extends keyof DocumentEventMap,\n ElementRef extends HTMLElement | MediaQueryList | Document | Window | void = void,\n>(\n eventName: WindowEventName | DocumentEventName | ElementEventName | MediaQueryEventName,\n callback: (\n event:\n | MediaQueryListEventMap[MediaQueryEventName]\n | WindowEventMap[WindowEventName]\n | HTMLElementEventMap[ElementEventName]\n | DocumentEventMap[DocumentEventName]\n | Event,\n ) => void,\n element?: RefObject<ElementRef | null> | undefined,\n options?: boolean | AddEventListenerOptions,\n) {\n const callbackRef = useRef<EventListener>(callback);\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useLayoutEffect(() => {\n const targetElement = element?.current ?? window;\n\n if (!(targetElement && targetElement.addEventListener)) return;\n\n const listener: typeof callback = event => callbackRef.current(event);\n\n targetElement.addEventListener(eventName, listener, options);\n\n return () => {\n targetElement.removeEventListener(eventName, listener, options);\n };\n }, [eventName, element, options]);\n}\n\nexport { useEventListener };\n","import { RefObject } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\nconst checkIsOutside = (ref: RefObject<HTMLElement | null>, target: Node) => {\n return ref.current && !ref.current.contains(target);\n};\n\nexport const useClickOutside = <T extends HTMLElement>(\n ref: RefObject<T | null> | Array<RefObject<T | null>>,\n callback: () => void,\n) => {\n useEventListener('keydown', e => {\n if (e.key === 'Escape') {\n callback();\n }\n });\n\n useEventListener('mousedown', event => {\n const target = event.target as Node;\n\n if (!target?.isConnected) {\n return;\n }\n\n const isOutside = (Array.isArray(ref) ? ref : [ref]).every(r => checkIsOutside(r, target));\n\n if (isOutside) {\n callback();\n }\n });\n};\n","import { useEffect, useState } from 'react';\n\nexport const useDebounce = <T>(value: T, delay: number = 500): T => {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay);\n\n return () => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return debouncedValue;\n};\n","import { RefObject, useEffect } from 'react';\n\nexport const useResizeObserver = <T extends Element>(\n ref: RefObject<T | null> | Array<RefObject<T | null>>,\n callback: ResizeObserverCallback,\n) => {\n useEffect(() => {\n const refs = Array.isArray(ref) ? ref : [ref];\n\n const observer = new ResizeObserver(callback);\n\n refs.forEach(r => r.current && observer.observe(r.current));\n\n return () => {\n observer.disconnect();\n };\n }, [ref, callback]);\n};\n","import { useEffect, useState } from 'react';\n\nconst createContainer = (containerID: string) => {\n let domContainer = document.getElementById(containerID);\n\n if (domContainer === null) {\n domContainer = document.createElement('div');\n domContainer.setAttribute('id', containerID);\n document.body.appendChild(domContainer);\n }\n\n return domContainer;\n};\n\nexport const useDomContainer = (containerID: string) => {\n const [container, setContainer] = useState<HTMLElement | null>(() => createContainer(containerID));\n\n useEffect(() => {\n const domContainer = document.getElementById(containerID);\n\n if (container === null || domContainer === null) {\n const domContainer = createContainer(containerID);\n\n setContainer(domContainer);\n }\n\n return () => {\n if (container && container.parentNode && process.env.NODE_ENV === 'production') {\n document.body.removeChild(container);\n }\n };\n }, [container, containerID]);\n\n return container;\n};\n","export const formatBytes = (bytes: number, decimals = 2) => {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1000;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n};\n","export enum PositionContainer {\n CENTER = 'center',\n TOP = 'top',\n TOP_LEFT = 'top left',\n TOP_RIGHT = 'top right',\n TOP_CENTER = 'top center',\n LEFT = 'left',\n LEFT_TOP = 'left top',\n LEFT_BOTTOM = 'left bottom',\n LEFT_CENTER = 'left center',\n RIGHT = 'right',\n RIGHT_TOP = 'right top',\n RIGHT_BOTTOM = 'right bottom',\n RIGHT_CENTER = 'right center',\n BOTTOM = 'bottom',\n BOTTOM_LEFT = 'bottom left',\n BOTTOM_RIGHT = 'bottom right',\n BOTTOM_CENTER = 'bottom center',\n}\n\nexport type PositionObject = {\n x: number;\n y: number;\n top: number;\n left: number;\n w: number;\n h: number;\n};\n\nexport type ModalPosition = {\n left: number;\n top: number;\n};\n\nexport type GetModalPositionParams = {\n c: PositionObject;\n m: PositionObject;\n offset: number;\n position: PositionContainer;\n};\n\n/*\n * @description Calculates the position of the modal relative to the container\n *\n * @param c - The container's position object\n * @param m - The modal's position object\n * @param offset - The offset between the container and the modal\n * @param position - The position of the modal\n *\n * -----------------------------------------------------------------------------\n * @returns The position of the modal relative to the container\n */\nexport const getModalPosition = ({ c, m, offset, position }: GetModalPositionParams): ModalPosition => {\n // Default bottom\n let top = c.y + c.h + offset;\n let left = c.x - (m.w - c.w) * (50 / 100);\n\n switch (position) {\n case PositionContainer.TOP:\n case PositionContainer.TOP_CENTER:\n top = c.y - m.h - offset;\n left = c.x - (m.w - c.w) / 2;\n\n break;\n case PositionContainer.TOP_LEFT:\n top = c.y - m.h - offset;\n left = c.x - m.w + c.w;\n\n break;\n\n case PositionContainer.TOP_RIGHT:\n top = c.y - m.h - offset;\n left = c.x;\n\n break;\n\n case PositionContainer.BOTTOM:\n case PositionContainer.BOTTOM_CENTER:\n top = c.y + c.h + offset;\n left = c.x - (m.w - c.w) / 2;\n\n break;\n\n case PositionContainer.BOTTOM_LEFT:\n top = c.y + c.h + offset;\n left = c.x - m.w + c.w;\n\n break;\n\n case PositionContainer.BOTTOM_RIGHT:\n top = c.y + c.h + offset;\n left = c.x;\n\n break;\n\n case PositionContainer.LEFT:\n case PositionContainer.LEFT_CENTER:\n top = c.y - (m.h - c.h) / 2;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.LEFT_TOP:\n top = c.y - m.h + c.h;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.LEFT_BOTTOM:\n top = c.y;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.RIGHT:\n case PositionContainer.RIGHT_CENTER:\n top = c.y - (m.h - c.h) / 2;\n left = c.x + c.w + offset;\n\n break;\n\n case PositionContainer.RIGHT_TOP:\n top = c.y - m.h + c.h;\n left = c.x + c.w + offset;\n\n break;\n\n case PositionContainer.RIGHT_BOTTOM:\n top = c.y;\n left = c.x + c.w + offset;\n\n break;\n }\n\n return {\n left: Math.round(left),\n top: Math.round(top),\n };\n};\n\nexport const getOppositePosition = (\n { top, left }: ModalPosition,\n position: PositionContainer,\n windowOffset: number,\n m: PositionObject,\n) => {\n const positions = position.split(' ');\n const newPosition = [];\n const rightOffset = left + m.w + windowOffset - window.innerWidth;\n const bottomOffset = top + m.h + windowOffset - window.innerHeight;\n\n for (const p of positions) {\n if (p === PositionContainer.TOP && top < windowOffset) {\n newPosition.push(PositionContainer.BOTTOM);\n } else if (p === PositionContainer.LEFT && left < windowOffset) {\n newPosition.push(PositionContainer.RIGHT);\n } else if (p === PositionContainer.BOTTOM && bottomOffset > 0) {\n newPosition.push(PositionContainer.TOP);\n } else if (p === PositionContainer.RIGHT && rightOffset > 0) {\n newPosition.push(PositionContainer.LEFT);\n } else {\n newPosition.push(p);\n }\n }\n\n return newPosition.join(' ') as PositionContainer;\n};\n\nexport const fixModalPosition = ({ top, left }: ModalPosition, m: PositionObject, windowOffset: number) => {\n const rightOffset = left + m.w + windowOffset - window.innerWidth;\n const bottomOffset = top + m.h + windowOffset - window.innerHeight;\n\n left = rightOffset > 0 ? left - rightOffset : left;\n top = bottomOffset > 0 ? top - bottomOffset : top;\n\n left = left < windowOffset ? windowOffset : left;\n top = top < windowOffset ? windowOffset : top;\n\n return { top, left };\n};\n\ntype getModalPositionRelativeToContainerParams = GetModalPositionParams & {\n windowOffset: number;\n};\n\nexport const getModalPositionRelativeToContainer = ({\n c,\n m,\n offset,\n windowOffset,\n position,\n}: getModalPositionRelativeToContainerParams): Record<string, string> => {\n const params = { c, m, offset, position };\n let modalContainerStyle = getModalPosition(params);\n\n const oppositePosition = getOppositePosition(modalContainerStyle, position, windowOffset, m);\n\n if (oppositePosition !== position) {\n modalContainerStyle = getModalPosition({\n ...params,\n position: oppositePosition,\n });\n }\n\n const fixedPosition = fixModalPosition(modalContainerStyle, m, windowOffset);\n\n return {\n left: `${fixedPosition.left}px`,\n top: `${fixedPosition.top}px`,\n };\n};\n","import { PositionContainer } from './get-modal-position';\n\nexport type GetModalPositionRelativeToScreenParams = {\n position: PositionContainer;\n windowOffset: number;\n};\n\nexport const getModalPositionRelativeToScreen = ({\n position,\n windowOffset,\n}: GetModalPositionRelativeToScreenParams): Record<string, string> => {\n switch (position) {\n case PositionContainer.CENTER:\n return {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n\n case PositionContainer.TOP:\n case PositionContainer.TOP_CENTER:\n return {\n top: `${windowOffset}px`,\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n case PositionContainer.TOP_LEFT:\n case PositionContainer.LEFT_TOP:\n return {\n top: `${windowOffset}px`,\n left: `${windowOffset}px`,\n };\n\n case PositionContainer.TOP_RIGHT:\n case PositionContainer.RIGHT_TOP:\n return {\n top: `${windowOffset}px`,\n right: `${windowOffset}px`,\n };\n\n case PositionContainer.BOTTOM:\n case PositionContainer.BOTTOM_CENTER:\n return {\n bottom: `${windowOffset}px`,\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n case PositionContainer.LEFT_BOTTOM:\n case PositionContainer.BOTTOM_LEFT:\n return {\n bottom: `${windowOffset}px`,\n left: `${windowOffset}px`,\n };\n\n case PositionContainer.RIGHT_BOTTOM:\n case PositionContainer.BOTTOM_RIGHT:\n return {\n bottom: `${windowOffset}px`,\n right: `${windowOffset}px`,\n };\n\n case PositionContainer.LEFT:\n case PositionContainer.LEFT_CENTER:\n return {\n top: '50%',\n left: `${windowOffset}px`,\n transform: 'translateY(-50%)',\n };\n\n case PositionContainer.RIGHT:\n case PositionContainer.RIGHT_CENTER:\n return {\n top: '50%',\n right: `${windowOffset}px`,\n transform: 'translateY(-50%)',\n };\n }\n\n return {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n};\n","import { useRef, useState } from 'react';\n\nimport { useIntersectionObserver } from './use-intersection-observer';\n\nexport const useInView = (initOptions: IntersectionObserverInit = {}) => {\n const [inView, setInView] = useState(false);\n const ref = useRef<HTMLElement>(null);\n\n useIntersectionObserver(\n ref,\n ([entry]) => {\n setInView(entry.isIntersecting);\n },\n initOptions,\n );\n\n return { ref, inView };\n};\n","import { RefObject, useEffect } from 'react';\n\nexport const useIntersectionObserver = <T extends Element>(\n ref: RefObject<T | null> | Array<RefObject<T | null>>,\n callback: IntersectionObserverCallback,\n initOptions: IntersectionObserverInit = {},\n) => {\n useEffect(() => {\n const refs = Array.isArray(ref) ? ref : [ref];\n\n const observer = new IntersectionObserver(callback, initOptions);\n\n refs.forEach(r => r.current && observer.observe(r.current));\n\n return () => {\n observer.disconnect();\n };\n }, [callback, initOptions, ref]);\n};\n","import React, { useCallback, useState } from 'react';\n\ntype InputTypes = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n\ntype UseInputHandlersProps<T extends InputTypes> = {\n onBlur?: (e: React.FocusEvent<T>) => void;\n onFocus?: (e: React.FocusEvent<T>) => void;\n onChange?: (e: React.ChangeEvent<T>) => void;\n};\n\nexport const useInputHandlers = <T extends InputTypes>({\n onBlur,\n onFocus,\n onChange,\n}: UseInputHandlersProps<T> = {}) => {\n const [isFocus, setIsFocus] = useState(false);\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<T>) => {\n setIsFocus(true);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n onFocus && onFocus(e);\n },\n [onFocus],\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<T>) => {\n setIsFocus(false);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n onBlur && onBlur(e);\n },\n [onBlur],\n );\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<T>) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n onChange && onChange(e);\n },\n [onChange],\n );\n\n return {\n isFocus,\n handlers: {\n onFocus: handleFocus,\n onBlur: handleBlur,\n onChange: handleChange,\n },\n };\n};\n","import { useEffect, useState } from 'react';\n\nexport const useMediaQuery = (query: string): boolean => {\n const [matches, setMatches] = useState(false);\n\n useEffect(() => {\n const media = window.matchMedia(query);\n\n if (media.matches !== matches) {\n setMatches(media.matches);\n }\n\n const listener = () => {\n setMatches(media.matches);\n };\n\n media.addEventListener('change', listener);\n\n return () => {\n media.removeEventListener('change', listener);\n };\n }, [matches, query]);\n\n return matches;\n};\n","import { useRef, useState } from 'react';\n\nexport const useModal = <T extends HTMLElement>() => {\n const containerRef = useRef<T>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n const openModal = () => {\n setIsOpen(true);\n };\n\n const closeModal = () => {\n setIsOpen(false);\n };\n\n return {\n containerRef,\n isOpen,\n openModal,\n closeModal,\n };\n};\n","import { RefObject, useCallback, useLayoutEffect, useRef } from 'react';\n\nimport {\n getModalPositionRelativeToContainer,\n getModalPositionRelativeToScreen,\n PositionContainer,\n PositionObject,\n} from '../helpers';\n\nimport { useEventListener } from './use-event-listener';\nimport { useResizeObserver } from './use-resize-observer';\n\nconst convertDOMRectToPosition = (rect: DOMRectReadOnly): PositionObject => ({\n x: rect.x,\n y: rect.y,\n w: rect.width,\n h: rect.height,\n top: rect.top,\n left: rect.left,\n});\n\nexport type UseModalInContainerParams<\n Container extends HTMLElement = HTMLElement,\n Modal extends HTMLElement = Container,\n> = {\n windowOffset?: number;\n offset?: number;\n position?: `${PositionContainer}`;\n modalRef: RefObject<Modal | null>;\n containerRef?: RefObject<Container | null>;\n isOpen: boolean;\n};\n\nexport const useModalInContainer = <\n Container extends HTMLElement = HTMLElement,\n Modal extends HTMLElement = Container,\n>({\n offset = 0,\n windowOffset = 0,\n position = PositionContainer.BOTTOM,\n modalRef,\n containerRef,\n isOpen,\n}: UseModalInContainerParams<Container, Modal>) => {\n const containerTemporalRef = useRef<Container>(null);\n\n const getPosition = useCallback(\n (modalRef: RefObject<Modal | null>, containerRef: RefObject<Container | null>) => {\n const modal = modalRef.current?.getClientRects()[0];\n const container = containerRef.current?.getClientRects()[0];\n\n if (!modal) {\n return;\n }\n\n const modalStyle: Record<string, string> = !container\n ? getModalPositionRelativeToScreen({ position: position as PositionContainer, windowOffset })\n : getModalPositionRelativeToContainer({\n c: convertDOMRectToPosition(container),\n m: convertDOMRectToPosition(modal),\n offset,\n windowOffset,\n position: position as PositionContainer,\n });\n\n Object.keys(modalStyle).forEach(key => {\n modalRef.current?.style.setProperty(key, modalStyle[key]);\n });\n },\n [position, windowOffset, offset],\n );\n\n const callback = useCallback(() => {\n if (isOpen) {\n getPosition(modalRef, containerRef ?? containerTemporalRef);\n }\n }, [getPosition, isOpen, containerRef, modalRef]);\n\n useLayoutEffect(callback, [callback]);\n\n useResizeObserver<Container>(containerRef ?? containerTemporalRef, callback);\n useResizeObserver<Modal>(modalRef, callback);\n useEventListener('resize', callback);\n useEventListener('scroll', callback, modalRef);\n};\n","import React, { useCallback, useEffect, useLayoutEffect, useMemo } from 'react';\n\nexport enum ModalState {\n OPENING = 'OPENING',\n OPEN = 'OPEN',\n CLOSING = 'CLOSING',\n CLOSED = 'CLOSED',\n}\n\nexport type UseModalTransitionParams = {\n transitionDuration?: number;\n isOpen: boolean;\n};\n\nexport const useModalTransition = ({ transitionDuration = 0, isOpen }: UseModalTransitionParams) => {\n const [modalState, setModalState] = React.useState<ModalState>(ModalState.CLOSED);\n\n const isVisible = useMemo(() => {\n return modalState !== ModalState.CLOSED;\n }, [modalState]);\n\n useEffect(() => {\n document.documentElement.style.overflow = isVisible ? 'hidden' : 'auto';\n }, [isVisible]);\n\n const closeModal = useCallback(() => {\n if ([ModalState.OPENING, ModalState.OPEN].includes(modalState)) {\n if (transitionDuration > 0) {\n setModalState(ModalState.CLOSING);\n setTimeout(() => {\n setModalState(ModalState.CLOSED);\n }, transitionDuration);\n } else {\n setModalState(ModalState.CLOSED);\n }\n }\n }, [modalState, transitionDuration]);\n\n const openModal = useCallback(() => {\n if ([ModalState.CLOSING, ModalState.CLOSED].includes(modalState)) {\n if (transitionDuration > 0) {\n setModalState(ModalState.OPENING);\n setTimeout(() => {\n setModalState(ModalState.OPEN);\n }, transitionDuration);\n } else {\n setModalState(ModalState.OPEN);\n }\n }\n }, [modalState, transitionDuration]);\n\n useLayoutEffect(() => {\n if (modalState === ModalState.CLOSED && isOpen) {\n openModal();\n } else if (modalState === ModalState.OPEN && !isOpen) {\n closeModal();\n }\n }, [isOpen, openModal, closeModal, modalState]);\n\n return {\n isVisible,\n modalState,\n };\n};\n","import React, { useRef, useState } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\ntype MousePosition = {\n x: null | number;\n y: null | number;\n elementX: number | null;\n elementY: number | null;\n elementPositionX: number | null;\n elementPositionY: number | null;\n};\n\nconst getMousePosition = (domRect: DOMRect, e: MouseEvent) => {\n const { left, top } = domRect;\n const containerPositionX = left + window.scrollX;\n const containerPositionY = top + window.scrollY;\n const containerX = e.pageX - containerPositionX;\n const containerY = e.pageY - containerPositionY;\n\n return {\n x: e.pageX,\n y: e.pageY,\n elementX: containerX,\n elementY: containerY,\n elementPositionX: containerPositionX,\n elementPositionY: containerPositionY,\n };\n};\n\nexport const useMousePosition = (containerRef?: React.RefObject<HTMLElement | SVGElement | null>) => {\n const ref = useRef<HTMLElement>(null);\n const [position, setPosition] = useState<MousePosition>({\n x: null,\n y: null,\n elementX: null,\n elementY: null,\n elementPositionX: null,\n elementPositionY: null,\n });\n\n const mouseMove = (e: MouseEvent) => {\n const { clientX, clientY } = e;\n setPosition(prev => ({ ...prev, x: clientX, y: clientY }));\n\n if (containerRef?.current instanceof Element) {\n const newState = getMousePosition(containerRef.current.getBoundingClientRect(), e);\n setPosition(prev => ({\n ...prev,\n ...newState,\n }));\n } else if (ref.current instanceof Element) {\n const newState = getMousePosition(ref.current.getBoundingClientRect(), e);\n setPosition(prev => ({\n ...prev,\n ...newState,\n }));\n }\n };\n\n useEventListener('mousemove', mouseMove);\n\n return { ...position, ref };\n};\n","import { useCallback, useState } from 'react';\n\nexport const useToggleValues = <T>(values: Array<T>, defaultIndex: number = 0): [T, (index?: number) => void] => {\n const [index, setIndex] = useState(defaultIndex);\n\n const toggle = useCallback(\n (index?: number) => {\n setIndex(index !== undefined ? index : prev => (prev + 1) % values.length);\n },\n [values.length],\n );\n\n return [values[index], toggle];\n};\n","import { useClassNames } from '../../hooks';\n\nimport './line.styles.css';\n\nexport enum LineOrientation {\n VERTICAL = 'vertical',\n HORIZONTAL = 'horizontal',\n}\n\nexport enum LineStyle {\n SOLID = 'solid',\n DOTTED = 'dotted',\n DASHED = 'dashed',\n}\n\ntype LineCommonProps = {\n orientation?: `${LineOrientation}`;\n className?: string;\n style?: React.CSSProperties;\n color?: string;\n};\n\ntype LineSolidProps = LineCommonProps & {\n lineStyle?: `${LineStyle.SOLID}`;\n spacing?: never;\n dashedSize?: never;\n size?: number;\n};\n\ntype LineDottedProps = LineCommonProps & {\n lineStyle: `${LineStyle.DOTTED}`;\n spacing?: number;\n size?: number;\n dashedSize?: never;\n};\n\ntype LineDashedProps = LineCommonProps & {\n lineStyle: `${LineStyle.DASHED}`;\n spacing?: number;\n dashedSize?: number;\n size?: number;\n};\n\ntype LineProps = LineSolidProps | LineDottedProps | LineDashedProps;\n\nexport const Line = ({\n orientation = LineOrientation.HORIZONTAL,\n className = '',\n style = {},\n color = 'currentColor',\n size = 1,\n lineStyle = LineStyle.SOLID,\n dashedSize = 1,\n spacing = 1,\n}: LineProps) => {\n const classNames = useClassNames({\n 'custom-line': true,\n [orientation]: true,\n [className]: !!className,\n [lineStyle]: true,\n });\n\n return (\n <span\n className={classNames}\n style={\n {\n ...style,\n '--color': color,\n '--size': `${size}px`,\n '--spacing': `${spacing}px`,\n '--dashSize': `${dashedSize}px`,\n } as React.CSSProperties\n }\n />\n );\n};\n","import React, { useMemo } from 'react';\nimport { IconType } from 'react-icons';\nimport { FaCaretLeft } from 'react-icons/fa';\n\nimport { useClassNames } from '../../hooks';\nimport { SlideCard } from '../cards';\nimport { Typography } from '../typography';\n\nimport { useAccordionItem } from './accordion.component';\n\ntype NodeFunction = (isOpen: boolean) => React.ReactNode;\n\ntype ContentType = React.ReactNode | NodeFunction;\n\ntype AccordionItemCommonProps = {\n icon?: IconType;\n children: React.ReactNode;\n startContent?: ContentType;\n endContent?: ContentType;\n className?: string;\n style?: React.CSSProperties;\n classNames?: {\n header?: string;\n headerContent?: string;\n title?: string;\n subtitle?: string;\n toggleIcon?: string;\n body?: string;\n };\n};\n\ntype AccordionItemTitleProps = AccordionItemCommonProps & {\n title?: ContentType;\n subtitle?: ContentType;\n content?: never;\n};\n\ntype AccordionItemContentProps = AccordionItemCommonProps & {\n title?: never;\n subtitle?: never;\n content?: ContentType;\n};\n\ntype AccordionItemProps = AccordionItemTitleProps | AccordionItemContentProps;\n\nconst getContent = (content: ContentType | undefined, isOpen: boolean): React.ReactNode | undefined => {\n if (typeof content === 'function') {\n return content(isOpen);\n }\n\n return content;\n};\n\nexport const AccordionItem: React.FC<AccordionItemProps> = ({\n title,\n subtitle,\n children,\n icon: Icon = FaCaretLeft,\n startContent,\n content,\n endContent,\n classNames = {},\n className = '',\n style = {},\n}: AccordionItemProps) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const [isOpen, toggle] = useAccordionItem(id);\n const headerClassName = useClassNames({\n 'accordion-header': true,\n 'has-start-content': !!startContent,\n [classNames?.header ?? '']: !!classNames?.header,\n 'is-open': isOpen,\n });\n\n const headerContentClassName = useClassNames({\n 'accordion-header-content': true,\n [classNames?.headerContent ?? '']: !!classNames?.headerContent,\n });\n\n const toggleIconClassName = useClassNames({\n 'accordion-toggle-icon': true,\n isOpen: isOpen,\n [classNames?.toggleIcon ?? '']: !!classNames?.toggleIcon,\n });\n\n const bodyContentClassName = useClassNames({\n 'accordion-body': true,\n [classNames?.body ?? '']: !!classNames?.body,\n });\n\n const titleContent = getContent(title, isOpen);\n const subtitleContent = getContent(subtitle, isOpen);\n const headerStart = getContent(startContent, isOpen);\n const headerMiddle = getContent(content, isOpen) ?? (\n <section className={headerContentClassName}>\n <Typography className={classNames?.title} variant='body' noPadding weight='bold'>\n {titleContent}\n </Typography>\n <Typography className={classNames?.subtitle} variant='label' noPadding weight='light'>\n {subtitleContent}\n </Typography>\n </section>\n );\n const headerEnd = getContent(endContent, isOpen) ?? <Icon className={toggleIconClassName} />;\n\n const accordionItemClassName = useClassNames({\n 'accordion-item': true,\n [className]: Boolean(className),\n });\n\n return (\n <section className={accordionItemClassName} style={style}>\n <section className={headerClassName} onClick={toggle}>\n {headerStart}\n {headerMiddle}\n {headerEnd}\n </section>\n <SlideCard isOpen={isOpen}>\n <section className={bodyContentClassName}>{children}</section>\n </SlideCard>\n </section>\n );\n};\n","import React from 'react';\n\ntype SlideCardProps = {\n children: React.ReactNode;\n isOpen: boolean;\n className?: string;\n style?: React.CSSProperties;\n};\n\nexport const SlideCard = ({ children, isOpen, className = '', style = {} }: SlideCardProps) => {\n return (\n <section\n className={className}\n style={\n {\n overflow: 'hidden',\n height: isOpen ? 'auto' : 0,\n transition: 'height 300ms ease',\n interpolateSize: 'allow-keywords',\n ...style,\n } as React.CSSProperties\n }\n >\n {children}\n </section>\n );\n};\n","import { CSSProperties, useMemo } from 'react';\n\nimport { useClassNames } from '../../../hooks';\n\nimport './flip-card.styles.css';\n\ntype FlipCardProps = {\n cardZIndex?: CSSProperties['zIndex'];\n isFlipped?: boolean;\n flipSpeed?: number;\n flipDirection?: 'horizontal' | 'vertical';\n children: [React.ReactNode, React.ReactNode];\n};\n\nexport const FlipCard = ({\n cardZIndex = 'auto',\n flipDirection = 'vertical',\n flipSpeed = 500,\n isFlipped = false,\n children,\n}: FlipCardProps) => {\n const getComponent = (key: 0 | 1): React.ReactNode => {\n if (children.length !== 2) {\n throw new Error('Component FlipCard requires 2 children');\n }\n\n return children[key] as React.ReactNode;\n };\n\n const frontRotate = useMemo(() => {\n const deg = isFlipped ? 180 : 0;\n\n return `rotate${flipDirection === 'horizontal' ? 'Y' : 'X'}(${deg}deg)`;\n }, [flipDirection, isFlipped]);\n\n const backRotate = useMemo(() => {\n const deg = isFlipped ? 0 : -180;\n\n return `rotate${flipDirection === 'horizontal' ? 'Y' : 'X'}(${deg}deg)`;\n }, [flipDirection, isFlipped]);\n\n const className = useClassNames({\n 'flip-card': true,\n 'is-flipped': isFlipped,\n });\n\n return (\n <section\n className={className}\n style={\n {\n '--cardZIndex': cardZIndex,\n '--flipSpeed': `${flipSpeed}ms`,\n '--frontRotate': frontRotate,\n '--backRotate': backRotate,\n } as React.CSSProperties\n }\n >\n <section className='flipper'>\n <section className='front'>{getComponent(0)}</section>\n\n <section className='back'>{getComponent(1)}</section>\n </section>\n </section>\n );\n};\n","import { MouseEvent, MouseEventHandler, useCallback, useRef } from 'react';\n\nimport { useClassNames, useEventListener } from '../../../hooks';\n\nimport './hover-card.styles.css';\n\ntype HoverCardProps = {\n children: React.ReactNode;\n threshold?: number;\n translationZ?: number;\n width?: 'fit-content' | '100%';\n className?: string;\n};\n\nexport const HoverCard = ({\n children,\n threshold = 5,\n translationZ = 25,\n width = 'fit-content',\n className = '',\n}: HoverCardProps) => {\n const refCard = useRef<HTMLElement>(null);\n const refLayer = useRef<HTMLElement>(null);\n\n const mouseMoveCallback = useCallback(\n (e: MouseEvent) => {\n const card = refCard.current;\n const layer = refLayer.current;\n\n if (!card || !layer) return;\n\n const { clientX, clientY, currentTarget } = e;\n const { clientWidth, clientHeight } = currentTarget;\n const { top, left } = card.getBoundingClientRect();\n\n const horizontal = (clientX - left) / clientWidth;\n const vertical = (clientY - top) / clientHeight;\n\n const relativePercentageX = horizontal * 2 - 1;\n const relativePercentageY = vertical * 2 - 1;\n\n const rotateY = (relativePercentageY * threshold).toFixed(2);\n const rotateX = (relativePercentageX * threshold).toFixed(2);\n\n layer.style.transform = `perspective(${clientWidth}px) rotateX(${-rotateY}deg) rotateY(${rotateX}deg)`;\n card.style.transform = `perspective(${clientWidth}px) translateZ(${translationZ}px)`;\n },\n [threshold, translationZ],\n );\n\n const mouseLeaveCallback = useCallback<MouseEventHandler>(e => {\n const card = refCard.current;\n const layer = refLayer.current;\n\n if (!card || !layer) return;\n\n layer.style.transform = `perspective(${e.currentTarget.clientWidth}px) rotateX(0) rotateY(0)`;\n card.style.transform = `perspective(${e.currentTarget.clientWidth}px) translateZ(0)`;\n }, []);\n\n useEventListener('mousemove', mouseMoveCallback as unknown as EventListener, refCard);\n useEventListener('mouseleave', mouseLeaveCallback as unknown as EventListener, refCard);\n\n const cardClassName = useClassNames({\n 'hover-card': true,\n [className]: Boolean(className),\n });\n\n return (\n <span ref={refCard} style={{ width }} className={cardClassName}>\n <span className='card-hover-layer' ref={refLayer}>\n {children}\n </span>\n </span>\n );\n};\n","import React, { createElement, useMemo } from 'react';\n\nimport { useClassNames } from '../../hooks';\n\nimport {\n TypographyColors,\n TypographyVariant,\n TypographyVariantsClassNames,\n TypographyVariantsElements,\n TypographyWeight,\n} from './typography.constants';\nimport './typography.styles.css';\n\nexport type TypographyProps = React.HTMLAttributes<HTMLElement | HTMLLabelElement> & {\n variant?: `${TypographyVariant}`;\n nowrap?: boolean | number;\n as?: React.HTMLElementType;\n weight?: `${TypographyWeight}`;\n children: React.ReactNode;\n noPadding?: boolean;\n htmlFor?: string;\n align?: React.CSSProperties['textAlign'];\n family?: 'primary' | 'code';\n recommendedWidth?: boolean;\n color?: `${TypographyColors}`;\n ref?: React.RefObject<HTMLElement>;\n style?: React.CSSProperties;\n};\n\nexport const Typography = ({\n variant = TypographyVariant.BODY,\n nowrap = false,\n className: customClassname = '',\n style = {},\n children,\n as,\n weight,\n family = 'primary',\n noPadding = false,\n align,\n color,\n htmlFor,\n recommendedWidth = false,\n ...props\n}: TypographyProps) => {\n const className = useClassNames({\n typography: true,\n [TypographyVariantsClassNames[variant]]: TypographyVariantsClassNames[variant] !== undefined,\n [customClassname]: !!customClassname,\n [weight ?? '']: !!weight,\n [color ?? '']: Boolean(color),\n 'no-padding': noPadding,\n 'code-family': family === 'code',\n 'recommended-width': recommendedWidth,\n 'nowrap-max-lines': typeof nowrap === 'number',\n 'nowrap-max-lines-2': nowrap === 2,\n 'nowrap-max-lines-3': nowrap === 3,\n 'nowrap-max-lines-4': nowrap === 4,\n 'nowrap-max-lines-5': nowrap === 5,\n nowrap: nowrap === true,\n });\n\n const component = useMemo<React.HTMLElementType>(\n () => TypographyVariantsElements[variant] ?? TypographyVariantsElements[TypographyVariant.BODY],\n [variant],\n );\n\n return createElement(\n as ?? component,\n {\n ...props,\n className,\n htmlFor,\n style: {\n textAlign: align,\n ...style,\n },\n },\n children,\n );\n};\n","import React from 'react';\n\nexport enum TypographyColors {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n TERTIARY = 'tertiary',\n ACTIVE = 'active',\n WARNING = 'warning',\n ALERT = 'alert',\n INFO = 'info',\n}\n\nexport enum TypographyVariant {\n HERO = 'hero',\n HEADER1 = 'header1',\n HEADER2 = 'header2',\n HEADER3 = 'header3',\n HEADER4 = 'header4',\n BODY = 'body',\n LABEL = 'label',\n LABEL_FORM = 'label-form',\n SMALL = 'small',\n}\n\nexport const TypographyVariantsElements: Record<TypographyVariant, React.HTMLElementType> = {\n [TypographyVariant.HERO]: 'h1',\n [TypographyVariant.HEADER1]: 'h1',\n [TypographyVariant.HEADER2]: 'h2',\n [TypographyVariant.HEADER3]: 'h3',\n [TypographyVariant.HEADER4]: 'h4',\n [TypographyVariant.BODY]: 'p',\n [TypographyVariant.LABEL]: 'span',\n [TypographyVariant.LABEL_FORM]: 'label',\n [TypographyVariant.SMALL]: 'small',\n};\n\nexport const TypographyVariantsClassNames: Record<TypographyVariant, string> = {\n [TypographyVariant.HERO]: 'hero',\n [TypographyVariant.HEADER1]: 'header1',\n [TypographyVariant.HEADER2]: 'header2',\n [TypographyVariant.HEADER3]: 'header3',\n [TypographyVariant.HEADER4]: 'header4',\n [TypographyVariant.BODY]: 'body',\n [TypographyVariant.LABEL]: 'label',\n [TypographyVariant.LABEL_FORM]: 'label',\n [TypographyVariant.SMALL]: 'small',\n};\n\nexport enum TypographyWeight {\n LIGHT = 'light',\n REGULAR = 'regular',\n BOLD = 'bold',\n}\n","import React, { useEffect, useRef } from 'react';\n\nimport './ripple.styles.css';\n\ninterface RippleProps {\n color?: string;\n duration?: number;\n timingFunction?: React.CSSProperties['animationTimingFunction'];\n times?: number;\n className?: string;\n style?: React.CSSProperties;\n zIndex?: React.CSSProperties['zIndex'];\n}\n\nexport const Ripple = ({\n color,\n duration = 1000,\n timingFunction = 'ease-out',\n times = 1,\n className = '',\n style = {},\n zIndex = 1,\n}: RippleProps) => {\n const ref = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!ref.current?.parentElement) {\n return;\n }\n\n const computedPosition = getComputedStyle(ref.current.parentElement).position;\n\n if (!['absolute', 'fixed', 'sticky', 'relative'].includes(computedPosition)) {\n ref.current.parentElement.style.position = 'relative';\n }\n }, []);\n\n const handleClick = (e: React.MouseEvent<HTMLSpanElement>) => {\n const { pageX, pageY, currentTarget } = e;\n\n const rect = currentTarget.getBoundingClientRect();\n\n const x = ((pageX - rect.left) * 100) / rect.width;\n const y = ((pageY - rect.top) * 100) / rect.height;\n\n const ripple = document.createElement('span');\n ripple.classList.add('ripple-effect');\n ripple.style.animationDuration = `${duration}ms`;\n ripple.style.animationTimingFunction = timingFunction;\n ripple.style.left = `${x}%`;\n ripple.style.top = `${y}%`;\n\n if (color) {\n ripple.style.background = color;\n }\n\n currentTarget.appendChild(ripple);\n\n setTimeout(\n () => {\n ripple.remove();\n },\n Math.max(duration, 500) * Math.max(times, 1),\n );\n };\n\n return <span ref={ref} onMouseDown={handleClick} className={`ripple ${className}`} style={{ ...style, zIndex }} />;\n};\n","import type { ButtonHTMLAttributes } from 'react';\n\nimport { useClassNames } from '../../hooks';\nimport { ColorTypes, RadiusTypes, SizeTypes, VariantTypes } from '../component.types';\nimport { Ripple } from '../ripple';\n\nimport './button.styles.css';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n children: React.ReactNode;\n color?: `${ColorTypes}`;\n variant?: `${VariantTypes}`;\n radius?: `${RadiusTypes}`;\n size?: `${SizeTypes}`;\n noWrap?: boolean;\n ref?: React.Ref<HTMLButtonElement>;\n forIcon?: boolean;\n isLoading?: boolean;\n}\n\nexport const Button = ({\n children,\n color = ColorTypes.DEFAULT,\n variant = VariantTypes.SOLID,\n radius = RadiusTypes.MEDIUM,\n size = SizeTypes.REGULAR,\n noWrap = false,\n forIcon = false,\n className = '',\n ...props\n}: ButtonProps) => {\n const classNames = useClassNames({\n button: true,\n [color]: Boolean(color),\n [variant]: Boolean(variant),\n [`radius-${radius}`]: Boolean(radius),\n [`size-${size}`]: Boolean(size),\n 'no-wrap': noWrap,\n icon: forIcon,\n [className]: Boolean(className),\n });\n\n return (\n <button {...props} className={classNames}>\n {children}\n <Ripple />\n </button>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport { useEventListener, useMousePosition } from '../../hooks';\n\nimport './cursor.styles.css';\n\nexport const Cursor = () => {\n const { x, y, elementX, elementY, ref } = useMousePosition();\n const [isCursorHover, setIsCursorHover] = useState(false);\n\n useEventListener('mouseover', e => {\n const computedCursor = getComputedStyle(e.target as HTMLElement).cursor;\n\n setIsCursorHover(computedCursor === 'pointer');\n });\n\n useEffect(() => {\n if (!('ontouchstart' in window || navigator.maxTouchPoints)) {\n document.body.style.cursor = 'none';\n }\n\n return () => {\n document.body.style.cursor = 'auto';\n };\n }, []);\n\n if (x === null || y === null || 'ontouchstart' in window || navigator.maxTouchPoints) {\n return null;\n }\n\n const translate3d = `translate3d(${elementX}px, ${elementY}px, 0)`;\n\n return (\n <section className='cursor-overlay' ref={ref}>\n <span\n className={`cursor outer-circle ${isCursorHover ? 'cursor-hover' : ''}`}\n style={{\n transform: translate3d,\n }}\n />\n <span\n className={`cursor inner-circle ${isCursorHover ? 'cursor-hover' : ''}`}\n style={{\n transform: translate3d,\n }}\n />\n </section>\n );\n};\n","import { useMemo } from 'react';\nimport { IconType } from 'react-icons';\nimport { IoCheckmarkOutline } from 'react-icons/io5';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { ColorTypes, SizeTypes } from '../../component.types';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './checkbox.styles.css';\n\ntype CheckboxProps = {\n label?: React.ReactNode;\n placeholder?: never;\n icon?: IconType;\n color?: `${ColorTypes}`;\n size?: `${SizeTypes}`;\n};\n\nexport const Checkbox = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n autoComplete = 'off',\n icon: Icon = IoCheckmarkOutline,\n label,\n color = ColorTypes.PRIMARY,\n size = SizeTypes.REGULAR,\n /*\n * isDirty = false,\n * isTouched = false,\n * invalid = false,\n * error,\n */\n}: UnControlledComponentProps<CheckboxProps, boolean>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n\n const { handlers } = useInputHandlers<HTMLInputElement>({\n onChange: e => setValue(e.target.checked),\n onBlur: onBlur,\n onFocus: onFocus,\n });\n\n const checkboxContainerClassName = useClassNames({\n 'checkbox-container': true,\n [className]: Boolean(className),\n [`color-${color}`]: Boolean(color),\n });\n\n const checkboxClassName = useClassNames({\n checkbox: true,\n 'is-checked': value,\n [`size-${size}`]: Boolean(size),\n });\n\n return (\n <section className={checkboxContainerClassName} style={style} onClick={e => e.stopPropagation()}>\n <section className={checkboxClassName}>\n <section className='checkbox-fill'>\n <Icon size='1.3em' className='checkbox-icon' />\n </section>\n <input\n id={id}\n type='checkbox'\n name={name}\n className='checkbox-input'\n checked={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n disabled={disabled || readOnly}\n {...handlers}\n />\n </section>\n {label ? (\n <Typography variant='label-form' htmlFor={id} className='checkbox-label'>\n {label}\n </Typography>\n ) : null}\n </section>\n );\n};\n\nconst CheckboxController = ({ rules, ...props }: ControllerGeneratorProps<CheckboxProps, boolean>) => {\n return <Controller Component={Checkbox} defaultValue={false} inputProps={props} rules={rules} />;\n};\n\nCheckbox.Controller = CheckboxController;\n","import React from 'react';\nimport { Controller as RHFController, useFormContext, UseControllerProps } from 'react-hook-form';\n\nimport { ControlledComponentProps, Props, UnControlledComponentProps } from '../form.types';\n\ntype ControllerProps<T extends Props, V> = {\n inputProps: ControlledComponentProps<T, V>;\n Component: React.FC<UnControlledComponentProps<T, V>>;\n rules?: UseControllerProps['rules'];\n defaultValue: V;\n};\n\nexport const Controller = <T extends Props, V>({\n Component,\n inputProps,\n defaultValue: fieldDefaultValue,\n rules,\n}: ControllerProps<T, V>) => {\n const { control, setValue } = useFormContext();\n const { name, defaultValue } = inputProps;\n\n return (\n <RHFController\n name={name}\n control={control}\n rules={rules}\n defaultValue={defaultValue ?? fieldDefaultValue}\n render={({ field: { onBlur, value }, fieldState }) => (\n <Component\n value={value}\n error={fieldState.error?.message}\n invalid={fieldState.invalid}\n isTouched={fieldState.isTouched}\n isDirty={fieldState.isDirty}\n setValue={value => setValue(name, value)}\n onBlur={onBlur}\n {...inputProps}\n />\n )}\n />\n );\n};\n","import { useMemo } from 'react';\n\nimport { useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\ntype DatePickerProps = InputFieldProps<{\n type?: 'date' | 'datetime-local' | 'month' | 'time' | 'week';\n}>;\n\nexport const DatePicker = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n type = 'date',\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<DatePickerProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { isFocus, handlers } = useInputHandlers({\n onBlur: onBlur,\n onChange: e => setValue(e.target.value),\n onFocus: onFocus,\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <input\n id={id}\n type={type}\n name={name}\n className={className}\n style={style}\n value={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n {...handlers}\n />\n </Field>\n );\n};\n\nconst DatePickerController = ({ rules, ...props }: ControllerGeneratorProps<DatePickerProps, string>) => {\n return <Controller Component={DatePicker} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nDatePicker.Controller = DatePickerController;\n","import React from 'react';\nimport { IconType } from 'react-icons';\nimport { ImCross } from 'react-icons/im';\n\nimport { useClassNames } from '../../../hooks';\nimport { Typography } from '../../typography';\n\nimport './field.styles.css';\nimport { FieldOrientation, FieldProps, FieldVariant } from './field.types';\n\ntype GetIconParams = {\n icon?: IconType;\n onClick: (e: React.MouseEvent) => void;\n className: string;\n};\n\nconst getIcon = ({ icon: Icon, className, onClick }: GetIconParams) =>\n Icon ? <Icon className={className} onClick={onClick} /> : <span />;\n\nexport const Field = ({\n id,\n label,\n leftIcon,\n rightIcon,\n errorIcon: ErrorIcon = ImCross,\n error,\n onClickLeftIcon,\n onClickRightIcon,\n fieldOrientation = FieldOrientation.VERTICAL,\n children,\n isFocus = false,\n variant,\n ref,\n}: FieldProps) => {\n const fieldClassName = useClassNames({\n 'form-field': true,\n focus: isFocus,\n error: !!error,\n 'variant-content-border': variant === FieldVariant.CONTENT_BORDER,\n 'variant-content-line': variant === FieldVariant.CONTENT_LINE,\n 'variant-full-border': variant === FieldVariant.FULL_BORDER,\n 'variant-inline': fieldOrientation === FieldOrientation.HORIZONTAL,\n });\n\n const handleClick = (callback?: () => void) => (e: React.MouseEvent) => {\n e.stopPropagation();\n const input = document.getElementById(id);\n input?.focus();\n input?.click();\n\n if (callback) callback();\n };\n\n return (\n <section className={fieldClassName} ref={ref}>\n {label ? (\n <Typography className='field-label' noPadding variant='label-form' htmlFor={id}>\n {label}\n </Typography>\n ) : null}\n <section className='field-content'>\n {getIcon({\n className: 'field-left-icon',\n icon: leftIcon,\n onClick: handleClick(onClickLeftIcon),\n })}\n <section className='field-children'>{children}</section>\n {getIcon({\n className: 'field-right-icon',\n icon: rightIcon,\n onClick: handleClick(onClickRightIcon),\n })}\n </section>\n {Boolean(error) && (\n <section className='field-message'>\n {ErrorIcon ? <ErrorIcon size={10} /> : <span />}\n <Typography noPadding variant='small'>\n {error}\n </Typography>\n </section>\n )}\n </section>\n );\n};\n","import React from 'react';\nimport { IconType } from 'react-icons';\n\nexport enum FieldVariant {\n FULL_BORDER = 'full-border',\n CONTENT_BORDER = 'content-border',\n CONTENT_LINE = 'line',\n}\n\nexport enum FieldOrientation {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\ntype FieldSharedProps = {\n rightIcon?: IconType;\n leftIcon?: IconType;\n errorIcon?: IconType;\n onClickLeftIcon?: () => void;\n onClickRightIcon?: () => void;\n label?: string;\n variant?: `${FieldVariant}`;\n ref?: React.RefObject<HTMLElement | null>;\n};\n\nexport type FieldProps = FieldSharedProps & {\n children: React.ReactNode;\n id: string;\n error?: string;\n isFocus?: boolean;\n fieldOrientation?: `${FieldOrientation}`;\n};\n\nexport type InputFieldProps<T> = T & FieldSharedProps;\n","import { useMemo } from 'react';\n\nimport { useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\ntype IProps = InputFieldProps<{\n pattern?: string;\n type?: 'email' | 'search' | 'text' | 'url';\n min?: number;\n max?: number;\n}>;\n\nexport const Input = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n pattern,\n type = 'text',\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n min,\n max,\n ...fieldProps\n}: UnControlledComponentProps<IProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers, isFocus } = useInputHandlers({\n onChange: e => setValue(e.target.value),\n onBlur: onBlur,\n onFocus: onFocus,\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <input\n id={id}\n type={type}\n name={name}\n className={className}\n style={style}\n value={value}\n pattern={pattern}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n min={min}\n max={max}\n {...handlers}\n />\n </Field>\n );\n};\n\nconst InputController = ({ rules, ...props }: ControllerGeneratorProps<IProps, string>) => {\n return <Controller Component={Input} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nInput.Controller = InputController;\n","import { useMemo } from 'react';\nimport { IconType } from 'react-icons';\nimport { FiEye, FiEyeOff } from 'react-icons/fi';\nimport { IoIosWarning } from 'react-icons/io';\n\nimport { useInputHandlers, useToggleValues } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\ntype InputPasswordProps = InputFieldProps<{\n rightIcon?: never;\n}>;\n\nexport const InputPassword = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<InputPasswordProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const [type, toggle] = useToggleValues<'password' | 'text'>(['password', 'text']);\n const { isFocus, handlers } = useInputHandlers({\n onBlur: onBlur,\n onChange: e => setValue(e.target.value),\n onFocus: onFocus,\n });\n\n const icon = useMemo<IconType>(() => {\n if (type === 'password') return FiEye;\n\n if (type === 'text') return FiEyeOff;\n\n return IoIosWarning;\n }, [type]);\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps} rightIcon={icon} onClickRightIcon={() => toggle()}>\n <input\n id={id}\n type={type}\n name={name}\n className={className}\n style={style}\n value={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n {...handlers}\n />\n </Field>\n );\n};\n\nconst InputPasswordController = ({ rules, ...props }: ControllerGeneratorProps<InputPasswordProps, string>) => {\n return <Controller Component={InputPassword} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nInputPassword.Controller = InputPasswordController;\n","import Color from 'color';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { HexAlphaColorPicker, HexColorInput } from 'react-colorful';\nimport { FaEyeDropper } from 'react-icons/fa6';\nimport useEyeDropper from 'use-eye-dropper';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { Modal } from '../../modals';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './input-color.styles.css';\n\ntype ColorProps = InputFieldProps<{\n showValueText?: boolean;\n}>;\n\nexport const InputColor = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n showValueText = false,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<ColorProps, string>) => {\n const { open, isSupported } = useEyeDropper();\n const [inputValue, setInputValue] = useState<string>(value);\n const id = useMemo(() => crypto.randomUUID(), []);\n const containerRef = useRef<HTMLElement>(null);\n const [isOpen, setIsOpen] = useState(false);\n const { handlers, isFocus } = useInputHandlers({\n onChange: e => setInputValue(e.target.value),\n onBlur: e => {\n setInputColor();\n\n if (onBlur) onBlur(e as React.FocusEvent<HTMLInputElement>);\n },\n onFocus: e => {\n setInputColor();\n\n if (onFocus) onFocus(e as React.FocusEvent<HTMLInputElement>);\n },\n });\n\n const borderColor = useMemo(() => {\n const color = Color(value === '' ? '#000000' : value);\n\n if (color.isLight() || color.alpha() < 0.5) {\n return '#000000';\n }\n\n return '#FFFFFF';\n }, [value]);\n\n const openEyeDropper = async () => {\n const { sRGBHex } = await open();\n setValue(sRGBHex);\n };\n\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n const setInputColor = useCallback(() => {\n if (inputValue.match(/^#(?:(?:[\\da-f]{3}){1,2}|(?:[\\da-f]{4}){1,2})$/i)) {\n setValue(inputValue);\n } else {\n setInputValue(value);\n }\n }, [inputValue, setValue, value]);\n\n const inputBoxClassName = useClassNames({\n 'input-color-box': true,\n [className]: Boolean(className),\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <section\n className='input-color'\n onClick={e => {\n e.stopPropagation();\n setIsOpen(true);\n }}\n ref={containerRef}\n >\n <section\n className={inputBoxClassName}\n style={{\n borderColor,\n background: value,\n color: value,\n ...style,\n }}\n />\n {showValueText ? (\n <input\n id={id}\n name={name}\n value={inputValue}\n placeholder={placeholder}\n readOnly={readOnly}\n autoFocus={autoFocus}\n disabled={disabled}\n autoComplete={autoComplete}\n className='color-input'\n {...handlers}\n />\n ) : null}\n </section>\n\n <Modal\n id='input-color'\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n position='bottom right'\n offset={5}\n backdrop='transparent'\n containerRef={containerRef}\n className='input-color-selector'\n >\n <HexAlphaColorPicker id={id} color={value} onChange={setValue} />\n <section className='color-input-container'>\n {isSupported() ? (\n <FaEyeDropper\n onClick={() => {\n void openEyeDropper();\n }}\n />\n ) : (\n <span />\n )}\n <HexColorInput\n className='color-input'\n id={id}\n name={name}\n color={value}\n placeholder='Type a color'\n prefixed\n alpha\n onChange={setValue}\n />\n <span />\n </section>\n </Modal>\n </Field>\n );\n};\n\nconst InputColorController = ({ rules, ...props }: ControllerGeneratorProps<ColorProps, string>) => {\n return <Controller Component={InputColor} defaultValue='#147EFB' inputProps={props} rules={rules} />;\n};\n\nInputColor.Controller = InputColorController;\n","import { createContext, useCallback, useContext, useRef, useState } from 'react';\nimport { IconType } from 'react-icons';\nimport { ImCross } from 'react-icons/im';\n\nimport { PositionContainer } from '../../../helpers';\nimport { useClassNames } from '../../../hooks';\nimport { Button, ButtonProps } from '../../button';\nimport { Typography } from '../../typography';\nimport { Modal, ModalProps } from '../modal';\n\nimport './action-modal.styles.css';\n\ntype ActionModalContextType = {\n onClose: () => void;\n isActionInProgress: boolean;\n setIsActionInProgress: (isActionInProgress: boolean) => void;\n};\n\nconst ActionModalContext = createContext<ActionModalContextType | null>(null);\n\nconst useActionModalContext = () => {\n const context = useContext(ActionModalContext);\n\n if (!context) {\n throw new Error('useActionModalContext must be used within a ActionModal');\n }\n\n return context;\n};\n\nexport type ActionModalProps = Omit<\n ModalProps,\n 'id' | 'animation' | 'closeAnimationClassName' | 'position' | 'rootStyle' | 'className' | 'style'\n> & {\n actionRequired?: boolean;\n icon?: IconType;\n noCloseButton?: boolean;\n lineOnTop?: boolean;\n backCard?: boolean;\n noPadding?: boolean;\n className?: string;\n style?: React.CSSProperties;\n};\n\nexport const ActionModal = ({\n children,\n isOpen,\n onClose,\n actionRequired,\n icon: Icon,\n noCloseButton,\n lineOnTop = false,\n backCard = false,\n noPadding = false,\n className = '',\n style = {},\n ...modalProps\n}: ActionModalProps) => {\n const [isActionInProgress, setIsActionInProgress] = useState(false);\n const ref = useRef<HTMLElement>(null);\n\n const remainAction = useCallback(() => {\n ref.current?.classList.add('shake-animation');\n setTimeout(() => {\n ref.current?.classList.remove('shake-animation');\n }, 500);\n }, []);\n\n const actionModalClassName = useClassNames({\n 'action-modal-content': true,\n 'back-card': backCard,\n 'line-on-top': lineOnTop,\n 'no-padding': noPadding,\n });\n\n return (\n <ActionModalContext.Provider value={{ onClose, isActionInProgress, setIsActionInProgress }}>\n <Modal\n className='action-modal'\n id='action-modal'\n animation='bounce'\n opacity={0.8}\n isOpen={isOpen}\n onClose={onClose}\n {...modalProps}\n backdropOnClick={actionRequired ? remainAction : onClose}\n position={PositionContainer.CENTER}\n >\n <section ref={ref} className='modal-content'>\n <section className={actionModalClassName}>\n {!noCloseButton && !actionRequired && (\n <section className='close-modal-button' onClick={() => onClose()}>\n <ImCross />\n </section>\n )}\n {Icon ? (\n <Typography variant='header4' className='action-modal-icon'>\n <Icon />\n </Typography>\n ) : null}\n <section className='action-modal-body'>\n <section className={`action-modal-content ${className}`} style={style}>\n {children}\n </section>\n </section>\n </section>\n </section>\n </Modal>\n </ActionModalContext.Provider>\n );\n};\n\ntype ActionButtonProps = Omit<ButtonProps, 'onClick'> & {\n onClick: (() => Promise<void>) | (() => void);\n};\n\nconst ActionButton = ({ onClick, children, isLoading: manualIsLoading, ...buttonProps }: ActionButtonProps) => {\n const { onClose, isActionInProgress, setIsActionInProgress } = useActionModalContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const handleAction = useCallback(() => {\n setIsLoading(true);\n setIsActionInProgress(true);\n const result = onClick();\n\n if (result instanceof Promise) {\n result.then(() => {\n onClose();\n setIsLoading(false);\n setIsActionInProgress(false);\n });\n } else {\n onClose();\n setIsLoading(false);\n setIsActionInProgress(false);\n }\n }, [onClick, onClose, setIsActionInProgress]);\n\n if (!isLoading && isActionInProgress) {\n return null;\n }\n\n return (\n <Button {...buttonProps} onClick={handleAction} isLoading={manualIsLoading || isLoading}>\n {children}\n </Button>\n );\n};\n\nActionModal.ActionButton = ActionButton;\n","import React, { CSSProperties, useMemo, useRef } from 'react';\n\nimport {\n ModalState,\n useClassNames,\n useClickOutside,\n useModalInContainer,\n UseModalInContainerParams,\n useModalTransition,\n UseModalTransitionParams,\n} from '../../../hooks';\nimport { Portal } from '../portal';\n\nimport { Backdrop, BackdropProps } from './modal.backdrop';\nimport './modal.styles.css';\n\nexport type ModalProps = Omit<BackdropProps, 'modalState'> &\n UseModalTransitionParams &\n Omit<UseModalInContainerParams, 'modalRef'> & {\n id: string;\n children: React.ReactNode;\n onClose: () => void;\n className?: string;\n style?: React.CSSProperties;\n rootStyle?: CSSProperties;\n animation?: 'none' | 'fade-down' | 'bounce';\n closeAnimationClassName?: string;\n modalRef?: React.RefObject<HTMLElement | null>;\n closeOnClickOutside?: boolean;\n };\n\nexport const Modal = ({\n id,\n children,\n isOpen,\n onClose,\n className = '',\n style = {},\n rootStyle = {},\n animation = 'fade-down',\n closeAnimationClassName = 'modal-close',\n modalRef: modalRefProp,\n closeOnClickOutside = true,\n transitionDuration = 300,\n windowOffset = 10,\n offset = 20,\n position,\n containerRef,\n zIndex = 1000,\n ...backdropProps\n}: ModalProps) => {\n const uuid = useMemo(() => crypto.randomUUID(), []);\n const modalRef = useRef<HTMLElement>(null);\n const { modalState, isVisible } = useModalTransition({\n transitionDuration,\n isOpen,\n });\n\n useModalInContainer({\n modalRef: modalRefProp ?? modalRef,\n containerRef,\n offset,\n windowOffset,\n position,\n isOpen: isVisible,\n });\n\n useClickOutside<HTMLElement>(modalRefProp ?? modalRef, () => {\n if (isOpen && closeOnClickOutside) {\n onClose();\n }\n });\n\n const modalContentClassName = useClassNames({\n 'modal-content': true,\n [className]: Boolean(className),\n [`animation-${animation}`]: Boolean(animation) && animation !== 'none',\n [closeAnimationClassName]: modalState === ModalState.CLOSING || modalState === ModalState.CLOSED,\n });\n\n if (!isVisible) {\n return null;\n }\n\n return (\n <Portal id={`modal-${id}-${uuid}`}>\n <Backdrop {...backdropProps} modalState={modalState} zIndex={zIndex} />\n <section\n className='modal'\n ref={modalRefProp ?? modalRef}\n style={{\n maxWidth: `calc(100dvw - ${windowOffset * 2}px)`,\n maxHeight: `calc(100dvh - ${windowOffset * 2}px)`,\n ...rootStyle,\n zIndex: +zIndex + 1,\n }}\n >\n <section style={{ ...style, animationDuration: `${transitionDuration}ms` }} className={modalContentClassName}>\n {children}\n </section>\n </section>\n </Portal>\n );\n};\n","import { ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { useDomContainer } from '../../../hooks';\n\ntype PortalProps = {\n id: string;\n children: ReactNode;\n};\n\nexport const Portal = ({ children, id }: PortalProps) => {\n const root = useDomContainer(id);\n\n if (root === null) {\n return null;\n }\n\n return createPortal(children, root);\n};\n","import React, { useMemo } from 'react';\n\nimport { ModalState, useClassNames } from '../../../hooks';\n\nexport enum ModalBackdrop {\n OPAQUE = 'opaque',\n TRANSPARENT = 'transparent',\n BLUR = 'blur',\n NONE = 'none',\n}\n\nexport type BackdropProps = {\n opacity?: number;\n backdrop?: `${ModalBackdrop}`;\n zIndex?: React.CSSProperties['zIndex'];\n backdropOnClick?: () => void;\n modalState?: ModalState;\n};\n\nexport const Backdrop = ({\n opacity = 0.6,\n backdrop = ModalBackdrop.BLUR,\n zIndex,\n backdropOnClick,\n modalState,\n}: BackdropProps) => {\n const backdropClassName = useClassNames({\n 'modal-backdrop': true,\n 'backdrop-close': modalState === ModalState.CLOSING || modalState === ModalState.CLOSED,\n });\n\n const backgroundStyles = useMemo(() => {\n const backdropStyles = {\n [ModalBackdrop.OPAQUE]: {\n background: `hsl(from var(--background-paper) h s l / ${opacity * 100}%)`,\n },\n [ModalBackdrop.TRANSPARENT]: {\n background: 'transparent',\n },\n [ModalBackdrop.BLUR]: {\n background: `hsl(from var(--background-paper) h s l / ${opacity * 100}%)`,\n backdropFilter: 'blur(5px)',\n },\n [ModalBackdrop.NONE]: {\n display: 'none',\n },\n };\n\n return backdropStyles[backdrop] ?? {};\n }, [backdrop, opacity]);\n\n if (backdrop === ModalBackdrop.NONE) {\n return null;\n }\n\n return (\n <section\n tabIndex={-1}\n onClick={backdropOnClick}\n className={backdropClassName}\n style={{\n zIndex,\n ...backgroundStyles,\n }}\n />\n );\n};\n","import { CSSProperties, useMemo } from 'react';\nimport { ImCross } from 'react-icons/im';\n\nimport { PositionContainer } from '../../../helpers';\nimport { Modal, ModalProps } from '../modal';\n\nimport './aside-modal.styles.css';\n\ntype AsideModalProps = Omit<\n ModalProps,\n 'id' | 'animation' | 'closeAnimationClassName' | 'position' | 'rootStyle' | 'className' | 'style'\n> & {\n position?:\n | `${PositionContainer.TOP}`\n | `${PositionContainer.LEFT}`\n | `${PositionContainer.RIGHT}`\n | `${PositionContainer.BOTTOM}`;\n size?: number | `${number}px` | `${number}em`;\n className?: string;\n style?: React.CSSProperties;\n};\n\nexport const AsideModal = ({\n children,\n isOpen,\n onClose,\n position = PositionContainer.LEFT,\n size,\n className = '',\n ...modalProps\n}: AsideModalProps) => {\n const modalRootStyles = useMemo<CSSProperties>(() => {\n const computedSize = {\n [PositionContainer.TOP]: { height: size, width: '100%' },\n [PositionContainer.LEFT]: { height: '100%', width: size },\n [PositionContainer.RIGHT]: { height: '100%', width: size },\n [PositionContainer.BOTTOM]: { height: size, width: '100%' },\n };\n\n return computedSize[position];\n }, [position, size]);\n\n return (\n <Modal\n id='aside'\n isOpen={isOpen}\n onClose={onClose}\n opacity={0.6}\n windowOffset={0}\n animation='none'\n className={`aside-modal ${className} ${position}`}\n rootStyle={modalRootStyles}\n backdropOnClick={onClose}\n position={position}\n {...modalProps}\n >\n <span className='close-modal-button' onClick={onClose}>\n <ImCross />\n </span>\n <section className='aside-modal-content'>{children}</section>\n </Modal>\n );\n};\n","import { Typography } from '../../typography';\nimport { ActionModal, ActionModalProps } from '../action-modal';\n\nimport './confirmation-modal.styles.css';\n\ntype ConfirmationModalProps = ActionModalProps & {\n title: string;\n onAccept: (() => Promise<void>) | (() => void);\n onReject?: (() => Promise<void>) | (() => void);\n acceptText: string;\n rejectText: string;\n isLoading?: boolean;\n};\n\nexport const ConfirmationModal = ({\n title,\n onAccept,\n onReject = () => null,\n acceptText,\n rejectText,\n children,\n isLoading,\n ...actionModalProps\n}: ConfirmationModalProps) => {\n return (\n <ActionModal {...actionModalProps} backCard>\n <section className='confirmation-modal'>\n <Typography variant='header4'>{title}</Typography>\n <section>{children}</section>\n <section className='confirmation-modal-actions'>\n {!isLoading && (\n <ActionModal.ActionButton variant='flat' onClick={onReject}>\n {rejectText}\n </ActionModal.ActionButton>\n )}\n <ActionModal.ActionButton isLoading={isLoading} onClick={onAccept}>\n {acceptText}\n </ActionModal.ActionButton>\n </section>\n </section>\n </ActionModal>\n );\n};\n","import React, { RefObject, useCallback, useMemo } from 'react';\nimport { IconType } from 'react-icons';\n\nimport { useClassNames } from '../../../hooks';\nimport { Checkbox } from '../../form';\nimport { Line } from '../../line';\nimport { Ripple } from '../../ripple';\nimport { Typography, TypographyProps } from '../../typography';\nimport { Modal, ModalProps } from '../modal';\n\nimport './menu.styles.css';\n\ntype MenuProps = ModalProps & {\n children: React.ReactNode;\n contentClassName?: string;\n contentStyle?: React.CSSProperties;\n menuContentRef?: RefObject<HTMLUListElement>;\n};\n\nexport const Menu = ({\n children,\n isOpen,\n onClose,\n id,\n menuContentRef,\n contentClassName = '',\n contentStyle = {},\n className = '',\n ...modalProps\n}: MenuProps) => {\n const modalClassName = useClassNames({\n 'menu-modal': true,\n [className]: Boolean(className),\n });\n\n return (\n <Modal className={modalClassName} {...modalProps} id={`menu-${id}`} isOpen={isOpen} onClose={onClose}>\n <ul className={`menu-content ${contentClassName}`} role='listbox' style={contentStyle} ref={menuContentRef}>\n {children}\n </ul>\n </Modal>\n );\n};\n\nexport type MenuOptionProps = Omit<React.HTMLAttributes<HTMLLIElement>, 'onClick'> & {\n id?: string;\n children?: React.ReactNode;\n label?: React.ReactNode;\n disabled?: boolean;\n selected?: boolean;\n className?: string;\n style?: React.CSSProperties;\n asCheckbox?: boolean;\n icon?: IconType;\n onClick?: (newValue: boolean) => void;\n};\n\nconst MenuOption = ({\n children,\n label = '',\n asCheckbox,\n icon: Icon,\n id,\n disabled = false,\n selected = false,\n className = '',\n style = {},\n onClick = () => null,\n ...liProps\n}: MenuOptionProps) => {\n const menuOptionClassName = useClassNames({\n 'menu-option': true,\n [className]: true,\n 'is-disabled': disabled,\n 'is-selected': selected,\n });\n\n const handleClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n\n if (!disabled) {\n onClick(!selected);\n }\n },\n [disabled, onClick, selected],\n );\n\n const menuOptionContent = useMemo(() => {\n if (children) {\n return children;\n }\n\n if (asCheckbox) {\n return (\n <Checkbox\n className='menu-checkbox'\n disabled={disabled}\n value={selected}\n setValue={n => onClick(n)}\n name='option'\n style={{ pointerEvents: 'none' }}\n size='small'\n label={\n <>\n {Icon !== undefined && <Icon className='option-icon' />}\n <Typography variant='label'>{label}</Typography>\n </>\n }\n />\n );\n }\n\n return (\n <>\n {Icon !== undefined && <Icon className='option-icon' />}\n {typeof label === 'string' ? <Typography variant='label'>{label}</Typography> : label}\n </>\n );\n }, [asCheckbox, children, disabled, Icon, label, onClick, selected]);\n\n return (\n <li\n {...liProps}\n id={id}\n role='option'\n tabIndex={-1}\n aria-selected={selected}\n aria-disabled={disabled}\n onClick={handleClick}\n className={menuOptionClassName}\n style={style}\n >\n <Ripple zIndex={10} />\n {menuOptionContent}\n </li>\n );\n};\n\nconst Divider = () => {\n return (\n <li>\n <Line className='divider' />\n </li>\n );\n};\n\nconst Label = ({ children, className = '', ...props }: Omit<TypographyProps, 'variant'>) => {\n return (\n <li tabIndex={-1} className='menu-label'>\n <Typography {...props} variant='small' className={`menu-group-label ${className}`}>\n {children}\n </Typography>\n </li>\n );\n};\n\ntype MenuGroupProps = Omit<React.HTMLAttributes<HTMLLIElement>, 'onClick'> & {\n children: React.ReactNode;\n label: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n contentClassName?: string;\n contentStyle?: React.CSSProperties;\n};\n\nconst Group = ({\n children,\n label,\n className = '',\n style = {},\n contentClassName = '',\n contentStyle = {},\n ...props\n}: MenuGroupProps) => {\n const groupClassName = useClassNames({\n 'menu-group': true,\n [className]: Boolean(className),\n });\n\n return (\n <li tabIndex={-1} {...props} className={groupClassName} style={style}>\n {label && <Label>{label}</Label>}\n <ul className={`menu-group-content ${contentClassName}`} role='listbox' style={contentStyle}>\n {children}\n </ul>\n </li>\n );\n};\n\nMenu.Option = MenuOption;\nMenu.Divider = Divider;\nMenu.GroupLabel = Label;\nMenu.Group = Group;\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { IconType } from 'react-icons';\nimport { FaMagnifyingGlass, FaRegTrashCan } from 'react-icons/fa6';\nimport { IoIosWarning } from 'react-icons/io';\nimport { PiFilePdfFill, PiFilePngFill } from 'react-icons/pi';\n\nimport { formatBytes } from '../../../helpers';\nimport { FileTypeEnum, useInputHandlers } from '../../../hooks';\nimport { Grid } from '../../../layouts';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './input-file.styles.css';\n\ntype InputFileProps = {\n label?: string;\n accept?: string;\n multiple?: boolean;\n limitSize?: number;\n errorTimeout?: number;\n};\n\ntype InputFileValue = { [key: string]: File };\n\nexport const InputFile = ({\n name,\n value = {},\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = 'Click to upload or drag and drop',\n autoComplete = 'off',\n accept,\n multiple = false,\n limitSize = 5000000,\n errorTimeout = 3000,\n label,\n /*\n * isDirty = false,\n * isTouched = false,\n * invalid = false,\n * error,\n */\n}: UnControlledComponentProps<InputFileProps, InputFileValue>) => {\n const [error, setError] = useState<string | null>(null);\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers } = useInputHandlers<HTMLInputElement>({\n onBlur,\n onFocus,\n onChange: e => {\n const { files } = e.target;\n\n if (files) saveFiles(files);\n },\n });\n\n useEffect(() => {\n let intervalId: ReturnType<typeof setTimeout> | null = null;\n\n if (error !== null) {\n intervalId = setTimeout(() => {\n setError(null);\n }, errorTimeout);\n }\n\n return () => {\n if (intervalId !== null) {\n clearTimeout(intervalId);\n }\n };\n }, [error, errorTimeout]);\n\n const saveFiles = (files: FileList) => {\n const finalFiles = multiple ? { ...value } : {};\n\n const filesToCheck = multiple ? files.length : 1;\n\n for (let i = 0; i < filesToCheck; i++) {\n const file = files.item(i);\n\n if (!file) {\n continue;\n }\n\n if (file.size < limitSize) {\n finalFiles[file.name] = file;\n } else {\n setError(`File '${file.name}' size is larger than ${formatBytes(limitSize)}`);\n }\n }\n\n setValue(finalFiles);\n };\n\n const handleDrop = (e: React.DragEvent<HTMLInputElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.dataTransfer.files && e.dataTransfer.files.length) {\n saveFiles(e.dataTransfer.files);\n }\n };\n\n const getIconType = useCallback((type: FileTypeEnum): IconType => {\n const iconTypes: Record<FileTypeEnum, IconType> = {\n [FileTypeEnum.PNG]: PiFilePngFill,\n [FileTypeEnum.PDF]: PiFilePdfFill,\n };\n\n return iconTypes[type] ?? IoIosWarning;\n }, []);\n\n const deleteFile = (file: File) => {\n const prevValue = { ...value };\n delete prevValue[file.name];\n setValue(prevValue);\n };\n\n const deleteAll = () => {\n setValue({});\n };\n\n const totalSize = useMemo(() => Object.values(value).reduce((prev, { size }) => prev + size, 0), [value]);\n\n const renderFileToCard = (file: File, key: number) => {\n const Icon = getIconType(file.type as FileTypeEnum);\n\n return (\n <section className='input-file-card' key={key}>\n <section className='file-card--image'>\n <Icon />\n </section>\n <Grid>\n <Typography variant='label' noPadding nowrap>\n {file.name}\n </Typography>\n <Typography noPadding variant='small'>\n {formatBytes(file.size)}\n </Typography>\n </Grid>\n <section className='file-card--delete' onClick={() => deleteFile(file)}>\n <FaRegTrashCan />\n </section>\n </section>\n );\n };\n\n return (\n <section className='input-file-container'>\n {Boolean(label) && (\n <Typography variant='label-form' htmlFor={id} noPadding>\n {label}\n </Typography>\n )}\n <section className='input-file--box' onDrop={handleDrop}>\n <section className='input-file--box--icon'>\n <FaMagnifyingGlass />\n </section>\n <Grid>\n <Typography variant='label-form' htmlFor={id} noPadding weight='bold'>\n {placeholder}\n </Typography>\n <Typography variant='small' noPadding>\n Max size ({formatBytes(limitSize)})\n </Typography>\n </Grid>\n <input\n id={id}\n type='file'\n name={name}\n value=''\n placeholder={placeholder}\n readOnly={readOnly}\n autoFocus={autoFocus}\n disabled={disabled}\n autoComplete={autoComplete}\n className={className}\n style={style}\n accept={accept}\n multiple={multiple}\n title=''\n {...handlers}\n />\n </section>\n {error !== null && (\n <Typography variant='small' noPadding className='error'>\n {error}\n </Typography>\n )}\n {Object.keys(value).length > 0 && (\n <>\n {multiple && (\n <span className='total-info'>\n <Typography variant='small' noPadding>\n {Object.keys(value).length} files - {formatBytes(totalSize)}\n </Typography>\n <span className='total-info--delete' onClick={deleteAll}>\n <FaRegTrashCan />\n </span>\n </span>\n )}\n <section className='input-file--files'>\n <section className='input-file--files--content'>{Object.values(value).map(renderFileToCard)}</section>\n </section>\n </>\n )}\n </section>\n );\n};\n\nconst InputFileController = ({ rules, ...props }: ControllerGeneratorProps<InputFileProps, InputFileValue>) => {\n return <Controller Component={InputFile} defaultValue={{}} inputProps={props} rules={rules} />;\n};\n\nInputFile.Controller = InputFileController;\n","import React, { createElement } from 'react';\n\nimport './grid.styles.css';\n\ntype GridProps = React.HTMLAttributes<HTMLDivElement> & {\n tag?: React.HTMLElementType;\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n flow?: React.CSSProperties['gridAutoFlow'];\n columnSize?: React.CSSProperties['gridAutoColumns'];\n rowSize?: React.CSSProperties['gridAutoRows'];\n column?: React.CSSProperties['gridColumn'];\n row?: React.CSSProperties['gridRow'];\n pc?: React.CSSProperties['placeContent'];\n pi?: React.CSSProperties['placeItems'];\n ps?: React.CSSProperties['placeSelf'];\n jc?: React.CSSProperties['justifyContent'];\n ji?: React.CSSProperties['justifyItems'];\n js?: React.CSSProperties['justifySelf'];\n ac?: React.CSSProperties['alignContent'];\n ai?: React.CSSProperties['alignItems'];\n as?: React.CSSProperties['alignSelf'];\n gtc?: React.CSSProperties['gridTemplateColumns'];\n gtr?: React.CSSProperties['gridTemplateRows'];\n gta?: React.CSSProperties['gridTemplateAreas'];\n gt?: React.CSSProperties['gridTemplate'];\n gap?: React.CSSProperties['gap'];\n ref?: React.Ref<HTMLElement>;\n};\n\nexport const Grid = ({\n tag = 'section',\n children,\n className,\n style,\n flow,\n columnSize,\n rowSize,\n column,\n row,\n pc,\n pi,\n ps,\n jc,\n ji,\n js,\n ac,\n ai,\n as,\n gtc,\n gtr,\n gta,\n gt,\n gap,\n ...props\n}: GridProps) => {\n return createElement(\n tag,\n {\n className,\n ...props,\n style: {\n ...style,\n ...(flow ? { gridAutoFlow: flow } : {}),\n ...(columnSize ? { gridAutoColumns: columnSize } : {}),\n ...(rowSize ? { gridAutoRows: rowSize } : {}),\n ...(column ? { gridColumn: column } : {}),\n ...(row ? { gridRow: row } : {}),\n ...(pc ? { placeContent: pc } : {}),\n ...(pi ? { placeItems: pi } : {}),\n ...(ps ? { placeSelf: ps } : {}),\n ...(jc ? { justifyContent: jc } : {}),\n ...(ji ? { justifyItems: ji } : {}),\n ...(js ? { justifySelf: js } : {}),\n ...(ac ? { alignContent: ac } : {}),\n ...(ai ? { alignItems: ai } : {}),\n ...(as ? { alignSelf: as } : {}),\n ...(gtc ? { gridTemplateColumns: gtc } : {}),\n ...(gtr ? { gridTemplateRows: gtr } : {}),\n ...(gta ? { gridTemplateAreas: gta } : {}),\n ...(gt ? { gridTemplate: gt } : {}),\n ...(gap ? { gap: gap } : {}),\n display: 'grid',\n },\n },\n children,\n );\n};\n","import { useEffect, useMemo, useState } from 'react';\n\nimport { useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\ntype FormatFunction = (value: number) => string;\n\nconst RegexDecimal = {\n comma: /(?!^-)[^0-9,]/g,\n dot: /(?!^-)[^0-9.]/g,\n} as const;\n\nconst getCleanedValue = (input: string, decimalSeparator = '.'): string => {\n const regex = decimalSeparator === '.' ? RegexDecimal.dot : RegexDecimal.comma;\n const cleaned = input.replace(regex, '').replace(',', '.');\n\n if (!cleaned) {\n return '';\n }\n\n return cleaned;\n};\n\nconst getFormattedValue = (value: number, format: FormatFunction) => {\n if (!value || Number.isNaN(value)) {\n return format(0);\n }\n\n return format(value);\n};\n\ntype FormatConfig = Intl.NumberFormatOptions & {\n locales: Intl.LocalesArgument;\n};\n\ntype IProps = InputFieldProps<{\n pattern?: string;\n min?: number;\n max?: number;\n format?: FormatConfig | FormatFunction;\n decimalSeparator?: string;\n}>;\n\nexport const InputNumber = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n pattern,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n min,\n max,\n decimalSeparator,\n format = {\n locales: 'en-US',\n style: 'decimal',\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n },\n ...fieldProps\n}: UnControlledComponentProps<IProps, number>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const formatFunction = useMemo<FormatFunction>(() => {\n if (typeof format === 'function') return format;\n\n const { locales, ...formatConfig } = format;\n\n return Intl.NumberFormat(locales, formatConfig).format;\n }, [format]);\n const [formattedValue, setFormattedValue] = useState(getFormattedValue(value, formatFunction));\n\n const { handlers, isFocus } = useInputHandlers({\n onChange: e => {\n const cleaned = getCleanedValue(e.target.value, decimalSeparator);\n\n if (cleaned.endsWith('.')) {\n setFormattedValue(e.target.value);\n } else {\n setFormattedValue(getFormattedValue(Number(cleaned), formatFunction));\n setValue(Number(cleaned));\n }\n },\n onBlur: e => {\n const cleaned = getCleanedValue(e.target.value, decimalSeparator);\n setFormattedValue(getFormattedValue(Number(cleaned), formatFunction));\n setValue(Number(cleaned));\n\n if (onBlur) onBlur(e);\n },\n onFocus: onFocus,\n });\n\n useEffect(() => {\n const formatted = getFormattedValue(value, formatFunction);\n\n if (formattedValue !== formatted) {\n setFormattedValue(formatted);\n }\n }, [formatFunction, formattedValue, value]);\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <input\n id={id}\n type='text'\n name={name}\n className={className}\n style={style}\n value={formattedValue}\n pattern={pattern}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n min={min}\n max={max}\n {...handlers}\n />\n </Field>\n );\n};\n\nconst InputController = ({ rules, ...props }: ControllerGeneratorProps<IProps, number>) => {\n return <Controller Component={InputNumber} defaultValue={0} inputProps={props} rules={rules} />;\n};\n\nInputNumber.Controller = InputController;\n","import { useMemo } from 'react';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { ColorTypes, SizeTypes } from '../../component.types';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './radio.styles.css';\n\ntype RadioProps = {\n label?: string;\n radioValue: string;\n placeholder?: never;\n color?: `${ColorTypes}`;\n size?: `${SizeTypes}`;\n};\n\nexport const Radio = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n autoComplete = 'off',\n radioValue,\n label,\n color = ColorTypes.PRIMARY,\n size = SizeTypes.REGULAR,\n /*\n * isDirty = false,\n * isTouched = false,\n * invalid = false,\n * error,\n */\n}: UnControlledComponentProps<RadioProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers } = useInputHandlers({\n onChange: e => setValue(e.target.value),\n onBlur: onBlur,\n onFocus: onFocus,\n });\n\n const radioContainerClassName = useClassNames({\n 'radio-container': true,\n [className]: Boolean(className),\n [`color-${color}`]: Boolean(color),\n });\n\n const radioClassName = useClassNames({\n radio: true,\n 'is-checked': radioValue === value,\n [`size-${size}`]: Boolean(size),\n });\n\n return (\n <section className={radioContainerClassName} style={style}>\n <section className={radioClassName}>\n <section className='radio-fill' />\n <input\n id={id}\n type='radio'\n name={name}\n className={`radio-input ${className}`}\n style={style}\n value={radioValue}\n checked={radioValue === value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n disabled={disabled || readOnly}\n {...handlers}\n />\n </section>\n {label ? (\n <Typography variant='label-form' htmlFor={id} className='radio-label'>\n {label}\n </Typography>\n ) : null}\n </section>\n );\n};\n\nconst RadioController = ({ rules, ...props }: ControllerGeneratorProps<RadioProps, string>) => {\n return <Controller Component={Radio} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nRadio.Controller = RadioController;\n","import React, { createContext, useCallback, useContext, useMemo, useRef, useState } from 'react';\nimport { ImCross } from 'react-icons/im';\nimport { PiCaretDown } from 'react-icons/pi';\n\nimport { useMediaQuery } from '../../../hooks';\nimport { InfinityScroll } from '../../infinity-scroll';\nimport { Menu } from '../../modals';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { Field } from '../field';\nimport { ControllerGeneratorProps } from '../form.types';\n\nimport { Option } from './option';\nimport { Options } from './options';\nimport './select.styles.css';\nimport {\n ControllerGeneratorSelectProps,\n MultiSelectProps,\n MultiValue,\n OptionComponentProps,\n SelectItem,\n SingleSelectProps,\n SingleValue,\n UnControlledSelectProps,\n SelectContextValue,\n ValueComponentProps,\n} from './select.types';\n\nconst SelectContext = createContext<SelectContextValue<unknown> | null>(null);\n\nexport const useSelectContext = <T extends SelectItem>(): SelectContextValue<T> => {\n const context = useContext(SelectContext as React.Context<SelectContextValue<T> | null>);\n\n if (!context) {\n throw new Error('useSelectContext must be used within a Select component');\n }\n\n return context;\n};\n\ntype OptionLabelProps = {\n children: React.ReactNode;\n};\n\nconst OptionLabel = ({ children }: OptionLabelProps) => {\n const labelComponent = useMemo(() => {\n if (typeof children === 'string') {\n return (\n <Typography noPadding variant='label' nowrap>\n {children}\n </Typography>\n );\n }\n\n return children;\n }, [children]);\n\n return <Menu.GroupLabel>{labelComponent}</Menu.GroupLabel>;\n};\n\nconst DefaultOption = <T extends SelectItem>({ value }: OptionComponentProps<T>) => {\n return (\n <Typography variant='label' nowrap>\n {typeof value === 'string' || typeof value === 'number' ? value : JSON.stringify(value)}\n </Typography>\n );\n};\n\nconst DefaultValue = <T extends SelectItem>({ value, multiselect }: ValueComponentProps<T>) => {\n if (multiselect) {\n return (\n <Typography noPadding nowrap variant='label'>\n {`${value.length} item${value.length === 1 ? '' : 's'} selected`}\n </Typography>\n );\n }\n\n if (value === null) {\n return null;\n }\n\n return (\n <Typography noPadding variant='label' nowrap>\n {typeof value === 'string' || typeof value === 'number' ? value : JSON.stringify(value)}\n </Typography>\n );\n};\n\nexport const Select = <T extends SelectItem>({\n // Select props\n options,\n isEqualComparator,\n searchQueryValue,\n searchQueryPlaceholder,\n onSearchQuery,\n loadMore = () => null,\n isLoading = false,\n hasNextPage = false,\n emptyMessage = 'No options to select',\n multiselect,\n optionComponent: OptionComponent = DefaultOption,\n valueComponent: ValueComponent = DefaultValue,\n maxOptions,\n children,\n // Shared props\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n showClearOption = false,\n height,\n searchQueryStyle,\n searchQueryClassName,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n autoFocus = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n readOnly = false,\n disabled = false,\n placeholder = '',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n // Field props\n ...fieldProps\n}: UnControlledSelectProps<T>) => {\n const modalRef = useRef<HTMLElement>(null);\n const isMobile = useMediaQuery('(max-width: 480px)');\n const id = useMemo(() => crypto.randomUUID(), []);\n const containerRef = useRef<HTMLElement>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n const openSelect = useCallback(\n (open: boolean) => {\n setIsOpen(open && !disabled);\n },\n [disabled],\n );\n\n const clearOption = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n\n if (multiselect) {\n setValue([]);\n } else {\n setValue(null);\n }\n },\n [multiselect, setValue],\n );\n\n const valueNonEmpty = useMemo(() => {\n if (multiselect) {\n return value.length > 0;\n } else {\n return Boolean(value);\n }\n }, [multiselect, value]);\n\n const renderedOptions = useMemo<React.ReactNode>(() => {\n if (!children)\n return options.map((value, key) => (\n <Select.Option value={value} key={key}>\n <OptionComponent value={value} />\n </Select.Option>\n ));\n\n return children;\n }, [OptionComponent, children, options]);\n\n return (\n <SelectContext.Provider\n value={\n {\n selectedValue: value,\n setValue,\n multiselect: multiselect ?? false,\n isEqualComparator,\n maxOptions: maxOptions ?? null,\n setIsOpen,\n } as SelectContextValue<unknown>\n }\n >\n <Field id={id} error={error} isFocus={isOpen} ref={containerRef} {...fieldProps}>\n <section\n id={name}\n style={style}\n onBlur={onBlur}\n className={`select ${disabled ? 'disabled' : ''} ${className}`}\n >\n <section\n id={id}\n className={`select-container ${valueNonEmpty && showClearOption ? 'three-columns' : ''}`}\n onClick={() => openSelect(true)}\n >\n <button\n type='button'\n className={`input-button ${(Array.isArray(value) ? value.length > 0 : value) ? '' : 'placeholder'}`}\n aria-haspopup='listbox'\n aria-expanded={isOpen}\n onFocus={e => {\n openSelect(true);\n\n if (onFocus) onFocus(e);\n }}\n >\n {valueNonEmpty ? (\n <ValueComponent {...(multiselect ? { value, multiselect } : { value: value })} />\n ) : (\n <Typography variant='label' noPadding nowrap>\n {placeholder}\n </Typography>\n )}\n </button>\n {valueNonEmpty && showClearOption && (\n <section className='icon-close' onClick={clearOption}>\n <ImCross />\n </section>\n )}\n <PiCaretDown className={`select-caret-icon ${isOpen && 'is-select-open'}`} />\n </section>\n <Menu\n id='form-select'\n isOpen={isOpen}\n onClose={() => openSelect(false)}\n backdrop={isMobile ? 'blur' : 'transparent'}\n opacity={isMobile ? 0.8 : 0.4}\n position={isMobile ? 'center' : 'bottom'}\n offset={5}\n modalRef={modalRef}\n windowOffset={10}\n transitionDuration={200}\n containerRef={isMobile ? undefined : containerRef}\n contentClassName='select-menu-content'\n className='select-options-menu'\n >\n <Options\n containerRef={containerRef}\n onSearchQuery={onSearchQuery}\n searchQueryValue={searchQueryValue}\n searchQueryPlaceholder={searchQueryPlaceholder}\n searchQueryClassName={searchQueryClassName}\n searchQueryStyle={searchQueryStyle}\n height={height}\n >\n <InfinityScroll\n isLoading={isLoading}\n hasNextPage={hasNextPage}\n loadMore={loadMore}\n emptyMessage={emptyMessage}\n >\n {renderedOptions}\n </InfinityScroll>\n </Options>\n </Menu>\n </section>\n </Field>\n </SelectContext.Provider>\n );\n};\n\nconst MultiSelectController = <T extends SelectItem>({\n rules,\n ...props\n}: ControllerGeneratorProps<MultiSelectProps<T>, MultiValue<T>>) => {\n return (\n <Controller<MultiSelectProps<T>, MultiValue<T>>\n Component={Select}\n defaultValue={[]}\n inputProps={{\n ...props,\n multiselect: true,\n }}\n rules={rules}\n />\n );\n};\n\nconst SingleSelectController = <T extends SelectItem>({\n rules,\n ...props\n}: ControllerGeneratorProps<SingleSelectProps<T>, SingleValue<T>>) => {\n return (\n <Controller<SingleSelectProps<T>, SingleValue<T>>\n Component={Select}\n defaultValue={null}\n inputProps={{\n ...props,\n multiselect: false,\n }}\n rules={rules}\n />\n );\n};\n\nconst SelectController = <T extends SelectItem>(props: ControllerGeneratorSelectProps<T>) => {\n const { multiselect } = props;\n\n if (multiselect) {\n return <MultiSelectController<T> {...props} multiselect={true} />;\n }\n\n return <SingleSelectController<T> {...props} multiselect={false} />;\n};\n\nSelect.Controller = SelectController;\nSelect.Option = Option;\nSelect.OptionLabel = OptionLabel;\n","import { useEffect } from 'react';\n\nimport { useDebounce, useInView } from '../../hooks';\n\nimport './infinity-scroll.styles.css';\n\ninterface InfinityScrollProps extends React.HTMLAttributes<HTMLDivElement> {\n isLoading: boolean;\n hasNextPage: boolean;\n loadMore: () => void;\n customLoadMoreElement?: (ref: React.RefObject<HTMLElement | null>) => React.ReactNode;\n emptyMessage?: string;\n children?: React.ReactNode;\n}\n\nexport const InfinityScroll = ({\n isLoading: isLoadingProp = false,\n hasNextPage = false,\n loadMore,\n customLoadMoreElement,\n emptyMessage,\n children,\n}: InfinityScrollProps) => {\n const { ref, inView } = useInView();\n const isLoading = useDebounce(isLoadingProp, 100);\n\n useEffect(() => {\n if (hasNextPage && inView && !isLoading) {\n loadMore();\n }\n }, [hasNextPage, isLoading, loadMore, inView]);\n\n const childrenExists = Array.isArray(children) ? children.length > 0 : Boolean(children);\n\n return (\n <>\n {children}\n <section className='infinity-scroll'>\n {Boolean(emptyMessage) && !childrenExists && !isLoading && <p className='empty-message'>{emptyMessage}</p>}\n {(hasNextPage || isLoading) &&\n (customLoadMoreElement ? (\n customLoadMoreElement(ref)\n ) : (\n <section ref={ref} className='loading'>\n {isLoading && <span className='loading--icon'>:D</span>}\n </section>\n ))}\n </section>\n </>\n );\n};\n","import React, { useCallback, useMemo } from 'react';\n\nimport { Menu } from '../../modals';\nimport { Typography } from '../../typography';\n\nimport { useSelectContext } from './select.component';\nimport { SelectItem } from './select.types';\n\ntype OptionProps<T extends SelectItem> = {\n children: React.ReactNode;\n value: T;\n};\n\nexport const Option = <T extends SelectItem>({ children, value }: OptionProps<T>) => {\n const { multiselect, isEqualComparator, maxOptions, selectedValue, setValue, setIsOpen } = useSelectContext<T>();\n\n const compareValuesIsEqual = useCallback(\n (a: T, b: T): boolean => {\n if (['number', 'string'].includes(typeof a)) {\n return a === b;\n }\n\n return !!isEqualComparator && isEqualComparator(a, b);\n },\n [isEqualComparator],\n );\n\n const toggleOption = useCallback(\n (isSelected: boolean) => {\n if (isSelected) {\n if (multiselect) {\n if (maxOptions && Array.isArray(selectedValue) && selectedValue.length >= maxOptions) {\n return;\n }\n\n setValue([...selectedValue, value]);\n } else {\n setValue(value);\n setIsOpen(false);\n }\n } else {\n if (multiselect) {\n setValue(selectedValue.filter(item => !compareValuesIsEqual(item, value)));\n } else {\n setValue(null);\n setIsOpen(false);\n }\n }\n },\n [multiselect, maxOptions, selectedValue, setValue, value, setIsOpen, compareValuesIsEqual],\n );\n\n const isSelected = useMemo(() => {\n if (selectedValue === '' || selectedValue === null) {\n return false;\n }\n\n if (!Array.isArray(selectedValue)) {\n return compareValuesIsEqual(value, selectedValue);\n }\n\n if (['number', 'string'].includes(typeof value)) {\n return selectedValue.includes(value);\n }\n\n return selectedValue.some(item => !!isEqualComparator && isEqualComparator(value, item));\n }, [compareValuesIsEqual, isEqualComparator, selectedValue, value]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (['Enter', ' '].includes(e.key)) {\n e.preventDefault();\n\n toggleOption(!(isSelected && multiselect));\n }\n },\n [toggleOption, isSelected, multiselect],\n );\n\n const optionLabel = useMemo(() => {\n if (typeof children === 'string') {\n return (\n <Typography data-value={value} variant='label' nowrap>\n {children}\n </Typography>\n );\n }\n\n return children;\n }, [children, value]);\n\n return (\n <Menu.Option\n label={optionLabel}\n onKeyDown={handleKeyDown}\n asCheckbox={multiselect}\n selected={isSelected}\n onClick={(selected: boolean) => toggleOption(multiselect ? selected : true)}\n />\n );\n};\n","import React, { RefObject, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { useClassNames, useEventListener, useMediaQuery, useResizeObserver } from '../../../hooks';\n\nimport { OptionsProps } from './select.types';\n\ntype UseDynamicHeight = {\n height: number;\n minHeight: number;\n containerRef: RefObject<HTMLElement | null>;\n offset: number;\n windowOffset: number;\n};\n\nconst useDynamicHeight = ({\n height,\n minHeight: defaultMinHeight,\n containerRef,\n offset,\n windowOffset,\n}: UseDynamicHeight) => {\n const [h, setH] = useState<string | undefined>(undefined);\n\n const getMaxHeight = useCallback(() => {\n const containerBottom = containerRef.current?.getBoundingClientRect().bottom ?? 0;\n\n const heightBottom = window.innerHeight - containerBottom - windowOffset - offset - 5;\n const heightTop = window.innerHeight - windowOffset * 3;\n const heightCalculated = heightBottom < defaultMinHeight ? heightTop : heightBottom;\n const maxHeight = Math.min(heightCalculated, height);\n const minHeight = Math.max(maxHeight, defaultMinHeight);\n\n setH(`${Math.round(minHeight)}px`);\n }, [containerRef, windowOffset, offset, defaultMinHeight, height]);\n\n useEffect(() => {\n getMaxHeight();\n }, [getMaxHeight]);\n\n useResizeObserver(containerRef, getMaxHeight);\n useEventListener('resize', getMaxHeight);\n\n return { h };\n};\n\nexport const Options = ({\n children,\n searchQueryValue,\n searchQueryPlaceholder = 'Search option',\n searchQueryClassName = '',\n searchQueryStyle = {},\n onSearchQuery,\n containerRef,\n height = 300,\n}: OptionsProps) => {\n const optionsGroupContainerRef = useRef<HTMLDivElement>(null);\n const optionsGroupRef = useRef<HTMLUListElement>(null);\n const [internalSearchQuery, setInternalSearchQuery] = useState('');\n const searchInputRef = useRef<HTMLInputElement>(null);\n const isMobile = useMediaQuery('(max-width: 480px)');\n\n useEventListener('keydown', e => {\n if (['ArrowDown', 'ArrowUp'].includes(e.code)) {\n e.preventDefault();\n const focusedItem = document.activeElement;\n const isListItem = focusedItem?.tagName === 'LI';\n\n if (isListItem) {\n switch (e.code) {\n case 'ArrowDown':\n (focusedItem?.nextSibling as HTMLElement)?.focus();\n\n break;\n case 'ArrowUp':\n (focusedItem?.previousElementSibling as HTMLElement)?.focus();\n\n break;\n }\n }\n }\n });\n\n const handleSearchQuery = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = e.target;\n\n if (onSearchQuery) onSearchQuery(value);\n\n setInternalSearchQuery(value);\n },\n [onSearchQuery],\n );\n\n useEffect(() => {\n if (searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, []);\n\n const { h } = useDynamicHeight({\n height,\n minHeight: 150,\n containerRef,\n offset: 5,\n windowOffset: 10,\n });\n\n const [shouldUseAuto, setShouldUseAuto] = useState(false);\n\n const calculateHeight = useCallback(() => {\n const optionsContainerHeight =\n Math.round(optionsGroupContainerRef.current?.getBoundingClientRect().height ?? 0) + 2;\n const optionsHeight = Math.round(optionsGroupRef.current?.scrollHeight ?? 0);\n\n setShouldUseAuto(optionsContainerHeight >= optionsHeight);\n }, []);\n\n useEffect(calculateHeight, [calculateHeight]);\n useResizeObserver(optionsGroupContainerRef, calculateHeight);\n useResizeObserver(optionsGroupRef, calculateHeight);\n useEventListener('resize', calculateHeight);\n\n const selectOptionsHeader = useClassNames({\n 'select-options-header': true,\n [searchQueryClassName]: Boolean(searchQueryClassName),\n });\n\n return (\n <section\n className={`select-options ${onSearchQuery ? 'with-search-query' : ''}`}\n style={\n isMobile\n ? {\n maxHeight: window.innerHeight - 100,\n width: window.innerWidth - 100,\n }\n : {\n height: shouldUseAuto ? 'auto' : h,\n maxHeight: height,\n width: containerRef.current?.offsetWidth ?? 'auto',\n }\n }\n >\n {onSearchQuery && (\n <section className={selectOptionsHeader} style={searchQueryStyle}>\n <input\n name='query'\n className='input-search'\n value={searchQueryValue ?? internalSearchQuery}\n onChange={handleSearchQuery}\n placeholder={searchQueryPlaceholder}\n onClick={e => e.stopPropagation()}\n ref={searchInputRef}\n autoFocus\n />\n </section>\n )}\n <section className='select-options-list-container' ref={optionsGroupContainerRef}>\n <ul className='select-options-list' ref={optionsGroupRef}>\n {children}\n </ul>\n </section>\n </section>\n );\n};\n","import { useMemo } from 'react';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './slider.styles.css';\n\ntype SliderProps = InputFieldProps<{\n min?: number;\n max?: number;\n step?: number;\n onlySlider?: boolean;\n}>;\n\nexport const Slider = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n min,\n max,\n step,\n onlySlider = false,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<SliderProps, number>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const onBlurInput = (e: React.FocusEvent<HTMLInputElement>) => {\n if (onBlur) onBlur(e);\n\n const parsedValue = parseInt(`${value}`);\n\n if (min !== undefined && parsedValue < min) {\n setValue(min);\n }\n\n if (max !== undefined && parsedValue > max) {\n setValue(max);\n }\n\n setValue(parsedValue);\n };\n\n const { isFocus, handlers } = useInputHandlers({\n onBlur: onBlurInput,\n onChange: e => setValue(+e.target.value),\n onFocus: onFocus,\n });\n\n const inputSliderClassName = useClassNames({\n 'input-slider': true,\n 'is-focus': isFocus,\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <section className={inputSliderClassName}>\n <input\n id={id}\n type='range'\n name={name}\n className={`slider ${className}`}\n style={style}\n value={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n min={min}\n max={max}\n step={step}\n {...handlers}\n />\n {!onlySlider && (\n <input\n id={id}\n type='number'\n name={name}\n className={`slider-number ${className}`}\n style={style}\n value={value}\n autoComplete={autoComplete}\n disabled={disabled}\n readOnly={readOnly}\n min={min}\n max={max}\n step={step}\n {...handlers}\n />\n )}\n </section>\n </Field>\n );\n};\n\nconst SliderController = ({ rules, ...props }: ControllerGeneratorProps<SliderProps, number>) => {\n return <Controller Component={Slider} defaultValue={0} inputProps={props} rules={rules} />;\n};\n\nSlider.Controller = SliderController;\n","import React, { useMemo } from 'react';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { Controller } from '../controller';\nimport { Field, InputFieldProps } from '../field';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './textarea.styles.css';\n\ntype TextareaProps = InputFieldProps<{\n rows?: number;\n resize?: React.CSSProperties['resize'];\n leftIcon?: never;\n rightIcon?: never;\n}>;\n\nexport const Textarea = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n rows = 4,\n resize = 'vertical',\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isDirty = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isTouched = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n invalid = false,\n error,\n ...fieldProps\n}: UnControlledComponentProps<TextareaProps, string>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers, isFocus } = useInputHandlers<HTMLTextAreaElement>({\n onBlur: onBlur,\n onChange: e => setValue(e.target.value),\n onFocus: onFocus,\n });\n\n const textareaClassName = useClassNames({\n textarea: true,\n [className]: Boolean(className),\n });\n\n return (\n <Field id={id} error={error} isFocus={isFocus} {...fieldProps}>\n <textarea\n id={id}\n name={name}\n className={textareaClassName}\n style={{\n resize: resize,\n ...style,\n }}\n value={value}\n rows={rows}\n {...handlers}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n />\n </Field>\n );\n};\n\nconst TextareaController = ({ rules, ...props }: ControllerGeneratorProps<TextareaProps, string>) => {\n return <Controller Component={Textarea} defaultValue='' inputProps={props} rules={rules} />;\n};\n\nTextarea.Controller = TextareaController;\n","import { useMemo } from 'react';\nimport { IconType } from 'react-icons';\n\nimport { useClassNames, useInputHandlers } from '../../../hooks';\nimport { ColorTypes, SizeTypes } from '../../component.types';\nimport { Tooltip } from '../../tooltips';\nimport { Typography } from '../../typography';\nimport { Controller } from '../controller';\nimport { ControllerGeneratorProps, UnControlledComponentProps } from '../form.types';\n\nimport './switch.styles.css';\n\nconst DotSizeMap = {\n [SizeTypes.SMALL]: 1,\n [SizeTypes.REGULAR]: 1.2,\n [SizeTypes.LARGE]: 1.4,\n};\n\nconst WidthMap = {\n [SizeTypes.SMALL]: 2,\n [SizeTypes.REGULAR]: 2.5,\n [SizeTypes.LARGE]: 3,\n};\n\ntype SwitchProps = {\n leftLabel?: string;\n rightLabel?: string;\n label?: string;\n dotHoverSize?: number;\n padding?: number;\n leftIcon?: IconType;\n rightIcon?: IconType;\n internalLeftIcon?: IconType;\n internalRightIcon?: IconType;\n leftIconTooltip?: string;\n rightIconTooltip?: string;\n color?: `${ColorTypes}`;\n size?: `${SizeTypes}`;\n width?: `${SizeTypes}`;\n};\n\nexport const Switch = ({\n name,\n value,\n setValue,\n onBlur,\n onFocus,\n className = '',\n style = {},\n autoFocus = false,\n readOnly = false,\n disabled = false,\n placeholder = '',\n autoComplete = 'off',\n label,\n leftLabel,\n rightLabel,\n width = SizeTypes.REGULAR,\n size = SizeTypes.REGULAR,\n dotHoverSize = 1.3,\n padding = 0.25,\n leftIcon: LeftIcon,\n rightIcon: RightIcon,\n internalLeftIcon: InternalLeftIcon,\n internalRightIcon: InternalRightIcon,\n leftIconTooltip,\n rightIconTooltip,\n color,\n /*\n * isDirty = false,\n * isTouched = false,\n * invalid = false,\n * error,\n */\n}: UnControlledComponentProps<SwitchProps, boolean>) => {\n const id = useMemo(() => crypto.randomUUID(), []);\n const { handlers } = useInputHandlers<HTMLInputElement>({\n onChange: e => setValue(e.target.checked),\n onBlur: onBlur,\n onFocus: onFocus,\n });\n\n const switchContainerClassName = useClassNames({\n 'switch-container': true,\n [className]: Boolean(className),\n [`color-${color}`]: Boolean(color),\n });\n\n const switchClassName = useClassNames({\n switch: true,\n 'is-checked': value,\n 'is-readonly': !disabled && readOnly,\n });\n\n const dotSize = DotSizeMap[size] ?? DotSizeMap[SizeTypes.REGULAR];\n const _width = (WidthMap[width] ?? WidthMap[SizeTypes.REGULAR]) * dotSize;\n const _padding = Math.min(padding, dotSize);\n\n return (\n <section\n className={switchContainerClassName}\n style={\n {\n ...style,\n '--width': `${_width}em`,\n '--dot-size': `${dotSize}em`,\n '--dot-hover-size': `${dotSize * Math.min(Math.max(dotHoverSize, 1), 2)}em`,\n '--padding': `${_padding}em`,\n } as React.CSSProperties\n }\n >\n {leftLabel ? (\n <Typography variant='label-form' className='switch-label' htmlFor={id}>\n {leftLabel}\n </Typography>\n ) : null}\n {LeftIcon !== undefined && (\n <Tooltip content={leftIconTooltip} disabled={!leftIconTooltip} offset={10}>\n <LeftIcon size={`${dotSize * 0.7}em`} className='switch-icon' onClick={() => setValue(!value)} />\n </Tooltip>\n )}\n <section className={switchClassName}>\n {InternalLeftIcon !== undefined && (\n <span className='switch-internal-left-icon'>\n <InternalLeftIcon size={`${dotSize * 0.7}em`} />\n </span>\n )}\n {InternalRightIcon !== undefined && (\n <span className='switch-internal-right-icon'>\n <InternalRightIcon size={`${dotSize * 0.7}em`} />\n </span>\n )}\n <span className='switch-dot' />\n <input\n id={id}\n type='checkbox'\n name={name}\n className={`switch-checkbox ${className}`}\n style={style}\n checked={value}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled || readOnly}\n {...handlers}\n />\n </section>\n {RightIcon !== undefined && (\n <Tooltip content={rightIconTooltip} disabled={!rightIconTooltip} offset={10}>\n <RightIcon size={`${dotSize * 0.7}em`} className='switch-icon' onClick={() => setValue(!value)} />\n </Tooltip>\n )}\n {label || rightLabel ? (\n <Typography variant='label-form' className='switch-label' htmlFor={id}>\n {label || rightLabel}\n </Typography>\n ) : null}\n </section>\n );\n};\n\nconst SwitchController = ({ rules, ...props }: ControllerGeneratorProps<SwitchProps, boolean>) => {\n return <Controller Component={Switch} defaultValue={false} inputProps={props} rules={rules} />;\n};\n\nSwitch.Controller = SwitchController;\n","import { useState } from 'react';\n\nimport { Tooltip, TooltipProps } from '../tooltip';\n\ntype ClickToCopyProps = {\n children?: React.ReactNode;\n position?: TooltipProps['position'];\n offset?: TooltipProps['offset'];\n value: string;\n tooltipText: string;\n tooltipCopiedText?: string;\n copiedTextTimeout?: number;\n};\n\nexport const ClickToCopy = ({\n children,\n value,\n position,\n offset,\n tooltipText,\n tooltipCopiedText,\n copiedTextTimeout = 500,\n}: ClickToCopyProps) => {\n const [justCopied, setJustCopied] = useState(false);\n\n const handleCopy = () => {\n setJustCopied(true);\n navigator.clipboard.writeText(value);\n setTimeout(() => setJustCopied(false), copiedTextTimeout);\n };\n\n return (\n <Tooltip\n content={justCopied && tooltipCopiedText ? tooltipCopiedText : tooltipText}\n position={position}\n offset={offset}\n >\n <span onClick={handleCopy}>{children}</span>\n </Tooltip>\n );\n};\n","import React, { cloneElement } from 'react';\n\nimport { PositionContainer } from '../../../helpers';\nimport { useClassNames, useEventListener, useModal } from '../../../hooks';\nimport { Modal } from '../../modals';\n\nimport './tooltip.styles.css';\n\nexport type TooltipProps = {\n position?:\n | `${PositionContainer.TOP}`\n | `${PositionContainer.LEFT}`\n | `${PositionContainer.RIGHT}`\n | `${PositionContainer.BOTTOM}`;\n offset?: number | `${number}`;\n disabled?: boolean;\n children: React.ReactElement<{\n ref: React.RefObject<HTMLElement | null>;\n }>;\n content: React.ReactNode;\n};\n\nexport const Tooltip = ({\n position = PositionContainer.TOP,\n children,\n content,\n offset = 5,\n disabled = false,\n}: TooltipProps) => {\n const { containerRef, openModal, closeModal, isOpen } = useModal();\n\n const classNames = useClassNames({\n tooltip: true,\n [position]: true,\n });\n\n useEventListener('mouseenter', () => openModal(), containerRef);\n useEventListener('mouseleave', () => closeModal(), containerRef);\n\n if (disabled) return children;\n\n return (\n <>\n {cloneElement(children, { ref: containerRef })}\n\n <Modal\n backdrop='none'\n id='tooltip'\n isOpen={isOpen}\n containerRef={containerRef}\n onClose={closeModal}\n position={position}\n className={classNames}\n closeOnClickOutside={false}\n offset={6 + +offset}\n windowOffset={10}\n transitionDuration={100}\n closeAnimationClassName='close-animation'\n >\n <span className='tooltip-content'>{content}</span>\n </Modal>\n </>\n );\n};\n","import { DetailedHTMLProps, ImgHTMLAttributes } from 'react';\n\ntype ImageProps = DetailedHTMLProps<ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> & {};\n\nexport const Image = ({ alt = '', loading = 'eager', ...props }: ImageProps) => {\n return <img loading={loading} alt={alt} {...props} width='100%' />;\n};\n","import { useMemo, useState } from 'react';\n\nimport { useClassNames } from '../../hooks';\nimport { KeyValuesOf } from '../../types';\nimport { Checkbox } from '../form';\n\nimport { SmartTableColumn } from './smart-table.column';\nimport { sortData } from './smart-table.helpers';\nimport { useSort } from './smart-table.hooks';\nimport { SmartTableRow } from './smart-table.row';\nimport './smart-table.styles.css';\nimport { ColumnData, RowDataObject } from './smart-table.types';\n\ntype SmartTableProps<RowData extends RowDataObject> = {\n columns: Array<ColumnData<RowData>>;\n data: Array<RowData>;\n width?: 'scroll' | 'content';\n selectable?: boolean;\n rowId: KeyValuesOf<RowData, React.Key>;\n className?: string;\n tableClassName?: string;\n};\n\nexport const SmartTable = <RowData extends RowDataObject>({\n columns: initialColumns,\n data,\n width,\n selectable = false,\n rowId,\n className = '',\n tableClassName: _tableClassName = '',\n}: SmartTableProps<RowData>) => {\n const [selected, setSelected] = useState<{ [key: string]: RowData }>({});\n\n const tableClassName = useClassNames({\n 'smart-table': true,\n [_tableClassName]: Boolean(_tableClassName),\n 'layout-fixed': width === 'content',\n 'layout-scrollable': width === 'scroll',\n });\n\n const tableContainerClassName = useClassNames({\n 'smart-table-container': true,\n [className]: Boolean(className),\n });\n\n const { sortBy, order, toggleSortField } = useSort<RowData>();\n\n const columns = useMemo(() => {\n let finalColumns = [...initialColumns];\n\n if (selectable) {\n finalColumns = [\n {\n header: `${Object.values(selected).length}`,\n render: (data, rowKey) => (\n <Checkbox\n name={`selected-${rowKey}`}\n value={`${rowKey}` in selected}\n setValue={isSelected => {\n setSelected(prev => {\n const copy = { ...prev };\n\n if (isSelected) {\n copy[`${rowKey}`] = data;\n } else {\n delete copy[`${rowKey}`];\n }\n\n return copy;\n });\n }}\n />\n ),\n },\n ...finalColumns,\n ];\n }\n\n return finalColumns;\n }, [initialColumns, selectable, selected]);\n\n const rows = useMemo(() => sortData<RowData>(data, sortBy, order), [data, sortBy, order]);\n\n return (\n <section className={tableContainerClassName}>\n <table className={tableClassName}>\n <thead>\n <tr>\n {columns.map((column, key) => (\n <SmartTableColumn\n key={key}\n toggleSortField={toggleSortField}\n sortField={sortBy}\n orderField={order}\n {...column}\n />\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map(row => (\n <SmartTableRow\n key={row[rowId] as React.Key}\n rowKey={row[rowId] as React.Key}\n data={row}\n columns={columns}\n isSelected={`${row[rowId] as React.Key}` in selected}\n selectable={selectable}\n />\n ))}\n </tbody>\n </table>\n </section>\n );\n};\n","import { useMemo } from 'react';\nimport { MdArrowDownward, MdArrowUpward } from 'react-icons/md';\n\nimport { useClassNames } from '../../hooks';\nimport { Grid } from '../../layouts';\nimport { Ripple } from '../ripple';\nimport { Typography } from '../typography';\n\nimport { ColumnData, Order, RowDataObject } from './smart-table.types';\n\ntype SmartTableColumnProps<RowData extends RowDataObject> = ColumnData<RowData> & {\n toggleSortField: (field: ColumnData<RowData>['sortBy']) => void;\n sortField: ColumnData<RowData>['sortBy'] | null;\n orderField: Order | null;\n};\n\nexport const SmartTableColumn = <RowData extends RowDataObject>({\n header,\n sortBy,\n icon: Icon,\n width,\n field,\n toggleSortField,\n sortField,\n orderField,\n hidden,\n}: SmartTableColumnProps<RowData>) => {\n const sortByKey = sortBy !== undefined ? sortBy : field;\n\n const columnClassName = useClassNames({\n 'sort-on-click': Boolean(sortByKey),\n });\n\n const columnOnClick = sortByKey ? () => toggleSortField(sortByKey) : undefined;\n\n const sortIcon = useMemo(() => {\n if (!sortByKey) return null;\n\n return (\n <span className='sort-icon'>\n {Boolean(sortField) &&\n sortField === sortByKey &&\n (orderField === 'asc' ? <MdArrowUpward /> : <MdArrowDownward />)}\n </span>\n );\n }, [sortByKey, sortField, orderField]);\n\n if (hidden) return null;\n\n return (\n <th style={{ width }} className={columnClassName} onClick={columnOnClick}>\n <Grid flow='column' gap='0.5em' jc='space-between' ai='center'>\n {Icon ? <Icon /> : null}\n <Typography variant='label' noPadding>\n {header}\n </Typography>\n {sortIcon}\n </Grid>\n <Ripple color='var(--primary-700)' />\n </th>\n );\n};\n","import React from 'react';\n\nimport { Typography } from '../typography';\n\nimport { ColumnData, Order, Primitive, RowDataObject } from './smart-table.types';\n\nconst renderRowColumn = <RowData extends RowDataObject>(\n data: RowData,\n { field, render, Component }: ColumnData<RowData>,\n rowKey: React.Key,\n): React.ReactNode => {\n if (field && data[field])\n return (\n <Typography noPadding nowrap>\n {data[field] as Primitive}\n </Typography>\n );\n\n if (render) return render(data, rowKey);\n\n if (Component) return <Component data={data} rowKey={rowKey} />;\n};\n\nexport const renderRow = <RowData extends RowDataObject>(\n data: RowData,\n columns: Array<ColumnData<RowData>>,\n rowKey: React.Key,\n) => columns.map((column, key) => (column.hidden ? null : <td key={key}>{renderRowColumn(data, column, rowKey)}</td>));\n\nexport const sortData = <RowData extends RowDataObject>(\n data: Array<RowData>,\n sortBy: ColumnData<RowData>['sortBy'] | null,\n order: Order | null,\n) => {\n if (sortBy) {\n return data.toSorted((a, b) => {\n const fieldA = a[sortBy];\n const fieldB = b[sortBy];\n\n if (\n ['number', 'boolean', 'string'].includes(typeof fieldA) &&\n ['number', 'boolean', 'string'].includes(typeof fieldB)\n ) {\n if (fieldA === fieldB) return 0;\n\n if (order === 'asc') {\n return fieldA > fieldB ? 1 : -1;\n }\n\n return fieldA > fieldB ? -1 : 1;\n }\n\n return 0;\n });\n }\n\n return data;\n};\n","import { useCallback, useState } from 'react';\n\nimport { ColumnData, Order, RowDataObject } from './smart-table.types';\n\nexport const useSort = <RowData extends RowDataObject>() => {\n const [[sortBy, order], setSortField] = useState<[ColumnData<RowData>['sortBy'] | null, Order | null]>([null, null]);\n\n const toggleSortField = useCallback((sortByField: ColumnData<RowData>['sortBy']) => {\n setSortField(([sortBy, order]) => {\n if (sortByField !== sortBy) {\n return [sortByField, 'asc'];\n }\n\n if (order === 'asc') {\n return [sortByField, 'desc'];\n }\n\n return [null, null];\n });\n }, []);\n\n return {\n sortBy,\n order,\n toggleSortField,\n };\n};\n","import React from 'react';\n\nimport { useClassNames } from '../../hooks';\n\nimport { renderRow } from './smart-table.helpers';\nimport { ColumnData, RowDataObject } from './smart-table.types';\n\ntype SmartTableRowProps<RowData extends RowDataObject> = {\n data: RowData;\n columns: Array<ColumnData<RowData>>;\n isSelected: boolean;\n selectable: boolean;\n rowKey: React.Key;\n};\n\nexport const SmartTableRow = <RowData extends RowDataObject>({\n data,\n columns,\n isSelected = false,\n selectable = false,\n rowKey,\n}: SmartTableRowProps<RowData>) => {\n const rowClassName = useClassNames({\n 'row-selected': selectable && isSelected,\n });\n\n return <tr className={rowClassName}>{renderRow(data, columns, rowKey)}</tr>;\n};\n","import React, { createContext, useContext, useEffect, useState } from 'react';\n\nimport { useClassNames } from '../../hooks';\n\nimport { TabsList as TabListComponent, TabListProps } from './tabs-list';\nimport './tabs.styles.css';\n\ntype TabsContextState = {\n openTab: string;\n changeOpenTab: (id: string) => void;\n};\n\nconst TabsContext = createContext<TabsContextState | null>(null);\n\nconst useTab = (id: string): [boolean, () => void] => {\n const context = useContext(TabsContext);\n\n if (!context) {\n throw new Error('You cant use this component out off an Tabs component');\n }\n\n const { openTab, changeOpenTab } = context;\n\n return [openTab === id, () => changeOpenTab(id)];\n};\n\nconst useTabsContext = (): TabsContextState => {\n const context = useContext(TabsContext);\n\n if (!context) {\n throw new Error('You cant use this component out off an Tabs component');\n }\n\n return context;\n};\n\ntype TabsProps = {\n children: React.ReactNode;\n defaultOpenTab: string;\n onChange?: (id: string) => void;\n};\n\nexport const Tabs = ({ children, defaultOpenTab, onChange }: TabsProps) => {\n const [openTab, setOpenTab] = useState(defaultOpenTab);\n\n useEffect(() => {\n if (onChange) {\n onChange(openTab);\n }\n }, [openTab, onChange]);\n\n return (\n <TabsContext.Provider\n value={{\n openTab,\n changeOpenTab: id => setOpenTab(id),\n }}\n >\n {children}\n </TabsContext.Provider>\n );\n};\n\ntype TabProps = {\n id: string;\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n onClick?: (e: React.MouseEvent<HTMLSpanElement>) => void;\n ref?: React.RefObject<HTMLSpanElement | null>;\n};\n\nconst Tab = ({ id, children, className = '', style = {}, onClick, ref }: TabProps) => {\n const [isOpen, openTab] = useTab(id);\n const tabClassNames = useClassNames({\n tab: true,\n [className]: !!className,\n 'is-open': isOpen,\n });\n\n const handleClick = (e: React.MouseEvent<HTMLSpanElement>) => {\n openTab();\n\n if (onClick) {\n onClick(e);\n }\n };\n\n return (\n <span className={tabClassNames} style={style} onClick={handleClick} ref={ref}>\n {children}\n </span>\n );\n};\n\ntype TabPanelProps = {\n id: string;\n children: React.ReactNode;\n};\n\nconst TabPanel = ({ id, children }: TabPanelProps) => {\n const [isOpen] = useTab(id);\n\n return isOpen ? children : null;\n};\n\nconst TabList = ({ children, ...props }: Omit<TabListProps, 'openTab'>) => {\n const { openTab } = useTabsContext();\n\n return (\n <TabListComponent {...props} openTab={openTab}>\n {children}\n </TabListComponent>\n );\n};\n\nTabs.Tab = Tab;\nTabs.TabPanel = TabPanel;\nTabs.TabList = TabList;\n","import React, { useEffect, useRef, useState } from 'react';\n\nimport { useClassNames } from '../../hooks';\n\nimport { Tabs } from './tabs';\n\nexport enum RadiusVariants {\n None = 'none',\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n Full = 'full',\n}\n\nexport enum SizeVariants {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\nconst DefaultRect = {\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n};\n\nexport enum TabListVariant {\n SOLID = 'solid',\n GHOST = 'ghost',\n FLAT = 'flat',\n LINE = 'line',\n}\n\nexport enum TabListColor {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n TERTIARY = 'tertiary',\n}\n\nexport enum TabListDirection {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\nexport type TabListProps = {\n openTab: string;\n variant?: `${TabListVariant}`;\n children?: React.ReactNode;\n size?: `${SizeVariants}`;\n color?: `${TabListColor}`;\n radius?: `${RadiusVariants}`;\n direction?: `${TabListDirection}`;\n className?: string;\n style?: React.CSSProperties;\n tabs?: Array<{\n id: string;\n label: React.ReactNode;\n }>;\n};\n\nexport const TabsList = ({\n tabs = [],\n variant = TabListVariant.SOLID,\n radius = RadiusVariants.Full,\n direction = TabListDirection.HORIZONTAL,\n color,\n children,\n openTab,\n size = SizeVariants.Medium,\n className = '',\n style = {},\n}: TabListProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const selectedTabRef = useRef<HTMLSpanElement>(null);\n const [isSelectorActive, setIsSelectorActive] = useState(false);\n const [selector, setSelector] = useState(DefaultRect);\n const containerClassNames = useClassNames({\n 'tab-list': true,\n [`variant-${variant}`]: Boolean(variant),\n [`size-${size}`]: Boolean(size),\n [`radius-${radius}`]: Boolean(radius),\n [`color-${color}`]: Boolean(color),\n 'vertical-direction': direction === TabListDirection.VERTICAL,\n [className]: Boolean(className),\n });\n\n useEffect(() => {\n const selectedRect = selectedTabRef.current?.getBoundingClientRect() ?? DefaultRect;\n const containerRect = containerRef.current?.getBoundingClientRect() ?? DefaultRect;\n\n const width = selectedRect.width;\n const height = variant === TabListVariant.LINE ? 2 : selectedRect.height;\n const left = selectedRect.left - containerRect.left;\n const top =\n variant === TabListVariant.LINE\n ? selectedRect.top + selectedRect.height - containerRect.top\n : selectedRect.top - containerRect.top;\n\n setSelector({ left, top, width, height });\n\n if (!isSelectorActive) {\n setTimeout(() => {\n setIsSelectorActive(true);\n }, 100);\n }\n }, [isSelectorActive, variant, openTab]);\n\n return (\n <section className={containerClassNames} ref={containerRef} style={style}>\n {Boolean(variant) && <span className={`tabs-selector ${isSelectorActive ? 'active' : ''}`} style={selector} />}\n {tabs.map(({ id, label }) => (\n <Tabs.Tab key={id} id={id} ref={id === openTab ? selectedTabRef : undefined}>\n {label}\n </Tabs.Tab>\n ))}\n {children}\n </section>\n );\n};\n","import { useClassNames } from '../../hooks';\n\nimport './tag.styles.css';\n\nexport enum TagRounded {\n NONE = 'none',\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large',\n FULL = 'full',\n}\n\ninterface TagProps extends React.HTMLAttributes<HTMLSpanElement> {\n children: React.ReactNode;\n selected?: boolean;\n rounded?: `${TagRounded}`;\n noWrap?: boolean;\n ref?: React.Ref<HTMLElement>;\n}\n\nexport const Tag = ({ children, rounded = TagRounded.MEDIUM, selected = false, noWrap = false, ref }: TagProps) => {\n const className = useClassNames({\n tag: true,\n [`rounded-${rounded}`]: Boolean(rounded),\n 'is-selected': selected,\n 'no-wrap': noWrap,\n });\n\n return (\n <span className={className} ref={ref}>\n {children}\n </span>\n );\n};\n"],"mappings":";;;AAAA,SAAgB,eAAe,eAAAA,cAAa,YAAY,WAAAC,UAAS,YAAAC,iBAAgB;;;ACAjF,SAAS,eAAe;AAEjB,IAAM,gBAAgB,CAAC,YAC5B;AAAA,EACE,MACE,OAAO,QAAQ,OAAO,EACnB;AAAA,IACC,CAAC,oBAAoB,CAAC,WAAW,KAAK,MAAO,QAAQ,CAAC,GAAG,oBAAoB,SAAS,IAAI;AAAA,IAC1F,CAAC;AAAA,EACH,EACC,KAAK,GAAG;AAAA,EACb,CAAC,OAAO;AACV;;;ACZF,SAAoB,WAAW,iBAAiB,cAAc;AA8B9D,SAAS,iBAOP,WACA,UAQA,SACA,SACA;AACA,QAAM,cAAc,OAAsB,QAAQ;AAElD,YAAU,MAAM;AACd,gBAAY,UAAU;AAAA,EACxB,GAAG,CAAC,QAAQ,CAAC;AAEb,kBAAgB,MAAM;AACpB,UAAM,gBAAgB,SAAS,WAAW;AAE1C,QAAI,EAAE,iBAAiB,cAAc,kBAAmB;AAExD,UAAM,WAA4B,WAAS,YAAY,QAAQ,KAAK;AAEpE,kBAAc,iBAAiB,WAAW,UAAU,OAAO;AAE3D,WAAO,MAAM;AACX,oBAAc,oBAAoB,WAAW,UAAU,OAAO;AAAA,IAChE;AAAA,EACF,GAAG,CAAC,WAAW,SAAS,OAAO,CAAC;AAClC;;;AChEA,IAAM,iBAAiB,CAAC,KAAoC,WAAiB;AAC3E,SAAO,IAAI,WAAW,CAAC,IAAI,QAAQ,SAAS,MAAM;AACpD;AAEO,IAAM,kBAAkB,CAC7B,KACA,aACG;AACH,mBAAiB,WAAW,OAAK;AAC/B,QAAI,EAAE,QAAQ,UAAU;AACtB,eAAS;AAAA,IACX;AAAA,EACF,CAAC;AAED,mBAAiB,aAAa,WAAS;AACrC,UAAM,SAAS,MAAM;AAErB,QAAI,CAAC,QAAQ,aAAa;AACxB;AAAA,IACF;AAEA,UAAM,aAAa,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,OAAK,eAAe,GAAG,MAAM,CAAC;AAEzF,QAAI,WAAW;AACb,eAAS;AAAA,IACX;AAAA,EACF,CAAC;AACH;;;AC/BA,SAAS,aAAAC,YAAW,gBAAgB;AAE7B,IAAM,cAAc,CAAI,OAAU,QAAgB,QAAW;AAClE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAY,KAAK;AAE7D,EAAAA,WAAU,MAAM;AACd,UAAM,QAAQ,WAAW,MAAM,kBAAkB,KAAK,GAAG,KAAK;AAE9D,WAAO,MAAM;AACX,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,OAAO,KAAK,CAAC;AAEjB,SAAO;AACT;;;ACdA,SAAoB,aAAAC,kBAAiB;AAE9B,IAAM,oBAAoB,CAC/B,KACA,aACG;AACH,EAAAA,WAAU,MAAM;AACd,UAAM,OAAO,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG;AAE5C,UAAM,WAAW,IAAI,eAAe,QAAQ;AAE5C,SAAK,QAAQ,OAAK,EAAE,WAAW,SAAS,QAAQ,EAAE,OAAO,CAAC;AAE1D,WAAO,MAAM;AACX,eAAS,WAAW;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,KAAK,QAAQ,CAAC;AACpB;;;ACjBA,SAAS,aAAAC,YAAW,YAAAC,iBAAgB;AAEpC,IAAM,kBAAkB,CAAC,gBAAwB;AAC/C,MAAI,eAAe,SAAS,eAAe,WAAW;AAEtD,MAAI,iBAAiB,MAAM;AACzB,mBAAe,SAAS,cAAc,KAAK;AAC3C,iBAAa,aAAa,MAAM,WAAW;AAC3C,aAAS,KAAK,YAAY,YAAY;AAAA,EACxC;AAEA,SAAO;AACT;AAEO,IAAM,kBAAkB,CAAC,gBAAwB;AACtD,QAAM,CAAC,WAAW,YAAY,IAAIA,UAA6B,MAAM,gBAAgB,WAAW,CAAC;AAEjG,EAAAD,WAAU,MAAM;AACd,UAAM,eAAe,SAAS,eAAe,WAAW;AAExD,QAAI,cAAc,QAAQ,iBAAiB,MAAM;AAC/C,YAAME,gBAAe,gBAAgB,WAAW;AAEhD,mBAAaA,aAAY;AAAA,IAC3B;AAEA,WAAO,MAAM;AACX,UAAI,aAAa,UAAU,cAAc,QAAQ,IAAI,aAAa,cAAc;AAC9E,iBAAS,KAAK,YAAY,SAAS;AAAA,MACrC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,WAAW,CAAC;AAE3B,SAAO;AACT;;;AClCO,IAAM,cAAc,CAAC,OAAe,WAAW,MAAM;AAC1D,MAAI,UAAU,EAAG,QAAO;AAExB,QAAM,IAAI;AACV,QAAM,KAAK,WAAW,IAAI,IAAI;AAC9B,QAAM,QAAQ,CAAC,SAAS,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAEtE,QAAM,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC;AAElD,SAAO,YAAY,QAAQ,KAAK,IAAI,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,MAAM,MAAM,CAAC;AACzE;;;AC0CO,IAAM,mBAAmB,CAAC,EAAE,GAAG,GAAG,QAAQ,SAAS,MAA6C;AAErG,MAAI,MAAM,EAAE,IAAI,EAAE,IAAI;AACtB,MAAI,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK;AAErC,UAAQ,UAAU;AAAA,IAChB,KAAK;AAAA,IACL,KAAK;AACH,YAAM,EAAE,IAAI,EAAE,IAAI;AAClB,aAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;AAE3B;AAAA,IACF,KAAK;AACH,YAAM,EAAE,IAAI,EAAE,IAAI;AAClB,aAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AAErB;AAAA,IAEF,KAAK;AACH,YAAM,EAAE,IAAI,EAAE,IAAI;AAClB,aAAO,EAAE;AAET;AAAA,IAEF,KAAK;AAAA,IACL,KAAK;AACH,YAAM,EAAE,IAAI,EAAE,IAAI;AAClB,aAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;AAE3B;AAAA,IAEF,KAAK;AACH,YAAM,EAAE,IAAI,EAAE,IAAI;AAClB,aAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AAErB;AAAA,IAEF,KAAK;AACH,YAAM,EAAE,IAAI,EAAE,IAAI;AAClB,aAAO,EAAE;AAET;AAAA,IAEF,KAAK;AAAA,IACL,KAAK;AACH,YAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;AAC1B,aAAO,EAAE,IAAI,EAAE,IAAI;AAEnB;AAAA,IAEF,KAAK;AACH,YAAM,EAAE,IAAI,EAAE,IAAI,EAAE;AACpB,aAAO,EAAE,IAAI,EAAE,IAAI;AAEnB;AAAA,IAEF,KAAK;AACH,YAAM,EAAE;AACR,aAAO,EAAE,IAAI,EAAE,IAAI;AAEnB;AAAA,IAEF,KAAK;AAAA,IACL,KAAK;AACH,YAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;AAC1B,aAAO,EAAE,IAAI,EAAE,IAAI;AAEnB;AAAA,IAEF,KAAK;AACH,YAAM,EAAE,IAAI,EAAE,IAAI,EAAE;AACpB,aAAO,EAAE,IAAI,EAAE,IAAI;AAEnB;AAAA,IAEF,KAAK;AACH,YAAM,EAAE;AACR,aAAO,EAAE,IAAI,EAAE,IAAI;AAEnB;AAAA,EACJ;AAEA,SAAO;AAAA,IACL,MAAM,KAAK,MAAM,IAAI;AAAA,IACrB,KAAK,KAAK,MAAM,GAAG;AAAA,EACrB;AACF;AAEO,IAAM,sBAAsB,CACjC,EAAE,KAAK,KAAK,GACZ,UACA,cACA,MACG;AACH,QAAM,YAAY,SAAS,MAAM,GAAG;AACpC,QAAM,cAAc,CAAC;AACrB,QAAM,cAAc,OAAO,EAAE,IAAI,eAAe,OAAO;AACvD,QAAM,eAAe,MAAM,EAAE,IAAI,eAAe,OAAO;AAEvD,aAAW,KAAK,WAAW;AACzB,QAAI,MAAM,mBAAyB,MAAM,cAAc;AACrD,kBAAY,KAAK,qBAAwB;AAAA,IAC3C,WAAW,MAAM,qBAA0B,OAAO,cAAc;AAC9D,kBAAY,KAAK,mBAAuB;AAAA,IAC1C,WAAW,MAAM,yBAA4B,eAAe,GAAG;AAC7D,kBAAY,KAAK,eAAqB;AAAA,IACxC,WAAW,MAAM,uBAA2B,cAAc,GAAG;AAC3D,kBAAY,KAAK,iBAAsB;AAAA,IACzC,OAAO;AACL,kBAAY,KAAK,CAAC;AAAA,IACpB;AAAA,EACF;AAEA,SAAO,YAAY,KAAK,GAAG;AAC7B;AAEO,IAAM,mBAAmB,CAAC,EAAE,KAAK,KAAK,GAAkB,GAAmB,iBAAyB;AACzG,QAAM,cAAc,OAAO,EAAE,IAAI,eAAe,OAAO;AACvD,QAAM,eAAe,MAAM,EAAE,IAAI,eAAe,OAAO;AAEvD,SAAO,cAAc,IAAI,OAAO,cAAc;AAC9C,QAAM,eAAe,IAAI,MAAM,eAAe;AAE9C,SAAO,OAAO,eAAe,eAAe;AAC5C,QAAM,MAAM,eAAe,eAAe;AAE1C,SAAO,EAAE,KAAK,KAAK;AACrB;AAMO,IAAM,sCAAsC,CAAC;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAyE;AACvE,QAAM,SAAS,EAAE,GAAG,GAAG,QAAQ,SAAS;AACxC,MAAI,sBAAsB,iBAAiB,MAAM;AAEjD,QAAM,mBAAmB,oBAAoB,qBAAqB,UAAU,cAAc,CAAC;AAE3F,MAAI,qBAAqB,UAAU;AACjC,0BAAsB,iBAAiB;AAAA,MACrC,GAAG;AAAA,MACH,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAEA,QAAM,gBAAgB,iBAAiB,qBAAqB,GAAG,YAAY;AAE3E,SAAO;AAAA,IACL,MAAM,GAAG,cAAc,IAAI;AAAA,IAC3B,KAAK,GAAG,cAAc,GAAG;AAAA,EAC3B;AACF;;;AC3MO,IAAM,mCAAmC,CAAC;AAAA,EAC/C;AAAA,EACA;AACF,MAAsE;AACpE,UAAQ,UAAU;AAAA,IAChB;AACE,aAAO;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN,WAAW;AAAA,MACb;AAAA,IAEF;AAAA,IACA;AACE,aAAO;AAAA,QACL,KAAK,GAAG,YAAY;AAAA,QACpB,MAAM;AAAA,QACN,WAAW;AAAA,MACb;AAAA,IAEF;AAAA,IACA;AACE,aAAO;AAAA,QACL,KAAK,GAAG,YAAY;AAAA,QACpB,MAAM,GAAG,YAAY;AAAA,MACvB;AAAA,IAEF;AAAA,IACA;AACE,aAAO;AAAA,QACL,KAAK,GAAG,YAAY;AAAA,QACpB,OAAO,GAAG,YAAY;AAAA,MACxB;AAAA,IAEF;AAAA,IACA;AACE,aAAO;AAAA,QACL,QAAQ,GAAG,YAAY;AAAA,QACvB,MAAM;AAAA,QACN,WAAW;AAAA,MACb;AAAA,IAEF;AAAA,IACA;AACE,aAAO;AAAA,QACL,QAAQ,GAAG,YAAY;AAAA,QACvB,MAAM,GAAG,YAAY;AAAA,MACvB;AAAA,IAEF;AAAA,IACA;AACE,aAAO;AAAA,QACL,QAAQ,GAAG,YAAY;AAAA,QACvB,OAAO,GAAG,YAAY;AAAA,MACxB;AAAA,IAEF;AAAA,IACA;AACE,aAAO;AAAA,QACL,KAAK;AAAA,QACL,MAAM,GAAG,YAAY;AAAA,QACrB,WAAW;AAAA,MACb;AAAA,IAEF;AAAA,IACA;AACE,aAAO;AAAA,QACL,KAAK;AAAA,QACL,OAAO,GAAG,YAAY;AAAA,QACtB,WAAW;AAAA,MACb;AAAA,EACJ;AAEA,SAAO;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,WAAW;AAAA,EACb;AACF;;;ACrFA,SAAS,UAAAC,SAAQ,YAAAC,iBAAgB;;;ACAjC,SAAoB,aAAAC,kBAAiB;AAE9B,IAAM,0BAA0B,CACrC,KACA,UACA,cAAwC,CAAC,MACtC;AACH,EAAAA,WAAU,MAAM;AACd,UAAM,OAAO,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG;AAE5C,UAAM,WAAW,IAAI,qBAAqB,UAAU,WAAW;AAE/D,SAAK,QAAQ,OAAK,EAAE,WAAW,SAAS,QAAQ,EAAE,OAAO,CAAC;AAE1D,WAAO,MAAM;AACX,eAAS,WAAW;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,UAAU,aAAa,GAAG,CAAC;AACjC;;;ADdO,IAAM,YAAY,CAAC,cAAwC,CAAC,MAAM;AACvE,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAAS,KAAK;AAC1C,QAAM,MAAMC,QAAoB,IAAI;AAEpC;AAAA,IACE;AAAA,IACA,CAAC,CAAC,KAAK,MAAM;AACX,gBAAU,MAAM,cAAc;AAAA,IAChC;AAAA,IACA;AAAA,EACF;AAEA,SAAO,EAAE,KAAK,OAAO;AACvB;;;AEjBA,SAAgB,aAAa,YAAAC,iBAAgB;AAUtC,IAAM,mBAAmB,CAAuB;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AACF,IAA8B,CAAC,MAAM;AACnC,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAE5C,QAAM,cAAc;AAAA,IAClB,CAAC,MAA2B;AAC1B,iBAAW,IAAI;AAEf,iBAAW,QAAQ,CAAC;AAAA,IACtB;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,aAAa;AAAA,IACjB,CAAC,MAA2B;AAC1B,iBAAW,KAAK;AAEhB,gBAAU,OAAO,CAAC;AAAA,IACpB;AAAA,IACA,CAAC,MAAM;AAAA,EACT;AAEA,QAAM,eAAe;AAAA,IACnB,CAAC,MAA4B;AAE3B,kBAAY,SAAS,CAAC;AAAA,IACxB;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,SAAO;AAAA,IACL;AAAA,IACA,UAAU;AAAA,MACR,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ;AAAA,EACF;AACF;;;ACnDA,SAAS,aAAAC,YAAW,YAAAC,iBAAgB;AAE7B,IAAM,gBAAgB,CAAC,UAA2B;AACvD,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAE5C,EAAAD,WAAU,MAAM;AACd,UAAM,QAAQ,OAAO,WAAW,KAAK;AAErC,QAAI,MAAM,YAAY,SAAS;AAC7B,iBAAW,MAAM,OAAO;AAAA,IAC1B;AAEA,UAAM,WAAW,MAAM;AACrB,iBAAW,MAAM,OAAO;AAAA,IAC1B;AAEA,UAAM,iBAAiB,UAAU,QAAQ;AAEzC,WAAO,MAAM;AACX,YAAM,oBAAoB,UAAU,QAAQ;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,SAAS,KAAK,CAAC;AAEnB,SAAO;AACT;;;ACxBA,SAAS,UAAAE,SAAQ,YAAAC,iBAAgB;AAE1B,IAAM,WAAW,MAA6B;AACnD,QAAM,eAAeD,QAAU,IAAI;AACnC,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAAS,KAAK;AAE1C,QAAM,YAAY,MAAM;AACtB,cAAU,IAAI;AAAA,EAChB;AAEA,QAAM,aAAa,MAAM;AACvB,cAAU,KAAK;AAAA,EACjB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACpBA,SAAoB,eAAAC,cAAa,mBAAAC,kBAAiB,UAAAC,eAAc;AAYhE,IAAM,2BAA2B,CAAC,UAA2C;AAAA,EAC3E,GAAG,KAAK;AAAA,EACR,GAAG,KAAK;AAAA,EACR,GAAG,KAAK;AAAA,EACR,GAAG,KAAK;AAAA,EACR,KAAK,KAAK;AAAA,EACV,MAAM,KAAK;AACb;AAcO,IAAM,sBAAsB,CAGjC;AAAA,EACA,SAAS;AAAA,EACT,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAmD;AACjD,QAAM,uBAAuBC,QAAkB,IAAI;AAEnD,QAAM,cAAcC;AAAA,IAClB,CAACC,WAAmCC,kBAA8C;AAChF,YAAM,QAAQD,UAAS,SAAS,eAAe,EAAE,CAAC;AAClD,YAAM,YAAYC,cAAa,SAAS,eAAe,EAAE,CAAC;AAE1D,UAAI,CAAC,OAAO;AACV;AAAA,MACF;AAEA,YAAM,aAAqC,CAAC,YACxC,iCAAiC,EAAE,UAAyC,aAAa,CAAC,IAC1F,oCAAoC;AAAA,QAClC,GAAG,yBAAyB,SAAS;AAAA,QACrC,GAAG,yBAAyB,KAAK;AAAA,QACjC;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAEL,aAAO,KAAK,UAAU,EAAE,QAAQ,SAAO;AACrC,QAAAD,UAAS,SAAS,MAAM,YAAY,KAAK,WAAW,GAAG,CAAC;AAAA,MAC1D,CAAC;AAAA,IACH;AAAA,IACA,CAAC,UAAU,cAAc,MAAM;AAAA,EACjC;AAEA,QAAM,WAAWD,aAAY,MAAM;AACjC,QAAI,QAAQ;AACV,kBAAY,UAAU,gBAAgB,oBAAoB;AAAA,IAC5D;AAAA,EACF,GAAG,CAAC,aAAa,QAAQ,cAAc,QAAQ,CAAC;AAEhD,EAAAG,iBAAgB,UAAU,CAAC,QAAQ,CAAC;AAEpC,oBAA6B,gBAAgB,sBAAsB,QAAQ;AAC3E,oBAAyB,UAAU,QAAQ;AAC3C,mBAAiB,UAAU,QAAQ;AACnC,mBAAiB,UAAU,UAAU,QAAQ;AAC/C;;;ACpFA,OAAOC,UAAS,eAAAC,cAAa,aAAAC,YAAW,mBAAAC,kBAAiB,WAAAC,gBAAe;AAcjE,IAAM,qBAAqB,CAAC,EAAE,qBAAqB,GAAG,OAAO,MAAgC;AAClG,QAAM,CAAC,YAAY,aAAa,IAAIC,OAAM,SAAqB,qBAAiB;AAEhF,QAAM,YAAYC,SAAQ,MAAM;AAC9B,WAAO,eAAe;AAAA,EACxB,GAAG,CAAC,UAAU,CAAC;AAEf,EAAAC,WAAU,MAAM;AACd,aAAS,gBAAgB,MAAM,WAAW,YAAY,WAAW;AAAA,EACnE,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,aAAaC,aAAY,MAAM;AACnC,QAAI,CAAC,yBAAoB,iBAAe,EAAE,SAAS,UAAU,GAAG;AAC9D,UAAI,qBAAqB,GAAG;AAC1B,sBAAc,uBAAkB;AAChC,mBAAW,MAAM;AACf,wBAAc,qBAAiB;AAAA,QACjC,GAAG,kBAAkB;AAAA,MACvB,OAAO;AACL,sBAAc,qBAAiB;AAAA,MACjC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,YAAY,kBAAkB,CAAC;AAEnC,QAAM,YAAYA,aAAY,MAAM;AAClC,QAAI,CAAC,yBAAoB,qBAAiB,EAAE,SAAS,UAAU,GAAG;AAChE,UAAI,qBAAqB,GAAG;AAC1B,sBAAc,uBAAkB;AAChC,mBAAW,MAAM;AACf,wBAAc,iBAAe;AAAA,QAC/B,GAAG,kBAAkB;AAAA,MACvB,OAAO;AACL,sBAAc,iBAAe;AAAA,MAC/B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,YAAY,kBAAkB,CAAC;AAEnC,EAAAC,iBAAgB,MAAM;AACpB,QAAI,eAAe,yBAAqB,QAAQ;AAC9C,gBAAU;AAAA,IACZ,WAAW,eAAe,qBAAmB,CAAC,QAAQ;AACpD,iBAAW;AAAA,IACb;AAAA,EACF,GAAG,CAAC,QAAQ,WAAW,YAAY,UAAU,CAAC;AAE9C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;AC/DA,SAAgB,UAAAC,SAAQ,YAAAC,iBAAgB;AAaxC,IAAM,mBAAmB,CAAC,SAAkB,MAAkB;AAC5D,QAAM,EAAE,MAAM,IAAI,IAAI;AACtB,QAAM,qBAAqB,OAAO,OAAO;AACzC,QAAM,qBAAqB,MAAM,OAAO;AACxC,QAAM,aAAa,EAAE,QAAQ;AAC7B,QAAM,aAAa,EAAE,QAAQ;AAE7B,SAAO;AAAA,IACL,GAAG,EAAE;AAAA,IACL,GAAG,EAAE;AAAA,IACL,UAAU;AAAA,IACV,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,EACpB;AACF;AAEO,IAAM,mBAAmB,CAAC,iBAAoE;AACnG,QAAM,MAAMC,QAAoB,IAAI;AACpC,QAAM,CAAC,UAAU,WAAW,IAAIC,UAAwB;AAAA,IACtD,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,EACpB,CAAC;AAED,QAAM,YAAY,CAAC,MAAkB;AACnC,UAAM,EAAE,SAAS,QAAQ,IAAI;AAC7B,gBAAY,WAAS,EAAE,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,EAAE;AAEzD,QAAI,cAAc,mBAAmB,SAAS;AAC5C,YAAM,WAAW,iBAAiB,aAAa,QAAQ,sBAAsB,GAAG,CAAC;AACjF,kBAAY,WAAS;AAAA,QACnB,GAAG;AAAA,QACH,GAAG;AAAA,MACL,EAAE;AAAA,IACJ,WAAW,IAAI,mBAAmB,SAAS;AACzC,YAAM,WAAW,iBAAiB,IAAI,QAAQ,sBAAsB,GAAG,CAAC;AACxE,kBAAY,WAAS;AAAA,QACnB,GAAG;AAAA,QACH,GAAG;AAAA,MACL,EAAE;AAAA,IACJ;AAAA,EACF;AAEA,mBAAiB,aAAa,SAAS;AAEvC,SAAO,EAAE,GAAG,UAAU,IAAI;AAC5B;;;AC/DA,SAAS,eAAAC,cAAa,YAAAC,iBAAgB;AAE/B,IAAM,kBAAkB,CAAI,QAAkB,eAAuB,MAAqC;AAC/G,QAAM,CAAC,OAAO,QAAQ,IAAIA,UAAS,YAAY;AAE/C,QAAM,SAASD;AAAA,IACb,CAACE,WAAmB;AAClB,eAASA,WAAU,SAAYA,SAAQ,WAAS,OAAO,KAAK,OAAO,MAAM;AAAA,IAC3E;AAAA,IACA,CAAC,OAAO,MAAM;AAAA,EAChB;AAEA,SAAO,CAAC,OAAO,KAAK,GAAG,MAAM;AAC/B;;;ACkDI;AA3DG,IAAK,kBAAL,kBAAKC,qBAAL;AACL,EAAAA,iBAAA,cAAW;AACX,EAAAA,iBAAA,gBAAa;AAFH,SAAAA;AAAA,GAAA;AAKL,IAAK,YAAL,kBAAKC,eAAL;AACL,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,YAAS;AAHC,SAAAA;AAAA,GAAA;AAoCL,IAAM,OAAO,CAAC;AAAA,EACnB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,UAAU;AACZ,MAAiB;AACf,QAAM,aAAa,cAAc;AAAA,IAC/B,eAAe;AAAA,IACf,CAAC,WAAW,GAAG;AAAA,IACf,CAAC,SAAS,GAAG,CAAC,CAAC;AAAA,IACf,CAAC,SAAS,GAAG;AAAA,EACf,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,OACE;AAAA,QACE,GAAG;AAAA,QACH,WAAW;AAAA,QACX,UAAU,GAAG,IAAI;AAAA,QACjB,aAAa,GAAG,OAAO;AAAA,QACvB,cAAc,GAAG,UAAU;AAAA,MAC7B;AAAA;AAAA,EAEJ;AAEJ;;;AnBF4D,gBAAAC,YAAA;AA9D5D,IAAM,mBAAmB,cAA4C,IAAI;AAElE,IAAM,mBAAmB,CAAC,OAAsC;AACrE,QAAM,UAAU,WAAW,gBAAgB;AAE3C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,4DAA4D;AAAA,EAC9E;AAEA,QAAM,EAAE,YAAY,YAAY,IAAI;AAEpC,QAAM,SAAS,MAAM,WAAW,EAAE;AAElC,SAAO,CAAC,YAAY,SAAS,EAAE,GAAG,MAAM;AAC1C;AAWO,IAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA,QAAQ,CAAC;AAAA,EACT,gBAAgB,CAAC;AACnB,MAAsB;AACpB,QAAM,CAAC,aAAa,cAAc,IAAIC,UAAuC,MAAM;AACjF,YAAQ,MAAM,QAAQ,aAAa,IAAI,gBAAgB,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,OAAO;AAC1F,aAAO,OAAO,OAAO,WAAW,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI;AAAA,IAC3D,GAAG,CAAC,CAAC;AAAA,EACP,CAAC;AAED,QAAM,aAAaC;AAAA,IACjB,CAAC,OAAe;AACd,qBAAe,WAAS,EAAE,GAAI,WAAW,OAAO,CAAC,GAAI,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE;AAAA,IACzE;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,iBAAiBC,SAAQ,MAAM,OAAO,KAAK,WAAW,EAAE,OAAO,QAAM,YAAY,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC;AAE1G,QAAM,qBAAqB,cAAc;AAAA,IACvC,WAAW;AAAA,IACX,CAAC,SAAS,GAAG,QAAQ,SAAS;AAAA,EAChC,CAAC;AAED,SACE,gBAAAH;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA,aAAa;AAAA,MACf;AAAA,MAEA,0BAAAA,KAAC,aAAQ,WAAW,oBAAoB,OACpC,iBAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,QAAQ;AACzE,eAAO,QAAQ,IAAI,QAAQ,CAAC,eAAe,OAAO,gBAAAA,KAAC,QAAK,aAAY,gBAAkB,GAAG,GAAG,IAAM,GAAI,KAAK;AAAA,MAC7G,CAAC,GACH;AAAA;AAAA,EACF;AAEJ;;;AoB/EA,SAAgB,WAAAI,gBAAe;AAE/B,SAAS,mBAAmB;;;ACSxB,gBAAAC,YAAA;AAFG,IAAM,YAAY,CAAC,EAAE,UAAU,QAAQ,YAAY,IAAI,QAAQ,CAAC,EAAE,MAAsB;AAC7F,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OACE;AAAA,QACE,UAAU;AAAA,QACV,QAAQ,SAAS,SAAS;AAAA,QAC1B,YAAY;AAAA,QACZ,iBAAiB;AAAA,QACjB,GAAG;AAAA,MACL;AAAA,MAGD;AAAA;AAAA,EACH;AAEJ;;;AC1BA,SAAwB,WAAAC,gBAAe;AA0DjC,SACE,OAAAC,MADF;AA5CC,IAAM,WAAW,CAAC;AAAA,EACvB,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ;AACF,MAAqB;AACnB,QAAM,eAAe,CAAC,QAAgC;AACpD,QAAI,SAAS,WAAW,GAAG;AACzB,YAAM,IAAI,MAAM,wCAAwC;AAAA,IAC1D;AAEA,WAAO,SAAS,GAAG;AAAA,EACrB;AAEA,QAAM,cAAcC,SAAQ,MAAM;AAChC,UAAM,MAAM,YAAY,MAAM;AAE9B,WAAO,SAAS,kBAAkB,eAAe,MAAM,GAAG,IAAI,GAAG;AAAA,EACnE,GAAG,CAAC,eAAe,SAAS,CAAC;AAE7B,QAAM,aAAaA,SAAQ,MAAM;AAC/B,UAAM,MAAM,YAAY,IAAI;AAE5B,WAAO,SAAS,kBAAkB,eAAe,MAAM,GAAG,IAAI,GAAG;AAAA,EACnE,GAAG,CAAC,eAAe,SAAS,CAAC;AAE7B,QAAM,YAAY,cAAc;AAAA,IAC9B,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC;AAED,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,OACE;AAAA,QACE,gBAAgB;AAAA,QAChB,eAAe,GAAG,SAAS;AAAA,QAC3B,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,MAClB;AAAA,MAGF,+BAAC,aAAQ,WAAU,WACjB;AAAA,wBAAAA,KAAC,aAAQ,WAAU,SAAS,uBAAa,CAAC,GAAE;AAAA,QAE5C,gBAAAA,KAAC,aAAQ,WAAU,QAAQ,uBAAa,CAAC,GAAE;AAAA,SAC7C;AAAA;AAAA,EACF;AAEJ;;;ACjEA,SAAwC,eAAAE,cAAa,UAAAC,eAAc;AAsE7D,gBAAAC,YAAA;AAxDC,IAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,YAAY;AACd,MAAsB;AACpB,QAAM,UAAUC,QAAoB,IAAI;AACxC,QAAM,WAAWA,QAAoB,IAAI;AAEzC,QAAM,oBAAoBC;AAAA,IACxB,CAAC,MAAkB;AACjB,YAAM,OAAO,QAAQ;AACrB,YAAM,QAAQ,SAAS;AAEvB,UAAI,CAAC,QAAQ,CAAC,MAAO;AAErB,YAAM,EAAE,SAAS,SAAS,cAAc,IAAI;AAC5C,YAAM,EAAE,aAAa,aAAa,IAAI;AACtC,YAAM,EAAE,KAAK,KAAK,IAAI,KAAK,sBAAsB;AAEjD,YAAM,cAAc,UAAU,QAAQ;AACtC,YAAM,YAAY,UAAU,OAAO;AAEnC,YAAM,sBAAsB,aAAa,IAAI;AAC7C,YAAM,sBAAsB,WAAW,IAAI;AAE3C,YAAM,WAAW,sBAAsB,WAAW,QAAQ,CAAC;AAC3D,YAAM,WAAW,sBAAsB,WAAW,QAAQ,CAAC;AAE3D,YAAM,MAAM,YAAY,eAAe,WAAW,eAAe,CAAC,OAAO,gBAAgB,OAAO;AAChG,WAAK,MAAM,YAAY,eAAe,WAAW,kBAAkB,YAAY;AAAA,IACjF;AAAA,IACA,CAAC,WAAW,YAAY;AAAA,EAC1B;AAEA,QAAM,qBAAqBA,aAA+B,OAAK;AAC7D,UAAM,OAAO,QAAQ;AACrB,UAAM,QAAQ,SAAS;AAEvB,QAAI,CAAC,QAAQ,CAAC,MAAO;AAErB,UAAM,MAAM,YAAY,eAAe,EAAE,cAAc,WAAW;AAClE,SAAK,MAAM,YAAY,eAAe,EAAE,cAAc,WAAW;AAAA,EACnE,GAAG,CAAC,CAAC;AAEL,mBAAiB,aAAa,mBAA+C,OAAO;AACpF,mBAAiB,cAAc,oBAAgD,OAAO;AAEtF,QAAM,gBAAgB,cAAc;AAAA,IAClC,cAAc;AAAA,IACd,CAAC,SAAS,GAAG,QAAQ,SAAS;AAAA,EAChC,CAAC;AAED,SACE,gBAAAF,KAAC,UAAK,KAAK,SAAS,OAAO,EAAE,MAAM,GAAG,WAAW,eAC/C,0BAAAA,KAAC,UAAK,WAAU,oBAAmB,KAAK,UACrC,UACH,GACF;AAEJ;;;AC3EA,SAAgB,eAAe,WAAAG,gBAAe;;;ACwBvC,IAAM,6BAA+E;AAAA,EAC1F,CAAC,iBAAsB,GAAG;AAAA,EAC1B,CAAC,uBAAyB,GAAG;AAAA,EAC7B,CAAC,uBAAyB,GAAG;AAAA,EAC7B,CAAC,uBAAyB,GAAG;AAAA,EAC7B,CAAC,uBAAyB,GAAG;AAAA,EAC7B,CAAC,iBAAsB,GAAG;AAAA,EAC1B,CAAC,mBAAuB,GAAG;AAAA,EAC3B,CAAC,6BAA4B,GAAG;AAAA,EAChC,CAAC,mBAAuB,GAAG;AAC7B;AAEO,IAAM,+BAAkE;AAAA,EAC7E,CAAC,iBAAsB,GAAG;AAAA,EAC1B,CAAC,uBAAyB,GAAG;AAAA,EAC7B,CAAC,uBAAyB,GAAG;AAAA,EAC7B,CAAC,uBAAyB,GAAG;AAAA,EAC7B,CAAC,uBAAyB,GAAG;AAAA,EAC7B,CAAC,iBAAsB,GAAG;AAAA,EAC1B,CAAC,mBAAuB,GAAG;AAAA,EAC3B,CAAC,6BAA4B,GAAG;AAAA,EAChC,CAAC,mBAAuB,GAAG;AAC7B;;;ADjBO,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA,SAAS;AAAA,EACT,WAAW,kBAAkB;AAAA,EAC7B,QAAQ,CAAC;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB,GAAG;AACL,MAAuB;AACrB,QAAM,YAAY,cAAc;AAAA,IAC9B,YAAY;AAAA,IACZ,CAAC,6BAA6B,OAAO,CAAC,GAAG,6BAA6B,OAAO,MAAM;AAAA,IACnF,CAAC,eAAe,GAAG,CAAC,CAAC;AAAA,IACrB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAAA,IAClB,CAAC,SAAS,EAAE,GAAG,QAAQ,KAAK;AAAA,IAC5B,cAAc;AAAA,IACd,eAAe,WAAW;AAAA,IAC1B,qBAAqB;AAAA,IACrB,oBAAoB,OAAO,WAAW;AAAA,IACtC,sBAAsB,WAAW;AAAA,IACjC,sBAAsB,WAAW;AAAA,IACjC,sBAAsB,WAAW;AAAA,IACjC,sBAAsB,WAAW;AAAA,IACjC,QAAQ,WAAW;AAAA,EACrB,CAAC;AAED,QAAM,YAAYC;AAAA,IAChB,MAAM,2BAA2B,OAAO,KAAK,4CAAiD;AAAA,IAC9F,CAAC,OAAO;AAAA,EACV;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,MACE,GAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL,WAAW;AAAA,QACX,GAAG;AAAA,MACL;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF;;;AJcI,SACE,OAAAC,MADF,QAAAC,aAAA;AAjDJ,IAAM,aAAa,CAAC,SAAkC,WAAiD;AACrG,MAAI,OAAO,YAAY,YAAY;AACjC,WAAO,QAAQ,MAAM;AAAA,EACvB;AAEA,SAAO;AACT;AAEO,IAAM,gBAA8C,CAAC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM,OAAO;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa,CAAC;AAAA,EACd,YAAY;AAAA,EACZ,QAAQ,CAAC;AACX,MAA0B;AACxB,QAAM,KAAKC,SAAQ,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;AAChD,QAAM,CAAC,QAAQ,MAAM,IAAI,iBAAiB,EAAE;AAC5C,QAAM,kBAAkB,cAAc;AAAA,IACpC,oBAAoB;AAAA,IACpB,qBAAqB,CAAC,CAAC;AAAA,IACvB,CAAC,YAAY,UAAU,EAAE,GAAG,CAAC,CAAC,YAAY;AAAA,IAC1C,WAAW;AAAA,EACb,CAAC;AAED,QAAM,yBAAyB,cAAc;AAAA,IAC3C,4BAA4B;AAAA,IAC5B,CAAC,YAAY,iBAAiB,EAAE,GAAG,CAAC,CAAC,YAAY;AAAA,EACnD,CAAC;AAED,QAAM,sBAAsB,cAAc;AAAA,IACxC,yBAAyB;AAAA,IACzB;AAAA,IACA,CAAC,YAAY,cAAc,EAAE,GAAG,CAAC,CAAC,YAAY;AAAA,EAChD,CAAC;AAED,QAAM,uBAAuB,cAAc;AAAA,IACzC,kBAAkB;AAAA,IAClB,CAAC,YAAY,QAAQ,EAAE,GAAG,CAAC,CAAC,YAAY;AAAA,EAC1C,CAAC;AAED,QAAM,eAAe,WAAW,OAAO,MAAM;AAC7C,QAAM,kBAAkB,WAAW,UAAU,MAAM;AACnD,QAAM,cAAc,WAAW,cAAc,MAAM;AACnD,QAAM,eAAe,WAAW,SAAS,MAAM,KAC7C,gBAAAD,MAAC,aAAQ,WAAW,wBAClB;AAAA,oBAAAD,KAAC,cAAW,WAAW,YAAY,OAAO,SAAQ,QAAO,WAAS,MAAC,QAAO,QACvE,wBACH;AAAA,IACA,gBAAAA,KAAC,cAAW,WAAW,YAAY,UAAU,SAAQ,SAAQ,WAAS,MAAC,QAAO,SAC3E,2BACH;AAAA,KACF;AAEF,QAAM,YAAY,WAAW,YAAY,MAAM,KAAK,gBAAAA,KAAC,QAAK,WAAW,qBAAqB;AAE1F,QAAM,yBAAyB,cAAc;AAAA,IAC3C,kBAAkB;AAAA,IAClB,CAAC,SAAS,GAAG,QAAQ,SAAS;AAAA,EAChC,CAAC;AAED,SACE,gBAAAC,MAAC,aAAQ,WAAW,wBAAwB,OAC1C;AAAA,oBAAAA,MAAC,aAAQ,WAAW,iBAAiB,SAAS,QAC3C;AAAA;AAAA,MACA;AAAA,MACA;AAAA,OACH;AAAA,IACA,gBAAAD,KAAC,aAAU,QACT,0BAAAA,KAAC,aAAQ,WAAW,sBAAuB,UAAS,GACtD;AAAA,KACF;AAEJ;;;AM1HA,SAAgB,aAAAG,YAAW,UAAAC,eAAc;AAkEhC,gBAAAC,YAAA;AApDF,IAAM,SAAS,CAAC;AAAA,EACrB;AAAA,EACA,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,SAAS;AACX,MAAmB;AACjB,QAAM,MAAMC,QAAoB,IAAI;AAEpC,EAAAC,WAAU,MAAM;AACd,QAAI,CAAC,IAAI,SAAS,eAAe;AAC/B;AAAA,IACF;AAEA,UAAM,mBAAmB,iBAAiB,IAAI,QAAQ,aAAa,EAAE;AAErE,QAAI,CAAC,CAAC,YAAY,SAAS,UAAU,UAAU,EAAE,SAAS,gBAAgB,GAAG;AAC3E,UAAI,QAAQ,cAAc,MAAM,WAAW;AAAA,IAC7C;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,cAAc,CAAC,MAAyC;AAC5D,UAAM,EAAE,OAAO,OAAO,cAAc,IAAI;AAExC,UAAM,OAAO,cAAc,sBAAsB;AAEjD,UAAM,KAAM,QAAQ,KAAK,QAAQ,MAAO,KAAK;AAC7C,UAAM,KAAM,QAAQ,KAAK,OAAO,MAAO,KAAK;AAE5C,UAAM,SAAS,SAAS,cAAc,MAAM;AAC5C,WAAO,UAAU,IAAI,eAAe;AACpC,WAAO,MAAM,oBAAoB,GAAG,QAAQ;AAC5C,WAAO,MAAM,0BAA0B;AACvC,WAAO,MAAM,OAAO,GAAG,CAAC;AACxB,WAAO,MAAM,MAAM,GAAG,CAAC;AAEvB,QAAI,OAAO;AACT,aAAO,MAAM,aAAa;AAAA,IAC5B;AAEA,kBAAc,YAAY,MAAM;AAEhC;AAAA,MACE,MAAM;AACJ,eAAO,OAAO;AAAA,MAChB;AAAA,MACA,KAAK,IAAI,UAAU,GAAG,IAAI,KAAK,IAAI,OAAO,CAAC;AAAA,IAC7C;AAAA,EACF;AAEA,SAAO,gBAAAF,KAAC,UAAK,KAAU,aAAa,aAAa,WAAW,UAAU,SAAS,IAAI,OAAO,EAAE,GAAG,OAAO,OAAO,GAAG;AAClH;;;ACxBI,SAEE,OAAAG,MAFF,QAAAC,aAAA;AAvBG,IAAM,SAAS,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,GAAG;AACL,MAAmB;AACjB,QAAM,aAAa,cAAc;AAAA,IAC/B,QAAQ;AAAA,IACR,CAAC,KAAK,GAAG,QAAQ,KAAK;AAAA,IACtB,CAAC,OAAO,GAAG,QAAQ,OAAO;AAAA,IAC1B,CAAC,UAAU,MAAM,EAAE,GAAG,QAAQ,MAAM;AAAA,IACpC,CAAC,QAAQ,IAAI,EAAE,GAAG,QAAQ,IAAI;AAAA,IAC9B,WAAW;AAAA,IACX,MAAM;AAAA,IACN,CAAC,SAAS,GAAG,QAAQ,SAAS;AAAA,EAChC,CAAC;AAED,SACE,gBAAAA,MAAC,YAAQ,GAAG,OAAO,WAAW,YAC3B;AAAA;AAAA,IACD,gBAAAD,KAAC,UAAO;AAAA,KACV;AAEJ;;;AChDA,SAAS,aAAAE,YAAW,YAAAC,kBAAgB;AAiChC,SACE,OAAAC,MADF,QAAAC,aAAA;AA3BG,IAAM,SAAS,MAAM;AAC1B,QAAM,EAAE,GAAG,GAAG,UAAU,UAAU,IAAI,IAAI,iBAAiB;AAC3D,QAAM,CAAC,eAAe,gBAAgB,IAAIC,WAAS,KAAK;AAExD,mBAAiB,aAAa,OAAK;AACjC,UAAM,iBAAiB,iBAAiB,EAAE,MAAqB,EAAE;AAEjE,qBAAiB,mBAAmB,SAAS;AAAA,EAC/C,CAAC;AAED,EAAAC,WAAU,MAAM;AACd,QAAI,EAAE,kBAAkB,UAAU,UAAU,iBAAiB;AAC3D,eAAS,KAAK,MAAM,SAAS;AAAA,IAC/B;AAEA,WAAO,MAAM;AACX,eAAS,KAAK,MAAM,SAAS;AAAA,IAC/B;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,MAAI,MAAM,QAAQ,MAAM,QAAQ,kBAAkB,UAAU,UAAU,gBAAgB;AACpF,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,eAAe,QAAQ,OAAO,QAAQ;AAE1D,SACE,gBAAAF,MAAC,aAAQ,WAAU,kBAAiB,KAClC;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,uBAAuB,gBAAgB,iBAAiB,EAAE;AAAA,QACrE,OAAO;AAAA,UACL,WAAW;AAAA,QACb;AAAA;AAAA,IACF;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,uBAAuB,gBAAgB,iBAAiB,EAAE;AAAA,QACrE,OAAO;AAAA,UACL,WAAW;AAAA,QACb;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;;;AChDA,SAAS,WAAAI,gBAAe;AAExB,SAAS,0BAA0B;;;ACDnC,SAAS,cAAc,eAAe,sBAA0C;AA2BxE,gBAAAC,aAAA;AAhBD,IAAM,aAAa,CAAqB;AAAA,EAC7C;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AACF,MAA6B;AAC3B,QAAM,EAAE,SAAS,SAAS,IAAI,eAAe;AAC7C,QAAM,EAAE,MAAM,aAAa,IAAI;AAE/B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc,gBAAgB;AAAA,MAC9B,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,MAAM,GAAG,WAAW,MAC9C,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,OAAO,WAAW,OAAO;AAAA,UACzB,SAAS,WAAW;AAAA,UACpB,WAAW,WAAW;AAAA,UACtB,SAAS,WAAW;AAAA,UACpB,UAAU,CAAAC,WAAS,SAAS,MAAMA,MAAK;AAAA,UACvC;AAAA,UACC,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EAEJ;AAEJ;;;ADwBM,SAEI,OAAAC,OAFJ,QAAAC,aAAA;AA7CC,IAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,eAAe;AAAA,EACf,MAAM,OAAO;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOF,MAA0D;AACxD,QAAM,KAAKC,SAAQ,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;AAEhD,QAAM,EAAE,SAAS,IAAI,iBAAmC;AAAA,IACtD,UAAU,OAAK,SAAS,EAAE,OAAO,OAAO;AAAA,IACxC;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,6BAA6B,cAAc;AAAA,IAC/C,sBAAsB;AAAA,IACtB,CAAC,SAAS,GAAG,QAAQ,SAAS;AAAA,IAC9B,CAAC,SAAS,KAAK,EAAE,GAAG,QAAQ,KAAK;AAAA,EACnC,CAAC;AAED,QAAM,oBAAoB,cAAc;AAAA,IACtC,UAAU;AAAA,IACV,cAAc;AAAA,IACd,CAAC,QAAQ,IAAI,EAAE,GAAG,QAAQ,IAAI;AAAA,EAChC,CAAC;AAED,SACE,gBAAAD,MAAC,aAAQ,WAAW,4BAA4B,OAAc,SAAS,OAAK,EAAE,gBAAgB,GAC5F;AAAA,oBAAAA,MAAC,aAAQ,WAAW,mBAClB;AAAA,sBAAAD,MAAC,aAAQ,WAAU,iBACjB,0BAAAA,MAAC,QAAK,MAAK,SAAQ,WAAU,iBAAgB,GAC/C;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,MAAK;AAAA,UACL;AAAA,UACA,WAAU;AAAA,UACV,SAAS;AAAA,UACT;AAAA,UACA;AAAA,UACA,UAAU,YAAY;AAAA,UACrB,GAAG;AAAA;AAAA,MACN;AAAA,OACF;AAAA,IACC,QACC,gBAAAA,MAAC,cAAW,SAAQ,cAAa,SAAS,IAAI,WAAU,kBACrD,iBACH,IACE;AAAA,KACN;AAEJ;AAEA,IAAM,qBAAqB,CAAC,EAAE,OAAO,GAAG,MAAM,MAAwD;AACpG,SAAO,gBAAAA,MAAC,cAAW,WAAW,UAAU,cAAc,OAAO,YAAY,OAAO,OAAc;AAChG;AAEA,SAAS,aAAa;;;AE9FtB,SAAS,WAAAG,gBAAe;;;ACExB,SAAS,eAAe;;;ACCjB,IAAK,eAAL,kBAAKC,kBAAL;AACL,EAAAA,cAAA,iBAAc;AACd,EAAAA,cAAA,oBAAiB;AACjB,EAAAA,cAAA,kBAAe;AAHL,SAAAA;AAAA,GAAA;AAML,IAAK,mBAAL,kBAAKC,sBAAL;AACL,EAAAA,kBAAA,gBAAa;AACb,EAAAA,kBAAA,cAAW;AAFD,SAAAA;AAAA,GAAA;;;ADQH,gBAAAC,OA2CH,QAAAC,aA3CG;AADT,IAAM,UAAU,CAAC,EAAE,MAAM,MAAM,WAAW,QAAQ,MAChD,OAAO,gBAAAD,MAAC,QAAK,WAAsB,SAAkB,IAAK,gBAAAA,MAAC,UAAK;AAE3D,IAAM,QAAQ,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,YAAY;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AACF,MAAkB;AAChB,QAAM,iBAAiB,cAAc;AAAA,IACnC,cAAc;AAAA,IACd,OAAO;AAAA,IACP,OAAO,CAAC,CAAC;AAAA,IACT,0BAA0B;AAAA,IAC1B,wBAAwB;AAAA,IACxB,uBAAuB;AAAA,IACvB,kBAAkB;AAAA,EACpB,CAAC;AAED,QAAM,cAAc,CAAC,aAA0B,CAAC,MAAwB;AACtE,MAAE,gBAAgB;AAClB,UAAM,QAAQ,SAAS,eAAe,EAAE;AACxC,WAAO,MAAM;AACb,WAAO,MAAM;AAEb,QAAI,SAAU,UAAS;AAAA,EACzB;AAEA,SACE,gBAAAC,MAAC,aAAQ,WAAW,gBAAgB,KACjC;AAAA,YACC,gBAAAD,MAAC,cAAW,WAAU,eAAc,WAAS,MAAC,SAAQ,cAAa,SAAS,IACzE,iBACH,IACE;AAAA,IACJ,gBAAAC,MAAC,aAAQ,WAAU,iBAChB;AAAA,cAAQ;AAAA,QACP,WAAW;AAAA,QACX,MAAM;AAAA,QACN,SAAS,YAAY,eAAe;AAAA,MACtC,CAAC;AAAA,MACD,gBAAAD,MAAC,aAAQ,WAAU,kBAAkB,UAAS;AAAA,MAC7C,QAAQ;AAAA,QACP,WAAW;AAAA,QACX,MAAM;AAAA,QACN,SAAS,YAAY,gBAAgB;AAAA,MACvC,CAAC;AAAA,OACH;AAAA,IACC,QAAQ,KAAK,KACZ,gBAAAC,MAAC,aAAQ,WAAU,iBAChB;AAAA,kBAAY,gBAAAD,MAAC,aAAU,MAAM,IAAI,IAAK,gBAAAA,MAAC,UAAK;AAAA,MAC7C,gBAAAA,MAAC,cAAW,WAAS,MAAC,SAAQ,SAC3B,iBACH;AAAA,OACF;AAAA,KAEJ;AAEJ;;;ADxCM,gBAAAE,aAAA;AAhCC,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAAA,EACd,eAAe;AAAA;AAAA,EAEf,UAAU;AAAA;AAAA,EAEV,YAAY;AAAA;AAAA,EAEZ,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,MAA2D;AACzD,QAAM,KAAKC,SAAQ,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;AAChD,QAAM,EAAE,SAAS,SAAS,IAAI,iBAAiB;AAAA,IAC7C;AAAA,IACA,UAAU,OAAK,SAAS,EAAE,OAAO,KAAK;AAAA,IACtC;AAAA,EACF,CAAC;AAED,SACE,gBAAAD,MAAC,SAAM,IAAQ,OAAc,SAAmB,GAAG,YACjD,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,IAAM,uBAAuB,CAAC,EAAE,OAAO,GAAG,MAAM,MAAyD;AACvG,SAAO,gBAAAA,MAAC,cAAW,WAAW,YAAY,cAAa,IAAG,YAAY,OAAO,OAAc;AAC7F;AAEA,WAAW,aAAa;;;AGjExB,SAAS,WAAAE,gBAAe;AAiDlB,gBAAAC,aAAA;AAnCC,IAAM,QAAQ,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAAA,EACd,eAAe;AAAA;AAAA,EAEf,UAAU;AAAA;AAAA,EAEV,YAAY;AAAA;AAAA,EAEZ,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAkD;AAChD,QAAM,KAAKC,SAAQ,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;AAChD,QAAM,EAAE,UAAU,QAAQ,IAAI,iBAAiB;AAAA,IAC7C,UAAU,OAAK,SAAS,EAAE,OAAO,KAAK;AAAA,IACtC;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE,gBAAAD,MAAC,SAAM,IAAQ,OAAc,SAAmB,GAAG,YACjD,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,IAAM,kBAAkB,CAAC,EAAE,OAAO,GAAG,MAAM,MAAgD;AACzF,SAAO,gBAAAA,MAAC,cAAW,WAAW,OAAO,cAAa,IAAG,YAAY,OAAO,OAAc;AACxF;AAEA,MAAM,aAAa;;;AC1EnB,SAAS,WAAAE,iBAAe;AAExB,SAAS,OAAO,gBAAgB;AAChC,SAAS,oBAAoB;AAmDvB,gBAAAC,aAAA;AAxCC,IAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAAA,EACd,eAAe;AAAA;AAAA,EAEf,UAAU;AAAA;AAAA,EAEV,YAAY;AAAA;AAAA,EAEZ,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,MAA8D;AAC5D,QAAM,KAAKC,UAAQ,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;AAChD,QAAM,CAAC,MAAM,MAAM,IAAI,gBAAqC,CAAC,YAAY,MAAM,CAAC;AAChF,QAAM,EAAE,SAAS,SAAS,IAAI,iBAAiB;AAAA,IAC7C;AAAA,IACA,UAAU,OAAK,SAAS,EAAE,OAAO,KAAK;AAAA,IACtC;AAAA,EACF,CAAC;AAED,QAAM,OAAOA,UAAkB,MAAM;AACnC,QAAI,SAAS,WAAY,QAAO;AAEhC,QAAI,SAAS,OAAQ,QAAO;AAE5B,WAAO;AAAA,EACT,GAAG,CAAC,IAAI,CAAC;AAET,SACE,gBAAAD,MAAC,SAAM,IAAQ,OAAc,SAAmB,GAAG,YAAY,WAAW,MAAM,kBAAkB,MAAM,OAAO,GAC7G,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,IAAM,0BAA0B,CAAC,EAAE,OAAO,GAAG,MAAM,MAA4D;AAC7G,SAAO,gBAAAA,MAAC,cAAW,WAAW,eAAe,cAAa,IAAG,YAAY,OAAO,OAAc;AAChG;AAEA,cAAc,aAAa;;;AC5E3B,OAAO,WAAW;AAClB,SAAS,eAAAE,cAAa,aAAAC,aAAW,WAAAC,WAAS,UAAAC,UAAQ,YAAAC,kBAAgB;AAClE,SAAS,qBAAqB,qBAAqB;AACnD,SAAS,oBAAoB;AAC7B,OAAO,mBAAmB;;;ACJ1B,SAAS,iBAAAC,gBAAe,eAAAC,cAAa,cAAAC,aAAY,UAAAC,SAAQ,YAAAC,kBAAgB;AAEzE,SAAS,WAAAC,gBAAe;;;ACFxB,SAA+B,WAAAC,WAAS,UAAAC,eAAc;;;ACCtD,SAAS,oBAAoB;AAStB,IAAM,SAAS,CAAC,EAAE,UAAU,GAAG,MAAmB;AACvD,QAAM,OAAO,gBAAgB,EAAE;AAE/B,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,EACT;AAEA,SAAO,aAAa,UAAU,IAAI;AACpC;;;AClBA,SAAgB,WAAAC,iBAAe;AAwD3B,gBAAAC,aAAA;AApDG,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,iBAAc;AACd,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,UAAO;AAJG,SAAAA;AAAA,GAAA;AAeL,IAAM,WAAW,CAAC;AAAA,EACvB,UAAU;AAAA,EACV,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,MAAqB;AACnB,QAAM,oBAAoB,cAAc;AAAA,IACtC,kBAAkB;AAAA,IAClB,kBAAkB,0CAAqC;AAAA,EACzD,CAAC;AAED,QAAM,mBAAmBC,UAAQ,MAAM;AACrC,UAAM,iBAAiB;AAAA,MACrB,CAAC,qBAAoB,GAAG;AAAA,QACtB,YAAY,4CAA4C,UAAU,GAAG;AAAA,MACvE;AAAA,MACA,CAAC,+BAAyB,GAAG;AAAA,QAC3B,YAAY;AAAA,MACd;AAAA,MACA,CAAC,iBAAkB,GAAG;AAAA,QACpB,YAAY,4CAA4C,UAAU,GAAG;AAAA,QACrE,gBAAgB;AAAA,MAClB;AAAA,MACA,CAAC,iBAAkB,GAAG;AAAA,QACpB,SAAS;AAAA,MACX;AAAA,IACF;AAEA,WAAO,eAAe,QAAQ,KAAK,CAAC;AAAA,EACtC,GAAG,CAAC,UAAU,OAAO,CAAC;AAEtB,MAAI,aAAa,mBAAoB;AACnC,WAAO;AAAA,EACT;AAEA,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MACX,OAAO;AAAA,QACL;AAAA,QACA,GAAG;AAAA,MACL;AAAA;AAAA,EACF;AAEJ;;;AFmBI,SACE,OAAAG,OADF,QAAAC,aAAA;AAtDG,IAAM,QAAQ,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,YAAY,CAAC;AAAA,EACb,YAAY;AAAA,EACZ,0BAA0B;AAAA,EAC1B,UAAU;AAAA,EACV,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,eAAe;AAAA,EACf,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,GAAG;AACL,MAAkB;AAChB,QAAM,OAAOC,UAAQ,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;AAClD,QAAM,WAAWC,QAAoB,IAAI;AACzC,QAAM,EAAE,YAAY,UAAU,IAAI,mBAAmB;AAAA,IACnD;AAAA,IACA;AAAA,EACF,CAAC;AAED,sBAAoB;AAAA,IAClB,UAAU,gBAAgB;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACV,CAAC;AAED,kBAA6B,gBAAgB,UAAU,MAAM;AAC3D,QAAI,UAAU,qBAAqB;AACjC,cAAQ;AAAA,IACV;AAAA,EACF,CAAC;AAED,QAAM,wBAAwB,cAAc;AAAA,IAC1C,iBAAiB;AAAA,IACjB,CAAC,SAAS,GAAG,QAAQ,SAAS;AAAA,IAC9B,CAAC,aAAa,SAAS,EAAE,GAAG,QAAQ,SAAS,KAAK,cAAc;AAAA,IAChE,CAAC,uBAAuB,GAAG,0CAAqC;AAAA,EAClE,CAAC;AAED,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,EACT;AAEA,SACE,gBAAAF,MAAC,UAAO,IAAI,SAAS,EAAE,IAAI,IAAI,IAC7B;AAAA,oBAAAD,MAAC,YAAU,GAAG,eAAe,YAAwB,QAAgB;AAAA,IACrE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,KAAK,gBAAgB;AAAA,QACrB,OAAO;AAAA,UACL,UAAU,iBAAiB,eAAe,CAAC;AAAA,UAC3C,WAAW,iBAAiB,eAAe,CAAC;AAAA,UAC5C,GAAG;AAAA,UACH,QAAQ,CAAC,SAAS;AAAA,QACpB;AAAA,QAEA,0BAAAA,MAAC,aAAQ,OAAO,EAAE,GAAG,OAAO,mBAAmB,GAAG,kBAAkB,KAAK,GAAG,WAAW,uBACpF,UACH;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;;;ADdU,SAGM,OAAAI,OAHN,QAAAC,aAAA;AAvEV,IAAM,qBAAqBC,eAA6C,IAAI;AAE5E,IAAM,wBAAwB,MAAM;AAClC,QAAM,UAAUC,YAAW,kBAAkB;AAE7C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,yDAAyD;AAAA,EAC3E;AAEA,SAAO;AACT;AAgBO,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,GAAG;AACL,MAAwB;AACtB,QAAM,CAAC,oBAAoB,qBAAqB,IAAIC,WAAS,KAAK;AAClE,QAAM,MAAMC,QAAoB,IAAI;AAEpC,QAAM,eAAeC,aAAY,MAAM;AACrC,QAAI,SAAS,UAAU,IAAI,iBAAiB;AAC5C,eAAW,MAAM;AACf,UAAI,SAAS,UAAU,OAAO,iBAAiB;AAAA,IACjD,GAAG,GAAG;AAAA,EACR,GAAG,CAAC,CAAC;AAEL,QAAM,uBAAuB,cAAc;AAAA,IACzC,wBAAwB;AAAA,IACxB,aAAa;AAAA,IACb,eAAe;AAAA,IACf,cAAc;AAAA,EAChB,CAAC;AAED,SACE,gBAAAN,MAAC,mBAAmB,UAAnB,EAA4B,OAAO,EAAE,SAAS,oBAAoB,sBAAsB,GACvF,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,IAAG;AAAA,MACH,WAAU;AAAA,MACV,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MACJ,iBAAiB,iBAAiB,eAAe;AAAA,MACjD;AAAA,MAEA,0BAAAA,MAAC,aAAQ,KAAU,WAAU,iBAC3B,0BAAAC,MAAC,aAAQ,WAAW,sBACjB;AAAA,SAAC,iBAAiB,CAAC,kBAClB,gBAAAD,MAAC,aAAQ,WAAU,sBAAqB,SAAS,MAAM,QAAQ,GAC7D,0BAAAA,MAACO,UAAA,EAAQ,GACX;AAAA,QAED,OACC,gBAAAP,MAAC,cAAW,SAAQ,WAAU,WAAU,qBACtC,0BAAAA,MAAC,QAAK,GACR,IACE;AAAA,QACJ,gBAAAA,MAAC,aAAQ,WAAU,qBACjB,0BAAAA,MAAC,aAAQ,WAAW,wBAAwB,SAAS,IAAI,OACtD,UACH,GACF;AAAA,SACF,GACF;AAAA;AAAA,EACF,GACF;AAEJ;AAMA,IAAM,eAAe,CAAC,EAAE,SAAS,UAAU,WAAW,iBAAiB,GAAG,YAAY,MAAyB;AAC7G,QAAM,EAAE,SAAS,oBAAoB,sBAAsB,IAAI,sBAAsB;AACrF,QAAM,CAAC,WAAW,YAAY,IAAII,WAAS,KAAK;AAEhD,QAAM,eAAeE,aAAY,MAAM;AACrC,iBAAa,IAAI;AACjB,0BAAsB,IAAI;AAC1B,UAAM,SAAS,QAAQ;AAEvB,QAAI,kBAAkB,SAAS;AAC7B,aAAO,KAAK,MAAM;AAChB,gBAAQ;AACR,qBAAa,KAAK;AAClB,8BAAsB,KAAK;AAAA,MAC7B,CAAC;AAAA,IACH,OAAO;AACL,cAAQ;AACR,mBAAa,KAAK;AAClB,4BAAsB,KAAK;AAAA,IAC7B;AAAA,EACF,GAAG,CAAC,SAAS,SAAS,qBAAqB,CAAC;AAE5C,MAAI,CAAC,aAAa,oBAAoB;AACpC,WAAO;AAAA,EACT;AAEA,SACE,gBAAAN,MAAC,UAAQ,GAAG,aAAa,SAAS,cAAc,WAAW,mBAAmB,WAC3E,UACH;AAEJ;AAEA,YAAY,eAAe;;;AIrJ3B,SAAwB,WAAAQ,iBAAe;AACvC,SAAS,WAAAC,gBAAe;AA0CpB,SAcI,OAAAC,OAdJ,QAAAC,aAAA;AArBG,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,GAAG;AACL,MAAuB;AACrB,QAAM,kBAAkBC,UAAuB,MAAM;AACnD,UAAM,eAAe;AAAA,MACnB,gBAAsB,GAAG,EAAE,QAAQ,MAAM,OAAO,OAAO;AAAA,MACvD,kBAAuB,GAAG,EAAE,QAAQ,QAAQ,OAAO,KAAK;AAAA,MACxD,oBAAwB,GAAG,EAAE,QAAQ,QAAQ,OAAO,KAAK;AAAA,MACzD,sBAAyB,GAAG,EAAE,QAAQ,MAAM,OAAO,OAAO;AAAA,IAC5D;AAEA,WAAO,aAAa,QAAQ;AAAA,EAC9B,GAAG,CAAC,UAAU,IAAI,CAAC;AAEnB,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,IAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,cAAc;AAAA,MACd,WAAU;AAAA,MACV,WAAW,eAAe,SAAS,IAAI,QAAQ;AAAA,MAC/C,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD,MAAC,UAAK,WAAU,sBAAqB,SAAS,SAC5C,0BAAAA,MAACG,UAAA,EAAQ,GACX;AAAA,QACA,gBAAAH,MAAC,aAAQ,WAAU,uBAAuB,UAAS;AAAA;AAAA;AAAA,EACrD;AAEJ;;;ACnCQ,gBAAAI,OAEA,QAAAC,cAFA;AAbD,IAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA,WAAW,MAAM;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA8B;AAC5B,SACE,gBAAAD,MAAC,eAAa,GAAG,kBAAkB,UAAQ,MACzC,0BAAAC,OAAC,aAAQ,WAAU,sBACjB;AAAA,oBAAAD,MAAC,cAAW,SAAQ,WAAW,iBAAM;AAAA,IACrC,gBAAAA,MAAC,aAAS,UAAS;AAAA,IACnB,gBAAAC,OAAC,aAAQ,WAAU,8BAChB;AAAA,OAAC,aACA,gBAAAD,MAAC,YAAY,cAAZ,EAAyB,SAAQ,QAAO,SAAS,UAC/C,sBACH;AAAA,MAEF,gBAAAA,MAAC,YAAY,cAAZ,EAAyB,WAAsB,SAAS,UACtD,sBACH;AAAA,OACF;AAAA,KACF,GACF;AAEJ;;;AC1CA,SAA2B,eAAAE,cAAa,WAAAC,iBAAe;AAqCjD,SAmEM,UAnEN,OAAAC,OAmEM,QAAAC,cAnEN;AAlBC,IAAM,OAAO,CAAC;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB,eAAe,CAAC;AAAA,EAChB,YAAY;AAAA,EACZ,GAAG;AACL,MAAiB;AACf,QAAM,iBAAiB,cAAc;AAAA,IACnC,cAAc;AAAA,IACd,CAAC,SAAS,GAAG,QAAQ,SAAS;AAAA,EAChC,CAAC;AAED,SACE,gBAAAD,MAAC,SAAM,WAAW,gBAAiB,GAAG,YAAY,IAAI,QAAQ,EAAE,IAAI,QAAgB,SAClF,0BAAAA,MAAC,QAAG,WAAW,gBAAgB,gBAAgB,IAAI,MAAK,WAAU,OAAO,cAAc,KAAK,gBACzF,UACH,GACF;AAEJ;AAeA,IAAM,aAAa,CAAC;AAAA,EAClB;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,UAAU,MAAM;AAAA,EAChB,GAAG;AACL,MAAuB;AACrB,QAAM,sBAAsB,cAAc;AAAA,IACxC,eAAe;AAAA,IACf,CAAC,SAAS,GAAG;AAAA,IACb,eAAe;AAAA,IACf,eAAe;AAAA,EACjB,CAAC;AAED,QAAM,cAAcE;AAAA,IAClB,CAAC,MAAwB;AACvB,QAAE,gBAAgB;AAElB,UAAI,CAAC,UAAU;AACb,gBAAQ,CAAC,QAAQ;AAAA,MACnB;AAAA,IACF;AAAA,IACA,CAAC,UAAU,SAAS,QAAQ;AAAA,EAC9B;AAEA,QAAM,oBAAoBC,UAAQ,MAAM;AACtC,QAAI,UAAU;AACZ,aAAO;AAAA,IACT;AAEA,QAAI,YAAY;AACd,aACE,gBAAAH;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV;AAAA,UACA,OAAO;AAAA,UACP,UAAU,OAAK,QAAQ,CAAC;AAAA,UACxB,MAAK;AAAA,UACL,OAAO,EAAE,eAAe,OAAO;AAAA,UAC/B,MAAK;AAAA,UACL,OACE,gBAAAC,OAAA,YACG;AAAA,qBAAS,UAAa,gBAAAD,MAAC,QAAK,WAAU,eAAc;AAAA,YACrD,gBAAAA,MAAC,cAAW,SAAQ,SAAS,iBAAM;AAAA,aACrC;AAAA;AAAA,MAEJ;AAAA,IAEJ;AAEA,WACE,gBAAAC,OAAA,YACG;AAAA,eAAS,UAAa,gBAAAD,MAAC,QAAK,WAAU,eAAc;AAAA,MACpD,OAAO,UAAU,WAAW,gBAAAA,MAAC,cAAW,SAAQ,SAAS,iBAAM,IAAgB;AAAA,OAClF;AAAA,EAEJ,GAAG,CAAC,YAAY,UAAU,UAAU,MAAM,OAAO,SAAS,QAAQ,CAAC;AAEnE,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,MAAK;AAAA,MACL,UAAU;AAAA,MACV,iBAAe;AAAA,MACf,iBAAe;AAAA,MACf,SAAS;AAAA,MACT,WAAW;AAAA,MACX;AAAA,MAEA;AAAA,wBAAAD,MAAC,UAAO,QAAQ,IAAI;AAAA,QACnB;AAAA;AAAA;AAAA,EACH;AAEJ;AAEA,IAAM,UAAU,MAAM;AACpB,SACE,gBAAAA,MAAC,QACC,0BAAAA,MAAC,QAAK,WAAU,WAAU,GAC5B;AAEJ;AAEA,IAAM,QAAQ,CAAC,EAAE,UAAU,YAAY,IAAI,GAAG,MAAM,MAAwC;AAC1F,SACE,gBAAAA,MAAC,QAAG,UAAU,IAAI,WAAU,cAC1B,0BAAAA,MAAC,cAAY,GAAG,OAAO,SAAQ,SAAQ,WAAW,oBAAoB,SAAS,IAC5E,UACH,GACF;AAEJ;AAWA,IAAM,QAAQ,CAAC;AAAA,EACb;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,mBAAmB;AAAA,EACnB,eAAe,CAAC;AAAA,EAChB,GAAG;AACL,MAAsB;AACpB,QAAM,iBAAiB,cAAc;AAAA,IACnC,cAAc;AAAA,IACd,CAAC,SAAS,GAAG,QAAQ,SAAS;AAAA,EAChC,CAAC;AAED,SACE,gBAAAC,OAAC,QAAG,UAAU,IAAK,GAAG,OAAO,WAAW,gBAAgB,OACrD;AAAA,aAAS,gBAAAD,MAAC,SAAO,iBAAM;AAAA,IACxB,gBAAAA,MAAC,QAAG,WAAW,sBAAsB,gBAAgB,IAAI,MAAK,WAAU,OAAO,cAC5E,UACH;AAAA,KACF;AAEJ;AAEA,KAAK,SAAS;AACd,KAAK,UAAU;AACf,KAAK,aAAa;AAClB,KAAK,QAAQ;;;APnGP,SAQE,OAAAI,OARF,QAAAC,cAAA;AA5EC,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAAA,EACd,eAAe;AAAA;AAAA,EAEf,UAAU;AAAA;AAAA,EAEV,YAAY;AAAA;AAAA,EAEZ,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,MAAsD;AACpD,QAAM,EAAE,MAAM,YAAY,IAAI,cAAc;AAC5C,QAAM,CAAC,YAAY,aAAa,IAAIC,WAAiB,KAAK;AAC1D,QAAM,KAAKC,UAAQ,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;AAChD,QAAM,eAAeC,SAAoB,IAAI;AAC7C,QAAM,CAAC,QAAQ,SAAS,IAAIF,WAAS,KAAK;AAC1C,QAAM,EAAE,UAAU,QAAQ,IAAI,iBAAiB;AAAA,IAC7C,UAAU,OAAK,cAAc,EAAE,OAAO,KAAK;AAAA,IAC3C,QAAQ,OAAK;AACX,oBAAc;AAEd,UAAI,OAAQ,QAAO,CAAuC;AAAA,IAC5D;AAAA,IACA,SAAS,OAAK;AACZ,oBAAc;AAEd,UAAI,QAAS,SAAQ,CAAuC;AAAA,IAC9D;AAAA,EACF,CAAC;AAED,QAAM,cAAcC,UAAQ,MAAM;AAChC,UAAM,QAAQ,MAAM,UAAU,KAAK,YAAY,KAAK;AAEpD,QAAI,MAAM,QAAQ,KAAK,MAAM,MAAM,IAAI,KAAK;AAC1C,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,iBAAiB,YAAY;AACjC,UAAM,EAAE,QAAQ,IAAI,MAAM,KAAK;AAC/B,aAAS,OAAO;AAAA,EAClB;AAEA,EAAAE,YAAU,MAAM;AACd,kBAAc,KAAK;AAAA,EACrB,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,gBAAgBC,aAAY,MAAM;AACtC,QAAI,WAAW,MAAM,iDAAiD,GAAG;AACvE,eAAS,UAAU;AAAA,IACrB,OAAO;AACL,oBAAc,KAAK;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,YAAY,UAAU,KAAK,CAAC;AAEhC,QAAM,oBAAoB,cAAc;AAAA,IACtC,mBAAmB;AAAA,IACnB,CAAC,SAAS,GAAG,QAAQ,SAAS;AAAA,EAChC,CAAC;AAED,SACE,gBAAAL,OAAC,SAAM,IAAQ,OAAc,SAAmB,GAAG,YACjD;AAAA,oBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,OAAK;AACZ,YAAE,gBAAgB;AAClB,oBAAU,IAAI;AAAA,QAChB;AAAA,QACA,KAAK;AAAA,QAEL;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,cACX,OAAO;AAAA,gBACL;AAAA,gBACA,YAAY;AAAA,gBACZ,OAAO;AAAA,gBACP,GAAG;AAAA,cACL;AAAA;AAAA,UACF;AAAA,UACC,gBACC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA,OAAO;AAAA,cACP;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,WAAU;AAAA,cACT,GAAG;AAAA;AAAA,UACN,IACE;AAAA;AAAA;AAAA,IACN;AAAA,IAEA,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH;AAAA,QACA,SAAS,MAAM,UAAU,KAAK;AAAA,QAC9B,UAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAS;AAAA,QACT;AAAA,QACA,WAAU;AAAA,QAEV;AAAA,0BAAAD,MAAC,uBAAoB,IAAQ,OAAO,OAAO,UAAU,UAAU;AAAA,UAC/D,gBAAAC,OAAC,aAAQ,WAAU,yBAChB;AAAA,wBAAY,IACX,gBAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,MAAM;AACb,uBAAK,eAAe;AAAA,gBACtB;AAAA;AAAA,YACF,IAEA,gBAAAA,MAAC,UAAK;AAAA,YAER,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBACV;AAAA,gBACA;AAAA,gBACA,OAAO;AAAA,gBACP,aAAY;AAAA,gBACZ,UAAQ;AAAA,gBACR,OAAK;AAAA,gBACL,UAAU;AAAA;AAAA,YACZ;AAAA,YACA,gBAAAA,MAAC,UAAK;AAAA,aACR;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,IAAM,uBAAuB,CAAC,EAAE,OAAO,GAAG,MAAM,MAAoD;AAClG,SAAO,gBAAAA,MAAC,cAAW,WAAW,YAAY,cAAa,WAAU,YAAY,OAAO,OAAc;AACpG;AAEA,WAAW,aAAa;;;AQzKxB,SAAS,eAAAO,eAAa,aAAAC,aAAW,WAAAC,WAAS,YAAAC,kBAAgB;AAE1D,SAAS,mBAAmB,qBAAqB;AACjD,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,eAAe,qBAAqB;;;ACJ7C,SAAgB,iBAAAC,sBAAqB;AA+B9B,IAAM,OAAO,CAAC;AAAA,EACnB,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAiB;AACf,SAAOC;AAAA,IACL;AAAA,IACA;AAAA,MACE;AAAA,MACA,GAAG;AAAA,MACH,OAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAI,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;AAAA,QACrC,GAAI,aAAa,EAAE,iBAAiB,WAAW,IAAI,CAAC;AAAA,QACpD,GAAI,UAAU,EAAE,cAAc,QAAQ,IAAI,CAAC;AAAA,QAC3C,GAAI,SAAS,EAAE,YAAY,OAAO,IAAI,CAAC;AAAA,QACvC,GAAI,MAAM,EAAE,SAAS,IAAI,IAAI,CAAC;AAAA,QAC9B,GAAI,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;AAAA,QACjC,GAAI,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;AAAA,QAC/B,GAAI,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;AAAA,QAC9B,GAAI,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;AAAA,QACnC,GAAI,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;AAAA,QACjC,GAAI,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;AAAA,QAChC,GAAI,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;AAAA,QACjC,GAAI,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;AAAA,QAC/B,GAAI,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;AAAA,QAC9B,GAAI,MAAM,EAAE,qBAAqB,IAAI,IAAI,CAAC;AAAA,QAC1C,GAAI,MAAM,EAAE,kBAAkB,IAAI,IAAI,CAAC;AAAA,QACvC,GAAI,MAAM,EAAE,mBAAmB,IAAI,IAAI,CAAC;AAAA,QACxC,GAAI,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;AAAA,QACjC,GAAI,MAAM,EAAE,IAAS,IAAI,CAAC;AAAA,QAC1B,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF;;;ADgDU,SA4DF,YAAAC,WA5DE,OAAAC,OAEF,QAAAC,cAFE;AA/GH,IAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA,QAAQ,CAAC;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAAA,EACd,eAAe;AAAA,EACf;AAAA,EACA,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,eAAe;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOF,MAAkE;AAChE,QAAM,CAAC,OAAO,QAAQ,IAAIC,WAAwB,IAAI;AACtD,QAAM,KAAKC,UAAQ,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;AAChD,QAAM,EAAE,SAAS,IAAI,iBAAmC;AAAA,IACtD;AAAA,IACA;AAAA,IACA,UAAU,OAAK;AACb,YAAM,EAAE,MAAM,IAAI,EAAE;AAEpB,UAAI,MAAO,WAAU,KAAK;AAAA,IAC5B;AAAA,EACF,CAAC;AAED,EAAAC,YAAU,MAAM;AACd,QAAI,aAAmD;AAEvD,QAAI,UAAU,MAAM;AAClB,mBAAa,WAAW,MAAM;AAC5B,iBAAS,IAAI;AAAA,MACf,GAAG,YAAY;AAAA,IACjB;AAEA,WAAO,MAAM;AACX,UAAI,eAAe,MAAM;AACvB,qBAAa,UAAU;AAAA,MACzB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,OAAO,YAAY,CAAC;AAExB,QAAM,YAAY,CAAC,UAAoB;AACrC,UAAM,aAAa,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC;AAE9C,UAAM,eAAe,WAAW,MAAM,SAAS;AAE/C,aAAS,IAAI,GAAG,IAAI,cAAc,KAAK;AACrC,YAAM,OAAO,MAAM,KAAK,CAAC;AAEzB,UAAI,CAAC,MAAM;AACT;AAAA,MACF;AAEA,UAAI,KAAK,OAAO,WAAW;AACzB,mBAAW,KAAK,IAAI,IAAI;AAAA,MAC1B,OAAO;AACL,iBAAS,SAAS,KAAK,IAAI,yBAAyB,YAAY,SAAS,CAAC,EAAE;AAAA,MAC9E;AAAA,IACF;AAEA,aAAS,UAAU;AAAA,EACrB;AAEA,QAAM,aAAa,CAAC,MAAyC;AAC3D,MAAE,eAAe;AACjB,MAAE,gBAAgB;AAElB,QAAI,EAAE,aAAa,SAAS,EAAE,aAAa,MAAM,QAAQ;AACvD,gBAAU,EAAE,aAAa,KAAK;AAAA,IAChC;AAAA,EACF;AAEA,QAAM,cAAcC,cAAY,CAAC,SAAiC;AAChE,UAAM,YAA4C;AAAA,MAChD,sBAAiB,GAAG;AAAA,MACpB,4BAAiB,GAAG;AAAA,IACtB;AAEA,WAAO,UAAU,IAAI,KAAKC;AAAA,EAC5B,GAAG,CAAC,CAAC;AAEL,QAAM,aAAa,CAAC,SAAe;AACjC,UAAM,YAAY,EAAE,GAAG,MAAM;AAC7B,WAAO,UAAU,KAAK,IAAI;AAC1B,aAAS,SAAS;AAAA,EACpB;AAEA,QAAM,YAAY,MAAM;AACtB,aAAS,CAAC,CAAC;AAAA,EACb;AAEA,QAAM,YAAYH,UAAQ,MAAM,OAAO,OAAO,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,MAAM,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAExG,QAAM,mBAAmB,CAAC,MAAY,QAAgB;AACpD,UAAM,OAAO,YAAY,KAAK,IAAoB;AAElD,WACE,gBAAAF,OAAC,aAAQ,WAAU,mBACjB;AAAA,sBAAAD,MAAC,aAAQ,WAAU,oBACjB,0BAAAA,MAAC,QAAK,GACR;AAAA,MACA,gBAAAC,OAAC,QACC;AAAA,wBAAAD,MAAC,cAAW,SAAQ,SAAQ,WAAS,MAAC,QAAM,MACzC,eAAK,MACR;AAAA,QACA,gBAAAA,MAAC,cAAW,WAAS,MAAC,SAAQ,SAC3B,sBAAY,KAAK,IAAI,GACxB;AAAA,SACF;AAAA,MACA,gBAAAA,MAAC,aAAQ,WAAU,qBAAoB,SAAS,MAAM,WAAW,IAAI,GACnE,0BAAAA,MAAC,iBAAc,GACjB;AAAA,SAdwC,GAe1C;AAAA,EAEJ;AAEA,SACE,gBAAAC,OAAC,aAAQ,WAAU,wBAChB;AAAA,YAAQ,KAAK,KACZ,gBAAAD,MAAC,cAAW,SAAQ,cAAa,SAAS,IAAI,WAAS,MACpD,iBACH;AAAA,IAEF,gBAAAC,OAAC,aAAQ,WAAU,mBAAkB,QAAQ,YAC3C;AAAA,sBAAAD,MAAC,aAAQ,WAAU,yBACjB,0BAAAA,MAAC,qBAAkB,GACrB;AAAA,MACA,gBAAAC,OAAC,QACC;AAAA,wBAAAD,MAAC,cAAW,SAAQ,cAAa,SAAS,IAAI,WAAS,MAAC,QAAO,QAC5D,uBACH;AAAA,QACA,gBAAAC,OAAC,cAAW,SAAQ,SAAQ,WAAS,MAAC;AAAA;AAAA,UACzB,YAAY,SAAS;AAAA,UAAE;AAAA,WACpC;AAAA,SACF;AAAA,MACA,gBAAAD;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,MAAK;AAAA,UACL;AAAA,UACA,OAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAM;AAAA,UACL,GAAG;AAAA;AAAA,MACN;AAAA,OACF;AAAA,IACC,UAAU,QACT,gBAAAA,MAAC,cAAW,SAAQ,SAAQ,WAAS,MAAC,WAAU,SAC7C,iBACH;AAAA,IAED,OAAO,KAAK,KAAK,EAAE,SAAS,KAC3B,gBAAAC,OAAAF,WAAA,EACG;AAAA,kBACC,gBAAAE,OAAC,UAAK,WAAU,cACd;AAAA,wBAAAA,OAAC,cAAW,SAAQ,SAAQ,WAAS,MAClC;AAAA,iBAAO,KAAK,KAAK,EAAE;AAAA,UAAO;AAAA,UAAU,YAAY,SAAS;AAAA,WAC5D;AAAA,QACA,gBAAAD,MAAC,UAAK,WAAU,sBAAqB,SAAS,WAC5C,0BAAAA,MAAC,iBAAc,GACjB;AAAA,SACF;AAAA,MAEF,gBAAAA,MAAC,aAAQ,WAAU,qBACjB,0BAAAA,MAAC,aAAQ,WAAU,8BAA8B,iBAAO,OAAO,KAAK,EAAE,IAAI,gBAAgB,GAAE,GAC9F;AAAA,OACF;AAAA,KAEJ;AAEJ;AAEA,IAAM,sBAAsB,CAAC,EAAE,OAAO,GAAG,MAAM,MAAgE;AAC7G,SAAO,gBAAAA,MAAC,cAAW,WAAW,WAAW,cAAc,CAAC,GAAG,YAAY,OAAO,OAAc;AAC9F;AAEA,UAAU,aAAa;;;AE5NvB,SAAS,aAAAO,aAAW,WAAAC,WAAS,YAAAC,kBAAgB;AAsHvC,gBAAAC,aAAA;AA7GN,IAAM,eAAe;AAAA,EACnB,OAAO;AAAA,EACP,KAAK;AACP;AAEA,IAAM,kBAAkB,CAAC,OAAe,mBAAmB,QAAgB;AACzE,QAAM,QAAQ,qBAAqB,MAAM,aAAa,MAAM,aAAa;AACzE,QAAM,UAAU,MAAM,QAAQ,OAAO,EAAE,EAAE,QAAQ,KAAK,GAAG;AAEzD,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,IAAM,oBAAoB,CAAC,OAAe,WAA2B;AACnE,MAAI,CAAC,SAAS,OAAO,MAAM,KAAK,GAAG;AACjC,WAAO,OAAO,CAAC;AAAA,EACjB;AAEA,SAAO,OAAO,KAAK;AACrB;AAcO,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAAA,EACd,eAAe;AAAA;AAAA,EAEf,UAAU;AAAA;AAAA,EAEV,YAAY;AAAA;AAAA,EAEZ,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,OAAO;AAAA,IACP,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,EACzB;AAAA,EACA,GAAG;AACL,MAAkD;AAChD,QAAM,KAAKC,UAAQ,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;AAChD,QAAM,iBAAiBA,UAAwB,MAAM;AACnD,QAAI,OAAO,WAAW,WAAY,QAAO;AAEzC,UAAM,EAAE,SAAS,GAAG,aAAa,IAAI;AAErC,WAAO,KAAK,aAAa,SAAS,YAAY,EAAE;AAAA,EAClD,GAAG,CAAC,MAAM,CAAC;AACX,QAAM,CAAC,gBAAgB,iBAAiB,IAAIC,WAAS,kBAAkB,OAAO,cAAc,CAAC;AAE7F,QAAM,EAAE,UAAU,QAAQ,IAAI,iBAAiB;AAAA,IAC7C,UAAU,OAAK;AACb,YAAM,UAAU,gBAAgB,EAAE,OAAO,OAAO,gBAAgB;AAEhE,UAAI,QAAQ,SAAS,GAAG,GAAG;AACzB,0BAAkB,EAAE,OAAO,KAAK;AAAA,MAClC,OAAO;AACL,0BAAkB,kBAAkB,OAAO,OAAO,GAAG,cAAc,CAAC;AACpE,iBAAS,OAAO,OAAO,CAAC;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,QAAQ,OAAK;AACX,YAAM,UAAU,gBAAgB,EAAE,OAAO,OAAO,gBAAgB;AAChE,wBAAkB,kBAAkB,OAAO,OAAO,GAAG,cAAc,CAAC;AACpE,eAAS,OAAO,OAAO,CAAC;AAExB,UAAI,OAAQ,QAAO,CAAC;AAAA,IACtB;AAAA,IACA;AAAA,EACF,CAAC;AAED,EAAAC,YAAU,MAAM;AACd,UAAM,YAAY,kBAAkB,OAAO,cAAc;AAEzD,QAAI,mBAAmB,WAAW;AAChC,wBAAkB,SAAS;AAAA,IAC7B;AAAA,EACF,GAAG,CAAC,gBAAgB,gBAAgB,KAAK,CAAC;AAE1C,SACE,gBAAAH,MAAC,SAAM,IAAQ,OAAc,SAAmB,GAAG,YACjD,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,IAAMI,mBAAkB,CAAC,EAAE,OAAO,GAAG,MAAM,MAAgD;AACzF,SAAO,gBAAAJ,MAAC,cAAW,WAAW,aAAa,cAAc,GAAG,YAAY,OAAO,OAAc;AAC/F;AAEA,YAAY,aAAaI;;;AC/IzB,SAAS,WAAAC,iBAAe;AA8DlB,SACE,OAAAC,OADF,QAAAC,cAAA;AA5CC,IAAM,QAAQ,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOF,MAAsD;AACpD,QAAM,KAAKC,UAAQ,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;AAChD,QAAM,EAAE,SAAS,IAAI,iBAAiB;AAAA,IACpC,UAAU,OAAK,SAAS,EAAE,OAAO,KAAK;AAAA,IACtC;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,0BAA0B,cAAc;AAAA,IAC5C,mBAAmB;AAAA,IACnB,CAAC,SAAS,GAAG,QAAQ,SAAS;AAAA,IAC9B,CAAC,SAAS,KAAK,EAAE,GAAG,QAAQ,KAAK;AAAA,EACnC,CAAC;AAED,QAAM,iBAAiB,cAAc;AAAA,IACnC,OAAO;AAAA,IACP,cAAc,eAAe;AAAA,IAC7B,CAAC,QAAQ,IAAI,EAAE,GAAG,QAAQ,IAAI;AAAA,EAChC,CAAC;AAED,SACE,gBAAAD,OAAC,aAAQ,WAAW,yBAAyB,OAC3C;AAAA,oBAAAA,OAAC,aAAQ,WAAW,gBAClB;AAAA,sBAAAD,MAAC,aAAQ,WAAU,cAAa;AAAA,MAChC,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,MAAK;AAAA,UACL;AAAA,UACA,WAAW,eAAe,SAAS;AAAA,UACnC;AAAA,UACA,OAAO;AAAA,UACP,SAAS,eAAe;AAAA,UACxB;AAAA,UACA;AAAA,UACA,UAAU,YAAY;AAAA,UACrB,GAAG;AAAA;AAAA,MACN;AAAA,OACF;AAAA,IACC,QACC,gBAAAA,MAAC,cAAW,SAAQ,cAAa,SAAS,IAAI,WAAU,eACrD,iBACH,IACE;AAAA,KACN;AAEJ;AAEA,IAAM,kBAAkB,CAAC,EAAE,OAAO,GAAG,MAAM,MAAoD;AAC7F,SAAO,gBAAAA,MAAC,cAAW,WAAW,OAAO,cAAa,IAAG,YAAY,OAAO,OAAc;AACxF;AAEA,MAAM,aAAa;;;AC3FnB,SAAgB,iBAAAG,gBAAe,eAAAC,eAAa,cAAAC,aAAY,WAAAC,WAAS,UAAAC,UAAQ,YAAAC,kBAAgB;AACzF,SAAS,WAAAC,gBAAe;AACxB,SAAS,mBAAmB;;;ACF5B,SAAS,aAAAC,mBAAiB;AAmCtB,qBAAAC,WAG+D,OAAAC,OAD7D,QAAAC,cAFF;AApBG,IAAM,iBAAiB,CAAC;AAAA,EAC7B,WAAW,gBAAgB;AAAA,EAC3B,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA2B;AACzB,QAAM,EAAE,KAAK,OAAO,IAAI,UAAU;AAClC,QAAM,YAAY,YAAY,eAAe,GAAG;AAEhD,EAAAC,YAAU,MAAM;AACd,QAAI,eAAe,UAAU,CAAC,WAAW;AACvC,eAAS;AAAA,IACX;AAAA,EACF,GAAG,CAAC,aAAa,WAAW,UAAU,MAAM,CAAC;AAE7C,QAAM,iBAAiB,MAAM,QAAQ,QAAQ,IAAI,SAAS,SAAS,IAAI,QAAQ,QAAQ;AAEvF,SACE,gBAAAD,OAAAF,WAAA,EACG;AAAA;AAAA,IACD,gBAAAE,OAAC,aAAQ,WAAU,mBAChB;AAAA,cAAQ,YAAY,KAAK,CAAC,kBAAkB,CAAC,aAAa,gBAAAD,MAAC,OAAE,WAAU,iBAAiB,wBAAa;AAAA,OACpG,eAAe,eACd,wBACC,sBAAsB,GAAG,IAEzB,gBAAAA,MAAC,aAAQ,KAAU,WAAU,WAC1B,uBAAa,gBAAAA,MAAC,UAAK,WAAU,iBAAgB,gBAAE,GAClD;AAAA,OAEN;AAAA,KACF;AAEJ;;;AClDA,SAAgB,eAAAG,eAAa,WAAAC,iBAAe;AAkFpC,gBAAAC,aAAA;AArED,IAAM,SAAS,CAAuB,EAAE,UAAU,MAAM,MAAsB;AACnF,QAAM,EAAE,aAAa,mBAAmB,YAAY,eAAe,UAAU,UAAU,IAAI,iBAAoB;AAE/G,QAAM,uBAAuBC;AAAA,IAC3B,CAAC,GAAM,MAAkB;AACvB,UAAI,CAAC,UAAU,QAAQ,EAAE,SAAS,OAAO,CAAC,GAAG;AAC3C,eAAO,MAAM;AAAA,MACf;AAEA,aAAO,CAAC,CAAC,qBAAqB,kBAAkB,GAAG,CAAC;AAAA,IACtD;AAAA,IACA,CAAC,iBAAiB;AAAA,EACpB;AAEA,QAAM,eAAeA;AAAA,IACnB,CAACC,gBAAwB;AACvB,UAAIA,aAAY;AACd,YAAI,aAAa;AACf,cAAI,cAAc,MAAM,QAAQ,aAAa,KAAK,cAAc,UAAU,YAAY;AACpF;AAAA,UACF;AAEA,mBAAS,CAAC,GAAG,eAAe,KAAK,CAAC;AAAA,QACpC,OAAO;AACL,mBAAS,KAAK;AACd,oBAAU,KAAK;AAAA,QACjB;AAAA,MACF,OAAO;AACL,YAAI,aAAa;AACf,mBAAS,cAAc,OAAO,UAAQ,CAAC,qBAAqB,MAAM,KAAK,CAAC,CAAC;AAAA,QAC3E,OAAO;AACL,mBAAS,IAAI;AACb,oBAAU,KAAK;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,aAAa,YAAY,eAAe,UAAU,OAAO,WAAW,oBAAoB;AAAA,EAC3F;AAEA,QAAM,aAAaC,UAAQ,MAAM;AAC/B,QAAI,kBAAkB,MAAM,kBAAkB,MAAM;AAClD,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,MAAM,QAAQ,aAAa,GAAG;AACjC,aAAO,qBAAqB,OAAO,aAAa;AAAA,IAClD;AAEA,QAAI,CAAC,UAAU,QAAQ,EAAE,SAAS,OAAO,KAAK,GAAG;AAC/C,aAAO,cAAc,SAAS,KAAK;AAAA,IACrC;AAEA,WAAO,cAAc,KAAK,UAAQ,CAAC,CAAC,qBAAqB,kBAAkB,OAAO,IAAI,CAAC;AAAA,EACzF,GAAG,CAAC,sBAAsB,mBAAmB,eAAe,KAAK,CAAC;AAElE,QAAM,gBAAgBF;AAAA,IACpB,CAAC,MAA2B;AAC1B,UAAI,CAAC,SAAS,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG;AAClC,UAAE,eAAe;AAEjB,qBAAa,EAAE,cAAc,YAAY;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,CAAC,cAAc,YAAY,WAAW;AAAA,EACxC;AAEA,QAAM,cAAcE,UAAQ,MAAM;AAChC,QAAI,OAAO,aAAa,UAAU;AAChC,aACE,gBAAAH,MAAC,cAAW,cAAY,OAAO,SAAQ,SAAQ,QAAM,MAClD,UACH;AAAA,IAEJ;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,UAAU,KAAK,CAAC;AAEpB,SACE,gBAAAA;AAAA,IAAC,KAAK;AAAA,IAAL;AAAA,MACC,OAAO;AAAA,MACP,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,SAAS,CAAC,aAAsB,aAAa,cAAc,WAAW,IAAI;AAAA;AAAA,EAC5E;AAEJ;;;ACpGA,SAA2B,eAAAI,eAAa,aAAAC,aAAW,UAAAC,UAAQ,YAAAC,kBAAgB;AAgIvE,SAiBM,OAAAC,OAjBN,QAAAC,cAAA;AAlHJ,IAAM,mBAAmB,CAAC;AAAA,EACxB;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,MAAwB;AACtB,QAAM,CAAC,GAAG,IAAI,IAAIC,WAA6B,MAAS;AAExD,QAAM,eAAeC,cAAY,MAAM;AACrC,UAAM,kBAAkB,aAAa,SAAS,sBAAsB,EAAE,UAAU;AAEhF,UAAM,eAAe,OAAO,cAAc,kBAAkB,eAAe,SAAS;AACpF,UAAM,YAAY,OAAO,cAAc,eAAe;AACtD,UAAM,mBAAmB,eAAe,mBAAmB,YAAY;AACvE,UAAM,YAAY,KAAK,IAAI,kBAAkB,MAAM;AACnD,UAAM,YAAY,KAAK,IAAI,WAAW,gBAAgB;AAEtD,SAAK,GAAG,KAAK,MAAM,SAAS,CAAC,IAAI;AAAA,EACnC,GAAG,CAAC,cAAc,cAAc,QAAQ,kBAAkB,MAAM,CAAC;AAEjE,EAAAC,YAAU,MAAM;AACd,iBAAa;AAAA,EACf,GAAG,CAAC,YAAY,CAAC;AAEjB,oBAAkB,cAAc,YAAY;AAC5C,mBAAiB,UAAU,YAAY;AAEvC,SAAO,EAAE,EAAE;AACb;AAEO,IAAM,UAAU,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA,yBAAyB;AAAA,EACzB,uBAAuB;AAAA,EACvB,mBAAmB,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA,SAAS;AACX,MAAoB;AAClB,QAAM,2BAA2BC,SAAuB,IAAI;AAC5D,QAAM,kBAAkBA,SAAyB,IAAI;AACrD,QAAM,CAAC,qBAAqB,sBAAsB,IAAIH,WAAS,EAAE;AACjE,QAAM,iBAAiBG,SAAyB,IAAI;AACpD,QAAM,WAAW,cAAc,oBAAoB;AAEnD,mBAAiB,WAAW,OAAK;AAC/B,QAAI,CAAC,aAAa,SAAS,EAAE,SAAS,EAAE,IAAI,GAAG;AAC7C,QAAE,eAAe;AACjB,YAAM,cAAc,SAAS;AAC7B,YAAM,aAAa,aAAa,YAAY;AAE5C,UAAI,YAAY;AACd,gBAAQ,EAAE,MAAM;AAAA,UACd,KAAK;AACH,YAAC,aAAa,aAA6B,MAAM;AAEjD;AAAA,UACF,KAAK;AACH,YAAC,aAAa,wBAAwC,MAAM;AAE5D;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,oBAAoBF;AAAA,IACxB,CAAC,MAA2C;AAC1C,YAAM,EAAE,MAAM,IAAI,EAAE;AAEpB,UAAI,cAAe,eAAc,KAAK;AAEtC,6BAAuB,KAAK;AAAA,IAC9B;AAAA,IACA,CAAC,aAAa;AAAA,EAChB;AAEA,EAAAC,YAAU,MAAM;AACd,QAAI,eAAe,SAAS;AAC1B,qBAAe,QAAQ,MAAM;AAAA,IAC/B;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,EAAE,EAAE,IAAI,iBAAiB;AAAA,IAC7B;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,IACR,cAAc;AAAA,EAChB,CAAC;AAED,QAAM,CAAC,eAAe,gBAAgB,IAAIF,WAAS,KAAK;AAExD,QAAM,kBAAkBC,cAAY,MAAM;AACxC,UAAM,yBACJ,KAAK,MAAM,yBAAyB,SAAS,sBAAsB,EAAE,UAAU,CAAC,IAAI;AACtF,UAAM,gBAAgB,KAAK,MAAM,gBAAgB,SAAS,gBAAgB,CAAC;AAE3E,qBAAiB,0BAA0B,aAAa;AAAA,EAC1D,GAAG,CAAC,CAAC;AAEL,EAAAC,YAAU,iBAAiB,CAAC,eAAe,CAAC;AAC5C,oBAAkB,0BAA0B,eAAe;AAC3D,oBAAkB,iBAAiB,eAAe;AAClD,mBAAiB,UAAU,eAAe;AAE1C,QAAM,sBAAsB,cAAc;AAAA,IACxC,yBAAyB;AAAA,IACzB,CAAC,oBAAoB,GAAG,QAAQ,oBAAoB;AAAA,EACtD,CAAC;AAED,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,kBAAkB,gBAAgB,sBAAsB,EAAE;AAAA,MACrE,OACE,WACI;AAAA,QACE,WAAW,OAAO,cAAc;AAAA,QAChC,OAAO,OAAO,aAAa;AAAA,MAC7B,IACA;AAAA,QACE,QAAQ,gBAAgB,SAAS;AAAA,QACjC,WAAW;AAAA,QACX,OAAO,aAAa,SAAS,eAAe;AAAA,MAC9C;AAAA,MAGL;AAAA,yBACC,gBAAAD,MAAC,aAAQ,WAAW,qBAAqB,OAAO,kBAC9C,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,OAAO,oBAAoB;AAAA,YAC3B,UAAU;AAAA,YACV,aAAa;AAAA,YACb,SAAS,OAAK,EAAE,gBAAgB;AAAA,YAChC,KAAK;AAAA,YACL,WAAS;AAAA;AAAA,QACX,GACF;AAAA,QAEF,gBAAAA,MAAC,aAAQ,WAAU,iCAAgC,KAAK,0BACtD,0BAAAA,MAAC,QAAG,WAAU,uBAAsB,KAAK,iBACtC,UACH,GACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;AHpHQ,gBAAAM,OAuJE,QAAAC,cAvJF;AApBR,IAAM,gBAAgBC,eAAkD,IAAI;AAErE,IAAM,mBAAmB,MAAmD;AACjF,QAAM,UAAUC,YAAW,aAA4D;AAEvF,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,yDAAyD;AAAA,EAC3E;AAEA,SAAO;AACT;AAMA,IAAM,cAAc,CAAC,EAAE,SAAS,MAAwB;AACtD,QAAM,iBAAiBC,UAAQ,MAAM;AACnC,QAAI,OAAO,aAAa,UAAU;AAChC,aACE,gBAAAJ,MAAC,cAAW,WAAS,MAAC,SAAQ,SAAQ,QAAM,MACzC,UACH;AAAA,IAEJ;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO,gBAAAA,MAAC,KAAK,YAAL,EAAiB,0BAAe;AAC1C;AAEA,IAAM,gBAAgB,CAAuB,EAAE,MAAM,MAA+B;AAClF,SACE,gBAAAA,MAAC,cAAW,SAAQ,SAAQ,QAAM,MAC/B,iBAAO,UAAU,YAAY,OAAO,UAAU,WAAW,QAAQ,KAAK,UAAU,KAAK,GACxF;AAEJ;AAEA,IAAM,eAAe,CAAuB,EAAE,OAAO,YAAY,MAA8B;AAC7F,MAAI,aAAa;AACf,WACE,gBAAAA,MAAC,cAAW,WAAS,MAAC,QAAM,MAAC,SAAQ,SAClC,aAAG,MAAM,MAAM,QAAQ,MAAM,WAAW,IAAI,KAAK,GAAG,aACvD;AAAA,EAEJ;AAEA,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AAEA,SACE,gBAAAA,MAAC,cAAW,WAAS,MAAC,SAAQ,SAAQ,QAAM,MACzC,iBAAO,UAAU,YAAY,OAAO,UAAU,WAAW,QAAQ,KAAK,UAAU,KAAK,GACxF;AAEJ;AAEO,IAAM,SAAS,CAAuB;AAAA;AAAA,EAE3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,MAAM;AAAA,EACjB,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,eAAe;AAAA,EACf;AAAA,EACA,iBAAiB,kBAAkB;AAAA,EACnC,gBAAgB,iBAAiB;AAAA,EACjC;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA,YAAY;AAAA;AAAA,EAEZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAAA;AAAA,EAEd,eAAe;AAAA;AAAA,EAEf,UAAU;AAAA;AAAA,EAEV,YAAY;AAAA;AAAA,EAEZ,UAAU;AAAA,EACV;AAAA;AAAA,EAEA,GAAG;AACL,MAAkC;AAChC,QAAM,WAAWK,SAAoB,IAAI;AACzC,QAAM,WAAW,cAAc,oBAAoB;AACnD,QAAM,KAAKD,UAAQ,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;AAChD,QAAM,eAAeC,SAAoB,IAAI;AAC7C,QAAM,CAAC,QAAQ,SAAS,IAAIC,WAAS,KAAK;AAE1C,QAAM,aAAaC;AAAA,IACjB,CAAC,SAAkB;AACjB,gBAAU,QAAQ,CAAC,QAAQ;AAAA,IAC7B;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,cAAcA;AAAA,IAClB,CAAC,MAAwB;AACvB,QAAE,gBAAgB;AAElB,UAAI,aAAa;AACf,iBAAS,CAAC,CAAC;AAAA,MACb,OAAO;AACL,iBAAS,IAAI;AAAA,MACf;AAAA,IACF;AAAA,IACA,CAAC,aAAa,QAAQ;AAAA,EACxB;AAEA,QAAM,gBAAgBH,UAAQ,MAAM;AAClC,QAAI,aAAa;AACf,aAAO,MAAM,SAAS;AAAA,IACxB,OAAO;AACL,aAAO,QAAQ,KAAK;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,aAAa,KAAK,CAAC;AAEvB,QAAM,kBAAkBA,UAAyB,MAAM;AACrD,QAAI,CAAC;AACH,aAAO,QAAQ,IAAI,CAACI,QAAO,QACzB,gBAAAR,MAAC,OAAO,QAAP,EAAc,OAAOQ,QACpB,0BAAAR,MAAC,mBAAgB,OAAOQ,QAAO,KADC,GAElC,CACD;AAEH,WAAO;AAAA,EACT,GAAG,CAAC,iBAAiB,UAAU,OAAO,CAAC;AAEvC,SACE,gBAAAR;AAAA,IAAC,cAAc;AAAA,IAAd;AAAA,MACC,OACE;AAAA,QACE,eAAe;AAAA,QACf;AAAA,QACA,aAAa,eAAe;AAAA,QAC5B;AAAA,QACA,YAAY,cAAc;AAAA,QAC1B;AAAA,MACF;AAAA,MAGF,0BAAAA,MAAC,SAAM,IAAQ,OAAc,SAAS,QAAQ,KAAK,cAAe,GAAG,YACnE,0BAAAC;AAAA,QAAC;AAAA;AAAA,UACC,IAAI;AAAA,UACJ;AAAA,UACA;AAAA,UACA,WAAW,UAAU,WAAW,aAAa,EAAE,IAAI,SAAS;AAAA,UAE5D;AAAA,4BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,WAAW,oBAAoB,iBAAiB,kBAAkB,kBAAkB,EAAE;AAAA,gBACtF,SAAS,MAAM,WAAW,IAAI;AAAA,gBAE9B;AAAA,kCAAAD;AAAA,oBAAC;AAAA;AAAA,sBACC,MAAK;AAAA,sBACL,WAAW,iBAAiB,MAAM,QAAQ,KAAK,IAAI,MAAM,SAAS,IAAI,SAAS,KAAK,aAAa;AAAA,sBACjG,iBAAc;AAAA,sBACd,iBAAe;AAAA,sBACf,SAAS,OAAK;AACZ,mCAAW,IAAI;AAEf,4BAAI,QAAS,SAAQ,CAAC;AAAA,sBACxB;AAAA,sBAEC,0BACC,gBAAAA,MAAC,kBAAgB,GAAI,cAAc,EAAE,OAAO,YAAY,IAAI,EAAE,MAAa,GAAI,IAE/E,gBAAAA,MAAC,cAAW,SAAQ,SAAQ,WAAS,MAAC,QAAM,MACzC,uBACH;AAAA;AAAA,kBAEJ;AAAA,kBACC,iBAAiB,mBAChB,gBAAAA,MAAC,aAAQ,WAAU,cAAa,SAAS,aACvC,0BAAAA,MAACS,UAAA,EAAQ,GACX;AAAA,kBAEF,gBAAAT,MAAC,eAAY,WAAW,qBAAqB,UAAU,gBAAgB,IAAI;AAAA;AAAA;AAAA,YAC7E;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAG;AAAA,gBACH;AAAA,gBACA,SAAS,MAAM,WAAW,KAAK;AAAA,gBAC/B,UAAU,WAAW,SAAS;AAAA,gBAC9B,SAAS,WAAW,MAAM;AAAA,gBAC1B,UAAU,WAAW,WAAW;AAAA,gBAChC,QAAQ;AAAA,gBACR;AAAA,gBACA,cAAc;AAAA,gBACd,oBAAoB;AAAA,gBACpB,cAAc,WAAW,SAAY;AAAA,gBACrC,kBAAiB;AAAA,gBACjB,WAAU;AAAA,gBAEV,0BAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBAEA,0BAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,wBAEC;AAAA;AAAA,oBACH;AAAA;AAAA,gBACF;AAAA;AAAA,YACF;AAAA;AAAA;AAAA,MACF,GACF;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,wBAAwB,CAAuB;AAAA,EACnD;AAAA,EACA,GAAG;AACL,MAAoE;AAClE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,cAAc,CAAC;AAAA,MACf,YAAY;AAAA,QACV,GAAG;AAAA,QACH,aAAa;AAAA,MACf;AAAA,MACA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,yBAAyB,CAAuB;AAAA,EACpD;AAAA,EACA,GAAG;AACL,MAAsE;AACpE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,cAAc;AAAA,MACd,YAAY;AAAA,QACV,GAAG;AAAA,QACH,aAAa;AAAA,MACf;AAAA,MACA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,mBAAmB,CAAuB,UAA6C;AAC3F,QAAM,EAAE,YAAY,IAAI;AAExB,MAAI,aAAa;AACf,WAAO,gBAAAA,MAAC,yBAA0B,GAAG,OAAO,aAAa,MAAM;AAAA,EACjE;AAEA,SAAO,gBAAAA,MAAC,0BAA2B,GAAG,OAAO,aAAa,OAAO;AACnE;AAEA,OAAO,aAAa;AACpB,OAAO,SAAS;AAChB,OAAO,cAAc;;;AI5TrB,SAAS,WAAAU,iBAAe;AAwElB,SACE,OAAAC,OADF,QAAAC,cAAA;AAxDC,IAAM,SAAS,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAAA,EACd,eAAe;AAAA;AAAA,EAEf,UAAU;AAAA;AAAA,EAEV,YAAY;AAAA;AAAA,EAEZ,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,MAAuD;AACrD,QAAM,KAAKC,UAAQ,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;AAChD,QAAM,cAAc,CAAC,MAA0C;AAC7D,QAAI,OAAQ,QAAO,CAAC;AAEpB,UAAM,cAAc,SAAS,GAAG,KAAK,EAAE;AAEvC,QAAI,QAAQ,UAAa,cAAc,KAAK;AAC1C,eAAS,GAAG;AAAA,IACd;AAEA,QAAI,QAAQ,UAAa,cAAc,KAAK;AAC1C,eAAS,GAAG;AAAA,IACd;AAEA,aAAS,WAAW;AAAA,EACtB;AAEA,QAAM,EAAE,SAAS,SAAS,IAAI,iBAAiB;AAAA,IAC7C,QAAQ;AAAA,IACR,UAAU,OAAK,SAAS,CAAC,EAAE,OAAO,KAAK;AAAA,IACvC;AAAA,EACF,CAAC;AAED,QAAM,uBAAuB,cAAc;AAAA,IACzC,gBAAgB;AAAA,IAChB,YAAY;AAAA,EACd,CAAC;AAED,SACE,gBAAAF,MAAC,SAAM,IAAQ,OAAc,SAAmB,GAAG,YACjD,0BAAAC,OAAC,aAAQ,WAAW,sBAClB;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL;AAAA,QACA,WAAW,UAAU,SAAS;AAAA,QAC9B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,IACC,CAAC,cACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL;AAAA,QACA,WAAW,iBAAiB,SAAS;AAAA,QACrC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,KAEJ,GACF;AAEJ;AAEA,IAAM,mBAAmB,CAAC,EAAE,OAAO,GAAG,MAAM,MAAqD;AAC/F,SAAO,gBAAAA,MAAC,cAAW,WAAW,QAAQ,cAAc,GAAG,YAAY,OAAO,OAAc;AAC1F;AAEA,OAAO,aAAa;;;ACpHpB,SAAgB,WAAAG,iBAAe;AAsDzB,gBAAAC,aAAA;AAtCC,IAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAAA,EACd,eAAe;AAAA;AAAA,EAEf,UAAU;AAAA;AAAA,EAEV,YAAY;AAAA;AAAA,EAEZ,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,MAAyD;AACvD,QAAM,KAAKC,UAAQ,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;AAChD,QAAM,EAAE,UAAU,QAAQ,IAAI,iBAAsC;AAAA,IAClE;AAAA,IACA,UAAU,OAAK,SAAS,EAAE,OAAO,KAAK;AAAA,IACtC;AAAA,EACF,CAAC;AAED,QAAM,oBAAoB,cAAc;AAAA,IACtC,UAAU;AAAA,IACV,CAAC,SAAS,GAAG,QAAQ,SAAS;AAAA,EAChC,CAAC;AAED,SACE,gBAAAD,MAAC,SAAM,IAAQ,OAAc,SAAmB,GAAG,YACjD,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,OAAO;AAAA,QACL;AAAA,QACA,GAAG;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,IAAM,qBAAqB,CAAC,EAAE,OAAO,GAAG,MAAM,MAAuD;AACnG,SAAO,gBAAAA,MAAC,cAAW,WAAW,UAAU,cAAa,IAAG,YAAY,OAAO,OAAc;AAC3F;AAEA,SAAS,aAAa;;;AC/EtB,SAAS,WAAAE,iBAAe;;;ACAxB,SAAS,YAAAC,kBAAgB;;;ACAzB,SAAgB,oBAAoB;AA0ChC,qBAAAC,WAiBI,OAAAC,OAjBJ,QAAAC,cAAA;AApBG,IAAM,UAAU,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,WAAW;AACb,MAAoB;AAClB,QAAM,EAAE,cAAc,WAAW,YAAY,OAAO,IAAI,SAAS;AAEjE,QAAM,aAAa,cAAc;AAAA,IAC/B,SAAS;AAAA,IACT,CAAC,QAAQ,GAAG;AAAA,EACd,CAAC;AAED,mBAAiB,cAAc,MAAM,UAAU,GAAG,YAAY;AAC9D,mBAAiB,cAAc,MAAM,WAAW,GAAG,YAAY;AAE/D,MAAI,SAAU,QAAO;AAErB,SACE,gBAAAA,OAAAF,WAAA,EACG;AAAA,iBAAa,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,IAE7C,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,IAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA,WAAW;AAAA,QACX,qBAAqB;AAAA,QACrB,QAAQ,IAAI,CAAC;AAAA,QACb,cAAc;AAAA,QACd,oBAAoB;AAAA,QACpB,yBAAwB;AAAA,QAExB,0BAAAA,MAAC,UAAK,WAAU,mBAAmB,mBAAQ;AAAA;AAAA,IAC7C;AAAA,KACF;AAEJ;;;AD1BM,gBAAAE,aAAA;AAvBC,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,oBAAoB;AACtB,MAAwB;AACtB,QAAM,CAAC,YAAY,aAAa,IAAIC,WAAS,KAAK;AAElD,QAAM,aAAa,MAAM;AACvB,kBAAc,IAAI;AAClB,cAAU,UAAU,UAAU,KAAK;AACnC,eAAW,MAAM,cAAc,KAAK,GAAG,iBAAiB;AAAA,EAC1D;AAEA,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,cAAc,oBAAoB,oBAAoB;AAAA,MAC/D;AAAA,MACA;AAAA,MAEA,0BAAAA,MAAC,UAAK,SAAS,YAAa,UAAS;AAAA;AAAA,EACvC;AAEJ;;;ADwEQ,gBAAAE,OASF,QAAAC,cATE;AApGR,IAAM,aAAa;AAAA,EACjB,oBAAgB,GAAG;AAAA,EACnB,wBAAkB,GAAG;AAAA,EACrB,oBAAgB,GAAG;AACrB;AAEA,IAAM,WAAW;AAAA,EACf,oBAAgB,GAAG;AAAA,EACnB,wBAAkB,GAAG;AAAA,EACrB,oBAAgB,GAAG;AACrB;AAmBO,IAAM,SAAS,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAAA,EACd,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOF,MAAwD;AACtD,QAAM,KAAKC,UAAQ,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;AAChD,QAAM,EAAE,SAAS,IAAI,iBAAmC;AAAA,IACtD,UAAU,OAAK,SAAS,EAAE,OAAO,OAAO;AAAA,IACxC;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,2BAA2B,cAAc;AAAA,IAC7C,oBAAoB;AAAA,IACpB,CAAC,SAAS,GAAG,QAAQ,SAAS;AAAA,IAC9B,CAAC,SAAS,KAAK,EAAE,GAAG,QAAQ,KAAK;AAAA,EACnC,CAAC;AAED,QAAM,kBAAkB,cAAc;AAAA,IACpC,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,eAAe,CAAC,YAAY;AAAA,EAC9B,CAAC;AAED,QAAM,UAAU,WAAW,IAAI,KAAK,kCAA4B;AAChE,QAAM,UAAU,SAAS,KAAK,KAAK,gCAA0B,KAAK;AAClE,QAAM,WAAW,KAAK,IAAI,SAAS,OAAO;AAE1C,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,OACE;AAAA,QACE,GAAG;AAAA,QACH,WAAW,GAAG,MAAM;AAAA,QACpB,cAAc,GAAG,OAAO;AAAA,QACxB,oBAAoB,GAAG,UAAU,KAAK,IAAI,KAAK,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;AAAA,QACvE,aAAa,GAAG,QAAQ;AAAA,MAC1B;AAAA,MAGD;AAAA,oBACC,gBAAAD,MAAC,cAAW,SAAQ,cAAa,WAAU,gBAAe,SAAS,IAChE,qBACH,IACE;AAAA,QACH,aAAa,UACZ,gBAAAA,MAAC,WAAQ,SAAS,iBAAiB,UAAU,CAAC,iBAAiB,QAAQ,IACrE,0BAAAA,MAAC,YAAS,MAAM,GAAG,UAAU,GAAG,MAAM,WAAU,eAAc,SAAS,MAAM,SAAS,CAAC,KAAK,GAAG,GACjG;AAAA,QAEF,gBAAAC,OAAC,aAAQ,WAAW,iBACjB;AAAA,+BAAqB,UACpB,gBAAAD,MAAC,UAAK,WAAU,6BACd,0BAAAA,MAAC,oBAAiB,MAAM,GAAG,UAAU,GAAG,MAAM,GAChD;AAAA,UAED,sBAAsB,UACrB,gBAAAA,MAAC,UAAK,WAAU,8BACd,0BAAAA,MAAC,qBAAkB,MAAM,GAAG,UAAU,GAAG,MAAM,GACjD;AAAA,UAEF,gBAAAA,MAAC,UAAK,WAAU,cAAa;AAAA,UAC7B,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA,MAAK;AAAA,cACL;AAAA,cACA,WAAW,mBAAmB,SAAS;AAAA,cACvC;AAAA,cACA,SAAS;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA,UAAU,YAAY;AAAA,cACrB,GAAG;AAAA;AAAA,UACN;AAAA,WACF;AAAA,QACC,cAAc,UACb,gBAAAA,MAAC,WAAQ,SAAS,kBAAkB,UAAU,CAAC,kBAAkB,QAAQ,IACvE,0BAAAA,MAAC,aAAU,MAAM,GAAG,UAAU,GAAG,MAAM,WAAU,eAAc,SAAS,MAAM,SAAS,CAAC,KAAK,GAAG,GAClG;AAAA,QAED,SAAS,aACR,gBAAAA,MAAC,cAAW,SAAQ,cAAa,WAAU,gBAAe,SAAS,IAChE,mBAAS,YACZ,IACE;AAAA;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,mBAAmB,CAAC,EAAE,OAAO,GAAG,MAAM,MAAsD;AAChG,SAAO,gBAAAA,MAAC,cAAW,WAAW,QAAQ,cAAc,OAAO,YAAY,OAAO,OAAc;AAC9F;AAEA,OAAO,aAAa;;;AGhKX,gBAAAG,aAAA;AADF,IAAM,QAAQ,CAAC,EAAE,MAAM,IAAI,UAAU,SAAS,GAAG,MAAM,MAAkB;AAC9E,SAAO,gBAAAA,MAAC,SAAI,SAAkB,KAAW,GAAG,OAAO,OAAM,QAAO;AAClE;;;ACNA,SAAS,WAAAC,WAAS,YAAAC,kBAAgB;;;ACAlC,SAAS,WAAAC,iBAAe;AACxB,SAAS,iBAAiB,qBAAqB;AAyCb,gBAAAC,OAS5B,QAAAC,cAT4B;AA1B3B,IAAM,mBAAmB,CAAgC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAsC;AACpC,QAAM,YAAY,WAAW,SAAY,SAAS;AAElD,QAAM,kBAAkB,cAAc;AAAA,IACpC,iBAAiB,QAAQ,SAAS;AAAA,EACpC,CAAC;AAED,QAAM,gBAAgB,YAAY,MAAM,gBAAgB,SAAS,IAAI;AAErE,QAAM,WAAWC,UAAQ,MAAM;AAC7B,QAAI,CAAC,UAAW,QAAO;AAEvB,WACE,gBAAAF,MAAC,UAAK,WAAU,aACb,kBAAQ,SAAS,KAChB,cAAc,cACb,eAAe,QAAQ,gBAAAA,MAAC,iBAAc,IAAK,gBAAAA,MAAC,mBAAgB,IACjE;AAAA,EAEJ,GAAG,CAAC,WAAW,WAAW,UAAU,CAAC;AAErC,MAAI,OAAQ,QAAO;AAEnB,SACE,gBAAAC,OAAC,QAAG,OAAO,EAAE,MAAM,GAAG,WAAW,iBAAiB,SAAS,eACzD;AAAA,oBAAAA,OAAC,QAAK,MAAK,UAAS,KAAI,SAAQ,IAAG,iBAAgB,IAAG,UACnD;AAAA,aAAO,gBAAAD,MAAC,QAAK,IAAK;AAAA,MACnB,gBAAAA,MAAC,cAAW,SAAQ,SAAQ,WAAS,MAClC,kBACH;AAAA,MACC;AAAA,OACH;AAAA,IACA,gBAAAA,MAAC,UAAO,OAAM,sBAAqB;AAAA,KACrC;AAEJ;;;AChDM,gBAAAG,aAAA;AAPN,IAAM,kBAAkB,CACtB,MACA,EAAE,OAAO,QAAQ,UAAU,GAC3B,WACoB;AACpB,MAAI,SAAS,KAAK,KAAK;AACrB,WACE,gBAAAA,MAAC,cAAW,WAAS,MAAC,QAAM,MACzB,eAAK,KAAK,GACb;AAGJ,MAAI,OAAQ,QAAO,OAAO,MAAM,MAAM;AAEtC,MAAI,UAAW,QAAO,gBAAAA,MAAC,aAAU,MAAY,QAAgB;AAC/D;AAEO,IAAM,YAAY,CACvB,MACA,SACA,WACG,QAAQ,IAAI,CAAC,QAAQ,QAAS,OAAO,SAAS,OAAO,gBAAAA,MAAC,QAAc,0BAAgB,MAAM,QAAQ,MAAM,KAA1C,GAA4C,CAAM;AAE9G,IAAM,WAAW,CACtB,MACA,QACA,UACG;AACH,MAAI,QAAQ;AACV,WAAO,KAAK,SAAS,CAAC,GAAG,MAAM;AAC7B,YAAM,SAAS,EAAE,MAAM;AACvB,YAAM,SAAS,EAAE,MAAM;AAEvB,UACE,CAAC,UAAU,WAAW,QAAQ,EAAE,SAAS,OAAO,MAAM,KACtD,CAAC,UAAU,WAAW,QAAQ,EAAE,SAAS,OAAO,MAAM,GACtD;AACA,YAAI,WAAW,OAAQ,QAAO;AAE9B,YAAI,UAAU,OAAO;AACnB,iBAAO,SAAS,SAAS,IAAI;AAAA,QAC/B;AAEA,eAAO,SAAS,SAAS,KAAK;AAAA,MAChC;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;ACzDA,SAAS,eAAAC,eAAa,YAAAC,kBAAgB;AAI/B,IAAM,UAAU,MAAqC;AAC1D,QAAM,CAAC,CAAC,QAAQ,KAAK,GAAG,YAAY,IAAIA,WAA+D,CAAC,MAAM,IAAI,CAAC;AAEnH,QAAM,kBAAkBD,cAAY,CAAC,gBAA+C;AAClF,iBAAa,CAAC,CAACE,SAAQC,MAAK,MAAM;AAChC,UAAI,gBAAgBD,SAAQ;AAC1B,eAAO,CAAC,aAAa,KAAK;AAAA,MAC5B;AAEA,UAAIC,WAAU,OAAO;AACnB,eAAO,CAAC,aAAa,MAAM;AAAA,MAC7B;AAEA,aAAO,CAAC,MAAM,IAAI;AAAA,IACpB,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACAS,gBAAAC,aAAA;AAXF,IAAM,gBAAgB,CAAgC;AAAA,EAC3D;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,aAAa;AAAA,EACb;AACF,MAAmC;AACjC,QAAM,eAAe,cAAc;AAAA,IACjC,gBAAgB,cAAc;AAAA,EAChC,CAAC;AAED,SAAO,gBAAAA,MAAC,QAAG,WAAW,cAAe,oBAAU,MAAM,SAAS,MAAM,GAAE;AACxE;;;AJ6BY,gBAAAC,OA8BN,QAAAC,cA9BM;AAjCL,IAAM,aAAa,CAAgC;AAAA,EACxD,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA,YAAY;AAAA,EACZ,gBAAgB,kBAAkB;AACpC,MAAgC;AAC9B,QAAM,CAAC,UAAU,WAAW,IAAIC,WAAqC,CAAC,CAAC;AAEvE,QAAM,iBAAiB,cAAc;AAAA,IACnC,eAAe;AAAA,IACf,CAAC,eAAe,GAAG,QAAQ,eAAe;AAAA,IAC1C,gBAAgB,UAAU;AAAA,IAC1B,qBAAqB,UAAU;AAAA,EACjC,CAAC;AAED,QAAM,0BAA0B,cAAc;AAAA,IAC5C,yBAAyB;AAAA,IACzB,CAAC,SAAS,GAAG,QAAQ,SAAS;AAAA,EAChC,CAAC;AAED,QAAM,EAAE,QAAQ,OAAO,gBAAgB,IAAI,QAAiB;AAE5D,QAAM,UAAUC,UAAQ,MAAM;AAC5B,QAAI,eAAe,CAAC,GAAG,cAAc;AAErC,QAAI,YAAY;AACd,qBAAe;AAAA,QACb;AAAA,UACE,QAAQ,GAAG,OAAO,OAAO,QAAQ,EAAE,MAAM;AAAA,UACzC,QAAQ,CAACC,OAAM,WACb,gBAAAJ;AAAA,YAAC;AAAA;AAAA,cACC,MAAM,YAAY,MAAM;AAAA,cACxB,OAAO,GAAG,MAAM,MAAM;AAAA,cACtB,UAAU,gBAAc;AACtB,4BAAY,UAAQ;AAClB,wBAAM,OAAO,EAAE,GAAG,KAAK;AAEvB,sBAAI,YAAY;AACd,yBAAK,GAAG,MAAM,EAAE,IAAII;AAAA,kBACtB,OAAO;AACL,2BAAO,KAAK,GAAG,MAAM,EAAE;AAAA,kBACzB;AAEA,yBAAO;AAAA,gBACT,CAAC;AAAA,cACH;AAAA;AAAA,UACF;AAAA,QAEJ;AAAA,QACA,GAAG;AAAA,MACL;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,gBAAgB,YAAY,QAAQ,CAAC;AAEzC,QAAM,OAAOD,UAAQ,MAAM,SAAkB,MAAM,QAAQ,KAAK,GAAG,CAAC,MAAM,QAAQ,KAAK,CAAC;AAExF,SACE,gBAAAH,MAAC,aAAQ,WAAW,yBAClB,0BAAAC,OAAC,WAAM,WAAW,gBAChB;AAAA,oBAAAD,MAAC,WACC,0BAAAA,MAAC,QACE,kBAAQ,IAAI,CAAC,QAAQ,QACpB,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC;AAAA,QACA,WAAW;AAAA,QACX,YAAY;AAAA,QACX,GAAG;AAAA;AAAA,MAJC;AAAA,IAKP,CACD,GACH,GACF;AAAA,IACA,gBAAAA,MAAC,WACE,eAAK,IAAI,SACR,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,QAAQ,IAAI,KAAK;AAAA,QACjB,MAAM;AAAA,QACN;AAAA,QACA,YAAY,GAAG,IAAI,KAAK,CAAc,MAAM;AAAA,QAC5C;AAAA;AAAA,MALK,IAAI,KAAK;AAAA,IAMhB,CACD,GACH;AAAA,KACF,GACF;AAEJ;;;AKnHA,SAAgB,iBAAAK,gBAAe,cAAAC,aAAY,aAAAC,aAAW,YAAAC,kBAAgB;;;ACAtE,SAAgB,aAAAC,aAAW,UAAAC,UAAQ,YAAAC,kBAAgB;AA6G/C,SACuB,OAAAC,OADvB,QAAAC,cAAA;AAzFJ,IAAM,cAAc;AAAA,EAClB,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACV;AAoCO,IAAM,WAAW,CAAC;AAAA,EACvB,OAAO,CAAC;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AAAA,EACT,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,QAAQ,CAAC;AACX,MAAoB;AAClB,QAAM,eAAeC,SAAuB,IAAI;AAChD,QAAM,iBAAiBA,SAAwB,IAAI;AACnD,QAAM,CAAC,kBAAkB,mBAAmB,IAAIC,WAAS,KAAK;AAC9D,QAAM,CAAC,UAAU,WAAW,IAAIA,WAAS,WAAW;AACpD,QAAM,sBAAsB,cAAc;AAAA,IACxC,YAAY;AAAA,IACZ,CAAC,WAAW,OAAO,EAAE,GAAG,QAAQ,OAAO;AAAA,IACvC,CAAC,QAAQ,IAAI,EAAE,GAAG,QAAQ,IAAI;AAAA,IAC9B,CAAC,UAAU,MAAM,EAAE,GAAG,QAAQ,MAAM;AAAA,IACpC,CAAC,SAAS,KAAK,EAAE,GAAG,QAAQ,KAAK;AAAA,IACjC,sBAAsB,cAAc;AAAA,IACpC,CAAC,SAAS,GAAG,QAAQ,SAAS;AAAA,EAChC,CAAC;AAED,EAAAC,YAAU,MAAM;AACd,UAAM,eAAe,eAAe,SAAS,sBAAsB,KAAK;AACxE,UAAM,gBAAgB,aAAa,SAAS,sBAAsB,KAAK;AAEvE,UAAM,QAAQ,aAAa;AAC3B,UAAM,SAAS,YAAY,oBAAsB,IAAI,aAAa;AAClE,UAAM,OAAO,aAAa,OAAO,cAAc;AAC/C,UAAM,MACJ,YAAY,oBACR,aAAa,MAAM,aAAa,SAAS,cAAc,MACvD,aAAa,MAAM,cAAc;AAEvC,gBAAY,EAAE,MAAM,KAAK,OAAO,OAAO,CAAC;AAExC,QAAI,CAAC,kBAAkB;AACrB,iBAAW,MAAM;AACf,4BAAoB,IAAI;AAAA,MAC1B,GAAG,GAAG;AAAA,IACR;AAAA,EACF,GAAG,CAAC,kBAAkB,SAAS,OAAO,CAAC;AAEvC,SACE,gBAAAC,OAAC,aAAQ,WAAW,qBAAqB,KAAK,cAAc,OACzD;AAAA,YAAQ,OAAO,KAAK,gBAAAC,MAAC,UAAK,WAAW,iBAAiB,mBAAmB,WAAW,EAAE,IAAI,OAAO,UAAU;AAAA,IAC3G,KAAK,IAAI,CAAC,EAAE,IAAI,MAAM,MACrB,gBAAAA,MAAC,KAAK,KAAL,EAAkB,IAAQ,KAAK,OAAO,UAAU,iBAAiB,QAC/D,mBADY,EAEf,CACD;AAAA,IACA;AAAA,KACH;AAEJ;;;ADnEI,gBAAAC,aAAA;AAxCJ,IAAM,cAAcC,eAAuC,IAAI;AAE/D,IAAM,SAAS,CAAC,OAAsC;AACpD,QAAM,UAAUC,YAAW,WAAW;AAEtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE;AAEA,QAAM,EAAE,SAAS,cAAc,IAAI;AAEnC,SAAO,CAAC,YAAY,IAAI,MAAM,cAAc,EAAE,CAAC;AACjD;AAEA,IAAM,iBAAiB,MAAwB;AAC7C,QAAM,UAAUA,YAAW,WAAW;AAEtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE;AAEA,SAAO;AACT;AAQO,IAAM,OAAO,CAAC,EAAE,UAAU,gBAAgB,SAAS,MAAiB;AACzE,QAAM,CAAC,SAAS,UAAU,IAAIC,WAAS,cAAc;AAErD,EAAAC,YAAU,MAAM;AACd,QAAI,UAAU;AACZ,eAAS,OAAO;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,SAAS,QAAQ,CAAC;AAEtB,SACE,gBAAAJ;AAAA,IAAC,YAAY;AAAA,IAAZ;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA,eAAe,QAAM,WAAW,EAAE;AAAA,MACpC;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAWA,IAAM,MAAM,CAAC,EAAE,IAAI,UAAU,YAAY,IAAI,QAAQ,CAAC,GAAG,SAAS,IAAI,MAAgB;AACpF,QAAM,CAAC,QAAQ,OAAO,IAAI,OAAO,EAAE;AACnC,QAAM,gBAAgB,cAAc;AAAA,IAClC,KAAK;AAAA,IACL,CAAC,SAAS,GAAG,CAAC,CAAC;AAAA,IACf,WAAW;AAAA,EACb,CAAC;AAED,QAAM,cAAc,CAAC,MAAyC;AAC5D,YAAQ;AAER,QAAI,SAAS;AACX,cAAQ,CAAC;AAAA,IACX;AAAA,EACF;AAEA,SACE,gBAAAA,MAAC,UAAK,WAAW,eAAe,OAAc,SAAS,aAAa,KACjE,UACH;AAEJ;AAOA,IAAM,WAAW,CAAC,EAAE,IAAI,SAAS,MAAqB;AACpD,QAAM,CAAC,MAAM,IAAI,OAAO,EAAE;AAE1B,SAAO,SAAS,WAAW;AAC7B;AAEA,IAAM,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,MAAqC;AACzE,QAAM,EAAE,QAAQ,IAAI,eAAe;AAEnC,SACE,gBAAAA,MAAC,YAAkB,GAAG,OAAO,SAC1B,UACH;AAEJ;AAEA,KAAK,MAAM;AACX,KAAK,WAAW;AAChB,KAAK,UAAU;;;AEzFX,gBAAAK,aAAA;AAzBG,IAAK,aAAL,kBAAKC,gBAAL;AACL,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,WAAQ;AACR,EAAAA,YAAA,YAAS;AACT,EAAAA,YAAA,WAAQ;AACR,EAAAA,YAAA,UAAO;AALG,SAAAA;AAAA,GAAA;AAgBL,IAAM,MAAM,CAAC,EAAE,UAAU,UAAU,uBAAmB,WAAW,OAAO,SAAS,OAAO,IAAI,MAAgB;AACjH,QAAM,YAAY,cAAc;AAAA,IAC9B,KAAK;AAAA,IACL,CAAC,WAAW,OAAO,EAAE,GAAG,QAAQ,OAAO;AAAA,IACvC,eAAe;AAAA,IACf,WAAW;AAAA,EACb,CAAC;AAED,SACE,gBAAAD,MAAC,UAAK,WAAsB,KACzB,UACH;AAEJ;","names":["useCallback","useMemo","useState","useEffect","useEffect","useEffect","useState","domContainer","useRef","useState","useEffect","useState","useRef","useState","useEffect","useState","useRef","useState","useCallback","useLayoutEffect","useRef","useRef","useCallback","modalRef","containerRef","useLayoutEffect","React","useCallback","useEffect","useLayoutEffect","useMemo","React","useMemo","useEffect","useCallback","useLayoutEffect","useRef","useState","useRef","useState","useCallback","useState","index","LineOrientation","LineStyle","jsx","useState","useCallback","useMemo","useMemo","jsx","useMemo","jsx","useMemo","useCallback","useRef","jsx","useRef","useCallback","useMemo","useMemo","jsx","jsxs","useMemo","useEffect","useRef","jsx","useRef","useEffect","jsx","jsxs","useEffect","useState","jsx","jsxs","useState","useEffect","useMemo","jsx","value","jsx","jsxs","useMemo","useMemo","FieldVariant","FieldOrientation","jsx","jsxs","jsx","useMemo","useMemo","jsx","useMemo","useMemo","jsx","useMemo","useCallback","useEffect","useMemo","useRef","useState","createContext","useCallback","useContext","useRef","useState","ImCross","useMemo","useRef","useMemo","jsx","ModalBackdrop","useMemo","jsx","jsxs","useMemo","useRef","jsx","jsxs","createContext","useContext","useState","useRef","useCallback","ImCross","useMemo","ImCross","jsx","jsxs","useMemo","ImCross","jsx","jsxs","useCallback","useMemo","jsx","jsxs","useCallback","useMemo","jsx","jsxs","useState","useMemo","useRef","useEffect","useCallback","useCallback","useEffect","useMemo","useState","IoIosWarning","createElement","createElement","Fragment","jsx","jsxs","useState","useMemo","useEffect","useCallback","IoIosWarning","useEffect","useMemo","useState","jsx","useMemo","useState","useEffect","InputController","useMemo","jsx","jsxs","useMemo","createContext","useCallback","useContext","useMemo","useRef","useState","ImCross","useEffect","Fragment","jsx","jsxs","useEffect","useCallback","useMemo","jsx","useCallback","isSelected","useMemo","useCallback","useEffect","useRef","useState","jsx","jsxs","useState","useCallback","useEffect","useRef","jsx","jsxs","createContext","useContext","useMemo","useRef","useState","useCallback","value","ImCross","useMemo","jsx","jsxs","useMemo","useMemo","jsx","useMemo","useMemo","useState","Fragment","jsx","jsxs","jsx","useState","jsx","jsxs","useMemo","jsx","useMemo","useState","useMemo","jsx","jsxs","useMemo","jsx","useCallback","useState","sortBy","order","jsx","jsx","jsxs","useState","useMemo","data","createContext","useContext","useEffect","useState","useEffect","useRef","useState","jsx","jsxs","useRef","useState","useEffect","jsxs","jsx","jsx","createContext","useContext","useState","useEffect","jsx","TagRounded"]}