@vacano/ui 1.15.8 → 1.17.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/README.md +1 -1
- package/dist/{ToggleGroup-Do3q0qhi.js → ToggleGroup-8TgP7j1_.js} +266 -246
- package/dist/ToggleGroup-8TgP7j1_.js.map +1 -0
- package/dist/{ToggleGroup-DXq3FgdQ.cjs → ToggleGroup-FYyi3zCW.cjs} +3 -3
- package/dist/ToggleGroup-FYyi3zCW.cjs.map +1 -0
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{index-B_4jp70c.js → index-C35SsHTU.js} +2 -2
- package/dist/{index-B_4jp70c.js.map → index-C35SsHTU.js.map} +1 -1
- package/dist/{index-BUoqL3Q7.cjs → index-YmuoQ8lQ.cjs} +2 -2
- package/dist/{index-BUoqL3Q7.cjs.map → index-YmuoQ8lQ.cjs.map} +1 -1
- package/dist/index.cjs +460 -783
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -54
- package/dist/index.js +1935 -2971
- package/dist/index.js.map +1 -1
- package/dist/{keyboard-Cexig8lu.cjs → keyboard-Ce6jVywF.cjs} +3 -3
- package/dist/keyboard-Ce6jVywF.cjs.map +1 -0
- package/dist/{keyboard-D5qN_1XD.js → keyboard-WjRJTKKV.js} +53 -53
- package/dist/keyboard-WjRJTKKV.js.map +1 -0
- package/dist/lib.cjs +1 -1
- package/dist/lib.js +2 -2
- package/package.json +8 -10
- package/dist/ToggleGroup-DXq3FgdQ.cjs.map +0 -1
- package/dist/ToggleGroup-Do3q0qhi.js.map +0 -1
- package/dist/keyboard-Cexig8lu.cjs.map +0 -1
- package/dist/keyboard-D5qN_1XD.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleGroup-8TgP7j1_.js","sources":["../node_modules/.pnpm/@babel+runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.js","../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/FieldMessage/styled.ts","../src/components/FieldMessage/FieldMessage.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/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/DatePicker/constants.ts","../src/components/DatePicker/helpers.ts","../src/components/DatePicker/styled.ts","../src/components/DatePicker/DatePicker.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/OtpCode/constants.ts","../src/components/OtpCode/helpers.ts","../src/components/OtpCode/styled.ts","../src/components/OtpCode/OtpCode.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/Select/constants.ts","../src/components/Select/helpers.ts","../src/components/Select/styled.ts","../src/components/Select/Select.tsx","../src/components/Tags/constants.ts","../src/components/Tags/styled.ts","../src/components/Tags/Tags.tsx","../src/components/Textarea/constants.ts","../src/components/Textarea/helpers.ts","../src/components/Textarea/styled.ts","../src/components/Textarea/Textarea.tsx","../src/components/Toggle/constants.ts","../src/components/Toggle/helpers.ts","../src/components/Toggle/styled.ts","../src/components/Toggle/Toggle.tsx","../src/components/ToggleCard/constants.ts","../src/components/ToggleCard/helpers.ts","../src/components/ToggleCard/styled.ts","../src/components/ToggleCard/ToggleCard.tsx","../src/components/ToggleGroup/constants.ts","../src/components/ToggleGroup/styled.ts","../src/components/ToggleGroup/ToggleGroup.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 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 { 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 { AutocompleteVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { FieldMessage } from '../FieldMessage'\nimport { alpha, COLORS, VacanoComponentSize, Z_INDEX } 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 StyledMessage = styled(FieldMessage)`\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\nconst dropdownStyles = `\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 transition:\n opacity 0.15s ease,\n transform 0.15s ease,\n visibility 0.15s;\n`\n\nexport const StyledDropdown = styled.div<{ $open: boolean }>`\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n margin-top: 4px;\n z-index: ${Z_INDEX.dropdown};\n ${dropdownStyles}\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open }) => ($open ? 'translateY(0)' : 'translateY(-8px)')};\n`\n\nexport const StyledPortalDropdown = styled.div<{ $open: boolean }>`\n position: fixed;\n z-index: ${Z_INDEX.portalDropdown};\n ${dropdownStyles}\n opacity: ${({ $open }) => ($open ? 1 : 0)};\n visibility: ${({ $open }) => ($open ? 'visible' : 'hidden')};\n transform: ${({ $open }) => ($open ? 'translateY(0)' : 'translateY(-8px)')};\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, useLayoutEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport {\n StyledContainer,\n StyledDropdown,\n StyledEmpty,\n StyledInput,\n StyledInputWrapper,\n StyledItem,\n StyledItemImage,\n StyledItemText,\n StyledLabel,\n StyledMessage,\n StyledPortalDropdown,\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\nconst DROPDOWN_GAP = 4\n\ntype PortalPosition = {\n top: number\n left: number\n width: number\n}\n\nexport const Autocomplete = ({\n className,\n classnames,\n disabled,\n fullWidth,\n label,\n ref,\n message,\n portalRenderNode,\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 const [portalPosition, setPortalPosition] = useState<PortalPosition>({\n top: 0,\n left: 0,\n width: 0,\n })\n\n const containerRef = useRef<HTMLDivElement>(null)\n const dropdownRef = 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 const updatePortalPosition = useCallback(() => {\n if (!containerRef.current) return\n\n const rect = containerRef.current.getBoundingClientRect()\n\n setPortalPosition({\n top: rect.bottom + DROPDOWN_GAP,\n left: rect.left,\n width: rect.width,\n })\n }, [])\n\n useLayoutEffect(() => {\n if (isOpen && portalRenderNode) {\n updatePortalPosition()\n }\n }, [isOpen, portalRenderNode, updatePortalPosition])\n\n useEffect(() => {\n if (!isOpen || !portalRenderNode) return\n\n const handleScroll = () => updatePortalPosition()\n const handleResize = () => updatePortalPosition()\n\n window.addEventListener('scroll', handleScroll, true)\n window.addEventListener('resize', handleResize)\n\n return () => {\n window.removeEventListener('scroll', handleScroll, true)\n window.removeEventListener('resize', handleResize)\n }\n }, [isOpen, portalRenderNode, updatePortalPosition])\n\n useEffect(() => {\n if (!isOpen || !portalRenderNode) return\n\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node\n const isOutsideContainer = containerRef.current && !containerRef.current.contains(target)\n const isOutsideDropdown = dropdownRef.current && !dropdownRef.current.contains(target)\n\n if (isOutsideContainer && isOutsideDropdown) {\n setIsOpen(false)\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [isOpen, portalRenderNode])\n\n useEffect(() => {\n return () => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current)\n }\n }\n }, [])\n\n const dropdownOpen = isOpen && hasSearched && !isLoading\n\n const dropdownContent = (\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 </>\n )\n\n const dropdown = portalRenderNode ? (\n createPortal(\n <StyledPortalDropdown\n ref={dropdownRef}\n $open={dropdownOpen}\n className={css('dropdown', classnames?.dropdown)}\n style={{\n top: portalPosition.top,\n left: portalPosition.left,\n width: portalPosition.width,\n }}\n >\n {dropdownContent}\n </StyledPortalDropdown>,\n portalRenderNode,\n )\n ) : (\n <StyledDropdown\n ref={dropdownRef}\n $open={dropdownOpen}\n className={css('dropdown', classnames?.dropdown)}\n >\n {dropdownContent}\n </StyledDropdown>\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 {message && <StyledMessage variant={variant}>{message}</StyledMessage>}\n {dropdown}\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 ghost: {\n background: {\n static: alpha(COLORS['iron-grey'], 6),\n hover: alpha(COLORS['iron-grey'], 10),\n active: alpha(COLORS['iron-grey'], 14),\n disabled: alpha(COLORS['iron-grey'], 4),\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: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n disabled: 'transparent',\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 { 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.3;\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 variant = 'normal',\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 variant={variant}\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: 6px;\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 StyledIcon = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\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 line-height: 1.4;\n`\n","import { StyledContainer, StyledDelete, StyledIcon, 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 icon,\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 {icon && <StyledIcon className={css('icon', classnames?.icon)}>{icon}</StyledIcon>}\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","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 { FieldMessage } from '../FieldMessage'\nimport { alpha, COLORS, VacanoComponentSize, Z_INDEX } 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 StyledMessage = styled(FieldMessage)`\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 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 z-index: ${Z_INDEX.dropdown};\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 z-index: ${Z_INDEX.portalDropdown};\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 StyledMessage,\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 message,\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 variant={variant}>{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 {message && <StyledMessage variant={variant}>{message}</StyledMessage>}\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 { FieldMessage } from '../FieldMessage'\nimport { alpha, COLORS, VacanoComponentSize } from '../../lib'\n\ntype StyledInputProps = {\n $size: VacanoComponentSize\n $variant: InputVariant\n $hasPrefix: boolean\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 StyledMessage = styled(FieldMessage)`\n margin-left: 6px;\n`\n\nexport const StyledInputWrapper = styled.div<{\n $size: VacanoComponentSize\n $variant: InputVariant\n $disabled: boolean\n}>`\n display: flex;\n align-items: stretch;\n border: 1px solid\n ${(props) =>\n getInputVariantProps(props.$variant).border[props.$disabled ? 'disabled' : 'static']};\n border-radius: ${(props) => getInputSizeProps(props.$size).radius};\n overflow: hidden;\n`\n\nexport const StyledPrefix = styled.span<{\n $size: VacanoComponentSize\n $variant: InputVariant\n $disabled: boolean\n}>`\n display: flex;\n align-items: center;\n flex-shrink: 0;\n padding: ${(props) => getInputSizeProps(props.$size).padding};\n font-size: 14px;\n font-weight: 500;\n white-space: nowrap;\n user-select: none;\n cursor: ${(props) => (props.$disabled ? 'not-allowed' : 'default')};\n color: ${(props) =>\n getInputVariantProps(props.$variant).color[props.$disabled ? 'disabled' : 'static']};\n background-color: ${(props) =>\n props.$variant === 'error' ? alpha(COLORS.red, 8) : alpha(COLORS.black, 6)};\n border-right: 1px solid\n ${(props) =>\n getInputVariantProps(props.$variant).border[props.$disabled ? 'disabled' : 'static']};\n`\n\nexport const StyledInput = styled.input<StyledInputProps>`\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) => (props.$hasPrefix ? '0' : getInputSizeProps(props.$size).radius)};\n\n color: ${(props) => getInputVariantProps(props.$variant).color.static};\n border: ${(props) =>\n props.$hasPrefix ? 'none' : `1px solid ${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) =>\n props.$hasPrefix ? 'transparent' : getInputVariantProps(props.$variant).border.disabled};\n\n &::placeholder {\n color: ${(props) => getInputVariantProps(props.$variant).placeholder.disabled};\n }\n }\n`\n","import {\n StyledInput,\n StyledInputContainer,\n StyledInputWrapper,\n StyledLabel,\n StyledMessage,\n StyledPrefix,\n} 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 message,\n prefix,\n size = 'default',\n variant = 'normal',\n ...rest\n}: InputProps) => {\n const hasPrefix = prefix !== undefined && prefix !== null\n\n const input = (\n <StyledInput\n {...rest}\n ref={ref}\n disabled={disabled}\n $size={size}\n $variant={variant}\n $hasPrefix={hasPrefix}\n className={css('input', classnames?.input)}\n />\n )\n\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 {hasPrefix ? (\n <StyledInputWrapper $size={size} $variant={variant} $disabled={Boolean(disabled)}>\n <StyledPrefix\n $size={size}\n $variant={variant}\n $disabled={Boolean(disabled)}\n className={css('prefix')}\n >\n {prefix}\n </StyledPrefix>\n {input}\n </StyledInputWrapper>\n ) : (\n input\n )}\n {message && <StyledMessage variant={variant}>{message}</StyledMessage>}\n </StyledInputContainer>\n )\n}\n","import styled from '@emotion/styled'\n\nimport { alpha, COLORS, KEYFRAMES, Z_INDEX } 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: ${Z_INDEX.modalOverlay};\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: ${Z_INDEX.modal};\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 { alpha, COLORS } from '../../lib'\n\ntype VariantProps = {\n border: string\n placeholder: string\n}\n\nexport const VARIANT_PROPS: Record<MultiSelectVariant, VariantProps> = {\n normal: {\n border: COLORS['iron-grey'],\n placeholder: COLORS['iron-grey'],\n },\n error: {\n border: COLORS.red,\n placeholder: alpha(COLORS.red, 40),\n },\n}\n","import styled from '@emotion/styled'\n\nimport { VARIANT_PROPS } from './constants'\nimport { MultiSelectVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { FieldMessage } from '../FieldMessage'\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)`\n margin-left: 6px;\n`\n\nexport const StyledTrigger = styled.div<{ $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 {\n border-color: ${(props) =>\n props.$disabled ? undefined : props.$variant === 'error' ? COLORS.red : COLORS.black};\n }\n`\n\nexport const StyledPlaceholder = styled.span<{ $variant: MultiSelectVariant }>`\n color: ${(props) => VARIANT_PROPS[props.$variant].placeholder};\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\nexport const StyledMessage = styled(FieldMessage)`\n margin-left: 6px;\n`\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport {\n StyledContainer,\n StyledEmpty,\n StyledLabel,\n StyledMessage,\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 message,\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 const modalContentRef = useRef<HTMLDivElement>(null)\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 = useCallback(() => {\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 useEffect(() => {\n if (!isOpen) return\n\n const handleClickOutside = (e: MouseEvent) => {\n if (modalContentRef.current && !modalContentRef.current.contains(e.target as Node)) {\n handleClose()\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen, handleClose])\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 $variant={variant}\n $disabled={disabled}\n onClick={handleOpen}\n className={css('trigger', classnames?.trigger)}\n >\n {selectedOptions.length === 0 ? (\n <StyledPlaceholder\n $variant={variant}\n className={css('placeholder', classnames?.placeholder)}\n >\n {placeholder}\n </StyledPlaceholder>\n ) : (\n <>\n {visibleChips.map((opt) => (\n <Chip\n key={opt.value}\n variant={variant === 'error' ? 'red' : 'gray'}\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={variant === 'error' ? 'red' : 'gray'}\n onClick={(e) => e.stopPropagation()}\n className={css('chip', classnames?.chip)}\n >\n +{hiddenCount}\n </Chip>\n )}\n </>\n )}\n </StyledTrigger>\n {message && (\n <StyledMessage variant={variant} className={css('message')}>\n {message}\n </StyledMessage>\n )}\n\n <Modal open={isOpen} width=\"400px\" animated className={css('modal', classnames?.modal)}>\n <StyledModalContent ref={modalContentRef}>\n <StyledModalHeader>\n <StyledModalTitle>{modalTitle}</StyledModalTitle>\n <Button\n variant=\"transparent\"\n size=\"compact\"\n icon={<X />}\n keyBindings={['Escape']}\n onClick={handleClose}\n />\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 { 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 { FieldMessage } from '../FieldMessage'\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\nexport const StyledMessage = styled(FieldMessage)`\n margin-left: 6px;\n`\n","import { ChangeEvent, ClipboardEvent, KeyboardEvent, useCallback, useEffect, useRef } from 'react'\n\nimport {\n StyledContainer,\n StyledInput,\n StyledInputsWrapper,\n StyledLabel,\n StyledMessage,\n} 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 message,\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 {message && (\n <StyledMessage variant={variant} className={css('message')}>\n {message}\n </StyledMessage>\n )}\n </StyledContainer>\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 = <T extends string = string>({\n className,\n classnames,\n disabled,\n label,\n name,\n onChange,\n options,\n ref,\n value,\n variant = 'normal',\n ...rest\n}: RadioGroupProps<T>) => {\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 variant={variant}\n onChange={() => onChange(option.value)}\n />\n ))}\n </StyledOptions>\n </StyledContainer>\n )\n}\n","import { SelectVariant } from './types'\nimport { alpha, COLORS, VacanoComponentSize, VacanoInteractiveElementState } from '../../lib'\n\nexport const OPTION_HEIGHT = 40\nexport const OPTION_GAP = 2\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 { FieldMessage } from '../FieldMessage'\nimport { alpha, COLORS, VacanoComponentSize, Z_INDEX } 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 StyledMessage = styled(FieldMessage)`\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 display: grid;\n gap: 2px;\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`\n\nexport const StyledDropdown = styled.div`\n position: absolute;\n left: -4px;\n width: calc(100% + 8px);\n overflow: hidden;\n z-index: ${Z_INDEX.dropdown};\n ${dropdownStyles}\n`\n\nexport const StyledPortalDropdown = styled.div`\n position: fixed;\n overflow: hidden;\n z-index: ${Z_INDEX.portalDropdown};\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 min-width: 0;\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 & > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\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_GAP, OPTION_HEIGHT } from './constants'\nimport {\n StyledCheckmark,\n StyledChevron,\n StyledContainer,\n StyledDropdown,\n StyledLabel,\n StyledMessage,\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 message,\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 + OPTION_GAP) + 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 + OPTION_GAP) + DROPDOWN_PADDING\n\n let top = triggerRect.top - selectedOffset\n\n const dropdownHeight =\n options.length * OPTION_HEIGHT + (options.length - 1) * OPTION_GAP + 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 || options.length === 0) 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 && (\n <StyledLabel\n variant={variant === 'error' ? 'error' : 'normal'}\n className={css('label', classnames?.label)}\n >\n {label}\n </StyledLabel>\n )}\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 && options.length > 0 && 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 {message && <StyledMessage variant={variant}>{message}</StyledMessage>}\n </StyledContainer>\n )\n}\n","import { TagsVariant } from './types'\nimport { alpha, COLORS } from '../../lib'\n\ntype VariantProps = {\n border: string\n placeholder: string\n}\n\nexport const VARIANT_PROPS: Record<TagsVariant, VariantProps> = {\n normal: {\n border: COLORS['iron-grey'],\n placeholder: COLORS['iron-grey'],\n },\n error: {\n border: COLORS.red,\n placeholder: alpha(COLORS.red, 40),\n },\n}\n","import styled from '@emotion/styled'\n\nimport { VARIANT_PROPS } from './constants'\nimport { TagsVariant } from './types'\nimport { FieldLabel } from '../FieldLabel'\nimport { FieldMessage } from '../FieldMessage'\nimport { alpha, COLORS, Z_INDEX } 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)`\n margin-left: 6px;\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; $variant: TagsVariant }>`\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: ${(props) => VARIANT_PROPS[props.$variant].placeholder};\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n`\n\nconst dropdownStyles = `\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 z-index: ${Z_INDEX.dropdown};\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 z-index: ${Z_INDEX.portalDropdown};\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\nexport const StyledMessage = styled(FieldMessage)`\n margin-left: 6px;\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 StyledMessage,\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 message,\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 variant={variant === 'error' ? 'red' : 'gray'}\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 $variant={variant}\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 {message && (\n <StyledMessage variant={variant} className={css('message')}>\n {message}\n </StyledMessage>\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'\nimport { FieldMessage } from '../FieldMessage'\nimport { COLORS } from '../../lib'\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\nexport const StyledFooter = styled.div`\n display: flex;\n align-items: flex-start;\n gap: 8px;\n margin: 0 6px;\n`\n\nexport const StyledMessage = styled(FieldMessage)`\n flex: 1;\n min-width: 0;\n`\n\nexport const StyledCounter = styled.span<{ $variant: TextareaVariant }>`\n flex-shrink: 0;\n margin-left: auto;\n font-size: 12px;\n font-weight: 500;\n color: ${(props) => (props.$variant === 'error' ? COLORS.red : COLORS['iron-grey'])};\n`\n","import {\n StyledContainer,\n StyledCounter,\n StyledFooter,\n StyledLabel,\n StyledMessage,\n StyledTextarea,\n} from './styled'\nimport { TextareaProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('textarea')\n\nexport const Textarea = ({\n className,\n classnames,\n count,\n disabled,\n fullWidth,\n label,\n message,\n ref,\n value,\n variant = 'normal',\n rows = 4,\n ...rest\n}: TextareaProps) => {\n const length = typeof value === 'string' ? value.length : 0\n const showFooter = message || count !== undefined\n\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 value={value}\n disabled={disabled}\n $variant={variant}\n className={css('textarea', classnames?.textarea)}\n />\n {showFooter && (\n <StyledFooter>\n {message && (\n <StyledMessage variant={variant} className={css('message')}>\n {message}\n </StyledMessage>\n )}\n {count !== undefined && (\n <StyledCounter $variant={variant} className={css('counter')}>\n {length}/{count}\n </StyledCounter>\n )}\n </StyledFooter>\n )}\n </StyledContainer>\n )\n}\n","import { ToggleVariant } from './types'\nimport { alpha, COLORS } from '../../lib'\n\nexport const TOGGLE_VARIANT_PROPS: Record<\n ToggleVariant,\n {\n track: {\n background: string\n backgroundChecked: string\n border: string\n borderChecked: string\n }\n thumb: {\n background: string\n backgroundChecked: string\n }\n label: string\n }\n> = {\n normal: {\n track: {\n background: alpha(COLORS['iron-grey'], 20),\n backgroundChecked: COLORS['black'],\n border: alpha(COLORS['iron-grey'], 30),\n borderChecked: COLORS['black'],\n },\n thumb: {\n background: COLORS['white'],\n backgroundChecked: COLORS['white'],\n },\n label: COLORS['black'],\n },\n error: {\n track: {\n background: alpha(COLORS['red'], 15),\n backgroundChecked: COLORS['red'],\n border: COLORS['red'],\n borderChecked: COLORS['red'],\n },\n thumb: {\n background: COLORS['white'],\n backgroundChecked: COLORS['white'],\n },\n label: COLORS['red'],\n },\n}\n","import { TOGGLE_VARIANT_PROPS } from './constants'\nimport { ToggleVariant } from './types'\n\nexport const getToggleVariantProps = (variant: ToggleVariant) => {\n return TOGGLE_VARIANT_PROPS[variant] ?? TOGGLE_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getToggleVariantProps } from './helpers'\nimport { ToggleVariant } from './types'\n\ntype StyledContainerProps = {\n $disabled: boolean\n $variant: ToggleVariant\n}\n\ntype StyledTrackProps = {\n $checked: boolean\n $variant: ToggleVariant\n}\n\ntype StyledThumbProps = {\n $checked: boolean\n $variant: ToggleVariant\n}\n\ntype StyledLabelProps = {\n $variant: ToggleVariant\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 StyledTrack = styled.span<StyledTrackProps>`\n position: relative;\n flex-shrink: 0;\n width: 36px;\n height: 20px;\n border-radius: 10px;\n border: 1px solid\n ${(props) =>\n props.$checked\n ? getToggleVariantProps(props.$variant).track.borderChecked\n : getToggleVariantProps(props.$variant).track.border};\n background-color: ${(props) =>\n props.$checked\n ? getToggleVariantProps(props.$variant).track.backgroundChecked\n : getToggleVariantProps(props.$variant).track.background};\n transition:\n border-color 0.2s ease,\n background-color 0.2s ease;\n`\n\nexport const StyledThumb = styled.span<StyledThumbProps>`\n position: absolute;\n top: 2px;\n left: ${(props) => (props.$checked ? '18px' : '2px')};\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background-color: ${(props) =>\n props.$checked\n ? getToggleVariantProps(props.$variant).thumb.backgroundChecked\n : getToggleVariantProps(props.$variant).thumb.background};\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);\n transition: left 0.2s ease;\n`\n\nexport const StyledLabel = styled.span<StyledLabelProps>`\n font-size: 14px;\n font-weight: 500;\n line-height: 1.3;\n color: ${(props) => getToggleVariantProps(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 { StyledContainer, StyledInput, StyledLabel, StyledThumb, StyledTrack } from './styled'\nimport { ToggleProps } from './types'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('toggle')\n\nexport const Toggle = ({\n checked,\n className,\n classnames,\n disabled,\n label,\n onChange,\n ref,\n variant = 'normal',\n ...rest\n}: ToggleProps) => {\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 <StyledTrack\n className={css('track', classnames?.track)}\n $checked={checked}\n $variant={variant}\n >\n <StyledThumb\n className={css('thumb', classnames?.thumb)}\n $checked={checked}\n $variant={variant}\n />\n </StyledTrack>\n {label && (\n <StyledLabel className={css('label', classnames?.label)} $variant={variant}>\n {label}\n </StyledLabel>\n )}\n </StyledContainer>\n )\n}\n","import { ToggleCardVariant } from './types'\nimport { alpha, COLORS, VacanoInteractiveElementState } from '../../lib'\n\ntype ToggleCardVariantProps = {\n border: VacanoInteractiveElementState\n borderChecked: string\n background: VacanoInteractiveElementState\n backgroundChecked: string\n label: VacanoInteractiveElementState\n description: VacanoInteractiveElementState\n}\n\nexport const TOGGLE_CARD_VARIANT_PROPS: Record<ToggleCardVariant, ToggleCardVariantProps> = {\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 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 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 { TOGGLE_CARD_VARIANT_PROPS } from './constants'\nimport { ToggleCardVariant } from './types'\n\nexport const getToggleCardVariantProps = (variant: ToggleCardVariant) => {\n return TOGGLE_CARD_VARIANT_PROPS[variant] ?? TOGGLE_CARD_VARIANT_PROPS['normal']\n}\n","import styled from '@emotion/styled'\n\nimport { getToggleCardVariantProps } from './helpers'\nimport { ToggleCardVariant } from './types'\n\ntype StyledContainerProps = {\n $checked: boolean\n $disabled: boolean\n $fullWidth: boolean\n $variant: ToggleCardVariant\n}\n\ntype StyledLabelProps = {\n $variant: ToggleCardVariant\n}\n\ntype StyledDescriptionProps = {\n $variant: ToggleCardVariant\n}\n\nexport const StyledContainer = styled.label<StyledContainerProps>`\n display: grid;\n grid-template-columns: 1fr auto;\n align-items: start;\n gap: 8px;\n padding: 12px;\n background-color: ${(props) => {\n const variantProps = getToggleCardVariantProps(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 = getToggleCardVariantProps(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 = getToggleCardVariantProps(props.$variant)\n if (props.$checked) return variantProps.borderChecked\n return variantProps.border.hover\n }};\n }\n\n .vacano_toggle_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) => getToggleCardVariantProps(props.$variant).label.static};\n\n label[data-disabled='true'] & {\n color: ${(props) => getToggleCardVariantProps(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) => getToggleCardVariantProps(props.$variant).description.static};\n\n label[data-disabled='true'] & {\n color: ${(props) => getToggleCardVariantProps(props.$variant).description.disabled};\n }\n`\n","import {\n StyledContainer,\n StyledContent,\n StyledDescription,\n StyledInput,\n StyledLabel,\n} from './styled'\nimport { ToggleCardProps } from './types'\nimport { Toggle } from '../Toggle'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('toggle-card')\n\nexport const ToggleCard = ({\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}: ToggleCardProps) => {\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 <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 <Toggle\n className={classnames?.toggle}\n checked={checked}\n disabled={disabled}\n variant={variant}\n onChange={() => {}}\n tabIndex={-1}\n aria-hidden\n />\n </StyledContainer>\n )\n}\n","import { alpha, COLORS } from '../../lib'\n\nexport const TOGGLE_GROUP_PROPS = {\n label: {\n color: COLORS['black'],\n disabledColor: alpha(COLORS['black'], 40),\n },\n}\n","import styled from '@emotion/styled'\n\nimport { TOGGLE_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 ? TOGGLE_GROUP_PROPS.label.disabledColor : TOGGLE_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 { ToggleGroupProps } from './types'\nimport { Toggle } from '../Toggle'\nimport { newClassNameGetter } from '../../lib'\n\nconst css = newClassNameGetter('toggle-group')\n\nexport const ToggleGroup = ({\n className,\n classnames,\n disabled,\n label,\n onChange,\n options,\n ref,\n value,\n variant = 'normal',\n ...rest\n}: ToggleGroupProps) => {\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 <Toggle\n key={option.value}\n className={classnames?.toggle}\n checked={value.includes(option.value)}\n label={option.label}\n disabled={disabled}\n variant={variant}\n onChange={(e) => handleChange(option.value, e.target.checked)}\n />\n ))}\n </StyledOptions>\n </StyledContainer>\n )\n}\n"],"names":["_extends","n","e","t","r","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","css","newClassNameGetter","FieldLabel","children","required","variant","rest","jsxs","VARIANT_COLORS","StyledFieldMessage","FieldMessage","jsx","SIZE_PROPS","VARIANT_PROPS","alpha","StyledContainer","StyledLabel","StyledMessage","StyledInputWrapper","StyledInput","StyledSpinnerWrapper","dropdownStyles","StyledDropdown","Z_INDEX","$open","StyledPortalDropdown","StyledItem","StyledItemImage","StyledItemText","StyledEmpty","SPINNER_SIZE_PROPS","SPINNER_COLORS","getSpinnerSizeProps","size","spin","keyframes","StyledSpinner","Spinner","ariaLabel","DROPDOWN_GAP","Autocomplete","classnames","disabled","fullWidth","label","message","portalRenderNode","value","onChange","onSearch","debounceMs","minChars","noResultsMessage","inputValue","setInputValue","useState","suggestions","setSuggestions","isLoading","setIsLoading","isOpen","setIsOpen","hasSearched","setHasSearched","portalPosition","setPortalPosition","containerRef","useRef","dropdownRef","debounceRef","useEffect","handleSearch","useCallback","query","results","handleInputChange","newValue","handleSelect","suggestion","handleBlur","handleFocus","updatePortalPosition","rect","useLayoutEffect","handleScroll","handleResize","handleClickOutside","event","target","isOutsideContainer","isOutsideDropdown","dropdownOpen","dropdownContent","dropdown","createPortal","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","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","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","controlledOpen","onOpen","onClose","today","internalOpen","setInternalOpen","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","isOutsideCalendar","handleEscape","iconSize","renderDaysView","Fragment","ChevronLeft","ChevronRight","renderMonthsView","renderYearsView","renderCalendarContent","calendar","ChevronDown","INPUT_SIZE_PROPS","INPUT_VARIANT_PROPS","getInputVariantProps","getInputSizeProps","StyledInputContainer","StyledPrefix","Input","prefix","hasPrefix","input","StyledOverlay","Modal","animated","width","StyledPlaceholder","StyledModalContent","StyledModalHeader","StyledModalTitle","StyledOptionsList","StyledOption","StyledOptionLabel","MultiSelect","emptyMessage","maxVisible","modalTitle","searchPlaceholder","search","setSearch","modalContentRef","selectedOptions","opt","filteredOptions","visibleChips","hiddenCount","handleRemove","OTP_CODE_SIZE_PROPS","OTP_CODE_VARIANT_PROPS","getOtpCodeSizeProps","getOtpCodeVariantProps","StyledInputsWrapper","OtpCode","autoFocus","length","inputRefs","focusInput","index","digit","firstEmptyIndex","char","insertIndex","updatedValue","nextEmptyIndex","handleKeyDown","handlePaste","pastedData","nextIndex","_","el","RADIO_VARIANT_PROPS","getRadioVariantProps","StyledDot","Radio","RADIO_CARD_VARIANT_PROPS","getRadioCardVariantProps","RadioCard","RADIO_GROUP_PROPS","RadioGroup","name","OPTION_HEIGHT","OPTION_GAP","DROPDOWN_PADDING","SELECT_SIZE_PROPS","SELECT_VARIANT_PROPS","getSelectSizeProps","getSelectVariantProps","StyledChevron","StyledCheckmark","Select","selectedOption","selectedIndex","dropdownTop","selectedOffset","dropdownHeight","minTop","maxTop","renderOptions","node","getDropdownTransform","getDropdownTransition","Tags","createKey","freeSolo","inputRef","isFocused","setIsFocused","dropdownPosition","setDropdownPosition","available","showDropdown","updateDropdownPosition","addTag","tagValue","trimmed","matchingOption","handleOptionClick","handleContainerClick","getTagLabel","TEXTAREA_VARIANT_PROPS","getTextareaVariantProps","StyledTextarea","StyledFooter","StyledCounter","Textarea","count","rows","showFooter","TOGGLE_VARIANT_PROPS","getToggleVariantProps","StyledTrack","StyledThumb","Toggle","TOGGLE_CARD_VARIANT_PROPS","getToggleCardVariantProps","ToggleCard","TOGGLE_GROUP_PROPS","ToggleGroup"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|