{"version":3,"file":"Text.cjs","sources":["../../../src/components/Text/Text.tsx"],"sourcesContent":["import {\n  type ComponentProps,\n  type ElementType,\n  type PropsWithChildren,\n  type ReactNode,\n  memo,\n  useMemo,\n} from 'react'\nimport { type VariantProps, tv } from 'tailwind-variants'\n\nimport { useObjectAttributes } from '../../hooks/useObjectAttributes'\n\nimport type { AbstractSize, CharRelativeSize } from '../../themes'\nimport type { Gap } from '../../types'\n\ntype StyleType =\n  | 'screenTitle'\n  | 'sectionTitle'\n  | 'blockTitle'\n  | 'subBlockTitle'\n  | 'subSubBlockTitle'\n\nexport const STYLE_TYPE_MAP: { [key in StyleType]: VariantProps<typeof classNameGenerator> } = {\n  screenTitle: {\n    size: 'XL',\n    leading: 'TIGHT',\n    weight: 'normal',\n  },\n  sectionTitle: {\n    size: 'L',\n    leading: 'TIGHT',\n    weight: 'normal',\n  },\n  blockTitle: {\n    size: 'M',\n    leading: 'TIGHT',\n    weight: 'bold',\n  },\n  subBlockTitle: {\n    size: 'M',\n    leading: 'TIGHT',\n    weight: 'bold',\n    color: 'TEXT_GREY',\n  },\n  subSubBlockTitle: {\n    size: 'S',\n    leading: 'TIGHT',\n    weight: 'bold',\n    color: 'TEXT_GREY',\n  },\n}\nconst UNDEFINED_STYLE_VALUES = {\n  size: undefined,\n  leading: undefined,\n  weight: undefined,\n  color: undefined,\n}\n\nconst classNameGenerator = tv({\n  variants: {\n    size: {\n      XXS: 'shr-text-2xs',\n      XS: 'shr-text-xs',\n      S: 'shr-text-sm',\n      M: 'shr-text-base',\n      L: 'shr-text-lg',\n      XL: 'shr-text-xl',\n      XXL: 'shr-text-2xl',\n    },\n    weight: {\n      normal: 'shr-font-normal',\n      bold: 'shr-font-bold',\n    },\n    italic: {\n      true: 'shr-italic',\n    },\n    color: {\n      TEXT_BLACK: 'shr-text-black',\n      TEXT_WHITE: 'shr-text-white',\n      TEXT_GREY: 'shr-text-grey',\n      TEXT_DISABLED: 'shr-text-disabled',\n      TEXT_LINK: 'shr-text-link',\n      inherit: 'shr-text-color-inherit',\n    },\n    leading: {\n      NONE: 'shr-leading-none',\n      TIGHT: 'shr-leading-tight',\n      NORMAL: 'shr-leading-normal',\n      LOOSE: 'shr-leading-loose',\n    },\n    whiteSpace: {\n      normal: 'shr-whitespace-normal',\n      nowrap: 'shr-whitespace-nowrap',\n      pre: 'shr-whitespace-pre',\n      'pre-line': 'shr-whitespace-pre-line',\n      'pre-wrap': 'shr-whitespace-pre-wrap',\n    },\n    maxLines: {\n      1: 'shr-inline-block shr-w-full shr-overflow-x-clip shr-overflow-ellipsis shr-whitespace-nowrap shr-align-middle',\n      2: 'shr-line-clamp-[2]',\n      3: 'shr-line-clamp-[3]',\n      4: 'shr-line-clamp-[4]',\n      5: 'shr-line-clamp-[5]',\n      6: 'shr-line-clamp-[6]',\n    },\n  },\n})\n\nconst wrapperClassNameGenerator = tv({\n  base: [\n    'smarthr-ui-Icon-extended smarthr-ui-Icon-withText shr-group/iconWrapper shr-inline-flex shr-items-baseline',\n  ],\n  variants: {\n    gap: {\n      0: 'shr-gap-x-0',\n      0.25: 'shr-gap-x-0.25',\n      0.5: 'shr-gap-x-0.5',\n      0.75: 'shr-gap-x-0.75',\n      1: 'shr-gap-x-1',\n      1.25: 'shr-gap-x-1.25',\n      1.5: 'shr-gap-x-1.5',\n      2: 'shr-gap-x-2',\n      2.5: 'shr-gap-x-2.5',\n      3: 'shr-gap-x-3',\n      3.5: 'shr-gap-x-3.5',\n      4: 'shr-gap-x-4',\n      8: 'shr-gap-x-8',\n      '-0.25': '-shr-gap-x-0.25',\n      '-0.5': '-shr-gap-x-0.5',\n      '-0.75': '-shr-gap-x-0.75',\n      '-1': '-shr-gap-x-1',\n      '-1.25': '-shr-gap-x-1.25',\n      '-1.5': '-shr-gap-x-1.5',\n      '-2': '-shr-gap-x-2',\n      '-2.5': '-shr-gap-x-2.5',\n      '-3': '-shr-gap-x-3',\n      '-3.5': '-shr-gap-x-3.5',\n      '-4': '-shr-gap-x-4',\n      '-8': '-shr-gap-x-8',\n      X3S: 'shr-gap-x-0.25',\n      XXS: 'shr-gap-x-0.5',\n      XS: 'shr-gap-x-1',\n      S: 'shr-gap-x-1.5',\n      M: 'shr-gap-x-2',\n      L: 'shr-gap-x-2.5',\n      XL: 'shr-gap-x-3',\n      XXL: 'shr-gap-x-3.5',\n      X3L: 'shr-gap-x-4',\n    } as { [key in Gap]: string },\n  },\n})\n\ntype ActualIconType =\n  | undefined\n  | {\n      /** テキスト左に設置するアイコン */\n      prefix?: ReactNode\n      /** テキスト右に設置するアイコン */\n      suffix?: ReactNode\n      /** アイコンと並べるテキストとの溝 */\n      gap?: CharRelativeSize | AbstractSize\n    }\ntype IconType = ActualIconType | ReactNode\n\n// VariantProps を使うとコメントが書けない〜🥹\nexport type TextProps<T extends ElementType = 'span'> = VariantProps<typeof classNameGenerator> & {\n  /** テキストコンポーネントの HTML タグ名。初期値は span */\n  as?: T\n  /** 強調するかどうかの真偽値。指定すると em 要素になる */\n  emphasis?: boolean\n  /** 見た目の種類 */\n  styleType?: StyleType\n  /** 設置するアイコン */\n  icon?: IconType\n}\n\nconst iconObjectConverter = (icon: ReactNode) => (icon ? { prefix: icon } : undefined)\n\nconst ActualText = <T extends ElementType = 'span'>({\n  emphasis,\n  styleType,\n  icon: orgIcon,\n  weight = emphasis ? 'bold' : undefined,\n  as: Component = emphasis ? 'em' : 'span',\n  size,\n  italic,\n  color,\n  leading,\n  whiteSpace,\n  maxLines,\n  className,\n  children,\n  ...rest\n}: PropsWithChildren<TextProps<T> & ComponentProps<T>>) => {\n  if (maxLines !== undefined && (maxLines < 1 || maxLines > 6)) {\n    throw new Error('\"maxLines\" は 1 ~ 6 の範囲で指定してください')\n  }\n\n  const icon = useObjectAttributes<IconType, ActualIconType>(orgIcon, iconObjectConverter)\n  const actualClassName = useMemo(() => {\n    const styleTypeValues = styleType\n      ? STYLE_TYPE_MAP[styleType as StyleType]\n      : UNDEFINED_STYLE_VALUES\n\n    return classNameGenerator({\n      size: size || styleTypeValues.size,\n      weight: weight || styleTypeValues.weight,\n      color: color || styleTypeValues.color,\n      leading: leading || styleTypeValues.leading,\n      italic,\n      whiteSpace,\n      maxLines,\n      className,\n    })\n  }, [size, weight, italic, color, leading, whiteSpace, maxLines, className, styleType])\n  const wrapperClassName = useMemo(\n    () => (icon ? wrapperClassNameGenerator({ gap: icon.gap || 0.25 }) : ''),\n    [icon],\n  )\n\n  return (\n    <Component {...rest} className={actualClassName}>\n      {icon ? (\n        <span className={wrapperClassName}>\n          {icon.prefix}\n          {children}\n          {icon.suffix}\n        </span>\n      ) : (\n        children\n      )}\n    </Component>\n  )\n}\n\nexport const Text = memo(ActualText) as typeof ActualText\n"],"names":["tv","useObjectAttributes","useMemo","_jsx","_jsxs","memo"],"mappings":"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"}