astrum-ui 0.1.1
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/Avatar/Avatar.css +148 -0
- package/dist/Button/Button.css +170 -0
- package/dist/Checkbox/Checkbox.css +112 -0
- package/dist/Chips/Chips.css +63 -0
- package/dist/ColorPicker/ColorPicker.css +50 -0
- package/dist/FileUpload/FileUpload.css +191 -0
- package/dist/Input/Input.css +230 -0
- package/dist/InputCode/InputCode.css +98 -0
- package/dist/Radio/Radio.css +106 -0
- package/dist/Select/Select.css +210 -0
- package/dist/Toggler/Toggler.css +83 -0
- package/dist/index.css +221 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.mts +136 -0
- package/dist/index.d.ts +136 -0
- package/dist/index.js +1264 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1216 -0
- package/dist/index.mjs.map +1 -0
- package/dist/styles.css +11 -0
- package/package.json +53 -0
|
@@ -0,0 +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"],"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\";\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 size?: \"s\" | \"m\";\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 size = \"m\",\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 size === \"s\" ? \"astrum-checkbox--s\" : \"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) {\n if (isControlled && onChange) {\n const syntheticEvent = {\n ...e,\n target: inputRef.current,\n currentTarget: inputRef.current,\n } as React.ChangeEvent<HTMLInputElement>;\n Object.defineProperty(syntheticEvent.target, \"value\", {\n writable: true,\n value: \"\",\n });\n onChange(syntheticEvent);\n } else {\n setInternalValue(\"\");\n inputRef.current.value = \"\";\n if (onChange) {\n const syntheticEvent = {\n ...e,\n target: inputRef.current,\n currentTarget: inputRef.current,\n } as React.ChangeEvent<HTMLInputElement>;\n Object.defineProperty(syntheticEvent.target, \"value\", {\n writable: true,\n value: \"\",\n });\n onChange(syntheticEvent);\n }\n }\n inputRef.current.focus();\n }\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 width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden>\n <path\n d=\"M5 7.5l5 5 5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport interface SelectOption {\n value: string;\n label: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, \"size\"> {\n label?: React.ReactNode;\n error?: string;\n required?: boolean;\n options: SelectOption[];\n placeholder?: string;\n size?: \"s\" | \"m\" | \"l\";\n className?: string;\n}\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n label,\n error,\n required,\n options,\n placeholder,\n size = \"m\",\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 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 : defaultValue ?? \"\";\n const selectedOption = currentValue ? options.find((opt) => opt.value === currentValue) : null;\n const displayValue = selectedOption ? selectedOption.label : placeholder ?? \"\";\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 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 <>\n <div\n ref={containerRef}\n className={`astrum-select ${size === \"s\" ? \"astrum-select--s\" : size === \"l\" ? \"astrum-select--l\" : \"astrum-select--m\"} ${error ? \"astrum-select--error\" : \"\"} ${isOpen ? \"astrum-select--open\" : \"\"} ${className}`.trim()}\n >\n {label != null && (\n <label htmlFor={selectId} className=\"astrum-select__label\">\n {label}\n {required && <span className=\"astrum-select__required\" aria-hidden>*</span>}\n </label>\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 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\" : \"\"}`}\n onClick={() => !option.disabled && handleOptionClick(option.value)}\n disabled={option.disabled}\n >\n {option.label}\n </button>\n ))}\n </div>\n )}\n </>\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 width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" aria-hidden>\n <path\n d=\"M24 8v24m0 0l-8-8m8 8l8-8M8 32h32\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst FileIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden>\n <path\n d=\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path d=\"M14 2v6h6\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst CloseIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\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 defaultLabel = label ?? (accept?.includes(\"pdf\") ? \"Выберите PDF-файлы\" : \"Выберите файлы\");\n const defaultDescription =\n description ??\n (size === \"large\"\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\nexport interface FileItemProps {\n name: string;\n size?: number | string;\n icon?: React.ReactNode;\n onRemove?: () => void;\n className?: string;\n}\n\nexport const FileItem = React.forwardRef<HTMLDivElement, FileItemProps>(\n ({ name, size, icon, onRemove, className = \"\" }, ref) => {\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__icon\">{icon ?? <FileIcon />}</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 {onRemove != null && (\n <button\n type=\"button\"\n className=\"astrum-file-item__remove\"\n onClick={onRemove}\n aria-label=\"Удалить файл\"\n >\n <CloseIcon />\n </button>\n )}\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 width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path\n d=\"M4 4l8 8M12 4l-8 8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\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"],"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"]}
|