{"version":3,"file":"Field-DZmC5a1D.mjs","names":["ReactNode","useId","ThemeColor","isArrayOfString","Slot","useTranslate","FieldProps","label","hint","description","footerDescription","errors","warning","children","id","group","preventLayerShift","className","Field","t0","$","_c","rawErrors","providedId","t1","t2","dataTestId","undefined","translate","t3","map","k","join","internalId","t4","labelElement","t5","hintElement","t6","errorsElement","t7","warningElement","color","showLabel","showFooter","t8","testIdProp","t9","groupLabelProps","t10","t11","t12","t13","t14","t15","t16"],"sources":["../src/components/fields/field/Field.tsx"],"sourcesContent":["import { ReactNode, useId } from \"react\";\nimport { type ThemeColor } from \"../../../types\";\nimport { isArrayOfString } from \"../../../lib/arrUtil\";\nimport { Slot } from \"../../slot\";\nimport { useTranslate } from \"../../i18n\";\n\nexport interface FieldProps {\n  label?: ReactNode;\n  hint?: ReactNode;\n  description?: ReactNode;\n  footerDescription?: ReactNode;\n  errors?: ReactNode | boolean;\n  warning?: ReactNode | boolean;\n  children: ReactNode;\n  id?: string;\n  /**\n   * Set when children renders multiple controls (checkboxes, radios, digit inputs)\n   * instead of a single labelable element: the label gets its own id and the\n   * group is associated via aria-labelledby instead of label[for], since a single\n   * htmlFor/id pair can't target one control among several.\n   */\n  group?: boolean;\n  preventLayerShift?: boolean;\n  \"data-testid\"?: string;\n  className?: string;\n}\n\nexport function Field({\n  label,\n  hint,\n  description,\n  footerDescription,\n  errors: rawErrors,\n  warning,\n  id: providedId,\n  children,\n  group = false,\n  preventLayerShift = true,\n  \"data-testid\": dataTestId,\n  className,\n}: FieldProps) {\n  const translate = useTranslate();\n  const errors =\n    isArrayOfString(rawErrors) && translate\n      ? rawErrors.map((k) => translate(k)).join(\", \")\n      : rawErrors;\n  const internalId = useId();\n  const id = providedId ?? internalId;\n\n  const labelElement = label && <span>{label}</span>;\n  const hintElement = hint && <span className=\"text-body-sm text-gray-6\">{hint}</span>;\n  const errorsElement = errors && typeof errors !== \"boolean\" && (\n    <span\n      className=\"text-red-4 dark:text-red-2 font-medium\"\n      aria-live=\"polite\"\n      role=\"status\"\n      data-testid={dataTestId ? `input-field/alert/${dataTestId}` : undefined}\n    >\n      <i className=\"fe-circle-exclamation\"></i>\n      <span>{errors}</span>\n    </span>\n  );\n  const warningElement = warning && typeof warning !== \"boolean\" && (\n    <span className=\"text-orange-4 dark:text-orange-2 font-medium\" aria-live=\"polite\" role=\"status\">\n      <i className=\"fe-circle-exclamation\"></i>\n      <span data-testid={dataTestId ? `input-field/warning/${dataTestId}` : undefined}>\n        {warning}\n      </span>\n    </span>\n  );\n\n  const color: ThemeColor = errors ? \"red\" : warning ? \"orange\" : \"yellow\";\n\n  const showLabel = preventLayerShift || label || hint;\n  const showFooter = preventLayerShift || errorsElement || warningElement;\n\n  const testIdProp = dataTestId ? { \"data-testid\": `input-field-${dataTestId}` } : {};\n  const groupLabelProps = group && showLabel ? { \"aria-labelledby\": id } : {};\n\n  return (\n    <div role=\"group\" className={className} {...testIdProp} {...groupLabelProps}>\n      {showLabel &&\n        (label || hint ? (\n          <label\n            id={group ? id : undefined}\n            htmlFor={group ? undefined : id}\n            className=\"mb-1 flex flex-wrap items-center justify-between\"\n          >\n            {labelElement}\n            {hintElement}\n          </label>\n        ) : (\n          <label\n            id={group ? id : undefined}\n            htmlFor={group ? undefined : id}\n            className=\"invisible\"\n          ></label>\n        ))}\n      {description && <div className=\"text-body-sm text-gray-6 mb-2\">{description}</div>}\n      <Slot id={group ? undefined : id} color={color}>\n        {children}\n      </Slot>\n      {showFooter && (\n        <div className=\"text-body-sm text-gray-6 mt-1 min-h-5\">\n          {errorsElement || warningElement}\n        </div>\n      )}\n      {footerDescription && (\n        <div className=\"text-body-sm text-gray-6 mb-2\">{footerDescription}</div>\n      )}\n    </div>\n  );\n}\n"],"mappings":"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"}