{"version":3,"sources":["../../src/Modal/Modal.tsx","../../src/utilities/Absolute/Absolute.tsx","../../src/utilities/Absolute/Absolute.hooks.ts","../../src/utilities/Clay/Clay.tsx","../../src/utilities/Flex/Flex.tsx","../../src/utilities/Portal/Portal.tsx","../../src/Badge/Badge.tsx","../../src/Badge/Badge.css.ts","../../src/Spinner/Spinner.css.ts","../../src/Spinner/Spinner.tsx","../../src/Button/IconButton/IconButton.tsx","../../src/Button/IconButton/IconButton.css.ts","../../src/Typography/Typography.tsx","../../src/Heading/Heading.tsx","../../src/Heading/Heading.css.ts","../../src/Modal/Modal.body.tsx","../../src/Modal/Modal.container.tsx","../../src/Modal/Modal.css.ts","../../src/Modal/Modal.footer.tsx","../../src/Modal/Modal.header.tsx","../../src/Modal/Modal.providers.tsx","../../src/Modal/Modal.overlay.tsx","../../src/Modal/VisualModal/VisualModal.tsx","../../src/Modal/VisualModal/VisualModal.body.tsx","../../src/Modal/VisualModal/VisualModal.container.tsx","../../src/Modal/VisualModal/VisualModal.footer.tsx","../../src/Modal/VisualModal/VisualModal.header.tsx","../../src/Modal/VisualModal/VisualModal.visual.tsx"],"names":["useListenKeyboard","useScrollLock","cloneElement","isValidElement","useEffect","useState","useAbsolute","to","position","align","setDomRect","callback","x","height","y","width","style","fixedProperty","unFixedProperty","fixedAxisValue","fixedRelativeValue","alignAxisValue","alignRelativeValue","Absolute","children","offsetX","offsetY","autoMinWidth","floatStyle","__spreadProps","__spreadValues","vars","forwardRef","jsx","Clay","_a","ref","_b","className","_hover","_active","_after","_before","_focus","size","shape","sx","as","native","props","__objRest","ClayNameSpace","_Flex","Flex","_FlexCenter","FlexCenter","_FlexColumn","FlexColumn","FlexNameSpace","createPortal","Portal","container","absoluteProps","css","primaryCSS","secondaryCSS","criticalCSS","sizeDefaultCSS","sizeLargeCSS","sizeSmallCSS","sizeVariant","typeVariant","dotPrimaryCSS","dotSecondaryCSS","dotCriticalCSS","dotTypeVariant","dotSmallSizeCSS","dotMediumSizeCSS","dotLargeSizeCSS","dotLargeBoldSizeCSS","dotSizeVariant","Badge","text","type","on","state","restProps","BadgeDot","keyframes","spin","sizeToPxMap","spinnerCSS","Spinner","speed","variantMap","match","color","typography","spacing","rounded","medium","large","small","tiny","sizeStyles","outlined","primary","args","secondary","critical","accent","iconButtonCSS","fullWidth","variantStyle","IconButton","Element","isLoading","isDisabled","icon","IconButtonNameSpace","classNames","_Typography","semanticToken","variant","colorToken","whiteSpace","numOfLine","textAlign","Typography","headingRecipe","jsxs","Heading","subtle","root","textVariant","HeadingBadge","HeadingNameSpace","ModalBody","modalSizeMap","overlayAnimation","contentAnimation","ModalContainer","fullHeight","e","ModalFooter","createContext","useContext","SetCloseModalContext","ModalProvider","setClose","useCloseModal","ModalHeader","title","backButton","closeButton","onClickBackButton","onClickCloseButton","headingTextForDeprecated","useLayoutEffect","useRef","ModalOverlay","closeOnBackdrop","Modal","closeOnEsc","isOpen","ModalNamespace","VisualModalBody","VisualModalContainer","VisualModalFooter","VisualModalHeader","_VisualModalVisual","restClayProps","VisualModalVisual","VisualModal","VisualModalNamespace"],"mappings":"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","sourcesContent":["import { useListenKeyboard, useScrollLock } from \"@imwebme/clay-hooks\";\nimport { Portal } from \"..\";\nimport { ModalBody } from \"./Modal.body\";\nimport { ModalContainer } from \"./Modal.container\";\nimport { ModalFooter } from \"./Modal.footer\";\nimport { ModalHeader } from \"./Modal.header\";\nimport { ModalOverlay } from \"./Modal.overlay\";\nimport { ModalProvider } from \"./Modal.providers\";\nimport type { ModalProps } from \"./Modal.types\";\n\nconst Modal = ({\n  closeOnEsc = true,\n  setClose,\n  isOpen,\n  closeOnBackdrop,\n  children,\n  width,\n  fullHeight,\n}: ModalProps) => {\n  useScrollLock({ enable: isOpen });\n\n  useListenKeyboard({\n    key: \"Escape\",\n    handler: setClose,\n    enable: closeOnEsc,\n  });\n\n  return isOpen ? (\n    <Portal>\n      <ModalProvider setClose={setClose}>\n        <ModalOverlay closeOnBackdrop={closeOnBackdrop} setClose={setClose}>\n          <ModalContainer width={width} fullHeight={fullHeight}>\n            {children}\n          </ModalContainer>\n        </ModalOverlay>\n      </ModalProvider>\n    </Portal>\n  ) : null;\n};\n\nconst ModalNamespace = Object.assign(Modal, {\n  Header: ModalHeader,\n  Body: ModalBody,\n  Footer: ModalFooter,\n});\n\nexport { ModalNamespace as Modal };\n","import { cloneElement, isValidElement } from \"react\";\nimport { useAbsolute } from \"./Absolute.hooks\";\nimport type { AbsoluteProps } from \"./Absolute.types\";\n\n/**\n * children 요소를 `to` props로 전달받은 요소를 기준으로 띄우는 역할입니다.\n *\n * 기본 position 이 `absolute` 로 설정되어 있어, 부모 요소에 영향을 받습니다.\n *\n * 만약 부모 요소와 관계 없이 화면에서 자유롭게 위치를 설정하고 싶다면, `Portal.Absolute` 또는 `Portal`과 함께 사용해주세요\n *\n * > Docs의 예시는 ref가 깨져서 `show code` 용으로만 확인해주시면 됩니다.\n */\nexport const Absolute = ({\n  to,\n  children,\n  position = \"bottom\",\n  align = \"start\",\n  offsetX = \"0px\",\n  offsetY = \"0px\",\n  autoMinWidth = false,\n}: AbsoluteProps) => {\n  const floatStyle = useAbsolute({ to, position, align });\n\n  if (!floatStyle || !isValidElement<HTMLElement>(children)) return null;\n\n  const floated = cloneElement(children, {\n    style: {\n      ...children.props.style,\n      position: \"fixed\",\n      minWidth: autoMinWidth ? \"auto\" : \"max-content\",\n      top: \"0\",\n      left: \"0\",\n      zIndex: \"var(--clay-zIndex-modal)\",\n      transform: `translate(calc(${floatStyle.computedX} + ${offsetX}), calc(${floatStyle.computedY} + ${offsetY}))`,\n    },\n  });\n\n  return floated;\n};\n","import { useEffect, useState } from \"react\";\nimport type { AbsoluteProps } from \"./Absolute.types\";\n\nexport const useAbsolute = ({\n  to,\n  position,\n  align,\n}: Pick<AbsoluteProps, \"align\" | \"position\" | \"to\">): {\n  computedX: string;\n  computedY: string;\n} | null => {\n  const [, setDomRect] = useState<undefined | DOMRect>();\n\n  useEffect(() => {\n    const callback = () => {\n      if (to) setDomRect(to.getBoundingClientRect());\n    };\n\n    window.addEventListener(\"scroll\", callback, { passive: true, capture: false });\n\n    return () => {\n      window.removeEventListener(\"scroll\", callback);\n    };\n  }, [to]);\n\n  if (!to) return null;\n\n  const { x, height, y, width } = to.getBoundingClientRect();\n\n  const style = {\n    computedY: \"\",\n    computedX: \"\",\n  };\n\n  let fixedProperty: \"computedY\" | \"computedX\" = \"computedY\";\n  let unFixedProperty: \"computedY\" | \"computedX\" = \"computedX\";\n  let fixedAxisValue = y;\n  let fixedRelativeValue = height;\n  let alignAxisValue = x;\n  let alignRelativeValue = width;\n\n  if (position === \"left\" || position === \"right\") {\n    fixedProperty = \"computedX\";\n    unFixedProperty = \"computedY\";\n    fixedAxisValue = x;\n    fixedRelativeValue = width;\n    alignAxisValue = y;\n    alignRelativeValue = height;\n  }\n\n  if (position === \"left\" || position === \"top\")\n    style[fixedProperty] = `calc(-100% + ${fixedAxisValue}px)`;\n  else style[fixedProperty] = `${fixedAxisValue + fixedRelativeValue}px`;\n\n  if (align === \"start\") {\n    style[unFixedProperty] = `${alignAxisValue}px`;\n  }\n\n  if (align === \"center\") {\n    style[unFixedProperty] = `calc(${alignAxisValue + alignRelativeValue / 2}px - 50%)`;\n  }\n\n  if (align === \"end\") {\n    style[unFixedProperty] = `calc(${alignAxisValue + alignRelativeValue}px - 100%)`;\n  }\n\n  return style;\n};\n","/** @jsxImportSource @emotion/react */\n\nimport { vars } from \"@imwebme/clay-token\";\nimport type { ComponentPropsWithRef, ElementType, ReactElement } from \"react\";\nimport { forwardRef } from \"react\";\nimport type { ClayProps } from \"./Clay.types\";\n\nexport type ClayComponent = <C extends ElementType = \"div\">(\n  props: ClayProps<C> & {\n    ref?: ComponentPropsWithRef<C>[\"ref\"];\n  },\n) => ReactElement | null;\n\nconst Clay: ClayComponent = forwardRef(\n  <E extends ElementType>(\n    {\n      children,\n      className,\n      _hover,\n      _active,\n      _after,\n      _before,\n      _focus,\n      size,\n      width,\n      height,\n      shape,\n      sx,\n      as,\n      native,\n      ...props\n    }: ClayProps<E>,\n    ref: ComponentPropsWithRef<E>[\"ref\"],\n  ) => {\n    const Element = as || \"div\";\n\n    return (\n      <Element\n        ref={ref}\n        className={className}\n        css={{\n          width: size || width,\n          height: size || height,\n          ...(shape === \"circle\" && {\n            borderRadius: vars.rounded.full,\n          }),\n          \"&:hover\": _hover,\n          \"&:active\": _active,\n          \"&:after\": _after,\n          \"&:before\": _before,\n          \"&:focus\": _focus,\n          ...props,\n          ...sx,\n        }}\n        {...native}\n      >\n        {children}\n      </Element>\n    );\n  },\n);\n\nconst ClayNameSpace = Object.assign(Clay, { displayName: \"Clay\" });\n\nexport { ClayNameSpace as Clay };\n","import type { ComponentPropsWithRef, ElementType } from \"react\";\nimport { forwardRef } from \"react\";\nimport { Clay } from \"../Clay\";\nimport type { ClayComponent, ClayProps } from \"../Clay/Clay.types\";\n\nconst _Flex: ClayComponent = forwardRef(\n  <Element extends ElementType>(\n    props: ClayProps<Element>,\n    ref: ComponentPropsWithRef<Element>[\"ref\"],\n  ) => <Clay ref={ref} display=\"flex\" {...props} />,\n);\n\nconst Flex = Object.assign(_Flex, { displayName: \"Flex\" });\n\nconst _FlexCenter: ClayComponent = forwardRef(\n  <Element extends ElementType>(\n    props: ClayProps<Element>,\n    ref: ComponentPropsWithRef<Element>[\"ref\"],\n  ) => <Flex ref={ref} alignItems=\"center\" justifyContent=\"center\" {...props} />,\n);\n\nconst FlexCenter = Object.assign(_FlexCenter, { displayName: \"Flex.Center\" });\n\nconst _FlexColumn: ClayComponent = forwardRef(\n  <Element extends ElementType>(\n    { as = \"div\" as any, ...props }: ClayProps<Element>,\n    ref: ComponentPropsWithRef<Element>[\"ref\"],\n  ) => <Flex ref={ref} as={as} flexDirection=\"column\" {...props} />,\n);\n\nconst FlexColumn = Object.assign(_FlexColumn, { displayName: \"Flex.Column\" });\n\n/**\n * @deprecated Use `Flex.Column` instead\n */\nexport const Stack = FlexColumn;\n\nconst FlexNameSpace = Object.assign(Flex, { Center: FlexCenter, Column: FlexColumn });\n\nexport { FlexNameSpace as Flex };\n","import { isValidElement } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { AbsoluteProps } from \"../Absolute\";\nimport { Absolute } from \"../Absolute\";\nimport type { PortalProps } from \"./Portal.types\";\n\nexport const Portal = ({ children, container = globalThis?.document?.body }: PortalProps) => {\n  if (!container || !isValidElement(children)) return null;\n\n  return createPortal(children, container);\n};\n\nPortal.Absolute = ({ children, ...absoluteProps }: AbsoluteProps) => (\n  <Portal>\n    <Absolute {...absoluteProps}>{children}</Absolute>\n  </Portal>\n);\n","/** @jsxImportSource @emotion/react */\n\nimport { vars } from \"@imwebme/clay-token\";\nimport { Clay } from \"..\";\nimport { dotSizeVariant, dotTypeVariant, sizeVariant, typeVariant } from \"./Badge.css\";\nimport type { BadgeDotProp, BadgeProps } from \"./Badge.types\";\n\n/**\n * @deprecated `Badge` 컴포넌트는 더 이상 사용되지 않습니다. `Badge` 컴포넌트 대신 `NumberBadge` / `DotBadge` 컴포넌트를 사용해주세요.\n */\nexport const Badge = ({\n  text,\n  type,\n  on = false,\n  size = \"default\",\n  state = \"default\",\n  ...restProps\n}: BadgeProps) => {\n  return (\n    <Clay\n      display=\"inline-block\"\n      borderRadius={vars.rounded.full}\n      native={{\n        \"data-clay-badge-on\": on,\n        \"data-clay-badge-state\": state,\n      }}\n      height=\"fit-content\"\n      width=\"fit-content\"\n      transition=\"all 0.3s ease-out\"\n      css={[sizeVariant[size], typeVariant[type]]}\n      {...restProps}\n    >\n      {text}\n    </Clay>\n  );\n};\n\nconst BadgeDot = ({ size, type, sx }: BadgeDotProp) => (\n  <Clay\n    css={[\n      {\n        outlineColor: \"white\",\n        borderRadius: \"50%\",\n        outlineStyle: \"solid\",\n      },\n      dotTypeVariant[type],\n      dotSizeVariant[size],\n      sx,\n    ]}\n  />\n);\n\nBadge.Dot = BadgeDot;\n","import type { SerializedStyles } from \"@emotion/react\";\nimport { css } from \"@emotion/react\";\nimport { vars } from \"@imwebme/clay-token\";\nimport type { BadgeProps } from \".\";\n\nconst primaryCSS = css({\n  background: vars.semantic.color.layerSelected,\n  color: vars.semantic.color.textPrimary,\n\n  \"&[data-clay-badge-state='hover']\": {\n    background: vars.semantic.color.layerSelectedHover,\n  },\n\n  \"&[data-clay-badge-on='true']\": {\n    color: vars.semantic.color.textOn,\n    background: vars.color.imBlue[600],\n  },\n\n  \"&[data-clay-badge-state='disabled']\": {\n    color: vars.semantic.color.textDisabled,\n    background: vars.semantic.color.surfaceSub,\n  },\n});\n\nconst secondaryCSS = css({\n  background: vars.semantic.color.surfaceSub,\n  color: vars.semantic.color.textSub,\n\n  \"&[data-clay-badge-state='hover']\": {\n    background: vars.semantic.color.actionPrimaryDisabled,\n  },\n\n  \"&[data-clay-badge-on='true']\": {\n    color: vars.semantic.color.textOn,\n    background: vars.color.imBlue[600],\n  },\n\n  \"&[data-clay-badge-state='disabled']\": {\n    color: vars.semantic.color.textDisabled,\n    background: vars.semantic.color.surfaceSub,\n  },\n});\n\nconst criticalCSS = css({\n  background: vars.semantic.color.surfaceCritical,\n  color: vars.semantic.color.textCritical,\n\n  \"&[data-clay-badge-state='hover']\": {\n    // 똑같음\n  },\n\n  \"&[data-clay-badge-on='true']\": {\n    color: vars.semantic.color.textOn,\n    background: \"#D34\",\n  },\n\n  \"&[data-clay-badge-state='disabled']\": {\n    color: vars.semantic.color.textDisabled,\n    background: vars.semantic.color.surfaceSub,\n  },\n});\n\nconst sizeDefaultCSS = css({\n  padding: `${vars.spacing[\"05\"]} ${vars.spacing[\"15\"]}`,\n  minWidth: \"20px\",\n  ...vars.semantic.typography[\"label-small\"],\n});\n\nconst sizeLargeCSS = css({\n  padding: `0 ${vars.spacing[\"15\"]}`,\n  minWidth: \"24px\",\n  ...vars.semantic.typography[\"label-medium\"],\n});\n\nconst sizeSmallCSS = css({\n  padding: `${vars.spacing[\"1\"]} ${vars.spacing[\"15\"]}`,\n  minWidth: \"20px\",\n  ...vars.semantic.typography[\"label-xsmall\"],\n});\n\nexport const sizeVariant = {\n  default: sizeDefaultCSS,\n  large: sizeLargeCSS,\n  small: sizeSmallCSS,\n};\n\nexport const typeVariant: Record<BadgeProps[\"type\"], SerializedStyles> = {\n  primary: primaryCSS,\n  critical: criticalCSS,\n  secondary: secondaryCSS,\n};\n\nconst dotPrimaryCSS = css({\n  background: vars.semantic.color.iconAccent,\n});\n\nconst dotSecondaryCSS = css({\n  background: vars.semantic.color.icon,\n});\n\nconst dotCriticalCSS = css({\n  background: vars.semantic.color.iconCritical,\n});\n\nexport const dotTypeVariant = {\n  primary: dotPrimaryCSS,\n  critical: dotCriticalCSS,\n  secondary: dotSecondaryCSS,\n};\n\nconst dotSmallSizeCSS = css({\n  width: \"6px\",\n  height: \"6px\",\n  outlineWidth: \"2px\",\n});\n\nconst dotMediumSizeCSS = css({\n  width: \"8px\",\n  height: \"8px\",\n  outlineWidth: \"2px\",\n});\n\nconst dotLargeSizeCSS = css({\n  width: \"10px\",\n  height: \"10px\",\n  outlineWidth: \"2px\",\n});\n\nconst dotLargeBoldSizeCSS = css({\n  width: \"10px\",\n  height: \"10px\",\n  outlineWidth: \"3px\",\n});\n\nexport const dotSizeVariant = {\n  small: dotSmallSizeCSS,\n  medium: dotMediumSizeCSS,\n  large: dotLargeSizeCSS,\n  largeBold: dotLargeBoldSizeCSS,\n};\n","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 type { ComponentPropsWithRef, ElementType } from \"react\";\nimport { forwardRef } from \"react\";\nimport { Spinner } from \"../../Spinner\";\nimport { iconButtonCSS } from \"./IconButton.css\";\nimport type { IconButtonProps } from \"./IconButton.types\";\n\ntype IconButtonComponent = <E extends ElementType = \"button\">(\n  props: IconButtonProps<E> & {\n    ref?: ComponentPropsWithRef<E>[\"ref\"];\n  },\n) => JSX.Element | null;\n\nconst IconButton: IconButtonComponent = forwardRef(\n  <E extends ElementType>(props: IconButtonProps<E>, ref: ComponentPropsWithRef<E>[\"ref\"]) => {\n    const Element = props.as ?? \"button\";\n    const { isLoading, isDisabled, icon } = props;\n\n    return (\n      <Element\n        ref={ref}\n        data-imweb-loading={isLoading}\n        disabled={isLoading || isDisabled}\n        css={[iconButtonCSS(props), props.sx]}\n        {...props}\n        {...props.native}\n      >\n        {isLoading ? <Spinner /> : icon}\n      </Element>\n    );\n  },\n);\n\nconst IconButtonNameSpace = Object.assign(IconButton, { displayName: \"Clay.IconButton\" });\n\nexport { IconButtonNameSpace as IconButton };\n","import { css } from \"@emotion/react\";\nimport { vars } from \"@imwebme/clay-token\";\nimport type { ElementType } from \"react\";\nimport { match } from \"ts-pattern\";\nimport type { IconButtonProps } from \"./IconButton.types\";\n\nconst {\n  semantic: { color, typography },\n  spacing,\n  rounded,\n} = vars;\n\nconst medium = css`\n  padding: ${spacing[3]};\n  border-radius: ${rounded.medium};\n  ${typography[\"label-medium\"]}\n`;\n\nconst large = css`\n  padding: ${vars.spacing[4]};\n  border-radius: ${vars.rounded.medium};\n\n  ${typography[\"label-large\"]}\n`;\n\nconst small = css`\n  padding: ${vars.spacing[2]};\n  border-radius: ${vars.rounded.small};\n\n  ${typography[\"label-medium\"]}\n`;\n\nconst tiny = css`\n  padding: ${vars.spacing[15]};\n  border-radius: ${vars.rounded.small};\n\n  ${typography[\"label-small\"]}\n`;\n\nexport const sizeStyles = {\n  medium,\n  large,\n  small,\n  tiny,\n};\n\nconst outlined = () =>\n  css({\n    \"--clay-icon-button-background-color\": color.actionSecondary,\n\n    backgroundColor: \"var(--clay-icon-button-background-color)\",\n    \"--clay-dot-bg\": \"var(--clay-icon-button-background-color)\",\n\n    color: color.textSecondary,\n    svg: {\n      color: color.iconSecondary,\n    },\n\n    outline: `1px solid ${color.border}`,\n    outlineOffset: \"-1px\",\n\n    \"&:hover:not(:disabled)\": {\n      outlineColor: color.borderHover,\n    },\n\n    \"&:active:not(:disabled)\": {\n      outlineColor: color.borderSub,\n    },\n\n    \"&:disabled\": {\n      \"--clay-icon-button-background-color\": color.actionSecondaryDisabled,\n\n      color: color.textDisabled,\n      outlineColor: \"transparent\",\n      svg: {\n        color: color.textDisabled,\n      },\n\n      '&[data-imweb-loading=\"true\"]': {\n        \"--clay-icon-button-background-color\": color.actionSecondary,\n\n        color: color.textSecondary,\n        outlineColor: color.borderSub,\n        svg: {\n          color: color.icon,\n        },\n      },\n    },\n  });\n\nconst primary = <E extends ElementType>(\n  args?: Extract<IconButtonProps<E>, { variant: \"primary\" }>,\n) =>\n  css({\n    \"--clay-icon-button-background-color\": args?.tonal\n      ? color.actionPrimaryTonal\n      : color.actionPrimary,\n\n    backgroundColor: \"var(--clay-icon-button-background-color)\",\n    \"--clay-dot-bg\": \"var(--clay-icon-button-background-color)\",\n\n    color: args?.tonal ? color.textSecondary : color.textInverse,\n    svg: {\n      color: args?.tonal ? color.iconSecondary : color.iconInverse,\n    },\n\n    \"&:hover:not(:disabled)\": {\n      \"--clay-icon-button-background-color\": args?.tonal\n        ? color.actionPrimaryTonalHover\n        : color.actionPrimaryHover,\n    },\n\n    \"&:active:not(:disabled)\": {\n      \"--clay-icon-button-background-color\": args?.tonal\n        ? color.actionPrimaryTonalPressed\n        : color.actionPrimaryPressed,\n    },\n\n    \"&:disabled\": {\n      color: color.textDisabled,\n\n      '&:not([data-imweb-loading=\"true\"])': {\n        \"--clay-icon-button-background-color\": args?.tonal\n          ? color.actionPrimaryTonalDisabled\n          : color.actionPrimaryDisabled,\n\n        svg: {\n          color: color.textDisabled,\n        },\n      },\n\n      '&[data-imweb-loading=\"true\"]': {\n        \"--clay-icon-button-background-color\": args?.tonal\n          ? color.actionPrimaryTonalPressed\n          : color.actionPrimaryPressed,\n\n        color: args?.tonal ? color.textSecondary : color.textInverse,\n        svg: {\n          color: args?.tonal ? color.icon : color.iconOn,\n        },\n      },\n    },\n  });\n\nconst secondary = () =>\n  css({\n    \"--clay-icon-button-background-color\": \"transparent\",\n\n    backgroundColor: \"var(--clay-icon-button-background-color)\",\n    \"--clay-dot-bg\": \"var(--clay-icon-button-background-color)\",\n\n    color: color.textSecondary,\n    svg: {\n      color: color.iconSecondary,\n    },\n\n    \"&:hover:not(:disabled)\": {\n      \"--clay-icon-button-background-color\": color.actionSecondaryHover,\n    },\n\n    \"&:active:not(:disabled)\": {\n      \"--clay-icon-button-background-color\": color.actionSecondaryPressed,\n    },\n\n    \"&:disabled\": {\n      \"--clay-icon-button-background-color\": color.actionSecondaryDisabled,\n\n      color: color.textDisabled,\n      '&[data-imweb-loading=\"true\"]': {\n        \"--clay-icon-button-background-color\": \"transparent\",\n\n        color: color.textSecondary,\n        svg: {\n          color: color.icon,\n        },\n      },\n    },\n  });\n\nconst critical = <E extends ElementType>(\n  args?: Extract<IconButtonProps<E>, { variant: \"critical\" }>,\n) =>\n  css({\n    \"--clay-icon-button-background-color\": args?.tonal\n      ? color.actionCriticalTonal\n      : color.actionCritical,\n\n    backgroundColor: \"var(--clay-icon-button-background-color)\",\n    \"--clay-dot-bg\": \"var(--clay-icon-button-background-color)\",\n\n    color: args?.tonal ? color.textCritical : color.textOn,\n    svg: {\n      color: args?.tonal ? color.iconCritical : color.iconOn,\n    },\n\n    \"&:hover:not(:disabled)\": {\n      \"--clay-icon-button-background-color\": args?.tonal\n        ? color.actionCriticalTonalHover\n        : color.actionCriticalHover,\n    },\n\n    \"&:active:not(:disabled)\": {\n      \"--clay-icon-button-background-color\": args?.tonal\n        ? color.actionCriticalTonalPressed\n        : color.actionCriticalPressed,\n    },\n\n    \"&:disabled\": {\n      color: color.textDisabled,\n\n      '&:not([data-imweb-loading=\"true\"])': {\n        \"--clay-icon-button-background-color\": args?.tonal\n          ? color.actionCriticalTonalDisabled\n          : color.actionCriticalDisabled,\n\n        stroke: color.textDisabled,\n      },\n\n      '&[data-imweb-loading=\"true\"]': {\n        \"--clay-icon-button-background-color\": args?.tonal\n          ? color.actionCriticalTonalPressed\n          : color.actionCriticalPressed,\n\n        color: args?.tonal ? color.textCritical : color.textOn,\n        svg: {\n          color: args?.tonal ? color.iconCritical : color.iconOn,\n        },\n      },\n    },\n  });\n\nconst accent = <E extends ElementType>(args?: Extract<IconButtonProps<E>, { variant: \"accent\" }>) =>\n  css({\n    \"--clay-icon-button-background-color\": args?.tonal\n      ? color.actionAccentTonal\n      : color.actionAccent,\n\n    backgroundColor: \"var(--clay-icon-button-background-color)\",\n    \"--clay-dot-bg\": \"var(--clay-icon-button-background-color)\",\n\n    color: args?.tonal ? color.textAccent : color.text,\n    svg: {\n      color: args?.tonal ? color.iconAccent : color.icon,\n    },\n\n    \"&:hover:not(:disabled)\": {\n      \"--clay-icon-button-background-color\": args?.tonal\n        ? color.actionAccentTonalHover\n        : color.actionAccentHover,\n    },\n\n    \"&:active:not(:disabled)\": {\n      \"--clay-icon-button-background-color\": args?.tonal\n        ? color.actionAccentTonalPressed\n        : color.actionAccentPressed,\n    },\n\n    \"&:disabled\": {\n      color: color.textDisabled,\n\n      '&:not([data-imweb-loading=\"true\"])': {\n        \"--clay-icon-button-background-color\": args?.tonal\n          ? color.actionAccentTonalDisabled\n          : color.actionAccentDisabled,\n\n        stroke: color.textDisabled,\n      },\n\n      '&[data-imweb-loading=\"true\"]': {\n        \"--clay-icon-button-background-color\": args?.tonal\n          ? color.actionAccentTonalPressed\n          : color.actionAccentPressed,\n\n        color: args?.tonal ? color.textAccent : color.text,\n        svg: {\n          color: args?.tonal ? color.iconAccent : color.icon,\n        },\n      },\n    },\n  });\n\nexport const iconButtonCSS = <E extends ElementType>(props: IconButtonProps<E>) => {\n  const { fullWidth, rounded, size = \"medium\" } = props;\n\n  const variantStyle = match(props)\n    .with({ variant: \"primary\" }, primary)\n    .with({ variant: \"secondary\" }, secondary)\n    .with({ variant: \"critical\" }, critical)\n    .with({ variant: \"accent\" }, accent)\n    .with({ variant: \"outlined\" }, outlined)\n    .exhaustive();\n\n  return css`\n    display: inline-flex;\n    justify-content: center;\n    align-items: center;\n    ${sizeStyles[size]};\n\n    ${variantStyle};\n    ${rounded && `border-radius: ${vars.rounded.full};`}\n\n    width: ${fullWidth ? \"100%\" : \"fit-content\"};\n    height: fit-content;\n\n    transition-timing-function: ease-out;\n    transition-duration: 100ms;\n    transition-property: background-color, color;\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 { vars } from \"@imwebme/clay-token\";\nimport type { ComponentPropsWithRef } from \"react\";\nimport { forwardRef } from \"react\";\nimport type { BadgeProps } from \"../Badge\";\nimport { Badge } from \"../Badge\";\nimport { Typography } from \"../Typography\";\nimport { Flex } from \"../utilities\";\nimport { headingRecipe } from \"./Heading.css\";\nimport type { HeadingProps } from \"./Heading.types\";\n\n/**\n * Badge를 사용할 경우 children으로 주입해주어야 합니다.\n *\n * @example\n * <Heading>\n *    <Heading.Badge text=\"56\" type=\"variant\" />\n * </Heading>\n */\nconst Heading = forwardRef(\n  (\n    { size, text, subtle, align, children, className, sx, as = \"div\", native }: HeadingProps,\n    ref: ComponentPropsWithRef<\"div\">[\"ref\"],\n  ) => {\n    const { root, textVariant } = headingRecipe({ size });\n\n    return (\n      <Flex.Column\n        as={as}\n        ref={ref}\n        native={native}\n        className={className}\n        sx={sx}\n        {...root}\n        {...(align === \"center\" && { textAlign: \"center\" })}\n      >\n        <Flex alignItems=\"center\" textAlign=\"inherit\" gap={vars.spacing[1]}>\n          <Typography\n            sx={{ flex: align === \"center\" ? 1 : 0 }}\n            variant={textVariant}\n            whiteSpace=\"pre\"\n          >\n            {text}\n          </Typography>\n\n          {children}\n        </Flex>\n\n        {subtle && (\n          <Typography colorToken=\"textSub\" variant=\"body-medium\" whiteSpace=\"pre\">\n            {subtle}\n          </Typography>\n        )}\n      </Flex.Column>\n    );\n  },\n);\n\nconst HeadingBadge = (props: Omit<BadgeProps, \"size\">) => <Badge size=\"default\" {...props} />;\n\nconst HeadingNameSpace = Object.assign(Heading, { Badge: HeadingBadge });\n\nexport { HeadingNameSpace as Heading };\n","import { vars } from \"@imwebme/clay-token\";\nimport type { CSSProperties } from \"react\";\nimport type { TypographyProps } from \"../Typography/Typography.types\";\nimport type { HeadingProps } from \"./Heading.types\";\n\nexport const headingRecipe = ({\n  size,\n}: Pick<HeadingProps, \"size\">): {\n  textVariant: TypographyProps<\"p\">[\"variant\"];\n  root: CSSProperties;\n} => {\n  switch (size) {\n    case \"small\":\n      return {\n        root: {\n          gap: vars.spacing[3],\n        },\n        textVariant: \"heading-medium-bold\",\n      };\n\n    case \"medium\":\n      return {\n        root: {\n          gap: vars.spacing[1],\n        },\n        textVariant: \"heading-large-bold\",\n      };\n\n    case \"large\":\n      return {\n        root: {\n          gap: vars.spacing[2],\n        },\n        textVariant: \"heading-xlarge-bold\",\n      };\n\n    default:\n      return {\n        root: {\n          gap: vars.spacing[3],\n        },\n        textVariant: \"heading-2xlarge-bold\",\n      };\n  }\n};\n","import { vars } from \"@imwebme/clay-token\";\nimport type { PropsWithChildren, Ref } from \"react\";\nimport { forwardRef } from \"react\";\nimport { Clay } from \"..\";\n\nexport const ModalBody = forwardRef((props: PropsWithChildren, ref: Ref<HTMLDivElement>) => {\n  return (\n    <Clay ref={ref} padding={vars.spacing[6]} flex={1}>\n      {props.children}\n    </Clay>\n  );\n});\n\nModalBody.displayName = \"ModalBody\";\n","import { vars } from \"@imwebme/clay-token\";\nimport type { Ref } from \"react\";\nimport { forwardRef } from \"react\";\nimport { Flex } from \"../utilities\";\nimport { contentAnimation, modalSizeMap } from \"./Modal.css\";\nimport type { ModalContainerProps } from \"./Modal.types\";\n\nexport const ModalContainer = forwardRef(\n  ({ width, fullHeight, children }: ModalContainerProps, ref: Ref<HTMLDivElement>) => {\n    return (\n      <Flex.Column\n        ref={ref}\n        backgroundColor={vars.semantic.color.surface}\n        borderRadius={vars.rounded.xlarge}\n        overflow=\"hidden\"\n        width={modalSizeMap[width]}\n        height={fullHeight ? \"100%\" : \"auto\"}\n        boxShadow={vars.dropShadow.modal}\n        animation={`${contentAnimation} 0.2s ease-out`}\n        native={{ role: \"dialog\", onClick: (e) => e.stopPropagation() }}\n      >\n        {children}\n      </Flex.Column>\n    );\n  },\n);\n","import { keyframes } from \"@emotion/react\";\nimport { vars } from \"@imwebme/clay-token\";\nimport type { ModalContainerProps } from \"./Modal.types\";\n\nexport const modalSizeMap = {\n  medium: \"540px\",\n  full: \"100%\",\n  large: \"720px\",\n  small: \"380px\",\n} satisfies Record<ModalContainerProps[\"width\"], string>;\n\nexport const overlayAnimation = keyframes`\n  from {\n    background-color: transparent;\n  }\n\n  to {\n    background: ${vars.semantic.color.backdrop};\n  }\n`;\n\nexport const contentAnimation = keyframes`\n    from {\n        transform: translateY(30px);\n        opacity: 0;\n    }\n\n    to {     \n        transform: translateY(0);\n        opacity: 1;\n    }\n`;\n","import { vars } from \"@imwebme/clay-token\";\nimport type { PropsWithChildren, Ref } from \"react\";\nimport { forwardRef } from \"react\";\nimport { Flex } from \"..\";\n\nexport const ModalFooter = forwardRef((props: PropsWithChildren, ref: Ref<HTMLDivElement>) => {\n  return (\n    <Flex.Column\n      ref={ref}\n      gap={vars.spacing[5]}\n      padding={`0 ${vars.spacing[6]} ${vars.spacing[4]}`}\n    >\n      {props.children}\n    </Flex.Column>\n  );\n});\n\nModalFooter.displayName = \"ModalFooter\";\n","import { vars } from \"@imwebme/clay-token\";\nimport type { Ref } from \"react\";\nimport { forwardRef } from \"react\";\nimport type { ModalHeaderProps } from \"..\";\nimport { Flex, Heading, IconButton } from \"..\";\nimport { useCloseModal } from \"./Modal.providers\";\n\nexport const ModalHeader = forwardRef(\n  (\n    {\n      type = \"leftAlign\",\n      title,\n      backButton,\n      closeButton,\n      onClickBackButton,\n      onClickCloseButton,\n      text,\n      subtle,\n    }: ModalHeaderProps,\n    ref: Ref<HTMLDivElement>,\n  ) => {\n    const setClose = useCloseModal();\n    const headingTextForDeprecated = title || text;\n\n    return (\n      <Flex.Column\n        position=\"relative\"\n        ref={ref}\n        padding={`${vars.spacing[4]} ${vars.spacing[4]} 0`}\n      >\n        {backButton && (\n          <IconButton\n            variant=\"secondary\"\n            size=\"small\"\n            icon={\n              // ArrowPrev\n              <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                width=\"16\"\n                height=\"16\"\n                viewBox=\"0 0 16 16\"\n                fill=\"none\"\n                color=\"inherit\"\n              >\n                <path\n                  d=\"M13.3334 8.00002H2.66669M2.66669 8.00002L8.00002 13.3334M2.66669 8.00002L8.00002 2.66669\"\n                  stroke=\"currentColor\"\n                  strokeWidth=\"1.2\"\n                  vectorEffect=\"non-scaling-stroke\"\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                />\n              </svg>\n            }\n            onClick={onClickBackButton}\n            sx={{\n              position: \"absolute\",\n              left: vars.spacing[4],\n            }}\n          />\n        )}\n\n        {headingTextForDeprecated && (\n          <Heading\n            size=\"xLarge\"\n            align={type === \"centerAlign\" ? \"center\" : \"default\"}\n            text={headingTextForDeprecated}\n            subtle={subtle}\n            sx={{\n              paddingTop: vars.spacing[type === \"leftAlign\" && backButton ? 10 : 2],\n              paddingLeft: vars.spacing[2],\n              paddingRight: vars.spacing[2],\n            }}\n          />\n        )}\n\n        {closeButton && (\n          <IconButton\n            variant=\"secondary\"\n            size=\"small\"\n            icon={\n              // XClose\n              <svg\n                width=\"16\"\n                height=\"16\"\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n                color=\"inherit\"\n              >\n                <path\n                  d=\"M18 6L6 18M6 6L18 18\"\n                  stroke=\"currentColor\"\n                  strokeWidth=\"1.2\"\n                  vectorEffect=\"non-scaling-stroke\"\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                />\n              </svg>\n            }\n            onClick={() => {\n              setClose();\n              onClickCloseButton?.();\n            }}\n            sx={{\n              position: \"absolute\",\n              right: vars.spacing[4],\n            }}\n          />\n        )}\n      </Flex.Column>\n    );\n  },\n);\n\nModalHeader.displayName = \"ModalHeader\";\n","import type { PropsWithChildren } from \"react\";\nimport { createContext, useContext } from \"react\";\n\nconst SetCloseModalContext = createContext<VoidFunction>(() => null);\n\nexport const ModalProvider = ({\n  setClose,\n  children,\n}: PropsWithChildren<{\n  setClose: VoidFunction;\n}>) => {\n  return <SetCloseModalContext.Provider value={setClose}>{children}</SetCloseModalContext.Provider>;\n};\n\nexport const useCloseModal = () => useContext(SetCloseModalContext);\n","/** @jsxImportSource @emotion/react */\n\nimport { vars } from \"@imwebme/clay-token\";\nimport type { PropsWithChildren } from \"react\";\nimport { useLayoutEffect, useRef } from \"react\";\nimport type { ModalProps } from \"..\";\nimport { Flex } from \"..\";\nimport { overlayAnimation } from \"./Modal.css\";\n\nexport const ModalOverlay = ({\n  children,\n  closeOnBackdrop,\n  setClose,\n}: PropsWithChildren<Pick<ModalProps, \"closeOnBackdrop\" | \"setClose\">>) => {\n  const ref = useRef<HTMLDivElement>(null);\n\n  useLayoutEffect(() => {\n    if (ref.current) ref.current.focus();\n  }, []);\n\n  return (\n    <Flex.Center\n      ref={ref}\n      position=\"fixed\"\n      top={0}\n      left={0}\n      right={0}\n      bottom={0}\n      zIndex=\"var(--clay-zIndex-modal)\"\n      padding=\"32px\"\n      background={vars.semantic.color.backdrop}\n      animation={`${overlayAnimation} 0.1s ease-out`}\n      native={{\n        tabIndex: -1,\n        onClick: () => {\n          if (closeOnBackdrop) {\n            setClose();\n          }\n        },\n      }}\n    >\n      {children}\n    </Flex.Center>\n  );\n};\n\nModalOverlay.displayName = \"ModalOverlay\";\n","import { useListenKeyboard, useScrollLock } from \"@imwebme/clay-hooks\";\nimport { Portal } from \"../../utilities\";\nimport { ModalOverlay } from \"../Modal.overlay\";\nimport { ModalProvider } from \"../Modal.providers\";\nimport { VisualModalBody } from \"./VisualModal.body\";\nimport { VisualModalContainer } from \"./VisualModal.container\";\nimport { VisualModalFooter } from \"./VisualModal.footer\";\nimport { VisualModalHeader } from \"./VisualModal.header\";\nimport type { VisualModalProps } from \"./VisualModal.types\";\nimport { VisualModalVisual } from \"./VisualModal.visual\";\n\nconst VisualModal = ({\n  closeOnEsc = true,\n  setClose,\n  isOpen,\n  closeOnBackdrop,\n  children,\n  width,\n}: VisualModalProps) => {\n  useScrollLock({ enable: isOpen });\n\n  useListenKeyboard({\n    key: \"Escape\",\n    handler: setClose,\n    enable: closeOnEsc,\n  });\n\n  return isOpen ? (\n    <Portal>\n      <ModalProvider setClose={setClose}>\n        <ModalOverlay closeOnBackdrop={closeOnBackdrop} setClose={setClose}>\n          <VisualModalContainer width={width}>{children}</VisualModalContainer>\n        </ModalOverlay>\n      </ModalProvider>\n    </Portal>\n  ) : null;\n};\n\nconst VisualModalNamespace = Object.assign(VisualModal, {\n  /**\n   * Clay가 wrapper이기 때문에, height, width 다양한 커스텀이 가능합니다.\n   */\n  Visual: VisualModalVisual,\n  Header: VisualModalHeader,\n  Body: VisualModalBody,\n  Footer: VisualModalFooter,\n});\n\nexport { VisualModalNamespace as VisualModal };\n","import { vars } from \"@imwebme/clay-token\";\nimport type { PropsWithChildren, Ref } from \"react\";\nimport { forwardRef } from \"react\";\nimport { Clay } from \"../../utilities\";\n\nexport const VisualModalBody = forwardRef((props: PropsWithChildren, ref: Ref<HTMLDivElement>) => {\n  return (\n    <Clay ref={ref} textAlign=\"center\" paddingLeft={vars.spacing[6]} paddingRight={vars.spacing[6]}>\n      {props.children}\n    </Clay>\n  );\n});\n\nVisualModalBody.displayName = \"VisualModalBody\";\n","import { vars } from \"@imwebme/clay-token\";\nimport type { Ref } from \"react\";\nimport { forwardRef } from \"react\";\nimport { Flex } from \"../../utilities\";\nimport { contentAnimation, modalSizeMap } from \"../Modal.css\";\nimport type { VisualModalContainerProps } from \"./VisualModal.types\";\n\nexport const VisualModalContainer = forwardRef(\n  ({ width, children }: VisualModalContainerProps, ref: Ref<HTMLDivElement>) => {\n    return (\n      <Flex.Column\n        ref={ref}\n        backgroundColor={vars.semantic.color.surface}\n        native={{ role: \"dialog\", onClick: (e) => e.stopPropagation() }}\n        borderRadius={vars.rounded.xlarge}\n        overflow=\"hidden\"\n        width={modalSizeMap[width]}\n        boxShadow={vars.dropShadow.modal}\n        animation={`${contentAnimation} 0.2s ease-out`}\n        gap={vars.spacing[6]}\n      >\n        {children}\n      </Flex.Column>\n    );\n  },\n);\n","import { vars } from \"@imwebme/clay-token\";\nimport type { PropsWithChildren, Ref } from \"react\";\nimport { forwardRef } from \"react\";\nimport { Flex } from \"../..\";\n\nexport const VisualModalFooter = forwardRef(\n  (props: PropsWithChildren, ref: Ref<HTMLDivElement>) => {\n    return (\n      <Flex.Column\n        ref={ref}\n        gap={vars.spacing[4]}\n        padding={`0 ${vars.spacing[6]} ${vars.spacing[4]}`}\n      >\n        {props.children}\n      </Flex.Column>\n    );\n  },\n);\n\nVisualModalFooter.displayName = \"VisualModalFooter\";\n","import { vars } from \"@imwebme/clay-token\";\nimport { Heading } from \"../../Heading\";\nimport type { HeadingProps } from \"../../Heading/Heading.types\";\n\nexport const VisualModalHeader = (props: Omit<HeadingProps, \"size\" | \"children\" | \"align\">) => {\n  return (\n    <Heading\n      align=\"center\"\n      size=\"large\"\n      sx={{\n        paddingLeft: vars.spacing[6],\n        paddingRight: vars.spacing[6],\n      }}\n      {...props}\n    />\n  );\n};\n","import type { ElementType, Ref } from \"react\";\nimport { forwardRef } from \"react\";\nimport type { ClayProps } from \"../../utilities\";\nimport { Clay } from \"../../utilities\";\n\nexport const _VisualModalVisual = <Element extends ElementType>(\n  { children, ...restClayProps }: ClayProps<Element>,\n  ref: Ref<HTMLElement>,\n) => {\n  return (\n    <Clay width=\"100%\" height=\"300px\" ref={ref} {...restClayProps}>\n      {children}\n    </Clay>\n  );\n};\n\nexport const VisualModalVisual = forwardRef(_VisualModalVisual);\n\nVisualModalVisual.displayName = \"VisualModalVisual\";\n"]}