{"version":3,"file":"FormLabel.mjs","sources":["../../../../src/components/FormLabel/FormLabel.tsx"],"sourcesContent":["'use client'\n\nimport { forwardRef, isValidElement } from 'react'\n\nimport classNames from 'classnames'\n\nimport { isEmpty } from '~/src/utils/type'\n\nimport { useFormControlContext } from '~/src/components/FormControl'\nimport { Help } from '~/src/components/Help'\nimport { HELP_DISPLAY_NAME } from '~/src/components/Help/Help'\nimport { LegacyHStack, LegacyStackItem } from '~/src/components/LegacyStack'\nimport { Text } from '~/src/components/Text'\n\nimport { type FormLabelProps } from './FormLabel.types'\n\nimport styles from './FormLabel.module.scss'\n\nexport const FORM_LABEL_TEST_ID = 'bezier-form-label'\n\n/**\n * `FormLabel` is a component to show label.\n * `FormControl` component can handle its layout by `position` props.\n * @example\n * ```tsx\n * <FormControl position=\"top\">\n *   <FormLabel>\n *     Name\n *   </FormLabel>\n *   <TextField />\n * </FormControl>\n * ```\n */\nexport const FormLabel = forwardRef<HTMLLabelElement, FormLabelProps>(\n  function FormLabel(props, forwardedRef) {\n    const {\n      help,\n      bold = true,\n      color = 'text-neutral',\n      className,\n      children,\n      ...rest\n    } = props\n\n    const contextValue = useFormControlContext()\n    const { className: formControlClassName, ...ownProps } =\n      contextValue?.getLabelProps(rest) ?? {\n        typo: '13',\n        className: undefined,\n        ...rest,\n      }\n\n    const HelpComponent = (() => {\n      if (isEmpty(help)) {\n        return null\n      }\n\n      if (isValidElement(help)) {\n        // FIXME(@bora): string, JSXElementCostructor 타입에 displayName 속성이 존재하지 않음, 임시로 any 타입으로 설정\n        const { displayName } = help?.type as any\n        if (displayName === HELP_DISPLAY_NAME) {\n          return help\n        }\n      }\n\n      return <Help>{help}</Help>\n    })()\n\n    const LabelComponent = (\n      <Text\n        className={classNames(\n          styles.LabelText,\n          !HelpComponent && formControlClassName,\n          className\n        )}\n        ref={forwardedRef}\n        as=\"label\"\n        align=\"left\"\n        bold={bold}\n        color={color}\n        data-testid={FORM_LABEL_TEST_ID}\n        {...ownProps}\n      >\n        {children}\n      </Text>\n    )\n\n    if (isEmpty(children)) {\n      return null\n    }\n\n    return !HelpComponent ? (\n      LabelComponent\n    ) : (\n      <LegacyHStack\n        align=\"center\"\n        spacing={6}\n        className={formControlClassName}\n      >\n        <LegacyStackItem\n          shrink\n          weight={1}\n        >\n          {LabelComponent}\n        </LegacyStackItem>\n        <LegacyStackItem>{HelpComponent}</LegacyStackItem>\n      </LegacyHStack>\n    )\n  }\n)\n"],"names":["FORM_LABEL_TEST_ID","FormLabel","forwardRef","props","forwardedRef","_contextValue$getLabe","help","bold","color","className","children","rest","contextValue","useFormControlContext","formControlClassName","ownProps","getLabelProps","typo","undefined","HelpComponent","isEmpty","isValidElement","displayName","type","HELP_DISPLAY_NAME","_jsx","Help","LabelComponent","Text","classNames","styles","LabelText","ref","as","align","_jsxs","LegacyHStack","spacing","LegacyStackItem","shrink","weight"],"mappings":";;;;;;;;;;;AAkBO,MAAMA,kBAAkB,GAAG;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,SAAS,gBAAGC,UAAU,CACjC,SAASD,SAASA,CAACE,KAAK,EAAEC,YAAY,EAAE;AAAA,EAAA,IAAAC,qBAAA;EACtC,MAAM;IACJC,IAAI;AACJC,IAAAA,IAAI,GAAG,IAAI;AACXC,IAAAA,KAAK,GAAG,cAAc;IACtBC,SAAS;IACTC,QAAQ;IACR,GAAGC;AACL,GAAC,GAAGR,KAAK;AAET,EAAA,MAAMS,YAAY,GAAGC,qBAAqB,EAAE;EAC5C,MAAM;AAAEJ,IAAAA,SAAS,EAAEK,oBAAoB;IAAE,GAAGC;AAAS,GAAC,IAAAV,qBAAA,GACpDO,YAAY,KAAA,IAAA,IAAZA,YAAY,KAAZA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAY,CAAEI,aAAa,CAACL,IAAI,CAAC,cAAAN,qBAAA,KAAA,KAAA,CAAA,GAAAA,qBAAA,GAAI;AACnCY,IAAAA,IAAI,EAAE,IAAI;AACVR,IAAAA,SAAS,EAAES,SAAS;IACpB,GAAGP;GACJ;EAEH,MAAMQ,aAAa,GAAG,CAAC,MAAM;AAC3B,IAAA,IAAIC,OAAO,CAACd,IAAI,CAAC,EAAE;AACjB,MAAA,OAAO,IAAI;AACb;AAEA,IAAA,iBAAIe,cAAc,CAACf,IAAI,CAAC,EAAE;AACxB;MACA,MAAM;AAAEgB,QAAAA;AAAY,OAAC,GAAGhB,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAJA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEiB,IAAW;MACzC,IAAID,WAAW,KAAKE,iBAAiB,EAAE;AACrC,QAAA,OAAOlB,IAAI;AACb;AACF;IAEA,oBAAOmB,GAAA,CAACC,IAAI,EAAA;AAAAhB,MAAAA,QAAA,EAAEJ;AAAI,KAAO,CAAC;AAC5B,GAAC,GAAG;AAEJ,EAAA,MAAMqB,cAAc,gBAClBF,GAAA,CAACG,IAAI,EAAA;AACHnB,IAAAA,SAAS,EAAEoB,UAAU,CACnBC,MAAM,CAACC,SAAS,EAChB,CAACZ,aAAa,IAAIL,oBAAoB,EACtCL,SACF,CAAE;AACFuB,IAAAA,GAAG,EAAE5B,YAAa;AAClB6B,IAAAA,EAAE,EAAC,OAAO;AACVC,IAAAA,KAAK,EAAC,MAAM;AACZ3B,IAAAA,IAAI,EAAEA,IAAK;AACXC,IAAAA,KAAK,EAAEA,KAAM;AACb,IAAA,aAAA,EAAaR,kBAAmB;AAAA,IAAA,GAC5Be,QAAQ;AAAAL,IAAAA,QAAA,EAEXA;AAAQ,GACL,CACP;AAED,EAAA,IAAIU,OAAO,CAACV,QAAQ,CAAC,EAAE;AACrB,IAAA,OAAO,IAAI;AACb;AAEA,EAAA,OAAO,CAACS,aAAa,GACnBQ,cAAc,gBAEdQ,IAAA,CAACC,YAAY,EAAA;AACXF,IAAAA,KAAK,EAAC,QAAQ;AACdG,IAAAA,OAAO,EAAE,CAAE;AACX5B,IAAAA,SAAS,EAAEK,oBAAqB;IAAAJ,QAAA,EAAA,cAEhCe,GAAA,CAACa,eAAe,EAAA;MACdC,MAAM,EAAA,IAAA;AACNC,MAAAA,MAAM,EAAE,CAAE;AAAA9B,MAAAA,QAAA,EAETiB;AAAc,KACA,CAAC,eAClBF,GAAA,CAACa,eAAe,EAAA;AAAA5B,MAAAA,QAAA,EAAES;AAAa,KAAkB,CAAC;AAAA,GACtC,CACf;AACH,CACF;;;;"}