{"version":3,"sources":["../../../src/Spinner/Spinner.css.ts","../../../src/Spinner/Spinner.tsx","../../../src/Typography/Typography.tsx","../../../src/Button/TextButton/TextButton.css.ts","../../../src/Button/TextButton/TextButton.tsx"],"names":["css","keyframes","spin","sizeToPxMap","spinnerCSS","jsx","Spinner","size","speed","variantMap","__spreadValues","classNames","vars","forwardRef","_Typography","as","semanticToken","variant","className","colorToken","children","whiteSpace","numOfLine","sx","textAlign","native","ref","__spreadProps","Typography","buttonCSS","large","medium","small","sizeStyles","primary","secondary","critical","warning","on","variantStyles","jsxs","TextButton","_a","_b","onClick","icon","iconPosition","_leadingIcon","_trailingIcon","text","isLoading","restProps","__objRest","Element","leadingIcon","trailingIcon","isTextOnly"],"mappings":"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","sourcesContent":["import { css, keyframes } from \"@emotion/react\";\nimport type { NumberPixel } from \"../types\";\nimport type { SpinnerProps } from \"./Spinner.types\";\n\nconst spin = keyframes`\n  100% {\n    transform: rotate(360deg);\n  }\n`;\n\nexport const sizeToPxMap = {\n  xsmall: \"16px\",\n  small: \"24px\",\n  medium: \"32px\",\n  large: \"64px\",\n} satisfies Record<Required<SpinnerProps>[\"size\"], NumberPixel>;\n\nexport const spinnerCSS = css`\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n\n  width: var(--spinner-size);\n  height: var(--spinner-size);\n\n  animation: ${spin} var(--spinner-speed) linear infinite;\n`;\n","/** @jsxImportSource @emotion/react */\n\nimport { sizeToPxMap, spinnerCSS } from \"./Spinner.css\";\nimport type { SpinnerProps } from \"./Spinner.types\";\n\nexport const Spinner = ({ size = \"xsmall\", speed = \"1s\" }: SpinnerProps) => {\n  const variantMap = {\n    size: {\n      [size]: {\n        \"--spinner-size\": sizeToPxMap[size],\n      },\n    } as Record<string, Record<string, string>>,\n    speed: {\n      \"--spinner-speed\": speed,\n    } as Record<string, string>,\n  };\n\n  return (\n    <span\n      style={{\n        ...variantMap.size[size],\n        ...variantMap.speed,\n      }}\n      css={spinnerCSS}\n    >\n      <svg\n        width=\"100%\"\n        height=\"100%\"\n        viewBox=\"0 0 16 16\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g>\n          <path\n            d=\"M14.75 8C15.1642 8 15.5039 7.66338 15.4625 7.25123C15.3501 6.13087 14.9865 5.04679 14.3948 4.08126C13.6721 2.90192 12.6373 1.9454 11.4049 1.31745C10.1725 0.689506 8.79046 0.414598 7.41156 0.52312C6.03265 0.631642 4.71062 1.11937 3.59161 1.93237C2.4726 2.74538 1.60022 3.85199 1.0709 5.12988C0.541588 6.40776 0.375962 7.80712 0.592338 9.17326C0.808713 10.5394 1.39866 11.8191 2.29696 12.8709C3.03239 13.7319 3.95104 14.4128 4.98183 14.8659C5.36102 15.0326 5.78614 14.8136 5.91414 14.4196C6.04214 14.0257 5.82382 13.6068 5.44891 13.4307C4.67966 13.0693 3.99324 12.5473 3.43756 11.8967C2.71893 11.0553 2.24697 10.0315 2.07387 8.93861C1.90077 7.8457 2.03327 6.7262 2.45672 5.7039C2.88017 4.6816 3.57808 3.7963 4.47329 3.1459C5.36849 2.49549 6.42612 2.10531 7.52924 2.0185C8.63237 1.93168 9.73801 2.1516 10.7239 2.65396C11.7099 3.15632 12.5377 3.92153 13.1158 4.86501C13.5629 5.59453 13.8472 6.40866 13.9532 7.25194C14.0048 7.66292 14.3358 8 14.75 8Z\"\n            fill=\"currentColor\"\n          />\n        </g>\n      </svg>\n    </span>\n  );\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { classNames, vars } from \"@imwebme/clay-token\";\nimport type { ElementType, Ref } from \"react\";\nimport { forwardRef } from \"react\";\nimport type { TypographyProps } from \"./Typography.types\";\n\n/**\n * token은 두 가지 방법으로 넣어줄 수 있습니다. semanticToken, variant\n * 값은 body-medium이 default 입니다.\n */\nconst _Typography = <Element extends ElementType>(\n  {\n    as,\n    semanticToken,\n    variant = \"body-medium\",\n    className = \"\",\n    colorToken = \"text\",\n    children,\n    whiteSpace,\n    numOfLine,\n    sx,\n    textAlign,\n    native,\n  }: TypographyProps<Element>,\n  ref: Ref<HTMLElement>,\n) => {\n  const Element = as || \"p\";\n\n  return (\n    <Element\n      className={`${classNames.typography[semanticToken || variant]} ${className}`}\n      ref={ref as any}\n      css={{\n        color: vars.semantic.color[colorToken],\n        ...(numOfLine && {\n          display: \"-webkit-box\",\n          overflow: \"hidden\",\n          textOverflow: \"ellipsis\",\n          WebkitBoxOrient: \"vertical\",\n          WebkitLineClamp: numOfLine,\n        }),\n        whiteSpace,\n        textAlign,\n        ...sx,\n      }}\n      {...native}\n    >\n      {children}\n    </Element>\n  );\n};\n\nexport const Typography = forwardRef(_Typography);\n\nTypography.displayName = \"Typography\";\n","import { css } from \"@emotion/react\";\nimport { vars } from \"@imwebme/clay-token\";\n\nexport const buttonCSS = css({\n  display: \"inline-flex\",\n  alignItems: \"center\",\n});\n\nconst large = css({\n  gap: vars.spacing[\"15\"],\n});\n\nconst medium = css({\n  gap: vars.spacing[1],\n});\n\nconst small = css({\n  gap: vars.spacing[\"05\"],\n});\n\nexport const sizeStyles = {\n  large,\n  medium,\n  small,\n};\n\nconst primary = css({\n  color: vars.semantic.color.textAccent,\n  svg: {\n    color: vars.semantic.color.textAccent,\n  },\n\n  \"&:hover\": {\n    color: vars.semantic.color.textAccentHover,\n    svg: {\n      color: vars.semantic.color.textAccentHover,\n    },\n  },\n});\n\nconst secondary = css({\n  color: vars.semantic.color.textSecondary,\n  svg: {\n    color: vars.semantic.color.textSecondary,\n  },\n\n  \"&:hover\": {\n    color: vars.semantic.color.textSecondaryHover,\n    svg: {\n      color: vars.semantic.color.textSecondaryHover,\n    },\n  },\n\n  '&[data-imweb-loading=\"true\"]': {\n    svg: {\n      color: vars.semantic.color.icon,\n    },\n  },\n});\n\nconst critical = css({\n  color: vars.semantic.color.textCritical,\n  svg: {\n    color: vars.semantic.color.textCritical,\n  },\n\n  \"&:hover\": {\n    color: vars.semantic.color.textCriticalHover,\n    svg: {\n      color: vars.semantic.color.textCriticalHover,\n    },\n  },\n});\n\nconst warning = css({\n  color: vars.semantic.color.textWarning,\n  svg: {\n    color: vars.semantic.color.textWarning,\n  },\n\n  \"&:hover\": {\n    color: vars.semantic.color.textWarningHover,\n    svg: {\n      color: vars.semantic.color.textWarningHover,\n    },\n  },\n});\n\nconst on = css({\n  color: vars.semantic.color.textOn,\n  svg: {\n    color: vars.semantic.color.textOn,\n  },\n\n  \"&:hover\": {\n    opacity: 0.75,\n  },\n});\n\nexport const variantStyles = {\n  primary,\n  secondary,\n  critical,\n  warning,\n  on,\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { Typography } from \"../..\";\nimport { Spinner } from \"../../Spinner\";\nimport { buttonCSS, sizeStyles, variantStyles } from \"./TextButton.css\";\nimport type { TextButtonProps } from \"./TextButton.types\";\n\nexport const TextButton = ({\n  variant,\n  as,\n  className,\n  onClick,\n  icon,\n  iconPosition = \"left\",\n  leadingIcon: _leadingIcon,\n  trailingIcon: _trailingIcon,\n  size = \"medium\",\n  sx,\n  text,\n  native,\n  isLoading,\n  ...restProps\n}: TextButtonProps) => {\n  const Element = as || \"button\";\n\n  const leadingIcon = icon && iconPosition === \"left\" ? icon : _leadingIcon;\n  const trailingIcon = icon && iconPosition === \"right\" ? icon : _trailingIcon;\n  const isTextOnly = !leadingIcon && !trailingIcon;\n\n  return (\n    <Element\n      className={className}\n      css={[buttonCSS, sizeStyles[size], variantStyles[variant], sx]}\n      data-imweb-loading={isLoading}\n      onClick={onClick}\n      {...restProps}\n      {...native}\n    >\n      {(leadingIcon || isTextOnly) && isLoading ? <Spinner /> : leadingIcon}\n      <Typography variant={`label-${size}-bold`} sx={{ color: \"inherit\" }}>\n        {text}\n      </Typography>\n      {trailingIcon && isLoading ? <Spinner /> : trailingIcon}\n    </Element>\n  );\n};\n"]}