astrum-ui 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Input/Input.css +1 -1
- package/dist/index.js +16 -16
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +16 -16
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/Button/Button.tsx","../src/ColorPicker/ColorPicker.tsx","../src/Radio/Radio.tsx","../src/Checkbox/Checkbox.tsx","../src/Toggler/Toggler.tsx","../src/Input/Input.tsx","../src/InputCode/InputCode.tsx","../src/Select/Select.tsx","../src/Chips/Chips.tsx","../src/FileUpload/FileUpload.tsx","../src/Avatar/Avatar.tsx","../src/DatePicker/DatePicker.tsx"],"sourcesContent":["export { Button } from \"./Button\";\nexport type { ButtonProps } from \"./Button\";\nexport { ColorPicker } from \"./ColorPicker\";\nexport type { ColorPickerProps } from \"./ColorPicker\";\nexport { Radio, RadioGroup } from \"./Radio\";\nexport type { RadioProps, RadioGroupProps } from \"./Radio\";\nexport { Checkbox } from \"./Checkbox\";\nexport type { CheckboxProps } from \"./Checkbox\";\nexport { Toggler } from \"./Toggler\";\nexport type { TogglerProps } from \"./Toggler\";\nexport { Input } from \"./Input\";\nexport type { InputProps, InputType, InputSize } from \"./Input\";\nexport { InputCode } from \"./InputCode\";\nexport type { InputCodeProps } from \"./InputCode\";\nexport { Select } from \"./Select\";\nexport type { SelectProps, SelectOption } from \"./Select\";\nexport { Chips } from \"./Chips\";\nexport type { ChipsProps } from \"./Chips\";\nexport { FileUpload, FileItem } from \"./FileUpload\";\nexport type { FileUploadProps, FileItemProps } from \"./FileUpload\";\nexport { Avatar } from \"./Avatar\";\nexport type { AvatarProps } from \"./Avatar\";\nexport { DatePicker } from \"./DatePicker\";\nexport type { DatePickerProps } from \"./DatePicker\";\n","import * as React from \"react\";\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: \"primary\" | \"outlined\" | \"dashed\" | \"grey\" | \"white\" | \"ghost\";\n size?: \"s\" | \"m\" | \"l\";\n icon?: React.ReactNode;\n iconPosition?: \"left\" | \"right\";\n shape?: \"default\" | \"square\" | \"circle\";\n children?: React.ReactNode;\n}\n\nconst variantStyles: Record<NonNullable<ButtonProps[\"variant\"]>, string> = {\n primary: \"astrum-btn-primary\",\n outlined: \"astrum-btn-outlined\",\n dashed: \"astrum-btn-dashed\",\n grey: \"astrum-btn-grey\",\n white: \"astrum-btn-white\",\n ghost: \"astrum-btn-ghost\",\n};\n\nconst sizeStyles: Record<NonNullable<ButtonProps[\"size\"]>, string> = {\n s: \"astrum-btn-s\",\n m: \"astrum-btn-m\",\n l: \"astrum-btn-l\",\n};\n\nconst shapeStyles: Record<NonNullable<ButtonProps[\"shape\"]>, string> = {\n default: \"\",\n square: \"astrum-btn-shape-square\",\n circle: \"astrum-btn-shape-circle\",\n};\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = \"primary\",\n size = \"m\",\n icon,\n iconPosition = \"right\",\n shape = \"default\",\n className = \"\",\n children,\n ...rest\n },\n ref\n ) => {\n const iconOnly = icon != null && (children == null || children === \"\");\n const effectiveShape = iconOnly && shape !== \"default\" ? shape : \"default\";\n const classes = [\n \"astrum-btn\",\n variantStyles[variant],\n sizeStyles[size],\n shapeStyles[effectiveShape],\n iconOnly ? \"astrum-btn-icon-only\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n const content = (\n <>\n {icon && iconPosition === \"left\" && <span className=\"astrum-btn-icon\">{icon}</span>}\n {children != null && children !== \"\" && <span className=\"astrum-btn-text\">{children}</span>}\n {icon && iconPosition === \"right\" && <span className=\"astrum-btn-icon\">{icon}</span>}\n </>\n );\n return (\n <button ref={ref} className={classes} type=\"button\" {...rest}>\n {content}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import * as React from \"react\";\n\nconst CHECK_ICON = (\n <svg width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\" aria-hidden>\n <path\n d=\"M1 5.5L4.5 9L11 1\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst DEFAULT_COLORS = [\n \"#E53935\",\n \"#FF9800\",\n \"#FDD835\",\n \"#8BC34A\",\n \"#4CAF50\",\n \"#009688\",\n \"#00BCD4\",\n \"#2196F3\",\n \"#7B1FA2\",\n \"#E91E63\",\n];\n\nexport interface ColorPickerProps {\n value?: string | null;\n onChange?: (color: string) => void;\n colors?: string[];\n disabled?: boolean;\n className?: string;\n \"aria-label\"?: string;\n}\n\nexport const ColorPicker = React.forwardRef<HTMLDivElement, ColorPickerProps>(\n (\n {\n value = null,\n onChange,\n colors = DEFAULT_COLORS,\n disabled = false,\n className = \"\",\n \"aria-label\": ariaLabel = \"Выбор цвета\",\n },\n ref\n ) => {\n const [hovered, setHovered] = React.useState<string | null>(null);\n\n return (\n <div\n ref={ref}\n className={`astrum-color-swatch-picker ${className}`.trim()}\n role=\"listbox\"\n aria-label={ariaLabel}\n aria-disabled={disabled}\n >\n {colors.map((color) => {\n const isSelected =\n value != null && value.toLowerCase() === color.toLowerCase();\n const isHovered = hovered === color && !disabled;\n\n return (\n <button\n key={color}\n type=\"button\"\n role=\"option\"\n aria-selected={isSelected}\n aria-label={color}\n disabled={disabled}\n className=\"astrum-color-swatch-picker__swatch\"\n style={{ [\"--astrum-swatch-color\" as string]: color }}\n data-selected={isSelected || undefined}\n data-hovered={isHovered || undefined}\n onClick={() => onChange?.(color)}\n onMouseEnter={() => setHovered(color)}\n onMouseLeave={() => setHovered(null)}\n >\n <span className=\"astrum-color-swatch-picker__check\" aria-hidden>\n {CHECK_ICON}\n </span>\n </button>\n );\n })}\n </div>\n );\n }\n);\n\nColorPicker.displayName = \"ColorPicker\";\n","import * as React from \"react\";\n\nexport interface RadioProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"type\"> {\n value: string;\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n ({ value, className = \"\", id: idProp, ...rest }, ref) => {\n const id = React.useId();\n const inputId = idProp ?? id;\n\n return (\n <label\n htmlFor={inputId}\n className={`astrum-radio ${className}`.trim()}\n >\n <input\n ref={ref}\n type=\"radio\"\n id={inputId}\n value={value}\n className=\"astrum-radio__input\"\n {...rest}\n />\n <span className=\"astrum-radio__circle\" aria-hidden />\n </label>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\n\nexport interface RadioGroupProps extends Omit<React.FieldsetHTMLAttributes<HTMLFieldSetElement>, \"onChange\"> {\n name: string;\n value?: string | null;\n onChange?: (value: string) => void;\n children: React.ReactNode;\n}\n\nexport const RadioGroup = React.forwardRef<HTMLFieldSetElement, RadioGroupProps>(\n ({ name, value, onChange, children, ...rest }, ref) => {\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e.target.value);\n },\n [onChange]\n );\n\n return (\n <fieldset ref={ref} className=\"astrum-radio-group\" {...rest}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === Radio) {\n return React.cloneElement(child as React.ReactElement<RadioProps>, {\n name,\n checked: value != null && child.props.value === value,\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n (child.props as RadioProps & { onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void }).onChange?.(e);\n handleChange(e);\n },\n });\n }\n return child;\n })}\n </fieldset>\n );\n }\n);\n\nRadioGroup.displayName = \"RadioGroup\";\n","import * as React from \"react\";\n\nconst CHECK_ICON = (\n <svg width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\" aria-hidden>\n <path\n d=\"M1 5.5L4.5 9L11 1\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst MINUS_ICON = (\n <svg width=\"10\" height=\"2\" viewBox=\"0 0 10 2\" fill=\"none\" aria-hidden>\n <path d=\"M1 1h8\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"type\" | \"onChange\"> {\n checked?: boolean;\n indeterminate?: boolean;\n onChange?: (checked: boolean) => void;\n className?: string;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n checked: checkedProp,\n indeterminate = false,\n disabled = false,\n onChange,\n className = \"\",\n id: idProp,\n ...rest\n },\n ref\n ) => {\n const { defaultChecked, ...restInput } = rest;\n const isControlled = checkedProp !== undefined;\n const checked = checkedProp ?? false;\n const [internalChecked, setInternalChecked] = React.useState(defaultChecked ?? false);\n const isChecked = (isControlled ? checked : internalChecked) || indeterminate;\n const id = React.useId();\n const inputId = idProp ?? id;\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const setRef = React.useCallback(\n (el: HTMLInputElement | null) => {\n inputRef.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n },\n [ref]\n );\n\n React.useEffect(() => {\n const el = inputRef.current;\n if (el) el.indeterminate = indeterminate;\n }, [indeterminate]);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n if (!isControlled) setInternalChecked(e.target.checked);\n onChange?.(e.target.checked);\n },\n [disabled, isControlled, onChange]\n );\n\n return (\n <label\n htmlFor={inputId}\n className={[\n \"astrum-checkbox\",\n \"astrum-checkbox--m\",\n isChecked ? \"astrum-checkbox--checked\" : \"\",\n indeterminate ? \"astrum-checkbox--indeterminate\" : \"\",\n disabled ? \"astrum-checkbox--disabled\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <input\n ref={setRef}\n type=\"checkbox\"\n id={inputId}\n className=\"astrum-checkbox__input\"\n {...(isControlled ? { checked } : { defaultChecked })}\n disabled={disabled}\n onChange={handleChange}\n aria-checked={indeterminate ? \"mixed\" : (isControlled ? checked : internalChecked)}\n {...restInput}\n />\n <span className=\"astrum-checkbox__box\" aria-hidden>\n {isChecked && (\n <span className=\"astrum-checkbox__icon\" aria-hidden>\n {indeterminate ? MINUS_ICON : CHECK_ICON}\n </span>\n )}\n </span>\n </label>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n","import * as React from \"react\";\n\nexport interface TogglerProps {\n checked?: boolean;\n disabled?: boolean;\n onChange?: (checked: boolean) => void;\n className?: string;\n}\n\nexport const Toggler = React.forwardRef<HTMLInputElement, TogglerProps>(\n ({ checked: checkedProp, disabled = false, onChange, className = \"\" }, ref) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const isControlled = checkedProp !== undefined;\n const checked = isControlled ? checkedProp : internalChecked;\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!disabled) {\n if (!isControlled) {\n setInternalChecked(e.target.checked);\n }\n onChange?.(e.target.checked);\n }\n },\n [disabled, onChange, isControlled]\n );\n\n const classes = [\n \"astrum-toggler\",\n checked && \"astrum-toggler--checked\",\n disabled && \"astrum-toggler--disabled\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label className={classes}>\n <input\n ref={ref}\n type=\"checkbox\"\n checked={isControlled ? checked : undefined}\n onChange={handleChange}\n disabled={disabled}\n className=\"astrum-toggler__input\"\n />\n <span className=\"astrum-toggler__track\">\n <span className=\"astrum-toggler__thumb\"></span>\n </span>\n </label>\n );\n }\n);\n\nToggler.displayName = \"Toggler\";\n","import * as React from \"react\";\n\nconst SearchIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"11.0586\" cy=\"11.0586\" r=\"7.06194\" stroke=\"#ABABAB\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M20.0033 20.0034L16.0517 16.0518\" stroke=\"#ABABAB\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n);\n\nconst ClearIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6.00037 6.00024L18.0004 18.0002\" stroke=\"#ABABAB\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M18.0004 6.00024L6.00037 18.0002\" stroke=\"#ABABAB\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst EyeOpenIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3 11.5455C3 11.5455 6.27273 5 12 5C17.7273 5 21 11.5455 21 11.5455C21 11.5455 17.7273 18.0909 12 18.0909C6.27273 18.0909 3 11.5455 3 11.5455Z\" stroke=\"#ABABAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M12 14C13.3556 14 14.4545 12.9011 14.4545 11.5455C14.4545 10.1898 13.3556 9.09091 12 9.09091C10.6444 9.09091 9.54545 10.1898 9.54545 11.5455C9.54545 12.9011 10.6444 14 12 14Z\" stroke=\"#ABABAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n);\n\nconst EyeClosedIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M16.86 16.86C15.4614 17.9261 13.7584 18.5167 12 18.5455C6.27273 18.5455 3 12 3 12C4.01773 10.1034 5.42929 8.44632 7.14 7.14M10.2818 5.65091C10.845 5.51908 11.4216 5.45319 12 5.45455C17.7273 5.45455 21 12 21 12C20.5033 12.9291 19.911 13.8039 19.2327 14.61M13.7345 13.7345C13.5098 13.9757 13.2388 14.1691 12.9378 14.3033C12.6367 14.4374 12.3116 14.5096 11.9821 14.5154C11.6525 14.5212 11.3251 14.4606 11.0195 14.3371C10.7139 14.2137 10.4362 14.0299 10.2031 13.7969C9.97007 13.5638 9.78632 13.2861 9.66287 12.9805C9.53942 12.6749 9.47879 12.3475 9.48461 12.0179C9.49042 11.6884 9.56256 11.3633 9.69672 11.0622C9.83087 10.7612 10.0243 10.4902 10.2655 10.2655M3 3L21 21\" stroke=\"#ABABAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n);\n\nexport type InputType = \"text\" | \"tel\" | \"email\" | \"number\" | \"password\" | \"search\";\n\nexport type InputSize = \"s\" | \"m\";\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n type?: InputType;\n name?: string;\n required?: boolean;\n label?: string;\n placeholder?: string;\n error?: string;\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n disabled?: boolean;\n size?: InputSize;\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = \"text\",\n name,\n required = false,\n label,\n placeholder,\n error,\n value,\n onChange,\n disabled,\n size = \"m\",\n className = \"\",\n id: idProp,\n defaultValue,\n ...rest\n },\n ref\n ) => {\n const id = React.useId();\n const inputId = idProp ?? id;\n const [isPasswordVisible, setIsPasswordVisible] = React.useState(false);\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? \"\");\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const combinedRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref]\n );\n\n const wrapClasses = [\n \"astrum-input__wrap\",\n type === \"search\" && \"astrum-input__wrap--search\",\n type === \"password\" && \"astrum-input__wrap--password\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n const inputType = type === \"password\" && isPasswordVisible ? \"text\" : type;\n\n const sizeClass = size === \"s\" ? \"astrum-input--s\" : \"astrum-input--m\";\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n const hasValue = currentValue != null && currentValue !== \"\";\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(e.target.value);\n }\n onChange?.(e);\n },\n [onChange, isControlled]\n );\n\n const handleClear = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!inputRef.current) return;\n inputRef.current.value = \"\";\n if (isControlled && onChange) {\n const syntheticEvent = {\n ...e,\n target: inputRef.current,\n currentTarget: inputRef.current,\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n } else {\n setInternalValue(\"\");\n if (onChange) {\n const syntheticEvent = {\n ...e,\n target: inputRef.current,\n currentTarget: inputRef.current,\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n }\n }\n inputRef.current.focus();\n },\n [onChange, isControlled]\n );\n\n return (\n <div\n className={`astrum-input ${sizeClass} ${error ? \"astrum-input--error\" : \"\"} ${className}`.trim()}\n >\n {label != null && (\n <label htmlFor={inputId} className=\"astrum-input__label\">\n {label}\n </label>\n )}\n <div className={wrapClasses}>\n {required && \n <span className=\"astrum-input__required-icon\" aria-hidden>\n <svg width=\"7\" height=\"6\" viewBox=\"0 0 7 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.21831 3.52817L0 3.57042V2.47183L2.21831 2.53521L1.03521 0.59155L2.07042 0L3.19014 1.90141L4.28873 0L5.28169 0.59155L4.07746 2.53521L6.25352 2.47183V3.57042L4.09859 3.52817L5.26056 5.42958L4.26761 6L3.14789 4.07747L2.02817 6L1.01408 5.40845L2.21831 3.52817Z\" fill=\"#ABABAB\" />\n </svg>\n </span>\n }\n\n <input\n ref={combinedRef}\n id={inputId}\n type={inputType}\n name={name}\n placeholder={placeholder}\n value={isControlled ? value : undefined}\n defaultValue={isControlled ? undefined : defaultValue}\n onChange={handleChange}\n required={required}\n disabled={disabled}\n className={`astrum-input__field ${error ? \"astrum-input__field--invalid\" : \"\"}`.trim()}\n aria-invalid={!!error}\n aria-required={required}\n aria-describedby={error ? `${inputId}-error` : undefined}\n {...rest}\n />\n\n {type === \"search\" && (\n <>\n {hasValue ? (\n <button\n type=\"button\"\n className=\"astrum-input__clear-icon\"\n onClick={handleClear}\n tabIndex={-1}\n aria-label=\"Очистить\"\n >\n <ClearIcon />\n </button>\n ) : (\n <span className=\"astrum-input__search-icon\" aria-hidden>\n <SearchIcon />\n </span>\n )}\n </>\n )}\n {type === \"password\" && (\n <button\n type=\"button\"\n className=\"astrum-input__password-toggle\"\n onClick={() => setIsPasswordVisible((prev) => !prev)}\n tabIndex={-1}\n aria-label={isPasswordVisible ? \"Скрыть пароль\" : \"Показать пароль\"}\n >\n {isPasswordVisible ? <EyeOpenIcon /> : <EyeClosedIcon />}\n </button>\n )}\n </div>\n\n {error != null && (\n <span id={`${inputId}-error`} className=\"astrum-input__error\" role=\"alert\">\n {error}\n </span>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n","import * as React from \"react\";\nimport \"./InputCode.css\";\n\nconst LENGTH = 6;\n\nfunction normalizeValue(s: string): string {\n return s.replace(/\\D/g, \"\").slice(0, LENGTH);\n}\n\nexport interface InputCodeProps {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onComplete?: (value: string) => void;\n error?: string;\n required?: boolean;\n disabled?: boolean;\n id?: string;\n className?: string;\n}\n\nexport const InputCode = React.forwardRef<HTMLDivElement, InputCodeProps>(\n (\n {\n value: valueProp,\n defaultValue = \"\",\n onChange,\n onComplete,\n error,\n required,\n disabled = false,\n id: idProp,\n className = \"\",\n },\n ref\n ) => {\n const id = React.useId();\n const rootId = idProp ?? id;\n const [internalValue, setInternalValue] = React.useState(() =>\n normalizeValue(defaultValue)\n );\n const value = valueProp !== undefined ? normalizeValue(valueProp) : internalValue;\n const digits = value.split(\"\");\n while (digits.length < LENGTH) digits.push(\"\");\n\n const inputRefs = React.useRef<(HTMLInputElement | null)[]>([]);\n for (let i = 0; i < LENGTH; i++) {\n if (!inputRefs.current[i]) {\n inputRefs.current[i] = null;\n }\n }\n\n const setValue = React.useCallback(\n (next: string) => {\n const normalized = normalizeValue(next);\n if (valueProp === undefined) setInternalValue(normalized);\n onChange?.(normalized);\n if (normalized.length === LENGTH) onComplete?.(normalized);\n },\n [valueProp, onChange, onComplete]\n );\n\n React.useEffect(() => {\n if (value.length === LENGTH && onComplete) {\n onComplete(value);\n }\n }, [value, onComplete]);\n\n React.useEffect(() => {\n inputRefs.current.forEach((ref, index) => {\n if (ref) {\n ref.value = digits[index] || \"\";\n }\n });\n }, [value, digits]);\n\n const handleInput = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>, index: number) => {\n const input = e.target;\n const previousInput = inputRefs.current[index - 1];\n const nextInput = inputRefs.current[index + 1];\n\n const newCode = [...digits];\n const char = normalizeValue(input.value);\n \n if (char) {\n newCode[index] = char;\n setValue(newCode.join(\"\"));\n input.select();\n \n if (nextInput) {\n nextInput.focus();\n nextInput.select();\n }\n } else {\n newCode[index] = \"\";\n setValue(newCode.join(\"\"));\n \n if (previousInput) {\n previousInput.focus();\n previousInput.select();\n }\n }\n },\n [digits, setValue]\n );\n\n const handleFocus = React.useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n e.target.select();\n },\n []\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>, index: number) => {\n const input = e.target as HTMLInputElement;\n const previousInput = inputRefs.current[index - 1];\n\n if ((e.key === \"Backspace\" || e.key === \"Delete\") && !input.value && index > 0) {\n e.preventDefault();\n const newCode = [...digits];\n newCode[index - 1] = \"\";\n setValue(newCode.join(\"\"));\n if (previousInput) {\n previousInput.focus();\n previousInput.select();\n }\n }\n },\n [digits, setValue]\n );\n\n const handlePaste = React.useCallback(\n (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedCode = normalizeValue(e.clipboardData.getData(\"text\"));\n if (pastedCode.length === LENGTH) {\n setValue(pastedCode);\n inputRefs.current.forEach((inputRef, index) => {\n if (inputRef) {\n inputRef.value = pastedCode[index] || \"\";\n }\n });\n const lastInput = inputRefs.current[LENGTH - 1];\n if (lastInput) {\n lastInput.focus();\n lastInput.select();\n }\n } else if (pastedCode.length > 0) {\n const activeIndex = inputRefs.current.findIndex(\n (ref) => ref === document.activeElement\n );\n if (activeIndex >= 0) {\n const newCode = [...digits];\n for (let i = 0; i < pastedCode.length && activeIndex + i < LENGTH; i++) {\n newCode[activeIndex + i] = pastedCode[i];\n }\n setValue(newCode.join(\"\"));\n const nextIndex = Math.min(activeIndex + pastedCode.length, LENGTH - 1);\n const nextInput = inputRefs.current[nextIndex];\n if (nextInput) {\n nextInput.focus();\n nextInput.select();\n }\n }\n }\n },\n [digits, setValue]\n );\n\n return (\n <div\n ref={ref}\n id={rootId}\n className={`astrum-input-code ${error ? \"astrum-input-code--error\" : \"\"} ${className}`.trim()}\n >\n <div className=\"astrum-input-code__wrap\">\n {digits.map((digit, index) => (\n <input\n key={index}\n ref={(el) => {\n inputRefs.current[index] = el;\n }}\n id={index === 0 ? `${rootId}-0` : undefined}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete={index === 0 ? \"one-time-code\" : \"off\"}\n maxLength={1}\n className={`astrum-input-code__cell ${index === 3 ? \"astrum-input-code__cell--spaced\" : \"\"}`.trim()}\n value={digit}\n onChange={(e) => handleInput(e, index)}\n onFocus={handleFocus}\n onKeyDown={(e) => handleKeyDown(e, index)}\n onPaste={handlePaste}\n disabled={disabled}\n aria-invalid={!!error}\n aria-required={required}\n aria-describedby={error ? `${rootId}-error` : undefined}\n />\n ))}\n </div>\n {error != null && (\n <div className=\"astrum-input-code__footer\">\n <span\n id={`${rootId}-error`}\n className=\"astrum-input-code__error\"\n role=\"alert\"\n >\n {error}\n </span>\n </div>\n )}\n </div>\n );\n }\n);\n\nInputCode.displayName = \"InputCode\";\n","import * as React from \"react\";\n\nconst ChevronDownIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M6 9L12 15L18 9\" stroke=\"#5988FF\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n);\n\nexport interface SelectOption {\n value: string;\n label: React.ReactNode;\n secondaryLabel?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, \"size\"> {\n error?: string;\n required?: boolean;\n options: SelectOption[];\n placeholder?: string;\n className?: string;\n}\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n error,\n required,\n options,\n placeholder,\n className = \"\",\n id: idProp,\n value,\n defaultValue,\n onChange,\n disabled,\n ...rest\n },\n ref\n ) => {\n const id = React.useId();\n const selectId = idProp ?? id;\n const [isOpen, setIsOpen] = React.useState(false);\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? \"\");\n const selectRef = React.useRef<HTMLSelectElement | null>(null);\n const dropdownRef = React.useRef<HTMLDivElement | null>(null);\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n\n const setRef = React.useCallback(\n (el: HTMLSelectElement | null) => {\n selectRef.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n },\n [ref]\n );\n\n const currentValue = value !== undefined ? value : internalValue;\n const selectedOption = currentValue ? options.find((opt) => opt.value === currentValue) : null;\n const displayValue = selectedOption ? selectedOption.label : placeholder ?? \"\";\n\n React.useEffect(() => {\n if (value === undefined) setInternalValue(defaultValue ?? \"\");\n }, [value, defaultValue]);\n\n React.useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.target as Node) &&\n dropdownRef.current &&\n !dropdownRef.current.contains(e.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }\n }, [isOpen]);\n\n const handleOptionClick = (optionValue: string) => {\n if (selectRef.current) {\n if (value === undefined) setInternalValue(optionValue);\n const nativeEvent = new Event(\"change\", { bubbles: true });\n Object.defineProperty(nativeEvent, \"target\", {\n writable: false,\n value: selectRef.current,\n });\n selectRef.current.value = optionValue;\n selectRef.current.dispatchEvent(nativeEvent);\n const reactEvent = {\n ...nativeEvent,\n target: selectRef.current,\n currentTarget: selectRef.current,\n } as unknown as React.ChangeEvent<HTMLSelectElement>;\n onChange?.(reactEvent);\n }\n setIsOpen(false);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setIsOpen(!isOpen);\n } else if (e.key === \"Escape\") {\n setIsOpen(false);\n } else if (e.key === \"ArrowDown\" && !isOpen) {\n e.preventDefault();\n setIsOpen(true);\n }\n };\n\n return (\n <div ref={containerRef} className=\"astrum-select__container\">\n <div\n className={`astrum-select ${error ? \"astrum-select--error\" : \"\"} ${isOpen ? \"astrum-select--open\" : \"\"} ${className}`.trim()}\n >\n <div className=\"astrum-select__wrap\">\n <select\n ref={setRef}\n id={selectId}\n className=\"astrum-select__field\"\n value={value !== undefined ? value : undefined}\n defaultValue={value === undefined ? defaultValue : undefined}\n onChange={(e) => {\n if (value === undefined) setInternalValue(e.target.value);\n onChange?.(e);\n setIsOpen(false);\n }}\n onMouseDown={(e) => {\n e.preventDefault();\n if (!disabled) setIsOpen(!isOpen);\n }}\n onClick={(e) => {\n e.preventDefault();\n if (!disabled) setIsOpen(!isOpen);\n }}\n disabled={disabled}\n aria-invalid={!!error}\n aria-required={required}\n aria-describedby={error ? `${selectId}-error` : undefined}\n aria-expanded={isOpen}\n {...rest}\n >\n {placeholder && (\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n )}\n {options.map((option) => (\n <option key={option.value} value={option.value} disabled={option.disabled}>\n {typeof option.label === \"string\" ? option.label : option.value}\n </option>\n ))}\n </select>\n <button\n type=\"button\"\n className=\"astrum-select__trigger\"\n onClick={() => !disabled && setIsOpen(!isOpen)}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n aria-label=\"Открыть список\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n >\n <span className={`astrum-select__value ${!selectedOption && placeholder ? \"astrum-select__value--placeholder\" : \"\"}`}>\n {displayValue}\n </span>\n <span className={`astrum-select__chevron ${isOpen ? \"astrum-select__chevron--open\" : \"\"}`}>\n <ChevronDownIcon />\n </span>\n </button>\n </div>\n {error != null && (\n <div className=\"astrum-select__footer\">\n <span id={`${selectId}-error`} className=\"astrum-select__error\" role=\"alert\">\n {error}\n </span>\n </div>\n )}\n </div>\n {isOpen && (\n <div ref={dropdownRef} className=\"astrum-select__dropdown\" role=\"listbox\">\n {options.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n role=\"option\"\n aria-selected={option.value === currentValue}\n className={`astrum-select__option ${option.value === currentValue ? \"astrum-select__option--selected\" : \"\"} ${option.disabled ? \"astrum-select__option--disabled\" : \"\"} ${option.secondaryLabel != null ? \"astrum-select__option--two-line\" : \"\"}`}\n onClick={() => !option.disabled && handleOptionClick(option.value)}\n disabled={option.disabled}\n >\n <span className=\"astrum-select__option-label\">{option.label}</span>\n {option.secondaryLabel != null && (\n <span className=\"astrum-select__option-caption\">{option.secondaryLabel}</span>\n )}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n","import * as React from \"react\";\n\nconst CloseIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" aria-hidden>\n <path\n d=\"M3 3l6 6M9 3l-6 6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nexport interface ChipsProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"size\"> {\n children: React.ReactNode;\n size?: \"s\" | \"m\";\n onRemove?: () => void;\n}\n\nexport const Chips = React.forwardRef<HTMLButtonElement, ChipsProps>(\n (\n {\n children,\n size = \"s\",\n onRemove,\n className = \"\",\n onClick,\n ...rest\n },\n ref\n ) => {\n const handleRemove = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onRemove?.();\n },\n [onRemove]\n );\n\n const handleClick = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n if (onRemove && e.target === e.currentTarget) {\n return;\n }\n onClick?.(e);\n },\n [onClick, onRemove]\n );\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={`astrum-chips ${size === \"s\" ? \"astrum-chips--s\" : \"astrum-chips--m\"} ${className}`.trim()}\n onClick={handleClick}\n {...rest}\n >\n <span className=\"astrum-chips__text\">{children}</span>\n <button\n type=\"button\"\n className=\"astrum-chips__remove\"\n onClick={handleRemove}\n aria-label=\"Удалить\"\n >\n <CloseIcon />\n </button>\n </button>\n );\n }\n);\n\nChips.displayName = \"Chips\";\n","import * as React from \"react\";\nimport { Button } from \"../Button\";\n\nconst UploadIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"64\" viewBox=\"0 0 64 64\" fill=\"none\">\n <path d=\"M12.2666 53.1766C12.2666 54.7295 13.5372 56.0001 15.0901 56.0001H48.9725C50.5254 56.0001 51.796 54.7295 51.796 53.1766C51.796 51.6236 50.5254 50.353 48.9725 50.353H15.0901C13.5372 50.353 12.2666 51.6236 12.2666 53.1766Z\" fill=\"#D5D5D5\"/>\n <path d=\"M44.9917 26.6142H40.5023V40.7319C40.5023 42.2848 39.2317 43.5554 37.6787 43.5554H26.3846C24.8317 43.5554 23.5611 42.2848 23.5611 40.7319V26.6142H19.0717C16.5587 26.6142 15.2881 23.5648 17.067 21.786L30.027 8.82601C31.1281 7.72483 32.907 7.72483 34.0081 8.82601L46.9681 21.786C48.747 23.5648 47.5046 26.6142 44.9917 26.6142Z\" fill=\"#D5D5D5\"/>\n </svg>\n);\n\nconst FileIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 3.8C9 3.32261 9.18964 2.86477 9.52721 2.52721C9.86477 2.18964 10.3226 2 10.8 2H15.4548C15.932 2.00042 16.3896 2.19034 16.7268 2.528L20.4732 6.272C20.6405 6.43937 20.7731 6.63808 20.8635 6.85675C20.9539 7.07543 21.0003 7.30978 21 7.5464V14.6C21 15.0774 20.8104 15.5352 20.4728 15.8728C20.1352 16.2104 19.6774 16.4 19.2 16.4H18V12.3452C17.9998 11.3905 17.6204 10.475 16.9452 9.8L13.2 6.0548C12.525 5.37962 11.6095 5.0002 10.6548 5H9V3.8Z\" fill=\"#2653f2\"/>\n <path d=\"M4.95 7C4.43283 7 3.93684 7.19755 3.57114 7.54918C3.20545 7.90081 3 8.37772 3 8.875V20.125C3 20.6223 3.20545 21.0992 3.57114 21.4508C3.93684 21.8025 4.43283 22 4.95 22H14.05C14.5672 22 15.0632 21.8025 15.4289 21.4508C15.7946 21.0992 16 20.6223 16 20.125V12.7763C15.9995 12.2791 15.7938 11.8025 15.428 11.4513L11.372 7.54875C11.1907 7.37452 10.9754 7.23637 10.7385 7.14221C10.5016 7.04805 10.2477 6.99973 9.9914 7H4.95Z\" fill=\"#2653f2\"/>\n </svg>\n);\n\nconst CloseIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M6.00049 6L18.0005 18\" stroke=\"#818181\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M18.0005 6L6.00049 18\" stroke=\"#818181\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n);\n\nexport interface FileUploadProps {\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n size?: \"large\" | \"compact\";\n label?: string;\n description?: string;\n buttonText?: string;\n onChange?: (files: FileList | null) => void;\n className?: string;\n}\n\nexport const FileUpload = React.forwardRef<HTMLInputElement, FileUploadProps>(\n (\n {\n accept,\n multiple = false,\n disabled = false,\n size = \"large\",\n label,\n description,\n buttonText = \"Выберите файлы\",\n onChange,\n className = \"\",\n },\n ref\n ) => {\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const [isDragging, setIsDragging] = React.useState(false);\n const [files, setFiles] = React.useState<FileList | null>(null);\n\n const setRef = React.useCallback(\n (el: HTMLInputElement | null) => {\n inputRef.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n },\n [ref]\n );\n\n const handleDragEnter = React.useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (!disabled) setIsDragging(true);\n }, [disabled]);\n\n const handleDragLeave = React.useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n }, []);\n\n const handleDragOver = React.useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n const handleDrop = React.useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n\n if (disabled) return;\n\n const droppedFiles = e.dataTransfer.files;\n if (droppedFiles.length > 0) {\n setFiles(droppedFiles);\n onChange?.(droppedFiles);\n }\n },\n [disabled, onChange]\n );\n\n const handleFileChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const selectedFiles = e.target.files;\n if (selectedFiles && selectedFiles.length > 0) {\n setFiles(selectedFiles);\n onChange?.(selectedFiles);\n }\n },\n [onChange]\n );\n\n const handleButtonClick = React.useCallback(() => {\n if (!disabled && inputRef.current) {\n inputRef.current.click();\n }\n }, [disabled]);\n\n const isPdf = accept?.toLowerCase().includes(\"pdf\");\n const defaultLabel = label ?? (isPdf ? \"Выберите PDF-файлы\" : \"Выберите файлы\");\n const defaultDescription =\n description ??\n (size === \"large\"\n ? isPdf\n ? \"Перетащите PDF-файлы сюда или выберите их, щелкнув мышью.\"\n : \"Перетащите файлы сюда или выберите их, щелкнув мышью.\"\n : \"Выберите файл или перетащите сюда\");\n\n return (\n <div\n className={`astrum-file-upload ${size === \"compact\" ? \"astrum-file-upload--compact\" : \"astrum-file-upload--large\"} ${isDragging ? \"astrum-file-upload--dragging\" : \"\"} ${disabled ? \"astrum-file-upload--disabled\" : \"\"} ${className}`.trim()}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <input\n ref={setRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleFileChange}\n className=\"astrum-file-upload__input\"\n aria-label={defaultLabel}\n />\n {size === \"large\" ? (\n <>\n <div className=\"astrum-file-upload__icon\">\n <UploadIcon />\n </div>\n <div className=\"astrum-file-upload__label\">{defaultLabel}</div>\n <div className=\"astrum-file-upload__description\">{defaultDescription}</div>\n <Button variant=\"primary\" size=\"m\" onClick={handleButtonClick} disabled={disabled}>\n {buttonText}\n </Button>\n </>\n ) : (\n <div className=\"astrum-file-upload__compact-content\">\n <span className=\"astrum-file-upload__compact-text\">\n <button\n type=\"button\"\n className=\"astrum-file-upload__compact-link\"\n onClick={handleButtonClick}\n disabled={disabled}\n >\n Выберите файл\n </button>{\" \"}\n или перетащите сюда\n </span>\n </div>\n )}\n </div>\n );\n }\n);\n\nFileUpload.displayName = \"FileUpload\";\n\nconst IMAGE_TYPES = /^image\\//i;\n\nexport interface FileItemProps {\n name: string;\n size?: number | string;\n file?: File;\n previewUrl?: string | null;\n icon?: React.ReactNode;\n onRemove?: () => void;\n className?: string;\n}\n\nexport const FileItem = React.forwardRef<HTMLDivElement, FileItemProps>(\n ({ name, size, file, previewUrl: previewUrlProp, icon, onRemove, className = \"\" }, ref) => {\n const [objectUrl, setObjectUrl] = React.useState<string | null>(null);\n\n React.useEffect(() => {\n if (previewUrlProp != null || !file || !IMAGE_TYPES.test(file.type)) return;\n const url = URL.createObjectURL(file);\n setObjectUrl(url);\n return () => {\n URL.revokeObjectURL(url);\n setObjectUrl(null);\n };\n }, [file, previewUrlProp]);\n\n const previewUrl = previewUrlProp ?? objectUrl;\n const showPreview = previewUrl != null && previewUrl !== \"\";\n\n const formatSize = React.useCallback((sizeValue: number | string | undefined) => {\n if (!sizeValue) return \"\";\n if (typeof sizeValue === \"string\") return sizeValue;\n if (sizeValue < 1024) return `${sizeValue} B`;\n if (sizeValue < 1024 * 1024) return `${(sizeValue / 1024).toFixed(0)} KB`;\n return `${(sizeValue / (1024 * 1024)).toFixed(1)} MB`;\n }, []);\n\n return (\n <div ref={ref} className={`astrum-file-item ${className}`.trim()}>\n <div className=\"astrum-file-item__preview-wrap\">\n {showPreview ? (\n <img\n src={previewUrl}\n alt=\"\"\n className=\"astrum-file-item__preview\"\n decoding=\"async\"\n />\n ) : (\n <span className=\"astrum-file-item__icon\">{icon ?? <FileIcon />}</span>\n )}\n </div>\n <div className=\"astrum-file-item__content\">\n <div className=\"astrum-file-item__name\">{name}</div>\n {size != null && <div className=\"astrum-file-item__size\">{formatSize(size)}</div>}\n </div>\n <button\n type=\"button\"\n className=\"astrum-file-item__remove\"\n onClick={onRemove}\n aria-label=\"Удалить файл\"\n disabled={onRemove == null}\n >\n <CloseIcon />\n </button>\n </div>\n );\n }\n);\n\nFileItem.displayName = \"FileItem\";\n","import * as React from \"react\";\nimport \"./Avatar.css\";\n\nfunction cn(\n ...args: (string | undefined | false | Record<string, boolean | undefined>)[]\n): string {\n return args\n .flatMap((x) =>\n typeof x === \"object\" && x !== null\n ? Object.entries(x)\n .filter(([, v]) => v)\n .map(([k]) => k)\n : x\n )\n .filter(Boolean)\n .join(\" \");\n}\n\nconst UserIcon = () => (\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M16 4C13.6266 4 11.3066 4.70379 9.33316 6.02236C7.35977 7.34094 5.8217 9.21508 4.91345 11.4078C4.0052 13.6005 3.76756 16.0133 4.23058 18.3411C4.6936 20.6689 5.83649 22.807 7.51472 24.4853C9.19295 26.1635 11.3311 27.3064 13.6589 27.7694C15.9867 28.2324 18.3995 27.9948 20.5922 27.0865C22.7849 26.1783 24.6591 24.6402 25.9776 22.6668C27.2962 20.6934 28 18.3734 28 16C27.9988 12.8178 26.7342 9.76618 24.484 7.51599C22.2338 5.2658 19.1822 4.00115 16 4ZM16 8.8C16.5807 8.8 17.1483 8.97219 17.6312 9.2948C18.114 9.61742 18.4903 10.076 18.7125 10.6124C18.9347 11.1489 18.9929 11.7393 18.8796 12.3088C18.7663 12.8783 18.4867 13.4015 18.0761 13.8121C17.6655 14.2227 17.1423 14.5023 16.5728 14.6156C16.0033 14.7289 15.4129 14.6707 14.8764 14.4485C14.34 14.2263 13.8814 13.85 13.5588 13.3672C13.2362 12.8843 13.064 12.3167 13.064 11.736C13.0645 10.9575 13.374 10.211 13.9245 9.66049C14.475 9.11 15.2215 8.80051 16 8.8ZM21.224 21.2C21.2242 21.7291 21.0147 22.2368 20.6413 22.6117C20.2679 22.9866 19.7611 23.1981 19.232 23.2H12.768C12.2389 23.1981 11.7321 22.9866 11.3587 22.6117C10.9853 22.2368 10.7758 21.7291 10.776 21.2V19.864C10.7768 18.8182 11.1925 17.8155 11.932 17.076C12.6715 16.3365 13.6742 15.9208 14.72 15.92H17.28C18.3258 15.9208 19.3285 16.3365 20.068 17.076C20.8075 17.8155 21.2232 18.8182 21.224 19.864V21.2Z\" fill=\"#ABABAB\" />\n </svg>\n);\n\nconst EditIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.293 15.619L15.619 5.29299C16.009 4.90299 16.642 4.90299 17.032 5.29299L18.708 6.96899C19.098 7.35899 19.098 7.99199 18.708 8.38199L8.381 18.707C8.194 18.895 7.94 19 7.675 19H5V16.325C5 16.06 5.105 15.806 5.293 15.619Z\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M13.75 7.16016L16.84 10.2502\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n);\n\nconst CrossIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M3.00012 3L9.00012 9\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.00012 3L3.00012 9\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n);\n\nexport interface AvatarProps {\n src?: string | null;\n alt?: string;\n size?: number;\n onUpload?: (file: File) => void;\n onEdit?: () => void;\n onRemove?: () => void;\n className?: string;\n}\n\nexport const Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n (\n {\n src,\n alt = \"Avatar\",\n size = 56,\n onUpload,\n onEdit,\n onRemove,\n className,\n },\n ref\n ) => {\n const [isHovered, setIsHovered] = React.useState(false);\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n\n const handleFileChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (file && onUpload) {\n onUpload(file);\n }\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\";\n }\n },\n [onUpload]\n );\n\n const handleClick = React.useCallback(() => {\n if (src) {\n if (onEdit) {\n onEdit();\n } else if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n } else {\n if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n }\n }, [src, onEdit]);\n\n const handleRemove = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (onRemove) {\n onRemove();\n }\n },\n [onRemove]\n );\n\n const hasImage = Boolean(src);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"astrum-avatar\",\n {\n \"astrum-avatar--has-image\": hasImage,\n \"astrum-avatar--hovered\": isHovered,\n },\n className\n )}\n style={{ width: size, height: size }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onClick={handleClick}\n >\n {onUpload && (\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n onChange={handleFileChange}\n className=\"astrum-avatar__input\"\n />\n )}\n {hasImage ? (\n <>\n <div className=\"astrum-avatar__body\">\n <img src={src!} alt={alt} className=\"astrum-avatar__image\" />\n <div className=\"astrum-avatar__overlay\" aria-hidden />\n {(onEdit || onUpload) && (\n <div className=\"astrum-avatar__edit-icon\" aria-hidden>\n <EditIcon />\n </div>\n )}\n </div>\n {onRemove && (\n <button\n type=\"button\"\n className=\"astrum-avatar__remove-button\"\n onClick={handleRemove}\n aria-label=\"Удалить аватар\"\n >\n <CrossIcon />\n </button>\n )}\n </>\n ) : (\n <div className=\"astrum-avatar__body\">\n <div className=\"astrum-avatar__placeholder\" aria-hidden>\n <span className=\"astrum-avatar__user-icon\">\n <UserIcon />\n </span>\n </div>\n <div className=\"astrum-avatar__overlay\" aria-hidden />\n <div className=\"astrum-avatar__add-icon\" aria-hidden>\n <EditIcon />\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nAvatar.displayName = \"Avatar\";\n","import * as React from \"react\";\nimport \"./DatePicker.css\";\n\nconst CalendarIcon = ({ isActive }: { isActive?: boolean }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M3 8.40004C3 6.70264 3 5.85485 3.5274 5.32745C4.0548 4.80005 4.9026 4.80005 6.6 4.80005H17.4C19.0974 4.80005 19.9452 4.80005 20.4726 5.32745C21 5.85485 21 6.70264 21 8.40004C21 8.82394 21 9.03634 20.8686 9.16864C20.7363 9.30004 20.523 9.30004 20.1 9.30004H3.9C3.4761 9.30004 3.2637 9.30004 3.1314 9.16864C3 9.03634 3 8.82304 3 8.40004Z\" fill={isActive ? \"#2653F2\" : \"#ABABAB\"}/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.5274 19.5727C3 19.0453 3 18.1975 3 16.5001V12.0001C3 11.5762 3 11.3638 3.1314 11.2315C3.2637 11.1001 3.477 11.1001 3.9 11.1001H20.1C20.5239 11.1001 20.7363 11.1001 20.8686 11.2315C21 11.3638 21 11.5762 21 12.0001V16.5001C21 18.1975 21 19.0453 20.4726 19.5727C19.9452 20.1001 19.0974 20.1001 17.4 20.1001H6.6C4.9026 20.1001 4.0548 20.1001 3.5274 19.5727ZM8.4 14.7001C8.1613 14.7001 7.93239 14.7949 7.7636 14.9637C7.59482 15.1325 7.5 15.3614 7.5 15.6001C7.5 15.8388 7.59482 16.0677 7.7636 16.2365C7.93239 16.4053 8.1613 16.5001 8.4 16.5001H15.6C15.8387 16.5001 16.0676 16.4053 16.2364 16.2365C16.4052 16.0677 16.5 15.8388 16.5 15.6001C16.5 15.3614 16.4052 15.1325 16.2364 14.9637C16.0676 14.7949 15.8387 14.7001 15.6 14.7001H8.4Z\" fill={isActive ? \"#2653F2\" : \"#ABABAB\"}/>\n <path d=\"M7.5 3V5.69999M16.5 3V5.69999\" stroke={isActive ? \"#2653F2\" : \"#ABABAB\"} stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n);\n\nconst ChevronLeftIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M15 6L9 12L15 18\" stroke=\"#ABABAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n);\n\nconst ChevronRightIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 18L15 12L9 6\" stroke=\"#ABABAB\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n);\n\nconst ClockIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M10 2.5C14.1423 2.5 17.5 5.85777 17.5 10C17.5 14.1423 14.1423 17.5001 10 17.5001C5.85775 17.5001 2.5 14.1423 2.5 10C2.5 5.85777 5.85775 2.5 10 2.5ZM10 5.50002C9.80109 5.50002 9.61032 5.57903 9.46967 5.71969C9.32902 5.86034 9.25 6.05111 9.25 6.25002V10C9.25004 10.1989 9.32909 10.3897 9.46975 10.5303L11.7198 12.7803C11.8612 12.9169 12.0507 12.9925 12.2473 12.9908C12.4439 12.9891 12.6321 12.9102 12.7711 12.7712C12.9102 12.6321 12.989 12.444 12.9908 12.2474C12.9925 12.0507 12.9169 11.8613 12.7802 11.7198L10.75 9.68954V6.25002C10.75 6.05111 10.671 5.86034 10.5303 5.71969C10.3897 5.57903 10.1989 5.50002 10 5.50002Z\" fill=\"#ABABAB\"/>\n </svg>\n);\n\nconst formatDate = (date: Date | null): string => {\n if (!date) return \"\";\n const day = String(date.getDate()).padStart(2, \"0\");\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const year = date.getFullYear();\n return `${day}.${month}.${year}`;\n};\n\nconst parseDate = (value: string): Date | null => {\n const match = value.match(/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/);\n if (!match) return null;\n const [, day, month, year] = match;\n const date = new Date(parseInt(year), parseInt(month) - 1, parseInt(day));\n if (\n date.getFullYear() === parseInt(year) &&\n date.getMonth() === parseInt(month) - 1 &&\n date.getDate() === parseInt(day)\n ) {\n return date;\n }\n return null;\n};\n\nconst formatTime = (date: Date | null): string => {\n if (!date) return \"\";\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n return `${hours}:${minutes}`;\n};\n\nconst parseTime = (value: string): { hours: number; minutes: number } | null => {\n const match = value.match(/^(\\d{2}):(\\d{2})$/);\n if (!match) return null;\n const hours = parseInt(match[1]);\n const minutes = parseInt(match[2]);\n if (hours >= 0 && hours < 24 && minutes >= 0 && minutes < 60) {\n return { hours, minutes };\n }\n return null;\n};\n\nconst getDaysInMonth = (date: Date): number => {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n};\n\nconst getFirstDayOfMonth = (date: Date): number => {\n const firstDay = new Date(date.getFullYear(), date.getMonth(), 1);\n return firstDay.getDay() === 0 ? 6 : firstDay.getDay() - 1;\n};\n\nconst isSameDay = (date1: Date | null, date2: Date | null): boolean => {\n if (!date1 || !date2) return false;\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n};\n\nconst isToday = (date: Date): boolean => {\n const today = new Date();\n return isSameDay(date, today);\n};\n\nconst isDateInRange = (date: Date, start: Date | null, end: Date | null): boolean => {\n if (!start || !end) return false;\n const dateTime = date.getTime();\n const startTime = start.getTime();\n const endTime = end.getTime();\n return dateTime >= startTime && dateTime <= endTime;\n};\n\nconst isDateRangeStart = (date: Date, start: Date | null, end: Date | null): boolean => {\n if (!start) return false;\n return isSameDay(date, start);\n};\n\nconst isDateRangeEnd = (date: Date, start: Date | null, end: Date | null): boolean => {\n if (!end) return false;\n return isSameDay(date, end);\n};\n\nconst monthNames = [\n \"Январь\",\n \"Февраль\",\n \"Март\",\n \"Апрель\",\n \"Май\",\n \"Июнь\",\n \"Июль\",\n \"Август\",\n \"Сентябрь\",\n \"Октябрь\",\n \"Ноябрь\",\n \"Декабрь\",\n];\n\nconst weekDays = [\"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\", \"Вс\"];\n\nexport type DateRange = [Date | null, Date | null];\n\nexport interface DatePickerProps {\n placeholder?: string;\n placeholderFrom?: string;\n placeholderTo?: string;\n value?: Date | null | DateRange;\n defaultValue?: Date | null | DateRange;\n onChange?: ((date: Date | null) => void) | ((range: DateRange) => void);\n error?: string;\n required?: boolean;\n disabled?: boolean;\n showTime?: boolean;\n timeLabel?: string;\n range?: boolean;\n className?: string;\n id?: string;\n}\n\nexport const DatePicker = React.forwardRef<HTMLInputElement, DatePickerProps>(\n (\n {\n placeholder = \"Дата\",\n placeholderFrom = \"От\",\n placeholderTo = \"До\",\n value,\n defaultValue,\n onChange,\n error,\n required,\n disabled,\n showTime = false,\n timeLabel = \"Время (UTC):\",\n range = false,\n className = \"\",\n id: idProp,\n },\n ref\n ) => {\n const id = React.useId();\n const inputId = idProp ?? id;\n const [isOpen, setIsOpen] = React.useState(false);\n const [internalDate, setInternalDate] = React.useState<Date | null>(\n range ? null : (defaultValue as Date | null) ?? null\n );\n const [internalRange, setInternalRange] = React.useState<DateRange>(\n range ? (defaultValue as DateRange | undefined) ?? [null, null] : [null, null]\n );\n const [selectingStart, setSelectingStart] = React.useState(true);\n const [internalTime, setInternalTime] = React.useState<string>(\n !range && defaultValue ? formatTime(defaultValue as Date) : \"\"\n );\n const [viewDate, setViewDate] = React.useState<Date>(() => {\n if (range) {\n const rangeValue = (value as DateRange | undefined) ?? (defaultValue as DateRange | undefined);\n return rangeValue?.[0] ? new Date(rangeValue[0].getFullYear(), rangeValue[0].getMonth(), 1) : new Date();\n }\n return value ? (value as Date) : defaultValue ? (defaultValue as Date) : new Date();\n });\n const getRangeDisplayValue = (rangeValue: DateRange): string => {\n if (!rangeValue[0] && !rangeValue[1]) return \"\";\n if (rangeValue[0] && rangeValue[1]) {\n return `${formatDate(rangeValue[0])} — ${formatDate(rangeValue[1])}`;\n }\n if (rangeValue[0]) {\n return formatDate(rangeValue[0]);\n }\n return \"\";\n };\n\n const [inputValue, setInputValue] = React.useState<string>(() => {\n if (range) {\n const rangeValue = (value as DateRange | undefined) ?? (defaultValue as DateRange | undefined);\n return rangeValue ? getRangeDisplayValue(rangeValue) : \"\";\n }\n return value ? formatDate(value as Date) : defaultValue ? formatDate(defaultValue as Date) : \"\";\n });\n const [timeValue, setTimeValue] = React.useState<string>(\n !range && value && showTime ? formatTime(value as Date) : !range && defaultValue && showTime ? formatTime(defaultValue as Date) : \"\"\n );\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n const calendarRef = React.useRef<HTMLDivElement | null>(null);\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const timeInputRef = React.useRef<HTMLInputElement | null>(null);\n\n const isControlled = value !== undefined;\n const currentDate = range ? null : (isControlled ? (value as Date | null) : internalDate);\n const currentRange = range ? (isControlled ? (value as DateRange) : internalRange) : [null, null];\n\n const setCombinedRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref]\n );\n\n React.useEffect(() => {\n if (range) {\n const rangeValue = value as DateRange | undefined;\n if (isControlled && rangeValue) {\n setInputValue(getRangeDisplayValue(rangeValue));\n if (rangeValue[0]) {\n setViewDate(new Date(rangeValue[0].getFullYear(), rangeValue[0].getMonth(), 1));\n }\n } else if (isControlled && (!rangeValue || (!rangeValue[0] && !rangeValue[1]))) {\n setInputValue(\"\");\n }\n } else {\n if (isControlled && value) {\n setInputValue(formatDate(value as Date));\n if (showTime) {\n setTimeValue(formatTime(value as Date));\n }\n setViewDate(new Date((value as Date).getFullYear(), (value as Date).getMonth(), 1));\n } else if (isControlled && !value) {\n setInputValue(\"\");\n if (showTime) {\n setTimeValue(\"\");\n }\n }\n }\n }, [value, isControlled, showTime, range]);\n\n React.useEffect(() => {\n if (range) {\n const rangeDefault = defaultValue as DateRange | undefined;\n if (!isControlled && rangeDefault !== undefined) {\n setInternalRange(rangeDefault);\n setInputValue(getRangeDisplayValue(rangeDefault));\n if (rangeDefault[0]) {\n setViewDate(new Date(rangeDefault[0].getFullYear(), rangeDefault[0].getMonth(), 1));\n }\n }\n } else {\n if (!isControlled && defaultValue !== undefined) {\n setInternalDate(defaultValue as Date | null);\n setInputValue(defaultValue ? formatDate(defaultValue as Date) : \"\");\n if (showTime && defaultValue) {\n setTimeValue(formatTime(defaultValue as Date));\n setInternalTime(formatTime(defaultValue as Date));\n }\n if (defaultValue) {\n setViewDate(new Date((defaultValue as Date).getFullYear(), (defaultValue as Date).getMonth(), 1));\n }\n }\n }\n }, [defaultValue, isControlled, showTime, range]);\n\n React.useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.target as Node) &&\n calendarRef.current &&\n !calendarRef.current.contains(e.target as Node)\n ) {\n if (range) {\n if (currentRange[0] && currentRange[1]) {\n setIsOpen(false);\n }\n } else {\n setIsOpen(false);\n }\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }\n }, [isOpen, range, currentRange]);\n\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setInputValue(newValue);\n \n if (range) {\n const rangeMatch = newValue.match(/^(\\d{2}\\.\\d{2}\\.\\d{4})\\s*—\\s*(\\d{2}\\.\\d{2}\\.\\d{4})$/);\n if (rangeMatch) {\n const parsedFrom = parseDate(rangeMatch[1]);\n const parsedTo = parseDate(rangeMatch[2]);\n const newRange: DateRange = [parsedFrom, parsedTo];\n if (isControlled) {\n (onChange as (range: DateRange) => void)?.(newRange);\n } else {\n setInternalRange(newRange);\n (onChange as (range: DateRange) => void)?.(newRange);\n }\n if (parsedFrom) {\n setViewDate(new Date(parsedFrom.getFullYear(), parsedFrom.getMonth(), 1));\n }\n } else {\n const singleDateMatch = newValue.match(/^(\\d{2}\\.\\d{2}\\.\\d{4})$/);\n if (singleDateMatch) {\n const parsed = parseDate(singleDateMatch[1]);\n const newRange: DateRange = [parsed, null];\n if (isControlled) {\n (onChange as (range: DateRange) => void)?.(newRange);\n } else {\n setInternalRange(newRange);\n (onChange as (range: DateRange) => void)?.(newRange);\n }\n if (parsed) {\n setViewDate(new Date(parsed.getFullYear(), parsed.getMonth(), 1));\n }\n } else if (newValue === \"\") {\n const newRange: DateRange = [null, null];\n if (isControlled) {\n (onChange as (range: DateRange) => void)?.(newRange);\n } else {\n setInternalRange(newRange);\n (onChange as (range: DateRange) => void)?.(newRange);\n }\n }\n }\n return;\n }\n \n const parsed = parseDate(newValue);\n if (parsed) {\n if (showTime && timeValue) {\n const time = parseTime(timeValue);\n if (time) {\n parsed.setHours(time.hours, time.minutes);\n }\n }\n if (isControlled) {\n (onChange as (date: Date | null) => void)?.(parsed);\n } else {\n setInternalDate(parsed);\n (onChange as (date: Date | null) => void)?.(parsed);\n }\n } else if (newValue === \"\") {\n if (isControlled) {\n (onChange as (date: Date | null) => void)?.(null);\n } else {\n setInternalDate(null);\n (onChange as (date: Date | null) => void)?.(null);\n }\n }\n };\n\n const handleTimeChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (range) return;\n const newValue = e.target.value;\n setTimeValue(newValue);\n const parsed = parseTime(newValue);\n if (parsed && currentDate) {\n const newDate = new Date(currentDate);\n newDate.setHours(parsed.hours, parsed.minutes);\n if (isControlled) {\n (onChange as (date: Date | null) => void)?.(newDate);\n } else {\n setInternalDate(newDate);\n (onChange as (date: Date | null) => void)?.(newDate);\n }\n }\n setInternalTime(newValue);\n };\n\n const handleDateClick = (day: number, isOtherMonth: boolean) => {\n if (disabled) return;\n const newDate = new Date(viewDate);\n if (isOtherMonth) {\n if (day > 15) {\n newDate.setMonth(newDate.getMonth() - 1);\n } else {\n newDate.setMonth(newDate.getMonth() + 1);\n }\n }\n newDate.setDate(day);\n\n if (range) {\n let newRange: DateRange;\n if (!currentRange[0]) {\n newRange = [newDate, null];\n setSelectingStart(false);\n } else if (!currentRange[1]) {\n if (newDate.getTime() < currentRange[0]!.getTime()) {\n newRange = [newDate, currentRange[0]];\n } else {\n newRange = [currentRange[0], newDate];\n }\n setSelectingStart(true);\n } else {\n newRange = [newDate, null];\n setSelectingStart(false);\n }\n setViewDate(new Date(newDate.getFullYear(), newDate.getMonth(), 1));\n if (isControlled) {\n (onChange as (range: DateRange) => void)?.(newRange);\n } else {\n setInternalRange(newRange);\n (onChange as (range: DateRange) => void)?.(newRange);\n }\n setInputValue(getRangeDisplayValue(newRange));\n if (newRange[0] && newRange[1] && !showTime) {\n setIsOpen(false);\n }\n } else {\n if (showTime && timeValue) {\n const time = parseTime(timeValue);\n if (time) {\n newDate.setHours(time.hours, time.minutes);\n }\n }\n setViewDate(new Date(newDate.getFullYear(), newDate.getMonth(), 1));\n if (isControlled) {\n (onChange as (date: Date | null) => void)?.(newDate);\n } else {\n setInternalDate(newDate);\n (onChange as (date: Date | null) => void)?.(newDate);\n }\n setInputValue(formatDate(newDate));\n if (!showTime) {\n setIsOpen(false);\n }\n }\n };\n\n const handlePrevMonth = () => {\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() - 1, 1));\n };\n\n const handleNextMonth = () => {\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + 1, 1));\n };\n\n const renderCalendar = () => {\n const daysInMonth = getDaysInMonth(viewDate);\n const firstDay = getFirstDayOfMonth(viewDate);\n const days: Array<{ day: number; isOtherMonth: boolean }> = [];\n\n const prevMonth = new Date(viewDate.getFullYear(), viewDate.getMonth() - 1, 0);\n const daysInPrevMonth = prevMonth.getDate();\n\n for (let i = firstDay - 1; i >= 0; i--) {\n days.push({ day: daysInPrevMonth - i, isOtherMonth: true });\n }\n\n for (let i = 1; i <= daysInMonth; i++) {\n days.push({ day: i, isOtherMonth: false });\n }\n\n const remainingDays = 35 - days.length;\n for (let i = 1; i <= remainingDays; i++) {\n days.push({ day: i, isOtherMonth: true });\n }\n\n return days;\n };\n\n const calendarDays = renderCalendar();\n const isActive = isOpen;\n\n return (\n <div ref={containerRef} className={`astrum-datepicker ${range ? \"astrum-datepicker--range\" : \"\"} ${error ? \"astrum-datepicker--error\" : \"\"} ${className}`.trim()}>\n <div className=\"astrum-datepicker__wrap\">\n <input\n ref={setCombinedRef}\n id={inputId}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onFocus={() => !disabled && setIsOpen(true)}\n placeholder={range ? `${placeholderFrom} — ${placeholderTo}` : placeholder}\n disabled={disabled}\n className={`astrum-datepicker__field ${error ? \"astrum-datepicker__field--invalid\" : \"\"}`.trim()}\n aria-invalid={!!error}\n aria-required={required}\n aria-describedby={error ? `${inputId}-error` : undefined}\n aria-expanded={isOpen}\n />\n <button\n type=\"button\"\n className={`astrum-datepicker__icon ${isActive ? \"astrum-datepicker__icon--active\" : \"\"}`}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n disabled={disabled}\n aria-label=\"Открыть календарь\"\n >\n <CalendarIcon isActive={isActive} />\n </button>\n </div>\n {error != null && (\n <span id={`${inputId}-error`} className=\"astrum-datepicker__error\" role=\"alert\">\n {error}\n </span>\n )}\n {isOpen && (\n <div ref={calendarRef} className=\"astrum-datepicker__calendar\">\n <div className=\"astrum-datepicker__calendar-header\">\n <button\n type=\"button\"\n className=\"astrum-datepicker__calendar-nav\"\n onClick={handlePrevMonth}\n aria-label=\"Предыдущий месяц\"\n >\n <ChevronLeftIcon />\n </button>\n <div className=\"astrum-datepicker__calendar-month\">\n {monthNames[viewDate.getMonth()]} {viewDate.getFullYear()}\n </div>\n <button\n type=\"button\"\n className=\"astrum-datepicker__calendar-nav\"\n onClick={handleNextMonth}\n aria-label=\"Следующий месяц\"\n >\n <ChevronRightIcon />\n </button>\n </div>\n <div className=\"astrum-datepicker__calendar-weekdays\">\n {weekDays.map((day) => (\n <div key={day} className=\"astrum-datepicker__calendar-weekday\">\n {day}\n </div>\n ))}\n </div>\n <div className=\"astrum-datepicker__calendar-days\">\n {calendarDays.map(({ day, isOtherMonth }, index) => {\n const dayDate = new Date(viewDate.getFullYear(), viewDate.getMonth() + (isOtherMonth ? (day > 15 ? -1 : 1) : 0), day);\n const isCurrentDay = !isOtherMonth && isToday(dayDate);\n let isSelected: boolean;\n let isInRange = false;\n let isRangeStart = false;\n let isRangeEnd = false;\n \n if (range) {\n const hasSelectedRange = currentRange[0] != null || currentRange[1] != null;\n isSelected = hasSelectedRange\n ? (currentRange[0] != null && isSameDay(dayDate, currentRange[0])) || (currentRange[1] != null && isSameDay(dayDate, currentRange[1])) || false\n : isCurrentDay;\n \n if (currentRange[0] && currentRange[1]) {\n isInRange = isDateInRange(dayDate, currentRange[0], currentRange[1]) && !isSelected;\n isRangeStart = isDateRangeStart(dayDate, currentRange[0], currentRange[1]);\n isRangeEnd = isDateRangeEnd(dayDate, currentRange[0], currentRange[1]);\n }\n } else {\n isSelected = currentDate ? isSameDay(dayDate, currentDate) : isCurrentDay;\n }\n \n return (\n <button\n key={`${day}-${isOtherMonth}-${index}`}\n type=\"button\"\n className={`astrum-datepicker__calendar-day ${isOtherMonth ? \"astrum-datepicker__calendar-day--other-month\" : \"\"} ${isSelected ? \"astrum-datepicker__calendar-day--selected\" : \"\"} ${isInRange ? \"astrum-datepicker__calendar-day--in-range\" : \"\"} ${isRangeStart ? \"astrum-datepicker__calendar-day--range-start\" : \"\"} ${isRangeEnd ? \"astrum-datepicker__calendar-day--range-end\" : \"\"}`}\n onClick={() => handleDateClick(day, isOtherMonth)}\n disabled={disabled}\n >\n {day}\n </button>\n );\n })}\n </div>\n {showTime && (\n <div className=\"astrum-datepicker__calendar-time\">\n <label className=\"astrum-datepicker__calendar-time-label\">{timeLabel}</label>\n <div className=\"astrum-datepicker__calendar-time-input-wrap\">\n <input\n ref={timeInputRef}\n type=\"text\"\n value={timeValue}\n onChange={handleTimeChange}\n placeholder=\"00:00\"\n className=\"astrum-datepicker__calendar-time-input\"\n />\n <span className=\"astrum-datepicker__calendar-time-icon\" aria-hidden>\n <ClockIcon />\n </span>\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nDatePicker.displayName = \"DatePicker\";\n"],"mappings":"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","names":["React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","CHECK_ICON","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","ref","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","CloseIcon","React","import_jsx_runtime","React","import_jsx_runtime","parsed"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/Button/Button.tsx","../src/ColorPicker/ColorPicker.tsx","../src/Radio/Radio.tsx","../src/Checkbox/Checkbox.tsx","../src/Toggler/Toggler.tsx","../src/Input/Input.tsx","../src/InputCode/InputCode.tsx","../src/Select/Select.tsx","../src/Chips/Chips.tsx","../src/FileUpload/FileUpload.tsx","../src/Avatar/Avatar.tsx","../src/DatePicker/DatePicker.tsx"],"sourcesContent":["export { Button } from \"./Button\";\nexport type { ButtonProps } from \"./Button\";\nexport { ColorPicker } from \"./ColorPicker\";\nexport type { ColorPickerProps } from \"./ColorPicker\";\nexport { Radio, RadioGroup } from \"./Radio\";\nexport type { RadioProps, RadioGroupProps } from \"./Radio\";\nexport { Checkbox } from \"./Checkbox\";\nexport type { CheckboxProps } from \"./Checkbox\";\nexport { Toggler } from \"./Toggler\";\nexport type { TogglerProps } from \"./Toggler\";\nexport { Input } from \"./Input\";\nexport type { InputProps, InputType, InputSize } from \"./Input\";\nexport { InputCode } from \"./InputCode\";\nexport type { InputCodeProps } from \"./InputCode\";\nexport { Select } from \"./Select\";\nexport type { SelectProps, SelectOption } from \"./Select\";\nexport { Chips } from \"./Chips\";\nexport type { ChipsProps } from \"./Chips\";\nexport { FileUpload, FileItem } from \"./FileUpload\";\nexport type { FileUploadProps, FileItemProps } from \"./FileUpload\";\nexport { Avatar } from \"./Avatar\";\nexport type { AvatarProps } from \"./Avatar\";\nexport { DatePicker } from \"./DatePicker\";\nexport type { DatePickerProps } from \"./DatePicker\";\n","import * as React from \"react\";\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: \"primary\" | \"outlined\" | \"dashed\" | \"grey\" | \"white\" | \"ghost\";\n size?: \"s\" | \"m\" | \"l\";\n icon?: React.ReactNode;\n iconPosition?: \"left\" | \"right\";\n shape?: \"default\" | \"square\" | \"circle\";\n children?: React.ReactNode;\n}\n\nconst variantStyles: Record<NonNullable<ButtonProps[\"variant\"]>, string> = {\n primary: \"astrum-btn-primary\",\n outlined: \"astrum-btn-outlined\",\n dashed: \"astrum-btn-dashed\",\n grey: \"astrum-btn-grey\",\n white: \"astrum-btn-white\",\n ghost: \"astrum-btn-ghost\",\n};\n\nconst sizeStyles: Record<NonNullable<ButtonProps[\"size\"]>, string> = {\n s: \"astrum-btn-s\",\n m: \"astrum-btn-m\",\n l: \"astrum-btn-l\",\n};\n\nconst shapeStyles: Record<NonNullable<ButtonProps[\"shape\"]>, string> = {\n default: \"\",\n square: \"astrum-btn-shape-square\",\n circle: \"astrum-btn-shape-circle\",\n};\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = \"primary\",\n size = \"m\",\n icon,\n iconPosition = \"right\",\n shape = \"default\",\n className = \"\",\n children,\n ...rest\n },\n ref\n ) => {\n const iconOnly = icon != null && (children == null || children === \"\");\n const effectiveShape = iconOnly && shape !== \"default\" ? shape : \"default\";\n const classes = [\n \"astrum-btn\",\n variantStyles[variant],\n sizeStyles[size],\n shapeStyles[effectiveShape],\n iconOnly ? \"astrum-btn-icon-only\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n const content = (\n <>\n {icon && iconPosition === \"left\" && <span className=\"astrum-btn-icon\">{icon}</span>}\n {children != null && children !== \"\" && <span className=\"astrum-btn-text\">{children}</span>}\n {icon && iconPosition === \"right\" && <span className=\"astrum-btn-icon\">{icon}</span>}\n </>\n );\n return (\n <button ref={ref} className={classes} type=\"button\" {...rest}>\n {content}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import * as React from \"react\";\n\nconst CHECK_ICON = (\n <svg width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\" aria-hidden>\n <path\n d=\"M1 5.5L4.5 9L11 1\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst DEFAULT_COLORS = [\n \"#E53935\",\n \"#FF9800\",\n \"#FDD835\",\n \"#8BC34A\",\n \"#4CAF50\",\n \"#009688\",\n \"#00BCD4\",\n \"#2196F3\",\n \"#7B1FA2\",\n \"#E91E63\",\n];\n\nexport interface ColorPickerProps {\n value?: string | null;\n onChange?: (color: string) => void;\n colors?: string[];\n disabled?: boolean;\n className?: string;\n \"aria-label\"?: string;\n}\n\nexport const ColorPicker = React.forwardRef<HTMLDivElement, ColorPickerProps>(\n (\n {\n value = null,\n onChange,\n colors = DEFAULT_COLORS,\n disabled = false,\n className = \"\",\n \"aria-label\": ariaLabel = \"Выбор цвета\",\n },\n ref\n ) => {\n const [hovered, setHovered] = React.useState<string | null>(null);\n\n return (\n <div\n ref={ref}\n className={`astrum-color-swatch-picker ${className}`.trim()}\n role=\"listbox\"\n aria-label={ariaLabel}\n aria-disabled={disabled}\n >\n {colors.map((color) => {\n const isSelected =\n value != null && value.toLowerCase() === color.toLowerCase();\n const isHovered = hovered === color && !disabled;\n\n return (\n <button\n key={color}\n type=\"button\"\n role=\"option\"\n aria-selected={isSelected}\n aria-label={color}\n disabled={disabled}\n className=\"astrum-color-swatch-picker__swatch\"\n style={{ [\"--astrum-swatch-color\" as string]: color }}\n data-selected={isSelected || undefined}\n data-hovered={isHovered || undefined}\n onClick={() => onChange?.(color)}\n onMouseEnter={() => setHovered(color)}\n onMouseLeave={() => setHovered(null)}\n >\n <span className=\"astrum-color-swatch-picker__check\" aria-hidden>\n {CHECK_ICON}\n </span>\n </button>\n );\n })}\n </div>\n );\n }\n);\n\nColorPicker.displayName = \"ColorPicker\";\n","import * as React from \"react\";\n\nexport interface RadioProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"type\"> {\n value: string;\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n ({ value, className = \"\", id: idProp, ...rest }, ref) => {\n const id = React.useId();\n const inputId = idProp ?? id;\n\n return (\n <label\n htmlFor={inputId}\n className={`astrum-radio ${className}`.trim()}\n >\n <input\n ref={ref}\n type=\"radio\"\n id={inputId}\n value={value}\n className=\"astrum-radio__input\"\n {...rest}\n />\n <span className=\"astrum-radio__circle\" aria-hidden />\n </label>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\n\nexport interface RadioGroupProps extends Omit<React.FieldsetHTMLAttributes<HTMLFieldSetElement>, \"onChange\"> {\n name: string;\n value?: string | null;\n onChange?: (value: string) => void;\n children: React.ReactNode;\n}\n\nexport const RadioGroup = React.forwardRef<HTMLFieldSetElement, RadioGroupProps>(\n ({ name, value, onChange, children, ...rest }, ref) => {\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e.target.value);\n },\n [onChange]\n );\n\n return (\n <fieldset ref={ref} className=\"astrum-radio-group\" {...rest}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === Radio) {\n return React.cloneElement(child as React.ReactElement<RadioProps>, {\n name,\n checked: value != null && child.props.value === value,\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n (child.props as RadioProps & { onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void }).onChange?.(e);\n handleChange(e);\n },\n });\n }\n return child;\n })}\n </fieldset>\n );\n }\n);\n\nRadioGroup.displayName = \"RadioGroup\";\n","import * as React from \"react\";\n\nconst CHECK_ICON = (\n <svg width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\" aria-hidden>\n <path\n d=\"M1 5.5L4.5 9L11 1\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst MINUS_ICON = (\n <svg width=\"10\" height=\"2\" viewBox=\"0 0 10 2\" fill=\"none\" aria-hidden>\n <path d=\"M1 1h8\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"type\" | \"onChange\"> {\n checked?: boolean;\n indeterminate?: boolean;\n onChange?: (checked: boolean) => void;\n className?: string;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n checked: checkedProp,\n indeterminate = false,\n disabled = false,\n onChange,\n className = \"\",\n id: idProp,\n ...rest\n },\n ref\n ) => {\n const { defaultChecked, ...restInput } = rest;\n const isControlled = checkedProp !== undefined;\n const checked = checkedProp ?? false;\n const [internalChecked, setInternalChecked] = React.useState(defaultChecked ?? false);\n const isChecked = (isControlled ? checked : internalChecked) || indeterminate;\n const id = React.useId();\n const inputId = idProp ?? id;\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const setRef = React.useCallback(\n (el: HTMLInputElement | null) => {\n inputRef.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n },\n [ref]\n );\n\n React.useEffect(() => {\n const el = inputRef.current;\n if (el) el.indeterminate = indeterminate;\n }, [indeterminate]);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n if (!isControlled) setInternalChecked(e.target.checked);\n onChange?.(e.target.checked);\n },\n [disabled, isControlled, onChange]\n );\n\n return (\n <label\n htmlFor={inputId}\n className={[\n \"astrum-checkbox\",\n \"astrum-checkbox--m\",\n isChecked ? \"astrum-checkbox--checked\" : \"\",\n indeterminate ? \"astrum-checkbox--indeterminate\" : \"\",\n disabled ? \"astrum-checkbox--disabled\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <input\n ref={setRef}\n type=\"checkbox\"\n id={inputId}\n className=\"astrum-checkbox__input\"\n {...(isControlled ? { checked } : { defaultChecked })}\n disabled={disabled}\n onChange={handleChange}\n aria-checked={indeterminate ? \"mixed\" : (isControlled ? checked : internalChecked)}\n {...restInput}\n />\n <span className=\"astrum-checkbox__box\" aria-hidden>\n {isChecked && (\n <span className=\"astrum-checkbox__icon\" aria-hidden>\n {indeterminate ? MINUS_ICON : CHECK_ICON}\n </span>\n )}\n </span>\n </label>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n","import * as React from \"react\";\n\nexport interface TogglerProps {\n checked?: boolean;\n disabled?: boolean;\n onChange?: (checked: boolean) => void;\n className?: string;\n}\n\nexport const Toggler = React.forwardRef<HTMLInputElement, TogglerProps>(\n ({ checked: checkedProp, disabled = false, onChange, className = \"\" }, ref) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const isControlled = checkedProp !== undefined;\n const checked = isControlled ? checkedProp : internalChecked;\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!disabled) {\n if (!isControlled) {\n setInternalChecked(e.target.checked);\n }\n onChange?.(e.target.checked);\n }\n },\n [disabled, onChange, isControlled]\n );\n\n const classes = [\n \"astrum-toggler\",\n checked && \"astrum-toggler--checked\",\n disabled && \"astrum-toggler--disabled\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label className={classes}>\n <input\n ref={ref}\n type=\"checkbox\"\n checked={isControlled ? checked : undefined}\n onChange={handleChange}\n disabled={disabled}\n className=\"astrum-toggler__input\"\n />\n <span className=\"astrum-toggler__track\">\n <span className=\"astrum-toggler__thumb\"></span>\n </span>\n </label>\n );\n }\n);\n\nToggler.displayName = \"Toggler\";\n","import * as React from \"react\";\n\nconst SearchIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"11.0586\" cy=\"11.0586\" r=\"7.06194\" stroke=\"#ABABAB\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M20.0033 20.0034L16.0517 16.0518\" stroke=\"#ABABAB\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst ClearIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6.00037 6.00024L18.0004 18.0002\" stroke=\"#ABABAB\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M18.0004 6.00024L6.00037 18.0002\" stroke=\"#ABABAB\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst EyeOpenIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3 11.5455C3 11.5455 6.27273 5 12 5C17.7273 5 21 11.5455 21 11.5455C21 11.5455 17.7273 18.0909 12 18.0909C6.27273 18.0909 3 11.5455 3 11.5455Z\" stroke=\"#ABABAB\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 14C13.3556 14 14.4545 12.9011 14.4545 11.5455C14.4545 10.1898 13.3556 9.09091 12 9.09091C10.6444 9.09091 9.54545 10.1898 9.54545 11.5455C9.54545 12.9011 10.6444 14 12 14Z\" stroke=\"#ABABAB\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst EyeClosedIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M16.86 16.86C15.4614 17.9261 13.7584 18.5167 12 18.5455C6.27273 18.5455 3 12 3 12C4.01773 10.1034 5.42929 8.44632 7.14 7.14M10.2818 5.65091C10.845 5.51908 11.4216 5.45319 12 5.45455C17.7273 5.45455 21 12 21 12C20.5033 12.9291 19.911 13.8039 19.2327 14.61M13.7345 13.7345C13.5098 13.9757 13.2388 14.1691 12.9378 14.3033C12.6367 14.4374 12.3116 14.5096 11.9821 14.5154C11.6525 14.5212 11.3251 14.4606 11.0195 14.3371C10.7139 14.2137 10.4362 14.0299 10.2031 13.7969C9.97007 13.5638 9.78632 13.2861 9.66287 12.9805C9.53942 12.6749 9.47879 12.3475 9.48461 12.0179C9.49042 11.6884 9.56256 11.3633 9.69672 11.0622C9.83087 10.7612 10.0243 10.4902 10.2655 10.2655M3 3L21 21\" stroke=\"#ABABAB\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nexport type InputType = \"text\" | \"tel\" | \"email\" | \"number\" | \"password\" | \"search\";\n\nexport type InputSize = \"s\" | \"m\";\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n type?: InputType;\n name?: string;\n required?: boolean;\n label?: string;\n placeholder?: string;\n error?: string;\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n disabled?: boolean;\n size?: InputSize;\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = \"text\",\n name,\n required = false,\n label,\n placeholder,\n error,\n value,\n onChange,\n disabled,\n size = \"m\",\n className = \"\",\n id: idProp,\n defaultValue,\n ...rest\n },\n ref\n ) => {\n const id = React.useId();\n const inputId = idProp ?? id;\n const [isPasswordVisible, setIsPasswordVisible] = React.useState(false);\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? \"\");\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const combinedRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref]\n );\n\n const wrapClasses = [\n \"astrum-input__wrap\",\n type === \"search\" && \"astrum-input__wrap--search\",\n type === \"password\" && \"astrum-input__wrap--password\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n const inputType = type === \"password\" && isPasswordVisible ? \"text\" : type;\n\n const sizeClass = size === \"s\" ? \"astrum-input--s\" : \"astrum-input--m\";\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n const hasValue = currentValue != null && currentValue !== \"\";\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(e.target.value);\n }\n onChange?.(e);\n },\n [onChange, isControlled]\n );\n\n const handleClear = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!inputRef.current) return;\n inputRef.current.value = \"\";\n if (isControlled && onChange) {\n const syntheticEvent = {\n ...e,\n target: inputRef.current,\n currentTarget: inputRef.current,\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n } else {\n setInternalValue(\"\");\n if (onChange) {\n const syntheticEvent = {\n ...e,\n target: inputRef.current,\n currentTarget: inputRef.current,\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n }\n }\n inputRef.current.focus();\n },\n [onChange, isControlled]\n );\n\n return (\n <div\n className={`astrum-input ${sizeClass} ${error ? \"astrum-input--error\" : \"\"} ${className}`.trim()}\n >\n {label != null && (\n <label htmlFor={inputId} className=\"astrum-input__label\">\n {label}\n </label>\n )}\n <div className={wrapClasses}>\n {required && \n <span className=\"astrum-input__required-icon\" aria-hidden>\n <svg width=\"7\" height=\"6\" viewBox=\"0 0 7 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.21831 3.52817L0 3.57042V2.47183L2.21831 2.53521L1.03521 0.59155L2.07042 0L3.19014 1.90141L4.28873 0L5.28169 0.59155L4.07746 2.53521L6.25352 2.47183V3.57042L4.09859 3.52817L5.26056 5.42958L4.26761 6L3.14789 4.07747L2.02817 6L1.01408 5.40845L2.21831 3.52817Z\" fill=\"#ABABAB\" />\n </svg>\n </span>\n }\n\n <input\n ref={combinedRef}\n id={inputId}\n type={inputType}\n name={name}\n placeholder={placeholder}\n value={isControlled ? value : undefined}\n defaultValue={isControlled ? undefined : defaultValue}\n onChange={handleChange}\n required={required}\n disabled={disabled}\n className={`astrum-input__field ${error ? \"astrum-input__field--invalid\" : \"\"}`.trim()}\n aria-invalid={!!error}\n aria-required={required}\n aria-describedby={error ? `${inputId}-error` : undefined}\n {...rest}\n />\n\n {type === \"search\" && (\n <>\n {hasValue ? (\n <button\n type=\"button\"\n className=\"astrum-input__clear-icon\"\n onClick={handleClear}\n tabIndex={-1}\n aria-label=\"Очистить\"\n >\n <ClearIcon />\n </button>\n ) : (\n <span className=\"astrum-input__search-icon\" aria-hidden>\n <SearchIcon />\n </span>\n )}\n </>\n )}\n {type === \"password\" && (\n <button\n type=\"button\"\n className=\"astrum-input__password-toggle\"\n onClick={() => setIsPasswordVisible((prev) => !prev)}\n tabIndex={-1}\n aria-label={isPasswordVisible ? \"Скрыть пароль\" : \"Показать пароль\"}\n >\n {isPasswordVisible ? <EyeOpenIcon /> : <EyeClosedIcon />}\n </button>\n )}\n </div>\n\n {error != null && (\n <span id={`${inputId}-error`} className=\"astrum-input__error\" role=\"alert\">\n {error}\n </span>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n","import * as React from \"react\";\nimport \"./InputCode.css\";\n\nconst LENGTH = 6;\n\nfunction normalizeValue(s: string): string {\n return s.replace(/\\D/g, \"\").slice(0, LENGTH);\n}\n\nexport interface InputCodeProps {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onComplete?: (value: string) => void;\n error?: string;\n required?: boolean;\n disabled?: boolean;\n id?: string;\n className?: string;\n}\n\nexport const InputCode = React.forwardRef<HTMLDivElement, InputCodeProps>(\n (\n {\n value: valueProp,\n defaultValue = \"\",\n onChange,\n onComplete,\n error,\n required,\n disabled = false,\n id: idProp,\n className = \"\",\n },\n ref\n ) => {\n const id = React.useId();\n const rootId = idProp ?? id;\n const [internalValue, setInternalValue] = React.useState(() =>\n normalizeValue(defaultValue)\n );\n const value = valueProp !== undefined ? normalizeValue(valueProp) : internalValue;\n const digits = value.split(\"\");\n while (digits.length < LENGTH) digits.push(\"\");\n\n const inputRefs = React.useRef<(HTMLInputElement | null)[]>([]);\n for (let i = 0; i < LENGTH; i++) {\n if (!inputRefs.current[i]) {\n inputRefs.current[i] = null;\n }\n }\n\n const setValue = React.useCallback(\n (next: string) => {\n const normalized = normalizeValue(next);\n if (valueProp === undefined) setInternalValue(normalized);\n onChange?.(normalized);\n if (normalized.length === LENGTH) onComplete?.(normalized);\n },\n [valueProp, onChange, onComplete]\n );\n\n React.useEffect(() => {\n if (value.length === LENGTH && onComplete) {\n onComplete(value);\n }\n }, [value, onComplete]);\n\n React.useEffect(() => {\n inputRefs.current.forEach((ref, index) => {\n if (ref) {\n ref.value = digits[index] || \"\";\n }\n });\n }, [value, digits]);\n\n const handleInput = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>, index: number) => {\n const input = e.target;\n const previousInput = inputRefs.current[index - 1];\n const nextInput = inputRefs.current[index + 1];\n\n const newCode = [...digits];\n const char = normalizeValue(input.value);\n \n if (char) {\n newCode[index] = char;\n setValue(newCode.join(\"\"));\n input.select();\n \n if (nextInput) {\n nextInput.focus();\n nextInput.select();\n }\n } else {\n newCode[index] = \"\";\n setValue(newCode.join(\"\"));\n \n if (previousInput) {\n previousInput.focus();\n previousInput.select();\n }\n }\n },\n [digits, setValue]\n );\n\n const handleFocus = React.useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n e.target.select();\n },\n []\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>, index: number) => {\n const input = e.target as HTMLInputElement;\n const previousInput = inputRefs.current[index - 1];\n\n if ((e.key === \"Backspace\" || e.key === \"Delete\") && !input.value && index > 0) {\n e.preventDefault();\n const newCode = [...digits];\n newCode[index - 1] = \"\";\n setValue(newCode.join(\"\"));\n if (previousInput) {\n previousInput.focus();\n previousInput.select();\n }\n }\n },\n [digits, setValue]\n );\n\n const handlePaste = React.useCallback(\n (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedCode = normalizeValue(e.clipboardData.getData(\"text\"));\n if (pastedCode.length === LENGTH) {\n setValue(pastedCode);\n inputRefs.current.forEach((inputRef, index) => {\n if (inputRef) {\n inputRef.value = pastedCode[index] || \"\";\n }\n });\n const lastInput = inputRefs.current[LENGTH - 1];\n if (lastInput) {\n lastInput.focus();\n lastInput.select();\n }\n } else if (pastedCode.length > 0) {\n const activeIndex = inputRefs.current.findIndex(\n (ref) => ref === document.activeElement\n );\n if (activeIndex >= 0) {\n const newCode = [...digits];\n for (let i = 0; i < pastedCode.length && activeIndex + i < LENGTH; i++) {\n newCode[activeIndex + i] = pastedCode[i];\n }\n setValue(newCode.join(\"\"));\n const nextIndex = Math.min(activeIndex + pastedCode.length, LENGTH - 1);\n const nextInput = inputRefs.current[nextIndex];\n if (nextInput) {\n nextInput.focus();\n nextInput.select();\n }\n }\n }\n },\n [digits, setValue]\n );\n\n return (\n <div\n ref={ref}\n id={rootId}\n className={`astrum-input-code ${error ? \"astrum-input-code--error\" : \"\"} ${className}`.trim()}\n >\n <div className=\"astrum-input-code__wrap\">\n {digits.map((digit, index) => (\n <input\n key={index}\n ref={(el) => {\n inputRefs.current[index] = el;\n }}\n id={index === 0 ? `${rootId}-0` : undefined}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete={index === 0 ? \"one-time-code\" : \"off\"}\n maxLength={1}\n className={`astrum-input-code__cell ${index === 3 ? \"astrum-input-code__cell--spaced\" : \"\"}`.trim()}\n value={digit}\n onChange={(e) => handleInput(e, index)}\n onFocus={handleFocus}\n onKeyDown={(e) => handleKeyDown(e, index)}\n onPaste={handlePaste}\n disabled={disabled}\n aria-invalid={!!error}\n aria-required={required}\n aria-describedby={error ? `${rootId}-error` : undefined}\n />\n ))}\n </div>\n {error != null && (\n <div className=\"astrum-input-code__footer\">\n <span\n id={`${rootId}-error`}\n className=\"astrum-input-code__error\"\n role=\"alert\"\n >\n {error}\n </span>\n </div>\n )}\n </div>\n );\n }\n);\n\nInputCode.displayName = \"InputCode\";\n","import * as React from \"react\";\n\nconst ChevronDownIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M6 9L12 15L18 9\" stroke=\"#5988FF\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n);\n\nexport interface SelectOption {\n value: string;\n label: React.ReactNode;\n secondaryLabel?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, \"size\"> {\n error?: string;\n required?: boolean;\n options: SelectOption[];\n placeholder?: string;\n className?: string;\n}\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n error,\n required,\n options,\n placeholder,\n className = \"\",\n id: idProp,\n value,\n defaultValue,\n onChange,\n disabled,\n ...rest\n },\n ref\n ) => {\n const id = React.useId();\n const selectId = idProp ?? id;\n const [isOpen, setIsOpen] = React.useState(false);\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? \"\");\n const selectRef = React.useRef<HTMLSelectElement | null>(null);\n const dropdownRef = React.useRef<HTMLDivElement | null>(null);\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n\n const setRef = React.useCallback(\n (el: HTMLSelectElement | null) => {\n selectRef.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n },\n [ref]\n );\n\n const currentValue = value !== undefined ? value : internalValue;\n const selectedOption = currentValue ? options.find((opt) => opt.value === currentValue) : null;\n const displayValue = selectedOption ? selectedOption.label : placeholder ?? \"\";\n\n React.useEffect(() => {\n if (value === undefined) setInternalValue(defaultValue ?? \"\");\n }, [value, defaultValue]);\n\n React.useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.target as Node) &&\n dropdownRef.current &&\n !dropdownRef.current.contains(e.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }\n }, [isOpen]);\n\n const handleOptionClick = (optionValue: string) => {\n if (selectRef.current) {\n if (value === undefined) setInternalValue(optionValue);\n const nativeEvent = new Event(\"change\", { bubbles: true });\n Object.defineProperty(nativeEvent, \"target\", {\n writable: false,\n value: selectRef.current,\n });\n selectRef.current.value = optionValue;\n selectRef.current.dispatchEvent(nativeEvent);\n const reactEvent = {\n ...nativeEvent,\n target: selectRef.current,\n currentTarget: selectRef.current,\n } as unknown as React.ChangeEvent<HTMLSelectElement>;\n onChange?.(reactEvent);\n }\n setIsOpen(false);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setIsOpen(!isOpen);\n } else if (e.key === \"Escape\") {\n setIsOpen(false);\n } else if (e.key === \"ArrowDown\" && !isOpen) {\n e.preventDefault();\n setIsOpen(true);\n }\n };\n\n return (\n <div ref={containerRef} className=\"astrum-select__container\">\n <div\n className={`astrum-select ${error ? \"astrum-select--error\" : \"\"} ${isOpen ? \"astrum-select--open\" : \"\"} ${className}`.trim()}\n >\n <div className=\"astrum-select__wrap\">\n <select\n ref={setRef}\n id={selectId}\n className=\"astrum-select__field\"\n value={value !== undefined ? value : undefined}\n defaultValue={value === undefined ? defaultValue : undefined}\n onChange={(e) => {\n if (value === undefined) setInternalValue(e.target.value);\n onChange?.(e);\n setIsOpen(false);\n }}\n onMouseDown={(e) => {\n e.preventDefault();\n if (!disabled) setIsOpen(!isOpen);\n }}\n onClick={(e) => {\n e.preventDefault();\n if (!disabled) setIsOpen(!isOpen);\n }}\n disabled={disabled}\n aria-invalid={!!error}\n aria-required={required}\n aria-describedby={error ? `${selectId}-error` : undefined}\n aria-expanded={isOpen}\n {...rest}\n >\n {placeholder && (\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n )}\n {options.map((option) => (\n <option key={option.value} value={option.value} disabled={option.disabled}>\n {typeof option.label === \"string\" ? option.label : option.value}\n </option>\n ))}\n </select>\n <button\n type=\"button\"\n className=\"astrum-select__trigger\"\n onClick={() => !disabled && setIsOpen(!isOpen)}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n aria-label=\"Открыть список\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n >\n <span className={`astrum-select__value ${!selectedOption && placeholder ? \"astrum-select__value--placeholder\" : \"\"}`}>\n {displayValue}\n </span>\n <span className={`astrum-select__chevron ${isOpen ? \"astrum-select__chevron--open\" : \"\"}`}>\n <ChevronDownIcon />\n </span>\n </button>\n </div>\n {error != null && (\n <div className=\"astrum-select__footer\">\n <span id={`${selectId}-error`} className=\"astrum-select__error\" role=\"alert\">\n {error}\n </span>\n </div>\n )}\n </div>\n {isOpen && (\n <div ref={dropdownRef} className=\"astrum-select__dropdown\" role=\"listbox\">\n {options.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n role=\"option\"\n aria-selected={option.value === currentValue}\n className={`astrum-select__option ${option.value === currentValue ? \"astrum-select__option--selected\" : \"\"} ${option.disabled ? \"astrum-select__option--disabled\" : \"\"} ${option.secondaryLabel != null ? \"astrum-select__option--two-line\" : \"\"}`}\n onClick={() => !option.disabled && handleOptionClick(option.value)}\n disabled={option.disabled}\n >\n <span className=\"astrum-select__option-label\">{option.label}</span>\n {option.secondaryLabel != null && (\n <span className=\"astrum-select__option-caption\">{option.secondaryLabel}</span>\n )}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n","import * as React from \"react\";\n\nconst CloseIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" aria-hidden>\n <path\n d=\"M3 3l6 6M9 3l-6 6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nexport interface ChipsProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"size\"> {\n children: React.ReactNode;\n size?: \"s\" | \"m\";\n onRemove?: () => void;\n}\n\nexport const Chips = React.forwardRef<HTMLButtonElement, ChipsProps>(\n (\n {\n children,\n size = \"s\",\n onRemove,\n className = \"\",\n onClick,\n ...rest\n },\n ref\n ) => {\n const handleRemove = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onRemove?.();\n },\n [onRemove]\n );\n\n const handleClick = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n if (onRemove && e.target === e.currentTarget) {\n return;\n }\n onClick?.(e);\n },\n [onClick, onRemove]\n );\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={`astrum-chips ${size === \"s\" ? \"astrum-chips--s\" : \"astrum-chips--m\"} ${className}`.trim()}\n onClick={handleClick}\n {...rest}\n >\n <span className=\"astrum-chips__text\">{children}</span>\n <button\n type=\"button\"\n className=\"astrum-chips__remove\"\n onClick={handleRemove}\n aria-label=\"Удалить\"\n >\n <CloseIcon />\n </button>\n </button>\n );\n }\n);\n\nChips.displayName = \"Chips\";\n","import * as React from \"react\";\nimport { Button } from \"../Button\";\n\nconst UploadIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"64\" viewBox=\"0 0 64 64\" fill=\"none\">\n <path d=\"M12.2666 53.1766C12.2666 54.7295 13.5372 56.0001 15.0901 56.0001H48.9725C50.5254 56.0001 51.796 54.7295 51.796 53.1766C51.796 51.6236 50.5254 50.353 48.9725 50.353H15.0901C13.5372 50.353 12.2666 51.6236 12.2666 53.1766Z\" fill=\"#D5D5D5\"/>\n <path d=\"M44.9917 26.6142H40.5023V40.7319C40.5023 42.2848 39.2317 43.5554 37.6787 43.5554H26.3846C24.8317 43.5554 23.5611 42.2848 23.5611 40.7319V26.6142H19.0717C16.5587 26.6142 15.2881 23.5648 17.067 21.786L30.027 8.82601C31.1281 7.72483 32.907 7.72483 34.0081 8.82601L46.9681 21.786C48.747 23.5648 47.5046 26.6142 44.9917 26.6142Z\" fill=\"#D5D5D5\"/>\n </svg>\n);\n\nconst FileIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 3.8C9 3.32261 9.18964 2.86477 9.52721 2.52721C9.86477 2.18964 10.3226 2 10.8 2H15.4548C15.932 2.00042 16.3896 2.19034 16.7268 2.528L20.4732 6.272C20.6405 6.43937 20.7731 6.63808 20.8635 6.85675C20.9539 7.07543 21.0003 7.30978 21 7.5464V14.6C21 15.0774 20.8104 15.5352 20.4728 15.8728C20.1352 16.2104 19.6774 16.4 19.2 16.4H18V12.3452C17.9998 11.3905 17.6204 10.475 16.9452 9.8L13.2 6.0548C12.525 5.37962 11.6095 5.0002 10.6548 5H9V3.8Z\" fill=\"#2653f2\"/>\n <path d=\"M4.95 7C4.43283 7 3.93684 7.19755 3.57114 7.54918C3.20545 7.90081 3 8.37772 3 8.875V20.125C3 20.6223 3.20545 21.0992 3.57114 21.4508C3.93684 21.8025 4.43283 22 4.95 22H14.05C14.5672 22 15.0632 21.8025 15.4289 21.4508C15.7946 21.0992 16 20.6223 16 20.125V12.7763C15.9995 12.2791 15.7938 11.8025 15.428 11.4513L11.372 7.54875C11.1907 7.37452 10.9754 7.23637 10.7385 7.14221C10.5016 7.04805 10.2477 6.99973 9.9914 7H4.95Z\" fill=\"#2653f2\"/>\n </svg>\n);\n\nconst CloseIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M6.00049 6L18.0005 18\" stroke=\"#818181\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M18.0005 6L6.00049 18\" stroke=\"#818181\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n);\n\nexport interface FileUploadProps {\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n size?: \"large\" | \"compact\";\n label?: string;\n description?: string;\n buttonText?: string;\n onChange?: (files: FileList | null) => void;\n className?: string;\n}\n\nexport const FileUpload = React.forwardRef<HTMLInputElement, FileUploadProps>(\n (\n {\n accept,\n multiple = false,\n disabled = false,\n size = \"large\",\n label,\n description,\n buttonText = \"Выберите файлы\",\n onChange,\n className = \"\",\n },\n ref\n ) => {\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const [isDragging, setIsDragging] = React.useState(false);\n const [files, setFiles] = React.useState<FileList | null>(null);\n\n const setRef = React.useCallback(\n (el: HTMLInputElement | null) => {\n inputRef.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n },\n [ref]\n );\n\n const handleDragEnter = React.useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (!disabled) setIsDragging(true);\n }, [disabled]);\n\n const handleDragLeave = React.useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n }, []);\n\n const handleDragOver = React.useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n const handleDrop = React.useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n\n if (disabled) return;\n\n const droppedFiles = e.dataTransfer.files;\n if (droppedFiles.length > 0) {\n setFiles(droppedFiles);\n onChange?.(droppedFiles);\n }\n },\n [disabled, onChange]\n );\n\n const handleFileChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const selectedFiles = e.target.files;\n if (selectedFiles && selectedFiles.length > 0) {\n setFiles(selectedFiles);\n onChange?.(selectedFiles);\n }\n },\n [onChange]\n );\n\n const handleButtonClick = React.useCallback(() => {\n if (!disabled && inputRef.current) {\n inputRef.current.click();\n }\n }, [disabled]);\n\n const isPdf = accept?.toLowerCase().includes(\"pdf\");\n const defaultLabel = label ?? (isPdf ? \"Выберите PDF-файлы\" : \"Выберите файлы\");\n const defaultDescription =\n description ??\n (size === \"large\"\n ? isPdf\n ? \"Перетащите PDF-файлы сюда или выберите их, щелкнув мышью.\"\n : \"Перетащите файлы сюда или выберите их, щелкнув мышью.\"\n : \"Выберите файл или перетащите сюда\");\n\n return (\n <div\n className={`astrum-file-upload ${size === \"compact\" ? \"astrum-file-upload--compact\" : \"astrum-file-upload--large\"} ${isDragging ? \"astrum-file-upload--dragging\" : \"\"} ${disabled ? \"astrum-file-upload--disabled\" : \"\"} ${className}`.trim()}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <input\n ref={setRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleFileChange}\n className=\"astrum-file-upload__input\"\n aria-label={defaultLabel}\n />\n {size === \"large\" ? (\n <>\n <div className=\"astrum-file-upload__icon\">\n <UploadIcon />\n </div>\n <div className=\"astrum-file-upload__label\">{defaultLabel}</div>\n <div className=\"astrum-file-upload__description\">{defaultDescription}</div>\n <Button variant=\"primary\" size=\"m\" onClick={handleButtonClick} disabled={disabled}>\n {buttonText}\n </Button>\n </>\n ) : (\n <div className=\"astrum-file-upload__compact-content\">\n <span className=\"astrum-file-upload__compact-text\">\n <button\n type=\"button\"\n className=\"astrum-file-upload__compact-link\"\n onClick={handleButtonClick}\n disabled={disabled}\n >\n Выберите файл\n </button>{\" \"}\n или перетащите сюда\n </span>\n </div>\n )}\n </div>\n );\n }\n);\n\nFileUpload.displayName = \"FileUpload\";\n\nconst IMAGE_TYPES = /^image\\//i;\n\nexport interface FileItemProps {\n name: string;\n size?: number | string;\n file?: File;\n previewUrl?: string | null;\n icon?: React.ReactNode;\n onRemove?: () => void;\n className?: string;\n}\n\nexport const FileItem = React.forwardRef<HTMLDivElement, FileItemProps>(\n ({ name, size, file, previewUrl: previewUrlProp, icon, onRemove, className = \"\" }, ref) => {\n const [objectUrl, setObjectUrl] = React.useState<string | null>(null);\n\n React.useEffect(() => {\n if (previewUrlProp != null || !file || !IMAGE_TYPES.test(file.type)) return;\n const url = URL.createObjectURL(file);\n setObjectUrl(url);\n return () => {\n URL.revokeObjectURL(url);\n setObjectUrl(null);\n };\n }, [file, previewUrlProp]);\n\n const previewUrl = previewUrlProp ?? objectUrl;\n const showPreview = previewUrl != null && previewUrl !== \"\";\n\n const formatSize = React.useCallback((sizeValue: number | string | undefined) => {\n if (!sizeValue) return \"\";\n if (typeof sizeValue === \"string\") return sizeValue;\n if (sizeValue < 1024) return `${sizeValue} B`;\n if (sizeValue < 1024 * 1024) return `${(sizeValue / 1024).toFixed(0)} KB`;\n return `${(sizeValue / (1024 * 1024)).toFixed(1)} MB`;\n }, []);\n\n return (\n <div ref={ref} className={`astrum-file-item ${className}`.trim()}>\n <div className=\"astrum-file-item__preview-wrap\">\n {showPreview ? (\n <img\n src={previewUrl}\n alt=\"\"\n className=\"astrum-file-item__preview\"\n decoding=\"async\"\n />\n ) : (\n <span className=\"astrum-file-item__icon\">{icon ?? <FileIcon />}</span>\n )}\n </div>\n <div className=\"astrum-file-item__content\">\n <div className=\"astrum-file-item__name\">{name}</div>\n {size != null && <div className=\"astrum-file-item__size\">{formatSize(size)}</div>}\n </div>\n <button\n type=\"button\"\n className=\"astrum-file-item__remove\"\n onClick={onRemove}\n aria-label=\"Удалить файл\"\n disabled={onRemove == null}\n >\n <CloseIcon />\n </button>\n </div>\n );\n }\n);\n\nFileItem.displayName = \"FileItem\";\n","import * as React from \"react\";\nimport \"./Avatar.css\";\n\nfunction cn(\n ...args: (string | undefined | false | Record<string, boolean | undefined>)[]\n): string {\n return args\n .flatMap((x) =>\n typeof x === \"object\" && x !== null\n ? Object.entries(x)\n .filter(([, v]) => v)\n .map(([k]) => k)\n : x\n )\n .filter(Boolean)\n .join(\" \");\n}\n\nconst UserIcon = () => (\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M16 4C13.6266 4 11.3066 4.70379 9.33316 6.02236C7.35977 7.34094 5.8217 9.21508 4.91345 11.4078C4.0052 13.6005 3.76756 16.0133 4.23058 18.3411C4.6936 20.6689 5.83649 22.807 7.51472 24.4853C9.19295 26.1635 11.3311 27.3064 13.6589 27.7694C15.9867 28.2324 18.3995 27.9948 20.5922 27.0865C22.7849 26.1783 24.6591 24.6402 25.9776 22.6668C27.2962 20.6934 28 18.3734 28 16C27.9988 12.8178 26.7342 9.76618 24.484 7.51599C22.2338 5.2658 19.1822 4.00115 16 4ZM16 8.8C16.5807 8.8 17.1483 8.97219 17.6312 9.2948C18.114 9.61742 18.4903 10.076 18.7125 10.6124C18.9347 11.1489 18.9929 11.7393 18.8796 12.3088C18.7663 12.8783 18.4867 13.4015 18.0761 13.8121C17.6655 14.2227 17.1423 14.5023 16.5728 14.6156C16.0033 14.7289 15.4129 14.6707 14.8764 14.4485C14.34 14.2263 13.8814 13.85 13.5588 13.3672C13.2362 12.8843 13.064 12.3167 13.064 11.736C13.0645 10.9575 13.374 10.211 13.9245 9.66049C14.475 9.11 15.2215 8.80051 16 8.8ZM21.224 21.2C21.2242 21.7291 21.0147 22.2368 20.6413 22.6117C20.2679 22.9866 19.7611 23.1981 19.232 23.2H12.768C12.2389 23.1981 11.7321 22.9866 11.3587 22.6117C10.9853 22.2368 10.7758 21.7291 10.776 21.2V19.864C10.7768 18.8182 11.1925 17.8155 11.932 17.076C12.6715 16.3365 13.6742 15.9208 14.72 15.92H17.28C18.3258 15.9208 19.3285 16.3365 20.068 17.076C20.8075 17.8155 21.2232 18.8182 21.224 19.864V21.2Z\" fill=\"#ABABAB\" />\n </svg>\n);\n\nconst EditIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M5.293 15.619L15.619 5.29299C16.009 4.90299 16.642 4.90299 17.032 5.29299L18.708 6.96899C19.098 7.35899 19.098 7.99199 18.708 8.38199L8.381 18.707C8.194 18.895 7.94 19 7.675 19H5V16.325C5 16.06 5.105 15.806 5.293 15.619Z\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M13.75 7.16016L16.84 10.2502\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst CrossIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M3.00012 3L9.00012 9\" stroke=\"white\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M9.00012 3L3.00012 9\" stroke=\"white\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n);\n\nexport interface AvatarProps {\n src?: string | null;\n alt?: string;\n size?: number;\n onUpload?: (file: File) => void;\n onEdit?: () => void;\n onRemove?: () => void;\n className?: string;\n}\n\nexport const Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n (\n {\n src,\n alt = \"Avatar\",\n size = 56,\n onUpload,\n onEdit,\n onRemove,\n className,\n },\n ref\n ) => {\n const [isHovered, setIsHovered] = React.useState(false);\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n\n const handleFileChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (file && onUpload) {\n onUpload(file);\n }\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\";\n }\n },\n [onUpload]\n );\n\n const handleClick = React.useCallback(() => {\n if (src) {\n if (onEdit) {\n onEdit();\n } else if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n } else {\n if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n }\n }, [src, onEdit]);\n\n const handleRemove = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (onRemove) {\n onRemove();\n }\n },\n [onRemove]\n );\n\n const hasImage = Boolean(src);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"astrum-avatar\",\n {\n \"astrum-avatar--has-image\": hasImage,\n \"astrum-avatar--hovered\": isHovered,\n },\n className\n )}\n style={{ width: size, height: size }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onClick={handleClick}\n >\n {onUpload && (\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n onChange={handleFileChange}\n className=\"astrum-avatar__input\"\n />\n )}\n {hasImage ? (\n <>\n <div className=\"astrum-avatar__body\">\n <img src={src!} alt={alt} className=\"astrum-avatar__image\" />\n <div className=\"astrum-avatar__overlay\" aria-hidden />\n {(onEdit || onUpload) && (\n <div className=\"astrum-avatar__edit-icon\" aria-hidden>\n <EditIcon />\n </div>\n )}\n </div>\n {onRemove && (\n <button\n type=\"button\"\n className=\"astrum-avatar__remove-button\"\n onClick={handleRemove}\n aria-label=\"Удалить аватар\"\n >\n <CrossIcon />\n </button>\n )}\n </>\n ) : (\n <div className=\"astrum-avatar__body\">\n <div className=\"astrum-avatar__placeholder\" aria-hidden>\n <span className=\"astrum-avatar__user-icon\">\n <UserIcon />\n </span>\n </div>\n <div className=\"astrum-avatar__overlay\" aria-hidden />\n <div className=\"astrum-avatar__add-icon\" aria-hidden>\n <EditIcon />\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nAvatar.displayName = \"Avatar\";\n","import * as React from \"react\";\nimport \"./DatePicker.css\";\n\nconst CalendarIcon = ({ isActive }: { isActive?: boolean }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M3 8.40004C3 6.70264 3 5.85485 3.5274 5.32745C4.0548 4.80005 4.9026 4.80005 6.6 4.80005H17.4C19.0974 4.80005 19.9452 4.80005 20.4726 5.32745C21 5.85485 21 6.70264 21 8.40004C21 8.82394 21 9.03634 20.8686 9.16864C20.7363 9.30004 20.523 9.30004 20.1 9.30004H3.9C3.4761 9.30004 3.2637 9.30004 3.1314 9.16864C3 9.03634 3 8.82304 3 8.40004Z\" fill={isActive ? \"#2653F2\" : \"#ABABAB\"}/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M3.5274 19.5727C3 19.0453 3 18.1975 3 16.5001V12.0001C3 11.5762 3 11.3638 3.1314 11.2315C3.2637 11.1001 3.477 11.1001 3.9 11.1001H20.1C20.5239 11.1001 20.7363 11.1001 20.8686 11.2315C21 11.3638 21 11.5762 21 12.0001V16.5001C21 18.1975 21 19.0453 20.4726 19.5727C19.9452 20.1001 19.0974 20.1001 17.4 20.1001H6.6C4.9026 20.1001 4.0548 20.1001 3.5274 19.5727ZM8.4 14.7001C8.1613 14.7001 7.93239 14.7949 7.7636 14.9637C7.59482 15.1325 7.5 15.3614 7.5 15.6001C7.5 15.8388 7.59482 16.0677 7.7636 16.2365C7.93239 16.4053 8.1613 16.5001 8.4 16.5001H15.6C15.8387 16.5001 16.0676 16.4053 16.2364 16.2365C16.4052 16.0677 16.5 15.8388 16.5 15.6001C16.5 15.3614 16.4052 15.1325 16.2364 14.9637C16.0676 14.7949 15.8387 14.7001 15.6 14.7001H8.4Z\" fill={isActive ? \"#2653F2\" : \"#ABABAB\"}/>\n <path d=\"M7.5 3V5.69999M16.5 3V5.69999\" stroke={isActive ? \"#2653F2\" : \"#ABABAB\"} strokeWidth=\"2\" strokeLinecap=\"round\"/>\n </svg>\n);\n\nconst ChevronLeftIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M15 6L9 12L15 18\" stroke=\"#ABABAB\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n);\n\nconst ChevronRightIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 18L15 12L9 6\" stroke=\"#ABABAB\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n);\n\nconst ClockIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M10 2.5C14.1423 2.5 17.5 5.85777 17.5 10C17.5 14.1423 14.1423 17.5001 10 17.5001C5.85775 17.5001 2.5 14.1423 2.5 10C2.5 5.85777 5.85775 2.5 10 2.5ZM10 5.50002C9.80109 5.50002 9.61032 5.57903 9.46967 5.71969C9.32902 5.86034 9.25 6.05111 9.25 6.25002V10C9.25004 10.1989 9.32909 10.3897 9.46975 10.5303L11.7198 12.7803C11.8612 12.9169 12.0507 12.9925 12.2473 12.9908C12.4439 12.9891 12.6321 12.9102 12.7711 12.7712C12.9102 12.6321 12.989 12.444 12.9908 12.2474C12.9925 12.0507 12.9169 11.8613 12.7802 11.7198L10.75 9.68954V6.25002C10.75 6.05111 10.671 5.86034 10.5303 5.71969C10.3897 5.57903 10.1989 5.50002 10 5.50002Z\" fill=\"#ABABAB\"/>\n </svg>\n);\n\nconst formatDate = (date: Date | null): string => {\n if (!date) return \"\";\n const day = String(date.getDate()).padStart(2, \"0\");\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const year = date.getFullYear();\n return `${day}.${month}.${year}`;\n};\n\nconst parseDate = (value: string): Date | null => {\n const match = value.match(/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/);\n if (!match) return null;\n const [, day, month, year] = match;\n const date = new Date(parseInt(year), parseInt(month) - 1, parseInt(day));\n if (\n date.getFullYear() === parseInt(year) &&\n date.getMonth() === parseInt(month) - 1 &&\n date.getDate() === parseInt(day)\n ) {\n return date;\n }\n return null;\n};\n\nconst formatTime = (date: Date | null): string => {\n if (!date) return \"\";\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n return `${hours}:${minutes}`;\n};\n\nconst parseTime = (value: string): { hours: number; minutes: number } | null => {\n const match = value.match(/^(\\d{2}):(\\d{2})$/);\n if (!match) return null;\n const hours = parseInt(match[1]);\n const minutes = parseInt(match[2]);\n if (hours >= 0 && hours < 24 && minutes >= 0 && minutes < 60) {\n return { hours, minutes };\n }\n return null;\n};\n\nconst getDaysInMonth = (date: Date): number => {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n};\n\nconst getFirstDayOfMonth = (date: Date): number => {\n const firstDay = new Date(date.getFullYear(), date.getMonth(), 1);\n return firstDay.getDay() === 0 ? 6 : firstDay.getDay() - 1;\n};\n\nconst isSameDay = (date1: Date | null, date2: Date | null): boolean => {\n if (!date1 || !date2) return false;\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n};\n\nconst isToday = (date: Date): boolean => {\n const today = new Date();\n return isSameDay(date, today);\n};\n\nconst isDateInRange = (date: Date, start: Date | null, end: Date | null): boolean => {\n if (!start || !end) return false;\n const dateTime = date.getTime();\n const startTime = start.getTime();\n const endTime = end.getTime();\n return dateTime >= startTime && dateTime <= endTime;\n};\n\nconst isDateRangeStart = (date: Date, start: Date | null, end: Date | null): boolean => {\n if (!start) return false;\n return isSameDay(date, start);\n};\n\nconst isDateRangeEnd = (date: Date, start: Date | null, end: Date | null): boolean => {\n if (!end) return false;\n return isSameDay(date, end);\n};\n\nconst monthNames = [\n \"Январь\",\n \"Февраль\",\n \"Март\",\n \"Апрель\",\n \"Май\",\n \"Июнь\",\n \"Июль\",\n \"Август\",\n \"Сентябрь\",\n \"Октябрь\",\n \"Ноябрь\",\n \"Декабрь\",\n];\n\nconst weekDays = [\"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\", \"Вс\"];\n\nexport type DateRange = [Date | null, Date | null];\n\nexport interface DatePickerProps {\n placeholder?: string;\n placeholderFrom?: string;\n placeholderTo?: string;\n value?: Date | null | DateRange;\n defaultValue?: Date | null | DateRange;\n onChange?: ((date: Date | null) => void) | ((range: DateRange) => void);\n error?: string;\n required?: boolean;\n disabled?: boolean;\n showTime?: boolean;\n timeLabel?: string;\n range?: boolean;\n className?: string;\n id?: string;\n}\n\nexport const DatePicker = React.forwardRef<HTMLInputElement, DatePickerProps>(\n (\n {\n placeholder = \"Дата\",\n placeholderFrom = \"От\",\n placeholderTo = \"До\",\n value,\n defaultValue,\n onChange,\n error,\n required,\n disabled,\n showTime = false,\n timeLabel = \"Время (UTC):\",\n range = false,\n className = \"\",\n id: idProp,\n },\n ref\n ) => {\n const id = React.useId();\n const inputId = idProp ?? id;\n const [isOpen, setIsOpen] = React.useState(false);\n const [internalDate, setInternalDate] = React.useState<Date | null>(\n range ? null : (defaultValue as Date | null) ?? null\n );\n const [internalRange, setInternalRange] = React.useState<DateRange>(\n range ? (defaultValue as DateRange | undefined) ?? [null, null] : [null, null]\n );\n const [selectingStart, setSelectingStart] = React.useState(true);\n const [internalTime, setInternalTime] = React.useState<string>(\n !range && defaultValue ? formatTime(defaultValue as Date) : \"\"\n );\n const [viewDate, setViewDate] = React.useState<Date>(() => {\n if (range) {\n const rangeValue = (value as DateRange | undefined) ?? (defaultValue as DateRange | undefined);\n return rangeValue?.[0] ? new Date(rangeValue[0].getFullYear(), rangeValue[0].getMonth(), 1) : new Date();\n }\n return value ? (value as Date) : defaultValue ? (defaultValue as Date) : new Date();\n });\n const getRangeDisplayValue = (rangeValue: DateRange): string => {\n if (!rangeValue[0] && !rangeValue[1]) return \"\";\n if (rangeValue[0] && rangeValue[1]) {\n return `${formatDate(rangeValue[0])} — ${formatDate(rangeValue[1])}`;\n }\n if (rangeValue[0]) {\n return formatDate(rangeValue[0]);\n }\n return \"\";\n };\n\n const [inputValue, setInputValue] = React.useState<string>(() => {\n if (range) {\n const rangeValue = (value as DateRange | undefined) ?? (defaultValue as DateRange | undefined);\n return rangeValue ? getRangeDisplayValue(rangeValue) : \"\";\n }\n return value ? formatDate(value as Date) : defaultValue ? formatDate(defaultValue as Date) : \"\";\n });\n const [timeValue, setTimeValue] = React.useState<string>(\n !range && value && showTime ? formatTime(value as Date) : !range && defaultValue && showTime ? formatTime(defaultValue as Date) : \"\"\n );\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n const calendarRef = React.useRef<HTMLDivElement | null>(null);\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const timeInputRef = React.useRef<HTMLInputElement | null>(null);\n\n const isControlled = value !== undefined;\n const currentDate = range ? null : (isControlled ? (value as Date | null) : internalDate);\n const currentRange = range ? (isControlled ? (value as DateRange) : internalRange) : [null, null];\n\n const setCombinedRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref]\n );\n\n React.useEffect(() => {\n if (range) {\n const rangeValue = value as DateRange | undefined;\n if (isControlled && rangeValue) {\n setInputValue(getRangeDisplayValue(rangeValue));\n if (rangeValue[0]) {\n setViewDate(new Date(rangeValue[0].getFullYear(), rangeValue[0].getMonth(), 1));\n }\n } else if (isControlled && (!rangeValue || (!rangeValue[0] && !rangeValue[1]))) {\n setInputValue(\"\");\n }\n } else {\n if (isControlled && value) {\n setInputValue(formatDate(value as Date));\n if (showTime) {\n setTimeValue(formatTime(value as Date));\n }\n setViewDate(new Date((value as Date).getFullYear(), (value as Date).getMonth(), 1));\n } else if (isControlled && !value) {\n setInputValue(\"\");\n if (showTime) {\n setTimeValue(\"\");\n }\n }\n }\n }, [value, isControlled, showTime, range]);\n\n React.useEffect(() => {\n if (range) {\n const rangeDefault = defaultValue as DateRange | undefined;\n if (!isControlled && rangeDefault !== undefined) {\n setInternalRange(rangeDefault);\n setInputValue(getRangeDisplayValue(rangeDefault));\n if (rangeDefault[0]) {\n setViewDate(new Date(rangeDefault[0].getFullYear(), rangeDefault[0].getMonth(), 1));\n }\n }\n } else {\n if (!isControlled && defaultValue !== undefined) {\n setInternalDate(defaultValue as Date | null);\n setInputValue(defaultValue ? formatDate(defaultValue as Date) : \"\");\n if (showTime && defaultValue) {\n setTimeValue(formatTime(defaultValue as Date));\n setInternalTime(formatTime(defaultValue as Date));\n }\n if (defaultValue) {\n setViewDate(new Date((defaultValue as Date).getFullYear(), (defaultValue as Date).getMonth(), 1));\n }\n }\n }\n }, [defaultValue, isControlled, showTime, range]);\n\n React.useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.target as Node) &&\n calendarRef.current &&\n !calendarRef.current.contains(e.target as Node)\n ) {\n if (range) {\n if (currentRange[0] && currentRange[1]) {\n setIsOpen(false);\n }\n } else {\n setIsOpen(false);\n }\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }\n }, [isOpen, range, currentRange]);\n\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setInputValue(newValue);\n \n if (range) {\n const rangeMatch = newValue.match(/^(\\d{2}\\.\\d{2}\\.\\d{4})\\s*—\\s*(\\d{2}\\.\\d{2}\\.\\d{4})$/);\n if (rangeMatch) {\n const parsedFrom = parseDate(rangeMatch[1]);\n const parsedTo = parseDate(rangeMatch[2]);\n const newRange: DateRange = [parsedFrom, parsedTo];\n if (isControlled) {\n (onChange as (range: DateRange) => void)?.(newRange);\n } else {\n setInternalRange(newRange);\n (onChange as (range: DateRange) => void)?.(newRange);\n }\n if (parsedFrom) {\n setViewDate(new Date(parsedFrom.getFullYear(), parsedFrom.getMonth(), 1));\n }\n } else {\n const singleDateMatch = newValue.match(/^(\\d{2}\\.\\d{2}\\.\\d{4})$/);\n if (singleDateMatch) {\n const parsed = parseDate(singleDateMatch[1]);\n const newRange: DateRange = [parsed, null];\n if (isControlled) {\n (onChange as (range: DateRange) => void)?.(newRange);\n } else {\n setInternalRange(newRange);\n (onChange as (range: DateRange) => void)?.(newRange);\n }\n if (parsed) {\n setViewDate(new Date(parsed.getFullYear(), parsed.getMonth(), 1));\n }\n } else if (newValue === \"\") {\n const newRange: DateRange = [null, null];\n if (isControlled) {\n (onChange as (range: DateRange) => void)?.(newRange);\n } else {\n setInternalRange(newRange);\n (onChange as (range: DateRange) => void)?.(newRange);\n }\n }\n }\n return;\n }\n \n const parsed = parseDate(newValue);\n if (parsed) {\n if (showTime && timeValue) {\n const time = parseTime(timeValue);\n if (time) {\n parsed.setHours(time.hours, time.minutes);\n }\n }\n if (isControlled) {\n (onChange as (date: Date | null) => void)?.(parsed);\n } else {\n setInternalDate(parsed);\n (onChange as (date: Date | null) => void)?.(parsed);\n }\n } else if (newValue === \"\") {\n if (isControlled) {\n (onChange as (date: Date | null) => void)?.(null);\n } else {\n setInternalDate(null);\n (onChange as (date: Date | null) => void)?.(null);\n }\n }\n };\n\n const handleTimeChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (range) return;\n const newValue = e.target.value;\n setTimeValue(newValue);\n const parsed = parseTime(newValue);\n if (parsed && currentDate) {\n const newDate = new Date(currentDate);\n newDate.setHours(parsed.hours, parsed.minutes);\n if (isControlled) {\n (onChange as (date: Date | null) => void)?.(newDate);\n } else {\n setInternalDate(newDate);\n (onChange as (date: Date | null) => void)?.(newDate);\n }\n }\n setInternalTime(newValue);\n };\n\n const handleDateClick = (day: number, isOtherMonth: boolean) => {\n if (disabled) return;\n const newDate = new Date(viewDate);\n if (isOtherMonth) {\n if (day > 15) {\n newDate.setMonth(newDate.getMonth() - 1);\n } else {\n newDate.setMonth(newDate.getMonth() + 1);\n }\n }\n newDate.setDate(day);\n\n if (range) {\n let newRange: DateRange;\n if (!currentRange[0]) {\n newRange = [newDate, null];\n setSelectingStart(false);\n } else if (!currentRange[1]) {\n if (newDate.getTime() < currentRange[0]!.getTime()) {\n newRange = [newDate, currentRange[0]];\n } else {\n newRange = [currentRange[0], newDate];\n }\n setSelectingStart(true);\n } else {\n newRange = [newDate, null];\n setSelectingStart(false);\n }\n setViewDate(new Date(newDate.getFullYear(), newDate.getMonth(), 1));\n if (isControlled) {\n (onChange as (range: DateRange) => void)?.(newRange);\n } else {\n setInternalRange(newRange);\n (onChange as (range: DateRange) => void)?.(newRange);\n }\n setInputValue(getRangeDisplayValue(newRange));\n if (newRange[0] && newRange[1] && !showTime) {\n setIsOpen(false);\n }\n } else {\n if (showTime && timeValue) {\n const time = parseTime(timeValue);\n if (time) {\n newDate.setHours(time.hours, time.minutes);\n }\n }\n setViewDate(new Date(newDate.getFullYear(), newDate.getMonth(), 1));\n if (isControlled) {\n (onChange as (date: Date | null) => void)?.(newDate);\n } else {\n setInternalDate(newDate);\n (onChange as (date: Date | null) => void)?.(newDate);\n }\n setInputValue(formatDate(newDate));\n if (!showTime) {\n setIsOpen(false);\n }\n }\n };\n\n const handlePrevMonth = () => {\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() - 1, 1));\n };\n\n const handleNextMonth = () => {\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + 1, 1));\n };\n\n const renderCalendar = () => {\n const daysInMonth = getDaysInMonth(viewDate);\n const firstDay = getFirstDayOfMonth(viewDate);\n const days: Array<{ day: number; isOtherMonth: boolean }> = [];\n\n const prevMonth = new Date(viewDate.getFullYear(), viewDate.getMonth() - 1, 0);\n const daysInPrevMonth = prevMonth.getDate();\n\n for (let i = firstDay - 1; i >= 0; i--) {\n days.push({ day: daysInPrevMonth - i, isOtherMonth: true });\n }\n\n for (let i = 1; i <= daysInMonth; i++) {\n days.push({ day: i, isOtherMonth: false });\n }\n\n const remainingDays = 35 - days.length;\n for (let i = 1; i <= remainingDays; i++) {\n days.push({ day: i, isOtherMonth: true });\n }\n\n return days;\n };\n\n const calendarDays = renderCalendar();\n const isActive = isOpen;\n\n return (\n <div ref={containerRef} className={`astrum-datepicker ${range ? \"astrum-datepicker--range\" : \"\"} ${error ? \"astrum-datepicker--error\" : \"\"} ${className}`.trim()}>\n <div className=\"astrum-datepicker__wrap\">\n <input\n ref={setCombinedRef}\n id={inputId}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onFocus={() => !disabled && setIsOpen(true)}\n placeholder={range ? `${placeholderFrom} — ${placeholderTo}` : placeholder}\n disabled={disabled}\n className={`astrum-datepicker__field ${error ? \"astrum-datepicker__field--invalid\" : \"\"}`.trim()}\n aria-invalid={!!error}\n aria-required={required}\n aria-describedby={error ? `${inputId}-error` : undefined}\n aria-expanded={isOpen}\n />\n <button\n type=\"button\"\n className={`astrum-datepicker__icon ${isActive ? \"astrum-datepicker__icon--active\" : \"\"}`}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n disabled={disabled}\n aria-label=\"Открыть календарь\"\n >\n <CalendarIcon isActive={isActive} />\n </button>\n </div>\n {error != null && (\n <span id={`${inputId}-error`} className=\"astrum-datepicker__error\" role=\"alert\">\n {error}\n </span>\n )}\n {isOpen && (\n <div ref={calendarRef} className=\"astrum-datepicker__calendar\">\n <div className=\"astrum-datepicker__calendar-header\">\n <button\n type=\"button\"\n className=\"astrum-datepicker__calendar-nav\"\n onClick={handlePrevMonth}\n aria-label=\"Предыдущий месяц\"\n >\n <ChevronLeftIcon />\n </button>\n <div className=\"astrum-datepicker__calendar-month\">\n {monthNames[viewDate.getMonth()]} {viewDate.getFullYear()}\n </div>\n <button\n type=\"button\"\n className=\"astrum-datepicker__calendar-nav\"\n onClick={handleNextMonth}\n aria-label=\"Следующий месяц\"\n >\n <ChevronRightIcon />\n </button>\n </div>\n <div className=\"astrum-datepicker__calendar-weekdays\">\n {weekDays.map((day) => (\n <div key={day} className=\"astrum-datepicker__calendar-weekday\">\n {day}\n </div>\n ))}\n </div>\n <div className=\"astrum-datepicker__calendar-days\">\n {calendarDays.map(({ day, isOtherMonth }, index) => {\n const dayDate = new Date(viewDate.getFullYear(), viewDate.getMonth() + (isOtherMonth ? (day > 15 ? -1 : 1) : 0), day);\n const isCurrentDay = !isOtherMonth && isToday(dayDate);\n let isSelected: boolean;\n let isInRange = false;\n let isRangeStart = false;\n let isRangeEnd = false;\n \n if (range) {\n const hasSelectedRange = currentRange[0] != null || currentRange[1] != null;\n isSelected = hasSelectedRange\n ? (currentRange[0] != null && isSameDay(dayDate, currentRange[0])) || (currentRange[1] != null && isSameDay(dayDate, currentRange[1])) || false\n : isCurrentDay;\n \n if (currentRange[0] && currentRange[1]) {\n isInRange = isDateInRange(dayDate, currentRange[0], currentRange[1]) && !isSelected;\n isRangeStart = isDateRangeStart(dayDate, currentRange[0], currentRange[1]);\n isRangeEnd = isDateRangeEnd(dayDate, currentRange[0], currentRange[1]);\n }\n } else {\n isSelected = currentDate ? isSameDay(dayDate, currentDate) : isCurrentDay;\n }\n \n return (\n <button\n key={`${day}-${isOtherMonth}-${index}`}\n type=\"button\"\n className={`astrum-datepicker__calendar-day ${isOtherMonth ? \"astrum-datepicker__calendar-day--other-month\" : \"\"} ${isSelected ? \"astrum-datepicker__calendar-day--selected\" : \"\"} ${isInRange ? \"astrum-datepicker__calendar-day--in-range\" : \"\"} ${isRangeStart ? \"astrum-datepicker__calendar-day--range-start\" : \"\"} ${isRangeEnd ? \"astrum-datepicker__calendar-day--range-end\" : \"\"}`}\n onClick={() => handleDateClick(day, isOtherMonth)}\n disabled={disabled}\n >\n {day}\n </button>\n );\n })}\n </div>\n {showTime && (\n <div className=\"astrum-datepicker__calendar-time\">\n <label className=\"astrum-datepicker__calendar-time-label\">{timeLabel}</label>\n <div className=\"astrum-datepicker__calendar-time-input-wrap\">\n <input\n ref={timeInputRef}\n type=\"text\"\n value={timeValue}\n onChange={handleTimeChange}\n placeholder=\"00:00\"\n className=\"astrum-datepicker__calendar-time-input\"\n />\n <span className=\"astrum-datepicker__calendar-time-icon\" aria-hidden>\n <ClockIcon />\n </span>\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nDatePicker.displayName = \"DatePicker\";\n"],"mappings":"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","names":["React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","CHECK_ICON","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","ref","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","CloseIcon","React","import_jsx_runtime","React","import_jsx_runtime","parsed"]}
|