inconel 0.1.0 → 0.1.2

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 (175) hide show
  1. package/README.md +31 -0
  2. package/dist/components/Button/Button.d.ts +8 -0
  3. package/dist/components/Button/Button.d.ts.map +1 -0
  4. package/dist/components/Button/index.d.ts +3 -0
  5. package/dist/components/Button/index.d.ts.map +1 -0
  6. package/dist/components/Checkbox/Checkbox.d.ts +7 -0
  7. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
  8. package/dist/components/Checkbox/index.d.ts +3 -0
  9. package/dist/components/Checkbox/index.d.ts.map +1 -0
  10. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +15 -0
  11. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
  12. package/dist/components/CheckboxGroup/index.d.ts +3 -0
  13. package/dist/components/CheckboxGroup/index.d.ts.map +1 -0
  14. package/dist/components/CheckboxGroup/utils.d.ts +2 -0
  15. package/dist/components/CheckboxGroup/utils.d.ts.map +1 -0
  16. package/dist/components/CurrencyInput/CurrencyInput.d.ts +6 -0
  17. package/dist/components/CurrencyInput/CurrencyInput.d.ts.map +1 -0
  18. package/dist/components/CurrencyInput/index.d.ts +3 -0
  19. package/dist/components/CurrencyInput/index.d.ts.map +1 -0
  20. package/dist/components/CustomizableSwitch/CustomizableSwitch.d.ts +4 -0
  21. package/dist/components/CustomizableSwitch/CustomizableSwitch.d.ts.map +1 -0
  22. package/dist/components/CustomizableSwitch/index.d.ts +3 -0
  23. package/dist/components/CustomizableSwitch/index.d.ts.map +1 -0
  24. package/dist/components/DataGrid/DataGrid.d.ts +4 -0
  25. package/dist/components/DataGrid/DataGrid.d.ts.map +1 -0
  26. package/dist/components/DataGrid/index.d.ts +3 -0
  27. package/dist/components/DataGrid/index.d.ts.map +1 -0
  28. package/dist/components/DatePicker/DatePicker.d.ts +8 -0
  29. package/dist/components/DatePicker/DatePicker.d.ts.map +1 -0
  30. package/dist/components/DatePicker/index.d.ts +3 -0
  31. package/dist/components/DatePicker/index.d.ts.map +1 -0
  32. package/dist/components/DatePicker/utils.d.ts +2 -0
  33. package/dist/components/DatePicker/utils.d.ts.map +1 -0
  34. package/dist/components/DndFileUpload/DndFileUpload.d.ts +4 -0
  35. package/dist/components/DndFileUpload/DndFileUpload.d.ts.map +1 -0
  36. package/dist/components/DndFileUpload/index.d.ts +3 -0
  37. package/dist/components/DndFileUpload/index.d.ts.map +1 -0
  38. package/dist/components/DotLoader/DotLoader.d.ts +6 -0
  39. package/dist/components/DotLoader/DotLoader.d.ts.map +1 -0
  40. package/dist/components/DotLoader/constants.d.ts +2 -0
  41. package/dist/components/DotLoader/constants.d.ts.map +1 -0
  42. package/dist/components/DotLoader/index.d.ts +3 -0
  43. package/dist/components/DotLoader/index.d.ts.map +1 -0
  44. package/dist/components/DragDropUpload/DragDropUpload.d.ts +8 -0
  45. package/dist/components/DragDropUpload/DragDropUpload.d.ts.map +1 -0
  46. package/dist/components/DragDropUpload/constants.d.ts +2 -0
  47. package/dist/components/DragDropUpload/constants.d.ts.map +1 -0
  48. package/dist/components/DragDropUpload/index.d.ts +3 -0
  49. package/dist/components/DragDropUpload/index.d.ts.map +1 -0
  50. package/dist/components/ExcelTable/ExcelTable.d.ts +4 -0
  51. package/dist/components/ExcelTable/ExcelTable.d.ts.map +1 -0
  52. package/dist/components/ExcelTable/index.d.ts +3 -0
  53. package/dist/components/ExcelTable/index.d.ts.map +1 -0
  54. package/dist/components/FieldFeedback/FieldFeedback.d.ts.map +1 -1
  55. package/dist/components/FileUpload/FileUpload.d.ts +8 -0
  56. package/dist/components/FileUpload/FileUpload.d.ts.map +1 -0
  57. package/dist/components/FileUpload/constants.d.ts +2 -0
  58. package/dist/components/FileUpload/constants.d.ts.map +1 -0
  59. package/dist/components/FileUpload/index.d.ts +3 -0
  60. package/dist/components/FileUpload/index.d.ts.map +1 -0
  61. package/dist/components/FileUploadText/FileUploadText.d.ts +4 -0
  62. package/dist/components/FileUploadText/FileUploadText.d.ts.map +1 -0
  63. package/dist/components/FileUploadText/index.d.ts +3 -0
  64. package/dist/components/FileUploadText/index.d.ts.map +1 -0
  65. package/dist/components/Filter/Filter.d.ts +7 -0
  66. package/dist/components/Filter/Filter.d.ts.map +1 -0
  67. package/dist/components/Filter/index.d.ts +3 -0
  68. package/dist/components/Filter/index.d.ts.map +1 -0
  69. package/dist/components/HTMLTable/HTMLTable.d.ts +4 -0
  70. package/dist/components/HTMLTable/HTMLTable.d.ts.map +1 -0
  71. package/dist/components/HTMLTable/index.d.ts +3 -0
  72. package/dist/components/HTMLTable/index.d.ts.map +1 -0
  73. package/dist/components/HtmlEditor/HtmlEditor.d.ts +9 -0
  74. package/dist/components/HtmlEditor/HtmlEditor.d.ts.map +1 -0
  75. package/dist/components/HtmlEditor/index.d.ts +3 -0
  76. package/dist/components/HtmlEditor/index.d.ts.map +1 -0
  77. package/dist/components/Input/Input.d.ts.map +1 -1
  78. package/dist/components/InputText/InputText.d.ts +4 -0
  79. package/dist/components/InputText/InputText.d.ts.map +1 -0
  80. package/dist/components/InputText/index.d.ts +3 -0
  81. package/dist/components/InputText/index.d.ts.map +1 -0
  82. package/dist/components/Loader/Loader.d.ts +7 -0
  83. package/dist/components/Loader/Loader.d.ts.map +1 -0
  84. package/dist/components/Loader/constants.d.ts +2 -0
  85. package/dist/components/Loader/constants.d.ts.map +1 -0
  86. package/dist/components/Loader/index.d.ts +3 -0
  87. package/dist/components/Loader/index.d.ts.map +1 -0
  88. package/dist/components/LoaderMini/LoaderMini.d.ts +4 -0
  89. package/dist/components/LoaderMini/LoaderMini.d.ts.map +1 -0
  90. package/dist/components/LoaderMini/index.d.ts +3 -0
  91. package/dist/components/LoaderMini/index.d.ts.map +1 -0
  92. package/dist/components/Modal/Modal.d.ts +13 -0
  93. package/dist/components/Modal/Modal.d.ts.map +1 -0
  94. package/dist/components/Modal/constants.d.ts +2 -0
  95. package/dist/components/Modal/constants.d.ts.map +1 -0
  96. package/dist/components/Modal/index.d.ts +3 -0
  97. package/dist/components/Modal/index.d.ts.map +1 -0
  98. package/dist/components/MultiSelect/MultiSelect.d.ts +15 -0
  99. package/dist/components/MultiSelect/MultiSelect.d.ts.map +1 -0
  100. package/dist/components/MultiSelect/index.d.ts +3 -0
  101. package/dist/components/MultiSelect/index.d.ts.map +1 -0
  102. package/dist/components/MultiSelectWithCheckbox/MultiSelectWithCheckbox.d.ts +4 -0
  103. package/dist/components/MultiSelectWithCheckbox/MultiSelectWithCheckbox.d.ts.map +1 -0
  104. package/dist/components/MultiSelectWithCheckbox/index.d.ts +3 -0
  105. package/dist/components/MultiSelectWithCheckbox/index.d.ts.map +1 -0
  106. package/dist/components/Option/Option.d.ts +8 -0
  107. package/dist/components/Option/Option.d.ts.map +1 -0
  108. package/dist/components/Option/index.d.ts +3 -0
  109. package/dist/components/Option/index.d.ts.map +1 -0
  110. package/dist/components/OptionWithIcon/OptionWithIcon.d.ts +4 -0
  111. package/dist/components/OptionWithIcon/OptionWithIcon.d.ts.map +1 -0
  112. package/dist/components/OptionWithIcon/index.d.ts +3 -0
  113. package/dist/components/OptionWithIcon/index.d.ts.map +1 -0
  114. package/dist/components/RadioGroup/RadioGroup.d.ts +15 -0
  115. package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -0
  116. package/dist/components/RadioGroup/index.d.ts +3 -0
  117. package/dist/components/RadioGroup/index.d.ts.map +1 -0
  118. package/dist/components/ReadOnly/ReadOnly.d.ts +8 -0
  119. package/dist/components/ReadOnly/ReadOnly.d.ts.map +1 -0
  120. package/dist/components/ReadOnly/constants.d.ts +2 -0
  121. package/dist/components/ReadOnly/constants.d.ts.map +1 -0
  122. package/dist/components/ReadOnly/index.d.ts +3 -0
  123. package/dist/components/ReadOnly/index.d.ts.map +1 -0
  124. package/dist/components/Select/Select.d.ts.map +1 -1
  125. package/dist/components/SlideTabs/SlideTabs.d.ts +4 -0
  126. package/dist/components/SlideTabs/SlideTabs.d.ts.map +1 -0
  127. package/dist/components/SlideTabs/index.d.ts +3 -0
  128. package/dist/components/SlideTabs/index.d.ts.map +1 -0
  129. package/dist/components/SocketStatus/SocketStatus.d.ts +8 -0
  130. package/dist/components/SocketStatus/SocketStatus.d.ts.map +1 -0
  131. package/dist/components/SocketStatus/index.d.ts +3 -0
  132. package/dist/components/SocketStatus/index.d.ts.map +1 -0
  133. package/dist/components/Svg/Svg.d.ts +10 -0
  134. package/dist/components/Svg/Svg.d.ts.map +1 -0
  135. package/dist/components/Svg/index.d.ts +3 -0
  136. package/dist/components/Svg/index.d.ts.map +1 -0
  137. package/dist/components/Switch/Switch.d.ts +9 -0
  138. package/dist/components/Switch/Switch.d.ts.map +1 -0
  139. package/dist/components/Switch/index.d.ts +3 -0
  140. package/dist/components/Switch/index.d.ts.map +1 -0
  141. package/dist/components/Table/Table.d.ts +16 -0
  142. package/dist/components/Table/Table.d.ts.map +1 -0
  143. package/dist/components/Table/constants.d.ts +2 -0
  144. package/dist/components/Table/constants.d.ts.map +1 -0
  145. package/dist/components/Table/index.d.ts +3 -0
  146. package/dist/components/Table/index.d.ts.map +1 -0
  147. package/dist/components/Table/utils.d.ts +2 -0
  148. package/dist/components/Table/utils.d.ts.map +1 -0
  149. package/dist/components/Tabs/Tabs.d.ts +16 -0
  150. package/dist/components/Tabs/Tabs.d.ts.map +1 -0
  151. package/dist/components/Tabs/index.d.ts +3 -0
  152. package/dist/components/Tabs/index.d.ts.map +1 -0
  153. package/dist/components/TextEditor/TextEditor.d.ts +4 -0
  154. package/dist/components/TextEditor/TextEditor.d.ts.map +1 -0
  155. package/dist/components/TextEditor/index.d.ts +3 -0
  156. package/dist/components/TextEditor/index.d.ts.map +1 -0
  157. package/dist/components/TextInput/TextInput.d.ts +4 -0
  158. package/dist/components/TextInput/TextInput.d.ts.map +1 -0
  159. package/dist/components/TextInput/index.d.ts +3 -0
  160. package/dist/components/TextInput/index.d.ts.map +1 -0
  161. package/dist/components/Textarea/Textarea.d.ts.map +1 -1
  162. package/dist/components/Tooltip/Tooltip.d.ts +9 -0
  163. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
  164. package/dist/components/Tooltip/index.d.ts +3 -0
  165. package/dist/components/Tooltip/index.d.ts.map +1 -0
  166. package/dist/components/index.d.ts +35 -0
  167. package/dist/components/index.d.ts.map +1 -1
  168. package/dist/components/shared/classNames.d.ts +2 -0
  169. package/dist/components/shared/classNames.d.ts.map +1 -0
  170. package/dist/index.cjs +1 -1
  171. package/dist/index.cjs.map +1 -1
  172. package/dist/index.js +1047 -499
  173. package/dist/index.js.map +1 -1
  174. package/dist/styles.css +1 -1
  175. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/components/FieldFeedback/FieldFeedback.tsx","../src/components/Input/constants.ts","../src/components/Input/utils.ts","../src/components/Input/Input.tsx","../src/components/Select/Select.tsx","../src/components/Textarea/Textarea.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nexport interface FieldFeedbackContentProps {\n hint?: ReactNode\n errorMessage?: ReactNode\n}\n\nexport interface FieldFeedbackProps extends FieldFeedbackContentProps {\n hintId: string\n errorId: string\n className?: string\n}\n\nfunction FieldFeedback({\n hint,\n errorMessage,\n hintId,\n errorId,\n className,\n}: FieldFeedbackProps) {\n if (errorMessage) {\n return (\n <p\n id={errorId}\n className={['inconel-field-feedback', 'is-error', className ?? ''].join(\n ' ',\n )}\n role=\"alert\"\n >\n {errorMessage}\n </p>\n )\n }\n\n if (hint) {\n return (\n <p\n id={hintId}\n className={['inconel-field-feedback', 'is-hint', className ?? ''].join(\n ' ',\n )}\n >\n {hint}\n </p>\n )\n }\n\n return null\n}\n\nexport default FieldFeedback\n","export const FORMATTED_INPUT_TYPES = [\n 'number',\n 'currency',\n 'percent',\n] as const\n\nexport const LENGTH_VALIDATED_INPUT_TYPES = [\n 'text',\n 'email',\n 'password',\n] as const\n","import {\n FORMATTED_INPUT_TYPES,\n LENGTH_VALIDATED_INPUT_TYPES,\n} from './constants'\nimport type {\n InputRoundMode,\n InputType,\n InputValidationMessages,\n InputValue,\n} from './Input'\n\nexport interface InputValidationOptions {\n required: boolean\n type: InputType\n min?: number\n max?: number\n mask?: string\n messages: InputValidationMessages\n}\n\nexport function isFormattedInputType(type: InputType) {\n return FORMATTED_INPUT_TYPES.some((candidate) => candidate === type)\n}\n\nexport function isLengthValidatedInputType(type: InputType) {\n return LENGTH_VALIDATED_INPUT_TYPES.some((candidate) => candidate === type)\n}\n\nexport function getInputSeparators(locale: string) {\n const parts = new Intl.NumberFormat(locale).formatToParts(1000.1)\n return {\n group: parts.find((part) => part.type === 'group')?.value ?? '.',\n decimal: parts.find((part) => part.type === 'decimal')?.value ?? ',',\n }\n}\n\nexport function parseInputNumber(value: string, locale: string): number | null {\n if (!value || value === '-') return null\n const { group, decimal } = getInputSeparators(locale)\n const normalized = value.split(group).join('').replace(decimal, '.')\n const result = Number(normalized)\n return Number.isNaN(result) ? null : result\n}\n\nexport function roundInputNumber(\n value: number,\n scale: number,\n mode: InputRoundMode,\n) {\n const factor = 10 ** scale\n if (mode === 'ceil') return Math.ceil(value * factor) / factor\n if (mode === 'round') return Math.round(value * factor) / factor\n return value >= 0\n ? Math.floor(value * factor) / factor\n : Math.ceil(value * factor) / factor\n}\n\nexport function applyInputMask(value: InputValue, mask: string) {\n const digits = String(value ?? '').replace(/\\D/g, '')\n let index = 0\n let result = ''\n\n for (const character of mask) {\n if (character === 'X') {\n if (index >= digits.length) break\n result += digits[index++]\n } else if (index < digits.length) {\n result += character\n }\n }\n\n return result\n}\n\nexport function formatInputValue(\n value: InputValue,\n type: InputType,\n locale: string,\n decimalScale: number,\n currency: string,\n mask?: string,\n) {\n if (value === null || value === undefined || value === '') return ''\n if (type === 'phone' && mask) return applyInputMask(value, mask)\n if (!isFormattedInputType(type)) return String(value)\n if (typeof value !== 'number' || Number.isNaN(value)) return String(value)\n\n return new Intl.NumberFormat(locale, {\n style:\n type === 'currency'\n ? 'currency'\n : type === 'percent'\n ? 'percent'\n : 'decimal',\n currency: type === 'currency' ? currency : undefined,\n minimumFractionDigits: decimalScale,\n maximumFractionDigits: decimalScale,\n }).format(value)\n}\n\nexport function validateInputValue(\n candidate: InputValue,\n {\n required,\n type,\n min,\n max,\n mask,\n messages,\n }: InputValidationOptions,\n) {\n if (\n required &&\n (candidate === null || candidate === undefined || candidate === '')\n ) {\n return messages.required ?? null\n }\n if (candidate === null || candidate === undefined || candidate === '') {\n return null\n }\n if (\n type === 'email' &&\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(String(candidate))\n ) {\n return messages.invalidEmail ?? null\n }\n if (type === 'phone') {\n const digits = String(candidate).replace(/\\D/g, '')\n const expected = mask\n ? (mask.match(/X/g) ?? []).length\n : digits.startsWith('0')\n ? 11\n : 10\n if (digits.length !== expected) return messages.invalidPhone ?? null\n }\n if (isLengthValidatedInputType(type)) {\n if (typeof min === 'number' && String(candidate).length < min) {\n return messages.minLength?.replace('{min}', String(min)) ?? null\n }\n if (typeof max === 'number' && String(candidate).length > max) {\n return messages.maxLength?.replace('{max}', String(max)) ?? null\n }\n }\n if (isFormattedInputType(type)) {\n if (typeof candidate !== 'number' || Number.isNaN(candidate)) {\n return messages.invalidNumber ?? null\n }\n if (typeof min === 'number' && candidate < min) {\n return messages.minNumber?.replace('{min}', String(min)) ?? null\n }\n if (typeof max === 'number' && candidate > max) {\n return messages.maxNumber?.replace('{max}', String(max)) ?? null\n }\n }\n return null\n}\n","import {\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type FocusEvent,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react'\n\nimport FieldFeedback from '../FieldFeedback/FieldFeedback'\nimport type { FieldFeedbackContentProps } from '../FieldFeedback/FieldFeedback'\nimport {\n applyInputMask,\n formatInputValue,\n getInputSeparators,\n isFormattedInputType,\n isLengthValidatedInputType,\n parseInputNumber,\n roundInputNumber,\n validateInputValue,\n} from './utils'\n\nexport type InputType =\n | 'text'\n | 'number'\n | 'currency'\n | 'percent'\n | 'phone'\n | 'email'\n | 'password'\n\nexport type InputRoundMode = 'ceil' | 'floor' | 'round'\nexport type InputValue = string | number | null\nexport type InputEventType =\n | 'change'\n | 'blur'\n | 'focus'\n | 'keydown'\n | 'mouseenter'\n | 'mouseleave'\n | 'clear'\n\nexport interface InputPayload {\n rawValue: InputValue\n formattedValue: string\n error: boolean\n char: string | null\n eventType: InputEventType\n}\n\nexport interface InputValidationMessages {\n required?: string\n invalidNumber?: string\n minNumber?: string\n maxNumber?: string\n minLength?: string\n maxLength?: string\n invalidPhone?: string\n invalidEmail?: string\n}\n\ntype NativeInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n | 'type'\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'onBlur'\n | 'onFocus'\n | 'onKeyDown'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'min'\n | 'max'\n | 'size'\n | 'readOnly'\n>\n\nexport interface InputProps extends NativeInputProps, FieldFeedbackContentProps {\n label?: string\n startAdornment?: ReactNode\n endAdornment?: ReactNode\n fullWidth?: boolean\n inputClassName?: string\n labelClassName?: string\n value?: InputValue\n defaultValue?: InputValue\n onChange?: (payload: InputPayload) => void\n onBlur?: (payload: InputPayload, event: FocusEvent<HTMLInputElement>) => void\n onFocus?: (payload: InputPayload, event: FocusEvent<HTMLInputElement>) => void\n onKeyDown?: (\n payload: InputPayload,\n event: KeyboardEvent<HTMLInputElement>,\n ) => void\n onMouseEnter?: (\n payload: InputPayload,\n event: MouseEvent<HTMLInputElement>,\n ) => void\n onMouseLeave?: (\n payload: InputPayload,\n event: MouseEvent<HTMLInputElement>,\n ) => void\n type?: InputType\n locale?: string\n currency?: string\n decimalScale?: number\n roundMode?: InputRoundMode\n roundOnBlur?: boolean\n min?: number\n max?: number\n allowNegative?: boolean\n debounceMs?: number\n validateOnSubmit?: boolean\n validationMessages?: InputValidationMessages\n mask?: string\n limit?: number\n isClearable?: boolean\n readOnly?: boolean\n clearButtonLabel?: string\n readOnlyEmptyValue?: ReactNode\n}\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n id,\n label,\n hint,\n errorMessage,\n startAdornment,\n endAdornment,\n fullWidth = false,\n inputClassName,\n labelClassName,\n className,\n required,\n disabled,\n value,\n defaultValue = '',\n onChange,\n onBlur,\n onFocus,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n type = 'text',\n locale = 'tr-TR',\n currency = 'TRY',\n decimalScale = 0,\n roundMode = 'floor',\n roundOnBlur = false,\n min,\n max,\n allowNegative = false,\n debounceMs = 0,\n validateOnSubmit = false,\n validationMessages,\n mask,\n limit,\n isClearable = false,\n readOnly = false,\n clearButtonLabel,\n readOnlyEmptyValue = null,\n autoComplete = 'off',\n 'aria-describedby': ariaDescribedBy,\n ...inputProps\n },\n ref,\n) {\n const generatedId = useId()\n const inputId = id ?? `inconel-input-${generatedId.replace(/:/g, '')}`\n const hintId = `${inputId}-hint`\n const errorId = `${inputId}-error`\n const controlled = value !== undefined\n const [localValue, setLocalValue] = useState<InputValue>(defaultValue)\n const currentValue = controlled ? value : localValue\n const [editingValue, setEditingValue] = useState('')\n const [focused, setFocused] = useState(false)\n const [validationError, setValidationError] = useState<string | null>(null)\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const messages = validationMessages ?? {}\n const visibleError = errorMessage ?? validationError\n\n const validate = (candidate: InputValue) =>\n validateInputValue(candidate, {\n required: Boolean(required),\n type,\n min,\n max,\n mask,\n messages,\n })\n\n const formattedValue = useMemo(\n () =>\n formatInputValue(\n currentValue,\n type,\n locale,\n decimalScale,\n currency,\n mask,\n ),\n [currentValue, currency, decimalScale, locale, mask, type],\n )\n\n const buildPayload = (\n rawValue: InputValue,\n eventType: InputEventType,\n char: string | null = null,\n ): InputPayload => ({\n rawValue,\n formattedValue: formatInputValue(\n rawValue,\n type,\n locale,\n decimalScale,\n currency,\n mask,\n ),\n error: Boolean(validate(rawValue)),\n char,\n eventType,\n })\n\n const emitChange = (payload: InputPayload, immediate = false) => {\n if (!controlled) setLocalValue(payload.rawValue)\n if (debounceRef.current) clearTimeout(debounceRef.current)\n if (!onChange) return\n if (immediate || debounceMs <= 0) onChange(payload)\n else debounceRef.current = setTimeout(() => onChange(payload), debounceMs)\n }\n\n useEffect(() => () => {\n if (debounceRef.current) clearTimeout(debounceRef.current)\n }, [])\n\n useEffect(() => {\n if (validateOnSubmit) setValidationError(validate(currentValue))\n // Validation intentionally runs when submit state changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [validateOnSubmit])\n\n const normalize = (text: string): InputValue => {\n if (type === 'phone' && mask) return text.replace(/\\D/g, '')\n if (isFormattedInputType(type)) {\n const parsed = parseInputNumber(text, locale)\n if (parsed === null) return text === '' ? null : text\n return allowNegative ? parsed : Math.abs(parsed)\n }\n return text\n }\n\n const handleChange = (text: string) => {\n const digits = text.replace(/\\D/g, '')\n if (\n limit &&\n (isFormattedInputType(type) || type === 'phone') &&\n digits.length > limit\n ) return\n if (limit && isLengthValidatedInputType(type) && text.length > limit) return\n const rawValue = normalize(text)\n if (typeof rawValue === 'number') {\n if (typeof min === 'number' && rawValue < min) return\n if (typeof max === 'number' && rawValue > max) return\n }\n setEditingValue(\n type === 'phone' && mask ? applyInputMask(rawValue, mask) : text,\n )\n emitChange(buildPayload(rawValue, 'change', text.slice(-1) || null))\n }\n\n const describedBy = [\n ariaDescribedBy,\n hint && !visibleError ? hintId : undefined,\n visibleError ? errorId : undefined,\n ].filter(Boolean).join(' ') || undefined\n\n if (readOnly) {\n return (\n <div className={['inconel-field', fullWidth ? 'inconel-field--full-width' : '', className ?? ''].join(' ')}>\n {label && <span className={['inconel-field__label', labelClassName ?? ''].join(' ')}>{label}</span>}\n <div className=\"inconel-input-readonly\" aria-label={label}>\n {formattedValue || readOnlyEmptyValue}\n </div>\n </div>\n )\n }\n\n return (\n <div className={['inconel-field', fullWidth ? 'inconel-field--full-width' : '', className ?? ''].join(' ')}>\n {label && (\n <label className={['inconel-field__label', labelClassName ?? ''].join(' ')} htmlFor={inputId}>\n {label}{required && <span className=\"inconel-field__required\" aria-hidden=\"true\"> *</span>}\n </label>\n )}\n <div className={['inconel-input-control', visibleError ? 'is-invalid' : '', disabled ? 'is-disabled' : ''].join(' ')}>\n {startAdornment && <span className=\"inconel-input-adornment\" aria-hidden=\"true\">{startAdornment}</span>}\n <input\n {...inputProps}\n ref={ref}\n id={inputId}\n type={type === 'password' || type === 'email' ? type : 'text'}\n inputMode={isFormattedInputType(type) ? 'decimal' : type === 'phone' ? 'tel' : undefined}\n value={focused ? editingValue : formattedValue}\n required={required}\n disabled={disabled}\n autoComplete={autoComplete}\n aria-invalid={Boolean(visibleError)}\n aria-describedby={describedBy}\n className={['inconel-input', inputClassName ?? ''].join(' ')}\n onChange={(event) => handleChange(event.target.value)}\n onFocus={(event) => {\n if (disabled) return\n setFocused(true)\n const editValue = type === 'phone' && mask\n ? applyInputMask(currentValue, mask)\n : isFormattedInputType(type)\n ? String(currentValue ?? '').replace('.', getInputSeparators(locale).decimal)\n : String(currentValue ?? '')\n setEditingValue(editValue)\n onFocus?.(buildPayload(currentValue, 'focus'), event)\n }}\n onBlur={(event) => {\n setFocused(false)\n if (debounceRef.current) clearTimeout(debounceRef.current)\n let rawValue = normalize(editingValue)\n if (typeof rawValue === 'number') {\n rawValue = roundInputNumber(rawValue, decimalScale, roundOnBlur ? roundMode : 'floor')\n }\n setValidationError(validate(rawValue))\n const payload = buildPayload(rawValue, 'blur')\n emitChange(payload, true)\n onBlur?.(payload, event)\n }}\n onKeyDown={(event) => {\n if (!allowNegative && (event.key === '-' || event.key === 'Subtract')) event.preventDefault()\n onKeyDown?.(buildPayload(currentValue, 'keydown', event.key), event)\n }}\n onMouseEnter={(event) => onMouseEnter?.(buildPayload(currentValue, 'mouseenter'), event)}\n onMouseLeave={(event) => onMouseLeave?.(buildPayload(currentValue, 'mouseleave'), event)}\n />\n {isClearable && !disabled && formattedValue && clearButtonLabel && (\n <button\n type=\"button\"\n className=\"inconel-input-clear\"\n aria-label={clearButtonLabel}\n onClick={() => {\n setEditingValue('')\n setValidationError(validate(null))\n emitChange(buildPayload(null, 'clear'), true)\n }}\n >\n ×\n </button>\n )}\n {endAdornment && <span className=\"inconel-input-adornment\" aria-hidden=\"true\">{endAdornment}</span>}\n </div>\n <FieldFeedback\n hint={hint}\n errorMessage={visibleError}\n hintId={hintId}\n errorId={errorId}\n />\n </div>\n )\n})\n\nexport default Input\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ForwardedRef,\n type KeyboardEvent,\n type ReactNode,\n} from 'react'\nimport {\n autoUpdate,\n flip,\n offset,\n shift,\n size,\n useFloating,\n} from '@floating-ui/react'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport { createPortal } from 'react-dom'\n\nimport FieldFeedback from '../FieldFeedback/FieldFeedback'\nimport type { FieldFeedbackContentProps } from '../FieldFeedback/FieldFeedback'\n\nexport type OptionValue = string | number\n\nexport interface SelectHandle {\n focus: () => void\n blur: () => void\n clear: () => void\n}\n\ntype SelectPart =\n | 'root'\n | 'label'\n | 'control'\n | 'input'\n | 'clearButton'\n | 'toggleButton'\n | 'menu'\n | 'option'\n | 'message'\n\nexport type SelectClassNames = Partial<Record<SelectPart, string>>\nexport type SelectStyles = Partial<Record<SelectPart, CSSProperties>>\n\nexport interface SelectProps<T extends object> extends FieldFeedbackContentProps {\n id?: string\n name?: string\n label: string\n options: T[]\n value: OptionValue | null\n onChange: (value: OptionValue | null, option: T | null) => void\n optionLabel: keyof T | ((option: T) => ReactNode)\n optionValue: keyof T | ((option: T) => OptionValue)\n getOptionSearchText?: (option: T) => string\n isOptionDisabled?: (option: T) => boolean\n placeholder?: string\n isClearable?: boolean\n isDisabled?: boolean\n isReadOnly?: boolean\n isRequired?: boolean\n isLoading?: boolean\n loadOptions?: (inputValue: string, signal: AbortSignal) => Promise<T[]>\n loadOptionsDebounceMs?: number\n asyncErrorMessage?: ReactNode\n loadingMessage?: ReactNode\n noOptionsMessage?: ReactNode\n clearButtonLabel?: string\n openMenuButtonLabel?: string\n closeMenuButtonLabel?: string\n searchLocale?: string\n menuPortalTarget?: HTMLElement | null\n virtualize?: boolean\n virtualizationThreshold?: number\n optionHeight?: number\n className?: string\n classNames?: SelectClassNames\n styles?: SelectStyles\n onInputChange?: (value: string) => void\n onMenuOpen?: () => void\n onMenuClose?: () => void\n}\n\nfunction cx(...values: Array<string | null | undefined | false>) {\n return values.filter(Boolean).join(' ')\n}\n\nfunction SelectInner<T extends object>(\n {\n id,\n name,\n label,\n options,\n value,\n onChange,\n optionLabel,\n optionValue,\n getOptionSearchText,\n isOptionDisabled = () => false,\n placeholder,\n isClearable = false,\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n isLoading = false,\n loadOptions,\n loadOptionsDebounceMs = 250,\n hint,\n errorMessage,\n asyncErrorMessage,\n loadingMessage,\n noOptionsMessage,\n clearButtonLabel,\n openMenuButtonLabel,\n closeMenuButtonLabel,\n searchLocale,\n menuPortalTarget,\n virtualize = false,\n virtualizationThreshold = 100,\n optionHeight = 44,\n className,\n classNames = {},\n styles = {},\n onInputChange,\n onMenuOpen,\n onMenuClose,\n }: SelectProps<T>,\n forwardedRef: ForwardedRef<SelectHandle>,\n) {\n const generatedId = useId()\n const inputId = id ?? `inconel-select-${generatedId.replace(/:/g, '')}`\n const labelId = `${inputId}-label`\n const listboxId = `${inputId}-listbox`\n const messageId = `${inputId}-message`\n const hintId = `${inputId}-hint`\n const rootRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const menuRef = useRef<HTMLDivElement>(null)\n const [isOpen, setIsOpen] = useState(false)\n const [inputValue, setInputValue] = useState('')\n const [activeIndex, setActiveIndex] = useState(0)\n const [asyncOptions, setAsyncOptions] = useState<T[] | null>(null)\n const [isAsyncLoading, setIsAsyncLoading] = useState(false)\n const [hasAsyncError, setHasAsyncError] = useState(false)\n\n useEffect(() => {\n if (!loadOptions) return\n const controller = new AbortController()\n const timeout = window.setTimeout(async () => {\n setIsAsyncLoading(true)\n setHasAsyncError(false)\n try {\n const loadedOptions = await loadOptions(\n inputValue,\n controller.signal,\n )\n if (!controller.signal.aborted) setAsyncOptions(loadedOptions)\n } catch {\n if (!controller.signal.aborted) setHasAsyncError(true)\n } finally {\n if (!controller.signal.aborted) setIsAsyncLoading(false)\n }\n }, loadOptionsDebounceMs)\n\n return () => {\n window.clearTimeout(timeout)\n controller.abort()\n }\n }, [inputValue, loadOptions, loadOptionsDebounceMs])\n\n const availableOptions = loadOptions\n ? (asyncOptions ?? options)\n : options\n const loading = isLoading || isAsyncLoading\n\n const getLabel = useCallback(\n (option: T): ReactNode =>\n typeof optionLabel === 'function'\n ? optionLabel(option)\n : String(option[optionLabel]),\n [optionLabel],\n )\n\n const getSearchLabel = useCallback(\n (option: T) => {\n if (getOptionSearchText) return getOptionSearchText(option)\n const renderedLabel = getLabel(option)\n return typeof renderedLabel === 'string' ||\n typeof renderedLabel === 'number'\n ? String(renderedLabel)\n : ''\n },\n [getLabel, getOptionSearchText],\n )\n\n const getValue = useCallback(\n (option: T): OptionValue => {\n const resolvedValue =\n typeof optionValue === 'function'\n ? optionValue(option)\n : option[optionValue]\n\n if (\n typeof resolvedValue !== 'string' &&\n typeof resolvedValue !== 'number'\n ) {\n throw new TypeError('optionValue must resolve to a string or number.')\n }\n return resolvedValue\n },\n [optionValue],\n )\n\n const duplicateValues = useMemo(() => {\n const seen = new Set<OptionValue>()\n return availableOptions\n .map(getValue)\n .filter((optionId) => {\n if (seen.has(optionId)) return true\n seen.add(optionId)\n return false\n })\n }, [availableOptions, getValue])\n\n useEffect(() => {\n if (duplicateValues.length) {\n console.warn(\n `Duplicate optionValue found in Select \"${label}\":`,\n duplicateValues,\n )\n }\n }, [duplicateValues, label])\n\n const selectedOption = [...options, ...availableOptions].find(\n (option) => getValue(option) === value,\n )\n const selectedLabel = selectedOption ? getSearchLabel(selectedOption) : ''\n\n const filteredOptions = useMemo(() => {\n const query = inputValue.trim().toLocaleLowerCase(searchLocale)\n if (!query || loadOptions) return availableOptions\n return availableOptions.filter((option) =>\n getSearchLabel(option).toLocaleLowerCase(searchLocale).includes(query),\n )\n }, [availableOptions, getSearchLabel, inputValue, loadOptions, searchLocale])\n\n const { refs, floatingStyles } = useFloating({\n open: isOpen,\n placement: 'bottom-start',\n strategy: menuPortalTarget ? 'fixed' : 'absolute',\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(8),\n flip({ padding: 12 }),\n shift({ padding: 12 }),\n size({\n padding: 12,\n apply({ availableHeight, rects, elements }) {\n Object.assign(elements.floating.style, {\n maxHeight: `${Math.min(230, availableHeight)}px`,\n width: `${rects.reference.width}px`,\n })\n },\n }),\n ],\n })\n\n const shouldVirtualize =\n virtualize || filteredOptions.length >= virtualizationThreshold\n const virtualizer = useVirtualizer({\n count: filteredOptions.length,\n getScrollElement: () => menuRef.current,\n estimateSize: () => optionHeight,\n overscan: 5,\n enabled: shouldVirtualize && isOpen,\n })\n\n const closeMenu = useCallback(() => {\n setIsOpen(false)\n setInputValue('')\n onInputChange?.('')\n onMenuClose?.()\n }, [onInputChange, onMenuClose])\n\n const openMenu = () => {\n if (isDisabled || isReadOnly) return\n if (!isOpen) onMenuOpen?.()\n setIsOpen(true)\n }\n\n const clearSelection = useCallback(() => {\n if (isDisabled || isReadOnly) return\n onChange(null, null)\n setInputValue('')\n setActiveIndex(0)\n onInputChange?.('')\n inputRef.current?.focus()\n }, [isDisabled, isReadOnly, onChange, onInputChange])\n\n useImperativeHandle(\n forwardedRef,\n () => ({\n focus: () => inputRef.current?.focus(),\n blur: () => inputRef.current?.blur(),\n clear: clearSelection,\n }),\n [clearSelection],\n )\n\n useEffect(() => {\n const closeOnOutsideClick = (event: MouseEvent) => {\n const target = event.target as Node\n if (\n !rootRef.current?.contains(target) &&\n !menuRef.current?.contains(target)\n ) {\n closeMenu()\n }\n }\n\n document.addEventListener('mousedown', closeOnOutsideClick)\n return () => document.removeEventListener('mousedown', closeOnOutsideClick)\n }, [closeMenu])\n\n useEffect(() => {\n if (activeIndex >= filteredOptions.length) setActiveIndex(0)\n }, [activeIndex, filteredOptions.length])\n\n useEffect(() => {\n if (shouldVirtualize && isOpen && filteredOptions[activeIndex]) {\n virtualizer.scrollToIndex(activeIndex, { align: 'auto' })\n }\n }, [\n activeIndex,\n filteredOptions,\n isOpen,\n shouldVirtualize,\n virtualizer,\n ])\n\n const selectOption = (option: T) => {\n if (isOptionDisabled(option)) return\n onChange(getValue(option), option)\n closeMenu()\n inputRef.current?.focus()\n }\n\n const moveActiveOption = (direction: 1 | -1) => {\n if (!filteredOptions.length) return\n let nextIndex = activeIndex\n do {\n nextIndex =\n (nextIndex + direction + filteredOptions.length) %\n filteredOptions.length\n } while (\n isOptionDisabled(filteredOptions[nextIndex]) &&\n nextIndex !== activeIndex\n )\n setActiveIndex(nextIndex)\n }\n\n const findEnabledIndex = (fromEnd = false) => {\n const entries = filteredOptions.map((option, index) => ({ option, index }))\n if (fromEnd) entries.reverse()\n return entries.find(({ option }) => !isOptionDisabled(option))?.index ?? 0\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (\n event.key === 'Backspace' &&\n !inputValue &&\n value !== null &&\n isClearable\n ) {\n event.preventDefault()\n clearSelection()\n return\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault()\n if (!isOpen) {\n openMenu()\n setActiveIndex(findEnabledIndex(event.key === 'ArrowUp'))\n } else {\n moveActiveOption(event.key === 'ArrowDown' ? 1 : -1)\n }\n } else if (event.key === 'Home' && isOpen) {\n event.preventDefault()\n setActiveIndex(findEnabledIndex())\n } else if (event.key === 'End' && isOpen) {\n event.preventDefault()\n setActiveIndex(findEnabledIndex(true))\n } else if (event.key === 'Enter' && isOpen) {\n event.preventDefault()\n const activeOption = filteredOptions[activeIndex]\n if (activeOption) selectOption(activeOption)\n } else if (event.key === 'Escape' && isOpen) {\n event.preventDefault()\n closeMenu()\n } else if (event.key === 'Tab') {\n closeMenu()\n }\n }\n\n const renderOption = (option: T, index: number, style?: CSSProperties) => {\n const optionId = getValue(option)\n const disabled = isOptionDisabled(option)\n return (\n <div\n id={`${inputId}-option-${index}`}\n key={optionId}\n role=\"option\"\n aria-selected={optionId === value}\n aria-disabled={disabled}\n aria-posinset={index + 1}\n aria-setsize={filteredOptions.length}\n className={cx(\n 'inconel-select-option',\n index === activeIndex && 'is-active',\n optionId === value && 'is-selected',\n disabled && 'is-disabled',\n classNames.option,\n )}\n style={{ ...style, ...styles.option }}\n onMouseEnter={() => setActiveIndex(index)}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => selectOption(option)}\n >\n <span>{getLabel(option)}</span>\n {optionId === value && <span aria-hidden=\"true\">✓</span>}\n </div>\n )\n }\n\n const menuContent = loading ? (\n <div\n role=\"status\"\n className={cx('inconel-select-message', classNames.message)}\n style={styles.message}\n >\n <span className=\"inconel-select-spinner\" aria-hidden=\"true\" />\n {loadingMessage}\n </div>\n ) : hasAsyncError ? (\n <div\n role=\"alert\"\n className={cx('inconel-select-message inconel-select-message-error', classNames.message)}\n style={styles.message}\n >\n {asyncErrorMessage}\n </div>\n ) : filteredOptions.length === 0 ? (\n <div\n className={cx('inconel-select-message', classNames.message)}\n style={styles.message}\n >\n {noOptionsMessage}\n </div>\n ) : shouldVirtualize ? (\n <div\n role=\"presentation\"\n className=\"inconel-select-virtual-content\"\n style={{ height: virtualizer.getTotalSize() }}\n >\n {virtualizer.getVirtualItems().map((virtualRow) =>\n renderOption(filteredOptions[virtualRow.index], virtualRow.index, {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: virtualRow.size,\n transform: `translateY(${virtualRow.start}px)`,\n }),\n )}\n </div>\n ) : (\n filteredOptions.map((option, index) => renderOption(option, index))\n )\n\n const menu = isOpen ? (\n <div\n ref={(node) => {\n menuRef.current = node\n refs.setFloating(node)\n }}\n id={listboxId}\n role=\"listbox\"\n aria-labelledby={labelId}\n className={cx(\n 'inconel-select-menu',\n menuPortalTarget && 'inconel-select-menu-portal',\n classNames.menu,\n )}\n style={{ ...floatingStyles, ...styles.menu }}\n >\n {menuContent}\n </div>\n ) : null\n\n const describedBy = errorMessage ? messageId : hint ? hintId : undefined\n\n return (\n <div\n ref={rootRef}\n className={cx('inconel-select-field', className, classNames.root)}\n style={styles.root}\n >\n <label\n id={labelId}\n htmlFor={inputId}\n className={classNames.label}\n style={styles.label}\n >\n {label}\n {isRequired && <span aria-hidden=\"true\"> *</span>}\n </label>\n <div\n ref={refs.setReference}\n className={cx(\n 'inconel-select-control',\n isOpen && 'is-open',\n isDisabled && 'is-disabled',\n Boolean(errorMessage) && 'has-error',\n classNames.control,\n )}\n style={styles.control}\n >\n <input\n ref={inputRef}\n id={inputId}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-controls={listboxId}\n aria-autocomplete=\"list\"\n aria-activedescendant={\n isOpen && filteredOptions[activeIndex]\n ? `${inputId}-option-${activeIndex}`\n : undefined\n }\n aria-describedby={describedBy}\n aria-invalid={Boolean(errorMessage)}\n aria-required={isRequired}\n aria-busy={loading}\n required={isRequired}\n disabled={isDisabled}\n readOnly={isReadOnly}\n autoComplete=\"off\"\n placeholder={placeholder}\n value={inputValue || selectedLabel}\n className={classNames.input}\n style={styles.input}\n onChange={(event) => {\n setInputValue(event.target.value)\n setActiveIndex(0)\n onInputChange?.(event.target.value)\n openMenu()\n }}\n onClick={openMenu}\n onFocus={(event) => {\n openMenu()\n if (selectedOption && !inputValue) event.currentTarget.select()\n }}\n onKeyDown={handleKeyDown}\n />\n {loading && <span className=\"inconel-select-spinner\" aria-hidden=\"true\" />}\n {isClearable && value !== null && !isDisabled && !isReadOnly && clearButtonLabel && (\n <button\n type=\"button\"\n className={cx('inconel-select-clear', classNames.clearButton)}\n style={styles.clearButton}\n aria-label={clearButtonLabel}\n onClick={clearSelection}\n >\n ×\n </button>\n )}\n <button\n type=\"button\"\n className={cx('inconel-select-toggle', classNames.toggleButton)}\n style={styles.toggleButton}\n aria-label={isOpen ? closeMenuButtonLabel : openMenuButtonLabel}\n aria-expanded={isOpen}\n disabled={isDisabled}\n tabIndex={-1}\n onClick={() => (isOpen ? closeMenu() : openMenu())}\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n >\n <path\n d=\"m5 7.5 5 5 5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={value ?? ''}\n required={isRequired}\n />\n )}\n <FieldFeedback\n hint={hint}\n errorMessage={errorMessage}\n hintId={hintId}\n errorId={messageId}\n />\n\n {menuPortalTarget && menu\n ? createPortal(menu, menuPortalTarget)\n : menu}\n </div>\n )\n}\n\nconst Select = forwardRef(SelectInner) as <T extends object>(\n props: SelectProps<T> & { ref?: ForwardedRef<SelectHandle> },\n) => ReactNode\n\nexport default Select\n","import {\n forwardRef,\n useId,\n type TextareaHTMLAttributes,\n} from 'react'\n\nimport FieldFeedback from '../FieldFeedback/FieldFeedback'\nimport type { FieldFeedbackContentProps } from '../FieldFeedback/FieldFeedback'\n\nexport interface TextareaProps\n extends TextareaHTMLAttributes<HTMLTextAreaElement>,\n FieldFeedbackContentProps {\n label?: string\n fullWidth?: boolean\n resize?: 'none' | 'vertical' | 'horizontal' | 'both'\n}\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n function Textarea(\n {\n id,\n label,\n hint,\n errorMessage,\n fullWidth = false,\n resize = 'vertical',\n className,\n required,\n disabled,\n 'aria-describedby': ariaDescribedBy,\n style,\n ...textareaProps\n },\n ref,\n ) {\n const generatedId = useId()\n const textareaId =\n id ?? `inconel-textarea-${generatedId.replace(/:/g, '')}`\n const hintId = `${textareaId}-hint`\n const errorId = `${textareaId}-error`\n const describedBy =\n [\n ariaDescribedBy,\n hint && !errorMessage ? hintId : undefined,\n errorMessage ? errorId : undefined,\n ]\n .filter(Boolean)\n .join(' ') || undefined\n\n return (\n <div\n className={[\n 'inconel-field',\n fullWidth ? 'inconel-field--full-width' : '',\n className ?? '',\n ].join(' ')}\n >\n {label && (\n <label className=\"inconel-field__label\" htmlFor={textareaId}>\n {label}\n {required && <span aria-hidden=\"true\"> *</span>}\n </label>\n )}\n <textarea\n {...textareaProps}\n ref={ref}\n id={textareaId}\n required={required}\n disabled={disabled}\n aria-invalid={Boolean(errorMessage)}\n aria-describedby={describedBy}\n className={[\n 'inconel-textarea',\n errorMessage ? 'is-invalid' : '',\n ].join(' ')}\n style={{ ...style, resize }}\n />\n <FieldFeedback\n hint={hint}\n errorMessage={errorMessage}\n hintId={hintId}\n errorId={errorId}\n />\n </div>\n )\n },\n)\n\nexport default Textarea\n"],"names":["FieldFeedback","hint","errorMessage","hintId","errorId","className","jsx","FORMATTED_INPUT_TYPES","LENGTH_VALIDATED_INPUT_TYPES","isFormattedInputType","type","candidate","isLengthValidatedInputType","getInputSeparators","locale","parts","part","parseInputNumber","value","group","decimal","normalized","result","roundInputNumber","scale","mode","factor","applyInputMask","mask","digits","index","character","formatInputValue","decimalScale","currency","validateInputValue","required","min","max","messages","expected","Input","forwardRef","id","label","startAdornment","endAdornment","fullWidth","inputClassName","labelClassName","disabled","defaultValue","onChange","onBlur","onFocus","onKeyDown","onMouseEnter","onMouseLeave","roundMode","roundOnBlur","allowNegative","debounceMs","validateOnSubmit","validationMessages","limit","isClearable","readOnly","clearButtonLabel","readOnlyEmptyValue","autoComplete","ariaDescribedBy","inputProps","ref","generatedId","useId","inputId","controlled","localValue","setLocalValue","useState","currentValue","editingValue","setEditingValue","focused","setFocused","validationError","setValidationError","debounceRef","useRef","visibleError","validate","formattedValue","useMemo","buildPayload","rawValue","eventType","char","emitChange","payload","immediate","useEffect","normalize","text","parsed","handleChange","describedBy","jsxs","event","editValue","cx","values","SelectInner","name","options","optionLabel","optionValue","getOptionSearchText","isOptionDisabled","placeholder","isDisabled","isReadOnly","isRequired","isLoading","loadOptions","loadOptionsDebounceMs","asyncErrorMessage","loadingMessage","noOptionsMessage","openMenuButtonLabel","closeMenuButtonLabel","searchLocale","menuPortalTarget","virtualize","virtualizationThreshold","optionHeight","classNames","styles","onInputChange","onMenuOpen","onMenuClose","forwardedRef","labelId","listboxId","messageId","rootRef","inputRef","menuRef","isOpen","setIsOpen","inputValue","setInputValue","activeIndex","setActiveIndex","asyncOptions","setAsyncOptions","isAsyncLoading","setIsAsyncLoading","hasAsyncError","setHasAsyncError","controller","timeout","loadedOptions","availableOptions","loading","getLabel","useCallback","option","getSearchLabel","renderedLabel","getValue","resolvedValue","duplicateValues","seen","optionId","selectedOption","selectedLabel","filteredOptions","query","refs","floatingStyles","useFloating","autoUpdate","offset","flip","shift","size","availableHeight","rects","elements","shouldVirtualize","virtualizer","useVirtualizer","closeMenu","openMenu","clearSelection","useImperativeHandle","closeOnOutsideClick","target","selectOption","moveActiveOption","direction","nextIndex","findEnabledIndex","fromEnd","entries","handleKeyDown","activeOption","renderOption","style","menuContent","virtualRow","menu","node","createPortal","Select","Textarea","resize","textareaProps","textareaId"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/components/shared/classNames.ts","../src/components/Button/Button.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/CheckboxGroup/utils.ts","../src/components/CheckboxGroup/CheckboxGroup.tsx","../src/components/FieldFeedback/FieldFeedback.tsx","../src/components/Input/constants.ts","../src/components/Input/utils.ts","../src/components/Input/Input.tsx","../src/components/CurrencyInput/CurrencyInput.tsx","../src/components/Switch/Switch.tsx","../src/components/CustomizableSwitch/CustomizableSwitch.tsx","../src/components/Table/constants.ts","../src/components/Table/utils.ts","../src/components/Table/Table.tsx","../src/components/DataGrid/DataGrid.tsx","../src/components/DatePicker/utils.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/FileUpload/constants.ts","../src/components/FileUpload/FileUpload.tsx","../src/components/DragDropUpload/constants.ts","../src/components/DragDropUpload/DragDropUpload.tsx","../src/components/DndFileUpload/DndFileUpload.tsx","../src/components/DotLoader/constants.ts","../src/components/DotLoader/DotLoader.tsx","../src/components/ExcelTable/ExcelTable.tsx","../src/components/FileUploadText/FileUploadText.tsx","../src/components/Filter/Filter.tsx","../src/components/HTMLTable/HTMLTable.tsx","../src/components/HtmlEditor/HtmlEditor.tsx","../src/components/InputText/InputText.tsx","../src/components/Loader/constants.ts","../src/components/Loader/Loader.tsx","../src/components/LoaderMini/LoaderMini.tsx","../src/components/Modal/constants.ts","../src/components/Modal/Modal.tsx","../src/components/MultiSelect/MultiSelect.tsx","../src/components/MultiSelectWithCheckbox/MultiSelectWithCheckbox.tsx","../src/components/Option/Option.tsx","../src/components/OptionWithIcon/OptionWithIcon.tsx","../src/components/RadioGroup/RadioGroup.tsx","../src/components/ReadOnly/constants.ts","../src/components/ReadOnly/ReadOnly.tsx","../src/components/Select/Select.tsx","../src/components/Tabs/Tabs.tsx","../src/components/SlideTabs/SlideTabs.tsx","../src/components/SocketStatus/SocketStatus.tsx","../src/components/Svg/Svg.tsx","../src/components/TextEditor/TextEditor.tsx","../src/components/TextInput/TextInput.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["export function classNames(\n ...values: Array<string | false | null | undefined>\n) {\n return values.filter(Boolean).join(' ')\n}\n","import type { ButtonHTMLAttributes } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n loading?: boolean\n fullWidth?: boolean\n variant?: 'primary' | 'secondary' | 'danger' | 'ghost'\n}\n\nexport function Button({\n loading = false,\n fullWidth = false,\n variant = 'primary',\n disabled,\n className,\n children,\n ...props\n}: ButtonProps) {\n return (\n <button\n {...props}\n disabled={disabled || loading}\n className={classNames(\n 'inconel-button',\n `inconel-button--${variant}`,\n fullWidth && 'inconel-button--full-width',\n loading && 'inconel-is-loading',\n className,\n )}\n >\n {loading && <span className=\"inconel-button__spinner\" aria-hidden=\"true\" />}\n {children}\n </button>\n )\n}\n","import { useEffect, useRef, type InputHTMLAttributes, type ReactNode } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\n\nexport interface CheckboxProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n label?: ReactNode\n indeterminate?: boolean\n}\n\nexport function Checkbox({\n label,\n indeterminate = false,\n className,\n ...props\n}: CheckboxProps) {\n const ref = useRef<HTMLInputElement>(null)\n useEffect(() => {\n if (ref.current) ref.current.indeterminate = indeterminate\n }, [indeterminate])\n\n return (\n <label className={classNames('inconel-checkbox', className)}>\n <input {...props} ref={ref} type=\"checkbox\" />\n <span className=\"inconel-checkbox__control\" aria-hidden=\"true\" />\n {label && <span className=\"inconel-checkbox__label\">{label}</span>}\n </label>\n )\n}\n","export function toggleArrayValue<T>(values: T[], value: T) {\n return values.includes(value)\n ? values.filter((item) => item !== value)\n : [...values, value]\n}\n","import type { ReactNode } from 'react'\n\nimport { Checkbox } from '../Checkbox'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\nimport { toggleArrayValue } from './utils'\n\nexport interface CheckboxOption<T extends string | number = string> {\n label: ReactNode\n value: T\n disabled?: boolean\n}\n\nexport interface CheckboxGroupProps<T extends string | number = string> {\n options: CheckboxOption<T>[]\n value?: T[]\n onChange?: (value: T[]) => void\n name?: string\n className?: string\n}\n\nexport function CheckboxGroup<T extends string | number = string>({\n options,\n value = [],\n onChange,\n name,\n className,\n}: CheckboxGroupProps<T>) {\n const toggle = (optionValue: T) =>\n onChange?.(toggleArrayValue(value, optionValue))\n\n return (\n <div className={classNames('inconel-checkbox-group', className)}>\n {options.map((option) => (\n <Checkbox\n key={option.value}\n name={name}\n label={option.label}\n value={option.value}\n checked={value.includes(option.value)}\n disabled={option.disabled}\n onChange={() => toggle(option.value)}\n />\n ))}\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport '../shared/field.css'\n\nexport interface FieldFeedbackContentProps {\n hint?: ReactNode\n errorMessage?: ReactNode\n}\n\nexport interface FieldFeedbackProps extends FieldFeedbackContentProps {\n hintId: string\n errorId: string\n className?: string\n}\n\nfunction FieldFeedback({\n hint,\n errorMessage,\n hintId,\n errorId,\n className,\n}: FieldFeedbackProps) {\n if (errorMessage) {\n return (\n <p\n id={errorId}\n className={[\n 'inconel-field-feedback',\n 'inconel-is-error',\n className ?? '',\n ].join(' ')}\n role=\"alert\"\n >\n {errorMessage}\n </p>\n )\n }\n\n if (hint) {\n return (\n <p\n id={hintId}\n className={[\n 'inconel-field-feedback',\n 'inconel-is-hint',\n className ?? '',\n ].join(' ')}\n >\n {hint}\n </p>\n )\n }\n\n return null\n}\n\nexport default FieldFeedback\n","export const FORMATTED_INPUT_TYPES = [\n 'number',\n 'currency',\n 'percent',\n] as const\n\nexport const LENGTH_VALIDATED_INPUT_TYPES = [\n 'text',\n 'email',\n 'password',\n] as const\n","import {\n FORMATTED_INPUT_TYPES,\n LENGTH_VALIDATED_INPUT_TYPES,\n} from './constants'\nimport type {\n InputRoundMode,\n InputType,\n InputValidationMessages,\n InputValue,\n} from './Input'\n\nexport interface InputValidationOptions {\n required: boolean\n type: InputType\n min?: number\n max?: number\n mask?: string\n messages: InputValidationMessages\n}\n\nexport function isFormattedInputType(type: InputType) {\n return FORMATTED_INPUT_TYPES.some((candidate) => candidate === type)\n}\n\nexport function isLengthValidatedInputType(type: InputType) {\n return LENGTH_VALIDATED_INPUT_TYPES.some((candidate) => candidate === type)\n}\n\nexport function getInputSeparators(locale: string) {\n const parts = new Intl.NumberFormat(locale).formatToParts(1000.1)\n return {\n group: parts.find((part) => part.type === 'group')?.value ?? '.',\n decimal: parts.find((part) => part.type === 'decimal')?.value ?? ',',\n }\n}\n\nexport function parseInputNumber(value: string, locale: string): number | null {\n if (!value || value === '-') return null\n const { group, decimal } = getInputSeparators(locale)\n const normalized = value.split(group).join('').replace(decimal, '.')\n const result = Number(normalized)\n return Number.isNaN(result) ? null : result\n}\n\nexport function roundInputNumber(\n value: number,\n scale: number,\n mode: InputRoundMode,\n) {\n const factor = 10 ** scale\n if (mode === 'ceil') return Math.ceil(value * factor) / factor\n if (mode === 'round') return Math.round(value * factor) / factor\n return value >= 0\n ? Math.floor(value * factor) / factor\n : Math.ceil(value * factor) / factor\n}\n\nexport function applyInputMask(value: InputValue, mask: string) {\n const digits = String(value ?? '').replace(/\\D/g, '')\n let index = 0\n let result = ''\n\n for (const character of mask) {\n if (character === 'X') {\n if (index >= digits.length) break\n result += digits[index++]\n } else if (index < digits.length) {\n result += character\n }\n }\n\n return result\n}\n\nexport function formatInputValue(\n value: InputValue,\n type: InputType,\n locale: string,\n decimalScale: number,\n currency: string,\n mask?: string,\n) {\n if (value === null || value === undefined || value === '') return ''\n if (type === 'phone' && mask) return applyInputMask(value, mask)\n if (!isFormattedInputType(type)) return String(value)\n if (typeof value !== 'number' || Number.isNaN(value)) return String(value)\n\n return new Intl.NumberFormat(locale, {\n style:\n type === 'currency'\n ? 'currency'\n : type === 'percent'\n ? 'percent'\n : 'decimal',\n currency: type === 'currency' ? currency : undefined,\n minimumFractionDigits: decimalScale,\n maximumFractionDigits: decimalScale,\n }).format(value)\n}\n\nexport function validateInputValue(\n candidate: InputValue,\n {\n required,\n type,\n min,\n max,\n mask,\n messages,\n }: InputValidationOptions,\n) {\n if (\n required &&\n (candidate === null || candidate === undefined || candidate === '')\n ) {\n return messages.required ?? null\n }\n if (candidate === null || candidate === undefined || candidate === '') {\n return null\n }\n if (\n type === 'email' &&\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(String(candidate))\n ) {\n return messages.invalidEmail ?? null\n }\n if (type === 'phone') {\n const digits = String(candidate).replace(/\\D/g, '')\n const expected = mask\n ? (mask.match(/X/g) ?? []).length\n : digits.startsWith('0')\n ? 11\n : 10\n if (digits.length !== expected) return messages.invalidPhone ?? null\n }\n if (isLengthValidatedInputType(type)) {\n if (typeof min === 'number' && String(candidate).length < min) {\n return messages.minLength?.replace('{min}', String(min)) ?? null\n }\n if (typeof max === 'number' && String(candidate).length > max) {\n return messages.maxLength?.replace('{max}', String(max)) ?? null\n }\n }\n if (isFormattedInputType(type)) {\n if (typeof candidate !== 'number' || Number.isNaN(candidate)) {\n return messages.invalidNumber ?? null\n }\n if (typeof min === 'number' && candidate < min) {\n return messages.minNumber?.replace('{min}', String(min)) ?? null\n }\n if (typeof max === 'number' && candidate > max) {\n return messages.maxNumber?.replace('{max}', String(max)) ?? null\n }\n }\n return null\n}\n","import {\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type FocusEvent,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react'\n\nimport FieldFeedback from '../FieldFeedback/FieldFeedback'\nimport type { FieldFeedbackContentProps } from '../FieldFeedback/FieldFeedback'\nimport '../shared/field.css'\nimport '../shared/field-controls.css'\nimport './styles.css'\nimport {\n applyInputMask,\n formatInputValue,\n getInputSeparators,\n isFormattedInputType,\n isLengthValidatedInputType,\n parseInputNumber,\n roundInputNumber,\n validateInputValue,\n} from './utils'\n\nexport type InputType =\n | 'text'\n | 'number'\n | 'currency'\n | 'percent'\n | 'phone'\n | 'email'\n | 'password'\n\nexport type InputRoundMode = 'ceil' | 'floor' | 'round'\nexport type InputValue = string | number | null\nexport type InputEventType =\n | 'change'\n | 'blur'\n | 'focus'\n | 'keydown'\n | 'mouseenter'\n | 'mouseleave'\n | 'clear'\n\nexport interface InputPayload {\n rawValue: InputValue\n formattedValue: string\n error: boolean\n char: string | null\n eventType: InputEventType\n}\n\nexport interface InputValidationMessages {\n required?: string\n invalidNumber?: string\n minNumber?: string\n maxNumber?: string\n minLength?: string\n maxLength?: string\n invalidPhone?: string\n invalidEmail?: string\n}\n\ntype NativeInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n | 'type'\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'onBlur'\n | 'onFocus'\n | 'onKeyDown'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'min'\n | 'max'\n | 'size'\n | 'readOnly'\n>\n\nexport interface InputProps extends NativeInputProps, FieldFeedbackContentProps {\n label?: string\n startAdornment?: ReactNode\n endAdornment?: ReactNode\n fullWidth?: boolean\n inputClassName?: string\n labelClassName?: string\n value?: InputValue\n defaultValue?: InputValue\n onChange?: (payload: InputPayload) => void\n onBlur?: (payload: InputPayload, event: FocusEvent<HTMLInputElement>) => void\n onFocus?: (payload: InputPayload, event: FocusEvent<HTMLInputElement>) => void\n onKeyDown?: (\n payload: InputPayload,\n event: KeyboardEvent<HTMLInputElement>,\n ) => void\n onMouseEnter?: (\n payload: InputPayload,\n event: MouseEvent<HTMLInputElement>,\n ) => void\n onMouseLeave?: (\n payload: InputPayload,\n event: MouseEvent<HTMLInputElement>,\n ) => void\n type?: InputType\n locale?: string\n currency?: string\n decimalScale?: number\n roundMode?: InputRoundMode\n roundOnBlur?: boolean\n min?: number\n max?: number\n allowNegative?: boolean\n debounceMs?: number\n validateOnSubmit?: boolean\n validationMessages?: InputValidationMessages\n mask?: string\n limit?: number\n isClearable?: boolean\n readOnly?: boolean\n clearButtonLabel?: string\n readOnlyEmptyValue?: ReactNode\n}\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n id,\n label,\n hint,\n errorMessage,\n startAdornment,\n endAdornment,\n fullWidth = false,\n inputClassName,\n labelClassName,\n className,\n required,\n disabled,\n value,\n defaultValue = '',\n onChange,\n onBlur,\n onFocus,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n type = 'text',\n locale = 'tr-TR',\n currency = 'TRY',\n decimalScale = 0,\n roundMode = 'floor',\n roundOnBlur = false,\n min,\n max,\n allowNegative = false,\n debounceMs = 0,\n validateOnSubmit = false,\n validationMessages,\n mask,\n limit,\n isClearable = false,\n readOnly = false,\n clearButtonLabel,\n readOnlyEmptyValue = null,\n autoComplete = 'off',\n 'aria-describedby': ariaDescribedBy,\n ...inputProps\n },\n ref,\n) {\n const generatedId = useId()\n const inputId = id ?? `inconel-input-${generatedId.replace(/:/g, '')}`\n const hintId = `${inputId}-hint`\n const errorId = `${inputId}-error`\n const controlled = value !== undefined\n const [localValue, setLocalValue] = useState<InputValue>(defaultValue)\n const currentValue = controlled ? value : localValue\n const [editingValue, setEditingValue] = useState('')\n const [focused, setFocused] = useState(false)\n const [validationError, setValidationError] = useState<string | null>(null)\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const messages = validationMessages ?? {}\n const visibleError = errorMessage ?? validationError\n\n const validate = (candidate: InputValue) =>\n validateInputValue(candidate, {\n required: Boolean(required),\n type,\n min,\n max,\n mask,\n messages,\n })\n\n const formattedValue = useMemo(\n () =>\n formatInputValue(\n currentValue,\n type,\n locale,\n decimalScale,\n currency,\n mask,\n ),\n [currentValue, currency, decimalScale, locale, mask, type],\n )\n\n const buildPayload = (\n rawValue: InputValue,\n eventType: InputEventType,\n char: string | null = null,\n ): InputPayload => ({\n rawValue,\n formattedValue: formatInputValue(\n rawValue,\n type,\n locale,\n decimalScale,\n currency,\n mask,\n ),\n error: Boolean(validate(rawValue)),\n char,\n eventType,\n })\n\n const emitChange = (payload: InputPayload, immediate = false) => {\n if (!controlled) setLocalValue(payload.rawValue)\n if (debounceRef.current) clearTimeout(debounceRef.current)\n if (!onChange) return\n if (immediate || debounceMs <= 0) onChange(payload)\n else debounceRef.current = setTimeout(() => onChange(payload), debounceMs)\n }\n\n useEffect(() => () => {\n if (debounceRef.current) clearTimeout(debounceRef.current)\n }, [])\n\n useEffect(() => {\n if (validateOnSubmit) setValidationError(validate(currentValue))\n // Validation intentionally runs when submit state changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [validateOnSubmit])\n\n const normalize = (text: string): InputValue => {\n if (type === 'phone' && mask) return text.replace(/\\D/g, '')\n if (isFormattedInputType(type)) {\n const parsed = parseInputNumber(text, locale)\n if (parsed === null) return text === '' ? null : text\n return allowNegative ? parsed : Math.abs(parsed)\n }\n return text\n }\n\n const handleChange = (text: string) => {\n const digits = text.replace(/\\D/g, '')\n if (\n limit &&\n (isFormattedInputType(type) || type === 'phone') &&\n digits.length > limit\n ) return\n if (limit && isLengthValidatedInputType(type) && text.length > limit) return\n const rawValue = normalize(text)\n if (typeof rawValue === 'number') {\n if (typeof min === 'number' && rawValue < min) return\n if (typeof max === 'number' && rawValue > max) return\n }\n setEditingValue(\n type === 'phone' && mask ? applyInputMask(rawValue, mask) : text,\n )\n emitChange(buildPayload(rawValue, 'change', text.slice(-1) || null))\n }\n\n const describedBy = [\n ariaDescribedBy,\n hint && !visibleError ? hintId : undefined,\n visibleError ? errorId : undefined,\n ].filter(Boolean).join(' ') || undefined\n\n if (readOnly) {\n return (\n <div className={['inconel-field', fullWidth ? 'inconel-field--full-width' : '', className ?? ''].join(' ')}>\n {label && <span className={['inconel-field__label', labelClassName ?? ''].join(' ')}>{label}</span>}\n <div className=\"inconel-input-readonly\" aria-label={label}>\n {formattedValue || readOnlyEmptyValue}\n </div>\n </div>\n )\n }\n\n return (\n <div className={['inconel-field', fullWidth ? 'inconel-field--full-width' : '', className ?? ''].join(' ')}>\n {label && (\n <label className={['inconel-field__label', labelClassName ?? ''].join(' ')} htmlFor={inputId}>\n {label}{required && <span className=\"inconel-field__required\" aria-hidden=\"true\"> *</span>}\n </label>\n )}\n <div className={['inconel-input-control', visibleError ? 'inconel-is-invalid' : '', disabled ? 'inconel-is-disabled' : ''].join(' ')}>\n {startAdornment && <span className=\"inconel-input-adornment\" aria-hidden=\"true\">{startAdornment}</span>}\n <input\n {...inputProps}\n ref={ref}\n id={inputId}\n type={type === 'password' || type === 'email' ? type : 'text'}\n inputMode={isFormattedInputType(type) ? 'decimal' : type === 'phone' ? 'tel' : undefined}\n value={focused ? editingValue : formattedValue}\n required={required}\n disabled={disabled}\n autoComplete={autoComplete}\n aria-invalid={Boolean(visibleError)}\n aria-describedby={describedBy}\n className={['inconel-input', inputClassName ?? ''].join(' ')}\n onChange={(event) => handleChange(event.target.value)}\n onFocus={(event) => {\n if (disabled) return\n setFocused(true)\n const editValue = type === 'phone' && mask\n ? applyInputMask(currentValue, mask)\n : isFormattedInputType(type)\n ? String(currentValue ?? '').replace('.', getInputSeparators(locale).decimal)\n : String(currentValue ?? '')\n setEditingValue(editValue)\n onFocus?.(buildPayload(currentValue, 'focus'), event)\n }}\n onBlur={(event) => {\n setFocused(false)\n if (debounceRef.current) clearTimeout(debounceRef.current)\n let rawValue = normalize(editingValue)\n if (typeof rawValue === 'number') {\n rawValue = roundInputNumber(rawValue, decimalScale, roundOnBlur ? roundMode : 'floor')\n }\n setValidationError(validate(rawValue))\n const payload = buildPayload(rawValue, 'blur')\n emitChange(payload, true)\n onBlur?.(payload, event)\n }}\n onKeyDown={(event) => {\n if (!allowNegative && (event.key === '-' || event.key === 'Subtract')) event.preventDefault()\n onKeyDown?.(buildPayload(currentValue, 'keydown', event.key), event)\n }}\n onMouseEnter={(event) => onMouseEnter?.(buildPayload(currentValue, 'mouseenter'), event)}\n onMouseLeave={(event) => onMouseLeave?.(buildPayload(currentValue, 'mouseleave'), event)}\n />\n {isClearable && !disabled && formattedValue && clearButtonLabel && (\n <button\n type=\"button\"\n className=\"inconel-input-clear\"\n aria-label={clearButtonLabel}\n onClick={() => {\n setEditingValue('')\n setValidationError(validate(null))\n emitChange(buildPayload(null, 'clear'), true)\n }}\n >\n ×\n </button>\n )}\n {endAdornment && <span className=\"inconel-input-adornment\" aria-hidden=\"true\">{endAdornment}</span>}\n </div>\n <FieldFeedback\n hint={hint}\n errorMessage={visibleError}\n hintId={hintId}\n errorId={errorId}\n />\n </div>\n )\n})\n\nexport default Input\n","import Input, { type InputProps } from '../Input/Input'\n\nexport interface CurrencyInputProps extends Omit<InputProps, 'type'> {\n currency?: string\n}\n\nexport function CurrencyInput(props: CurrencyInputProps) {\n return <Input {...props} type=\"currency\" />\n}\n","import type { ChangeEvent, InputHTMLAttributes, ReactNode } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\n\nexport interface SwitchProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'onChange'> {\n label?: ReactNode\n onChange?: (checked: boolean, event: ChangeEvent<HTMLInputElement>) => void\n onLabel?: ReactNode\n offLabel?: ReactNode\n}\n\nexport function Switch({\n label,\n onLabel,\n offLabel,\n checked,\n defaultChecked,\n onChange,\n className,\n ...props\n}: SwitchProps) {\n return (\n <label className={classNames('inconel-switch', className)}>\n {label && <span className=\"inconel-switch__label\">{label}</span>}\n <input\n {...props}\n type=\"checkbox\"\n checked={checked}\n defaultChecked={defaultChecked}\n onChange={(event) => onChange?.(event.target.checked, event)}\n />\n <span className=\"inconel-switch__track\">\n <span className=\"inconel-switch__thumb\" />\n </span>\n {(onLabel || offLabel) && (\n <span className=\"inconel-switch__state\">\n {checked ? onLabel : offLabel}\n </span>\n )}\n </label>\n )\n}\n","import { Switch, type SwitchProps } from '../Switch'\n\nexport type CustomizableSwitchProps = SwitchProps\nexport const CustomizableSwitch = Switch\n","export const DEFAULT_TABLE_EMPTY_MESSAGE = 'Kayıt bulunamadı.'\n","export function getRowKey<T extends object>(\n row: T,\n index: number,\n rowKey?: keyof T | ((row: T, index: number) => string | number),\n) {\n if (typeof rowKey === 'function') return rowKey(row, index)\n if (rowKey) return String(row[rowKey])\n return index\n}\n","import type { ReactNode, TableHTMLAttributes } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\nimport { DEFAULT_TABLE_EMPTY_MESSAGE } from './constants'\nimport { getRowKey } from './utils'\n\nexport interface Column<T> {\n key: keyof T | string\n header: ReactNode\n render?: (row: T, index: number) => ReactNode\n className?: string\n}\n\nexport interface TableProps<T extends object>\n extends Omit<TableHTMLAttributes<HTMLTableElement>, 'children'> {\n columns: Column<T>[]\n data: T[]\n rowKey?: keyof T | ((row: T, index: number) => string | number)\n emptyMessage?: ReactNode\n onRowClick?: (row: T, index: number) => void\n}\n\nexport function Table<T extends object>({\n columns,\n data,\n rowKey,\n emptyMessage = DEFAULT_TABLE_EMPTY_MESSAGE,\n onRowClick,\n className,\n ...props\n}: TableProps<T>) {\n return (\n <div className=\"inconel-table-wrapper\">\n <table {...props} className={classNames('inconel-table', className)}>\n <thead>\n <tr>\n {columns.map((column) => (\n <th key={String(column.key)} className={column.className}>\n {column.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.map((row, index) => (\n <tr\n key={getRowKey(row, index, rowKey)}\n onClick={() => onRowClick?.(row, index)}\n >\n {columns.map((column) => (\n <td key={String(column.key)} className={column.className}>\n {column.render\n ? column.render(row, index)\n : String(row[column.key as keyof T] ?? '')}\n </td>\n ))}\n </tr>\n ))}\n {data.length === 0 && (\n <tr>\n <td className=\"inconel-table__empty\" colSpan={columns.length}>\n {emptyMessage}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n )\n}\n","import { Table, type TableProps } from '../Table'\n\nexport type DataGridProps<T extends object = Record<string, unknown>> = TableProps<T>\nexport const DataGrid = Table\n","export function formatDateValue(value?: string | Date | null) {\n return value instanceof Date ? value.toISOString().slice(0, 10) : value ?? ''\n}\n","import type { ChangeEvent, InputHTMLAttributes, ReactNode } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\nimport { formatDateValue } from './utils'\n\nexport interface DatePickerProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'value' | 'onChange'> {\n value?: string | Date | null\n onChange?: (value: string, event: ChangeEvent<HTMLInputElement>) => void\n label?: ReactNode\n}\n\nexport function DatePicker({\n value,\n onChange,\n label,\n className,\n ...props\n}: DatePickerProps) {\n const formatted = formatDateValue(value)\n return (\n <label className={classNames('inconel-date-picker', className)}>\n {label && <span className=\"inconel-field__label\">{label}</span>}\n <input\n {...props}\n type=\"date\"\n value={formatted}\n onChange={(event) => onChange?.(event.target.value, event)}\n />\n </label>\n )\n}\n","export const DEFAULT_FILE_UPLOAD_LABEL = 'Dosya seç'\n","import type { InputHTMLAttributes, ReactNode } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\nimport { DEFAULT_FILE_UPLOAD_LABEL } from './constants'\n\nexport interface FileUploadProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'onChange'> {\n label?: ReactNode\n files?: File[]\n onFilesChange?: (files: File[]) => void\n}\n\nexport function FileUpload({\n label = DEFAULT_FILE_UPLOAD_LABEL,\n files,\n multiple,\n onFilesChange,\n className,\n ...props\n}: FileUploadProps) {\n return (\n <label className={classNames('inconel-file-upload', className)}>\n <span className=\"inconel-file-upload__button\">{label}</span>\n <input\n {...props}\n type=\"file\"\n multiple={multiple}\n onChange={(event) => onFilesChange?.(Array.from(event.target.files ?? []))}\n />\n {files && files.length > 0 && (\n <span className=\"inconel-file-upload__text\">\n {files.map((file) => file.name).join(', ')}\n </span>\n )}\n </label>\n )\n}\n","export const DEFAULT_DROP_LABEL = 'Dosyaları buraya bırakın'\n","import { useState, type DragEvent, type ReactNode } from 'react'\n\nimport { FileUpload, type FileUploadProps } from '../FileUpload'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\nimport { DEFAULT_DROP_LABEL } from './constants'\n\nexport interface DragDropUploadProps extends FileUploadProps {\n onDropFiles?: (files: File[]) => void\n dropLabel?: ReactNode\n}\n\nexport function DragDropUpload({\n onDropFiles,\n dropLabel = DEFAULT_DROP_LABEL,\n className,\n ...props\n}: DragDropUploadProps) {\n const [dragging, setDragging] = useState(false)\n const handleDrop = (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n setDragging(false)\n onDropFiles?.(Array.from(event.dataTransfer.files))\n }\n\n return (\n <div\n className={classNames(\n 'inconel-drag-drop-upload',\n dragging && 'inconel-is-dragging',\n className,\n )}\n onDragEnter={() => setDragging(true)}\n onDragLeave={() => setDragging(false)}\n onDragOver={(event) => event.preventDefault()}\n onDrop={handleDrop}\n >\n <span>{dropLabel}</span>\n <FileUpload {...props} />\n </div>\n )\n}\n","import { DragDropUpload, type DragDropUploadProps } from '../DragDropUpload'\n\nexport type DndFileUploadProps = DragDropUploadProps\nexport const DndFileUpload = DragDropUpload\n","export const DEFAULT_DOT_LOADER_LABEL = 'Yükleniyor...'\n","import type { HTMLAttributes } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\nimport { DEFAULT_DOT_LOADER_LABEL } from './constants'\n\nexport interface DotLoaderProps extends HTMLAttributes<HTMLSpanElement> {\n label?: string\n}\n\nexport function DotLoader({\n label = DEFAULT_DOT_LOADER_LABEL,\n className,\n ...props\n}: DotLoaderProps) {\n return (\n <span\n {...props}\n className={classNames('inconel-dot-loader', className)}\n role=\"status\"\n aria-label={label}\n >\n <i />\n <i />\n <i />\n </span>\n )\n}\n","import { Table, type TableProps } from '../Table'\n\nexport type ExcelTableProps<T extends object = Record<string, unknown>> = TableProps<T>\nexport const ExcelTable = Table\n","import { FileUpload, type FileUploadProps } from '../FileUpload'\n\nexport type FileUploadTextProps = FileUploadProps\nexport const FileUploadText = FileUpload\n","import type { HTMLAttributes, ReactNode } from 'react'\n\nimport { Button } from '../Button'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\n\nexport interface FilterProps extends HTMLAttributes<HTMLDivElement> {\n onClear?: () => void\n clearLabel?: ReactNode\n}\n\nexport function Filter({\n children,\n onClear,\n clearLabel = 'Temizle',\n className,\n ...props\n}: FilterProps) {\n return (\n <div {...props} className={classNames('inconel-filter', className)}>\n <div className=\"inconel-filter__content\">{children}</div>\n {onClear && (\n <Button type=\"button\" variant=\"ghost\" onClick={onClear}>\n {clearLabel}\n </Button>\n )}\n </div>\n )\n}\n","import { Table, type TableProps } from '../Table'\n\nexport type HTMLTableProps<T extends object = Record<string, unknown>> = TableProps<T>\nexport const HTMLTable = Table\n","import type { HTMLAttributes } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\n\nexport interface HtmlEditorProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n value?: string\n onChange?: (value: string) => void\n placeholder?: string\n readOnly?: boolean\n}\n\nexport function HtmlEditor({\n value,\n onChange,\n placeholder,\n readOnly = false,\n className,\n ...props\n}: HtmlEditorProps) {\n return (\n <div\n {...props}\n className={classNames('inconel-editor', className)}\n contentEditable={!readOnly}\n suppressContentEditableWarning\n data-placeholder={placeholder}\n dangerouslySetInnerHTML={{ __html: value ?? '' }}\n onInput={(event) => onChange?.(event.currentTarget.innerHTML)}\n />\n )\n}\n","import Input, { type InputProps } from '../Input/Input'\n\nexport type InputTextProps = InputProps\nexport const InputText = Input\n","export const DEFAULT_LOADER_LABEL = 'Yükleniyor...'\n","import type { HTMLAttributes } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\nimport { DEFAULT_LOADER_LABEL } from './constants'\n\nexport interface LoaderProps extends HTMLAttributes<HTMLDivElement> {\n label?: string\n fullscreen?: boolean\n}\n\nexport function Loader({\n label = DEFAULT_LOADER_LABEL,\n fullscreen = false,\n className,\n ...props\n}: LoaderProps) {\n return (\n <div\n {...props}\n className={classNames(\n 'inconel-loader',\n fullscreen && 'inconel-loader--fullscreen',\n className,\n )}\n role=\"status\"\n aria-label={label}\n >\n <span className=\"inconel-loader__spinner\" aria-hidden=\"true\" />\n </div>\n )\n}\n","import { Loader, type LoaderProps } from '../Loader'\nimport { classNames } from '../shared/classNames'\n\nexport type LoaderMiniProps = LoaderProps\nexport function LoaderMini(props: LoaderMiniProps) {\n return <Loader {...props} className={classNames('inconel-loader--mini', props.className)} />\n}\n","export const DEFAULT_MODAL_CLOSE_LABEL = 'Kapat'\n","import type { ReactNode } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\nimport { DEFAULT_MODAL_CLOSE_LABEL } from './constants'\n\nexport interface ModalProps {\n open: boolean\n title?: ReactNode\n children?: ReactNode\n footer?: ReactNode\n closeLabel?: string\n closeOnBackdrop?: boolean\n onClose?: () => void\n className?: string\n}\n\nexport function Modal({\n open,\n title,\n children,\n footer,\n closeLabel = DEFAULT_MODAL_CLOSE_LABEL,\n closeOnBackdrop = true,\n onClose,\n className,\n}: ModalProps) {\n if (!open) return null\n\n return (\n <div\n className=\"inconel-modal-backdrop\"\n role=\"presentation\"\n onMouseDown={(event) => {\n if (closeOnBackdrop && event.target === event.currentTarget) onClose?.()\n }}\n >\n <section\n className={classNames('inconel-modal', className)}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={typeof title === 'string' ? title : undefined}\n >\n <header className=\"inconel-modal__header\">\n <div className=\"inconel-modal__title\">{title}</div>\n <button\n type=\"button\"\n className=\"inconel-modal__close\"\n aria-label={closeLabel}\n onClick={onClose}\n >\n ×\n </button>\n </header>\n <div className=\"inconel-modal__content\">{children}</div>\n {footer && <footer className=\"inconel-modal__footer\">{footer}</footer>}\n </section>\n </div>\n )\n}\n","import type { ReactNode } from 'react'\n\nimport { CheckboxGroup } from '../CheckboxGroup'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\n\nexport interface MultiSelectOption<T extends string | number = string> {\n label: ReactNode\n value: T\n disabled?: boolean\n}\n\nexport interface MultiSelectProps<T extends string | number = string> {\n options: MultiSelectOption<T>[]\n value?: T[]\n onChange?: (value: T[]) => void\n label?: ReactNode\n className?: string\n}\n\nexport function MultiSelect<T extends string | number = string>({\n options,\n value = [],\n onChange,\n label,\n className,\n}: MultiSelectProps<T>) {\n return (\n <fieldset className={classNames('inconel-multi-select', className)}>\n {label && <legend>{label}</legend>}\n <CheckboxGroup options={options} value={value} onChange={onChange} />\n </fieldset>\n )\n}\n","import { MultiSelect, type MultiSelectProps } from '../MultiSelect'\n\nexport type MultiSelectWithCheckboxProps<T extends string | number = string> = MultiSelectProps<T>\nexport const MultiSelectWithCheckbox = MultiSelect\n","import type { HTMLAttributes, ReactNode } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\n\nexport interface OptionProps extends HTMLAttributes<HTMLDivElement> {\n selected?: boolean\n disabled?: boolean\n icon?: ReactNode\n}\n\nexport function Option({\n selected,\n disabled,\n icon,\n children,\n className,\n ...props\n}: OptionProps) {\n return (\n <div\n {...props}\n role=\"option\"\n aria-selected={selected}\n aria-disabled={disabled}\n className={classNames(\n 'inconel-option',\n selected && 'inconel-is-selected',\n disabled && 'inconel-is-disabled',\n className,\n )}\n >\n {icon && <span className=\"inconel-option__icon\">{icon}</span>}\n {children}\n </div>\n )\n}\n\n","import { Option, type OptionProps } from '../Option'\n\nexport type OptionWithIconProps = OptionProps\nexport const OptionWithIcon = Option\n","import type { ReactNode } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\n\nexport interface RadioOption<T extends string | number = string> {\n label: ReactNode\n value: T\n disabled?: boolean\n}\n\nexport interface RadioGroupProps<T extends string | number = string> {\n options: RadioOption<T>[]\n value?: T\n onChange?: (value: T) => void\n name: string\n className?: string\n}\n\nexport function RadioGroup<T extends string | number = string>({\n options,\n value,\n onChange,\n name,\n className,\n}: RadioGroupProps<T>) {\n return (\n <div className={classNames('inconel-radio-group', className)}>\n {options.map((option) => (\n <label className=\"inconel-radio\" key={option.value}>\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={option.value === value}\n disabled={option.disabled}\n onChange={() => onChange?.(option.value)}\n />\n <span className=\"inconel-radio__control\" aria-hidden=\"true\" />\n <span>{option.label}</span>\n </label>\n ))}\n </div>\n )\n}\n","export const DEFAULT_READ_ONLY_EMPTY_VALUE = '—'\n","import type { HTMLAttributes, ReactNode } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\nimport { DEFAULT_READ_ONLY_EMPTY_VALUE } from './constants'\n\nexport interface ReadOnlyProps extends HTMLAttributes<HTMLDivElement> {\n label?: ReactNode\n value?: ReactNode\n emptyValue?: ReactNode\n}\n\nexport function ReadOnly({\n label,\n value,\n emptyValue = DEFAULT_READ_ONLY_EMPTY_VALUE,\n className,\n ...props\n}: ReadOnlyProps) {\n return (\n <div {...props} className={classNames('inconel-read-only', className)}>\n {label && <span className=\"inconel-read-only__label\">{label}</span>}\n <span className=\"inconel-read-only__value\">\n {value === null || value === undefined || value === '' ? emptyValue : value}\n </span>\n </div>\n )\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ForwardedRef,\n type KeyboardEvent,\n type ReactNode,\n} from 'react'\nimport {\n autoUpdate,\n flip,\n offset,\n shift,\n size,\n useFloating,\n} from '@floating-ui/react'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport { createPortal } from 'react-dom'\nimport { classNames as mergeClassNames } from '../shared/classNames'\nimport '../shared/field.css'\nimport '../shared/field-controls.css'\nimport './styles.css'\n\nimport FieldFeedback from '../FieldFeedback/FieldFeedback'\nimport type { FieldFeedbackContentProps } from '../FieldFeedback/FieldFeedback'\n\nexport type OptionValue = string | number\n\nexport interface SelectHandle {\n focus: () => void\n blur: () => void\n clear: () => void\n}\n\ntype SelectPart =\n | 'root'\n | 'label'\n | 'control'\n | 'input'\n | 'clearButton'\n | 'toggleButton'\n | 'menu'\n | 'option'\n | 'message'\n\nexport type SelectClassNames = Partial<Record<SelectPart, string>>\nexport type SelectStyles = Partial<Record<SelectPart, CSSProperties>>\n\nexport interface SelectProps<T extends object> extends FieldFeedbackContentProps {\n id?: string\n name?: string\n label: string\n options: T[]\n value: OptionValue | null\n onChange: (value: OptionValue | null, option: T | null) => void\n optionLabel: keyof T | ((option: T) => ReactNode)\n optionValue: keyof T | ((option: T) => OptionValue)\n getOptionSearchText?: (option: T) => string\n isOptionDisabled?: (option: T) => boolean\n placeholder?: string\n isClearable?: boolean\n isDisabled?: boolean\n isReadOnly?: boolean\n isRequired?: boolean\n isLoading?: boolean\n loadOptions?: (inputValue: string, signal: AbortSignal) => Promise<T[]>\n loadOptionsDebounceMs?: number\n asyncErrorMessage?: ReactNode\n loadingMessage?: ReactNode\n noOptionsMessage?: ReactNode\n clearButtonLabel?: string\n openMenuButtonLabel?: string\n closeMenuButtonLabel?: string\n searchLocale?: string\n menuPortalTarget?: HTMLElement | null\n virtualize?: boolean\n virtualizationThreshold?: number\n optionHeight?: number\n className?: string\n classNames?: SelectClassNames\n styles?: SelectStyles\n onInputChange?: (value: string) => void\n onMenuOpen?: () => void\n onMenuClose?: () => void\n}\n\nfunction SelectInner<T extends object>(\n {\n id,\n name,\n label,\n options,\n value,\n onChange,\n optionLabel,\n optionValue,\n getOptionSearchText,\n isOptionDisabled = () => false,\n placeholder,\n isClearable = false,\n isDisabled = false,\n isReadOnly = false,\n isRequired = false,\n isLoading = false,\n loadOptions,\n loadOptionsDebounceMs = 250,\n hint,\n errorMessage,\n asyncErrorMessage,\n loadingMessage,\n noOptionsMessage,\n clearButtonLabel,\n openMenuButtonLabel,\n closeMenuButtonLabel,\n searchLocale,\n menuPortalTarget,\n virtualize = false,\n virtualizationThreshold = 100,\n optionHeight = 44,\n className,\n classNames = {},\n styles = {},\n onInputChange,\n onMenuOpen,\n onMenuClose,\n }: SelectProps<T>,\n forwardedRef: ForwardedRef<SelectHandle>,\n) {\n const generatedId = useId()\n const inputId = id ?? `inconel-select-${generatedId.replace(/:/g, '')}`\n const labelId = `${inputId}-label`\n const listboxId = `${inputId}-listbox`\n const messageId = `${inputId}-message`\n const hintId = `${inputId}-hint`\n const rootRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const menuRef = useRef<HTMLDivElement>(null)\n const [isOpen, setIsOpen] = useState(false)\n const [inputValue, setInputValue] = useState('')\n const [activeIndex, setActiveIndex] = useState(0)\n const [asyncOptions, setAsyncOptions] = useState<T[] | null>(null)\n const [isAsyncLoading, setIsAsyncLoading] = useState(false)\n const [hasAsyncError, setHasAsyncError] = useState(false)\n\n useEffect(() => {\n if (!loadOptions) return\n const controller = new AbortController()\n const timeout = window.setTimeout(async () => {\n setIsAsyncLoading(true)\n setHasAsyncError(false)\n try {\n const loadedOptions = await loadOptions(\n inputValue,\n controller.signal,\n )\n if (!controller.signal.aborted) setAsyncOptions(loadedOptions)\n } catch {\n if (!controller.signal.aborted) setHasAsyncError(true)\n } finally {\n if (!controller.signal.aborted) setIsAsyncLoading(false)\n }\n }, loadOptionsDebounceMs)\n\n return () => {\n window.clearTimeout(timeout)\n controller.abort()\n }\n }, [inputValue, loadOptions, loadOptionsDebounceMs])\n\n const availableOptions = loadOptions\n ? (asyncOptions ?? options)\n : options\n const loading = isLoading || isAsyncLoading\n\n const getLabel = useCallback(\n (option: T): ReactNode =>\n typeof optionLabel === 'function'\n ? optionLabel(option)\n : String(option[optionLabel]),\n [optionLabel],\n )\n\n const getSearchLabel = useCallback(\n (option: T) => {\n if (getOptionSearchText) return getOptionSearchText(option)\n const renderedLabel = getLabel(option)\n return typeof renderedLabel === 'string' ||\n typeof renderedLabel === 'number'\n ? String(renderedLabel)\n : ''\n },\n [getLabel, getOptionSearchText],\n )\n\n const getValue = useCallback(\n (option: T): OptionValue => {\n const resolvedValue =\n typeof optionValue === 'function'\n ? optionValue(option)\n : option[optionValue]\n\n if (\n typeof resolvedValue !== 'string' &&\n typeof resolvedValue !== 'number'\n ) {\n throw new TypeError('optionValue must resolve to a string or number.')\n }\n return resolvedValue\n },\n [optionValue],\n )\n\n const duplicateValues = useMemo(() => {\n const seen = new Set<OptionValue>()\n return availableOptions\n .map(getValue)\n .filter((optionId) => {\n if (seen.has(optionId)) return true\n seen.add(optionId)\n return false\n })\n }, [availableOptions, getValue])\n\n useEffect(() => {\n if (duplicateValues.length) {\n console.warn(\n `Duplicate optionValue found in Select \"${label}\":`,\n duplicateValues,\n )\n }\n }, [duplicateValues, label])\n\n const selectedOption = [...options, ...availableOptions].find(\n (option) => getValue(option) === value,\n )\n const selectedLabel = selectedOption ? getSearchLabel(selectedOption) : ''\n\n const filteredOptions = useMemo(() => {\n const query = inputValue.trim().toLocaleLowerCase(searchLocale)\n if (!query || loadOptions) return availableOptions\n return availableOptions.filter((option) =>\n getSearchLabel(option).toLocaleLowerCase(searchLocale).includes(query),\n )\n }, [availableOptions, getSearchLabel, inputValue, loadOptions, searchLocale])\n\n const { refs, floatingStyles } = useFloating({\n open: isOpen,\n placement: 'bottom-start',\n strategy: menuPortalTarget ? 'fixed' : 'absolute',\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(8),\n flip({ padding: 12 }),\n shift({ padding: 12 }),\n size({\n padding: 12,\n apply({ availableHeight, rects, elements }) {\n Object.assign(elements.floating.style, {\n maxHeight: `${Math.min(230, availableHeight)}px`,\n width: `${rects.reference.width}px`,\n })\n },\n }),\n ],\n })\n\n const shouldVirtualize =\n virtualize || filteredOptions.length >= virtualizationThreshold\n const virtualizer = useVirtualizer({\n count: filteredOptions.length,\n getScrollElement: () => menuRef.current,\n estimateSize: () => optionHeight,\n overscan: 5,\n enabled: shouldVirtualize && isOpen,\n })\n\n const closeMenu = useCallback(() => {\n setIsOpen(false)\n setInputValue('')\n onInputChange?.('')\n onMenuClose?.()\n }, [onInputChange, onMenuClose])\n\n const openMenu = () => {\n if (isDisabled || isReadOnly) return\n if (!isOpen) onMenuOpen?.()\n setIsOpen(true)\n }\n\n const clearSelection = useCallback(() => {\n if (isDisabled || isReadOnly) return\n onChange(null, null)\n setInputValue('')\n setActiveIndex(0)\n onInputChange?.('')\n inputRef.current?.focus()\n }, [isDisabled, isReadOnly, onChange, onInputChange])\n\n useImperativeHandle(\n forwardedRef,\n () => ({\n focus: () => inputRef.current?.focus(),\n blur: () => inputRef.current?.blur(),\n clear: clearSelection,\n }),\n [clearSelection],\n )\n\n useEffect(() => {\n const closeOnOutsideClick = (event: MouseEvent) => {\n const target = event.target as Node\n if (\n !rootRef.current?.contains(target) &&\n !menuRef.current?.contains(target)\n ) {\n closeMenu()\n }\n }\n\n document.addEventListener('mousedown', closeOnOutsideClick)\n return () => document.removeEventListener('mousedown', closeOnOutsideClick)\n }, [closeMenu])\n\n useEffect(() => {\n if (activeIndex >= filteredOptions.length) setActiveIndex(0)\n }, [activeIndex, filteredOptions.length])\n\n useEffect(() => {\n if (shouldVirtualize && isOpen && filteredOptions[activeIndex]) {\n virtualizer.scrollToIndex(activeIndex, { align: 'auto' })\n }\n }, [\n activeIndex,\n filteredOptions,\n isOpen,\n shouldVirtualize,\n virtualizer,\n ])\n\n const selectOption = (option: T) => {\n if (isOptionDisabled(option)) return\n onChange(getValue(option), option)\n closeMenu()\n inputRef.current?.focus()\n }\n\n const moveActiveOption = (direction: 1 | -1) => {\n if (!filteredOptions.length) return\n let nextIndex = activeIndex\n do {\n nextIndex =\n (nextIndex + direction + filteredOptions.length) %\n filteredOptions.length\n } while (\n isOptionDisabled(filteredOptions[nextIndex]) &&\n nextIndex !== activeIndex\n )\n setActiveIndex(nextIndex)\n }\n\n const findEnabledIndex = (fromEnd = false) => {\n const entries = filteredOptions.map((option, index) => ({ option, index }))\n if (fromEnd) entries.reverse()\n return entries.find(({ option }) => !isOptionDisabled(option))?.index ?? 0\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (\n event.key === 'Backspace' &&\n !inputValue &&\n value !== null &&\n isClearable\n ) {\n event.preventDefault()\n clearSelection()\n return\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault()\n if (!isOpen) {\n openMenu()\n setActiveIndex(findEnabledIndex(event.key === 'ArrowUp'))\n } else {\n moveActiveOption(event.key === 'ArrowDown' ? 1 : -1)\n }\n } else if (event.key === 'Home' && isOpen) {\n event.preventDefault()\n setActiveIndex(findEnabledIndex())\n } else if (event.key === 'End' && isOpen) {\n event.preventDefault()\n setActiveIndex(findEnabledIndex(true))\n } else if (event.key === 'Enter' && isOpen) {\n event.preventDefault()\n const activeOption = filteredOptions[activeIndex]\n if (activeOption) selectOption(activeOption)\n } else if (event.key === 'Escape' && isOpen) {\n event.preventDefault()\n closeMenu()\n } else if (event.key === 'Tab') {\n closeMenu()\n }\n }\n\n const renderOption = (option: T, index: number, style?: CSSProperties) => {\n const optionId = getValue(option)\n const disabled = isOptionDisabled(option)\n return (\n <div\n id={`${inputId}-option-${index}`}\n key={optionId}\n role=\"option\"\n aria-selected={optionId === value}\n aria-disabled={disabled}\n aria-posinset={index + 1}\n aria-setsize={filteredOptions.length}\n className={mergeClassNames(\n 'inconel-select-option',\n index === activeIndex && 'inconel-is-active',\n optionId === value && 'inconel-is-selected',\n disabled && 'inconel-is-disabled',\n classNames.option,\n )}\n style={{ ...style, ...styles.option }}\n onMouseEnter={() => setActiveIndex(index)}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => selectOption(option)}\n >\n <span>{getLabel(option)}</span>\n {optionId === value && <span aria-hidden=\"true\">✓</span>}\n </div>\n )\n }\n\n const menuContent = loading ? (\n <div\n role=\"status\"\n className={mergeClassNames('inconel-select-message', classNames.message)}\n style={styles.message}\n >\n <span className=\"inconel-select-spinner\" aria-hidden=\"true\" />\n {loadingMessage}\n </div>\n ) : hasAsyncError ? (\n <div\n role=\"alert\"\n className={mergeClassNames('inconel-select-message inconel-select-message-error', classNames.message)}\n style={styles.message}\n >\n {asyncErrorMessage}\n </div>\n ) : filteredOptions.length === 0 ? (\n <div\n className={mergeClassNames('inconel-select-message', classNames.message)}\n style={styles.message}\n >\n {noOptionsMessage}\n </div>\n ) : shouldVirtualize ? (\n <div\n role=\"presentation\"\n className=\"inconel-select-virtual-content\"\n style={{ height: virtualizer.getTotalSize() }}\n >\n {virtualizer.getVirtualItems().map((virtualRow) =>\n renderOption(filteredOptions[virtualRow.index], virtualRow.index, {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: virtualRow.size,\n transform: `translateY(${virtualRow.start}px)`,\n }),\n )}\n </div>\n ) : (\n filteredOptions.map((option, index) => renderOption(option, index))\n )\n\n const menu = isOpen ? (\n <div\n ref={(node) => {\n menuRef.current = node\n refs.setFloating(node)\n }}\n id={listboxId}\n role=\"listbox\"\n aria-labelledby={labelId}\n className={mergeClassNames(\n 'inconel-select-menu',\n menuPortalTarget && 'inconel-select-menu-portal',\n classNames.menu,\n )}\n style={{ ...floatingStyles, ...styles.menu }}\n >\n {menuContent}\n </div>\n ) : null\n\n const describedBy = errorMessage ? messageId : hint ? hintId : undefined\n\n return (\n <div\n ref={rootRef}\n className={mergeClassNames('inconel-select-field', className, classNames.root)}\n style={styles.root}\n >\n <label\n id={labelId}\n htmlFor={inputId}\n className={classNames.label}\n style={styles.label}\n >\n {label}\n {isRequired && <span aria-hidden=\"true\"> *</span>}\n </label>\n <div\n ref={refs.setReference}\n className={mergeClassNames(\n 'inconel-select-control',\n isOpen && 'inconel-is-open',\n isDisabled && 'inconel-is-disabled',\n Boolean(errorMessage) && 'inconel-has-error',\n classNames.control,\n )}\n style={styles.control}\n >\n <input\n ref={inputRef}\n id={inputId}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-controls={listboxId}\n aria-autocomplete=\"list\"\n aria-activedescendant={\n isOpen && filteredOptions[activeIndex]\n ? `${inputId}-option-${activeIndex}`\n : undefined\n }\n aria-describedby={describedBy}\n aria-invalid={Boolean(errorMessage)}\n aria-required={isRequired}\n aria-busy={loading}\n required={isRequired}\n disabled={isDisabled}\n readOnly={isReadOnly}\n autoComplete=\"off\"\n placeholder={placeholder}\n value={inputValue || selectedLabel}\n className={classNames.input}\n style={styles.input}\n onChange={(event) => {\n setInputValue(event.target.value)\n setActiveIndex(0)\n onInputChange?.(event.target.value)\n openMenu()\n }}\n onClick={openMenu}\n onFocus={(event) => {\n openMenu()\n if (selectedOption && !inputValue) event.currentTarget.select()\n }}\n onKeyDown={handleKeyDown}\n />\n {loading && <span className=\"inconel-select-spinner\" aria-hidden=\"true\" />}\n {isClearable && value !== null && !isDisabled && !isReadOnly && clearButtonLabel && (\n <button\n type=\"button\"\n className={mergeClassNames('inconel-select-clear', classNames.clearButton)}\n style={styles.clearButton}\n aria-label={clearButtonLabel}\n onClick={clearSelection}\n >\n ×\n </button>\n )}\n <button\n type=\"button\"\n className={mergeClassNames('inconel-select-toggle', classNames.toggleButton)}\n style={styles.toggleButton}\n aria-label={isOpen ? closeMenuButtonLabel : openMenuButtonLabel}\n aria-expanded={isOpen}\n disabled={isDisabled}\n tabIndex={-1}\n onClick={() => (isOpen ? closeMenu() : openMenu())}\n >\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n >\n <path\n d=\"m5 7.5 5 5 5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={value ?? ''}\n required={isRequired}\n />\n )}\n <FieldFeedback\n hint={hint}\n errorMessage={errorMessage}\n hintId={hintId}\n errorId={messageId}\n />\n\n {menuPortalTarget && menu\n ? createPortal(menu, menuPortalTarget)\n : menu}\n </div>\n )\n}\n\nconst Select = forwardRef(SelectInner) as <T extends object>(\n props: SelectProps<T> & { ref?: ForwardedRef<SelectHandle> },\n) => ReactNode\n\nexport default Select\n","import { useState, type ReactNode } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\n\nexport interface TabsItem {\n id: string\n label: ReactNode\n content?: ReactNode\n disabled?: boolean\n}\n\nexport interface TabsProps {\n items: TabsItem[]\n value?: string\n defaultValue?: string\n onChange?: (id: string) => void\n className?: string\n}\n\nexport function Tabs({\n items,\n value,\n defaultValue,\n onChange,\n className,\n}: TabsProps) {\n const [internalValue, setInternalValue] = useState(\n defaultValue ?? items[0]?.id,\n )\n const activeValue = value ?? internalValue\n const active = items.find((item) => item.id === activeValue)\n\n return (\n <div className={classNames('inconel-tabs', className)}>\n <div className=\"inconel-tabs__list\" role=\"tablist\">\n {items.map((item) => (\n <button\n key={item.id}\n type=\"button\"\n role=\"tab\"\n disabled={item.disabled}\n aria-selected={item.id === activeValue}\n className={classNames(\n 'inconel-tabs__tab',\n item.id === activeValue && 'inconel-is-active',\n )}\n onClick={() => {\n setInternalValue(item.id)\n onChange?.(item.id)\n }}\n >\n {item.label}\n </button>\n ))}\n </div>\n {active?.content !== undefined && (\n <div className=\"inconel-tabs__panel\" role=\"tabpanel\">\n {active.content}\n </div>\n )}\n </div>\n )\n}\n","import { Tabs, type TabsProps } from '../Tabs'\n\nexport type SlideTabsProps = TabsProps\nexport const SlideTabs = Tabs\n","import type { HTMLAttributes, ReactNode } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\n\nexport interface SocketStatusProps extends HTMLAttributes<HTMLSpanElement> {\n connected: boolean\n connectedLabel?: ReactNode\n disconnectedLabel?: ReactNode\n}\n\nexport function SocketStatus({\n connected,\n connectedLabel = 'Bağlı',\n disconnectedLabel = 'Bağlantı yok',\n className,\n ...props\n}: SocketStatusProps) {\n return (\n <span\n {...props}\n className={classNames(\n 'inconel-socket-status',\n connected ? 'inconel-is-connected' : 'inconel-is-disconnected',\n className,\n )}\n role=\"status\"\n >\n <i aria-hidden=\"true\" />\n {connected ? connectedLabel : disconnectedLabel}\n </span>\n )\n}\n","import { ReactSVG, type Props as ReactSVGProps } from 'react-svg'\nimport './styles.css'\n\nexport interface SvgProps\n extends Omit<ReactSVGProps, 'className' | 'src' | 'title' | 'wrapper'> {\n className?: string\n src?: string | null\n title?: string | null\n render?: boolean\n}\n\nfunction Svg({\n className,\n src,\n title,\n render = true,\n ...svgProps\n}: SvgProps) {\n if (!render || !src) {\n return null\n }\n\n const classes = ['inconel-svg', className].filter(Boolean).join(' ')\n\n return (\n <ReactSVG\n {...svgProps}\n className={classes}\n src={src}\n title={title ?? undefined}\n wrapper=\"span\"\n />\n )\n}\n\nexport default Svg\n","import { HtmlEditor, type HtmlEditorProps } from '../HtmlEditor'\n\nexport type TextEditorProps = HtmlEditorProps\nexport const TextEditor = HtmlEditor\n","import Input, { type InputProps } from '../Input/Input'\n\nexport type TextInputProps = InputProps\nexport const TextInput = Input\n","import {\n forwardRef,\n useId,\n type TextareaHTMLAttributes,\n} from 'react'\n\nimport FieldFeedback from '../FieldFeedback/FieldFeedback'\nimport type { FieldFeedbackContentProps } from '../FieldFeedback/FieldFeedback'\nimport '../shared/field.css'\nimport '../shared/field-controls.css'\nimport './styles.css'\n\nexport interface TextareaProps\n extends TextareaHTMLAttributes<HTMLTextAreaElement>,\n FieldFeedbackContentProps {\n label?: string\n fullWidth?: boolean\n resize?: 'none' | 'vertical' | 'horizontal' | 'both'\n}\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n function Textarea(\n {\n id,\n label,\n hint,\n errorMessage,\n fullWidth = false,\n resize = 'vertical',\n className,\n required,\n disabled,\n 'aria-describedby': ariaDescribedBy,\n style,\n ...textareaProps\n },\n ref,\n ) {\n const generatedId = useId()\n const textareaId =\n id ?? `inconel-textarea-${generatedId.replace(/:/g, '')}`\n const hintId = `${textareaId}-hint`\n const errorId = `${textareaId}-error`\n const describedBy =\n [\n ariaDescribedBy,\n hint && !errorMessage ? hintId : undefined,\n errorMessage ? errorId : undefined,\n ]\n .filter(Boolean)\n .join(' ') || undefined\n\n return (\n <div\n className={[\n 'inconel-field',\n fullWidth ? 'inconel-field--full-width' : '',\n className ?? '',\n ].join(' ')}\n >\n {label && (\n <label className=\"inconel-field__label\" htmlFor={textareaId}>\n {label}\n {required && <span aria-hidden=\"true\"> *</span>}\n </label>\n )}\n <textarea\n {...textareaProps}\n ref={ref}\n id={textareaId}\n required={required}\n disabled={disabled}\n aria-invalid={Boolean(errorMessage)}\n aria-describedby={describedBy}\n className={[\n 'inconel-textarea',\n errorMessage ? 'inconel-is-invalid' : '',\n ].join(' ')}\n style={{ ...style, resize }}\n />\n <FieldFeedback\n hint={hint}\n errorMessage={errorMessage}\n hintId={hintId}\n errorId={errorId}\n />\n </div>\n )\n },\n)\n\nexport default Textarea\n","import type { ReactElement, ReactNode } from 'react'\n\nimport { classNames } from '../shared/classNames'\nimport './styles.css'\n\nexport interface TooltipProps {\n content: ReactNode\n children: ReactElement\n placement?: 'top' | 'right' | 'bottom' | 'left'\n className?: string\n}\n\nexport function Tooltip({\n content,\n children,\n placement = 'top',\n className,\n}: TooltipProps) {\n return (\n <span\n className={classNames(\n 'inconel-tooltip',\n `inconel-tooltip--${placement}`,\n className,\n )}\n >\n {children}\n <span className=\"inconel-tooltip__content\" role=\"tooltip\">\n {content}\n </span>\n </span>\n )\n}\n"],"names":["classNames","values","Button","loading","fullWidth","variant","disabled","className","children","props","jsxs","jsx","Checkbox","label","indeterminate","ref","useRef","useEffect","toggleArrayValue","value","item","CheckboxGroup","options","onChange","name","toggle","optionValue","option","FieldFeedback","hint","errorMessage","hintId","errorId","FORMATTED_INPUT_TYPES","LENGTH_VALIDATED_INPUT_TYPES","isFormattedInputType","type","candidate","isLengthValidatedInputType","getInputSeparators","locale","parts","part","parseInputNumber","group","decimal","normalized","result","roundInputNumber","scale","mode","factor","applyInputMask","mask","digits","index","character","formatInputValue","decimalScale","currency","validateInputValue","required","min","max","messages","expected","Input","forwardRef","id","startAdornment","endAdornment","inputClassName","labelClassName","defaultValue","onBlur","onFocus","onKeyDown","onMouseEnter","onMouseLeave","roundMode","roundOnBlur","allowNegative","debounceMs","validateOnSubmit","validationMessages","limit","isClearable","readOnly","clearButtonLabel","readOnlyEmptyValue","autoComplete","ariaDescribedBy","inputProps","generatedId","useId","inputId","controlled","localValue","setLocalValue","useState","currentValue","editingValue","setEditingValue","focused","setFocused","validationError","setValidationError","debounceRef","visibleError","validate","formattedValue","useMemo","buildPayload","rawValue","eventType","char","emitChange","payload","immediate","normalize","text","parsed","handleChange","describedBy","event","editValue","CurrencyInput","Switch","onLabel","offLabel","checked","defaultChecked","CustomizableSwitch","DEFAULT_TABLE_EMPTY_MESSAGE","getRowKey","row","rowKey","Table","columns","data","emptyMessage","onRowClick","column","DataGrid","formatDateValue","DatePicker","formatted","DEFAULT_FILE_UPLOAD_LABEL","FileUpload","files","multiple","onFilesChange","file","DEFAULT_DROP_LABEL","DragDropUpload","onDropFiles","dropLabel","dragging","setDragging","handleDrop","DndFileUpload","DEFAULT_DOT_LOADER_LABEL","DotLoader","ExcelTable","FileUploadText","Filter","onClear","clearLabel","HTMLTable","HtmlEditor","placeholder","InputText","DEFAULT_LOADER_LABEL","Loader","fullscreen","LoaderMini","DEFAULT_MODAL_CLOSE_LABEL","Modal","open","title","footer","closeLabel","closeOnBackdrop","onClose","MultiSelect","MultiSelectWithCheckbox","Option","selected","icon","OptionWithIcon","RadioGroup","DEFAULT_READ_ONLY_EMPTY_VALUE","ReadOnly","emptyValue","SelectInner","optionLabel","getOptionSearchText","isOptionDisabled","isDisabled","isReadOnly","isRequired","isLoading","loadOptions","loadOptionsDebounceMs","asyncErrorMessage","loadingMessage","noOptionsMessage","openMenuButtonLabel","closeMenuButtonLabel","searchLocale","menuPortalTarget","virtualize","virtualizationThreshold","optionHeight","styles","onInputChange","onMenuOpen","onMenuClose","forwardedRef","labelId","listboxId","messageId","rootRef","inputRef","menuRef","isOpen","setIsOpen","inputValue","setInputValue","activeIndex","setActiveIndex","asyncOptions","setAsyncOptions","isAsyncLoading","setIsAsyncLoading","hasAsyncError","setHasAsyncError","controller","timeout","loadedOptions","availableOptions","getLabel","useCallback","getSearchLabel","renderedLabel","getValue","resolvedValue","duplicateValues","seen","optionId","selectedOption","selectedLabel","filteredOptions","query","refs","floatingStyles","useFloating","autoUpdate","offset","flip","shift","size","availableHeight","rects","elements","shouldVirtualize","virtualizer","useVirtualizer","closeMenu","openMenu","clearSelection","useImperativeHandle","closeOnOutsideClick","target","selectOption","moveActiveOption","direction","nextIndex","findEnabledIndex","fromEnd","entries","handleKeyDown","activeOption","renderOption","style","mergeClassNames","menuContent","virtualRow","menu","node","createPortal","Select","Tabs","items","internalValue","setInternalValue","activeValue","active","SlideTabs","SocketStatus","connected","connectedLabel","disconnectedLabel","Svg","src","render","svgProps","classes","ReactSVG","TextEditor","TextInput","Textarea","resize","textareaProps","textareaId","Tooltip","content","placement"],"mappings":"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"}