ics-ui-kit 0.1.16 → 0.1.18

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.
Files changed (46) hide show
  1. package/dist/{CheckboxField-2zNFubvm.js → CheckboxField-limFbMk2.js} +43 -43
  2. package/dist/CheckboxField-limFbMk2.js.map +1 -0
  3. package/dist/{Command-D5zgJ7-y.js → Command-B7ZRyW8w.js} +2 -2
  4. package/dist/Command-B7ZRyW8w.js.map +1 -0
  5. package/dist/{FormFooterTemplate-Cfn5Nmge.js → FormFooterTemplate-BRrgrxAu.js} +2 -2
  6. package/dist/{FormFooterTemplate-Cfn5Nmge.js.map → FormFooterTemplate-BRrgrxAu.js.map} +1 -1
  7. package/dist/{InputGroup-BvD9Igmt.js → InputGroup-BcRWP-zL.js} +20 -22
  8. package/dist/InputGroup-BcRWP-zL.js.map +1 -0
  9. package/dist/{Select-MLPTpIl5.js → Select-D9juHX8o.js} +7 -8
  10. package/dist/{Select-MLPTpIl5.js.map → Select-D9juHX8o.js.map} +1 -1
  11. package/dist/{TextInput-Cj50ImXi.js → TextInput-Db0ylY91.js} +2 -2
  12. package/dist/{TextInput-Cj50ImXi.js.map → TextInput-Db0ylY91.js.map} +1 -1
  13. package/dist/blocks/auth/otp-form.js +1 -1
  14. package/dist/components/checkbox.js +1 -1
  15. package/dist/components/command.js +1 -1
  16. package/dist/components/dialog.js +1 -1
  17. package/dist/components/drawer.js +1 -1
  18. package/dist/components/form.js +1 -1
  19. package/dist/components/image-uploader.js +8 -8
  20. package/dist/components/image-uploader.js.map +1 -1
  21. package/dist/components/input.js +5 -5
  22. package/dist/components/radio-group.js +10 -10
  23. package/dist/components/radio-group.js.map +1 -1
  24. package/dist/components/search-select.js +40 -40
  25. package/dist/components/search-select.js.map +1 -1
  26. package/dist/components/select/Select.d.ts +0 -3
  27. package/dist/components/select.js +1 -1
  28. package/dist/components/sidebar.js +1 -1
  29. package/dist/components/table/tree.js +1 -1
  30. package/dist/components/table.js +1 -1
  31. package/dist/components/tag-input.js +2 -2
  32. package/dist/components/textarea.js +1 -1
  33. package/dist/{inputBaseStyles-DbzD_jvq.js → inputBaseStyles-BfZIWuQ6.js} +5 -5
  34. package/dist/inputBaseStyles-BfZIWuQ6.js.map +1 -0
  35. package/dist/styles-scoped.css +93 -132
  36. package/dist/styles.css +93 -132
  37. package/dist/theme.css +4 -12
  38. package/dist/{treeModel-jvOXFZvK.js → treeModel-BlJWP4sc.js} +2 -2
  39. package/dist/treeModel-BlJWP4sc.js.map +1 -0
  40. package/package.json +1 -1
  41. package/tailwind.preset.js +10 -14
  42. package/dist/CheckboxField-2zNFubvm.js.map +0 -1
  43. package/dist/Command-D5zgJ7-y.js.map +0 -1
  44. package/dist/InputGroup-BvD9Igmt.js.map +0 -1
  45. package/dist/inputBaseStyles-DbzD_jvq.js.map +0 -1
  46. package/dist/treeModel-jvOXFZvK.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TextInput-Cj50ImXi.js","sources":["../node_modules/.pnpm/lucide-react@0.460.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/copy.js","../src/hooks/useControlledValue.ts","../src/hooks/useCopyAction.ts","../src/hooks/useAutofill.ts","../src/hooks/useInputWithActions.ts","../src/components/input/text-input/TextInput.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Copy = createLucideIcon(\"Copy\", [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n]);\n\nexport { Copy as default };\n//# sourceMappingURL=copy.js.map\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\n/**\n * Хук для управления контролируемым и неконтролируемым состоянием\n */\nexport function useControlledValue(\n\tvalue: string | number | readonly string[] | undefined,\n\tdefaultValue: string | number | readonly string[] | undefined,\n\tonChange?: (value: string | null) => void\n) {\n\tconst [uncontrolledValue, setUncontrolledValue] = useState(\n\t\ttypeof defaultValue === \"string\" ? defaultValue : String(defaultValue ?? \"\")\n\t);\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\t// Добавляем обработчик для отслеживания изменений в uncontrolled режиме\n\tuseEffect(() => {\n\t\tif (value !== undefined) return;\n\n\t\tconst input = inputRef.current;\n\t\tif (!input) return;\n\n\t\tconst handleInput = () => {\n\t\t\tsetUncontrolledValue(input.value);\n\t\t};\n\n\t\tinput.addEventListener(\"input\", handleInput);\n\t\treturn () => input.removeEventListener(\"input\", handleInput);\n\t}, [value, inputRef]);\n\n\tconst getCurrentValue = useCallback(() => {\n\t\tif (value !== undefined) return String(value);\n\t\treturn uncontrolledValue;\n\t}, [value, uncontrolledValue]);\n\n\tconst handleChange = useCallback(\n\t\t(e: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tonChange?.(e.target.value);\n\t\t},\n\t\t[onChange]\n\t);\n\n\treturn {\n\t\tinputRef,\n\t\tgetCurrentValue,\n\t\thandleChange,\n\t\tcurrentValue: getCurrentValue()\n\t};\n}\n","import { useCallback, useEffect, useState } from \"react\";\n\n/**\n * Хук для копирования содержимого в буфер обмена\n */\nexport function useCopyAction() {\n\tconst [hasCopied, setHasCopied] = useState(false);\n\n\t// Эффект для сброса статуса копирования\n\tuseEffect(() => {\n\t\tif (!hasCopied) return;\n\t\tconst timeout = setTimeout(() => {\n\t\t\tsetHasCopied(false);\n\t\t}, 2000);\n\t\treturn () => clearTimeout(timeout);\n\t}, [hasCopied]);\n\n\tconst handleCopy = useCallback((value: string) => {\n\t\tif (value) {\n\t\t\tnavigator.clipboard.writeText(value);\n\t\t\tsetHasCopied(true);\n\t\t}\n\t}, []);\n\n\treturn {\n\t\thasCopied,\n\t\thandleCopy\n\t};\n}\n","import { useEffect, useRef, useState } from \"react\";\n\n/**\n * Хук для определения состояния автозаполнения input'а\n */\nexport function useAutofill() {\n\tconst [isAutofilled, setIsAutofilled] = useState(false);\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\tuseEffect(() => {\n\t\tconst input = inputRef.current;\n\t\tif (!input) return;\n\n\t\tconst checkAutofill = (element: Element): boolean => {\n\t\t\ttry {\n\t\t\t\treturn element.matches(\":-webkit-autofill\");\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\n\t\tconst updateAutofillState = () => {\n\t\t\tconst autofilled = checkAutofill(input);\n\t\t\tsetIsAutofilled(autofilled);\n\t\t};\n\n\t\tinput.addEventListener(\"input\", updateAutofillState);\n\n\t\tlet intervalCounter = 0;\n\t\tconst intervalTime = 25;\n\t\t// Максимальное время ожидания появления autofill, в ms\n\t\tconst intervalTimeLimit = 1000;\n\n\t\tconst interval = setInterval(() => {\n\t\t\tintervalCounter += intervalTime;\n\t\t\tif (intervalCounter > intervalTimeLimit) {\n\t\t\t\tclearInterval(interval);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (checkAutofill(input)) {\n\t\t\t\tsetIsAutofilled(true);\n\t\t\t\tclearInterval(interval);\n\t\t\t}\n\t\t}, intervalTime);\n\n\t\tupdateAutofillState();\n\n\t\treturn () => {\n\t\t\tclearInterval(interval);\n\t\t\tinput.removeEventListener(\"input\", updateAutofillState);\n\t\t};\n\t}, []);\n\n\treturn {\n\t\tisAutofilled,\n\t\tinputRef\n\t};\n}\n","import { useCallback, useMemo } from \"react\";\nimport { useControlledValue } from \"./useControlledValue\";\nimport { useCopyAction } from \"./useCopyAction\";\nimport { useAutofill } from \"./useAutofill\";\n\nexport interface UseInputWithActionsOptions {\n\t/** Значение input (для контролируемого режима) */\n\tvalue?: string | number | readonly string[];\n\t/** Значение по умолчанию (для неконтролируемого режима) */\n\tdefaultValue?: string | number | readonly string[];\n\t/** Колбэк на изменение значения */\n\tonChange?: (value: string | null) => void;\n\t/** Флаг только для чтения */\n\treadOnly?: boolean;\n\t/** Флаг отключения */\n\tdisabled?: boolean;\n\t/** Флаг для отображения кнопки очистки */\n\tshowClearIcon?: boolean;\n\t/** Флаг для отображения кнопки копирования */\n\tshowCopyIcon?: boolean;\n}\n\n/**\n * Общий хук для input с полным функционалом копирования и очистки\n */\nexport function useInputWithActions({\n\tvalue,\n\tdefaultValue,\n\tonChange,\n\treadOnly,\n\tdisabled,\n\tshowClearIcon = false,\n\tshowCopyIcon = false\n}: UseInputWithActionsOptions) {\n\tconst controlledValue = useControlledValue(value, defaultValue, onChange);\n\tconst copyAction = useCopyAction();\n\tconst { isAutofilled } = useAutofill();\n\n\tconst isEditable = useMemo(() => {\n\t\treturn !readOnly && !disabled;\n\t}, [readOnly, disabled]);\n\n\tconst handleClear = useCallback(() => {\n\t\tif (value !== undefined) {\n\t\t\t// Controlled mode\n\t\t\tonChange?.(\"\");\n\t\t} else {\n\t\t\t// Uncontrolled mode\n\t\t\tif (controlledValue.inputRef.current) {\n\t\t\t\tcontrolledValue.inputRef.current.value = \"\";\n\t\t\t\tcontrolledValue.inputRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }));\n\t\t\t}\n\t\t}\n\t}, [onChange, value, controlledValue.inputRef]);\n\n\tconst handleCopyValue = useCallback(() => {\n\t\tcopyAction.handleCopy(String(controlledValue.currentValue));\n\t}, [copyAction.handleCopy, controlledValue.currentValue]);\n\n\tconst shouldShowClearIcon = showClearIcon && isEditable && controlledValue.currentValue;\n\tconst shouldShowCopyIcon = showCopyIcon && controlledValue.currentValue;\n\n\treturn {\n\t\t// Значения и состояние\n\t\tcurrentValue: controlledValue.currentValue,\n\t\tinputRef: controlledValue.inputRef,\n\t\tisEditable,\n\n\t\t// Обработчики\n\t\thandleChange: controlledValue.handleChange,\n\t\thandleClear,\n\t\thandleCopy: handleCopyValue,\n\n\t\t// Состояние копирования\n\t\thasCopied: copyAction.hasCopied,\n\n\t\t// Состояние автозаполнения\n\t\tisAutofilled,\n\n\t\t// Флаги видимости кнопок\n\t\tshouldShowClearIcon,\n\t\tshouldShowCopyIcon\n\t};\n}\n","import React, { HTMLAttributes } from \"react\";\nimport { useMergeRefs } from \"@/hooks/useMergeRefs\";\nimport { useInputWithActions } from \"@/hooks/useInputWithActions\";\nimport { InputGroup, InputGroupInput, InputGroupButton, InputGroupText } from \"../input-group/InputGroup\";\nimport { CircleX, Copy, Check } from \"lucide-react\";\nimport { tv } from \"tailwind-variants\";\nimport { InputProps } from \"../input/Input\";\n\nconst textInputStyles = tv({\n\tbase: \"\",\n\tslots: {\n\t\taction: \"hidden group-focus-within/input-group:block group-hover/input-group:block\",\n\t\tstartIcon: \"!border-r-0 pr-0 text-muted\",\n\t\tendIcon: \"border-l-0 pl-0 text-muted\",\n\t\tinput: \"\"\n\t},\n\tvariants: {\n\t\thasStartIcon: { true: { input: \"pl-2\" } }\n\t}\n});\n\nexport interface TextInputProps\n\textends Omit<InputProps, \"onChange\">,\n\t\tOmit<HTMLAttributes<HTMLInputElement>, \"onChange\"> {\n\t/** Иконка, отображаемая в начале текстового поля */\n\tstartIcon?: React.ReactNode;\n\t/** Иконка, отображаемая в конце текстового поля */\n\tendIcon?: React.ReactNode;\n\t/** Флаг для отображения кнопки очистки значения */\n\tshowClearIcon?: boolean;\n\t/** Флаг для отображения кнопки копирования значения */\n\tshowCopyIcon?: boolean;\n\t/** Колбэк на изменение значения */\n\tonChange?: (value: string | null) => void;\n}\n\n/**\n * Компонент текстового поля ввода с поддержкой иконок и дополнительных действий.\n */\nexport const TextInput = React.forwardRef<HTMLInputElement, TextInputProps>(\n\t(\n\t\t{\n\t\t\tstartIcon,\n\t\t\tendIcon,\n\t\t\tshowClearIcon,\n\t\t\tshowCopyIcon,\n\t\t\tvalue,\n\t\t\tdefaultValue,\n\t\t\tonChange,\n\t\t\treadOnly,\n\t\t\tdisabled,\n\t\t\terror,\n\t\t\tclassName,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\tconst styles = textInputStyles();\n\n\t\tconst inputActions = useInputWithActions({\n\t\t\tvalue,\n\t\t\tdefaultValue,\n\t\t\tonChange,\n\t\t\treadOnly,\n\t\t\tdisabled,\n\t\t\tshowClearIcon,\n\t\t\tshowCopyIcon\n\t\t});\n\n\t\tconst mergedRef = useMergeRefs(ref, inputActions.inputRef);\n\n\t\treturn (\n\t\t\t<InputGroup className={styles.base({ className })}>\n\t\t\t\t{startIcon && <InputGroupText className={styles.startIcon()}>{startIcon}</InputGroupText>}\n\n\t\t\t\t<InputGroupInput\n\t\t\t\t\tref={mergedRef}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\tonChange={inputActions.handleChange}\n\t\t\t\t\treadOnly={readOnly}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\terror={error}\n\t\t\t\t\tclassName={styles.input({ hasStartIcon: !!startIcon })}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\n\t\t\t\t{inputActions.shouldShowClearIcon && (\n\t\t\t\t\t<InputGroupButton\n\t\t\t\t\t\ticon={CircleX}\n\t\t\t\t\t\tonClick={inputActions.handleClear}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={styles.action()}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{inputActions.shouldShowCopyIcon && (\n\t\t\t\t\t<InputGroupButton\n\t\t\t\t\t\ticon={inputActions.hasCopied ? Check : Copy}\n\t\t\t\t\t\tonClick={inputActions.handleCopy}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={styles.action()}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{endIcon && <InputGroupText className={styles.endIcon()}>{endIcon}</InputGroupText>}\n\t\t\t</InputGroup>\n\t\t);\n\t}\n);\n\nTextInput.displayName = \"TextInput\";\n\nexport default TextInput;\n"],"names":["Copy","createLucideIcon","useControlledValue","value","defaultValue","onChange","uncontrolledValue","setUncontrolledValue","useState","inputRef","useRef","useEffect","input","handleInput","getCurrentValue","useCallback","handleChange","e","useCopyAction","hasCopied","setHasCopied","timeout","handleCopy","useAutofill","isAutofilled","setIsAutofilled","checkAutofill","element","updateAutofillState","autofilled","intervalCounter","intervalTime","intervalTimeLimit","interval","useInputWithActions","readOnly","disabled","showClearIcon","showCopyIcon","controlledValue","copyAction","isEditable","useMemo","handleClear","handleCopyValue","shouldShowClearIcon","shouldShowCopyIcon","textInputStyles","tv","TextInput","React","startIcon","endIcon","error","className","props","ref","styles","inputActions","mergedRef","useMergeRefs","jsxs","InputGroup","InputGroupText","jsx","InputGroupInput","InputGroupButton","CircleX","Check"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"TextInput-Db0ylY91.js","sources":["../node_modules/.pnpm/lucide-react@0.460.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/copy.js","../src/hooks/useControlledValue.ts","../src/hooks/useCopyAction.ts","../src/hooks/useAutofill.ts","../src/hooks/useInputWithActions.ts","../src/components/input/text-input/TextInput.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Copy = createLucideIcon(\"Copy\", [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n]);\n\nexport { Copy as default };\n//# sourceMappingURL=copy.js.map\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\n/**\n * Хук для управления контролируемым и неконтролируемым состоянием\n */\nexport function useControlledValue(\n\tvalue: string | number | readonly string[] | undefined,\n\tdefaultValue: string | number | readonly string[] | undefined,\n\tonChange?: (value: string | null) => void\n) {\n\tconst [uncontrolledValue, setUncontrolledValue] = useState(\n\t\ttypeof defaultValue === \"string\" ? defaultValue : String(defaultValue ?? \"\")\n\t);\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\t// Добавляем обработчик для отслеживания изменений в uncontrolled режиме\n\tuseEffect(() => {\n\t\tif (value !== undefined) return;\n\n\t\tconst input = inputRef.current;\n\t\tif (!input) return;\n\n\t\tconst handleInput = () => {\n\t\t\tsetUncontrolledValue(input.value);\n\t\t};\n\n\t\tinput.addEventListener(\"input\", handleInput);\n\t\treturn () => input.removeEventListener(\"input\", handleInput);\n\t}, [value, inputRef]);\n\n\tconst getCurrentValue = useCallback(() => {\n\t\tif (value !== undefined) return String(value);\n\t\treturn uncontrolledValue;\n\t}, [value, uncontrolledValue]);\n\n\tconst handleChange = useCallback(\n\t\t(e: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tonChange?.(e.target.value);\n\t\t},\n\t\t[onChange]\n\t);\n\n\treturn {\n\t\tinputRef,\n\t\tgetCurrentValue,\n\t\thandleChange,\n\t\tcurrentValue: getCurrentValue()\n\t};\n}\n","import { useCallback, useEffect, useState } from \"react\";\n\n/**\n * Хук для копирования содержимого в буфер обмена\n */\nexport function useCopyAction() {\n\tconst [hasCopied, setHasCopied] = useState(false);\n\n\t// Эффект для сброса статуса копирования\n\tuseEffect(() => {\n\t\tif (!hasCopied) return;\n\t\tconst timeout = setTimeout(() => {\n\t\t\tsetHasCopied(false);\n\t\t}, 2000);\n\t\treturn () => clearTimeout(timeout);\n\t}, [hasCopied]);\n\n\tconst handleCopy = useCallback((value: string) => {\n\t\tif (value) {\n\t\t\tnavigator.clipboard.writeText(value);\n\t\t\tsetHasCopied(true);\n\t\t}\n\t}, []);\n\n\treturn {\n\t\thasCopied,\n\t\thandleCopy\n\t};\n}\n","import { useEffect, useRef, useState } from \"react\";\n\n/**\n * Хук для определения состояния автозаполнения input'а\n */\nexport function useAutofill() {\n\tconst [isAutofilled, setIsAutofilled] = useState(false);\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\tuseEffect(() => {\n\t\tconst input = inputRef.current;\n\t\tif (!input) return;\n\n\t\tconst checkAutofill = (element: Element): boolean => {\n\t\t\ttry {\n\t\t\t\treturn element.matches(\":-webkit-autofill\");\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\n\t\tconst updateAutofillState = () => {\n\t\t\tconst autofilled = checkAutofill(input);\n\t\t\tsetIsAutofilled(autofilled);\n\t\t};\n\n\t\tinput.addEventListener(\"input\", updateAutofillState);\n\n\t\tlet intervalCounter = 0;\n\t\tconst intervalTime = 25;\n\t\t// Максимальное время ожидания появления autofill, в ms\n\t\tconst intervalTimeLimit = 1000;\n\n\t\tconst interval = setInterval(() => {\n\t\t\tintervalCounter += intervalTime;\n\t\t\tif (intervalCounter > intervalTimeLimit) {\n\t\t\t\tclearInterval(interval);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (checkAutofill(input)) {\n\t\t\t\tsetIsAutofilled(true);\n\t\t\t\tclearInterval(interval);\n\t\t\t}\n\t\t}, intervalTime);\n\n\t\tupdateAutofillState();\n\n\t\treturn () => {\n\t\t\tclearInterval(interval);\n\t\t\tinput.removeEventListener(\"input\", updateAutofillState);\n\t\t};\n\t}, []);\n\n\treturn {\n\t\tisAutofilled,\n\t\tinputRef\n\t};\n}\n","import { useCallback, useMemo } from \"react\";\nimport { useControlledValue } from \"./useControlledValue\";\nimport { useCopyAction } from \"./useCopyAction\";\nimport { useAutofill } from \"./useAutofill\";\n\nexport interface UseInputWithActionsOptions {\n\t/** Значение input (для контролируемого режима) */\n\tvalue?: string | number | readonly string[];\n\t/** Значение по умолчанию (для неконтролируемого режима) */\n\tdefaultValue?: string | number | readonly string[];\n\t/** Колбэк на изменение значения */\n\tonChange?: (value: string | null) => void;\n\t/** Флаг только для чтения */\n\treadOnly?: boolean;\n\t/** Флаг отключения */\n\tdisabled?: boolean;\n\t/** Флаг для отображения кнопки очистки */\n\tshowClearIcon?: boolean;\n\t/** Флаг для отображения кнопки копирования */\n\tshowCopyIcon?: boolean;\n}\n\n/**\n * Общий хук для input с полным функционалом копирования и очистки\n */\nexport function useInputWithActions({\n\tvalue,\n\tdefaultValue,\n\tonChange,\n\treadOnly,\n\tdisabled,\n\tshowClearIcon = false,\n\tshowCopyIcon = false\n}: UseInputWithActionsOptions) {\n\tconst controlledValue = useControlledValue(value, defaultValue, onChange);\n\tconst copyAction = useCopyAction();\n\tconst { isAutofilled } = useAutofill();\n\n\tconst isEditable = useMemo(() => {\n\t\treturn !readOnly && !disabled;\n\t}, [readOnly, disabled]);\n\n\tconst handleClear = useCallback(() => {\n\t\tif (value !== undefined) {\n\t\t\t// Controlled mode\n\t\t\tonChange?.(\"\");\n\t\t} else {\n\t\t\t// Uncontrolled mode\n\t\t\tif (controlledValue.inputRef.current) {\n\t\t\t\tcontrolledValue.inputRef.current.value = \"\";\n\t\t\t\tcontrolledValue.inputRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }));\n\t\t\t}\n\t\t}\n\t}, [onChange, value, controlledValue.inputRef]);\n\n\tconst handleCopyValue = useCallback(() => {\n\t\tcopyAction.handleCopy(String(controlledValue.currentValue));\n\t}, [copyAction.handleCopy, controlledValue.currentValue]);\n\n\tconst shouldShowClearIcon = showClearIcon && isEditable && controlledValue.currentValue;\n\tconst shouldShowCopyIcon = showCopyIcon && controlledValue.currentValue;\n\n\treturn {\n\t\t// Значения и состояние\n\t\tcurrentValue: controlledValue.currentValue,\n\t\tinputRef: controlledValue.inputRef,\n\t\tisEditable,\n\n\t\t// Обработчики\n\t\thandleChange: controlledValue.handleChange,\n\t\thandleClear,\n\t\thandleCopy: handleCopyValue,\n\n\t\t// Состояние копирования\n\t\thasCopied: copyAction.hasCopied,\n\n\t\t// Состояние автозаполнения\n\t\tisAutofilled,\n\n\t\t// Флаги видимости кнопок\n\t\tshouldShowClearIcon,\n\t\tshouldShowCopyIcon\n\t};\n}\n","import React, { HTMLAttributes } from \"react\";\nimport { useMergeRefs } from \"@/hooks/useMergeRefs\";\nimport { useInputWithActions } from \"@/hooks/useInputWithActions\";\nimport { InputGroup, InputGroupInput, InputGroupButton, InputGroupText } from \"../input-group/InputGroup\";\nimport { CircleX, Copy, Check } from \"lucide-react\";\nimport { tv } from \"tailwind-variants\";\nimport { InputProps } from \"../input/Input\";\n\nconst textInputStyles = tv({\n\tbase: \"\",\n\tslots: {\n\t\taction: \"hidden group-focus-within/input-group:block group-hover/input-group:block\",\n\t\tstartIcon: \"!border-r-0 pr-0 text-muted\",\n\t\tendIcon: \"border-l-0 pl-0 text-muted\",\n\t\tinput: \"\"\n\t},\n\tvariants: {\n\t\thasStartIcon: { true: { input: \"pl-2\" } }\n\t}\n});\n\nexport interface TextInputProps\n\textends Omit<InputProps, \"onChange\">,\n\t\tOmit<HTMLAttributes<HTMLInputElement>, \"onChange\"> {\n\t/** Иконка, отображаемая в начале текстового поля */\n\tstartIcon?: React.ReactNode;\n\t/** Иконка, отображаемая в конце текстового поля */\n\tendIcon?: React.ReactNode;\n\t/** Флаг для отображения кнопки очистки значения */\n\tshowClearIcon?: boolean;\n\t/** Флаг для отображения кнопки копирования значения */\n\tshowCopyIcon?: boolean;\n\t/** Колбэк на изменение значения */\n\tonChange?: (value: string | null) => void;\n}\n\n/**\n * Компонент текстового поля ввода с поддержкой иконок и дополнительных действий.\n */\nexport const TextInput = React.forwardRef<HTMLInputElement, TextInputProps>(\n\t(\n\t\t{\n\t\t\tstartIcon,\n\t\t\tendIcon,\n\t\t\tshowClearIcon,\n\t\t\tshowCopyIcon,\n\t\t\tvalue,\n\t\t\tdefaultValue,\n\t\t\tonChange,\n\t\t\treadOnly,\n\t\t\tdisabled,\n\t\t\terror,\n\t\t\tclassName,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\tconst styles = textInputStyles();\n\n\t\tconst inputActions = useInputWithActions({\n\t\t\tvalue,\n\t\t\tdefaultValue,\n\t\t\tonChange,\n\t\t\treadOnly,\n\t\t\tdisabled,\n\t\t\tshowClearIcon,\n\t\t\tshowCopyIcon\n\t\t});\n\n\t\tconst mergedRef = useMergeRefs(ref, inputActions.inputRef);\n\n\t\treturn (\n\t\t\t<InputGroup className={styles.base({ className })}>\n\t\t\t\t{startIcon && <InputGroupText className={styles.startIcon()}>{startIcon}</InputGroupText>}\n\n\t\t\t\t<InputGroupInput\n\t\t\t\t\tref={mergedRef}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\tonChange={inputActions.handleChange}\n\t\t\t\t\treadOnly={readOnly}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\terror={error}\n\t\t\t\t\tclassName={styles.input({ hasStartIcon: !!startIcon })}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\n\t\t\t\t{inputActions.shouldShowClearIcon && (\n\t\t\t\t\t<InputGroupButton\n\t\t\t\t\t\ticon={CircleX}\n\t\t\t\t\t\tonClick={inputActions.handleClear}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={styles.action()}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{inputActions.shouldShowCopyIcon && (\n\t\t\t\t\t<InputGroupButton\n\t\t\t\t\t\ticon={inputActions.hasCopied ? Check : Copy}\n\t\t\t\t\t\tonClick={inputActions.handleCopy}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={styles.action()}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{endIcon && <InputGroupText className={styles.endIcon()}>{endIcon}</InputGroupText>}\n\t\t\t</InputGroup>\n\t\t);\n\t}\n);\n\nTextInput.displayName = \"TextInput\";\n\nexport default TextInput;\n"],"names":["Copy","createLucideIcon","useControlledValue","value","defaultValue","onChange","uncontrolledValue","setUncontrolledValue","useState","inputRef","useRef","useEffect","input","handleInput","getCurrentValue","useCallback","handleChange","e","useCopyAction","hasCopied","setHasCopied","timeout","handleCopy","useAutofill","isAutofilled","setIsAutofilled","checkAutofill","element","updateAutofillState","autofilled","intervalCounter","intervalTime","intervalTimeLimit","interval","useInputWithActions","readOnly","disabled","showClearIcon","showCopyIcon","controlledValue","copyAction","isEditable","useMemo","handleClear","handleCopyValue","shouldShowClearIcon","shouldShowCopyIcon","textInputStyles","tv","TextInput","React","startIcon","endIcon","error","className","props","ref","styles","inputActions","mergedRef","useMergeRefs","jsxs","InputGroup","InputGroupText","jsx","InputGroupInput","InputGroupButton","CircleX","Check"],"mappings":"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","x_google_ignoreList":[0]}
@@ -8,7 +8,7 @@ import { s as G } from "../../zod-BMNoK3aM.js";
8
8
  import { e as V } from "../../index.esm-CXA6i4d7.js";
9
9
  import { z as v } from "../../vendors/zod.js";
10
10
  import { B as E } from "../../Button-Dg89xRSi.js";
11
- import { T as A } from "../../TextInput-Cj50ImXi.js";
11
+ import { T as A } from "../../TextInput-Db0ylY91.js";
12
12
  import { c as j } from "../../cn-dsXlqdJg.js";
13
13
  import { T as I } from "../../index-BVqs-uqP.js";
14
14
  import { L as k } from "../../loader-circle-D1YXTEGq.js";
@@ -1,4 +1,4 @@
1
- import { C as o, a, c as s } from "../CheckboxField-2zNFubvm.js";
1
+ import { C as o, a, c as s } from "../CheckboxField-limFbMk2.js";
2
2
  export {
3
3
  o as Checkbox,
4
4
  a as CheckboxField,
@@ -1,4 +1,4 @@
1
- import { C as o, a as n, e as s, j as C, f as d, b as t, g as r, c as e, d as i, i as p, h as u } from "../Command-D5zgJ7-y.js";
1
+ import { C as o, a as n, e as s, j as C, f as d, b as t, g as r, c as e, d as i, i as p, h as u } from "../Command-B7ZRyW8w.js";
2
2
  export {
3
3
  o as Command,
4
4
  n as CommandDialog,
@@ -2,7 +2,7 @@ import { D as s, a as i } from "../Dialog-CdnsGyJD.js";
2
2
  import { b as y, c as B, d as C, e as h, f as x, g as j, h as u, i as v, j as O, M as P, k as R, l as _, m as b, n as k, o as q, p as w, q as N, r as z, s as A, t as E } from "../Dialog-CdnsGyJD.js";
3
3
  import { jsx as a } from "react/jsx-runtime";
4
4
  import d from "react";
5
- import { F as g, B as m } from "../FormFooterTemplate-Cfn5Nmge.js";
5
+ import { F as g, B as m } from "../FormFooterTemplate-BRrgrxAu.js";
6
6
  const o = d.forwardRef(
7
7
  ({ title: e, description: l, ...r }, t) => /* @__PURE__ */ a(
8
8
  m,
@@ -8,7 +8,7 @@ import { o as Fe } from "../Overlay-CVt011mY.js";
8
8
  import { T as Q } from "../index-BVqs-uqP.js";
9
9
  import { u as ze } from "../usePortalContainer-BAIp0kSF.js";
10
10
  import { B as bt } from "../Button-Dg89xRSi.js";
11
- import { a as We } from "../CheckboxField-2zNFubvm.js";
11
+ import { a as We } from "../CheckboxField-limFbMk2.js";
12
12
  import { D as Ue } from "../Description-BTPMlTT-.js";
13
13
  import { I as jt } from "../Icon-DH3ev9GK.js";
14
14
  import { c as Ve } from "../createLucideIcon-DwBrHnj9.js";
@@ -6,7 +6,7 @@ import { F as M, d as q, a as z, b as A, e as E } from "../FormHeader--F6b2aRk.j
6
6
  import { D as l } from "../Divider-DPW5ZhZ8.js";
7
7
  import s from "react";
8
8
  import { B as d } from "../Button-Dg89xRSi.js";
9
- import { F as J, a as K } from "../FormFooterTemplate-Cfn5Nmge.js";
9
+ import { F as J, a as K } from "../FormFooterTemplate-BRrgrxAu.js";
10
10
  const F = a({
11
11
  base: "text-md font-semibold"
12
12
  });
@@ -4,8 +4,8 @@ import { T as p } from "../index-BVqs-uqP.js";
4
4
  import { B as f } from "../Button-Dg89xRSi.js";
5
5
  import { I as h } from "../Icon-DH3ev9GK.js";
6
6
  import { c as g } from "../cn-dsXlqdJg.js";
7
- import { I as v } from "../image-BqL5JP90.js";
8
- const b = ({ className: t }) => /* @__PURE__ */ e(
7
+ import { I as b } from "../image-BqL5JP90.js";
8
+ const v = ({ className: t }) => /* @__PURE__ */ e(
9
9
  "svg",
10
10
  {
11
11
  width: "33",
@@ -24,7 +24,7 @@ const b = ({ className: t }) => /* @__PURE__ */ e(
24
24
  }
25
25
  ), w = p({
26
26
  slots: {
27
- container: "group relative flex aspect-square items-center justify-center rounded-xl p-6 hover:shadow-soft-base focus-visible:shadow-focus focus-visible:ring-0",
27
+ container: "group relative flex aspect-square items-center justify-center rounded-xl p-6 focus-visible:shadow-focus focus-visible:ring-0",
28
28
  icon: "h-8 w-8 stroke-[1.5px] text-muted group-hover:text-primary",
29
29
  input: "hidden",
30
30
  // Кастомная иконка для состояния загрузки с фиксированными размерами (35 и 33px) и небольшим смещением для визуального баланса
@@ -33,7 +33,7 @@ const b = ({ className: t }) => /* @__PURE__ */ e(
33
33
  variants: {
34
34
  readonly: {
35
35
  true: {
36
- container: "cursor-default bg-secondary-bg-hover hover:border-secondary-border hover:shadow-soft-sm focus-visible:bg-secondary-bg-hover",
36
+ container: "cursor-default bg-secondary-bg-hover hover:border-secondary-border focus-visible:bg-secondary-bg-hover",
37
37
  icon: "group-hover:text-muted"
38
38
  }
39
39
  },
@@ -52,8 +52,8 @@ const b = ({ className: t }) => /* @__PURE__ */ e(
52
52
  }
53
53
  }
54
54
  }), x = l.forwardRef(
55
- ({ className: t, error: a, readonly: o, size: n, onChange: i, whiteList: c = "image/*", ...m }, u) => {
56
- const s = d(null), r = w({ className: t, readonly: o, error: a, size: n });
55
+ ({ className: t, error: n, readonly: o, size: a, onChange: i, whiteList: c = "image/*", ...m }, u) => {
56
+ const s = d(null), r = w({ className: t, readonly: o, error: n, size: a });
57
57
  return /* @__PURE__ */ C(
58
58
  f,
59
59
  {
@@ -74,8 +74,8 @@ const b = ({ className: t }) => /* @__PURE__ */ e(
74
74
  accept: c
75
75
  }
76
76
  ),
77
- o && /* @__PURE__ */ e(h, { icon: v, className: r.icon() }),
78
- !o && /* @__PURE__ */ e(b, { className: g(r.icon(), r.customIcon()) })
77
+ o && /* @__PURE__ */ e(h, { icon: b, className: r.icon() }),
78
+ !o && /* @__PURE__ */ e(v, { className: g(r.icon(), r.customIcon()) })
79
79
  ]
80
80
  }
81
81
  );
@@ -1 +1 @@
1
- {"version":3,"file":"image-uploader.js","sources":["../../src/components/image-uploader/components/ImageCameraAddSvg.tsx","../../src/components/image-uploader/ImageUploader.tsx"],"sourcesContent":["interface ImageCameraAddProps {\n\tclassName?: string;\n}\n\nexport const ImageCameraAddSvg = ({ className }: ImageCameraAddProps) => {\n\treturn (\n\t\t<svg\n\t\t\twidth=\"33\"\n\t\t\theight=\"29\"\n\t\t\tviewBox=\"0 0 33 29\"\n\t\t\tclassName={className}\n\t\t\tfill=\"none\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t>\n\t\t\t<path\n\t\t\t\td=\"M27.4463 16.9258C27.9982 16.926 28.4461 17.3739 28.4463 17.9258V21.5322H31.9746C32.5266 21.5325 32.9746 21.9801 32.9746 22.5322C32.9743 23.0841 32.5265 23.5319 31.9746 23.5322H28.4463V27.1377C28.4461 27.6896 27.9982 28.1374 27.4463 28.1377C26.8941 28.1377 26.4465 27.6898 26.4463 27.1377V23.5322H22.918C22.3659 23.5322 21.9182 23.0843 21.918 22.5322C21.918 21.9799 22.3657 21.5322 22.918 21.5322H26.4463V17.9258C26.4465 17.3737 26.8941 16.9258 27.4463 16.9258ZM17.6523 0.0449219C17.9098 0.0739444 18.1484 0.202586 18.3145 0.405273L21.3164 4.06934H24.8047L24.9863 4.07324C25.8909 4.11901 26.7469 4.50459 27.3857 5.1543C28.0666 5.8469 28.4463 6.78361 28.4463 7.75586V12.2402C28.4462 12.7923 27.9983 13.24 27.4463 13.2402C26.894 13.2402 26.4463 12.7925 26.4463 12.2402V7.75586C26.4463 7.30322 26.2686 6.87167 25.959 6.55664C25.6885 6.28172 25.3364 6.11468 24.9648 6.07715L24.8047 6.06934H20.8428C20.5434 6.06934 20.2593 5.93454 20.0693 5.70312L17.0664 2.03906H11.4102L8.4082 5.70312C8.21833 5.93464 7.93419 6.06925 7.63477 6.06934H3.67285C3.24307 6.06934 2.82676 6.24223 2.51758 6.55664C2.20786 6.87168 2.03125 7.30316 2.03125 7.75586V19.8447C2.03127 20.2974 2.20792 20.7289 2.51758 21.0439C2.82675 21.3583 3.2431 21.5322 3.67285 21.5322H17.6348L17.7373 21.5371C18.2412 21.5886 18.6348 22.0147 18.6348 22.5322C18.6345 23.0495 18.2411 23.4749 17.7373 23.5264L17.6348 23.5322H3.67285C2.70169 23.5322 1.77333 23.1393 1.0918 22.4463C0.410823 21.7537 0.03127 20.817 0.03125 19.8447V7.75586C0.03125 6.78353 0.410805 5.84692 1.0918 5.1543C1.77333 4.46129 2.70169 4.06934 3.67285 4.06934H7.16113L10.1631 0.405273L10.2393 0.323242C10.4248 0.142425 10.6745 0.0391387 10.9365 0.0390625H17.54L17.6523 0.0449219ZM14.2383 8.09863C16.9946 8.09879 19.2012 10.3671 19.2012 13.1289C19.201 15.8906 16.9945 18.158 14.2383 18.1582C11.4821 18.158 9.2765 15.8906 9.27637 13.1289C9.27637 10.3671 11.482 8.09885 14.2383 8.09863ZM14.2383 10.0986C12.6184 10.0988 11.2764 11.4397 11.2764 13.1289C11.2765 14.818 12.6184 16.158 14.2383 16.1582C15.8582 16.158 17.201 14.8181 17.2012 13.1289C17.2012 11.4396 15.8582 10.0988 14.2383 10.0986Z\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t/>\n\t\t</svg>\n\t);\n};\n","import React, { useRef } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { ImageCameraAddSvg } from \"./components/ImageCameraAddSvg\";\nimport { Button } from \"../button\";\nimport { Image } from \"lucide-react\";\nimport { Icon } from \"../icon\";\nimport { cn } from \"@/lib/utils\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\n\nexport interface ImageUploaderVariants {\n\treadonly?: boolean;\n\terror?: boolean;\n\tsize?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n}\n\nconst imageUploaderStyles = tv({\n\tslots: {\n\t\tcontainer:\n\t\t\t\"group relative flex aspect-square items-center justify-center rounded-xl p-6 hover:shadow-soft-base focus-visible:shadow-focus focus-visible:ring-0\",\n\t\ticon: \"h-8 w-8 stroke-[1.5px] text-muted group-hover:text-primary\",\n\t\tinput: \"hidden\",\n\t\t// Кастомная иконка для состояния загрузки с фиксированными размерами (35 и 33px) и небольшим смещением для визуального баланса\n\t\tcustomIcon: \"h-[2.1875rem] w-[2.0625rem] translate-x-0.5 translate-y-0.5\"\n\t},\n\tvariants: {\n\t\treadonly: {\n\t\t\ttrue: {\n\t\t\t\tcontainer:\n\t\t\t\t\t\"cursor-default bg-secondary-bg-hover hover:border-secondary-border hover:shadow-soft-sm focus-visible:bg-secondary-bg-hover\",\n\t\t\t\ticon: \"group-hover:text-muted\"\n\t\t\t}\n\t\t},\n\t\terror: {\n\t\t\ttrue: {\n\t\t\t\tcontainer:\n\t\t\t\t\t\"border-status-error-secondary-border hover:border-status-error-primary-border hover:bg-status-error-bg focus-visible:border-status-error-secondary-border focus-visible:shadow-focus-error\",\n\t\t\t\ticon: \"group-hover:text-muted\"\n\t\t\t}\n\t\t},\n\t\tsize: {\n\t\t\txs: { container: \"h-[3.75rem] w-[3.75rem]\" },\n\t\t\tsm: { container: \"h-20 w-20\" },\n\t\t\tmd: { container: \"h-[7.5rem] w-[7.5rem]\" },\n\t\t\tlg: { container: \"h-[11.5rem] w-[11.5rem]\" },\n\t\t\txl: { container: \"h-96 w-96\" }\n\t\t}\n\t} satisfies VariantsConfig<ImageUploaderVariants>\n});\n\nexport type ImageUploaderProps = Omit<React.ComponentPropsWithoutRef<typeof Button>, \"onChange\"> &\n\tImageUploaderVariants & {\n\t\tonChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n\t\twhiteList?: string;\n\t};\n\nexport const ImageUploader = React.forwardRef<HTMLButtonElement, ImageUploaderProps>(\n\t({ className, error, readonly, size, onChange, whiteList = \"image/*\", ...props }, ref) => {\n\t\tconst fileInputRef = useRef<HTMLInputElement>(null);\n\t\tconst styles = imageUploaderStyles({ className, readonly, error, size });\n\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tref={ref}\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"outline\"\n\t\t\t\tclassName={styles.container()}\n\t\t\t\tonClick={() => !readonly && fileInputRef.current?.click()}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tref={fileInputRef}\n\t\t\t\t\ttype=\"file\"\n\t\t\t\t\tclassName={styles.input()}\n\t\t\t\t\tonChange={onChange}\n\t\t\t\t\taccept={whiteList}\n\t\t\t\t/>\n\n\t\t\t\t{readonly && <Icon icon={Image} className={styles.icon()} />}\n\t\t\t\t{!readonly && <ImageCameraAddSvg className={cn(styles.icon(), styles.customIcon())} />}\n\t\t\t</Button>\n\t\t);\n\t}\n);\n\nImageUploader.displayName = \"ImageUploader\";\n"],"names":["ImageCameraAddSvg","className","jsx","imageUploaderStyles","tv","ImageUploader","React","error","readonly","size","onChange","whiteList","props","ref","fileInputRef","useRef","styles","jsxs","Button","Icon","Image","cn"],"mappings":";;;;;;;AAIO,MAAMA,IAAoB,CAAC,EAAE,WAAAC,QAElC,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACA,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,WAAAD;AAAA,IACA,MAAK;AAAA,IACL,OAAM;AAAA,IAEN,UAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACN;AACD,GCHIC,IAAsBC,EAAG;AAAA,EAC9B,OAAO;AAAA,IACN,WACC;AAAA,IACD,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,IAEP,YAAY;AAAA,EACb;AAAA,EACA,UAAU;AAAA,IACT,UAAU;AAAA,MACT,MAAM;AAAA,QACL,WACC;AAAA,QACD,MAAM;AAAA,MAAA;AAAA,IAER;AAAA,IACA,OAAO;AAAA,MACN,MAAM;AAAA,QACL,WACC;AAAA,QACD,MAAM;AAAA,MAAA;AAAA,IAER;AAAA,IACA,MAAM;AAAA,MACL,IAAI,EAAE,WAAW,0BAA0B;AAAA,MAC3C,IAAI,EAAE,WAAW,YAAY;AAAA,MAC7B,IAAI,EAAE,WAAW,wBAAwB;AAAA,MACzC,IAAI,EAAE,WAAW,0BAA0B;AAAA,MAC3C,IAAI,EAAE,WAAW,YAAY;AAAA,IAAA;AAAA,EAC9B;AAEF,CAAC,GAQYC,IAAgBC,EAAM;AAAA,EAClC,CAAC,EAAE,WAAAL,GAAW,OAAAM,GAAO,UAAAC,GAAU,MAAAC,GAAM,UAAAC,GAAU,WAAAC,IAAY,WAAW,GAAGC,EAAM,GAAGC,MAAQ;AACnF,UAAAC,IAAeC,EAAyB,IAAI,GAC5CC,IAASb,EAAoB,EAAE,WAAAF,GAAW,UAAAO,GAAU,OAAAD,GAAO,MAAAE,GAAM;AAGtE,WAAA,gBAAAQ;AAAA,MAACC;AAAA,MAAA;AAAA,QACA,KAAAL;AAAA,QACA,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,WAAWG,EAAO,UAAU;AAAA,QAC5B,SAAS,MAAM,CAACR,KAAYM,EAAa,SAAS,MAAM;AAAA,QACvD,GAAGF;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAV;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,KAAKY;AAAA,cACL,MAAK;AAAA,cACL,WAAWE,EAAO,MAAM;AAAA,cACxB,UAAAN;AAAA,cACA,QAAQC;AAAA,YAAA;AAAA,UACT;AAAA,UAECH,uBAAaW,GAAK,EAAA,MAAMC,GAAO,WAAWJ,EAAO,QAAQ;AAAA,UACzD,CAACR,KAAa,gBAAAN,EAAAF,GAAA,EAAkB,WAAWqB,EAAGL,EAAO,KAAQ,GAAAA,EAAO,WAAY,CAAA,EAAG,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACrF;AAAA,EAAA;AAGH;AAEAX,EAAc,cAAc;"}
1
+ {"version":3,"file":"image-uploader.js","sources":["../../src/components/image-uploader/components/ImageCameraAddSvg.tsx","../../src/components/image-uploader/ImageUploader.tsx"],"sourcesContent":["interface ImageCameraAddProps {\n\tclassName?: string;\n}\n\nexport const ImageCameraAddSvg = ({ className }: ImageCameraAddProps) => {\n\treturn (\n\t\t<svg\n\t\t\twidth=\"33\"\n\t\t\theight=\"29\"\n\t\t\tviewBox=\"0 0 33 29\"\n\t\t\tclassName={className}\n\t\t\tfill=\"none\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t>\n\t\t\t<path\n\t\t\t\td=\"M27.4463 16.9258C27.9982 16.926 28.4461 17.3739 28.4463 17.9258V21.5322H31.9746C32.5266 21.5325 32.9746 21.9801 32.9746 22.5322C32.9743 23.0841 32.5265 23.5319 31.9746 23.5322H28.4463V27.1377C28.4461 27.6896 27.9982 28.1374 27.4463 28.1377C26.8941 28.1377 26.4465 27.6898 26.4463 27.1377V23.5322H22.918C22.3659 23.5322 21.9182 23.0843 21.918 22.5322C21.918 21.9799 22.3657 21.5322 22.918 21.5322H26.4463V17.9258C26.4465 17.3737 26.8941 16.9258 27.4463 16.9258ZM17.6523 0.0449219C17.9098 0.0739444 18.1484 0.202586 18.3145 0.405273L21.3164 4.06934H24.8047L24.9863 4.07324C25.8909 4.11901 26.7469 4.50459 27.3857 5.1543C28.0666 5.8469 28.4463 6.78361 28.4463 7.75586V12.2402C28.4462 12.7923 27.9983 13.24 27.4463 13.2402C26.894 13.2402 26.4463 12.7925 26.4463 12.2402V7.75586C26.4463 7.30322 26.2686 6.87167 25.959 6.55664C25.6885 6.28172 25.3364 6.11468 24.9648 6.07715L24.8047 6.06934H20.8428C20.5434 6.06934 20.2593 5.93454 20.0693 5.70312L17.0664 2.03906H11.4102L8.4082 5.70312C8.21833 5.93464 7.93419 6.06925 7.63477 6.06934H3.67285C3.24307 6.06934 2.82676 6.24223 2.51758 6.55664C2.20786 6.87168 2.03125 7.30316 2.03125 7.75586V19.8447C2.03127 20.2974 2.20792 20.7289 2.51758 21.0439C2.82675 21.3583 3.2431 21.5322 3.67285 21.5322H17.6348L17.7373 21.5371C18.2412 21.5886 18.6348 22.0147 18.6348 22.5322C18.6345 23.0495 18.2411 23.4749 17.7373 23.5264L17.6348 23.5322H3.67285C2.70169 23.5322 1.77333 23.1393 1.0918 22.4463C0.410823 21.7537 0.03127 20.817 0.03125 19.8447V7.75586C0.03125 6.78353 0.410805 5.84692 1.0918 5.1543C1.77333 4.46129 2.70169 4.06934 3.67285 4.06934H7.16113L10.1631 0.405273L10.2393 0.323242C10.4248 0.142425 10.6745 0.0391387 10.9365 0.0390625H17.54L17.6523 0.0449219ZM14.2383 8.09863C16.9946 8.09879 19.2012 10.3671 19.2012 13.1289C19.201 15.8906 16.9945 18.158 14.2383 18.1582C11.4821 18.158 9.2765 15.8906 9.27637 13.1289C9.27637 10.3671 11.482 8.09885 14.2383 8.09863ZM14.2383 10.0986C12.6184 10.0988 11.2764 11.4397 11.2764 13.1289C11.2765 14.818 12.6184 16.158 14.2383 16.1582C15.8582 16.158 17.201 14.8181 17.2012 13.1289C17.2012 11.4396 15.8582 10.0988 14.2383 10.0986Z\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t/>\n\t\t</svg>\n\t);\n};\n","import React, { useRef } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { ImageCameraAddSvg } from \"./components/ImageCameraAddSvg\";\nimport { Button } from \"../button\";\nimport { Image } from \"lucide-react\";\nimport { Icon } from \"../icon\";\nimport { cn } from \"@/lib/utils\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\n\nexport interface ImageUploaderVariants {\n\treadonly?: boolean;\n\terror?: boolean;\n\tsize?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n}\n\nconst imageUploaderStyles = tv({\n\tslots: {\n\t\tcontainer:\n\t\t\t\"group relative flex aspect-square items-center justify-center rounded-xl p-6 focus-visible:shadow-focus focus-visible:ring-0\",\n\t\ticon: \"h-8 w-8 stroke-[1.5px] text-muted group-hover:text-primary\",\n\t\tinput: \"hidden\",\n\t\t// Кастомная иконка для состояния загрузки с фиксированными размерами (35 и 33px) и небольшим смещением для визуального баланса\n\t\tcustomIcon: \"h-[2.1875rem] w-[2.0625rem] translate-x-0.5 translate-y-0.5\"\n\t},\n\tvariants: {\n\t\treadonly: {\n\t\t\ttrue: {\n\t\t\t\tcontainer:\n\t\t\t\t\t\"cursor-default bg-secondary-bg-hover hover:border-secondary-border focus-visible:bg-secondary-bg-hover\",\n\t\t\t\ticon: \"group-hover:text-muted\"\n\t\t\t}\n\t\t},\n\t\terror: {\n\t\t\ttrue: {\n\t\t\t\tcontainer:\n\t\t\t\t\t\"border-status-error-secondary-border hover:border-status-error-primary-border hover:bg-status-error-bg focus-visible:border-status-error-secondary-border focus-visible:shadow-focus-error\",\n\t\t\t\ticon: \"group-hover:text-muted\"\n\t\t\t}\n\t\t},\n\t\tsize: {\n\t\t\txs: { container: \"h-[3.75rem] w-[3.75rem]\" },\n\t\t\tsm: { container: \"h-20 w-20\" },\n\t\t\tmd: { container: \"h-[7.5rem] w-[7.5rem]\" },\n\t\t\tlg: { container: \"h-[11.5rem] w-[11.5rem]\" },\n\t\t\txl: { container: \"h-96 w-96\" }\n\t\t}\n\t} satisfies VariantsConfig<ImageUploaderVariants>\n});\n\nexport type ImageUploaderProps = Omit<React.ComponentPropsWithoutRef<typeof Button>, \"onChange\"> &\n\tImageUploaderVariants & {\n\t\tonChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n\t\twhiteList?: string;\n\t};\n\nexport const ImageUploader = React.forwardRef<HTMLButtonElement, ImageUploaderProps>(\n\t({ className, error, readonly, size, onChange, whiteList = \"image/*\", ...props }, ref) => {\n\t\tconst fileInputRef = useRef<HTMLInputElement>(null);\n\t\tconst styles = imageUploaderStyles({ className, readonly, error, size });\n\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tref={ref}\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"outline\"\n\t\t\t\tclassName={styles.container()}\n\t\t\t\tonClick={() => !readonly && fileInputRef.current?.click()}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tref={fileInputRef}\n\t\t\t\t\ttype=\"file\"\n\t\t\t\t\tclassName={styles.input()}\n\t\t\t\t\tonChange={onChange}\n\t\t\t\t\taccept={whiteList}\n\t\t\t\t/>\n\n\t\t\t\t{readonly && <Icon icon={Image} className={styles.icon()} />}\n\t\t\t\t{!readonly && <ImageCameraAddSvg className={cn(styles.icon(), styles.customIcon())} />}\n\t\t\t</Button>\n\t\t);\n\t}\n);\n\nImageUploader.displayName = \"ImageUploader\";\n"],"names":["ImageCameraAddSvg","className","jsx","imageUploaderStyles","tv","ImageUploader","React","error","readonly","size","onChange","whiteList","props","ref","fileInputRef","useRef","styles","jsxs","Button","Icon","Image","cn"],"mappings":";;;;;;;AAIO,MAAMA,IAAoB,CAAC,EAAE,WAAAC,QAElC,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACA,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,WAAAD;AAAA,IACA,MAAK;AAAA,IACL,OAAM;AAAA,IAEN,UAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACN;AACD,GCHIC,IAAsBC,EAAG;AAAA,EAC9B,OAAO;AAAA,IACN,WACC;AAAA,IACD,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,IAEP,YAAY;AAAA,EACb;AAAA,EACA,UAAU;AAAA,IACT,UAAU;AAAA,MACT,MAAM;AAAA,QACL,WACC;AAAA,QACD,MAAM;AAAA,MAAA;AAAA,IAER;AAAA,IACA,OAAO;AAAA,MACN,MAAM;AAAA,QACL,WACC;AAAA,QACD,MAAM;AAAA,MAAA;AAAA,IAER;AAAA,IACA,MAAM;AAAA,MACL,IAAI,EAAE,WAAW,0BAA0B;AAAA,MAC3C,IAAI,EAAE,WAAW,YAAY;AAAA,MAC7B,IAAI,EAAE,WAAW,wBAAwB;AAAA,MACzC,IAAI,EAAE,WAAW,0BAA0B;AAAA,MAC3C,IAAI,EAAE,WAAW,YAAY;AAAA,IAAA;AAAA,EAC9B;AAEF,CAAC,GAQYC,IAAgBC,EAAM;AAAA,EAClC,CAAC,EAAE,WAAAL,GAAW,OAAAM,GAAO,UAAAC,GAAU,MAAAC,GAAM,UAAAC,GAAU,WAAAC,IAAY,WAAW,GAAGC,EAAM,GAAGC,MAAQ;AACnF,UAAAC,IAAeC,EAAyB,IAAI,GAC5CC,IAASb,EAAoB,EAAE,WAAAF,GAAW,UAAAO,GAAU,OAAAD,GAAO,MAAAE,GAAM;AAGtE,WAAA,gBAAAQ;AAAA,MAACC;AAAA,MAAA;AAAA,QACA,KAAAL;AAAA,QACA,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,WAAWG,EAAO,UAAU;AAAA,QAC5B,SAAS,MAAM,CAACR,KAAYM,EAAa,SAAS,MAAM;AAAA,QACvD,GAAGF;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAV;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,KAAKY;AAAA,cACL,MAAK;AAAA,cACL,WAAWE,EAAO,MAAM;AAAA,cACxB,UAAAN;AAAA,cACA,QAAQC;AAAA,YAAA;AAAA,UACT;AAAA,UAECH,uBAAaW,GAAK,EAAA,MAAMC,GAAO,WAAWJ,EAAO,QAAQ;AAAA,UACzD,CAACR,KAAa,gBAAAN,EAAAF,GAAA,EAAkB,WAAWqB,EAAGL,EAAO,KAAQ,GAAAA,EAAO,WAAY,CAAA,EAAG,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACrF;AAAA,EAAA;AAGH;AAEAX,EAAc,cAAc;"}
@@ -1,12 +1,12 @@
1
1
  import { jsx as o, jsxs as N } from "react/jsx-runtime";
2
2
  import k, { useRef as j, useState as G, useEffect as q, useCallback as b } from "react";
3
3
  import { u as R } from "../useMergeRefs-qoKniYqT.js";
4
- import { u as H, a as J } from "../inputBaseStyles-DbzD_jvq.js";
4
+ import { u as H, a as J } from "../inputBaseStyles-BfZIWuQ6.js";
5
5
  import { T as S } from "../index-BVqs-uqP.js";
6
- import { a as F, c as L, b as M, d as f } from "../InputGroup-BvD9Igmt.js";
7
- import { I as we } from "../InputGroup-BvD9Igmt.js";
8
- import { u as v, C as U } from "../TextInput-Cj50ImXi.js";
9
- import { T as be } from "../TextInput-Cj50ImXi.js";
6
+ import { a as F, c as L, b as M, d as f } from "../InputGroup-BcRWP-zL.js";
7
+ import { I as we } from "../InputGroup-BcRWP-zL.js";
8
+ import { u as v, C as U } from "../TextInput-Db0ylY91.js";
9
+ import { T as be } from "../TextInput-Db0ylY91.js";
10
10
  import { C as E } from "../circle-x-u75Rx3Tj.js";
11
11
  import { C as A } from "../check-CeyaOoZv.js";
12
12
  import { D as K } from "../download-BHsj218e.js";
@@ -25,7 +25,7 @@ var g = "Radio", [Q, P] = N(g), [Z, ee] = Q(g), k = n.forwardRef(
25
25
  onCheck: f,
26
26
  form: m,
27
27
  ...R
28
- } = r, [p, v] = n.useState(null), c = I(a, (y) => v(y)), u = n.useRef(!1), b = p ? m || !!p.closest("form") : !0;
28
+ } = r, [p, v] = n.useState(null), c = I(a, (b) => v(b)), u = n.useRef(!1), y = p ? m || !!p.closest("form") : !0;
29
29
  return /* @__PURE__ */ K(Z, { scope: e, checked: o, disabled: d, children: [
30
30
  /* @__PURE__ */ i(
31
31
  h.button,
@@ -39,12 +39,12 @@ var g = "Radio", [Q, P] = N(g), [Z, ee] = Q(g), k = n.forwardRef(
39
39
  value: l,
40
40
  ...R,
41
41
  ref: c,
42
- onClick: C(r.onClick, (y) => {
43
- o || f?.(), b && (u.current = y.isPropagationStopped(), u.current || y.stopPropagation());
42
+ onClick: C(r.onClick, (b) => {
43
+ o || f?.(), y && (u.current = b.isPropagationStopped(), u.current || b.stopPropagation());
44
44
  })
45
45
  }
46
46
  ),
47
- b && /* @__PURE__ */ i(
47
+ y && /* @__PURE__ */ i(
48
48
  A,
49
49
  {
50
50
  control: p,
@@ -139,7 +139,7 @@ var re = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"], w = "RadioGroup",
139
139
  loop: R = !0,
140
140
  onValueChange: p,
141
141
  ...v
142
- } = r, c = D(e), u = H(m), [b, y] = z({
142
+ } = r, c = D(e), u = H(m), [y, b] = z({
143
143
  prop: s,
144
144
  defaultProp: o ?? null,
145
145
  onChange: p,
@@ -152,8 +152,8 @@ var re = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"], w = "RadioGroup",
152
152
  name: t,
153
153
  required: d,
154
154
  disabled: l,
155
- value: b,
156
- onValueChange: y,
155
+ value: y,
156
+ onValueChange: b,
157
157
  children: /* @__PURE__ */ i(
158
158
  V,
159
159
  {
@@ -185,8 +185,8 @@ var F = "RadioGroupItem", L = n.forwardRef(
185
185
  (r, a) => {
186
186
  const { __scopeRadioGroup: e, disabled: t, ...o } = r, s = se(F, e), d = s.disabled || t, l = D(e), f = M(e), m = n.useRef(null), R = I(a, m), p = s.value === o.value, v = n.useRef(!1);
187
187
  return n.useEffect(() => {
188
- const c = (b) => {
189
- re.includes(b.key) && (v.current = !0);
188
+ const c = (y) => {
189
+ re.includes(y.key) && (v.current = !0);
190
190
  }, u = () => v.current = !1;
191
191
  return document.addEventListener("keydown", c), document.addEventListener("keyup", u), () => {
192
192
  document.removeEventListener("keydown", c), document.removeEventListener("keyup", u);
@@ -240,7 +240,7 @@ const ue = G({
240
240
  slots: {
241
241
  item: [
242
242
  "aspect-square h-4 w-4 rounded-full border border-primary-border bg-secondary-bg shadow-soft-sm data-[state=checked]:border-primary-accent data-[state=checked]:bg-primary-accent",
243
- "hover:border-muted hover:shadow-soft-base",
243
+ "hover:border-muted",
244
244
  "focus:outline-none focus-visible:shadow-focus",
245
245
  "disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:border-primary-border"
246
246
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"radio-group.js","sources":["../../node_modules/.pnpm/@radix-ui+react-radio-group@1.3.8_@types+react-dom@18.3.6_@types+react@18.3.20__@types+_3817d711d0804cde943044a79473fe99/node_modules/@radix-ui/react-radio-group/dist/index.mjs","../../src/components/radio-group/RadioGroup.tsx","../../src/components/radio-group/components/RadioGroupItem.tsx"],"sourcesContent":["\"use client\";\n\n// src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProvider, useRadioContext] = createRadioContext(RADIO_NAME);\nvar Radio = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadio,\n name,\n checked = false,\n required,\n disabled,\n value = \"on\",\n onCheck,\n form,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n return /* @__PURE__ */ jsxs(RadioProvider, { scope: __scopeRadio, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"radio\",\n \"aria-checked\": checked,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...radioProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n RadioBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nRadio.displayName = RADIO_NAME;\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef\n }\n ) });\n }\n);\nRadioIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"RadioBubbleInput\";\nvar RadioBubbleInput = React.forwardRef(\n ({\n __scopeRadio,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"radio\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nRadioBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\n\n// src/radio-group.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n onChange: onValueChange,\n caller: RADIO_GROUP_NAME\n });\n return /* @__PURE__ */ jsx2(\n RadioGroupProvider,\n {\n scope: __scopeRadioGroup,\n name,\n required,\n disabled,\n value,\n onValueChange: setValue,\n children: /* @__PURE__ */ jsx2(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx2(\n Primitive2.div,\n {\n role: \"radiogroup\",\n \"aria-required\": required,\n \"aria-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : void 0,\n dir: direction,\n ...groupProps,\n ref: forwardedRef\n }\n )\n }\n )\n }\n );\n }\n);\nRadioGroup.displayName = RADIO_GROUP_NAME;\nvar ITEM_NAME = \"RadioGroupItem\";\nvar RadioGroupItem = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React2.useRef(false);\n React2.useEffect(() => {\n const handleKeyDown = (event) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => isArrowKeyPressedRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"keyup\", handleKeyUp);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"keyup\", handleKeyUp);\n };\n }, []);\n return /* @__PURE__ */ jsx2(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !isDisabled,\n active: checked,\n children: /* @__PURE__ */ jsx2(\n Radio,\n {\n disabled: isDisabled,\n required: context.required,\n checked,\n ...radioScope,\n ...itemProps,\n name: context.name,\n ref: composedRefs,\n onCheck: () => context.onValueChange(itemProps.value),\n onKeyDown: composeEventHandlers2((event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onFocus: composeEventHandlers2(itemProps.onFocus, () => {\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })\n }\n )\n }\n );\n }\n);\nRadioGroupItem.displayName = ITEM_NAME;\nvar INDICATOR_NAME2 = \"RadioGroupIndicator\";\nvar RadioGroupIndicator = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n }\n);\nRadioGroupIndicator.displayName = INDICATOR_NAME2;\nvar Root2 = RadioGroup;\nvar Item2 = RadioGroupItem;\nvar Indicator = RadioGroupIndicator;\nexport {\n Indicator,\n Item2 as Item,\n RadioGroup,\n RadioGroupIndicator,\n RadioGroupItem,\n Root2 as Root,\n createRadioGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { tv } from \"tailwind-variants\";\n\nexport type RadioGroupProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>;\n\nconst radioGroupStyles = tv({\n\tbase: \"grid gap-2\"\n});\n\nexport const RadioGroup = React.forwardRef<React.ElementRef<typeof RadioGroupPrimitive.Root>, RadioGroupProps>(\n\t({ className, ...props }, ref) => {\n\t\treturn <RadioGroupPrimitive.Root className={radioGroupStyles({ className })} {...props} ref={ref} />;\n\t}\n);\n\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n","import { Icon } from \"@/components/icon\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { Circle } from \"lucide-react\";\nimport React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nexport type RadioGroupItemProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>;\n\nexport const radioGroupItemStyles = tv({\n\tslots: {\n\t\titem: [\n\t\t\t\"aspect-square h-4 w-4 rounded-full border border-primary-border bg-secondary-bg shadow-soft-sm data-[state=checked]:border-primary-accent data-[state=checked]:bg-primary-accent\",\n\t\t\t\"hover:border-muted hover:shadow-soft-base\",\n\t\t\t\"focus:outline-none focus-visible:shadow-focus\",\n\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:border-primary-border\"\n\t\t],\n\t\tindicator: \"flex items-center justify-center\",\n\t\ticon: \"h-2 w-2 fill-secondary-bg\"\n\t}\n});\n\nexport const RadioGroupItem = React.forwardRef<React.ElementRef<typeof RadioGroupPrimitive.Item>, RadioGroupItemProps>(\n\t({ className, ...props }, ref) => {\n\t\tconst styles = radioGroupItemStyles();\n\n\t\treturn (\n\t\t\t<RadioGroupPrimitive.Item ref={ref} className={styles.item({ className })} {...props}>\n\t\t\t\t<RadioGroupPrimitive.Indicator className={styles.indicator()}>\n\t\t\t\t\t<Icon icon={Circle} className={styles.icon()} />\n\t\t\t\t</RadioGroupPrimitive.Indicator>\n\t\t\t</RadioGroupPrimitive.Item>\n\t\t);\n\t}\n);\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n"],"names":["RADIO_NAME","createRadioContext","createRadioScope","createContextScope","RadioProvider","useRadioContext","Radio","React","props","forwardedRef","__scopeRadio","name","checked","required","disabled","value","onCheck","form","radioProps","button","setButton","composedRefs","useComposedRefs","node","hasConsumerStoppedPropagationRef","isFormControl","jsxs","jsx","Primitive","getState","composeEventHandlers","event","RadioBubbleInput","INDICATOR_NAME","RadioIndicator","forceMount","indicatorProps","context","Presence","BUBBLE_INPUT_NAME","control","bubbles","ref","prevChecked","usePrevious","controlSize","useSize","input","inputProto","setChecked","ARROW_KEYS","RADIO_GROUP_NAME","createRadioGroupContext","createRadioGroupScope","createContextScope2","createRovingFocusGroupScope","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","React2","__scopeRadioGroup","defaultValue","valueProp","orientation","dir","loop","onValueChange","groupProps","rovingFocusGroupScope","direction","useDirection","setValue","useControllableState","jsx2","RovingFocusGroup.Root","Primitive2","ITEM_NAME","RadioGroupItem","itemProps","isDisabled","radioScope","useComposedRefs2","isArrowKeyPressedRef","handleKeyDown","handleKeyUp","RovingFocusGroup.Item","composeEventHandlers2","INDICATOR_NAME2","RadioGroupIndicator","Root2","Item2","Indicator","radioGroupStyles","tv","className","RadioGroupPrimitive.Root","radioGroupItemStyles","styles","RadioGroupPrimitive.Item","RadioGroupPrimitive.Indicator","Icon","Circle"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"radio-group.js","sources":["../../node_modules/.pnpm/@radix-ui+react-radio-group@1.3.8_@types+react-dom@18.3.6_@types+react@18.3.20__@types+_3817d711d0804cde943044a79473fe99/node_modules/@radix-ui/react-radio-group/dist/index.mjs","../../src/components/radio-group/RadioGroup.tsx","../../src/components/radio-group/components/RadioGroupItem.tsx"],"sourcesContent":["\"use client\";\n\n// src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProvider, useRadioContext] = createRadioContext(RADIO_NAME);\nvar Radio = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadio,\n name,\n checked = false,\n required,\n disabled,\n value = \"on\",\n onCheck,\n form,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n return /* @__PURE__ */ jsxs(RadioProvider, { scope: __scopeRadio, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"radio\",\n \"aria-checked\": checked,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...radioProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n RadioBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nRadio.displayName = RADIO_NAME;\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef\n }\n ) });\n }\n);\nRadioIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"RadioBubbleInput\";\nvar RadioBubbleInput = React.forwardRef(\n ({\n __scopeRadio,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"radio\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nRadioBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\n\n// src/radio-group.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n onChange: onValueChange,\n caller: RADIO_GROUP_NAME\n });\n return /* @__PURE__ */ jsx2(\n RadioGroupProvider,\n {\n scope: __scopeRadioGroup,\n name,\n required,\n disabled,\n value,\n onValueChange: setValue,\n children: /* @__PURE__ */ jsx2(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx2(\n Primitive2.div,\n {\n role: \"radiogroup\",\n \"aria-required\": required,\n \"aria-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : void 0,\n dir: direction,\n ...groupProps,\n ref: forwardedRef\n }\n )\n }\n )\n }\n );\n }\n);\nRadioGroup.displayName = RADIO_GROUP_NAME;\nvar ITEM_NAME = \"RadioGroupItem\";\nvar RadioGroupItem = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React2.useRef(false);\n React2.useEffect(() => {\n const handleKeyDown = (event) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => isArrowKeyPressedRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"keyup\", handleKeyUp);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"keyup\", handleKeyUp);\n };\n }, []);\n return /* @__PURE__ */ jsx2(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !isDisabled,\n active: checked,\n children: /* @__PURE__ */ jsx2(\n Radio,\n {\n disabled: isDisabled,\n required: context.required,\n checked,\n ...radioScope,\n ...itemProps,\n name: context.name,\n ref: composedRefs,\n onCheck: () => context.onValueChange(itemProps.value),\n onKeyDown: composeEventHandlers2((event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onFocus: composeEventHandlers2(itemProps.onFocus, () => {\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })\n }\n )\n }\n );\n }\n);\nRadioGroupItem.displayName = ITEM_NAME;\nvar INDICATOR_NAME2 = \"RadioGroupIndicator\";\nvar RadioGroupIndicator = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n }\n);\nRadioGroupIndicator.displayName = INDICATOR_NAME2;\nvar Root2 = RadioGroup;\nvar Item2 = RadioGroupItem;\nvar Indicator = RadioGroupIndicator;\nexport {\n Indicator,\n Item2 as Item,\n RadioGroup,\n RadioGroupIndicator,\n RadioGroupItem,\n Root2 as Root,\n createRadioGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { tv } from \"tailwind-variants\";\n\nexport type RadioGroupProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>;\n\nconst radioGroupStyles = tv({\n\tbase: \"grid gap-2\"\n});\n\nexport const RadioGroup = React.forwardRef<React.ElementRef<typeof RadioGroupPrimitive.Root>, RadioGroupProps>(\n\t({ className, ...props }, ref) => {\n\t\treturn <RadioGroupPrimitive.Root className={radioGroupStyles({ className })} {...props} ref={ref} />;\n\t}\n);\n\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n","import { Icon } from \"@/components/icon\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { Circle } from \"lucide-react\";\nimport React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nexport type RadioGroupItemProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>;\n\nexport const radioGroupItemStyles = tv({\n\tslots: {\n\t\titem: [\n\t\t\t\"aspect-square h-4 w-4 rounded-full border border-primary-border bg-secondary-bg shadow-soft-sm data-[state=checked]:border-primary-accent data-[state=checked]:bg-primary-accent\",\n\t\t\t\"hover:border-muted\",\n\t\t\t\"focus:outline-none focus-visible:shadow-focus\",\n\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:border-primary-border\"\n\t\t],\n\t\tindicator: \"flex items-center justify-center\",\n\t\ticon: \"h-2 w-2 fill-secondary-bg\"\n\t}\n});\n\nexport const RadioGroupItem = React.forwardRef<React.ElementRef<typeof RadioGroupPrimitive.Item>, RadioGroupItemProps>(\n\t({ className, ...props }, ref) => {\n\t\tconst styles = radioGroupItemStyles();\n\n\t\treturn (\n\t\t\t<RadioGroupPrimitive.Item ref={ref} className={styles.item({ className })} {...props}>\n\t\t\t\t<RadioGroupPrimitive.Indicator className={styles.indicator()}>\n\t\t\t\t\t<Icon icon={Circle} className={styles.icon()} />\n\t\t\t\t</RadioGroupPrimitive.Indicator>\n\t\t\t</RadioGroupPrimitive.Item>\n\t\t);\n\t}\n);\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n"],"names":["RADIO_NAME","createRadioContext","createRadioScope","createContextScope","RadioProvider","useRadioContext","Radio","React","props","forwardedRef","__scopeRadio","name","checked","required","disabled","value","onCheck","form","radioProps","button","setButton","composedRefs","useComposedRefs","node","hasConsumerStoppedPropagationRef","isFormControl","jsxs","jsx","Primitive","getState","composeEventHandlers","event","RadioBubbleInput","INDICATOR_NAME","RadioIndicator","forceMount","indicatorProps","context","Presence","BUBBLE_INPUT_NAME","control","bubbles","ref","prevChecked","usePrevious","controlSize","useSize","input","inputProto","setChecked","ARROW_KEYS","RADIO_GROUP_NAME","createRadioGroupContext","createRadioGroupScope","createContextScope2","createRovingFocusGroupScope","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","React2","__scopeRadioGroup","defaultValue","valueProp","orientation","dir","loop","onValueChange","groupProps","rovingFocusGroupScope","direction","useDirection","setValue","useControllableState","jsx2","RovingFocusGroup.Root","Primitive2","ITEM_NAME","RadioGroupItem","itemProps","isDisabled","radioScope","useComposedRefs2","isArrowKeyPressedRef","handleKeyDown","handleKeyUp","RovingFocusGroup.Item","composeEventHandlers2","INDICATOR_NAME2","RadioGroupIndicator","Root2","Item2","Indicator","radioGroupStyles","tv","className","RadioGroupPrimitive.Root","radioGroupItemStyles","styles","RadioGroupPrimitive.Item","RadioGroupPrimitive.Indicator","Icon","Circle"],"mappings":"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","x_google_ignoreList":[0]}