{"version":3,"sources":["../../../src/Checkbox/CheckboxGroup/CheckboxGroup.tsx","../../../src/utilities/Clay/Clay.tsx","../../../src/utilities/Flex/Flex.tsx","../../../src/Label/Label.tsx","../../../src/Typography/Typography.tsx","../../../src/Checkbox/CheckboxGroup/CheckboxGroup.hooks.ts"],"names":["vars","forwardRef","jsx","Clay","_a","ref","_b","children","className","_hover","_active","_after","_before","_focus","size","width","height","shape","sx","as","native","props","__objRest","__spreadProps","__spreadValues","ClayNameSpace","_Flex","Flex","_FlexCenter","FlexCenter","_FlexColumn","FlexColumn","FlexNameSpace","jsxs","_Label","type","text","bold","Typography","Label","classNames","_Typography","semanticToken","variant","colorToken","whiteSpace","numOfLine","textAlign","CheckboxGroup","label","legend","direction","deprecatedLegend","useState","useCheckboxGroup","items","value","setValue","item","_value","onChangeChecked","checked","oldCheckedValues","oldValue","useIndeterminateCheckboxGroup","getCheckboxProps","isAllChecked"],"mappings":"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","sourcesContent":["import { vars } from \"@imwebme/clay-token\";\nimport { Label } from \"../..\";\nimport { Flex } from \"../../utilities/Flex\";\nimport type { CheckboxGroupProps } from \"./CheckboxGroup.types\";\n\nexport const CheckboxGroup = ({\n  label,\n  legend,\n  direction = \"column\",\n  sx,\n  children,\n}: CheckboxGroupProps) => {\n  const deprecatedLegend = legend || label;\n\n  return (\n    <Flex.Column as=\"fieldset\" gap={vars.spacing[1]} sx={sx}>\n      {deprecatedLegend && typeof deprecatedLegend === \"string\" ? (\n        <Label as=\"legend\" text={deprecatedLegend} />\n      ) : (\n        deprecatedLegend\n      )}\n\n      <Flex.Column flexDirection={direction} gap={vars.spacing[direction === \"column\" ? 1 : 6]}>\n        {children}\n      </Flex.Column>\n    </Flex.Column>\n  );\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","/** @jsxImportSource @emotion/react */\n\nimport { vars } from \"@imwebme/clay-token\";\nimport type { ElementType, Ref } from \"react\";\nimport { forwardRef } from \"react\";\nimport { Typography } from \"..\";\nimport type { LabelProps } from \"./Label.types\";\n\nconst _Label = <Element extends ElementType>(\n  { type = \"primary\", className, text, bold = true, sx, as, children }: LabelProps<Element>,\n  ref: Ref<HTMLElement>,\n) => {\n  const Element = as || \"label\";\n\n  return (\n    <Element\n      ref={ref as any}\n      className={className}\n      css={{\n        display: \"flex\",\n        gap: vars.spacing[1],\n        alignItems: \"center\",\n        sx,\n      }}\n    >\n      <Typography\n        variant={bold ? \"label-medium-bold\" : \"label-medium\"}\n        colorToken={type === \"primary\" ? \"text\" : \"textSub\"}\n      >\n        {text}\n      </Typography>\n\n      {children}\n    </Element>\n  );\n};\n\nexport const Label = forwardRef(_Label);\n\nLabel.displayName = \"Label\";\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 { useState } from \"react\";\nimport type { CheckboxProps } from \"..\";\nimport type { PickRequired } from \"../../types\";\nimport type { CheckboxLabelProps } from \"../Checkbox.types\";\n\n/**\n * @see https://clayground.vercel.app/components/checkbox/checkbox-group#usecheckboxgroup\n */\nexport const useCheckboxGroup = (items: PickRequired<CheckboxProps, \"value\">[] = []) => {\n  const [value, setValue] = useState(\n    items.map((item) => (item.checked ? item.value : undefined)).filter(Boolean),\n  );\n\n  const getCheckboxProps = ({\n    value: _value,\n    ...props\n  }: PickRequired<Omit<CheckboxLabelProps, \"onChangeChecked\" | \"checked\">, \"value\">): CheckboxLabelProps => {\n    const onChangeChecked = (checked: boolean) => {\n      if (checked) {\n        setValue((oldCheckedValues) => [...oldCheckedValues, _value]);\n\n        return;\n      }\n\n      setValue((oldCheckedValues) => oldCheckedValues.filter((oldValue) => oldValue !== _value));\n    };\n\n    const checked = value.includes(_value);\n\n    return {\n      ...props,\n      onChangeChecked,\n      checked,\n    };\n  };\n\n  return {\n    value,\n    setValue,\n    getCheckboxProps,\n  };\n};\n\n/**\n * @see https://clayground.vercel.app/components/checkbox/checkbox-group#useindeterminatecheckboxgroup\n */\nexport const useIndeterminateCheckboxGroup = (items: PickRequired<CheckboxLabelProps, \"value\">[]) => {\n  const { value, getCheckboxProps, setValue } = useCheckboxGroup(items);\n\n  const isAllChecked = items\n    .filter((item) => !item.disabled)\n    .every(({ value: _value }) => (value ? value.includes(_value) : false));\n\n  const toggleAllCheck = () => {\n    if (value.length > 0) {\n      setValue([]);\n      return;\n    }\n\n    setValue(items.filter((item) => !item.disabled).map((item) => item.value));\n  };\n\n  const getIndeterminateCheckboxProps = (props: CheckboxLabelProps) => {\n    return {\n      isIndeterminate: !isAllChecked,\n      checked: value.length > 0,\n      ...props,\n    };\n  };\n\n  return {\n    value,\n    getCheckboxProps,\n    toggleAllCheck,\n    isAllChecked,\n    getIndeterminateCheckboxProps,\n  };\n};\n"]}