{"version":3,"file":"DefinitionListItem.cjs","sources":["../../../src/components/DefinitionList/DefinitionListItem.tsx"],"sourcesContent":["import {\n  type ComponentPropsWithoutRef,\n  type FC,\n  type PropsWithChildren,\n  type ReactNode,\n  isValidElement,\n  memo,\n  useMemo,\n} from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { useTheme } from '../../hooks/useTheme'\nimport { Stack } from '../Layout'\nimport { Text } from '../Text'\n\ntype ObjectTermType = {\n  text: ReactNode\n  styleType?: 'blockTitle' | 'subBlockTitle' | 'subSubBlockTitle'\n}\ntype AbstractProps = PropsWithChildren<{\n  term: ReactNode | ObjectTermType\n  fullWidth?: boolean\n  maxColumns?: number\n}>\ntype Props = AbstractProps & Omit<ComponentPropsWithoutRef<'div'>, keyof AbstractProps>\n\nconst classNameGenerator = tv({\n  slots: {\n    wrapper: [\n      'smarthr-ui-DefinitionListItem shr-border-b-shorthand shr-min-w-[12em] shr-grow shr-border-dotted',\n      'contrast-more:shr-border-b-high-contrast',\n    ],\n    term: 'smarthr-ui-DefinitionListItem-term',\n    description:\n      'smarthr-ui-DefinitionListItem-description shr-ms-[initial] shr-min-h-[calc(1em*theme(lineHeight.normal))] shr-pb-0.25',\n  },\n  variants: {\n    fullWidth: {\n      true: {\n        wrapper: 'shr-basis-full',\n      },\n    },\n  },\n})\n\nexport const DefinitionListItem: FC<Props> = ({\n  term: orgTerm,\n  children,\n  maxColumns,\n  fullWidth,\n  className,\n}) => {\n  const theme = useTheme()\n  // HINT: ReactNodeとObjectのどちらかを判定\n  // typeofはnullの場合もobject判定されてしまうため念の為falsyで判定\n  // ReactNodeの一部であるReactElementもobjectとして判定されてしまうためisValidElementで判定\n  const term: ObjectTermType =\n    !orgTerm || typeof orgTerm !== 'object' || isValidElement(orgTerm)\n      ? {\n          text: orgTerm as ReactNode,\n        }\n      : (orgTerm as ObjectTermType)\n\n  const classNames = useMemo(() => {\n    const cs = classNameGenerator()\n\n    return {\n      wrapper: cs.wrapper({ fullWidth, className }),\n      term: cs.term(),\n      description: cs.description(),\n    }\n  }, [className, fullWidth])\n  const style = useMemo(\n    () => ({\n      flexBasis:\n        // fullWidth の方が強い\n        !fullWidth && maxColumns\n          ? `calc((100% - ${theme.spacingByChar(1.5)} * ${maxColumns - 1}) / ${maxColumns})`\n          : undefined,\n    }),\n    [fullWidth, maxColumns, theme],\n  )\n\n  return (\n    <Stack gap={0.25} className={classNames.wrapper} style={style}>\n      <DefinitionTerm styleType={term.styleType} className={classNames.term}>\n        {term.text}\n      </DefinitionTerm>\n      <Text as=\"dd\" size=\"M\" color=\"TEXT_BLACK\" leading=\"NORMAL\" className={classNames.description}>\n        {children}\n      </Text>\n    </Stack>\n  )\n}\n\nconst DefinitionTerm = memo<\n  PropsWithChildren<{ styleType: ObjectTermType['styleType']; className: string }>\n>(({ styleType = 'subBlockTitle', className, children }) => (\n  <Text as=\"dt\" leading=\"TIGHT\" styleType={styleType} className={className}>\n    {children}\n  </Text>\n))\n"],"names":["tv","useTheme","isValidElement","useMemo","_jsxs","Stack","_jsx","Text","memo"],"mappings":";;;;;;;;;;;;;;AA0BA,MAAM,kBAAkB,GAAGA,QAAE,CAAC;AAC5B,IAAA,KAAK,EAAE;AACL,QAAA,OAAO,EAAE;YACP,kGAAkG;YAClG,0CAA0C;AAC3C,SAAA;AACD,QAAA,IAAI,EAAE,oCAAoC;AAC1C,QAAA,WAAW,EACT,uHAAuH;AAC1H,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE;AACJ,gBAAA,OAAO,EAAE,gBAAgB;AAC1B,aAAA;AACF,SAAA;AACF,KAAA;AACF,CAAA,CAAC;AAEK,MAAM,kBAAkB,GAAc,CAAC,EAC5C,IAAI,EAAE,OAAO,EACb,QAAQ,EACR,UAAU,EACV,SAAS,EACT,SAAS,GACV,KAAI;AACH,IAAA,MAAM,KAAK,GAAGC,uBAAQ,EAAE;;;;AAIxB,IAAA,MAAM,IAAI,GACR,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAIC,oBAAc,CAAC,OAAO;AAC/D,UAAE;AACE,YAAA,IAAI,EAAE,OAAoB;AAC3B;UACA,OAA0B;AAEjC,IAAA,MAAM,UAAU,GAAGC,aAAO,CAAC,MAAK;AAC9B,QAAA,MAAM,EAAE,GAAG,kBAAkB,EAAE;QAE/B,OAAO;YACL,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC7C,YAAA,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;AACf,YAAA,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE;SAC9B;AACH,IAAA,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC1B,IAAA,MAAM,KAAK,GAAGA,aAAO,CACnB,OAAO;QACL,SAAS;;QAEP,CAAC,SAAS,IAAI;AACZ,cAAE,CAAA,aAAA,EAAgB,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA,GAAA,EAAM,UAAU,GAAG,CAAC,CAAA,IAAA,EAAO,UAAU,CAAA,CAAA;AAC/E,cAAE,SAAS;KAChB,CAAC,EACF,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAC/B;AAED,IAAA,QACEC,eAAA,CAACC,mCAAK,EAAA,EAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAA,QAAA,EAAA,CAC3DC,cAAA,CAAC,cAAc,EAAA,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,EAAA,QAAA,EAClE,IAAI,CAAC,IAAI,EAAA,CACK,EACjBA,cAAA,CAACC,yBAAI,EAAA,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EAAC,KAAK,EAAC,YAAY,EAAC,OAAO,EAAC,QAAQ,EAAC,SAAS,EAAE,UAAU,CAAC,WAAW,EAAA,QAAA,EACzF,QAAQ,EAAA,CACJ,CAAA,EAAA,CACD;AAEZ;AAEA,MAAM,cAAc,GAAGC,UAAI,CAEzB,CAAC,EAAE,SAAS,GAAG,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,MACrDF,cAAA,CAACC,yBAAI,EAAA,EAAC,EAAE,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAA,QAAA,EACrE,QAAQ,EAAA,CACJ,CACR,CAAC;;;;"}