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.
- package/dist/components.cjs +3654 -1
- package/dist/components.cjs.map +1 -1
- package/dist/components.css +2172 -1
- package/dist/components.css.map +1 -1
- package/dist/components.js +3575 -1
- package/dist/components.js.map +1 -1
- package/dist/helpers.cjs +310 -1
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.js +275 -1
- package/dist/helpers.js.map +1 -1
- package/dist/hooks.cjs +1064 -1
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.js +997 -1
- package/dist/hooks.js.map +1 -1
- package/dist/layouts.cjs +145 -1
- package/dist/layouts.cjs.map +1 -1
- package/dist/layouts.css +4 -1
- package/dist/layouts.css.map +1 -1
- package/dist/layouts.js +118 -1
- package/dist/layouts.js.map +1 -1
- package/dist/types.cjs +18 -1
- package/dist/types.cjs.map +1 -1
- package/package.json +4 -3
package/dist/components.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/index.ts","../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":["export * from './accordion';\nexport * from './button';\nexport * from './cards';\nexport * from './cursor';\nexport * from './form';\nexport * from './image';\nexport * from './infinity-scroll';\nexport * from './line';\nexport * from './modals';\nexport * from './ripple';\nexport * from './smart-table';\nexport * from './tabs';\nexport * from './tag';\nexport * from './tooltips';\nexport * from './typography';\n","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":";+kBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,eAAAE,GAAA,kBAAAC,GAAA,gBAAAC,GAAA,eAAAC,GAAA,aAAAC,GAAA,WAAAC,GAAA,aAAAC,GAAA,gBAAAC,GAAA,sBAAAC,GAAA,WAAAC,GAAA,eAAAC,GAAA,UAAAC,EAAA,qBAAAC,GAAA,iBAAAC,GAAA,aAAAC,GAAA,cAAAC,GAAA,UAAAC,GAAA,mBAAAC,GAAA,UAAAC,GAAA,eAAAC,GAAA,cAAAC,GAAA,gBAAAC,GAAA,kBAAAC,GAAA,SAAAC,GAAA,oBAAAC,GAAA,cAAAC,GAAA,SAAAC,EAAA,UAAAC,EAAA,kBAAAC,GAAA,WAAAC,GAAA,UAAAC,GAAA,WAAAC,GAAA,WAAAC,GAAA,cAAAC,GAAA,WAAAC,GAAA,eAAAC,GAAA,WAAAC,GAAA,SAAAC,GAAA,QAAAC,GAAA,eAAAC,GAAA,aAAAC,GAAA,YAAAC,GAAA,eAAAC,EAAA,qBAAAC,KAAA,eAAAC,GAAA9C,ICAA,IAAA+C,EAAiF,iBCAjF,IAAAC,GAAwB,iBAEXC,EAAiBC,MAC5B,YACE,IACE,OAAO,QAAQA,CAAO,EACnB,OACC,CAACC,EAAoB,CAACC,EAAWC,CAAK,IAAOA,EAAQ,CAAC,GAAGF,EAAoBC,CAAS,EAAID,EAC1F,CAAC,CACH,EACC,KAAK,GAAG,EACb,CAACD,CAAO,CACV,ECZF,IAAAI,GAA8D,iBA8B9D,SAASC,EAOPC,EACAC,EAQAC,EACAC,EACA,CACA,IAAMC,KAAc,WAAsBH,CAAQ,KAElD,cAAU,IAAM,CACdG,EAAY,QAAUH,CACxB,EAAG,CAACA,CAAQ,CAAC,KAEb,oBAAgB,IAAM,CACpB,IAAMI,EAAgBH,GAAS,SAAW,OAE1C,GAAI,EAAEG,GAAiBA,EAAc,kBAAmB,OAExD,IAAMC,EAA4BC,GAASH,EAAY,QAAQG,CAAK,EAEpE,OAAAF,EAAc,iBAAiBL,EAAWM,EAAUH,CAAO,EAEpD,IAAM,CACXE,EAAc,oBAAoBL,EAAWM,EAAUH,CAAO,CAChE,CACF,EAAG,CAACH,EAAWE,EAASC,CAAO,CAAC,CAClC,CChEA,IAAMK,GAAiB,CAACC,EAAoCC,IACnDD,EAAI,SAAW,CAACA,EAAI,QAAQ,SAASC,CAAM,EAGvCC,GAAkB,CAC7BF,EACAG,IACG,CACHC,EAAiB,UAAWC,GAAK,CAC3BA,EAAE,MAAQ,UACZF,EAAS,CAEb,CAAC,EAEDC,EAAiB,YAAaE,GAAS,CACrC,IAAML,EAASK,EAAM,OAErB,GAAI,CAACL,GAAQ,YACX,QAGiB,MAAM,QAAQD,CAAG,EAAIA,EAAM,CAACA,CAAG,GAAG,MAAMO,GAAKR,GAAeQ,EAAGN,CAAM,CAAC,GAGvFE,EAAS,CAEb,CAAC,CACH,EC/BA,IAAAK,GAAoC,iBAEvBC,GAAc,CAAIC,EAAUC,EAAgB,MAAW,CAClE,GAAM,CAACC,EAAgBC,CAAiB,KAAI,aAAYH,CAAK,EAE7D,uBAAU,IAAM,CACd,IAAMI,EAAQ,WAAW,IAAMD,EAAkBH,CAAK,EAAGC,CAAK,EAE9D,MAAO,IAAM,CACX,aAAaG,CAAK,CACpB,CACF,EAAG,CAACJ,EAAOC,CAAK,CAAC,EAEVC,CACT,ECdA,IAAAG,GAAqC,iBAExBC,GAAoB,CAC/BC,EACAC,IACG,IACH,cAAU,IAAM,CACd,IAAMC,EAAO,MAAM,QAAQF,CAAG,EAAIA,EAAM,CAACA,CAAG,EAEtCG,EAAW,IAAI,eAAeF,CAAQ,EAE5C,OAAAC,EAAK,QAAQE,GAAKA,EAAE,SAAWD,EAAS,QAAQC,EAAE,OAAO,CAAC,EAEnD,IAAM,CACXD,EAAS,WAAW,CACtB,CACF,EAAG,CAACH,EAAKC,CAAQ,CAAC,CACpB,ECjBA,IAAAI,GAAoC,iBAE9BC,GAAmBC,GAAwB,CAC/C,IAAIC,EAAe,SAAS,eAAeD,CAAW,EAEtD,OAAIC,IAAiB,OACnBA,EAAe,SAAS,cAAc,KAAK,EAC3CA,EAAa,aAAa,KAAMD,CAAW,EAC3C,SAAS,KAAK,YAAYC,CAAY,GAGjCA,CACT,EAEaC,GAAmBF,GAAwB,CACtD,GAAM,CAACG,EAAWC,CAAY,KAAI,aAA6B,IAAML,GAAgBC,CAAW,CAAC,EAEjG,uBAAU,IAAM,CACd,IAAMC,EAAe,SAAS,eAAeD,CAAW,EAExD,GAAIG,IAAc,MAAQF,IAAiB,KAAM,CAC/C,IAAMA,EAAeF,GAAgBC,CAAW,EAEhDI,EAAaH,CAAY,CAC3B,CAEA,MAAO,IAAM,CACPE,GAAaA,EAAU,YAAc,QAAQ,IAAI,WAAa,cAChE,SAAS,KAAK,YAAYA,CAAS,CAEvC,CACF,EAAG,CAACA,EAAWH,CAAW,CAAC,EAEpBG,CACT,EClCO,IAAME,GAAc,CAACC,EAAeC,EAAW,IAAM,CAC1D,GAAID,IAAU,EAAG,MAAO,UAExB,IAAME,EAAI,IACJC,EAAKF,EAAW,EAAI,EAAIA,EACxBG,EAAQ,CAAC,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EAEhEC,EAAI,KAAK,MAAM,KAAK,IAAIL,CAAK,EAAI,KAAK,IAAIE,CAAC,CAAC,EAElD,OAAO,YAAYF,EAAQ,KAAK,IAAIE,EAAGG,CAAC,GAAG,QAAQF,CAAE,CAAC,EAAI,IAAMC,EAAMC,CAAC,CACzE,EC0CO,IAAMC,GAAmB,CAAC,CAAE,EAAAC,EAAG,EAAAC,EAAG,OAAAC,EAAQ,SAAAC,CAAS,IAA6C,CAErG,IAAIC,EAAMJ,EAAE,EAAIA,EAAE,EAAIE,EAClBG,EAAOL,EAAE,GAAKC,EAAE,EAAID,EAAE,IAAM,GAAK,KAErC,OAAQG,EAAU,CAChB,IAAK,MACL,IAAK,aACHC,EAAMJ,EAAE,EAAIC,EAAE,EAAIC,EAClBG,EAAOL,EAAE,GAAKC,EAAE,EAAID,EAAE,GAAK,EAE3B,MACF,IAAK,WACHI,EAAMJ,EAAE,EAAIC,EAAE,EAAIC,EAClBG,EAAOL,EAAE,EAAIC,EAAE,EAAID,EAAE,EAErB,MAEF,IAAK,YACHI,EAAMJ,EAAE,EAAIC,EAAE,EAAIC,EAClBG,EAAOL,EAAE,EAET,MAEF,IAAK,SACL,IAAK,gBACHI,EAAMJ,EAAE,EAAIA,EAAE,EAAIE,EAClBG,EAAOL,EAAE,GAAKC,EAAE,EAAID,EAAE,GAAK,EAE3B,MAEF,IAAK,cACHI,EAAMJ,EAAE,EAAIA,EAAE,EAAIE,EAClBG,EAAOL,EAAE,EAAIC,EAAE,EAAID,EAAE,EAErB,MAEF,IAAK,eACHI,EAAMJ,EAAE,EAAIA,EAAE,EAAIE,EAClBG,EAAOL,EAAE,EAET,MAEF,IAAK,OACL,IAAK,cACHI,EAAMJ,EAAE,GAAKC,EAAE,EAAID,EAAE,GAAK,EAC1BK,EAAOL,EAAE,EAAIC,EAAE,EAAIC,EAEnB,MAEF,IAAK,WACHE,EAAMJ,EAAE,EAAIC,EAAE,EAAID,EAAE,EACpBK,EAAOL,EAAE,EAAIC,EAAE,EAAIC,EAEnB,MAEF,IAAK,cACHE,EAAMJ,EAAE,EACRK,EAAOL,EAAE,EAAIC,EAAE,EAAIC,EAEnB,MAEF,IAAK,QACL,IAAK,eACHE,EAAMJ,EAAE,GAAKC,EAAE,EAAID,EAAE,GAAK,EAC1BK,EAAOL,EAAE,EAAIA,EAAE,EAAIE,EAEnB,MAEF,IAAK,YACHE,EAAMJ,EAAE,EAAIC,EAAE,EAAID,EAAE,EACpBK,EAAOL,EAAE,EAAIA,EAAE,EAAIE,EAEnB,MAEF,IAAK,eACHE,EAAMJ,EAAE,EACRK,EAAOL,EAAE,EAAIA,EAAE,EAAIE,EAEnB,KACJ,CAEA,MAAO,CACL,KAAM,KAAK,MAAMG,CAAI,EACrB,IAAK,KAAK,MAAMD,CAAG,CACrB,CACF,EAEaE,GAAsB,CACjC,CAAE,IAAAF,EAAK,KAAAC,CAAK,EACZF,EACAI,EACAN,IACG,CACH,IAAMO,EAAYL,EAAS,MAAM,GAAG,EAC9BM,EAAc,CAAC,EACfC,EAAcL,EAAOJ,EAAE,EAAIM,EAAe,OAAO,WACjDI,EAAeP,EAAMH,EAAE,EAAIM,EAAe,OAAO,YAEvD,QAAWK,KAAKJ,EACVI,IAAM,OAAyBR,EAAMG,EACvCE,EAAY,KAAK,QAAwB,EAChCG,IAAM,QAA0BP,EAAOE,EAChDE,EAAY,KAAK,OAAuB,EAC/BG,IAAM,UAA4BD,EAAe,EAC1DF,EAAY,KAAK,KAAqB,EAC7BG,IAAM,SAA2BF,EAAc,EACxDD,EAAY,KAAK,MAAsB,EAEvCA,EAAY,KAAKG,CAAC,EAItB,OAAOH,EAAY,KAAK,GAAG,CAC7B,EAEaI,GAAmB,CAAC,CAAE,IAAAT,EAAK,KAAAC,CAAK,EAAkBJ,EAAmBM,IAAyB,CACzG,IAAMG,EAAcL,EAAOJ,EAAE,EAAIM,EAAe,OAAO,WACjDI,EAAeP,EAAMH,EAAE,EAAIM,EAAe,OAAO,YAEvD,OAAAF,EAAOK,EAAc,EAAIL,EAAOK,EAAcL,EAC9CD,EAAMO,EAAe,EAAIP,EAAMO,EAAeP,EAE9CC,EAAOA,EAAOE,EAAeA,EAAeF,EAC5CD,EAAMA,EAAMG,EAAeA,EAAeH,EAEnC,CAAE,IAAAA,EAAK,KAAAC,CAAK,CACrB,EAMaS,GAAsC,CAAC,CAClD,EAAAd,EACA,EAAAC,EACA,OAAAC,EACA,aAAAK,EACA,SAAAJ,CACF,IAAyE,CACvE,IAAMY,EAAS,CAAE,EAAAf,EAAG,EAAAC,EAAG,OAAAC,EAAQ,SAAAC,CAAS,EACpCa,EAAsBjB,GAAiBgB,CAAM,EAE3CE,EAAmBX,GAAoBU,EAAqBb,EAAUI,EAAcN,CAAC,EAEvFgB,IAAqBd,IACvBa,EAAsBjB,GAAiB,CACrC,GAAGgB,EACH,SAAUE,CACZ,CAAC,GAGH,IAAMC,EAAgBL,GAAiBG,EAAqBf,EAAGM,CAAY,EAE3E,MAAO,CACL,KAAM,GAAGW,EAAc,IAAI,KAC3B,IAAK,GAAGA,EAAc,GAAG,IAC3B,CACF,EC3MO,IAAMC,GAAmC,CAAC,CAC/C,SAAAC,EACA,aAAAC,CACF,IAAsE,CACpE,OAAQD,EAAU,CAChB,aACE,MAAO,CACL,IAAK,MACL,KAAM,MACN,UAAW,uBACb,EAEF,UACA,iBACE,MAAO,CACL,IAAK,GAAGC,CAAY,KACpB,KAAM,MACN,UAAW,kBACb,EAEF,eACA,eACE,MAAO,CACL,IAAK,GAAGA,CAAY,KACpB,KAAM,GAAGA,CAAY,IACvB,EAEF,gBACA,gBACE,MAAO,CACL,IAAK,GAAGA,CAAY,KACpB,MAAO,GAAGA,CAAY,IACxB,EAEF,aACA,oBACE,MAAO,CACL,OAAQ,GAAGA,CAAY,KACvB,KAAM,MACN,UAAW,kBACb,EAEF,kBACA,kBACE,MAAO,CACL,OAAQ,GAAGA,CAAY,KACvB,KAAM,GAAGA,CAAY,IACvB,EAEF,mBACA,mBACE,MAAO,CACL,OAAQ,GAAGA,CAAY,KACvB,MAAO,GAAGA,CAAY,IACxB,EAEF,WACA,kBACE,MAAO,CACL,IAAK,MACL,KAAM,GAAGA,CAAY,KACrB,UAAW,kBACb,EAEF,YACA,mBACE,MAAO,CACL,IAAK,MACL,MAAO,GAAGA,CAAY,KACtB,UAAW,kBACb,CACJ,CAEA,MAAO,CACL,IAAK,MACL,KAAM,MACN,UAAW,uBACb,CACF,ECrFA,IAAAC,GAAiC,iBCAjC,IAAAC,GAAqC,iBAExBC,GAA0B,CACrCC,EACAC,EACAC,EAAwC,CAAC,IACtC,IACH,cAAU,IAAM,CACd,IAAMC,EAAO,MAAM,QAAQH,CAAG,EAAIA,EAAM,CAACA,CAAG,EAEtCI,EAAW,IAAI,qBAAqBH,EAAUC,CAAW,EAE/D,OAAAC,EAAK,QAAQE,GAAKA,EAAE,SAAWD,EAAS,QAAQC,EAAE,OAAO,CAAC,EAEnD,IAAM,CACXD,EAAS,WAAW,CACtB,CACF,EAAG,CAACH,EAAUC,EAAaF,CAAG,CAAC,CACjC,EDdO,IAAMM,GAAY,CAACC,EAAwC,CAAC,IAAM,CACvE,GAAM,CAACC,EAAQC,CAAS,KAAI,aAAS,EAAK,EACpCC,KAAM,WAAoB,IAAI,EAEpC,OAAAC,GACED,EACA,CAAC,CAACE,CAAK,IAAM,CACXH,EAAUG,EAAM,cAAc,CAChC,EACAL,CACF,EAEO,CAAE,IAAAG,EAAK,OAAAF,CAAO,CACvB,EEjBA,IAAAK,GAA6C,iBAUhCC,EAAmB,CAAuB,CACrD,OAAAC,EACA,QAAAC,EACA,SAAAC,CACF,EAA8B,CAAC,IAAM,CACnC,GAAM,CAACC,EAASC,CAAU,KAAI,aAAS,EAAK,EAEtCC,KAAc,gBACjBC,GAA2B,CAC1BF,EAAW,EAAI,EAEfH,GAAWA,EAAQK,CAAC,CACtB,EACA,CAACL,CAAO,CACV,EAEMM,KAAa,gBAChBD,GAA2B,CAC1BF,EAAW,EAAK,EAEhBJ,GAAUA,EAAOM,CAAC,CACpB,EACA,CAACN,CAAM,CACT,EAEMQ,KAAe,gBAClBF,GAA4B,CAE3BJ,GAAYA,EAASI,CAAC,CACxB,EACA,CAACJ,CAAQ,CACX,EAEA,MAAO,CACL,QAAAC,EACA,SAAU,CACR,QAASE,EACT,OAAQE,EACR,SAAUC,CACZ,CACF,CACF,ECnDA,IAAAC,GAAoC,iBAEvBC,GAAiBC,GAA2B,CACvD,GAAM,CAACC,EAASC,CAAU,KAAI,aAAS,EAAK,EAE5C,uBAAU,IAAM,CACd,IAAMC,EAAQ,OAAO,WAAWH,CAAK,EAEjCG,EAAM,UAAYF,GACpBC,EAAWC,EAAM,OAAO,EAG1B,IAAMC,EAAW,IAAM,CACrBF,EAAWC,EAAM,OAAO,CAC1B,EAEA,OAAAA,EAAM,iBAAiB,SAAUC,CAAQ,EAElC,IAAM,CACXD,EAAM,oBAAoB,SAAUC,CAAQ,CAC9C,CACF,EAAG,CAACH,EAASD,CAAK,CAAC,EAEZC,CACT,ECxBA,IAAAI,GAAiC,iBAEpBC,GAAW,IAA6B,CACnD,IAAMC,KAAe,WAAU,IAAI,EAC7B,CAACC,EAAQC,CAAS,KAAI,aAAS,EAAK,EAU1C,MAAO,CACL,aAAAF,EACA,OAAAC,EACA,UAXgB,IAAM,CACtBC,EAAU,EAAI,CAChB,EAUE,WARiB,IAAM,CACvBA,EAAU,EAAK,CACjB,CAOA,CACF,ECpBA,IAAAC,GAAgE,iBAYhE,IAAMC,GAA4BC,IAA2C,CAC3E,EAAGA,EAAK,EACR,EAAGA,EAAK,EACR,EAAGA,EAAK,MACR,EAAGA,EAAK,OACR,IAAKA,EAAK,IACV,KAAMA,EAAK,IACb,GAcaC,GAAsB,CAGjC,CACA,OAAAC,EAAS,EACT,aAAAC,EAAe,EACf,SAAAC,WACA,SAAAC,EACA,aAAAC,EACA,OAAAC,CACF,IAAmD,CACjD,IAAMC,KAAuB,WAAkB,IAAI,EAE7CC,KAAc,gBAClB,CAACJ,EAAmCC,IAA8C,CAChF,IAAMI,EAAQL,EAAS,SAAS,eAAe,EAAE,CAAC,EAC5CM,EAAYL,EAAa,SAAS,eAAe,EAAE,CAAC,EAE1D,GAAI,CAACI,EACH,OAGF,IAAME,EAAsCD,EAExCE,GAAoC,CAClC,EAAGd,GAAyBY,CAAS,EACrC,EAAGZ,GAAyBW,CAAK,EACjC,OAAAR,EACA,aAAAC,EACA,SAAUC,CACZ,CAAC,EAPDU,GAAiC,CAAE,SAAUV,EAA+B,aAAAD,CAAa,CAAC,EAS9F,OAAO,KAAKS,CAAU,EAAE,QAAQG,GAAO,CACrCV,EAAS,SAAS,MAAM,YAAYU,EAAKH,EAAWG,CAAG,CAAC,CAC1D,CAAC,CACH,EACA,CAACX,EAAUD,EAAcD,CAAM,CACjC,EAEMc,KAAW,gBAAY,IAAM,CAC7BT,GACFE,EAAYJ,EAAUC,GAAgBE,CAAoB,CAE9D,EAAG,CAACC,EAAaF,EAAQD,EAAcD,CAAQ,CAAC,KAEhD,oBAAgBW,EAAU,CAACA,CAAQ,CAAC,EAEpCC,GAA6BX,GAAgBE,EAAsBQ,CAAQ,EAC3EC,GAAyBZ,EAAUW,CAAQ,EAC3CE,EAAiB,SAAUF,CAAQ,EACnCE,EAAiB,SAAUF,EAAUX,CAAQ,CAC/C,ECpFA,IAAAc,EAAwE,uBAcjE,IAAMC,GAAqB,CAAC,CAAE,mBAAAC,EAAqB,EAAG,OAAAC,CAAO,IAAgC,CAClG,GAAM,CAACC,EAAYC,CAAa,EAAI,EAAAC,QAAM,SAAqB,QAAiB,EAE1EC,KAAY,WAAQ,IACjBH,IAAe,SACrB,CAACA,CAAU,CAAC,KAEf,aAAU,IAAM,CACd,SAAS,gBAAgB,MAAM,SAAWG,EAAY,SAAW,MACnE,EAAG,CAACA,CAAS,CAAC,EAEd,IAAMC,KAAa,eAAY,IAAM,CAC/B,CAAC,UAAoB,MAAe,EAAE,SAASJ,CAAU,IACvDF,EAAqB,GACvBG,EAAc,SAAkB,EAChC,WAAW,IAAM,CACfA,EAAc,QAAiB,CACjC,EAAGH,CAAkB,GAErBG,EAAc,QAAiB,EAGrC,EAAG,CAACD,EAAYF,CAAkB,CAAC,EAE7BO,KAAY,eAAY,IAAM,CAC9B,CAAC,UAAoB,QAAiB,EAAE,SAASL,CAAU,IACzDF,EAAqB,GACvBG,EAAc,SAAkB,EAChC,WAAW,IAAM,CACfA,EAAc,MAAe,CAC/B,EAAGH,CAAkB,GAErBG,EAAc,MAAe,EAGnC,EAAG,CAACD,EAAYF,CAAkB,CAAC,EAEnC,4BAAgB,IAAM,CAChBE,IAAe,UAAqBD,EACtCM,EAAU,EACDL,IAAe,QAAmB,CAACD,GAC5CK,EAAW,CAEf,EAAG,CAACL,EAAQM,EAAWD,EAAYJ,CAAU,CAAC,EAEvC,CACL,UAAAG,EACA,WAAAH,CACF,CACF,EC/DA,IAAAM,GAAwC,iBAaxC,IAAMC,GAAmB,CAACC,EAAkBC,IAAkB,CAC5D,GAAM,CAAE,KAAAC,EAAM,IAAAC,CAAI,EAAIH,EAChBI,EAAqBF,EAAO,OAAO,QACnCG,EAAqBF,EAAM,OAAO,QAClCG,EAAaL,EAAE,MAAQG,EACvBG,EAAaN,EAAE,MAAQI,EAE7B,MAAO,CACL,EAAGJ,EAAE,MACL,EAAGA,EAAE,MACL,SAAUK,EACV,SAAUC,EACV,iBAAkBH,EAClB,iBAAkBC,CACpB,CACF,EAEaG,GAAoBC,GAAoE,CACnG,IAAMC,KAAM,WAAoB,IAAI,EAC9B,CAACC,EAAUC,CAAW,KAAI,aAAwB,CACtD,EAAG,KACH,EAAG,KACH,SAAU,KACV,SAAU,KACV,iBAAkB,KAClB,iBAAkB,IACpB,CAAC,EAqBD,OAAAC,EAAiB,YAnBEZ,GAAkB,CACnC,GAAM,CAAE,QAAAa,EAAS,QAAAC,CAAQ,EAAId,EAG7B,GAFAW,EAAYI,IAAS,CAAE,GAAGA,EAAM,EAAGF,EAAS,EAAGC,CAAQ,EAAE,EAErDN,GAAc,mBAAmB,QAAS,CAC5C,IAAMQ,EAAWlB,GAAiBU,EAAa,QAAQ,sBAAsB,EAAGR,CAAC,EACjFW,EAAYI,IAAS,CACnB,GAAGA,EACH,GAAGC,CACL,EAAE,CACJ,SAAWP,EAAI,mBAAmB,QAAS,CACzC,IAAMO,EAAWlB,GAAiBW,EAAI,QAAQ,sBAAsB,EAAGT,CAAC,EACxEW,EAAYI,IAAS,CACnB,GAAGA,EACH,GAAGC,CACL,EAAE,CACJ,CACF,CAEuC,EAEhC,CAAE,GAAGN,EAAU,IAAAD,CAAI,CAC5B,EC/DA,IAAAQ,GAAsC,iBAEzBC,GAAkB,CAAIC,EAAkBC,EAAuB,IAAqC,CAC/G,GAAM,CAACC,EAAOC,CAAQ,KAAI,aAASF,CAAY,EAEzCG,KAAS,gBACZF,GAAmB,CAClBC,EAASD,IAAU,OAAYA,EAAQG,IAASA,EAAO,GAAKL,EAAO,MAAM,CAC3E,EACA,CAACA,EAAO,MAAM,CAChB,EAEA,MAAO,CAACA,EAAOE,CAAK,EAAGE,CAAM,CAC/B,ECkDI,IAAAE,GAAA,6BA3DQC,QACVA,EAAA,SAAW,WACXA,EAAA,WAAa,aAFHA,QAAA,IAKAC,QACVA,EAAA,MAAQ,QACRA,EAAA,OAAS,SACTA,EAAA,OAAS,SAHCA,QAAA,IAoCCC,GAAO,CAAC,CACnB,YAAAC,EAAc,aACd,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,MAAAC,EAAQ,eACR,KAAAC,EAAO,EACP,UAAAC,EAAY,QACZ,WAAAC,EAAa,EACb,QAAAC,EAAU,CACZ,IAAiB,CACf,IAAMC,EAAaC,EAAc,CAC/B,cAAe,GACf,CAACT,CAAW,EAAG,GACf,CAACC,CAAS,EAAG,CAAC,CAACA,EACf,CAACI,CAAS,EAAG,EACf,CAAC,EAED,SACE,QAAC,QACC,UAAWG,EACX,MACE,CACE,GAAGN,EACH,UAAWC,EACX,SAAU,GAAGC,CAAI,KACjB,YAAa,GAAGG,CAAO,KACvB,aAAc,GAAGD,CAAU,IAC7B,EAEJ,CAEJ,EnBF4D,IAAAI,GAAA,6BA9DtDC,MAAmB,iBAA4C,IAAI,EAE5DC,GAAoBC,GAAsC,CACrE,IAAMC,KAAU,cAAWH,EAAgB,EAE3C,GAAI,CAACG,EACH,MAAM,IAAI,MAAM,4DAA4D,EAG9E,GAAM,CAAE,WAAAC,EAAY,YAAAC,CAAY,EAAIF,EAE9BG,EAAS,IAAMF,EAAWF,CAAE,EAElC,MAAO,CAACG,EAAY,SAASH,CAAE,EAAGI,CAAM,CAC1C,EAWaC,GAAY,CAAC,CACxB,SAAAC,EACA,UAAAC,EAAY,GACZ,aAAAC,EACA,SAAAC,EACA,MAAAC,EAAQ,CAAC,EACT,cAAAC,EAAgB,CAAC,CACnB,IAAsB,CACpB,GAAM,CAACR,EAAaS,CAAc,KAAI,YAAuC,KACnE,MAAM,QAAQD,CAAa,EAAIA,EAAgB,CAACA,CAAa,GAAG,OAAO,CAACE,EAAKb,IAC5E,OAAOA,GAAO,SAAW,CAAE,GAAGa,EAAK,CAACb,CAAE,EAAG,EAAK,EAAIa,EACxD,CAAC,CAAC,CACN,EAEKX,KAAa,eAChBF,GAAe,CACdY,EAAeE,IAAS,CAAE,GAAIL,EAAWK,EAAO,CAAC,EAAI,CAACd,CAAE,EAAG,CAACc,EAAKd,CAAE,CAAE,EAAE,CACzE,EACA,CAACS,CAAQ,CACX,EAEMM,KAAiB,WAAQ,IAAM,OAAO,KAAKZ,CAAW,EAAE,OAAOH,GAAMG,EAAYH,CAAE,CAAC,EAAG,CAACG,CAAW,CAAC,EAEpGa,EAAqBC,EAAc,CACvC,UAAW,GACX,CAACV,CAAS,EAAG,EAAQA,CACvB,CAAC,EAED,SACE,QAACT,GAAiB,SAAjB,CACC,MAAO,CACL,WAAAI,EACA,YAAaa,CACf,EAEA,oBAAC,WAAQ,UAAWC,EAAoB,MAAON,EAC3C,gBAAM,QAAQJ,CAAQ,EAAIA,EAAW,CAACA,CAAQ,GAAG,QAAQ,CAACY,EAAOC,IAC1DA,IAAQ,EAAID,EAAQ,CAACV,EAAe,QAAO,QAACY,GAAA,CAAK,YAAY,cAAkB,GAAGD,CAAG,IAAM,EAAID,CAAK,CAC5G,EACH,EACF,CAEJ,EoB/EA,IAAAG,GAA+B,iBAE/BC,GAA4B,0BCSxB,IAAAC,GAAA,6BAFSC,GAAY,CAAC,CAAE,SAAAC,EAAU,OAAAC,EAAQ,UAAAC,EAAY,GAAI,MAAAC,EAAQ,CAAC,CAAE,OAErE,QAAC,WACC,UAAWD,EACX,MACE,CACE,SAAU,SACV,OAAQD,EAAS,OAAS,EAC1B,WAAY,oBACZ,gBAAiB,iBACjB,GAAGE,CACL,EAGD,SAAAH,EACH,ECxBJ,IAAAI,GAAuC,iBA0DjC,IAAAC,GAAA,6BA5COC,GAAW,CAAC,CACvB,WAAAC,EAAa,OACb,cAAAC,EAAgB,WAChB,UAAAC,EAAY,IACZ,UAAAC,EAAY,GACZ,SAAAC,CACF,IAAqB,CACnB,IAAMC,EAAgBC,GAAgC,CACpD,GAAIF,EAAS,SAAW,EACtB,MAAM,IAAI,MAAM,wCAAwC,EAG1D,OAAOA,EAASE,CAAG,CACrB,EAEMC,KAAc,YAAQ,IAGnB,SAASN,IAAkB,aAAe,IAAM,GAAG,IAF9CE,EAAY,IAAM,CAEmC,OAChE,CAACF,EAAeE,CAAS,CAAC,EAEvBK,KAAa,YAAQ,IAGlB,SAASP,IAAkB,aAAe,IAAM,GAAG,IAF9CE,EAAY,EAAI,IAEqC,OAChE,CAACF,EAAeE,CAAS,CAAC,EAEvBM,EAAYC,EAAc,CAC9B,YAAa,GACb,aAAcP,CAChB,CAAC,EAED,SACE,QAAC,WACC,UAAWM,EACX,MACE,CACE,eAAgBT,EAChB,cAAe,GAAGE,CAAS,KAC3B,gBAAiBK,EACjB,eAAgBC,CAClB,EAGF,qBAAC,WAAQ,UAAU,UACjB,qBAAC,WAAQ,UAAU,QAAS,SAAAH,EAAa,CAAC,EAAE,KAE5C,QAAC,WAAQ,UAAU,OAAQ,SAAAA,EAAa,CAAC,EAAE,GAC7C,EACF,CAEJ,ECjEA,IAAAM,GAAmE,iBAsE7D,IAAAC,GAAA,6BAxDOC,GAAY,CAAC,CACxB,SAAAC,EACA,UAAAC,EAAY,EACZ,aAAAC,EAAe,GACf,MAAAC,EAAQ,cACR,UAAAC,EAAY,EACd,IAAsB,CACpB,IAAMC,KAAU,WAAoB,IAAI,EAClCC,KAAW,WAAoB,IAAI,EAEnCC,KAAoB,gBACvBC,GAAkB,CACjB,IAAMC,EAAOJ,EAAQ,QACfK,EAAQJ,EAAS,QAEvB,GAAI,CAACG,GAAQ,CAACC,EAAO,OAErB,GAAM,CAAE,QAAAC,EAAS,QAAAC,EAAS,cAAAC,CAAc,EAAIL,EACtC,CAAE,YAAAM,EAAa,aAAAC,CAAa,EAAIF,EAChC,CAAE,IAAAG,EAAK,KAAAC,CAAK,EAAIR,EAAK,sBAAsB,EAE3CS,GAAcP,EAAUM,GAAQH,EAChCK,GAAYP,EAAUI,GAAOD,EAE7BK,EAAsBF,EAAa,EAAI,EAGvCG,IAFsBF,EAAW,EAAI,GAEJlB,GAAW,QAAQ,CAAC,EACrDqB,GAAWF,EAAsBnB,GAAW,QAAQ,CAAC,EAE3DS,EAAM,MAAM,UAAY,eAAeI,CAAW,eAAe,CAACO,CAAO,gBAAgBC,CAAO,OAChGb,EAAK,MAAM,UAAY,eAAeK,CAAW,kBAAkBZ,CAAY,KACjF,EACA,CAACD,EAAWC,CAAY,CAC1B,EAEMqB,KAAqB,gBAA+Bf,GAAK,CAC7D,IAAMC,EAAOJ,EAAQ,QACfK,EAAQJ,EAAS,QAEnB,CAACG,GAAQ,CAACC,IAEdA,EAAM,MAAM,UAAY,eAAeF,EAAE,cAAc,WAAW,4BAClEC,EAAK,MAAM,UAAY,eAAeD,EAAE,cAAc,WAAW,oBACnE,EAAG,CAAC,CAAC,EAELgB,EAAiB,YAAajB,EAA+CF,CAAO,EACpFmB,EAAiB,aAAcD,EAAgDlB,CAAO,EAEtF,IAAMoB,EAAgBC,EAAc,CAClC,aAAc,GACd,CAACtB,CAAS,EAAG,EAAQA,CACvB,CAAC,EAED,SACE,QAAC,QAAK,IAAKC,EAAS,MAAO,CAAE,MAAAF,CAAM,EAAG,UAAWsB,EAC/C,oBAAC,QAAK,UAAU,mBAAmB,IAAKnB,EACrC,SAAAN,EACH,EACF,CAEJ,EC3EA,IAAA2B,GAA8C,iBCwBvC,IAAMC,GAA+E,CACzF,KAAyB,KACzB,QAA4B,KAC5B,QAA4B,KAC5B,QAA4B,KAC5B,QAA4B,KAC5B,KAAyB,IACzB,MAA0B,OAC1B,aAA+B,QAC/B,MAA0B,OAC7B,EAEaC,GAAkE,CAC5E,KAAyB,OACzB,QAA4B,UAC5B,QAA4B,UAC5B,QAA4B,UAC5B,QAA4B,UAC5B,KAAyB,OACzB,MAA0B,QAC1B,aAA+B,QAC/B,MAA0B,OAC7B,EDjBO,IAAMC,EAAa,CAAC,CACzB,QAAAC,SACA,OAAAC,EAAS,GACT,UAAWC,EAAkB,GAC7B,MAAAC,EAAQ,CAAC,EACT,SAAAC,EACA,GAAAC,EACA,OAAAC,EACA,OAAAC,EAAS,UACT,UAAAC,EAAY,GACZ,MAAAC,EACA,MAAAC,EACA,QAAAC,EACA,iBAAAC,EAAmB,GACnB,GAAGC,CACL,IAAuB,CACrB,IAAMC,EAAYC,EAAc,CAC9B,WAAY,GACZ,CAACC,GAA6BhB,CAAO,CAAC,EAAGgB,GAA6BhB,CAAO,IAAM,OACnF,CAACE,CAAe,EAAG,CAAC,CAACA,EACrB,CAACI,GAAU,EAAE,EAAG,CAAC,CAACA,EAClB,CAACI,GAAS,EAAE,EAAG,EAAQA,EACvB,aAAcF,EACd,cAAeD,IAAW,OAC1B,oBAAqBK,EACrB,mBAAoB,OAAOX,GAAW,SACtC,qBAAsBA,IAAW,EACjC,qBAAsBA,IAAW,EACjC,qBAAsBA,IAAW,EACjC,qBAAsBA,IAAW,EACjC,OAAQA,IAAW,EACrB,CAAC,EAEKgB,KAAY,YAChB,IAAMC,GAA2BlB,CAAO,GAAKkB,GAA2B,KACxE,CAAClB,CAAO,CACV,EAEA,SAAO,kBACLK,GAAMY,EACN,CACE,GAAGJ,EACH,UAAAC,EACA,QAAAH,EACA,MAAO,CACL,UAAWF,EACX,GAAGN,CACL,CACF,EACAC,CACF,CACF,EJcI,IAAAe,EAAA,6BAjDEC,GAAa,CAACC,EAAkCC,IAChD,OAAOD,GAAY,WACdA,EAAQC,CAAM,EAGhBD,EAGIE,GAA8C,CAAC,CAC1D,MAAAC,EACA,SAAAC,EACA,SAAAC,EACA,KAAMC,EAAO,eACb,aAAAC,EACA,QAAAP,EACA,WAAAQ,EACA,WAAAC,EAAa,CAAC,EACd,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,CACX,IAA0B,CACxB,IAAMC,KAAK,YAAQ,IAAM,OAAO,WAAW,EAAG,CAAC,CAAC,EAC1C,CAACX,EAAQY,CAAM,EAAIC,GAAiBF,CAAE,EACtCG,EAAkBC,EAAc,CACpC,mBAAoB,GACpB,oBAAqB,CAAC,CAACT,EACvB,CAACE,GAAY,QAAU,EAAE,EAAG,CAAC,CAACA,GAAY,OAC1C,UAAWR,CACb,CAAC,EAEKgB,EAAyBD,EAAc,CAC3C,2BAA4B,GAC5B,CAACP,GAAY,eAAiB,EAAE,EAAG,CAAC,CAACA,GAAY,aACnD,CAAC,EAEKS,EAAsBF,EAAc,CACxC,wBAAyB,GACzB,OAAQf,EACR,CAACQ,GAAY,YAAc,EAAE,EAAG,CAAC,CAACA,GAAY,UAChD,CAAC,EAEKU,EAAuBH,EAAc,CACzC,iBAAkB,GAClB,CAACP,GAAY,MAAQ,EAAE,EAAG,CAAC,CAACA,GAAY,IAC1C,CAAC,EAEKW,EAAerB,GAAWI,EAAOF,CAAM,EACvCoB,EAAkBtB,GAAWK,EAAUH,CAAM,EAC7CqB,EAAcvB,GAAWQ,EAAcN,CAAM,EAC7CsB,EAAexB,GAAWC,EAASC,CAAM,MAC7C,QAAC,WAAQ,UAAWgB,EAClB,oBAACO,EAAA,CAAW,UAAWf,GAAY,MAAO,QAAQ,OAAO,UAAS,GAAC,OAAO,OACvE,SAAAW,EACH,KACA,OAACI,EAAA,CAAW,UAAWf,GAAY,SAAU,QAAQ,QAAQ,UAAS,GAAC,OAAO,QAC3E,SAAAY,EACH,GACF,EAEII,EAAY1B,GAAWS,EAAYP,CAAM,MAAK,OAACK,EAAA,CAAK,UAAWY,EAAqB,EAEpFQ,EAAyBV,EAAc,CAC3C,iBAAkB,GAClB,CAACN,CAAS,EAAG,EAAQA,CACvB,CAAC,EAED,SACE,QAAC,WAAQ,UAAWgB,EAAwB,MAAOf,EACjD,qBAAC,WAAQ,UAAWI,EAAiB,QAASF,EAC3C,UAAAS,EACAC,EACAE,GACH,KACA,OAACE,GAAA,CAAU,OAAQ1B,EACjB,mBAAC,WAAQ,UAAWkB,EAAuB,SAAAd,EAAS,EACtD,GACF,CAEJ,EM1HA,IAAAuB,GAAyC,iBAkEhC,IAAAC,GAAA,6BApDIC,GAAS,CAAC,CACrB,MAAAC,EACA,SAAAC,EAAW,IACX,eAAAC,EAAiB,WACjB,MAAAC,EAAQ,EACR,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,OAAAC,EAAS,CACX,IAAmB,CACjB,IAAMC,KAAM,WAAoB,IAAI,EAEpC,uBAAU,IAAM,CACd,GAAI,CAACA,EAAI,SAAS,cAChB,OAGF,IAAMC,EAAmB,iBAAiBD,EAAI,QAAQ,aAAa,EAAE,SAEhE,CAAC,WAAY,QAAS,SAAU,UAAU,EAAE,SAASC,CAAgB,IACxED,EAAI,QAAQ,cAAc,MAAM,SAAW,WAE/C,EAAG,CAAC,CAAC,KA+BE,QAAC,QAAK,IAAKA,EAAK,YA7BFE,GAAyC,CAC5D,GAAM,CAAE,MAAAC,EAAO,MAAAC,EAAO,cAAAC,CAAc,EAAIH,EAElCI,EAAOD,EAAc,sBAAsB,EAE3CE,GAAMJ,EAAQG,EAAK,MAAQ,IAAOA,EAAK,MACvC,GAAMF,EAAQE,EAAK,KAAO,IAAOA,EAAK,OAEtCE,EAAS,SAAS,cAAc,MAAM,EAC5CA,EAAO,UAAU,IAAI,eAAe,EACpCA,EAAO,MAAM,kBAAoB,GAAGd,CAAQ,KAC5Cc,EAAO,MAAM,wBAA0Bb,EACvCa,EAAO,MAAM,KAAO,GAAGD,CAAC,IACxBC,EAAO,MAAM,IAAM,GAAG,CAAC,IAEnBf,IACFe,EAAO,MAAM,WAAaf,GAG5BY,EAAc,YAAYG,CAAM,EAEhC,WACE,IAAM,CACJA,EAAO,OAAO,CAChB,EACA,KAAK,IAAId,EAAU,GAAG,EAAI,KAAK,IAAIE,EAAO,CAAC,CAC7C,CACF,EAEiD,UAAW,UAAUC,CAAS,GAAI,MAAO,CAAE,GAAGC,EAAO,OAAAC,CAAO,EAAG,CAClH,ECxBI,IAAAU,GAAA,6BAvBSC,GAAS,CAAC,CACrB,SAAAC,EACA,MAAAC,YACA,QAAAC,UACA,OAAAC,WACA,KAAAC,YACA,OAAAC,EAAS,GACT,QAAAC,EAAU,GACV,UAAAC,EAAY,GACZ,GAAGC,CACL,IAAmB,CACjB,IAAMC,EAAaC,EAAc,CAC/B,OAAQ,GACR,CAACT,CAAK,EAAG,EAAQA,EACjB,CAACC,CAAO,EAAG,EAAQA,EACnB,CAAC,UAAUC,CAAM,EAAE,EAAG,EAAQA,EAC9B,CAAC,QAAQC,CAAI,EAAE,EAAG,EAAQA,EAC1B,UAAWC,EACX,KAAMC,EACN,CAACC,CAAS,EAAG,EAAQA,CACvB,CAAC,EAED,SACE,SAAC,UAAQ,GAAGC,EAAO,UAAWC,EAC3B,UAAAT,KACD,QAACW,GAAA,EAAO,GACV,CAEJ,EChDA,IAAAC,GAAoC,iBAiChC,IAAAC,GAAA,6BA3BSC,GAAS,IAAM,CAC1B,GAAM,CAAE,EAAAC,EAAG,EAAAC,EAAG,SAAAC,EAAU,SAAAC,EAAU,IAAAC,CAAI,EAAIC,GAAiB,EACrD,CAACC,EAAeC,CAAgB,KAAI,aAAS,EAAK,EAkBxD,GAhBAC,EAAiB,YAAaC,GAAK,CACjC,IAAMC,EAAiB,iBAAiBD,EAAE,MAAqB,EAAE,OAEjEF,EAAiBG,IAAmB,SAAS,CAC/C,CAAC,KAED,cAAU,KACF,iBAAkB,QAAU,UAAU,iBAC1C,SAAS,KAAK,MAAM,OAAS,QAGxB,IAAM,CACX,SAAS,KAAK,MAAM,OAAS,MAC/B,GACC,CAAC,CAAC,EAEDV,IAAM,MAAQC,IAAM,MAAQ,iBAAkB,QAAU,UAAU,eACpE,OAAO,KAGT,IAAMU,EAAc,eAAeT,CAAQ,OAAOC,CAAQ,SAE1D,SACE,SAAC,WAAQ,UAAU,iBAAiB,IAAKC,EACvC,qBAAC,QACC,UAAW,uBAAuBE,EAAgB,eAAiB,EAAE,GACrE,MAAO,CACL,UAAWK,CACb,EACF,KACA,QAAC,QACC,UAAW,uBAAuBL,EAAgB,eAAiB,EAAE,GACrE,MAAO,CACL,UAAWK,CACb,EACF,GACF,CAEJ,EChDA,IAAAC,GAAwB,iBAExBC,GAAmC,2BCDnC,IAAAC,GAAgF,2BA2BxEC,GAAA,6BAhBKC,EAAa,CAAqB,CAC7C,UAAAC,EACA,WAAAC,EACA,aAAcC,EACd,MAAAC,CACF,IAA6B,CAC3B,GAAM,CAAE,QAAAC,EAAS,SAAAC,CAAS,KAAI,mBAAe,EACvC,CAAE,KAAAC,EAAM,aAAAC,CAAa,EAAIN,EAE/B,SACE,QAAC,GAAAO,WAAA,CACC,KAAMF,EACN,QAASF,EACT,MAAOD,EACP,aAAcI,GAAgBL,EAC9B,OAAQ,CAAC,CAAE,MAAO,CAAE,OAAAO,EAAQ,MAAAC,CAAM,EAAG,WAAAC,CAAW,OAC9C,QAACX,EAAA,CACC,MAAOU,EACP,MAAOC,EAAW,OAAO,QACzB,QAASA,EAAW,QACpB,UAAWA,EAAW,UACtB,QAASA,EAAW,QACpB,SAAUD,GAASL,EAASC,EAAMI,CAAK,EACvC,OAAQD,EACP,GAAGR,EACN,EAEJ,CAEJ,EDwBM,IAAAW,GAAA,6BA7COC,GAAW,CAAC,CACvB,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,aAAAC,EAAe,MACf,KAAMC,EAAO,sBACb,MAAAC,EACA,MAAAC,YACA,KAAAC,WAOF,IAA0D,CACxD,IAAMC,KAAK,YAAQ,IAAM,OAAO,WAAW,EAAG,CAAC,CAAC,EAE1C,CAAE,SAAAC,CAAS,EAAIC,EAAmC,CACtD,SAAUC,GAAKhB,EAASgB,EAAE,OAAO,OAAO,EACxC,OAAQf,EACR,QAASC,CACX,CAAC,EAEKe,EAA6BC,EAAc,CAC/C,qBAAsB,GACtB,CAACf,CAAS,EAAG,EAAQA,EACrB,CAAC,SAASQ,CAAK,EAAE,EAAG,EAAQA,CAC9B,CAAC,EAEKQ,EAAoBD,EAAc,CACtC,SAAU,GACV,aAAcnB,EACd,CAAC,QAAQa,CAAI,EAAE,EAAG,EAAQA,CAC5B,CAAC,EAED,SACE,SAAC,WAAQ,UAAWK,EAA4B,MAAOb,EAAO,QAASY,GAAKA,EAAE,gBAAgB,EAC5F,sBAAC,WAAQ,UAAWG,EAClB,qBAAC,WAAQ,UAAU,gBACjB,oBAACV,EAAA,CAAK,KAAK,QAAQ,UAAU,gBAAgB,EAC/C,KACA,QAAC,SACC,GAAII,EACJ,KAAK,WACL,KAAMf,EACN,UAAU,iBACV,QAASC,EACT,UAAWM,EACX,aAAcG,EACd,SAAUD,GAAYD,EACrB,GAAGQ,EACN,GACF,EACCJ,KACC,QAACU,EAAA,CAAW,QAAQ,aAAa,QAASP,EAAI,UAAU,iBACrD,SAAAH,EACH,EACE,MACN,CAEJ,EAEMW,GAAqB,CAAC,CAAE,MAAAC,EAAO,GAAGC,CAAM,OACrC,QAACC,EAAA,CAAW,UAAW3B,GAAU,aAAc,GAAO,WAAY0B,EAAO,MAAOD,EAAO,EAGhGzB,GAAS,WAAawB,GE9FtB,IAAAI,GAAwB,iBCExB,IAAAC,GAAwB,0BCCjB,IAAKC,QACVA,EAAA,YAAc,cACdA,EAAA,eAAiB,iBACjBA,EAAA,aAAe,OAHLA,QAAA,IAMAC,QACVA,EAAA,WAAa,aACbA,EAAA,SAAW,WAFDA,QAAA,IDQH,IAAAC,EAAA,6BADHC,GAAU,CAAC,CAAE,KAAMC,EAAM,UAAAC,EAAW,QAAAC,CAAQ,IAChDF,KAAO,OAACA,EAAA,CAAK,UAAWC,EAAW,QAASC,EAAS,KAAK,OAAC,SAAK,EAErDC,EAAQ,CAAC,CACpB,GAAAC,EACA,MAAAC,EACA,SAAAC,EACA,UAAAC,EACA,UAAWC,EAAY,WACvB,MAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,iBAAAC,aACA,SAAAC,EACA,QAAAC,EAAU,GACV,QAAAC,EACA,IAAAC,CACF,IAAkB,CAChB,IAAMC,EAAiBC,EAAc,CACnC,aAAc,GACd,MAAOJ,EACP,MAAO,CAAC,CAACL,EACT,yBAA0BM,IAAY,iBACtC,uBAAwBA,IAAY,OACpC,sBAAuBA,IAAY,cACnC,iBAAkBH,IAAqB,YACzC,CAAC,EAEKO,EAAeC,GAA2BC,GAAwB,CACtEA,EAAE,gBAAgB,EAClB,IAAMC,EAAQ,SAAS,eAAelB,CAAE,EACxCkB,GAAO,MAAM,EACbA,GAAO,MAAM,EAETF,GAAUA,EAAS,CACzB,EAEA,SACE,QAAC,WAAQ,UAAWH,EAAgB,IAAKD,EACtC,UAAAX,KACC,OAACkB,EAAA,CAAW,UAAU,cAAc,UAAS,GAAC,QAAQ,aAAa,QAASnB,EACzE,SAAAC,EACH,EACE,QACJ,QAAC,WAAQ,UAAU,gBAChB,UAAAN,GAAQ,CACP,UAAW,kBACX,KAAMO,EACN,QAASa,EAAYT,CAAe,CACtC,CAAC,KACD,OAAC,WAAQ,UAAU,iBAAkB,SAAAG,EAAS,EAC7Cd,GAAQ,CACP,UAAW,mBACX,KAAMQ,EACN,QAASY,EAAYR,CAAgB,CACvC,CAAC,GACH,EACC,EAAQF,MACP,QAAC,WAAQ,UAAU,gBAChB,UAAAD,KAAY,OAACA,EAAA,CAAU,KAAM,GAAI,KAAK,OAAC,SAAK,KAC7C,OAACe,EAAA,CAAW,UAAS,GAAC,QAAQ,QAC3B,SAAAd,EACH,GACF,GAEJ,CAEJ,EDxCM,IAAAe,GAAA,6BAhCOC,GAAa,CAAC,CACzB,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,KAAAC,EAAO,OACP,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,YAAAC,EAAc,GACd,aAAAC,EAAe,MAEf,QAAAC,EAAU,GAEV,UAAAC,EAAY,GAEZ,QAAAC,EAAU,GACV,MAAAC,EACA,GAAGC,CACL,IAA2D,CACzD,IAAMC,KAAK,YAAQ,IAAM,OAAO,WAAW,EAAG,CAAC,CAAC,EAC1C,CAAE,QAAAC,EAAS,SAAAC,CAAS,EAAIC,EAAiB,CAC7C,OAAQlB,EACR,SAAUmB,GAAKpB,EAASoB,EAAE,OAAO,KAAK,EACtC,QAASlB,CACX,CAAC,EAED,SACE,QAACmB,EAAA,CAAM,GAAIL,EAAI,MAAOF,EAAO,QAASG,EAAU,GAAGF,EACjD,oBAAC,SACC,GAAIC,EACJ,KAAMb,EACN,KAAML,EACN,UAAWM,EACX,MAAOC,EACP,MAAON,EACP,UAAWO,EACX,aAAcI,EACd,YAAaD,EACb,SAAUD,EACV,SAAUD,EACT,GAAGW,EACN,EACF,CAEJ,EAEMI,GAAuB,CAAC,CAAE,MAAAC,EAAO,GAAGC,CAAM,OACvC,QAACC,EAAA,CAAW,UAAW5B,GAAY,aAAa,GAAG,WAAY2B,EAAO,MAAOD,EAAO,EAG7F1B,GAAW,WAAayB,GGjExB,IAAAI,GAAwB,iBAiDlB,IAAAC,GAAA,6BAnCOC,GAAQ,CAAC,CACpB,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,QAAAC,EACA,KAAAC,EAAO,OACP,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,YAAAC,EAAc,GACd,aAAAC,EAAe,MAEf,QAAAC,EAAU,GAEV,UAAAC,EAAY,GAEZ,QAAAC,EAAU,GACV,MAAAC,EACA,IAAAC,EACA,IAAAC,EACA,GAAGC,CACL,IAAkD,CAChD,IAAMC,KAAK,YAAQ,IAAM,OAAO,WAAW,EAAG,CAAC,CAAC,EAC1C,CAAE,SAAAC,EAAU,QAAAC,CAAQ,EAAIC,EAAiB,CAC7C,SAAUC,GAAKvB,EAASuB,EAAE,OAAO,KAAK,EACtC,OAAQtB,EACR,QAASC,CACX,CAAC,EAED,SACE,QAACsB,EAAA,CAAM,GAAIL,EAAI,MAAOJ,EAAO,QAASM,EAAU,GAAGH,EACjD,oBAAC,SACC,GAAIC,EACJ,KAAMf,EACN,KAAMN,EACN,UAAWO,EACX,MAAOC,EACP,MAAOP,EACP,QAASI,EACT,UAAWI,EACX,aAAcI,EACd,YAAaD,EACb,SAAUD,EACV,SAAUD,EACV,IAAKQ,EACL,IAAKC,EACJ,GAAGG,EACN,EACF,CAEJ,EAEMK,GAAkB,CAAC,CAAE,MAAAC,EAAO,GAAGC,CAAM,OAClC,QAACC,EAAA,CAAW,UAAW/B,GAAO,aAAa,GAAG,WAAY8B,EAAO,MAAOD,EAAO,EAGxF7B,GAAM,WAAa4B,GC1EnB,IAAAI,GAAwB,iBAExBC,GAAgC,0BAChCC,GAA6B,0BAmDvB,IAAAC,GAAA,6BAxCOC,GAAgB,CAAC,CAC5B,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,YAAAC,EAAc,GACd,aAAAC,EAAe,MAEf,QAAAC,EAAU,GAEV,UAAAC,EAAY,GAEZ,QAAAC,EAAU,GACV,MAAAC,EACA,GAAGC,CACL,IAA8D,CAC5D,IAAMC,KAAK,YAAQ,IAAM,OAAO,WAAW,EAAG,CAAC,CAAC,EAC1C,CAACC,EAAMC,CAAM,EAAIC,GAAqC,CAAC,WAAY,MAAM,CAAC,EAC1E,CAAE,QAAAC,EAAS,SAAAC,CAAS,EAAIC,EAAiB,CAC7C,OAAQpB,EACR,SAAUqB,GAAKtB,EAASsB,EAAE,OAAO,KAAK,EACtC,QAASpB,CACX,CAAC,EAEKqB,KAAO,YAAkB,IACzBP,IAAS,WAAmB,SAE5BA,IAAS,OAAe,YAErB,gBACN,CAACA,CAAI,CAAC,EAET,SACE,QAACQ,EAAA,CAAM,GAAIT,EAAI,MAAOF,EAAO,QAASM,EAAU,GAAGL,EAAY,UAAWS,EAAM,iBAAkB,IAAMN,EAAO,EAC7G,oBAAC,SACC,GAAIF,EACJ,KAAMC,EACN,KAAMlB,EACN,UAAWK,EACX,MAAOC,EACP,MAAOL,EACP,UAAWM,EACX,aAAcI,EACd,YAAaD,EACb,SAAUD,EACV,SAAUD,EACT,GAAGc,EACN,EACF,CAEJ,EAEMK,GAA0B,CAAC,CAAE,MAAAC,EAAO,GAAGC,CAAM,OAC1C,QAACC,EAAA,CAAW,UAAW/B,GAAe,aAAa,GAAG,WAAY8B,EAAO,MAAOD,EAAO,EAGhG7B,GAAc,WAAa4B,GC5E3B,IAAAI,GAAkB,uBAClBC,EAAkE,iBAClEC,GAAmD,0BACnDC,GAA6B,2BAC7BC,GAA0B,iCCJ1B,IAAAC,EAAyE,iBAEzEC,GAAwB,0BCFxB,IAAAC,GAAsD,iBCCtD,IAAAC,GAA6B,qBAStB,IAAMC,GAAS,CAAC,CAAE,SAAAC,EAAU,GAAAC,CAAG,IAAmB,CACvD,IAAMC,EAAOC,GAAgBF,CAAE,EAE/B,OAAIC,IAAS,KACJ,QAGF,iBAAaF,EAAUE,CAAI,CACpC,EClBA,IAAAE,GAA+B,iBAwD3B,IAAAC,GAAA,6BApDQC,QACVA,EAAA,OAAS,SACTA,EAAA,YAAc,cACdA,EAAA,KAAO,OACPA,EAAA,KAAO,OAJGA,QAAA,IAeCC,GAAW,CAAC,CACvB,QAAAC,EAAU,GACV,SAAAC,EAAW,OACX,OAAAC,EACA,gBAAAC,EACA,WAAAC,CACF,IAAqB,CACnB,IAAMC,EAAoBC,EAAc,CACtC,iBAAkB,GAClB,iBAAkBF,IAAe,WAAsBA,IAAe,QACxE,CAAC,EAEKG,KAAmB,YAAQ,KACR,CACpB,OAAuB,CACtB,WAAY,4CAA4CP,EAAU,GAAG,IACvE,EACC,YAA4B,CAC3B,WAAY,aACd,EACC,KAAqB,CACpB,WAAY,4CAA4CA,EAAU,GAAG,KACrE,eAAgB,WAClB,EACC,KAAqB,CACpB,QAAS,MACX,CACF,GAEsBC,CAAQ,GAAK,CAAC,EACnC,CAACA,EAAUD,CAAO,CAAC,EAEtB,OAAIC,IAAa,OACR,QAIP,QAAC,WACC,SAAU,GACV,QAASE,EACT,UAAWE,EACX,MAAO,CACL,OAAAH,EACA,GAAGK,CACL,EACF,CAEJ,EFmBI,IAAAC,GAAA,6BAtDSC,EAAQ,CAAC,CACpB,GAAAC,EACA,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,UAAAC,EAAY,CAAC,EACb,UAAAC,EAAY,YACZ,wBAAAC,EAA0B,cAC1B,SAAUC,EACV,oBAAAC,EAAsB,GACtB,mBAAAC,EAAqB,IACrB,aAAAC,EAAe,GACf,OAAAC,EAAS,GACT,SAAAC,EACA,aAAAC,EACA,OAAAC,EAAS,IACT,GAAGC,CACL,IAAkB,CAChB,IAAMC,KAAO,YAAQ,IAAM,OAAO,WAAW,EAAG,CAAC,CAAC,EAC5CC,KAAW,WAAoB,IAAI,EACnC,CAAE,WAAAC,EAAY,UAAAC,CAAU,EAAIC,GAAmB,CACnD,mBAAAX,EACA,OAAAT,CACF,CAAC,EAEDqB,GAAoB,CAClB,SAAUd,GAAgBU,EAC1B,aAAAJ,EACA,OAAAF,EACA,aAAAD,EACA,SAAAE,EACA,OAAQO,CACV,CAAC,EAEDG,GAA6Bf,GAAgBU,EAAU,IAAM,CACvDjB,GAAUQ,GACZP,EAAQ,CAEZ,CAAC,EAED,IAAMsB,EAAwBC,EAAc,CAC1C,gBAAiB,GACjB,CAACtB,CAAS,EAAG,EAAQA,EACrB,CAAC,aAAaG,CAAS,EAAE,EAAG,EAAQA,GAAcA,IAAc,OAChE,CAACC,CAAuB,EAAGY,IAAe,WAAsBA,IAAe,QACjF,CAAC,EAED,OAAKC,KAKH,SAACM,GAAA,CAAO,GAAI,SAAS3B,CAAE,IAAIkB,CAAI,GAC7B,qBAACU,GAAA,CAAU,GAAGX,EAAe,WAAYG,EAAY,OAAQJ,EAAQ,KACrE,QAAC,WACC,UAAU,QACV,IAAKP,GAAgBU,EACrB,MAAO,CACL,SAAU,iBAAiBP,EAAe,CAAC,MAC3C,UAAW,iBAAiBA,EAAe,CAAC,MAC5C,GAAGN,EACH,OAAQ,CAACU,EAAS,CACpB,EAEA,oBAAC,WAAQ,MAAO,CAAE,GAAGX,EAAO,kBAAmB,GAAGM,CAAkB,IAAK,EAAG,UAAWc,EACpF,SAAAxB,EACH,EACF,GACF,EApBO,IAsBX,EDdU,IAAA4B,EAAA,6BAvEJC,MAAqB,iBAA6C,IAAI,EAEtEC,GAAwB,IAAM,CAClC,IAAMC,KAAU,cAAWF,EAAkB,EAE7C,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,yDAAyD,EAG3E,OAAOA,CACT,EAgBaC,GAAc,CAAC,CAC1B,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,eAAAC,EACA,KAAMC,EACN,cAAAC,EACA,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,UAAAC,EAAY,GACZ,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,GAAGC,CACL,IAAwB,CACtB,GAAM,CAACC,EAAoBC,CAAqB,KAAI,YAAS,EAAK,EAC5DC,KAAM,UAAoB,IAAI,EAE9BC,KAAe,eAAY,IAAM,CACrCD,EAAI,SAAS,UAAU,IAAI,iBAAiB,EAC5C,WAAW,IAAM,CACfA,EAAI,SAAS,UAAU,OAAO,iBAAiB,CACjD,EAAG,GAAG,CACR,EAAG,CAAC,CAAC,EAECE,EAAuBC,EAAc,CACzC,uBAAwB,GACxB,YAAaV,EACb,cAAeD,EACf,aAAcE,CAChB,CAAC,EAED,SACE,OAACZ,GAAmB,SAAnB,CAA4B,MAAO,CAAE,QAAAM,EAAS,mBAAAU,EAAoB,sBAAAC,CAAsB,EACvF,mBAACK,EAAA,CACC,UAAU,eACV,GAAG,eACH,UAAU,SACV,QAAS,GACT,OAAQjB,EACR,QAASC,EACR,GAAGS,EACJ,gBAAiBR,EAAiBY,EAAeb,EACjD,kBAEA,mBAAC,WAAQ,IAAKY,EAAK,UAAU,gBAC3B,oBAAC,WAAQ,UAAWE,EACjB,WAACX,GAAiB,CAACF,MAClB,OAAC,WAAQ,UAAU,qBAAqB,QAAS,IAAMD,EAAQ,EAC7D,mBAAC,aAAQ,EACX,EAEDE,KACC,OAACe,EAAA,CAAW,QAAQ,UAAU,UAAU,oBACtC,mBAACf,EAAA,EAAK,EACR,EACE,QACJ,OAAC,WAAQ,UAAU,oBACjB,mBAAC,WAAQ,UAAW,wBAAwBK,CAAS,GAAI,MAAOC,EAC7D,SAAAV,EACH,EACF,GACF,EACF,EACF,EACF,CAEJ,EAMMoB,GAAe,CAAC,CAAE,QAAAC,EAAS,SAAArB,EAAU,UAAWsB,EAAiB,GAAGC,CAAY,IAAyB,CAC7G,GAAM,CAAE,QAAArB,EAAS,mBAAAU,EAAoB,sBAAAC,CAAsB,EAAIhB,GAAsB,EAC/E,CAAC2B,EAAWC,CAAY,KAAI,YAAS,EAAK,EAE1CC,KAAe,eAAY,IAAM,CACrCD,EAAa,EAAI,EACjBZ,EAAsB,EAAI,EAC1B,IAAMc,EAASN,EAAQ,EAEnBM,aAAkB,QACpBA,EAAO,KAAK,IAAM,CAChBzB,EAAQ,EACRuB,EAAa,EAAK,EAClBZ,EAAsB,EAAK,CAC7B,CAAC,GAEDX,EAAQ,EACRuB,EAAa,EAAK,EAClBZ,EAAsB,EAAK,EAE/B,EAAG,CAACQ,EAASnB,EAASW,CAAqB,CAAC,EAE5C,MAAI,CAACW,GAAaZ,EACT,QAIP,OAACgB,GAAA,CAAQ,GAAGL,EAAa,QAASG,EAAc,UAAWJ,GAAmBE,EAC3E,SAAAxB,EACH,CAEJ,EAEAD,GAAY,aAAeqB,GIrJ3B,IAAAS,GAAuC,iBACvCC,GAAwB,0BA0CpB,IAAAC,GAAA,6BArBSC,GAAa,CAAC,CACzB,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,SAAAC,SACA,KAAAC,EACA,UAAAC,EAAY,GACZ,GAAGC,CACL,IAAuB,CACrB,IAAMC,KAAkB,YAAuB,KACxB,CAClB,IAAwB,CAAE,OAAQH,EAAM,MAAO,MAAO,EACtD,KAAyB,CAAE,OAAQ,OAAQ,MAAOA,CAAK,EACvD,MAA0B,CAAE,OAAQ,OAAQ,MAAOA,CAAK,EACxD,OAA2B,CAAE,OAAQA,EAAM,MAAO,MAAO,CAC5D,GAEoBD,CAAQ,EAC3B,CAACA,EAAUC,CAAI,CAAC,EAEnB,SACE,SAACI,EAAA,CACC,GAAG,QACH,OAAQP,EACR,QAASC,EACT,QAAS,GACT,aAAc,EACd,UAAU,OACV,UAAW,eAAeG,CAAS,IAAIF,CAAQ,GAC/C,UAAWI,EACX,gBAAiBL,EACjB,SAAUC,EACT,GAAGG,EAEJ,qBAAC,QAAK,UAAU,qBAAqB,QAASJ,EAC5C,oBAAC,aAAQ,EACX,KACA,QAAC,WAAQ,UAAU,sBAAuB,SAAAF,EAAS,GACrD,CAEJ,ECnCQ,IAAAS,GAAA,6BAbKC,GAAoB,CAAC,CAChC,MAAAC,EACA,SAAAC,EACA,SAAAC,EAAW,IAAM,KACjB,WAAAC,EACA,WAAAC,EACA,SAAAC,EACA,UAAAC,EACA,GAAGC,CACL,OAEI,QAACC,GAAA,CAAa,GAAGD,EAAkB,SAAQ,GACzC,qBAAC,WAAQ,UAAU,qBACjB,qBAACE,EAAA,CAAW,QAAQ,UAAW,SAAAT,EAAM,KACrC,QAAC,WAAS,SAAAK,EAAS,KACnB,SAAC,WAAQ,UAAU,6BAChB,WAACC,MACA,QAACE,GAAY,aAAZ,CAAyB,QAAQ,OAAO,QAASN,EAC/C,SAAAE,EACH,KAEF,QAACI,GAAY,aAAZ,CAAyB,UAAWF,EAAW,QAASL,EACtD,SAAAE,EACH,GACF,GACF,EACF,ECxCJ,IAAAO,GAAuD,iBAqCjD,IAAAC,EAAA,6BAlBOC,EAAO,CAAC,CACnB,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,GAAAC,EACA,eAAAC,EACA,iBAAAC,EAAmB,GACnB,aAAAC,EAAe,CAAC,EAChB,UAAAC,EAAY,GACZ,GAAGC,CACL,IAAiB,CACf,IAAMC,EAAiBC,EAAc,CACnC,aAAc,GACd,CAACH,CAAS,EAAG,EAAQA,CACvB,CAAC,EAED,SACE,OAACI,EAAA,CAAM,UAAWF,EAAiB,GAAGD,EAAY,GAAI,QAAQL,CAAE,GAAI,OAAQF,EAAQ,QAASC,EAC3F,mBAAC,MAAG,UAAW,gBAAgBG,CAAgB,GAAI,KAAK,UAAU,MAAOC,EAAc,IAAKF,EACzF,SAAAJ,EACH,EACF,CAEJ,EAeMY,GAAa,CAAC,CAClB,SAAAZ,EACA,MAAAa,EAAQ,GACR,WAAAC,EACA,KAAMC,EACN,GAAAZ,EACA,SAAAa,EAAW,GACX,SAAAC,EAAW,GACX,UAAAV,EAAY,GACZ,MAAAW,EAAQ,CAAC,EACT,QAAAC,EAAU,IAAM,KAChB,GAAGC,CACL,IAAuB,CACrB,IAAMC,EAAsBX,EAAc,CACxC,cAAe,GACf,CAACH,CAAS,EAAG,GACb,cAAeS,EACf,cAAeC,CACjB,CAAC,EAEKK,KAAc,gBACjBC,GAAwB,CACvBA,EAAE,gBAAgB,EAEbP,GACHG,EAAQ,CAACF,CAAQ,CAErB,EACA,CAACD,EAAUG,EAASF,CAAQ,CAC9B,EAEMO,KAAoB,YAAQ,IAC5BxB,IAIAc,KAEA,OAACW,GAAA,CACC,UAAU,gBACV,SAAUT,EACV,MAAOC,EACP,SAAUS,GAAKP,EAAQO,CAAC,EACxB,KAAK,SACL,MAAO,CAAE,cAAe,MAAO,EAC/B,KAAK,QACL,SACE,oBACG,UAAAX,IAAS,WAAa,OAACA,EAAA,CAAK,UAAU,cAAc,KACrD,OAACY,EAAA,CAAW,QAAQ,QAAS,SAAAd,EAAM,GACrC,EAEJ,KAKF,oBACG,UAAAE,IAAS,WAAa,OAACA,EAAA,CAAK,UAAU,cAAc,EACpD,OAAOF,GAAU,YAAW,OAACc,EAAA,CAAW,QAAQ,QAAS,SAAAd,EAAM,EAAgBA,GAClF,GAED,CAACC,EAAYd,EAAUgB,EAAUD,EAAMF,EAAOM,EAASF,CAAQ,CAAC,EAEnE,SACE,QAAC,MACE,GAAGG,EACJ,GAAIjB,EACJ,KAAK,SACL,SAAU,GACV,gBAAec,EACf,gBAAeD,EACf,QAASM,EACT,UAAWD,EACX,MAAOH,EAEP,oBAACU,GAAA,CAAO,OAAQ,GAAI,EACnBJ,GACH,CAEJ,EAEMK,GAAU,OAEZ,OAAC,MACC,mBAACC,GAAA,CAAK,UAAU,UAAU,EAC5B,EAIEC,GAAQ,CAAC,CAAE,SAAA/B,EAAU,UAAAO,EAAY,GAAI,GAAGyB,CAAM,OAEhD,OAAC,MAAG,SAAU,GAAI,UAAU,aAC1B,mBAACL,EAAA,CAAY,GAAGK,EAAO,QAAQ,QAAQ,UAAW,oBAAoBzB,CAAS,GAC5E,SAAAP,EACH,EACF,EAaEiC,GAAQ,CAAC,CACb,SAAAjC,EACA,MAAAa,EACA,UAAAN,EAAY,GACZ,MAAAW,EAAQ,CAAC,EACT,iBAAAb,EAAmB,GACnB,aAAAC,EAAe,CAAC,EAChB,GAAG0B,CACL,IAAsB,CACpB,IAAME,EAAiBxB,EAAc,CACnC,aAAc,GACd,CAACH,CAAS,EAAG,EAAQA,CACvB,CAAC,EAED,SACE,QAAC,MAAG,SAAU,GAAK,GAAGyB,EAAO,UAAWE,EAAgB,MAAOhB,EAC5D,UAAAL,MAAS,OAACkB,GAAA,CAAO,SAAAlB,EAAM,KACxB,OAAC,MAAG,UAAW,sBAAsBR,CAAgB,GAAI,KAAK,UAAU,MAAOC,EAC5E,SAAAN,EACH,GACF,CAEJ,EAEAD,EAAK,OAASa,GACdb,EAAK,QAAU8B,GACf9B,EAAK,WAAagC,GAClBhC,EAAK,MAAQkC,GPnGP,IAAAE,EAAA,6BA5EOC,GAAa,CAAC,CACzB,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,cAAAC,EAAgB,GAChB,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,YAAAC,EAAc,GACd,aAAAC,EAAe,MAEf,QAAAC,EAAU,GAEV,UAAAC,EAAY,GAEZ,QAAAC,EAAU,GACV,MAAAC,EACA,GAAGC,CACL,IAAsD,CACpD,GAAM,CAAE,KAAAC,EAAM,YAAAC,CAAY,KAAI,GAAAC,SAAc,EACtC,CAACC,EAAYC,CAAa,KAAI,YAAiBrB,CAAK,EACpDsB,KAAK,WAAQ,IAAM,OAAO,WAAW,EAAG,CAAC,CAAC,EAC1CC,KAAe,UAAoB,IAAI,EACvC,CAACC,EAAQC,CAAS,KAAI,YAAS,EAAK,EACpC,CAAE,SAAAC,EAAU,QAAAC,CAAQ,EAAIC,EAAiB,CAC7C,SAAUC,GAAKR,EAAcQ,EAAE,OAAO,KAAK,EAC3C,OAAQA,GAAK,CACXC,EAAc,EAEV5B,GAAQA,EAAO2B,CAAuC,CAC5D,EACA,QAASA,GAAK,CACZC,EAAc,EAEV3B,GAASA,EAAQ0B,CAAuC,CAC9D,CACF,CAAC,EAEKE,KAAc,WAAQ,IAAM,CAChC,IAAMC,KAAQ,GAAAC,SAAMjC,IAAU,GAAK,UAAYA,CAAK,EAEpD,OAAIgC,EAAM,QAAQ,GAAKA,EAAM,MAAM,EAAI,GAC9B,UAGF,SACT,EAAG,CAAChC,CAAK,CAAC,EAEJkC,EAAiB,SAAY,CACjC,GAAM,CAAE,QAAAC,CAAQ,EAAI,MAAMlB,EAAK,EAC/BhB,EAASkC,CAAO,CAClB,KAEA,aAAU,IAAM,CACdd,EAAcrB,CAAK,CACrB,EAAG,CAACA,CAAK,CAAC,EAEV,IAAM8B,KAAgB,eAAY,IAAM,CAClCV,EAAW,MAAM,iDAAiD,EACpEnB,EAASmB,CAAU,EAEnBC,EAAcrB,CAAK,CAEvB,EAAG,CAACoB,EAAYnB,EAAUD,CAAK,CAAC,EAE1BoC,GAAoBC,EAAc,CACtC,kBAAmB,GACnB,CAAChC,CAAS,EAAG,EAAQA,CACvB,CAAC,EAED,SACE,QAACiC,EAAA,CAAM,GAAIhB,EAAI,MAAOP,EAAO,QAASY,EAAU,GAAGX,EACjD,qBAAC,WACC,UAAU,cACV,QAASa,GAAK,CACZA,EAAE,gBAAgB,EAClBJ,EAAU,EAAI,CAChB,EACA,IAAKF,EAEL,oBAAC,WACC,UAAWa,GACX,MAAO,CACL,YAAAL,EACA,WAAY/B,EACZ,MAAOA,EACP,GAAGM,CACL,EACF,EACCF,KACC,OAAC,SACC,GAAIkB,EACJ,KAAMvB,EACN,MAAOqB,EACP,YAAaV,EACb,SAAUF,EACV,UAAWD,EACX,SAAUE,EACV,aAAcE,EACd,UAAU,cACT,GAAGe,EACN,EACE,MACN,KAEA,QAACa,EAAA,CACC,GAAG,cACH,OAAQf,EACR,QAAS,IAAMC,EAAU,EAAK,EAC9B,SAAS,eACT,OAAQ,EACR,SAAS,cACT,aAAcF,EACd,UAAU,uBAEV,oBAAC,wBAAoB,GAAID,EAAI,MAAOtB,EAAO,SAAUC,EAAU,KAC/D,QAAC,WAAQ,UAAU,wBAChB,UAAAiB,EAAY,KACX,OAAC,iBACC,QAAS,IAAM,CACRgB,EAAe,CACtB,EACF,KAEA,OAAC,SAAK,KAER,OAAC,kBACC,UAAU,cACV,GAAIZ,EACJ,KAAMvB,EACN,MAAOC,EACP,YAAY,eACZ,SAAQ,GACR,MAAK,GACL,SAAUC,EACZ,KACA,OAAC,SAAK,GACR,GACF,GACF,CAEJ,EAEMuC,GAAuB,CAAC,CAAE,MAAAC,EAAO,GAAGC,CAAM,OACvC,OAACC,EAAA,CAAW,UAAW7C,GAAY,aAAa,UAAU,WAAY4C,EAAO,MAAOD,EAAO,EAGpG3C,GAAW,WAAa0C,GQzKxB,IAAAI,GAA0D,iBAE1DC,GAAiD,2BACjDC,GAA6B,0BAC7BC,GAA6C,0BCJ7C,IAAAC,GAAqC,iBA+B9B,IAAMC,GAAO,CAAC,CACnB,IAAAC,EAAM,UACN,SAAAC,EACA,UAAAC,EACA,MAAAC,EACA,KAAAC,EACA,WAAAC,EACA,QAAAC,EACA,OAAAC,EACA,IAAAC,EACA,GAAAC,EACA,GAAAC,EACA,GAAAC,EACA,GAAAC,EACA,GAAAC,EACA,GAAAC,EACA,GAAAC,EACA,GAAAC,EACA,GAAAC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,GAAAC,EACA,IAAAC,EACA,GAAGC,CACL,OACS,kBACLvB,EACA,CACE,UAAAE,EACA,GAAGqB,EACH,MAAO,CACL,GAAGpB,EACH,GAAIC,EAAO,CAAE,aAAcA,CAAK,EAAI,CAAC,EACrC,GAAIC,EAAa,CAAE,gBAAiBA,CAAW,EAAI,CAAC,EACpD,GAAIC,EAAU,CAAE,aAAcA,CAAQ,EAAI,CAAC,EAC3C,GAAIC,EAAS,CAAE,WAAYA,CAAO,EAAI,CAAC,EACvC,GAAIC,EAAM,CAAE,QAASA,CAAI,EAAI,CAAC,EAC9B,GAAIC,EAAK,CAAE,aAAcA,CAAG,EAAI,CAAC,EACjC,GAAIC,EAAK,CAAE,WAAYA,CAAG,EAAI,CAAC,EAC/B,GAAIC,EAAK,CAAE,UAAWA,CAAG,EAAI,CAAC,EAC9B,GAAIC,EAAK,CAAE,eAAgBA,CAAG,EAAI,CAAC,EACnC,GAAIC,EAAK,CAAE,aAAcA,CAAG,EAAI,CAAC,EACjC,GAAIC,EAAK,CAAE,YAAaA,CAAG,EAAI,CAAC,EAChC,GAAIC,EAAK,CAAE,aAAcA,CAAG,EAAI,CAAC,EACjC,GAAIC,EAAK,CAAE,WAAYA,CAAG,EAAI,CAAC,EAC/B,GAAIC,EAAK,CAAE,UAAWA,CAAG,EAAI,CAAC,EAC9B,GAAIC,EAAM,CAAE,oBAAqBA,CAAI,EAAI,CAAC,EAC1C,GAAIC,EAAM,CAAE,iBAAkBA,CAAI,EAAI,CAAC,EACvC,GAAIC,EAAM,CAAE,kBAAmBA,CAAI,EAAI,CAAC,EACxC,GAAIC,EAAK,CAAE,aAAcA,CAAG,EAAI,CAAC,EACjC,GAAIC,EAAM,CAAE,IAAKA,CAAI,EAAI,CAAC,EAC1B,QAAS,MACX,CACF,EACArB,CACF,EDiDQ,IAAAuB,EAAA,6BA/GGC,GAAY,CAAC,CACxB,KAAAC,EACA,MAAAC,EAAQ,CAAC,EACT,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,YAAAC,EAAc,mCACd,aAAAC,EAAe,MACf,OAAAC,EACA,SAAAC,EAAW,GACX,UAAAC,EAAY,IACZ,aAAAC,EAAe,IACf,MAAAC,CAOF,IAAkE,CAChE,GAAM,CAACC,EAAOC,CAAQ,KAAI,aAAwB,IAAI,EAChDC,KAAK,YAAQ,IAAM,OAAO,WAAW,EAAG,CAAC,CAAC,EAC1C,CAAE,SAAAC,CAAS,EAAIC,EAAmC,CACtD,OAAAlB,EACA,QAAAC,EACA,SAAUkB,GAAK,CACb,GAAM,CAAE,MAAAC,CAAM,EAAID,EAAE,OAEhBC,GAAOC,EAAUD,CAAK,CAC5B,CACF,CAAC,KAED,cAAU,IAAM,CACd,IAAIE,EAAmD,KAEvD,OAAIR,IAAU,OACZQ,EAAa,WAAW,IAAM,CAC5BP,EAAS,IAAI,CACf,EAAGH,CAAY,GAGV,IAAM,CACPU,IAAe,MACjB,aAAaA,CAAU,CAE3B,CACF,EAAG,CAACR,EAAOF,CAAY,CAAC,EAExB,IAAMS,EAAaD,GAAoB,CACrC,IAAMG,EAAab,EAAW,CAAE,GAAGZ,CAAM,EAAI,CAAC,EAExC0B,EAAed,EAAWU,EAAM,OAAS,EAE/C,QAASK,GAAI,EAAGA,GAAID,EAAcC,KAAK,CACrC,IAAMC,EAAON,EAAM,KAAKK,EAAC,EAEpBC,IAIDA,EAAK,KAAOf,EACdY,EAAWG,EAAK,IAAI,EAAIA,EAExBX,EAAS,SAASW,EAAK,IAAI,yBAAyBC,GAAYhB,CAAS,CAAC,EAAE,EAEhF,CAEAZ,EAASwB,CAAU,CACrB,EAEMK,EAAcT,GAAyC,CAC3DA,EAAE,eAAe,EACjBA,EAAE,gBAAgB,EAEdA,EAAE,aAAa,OAASA,EAAE,aAAa,MAAM,QAC/CE,EAAUF,EAAE,aAAa,KAAK,CAElC,EAEMU,KAAc,gBAAaC,IACmB,CAC/C,YAAmB,iBACnB,kBAAmB,gBACtB,GAEiBA,CAAI,GAAK,gBACzB,CAAC,CAAC,EAECC,EAAcL,GAAe,CACjC,IAAMM,EAAY,CAAE,GAAGlC,CAAM,EAC7B,OAAOkC,EAAUN,EAAK,IAAI,EAC1B3B,EAASiC,CAAS,CACpB,EAEMC,EAAY,IAAM,CACtBlC,EAAS,CAAC,CAAC,CACb,EAEMmC,KAAY,YAAQ,IAAM,OAAO,OAAOpC,CAAK,EAAE,OAAO,CAACqC,EAAM,CAAE,KAAAC,CAAK,IAAMD,EAAOC,EAAM,CAAC,EAAG,CAACtC,CAAK,CAAC,EAElGuC,EAAmB,CAACX,EAAYY,IAAgB,CACpD,IAAMC,EAAOV,EAAYH,EAAK,IAAoB,EAElD,SACE,QAAC,WAAQ,UAAU,kBACjB,oBAAC,WAAQ,UAAU,mBACjB,mBAACa,EAAA,EAAK,EACR,KACA,QAACC,GAAA,CACC,oBAACC,EAAA,CAAW,QAAQ,QAAQ,UAAS,GAAC,OAAM,GACzC,SAAAf,EAAK,KACR,KACA,OAACe,EAAA,CAAW,UAAS,GAAC,QAAQ,QAC3B,SAAAd,GAAYD,EAAK,IAAI,EACxB,GACF,KACA,OAAC,WAAQ,UAAU,oBAAoB,QAAS,IAAMK,EAAWL,CAAI,EACnE,mBAAC,mBAAc,EACjB,IAdwCY,CAe1C,CAEJ,EAEA,SACE,QAAC,WAAQ,UAAU,uBAChB,YAAQzB,MACP,OAAC4B,EAAA,CAAW,QAAQ,aAAa,QAASzB,EAAI,UAAS,GACpD,SAAAH,EACH,KAEF,QAAC,WAAQ,UAAU,kBAAkB,OAAQe,EAC3C,oBAAC,WAAQ,UAAU,wBACjB,mBAAC,uBAAkB,EACrB,KACA,QAACY,GAAA,CACC,oBAACC,EAAA,CAAW,QAAQ,aAAa,QAASzB,EAAI,UAAS,GAAC,OAAO,OAC5D,SAAAT,EACH,KACA,QAACkC,EAAA,CAAW,QAAQ,QAAQ,UAAS,GAAC,uBACzBd,GAAYhB,CAAS,EAAE,KACpC,GACF,KACA,OAAC,SACC,GAAIK,EACJ,KAAK,OACL,KAAMnB,EACN,MAAM,GACN,YAAaU,EACb,SAAUF,EACV,UAAWD,EACX,SAAUE,EACV,aAAcE,EACd,UAAWN,EACX,MAAOC,EACP,OAAQM,EACR,SAAUC,EACV,MAAM,GACL,GAAGO,EACN,GACF,EACCH,IAAU,SACT,OAAC2B,EAAA,CAAW,QAAQ,QAAQ,UAAS,GAAC,UAAU,QAC7C,SAAA3B,EACH,EAED,OAAO,KAAKhB,CAAK,EAAE,OAAS,MAC3B,oBACG,UAAAY,MACC,QAAC,QAAK,UAAU,aACd,qBAAC+B,EAAA,CAAW,QAAQ,QAAQ,UAAS,GAClC,iBAAO,KAAK3C,CAAK,EAAE,OAAO,YAAU6B,GAAYO,CAAS,GAC5D,KACA,OAAC,QAAK,UAAU,qBAAqB,QAASD,EAC5C,mBAAC,mBAAc,EACjB,GACF,KAEF,OAAC,WAAQ,UAAU,oBACjB,mBAAC,WAAQ,UAAU,6BAA8B,gBAAO,OAAOnC,CAAK,EAAE,IAAIuC,CAAgB,EAAE,EAC9F,GACF,GAEJ,CAEJ,EAEMK,GAAsB,CAAC,CAAE,MAAAC,EAAO,GAAGC,CAAM,OACtC,OAACC,EAAA,CAAW,UAAWjD,GAAW,aAAc,CAAC,EAAG,WAAYgD,EAAO,MAAOD,EAAO,EAG9F/C,GAAU,WAAa8C,GE5NvB,IAAAI,GAA6C,iBAsHvC,IAAAC,GAAA,6BA7GAC,GAAe,CACnB,MAAO,iBACP,IAAK,gBACP,EAEMC,GAAkB,CAACC,EAAeC,EAAmB,MAAgB,CACzE,IAAMC,EAAQD,IAAqB,IAAMH,GAAa,IAAMA,GAAa,MACnEK,EAAUH,EAAM,QAAQE,EAAO,EAAE,EAAE,QAAQ,IAAK,GAAG,EAEzD,OAAKC,GACI,EAIX,EAEMC,GAAoB,CAACC,EAAeC,IACpC,CAACD,GAAS,OAAO,MAAMA,CAAK,EACvBC,EAAO,CAAC,EAGVA,EAAOD,CAAK,EAeRE,GAAc,CAAC,CAC1B,KAAAC,EACA,MAAAH,EACA,SAAAI,EACA,OAAAC,EACA,QAAAC,EACA,QAAAC,EACA,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,YAAAC,EAAc,GACd,aAAAC,EAAe,MAEf,QAAAC,EAAU,GAEV,UAAAC,EAAY,GAEZ,QAAAC,EAAU,GACV,MAAAC,EACA,IAAAC,EACA,IAAAC,EACA,iBAAAxB,EACA,OAAAK,EAAS,CACP,QAAS,QACT,MAAO,UACP,sBAAuB,EACvB,sBAAuB,CACzB,EACA,GAAGoB,CACL,IAAkD,CAChD,IAAMC,KAAK,YAAQ,IAAM,OAAO,WAAW,EAAG,CAAC,CAAC,EAC1CC,KAAiB,YAAwB,IAAM,CACnD,GAAI,OAAOtB,GAAW,WAAY,OAAOA,EAEzC,GAAM,CAAE,QAAAuB,EAAS,GAAGC,CAAa,EAAIxB,EAErC,OAAO,KAAK,aAAauB,EAASC,CAAY,EAAE,MAClD,EAAG,CAACxB,CAAM,CAAC,EACL,CAACyB,EAAgBC,CAAiB,KAAI,aAAS5B,GAAkBC,EAAOuB,CAAc,CAAC,EAEvF,CAAE,SAAAK,EAAU,QAAAC,CAAQ,EAAIC,EAAiB,CAC7C,SAAUC,GAAK,CACb,IAAMjC,EAAUJ,GAAgBqC,EAAE,OAAO,MAAOnC,CAAgB,EAE5DE,EAAQ,SAAS,GAAG,EACtB6B,EAAkBI,EAAE,OAAO,KAAK,GAEhCJ,EAAkB5B,GAAkB,OAAOD,CAAO,EAAGyB,CAAc,CAAC,EACpEnB,EAAS,OAAON,CAAO,CAAC,EAE5B,EACA,OAAQiC,GAAK,CACX,IAAMjC,EAAUJ,GAAgBqC,EAAE,OAAO,MAAOnC,CAAgB,EAChE+B,EAAkB5B,GAAkB,OAAOD,CAAO,EAAGyB,CAAc,CAAC,EACpEnB,EAAS,OAAON,CAAO,CAAC,EAEpBO,GAAQA,EAAO0B,CAAC,CACtB,EACA,QAASzB,CACX,CAAC,EAED,uBAAU,IAAM,CACd,IAAM0B,EAAYjC,GAAkBC,EAAOuB,CAAc,EAErDG,IAAmBM,GACrBL,EAAkBK,CAAS,CAE/B,EAAG,CAACT,EAAgBG,EAAgB1B,CAAK,CAAC,KAGxC,QAACiC,EAAA,CAAM,GAAIX,EAAI,MAAOJ,EAAO,QAASW,EAAU,GAAGR,EACjD,oBAAC,SACC,GAAIC,EACJ,KAAK,OACL,KAAMnB,EACN,UAAWK,EACX,MAAOC,EACP,MAAOiB,EACP,QAASnB,EACT,UAAWG,EACX,aAAcI,EACd,YAAaD,EACb,SAAUD,EACV,SAAUD,EACV,IAAKQ,EACL,IAAKC,EACJ,GAAGQ,EACN,EACF,CAEJ,EAEMM,GAAkB,CAAC,CAAE,MAAAC,EAAO,GAAGC,CAAM,OAClC,QAACC,EAAA,CAAW,UAAWnC,GAAa,aAAc,EAAG,WAAYkC,EAAO,MAAOD,EAAO,EAG/FjC,GAAY,WAAagC,GC/IzB,IAAAI,GAAwB,iBA8DlB,IAAAC,GAAA,6BA5COC,GAAQ,CAAC,CACpB,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,aAAAC,EAAe,MACf,WAAAC,EACA,MAAAC,EACA,MAAAC,YACA,KAAAC,WAOF,IAAsD,CACpD,IAAMC,KAAK,YAAQ,IAAM,OAAO,WAAW,EAAG,CAAC,CAAC,EAC1C,CAAE,SAAAC,CAAS,EAAIC,EAAiB,CACpC,SAAUC,GAAKhB,EAASgB,EAAE,OAAO,KAAK,EACtC,OAAQf,EACR,QAASC,CACX,CAAC,EAEKe,EAA0BC,EAAc,CAC5C,kBAAmB,GACnB,CAACf,CAAS,EAAG,EAAQA,EACrB,CAAC,SAASQ,CAAK,EAAE,EAAG,EAAQA,CAC9B,CAAC,EAEKQ,EAAiBD,EAAc,CACnC,MAAO,GACP,aAAcT,IAAeV,EAC7B,CAAC,QAAQa,CAAI,EAAE,EAAG,EAAQA,CAC5B,CAAC,EAED,SACE,SAAC,WAAQ,UAAWK,EAAyB,MAAOb,EAClD,sBAAC,WAAQ,UAAWe,EAClB,qBAAC,WAAQ,UAAU,aAAa,KAChC,QAAC,SACC,GAAIN,EACJ,KAAK,QACL,KAAMf,EACN,UAAW,eAAeK,CAAS,GACnC,MAAOC,EACP,MAAOK,EACP,QAASA,IAAeV,EACxB,UAAWM,EACX,aAAcG,EACd,SAAUD,GAAYD,EACrB,GAAGQ,EACN,GACF,EACCJ,KACC,QAACU,EAAA,CAAW,QAAQ,aAAa,QAASP,EAAI,UAAU,cACrD,SAAAH,EACH,EACE,MACN,CAEJ,EAEMW,GAAkB,CAAC,CAAE,MAAAC,EAAO,GAAGC,CAAM,OAClC,QAACC,EAAA,CAAW,UAAW3B,GAAO,aAAa,GAAG,WAAY0B,EAAO,MAAOD,EAAO,EAGxFzB,GAAM,WAAawB,GC3FnB,IAAAI,EAAyF,iBACzFC,GAAwB,0BACxBC,GAA4B,0BCF5B,IAAAC,GAA0B,iBAmCtB,IAAAC,GAAA,6BApBSC,GAAiB,CAAC,CAC7B,UAAWC,EAAgB,GAC3B,YAAAC,EAAc,GACd,SAAAC,EACA,sBAAAC,EACA,aAAAC,EACA,SAAAC,CACF,IAA2B,CACzB,GAAM,CAAE,IAAAC,EAAK,OAAAC,CAAO,EAAIC,GAAU,EAC5BC,EAAYC,GAAYV,EAAe,GAAG,KAEhD,cAAU,IAAM,CACVC,GAAeM,GAAU,CAACE,GAC5BP,EAAS,CAEb,EAAG,CAACD,EAAaQ,EAAWP,EAAUK,CAAM,CAAC,EAE7C,IAAMI,EAAiB,MAAM,QAAQN,CAAQ,EAAIA,EAAS,OAAS,EAAI,EAAQA,EAE/E,SACE,sBACG,UAAAA,KACD,SAAC,WAAQ,UAAU,kBAChB,YAAQD,GAAiB,CAACO,GAAkB,CAACF,MAAa,QAAC,KAAE,UAAU,gBAAiB,SAAAL,EAAa,GACpGH,GAAeQ,KACdN,EACCA,EAAsBG,CAAG,KAEzB,QAAC,WAAQ,IAAKA,EAAK,UAAU,UAC1B,SAAAG,MAAa,QAAC,QAAK,UAAU,gBAAgB,cAAE,EAClD,IAEN,GACF,CAEJ,EClDA,IAAAG,GAA4C,iBAkFpC,IAAAC,GAAA,6BArEKC,GAAS,CAAuB,CAAE,SAAAC,EAAU,MAAAC,CAAM,IAAsB,CACnF,GAAM,CAAE,YAAAC,EAAa,kBAAAC,EAAmB,WAAAC,EAAY,cAAAC,EAAe,SAAAC,EAAU,UAAAC,CAAU,EAAIC,GAAoB,EAEzGC,KAAuB,gBAC3B,CAACC,EAAMC,IACD,CAAC,SAAU,QAAQ,EAAE,SAAS,OAAOD,CAAC,EACjCA,IAAMC,EAGR,CAAC,CAACR,GAAqBA,EAAkBO,EAAGC,CAAC,EAEtD,CAACR,CAAiB,CACpB,EAEMS,KAAe,gBAClBC,GAAwB,CACvB,GAAIA,EACF,GAAIX,EAAa,CACf,GAAIE,GAAc,MAAM,QAAQC,CAAa,GAAKA,EAAc,QAAUD,EACxE,OAGFE,EAAS,CAAC,GAAGD,EAAeJ,CAAK,CAAC,CACpC,MACEK,EAASL,CAAK,EACdM,EAAU,EAAK,OAGbL,EACFI,EAASD,EAAc,OAAOS,GAAQ,CAACL,EAAqBK,EAAMb,CAAK,CAAC,CAAC,GAEzEK,EAAS,IAAI,EACbC,EAAU,EAAK,EAGrB,EACA,CAACL,EAAaE,EAAYC,EAAeC,EAAUL,EAAOM,EAAWE,CAAoB,CAC3F,EAEMI,KAAa,YAAQ,IACrBR,IAAkB,IAAMA,IAAkB,KACrC,GAGJ,MAAM,QAAQA,CAAa,EAI5B,CAAC,SAAU,QAAQ,EAAE,SAAS,OAAOJ,CAAK,EACrCI,EAAc,SAASJ,CAAK,EAG9BI,EAAc,KAAKS,GAAQ,CAAC,CAACX,GAAqBA,EAAkBF,EAAOa,CAAI,CAAC,EAP9EL,EAAqBR,EAAOI,CAAa,EAQjD,CAACI,EAAsBN,EAAmBE,EAAeJ,CAAK,CAAC,EAE5Dc,KAAgB,gBACnBC,GAA2B,CACtB,CAAC,QAAS,GAAG,EAAE,SAASA,EAAE,GAAG,IAC/BA,EAAE,eAAe,EAEjBJ,EAAa,EAAEC,GAAcX,EAAY,EAE7C,EACA,CAACU,EAAcC,EAAYX,CAAW,CACxC,EAEMe,KAAc,YAAQ,IACtB,OAAOjB,GAAa,YAEpB,QAACkB,EAAA,CAAW,aAAYjB,EAAO,QAAQ,QAAQ,OAAM,GAClD,SAAAD,EACH,EAIGA,EACN,CAACA,EAAUC,CAAK,CAAC,EAEpB,SACE,QAACkB,EAAK,OAAL,CACC,MAAOF,EACP,UAAWF,EACX,WAAYb,EACZ,SAAUW,EACV,QAAUO,GAAsBR,EAAaV,EAAckB,EAAW,EAAI,EAC5E,CAEJ,ECpGA,IAAAC,EAA2E,iBAgIvE,IAAAC,GAAA,6BAlHEC,GAAmB,CAAC,CACxB,OAAAC,EACA,UAAWC,EACX,aAAAC,EACA,OAAAC,EACA,aAAAC,CACF,IAAwB,CACtB,GAAM,CAACC,EAAGC,CAAI,KAAI,YAA6B,MAAS,EAElDC,KAAe,eAAY,IAAM,CACrC,IAAMC,EAAkBN,EAAa,SAAS,sBAAsB,EAAE,QAAU,EAE1EO,EAAe,OAAO,YAAcD,EAAkBJ,EAAeD,EAAS,EAC9EO,EAAY,OAAO,YAAcN,EAAe,EAChDO,EAAmBF,EAAeR,EAAmBS,EAAYD,EACjEG,EAAY,KAAK,IAAID,EAAkBX,CAAM,EAC7Ca,EAAY,KAAK,IAAID,EAAWX,CAAgB,EAEtDK,EAAK,GAAG,KAAK,MAAMO,CAAS,CAAC,IAAI,CACnC,EAAG,CAACX,EAAcE,EAAcD,EAAQF,EAAkBD,CAAM,CAAC,EAEjE,sBAAU,IAAM,CACdO,EAAa,CACf,EAAG,CAACA,CAAY,CAAC,EAEjBO,GAAkBZ,EAAcK,CAAY,EAC5CQ,EAAiB,SAAUR,CAAY,EAEhC,CAAE,EAAAF,CAAE,CACb,EAEaW,GAAU,CAAC,CACtB,SAAAC,EACA,iBAAAC,EACA,uBAAAC,EAAyB,gBACzB,qBAAAC,EAAuB,GACvB,iBAAAC,EAAmB,CAAC,EACpB,cAAAC,EACA,aAAApB,EACA,OAAAF,EAAS,GACX,IAAoB,CAClB,IAAMuB,KAA2B,UAAuB,IAAI,EACtDC,KAAkB,UAAyB,IAAI,EAC/C,CAACC,EAAqBC,CAAsB,KAAI,YAAS,EAAE,EAC3DC,KAAiB,UAAyB,IAAI,EAC9CC,EAAWC,GAAc,oBAAoB,EAEnDd,EAAiB,UAAWe,GAAK,CAC/B,GAAI,CAAC,YAAa,SAAS,EAAE,SAASA,EAAE,IAAI,EAAG,CAC7CA,EAAE,eAAe,EACjB,IAAMC,EAAc,SAAS,cAG7B,GAFmBA,GAAa,UAAY,KAG1C,OAAQD,EAAE,KAAM,CACd,IAAK,YACFC,GAAa,aAA6B,MAAM,EAEjD,MACF,IAAK,UACFA,GAAa,wBAAwC,MAAM,EAE5D,KACJ,CAEJ,CACF,CAAC,EAED,IAAMC,KAAoB,eACvBF,GAA2C,CAC1C,GAAM,CAAE,MAAAG,CAAM,EAAIH,EAAE,OAEhBR,GAAeA,EAAcW,CAAK,EAEtCP,EAAuBO,CAAK,CAC9B,EACA,CAACX,CAAa,CAChB,KAEA,aAAU,IAAM,CACVK,EAAe,SACjBA,EAAe,QAAQ,MAAM,CAEjC,EAAG,CAAC,CAAC,EAEL,GAAM,CAAE,EAAAtB,CAAE,EAAIN,GAAiB,CAC7B,OAAAC,EACA,UAAW,IACX,aAAAE,EACA,OAAQ,EACR,aAAc,EAChB,CAAC,EAEK,CAACgC,EAAeC,CAAgB,KAAI,YAAS,EAAK,EAElDC,KAAkB,eAAY,IAAM,CACxC,IAAMC,EACJ,KAAK,MAAMd,EAAyB,SAAS,sBAAsB,EAAE,QAAU,CAAC,EAAI,EAChFe,EAAgB,KAAK,MAAMd,EAAgB,SAAS,cAAgB,CAAC,EAE3EW,EAAiBE,GAA0BC,CAAa,CAC1D,EAAG,CAAC,CAAC,KAEL,aAAUF,EAAiB,CAACA,CAAe,CAAC,EAC5CtB,GAAkBS,EAA0Ba,CAAe,EAC3DtB,GAAkBU,EAAiBY,CAAe,EAClDrB,EAAiB,SAAUqB,CAAe,EAE1C,IAAMG,EAAsBC,EAAc,CACxC,wBAAyB,GACzB,CAACpB,CAAoB,EAAG,EAAQA,CAClC,CAAC,EAED,SACE,SAAC,WACC,UAAW,kBAAkBE,EAAgB,oBAAsB,EAAE,GACrE,MACEM,EACI,CACE,UAAW,OAAO,YAAc,IAChC,MAAO,OAAO,WAAa,GAC7B,EACA,CACE,OAAQM,EAAgB,OAAS7B,EACjC,UAAWL,EACX,MAAOE,EAAa,SAAS,aAAe,MAC9C,EAGL,UAAAoB,MACC,QAAC,WAAQ,UAAWiB,EAAqB,MAAOlB,EAC9C,oBAAC,SACC,KAAK,QACL,UAAU,eACV,MAAOH,GAAoBO,EAC3B,SAAUO,EACV,YAAab,EACb,QAASW,GAAKA,EAAE,gBAAgB,EAChC,IAAKH,EACL,UAAS,GACX,EACF,KAEF,QAAC,WAAQ,UAAU,gCAAgC,IAAKJ,EACtD,oBAAC,MAAG,UAAU,sBAAsB,IAAKC,EACtC,SAAAP,EACH,EACF,GACF,CAEJ,EHpHQ,IAAAwB,EAAA,6BApBFC,MAAgB,iBAAkD,IAAI,EAE/DC,GAAmB,IAAmD,CACjF,IAAMC,KAAU,cAAWF,EAA4D,EAEvF,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,yDAAyD,EAG3E,OAAOA,CACT,EAMMC,GAAc,CAAC,CAAE,SAAAC,CAAS,IAAwB,CACtD,IAAMC,KAAiB,WAAQ,IACzB,OAAOD,GAAa,YAEpB,OAACE,EAAA,CAAW,UAAS,GAAC,QAAQ,QAAQ,OAAM,GACzC,SAAAF,EACH,EAIGA,EACN,CAACA,CAAQ,CAAC,EAEb,SAAO,OAACG,EAAK,WAAL,CAAiB,SAAAF,EAAe,CAC1C,EAEMG,GAAgB,CAAuB,CAAE,MAAAC,CAAM,OAEjD,OAACH,EAAA,CAAW,QAAQ,QAAQ,OAAM,GAC/B,gBAAOG,GAAU,UAAY,OAAOA,GAAU,SAAWA,EAAQ,KAAK,UAAUA,CAAK,EACxF,EAIEC,GAAe,CAAuB,CAAE,MAAAD,EAAO,YAAAE,CAAY,IAC3DA,KAEA,OAACL,EAAA,CAAW,UAAS,GAAC,OAAM,GAAC,QAAQ,QAClC,YAAGG,EAAM,MAAM,QAAQA,EAAM,SAAW,EAAI,GAAK,GAAG,YACvD,EAIAA,IAAU,KACL,QAIP,OAACH,EAAA,CAAW,UAAS,GAAC,QAAQ,QAAQ,OAAM,GACzC,gBAAOG,GAAU,UAAY,OAAOA,GAAU,SAAWA,EAAQ,KAAK,UAAUA,CAAK,EACxF,EAISG,GAAS,CAAuB,CAE3C,QAAAC,EACA,kBAAAC,EACA,iBAAAC,EACA,uBAAAC,EACA,cAAAC,EACA,SAAAC,EAAW,IAAM,KACjB,UAAAC,EAAY,GACZ,YAAAC,EAAc,GACd,aAAAC,EAAe,uBACf,YAAAV,EACA,gBAAiBW,EAAkBd,GACnC,eAAgBe,EAAiBb,GACjC,WAAAc,EACA,SAAApB,EAEA,KAAAqB,EACA,MAAAhB,EACA,SAAAiB,EACA,OAAAC,EACA,QAAAC,EACA,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,gBAAAC,EAAkB,GAClB,OAAAC,EACA,iBAAAC,EACA,qBAAAC,EAEA,UAAAC,EAAY,GAEZ,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,YAAAC,EAAc,GAEd,aAAAC,EAAe,MAEf,QAAAC,EAAU,GAEV,UAAAC,GAAY,GAEZ,QAAAC,EAAU,GACV,MAAAC,GAEA,GAAGC,EACL,IAAkC,CAChC,IAAMC,MAAW,UAAoB,IAAI,EACnCC,GAAWC,GAAc,oBAAoB,EAC7CC,MAAK,WAAQ,IAAM,OAAO,WAAW,EAAG,CAAC,CAAC,EAC1CC,MAAe,UAAoB,IAAI,EACvC,CAACC,GAAQC,EAAS,KAAI,YAAS,EAAK,EAEpCC,MAAa,eAChBC,IAAkB,CACjBF,GAAUE,IAAQ,CAAChB,CAAQ,CAC7B,EACA,CAACA,CAAQ,CACX,EAEMiB,MAAc,eACjBC,IAAwB,CACvBA,GAAE,gBAAgB,EAGhB7B,EADEf,EACO,CAAC,EAED,IAFE,CAIf,EACA,CAACA,EAAae,CAAQ,CACxB,EAEM8B,MAAgB,WAAQ,IACxB7C,EACKF,EAAM,OAAS,EAEf,EAAQA,EAEhB,CAACE,EAAaF,CAAK,CAAC,EAEjBgD,MAAkB,WAAyB,IAC1CrD,GACIS,EAAQ,IAAI,CAACJ,GAAOiD,QACzB,OAAC9C,GAAO,OAAP,CAAc,MAAOH,GACpB,mBAACa,EAAA,CAAgB,MAAOb,GAAO,GADCiD,EAElC,CACD,EAGF,CAACpC,EAAiBlB,EAAUS,CAAO,CAAC,EAEvC,SACE,OAACb,GAAc,SAAd,CACC,MACE,CACE,cAAeS,EACf,SAAAiB,EACA,YAAaf,GAAe,GAC5B,kBAAAG,EACA,WAAYU,GAAc,KAC1B,UAAA2B,EACF,EAGF,mBAACQ,EAAA,CAAM,GAAIX,GAAI,MAAOL,GAAO,QAASO,GAAQ,IAAKD,GAAe,GAAGL,GACnE,oBAAC,WACC,GAAInB,EACJ,MAAOK,EACP,OAAQH,EACR,UAAW,UAAUU,EAAW,WAAa,EAAE,IAAIR,CAAS,GAE5D,qBAAC,WACC,GAAImB,GACJ,UAAW,oBAAoBQ,IAAiBzB,EAAkB,gBAAkB,EAAE,GACtF,QAAS,IAAMqB,GAAW,EAAI,EAE9B,oBAAC,UACC,KAAK,SACL,UAAW,iBAAiB,MAAM,QAAQ3C,CAAK,EAAIA,EAAM,OAAS,EAAIA,GAAS,GAAK,aAAa,GACjG,gBAAc,UACd,gBAAeyC,GACf,QAASK,IAAK,CACZH,GAAW,EAAI,EAEXxB,GAASA,EAAQ2B,EAAC,CACxB,EAEC,SAAAC,MACC,OAACjC,EAAA,CAAgB,GAAIZ,EAAc,CAAE,MAAAF,EAAO,YAAAE,CAAY,EAAI,CAAE,MAAOF,CAAM,EAAI,KAE/E,OAACH,EAAA,CAAW,QAAQ,QAAQ,UAAS,GAAC,OAAM,GACzC,SAAAgC,EACH,EAEJ,EACCkB,IAAiBzB,MAChB,OAAC,WAAQ,UAAU,aAAa,QAASuB,GACvC,mBAAC,aAAQ,EACX,KAEF,OAAC,gBAAY,UAAW,qBAAqBJ,IAAU,gBAAgB,GAAI,GAC7E,KACA,OAAC3C,EAAA,CACC,GAAG,cACH,OAAQ2C,GACR,QAAS,IAAME,GAAW,EAAK,EAC/B,SAAUN,GAAW,OAAS,cAC9B,QAASA,GAAW,GAAM,GAC1B,SAAUA,GAAW,SAAW,SAChC,OAAQ,EACR,SAAUD,GACV,aAAc,GACd,mBAAoB,IACpB,aAAcC,GAAW,OAAYG,GACrC,iBAAiB,sBACjB,UAAU,sBAEV,mBAACW,GAAA,CACC,aAAcX,GACd,cAAehC,EACf,iBAAkBF,EAClB,uBAAwBC,EACxB,qBAAsBkB,EACtB,iBAAkBD,EAClB,OAAQD,EAER,mBAAC6B,GAAA,CACC,UAAW1C,EACX,YAAaC,EACb,SAAUF,EACV,aAAcG,EAEb,SAAAoC,GACH,EACF,EACF,GACF,EACF,EACF,CAEJ,EAEMK,GAAwB,CAAuB,CACnD,MAAAC,EACA,GAAGC,CACL,OAEI,OAACC,EAAA,CACC,UAAWrD,GACX,aAAc,CAAC,EACf,WAAY,CACV,GAAGoD,EACH,YAAa,EACf,EACA,MAAOD,EACT,EAIEG,GAAyB,CAAuB,CACpD,MAAAH,EACA,GAAGC,CACL,OAEI,OAACC,EAAA,CACC,UAAWrD,GACX,aAAc,KACd,WAAY,CACV,GAAGoD,EACH,YAAa,EACf,EACA,MAAOD,EACT,EAIEI,GAA0CH,GAA6C,CAC3F,GAAM,CAAE,YAAArD,CAAY,EAAIqD,EAExB,OAAIrD,KACK,OAACmD,GAAA,CAA0B,GAAGE,EAAO,YAAa,GAAM,KAG1D,OAACE,GAAA,CAA2B,GAAGF,EAAO,YAAa,GAAO,CACnE,EAEApD,GAAO,WAAauD,GACpBvD,GAAO,OAASwD,GAChBxD,GAAO,YAAcT,GI5TrB,IAAAkE,GAAwB,iBAwElB,IAAAC,GAAA,6BAxDOC,GAAS,CAAC,CACrB,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,IAAAC,EACA,IAAAC,EACA,KAAAC,EACA,WAAAC,EAAa,GACb,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,YAAAC,EAAc,GACd,aAAAC,EAAe,MAEf,QAAAC,EAAU,GAEV,UAAAC,EAAY,GAEZ,QAAAC,EAAU,GACV,MAAAC,EACA,GAAGC,CACL,IAAuD,CACrD,IAAMC,KAAK,YAAQ,IAAM,OAAO,WAAW,EAAG,CAAC,CAAC,EAC1CC,EAAeC,GAA0C,CACzDpB,GAAQA,EAAOoB,CAAC,EAEpB,IAAMC,EAAc,SAAS,GAAGvB,CAAK,EAAE,EAEnCI,IAAQ,QAAamB,EAAcnB,GACrCH,EAASG,CAAG,EAGVC,IAAQ,QAAakB,EAAclB,GACrCJ,EAASI,CAAG,EAGdJ,EAASsB,CAAW,CACtB,EAEM,CAAE,QAAAC,EAAS,SAAAC,CAAS,EAAIC,EAAiB,CAC7C,OAAQL,EACR,SAAUC,GAAKrB,EAAS,CAACqB,EAAE,OAAO,KAAK,EACvC,QAASnB,CACX,CAAC,EAEKwB,EAAuBC,EAAc,CACzC,eAAgB,GAChB,WAAYJ,CACd,CAAC,EAED,SACE,QAACK,EAAA,CAAM,GAAIT,EAAI,MAAOF,EAAO,QAASM,EAAU,GAAGL,EACjD,qBAAC,WAAQ,UAAWQ,EAClB,qBAAC,SACC,GAAIP,EACJ,KAAK,QACL,KAAMrB,EACN,UAAW,UAAUS,CAAS,GAC9B,MAAOC,EACP,MAAOT,EACP,UAAWU,EACX,aAAcI,EACd,YAAaD,EACb,SAAUD,EACV,SAAUD,EACV,IAAKP,EACL,IAAKC,EACL,KAAMC,EACL,GAAGmB,EACN,EACC,CAAClB,MACA,QAAC,SACC,GAAIa,EACJ,KAAK,SACL,KAAMrB,EACN,UAAW,iBAAiBS,CAAS,GACrC,MAAOC,EACP,MAAOT,EACP,aAAcc,EACd,SAAUF,EACV,SAAUD,EACV,IAAKP,EACL,IAAKC,EACL,KAAMC,EACL,GAAGmB,EACN,GAEJ,EACF,CAEJ,EAEMK,GAAmB,CAAC,CAAE,MAAAC,EAAO,GAAGC,CAAM,OACnC,QAACC,EAAA,CAAW,UAAWnC,GAAQ,aAAc,EAAG,WAAYkC,EAAO,MAAOD,EAAO,EAG1FjC,GAAO,WAAagC,GCpHpB,IAAAI,GAA+B,iBAsDzB,IAAAC,GAAA,6BAtCOC,GAAW,CAAC,CACvB,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,KAAAC,EAAO,EACP,OAAAC,EAAS,WACT,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,YAAAC,EAAc,GACd,aAAAC,EAAe,MAEf,QAAAC,EAAU,GAEV,UAAAC,EAAY,GAEZ,QAAAC,EAAU,GACV,MAAAC,EACA,GAAGC,CACL,IAAyD,CACvD,IAAMC,KAAK,YAAQ,IAAM,OAAO,WAAW,EAAG,CAAC,CAAC,EAC1C,CAAE,SAAAC,EAAU,QAAAC,CAAQ,EAAIC,EAAsC,CAClE,OAAQnB,EACR,SAAUoB,GAAKrB,EAASqB,EAAE,OAAO,KAAK,EACtC,QAASnB,CACX,CAAC,EAEKoB,EAAoBC,EAAc,CACtC,SAAU,GACV,CAAClB,CAAS,EAAG,EAAQA,CACvB,CAAC,EAED,SACE,QAACmB,EAAA,CAAM,GAAIP,EAAI,MAAOF,EAAO,QAASI,EAAU,GAAGH,EACjD,oBAAC,YACC,GAAIC,EACJ,KAAMnB,EACN,UAAWwB,EACX,MAAO,CACL,OAAQlB,EACR,GAAGE,CACL,EACA,MAAOP,EACP,KAAMI,EACL,GAAGe,EACJ,UAAWX,EACX,aAAcI,EACd,YAAaD,EACb,SAAUD,EACV,SAAUD,EACZ,EACF,CAEJ,EAEMiB,GAAqB,CAAC,CAAE,MAAAC,EAAO,GAAGC,CAAM,OACrC,QAACC,EAAA,CAAW,UAAW/B,GAAU,aAAa,GAAG,WAAY8B,EAAO,MAAOD,EAAO,EAG3F7B,GAAS,WAAa4B,GC/EtB,IAAAI,GAAwB,iBCAxB,IAAAC,GAAyB,iBCAzB,IAAAC,GAAoC,iBA0ChC,IAAAC,GAAA,6BApBSC,GAAU,CAAC,CACtB,SAAAC,QACA,SAAAC,EACA,QAAAC,EACA,OAAAC,EAAS,EACT,SAAAC,EAAW,EACb,IAAoB,CAClB,GAAM,CAAE,aAAAC,EAAc,UAAAC,EAAW,WAAAC,EAAY,OAAAC,CAAO,EAAIC,GAAS,EAE3DC,EAAaC,EAAc,CAC/B,QAAS,GACT,CAACX,CAAQ,EAAG,EACd,CAAC,EAKD,OAHAY,EAAiB,aAAc,IAAMN,EAAU,EAAGD,CAAY,EAC9DO,EAAiB,aAAc,IAAML,EAAW,EAAGF,CAAY,EAE3DD,EAAiBH,KAGnB,sBACG,8BAAaA,EAAU,CAAE,IAAKI,CAAa,CAAC,KAE7C,QAACQ,EAAA,CACC,SAAS,OACT,GAAG,UACH,OAAQL,EACR,aAAcH,EACd,QAASE,EACT,SAAUP,EACV,UAAWU,EACX,oBAAqB,GACrB,OAAQ,GAAI,CAACP,EACb,aAAc,GACd,mBAAoB,IACpB,wBAAwB,kBAExB,oBAAC,QAAK,UAAU,kBAAmB,SAAAD,EAAQ,EAC7C,GACF,CAEJ,ED1BM,IAAAY,GAAA,6BAvBOC,GAAc,CAAC,CAC1B,SAAAC,EACA,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,YAAAC,EACA,kBAAAC,EACA,kBAAAC,EAAoB,GACtB,IAAwB,CACtB,GAAM,CAACC,EAAYC,CAAa,KAAI,aAAS,EAAK,EAQlD,SACE,QAACC,GAAA,CACC,QAASF,GAAcF,EAAoBA,EAAoBD,EAC/D,SAAUF,EACV,OAAQC,EAER,oBAAC,QAAK,QAZS,IAAM,CACvBK,EAAc,EAAI,EAClB,UAAU,UAAU,UAAUP,CAAK,EACnC,WAAW,IAAMO,EAAc,EAAK,EAAGF,CAAiB,CAC1D,EAQgC,SAAAN,EAAS,EACvC,CAEJ,EDwEQ,IAAAU,EAAA,6BApGFC,GAAa,CAChB,MAAkB,EAClB,QAAoB,IACpB,MAAkB,GACrB,EAEMC,GAAW,CACd,MAAkB,EAClB,QAAoB,IACpB,MAAkB,CACrB,EAmBaC,GAAS,CAAC,CACrB,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,OAAAC,EACA,QAAAC,EACA,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,EACT,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,YAAAC,EAAc,GACd,aAAAC,EAAe,MACf,MAAAC,EACA,UAAAC,EACA,WAAAC,EACA,MAAAC,YACA,KAAAC,YACA,aAAAC,EAAe,IACf,QAAAC,EAAU,IACV,SAAUC,EACV,UAAWC,EACX,iBAAkBC,EAClB,kBAAmBC,EACnB,gBAAAC,EACA,iBAAAC,EACA,MAAAC,CAOF,IAAwD,CACtD,IAAMC,KAAK,YAAQ,IAAM,OAAO,WAAW,EAAG,CAAC,CAAC,EAC1C,CAAE,SAAAC,CAAS,EAAIC,EAAmC,CACtD,SAAUC,IAAK3B,EAAS2B,GAAE,OAAO,OAAO,EACxC,OAAQ1B,EACR,QAASC,CACX,CAAC,EAEK0B,EAA2BC,EAAc,CAC7C,mBAAoB,GACpB,CAAC1B,CAAS,EAAG,EAAQA,EACrB,CAAC,SAASoB,CAAK,EAAE,EAAG,EAAQA,CAC9B,CAAC,EAEKO,EAAkBD,EAAc,CACpC,OAAQ,GACR,aAAc9B,EACd,cAAe,CAACQ,GAAYD,CAC9B,CAAC,EAEKyB,EAAUpC,GAAWmB,CAAI,GAAKnB,GAAW,QACzCqC,IAAUpC,GAASiB,CAAK,GAAKjB,GAAS,SAAsBmC,EAC5DE,EAAW,KAAK,IAAIjB,EAASe,CAAO,EAE1C,SACE,QAAC,WACC,UAAWH,EACX,MACE,CACE,GAAGxB,EACH,UAAW,GAAG4B,EAAM,KACpB,aAAc,GAAGD,CAAO,KACxB,mBAAoB,GAAGA,EAAU,KAAK,IAAI,KAAK,IAAIhB,EAAc,CAAC,EAAG,CAAC,CAAC,KACvE,YAAa,GAAGkB,CAAQ,IAC1B,EAGD,UAAAtB,KACC,OAACuB,EAAA,CAAW,QAAQ,aAAa,UAAU,eAAe,QAASV,EAChE,SAAAb,EACH,EACE,KACHM,IAAa,WACZ,OAACkB,GAAA,CAAQ,QAASd,EAAiB,SAAU,CAACA,EAAiB,OAAQ,GACrE,mBAACJ,EAAA,CAAS,KAAM,GAAGc,EAAU,EAAG,KAAM,UAAU,cAAc,QAAS,IAAM/B,EAAS,CAACD,CAAK,EAAG,EACjG,KAEF,QAAC,WAAQ,UAAW+B,EACjB,UAAAX,IAAqB,WACpB,OAAC,QAAK,UAAU,4BACd,mBAACA,EAAA,CAAiB,KAAM,GAAGY,EAAU,EAAG,KAAM,EAChD,EAEDX,IAAsB,WACrB,OAAC,QAAK,UAAU,6BACd,mBAACA,EAAA,CAAkB,KAAM,GAAGW,EAAU,EAAG,KAAM,EACjD,KAEF,OAAC,QAAK,UAAU,aAAa,KAC7B,OAAC,SACC,GAAIP,EACJ,KAAK,WACL,KAAM1B,EACN,UAAW,mBAAmBK,CAAS,GACvC,MAAOC,EACP,QAASL,EACT,UAAWM,EACX,aAAcI,EACd,YAAaD,EACb,SAAUD,GAAYD,EACrB,GAAGmB,EACN,GACF,EACCP,IAAc,WACb,OAACiB,GAAA,CAAQ,QAASb,EAAkB,SAAU,CAACA,EAAkB,OAAQ,GACvE,mBAACJ,EAAA,CAAU,KAAM,GAAGa,EAAU,EAAG,KAAM,UAAU,cAAc,QAAS,IAAM/B,EAAS,CAACD,CAAK,EAAG,EAClG,EAEDW,GAASE,KACR,OAACsB,EAAA,CAAW,QAAQ,aAAa,UAAU,eAAe,QAASV,EAChE,SAAAd,GAASE,EACZ,EACE,MACN,CAEJ,EAEMwB,GAAmB,CAAC,CAAE,MAAAC,EAAO,GAAGC,CAAM,OACnC,OAACC,EAAA,CAAW,UAAW1C,GAAQ,aAAc,GAAO,WAAYyC,EAAO,MAAOD,EAAO,EAG9FxC,GAAO,WAAauC,GGhKX,IAAAI,GAAA,6BADIC,GAAQ,CAAC,CAAE,IAAAC,EAAM,GAAI,QAAAC,EAAU,QAAS,GAAGC,CAAM,OACrD,QAAC,OAAI,QAASD,EAAS,IAAKD,EAAM,GAAGE,EAAO,MAAM,OAAO,ECLlE,IAAAC,GAAkC,iBCAlC,IAAAC,GAAwB,iBACxBC,GAA+C,0BAyCb,IAAAC,GAAA,6BA1BrBC,GAAmB,CAAgC,CAC9D,OAAAC,EACA,OAAAC,EACA,KAAMC,EACN,MAAAC,EACA,MAAAC,EACA,gBAAAC,EACA,UAAAC,EACA,WAAAC,EACA,OAAAC,CACF,IAAsC,CACpC,IAAMC,EAAYR,IAAW,OAAYA,EAASG,EAE5CM,EAAkBC,EAAc,CACpC,gBAAiB,EAAQF,CAC3B,CAAC,EAEKG,EAAgBH,EAAY,IAAMJ,EAAgBI,CAAS,EAAI,OAE/DI,KAAW,YAAQ,IAClBJ,KAGH,QAAC,QAAK,UAAU,YACb,WAAQH,GACPA,IAAcG,IACbF,IAAe,SAAQ,QAAC,mBAAc,KAAK,QAAC,qBAAgB,GACjE,EAPqB,KAStB,CAACE,EAAWH,EAAWC,CAAU,CAAC,EAErC,OAAIC,EAAe,QAGjB,SAAC,MAAG,MAAO,CAAE,MAAAL,CAAM,EAAG,UAAWO,EAAiB,QAASE,EACzD,sBAACE,GAAA,CAAK,KAAK,SAAS,IAAI,QAAQ,GAAG,gBAAgB,GAAG,SACnD,UAAAZ,KAAO,QAACA,EAAA,EAAK,EAAK,QACnB,QAACa,EAAA,CAAW,QAAQ,QAAQ,UAAS,GAClC,SAAAf,EACH,EACCa,GACH,KACA,QAACG,GAAA,CAAO,MAAM,qBAAqB,GACrC,CAEJ,EChDM,IAAAC,GAAA,6BAPAC,GAAkB,CACtBC,EACA,CAAE,MAAAC,EAAO,OAAAC,EAAQ,UAAAC,CAAU,EAC3BC,IACoB,CACpB,GAAIH,GAASD,EAAKC,CAAK,EACrB,SACE,QAACI,EAAA,CAAW,UAAS,GAAC,OAAM,GACzB,SAAAL,EAAKC,CAAK,EACb,EAGJ,GAAIC,EAAQ,OAAOA,EAAOF,EAAMI,CAAM,EAEtC,GAAID,EAAW,SAAO,QAACA,EAAA,CAAU,KAAMH,EAAM,OAAQI,EAAQ,CAC/D,EAEaE,GAAY,CACvBN,EACAO,EACAH,IACGG,EAAQ,IAAI,CAACC,EAAQC,IAASD,EAAO,OAAS,QAAO,QAAC,MAAc,SAAAT,GAAgBC,EAAMQ,EAAQJ,CAAM,GAA1CK,CAA4C,CAAM,EAExGC,GAAW,CACtBV,EACAW,EACAC,IAEID,EACKX,EAAK,SAAS,CAACa,EAAGC,IAAM,CAC7B,IAAMC,EAASF,EAAEF,CAAM,EACjBK,EAASF,EAAEH,CAAM,EAEvB,MACE,CAAC,SAAU,UAAW,QAAQ,EAAE,SAAS,OAAOI,CAAM,GACtD,CAAC,SAAU,UAAW,QAAQ,EAAE,SAAS,OAAOC,CAAM,EAElDD,IAAWC,EAAe,EAE1BJ,IAAU,MACLG,EAASC,EAAS,EAAI,GAGxBD,EAASC,EAAS,GAAK,EAGzB,CACT,CAAC,EAGIhB,ECxDT,IAAAiB,GAAsC,iBAIzBC,GAAU,IAAqC,CAC1D,GAAM,CAAC,CAACC,EAAQC,CAAK,EAAGC,CAAY,KAAI,aAA+D,CAAC,KAAM,IAAI,CAAC,EAE7GC,KAAkB,gBAAaC,GAA+C,CAClFF,EAAa,CAAC,CAACF,EAAQC,CAAK,IACtBG,IAAgBJ,EACX,CAACI,EAAa,KAAK,EAGxBH,IAAU,MACL,CAACG,EAAa,MAAM,EAGtB,CAAC,KAAM,IAAI,CACnB,CACH,EAAG,CAAC,CAAC,EAEL,MAAO,CACL,OAAAJ,EACA,MAAAC,EACA,gBAAAE,CACF,CACF,ECAS,IAAAE,GAAA,6BAXIC,GAAgB,CAAgC,CAC3D,KAAAC,EACA,QAAAC,EACA,WAAAC,EAAa,GACb,WAAAC,EAAa,GACb,OAAAC,CACF,IAAmC,CACjC,IAAMC,EAAeC,EAAc,CACjC,eAAgBH,GAAcD,CAChC,CAAC,EAED,SAAO,QAAC,MAAG,UAAWG,EAAe,SAAAE,GAAUP,EAAMC,EAASG,CAAM,EAAE,CACxE,EJ6BY,IAAAI,GAAA,6BAjCCC,GAAa,CAAgC,CACxD,QAASC,EACT,KAAAC,EACA,MAAAC,EACA,WAAAC,EAAa,GACb,MAAAC,EACA,UAAAC,EAAY,GACZ,eAAgBC,EAAkB,EACpC,IAAgC,CAC9B,GAAM,CAACC,EAAUC,CAAW,KAAI,aAAqC,CAAC,CAAC,EAEjEC,EAAiBC,EAAc,CACnC,cAAe,GACf,CAACJ,CAAe,EAAG,EAAQA,EAC3B,eAAgBJ,IAAU,UAC1B,oBAAqBA,IAAU,QACjC,CAAC,EAEKS,EAA0BD,EAAc,CAC5C,wBAAyB,GACzB,CAACL,CAAS,EAAG,EAAQA,CACvB,CAAC,EAEK,CAAE,OAAAO,EAAQ,MAAAC,EAAO,gBAAAC,CAAgB,EAAIC,GAAiB,EAEtDC,KAAU,YAAQ,IAAM,CAC5B,IAAIC,EAAe,CAAC,GAAGjB,CAAc,EAErC,OAAIG,IACFc,EAAe,CACb,CACE,OAAQ,GAAG,OAAO,OAAOV,CAAQ,EAAE,MAAM,GACzC,OAAQ,CAACN,EAAMiB,OACb,QAACC,GAAA,CACC,KAAM,YAAYD,CAAM,GACxB,MAAO,GAAGA,CAAM,KAAMX,EACtB,SAAUa,GAAc,CACtBZ,EAAYa,GAAQ,CAClB,IAAMC,EAAO,CAAE,GAAGD,CAAK,EAEvB,OAAID,EACFE,EAAK,GAAGJ,CAAM,EAAE,EAAIjB,EAEpB,OAAOqB,EAAK,GAAGJ,CAAM,EAAE,EAGlBI,CACT,CAAC,CACH,EACF,CAEJ,EACA,GAAGL,CACL,GAGKA,CACT,EAAG,CAACjB,EAAgBG,EAAYI,CAAQ,CAAC,EAEnCgB,KAAO,YAAQ,IAAMC,GAAkBvB,EAAMW,EAAQC,CAAK,EAAG,CAACZ,EAAMW,EAAQC,CAAK,CAAC,EAExF,SACE,QAAC,WAAQ,UAAWF,EAClB,qBAAC,SAAM,UAAWF,EAChB,qBAAC,SACC,oBAAC,MACE,SAAAO,EAAQ,IAAI,CAACS,EAAQC,OACpB,QAACC,GAAA,CAEC,gBAAiBb,EACjB,UAAWF,EACX,WAAYC,EACX,GAAGY,GAJCC,CAKP,CACD,EACH,EACF,KACA,QAAC,SACE,SAAAH,EAAK,IAAIK,MACR,QAACC,GAAA,CAEC,OAAQD,EAAIxB,CAAK,EACjB,KAAMwB,EACN,QAASZ,EACT,WAAY,GAAGY,EAAIxB,CAAK,CAAc,KAAMG,EAC5C,WAAYJ,GALPyB,EAAIxB,CAAK,CAMhB,CACD,EACH,GACF,EACF,CAEJ,EKnHA,IAAA0B,GAAsE,iBCAtE,IAAAC,GAAmD,iBA6G/C,IAAAC,GAAA,6BAzFJ,IAAMC,GAAc,CAClB,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,CACV,EAoCO,IAAMC,GAAW,CAAC,CACvB,KAAAC,EAAO,CAAC,EACR,QAAAC,EAAU,QACV,OAAAC,EAAS,OACT,UAAAC,EAAY,aACZ,MAAAC,EACA,SAAAC,EACA,QAAAC,EACA,KAAAC,EAAO,SACP,UAAAC,EAAY,GACZ,MAAAC,EAAQ,CAAC,CACX,IAAoB,CAClB,IAAMC,KAAe,WAAuB,IAAI,EAC1CC,KAAiB,WAAwB,IAAI,EAC7C,CAACC,EAAkBC,CAAmB,KAAI,aAAS,EAAK,EACxD,CAACC,EAAUC,CAAW,KAAI,aAASC,EAAW,EAC9CC,EAAsBC,EAAc,CACxC,WAAY,GACZ,CAAC,WAAWjB,CAAO,EAAE,EAAG,EAAQA,EAChC,CAAC,QAAQM,CAAI,EAAE,EAAG,EAAQA,EAC1B,CAAC,UAAUL,CAAM,EAAE,EAAG,EAAQA,EAC9B,CAAC,SAASE,CAAK,EAAE,EAAG,EAAQA,EAC5B,qBAAsBD,IAAc,WACpC,CAACK,CAAS,EAAG,EAAQA,CACvB,CAAC,EAED,uBAAU,IAAM,CACd,IAAMW,EAAeR,EAAe,SAAS,sBAAsB,GAAKK,GAClEI,EAAgBV,EAAa,SAAS,sBAAsB,GAAKM,GAEjEK,EAAQF,EAAa,MACrBG,EAASrB,IAAY,OAAsB,EAAIkB,EAAa,OAC5DI,EAAOJ,EAAa,KAAOC,EAAc,KACzCI,EACJvB,IAAY,OACRkB,EAAa,IAAMA,EAAa,OAASC,EAAc,IACvDD,EAAa,IAAMC,EAAc,IAEvCL,EAAY,CAAE,KAAAQ,EAAM,IAAAC,EAAK,MAAAH,EAAO,OAAAC,CAAO,CAAC,EAEnCV,GACH,WAAW,IAAM,CACfC,EAAoB,EAAI,CAC1B,EAAG,GAAG,CAEV,EAAG,CAACD,EAAkBX,EAASK,CAAO,CAAC,KAGrC,SAAC,WAAQ,UAAWW,EAAqB,IAAKP,EAAc,MAAOD,EAChE,YAAQR,MAAY,QAAC,QAAK,UAAW,iBAAiBW,EAAmB,SAAW,EAAE,GAAI,MAAOE,EAAU,EAC3Gd,EAAK,IAAI,CAAC,CAAE,GAAAyB,EAAI,MAAAC,CAAM,OACrB,QAACC,GAAK,IAAL,CAAkB,GAAIF,EAAI,IAAKA,IAAOnB,EAAUK,EAAiB,OAC/D,SAAAe,GADYD,CAEf,CACD,EACApB,GACH,CAEJ,EDnEI,IAAAuB,GAAA,6BAxCEC,MAAc,kBAAuC,IAAI,EAEzDC,GAAUC,GAAsC,CACpD,IAAMC,KAAU,eAAWH,EAAW,EAEtC,GAAI,CAACG,EACH,MAAM,IAAI,MAAM,uDAAuD,EAGzE,GAAM,CAAE,QAAAC,EAAS,cAAAC,CAAc,EAAIF,EAEnC,MAAO,CAACC,IAAYF,EAAI,IAAMG,EAAcH,CAAE,CAAC,CACjD,EAEMI,GAAiB,IAAwB,CAC7C,IAAMH,KAAU,eAAWH,EAAW,EAEtC,GAAI,CAACG,EACH,MAAM,IAAI,MAAM,uDAAuD,EAGzE,OAAOA,CACT,EAQaI,GAAO,CAAC,CAAE,SAAAC,EAAU,eAAAC,EAAgB,SAAAC,CAAS,IAAiB,CACzE,GAAM,CAACN,EAASO,CAAU,KAAI,aAASF,CAAc,EAErD,uBAAU,IAAM,CACVC,GACFA,EAASN,CAAO,CAEpB,EAAG,CAACA,EAASM,CAAQ,CAAC,KAGpB,QAACV,GAAY,SAAZ,CACC,MAAO,CACL,QAAAI,EACA,cAAeF,GAAMS,EAAWT,CAAE,CACpC,EAEC,SAAAM,EACH,CAEJ,EAWMI,GAAM,CAAC,CAAE,GAAAV,EAAI,SAAAM,EAAU,UAAAK,EAAY,GAAI,MAAAC,EAAQ,CAAC,EAAG,QAAAC,EAAS,IAAAC,CAAI,IAAgB,CACpF,GAAM,CAACC,EAAQb,CAAO,EAAIH,GAAOC,CAAE,EAC7BgB,EAAgBC,EAAc,CAClC,IAAK,GACL,CAACN,CAAS,EAAG,CAAC,CAACA,EACf,UAAWI,CACb,CAAC,EAUD,SACE,QAAC,QAAK,UAAWC,EAAe,MAAOJ,EAAO,QAT3BM,GAAyC,CAC5DhB,EAAQ,EAEJW,GACFA,EAAQK,CAAC,CAEb,EAGsE,IAAKJ,EACtE,SAAAR,EACH,CAEJ,EAOMa,GAAW,CAAC,CAAE,GAAAnB,EAAI,SAAAM,CAAS,IAAqB,CACpD,GAAM,CAACS,CAAM,EAAIhB,GAAOC,CAAE,EAE1B,OAAOe,EAAST,EAAW,IAC7B,EAEMc,GAAU,CAAC,CAAE,SAAAd,EAAU,GAAGe,CAAM,IAAqC,CACzE,GAAM,CAAE,QAAAnB,CAAQ,EAAIE,GAAe,EAEnC,SACE,QAACkB,GAAA,CAAkB,GAAGD,EAAO,QAASnB,EACnC,SAAAI,EACH,CAEJ,EAEAD,GAAK,IAAMK,GACXL,GAAK,SAAWc,GAChBd,GAAK,QAAUe,GEzFX,IAAAG,GAAA,6BAzBQC,QACVA,EAAA,KAAO,OACPA,EAAA,MAAQ,QACRA,EAAA,OAAS,SACTA,EAAA,MAAQ,QACRA,EAAA,KAAO,OALGA,QAAA,IAgBCC,GAAM,CAAC,CAAE,SAAAC,EAAU,QAAAC,EAAU,SAAmB,SAAAC,EAAW,GAAO,OAAAC,EAAS,GAAO,IAAAC,CAAI,IAAgB,CACjH,IAAMC,EAAYC,EAAc,CAC9B,IAAK,GACL,CAAC,WAAWL,CAAO,EAAE,EAAG,EAAQA,EAChC,cAAeC,EACf,UAAWC,CACb,CAAC,EAED,SACE,QAAC,QAAK,UAAWE,EAAW,IAAKD,EAC9B,SAAAJ,EACH,CAEJ","names":["components_exports","__export","Accordion","AccordionItem","ActionModal","AsideModal","Backdrop","Button","Checkbox","ClickToCopy","ConfirmationModal","Cursor","DatePicker","Field","FieldOrientation","FieldVariant","FlipCard","HoverCard","Image","InfinityScroll","Input","InputColor","InputFile","InputNumber","InputPassword","Line","LineOrientation","LineStyle","Menu","Modal","ModalBackdrop","Portal","Radio","Ripple","Select","SlideCard","Slider","SmartTable","Switch","Tabs","Tag","TagRounded","Textarea","Tooltip","Typography","useAccordionItem","__toCommonJS","import_react","import_react","useClassNames","classes","compiledClassNames","classname","value","import_react","useEventListener","eventName","callback","element","options","callbackRef","targetElement","listener","event","checkIsOutside","ref","target","useClickOutside","callback","useEventListener","e","event","r","import_react","useDebounce","value","delay","debouncedValue","setDebouncedValue","timer","import_react","useResizeObserver","ref","callback","refs","observer","r","import_react","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","import_react","import_react","useIntersectionObserver","ref","callback","initOptions","refs","observer","r","useInView","initOptions","inView","setInView","ref","useIntersectionObserver","entry","import_react","useInputHandlers","onBlur","onFocus","onChange","isFocus","setIsFocus","handleFocus","e","handleBlur","handleChange","import_react","useMediaQuery","query","matches","setMatches","media","listener","import_react","useModal","containerRef","isOpen","setIsOpen","import_react","convertDOMRectToPosition","rect","useModalInContainer","offset","windowOffset","position","modalRef","containerRef","isOpen","containerTemporalRef","getPosition","modal","container","modalStyle","getModalPositionRelativeToContainer","getModalPositionRelativeToScreen","key","callback","useResizeObserver","useEventListener","import_react","useModalTransition","transitionDuration","isOpen","modalState","setModalState","React","isVisible","closeModal","openModal","import_react","getMousePosition","domRect","e","left","top","containerPositionX","containerPositionY","containerX","containerY","useMousePosition","containerRef","ref","position","setPosition","useEventListener","clientX","clientY","prev","newState","import_react","useToggleValues","values","defaultIndex","index","setIndex","toggle","prev","import_jsx_runtime","LineOrientation","LineStyle","Line","orientation","className","style","color","size","lineStyle","dashedSize","spacing","classNames","useClassNames","import_jsx_runtime","AccordionContext","useAccordionItem","id","context","toggleItem","openedItems","toggle","Accordion","children","className","noSeparators","multiple","style","defaultOpened","setOpenedItems","acc","prev","openedItemsIDs","accordionClassName","useClassNames","child","key","Line","import_react","import_fa","import_jsx_runtime","SlideCard","children","isOpen","className","style","import_react","import_jsx_runtime","FlipCard","cardZIndex","flipDirection","flipSpeed","isFlipped","children","getComponent","key","frontRotate","backRotate","className","useClassNames","import_react","import_jsx_runtime","HoverCard","children","threshold","translationZ","width","className","refCard","refLayer","mouseMoveCallback","e","card","layer","clientX","clientY","currentTarget","clientWidth","clientHeight","top","left","horizontal","vertical","relativePercentageX","rotateY","rotateX","mouseLeaveCallback","useEventListener","cardClassName","useClassNames","import_react","TypographyVariantsElements","TypographyVariantsClassNames","Typography","variant","nowrap","customClassname","style","children","as","weight","family","noPadding","align","color","htmlFor","recommendedWidth","props","className","useClassNames","TypographyVariantsClassNames","component","TypographyVariantsElements","import_jsx_runtime","getContent","content","isOpen","AccordionItem","title","subtitle","children","Icon","startContent","endContent","classNames","className","style","id","toggle","useAccordionItem","headerClassName","useClassNames","headerContentClassName","toggleIconClassName","bodyContentClassName","titleContent","subtitleContent","headerStart","headerMiddle","Typography","headerEnd","accordionItemClassName","SlideCard","import_react","import_jsx_runtime","Ripple","color","duration","timingFunction","times","className","style","zIndex","ref","computedPosition","e","pageX","pageY","currentTarget","rect","x","ripple","import_jsx_runtime","Button","children","color","variant","radius","size","noWrap","forIcon","className","props","classNames","useClassNames","Ripple","import_react","import_jsx_runtime","Cursor","x","y","elementX","elementY","ref","useMousePosition","isCursorHover","setIsCursorHover","useEventListener","e","computedCursor","translate3d","import_react","import_io5","import_react_hook_form","import_jsx_runtime","Controller","Component","inputProps","fieldDefaultValue","rules","control","setValue","name","defaultValue","RHFController","onBlur","value","fieldState","import_jsx_runtime","Checkbox","name","value","setValue","onBlur","onFocus","className","style","autoFocus","readOnly","disabled","autoComplete","Icon","label","color","size","id","handlers","useInputHandlers","e","checkboxContainerClassName","useClassNames","checkboxClassName","Typography","CheckboxController","rules","props","Controller","import_react","import_im","FieldVariant","FieldOrientation","import_jsx_runtime","getIcon","Icon","className","onClick","Field","id","label","leftIcon","rightIcon","ErrorIcon","error","onClickLeftIcon","onClickRightIcon","fieldOrientation","children","isFocus","variant","ref","fieldClassName","useClassNames","handleClick","callback","e","input","Typography","import_jsx_runtime","DatePicker","name","value","setValue","onBlur","onFocus","type","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","id","isFocus","handlers","useInputHandlers","e","Field","DatePickerController","rules","props","Controller","import_react","import_jsx_runtime","Input","name","value","setValue","onBlur","onFocus","pattern","type","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","min","max","fieldProps","id","handlers","isFocus","useInputHandlers","e","Field","InputController","rules","props","Controller","import_react","import_fi","import_io","import_jsx_runtime","InputPassword","name","value","setValue","onBlur","onFocus","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","id","type","toggle","useToggleValues","isFocus","handlers","useInputHandlers","e","icon","Field","InputPasswordController","rules","props","Controller","import_color","import_react","import_react_colorful","import_fa6","import_use_eye_dropper","import_react","import_im","import_react","import_react_dom","Portal","children","id","root","useDomContainer","import_react","import_jsx_runtime","ModalBackdrop","Backdrop","opacity","backdrop","zIndex","backdropOnClick","modalState","backdropClassName","useClassNames","backgroundStyles","import_jsx_runtime","Modal","id","children","isOpen","onClose","className","style","rootStyle","animation","closeAnimationClassName","modalRefProp","closeOnClickOutside","transitionDuration","windowOffset","offset","position","containerRef","zIndex","backdropProps","uuid","modalRef","modalState","isVisible","useModalTransition","useModalInContainer","useClickOutside","modalContentClassName","useClassNames","Portal","Backdrop","import_jsx_runtime","ActionModalContext","useActionModalContext","context","ActionModal","children","isOpen","onClose","actionRequired","Icon","noCloseButton","lineOnTop","backCard","noPadding","className","style","modalProps","isActionInProgress","setIsActionInProgress","ref","remainAction","actionModalClassName","useClassNames","Modal","Typography","ActionButton","onClick","manualIsLoading","buttonProps","isLoading","setIsLoading","handleAction","result","Button","import_react","import_im","import_jsx_runtime","AsideModal","children","isOpen","onClose","position","size","className","modalProps","modalRootStyles","Modal","import_jsx_runtime","ConfirmationModal","title","onAccept","onReject","acceptText","rejectText","children","isLoading","actionModalProps","ActionModal","Typography","import_react","import_jsx_runtime","Menu","children","isOpen","onClose","id","menuContentRef","contentClassName","contentStyle","className","modalProps","modalClassName","useClassNames","Modal","MenuOption","label","asCheckbox","Icon","disabled","selected","style","onClick","liProps","menuOptionClassName","handleClick","e","menuOptionContent","Checkbox","n","Typography","Ripple","Divider","Line","Label","props","Group","groupClassName","import_jsx_runtime","InputColor","name","value","setValue","onBlur","onFocus","showValueText","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","open","isSupported","useEyeDropper","inputValue","setInputValue","id","containerRef","isOpen","setIsOpen","handlers","isFocus","useInputHandlers","e","setInputColor","borderColor","color","Color","openEyeDropper","sRGBHex","inputBoxClassName","useClassNames","Field","Modal","InputColorController","rules","props","Controller","import_react","import_fa6","import_io","import_pi","import_react","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","import_jsx_runtime","InputFile","name","value","setValue","onBlur","onFocus","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","accept","multiple","limitSize","errorTimeout","label","error","setError","id","handlers","useInputHandlers","e","files","saveFiles","intervalId","finalFiles","filesToCheck","i","file","formatBytes","handleDrop","getIconType","type","deleteFile","prevValue","deleteAll","totalSize","prev","size","renderFileToCard","key","Icon","Grid","Typography","InputFileController","rules","props","Controller","import_react","import_jsx_runtime","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","formatFunction","locales","formatConfig","formattedValue","setFormattedValue","handlers","isFocus","useInputHandlers","e","formatted","Field","InputController","rules","props","Controller","import_react","import_jsx_runtime","Radio","name","value","setValue","onBlur","onFocus","className","style","autoFocus","readOnly","disabled","autoComplete","radioValue","label","color","size","id","handlers","useInputHandlers","e","radioContainerClassName","useClassNames","radioClassName","Typography","RadioController","rules","props","Controller","import_react","import_im","import_pi","import_react","import_jsx_runtime","InfinityScroll","isLoadingProp","hasNextPage","loadMore","customLoadMoreElement","emptyMessage","children","ref","inView","useInView","isLoading","useDebounce","childrenExists","import_react","import_jsx_runtime","Option","children","value","multiselect","isEqualComparator","maxOptions","selectedValue","setValue","setIsOpen","useSelectContext","compareValuesIsEqual","a","b","toggleOption","isSelected","item","handleKeyDown","e","optionLabel","Typography","Menu","selected","import_react","import_jsx_runtime","useDynamicHeight","height","defaultMinHeight","containerRef","offset","windowOffset","h","setH","getMaxHeight","containerBottom","heightBottom","heightTop","heightCalculated","maxHeight","minHeight","useResizeObserver","useEventListener","Options","children","searchQueryValue","searchQueryPlaceholder","searchQueryClassName","searchQueryStyle","onSearchQuery","optionsGroupContainerRef","optionsGroupRef","internalSearchQuery","setInternalSearchQuery","searchInputRef","isMobile","useMediaQuery","e","focusedItem","handleSearchQuery","value","shouldUseAuto","setShouldUseAuto","calculateHeight","optionsContainerHeight","optionsHeight","selectOptionsHeader","useClassNames","import_jsx_runtime","SelectContext","useSelectContext","context","OptionLabel","children","labelComponent","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","isMobile","useMediaQuery","id","containerRef","isOpen","setIsOpen","openSelect","open","clearOption","e","valueNonEmpty","renderedOptions","key","Field","Options","InfinityScroll","MultiSelectController","rules","props","Controller","SingleSelectController","SelectController","Option","import_react","import_jsx_runtime","Slider","name","value","setValue","onBlur","onFocus","min","max","step","onlySlider","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","id","onBlurInput","e","parsedValue","isFocus","handlers","useInputHandlers","inputSliderClassName","useClassNames","Field","SliderController","rules","props","Controller","import_react","import_jsx_runtime","Textarea","name","value","setValue","onBlur","onFocus","rows","resize","className","style","autoFocus","readOnly","disabled","placeholder","autoComplete","isDirty","isTouched","invalid","error","fieldProps","id","handlers","isFocus","useInputHandlers","e","textareaClassName","useClassNames","Field","TextareaController","rules","props","Controller","import_react","import_react","import_react","import_jsx_runtime","Tooltip","position","children","content","offset","disabled","containerRef","openModal","closeModal","isOpen","useModal","classNames","useClassNames","useEventListener","Modal","import_jsx_runtime","ClickToCopy","children","value","position","offset","tooltipText","tooltipCopiedText","copiedTextTimeout","justCopied","setJustCopied","Tooltip","import_jsx_runtime","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","handlers","useInputHandlers","e","switchContainerClassName","useClassNames","switchClassName","dotSize","_width","_padding","Typography","Tooltip","SwitchController","rules","props","Controller","import_jsx_runtime","Image","alt","loading","props","import_react","import_react","import_md","import_jsx_runtime","SmartTableColumn","header","sortBy","Icon","width","field","toggleSortField","sortField","orderField","hidden","sortByKey","columnClassName","useClassNames","columnOnClick","sortIcon","Grid","Typography","Ripple","import_jsx_runtime","renderRowColumn","data","field","render","Component","rowKey","Typography","renderRow","columns","column","key","sortData","sortBy","order","a","b","fieldA","fieldB","import_react","useSort","sortBy","order","setSortField","toggleSortField","sortByField","import_jsx_runtime","SmartTableRow","data","columns","isSelected","selectable","rowKey","rowClassName","useClassNames","renderRow","import_jsx_runtime","SmartTable","initialColumns","data","width","selectable","rowId","className","_tableClassName","selected","setSelected","tableClassName","useClassNames","tableContainerClassName","sortBy","order","toggleSortField","useSort","columns","finalColumns","rowKey","Checkbox","isSelected","prev","copy","rows","sortData","column","key","SmartTableColumn","row","SmartTableRow","import_react","import_react","import_jsx_runtime","DefaultRect","TabsList","tabs","variant","radius","direction","color","children","openTab","size","className","style","containerRef","selectedTabRef","isSelectorActive","setIsSelectorActive","selector","setSelector","DefaultRect","containerClassNames","useClassNames","selectedRect","containerRect","width","height","left","top","id","label","Tabs","import_jsx_runtime","TabsContext","useTab","id","context","openTab","changeOpenTab","useTabsContext","Tabs","children","defaultOpenTab","onChange","setOpenTab","Tab","className","style","onClick","ref","isOpen","tabClassNames","useClassNames","e","TabPanel","TabList","props","TabsList","import_jsx_runtime","TagRounded","Tag","children","rounded","selected","noWrap","ref","className","useClassNames"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/index.ts","../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":["export * from './accordion';\nexport * from './button';\nexport * from './cards';\nexport * from './cursor';\nexport * from './form';\nexport * from './image';\nexport * from './infinity-scroll';\nexport * from './line';\nexport * from './modals';\nexport * from './ripple';\nexport * from './smart-table';\nexport * from './tabs';\nexport * from './tag';\nexport * from './tooltips';\nexport * from './typography';\n","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":["import_react","import_react","import_react","import_react","import_react","domContainer","import_react","import_react","import_react","import_react","import_react","import_react","modalRef","containerRef","import_react","React","import_react","import_react","index","LineOrientation","LineStyle","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","RHFController","value","import_jsx_runtime","import_react","FieldVariant","FieldOrientation","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_react","import_im","import_react","import_react","import_jsx_runtime","ModalBackdrop","import_jsx_runtime","import_jsx_runtime","import_react","import_im","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","useEyeDropper","Color","import_react","import_fa6","import_io","import_react","import_jsx_runtime","import_react","import_jsx_runtime","InputController","import_react","import_jsx_runtime","import_react","import_im","import_pi","import_react","import_jsx_runtime","import_react","import_jsx_runtime","isSelected","import_react","import_jsx_runtime","import_jsx_runtime","value","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_react","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_react","import_jsx_runtime","import_jsx_runtime","import_react","sortBy","order","import_jsx_runtime","import_jsx_runtime","data","import_react","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","TagRounded"]}
|