@vacano/ui 1.7.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/.pnpm/@babel+runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.js","../src/components/GlobalStyle.tsx","../node_modules/.pnpm/@emotion+is-prop-valid@1.4.0/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/.pnpm/@emotion+styled@11.14.1_@emotion+react@11.14.0_@types+react@19.2.7_react@19.2.3__@types+react@19.2.7_react@19.2.3/node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../node_modules/.pnpm/@emotion+styled@11.14.1_@emotion+react@11.14.0_@types+react@19.2.7_react@19.2.3__@types+react@19.2.7_react@19.2.3/node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../src/components/FieldLabel/styled.ts","../src/components/FieldLabel/FieldLabel.tsx","../src/components/Autocomplete/styled.ts","../src/components/Spinner/constants.ts","../src/components/Spinner/helpers.ts","../src/components/Spinner/styled.ts","../src/components/Spinner/Spinner.tsx","../src/components/Autocomplete/Autocomplete.tsx","../src/components/Button/constants.ts","../src/components/Button/helpers.ts","../src/components/Button/styled.ts","../src/components/KeysBindings/styled.ts","../src/components/KeySymbol/styled.ts","../src/components/KeySymbol/KeySymbol.tsx","../src/components/KeysBindings/KeysBindings.tsx","../src/components/Button/Button.tsx","../src/components/Card/styled.ts","../src/components/Card/Card.tsx","../src/components/Checkbox/constants.ts","../src/components/Checkbox/helpers.ts","../src/components/Checkbox/styled.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/CheckboxCard/constants.ts","../src/components/CheckboxCard/helpers.ts","../src/components/CheckboxCard/styled.ts","../src/components/CheckboxCard/CheckboxCard.tsx","../src/components/CheckboxGroup/constants.ts","../src/components/CheckboxGroup/styled.ts","../src/components/CheckboxGroup/CheckboxGroup.tsx","../src/components/Chip/constants.ts","../src/components/Chip/helpers.ts","../src/components/Chip/styled.ts","../src/components/Chip/Chip.tsx","../src/components/Confirmation/constants.ts","../src/components/Confirmation/styled.ts","../src/components/Confirmation/ConfirmationBar.tsx","../src/components/Confirmation/context.tsx","../src/components/Confirmation/ConfirmationProvider.tsx","../src/components/Confirmation/useConfirmation.ts","../src/components/Container/constants.ts","../src/components/Container/styled.ts","../src/components/Container/Container.tsx","../src/components/DatePicker/constants.ts","../src/components/DatePicker/helpers.ts","../src/components/DatePicker/styled.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/Drawer/styled.ts","../src/components/Drawer/Drawer.tsx","../src/components/Dropdown/styled.ts","../src/components/Dropdown/Dropdown.tsx","../src/components/EditableText/styled.ts","../src/components/EditableText/EditableText.tsx","../src/components/FieldMessage/styled.ts","../src/components/FieldMessage/FieldMessage.tsx","../src/components/ImageCropper/styled.ts","../node_modules/.pnpm/hq-cropper@4.0.0/node_modules/hq-cropper/dist/index.js","../src/hooks/useImageCropper/constants.ts","../src/hooks/useImageCropper/useImageCropper.ts","../src/components/ImageCropper/ImageCropper.tsx","../src/components/Input/constants.ts","../src/components/Input/helpers.ts","../src/components/Input/styled.ts","../src/components/Input/Input.tsx","../src/components/Modal/styled.ts","../src/components/Modal/Modal.tsx","../src/components/MultiSelect/constants.ts","../src/components/MultiSelect/styled.ts","../src/components/MultiSelect/MultiSelect.tsx","../src/components/Notification/constants.ts","../src/components/Notification/context.tsx","../src/components/Notification/helpers.ts","../src/components/Notification/styled.ts","../src/components/Notification/NotificationBar.tsx","../src/components/Notification/reducer.ts","../src/components/Notification/NotificationProvider.tsx","../src/components/Notification/useNotification.ts","../src/components/OtpCode/constants.ts","../src/components/OtpCode/helpers.ts","../src/components/OtpCode/styled.ts","../src/components/OtpCode/OtpCode.tsx","../src/components/Panel/constants.ts","../src/components/Panel/helpers.ts","../src/components/Panel/styled.ts","../src/components/Panel/Panel.tsx","../src/components/Progress/constants.ts","../src/components/Progress/styled.ts","../src/components/Progress/Progress.tsx","../src/components/Radio/constants.ts","../src/components/Radio/helpers.ts","../src/components/Radio/styled.ts","../src/components/Radio/Radio.tsx","../src/components/RadioCard/constants.ts","../src/components/RadioCard/helpers.ts","../src/components/RadioCard/styled.ts","../src/components/RadioCard/RadioCard.tsx","../src/components/RadioGroup/constants.ts","../src/components/RadioGroup/styled.ts","../src/components/RadioGroup/RadioGroup.tsx","../src/components/SaveProgress/context.tsx","../src/components/SaveProgress/styled.ts","../src/components/SaveProgress/SaveProgressProvider.tsx","../src/components/SaveProgress/useSaveProgress.ts","../src/components/Select/constants.ts","../src/components/Select/helpers.ts","../src/components/Select/styled.ts","../src/components/Select/Select.tsx","../src/components/StatusCard/constants.ts","../src/components/StatusCard/helpers.ts","../src/components/StatusCard/styled.ts","../src/components/StatusCard/StatusCard.tsx","../src/components/Stepper/styled.ts","../src/components/Stepper/Stepper.tsx","../src/components/Tags/constants.ts","../src/components/Tags/styled.ts","../src/components/Tags/Tags.tsx","../src/components/Tabs/styled.ts","../src/components/Tabs/Tabs.tsx","../src/components/Textarea/constants.ts","../src/components/Textarea/helpers.ts","../src/components/Textarea/styled.ts","../src/components/Textarea/Textarea.tsx","../src/components/Toastr/context.tsx","../src/components/Toastr/constants.ts","../src/components/Toastr/reducer.ts","../src/components/Toastr/helpers.ts","../src/components/Toastr/styled.ts","../src/components/Toastr/ToastItem.tsx","../src/components/Toastr/ToastContainer.tsx","../src/components/Toastr/ToastProvider.tsx","../src/components/Toastr/useToast.ts","../src/components/Tooltip/constants.ts","../src/components/Tooltip/helpers.ts","../src/components/Tooltip/styled.ts","../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import { css, Global } from '@emotion/react'\n\nconst globalStyles = css`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n * {\n margin: 0;\n padding: 0;\n }\n\n html {\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n tab-size: 4;\n }\n\n body {\n min-height: 100vh;\n font-size: 14px;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n }\n\n img,\n picture,\n video,\n canvas,\n svg {\n display: block;\n max-width: 100%;\n }\n\n input,\n button,\n textarea,\n select {\n font: inherit;\n color: inherit;\n }\n\n p,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n overflow-wrap: break-word;\n }\n\n a {\n color: inherit;\n text-decoration: inherit;\n }\n\n button {\n background: none;\n border: none;\n cursor: pointer;\n }\n\n ul,\n ol {\n list-style: none;\n }\n\n table {\n border-collapse: collapse;\n border-spacing: 0;\n }\n\n /*\n * Inter Font Configuration\n * Optimized for UI with modern CSS features\n */\n\n html {\n font-family:\n 'Inter',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n 'Helvetica Neue',\n Arial,\n sans-serif;\n\n /* Variable font optical sizing */\n font-optical-sizing: auto;\n\n /*\n * OpenType features for Inter:\n * - cv01: alternate 1 (distinguishable from l/I)\n * - cv02: alternate 4 (open top)\n * - cv03: alternate 6 (straight tail)\n * - cv04: alternate 9 (straight tail)\n * - ss01: open digits\n * - ss02: disambiguation (alt a, g)\n * - tnum: tabular numbers (monospaced digits for alignment)\n * - zero: slashed zero\n */\n font-feature-settings:\n 'cv01' 1,\n 'cv02' 1,\n 'ss01' 1,\n 'tnum' 1,\n 'zero' 1;\n\n /* Improved kerning */\n font-kerning: normal;\n\n /* Slight negative tracking for Inter at UI sizes */\n letter-spacing: -0.011em;\n }\n\n /* Tabular figures for numbers in data contexts */\n .tabular-nums {\n font-variant-numeric: tabular-nums;\n }\n\n /* Proportional figures for running text */\n .proportional-nums {\n font-variant-numeric: proportional-nums;\n }\n\n /* Selection styling */\n ::selection {\n background-color: rgba(0, 122, 255, 0.25);\n }\n\n /* Focus visible for accessibility */\n :focus-visible {\n outline: 2px solid rgba(0, 122, 255, 0.5);\n outline-offset: 2px;\n }\n\n :focus:not(:focus-visible) {\n outline: none;\n }\n`\n\nexport const GlobalStyle = () => {\n return <Global styles={globalStyles} />\n}\n","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\n\nvar isDevelopment = false;\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n return function () {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n // eslint-disable-next-line prefer-spread\n styles.push.apply(styles, args);\n } else {\n var templateStringsArr = args[0];\n\n styles.push(templateStringsArr[0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n\n styles.push(args[i], templateStringsArr[i]);\n }\n }\n\n var Styled = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = React.useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if (finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && isDevelopment) {\n return 'NO_COMPONENT_SELECTOR';\n }\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\n var newStyled = createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n }));\n return newStyled.apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/react';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\nimport '@emotion/utils';\nimport 'react';\nimport '@emotion/is-prop-valid';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// bind it to avoid mutating the original function\nvar styled = createStyled.bind(null);\ntags.forEach(function (tagName) {\n styled[tagName] = styled(tagName);\n});\n\nexport { styled as default };\n","import styled from '@emotion/styled'\n\nimport { FieldLabelVariant } from './types'\nimport { COLORS } from '../../lib'\n\nexport const StyledFieldLabel = styled.span<{ $variant: FieldLabelVariant }>`\n font-size: 12px;\n font-weight: 500;\n color: ${(props) => (props.$variant === 'normal' ? COLORS['black'] : COLORS['red'])};\n`\n","import { StyledFieldLabel } from './styled'\nimport { FieldLabelProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('field-label')\nexport const FieldLabel = ({\n children,\n className,\n ref,\n required,\n variant = 'normal',\n ...rest\n}: FieldLabelProps) => {\n if (!children) {\n return null\n }\n\n return (\n <StyledFieldLabel\n {...rest}\n ref={ref}\n className={css('container', className)}\n $variant={variant}\n >\n {children} {required && '*'}\n </StyledFieldLabel>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { AutocompleteVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { alpha, COLORS, VacanoComponentSize } from '../../lib'\n\nconst SIZE_PROPS: Record<VacanoComponentSize, { height: string; padding: string; radius: string }> =\n {\n compact: {\n height: '32px',\n padding: '0 10px',\n radius: '14px',\n },\n default: {\n height: '40px',\n padding: '0 14px',\n radius: '16px',\n },\n }\n\nconst VARIANT_PROPS: Record<\n AutocompleteVariant,\n {\n border: { static: string; disabled: string }\n background: { static: string; disabled: string }\n color: { static: string; disabled: string }\n placeholder: { static: string; disabled: string }\n focus: string\n }\n> = {\n normal: {\n background: {\n static: alpha(COLORS['black'], 2),\n disabled: alpha(COLORS['black'], 10),\n },\n border: {\n static: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 10),\n },\n color: {\n static: COLORS['black'],\n disabled: alpha(COLORS['black'], 65),\n },\n placeholder: {\n static: alpha(COLORS['black'], 40),\n disabled: alpha(COLORS['black'], 65),\n },\n focus: alpha(COLORS['iron-grey'], 30),\n },\n error: {\n background: {\n static: alpha(COLORS['red'], 2),\n disabled: alpha(COLORS['red'], 10),\n },\n border: {\n static: alpha(COLORS['red'], 60),\n disabled: alpha(COLORS['red'], 10),\n },\n color: {\n static: COLORS['red'],\n disabled: alpha(COLORS['red'], 65),\n },\n placeholder: {\n static: alpha(COLORS['red'], 40),\n disabled: alpha(COLORS['red'], 65),\n },\n focus: alpha(COLORS['red'], 30),\n },\n}\n\nexport const StyledContainer = styled.div<{ $fullWidth: boolean }>`\n position: relative;\n display: grid;\n gap: 2px;\n width: ${(props) => (props.$fullWidth ? '100%' : 'fit-content')};\n`\n\nexport const StyledLabel = styled(FieldLabel)`\n margin-left: 6px;\n`\n\nexport const StyledInputWrapper = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n`\n\ntype StyledInputProps = {\n $size: VacanoComponentSize\n $variant: AutocompleteVariant\n}\n\nexport const StyledInput = styled.input<StyledInputProps>`\n flex: 1;\n min-width: 0;\n width: 100%;\n outline: none;\n font-size: 14px;\n font-weight: 500;\n height: ${(props) => SIZE_PROPS[props.$size].height};\n padding: ${(props) => SIZE_PROPS[props.$size].padding};\n padding-right: 40px;\n border-radius: ${(props) => SIZE_PROPS[props.$size].radius};\n\n color: ${(props) => VARIANT_PROPS[props.$variant].color.static};\n border: 1px solid ${(props) => VARIANT_PROPS[props.$variant].border.static};\n background-color: ${(props) => VARIANT_PROPS[props.$variant].background.static};\n\n &::placeholder {\n color: ${(props) => VARIANT_PROPS[props.$variant].placeholder.static};\n }\n\n &:disabled {\n cursor: not-allowed;\n color: ${(props) => VARIANT_PROPS[props.$variant].color.disabled};\n background-color: ${(props) => VARIANT_PROPS[props.$variant].background.disabled};\n border-color: ${(props) => VARIANT_PROPS[props.$variant].border.disabled};\n\n &::placeholder {\n color: ${(props) => VARIANT_PROPS[props.$variant].placeholder.disabled};\n }\n }\n`\n\nexport const StyledSpinnerWrapper = styled.div`\n position: absolute;\n right: 12px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\nexport const StyledDropdown = styled.div<{ $open: boolean }>`\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: 100;\n margin-top: 4px;\n max-height: 240px;\n overflow-y: auto;\n background-color: ${COLORS.white};\n border: 1px solid ${COLORS.gray};\n border-radius: 12px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open }) => ($open ? 'translateY(0)' : 'translateY(-8px)')};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n\nexport const StyledItem = styled.div`\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: ${COLORS.black};\n transition: background-color 0.1s ease;\n\n &:first-of-type {\n border-radius: 12px 12px 0 0;\n }\n\n &:last-of-type {\n border-radius: 0 0 12px 12px;\n }\n\n &:only-child {\n border-radius: 12px;\n }\n\n &:hover {\n background-color: ${alpha(COLORS.black, 5)};\n }\n`\n\nexport const StyledItemImage = styled.img`\n width: 24px;\n height: 24px;\n border-radius: 6px;\n object-fit: cover;\n`\n\nexport const StyledItemText = styled.span`\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`\n\nexport const StyledEmpty = styled.div`\n padding: 12px 14px;\n font-size: 14px;\n color: ${alpha(COLORS.black, 50)};\n text-align: center;\n`\n","import { SpinnerSize } from './types'\nimport { alpha, COLORS } from '../../lib'\n\ntype SpinnerSizeProps = {\n size: string\n borderWidth: string\n}\n\nexport const SPINNER_SIZE_PROPS: Record<SpinnerSize, SpinnerSizeProps> = {\n xs: { size: '16px', borderWidth: '2px' },\n sm: { size: '20px', borderWidth: '2px' },\n md: { size: '32px', borderWidth: '3px' },\n lg: { size: '48px', borderWidth: '4px' },\n}\n\nexport const SPINNER_COLORS = {\n track: alpha(COLORS['black'], 15),\n indicator: COLORS['black'],\n}\n","import { SPINNER_SIZE_PROPS } from './constants'\nimport { SpinnerSize } from './types'\n\nexport const getSpinnerSizeProps = (size: SpinnerSize) => {\n return SPINNER_SIZE_PROPS[size] ?? SPINNER_SIZE_PROPS['md']\n}\n","import { keyframes } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport { SPINNER_COLORS } from './constants'\nimport { getSpinnerSizeProps } from './helpers'\nimport { SpinnerSize } from './types'\n\nconst spin = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n`\n\ntype StyledSpinnerProps = {\n $size: SpinnerSize\n}\n\nexport const StyledSpinner = styled.div<StyledSpinnerProps>`\n display: inline-block;\n width: ${(props) => getSpinnerSizeProps(props.$size).size};\n height: ${(props) => getSpinnerSizeProps(props.$size).size};\n border: ${(props) => getSpinnerSizeProps(props.$size).borderWidth} solid ${SPINNER_COLORS.track};\n border-top-color: ${SPINNER_COLORS.indicator};\n border-radius: 50%;\n animation: ${spin} 0.8s linear infinite;\n`\n","import { StyledSpinner } from './styled'\nimport { SpinnerProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('spinner')\n\nexport const Spinner = ({\n 'aria-label': ariaLabel = 'Loading',\n className,\n ref,\n size = 'md',\n ...rest\n}: SpinnerProps) => {\n return (\n <StyledSpinner\n {...rest}\n ref={ref}\n className={css('container', className)}\n role=\"status\"\n aria-label={ariaLabel}\n $size={size}\n />\n )\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport {\n StyledContainer,\n StyledDropdown,\n StyledEmpty,\n StyledInput,\n StyledInputWrapper,\n StyledItem,\n StyledItemImage,\n StyledItemText,\n StyledLabel,\n StyledSpinnerWrapper,\n} from './styled'\nimport type { AutocompleteProps, AutocompleteSuggestion } from './types'\nimport { Spinner } from '../Spinner'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('autocomplete')\n\nexport const Autocomplete = ({\n className,\n classnames,\n disabled,\n fullWidth,\n label,\n ref,\n size = 'default',\n variant = 'normal',\n value,\n onChange,\n onSearch,\n debounceMs = 300,\n minChars = 1,\n noResultsMessage = 'No results found',\n ...rest\n}: AutocompleteProps) => {\n const [inputValue, setInputValue] = useState(value?.value ?? '')\n const [suggestions, setSuggestions] = useState<AutocompleteSuggestion[]>([])\n const [isLoading, setIsLoading] = useState(false)\n const [isOpen, setIsOpen] = useState(false)\n const [hasSearched, setHasSearched] = useState(false)\n\n const containerRef = useRef<HTMLDivElement>(null)\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n useEffect(() => {\n if (value?.value !== undefined) {\n setInputValue(value.value)\n }\n }, [value?.value])\n\n const handleSearch = useCallback(\n async (query: string) => {\n if (query.length < minChars) {\n setSuggestions([])\n setHasSearched(false)\n return\n }\n\n setIsLoading(true)\n setHasSearched(true)\n\n try {\n const results = await onSearch(query)\n setSuggestions(results)\n setIsOpen(true)\n } catch {\n setSuggestions([])\n } finally {\n setIsLoading(false)\n }\n },\n [onSearch, minChars],\n )\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value\n setInputValue(newValue)\n\n onChange?.({ value: newValue, image_url: null })\n\n if (debounceRef.current) {\n clearTimeout(debounceRef.current)\n }\n\n debounceRef.current = setTimeout(() => {\n handleSearch(newValue)\n }, debounceMs)\n },\n [onChange, handleSearch, debounceMs],\n )\n\n const handleSelect = useCallback(\n (suggestion: AutocompleteSuggestion) => {\n setInputValue(suggestion.value)\n setSuggestions([])\n setIsOpen(false)\n setHasSearched(false)\n\n onChange?.({ value: suggestion.value, image_url: suggestion.image_url })\n },\n [onChange],\n )\n\n const handleBlur = useCallback(() => {\n setTimeout(() => {\n setIsOpen(false)\n }, 150)\n }, [])\n\n const handleFocus = useCallback(() => {\n if (suggestions.length > 0) {\n setIsOpen(true)\n }\n }, [suggestions.length])\n\n useEffect(() => {\n return () => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current)\n }\n }\n }, [])\n\n return (\n <StyledContainer\n ref={containerRef}\n className={css('container', className)}\n $fullWidth={Boolean(fullWidth)}\n >\n {label && (\n <StyledLabel variant={variant} className={css('label', classnames?.label)}>\n {label}\n </StyledLabel>\n )}\n <StyledInputWrapper>\n <StyledInput\n {...rest}\n ref={ref}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n disabled={disabled}\n $size={size}\n $variant={variant}\n className={css('input', classnames?.input)}\n />\n {isLoading && (\n <StyledSpinnerWrapper>\n <Spinner size=\"xs\" />\n </StyledSpinnerWrapper>\n )}\n </StyledInputWrapper>\n <StyledDropdown\n $open={isOpen && hasSearched}\n className={css('dropdown', classnames?.dropdown)}\n >\n {suggestions.length > 0\n ? suggestions.map((suggestion) => (\n <StyledItem\n key={suggestion.id}\n onClick={() => handleSelect(suggestion)}\n className={css('item', classnames?.item)}\n >\n {suggestion.image_url && (\n <StyledItemImage src={suggestion.image_url} alt={suggestion.value} />\n )}\n <StyledItemText>{suggestion.value}</StyledItemText>\n </StyledItem>\n ))\n : !isLoading && <StyledEmpty>{noResultsMessage}</StyledEmpty>}\n </StyledDropdown>\n </StyledContainer>\n )\n}\n","import { ButtonVariant } from './types'\nimport { alpha, COLORS, VacanoComponentSize, VacanoInteractiveElementState } from '../../lib'\n\nexport const BUTTON_SIZE_PROPS: Record<\n VacanoComponentSize,\n {\n height: string\n padding: string\n radius: string\n iconSize: string\n }\n> = {\n compact: {\n height: '32px',\n padding: '0 8px',\n radius: '12px',\n iconSize: '16px',\n },\n default: {\n height: '40px',\n padding: '0 12px',\n radius: '16px',\n iconSize: '20px',\n },\n}\n\nexport const BUTTON_VARIANT_PROPS: Record<\n ButtonVariant,\n {\n color: VacanoInteractiveElementState\n background: VacanoInteractiveElementState\n borderColor: VacanoInteractiveElementState\n }\n> = {\n normal: {\n background: {\n static: COLORS['steel-blue'],\n hover: alpha(COLORS['steel-blue'], 90),\n active: alpha(COLORS['steel-blue'], 80),\n disabled: alpha(COLORS['steel-blue'], 50),\n },\n color: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: COLORS['white'],\n },\n borderColor: {\n static: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n disabled: 'transparent',\n },\n },\n system: {\n background: {\n static: COLORS['black'],\n hover: alpha(COLORS['black'], 90),\n active: alpha(COLORS['black'], 80),\n disabled: alpha(COLORS['black'], 50),\n },\n color: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: COLORS['white'],\n },\n borderColor: {\n static: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n disabled: 'transparent',\n },\n },\n success: {\n background: {\n static: COLORS['green'],\n hover: alpha(COLORS['green'], 90),\n active: alpha(COLORS['green'], 80),\n disabled: alpha(COLORS['green'], 50),\n },\n color: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: COLORS['white'],\n },\n borderColor: {\n static: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n disabled: 'transparent',\n },\n },\n warning: {\n background: {\n static: COLORS['yellow'],\n hover: alpha(COLORS['yellow'], 90),\n active: alpha(COLORS['yellow'], 80),\n disabled: alpha(COLORS['yellow'], 50),\n },\n color: {\n static: COLORS['black'],\n hover: COLORS['black'],\n active: COLORS['black'],\n disabled: COLORS['black'],\n },\n borderColor: {\n static: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n disabled: 'transparent',\n },\n },\n danger: {\n background: {\n static: COLORS['red'],\n hover: alpha(COLORS['red'], 90),\n active: alpha(COLORS['red'], 80),\n disabled: alpha(COLORS['red'], 50),\n },\n color: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: COLORS['white'],\n },\n borderColor: {\n static: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n disabled: 'transparent',\n },\n },\n transparent: {\n background: {\n static: alpha(COLORS['iron-grey'], 1),\n hover: alpha(COLORS['iron-grey'], 5),\n active: alpha(COLORS['iron-grey'], 10),\n disabled: alpha(COLORS['iron-grey'], 5),\n },\n color: {\n static: COLORS['black'],\n hover: COLORS['black'],\n active: COLORS['black'],\n disabled: alpha(COLORS['black'], 30),\n },\n borderColor: {\n static: alpha(COLORS['iron-grey'], 20),\n hover: alpha(COLORS['iron-grey'], 20),\n active: alpha(COLORS['iron-grey'], 20),\n disabled: alpha(COLORS['iron-grey'], 10),\n },\n },\n}\n","import { BUTTON_SIZE_PROPS, BUTTON_VARIANT_PROPS } from './constants'\nimport { ButtonVariant } from './types'\nimport { VacanoComponentSize } from '../../lib'\n\nexport const getButtonVariantProps = (variant: ButtonVariant) => {\n const result = BUTTON_VARIANT_PROPS[variant]\n if (!result) {\n return BUTTON_VARIANT_PROPS['normal']\n }\n\n return result\n}\n\nexport const getButtonSizeProps = (size: VacanoComponentSize) => {\n const result = BUTTON_SIZE_PROPS[size]\n if (!result) {\n return BUTTON_SIZE_PROPS['default']\n }\n\n return result\n}\n\nexport const getButtonWidthProps = (fullWidth: boolean) => {\n if (fullWidth) {\n return 'auto'\n }\n\n return 'fit-content'\n}\n","import styled from '@emotion/styled'\n\nimport { getButtonSizeProps, getButtonVariantProps, getButtonWidthProps } from './helpers'\nimport { ButtonVariant } from './types'\nimport { LoaderCircle } from '../../icons/Lucide'\nimport { KEYFRAMES, VacanoComponentSize } from '../../lib'\n\ntype StyledButtonProps = {\n $variant: ButtonVariant\n $size: VacanoComponentSize\n $fullWidth: boolean\n $iconOnly: boolean\n}\n\nexport const StyledButton = styled.button<StyledButtonProps>`\n display: flex;\n gap: 6px;\n text-decoration: none;\n align-items: center;\n justify-content: center;\n width: ${(props) =>\n !props.$iconOnly\n ? getButtonWidthProps(Boolean(props.$fullWidth))\n : getButtonSizeProps(props.$size).height};\n color: ${(props) => getButtonVariantProps(props.$variant).color.static};\n background-color: ${(props) => getButtonVariantProps(props.$variant).background.static};\n height: ${(props) => getButtonSizeProps(props.$size).height};\n padding: ${(props) => (!props.$iconOnly ? getButtonSizeProps(props.$size).padding : '0')};\n border-radius: ${(props) => getButtonSizeProps(props.$size).radius};\n border: 1px solid ${(props) => getButtonVariantProps(props.$variant).borderColor.static};\n\n &:hover:not(:disabled) {\n color: ${(props) => getButtonVariantProps(props.$variant).color.hover};\n background-color: ${(props) => getButtonVariantProps(props.$variant).background.hover};\n border-color: ${(props) => getButtonVariantProps(props.$variant).borderColor.hover};\n }\n\n &:active:not(:disabled) {\n color: ${(props) => getButtonVariantProps(props.$variant).color.active};\n background-color: ${(props) => getButtonVariantProps(props.$variant).background.active};\n border-color: ${(props) => getButtonVariantProps(props.$variant).borderColor.active};\n }\n\n &:disabled {\n cursor: not-allowed;\n color: ${(props) => getButtonVariantProps(props.$variant).color.disabled};\n background-color: ${(props) => getButtonVariantProps(props.$variant).background.disabled};\n border-color: ${(props) => getButtonVariantProps(props.$variant).borderColor.disabled};\n }\n`\n\nexport const StyledIcon = styled.div<{ $size: VacanoComponentSize }>`\n display: grid;\n place-items: center;\n width: ${(props) => getButtonSizeProps(props.$size).iconSize};\n height: ${(props) => getButtonSizeProps(props.$size).iconSize};\n\n & svg {\n width: ${(props) => getButtonSizeProps(props.$size).iconSize};\n height: ${(props) => getButtonSizeProps(props.$size).iconSize};\n }\n`\n\nexport const StyledLabel = styled.span`\n font-weight: 600;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n`\n\nexport const StyledLoading = styled(LoaderCircle)<{ $size: VacanoComponentSize }>`\n width: ${(props) => getButtonSizeProps(props.$size).iconSize};\n height: ${(props) => getButtonSizeProps(props.$size).iconSize};\n animation: ${KEYFRAMES.rotate} 0.8s linear infinite;\n`\n","import styled from '@emotion/styled'\n\nexport const StyledKeyBindings = styled.div`\n display: flex;\n gap: 3px;\n`\n","import styled from '@emotion/styled'\n\nimport { KeySymbolVariant } from './types'\nimport { alpha, COLORS } from '../../lib'\n\nexport const StyledKeySymbol = styled.span<{ $variant: KeySymbolVariant }>`\n text-align: center;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 12px;\n height: 18px;\n min-width: 18px;\n line-height: 1.6;\n padding: 2px 4px;\n border-radius: 4px;\n width: fit-content;\n background-color: ${(props) =>\n props.$variant === 'light' ? alpha(COLORS['white'], 25) : alpha(COLORS['black'], 25)};\n`\n","import { StyledKeySymbol } from './styled'\nimport { KeySymbolProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('key-symbol')\nexport const KeySymbol = ({\n className,\n ref,\n symbol,\n variant = 'light',\n ...rest\n}: KeySymbolProps) => {\n if (!symbol) {\n return null\n }\n\n return (\n <StyledKeySymbol {...rest} ref={ref} className={css('container', className)} $variant={variant}>\n {symbol}\n </StyledKeySymbol>\n )\n}\n","import { useMemo } from 'react'\n\nimport { StyledKeyBindings } from './styled'\nimport { KeysBindingsProps } from './types'\nimport { KeySymbol } from '../KeySymbol'\nimport { getKeySymbols, newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('key-bindings')\nexport const KeysBindings = ({\n className,\n classnames,\n keys,\n ref,\n variant,\n ...rest\n}: KeysBindingsProps) => {\n const symbols = useMemo(() => getKeySymbols(keys), [keys])\n if (symbols.length === 0) {\n return null\n }\n\n return (\n <StyledKeyBindings {...rest} ref={ref} className={css('container', className)}>\n {symbols.map((item) => (\n <KeySymbol\n key={item}\n symbol={item}\n className={css('item', classnames?.item)}\n variant={variant}\n />\n ))}\n </StyledKeyBindings>\n )\n}\n","import { useImperativeHandle, useMemo, useRef } from 'react'\n\nimport { StyledButton, StyledIcon, StyledLabel, StyledLoading } from './styled'\nimport { ButtonProps } from './types'\nimport { KeysBindings } from '../KeysBindings'\nimport { newClassNameGetter, useKeyBinding } from '../../lib'\n\nconst css = newClassNameGetter('button')\nexport const Button = ({\n children,\n className,\n classnames,\n disabled,\n fullWidth,\n icon,\n loading,\n onClick,\n ref = null,\n keyBindings = [],\n size = 'default',\n type = 'button',\n variant = 'normal',\n ...rest\n}: ButtonProps) => {\n const buttonRef = useRef<HTMLButtonElement>(null)\n\n useImperativeHandle(ref, () => buttonRef.current!, [])\n useKeyBinding(keyBindings, () => {\n buttonRef.current?.click()\n })\n\n const computedType = useMemo(() => {\n switch (type) {\n case 'link':\n return 'button'\n\n default:\n return type\n }\n }, [type])\n\n return (\n <StyledButton\n {...rest}\n onClick={onClick}\n ref={buttonRef}\n type={computedType}\n disabled={disabled}\n className={css('container', className)}\n $variant={variant}\n $size={size}\n $fullWidth={Boolean(fullWidth)}\n $iconOnly={Boolean(icon) && !(children || keyBindings?.length > 0)}\n >\n {loading && <StyledLoading $size={size} />}\n {icon && !loading && <StyledIcon $size={size}>{icon}</StyledIcon>}\n {children && (\n <StyledLabel className={css('label', classnames?.label)}>{children}</StyledLabel>\n )}\n <KeysBindings keys={keyBindings} variant={variant === 'system' ? 'light' : 'dark'} />\n </StyledButton>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { alpha, COLORS } from '../../lib'\n\ntype StyledCardProps = {\n $border: boolean\n $shadow: boolean\n}\n\nexport const StyledCard = styled.div<StyledCardProps>`\n background-color: ${COLORS['white']};\n border-radius: 16px;\n border: ${(props) => (props.$border ? `1px solid ${alpha(COLORS['iron-grey'], 15)}` : 'none')};\n box-shadow: ${(props) => (props.$shadow ? `0 2px 8px ${alpha(COLORS['black'], 10)}` : 'none')};\n`\n","import { PropsWithChildren } from 'react'\n\nimport { StyledCard } from './styled'\nimport { CardProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('card')\nexport const Card = ({\n children,\n className,\n ref,\n border = false,\n shadow = false,\n ...rest\n}: PropsWithChildren<CardProps>) => (\n <StyledCard\n {...rest}\n ref={ref}\n className={css('container', className)}\n $border={border}\n $shadow={shadow}\n >\n {children}\n </StyledCard>\n)\n","import { CheckboxVariant } from './types'\nimport { alpha, COLORS } from '../../lib'\n\nexport const CHECKBOX_VARIANT_PROPS: Record<\n CheckboxVariant,\n {\n box: {\n border: string\n borderChecked: string\n background: string\n backgroundChecked: string\n focusShadow: string\n }\n label: string\n icon: string\n }\n> = {\n normal: {\n box: {\n border: alpha(COLORS['iron-grey'], 30),\n borderChecked: COLORS['iron-grey'],\n background: COLORS['white'],\n backgroundChecked: COLORS['black'],\n focusShadow: alpha(COLORS['iron-grey'], 30),\n },\n label: COLORS['black'],\n icon: COLORS['white'],\n },\n error: {\n box: {\n border: COLORS['red'],\n borderChecked: COLORS['red'],\n background: COLORS['white'],\n backgroundChecked: COLORS['red'],\n focusShadow: alpha(COLORS['red'], 30),\n },\n label: COLORS['red'],\n icon: COLORS['white'],\n },\n}\n","import { CHECKBOX_VARIANT_PROPS } from './constants'\nimport { CheckboxVariant } from './types'\n\nexport const getCheckboxVariantProps = (variant: CheckboxVariant) => {\n return CHECKBOX_VARIANT_PROPS[variant] ?? CHECKBOX_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getCheckboxVariantProps } from './helpers'\nimport { CheckboxVariant } from './types'\n\ntype StyledContainerProps = {\n $disabled: boolean\n $variant: CheckboxVariant\n}\n\ntype StyledBoxProps = {\n $checked: boolean\n $indeterminate: boolean\n $variant: CheckboxVariant\n}\n\ntype StyledIconProps = {\n $visible: boolean\n $variant: CheckboxVariant\n}\n\ntype StyledLabelProps = {\n $variant: CheckboxVariant\n}\n\nexport const StyledContainer = styled.label<StyledContainerProps>`\n display: inline-flex;\n align-items: flex-start;\n gap: 8px;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.$disabled ? 0.5 : 1)};\n`\n\nexport const StyledInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`\n\nexport const StyledBox = styled.span<StyledBoxProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n border-radius: 6px;\n border: 1.5px solid\n ${(props) =>\n props.$checked || props.$indeterminate\n ? getCheckboxVariantProps(props.$variant).box.borderChecked\n : getCheckboxVariantProps(props.$variant).box.border};\n background-color: ${(props) =>\n props.$checked || props.$indeterminate\n ? getCheckboxVariantProps(props.$variant).box.backgroundChecked\n : getCheckboxVariantProps(props.$variant).box.background};\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease,\n box-shadow 0.15s ease;\n`\n\nexport const StyledIcon = styled.span<StyledIconProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: ${(props) => getCheckboxVariantProps(props.$variant).icon};\n opacity: ${(props) => (props.$visible ? 1 : 0)};\n transform: ${(props) => (props.$visible ? 'scale(1)' : 'scale(0.5)')};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease;\n\n & svg {\n width: 12px;\n height: 12px;\n }\n`\n\nexport const StyledLabel = styled.span<StyledLabelProps>`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n color: ${(props) => getCheckboxVariantProps(props.$variant).label};\n user-select: none;\n\n a {\n color: inherit;\n text-decoration: underline;\n cursor: pointer;\n\n &:hover {\n text-decoration: none;\n }\n }\n`\n","import { StyledBox, StyledContainer, StyledIcon, StyledInput, StyledLabel } from './styled'\nimport { CheckboxProps } from './types'\nimport { Check, Minus } from '../../icons/Lucide'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('checkbox')\n\nexport const Checkbox = ({\n checked,\n className,\n classnames,\n disabled,\n indeterminate = false,\n label,\n onChange,\n ref,\n variant = 'normal',\n ...rest\n}: CheckboxProps) => {\n return (\n <StyledContainer\n className={css('container', className)}\n $disabled={Boolean(disabled)}\n $variant={variant}\n >\n <StyledInput\n {...rest}\n ref={ref}\n type=\"checkbox\"\n className={css('input', classnames?.input)}\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n />\n <StyledBox\n className={css('box', classnames?.box)}\n $checked={checked}\n $indeterminate={indeterminate}\n $variant={variant}\n >\n <StyledIcon\n className={css('icon', classnames?.icon)}\n $visible={indeterminate || checked}\n $variant={variant}\n >\n {indeterminate ? <Minus /> : <Check />}\n </StyledIcon>\n </StyledBox>\n {label && (\n <StyledLabel className={css('label', classnames?.label)} $variant={variant}>\n {label}\n </StyledLabel>\n )}\n </StyledContainer>\n )\n}\n","import { CheckboxCardVariant } from './types'\nimport { alpha, COLORS, VacanoInteractiveElementState } from '../../lib'\n\ntype CheckboxCardVariantProps = {\n border: VacanoInteractiveElementState\n borderChecked: string\n background: VacanoInteractiveElementState\n backgroundChecked: string\n focusRing: string\n label: VacanoInteractiveElementState\n description: VacanoInteractiveElementState\n}\n\nexport const CHECKBOX_CARD_VARIANT_PROPS: Record<CheckboxCardVariant, CheckboxCardVariantProps> = {\n normal: {\n border: {\n static: alpha(COLORS['black'], 20),\n hover: alpha(COLORS['black'], 40),\n active: alpha(COLORS['black'], 40),\n disabled: alpha(COLORS['black'], 10),\n },\n borderChecked: COLORS['black'],\n background: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: alpha(COLORS['black'], 5),\n },\n backgroundChecked: alpha(COLORS['black'], 5),\n focusRing: alpha(COLORS['black'], 20),\n label: {\n static: COLORS['black'],\n hover: COLORS['black'],\n active: COLORS['black'],\n disabled: alpha(COLORS['black'], 40),\n },\n description: {\n static: alpha(COLORS['black'], 60),\n hover: alpha(COLORS['black'], 60),\n active: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 30),\n },\n },\n error: {\n border: {\n static: COLORS['red'],\n hover: COLORS['red'],\n active: COLORS['red'],\n disabled: alpha(COLORS['red'], 30),\n },\n borderChecked: COLORS['red'],\n background: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: alpha(COLORS['red'], 5),\n },\n backgroundChecked: alpha(COLORS['red'], 5),\n focusRing: alpha(COLORS['red'], 20),\n label: {\n static: COLORS['red'],\n hover: COLORS['red'],\n active: COLORS['red'],\n disabled: alpha(COLORS['red'], 40),\n },\n description: {\n static: alpha(COLORS['red'], 70),\n hover: alpha(COLORS['red'], 70),\n active: alpha(COLORS['red'], 70),\n disabled: alpha(COLORS['red'], 40),\n },\n },\n}\n","import { CHECKBOX_CARD_VARIANT_PROPS } from './constants'\nimport { CheckboxCardVariant } from './types'\n\nexport const getCheckboxCardVariantProps = (variant: CheckboxCardVariant) => {\n return CHECKBOX_CARD_VARIANT_PROPS[variant] ?? CHECKBOX_CARD_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getCheckboxCardVariantProps } from './helpers'\nimport { CheckboxCardVariant } from './types'\n\ntype StyledContainerProps = {\n $checked: boolean\n $disabled: boolean\n $fullWidth: boolean\n $variant: CheckboxCardVariant\n}\n\ntype StyledLabelProps = {\n $variant: CheckboxCardVariant\n}\n\ntype StyledDescriptionProps = {\n $variant: CheckboxCardVariant\n}\n\nexport const StyledContainer = styled.label<StyledContainerProps>`\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 8px;\n padding: 12px;\n background-color: ${(props) => {\n const variantProps = getCheckboxCardVariantProps(props.$variant)\n if (props.$disabled) return variantProps.background.disabled\n if (props.$checked) return variantProps.backgroundChecked\n return variantProps.background.static\n }};\n border: 1px solid\n ${(props) => {\n const variantProps = getCheckboxCardVariantProps(props.$variant)\n if (props.$disabled) return variantProps.border.disabled\n if (props.$checked) return variantProps.borderChecked\n return variantProps.border.static\n }};\n border-radius: 12px;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease;\n width: ${(props) => (props.$fullWidth ? '100%' : 'fit-content')};\n min-width: 0;\n\n &:hover:not([data-disabled='true']) {\n border-color: ${(props) => {\n const variantProps = getCheckboxCardVariantProps(props.$variant)\n if (props.$checked) return variantProps.borderChecked\n return variantProps.border.hover\n }};\n }\n\n .vacano_checkbox_container {\n pointer-events: none;\n }\n`\n\nexport const StyledInput = styled.input`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n`\n\nexport const StyledContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n`\n\nexport const StyledLabel = styled.span<StyledLabelProps>`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n color: ${(props) => getCheckboxCardVariantProps(props.$variant).label.static};\n\n label[data-disabled='true'] & {\n color: ${(props) => getCheckboxCardVariantProps(props.$variant).label.disabled};\n }\n`\n\nexport const StyledDescription = styled.span<StyledDescriptionProps>`\n font-size: 12px;\n font-weight: 400;\n line-height: 1.4;\n color: ${(props) => getCheckboxCardVariantProps(props.$variant).description.static};\n\n label[data-disabled='true'] & {\n color: ${(props) => getCheckboxCardVariantProps(props.$variant).description.disabled};\n }\n`\n","import {\n StyledContainer,\n StyledContent,\n StyledDescription,\n StyledInput,\n StyledLabel,\n} from './styled'\nimport { CheckboxCardProps } from './types'\nimport { Checkbox } from '../Checkbox'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('checkbox-card')\n\nexport const CheckboxCard = ({\n checked,\n className,\n classnames,\n description,\n disabled,\n fullWidth = false,\n label,\n onChange,\n ref,\n variant = 'normal',\n ...rest\n}: CheckboxCardProps) => {\n return (\n <StyledContainer\n className={css('container', className)}\n $checked={checked}\n $disabled={Boolean(disabled)}\n $fullWidth={fullWidth}\n $variant={variant}\n data-disabled={disabled}\n >\n <StyledInput\n {...rest}\n ref={ref}\n type=\"checkbox\"\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n />\n <Checkbox\n className={classnames?.checkbox}\n checked={checked}\n disabled={disabled}\n variant={variant}\n onChange={() => {}}\n tabIndex={-1}\n aria-hidden\n />\n <StyledContent className={css('content', classnames?.content)}>\n <StyledLabel className={css('label', classnames?.label)} $variant={variant}>\n {label}\n </StyledLabel>\n {description && (\n <StyledDescription\n className={css('description', classnames?.description)}\n $variant={variant}\n >\n {description}\n </StyledDescription>\n )}\n </StyledContent>\n </StyledContainer>\n )\n}\n","import { alpha, COLORS } from '../../lib'\n\nexport const CHECKBOX_GROUP_PROPS = {\n label: {\n color: COLORS['black'],\n disabledColor: alpha(COLORS['black'], 40),\n },\n}\n","import styled from '@emotion/styled'\n\nimport { CHECKBOX_GROUP_PROPS } from './constants'\n\ntype StyledLabelProps = {\n $disabled?: boolean\n}\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`\n\nexport const StyledLabel = styled.span<StyledLabelProps>`\n font-size: 13px;\n font-weight: 500;\n line-height: 1.5;\n color: ${(props) =>\n props.$disabled ? CHECKBOX_GROUP_PROPS.label.disabledColor : CHECKBOX_GROUP_PROPS.label.color};\n margin-bottom: 4px;\n`\n\nexport const StyledOptions = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n`\n","import { StyledContainer, StyledLabel, StyledOptions } from './styled'\nimport { CheckboxGroupProps } from './types'\nimport { Checkbox } from '../Checkbox'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('checkbox-group')\n\nexport const CheckboxGroup = ({\n className,\n classnames,\n disabled,\n label,\n onChange,\n options,\n ref,\n value,\n ...rest\n}: CheckboxGroupProps) => {\n const handleChange = (optionValue: string, checked: boolean) => {\n if (checked) {\n onChange([...value, optionValue])\n } else {\n onChange(value.filter((v) => v !== optionValue))\n }\n }\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {label && (\n <StyledLabel className={css('label', classnames?.label)} $disabled={disabled}>\n {label}\n </StyledLabel>\n )}\n <StyledOptions className={css('options', classnames?.options)}>\n {options.map((option) => (\n <Checkbox\n key={option.value}\n className={classnames?.checkbox}\n checked={value.includes(option.value)}\n label={option.label}\n disabled={disabled}\n onChange={(e) => handleChange(option.value, e.target.checked)}\n />\n ))}\n </StyledOptions>\n </StyledContainer>\n )\n}\n","import { ChipVariant } from './types'\nimport { alpha, COLORS } from '../../lib'\n\nexport const CHIP_VARIANT_PROPS: Record<\n ChipVariant,\n {\n background: string\n color: string\n deleteHover: string\n }\n> = {\n gray: {\n background: alpha(COLORS['iron-grey'], 10),\n color: COLORS['iron-grey'],\n deleteHover: alpha(COLORS['iron-grey'], 20),\n },\n red: {\n background: alpha(COLORS['red'], 10),\n color: COLORS['red'],\n deleteHover: alpha(COLORS['red'], 20),\n },\n blue: {\n background: alpha(COLORS['steel-blue'], 10),\n color: COLORS['steel-blue'],\n deleteHover: alpha(COLORS['steel-blue'], 20),\n },\n black: {\n background: COLORS['black'],\n color: COLORS['white'],\n deleteHover: alpha(COLORS['white'], 20),\n },\n}\n","import { CHIP_VARIANT_PROPS } from './constants'\nimport { ChipVariant } from './types'\n\nexport const getChipVariantProps = (variant: ChipVariant) => {\n return CHIP_VARIANT_PROPS[variant] ?? CHIP_VARIANT_PROPS['gray']\n}\n","import styled from '@emotion/styled'\n\nimport { getChipVariantProps } from './helpers'\nimport { ChipVariant } from './types'\n\ntype StyledContainerProps = {\n $variant: ChipVariant\n $deletable: boolean\n}\n\ntype StyledDeleteProps = {\n $variant: ChipVariant\n}\n\nexport const StyledContainer = styled.span<StyledContainerProps>`\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 0 ${(props) => (props.$deletable ? '7px' : '10px')} 0 10px;\n border-radius: 12px;\n height: 24px;\n font-size: 12px;\n font-weight: 500;\n line-height: 1.5;\n background-color: ${(props) => getChipVariantProps(props.$variant).background};\n color: ${(props) => getChipVariantProps(props.$variant).color};\n`\n\nexport const StyledDelete = styled.button<StyledDeleteProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n margin: 0;\n margin-left: 2px;\n border: none;\n background: transparent;\n color: inherit;\n cursor: pointer;\n border-radius: 4px;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${(props) => getChipVariantProps(props.$variant).deleteHover};\n }\n\n & svg {\n width: 14px;\n height: 14px;\n }\n`\n\nexport const StyledLabel = styled.span`\n flex: 1 0 auto;\n text-align: center;\n`\n","import { StyledContainer, StyledDelete, StyledLabel } from './styled'\nimport { ChipProps } from './types'\nimport { X } from '../../icons/Lucide'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('chip')\n\nexport const Chip = ({\n children,\n className,\n classnames,\n deletable,\n onDelete,\n ref,\n variant = 'gray',\n ...rest\n}: ChipProps) => {\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n className={css('container', className)}\n $variant={variant}\n $deletable={Boolean(deletable)}\n >\n <StyledLabel className={css('label', classnames?.label)}>{children}</StyledLabel>\n {deletable && (\n <StyledDelete\n type=\"button\"\n className={css('delete', classnames?.delete)}\n $variant={variant}\n onClick={onDelete}\n >\n <X />\n </StyledDelete>\n )}\n </StyledContainer>\n )\n}\n","export const DEFAULT_CONFIRM_LABEL = 'Confirm'\nexport const DEFAULT_CANCEL_LABEL = 'Cancel'\n","import { keyframes } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nconst slideIn = keyframes`\n from {\n opacity: 0;\n transform: translateX(-50%) translateY(100%);\n }\n to {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n`\n\nconst slideOut = keyframes`\n from {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n to {\n opacity: 0;\n transform: translateX(-50%) translateY(100%);\n }\n`\n\ntype StyledContainerProps = {\n $isExiting: boolean\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n position: fixed;\n bottom: 24px;\n left: 50%;\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background-color: ${COLORS.white};\n border: 1px dashed ${COLORS.gray};\n border-radius: 12px;\n box-shadow:\n 0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -2px rgba(0, 0, 0, 0.1);\n animation: ${({ $isExiting }) => ($isExiting ? slideOut : slideIn)} 0.2s ease-out forwards;\n z-index: 1000;\n`\n\nexport const StyledMessage = styled.p`\n margin: 0;\n font-size: 14px;\n color: ${COLORS.black};\n white-space: nowrap;\n`\n\nexport const StyledActions = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`\n","import { useCallback, useEffect, useState } from 'react'\n\nimport { DEFAULT_CANCEL_LABEL, DEFAULT_CONFIRM_LABEL } from './constants'\nimport { StyledActions, StyledContainer, StyledMessage } from './styled'\nimport type { ConfirmationState } from './types'\nimport { Button } from '../Button'\n\ntype ConfirmationBarProps = {\n confirmation: ConfirmationState\n onDone: () => void\n}\n\nexport const ConfirmationBar = ({ confirmation, onDone }: ConfirmationBarProps) => {\n const [isExiting, setIsExiting] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n\n const { message, onConfirm, onCancel, options } = confirmation\n const confirmLabel = options.confirmLabel || DEFAULT_CONFIRM_LABEL\n const cancelLabel = options.cancelLabel || DEFAULT_CANCEL_LABEL\n\n const exit = useCallback(\n (callback?: () => void) => {\n setIsExiting(true)\n setTimeout(() => {\n callback?.()\n onDone()\n }, 200)\n },\n [onDone],\n )\n\n const handleConfirm = useCallback(async () => {\n const result = onConfirm()\n\n if (result instanceof Promise) {\n setIsLoading(true)\n try {\n await result\n } finally {\n setIsLoading(false)\n }\n }\n\n exit()\n }, [exit, onConfirm])\n\n const handleCancel = useCallback(() => {\n if (isLoading) return\n exit(onCancel)\n }, [exit, isLoading, onCancel])\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && !isLoading) {\n handleCancel()\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [handleCancel, isLoading])\n\n return (\n <StyledContainer $isExiting={isExiting}>\n <StyledMessage>{message}</StyledMessage>\n <StyledActions>\n <Button variant=\"system\" size=\"compact\" onClick={handleCancel} disabled={isLoading}>\n {cancelLabel}\n </Button>\n <Button variant=\"danger\" size=\"compact\" onClick={handleConfirm} loading={isLoading}>\n {confirmLabel}\n </Button>\n </StyledActions>\n </StyledContainer>\n )\n}\n","import { createContext } from 'react'\n\nimport type { ConfirmationContextValue } from './types'\n\nexport const ConfirmationContext = createContext<ConfirmationContextValue | null>(null)\n","import { useCallback, useState, type PropsWithChildren, type ReactNode } from 'react'\n\nimport { ConfirmationBar } from './ConfirmationBar'\nimport { ConfirmationContext } from './context'\nimport type { ConfirmationOptions, ConfirmationState } from './types'\n\nconst noop = () => {}\n\nexport const ConfirmationProvider = ({ children }: PropsWithChildren) => {\n const [state, setState] = useState<ConfirmationState | null>(null)\n\n const show = useCallback(\n (\n message: ReactNode,\n onConfirm: () => void,\n onCancel?: () => void,\n options?: ConfirmationOptions,\n ) => {\n setState({\n open: true,\n message,\n onConfirm,\n onCancel: onCancel || noop,\n options: options || {},\n })\n },\n [],\n )\n\n const hide = useCallback(() => {\n setState(null)\n }, [])\n\n return (\n <ConfirmationContext.Provider value={{ show, hide }}>\n {children}\n {state && <ConfirmationBar confirmation={state} onDone={hide} />}\n </ConfirmationContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { ConfirmationContext } from './context'\n\nexport const useConfirmation = () => {\n const context = useContext(ConfirmationContext)\n\n if (!context) {\n throw new Error('useConfirmation must be used within ConfirmationProvider')\n }\n\n return context\n}\n","import { BREAKPOINTS } from '../../lib'\n\nexport const CONTAINER_MAX_WIDTHS: Record<keyof typeof BREAKPOINTS, string> = {\n sm: `${BREAKPOINTS.sm}px`,\n md: `${BREAKPOINTS.md}px`,\n lg: `${BREAKPOINTS.lg}px`,\n xl: `${BREAKPOINTS.xl}px`,\n '2xl': `${BREAKPOINTS['2xl']}px`,\n}\n","import styled from '@emotion/styled'\n\nimport { CONTAINER_MAX_WIDTHS } from './constants'\nimport { mediaUp } from '../../lib'\n\nexport const StyledContainer = styled.div`\n width: 100%;\n\n ${mediaUp('sm')} {\n max-width: ${CONTAINER_MAX_WIDTHS.sm};\n }\n\n ${mediaUp('md')} {\n max-width: ${CONTAINER_MAX_WIDTHS.md};\n }\n\n ${mediaUp('lg')} {\n max-width: ${CONTAINER_MAX_WIDTHS.lg};\n }\n\n ${mediaUp('xl')} {\n max-width: ${CONTAINER_MAX_WIDTHS.xl};\n }\n\n ${mediaUp('2xl')} {\n max-width: ${CONTAINER_MAX_WIDTHS['2xl']};\n }\n`\n","import { PropsWithChildren } from 'react'\n\nimport { StyledContainer } from './styled'\nimport { ContainerProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('container')\nexport const Container = ({\n children,\n className,\n ref,\n ...rest\n}: PropsWithChildren<ContainerProps>) => (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {children}\n </StyledContainer>\n)\n","import { DatePickerVariant } from './types'\nimport { alpha, COLORS, VacanoComponentSize, VacanoInteractiveElementState } from '../../lib'\n\nexport const DATE_PICKER_SIZE_PROPS: Record<\n VacanoComponentSize,\n {\n height: string\n padding: string\n radius: string\n iconSize: number\n }\n> = {\n compact: {\n height: '32px',\n padding: '0 10px',\n radius: '14px',\n iconSize: 16,\n },\n default: {\n height: '40px',\n padding: '0 14px',\n radius: '16px',\n iconSize: 20,\n },\n}\n\nexport const DATE_PICKER_VARIANT_PROPS: Record<\n DatePickerVariant,\n {\n border: VacanoInteractiveElementState\n background: VacanoInteractiveElementState\n color: VacanoInteractiveElementState\n placeholder: VacanoInteractiveElementState\n focus: string\n }\n> = {\n normal: {\n background: {\n static: alpha(COLORS['black'], 2),\n disabled: alpha(COLORS['black'], 10),\n },\n border: {\n static: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 10),\n },\n color: {\n static: COLORS['black'],\n disabled: alpha(COLORS['black'], 65),\n },\n placeholder: {\n static: alpha(COLORS['black'], 40),\n disabled: alpha(COLORS['black'], 65),\n },\n focus: alpha(COLORS['iron-grey'], 30),\n },\n error: {\n background: {\n static: alpha(COLORS['red'], 2),\n disabled: alpha(COLORS['red'], 10),\n },\n border: {\n static: alpha(COLORS['red'], 60),\n disabled: alpha(COLORS['red'], 10),\n },\n color: {\n static: COLORS['red'],\n disabled: alpha(COLORS['red'], 65),\n },\n placeholder: {\n static: alpha(COLORS['red'], 40),\n disabled: alpha(COLORS['red'], 65),\n },\n focus: alpha(COLORS['red'], 30),\n },\n}\n\nexport const CALENDAR_CELL_SIZE = 36\nexport const CALENDAR_GAP = 2\nexport const CALENDAR_PADDING = 12\n","/**\n * Go-style date formatting\n * Reference time: Mon Jan 2 15:04:05 MST 2006\n *\n * Tokens:\n * - 2006: 4-digit year\n * - 06: 2-digit year\n * - January: full month name\n * - Jan: short month name\n * - 01: zero-padded month (01-12)\n * - 1: month (1-12)\n * - Monday: full weekday name\n * - Mon: short weekday name\n * - 02: zero-padded day (01-31)\n * - 2: day (1-31)\n * - _2: space-padded day\n * - 15: 24-hour hour (00-23)\n * - 03: 12-hour hour zero-padded (01-12)\n * - 3: 12-hour hour (1-12)\n * - 04: minute (00-59)\n * - 05: second (00-59)\n * - PM: AM/PM uppercase\n * - pm: am/pm lowercase\n */\nexport const formatDateGo = (date: Date, format: string, locale: string = 'en'): string => {\n const year = date.getFullYear()\n const month = date.getMonth()\n const day = date.getDate()\n const hours = date.getHours()\n const minutes = date.getMinutes()\n const seconds = date.getSeconds()\n\n const hour12 = hours % 12 || 12\n const isPM = hours >= 12\n\n const monthLong = new Intl.DateTimeFormat(locale, { month: 'long' }).format(date)\n const monthShort = new Intl.DateTimeFormat(locale, { month: 'short' }).format(date)\n const weekdayLong = new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(date)\n const weekdayShort = new Intl.DateTimeFormat(locale, { weekday: 'short' }).format(date)\n\n const pad = (n: number): string => n.toString().padStart(2, '0')\n const spacePad = (n: number): string => n.toString().padStart(2, ' ')\n\n // Use placeholder approach to avoid token collision\n // First replace tokens with unique placeholders, then replace placeholders with values\n // Placeholder IDs use only letters to avoid being matched by digit tokens\n const placeholder = (id: string) => `\\x00${id}\\x00`\n\n // Tokens ordered by length (longest first) to avoid partial matches\n // Each token maps to [placeholder_id, actual_value]\n const tokens: [string, string, string][] = [\n ['2006', 'YEARFOUR', year.toString()],\n ['January', 'MONTHLONG', monthLong],\n ['Monday', 'WEEKDAYLONG', weekdayLong],\n ['Jan', 'MONTHSHORT', monthShort],\n ['Mon', 'WEEKDAYSHORT', weekdayShort],\n ['06', 'YEARTWO', year.toString().slice(-2)],\n ['01', 'MONTHPAD', pad(month + 1)],\n ['_2', 'DAYSPACE', spacePad(day)],\n ['02', 'DAYPAD', pad(day)],\n ['15', 'HOURTWENTYFOUR', pad(hours)],\n ['03', 'HOURTWELVEPAD', pad(hour12)],\n ['04', 'MINUTE', pad(minutes)],\n ['05', 'SECOND', pad(seconds)],\n ['PM', 'AMPMUP', isPM ? 'PM' : 'AM'],\n ['pm', 'AMPMLOW', isPM ? 'pm' : 'am'],\n // Single character tokens must come last\n ['1', 'MONTH', (month + 1).toString()],\n ['2', 'DAY', day.toString()],\n ['3', 'HOURTWELVE', hour12.toString()],\n ]\n\n let result = format\n\n // First pass: replace all tokens with placeholders\n for (const [token, id] of tokens) {\n result = result.split(token).join(placeholder(id))\n }\n\n // Second pass: replace all placeholders with actual values\n for (const [, id, value] of tokens) {\n result = result.split(placeholder(id)).join(value)\n }\n\n return result\n}\n\n/**\n * Get days in a month\n */\nexport const getDaysInMonth = (year: number, month: number): number => {\n return new Date(year, month + 1, 0).getDate()\n}\n\n/**\n * Get the first day of the month (0 = Sunday, 6 = Saturday)\n */\nexport const getFirstDayOfMonth = (year: number, month: number): number => {\n return new Date(year, month, 1).getDay()\n}\n\n/**\n * Generate calendar grid for a month\n */\nexport const generateCalendarDays = (\n year: number,\n month: number,\n weekStartsOn: 0 | 1 = 1,\n): (number | null)[] => {\n const daysInMonth = getDaysInMonth(year, month)\n const firstDay = getFirstDayOfMonth(year, month)\n\n // Adjust for week start\n let leadingEmptyDays = firstDay - weekStartsOn\n if (leadingEmptyDays < 0) {\n leadingEmptyDays += 7\n }\n\n const days: (number | null)[] = []\n\n // Leading empty cells\n for (let i = 0; i < leadingEmptyDays; i++) {\n days.push(null)\n }\n\n // Days of the month\n for (let day = 1; day <= daysInMonth; day++) {\n days.push(day)\n }\n\n // Trailing empty cells to complete the grid (6 rows × 7 days = 42)\n while (days.length < 42) {\n days.push(null)\n }\n\n return days\n}\n\n/**\n * Get localized weekday names\n */\nexport const getWeekdayNames = (locale: string, weekStartsOn: 0 | 1 = 1): string[] => {\n const weekdays: string[] = []\n\n for (let i = 0; i < 7; i++) {\n const dayIndex = (weekStartsOn + i) % 7\n const date = new Date(2024, 0, 7 + dayIndex)\n weekdays.push(new Intl.DateTimeFormat(locale, { weekday: 'short' }).format(date))\n }\n\n return weekdays\n}\n\n/**\n * Get localized month names\n */\nexport const getMonthNames = (locale: string): string[] => {\n const months: string[] = []\n for (let i = 0; i < 12; i++) {\n const date = new Date(2024, i, 1)\n months.push(new Intl.DateTimeFormat(locale, { month: 'long' }).format(date))\n }\n return months\n}\n\n/**\n * Get short month names\n */\nexport const getShortMonthNames = (locale: string): string[] => {\n const months: string[] = []\n for (let i = 0; i < 12; i++) {\n const date = new Date(2024, i, 1)\n months.push(new Intl.DateTimeFormat(locale, { month: 'short' }).format(date))\n }\n return months\n}\n\n/**\n * Check if two dates are the same day\n */\nexport const isSameDay = (a: Date, b: Date): boolean => {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n )\n}\n\n/**\n * Check if two dates are in the same month\n */\nexport const isSameMonth = (a: Date, b: Date): boolean => {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth()\n}\n\n/**\n * Check if two dates are in the same year\n */\nexport const isSameYear = (a: Date, b: Date): boolean => {\n return a.getFullYear() === b.getFullYear()\n}\n\n/**\n * Check if a date is within a range\n */\nexport const isDateInRange = (date: Date, minDate?: Date, maxDate?: Date): boolean => {\n if (minDate && date < minDate) return false\n if (maxDate && date > maxDate) return false\n return true\n}\n\n/**\n * Check if a day is disabled based on min/max dates\n */\nexport const isDayDisabled = (\n year: number,\n month: number,\n day: number,\n minDate?: Date,\n maxDate?: Date,\n): boolean => {\n const date = new Date(year, month, day)\n\n if (minDate) {\n const minDay = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())\n if (date < minDay) return true\n }\n\n if (maxDate) {\n const maxDay = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())\n if (date > maxDay) return true\n }\n\n return false\n}\n\n/**\n * Check if a month is disabled based on min/max dates\n */\nexport const isMonthDisabled = (\n year: number,\n month: number,\n minDate?: Date,\n maxDate?: Date,\n): boolean => {\n if (minDate) {\n const minYear = minDate.getFullYear()\n const minMonth = minDate.getMonth()\n if (year < minYear || (year === minYear && month < minMonth)) return true\n }\n\n if (maxDate) {\n const maxYear = maxDate.getFullYear()\n const maxMonth = maxDate.getMonth()\n if (year > maxYear || (year === maxYear && month > maxMonth)) return true\n }\n\n return false\n}\n\n/**\n * Check if a year is disabled based on min/max dates\n */\nexport const isYearDisabled = (year: number, minDate?: Date, maxDate?: Date): boolean => {\n if (minDate && year < minDate.getFullYear()) return true\n if (maxDate && year > maxDate.getFullYear()) return true\n return false\n}\n\n/**\n * Generate year range for year picker\n */\nexport const generateYearRange = (centerYear: number, range: number = 12): number[] => {\n const startYear = centerYear - Math.floor(range / 2)\n const years: number[] = []\n for (let i = 0; i < range; i++) {\n years.push(startYear + i)\n }\n return years\n}\n\n/**\n * Get default display format based on mode\n */\nexport const getDefaultDisplayFormat = (mode: 'date' | 'month' | 'year'): string => {\n switch (mode) {\n case 'date':\n return '02.01.2006'\n case 'month':\n return 'January 2006'\n case 'year':\n return '2006'\n }\n}\n","import styled from '@emotion/styled'\n\nimport {\n CALENDAR_CELL_SIZE,\n CALENDAR_GAP,\n CALENDAR_PADDING,\n DATE_PICKER_SIZE_PROPS,\n DATE_PICKER_VARIANT_PROPS,\n} from './constants'\nimport { DatePickerPosition, DatePickerVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { alpha, COLORS, VacanoComponentSize } from '../../lib'\n\nexport const StyledContainer = styled.div<{ $fullWidth: boolean }>`\n position: relative;\n display: inline-flex;\n flex-direction: column;\n gap: 2px;\n min-width: 180px;\n width: ${({ $fullWidth }) => ($fullWidth ? '100%' : 'fit-content')};\n`\n\nexport const StyledLabel = styled(FieldLabel)`\n margin-left: 6px;\n`\n\nexport const StyledTrigger = styled.button<{\n $size: VacanoComponentSize\n $variant: DatePickerVariant\n $disabled: boolean\n $open: boolean\n $hasValue: boolean\n}>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n width: 100%;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n outline: none;\n font-size: 14px;\n font-weight: 500;\n text-align: left;\n height: ${({ $size }) => DATE_PICKER_SIZE_PROPS[$size].height};\n padding: ${({ $size }) => DATE_PICKER_SIZE_PROPS[$size].padding};\n border-radius: ${({ $size }) => DATE_PICKER_SIZE_PROPS[$size].radius};\n color: ${({ $variant, $disabled, $hasValue }) =>\n $hasValue\n ? DATE_PICKER_VARIANT_PROPS[$variant].color[$disabled ? 'disabled' : 'static']\n : DATE_PICKER_VARIANT_PROPS[$variant].placeholder[$disabled ? 'disabled' : 'static']};\n border: 1px solid\n ${({ $variant, $disabled }) =>\n DATE_PICKER_VARIANT_PROPS[$variant].border[$disabled ? 'disabled' : 'static']};\n background-color: ${({ $variant, $disabled }) =>\n DATE_PICKER_VARIANT_PROPS[$variant].background[$disabled ? 'disabled' : 'static']};\n\n ${({ $open, $variant }) =>\n $open &&\n `\n outline: 2px solid ${DATE_PICKER_VARIANT_PROPS[$variant].focus};\n `}\n`\n\nexport const StyledTriggerText = styled.span`\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`\n\nexport const StyledTriggerIcon = styled.span<{ $open: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: transform 0.15s ease;\n transform: ${({ $open }) => ($open ? 'rotate(180deg)' : 'rotate(0deg)')};\n`\n\nconst calendarStyles = `\n z-index: 100;\n background-color: ${COLORS.white};\n border: 1px solid ${alpha(COLORS.black, 15)};\n border-radius: 12px;\n box-shadow: 0 4px 16px ${alpha(COLORS.black, 12)};\n padding: ${CALENDAR_PADDING}px;\n`\n\nconst getCalendarTransform = ($open: boolean, $position: DatePickerPosition) => {\n if (!$open) {\n return $position === 'bottom' ? 'translateY(-8px)' : 'translateY(8px)'\n }\n return 'translateY(0)'\n}\n\nexport const StyledCalendar = styled.div<{ $open: boolean; $position: DatePickerPosition }>`\n position: absolute;\n ${({ $position }) =>\n $position === 'bottom' ? 'top: calc(100% + 4px);' : 'bottom: calc(100% + 4px);'}\n left: 0;\n ${calendarStyles}\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open, $position }) => getCalendarTransform($open, $position)};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n\nexport const StyledPortalCalendar = styled.div<{ $open: boolean; $position: DatePickerPosition }>`\n position: fixed;\n ${calendarStyles}\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open, $position }) => getCalendarTransform($open, $position)};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n\nexport const StyledCalendarHeader = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 8px;\n`\n\nexport const StyledCalendarTitle = styled.button`\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border: none;\n background: transparent;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 600;\n color: ${COLORS.black};\n cursor: pointer;\n\n &:hover {\n background-color: ${alpha(COLORS.black, 5)};\n }\n`\n\nexport const StyledNavButton = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n border-radius: 6px;\n color: ${COLORS.black};\n cursor: pointer;\n\n &:hover {\n background-color: ${alpha(COLORS.black, 5)};\n }\n\n &:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n\n &:hover {\n background: transparent;\n }\n }\n`\n\nexport const StyledNavButtons = styled.div`\n display: flex;\n gap: 4px;\n`\n\nexport const StyledWeekdays = styled.div`\n display: grid;\n grid-template-columns: repeat(7, ${CALENDAR_CELL_SIZE}px);\n gap: ${CALENDAR_GAP}px;\n margin-bottom: 4px;\n`\n\nexport const StyledWeekday = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n height: ${CALENDAR_CELL_SIZE}px;\n font-size: 12px;\n font-weight: 500;\n color: ${alpha(COLORS.black, 50)};\n text-transform: uppercase;\n`\n\nexport const StyledDaysGrid = styled.div`\n display: grid;\n grid-template-columns: repeat(7, ${CALENDAR_CELL_SIZE}px);\n gap: ${CALENDAR_GAP}px;\n`\n\nexport const StyledDayCell = styled.button<{\n $selected: boolean\n $today: boolean\n $disabled: boolean\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${CALENDAR_CELL_SIZE}px;\n height: ${CALENDAR_CELL_SIZE}px;\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: ${({ $selected, $today }) => ($selected || $today ? 600 : 500)};\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n background-color: ${({ $selected }) => ($selected ? COLORS.black : 'transparent')};\n color: ${({ $selected, $disabled }) =>\n $selected ? COLORS.white : $disabled ? alpha(COLORS.black, 30) : COLORS.black};\n\n ${({ $today, $selected }) =>\n $today &&\n !$selected &&\n `\n box-shadow: inset 0 0 0 1px ${COLORS.black};\n `}\n\n &:hover:not(:disabled) {\n background-color: ${({ $selected }) => ($selected ? COLORS.black : alpha(COLORS.black, 8))};\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n`\n\nexport const StyledMonthsGrid = styled.div`\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 8px;\n width: ${7 * CALENDAR_CELL_SIZE + 6 * CALENDAR_GAP}px;\n`\n\nexport const StyledMonthCell = styled.button<{\n $selected: boolean\n $current: boolean\n $disabled: boolean\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 12px 8px;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: ${({ $selected, $current }) => ($selected || $current ? 600 : 400)};\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n background-color: ${({ $selected }) => ($selected ? COLORS.black : 'transparent')};\n color: ${({ $selected, $disabled }) =>\n $selected ? COLORS.white : $disabled ? alpha(COLORS.black, 30) : COLORS.black};\n\n ${({ $current, $selected }) =>\n $current &&\n !$selected &&\n `\n box-shadow: inset 0 0 0 1px ${COLORS.black};\n `}\n\n &:hover:not(:disabled) {\n background-color: ${({ $selected }) => ($selected ? COLORS.black : alpha(COLORS.black, 8))};\n }\n`\n\nexport const StyledYearsGrid = styled.div`\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 8px;\n width: ${7 * CALENDAR_CELL_SIZE + 6 * CALENDAR_GAP}px;\n`\n\nexport const StyledYearCell = styled.button<{\n $selected: boolean\n $current: boolean\n $disabled: boolean\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 12px 8px;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: ${({ $selected, $current }) => ($selected || $current ? 600 : 400)};\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n background-color: ${({ $selected }) => ($selected ? COLORS.black : 'transparent')};\n color: ${({ $selected, $disabled }) =>\n $selected ? COLORS.white : $disabled ? alpha(COLORS.black, 30) : COLORS.black};\n\n ${({ $current, $selected }) =>\n $current &&\n !$selected &&\n `\n box-shadow: inset 0 0 0 1px ${COLORS.black};\n `}\n\n &:hover:not(:disabled) {\n background-color: ${({ $selected }) => ($selected ? COLORS.black : alpha(COLORS.black, 8))};\n }\n`\n\nexport const StyledEmptyCell = styled.div`\n width: ${CALENDAR_CELL_SIZE}px;\n height: ${CALENDAR_CELL_SIZE}px;\n`\n","import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { DATE_PICKER_SIZE_PROPS } from './constants'\nimport {\n formatDateGo,\n generateCalendarDays,\n generateYearRange,\n getDefaultDisplayFormat,\n getShortMonthNames,\n getWeekdayNames,\n isDayDisabled,\n isMonthDisabled,\n isSameDay,\n isSameMonth,\n isSameYear,\n isYearDisabled,\n} from './helpers'\nimport {\n StyledCalendar,\n StyledCalendarHeader,\n StyledCalendarTitle,\n StyledContainer,\n StyledDayCell,\n StyledDaysGrid,\n StyledEmptyCell,\n StyledLabel,\n StyledMonthCell,\n StyledMonthsGrid,\n StyledNavButton,\n StyledNavButtons,\n StyledPortalCalendar,\n StyledTrigger,\n StyledTriggerIcon,\n StyledTriggerText,\n StyledWeekday,\n StyledWeekdays,\n StyledYearCell,\n StyledYearsGrid,\n} from './styled'\nimport { CalendarView, DatePickerPosition, DatePickerProps } from './types'\nimport { ChevronDown, ChevronLeft, ChevronRight } from '../../icons/Lucide'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('date-picker')\n\nconst CALENDAR_GAP = 4\nconst CALENDAR_MIN_HEIGHT = 300\n\ntype PortalPosition = {\n top: number\n left: number\n}\n\nexport const DatePicker = ({\n value,\n onChange,\n mode = 'date',\n displayFormat,\n placeholder,\n locale = 'en',\n weekStartsOn = 1,\n minDate,\n maxDate,\n size = 'default',\n variant = 'normal',\n disabled = false,\n fullWidth = false,\n label,\n portalRenderNode,\n open: controlledOpen,\n onOpen,\n onClose,\n className,\n classnames,\n ref,\n ...rest\n}: DatePickerProps) => {\n const today = useMemo(() => new Date(), [])\n const [internalOpen, setInternalOpen] = useState(false)\n const [portalPosition, setPortalPosition] = useState<PortalPosition>({ top: 0, left: 0 })\n const [position, setPosition] = useState<DatePickerPosition>('bottom')\n const [view, setView] = useState<CalendarView>(() => {\n if (mode === 'year') return 'years'\n if (mode === 'month') return 'months'\n return 'days'\n })\n\n const [viewDate, setViewDate] = useState<Date>(() => value ?? today)\n const [yearRangeStart, setYearRangeStart] = useState(() => {\n const year = value?.getFullYear() ?? today.getFullYear()\n return year - 6\n })\n\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement>(null)\n const calendarRef = useRef<HTMLDivElement>(null)\n\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : internalOpen\n\n const format = displayFormat ?? getDefaultDisplayFormat(mode)\n const weekdays = useMemo(() => getWeekdayNames(locale, weekStartsOn), [locale, weekStartsOn])\n const monthNames = useMemo(() => getShortMonthNames(locale), [locale])\n\n const calendarDays = useMemo(\n () => generateCalendarDays(viewDate.getFullYear(), viewDate.getMonth(), weekStartsOn),\n [viewDate, weekStartsOn],\n )\n\n const yearRange = useMemo(() => generateYearRange(yearRangeStart + 6, 12), [yearRangeStart])\n\n const displayValue = useMemo(() => {\n if (!value) return null\n return formatDateGo(value, format, locale)\n }, [value, format, locale])\n\n const placeholderText = placeholder ?? format.replace(/2006|06|January|Jan|01|02/g, '__')\n\n const updatePosition = useCallback(() => {\n if (!triggerRef.current) return\n\n const triggerRect = triggerRef.current.getBoundingClientRect()\n const calendarHeight = calendarRef.current?.offsetHeight ?? CALENDAR_MIN_HEIGHT\n\n const spaceBelow = window.innerHeight - triggerRect.bottom - CALENDAR_GAP\n const spaceAbove = triggerRect.top - CALENDAR_GAP\n\n const newPosition: DatePickerPosition =\n spaceBelow < calendarHeight && spaceAbove > spaceBelow ? 'top' : 'bottom'\n setPosition(newPosition)\n\n if (portalRenderNode) {\n const top =\n newPosition === 'bottom'\n ? triggerRect.bottom + CALENDAR_GAP\n : triggerRect.top - calendarHeight - CALENDAR_GAP\n\n setPortalPosition({\n top,\n left: triggerRect.left,\n })\n }\n }, [portalRenderNode])\n\n const handleOpen = useCallback(() => {\n if (disabled) return\n\n if (isControlled) {\n onOpen?.()\n } else {\n setInternalOpen(true)\n onOpen?.()\n }\n\n // Reset view based on mode\n if (mode === 'year') {\n setView('years')\n } else if (mode === 'month') {\n setView('months')\n } else {\n setView('days')\n }\n\n // Reset view date to value or today\n const newViewDate = value ?? today\n setViewDate(newViewDate)\n setYearRangeStart(newViewDate.getFullYear() - 6)\n }, [disabled, isControlled, onOpen, mode, value, today])\n\n const handleClose = useCallback(() => {\n if (isControlled) {\n onClose?.()\n } else {\n setInternalOpen(false)\n onClose?.()\n }\n }, [isControlled, onClose])\n\n const handleToggle = useCallback(() => {\n if (open) {\n handleClose()\n } else {\n handleOpen()\n }\n }, [open, handleClose, handleOpen])\n\n const handleSelectDay = useCallback(\n (day: number) => {\n const newDate = new Date(viewDate.getFullYear(), viewDate.getMonth(), day)\n onChange?.(newDate)\n handleClose()\n },\n [viewDate, onChange, handleClose],\n )\n\n const handleSelectMonth = useCallback(\n (month: number) => {\n if (mode === 'month') {\n const newDate = new Date(viewDate.getFullYear(), month, 1)\n onChange?.(newDate)\n handleClose()\n } else {\n setViewDate(new Date(viewDate.getFullYear(), month, 1))\n setView('days')\n }\n },\n [mode, viewDate, onChange, handleClose],\n )\n\n const handleSelectYear = useCallback(\n (year: number) => {\n if (mode === 'year') {\n const newDate = new Date(year, 0, 1)\n onChange?.(newDate)\n handleClose()\n } else if (mode === 'month') {\n setViewDate(new Date(year, viewDate.getMonth(), 1))\n setView('months')\n } else {\n setViewDate(new Date(year, viewDate.getMonth(), 1))\n setView('months')\n }\n },\n [mode, viewDate, onChange, handleClose],\n )\n\n const handlePrevMonth = useCallback(() => {\n setViewDate((prev) => new Date(prev.getFullYear(), prev.getMonth() - 1, 1))\n }, [])\n\n const handleNextMonth = useCallback(() => {\n setViewDate((prev) => new Date(prev.getFullYear(), prev.getMonth() + 1, 1))\n }, [])\n\n const handlePrevYear = useCallback(() => {\n setViewDate((prev) => new Date(prev.getFullYear() - 1, prev.getMonth(), 1))\n }, [])\n\n const handleNextYear = useCallback(() => {\n setViewDate((prev) => new Date(prev.getFullYear() + 1, prev.getMonth(), 1))\n }, [])\n\n const handlePrevYearRange = useCallback(() => {\n setYearRangeStart((prev) => prev - 12)\n }, [])\n\n const handleNextYearRange = useCallback(() => {\n setYearRangeStart((prev) => prev + 12)\n }, [])\n\n const handleTitleClick = useCallback(() => {\n if (view === 'days') {\n setView('months')\n } else if (view === 'months') {\n setView('years')\n }\n }, [view])\n\n useLayoutEffect(() => {\n if (open) {\n updatePosition()\n }\n }, [open, updatePosition])\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node\n const isOutsideContainer = containerRef.current && !containerRef.current.contains(target)\n const isOutsideCalendar = calendarRef.current && !calendarRef.current.contains(target)\n\n if (portalRenderNode) {\n if (isOutsideContainer && isOutsideCalendar) {\n handleClose()\n }\n } else {\n if (isOutsideContainer) {\n handleClose()\n }\n }\n }\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n handleClose()\n }\n }\n\n const handleScroll = () => {\n if (open && portalRenderNode) {\n updatePosition()\n }\n }\n\n const handleResize = () => {\n if (open && portalRenderNode) {\n updatePosition()\n }\n }\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n document.addEventListener('keydown', handleEscape)\n\n if (portalRenderNode) {\n window.addEventListener('scroll', handleScroll, true)\n window.addEventListener('resize', handleResize)\n }\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n document.removeEventListener('keydown', handleEscape)\n window.removeEventListener('scroll', handleScroll, true)\n window.removeEventListener('resize', handleResize)\n }\n }, [open, handleClose, portalRenderNode, updatePosition])\n\n const iconSize = DATE_PICKER_SIZE_PROPS[size].iconSize\n\n const renderDaysView = () => (\n <>\n <StyledCalendarHeader className={css('header', classnames?.header)}>\n <StyledCalendarTitle onClick={handleTitleClick} type=\"button\">\n {new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' }).format(viewDate)}\n </StyledCalendarTitle>\n <StyledNavButtons>\n <StyledNavButton onClick={handlePrevMonth} type=\"button\" aria-label=\"Previous month\">\n <ChevronLeft size={16} />\n </StyledNavButton>\n <StyledNavButton onClick={handleNextMonth} type=\"button\" aria-label=\"Next month\">\n <ChevronRight size={16} />\n </StyledNavButton>\n </StyledNavButtons>\n </StyledCalendarHeader>\n <StyledWeekdays>\n {weekdays.map((day, i) => (\n <StyledWeekday key={i}>{day}</StyledWeekday>\n ))}\n </StyledWeekdays>\n <StyledDaysGrid className={css('grid', classnames?.grid)}>\n {calendarDays.map((day, i) =>\n day === null ? (\n <StyledEmptyCell key={i} />\n ) : (\n <StyledDayCell\n key={i}\n type=\"button\"\n className={css('cell', classnames?.cell)}\n $selected={\n value\n ? isSameDay(value, new Date(viewDate.getFullYear(), viewDate.getMonth(), day))\n : false\n }\n $today={isSameDay(today, new Date(viewDate.getFullYear(), viewDate.getMonth(), day))}\n $disabled={isDayDisabled(\n viewDate.getFullYear(),\n viewDate.getMonth(),\n day,\n minDate,\n maxDate,\n )}\n disabled={isDayDisabled(\n viewDate.getFullYear(),\n viewDate.getMonth(),\n day,\n minDate,\n maxDate,\n )}\n onClick={() => handleSelectDay(day)}\n >\n {day}\n </StyledDayCell>\n ),\n )}\n </StyledDaysGrid>\n </>\n )\n\n const renderMonthsView = () => (\n <>\n <StyledCalendarHeader className={css('header', classnames?.header)}>\n <StyledCalendarTitle onClick={handleTitleClick} type=\"button\">\n {viewDate.getFullYear()}\n </StyledCalendarTitle>\n <StyledNavButtons>\n <StyledNavButton onClick={handlePrevYear} type=\"button\" aria-label=\"Previous year\">\n <ChevronLeft size={16} />\n </StyledNavButton>\n <StyledNavButton onClick={handleNextYear} type=\"button\" aria-label=\"Next year\">\n <ChevronRight size={16} />\n </StyledNavButton>\n </StyledNavButtons>\n </StyledCalendarHeader>\n <StyledMonthsGrid className={css('grid', classnames?.grid)}>\n {monthNames.map((month, i) => (\n <StyledMonthCell\n key={i}\n type=\"button\"\n className={css('cell', classnames?.cell)}\n $selected={value ? isSameMonth(value, new Date(viewDate.getFullYear(), i, 1)) : false}\n $current={isSameMonth(today, new Date(viewDate.getFullYear(), i, 1))}\n $disabled={isMonthDisabled(viewDate.getFullYear(), i, minDate, maxDate)}\n disabled={isMonthDisabled(viewDate.getFullYear(), i, minDate, maxDate)}\n onClick={() => handleSelectMonth(i)}\n >\n {month}\n </StyledMonthCell>\n ))}\n </StyledMonthsGrid>\n </>\n )\n\n const renderYearsView = () => (\n <>\n <StyledCalendarHeader className={css('header', classnames?.header)}>\n <StyledCalendarTitle type=\"button\" style={{ cursor: 'default' }}>\n {yearRange[0]} - {yearRange[yearRange.length - 1]}\n </StyledCalendarTitle>\n <StyledNavButtons>\n <StyledNavButton onClick={handlePrevYearRange} type=\"button\" aria-label=\"Previous years\">\n <ChevronLeft size={16} />\n </StyledNavButton>\n <StyledNavButton onClick={handleNextYearRange} type=\"button\" aria-label=\"Next years\">\n <ChevronRight size={16} />\n </StyledNavButton>\n </StyledNavButtons>\n </StyledCalendarHeader>\n <StyledYearsGrid className={css('grid', classnames?.grid)}>\n {yearRange.map((year) => (\n <StyledYearCell\n key={year}\n type=\"button\"\n className={css('cell', classnames?.cell)}\n $selected={value ? isSameYear(value, new Date(year, 0, 1)) : false}\n $current={today.getFullYear() === year}\n $disabled={isYearDisabled(year, minDate, maxDate)}\n disabled={isYearDisabled(year, minDate, maxDate)}\n onClick={() => handleSelectYear(year)}\n >\n {year}\n </StyledYearCell>\n ))}\n </StyledYearsGrid>\n </>\n )\n\n const renderCalendarContent = () => {\n switch (view) {\n case 'days':\n return renderDaysView()\n case 'months':\n return renderMonthsView()\n case 'years':\n return renderYearsView()\n }\n }\n\n const calendar = portalRenderNode ? (\n createPortal(\n <StyledPortalCalendar\n ref={calendarRef}\n $open={open}\n $position={position}\n className={css('calendar', classnames?.calendar)}\n style={{ top: portalPosition.top, left: portalPosition.left }}\n >\n {renderCalendarContent()}\n </StyledPortalCalendar>,\n portalRenderNode,\n )\n ) : (\n <StyledCalendar\n ref={calendarRef}\n $open={open}\n $position={position}\n className={css('calendar', classnames?.calendar)}\n >\n {renderCalendarContent()}\n </StyledCalendar>\n )\n\n return (\n <StyledContainer\n {...rest}\n ref={ref ?? containerRef}\n $fullWidth={fullWidth}\n className={css('container', className)}\n >\n {label && <StyledLabel>{label}</StyledLabel>}\n <StyledTrigger\n ref={triggerRef}\n type=\"button\"\n onClick={handleToggle}\n disabled={disabled}\n $size={size}\n $variant={variant}\n $disabled={disabled}\n $open={open}\n $hasValue={!!displayValue}\n className={css('trigger', classnames?.trigger)}\n >\n <StyledTriggerText>{displayValue ?? placeholderText}</StyledTriggerText>\n <StyledTriggerIcon $open={open}>\n <ChevronDown size={iconSize} />\n </StyledTriggerIcon>\n </StyledTrigger>\n {calendar}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { DrawerPosition } from './types'\nimport { alpha, COLORS, KEYFRAMES } from '../../lib'\n\nconst slideIn = {\n left: KEYFRAMES.slideInLeft,\n right: KEYFRAMES.slideInRight,\n top: KEYFRAMES.slideInTop,\n bottom: KEYFRAMES.slideInBottom,\n}\n\ntype StyledContainerProps = {\n $animated: boolean\n $position: DrawerPosition\n $size: string\n}\n\nconst getPositionStyles = (position: DrawerPosition, size: string) => {\n switch (position) {\n case 'left':\n return `\n top: 0;\n left: 0;\n height: 100%;\n width: ${size};\n `\n case 'right':\n return `\n top: 0;\n right: 0;\n height: 100%;\n width: ${size};\n `\n case 'top':\n return `\n top: 0;\n left: 0;\n width: 100%;\n height: ${size};\n `\n case 'bottom':\n return `\n bottom: 0;\n left: 0;\n width: 100%;\n height: ${size};\n `\n }\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n position: fixed;\n z-index: 1001;\n background-color: ${COLORS['white']};\n box-shadow: 0 4px 24px ${alpha(COLORS['black'], 20)};\n ${(props) => getPositionStyles(props.$position, props.$size)}\n animation: ${(props) => slideIn[props.$position]} ${(props) =>\n props.$animated ? '0.05s' : '0s'} ease-out forwards;\n`\n","import { createPortal } from 'react-dom'\n\nimport { StyledContainer } from './styled'\nimport { DrawerProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('drawer')\nexport const Drawer = ({\n animated,\n children,\n className,\n open,\n position = 'right',\n ref,\n size = '400px',\n ...rest\n}: DrawerProps) => {\n if (!open) {\n return null\n }\n\n return createPortal(\n <StyledContainer\n {...rest}\n ref={ref}\n className={css('container', className)}\n $animated={Boolean(animated)}\n $position={position}\n $size={size}\n >\n {children}\n </StyledContainer>,\n document.body,\n )\n}\n","import styled from '@emotion/styled'\n\nimport { DropdownAlign, DropdownPosition } from './types'\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n position: relative;\n display: inline-block;\n`\n\nexport const StyledTrigger = styled.div`\n cursor: pointer;\n`\n\nconst contentStyles = `\n z-index: 100;\n min-width: 160px;\n padding: 8px;\n background-color: ${COLORS.white};\n border: 1px solid ${COLORS.gray};\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n`\n\nconst getTransform = ($open: boolean, $position: DropdownPosition) => {\n if (!$open) {\n return $position === 'bottom' ? 'translateY(-8px)' : 'translateY(8px)'\n }\n return 'translateY(0)'\n}\n\nexport const StyledContent = styled.div<{\n $align: DropdownAlign\n $open: boolean\n $position: DropdownPosition\n}>`\n position: absolute;\n ${({ $position }) =>\n $position === 'bottom' ? 'top: calc(100% + 4px);' : 'bottom: calc(100% + 4px);'}\n ${({ $align }) => ($align === 'left' ? 'left: 0;' : 'right: 0;')}\n ${contentStyles}\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open, $position }) => getTransform($open, $position)};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n\nexport const StyledPortalContent = styled.div<{ $open: boolean; $position: DropdownPosition }>`\n position: fixed;\n ${contentStyles}\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open, $position }) => getTransform($open, $position)};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n","import { cloneElement, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { StyledContainer, StyledContent, StyledPortalContent, StyledTrigger } from './styled'\nimport { DropdownPosition, DropdownProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('dropdown')\n\ntype PortalPosition = {\n top: number\n left: number\n}\n\nconst DROPDOWN_GAP = 4\nconst DROPDOWN_MIN_HEIGHT = 100\n\nexport const Dropdown = ({\n align = 'left',\n children,\n className,\n classnames,\n onClose,\n onOpen,\n open: controlledOpen,\n portalRenderNode,\n ref,\n trigger,\n ...rest\n}: DropdownProps) => {\n const [internalOpen, setInternalOpen] = useState(false)\n const [portalPosition, setPortalPosition] = useState<PortalPosition>({ top: 0, left: 0 })\n const [position, setPosition] = useState<DropdownPosition>('bottom')\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : internalOpen\n\n const updatePosition = useCallback(() => {\n if (!triggerRef.current) return\n\n const triggerRect = triggerRef.current.getBoundingClientRect()\n const contentHeight = contentRef.current?.offsetHeight ?? DROPDOWN_MIN_HEIGHT\n const contentWidth = contentRef.current?.offsetWidth ?? 160\n\n const spaceBelow = window.innerHeight - triggerRect.bottom - DROPDOWN_GAP\n const spaceAbove = triggerRect.top - DROPDOWN_GAP\n\n const newPosition: DropdownPosition =\n spaceBelow < contentHeight && spaceAbove > spaceBelow ? 'top' : 'bottom'\n setPosition(newPosition)\n\n if (portalRenderNode) {\n let left: number\n if (align === 'left') {\n left = triggerRect.left\n } else {\n left = triggerRect.right - contentWidth\n }\n\n const top =\n newPosition === 'bottom'\n ? triggerRect.bottom + DROPDOWN_GAP\n : triggerRect.top - contentHeight - DROPDOWN_GAP\n\n setPortalPosition({ top, left })\n }\n }, [align, portalRenderNode])\n\n const handleToggle = useCallback(() => {\n if (isControlled) {\n if (open) {\n onClose?.()\n } else {\n onOpen?.()\n }\n } else {\n setInternalOpen((prev) => {\n const next = !prev\n if (next) {\n onOpen?.()\n } else {\n onClose?.()\n }\n return next\n })\n }\n }, [isControlled, open, onClose, onOpen])\n\n const handleClose = useCallback(() => {\n if (isControlled) {\n onClose?.()\n } else {\n setInternalOpen(false)\n onClose?.()\n }\n }, [isControlled, onClose])\n\n useLayoutEffect(() => {\n if (open) {\n updatePosition()\n }\n }, [open, updatePosition])\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node\n const isOutsideContainer = containerRef.current && !containerRef.current.contains(target)\n const isOutsideContent = contentRef.current && !contentRef.current.contains(target)\n\n if (portalRenderNode) {\n if (isOutsideContainer && isOutsideContent) {\n handleClose()\n }\n } else {\n if (isOutsideContainer) {\n handleClose()\n }\n }\n }\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n handleClose()\n }\n }\n\n const handleScroll = () => {\n if (open && portalRenderNode) {\n updatePosition()\n }\n }\n\n const handleResize = () => {\n if (open && portalRenderNode) {\n updatePosition()\n }\n }\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n document.addEventListener('keydown', handleEscape)\n\n if (portalRenderNode) {\n window.addEventListener('scroll', handleScroll, true)\n window.addEventListener('resize', handleResize)\n }\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n document.removeEventListener('keydown', handleEscape)\n window.removeEventListener('scroll', handleScroll, true)\n window.removeEventListener('resize', handleResize)\n }\n }, [open, handleClose, portalRenderNode, updatePosition])\n\n const content = portalRenderNode ? (\n createPortal(\n <StyledPortalContent\n ref={contentRef}\n $open={open}\n $position={position}\n className={css('content', classnames?.content)}\n style={{ top: portalPosition.top, left: portalPosition.left }}\n >\n {children}\n </StyledPortalContent>,\n portalRenderNode,\n )\n ) : (\n <StyledContent\n ref={contentRef}\n $align={align}\n $open={open}\n $position={position}\n className={css('content', classnames?.content)}\n >\n {children}\n </StyledContent>\n )\n\n return (\n <StyledContainer {...rest} ref={ref ?? containerRef} className={css('container', className)}>\n <StyledTrigger\n ref={triggerRef}\n onClick={handleToggle}\n className={css('trigger', classnames?.trigger)}\n >\n {cloneElement(trigger)}\n </StyledTrigger>\n {content}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: inline-flex;\n align-items: center;\n gap: 8px;\n`\n\ntype StyledTextProps = {\n $isEmpty?: boolean\n}\n\nexport const StyledText = styled.span<StyledTextProps>`\n font-size: 14px;\n line-height: 1.4;\n color: ${({ $isEmpty }) => ($isEmpty ? COLORS['iron-grey'] : COLORS.black)};\n opacity: ${({ $isEmpty }) => ($isEmpty ? 0.6 : 1)};\n outline: none;\n\n &[contenteditable='true'] {\n cursor: text;\n }\n`\n\ntype StyledButtonProps = {\n $disabled?: boolean\n}\n\nexport const StyledButton = styled.button<StyledButtonProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n padding: 0;\n background: transparent;\n border: none;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n color: ${({ $disabled }) => ($disabled ? COLORS.gray : COLORS['iron-grey'])};\n opacity: ${({ $disabled }) => ($disabled ? 0.5 : 0.7)};\n transition: opacity 0.2s ease-in-out;\n\n &:hover {\n opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};\n }\n`\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { StyledButton, StyledContainer, StyledText } from './styled'\nimport type { EditableTextProps } from './types'\nimport { Check, Pencil } from '../../icons/Lucide'\n\nexport const EditableText = ({\n value,\n onChange,\n disabled = false,\n placeholder,\n className,\n classnames,\n 'data-test-id': dataTestId,\n}: EditableTextProps) => {\n const [isEditing, setIsEditing] = useState(false)\n const containerRef = useRef<HTMLDivElement>(null)\n const textRef = useRef<HTMLSpanElement>(null)\n\n const save = useCallback(() => {\n setIsEditing(false)\n const newValue = textRef.current?.textContent || ''\n if (newValue !== value) {\n onChange(newValue)\n }\n }, [onChange, value])\n\n useEffect(() => {\n if (isEditing && textRef.current) {\n textRef.current.focus()\n // Move cursor to end\n const range = document.createRange()\n const selection = window.getSelection()\n range.selectNodeContents(textRef.current)\n range.collapse(false)\n selection?.removeAllRanges()\n selection?.addRange(range)\n }\n }, [isEditing])\n\n useEffect(() => {\n if (!isEditing) return\n\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n save()\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [isEditing, save])\n\n const handleEditClick = () => {\n if (disabled) return\n setIsEditing(true)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLSpanElement>) => {\n if (e.key === 'Enter' && e.metaKey) {\n e.preventDefault()\n save()\n } else if (e.key === 'Escape') {\n if (textRef.current) {\n textRef.current.textContent = value\n }\n setIsEditing(false)\n }\n }\n\n return (\n <StyledContainer ref={containerRef} className={className} data-test-id={dataTestId}>\n <StyledText\n ref={textRef}\n className={classnames?.text}\n contentEditable={isEditing}\n suppressContentEditableWarning\n onKeyDown={handleKeyDown}\n $isEmpty={!value}\n >\n {value || placeholder}\n </StyledText>\n <StyledButton\n type=\"button\"\n className={classnames?.button}\n $disabled={disabled && !isEditing}\n onClick={isEditing ? save : handleEditClick}\n disabled={disabled && !isEditing}\n aria-label={isEditing ? 'Save' : 'Edit'}\n >\n {isEditing ? <Check size={16} /> : <Pencil size={14} />}\n </StyledButton>\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { FieldMessageVariant } from './types'\nimport { COLORS } from '../../lib'\n\nconst VARIANT_COLORS: Record<FieldMessageVariant, string> = {\n normal: COLORS['iron-grey'],\n error: COLORS['red'],\n success: COLORS['green'],\n warning: COLORS['yellow'],\n}\n\nexport const StyledFieldMessage = styled.span<{ $variant: FieldMessageVariant }>`\n display: block;\n font-size: 12px;\n font-weight: 500;\n line-height: 1.4;\n color: ${(props) => VARIANT_COLORS[props.$variant]};\n`\n","import { StyledFieldMessage } from './styled'\nimport { FieldMessageProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('field-message')\n\nexport const FieldMessage = ({\n children,\n className,\n ref,\n variant = 'normal',\n ...rest\n}: FieldMessageProps) => {\n if (!children) {\n return null\n }\n\n return (\n <StyledFieldMessage\n {...rest}\n ref={ref}\n className={css('container', className)}\n $variant={variant}\n >\n {children}\n </StyledFieldMessage>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n`\n\nexport const StyledPreview = styled.div<{ $size: number }>`\n width: ${({ $size }) => $size}px;\n height: ${({ $size }) => $size}px;\n border-radius: 8px;\n border: 1px dashed ${COLORS.gray};\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${COLORS.white};\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n`\n\nexport const StyledPlaceholder = styled.span`\n font-size: 12px;\n color: ${COLORS['iron-grey']};\n`\n","const S = (e) => `\n .${e} {\n padding: 7px 16px;\n font-size: 14px;\n outline: 0;\n border: 0;\n background-color: #2F7FEF;\n color: #FFFFFF;\n border-radius: 20px;\n user-select: none;\n cursor: pointer;\n -moz-user-select: none;\n -webkit-user-select: none;\n }\n\n .${e}:active {\n transform: translate(0, 1px);\n }\n`, F = (e) => `\n .${e} {\n display: flex;\n flex: 1 1 auto;\n background: #33393F;\n overflow: hidden;\n align-items: center;\n justify-content: center;\n position: relative;\n width: 500px;\n height: 500px;\n max-width: 100%;\n max-height: 60vh;\n min-height: 250px;\n }\n\n @media (max-width: 540px) {\n .${e} {\n width: 100%;\n height: auto;\n aspect-ratio: 1;\n max-height: 70vh;\n }\n }\n`, M = (e) => `\n .${e} {\n padding: 7px 16px;\n font-size: 14px;\n outline: 0;\n border: 0;\n background-color: #E8EFF7;\n color: #768BA7;\n border-radius: 20px;\n cursor: pointer;\n user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n }\n\n .${e}:active {\n transform: translate(0, 1px);\n }\n`, T = (e) => `\n .${e} {\n display: flex;\n flex-direction: column;\n background-color: #FFFFFF;\n border-radius: 6px;\n box-shadow: 0 4px 16px rgba(77, 96, 124, 0.2);\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n }\n\n @media (max-width: 540px) {\n .${e} {\n width: 100%;\n border-radius: 8px;\n }\n }\n`, k = (e) => `\n .${e} {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n align-items: center;\n height: 60px;\n flex: 0 0 auto;\n padding: 0 20px;\n border-top: 1px solid #EEE;\n }\n\n @media (max-width: 540px) {\n .${e} {\n height: 56px;\n padding: 0 12px;\n gap: 8px;\n }\n }\n`, N = (e) => `\n .${e} {\n display: flex;\n justify-content: flex-start;\n gap: 10px;\n align-items: center;\n height: 60px;\n flex: 0 0 auto;\n padding: 0 20px;\n border-top-left-radius: 6px;\n border-top-right-radius: 6px;\n border-bottom: 1px solid #EEE;\n overflow: hidden;\n }\n\n @media (max-width: 540px) {\n .${e} {\n height: 48px;\n padding: 0 12px;\n font-size: 14px;\n }\n }\n`, Y = (e) => `\n .${e} {\n display: block;\n z-index: 101;\n outline: 1px dashed #aaa;\n background-color: transparent;\n cursor: move;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n position: absolute;\n touch-action: none;\n }\n`, X = (e) => `\n .${e} {\n position: absolute;\n z-index: 2;\n background-color: rgba(0, 0, 0, 0.6);\n touch-action: none;\n }\n`, _ = (e) => `\n .${e} {\n position: absolute;\n z-index: 3;\n touch-action: none;\n }\n`, Z = (e) => `\n .${e} {\n backface-visibility: hidden;\n perspective: 1000px;\n max-inline-size: unset !important;\n max-block-size: unset !important;\n }\n`, H = (e) => `\n .${e} {\n position: absolute;\n z-index: 100;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n overflow: hidden;\n border-radius: 50%;\n }\n`, q = {\n tl: \"nw-resize\",\n tr: \"ne-resize\",\n bl: \"sw-resize\",\n br: \"se-resize\"\n}, j = {\n tl: { h: \"left\", v: \"top\" },\n tr: { h: \"right\", v: \"top\" },\n bl: { h: \"left\", v: \"bottom\" },\n br: { h: \"right\", v: \"bottom\" }\n}, R = (e, t) => {\n const o = q[t], { h: i, v: n } = j[t];\n return `\n .${e} {\n display: block;\n z-index: 102;\n background-color: rgba(255, 255, 255, .6);\n cursor: ${o};\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n ${i}: -3px;\n ${n}: -3px;\n position: absolute;\n width: 5px;\n height: 5px;\n touch-action: none;\n }\n\n @media (max-width: 540px), (pointer: coarse) {\n .${e} {\n width: 24px;\n height: 24px;\n ${i}: -12px;\n ${n}: -12px;\n }\n }\n`;\n}, D = (e) => `\n .${e} {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: rgba(0, 0, 0, .4);\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n position: fixed;\n left: 0;\n top: 0;\n z-index: 1000;\n overflow-y: auto;\n box-sizing: border-box;\n padding: 16px;\n }\n\n @media (max-width: 540px) {\n .${e} {\n padding: 8px;\n align-items: flex-start;\n padding-top: env(safe-area-inset-top, 8px);\n padding-bottom: env(safe-area-inset-bottom, 8px);\n }\n }\n`, V = (e) => `\n .${e} {\n backface-visibility: hidden;\n user-select: none;\n perspective: 1000px;\n overflow: hidden;\n display: block;\n transform: translateZ(0);\n width: auto;\n -webkit-user-drag: none;\n position: absolute;\n z-index: 1;\n }\n`, O = (e) => {\n let t = 5381;\n for (let o = 0; o < e.length; o++)\n t = (t << 5) + t ^ e.charCodeAt(o);\n return Math.abs(t).toString(36);\n}, g = (e) => `hq-cropper__${O(e)}`, x = (e) => e || [], b = (e, t) => {\n if (t)\n for (const o of t)\n e.classList.add(o);\n}, W = (e) => {\n const t = {\n applyButton: [\n g(\"applyButton\"),\n ...x(e.applyButton)\n ],\n cancelButton: [\n g(\"cancelButton\"),\n ...x(e.cancelButton)\n ],\n container: [\n g(\"container\"),\n ...x(e.container)\n ],\n handlerMove: [\n g(\"handlerMove\"),\n ...x(e.handlerMove)\n ],\n handlerResizeTopLeft: [\n g(\"handlerResizeTopLeft\"),\n ...x(e.handlerResizeTopLeft)\n ],\n handlerResizeTopRight: [\n g(\"handlerResizeTopRight\"),\n ...x(e.handlerResizeTopRight)\n ],\n handlerResizeBottomLeft: [\n g(\"handlerResizeBottomLeft\"),\n ...x(e.handlerResizeBottomLeft)\n ],\n handlerResizeBottomRight: [\n g(\"handlerResizeBottomRight\"),\n ...x(e.handlerResizeBottomRight)\n ],\n sourceImage: [\n g(\"sourceImage\"),\n ...x(e.sourceImage)\n ],\n portalArea: [\n g(\"portalArea\"),\n ...x(e.portalArea)\n ],\n previewImage: [\n g(\"previewImage\"),\n ...x(e.previewImage)\n ],\n body: [g(\"body\"), ...x(e.body)],\n header: [g(\"header\"), ...x(e.header)],\n footer: [g(\"footer\"), ...x(e.footer)],\n portal: [g(\"portal\"), ...x(e.portal)],\n preview: [g(\"preview\"), ...x(e.preview)],\n root: [g(\"root\"), ...x(e.root)]\n }, o = `\n ${S(t.applyButton[0])}\n ${F(t.body[0])}\n ${M(t.cancelButton[0])}\n ${T(t.container[0])}\n ${k(t.footer[0])}\n ${N(t.header[0])}\n ${Y(t.handlerMove[0])}\n ${X(t.portalArea[0])}\n ${_(t.portal[0])}\n ${Z(t.previewImage[0])}\n ${H(t.preview[0])}\n ${R(t.handlerResizeBottomLeft[0], \"bl\")}\n ${R(t.handlerResizeBottomRight[0], \"br\")}\n ${R(t.handlerResizeTopLeft[0], \"tl\")}\n ${R(t.handlerResizeTopRight[0], \"tr\")}\n ${D(t.root[0])}\n ${V(t.sourceImage[0])}\n `, i = document.createElement(\"style\");\n return i.innerHTML = o, document.getElementsByTagName(\"head\")[0].prepend(i), t;\n};\nlet U = 0;\nconst K = (e) => {\n const t = /* @__PURE__ */ new Map(), o = new Proxy(\n { ...e },\n {\n set(a, l, s) {\n return Reflect.set(a, l, s), (t.get(l) || []).forEach(\n (u) => u.action(s, a, l)\n ), !0;\n }\n }\n );\n return { getState: () => ({ ...o }), setState: (a) => {\n for (const l of Object.keys(\n a\n )) {\n const s = a[l];\n s !== void 0 && (o[l] = s);\n }\n }, subscribe: (a, l) => {\n const s = String(++U), c = t.get(a) || [];\n return t.set(a, [\n ...c,\n {\n action: l,\n id: s\n }\n ]), s;\n }, unsubscribe: (a) => {\n for (const [l, s] of t.entries()) {\n const c = s.filter((u) => u.id !== a);\n if (c.length !== s.length) {\n t.set(l, c);\n return;\n }\n }\n }, unsubscribeAll: () => {\n t.clear();\n } };\n}, C = {\n action: null,\n sourceBase64: \"\",\n fileName: \"\",\n sourceHeight: 0,\n sourceWidth: 0,\n frame: {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n },\n portal: {\n left: 0,\n top: 0,\n size: 0\n },\n emitted: {\n X: 0,\n Y: 0,\n left: 0,\n top: 0,\n size: 0\n },\n config: {\n applyButtonLabel: \"Apply\",\n cancelButtonLabel: \"Cancel\",\n compression: 1,\n framePadding: 3,\n minPortalSize: 50,\n portalPosition: \"center\",\n portalSize: 150,\n outputSize: 0,\n type: \"jpeg\",\n maxFileSize: 0,\n allowedTypes: [\"image/jpeg\", \"image/png\", \"image/gif\", \"image/webp\"]\n }\n}, G = (e = {}, t = {}) => K({\n ...C,\n config: { ...C.config, ...e },\n css: W(t)\n}), J = (e, t) => {\n const o = e(), i = document.querySelector(\n `.${o.css?.body[0]}`\n );\n if (!i)\n return o.frame;\n const { width: n, height: d } = i.getBoundingClientRect(), p = n / d, r = t.width / t.height;\n let a, l, s = 0, c = 0;\n return p > r ? (a = d * r, l = d, c = (n - a) / 2) : (a = n, l = n * (t.height / t.width), s = (d - l) / 2), {\n width: a,\n height: l,\n left: c,\n top: s\n };\n}, Q = (e, t, o) => {\n const [i, n] = t, d = i + e > o.width ? (o.width - e) / 2 : i, p = n + e > o.height ? (o.height - e) / 2 : n;\n return [d, p];\n}, ee = (e, t) => {\n const { config: o } = e(), i = Math.min(t.width, t.height) - o.framePadding * 2, n = o.portalSize > i ? i : o.portalSize;\n if (Array.isArray(o.portalPosition) && o.portalPosition.length === 2) {\n const [d, p] = Q(\n n,\n o.portalPosition,\n t\n );\n return {\n left: d,\n top: p,\n size: n\n };\n }\n return o.portalPosition === \"center\" ? {\n size: n,\n left: (t.width - n) / 2,\n top: (t.height - n) / 2\n } : {\n left: 0,\n top: 0,\n size: n\n };\n};\nvar v = /* @__PURE__ */ ((e) => (e.MOVE = \"MOVE\", e.RESIZE_TL = \"RESIZE_TL\", e.RESIZE_TR = \"RESIZE_TR\", e.RESIZE_BR = \"RESIZE_BR\", e.RESIZE_BL = \"RESIZE_BL\", e))(v || {});\nconst te = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerMove), o.setAttribute(\"data-action\", v.MOVE), o;\n}, oe = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerResizeBottomLeft), o.setAttribute(\"data-action\", v.RESIZE_BL), o;\n}, ne = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerResizeBottomRight), o.setAttribute(\"data-action\", v.RESIZE_BR), o;\n}, ie = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerResizeTopLeft), o.setAttribute(\"data-action\", v.RESIZE_TL), o;\n}, re = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerResizeTopRight), o.setAttribute(\"data-action\", v.RESIZE_TR), o;\n}, se = (e) => {\n const t = e(), o = document.createElement(\"img\");\n return b(o, t.css?.previewImage), o;\n}, ae = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.preview), o.appendChild(se(e)), o;\n}, le = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.portal), o.appendChild(ae(e)), o.appendChild(te(e)), o.appendChild(ie(e)), o.appendChild(re(e)), o.appendChild(oe(e)), o.appendChild(ne(e)), o;\n}, ce = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.portalArea), o.appendChild(le(e)), o;\n}, de = (e) => {\n const t = e(), o = document.createElement(\"img\");\n return b(o, t.css?.sourceImage), o.setAttribute(\"alt\", \"source\"), o.setAttribute(\"crossOrigin\", \"anonymous\"), o.setAttribute(\"draggable\", \"false\"), o.setAttribute(\"src\", t.sourceBase64), o;\n}, pe = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.body), o.appendChild(de(e)), o.appendChild(ce(e)), o;\n}, ue = (e, t) => {\n const o = e(), i = document.createElement(\"div\");\n return b(i, o.css?.applyButton), i.setAttribute(\"role\", \"button\"), i.innerText = o.config.applyButtonLabel, i.addEventListener(\"click\", t), i;\n}, me = (e, t) => {\n const o = e(), i = document.createElement(\"div\");\n return b(i, o.css?.cancelButton), i.setAttribute(\"role\", \"button\"), i.innerText = o.config.cancelButtonLabel, i.addEventListener(\"click\", t), i;\n}, he = (e, t, o) => {\n const i = e(), n = document.createElement(\"div\");\n return b(n, i.css?.footer), n.appendChild(me(e, o)), n.appendChild(ue(e, t)), n;\n}, fe = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.header), o;\n}, ge = (e, t, o) => {\n const i = e(), n = document.createElement(\"div\");\n return b(n, i.css?.container), n.appendChild(fe(e)), n.appendChild(pe(e)), n.appendChild(he(e, t, o)), n;\n}, xe = (e, t, o) => {\n const i = e(), n = document.createElement(\"div\");\n b(n, i.css?.root), n.appendChild(ge(e, t, o)), document.body.appendChild(n);\n}, be = (e) => {\n const t = document.createElement(\"input\");\n return t.style.display = \"none\", t.setAttribute(\"type\", \"file\"), t.setAttribute(\"accept\", \"image/x-png,image/jpeg\"), t.addEventListener(\"change\", e, !1), document.body.appendChild(t), t;\n}, $ = /* @__PURE__ */ new Map(), ye = {\n header: \"header\",\n sourceImage: \"sourceImage\",\n portalArea: \"portalArea\",\n portal: \"portal\",\n previewImage: \"previewImage\"\n}, E = (e, t) => {\n if ($.has(e))\n return $.get(e);\n if (!t)\n return null;\n const o = t[ye[e]], i = document.querySelector(\n `.${o[0]}`\n );\n return $.set(e, i), i;\n}, ve = () => {\n $.clear();\n}, ze = () => {\n $.clear();\n}, we = (e, t) => {\n const o = E(\"header\", t.css);\n o && (o.innerText = e);\n}, Ee = (e, t) => {\n const o = E(\"sourceImage\", t.css);\n o && (o.setAttribute(\"src\", e), o.style.height = `${t.frame.height}px`, o.style.width = `${t.frame.width}px`, o.style.left = `${t.frame.left}px`, o.style.top = `${t.frame.top}px`);\n const i = E(\"portalArea\", t.css);\n i && (i.style.height = `${t.frame.height}px`, i.style.width = `${t.frame.width}px`, i.style.left = `${t.frame.left}px`, i.style.top = `${t.frame.top}px`);\n const n = E(\"portal\", t.css);\n n && (n.style.width = `${t.portal.size}px`, n.style.height = `${t.portal.size}px`, n.style.left = `${t.portal.left}px`, n.style.top = `${t.portal.top}px`);\n const d = E(\"previewImage\", t.css);\n d && (d.setAttribute(\"src\", e), d.style.height = `${t.frame.height}px`, d.style.width = `${t.frame.width}px`, d.style.marginLeft = `-${t.portal.left}px`, d.style.marginTop = `-${t.portal.top}px`);\n}, $e = (e, t) => {\n const o = E(\"portal\", t.css);\n o && (o.style.left = `${e.left}px`, o.style.top = `${e.top}px`, o.style.width = `${e.size}px`, o.style.height = `${e.size}px`);\n const i = E(\"previewImage\", t.css);\n i && (i.style.marginLeft = `-${e.left}px`, i.style.marginTop = `-${e.top}px`);\n}, L = 1, Re = (e) => {\n const t = e(), o = document.createElement(\"canvas\"), i = t.frame.width || L, n = t.frame.height || L, d = t.sourceWidth / i, p = t.sourceHeight / n, r = t.portal.left * d, a = t.portal.top * p, l = Math.max(\n t.portal.size * Math.min(d, p),\n L\n ), s = t.config.outputSize > 0 ? t.config.outputSize : l;\n o.width = s, o.height = s;\n const c = document.querySelector(\n `.${t.css?.sourceImage[0]}`\n );\n c && o.getContext(\"2d\")?.drawImage(\n c,\n r,\n a,\n l,\n l,\n 0,\n 0,\n s,\n s\n );\n const u = o.toDataURL(\n `image/${t.config.type}`,\n t.config.compression\n );\n return new Promise((m, f) => {\n try {\n o.toBlob(\n (z) => {\n if (o.remove(), !z) {\n f(\n new Error(\n `Failed to create blob for type: image/${t.config.type}`\n )\n );\n return;\n }\n m([u, z]);\n },\n `image/${t.config.type}`,\n t.config.compression\n );\n } catch (z) {\n o.remove(), f(z);\n }\n });\n}, Pe = (e, t, o) => {\n const { emitted: i, portal: n, frame: d, config: p } = t();\n let r = i.left - i.X + e.clientX, a = i.top - i.Y + e.clientY;\n const l = p.framePadding, s = d.width - p.framePadding - n.size, c = p.framePadding, u = d.height - p.framePadding - n.size;\n r < l && (r = l), r > s && (r = s), a < c && (a = c), a > u && (a = u), o({\n portal: {\n ...n,\n left: r,\n top: a\n }\n });\n}, Be = (e, t, o) => {\n const { action: i, emitted: n, portal: d, frame: p, config: r } = t(), a = e.pageX - n.X, l = e.pageY - n.Y;\n switch (i) {\n case v.RESIZE_BR: {\n let s = n.size + Math.max(a, l);\n return s < r.minPortalSize && (s = r.minPortalSize), n.top + s > p.height - r.framePadding && (s = p.height - n.top - r.framePadding), n.left + s > p.width - r.framePadding && (s = p.width - n.left - r.framePadding), o({\n portal: {\n ...d,\n size: s\n }\n });\n }\n case v.RESIZE_TR: {\n let s = a + l > 0 ? n.size + a : n.size - l, c = a + l > 0 ? n.top - a : n.top + l;\n return s < r.minPortalSize && (c = n.top + n.size - r.minPortalSize, s = r.minPortalSize), n.left + s > p.width - r.framePadding && (s = p.width - n.left - r.framePadding, c = n.top - p.width + n.left + n.size), c < r.framePadding && (s = n.top + n.size, c = r.framePadding), o({\n portal: {\n ...d,\n top: c,\n size: s\n }\n });\n }\n case v.RESIZE_TL: {\n const s = Math.min(a, l);\n let c = n.size - s, u = n.left + s, m = n.top + s;\n if (c < r.minPortalSize) {\n const f = n.size - r.minPortalSize;\n c = r.minPortalSize, u = n.left + f, m = n.top + f;\n }\n if (m < r.framePadding) {\n const f = r.framePadding - m;\n m = r.framePadding, u = u + f, c = c - f;\n }\n if (u < r.framePadding) {\n const f = r.framePadding - u;\n u = r.framePadding, m = m + f, c = c - f;\n }\n return o({\n portal: {\n ...d,\n top: m,\n left: u,\n size: c\n }\n });\n }\n case v.RESIZE_BL: {\n let s = a + l > 0 ? n.size + l : n.size - a, c = a + l > 0 ? n.left - l : n.left + a;\n return s < r.minPortalSize && (c = n.left + n.size - r.minPortalSize, s = r.minPortalSize), s + n.top > p.height - r.framePadding && (c = n.left - p.height + n.top + n.size, s = p.height - n.top - r.framePadding), c < r.framePadding && (c = r.framePadding, s = n.left + n.size - r.framePadding), o({\n portal: {\n ...d,\n left: c,\n size: s\n }\n });\n }\n default:\n return;\n }\n}, I = (e) => {\n if (\"touches\" in e && e.touches.length > 0) {\n const o = e.touches[0];\n return {\n clientX: o.clientX,\n clientY: o.clientY,\n pageX: o.pageX,\n pageY: o.pageY\n };\n }\n if (\"changedTouches\" in e && e.changedTouches.length > 0) {\n const o = e.changedTouches[0];\n return {\n clientX: o.clientX,\n clientY: o.clientY,\n pageX: o.pageX,\n pageY: o.pageY\n };\n }\n const t = e;\n return {\n clientX: t.clientX,\n clientY: t.clientY,\n pageX: t.pageX,\n pageY: t.pageY\n };\n}, Le = (e, t) => {\n const o = e(), i = document.querySelector(\n `.${o.css?.portal[0]}`\n ), n = document.querySelector(\n `.${o.css?.portalArea[0]}`\n ), d = document.querySelector(\n `.${o.css?.root[0]}`\n );\n let p = null, r = null;\n const a = (u) => {\n u.preventDefault();\n const { portal: m } = e(), f = I(u);\n if (u.target) {\n const P = u.target.getAttribute(\"data-action\"), h = {\n X: f.pageX,\n Y: f.pageY,\n left: m.left,\n top: m.top,\n size: m.size\n };\n t({\n action: P,\n emitted: h\n });\n }\n }, l = () => {\n const { action: u } = e();\n p !== null && (cancelAnimationFrame(p), p = null), r = null, u && t({\n action: null\n });\n }, s = () => {\n if (p = null, !r)\n return;\n const u = r;\n r = null;\n const { action: m } = e();\n if (m)\n switch (m) {\n case v.MOVE:\n Pe(u, e, t);\n break;\n default:\n Be(u, e, t);\n }\n }, c = (u) => {\n const { action: m } = e();\n m && (u.preventDefault(), r = I(u), p === null && (p = requestAnimationFrame(s)));\n };\n return d && (d.addEventListener(\"mouseup\", l), d.addEventListener(\"touchend\", l), d.addEventListener(\"touchcancel\", l)), i && (i.addEventListener(\"mousedown\", a), i.addEventListener(\"touchstart\", a, {\n passive: !1\n })), n && (n.addEventListener(\"mousemove\", c), n.addEventListener(\"touchmove\", c, {\n passive: !1\n })), () => {\n p !== null && cancelAnimationFrame(p), d && (d.removeEventListener(\"mouseup\", l), d.removeEventListener(\"touchend\", l), d.removeEventListener(\"touchcancel\", l)), i && (i.removeEventListener(\"mousedown\", a), i.removeEventListener(\"touchstart\", a)), n && (n.removeEventListener(\n \"mousemove\",\n c\n ), n.removeEventListener(\n \"touchmove\",\n c\n ));\n };\n}, A = 1024 * 1024, Ce = (e, t) => {\n if (!t.allowedTypes.includes(e.type))\n return `Invalid file type \"${e.type}\". Allowed types: ${t.allowedTypes.join(\", \")}`;\n if (t.maxFileSize > 0 && e.size > t.maxFileSize) {\n const o = (t.maxFileSize / A).toFixed(2);\n return `File size (${(e.size / A).toFixed(2)}MB) exceeds maximum allowed size (${o}MB)`;\n }\n return null;\n}, Ie = (e, t, o, i, n, d, p) => {\n const r = (h) => {\n p ? p(h) : console.error(`HqCropper: ${h}`);\n };\n if (!e.target.files || e.target.files.length === 0) {\n r(\"Can't read file input\");\n return;\n }\n const a = e.target.files[0], { config: l } = t(), s = Ce(a, l);\n if (s) {\n r(s), e.target.value = \"\";\n return;\n }\n const c = new FileReader();\n let u = null;\n const m = () => {\n const h = t(), y = document.querySelector(\n `.${h.css?.root[0]}`\n );\n y && (y.remove(), document.removeEventListener(\"keydown\", f), u?.(), ze(), d(), o(C));\n }, f = (h) => {\n h.key === \"Escape\" && t().sourceBase64 && z(h);\n }, z = (h) => {\n h.preventDefault(), m();\n }, P = (h) => {\n h.preventDefault();\n const y = t();\n Re(t).then(([w, B]) => {\n i(w, B, y), z(h);\n }).catch((w) => {\n r(\n w instanceof Error ? w.message : \"Failed to crop image\"\n );\n });\n };\n c.onload = (h) => {\n const y = new Image();\n if (!h.target || typeof h.target.result != \"string\") {\n r(\"Can't load result image\");\n return;\n }\n y.src = h.target.result, y.onerror = () => {\n r(\"Failed to load image\");\n }, y.onload = () => {\n xe(t, P, z), ve(), n(\"fileName\", we), n(\"sourceBase64\", Ee), n(\"portal\", $e);\n const w = J(t, y), B = ee(t, w);\n o({\n frame: w,\n portal: B,\n fileName: a.name,\n sourceBase64: h.target?.result,\n sourceHeight: y.height,\n sourceWidth: y.width\n }), u = Le(t, o), document.addEventListener(\"keydown\", f);\n };\n }, c.onerror = () => {\n r(\"Failed to read file\");\n }, c.readAsDataURL(a), e.target.value = \"\";\n}, Ae = (e, t, o, i) => {\n const { getState: n, setState: d, subscribe: p, unsubscribeAll: r } = G(\n t,\n o\n ), a = be(\n (l) => Ie(\n l,\n n,\n d,\n e,\n p,\n r,\n i\n )\n );\n return {\n open: () => a.click()\n };\n};\nexport {\n Ae as HqCropper\n};\n//# sourceMappingURL=index.js.map\n","import { COLORS } from '../../lib'\n\nexport const DEFAULT_CONFIG = {\n portalSize: 200,\n outputSize: 400,\n compression: 0.9,\n type: 'jpeg' as const,\n maxFileSize: 10 * 1024 * 1024, // 10MB\n allowedTypes: ['image/jpeg', 'image/png', 'image/webp'],\n applyLabel: 'Apply',\n cancelLabel: 'Cancel',\n}\n\nconst STYLE_ID = 'vacano-image-cropper-styles'\n\nconst CUSTOM_STYLES = `\n .vacano-cropper-root {\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n }\n\n .vacano-cropper-header {\n border-bottom: 1px solid ${COLORS.gray};\n padding: 16px 20px;\n }\n\n .vacano-cropper-footer {\n border-top: 1px solid ${COLORS.gray};\n padding: 16px 20px;\n gap: 12px;\n }\n\n .vacano-cropper-cancel-button {\n padding: 8px 16px;\n border-radius: 16px;\n border: 1px solid ${COLORS.gray};\n background-color: ${COLORS.white};\n color: ${COLORS.black};\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.2s;\n }\n\n .vacano-cropper-cancel-button:hover {\n background-color: ${COLORS.gray};\n }\n\n .vacano-cropper-apply-button {\n padding: 8px 16px;\n border-radius: 16px;\n border: none;\n background-color: ${COLORS.black};\n color: ${COLORS.white};\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.2s;\n }\n\n .vacano-cropper-apply-button:hover {\n background-color: ${COLORS['iron-grey']};\n }\n`\n\nexport const injectCropperStyles = (): void => {\n if (typeof document === 'undefined') return\n if (document.getElementById(STYLE_ID)) return\n\n const style = document.createElement('style')\n style.id = STYLE_ID\n style.textContent = CUSTOM_STYLES\n document.head.appendChild(style)\n}\n\nexport const CROPPER_CSS = {\n root: ['vacano-cropper-root'],\n container: ['vacano-cropper-container'],\n header: ['vacano-cropper-header'],\n body: ['vacano-cropper-body'],\n footer: ['vacano-cropper-footer'],\n cancelButton: ['vacano-cropper-cancel-button'],\n applyButton: ['vacano-cropper-apply-button'],\n portal: ['vacano-cropper-portal'],\n}\n","import { useCallback, useRef } from 'react'\n\nimport { HqCropper } from 'hq-cropper'\n\nimport { CROPPER_CSS, DEFAULT_CONFIG, injectCropperStyles } from './constants'\nimport { ImageCropperState, UseImageCropperOptions, UseImageCropperReturn } from './types'\n\ntype CropperInstance = {\n open: () => void\n}\n\nexport const useImageCropper = (options: UseImageCropperOptions = {}): UseImageCropperReturn => {\n const {\n allowedTypes = DEFAULT_CONFIG.allowedTypes,\n applyLabel = DEFAULT_CONFIG.applyLabel,\n cancelLabel = DEFAULT_CONFIG.cancelLabel,\n compression = DEFAULT_CONFIG.compression,\n maxFileSize = DEFAULT_CONFIG.maxFileSize,\n onCrop,\n onError,\n outputSize = DEFAULT_CONFIG.outputSize,\n portalSize = DEFAULT_CONFIG.portalSize,\n type = DEFAULT_CONFIG.type,\n } = options\n\n const cropperRef = useRef<CropperInstance | null>(null)\n\n const open = useCallback(() => {\n if (!cropperRef.current) {\n injectCropperStyles()\n cropperRef.current = HqCropper(\n (base64: string, blob: Blob | null, state: ImageCropperState) => {\n if (blob) {\n onCrop?.({ base64, blob, state })\n }\n },\n {\n portalSize,\n outputSize,\n compression,\n type,\n maxFileSize,\n allowedTypes,\n applyButtonLabel: applyLabel,\n cancelButtonLabel: cancelLabel,\n },\n CROPPER_CSS,\n (message: string) => {\n onError?.({ code: 'CROPPER_ERROR', message })\n },\n )\n }\n\n cropperRef.current.open()\n }, [\n allowedTypes,\n applyLabel,\n cancelLabel,\n compression,\n maxFileSize,\n onCrop,\n onError,\n outputSize,\n portalSize,\n type,\n ])\n\n return { open }\n}\n","import { useState } from 'react'\n\nimport { StyledContainer, StyledPlaceholder, StyledPreview } from './styled'\nimport { ImageCropperProps } from './types'\nimport { Button } from '../Button'\nimport { useImageCropper } from '../../hooks/useImageCropper'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('image-cropper')\n\nexport const ImageCropper = ({\n allowedTypes,\n applyLabel,\n buttonLabel = 'Select Image',\n cancelLabel,\n className,\n classnames,\n compression,\n maxFileSize,\n onCrop,\n onError,\n outputSize,\n portalSize,\n previewSize = 120,\n ref,\n type,\n value,\n ...rest\n}: ImageCropperProps) => {\n const [preview, setPreview] = useState<string | null>(value ?? null)\n\n const { open } = useImageCropper({\n allowedTypes,\n applyLabel,\n cancelLabel,\n compression,\n maxFileSize,\n onCrop: (result) => {\n setPreview(result.base64)\n onCrop?.(result)\n },\n onError,\n outputSize,\n portalSize,\n type,\n })\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n <StyledPreview $size={previewSize} className={css('preview', classnames?.preview)}>\n {preview ? (\n <img src={preview} alt=\"Preview\" />\n ) : (\n <StyledPlaceholder>No image</StyledPlaceholder>\n )}\n </StyledPreview>\n <Button\n variant=\"system\"\n onClick={open}\n className={css('button', classnames?.button)}\n style={{ width: previewSize }}\n >\n {buttonLabel}\n </Button>\n </StyledContainer>\n )\n}\n","import { InputVariant } from './types'\nimport { alpha, COLORS, VacanoComponentSize, VacanoInteractiveElementState } from '../../lib'\n\nexport const INPUT_SIZE_PROPS: Record<\n VacanoComponentSize,\n {\n height: string\n padding: string\n radius: string\n prefixSize: string\n }\n> = {\n compact: {\n height: '32px',\n padding: '0 10px',\n radius: '14px',\n prefixSize: '16px',\n },\n default: {\n height: '40px',\n padding: '0 14px',\n radius: '16px',\n prefixSize: '20px',\n },\n}\n\nexport const INPUT_VARIANT_PROPS: Record<\n InputVariant,\n {\n border: VacanoInteractiveElementState\n background: VacanoInteractiveElementState\n color: VacanoInteractiveElementState\n placeholder: VacanoInteractiveElementState\n focus: string\n }\n> = {\n normal: {\n background: {\n static: alpha(COLORS['black'], 2),\n disabled: alpha(COLORS['black'], 10),\n },\n border: {\n static: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 10),\n },\n color: {\n static: COLORS['black'],\n disabled: alpha(COLORS['black'], 65),\n },\n placeholder: {\n static: alpha(COLORS['black'], 40),\n disabled: alpha(COLORS['black'], 65),\n },\n focus: alpha(COLORS['iron-grey'], 30),\n },\n error: {\n background: {\n static: alpha(COLORS['red'], 2),\n disabled: alpha(COLORS['red'], 10),\n },\n border: {\n static: alpha(COLORS['red'], 60),\n disabled: alpha(COLORS['red'], 10),\n },\n color: {\n static: COLORS['red'],\n disabled: alpha(COLORS['red'], 65),\n },\n placeholder: {\n static: alpha(COLORS['red'], 40),\n disabled: alpha(COLORS['red'], 65),\n },\n focus: alpha(COLORS['red'], 30),\n },\n}\n","import { INPUT_SIZE_PROPS, INPUT_VARIANT_PROPS } from './constants'\nimport { InputVariant } from './types'\nimport { VacanoComponentSize } from '../../lib'\n\nexport const getInputVariantProps = (variant: InputVariant) => {\n return INPUT_VARIANT_PROPS[variant] ?? INPUT_VARIANT_PROPS['normal']\n}\n\nexport const getInputSizeProps = (size: VacanoComponentSize) => {\n return INPUT_SIZE_PROPS[size] ?? INPUT_SIZE_PROPS['default']\n}\n","import styled from '@emotion/styled'\n\nimport { getInputSizeProps, getInputVariantProps } from './helpers'\nimport { InputVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { VacanoComponentSize } from '../../lib'\n\ntype StyledInputContainerProps = {\n $size: VacanoComponentSize\n $variant: InputVariant\n}\n\nexport const StyledInputContainer = styled.div<{ $fullWidth: boolean }>`\n display: grid;\n flex-direction: column;\n gap: 2px;\n width: ${(props) => (props.$fullWidth ? '100%' : 'fit-content')};\n`\n\nexport const StyledLabel = styled(FieldLabel)`\n margin-left: 6px;\n`\n\nexport const StyledInput = styled.input<StyledInputContainerProps>`\n flex: 1;\n min-width: 0;\n outline: none;\n font-size: 14px;\n font-weight: 500;\n height: ${(props) => getInputSizeProps(props.$size).height};\n padding: ${(props) => getInputSizeProps(props.$size).padding};\n border-radius: ${(props) => getInputSizeProps(props.$size).radius};\n\n color: ${(props) => getInputVariantProps(props.$variant).color.static};\n border: 1px solid ${(props) => getInputVariantProps(props.$variant).border.static};\n background-color: ${(props) => getInputVariantProps(props.$variant).background.static};\n\n &::placeholder {\n color: ${(props) => getInputVariantProps(props.$variant).placeholder.static};\n }\n\n &:disabled {\n cursor: not-allowed;\n color: ${(props) => getInputVariantProps(props.$variant).color.disabled};\n background-color: ${(props) => getInputVariantProps(props.$variant).background.disabled};\n border-color: ${(props) => getInputVariantProps(props.$variant).border.disabled};\n\n &::placeholder {\n color: ${(props) => getInputVariantProps(props.$variant).placeholder.disabled};\n }\n }\n`\n","import { StyledInput, StyledInputContainer, StyledLabel } from './styled'\nimport { InputProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('input')\nexport const Input = ({\n className,\n classnames,\n disabled,\n fullWidth,\n label,\n ref,\n size = 'default',\n variant = 'normal',\n ...rest\n}: InputProps) => {\n return (\n <StyledInputContainer className={css('container', className)} $fullWidth={Boolean(fullWidth)}>\n <StyledLabel variant={variant} className={css('label', classnames?.label)}>\n {label}\n </StyledLabel>\n <StyledInput\n {...rest}\n ref={ref}\n disabled={disabled}\n $size={size}\n $variant={variant}\n className={css('input', classnames?.input)}\n />\n </StyledInputContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { alpha, COLORS, KEYFRAMES } from '../../lib'\n\ntype StyledOverlayProps = {\n $animated: boolean\n}\n\ntype StyledContentProps = {\n $animated: boolean\n $width: string\n}\n\nexport const StyledOverlay = styled.div<StyledOverlayProps>`\n position: fixed;\n inset: 0;\n z-index: 1000;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${alpha(COLORS['black'], 50)};\n animation: ${KEYFRAMES.fadeIn} ${(props) => (props.$animated ? '0.15s' : '0s')} ease-out forwards;\n`\n\nexport const StyledContent = styled.div<StyledContentProps>`\n position: relative;\n z-index: 1001;\n width: ${(props) => props.$width};\n max-width: calc(100vw - 32px);\n max-height: calc(100vh - 32px);\n overflow: auto;\n background-color: ${COLORS['white']};\n border-radius: 16px;\n box-shadow: 0 8px 32px ${alpha(COLORS['black'], 20)};\n animation: ${KEYFRAMES.scaleIn} ${(props) => (props.$animated ? '0.15s' : '0s')} ease-out forwards;\n`\n","import { createPortal } from 'react-dom'\n\nimport { StyledContent, StyledOverlay } from './styled'\nimport { ModalProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('modal')\n\nexport const Modal = ({\n animated,\n children,\n className,\n classnames,\n open,\n ref,\n width = '500px',\n ...rest\n}: ModalProps) => {\n if (!open) {\n return null\n }\n\n return createPortal(\n <StyledOverlay className={css('overlay', classnames?.overlay)} $animated={Boolean(animated)}>\n <StyledContent\n {...rest}\n ref={ref}\n className={css('content', className, classnames?.content)}\n $animated={Boolean(animated)}\n $width={width}\n >\n {children}\n </StyledContent>\n </StyledOverlay>,\n document.body,\n )\n}\n","import { MultiSelectVariant } from './types'\nimport { COLORS } from '../../lib'\n\ntype VariantProps = {\n border: string\n label: string\n}\n\nexport const VARIANT_PROPS: Record<MultiSelectVariant, VariantProps> = {\n normal: {\n border: COLORS['iron-grey'],\n label: COLORS.black,\n },\n error: {\n border: COLORS.red,\n label: COLORS.red,\n },\n}\n","import styled from '@emotion/styled'\n\nimport { VARIANT_PROPS } from './constants'\nimport { MultiSelectVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n`\n\nexport const StyledLabel = styled(FieldLabel)<{ $variant: MultiSelectVariant }>`\n margin-left: 6px;\n color: ${(props) => VARIANT_PROPS[props.$variant].label};\n`\n\nexport const StyledTrigger = styled.button<{ $variant: MultiSelectVariant; $disabled: boolean }>`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 6px;\n min-height: 44px;\n padding: 8px 12px;\n border: 1px dashed ${(props) => VARIANT_PROPS[props.$variant].border};\n border-radius: 8px;\n background: ${COLORS.white};\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.$disabled ? 0.5 : 1)};\n transition: border-color 0.15s ease;\n text-align: left;\n\n &:hover:not(:disabled) {\n border-color: ${(props) => (props.$variant === 'error' ? COLORS.red : COLORS.black)};\n }\n`\n\nexport const StyledPlaceholder = styled.span`\n color: ${COLORS['iron-grey']};\n font-size: 14px;\n`\n\nexport const StyledModalContent = styled.div`\n display: flex;\n flex-direction: column;\n padding: 20px;\n gap: 16px;\n`\n\nexport const StyledModalHeader = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n`\n\nexport const StyledModalTitle = styled.h3`\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: ${COLORS.black};\n`\n\nexport const StyledOptionsList = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-height: 200px;\n max-height: 300px;\n overflow-y: auto;\n`\n\nexport const StyledOption = styled.label<{ $disabled: boolean }>`\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.$disabled ? 0.5 : 1)};\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${(props) => (props.$disabled ? 'transparent' : COLORS.gray)};\n }\n`\n\nexport const StyledOptionLabel = styled.span`\n font-size: 14px;\n color: ${COLORS.black};\n`\n\nexport const StyledEmpty = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 32px 16px;\n color: ${COLORS['iron-grey']};\n font-size: 14px;\n text-align: center;\n`\n","import { useMemo, useState } from 'react'\n\nimport {\n StyledContainer,\n StyledEmpty,\n StyledLabel,\n StyledModalContent,\n StyledModalHeader,\n StyledModalTitle,\n StyledOption,\n StyledOptionLabel,\n StyledOptionsList,\n StyledPlaceholder,\n StyledTrigger,\n} from './styled'\nimport { MultiSelectProps } from './types'\nimport { Button } from '../Button'\nimport { Checkbox } from '../Checkbox'\nimport { Chip } from '../Chip'\nimport { Input } from '../Input'\nimport { Modal } from '../Modal'\nimport { X } from '../../icons/Lucide'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('multi-select')\n\nexport const MultiSelect = ({\n className,\n classnames,\n disabled = false,\n emptyMessage = 'No options found',\n label,\n maxVisible = Infinity,\n modalTitle = 'Select options',\n onChange,\n options,\n placeholder = 'Select...',\n ref,\n searchPlaceholder = 'Search...',\n value,\n variant = 'normal',\n ...rest\n}: MultiSelectProps) => {\n const [isOpen, setIsOpen] = useState(false)\n const [search, setSearch] = useState('')\n\n const selectedOptions = useMemo(() => {\n return options.filter((opt) => value.includes(opt.value))\n }, [options, value])\n\n const filteredOptions = useMemo(() => {\n if (!search.trim()) return options\n const query = search.toLowerCase().trim()\n return options.filter((opt) => opt.label.toLowerCase().includes(query))\n }, [options, search])\n\n const visibleChips =\n maxVisible === Infinity ? selectedOptions : selectedOptions.slice(0, maxVisible)\n const hiddenCount = selectedOptions.length - visibleChips.length\n\n const handleOpen = () => {\n if (!disabled) {\n setIsOpen(true)\n setSearch('')\n }\n }\n\n const handleClose = () => {\n setIsOpen(false)\n setSearch('')\n }\n\n const handleToggle = (optionValue: string) => {\n if (value.includes(optionValue)) {\n onChange(value.filter((v) => v !== optionValue))\n } else {\n onChange([...value, optionValue])\n }\n }\n\n const handleRemove = (optionValue: string) => {\n onChange(value.filter((v) => v !== optionValue))\n }\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {label && (\n <StyledLabel $variant={variant} className={css('label', classnames?.trigger)}>\n {label}\n </StyledLabel>\n )}\n <StyledTrigger\n type=\"button\"\n $variant={variant}\n $disabled={disabled}\n disabled={disabled}\n onClick={handleOpen}\n className={css('trigger', classnames?.trigger)}\n >\n {selectedOptions.length === 0 ? (\n <StyledPlaceholder className={css('placeholder', classnames?.placeholder)}>\n {placeholder}\n </StyledPlaceholder>\n ) : (\n <>\n {visibleChips.map((opt) => (\n <Chip\n key={opt.value}\n deletable\n onDelete={() => handleRemove(opt.value)}\n onClick={(e) => e.stopPropagation()}\n className={css('chip', classnames?.chip)}\n >\n {opt.label}\n </Chip>\n ))}\n {hiddenCount > 0 && (\n <Chip\n variant=\"gray\"\n onClick={(e) => e.stopPropagation()}\n className={css('chip', classnames?.chip)}\n >\n +{hiddenCount}\n </Chip>\n )}\n </>\n )}\n </StyledTrigger>\n\n <Modal open={isOpen} width=\"400px\" animated className={css('modal', classnames?.modal)}>\n <StyledModalContent>\n <StyledModalHeader>\n <StyledModalTitle>{modalTitle}</StyledModalTitle>\n <Button variant=\"transparent\" size=\"compact\" icon={<X />} onClick={handleClose} />\n </StyledModalHeader>\n\n <Input\n type=\"text\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder={searchPlaceholder}\n autoFocus\n fullWidth\n className={css('search', classnames?.search)}\n />\n\n <StyledOptionsList className={css('options', classnames?.options)}>\n {filteredOptions.length === 0 ? (\n <StyledEmpty className={css('empty', classnames?.empty)}>{emptyMessage}</StyledEmpty>\n ) : (\n filteredOptions.map((opt) => (\n <StyledOption\n key={opt.value}\n $disabled={Boolean(opt.disabled)}\n className={css('option', classnames?.option)}\n >\n <Checkbox\n checked={value.includes(opt.value)}\n disabled={opt.disabled}\n onChange={() => handleToggle(opt.value)}\n />\n <StyledOptionLabel>{opt.label}</StyledOptionLabel>\n </StyledOption>\n ))\n )}\n </StyledOptionsList>\n </StyledModalContent>\n </Modal>\n </StyledContainer>\n )\n}\n","import { NotificationVariant } from './types'\nimport { COLORS } from '../../lib'\n\nexport const DEFAULT_NOTIFICATION_DURATION = 5000\n\ntype NotificationVariantColors = {\n background: string\n text: string\n}\n\nexport const NOTIFICATION_VARIANT_COLORS: Record<NotificationVariant, NotificationVariantColors> = {\n default: {\n background: '#374151',\n text: COLORS.white,\n },\n success: {\n background: COLORS.green,\n text: COLORS.white,\n },\n warning: {\n background: COLORS.yellow,\n text: COLORS.white,\n },\n danger: {\n background: COLORS.red,\n text: COLORS.white,\n },\n info: {\n background: COLORS['steel-blue'],\n text: COLORS.white,\n },\n}\n","import { createContext } from 'react'\n\nimport type { NotificationContextValue } from './types'\n\nexport const NotificationContext = createContext<NotificationContextValue | null>(null)\n","import { NOTIFICATION_VARIANT_COLORS } from './constants'\nimport { NotificationVariant } from './types'\n\nexport const getNotificationVariantColors = (variant: NotificationVariant) => {\n return NOTIFICATION_VARIANT_COLORS[variant] ?? NOTIFICATION_VARIANT_COLORS['default']\n}\n","import styled from '@emotion/styled'\n\nimport { getNotificationVariantColors } from './helpers'\nimport type { NotificationVariant } from './types'\nimport { KEYFRAMES } from '../../lib'\n\nexport const StyledNotificationContainer = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n z-index: 9999;\n pointer-events: none;\n`\n\ntype StyledNotificationBarProps = {\n $variant: NotificationVariant\n $isExiting: boolean\n}\n\nexport const StyledNotificationBar = styled.div<StyledNotificationBarProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n min-height: 44px;\n padding: 12px 48px;\n background-color: ${({ $variant }) => getNotificationVariantColors($variant).background};\n color: ${({ $variant }) => getNotificationVariantColors($variant).text};\n animation: ${({ $isExiting }) =>\n $isExiting ? KEYFRAMES.slideOutTopFade : KEYFRAMES.slideInTopFade}\n 0.3s ease-out forwards;\n pointer-events: auto;\n`\n\nexport const StyledNotificationMessage = styled.span`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n text-align: center;\n`\n\nexport const StyledNotificationCloseButton = styled.button`\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n background: transparent;\n border: none;\n color: inherit;\n cursor: pointer;\n opacity: 0.7;\n transition: opacity 0.2s ease-in-out;\n\n &:hover {\n opacity: 1;\n }\n`\n\nexport const StyledNotificationWrapper = styled.div`\n position: relative;\n`\n","import { useEffect, useState } from 'react'\n\nimport {\n StyledNotificationBar,\n StyledNotificationCloseButton,\n StyledNotificationMessage,\n StyledNotificationWrapper,\n} from './styled'\nimport type { Notification } from './types'\nimport { X } from '../../icons/Lucide'\n\ntype NotificationBarProps = {\n notification: Notification\n onRemove: () => void\n onAnimationEnd: () => void\n}\n\nexport const NotificationBar = ({\n notification,\n onRemove,\n onAnimationEnd,\n}: NotificationBarProps) => {\n const [isExiting, setIsExiting] = useState(false)\n\n const handleRemove = () => {\n setIsExiting(true)\n }\n\n const handleAnimationEnd = () => {\n if (isExiting) {\n onRemove()\n onAnimationEnd()\n }\n }\n\n useEffect(() => {\n const timer = setTimeout(() => {\n handleRemove()\n }, notification.duration)\n\n return () => clearTimeout(timer)\n }, [notification.duration, notification.id])\n\n return (\n <StyledNotificationWrapper>\n <StyledNotificationBar\n $variant={notification.variant}\n $isExiting={isExiting}\n onAnimationEnd={handleAnimationEnd}\n >\n <StyledNotificationMessage>{notification.message}</StyledNotificationMessage>\n <StyledNotificationCloseButton onClick={handleRemove}>\n <X style={{ width: 18, height: 18 }} />\n </StyledNotificationCloseButton>\n </StyledNotificationBar>\n </StyledNotificationWrapper>\n )\n}\n","import type { NotificationAction, NotificationState } from './types'\n\nexport const notificationReducer = (\n state: NotificationState,\n action: NotificationAction,\n): NotificationState => {\n switch (action.type) {\n case 'ADD_NOTIFICATION': {\n const newNotification = action.payload\n\n // If no current notification, show immediately\n if (!state.current) {\n return {\n ...state,\n current: newNotification,\n }\n }\n\n // Otherwise add to queue\n return {\n ...state,\n queue: [...state.queue, newNotification],\n }\n }\n\n case 'REMOVE_CURRENT': {\n return {\n ...state,\n current: null,\n }\n }\n\n case 'SHOW_NEXT': {\n const nextNotification = state.queue[0]\n\n if (!nextNotification) {\n return state\n }\n\n return {\n current: nextNotification,\n queue: state.queue.slice(1),\n }\n }\n\n default:\n return state\n }\n}\n\nexport const initialNotificationState: NotificationState = {\n current: null,\n queue: [],\n}\n","import { useCallback, useReducer, type PropsWithChildren, type ReactNode } from 'react'\n\nimport { DEFAULT_NOTIFICATION_DURATION } from './constants'\nimport { NotificationContext } from './context'\nimport { NotificationBar } from './NotificationBar'\nimport { initialNotificationState, notificationReducer } from './reducer'\nimport { StyledNotificationContainer } from './styled'\nimport type { NotificationVariant } from './types'\n\nexport const NotificationProvider = ({ children }: PropsWithChildren) => {\n const [state, dispatch] = useReducer(notificationReducer, initialNotificationState)\n\n const show = useCallback(\n (\n message: ReactNode,\n variant: NotificationVariant = 'default',\n duration: number = DEFAULT_NOTIFICATION_DURATION,\n ) => {\n const id = `notification-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n\n dispatch({\n type: 'ADD_NOTIFICATION',\n payload: {\n id,\n message,\n variant,\n duration,\n },\n })\n },\n [],\n )\n\n const hide = useCallback(() => {\n dispatch({ type: 'REMOVE_CURRENT' })\n }, [])\n\n const handleRemove = useCallback(() => {\n dispatch({ type: 'REMOVE_CURRENT' })\n }, [])\n\n const handleShowNext = useCallback(() => {\n // Small delay before showing next notification\n setTimeout(() => {\n dispatch({ type: 'SHOW_NEXT' })\n }, 100)\n }, [])\n\n return (\n <NotificationContext.Provider value={{ show, hide }}>\n {children}\n <StyledNotificationContainer>\n {state.current && (\n <NotificationBar\n key={state.current.id}\n notification={state.current}\n onRemove={handleRemove}\n onAnimationEnd={handleShowNext}\n />\n )}\n </StyledNotificationContainer>\n </NotificationContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { NotificationContext } from './context'\n\nexport const useNotification = () => {\n const context = useContext(NotificationContext)\n\n if (!context) {\n throw new Error('useNotification must be used within NotificationProvider')\n }\n\n return context\n}\n","import { OtpCodeVariant } from './types'\nimport { alpha, COLORS, VacanoComponentSize, VacanoInteractiveElementState } from '../../lib'\n\nexport const OTP_CODE_SIZE_PROPS: Record<\n VacanoComponentSize,\n {\n width: string\n height: string\n fontSize: string\n radius: string\n gap: string\n }\n> = {\n compact: {\n width: '36px',\n height: '40px',\n fontSize: '16px',\n radius: '10px',\n gap: '8px',\n },\n default: {\n width: '44px',\n height: '52px',\n fontSize: '20px',\n radius: '12px',\n gap: '10px',\n },\n}\n\nexport const OTP_CODE_VARIANT_PROPS: Record<\n OtpCodeVariant,\n {\n border: VacanoInteractiveElementState\n background: VacanoInteractiveElementState\n color: VacanoInteractiveElementState\n focus: string\n }\n> = {\n normal: {\n background: {\n static: alpha(COLORS['black'], 2),\n disabled: alpha(COLORS['black'], 10),\n },\n border: {\n static: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 10),\n },\n color: {\n static: COLORS['black'],\n disabled: alpha(COLORS['black'], 65),\n },\n focus: alpha(COLORS['iron-grey'], 30),\n },\n error: {\n background: {\n static: alpha(COLORS['red'], 2),\n disabled: alpha(COLORS['red'], 10),\n },\n border: {\n static: alpha(COLORS['red'], 60),\n disabled: alpha(COLORS['red'], 10),\n },\n color: {\n static: COLORS['red'],\n disabled: alpha(COLORS['red'], 65),\n },\n focus: alpha(COLORS['red'], 30),\n },\n}\n","import { OTP_CODE_SIZE_PROPS, OTP_CODE_VARIANT_PROPS } from './constants'\nimport { OtpCodeVariant } from './types'\nimport { VacanoComponentSize } from '../../lib'\n\nexport const getOtpCodeSizeProps = (size: VacanoComponentSize) => {\n return OTP_CODE_SIZE_PROPS[size] ?? OTP_CODE_SIZE_PROPS['default']\n}\n\nexport const getOtpCodeVariantProps = (variant: OtpCodeVariant) => {\n return OTP_CODE_VARIANT_PROPS[variant] ?? OTP_CODE_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getOtpCodeSizeProps, getOtpCodeVariantProps } from './helpers'\nimport { OtpCodeVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { VacanoComponentSize } from '../../lib'\n\ntype StyledInputProps = {\n $size: VacanoComponentSize\n $variant: OtpCodeVariant\n}\n\nexport const StyledContainer = styled.div`\n display: inline-flex;\n flex-direction: column;\n gap: 2px;\n`\n\nexport const StyledLabel = styled(FieldLabel)`\n margin-left: 6px;\n`\n\nexport const StyledInputsWrapper = styled.div<{ $size: VacanoComponentSize }>`\n display: flex;\n gap: ${(props) => getOtpCodeSizeProps(props.$size).gap};\n`\n\nexport const StyledInput = styled.input<StyledInputProps>`\n width: ${(props) => getOtpCodeSizeProps(props.$size).width};\n height: ${(props) => getOtpCodeSizeProps(props.$size).height};\n border-radius: ${(props) => getOtpCodeSizeProps(props.$size).radius};\n font-size: ${(props) => getOtpCodeSizeProps(props.$size).fontSize};\n font-weight: 600;\n text-align: center;\n outline: none;\n border: 1px solid ${(props) => getOtpCodeVariantProps(props.$variant).border.static};\n background-color: ${(props) => getOtpCodeVariantProps(props.$variant).background.static};\n color: ${(props) => getOtpCodeVariantProps(props.$variant).color.static};\n transition:\n border-color 0.15s ease,\n box-shadow 0.15s ease;\n\n &:disabled {\n cursor: not-allowed;\n color: ${(props) => getOtpCodeVariantProps(props.$variant).color.disabled};\n background-color: ${(props) => getOtpCodeVariantProps(props.$variant).background.disabled};\n border-color: ${(props) => getOtpCodeVariantProps(props.$variant).border.disabled};\n }\n\n &::selection {\n background-color: transparent;\n }\n`\n","import { ChangeEvent, ClipboardEvent, KeyboardEvent, useCallback, useEffect, useRef } from 'react'\n\nimport { StyledContainer, StyledInput, StyledInputsWrapper, StyledLabel } from './styled'\nimport { OtpCodeProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('otp-code')\n\nexport const OtpCode = ({\n autoFocus,\n className,\n classnames,\n disabled,\n label,\n length = 6,\n onChange,\n ref,\n size = 'default',\n value = '',\n variant = 'normal',\n ...rest\n}: OtpCodeProps) => {\n const inputRefs = useRef<(HTMLInputElement | null)[]>([])\n\n useEffect(() => {\n if (autoFocus && inputRefs.current[0]) {\n inputRefs.current[0].focus()\n }\n }, [autoFocus])\n\n const focusInput = useCallback((index: number) => {\n const input = inputRefs.current[index]\n if (input) {\n input.focus()\n input.select()\n }\n }, [])\n\n const handleChange = useCallback(\n (index: number, e: ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value\n const digit = inputValue.replace(/\\D/g, '').slice(-1)\n\n if (!digit) return\n\n const newValue = value.padEnd(length, ' ').split('')\n\n // Find first empty slot to insert the digit\n const firstEmptyIndex = newValue.findIndex((char) => char === ' ' || char === '')\n const insertIndex = firstEmptyIndex !== -1 ? firstEmptyIndex : index\n\n newValue[insertIndex] = digit\n const updatedValue = newValue.join('').replace(/ /g, '')\n\n onChange?.(updatedValue)\n\n // Move focus to the next empty slot after insertion\n const nextEmptyIndex = insertIndex + 1\n if (nextEmptyIndex < length) {\n focusInput(nextEmptyIndex)\n }\n },\n [value, length, onChange, focusInput],\n )\n\n const handleKeyDown = useCallback(\n (index: number, e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace') {\n e.preventDefault()\n const newValue = value.split('')\n\n if (newValue[index]) {\n newValue[index] = ''\n onChange?.(newValue.join(''))\n } else if (index > 0) {\n newValue[index - 1] = ''\n onChange?.(newValue.join(''))\n focusInput(index - 1)\n }\n } else if (e.key === 'ArrowLeft' && index > 0) {\n e.preventDefault()\n focusInput(index - 1)\n } else if (e.key === 'ArrowRight' && index < length - 1) {\n e.preventDefault()\n focusInput(index + 1)\n }\n },\n [value, length, onChange, focusInput],\n )\n\n const handlePaste = useCallback(\n (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault()\n const pastedData = e.clipboardData.getData('text').replace(/\\D/g, '').slice(0, length)\n\n if (pastedData) {\n onChange?.(pastedData)\n\n const nextIndex = Math.min(pastedData.length, length - 1)\n focusInput(nextIndex)\n }\n },\n [length, onChange, focusInput],\n )\n\n return (\n <StyledContainer ref={ref} className={css('container', className)} {...rest}>\n {label && (\n <StyledLabel variant={variant} className={css('label', classnames?.label)}>\n {label}\n </StyledLabel>\n )}\n <StyledInputsWrapper $size={size}>\n {Array.from({ length }).map((_, index) => (\n <StyledInput\n key={index}\n ref={(el) => {\n inputRefs.current[index] = el\n }}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"one-time-code\"\n maxLength={2}\n disabled={disabled}\n value={value[index] ?? ''}\n onChange={(e) => handleChange(index, e)}\n onKeyDown={(e) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n onFocus={(e) => e.target.select()}\n $size={size}\n $variant={variant}\n className={css('input', classnames?.input)}\n />\n ))}\n </StyledInputsWrapper>\n </StyledContainer>\n )\n}\n","import { PanelVariant } from './types'\nimport { alpha, COLORS } from '../../lib'\n\ntype PanelVariantColors = {\n background: string\n border: string\n title: string\n description: string\n}\n\nexport const PANEL_VARIANT_COLORS: Record<PanelVariant, PanelVariantColors> = {\n light: {\n background: COLORS.white,\n border: alpha(COLORS.black, 30),\n title: COLORS.black,\n description: COLORS['iron-grey'],\n },\n dark: {\n background: alpha(COLORS.white, 5),\n border: alpha(COLORS.white, 30),\n title: COLORS.white,\n description: '#9ca3af',\n },\n}\n","import { PANEL_VARIANT_COLORS } from './constants'\nimport { PanelVariant } from './types'\n\nexport const getPanelVariantColors = (variant: PanelVariant) => {\n return PANEL_VARIANT_COLORS[variant] ?? PANEL_VARIANT_COLORS['light']\n}\n","import styled from '@emotion/styled'\n\nimport { getPanelVariantColors } from './helpers'\nimport { PanelVariant } from './types'\n\ntype StyledContainerProps = {\n $variant: PanelVariant\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 12px;\n border: 1px dashed ${({ $variant }) => getPanelVariantColors($variant).border};\n border-radius: 16px;\n background-color: ${({ $variant }) => getPanelVariantColors($variant).background};\n`\n\nexport const StyledHeader = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n`\n\ntype StyledTitleProps = {\n $variant: PanelVariant\n}\n\nexport const StyledTitle = styled.div<StyledTitleProps>`\n font-size: 18px;\n font-weight: 600;\n line-height: 1.4;\n color: ${({ $variant }) => getPanelVariantColors($variant).title};\n`\n\ntype StyledDescriptionProps = {\n $variant: PanelVariant\n}\n\nexport const StyledDescription = styled.div<StyledDescriptionProps>`\n font-size: 14px;\n line-height: 1.5;\n color: ${({ $variant }) => getPanelVariantColors($variant).description};\n`\n\nexport const StyledContent = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n`\n","import {\n StyledContainer,\n StyledContent,\n StyledDescription,\n StyledHeader,\n StyledTitle,\n} from './styled'\nimport { PanelProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('panel')\n\nexport const Panel = ({\n children,\n className,\n classnames,\n description,\n ref,\n title,\n variant = 'light',\n ...rest\n}: PanelProps) => {\n const hasHeader = title || description\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} $variant={variant}>\n {hasHeader && (\n <StyledHeader>\n {title && (\n <StyledTitle className={css('title', classnames?.title)} $variant={variant}>\n {title}\n </StyledTitle>\n )}\n {description && (\n <StyledDescription\n className={css('description', classnames?.description)}\n $variant={variant}\n >\n {description}\n </StyledDescription>\n )}\n </StyledHeader>\n )}\n <StyledContent className={css('content', classnames?.content)}>{children}</StyledContent>\n </StyledContainer>\n )\n}\n","import { VacanoComponentSize } from '../../lib'\n\nexport const PROGRESS_SIZE_PROPS: Record<VacanoComponentSize, { height: number; radius: number }> =\n {\n compact: {\n height: 4,\n radius: 2,\n },\n default: {\n height: 8,\n radius: 4,\n },\n }\n","import styled from '@emotion/styled'\n\nimport { PROGRESS_SIZE_PROPS } from './constants'\nimport { COLORS, VacanoComponentSize } from '../../lib'\n\nexport const StyledTrack = styled.div<{ $size: VacanoComponentSize }>`\n width: 100%;\n height: ${({ $size }) => PROGRESS_SIZE_PROPS[$size].height}px;\n border-radius: ${({ $size }) => PROGRESS_SIZE_PROPS[$size].radius}px;\n background-color: ${COLORS['gray']};\n overflow: hidden;\n`\n\nexport const StyledBar = styled.div<{ $size: VacanoComponentSize; $value: number }>`\n height: 100%;\n width: ${({ $value }) => Math.min(100, Math.max(0, $value))}%;\n border-radius: ${({ $size }) => PROGRESS_SIZE_PROPS[$size].radius}px;\n background-color: ${COLORS.black};\n transition: width 0.2s ease;\n`\n","import { StyledBar, StyledTrack } from './styled'\nimport { ProgressProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('progress')\n\nexport const Progress = ({\n value,\n size = 'default',\n className,\n classnames,\n ref,\n ...rest\n}: ProgressProps) => {\n return (\n <StyledTrack\n {...rest}\n ref={ref}\n $size={size}\n className={css('track', className, classnames?.track)}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <StyledBar $size={size} $value={value} className={css('bar', classnames?.bar)} />\n </StyledTrack>\n )\n}\n","import { RadioVariant } from './types'\nimport { alpha, COLORS } from '../../lib'\n\nexport const RADIO_VARIANT_PROPS: Record<\n RadioVariant,\n {\n box: {\n border: string\n borderChecked: string\n background: string\n backgroundChecked: string\n focusShadow: string\n }\n dot: string\n label: string\n }\n> = {\n normal: {\n box: {\n border: alpha(COLORS['iron-grey'], 30),\n borderChecked: COLORS['iron-grey'],\n background: COLORS['white'],\n backgroundChecked: COLORS['white'],\n focusShadow: alpha(COLORS['iron-grey'], 30),\n },\n dot: COLORS['black'],\n label: COLORS['black'],\n },\n error: {\n box: {\n border: COLORS['red'],\n borderChecked: COLORS['red'],\n background: COLORS['white'],\n backgroundChecked: COLORS['white'],\n focusShadow: alpha(COLORS['red'], 30),\n },\n dot: COLORS['red'],\n label: COLORS['red'],\n },\n}\n","import { RADIO_VARIANT_PROPS } from './constants'\nimport { RadioVariant } from './types'\n\nexport const getRadioVariantProps = (variant: RadioVariant) => {\n return RADIO_VARIANT_PROPS[variant] ?? RADIO_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getRadioVariantProps } from './helpers'\nimport { RadioVariant } from './types'\n\ntype StyledContainerProps = {\n $disabled: boolean\n $variant: RadioVariant\n}\n\ntype StyledBoxProps = {\n $checked: boolean\n $variant: RadioVariant\n}\n\ntype StyledDotProps = {\n $visible: boolean\n $variant: RadioVariant\n}\n\ntype StyledLabelProps = {\n $variant: RadioVariant\n}\n\nexport const StyledContainer = styled.label<StyledContainerProps>`\n display: inline-flex;\n align-items: flex-start;\n gap: 8px;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.$disabled ? 0.5 : 1)};\n`\n\nexport const StyledInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`\n\nexport const StyledBox = styled.span<StyledBoxProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n border: 1.5px solid\n ${(props) =>\n props.$checked\n ? getRadioVariantProps(props.$variant).box.borderChecked\n : getRadioVariantProps(props.$variant).box.border};\n background-color: ${(props) =>\n props.$checked\n ? getRadioVariantProps(props.$variant).box.backgroundChecked\n : getRadioVariantProps(props.$variant).box.background};\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease,\n box-shadow 0.15s ease;\n`\n\nexport const StyledDot = styled.span<StyledDotProps>`\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: ${(props) => getRadioVariantProps(props.$variant).dot};\n opacity: ${(props) => (props.$visible ? 1 : 0)};\n transform: ${(props) => (props.$visible ? 'scale(1)' : 'scale(0.5)')};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease;\n`\n\nexport const StyledLabel = styled.span<StyledLabelProps>`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.5;\n color: ${(props) => getRadioVariantProps(props.$variant).label};\n user-select: none;\n\n a {\n color: inherit;\n text-decoration: underline;\n cursor: pointer;\n\n &:hover {\n text-decoration: none;\n }\n }\n`\n","import { StyledBox, StyledContainer, StyledDot, StyledInput, StyledLabel } from './styled'\nimport { RadioProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('radio')\n\nexport const Radio = ({\n checked,\n className,\n classnames,\n disabled,\n label,\n onChange,\n ref,\n variant = 'normal',\n ...rest\n}: RadioProps) => {\n return (\n <StyledContainer\n className={css('container', className)}\n $disabled={Boolean(disabled)}\n $variant={variant}\n >\n <StyledInput\n {...rest}\n ref={ref}\n type=\"radio\"\n className={css('input', classnames?.input)}\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n />\n <StyledBox className={css('box', classnames?.box)} $checked={checked} $variant={variant}>\n <StyledDot className={css('dot', classnames?.dot)} $visible={checked} $variant={variant} />\n </StyledBox>\n {label && (\n <StyledLabel className={css('label', classnames?.label)} $variant={variant}>\n {label}\n </StyledLabel>\n )}\n </StyledContainer>\n )\n}\n","import { RadioCardVariant } from './types'\nimport { alpha, COLORS, VacanoInteractiveElementState } from '../../lib'\n\ntype RadioCardVariantProps = {\n border: VacanoInteractiveElementState\n borderChecked: string\n background: VacanoInteractiveElementState\n backgroundChecked: string\n focusRing: string\n label: VacanoInteractiveElementState\n description: VacanoInteractiveElementState\n}\n\nexport const RADIO_CARD_VARIANT_PROPS: Record<RadioCardVariant, RadioCardVariantProps> = {\n normal: {\n border: {\n static: alpha(COLORS['black'], 20),\n hover: alpha(COLORS['black'], 40),\n active: alpha(COLORS['black'], 40),\n disabled: alpha(COLORS['black'], 10),\n },\n borderChecked: COLORS['black'],\n background: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: alpha(COLORS['black'], 5),\n },\n backgroundChecked: alpha(COLORS['black'], 5),\n focusRing: alpha(COLORS['black'], 20),\n label: {\n static: COLORS['black'],\n hover: COLORS['black'],\n active: COLORS['black'],\n disabled: alpha(COLORS['black'], 40),\n },\n description: {\n static: alpha(COLORS['black'], 60),\n hover: alpha(COLORS['black'], 60),\n active: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 30),\n },\n },\n error: {\n border: {\n static: COLORS['red'],\n hover: COLORS['red'],\n active: COLORS['red'],\n disabled: alpha(COLORS['red'], 30),\n },\n borderChecked: COLORS['red'],\n background: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: alpha(COLORS['red'], 5),\n },\n backgroundChecked: alpha(COLORS['red'], 5),\n focusRing: alpha(COLORS['red'], 20),\n label: {\n static: COLORS['red'],\n hover: COLORS['red'],\n active: COLORS['red'],\n disabled: alpha(COLORS['red'], 40),\n },\n description: {\n static: alpha(COLORS['red'], 70),\n hover: alpha(COLORS['red'], 70),\n active: alpha(COLORS['red'], 70),\n disabled: alpha(COLORS['red'], 40),\n },\n },\n}\n","import { RADIO_CARD_VARIANT_PROPS } from './constants'\nimport { RadioCardVariant } from './types'\n\nexport const getRadioCardVariantProps = (variant: RadioCardVariant) => {\n return RADIO_CARD_VARIANT_PROPS[variant] ?? RADIO_CARD_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getRadioCardVariantProps } from './helpers'\nimport { RadioCardVariant } from './types'\n\ntype StyledContainerProps = {\n $checked: boolean\n $disabled: boolean\n $fullWidth: boolean\n $variant: RadioCardVariant\n}\n\ntype StyledLabelProps = {\n $variant: RadioCardVariant\n}\n\ntype StyledDescriptionProps = {\n $variant: RadioCardVariant\n}\n\nexport const StyledContainer = styled.label<StyledContainerProps>`\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 8px;\n padding: 12px;\n background-color: ${(props) => {\n const variantProps = getRadioCardVariantProps(props.$variant)\n if (props.$disabled) return variantProps.background.disabled\n if (props.$checked) return variantProps.backgroundChecked\n return variantProps.background.static\n }};\n border: 1px solid\n ${(props) => {\n const variantProps = getRadioCardVariantProps(props.$variant)\n if (props.$disabled) return variantProps.border.disabled\n if (props.$checked) return variantProps.borderChecked\n return variantProps.border.static\n }};\n border-radius: 12px;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease;\n width: ${(props) => (props.$fullWidth ? '100%' : 'fit-content')};\n min-width: 0;\n\n &:hover:not([data-disabled='true']) {\n border-color: ${(props) => {\n const variantProps = getRadioCardVariantProps(props.$variant)\n if (props.$checked) return variantProps.borderChecked\n return variantProps.border.hover\n }};\n }\n\n .vacano_radio_container {\n pointer-events: none;\n }\n`\n\nexport const StyledInput = styled.input`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n`\n\nexport const StyledContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n`\n\nexport const StyledLabel = styled.span<StyledLabelProps>`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n color: ${(props) => getRadioCardVariantProps(props.$variant).label.static};\n\n label[data-disabled='true'] & {\n color: ${(props) => getRadioCardVariantProps(props.$variant).label.disabled};\n }\n`\n\nexport const StyledDescription = styled.span<StyledDescriptionProps>`\n font-size: 12px;\n font-weight: 400;\n line-height: 1.4;\n color: ${(props) => getRadioCardVariantProps(props.$variant).description.static};\n\n label[data-disabled='true'] & {\n color: ${(props) => getRadioCardVariantProps(props.$variant).description.disabled};\n }\n`\n","import {\n StyledContainer,\n StyledContent,\n StyledDescription,\n StyledInput,\n StyledLabel,\n} from './styled'\nimport { RadioCardProps } from './types'\nimport { Radio } from '../Radio'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('radio-card')\n\nexport const RadioCard = ({\n checked,\n className,\n classnames,\n description,\n disabled,\n fullWidth = false,\n label,\n onChange,\n ref,\n variant = 'normal',\n ...rest\n}: RadioCardProps) => {\n return (\n <StyledContainer\n className={css('container', className)}\n $checked={checked}\n $disabled={Boolean(disabled)}\n $fullWidth={fullWidth}\n $variant={variant}\n data-disabled={disabled}\n >\n <StyledInput\n {...rest}\n ref={ref}\n type=\"radio\"\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n />\n <Radio\n className={classnames?.radio}\n checked={checked}\n disabled={disabled}\n variant={variant}\n onChange={() => {}}\n tabIndex={-1}\n aria-hidden\n />\n <StyledContent className={css('content', classnames?.content)}>\n <StyledLabel className={css('label', classnames?.label)} $variant={variant}>\n {label}\n </StyledLabel>\n {description && (\n <StyledDescription\n className={css('description', classnames?.description)}\n $variant={variant}\n >\n {description}\n </StyledDescription>\n )}\n </StyledContent>\n </StyledContainer>\n )\n}\n","import { alpha, COLORS } from '../../lib'\n\nexport const RADIO_GROUP_PROPS = {\n label: {\n color: COLORS['black'],\n disabledColor: alpha(COLORS['black'], 40),\n },\n}\n","import styled from '@emotion/styled'\n\nimport { RADIO_GROUP_PROPS } from './constants'\n\ntype StyledLabelProps = {\n $disabled?: boolean\n}\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`\n\nexport const StyledLabel = styled.span<StyledLabelProps>`\n font-size: 13px;\n font-weight: 500;\n line-height: 1.5;\n color: ${(props) =>\n props.$disabled ? RADIO_GROUP_PROPS.label.disabledColor : RADIO_GROUP_PROPS.label.color};\n margin-bottom: 4px;\n`\n\nexport const StyledOptions = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n`\n","import { StyledContainer, StyledLabel, StyledOptions } from './styled'\nimport { RadioGroupProps } from './types'\nimport { Radio } from '../Radio'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('radio-group')\n\nexport const RadioGroup = ({\n className,\n classnames,\n disabled,\n label,\n name,\n onChange,\n options,\n ref,\n value,\n ...rest\n}: RadioGroupProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {label && (\n <StyledLabel className={css('label', classnames?.label)} $disabled={disabled}>\n {label}\n </StyledLabel>\n )}\n <StyledOptions className={css('options', classnames?.options)}>\n {options.map((option) => (\n <Radio\n key={option.value}\n className={classnames?.radio}\n name={name}\n checked={value === option.value}\n label={option.label}\n disabled={disabled}\n onChange={() => onChange(option.value)}\n />\n ))}\n </StyledOptions>\n </StyledContainer>\n )\n}\n","import { createContext } from 'react'\n\nimport type { SaveProgressContextValue } from './types'\n\nexport const SaveProgressContext = createContext<SaveProgressContextValue | null>(null)\n","import styled from '@emotion/styled'\n\nimport { alpha, COLORS, KEYFRAMES } from '../../lib'\n\nexport const StyledContainer = styled.div`\n position: fixed;\n bottom: 24px;\n right: 24px;\n z-index: 9999;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n background-color: ${alpha(COLORS['iron-grey'], 10)};\n backdrop-filter: blur(8px);\n border-radius: 24px;\n animation: ${KEYFRAMES.fadeIn} 0.2s ease-out;\n pointer-events: none;\n color: ${COLORS['black']};\n`\n\nexport const StyledMessage = styled.span`\n font-size: 14px;\n font-weight: 500;\n white-space: nowrap;\n`\n","import { useCallback, useMemo, useState } from 'react'\n\nimport { SaveProgressContext } from './context'\nimport { StyledContainer, StyledMessage } from './styled'\nimport type { SaveProgressProviderProps } from './types'\nimport { Spinner } from '../Spinner'\n\nexport const SaveProgressProvider = ({\n children,\n defaultMessage = 'Saving',\n}: SaveProgressProviderProps) => {\n const [isVisible, setIsVisible] = useState(false)\n const [message, setMessage] = useState(defaultMessage)\n\n const show = useCallback(\n (customMessage?: string) => {\n setMessage(customMessage ?? defaultMessage)\n setIsVisible(true)\n },\n [defaultMessage],\n )\n\n const hide = useCallback(() => {\n setIsVisible(false)\n }, [])\n\n const value = useMemo(() => ({ isVisible, show, hide }), [isVisible, show, hide])\n\n return (\n <SaveProgressContext.Provider value={value}>\n {children}\n {isVisible && (\n <StyledContainer>\n <Spinner size=\"sm\" />\n <StyledMessage>{message}</StyledMessage>\n </StyledContainer>\n )}\n </SaveProgressContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { SaveProgressContext } from './context'\n\nexport const useSaveProgress = () => {\n const context = useContext(SaveProgressContext)\n\n if (!context) {\n throw new Error('useSaveProgress must be used within SaveProgressProvider')\n }\n\n return context\n}\n","import { SelectVariant } from './types'\nimport { alpha, COLORS, VacanoComponentSize, VacanoInteractiveElementState } from '../../lib'\n\nexport const OPTION_HEIGHT = 40\nexport const DROPDOWN_PADDING = 4\n\nexport const SELECT_SIZE_PROPS: Record<\n VacanoComponentSize,\n {\n height: string\n padding: string\n radius: string\n }\n> = {\n compact: {\n height: '32px',\n padding: '0 10px',\n radius: '14px',\n },\n default: {\n height: '40px',\n padding: '0 14px',\n radius: '16px',\n },\n}\n\nexport const SELECT_VARIANT_PROPS: Record<\n SelectVariant,\n {\n border: VacanoInteractiveElementState\n background: VacanoInteractiveElementState\n color: VacanoInteractiveElementState\n placeholder: string\n focus: string\n }\n> = {\n normal: {\n background: {\n static: alpha(COLORS['black'], 2),\n disabled: alpha(COLORS['black'], 10),\n },\n border: {\n static: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 10),\n },\n color: {\n static: COLORS['black'],\n disabled: alpha(COLORS['black'], 65),\n },\n placeholder: alpha(COLORS['black'], 40),\n focus: alpha(COLORS['iron-grey'], 30),\n },\n error: {\n background: {\n static: alpha(COLORS['red'], 2),\n disabled: alpha(COLORS['red'], 10),\n },\n border: {\n static: alpha(COLORS['red'], 60),\n disabled: alpha(COLORS['red'], 10),\n },\n color: {\n static: COLORS['red'],\n disabled: alpha(COLORS['red'], 65),\n },\n placeholder: alpha(COLORS['red'], 40),\n focus: alpha(COLORS['red'], 30),\n },\n}\n","import { SELECT_SIZE_PROPS, SELECT_VARIANT_PROPS } from './constants'\nimport { SelectVariant } from './types'\nimport { VacanoComponentSize } from '../../lib'\n\nexport const getSelectSizeProps = (size: VacanoComponentSize) => {\n return SELECT_SIZE_PROPS[size] ?? SELECT_SIZE_PROPS['default']\n}\n\nexport const getSelectVariantProps = (variant: SelectVariant) => {\n return SELECT_VARIANT_PROPS[variant] ?? SELECT_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getSelectSizeProps, getSelectVariantProps } from './helpers'\nimport { SelectVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { alpha, COLORS, VacanoComponentSize } from '../../lib'\n\nexport const StyledContainer = styled.div<{ $fullWidth: boolean }>`\n position: relative;\n display: grid;\n gap: 2px;\n min-width: 180px;\n width: ${(props) => (props.$fullWidth ? '100%' : 'fit-content')};\n`\n\nexport const StyledLabel = styled(FieldLabel)`\n margin-left: 6px;\n`\n\nexport const StyledTrigger = styled.button<{\n $size: VacanoComponentSize\n $variant: SelectVariant\n $disabled: boolean\n $hasValue: boolean\n}>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n width: 100%;\n outline: none;\n font-size: 14px;\n font-weight: 500;\n text-align: left;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n height: ${(props) => getSelectSizeProps(props.$size).height};\n padding: ${(props) => getSelectSizeProps(props.$size).padding};\n border-radius: ${(props) => getSelectSizeProps(props.$size).radius};\n\n color: ${(props) =>\n props.$hasValue\n ? props.$disabled\n ? getSelectVariantProps(props.$variant).color.disabled\n : getSelectVariantProps(props.$variant).color.static\n : getSelectVariantProps(props.$variant).placeholder};\n border: 1px solid\n ${(props) =>\n props.$disabled\n ? getSelectVariantProps(props.$variant).border.disabled\n : getSelectVariantProps(props.$variant).border.static};\n background-color: ${(props) =>\n props.$disabled\n ? getSelectVariantProps(props.$variant).background.disabled\n : getSelectVariantProps(props.$variant).background.static};\n`\n\nexport const StyledTriggerText = styled.span`\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`\n\nexport const StyledChevron = styled.span<{ $open: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: transform 0.2s ease;\n transform: rotate(${(props) => (props.$open ? '180deg' : '0deg')});\n`\n\nconst dropdownStyles = `\n padding: 4px;\n background: ${COLORS.white};\n border: 1px solid ${alpha(COLORS.black, 10)};\n border-radius: 16px;\n box-shadow: 0 4px 20px ${alpha(COLORS.black, 15)};\n z-index: 1000;\n`\n\nexport const StyledDropdown = styled.div`\n position: absolute;\n left: -4px;\n width: calc(100% + 8px);\n ${dropdownStyles}\n`\n\nexport const StyledPortalDropdown = styled.div`\n position: fixed;\n ${dropdownStyles}\n`\n\nexport const StyledOption = styled.button<{ $selected: boolean; $disabled: boolean }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n width: 100%;\n height: 40px;\n padding: 0 14px;\n border: none;\n background: ${(props) => (props.$selected ? alpha(COLORS.black, 6) : 'transparent')};\n border-radius: 12px;\n font-size: 14px;\n font-weight: 500;\n text-align: left;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n color: ${(props) => (props.$disabled ? alpha(COLORS.black, 40) : COLORS.black)};\n transition: background-color 0.15s ease;\n\n &:hover:not(:disabled) {\n background: ${alpha(COLORS.black, 8)};\n }\n`\n\nexport const StyledCheckmark = styled.span`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: ${COLORS.black};\n`\n","import { useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { DROPDOWN_PADDING, OPTION_HEIGHT } from './constants'\nimport {\n StyledCheckmark,\n StyledChevron,\n StyledContainer,\n StyledDropdown,\n StyledLabel,\n StyledOption,\n StyledPortalDropdown,\n StyledTrigger,\n StyledTriggerText,\n} from './styled'\nimport { SelectProps } from './types'\nimport { Check, ChevronDown } from '../../icons/Lucide'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('select')\n\ntype PortalPosition = {\n top: number\n left: number\n width: number\n}\n\nexport const Select = ({\n className,\n classnames,\n disabled = false,\n fullWidth = false,\n label,\n onChange,\n options,\n placeholder = 'Select...',\n portalRenderNode,\n ref,\n size = 'default',\n value,\n variant = 'normal',\n ...rest\n}: SelectProps) => {\n const [isOpen, setIsOpen] = useState(false)\n const [portalPosition, setPortalPosition] = useState<PortalPosition>({\n top: 0,\n left: 0,\n width: 0,\n })\n\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement>(null)\n const dropdownRef = useRef<HTMLDivElement>(null)\n\n const selectedOption = options.find((opt) => opt.value === value)\n const selectedIndex = Math.max(\n 0,\n options.findIndex((opt) => opt.value === value),\n )\n const dropdownTop = -(selectedIndex * OPTION_HEIGHT + DROPDOWN_PADDING)\n\n const updatePortalPosition = () => {\n if (!triggerRef.current || !portalRenderNode) return\n\n const triggerRect = triggerRef.current.getBoundingClientRect()\n const selectedOffset = selectedIndex * OPTION_HEIGHT + DROPDOWN_PADDING\n\n let top = triggerRect.top - selectedOffset\n\n const dropdownHeight = options.length * OPTION_HEIGHT + DROPDOWN_PADDING * 2\n const minTop = 8\n const maxTop = window.innerHeight - dropdownHeight - 8\n\n if (top < minTop) top = minTop\n if (top > maxTop) top = maxTop\n\n setPortalPosition({\n top,\n left: triggerRect.left - DROPDOWN_PADDING,\n width: triggerRect.width + DROPDOWN_PADDING * 2,\n })\n }\n\n const handleSelect = (optionValue: string) => {\n onChange?.(optionValue)\n setIsOpen(false)\n triggerRef.current?.focus()\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return\n\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setIsOpen((prev) => !prev)\n } else if (e.key === 'Escape' && isOpen) {\n e.preventDefault()\n setIsOpen(false)\n } else if (e.key === 'ArrowDown' && !isOpen) {\n e.preventDefault()\n setIsOpen(true)\n }\n }\n\n useLayoutEffect(() => {\n if (isOpen && portalRenderNode) {\n updatePortalPosition()\n }\n }, [isOpen, portalRenderNode, selectedIndex, options.length])\n\n useEffect(() => {\n if (!isOpen) return\n\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node\n const isOutsideContainer = containerRef.current && !containerRef.current.contains(target)\n const isOutsideDropdown = dropdownRef.current && !dropdownRef.current.contains(target)\n\n if (portalRenderNode) {\n if (isOutsideContainer && isOutsideDropdown) {\n setIsOpen(false)\n }\n } else {\n if (isOutsideContainer) {\n setIsOpen(false)\n }\n }\n }\n\n const handleScroll = () => {\n if (portalRenderNode) {\n updatePortalPosition()\n }\n }\n\n const handleResize = () => {\n if (portalRenderNode) {\n updatePortalPosition()\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n\n if (portalRenderNode) {\n window.addEventListener('scroll', handleScroll, true)\n window.addEventListener('resize', handleResize)\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n window.removeEventListener('scroll', handleScroll, true)\n window.removeEventListener('resize', handleResize)\n }\n }, [isOpen, portalRenderNode])\n\n const renderOptions = () =>\n options.map((option) => (\n <StyledOption\n key={option.value}\n type=\"button\"\n role=\"option\"\n $selected={option.value === value}\n $disabled={option.disabled ?? false}\n disabled={option.disabled}\n aria-selected={option.value === value}\n onClick={() => handleSelect(option.value)}\n className={css('option', classnames?.option)}\n >\n <span>{option.label}</span>\n {option.value === value && (\n <StyledCheckmark>\n <Check size={16} />\n </StyledCheckmark>\n )}\n </StyledOption>\n ))\n\n const dropdown = portalRenderNode ? (\n createPortal(\n <StyledPortalDropdown\n ref={dropdownRef}\n role=\"listbox\"\n style={{\n top: portalPosition.top,\n left: portalPosition.left,\n width: portalPosition.width,\n }}\n className={css('dropdown', classnames?.dropdown)}\n >\n {renderOptions()}\n </StyledPortalDropdown>,\n portalRenderNode,\n )\n ) : (\n <StyledDropdown\n ref={dropdownRef}\n role=\"listbox\"\n style={{ top: dropdownTop }}\n className={css('dropdown', classnames?.dropdown)}\n >\n {renderOptions()}\n </StyledDropdown>\n )\n\n return (\n <StyledContainer\n {...rest}\n ref={(node) => {\n ;(containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) ref.current = node\n }}\n $fullWidth={fullWidth}\n className={css('container', className)}\n >\n {label && <StyledLabel className={css('label', classnames?.label)}>{label}</StyledLabel>}\n\n <StyledTrigger\n ref={triggerRef}\n type=\"button\"\n $size={size}\n $variant={variant}\n $disabled={disabled}\n $hasValue={Boolean(selectedOption)}\n disabled={disabled}\n onClick={() => !disabled && setIsOpen((prev) => !prev)}\n onKeyDown={handleKeyDown}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n className={css('trigger', classnames?.trigger)}\n >\n <StyledTriggerText>{selectedOption?.label ?? placeholder}</StyledTriggerText>\n <StyledChevron $open={isOpen}>\n <ChevronDown size={16} />\n </StyledChevron>\n </StyledTrigger>\n\n {isOpen && dropdown}\n </StyledContainer>\n )\n}\n","import { StatusCardTrend } from './types'\nimport { COLORS } from '../../lib'\n\nexport const STATUS_CARD_TREND_COLORS: Record<StatusCardTrend, string> = {\n positive: COLORS.green,\n negative: COLORS.red,\n neutral: COLORS['iron-grey'],\n}\n","import { STATUS_CARD_TREND_COLORS } from './constants'\nimport { StatusCardTrend } from './types'\n\nexport const getTrendColor = (trend: StatusCardTrend) => {\n return STATUS_CARD_TREND_COLORS[trend] ?? STATUS_CARD_TREND_COLORS['neutral']\n}\n","import styled from '@emotion/styled'\n\nimport { getTrendColor } from './helpers'\nimport { StatusCardTrend } from './types'\nimport { COLORS } from '../../lib'\n\ntype StyledContainerProps = {\n $border: boolean\n $shadow: boolean\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 20px;\n background-color: ${COLORS.white};\n border-radius: 16px;\n border: ${({ $border }) => ($border ? '1px solid #e5e7eb' : 'none')};\n box-shadow: ${({ $shadow }) => ($shadow ? '0 4px 6px -1px rgba(0, 0, 0, 0.1)' : 'none')};\n`\n\nexport const StyledHeader = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n`\n\nexport const StyledLabel = styled.p`\n margin: 0;\n font-size: 13px;\n color: ${COLORS['iron-grey']};\n`\n\nexport const StyledIcon = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n background-color: #f5f5f5;\n color: ${COLORS['iron-grey']};\n\n & svg {\n width: 18px;\n height: 18px;\n }\n`\n\nexport const StyledValue = styled.h3`\n margin: 0;\n font-size: 28px;\n font-weight: 600;\n line-height: 1.2;\n color: ${COLORS.black};\n`\n\ntype StyledTrendProps = {\n $variant: StatusCardTrend\n}\n\nexport const StyledTrend = styled.p<StyledTrendProps>`\n margin: 0;\n font-size: 12px;\n color: ${({ $variant }) => getTrendColor($variant)};\n`\n","import {\n StyledContainer,\n StyledHeader,\n StyledIcon,\n StyledLabel,\n StyledTrend,\n StyledValue,\n} from './styled'\nimport { StatusCardProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('status-card')\n\nexport const StatusCard = ({\n border = false,\n className,\n classnames,\n icon,\n label,\n ref,\n shadow = false,\n trend,\n trendVariant = 'neutral',\n value,\n ...rest\n}: StatusCardProps) => {\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n className={css('container', className)}\n $border={border}\n $shadow={shadow}\n >\n <StyledHeader>\n <StyledLabel className={css('label', classnames?.label)}>{label}</StyledLabel>\n {icon && <StyledIcon>{icon}</StyledIcon>}\n </StyledHeader>\n <StyledValue className={css('value', classnames?.value)}>{value}</StyledValue>\n {trend && (\n <StyledTrend className={css('trend', classnames?.trend)} $variant={trendVariant}>\n {trend}\n </StyledTrend>\n )}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { StepperOrientation } from './types'\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div<{ $orientation: StepperOrientation }>`\n display: flex;\n align-items: ${(props) => (props.$orientation === 'vertical' ? 'flex-start' : 'center')};\n flex-direction: ${(props) => (props.$orientation === 'vertical' ? 'column' : 'row')};\n`\n\nexport const StyledStepWrapper = styled.div<{ $orientation: StepperOrientation }>`\n display: flex;\n align-items: ${(props) => (props.$orientation === 'vertical' ? 'flex-start' : 'center')};\n flex-direction: ${(props) => (props.$orientation === 'vertical' ? 'column' : 'row')};\n ${(props) => props.$orientation === 'horizontal' && 'flex: 1; min-width: 0;'}\n\n &:last-child {\n flex: 0;\n }\n`\n\nexport const StyledStep = styled.button<{\n $active: boolean\n $completed: boolean\n $clickable: boolean\n}>`\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 0;\n border: none;\n background: transparent;\n cursor: ${(props) => (props.$clickable ? 'pointer' : 'default')};\n flex-shrink: 0;\n`\n\nexport const StyledCircle = styled.div<{ $active: boolean; $completed: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n font-size: 14px;\n font-weight: 600;\n flex-shrink: 0;\n transition:\n background-color 0.2s ease,\n border-color 0.2s ease,\n color 0.2s ease;\n\n ${(props) =>\n props.$active || props.$completed\n ? `\n background-color: ${COLORS.black};\n border: 2px solid ${COLORS.black};\n color: ${COLORS.white};\n `\n : `\n background-color: transparent;\n border: 2px solid ${COLORS.gray};\n color: ${COLORS['iron-grey']};\n `}\n`\n\nexport const StyledLabel = styled.span<{ $active: boolean; $completed: boolean }>`\n font-size: 14px;\n font-weight: 500;\n white-space: nowrap;\n color: ${(props) => (props.$active || props.$completed ? COLORS.black : COLORS['iron-grey'])};\n transition: color 0.2s ease;\n`\n\nexport const StyledLine = styled.div<{ $completed: boolean; $orientation: StepperOrientation }>`\n background-color: ${(props) => (props.$completed ? COLORS.black : COLORS.gray)};\n transition: background-color 0.2s ease;\n\n ${(props) =>\n props.$orientation === 'vertical'\n ? `\n width: 2px;\n height: 24px;\n margin: 8px 0 8px 15px;\n `\n : `\n flex: 1;\n height: 2px;\n min-width: 16px;\n margin: 0 12px;\n `}\n`\n","import { useMemo } from 'react'\n\nimport {\n StyledCircle,\n StyledContainer,\n StyledLabel,\n StyledLine,\n StyledStep,\n StyledStepWrapper,\n} from './styled'\nimport { StepperProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('stepper')\n\nexport const Stepper = ({\n className,\n classnames,\n onChange,\n orientation = 'horizontal',\n ref,\n steps,\n value,\n ...rest\n}: StepperProps) => {\n const currentIndex = useMemo(() => {\n return steps.findIndex((step) => step.value === value)\n }, [steps, value])\n\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n $orientation={orientation}\n className={css('container', className)}\n >\n {steps.map((step, index) => {\n const isActive = step.value === value\n const isCompleted = index < currentIndex\n const isLast = index === steps.length - 1\n\n return (\n <StyledStepWrapper key={step.value} $orientation={orientation}>\n <StyledStep\n type=\"button\"\n $active={isActive}\n $completed={isCompleted}\n $clickable={Boolean(onChange)}\n onClick={() => onChange?.(step.value)}\n className={css('step', classnames?.step)}\n >\n <StyledCircle\n $active={isActive}\n $completed={isCompleted}\n className={css('circle', classnames?.circle)}\n >\n {index + 1}\n </StyledCircle>\n <StyledLabel\n $active={isActive}\n $completed={isCompleted}\n className={css('label', classnames?.label)}\n >\n {step.label}\n </StyledLabel>\n </StyledStep>\n {!isLast && (\n <StyledLine\n $completed={isCompleted}\n $orientation={orientation}\n className={css('line', classnames?.line)}\n />\n )}\n </StyledStepWrapper>\n )\n })}\n </StyledContainer>\n )\n}\n","import { TagsVariant } from './types'\nimport { COLORS } from '../../lib'\n\ntype VariantProps = {\n border: string\n label: string\n}\n\nexport const VARIANT_PROPS: Record<TagsVariant, VariantProps> = {\n normal: {\n border: COLORS['iron-grey'],\n label: COLORS.black,\n },\n error: {\n border: COLORS.red,\n label: COLORS.red,\n },\n}\n","import styled from '@emotion/styled'\n\nimport { VARIANT_PROPS } from './constants'\nimport { TagsVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { alpha, COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 4px;\n`\n\nexport const StyledLabel = styled(FieldLabel)<{ $variant: TagsVariant }>`\n margin-left: 6px;\n color: ${(props) => VARIANT_PROPS[props.$variant].label};\n`\n\nexport const StyledTrigger = styled.div<{\n $variant: TagsVariant\n $disabled: boolean\n $focused: boolean\n}>`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 6px;\n min-height: 44px;\n padding: 8px 12px;\n border: 1px dashed ${(props) => VARIANT_PROPS[props.$variant].border};\n border-radius: 8px;\n background: ${COLORS.white};\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'text')};\n opacity: ${(props) => (props.$disabled ? 0.5 : 1)};\n transition: border-color 0.15s ease;\n\n &:hover {\n border-color: ${(props) =>\n props.$disabled\n ? VARIANT_PROPS[props.$variant].border\n : props.$variant === 'error'\n ? COLORS.red\n : COLORS.black};\n }\n\n ${(props) =>\n props.$focused &&\n `\n outline: 2px solid ${props.$variant === 'error' ? COLORS.red : COLORS['steel-blue']};\n outline-offset: 2px;\n `}\n`\n\nexport const StyledInput = styled.input<{ $disabled: boolean }>`\n flex: 1;\n min-width: 80px;\n border: none;\n outline: none;\n background: transparent;\n font-size: 14px;\n color: ${COLORS.black};\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'text')};\n\n &::placeholder {\n color: ${COLORS['iron-grey']};\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n`\n\nconst dropdownStyles = `\n z-index: 100;\n background-color: ${COLORS.white};\n border: 1px solid ${alpha(COLORS.black, 15)};\n border-radius: 8px;\n box-shadow: 0 4px 16px ${alpha(COLORS.black, 12)};\n max-height: 200px;\n overflow-y: auto;\n`\n\nconst getDropdownTransform = ($open: boolean, $position: 'bottom' | 'top') => {\n if ($open) return 'translateY(0)'\n return $position === 'bottom' ? 'translateY(-8px)' : 'translateY(8px)'\n}\n\nconst getDropdownTransition = `\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n\nexport const StyledDropdown = styled.div<{ $open: boolean; $position: 'bottom' | 'top' }>`\n position: absolute;\n left: 0;\n right: 0;\n ${(props) =>\n props.$position === 'bottom' ? 'top: calc(100% + 4px);' : 'bottom: calc(100% + 4px);'}\n ${dropdownStyles}\n opacity: ${(props) => (props.$open ? 1 : 0)};\n visibility: ${(props) => (props.$open ? 'visible' : 'hidden')};\n transform: ${(props) => getDropdownTransform(props.$open, props.$position)};\n transition: ${getDropdownTransition};\n`\n\nexport const StyledPortalDropdown = styled.div<{ $open: boolean; $position: 'bottom' | 'top' }>`\n position: fixed;\n ${dropdownStyles}\n opacity: ${(props) => (props.$open ? 1 : 0)};\n visibility: ${(props) => (props.$open ? 'visible' : 'hidden')};\n transform: ${(props) => getDropdownTransform(props.$open, props.$position)};\n transition: ${getDropdownTransition};\n`\n\nexport const StyledOption = styled.button`\n display: flex;\n align-items: center;\n width: 100%;\n padding: 10px 12px;\n border: none;\n background: transparent;\n font-size: 14px;\n color: ${COLORS.black};\n text-align: left;\n cursor: pointer;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${COLORS.gray};\n }\n\n &:first-of-type {\n border-radius: 7px 7px 0 0;\n }\n\n &:last-of-type {\n border-radius: 0 0 7px 7px;\n }\n\n &:only-child {\n border-radius: 7px;\n }\n`\n\nexport const StyledEmpty = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n color: ${COLORS['iron-grey']};\n font-size: 14px;\n text-align: center;\n`\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport {\n StyledContainer,\n StyledDropdown,\n StyledEmpty,\n StyledInput,\n StyledLabel,\n StyledOption,\n StyledPortalDropdown,\n StyledTrigger,\n} from './styled'\nimport { TagsProps } from './types'\nimport { Chip } from '../Chip'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('tags')\n\nconst DROPDOWN_GAP = 4\n\ntype PortalPosition = {\n top: number\n left: number\n width: number\n}\n\nexport const Tags = ({\n className,\n classnames,\n createKey = 'Tab',\n disabled = false,\n emptyMessage = 'No options',\n freeSolo = true,\n label,\n onChange,\n options = [],\n placeholder = 'Add tag...',\n portalRenderNode,\n ref,\n value,\n variant = 'normal',\n ...rest\n}: TagsProps) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n const dropdownRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const [inputValue, setInputValue] = useState('')\n const [isFocused, setIsFocused] = useState(false)\n const [dropdownPosition, setDropdownPosition] = useState<'bottom' | 'top'>('bottom')\n const [portalPosition, setPortalPosition] = useState<PortalPosition>({\n top: 0,\n left: 0,\n width: 0,\n })\n\n const filteredOptions = useMemo(() => {\n const available = options.filter((opt) => !value.includes(opt.value))\n if (!inputValue.trim()) return available\n const query = inputValue.toLowerCase().trim()\n return available.filter((opt) => opt.label.toLowerCase().includes(query))\n }, [options, value, inputValue])\n\n const showDropdown = isFocused && options.length > 0\n\n const updateDropdownPosition = useCallback(() => {\n if (!triggerRef.current) return\n\n const rect = triggerRef.current.getBoundingClientRect()\n const dropdownHeight = dropdownRef.current?.offsetHeight ?? 200\n const spaceBelow = window.innerHeight - rect.bottom - DROPDOWN_GAP\n const spaceAbove = rect.top - DROPDOWN_GAP\n\n const newPosition: 'bottom' | 'top' =\n spaceBelow < dropdownHeight && spaceAbove > spaceBelow ? 'top' : 'bottom'\n setDropdownPosition(newPosition)\n\n if (portalRenderNode) {\n const top =\n newPosition === 'bottom'\n ? rect.bottom + DROPDOWN_GAP\n : rect.top - dropdownHeight - DROPDOWN_GAP\n\n setPortalPosition({\n top,\n left: rect.left,\n width: rect.width,\n })\n }\n }, [portalRenderNode])\n\n useEffect(() => {\n if (isFocused) {\n updateDropdownPosition()\n window.addEventListener('scroll', updateDropdownPosition, true)\n window.addEventListener('resize', updateDropdownPosition)\n return () => {\n window.removeEventListener('scroll', updateDropdownPosition, true)\n window.removeEventListener('resize', updateDropdownPosition)\n }\n }\n }, [isFocused, updateDropdownPosition])\n\n const addTag = useCallback(\n (tagValue: string) => {\n const trimmed = tagValue.trim()\n if (!trimmed || value.includes(trimmed)) return false\n onChange([...value, trimmed])\n setInputValue('')\n return true\n },\n [value, onChange],\n )\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === createKey && inputValue.trim()) {\n e.preventDefault()\n if (freeSolo) {\n addTag(inputValue)\n } else {\n const matchingOption = filteredOptions.find(\n (opt) => opt.label.toLowerCase() === inputValue.toLowerCase().trim(),\n )\n if (matchingOption) {\n addTag(matchingOption.value)\n }\n }\n } else if (e.key === 'Backspace' && !inputValue && value.length > 0) {\n onChange(value.slice(0, -1))\n }\n }\n\n const handleOptionClick = (optionValue: string) => {\n addTag(optionValue)\n inputRef.current?.focus()\n }\n\n const handleRemove = (tagValue: string) => {\n onChange(value.filter((v) => v !== tagValue))\n }\n\n const handleContainerClick = () => {\n if (!disabled) {\n inputRef.current?.focus()\n }\n }\n\n const getTagLabel = (tagValue: string) => {\n const option = options.find((opt) => opt.value === tagValue)\n return option?.label ?? tagValue\n }\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {label && (\n <StyledLabel $variant={variant} className={css('label')}>\n {label}\n </StyledLabel>\n )}\n <div ref={containerRef} style={{ position: 'relative' }}>\n <StyledTrigger\n ref={triggerRef}\n $variant={variant}\n $disabled={disabled}\n $focused={isFocused}\n onClick={handleContainerClick}\n className={css('trigger', classnames?.trigger)}\n >\n {value.map((tag) => (\n <Chip\n key={tag}\n deletable={!disabled}\n onDelete={() => handleRemove(tag)}\n className={css('chip', classnames?.chip)}\n >\n {getTagLabel(tag)}\n </Chip>\n ))}\n <StyledInput\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setTimeout(() => setIsFocused(false), 150)}\n onKeyDown={handleKeyDown}\n placeholder={value.length === 0 ? placeholder : ''}\n disabled={disabled}\n $disabled={disabled}\n className={css('input', classnames?.input)}\n />\n </StyledTrigger>\n\n {options.length > 0 &&\n (portalRenderNode ? (\n createPortal(\n <StyledPortalDropdown\n ref={dropdownRef}\n $open={showDropdown}\n $position={dropdownPosition}\n style={{\n top: portalPosition.top,\n left: portalPosition.left,\n width: portalPosition.width,\n }}\n className={css('dropdown', classnames?.dropdown)}\n >\n {filteredOptions.length === 0 ? (\n <StyledEmpty className={css('empty', classnames?.empty)}>\n {emptyMessage}\n </StyledEmpty>\n ) : (\n filteredOptions.map((opt) => (\n <StyledOption\n key={opt.value}\n type=\"button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => handleOptionClick(opt.value)}\n className={css('option', classnames?.option)}\n >\n {opt.label}\n </StyledOption>\n ))\n )}\n </StyledPortalDropdown>,\n portalRenderNode,\n )\n ) : (\n <StyledDropdown\n ref={dropdownRef}\n $open={showDropdown}\n $position={dropdownPosition}\n className={css('dropdown', classnames?.dropdown)}\n >\n {filteredOptions.length === 0 ? (\n <StyledEmpty className={css('empty', classnames?.empty)}>\n {emptyMessage}\n </StyledEmpty>\n ) : (\n filteredOptions.map((opt) => (\n <StyledOption\n key={opt.value}\n type=\"button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => handleOptionClick(opt.value)}\n className={css('option', classnames?.option)}\n >\n {opt.label}\n </StyledOption>\n ))\n )}\n </StyledDropdown>\n ))}\n </div>\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 6px;\n`\n\nexport const StyledTab = styled.button<{ $active: boolean; $disabled: boolean }>`\n padding: 6px 16px;\n border: none;\n border-radius: 12px;\n background-color: ${(props) => (props.$active ? COLORS.gray : 'transparent')};\n color: ${COLORS.black};\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.$disabled ? 0.5 : 1)};\n transition:\n background-color 0.15s ease,\n opacity 0.15s ease;\n\n &:hover:not(:disabled) {\n background-color: ${(props) => (props.$active ? COLORS.gray : 'rgba(0, 0, 0, 0.05)')};\n }\n`\n","import { StyledContainer, StyledTab } from './styled'\nimport { TabsProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('tabs')\n\nexport const Tabs = ({ className, classnames, onChange, ref, tabs, value, ...rest }: TabsProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} role=\"tablist\">\n {tabs.map((tab) => (\n <StyledTab\n key={tab.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={value === tab.value}\n $active={value === tab.value}\n $disabled={Boolean(tab.disabled)}\n disabled={tab.disabled}\n onClick={() => onChange(tab.value)}\n className={css('tab', classnames?.tab)}\n >\n {tab.label}\n </StyledTab>\n ))}\n </StyledContainer>\n )\n}\n","import { TextareaVariant } from './types'\nimport { alpha, COLORS, VacanoInteractiveElementState } from '../../lib'\n\nexport const TEXTAREA_VARIANT_PROPS: Record<\n TextareaVariant,\n {\n border: VacanoInteractiveElementState\n background: VacanoInteractiveElementState\n color: VacanoInteractiveElementState\n placeholder: VacanoInteractiveElementState\n focus: string\n }\n> = {\n normal: {\n background: {\n static: alpha(COLORS['black'], 2),\n disabled: alpha(COLORS['black'], 10),\n },\n border: {\n static: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 10),\n },\n color: {\n static: COLORS['black'],\n disabled: alpha(COLORS['black'], 65),\n },\n placeholder: {\n static: alpha(COLORS['black'], 40),\n disabled: alpha(COLORS['black'], 65),\n },\n focus: alpha(COLORS['iron-grey'], 30),\n },\n error: {\n background: {\n static: alpha(COLORS['red'], 2),\n disabled: alpha(COLORS['red'], 10),\n },\n border: {\n static: alpha(COLORS['red'], 60),\n disabled: alpha(COLORS['red'], 10),\n },\n color: {\n static: COLORS['red'],\n disabled: alpha(COLORS['red'], 65),\n },\n placeholder: {\n static: alpha(COLORS['red'], 40),\n disabled: alpha(COLORS['red'], 65),\n },\n focus: alpha(COLORS['red'], 30),\n },\n}\n","import { TEXTAREA_VARIANT_PROPS } from './constants'\nimport { TextareaVariant } from './types'\n\nexport const getTextareaVariantProps = (variant: TextareaVariant) => {\n return TEXTAREA_VARIANT_PROPS[variant] ?? TEXTAREA_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getTextareaVariantProps } from './helpers'\nimport { TextareaVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\n\ntype StyledTextareaProps = {\n $variant: TextareaVariant\n}\n\nexport const StyledContainer = styled.div<{ $fullWidth: boolean }>`\n display: grid;\n flex-direction: column;\n gap: 2px;\n width: ${(props) => (props.$fullWidth ? '100%' : 'fit-content')};\n`\n\nexport const StyledLabel = styled(FieldLabel)`\n margin-left: 6px;\n`\n\nexport const StyledTextarea = styled.textarea<StyledTextareaProps>`\n flex: 1;\n min-width: 0;\n outline: none;\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n padding: 10px 14px;\n border-radius: 16px;\n resize: vertical;\n\n color: ${(props) => getTextareaVariantProps(props.$variant).color.static};\n border: 1px solid ${(props) => getTextareaVariantProps(props.$variant).border.static};\n background-color: ${(props) => getTextareaVariantProps(props.$variant).background.static};\n\n &::placeholder {\n color: ${(props) => getTextareaVariantProps(props.$variant).placeholder.static};\n }\n\n &:disabled {\n cursor: not-allowed;\n resize: none;\n color: ${(props) => getTextareaVariantProps(props.$variant).color.disabled};\n background-color: ${(props) => getTextareaVariantProps(props.$variant).background.disabled};\n border-color: ${(props) => getTextareaVariantProps(props.$variant).border.disabled};\n\n &::placeholder {\n color: ${(props) => getTextareaVariantProps(props.$variant).placeholder.disabled};\n }\n }\n`\n","import { StyledContainer, StyledLabel, StyledTextarea } from './styled'\nimport { TextareaProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('textarea')\n\nexport const Textarea = ({\n className,\n classnames,\n disabled,\n fullWidth,\n label,\n ref,\n variant = 'normal',\n rows = 4,\n ...rest\n}: TextareaProps) => {\n return (\n <StyledContainer className={css('container', className)} $fullWidth={Boolean(fullWidth)}>\n {label && (\n <StyledLabel variant={variant} className={css('label', classnames?.label)}>\n {label}\n </StyledLabel>\n )}\n <StyledTextarea\n {...rest}\n ref={ref}\n rows={rows}\n disabled={disabled}\n $variant={variant}\n className={css('textarea', classnames?.textarea)}\n />\n </StyledContainer>\n )\n}\n","import { createContext } from 'react'\n\nimport type { ToastContextValue } from './types'\n\nexport const ToastContext = createContext<ToastContextValue | null>(null)\n","import { ToastVariant } from './types'\nimport { COLORS } from '../../lib'\n\nexport const MAX_VISIBLE_TOASTS = 3\n\ntype ToastVariantColors = {\n background: string\n text: string\n border: string\n}\n\nexport const TOAST_VARIANT_COLORS: Record<ToastVariant, ToastVariantColors> = {\n default: {\n background: '#374151',\n text: COLORS.white,\n border: '#374151',\n },\n success: {\n background: COLORS.green,\n text: COLORS.white,\n border: COLORS.green,\n },\n warning: {\n background: COLORS.yellow,\n text: COLORS.white,\n border: COLORS.yellow,\n },\n danger: {\n background: COLORS.red,\n text: COLORS.white,\n border: COLORS.red,\n },\n}\n","import { MAX_VISIBLE_TOASTS } from './constants'\nimport type { ToastAction, ToastState } from './types'\n\nexport const toastReducer = (state: ToastState, action: ToastAction): ToastState => {\n switch (action.type) {\n case 'ADD_TOAST': {\n const newToast = action.payload\n\n if (state.toasts.length < MAX_VISIBLE_TOASTS) {\n return {\n ...state,\n toasts: [...state.toasts, newToast],\n }\n }\n\n return {\n ...state,\n queue: [...state.queue, newToast],\n }\n }\n\n case 'REMOVE_TOAST': {\n const toastId = action.payload\n const updatedToasts = state.toasts.filter((toast) => toast.id !== toastId)\n const nextToast = state.queue[0]\n\n if (nextToast && updatedToasts.length < MAX_VISIBLE_TOASTS) {\n return {\n toasts: [...updatedToasts, nextToast],\n queue: state.queue.slice(1),\n }\n }\n\n return {\n ...state,\n toasts: updatedToasts,\n }\n }\n\n case 'SHOW_NEXT_FROM_QUEUE': {\n const nextToast = state.queue[0]\n\n if (!nextToast || state.toasts.length >= MAX_VISIBLE_TOASTS) {\n return state\n }\n\n return {\n toasts: [...state.toasts, nextToast],\n queue: state.queue.slice(1),\n }\n }\n\n default:\n return state\n }\n}\n\nexport const initialToastState: ToastState = {\n toasts: [],\n queue: [],\n}\n","import { TOAST_VARIANT_COLORS } from './constants'\nimport { ToastVariant } from './types'\n\nexport const getToastVariantColors = (variant: ToastVariant) => {\n return TOAST_VARIANT_COLORS[variant] ?? TOAST_VARIANT_COLORS['default']\n}\n","import styled from '@emotion/styled'\n\nimport { getToastVariantColors } from './helpers'\nimport type { ToastVariant } from './types'\nimport { COLORS, KEYFRAMES } from '../../lib'\n\nexport const StyledToastrContainer = styled.div`\n position: fixed;\n bottom: 24px;\n left: 24px;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n width: auto;\n max-width: 90vw;\n`\n\ntype StyledToastProps = {\n $variant: ToastVariant\n $isExiting: boolean\n}\n\nexport const StyledToast = styled.div<StyledToastProps>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n min-height: 32px;\n padding: 8px 8px 8px 16px;\n background-color: ${({ $variant }) => getToastVariantColors($variant).background};\n color: ${({ $variant }) => getToastVariantColors($variant).text};\n border: 1px solid ${({ $variant }) => getToastVariantColors($variant).border};\n border-radius: 96px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n animation: ${({ $isExiting }) =>\n $isExiting ? KEYFRAMES.slideOutBottomFade : KEYFRAMES.slideInBottomFade}\n 0.3s ease-out;\n pointer-events: auto;\n max-width: 500px;\n`\n\nexport const StyledToastMessage = styled.span`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`\n\nexport const StyledToastCloseButton = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n background: transparent;\n border: none;\n color: inherit;\n cursor: pointer;\n opacity: 0.7;\n transition: opacity 0.2s ease-in-out;\n flex-shrink: 0;\n\n &:hover {\n opacity: 1;\n }\n`\n\nexport const StyledToastrBottomRow = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n width: 100%;\n`\n\nexport const StyledQueueCounter = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 32px;\n padding: 8px 16px;\n background-color: #374151;\n color: ${COLORS.white};\n border-radius: 96px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n pointer-events: auto;\n font-size: 14px;\n font-weight: 500;\n white-space: nowrap;\n margin-left: auto;\n`\n","import { useEffect, useState } from 'react'\n\nimport { StyledToast, StyledToastCloseButton, StyledToastMessage } from './styled'\nimport type { ToastItemProps } from './types'\nimport { X } from '../../icons/Lucide'\n\nexport const ToastItem = ({ toast, onRemove }: ToastItemProps) => {\n const [isExiting, setIsExiting] = useState(false)\n\n const handleRemove = () => {\n setIsExiting(true)\n setTimeout(() => {\n onRemove(toast.id)\n }, 300)\n }\n\n useEffect(() => {\n if (toast.duration) {\n const timer = setTimeout(() => {\n handleRemove()\n }, toast.duration)\n\n return () => clearTimeout(timer)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [toast.duration, toast.id])\n\n return (\n <StyledToast $variant={toast.variant} $isExiting={isExiting}>\n <StyledToastMessage>{toast.message}</StyledToastMessage>\n <StyledToastCloseButton onClick={handleRemove}>\n <X style={{ width: 16, height: 16 }} />\n </StyledToastCloseButton>\n </StyledToast>\n )\n}\n","import { StyledQueueCounter, StyledToastrBottomRow, StyledToastrContainer } from './styled'\nimport { ToastItem } from './ToastItem'\nimport type { ToastContainerProps } from './types'\n\nexport const ToastContainer = ({ toasts, queueCount, removeToast }: ToastContainerProps) => {\n if (toasts.length === 0) {\n return null\n }\n\n const lastIndex = toasts.length - 1\n\n return (\n <StyledToastrContainer>\n {toasts.map((toast, index) => {\n if (index === lastIndex && queueCount > 0) {\n return (\n <StyledToastrBottomRow key={toast.id}>\n <ToastItem toast={toast} onRemove={removeToast} />\n <StyledQueueCounter>+{queueCount}</StyledQueueCounter>\n </StyledToastrBottomRow>\n )\n }\n\n return <ToastItem key={toast.id} toast={toast} onRemove={removeToast} />\n })}\n </StyledToastrContainer>\n )\n}\n","import { useCallback, useReducer, type PropsWithChildren } from 'react'\n\nimport { ToastContext } from './context'\nimport { initialToastState, toastReducer } from './reducer'\nimport { ToastContainer } from './ToastContainer'\nimport type { ToastVariant } from './types'\n\nexport const ToastProvider = ({ children }: PropsWithChildren) => {\n const [state, dispatch] = useReducer(toastReducer, initialToastState)\n\n const addToast = useCallback(\n (message: string, variant: ToastVariant = 'default', duration?: number) => {\n const id = `toast-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n\n dispatch({\n type: 'ADD_TOAST',\n payload: {\n id,\n message,\n variant,\n duration,\n },\n })\n },\n [],\n )\n\n const removeToast = useCallback((id: string) => {\n dispatch({\n type: 'REMOVE_TOAST',\n payload: id,\n })\n }, [])\n\n return (\n <ToastContext.Provider value={{ addToast, removeToast }}>\n {children}\n <ToastContainer\n toasts={state.toasts}\n queueCount={state.queue.length}\n removeToast={removeToast}\n />\n </ToastContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { ToastContext } from './context'\n\nexport const useToast = () => {\n const context = useContext(ToastContext)\n\n if (!context) {\n throw new Error('useToast must be used within ToastProvider')\n }\n\n return context\n}\n","import { TooltipVariant } from './types'\nimport { COLORS } from '../../lib'\n\ntype TooltipVariantColors = {\n background: string\n text: string\n border?: string\n}\n\nexport const TOOLTIP_VARIANT_COLORS: Record<TooltipVariant, TooltipVariantColors> = {\n dark: {\n background: COLORS.black,\n text: COLORS.white,\n },\n light: {\n background: COLORS.white,\n text: COLORS.black,\n border: COLORS.gray,\n },\n success: {\n background: COLORS.green,\n text: COLORS.white,\n },\n warning: {\n background: COLORS.yellow,\n text: COLORS.white,\n },\n danger: {\n background: COLORS.red,\n text: COLORS.white,\n },\n}\n","import { TOOLTIP_VARIANT_COLORS } from './constants'\nimport { TooltipVariant } from './types'\n\nexport const getTooltipVariantColors = (variant: TooltipVariant) => {\n return TOOLTIP_VARIANT_COLORS[variant] ?? TOOLTIP_VARIANT_COLORS['dark']\n}\n","import styled from '@emotion/styled'\n\nimport { getTooltipVariantColors } from './helpers'\nimport { TooltipPlacement, TooltipVariant } from './types'\n\ntype StyledContentProps = {\n $placement: TooltipPlacement\n $variant: TooltipVariant\n $visible: boolean\n}\n\nconst getArrowStyles = ($placement: TooltipPlacement, $variant: TooltipVariant) => {\n const arrowColor = getTooltipVariantColors($variant).background\n switch ($placement) {\n case 'top':\n return `\n bottom: -12px;\n left: 50%;\n margin-left: -6px;\n border-top-color: ${arrowColor};\n `\n case 'bottom':\n return `\n top: -12px;\n left: 50%;\n margin-left: -6px;\n border-bottom-color: ${arrowColor};\n `\n case 'left':\n return `\n right: -12px;\n top: 50%;\n margin-top: -6px;\n border-left-color: ${arrowColor};\n `\n case 'right':\n return `\n left: -12px;\n top: 50%;\n margin-top: -6px;\n border-right-color: ${arrowColor};\n `\n default:\n return ''\n }\n}\n\nconst getLightArrowStyles = ($placement: TooltipPlacement, $variant: TooltipVariant) => {\n if ($variant !== 'light') return ''\n const borderColor = getTooltipVariantColors($variant).border\n switch ($placement) {\n case 'top':\n return `\n &::after {\n bottom: -14px;\n left: 50%;\n margin-left: -7px;\n border-top-color: ${borderColor};\n }\n `\n case 'bottom':\n return `\n &::after {\n top: -14px;\n left: 50%;\n margin-left: -7px;\n border-bottom-color: ${borderColor};\n }\n `\n case 'left':\n return `\n &::after {\n right: -14px;\n top: 50%;\n margin-top: -7px;\n border-left-color: ${borderColor};\n }\n `\n case 'right':\n return `\n &::after {\n left: -14px;\n top: 50%;\n margin-top: -7px;\n border-right-color: ${borderColor};\n }\n `\n default:\n return ''\n }\n}\n\nconst contentBaseStyles = (props: StyledContentProps) => `\n z-index: 1000;\n padding: 6px 12px;\n background-color: ${getTooltipVariantColors(props.$variant).background};\n color: ${getTooltipVariantColors(props.$variant).text};\n font-size: 13px;\n line-height: 1.4;\n border-radius: 6px;\n width: max-content;\n max-width: 300px;\n white-space: normal;\n word-wrap: break-word;\n pointer-events: none;\n opacity: ${props.$visible ? 1 : 0};\n visibility: ${props.$visible ? 'visible' : 'hidden'};\n transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n\n ${props.$variant === 'light' ? `border: 1px solid ${getTooltipVariantColors(props.$variant).border};` : ''}\n\n &::before {\n content: '';\n position: absolute;\n width: 0;\n height: 0;\n border: 6px solid transparent;\n ${getArrowStyles(props.$placement, props.$variant)}\n }\n\n ${\n props.$variant === 'light'\n ? `\n &::after {\n content: '';\n position: absolute;\n width: 0;\n height: 0;\n border: 7px solid transparent;\n }\n `\n : ''\n }\n\n ${getLightArrowStyles(props.$placement, props.$variant)}\n`\n\nexport const StyledWrapper = styled.div`\n position: relative;\n display: inline-block;\n`\n\nconst getPlacementStyles = ($placement: TooltipPlacement) => {\n switch ($placement) {\n case 'top':\n return `\n bottom: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%);\n `\n case 'bottom':\n return `\n top: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%);\n `\n case 'left':\n return `\n right: calc(100% + 8px);\n top: 50%;\n transform: translateY(-50%);\n `\n case 'right':\n return `\n left: calc(100% + 8px);\n top: 50%;\n transform: translateY(-50%);\n `\n default:\n return ''\n }\n}\n\nexport const StyledContent = styled.div<StyledContentProps>`\n position: absolute;\n ${(props) => contentBaseStyles(props)}\n ${({ $placement }) => getPlacementStyles($placement)}\n`\n\nexport const StyledPortalContent = styled.div<StyledContentProps>`\n position: fixed;\n ${(props) => contentBaseStyles(props)}\n`\n","import { useCallback, useLayoutEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { StyledContent, StyledPortalContent, StyledWrapper } from './styled'\nimport { TooltipPlacement, TooltipProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('tooltip')\n\nconst TOOLTIP_GAP = 8\n\ntype PortalPosition = {\n top: number\n left: number\n}\n\nexport const Tooltip = ({\n children,\n className,\n classnames,\n content,\n delay = 200,\n placement = 'top',\n portalRenderNode,\n ref,\n variant = 'dark',\n ...rest\n}: TooltipProps) => {\n const [visible, setVisible] = useState(false)\n const [timeoutId, setTimeoutId] = useState<ReturnType<typeof setTimeout> | null>(null)\n const [actualPlacement, setActualPlacement] = useState<TooltipPlacement>(placement)\n const [portalPosition, setPortalPosition] = useState<PortalPosition>({ top: 0, left: 0 })\n\n const wrapperRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n const updatePosition = useCallback(() => {\n if (!wrapperRef.current) return\n\n const triggerRect = wrapperRef.current.getBoundingClientRect()\n const contentWidth = contentRef.current?.offsetWidth ?? 100\n const contentHeight = contentRef.current?.offsetHeight ?? 30\n\n const spaceTop = triggerRect.top - TOOLTIP_GAP\n const spaceBottom = window.innerHeight - triggerRect.bottom - TOOLTIP_GAP\n const spaceLeft = triggerRect.left - TOOLTIP_GAP\n const spaceRight = window.innerWidth - triggerRect.right - TOOLTIP_GAP\n\n let newPlacement = placement\n\n // Auto-adjust placement if not enough space\n if (placement === 'top' && spaceTop < contentHeight && spaceBottom > spaceTop) {\n newPlacement = 'bottom'\n } else if (placement === 'bottom' && spaceBottom < contentHeight && spaceTop > spaceBottom) {\n newPlacement = 'top'\n } else if (placement === 'left' && spaceLeft < contentWidth && spaceRight > spaceLeft) {\n newPlacement = 'right'\n } else if (placement === 'right' && spaceRight < contentWidth && spaceLeft > spaceRight) {\n newPlacement = 'left'\n }\n\n setActualPlacement(newPlacement)\n\n if (portalRenderNode) {\n let top: number\n let left: number\n\n switch (newPlacement) {\n case 'top':\n top = triggerRect.top - contentHeight - TOOLTIP_GAP\n left = triggerRect.left + triggerRect.width / 2 - contentWidth / 2\n break\n case 'bottom':\n top = triggerRect.bottom + TOOLTIP_GAP\n left = triggerRect.left + triggerRect.width / 2 - contentWidth / 2\n break\n case 'left':\n top = triggerRect.top + triggerRect.height / 2 - contentHeight / 2\n left = triggerRect.left - contentWidth - TOOLTIP_GAP\n break\n case 'right':\n top = triggerRect.top + triggerRect.height / 2 - contentHeight / 2\n left = triggerRect.right + TOOLTIP_GAP\n break\n default:\n top = 0\n left = 0\n }\n\n // Clamp to viewport\n const padding = 8\n left = Math.max(padding, Math.min(left, window.innerWidth - contentWidth - padding))\n top = Math.max(padding, Math.min(top, window.innerHeight - contentHeight - padding))\n\n setPortalPosition({ top, left })\n }\n }, [placement, portalRenderNode])\n\n useLayoutEffect(() => {\n if (visible) {\n updatePosition()\n }\n }, [visible, updatePosition])\n\n const handleMouseEnter = () => {\n const id = setTimeout(() => {\n setVisible(true)\n }, delay)\n setTimeoutId(id)\n }\n\n const handleMouseLeave = () => {\n if (timeoutId) {\n clearTimeout(timeoutId)\n setTimeoutId(null)\n }\n setVisible(false)\n }\n\n const tooltipContent = portalRenderNode ? (\n createPortal(\n <StyledPortalContent\n ref={contentRef}\n className={css('content', classnames?.content)}\n $placement={actualPlacement}\n $variant={variant}\n $visible={visible}\n style={{ top: portalPosition.top, left: portalPosition.left }}\n >\n {content}\n </StyledPortalContent>,\n portalRenderNode,\n )\n ) : (\n <StyledContent\n ref={contentRef}\n className={css('content', classnames?.content)}\n $placement={actualPlacement}\n $variant={variant}\n $visible={visible}\n >\n {content}\n </StyledContent>\n )\n\n return (\n <StyledWrapper\n {...rest}\n ref={(node) => {\n ;(wrapperRef as React.MutableRefObject<HTMLDivElement | null>).current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) ref.current = node\n }}\n className={css('wrapper', className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {children}\n {tooltipContent}\n </StyledWrapper>\n )\n}\n"],"names":["_extends","n","e","t","r","globalStyles","css","GlobalStyle","jsx","Global","reactPropsRegex","isPropValid","memoize","prop","testOmitPropsOnStringTag","testOmitPropsOnComponent","key","getDefaultShouldForwardProp","tag","composeShouldForwardProps","options","isReal","shouldForwardProp","optionsShouldForwardProp","propName","Insertion","_ref","cache","serialized","isStringTag","registerStyles","useInsertionEffectAlwaysWithSyncFallback","insertStyles","createStyled","baseTag","identifierName","targetClassName","defaultShouldForwardProp","shouldUseAs","args","styles","templateStringsArr","len","i","Styled","withEmotionCache","props","ref","FinalTag","className","classInterpolations","mergedProps","React","ThemeContext","getRegisteredStyles","serializeStyles","finalShouldForwardProp","newProps","_key","nextTag","nextOptions","newStyled","tags","styled","tagName","StyledFieldLabel","COLORS","newClassNameGetter","FieldLabel","children","required","variant","rest","jsxs","SIZE_PROPS","VARIANT_PROPS","alpha","StyledContainer","StyledLabel","StyledInputWrapper","StyledInput","StyledSpinnerWrapper","StyledDropdown","$open","StyledItem","StyledItemImage","StyledItemText","StyledEmpty","SPINNER_SIZE_PROPS","SPINNER_COLORS","getSpinnerSizeProps","size","spin","keyframes","StyledSpinner","Spinner","ariaLabel","Autocomplete","classnames","disabled","fullWidth","label","value","onChange","onSearch","debounceMs","minChars","noResultsMessage","inputValue","setInputValue","useState","suggestions","setSuggestions","isLoading","setIsLoading","isOpen","setIsOpen","hasSearched","setHasSearched","containerRef","useRef","debounceRef","useEffect","handleSearch","useCallback","query","results","handleInputChange","newValue","handleSelect","suggestion","handleBlur","handleFocus","BUTTON_SIZE_PROPS","BUTTON_VARIANT_PROPS","getButtonVariantProps","result","getButtonSizeProps","getButtonWidthProps","StyledButton","StyledIcon","StyledLoading","LoaderCircle","KEYFRAMES","StyledKeyBindings","StyledKeySymbol","KeySymbol","symbol","KeysBindings","keys","symbols","useMemo","getKeySymbols","item","Button","icon","loading","onClick","keyBindings","type","buttonRef","useImperativeHandle","useKeyBinding","_a","computedType","StyledCard","Card","border","shadow","CHECKBOX_VARIANT_PROPS","getCheckboxVariantProps","StyledBox","Checkbox","checked","indeterminate","Minus","Check","CHECKBOX_CARD_VARIANT_PROPS","getCheckboxCardVariantProps","variantProps","StyledContent","StyledDescription","CheckboxCard","description","CHECKBOX_GROUP_PROPS","StyledOptions","CheckboxGroup","handleChange","optionValue","v","option","CHIP_VARIANT_PROPS","getChipVariantProps","StyledDelete","Chip","deletable","onDelete","X","DEFAULT_CONFIRM_LABEL","DEFAULT_CANCEL_LABEL","slideIn","slideOut","$isExiting","StyledMessage","StyledActions","ConfirmationBar","confirmation","onDone","isExiting","setIsExiting","message","onConfirm","onCancel","confirmLabel","cancelLabel","exit","callback","handleConfirm","handleCancel","handleKeyDown","ConfirmationContext","createContext","noop","ConfirmationProvider","state","setState","show","hide","useConfirmation","context","useContext","CONTAINER_MAX_WIDTHS","BREAKPOINTS","mediaUp","Container","DATE_PICKER_SIZE_PROPS","DATE_PICKER_VARIANT_PROPS","CALENDAR_CELL_SIZE","CALENDAR_GAP","CALENDAR_PADDING","formatDateGo","date","format","locale","year","month","day","hours","minutes","seconds","hour12","isPM","monthLong","monthShort","weekdayLong","weekdayShort","pad","spacePad","placeholder","id","tokens","token","getDaysInMonth","getFirstDayOfMonth","generateCalendarDays","weekStartsOn","daysInMonth","leadingEmptyDays","days","getWeekdayNames","weekdays","dayIndex","getShortMonthNames","months","isSameDay","a","b","isSameMonth","isSameYear","isDayDisabled","minDate","maxDate","minDay","maxDay","isMonthDisabled","minYear","minMonth","maxYear","maxMonth","isYearDisabled","generateYearRange","centerYear","range","startYear","years","getDefaultDisplayFormat","mode","$fullWidth","StyledTrigger","$disabled","$size","$variant","$hasValue","StyledTriggerText","StyledTriggerIcon","calendarStyles","getCalendarTransform","$position","StyledCalendar","StyledPortalCalendar","StyledCalendarHeader","StyledCalendarTitle","StyledNavButton","StyledNavButtons","StyledWeekdays","StyledWeekday","StyledDaysGrid","StyledDayCell","$selected","$today","StyledMonthsGrid","StyledMonthCell","$current","StyledYearsGrid","StyledYearCell","StyledEmptyCell","CALENDAR_MIN_HEIGHT","DatePicker","displayFormat","portalRenderNode","controlledOpen","onOpen","onClose","today","internalOpen","setInternalOpen","portalPosition","setPortalPosition","position","setPosition","view","setView","viewDate","setViewDate","yearRangeStart","setYearRangeStart","triggerRef","calendarRef","isControlled","open","monthNames","calendarDays","yearRange","displayValue","placeholderText","updatePosition","triggerRect","calendarHeight","spaceBelow","spaceAbove","newPosition","top","handleOpen","newViewDate","handleClose","handleToggle","handleSelectDay","newDate","handleSelectMonth","handleSelectYear","handlePrevMonth","prev","handleNextMonth","handlePrevYear","handleNextYear","handlePrevYearRange","handleNextYearRange","handleTitleClick","useLayoutEffect","handleClickOutside","event","target","isOutsideContainer","isOutsideCalendar","handleEscape","handleScroll","handleResize","iconSize","renderDaysView","Fragment","ChevronLeft","ChevronRight","renderMonthsView","renderYearsView","renderCalendarContent","calendar","createPortal","ChevronDown","getPositionStyles","Drawer","animated","contentStyles","getTransform","$align","StyledPortalContent","DROPDOWN_GAP","DROPDOWN_MIN_HEIGHT","Dropdown","align","trigger","contentRef","contentHeight","contentWidth","_b","left","next","isOutsideContent","content","StyledText","$isEmpty","EditableText","dataTestId","isEditing","setIsEditing","textRef","save","selection","handleEditClick","Pencil","VARIANT_COLORS","StyledFieldMessage","FieldMessage","StyledPreview","StyledPlaceholder","S","F","M","T","k","N","Y","_","Z","H","q","j","R","D","V","O","g","x","W","U","K","l","s","u","C","G","J","d","p","c","Q","ee","te","oe","ne","ie","re","se","ae","le","ce","de","pe","ue","me","he","fe","ge","xe","be","$","ye","E","ve","ze","we","Ee","$e","L","Re","m","f","z","Pe","Be","I","Le","_c","P","h","A","Ce","Ie","y","w","B","Ae","DEFAULT_CONFIG","STYLE_ID","CUSTOM_STYLES","injectCropperStyles","style","CROPPER_CSS","useImageCropper","allowedTypes","applyLabel","compression","maxFileSize","onCrop","onError","outputSize","portalSize","cropperRef","HqCropper","base64","blob","ImageCropper","buttonLabel","previewSize","preview","setPreview","INPUT_SIZE_PROPS","INPUT_VARIANT_PROPS","getInputVariantProps","getInputSizeProps","StyledInputContainer","Input","StyledOverlay","Modal","width","StyledModalContent","StyledModalHeader","StyledModalTitle","StyledOptionsList","StyledOption","StyledOptionLabel","MultiSelect","emptyMessage","maxVisible","modalTitle","searchPlaceholder","search","setSearch","selectedOptions","opt","filteredOptions","visibleChips","hiddenCount","handleRemove","DEFAULT_NOTIFICATION_DURATION","NOTIFICATION_VARIANT_COLORS","NotificationContext","getNotificationVariantColors","StyledNotificationContainer","StyledNotificationBar","StyledNotificationMessage","StyledNotificationCloseButton","StyledNotificationWrapper","NotificationBar","notification","onRemove","onAnimationEnd","handleAnimationEnd","timer","notificationReducer","action","newNotification","nextNotification","initialNotificationState","NotificationProvider","dispatch","useReducer","duration","handleShowNext","useNotification","OTP_CODE_SIZE_PROPS","OTP_CODE_VARIANT_PROPS","getOtpCodeSizeProps","getOtpCodeVariantProps","StyledInputsWrapper","OtpCode","autoFocus","length","inputRefs","focusInput","index","input","digit","firstEmptyIndex","char","insertIndex","updatedValue","nextEmptyIndex","handlePaste","pastedData","nextIndex","el","PANEL_VARIANT_COLORS","getPanelVariantColors","StyledHeader","StyledTitle","Panel","title","hasHeader","PROGRESS_SIZE_PROPS","StyledTrack","StyledBar","$value","Progress","RADIO_VARIANT_PROPS","getRadioVariantProps","StyledDot","Radio","RADIO_CARD_VARIANT_PROPS","getRadioCardVariantProps","RadioCard","RADIO_GROUP_PROPS","RadioGroup","name","SaveProgressContext","SaveProgressProvider","defaultMessage","isVisible","setIsVisible","setMessage","customMessage","useSaveProgress","OPTION_HEIGHT","DROPDOWN_PADDING","SELECT_SIZE_PROPS","SELECT_VARIANT_PROPS","getSelectSizeProps","getSelectVariantProps","StyledChevron","dropdownStyles","StyledPortalDropdown","StyledCheckmark","Select","dropdownRef","selectedOption","selectedIndex","dropdownTop","updatePortalPosition","selectedOffset","dropdownHeight","minTop","maxTop","isOutsideDropdown","renderOptions","dropdown","node","STATUS_CARD_TREND_COLORS","getTrendColor","trend","$border","$shadow","StyledValue","StyledTrend","StatusCard","trendVariant","StyledStepWrapper","StyledStep","StyledCircle","StyledLine","Stepper","orientation","steps","currentIndex","step","isActive","isCompleted","isLast","getDropdownTransform","getDropdownTransition","Tags","createKey","freeSolo","inputRef","isFocused","setIsFocused","dropdownPosition","setDropdownPosition","available","showDropdown","updateDropdownPosition","rect","addTag","tagValue","trimmed","matchingOption","handleOptionClick","handleContainerClick","getTagLabel","StyledTab","Tabs","tabs","tab","TEXTAREA_VARIANT_PROPS","getTextareaVariantProps","StyledTextarea","Textarea","rows","ToastContext","MAX_VISIBLE_TOASTS","TOAST_VARIANT_COLORS","toastReducer","newToast","toastId","updatedToasts","toast","nextToast","initialToastState","getToastVariantColors","StyledToastrContainer","StyledToast","StyledToastMessage","StyledToastCloseButton","StyledToastrBottomRow","StyledQueueCounter","ToastItem","ToastContainer","toasts","queueCount","removeToast","lastIndex","ToastProvider","addToast","useToast","TOOLTIP_VARIANT_COLORS","getTooltipVariantColors","getArrowStyles","$placement","arrowColor","getLightArrowStyles","borderColor","contentBaseStyles","StyledWrapper","getPlacementStyles","TOOLTIP_GAP","Tooltip","delay","placement","visible","setVisible","timeoutId","setTimeoutId","actualPlacement","setActualPlacement","wrapperRef","spaceTop","spaceBottom","spaceLeft","spaceRight","newPlacement","padding","handleMouseEnter","handleMouseLeave","tooltipContent"],"mappings":"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","x_google_ignoreList":[0,2,3,4,60]}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/.pnpm/@babel+runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.js","../src/components/GlobalStyle.tsx","../node_modules/.pnpm/@emotion+is-prop-valid@1.4.0/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/.pnpm/@emotion+styled@11.14.1_@emotion+react@11.14.0_@types+react@19.2.7_react@19.2.3__@types+react@19.2.7_react@19.2.3/node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../node_modules/.pnpm/@emotion+styled@11.14.1_@emotion+react@11.14.0_@types+react@19.2.7_react@19.2.3__@types+react@19.2.7_react@19.2.3/node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../src/components/FieldLabel/styled.ts","../src/components/FieldLabel/FieldLabel.tsx","../src/components/Autocomplete/styled.ts","../src/components/Spinner/constants.ts","../src/components/Spinner/helpers.ts","../src/components/Spinner/styled.ts","../src/components/Spinner/Spinner.tsx","../src/components/Autocomplete/Autocomplete.tsx","../src/components/Button/constants.ts","../src/components/Button/helpers.ts","../src/components/Button/styled.ts","../src/components/KeysBindings/styled.ts","../src/components/KeySymbol/styled.ts","../src/components/KeySymbol/KeySymbol.tsx","../src/components/KeysBindings/KeysBindings.tsx","../src/components/Button/Button.tsx","../src/components/Card/styled.ts","../src/components/Card/Card.tsx","../src/components/Checkbox/constants.ts","../src/components/Checkbox/helpers.ts","../src/components/Checkbox/styled.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/CheckboxCard/constants.ts","../src/components/CheckboxCard/helpers.ts","../src/components/CheckboxCard/styled.ts","../src/components/CheckboxCard/CheckboxCard.tsx","../src/components/CheckboxGroup/constants.ts","../src/components/CheckboxGroup/styled.ts","../src/components/CheckboxGroup/CheckboxGroup.tsx","../src/components/Chip/constants.ts","../src/components/Chip/helpers.ts","../src/components/Chip/styled.ts","../src/components/Chip/Chip.tsx","../src/components/Confirmation/constants.ts","../src/components/Confirmation/styled.ts","../src/components/Confirmation/ConfirmationBar.tsx","../src/components/Confirmation/context.tsx","../src/components/Confirmation/ConfirmationProvider.tsx","../src/components/Confirmation/useConfirmation.ts","../src/components/Container/constants.ts","../src/components/Container/styled.ts","../src/components/Container/Container.tsx","../src/components/DatePicker/constants.ts","../src/components/DatePicker/helpers.ts","../src/components/DatePicker/styled.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/Drawer/styled.ts","../src/components/Drawer/Drawer.tsx","../src/components/Dropdown/styled.ts","../src/components/Dropdown/Dropdown.tsx","../src/components/EditableText/styled.ts","../src/components/EditableText/EditableText.tsx","../src/components/FieldMessage/styled.ts","../src/components/FieldMessage/FieldMessage.tsx","../src/components/ImageCropper/styled.ts","../node_modules/.pnpm/hq-cropper@4.0.0/node_modules/hq-cropper/dist/index.js","../src/hooks/useImageCropper/constants.ts","../src/hooks/useImageCropper/useImageCropper.ts","../src/components/ImageCropper/ImageCropper.tsx","../src/components/Input/constants.ts","../src/components/Input/helpers.ts","../src/components/Input/styled.ts","../src/components/Input/Input.tsx","../src/components/Modal/styled.ts","../src/components/Modal/Modal.tsx","../src/components/MultiSelect/constants.ts","../src/components/MultiSelect/styled.ts","../src/components/MultiSelect/MultiSelect.tsx","../src/components/Notification/constants.ts","../src/components/Notification/context.tsx","../src/components/Notification/helpers.ts","../src/components/Notification/styled.ts","../src/components/Notification/NotificationBar.tsx","../src/components/Notification/reducer.ts","../src/components/Notification/NotificationProvider.tsx","../src/components/Notification/useNotification.ts","../src/components/OtpCode/constants.ts","../src/components/OtpCode/helpers.ts","../src/components/OtpCode/styled.ts","../src/components/OtpCode/OtpCode.tsx","../src/components/Panel/constants.ts","../src/components/Panel/helpers.ts","../src/components/Panel/styled.ts","../src/components/Panel/Panel.tsx","../src/components/Progress/constants.ts","../src/components/Progress/styled.ts","../src/components/Progress/Progress.tsx","../src/components/Radio/constants.ts","../src/components/Radio/helpers.ts","../src/components/Radio/styled.ts","../src/components/Radio/Radio.tsx","../src/components/RadioCard/constants.ts","../src/components/RadioCard/helpers.ts","../src/components/RadioCard/styled.ts","../src/components/RadioCard/RadioCard.tsx","../src/components/RadioGroup/constants.ts","../src/components/RadioGroup/styled.ts","../src/components/RadioGroup/RadioGroup.tsx","../src/components/SaveProgress/context.tsx","../src/components/SaveProgress/styled.ts","../src/components/SaveProgress/SaveProgressProvider.tsx","../src/components/SaveProgress/useSaveProgress.ts","../src/components/Select/constants.ts","../src/components/Select/helpers.ts","../src/components/Select/styled.ts","../src/components/Select/Select.tsx","../src/components/StatusCard/constants.ts","../src/components/StatusCard/helpers.ts","../src/components/StatusCard/styled.ts","../src/components/StatusCard/StatusCard.tsx","../src/components/Stepper/styled.ts","../src/components/Stepper/Stepper.tsx","../src/components/Tags/constants.ts","../src/components/Tags/styled.ts","../src/components/Tags/Tags.tsx","../src/components/Tabs/styled.ts","../src/components/Tabs/Tabs.tsx","../src/components/Textarea/constants.ts","../src/components/Textarea/helpers.ts","../src/components/Textarea/styled.ts","../src/components/Textarea/Textarea.tsx","../src/components/Toastr/context.tsx","../src/components/Toastr/constants.ts","../src/components/Toastr/reducer.ts","../src/components/Toastr/helpers.ts","../src/components/Toastr/styled.ts","../src/components/Toastr/ToastItem.tsx","../src/components/Toastr/ToastContainer.tsx","../src/components/Toastr/ToastProvider.tsx","../src/components/Toastr/useToast.ts","../src/components/Tooltip/constants.ts","../src/components/Tooltip/helpers.ts","../src/components/Tooltip/styled.ts","../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import { css, Global } from '@emotion/react'\n\nconst globalStyles = css`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n * {\n margin: 0;\n padding: 0;\n }\n\n html {\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n tab-size: 4;\n font-family:\n -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif,\n 'Apple Color Emoji', 'Segoe UI Emoji';\n }\n\n body {\n min-height: 100vh;\n font-size: 14px;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n }\n\n img,\n picture,\n video,\n canvas,\n svg {\n display: block;\n max-width: 100%;\n }\n\n input,\n button,\n textarea,\n select {\n font: inherit;\n color: inherit;\n }\n\n p,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n overflow-wrap: break-word;\n }\n\n a {\n color: inherit;\n text-decoration: inherit;\n }\n\n button {\n background: none;\n border: none;\n cursor: pointer;\n }\n\n ul,\n ol {\n list-style: none;\n }\n\n table {\n border-collapse: collapse;\n border-spacing: 0;\n }\n\n /* Tabular figures for numbers in data contexts */\n .tabular-nums {\n font-variant-numeric: tabular-nums;\n }\n\n /* Proportional figures for running text */\n .proportional-nums {\n font-variant-numeric: proportional-nums;\n }\n\n /* Selection styling */\n ::selection {\n background-color: rgba(0, 122, 255, 0.25);\n }\n\n /* Focus visible for accessibility */\n :focus-visible {\n outline: 2px solid rgba(0, 122, 255, 0.5);\n outline-offset: 2px;\n }\n\n :focus:not(:focus-visible) {\n outline: none;\n }\n`\n\nexport const GlobalStyle = () => {\n return <Global styles={globalStyles} />\n}\n","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\n\nvar isDevelopment = false;\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n return function () {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n // eslint-disable-next-line prefer-spread\n styles.push.apply(styles, args);\n } else {\n var templateStringsArr = args[0];\n\n styles.push(templateStringsArr[0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n\n styles.push(args[i], templateStringsArr[i]);\n }\n }\n\n var Styled = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = React.useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if (finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && isDevelopment) {\n return 'NO_COMPONENT_SELECTOR';\n }\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\n var newStyled = createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n }));\n return newStyled.apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/react';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\nimport '@emotion/utils';\nimport 'react';\nimport '@emotion/is-prop-valid';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// bind it to avoid mutating the original function\nvar styled = createStyled.bind(null);\ntags.forEach(function (tagName) {\n styled[tagName] = styled(tagName);\n});\n\nexport { styled as default };\n","import styled from '@emotion/styled'\n\nimport { FieldLabelVariant } from './types'\nimport { COLORS } from '../../lib'\n\nexport const StyledFieldLabel = styled.span<{ $variant: FieldLabelVariant }>`\n font-size: 12px;\n font-weight: 500;\n color: ${(props) => (props.$variant === 'normal' ? COLORS['black'] : COLORS['red'])};\n`\n","import { StyledFieldLabel } from './styled'\nimport { FieldLabelProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('field-label')\nexport const FieldLabel = ({\n children,\n className,\n ref,\n required,\n variant = 'normal',\n ...rest\n}: FieldLabelProps) => {\n if (!children) {\n return null\n }\n\n return (\n <StyledFieldLabel\n {...rest}\n ref={ref}\n className={css('container', className)}\n $variant={variant}\n >\n {children} {required && '*'}\n </StyledFieldLabel>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { AutocompleteVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { alpha, COLORS, VacanoComponentSize } from '../../lib'\n\nconst SIZE_PROPS: Record<VacanoComponentSize, { height: string; padding: string; radius: string }> =\n {\n compact: {\n height: '32px',\n padding: '0 10px',\n radius: '14px',\n },\n default: {\n height: '40px',\n padding: '0 14px',\n radius: '16px',\n },\n }\n\nconst VARIANT_PROPS: Record<\n AutocompleteVariant,\n {\n border: { static: string; disabled: string }\n background: { static: string; disabled: string }\n color: { static: string; disabled: string }\n placeholder: { static: string; disabled: string }\n focus: string\n }\n> = {\n normal: {\n background: {\n static: alpha(COLORS['black'], 2),\n disabled: alpha(COLORS['black'], 10),\n },\n border: {\n static: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 10),\n },\n color: {\n static: COLORS['black'],\n disabled: alpha(COLORS['black'], 65),\n },\n placeholder: {\n static: alpha(COLORS['black'], 40),\n disabled: alpha(COLORS['black'], 65),\n },\n focus: alpha(COLORS['iron-grey'], 30),\n },\n error: {\n background: {\n static: alpha(COLORS['red'], 2),\n disabled: alpha(COLORS['red'], 10),\n },\n border: {\n static: alpha(COLORS['red'], 60),\n disabled: alpha(COLORS['red'], 10),\n },\n color: {\n static: COLORS['red'],\n disabled: alpha(COLORS['red'], 65),\n },\n placeholder: {\n static: alpha(COLORS['red'], 40),\n disabled: alpha(COLORS['red'], 65),\n },\n focus: alpha(COLORS['red'], 30),\n },\n}\n\nexport const StyledContainer = styled.div<{ $fullWidth: boolean }>`\n position: relative;\n display: grid;\n gap: 2px;\n width: ${(props) => (props.$fullWidth ? '100%' : 'fit-content')};\n`\n\nexport const StyledLabel = styled(FieldLabel)`\n margin-left: 6px;\n`\n\nexport const StyledInputWrapper = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n`\n\ntype StyledInputProps = {\n $size: VacanoComponentSize\n $variant: AutocompleteVariant\n}\n\nexport const StyledInput = styled.input<StyledInputProps>`\n flex: 1;\n min-width: 0;\n width: 100%;\n outline: none;\n font-size: 14px;\n font-weight: 500;\n height: ${(props) => SIZE_PROPS[props.$size].height};\n padding: ${(props) => SIZE_PROPS[props.$size].padding};\n padding-right: 40px;\n border-radius: ${(props) => SIZE_PROPS[props.$size].radius};\n\n color: ${(props) => VARIANT_PROPS[props.$variant].color.static};\n border: 1px solid ${(props) => VARIANT_PROPS[props.$variant].border.static};\n background-color: ${(props) => VARIANT_PROPS[props.$variant].background.static};\n\n &::placeholder {\n color: ${(props) => VARIANT_PROPS[props.$variant].placeholder.static};\n }\n\n &:disabled {\n cursor: not-allowed;\n color: ${(props) => VARIANT_PROPS[props.$variant].color.disabled};\n background-color: ${(props) => VARIANT_PROPS[props.$variant].background.disabled};\n border-color: ${(props) => VARIANT_PROPS[props.$variant].border.disabled};\n\n &::placeholder {\n color: ${(props) => VARIANT_PROPS[props.$variant].placeholder.disabled};\n }\n }\n`\n\nexport const StyledSpinnerWrapper = styled.div`\n position: absolute;\n right: 12px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\nexport const StyledDropdown = styled.div<{ $open: boolean }>`\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: 100;\n margin-top: 4px;\n max-height: 240px;\n overflow-y: auto;\n background-color: ${COLORS.white};\n border: 1px solid ${COLORS.gray};\n border-radius: 12px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open }) => ($open ? 'translateY(0)' : 'translateY(-8px)')};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n\nexport const StyledItem = styled.div`\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: ${COLORS.black};\n transition: background-color 0.1s ease;\n\n &:first-of-type {\n border-radius: 12px 12px 0 0;\n }\n\n &:last-of-type {\n border-radius: 0 0 12px 12px;\n }\n\n &:only-child {\n border-radius: 12px;\n }\n\n &:hover {\n background-color: ${alpha(COLORS.black, 5)};\n }\n`\n\nexport const StyledItemImage = styled.img`\n width: 24px;\n height: 24px;\n border-radius: 6px;\n object-fit: cover;\n`\n\nexport const StyledItemText = styled.span`\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`\n\nexport const StyledEmpty = styled.div`\n padding: 12px 14px;\n font-size: 14px;\n color: ${alpha(COLORS.black, 50)};\n text-align: center;\n`\n","import { SpinnerSize } from './types'\nimport { alpha, COLORS } from '../../lib'\n\ntype SpinnerSizeProps = {\n size: string\n borderWidth: string\n}\n\nexport const SPINNER_SIZE_PROPS: Record<SpinnerSize, SpinnerSizeProps> = {\n xs: { size: '16px', borderWidth: '2px' },\n sm: { size: '20px', borderWidth: '2px' },\n md: { size: '32px', borderWidth: '3px' },\n lg: { size: '48px', borderWidth: '4px' },\n}\n\nexport const SPINNER_COLORS = {\n track: alpha(COLORS['black'], 15),\n indicator: COLORS['black'],\n}\n","import { SPINNER_SIZE_PROPS } from './constants'\nimport { SpinnerSize } from './types'\n\nexport const getSpinnerSizeProps = (size: SpinnerSize) => {\n return SPINNER_SIZE_PROPS[size] ?? SPINNER_SIZE_PROPS['md']\n}\n","import { keyframes } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport { SPINNER_COLORS } from './constants'\nimport { getSpinnerSizeProps } from './helpers'\nimport { SpinnerSize } from './types'\n\nconst spin = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n`\n\ntype StyledSpinnerProps = {\n $size: SpinnerSize\n}\n\nexport const StyledSpinner = styled.div<StyledSpinnerProps>`\n display: inline-block;\n width: ${(props) => getSpinnerSizeProps(props.$size).size};\n height: ${(props) => getSpinnerSizeProps(props.$size).size};\n border: ${(props) => getSpinnerSizeProps(props.$size).borderWidth} solid ${SPINNER_COLORS.track};\n border-top-color: ${SPINNER_COLORS.indicator};\n border-radius: 50%;\n animation: ${spin} 0.8s linear infinite;\n`\n","import { StyledSpinner } from './styled'\nimport { SpinnerProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('spinner')\n\nexport const Spinner = ({\n 'aria-label': ariaLabel = 'Loading',\n className,\n ref,\n size = 'md',\n ...rest\n}: SpinnerProps) => {\n return (\n <StyledSpinner\n {...rest}\n ref={ref}\n className={css('container', className)}\n role=\"status\"\n aria-label={ariaLabel}\n $size={size}\n />\n )\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport {\n StyledContainer,\n StyledDropdown,\n StyledEmpty,\n StyledInput,\n StyledInputWrapper,\n StyledItem,\n StyledItemImage,\n StyledItemText,\n StyledLabel,\n StyledSpinnerWrapper,\n} from './styled'\nimport type { AutocompleteProps, AutocompleteSuggestion } from './types'\nimport { Spinner } from '../Spinner'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('autocomplete')\n\nexport const Autocomplete = ({\n className,\n classnames,\n disabled,\n fullWidth,\n label,\n ref,\n size = 'default',\n variant = 'normal',\n value,\n onChange,\n onSearch,\n debounceMs = 300,\n minChars = 1,\n noResultsMessage = 'No results found',\n ...rest\n}: AutocompleteProps) => {\n const [inputValue, setInputValue] = useState(value?.value ?? '')\n const [suggestions, setSuggestions] = useState<AutocompleteSuggestion[]>([])\n const [isLoading, setIsLoading] = useState(false)\n const [isOpen, setIsOpen] = useState(false)\n const [hasSearched, setHasSearched] = useState(false)\n\n const containerRef = useRef<HTMLDivElement>(null)\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n useEffect(() => {\n if (value?.value !== undefined) {\n setInputValue(value.value)\n }\n }, [value?.value])\n\n const handleSearch = useCallback(\n async (query: string) => {\n if (query.length < minChars) {\n setSuggestions([])\n setHasSearched(false)\n return\n }\n\n setIsLoading(true)\n setHasSearched(true)\n\n try {\n const results = await onSearch(query)\n setSuggestions(results)\n setIsOpen(true)\n } catch {\n setSuggestions([])\n } finally {\n setIsLoading(false)\n }\n },\n [onSearch, minChars],\n )\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value\n setInputValue(newValue)\n\n onChange?.({ value: newValue, image_url: null })\n\n if (debounceRef.current) {\n clearTimeout(debounceRef.current)\n }\n\n debounceRef.current = setTimeout(() => {\n handleSearch(newValue)\n }, debounceMs)\n },\n [onChange, handleSearch, debounceMs],\n )\n\n const handleSelect = useCallback(\n (suggestion: AutocompleteSuggestion) => {\n setInputValue(suggestion.value)\n setSuggestions([])\n setIsOpen(false)\n setHasSearched(false)\n\n onChange?.({ value: suggestion.value, image_url: suggestion.image_url })\n },\n [onChange],\n )\n\n const handleBlur = useCallback(() => {\n setTimeout(() => {\n setIsOpen(false)\n }, 150)\n }, [])\n\n const handleFocus = useCallback(() => {\n if (suggestions.length > 0) {\n setIsOpen(true)\n }\n }, [suggestions.length])\n\n useEffect(() => {\n return () => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current)\n }\n }\n }, [])\n\n return (\n <StyledContainer\n ref={containerRef}\n className={css('container', className)}\n $fullWidth={Boolean(fullWidth)}\n >\n {label && (\n <StyledLabel variant={variant} className={css('label', classnames?.label)}>\n {label}\n </StyledLabel>\n )}\n <StyledInputWrapper>\n <StyledInput\n {...rest}\n ref={ref}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n disabled={disabled}\n $size={size}\n $variant={variant}\n className={css('input', classnames?.input)}\n />\n {isLoading && (\n <StyledSpinnerWrapper>\n <Spinner size=\"xs\" />\n </StyledSpinnerWrapper>\n )}\n </StyledInputWrapper>\n <StyledDropdown\n $open={isOpen && hasSearched}\n className={css('dropdown', classnames?.dropdown)}\n >\n {suggestions.length > 0\n ? suggestions.map((suggestion) => (\n <StyledItem\n key={suggestion.id}\n onClick={() => handleSelect(suggestion)}\n className={css('item', classnames?.item)}\n >\n {suggestion.image_url && (\n <StyledItemImage src={suggestion.image_url} alt={suggestion.value} />\n )}\n <StyledItemText>{suggestion.value}</StyledItemText>\n </StyledItem>\n ))\n : !isLoading && <StyledEmpty>{noResultsMessage}</StyledEmpty>}\n </StyledDropdown>\n </StyledContainer>\n )\n}\n","import { ButtonVariant } from './types'\nimport { alpha, COLORS, VacanoComponentSize, VacanoInteractiveElementState } from '../../lib'\n\nexport const BUTTON_SIZE_PROPS: Record<\n VacanoComponentSize,\n {\n height: string\n padding: string\n radius: string\n iconSize: string\n }\n> = {\n compact: {\n height: '32px',\n padding: '0 8px',\n radius: '12px',\n iconSize: '16px',\n },\n default: {\n height: '40px',\n padding: '0 12px',\n radius: '16px',\n iconSize: '20px',\n },\n}\n\nexport const BUTTON_VARIANT_PROPS: Record<\n ButtonVariant,\n {\n color: VacanoInteractiveElementState\n background: VacanoInteractiveElementState\n borderColor: VacanoInteractiveElementState\n }\n> = {\n normal: {\n background: {\n static: COLORS['steel-blue'],\n hover: alpha(COLORS['steel-blue'], 90),\n active: alpha(COLORS['steel-blue'], 80),\n disabled: alpha(COLORS['steel-blue'], 50),\n },\n color: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: COLORS['white'],\n },\n borderColor: {\n static: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n disabled: 'transparent',\n },\n },\n system: {\n background: {\n static: COLORS['black'],\n hover: alpha(COLORS['black'], 90),\n active: alpha(COLORS['black'], 80),\n disabled: alpha(COLORS['black'], 50),\n },\n color: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: COLORS['white'],\n },\n borderColor: {\n static: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n disabled: 'transparent',\n },\n },\n success: {\n background: {\n static: COLORS['green'],\n hover: alpha(COLORS['green'], 90),\n active: alpha(COLORS['green'], 80),\n disabled: alpha(COLORS['green'], 50),\n },\n color: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: COLORS['white'],\n },\n borderColor: {\n static: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n disabled: 'transparent',\n },\n },\n warning: {\n background: {\n static: COLORS['yellow'],\n hover: alpha(COLORS['yellow'], 90),\n active: alpha(COLORS['yellow'], 80),\n disabled: alpha(COLORS['yellow'], 50),\n },\n color: {\n static: COLORS['black'],\n hover: COLORS['black'],\n active: COLORS['black'],\n disabled: COLORS['black'],\n },\n borderColor: {\n static: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n disabled: 'transparent',\n },\n },\n danger: {\n background: {\n static: COLORS['red'],\n hover: alpha(COLORS['red'], 90),\n active: alpha(COLORS['red'], 80),\n disabled: alpha(COLORS['red'], 50),\n },\n color: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: COLORS['white'],\n },\n borderColor: {\n static: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n disabled: 'transparent',\n },\n },\n transparent: {\n background: {\n static: alpha(COLORS['iron-grey'], 1),\n hover: alpha(COLORS['iron-grey'], 5),\n active: alpha(COLORS['iron-grey'], 10),\n disabled: alpha(COLORS['iron-grey'], 5),\n },\n color: {\n static: COLORS['black'],\n hover: COLORS['black'],\n active: COLORS['black'],\n disabled: alpha(COLORS['black'], 30),\n },\n borderColor: {\n static: alpha(COLORS['iron-grey'], 20),\n hover: alpha(COLORS['iron-grey'], 20),\n active: alpha(COLORS['iron-grey'], 20),\n disabled: alpha(COLORS['iron-grey'], 10),\n },\n },\n}\n","import { BUTTON_SIZE_PROPS, BUTTON_VARIANT_PROPS } from './constants'\nimport { ButtonVariant } from './types'\nimport { VacanoComponentSize } from '../../lib'\n\nexport const getButtonVariantProps = (variant: ButtonVariant) => {\n const result = BUTTON_VARIANT_PROPS[variant]\n if (!result) {\n return BUTTON_VARIANT_PROPS['normal']\n }\n\n return result\n}\n\nexport const getButtonSizeProps = (size: VacanoComponentSize) => {\n const result = BUTTON_SIZE_PROPS[size]\n if (!result) {\n return BUTTON_SIZE_PROPS['default']\n }\n\n return result\n}\n\nexport const getButtonWidthProps = (fullWidth: boolean) => {\n if (fullWidth) {\n return 'auto'\n }\n\n return 'fit-content'\n}\n","import styled from '@emotion/styled'\n\nimport { getButtonSizeProps, getButtonVariantProps, getButtonWidthProps } from './helpers'\nimport { ButtonVariant } from './types'\nimport { LoaderCircle } from '../../icons/Lucide'\nimport { KEYFRAMES, VacanoComponentSize } from '../../lib'\n\ntype StyledButtonProps = {\n $variant: ButtonVariant\n $size: VacanoComponentSize\n $fullWidth: boolean\n $iconOnly: boolean\n}\n\nexport const StyledButton = styled.button<StyledButtonProps>`\n display: flex;\n gap: 6px;\n text-decoration: none;\n align-items: center;\n justify-content: center;\n width: ${(props) =>\n !props.$iconOnly\n ? getButtonWidthProps(Boolean(props.$fullWidth))\n : getButtonSizeProps(props.$size).height};\n color: ${(props) => getButtonVariantProps(props.$variant).color.static};\n background-color: ${(props) => getButtonVariantProps(props.$variant).background.static};\n height: ${(props) => getButtonSizeProps(props.$size).height};\n padding: ${(props) => (!props.$iconOnly ? getButtonSizeProps(props.$size).padding : '0')};\n border-radius: ${(props) => getButtonSizeProps(props.$size).radius};\n border: 1px solid ${(props) => getButtonVariantProps(props.$variant).borderColor.static};\n\n &:hover:not(:disabled) {\n color: ${(props) => getButtonVariantProps(props.$variant).color.hover};\n background-color: ${(props) => getButtonVariantProps(props.$variant).background.hover};\n border-color: ${(props) => getButtonVariantProps(props.$variant).borderColor.hover};\n }\n\n &:active:not(:disabled) {\n color: ${(props) => getButtonVariantProps(props.$variant).color.active};\n background-color: ${(props) => getButtonVariantProps(props.$variant).background.active};\n border-color: ${(props) => getButtonVariantProps(props.$variant).borderColor.active};\n }\n\n &:disabled {\n cursor: not-allowed;\n color: ${(props) => getButtonVariantProps(props.$variant).color.disabled};\n background-color: ${(props) => getButtonVariantProps(props.$variant).background.disabled};\n border-color: ${(props) => getButtonVariantProps(props.$variant).borderColor.disabled};\n }\n`\n\nexport const StyledIcon = styled.div<{ $size: VacanoComponentSize }>`\n display: grid;\n place-items: center;\n width: ${(props) => getButtonSizeProps(props.$size).iconSize};\n height: ${(props) => getButtonSizeProps(props.$size).iconSize};\n\n & svg {\n width: ${(props) => getButtonSizeProps(props.$size).iconSize};\n height: ${(props) => getButtonSizeProps(props.$size).iconSize};\n }\n`\n\nexport const StyledLabel = styled.span`\n font-weight: 600;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n`\n\nexport const StyledLoading = styled(LoaderCircle)<{ $size: VacanoComponentSize }>`\n width: ${(props) => getButtonSizeProps(props.$size).iconSize};\n height: ${(props) => getButtonSizeProps(props.$size).iconSize};\n animation: ${KEYFRAMES.rotate} 0.8s linear infinite;\n`\n","import styled from '@emotion/styled'\n\nexport const StyledKeyBindings = styled.div`\n display: flex;\n gap: 3px;\n`\n","import styled from '@emotion/styled'\n\nimport { KeySymbolVariant } from './types'\nimport { alpha, COLORS } from '../../lib'\n\nexport const StyledKeySymbol = styled.span<{ $variant: KeySymbolVariant }>`\n text-align: center;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 12px;\n height: 18px;\n min-width: 18px;\n line-height: 1.6;\n padding: 2px 4px;\n border-radius: 4px;\n width: fit-content;\n background-color: ${(props) =>\n props.$variant === 'light' ? alpha(COLORS['white'], 25) : alpha(COLORS['black'], 25)};\n`\n","import { StyledKeySymbol } from './styled'\nimport { KeySymbolProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('key-symbol')\nexport const KeySymbol = ({\n className,\n ref,\n symbol,\n variant = 'light',\n ...rest\n}: KeySymbolProps) => {\n if (!symbol) {\n return null\n }\n\n return (\n <StyledKeySymbol {...rest} ref={ref} className={css('container', className)} $variant={variant}>\n {symbol}\n </StyledKeySymbol>\n )\n}\n","import { useMemo } from 'react'\n\nimport { StyledKeyBindings } from './styled'\nimport { KeysBindingsProps } from './types'\nimport { KeySymbol } from '../KeySymbol'\nimport { getKeySymbols, newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('key-bindings')\nexport const KeysBindings = ({\n className,\n classnames,\n keys,\n ref,\n variant,\n ...rest\n}: KeysBindingsProps) => {\n const symbols = useMemo(() => getKeySymbols(keys), [keys])\n if (symbols.length === 0) {\n return null\n }\n\n return (\n <StyledKeyBindings {...rest} ref={ref} className={css('container', className)}>\n {symbols.map((item) => (\n <KeySymbol\n key={item}\n symbol={item}\n className={css('item', classnames?.item)}\n variant={variant}\n />\n ))}\n </StyledKeyBindings>\n )\n}\n","import { useImperativeHandle, useMemo, useRef } from 'react'\n\nimport { StyledButton, StyledIcon, StyledLabel, StyledLoading } from './styled'\nimport { ButtonProps } from './types'\nimport { KeysBindings } from '../KeysBindings'\nimport { newClassNameGetter, useKeyBinding } from '../../lib'\n\nconst css = newClassNameGetter('button')\nexport const Button = ({\n children,\n className,\n classnames,\n disabled,\n fullWidth,\n icon,\n loading,\n onClick,\n ref = null,\n keyBindings = [],\n size = 'default',\n type = 'button',\n variant = 'normal',\n ...rest\n}: ButtonProps) => {\n const buttonRef = useRef<HTMLButtonElement>(null)\n\n useImperativeHandle(ref, () => buttonRef.current!, [])\n useKeyBinding(keyBindings, () => {\n buttonRef.current?.click()\n })\n\n const computedType = useMemo(() => {\n switch (type) {\n case 'link':\n return 'button'\n\n default:\n return type\n }\n }, [type])\n\n return (\n <StyledButton\n {...rest}\n onClick={onClick}\n ref={buttonRef}\n type={computedType}\n disabled={disabled}\n className={css('container', className)}\n $variant={variant}\n $size={size}\n $fullWidth={Boolean(fullWidth)}\n $iconOnly={Boolean(icon) && !(children || keyBindings?.length > 0)}\n >\n {loading && <StyledLoading $size={size} />}\n {icon && !loading && <StyledIcon $size={size}>{icon}</StyledIcon>}\n {children && (\n <StyledLabel className={css('label', classnames?.label)}>{children}</StyledLabel>\n )}\n <KeysBindings keys={keyBindings} variant={variant === 'system' ? 'light' : 'dark'} />\n </StyledButton>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { alpha, COLORS } from '../../lib'\n\ntype StyledCardProps = {\n $border: boolean\n $shadow: boolean\n}\n\nexport const StyledCard = styled.div<StyledCardProps>`\n background-color: ${COLORS['white']};\n border-radius: 16px;\n border: ${(props) => (props.$border ? `1px solid ${alpha(COLORS['iron-grey'], 15)}` : 'none')};\n box-shadow: ${(props) => (props.$shadow ? `0 2px 8px ${alpha(COLORS['black'], 10)}` : 'none')};\n`\n","import { PropsWithChildren } from 'react'\n\nimport { StyledCard } from './styled'\nimport { CardProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('card')\nexport const Card = ({\n children,\n className,\n ref,\n border = false,\n shadow = false,\n ...rest\n}: PropsWithChildren<CardProps>) => (\n <StyledCard\n {...rest}\n ref={ref}\n className={css('container', className)}\n $border={border}\n $shadow={shadow}\n >\n {children}\n </StyledCard>\n)\n","import { CheckboxVariant } from './types'\nimport { alpha, COLORS } from '../../lib'\n\nexport const CHECKBOX_VARIANT_PROPS: Record<\n CheckboxVariant,\n {\n box: {\n border: string\n borderChecked: string\n background: string\n backgroundChecked: string\n focusShadow: string\n }\n label: string\n icon: string\n }\n> = {\n normal: {\n box: {\n border: alpha(COLORS['iron-grey'], 30),\n borderChecked: COLORS['iron-grey'],\n background: COLORS['white'],\n backgroundChecked: COLORS['black'],\n focusShadow: alpha(COLORS['iron-grey'], 30),\n },\n label: COLORS['black'],\n icon: COLORS['white'],\n },\n error: {\n box: {\n border: COLORS['red'],\n borderChecked: COLORS['red'],\n background: COLORS['white'],\n backgroundChecked: COLORS['red'],\n focusShadow: alpha(COLORS['red'], 30),\n },\n label: COLORS['red'],\n icon: COLORS['white'],\n },\n}\n","import { CHECKBOX_VARIANT_PROPS } from './constants'\nimport { CheckboxVariant } from './types'\n\nexport const getCheckboxVariantProps = (variant: CheckboxVariant) => {\n return CHECKBOX_VARIANT_PROPS[variant] ?? CHECKBOX_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getCheckboxVariantProps } from './helpers'\nimport { CheckboxVariant } from './types'\n\ntype StyledContainerProps = {\n $disabled: boolean\n $variant: CheckboxVariant\n}\n\ntype StyledBoxProps = {\n $checked: boolean\n $indeterminate: boolean\n $variant: CheckboxVariant\n}\n\ntype StyledIconProps = {\n $visible: boolean\n $variant: CheckboxVariant\n}\n\ntype StyledLabelProps = {\n $variant: CheckboxVariant\n}\n\nexport const StyledContainer = styled.label<StyledContainerProps>`\n display: inline-flex;\n align-items: flex-start;\n gap: 8px;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.$disabled ? 0.5 : 1)};\n`\n\nexport const StyledInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`\n\nexport const StyledBox = styled.span<StyledBoxProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n border-radius: 6px;\n border: 1.5px solid\n ${(props) =>\n props.$checked || props.$indeterminate\n ? getCheckboxVariantProps(props.$variant).box.borderChecked\n : getCheckboxVariantProps(props.$variant).box.border};\n background-color: ${(props) =>\n props.$checked || props.$indeterminate\n ? getCheckboxVariantProps(props.$variant).box.backgroundChecked\n : getCheckboxVariantProps(props.$variant).box.background};\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease,\n box-shadow 0.15s ease;\n`\n\nexport const StyledIcon = styled.span<StyledIconProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: ${(props) => getCheckboxVariantProps(props.$variant).icon};\n opacity: ${(props) => (props.$visible ? 1 : 0)};\n transform: ${(props) => (props.$visible ? 'scale(1)' : 'scale(0.5)')};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease;\n\n & svg {\n width: 12px;\n height: 12px;\n }\n`\n\nexport const StyledLabel = styled.span<StyledLabelProps>`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n color: ${(props) => getCheckboxVariantProps(props.$variant).label};\n user-select: none;\n\n a {\n color: inherit;\n text-decoration: underline;\n cursor: pointer;\n\n &:hover {\n text-decoration: none;\n }\n }\n`\n","import { StyledBox, StyledContainer, StyledIcon, StyledInput, StyledLabel } from './styled'\nimport { CheckboxProps } from './types'\nimport { Check, Minus } from '../../icons/Lucide'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('checkbox')\n\nexport const Checkbox = ({\n checked,\n className,\n classnames,\n disabled,\n indeterminate = false,\n label,\n onChange,\n ref,\n variant = 'normal',\n ...rest\n}: CheckboxProps) => {\n return (\n <StyledContainer\n className={css('container', className)}\n $disabled={Boolean(disabled)}\n $variant={variant}\n >\n <StyledInput\n {...rest}\n ref={ref}\n type=\"checkbox\"\n className={css('input', classnames?.input)}\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n />\n <StyledBox\n className={css('box', classnames?.box)}\n $checked={checked}\n $indeterminate={indeterminate}\n $variant={variant}\n >\n <StyledIcon\n className={css('icon', classnames?.icon)}\n $visible={indeterminate || checked}\n $variant={variant}\n >\n {indeterminate ? <Minus /> : <Check />}\n </StyledIcon>\n </StyledBox>\n {label && (\n <StyledLabel className={css('label', classnames?.label)} $variant={variant}>\n {label}\n </StyledLabel>\n )}\n </StyledContainer>\n )\n}\n","import { CheckboxCardVariant } from './types'\nimport { alpha, COLORS, VacanoInteractiveElementState } from '../../lib'\n\ntype CheckboxCardVariantProps = {\n border: VacanoInteractiveElementState\n borderChecked: string\n background: VacanoInteractiveElementState\n backgroundChecked: string\n focusRing: string\n label: VacanoInteractiveElementState\n description: VacanoInteractiveElementState\n}\n\nexport const CHECKBOX_CARD_VARIANT_PROPS: Record<CheckboxCardVariant, CheckboxCardVariantProps> = {\n normal: {\n border: {\n static: alpha(COLORS['black'], 20),\n hover: alpha(COLORS['black'], 40),\n active: alpha(COLORS['black'], 40),\n disabled: alpha(COLORS['black'], 10),\n },\n borderChecked: COLORS['black'],\n background: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: alpha(COLORS['black'], 5),\n },\n backgroundChecked: alpha(COLORS['black'], 5),\n focusRing: alpha(COLORS['black'], 20),\n label: {\n static: COLORS['black'],\n hover: COLORS['black'],\n active: COLORS['black'],\n disabled: alpha(COLORS['black'], 40),\n },\n description: {\n static: alpha(COLORS['black'], 60),\n hover: alpha(COLORS['black'], 60),\n active: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 30),\n },\n },\n error: {\n border: {\n static: COLORS['red'],\n hover: COLORS['red'],\n active: COLORS['red'],\n disabled: alpha(COLORS['red'], 30),\n },\n borderChecked: COLORS['red'],\n background: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: alpha(COLORS['red'], 5),\n },\n backgroundChecked: alpha(COLORS['red'], 5),\n focusRing: alpha(COLORS['red'], 20),\n label: {\n static: COLORS['red'],\n hover: COLORS['red'],\n active: COLORS['red'],\n disabled: alpha(COLORS['red'], 40),\n },\n description: {\n static: alpha(COLORS['red'], 70),\n hover: alpha(COLORS['red'], 70),\n active: alpha(COLORS['red'], 70),\n disabled: alpha(COLORS['red'], 40),\n },\n },\n}\n","import { CHECKBOX_CARD_VARIANT_PROPS } from './constants'\nimport { CheckboxCardVariant } from './types'\n\nexport const getCheckboxCardVariantProps = (variant: CheckboxCardVariant) => {\n return CHECKBOX_CARD_VARIANT_PROPS[variant] ?? CHECKBOX_CARD_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getCheckboxCardVariantProps } from './helpers'\nimport { CheckboxCardVariant } from './types'\n\ntype StyledContainerProps = {\n $checked: boolean\n $disabled: boolean\n $fullWidth: boolean\n $variant: CheckboxCardVariant\n}\n\ntype StyledLabelProps = {\n $variant: CheckboxCardVariant\n}\n\ntype StyledDescriptionProps = {\n $variant: CheckboxCardVariant\n}\n\nexport const StyledContainer = styled.label<StyledContainerProps>`\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 8px;\n padding: 12px;\n background-color: ${(props) => {\n const variantProps = getCheckboxCardVariantProps(props.$variant)\n if (props.$disabled) return variantProps.background.disabled\n if (props.$checked) return variantProps.backgroundChecked\n return variantProps.background.static\n }};\n border: 1px solid\n ${(props) => {\n const variantProps = getCheckboxCardVariantProps(props.$variant)\n if (props.$disabled) return variantProps.border.disabled\n if (props.$checked) return variantProps.borderChecked\n return variantProps.border.static\n }};\n border-radius: 12px;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease;\n width: ${(props) => (props.$fullWidth ? '100%' : 'fit-content')};\n min-width: 0;\n\n &:hover:not([data-disabled='true']) {\n border-color: ${(props) => {\n const variantProps = getCheckboxCardVariantProps(props.$variant)\n if (props.$checked) return variantProps.borderChecked\n return variantProps.border.hover\n }};\n }\n\n .vacano_checkbox_container {\n pointer-events: none;\n }\n`\n\nexport const StyledInput = styled.input`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n`\n\nexport const StyledContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n`\n\nexport const StyledLabel = styled.span<StyledLabelProps>`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n color: ${(props) => getCheckboxCardVariantProps(props.$variant).label.static};\n\n label[data-disabled='true'] & {\n color: ${(props) => getCheckboxCardVariantProps(props.$variant).label.disabled};\n }\n`\n\nexport const StyledDescription = styled.span<StyledDescriptionProps>`\n font-size: 12px;\n font-weight: 400;\n line-height: 1.4;\n color: ${(props) => getCheckboxCardVariantProps(props.$variant).description.static};\n\n label[data-disabled='true'] & {\n color: ${(props) => getCheckboxCardVariantProps(props.$variant).description.disabled};\n }\n`\n","import {\n StyledContainer,\n StyledContent,\n StyledDescription,\n StyledInput,\n StyledLabel,\n} from './styled'\nimport { CheckboxCardProps } from './types'\nimport { Checkbox } from '../Checkbox'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('checkbox-card')\n\nexport const CheckboxCard = ({\n checked,\n className,\n classnames,\n description,\n disabled,\n fullWidth = false,\n label,\n onChange,\n ref,\n variant = 'normal',\n ...rest\n}: CheckboxCardProps) => {\n return (\n <StyledContainer\n className={css('container', className)}\n $checked={checked}\n $disabled={Boolean(disabled)}\n $fullWidth={fullWidth}\n $variant={variant}\n data-disabled={disabled}\n >\n <StyledInput\n {...rest}\n ref={ref}\n type=\"checkbox\"\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n />\n <Checkbox\n className={classnames?.checkbox}\n checked={checked}\n disabled={disabled}\n variant={variant}\n onChange={() => {}}\n tabIndex={-1}\n aria-hidden\n />\n <StyledContent className={css('content', classnames?.content)}>\n <StyledLabel className={css('label', classnames?.label)} $variant={variant}>\n {label}\n </StyledLabel>\n {description && (\n <StyledDescription\n className={css('description', classnames?.description)}\n $variant={variant}\n >\n {description}\n </StyledDescription>\n )}\n </StyledContent>\n </StyledContainer>\n )\n}\n","import { alpha, COLORS } from '../../lib'\n\nexport const CHECKBOX_GROUP_PROPS = {\n label: {\n color: COLORS['black'],\n disabledColor: alpha(COLORS['black'], 40),\n },\n}\n","import styled from '@emotion/styled'\n\nimport { CHECKBOX_GROUP_PROPS } from './constants'\n\ntype StyledLabelProps = {\n $disabled?: boolean\n}\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`\n\nexport const StyledLabel = styled.span<StyledLabelProps>`\n font-size: 13px;\n font-weight: 500;\n line-height: 1.5;\n color: ${(props) =>\n props.$disabled ? CHECKBOX_GROUP_PROPS.label.disabledColor : CHECKBOX_GROUP_PROPS.label.color};\n margin-bottom: 4px;\n`\n\nexport const StyledOptions = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n`\n","import { StyledContainer, StyledLabel, StyledOptions } from './styled'\nimport { CheckboxGroupProps } from './types'\nimport { Checkbox } from '../Checkbox'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('checkbox-group')\n\nexport const CheckboxGroup = ({\n className,\n classnames,\n disabled,\n label,\n onChange,\n options,\n ref,\n value,\n ...rest\n}: CheckboxGroupProps) => {\n const handleChange = (optionValue: string, checked: boolean) => {\n if (checked) {\n onChange([...value, optionValue])\n } else {\n onChange(value.filter((v) => v !== optionValue))\n }\n }\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {label && (\n <StyledLabel className={css('label', classnames?.label)} $disabled={disabled}>\n {label}\n </StyledLabel>\n )}\n <StyledOptions className={css('options', classnames?.options)}>\n {options.map((option) => (\n <Checkbox\n key={option.value}\n className={classnames?.checkbox}\n checked={value.includes(option.value)}\n label={option.label}\n disabled={disabled}\n onChange={(e) => handleChange(option.value, e.target.checked)}\n />\n ))}\n </StyledOptions>\n </StyledContainer>\n )\n}\n","import { ChipVariant } from './types'\nimport { alpha, COLORS } from '../../lib'\n\nexport const CHIP_VARIANT_PROPS: Record<\n ChipVariant,\n {\n background: string\n color: string\n deleteHover: string\n }\n> = {\n gray: {\n background: alpha(COLORS['iron-grey'], 10),\n color: COLORS['iron-grey'],\n deleteHover: alpha(COLORS['iron-grey'], 20),\n },\n red: {\n background: alpha(COLORS['red'], 10),\n color: COLORS['red'],\n deleteHover: alpha(COLORS['red'], 20),\n },\n blue: {\n background: alpha(COLORS['steel-blue'], 10),\n color: COLORS['steel-blue'],\n deleteHover: alpha(COLORS['steel-blue'], 20),\n },\n black: {\n background: COLORS['black'],\n color: COLORS['white'],\n deleteHover: alpha(COLORS['white'], 20),\n },\n}\n","import { CHIP_VARIANT_PROPS } from './constants'\nimport { ChipVariant } from './types'\n\nexport const getChipVariantProps = (variant: ChipVariant) => {\n return CHIP_VARIANT_PROPS[variant] ?? CHIP_VARIANT_PROPS['gray']\n}\n","import styled from '@emotion/styled'\n\nimport { getChipVariantProps } from './helpers'\nimport { ChipVariant } from './types'\n\ntype StyledContainerProps = {\n $variant: ChipVariant\n $deletable: boolean\n}\n\ntype StyledDeleteProps = {\n $variant: ChipVariant\n}\n\nexport const StyledContainer = styled.span<StyledContainerProps>`\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 0 ${(props) => (props.$deletable ? '7px' : '10px')} 0 10px;\n border-radius: 12px;\n height: 24px;\n font-size: 12px;\n font-weight: 500;\n line-height: 1.5;\n background-color: ${(props) => getChipVariantProps(props.$variant).background};\n color: ${(props) => getChipVariantProps(props.$variant).color};\n`\n\nexport const StyledDelete = styled.button<StyledDeleteProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n margin: 0;\n margin-left: 2px;\n border: none;\n background: transparent;\n color: inherit;\n cursor: pointer;\n border-radius: 4px;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${(props) => getChipVariantProps(props.$variant).deleteHover};\n }\n\n & svg {\n width: 14px;\n height: 14px;\n }\n`\n\nexport const StyledLabel = styled.span`\n flex: 1 0 auto;\n text-align: center;\n`\n","import { StyledContainer, StyledDelete, StyledLabel } from './styled'\nimport { ChipProps } from './types'\nimport { X } from '../../icons/Lucide'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('chip')\n\nexport const Chip = ({\n children,\n className,\n classnames,\n deletable,\n onDelete,\n ref,\n variant = 'gray',\n ...rest\n}: ChipProps) => {\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n className={css('container', className)}\n $variant={variant}\n $deletable={Boolean(deletable)}\n >\n <StyledLabel className={css('label', classnames?.label)}>{children}</StyledLabel>\n {deletable && (\n <StyledDelete\n type=\"button\"\n className={css('delete', classnames?.delete)}\n $variant={variant}\n onClick={onDelete}\n >\n <X />\n </StyledDelete>\n )}\n </StyledContainer>\n )\n}\n","export const DEFAULT_CONFIRM_LABEL = 'Confirm'\nexport const DEFAULT_CANCEL_LABEL = 'Cancel'\n","import { keyframes } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nconst slideIn = keyframes`\n from {\n opacity: 0;\n transform: translateX(-50%) translateY(100%);\n }\n to {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n`\n\nconst slideOut = keyframes`\n from {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n to {\n opacity: 0;\n transform: translateX(-50%) translateY(100%);\n }\n`\n\ntype StyledContainerProps = {\n $isExiting: boolean\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n position: fixed;\n bottom: 24px;\n left: 50%;\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background-color: ${COLORS.white};\n border: 1px dashed ${COLORS.gray};\n border-radius: 12px;\n box-shadow:\n 0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -2px rgba(0, 0, 0, 0.1);\n animation: ${({ $isExiting }) => ($isExiting ? slideOut : slideIn)} 0.2s ease-out forwards;\n z-index: 1000;\n`\n\nexport const StyledMessage = styled.p`\n margin: 0;\n font-size: 14px;\n color: ${COLORS.black};\n white-space: nowrap;\n`\n\nexport const StyledActions = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`\n","import { useCallback, useEffect, useState } from 'react'\n\nimport { DEFAULT_CANCEL_LABEL, DEFAULT_CONFIRM_LABEL } from './constants'\nimport { StyledActions, StyledContainer, StyledMessage } from './styled'\nimport type { ConfirmationState } from './types'\nimport { Button } from '../Button'\n\ntype ConfirmationBarProps = {\n confirmation: ConfirmationState\n onDone: () => void\n}\n\nexport const ConfirmationBar = ({ confirmation, onDone }: ConfirmationBarProps) => {\n const [isExiting, setIsExiting] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n\n const { message, onConfirm, onCancel, options } = confirmation\n const confirmLabel = options.confirmLabel || DEFAULT_CONFIRM_LABEL\n const cancelLabel = options.cancelLabel || DEFAULT_CANCEL_LABEL\n\n const exit = useCallback(\n (callback?: () => void) => {\n setIsExiting(true)\n setTimeout(() => {\n callback?.()\n onDone()\n }, 200)\n },\n [onDone],\n )\n\n const handleConfirm = useCallback(async () => {\n const result = onConfirm()\n\n if (result instanceof Promise) {\n setIsLoading(true)\n try {\n await result\n } finally {\n setIsLoading(false)\n }\n }\n\n exit()\n }, [exit, onConfirm])\n\n const handleCancel = useCallback(() => {\n if (isLoading) return\n exit(onCancel)\n }, [exit, isLoading, onCancel])\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && !isLoading) {\n handleCancel()\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [handleCancel, isLoading])\n\n return (\n <StyledContainer $isExiting={isExiting}>\n <StyledMessage>{message}</StyledMessage>\n <StyledActions>\n <Button variant=\"system\" size=\"compact\" onClick={handleCancel} disabled={isLoading}>\n {cancelLabel}\n </Button>\n <Button variant=\"danger\" size=\"compact\" onClick={handleConfirm} loading={isLoading}>\n {confirmLabel}\n </Button>\n </StyledActions>\n </StyledContainer>\n )\n}\n","import { createContext } from 'react'\n\nimport type { ConfirmationContextValue } from './types'\n\nexport const ConfirmationContext = createContext<ConfirmationContextValue | null>(null)\n","import { useCallback, useState, type PropsWithChildren, type ReactNode } from 'react'\n\nimport { ConfirmationBar } from './ConfirmationBar'\nimport { ConfirmationContext } from './context'\nimport type { ConfirmationOptions, ConfirmationState } from './types'\n\nconst noop = () => {}\n\nexport const ConfirmationProvider = ({ children }: PropsWithChildren) => {\n const [state, setState] = useState<ConfirmationState | null>(null)\n\n const show = useCallback(\n (\n message: ReactNode,\n onConfirm: () => void,\n onCancel?: () => void,\n options?: ConfirmationOptions,\n ) => {\n setState({\n open: true,\n message,\n onConfirm,\n onCancel: onCancel || noop,\n options: options || {},\n })\n },\n [],\n )\n\n const hide = useCallback(() => {\n setState(null)\n }, [])\n\n return (\n <ConfirmationContext.Provider value={{ show, hide }}>\n {children}\n {state && <ConfirmationBar confirmation={state} onDone={hide} />}\n </ConfirmationContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { ConfirmationContext } from './context'\n\nexport const useConfirmation = () => {\n const context = useContext(ConfirmationContext)\n\n if (!context) {\n throw new Error('useConfirmation must be used within ConfirmationProvider')\n }\n\n return context\n}\n","import { BREAKPOINTS } from '../../lib'\n\nexport const CONTAINER_MAX_WIDTHS: Record<keyof typeof BREAKPOINTS, string> = {\n sm: `${BREAKPOINTS.sm}px`,\n md: `${BREAKPOINTS.md}px`,\n lg: `${BREAKPOINTS.lg}px`,\n xl: `${BREAKPOINTS.xl}px`,\n '2xl': `${BREAKPOINTS['2xl']}px`,\n}\n","import styled from '@emotion/styled'\n\nimport { CONTAINER_MAX_WIDTHS } from './constants'\nimport { mediaUp } from '../../lib'\n\nexport const StyledContainer = styled.div`\n width: 100%;\n\n ${mediaUp('sm')} {\n max-width: ${CONTAINER_MAX_WIDTHS.sm};\n }\n\n ${mediaUp('md')} {\n max-width: ${CONTAINER_MAX_WIDTHS.md};\n }\n\n ${mediaUp('lg')} {\n max-width: ${CONTAINER_MAX_WIDTHS.lg};\n }\n\n ${mediaUp('xl')} {\n max-width: ${CONTAINER_MAX_WIDTHS.xl};\n }\n\n ${mediaUp('2xl')} {\n max-width: ${CONTAINER_MAX_WIDTHS['2xl']};\n }\n`\n","import { PropsWithChildren } from 'react'\n\nimport { StyledContainer } from './styled'\nimport { ContainerProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('container')\nexport const Container = ({\n children,\n className,\n ref,\n ...rest\n}: PropsWithChildren<ContainerProps>) => (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {children}\n </StyledContainer>\n)\n","import { DatePickerVariant } from './types'\nimport { alpha, COLORS, VacanoComponentSize, VacanoInteractiveElementState } from '../../lib'\n\nexport const DATE_PICKER_SIZE_PROPS: Record<\n VacanoComponentSize,\n {\n height: string\n padding: string\n radius: string\n iconSize: number\n }\n> = {\n compact: {\n height: '32px',\n padding: '0 10px',\n radius: '14px',\n iconSize: 16,\n },\n default: {\n height: '40px',\n padding: '0 14px',\n radius: '16px',\n iconSize: 20,\n },\n}\n\nexport const DATE_PICKER_VARIANT_PROPS: Record<\n DatePickerVariant,\n {\n border: VacanoInteractiveElementState\n background: VacanoInteractiveElementState\n color: VacanoInteractiveElementState\n placeholder: VacanoInteractiveElementState\n focus: string\n }\n> = {\n normal: {\n background: {\n static: alpha(COLORS['black'], 2),\n disabled: alpha(COLORS['black'], 10),\n },\n border: {\n static: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 10),\n },\n color: {\n static: COLORS['black'],\n disabled: alpha(COLORS['black'], 65),\n },\n placeholder: {\n static: alpha(COLORS['black'], 40),\n disabled: alpha(COLORS['black'], 65),\n },\n focus: alpha(COLORS['iron-grey'], 30),\n },\n error: {\n background: {\n static: alpha(COLORS['red'], 2),\n disabled: alpha(COLORS['red'], 10),\n },\n border: {\n static: alpha(COLORS['red'], 60),\n disabled: alpha(COLORS['red'], 10),\n },\n color: {\n static: COLORS['red'],\n disabled: alpha(COLORS['red'], 65),\n },\n placeholder: {\n static: alpha(COLORS['red'], 40),\n disabled: alpha(COLORS['red'], 65),\n },\n focus: alpha(COLORS['red'], 30),\n },\n}\n\nexport const CALENDAR_CELL_SIZE = 36\nexport const CALENDAR_GAP = 2\nexport const CALENDAR_PADDING = 12\n","/**\n * Go-style date formatting\n * Reference time: Mon Jan 2 15:04:05 MST 2006\n *\n * Tokens:\n * - 2006: 4-digit year\n * - 06: 2-digit year\n * - January: full month name\n * - Jan: short month name\n * - 01: zero-padded month (01-12)\n * - 1: month (1-12)\n * - Monday: full weekday name\n * - Mon: short weekday name\n * - 02: zero-padded day (01-31)\n * - 2: day (1-31)\n * - _2: space-padded day\n * - 15: 24-hour hour (00-23)\n * - 03: 12-hour hour zero-padded (01-12)\n * - 3: 12-hour hour (1-12)\n * - 04: minute (00-59)\n * - 05: second (00-59)\n * - PM: AM/PM uppercase\n * - pm: am/pm lowercase\n */\nexport const formatDateGo = (date: Date, format: string, locale: string = 'en'): string => {\n const year = date.getFullYear()\n const month = date.getMonth()\n const day = date.getDate()\n const hours = date.getHours()\n const minutes = date.getMinutes()\n const seconds = date.getSeconds()\n\n const hour12 = hours % 12 || 12\n const isPM = hours >= 12\n\n const monthLong = new Intl.DateTimeFormat(locale, { month: 'long' }).format(date)\n const monthShort = new Intl.DateTimeFormat(locale, { month: 'short' }).format(date)\n const weekdayLong = new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(date)\n const weekdayShort = new Intl.DateTimeFormat(locale, { weekday: 'short' }).format(date)\n\n const pad = (n: number): string => n.toString().padStart(2, '0')\n const spacePad = (n: number): string => n.toString().padStart(2, ' ')\n\n // Use placeholder approach to avoid token collision\n // First replace tokens with unique placeholders, then replace placeholders with values\n // Placeholder IDs use only letters to avoid being matched by digit tokens\n const placeholder = (id: string) => `\\x00${id}\\x00`\n\n // Tokens ordered by length (longest first) to avoid partial matches\n // Each token maps to [placeholder_id, actual_value]\n const tokens: [string, string, string][] = [\n ['2006', 'YEARFOUR', year.toString()],\n ['January', 'MONTHLONG', monthLong],\n ['Monday', 'WEEKDAYLONG', weekdayLong],\n ['Jan', 'MONTHSHORT', monthShort],\n ['Mon', 'WEEKDAYSHORT', weekdayShort],\n ['06', 'YEARTWO', year.toString().slice(-2)],\n ['01', 'MONTHPAD', pad(month + 1)],\n ['_2', 'DAYSPACE', spacePad(day)],\n ['02', 'DAYPAD', pad(day)],\n ['15', 'HOURTWENTYFOUR', pad(hours)],\n ['03', 'HOURTWELVEPAD', pad(hour12)],\n ['04', 'MINUTE', pad(minutes)],\n ['05', 'SECOND', pad(seconds)],\n ['PM', 'AMPMUP', isPM ? 'PM' : 'AM'],\n ['pm', 'AMPMLOW', isPM ? 'pm' : 'am'],\n // Single character tokens must come last\n ['1', 'MONTH', (month + 1).toString()],\n ['2', 'DAY', day.toString()],\n ['3', 'HOURTWELVE', hour12.toString()],\n ]\n\n let result = format\n\n // First pass: replace all tokens with placeholders\n for (const [token, id] of tokens) {\n result = result.split(token).join(placeholder(id))\n }\n\n // Second pass: replace all placeholders with actual values\n for (const [, id, value] of tokens) {\n result = result.split(placeholder(id)).join(value)\n }\n\n return result\n}\n\n/**\n * Get days in a month\n */\nexport const getDaysInMonth = (year: number, month: number): number => {\n return new Date(year, month + 1, 0).getDate()\n}\n\n/**\n * Get the first day of the month (0 = Sunday, 6 = Saturday)\n */\nexport const getFirstDayOfMonth = (year: number, month: number): number => {\n return new Date(year, month, 1).getDay()\n}\n\n/**\n * Generate calendar grid for a month\n */\nexport const generateCalendarDays = (\n year: number,\n month: number,\n weekStartsOn: 0 | 1 = 1,\n): (number | null)[] => {\n const daysInMonth = getDaysInMonth(year, month)\n const firstDay = getFirstDayOfMonth(year, month)\n\n // Adjust for week start\n let leadingEmptyDays = firstDay - weekStartsOn\n if (leadingEmptyDays < 0) {\n leadingEmptyDays += 7\n }\n\n const days: (number | null)[] = []\n\n // Leading empty cells\n for (let i = 0; i < leadingEmptyDays; i++) {\n days.push(null)\n }\n\n // Days of the month\n for (let day = 1; day <= daysInMonth; day++) {\n days.push(day)\n }\n\n // Trailing empty cells to complete the grid (6 rows × 7 days = 42)\n while (days.length < 42) {\n days.push(null)\n }\n\n return days\n}\n\n/**\n * Get localized weekday names\n */\nexport const getWeekdayNames = (locale: string, weekStartsOn: 0 | 1 = 1): string[] => {\n const weekdays: string[] = []\n\n for (let i = 0; i < 7; i++) {\n const dayIndex = (weekStartsOn + i) % 7\n const date = new Date(2024, 0, 7 + dayIndex)\n weekdays.push(new Intl.DateTimeFormat(locale, { weekday: 'short' }).format(date))\n }\n\n return weekdays\n}\n\n/**\n * Get localized month names\n */\nexport const getMonthNames = (locale: string): string[] => {\n const months: string[] = []\n for (let i = 0; i < 12; i++) {\n const date = new Date(2024, i, 1)\n months.push(new Intl.DateTimeFormat(locale, { month: 'long' }).format(date))\n }\n return months\n}\n\n/**\n * Get short month names\n */\nexport const getShortMonthNames = (locale: string): string[] => {\n const months: string[] = []\n for (let i = 0; i < 12; i++) {\n const date = new Date(2024, i, 1)\n months.push(new Intl.DateTimeFormat(locale, { month: 'short' }).format(date))\n }\n return months\n}\n\n/**\n * Check if two dates are the same day\n */\nexport const isSameDay = (a: Date, b: Date): boolean => {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n )\n}\n\n/**\n * Check if two dates are in the same month\n */\nexport const isSameMonth = (a: Date, b: Date): boolean => {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth()\n}\n\n/**\n * Check if two dates are in the same year\n */\nexport const isSameYear = (a: Date, b: Date): boolean => {\n return a.getFullYear() === b.getFullYear()\n}\n\n/**\n * Check if a date is within a range\n */\nexport const isDateInRange = (date: Date, minDate?: Date, maxDate?: Date): boolean => {\n if (minDate && date < minDate) return false\n if (maxDate && date > maxDate) return false\n return true\n}\n\n/**\n * Check if a day is disabled based on min/max dates\n */\nexport const isDayDisabled = (\n year: number,\n month: number,\n day: number,\n minDate?: Date,\n maxDate?: Date,\n): boolean => {\n const date = new Date(year, month, day)\n\n if (minDate) {\n const minDay = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())\n if (date < minDay) return true\n }\n\n if (maxDate) {\n const maxDay = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())\n if (date > maxDay) return true\n }\n\n return false\n}\n\n/**\n * Check if a month is disabled based on min/max dates\n */\nexport const isMonthDisabled = (\n year: number,\n month: number,\n minDate?: Date,\n maxDate?: Date,\n): boolean => {\n if (minDate) {\n const minYear = minDate.getFullYear()\n const minMonth = minDate.getMonth()\n if (year < minYear || (year === minYear && month < minMonth)) return true\n }\n\n if (maxDate) {\n const maxYear = maxDate.getFullYear()\n const maxMonth = maxDate.getMonth()\n if (year > maxYear || (year === maxYear && month > maxMonth)) return true\n }\n\n return false\n}\n\n/**\n * Check if a year is disabled based on min/max dates\n */\nexport const isYearDisabled = (year: number, minDate?: Date, maxDate?: Date): boolean => {\n if (minDate && year < minDate.getFullYear()) return true\n if (maxDate && year > maxDate.getFullYear()) return true\n return false\n}\n\n/**\n * Generate year range for year picker\n */\nexport const generateYearRange = (centerYear: number, range: number = 12): number[] => {\n const startYear = centerYear - Math.floor(range / 2)\n const years: number[] = []\n for (let i = 0; i < range; i++) {\n years.push(startYear + i)\n }\n return years\n}\n\n/**\n * Get default display format based on mode\n */\nexport const getDefaultDisplayFormat = (mode: 'date' | 'month' | 'year'): string => {\n switch (mode) {\n case 'date':\n return '02.01.2006'\n case 'month':\n return 'January 2006'\n case 'year':\n return '2006'\n }\n}\n","import styled from '@emotion/styled'\n\nimport {\n CALENDAR_CELL_SIZE,\n CALENDAR_GAP,\n CALENDAR_PADDING,\n DATE_PICKER_SIZE_PROPS,\n DATE_PICKER_VARIANT_PROPS,\n} from './constants'\nimport { DatePickerPosition, DatePickerVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { alpha, COLORS, VacanoComponentSize } from '../../lib'\n\nexport const StyledContainer = styled.div<{ $fullWidth: boolean }>`\n position: relative;\n display: inline-flex;\n flex-direction: column;\n gap: 2px;\n min-width: 180px;\n width: ${({ $fullWidth }) => ($fullWidth ? '100%' : 'fit-content')};\n`\n\nexport const StyledLabel = styled(FieldLabel)`\n margin-left: 6px;\n`\n\nexport const StyledTrigger = styled.button<{\n $size: VacanoComponentSize\n $variant: DatePickerVariant\n $disabled: boolean\n $open: boolean\n $hasValue: boolean\n}>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n width: 100%;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n outline: none;\n font-size: 14px;\n font-weight: 500;\n text-align: left;\n height: ${({ $size }) => DATE_PICKER_SIZE_PROPS[$size].height};\n padding: ${({ $size }) => DATE_PICKER_SIZE_PROPS[$size].padding};\n border-radius: ${({ $size }) => DATE_PICKER_SIZE_PROPS[$size].radius};\n color: ${({ $variant, $disabled, $hasValue }) =>\n $hasValue\n ? DATE_PICKER_VARIANT_PROPS[$variant].color[$disabled ? 'disabled' : 'static']\n : DATE_PICKER_VARIANT_PROPS[$variant].placeholder[$disabled ? 'disabled' : 'static']};\n border: 1px solid\n ${({ $variant, $disabled }) =>\n DATE_PICKER_VARIANT_PROPS[$variant].border[$disabled ? 'disabled' : 'static']};\n background-color: ${({ $variant, $disabled }) =>\n DATE_PICKER_VARIANT_PROPS[$variant].background[$disabled ? 'disabled' : 'static']};\n\n ${({ $open, $variant }) =>\n $open &&\n `\n outline: 2px solid ${DATE_PICKER_VARIANT_PROPS[$variant].focus};\n `}\n`\n\nexport const StyledTriggerText = styled.span`\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`\n\nexport const StyledTriggerIcon = styled.span<{ $open: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: transform 0.15s ease;\n transform: ${({ $open }) => ($open ? 'rotate(180deg)' : 'rotate(0deg)')};\n`\n\nconst calendarStyles = `\n z-index: 100;\n background-color: ${COLORS.white};\n border: 1px solid ${alpha(COLORS.black, 15)};\n border-radius: 12px;\n box-shadow: 0 4px 16px ${alpha(COLORS.black, 12)};\n padding: ${CALENDAR_PADDING}px;\n`\n\nconst getCalendarTransform = ($open: boolean, $position: DatePickerPosition) => {\n if (!$open) {\n return $position === 'bottom' ? 'translateY(-8px)' : 'translateY(8px)'\n }\n return 'translateY(0)'\n}\n\nexport const StyledCalendar = styled.div<{ $open: boolean; $position: DatePickerPosition }>`\n position: absolute;\n ${({ $position }) =>\n $position === 'bottom' ? 'top: calc(100% + 4px);' : 'bottom: calc(100% + 4px);'}\n left: 0;\n ${calendarStyles}\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open, $position }) => getCalendarTransform($open, $position)};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n\nexport const StyledPortalCalendar = styled.div<{ $open: boolean; $position: DatePickerPosition }>`\n position: fixed;\n ${calendarStyles}\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open, $position }) => getCalendarTransform($open, $position)};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n\nexport const StyledCalendarHeader = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 8px;\n`\n\nexport const StyledCalendarTitle = styled.button`\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border: none;\n background: transparent;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 600;\n color: ${COLORS.black};\n cursor: pointer;\n\n &:hover {\n background-color: ${alpha(COLORS.black, 5)};\n }\n`\n\nexport const StyledNavButton = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n border-radius: 6px;\n color: ${COLORS.black};\n cursor: pointer;\n\n &:hover {\n background-color: ${alpha(COLORS.black, 5)};\n }\n\n &:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n\n &:hover {\n background: transparent;\n }\n }\n`\n\nexport const StyledNavButtons = styled.div`\n display: flex;\n gap: 4px;\n`\n\nexport const StyledWeekdays = styled.div`\n display: grid;\n grid-template-columns: repeat(7, ${CALENDAR_CELL_SIZE}px);\n gap: ${CALENDAR_GAP}px;\n margin-bottom: 4px;\n`\n\nexport const StyledWeekday = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n height: ${CALENDAR_CELL_SIZE}px;\n font-size: 12px;\n font-weight: 500;\n color: ${alpha(COLORS.black, 50)};\n text-transform: uppercase;\n`\n\nexport const StyledDaysGrid = styled.div`\n display: grid;\n grid-template-columns: repeat(7, ${CALENDAR_CELL_SIZE}px);\n gap: ${CALENDAR_GAP}px;\n`\n\nexport const StyledDayCell = styled.button<{\n $selected: boolean\n $today: boolean\n $disabled: boolean\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${CALENDAR_CELL_SIZE}px;\n height: ${CALENDAR_CELL_SIZE}px;\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: ${({ $selected, $today }) => ($selected || $today ? 600 : 500)};\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n background-color: ${({ $selected }) => ($selected ? COLORS.black : 'transparent')};\n color: ${({ $selected, $disabled }) =>\n $selected ? COLORS.white : $disabled ? alpha(COLORS.black, 30) : COLORS.black};\n\n ${({ $today, $selected }) =>\n $today &&\n !$selected &&\n `\n box-shadow: inset 0 0 0 1px ${COLORS.black};\n `}\n\n &:hover:not(:disabled) {\n background-color: ${({ $selected }) => ($selected ? COLORS.black : alpha(COLORS.black, 8))};\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n`\n\nexport const StyledMonthsGrid = styled.div`\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 8px;\n width: ${7 * CALENDAR_CELL_SIZE + 6 * CALENDAR_GAP}px;\n`\n\nexport const StyledMonthCell = styled.button<{\n $selected: boolean\n $current: boolean\n $disabled: boolean\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 12px 8px;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: ${({ $selected, $current }) => ($selected || $current ? 600 : 400)};\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n background-color: ${({ $selected }) => ($selected ? COLORS.black : 'transparent')};\n color: ${({ $selected, $disabled }) =>\n $selected ? COLORS.white : $disabled ? alpha(COLORS.black, 30) : COLORS.black};\n\n ${({ $current, $selected }) =>\n $current &&\n !$selected &&\n `\n box-shadow: inset 0 0 0 1px ${COLORS.black};\n `}\n\n &:hover:not(:disabled) {\n background-color: ${({ $selected }) => ($selected ? COLORS.black : alpha(COLORS.black, 8))};\n }\n`\n\nexport const StyledYearsGrid = styled.div`\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 8px;\n width: ${7 * CALENDAR_CELL_SIZE + 6 * CALENDAR_GAP}px;\n`\n\nexport const StyledYearCell = styled.button<{\n $selected: boolean\n $current: boolean\n $disabled: boolean\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 12px 8px;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: ${({ $selected, $current }) => ($selected || $current ? 600 : 400)};\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n background-color: ${({ $selected }) => ($selected ? COLORS.black : 'transparent')};\n color: ${({ $selected, $disabled }) =>\n $selected ? COLORS.white : $disabled ? alpha(COLORS.black, 30) : COLORS.black};\n\n ${({ $current, $selected }) =>\n $current &&\n !$selected &&\n `\n box-shadow: inset 0 0 0 1px ${COLORS.black};\n `}\n\n &:hover:not(:disabled) {\n background-color: ${({ $selected }) => ($selected ? COLORS.black : alpha(COLORS.black, 8))};\n }\n`\n\nexport const StyledEmptyCell = styled.div`\n width: ${CALENDAR_CELL_SIZE}px;\n height: ${CALENDAR_CELL_SIZE}px;\n`\n","import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { DATE_PICKER_SIZE_PROPS } from './constants'\nimport {\n formatDateGo,\n generateCalendarDays,\n generateYearRange,\n getDefaultDisplayFormat,\n getShortMonthNames,\n getWeekdayNames,\n isDayDisabled,\n isMonthDisabled,\n isSameDay,\n isSameMonth,\n isSameYear,\n isYearDisabled,\n} from './helpers'\nimport {\n StyledCalendar,\n StyledCalendarHeader,\n StyledCalendarTitle,\n StyledContainer,\n StyledDayCell,\n StyledDaysGrid,\n StyledEmptyCell,\n StyledLabel,\n StyledMonthCell,\n StyledMonthsGrid,\n StyledNavButton,\n StyledNavButtons,\n StyledPortalCalendar,\n StyledTrigger,\n StyledTriggerIcon,\n StyledTriggerText,\n StyledWeekday,\n StyledWeekdays,\n StyledYearCell,\n StyledYearsGrid,\n} from './styled'\nimport { CalendarView, DatePickerPosition, DatePickerProps } from './types'\nimport { ChevronDown, ChevronLeft, ChevronRight } from '../../icons/Lucide'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('date-picker')\n\nconst CALENDAR_GAP = 4\nconst CALENDAR_MIN_HEIGHT = 300\n\ntype PortalPosition = {\n top: number\n left: number\n}\n\nexport const DatePicker = ({\n value,\n onChange,\n mode = 'date',\n displayFormat,\n placeholder,\n locale = 'en',\n weekStartsOn = 1,\n minDate,\n maxDate,\n size = 'default',\n variant = 'normal',\n disabled = false,\n fullWidth = false,\n label,\n portalRenderNode,\n open: controlledOpen,\n onOpen,\n onClose,\n className,\n classnames,\n ref,\n ...rest\n}: DatePickerProps) => {\n const today = useMemo(() => new Date(), [])\n const [internalOpen, setInternalOpen] = useState(false)\n const [portalPosition, setPortalPosition] = useState<PortalPosition>({ top: 0, left: 0 })\n const [position, setPosition] = useState<DatePickerPosition>('bottom')\n const [view, setView] = useState<CalendarView>(() => {\n if (mode === 'year') return 'years'\n if (mode === 'month') return 'months'\n return 'days'\n })\n\n const [viewDate, setViewDate] = useState<Date>(() => value ?? today)\n const [yearRangeStart, setYearRangeStart] = useState(() => {\n const year = value?.getFullYear() ?? today.getFullYear()\n return year - 6\n })\n\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement>(null)\n const calendarRef = useRef<HTMLDivElement>(null)\n\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : internalOpen\n\n const format = displayFormat ?? getDefaultDisplayFormat(mode)\n const weekdays = useMemo(() => getWeekdayNames(locale, weekStartsOn), [locale, weekStartsOn])\n const monthNames = useMemo(() => getShortMonthNames(locale), [locale])\n\n const calendarDays = useMemo(\n () => generateCalendarDays(viewDate.getFullYear(), viewDate.getMonth(), weekStartsOn),\n [viewDate, weekStartsOn],\n )\n\n const yearRange = useMemo(() => generateYearRange(yearRangeStart + 6, 12), [yearRangeStart])\n\n const displayValue = useMemo(() => {\n if (!value) return null\n return formatDateGo(value, format, locale)\n }, [value, format, locale])\n\n const placeholderText = placeholder ?? format.replace(/2006|06|January|Jan|01|02/g, '__')\n\n const updatePosition = useCallback(() => {\n if (!triggerRef.current) return\n\n const triggerRect = triggerRef.current.getBoundingClientRect()\n const calendarHeight = calendarRef.current?.offsetHeight ?? CALENDAR_MIN_HEIGHT\n\n const spaceBelow = window.innerHeight - triggerRect.bottom - CALENDAR_GAP\n const spaceAbove = triggerRect.top - CALENDAR_GAP\n\n const newPosition: DatePickerPosition =\n spaceBelow < calendarHeight && spaceAbove > spaceBelow ? 'top' : 'bottom'\n setPosition(newPosition)\n\n if (portalRenderNode) {\n const top =\n newPosition === 'bottom'\n ? triggerRect.bottom + CALENDAR_GAP\n : triggerRect.top - calendarHeight - CALENDAR_GAP\n\n setPortalPosition({\n top,\n left: triggerRect.left,\n })\n }\n }, [portalRenderNode])\n\n const handleOpen = useCallback(() => {\n if (disabled) return\n\n if (isControlled) {\n onOpen?.()\n } else {\n setInternalOpen(true)\n onOpen?.()\n }\n\n // Reset view based on mode\n if (mode === 'year') {\n setView('years')\n } else if (mode === 'month') {\n setView('months')\n } else {\n setView('days')\n }\n\n // Reset view date to value or today\n const newViewDate = value ?? today\n setViewDate(newViewDate)\n setYearRangeStart(newViewDate.getFullYear() - 6)\n }, [disabled, isControlled, onOpen, mode, value, today])\n\n const handleClose = useCallback(() => {\n if (isControlled) {\n onClose?.()\n } else {\n setInternalOpen(false)\n onClose?.()\n }\n }, [isControlled, onClose])\n\n const handleToggle = useCallback(() => {\n if (open) {\n handleClose()\n } else {\n handleOpen()\n }\n }, [open, handleClose, handleOpen])\n\n const handleSelectDay = useCallback(\n (day: number) => {\n const newDate = new Date(viewDate.getFullYear(), viewDate.getMonth(), day)\n onChange?.(newDate)\n handleClose()\n },\n [viewDate, onChange, handleClose],\n )\n\n const handleSelectMonth = useCallback(\n (month: number) => {\n if (mode === 'month') {\n const newDate = new Date(viewDate.getFullYear(), month, 1)\n onChange?.(newDate)\n handleClose()\n } else {\n setViewDate(new Date(viewDate.getFullYear(), month, 1))\n setView('days')\n }\n },\n [mode, viewDate, onChange, handleClose],\n )\n\n const handleSelectYear = useCallback(\n (year: number) => {\n if (mode === 'year') {\n const newDate = new Date(year, 0, 1)\n onChange?.(newDate)\n handleClose()\n } else if (mode === 'month') {\n setViewDate(new Date(year, viewDate.getMonth(), 1))\n setView('months')\n } else {\n setViewDate(new Date(year, viewDate.getMonth(), 1))\n setView('months')\n }\n },\n [mode, viewDate, onChange, handleClose],\n )\n\n const handlePrevMonth = useCallback(() => {\n setViewDate((prev) => new Date(prev.getFullYear(), prev.getMonth() - 1, 1))\n }, [])\n\n const handleNextMonth = useCallback(() => {\n setViewDate((prev) => new Date(prev.getFullYear(), prev.getMonth() + 1, 1))\n }, [])\n\n const handlePrevYear = useCallback(() => {\n setViewDate((prev) => new Date(prev.getFullYear() - 1, prev.getMonth(), 1))\n }, [])\n\n const handleNextYear = useCallback(() => {\n setViewDate((prev) => new Date(prev.getFullYear() + 1, prev.getMonth(), 1))\n }, [])\n\n const handlePrevYearRange = useCallback(() => {\n setYearRangeStart((prev) => prev - 12)\n }, [])\n\n const handleNextYearRange = useCallback(() => {\n setYearRangeStart((prev) => prev + 12)\n }, [])\n\n const handleTitleClick = useCallback(() => {\n if (view === 'days') {\n setView('months')\n } else if (view === 'months') {\n setView('years')\n }\n }, [view])\n\n useLayoutEffect(() => {\n if (open) {\n updatePosition()\n }\n }, [open, updatePosition])\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node\n const isOutsideContainer = containerRef.current && !containerRef.current.contains(target)\n const isOutsideCalendar = calendarRef.current && !calendarRef.current.contains(target)\n\n if (portalRenderNode) {\n if (isOutsideContainer && isOutsideCalendar) {\n handleClose()\n }\n } else {\n if (isOutsideContainer) {\n handleClose()\n }\n }\n }\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n handleClose()\n }\n }\n\n const handleScroll = () => {\n if (open && portalRenderNode) {\n updatePosition()\n }\n }\n\n const handleResize = () => {\n if (open && portalRenderNode) {\n updatePosition()\n }\n }\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n document.addEventListener('keydown', handleEscape)\n\n if (portalRenderNode) {\n window.addEventListener('scroll', handleScroll, true)\n window.addEventListener('resize', handleResize)\n }\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n document.removeEventListener('keydown', handleEscape)\n window.removeEventListener('scroll', handleScroll, true)\n window.removeEventListener('resize', handleResize)\n }\n }, [open, handleClose, portalRenderNode, updatePosition])\n\n const iconSize = DATE_PICKER_SIZE_PROPS[size].iconSize\n\n const renderDaysView = () => (\n <>\n <StyledCalendarHeader className={css('header', classnames?.header)}>\n <StyledCalendarTitle onClick={handleTitleClick} type=\"button\">\n {new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' }).format(viewDate)}\n </StyledCalendarTitle>\n <StyledNavButtons>\n <StyledNavButton onClick={handlePrevMonth} type=\"button\" aria-label=\"Previous month\">\n <ChevronLeft size={16} />\n </StyledNavButton>\n <StyledNavButton onClick={handleNextMonth} type=\"button\" aria-label=\"Next month\">\n <ChevronRight size={16} />\n </StyledNavButton>\n </StyledNavButtons>\n </StyledCalendarHeader>\n <StyledWeekdays>\n {weekdays.map((day, i) => (\n <StyledWeekday key={i}>{day}</StyledWeekday>\n ))}\n </StyledWeekdays>\n <StyledDaysGrid className={css('grid', classnames?.grid)}>\n {calendarDays.map((day, i) =>\n day === null ? (\n <StyledEmptyCell key={i} />\n ) : (\n <StyledDayCell\n key={i}\n type=\"button\"\n className={css('cell', classnames?.cell)}\n $selected={\n value\n ? isSameDay(value, new Date(viewDate.getFullYear(), viewDate.getMonth(), day))\n : false\n }\n $today={isSameDay(today, new Date(viewDate.getFullYear(), viewDate.getMonth(), day))}\n $disabled={isDayDisabled(\n viewDate.getFullYear(),\n viewDate.getMonth(),\n day,\n minDate,\n maxDate,\n )}\n disabled={isDayDisabled(\n viewDate.getFullYear(),\n viewDate.getMonth(),\n day,\n minDate,\n maxDate,\n )}\n onClick={() => handleSelectDay(day)}\n >\n {day}\n </StyledDayCell>\n ),\n )}\n </StyledDaysGrid>\n </>\n )\n\n const renderMonthsView = () => (\n <>\n <StyledCalendarHeader className={css('header', classnames?.header)}>\n <StyledCalendarTitle onClick={handleTitleClick} type=\"button\">\n {viewDate.getFullYear()}\n </StyledCalendarTitle>\n <StyledNavButtons>\n <StyledNavButton onClick={handlePrevYear} type=\"button\" aria-label=\"Previous year\">\n <ChevronLeft size={16} />\n </StyledNavButton>\n <StyledNavButton onClick={handleNextYear} type=\"button\" aria-label=\"Next year\">\n <ChevronRight size={16} />\n </StyledNavButton>\n </StyledNavButtons>\n </StyledCalendarHeader>\n <StyledMonthsGrid className={css('grid', classnames?.grid)}>\n {monthNames.map((month, i) => (\n <StyledMonthCell\n key={i}\n type=\"button\"\n className={css('cell', classnames?.cell)}\n $selected={value ? isSameMonth(value, new Date(viewDate.getFullYear(), i, 1)) : false}\n $current={isSameMonth(today, new Date(viewDate.getFullYear(), i, 1))}\n $disabled={isMonthDisabled(viewDate.getFullYear(), i, minDate, maxDate)}\n disabled={isMonthDisabled(viewDate.getFullYear(), i, minDate, maxDate)}\n onClick={() => handleSelectMonth(i)}\n >\n {month}\n </StyledMonthCell>\n ))}\n </StyledMonthsGrid>\n </>\n )\n\n const renderYearsView = () => (\n <>\n <StyledCalendarHeader className={css('header', classnames?.header)}>\n <StyledCalendarTitle type=\"button\" style={{ cursor: 'default' }}>\n {yearRange[0]} - {yearRange[yearRange.length - 1]}\n </StyledCalendarTitle>\n <StyledNavButtons>\n <StyledNavButton onClick={handlePrevYearRange} type=\"button\" aria-label=\"Previous years\">\n <ChevronLeft size={16} />\n </StyledNavButton>\n <StyledNavButton onClick={handleNextYearRange} type=\"button\" aria-label=\"Next years\">\n <ChevronRight size={16} />\n </StyledNavButton>\n </StyledNavButtons>\n </StyledCalendarHeader>\n <StyledYearsGrid className={css('grid', classnames?.grid)}>\n {yearRange.map((year) => (\n <StyledYearCell\n key={year}\n type=\"button\"\n className={css('cell', classnames?.cell)}\n $selected={value ? isSameYear(value, new Date(year, 0, 1)) : false}\n $current={today.getFullYear() === year}\n $disabled={isYearDisabled(year, minDate, maxDate)}\n disabled={isYearDisabled(year, minDate, maxDate)}\n onClick={() => handleSelectYear(year)}\n >\n {year}\n </StyledYearCell>\n ))}\n </StyledYearsGrid>\n </>\n )\n\n const renderCalendarContent = () => {\n switch (view) {\n case 'days':\n return renderDaysView()\n case 'months':\n return renderMonthsView()\n case 'years':\n return renderYearsView()\n }\n }\n\n const calendar = portalRenderNode ? (\n createPortal(\n <StyledPortalCalendar\n ref={calendarRef}\n $open={open}\n $position={position}\n className={css('calendar', classnames?.calendar)}\n style={{ top: portalPosition.top, left: portalPosition.left }}\n >\n {renderCalendarContent()}\n </StyledPortalCalendar>,\n portalRenderNode,\n )\n ) : (\n <StyledCalendar\n ref={calendarRef}\n $open={open}\n $position={position}\n className={css('calendar', classnames?.calendar)}\n >\n {renderCalendarContent()}\n </StyledCalendar>\n )\n\n return (\n <StyledContainer\n {...rest}\n ref={ref ?? containerRef}\n $fullWidth={fullWidth}\n className={css('container', className)}\n >\n {label && <StyledLabel>{label}</StyledLabel>}\n <StyledTrigger\n ref={triggerRef}\n type=\"button\"\n onClick={handleToggle}\n disabled={disabled}\n $size={size}\n $variant={variant}\n $disabled={disabled}\n $open={open}\n $hasValue={!!displayValue}\n className={css('trigger', classnames?.trigger)}\n >\n <StyledTriggerText>{displayValue ?? placeholderText}</StyledTriggerText>\n <StyledTriggerIcon $open={open}>\n <ChevronDown size={iconSize} />\n </StyledTriggerIcon>\n </StyledTrigger>\n {calendar}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { DrawerPosition } from './types'\nimport { alpha, COLORS, KEYFRAMES } from '../../lib'\n\nconst slideIn = {\n left: KEYFRAMES.slideInLeft,\n right: KEYFRAMES.slideInRight,\n top: KEYFRAMES.slideInTop,\n bottom: KEYFRAMES.slideInBottom,\n}\n\ntype StyledContainerProps = {\n $animated: boolean\n $position: DrawerPosition\n $size: string\n}\n\nconst getPositionStyles = (position: DrawerPosition, size: string) => {\n switch (position) {\n case 'left':\n return `\n top: 0;\n left: 0;\n height: 100%;\n width: ${size};\n `\n case 'right':\n return `\n top: 0;\n right: 0;\n height: 100%;\n width: ${size};\n `\n case 'top':\n return `\n top: 0;\n left: 0;\n width: 100%;\n height: ${size};\n `\n case 'bottom':\n return `\n bottom: 0;\n left: 0;\n width: 100%;\n height: ${size};\n `\n }\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n position: fixed;\n z-index: 1001;\n background-color: ${COLORS['white']};\n box-shadow: 0 4px 24px ${alpha(COLORS['black'], 20)};\n ${(props) => getPositionStyles(props.$position, props.$size)}\n animation: ${(props) => slideIn[props.$position]} ${(props) =>\n props.$animated ? '0.05s' : '0s'} ease-out forwards;\n`\n","import { createPortal } from 'react-dom'\n\nimport { StyledContainer } from './styled'\nimport { DrawerProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('drawer')\nexport const Drawer = ({\n animated,\n children,\n className,\n open,\n position = 'right',\n ref,\n size = '400px',\n ...rest\n}: DrawerProps) => {\n if (!open) {\n return null\n }\n\n return createPortal(\n <StyledContainer\n {...rest}\n ref={ref}\n className={css('container', className)}\n $animated={Boolean(animated)}\n $position={position}\n $size={size}\n >\n {children}\n </StyledContainer>,\n document.body,\n )\n}\n","import styled from '@emotion/styled'\n\nimport { DropdownAlign, DropdownPosition } from './types'\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n position: relative;\n display: inline-block;\n`\n\nexport const StyledTrigger = styled.div`\n cursor: pointer;\n`\n\nconst contentStyles = `\n z-index: 100;\n min-width: 160px;\n padding: 8px;\n background-color: ${COLORS.white};\n border: 1px solid ${COLORS.gray};\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n`\n\nconst getTransform = ($open: boolean, $position: DropdownPosition) => {\n if (!$open) {\n return $position === 'bottom' ? 'translateY(-8px)' : 'translateY(8px)'\n }\n return 'translateY(0)'\n}\n\nexport const StyledContent = styled.div<{\n $align: DropdownAlign\n $open: boolean\n $position: DropdownPosition\n}>`\n position: absolute;\n ${({ $position }) =>\n $position === 'bottom' ? 'top: calc(100% + 4px);' : 'bottom: calc(100% + 4px);'}\n ${({ $align }) => ($align === 'left' ? 'left: 0;' : 'right: 0;')}\n ${contentStyles}\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open, $position }) => getTransform($open, $position)};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n\nexport const StyledPortalContent = styled.div<{ $open: boolean; $position: DropdownPosition }>`\n position: fixed;\n ${contentStyles}\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open, $position }) => getTransform($open, $position)};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n","import { cloneElement, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { StyledContainer, StyledContent, StyledPortalContent, StyledTrigger } from './styled'\nimport { DropdownPosition, DropdownProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('dropdown')\n\ntype PortalPosition = {\n top: number\n left: number\n}\n\nconst DROPDOWN_GAP = 4\nconst DROPDOWN_MIN_HEIGHT = 100\n\nexport const Dropdown = ({\n align = 'left',\n autoClose = true,\n children,\n className,\n classnames,\n onClose,\n onOpen,\n open: controlledOpen,\n portalRenderNode,\n ref,\n trigger,\n ...rest\n}: DropdownProps) => {\n const [internalOpen, setInternalOpen] = useState(false)\n const [portalPosition, setPortalPosition] = useState<PortalPosition>({ top: 0, left: 0 })\n const [position, setPosition] = useState<DropdownPosition>('bottom')\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : internalOpen\n\n const updatePosition = useCallback(() => {\n if (!triggerRef.current) return\n\n const triggerRect = triggerRef.current.getBoundingClientRect()\n const contentHeight = contentRef.current?.offsetHeight ?? DROPDOWN_MIN_HEIGHT\n const contentWidth = contentRef.current?.offsetWidth ?? 160\n\n const spaceBelow = window.innerHeight - triggerRect.bottom - DROPDOWN_GAP\n const spaceAbove = triggerRect.top - DROPDOWN_GAP\n\n const newPosition: DropdownPosition =\n spaceBelow < contentHeight && spaceAbove > spaceBelow ? 'top' : 'bottom'\n setPosition(newPosition)\n\n if (portalRenderNode) {\n let left: number\n if (align === 'left') {\n left = triggerRect.left\n } else {\n left = triggerRect.right - contentWidth\n }\n\n const top =\n newPosition === 'bottom'\n ? triggerRect.bottom + DROPDOWN_GAP\n : triggerRect.top - contentHeight - DROPDOWN_GAP\n\n setPortalPosition({ top, left })\n }\n }, [align, portalRenderNode])\n\n const handleToggle = useCallback(() => {\n if (isControlled) {\n if (open) {\n onClose?.()\n } else {\n onOpen?.()\n }\n } else {\n setInternalOpen((prev) => {\n const next = !prev\n if (next) {\n onOpen?.()\n } else {\n onClose?.()\n }\n return next\n })\n }\n }, [isControlled, open, onClose, onOpen])\n\n const handleClose = useCallback(() => {\n if (isControlled) {\n onClose?.()\n } else {\n setInternalOpen(false)\n onClose?.()\n }\n }, [isControlled, onClose])\n\n const handleContentClick = useCallback(() => {\n if (autoClose) {\n handleClose()\n }\n }, [autoClose, handleClose])\n\n useLayoutEffect(() => {\n if (open) {\n updatePosition()\n }\n }, [open, updatePosition])\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node\n const isOutsideContainer = containerRef.current && !containerRef.current.contains(target)\n const isOutsideContent = contentRef.current && !contentRef.current.contains(target)\n\n if (portalRenderNode) {\n if (isOutsideContainer && isOutsideContent) {\n handleClose()\n }\n } else {\n if (isOutsideContainer) {\n handleClose()\n }\n }\n }\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n handleClose()\n }\n }\n\n const handleScroll = () => {\n if (open && portalRenderNode) {\n updatePosition()\n }\n }\n\n const handleResize = () => {\n if (open && portalRenderNode) {\n updatePosition()\n }\n }\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside)\n document.addEventListener('keydown', handleEscape)\n\n if (portalRenderNode) {\n window.addEventListener('scroll', handleScroll, true)\n window.addEventListener('resize', handleResize)\n }\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n document.removeEventListener('keydown', handleEscape)\n window.removeEventListener('scroll', handleScroll, true)\n window.removeEventListener('resize', handleResize)\n }\n }, [open, handleClose, portalRenderNode, updatePosition])\n\n const content = portalRenderNode ? (\n createPortal(\n <StyledPortalContent\n ref={contentRef}\n $open={open}\n $position={position}\n className={css('content', classnames?.content)}\n style={{ top: portalPosition.top, left: portalPosition.left }}\n onClick={handleContentClick}\n >\n {children}\n </StyledPortalContent>,\n portalRenderNode,\n )\n ) : (\n <StyledContent\n ref={contentRef}\n $align={align}\n $open={open}\n $position={position}\n className={css('content', classnames?.content)}\n onClick={handleContentClick}\n >\n {children}\n </StyledContent>\n )\n\n return (\n <StyledContainer {...rest} ref={ref ?? containerRef} className={css('container', className)}>\n <StyledTrigger\n ref={triggerRef}\n onClick={handleToggle}\n className={css('trigger', classnames?.trigger)}\n >\n {cloneElement(trigger)}\n </StyledTrigger>\n {content}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: inline-flex;\n align-items: center;\n gap: 8px;\n`\n\ntype StyledTextProps = {\n $isEmpty?: boolean\n}\n\nexport const StyledText = styled.span<StyledTextProps>`\n font-size: 14px;\n line-height: 1.4;\n color: ${({ $isEmpty }) => ($isEmpty ? COLORS['iron-grey'] : COLORS.black)};\n opacity: ${({ $isEmpty }) => ($isEmpty ? 0.6 : 1)};\n outline: none;\n\n &[contenteditable='true'] {\n cursor: text;\n }\n`\n\ntype StyledButtonProps = {\n $disabled?: boolean\n}\n\nexport const StyledButton = styled.button<StyledButtonProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n padding: 0;\n background: transparent;\n border: none;\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n color: ${({ $disabled }) => ($disabled ? COLORS.gray : COLORS['iron-grey'])};\n opacity: ${({ $disabled }) => ($disabled ? 0.5 : 0.7)};\n transition: opacity 0.2s ease-in-out;\n\n &:hover {\n opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};\n }\n`\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { StyledButton, StyledContainer, StyledText } from './styled'\nimport type { EditableTextProps } from './types'\nimport { Check, Pencil } from '../../icons/Lucide'\n\nexport const EditableText = ({\n value,\n onChange,\n disabled = false,\n placeholder,\n className,\n classnames,\n 'data-test-id': dataTestId,\n}: EditableTextProps) => {\n const [isEditing, setIsEditing] = useState(false)\n const containerRef = useRef<HTMLDivElement>(null)\n const textRef = useRef<HTMLSpanElement>(null)\n\n const save = useCallback(() => {\n setIsEditing(false)\n const newValue = textRef.current?.textContent || ''\n if (newValue !== value) {\n onChange(newValue)\n }\n }, [onChange, value])\n\n useEffect(() => {\n if (isEditing && textRef.current) {\n textRef.current.focus()\n // Move cursor to end\n const range = document.createRange()\n const selection = window.getSelection()\n range.selectNodeContents(textRef.current)\n range.collapse(false)\n selection?.removeAllRanges()\n selection?.addRange(range)\n }\n }, [isEditing])\n\n useEffect(() => {\n if (!isEditing) return\n\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n save()\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [isEditing, save])\n\n const handleEditClick = () => {\n if (disabled) return\n setIsEditing(true)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLSpanElement>) => {\n if (e.key === 'Enter' && e.metaKey) {\n e.preventDefault()\n save()\n } else if (e.key === 'Escape') {\n if (textRef.current) {\n textRef.current.textContent = value\n }\n setIsEditing(false)\n }\n }\n\n return (\n <StyledContainer ref={containerRef} className={className} data-test-id={dataTestId}>\n <StyledText\n ref={textRef}\n className={classnames?.text}\n contentEditable={isEditing}\n suppressContentEditableWarning\n onKeyDown={handleKeyDown}\n $isEmpty={!value}\n >\n {value || placeholder}\n </StyledText>\n <StyledButton\n type=\"button\"\n className={classnames?.button}\n $disabled={disabled && !isEditing}\n onClick={isEditing ? save : handleEditClick}\n disabled={disabled && !isEditing}\n aria-label={isEditing ? 'Save' : 'Edit'}\n >\n {isEditing ? <Check size={16} /> : <Pencil size={14} />}\n </StyledButton>\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { FieldMessageVariant } from './types'\nimport { COLORS } from '../../lib'\n\nconst VARIANT_COLORS: Record<FieldMessageVariant, string> = {\n normal: COLORS['iron-grey'],\n error: COLORS['red'],\n success: COLORS['green'],\n warning: COLORS['yellow'],\n}\n\nexport const StyledFieldMessage = styled.span<{ $variant: FieldMessageVariant }>`\n display: block;\n font-size: 12px;\n font-weight: 500;\n line-height: 1.4;\n color: ${(props) => VARIANT_COLORS[props.$variant]};\n`\n","import { StyledFieldMessage } from './styled'\nimport { FieldMessageProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('field-message')\n\nexport const FieldMessage = ({\n children,\n className,\n ref,\n variant = 'normal',\n ...rest\n}: FieldMessageProps) => {\n if (!children) {\n return null\n }\n\n return (\n <StyledFieldMessage\n {...rest}\n ref={ref}\n className={css('container', className)}\n $variant={variant}\n >\n {children}\n </StyledFieldMessage>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n`\n\nexport const StyledPreview = styled.div<{ $size: number }>`\n width: ${({ $size }) => $size}px;\n height: ${({ $size }) => $size}px;\n border-radius: 8px;\n border: 1px dashed ${COLORS.gray};\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${COLORS.white};\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n`\n\nexport const StyledPlaceholder = styled.span`\n font-size: 12px;\n color: ${COLORS['iron-grey']};\n`\n","const S = (e) => `\n .${e} {\n padding: 7px 16px;\n font-size: 14px;\n outline: 0;\n border: 0;\n background-color: #2F7FEF;\n color: #FFFFFF;\n border-radius: 20px;\n user-select: none;\n cursor: pointer;\n -moz-user-select: none;\n -webkit-user-select: none;\n }\n\n .${e}:active {\n transform: translate(0, 1px);\n }\n`, F = (e) => `\n .${e} {\n display: flex;\n flex: 1 1 auto;\n background: #33393F;\n overflow: hidden;\n align-items: center;\n justify-content: center;\n position: relative;\n width: 500px;\n height: 500px;\n max-width: 100%;\n max-height: 60vh;\n min-height: 250px;\n }\n\n @media (max-width: 540px) {\n .${e} {\n width: 100%;\n height: auto;\n aspect-ratio: 1;\n max-height: 70vh;\n }\n }\n`, M = (e) => `\n .${e} {\n padding: 7px 16px;\n font-size: 14px;\n outline: 0;\n border: 0;\n background-color: #E8EFF7;\n color: #768BA7;\n border-radius: 20px;\n cursor: pointer;\n user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n }\n\n .${e}:active {\n transform: translate(0, 1px);\n }\n`, T = (e) => `\n .${e} {\n display: flex;\n flex-direction: column;\n background-color: #FFFFFF;\n border-radius: 6px;\n box-shadow: 0 4px 16px rgba(77, 96, 124, 0.2);\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n }\n\n @media (max-width: 540px) {\n .${e} {\n width: 100%;\n border-radius: 8px;\n }\n }\n`, k = (e) => `\n .${e} {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n align-items: center;\n height: 60px;\n flex: 0 0 auto;\n padding: 0 20px;\n border-top: 1px solid #EEE;\n }\n\n @media (max-width: 540px) {\n .${e} {\n height: 56px;\n padding: 0 12px;\n gap: 8px;\n }\n }\n`, N = (e) => `\n .${e} {\n display: flex;\n justify-content: flex-start;\n gap: 10px;\n align-items: center;\n height: 60px;\n flex: 0 0 auto;\n padding: 0 20px;\n border-top-left-radius: 6px;\n border-top-right-radius: 6px;\n border-bottom: 1px solid #EEE;\n overflow: hidden;\n }\n\n @media (max-width: 540px) {\n .${e} {\n height: 48px;\n padding: 0 12px;\n font-size: 14px;\n }\n }\n`, Y = (e) => `\n .${e} {\n display: block;\n z-index: 101;\n outline: 1px dashed #aaa;\n background-color: transparent;\n cursor: move;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n position: absolute;\n touch-action: none;\n }\n`, X = (e) => `\n .${e} {\n position: absolute;\n z-index: 2;\n background-color: rgba(0, 0, 0, 0.6);\n touch-action: none;\n }\n`, _ = (e) => `\n .${e} {\n position: absolute;\n z-index: 3;\n touch-action: none;\n }\n`, Z = (e) => `\n .${e} {\n backface-visibility: hidden;\n perspective: 1000px;\n max-inline-size: unset !important;\n max-block-size: unset !important;\n }\n`, H = (e) => `\n .${e} {\n position: absolute;\n z-index: 100;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n overflow: hidden;\n border-radius: 50%;\n }\n`, q = {\n tl: \"nw-resize\",\n tr: \"ne-resize\",\n bl: \"sw-resize\",\n br: \"se-resize\"\n}, j = {\n tl: { h: \"left\", v: \"top\" },\n tr: { h: \"right\", v: \"top\" },\n bl: { h: \"left\", v: \"bottom\" },\n br: { h: \"right\", v: \"bottom\" }\n}, R = (e, t) => {\n const o = q[t], { h: i, v: n } = j[t];\n return `\n .${e} {\n display: block;\n z-index: 102;\n background-color: rgba(255, 255, 255, .6);\n cursor: ${o};\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n ${i}: -3px;\n ${n}: -3px;\n position: absolute;\n width: 5px;\n height: 5px;\n touch-action: none;\n }\n\n @media (max-width: 540px), (pointer: coarse) {\n .${e} {\n width: 24px;\n height: 24px;\n ${i}: -12px;\n ${n}: -12px;\n }\n }\n`;\n}, D = (e) => `\n .${e} {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: rgba(0, 0, 0, .4);\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n position: fixed;\n left: 0;\n top: 0;\n z-index: 1000;\n overflow-y: auto;\n box-sizing: border-box;\n padding: 16px;\n }\n\n @media (max-width: 540px) {\n .${e} {\n padding: 8px;\n align-items: flex-start;\n padding-top: env(safe-area-inset-top, 8px);\n padding-bottom: env(safe-area-inset-bottom, 8px);\n }\n }\n`, V = (e) => `\n .${e} {\n backface-visibility: hidden;\n user-select: none;\n perspective: 1000px;\n overflow: hidden;\n display: block;\n transform: translateZ(0);\n width: auto;\n -webkit-user-drag: none;\n position: absolute;\n z-index: 1;\n }\n`, O = (e) => {\n let t = 5381;\n for (let o = 0; o < e.length; o++)\n t = (t << 5) + t ^ e.charCodeAt(o);\n return Math.abs(t).toString(36);\n}, g = (e) => `hq-cropper__${O(e)}`, x = (e) => e || [], b = (e, t) => {\n if (t)\n for (const o of t)\n e.classList.add(o);\n}, W = (e) => {\n const t = {\n applyButton: [\n g(\"applyButton\"),\n ...x(e.applyButton)\n ],\n cancelButton: [\n g(\"cancelButton\"),\n ...x(e.cancelButton)\n ],\n container: [\n g(\"container\"),\n ...x(e.container)\n ],\n handlerMove: [\n g(\"handlerMove\"),\n ...x(e.handlerMove)\n ],\n handlerResizeTopLeft: [\n g(\"handlerResizeTopLeft\"),\n ...x(e.handlerResizeTopLeft)\n ],\n handlerResizeTopRight: [\n g(\"handlerResizeTopRight\"),\n ...x(e.handlerResizeTopRight)\n ],\n handlerResizeBottomLeft: [\n g(\"handlerResizeBottomLeft\"),\n ...x(e.handlerResizeBottomLeft)\n ],\n handlerResizeBottomRight: [\n g(\"handlerResizeBottomRight\"),\n ...x(e.handlerResizeBottomRight)\n ],\n sourceImage: [\n g(\"sourceImage\"),\n ...x(e.sourceImage)\n ],\n portalArea: [\n g(\"portalArea\"),\n ...x(e.portalArea)\n ],\n previewImage: [\n g(\"previewImage\"),\n ...x(e.previewImage)\n ],\n body: [g(\"body\"), ...x(e.body)],\n header: [g(\"header\"), ...x(e.header)],\n footer: [g(\"footer\"), ...x(e.footer)],\n portal: [g(\"portal\"), ...x(e.portal)],\n preview: [g(\"preview\"), ...x(e.preview)],\n root: [g(\"root\"), ...x(e.root)]\n }, o = `\n ${S(t.applyButton[0])}\n ${F(t.body[0])}\n ${M(t.cancelButton[0])}\n ${T(t.container[0])}\n ${k(t.footer[0])}\n ${N(t.header[0])}\n ${Y(t.handlerMove[0])}\n ${X(t.portalArea[0])}\n ${_(t.portal[0])}\n ${Z(t.previewImage[0])}\n ${H(t.preview[0])}\n ${R(t.handlerResizeBottomLeft[0], \"bl\")}\n ${R(t.handlerResizeBottomRight[0], \"br\")}\n ${R(t.handlerResizeTopLeft[0], \"tl\")}\n ${R(t.handlerResizeTopRight[0], \"tr\")}\n ${D(t.root[0])}\n ${V(t.sourceImage[0])}\n `, i = document.createElement(\"style\");\n return i.innerHTML = o, document.getElementsByTagName(\"head\")[0].prepend(i), t;\n};\nlet U = 0;\nconst K = (e) => {\n const t = /* @__PURE__ */ new Map(), o = new Proxy(\n { ...e },\n {\n set(a, l, s) {\n return Reflect.set(a, l, s), (t.get(l) || []).forEach(\n (u) => u.action(s, a, l)\n ), !0;\n }\n }\n );\n return { getState: () => ({ ...o }), setState: (a) => {\n for (const l of Object.keys(\n a\n )) {\n const s = a[l];\n s !== void 0 && (o[l] = s);\n }\n }, subscribe: (a, l) => {\n const s = String(++U), c = t.get(a) || [];\n return t.set(a, [\n ...c,\n {\n action: l,\n id: s\n }\n ]), s;\n }, unsubscribe: (a) => {\n for (const [l, s] of t.entries()) {\n const c = s.filter((u) => u.id !== a);\n if (c.length !== s.length) {\n t.set(l, c);\n return;\n }\n }\n }, unsubscribeAll: () => {\n t.clear();\n } };\n}, C = {\n action: null,\n sourceBase64: \"\",\n fileName: \"\",\n sourceHeight: 0,\n sourceWidth: 0,\n frame: {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n },\n portal: {\n left: 0,\n top: 0,\n size: 0\n },\n emitted: {\n X: 0,\n Y: 0,\n left: 0,\n top: 0,\n size: 0\n },\n config: {\n applyButtonLabel: \"Apply\",\n cancelButtonLabel: \"Cancel\",\n compression: 1,\n framePadding: 3,\n minPortalSize: 50,\n portalPosition: \"center\",\n portalSize: 150,\n outputSize: 0,\n type: \"jpeg\",\n maxFileSize: 0,\n allowedTypes: [\"image/jpeg\", \"image/png\", \"image/gif\", \"image/webp\"]\n }\n}, G = (e = {}, t = {}) => K({\n ...C,\n config: { ...C.config, ...e },\n css: W(t)\n}), J = (e, t) => {\n const o = e(), i = document.querySelector(\n `.${o.css?.body[0]}`\n );\n if (!i)\n return o.frame;\n const { width: n, height: d } = i.getBoundingClientRect(), p = n / d, r = t.width / t.height;\n let a, l, s = 0, c = 0;\n return p > r ? (a = d * r, l = d, c = (n - a) / 2) : (a = n, l = n * (t.height / t.width), s = (d - l) / 2), {\n width: a,\n height: l,\n left: c,\n top: s\n };\n}, Q = (e, t, o) => {\n const [i, n] = t, d = i + e > o.width ? (o.width - e) / 2 : i, p = n + e > o.height ? (o.height - e) / 2 : n;\n return [d, p];\n}, ee = (e, t) => {\n const { config: o } = e(), i = Math.min(t.width, t.height) - o.framePadding * 2, n = o.portalSize > i ? i : o.portalSize;\n if (Array.isArray(o.portalPosition) && o.portalPosition.length === 2) {\n const [d, p] = Q(\n n,\n o.portalPosition,\n t\n );\n return {\n left: d,\n top: p,\n size: n\n };\n }\n return o.portalPosition === \"center\" ? {\n size: n,\n left: (t.width - n) / 2,\n top: (t.height - n) / 2\n } : {\n left: 0,\n top: 0,\n size: n\n };\n};\nvar v = /* @__PURE__ */ ((e) => (e.MOVE = \"MOVE\", e.RESIZE_TL = \"RESIZE_TL\", e.RESIZE_TR = \"RESIZE_TR\", e.RESIZE_BR = \"RESIZE_BR\", e.RESIZE_BL = \"RESIZE_BL\", e))(v || {});\nconst te = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerMove), o.setAttribute(\"data-action\", v.MOVE), o;\n}, oe = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerResizeBottomLeft), o.setAttribute(\"data-action\", v.RESIZE_BL), o;\n}, ne = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerResizeBottomRight), o.setAttribute(\"data-action\", v.RESIZE_BR), o;\n}, ie = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerResizeTopLeft), o.setAttribute(\"data-action\", v.RESIZE_TL), o;\n}, re = (e) => {\n const t = e(), o = document.createElement(\"span\");\n return b(o, t.css?.handlerResizeTopRight), o.setAttribute(\"data-action\", v.RESIZE_TR), o;\n}, se = (e) => {\n const t = e(), o = document.createElement(\"img\");\n return b(o, t.css?.previewImage), o;\n}, ae = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.preview), o.appendChild(se(e)), o;\n}, le = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.portal), o.appendChild(ae(e)), o.appendChild(te(e)), o.appendChild(ie(e)), o.appendChild(re(e)), o.appendChild(oe(e)), o.appendChild(ne(e)), o;\n}, ce = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.portalArea), o.appendChild(le(e)), o;\n}, de = (e) => {\n const t = e(), o = document.createElement(\"img\");\n return b(o, t.css?.sourceImage), o.setAttribute(\"alt\", \"source\"), o.setAttribute(\"crossOrigin\", \"anonymous\"), o.setAttribute(\"draggable\", \"false\"), o.setAttribute(\"src\", t.sourceBase64), o;\n}, pe = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.body), o.appendChild(de(e)), o.appendChild(ce(e)), o;\n}, ue = (e, t) => {\n const o = e(), i = document.createElement(\"div\");\n return b(i, o.css?.applyButton), i.setAttribute(\"role\", \"button\"), i.innerText = o.config.applyButtonLabel, i.addEventListener(\"click\", t), i;\n}, me = (e, t) => {\n const o = e(), i = document.createElement(\"div\");\n return b(i, o.css?.cancelButton), i.setAttribute(\"role\", \"button\"), i.innerText = o.config.cancelButtonLabel, i.addEventListener(\"click\", t), i;\n}, he = (e, t, o) => {\n const i = e(), n = document.createElement(\"div\");\n return b(n, i.css?.footer), n.appendChild(me(e, o)), n.appendChild(ue(e, t)), n;\n}, fe = (e) => {\n const t = e(), o = document.createElement(\"div\");\n return b(o, t.css?.header), o;\n}, ge = (e, t, o) => {\n const i = e(), n = document.createElement(\"div\");\n return b(n, i.css?.container), n.appendChild(fe(e)), n.appendChild(pe(e)), n.appendChild(he(e, t, o)), n;\n}, xe = (e, t, o) => {\n const i = e(), n = document.createElement(\"div\");\n b(n, i.css?.root), n.appendChild(ge(e, t, o)), document.body.appendChild(n);\n}, be = (e) => {\n const t = document.createElement(\"input\");\n return t.style.display = \"none\", t.setAttribute(\"type\", \"file\"), t.setAttribute(\"accept\", \"image/x-png,image/jpeg\"), t.addEventListener(\"change\", e, !1), document.body.appendChild(t), t;\n}, $ = /* @__PURE__ */ new Map(), ye = {\n header: \"header\",\n sourceImage: \"sourceImage\",\n portalArea: \"portalArea\",\n portal: \"portal\",\n previewImage: \"previewImage\"\n}, E = (e, t) => {\n if ($.has(e))\n return $.get(e);\n if (!t)\n return null;\n const o = t[ye[e]], i = document.querySelector(\n `.${o[0]}`\n );\n return $.set(e, i), i;\n}, ve = () => {\n $.clear();\n}, ze = () => {\n $.clear();\n}, we = (e, t) => {\n const o = E(\"header\", t.css);\n o && (o.innerText = e);\n}, Ee = (e, t) => {\n const o = E(\"sourceImage\", t.css);\n o && (o.setAttribute(\"src\", e), o.style.height = `${t.frame.height}px`, o.style.width = `${t.frame.width}px`, o.style.left = `${t.frame.left}px`, o.style.top = `${t.frame.top}px`);\n const i = E(\"portalArea\", t.css);\n i && (i.style.height = `${t.frame.height}px`, i.style.width = `${t.frame.width}px`, i.style.left = `${t.frame.left}px`, i.style.top = `${t.frame.top}px`);\n const n = E(\"portal\", t.css);\n n && (n.style.width = `${t.portal.size}px`, n.style.height = `${t.portal.size}px`, n.style.left = `${t.portal.left}px`, n.style.top = `${t.portal.top}px`);\n const d = E(\"previewImage\", t.css);\n d && (d.setAttribute(\"src\", e), d.style.height = `${t.frame.height}px`, d.style.width = `${t.frame.width}px`, d.style.marginLeft = `-${t.portal.left}px`, d.style.marginTop = `-${t.portal.top}px`);\n}, $e = (e, t) => {\n const o = E(\"portal\", t.css);\n o && (o.style.left = `${e.left}px`, o.style.top = `${e.top}px`, o.style.width = `${e.size}px`, o.style.height = `${e.size}px`);\n const i = E(\"previewImage\", t.css);\n i && (i.style.marginLeft = `-${e.left}px`, i.style.marginTop = `-${e.top}px`);\n}, L = 1, Re = (e) => {\n const t = e(), o = document.createElement(\"canvas\"), i = t.frame.width || L, n = t.frame.height || L, d = t.sourceWidth / i, p = t.sourceHeight / n, r = t.portal.left * d, a = t.portal.top * p, l = Math.max(\n t.portal.size * Math.min(d, p),\n L\n ), s = t.config.outputSize > 0 ? t.config.outputSize : l;\n o.width = s, o.height = s;\n const c = document.querySelector(\n `.${t.css?.sourceImage[0]}`\n );\n c && o.getContext(\"2d\")?.drawImage(\n c,\n r,\n a,\n l,\n l,\n 0,\n 0,\n s,\n s\n );\n const u = o.toDataURL(\n `image/${t.config.type}`,\n t.config.compression\n );\n return new Promise((m, f) => {\n try {\n o.toBlob(\n (z) => {\n if (o.remove(), !z) {\n f(\n new Error(\n `Failed to create blob for type: image/${t.config.type}`\n )\n );\n return;\n }\n m([u, z]);\n },\n `image/${t.config.type}`,\n t.config.compression\n );\n } catch (z) {\n o.remove(), f(z);\n }\n });\n}, Pe = (e, t, o) => {\n const { emitted: i, portal: n, frame: d, config: p } = t();\n let r = i.left - i.X + e.clientX, a = i.top - i.Y + e.clientY;\n const l = p.framePadding, s = d.width - p.framePadding - n.size, c = p.framePadding, u = d.height - p.framePadding - n.size;\n r < l && (r = l), r > s && (r = s), a < c && (a = c), a > u && (a = u), o({\n portal: {\n ...n,\n left: r,\n top: a\n }\n });\n}, Be = (e, t, o) => {\n const { action: i, emitted: n, portal: d, frame: p, config: r } = t(), a = e.pageX - n.X, l = e.pageY - n.Y;\n switch (i) {\n case v.RESIZE_BR: {\n let s = n.size + Math.max(a, l);\n return s < r.minPortalSize && (s = r.minPortalSize), n.top + s > p.height - r.framePadding && (s = p.height - n.top - r.framePadding), n.left + s > p.width - r.framePadding && (s = p.width - n.left - r.framePadding), o({\n portal: {\n ...d,\n size: s\n }\n });\n }\n case v.RESIZE_TR: {\n let s = a + l > 0 ? n.size + a : n.size - l, c = a + l > 0 ? n.top - a : n.top + l;\n return s < r.minPortalSize && (c = n.top + n.size - r.minPortalSize, s = r.minPortalSize), n.left + s > p.width - r.framePadding && (s = p.width - n.left - r.framePadding, c = n.top - p.width + n.left + n.size), c < r.framePadding && (s = n.top + n.size, c = r.framePadding), o({\n portal: {\n ...d,\n top: c,\n size: s\n }\n });\n }\n case v.RESIZE_TL: {\n const s = Math.min(a, l);\n let c = n.size - s, u = n.left + s, m = n.top + s;\n if (c < r.minPortalSize) {\n const f = n.size - r.minPortalSize;\n c = r.minPortalSize, u = n.left + f, m = n.top + f;\n }\n if (m < r.framePadding) {\n const f = r.framePadding - m;\n m = r.framePadding, u = u + f, c = c - f;\n }\n if (u < r.framePadding) {\n const f = r.framePadding - u;\n u = r.framePadding, m = m + f, c = c - f;\n }\n return o({\n portal: {\n ...d,\n top: m,\n left: u,\n size: c\n }\n });\n }\n case v.RESIZE_BL: {\n let s = a + l > 0 ? n.size + l : n.size - a, c = a + l > 0 ? n.left - l : n.left + a;\n return s < r.minPortalSize && (c = n.left + n.size - r.minPortalSize, s = r.minPortalSize), s + n.top > p.height - r.framePadding && (c = n.left - p.height + n.top + n.size, s = p.height - n.top - r.framePadding), c < r.framePadding && (c = r.framePadding, s = n.left + n.size - r.framePadding), o({\n portal: {\n ...d,\n left: c,\n size: s\n }\n });\n }\n default:\n return;\n }\n}, I = (e) => {\n if (\"touches\" in e && e.touches.length > 0) {\n const o = e.touches[0];\n return {\n clientX: o.clientX,\n clientY: o.clientY,\n pageX: o.pageX,\n pageY: o.pageY\n };\n }\n if (\"changedTouches\" in e && e.changedTouches.length > 0) {\n const o = e.changedTouches[0];\n return {\n clientX: o.clientX,\n clientY: o.clientY,\n pageX: o.pageX,\n pageY: o.pageY\n };\n }\n const t = e;\n return {\n clientX: t.clientX,\n clientY: t.clientY,\n pageX: t.pageX,\n pageY: t.pageY\n };\n}, Le = (e, t) => {\n const o = e(), i = document.querySelector(\n `.${o.css?.portal[0]}`\n ), n = document.querySelector(\n `.${o.css?.portalArea[0]}`\n ), d = document.querySelector(\n `.${o.css?.root[0]}`\n );\n let p = null, r = null;\n const a = (u) => {\n u.preventDefault();\n const { portal: m } = e(), f = I(u);\n if (u.target) {\n const P = u.target.getAttribute(\"data-action\"), h = {\n X: f.pageX,\n Y: f.pageY,\n left: m.left,\n top: m.top,\n size: m.size\n };\n t({\n action: P,\n emitted: h\n });\n }\n }, l = () => {\n const { action: u } = e();\n p !== null && (cancelAnimationFrame(p), p = null), r = null, u && t({\n action: null\n });\n }, s = () => {\n if (p = null, !r)\n return;\n const u = r;\n r = null;\n const { action: m } = e();\n if (m)\n switch (m) {\n case v.MOVE:\n Pe(u, e, t);\n break;\n default:\n Be(u, e, t);\n }\n }, c = (u) => {\n const { action: m } = e();\n m && (u.preventDefault(), r = I(u), p === null && (p = requestAnimationFrame(s)));\n };\n return d && (d.addEventListener(\"mouseup\", l), d.addEventListener(\"touchend\", l), d.addEventListener(\"touchcancel\", l)), i && (i.addEventListener(\"mousedown\", a), i.addEventListener(\"touchstart\", a, {\n passive: !1\n })), n && (n.addEventListener(\"mousemove\", c), n.addEventListener(\"touchmove\", c, {\n passive: !1\n })), () => {\n p !== null && cancelAnimationFrame(p), d && (d.removeEventListener(\"mouseup\", l), d.removeEventListener(\"touchend\", l), d.removeEventListener(\"touchcancel\", l)), i && (i.removeEventListener(\"mousedown\", a), i.removeEventListener(\"touchstart\", a)), n && (n.removeEventListener(\n \"mousemove\",\n c\n ), n.removeEventListener(\n \"touchmove\",\n c\n ));\n };\n}, A = 1024 * 1024, Ce = (e, t) => {\n if (!t.allowedTypes.includes(e.type))\n return `Invalid file type \"${e.type}\". Allowed types: ${t.allowedTypes.join(\", \")}`;\n if (t.maxFileSize > 0 && e.size > t.maxFileSize) {\n const o = (t.maxFileSize / A).toFixed(2);\n return `File size (${(e.size / A).toFixed(2)}MB) exceeds maximum allowed size (${o}MB)`;\n }\n return null;\n}, Ie = (e, t, o, i, n, d, p) => {\n const r = (h) => {\n p ? p(h) : console.error(`HqCropper: ${h}`);\n };\n if (!e.target.files || e.target.files.length === 0) {\n r(\"Can't read file input\");\n return;\n }\n const a = e.target.files[0], { config: l } = t(), s = Ce(a, l);\n if (s) {\n r(s), e.target.value = \"\";\n return;\n }\n const c = new FileReader();\n let u = null;\n const m = () => {\n const h = t(), y = document.querySelector(\n `.${h.css?.root[0]}`\n );\n y && (y.remove(), document.removeEventListener(\"keydown\", f), u?.(), ze(), d(), o(C));\n }, f = (h) => {\n h.key === \"Escape\" && t().sourceBase64 && z(h);\n }, z = (h) => {\n h.preventDefault(), m();\n }, P = (h) => {\n h.preventDefault();\n const y = t();\n Re(t).then(([w, B]) => {\n i(w, B, y), z(h);\n }).catch((w) => {\n r(\n w instanceof Error ? w.message : \"Failed to crop image\"\n );\n });\n };\n c.onload = (h) => {\n const y = new Image();\n if (!h.target || typeof h.target.result != \"string\") {\n r(\"Can't load result image\");\n return;\n }\n y.src = h.target.result, y.onerror = () => {\n r(\"Failed to load image\");\n }, y.onload = () => {\n xe(t, P, z), ve(), n(\"fileName\", we), n(\"sourceBase64\", Ee), n(\"portal\", $e);\n const w = J(t, y), B = ee(t, w);\n o({\n frame: w,\n portal: B,\n fileName: a.name,\n sourceBase64: h.target?.result,\n sourceHeight: y.height,\n sourceWidth: y.width\n }), u = Le(t, o), document.addEventListener(\"keydown\", f);\n };\n }, c.onerror = () => {\n r(\"Failed to read file\");\n }, c.readAsDataURL(a), e.target.value = \"\";\n}, Ae = (e, t, o, i) => {\n const { getState: n, setState: d, subscribe: p, unsubscribeAll: r } = G(\n t,\n o\n ), a = be(\n (l) => Ie(\n l,\n n,\n d,\n e,\n p,\n r,\n i\n )\n );\n return {\n open: () => a.click()\n };\n};\nexport {\n Ae as HqCropper\n};\n//# sourceMappingURL=index.js.map\n","import { COLORS } from '../../lib'\n\nexport const DEFAULT_CONFIG = {\n portalSize: 200,\n outputSize: 400,\n compression: 0.9,\n type: 'jpeg' as const,\n maxFileSize: 10 * 1024 * 1024, // 10MB\n allowedTypes: ['image/jpeg', 'image/png', 'image/webp'],\n applyLabel: 'Apply',\n cancelLabel: 'Cancel',\n}\n\nconst STYLE_ID = 'vacano-image-cropper-styles'\n\nconst CUSTOM_STYLES = `\n .vacano-cropper-root {\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n }\n\n .vacano-cropper-header {\n border-bottom: 1px solid ${COLORS.gray};\n padding: 16px 20px;\n }\n\n .vacano-cropper-footer {\n border-top: 1px solid ${COLORS.gray};\n padding: 16px 20px;\n gap: 12px;\n }\n\n .vacano-cropper-cancel-button {\n padding: 8px 16px;\n border-radius: 16px;\n border: 1px solid ${COLORS.gray};\n background-color: ${COLORS.white};\n color: ${COLORS.black};\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.2s;\n }\n\n .vacano-cropper-cancel-button:hover {\n background-color: ${COLORS.gray};\n }\n\n .vacano-cropper-apply-button {\n padding: 8px 16px;\n border-radius: 16px;\n border: none;\n background-color: ${COLORS.black};\n color: ${COLORS.white};\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.2s;\n }\n\n .vacano-cropper-apply-button:hover {\n background-color: ${COLORS['iron-grey']};\n }\n`\n\nexport const injectCropperStyles = (): void => {\n if (typeof document === 'undefined') return\n if (document.getElementById(STYLE_ID)) return\n\n const style = document.createElement('style')\n style.id = STYLE_ID\n style.textContent = CUSTOM_STYLES\n document.head.appendChild(style)\n}\n\nexport const CROPPER_CSS = {\n root: ['vacano-cropper-root'],\n container: ['vacano-cropper-container'],\n header: ['vacano-cropper-header'],\n body: ['vacano-cropper-body'],\n footer: ['vacano-cropper-footer'],\n cancelButton: ['vacano-cropper-cancel-button'],\n applyButton: ['vacano-cropper-apply-button'],\n portal: ['vacano-cropper-portal'],\n}\n","import { useCallback, useRef } from 'react'\n\nimport { HqCropper } from 'hq-cropper'\n\nimport { CROPPER_CSS, DEFAULT_CONFIG, injectCropperStyles } from './constants'\nimport { ImageCropperState, UseImageCropperOptions, UseImageCropperReturn } from './types'\n\ntype CropperInstance = {\n open: () => void\n}\n\nexport const useImageCropper = (options: UseImageCropperOptions = {}): UseImageCropperReturn => {\n const {\n allowedTypes = DEFAULT_CONFIG.allowedTypes,\n applyLabel = DEFAULT_CONFIG.applyLabel,\n cancelLabel = DEFAULT_CONFIG.cancelLabel,\n compression = DEFAULT_CONFIG.compression,\n maxFileSize = DEFAULT_CONFIG.maxFileSize,\n onCrop,\n onError,\n outputSize = DEFAULT_CONFIG.outputSize,\n portalSize = DEFAULT_CONFIG.portalSize,\n type = DEFAULT_CONFIG.type,\n } = options\n\n const cropperRef = useRef<CropperInstance | null>(null)\n\n const open = useCallback(() => {\n if (!cropperRef.current) {\n injectCropperStyles()\n cropperRef.current = HqCropper(\n (base64: string, blob: Blob | null, state: ImageCropperState) => {\n if (blob) {\n onCrop?.({ base64, blob, state })\n }\n },\n {\n portalSize,\n outputSize,\n compression,\n type,\n maxFileSize,\n allowedTypes,\n applyButtonLabel: applyLabel,\n cancelButtonLabel: cancelLabel,\n },\n CROPPER_CSS,\n (message: string) => {\n onError?.({ code: 'CROPPER_ERROR', message })\n },\n )\n }\n\n cropperRef.current.open()\n }, [\n allowedTypes,\n applyLabel,\n cancelLabel,\n compression,\n maxFileSize,\n onCrop,\n onError,\n outputSize,\n portalSize,\n type,\n ])\n\n return { open }\n}\n","import { useState } from 'react'\n\nimport { StyledContainer, StyledPlaceholder, StyledPreview } from './styled'\nimport { ImageCropperProps } from './types'\nimport { Button } from '../Button'\nimport { useImageCropper } from '../../hooks/useImageCropper'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('image-cropper')\n\nexport const ImageCropper = ({\n allowedTypes,\n applyLabel,\n buttonLabel = 'Select Image',\n cancelLabel,\n className,\n classnames,\n compression,\n maxFileSize,\n onCrop,\n onError,\n outputSize,\n portalSize,\n previewSize = 120,\n ref,\n type,\n value,\n ...rest\n}: ImageCropperProps) => {\n const [preview, setPreview] = useState<string | null>(value ?? null)\n\n const { open } = useImageCropper({\n allowedTypes,\n applyLabel,\n cancelLabel,\n compression,\n maxFileSize,\n onCrop: (result) => {\n setPreview(result.base64)\n onCrop?.(result)\n },\n onError,\n outputSize,\n portalSize,\n type,\n })\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n <StyledPreview $size={previewSize} className={css('preview', classnames?.preview)}>\n {preview ? (\n <img src={preview} alt=\"Preview\" />\n ) : (\n <StyledPlaceholder>No image</StyledPlaceholder>\n )}\n </StyledPreview>\n <Button\n variant=\"system\"\n onClick={open}\n className={css('button', classnames?.button)}\n style={{ width: previewSize }}\n >\n {buttonLabel}\n </Button>\n </StyledContainer>\n )\n}\n","import { InputVariant } from './types'\nimport { alpha, COLORS, VacanoComponentSize, VacanoInteractiveElementState } from '../../lib'\n\nexport const INPUT_SIZE_PROPS: Record<\n VacanoComponentSize,\n {\n height: string\n padding: string\n radius: string\n prefixSize: string\n }\n> = {\n compact: {\n height: '32px',\n padding: '0 10px',\n radius: '14px',\n prefixSize: '16px',\n },\n default: {\n height: '40px',\n padding: '0 14px',\n radius: '16px',\n prefixSize: '20px',\n },\n}\n\nexport const INPUT_VARIANT_PROPS: Record<\n InputVariant,\n {\n border: VacanoInteractiveElementState\n background: VacanoInteractiveElementState\n color: VacanoInteractiveElementState\n placeholder: VacanoInteractiveElementState\n focus: string\n }\n> = {\n normal: {\n background: {\n static: alpha(COLORS['black'], 2),\n disabled: alpha(COLORS['black'], 10),\n },\n border: {\n static: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 10),\n },\n color: {\n static: COLORS['black'],\n disabled: alpha(COLORS['black'], 65),\n },\n placeholder: {\n static: alpha(COLORS['black'], 40),\n disabled: alpha(COLORS['black'], 65),\n },\n focus: alpha(COLORS['iron-grey'], 30),\n },\n error: {\n background: {\n static: alpha(COLORS['red'], 2),\n disabled: alpha(COLORS['red'], 10),\n },\n border: {\n static: alpha(COLORS['red'], 60),\n disabled: alpha(COLORS['red'], 10),\n },\n color: {\n static: COLORS['red'],\n disabled: alpha(COLORS['red'], 65),\n },\n placeholder: {\n static: alpha(COLORS['red'], 40),\n disabled: alpha(COLORS['red'], 65),\n },\n focus: alpha(COLORS['red'], 30),\n },\n}\n","import { INPUT_SIZE_PROPS, INPUT_VARIANT_PROPS } from './constants'\nimport { InputVariant } from './types'\nimport { VacanoComponentSize } from '../../lib'\n\nexport const getInputVariantProps = (variant: InputVariant) => {\n return INPUT_VARIANT_PROPS[variant] ?? INPUT_VARIANT_PROPS['normal']\n}\n\nexport const getInputSizeProps = (size: VacanoComponentSize) => {\n return INPUT_SIZE_PROPS[size] ?? INPUT_SIZE_PROPS['default']\n}\n","import styled from '@emotion/styled'\n\nimport { getInputSizeProps, getInputVariantProps } from './helpers'\nimport { InputVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { VacanoComponentSize } from '../../lib'\n\ntype StyledInputContainerProps = {\n $size: VacanoComponentSize\n $variant: InputVariant\n}\n\nexport const StyledInputContainer = styled.div<{ $fullWidth: boolean }>`\n display: grid;\n flex-direction: column;\n gap: 2px;\n width: ${(props) => (props.$fullWidth ? '100%' : 'fit-content')};\n`\n\nexport const StyledLabel = styled(FieldLabel)`\n margin-left: 6px;\n`\n\nexport const StyledInput = styled.input<StyledInputContainerProps>`\n flex: 1;\n min-width: 0;\n outline: none;\n font-size: 14px;\n font-weight: 500;\n height: ${(props) => getInputSizeProps(props.$size).height};\n padding: ${(props) => getInputSizeProps(props.$size).padding};\n border-radius: ${(props) => getInputSizeProps(props.$size).radius};\n\n color: ${(props) => getInputVariantProps(props.$variant).color.static};\n border: 1px solid ${(props) => getInputVariantProps(props.$variant).border.static};\n background-color: ${(props) => getInputVariantProps(props.$variant).background.static};\n\n &::placeholder {\n color: ${(props) => getInputVariantProps(props.$variant).placeholder.static};\n }\n\n &:disabled {\n cursor: not-allowed;\n color: ${(props) => getInputVariantProps(props.$variant).color.disabled};\n background-color: ${(props) => getInputVariantProps(props.$variant).background.disabled};\n border-color: ${(props) => getInputVariantProps(props.$variant).border.disabled};\n\n &::placeholder {\n color: ${(props) => getInputVariantProps(props.$variant).placeholder.disabled};\n }\n }\n`\n","import { StyledInput, StyledInputContainer, StyledLabel } from './styled'\nimport { InputProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('input')\nexport const Input = ({\n className,\n classnames,\n disabled,\n fullWidth,\n label,\n ref,\n size = 'default',\n variant = 'normal',\n ...rest\n}: InputProps) => {\n return (\n <StyledInputContainer className={css('container', className)} $fullWidth={Boolean(fullWidth)}>\n <StyledLabel variant={variant} className={css('label', classnames?.label)}>\n {label}\n </StyledLabel>\n <StyledInput\n {...rest}\n ref={ref}\n disabled={disabled}\n $size={size}\n $variant={variant}\n className={css('input', classnames?.input)}\n />\n </StyledInputContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { alpha, COLORS, KEYFRAMES } from '../../lib'\n\ntype StyledOverlayProps = {\n $animated: boolean\n}\n\ntype StyledContentProps = {\n $animated: boolean\n $width: string\n}\n\nexport const StyledOverlay = styled.div<StyledOverlayProps>`\n position: fixed;\n inset: 0;\n z-index: 1000;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${alpha(COLORS['black'], 50)};\n animation: ${KEYFRAMES.fadeIn} ${(props) => (props.$animated ? '0.15s' : '0s')} ease-out forwards;\n`\n\nexport const StyledContent = styled.div<StyledContentProps>`\n position: relative;\n z-index: 1001;\n width: ${(props) => props.$width};\n max-width: calc(100vw - 32px);\n max-height: calc(100vh - 32px);\n overflow: auto;\n background-color: ${COLORS['white']};\n border-radius: 16px;\n box-shadow: 0 8px 32px ${alpha(COLORS['black'], 20)};\n animation: ${KEYFRAMES.scaleIn} ${(props) => (props.$animated ? '0.15s' : '0s')} ease-out forwards;\n`\n","import { createPortal } from 'react-dom'\n\nimport { StyledContent, StyledOverlay } from './styled'\nimport { ModalProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('modal')\n\nexport const Modal = ({\n animated,\n children,\n className,\n classnames,\n open,\n ref,\n width = '500px',\n ...rest\n}: ModalProps) => {\n if (!open) {\n return null\n }\n\n return createPortal(\n <StyledOverlay className={css('overlay', classnames?.overlay)} $animated={Boolean(animated)}>\n <StyledContent\n {...rest}\n ref={ref}\n className={css('content', className, classnames?.content)}\n $animated={Boolean(animated)}\n $width={width}\n >\n {children}\n </StyledContent>\n </StyledOverlay>,\n document.body,\n )\n}\n","import { MultiSelectVariant } from './types'\nimport { COLORS } from '../../lib'\n\ntype VariantProps = {\n border: string\n label: string\n}\n\nexport const VARIANT_PROPS: Record<MultiSelectVariant, VariantProps> = {\n normal: {\n border: COLORS['iron-grey'],\n label: COLORS.black,\n },\n error: {\n border: COLORS.red,\n label: COLORS.red,\n },\n}\n","import styled from '@emotion/styled'\n\nimport { VARIANT_PROPS } from './constants'\nimport { MultiSelectVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n`\n\nexport const StyledLabel = styled(FieldLabel)<{ $variant: MultiSelectVariant }>`\n margin-left: 6px;\n color: ${(props) => VARIANT_PROPS[props.$variant].label};\n`\n\nexport const StyledTrigger = styled.button<{ $variant: MultiSelectVariant; $disabled: boolean }>`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 6px;\n min-height: 44px;\n padding: 8px 12px;\n border: 1px dashed ${(props) => VARIANT_PROPS[props.$variant].border};\n border-radius: 8px;\n background: ${COLORS.white};\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.$disabled ? 0.5 : 1)};\n transition: border-color 0.15s ease;\n text-align: left;\n\n &:hover:not(:disabled) {\n border-color: ${(props) => (props.$variant === 'error' ? COLORS.red : COLORS.black)};\n }\n`\n\nexport const StyledPlaceholder = styled.span`\n color: ${COLORS['iron-grey']};\n font-size: 14px;\n`\n\nexport const StyledModalContent = styled.div`\n display: flex;\n flex-direction: column;\n padding: 20px;\n gap: 16px;\n`\n\nexport const StyledModalHeader = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n`\n\nexport const StyledModalTitle = styled.h3`\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: ${COLORS.black};\n`\n\nexport const StyledOptionsList = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-height: 200px;\n max-height: 300px;\n overflow-y: auto;\n`\n\nexport const StyledOption = styled.label<{ $disabled: boolean }>`\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.$disabled ? 0.5 : 1)};\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${(props) => (props.$disabled ? 'transparent' : COLORS.gray)};\n }\n`\n\nexport const StyledOptionLabel = styled.span`\n font-size: 14px;\n color: ${COLORS.black};\n`\n\nexport const StyledEmpty = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 32px 16px;\n color: ${COLORS['iron-grey']};\n font-size: 14px;\n text-align: center;\n`\n","import { useMemo, useState } from 'react'\n\nimport {\n StyledContainer,\n StyledEmpty,\n StyledLabel,\n StyledModalContent,\n StyledModalHeader,\n StyledModalTitle,\n StyledOption,\n StyledOptionLabel,\n StyledOptionsList,\n StyledPlaceholder,\n StyledTrigger,\n} from './styled'\nimport { MultiSelectProps } from './types'\nimport { Button } from '../Button'\nimport { Checkbox } from '../Checkbox'\nimport { Chip } from '../Chip'\nimport { Input } from '../Input'\nimport { Modal } from '../Modal'\nimport { X } from '../../icons/Lucide'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('multi-select')\n\nexport const MultiSelect = ({\n className,\n classnames,\n disabled = false,\n emptyMessage = 'No options found',\n label,\n maxVisible = Infinity,\n modalTitle = 'Select options',\n onChange,\n options,\n placeholder = 'Select...',\n ref,\n searchPlaceholder = 'Search...',\n value,\n variant = 'normal',\n ...rest\n}: MultiSelectProps) => {\n const [isOpen, setIsOpen] = useState(false)\n const [search, setSearch] = useState('')\n\n const selectedOptions = useMemo(() => {\n return options.filter((opt) => value.includes(opt.value))\n }, [options, value])\n\n const filteredOptions = useMemo(() => {\n if (!search.trim()) return options\n const query = search.toLowerCase().trim()\n return options.filter((opt) => opt.label.toLowerCase().includes(query))\n }, [options, search])\n\n const visibleChips =\n maxVisible === Infinity ? selectedOptions : selectedOptions.slice(0, maxVisible)\n const hiddenCount = selectedOptions.length - visibleChips.length\n\n const handleOpen = () => {\n if (!disabled) {\n setIsOpen(true)\n setSearch('')\n }\n }\n\n const handleClose = () => {\n setIsOpen(false)\n setSearch('')\n }\n\n const handleToggle = (optionValue: string) => {\n if (value.includes(optionValue)) {\n onChange(value.filter((v) => v !== optionValue))\n } else {\n onChange([...value, optionValue])\n }\n }\n\n const handleRemove = (optionValue: string) => {\n onChange(value.filter((v) => v !== optionValue))\n }\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {label && (\n <StyledLabel $variant={variant} className={css('label', classnames?.trigger)}>\n {label}\n </StyledLabel>\n )}\n <StyledTrigger\n type=\"button\"\n $variant={variant}\n $disabled={disabled}\n disabled={disabled}\n onClick={handleOpen}\n className={css('trigger', classnames?.trigger)}\n >\n {selectedOptions.length === 0 ? (\n <StyledPlaceholder className={css('placeholder', classnames?.placeholder)}>\n {placeholder}\n </StyledPlaceholder>\n ) : (\n <>\n {visibleChips.map((opt) => (\n <Chip\n key={opt.value}\n deletable\n onDelete={() => handleRemove(opt.value)}\n onClick={(e) => e.stopPropagation()}\n className={css('chip', classnames?.chip)}\n >\n {opt.label}\n </Chip>\n ))}\n {hiddenCount > 0 && (\n <Chip\n variant=\"gray\"\n onClick={(e) => e.stopPropagation()}\n className={css('chip', classnames?.chip)}\n >\n +{hiddenCount}\n </Chip>\n )}\n </>\n )}\n </StyledTrigger>\n\n <Modal open={isOpen} width=\"400px\" animated className={css('modal', classnames?.modal)}>\n <StyledModalContent>\n <StyledModalHeader>\n <StyledModalTitle>{modalTitle}</StyledModalTitle>\n <Button variant=\"transparent\" size=\"compact\" icon={<X />} onClick={handleClose} />\n </StyledModalHeader>\n\n <Input\n type=\"text\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder={searchPlaceholder}\n autoFocus\n fullWidth\n className={css('search', classnames?.search)}\n />\n\n <StyledOptionsList className={css('options', classnames?.options)}>\n {filteredOptions.length === 0 ? (\n <StyledEmpty className={css('empty', classnames?.empty)}>{emptyMessage}</StyledEmpty>\n ) : (\n filteredOptions.map((opt) => (\n <StyledOption\n key={opt.value}\n $disabled={Boolean(opt.disabled)}\n className={css('option', classnames?.option)}\n >\n <Checkbox\n checked={value.includes(opt.value)}\n disabled={opt.disabled}\n onChange={() => handleToggle(opt.value)}\n />\n <StyledOptionLabel>{opt.label}</StyledOptionLabel>\n </StyledOption>\n ))\n )}\n </StyledOptionsList>\n </StyledModalContent>\n </Modal>\n </StyledContainer>\n )\n}\n","import { NotificationVariant } from './types'\nimport { COLORS } from '../../lib'\n\nexport const DEFAULT_NOTIFICATION_DURATION = 5000\n\ntype NotificationVariantColors = {\n background: string\n text: string\n}\n\nexport const NOTIFICATION_VARIANT_COLORS: Record<NotificationVariant, NotificationVariantColors> = {\n default: {\n background: '#374151',\n text: COLORS.white,\n },\n success: {\n background: COLORS.green,\n text: COLORS.white,\n },\n warning: {\n background: COLORS.yellow,\n text: COLORS.white,\n },\n danger: {\n background: COLORS.red,\n text: COLORS.white,\n },\n info: {\n background: COLORS['steel-blue'],\n text: COLORS.white,\n },\n}\n","import { createContext } from 'react'\n\nimport type { NotificationContextValue } from './types'\n\nexport const NotificationContext = createContext<NotificationContextValue | null>(null)\n","import { NOTIFICATION_VARIANT_COLORS } from './constants'\nimport { NotificationVariant } from './types'\n\nexport const getNotificationVariantColors = (variant: NotificationVariant) => {\n return NOTIFICATION_VARIANT_COLORS[variant] ?? NOTIFICATION_VARIANT_COLORS['default']\n}\n","import styled from '@emotion/styled'\n\nimport { getNotificationVariantColors } from './helpers'\nimport type { NotificationVariant } from './types'\nimport { KEYFRAMES } from '../../lib'\n\nexport const StyledNotificationContainer = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n z-index: 9999;\n pointer-events: none;\n`\n\ntype StyledNotificationBarProps = {\n $variant: NotificationVariant\n $isExiting: boolean\n}\n\nexport const StyledNotificationBar = styled.div<StyledNotificationBarProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n min-height: 44px;\n padding: 12px 48px;\n background-color: ${({ $variant }) => getNotificationVariantColors($variant).background};\n color: ${({ $variant }) => getNotificationVariantColors($variant).text};\n animation: ${({ $isExiting }) =>\n $isExiting ? KEYFRAMES.slideOutTopFade : KEYFRAMES.slideInTopFade}\n 0.3s ease-out forwards;\n pointer-events: auto;\n`\n\nexport const StyledNotificationMessage = styled.span`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n text-align: center;\n`\n\nexport const StyledNotificationCloseButton = styled.button`\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n background: transparent;\n border: none;\n color: inherit;\n cursor: pointer;\n opacity: 0.7;\n transition: opacity 0.2s ease-in-out;\n\n &:hover {\n opacity: 1;\n }\n`\n\nexport const StyledNotificationWrapper = styled.div`\n position: relative;\n`\n","import { useEffect, useState } from 'react'\n\nimport {\n StyledNotificationBar,\n StyledNotificationCloseButton,\n StyledNotificationMessage,\n StyledNotificationWrapper,\n} from './styled'\nimport type { Notification } from './types'\nimport { X } from '../../icons/Lucide'\n\ntype NotificationBarProps = {\n notification: Notification\n onRemove: () => void\n onAnimationEnd: () => void\n}\n\nexport const NotificationBar = ({\n notification,\n onRemove,\n onAnimationEnd,\n}: NotificationBarProps) => {\n const [isExiting, setIsExiting] = useState(false)\n\n const handleRemove = () => {\n setIsExiting(true)\n }\n\n const handleAnimationEnd = () => {\n if (isExiting) {\n onRemove()\n onAnimationEnd()\n }\n }\n\n useEffect(() => {\n const timer = setTimeout(() => {\n handleRemove()\n }, notification.duration)\n\n return () => clearTimeout(timer)\n }, [notification.duration, notification.id])\n\n return (\n <StyledNotificationWrapper>\n <StyledNotificationBar\n $variant={notification.variant}\n $isExiting={isExiting}\n onAnimationEnd={handleAnimationEnd}\n >\n <StyledNotificationMessage>{notification.message}</StyledNotificationMessage>\n <StyledNotificationCloseButton onClick={handleRemove}>\n <X style={{ width: 18, height: 18 }} />\n </StyledNotificationCloseButton>\n </StyledNotificationBar>\n </StyledNotificationWrapper>\n )\n}\n","import type { NotificationAction, NotificationState } from './types'\n\nexport const notificationReducer = (\n state: NotificationState,\n action: NotificationAction,\n): NotificationState => {\n switch (action.type) {\n case 'ADD_NOTIFICATION': {\n const newNotification = action.payload\n\n // If no current notification, show immediately\n if (!state.current) {\n return {\n ...state,\n current: newNotification,\n }\n }\n\n // Otherwise add to queue\n return {\n ...state,\n queue: [...state.queue, newNotification],\n }\n }\n\n case 'REMOVE_CURRENT': {\n return {\n ...state,\n current: null,\n }\n }\n\n case 'SHOW_NEXT': {\n const nextNotification = state.queue[0]\n\n if (!nextNotification) {\n return state\n }\n\n return {\n current: nextNotification,\n queue: state.queue.slice(1),\n }\n }\n\n default:\n return state\n }\n}\n\nexport const initialNotificationState: NotificationState = {\n current: null,\n queue: [],\n}\n","import { useCallback, useReducer, type PropsWithChildren, type ReactNode } from 'react'\n\nimport { DEFAULT_NOTIFICATION_DURATION } from './constants'\nimport { NotificationContext } from './context'\nimport { NotificationBar } from './NotificationBar'\nimport { initialNotificationState, notificationReducer } from './reducer'\nimport { StyledNotificationContainer } from './styled'\nimport type { NotificationVariant } from './types'\n\nexport const NotificationProvider = ({ children }: PropsWithChildren) => {\n const [state, dispatch] = useReducer(notificationReducer, initialNotificationState)\n\n const show = useCallback(\n (\n message: ReactNode,\n variant: NotificationVariant = 'default',\n duration: number = DEFAULT_NOTIFICATION_DURATION,\n ) => {\n const id = `notification-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n\n dispatch({\n type: 'ADD_NOTIFICATION',\n payload: {\n id,\n message,\n variant,\n duration,\n },\n })\n },\n [],\n )\n\n const hide = useCallback(() => {\n dispatch({ type: 'REMOVE_CURRENT' })\n }, [])\n\n const handleRemove = useCallback(() => {\n dispatch({ type: 'REMOVE_CURRENT' })\n }, [])\n\n const handleShowNext = useCallback(() => {\n // Small delay before showing next notification\n setTimeout(() => {\n dispatch({ type: 'SHOW_NEXT' })\n }, 100)\n }, [])\n\n return (\n <NotificationContext.Provider value={{ show, hide }}>\n {children}\n <StyledNotificationContainer>\n {state.current && (\n <NotificationBar\n key={state.current.id}\n notification={state.current}\n onRemove={handleRemove}\n onAnimationEnd={handleShowNext}\n />\n )}\n </StyledNotificationContainer>\n </NotificationContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { NotificationContext } from './context'\n\nexport const useNotification = () => {\n const context = useContext(NotificationContext)\n\n if (!context) {\n throw new Error('useNotification must be used within NotificationProvider')\n }\n\n return context\n}\n","import { OtpCodeVariant } from './types'\nimport { alpha, COLORS, VacanoComponentSize, VacanoInteractiveElementState } from '../../lib'\n\nexport const OTP_CODE_SIZE_PROPS: Record<\n VacanoComponentSize,\n {\n width: string\n height: string\n fontSize: string\n radius: string\n gap: string\n }\n> = {\n compact: {\n width: '36px',\n height: '40px',\n fontSize: '16px',\n radius: '10px',\n gap: '8px',\n },\n default: {\n width: '44px',\n height: '52px',\n fontSize: '20px',\n radius: '12px',\n gap: '10px',\n },\n}\n\nexport const OTP_CODE_VARIANT_PROPS: Record<\n OtpCodeVariant,\n {\n border: VacanoInteractiveElementState\n background: VacanoInteractiveElementState\n color: VacanoInteractiveElementState\n focus: string\n }\n> = {\n normal: {\n background: {\n static: alpha(COLORS['black'], 2),\n disabled: alpha(COLORS['black'], 10),\n },\n border: {\n static: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 10),\n },\n color: {\n static: COLORS['black'],\n disabled: alpha(COLORS['black'], 65),\n },\n focus: alpha(COLORS['iron-grey'], 30),\n },\n error: {\n background: {\n static: alpha(COLORS['red'], 2),\n disabled: alpha(COLORS['red'], 10),\n },\n border: {\n static: alpha(COLORS['red'], 60),\n disabled: alpha(COLORS['red'], 10),\n },\n color: {\n static: COLORS['red'],\n disabled: alpha(COLORS['red'], 65),\n },\n focus: alpha(COLORS['red'], 30),\n },\n}\n","import { OTP_CODE_SIZE_PROPS, OTP_CODE_VARIANT_PROPS } from './constants'\nimport { OtpCodeVariant } from './types'\nimport { VacanoComponentSize } from '../../lib'\n\nexport const getOtpCodeSizeProps = (size: VacanoComponentSize) => {\n return OTP_CODE_SIZE_PROPS[size] ?? OTP_CODE_SIZE_PROPS['default']\n}\n\nexport const getOtpCodeVariantProps = (variant: OtpCodeVariant) => {\n return OTP_CODE_VARIANT_PROPS[variant] ?? OTP_CODE_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getOtpCodeSizeProps, getOtpCodeVariantProps } from './helpers'\nimport { OtpCodeVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { VacanoComponentSize } from '../../lib'\n\ntype StyledInputProps = {\n $size: VacanoComponentSize\n $variant: OtpCodeVariant\n}\n\nexport const StyledContainer = styled.div`\n display: inline-flex;\n flex-direction: column;\n gap: 2px;\n`\n\nexport const StyledLabel = styled(FieldLabel)`\n margin-left: 6px;\n`\n\nexport const StyledInputsWrapper = styled.div<{ $size: VacanoComponentSize }>`\n display: flex;\n gap: ${(props) => getOtpCodeSizeProps(props.$size).gap};\n`\n\nexport const StyledInput = styled.input<StyledInputProps>`\n width: ${(props) => getOtpCodeSizeProps(props.$size).width};\n height: ${(props) => getOtpCodeSizeProps(props.$size).height};\n border-radius: ${(props) => getOtpCodeSizeProps(props.$size).radius};\n font-size: ${(props) => getOtpCodeSizeProps(props.$size).fontSize};\n font-weight: 600;\n text-align: center;\n outline: none;\n border: 1px solid ${(props) => getOtpCodeVariantProps(props.$variant).border.static};\n background-color: ${(props) => getOtpCodeVariantProps(props.$variant).background.static};\n color: ${(props) => getOtpCodeVariantProps(props.$variant).color.static};\n transition:\n border-color 0.15s ease,\n box-shadow 0.15s ease;\n\n &:disabled {\n cursor: not-allowed;\n color: ${(props) => getOtpCodeVariantProps(props.$variant).color.disabled};\n background-color: ${(props) => getOtpCodeVariantProps(props.$variant).background.disabled};\n border-color: ${(props) => getOtpCodeVariantProps(props.$variant).border.disabled};\n }\n\n &::selection {\n background-color: transparent;\n }\n`\n","import { ChangeEvent, ClipboardEvent, KeyboardEvent, useCallback, useEffect, useRef } from 'react'\n\nimport { StyledContainer, StyledInput, StyledInputsWrapper, StyledLabel } from './styled'\nimport { OtpCodeProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('otp-code')\n\nexport const OtpCode = ({\n autoFocus,\n className,\n classnames,\n disabled,\n label,\n length = 6,\n onChange,\n ref,\n size = 'default',\n value = '',\n variant = 'normal',\n ...rest\n}: OtpCodeProps) => {\n const inputRefs = useRef<(HTMLInputElement | null)[]>([])\n\n useEffect(() => {\n if (autoFocus && inputRefs.current[0]) {\n inputRefs.current[0].focus()\n }\n }, [autoFocus])\n\n const focusInput = useCallback((index: number) => {\n const input = inputRefs.current[index]\n if (input) {\n input.focus()\n input.select()\n }\n }, [])\n\n const handleChange = useCallback(\n (index: number, e: ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value\n const digit = inputValue.replace(/\\D/g, '').slice(-1)\n\n if (!digit) return\n\n const newValue = value.padEnd(length, ' ').split('')\n\n // Find first empty slot to insert the digit\n const firstEmptyIndex = newValue.findIndex((char) => char === ' ' || char === '')\n const insertIndex = firstEmptyIndex !== -1 ? firstEmptyIndex : index\n\n newValue[insertIndex] = digit\n const updatedValue = newValue.join('').replace(/ /g, '')\n\n onChange?.(updatedValue)\n\n // Move focus to the next empty slot after insertion\n const nextEmptyIndex = insertIndex + 1\n if (nextEmptyIndex < length) {\n focusInput(nextEmptyIndex)\n }\n },\n [value, length, onChange, focusInput],\n )\n\n const handleKeyDown = useCallback(\n (index: number, e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace') {\n e.preventDefault()\n const newValue = value.split('')\n\n if (newValue[index]) {\n newValue[index] = ''\n onChange?.(newValue.join(''))\n } else if (index > 0) {\n newValue[index - 1] = ''\n onChange?.(newValue.join(''))\n focusInput(index - 1)\n }\n } else if (e.key === 'ArrowLeft' && index > 0) {\n e.preventDefault()\n focusInput(index - 1)\n } else if (e.key === 'ArrowRight' && index < length - 1) {\n e.preventDefault()\n focusInput(index + 1)\n }\n },\n [value, length, onChange, focusInput],\n )\n\n const handlePaste = useCallback(\n (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault()\n const pastedData = e.clipboardData.getData('text').replace(/\\D/g, '').slice(0, length)\n\n if (pastedData) {\n onChange?.(pastedData)\n\n const nextIndex = Math.min(pastedData.length, length - 1)\n focusInput(nextIndex)\n }\n },\n [length, onChange, focusInput],\n )\n\n return (\n <StyledContainer ref={ref} className={css('container', className)} {...rest}>\n {label && (\n <StyledLabel variant={variant} className={css('label', classnames?.label)}>\n {label}\n </StyledLabel>\n )}\n <StyledInputsWrapper $size={size}>\n {Array.from({ length }).map((_, index) => (\n <StyledInput\n key={index}\n ref={(el) => {\n inputRefs.current[index] = el\n }}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"one-time-code\"\n maxLength={2}\n disabled={disabled}\n value={value[index] ?? ''}\n onChange={(e) => handleChange(index, e)}\n onKeyDown={(e) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n onFocus={(e) => e.target.select()}\n $size={size}\n $variant={variant}\n className={css('input', classnames?.input)}\n />\n ))}\n </StyledInputsWrapper>\n </StyledContainer>\n )\n}\n","import { PanelVariant } from './types'\nimport { alpha, COLORS } from '../../lib'\n\ntype PanelVariantColors = {\n background: string\n border: string\n title: string\n description: string\n}\n\nexport const PANEL_VARIANT_COLORS: Record<PanelVariant, PanelVariantColors> = {\n light: {\n background: COLORS.white,\n border: alpha(COLORS.black, 30),\n title: COLORS.black,\n description: COLORS['iron-grey'],\n },\n dark: {\n background: alpha(COLORS.white, 5),\n border: alpha(COLORS.white, 30),\n title: COLORS.white,\n description: '#9ca3af',\n },\n}\n","import { PANEL_VARIANT_COLORS } from './constants'\nimport { PanelVariant } from './types'\n\nexport const getPanelVariantColors = (variant: PanelVariant) => {\n return PANEL_VARIANT_COLORS[variant] ?? PANEL_VARIANT_COLORS['light']\n}\n","import styled from '@emotion/styled'\n\nimport { getPanelVariantColors } from './helpers'\nimport { PanelVariant } from './types'\n\ntype StyledContainerProps = {\n $variant: PanelVariant\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 12px;\n border: 1px dashed ${({ $variant }) => getPanelVariantColors($variant).border};\n border-radius: 16px;\n background-color: ${({ $variant }) => getPanelVariantColors($variant).background};\n`\n\nexport const StyledHeader = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n`\n\ntype StyledTitleProps = {\n $variant: PanelVariant\n}\n\nexport const StyledTitle = styled.div<StyledTitleProps>`\n font-size: 18px;\n font-weight: 600;\n line-height: 1.4;\n color: ${({ $variant }) => getPanelVariantColors($variant).title};\n`\n\ntype StyledDescriptionProps = {\n $variant: PanelVariant\n}\n\nexport const StyledDescription = styled.div<StyledDescriptionProps>`\n font-size: 14px;\n line-height: 1.5;\n color: ${({ $variant }) => getPanelVariantColors($variant).description};\n`\n\nexport const StyledContent = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n`\n","import {\n StyledContainer,\n StyledContent,\n StyledDescription,\n StyledHeader,\n StyledTitle,\n} from './styled'\nimport { PanelProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('panel')\n\nexport const Panel = ({\n children,\n className,\n classnames,\n description,\n ref,\n title,\n variant = 'light',\n ...rest\n}: PanelProps) => {\n const hasHeader = title || description\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} $variant={variant}>\n {hasHeader && (\n <StyledHeader>\n {title && (\n <StyledTitle className={css('title', classnames?.title)} $variant={variant}>\n {title}\n </StyledTitle>\n )}\n {description && (\n <StyledDescription\n className={css('description', classnames?.description)}\n $variant={variant}\n >\n {description}\n </StyledDescription>\n )}\n </StyledHeader>\n )}\n <StyledContent className={css('content', classnames?.content)}>{children}</StyledContent>\n </StyledContainer>\n )\n}\n","import { VacanoComponentSize } from '../../lib'\n\nexport const PROGRESS_SIZE_PROPS: Record<VacanoComponentSize, { height: number; radius: number }> =\n {\n compact: {\n height: 4,\n radius: 2,\n },\n default: {\n height: 8,\n radius: 4,\n },\n }\n","import styled from '@emotion/styled'\n\nimport { PROGRESS_SIZE_PROPS } from './constants'\nimport { COLORS, VacanoComponentSize } from '../../lib'\n\nexport const StyledTrack = styled.div<{ $size: VacanoComponentSize }>`\n width: 100%;\n height: ${({ $size }) => PROGRESS_SIZE_PROPS[$size].height}px;\n border-radius: ${({ $size }) => PROGRESS_SIZE_PROPS[$size].radius}px;\n background-color: ${COLORS['gray']};\n overflow: hidden;\n`\n\nexport const StyledBar = styled.div<{ $size: VacanoComponentSize; $value: number }>`\n height: 100%;\n width: ${({ $value }) => Math.min(100, Math.max(0, $value))}%;\n border-radius: ${({ $size }) => PROGRESS_SIZE_PROPS[$size].radius}px;\n background-color: ${COLORS.black};\n transition: width 0.2s ease;\n`\n","import { StyledBar, StyledTrack } from './styled'\nimport { ProgressProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('progress')\n\nexport const Progress = ({\n value,\n size = 'default',\n className,\n classnames,\n ref,\n ...rest\n}: ProgressProps) => {\n return (\n <StyledTrack\n {...rest}\n ref={ref}\n $size={size}\n className={css('track', className, classnames?.track)}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <StyledBar $size={size} $value={value} className={css('bar', classnames?.bar)} />\n </StyledTrack>\n )\n}\n","import { RadioVariant } from './types'\nimport { alpha, COLORS } from '../../lib'\n\nexport const RADIO_VARIANT_PROPS: Record<\n RadioVariant,\n {\n box: {\n border: string\n borderChecked: string\n background: string\n backgroundChecked: string\n focusShadow: string\n }\n dot: string\n label: string\n }\n> = {\n normal: {\n box: {\n border: alpha(COLORS['iron-grey'], 30),\n borderChecked: COLORS['iron-grey'],\n background: COLORS['white'],\n backgroundChecked: COLORS['white'],\n focusShadow: alpha(COLORS['iron-grey'], 30),\n },\n dot: COLORS['black'],\n label: COLORS['black'],\n },\n error: {\n box: {\n border: COLORS['red'],\n borderChecked: COLORS['red'],\n background: COLORS['white'],\n backgroundChecked: COLORS['white'],\n focusShadow: alpha(COLORS['red'], 30),\n },\n dot: COLORS['red'],\n label: COLORS['red'],\n },\n}\n","import { RADIO_VARIANT_PROPS } from './constants'\nimport { RadioVariant } from './types'\n\nexport const getRadioVariantProps = (variant: RadioVariant) => {\n return RADIO_VARIANT_PROPS[variant] ?? RADIO_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getRadioVariantProps } from './helpers'\nimport { RadioVariant } from './types'\n\ntype StyledContainerProps = {\n $disabled: boolean\n $variant: RadioVariant\n}\n\ntype StyledBoxProps = {\n $checked: boolean\n $variant: RadioVariant\n}\n\ntype StyledDotProps = {\n $visible: boolean\n $variant: RadioVariant\n}\n\ntype StyledLabelProps = {\n $variant: RadioVariant\n}\n\nexport const StyledContainer = styled.label<StyledContainerProps>`\n display: inline-flex;\n align-items: flex-start;\n gap: 8px;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.$disabled ? 0.5 : 1)};\n`\n\nexport const StyledInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`\n\nexport const StyledBox = styled.span<StyledBoxProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n border: 1.5px solid\n ${(props) =>\n props.$checked\n ? getRadioVariantProps(props.$variant).box.borderChecked\n : getRadioVariantProps(props.$variant).box.border};\n background-color: ${(props) =>\n props.$checked\n ? getRadioVariantProps(props.$variant).box.backgroundChecked\n : getRadioVariantProps(props.$variant).box.background};\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease,\n box-shadow 0.15s ease;\n`\n\nexport const StyledDot = styled.span<StyledDotProps>`\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: ${(props) => getRadioVariantProps(props.$variant).dot};\n opacity: ${(props) => (props.$visible ? 1 : 0)};\n transform: ${(props) => (props.$visible ? 'scale(1)' : 'scale(0.5)')};\n transition:\n opacity 0.15s ease,\n transform 0.15s ease;\n`\n\nexport const StyledLabel = styled.span<StyledLabelProps>`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.5;\n color: ${(props) => getRadioVariantProps(props.$variant).label};\n user-select: none;\n\n a {\n color: inherit;\n text-decoration: underline;\n cursor: pointer;\n\n &:hover {\n text-decoration: none;\n }\n }\n`\n","import { StyledBox, StyledContainer, StyledDot, StyledInput, StyledLabel } from './styled'\nimport { RadioProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('radio')\n\nexport const Radio = ({\n checked,\n className,\n classnames,\n disabled,\n label,\n onChange,\n ref,\n variant = 'normal',\n ...rest\n}: RadioProps) => {\n return (\n <StyledContainer\n className={css('container', className)}\n $disabled={Boolean(disabled)}\n $variant={variant}\n >\n <StyledInput\n {...rest}\n ref={ref}\n type=\"radio\"\n className={css('input', classnames?.input)}\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n />\n <StyledBox className={css('box', classnames?.box)} $checked={checked} $variant={variant}>\n <StyledDot className={css('dot', classnames?.dot)} $visible={checked} $variant={variant} />\n </StyledBox>\n {label && (\n <StyledLabel className={css('label', classnames?.label)} $variant={variant}>\n {label}\n </StyledLabel>\n )}\n </StyledContainer>\n )\n}\n","import { RadioCardVariant } from './types'\nimport { alpha, COLORS, VacanoInteractiveElementState } from '../../lib'\n\ntype RadioCardVariantProps = {\n border: VacanoInteractiveElementState\n borderChecked: string\n background: VacanoInteractiveElementState\n backgroundChecked: string\n focusRing: string\n label: VacanoInteractiveElementState\n description: VacanoInteractiveElementState\n}\n\nexport const RADIO_CARD_VARIANT_PROPS: Record<RadioCardVariant, RadioCardVariantProps> = {\n normal: {\n border: {\n static: alpha(COLORS['black'], 20),\n hover: alpha(COLORS['black'], 40),\n active: alpha(COLORS['black'], 40),\n disabled: alpha(COLORS['black'], 10),\n },\n borderChecked: COLORS['black'],\n background: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: alpha(COLORS['black'], 5),\n },\n backgroundChecked: alpha(COLORS['black'], 5),\n focusRing: alpha(COLORS['black'], 20),\n label: {\n static: COLORS['black'],\n hover: COLORS['black'],\n active: COLORS['black'],\n disabled: alpha(COLORS['black'], 40),\n },\n description: {\n static: alpha(COLORS['black'], 60),\n hover: alpha(COLORS['black'], 60),\n active: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 30),\n },\n },\n error: {\n border: {\n static: COLORS['red'],\n hover: COLORS['red'],\n active: COLORS['red'],\n disabled: alpha(COLORS['red'], 30),\n },\n borderChecked: COLORS['red'],\n background: {\n static: COLORS['white'],\n hover: COLORS['white'],\n active: COLORS['white'],\n disabled: alpha(COLORS['red'], 5),\n },\n backgroundChecked: alpha(COLORS['red'], 5),\n focusRing: alpha(COLORS['red'], 20),\n label: {\n static: COLORS['red'],\n hover: COLORS['red'],\n active: COLORS['red'],\n disabled: alpha(COLORS['red'], 40),\n },\n description: {\n static: alpha(COLORS['red'], 70),\n hover: alpha(COLORS['red'], 70),\n active: alpha(COLORS['red'], 70),\n disabled: alpha(COLORS['red'], 40),\n },\n },\n}\n","import { RADIO_CARD_VARIANT_PROPS } from './constants'\nimport { RadioCardVariant } from './types'\n\nexport const getRadioCardVariantProps = (variant: RadioCardVariant) => {\n return RADIO_CARD_VARIANT_PROPS[variant] ?? RADIO_CARD_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getRadioCardVariantProps } from './helpers'\nimport { RadioCardVariant } from './types'\n\ntype StyledContainerProps = {\n $checked: boolean\n $disabled: boolean\n $fullWidth: boolean\n $variant: RadioCardVariant\n}\n\ntype StyledLabelProps = {\n $variant: RadioCardVariant\n}\n\ntype StyledDescriptionProps = {\n $variant: RadioCardVariant\n}\n\nexport const StyledContainer = styled.label<StyledContainerProps>`\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 8px;\n padding: 12px;\n background-color: ${(props) => {\n const variantProps = getRadioCardVariantProps(props.$variant)\n if (props.$disabled) return variantProps.background.disabled\n if (props.$checked) return variantProps.backgroundChecked\n return variantProps.background.static\n }};\n border: 1px solid\n ${(props) => {\n const variantProps = getRadioCardVariantProps(props.$variant)\n if (props.$disabled) return variantProps.border.disabled\n if (props.$checked) return variantProps.borderChecked\n return variantProps.border.static\n }};\n border-radius: 12px;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n transition:\n border-color 0.15s ease,\n background-color 0.15s ease;\n width: ${(props) => (props.$fullWidth ? '100%' : 'fit-content')};\n min-width: 0;\n\n &:hover:not([data-disabled='true']) {\n border-color: ${(props) => {\n const variantProps = getRadioCardVariantProps(props.$variant)\n if (props.$checked) return variantProps.borderChecked\n return variantProps.border.hover\n }};\n }\n\n .vacano_radio_container {\n pointer-events: none;\n }\n`\n\nexport const StyledInput = styled.input`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n`\n\nexport const StyledContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n`\n\nexport const StyledLabel = styled.span<StyledLabelProps>`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n color: ${(props) => getRadioCardVariantProps(props.$variant).label.static};\n\n label[data-disabled='true'] & {\n color: ${(props) => getRadioCardVariantProps(props.$variant).label.disabled};\n }\n`\n\nexport const StyledDescription = styled.span<StyledDescriptionProps>`\n font-size: 12px;\n font-weight: 400;\n line-height: 1.4;\n color: ${(props) => getRadioCardVariantProps(props.$variant).description.static};\n\n label[data-disabled='true'] & {\n color: ${(props) => getRadioCardVariantProps(props.$variant).description.disabled};\n }\n`\n","import {\n StyledContainer,\n StyledContent,\n StyledDescription,\n StyledInput,\n StyledLabel,\n} from './styled'\nimport { RadioCardProps } from './types'\nimport { Radio } from '../Radio'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('radio-card')\n\nexport const RadioCard = ({\n checked,\n className,\n classnames,\n description,\n disabled,\n fullWidth = false,\n label,\n onChange,\n ref,\n variant = 'normal',\n ...rest\n}: RadioCardProps) => {\n return (\n <StyledContainer\n className={css('container', className)}\n $checked={checked}\n $disabled={Boolean(disabled)}\n $fullWidth={fullWidth}\n $variant={variant}\n data-disabled={disabled}\n >\n <StyledInput\n {...rest}\n ref={ref}\n type=\"radio\"\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n />\n <Radio\n className={classnames?.radio}\n checked={checked}\n disabled={disabled}\n variant={variant}\n onChange={() => {}}\n tabIndex={-1}\n aria-hidden\n />\n <StyledContent className={css('content', classnames?.content)}>\n <StyledLabel className={css('label', classnames?.label)} $variant={variant}>\n {label}\n </StyledLabel>\n {description && (\n <StyledDescription\n className={css('description', classnames?.description)}\n $variant={variant}\n >\n {description}\n </StyledDescription>\n )}\n </StyledContent>\n </StyledContainer>\n )\n}\n","import { alpha, COLORS } from '../../lib'\n\nexport const RADIO_GROUP_PROPS = {\n label: {\n color: COLORS['black'],\n disabledColor: alpha(COLORS['black'], 40),\n },\n}\n","import styled from '@emotion/styled'\n\nimport { RADIO_GROUP_PROPS } from './constants'\n\ntype StyledLabelProps = {\n $disabled?: boolean\n}\n\nexport const StyledContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`\n\nexport const StyledLabel = styled.span<StyledLabelProps>`\n font-size: 13px;\n font-weight: 500;\n line-height: 1.5;\n color: ${(props) =>\n props.$disabled ? RADIO_GROUP_PROPS.label.disabledColor : RADIO_GROUP_PROPS.label.color};\n margin-bottom: 4px;\n`\n\nexport const StyledOptions = styled.div`\n display: flex;\n flex-direction: column;\n gap: 12px;\n`\n","import { StyledContainer, StyledLabel, StyledOptions } from './styled'\nimport { RadioGroupProps } from './types'\nimport { Radio } from '../Radio'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('radio-group')\n\nexport const RadioGroup = ({\n className,\n classnames,\n disabled,\n label,\n name,\n onChange,\n options,\n ref,\n value,\n ...rest\n}: RadioGroupProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {label && (\n <StyledLabel className={css('label', classnames?.label)} $disabled={disabled}>\n {label}\n </StyledLabel>\n )}\n <StyledOptions className={css('options', classnames?.options)}>\n {options.map((option) => (\n <Radio\n key={option.value}\n className={classnames?.radio}\n name={name}\n checked={value === option.value}\n label={option.label}\n disabled={disabled}\n onChange={() => onChange(option.value)}\n />\n ))}\n </StyledOptions>\n </StyledContainer>\n )\n}\n","import { createContext } from 'react'\n\nimport type { SaveProgressContextValue } from './types'\n\nexport const SaveProgressContext = createContext<SaveProgressContextValue | null>(null)\n","import styled from '@emotion/styled'\n\nimport { alpha, COLORS, KEYFRAMES } from '../../lib'\n\nexport const StyledContainer = styled.div`\n position: fixed;\n bottom: 24px;\n right: 24px;\n z-index: 9999;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n background-color: ${alpha(COLORS['iron-grey'], 10)};\n backdrop-filter: blur(8px);\n border-radius: 24px;\n animation: ${KEYFRAMES.fadeIn} 0.2s ease-out;\n pointer-events: none;\n color: ${COLORS['black']};\n`\n\nexport const StyledMessage = styled.span`\n font-size: 14px;\n font-weight: 500;\n white-space: nowrap;\n`\n","import { useCallback, useMemo, useState } from 'react'\n\nimport { SaveProgressContext } from './context'\nimport { StyledContainer, StyledMessage } from './styled'\nimport type { SaveProgressProviderProps } from './types'\nimport { Spinner } from '../Spinner'\n\nexport const SaveProgressProvider = ({\n children,\n defaultMessage = 'Saving',\n}: SaveProgressProviderProps) => {\n const [isVisible, setIsVisible] = useState(false)\n const [message, setMessage] = useState(defaultMessage)\n\n const show = useCallback(\n (customMessage?: string) => {\n setMessage(customMessage ?? defaultMessage)\n setIsVisible(true)\n },\n [defaultMessage],\n )\n\n const hide = useCallback(() => {\n setIsVisible(false)\n }, [])\n\n const value = useMemo(() => ({ isVisible, show, hide }), [isVisible, show, hide])\n\n return (\n <SaveProgressContext.Provider value={value}>\n {children}\n {isVisible && (\n <StyledContainer>\n <Spinner size=\"sm\" />\n <StyledMessage>{message}</StyledMessage>\n </StyledContainer>\n )}\n </SaveProgressContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { SaveProgressContext } from './context'\n\nexport const useSaveProgress = () => {\n const context = useContext(SaveProgressContext)\n\n if (!context) {\n throw new Error('useSaveProgress must be used within SaveProgressProvider')\n }\n\n return context\n}\n","import { SelectVariant } from './types'\nimport { alpha, COLORS, VacanoComponentSize, VacanoInteractiveElementState } from '../../lib'\n\nexport const OPTION_HEIGHT = 40\nexport const DROPDOWN_PADDING = 4\n\nexport const SELECT_SIZE_PROPS: Record<\n VacanoComponentSize,\n {\n height: string\n padding: string\n radius: string\n }\n> = {\n compact: {\n height: '32px',\n padding: '0 10px',\n radius: '14px',\n },\n default: {\n height: '40px',\n padding: '0 14px',\n radius: '16px',\n },\n}\n\nexport const SELECT_VARIANT_PROPS: Record<\n SelectVariant,\n {\n border: VacanoInteractiveElementState\n background: VacanoInteractiveElementState\n color: VacanoInteractiveElementState\n placeholder: string\n focus: string\n }\n> = {\n normal: {\n background: {\n static: alpha(COLORS['black'], 2),\n disabled: alpha(COLORS['black'], 10),\n },\n border: {\n static: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 10),\n },\n color: {\n static: COLORS['black'],\n disabled: alpha(COLORS['black'], 65),\n },\n placeholder: alpha(COLORS['black'], 40),\n focus: alpha(COLORS['iron-grey'], 30),\n },\n error: {\n background: {\n static: alpha(COLORS['red'], 2),\n disabled: alpha(COLORS['red'], 10),\n },\n border: {\n static: alpha(COLORS['red'], 60),\n disabled: alpha(COLORS['red'], 10),\n },\n color: {\n static: COLORS['red'],\n disabled: alpha(COLORS['red'], 65),\n },\n placeholder: alpha(COLORS['red'], 40),\n focus: alpha(COLORS['red'], 30),\n },\n}\n","import { SELECT_SIZE_PROPS, SELECT_VARIANT_PROPS } from './constants'\nimport { SelectVariant } from './types'\nimport { VacanoComponentSize } from '../../lib'\n\nexport const getSelectSizeProps = (size: VacanoComponentSize) => {\n return SELECT_SIZE_PROPS[size] ?? SELECT_SIZE_PROPS['default']\n}\n\nexport const getSelectVariantProps = (variant: SelectVariant) => {\n return SELECT_VARIANT_PROPS[variant] ?? SELECT_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getSelectSizeProps, getSelectVariantProps } from './helpers'\nimport { SelectVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { alpha, COLORS, VacanoComponentSize } from '../../lib'\n\nexport const StyledContainer = styled.div<{ $fullWidth: boolean }>`\n position: relative;\n display: grid;\n gap: 2px;\n min-width: 180px;\n width: ${(props) => (props.$fullWidth ? '100%' : 'fit-content')};\n`\n\nexport const StyledLabel = styled(FieldLabel)`\n margin-left: 6px;\n`\n\nexport const StyledTrigger = styled.button<{\n $size: VacanoComponentSize\n $variant: SelectVariant\n $disabled: boolean\n $hasValue: boolean\n}>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n width: 100%;\n outline: none;\n font-size: 14px;\n font-weight: 500;\n text-align: left;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n height: ${(props) => getSelectSizeProps(props.$size).height};\n padding: ${(props) => getSelectSizeProps(props.$size).padding};\n border-radius: ${(props) => getSelectSizeProps(props.$size).radius};\n\n color: ${(props) =>\n props.$hasValue\n ? props.$disabled\n ? getSelectVariantProps(props.$variant).color.disabled\n : getSelectVariantProps(props.$variant).color.static\n : getSelectVariantProps(props.$variant).placeholder};\n border: 1px solid\n ${(props) =>\n props.$disabled\n ? getSelectVariantProps(props.$variant).border.disabled\n : getSelectVariantProps(props.$variant).border.static};\n background-color: ${(props) =>\n props.$disabled\n ? getSelectVariantProps(props.$variant).background.disabled\n : getSelectVariantProps(props.$variant).background.static};\n`\n\nexport const StyledTriggerText = styled.span`\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`\n\nexport const StyledChevron = styled.span<{ $open: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: transform 0.2s ease;\n transform: rotate(${(props) => (props.$open ? '180deg' : '0deg')});\n`\n\nconst dropdownStyles = `\n padding: 4px;\n background: ${COLORS.white};\n border: 1px solid ${alpha(COLORS.black, 10)};\n border-radius: 16px;\n box-shadow: 0 4px 20px ${alpha(COLORS.black, 15)};\n z-index: 1000;\n`\n\nexport const StyledDropdown = styled.div`\n position: absolute;\n left: -4px;\n width: calc(100% + 8px);\n ${dropdownStyles}\n`\n\nexport const StyledPortalDropdown = styled.div`\n position: fixed;\n ${dropdownStyles}\n`\n\nexport const StyledOption = styled.button<{ $selected: boolean; $disabled: boolean }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n width: 100%;\n height: 40px;\n padding: 0 14px;\n border: none;\n background: ${(props) => (props.$selected ? alpha(COLORS.black, 6) : 'transparent')};\n border-radius: 12px;\n font-size: 14px;\n font-weight: 500;\n text-align: left;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n color: ${(props) => (props.$disabled ? alpha(COLORS.black, 40) : COLORS.black)};\n transition: background-color 0.15s ease;\n\n &:hover:not(:disabled) {\n background: ${alpha(COLORS.black, 8)};\n }\n`\n\nexport const StyledCheckmark = styled.span`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: ${COLORS.black};\n`\n","import { useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { DROPDOWN_PADDING, OPTION_HEIGHT } from './constants'\nimport {\n StyledCheckmark,\n StyledChevron,\n StyledContainer,\n StyledDropdown,\n StyledLabel,\n StyledOption,\n StyledPortalDropdown,\n StyledTrigger,\n StyledTriggerText,\n} from './styled'\nimport { SelectProps } from './types'\nimport { Check, ChevronDown } from '../../icons/Lucide'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('select')\n\ntype PortalPosition = {\n top: number\n left: number\n width: number\n}\n\nexport const Select = ({\n className,\n classnames,\n disabled = false,\n fullWidth = false,\n label,\n onChange,\n options,\n placeholder = 'Select...',\n portalRenderNode,\n ref,\n size = 'default',\n value,\n variant = 'normal',\n ...rest\n}: SelectProps) => {\n const [isOpen, setIsOpen] = useState(false)\n const [portalPosition, setPortalPosition] = useState<PortalPosition>({\n top: 0,\n left: 0,\n width: 0,\n })\n\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement>(null)\n const dropdownRef = useRef<HTMLDivElement>(null)\n\n const selectedOption = options.find((opt) => opt.value === value)\n const selectedIndex = Math.max(\n 0,\n options.findIndex((opt) => opt.value === value),\n )\n const dropdownTop = -(selectedIndex * OPTION_HEIGHT + DROPDOWN_PADDING)\n\n const updatePortalPosition = () => {\n if (!triggerRef.current || !portalRenderNode) return\n\n const triggerRect = triggerRef.current.getBoundingClientRect()\n const selectedOffset = selectedIndex * OPTION_HEIGHT + DROPDOWN_PADDING\n\n let top = triggerRect.top - selectedOffset\n\n const dropdownHeight = options.length * OPTION_HEIGHT + DROPDOWN_PADDING * 2\n const minTop = 8\n const maxTop = window.innerHeight - dropdownHeight - 8\n\n if (top < minTop) top = minTop\n if (top > maxTop) top = maxTop\n\n setPortalPosition({\n top,\n left: triggerRect.left - DROPDOWN_PADDING,\n width: triggerRect.width + DROPDOWN_PADDING * 2,\n })\n }\n\n const handleSelect = (optionValue: string) => {\n onChange?.(optionValue)\n setIsOpen(false)\n triggerRef.current?.focus()\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return\n\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setIsOpen((prev) => !prev)\n } else if (e.key === 'Escape' && isOpen) {\n e.preventDefault()\n setIsOpen(false)\n } else if (e.key === 'ArrowDown' && !isOpen) {\n e.preventDefault()\n setIsOpen(true)\n }\n }\n\n useLayoutEffect(() => {\n if (isOpen && portalRenderNode) {\n updatePortalPosition()\n }\n }, [isOpen, portalRenderNode, selectedIndex, options.length])\n\n useEffect(() => {\n if (!isOpen) return\n\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node\n const isOutsideContainer = containerRef.current && !containerRef.current.contains(target)\n const isOutsideDropdown = dropdownRef.current && !dropdownRef.current.contains(target)\n\n if (portalRenderNode) {\n if (isOutsideContainer && isOutsideDropdown) {\n setIsOpen(false)\n }\n } else {\n if (isOutsideContainer) {\n setIsOpen(false)\n }\n }\n }\n\n const handleScroll = () => {\n if (portalRenderNode) {\n updatePortalPosition()\n }\n }\n\n const handleResize = () => {\n if (portalRenderNode) {\n updatePortalPosition()\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n\n if (portalRenderNode) {\n window.addEventListener('scroll', handleScroll, true)\n window.addEventListener('resize', handleResize)\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n window.removeEventListener('scroll', handleScroll, true)\n window.removeEventListener('resize', handleResize)\n }\n }, [isOpen, portalRenderNode])\n\n const renderOptions = () =>\n options.map((option) => (\n <StyledOption\n key={option.value}\n type=\"button\"\n role=\"option\"\n $selected={option.value === value}\n $disabled={option.disabled ?? false}\n disabled={option.disabled}\n aria-selected={option.value === value}\n onClick={() => handleSelect(option.value)}\n className={css('option', classnames?.option)}\n >\n <span>{option.label}</span>\n {option.value === value && (\n <StyledCheckmark>\n <Check size={16} />\n </StyledCheckmark>\n )}\n </StyledOption>\n ))\n\n const dropdown = portalRenderNode ? (\n createPortal(\n <StyledPortalDropdown\n ref={dropdownRef}\n role=\"listbox\"\n style={{\n top: portalPosition.top,\n left: portalPosition.left,\n width: portalPosition.width,\n }}\n className={css('dropdown', classnames?.dropdown)}\n >\n {renderOptions()}\n </StyledPortalDropdown>,\n portalRenderNode,\n )\n ) : (\n <StyledDropdown\n ref={dropdownRef}\n role=\"listbox\"\n style={{ top: dropdownTop }}\n className={css('dropdown', classnames?.dropdown)}\n >\n {renderOptions()}\n </StyledDropdown>\n )\n\n return (\n <StyledContainer\n {...rest}\n ref={(node) => {\n ;(containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) ref.current = node\n }}\n $fullWidth={fullWidth}\n className={css('container', className)}\n >\n {label && <StyledLabel className={css('label', classnames?.label)}>{label}</StyledLabel>}\n\n <StyledTrigger\n ref={triggerRef}\n type=\"button\"\n $size={size}\n $variant={variant}\n $disabled={disabled}\n $hasValue={Boolean(selectedOption)}\n disabled={disabled}\n onClick={() => !disabled && setIsOpen((prev) => !prev)}\n onKeyDown={handleKeyDown}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n className={css('trigger', classnames?.trigger)}\n >\n <StyledTriggerText>{selectedOption?.label ?? placeholder}</StyledTriggerText>\n <StyledChevron $open={isOpen}>\n <ChevronDown size={16} />\n </StyledChevron>\n </StyledTrigger>\n\n {isOpen && dropdown}\n </StyledContainer>\n )\n}\n","import { StatusCardTrend } from './types'\nimport { COLORS } from '../../lib'\n\nexport const STATUS_CARD_TREND_COLORS: Record<StatusCardTrend, string> = {\n positive: COLORS.green,\n negative: COLORS.red,\n neutral: COLORS['iron-grey'],\n}\n","import { STATUS_CARD_TREND_COLORS } from './constants'\nimport { StatusCardTrend } from './types'\n\nexport const getTrendColor = (trend: StatusCardTrend) => {\n return STATUS_CARD_TREND_COLORS[trend] ?? STATUS_CARD_TREND_COLORS['neutral']\n}\n","import styled from '@emotion/styled'\n\nimport { getTrendColor } from './helpers'\nimport { StatusCardTrend } from './types'\nimport { COLORS } from '../../lib'\n\ntype StyledContainerProps = {\n $border: boolean\n $shadow: boolean\n}\n\nexport const StyledContainer = styled.div<StyledContainerProps>`\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 20px;\n background-color: ${COLORS.white};\n border-radius: 16px;\n border: ${({ $border }) => ($border ? '1px solid #e5e7eb' : 'none')};\n box-shadow: ${({ $shadow }) => ($shadow ? '0 4px 6px -1px rgba(0, 0, 0, 0.1)' : 'none')};\n`\n\nexport const StyledHeader = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n`\n\nexport const StyledLabel = styled.p`\n margin: 0;\n font-size: 13px;\n color: ${COLORS['iron-grey']};\n`\n\nexport const StyledIcon = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n background-color: #f5f5f5;\n color: ${COLORS['iron-grey']};\n\n & svg {\n width: 18px;\n height: 18px;\n }\n`\n\nexport const StyledValue = styled.h3`\n margin: 0;\n font-size: 28px;\n font-weight: 600;\n line-height: 1.2;\n color: ${COLORS.black};\n`\n\ntype StyledTrendProps = {\n $variant: StatusCardTrend\n}\n\nexport const StyledTrend = styled.p<StyledTrendProps>`\n margin: 0;\n font-size: 12px;\n color: ${({ $variant }) => getTrendColor($variant)};\n`\n","import {\n StyledContainer,\n StyledHeader,\n StyledIcon,\n StyledLabel,\n StyledTrend,\n StyledValue,\n} from './styled'\nimport { StatusCardProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('status-card')\n\nexport const StatusCard = ({\n border = false,\n className,\n classnames,\n icon,\n label,\n ref,\n shadow = false,\n trend,\n trendVariant = 'neutral',\n value,\n ...rest\n}: StatusCardProps) => {\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n className={css('container', className)}\n $border={border}\n $shadow={shadow}\n >\n <StyledHeader>\n <StyledLabel className={css('label', classnames?.label)}>{label}</StyledLabel>\n {icon && <StyledIcon>{icon}</StyledIcon>}\n </StyledHeader>\n <StyledValue className={css('value', classnames?.value)}>{value}</StyledValue>\n {trend && (\n <StyledTrend className={css('trend', classnames?.trend)} $variant={trendVariant}>\n {trend}\n </StyledTrend>\n )}\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { StepperOrientation } from './types'\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div<{ $orientation: StepperOrientation }>`\n display: flex;\n align-items: ${(props) => (props.$orientation === 'vertical' ? 'flex-start' : 'center')};\n flex-direction: ${(props) => (props.$orientation === 'vertical' ? 'column' : 'row')};\n`\n\nexport const StyledStepWrapper = styled.div<{ $orientation: StepperOrientation }>`\n display: flex;\n align-items: ${(props) => (props.$orientation === 'vertical' ? 'flex-start' : 'center')};\n flex-direction: ${(props) => (props.$orientation === 'vertical' ? 'column' : 'row')};\n ${(props) => props.$orientation === 'horizontal' && 'flex: 1; min-width: 0;'}\n\n &:last-child {\n flex: 0;\n }\n`\n\nexport const StyledStep = styled.button<{\n $active: boolean\n $completed: boolean\n $clickable: boolean\n}>`\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 0;\n border: none;\n background: transparent;\n cursor: ${(props) => (props.$clickable ? 'pointer' : 'default')};\n flex-shrink: 0;\n`\n\nexport const StyledCircle = styled.div<{ $active: boolean; $completed: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n font-size: 14px;\n font-weight: 600;\n flex-shrink: 0;\n transition:\n background-color 0.2s ease,\n border-color 0.2s ease,\n color 0.2s ease;\n\n ${(props) =>\n props.$active || props.$completed\n ? `\n background-color: ${COLORS.black};\n border: 2px solid ${COLORS.black};\n color: ${COLORS.white};\n `\n : `\n background-color: transparent;\n border: 2px solid ${COLORS.gray};\n color: ${COLORS['iron-grey']};\n `}\n`\n\nexport const StyledLabel = styled.span<{ $active: boolean; $completed: boolean }>`\n font-size: 14px;\n font-weight: 500;\n white-space: nowrap;\n color: ${(props) => (props.$active || props.$completed ? COLORS.black : COLORS['iron-grey'])};\n transition: color 0.2s ease;\n`\n\nexport const StyledLine = styled.div<{ $completed: boolean; $orientation: StepperOrientation }>`\n background-color: ${(props) => (props.$completed ? COLORS.black : COLORS.gray)};\n transition: background-color 0.2s ease;\n\n ${(props) =>\n props.$orientation === 'vertical'\n ? `\n width: 2px;\n height: 24px;\n margin: 8px 0 8px 15px;\n `\n : `\n flex: 1;\n height: 2px;\n min-width: 16px;\n margin: 0 12px;\n `}\n`\n","import { useMemo } from 'react'\n\nimport {\n StyledCircle,\n StyledContainer,\n StyledLabel,\n StyledLine,\n StyledStep,\n StyledStepWrapper,\n} from './styled'\nimport { StepperProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('stepper')\n\nexport const Stepper = ({\n className,\n classnames,\n onChange,\n orientation = 'horizontal',\n ref,\n steps,\n value,\n ...rest\n}: StepperProps) => {\n const currentIndex = useMemo(() => {\n return steps.findIndex((step) => step.value === value)\n }, [steps, value])\n\n return (\n <StyledContainer\n {...rest}\n ref={ref}\n $orientation={orientation}\n className={css('container', className)}\n >\n {steps.map((step, index) => {\n const isActive = step.value === value\n const isCompleted = index < currentIndex\n const isLast = index === steps.length - 1\n\n return (\n <StyledStepWrapper key={step.value} $orientation={orientation}>\n <StyledStep\n type=\"button\"\n $active={isActive}\n $completed={isCompleted}\n $clickable={Boolean(onChange)}\n onClick={() => onChange?.(step.value)}\n className={css('step', classnames?.step)}\n >\n <StyledCircle\n $active={isActive}\n $completed={isCompleted}\n className={css('circle', classnames?.circle)}\n >\n {index + 1}\n </StyledCircle>\n <StyledLabel\n $active={isActive}\n $completed={isCompleted}\n className={css('label', classnames?.label)}\n >\n {step.label}\n </StyledLabel>\n </StyledStep>\n {!isLast && (\n <StyledLine\n $completed={isCompleted}\n $orientation={orientation}\n className={css('line', classnames?.line)}\n />\n )}\n </StyledStepWrapper>\n )\n })}\n </StyledContainer>\n )\n}\n","import { TagsVariant } from './types'\nimport { COLORS } from '../../lib'\n\ntype VariantProps = {\n border: string\n label: string\n}\n\nexport const VARIANT_PROPS: Record<TagsVariant, VariantProps> = {\n normal: {\n border: COLORS['iron-grey'],\n label: COLORS.black,\n },\n error: {\n border: COLORS.red,\n label: COLORS.red,\n },\n}\n","import styled from '@emotion/styled'\n\nimport { VARIANT_PROPS } from './constants'\nimport { TagsVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { alpha, COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 4px;\n`\n\nexport const StyledLabel = styled(FieldLabel)<{ $variant: TagsVariant }>`\n margin-left: 6px;\n color: ${(props) => VARIANT_PROPS[props.$variant].label};\n`\n\nexport const StyledTrigger = styled.div<{\n $variant: TagsVariant\n $disabled: boolean\n $focused: boolean\n}>`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 6px;\n min-height: 44px;\n padding: 8px 12px;\n border: 1px dashed ${(props) => VARIANT_PROPS[props.$variant].border};\n border-radius: 8px;\n background: ${COLORS.white};\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'text')};\n opacity: ${(props) => (props.$disabled ? 0.5 : 1)};\n transition: border-color 0.15s ease;\n\n &:hover {\n border-color: ${(props) =>\n props.$disabled\n ? VARIANT_PROPS[props.$variant].border\n : props.$variant === 'error'\n ? COLORS.red\n : COLORS.black};\n }\n\n ${(props) =>\n props.$focused &&\n `\n outline: 2px solid ${props.$variant === 'error' ? COLORS.red : COLORS['steel-blue']};\n outline-offset: 2px;\n `}\n`\n\nexport const StyledInput = styled.input<{ $disabled: boolean }>`\n flex: 1;\n min-width: 80px;\n border: none;\n outline: none;\n background: transparent;\n font-size: 14px;\n color: ${COLORS.black};\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'text')};\n\n &::placeholder {\n color: ${COLORS['iron-grey']};\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n`\n\nconst dropdownStyles = `\n z-index: 100;\n background-color: ${COLORS.white};\n border: 1px solid ${alpha(COLORS.black, 15)};\n border-radius: 8px;\n box-shadow: 0 4px 16px ${alpha(COLORS.black, 12)};\n max-height: 200px;\n overflow-y: auto;\n`\n\nconst getDropdownTransform = ($open: boolean, $position: 'bottom' | 'top') => {\n if ($open) return 'translateY(0)'\n return $position === 'bottom' ? 'translateY(-8px)' : 'translateY(8px)'\n}\n\nconst getDropdownTransition = `\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n\nexport const StyledDropdown = styled.div<{ $open: boolean; $position: 'bottom' | 'top' }>`\n position: absolute;\n left: 0;\n right: 0;\n ${(props) =>\n props.$position === 'bottom' ? 'top: calc(100% + 4px);' : 'bottom: calc(100% + 4px);'}\n ${dropdownStyles}\n opacity: ${(props) => (props.$open ? 1 : 0)};\n visibility: ${(props) => (props.$open ? 'visible' : 'hidden')};\n transform: ${(props) => getDropdownTransform(props.$open, props.$position)};\n transition: ${getDropdownTransition};\n`\n\nexport const StyledPortalDropdown = styled.div<{ $open: boolean; $position: 'bottom' | 'top' }>`\n position: fixed;\n ${dropdownStyles}\n opacity: ${(props) => (props.$open ? 1 : 0)};\n visibility: ${(props) => (props.$open ? 'visible' : 'hidden')};\n transform: ${(props) => getDropdownTransform(props.$open, props.$position)};\n transition: ${getDropdownTransition};\n`\n\nexport const StyledOption = styled.button`\n display: flex;\n align-items: center;\n width: 100%;\n padding: 10px 12px;\n border: none;\n background: transparent;\n font-size: 14px;\n color: ${COLORS.black};\n text-align: left;\n cursor: pointer;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${COLORS.gray};\n }\n\n &:first-of-type {\n border-radius: 7px 7px 0 0;\n }\n\n &:last-of-type {\n border-radius: 0 0 7px 7px;\n }\n\n &:only-child {\n border-radius: 7px;\n }\n`\n\nexport const StyledEmpty = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n color: ${COLORS['iron-grey']};\n font-size: 14px;\n text-align: center;\n`\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport {\n StyledContainer,\n StyledDropdown,\n StyledEmpty,\n StyledInput,\n StyledLabel,\n StyledOption,\n StyledPortalDropdown,\n StyledTrigger,\n} from './styled'\nimport { TagsProps } from './types'\nimport { Chip } from '../Chip'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('tags')\n\nconst DROPDOWN_GAP = 4\n\ntype PortalPosition = {\n top: number\n left: number\n width: number\n}\n\nexport const Tags = ({\n className,\n classnames,\n createKey = 'Tab',\n disabled = false,\n emptyMessage = 'No options',\n freeSolo = true,\n label,\n onChange,\n options = [],\n placeholder = 'Add tag...',\n portalRenderNode,\n ref,\n value,\n variant = 'normal',\n ...rest\n}: TagsProps) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n const dropdownRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const [inputValue, setInputValue] = useState('')\n const [isFocused, setIsFocused] = useState(false)\n const [dropdownPosition, setDropdownPosition] = useState<'bottom' | 'top'>('bottom')\n const [portalPosition, setPortalPosition] = useState<PortalPosition>({\n top: 0,\n left: 0,\n width: 0,\n })\n\n const filteredOptions = useMemo(() => {\n const available = options.filter((opt) => !value.includes(opt.value))\n if (!inputValue.trim()) return available\n const query = inputValue.toLowerCase().trim()\n return available.filter((opt) => opt.label.toLowerCase().includes(query))\n }, [options, value, inputValue])\n\n const showDropdown = isFocused && options.length > 0\n\n const updateDropdownPosition = useCallback(() => {\n if (!triggerRef.current) return\n\n const rect = triggerRef.current.getBoundingClientRect()\n const dropdownHeight = dropdownRef.current?.offsetHeight ?? 200\n const spaceBelow = window.innerHeight - rect.bottom - DROPDOWN_GAP\n const spaceAbove = rect.top - DROPDOWN_GAP\n\n const newPosition: 'bottom' | 'top' =\n spaceBelow < dropdownHeight && spaceAbove > spaceBelow ? 'top' : 'bottom'\n setDropdownPosition(newPosition)\n\n if (portalRenderNode) {\n const top =\n newPosition === 'bottom'\n ? rect.bottom + DROPDOWN_GAP\n : rect.top - dropdownHeight - DROPDOWN_GAP\n\n setPortalPosition({\n top,\n left: rect.left,\n width: rect.width,\n })\n }\n }, [portalRenderNode])\n\n useEffect(() => {\n if (isFocused) {\n updateDropdownPosition()\n window.addEventListener('scroll', updateDropdownPosition, true)\n window.addEventListener('resize', updateDropdownPosition)\n return () => {\n window.removeEventListener('scroll', updateDropdownPosition, true)\n window.removeEventListener('resize', updateDropdownPosition)\n }\n }\n }, [isFocused, updateDropdownPosition])\n\n const addTag = useCallback(\n (tagValue: string) => {\n const trimmed = tagValue.trim()\n if (!trimmed || value.includes(trimmed)) return false\n onChange([...value, trimmed])\n setInputValue('')\n return true\n },\n [value, onChange],\n )\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === createKey && inputValue.trim()) {\n e.preventDefault()\n if (freeSolo) {\n addTag(inputValue)\n } else {\n const matchingOption = filteredOptions.find(\n (opt) => opt.label.toLowerCase() === inputValue.toLowerCase().trim(),\n )\n if (matchingOption) {\n addTag(matchingOption.value)\n }\n }\n } else if (e.key === 'Backspace' && !inputValue && value.length > 0) {\n onChange(value.slice(0, -1))\n }\n }\n\n const handleOptionClick = (optionValue: string) => {\n addTag(optionValue)\n inputRef.current?.focus()\n }\n\n const handleRemove = (tagValue: string) => {\n onChange(value.filter((v) => v !== tagValue))\n }\n\n const handleContainerClick = () => {\n if (!disabled) {\n inputRef.current?.focus()\n }\n }\n\n const getTagLabel = (tagValue: string) => {\n const option = options.find((opt) => opt.value === tagValue)\n return option?.label ?? tagValue\n }\n\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)}>\n {label && (\n <StyledLabel $variant={variant} className={css('label')}>\n {label}\n </StyledLabel>\n )}\n <div ref={containerRef} style={{ position: 'relative' }}>\n <StyledTrigger\n ref={triggerRef}\n $variant={variant}\n $disabled={disabled}\n $focused={isFocused}\n onClick={handleContainerClick}\n className={css('trigger', classnames?.trigger)}\n >\n {value.map((tag) => (\n <Chip\n key={tag}\n deletable={!disabled}\n onDelete={() => handleRemove(tag)}\n className={css('chip', classnames?.chip)}\n >\n {getTagLabel(tag)}\n </Chip>\n ))}\n <StyledInput\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setTimeout(() => setIsFocused(false), 150)}\n onKeyDown={handleKeyDown}\n placeholder={value.length === 0 ? placeholder : ''}\n disabled={disabled}\n $disabled={disabled}\n className={css('input', classnames?.input)}\n />\n </StyledTrigger>\n\n {options.length > 0 &&\n (portalRenderNode ? (\n createPortal(\n <StyledPortalDropdown\n ref={dropdownRef}\n $open={showDropdown}\n $position={dropdownPosition}\n style={{\n top: portalPosition.top,\n left: portalPosition.left,\n width: portalPosition.width,\n }}\n className={css('dropdown', classnames?.dropdown)}\n >\n {filteredOptions.length === 0 ? (\n <StyledEmpty className={css('empty', classnames?.empty)}>\n {emptyMessage}\n </StyledEmpty>\n ) : (\n filteredOptions.map((opt) => (\n <StyledOption\n key={opt.value}\n type=\"button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => handleOptionClick(opt.value)}\n className={css('option', classnames?.option)}\n >\n {opt.label}\n </StyledOption>\n ))\n )}\n </StyledPortalDropdown>,\n portalRenderNode,\n )\n ) : (\n <StyledDropdown\n ref={dropdownRef}\n $open={showDropdown}\n $position={dropdownPosition}\n className={css('dropdown', classnames?.dropdown)}\n >\n {filteredOptions.length === 0 ? (\n <StyledEmpty className={css('empty', classnames?.empty)}>\n {emptyMessage}\n </StyledEmpty>\n ) : (\n filteredOptions.map((opt) => (\n <StyledOption\n key={opt.value}\n type=\"button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => handleOptionClick(opt.value)}\n className={css('option', classnames?.option)}\n >\n {opt.label}\n </StyledOption>\n ))\n )}\n </StyledDropdown>\n ))}\n </div>\n </StyledContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { COLORS } from '../../lib'\n\nexport const StyledContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 6px;\n`\n\nexport const StyledTab = styled.button<{ $active: boolean; $disabled: boolean }>`\n padding: 6px 16px;\n border: none;\n border-radius: 12px;\n background-color: ${(props) => (props.$active ? COLORS.gray : 'transparent')};\n color: ${COLORS.black};\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'pointer')};\n opacity: ${(props) => (props.$disabled ? 0.5 : 1)};\n transition:\n background-color 0.15s ease,\n opacity 0.15s ease;\n\n &:hover:not(:disabled) {\n background-color: ${(props) => (props.$active ? COLORS.gray : 'rgba(0, 0, 0, 0.05)')};\n }\n`\n","import { StyledContainer, StyledTab } from './styled'\nimport { TabsProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('tabs')\n\nexport const Tabs = ({ className, classnames, onChange, ref, tabs, value, ...rest }: TabsProps) => {\n return (\n <StyledContainer {...rest} ref={ref} className={css('container', className)} role=\"tablist\">\n {tabs.map((tab) => (\n <StyledTab\n key={tab.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={value === tab.value}\n $active={value === tab.value}\n $disabled={Boolean(tab.disabled)}\n disabled={tab.disabled}\n onClick={() => onChange(tab.value)}\n className={css('tab', classnames?.tab)}\n >\n {tab.label}\n </StyledTab>\n ))}\n </StyledContainer>\n )\n}\n","import { TextareaVariant } from './types'\nimport { alpha, COLORS, VacanoInteractiveElementState } from '../../lib'\n\nexport const TEXTAREA_VARIANT_PROPS: Record<\n TextareaVariant,\n {\n border: VacanoInteractiveElementState\n background: VacanoInteractiveElementState\n color: VacanoInteractiveElementState\n placeholder: VacanoInteractiveElementState\n focus: string\n }\n> = {\n normal: {\n background: {\n static: alpha(COLORS['black'], 2),\n disabled: alpha(COLORS['black'], 10),\n },\n border: {\n static: alpha(COLORS['black'], 60),\n disabled: alpha(COLORS['black'], 10),\n },\n color: {\n static: COLORS['black'],\n disabled: alpha(COLORS['black'], 65),\n },\n placeholder: {\n static: alpha(COLORS['black'], 40),\n disabled: alpha(COLORS['black'], 65),\n },\n focus: alpha(COLORS['iron-grey'], 30),\n },\n error: {\n background: {\n static: alpha(COLORS['red'], 2),\n disabled: alpha(COLORS['red'], 10),\n },\n border: {\n static: alpha(COLORS['red'], 60),\n disabled: alpha(COLORS['red'], 10),\n },\n color: {\n static: COLORS['red'],\n disabled: alpha(COLORS['red'], 65),\n },\n placeholder: {\n static: alpha(COLORS['red'], 40),\n disabled: alpha(COLORS['red'], 65),\n },\n focus: alpha(COLORS['red'], 30),\n },\n}\n","import { TEXTAREA_VARIANT_PROPS } from './constants'\nimport { TextareaVariant } from './types'\n\nexport const getTextareaVariantProps = (variant: TextareaVariant) => {\n return TEXTAREA_VARIANT_PROPS[variant] ?? TEXTAREA_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getTextareaVariantProps } from './helpers'\nimport { TextareaVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\n\ntype StyledTextareaProps = {\n $variant: TextareaVariant\n}\n\nexport const StyledContainer = styled.div<{ $fullWidth: boolean }>`\n display: grid;\n flex-direction: column;\n gap: 2px;\n width: ${(props) => (props.$fullWidth ? '100%' : 'fit-content')};\n`\n\nexport const StyledLabel = styled(FieldLabel)`\n margin-left: 6px;\n`\n\nexport const StyledTextarea = styled.textarea<StyledTextareaProps>`\n flex: 1;\n min-width: 0;\n outline: none;\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n padding: 10px 14px;\n border-radius: 16px;\n resize: vertical;\n\n color: ${(props) => getTextareaVariantProps(props.$variant).color.static};\n border: 1px solid ${(props) => getTextareaVariantProps(props.$variant).border.static};\n background-color: ${(props) => getTextareaVariantProps(props.$variant).background.static};\n\n &::placeholder {\n color: ${(props) => getTextareaVariantProps(props.$variant).placeholder.static};\n }\n\n &:disabled {\n cursor: not-allowed;\n resize: none;\n color: ${(props) => getTextareaVariantProps(props.$variant).color.disabled};\n background-color: ${(props) => getTextareaVariantProps(props.$variant).background.disabled};\n border-color: ${(props) => getTextareaVariantProps(props.$variant).border.disabled};\n\n &::placeholder {\n color: ${(props) => getTextareaVariantProps(props.$variant).placeholder.disabled};\n }\n }\n`\n","import { StyledContainer, StyledLabel, StyledTextarea } from './styled'\nimport { TextareaProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('textarea')\n\nexport const Textarea = ({\n className,\n classnames,\n disabled,\n fullWidth,\n label,\n ref,\n variant = 'normal',\n rows = 4,\n ...rest\n}: TextareaProps) => {\n return (\n <StyledContainer className={css('container', className)} $fullWidth={Boolean(fullWidth)}>\n {label && (\n <StyledLabel variant={variant} className={css('label', classnames?.label)}>\n {label}\n </StyledLabel>\n )}\n <StyledTextarea\n {...rest}\n ref={ref}\n rows={rows}\n disabled={disabled}\n $variant={variant}\n className={css('textarea', classnames?.textarea)}\n />\n </StyledContainer>\n )\n}\n","import { createContext } from 'react'\n\nimport type { ToastContextValue } from './types'\n\nexport const ToastContext = createContext<ToastContextValue | null>(null)\n","import { ToastVariant } from './types'\nimport { COLORS } from '../../lib'\n\nexport const MAX_VISIBLE_TOASTS = 3\n\ntype ToastVariantColors = {\n background: string\n text: string\n border: string\n}\n\nexport const TOAST_VARIANT_COLORS: Record<ToastVariant, ToastVariantColors> = {\n default: {\n background: '#374151',\n text: COLORS.white,\n border: '#374151',\n },\n success: {\n background: COLORS.green,\n text: COLORS.white,\n border: COLORS.green,\n },\n warning: {\n background: COLORS.yellow,\n text: COLORS.white,\n border: COLORS.yellow,\n },\n danger: {\n background: COLORS.red,\n text: COLORS.white,\n border: COLORS.red,\n },\n}\n","import { MAX_VISIBLE_TOASTS } from './constants'\nimport type { ToastAction, ToastState } from './types'\n\nexport const toastReducer = (state: ToastState, action: ToastAction): ToastState => {\n switch (action.type) {\n case 'ADD_TOAST': {\n const newToast = action.payload\n\n if (state.toasts.length < MAX_VISIBLE_TOASTS) {\n return {\n ...state,\n toasts: [...state.toasts, newToast],\n }\n }\n\n return {\n ...state,\n queue: [...state.queue, newToast],\n }\n }\n\n case 'REMOVE_TOAST': {\n const toastId = action.payload\n const updatedToasts = state.toasts.filter((toast) => toast.id !== toastId)\n const nextToast = state.queue[0]\n\n if (nextToast && updatedToasts.length < MAX_VISIBLE_TOASTS) {\n return {\n toasts: [...updatedToasts, nextToast],\n queue: state.queue.slice(1),\n }\n }\n\n return {\n ...state,\n toasts: updatedToasts,\n }\n }\n\n case 'SHOW_NEXT_FROM_QUEUE': {\n const nextToast = state.queue[0]\n\n if (!nextToast || state.toasts.length >= MAX_VISIBLE_TOASTS) {\n return state\n }\n\n return {\n toasts: [...state.toasts, nextToast],\n queue: state.queue.slice(1),\n }\n }\n\n default:\n return state\n }\n}\n\nexport const initialToastState: ToastState = {\n toasts: [],\n queue: [],\n}\n","import { TOAST_VARIANT_COLORS } from './constants'\nimport { ToastVariant } from './types'\n\nexport const getToastVariantColors = (variant: ToastVariant) => {\n return TOAST_VARIANT_COLORS[variant] ?? TOAST_VARIANT_COLORS['default']\n}\n","import styled from '@emotion/styled'\n\nimport { getToastVariantColors } from './helpers'\nimport type { ToastVariant } from './types'\nimport { COLORS, KEYFRAMES } from '../../lib'\n\nexport const StyledToastrContainer = styled.div`\n position: fixed;\n bottom: 24px;\n left: 24px;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n gap: 12px;\n pointer-events: none;\n width: auto;\n max-width: 90vw;\n`\n\ntype StyledToastProps = {\n $variant: ToastVariant\n $isExiting: boolean\n}\n\nexport const StyledToast = styled.div<StyledToastProps>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n min-height: 32px;\n padding: 8px 8px 8px 16px;\n background-color: ${({ $variant }) => getToastVariantColors($variant).background};\n color: ${({ $variant }) => getToastVariantColors($variant).text};\n border: 1px solid ${({ $variant }) => getToastVariantColors($variant).border};\n border-radius: 96px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n animation: ${({ $isExiting }) =>\n $isExiting ? KEYFRAMES.slideOutBottomFade : KEYFRAMES.slideInBottomFade}\n 0.3s ease-out;\n pointer-events: auto;\n max-width: 500px;\n`\n\nexport const StyledToastMessage = styled.span`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`\n\nexport const StyledToastCloseButton = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n background: transparent;\n border: none;\n color: inherit;\n cursor: pointer;\n opacity: 0.7;\n transition: opacity 0.2s ease-in-out;\n flex-shrink: 0;\n\n &:hover {\n opacity: 1;\n }\n`\n\nexport const StyledToastrBottomRow = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n width: 100%;\n`\n\nexport const StyledQueueCounter = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 32px;\n padding: 8px 16px;\n background-color: #374151;\n color: ${COLORS.white};\n border-radius: 96px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n pointer-events: auto;\n font-size: 14px;\n font-weight: 500;\n white-space: nowrap;\n margin-left: auto;\n`\n","import { useEffect, useState } from 'react'\n\nimport { StyledToast, StyledToastCloseButton, StyledToastMessage } from './styled'\nimport type { ToastItemProps } from './types'\nimport { X } from '../../icons/Lucide'\n\nexport const ToastItem = ({ toast, onRemove }: ToastItemProps) => {\n const [isExiting, setIsExiting] = useState(false)\n\n const handleRemove = () => {\n setIsExiting(true)\n setTimeout(() => {\n onRemove(toast.id)\n }, 300)\n }\n\n useEffect(() => {\n if (toast.duration) {\n const timer = setTimeout(() => {\n handleRemove()\n }, toast.duration)\n\n return () => clearTimeout(timer)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [toast.duration, toast.id])\n\n return (\n <StyledToast $variant={toast.variant} $isExiting={isExiting}>\n <StyledToastMessage>{toast.message}</StyledToastMessage>\n <StyledToastCloseButton onClick={handleRemove}>\n <X style={{ width: 16, height: 16 }} />\n </StyledToastCloseButton>\n </StyledToast>\n )\n}\n","import { StyledQueueCounter, StyledToastrBottomRow, StyledToastrContainer } from './styled'\nimport { ToastItem } from './ToastItem'\nimport type { ToastContainerProps } from './types'\n\nexport const ToastContainer = ({ toasts, queueCount, removeToast }: ToastContainerProps) => {\n if (toasts.length === 0) {\n return null\n }\n\n const lastIndex = toasts.length - 1\n\n return (\n <StyledToastrContainer>\n {toasts.map((toast, index) => {\n if (index === lastIndex && queueCount > 0) {\n return (\n <StyledToastrBottomRow key={toast.id}>\n <ToastItem toast={toast} onRemove={removeToast} />\n <StyledQueueCounter>+{queueCount}</StyledQueueCounter>\n </StyledToastrBottomRow>\n )\n }\n\n return <ToastItem key={toast.id} toast={toast} onRemove={removeToast} />\n })}\n </StyledToastrContainer>\n )\n}\n","import { useCallback, useReducer, type PropsWithChildren } from 'react'\n\nimport { ToastContext } from './context'\nimport { initialToastState, toastReducer } from './reducer'\nimport { ToastContainer } from './ToastContainer'\nimport type { ToastVariant } from './types'\n\nexport const ToastProvider = ({ children }: PropsWithChildren) => {\n const [state, dispatch] = useReducer(toastReducer, initialToastState)\n\n const addToast = useCallback(\n (message: string, variant: ToastVariant = 'default', duration?: number) => {\n const id = `toast-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n\n dispatch({\n type: 'ADD_TOAST',\n payload: {\n id,\n message,\n variant,\n duration,\n },\n })\n },\n [],\n )\n\n const removeToast = useCallback((id: string) => {\n dispatch({\n type: 'REMOVE_TOAST',\n payload: id,\n })\n }, [])\n\n return (\n <ToastContext.Provider value={{ addToast, removeToast }}>\n {children}\n <ToastContainer\n toasts={state.toasts}\n queueCount={state.queue.length}\n removeToast={removeToast}\n />\n </ToastContext.Provider>\n )\n}\n","import { useContext } from 'react'\n\nimport { ToastContext } from './context'\n\nexport const useToast = () => {\n const context = useContext(ToastContext)\n\n if (!context) {\n throw new Error('useToast must be used within ToastProvider')\n }\n\n return context\n}\n","import { TooltipVariant } from './types'\nimport { COLORS } from '../../lib'\n\ntype TooltipVariantColors = {\n background: string\n text: string\n border?: string\n}\n\nexport const TOOLTIP_VARIANT_COLORS: Record<TooltipVariant, TooltipVariantColors> = {\n dark: {\n background: COLORS.black,\n text: COLORS.white,\n },\n light: {\n background: COLORS.white,\n text: COLORS.black,\n border: COLORS.gray,\n },\n success: {\n background: COLORS.green,\n text: COLORS.white,\n },\n warning: {\n background: COLORS.yellow,\n text: COLORS.white,\n },\n danger: {\n background: COLORS.red,\n text: COLORS.white,\n },\n}\n","import { TOOLTIP_VARIANT_COLORS } from './constants'\nimport { TooltipVariant } from './types'\n\nexport const getTooltipVariantColors = (variant: TooltipVariant) => {\n return TOOLTIP_VARIANT_COLORS[variant] ?? TOOLTIP_VARIANT_COLORS['dark']\n}\n","import styled from '@emotion/styled'\n\nimport { getTooltipVariantColors } from './helpers'\nimport { TooltipPlacement, TooltipVariant } from './types'\n\ntype StyledContentProps = {\n $placement: TooltipPlacement\n $variant: TooltipVariant\n $visible: boolean\n}\n\nconst getArrowStyles = ($placement: TooltipPlacement, $variant: TooltipVariant) => {\n const arrowColor = getTooltipVariantColors($variant).background\n switch ($placement) {\n case 'top':\n return `\n bottom: -12px;\n left: 50%;\n margin-left: -6px;\n border-top-color: ${arrowColor};\n `\n case 'bottom':\n return `\n top: -12px;\n left: 50%;\n margin-left: -6px;\n border-bottom-color: ${arrowColor};\n `\n case 'left':\n return `\n right: -12px;\n top: 50%;\n margin-top: -6px;\n border-left-color: ${arrowColor};\n `\n case 'right':\n return `\n left: -12px;\n top: 50%;\n margin-top: -6px;\n border-right-color: ${arrowColor};\n `\n default:\n return ''\n }\n}\n\nconst getLightArrowStyles = ($placement: TooltipPlacement, $variant: TooltipVariant) => {\n if ($variant !== 'light') return ''\n const borderColor = getTooltipVariantColors($variant).border\n switch ($placement) {\n case 'top':\n return `\n &::after {\n bottom: -14px;\n left: 50%;\n margin-left: -7px;\n border-top-color: ${borderColor};\n }\n `\n case 'bottom':\n return `\n &::after {\n top: -14px;\n left: 50%;\n margin-left: -7px;\n border-bottom-color: ${borderColor};\n }\n `\n case 'left':\n return `\n &::after {\n right: -14px;\n top: 50%;\n margin-top: -7px;\n border-left-color: ${borderColor};\n }\n `\n case 'right':\n return `\n &::after {\n left: -14px;\n top: 50%;\n margin-top: -7px;\n border-right-color: ${borderColor};\n }\n `\n default:\n return ''\n }\n}\n\nconst contentBaseStyles = (props: StyledContentProps) => `\n z-index: 1000;\n padding: 6px 12px;\n background-color: ${getTooltipVariantColors(props.$variant).background};\n color: ${getTooltipVariantColors(props.$variant).text};\n font-size: 13px;\n line-height: 1.4;\n border-radius: 6px;\n width: max-content;\n max-width: 300px;\n white-space: normal;\n word-wrap: break-word;\n pointer-events: none;\n opacity: ${props.$visible ? 1 : 0};\n visibility: ${props.$visible ? 'visible' : 'hidden'};\n transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n\n ${props.$variant === 'light' ? `border: 1px solid ${getTooltipVariantColors(props.$variant).border};` : ''}\n\n &::before {\n content: '';\n position: absolute;\n width: 0;\n height: 0;\n border: 6px solid transparent;\n ${getArrowStyles(props.$placement, props.$variant)}\n }\n\n ${\n props.$variant === 'light'\n ? `\n &::after {\n content: '';\n position: absolute;\n width: 0;\n height: 0;\n border: 7px solid transparent;\n }\n `\n : ''\n }\n\n ${getLightArrowStyles(props.$placement, props.$variant)}\n`\n\nexport const StyledWrapper = styled.div`\n position: relative;\n display: inline-block;\n`\n\nconst getPlacementStyles = ($placement: TooltipPlacement) => {\n switch ($placement) {\n case 'top':\n return `\n bottom: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%);\n `\n case 'bottom':\n return `\n top: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%);\n `\n case 'left':\n return `\n right: calc(100% + 8px);\n top: 50%;\n transform: translateY(-50%);\n `\n case 'right':\n return `\n left: calc(100% + 8px);\n top: 50%;\n transform: translateY(-50%);\n `\n default:\n return ''\n }\n}\n\nexport const StyledContent = styled.div<StyledContentProps>`\n position: absolute;\n ${(props) => contentBaseStyles(props)}\n ${({ $placement }) => getPlacementStyles($placement)}\n`\n\nexport const StyledPortalContent = styled.div<StyledContentProps>`\n position: fixed;\n ${(props) => contentBaseStyles(props)}\n`\n","import { useCallback, useLayoutEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { StyledContent, StyledPortalContent, StyledWrapper } from './styled'\nimport { TooltipPlacement, TooltipProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('tooltip')\n\nconst TOOLTIP_GAP = 8\n\ntype PortalPosition = {\n top: number\n left: number\n}\n\nexport const Tooltip = ({\n children,\n className,\n classnames,\n content,\n delay = 200,\n placement = 'top',\n portalRenderNode,\n ref,\n variant = 'dark',\n ...rest\n}: TooltipProps) => {\n const [visible, setVisible] = useState(false)\n const [timeoutId, setTimeoutId] = useState<ReturnType<typeof setTimeout> | null>(null)\n const [actualPlacement, setActualPlacement] = useState<TooltipPlacement>(placement)\n const [portalPosition, setPortalPosition] = useState<PortalPosition>({ top: 0, left: 0 })\n\n const wrapperRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n\n const updatePosition = useCallback(() => {\n if (!wrapperRef.current) return\n\n const triggerRect = wrapperRef.current.getBoundingClientRect()\n const contentWidth = contentRef.current?.offsetWidth ?? 100\n const contentHeight = contentRef.current?.offsetHeight ?? 30\n\n const spaceTop = triggerRect.top - TOOLTIP_GAP\n const spaceBottom = window.innerHeight - triggerRect.bottom - TOOLTIP_GAP\n const spaceLeft = triggerRect.left - TOOLTIP_GAP\n const spaceRight = window.innerWidth - triggerRect.right - TOOLTIP_GAP\n\n let newPlacement = placement\n\n // Auto-adjust placement if not enough space\n if (placement === 'top' && spaceTop < contentHeight && spaceBottom > spaceTop) {\n newPlacement = 'bottom'\n } else if (placement === 'bottom' && spaceBottom < contentHeight && spaceTop > spaceBottom) {\n newPlacement = 'top'\n } else if (placement === 'left' && spaceLeft < contentWidth && spaceRight > spaceLeft) {\n newPlacement = 'right'\n } else if (placement === 'right' && spaceRight < contentWidth && spaceLeft > spaceRight) {\n newPlacement = 'left'\n }\n\n setActualPlacement(newPlacement)\n\n if (portalRenderNode) {\n let top: number\n let left: number\n\n switch (newPlacement) {\n case 'top':\n top = triggerRect.top - contentHeight - TOOLTIP_GAP\n left = triggerRect.left + triggerRect.width / 2 - contentWidth / 2\n break\n case 'bottom':\n top = triggerRect.bottom + TOOLTIP_GAP\n left = triggerRect.left + triggerRect.width / 2 - contentWidth / 2\n break\n case 'left':\n top = triggerRect.top + triggerRect.height / 2 - contentHeight / 2\n left = triggerRect.left - contentWidth - TOOLTIP_GAP\n break\n case 'right':\n top = triggerRect.top + triggerRect.height / 2 - contentHeight / 2\n left = triggerRect.right + TOOLTIP_GAP\n break\n default:\n top = 0\n left = 0\n }\n\n // Clamp to viewport\n const padding = 8\n left = Math.max(padding, Math.min(left, window.innerWidth - contentWidth - padding))\n top = Math.max(padding, Math.min(top, window.innerHeight - contentHeight - padding))\n\n setPortalPosition({ top, left })\n }\n }, [placement, portalRenderNode])\n\n useLayoutEffect(() => {\n if (visible) {\n updatePosition()\n }\n }, [visible, updatePosition])\n\n const handleMouseEnter = () => {\n const id = setTimeout(() => {\n setVisible(true)\n }, delay)\n setTimeoutId(id)\n }\n\n const handleMouseLeave = () => {\n if (timeoutId) {\n clearTimeout(timeoutId)\n setTimeoutId(null)\n }\n setVisible(false)\n }\n\n const tooltipContent = portalRenderNode ? (\n createPortal(\n <StyledPortalContent\n ref={contentRef}\n className={css('content', classnames?.content)}\n $placement={actualPlacement}\n $variant={variant}\n $visible={visible}\n style={{ top: portalPosition.top, left: portalPosition.left }}\n >\n {content}\n </StyledPortalContent>,\n portalRenderNode,\n )\n ) : (\n <StyledContent\n ref={contentRef}\n className={css('content', classnames?.content)}\n $placement={actualPlacement}\n $variant={variant}\n $visible={visible}\n >\n {content}\n </StyledContent>\n )\n\n return (\n <StyledWrapper\n {...rest}\n ref={(node) => {\n ;(wrapperRef as React.MutableRefObject<HTMLDivElement | null>).current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) ref.current = node\n }}\n className={css('wrapper', className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {children}\n {tooltipContent}\n </StyledWrapper>\n )\n}\n"],"names":["_extends","n","e","t","r","globalStyles","css","GlobalStyle","jsx","Global","reactPropsRegex","isPropValid","memoize","prop","testOmitPropsOnStringTag","testOmitPropsOnComponent","key","getDefaultShouldForwardProp","tag","composeShouldForwardProps","options","isReal","shouldForwardProp","optionsShouldForwardProp","propName","Insertion","_ref","cache","serialized","isStringTag","registerStyles","useInsertionEffectAlwaysWithSyncFallback","insertStyles","createStyled","baseTag","identifierName","targetClassName","defaultShouldForwardProp","shouldUseAs","args","styles","templateStringsArr","len","i","Styled","withEmotionCache","props","ref","FinalTag","className","classInterpolations","mergedProps","React","ThemeContext","getRegisteredStyles","serializeStyles","finalShouldForwardProp","newProps","_key","nextTag","nextOptions","newStyled","tags","styled","tagName","StyledFieldLabel","COLORS","newClassNameGetter","FieldLabel","children","required","variant","rest","jsxs","SIZE_PROPS","VARIANT_PROPS","alpha","StyledContainer","StyledLabel","StyledInputWrapper","StyledInput","StyledSpinnerWrapper","StyledDropdown","$open","StyledItem","StyledItemImage","StyledItemText","StyledEmpty","SPINNER_SIZE_PROPS","SPINNER_COLORS","getSpinnerSizeProps","size","spin","keyframes","StyledSpinner","Spinner","ariaLabel","Autocomplete","classnames","disabled","fullWidth","label","value","onChange","onSearch","debounceMs","minChars","noResultsMessage","inputValue","setInputValue","useState","suggestions","setSuggestions","isLoading","setIsLoading","isOpen","setIsOpen","hasSearched","setHasSearched","containerRef","useRef","debounceRef","useEffect","handleSearch","useCallback","query","results","handleInputChange","newValue","handleSelect","suggestion","handleBlur","handleFocus","BUTTON_SIZE_PROPS","BUTTON_VARIANT_PROPS","getButtonVariantProps","result","getButtonSizeProps","getButtonWidthProps","StyledButton","StyledIcon","StyledLoading","LoaderCircle","KEYFRAMES","StyledKeyBindings","StyledKeySymbol","KeySymbol","symbol","KeysBindings","keys","symbols","useMemo","getKeySymbols","item","Button","icon","loading","onClick","keyBindings","type","buttonRef","useImperativeHandle","useKeyBinding","_a","computedType","StyledCard","Card","border","shadow","CHECKBOX_VARIANT_PROPS","getCheckboxVariantProps","StyledBox","Checkbox","checked","indeterminate","Minus","Check","CHECKBOX_CARD_VARIANT_PROPS","getCheckboxCardVariantProps","variantProps","StyledContent","StyledDescription","CheckboxCard","description","CHECKBOX_GROUP_PROPS","StyledOptions","CheckboxGroup","handleChange","optionValue","v","option","CHIP_VARIANT_PROPS","getChipVariantProps","StyledDelete","Chip","deletable","onDelete","X","DEFAULT_CONFIRM_LABEL","DEFAULT_CANCEL_LABEL","slideIn","slideOut","$isExiting","StyledMessage","StyledActions","ConfirmationBar","confirmation","onDone","isExiting","setIsExiting","message","onConfirm","onCancel","confirmLabel","cancelLabel","exit","callback","handleConfirm","handleCancel","handleKeyDown","ConfirmationContext","createContext","noop","ConfirmationProvider","state","setState","show","hide","useConfirmation","context","useContext","CONTAINER_MAX_WIDTHS","BREAKPOINTS","mediaUp","Container","DATE_PICKER_SIZE_PROPS","DATE_PICKER_VARIANT_PROPS","CALENDAR_CELL_SIZE","CALENDAR_GAP","CALENDAR_PADDING","formatDateGo","date","format","locale","year","month","day","hours","minutes","seconds","hour12","isPM","monthLong","monthShort","weekdayLong","weekdayShort","pad","spacePad","placeholder","id","tokens","token","getDaysInMonth","getFirstDayOfMonth","generateCalendarDays","weekStartsOn","daysInMonth","leadingEmptyDays","days","getWeekdayNames","weekdays","dayIndex","getShortMonthNames","months","isSameDay","a","b","isSameMonth","isSameYear","isDayDisabled","minDate","maxDate","minDay","maxDay","isMonthDisabled","minYear","minMonth","maxYear","maxMonth","isYearDisabled","generateYearRange","centerYear","range","startYear","years","getDefaultDisplayFormat","mode","$fullWidth","StyledTrigger","$disabled","$size","$variant","$hasValue","StyledTriggerText","StyledTriggerIcon","calendarStyles","getCalendarTransform","$position","StyledCalendar","StyledPortalCalendar","StyledCalendarHeader","StyledCalendarTitle","StyledNavButton","StyledNavButtons","StyledWeekdays","StyledWeekday","StyledDaysGrid","StyledDayCell","$selected","$today","StyledMonthsGrid","StyledMonthCell","$current","StyledYearsGrid","StyledYearCell","StyledEmptyCell","CALENDAR_MIN_HEIGHT","DatePicker","displayFormat","portalRenderNode","controlledOpen","onOpen","onClose","today","internalOpen","setInternalOpen","portalPosition","setPortalPosition","position","setPosition","view","setView","viewDate","setViewDate","yearRangeStart","setYearRangeStart","triggerRef","calendarRef","isControlled","open","monthNames","calendarDays","yearRange","displayValue","placeholderText","updatePosition","triggerRect","calendarHeight","spaceBelow","spaceAbove","newPosition","top","handleOpen","newViewDate","handleClose","handleToggle","handleSelectDay","newDate","handleSelectMonth","handleSelectYear","handlePrevMonth","prev","handleNextMonth","handlePrevYear","handleNextYear","handlePrevYearRange","handleNextYearRange","handleTitleClick","useLayoutEffect","handleClickOutside","event","target","isOutsideContainer","isOutsideCalendar","handleEscape","handleScroll","handleResize","iconSize","renderDaysView","Fragment","ChevronLeft","ChevronRight","renderMonthsView","renderYearsView","renderCalendarContent","calendar","createPortal","ChevronDown","getPositionStyles","Drawer","animated","contentStyles","getTransform","$align","StyledPortalContent","DROPDOWN_GAP","DROPDOWN_MIN_HEIGHT","Dropdown","align","autoClose","trigger","contentRef","contentHeight","contentWidth","_b","left","next","handleContentClick","isOutsideContent","content","StyledText","$isEmpty","EditableText","dataTestId","isEditing","setIsEditing","textRef","save","selection","handleEditClick","Pencil","VARIANT_COLORS","StyledFieldMessage","FieldMessage","StyledPreview","StyledPlaceholder","S","F","M","T","k","N","Y","_","Z","H","q","j","R","D","V","O","g","x","W","U","K","l","s","u","C","G","J","d","p","c","Q","ee","te","oe","ne","ie","re","se","ae","le","ce","de","pe","ue","me","he","fe","ge","xe","be","$","ye","E","ve","ze","we","Ee","$e","L","Re","m","f","z","Pe","Be","I","Le","_c","P","h","A","Ce","Ie","y","w","B","Ae","DEFAULT_CONFIG","STYLE_ID","CUSTOM_STYLES","injectCropperStyles","style","CROPPER_CSS","useImageCropper","allowedTypes","applyLabel","compression","maxFileSize","onCrop","onError","outputSize","portalSize","cropperRef","HqCropper","base64","blob","ImageCropper","buttonLabel","previewSize","preview","setPreview","INPUT_SIZE_PROPS","INPUT_VARIANT_PROPS","getInputVariantProps","getInputSizeProps","StyledInputContainer","Input","StyledOverlay","Modal","width","StyledModalContent","StyledModalHeader","StyledModalTitle","StyledOptionsList","StyledOption","StyledOptionLabel","MultiSelect","emptyMessage","maxVisible","modalTitle","searchPlaceholder","search","setSearch","selectedOptions","opt","filteredOptions","visibleChips","hiddenCount","handleRemove","DEFAULT_NOTIFICATION_DURATION","NOTIFICATION_VARIANT_COLORS","NotificationContext","getNotificationVariantColors","StyledNotificationContainer","StyledNotificationBar","StyledNotificationMessage","StyledNotificationCloseButton","StyledNotificationWrapper","NotificationBar","notification","onRemove","onAnimationEnd","handleAnimationEnd","timer","notificationReducer","action","newNotification","nextNotification","initialNotificationState","NotificationProvider","dispatch","useReducer","duration","handleShowNext","useNotification","OTP_CODE_SIZE_PROPS","OTP_CODE_VARIANT_PROPS","getOtpCodeSizeProps","getOtpCodeVariantProps","StyledInputsWrapper","OtpCode","autoFocus","length","inputRefs","focusInput","index","input","digit","firstEmptyIndex","char","insertIndex","updatedValue","nextEmptyIndex","handlePaste","pastedData","nextIndex","el","PANEL_VARIANT_COLORS","getPanelVariantColors","StyledHeader","StyledTitle","Panel","title","hasHeader","PROGRESS_SIZE_PROPS","StyledTrack","StyledBar","$value","Progress","RADIO_VARIANT_PROPS","getRadioVariantProps","StyledDot","Radio","RADIO_CARD_VARIANT_PROPS","getRadioCardVariantProps","RadioCard","RADIO_GROUP_PROPS","RadioGroup","name","SaveProgressContext","SaveProgressProvider","defaultMessage","isVisible","setIsVisible","setMessage","customMessage","useSaveProgress","OPTION_HEIGHT","DROPDOWN_PADDING","SELECT_SIZE_PROPS","SELECT_VARIANT_PROPS","getSelectSizeProps","getSelectVariantProps","StyledChevron","dropdownStyles","StyledPortalDropdown","StyledCheckmark","Select","dropdownRef","selectedOption","selectedIndex","dropdownTop","updatePortalPosition","selectedOffset","dropdownHeight","minTop","maxTop","isOutsideDropdown","renderOptions","dropdown","node","STATUS_CARD_TREND_COLORS","getTrendColor","trend","$border","$shadow","StyledValue","StyledTrend","StatusCard","trendVariant","StyledStepWrapper","StyledStep","StyledCircle","StyledLine","Stepper","orientation","steps","currentIndex","step","isActive","isCompleted","isLast","getDropdownTransform","getDropdownTransition","Tags","createKey","freeSolo","inputRef","isFocused","setIsFocused","dropdownPosition","setDropdownPosition","available","showDropdown","updateDropdownPosition","rect","addTag","tagValue","trimmed","matchingOption","handleOptionClick","handleContainerClick","getTagLabel","StyledTab","Tabs","tabs","tab","TEXTAREA_VARIANT_PROPS","getTextareaVariantProps","StyledTextarea","Textarea","rows","ToastContext","MAX_VISIBLE_TOASTS","TOAST_VARIANT_COLORS","toastReducer","newToast","toastId","updatedToasts","toast","nextToast","initialToastState","getToastVariantColors","StyledToastrContainer","StyledToast","StyledToastMessage","StyledToastCloseButton","StyledToastrBottomRow","StyledQueueCounter","ToastItem","ToastContainer","toasts","queueCount","removeToast","lastIndex","ToastProvider","addToast","useToast","TOOLTIP_VARIANT_COLORS","getTooltipVariantColors","getArrowStyles","$placement","arrowColor","getLightArrowStyles","borderColor","contentBaseStyles","StyledWrapper","getPlacementStyles","TOOLTIP_GAP","Tooltip","delay","placement","visible","setVisible","timeoutId","setTimeoutId","actualPlacement","setActualPlacement","wrapperRef","spaceTop","spaceBottom","spaceLeft","spaceRight","newPlacement","padding","handleMouseEnter","handleMouseLeave","tooltipContent"],"mappings":"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","x_google_ignoreList":[0,2,3,4,60]}