@shoplflow/base 0.31.9 → 0.31.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/classnames@2.3.2/node_modules/classnames/index.js","../src/hooks/useDomain.ts","../src/portal/ModalPortal.tsx","../src/animation/fadeInOut.ts","../src/components/BackDrop/BackDrop.styled.ts","../src/components/BackDrop/BackDrop.tsx","../src/components/Avatar/Avatar.styled.ts","../src/components/Avatar/Avatar.tsx","../src/components/Avatar/Avatar.types.ts","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.styled.ts","../src/styles/tokens.ts","../src/components/StackContainer/StackContainer.tsx","../src/components/StackContainer/StackContainer.styled.ts","../src/components/Text/Text.tsx","../src/components/Text/Text.styled.ts","../src/components/Modal/ModalContainer.tsx","../src/components/Modal/Modal.styled.ts","../src/components/Modal/Modal.types.ts","../src/hooks/useViewportSizeObserver.ts","../src/components/Modal/ModalFooter.tsx","../src/components/Modal/ModalBody.tsx","../src/components/ScrollArea/ScrollArea.tsx","../src/components/Modal/ModalHeader.tsx","../src/components/Modal/hooks/useModalValue.ts","../src/components/Modal/providers/ModalContext.ts","../src/components/Modal/hooks/useHandleModal.ts","../src/components/Modal/providers/ModalProvider.tsx","../src/components/Modal/index.ts","../src/components/Switch/Switch.styled.ts","../src/hooks/useOnToggle.ts","../src/components/Switch/Switch.tsx","../src/components/Chips/ChipToggle/ChipToggle.types.ts","../src/components/Chips/ChipToggle/ChipToggle.styled.ts","../src/styles/utils/getDisabledStyle.ts","../src/components/Chips/ChipToggle/ChipToggle.tsx","../src/components/Chips/ChipButton/ChipButton.styled.ts","../src/utils/getNextColor.ts","../src/components/Chips/ChipButton/ChipButton.tsx","../src/components/Chips/ChipButton/ChipButton.types.ts","../src/components/Buttons/Button/Button.tsx","../src/components/Buttons/Button/Button.styled.tsx","../src/assets/LoadingSpinner.tsx","../src/components/Buttons/Button/Button.types.ts","../src/components/Buttons/IconButton/IconButton.tsx","../src/components/Buttons/IconButton/IconButton.styled.ts","../src/components/Buttons/IconButton/IconButton.types.ts","../src/components/Callout/Callout.styled.ts","../src/components/Callout/Callout.tsx","../src/components/Callout/Callout.types.ts","../src/components/Popper/index.ts","../src/components/Popper/Popper.tsx","../src/components/Popper/Popper.styled.ts","../src/components/Popper/usePopper.ts","../src/hooks/useMergeRef.ts","../src/components/Dropdown/Dropdown.tsx","../src/components/Dropdown/Dropdown.styled.ts","../src/components/Dropdown/useDropdown.ts","../src/components/Dropdown/DropdownButton.tsx","../src/components/Inputs/common/input.styled.ts","../src/components/Icon/Icon.tsx","../src/components/Icon/Icon.styled.ts","../src/components/Icon/Icon.types.ts","../src/components/Dropdown/DropdownContent.tsx","../src/components/Menu/Menu.tsx","../src/components/Menu/Menu.styled.ts","../src/components/ControlButtons/MinusButton/MinusButton.tsx","../src/components/ControlButtons/MinusButton/MinusButton.styled.ts","../src/components/ControlButtons/Checkbox/Checkbox.tsx","../src/components/ControlButtons/Checkbox/Checkbox.styled.ts","../src/components/ControlButtons/Checkbox/Checkbox.types.ts","../src/components/ControlButtons/Radio/Radio.tsx","../src/components/ControlButtons/Radio/Radio.styled.ts","../src/components/Menu/Menu.types.ts","../src/components/List/List.tsx","../src/components/List/List.styled.ts","../src/components/Tag/Tag.styled.ts","../src/components/Tag/Tag.tsx","../src/components/Tag/Tag.types.ts","../src/components/Tree/Tree.tsx","../src/components/Tree/Tree.styled.ts","../src/components/Tree/Tree.types.ts","../src/animation/AnimateKey.ts","../src/components/Inputs/Input/Input.tsx","../src/components/Inputs/Input/Input.styled.tsx","../src/components/Inputs/common/TextCounter.tsx","../src/styles/IconAssets.tsx","../.storybook/useStoryDomain.ts","../src/components/Inputs/Input/utils/getNumberLimiteRange.ts","../src/components/Inputs/InputButton/InputButton.tsx","../src/components/Inputs/InputButton/InputButton.styled.ts","../src/components/Inputs/TextArea/TextArea.tsx","../src/components/Inputs/TextArea/TextArea.styled.ts","../src/components/Inputs/SelectInputButton/SelectInputButton.tsx","../src/components/Inputs/SelectInputButton/SelectInputButton.styled.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/Tooltip.styled.ts","../src/components/Tooltip/TooltipContent.tsx","../src/components/Tabs/useTabs.ts","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/Tab.tsx","../src/components/Tabs/Tabs.styled.ts","../src/components/Tabs/Indicator.styled.ts","../src/components/Tabs/Indicator.tsx","../src/components/Tabs/Tabs.types.ts","../src/components/Pagination/Pagination.styled.ts","../src/components/Pagination/Pagination.tsx","../src/components/Pagination/PaginationSizeSelector.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/ToggleButton/ToggleButton.styled.ts","../src/components/ToggleButton/useToggleButton.ts","../src/components/ToggleButton/ToggleButton.types.ts","../src/components/Datepickers/DayDatepicker/DayDatepicker.styled.ts","../src/components/Datepickers/DayDatepicker/DayDatepicker.tsx","../src/components/Datepickers/stepper/Stepper.styled.tsx","../src/components/Datepickers/stepper/MonthStepper.tsx","../src/components/Datepickers/stepper/YearStepper.tsx","../src/components/Datepickers/stepper/YearSelect.tsx","../src/components/Datepickers/stepper/Year.styled.tsx","../src/components/Datepickers/DayDatepicker/DayDatepicker.types.ts","../src/components/Datepickers/MonthDatepicker/MonthDatepicker.tsx","../src/components/Datepickers/MonthDatepicker/MonthDatepicker.styled.ts","../src/components/Datepickers/AnnualDatepicker/AnnualDatepicker.tsx","../src/components/Datepickers/AnnualDatepicker/AnnualDatepicker.styled.ts","../src/components/Datepickers/WeekDatepicker/WeekDatepicker.tsx","../src/components/Datepickers/WeekDatepicker/WeekDatepicker.styled.ts","../src/components/Datepickers/helpers/week.ts","../src/portal/PopperPortal.tsx","../src/providers/ShoplflowProvider.tsx"],"names":["classNames","useContext","AnimatePresence","motion","styled","size","jsx","background","Stack","forwardRef","createStackComponent","React","css","useEffect","useState","useCallback","noop","useMemo","modal","removeModal","jsxs","getLineTypographyBySizeVar","getStyleBySizeVar","getStyleByStyleVar","offset","createContext","useMergeRefs","value","disabled","Container","IconButton","Fragment","RightElementWrapper","_a","useRef","_b","useId","flip","shift","LayoutGroup","DatePicker","LeftArrowIcon","RightArrowIcon","useOutsideClick","Header","Month","DatePickerWrapper","OptionList","date","Wrapper","startDate","endDate","getEachDateStyle","year","selectedYear","createPortal","PopperPortal"],"mappings":"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","sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { useEffect, useState } from 'react';\nimport type { DomainType } from '../types/Domain';\n\ntype UseDomainType = (domain?: DomainType) => [DomainType | undefined];\n\nexport const useDomain: UseDomainType = (domain = 'SHOPL') => {\n const [domainType, setDomainType] = useState<DomainType | undefined>(undefined);\n\n useEffect(() => {\n if (domain) {\n setDomainType(domain);\n }\n }, [domain]);\n\n useEffect(() => {\n if (!domainType) {\n return;\n }\n document.documentElement.dataset.shoplflow = domainType?.toLowerCase();\n }, [domainType]);\n\n return [domainType];\n};\n\nexport const getDomain = () => {\n return document.documentElement.dataset.shoplflow as Lowercase<DomainType>;\n};\n","import React, { useContext } from 'react';\nimport BackDrop from '../components/BackDrop/BackDrop';\nimport { createPortal } from 'react-dom';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport styled from '@emotion/styled';\nimport { ModalContext } from '../components';\n\nexport const SpaceMarginWrapper = styled(motion.div)`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n z-index: 101;\n //padding: 32px 20px;\n width: 100%;\n height: 100%;\n`;\n\nconst ModalPortal = () => {\n const modal = useContext(ModalContext);\n return (\n <>\n {createPortal(\n <AnimatePresence>\n {modal.map((item, index) => (\n <BackDrop key={index} zIndex={item.zIndex}>\n <SpaceMarginWrapper>{item.component}</SpaceMarginWrapper>\n </BackDrop>\n ))}\n </AnimatePresence>,\n document.body,\n )}\n </>\n );\n};\n\nexport default ModalPortal;\n","export const fadeInOut = {\n initial: {\n opacity: 0,\n },\n animate: {\n opacity: 1,\n transition: {\n duration: 0.1,\n },\n },\n exit: {\n opacity: 0,\n transition: {\n duration: 0.1,\n },\n },\n};\n","import styled from '@emotion/styled';\nimport { motion } from 'framer-motion';\n\nexport const BackDropStyled = styled(motion.div)<{ zIndex?: number }>`\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n top: 0;\n left: 0;\n z-index: ${({ zIndex }) => zIndex || 20000};\n width: 100%;\n height: 100%;\n background: rgba(51, 51, 51, 0.6);\n`;\n","import React from 'react';\nimport type { BackDropProps } from './BackDrop.types';\nimport { fadeInOut } from '../../animation/fadeInOut';\nimport { BackDropStyled } from './BackDrop.styled';\n\nconst BackDrop = ({ children, zIndex }: BackDropProps) => {\n return (\n <BackDropStyled\n variants={fadeInOut}\n initial={'initial'}\n animate={'animate'}\n exit={'exit'}\n data-shoplflow={'BackDrop'}\n zIndex={zIndex}\n >\n {children}\n </BackDropStyled>\n );\n};\n\nexport default BackDrop;\n","import styled from '@emotion/styled';\nimport type { AvatarOptionProps } from './Avatar.types';\n\nconst getSizeBySizeVariant = (size: AvatarOptionProps['sizeVar']) => {\n switch (size) {\n case 'XS':\n return '18px';\n case 'S':\n return '24px';\n case 'M':\n return '32px';\n case 'L':\n return '48px';\n case 'XL':\n return '72px';\n default:\n return '32px';\n }\n};\n\nexport const StyledAvatar = styled.picture<AvatarOptionProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${({ sizeVar }) => getSizeBySizeVariant(sizeVar)};\n height: ${({ sizeVar }) => getSizeBySizeVariant(sizeVar)};\n position: relative;\n overflow: hidden;\n border-radius: 50%;\n`;\n\nexport const StyledAvatarContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: fit-content;\n height: fit-content;\n position: relative;\n`;\n\nexport const StyledAvatarImage = styled.img`\n width: 100%;\n height: 100%;\n`;\n\nexport const StyledAvatarBadge = styled.div`\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n width: fit-content;\n height: fit-content;\n bottom: 0;\n right: 0;\n`;\n","import React from 'react';\nimport { StyledAvatar, StyledAvatarBadge, StyledAvatarContainer, StyledAvatarImage } from './Avatar.styled';\nimport type { AvatarProps } from './Avatar.types';\nimport AvatarImageNone from '../../assets/mocks/AvatarNone.png';\n\nconst Avatar = ({ src, badge, ...rest }: AvatarProps) => {\n return (\n <StyledAvatarContainer>\n <StyledAvatar data-shoplflow={'Avatar'} {...rest}>\n {/*eslint-disable-next-line @typescript-eslint/no-unsafe-assignment*/}\n <StyledAvatarImage src={(src ?? AvatarImageNone) as string} />\n </StyledAvatar>\n <StyledAvatarBadge>{badge}</StyledAvatarBadge>\n </StyledAvatarContainer>\n );\n};\n\nexport default Avatar;\n","import type { $Values } from '@shoplflow/utils';\nimport type { SizeVariantProps } from '../../utils/type/ComponentProps';\nimport type { ImgHTMLAttributes, ReactNode } from 'react';\n\nexport const AvatarSizeVariants = {\n XS: 'XS',\n S: 'S',\n M: 'M',\n L: 'L',\n XL: 'XL',\n} as const;\n\nexport type AvatarSizeVariantType = $Values<typeof AvatarSizeVariants>;\n\nexport interface AvatarProps extends AvatarOptionProps {}\nexport interface AvatarOptionProps\n extends SizeVariantProps<AvatarSizeVariantType>,\n ImgHTMLAttributes<HTMLImageElement> {\n /**\n * 아바타 우측 하단에 배지를 표시합니다.\n */\n badge?: ReactNode;\n}\n","import type { ComponentPropsWithRef } from 'react';\nimport React, { forwardRef } from 'react';\n\nimport { motion } from 'framer-motion';\n\nimport type { MotionStackComponentType, StackComponentType, StackGenericProps, StackProps } from './Stack.types';\n\nimport { StyledStack } from './Stack.styled';\nimport type { StringElementType } from '../../utils/type/ComponentProps';\n\n/**\n *\n * @param {StackProps} stackOption\n * @return {StackComponentType}\n */\nconst createStackComponent = (stackOption?: StackProps): StackComponentType =>\n forwardRef(function Stack<T extends StringElementType = 'div'>(\n {\n as = 'div',\n spacing = stackOption?.spacing,\n direction = stackOption?.direction ?? 'column',\n align = stackOption?.align ?? 'flex-start',\n justify = stackOption?.justify ?? 'flex-start',\n width = stackOption?.width ?? 'initial',\n height = stackOption?.height ?? 'initial',\n flexWrap = stackOption?.flexWrap ?? 'initial',\n flex = stackOption?.flex ?? 'initial',\n radius = stackOption?.radius,\n background = stackOption?.background,\n ...rest\n }: StackGenericProps<T>,\n ref: ComponentPropsWithRef<StringElementType>['ref'],\n ) {\n return (\n <StyledStack\n as={as}\n spacing={spacing}\n ref={ref}\n direction={direction}\n align={align}\n justify={justify}\n width={width}\n height={height}\n flexWrap={flexWrap}\n flex={flex}\n background={background}\n radius={radius}\n {...rest}\n data-shoplflow={'Stack'}\n >\n {rest.children}\n </StyledStack>\n );\n });\n\ninterface StackType extends StackComponentType {\n Vertical: StackComponentType;\n Horizontal: StackComponentType;\n}\n\nexport const Stack = createStackComponent() as StackType;\nStack.Vertical = createStackComponent({ direction: 'column' });\nStack.Horizontal = createStackComponent({ direction: 'row' });\n\ninterface MotionStackType extends MotionStackComponentType {\n Vertical: MotionStackComponentType;\n Horizontal: MotionStackComponentType;\n}\n\nexport const MotionStack = motion(Stack) as MotionStackType;\nMotionStack.Vertical = motion(Stack.Vertical);\nMotionStack.Horizontal = motion(Stack.Horizontal);\n\nexport default Stack;\n","import styled from '@emotion/styled';\n\nimport type { StackOptionProps } from './Stack.types';\nimport { borderRadiusTokens, colorTokens, spacingTokens } from '../../styles';\n\nexport const StyledStack = styled.div<StackOptionProps>`\n display: flex;\n width: ${({ width }) => width};\n max-width: ${({ maxWidth }) => maxWidth};\n min-width: ${({ minWidth }) => minWidth};\n height: ${({ height }) => height};\n max-height: ${({ maxHeight }) => maxHeight};\n min-height: ${({ minHeight }) => minHeight};\n flex-direction: ${({ direction }) => direction};\n align-items: ${({ align }) => align};\n justify-content: ${({ justify }) => justify};\n gap: ${({ spacing }) => spacing && spacingTokens[spacing]};\n flex-wrap: ${({ flexWrap }) => flexWrap};\n flex: ${({ flex }) => flex};\n background: ${({ background }) => (background ? colorTokens[background] : 'transparent')};\n border-radius: ${({ radius }) => radius && borderRadiusTokens[radius]};\n animation: 0.2s all ease-in-out;\n`;\n","/* Generate by scripts/generate-tokens.js */\n/* eslint-disable */\nconst fontWeightRegular = 'var(--font-weight-regular)';\nconst fontWeightMedium = 'var(--font-weight-medium)';\nconst fontWeightBold = 'var(--font-weight-bold)';\nexport const fontWeightTokens = {\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold,\n};\nconst borderRadius04 = 'var(--border-radius04)';\nconst borderRadius06 = 'var(--border-radius06)';\nconst borderRadius08 = 'var(--border-radius08)';\nconst borderRadius12 = 'var(--border-radius12)';\nconst borderRadius16 = 'var(--border-radius16)';\nconst borderRadius20 = 'var(--border-radius20)';\nexport const borderRadiusTokens = {\n borderRadius04,\n borderRadius06,\n borderRadius08,\n borderRadius12,\n borderRadius16,\n borderRadius20,\n};\nconst coolgray300 = 'var(--coolgray300)';\nconst coolgray200 = 'var(--coolgray200)';\nconst coolgray100 = 'var(--coolgray100)';\nconst coolgray50 = 'var(--coolgray50)';\nconst navy400 = 'var(--navy400)';\nconst navy300 = 'var(--navy300)';\nconst neutral0 = 'var(--neutral0)';\nconst neutral100 = 'var(--neutral100)';\nconst neutral150 = 'var(--neutral150)';\nconst neutral200 = 'var(--neutral200)';\nconst neutral300 = 'var(--neutral300)';\nconst neutral350 = 'var(--neutral350)';\nconst neutral400 = 'var(--neutral400)';\nconst neutral500 = 'var(--neutral500)';\nconst neutral600 = 'var(--neutral600)';\nconst neutral700 = 'var(--neutral700)';\nconst neutral400_5 = 'var(--neutral400_5)';\nconst red300 = 'var(--red300)';\nconst red200 = 'var(--red200)';\nconst red100 = 'var(--red100)';\nconst ocean300 = 'var(--ocean300)';\nconst ocean200 = 'var(--ocean200)';\nconst ocean100 = 'var(--ocean100)';\nconst purple400 = 'var(--purple400)';\nconst purple300 = 'var(--purple300)';\nconst purple100 = 'var(--purple100)';\nconst yellow300 = 'var(--yellow300)';\nconst yellow200 = 'var(--yellow200)';\nconst yellow100 = 'var(--yellow100)';\nconst green300 = 'var(--green300)';\nconst green200 = 'var(--green200)';\nconst green100 = 'var(--green100)';\nconst shopl400 = 'var(--shopl400)';\nconst shopl300 = 'var(--shopl300)';\nconst shopl200 = 'var(--shopl200)';\nconst shopl150 = 'var(--shopl150)';\nconst shopl100 = 'var(--shopl100)';\nconst hada400 = 'var(--hada400)';\nconst hada300 = 'var(--hada300)';\nconst hada200 = 'var(--hada200)';\nconst hada150 = 'var(--hada150)';\nconst hada100 = 'var(--hada100)';\nconst background = 'var(--background)';\nconst primary100 = 'var(--primary100)';\nconst primary150 = 'var(--primary150)';\nconst primary200 = 'var(--primary200)';\nconst primary300 = 'var(--primary300)';\nconst primary400 = 'var(--primary400)';\nexport const colorTokens = {\n coolgray300,\n coolgray200,\n coolgray100,\n coolgray50,\n navy400,\n navy300,\n neutral0,\n neutral100,\n neutral150,\n neutral200,\n neutral300,\n neutral350,\n neutral400,\n neutral500,\n neutral600,\n neutral700,\n neutral400_5,\n red300,\n red200,\n red100,\n ocean300,\n ocean200,\n ocean100,\n purple400,\n purple300,\n purple100,\n yellow300,\n yellow200,\n yellow100,\n green300,\n green200,\n green100,\n shopl400,\n shopl300,\n shopl200,\n shopl150,\n shopl100,\n hada400,\n hada300,\n hada200,\n hada150,\n hada100,\n background,\n primary100,\n primary150,\n primary200,\n primary300,\n primary400,\n};\nconst spacing02 = 'var(--spacing02)';\nconst spacing04 = 'var(--spacing04)';\nconst spacing06 = 'var(--spacing06)';\nconst spacing08 = 'var(--spacing08)';\nconst spacing12 = 'var(--spacing12)';\nconst spacing16 = 'var(--spacing16)';\nconst spacing20 = 'var(--spacing20)';\nconst spacing24 = 'var(--spacing24)';\nconst spacing30 = 'var(--spacing30)';\nconst spacing32 = 'var(--spacing32)';\nconst spacing40 = 'var(--spacing40)';\nexport const spacingTokens = {\n spacing02,\n spacing04,\n spacing06,\n spacing08,\n spacing12,\n spacing16,\n spacing20,\n spacing24,\n spacing30,\n spacing32,\n spacing40,\n};\nconst dropShadow = 'var(--dropShadow)';\nexport const boxShadowTokens = {\n dropShadow,\n};\nconst heading1_700 = '.heading1_700';\nconst heading1_400 = '.heading1_400';\nconst heading2_700 = '.heading2_700';\nconst heading2_400 = '.heading2_400';\nconst heading3_700 = '.heading3_700';\nconst heading3_400 = '.heading3_400';\nconst title1_700 = '.title1_700';\nconst title1_400 = '.title1_400';\nconst title2_700 = '.title2_700';\nconst title2_500 = '.title2_500';\nconst title2_400 = '.title2_400';\nconst body1_700 = '.body1_700';\nconst body1_500 = '.body1_500';\nconst body1_400 = '.body1_400';\nconst body2_700 = '.body2_700';\nconst body2_500 = '.body2_500';\nconst body2_400 = '.body2_400';\nconst body3_400 = '.body3_400';\nconst body3_500 = '.body3_500';\nconst caption_700 = '.caption_700';\nconst caption_400 = '.caption_400';\nconst paragraph1 = '.paragraph1';\nconst paragraph2 = '.paragraph2';\nexport const typographyTokens = {\n heading1_700,\n heading1_400,\n heading2_700,\n heading2_400,\n heading3_700,\n heading3_400,\n title1_700,\n title1_400,\n title2_700,\n title2_500,\n title2_400,\n body1_700,\n body1_500,\n body1_400,\n body2_700,\n body2_500,\n body2_400,\n body3_400,\n body3_500,\n caption_700,\n caption_400,\n paragraph1,\n paragraph2,\n};\n","import type { ComponentPropsWithRef } from 'react';\nimport React, { forwardRef } from 'react';\n\nimport { motion } from 'framer-motion';\n\nimport type {\n MotionStackContainerComponentType,\n StackContainerComponentType,\n StackContainerGenericProps,\n StackContainerProps,\n} from './StackContainer.types';\n\nimport { StyledStackContainer } from './StackContainer.styled';\nimport type { StringElementType } from '../../utils/type/ComponentProps';\n\n/**\n *\n * @param {StackContainerProps} stackOption\n * @return {StackContainerComponentType}\n */\nconst createStackComponent = (stackOption?: StackContainerProps): StackContainerComponentType =>\n forwardRef(function Stack<T extends StringElementType = 'div'>(\n {\n as = 'div',\n spacing = stackOption?.spacing,\n direction = stackOption?.direction ?? 'column',\n align = stackOption?.align ?? 'flex-start',\n justify = stackOption?.justify ?? 'flex-start',\n width = stackOption?.width ?? 'initial',\n height = stackOption?.height ?? 'initial',\n flexWrap = stackOption?.flexWrap ?? 'initial',\n flex = stackOption?.flex ?? 'initial',\n radius = stackOption?.radius,\n margin = stackOption?.margin ?? 'initial',\n padding = stackOption?.padding ?? 'initial',\n background = stackOption?.background,\n ...rest\n }: StackContainerGenericProps<T>,\n ref: ComponentPropsWithRef<StringElementType>['ref'],\n ) {\n return (\n <StyledStackContainer\n as={as}\n spacing={spacing}\n ref={ref}\n direction={direction}\n align={align}\n justify={justify}\n width={width}\n height={height}\n flexWrap={flexWrap}\n flex={flex}\n background={background}\n radius={radius}\n margin={margin}\n padding={padding}\n {...rest}\n data-shoplflow={'StackContainer'}\n >\n {rest.children}\n </StyledStackContainer>\n );\n });\n\ninterface StackContainerType extends StackContainerComponentType {\n Vertical: StackContainerComponentType;\n Horizontal: StackContainerComponentType;\n}\n\nexport const StackContainer = createStackComponent() as StackContainerType;\nStackContainer.Vertical = createStackComponent({ direction: 'column' });\nStackContainer.Horizontal = createStackComponent({ direction: 'row' });\n\ninterface MotionStackType extends MotionStackContainerComponentType {\n Vertical: MotionStackContainerComponentType;\n Horizontal: MotionStackContainerComponentType;\n}\n\nexport const MotionStackContainer = motion(StackContainer) as MotionStackType;\nMotionStackContainer.Vertical = motion(StackContainer.Vertical);\nMotionStackContainer.Horizontal = motion(StackContainer.Horizontal);\n\nexport default StackContainer;\n","import styled from '@emotion/styled';\n\nimport type { StackContainerOptionProps } from './StackContainer.types';\nimport { borderRadiusTokens, colorTokens, spacingTokens } from '../../styles';\n\nexport const StyledStackContainer = styled.div<StackContainerOptionProps>`\n display: flex;\n width: ${({ width }) => width};\n max-width: ${({ maxWidth }) => maxWidth};\n min-width: ${({ minWidth }) => minWidth};\n height: ${({ height }) => height};\n max-height: ${({ maxHeight }) => maxHeight};\n min-height: ${({ minHeight }) => minHeight};\n flex-direction: ${({ direction }) => direction};\n align-items: ${({ align }) => align};\n justify-content: ${({ justify }) => justify};\n gap: ${({ spacing }) => spacing && spacingTokens[spacing]};\n flex-wrap: ${({ flexWrap }) => flexWrap};\n flex: ${({ flex }) => flex};\n padding: ${({ padding }) => padding};\n margin: ${({ margin }) => margin};\n background: ${({ background }) => (background ? colorTokens[background] : 'transparent')};\n border-radius: ${({ radius }) => radius && borderRadiusTokens[radius]};\n animation: 0.2s all ease-in-out;\n`;\n","import type { ComponentPropsWithRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport type { TextProps } from './Text.types';\n\nimport { StyledText } from './Text.styled';\nimport type { StringElementType } from '../../utils/type/ComponentProps';\n\nconst Text = forwardRef(\n (\n {\n children,\n typography = 'body1_400',\n whiteSpace,\n color = 'neutral700',\n display = 'inline-block',\n textAlign = 'start',\n className,\n as,\n ...rest\n }: TextProps,\n ref: ComponentPropsWithRef<StringElementType>['ref'],\n ) => {\n return (\n <StyledText\n ref={ref}\n whiteSpace={whiteSpace}\n className={className ? `${typography} ${className}` : typography}\n color={color}\n display={display}\n textAlign={textAlign}\n as={as}\n {...rest}\n data-shoplflow={'Text'}\n >\n {children}\n </StyledText>\n );\n },\n);\n\nexport default Text;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\n\nimport type { TextOptionProps } from './Text.types';\nimport { colorTokens } from '../../styles';\n\nconst setEllipsis = (maxLines: number) => {\n return css`\n display: -webkit-box;\n line-clamp: ${maxLines};\n -webkit-line-clamp: ${maxLines};\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-all;\n text-overflow: ellipsis;\n `;\n};\n\nexport const StyledText = styled.span<TextOptionProps>`\n display: ${({ display }) => display && display};\n align-items: center;\n color: ${({ color }) => color && colorTokens[color]};\n ${({ lineClamp }) => lineClamp && setEllipsis(lineClamp)};\n text-align: ${({ textAlign }) => textAlign && textAlign};\n white-space: ${({ whiteSpace }) => whiteSpace && whiteSpace};\n ${({ textDecorations }) =>\n textDecorations &&\n css`\n text-decoration: ${textDecorations};\n `};\n ${({ opacity }) =>\n opacity &&\n css`\n opacity: ${opacity};\n `};\n ${({ wordBreak }) =>\n wordBreak &&\n css`\n word-break: ${wordBreak};\n `};\n`;\n","import type { ReactNode } from 'react';\nimport React from 'react';\n\nimport { Container } from './Modal.styled';\nimport type { ModalBodyProps, ModalContainerProps } from './Modal.types';\nimport { MODAL_FOOTER_KEY, MODAL_HEADER_KEY } from './Modal.types';\n\nimport { useParentElementClick, noop } from '@shoplflow/utils';\nimport { useViewportSizeObserver } from '../../hooks/useViewportSizeObserver';\n\nconst ModalContainer = ({ children, height, outsideClick = noop, ...rest }: ModalContainerProps) => {\n const ref = useParentElementClick<HTMLDivElement>(outsideClick);\n const { height: windowHeight } = useViewportSizeObserver();\n const topBottomMargin = 64;\n const heightWidthMargin = height ? height + topBottomMargin : undefined;\n\n const childrenArray = React.Children.toArray(children) as ReactNode[];\n\n const findHeader = childrenArray.find((child: ReactNode) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Symbol 타입을 직접 할당하여 Header를 감지하기 때문에 무시\n if (child.type[MODAL_HEADER_KEY]) {\n return child;\n }\n });\n\n const findFooter = childrenArray.find((child: ReactNode) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Symbol 타입을 직접 할당하여 Footer를 감지하기 때문에 무시\n if (child.type[MODAL_FOOTER_KEY]) {\n return child;\n }\n });\n\n const addPropInChildren = React.Children.map(childrenArray, (child: ReactNode) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n\n return React.cloneElement(child, {\n isIncludeHeader: Boolean(findHeader),\n isIncludeFooter: Boolean(findFooter),\n sizeVar: rest.sizeVar,\n height: heightWidthMargin,\n } as React.HTMLAttributes<HTMLElement> & ModalBodyProps);\n });\n\n return (\n <Container ref={ref} {...rest} height={heightWidthMargin} viewport={windowHeight} data-shoplflow={'Modal'}>\n {addPropInChildren}\n </Container>\n );\n};\n\nexport default ModalContainer;\n","import styled from '@emotion/styled';\nimport type { ModalContainerProps } from './Modal.types';\nimport { css } from '@emotion/react';\nimport { borderRadiusTokens, colorTokens } from '../../styles';\nimport { boxShadowTokens } from '../../styles/tokens';\n\nconst MODAL_SIZE_XXS = 400;\nconst MODAL_SIZE_XS = 500;\nconst MODAL_SIZE_S = 560;\nconst MODAL_SIZE_M = 640;\nconst MODAL_SIZE_L = 768;\nconst MODAL_SIZE_XL = 1040;\nconst MODAL_SIZE_XXL = 1280;\nconst MODAL_SIZE_XXXL = 1600;\n\nconst getModalWidthFromSize = (size: ModalContainerProps['sizeVar']) => {\n switch (size) {\n case 'XXS':\n return MODAL_SIZE_XXS;\n case 'XS':\n return MODAL_SIZE_XS;\n case 'S':\n return MODAL_SIZE_S;\n case 'M':\n return MODAL_SIZE_M;\n case 'L':\n return MODAL_SIZE_L;\n case 'XL':\n return MODAL_SIZE_XL;\n case 'XXL':\n return MODAL_SIZE_XXL;\n case 'XXXL':\n return MODAL_SIZE_XXXL;\n default:\n return MODAL_SIZE_M;\n }\n};\n\nconst getModalBodyTopBottomPadding = (isIncludeHeader: boolean, sizeVar: ModalContainerProps['sizeVar']) => {\n if (sizeVar === 'FULL') {\n return css`\n padding-top: 0;\n padding-bottom: 0;\n `;\n }\n if (isIncludeHeader) {\n return css`\n padding-top: 16px;\n padding-bottom: 24px;\n `;\n }\n return css`\n padding-top: 24px;\n padding-bottom: 24px;\n `;\n};\n\nconst getFullScreenModal = () => {\n return css`\n min-height: 100vh;\n max-height: 100vh;\n width: 100vw;\n max-width: 100vw;\n border-radius: 0;\n box-shadow: none;\n `;\n};\n\nconst checkMaxHeight = (height: number, viewport: number) => {\n const topBottomMargin = 64;\n if (height > 1200) {\n return 1200 - topBottomMargin;\n }\n if (height > viewport) {\n return viewport - topBottomMargin;\n }\n return height - topBottomMargin;\n};\n\nexport const Container = styled.div<\n ModalContainerProps & {\n viewport: number;\n }\n>`\n display: flex;\n flex-direction: column;\n border-radius: ${borderRadiusTokens.borderRadius08};\n background: ${colorTokens.neutral0};\n box-shadow: ${boxShadowTokens.dropShadow};\n overflow: hidden;\n flex-grow: 1;\n height: ${({ height, viewport }) => (height ? `${checkMaxHeight(height, viewport)}px` : 'initial')};\n min-height: 180px;\n max-height: 1200px;\n\n width: ${({ sizeVar }) => getModalWidthFromSize(sizeVar)}px;\n max-width: ${({ sizeVar }) => getModalWidthFromSize(sizeVar)}px;\n ${({ sizeVar }) =>\n sizeVar &&\n window.innerWidth <= getModalWidthFromSize(sizeVar) + 40 &&\n css`\n width: ${window.innerWidth - 40}px;\n max-width: ${window.innerWidth - 40}px;\n `};\n ${({ sizeVar }) => sizeVar === 'FULL' && getFullScreenModal()};\n`;\n\nexport const HeaderContainer = styled.div`\n display: flex;\n width: 100%;\n min-height: 64px;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px 12px 24px;\n gap: 10px;\n`;\n\nexport const BodyContainer = styled.div<{\n isIncludeHeader: boolean;\n minHeight: string | number;\n maxHeight: string | number;\n sizeVar: ModalContainerProps['sizeVar'];\n}>`\n display: flex;\n width: 100%;\n height: 100%;\n overflow: hidden;\n flex-direction: column;\n background: ${colorTokens.neutral0};\n box-sizing: border-box;\n min-height: ${({ minHeight }) => minHeight}px;\n max-height: ${({ maxHeight }) => maxHeight}px;\n flex: 1;\n ${({ isIncludeHeader, sizeVar }) => getModalBodyTopBottomPadding(isIncludeHeader, sizeVar)};\n`;\n\nexport const ModalBodyContainerInner = styled.div`\n display: grid;\n align-self: stretch;\n flex-direction: column;\n flex-grow: 1;\n //스크롤 생성시 하단 padding 적용하기 위한 설정\n height: 100%;\n box-sizing: border-box;\n`;\n\nexport const ModalBodyContent = styled.div<{\n isIncludeHeader: boolean;\n sizeVar: ModalContainerProps['sizeVar'];\n}>`\n display: flex;\n flex-direction: column;\n height: 100%;\n box-sizing: border-box;\n padding: 0 24px;\n ${({ sizeVar }) =>\n sizeVar === 'FULL' &&\n css`\n padding: 0;\n `};\n background: ${colorTokens.neutral0};\n`;\n\nexport const FooterContainer = styled.div`\n display: flex;\n width: 100%;\n flex-direction: row;\n align-items: center;\n justify-content: flex-end;\n padding: 16px 24px;\n gap: 12px;\n border-top: 1px solid ${colorTokens.neutral300};\n background: ${colorTokens.neutral0};\n`;\n","import type { ChildrenProps, SizeVariantProps } from '../../utils/type/ComponentProps';\nimport type { $Values } from '@shoplflow/utils';\nexport const ModalSize = {\n XXS: 'XXS',\n XS: 'XS',\n S: 'S',\n M: 'M',\n L: 'L',\n XL: 'XL',\n XXL: 'XXL',\n XXXL: 'XXXL',\n FULL: 'FULL',\n} as const;\n\nexport type ModalSizeType = $Values<typeof ModalSize>;\n\n// Modal Container\n\nexport interface ModalContainerProps extends ModalContainerOptionProps, SizeVariantProps<ModalSizeType> {\n children?: React.ReactNode | React.ReactNode[];\n}\n\nexport interface ModalContainerOptionProps {\n /**\n * 모달의 높이를 설정합니다.\n */\n height?: number;\n /**\n * 모달의 외부를 클릭했을 때 실행되는 함수입니다.\n * @param args\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n outsideClick?: (args?: any) => void;\n}\n\n// Modal Header\nexport interface ModalHeaderProps extends ModalHeaderOptionProps, ChildrenProps {}\nexport interface ModalHeaderOptionProps {}\n\nexport const MODAL_HEADER_KEY = Symbol('MODAL_HEADER');\nexport interface ModalHeaderType extends React.FC<ModalHeaderProps> {\n [MODAL_HEADER_KEY]?: boolean;\n}\n\n// Modal Body\nexport interface ModalBodyProps extends ModalBodyOptionProps, ChildrenProps {}\nexport interface ModalBodyOptionProps {\n isIncludeHeader?: boolean;\n isIncludeFooter?: boolean;\n height?: number;\n sizeVar?: ModalSizeType;\n}\n// Modal Footer\nexport interface ModalFooterProps extends ModalFooterOptionProps, ChildrenProps {}\nexport interface ModalFooterOptionProps {}\nexport const MODAL_FOOTER_KEY = Symbol('MODAL_FOOTER');\nexport interface ModalFooterType extends React.FC<ModalBodyProps> {\n [MODAL_FOOTER_KEY]?: boolean;\n}\n","import { useEffect, useState } from 'react';\n\nexport const useViewportSizeObserver = () => {\n const [size, setSize] = useState({ width: window.innerWidth, height: window.innerHeight });\n\n useEffect(() => {\n const handleResize = () => {\n setSize({ width: window.innerWidth, height: window.innerHeight });\n };\n\n window.addEventListener('resize', handleResize);\n\n // 컴포넌트가 언마운트 될 때 이벤트 리스너 제거\n return () => window.removeEventListener('resize', handleResize);\n }, []); // 빈 의존성 배열을 사용하여 마운트시에만 이벤트 리스너를 추가\n\n return size;\n};\n","import React from 'react';\nimport { FooterContainer } from './Modal.styled';\nimport type { ModalFooterProps, ModalFooterType } from './Modal.types';\nimport { MODAL_FOOTER_KEY } from './Modal.types';\n\nconst ModalFooter: ModalFooterType = ({ children }: ModalFooterProps) => {\n return <FooterContainer>{children}</FooterContainer>;\n};\n\nModalFooter[MODAL_FOOTER_KEY] = true;\n\nexport default ModalFooter;\n","import React, { useCallback, useMemo } from 'react';\nimport { BodyContainer, ModalBodyContainerInner, ModalBodyContent } from './Modal.styled';\nimport type { ModalBodyProps } from './Modal.types';\nimport { ScrollArea } from '../ScrollArea';\nimport { useViewportSizeObserver } from '../../hooks/useViewportSizeObserver';\n\nconst ModalBody = ({\n children,\n isIncludeHeader = false,\n isIncludeFooter = false,\n sizeVar,\n height: modalContainerHeight,\n}: ModalBodyProps) => {\n const { height: windowHeight } = useViewportSizeObserver();\n\n const headerHeight = 64;\n const footerHeight = 72;\n\n const topBottomMargin = 64;\n const getHeaderFooterHeight = useCallback(() => {\n let result = 0;\n if (isIncludeHeader) {\n result += headerHeight;\n }\n if (isIncludeFooter) {\n result += footerHeight;\n }\n return result;\n }, [isIncludeFooter, isIncludeHeader]);\n\n const headerFooterHeight = useMemo(() => getHeaderFooterHeight(), [getHeaderFooterHeight]);\n\n const setAutoHeightMin = () => {\n if (sizeVar === 'FULL') {\n return windowHeight - headerFooterHeight;\n }\n if (modalContainerHeight) {\n if (modalContainerHeight <= 1200) {\n if (windowHeight < modalContainerHeight) {\n return windowHeight - topBottomMargin - headerFooterHeight;\n }\n return modalContainerHeight - topBottomMargin - headerFooterHeight;\n }\n return modalContainerHeight - topBottomMargin - headerFooterHeight;\n } else {\n return '100%';\n }\n };\n\n const setAutoHeightMax = () => {\n if (sizeVar === 'FULL') {\n return windowHeight;\n }\n if (modalContainerHeight) {\n if (modalContainerHeight > 1200) {\n return 1200 - topBottomMargin - headerFooterHeight;\n }\n if (modalContainerHeight <= 1200) {\n if (windowHeight < modalContainerHeight) {\n return windowHeight - topBottomMargin - headerFooterHeight;\n }\n return modalContainerHeight - topBottomMargin - headerFooterHeight;\n }\n }\n if (!modalContainerHeight) {\n const heightUnderMaxHeight = windowHeight - topBottomMargin - headerFooterHeight;\n\n const heightOverMaxHeight = 1200 - topBottomMargin - headerFooterHeight;\n\n return windowHeight > 1200 ? heightOverMaxHeight : heightUnderMaxHeight;\n }\n return 0;\n };\n\n const setContentHeightMax = () => {\n let autoHeightMax = setAutoHeightMax();\n\n // Content top padding 빼주기\n autoHeightMax = autoHeightMax - 24;\n\n if (isIncludeHeader) {\n autoHeightMax = autoHeightMax - 24;\n }\n\n if (!isIncludeHeader) {\n autoHeightMax = autoHeightMax - 16;\n }\n\n return autoHeightMax;\n };\n\n return (\n <BodyContainer\n isIncludeHeader={isIncludeHeader}\n sizeVar={sizeVar}\n minHeight={setAutoHeightMin()}\n maxHeight={setAutoHeightMax()}\n >\n <ScrollArea\n id={`scrollbar`}\n universal\n autoHeight={!modalContainerHeight}\n autoHeightMin={setAutoHeightMin()}\n autoHeightMax={setContentHeightMax()}\n style={{}}\n >\n <ModalBodyContainerInner>\n <ModalBodyContent isIncludeHeader={isIncludeHeader} sizeVar={sizeVar}>\n {children}\n </ModalBodyContent>\n </ModalBodyContainerInner>\n </ScrollArea>\n </BodyContainer>\n );\n};\n\nexport default ModalBody;\n","import React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\nimport type { ScrollAreaProps, ScrollbarRefType } from './ScrollArea.types';\nimport Scrollbars from 'react-custom-scrollbars-2';\nimport { useMergeRefs } from '@shoplflow/utils';\n\nconst ScrollArea = forwardRef<ScrollbarRefType, ScrollAreaProps>(({ children, ...rest }, ref) => {\n const scrollRef = useRef<ScrollbarRefType>(null);\n\n const mergeRef = useMergeRefs(scrollRef, ref);\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n const [windowHeight, setWindowHeight] = useState(window.innerHeight);\n\n const onResize = useCallback(() => {\n setWindowWidth(window.innerWidth);\n setWindowHeight(window.innerHeight);\n }, []);\n\n useEffect(() => {\n window.addEventListener('resize', onResize);\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [onResize]);\n return (\n <>\n {Boolean(windowWidth) && Boolean(windowHeight) && (\n <Scrollbars\n ref={mergeRef}\n autoHide\n autoHideTimeout={1000}\n autoHideDuration={200}\n {...rest}\n data-shoplflow={'ScrollArea'}\n >\n {children}\n </Scrollbars>\n )}\n </>\n );\n});\n\nexport default ScrollArea;\n","import React from 'react';\nimport type { ModalHeaderProps, ModalHeaderType } from './Modal.types';\nimport { HeaderContainer } from './Modal.styled';\nimport { MODAL_HEADER_KEY } from './Modal.types';\n\nconst ModalHeader: ModalHeaderType = ({ children }: ModalHeaderProps) => {\n return <HeaderContainer>{children}</HeaderContainer>;\n};\n\nModalHeader[MODAL_HEADER_KEY] = true;\n\nexport default ModalHeader;\n","import { useContext } from 'react';\nimport { ModalContext } from '../providers/ModalContext';\n\nexport const useModalValue = () => {\n // const modal = useModalStore((state) => state.modal);\n\n const modal = useContext(ModalContext);\n return {\n modal,\n };\n};\n","import type { ReactNode } from 'react';\nimport { createContext } from 'react';\nimport { noop } from '@shoplflow/utils';\n\nexport type ModalStateType = {\n component: ReactNode;\n id?: string;\n /**\n * custom zIndex를 넣어주세요\n */\n zIndex?: number;\n};\nexport type RemoveModalProps = {\n id?: string;\n deps?: number;\n};\nexport type ModalContext = ModalStateType[];\n\nexport type ModalHandlerContext = {\n addModal: (modal: ReactNode, id?: string, zIndex?: number) => void;\n removeModal: (props?: RemoveModalProps) => void;\n};\n\nexport const ModalHandlerContext = createContext<ModalHandlerContext>({\n addModal: noop,\n removeModal: noop,\n});\n\nexport const ModalContext = createContext<ModalContext>([]);\n","import { useContext } from 'react';\nimport { ModalHandlerContext } from '../providers/ModalContext';\n\nexport const useHandleModal = () => {\n // const addModal = useModalStore((state) => state.addModal);\n // const removeModal = useModalStore((state) => state.removeModal);\n const { addModal, removeModal } = useContext(ModalHandlerContext);\n\n return {\n addModal,\n removeModal,\n };\n};\n","import type { ReactNode } from 'react';\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { isNullOrUndefined } from '@shoplflow/utils';\nimport type { RemoveModalProps } from './ModalContext';\nimport { ModalHandlerContext, ModalContext } from './ModalContext';\n\ninterface ModalProviderProps {\n children?: ReactNode;\n}\n\nconst ModalProvider = ({ children }: ModalProviderProps) => {\n const [openedModals, setOpenedModals] = useState<ModalContext>([]);\n\n const addModal = (component: ReactNode, id?: string, zIndex?: number) => {\n setOpenedModals((modals) => {\n if (modals) {\n return [...modals, { component, id, zIndex }];\n }\n return [{ component, id, zIndex }];\n });\n };\n\n const removeModal = (props?: RemoveModalProps) => {\n const { id, deps } = props || {\n id: undefined,\n deps: undefined,\n };\n\n const isIncludeAllProps = Boolean(id && deps);\n const isIncludeId = Boolean(id);\n const isNotIncludeAllProps = !id && Boolean(isNullOrUndefined(deps));\n const isIncludeDeps = Boolean(Boolean(!isNullOrUndefined(deps)) && !id);\n\n if (isIncludeAllProps) {\n throw new Error('id와 deps는 동시에 사용할 수 없습니다.');\n }\n\n if (isIncludeId) {\n setOpenedModals((modal) => {\n const filterModal = modal.filter((modal) => modal.id !== id);\n return [...filterModal];\n });\n return;\n }\n\n if (isNotIncludeAllProps || deps === 1) {\n setOpenedModals((modal) => {\n const removeModal = modal.slice(0, -1);\n return [...removeModal];\n });\n return;\n }\n\n if (isIncludeDeps) {\n if (deps === 0 || deps === undefined) {\n return;\n }\n setOpenedModals((modal) => {\n const removeDeps = modal.slice(0, -deps);\n return [...removeDeps];\n });\n return;\n }\n };\n const dispatch = useMemo(() => ({ addModal, removeModal }), []);\n\n useEffect(() => {\n if (openedModals.length !== 1) {\n return;\n }\n\n document.body.style.cssText = 'overflow:hidden';\n return () => {\n document.body.style.cssText = 'overflow:unset';\n };\n }, [openedModals.length]);\n\n useEffect(() => {\n const closeAllModals = () => {\n setOpenedModals([]);\n };\n\n window.addEventListener('popstate', closeAllModals);\n\n return () => {\n window.removeEventListener('popstate', closeAllModals);\n };\n }, []);\n\n return (\n <ModalContext.Provider value={openedModals}>\n <ModalHandlerContext.Provider value={dispatch}>{children}</ModalHandlerContext.Provider>\n </ModalContext.Provider>\n );\n};\n\nexport default ModalProvider;\n","// SHOPLFLOW_DOCS_IGNORE\nimport ModalContainer from './ModalContainer';\nimport ModalFooter from './ModalFooter';\nimport ModalBody from './ModalBody';\nimport ModalHeader from './ModalHeader';\n\nexport const Modal = {\n Container: ModalContainer,\n Header: ModalHeader,\n Body: ModalBody,\n Footer: ModalFooter,\n};\n\nexport * from './Modal.types';\n\nexport * from './hooks/useModalValue';\nexport * from './hooks/useHandleModal';\n\nexport * from './providers/ModalContext';\nexport * from './providers/ModalProvider';\n","import styled from '@emotion/styled';\nimport type { ColorTokens } from '../../styles';\nimport { colorTokens } from '../../styles';\n\nexport const SwitchContainer = styled.div<{ isDisabled: boolean }>`\n width: 32px;\n height: 32px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: ${({ isDisabled }) => isDisabled && 0.3};\n\n &:hover {\n background: ${({ isDisabled }) => !isDisabled && colorTokens.neutral400_5};\n }\n`;\n\nexport const StyledSwitch = styled.input<{ activeColor: ColorTokens }>`\n appearance: none;\n border: none;\n border-radius: 12px;\n width: 28px;\n height: 18px;\n cursor: pointer;\n position: relative;\n display: flex;\n align-items: center;\n background: ${colorTokens.neutral350};\n padding: 2px;\n margin: 0;\n\n // slider\n &:before {\n content: '';\n left: 2px;\n display: block;\n position: absolute;\n width: 14px;\n height: 14px;\n background: ${colorTokens.neutral0};\n border-radius: 50%;\n transition: left 0.2s ease-in-out;\n }\n\n // selected\n &:checked {\n background: ${({ activeColor }) => colorTokens[activeColor]};\n &:before {\n left: 12px;\n }\n }\n\n // disabled\n &:disabled {\n cursor: auto;\n }\n`;\n","import { useEffect, useState } from 'react';\n\n/**\n * toggle 기능을 추상화한 hook입니다.\n * selected, defaultSelected를 받아서 토글을 관리하는 hook입니다.\n * selected가 있으면 controlled, 없으면 uncontrolled로 동작합니다.\n * defaultSelected가 있으면 초기값으로 설정됩니다.\n * @param {boolean} selected\n * @param {boolean} defaultSelected\n * @return {[boolean, (() => void)]}\n */\n\nexport type UseOnToggle = (selected?: boolean, defaultSelected?: boolean) => [boolean, () => void];\n\nexport const useOnToggle: UseOnToggle = (selected, defaultSelected) => {\n const [isToggle, setIsToggle] = useState(false);\n const isControlled = selected !== undefined;\n\n const handleToggle = () => {\n !isControlled && setIsToggle((prev) => !prev);\n };\n\n useEffect(() => {\n if (isControlled) {\n setIsToggle(selected);\n }\n }, [isControlled, selected]);\n\n useEffect(() => {\n if (!isControlled && defaultSelected !== undefined) {\n setIsToggle(defaultSelected);\n }\n }, [defaultSelected, isControlled]);\n\n return [isToggle, handleToggle];\n};\n","import type { ChangeEvent } from 'react';\nimport React from 'react';\nimport { StyledSwitch, SwitchContainer } from './Switch.styled';\nimport type { SwitchProps } from './Switch.types';\nimport { useOnToggle } from '../../hooks/useOnToggle';\n\nconst Switch = ({\n onChange,\n isSelected,\n disabled = false,\n activeColor = 'primary300',\n defaultSelected = false,\n ...rest\n}: SwitchProps) => {\n const [isToggled, handleToggle] = useOnToggle(isSelected, defaultSelected);\n\n const handleOnChange = (e: ChangeEvent<HTMLInputElement>) => {\n handleToggle();\n onChange && onChange(e);\n };\n\n return (\n <SwitchContainer isDisabled={disabled}>\n <StyledSwitch\n type='checkbox'\n checked={isToggled}\n disabled={disabled}\n onChange={handleOnChange}\n activeColor={activeColor}\n {...rest}\n data-shoplflow={'Switch'}\n />\n </SwitchContainer>\n );\n};\nexport default Switch;\n","import type { $Values } from '@shoplflow/utils';\nimport type {\n ColorTokenProps,\n SizeVariantProps,\n StyleVariantProps,\n LeftAndRightElementProps,\n TextProps,\n SelectedProps,\n RadiusBooleanProps,\n DefaultSelectedProps,\n DisableProps,\n} from '../../../utils/type/ComponentProps';\nimport type { HTMLAttributes } from 'react';\n\nexport const ChipToggleStyleVariants = {\n SOLID: 'SOLID',\n} as const;\n\nexport const ChipToggleSizeVariants = {\n S: 'S',\n XS: 'XS',\n} as const;\n\nexport type ChipToggleStyleVariantType = $Values<typeof ChipToggleStyleVariants>;\nexport type ChipToggleSizeVariantType = $Values<typeof ChipToggleSizeVariants>;\n\nexport interface ChipToggleProps\n extends ChipToggleOptionProps,\n SelectedProps,\n DefaultSelectedProps,\n ColorTokenProps,\n StyleVariantProps<ChipToggleStyleVariantType>,\n SizeVariantProps<ChipToggleSizeVariantType>,\n LeftAndRightElementProps,\n RadiusBooleanProps,\n TextProps,\n DisableProps,\n Omit<HTMLAttributes<HTMLButtonElement>, 'color'> {}\nexport interface ChipToggleOptionProps {}\n","import styled from '@emotion/styled';\nimport { css } from '@emotion/react';\nimport type { ChipToggleProps } from './ChipToggle.types';\nimport type { TypographyTokens } from '../../../styles';\nimport { borderRadiusTokens, colorTokens } from '../../../styles';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\n\nexport const getLineTypographyBySizeVar = (sizeVar: ChipToggleProps['sizeVar']): TypographyTokens => {\n switch (sizeVar) {\n case 'XS':\n return 'body3_400';\n case 'S':\n return 'body2_400';\n default:\n return 'body2_400';\n }\n};\n\nconst solidStyle = ({\n isSelected,\n color,\n $radius,\n}: ChipToggleProps & {\n $radius?: boolean;\n}) => css`\n padding: 7px 12px;\n gap: 4px;\n background: ${colorTokens.neutral150};\n border-radius: ${borderRadiusTokens.borderRadius06};\n & > span {\n color: ${colorTokens.neutral400};\n }\n &:hover {\n background: ${colorTokens.neutral200};\n }\n\n ${$radius &&\n css`\n border-radius: ${borderRadiusTokens.borderRadius16};\n `};\n ${isSelected &&\n css`\n background: ${colorTokens[color!]};\n & > span {\n color: ${colorTokens['neutral0']};\n }\n &:hover {\n background: ${colorTokens[color!]};\n }\n `};\n`;\n\nexport const StyledChip = styled.button<\n ChipToggleProps & {\n $radius?: boolean;\n }\n>`\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n height: fit-content;\n width: fit-content;\n user-select: none;\n cursor: pointer;\n ${(props) => props.styleVar === 'SOLID' && solidStyle(props)};\n ${({ disabled }) => getDisabledStyle(disabled)};\n`;\n","import { css } from '@emotion/react';\n\nexport const getDisabledStyle = (disabled?: boolean) => {\n if (!disabled) {\n return;\n }\n\n return css`\n opacity: 50%;\n cursor: not-allowed !important;\n `;\n};\n","import type { MouseEvent } from 'react';\nimport React from 'react';\n\nimport { Text } from '../../Text';\n\nimport { useOnToggle } from '../../../hooks/useOnToggle';\nimport type { ChipToggleProps } from './ChipToggle.types';\nimport { ChipToggleStyleVariants } from './ChipToggle.types';\nimport { getLineTypographyBySizeVar, StyledChip } from './ChipToggle.styled';\nimport { noop } from '@shoplflow/utils';\n\nconst ChipToggle = ({\n text,\n isSelected,\n defaultSelected,\n color = 'neutral600',\n radius,\n styleVar = ChipToggleStyleVariants.SOLID,\n sizeVar,\n leftSource,\n rightSource,\n onClick = noop,\n disabled = false,\n ...rest\n}: ChipToggleProps) => {\n const [isToggled, handleToggle] = useOnToggle(isSelected, defaultSelected);\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n !disabled && handleToggle();\n !disabled && onClick && onClick(e);\n };\n\n return (\n <StyledChip\n {...rest}\n color={color}\n $radius={radius}\n isSelected={isToggled}\n styleVar={styleVar}\n sizeVar={sizeVar}\n onClick={handleClick}\n disabled={disabled}\n data-shoplflow={'ChipToggle'}\n >\n {leftSource}\n <Text typography={getLineTypographyBySizeVar(sizeVar)}>{text}</Text>\n {rightSource}\n </StyledChip>\n );\n};\n\nexport default ChipToggle;\n","import styled from '@emotion/styled';\nimport type { TypographyTokens } from '../../../styles';\nimport type { ChipButtonProps } from './ChipButton.types';\nimport { css } from '@emotion/react';\nimport { borderRadiusTokens, colorTokens } from '../../../styles';\nimport { getNextColor } from '../../../utils/getNextColor';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\n\nexport const getLineTypographyBySizeVar = (sizeVar: ChipButtonProps['sizeVar']): TypographyTokens => {\n switch (sizeVar) {\n case 'XS':\n return 'caption_400';\n case 'S':\n return 'body3_400';\n default:\n return 'body3_400';\n }\n};\n\nconst lineStyle = ({ color }: ChipButtonProps) => css`\n background: ${colorTokens.neutral0};\n border: 1px solid ${colorTokens[color!]};\n border-radius: ${borderRadiusTokens.borderRadius20};\n &:hover {\n border: 1px solid ${colorTokens[getNextColor(color!, 2)]};\n }\n & > span {\n color: ${colorTokens[getNextColor(color!, 4)]};\n }\n`;\n\nconst getStyleBySizeVar = (sizeVar: ChipButtonProps['sizeVar']) => {\n switch (sizeVar) {\n case 'XS':\n return css`\n padding: 4px 8px;\n `;\n case 'S':\n return css`\n padding: 7px 12px;\n `;\n default:\n return css`\n padding: 7px 12px;\n `;\n }\n};\nexport const StyledChipButton = styled.button<ChipButtonProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n height: fit-content;\n width: fit-content;\n gap: 4px;\n cursor: pointer;\n ${({ sizeVar }) => getStyleBySizeVar(sizeVar)};\n ${(props) => props.styleVar === 'LINE' && lineStyle(props)};\n ${({ disabled }) => getDisabledStyle(disabled)};\n background: ${({ background }) => background && colorTokens[background]};\n`;\n","import type { ColorTokens } from '../styles';\nimport { colorTokens } from '../styles';\n\n/**\n * 인자로 받은 색상의 다음 색상을 반환합니다.\n * step을 통해 다음 색상의 단계를 설정할 수 있습니다.\n * 만약 다음 색상이 없다면 가장 높은 단계의 색상을 반환합니다.\n * 100단위만 반환하며 50, _5와 같이 예외적인 색상은 반환하지 않습니다.\n * @param {ColorTokens} color\n * @param {number} step\n * @return {ColorTokens}\n */\nexport const getNextColor = (color: ColorTokens, step = 1): ColorTokens => {\n const colorName = color.replace(/[0-9]|_/g, '');\n\n const colorTokenKeys = Object.keys(colorTokens) as ColorTokens[];\n const findColorToken = colorTokenKeys.filter((colorToken) => colorToken.includes(colorName));\n\n const extractNumbers = (str: ColorTokens) => {\n const formattedStr = str.replace(/_/g, '.');\n const regex = /\\d+(\\.\\d+)?/g;\n const match = formattedStr.match(regex);\n return match ? parseFloat(match[0]) : 0;\n };\n // neutral700_5 와 같은 색상은 반환하지 않습니다.\n\n const sortColorToken = findColorToken.sort((a, b) => extractNumbers(a) - extractNumbers(b));\n const currentIndex = sortColorToken.indexOf(color);\n\n let newIndex = currentIndex;\n let stepCount = 0;\n\n while (stepCount < Math.abs(step)) {\n newIndex += Math.sign(step);\n if (newIndex < 0 || newIndex >= sortColorToken.length) {\n break;\n }\n if (!sortColorToken[newIndex].endsWith('_5') && !sortColorToken[newIndex].includes('50')) {\n stepCount++;\n }\n }\n\n newIndex = Math.max(0, Math.min(newIndex, sortColorToken.length - 1));\n return sortColorToken[newIndex];\n};\n","import type { MouseEvent } from 'react';\nimport React from 'react';\n\nimport { getLineTypographyBySizeVar, StyledChipButton } from './ChipButton.styled';\nimport type { ChipButtonProps } from './ChipButton.types';\nimport { Text } from '../../Text';\nimport { noop } from '@shoplflow/utils';\nimport { ChipButtonSizeVariants, ChipButtonStyleVariants } from './ChipButton.types';\n\nconst ChipButton = ({\n styleVar = ChipButtonStyleVariants.LINE,\n color = 'neutral200',\n sizeVar = ChipButtonSizeVariants.S,\n text,\n onClick = noop,\n disabled = false,\n ...rest\n}: ChipButtonProps) => {\n const handleOnClick = (e: MouseEvent<HTMLButtonElement>) => {\n !disabled && onClick(e);\n };\n\n return (\n <StyledChipButton\n styleVar={styleVar}\n color={color}\n {...rest}\n onClick={handleOnClick}\n disabled={disabled}\n data-shoplflow={'ChipButton'}\n >\n <Text typography={getLineTypographyBySizeVar(sizeVar)}>{text}</Text>\n </StyledChipButton>\n );\n};\n\nexport default ChipButton;\n","import type {\n ColorTokenProps,\n LeftAndRightElementProps,\n SizeVariantProps,\n StyleVariantProps,\n TextProps,\n DisableProps,\n BackgroundColorProps,\n} from '../../../utils/type/ComponentProps';\nimport type { $Values } from '@shoplflow/utils';\nimport type { HTMLAttributes } from 'react';\nexport const ChipButtonStyleVariants = {\n LINE: 'LINE',\n} as const;\n\nexport const ChipButtonSizeVariants = {\n S: 'S',\n XS: 'XS',\n} as const;\n\nexport type ChipButtonStyleVariantType = $Values<typeof ChipButtonStyleVariants>;\nexport type ChipButtonSizeVariantType = $Values<typeof ChipButtonSizeVariants>;\n\nexport interface ChipButtonProps\n extends ChipButtonOptionProps,\n Omit<HTMLAttributes<HTMLButtonElement>, 'color'>,\n TextProps,\n DisableProps,\n LeftAndRightElementProps,\n SizeVariantProps<ChipButtonSizeVariantType>,\n StyleVariantProps<ChipButtonStyleVariantType>,\n ColorTokenProps,\n BackgroundColorProps {}\nexport interface ChipButtonOptionProps {}\n","import type { ComponentPropsWithRef, ElementType } from 'react';\nimport { forwardRef } from 'react';\nimport { Text } from '../../Text';\nimport { StyledButton } from './Button.styled';\nimport type { ButtonProps } from './Button.types';\nimport LoadingSpinner from '../../../assets/LoadingSpinner';\n\nconst Button = forwardRef(\n <T extends ElementType = 'button'>(\n {\n styleVar = 'PRIMARY',\n sizeVar = 'M',\n style,\n color,\n as,\n children,\n leftSource,\n rightSource,\n isLoading = false,\n lineClamp,\n ...rest\n }: ButtonProps<T>,\n ref: ComponentPropsWithRef<T>['ref'],\n ) => {\n return (\n <StyledButton\n styleVar={styleVar}\n sizeVar={sizeVar}\n className={styleVar}\n style={style}\n as={as}\n ref={ref}\n color={color}\n {...rest}\n data-shoplflow={'Button'}\n >\n {leftSource}\n {isLoading ? (\n <LoadingSpinner color={styleVar === 'SECONDARY' || styleVar === 'GHOST' ? 'neutral500' : 'neutral0'} />\n ) : (\n <Text\n lineClamp={lineClamp}\n whiteSpace={'nowrap'}\n wordBreak={'keep-all'}\n color={styleVar === 'PRIMARY' ? 'neutral0' : 'neutral700'}\n typography={sizeVar === 'M' ? 'body1_400' : 'body2_400'}\n >\n {children}\n </Text>\n )}\n {rightSource}\n </StyledButton>\n );\n },\n);\n\nexport default Button;\n","import styled from '@emotion/styled';\nimport type { ButtonOptionProps, ButtonSizeVariantType, ButtonStyleVariantType } from './Button.types';\nimport type { ColorTokens } from '../../../styles';\nimport { colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\nimport { getNextColor } from '../../../utils/getNextColor';\n\nconst getStyleByStyleVar = (styleVar?: ButtonStyleVariantType, color?: ColorTokens, disabled?: boolean) => {\n switch (styleVar) {\n case 'PRIMARY':\n return css`\n border: 1px solid ${colorTokens.primary400};\n background-color: ${colorTokens.primary300};\n :hover {\n background-color: ${!disabled && colorTokens.primary400};\n }\n `;\n case 'SECONDARY':\n return css`\n border: 1px solid ${colorTokens.neutral350};\n background-color: ${colorTokens.neutral0};\n :hover {\n background-color: ${!disabled && colorTokens.neutral100};\n }\n `;\n case 'SOLID':\n if (!color) {\n throw new Error('Button의 SOLID 속성은 color를 필수로 받습니다.');\n }\n return css`\n border: 1px solid ${colorTokens[getNextColor(color)]};\n background-color: ${colorTokens[color]};\n :hover {\n background-color: ${colorTokens[getNextColor(color)]};\n }\n `;\n case 'GHOST':\n return css`\n border: 1px solid transparent;\n background-color: transparent;\n :hover {\n background-color: ${!disabled && colorTokens.neutral400_5};\n }\n `;\n default:\n return css`\n border: 1px solid ${colorTokens.primary400};\n background-color: ${colorTokens.primary300};\n `;\n }\n};\n\nconst getStyleBySizeVar = (sizeVar?: ButtonSizeVariantType) => {\n switch (sizeVar) {\n case 'M':\n return css`\n min-width: 72px;\n min-height: 40px;\n `;\n case 'S':\n return css`\n min-width: 54px;\n min-height: 32px;\n `;\n default:\n return css`\n min-width: 72px;\n min-height: 40px;\n `;\n }\n};\n\nexport const StyledButton = styled.button<ButtonOptionProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n height: fit-content;\n width: fit-content;\n gap: 4px;\n padding: 0 12px;\n border-radius: 6px;\n cursor: pointer;\n ${({ styleVar, color, disabled }) => getStyleByStyleVar(styleVar, color, disabled)};\n ${({ sizeVar }) => getStyleBySizeVar(sizeVar)};\n ${({ disabled }) => getDisabledStyle(disabled)};\n`;\n","import React from 'react';\nimport type { ColorTokens } from '../styles';\nimport { colorTokens } from '../styles';\n\ninterface LoadingSpinnerProps {\n color?: ColorTokens;\n}\n\nconst LoadingSpinner = ({ color = 'neutral0' }: LoadingSpinnerProps) => {\n return (\n <svg width='24' height='24' stroke={colorTokens[color]} viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>\n <style>\n {`\n .spinner { transform-origin: center; animation: spinner_rotation 2s linear infinite; }\n .spinner circle { stroke-linecap: round; animation: spinner_dash 1.5s ease-in-out infinite; }\n @keyframes spinner_rotation { 100% { transform: rotate(360deg); } }\n @keyframes spinner_dash { \n 0% { stroke-dasharray: 0 150; stroke-dashoffset: 0; }\n 47.5% { stroke-dasharray: 42 150; stroke-dashoffset: -16; }\n 95%, 100% { stroke-dasharray: 42 150; stroke-dashoffset: -59; }\n }\n `}\n </style>\n <g className='spinner'>\n <circle cx='12' cy='12' r='9.5' fill='none' strokeWidth='2'></circle>\n </g>\n </svg>\n );\n};\n\nexport default LoadingSpinner;\n","import type { $Values } from '@shoplflow/utils';\nimport type { ComponentPropsWithoutRef, ComponentPropsWithRef, ElementType, ReactElement } from 'react';\nimport type { PolymorphicComponentProps } from '../../../types/PolymorphicComponentProps';\nimport type {\n ColorTokenProps,\n DisableProps,\n LeftAndRightNodeProps,\n LoadingProps,\n SizeVariantProps,\n StyleVariantProps,\n} from '../../../utils/type/ComponentProps';\n\nimport type { TypographyTokens } from '../../../styles';\n\nexport const ButtonSizeVariants = {\n S: 'S',\n M: 'M',\n} as const;\n\nexport type ButtonSizeVariantType = $Values<typeof ButtonSizeVariants>;\n\nexport const ButtonStyleVariants = {\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n SOLID: 'SOLID',\n GHOST: 'GHOST',\n} as const;\n\nexport type ButtonStyleVariantType = $Values<typeof ButtonStyleVariants>;\n\n// MARK : interface는 객체 구조를 가지기 때문에, 컴파일 시점에 객체 구조가 명확하게 설정되어 있어야 합니다. 따라서 동적 타입을 명시할 때는 타입을 선언하고, 정적 타입을 선언할 때는 interface를 사용합니다.\nexport type ButtonOptionProps<T extends ElementType = 'button'> = Omit<\n ComponentPropsWithoutRef<T>,\n 'color' | 'disabled'\n> &\n SizeVariantProps<ButtonSizeVariantType> &\n StyleVariantProps<ButtonStyleVariantType> &\n ColorTokenProps &\n DisableProps &\n LoadingProps & {\n typography?: TypographyTokens;\n lineClamp?: number;\n };\n\nexport type ButtonProps<T extends ElementType = 'button'> = PolymorphicComponentProps<T, ButtonOptionProps> &\n LeftAndRightNodeProps;\n\nexport type ButtonComponent = <T extends ElementType = 'button'>(\n props: ButtonProps<T> & {\n ref?: ComponentPropsWithRef<T>['ref'];\n },\n) => ReactElement | null;\n","import type { ComponentPropsWithRef, ElementType, MouseEvent } from 'react';\nimport { useState, forwardRef } from 'react';\nimport { StyledIconButton } from './IconButton.styled';\nimport type { IconButtonProps } from './IconButton.types';\nimport LoadingSpinner from '../../../assets/LoadingSpinner';\n\nconst IconButton = forwardRef(\n <T extends ElementType = 'button'>(\n {\n styleVar,\n sizeVar,\n disabled,\n children,\n color,\n onMouseEnter,\n onMouseLeave,\n isLoading = false,\n ...rest\n }: IconButtonProps<T>,\n ref: ComponentPropsWithRef<T>['ref'],\n ) => {\n const [isHovered, setIsHovered] = useState(false);\n const handleOnMouseEnter = (e: MouseEvent<HTMLButtonElement>) => {\n setIsHovered(true);\n onMouseEnter && onMouseEnter(e);\n };\n const handleOnMouseLeave = (e: MouseEvent<HTMLButtonElement>) => {\n setIsHovered(false);\n onMouseLeave && onMouseLeave(e);\n };\n return (\n <StyledIconButton\n styleVar={styleVar}\n sizeVar={sizeVar}\n disabled={disabled}\n color={color}\n ref={ref}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n isHovered={isHovered}\n {...rest}\n data-shoplflow={'IconButton'}\n >\n {isLoading ? (\n <LoadingSpinner color={styleVar === 'SECONDARY' || styleVar === 'GHOST' ? 'neutral500' : 'neutral0'} />\n ) : (\n children\n )}\n </StyledIconButton>\n );\n },\n);\n\nexport default IconButton;\n","import styled from '@emotion/styled';\nimport type { IconButtonOptionProps, IconButtonSizeVariantType, IconButtonStyleVariantType } from './IconButton.types';\nimport type { ColorTokens } from '../../../styles';\nimport { borderRadiusTokens, colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\nimport { getNextColor } from '../../../utils/getNextColor';\n\nconst getWidthAndHeightFromSizeVar = (sizeVar?: IconButtonSizeVariantType) => {\n switch (sizeVar) {\n case 'M':\n return css`\n width: 40px;\n min-width: 40px;\n height: 40px;\n min-height: 40px;\n `;\n case 'S':\n return css`\n width: 32px;\n min-width: 32px;\n height: 32px;\n min-height: 32px;\n `;\n default:\n return css`\n width: 40px;\n min-width: 40px;\n height: 40px;\n min-height: 40px;\n `;\n }\n};\n\nconst getStyleByStyleVar = (styleVar?: IconButtonStyleVariantType, color?: ColorTokens, isHovered?: boolean) => {\n switch (styleVar) {\n case 'PRIMARY':\n return css`\n background: ${colorTokens.primary300};\n border: 1px solid ${colorTokens.primary400};\n ${isHovered &&\n css`\n background: ${colorTokens.primary400};\n `}\n `;\n case 'SECONDARY':\n return css`\n background: ${colorTokens.neutral0};\n border: 1px solid ${colorTokens.neutral350};\n ${isHovered &&\n css`\n background: ${colorTokens.neutral100};\n `}\n `;\n case 'SOLID':\n if (!color) {\n throw new Error('IconButton의 SOLID 속성은 color를 필수로 받습니다.');\n }\n return css`\n border: 1px solid ${colorTokens[getNextColor(color)]};\n background: ${colorTokens[color]};\n\n ${isHovered &&\n css`\n background: ${colorTokens[getNextColor(color)]};\n `}\n `;\n case 'GHOST':\n return css`\n border: 1px solid transparent;\n background: transparent;\n ${isHovered &&\n css`\n background: ${colorTokens.neutral400_5};\n `}\n `;\n default:\n return css`\n border: 1px solid ${colorTokens.neutral200};\n ${isHovered &&\n css`\n background: ${colorTokens.neutral100};\n `}\n `;\n }\n};\n\nexport const StyledIconButton = styled.button<\n IconButtonOptionProps & {\n isHovered: boolean;\n }\n>`\n display: flex;\n flex-shrink: 0;\n border-radius: ${borderRadiusTokens.borderRadius06};\n justify-content: center;\n align-items: center;\n background: ${colorTokens.neutral0};\n cursor: pointer;\n ${({ styleVar, color, isHovered }) => getStyleByStyleVar(styleVar, color, isHovered)};\n ${({ sizeVar }) => getWidthAndHeightFromSizeVar(sizeVar)};\n ${({ disabled }) => getDisabledStyle(disabled)};\n & > svg {\n width: 20px;\n height: 20px;\n }\n`;\n","import type { ComponentPropsWithoutRef, ComponentPropsWithRef, ElementType, ReactElement } from 'react';\nimport type { PolymorphicComponentProps } from '../../../types/PolymorphicComponentProps';\nimport type { $Values } from '@shoplflow/utils';\nimport type {\n DisableProps,\n SizeVariantProps,\n StyleVariantProps,\n ColorTokenProps,\n ChildrenProps,\n LoadingProps,\n} from '../../../utils/type/ComponentProps';\n\nexport const IconButtonSizeVariants = {\n S: 'S',\n M: 'M',\n} as const;\n\nexport type IconButtonSizeVariantType = $Values<typeof IconButtonSizeVariants>;\n\nexport const IconButtonStyleVariants = {\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n SOLID: 'SOLID',\n GHOST: 'GHOST',\n} as const;\n\nexport type IconButtonStyleVariantType = $Values<typeof IconButtonStyleVariants>;\n\nexport type IconButtonOptionProps<T extends ElementType = 'button'> = Omit<\n ComponentPropsWithoutRef<T>,\n 'color' | 'disabled'\n> &\n DisableProps &\n SizeVariantProps<IconButtonSizeVariantType> &\n StyleVariantProps<IconButtonStyleVariantType> &\n ChildrenProps &\n ColorTokenProps &\n LoadingProps;\n\nexport type IconButtonProps<T extends ElementType = 'button'> = PolymorphicComponentProps<T, IconButtonOptionProps>;\n\nexport type IconButtonComponent = <T extends ElementType = 'button'>(\n props: IconButtonProps<T> & {\n ref?: ComponentPropsWithRef<T>['ref'];\n },\n) => ReactElement | null;\n","import styled from '@emotion/styled';\nimport { borderRadiusTokens, colorTokens } from '../../styles';\nimport { css } from '@emotion/react';\nimport type { CalloutProps } from './Callout.types';\n\nconst informationStyle = css`\n background: ${colorTokens.neutral100};\n & > span {\n color: ${colorTokens.neutral600};\n }\n & > svg > path {\n fill: ${colorTokens.neutral600};\n }\n`;\nconst alertStyle = css`\n background: ${colorTokens.red100};\n & > span {\n align-self: center;\n color: ${colorTokens.red300};\n }\n & > svg > path {\n fill: ${colorTokens.red300};\n }\n`;\n\nexport const StyledCallout = styled.div<CalloutProps>`\n display: flex;\n justify-content: flex-start;\n align-items: start;\n padding: 6px 8px;\n gap: 4px;\n border-radius: ${borderRadiusTokens.borderRadius08};\n ${({ styleVar }) => styleVar === 'INFORMATION' && informationStyle}\n ${({ styleVar }) => styleVar === 'ALERT' && alertStyle}\n`;\n\nexport const StyledCalloutIcon = styled.svg`\n display: flex;\n height: 20px;\n min-height: 20px;\n width: 20px;\n min-width: 20px;\n`;\nexport const TextWrapper = styled.div`\n padding: 2px 0;\n`;\n","import React from 'react';\nimport { StyledCallout, StyledCalloutIcon } from './Callout.styled';\nimport type { TextProps } from '../Text';\nimport { Text } from '../Text';\nimport type { CalloutProps } from './Callout.types';\nimport type { IconSourceProps } from '../../utils/type/ComponentProps';\n\nconst Callout = ({ children, styleVar = 'INFORMATION', ...rest }: CalloutProps) => {\n return (\n <StyledCallout {...rest} styleVar={styleVar} data-shoplflow={'Callout'}>\n {children}\n </StyledCallout>\n );\n};\n\nconst CalloutText = ({ children, ...rest }: TextProps) => {\n return (\n <Text {...rest} typography={'body3_400'}>\n {children}\n </Text>\n );\n};\n\nconst CalloutIcon = ({ iconSource }: IconSourceProps) => {\n return <StyledCalloutIcon as={iconSource} />;\n};\n\nCallout.Text = CalloutText;\nCallout.Icon = CalloutIcon;\nexport default Callout;\n","import type { $Values } from '@shoplflow/utils';\nimport type { ChildrenProps, StyleVariantProps } from '../../utils/type/ComponentProps';\n\nexport const CalloutTypes = {\n INFORMATION: 'INFORMATION',\n ALERT: 'ALERT',\n} as const;\n\nexport type CalloutType = $Values<typeof CalloutTypes>;\n\nexport interface CalloutProps extends CalloutOptionProps, ChildrenProps, StyleVariantProps<CalloutType> {}\nexport interface CalloutOptionProps {}\n","import { offset, shift, flip, arrow, size, hide, inline } from '@floating-ui/react';\n\nexport { offset, hide, size, inline, arrow, flip, shift };\nexport { default as Popper } from './Popper';\nexport * from './Popper';\nexport * from './Popper.types';\n","import React, { forwardRef, useEffect, useState } from 'react';\nimport { StyledPopper } from './Popper.styled';\nimport type { PopperProps, PopperTriggerProps, PopperPortalProps } from './Popper.types';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { fadeInOut } from '../../animation/fadeInOut';\n\nimport { useFloating } from '@floating-ui/react-dom';\nimport { autoPlacement, autoUpdate, FloatingPortal, offset } from '@floating-ui/react';\nimport { PopperContext, usePopper } from './usePopper';\nimport { useMergeRefs } from '../../hooks/useMergeRef';\n\nconst Popper = ({\n placement,\n offset: initialOffset = 0,\n autoPlacement: initialAutoPlacement,\n strategy = 'absolute',\n middlewares,\n children,\n}: PopperProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const { refs, floatingStyles, ...floating } = useFloating({\n strategy,\n placement,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(initialOffset),\n initialAutoPlacement &&\n autoPlacement({\n crossAxis: false,\n ...initialAutoPlacement,\n }),\n ...(middlewares ?? []),\n ],\n });\n\n return (\n <PopperContext.Provider\n value={{ isOpen, setIsOpen, ...floating, ...refs, floatingStyles: { ...floatingStyles, zIndex: 20002 } }}\n >\n {children}\n </PopperContext.Provider>\n );\n};\n\nexport const PopperTrigger = forwardRef<HTMLDivElement, PopperTriggerProps>(\n ({ children, isOpen = false, ...rest }, ref) => {\n const { setReference, setIsOpen } = usePopper();\n\n const refs = useMergeRefs(ref, setReference);\n\n useEffect(() => {\n setIsOpen(isOpen);\n }, [isOpen, setIsOpen]);\n\n return (\n <StyledPopper ref={refs} data-shoplflow={'Popper'} {...rest}>\n {children}\n </StyledPopper>\n );\n },\n);\n\nexport const PopperPortal = forwardRef<HTMLDivElement, PopperPortalProps>(\n ({ children, animation: initialAnimation }, ref) => {\n const { floatingStyles, setFloating, isOpen } = usePopper();\n const animation = initialAnimation ?? fadeInOut;\n\n const refs = useMergeRefs(ref, setFloating);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <FloatingPortal>\n <AnimatePresence>\n <motion.div\n initial={animation.initial}\n animate={animation.animate}\n exit={animation.exit}\n ref={refs}\n style={floatingStyles}\n >\n {children}\n </motion.div>\n </AnimatePresence>\n </FloatingPortal>\n );\n },\n);\n\nPopper.Trigger = PopperTrigger;\nPopper.Portal = PopperPortal;\n\nexport default Popper;\n","import styled from '@emotion/styled';\nimport type { PopperTriggerProps } from './Popper.types';\n\nexport const StyledPopper = styled.div<Pick<PopperTriggerProps, 'height' | 'width'>>`\n width: ${({ width }) => width ?? 'fit-content'};\n height: ${({ height }) => height && height};\n`;\n","import { createContext } from 'react';\nimport * as React from 'react';\nimport type { ReferenceType } from '@floating-ui/react';\nimport type { UseFloatingReturn } from '@floating-ui/react-dom';\n\ntype PopperContextType<RT extends ReferenceType = ReferenceType> = Omit<UseFloatingReturn<RT>, 'refs'> & {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n reference: React.MutableRefObject<RT | null>;\n floating: React.MutableRefObject<HTMLElement | null>;\n setReference: (node: RT | null) => void;\n setFloating: (node: HTMLElement | null) => void;\n floatingStyles: React.CSSProperties;\n};\n\nexport const PopperContext = createContext<PopperContextType | null>(null);\n\nexport const usePopper = () => {\n const context = React.useContext(PopperContext);\n\n if (context === null) {\n throw new Error('usePopper must be used within a PopperProvider');\n }\n return context;\n};\n","import { useMemo } from 'react';\n\nexport type ReactRef<T> = React.RefCallback<T> | React.MutableRefObject<T>;\n\nexport function assignRef<T = unknown>(ref: ReactRef<T> | null | undefined, value: T) {\n if (ref == null) {\n return;\n }\n\n if (typeof ref === 'function') {\n ref(value);\n return;\n }\n\n try {\n ref.current = value;\n } catch (error) {\n throw new Error(`Cannot assign value '${String(value)}' to ref '${String(ref)}'`);\n }\n}\n\nexport function mergeRefs<T>(...refs: Array<ReactRef<T> | null | undefined>) {\n return (node: T | null) => {\n refs.forEach((ref) => {\n assignRef(ref, node);\n });\n };\n}\n\nexport function useMergeRefs<T>(...refs: Array<ReactRef<T> | null | undefined>) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => mergeRefs(...refs), refs);\n}\n","import React, { useEffect, useState } from 'react';\nimport { StyledDropdown } from './Dropdown.styled';\nimport { Popper } from '../Popper';\nimport type { DropdownProps } from './Dropdown.types';\nimport { DropdownContext } from './useDropdown';\nimport { DropdownButton } from './DropdownButton';\nimport { DropdownContent } from './DropdownContent';\n\nconst Dropdown = ({\n isOpen: initialIsOpen = false,\n trigger,\n popper,\n option = 'CLICK',\n width = '100%',\n}: DropdownProps) => {\n const [triggerRef, setTriggerRef] = useState<HTMLDivElement | null>(null);\n const [size, setSize] = useState({ width: 0, height: 0 });\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n if (triggerRef) {\n setSize({\n width: triggerRef.offsetWidth,\n height: triggerRef.offsetHeight,\n });\n }\n }, [triggerRef]);\n\n useEffect(() => {\n if (initialIsOpen === undefined) {\n return;\n }\n setIsOpen(initialIsOpen);\n }, [initialIsOpen]);\n\n return (\n <StyledDropdown data-shoplflow={'Dropdown'} width={width}>\n <DropdownContext.Provider value={{ ...size, isOpen, setIsOpen, option }}>\n <Popper\n offset={4}\n autoPlacement={{\n allowedPlacements: ['bottom-start', 'top-start'],\n }}\n >\n <Popper.Trigger ref={setTriggerRef} isOpen={isOpen} width={width}>\n {trigger}\n </Popper.Trigger>\n <Popper.Portal>{popper}</Popper.Portal>\n </Popper>\n </DropdownContext.Provider>\n </StyledDropdown>\n );\n};\n\nDropdown.Button = DropdownButton;\n\nDropdown.Content = DropdownContent;\n\nexport default Dropdown;\n","import styled from '@emotion/styled';\nimport { boxShadowTokens, colorTokens } from '../../styles';\nimport type { DropdownButtonProps, DropdownContentProps, DropdownSizeVariantType } from './Dropdown.types';\nimport { motion } from 'framer-motion';\nimport { css } from '@emotion/react';\nimport type { CSSProperties } from 'react';\n\nexport const getDropdownHeightBySizeVar = (size: DropdownSizeVariantType) => {\n switch (size) {\n case 'M':\n return '40px';\n case 'S':\n return '32px';\n default:\n return '40px';\n }\n};\n\nexport const getDropdownFontSizeBySizeVar = (size: DropdownSizeVariantType) => {\n switch (size) {\n case 'M':\n return 'body1_400';\n case 'S':\n return 'body2_400';\n default:\n return 'body1_400';\n }\n};\n\nexport const getDropdownStyleBySizeVar = (size: DropdownSizeVariantType) => {\n switch (size) {\n case 'M':\n return css`\n padding: 4px 4px 4px 12px;\n `;\n case 'S':\n return css`\n padding: 4px 4px 4px 8px;\n gap: 4px;\n `;\n default:\n return css`\n padding: 4px 4px 4px 12px;\n `;\n }\n};\n\nexport const getDropdownIconSizeBySizeVar = (size: DropdownSizeVariantType) => {\n switch (size) {\n case 'S':\n return css`\n height: 24px;\n width: 24px;\n min-width: 24px;\n min-height: 24px;\n `;\n case 'M':\n return css`\n height: 32px;\n width: 32px;\n min-width: 32px;\n min-height: 32px;\n `;\n default:\n return css`\n height: 32px;\n width: 32px;\n min-width: 32px;\n min-height: 32px;\n `;\n }\n};\n\nexport const StyledDropdown = styled.div<{ width: CSSProperties['width'] }>`\n width: ${({ width }) => width};\n`;\nexport const StyledDropdownContent = styled.div<DropdownContentProps>`\n display: flex;\n flex-direction: column;\n background: ${colorTokens.neutral0};\n width: ${({ width }) => width ?? '240px'};\n padding: 4px;\n border-radius: 6px;\n box-shadow: ${boxShadowTokens.dropShadow};\n`;\n\nexport const StyledDropdownButton = styled.button<DropdownButtonProps>`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 100%;\n gap: 8px;\n cursor: pointer;\n background-color: ${colorTokens.neutral0};\n ${({ sizeVar }) => sizeVar && getDropdownStyleBySizeVar(sizeVar)};\n ${({ disabled }) =>\n disabled &&\n css`\n background-color: ${colorTokens.neutral100};\n cursor: not-allowed;\n `}\n`;\nexport const DropdownButtonIcon = styled(motion.div)<DropdownButtonProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${({ sizeVar }) => sizeVar && getDropdownIconSizeBySizeVar(sizeVar)};\n`;\n","import { createContext, useContext } from 'react';\nimport type { DropdownOptionVariantType } from './Dropdown.types';\n\nexport type DropdownContextType = {\n isOpen: boolean;\n option: DropdownOptionVariantType;\n setIsOpen: (isOpen: boolean) => void;\n width: number;\n height: number;\n};\n\nexport const DropdownContext = createContext<DropdownContextType | null>(null);\n\nexport const useDropdown = () => {\n const context = useContext(DropdownContext);\n\n if (context === null) {\n throw new Error('useDropdown must be used within a DropdownProvider');\n }\n return context;\n};\n","import type { MouseEvent } from 'react';\nimport React, { forwardRef, useState } from 'react';\nimport type { DropdownButtonProps } from './Dropdown.types';\nimport { useDropdown } from './useDropdown';\nimport { InputWrapper } from '../Inputs/common/input.styled';\nimport {\n DropdownButtonIcon,\n getDropdownFontSizeBySizeVar,\n getDropdownHeightBySizeVar,\n StyledDropdownButton,\n} from './Dropdown.styled';\nimport { Text } from '../Text';\nimport { Icon } from '../Icon';\nimport { DownArrowSolidXsmallIcon } from '@shoplflow/shopl-assets';\n\nexport const DropdownButton = forwardRef<HTMLButtonElement, DropdownButtonProps>(\n ({ width = '100%', onClick, sizeVar = 'M', isError, placeholder, value, disabled, leftSource, ...rest }, ref) => {\n const { isOpen, setIsOpen } = useDropdown();\n\n const [isHovered, setIsHovered] = useState(false);\n\n const handleOnClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (!disabled) {\n onClick && onClick(e);\n setIsOpen(!isOpen);\n }\n };\n\n const handleOnMouseEnter = () => {\n setIsHovered(true);\n };\n const handleOnMouseLeave = () => {\n setIsHovered(false);\n };\n\n const getTextColor = ({ value, disabled }: { value?: React.ReactNode | null; disabled?: boolean }) => {\n if (disabled) {\n return 'neutral350';\n }\n if (!value) {\n return 'neutral400';\n }\n return 'neutral700';\n };\n\n return (\n <InputWrapper\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n isFocused={isOpen}\n isHovered={isHovered}\n disabled={disabled}\n width={width}\n isError={isError}\n height={getDropdownHeightBySizeVar(sizeVar)}\n >\n <StyledDropdownButton ref={ref} onClick={handleOnClick} disabled={disabled} {...rest} sizeVar={sizeVar}>\n {leftSource && leftSource}\n\n {value || (\n <Text\n typography={getDropdownFontSizeBySizeVar(sizeVar)}\n color={getTextColor({ value, disabled })}\n textOverflow={'ellipsis'}\n lineClamp={1}\n >\n {placeholder}\n </Text>\n )}\n\n <DropdownButtonIcon\n sizeVar={sizeVar}\n animate={{\n rotate: isOpen ? 180 : 0,\n }}\n transition={{\n duration: 0.2,\n }}\n >\n <Icon iconSource={DownArrowSolidXsmallIcon} color={'neutral400'} sizeVar='XS' />\n </DropdownButtonIcon>\n </StyledDropdownButton>\n </InputWrapper>\n );\n },\n);\n","import styled from '@emotion/styled';\nimport type { BorderRadiusTokens } from '../../../styles';\nimport { borderRadiusTokens, colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\nimport type { HTMLInputTypeAttribute } from 'react';\n\nexport type Status = {\n isFocused?: boolean;\n isError?: boolean;\n isHovered?: boolean;\n disabled?: boolean;\n};\n\nconst getBorderColorByStatus = ({ isFocused, isError, isHovered, disabled }: Status) => {\n if (!disabled) {\n if (isError) {\n return colorTokens.red300;\n }\n if (isFocused) {\n return colorTokens.primary300;\n }\n if (isHovered) {\n return colorTokens.neutral700;\n }\n }\n\n return colorTokens.neutral300;\n};\n\nexport const getStyleByType = ({\n type,\n height,\n minHeight,\n maxHeight,\n width,\n minWidth,\n maxWidth,\n borderRadius,\n customNumberInputHeight,\n}: {\n type?: HTMLInputTypeAttribute;\n width?: CSSStyleDeclaration['width'];\n minWidth?: CSSStyleDeclaration['minWidth'];\n maxWidth?: CSSStyleDeclaration['maxWidth'];\n height?: CSSStyleDeclaration['height'];\n minHeight?: CSSStyleDeclaration['minHeight'];\n maxHeight?: CSSStyleDeclaration['maxHeight'];\n borderRadius?: BorderRadiusTokens;\n customNumberInputHeight?: string;\n}) => {\n if (type === 'number') {\n return css`\n width: ${width || '64px'};\n height: ${customNumberInputHeight || '32px'};\n border-radius: ${borderRadius ? borderRadiusTokens[borderRadius] : '6px'};\n `;\n }\n\n return css`\n width: ${width || '100%'};\n min-width: ${minWidth || 'initial'};\n max-width: ${maxWidth || 'initial'};\n height: ${height || 'initial'};\n min-height: ${minHeight || 'initial'};\n max-height: ${maxHeight || 'initial'};\n border-radius: ${borderRadius ? borderRadiusTokens[borderRadius] : '6px'};\n `;\n};\n\nexport const InputWrapper = styled.label<\n Status & {\n height?: CSSStyleDeclaration['height'];\n width?: CSSStyleDeclaration['width'];\n minHeight?: CSSStyleDeclaration['minHeight'];\n maxHeight?: CSSStyleDeclaration['maxHeight'];\n minWidth?: CSSStyleDeclaration['minWidth'];\n maxWidth?: CSSStyleDeclaration['maxWidth'];\n borderRadius?: BorderRadiusTokens;\n direction?: 'row' | 'column';\n customNumberInputHeight?: string;\n type?: HTMLInputTypeAttribute;\n }\n>`\n position: relative;\n display: flex;\n align-items: center;\n border-radius: 6px;\n flex-direction: ${({ direction }) => direction || 'row'};\n ${({ type, height, minHeight, maxHeight, width, maxWidth, minWidth, borderRadius, customNumberInputHeight }) =>\n getStyleByType({\n customNumberInputHeight,\n type,\n height,\n minHeight,\n maxHeight,\n width,\n maxWidth,\n minWidth,\n borderRadius,\n })};\n justify-content: space-between;\n gap: 8px;\n border: 1px solid ${(props) => getBorderColorByStatus(props)};\n background-color: ${colorTokens.neutral0};\n overflow: hidden;\n ${({ disabled }) =>\n disabled &&\n css`\n background-color: ${colorTokens.neutral100};\n cursor: not-allowed;\n `};\n`;\n","import React, { forwardRef } from 'react';\nimport { StyledIcon } from './Icon.styled';\nimport type { IconProps } from './Icon.types';\n\nconst Icon = forwardRef<SVGSVGElement, IconProps>(({ iconSource, ...rest }, ref) => {\n return <StyledIcon as={iconSource} ref={ref} {...rest} data-shoplflow={'Icon'} />;\n});\n\nexport default Icon;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../styles';\nimport type { IconOptionProps, IconSizeVariantsType } from './Icon.types';\nimport { IconSizeVariants } from './Icon.types';\n\nconst getIconSize = (size?: IconSizeVariantsType) => {\n switch (size) {\n case IconSizeVariants.XS:\n return '12px';\n case IconSizeVariants.S:\n return '20px';\n case IconSizeVariants.M:\n return '24px';\n case IconSizeVariants.L:\n return '30px';\n case IconSizeVariants.XL:\n return '36px';\n default:\n return 'fit-content';\n }\n};\n\nexport const StyledIcon = styled.svg<IconOptionProps>`\n width: ${({ sizeVar }) => sizeVar && getIconSize(sizeVar)};\n min-width: ${({ sizeVar }) => sizeVar && getIconSize(sizeVar)};\n height: ${({ sizeVar }) => sizeVar && getIconSize(sizeVar)};\n min-height: ${({ sizeVar }) => sizeVar && getIconSize(sizeVar)};\n & > path {\n fill: ${({ color }) => color && colorTokens[color]};\n }\n`;\n","import type { $Values } from '@shoplflow/utils';\nimport type { HTMLAttributes } from 'react';\nimport type { ColorTokenProps, IconSourceProps, SizeVariantProps } from '../../utils/type/ComponentProps';\n\nexport const IconSizeVariants = {\n XS: 'XS',\n S: 'S',\n M: 'M',\n L: 'L',\n XL: 'XL',\n} as const;\n\nexport type IconSizeVariantsType = $Values<typeof IconSizeVariants>;\n\nexport interface IconProps extends IconOptionProps {}\nexport interface IconOptionProps\n extends SizeVariantProps<IconSizeVariantsType>,\n IconSourceProps,\n ColorTokenProps,\n Omit<HTMLAttributes<SVGSVGElement>, 'color'> {}\n\nexport type DangerouslySetInnerHTML =\n | (string & {\n // Should be InnerHTML['innerHTML'].\n // But unfortunately we're mixing renderer-specific type declarations.\n __html: string | TrustedHTML;\n })\n | undefined;\n","import type { MouseEvent } from 'react';\nimport React from 'react';\nimport { useDropdown } from './useDropdown';\nimport { noop, OutSideClick } from '@shoplflow/utils';\nimport { StyledDropdownContent } from './Dropdown.styled';\nimport type { DropdownContentProps } from './Dropdown.types';\n\nexport const DropdownContent = ({ children, width: initialWidth, type, onClick, ...rest }: DropdownContentProps) => {\n const { width, setIsOpen, option } = useDropdown();\n\n const isFillType = type === 'FILL';\n const contentWidth = isFillType ? `${width}px` : initialWidth;\n\n const returnCallbackByOption = () => {\n if (option === 'OUTSIDE_CLICK') {\n return () => setIsOpen(false);\n }\n if (option === 'CLICK') {\n return () => setIsOpen(false);\n }\n return noop;\n };\n\n const handleClick = (e: MouseEvent<HTMLDivElement>) => {\n onClick && onClick(e);\n if (option === 'CLICK') {\n setIsOpen(false);\n }\n };\n\n return (\n <OutSideClick outsideClick={returnCallbackByOption()}>\n <StyledDropdownContent width={contentWidth} onClick={handleClick} {...rest}>\n {children}\n </StyledDropdownContent>\n </OutSideClick>\n );\n};\n","import type { MouseEvent } from 'react';\nimport React from 'react';\nimport { getFontStylesBySizeVar, StyledMenu } from './Menu.styled';\nimport type { MenuProps } from './Menu.types';\nimport { Stack } from '../Stack';\nimport { useOnToggle } from '../../hooks/useOnToggle';\n\nconst Menu = ({\n leftSource,\n rightSource,\n children,\n isSelected,\n defaultSelected = false,\n onClick,\n sizeVar = 'XS',\n disabled = false,\n ...rest\n}: MenuProps) => {\n const [selected, handleToggle] = useOnToggle(isSelected, defaultSelected);\n\n const LeftSourceClone = leftSource\n ? React.cloneElement(leftSource, {\n ...rest,\n isSelected,\n })\n : leftSource;\n\n const handleOnClick = (e: MouseEvent<HTMLLIElement>) => {\n !disabled && handleToggle();\n !disabled && onClick && onClick(e);\n };\n\n return (\n <StyledMenu\n sizeVar={sizeVar}\n isSelected={selected}\n leftSource={leftSource}\n onClick={handleOnClick}\n {...rest}\n data-shoplflow={'Menu'}\n >\n {leftSource && LeftSourceClone}\n <Stack.Horizontal width={'100%'} height={'100%'} align={'center'} className={getFontStylesBySizeVar(sizeVar)}>\n {children}\n </Stack.Horizontal>\n {rightSource && rightSource}\n </StyledMenu>\n );\n};\n\nexport default Menu;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../styles';\nimport type { MenuOptionProps } from './Menu.types';\nimport { getDisabledStyle } from '../../styles/utils/getDisabledStyle';\nimport { css } from '@emotion/react';\nimport { CHECKBOX_SYMBOL_KEY, RADIO_SYMBOL_KEY } from '../ControlButtons';\nimport { MUNUS_BUTTON_SYMBOL_KEY } from '../ControlButtons/MinusButton/MinusButton';\n\nconst getStylesBySizeVar = (sizeVar: MenuOptionProps['sizeVar']) => {\n switch (sizeVar) {\n case 'XS':\n return css`\n min-height: 28px;\n `;\n case 'S':\n return css`\n min-height: 36px;\n `;\n case 'M':\n return css`\n height: 48px;\n `;\n default:\n return css`\n height: 48px;\n `;\n }\n};\n\nexport const getFontStylesBySizeVar = (sizeVar: MenuOptionProps['sizeVar']) => {\n switch (sizeVar) {\n case 'XS':\n return 'body2_400';\n case 'S':\n return 'body1_400';\n case 'M':\n return 'body1_400';\n default:\n return 'body1_400';\n }\n};\n\nexport const StyledMenu = styled.li<MenuOptionProps>`\n display: flex;\n width: 100%;\n flex-direction: row;\n align-items: center;\n padding: 6px;\n gap: 4px;\n border-radius: 4px;\n cursor: pointer;\n background: transparent;\n ${({ sizeVar }) => getStylesBySizeVar(sizeVar)};\n &:hover {\n background: ${colorTokens.neutral400_5};\n }\n ${({ disabled }) => disabled && getDisabledStyle(disabled)}\n ${({ isSelected, leftSource }) =>\n isSelected === true &&\n (!leftSource ||\n (leftSource &&\n !leftSource.type[RADIO_SYMBOL_KEY] &&\n !leftSource.type[CHECKBOX_SYMBOL_KEY] &&\n !leftSource.type[MUNUS_BUTTON_SYMBOL_KEY])) &&\n css`\n background: ${colorTokens.neutral200};\n &:hover {\n background: ${colorTokens.neutral200};\n }\n `}\n`;\n","import React, { forwardRef } from 'react';\nimport * as StyledMinusBox from './MinusButton.styled';\nimport type { MinusBoxProps } from './MinusButton.types';\n\nexport const MUNUS_BUTTON_SYMBOL_KEY = Symbol('SHOPLFLOW_MUNUS_BUTTON');\n\nconst MinusButton = forwardRef<HTMLButtonElement, MinusBoxProps>(({ onClick, color = 'neutral300', ...rest }, ref) => {\n return (\n <StyledMinusBox.Container data-shoplflow={'minusButton'}>\n <StyledMinusBox.IconButton color={color} onClick={onClick} ref={ref} {...rest}>\n <svg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path\n d='M0 4C0 1.79086 1.79086 0 4 0H12C14.2091 0 16 1.79086 16 4V12C16 14.2091 14.2091 16 12 16H4C1.79086 16 0 14.2091 0 12V4Z'\n fill='none'\n />\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M3 8C3 7.44772 3.44772 7 4 7H12C12.5523 7 13 7.44772 13 8C13 8.55228 12.5523 9 12 9H4C3.44772 9 3 8.55228 3 8Z'\n fill='white'\n />\n </svg>\n </StyledMinusBox.IconButton>\n </StyledMinusBox.Container>\n );\n});\n\nMinusButton[MUNUS_BUTTON_SYMBOL_KEY] = true;\n\nexport default MinusButton;\n","import styled from '@emotion/styled';\nimport type { ColorTokens } from '../../../styles';\nimport { borderRadiusTokens, colorTokens } from '../../../styles';\nimport { getNextColor } from '../../../utils/getNextColor';\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 4px;\n`;\n\nexport const IconButton = styled.button<{ color: ColorTokens }>`\n display: flex;\n width: 16px;\n height: 16px;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n border-radius: ${borderRadiusTokens.borderRadius04};\n border: none;\n background: ${({ color }) => colorTokens[color]};\n cursor: pointer;\n transition:\n transform 0.1s ease-out,\n background 0.1s ease;\n\n &:hover {\n background: ${({ color }) => colorTokens[getNextColor(color, 1)]};\n }\n`;\n","import type { MouseEvent } from 'react';\nimport React, { forwardRef, useState } from 'react';\nimport { Container, StyledCheckbox, StyledCheckHiddenInput } from './Checkbox.styled';\nimport type { CheckboxProps } from './Checkbox.types';\nimport { useOnToggle } from '../../../hooks/useOnToggle';\n\nexport const CHECKBOX_SYMBOL_KEY = Symbol('SHOPLFLOW_CHECKBOX');\n\nconst Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n { defaultSelected, isSelected, disabled, onMouseEnter, onClick, onMouseLeave, styleVar = 'PRIMARY', id, ...rest },\n ref,\n ) => {\n const [selected, toggleSelected] = useOnToggle(isSelected, defaultSelected);\n\n const [isHovered, toggleHovered] = useState(false);\n const handleMouseLeave = (e: MouseEvent<HTMLButtonElement>) => {\n toggleHovered(false);\n onMouseLeave && onMouseLeave(e);\n };\n const handleMouseEnter = (e: MouseEvent<HTMLButtonElement>) => {\n toggleHovered(true);\n onMouseEnter && onMouseEnter(e);\n };\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n return;\n }\n onClick && onClick(e);\n toggleSelected();\n };\n\n return (\n <Container\n onClick={handleClick}\n onMouseLeave={handleMouseLeave}\n onMouseEnter={handleMouseEnter}\n disabled={disabled}\n type='button'\n data-shoplflow={'Checkbox'}\n >\n <StyledCheckHiddenInput type='checkbox' disabled={disabled} id={id} {...rest} ref={ref} />\n <StyledCheckbox\n styleVar={styleVar}\n htmlFor={id}\n isHovered={isHovered}\n isSelected={selected}\n disabled={disabled}\n >\n <svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'>\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M9.78822 0.297596C10.1761 -0.0955083 10.8093 -0.0997053 11.2024 0.288222C11.5653 0.646308 11.5968 1.21334 11.2943 1.60765L11.2118 1.7024L5.31714 7.7024C4.95248 8.07193 4.37282 8.09687 3.97909 7.77976L3.88476 7.69335L0.779404 4.42669C0.396475 4.02871 0.408672 3.39567 0.806647 3.01274C1.17401 2.65926 1.74167 2.64247 2.12801 2.95499L2.2206 3.03998L4.614 5.567L9.78822 0.297596Z'\n fill='white'\n />\n </svg>\n </StyledCheckbox>\n </Container>\n );\n },\n);\n\nCheckbox[CHECKBOX_SYMBOL_KEY] = true;\n\nexport default Checkbox;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\nimport type { CheckboxOptionProps } from './Checkbox.types';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\n\nconst getStylesByStyleVariant = (\n styleVariant?: CheckboxOptionProps['styleVar'],\n isSelected?: CheckboxOptionProps['isSelected'],\n isHovered?: boolean,\n) => {\n switch (styleVariant) {\n case 'PRIMARY':\n if (isSelected) {\n return css`\n background: ${colorTokens.primary300};\n border: 1.5px solid ${colorTokens.primary300};\n & > svg > path {\n fill: ${colorTokens.neutral0};\n }\n ${isHovered &&\n css`\n border: 1.5px solid ${colorTokens.primary400};\n background: ${colorTokens.primary400};\n `}\n `;\n }\n return css`\n background: ${colorTokens.neutral200};\n border: 1.5px solid ${colorTokens.neutral200};\n border-radius: 4px;\n ${isHovered &&\n css`\n border: 1.5px solid ${colorTokens.neutral300};\n background: ${colorTokens.neutral300};\n `}\n\n & > svg > path {\n fill: ${colorTokens.neutral0};\n }\n `;\n case 'LINE':\n if (isSelected) {\n return css`\n border: 1.5px solid ${colorTokens.primary300};\n background: transparent;\n border-radius: 4px;\n & > svg > path {\n fill: ${colorTokens.primary300};\n }\n ${isHovered &&\n css`\n border: 1.5px solid ${colorTokens.primary400};\n & > svg > path {\n fill: ${colorTokens.primary400};\n }\n `}\n `;\n }\n return css`\n background: transparent;\n border: 1.5px solid ${colorTokens.neutral200};\n border-radius: 4px;\n & > svg > path {\n fill: ${colorTokens.neutral200};\n }\n ${isHovered &&\n css`\n border: 1.5px solid ${colorTokens.neutral300};\n & > svg > path {\n fill: ${colorTokens.neutral300};\n }\n `}\n `;\n default:\n return '';\n }\n};\n\nexport const StyledCheckHiddenInput = styled.input`\n position: absolute;\n width: 0;\n height: 0;\n opacity: 0;\n visibility: hidden;\n`;\n\nexport const StyledCheckbox = styled.label<\n CheckboxOptionProps & {\n isHovered: boolean;\n }\n>`\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 16px;\n min-height: 16px;\n width: 16px;\n height: 16px;\n background: ${colorTokens.neutral200};\n border-radius: 4px;\n box-sizing: border-box;\n cursor: pointer;\n ${({ styleVar, isSelected, isHovered }) => getStylesByStyleVariant(styleVar, isSelected, isHovered)};\n ${({ disabled }) => getDisabledStyle(disabled)}\n`;\n\nexport const Container = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n width: fit-content;\n height: fit-content;\n background-color: transparent;\n`;\n","import type { $Values } from '@shoplflow/utils';\nimport type {\n DefaultSelectedProps,\n DisableProps,\n SelectedProps,\n StyleVariantProps,\n} from '../../../utils/type/ComponentProps';\nimport type { ButtonHTMLAttributes, InputHTMLAttributes } from 'react';\n\nexport const CheckboxStyleVariants = {\n PRIMARY: 'PRIMARY',\n LINE: 'LINE',\n} as const;\n\nexport type CheckboxStyleVariantType = $Values<typeof CheckboxStyleVariants>;\n\nexport interface CheckboxProps extends CheckboxOptionProps {}\nexport interface CheckboxOptionProps\n extends StyleVariantProps<CheckboxStyleVariantType>,\n SelectedProps,\n DefaultSelectedProps,\n DisableProps,\n Omit<InputHTMLAttributes<HTMLInputElement>, 'onMouseLeave' | 'onMouseEnter' | 'onClick'>,\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'onMouseLeave' | 'onMouseEnter' | 'onClick'> {}\n","import type { MouseEvent } from 'react';\nimport React, { useState } from 'react';\nimport { Container, StyledRadio } from './Radio.styled';\nimport type { RadioProps } from './Radio.types';\nimport { useOnToggle } from '../../../hooks/useOnToggle';\n\nexport const RADIO_SYMBOL_KEY = Symbol('SHOPLFLOW_RADIO');\n\nconst Radio = ({ isSelected, defaultSelected, disabled, onClick, onMouseEnter, onMouseLeave, ...rest }: RadioProps) => {\n const [selected, toggleSelected] = useOnToggle(isSelected, defaultSelected);\n const [isHovered, toggleHovered] = useState(false);\n const handleMouseLeave = (e: MouseEvent<HTMLButtonElement>) => {\n toggleHovered(false);\n onMouseLeave && onMouseLeave(e);\n };\n const handleMouseEnter = (e: MouseEvent<HTMLButtonElement>) => {\n toggleHovered(true);\n onMouseEnter && onMouseEnter(e);\n };\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n return;\n }\n onClick && onClick(e);\n toggleSelected();\n };\n return (\n <Container\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...rest}\n data-shoplflow={'Radio'}\n >\n <StyledRadio isSelected={selected} isHovered={isHovered} disabled={disabled}>\n <svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'>\n <circle cx='8' cy='8' r='5.5' fill='white' stroke='#3299FE' strokeWidth='5' />\n </svg>\n </StyledRadio>\n </Container>\n );\n};\n\nRadio[RADIO_SYMBOL_KEY] = true;\n\nexport default Radio;\n","import styled from '@emotion/styled';\nimport { css } from '@emotion/react';\nimport { colorTokens } from '../../../styles';\nimport type { RadioOptionProps } from './Radio.types';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\n\nconst getSelectedStyle = (isHovered: boolean) => {\n return css`\n & > svg > circle {\n stroke: ${colorTokens.primary300};\n }\n ${isHovered &&\n css`\n & > svg > circle {\n stroke: ${colorTokens.primary400};\n }\n `}\n `;\n};\n\nexport const StyledRadio = styled.div<\n RadioOptionProps & {\n isHovered: boolean;\n }\n>`\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 16px;\n min-height: 16px;\n width: 16px;\n height: 16px;\n ${({ isHovered }) => css`\n & > svg > circle {\n stroke: ${colorTokens.neutral200};\n }\n ${isHovered &&\n css`\n & > svg > circle {\n stroke: ${colorTokens.neutral300};\n }\n `}\n `}\n cursor: pointer;\n ${({ isSelected, isHovered }) => isSelected && getSelectedStyle(isHovered)}\n ${({ disabled }) => getDisabledStyle(disabled)}\n`;\nexport const Container = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n padding: 4px;\n width: fit-content;\n height: fit-content;\n`;\n","import type {\n ChildrenProps,\n DefaultSelectedProps,\n DisableProps,\n LeftElementProps,\n RightElementProps,\n SelectedProps,\n SizeVariantProps,\n} from '../../utils/type/ComponentProps';\nimport type { HTMLAttributes } from 'react';\nimport type { $Values } from '@shoplflow/utils';\n\nexport const MenuSizeVariants = {\n XS: 'XS',\n S: 'S',\n M: 'M',\n} as const;\n\nexport type MenuSizeVariantType = $Values<typeof MenuSizeVariants>;\n\nexport interface MenuProps extends MenuOptionProps, HTMLAttributes<HTMLLIElement> {}\nexport interface MenuOptionProps\n extends ChildrenProps,\n DisableProps,\n RightElementProps,\n LeftElementProps,\n SelectedProps,\n DefaultSelectedProps,\n SizeVariantProps<MenuSizeVariantType> {}\n","import React from 'react';\nimport { StyledList, StyledText2Rows } from './List.styled';\nimport type { ListProps, ListText2RowsProps } from './List.types';\nimport { Stack } from '../Stack';\nimport { Text } from '../Text';\n\nconst List = ({ children, leftSource, rightSource, ...rest }: ListProps) => {\n const LeftSourceClone = leftSource\n ? React.cloneElement(leftSource as React.ReactElement, {\n ...rest,\n })\n : leftSource;\n\n if (!children && rightSource) {\n throw new Error('RightSource는 children이 필수로 포함되어야합니다.');\n }\n\n return (\n <StyledList data-shoplflow={'List'} {...rest}>\n {LeftSourceClone && LeftSourceClone}\n <Stack.Horizontal height={'36px'} width={'100%'} spacing={'spacing08'} align={'center'}>\n {children}\n </Stack.Horizontal>\n {rightSource && rightSource}\n </StyledList>\n );\n};\n\nexport const Text2Rows = ({ title, subTitle }: ListText2RowsProps) => {\n return (\n <StyledText2Rows>\n <Text typography={'body1_500'} color={'neutral700'} lineClamp={1} wordBreak={'break-all'}>\n {title}\n </Text>\n {subTitle && (\n <Text typography={'body2_400'} color={'neutral400'} lineClamp={1} wordBreak={'break-all'}>\n {subTitle}\n </Text>\n )}\n </StyledText2Rows>\n );\n};\n\nList.Text2Rows = Text2Rows;\n\nexport default List;\n","import styled from '@emotion/styled';\nimport type { ListOptionProps } from './List.types';\nimport { colorTokens } from '../../styles';\nimport { getDisabledStyle } from '../../styles/utils/getDisabledStyle';\n\nexport const StyledList = styled.li<ListOptionProps>`\n display: flex;\n flex-direction: row;\n width: 100%;\n align-items: center;\n padding: 6px 8px;\n gap: 4px;\n border-radius: 8px;\n background: ${colorTokens.neutral0};\n cursor: pointer;\n ${({ disabled }) => disabled && getDisabledStyle(disabled)}\n &:hover {\n background: ${colorTokens.neutral100};\n }\n`;\n\nexport const StyledText2Rows = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 2px;\n`;\n","import styled from '@emotion/styled';\nimport type { TagOptionProps } from './Tag.types';\nimport type { TypographyTokens } from '../../styles';\nimport { colorTokens } from '../../styles';\nimport { css } from '@emotion/react';\nimport { getNextColor } from '../../utils/getNextColor';\n\nexport const getTypographyBySize = (size?: TagOptionProps['sizeVar']): TypographyTokens => {\n switch (size) {\n case 'XS':\n return 'caption_400';\n case 'S':\n return 'caption_400';\n case 'M':\n return 'body2_400';\n default:\n return 'body2_400';\n }\n};\n\nconst getTagStyleBySize = (size?: TagOptionProps['sizeVar']) => {\n switch (size) {\n case 'XS':\n return css`\n height: 20px;\n padding: 0 4px;\n border-radius: 4px;\n `;\n case 'S':\n return css`\n height: 24px;\n padding: 0 8px;\n border-radius: 4px;\n `;\n case 'M':\n return css`\n padding: 4px 8px;\n height: 32px;\n border-radius: 6px;\n `;\n default:\n return css`\n padding: 4px 8px;\n height: 32px;\n `;\n }\n};\n\nconst getRadiusBySize = (size?: TagOptionProps['sizeVar']) => {\n switch (size) {\n case 'XS':\n return css`\n border-radius: 12px;\n `;\n case 'S':\n return css`\n border-radius: 16px;\n `;\n case 'M':\n return css`\n border-radius: 16px;\n `;\n default:\n return css`\n border-radius: 16px;\n `;\n }\n};\nconst getColorsByStyleVariant = (\n styleVariant?: TagOptionProps['styleVar'],\n color: TagOptionProps['color'] = 'neutral700',\n) => {\n switch (styleVariant) {\n case 'SOLID':\n return css`\n background: ${colorTokens[color]};\n color: ${colorTokens.neutral0};\n `;\n case 'TINT':\n return css`\n background: ${colorTokens[getNextColor(color, -2)]};\n color: ${colorTokens[color]};\n `;\n case 'LINE':\n return css`\n background: transparent;\n color: ${colorTokens[color]};\n border: 1px solid ${colorTokens[color]};\n `;\n default:\n return css`\n background: ${colorTokens[color]};\n color: ${colorTokens.neutral0};\n `;\n }\n};\n\nexport const StyledTag = styled.div<TagOptionProps>`\n display: flex;\n align-items: center;\n flex-direction: row;\n cursor: default;\n gap: 2px;\n ${({ sizeVar }) => getTagStyleBySize(sizeVar)};\n ${({ color, styleVar }) => getColorsByStyleVariant(styleVar, color)};\n ${({ radius, sizeVar }) => radius && getRadiusBySize(sizeVar)};\n`;\n","import React from 'react';\nimport { getTypographyBySize, StyledTag } from './Tag.styled';\nimport type { TagProps } from './Tag.types';\nimport classNames from 'classnames';\n\nconst Tag = ({ sizeVar, children, rightSource, leftSource, className, ...rest }: TagProps) => {\n return (\n <StyledTag\n sizeVar={sizeVar}\n className={classNames(getTypographyBySize(sizeVar), className)}\n {...rest}\n data-shoplflow={'Tag'}\n >\n {leftSource && leftSource}\n {children}\n {rightSource && rightSource}\n </StyledTag>\n );\n};\n\nexport default Tag;\n","import type { $Values } from '@shoplflow/utils';\nimport type {\n ChildrenProps,\n ColorTokenProps,\n LeftAndRightElementProps,\n SizeVariantProps,\n StyleVariantProps,\n} from '../../utils/type/ComponentProps';\nimport type { HTMLAttributes } from 'react';\n\nexport const TagStyleVariants = {\n SOLID: 'SOLID',\n TINT: 'TINT',\n LINE: 'LINE',\n} as const;\n\nexport const TagSizeVariants = {\n XS: 'XS',\n S: 'S',\n M: 'M',\n} as const;\n\nexport type TagStyleVariantType = $Values<typeof TagStyleVariants>;\nexport type TagSizeVariantType = $Values<typeof TagSizeVariants>;\n\nexport interface TagProps extends TagOptionProps {}\nexport interface TagOptionProps\n extends SizeVariantProps<TagSizeVariantType>,\n StyleVariantProps<TagStyleVariantType>,\n ColorTokenProps,\n LeftAndRightElementProps,\n ChildrenProps,\n Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n radius?: boolean;\n}\n","import React, { useEffect } from 'react';\nimport { IconWrapper, LeftElementWrapper, RightElementWrapper, StyledTree, StyledTreeItem } from './Tree.styled';\nimport type { TreeItemProps, TreeProps } from './Tree.types';\nimport { TREE_SYMBOL_KEY } from './Tree.types';\nimport { Text } from '../Text';\nimport { IconButton } from '../Buttons';\nimport { DownArrowIcon } from '@shoplflow/shopl-assets';\nimport { AnimatePresence, LayoutGroup, motion } from 'framer-motion';\nimport { Icon } from '../Icon';\nimport { fadeInOut } from '../../animation/fadeInOut';\nimport { AnimateKey } from '../../animation/AnimateKey';\nimport { StackContainer } from '../StackContainer';\n\nconst Tree = ({ children, ...rest }: TreeProps) => {\n const [isMounted, setIsMounted] = React.useState(false);\n useEffect(() => {\n setIsMounted(true);\n }, []);\n if (!isMounted) {\n return null;\n }\n return (\n <StyledTree {...rest} data-shoplflow={'Tree'} layout layoutRoot>\n <LayoutGroup>\n <AnimatePresence mode={'sync'}>{children}</AnimatePresence>\n </LayoutGroup>\n </StyledTree>\n );\n};\n\nexport const TreeItem = ({\n children,\n label,\n leftSource,\n rightSource,\n depth = 0,\n initialIsOpen,\n isOpen,\n disabled = false,\n onClick,\n ...rest\n}: TreeItemProps) => {\n const [isOpened, setIsOpened] = React.useState(initialIsOpen ?? false);\n\n const CloneChildren = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n if (child.type[TREE_SYMBOL_KEY]) {\n return React.cloneElement(child, {\n depth: depth + 1,\n } as TreeItemProps);\n }\n return child;\n });\n\n const handleToggle = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n setIsOpened((prev) => !prev);\n };\n\n const handleClickTreeItem = (e: React.MouseEvent<HTMLLIElement>) => {\n if (disabled || !onClick) {\n return;\n }\n\n return onClick(e);\n };\n\n const LeftSourceClone = leftSource\n ? React.cloneElement(leftSource, {\n disabled,\n onClick,\n ...rest,\n })\n : leftSource;\n\n useEffect(() => {\n if (isOpen !== undefined) {\n setIsOpened(isOpen);\n }\n }, [isOpen]);\n\n return (\n <>\n <StyledTreeItem\n disabled={disabled}\n depth={depth}\n variants={fadeInOut}\n {...AnimateKey}\n layout\n key={String(label)}\n onClick={handleClickTreeItem}\n {...rest}\n >\n <LeftElementWrapper>\n {LeftSourceClone && LeftSourceClone}\n <StackContainer padding={'0 0 0 4px'}>\n <Text typography={'body1_400'} lineClamp={1} color={disabled ? 'neutral350' : 'neutral700'}>\n {label}\n </Text>\n </StackContainer>\n </LeftElementWrapper>\n <RightElementWrapper>\n {rightSource}\n {children && (\n <IconButton styleVar={'GHOST'} onClick={handleToggle} sizeVar='S'>\n <IconWrapper\n animate={{\n rotate: isOpened ? 180 : 0,\n transition: {\n duration: 0.2,\n },\n }}\n >\n <Icon iconSource={DownArrowIcon} sizeVar={'S'} color='neutral400' />\n </IconWrapper>\n </IconButton>\n )}\n </RightElementWrapper>\n </StyledTreeItem>\n <AnimatePresence mode={'sync'}>\n {isOpened && children && (\n <motion.div key={'children' + String(CloneChildren)} layout {...AnimateKey} variants={fadeInOut}>\n {CloneChildren}\n </motion.div>\n )}\n </AnimatePresence>\n </>\n );\n};\nTreeItem[TREE_SYMBOL_KEY] = true;\n\nTree.Item = TreeItem;\n\nexport default Tree;\n","import styled from '@emotion/styled';\nimport type { TreeItemOptionProps } from './Tree.types';\nimport { css } from '@emotion/react';\nimport { colorTokens } from '../../styles';\nimport { motion } from 'framer-motion';\nimport { getDisabledStyle } from '../../styles/utils/getDisabledStyle';\n\nexport const StyledTree = styled(motion.ul)`\n display: flex;\n flex-direction: column;\n width: 100%;\n`;\n\nexport const StyledTreeItem = styled(motion.li)<TreeItemOptionProps>`\n display: flex;\n flex-direction: row;\n width: 100%;\n height: 48px;\n gap: 4px;\n align-items: center;\n justify-content: space-between;\n padding: 8px 8px 8px 0;\n border-radius: 8px;\n background: transparent;\n cursor: ${({ onClick }) => (onClick ? 'pointer' : 'initial')};\n ${({ depth }) =>\n depth &&\n css`\n padding-left: ${depth * 16}px;\n `};\n &:hover {\n background: ${colorTokens.neutral400_5};\n }\n ${({ disabled }) => disabled && getDisabledStyle(disabled)}\n`;\nexport const LeftElementWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\nexport const RightElementWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\nexport const IconWrapper = styled(motion.div)`\n display: flex;\n width: fit-content;\n height: fit-content;\n`;\n","import type { ChildrenProps, LeftElementProps, RightElementProps } from '../../utils/type/ComponentProps';\nimport type { ReactNode } from 'react';\nimport type { HTMLMotionProps } from 'framer-motion';\n\nexport interface TreeProps extends TreeOptionProps {}\nexport interface TreeOptionProps extends ChildrenProps {}\n\nexport interface TreeItemProps extends TreeItemOptionProps, Omit<HTMLMotionProps<'li'>, 'children'> {}\n\nexport interface TreeItemOptionProps extends ChildrenProps, LeftElementProps, RightElementProps {\n /**\n * 트리의 깊이를 설정합니다.\n * 자동으로 설정되는 값이므로 별도로 설정하지 않아도 됩니다.\n * 재귀로 Tree를 구현할 경우 사용해주세요.\n */\n depth?: number;\n /**\n * 내부에 들어갈 요소를 설정합니다.\n */\n label?: ReactNode;\n /**\n * 초기 값을 설정합니다.\n */\n initialIsOpen?: boolean;\n /**\n * 트리아이템을 직접 조작할 때 사용합니다.\n */\n isOpen?: boolean;\n /**\n * 트리 영역의 click event 비활성화 여부를 설정합니다.\n * leftsource의 click event는 별도 설정이 필요합니다.\n */\n disabled?: boolean;\n}\nexport const TREE_SYMBOL_KEY = Symbol('SHOPLFLOW_TREE');\n","export const AnimateKey = {\n initial: 'initial',\n animate: 'animate',\n exit: 'exit',\n};\n","import type { ChangeEvent, FocusEvent, HTMLInputTypeAttribute } from 'react';\nimport React, { forwardRef, useCallback, useEffect, useId, useState } from 'react';\nimport { RightElementWrapper, StyledInput } from './Input.styled';\nimport TextCounter from '../common/TextCounter';\nimport type { InputProps } from './Input.types';\nimport { IconButton } from '../../Buttons';\nimport { assetFunction } from '../../../styles/IconAssets';\nimport { useMergeRefs } from '../../../hooks/useMergeRef';\nimport { InputWrapper } from '../common/input.styled';\nimport { Icon } from '../../Icon';\nimport { getNumberLimitRange } from './utils/getNumberLimiteRange';\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n onFocus,\n onBlur,\n onChange,\n onClear,\n defaultValue,\n value,\n isError,\n disabled,\n type: initialType,\n maxLength,\n min,\n max,\n className,\n width,\n borderRadius,\n customNumberInputHeight,\n ...rest\n },\n ref,\n ) => {\n const [text, setText] = useState('');\n const [isFocused, setIsFocused] = useState(false);\n const [type, setType] = useState<HTMLInputTypeAttribute | undefined>(initialType);\n const [isHovered, setIsHovered] = useState(false);\n const uniqueId = useId();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const refs = useMergeRefs(ref, inputRef);\n\n const convertToString = useCallback((value: string | number | readonly string[]) => {\n if (typeof value !== 'number') {\n return typeof value === 'string' ? value : value.join('');\n }\n return String(value);\n }, []);\n\n const sliceText = useCallback(\n (value: string) => {\n if (maxLength && value.length > maxLength) {\n return value.slice(0, maxLength);\n }\n return value;\n },\n [maxLength],\n );\n\n const handleOnMouseEnter = () => {\n setIsHovered(true);\n };\n const handleOnMouseLeave = () => {\n setIsHovered(false);\n };\n\n const handleOnFocus = (event: FocusEvent<HTMLInputElement>) => {\n onFocus && onFocus(event);\n setIsFocused(true);\n };\n const handleOnBlur = (event: FocusEvent<HTMLInputElement>) => {\n onBlur && onBlur(event);\n setIsFocused(false);\n };\n\n const handleOnChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(event);\n\n const slicedText = sliceText(event.target.value);\n\n if (type === 'number') {\n const numberValue = Number(slicedText);\n const numberMin = Number(min);\n const numberMax = Number(max);\n const limitedText = getNumberLimitRange(numberValue, numberMin, numberMax);\n setText(limitedText);\n return;\n }\n setText(slicedText);\n };\n\n const handleOnClear = () => {\n onClear && onClear();\n if (inputRef.current) {\n setText('');\n inputRef.current.value = '';\n }\n };\n\n const handleTogglePasswordType = () => {\n if (type === 'password') {\n setType('text');\n } else {\n setType('password');\n }\n };\n\n useEffect(() => {\n if (defaultValue !== undefined) {\n const convertString = convertToString(defaultValue);\n const slicedText = sliceText(convertString);\n setText(slicedText);\n }\n }, [convertToString, defaultValue, maxLength, sliceText]);\n\n useEffect(() => {\n if (value !== undefined) {\n const convertString = convertToString(value);\n\n const slicedText = sliceText(convertString);\n inputRef.current?.value && (inputRef.current.value = slicedText);\n setText(slicedText);\n }\n }, [convertToString, maxLength, sliceText, value]);\n\n useEffect(() => {\n setType(initialType);\n }, [initialType]);\n\n return (\n <InputWrapper\n htmlFor={uniqueId}\n isFocused={isFocused}\n disabled={disabled}\n isError={isError}\n isHovered={isHovered}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n type={type}\n width={width}\n height={'40px'}\n maxHeight={'40px'}\n data-shoplflow={'input'}\n borderRadius={borderRadius}\n customNumberInputHeight={customNumberInputHeight}\n >\n <StyledInput\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n onChange={handleOnChange}\n maxLength={maxLength}\n disabled={disabled}\n value={text}\n type={type}\n id={uniqueId}\n ref={refs}\n className={'body1_400' + (className ? ` ${className}` : '')}\n {...rest}\n />\n {!(type === 'number') && (\n <RightElementWrapper>\n {maxLength && isFocused && <TextCounter currentLength={String(text).length} maxLength={maxLength} />}\n {isFocused && Boolean(String(text).length > 0) && (\n <IconButton sizeVar={'S'} onClick={handleOnClear} styleVar={'GHOST'}>\n <Icon iconSource={assetFunction('DeleteIcon')} color={'neutral350'} />\n </IconButton>\n )}\n {initialType === 'password' && (\n <IconButton sizeVar={'S'} onClick={handleTogglePasswordType} styleVar={'GHOST'}>\n <Icon\n color={'neutral600'}\n iconSource={assetFunction(type === 'password' ? 'ViewOffIcon' : 'ViewOnIcon')}\n />\n </IconButton>\n )}\n </RightElementWrapper>\n )}\n </InputWrapper>\n );\n },\n);\n\nexport default Input;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\n\nexport const StyledInput = styled.input<{\n disabled?: boolean;\n}>`\n padding: 4px 0 4px 12px;\n background-color: transparent;\n display: flex;\n min-width: 64px;\n width: 100%;\n border: none;\n box-sizing: border-box;\n &::placeholder {\n color: ${colorTokens.neutral350};\n }\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n ${({ disabled }) =>\n disabled &&\n css`\n color: ${colorTokens.neutral350};\n cursor: not-allowed;\n `};\n /* Firefox */\n &[type='number'] {\n padding: 4px 8px;\n text-align: center;\n -moz-appearance: textfield;\n }\n\n *,\n *:before,\n *:after {\n box-sizing: inherit;\n }\n`;\n\nexport const RightElementWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0 8px 0 0;\n`;\n","import { Text } from '../../../components/Text';\n\nimport styled from '@emotion/styled';\n\nconst Wrapper = styled.div`\n display: flex;\n width: 100%;\n justify-content: flex-end;\n align-items: center;\n gap: 2px;\n`;\n\nexport type TextCounterProps = {\n maxLength: number;\n currentLength: number;\n};\n\nconst TextCounter = ({ currentLength, maxLength }: TextCounterProps) => {\n return (\n <Wrapper>\n <Text typography='caption_400' color='neutral400'>\n {currentLength}\n </Text>\n <Text typography='caption_400' color='neutral350'>\n /\n </Text>\n <Text typography='caption_400' color='neutral350'>\n {maxLength}\n </Text>\n </Wrapper>\n );\n};\n\nexport default TextCounter;\n","import * as ShoplAssets from '@shoplflow/shopl-assets';\nimport * as HadaAssets from '@shoplflow/hada-assets';\n\nimport { useContext } from 'react';\nimport type { DomainType } from '../types/Domain';\nimport { StoryDomainContext } from '../../.storybook/useStoryDomain';\nimport { getDomain } from '../hooks';\n\nexport type ShoplIconKey = Exclude<keyof typeof ShoplAssets, 'isShoplIcon' | 'createIcon'>;\nexport type HadaIconKey = Exclude<keyof typeof HadaAssets, 'isHadaIcon' | 'createIcon'>;\n\nexport type IconNameType = ShoplIconKey & HadaIconKey;\n\n/**\n * 스토리북 파일에서만 사용합니다.\n */\nexport const useStoryAssetFunction = (iconName: IconNameType) => {\n const { domain } = useContext(StoryDomainContext);\n const HadaIcon = HadaAssets[iconName];\n const ShoplIcon = ShoplAssets[iconName];\n return domain === 'HADA' ? HadaIcon : ShoplIcon;\n};\n\n/**\n * 특정 컴포넌트 내부에서 아이콘을 포함하고 있을 경우 분기 용도로 사용합니다.\n * 빌드에 포함 가능합니다.\n */\nexport const assetFunction = (iconName: IconNameType, domainProps?: DomainType) => {\n const domain = domainProps ?? getDomain();\n const HadaIcon = HadaAssets[iconName];\n const ShoplIcon = ShoplAssets[iconName];\n return domain === 'hada' ? HadaIcon : ShoplIcon;\n};\n","import { createContext, useContext, useEffect, useState } from 'react';\nimport { DomainType } from '../src/types/Domain';\n\nexport type StoryDomainType = {\n domain: DomainType | undefined;\n handleToggleTheme: () => void;\n}\n\nexport const StoryDomainContext = createContext<StoryDomainType>({\n domain: 'SHOPL',\n handleToggleTheme: () => {}\n})\n\nexport const useStoryDomain = () => {\n const [domain, setDomain] = useState<DomainType | undefined>();\n\n useEffect(() => {\n const domain = localStorage.getItem('domain');\n if (domain) {\n setDomain(domain as DomainType);\n } else {\n setDomain('HADA');\n }\n }, [])\n useEffect(() => {\n if (domain) {\n localStorage.setItem('domain', domain);\n }\n }, [domain]);\n const handleToggleTheme = () => {\n setDomain(domain === 'HADA' ? 'SHOPL' : 'HADA')\n }\n\n return {\n domain,\n handleToggleTheme\n }\n}","export const getNumberLimitRange = (value: number, min: number, max: number) => {\n if (min && value < min) {\n return String(min);\n }\n if (max && value > max) {\n return String(max);\n }\n return String(value);\n};\n","import type { MouseEvent } from 'react';\nimport React, { useRef, forwardRef, useCallback, useEffect, useState } from 'react';\nimport { StyledInputButton, StyledInputButtonContent } from './InputButton.styled';\nimport { InputWrapper } from '../common/input.styled';\nimport { Stack } from '../../Stack';\nimport { IconButton } from '../../Buttons';\nimport type { InputButtonProps } from './InputButton.types';\nimport { Icon } from '../../Icon';\nimport { assetFunction } from '../../../styles/IconAssets';\n\nconst InputButton = forwardRef<HTMLInputElement, InputButtonProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n onClick,\n isSelected,\n disabled = false,\n useClear = true,\n rightSource,\n onClear,\n width = '100%',\n ...rest\n },\n ref,\n ) => {\n const [text, setText] = useState(value ?? defaultValue ?? '');\n const [isHovered, setIsHovered] = useState(false);\n const prevValue = useRef(value ?? defaultValue ?? '');\n\n const convertToString = useCallback((value: string | number | readonly string[]) => {\n if (typeof value !== 'number') {\n return typeof value === 'string' ? value : value.join('');\n }\n return String(value);\n }, []);\n\n const handleOnClick = (e: MouseEvent<HTMLDivElement>) => {\n if (!disabled) {\n onClick && onClick(e);\n }\n };\n\n const handleOnClear = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (!disabled) {\n onClear && onClear(e);\n setText('');\n }\n };\n const handleOnMouseEnter = () => {\n setIsHovered(true);\n };\n const handleOnMouseLeave = () => {\n setIsHovered(false);\n };\n\n useEffect(() => {\n if (prevValue.current === value) {\n return;\n }\n if (value || value === '') {\n const convertString = convertToString(value);\n\n setText(convertString);\n prevValue.current = convertString;\n }\n }, [convertToString, value]);\n\n useEffect(() => {\n if (prevValue.current === value) {\n return;\n }\n onChange && onChange(convertToString(text));\n }, [convertToString, onChange, value, text]);\n\n return (\n <InputWrapper\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n data-shoplflow={'InputButton'}\n isHovered={isHovered}\n isFocused={isSelected}\n disabled={disabled}\n minHeight={'40px'}\n maxHeight={'40px'}\n width={width}\n >\n <StyledInputButton onClick={handleOnClick} disabled={disabled}>\n <StyledInputButtonContent className={'body1_400'} value={text} ref={ref} {...rest} />\n <Stack.Horizontal align={'center'}>\n {useClear && text && (\n <IconButton sizeVar={'S'} onClick={handleOnClear} styleVar={'GHOST'} disabled={disabled}>\n <Icon iconSource={assetFunction('DeleteIcon')} color={'neutral350'} />\n </IconButton>\n )}\n {rightSource}\n </Stack.Horizontal>\n </StyledInputButton>\n </InputWrapper>\n );\n },\n);\n\nexport default InputButton;\n","import styled from '@emotion/styled';\nimport { css } from '@emotion/react';\nimport { colorTokens } from '../../../styles';\n\nexport const StyledInputButton = styled.div<{\n disabled?: boolean;\n}>`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n background: ${colorTokens.neutral0};\n gap: 4px;\n padding: 4px 4px 4px 12px;\n cursor: pointer;\n ${({ disabled }) =>\n disabled &&\n css`\n background-color: ${colorTokens.neutral100};\n cursor: not-allowed;\n `}\n`;\n\nexport const StyledInputButtonContent = styled.input`\n display: flex;\n width: 100%;\n border: none;\n box-sizing: border-box;\n caret-color: transparent;\n &::placeholder {\n color: ${colorTokens.neutral350};\n }\n`;\n","import type { ChangeEvent, FocusEvent } from 'react';\nimport React, { forwardRef, useEffect, useId, useState } from 'react';\n\nimport type { TextAreaProps } from './TextArea.types';\n\nimport { BottomElementWrapper, StyledTextarea } from './TextArea.styled';\nimport TextCounter from '../common/TextCounter';\nimport { InputWrapper } from '../common/input.styled';\n\nconst TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n name,\n maxLength,\n placeholder,\n disabled = false,\n isError = false,\n onChange,\n value,\n defaultValue,\n onBlur,\n onFocus,\n minHeight = '100px',\n width,\n height,\n className,\n ...rest\n },\n ref,\n ) => {\n const [text, setText] = useState('');\n const [isFocused, setIsFocused] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n\n const handleOnMouseEnter = () => {\n setIsHovered(true);\n };\n const handleOnMouseLeave = () => {\n setIsHovered(false);\n };\n\n const handleOnFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n onFocus && onFocus(event);\n setIsFocused(true);\n };\n const handleOnBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n onBlur && onBlur(event);\n\n !isHovered && setIsFocused(false);\n };\n const handleOnChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n onChange && onChange(event);\n setText(event.target.value);\n };\n\n const convertToString = (value: string | number | readonly string[]) => {\n if (typeof value !== 'number') {\n return typeof value === 'string' ? value : value.join('');\n }\n return String(value);\n };\n\n useEffect(() => {\n if (defaultValue) {\n const convertString = convertToString(defaultValue);\n if (maxLength && convertString.length > maxLength) {\n setText(convertString);\n }\n setText(convertString);\n }\n }, [defaultValue, maxLength]);\n\n useEffect(() => {\n if (value) {\n const convertString = convertToString(value);\n if (maxLength && convertString.length > maxLength) {\n setText(convertString);\n }\n setText(convertToString(value));\n }\n }, [maxLength, value]);\n\n const uniqueId = useId();\n\n return (\n <InputWrapper\n htmlFor={uniqueId}\n isFocused={isFocused}\n disabled={disabled}\n isHovered={isHovered}\n isError={isError}\n direction={'column'}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n height={height}\n minHeight={minHeight}\n width={width}\n data-shoplflow={'text-area'}\n >\n <StyledTextarea\n className={'body1_400' + (className ? ` ${className}` : '')}\n placeholder={placeholder}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n onChange={handleOnChange}\n name={name}\n id={uniqueId}\n value={value}\n ref={ref}\n maxLength={maxLength}\n disabled={disabled}\n {...rest}\n />\n <BottomElementWrapper>\n {maxLength && <TextCounter currentLength={String(text).length} maxLength={maxLength} />}\n </BottomElementWrapper>\n </InputWrapper>\n );\n },\n);\n\nexport default TextArea;\n","import styled from '@emotion/styled';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\nimport { colorTokens } from '../../../styles';\n\nexport const BottomElementWrapper = styled.div`\n display: flex;\n width: 100%;\n flex-direction: row;\n padding: 8px 12px;\n gap: 8px;\n background-color: ${colorTokens.neutral0};\n`;\n\nexport const StyledTextarea = styled.textarea`\n padding: 8px 12px 0 12px;\n background-color: transparent;\n resize: none;\n width: 100%;\n height: 100%;\n flex: 1;\n word-break: break-all;\n ${({ disabled }) => getDisabledStyle(disabled)};\n &::placeholder {\n color: ${colorTokens.neutral350};\n }\n`;\n","import React, { type MouseEvent, useState } from 'react';\nimport { StyledSelectInputButton } from './SelectInputButton.styled';\nimport type { SelectInputButtonProps } from './SelectInputButton.types';\nimport { IconButton } from '../../Buttons';\nimport { Icon } from '../../Icon';\nimport { assetFunction } from '../../../styles/IconAssets';\nimport { Stack } from '../../Stack';\nimport { InputWrapper } from '../common/input.styled';\nimport { Text } from '../../Text';\n\nconst SelectInputButton = ({\n disabled,\n isSelected,\n onMouseEnter,\n onMouseLeave,\n onClick,\n onClear,\n value,\n placeholder,\n label,\n width = '100%',\n rightSource,\n ...rest\n}: SelectInputButtonProps) => {\n const [isHovered, setIsHovered] = useState(false);\n\n const handleOnClick = (e: MouseEvent<HTMLLabelElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (!disabled) {\n onClick && onClick(e);\n }\n };\n\n const handleOnClear = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (!disabled) {\n onClear && onClear(e);\n }\n };\n const handleOnMouseEnter = (e: MouseEvent<HTMLLabelElement>) => {\n setIsHovered(true);\n onMouseEnter && onMouseEnter(e);\n };\n const handleOnMouseLeave = (e: MouseEvent<HTMLLabelElement>) => {\n setIsHovered(false);\n onMouseLeave && onMouseLeave(e);\n };\n return (\n <InputWrapper\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n onClick={handleOnClick}\n isHovered={isHovered}\n isFocused={isSelected}\n disabled={disabled}\n width={width}\n minHeight={'40px'}\n {...rest}\n data-shoplflow={'SelectInputButton'}\n >\n <StyledSelectInputButton>\n {value && value.length > 0 && label ? (\n <Text typography={'body1_400'} lineClamp={1}>\n {value[0][label] as string}\n </Text>\n ) : (\n <Text typography={'body1_400'} lineClamp={1} color={'neutral350'}>\n {placeholder}\n </Text>\n )}\n\n <Stack.Horizontal align={'center'} spacing={'spacing04'}>\n {value && value.length > 1 && (\n <Text typography={'body1_400'} color={'neutral700'}>\n +{value.length - 1}\n </Text>\n )}\n <Stack.Horizontal align={'center'}>\n {value && value.length > 0 && (\n <IconButton sizeVar={'S'} onClick={handleOnClear} styleVar={'GHOST'} disabled={disabled}>\n <Icon iconSource={assetFunction('DeleteIcon')} color={'neutral350'} />\n </IconButton>\n )}\n {rightSource}\n </Stack.Horizontal>\n </Stack.Horizontal>\n </StyledSelectInputButton>\n </InputWrapper>\n );\n};\n\nexport default SelectInputButton;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\n\nexport const StyledSelectInputButton = styled.div<{\n disabled?: boolean;\n}>`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n background: ${colorTokens.neutral0};\n gap: 4px;\n padding: 4px 4px 4px 12px;\n cursor: pointer;\n ${({ disabled }) =>\n disabled &&\n css`\n background-color: ${colorTokens.neutral100};\n cursor: not-allowed;\n `}\n`;\n","import { useCallback, useState } from 'react';\nimport { Popper } from '../Popper';\nimport type { TooltipProps } from './Tooltip.types';\nimport { TooltipContent } from './TooltipContent';\nimport { flip, shift } from '@floating-ui/core';\n\nconst Tooltip = ({\n trigger,\n popper,\n placement = 'bottom-start',\n offset = 4,\n triggerRef,\n portalRef,\n ...popperProps\n}: TooltipProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const showHandler = useCallback(() => {\n setIsOpen(true);\n }, []);\n\n const hideHandler = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n return (\n <Popper offset={offset} placement={placement} middlewares={[flip(), shift({ padding: 5 })]} {...popperProps}>\n <Popper.Trigger\n ref={triggerRef}\n isOpen={isOpen}\n onMouseOver={showHandler}\n onMouseLeave={hideHandler}\n onFocus={showHandler}\n onBlur={hideHandler}\n style={{ display: 'flex', alignItems: 'center', justifyContent: 'center' }}\n >\n {trigger}\n </Popper.Trigger>\n <Popper.Portal ref={portalRef}>{popper}</Popper.Portal>\n </Popper>\n );\n};\n\nTooltip.Content = TooltipContent;\n\nexport default Tooltip;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../styles';\n\nexport const StyledTooltipContent = styled.div`\n background-color: ${colorTokens.neutral700};\n padding: 4px 8px;\n max-width: 240px;\n border-radius: 4px;\n`;\n","import React from 'react';\nimport { StyledTooltipContent } from './Tooltip.styled';\nimport type { TooltipContentProps } from './Tooltip.types';\nimport { Text } from '../Text';\n\nexport const TooltipContent = ({ content, ...args }: TooltipContentProps) => {\n return (\n <StyledTooltipContent {...args}>\n <Text typography='caption_400' color='neutral0' wordBreak='break-all'>\n {content}\n </Text>\n </StyledTooltipContent>\n );\n};\n","import { createContext, useContext } from 'react';\n\nexport type TabsContextType = {\n activeTab: string | null;\n setActiveTab: (tab: string) => void;\n};\n\nexport const TabsContext = createContext<TabsContextType | null>(null);\n\nexport const useTabs = () => {\n const context = useContext(TabsContext);\n\n if (context === null) {\n throw new Error('useTabs should be used in Tabs');\n }\n return context;\n};\n","import { TabsContext } from './useTabs';\nimport { LayoutGroup, AnimatePresence } from 'framer-motion';\nimport { useEffect, useState } from 'react';\nimport type { TabsProps } from './Tabs.types';\nimport { Tab } from './Tab';\n\nconst Tabs = ({ children, initialTab, onChange }: TabsProps) => {\n const [activeTab, setActiveTab] = useState(initialTab);\n\n useEffect(() => {\n if (!onChange || !activeTab) {\n return;\n }\n\n onChange(activeTab);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeTab]);\n\n return (\n <TabsContext.Provider\n value={{\n activeTab,\n setActiveTab,\n }}\n >\n <LayoutGroup>\n <AnimatePresence>{children}</AnimatePresence>\n </LayoutGroup>\n </TabsContext.Provider>\n );\n};\n\nTabs.Tab = Tab;\n\nexport default Tabs;\n","import { useTabs } from './useTabs';\nimport type { MouseEvent } from 'react';\nimport { useCallback, useState } from 'react';\nimport type { TabProps } from './Tabs.types';\n\nimport { StyledTabText, StyledTab } from './Tabs.styled';\n\nimport type { TypographyTokens } from '../../styles';\nimport { Indicator } from './Indicator';\n\nexport const Tab = ({\n value,\n label,\n leftSource,\n rightSource,\n as,\n styleVar = 'NORMAL',\n sizeVar = 'L',\n onClick,\n activeColor,\n ...args\n}: TabProps) => {\n const { activeTab, setActiveTab } = useTabs();\n\n const [isHover, setIsHover] = useState(false);\n\n const isActive = value === activeTab;\n\n const hoverHandler = useCallback(() => {\n setIsHover(true);\n }, []);\n const unhoverHandler = useCallback(() => {\n setIsHover(false);\n }, []);\n\n const clickHandler = (event: MouseEvent<HTMLElement>) => {\n onClick?.(event);\n setActiveTab(value);\n };\n\n let typography: TypographyTokens = 'title1_700';\n\n if (styleVar === 'INFO') {\n typography = 'body1_700';\n }\n\n if (styleVar === 'NORMAL' && sizeVar === 'M') {\n typography = 'title2_700';\n }\n\n return (\n <StyledTab\n isActive={isActive}\n as={as}\n onClick={clickHandler}\n onMouseOver={hoverHandler}\n onMouseLeave={unhoverHandler}\n onFocus={hoverHandler}\n onBlur={unhoverHandler}\n isHover={isHover}\n styleVar={styleVar}\n {...args}\n >\n {leftSource}\n <StyledTabText\n isHover={isHover}\n lineClamp={2}\n typography={`${typography}`}\n isActive={isActive}\n activeColor={activeColor}\n styleVar={styleVar}\n >\n {label}\n </StyledTabText>\n {rightSource}\n {styleVar === 'INFO' && isActive && <Indicator layoutId='underline' />}\n </StyledTab>\n );\n};\n","import styled from '@emotion/styled';\nimport { Text } from '../Text';\nimport { css } from '@emotion/react';\nimport type { ColorTokens } from '../../styles';\nimport { colorTokens } from '../../styles';\nimport type { TabStyleVariantType, TabStyledProps, TabTextStyledProps } from './Tabs.types';\n\nexport const getHoverTabStyleByStyleVar = (styleVar: TabStyleVariantType) => {\n switch (styleVar) {\n case 'INFO': {\n return css`\n ::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n bottom: -2px;\n height: 2px;\n background: ${colorTokens.neutral500};\n }\n `;\n }\n default: {\n return null;\n }\n }\n};\n\nexport const getWrapperStyleByStyleVar = (styleVar: TabStyleVariantType) => {\n switch (styleVar) {\n case 'INFO': {\n return css`\n padding-inline: 16px;\n `;\n }\n default: {\n return null;\n }\n }\n};\n\nexport const getActiveTriggerStyleByStyleVar = (styleVar: TabStyleVariantType) => {\n switch (styleVar) {\n case 'INFO': {\n return css`\n ::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n bottom: -2px;\n height: 2px;\n background: #000;\n }\n `;\n }\n default: {\n return null;\n }\n }\n};\n\nexport const StyledTab = styled.div<TabStyledProps>`\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 12px 16px;\n width: fit-content;\n cursor: pointer;\n position: relative;\n user-select: none;\n\n ${({ styleVar }) => styleVar && getWrapperStyleByStyleVar(styleVar)};\n\n /* hover style */\n ${({ isActive, isHover, styleVar }) => !isActive && isHover && styleVar && getHoverTabStyleByStyleVar(styleVar)}\n\n /* active style */\n ${({ isActive, styleVar }) => isActive && styleVar && getActiveTriggerStyleByStyleVar(styleVar)}\n`;\n\nexport const getTextStyleByStyleVar = (styleVar: TabStyleVariantType) => {\n switch (styleVar) {\n case 'NORMAL': {\n return css`\n color: ${colorTokens.neutral400};\n `;\n }\n case 'INFO': {\n return css`\n color: ${colorTokens.neutral500};\n `;\n }\n }\n};\n\nconst getHoverTextStyleByStyleVar = (styleVar: TabStyleVariantType) => {\n switch (styleVar) {\n case 'NORMAL': {\n return css`\n color: ${colorTokens.neutral500};\n `;\n }\n case 'INFO': {\n return css`\n color: ${colorTokens.neutral700};\n `;\n }\n default: {\n return null;\n }\n }\n};\n\nexport const getActiveTextStyleByStyleVar = (styleVar: TabStyleVariantType, activeColor?: ColorTokens) => {\n switch (styleVar) {\n case 'NORMAL': {\n return css`\n color: ${activeColor ? colorTokens[activeColor] : colorTokens.neutral700};\n `;\n }\n case 'INFO': {\n return css`\n color: ${colorTokens.neutral700};\n `;\n }\n default: {\n return css`\n color: ${colorTokens.primary300};\n `;\n }\n }\n};\n\nexport const StyledTabText = styled(Text)<TabTextStyledProps>`\n cursor: pointer;\n\n ${({ styleVar }) => styleVar && getTextStyleByStyleVar(styleVar)};\n\n /* hover style */\n ${({ isHover, styleVar, isActive }) => !isActive && isHover && styleVar && getHoverTextStyleByStyleVar(styleVar)}\n\n /* active style */\n ${({ isActive, styleVar, activeColor }) =>\n isActive && styleVar && getActiveTextStyleByStyleVar(styleVar, activeColor)}\n`;\n","import styled from '@emotion/styled';\nimport { motion } from 'framer-motion';\n\nexport const StyledIndicator = styled(motion.div)`\n position: absolute;\n bottom: -2px;\n left: 0px;\n right: 0px;\n height: 2px;\n background-color: black;\n width: 100%;\n`;\n","import { StyledIndicator } from './Indicator.styled';\n\nexport const Indicator = ({ layoutId }: { layoutId: string }) => {\n return <StyledIndicator layoutId={layoutId} transition={{ duration: 0.2 }} />;\n};\n","import type { $Values } from '@shoplflow/utils';\nimport type {\n ChildrenProps,\n LeftAndRightNodeProps,\n SizeVariantProps,\n StyleVariantProps,\n} from '../../utils/type/ComponentProps';\nimport type { HTMLAttributes } from 'react';\nimport type { ColorTokens } from '../../styles';\n\nexport const TabStyleVariants = {\n NORMAL: 'NORMAL',\n INFO: 'INFO',\n} as const;\n\nexport const TabSizeVariants = {\n M: 'M',\n L: 'L',\n} as const;\n\nexport type TabStyleVariantType = $Values<typeof TabStyleVariants>;\nexport type TabSizeVariantType = $Values<typeof TabSizeVariants>;\nexport interface TabsProps extends TabsOptionProps {\n /**\n * Tab은 Controlled Component입니다. onChange를 꼭 넘겨주세요\n * @param tab\n * @returns\n */\n onChange: (tab: string) => void;\n}\n\nexport interface TabsOptionProps extends ChildrenProps {\n initialTab: string;\n}\n\nexport interface TabProps extends TabOptionProps {\n value: string;\n label: string;\n}\n\nexport interface TabOptionProps\n extends LeftAndRightNodeProps,\n StyleVariantProps<TabStyleVariantType>,\n SizeVariantProps<TabSizeVariantType>,\n Omit<HTMLAttributes<HTMLElement>, 'color'> {\n as?: React.ElementType;\n activeColor?: ColorTokens;\n}\n\nexport interface TabStyledProps extends StyleVariantProps<TabStyleVariantType> {\n as?: React.ElementType;\n isActive: boolean;\n isHover: boolean;\n}\n\nexport interface TabTextStyledProps extends TabStyledProps {\n activeColor?: ColorTokens;\n}\n","import styled from '@emotion/styled';\nimport { borderRadiusTokens, colorTokens } from '../../styles';\n\nexport const PaginationWrapper = styled.div`\n display: flex;\n align-items: center;\n width: 100%;\n justify-content: space-between;\n`;\n\nexport const StyledPagination = styled.nav`\n display: flex;\n align-items: center;\n`;\n\nexport const PageItem = styled.button<{ isActive: boolean }>`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n border-radius: ${borderRadiusTokens.borderRadius08};\n background-color: ${({ isActive }) => (isActive ? colorTokens.neutral300 : colorTokens.neutral0)};\n font-size: 13px;\n font-weight: ${({ isActive }) => isActive && '600'};\n line-height: 2;\n cursor: pointer;\n\n &:hover {\n background-color: ${({ isActive }) => (isActive ? colorTokens.neutral300 : colorTokens.neutral100)};\n }\n`;\n\nexport const Ellipsis = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n`;\n","import React from 'react';\nimport { StyledPagination, PageItem, PaginationWrapper, Ellipsis } from './Pagination.styled';\nimport type { PaginationProps } from './Pagination.types';\nimport { Icon } from '../Icon';\nimport { IconButton } from '../Buttons';\nimport { EndPageIcon, FirstPageIcon, LeftArrowIcon, RightArrowIcon } from '@shoplflow/shopl-assets';\nimport { Text } from '../Text';\nimport PaginationSizeSelector from './PaginationSizeSelector';\n\nconst Pagination = ({\n currentPage,\n pageCount = 5,\n itemsTotalCount,\n pageSize,\n previousPage,\n nextPage,\n gotoPage,\n leftSource,\n rightSource,\n totalCount,\n ...rest\n}: PaginationProps) => {\n const pageTotalCount = totalCount ?? Math.ceil(itemsTotalCount / Number(pageSize));\n const showLeftEllipsis = currentPage > pageCount - 1;\n const showRightEllipsis =\n currentPage < pageTotalCount && Math.ceil((currentPage + 1) / pageCount) < Math.ceil(pageTotalCount / pageCount);\n\n const canPreviousPage = currentPage > 0;\n const canNextPage = currentPage < pageTotalCount - 1;\n\n return (\n <PaginationWrapper {...rest}>\n {leftSource ? leftSource : <div />}\n <StyledPagination data-shoplflow={'Pagination'}>\n <IconButton sizeVar='S' styleVar='GHOST' disabled={!canPreviousPage} onClick={() => gotoPage(0)}>\n <Icon iconSource={FirstPageIcon} color='neutral400' sizeVar='S' />\n </IconButton>\n <IconButton sizeVar='S' styleVar='GHOST' onClick={previousPage} disabled={!canPreviousPage}>\n <Icon iconSource={LeftArrowIcon} color='neutral400' sizeVar='S' />\n </IconButton>\n\n {showLeftEllipsis && (\n <Ellipsis>\n <Text>...</Text>\n </Ellipsis>\n )}\n\n {[...Array(pageTotalCount)].splice(0, pageCount).map(\n (_, idx) =>\n idx + Math.floor(currentPage / pageCount) * pageCount < pageTotalCount && (\n <PageItem\n key={idx}\n isActive={currentPage === idx + Math.floor(currentPage / pageCount) * pageCount}\n onClick={() => gotoPage(idx + Math.floor(currentPage / pageCount) * pageCount)}\n >\n {idx + 1 + Math.floor(currentPage / pageCount) * pageCount}\n </PageItem>\n ),\n )}\n\n {showRightEllipsis && (\n <Ellipsis>\n <Text>...</Text>\n </Ellipsis>\n )}\n\n <IconButton sizeVar='S' styleVar='GHOST' onClick={nextPage} disabled={!canNextPage}>\n <Icon iconSource={RightArrowIcon} color='neutral400' sizeVar='S' />\n </IconButton>\n\n <IconButton sizeVar='S' styleVar='GHOST' disabled={!canNextPage} onClick={() => gotoPage(pageTotalCount - 1)}>\n <Icon iconSource={EndPageIcon} color='neutral400' sizeVar='S' />\n </IconButton>\n </StyledPagination>\n\n {rightSource ? rightSource : <div />}\n </PaginationWrapper>\n );\n};\n\nPagination.SizeSelector = PaginationSizeSelector;\n\nexport default Pagination;\n","import { useSelect } from '@shoplflow/utils';\nimport React from 'react';\nimport { Dropdown } from '../Dropdown';\nimport { Text } from '../Text';\nimport { Menu } from '../Menu';\nimport type { PaginationSizeSelectorProps } from './Pagination.types';\n\nconst PaginationSizeSelector = ({ data, pageSize, setPageSize }: PaginationSizeSelectorProps) => {\n const { selectedItem, handleToggleSelect } = useSelect('SINGLE', data, {\n key: 'value',\n });\n\n const handleClickMenu = (value: string) => {\n handleToggleSelect(value);\n setPageSize(value);\n };\n\n return (\n <Dropdown\n option={'CLICK'}\n width={'66px'}\n trigger={\n <Dropdown.Button\n placeholder={String(pageSize)}\n sizeVar='S'\n value={\n selectedItem && (\n <Text typography='body1_400' color={'neutral400'}>\n {selectedItem.label}\n </Text>\n )\n }\n />\n }\n popper={\n <Dropdown.Content type='FILL'>\n {data.map((item) => {\n const isSelected = item.value === pageSize;\n return (\n <Menu key={item.value} isSelected={isSelected} onClick={() => handleClickMenu(item.value)}>\n {item.label}\n </Menu>\n );\n })}\n </Dropdown.Content>\n }\n />\n );\n};\n\nexport default PaginationSizeSelector;\n","import React, { forwardRef } from 'react';\nimport {\n StyledToggleButton,\n StyledToggleInner,\n StyledToggleInnerInput,\n StyledToggleInnerLabel,\n} from './ToggleButton.styled';\nimport type { ToggleButtonProps, ToggleButtonInnerRadioProps } from './ToggleButton.types';\nimport { Text } from '../Text';\nimport { ToggleButtonContext, useToggleButton } from './useToggleButton';\n\nconst ToggleButton = ({\n fixedWidth,\n children,\n targetName,\n onChange,\n selectedValue,\n sizeVar = 'S',\n ...rest\n}: ToggleButtonProps) => {\n return (\n <ToggleButtonContext.Provider value={{ fixedWidth, targetName, onChange, selectedValue, sizeVar }}>\n <StyledToggleButton data-shoplflow={'ToggleButton'} {...rest}>\n {children}\n </StyledToggleButton>\n </ToggleButtonContext.Provider>\n );\n};\n\nconst ToggleInnerRadio = forwardRef<HTMLInputElement, ToggleButtonInnerRadioProps>(\n ({ label, disabled, value, id, ...rest }, ref) => {\n const { fixedWidth, onChange, targetName, selectedValue, sizeVar } = useToggleButton();\n\n let selected = false;\n\n if (selectedValue && selectedValue === value) {\n selected = true;\n }\n\n return (\n <StyledToggleInner disabled={disabled} type='button'>\n <StyledToggleInnerInput\n width={fixedWidth}\n disabled={disabled}\n selected={selected}\n value={value}\n id={id}\n type='radio'\n ref={ref}\n name={targetName}\n {...rest}\n onChange={onChange}\n />\n\n <StyledToggleInnerLabel\n htmlFor={id}\n width={fixedWidth}\n disabled={disabled}\n selected={selected}\n sizeVar={sizeVar}\n >\n <Text\n lineClamp={1}\n color={selected ? 'neutral700' : 'neutral500'}\n wordBreak='break-all'\n typography={selected ? 'body2_500' : 'body2_400'}\n >\n {label}\n </Text>\n </StyledToggleInnerLabel>\n </StyledToggleInner>\n );\n },\n);\n\nToggleButton.InnerRadio = ToggleInnerRadio;\n\nexport default ToggleButton;\n","import styled from '@emotion/styled';\nimport { borderRadiusTokens, colorTokens, spacingTokens } from '../../styles';\nimport type { ToggleButtonSizeVariantType } from './ToggleButton.types';\nimport { css } from '@emotion/react';\n\nconst getLabelStyleByStatus = (selected: boolean, disabled: boolean) => {\n if (disabled) {\n return css`\n cursor: not-allowed;\n opacity: 0.5;\n `;\n }\n\n if (selected) {\n return css`\n cursor: default;\n background-color: ${colorTokens.neutral0};\n `;\n }\n};\n\nconst getLabelStyleBySizeVar = (sizeVar: ToggleButtonSizeVariantType) => {\n switch (sizeVar) {\n case 'S': {\n return css`\n padding: 4px 8px;\n `;\n }\n\n case 'M': {\n return css`\n padding: 8px;\n `;\n }\n\n default: {\n return;\n }\n }\n};\n\nexport const StyledToggleButton = styled.div`\n display: flex;\n padding: ${spacingTokens.spacing04};\n align-items: center;\n background-color: ${colorTokens.neutral150};\n border-radius: ${borderRadiusTokens.borderRadius06};\n`;\n\nexport const StyledToggleInner = styled.button`\n height: fit-content;\n width: fit-content;\n cursor: pointer;\n\n & input:checked + label {\n background-color: ${colorTokens.neutral0};\n cursor: default;\n }\n`;\n\nexport const StyledToggleInnerLabel = styled.label<{\n width: number;\n disabled?: boolean;\n selected: boolean;\n sizeVar: ToggleButtonSizeVariantType;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: ${({ width }) => `${width}px`};\n padding: 0 12px;\n border-radius: 6px;\n background-color: transparent;\n ${({ disabled, selected }) => getLabelStyleByStatus(selected, Boolean(disabled))}\n ${({ sizeVar }) => getLabelStyleBySizeVar(sizeVar)}\n\n &:hover {\n ${({ disabled }) =>\n !disabled &&\n css`\n cursor: pointer;\n background-color: ${colorTokens.neutral400_5};\n `}\n }\n`;\n\nexport const StyledToggleInnerInput = styled.input`\n position: absolute;\n width: 0;\n height: 0;\n opacity: 0;\n visibility: hidden;\n`;\n","import { createContext, useContext } from 'react';\nimport type { ToggleButtonSizeVariantType } from './ToggleButton.types';\n\nexport type ToggleButtonContextType = {\n fixedWidth: number;\n targetName: string;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n selectedValue?: string;\n sizeVar: ToggleButtonSizeVariantType;\n};\n\nexport const ToggleButtonContext = createContext<ToggleButtonContextType | null>(null);\n\nexport const useToggleButton = () => {\n const context = useContext(ToggleButtonContext);\n\n if (!context) {\n throw new Error('ToggleInnerButton 컴포넌트는 ToggleButton 내부에서 사용해주세요');\n }\n\n return context;\n};\n","import type { $Values } from '@shoplflow/utils';\nimport type { HTMLAttributes, InputHTMLAttributes } from 'react';\n\nexport const ToggleButtonSizeVariants = {\n S: 'S',\n M: 'M',\n} as const;\n\nexport type ToggleButtonSizeVariantType = $Values<typeof ToggleButtonSizeVariants>;\n\nexport interface ToggleButtonProps extends ToggleButtonOptionProps, HTMLAttributes<HTMLDivElement> {\n targetName: string;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n fixedWidth: number;\n selectedValue?: string;\n sizeVar?: ToggleButtonSizeVariantType;\n}\n\nexport interface ToggleButtonOptionProps {}\n\nexport interface ToggleButtonInnerRadioProps\n extends ToggleButtonInnerRadioOptionProps,\n InputHTMLAttributes<HTMLInputElement> {\n label: string;\n}\n\nexport interface ToggleButtonInnerRadioOptionProps {\n disabled?: boolean;\n selected?: boolean;\n}\n","import styled from '@emotion/styled';\nimport { colorTokens, fontWeightTokens } from '../../../styles';\n\nexport const SmallStyledDayDatepickerWrapper = styled.div`\n display: flex;\n width: 280px;\n height: 100%;\n flex-direction: column;\n\n & .dayDatepickerArea .react-datepicker {\n width: 100%;\n height: 100%;\n border: none;\n margin: 0;\n padding: 16px;\n box-sizing: border-box;\n font-family: 'Pretendard', 'Pretendard JP', sans-serif !important;\n\n & .highlighted-sundays {\n color: ${colorTokens.red300};\n }\n\n &__month-text--selected {\n color: #fff;\n }\n\n &-popper {\n width: 432px;\n padding-top: 0;\n }\n\n &__month-container {\n width: 100%;\n }\n\n &__month {\n margin: 0;\n }\n\n &__header {\n border: none;\n background-color: transparent;\n padding: 0;\n font-size: 14px;\n font-style: normal;\n line-height: 18px;\n }\n\n &__month-wrapper {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr 1fr;\n /* gap: 1.75rem; */\n }\n\n &__month-text {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 48px;\n height: 48px;\n border-radius: 50%;\n font-size: 16px;\n color: #333;\n font-weight: 400;\n\n :hover {\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.primary300};\n }\n\n &--keyboard-selected {\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.neutral700};\n }\n\n &--selected:not(.react-datepicker--keyboard-selected) {\n background-color: ${colorTokens.primary300};\n color: ${colorTokens.neutral0};\n }\n }\n\n &__week {\n width: 100%;\n display: flex;\n justify-content: space-between;\n\n &:first-of-type {\n margin-top: 0;\n }\n }\n\n &__day-names {\n width: 100%;\n height: 18px;\n margin: 8px 0 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n &__day-name {\n color: ${colorTokens.neutral400};\n width: 32px;\n margin: 0;\n font-size: 13px;\n font-weight: 500;\n line-height: 1rem;\n\n :last-of-type {\n margin: 0;\n }\n }\n\n &__day {\n width: 32px;\n height: 32px;\n display: flex;\n justify-content: center;\n align-items: center;\n line-height: 32px;\n color: ${colorTokens.neutral700};\n border-radius: 50%;\n font-size: 14px;\n font-weight: 500;\n margin: 0px;\n\n &--keyboard-selected {\n background-color: transparent;\n }\n\n &--outside-month {\n color: ${colorTokens.neutral400};\n }\n\n &--today {\n color: ${colorTokens.primary300};\n font-weight: ${fontWeightTokens.fontWeightRegular};\n }\n\n &--in-selecting-range:not(\n .react-datepicker__day--in-range,\n .react-datepicker__month-text--in-range,\n .react-datepicker__quarter-text--in-range,\n .react-datepicker__year-text--in-range,\n .react-datepicker__day--selecting-range-start\n ) {\n background-color: ${colorTokens.primary100};\n }\n\n &--in-range {\n background-color: ${colorTokens.primary300};\n color: ${colorTokens.neutral0};\n position: relative;\n\n &:not(.react-datepicker__day--range-start):not(.react-datepicker__day--range-end) {\n border-radius: 0;\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.primary300};\n }\n\n &:not(.react-datepicker__day--range-end):after {\n width: 4px;\n height: 100%;\n background-color: ${colorTokens.primary100};\n position: absolute;\n content: '';\n right: -4px;\n top: 0;\n z-index: 1;\n }\n\n &.react-datepicker__day--range-start {\n width: 32px;\n height: 32px;\n background-color: ${colorTokens.primary100};\n margin-right: 0;\n box-sizing: border-box;\n border: unset;\n border-radius: 50% 0 0 50%;\n }\n\n &.react-datepicker__day--range-end {\n width: 32px;\n height: 32px;\n background-color: ${colorTokens.primary100};\n box-sizing: border-box;\n border: unset;\n border-radius: 0 50% 50% 0;\n }\n &.react-datepicker__day--range-end.react-datepicker__day--range-start {\n width: 32px;\n height: 32px;\n background-color: ${colorTokens.primary100};\n box-sizing: border-box;\n border: unset;\n border-radius: 50%;\n }\n &.react-datepicker__day--range-start .each-day {\n width: 32px;\n height: 32px;\n background-color: ${colorTokens.primary300};\n border-radius: 100%;\n }\n\n &.react-datepicker__day--range-end .each-day {\n width: 32px;\n height: 32px;\n background-color: ${colorTokens.primary300};\n border-radius: 100%;\n }\n }\n\n &--selected {\n color: ${colorTokens.neutral0};\n background-color: ${colorTokens.primary300};\n }\n\n &--highlighted {\n color: ${colorTokens.neutral0};\n background-color: ${colorTokens.primary300};\n }\n\n &--disabled {\n cursor: not-allowed;\n opacity: 0.3;\n color: ${colorTokens.neutral700};\n\n &.react-datepicker__day--keyboard-selected {\n background-color: ${colorTokens.neutral200};\n }\n &.react-datepicker__day--excluded {\n color: ${colorTokens.neutral0};\n }\n }\n\n &:not(&--disabled):not(&--selected):not(&--highlighted):not(&--range-end):hover {\n color: ${colorTokens.primary300};\n background-color: ${colorTokens.primary100};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n\n &__year {\n &-wrapper {\n justify-content: center;\n }\n }\n }\n`;\n\nexport const StyledDayDatepicker = styled.div`\n display: flex;\n width: 100%;\n height: 100%;\n flex-direction: column;\n\n & .dayDatepickerArea .react-datepicker {\n width: 100%;\n height: 100%;\n border: none;\n margin: 0;\n padding: 16px 30px 16px;\n box-sizing: border-box;\n font-family: 'Pretendard', 'Pretendard JP', sans-serif !important;\n\n & .highlighted-sundays {\n color: ${colorTokens.red300};\n }\n\n &__month-text--selected {\n color: #fff;\n }\n\n &-popper {\n width: 432px;\n padding-top: 0;\n }\n\n &__month-container {\n width: 100%;\n }\n\n &__month {\n margin: 12px 0 0;\n }\n\n &__header {\n border: none;\n background-color: transparent;\n padding: 0;\n }\n\n &__month-wrapper {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr 1fr;\n /* gap: 1.75rem; */\n }\n\n &__month-text {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 48px;\n height: 48px;\n border-radius: 50%;\n font-size: 16px;\n color: #333;\n\n :hover {\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.primary300};\n }\n\n &--keyboard-selected {\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.neutral700};\n }\n\n &--selected:not(.react-datepicker--keyboard-selected) {\n background-color: ${colorTokens.primary300};\n color: ${colorTokens.neutral0};\n }\n }\n\n &__week {\n margin-top: 8px;\n\n &:first-of-type {\n margin-top: 0;\n }\n }\n\n &__day-names {\n height: 18px;\n margin: 12px 0 0;\n }\n\n &__day-name {\n width: 40px;\n margin: 0 10px 0 0;\n color: ${colorTokens.navy300};\n font-size: 13px;\n font-weight: 500;\n line-height: 1rem;\n\n :last-of-type {\n margin: 0;\n }\n }\n\n &__day {\n width: 40px;\n height: 40px;\n line-height: 40px;\n margin: 0 10px 0 0;\n color: ${colorTokens.neutral700};\n border-radius: 50%;\n font-size: 14px;\n font-weight: 500;\n\n &--keyboard-selected {\n background-color: transparent;\n }\n\n &--outside-month {\n color: ${colorTokens.neutral400};\n }\n\n &--today {\n color: ${colorTokens.primary300};\n font-weight: ${fontWeightTokens.fontWeightRegular};\n }\n\n &--in-selecting-range:not(\n .react-datepicker__day--in-range,\n .react-datepicker__month-text--in-range,\n .react-datepicker__quarter-text--in-range,\n .react-datepicker__year-text--in-range,\n .react-datepicker__day--selecting-range-start\n ) {\n background-color: ${colorTokens.primary100};\n }\n\n &--in-range {\n background-color: ${colorTokens.primary300};\n color: ${colorTokens.neutral0};\n position: relative;\n\n &:not(.react-datepicker__day--range-start):not(.react-datepicker__day--range-end) {\n border-radius: 0;\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.primary300};\n }\n\n &:not(.react-datepicker__day--range-end):not(.react-datepicker__day--range-start):after {\n width: 10px;\n height: 100%;\n background-color: ${colorTokens.primary100};\n position: absolute;\n content: '';\n right: -10px;\n top: 0;\n z-index: 1;\n }\n\n &.react-datepicker__day--range-start {\n width: 50px;\n height: 40px;\n background-color: ${colorTokens.primary100};\n margin-right: 0;\n padding-right: 10px;\n box-sizing: border-box;\n border: unset;\n border-radius: 50% 0 0 50%;\n }\n\n &.react-datepicker__day--range-end {\n width: 40px;\n height: 40px;\n background-color: ${colorTokens.primary100};\n box-sizing: border-box;\n border: unset;\n border-radius: 0 50% 50% 0;\n }\n &.react-datepicker__day--range-end.react-datepicker__day--range-start {\n width: 40px;\n height: 40px;\n background-color: ${colorTokens.primary100};\n box-sizing: border-box;\n border: unset;\n border-radius: 50%;\n margin-right: 10px;\n }\n &.react-datepicker__day--range-start .each-day {\n width: 40px;\n height: 40px;\n background-color: ${colorTokens.primary300};\n border-radius: 100%;\n }\n\n &.react-datepicker__day--range-end .each-day {\n width: 40px;\n height: 40px;\n background-color: ${colorTokens.primary300};\n border-radius: 100%;\n }\n }\n\n &--selected {\n color: ${colorTokens.neutral0};\n background-color: ${colorTokens.primary300};\n }\n\n &--highlighted {\n color: ${colorTokens.neutral0};\n background-color: ${colorTokens.primary300};\n }\n\n &--disabled {\n cursor: not-allowed;\n opacity: 0.3;\n color: ${colorTokens.neutral700};\n\n &.react-datepicker__day--keyboard-selected {\n background-color: ${colorTokens.neutral200};\n }\n &.react-datepicker__day--excluded {\n color: ${colorTokens.neutral0};\n }\n }\n\n &:not(&--disabled):not(&--selected):not(&--highlighted):not(&--range-end):hover {\n color: ${colorTokens.primary300};\n background-color: ${colorTokens.primary100};\n }\n }\n\n &__year {\n &-wrapper {\n justify-content: center;\n }\n }\n }\n`;\n","import { SmallStyledDayDatepickerWrapper, StyledDayDatepicker } from './DayDatepicker.styled';\nimport type { DayDatepickerProps } from './DayDatepicker.types';\nimport DatePicker from 'react-datepicker';\n\nimport 'react-datepicker/dist/react-datepicker.css';\nimport MonthStepper from '../stepper/MonthStepper';\n\nconst DayDatepicker = ({ sizeVar, children, calendarType, ...rest }: DayDatepickerProps) => {\n const Wrapper = sizeVar === 'S' ? SmallStyledDayDatepickerWrapper : StyledDayDatepicker;\n\n /**\n * 범위 선택 캘린더\n */\n if (calendarType.type === 'range') {\n return (\n <Wrapper data-shoplflow={'DayDatepicker'}>\n <div className='dayDatepickerArea'>\n <DatePicker\n inline\n renderCustomHeader={(props) => <MonthStepper sizeVar={sizeVar || 'M'} {...props} />}\n renderDayContents={(dayOfMonth) => {\n return <div className='each-day'>{dayOfMonth}</div>;\n }}\n {...rest}\n selectsRange\n selectsMultiple={undefined}\n onChange={calendarType.handleDayRangeChange}\n >\n {children}\n </DatePicker>\n </div>\n </Wrapper>\n );\n }\n\n /**\n * 다중 선택 캘린더\n */\n if (calendarType.type === 'multiple') {\n return (\n <Wrapper data-shoplflow={'DayDatepicker'}>\n <div className='dayDatepickerArea'>\n <DatePicker\n inline\n renderCustomHeader={(props) => <MonthStepper sizeVar={sizeVar || 'M'} {...props} />}\n renderDayContents={(dayOfMonth) => {\n return <div className='each-day'>{dayOfMonth}</div>;\n }}\n {...rest}\n selectsMultiple\n onChange={calendarType.handleMutlipleDaysChange}\n >\n {children}\n </DatePicker>\n </div>\n </Wrapper>\n );\n }\n\n return (\n <Wrapper data-shoplflow={'DayDatepicker'}>\n <div className='dayDatepickerArea'>\n <DatePicker\n inline\n renderCustomHeader={(props) => <MonthStepper sizeVar={sizeVar || 'M'} {...props} />}\n renderDayContents={(dayOfMonth) => {\n return <div className='each-day'>{dayOfMonth}</div>;\n }}\n {...rest}\n onChange={calendarType.handleDayChange}\n >\n {children}\n </DatePicker>\n </div>\n </Wrapper>\n );\n};\n\nexport default DayDatepicker;\n","import styled from '@emotion/styled';\nimport { colorTokens, fontWeightTokens } from '../../../styles';\n\nexport const Header = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n width: 100%;\n height: 32px;\n gap: 8px;\n`;\n\nexport const Month = styled.p`\n font-size: 18px;\n color: ${colorTokens.neutral700};\n cursor: pointer;\n`;\n\nexport const DatePickerWrapper = styled.div`\n position: absolute;\n z-index: 10;\n top: 36px;\n border-radius: 16px;\n overflow: hidden;\n box-shadow: 0px 10px 30px 0px rgba(51, 51, 51, 0.2);\n height: fit-content;\n padding: 16px 24px 24px 24px;\n background-color: ${colorTokens.neutral0};\n\n & .react-datepicker {\n padding: 0px !important;\n\n &__header--custom {\n margin-bottom: 16px;\n }\n\n &__month-wrapper {\n column-gap: 8px;\n margin-top: 8px;\n }\n\n &__month-text--today {\n font-weight: ${fontWeightTokens.fontWeightRegular};\n }\n }\n`;\n","import { DatePickerWrapper, Month, Header } from './Stepper.styled';\nimport type { DayDatepickerHeaderCustomProps } from '../DayDatepicker/DayDatepicker.types';\nimport DatePicker from 'react-datepicker';\nimport { Icon } from '../../Icon';\nimport { LeftArrowIcon, RightArrowIcon } from '@shoplflow/shopl-assets';\nimport { IconButton } from '../../Buttons';\nimport { useOutsideClick } from '@shoplflow/utils';\nimport YearStepper from './YearStepper';\nimport { ko } from 'date-fns/locale';\nimport { Text } from '../../Text';\n\ntype MonthStepperProps = DayDatepickerHeaderCustomProps & { sizeVar: 'S' | 'M' };\n\nconst MonthStepper = ({\n date,\n monthDate,\n decreaseMonth,\n increaseMonth,\n changeYear,\n changeMonth,\n minDate,\n maxDate,\n locale,\n sizeVar,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n}: MonthStepperProps) => {\n const [isOpen, setIsOpen] = useOutsideClick({\n selector: '.react-datepicker__header',\n });\n\n return (\n <Header className='calendarHeader'>\n <IconButton styleVar='GHOST' sizeVar='S' onClick={decreaseMonth} disabled={prevMonthButtonDisabled}>\n <Icon iconSource={LeftArrowIcon} sizeVar='XS' color={prevMonthButtonDisabled ? 'neutral200' : 'neutral700'} />\n </IconButton>\n <Month\n className='react-datepicker__header'\n onClick={() => {\n setIsOpen((prev) => !prev);\n }}\n >\n <Text typography={sizeVar === 'M' ? 'title1_700' : 'body1_700'}>{`${date.getFullYear()}.${\n monthDate.getMonth() + 1\n }`}</Text>\n </Month>\n {isOpen && (\n <DatePickerWrapper>\n <div className='datepicker-header-wrapper'>\n <DatePicker\n className='datepicker-custom-month'\n onChange={(date) => {\n if (!date) {\n return;\n }\n changeYear && changeYear(date.getFullYear());\n changeMonth && changeMonth(date.getMonth());\n setIsOpen(false);\n }}\n inline\n selectsEnd\n dateFormat='mm'\n selected={date}\n minDate={minDate}\n maxDate={maxDate}\n locale={locale ?? ko}\n showMonthYearPicker\n renderCustomHeader={(props) => <YearStepper {...props} />}\n showFourColumnMonthYearPicker\n />\n </div>\n </DatePickerWrapper>\n )}\n <IconButton styleVar='GHOST' sizeVar='S' onClick={increaseMonth} disabled={nextMonthButtonDisabled}>\n <Icon iconSource={RightArrowIcon} sizeVar='XS' color={nextMonthButtonDisabled ? 'neutral200' : 'neutral700'} />\n </IconButton>\n </Header>\n );\n};\n\nexport default MonthStepper;\n","import { Month, Header } from './Stepper.styled';\nimport type { DayDatepickerHeaderCustomProps } from '../DayDatepicker/DayDatepicker.types';\nimport { Icon } from '../../Icon';\nimport { LeftArrowIcon, RightArrowIcon } from '@shoplflow/shopl-assets';\nimport { IconButton } from '../../Buttons';\nimport { useOutsideClick } from '@shoplflow/utils';\nimport { Popper } from '../../Popper';\nimport { flip, shift } from '@floating-ui/core';\nimport YearSelect from './YearSelect';\nimport { useMemo } from 'react';\nimport { Text } from '../../Text';\n\ntype YearStepperProps = Pick<\n DayDatepickerHeaderCustomProps,\n | 'date'\n | 'decreaseYear'\n | 'prevYearButtonDisabled'\n | 'nextYearButtonDisabled'\n | 'increaseYear'\n | 'changeYear'\n | 'minDate'\n | 'maxDate'\n>;\n\nconst YearStepper = ({\n date,\n decreaseYear,\n prevYearButtonDisabled,\n nextYearButtonDisabled,\n increaseYear,\n changeYear,\n minDate,\n maxDate,\n}: YearStepperProps) => {\n const [isOpen, setIsOpen] = useOutsideClick({\n selector: '.react-datepicker-year-stepper',\n });\n\n const startYear = minDate ? minDate.getFullYear() : 2000;\n const endYear = maxDate ? maxDate.getFullYear() : 2100;\n\n const OptionList = useMemo(\n () =>\n Array.from({ length: endYear - startYear + 1 })\n .fill(0)\n .map((_, index) => ({ value: startYear + index, label: `${startYear + index}` })),\n [startYear, endYear],\n );\n\n return (\n <Header className='calendarHeader'>\n <IconButton\n styleVar='GHOST'\n sizeVar='S'\n onClick={decreaseYear}\n disabled={prevYearButtonDisabled || date.getFullYear() === startYear}\n >\n <Icon iconSource={LeftArrowIcon} sizeVar='XS' color={prevYearButtonDisabled ? 'neutral200' : 'neutral700'} />\n </IconButton>\n <Popper placement='bottom' middlewares={[flip(), shift({ padding: 5 })]}>\n <Popper.Trigger isOpen={isOpen}>\n <Month\n className='react-datepicker-year-stepper'\n onClick={(event) => {\n event.stopPropagation();\n setIsOpen((prev) => !prev);\n }}\n >\n <Text typography='title1_700'>{`${date.getFullYear()}`}</Text>\n </Month>\n </Popper.Trigger>\n <Popper.Portal>\n <YearSelect\n className='react-datepicker-year-stepper'\n optionList={OptionList}\n onClick={({ value }) => {\n changeYear(value);\n setIsOpen(false);\n }}\n parentClassName='react-datepicker-year-stepper'\n maxHeight={`200px`}\n activeValue={date.getFullYear()}\n />\n </Popper.Portal>\n </Popper>\n\n <IconButton\n styleVar='GHOST'\n sizeVar='S'\n onClick={increaseYear}\n disabled={nextYearButtonDisabled || date.getFullYear() === endYear}\n >\n <Icon iconSource={RightArrowIcon} sizeVar='XS' color={nextYearButtonDisabled ? 'neutral200' : 'neutral700'} />\n </IconButton>\n </Header>\n );\n};\n\nexport default YearStepper;\n","import SimpleBarReact from 'simplebar-react';\nimport { Container, OptionList, OptionListItem } from './Year.styled';\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useOutsideClick } from '@shoplflow/utils';\n\nexport type YearSelectProps = {\n optionList: Array<{ value: number; label: string }>;\n className?: string;\n parentClassName?: string;\n activeValue?: number;\n maxHeight?: string;\n onClose?: () => void;\n onClick: (item: { value: number; label: string }) => void;\n};\n\nconst YearSelect = ({ optionList, className, parentClassName, activeValue, maxHeight, onClick }: YearSelectProps) => {\n const optionListRef = useRef<Array<null | HTMLLIElement>>([]);\n const parentRef = useRef<HTMLUListElement>(null);\n\n const [isAllRefMounted, setIsAllRefMounted] = useState<boolean>(false);\n const [isOpened, setIsOpened] = useOutsideClick({\n selector: `.${parentClassName}` || '',\n });\n\n useEffect(() => {\n setIsOpened(isOpened);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (!isAllRefMounted || !activeValue || !maxHeight) {\n return;\n }\n\n const selectedOptionIndex = optionList.findIndex((option) => option?.value === activeValue);\n\n const heightPerOption = optionListRef.current[selectedOptionIndex]?.offsetHeight ?? 0;\n const parentHeight = optionListRef.current[selectedOptionIndex]?.closest('ul')?.clientHeight ?? 0;\n\n if (heightPerOption * (selectedOptionIndex + 1) >= parentHeight) {\n parentRef.current?.scrollTo({ top: heightPerOption * selectedOptionIndex });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isAllRefMounted, activeValue, maxHeight]);\n\n return (\n <Container className={`${parentClassName} ${className}`}>\n <OptionList ref={parentRef} maxHeight={maxHeight}>\n <SimpleBarReact\n style={{\n maxHeight,\n }}\n placeholder={undefined}\n >\n {optionList?.map((option, index) => (\n <OptionListItem\n key={option.value}\n onClick={(event) => {\n event.stopPropagation();\n onClick(option);\n }}\n isActive={activeValue === option.value}\n ref={(el) => {\n optionListRef.current[index] = el;\n index + 1 === optionList.length && setIsAllRefMounted(true);\n }}\n >\n {option.label}\n </OptionListItem>\n ))}\n </SimpleBarReact>\n </OptionList>\n </Container>\n );\n};\n\nexport default YearSelect;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\n\nexport const Header = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n width: 100%;\n height: 32px;\n gap: 8px;\n`;\n\nexport const Month = styled.p`\n font-size: 18px;\n color: ${colorTokens.neutral700};\n cursor: pointer;\n`;\n\nexport const DatePickerWrapper = styled.div`\n position: absolute;\n z-index: 10;\n top: 3rem;\n\n border: 1px solid #eaeaea;\n box-shadow: 0px 10px 30px 0px rgba(51, 51, 51, 0.2);\n .react-datepicker {\n border: 1px solid #eaeaea;\n }\n`;\n\n// Select styles\nexport const Container = styled.div`\n border-radius: 4px;\n background-color: ${colorTokens.neutral0};\n box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.12);\n padding: 4px;\n z-index: 10;\n position: relative;\n top: 0px;\n left: 0px;\n\n & .simplebar-placeholder {\n height: 0px !important;\n }\n`;\n\nexport const OptionList = styled.ul<{ maxHeight?: string }>`\n height: fit-content;\n\n ${({ maxHeight }) => {\n if (maxHeight) {\n return `\n max-height: ${maxHeight};\n overflow: auto;\n overflow-y: scroll; \n\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n\n &::-webkit-scrollbar {\n display: none; /* Chrome, Safari, Opera*/\n }\n `;\n }\n }}\n`;\n\nexport const OptionListItem = styled.li<{ isActive?: boolean }>`\n padding: 7px 8px;\n font-size: 14px;\n font-weight: 500;\n line-height: 18px;\n text-align: left;\n white-space: break-spaces;\n cursor: pointer;\n border-radius: 4px;\n background-color: ${({ isActive }) => isActive && colorTokens.primary300};\n color: ${({ isActive }) => isActive && colorTokens.neutral0};\n\n &:hover {\n background-color: ${({ isActive }) => !isActive && colorTokens.neutral100};\n }\n`;\n","import type { $Values } from '@shoplflow/utils';\nimport type { DatePickerProps, ReactDatePickerCustomHeaderProps } from 'react-datepicker';\nimport type { Locale } from 'react-datepicker/dist/date_utils';\nimport type { SizeVariantProps } from '../../../utils/type/ComponentProps';\n\nexport const DayDatepickerSizeVariants = {\n S: 'S',\n M: 'M',\n} as const;\n\n/**\n * single, multiple, range union type (캘린더의 형태)\n */\nexport type DayCalendarType =\n | { type: 'single'; handleDayChange: (date: Date | null) => void }\n | { type: 'multiple'; handleMutlipleDaysChange: (date: Date[] | null) => void }\n | { type: 'range'; handleDayRangeChange: (dates: [Date | null, Date | null]) => void };\n\nexport type DayDatepickerSizeVariantType = $Values<typeof DayDatepickerSizeVariants>;\n\nexport type DayDatepickerProps = Pick<\n DatePickerProps,\n | 'highlightDates'\n | 'startDate'\n | 'endDate'\n | 'locale'\n | 'selectedDates'\n | 'selected'\n | 'children'\n | 'excludeDates'\n | 'calendarStartDay'\n> &\n DayDatepickerOptionProps;\n\nexport type DayDatepickerOptionProps = {\n /**\n * 캘린더 타입\n */\n calendarType: DayCalendarType;\n} & SizeVariantProps<DayDatepickerSizeVariantType>;\n\nexport type DayDatepickerHeaderCustomProps = ReactDatePickerCustomHeaderProps & {\n minDate?: Date;\n maxDate?: Date;\n locale?: Locale;\n};\n","import React, { useMemo, useState } from 'react';\nimport { EachMonthArea, EachMonthDate, MonthArea, MonthContainer } from './MonthDatepicker.styled';\nimport type { MonthDatepickerProps } from './MonthDatepicker.types';\nimport YearStepper from '../stepper/YearStepper';\nimport { differenceInCalendarMonths, endOfMonth, startOfMonth } from 'date-fns';\n\nconst MonthDatepicker = ({\n handleMonthClick,\n initStartDate,\n initEndDate,\n minDate,\n maxDate,\n onlySingleMonth,\n}: MonthDatepickerProps) => {\n // 연차 이동에 기준이 되는 날짜\n const [currentDate, setCurrentDate] = useState(initStartDate || new Date());\n\n /**\n * [월, 년도]\n */\n const [selectedStartMonthAndYear, setSelectedStartMonthAndYear] = useState(\n initStartDate ? [initStartDate.getMonth(), initStartDate.getFullYear()] : null,\n );\n\n /**\n * [월, 년도]\n */\n const [selectedEndMonthAndYear, setSelectedEndMonthAndYear] = useState(\n initEndDate ? [initEndDate.getMonth(), initEndDate.getFullYear()] : null,\n );\n\n const Months = useMemo(() => {\n return Array.from({ length: 12 }).map((_, index) => index + 1);\n }, []);\n\n const clickMonth = (month: number, year: number) => {\n // 단일 월 선택일 경우\n if (onlySingleMonth) {\n setSelectedStartMonthAndYear([month, year]);\n handleMonthClick({\n startDate: startOfMonth(new Date(year, month - 1)),\n endDate: endOfMonth(new Date(year, month - 1)),\n selectedMonthRange: 1,\n });\n return;\n }\n\n // 시작일 선택 or 시작 + 마지막 월이 이미 선택되어 있을 경우\n if (!selectedStartMonthAndYear || (selectedStartMonthAndYear && selectedEndMonthAndYear)) {\n const startDate = startOfMonth(new Date(year, month - 1));\n const endDate = endOfMonth(new Date(year, month - 1));\n\n setSelectedStartMonthAndYear([month, year]);\n setSelectedEndMonthAndYear(null);\n handleMonthClick({\n startDate,\n endDate,\n // 현재 달 까지 포함\n selectedMonthRange: differenceInCalendarMonths(endDate, startDate) + 1,\n });\n return;\n }\n\n // 날짜가 하나만 선택\n if (selectedStartMonthAndYear && !selectedEndMonthAndYear) {\n // 년도가 이전 or 년도 동일 + 달이 이전\n const [selectedMonth, selectedYear] = selectedStartMonthAndYear;\n if (selectedYear > year || (selectedYear === year && selectedMonth > month)) {\n const startDate = startOfMonth(new Date(year, month - 1));\n const endDate = endOfMonth(new Date(selectedYear, selectedMonth - 1));\n\n setSelectedStartMonthAndYear([month, year]);\n setSelectedEndMonthAndYear([selectedMonth, selectedYear]);\n handleMonthClick({\n startDate,\n endDate,\n // 현재 달 까지 포함\n selectedMonthRange: differenceInCalendarMonths(endDate, startDate) + 1,\n });\n return;\n }\n\n if (selectedMonth !== month || selectedYear !== year) {\n setSelectedEndMonthAndYear([month, year]);\n }\n const startDate = startOfMonth(new Date(selectedYear, selectedMonth - 1));\n const endDate = endOfMonth(new Date(year, month - 1));\n\n handleMonthClick({\n startDate,\n endDate,\n // 현재 달까지 포함\n selectedMonthRange: differenceInCalendarMonths(endDate, startDate) + 1,\n });\n }\n };\n\n return (\n <MonthContainer data-shoplflow={'MonthDatepicker'}>\n <YearStepper\n date={currentDate}\n decreaseYear={() => {\n setCurrentDate(new Date(currentDate.getFullYear() - 1, currentDate.getMonth(), currentDate.getDate()));\n }}\n minDate={minDate}\n maxDate={maxDate}\n prevYearButtonDisabled={minDate ? minDate.getFullYear() === currentDate.getFullYear() : false}\n nextYearButtonDisabled={maxDate ? maxDate.getFullYear() === currentDate.getFullYear() : false}\n increaseYear={() => {\n setCurrentDate(new Date(currentDate.getFullYear() + 1, currentDate.getMonth(), currentDate.getDate()));\n }}\n changeYear={(year) => {\n setCurrentDate(new Date(year, currentDate.getMonth(), currentDate.getDate()));\n }}\n />\n <MonthArea>\n {Months.map((month) => {\n const currentYear = currentDate.getFullYear();\n\n const isStart = currentYear === selectedStartMonthAndYear?.[1] && month === selectedStartMonthAndYear?.[0];\n const isEnd = selectedEndMonthAndYear?.[1] === currentYear && selectedEndMonthAndYear?.[0] === month;\n const isReady = isStart && Boolean(selectedEndMonthAndYear);\n let inRange = false;\n\n let disabled = false;\n\n if (minDate) {\n const minMonth = minDate.getMonth() + 1;\n const minYear = minDate.getFullYear();\n\n // 최소 년도보다 현재 년도가 작음\n if (currentYear < minYear) {\n disabled = true;\n }\n\n // 최소년도와 현재년도가 같고, 월이 작거나 같음\n if (currentYear === minYear) {\n if (month <= minMonth) {\n disabled = true;\n }\n }\n }\n\n if (maxDate) {\n const maxMonth = maxDate.getMonth() + 1;\n const maxYear = maxDate.getFullYear();\n\n // 최대년도보다 현재 년도가 큼\n if (currentYear > maxYear) {\n disabled = true;\n }\n\n // 최대년도와 현재년도가 같고, 월이 크거나 같음\n if (currentYear === maxYear) {\n if (month >= maxMonth) {\n disabled = true;\n }\n }\n }\n\n // 시작일 + 마지막일이 선택된 경우\n if (selectedStartMonthAndYear && selectedEndMonthAndYear) {\n const [startMonth, startYear] = selectedStartMonthAndYear;\n const [endMonth, endYear] = selectedEndMonthAndYear;\n // 시작년 마지막년도 사이의 해당 년도가 존재하는 경우\n if (currentYear > startYear && currentYear < endYear) {\n inRange = true;\n }\n\n // 시작년도, 마지막년도, 현재 년도가 같은 경우\n if (currentYear === startYear && currentYear === endYear) {\n // 현재 월 => 시작 월, 마지막 월 사이에 존재\n if (month >= startMonth && month <= endMonth) {\n inRange = true;\n }\n }\n\n // 시작년도, 현재년도 같음 + 시작월 <= 현재 월\n if (currentYear === startYear && currentYear !== endYear) {\n if (month >= startMonth) {\n inRange = true;\n }\n }\n\n // 시작년도, 마지막 년도 같음 + 마지막 월 >= 현재 월\n if (currentYear === endYear && currentYear !== startYear) {\n if (month <= endMonth) {\n inRange = true;\n }\n }\n }\n\n return (\n <EachMonthArea\n inRange={inRange}\n isStart={isStart}\n isReady={isReady}\n isEnd={isEnd}\n disabled={disabled}\n key={month}\n onClick={() => {\n if (disabled) {\n return;\n }\n\n clickMonth(month, currentDate.getFullYear());\n }}\n >\n <EachMonthDate inRange={inRange} isStart={isStart} isEnd={isEnd} disabled={disabled}>\n {month}\n </EachMonthDate>\n </EachMonthArea>\n );\n })}\n </MonthArea>\n </MonthContainer>\n );\n};\n\nexport default MonthDatepicker;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\nimport type { MonthDatepickerStyleType } from './MonthDatepicker.types';\n\n// 날짜 동그라미 영역 스타일\nexport const getEachDateStyle = (props: MonthDatepickerStyleType) => {\n const { inRange, isStart, isEnd, disabled } = props;\n\n if (isStart || isEnd) {\n return css`\n background-color: ${colorTokens.primary300};\n color: ${colorTokens.neutral0};\n `;\n }\n\n if (inRange) {\n return css`\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.neutral700};\n `;\n }\n\n if (disabled) {\n return css`\n color: ${colorTokens.neutral400};\n cursor: not-allowed;\n `;\n }\n\n return css`\n &:hover {\n background-color: ${colorTokens.primary100};\n }\n `;\n};\n\n// 날짜 래퍼 영역\nexport const getEachMonthAreaStyle = (props: MonthDatepickerStyleType & { isReady: boolean }) => {\n const { inRange, isStart, isEnd, isReady, disabled } = props;\n\n if (isStart && isReady) {\n return css`\n &::after {\n content: '';\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 48px;\n background: ${colorTokens.primary100};\n }\n `;\n }\n\n if (isEnd && !isStart) {\n return css`\n &::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 48px;\n background: ${colorTokens.primary100};\n }\n `;\n }\n\n if (inRange) {\n return css`\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.neutral700};\n `;\n }\n\n if (disabled) {\n return css`\n cursor: not-allowed;\n `;\n }\n};\n\nexport const MonthContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 400px;\n max-width: 400px;\n gap: 16px;\n padding: 16px 24px 24px;\n`;\n\nexport const MonthArea = styled.div`\n width: 100%;\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n grid-row-gap: 16px;\n`;\n\nexport const EachMonthArea = styled.div<MonthDatepickerStyleType & { isReady: boolean }>`\n width: 100%;\n height: 48px;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n\n ${(props) => getEachMonthAreaStyle(props)}\n`;\n\nexport const EachMonthDate = styled.div<MonthDatepickerStyleType>`\n width: 48px;\n height: 48px;\n text-align: center;\n font-size: 14px;\n line-height: 48px;\n padding: 0;\n border-radius: 50%;\n cursor: pointer;\n position: absolute;\n z-index: 10;\n\n ${(props) => getEachDateStyle(props)}\n`;\n","import React, { useState } from 'react';\nimport { YearContainer, YearArea, EachYearArea, EachYearDate } from './AnnualDatepicker.styled';\nimport type { AnnualDatepickerProps } from './AnnualDatepicker.types';\n\nconst AnnualDatepicker = ({\n startYear = 2000,\n endYear = 2100,\n currentYear,\n handleYearClick,\n}: AnnualDatepickerProps) => {\n const [selectedYear, setSelectedYear] = useState(currentYear || new Date().getFullYear());\n const Years = Array.from({ length: endYear - startYear + 1 }).map((_, index) => startYear + index);\n\n const clickYear = (year: number) => {\n setSelectedYear(year);\n handleYearClick(year);\n };\n\n return (\n <YearContainer data-shoplflow={'AnnualDatepicker'}>\n <YearArea>\n {Years.map((year) => {\n return (\n <EachYearArea\n key={year}\n isSelected={selectedYear === year}\n onClick={() => {\n clickYear(year);\n }}\n >\n <EachYearDate isSelected={selectedYear === year}>{year}</EachYearDate>\n </EachYearArea>\n );\n })}\n </YearArea>\n </YearContainer>\n );\n};\n\nexport default AnnualDatepicker;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\n\n// 날짜 동그라미 영역 스타일\nexport const getEachDateStyle = (props: { isSelected?: boolean; disabled?: boolean }) => {\n const { isSelected, disabled } = props;\n\n if (isSelected) {\n return css`\n background-color: ${colorTokens.primary300};\n color: ${colorTokens.neutral0};\n `;\n }\n\n if (disabled) {\n return css`\n color: ${colorTokens.neutral400};\n cursor: not-allowed;\n `;\n }\n\n return css`\n &:hover {\n background-color: ${colorTokens.primary100};\n }\n `;\n};\n\n// 날짜 래퍼 영역\nexport const getEachYearAreaStyle = (props: { isSelected?: boolean; disabled?: boolean }) => {\n const { disabled } = props;\n\n if (disabled) {\n return css`\n cursor: not-allowed;\n `;\n }\n};\n\nexport const YearContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 400px;\n max-width: 400px;\n gap: 16px;\n padding: 16px 24px 24px;\n`;\n\nexport const YearArea = styled.div`\n width: 100%;\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n grid-row-gap: 16px;\n`;\n\nexport const EachYearArea = styled.div<{ isSelected?: boolean; disabled?: boolean }>`\n width: 100%;\n height: 48px;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n\n ${(props) => getEachYearAreaStyle(props)}\n`;\n\nexport const EachYearDate = styled.div<{ isSelected?: boolean; disabled?: boolean }>`\n width: 48px;\n height: 48px;\n text-align: center;\n font-size: 14px;\n line-height: 48px;\n padding: 0;\n border-radius: 50%;\n cursor: pointer;\n position: absolute;\n z-index: 10;\n\n ${(props) => getEachDateStyle(props)}\n`;\n","import { useMemo, useState } from 'react';\n\nimport { WeekArea, WeekContainer, EachWeekArea, EachWeekDate } from './WeekDatepicker.styled';\nimport type { WeekDatepickerProps } from './WeekDatepicker.types';\nimport YearStepper from '../stepper/YearStepper';\nimport { getEndOfISOWeek, getStartOfISOWeek, getWeeksInYear } from '../helpers';\nimport { differenceInCalendarISOWeeks, getISOWeek, getISOWeekYear } from 'date-fns';\n\nconst WeekDatepicker = ({\n handleWeekClick,\n initStartDate,\n initEndDate,\n minDate,\n maxDate,\n onlySingleWeek,\n}: WeekDatepickerProps) => {\n const year = initStartDate?.getFullYear() || new Date().getFullYear();\n const [currentDate, setCurrentDate] = useState(new Date(year, 5, 5));\n\n /**\n * [주, 년도]\n */\n const [selectedStartWeekAndYear, setSelectedStartWeekAndYear] = useState(\n initStartDate ? [getISOWeek(initStartDate || new Date()), getISOWeekYear(initStartDate || new Date())] : null,\n );\n\n /**\n * [주, 년도]\n */\n const [selectedEndWeekAndYear, setSelectedEndWeekAndYear] = useState(\n initEndDate ? [getISOWeek(initEndDate || new Date()), getISOWeekYear(initEndDate || new Date())] : null,\n );\n\n const selectedYear = currentDate.getFullYear();\n\n const Years = useMemo(() => {\n return Array.from({ length: getWeeksInYear(selectedYear) }).map((_, index) => {\n return String(index + 1).padStart(2, '0');\n });\n }, [selectedYear]);\n\n const clickWeek = (week: number, year: number) => {\n // onlySingleWeek or 시작일 선택 or 시작 + 마지막 주이 이미 선택되어 있을 경우\n if (onlySingleWeek || !selectedStartWeekAndYear || (selectedStartWeekAndYear && selectedEndWeekAndYear)) {\n setSelectedStartWeekAndYear([week, year]);\n setSelectedEndWeekAndYear(null);\n handleWeekClick({\n startYear: year,\n startWeek: week,\n startDate: getStartOfISOWeek(week, year),\n endYear: year,\n endWeek: week,\n endDate: getEndOfISOWeek(week, year),\n selectedWeeksRange: 1,\n });\n return;\n }\n\n // 날짜가 하나만 선택\n if (selectedStartWeekAndYear && !selectedEndWeekAndYear) {\n const [selectedWeek, selectedYear] = selectedStartWeekAndYear;\n\n // 선택된 년도가 이전 or 년도 동일 주가 이전\n if (selectedYear > year || (selectedYear === year && selectedWeek > week)) {\n const startDate = getStartOfISOWeek(week, year);\n const endDate = getEndOfISOWeek(selectedWeek, selectedYear);\n\n setSelectedStartWeekAndYear([week, year]);\n setSelectedEndWeekAndYear([selectedWeek, selectedYear]);\n handleWeekClick({\n startYear: year,\n startWeek: week,\n startDate: startDate,\n endYear: selectedYear,\n endWeek: selectedWeek,\n endDate: endDate,\n // 현재 주까지 포함\n selectedWeeksRange: differenceInCalendarISOWeeks(endDate, startDate) + 1,\n });\n return;\n }\n\n if (selectedWeek !== week || selectedYear !== year) {\n setSelectedEndWeekAndYear([week, year]);\n }\n\n const startDate = getStartOfISOWeek(selectedWeek, selectedYear);\n const endDate = getEndOfISOWeek(week, year);\n handleWeekClick({\n startYear: selectedYear,\n startWeek: selectedWeek,\n startDate: startDate,\n endYear: year,\n endWeek: week,\n endDate: endDate,\n // 현재 주까지 포함\n selectedWeeksRange: differenceInCalendarISOWeeks(endDate, startDate) + 1,\n });\n }\n };\n\n return (\n <WeekContainer>\n <YearStepper\n date={currentDate}\n decreaseYear={() => {\n setCurrentDate(new Date(currentDate.getFullYear() - 1, currentDate.getMonth(), currentDate.getDate()));\n }}\n minDate={minDate}\n maxDate={maxDate}\n prevYearButtonDisabled={minDate ? minDate.getFullYear() === currentDate.getFullYear() : false}\n nextYearButtonDisabled={maxDate ? maxDate.getFullYear() === currentDate.getFullYear() : false}\n increaseYear={() => {\n setCurrentDate(new Date(currentDate.getFullYear() + 1, currentDate.getMonth(), currentDate.getDate()));\n }}\n changeYear={(year) => {\n setCurrentDate(new Date(year, currentDate.getMonth(), currentDate.getDate()));\n }}\n />\n\n {/* 주차 그리드 */}\n <WeekArea>\n {Years.map((each, index) => {\n const currentYear = currentDate.getFullYear();\n const currentWeek = Number(each);\n\n const isStart =\n currentYear === selectedStartWeekAndYear?.[1] && currentWeek === selectedStartWeekAndYear?.[0];\n const isEnd = selectedEndWeekAndYear?.[1] === currentYear && selectedEndWeekAndYear?.[0] === currentWeek;\n const isReady = isStart && Boolean(selectedEndWeekAndYear);\n let inRange = false;\n\n let disabled = false;\n\n // 최소 날짜가 있는 경우\n if (minDate) {\n const minWeek = getISOWeek(minDate);\n const minYear = getISOWeekYear(minDate);\n\n // 최소 년도보다 현재 년도가 작음\n if (currentYear < minYear) {\n disabled = true;\n }\n\n // 최소년도와 현재년도가 같고, 주차가 작거나 같음\n if (currentYear === minYear) {\n if (currentWeek <= minWeek) {\n disabled = true;\n }\n }\n }\n\n // 최대 날짜가 있는 경우\n if (maxDate) {\n const maxWeek = getISOWeek(maxDate);\n const maxYear = getISOWeekYear(maxDate);\n\n // 최대년도보다 현재 년도가 큼\n if (currentYear > maxYear) {\n disabled = true;\n }\n\n // 최대년도와 현재년도가 같고, 주차가 크거나 같음\n if (currentYear === maxYear) {\n if (currentWeek >= maxWeek) {\n disabled = true;\n }\n }\n }\n\n // 시작일 + 마지막일이 선택된 경우\n if (selectedStartWeekAndYear && selectedEndWeekAndYear) {\n const [startWeek, startYear] = selectedStartWeekAndYear;\n const [endWeek, endYear] = selectedEndWeekAndYear;\n // 시작년 마지막년도 사이의 해당 년도가 존재하는 경우\n if (currentYear > startYear && currentYear < endYear) {\n inRange = true;\n }\n\n // 시작년도, 마지막년도, 현재 년도가 같은 경우\n if (currentYear === startYear && currentYear === endYear) {\n // 현재 주 => 시작 주, 마지막 주 사이에 존재\n if (currentWeek >= startWeek && currentWeek <= endWeek) {\n inRange = true;\n }\n }\n\n // 시작년도, 현재년도 같음 + 시작주 <= 현재 주\n if (currentYear === startYear && currentYear !== endYear) {\n if (currentWeek >= startWeek) {\n inRange = true;\n }\n }\n\n // 시작년도, 마지막 년도 같음 + 마지막 주 >= 현재 주\n if (currentYear === endYear && currentYear !== startYear) {\n if (currentWeek <= endWeek) {\n inRange = true;\n }\n }\n }\n\n return (\n <EachWeekArea\n inRange={inRange}\n isStart={isStart}\n isReady={isReady}\n isEnd={isEnd}\n disabled={disabled}\n key={index}\n onClick={() => {\n if (disabled) {\n return;\n }\n clickWeek(Number(each), currentDate.getFullYear());\n }}\n >\n <EachWeekDate inRange={inRange} isStart={isStart} isEnd={isEnd} disabled={disabled}>\n W{each}\n </EachWeekDate>\n </EachWeekArea>\n );\n })}\n </WeekArea>\n </WeekContainer>\n );\n};\n\nexport default WeekDatepicker;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\nimport type { WeekDatepickerStyleType } from './WeekDatepicker.types';\n\n// 날짜 동그라미 영역 스타일\nexport const getEachDateStyle = (props: WeekDatepickerStyleType) => {\n const { inRange, isStart, isEnd, disabled } = props;\n\n if (isStart || isEnd) {\n return css`\n background-color: ${colorTokens.primary300};\n color: ${colorTokens.neutral0};\n `;\n }\n\n if (inRange) {\n return css`\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.neutral700};\n `;\n }\n\n if (disabled) {\n return css`\n color: ${colorTokens.neutral400};\n cursor: not-allowed;\n `;\n }\n\n return css`\n &:hover {\n background-color: ${colorTokens.primary100};\n }\n `;\n};\n\n// 날짜 래퍼 영역\nexport const getEachWeekAreaStyle = (props: WeekDatepickerStyleType & { isReady: boolean }) => {\n const { inRange, isStart, isEnd, isReady, disabled } = props;\n\n if (isStart && isReady) {\n return css`\n &::after {\n content: '';\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 24px;\n background: ${colorTokens.primary100};\n }\n `;\n }\n\n if (isEnd && !isStart) {\n return css`\n &::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 24px;\n background: ${colorTokens.primary100};\n }\n `;\n }\n\n if (inRange) {\n return css`\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.neutral700};\n `;\n }\n\n if (disabled) {\n return css`\n cursor: not-allowed;\n `;\n }\n};\n\nexport const WeekContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 400px;\n max-width: 400px;\n gap: 16px;\n padding: 16px 24px 24px;\n`;\n\nexport const WeekArea = styled.div`\n width: 100%;\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n grid-row-gap: 8px;\n`;\n\nexport const EachWeekArea = styled.div<WeekDatepickerStyleType & { isReady: boolean }>`\n width: 100%;\n height: 48px;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n\n ${(props) => getEachWeekAreaStyle(props)}\n`;\n\nexport const EachWeekDate = styled.div<WeekDatepickerStyleType>`\n width: 48px;\n height: 48px;\n text-align: center;\n font-size: 14px;\n line-height: 48px;\n padding: 0;\n border-radius: 50%;\n cursor: pointer;\n position: absolute;\n z-index: 10;\n\n ${(props) => getEachDateStyle(props)}\n`;\n","import { addWeeks, endOfISOWeek, getISOWeeksInYear, startOfISOWeek } from 'date-fns';\n\n/**\n * ISO8601 기준, 해당 년도의 주차를 반환\n * @param year\n * @returns\n */\nexport function getWeeksInYear(year: number): number {\n return getISOWeeksInYear(new Date(year, 5, 5));\n}\n\n/**\n * @description 선택된 주의 첫번째 날짜\n * @param week\n * @param year\n * @returns\n */\nexport const getStartOfISOWeek = (week: number, year: number) => {\n // 1월 4일을 기준으로 첫째 주의 시작을 찾습니다 (ISO 8601 규칙에 따라)\n const januaryFourth = new Date(year, 0, 4);\n const firstWeekStart = startOfISOWeek(januaryFourth);\n\n // 입력받은 주차만큼 주를 더해 주차의 첫째 날 계산\n const startOfWeek = addWeeks(firstWeekStart, week - 1);\n\n return startOfWeek;\n};\n\n/**\n * @description 선택된 주의 마지막 날짜\n * @param week\n * @param year\n * @returns\n */\nexport const getEndOfISOWeek = (week: number, year: number) => {\n // 1월 4일을 기준으로 첫째 주의 시작을 찾습니다 (ISO 8601 규칙에 따라)\n const januaryFourth = new Date(year, 0, 4);\n const firstWeekStart = startOfISOWeek(januaryFourth);\n\n // 입력받은 주차만큼 주를 더해 주차의 첫째 날 계산\n const startOfWeek = addWeeks(firstWeekStart, week - 1);\n const endOfWeek = endOfISOWeek(startOfWeek);\n return endOfWeek;\n};\n","import React from 'react';\nimport { createPortal } from 'react-dom';\n\nconst PopperPortal = () => {\n return (\n <>\n {createPortal(\n <div\n id={'popper-portal-key'}\n style={{\n zIndex: 20001,\n position: 'relative',\n }}\n />,\n document.body,\n )}\n </>\n );\n};\n\nexport default PopperPortal;\n","import React from 'react';\n\nimport { useDomain } from '../hooks/useDomain';\nimport type { DomainType } from '../types/Domain';\nimport ModalPortal from '../portal/ModalPortal';\nimport PopperPortal from '../portal/PopperPortal';\nimport ModalProvider from '../components/Modal/providers/ModalProvider';\nimport { domAnimation, LazyMotion } from 'framer-motion';\n\nexport interface ShoplflowProviderProps {\n domain?: DomainType;\n children: React.ReactNode;\n}\n\nconst ShoplflowProvider = ({ children, domain = 'SHOPL' }: ShoplflowProviderProps) => {\n useDomain(domain);\n\n return (\n <ModalProvider>\n <PopperPortal />\n <ModalPortal />\n <LazyMotion features={domAnimation}>{children}</LazyMotion>\n </ModalProvider>\n );\n};\n\nexport default ShoplflowProvider;\n"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/classnames@2.3.2/node_modules/classnames/index.js","../src/hooks/useDomain.ts","../src/portal/ModalPortal.tsx","../src/animation/fadeInOut.ts","../src/components/BackDrop/BackDrop.styled.ts","../src/components/BackDrop/BackDrop.tsx","../src/components/Avatar/Avatar.styled.ts","../src/components/Avatar/Avatar.tsx","../src/components/Avatar/Avatar.types.ts","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.styled.ts","../src/styles/tokens.ts","../src/components/StackContainer/StackContainer.tsx","../src/components/StackContainer/StackContainer.styled.ts","../src/components/Text/Text.tsx","../src/components/Text/Text.styled.ts","../src/components/Modal/ModalContainer.tsx","../src/components/Modal/Modal.styled.ts","../src/components/Modal/Modal.types.ts","../src/hooks/useViewportSizeObserver.ts","../src/components/Modal/ModalFooter.tsx","../src/components/Modal/ModalBody.tsx","../src/components/ScrollArea/ScrollArea.tsx","../src/components/Modal/ModalHeader.tsx","../src/components/Modal/hooks/useModalValue.ts","../src/components/Modal/providers/ModalContext.ts","../src/components/Modal/hooks/useHandleModal.ts","../src/components/Modal/providers/ModalProvider.tsx","../src/components/Modal/index.ts","../src/components/Switch/Switch.styled.ts","../src/hooks/useOnToggle.ts","../src/components/Switch/Switch.tsx","../src/components/Chips/ChipToggle/ChipToggle.types.ts","../src/components/Chips/ChipToggle/ChipToggle.styled.ts","../src/styles/utils/getDisabledStyle.ts","../src/components/Chips/ChipToggle/ChipToggle.tsx","../src/components/Chips/ChipButton/ChipButton.styled.ts","../src/utils/getNextColor.ts","../src/components/Chips/ChipButton/ChipButton.tsx","../src/components/Chips/ChipButton/ChipButton.types.ts","../src/components/Buttons/Button/Button.tsx","../src/components/Buttons/Button/Button.styled.tsx","../src/assets/LoadingSpinner.tsx","../src/components/Buttons/Button/Button.types.ts","../src/components/Buttons/IconButton/IconButton.tsx","../src/components/Buttons/IconButton/IconButton.styled.ts","../src/components/Buttons/IconButton/IconButton.types.ts","../src/components/Callout/Callout.styled.ts","../src/components/Callout/Callout.tsx","../src/components/Callout/Callout.types.ts","../src/components/Popper/index.ts","../src/components/Popper/Popper.tsx","../src/components/Popper/Popper.styled.ts","../src/components/Popper/usePopper.ts","../src/hooks/useMergeRef.ts","../src/components/Dropdown/Dropdown.tsx","../src/components/Dropdown/Dropdown.styled.ts","../src/components/Dropdown/useDropdown.ts","../src/components/Dropdown/DropdownButton.tsx","../src/components/Inputs/common/input.styled.ts","../src/components/Icon/Icon.tsx","../src/components/Icon/Icon.styled.ts","../src/components/Icon/Icon.types.ts","../src/components/Dropdown/DropdownContent.tsx","../src/components/Menu/Menu.tsx","../src/components/Menu/Menu.styled.ts","../src/components/ControlButtons/MinusButton/MinusButton.tsx","../src/components/ControlButtons/MinusButton/MinusButton.styled.ts","../src/components/ControlButtons/Checkbox/Checkbox.tsx","../src/components/ControlButtons/Checkbox/Checkbox.styled.ts","../src/components/ControlButtons/Checkbox/Checkbox.types.ts","../src/components/ControlButtons/Radio/Radio.tsx","../src/components/ControlButtons/Radio/Radio.styled.ts","../src/components/Menu/Menu.types.ts","../src/components/List/List.tsx","../src/components/List/List.styled.ts","../src/components/Tag/Tag.styled.ts","../src/components/Tag/Tag.tsx","../src/components/Tag/Tag.types.ts","../src/components/Tree/Tree.tsx","../src/components/Tree/Tree.styled.ts","../src/components/Tree/Tree.types.ts","../src/animation/AnimateKey.ts","../src/components/Inputs/Input/Input.tsx","../src/components/Inputs/Input/Input.styled.tsx","../src/components/Inputs/common/TextCounter.tsx","../src/styles/IconAssets.tsx","../.storybook/useStoryDomain.ts","../src/components/Inputs/Input/utils/getNumberLimiteRange.ts","../src/components/Inputs/InputButton/InputButton.tsx","../src/components/Inputs/InputButton/InputButton.styled.ts","../src/components/Inputs/TextArea/TextArea.tsx","../src/components/Inputs/TextArea/TextArea.styled.ts","../src/components/Inputs/SelectInputButton/SelectInputButton.tsx","../src/components/Inputs/SelectInputButton/SelectInputButton.styled.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/Tooltip.styled.ts","../src/components/Tooltip/TooltipContent.tsx","../src/components/Tabs/useTabs.ts","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/Tab.tsx","../src/components/Tabs/Tabs.styled.ts","../src/components/Tabs/Indicator.styled.ts","../src/components/Tabs/Indicator.tsx","../src/components/Tabs/Tabs.types.ts","../src/components/Pagination/Pagination.styled.ts","../src/components/Pagination/Pagination.tsx","../src/components/Pagination/PaginationSizeSelector.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/ToggleButton/ToggleButton.styled.ts","../src/components/ToggleButton/useToggleButton.ts","../src/components/ToggleButton/ToggleButton.types.ts","../src/components/Datepickers/DayDatepicker/DayDatepicker.styled.ts","../src/components/Datepickers/DayDatepicker/DayDatepicker.tsx","../src/components/Datepickers/stepper/Stepper.styled.tsx","../src/components/Datepickers/stepper/MonthStepper.tsx","../src/components/Datepickers/stepper/YearStepper.tsx","../src/components/Datepickers/stepper/YearSelect.tsx","../src/components/Datepickers/stepper/Year.styled.tsx","../src/components/Datepickers/DayDatepicker/DayDatepicker.types.ts","../src/components/Datepickers/MonthDatepicker/MonthDatepicker.tsx","../src/components/Datepickers/MonthDatepicker/MonthDatepicker.styled.ts","../src/components/Datepickers/AnnualDatepicker/AnnualDatepicker.tsx","../src/components/Datepickers/AnnualDatepicker/AnnualDatepicker.styled.ts","../src/components/Datepickers/WeekDatepicker/WeekDatepicker.tsx","../src/components/Datepickers/WeekDatepicker/WeekDatepicker.styled.ts","../src/components/Datepickers/helpers/week.ts","../src/portal/PopperPortal.tsx","../src/providers/ShoplflowProvider.tsx"],"names":["classNames","useContext","AnimatePresence","motion","styled","size","jsx","background","Stack","forwardRef","createStackComponent","React","css","useEffect","useState","useCallback","noop","useMemo","modal","removeModal","jsxs","getLineTypographyBySizeVar","getStyleBySizeVar","getStyleByStyleVar","offset","createContext","useMergeRefs","value","disabled","Container","IconButton","Fragment","RightElementWrapper","_a","useRef","_b","useId","flip","shift","LayoutGroup","DatePicker","LeftArrowIcon","RightArrowIcon","useOutsideClick","Header","Month","DatePickerWrapper","OptionList","date","Wrapper","startDate","endDate","getEachDateStyle","year","selectedYear","createPortal","PopperPortal"],"mappings":"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","sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { useEffect, useState } from 'react';\nimport type { DomainType } from '../types/Domain';\n\ntype UseDomainType = (domain?: DomainType) => [DomainType | undefined];\n\nexport const useDomain: UseDomainType = (domain = 'SHOPL') => {\n const [domainType, setDomainType] = useState<DomainType | undefined>(undefined);\n\n useEffect(() => {\n if (domain) {\n setDomainType(domain);\n }\n }, [domain]);\n\n useEffect(() => {\n if (!domainType) {\n return;\n }\n document.documentElement.dataset.shoplflow = domainType?.toLowerCase();\n }, [domainType]);\n\n return [domainType];\n};\n\nexport const getDomain = () => {\n return document.documentElement.dataset.shoplflow as Lowercase<DomainType>;\n};\n","import React, { useContext } from 'react';\nimport BackDrop from '../components/BackDrop/BackDrop';\nimport { createPortal } from 'react-dom';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport styled from '@emotion/styled';\nimport { ModalContext } from '../components';\n\nexport const SpaceMarginWrapper = styled(motion.div)`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n z-index: 101;\n //padding: 32px 20px;\n width: 100%;\n height: 100%;\n`;\n\nconst ModalPortal = () => {\n const modal = useContext(ModalContext);\n return (\n <>\n {createPortal(\n <AnimatePresence>\n {modal.map((item, index) => (\n <BackDrop key={index} zIndex={item.zIndex}>\n <SpaceMarginWrapper>{item.component}</SpaceMarginWrapper>\n </BackDrop>\n ))}\n </AnimatePresence>,\n document.body,\n )}\n </>\n );\n};\n\nexport default ModalPortal;\n","export const fadeInOut = {\n initial: {\n opacity: 0,\n },\n animate: {\n opacity: 1,\n transition: {\n duration: 0.1,\n },\n },\n exit: {\n opacity: 0,\n transition: {\n duration: 0.1,\n },\n },\n};\n","import styled from '@emotion/styled';\nimport { motion } from 'framer-motion';\n\nexport const BackDropStyled = styled(motion.div)<{ zIndex?: number }>`\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n top: 0;\n left: 0;\n z-index: ${({ zIndex }) => zIndex || 20000};\n width: 100%;\n height: 100%;\n background: rgba(51, 51, 51, 0.6);\n`;\n","import React from 'react';\nimport type { BackDropProps } from './BackDrop.types';\nimport { fadeInOut } from '../../animation/fadeInOut';\nimport { BackDropStyled } from './BackDrop.styled';\n\nconst BackDrop = ({ children, zIndex }: BackDropProps) => {\n return (\n <BackDropStyled\n variants={fadeInOut}\n initial={'initial'}\n animate={'animate'}\n exit={'exit'}\n data-shoplflow={'BackDrop'}\n zIndex={zIndex}\n >\n {children}\n </BackDropStyled>\n );\n};\n\nexport default BackDrop;\n","import styled from '@emotion/styled';\nimport type { AvatarOptionProps } from './Avatar.types';\n\nconst getSizeBySizeVariant = (size: AvatarOptionProps['sizeVar']) => {\n switch (size) {\n case 'XS':\n return '18px';\n case 'S':\n return '24px';\n case 'M':\n return '32px';\n case 'L':\n return '48px';\n case 'XL':\n return '72px';\n default:\n return '32px';\n }\n};\n\nexport const StyledAvatar = styled.picture<AvatarOptionProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${({ sizeVar }) => getSizeBySizeVariant(sizeVar)};\n height: ${({ sizeVar }) => getSizeBySizeVariant(sizeVar)};\n position: relative;\n overflow: hidden;\n border-radius: 50%;\n`;\n\nexport const StyledAvatarContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: fit-content;\n height: fit-content;\n position: relative;\n`;\n\nexport const StyledAvatarImage = styled.img`\n width: 100%;\n height: 100%;\n`;\n\nexport const StyledAvatarBadge = styled.div`\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n width: fit-content;\n height: fit-content;\n bottom: 0;\n right: 0;\n`;\n","import React from 'react';\nimport { StyledAvatar, StyledAvatarBadge, StyledAvatarContainer, StyledAvatarImage } from './Avatar.styled';\nimport type { AvatarProps } from './Avatar.types';\nimport AvatarImageNone from '../../assets/mocks/AvatarNone.png';\n\nconst Avatar = ({ src, badge, ...rest }: AvatarProps) => {\n return (\n <StyledAvatarContainer>\n <StyledAvatar data-shoplflow={'Avatar'} {...rest}>\n {/*eslint-disable-next-line @typescript-eslint/no-unsafe-assignment*/}\n <StyledAvatarImage src={(src ?? AvatarImageNone) as string} />\n </StyledAvatar>\n <StyledAvatarBadge>{badge}</StyledAvatarBadge>\n </StyledAvatarContainer>\n );\n};\n\nexport default Avatar;\n","import type { $Values } from '@shoplflow/utils';\nimport type { SizeVariantProps } from '../../utils/type/ComponentProps';\nimport type { ImgHTMLAttributes, ReactNode } from 'react';\n\nexport const AvatarSizeVariants = {\n XS: 'XS',\n S: 'S',\n M: 'M',\n L: 'L',\n XL: 'XL',\n} as const;\n\nexport type AvatarSizeVariantType = $Values<typeof AvatarSizeVariants>;\n\nexport interface AvatarProps extends AvatarOptionProps {}\nexport interface AvatarOptionProps\n extends SizeVariantProps<AvatarSizeVariantType>,\n ImgHTMLAttributes<HTMLImageElement> {\n /**\n * 아바타 우측 하단에 배지를 표시합니다.\n */\n badge?: ReactNode;\n}\n","import type { ComponentPropsWithRef } from 'react';\nimport React, { forwardRef } from 'react';\n\nimport { motion } from 'framer-motion';\n\nimport type { MotionStackComponentType, StackComponentType, StackGenericProps, StackProps } from './Stack.types';\n\nimport { StyledStack } from './Stack.styled';\nimport type { StringElementType } from '../../utils/type/ComponentProps';\n\n/**\n *\n * @param {StackProps} stackOption\n * @return {StackComponentType}\n */\nconst createStackComponent = (stackOption?: StackProps): StackComponentType =>\n forwardRef(function Stack<T extends StringElementType = 'div'>(\n {\n as = 'div',\n spacing = stackOption?.spacing,\n direction = stackOption?.direction ?? 'column',\n align = stackOption?.align ?? 'flex-start',\n justify = stackOption?.justify ?? 'flex-start',\n width = stackOption?.width ?? 'initial',\n height = stackOption?.height ?? 'initial',\n flexWrap = stackOption?.flexWrap ?? 'initial',\n flex = stackOption?.flex ?? 'initial',\n radius = stackOption?.radius,\n background = stackOption?.background,\n ...rest\n }: StackGenericProps<T>,\n ref: ComponentPropsWithRef<StringElementType>['ref'],\n ) {\n return (\n <StyledStack\n as={as}\n spacing={spacing}\n ref={ref}\n direction={direction}\n align={align}\n justify={justify}\n width={width}\n height={height}\n flexWrap={flexWrap}\n flex={flex}\n background={background}\n radius={radius}\n {...rest}\n data-shoplflow={'Stack'}\n >\n {rest.children}\n </StyledStack>\n );\n });\n\ninterface StackType extends StackComponentType {\n Vertical: StackComponentType;\n Horizontal: StackComponentType;\n}\n\nexport const Stack = createStackComponent() as StackType;\nStack.Vertical = createStackComponent({ direction: 'column' });\nStack.Horizontal = createStackComponent({ direction: 'row' });\n\ninterface MotionStackType extends MotionStackComponentType {\n Vertical: MotionStackComponentType;\n Horizontal: MotionStackComponentType;\n}\n\nexport const MotionStack = motion(Stack) as MotionStackType;\nMotionStack.Vertical = motion(Stack.Vertical);\nMotionStack.Horizontal = motion(Stack.Horizontal);\n\nexport default Stack;\n","import styled from '@emotion/styled';\n\nimport type { StackOptionProps } from './Stack.types';\nimport { borderRadiusTokens, colorTokens, spacingTokens } from '../../styles';\n\nexport const StyledStack = styled.div<StackOptionProps>`\n display: flex;\n width: ${({ width }) => width};\n max-width: ${({ maxWidth }) => maxWidth};\n min-width: ${({ minWidth }) => minWidth};\n height: ${({ height }) => height};\n max-height: ${({ maxHeight }) => maxHeight};\n min-height: ${({ minHeight }) => minHeight};\n flex-direction: ${({ direction }) => direction};\n align-items: ${({ align }) => align};\n justify-content: ${({ justify }) => justify};\n gap: ${({ spacing }) => spacing && spacingTokens[spacing]};\n flex-wrap: ${({ flexWrap }) => flexWrap};\n flex: ${({ flex }) => flex};\n background: ${({ background }) => (background ? colorTokens[background] : 'transparent')};\n border-radius: ${({ radius }) => radius && borderRadiusTokens[radius]};\n animation: 0.2s all ease-in-out;\n`;\n","/* Generate by scripts/generate-tokens.js */\n/* eslint-disable */\nconst fontWeightRegular = 'var(--font-weight-regular)';\nconst fontWeightMedium = 'var(--font-weight-medium)';\nconst fontWeightBold = 'var(--font-weight-bold)';\nexport const fontWeightTokens = {\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold,\n};\nconst borderRadius04 = 'var(--border-radius04)';\nconst borderRadius06 = 'var(--border-radius06)';\nconst borderRadius08 = 'var(--border-radius08)';\nconst borderRadius12 = 'var(--border-radius12)';\nconst borderRadius16 = 'var(--border-radius16)';\nconst borderRadius20 = 'var(--border-radius20)';\nexport const borderRadiusTokens = {\n borderRadius04,\n borderRadius06,\n borderRadius08,\n borderRadius12,\n borderRadius16,\n borderRadius20,\n};\nconst coolgray300 = 'var(--coolgray300)';\nconst coolgray200 = 'var(--coolgray200)';\nconst coolgray100 = 'var(--coolgray100)';\nconst coolgray50 = 'var(--coolgray50)';\nconst navy400 = 'var(--navy400)';\nconst navy300 = 'var(--navy300)';\nconst neutral0 = 'var(--neutral0)';\nconst neutral100 = 'var(--neutral100)';\nconst neutral150 = 'var(--neutral150)';\nconst neutral200 = 'var(--neutral200)';\nconst neutral300 = 'var(--neutral300)';\nconst neutral350 = 'var(--neutral350)';\nconst neutral400 = 'var(--neutral400)';\nconst neutral500 = 'var(--neutral500)';\nconst neutral600 = 'var(--neutral600)';\nconst neutral700 = 'var(--neutral700)';\nconst neutral400_5 = 'var(--neutral400_5)';\nconst red300 = 'var(--red300)';\nconst red200 = 'var(--red200)';\nconst red100 = 'var(--red100)';\nconst ocean300 = 'var(--ocean300)';\nconst ocean200 = 'var(--ocean200)';\nconst ocean100 = 'var(--ocean100)';\nconst purple400 = 'var(--purple400)';\nconst purple300 = 'var(--purple300)';\nconst purple100 = 'var(--purple100)';\nconst yellow300 = 'var(--yellow300)';\nconst yellow200 = 'var(--yellow200)';\nconst yellow100 = 'var(--yellow100)';\nconst green300 = 'var(--green300)';\nconst green200 = 'var(--green200)';\nconst green100 = 'var(--green100)';\nconst shopl400 = 'var(--shopl400)';\nconst shopl300 = 'var(--shopl300)';\nconst shopl200 = 'var(--shopl200)';\nconst shopl150 = 'var(--shopl150)';\nconst shopl100 = 'var(--shopl100)';\nconst hada400 = 'var(--hada400)';\nconst hada300 = 'var(--hada300)';\nconst hada200 = 'var(--hada200)';\nconst hada150 = 'var(--hada150)';\nconst hada100 = 'var(--hada100)';\nconst background = 'var(--background)';\nconst primary100 = 'var(--primary100)';\nconst primary150 = 'var(--primary150)';\nconst primary200 = 'var(--primary200)';\nconst primary300 = 'var(--primary300)';\nconst primary400 = 'var(--primary400)';\nexport const colorTokens = {\n coolgray300,\n coolgray200,\n coolgray100,\n coolgray50,\n navy400,\n navy300,\n neutral0,\n neutral100,\n neutral150,\n neutral200,\n neutral300,\n neutral350,\n neutral400,\n neutral500,\n neutral600,\n neutral700,\n neutral400_5,\n red300,\n red200,\n red100,\n ocean300,\n ocean200,\n ocean100,\n purple400,\n purple300,\n purple100,\n yellow300,\n yellow200,\n yellow100,\n green300,\n green200,\n green100,\n shopl400,\n shopl300,\n shopl200,\n shopl150,\n shopl100,\n hada400,\n hada300,\n hada200,\n hada150,\n hada100,\n background,\n primary100,\n primary150,\n primary200,\n primary300,\n primary400,\n};\nconst spacing02 = 'var(--spacing02)';\nconst spacing04 = 'var(--spacing04)';\nconst spacing06 = 'var(--spacing06)';\nconst spacing08 = 'var(--spacing08)';\nconst spacing12 = 'var(--spacing12)';\nconst spacing16 = 'var(--spacing16)';\nconst spacing20 = 'var(--spacing20)';\nconst spacing24 = 'var(--spacing24)';\nconst spacing30 = 'var(--spacing30)';\nconst spacing32 = 'var(--spacing32)';\nconst spacing40 = 'var(--spacing40)';\nexport const spacingTokens = {\n spacing02,\n spacing04,\n spacing06,\n spacing08,\n spacing12,\n spacing16,\n spacing20,\n spacing24,\n spacing30,\n spacing32,\n spacing40,\n};\nconst dropShadow = 'var(--dropShadow)';\nexport const boxShadowTokens = {\n dropShadow,\n};\nconst heading1_700 = '.heading1_700';\nconst heading1_400 = '.heading1_400';\nconst heading2_700 = '.heading2_700';\nconst heading2_400 = '.heading2_400';\nconst heading3_700 = '.heading3_700';\nconst heading3_400 = '.heading3_400';\nconst title1_700 = '.title1_700';\nconst title1_400 = '.title1_400';\nconst title2_700 = '.title2_700';\nconst title2_500 = '.title2_500';\nconst title2_400 = '.title2_400';\nconst body1_700 = '.body1_700';\nconst body1_500 = '.body1_500';\nconst body1_400 = '.body1_400';\nconst body2_700 = '.body2_700';\nconst body2_500 = '.body2_500';\nconst body2_400 = '.body2_400';\nconst body3_400 = '.body3_400';\nconst body3_500 = '.body3_500';\nconst caption_700 = '.caption_700';\nconst caption_400 = '.caption_400';\nconst paragraph1 = '.paragraph1';\nconst paragraph2 = '.paragraph2';\nexport const typographyTokens = {\n heading1_700,\n heading1_400,\n heading2_700,\n heading2_400,\n heading3_700,\n heading3_400,\n title1_700,\n title1_400,\n title2_700,\n title2_500,\n title2_400,\n body1_700,\n body1_500,\n body1_400,\n body2_700,\n body2_500,\n body2_400,\n body3_400,\n body3_500,\n caption_700,\n caption_400,\n paragraph1,\n paragraph2,\n};\n","import type { ComponentPropsWithRef } from 'react';\nimport React, { forwardRef } from 'react';\n\nimport { motion } from 'framer-motion';\n\nimport type {\n MotionStackContainerComponentType,\n StackContainerComponentType,\n StackContainerGenericProps,\n StackContainerProps,\n} from './StackContainer.types';\n\nimport { StyledStackContainer } from './StackContainer.styled';\nimport type { StringElementType } from '../../utils/type/ComponentProps';\n\n/**\n *\n * @param {StackContainerProps} stackOption\n * @return {StackContainerComponentType}\n */\nconst createStackComponent = (stackOption?: StackContainerProps): StackContainerComponentType =>\n forwardRef(function Stack<T extends StringElementType = 'div'>(\n {\n as = 'div',\n spacing = stackOption?.spacing,\n direction = stackOption?.direction ?? 'column',\n align = stackOption?.align ?? 'flex-start',\n justify = stackOption?.justify ?? 'flex-start',\n width = stackOption?.width ?? 'initial',\n height = stackOption?.height ?? 'initial',\n flexWrap = stackOption?.flexWrap ?? 'initial',\n flex = stackOption?.flex ?? 'initial',\n radius = stackOption?.radius,\n margin = stackOption?.margin ?? 'initial',\n padding = stackOption?.padding ?? 'initial',\n background = stackOption?.background,\n ...rest\n }: StackContainerGenericProps<T>,\n ref: ComponentPropsWithRef<StringElementType>['ref'],\n ) {\n return (\n <StyledStackContainer\n as={as}\n spacing={spacing}\n ref={ref}\n direction={direction}\n align={align}\n justify={justify}\n width={width}\n height={height}\n flexWrap={flexWrap}\n flex={flex}\n background={background}\n radius={radius}\n margin={margin}\n padding={padding}\n {...rest}\n data-shoplflow={'StackContainer'}\n >\n {rest.children}\n </StyledStackContainer>\n );\n });\n\ninterface StackContainerType extends StackContainerComponentType {\n Vertical: StackContainerComponentType;\n Horizontal: StackContainerComponentType;\n}\n\nexport const StackContainer = createStackComponent() as StackContainerType;\nStackContainer.Vertical = createStackComponent({ direction: 'column' });\nStackContainer.Horizontal = createStackComponent({ direction: 'row' });\n\ninterface MotionStackType extends MotionStackContainerComponentType {\n Vertical: MotionStackContainerComponentType;\n Horizontal: MotionStackContainerComponentType;\n}\n\nexport const MotionStackContainer = motion(StackContainer) as MotionStackType;\nMotionStackContainer.Vertical = motion(StackContainer.Vertical);\nMotionStackContainer.Horizontal = motion(StackContainer.Horizontal);\n\nexport default StackContainer;\n","import styled from '@emotion/styled';\n\nimport type { StackContainerOptionProps } from './StackContainer.types';\nimport { borderRadiusTokens, colorTokens, spacingTokens } from '../../styles';\n\nexport const StyledStackContainer = styled.div<StackContainerOptionProps>`\n display: flex;\n width: ${({ width }) => width};\n max-width: ${({ maxWidth }) => maxWidth};\n min-width: ${({ minWidth }) => minWidth};\n height: ${({ height }) => height};\n max-height: ${({ maxHeight }) => maxHeight};\n min-height: ${({ minHeight }) => minHeight};\n flex-direction: ${({ direction }) => direction};\n align-items: ${({ align }) => align};\n justify-content: ${({ justify }) => justify};\n gap: ${({ spacing }) => spacing && spacingTokens[spacing]};\n flex-wrap: ${({ flexWrap }) => flexWrap};\n flex: ${({ flex }) => flex};\n padding: ${({ padding }) => padding};\n margin: ${({ margin }) => margin};\n background: ${({ background }) => (background ? colorTokens[background] : 'transparent')};\n border-radius: ${({ radius }) => radius && borderRadiusTokens[radius]};\n animation: 0.2s all ease-in-out;\n`;\n","import type { ComponentPropsWithRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport type { TextProps } from './Text.types';\n\nimport { StyledText } from './Text.styled';\nimport type { StringElementType } from '../../utils/type/ComponentProps';\n\nconst Text = forwardRef(\n (\n {\n children,\n typography = 'body1_400',\n whiteSpace,\n color = 'neutral700',\n display = 'inline-block',\n textAlign = 'start',\n className,\n as,\n ...rest\n }: TextProps,\n ref: ComponentPropsWithRef<StringElementType>['ref'],\n ) => {\n return (\n <StyledText\n ref={ref}\n whiteSpace={whiteSpace}\n className={className ? `${typography} ${className}` : typography}\n color={color}\n display={display}\n textAlign={textAlign}\n as={as}\n {...rest}\n data-shoplflow={'Text'}\n >\n {children}\n </StyledText>\n );\n },\n);\n\nexport default Text;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\n\nimport type { TextOptionProps } from './Text.types';\nimport { colorTokens } from '../../styles';\n\nconst setEllipsis = (maxLines: number) => {\n return css`\n display: -webkit-box;\n line-clamp: ${maxLines};\n -webkit-line-clamp: ${maxLines};\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-all;\n text-overflow: ellipsis;\n `;\n};\n\nexport const StyledText = styled.span<TextOptionProps>`\n display: ${({ display }) => display && display};\n align-items: center;\n color: ${({ color }) => color && colorTokens[color]};\n ${({ lineClamp }) => lineClamp && setEllipsis(lineClamp)};\n text-align: ${({ textAlign }) => textAlign && textAlign};\n white-space: ${({ whiteSpace }) => whiteSpace && whiteSpace};\n ${({ textDecorations }) =>\n textDecorations &&\n css`\n text-decoration: ${textDecorations};\n `};\n ${({ opacity }) =>\n opacity &&\n css`\n opacity: ${opacity};\n `};\n ${({ wordBreak }) =>\n wordBreak &&\n css`\n word-break: ${wordBreak};\n `};\n`;\n","import type { ReactNode } from 'react';\nimport React from 'react';\n\nimport { Container } from './Modal.styled';\nimport type { ModalBodyProps, ModalContainerProps } from './Modal.types';\nimport { MODAL_FOOTER_KEY, MODAL_HEADER_KEY } from './Modal.types';\n\nimport { useParentElementClick, noop } from '@shoplflow/utils';\nimport { useViewportSizeObserver } from '../../hooks/useViewportSizeObserver';\n\nconst ModalContainer = ({ children, height, outsideClick = noop, ...rest }: ModalContainerProps) => {\n const ref = useParentElementClick<HTMLDivElement>(outsideClick);\n const { height: windowHeight } = useViewportSizeObserver();\n const topBottomMargin = 64;\n const heightWidthMargin = height ? height + topBottomMargin : undefined;\n\n const childrenArray = React.Children.toArray(children) as ReactNode[];\n\n const findHeader = childrenArray.find((child: ReactNode) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Symbol 타입을 직접 할당하여 Header를 감지하기 때문에 무시\n if (child.type[MODAL_HEADER_KEY]) {\n return child;\n }\n });\n\n const findFooter = childrenArray.find((child: ReactNode) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Symbol 타입을 직접 할당하여 Footer를 감지하기 때문에 무시\n if (child.type[MODAL_FOOTER_KEY]) {\n return child;\n }\n });\n\n const addPropInChildren = React.Children.map(childrenArray, (child: ReactNode) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n\n return React.cloneElement(child, {\n isIncludeHeader: Boolean(findHeader),\n isIncludeFooter: Boolean(findFooter),\n sizeVar: rest.sizeVar,\n height: heightWidthMargin,\n } as React.HTMLAttributes<HTMLElement> & ModalBodyProps);\n });\n\n return (\n <Container ref={ref} {...rest} height={heightWidthMargin} viewport={windowHeight} data-shoplflow={'Modal'}>\n {addPropInChildren}\n </Container>\n );\n};\n\nexport default ModalContainer;\n","import styled from '@emotion/styled';\nimport type { ModalContainerProps } from './Modal.types';\nimport { css } from '@emotion/react';\nimport { borderRadiusTokens, colorTokens } from '../../styles';\nimport { boxShadowTokens } from '../../styles/tokens';\n\nconst MODAL_SIZE_XXS = 400;\nconst MODAL_SIZE_XS = 500;\nconst MODAL_SIZE_S = 560;\nconst MODAL_SIZE_M = 640;\nconst MODAL_SIZE_L = 768;\nconst MODAL_SIZE_XL = 1040;\nconst MODAL_SIZE_XXL = 1280;\nconst MODAL_SIZE_XXXL = 1600;\n\nconst getModalWidthFromSize = (size: ModalContainerProps['sizeVar']) => {\n switch (size) {\n case 'XXS':\n return MODAL_SIZE_XXS;\n case 'XS':\n return MODAL_SIZE_XS;\n case 'S':\n return MODAL_SIZE_S;\n case 'M':\n return MODAL_SIZE_M;\n case 'L':\n return MODAL_SIZE_L;\n case 'XL':\n return MODAL_SIZE_XL;\n case 'XXL':\n return MODAL_SIZE_XXL;\n case 'XXXL':\n return MODAL_SIZE_XXXL;\n default:\n return MODAL_SIZE_M;\n }\n};\n\nconst getModalBodyTopBottomPadding = (isIncludeHeader: boolean, sizeVar: ModalContainerProps['sizeVar']) => {\n if (sizeVar === 'FULL') {\n return css`\n padding-top: 0;\n padding-bottom: 0;\n `;\n }\n if (isIncludeHeader) {\n return css`\n padding-top: 16px;\n padding-bottom: 24px;\n `;\n }\n return css`\n padding-top: 24px;\n padding-bottom: 24px;\n `;\n};\n\nconst getFullScreenModal = () => {\n return css`\n min-height: 100vh;\n max-height: 100vh;\n width: 100vw;\n max-width: 100vw;\n border-radius: 0;\n box-shadow: none;\n `;\n};\n\nconst checkMaxHeight = (height: number, viewport: number) => {\n const topBottomMargin = 64;\n if (height > 1200) {\n return 1200 - topBottomMargin;\n }\n if (height > viewport) {\n return viewport - topBottomMargin;\n }\n return height - topBottomMargin;\n};\n\nexport const Container = styled.div<\n ModalContainerProps & {\n viewport: number;\n }\n>`\n display: flex;\n flex-direction: column;\n border-radius: ${borderRadiusTokens.borderRadius08};\n background: ${colorTokens.neutral0};\n box-shadow: ${boxShadowTokens.dropShadow};\n overflow: hidden;\n flex-grow: 1;\n height: ${({ height, viewport }) => (height ? `${checkMaxHeight(height, viewport)}px` : 'initial')};\n min-height: 180px;\n max-height: 1200px;\n\n width: ${({ sizeVar }) => getModalWidthFromSize(sizeVar)}px;\n max-width: ${({ sizeVar }) => getModalWidthFromSize(sizeVar)}px;\n ${({ sizeVar }) =>\n sizeVar &&\n window.innerWidth <= getModalWidthFromSize(sizeVar) + 40 &&\n css`\n width: ${window.innerWidth - 40}px;\n max-width: ${window.innerWidth - 40}px;\n `};\n ${({ sizeVar }) => sizeVar === 'FULL' && getFullScreenModal()};\n`;\n\nexport const HeaderContainer = styled.div`\n display: flex;\n width: 100%;\n min-height: 64px;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px 12px 24px;\n gap: 10px;\n`;\n\nexport const BodyContainer = styled.div<{\n isIncludeHeader: boolean;\n minHeight: string | number;\n maxHeight: string | number;\n sizeVar: ModalContainerProps['sizeVar'];\n}>`\n display: flex;\n width: 100%;\n height: 100%;\n overflow: hidden;\n flex-direction: column;\n background: ${colorTokens.neutral0};\n box-sizing: border-box;\n min-height: ${({ minHeight }) => minHeight}px;\n max-height: ${({ maxHeight }) => maxHeight}px;\n flex: 1;\n ${({ isIncludeHeader, sizeVar }) => getModalBodyTopBottomPadding(isIncludeHeader, sizeVar)};\n`;\n\nexport const ModalBodyContainerInner = styled.div`\n display: grid;\n align-self: stretch;\n flex-direction: column;\n flex-grow: 1;\n //스크롤 생성시 하단 padding 적용하기 위한 설정\n height: 100%;\n box-sizing: border-box;\n`;\n\nexport const ModalBodyContent = styled.div<{\n isIncludeHeader: boolean;\n sizeVar: ModalContainerProps['sizeVar'];\n}>`\n display: flex;\n flex-direction: column;\n height: 100%;\n box-sizing: border-box;\n padding: 0 24px;\n ${({ sizeVar }) =>\n sizeVar === 'FULL' &&\n css`\n padding: 0;\n `};\n background: ${colorTokens.neutral0};\n`;\n\nexport const FooterContainer = styled.div`\n display: flex;\n width: 100%;\n flex-direction: row;\n align-items: center;\n justify-content: flex-end;\n padding: 16px 24px;\n gap: 12px;\n border-top: 1px solid ${colorTokens.neutral300};\n background: ${colorTokens.neutral0};\n`;\n","import type { ChildrenProps, SizeVariantProps } from '../../utils/type/ComponentProps';\nimport type { $Values } from '@shoplflow/utils';\nexport const ModalSize = {\n XXS: 'XXS',\n XS: 'XS',\n S: 'S',\n M: 'M',\n L: 'L',\n XL: 'XL',\n XXL: 'XXL',\n XXXL: 'XXXL',\n FULL: 'FULL',\n} as const;\n\nexport type ModalSizeType = $Values<typeof ModalSize>;\n\n// Modal Container\n\nexport interface ModalContainerProps extends ModalContainerOptionProps, SizeVariantProps<ModalSizeType> {\n children?: React.ReactNode | React.ReactNode[];\n}\n\nexport interface ModalContainerOptionProps {\n /**\n * 모달의 높이를 설정합니다.\n */\n height?: number;\n /**\n * 모달의 외부를 클릭했을 때 실행되는 함수입니다.\n * @param args\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n outsideClick?: (args?: any) => void;\n}\n\n// Modal Header\nexport interface ModalHeaderProps extends ModalHeaderOptionProps, ChildrenProps {}\nexport interface ModalHeaderOptionProps {}\n\nexport const MODAL_HEADER_KEY = Symbol('MODAL_HEADER');\nexport interface ModalHeaderType extends React.FC<ModalHeaderProps> {\n [MODAL_HEADER_KEY]?: boolean;\n}\n\n// Modal Body\nexport interface ModalBodyProps extends ModalBodyOptionProps, ChildrenProps {}\nexport interface ModalBodyOptionProps {\n isIncludeHeader?: boolean;\n isIncludeFooter?: boolean;\n height?: number;\n sizeVar?: ModalSizeType;\n}\n// Modal Footer\nexport interface ModalFooterProps extends ModalFooterOptionProps, ChildrenProps {}\nexport interface ModalFooterOptionProps {}\nexport const MODAL_FOOTER_KEY = Symbol('MODAL_FOOTER');\nexport interface ModalFooterType extends React.FC<ModalBodyProps> {\n [MODAL_FOOTER_KEY]?: boolean;\n}\n","import { useEffect, useState } from 'react';\n\nexport const useViewportSizeObserver = () => {\n const [size, setSize] = useState({ width: window.innerWidth, height: window.innerHeight });\n\n useEffect(() => {\n const handleResize = () => {\n setSize({ width: window.innerWidth, height: window.innerHeight });\n };\n\n window.addEventListener('resize', handleResize);\n\n // 컴포넌트가 언마운트 될 때 이벤트 리스너 제거\n return () => window.removeEventListener('resize', handleResize);\n }, []); // 빈 의존성 배열을 사용하여 마운트시에만 이벤트 리스너를 추가\n\n return size;\n};\n","import React from 'react';\nimport { FooterContainer } from './Modal.styled';\nimport type { ModalFooterProps, ModalFooterType } from './Modal.types';\nimport { MODAL_FOOTER_KEY } from './Modal.types';\n\nconst ModalFooter: ModalFooterType = ({ children }: ModalFooterProps) => {\n return <FooterContainer>{children}</FooterContainer>;\n};\n\nModalFooter[MODAL_FOOTER_KEY] = true;\n\nexport default ModalFooter;\n","import React, { useCallback, useMemo } from 'react';\nimport { BodyContainer, ModalBodyContainerInner, ModalBodyContent } from './Modal.styled';\nimport type { ModalBodyProps } from './Modal.types';\nimport { ScrollArea } from '../ScrollArea';\nimport { useViewportSizeObserver } from '../../hooks/useViewportSizeObserver';\n\nconst ModalBody = ({\n children,\n isIncludeHeader = false,\n isIncludeFooter = false,\n sizeVar,\n height: modalContainerHeight,\n}: ModalBodyProps) => {\n const { height: windowHeight } = useViewportSizeObserver();\n\n const headerHeight = 64;\n const footerHeight = 72;\n\n const topBottomMargin = 64;\n const getHeaderFooterHeight = useCallback(() => {\n let result = 0;\n if (isIncludeHeader) {\n result += headerHeight;\n }\n if (isIncludeFooter) {\n result += footerHeight;\n }\n return result;\n }, [isIncludeFooter, isIncludeHeader]);\n\n const headerFooterHeight = useMemo(() => getHeaderFooterHeight(), [getHeaderFooterHeight]);\n\n const setAutoHeightMin = () => {\n if (sizeVar === 'FULL') {\n return windowHeight - headerFooterHeight;\n }\n if (modalContainerHeight) {\n if (modalContainerHeight <= 1200) {\n if (windowHeight < modalContainerHeight) {\n return windowHeight - topBottomMargin - headerFooterHeight;\n }\n return modalContainerHeight - topBottomMargin - headerFooterHeight;\n }\n return modalContainerHeight - topBottomMargin - headerFooterHeight;\n } else {\n return '100%';\n }\n };\n\n const setAutoHeightMax = () => {\n if (sizeVar === 'FULL') {\n return windowHeight;\n }\n if (modalContainerHeight) {\n if (modalContainerHeight > 1200) {\n return 1200 - topBottomMargin - headerFooterHeight;\n }\n if (modalContainerHeight <= 1200) {\n if (windowHeight < modalContainerHeight) {\n return windowHeight - topBottomMargin - headerFooterHeight;\n }\n return modalContainerHeight - topBottomMargin - headerFooterHeight;\n }\n }\n if (!modalContainerHeight) {\n const heightUnderMaxHeight = windowHeight - topBottomMargin - headerFooterHeight;\n\n const heightOverMaxHeight = 1200 - topBottomMargin - headerFooterHeight;\n\n return windowHeight > 1200 ? heightOverMaxHeight : heightUnderMaxHeight;\n }\n return 0;\n };\n\n const setContentHeightMax = () => {\n let autoHeightMax = setAutoHeightMax();\n\n // Content top padding 빼주기\n autoHeightMax = autoHeightMax - 24;\n\n if (isIncludeHeader) {\n autoHeightMax = autoHeightMax - 24;\n }\n\n if (!isIncludeHeader) {\n autoHeightMax = autoHeightMax - 16;\n }\n\n return autoHeightMax;\n };\n\n return (\n <BodyContainer\n isIncludeHeader={isIncludeHeader}\n sizeVar={sizeVar}\n minHeight={setAutoHeightMin()}\n maxHeight={setAutoHeightMax()}\n >\n <ScrollArea\n id={`scrollbar`}\n universal\n autoHeight={!modalContainerHeight}\n autoHeightMin={setAutoHeightMin()}\n autoHeightMax={setContentHeightMax()}\n style={{}}\n >\n <ModalBodyContainerInner>\n <ModalBodyContent isIncludeHeader={isIncludeHeader} sizeVar={sizeVar}>\n {children}\n </ModalBodyContent>\n </ModalBodyContainerInner>\n </ScrollArea>\n </BodyContainer>\n );\n};\n\nexport default ModalBody;\n","import React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\nimport type { ScrollAreaProps, ScrollbarRefType } from './ScrollArea.types';\nimport Scrollbars from 'react-custom-scrollbars-2';\nimport { useMergeRefs } from '@shoplflow/utils';\n\nconst ScrollArea = forwardRef<ScrollbarRefType, ScrollAreaProps>(({ children, ...rest }, ref) => {\n const scrollRef = useRef<ScrollbarRefType>(null);\n\n const mergeRef = useMergeRefs(scrollRef, ref);\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n const [windowHeight, setWindowHeight] = useState(window.innerHeight);\n\n const onResize = useCallback(() => {\n setWindowWidth(window.innerWidth);\n setWindowHeight(window.innerHeight);\n }, []);\n\n useEffect(() => {\n window.addEventListener('resize', onResize);\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [onResize]);\n return (\n <>\n {Boolean(windowWidth) && Boolean(windowHeight) && (\n <Scrollbars\n ref={mergeRef}\n autoHide\n autoHideTimeout={1000}\n autoHideDuration={200}\n {...rest}\n data-shoplflow={'ScrollArea'}\n >\n {children}\n </Scrollbars>\n )}\n </>\n );\n});\n\nexport default ScrollArea;\n","import React from 'react';\nimport type { ModalHeaderProps, ModalHeaderType } from './Modal.types';\nimport { HeaderContainer } from './Modal.styled';\nimport { MODAL_HEADER_KEY } from './Modal.types';\n\nconst ModalHeader: ModalHeaderType = ({ children }: ModalHeaderProps) => {\n return <HeaderContainer>{children}</HeaderContainer>;\n};\n\nModalHeader[MODAL_HEADER_KEY] = true;\n\nexport default ModalHeader;\n","import { useContext } from 'react';\nimport { ModalContext } from '../providers/ModalContext';\n\nexport const useModalValue = () => {\n // const modal = useModalStore((state) => state.modal);\n\n const modal = useContext(ModalContext);\n return {\n modal,\n };\n};\n","import type { ReactNode } from 'react';\nimport { createContext } from 'react';\nimport { noop } from '@shoplflow/utils';\n\nexport type ModalStateType = {\n component: ReactNode;\n id?: string;\n /**\n * custom zIndex를 넣어주세요\n */\n zIndex?: number;\n};\nexport type RemoveModalProps = {\n id?: string;\n deps?: number;\n};\nexport type ModalContext = ModalStateType[];\n\nexport type ModalHandlerContext = {\n addModal: (modal: ReactNode, id?: string, zIndex?: number) => void;\n removeModal: (props?: RemoveModalProps) => void;\n};\n\nexport const ModalHandlerContext = createContext<ModalHandlerContext>({\n addModal: noop,\n removeModal: noop,\n});\n\nexport const ModalContext = createContext<ModalContext>([]);\n","import { useContext } from 'react';\nimport { ModalHandlerContext } from '../providers/ModalContext';\n\nexport const useHandleModal = () => {\n // const addModal = useModalStore((state) => state.addModal);\n // const removeModal = useModalStore((state) => state.removeModal);\n const { addModal, removeModal } = useContext(ModalHandlerContext);\n\n return {\n addModal,\n removeModal,\n };\n};\n","import type { ReactNode } from 'react';\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { isNullOrUndefined } from '@shoplflow/utils';\nimport type { RemoveModalProps } from './ModalContext';\nimport { ModalHandlerContext, ModalContext } from './ModalContext';\n\ninterface ModalProviderProps {\n children?: ReactNode;\n}\n\nconst ModalProvider = ({ children }: ModalProviderProps) => {\n const [openedModals, setOpenedModals] = useState<ModalContext>([]);\n\n const addModal = (component: ReactNode, id?: string, zIndex?: number) => {\n setOpenedModals((modals) => {\n if (modals) {\n return [...modals, { component, id, zIndex }];\n }\n return [{ component, id, zIndex }];\n });\n };\n\n const removeModal = (props?: RemoveModalProps) => {\n const { id, deps } = props || {\n id: undefined,\n deps: undefined,\n };\n\n const isIncludeAllProps = Boolean(id && deps);\n const isIncludeId = Boolean(id);\n const isNotIncludeAllProps = !id && Boolean(isNullOrUndefined(deps));\n const isIncludeDeps = Boolean(Boolean(!isNullOrUndefined(deps)) && !id);\n\n if (isIncludeAllProps) {\n throw new Error('id와 deps는 동시에 사용할 수 없습니다.');\n }\n\n if (isIncludeId) {\n setOpenedModals((modal) => {\n const filterModal = modal.filter((modal) => modal.id !== id);\n return [...filterModal];\n });\n return;\n }\n\n if (isNotIncludeAllProps || deps === 1) {\n setOpenedModals((modal) => {\n const removeModal = modal.slice(0, -1);\n return [...removeModal];\n });\n return;\n }\n\n if (isIncludeDeps) {\n if (deps === 0 || deps === undefined) {\n return;\n }\n setOpenedModals((modal) => {\n const removeDeps = modal.slice(0, -deps);\n return [...removeDeps];\n });\n return;\n }\n };\n const dispatch = useMemo(() => ({ addModal, removeModal }), []);\n\n useEffect(() => {\n if (openedModals.length !== 1) {\n return;\n }\n\n document.body.style.cssText = 'overflow:hidden';\n return () => {\n document.body.style.cssText = 'overflow:unset';\n };\n }, [openedModals.length]);\n\n useEffect(() => {\n const closeAllModals = () => {\n setOpenedModals([]);\n };\n\n window.addEventListener('popstate', closeAllModals);\n\n return () => {\n window.removeEventListener('popstate', closeAllModals);\n };\n }, []);\n\n return (\n <ModalContext.Provider value={openedModals}>\n <ModalHandlerContext.Provider value={dispatch}>{children}</ModalHandlerContext.Provider>\n </ModalContext.Provider>\n );\n};\n\nexport default ModalProvider;\n","// SHOPLFLOW_DOCS_IGNORE\nimport ModalContainer from './ModalContainer';\nimport ModalFooter from './ModalFooter';\nimport ModalBody from './ModalBody';\nimport ModalHeader from './ModalHeader';\n\nexport const Modal = {\n Container: ModalContainer,\n Header: ModalHeader,\n Body: ModalBody,\n Footer: ModalFooter,\n};\n\nexport * from './Modal.types';\n\nexport * from './hooks/useModalValue';\nexport * from './hooks/useHandleModal';\n\nexport * from './providers/ModalContext';\nexport * from './providers/ModalProvider';\n","import styled from '@emotion/styled';\nimport type { ColorTokens } from '../../styles';\nimport { colorTokens } from '../../styles';\n\nexport const SwitchContainer = styled.div<{ isDisabled: boolean }>`\n width: 32px;\n height: 32px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: ${({ isDisabled }) => isDisabled && 0.3};\n\n &:hover {\n background: ${({ isDisabled }) => !isDisabled && colorTokens.neutral400_5};\n }\n`;\n\nexport const StyledSwitch = styled.input<{ activeColor: ColorTokens }>`\n appearance: none;\n border: none;\n border-radius: 12px;\n width: 28px;\n height: 18px;\n cursor: pointer;\n position: relative;\n display: flex;\n align-items: center;\n background: ${colorTokens.neutral350};\n padding: 2px;\n margin: 0;\n\n // slider\n &:before {\n content: '';\n left: 2px;\n display: block;\n position: absolute;\n width: 14px;\n height: 14px;\n background: ${colorTokens.neutral0};\n border-radius: 50%;\n transition: left 0.2s ease-in-out;\n }\n\n // selected\n &:checked {\n background: ${({ activeColor }) => colorTokens[activeColor]};\n &:before {\n left: 12px;\n }\n }\n\n // disabled\n &:disabled {\n cursor: auto;\n }\n`;\n","import { useEffect, useState } from 'react';\n\n/**\n * toggle 기능을 추상화한 hook입니다.\n * selected, defaultSelected를 받아서 토글을 관리하는 hook입니다.\n * selected가 있으면 controlled, 없으면 uncontrolled로 동작합니다.\n * defaultSelected가 있으면 초기값으로 설정됩니다.\n * @param {boolean} selected\n * @param {boolean} defaultSelected\n * @return {[boolean, (() => void)]}\n */\n\nexport type UseOnToggle = (selected?: boolean, defaultSelected?: boolean) => [boolean, () => void];\n\nexport const useOnToggle: UseOnToggle = (selected, defaultSelected) => {\n const [isToggle, setIsToggle] = useState(false);\n const isControlled = selected !== undefined;\n\n const handleToggle = () => {\n !isControlled && setIsToggle((prev) => !prev);\n };\n\n useEffect(() => {\n if (isControlled) {\n setIsToggle(selected);\n }\n }, [isControlled, selected]);\n\n useEffect(() => {\n if (!isControlled && defaultSelected !== undefined) {\n setIsToggle(defaultSelected);\n }\n }, [defaultSelected, isControlled]);\n\n return [isToggle, handleToggle];\n};\n","import type { ChangeEvent } from 'react';\nimport React from 'react';\nimport { StyledSwitch, SwitchContainer } from './Switch.styled';\nimport type { SwitchProps } from './Switch.types';\nimport { useOnToggle } from '../../hooks/useOnToggle';\n\nconst Switch = ({\n onChange,\n isSelected,\n disabled = false,\n activeColor = 'primary300',\n defaultSelected = false,\n ...rest\n}: SwitchProps) => {\n const [isToggled, handleToggle] = useOnToggle(isSelected, defaultSelected);\n\n const handleOnChange = (e: ChangeEvent<HTMLInputElement>) => {\n handleToggle();\n onChange && onChange(e);\n };\n\n return (\n <SwitchContainer isDisabled={disabled}>\n <StyledSwitch\n type='checkbox'\n checked={isToggled}\n disabled={disabled}\n onChange={handleOnChange}\n activeColor={activeColor}\n {...rest}\n data-shoplflow={'Switch'}\n />\n </SwitchContainer>\n );\n};\nexport default Switch;\n","import type { $Values } from '@shoplflow/utils';\nimport type {\n ColorTokenProps,\n SizeVariantProps,\n StyleVariantProps,\n LeftAndRightElementProps,\n TextProps,\n SelectedProps,\n RadiusBooleanProps,\n DefaultSelectedProps,\n DisableProps,\n} from '../../../utils/type/ComponentProps';\nimport type { HTMLAttributes } from 'react';\n\nexport const ChipToggleStyleVariants = {\n SOLID: 'SOLID',\n} as const;\n\nexport const ChipToggleSizeVariants = {\n S: 'S',\n XS: 'XS',\n} as const;\n\nexport type ChipToggleStyleVariantType = $Values<typeof ChipToggleStyleVariants>;\nexport type ChipToggleSizeVariantType = $Values<typeof ChipToggleSizeVariants>;\n\nexport interface ChipToggleProps\n extends ChipToggleOptionProps,\n SelectedProps,\n DefaultSelectedProps,\n ColorTokenProps,\n StyleVariantProps<ChipToggleStyleVariantType>,\n SizeVariantProps<ChipToggleSizeVariantType>,\n LeftAndRightElementProps,\n RadiusBooleanProps,\n TextProps,\n DisableProps,\n Omit<HTMLAttributes<HTMLButtonElement>, 'color'> {}\nexport interface ChipToggleOptionProps {}\n","import styled from '@emotion/styled';\nimport { css } from '@emotion/react';\nimport type { ChipToggleProps } from './ChipToggle.types';\nimport type { TypographyTokens } from '../../../styles';\nimport { borderRadiusTokens, colorTokens } from '../../../styles';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\n\nexport const getLineTypographyBySizeVar = (sizeVar: ChipToggleProps['sizeVar']): TypographyTokens => {\n switch (sizeVar) {\n case 'XS':\n return 'body3_400';\n case 'S':\n return 'body2_400';\n default:\n return 'body2_400';\n }\n};\n\nconst solidStyle = ({\n isSelected,\n color,\n $radius,\n}: ChipToggleProps & {\n $radius?: boolean;\n}) => css`\n padding: 7px 12px;\n gap: 4px;\n background: ${colorTokens.neutral150};\n border-radius: ${borderRadiusTokens.borderRadius06};\n & > span {\n color: ${colorTokens.neutral400};\n }\n &:hover {\n background: ${colorTokens.neutral200};\n }\n\n ${$radius &&\n css`\n border-radius: ${borderRadiusTokens.borderRadius16};\n `};\n ${isSelected &&\n css`\n background: ${colorTokens[color!]};\n & > span {\n color: ${colorTokens['neutral0']};\n }\n &:hover {\n background: ${colorTokens[color!]};\n }\n `};\n`;\n\nexport const StyledChip = styled.button<\n ChipToggleProps & {\n $radius?: boolean;\n }\n>`\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n height: fit-content;\n width: fit-content;\n user-select: none;\n cursor: pointer;\n ${(props) => props.styleVar === 'SOLID' && solidStyle(props)};\n ${({ disabled }) => getDisabledStyle(disabled)};\n`;\n","import { css } from '@emotion/react';\n\nexport const getDisabledStyle = (disabled?: boolean) => {\n if (!disabled) {\n return;\n }\n\n return css`\n opacity: 50%;\n cursor: not-allowed !important;\n `;\n};\n","import type { MouseEvent } from 'react';\nimport React from 'react';\n\nimport { Text } from '../../Text';\n\nimport { useOnToggle } from '../../../hooks/useOnToggle';\nimport type { ChipToggleProps } from './ChipToggle.types';\nimport { ChipToggleStyleVariants } from './ChipToggle.types';\nimport { getLineTypographyBySizeVar, StyledChip } from './ChipToggle.styled';\nimport { noop } from '@shoplflow/utils';\n\nconst ChipToggle = ({\n text,\n isSelected,\n defaultSelected,\n color = 'neutral600',\n radius,\n styleVar = ChipToggleStyleVariants.SOLID,\n sizeVar,\n leftSource,\n rightSource,\n onClick = noop,\n disabled = false,\n ...rest\n}: ChipToggleProps) => {\n const [isToggled, handleToggle] = useOnToggle(isSelected, defaultSelected);\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n !disabled && handleToggle();\n !disabled && onClick && onClick(e);\n };\n\n return (\n <StyledChip\n {...rest}\n color={color}\n $radius={radius}\n isSelected={isToggled}\n styleVar={styleVar}\n sizeVar={sizeVar}\n onClick={handleClick}\n disabled={disabled}\n data-shoplflow={'ChipToggle'}\n >\n {leftSource}\n <Text typography={getLineTypographyBySizeVar(sizeVar)}>{text}</Text>\n {rightSource}\n </StyledChip>\n );\n};\n\nexport default ChipToggle;\n","import styled from '@emotion/styled';\nimport type { TypographyTokens } from '../../../styles';\nimport type { ChipButtonProps } from './ChipButton.types';\nimport { css } from '@emotion/react';\nimport { borderRadiusTokens, colorTokens } from '../../../styles';\nimport { getNextColor } from '../../../utils/getNextColor';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\n\nexport const getLineTypographyBySizeVar = (sizeVar: ChipButtonProps['sizeVar']): TypographyTokens => {\n switch (sizeVar) {\n case 'XS':\n return 'caption_400';\n case 'S':\n return 'body3_400';\n default:\n return 'body3_400';\n }\n};\n\nconst lineStyle = ({ color }: ChipButtonProps) => css`\n background: ${colorTokens.neutral0};\n border: 1px solid ${colorTokens[color!]};\n border-radius: ${borderRadiusTokens.borderRadius20};\n &:hover {\n border: 1px solid ${colorTokens[getNextColor(color!, 2)]};\n }\n & > span {\n color: ${colorTokens[getNextColor(color!, 4)]};\n }\n`;\n\nconst getStyleBySizeVar = (sizeVar: ChipButtonProps['sizeVar']) => {\n switch (sizeVar) {\n case 'XS':\n return css`\n padding: 4px 8px;\n `;\n case 'S':\n return css`\n padding: 7px 12px;\n `;\n default:\n return css`\n padding: 7px 12px;\n `;\n }\n};\nexport const StyledChipButton = styled.button<ChipButtonProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n height: fit-content;\n width: fit-content;\n gap: 4px;\n cursor: pointer;\n ${({ sizeVar }) => getStyleBySizeVar(sizeVar)};\n ${(props) => props.styleVar === 'LINE' && lineStyle(props)};\n ${({ disabled }) => getDisabledStyle(disabled)};\n background: ${({ background }) => background && colorTokens[background]};\n`;\n","import type { ColorTokens } from '../styles';\nimport { colorTokens } from '../styles';\n\n/**\n * 인자로 받은 색상의 다음 색상을 반환합니다.\n * step을 통해 다음 색상의 단계를 설정할 수 있습니다.\n * 만약 다음 색상이 없다면 가장 높은 단계의 색상을 반환합니다.\n * 100단위만 반환하며 50, _5와 같이 예외적인 색상은 반환하지 않습니다.\n * @param {ColorTokens} color\n * @param {number} step\n * @return {ColorTokens}\n */\nexport const getNextColor = (color: ColorTokens, step = 1): ColorTokens => {\n const colorName = color.replace(/[0-9]|_/g, '');\n\n const colorTokenKeys = Object.keys(colorTokens) as ColorTokens[];\n const findColorToken = colorTokenKeys.filter((colorToken) => colorToken.includes(colorName));\n\n const extractNumbers = (str: ColorTokens) => {\n const formattedStr = str.replace(/_/g, '.');\n const regex = /\\d+(\\.\\d+)?/g;\n const match = formattedStr.match(regex);\n return match ? parseFloat(match[0]) : 0;\n };\n // neutral700_5 와 같은 색상은 반환하지 않습니다.\n\n const sortColorToken = findColorToken.sort((a, b) => extractNumbers(a) - extractNumbers(b));\n const currentIndex = sortColorToken.indexOf(color);\n\n let newIndex = currentIndex;\n let stepCount = 0;\n\n while (stepCount < Math.abs(step)) {\n newIndex += Math.sign(step);\n if (newIndex < 0 || newIndex >= sortColorToken.length) {\n break;\n }\n if (!sortColorToken[newIndex].endsWith('_5') && !sortColorToken[newIndex].includes('50')) {\n stepCount++;\n }\n }\n\n newIndex = Math.max(0, Math.min(newIndex, sortColorToken.length - 1));\n return sortColorToken[newIndex];\n};\n","import type { MouseEvent } from 'react';\nimport React from 'react';\n\nimport { getLineTypographyBySizeVar, StyledChipButton } from './ChipButton.styled';\nimport type { ChipButtonProps } from './ChipButton.types';\nimport { Text } from '../../Text';\nimport { noop } from '@shoplflow/utils';\nimport { ChipButtonSizeVariants, ChipButtonStyleVariants } from './ChipButton.types';\n\nconst ChipButton = ({\n styleVar = ChipButtonStyleVariants.LINE,\n color = 'neutral200',\n sizeVar = ChipButtonSizeVariants.S,\n text,\n onClick = noop,\n disabled = false,\n ...rest\n}: ChipButtonProps) => {\n const handleOnClick = (e: MouseEvent<HTMLButtonElement>) => {\n !disabled && onClick(e);\n };\n\n return (\n <StyledChipButton\n styleVar={styleVar}\n color={color}\n {...rest}\n onClick={handleOnClick}\n disabled={disabled}\n data-shoplflow={'ChipButton'}\n >\n <Text typography={getLineTypographyBySizeVar(sizeVar)}>{text}</Text>\n </StyledChipButton>\n );\n};\n\nexport default ChipButton;\n","import type {\n ColorTokenProps,\n LeftAndRightElementProps,\n SizeVariantProps,\n StyleVariantProps,\n TextProps,\n DisableProps,\n BackgroundColorProps,\n} from '../../../utils/type/ComponentProps';\nimport type { $Values } from '@shoplflow/utils';\nimport type { HTMLAttributes } from 'react';\nexport const ChipButtonStyleVariants = {\n LINE: 'LINE',\n} as const;\n\nexport const ChipButtonSizeVariants = {\n S: 'S',\n XS: 'XS',\n} as const;\n\nexport type ChipButtonStyleVariantType = $Values<typeof ChipButtonStyleVariants>;\nexport type ChipButtonSizeVariantType = $Values<typeof ChipButtonSizeVariants>;\n\nexport interface ChipButtonProps\n extends ChipButtonOptionProps,\n Omit<HTMLAttributes<HTMLButtonElement>, 'color'>,\n TextProps,\n DisableProps,\n LeftAndRightElementProps,\n SizeVariantProps<ChipButtonSizeVariantType>,\n StyleVariantProps<ChipButtonStyleVariantType>,\n ColorTokenProps,\n BackgroundColorProps {}\nexport interface ChipButtonOptionProps {}\n","import type { ComponentPropsWithRef, ElementType } from 'react';\nimport { forwardRef } from 'react';\nimport { Text } from '../../Text';\nimport { StyledButton } from './Button.styled';\nimport type { ButtonProps } from './Button.types';\nimport LoadingSpinner from '../../../assets/LoadingSpinner';\n\nconst Button = forwardRef(\n <T extends ElementType = 'button'>(\n {\n styleVar = 'PRIMARY',\n sizeVar = 'M',\n style,\n color,\n as,\n children,\n leftSource,\n rightSource,\n isLoading = false,\n lineClamp,\n ...rest\n }: ButtonProps<T>,\n ref: ComponentPropsWithRef<T>['ref'],\n ) => {\n return (\n <StyledButton\n styleVar={styleVar}\n sizeVar={sizeVar}\n className={styleVar}\n style={style}\n as={as}\n ref={ref}\n color={color}\n {...rest}\n data-shoplflow={'Button'}\n >\n {leftSource}\n {isLoading ? (\n <LoadingSpinner color={styleVar === 'SECONDARY' || styleVar === 'GHOST' ? 'neutral500' : 'neutral0'} />\n ) : (\n <Text\n lineClamp={lineClamp}\n whiteSpace={'nowrap'}\n wordBreak={'keep-all'}\n color={styleVar === 'PRIMARY' ? 'neutral0' : 'neutral700'}\n typography={sizeVar === 'M' ? 'body1_400' : 'body2_400'}\n >\n {children}\n </Text>\n )}\n {rightSource}\n </StyledButton>\n );\n },\n);\n\nexport default Button;\n","import styled from '@emotion/styled';\nimport type { ButtonOptionProps, ButtonSizeVariantType, ButtonStyleVariantType } from './Button.types';\nimport type { ColorTokens } from '../../../styles';\nimport { colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\nimport { getNextColor } from '../../../utils/getNextColor';\n\nconst getStyleByStyleVar = (styleVar?: ButtonStyleVariantType, color?: ColorTokens, disabled?: boolean) => {\n switch (styleVar) {\n case 'PRIMARY':\n return css`\n border: 1px solid ${colorTokens.primary400};\n background-color: ${colorTokens.primary300};\n :hover {\n background-color: ${!disabled && colorTokens.primary400};\n }\n `;\n case 'SECONDARY':\n return css`\n border: 1px solid ${colorTokens.neutral350};\n background-color: ${colorTokens.neutral0};\n :hover {\n background-color: ${!disabled && colorTokens.neutral100};\n }\n `;\n case 'SOLID':\n if (!color) {\n throw new Error('Button의 SOLID 속성은 color를 필수로 받습니다.');\n }\n return css`\n border: 1px solid ${colorTokens[getNextColor(color)]};\n background-color: ${colorTokens[color]};\n :hover {\n background-color: ${colorTokens[getNextColor(color)]};\n }\n `;\n case 'GHOST':\n return css`\n border: 1px solid transparent;\n background-color: transparent;\n :hover {\n background-color: ${!disabled && colorTokens.neutral400_5};\n }\n `;\n default:\n return css`\n border: 1px solid ${colorTokens.primary400};\n background-color: ${colorTokens.primary300};\n `;\n }\n};\n\nconst getStyleBySizeVar = (sizeVar?: ButtonSizeVariantType) => {\n switch (sizeVar) {\n case 'M':\n return css`\n min-width: 72px;\n min-height: 40px;\n `;\n case 'S':\n return css`\n min-width: 54px;\n min-height: 32px;\n `;\n default:\n return css`\n min-width: 72px;\n min-height: 40px;\n `;\n }\n};\n\nexport const StyledButton = styled.button<ButtonOptionProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n height: fit-content;\n width: fit-content;\n gap: 4px;\n padding: 0 12px;\n border-radius: 6px;\n cursor: pointer;\n ${({ styleVar, color, disabled }) => getStyleByStyleVar(styleVar, color, disabled)};\n ${({ sizeVar }) => getStyleBySizeVar(sizeVar)};\n ${({ disabled }) => getDisabledStyle(disabled)};\n`;\n","import React from 'react';\nimport type { ColorTokens } from '../styles';\nimport { colorTokens } from '../styles';\n\ninterface LoadingSpinnerProps {\n color?: ColorTokens;\n}\n\nconst LoadingSpinner = ({ color = 'neutral0' }: LoadingSpinnerProps) => {\n return (\n <svg width='24' height='24' stroke={colorTokens[color]} viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>\n <style>\n {`\n .spinner { transform-origin: center; animation: spinner_rotation 2s linear infinite; }\n .spinner circle { stroke-linecap: round; animation: spinner_dash 1.5s ease-in-out infinite; }\n @keyframes spinner_rotation { 100% { transform: rotate(360deg); } }\n @keyframes spinner_dash { \n 0% { stroke-dasharray: 0 150; stroke-dashoffset: 0; }\n 47.5% { stroke-dasharray: 42 150; stroke-dashoffset: -16; }\n 95%, 100% { stroke-dasharray: 42 150; stroke-dashoffset: -59; }\n }\n `}\n </style>\n <g className='spinner'>\n <circle cx='12' cy='12' r='9.5' fill='none' strokeWidth='2'></circle>\n </g>\n </svg>\n );\n};\n\nexport default LoadingSpinner;\n","import type { $Values } from '@shoplflow/utils';\nimport type { ComponentPropsWithoutRef, ComponentPropsWithRef, ElementType, ReactElement } from 'react';\nimport type { PolymorphicComponentProps } from '../../../types/PolymorphicComponentProps';\nimport type {\n ColorTokenProps,\n DisableProps,\n LeftAndRightNodeProps,\n LoadingProps,\n SizeVariantProps,\n StyleVariantProps,\n} from '../../../utils/type/ComponentProps';\n\nimport type { TypographyTokens } from '../../../styles';\n\nexport const ButtonSizeVariants = {\n S: 'S',\n M: 'M',\n} as const;\n\nexport type ButtonSizeVariantType = $Values<typeof ButtonSizeVariants>;\n\nexport const ButtonStyleVariants = {\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n SOLID: 'SOLID',\n GHOST: 'GHOST',\n} as const;\n\nexport type ButtonStyleVariantType = $Values<typeof ButtonStyleVariants>;\n\n// MARK : interface는 객체 구조를 가지기 때문에, 컴파일 시점에 객체 구조가 명확하게 설정되어 있어야 합니다. 따라서 동적 타입을 명시할 때는 타입을 선언하고, 정적 타입을 선언할 때는 interface를 사용합니다.\nexport type ButtonOptionProps<T extends ElementType = 'button'> = Omit<\n ComponentPropsWithoutRef<T>,\n 'color' | 'disabled'\n> &\n SizeVariantProps<ButtonSizeVariantType> &\n StyleVariantProps<ButtonStyleVariantType> &\n ColorTokenProps &\n DisableProps &\n LoadingProps & {\n typography?: TypographyTokens;\n lineClamp?: number;\n };\n\nexport type ButtonProps<T extends ElementType = 'button'> = PolymorphicComponentProps<T, ButtonOptionProps> &\n LeftAndRightNodeProps;\n\nexport type ButtonComponent = <T extends ElementType = 'button'>(\n props: ButtonProps<T> & {\n ref?: ComponentPropsWithRef<T>['ref'];\n },\n) => ReactElement | null;\n","import type { ComponentPropsWithRef, ElementType, MouseEvent } from 'react';\nimport { useState, forwardRef } from 'react';\nimport { StyledIconButton } from './IconButton.styled';\nimport type { IconButtonProps } from './IconButton.types';\nimport LoadingSpinner from '../../../assets/LoadingSpinner';\n\nconst IconButton = forwardRef(\n <T extends ElementType = 'button'>(\n {\n styleVar,\n sizeVar,\n disabled,\n children,\n color,\n onMouseEnter,\n onMouseLeave,\n isLoading = false,\n ...rest\n }: IconButtonProps<T>,\n ref: ComponentPropsWithRef<T>['ref'],\n ) => {\n const [isHovered, setIsHovered] = useState(false);\n const handleOnMouseEnter = (e: MouseEvent<HTMLButtonElement>) => {\n setIsHovered(true);\n onMouseEnter && onMouseEnter(e);\n };\n const handleOnMouseLeave = (e: MouseEvent<HTMLButtonElement>) => {\n setIsHovered(false);\n onMouseLeave && onMouseLeave(e);\n };\n return (\n <StyledIconButton\n styleVar={styleVar}\n sizeVar={sizeVar}\n disabled={disabled}\n color={color}\n ref={ref}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n isHovered={isHovered}\n {...rest}\n data-shoplflow={'IconButton'}\n >\n {isLoading ? (\n <LoadingSpinner color={styleVar === 'SECONDARY' || styleVar === 'GHOST' ? 'neutral500' : 'neutral0'} />\n ) : (\n children\n )}\n </StyledIconButton>\n );\n },\n);\n\nexport default IconButton;\n","import styled from '@emotion/styled';\nimport type { IconButtonOptionProps, IconButtonSizeVariantType, IconButtonStyleVariantType } from './IconButton.types';\nimport type { ColorTokens } from '../../../styles';\nimport { borderRadiusTokens, colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\nimport { getNextColor } from '../../../utils/getNextColor';\n\nconst getWidthAndHeightFromSizeVar = (sizeVar?: IconButtonSizeVariantType) => {\n switch (sizeVar) {\n case 'M':\n return css`\n width: 40px;\n min-width: 40px;\n height: 40px;\n min-height: 40px;\n `;\n case 'S':\n return css`\n width: 32px;\n min-width: 32px;\n height: 32px;\n min-height: 32px;\n `;\n default:\n return css`\n width: 40px;\n min-width: 40px;\n height: 40px;\n min-height: 40px;\n `;\n }\n};\n\nconst getStyleByStyleVar = (styleVar?: IconButtonStyleVariantType, color?: ColorTokens, isHovered?: boolean) => {\n switch (styleVar) {\n case 'PRIMARY':\n return css`\n background: ${colorTokens.primary300};\n border: 1px solid ${colorTokens.primary400};\n ${isHovered &&\n css`\n background: ${colorTokens.primary400};\n `}\n `;\n case 'SECONDARY':\n return css`\n background: ${colorTokens.neutral0};\n border: 1px solid ${colorTokens.neutral350};\n ${isHovered &&\n css`\n background: ${colorTokens.neutral100};\n `}\n `;\n case 'SOLID':\n if (!color) {\n throw new Error('IconButton의 SOLID 속성은 color를 필수로 받습니다.');\n }\n return css`\n border: 1px solid ${colorTokens[getNextColor(color)]};\n background: ${colorTokens[color]};\n\n ${isHovered &&\n css`\n background: ${colorTokens[getNextColor(color)]};\n `}\n `;\n case 'GHOST':\n return css`\n border: 1px solid transparent;\n background: transparent;\n ${isHovered &&\n css`\n background: ${colorTokens.neutral400_5};\n `}\n `;\n default:\n return css`\n border: 1px solid ${colorTokens.neutral200};\n ${isHovered &&\n css`\n background: ${colorTokens.neutral100};\n `}\n `;\n }\n};\n\nexport const StyledIconButton = styled.button<\n IconButtonOptionProps & {\n isHovered: boolean;\n }\n>`\n display: flex;\n flex-shrink: 0;\n border-radius: ${borderRadiusTokens.borderRadius06};\n justify-content: center;\n align-items: center;\n background: ${colorTokens.neutral0};\n cursor: pointer;\n ${({ styleVar, color, isHovered }) => getStyleByStyleVar(styleVar, color, isHovered)};\n ${({ sizeVar }) => getWidthAndHeightFromSizeVar(sizeVar)};\n ${({ disabled }) => getDisabledStyle(disabled)};\n & > svg {\n width: 20px;\n height: 20px;\n }\n`;\n","import type { ComponentPropsWithoutRef, ComponentPropsWithRef, ElementType, ReactElement } from 'react';\nimport type { PolymorphicComponentProps } from '../../../types/PolymorphicComponentProps';\nimport type { $Values } from '@shoplflow/utils';\nimport type {\n DisableProps,\n SizeVariantProps,\n StyleVariantProps,\n ColorTokenProps,\n ChildrenProps,\n LoadingProps,\n} from '../../../utils/type/ComponentProps';\n\nexport const IconButtonSizeVariants = {\n S: 'S',\n M: 'M',\n} as const;\n\nexport type IconButtonSizeVariantType = $Values<typeof IconButtonSizeVariants>;\n\nexport const IconButtonStyleVariants = {\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n SOLID: 'SOLID',\n GHOST: 'GHOST',\n} as const;\n\nexport type IconButtonStyleVariantType = $Values<typeof IconButtonStyleVariants>;\n\nexport type IconButtonOptionProps<T extends ElementType = 'button'> = Omit<\n ComponentPropsWithoutRef<T>,\n 'color' | 'disabled'\n> &\n DisableProps &\n SizeVariantProps<IconButtonSizeVariantType> &\n StyleVariantProps<IconButtonStyleVariantType> &\n ChildrenProps &\n ColorTokenProps &\n LoadingProps;\n\nexport type IconButtonProps<T extends ElementType = 'button'> = PolymorphicComponentProps<T, IconButtonOptionProps>;\n\nexport type IconButtonComponent = <T extends ElementType = 'button'>(\n props: IconButtonProps<T> & {\n ref?: ComponentPropsWithRef<T>['ref'];\n },\n) => ReactElement | null;\n","import styled from '@emotion/styled';\nimport { borderRadiusTokens, colorTokens } from '../../styles';\nimport { css } from '@emotion/react';\nimport type { CalloutProps } from './Callout.types';\n\nconst informationStyle = css`\n background: ${colorTokens.neutral100};\n & > span {\n color: ${colorTokens.neutral600};\n }\n & > svg > path {\n fill: ${colorTokens.neutral600};\n }\n`;\nconst alertStyle = css`\n background: ${colorTokens.red100};\n & > span {\n align-self: center;\n color: ${colorTokens.red300};\n }\n & > svg > path {\n fill: ${colorTokens.red300};\n }\n`;\n\nexport const StyledCallout = styled.div<CalloutProps>`\n display: flex;\n justify-content: flex-start;\n align-items: start;\n padding: 6px 8px;\n gap: 4px;\n border-radius: ${borderRadiusTokens.borderRadius08};\n ${({ styleVar }) => styleVar === 'INFORMATION' && informationStyle}\n ${({ styleVar }) => styleVar === 'ALERT' && alertStyle}\n`;\n\nexport const StyledCalloutIcon = styled.svg`\n display: flex;\n height: 20px;\n min-height: 20px;\n width: 20px;\n min-width: 20px;\n`;\nexport const TextWrapper = styled.div`\n padding: 2px 0;\n`;\n","import React from 'react';\nimport { StyledCallout, StyledCalloutIcon } from './Callout.styled';\nimport type { TextProps } from '../Text';\nimport { Text } from '../Text';\nimport type { CalloutProps } from './Callout.types';\nimport type { IconSourceProps } from '../../utils/type/ComponentProps';\n\nconst Callout = ({ children, styleVar = 'INFORMATION', ...rest }: CalloutProps) => {\n return (\n <StyledCallout {...rest} styleVar={styleVar} data-shoplflow={'Callout'}>\n {children}\n </StyledCallout>\n );\n};\n\nconst CalloutText = ({ children, ...rest }: TextProps) => {\n return (\n <Text {...rest} typography={'body3_400'}>\n {children}\n </Text>\n );\n};\n\nconst CalloutIcon = ({ iconSource }: IconSourceProps) => {\n return <StyledCalloutIcon as={iconSource} />;\n};\n\nCallout.Text = CalloutText;\nCallout.Icon = CalloutIcon;\nexport default Callout;\n","import type { $Values } from '@shoplflow/utils';\nimport type { ChildrenProps, StyleVariantProps } from '../../utils/type/ComponentProps';\n\nexport const CalloutTypes = {\n INFORMATION: 'INFORMATION',\n ALERT: 'ALERT',\n} as const;\n\nexport type CalloutType = $Values<typeof CalloutTypes>;\n\nexport interface CalloutProps extends CalloutOptionProps, ChildrenProps, StyleVariantProps<CalloutType> {}\nexport interface CalloutOptionProps {}\n","import { offset, shift, flip, arrow, size, hide, inline } from '@floating-ui/react';\n\nexport { offset, hide, size, inline, arrow, flip, shift };\nexport { default as Popper } from './Popper';\nexport * from './Popper';\nexport * from './Popper.types';\n","import React, { forwardRef, useEffect, useState } from 'react';\nimport { StyledPopper } from './Popper.styled';\nimport type { PopperProps, PopperTriggerProps, PopperPortalProps } from './Popper.types';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { fadeInOut } from '../../animation/fadeInOut';\n\nimport { useFloating } from '@floating-ui/react-dom';\nimport { autoPlacement, autoUpdate, FloatingPortal, offset } from '@floating-ui/react';\nimport { PopperContext, usePopper } from './usePopper';\nimport { useMergeRefs } from '../../hooks/useMergeRef';\n\nconst Popper = ({\n placement,\n offset: initialOffset = 0,\n autoPlacement: initialAutoPlacement,\n strategy = 'absolute',\n middlewares,\n children,\n}: PopperProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const { refs, floatingStyles, ...floating } = useFloating({\n strategy,\n placement,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(initialOffset),\n initialAutoPlacement &&\n autoPlacement({\n crossAxis: false,\n ...initialAutoPlacement,\n }),\n ...(middlewares ?? []),\n ],\n });\n\n return (\n <PopperContext.Provider\n value={{ isOpen, setIsOpen, ...floating, ...refs, floatingStyles: { ...floatingStyles, zIndex: 20002 } }}\n >\n {children}\n </PopperContext.Provider>\n );\n};\n\nexport const PopperTrigger = forwardRef<HTMLDivElement, PopperTriggerProps>(\n ({ children, isOpen = false, ...rest }, ref) => {\n const { setReference, setIsOpen } = usePopper();\n\n const refs = useMergeRefs(ref, setReference);\n\n useEffect(() => {\n setIsOpen(isOpen);\n }, [isOpen, setIsOpen]);\n\n return (\n <StyledPopper ref={refs} data-shoplflow={'Popper'} {...rest}>\n {children}\n </StyledPopper>\n );\n },\n);\n\nexport const PopperPortal = forwardRef<HTMLDivElement, PopperPortalProps>(\n ({ children, animation: initialAnimation }, ref) => {\n const { floatingStyles, setFloating, isOpen } = usePopper();\n const animation = initialAnimation ?? fadeInOut;\n\n const refs = useMergeRefs(ref, setFloating);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <FloatingPortal>\n <AnimatePresence>\n <motion.div\n initial={animation.initial}\n animate={animation.animate}\n exit={animation.exit}\n ref={refs}\n style={floatingStyles}\n >\n {children}\n </motion.div>\n </AnimatePresence>\n </FloatingPortal>\n );\n },\n);\n\nPopper.Trigger = PopperTrigger;\nPopper.Portal = PopperPortal;\n\nexport default Popper;\n","import styled from '@emotion/styled';\nimport type { PopperTriggerProps } from './Popper.types';\n\nexport const StyledPopper = styled.div<Pick<PopperTriggerProps, 'height' | 'width'>>`\n width: ${({ width }) => width ?? 'fit-content'};\n height: ${({ height }) => height && height};\n`;\n","import { createContext } from 'react';\nimport * as React from 'react';\nimport type { ReferenceType } from '@floating-ui/react';\nimport type { UseFloatingReturn } from '@floating-ui/react-dom';\n\ntype PopperContextType<RT extends ReferenceType = ReferenceType> = Omit<UseFloatingReturn<RT>, 'refs'> & {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n reference: React.MutableRefObject<RT | null>;\n floating: React.MutableRefObject<HTMLElement | null>;\n setReference: (node: RT | null) => void;\n setFloating: (node: HTMLElement | null) => void;\n floatingStyles: React.CSSProperties;\n};\n\nexport const PopperContext = createContext<PopperContextType | null>(null);\n\nexport const usePopper = () => {\n const context = React.useContext(PopperContext);\n\n if (context === null) {\n throw new Error('usePopper must be used within a PopperProvider');\n }\n return context;\n};\n","import { useMemo } from 'react';\n\nexport type ReactRef<T> = React.RefCallback<T> | React.MutableRefObject<T>;\n\nexport function assignRef<T = unknown>(ref: ReactRef<T> | null | undefined, value: T) {\n if (ref == null) {\n return;\n }\n\n if (typeof ref === 'function') {\n ref(value);\n return;\n }\n\n try {\n ref.current = value;\n } catch (error) {\n throw new Error(`Cannot assign value '${String(value)}' to ref '${String(ref)}'`);\n }\n}\n\nexport function mergeRefs<T>(...refs: Array<ReactRef<T> | null | undefined>) {\n return (node: T | null) => {\n refs.forEach((ref) => {\n assignRef(ref, node);\n });\n };\n}\n\nexport function useMergeRefs<T>(...refs: Array<ReactRef<T> | null | undefined>) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => mergeRefs(...refs), refs);\n}\n","import React, { useEffect, useState } from 'react';\nimport { StyledDropdown } from './Dropdown.styled';\nimport { Popper } from '../Popper';\nimport type { DropdownProps } from './Dropdown.types';\nimport { DropdownContext } from './useDropdown';\nimport { DropdownButton } from './DropdownButton';\nimport { DropdownContent } from './DropdownContent';\n\nconst Dropdown = ({\n isOpen: initialIsOpen = false,\n trigger,\n popper,\n option = 'CLICK',\n width = '100%',\n}: DropdownProps) => {\n const [triggerRef, setTriggerRef] = useState<HTMLDivElement | null>(null);\n const [size, setSize] = useState({ width: 0, height: 0 });\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n if (triggerRef) {\n setSize({\n width: triggerRef.offsetWidth,\n height: triggerRef.offsetHeight,\n });\n }\n }, [triggerRef]);\n\n useEffect(() => {\n if (initialIsOpen === undefined) {\n return;\n }\n setIsOpen(initialIsOpen);\n }, [initialIsOpen]);\n\n return (\n <StyledDropdown data-shoplflow={'Dropdown'} width={width}>\n <DropdownContext.Provider value={{ ...size, isOpen, setIsOpen, option }}>\n <Popper\n offset={4}\n autoPlacement={{\n allowedPlacements: ['bottom-start', 'top-start'],\n }}\n >\n <Popper.Trigger ref={setTriggerRef} isOpen={isOpen} width={width}>\n {trigger}\n </Popper.Trigger>\n <Popper.Portal>{popper}</Popper.Portal>\n </Popper>\n </DropdownContext.Provider>\n </StyledDropdown>\n );\n};\n\nDropdown.Button = DropdownButton;\n\nDropdown.Content = DropdownContent;\n\nexport default Dropdown;\n","import styled from '@emotion/styled';\nimport { boxShadowTokens, colorTokens } from '../../styles';\nimport type { DropdownButtonProps, DropdownContentProps, DropdownSizeVariantType } from './Dropdown.types';\nimport { motion } from 'framer-motion';\nimport { css } from '@emotion/react';\nimport type { CSSProperties } from 'react';\n\nexport const getDropdownHeightBySizeVar = (size: DropdownSizeVariantType) => {\n switch (size) {\n case 'M':\n return '40px';\n case 'S':\n return '32px';\n default:\n return '40px';\n }\n};\n\nexport const getDropdownFontSizeBySizeVar = (size: DropdownSizeVariantType) => {\n switch (size) {\n case 'M':\n return 'body1_400';\n case 'S':\n return 'body2_400';\n default:\n return 'body1_400';\n }\n};\n\nexport const getDropdownStyleBySizeVar = (size: DropdownSizeVariantType) => {\n switch (size) {\n case 'M':\n return css`\n padding: 4px 4px 4px 12px;\n `;\n case 'S':\n return css`\n padding: 4px 4px 4px 8px;\n gap: 4px;\n `;\n default:\n return css`\n padding: 4px 4px 4px 12px;\n `;\n }\n};\n\nexport const getDropdownIconSizeBySizeVar = (size: DropdownSizeVariantType) => {\n switch (size) {\n case 'S':\n return css`\n height: 24px;\n width: 24px;\n min-width: 24px;\n min-height: 24px;\n `;\n case 'M':\n return css`\n height: 32px;\n width: 32px;\n min-width: 32px;\n min-height: 32px;\n `;\n default:\n return css`\n height: 32px;\n width: 32px;\n min-width: 32px;\n min-height: 32px;\n `;\n }\n};\n\nexport const StyledDropdown = styled.div<{ width: CSSProperties['width'] }>`\n width: ${({ width }) => width};\n`;\nexport const StyledDropdownContent = styled.div<DropdownContentProps>`\n display: flex;\n flex-direction: column;\n background: ${colorTokens.neutral0};\n width: ${({ width }) => width ?? '240px'};\n padding: 4px;\n border-radius: 6px;\n box-shadow: ${boxShadowTokens.dropShadow};\n`;\n\nexport const StyledDropdownButton = styled.button<DropdownButtonProps>`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 100%;\n gap: 8px;\n cursor: pointer;\n background-color: ${colorTokens.neutral0};\n ${({ sizeVar }) => sizeVar && getDropdownStyleBySizeVar(sizeVar)};\n ${({ disabled }) =>\n disabled &&\n css`\n background-color: ${colorTokens.neutral100};\n cursor: not-allowed;\n `}\n`;\nexport const DropdownButtonIcon = styled(motion.div)<DropdownButtonProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${({ sizeVar }) => sizeVar && getDropdownIconSizeBySizeVar(sizeVar)};\n`;\n","import { createContext, useContext } from 'react';\nimport type { DropdownOptionVariantType } from './Dropdown.types';\n\nexport type DropdownContextType = {\n isOpen: boolean;\n option: DropdownOptionVariantType;\n setIsOpen: (isOpen: boolean) => void;\n width: number;\n height: number;\n};\n\nexport const DropdownContext = createContext<DropdownContextType | null>(null);\n\nexport const useDropdown = () => {\n const context = useContext(DropdownContext);\n\n if (context === null) {\n throw new Error('useDropdown must be used within a DropdownProvider');\n }\n return context;\n};\n","import type { MouseEvent } from 'react';\nimport React, { forwardRef, useState } from 'react';\nimport type { DropdownButtonProps } from './Dropdown.types';\nimport { useDropdown } from './useDropdown';\nimport { InputWrapper } from '../Inputs/common/input.styled';\nimport {\n DropdownButtonIcon,\n getDropdownFontSizeBySizeVar,\n getDropdownHeightBySizeVar,\n StyledDropdownButton,\n} from './Dropdown.styled';\nimport { Text } from '../Text';\nimport { Icon } from '../Icon';\nimport { DownArrowSolidXsmallIcon } from '@shoplflow/shopl-assets';\n\nexport const DropdownButton = forwardRef<HTMLButtonElement, DropdownButtonProps>(\n ({ width = '100%', onClick, sizeVar = 'M', isError, placeholder, value, disabled, leftSource, ...rest }, ref) => {\n const { isOpen, setIsOpen } = useDropdown();\n\n const [isHovered, setIsHovered] = useState(false);\n\n const handleOnClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (!disabled) {\n onClick && onClick(e);\n setIsOpen(!isOpen);\n }\n };\n\n const handleOnMouseEnter = () => {\n setIsHovered(true);\n };\n const handleOnMouseLeave = () => {\n setIsHovered(false);\n };\n\n const getTextColor = ({ value, disabled }: { value?: React.ReactNode | null; disabled?: boolean }) => {\n if (disabled) {\n return 'neutral350';\n }\n if (!value) {\n return 'neutral400';\n }\n return 'neutral700';\n };\n\n return (\n <InputWrapper\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n isFocused={isOpen}\n isHovered={isHovered}\n disabled={disabled}\n width={width}\n isError={isError}\n height={getDropdownHeightBySizeVar(sizeVar)}\n >\n <StyledDropdownButton ref={ref} onClick={handleOnClick} disabled={disabled} {...rest} sizeVar={sizeVar}>\n {leftSource && leftSource}\n\n {value || (\n <Text\n typography={getDropdownFontSizeBySizeVar(sizeVar)}\n color={getTextColor({ value, disabled })}\n textOverflow={'ellipsis'}\n lineClamp={1}\n >\n {placeholder}\n </Text>\n )}\n\n <DropdownButtonIcon\n sizeVar={sizeVar}\n animate={{\n rotate: isOpen ? 180 : 0,\n }}\n transition={{\n duration: 0.2,\n }}\n >\n <Icon iconSource={DownArrowSolidXsmallIcon} color={'neutral400'} sizeVar='XS' />\n </DropdownButtonIcon>\n </StyledDropdownButton>\n </InputWrapper>\n );\n },\n);\n","import styled from '@emotion/styled';\nimport type { BorderRadiusTokens } from '../../../styles';\nimport { borderRadiusTokens, colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\nimport type { HTMLInputTypeAttribute } from 'react';\n\nexport type Status = {\n isFocused?: boolean;\n isError?: boolean;\n isHovered?: boolean;\n disabled?: boolean;\n};\n\nconst getBorderColorByStatus = ({ isFocused, isError, isHovered, disabled }: Status) => {\n if (!disabled) {\n if (isError) {\n return colorTokens.red300;\n }\n if (isFocused) {\n return colorTokens.primary300;\n }\n if (isHovered) {\n return colorTokens.neutral700;\n }\n }\n\n return colorTokens.neutral300;\n};\n\nexport const getStyleByType = ({\n type,\n height,\n minHeight,\n maxHeight,\n width,\n minWidth,\n maxWidth,\n borderRadius,\n customNumberInputHeight,\n}: {\n type?: HTMLInputTypeAttribute;\n width?: CSSStyleDeclaration['width'];\n minWidth?: CSSStyleDeclaration['minWidth'];\n maxWidth?: CSSStyleDeclaration['maxWidth'];\n height?: CSSStyleDeclaration['height'];\n minHeight?: CSSStyleDeclaration['minHeight'];\n maxHeight?: CSSStyleDeclaration['maxHeight'];\n borderRadius?: BorderRadiusTokens;\n customNumberInputHeight?: string;\n}) => {\n if (type === 'number') {\n return css`\n width: ${width || '64px'};\n height: ${customNumberInputHeight || '32px'};\n border-radius: ${borderRadius ? borderRadiusTokens[borderRadius] : '6px'};\n `;\n }\n\n return css`\n width: ${width || '100%'};\n min-width: ${minWidth || 'initial'};\n max-width: ${maxWidth || 'initial'};\n height: ${height || 'initial'};\n min-height: ${minHeight || 'initial'};\n max-height: ${maxHeight || 'initial'};\n border-radius: ${borderRadius ? borderRadiusTokens[borderRadius] : '6px'};\n `;\n};\n\nexport const InputWrapper = styled.label<\n Status & {\n height?: CSSStyleDeclaration['height'];\n width?: CSSStyleDeclaration['width'];\n minHeight?: CSSStyleDeclaration['minHeight'];\n maxHeight?: CSSStyleDeclaration['maxHeight'];\n minWidth?: CSSStyleDeclaration['minWidth'];\n maxWidth?: CSSStyleDeclaration['maxWidth'];\n borderRadius?: BorderRadiusTokens;\n direction?: 'row' | 'column';\n customNumberInputHeight?: string;\n type?: HTMLInputTypeAttribute;\n }\n>`\n position: relative;\n display: flex;\n align-items: center;\n border-radius: 6px;\n flex-direction: ${({ direction }) => direction || 'row'};\n ${({ type, height, minHeight, maxHeight, width, maxWidth, minWidth, borderRadius, customNumberInputHeight }) =>\n getStyleByType({\n customNumberInputHeight,\n type,\n height,\n minHeight,\n maxHeight,\n width,\n maxWidth,\n minWidth,\n borderRadius,\n })};\n justify-content: space-between;\n gap: 8px;\n border: 1px solid ${(props) => getBorderColorByStatus(props)};\n background-color: ${colorTokens.neutral0};\n overflow: hidden;\n ${({ disabled }) =>\n disabled &&\n css`\n background-color: ${colorTokens.neutral100};\n cursor: not-allowed;\n `};\n`;\n","import React, { forwardRef } from 'react';\nimport { StyledIcon } from './Icon.styled';\nimport type { IconProps } from './Icon.types';\n\nconst Icon = forwardRef<SVGSVGElement, IconProps>(({ iconSource, ...rest }, ref) => {\n return <StyledIcon as={iconSource} ref={ref} {...rest} data-shoplflow={'Icon'} />;\n});\n\nexport default Icon;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../styles';\nimport type { IconOptionProps, IconSizeVariantsType } from './Icon.types';\nimport { IconSizeVariants } from './Icon.types';\n\nconst getIconSize = (size?: IconSizeVariantsType) => {\n switch (size) {\n case IconSizeVariants.XS:\n return '12px';\n case IconSizeVariants.S:\n return '20px';\n case IconSizeVariants.M:\n return '24px';\n case IconSizeVariants.L:\n return '30px';\n case IconSizeVariants.XL:\n return '36px';\n default:\n return 'fit-content';\n }\n};\n\nexport const StyledIcon = styled.svg<IconOptionProps>`\n width: ${({ sizeVar }) => sizeVar && getIconSize(sizeVar)};\n min-width: ${({ sizeVar }) => sizeVar && getIconSize(sizeVar)};\n height: ${({ sizeVar }) => sizeVar && getIconSize(sizeVar)};\n min-height: ${({ sizeVar }) => sizeVar && getIconSize(sizeVar)};\n & > path {\n fill: ${({ color }) => color && colorTokens[color]};\n }\n`;\n","import type { $Values } from '@shoplflow/utils';\nimport type { HTMLAttributes } from 'react';\nimport type { ColorTokenProps, IconSourceProps, SizeVariantProps } from '../../utils/type/ComponentProps';\n\nexport const IconSizeVariants = {\n XS: 'XS',\n S: 'S',\n M: 'M',\n L: 'L',\n XL: 'XL',\n} as const;\n\nexport type IconSizeVariantsType = $Values<typeof IconSizeVariants>;\n\nexport interface IconProps extends IconOptionProps {}\nexport interface IconOptionProps\n extends SizeVariantProps<IconSizeVariantsType>,\n IconSourceProps,\n ColorTokenProps,\n Omit<HTMLAttributes<SVGSVGElement>, 'color'> {}\n\nexport type DangerouslySetInnerHTML =\n | (string & {\n // Should be InnerHTML['innerHTML'].\n // But unfortunately we're mixing renderer-specific type declarations.\n __html: string | TrustedHTML;\n })\n | undefined;\n","import type { MouseEvent } from 'react';\nimport React from 'react';\nimport { useDropdown } from './useDropdown';\nimport { noop, OutSideClick } from '@shoplflow/utils';\nimport { StyledDropdownContent } from './Dropdown.styled';\nimport type { DropdownContentProps } from './Dropdown.types';\n\nexport const DropdownContent = ({ children, width: initialWidth, type, onClick, ...rest }: DropdownContentProps) => {\n const { width, setIsOpen, option } = useDropdown();\n\n const isFillType = type === 'FILL';\n const contentWidth = isFillType ? `${width}px` : initialWidth;\n\n const returnCallbackByOption = () => {\n if (option === 'OUTSIDE_CLICK') {\n return () => setIsOpen(false);\n }\n if (option === 'CLICK') {\n return () => setIsOpen(false);\n }\n return noop;\n };\n\n const handleClick = (e: MouseEvent<HTMLDivElement>) => {\n onClick && onClick(e);\n if (option === 'CLICK') {\n setIsOpen(false);\n }\n };\n\n return (\n <OutSideClick outsideClick={returnCallbackByOption()}>\n <StyledDropdownContent width={contentWidth} onClick={handleClick} {...rest}>\n {children}\n </StyledDropdownContent>\n </OutSideClick>\n );\n};\n","import type { MouseEvent } from 'react';\nimport React from 'react';\nimport { getFontStylesBySizeVar, StyledMenu } from './Menu.styled';\nimport type { MenuProps } from './Menu.types';\nimport { Stack } from '../Stack';\nimport { useOnToggle } from '../../hooks/useOnToggle';\n\nconst Menu = ({\n leftSource,\n rightSource,\n children,\n isSelected,\n defaultSelected = false,\n onClick,\n sizeVar = 'XS',\n disabled = false,\n ...rest\n}: MenuProps) => {\n const [selected, handleToggle] = useOnToggle(isSelected, defaultSelected);\n\n const LeftSourceClone = leftSource\n ? React.cloneElement(leftSource, {\n ...rest,\n isSelected,\n })\n : leftSource;\n\n const handleOnClick = (e: MouseEvent<HTMLLIElement>) => {\n !disabled && handleToggle();\n !disabled && onClick && onClick(e);\n };\n\n return (\n <StyledMenu\n sizeVar={sizeVar}\n isSelected={selected}\n leftSource={leftSource}\n onClick={handleOnClick}\n {...rest}\n data-shoplflow={'Menu'}\n >\n {leftSource && LeftSourceClone}\n <Stack.Horizontal width={'100%'} height={'100%'} align={'center'} className={getFontStylesBySizeVar(sizeVar)}>\n {children}\n </Stack.Horizontal>\n {rightSource && rightSource}\n </StyledMenu>\n );\n};\n\nexport default Menu;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../styles';\nimport type { MenuOptionProps } from './Menu.types';\nimport { getDisabledStyle } from '../../styles/utils/getDisabledStyle';\nimport { css } from '@emotion/react';\nimport { CHECKBOX_SYMBOL_KEY, RADIO_SYMBOL_KEY } from '../ControlButtons';\nimport { MUNUS_BUTTON_SYMBOL_KEY } from '../ControlButtons/MinusButton/MinusButton';\n\nconst getStylesBySizeVar = (sizeVar: MenuOptionProps['sizeVar']) => {\n switch (sizeVar) {\n case 'XS':\n return css`\n min-height: 28px;\n `;\n case 'S':\n return css`\n min-height: 36px;\n `;\n case 'M':\n return css`\n height: 48px;\n `;\n default:\n return css`\n height: 48px;\n `;\n }\n};\n\nexport const getFontStylesBySizeVar = (sizeVar: MenuOptionProps['sizeVar']) => {\n switch (sizeVar) {\n case 'XS':\n return 'body2_400';\n case 'S':\n return 'body1_400';\n case 'M':\n return 'body1_400';\n default:\n return 'body1_400';\n }\n};\n\nexport const StyledMenu = styled.li<MenuOptionProps>`\n display: flex;\n width: 100%;\n flex-direction: row;\n align-items: center;\n padding: 6px;\n gap: 4px;\n border-radius: 4px;\n cursor: pointer;\n background: transparent;\n ${({ sizeVar }) => getStylesBySizeVar(sizeVar)};\n &:hover {\n background: ${colorTokens.neutral400_5};\n }\n ${({ disabled }) => disabled && getDisabledStyle(disabled)}\n ${({ isSelected, leftSource }) =>\n isSelected === true &&\n (!leftSource ||\n (leftSource &&\n !leftSource.type[RADIO_SYMBOL_KEY] &&\n !leftSource.type[CHECKBOX_SYMBOL_KEY] &&\n !leftSource.type[MUNUS_BUTTON_SYMBOL_KEY])) &&\n css`\n background: ${colorTokens.neutral200};\n &:hover {\n background: ${colorTokens.neutral200};\n }\n `}\n`;\n","import React, { forwardRef } from 'react';\nimport * as StyledMinusBox from './MinusButton.styled';\nimport type { MinusBoxProps } from './MinusButton.types';\n\nexport const MUNUS_BUTTON_SYMBOL_KEY = Symbol('SHOPLFLOW_MUNUS_BUTTON');\n\nconst MinusButton = forwardRef<HTMLButtonElement, MinusBoxProps>(({ onClick, color = 'neutral300', ...rest }, ref) => {\n return (\n <StyledMinusBox.Container data-shoplflow={'minusButton'}>\n <StyledMinusBox.IconButton color={color} onClick={onClick} ref={ref} {...rest}>\n <svg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path\n d='M0 4C0 1.79086 1.79086 0 4 0H12C14.2091 0 16 1.79086 16 4V12C16 14.2091 14.2091 16 12 16H4C1.79086 16 0 14.2091 0 12V4Z'\n fill='none'\n />\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M3 8C3 7.44772 3.44772 7 4 7H12C12.5523 7 13 7.44772 13 8C13 8.55228 12.5523 9 12 9H4C3.44772 9 3 8.55228 3 8Z'\n fill='white'\n />\n </svg>\n </StyledMinusBox.IconButton>\n </StyledMinusBox.Container>\n );\n});\n\nMinusButton[MUNUS_BUTTON_SYMBOL_KEY] = true;\n\nexport default MinusButton;\n","import styled from '@emotion/styled';\nimport type { ColorTokens } from '../../../styles';\nimport { borderRadiusTokens, colorTokens } from '../../../styles';\nimport { getNextColor } from '../../../utils/getNextColor';\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 4px;\n`;\n\nexport const IconButton = styled.button<{ color: ColorTokens }>`\n display: flex;\n width: 16px;\n height: 16px;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n border-radius: ${borderRadiusTokens.borderRadius04};\n border: none;\n background: ${({ color }) => colorTokens[color]};\n cursor: pointer;\n transition:\n transform 0.1s ease-out,\n background 0.1s ease;\n\n &:hover {\n background: ${({ color }) => colorTokens[getNextColor(color, 1)]};\n }\n`;\n","import type { MouseEvent } from 'react';\nimport React, { forwardRef, useState } from 'react';\nimport { Container, StyledCheckbox, StyledCheckHiddenInput } from './Checkbox.styled';\nimport type { CheckboxProps } from './Checkbox.types';\nimport { useOnToggle } from '../../../hooks/useOnToggle';\n\nexport const CHECKBOX_SYMBOL_KEY = Symbol('SHOPLFLOW_CHECKBOX');\n\nconst Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n { defaultSelected, isSelected, disabled, onMouseEnter, onClick, onMouseLeave, styleVar = 'PRIMARY', id, ...rest },\n ref,\n ) => {\n const [selected, toggleSelected] = useOnToggle(isSelected, defaultSelected);\n\n const [isHovered, toggleHovered] = useState(false);\n const handleMouseLeave = (e: MouseEvent<HTMLButtonElement>) => {\n toggleHovered(false);\n onMouseLeave && onMouseLeave(e);\n };\n const handleMouseEnter = (e: MouseEvent<HTMLButtonElement>) => {\n toggleHovered(true);\n onMouseEnter && onMouseEnter(e);\n };\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n return;\n }\n onClick && onClick(e);\n toggleSelected();\n };\n\n return (\n <Container\n onClick={handleClick}\n onMouseLeave={handleMouseLeave}\n onMouseEnter={handleMouseEnter}\n disabled={disabled}\n type='button'\n data-shoplflow={'Checkbox'}\n >\n <StyledCheckHiddenInput type='checkbox' disabled={disabled} id={id} {...rest} ref={ref} />\n <StyledCheckbox\n styleVar={styleVar}\n htmlFor={id}\n isHovered={isHovered}\n isSelected={selected}\n disabled={disabled}\n >\n <svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'>\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M9.78822 0.297596C10.1761 -0.0955083 10.8093 -0.0997053 11.2024 0.288222C11.5653 0.646308 11.5968 1.21334 11.2943 1.60765L11.2118 1.7024L5.31714 7.7024C4.95248 8.07193 4.37282 8.09687 3.97909 7.77976L3.88476 7.69335L0.779404 4.42669C0.396475 4.02871 0.408672 3.39567 0.806647 3.01274C1.17401 2.65926 1.74167 2.64247 2.12801 2.95499L2.2206 3.03998L4.614 5.567L9.78822 0.297596Z'\n fill='white'\n />\n </svg>\n </StyledCheckbox>\n </Container>\n );\n },\n);\n\nCheckbox[CHECKBOX_SYMBOL_KEY] = true;\n\nexport default Checkbox;\n","import { css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\nimport type { CheckboxOptionProps } from './Checkbox.types';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\n\nconst getStylesByStyleVariant = (\n styleVariant?: CheckboxOptionProps['styleVar'],\n isSelected?: CheckboxOptionProps['isSelected'],\n isHovered?: boolean,\n) => {\n switch (styleVariant) {\n case 'PRIMARY':\n if (isSelected) {\n return css`\n background: ${colorTokens.primary300};\n border: 1.5px solid ${colorTokens.primary300};\n & > svg > path {\n fill: ${colorTokens.neutral0};\n }\n ${isHovered &&\n css`\n border: 1.5px solid ${colorTokens.primary400};\n background: ${colorTokens.primary400};\n `}\n `;\n }\n return css`\n background: ${colorTokens.neutral200};\n border: 1.5px solid ${colorTokens.neutral200};\n border-radius: 4px;\n ${isHovered &&\n css`\n border: 1.5px solid ${colorTokens.neutral300};\n background: ${colorTokens.neutral300};\n `}\n\n & > svg > path {\n fill: ${colorTokens.neutral0};\n }\n `;\n case 'LINE':\n if (isSelected) {\n return css`\n border: 1.5px solid ${colorTokens.primary300};\n background: transparent;\n border-radius: 4px;\n & > svg > path {\n fill: ${colorTokens.primary300};\n }\n ${isHovered &&\n css`\n border: 1.5px solid ${colorTokens.primary400};\n & > svg > path {\n fill: ${colorTokens.primary400};\n }\n `}\n `;\n }\n return css`\n background: transparent;\n border: 1.5px solid ${colorTokens.neutral200};\n border-radius: 4px;\n & > svg > path {\n fill: ${colorTokens.neutral200};\n }\n ${isHovered &&\n css`\n border: 1.5px solid ${colorTokens.neutral300};\n & > svg > path {\n fill: ${colorTokens.neutral300};\n }\n `}\n `;\n default:\n return '';\n }\n};\n\nexport const StyledCheckHiddenInput = styled.input`\n position: absolute;\n width: 0;\n height: 0;\n opacity: 0;\n visibility: hidden;\n`;\n\nexport const StyledCheckbox = styled.label<\n CheckboxOptionProps & {\n isHovered: boolean;\n }\n>`\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 16px;\n min-height: 16px;\n width: 16px;\n height: 16px;\n background: ${colorTokens.neutral200};\n border-radius: 4px;\n box-sizing: border-box;\n cursor: pointer;\n ${({ styleVar, isSelected, isHovered }) => getStylesByStyleVariant(styleVar, isSelected, isHovered)};\n ${({ disabled }) => getDisabledStyle(disabled)}\n`;\n\nexport const Container = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n width: fit-content;\n height: fit-content;\n background-color: transparent;\n`;\n","import type { $Values } from '@shoplflow/utils';\nimport type {\n DefaultSelectedProps,\n DisableProps,\n SelectedProps,\n StyleVariantProps,\n} from '../../../utils/type/ComponentProps';\nimport type { ButtonHTMLAttributes, InputHTMLAttributes } from 'react';\n\nexport const CheckboxStyleVariants = {\n PRIMARY: 'PRIMARY',\n LINE: 'LINE',\n} as const;\n\nexport type CheckboxStyleVariantType = $Values<typeof CheckboxStyleVariants>;\n\nexport interface CheckboxProps extends CheckboxOptionProps {}\nexport interface CheckboxOptionProps\n extends StyleVariantProps<CheckboxStyleVariantType>,\n SelectedProps,\n DefaultSelectedProps,\n DisableProps,\n Omit<InputHTMLAttributes<HTMLInputElement>, 'onMouseLeave' | 'onMouseEnter' | 'onClick'>,\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'onMouseLeave' | 'onMouseEnter' | 'onClick'> {}\n","import type { MouseEvent } from 'react';\nimport React, { useState } from 'react';\nimport { Container, StyledRadio } from './Radio.styled';\nimport type { RadioProps } from './Radio.types';\nimport { useOnToggle } from '../../../hooks/useOnToggle';\n\nexport const RADIO_SYMBOL_KEY = Symbol('SHOPLFLOW_RADIO');\n\nconst Radio = ({ isSelected, defaultSelected, disabled, onClick, onMouseEnter, onMouseLeave, ...rest }: RadioProps) => {\n const [selected, toggleSelected] = useOnToggle(isSelected, defaultSelected);\n const [isHovered, toggleHovered] = useState(false);\n const handleMouseLeave = (e: MouseEvent<HTMLButtonElement>) => {\n toggleHovered(false);\n onMouseLeave && onMouseLeave(e);\n };\n const handleMouseEnter = (e: MouseEvent<HTMLButtonElement>) => {\n toggleHovered(true);\n onMouseEnter && onMouseEnter(e);\n };\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n return;\n }\n onClick && onClick(e);\n toggleSelected();\n };\n return (\n <Container\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...rest}\n data-shoplflow={'Radio'}\n >\n <StyledRadio isSelected={selected} isHovered={isHovered} disabled={disabled}>\n <svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'>\n <circle cx='8' cy='8' r='5.5' fill='white' stroke='#3299FE' strokeWidth='5' />\n </svg>\n </StyledRadio>\n </Container>\n );\n};\n\nRadio[RADIO_SYMBOL_KEY] = true;\n\nexport default Radio;\n","import styled from '@emotion/styled';\nimport { css } from '@emotion/react';\nimport { colorTokens } from '../../../styles';\nimport type { RadioOptionProps } from './Radio.types';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\n\nconst getSelectedStyle = (isHovered: boolean) => {\n return css`\n & > svg > circle {\n stroke: ${colorTokens.primary300};\n }\n ${isHovered &&\n css`\n & > svg > circle {\n stroke: ${colorTokens.primary400};\n }\n `}\n `;\n};\n\nexport const StyledRadio = styled.div<\n RadioOptionProps & {\n isHovered: boolean;\n }\n>`\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 16px;\n min-height: 16px;\n width: 16px;\n height: 16px;\n ${({ isHovered }) => css`\n & > svg > circle {\n stroke: ${colorTokens.neutral200};\n }\n ${isHovered &&\n css`\n & > svg > circle {\n stroke: ${colorTokens.neutral300};\n }\n `}\n `}\n cursor: pointer;\n ${({ isSelected, isHovered }) => isSelected && getSelectedStyle(isHovered)}\n ${({ disabled }) => getDisabledStyle(disabled)}\n`;\nexport const Container = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n padding: 4px;\n width: fit-content;\n height: fit-content;\n`;\n","import type {\n ChildrenProps,\n DefaultSelectedProps,\n DisableProps,\n LeftElementProps,\n RightElementProps,\n SelectedProps,\n SizeVariantProps,\n} from '../../utils/type/ComponentProps';\nimport type { HTMLAttributes } from 'react';\nimport type { $Values } from '@shoplflow/utils';\n\nexport const MenuSizeVariants = {\n XS: 'XS',\n S: 'S',\n M: 'M',\n} as const;\n\nexport type MenuSizeVariantType = $Values<typeof MenuSizeVariants>;\n\nexport interface MenuProps extends MenuOptionProps, HTMLAttributes<HTMLLIElement> {}\nexport interface MenuOptionProps\n extends ChildrenProps,\n DisableProps,\n RightElementProps,\n LeftElementProps,\n SelectedProps,\n DefaultSelectedProps,\n SizeVariantProps<MenuSizeVariantType> {}\n","import React from 'react';\nimport { StyledList, StyledText2Rows } from './List.styled';\nimport type { ListProps, ListText2RowsProps } from './List.types';\nimport { Stack } from '../Stack';\nimport { Text } from '../Text';\n\nconst List = ({ children, leftSource, rightSource, ...rest }: ListProps) => {\n const LeftSourceClone = leftSource\n ? React.cloneElement(leftSource as React.ReactElement, {\n ...rest,\n })\n : leftSource;\n\n if (!children && rightSource) {\n throw new Error('RightSource는 children이 필수로 포함되어야합니다.');\n }\n\n return (\n <StyledList data-shoplflow={'List'} {...rest}>\n {LeftSourceClone && LeftSourceClone}\n <Stack.Horizontal height={'36px'} width={'100%'} spacing={'spacing08'} align={'center'}>\n {children}\n </Stack.Horizontal>\n {rightSource && rightSource}\n </StyledList>\n );\n};\n\nexport const Text2Rows = ({ title, subTitle }: ListText2RowsProps) => {\n return (\n <StyledText2Rows>\n <Text typography={'body1_500'} color={'neutral700'} lineClamp={1} wordBreak={'break-all'}>\n {title}\n </Text>\n {subTitle && (\n <Text typography={'body2_400'} color={'neutral400'} lineClamp={1} wordBreak={'break-all'}>\n {subTitle}\n </Text>\n )}\n </StyledText2Rows>\n );\n};\n\nList.Text2Rows = Text2Rows;\n\nexport default List;\n","import styled from '@emotion/styled';\nimport type { ListOptionProps } from './List.types';\nimport { colorTokens } from '../../styles';\nimport { getDisabledStyle } from '../../styles/utils/getDisabledStyle';\n\nexport const StyledList = styled.li<ListOptionProps>`\n display: flex;\n flex-direction: row;\n width: 100%;\n align-items: center;\n padding: 6px 8px;\n gap: 4px;\n border-radius: 8px;\n background: ${colorTokens.neutral0};\n cursor: pointer;\n ${({ disabled }) => disabled && getDisabledStyle(disabled)}\n &:hover {\n background: ${colorTokens.neutral100};\n }\n`;\n\nexport const StyledText2Rows = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 2px;\n`;\n","import styled from '@emotion/styled';\nimport type { TagOptionProps } from './Tag.types';\nimport type { TypographyTokens } from '../../styles';\nimport { colorTokens } from '../../styles';\nimport { css } from '@emotion/react';\nimport { getNextColor } from '../../utils/getNextColor';\n\nexport const getTypographyBySize = (size?: TagOptionProps['sizeVar']): TypographyTokens => {\n switch (size) {\n case 'XS':\n return 'caption_400';\n case 'S':\n return 'caption_400';\n case 'M':\n return 'body2_400';\n default:\n return 'body2_400';\n }\n};\n\nconst getTagStyleBySize = (size?: TagOptionProps['sizeVar']) => {\n switch (size) {\n case 'XS':\n return css`\n height: 20px;\n padding: 0 4px;\n border-radius: 4px;\n `;\n case 'S':\n return css`\n height: 24px;\n padding: 0 8px;\n border-radius: 4px;\n `;\n case 'M':\n return css`\n padding: 4px 8px;\n height: 32px;\n border-radius: 6px;\n `;\n default:\n return css`\n padding: 4px 8px;\n height: 32px;\n `;\n }\n};\n\nconst getRadiusBySize = (size?: TagOptionProps['sizeVar']) => {\n switch (size) {\n case 'XS':\n return css`\n border-radius: 12px;\n `;\n case 'S':\n return css`\n border-radius: 16px;\n `;\n case 'M':\n return css`\n border-radius: 16px;\n `;\n default:\n return css`\n border-radius: 16px;\n `;\n }\n};\nconst getColorsByStyleVariant = (\n styleVariant?: TagOptionProps['styleVar'],\n color: TagOptionProps['color'] = 'neutral700',\n) => {\n switch (styleVariant) {\n case 'SOLID':\n return css`\n background: ${colorTokens[color]};\n color: ${colorTokens.neutral0};\n `;\n case 'TINT':\n return css`\n background: ${colorTokens[getNextColor(color, -2)]};\n color: ${colorTokens[color]};\n `;\n case 'LINE':\n return css`\n background: transparent;\n color: ${colorTokens[color]};\n border: 1px solid ${colorTokens[color]};\n `;\n default:\n return css`\n background: ${colorTokens[color]};\n color: ${colorTokens.neutral0};\n `;\n }\n};\n\nexport const StyledTag = styled.div<TagOptionProps>`\n display: flex;\n align-items: center;\n flex-direction: row;\n cursor: default;\n gap: 2px;\n ${({ sizeVar }) => getTagStyleBySize(sizeVar)};\n ${({ color, styleVar }) => getColorsByStyleVariant(styleVar, color)};\n ${({ radius, sizeVar }) => radius && getRadiusBySize(sizeVar)};\n`;\n","import React from 'react';\nimport { getTypographyBySize, StyledTag } from './Tag.styled';\nimport type { TagProps } from './Tag.types';\nimport classNames from 'classnames';\n\nconst Tag = ({ sizeVar, children, rightSource, leftSource, className, ...rest }: TagProps) => {\n return (\n <StyledTag\n sizeVar={sizeVar}\n className={classNames(getTypographyBySize(sizeVar), className)}\n {...rest}\n data-shoplflow={'Tag'}\n >\n {leftSource && leftSource}\n {children}\n {rightSource && rightSource}\n </StyledTag>\n );\n};\n\nexport default Tag;\n","import type { $Values } from '@shoplflow/utils';\nimport type {\n ChildrenProps,\n ColorTokenProps,\n LeftAndRightElementProps,\n SizeVariantProps,\n StyleVariantProps,\n} from '../../utils/type/ComponentProps';\nimport type { HTMLAttributes } from 'react';\n\nexport const TagStyleVariants = {\n SOLID: 'SOLID',\n TINT: 'TINT',\n LINE: 'LINE',\n} as const;\n\nexport const TagSizeVariants = {\n XS: 'XS',\n S: 'S',\n M: 'M',\n} as const;\n\nexport type TagStyleVariantType = $Values<typeof TagStyleVariants>;\nexport type TagSizeVariantType = $Values<typeof TagSizeVariants>;\n\nexport interface TagProps extends TagOptionProps {}\nexport interface TagOptionProps\n extends SizeVariantProps<TagSizeVariantType>,\n StyleVariantProps<TagStyleVariantType>,\n ColorTokenProps,\n LeftAndRightElementProps,\n ChildrenProps,\n Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n radius?: boolean;\n}\n","import React, { useEffect } from 'react';\nimport { IconWrapper, LeftElementWrapper, RightElementWrapper, StyledTree, StyledTreeItem } from './Tree.styled';\nimport type { TreeItemProps, TreeProps } from './Tree.types';\nimport { TREE_SYMBOL_KEY } from './Tree.types';\nimport { Text } from '../Text';\nimport { IconButton } from '../Buttons';\nimport { DownArrowIcon } from '@shoplflow/shopl-assets';\nimport { AnimatePresence, LayoutGroup, motion } from 'framer-motion';\nimport { Icon } from '../Icon';\nimport { fadeInOut } from '../../animation/fadeInOut';\nimport { AnimateKey } from '../../animation/AnimateKey';\nimport { StackContainer } from '../StackContainer';\n\nconst Tree = ({ children, ...rest }: TreeProps) => {\n const [isMounted, setIsMounted] = React.useState(false);\n useEffect(() => {\n setIsMounted(true);\n }, []);\n if (!isMounted) {\n return null;\n }\n return (\n <StyledTree {...rest} data-shoplflow={'Tree'} layout layoutRoot>\n <LayoutGroup>\n <AnimatePresence mode={'sync'}>{children}</AnimatePresence>\n </LayoutGroup>\n </StyledTree>\n );\n};\n\nexport const TreeItem = ({\n children,\n label,\n leftSource,\n rightSource,\n depth = 0,\n initialIsOpen,\n isOpen,\n disabled = false,\n onClick,\n ...rest\n}: TreeItemProps) => {\n const [isOpened, setIsOpened] = React.useState(initialIsOpen ?? false);\n\n const CloneChildren = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n if (child.type[TREE_SYMBOL_KEY]) {\n return React.cloneElement(child, {\n depth: depth + 1,\n } as TreeItemProps);\n }\n return child;\n });\n\n const handleToggle = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n setIsOpened((prev) => !prev);\n };\n\n const handleClickTreeItem = (e: React.MouseEvent<HTMLLIElement>) => {\n if (disabled || !onClick) {\n return;\n }\n\n return onClick(e);\n };\n\n const LeftSourceClone = leftSource\n ? React.cloneElement(leftSource, {\n disabled,\n onClick,\n ...rest,\n })\n : leftSource;\n\n useEffect(() => {\n if (isOpen !== undefined) {\n setIsOpened(isOpen);\n }\n }, [isOpen]);\n\n return (\n <>\n <StyledTreeItem\n disabled={disabled}\n depth={depth}\n variants={fadeInOut}\n {...AnimateKey}\n layout\n key={String(label)}\n onClick={handleClickTreeItem}\n {...rest}\n >\n <LeftElementWrapper>\n {LeftSourceClone && LeftSourceClone}\n <StackContainer padding={'0 0 0 4px'}>\n <Text typography={'body1_400'} lineClamp={1} color={disabled ? 'neutral350' : 'neutral700'}>\n {label}\n </Text>\n </StackContainer>\n </LeftElementWrapper>\n <RightElementWrapper>\n {rightSource}\n {children && (\n <IconButton styleVar={'GHOST'} onClick={handleToggle} sizeVar='S'>\n <IconWrapper\n animate={{\n rotate: isOpened ? 180 : 0,\n transition: {\n duration: 0.2,\n },\n }}\n >\n <Icon iconSource={DownArrowIcon} sizeVar={'S'} color='neutral400' />\n </IconWrapper>\n </IconButton>\n )}\n </RightElementWrapper>\n </StyledTreeItem>\n <AnimatePresence mode={'sync'}>\n {isOpened && children && (\n <motion.div key={'children' + String(CloneChildren)} layout {...AnimateKey} variants={fadeInOut}>\n {CloneChildren}\n </motion.div>\n )}\n </AnimatePresence>\n </>\n );\n};\nTreeItem[TREE_SYMBOL_KEY] = true;\n\nTree.Item = TreeItem;\n\nexport default Tree;\n","import styled from '@emotion/styled';\nimport type { TreeItemOptionProps } from './Tree.types';\nimport { css } from '@emotion/react';\nimport { colorTokens } from '../../styles';\nimport { motion } from 'framer-motion';\nimport { getDisabledStyle } from '../../styles/utils/getDisabledStyle';\n\nexport const StyledTree = styled(motion.ul)`\n display: flex;\n flex-direction: column;\n width: 100%;\n`;\n\nexport const StyledTreeItem = styled(motion.li)<TreeItemOptionProps>`\n display: flex;\n flex-direction: row;\n width: 100%;\n height: 48px;\n gap: 4px;\n align-items: center;\n justify-content: space-between;\n padding: 8px 8px 8px 0;\n border-radius: 8px;\n background: transparent;\n cursor: ${({ onClick }) => (onClick ? 'pointer' : 'initial')};\n ${({ depth }) =>\n depth &&\n css`\n padding-left: ${depth * 16}px;\n `};\n &:hover {\n background: ${colorTokens.neutral400_5};\n }\n ${({ disabled }) => disabled && getDisabledStyle(disabled)}\n`;\nexport const LeftElementWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\nexport const RightElementWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\nexport const IconWrapper = styled(motion.div)`\n display: flex;\n width: fit-content;\n height: fit-content;\n`;\n","import type { ChildrenProps, LeftElementProps, RightElementProps } from '../../utils/type/ComponentProps';\nimport type { ReactNode } from 'react';\nimport type { HTMLMotionProps } from 'framer-motion';\n\nexport interface TreeProps extends TreeOptionProps {}\nexport interface TreeOptionProps extends ChildrenProps {}\n\nexport interface TreeItemProps extends TreeItemOptionProps, Omit<HTMLMotionProps<'li'>, 'children'> {}\n\nexport interface TreeItemOptionProps extends ChildrenProps, LeftElementProps, RightElementProps {\n /**\n * 트리의 깊이를 설정합니다.\n * 자동으로 설정되는 값이므로 별도로 설정하지 않아도 됩니다.\n * 재귀로 Tree를 구현할 경우 사용해주세요.\n */\n depth?: number;\n /**\n * 내부에 들어갈 요소를 설정합니다.\n */\n label?: ReactNode;\n /**\n * 초기 값을 설정합니다.\n */\n initialIsOpen?: boolean;\n /**\n * 트리아이템을 직접 조작할 때 사용합니다.\n */\n isOpen?: boolean;\n /**\n * 트리 영역의 click event 비활성화 여부를 설정합니다.\n * leftsource의 click event는 별도 설정이 필요합니다.\n */\n disabled?: boolean;\n}\nexport const TREE_SYMBOL_KEY = Symbol('SHOPLFLOW_TREE');\n","export const AnimateKey = {\n initial: 'initial',\n animate: 'animate',\n exit: 'exit',\n};\n","import type { ChangeEvent, FocusEvent, HTMLInputTypeAttribute } from 'react';\nimport React, { forwardRef, useCallback, useEffect, useId, useState } from 'react';\nimport { RightElementWrapper, StyledInput } from './Input.styled';\nimport TextCounter from '../common/TextCounter';\nimport type { InputProps } from './Input.types';\nimport { IconButton } from '../../Buttons';\nimport { assetFunction } from '../../../styles/IconAssets';\nimport { useMergeRefs } from '../../../hooks/useMergeRef';\nimport { InputWrapper } from '../common/input.styled';\nimport { Icon } from '../../Icon';\nimport { getNumberLimitRange } from './utils/getNumberLimiteRange';\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n onFocus,\n onBlur,\n onChange,\n onClear,\n defaultValue,\n value,\n isError,\n disabled,\n type: initialType,\n maxLength,\n min,\n max,\n className,\n width,\n borderRadius,\n customNumberInputHeight,\n ...rest\n },\n ref,\n ) => {\n const [text, setText] = useState('');\n const [isFocused, setIsFocused] = useState(false);\n const [type, setType] = useState<HTMLInputTypeAttribute | undefined>(initialType);\n const [isHovered, setIsHovered] = useState(false);\n const uniqueId = useId();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const refs = useMergeRefs(ref, inputRef);\n\n const convertToString = useCallback((value: string | number | readonly string[]) => {\n if (typeof value !== 'number') {\n return typeof value === 'string' ? value : value.join('');\n }\n return String(value);\n }, []);\n\n const sliceText = useCallback(\n (value: string) => {\n if (maxLength && value.length > maxLength) {\n return value.slice(0, maxLength);\n }\n return value;\n },\n [maxLength],\n );\n\n const handleOnMouseEnter = () => {\n setIsHovered(true);\n };\n const handleOnMouseLeave = () => {\n setIsHovered(false);\n };\n\n const handleOnFocus = (event: FocusEvent<HTMLInputElement>) => {\n onFocus && onFocus(event);\n setIsFocused(true);\n };\n const handleOnBlur = (event: FocusEvent<HTMLInputElement>) => {\n onBlur && onBlur(event);\n setIsFocused(false);\n };\n\n const handleOnChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(event);\n\n const slicedText = sliceText(event.target.value);\n\n if (type === 'number') {\n const numberValue = Number(slicedText);\n const numberMin = Number(min);\n const numberMax = Number(max);\n const limitedText = getNumberLimitRange(numberValue, numberMin, numberMax);\n setText(limitedText);\n return;\n }\n setText(slicedText);\n };\n\n const handleOnClear = () => {\n onClear && onClear();\n if (inputRef.current) {\n setText('');\n inputRef.current.value = '';\n }\n };\n\n const handleTogglePasswordType = () => {\n if (type === 'password') {\n setType('text');\n } else {\n setType('password');\n }\n };\n\n useEffect(() => {\n if (defaultValue !== undefined) {\n const convertString = convertToString(defaultValue);\n const slicedText = sliceText(convertString);\n setText(slicedText);\n }\n }, [convertToString, defaultValue, maxLength, sliceText]);\n\n useEffect(() => {\n if (value !== undefined) {\n const convertString = convertToString(value);\n\n const slicedText = sliceText(convertString);\n inputRef.current?.value && (inputRef.current.value = slicedText);\n setText(slicedText);\n }\n }, [convertToString, maxLength, sliceText, value]);\n\n useEffect(() => {\n setType(initialType);\n }, [initialType]);\n\n return (\n <InputWrapper\n htmlFor={uniqueId}\n isFocused={isFocused}\n disabled={disabled}\n isError={isError}\n isHovered={isHovered}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n type={type}\n width={width}\n height={'40px'}\n maxHeight={'40px'}\n data-shoplflow={'input'}\n borderRadius={borderRadius}\n customNumberInputHeight={customNumberInputHeight}\n >\n <StyledInput\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n onChange={handleOnChange}\n maxLength={maxLength}\n disabled={disabled}\n value={text}\n type={type}\n id={uniqueId}\n ref={refs}\n className={'body1_400' + (className ? ` ${className}` : '')}\n {...rest}\n />\n {!(type === 'number') && (\n <RightElementWrapper>\n {maxLength && isFocused && <TextCounter currentLength={String(text).length} maxLength={maxLength} />}\n {isFocused && Boolean(String(text).length > 0) && (\n <IconButton sizeVar={'S'} onClick={handleOnClear} styleVar={'GHOST'}>\n <Icon iconSource={assetFunction('DeleteIcon')} color={'neutral350'} />\n </IconButton>\n )}\n {initialType === 'password' && (\n <IconButton sizeVar={'S'} onClick={handleTogglePasswordType} styleVar={'GHOST'}>\n <Icon\n color={'neutral600'}\n iconSource={assetFunction(type === 'password' ? 'ViewOffIcon' : 'ViewOnIcon')}\n />\n </IconButton>\n )}\n </RightElementWrapper>\n )}\n </InputWrapper>\n );\n },\n);\n\nexport default Input;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\n\nexport const StyledInput = styled.input<{\n disabled?: boolean;\n}>`\n padding: 4px 0 4px 12px;\n background-color: transparent;\n display: flex;\n min-width: 64px;\n width: 100%;\n border: none;\n box-sizing: border-box;\n &::placeholder {\n color: ${colorTokens.neutral350};\n }\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n ${({ disabled }) =>\n disabled &&\n css`\n color: ${colorTokens.neutral350};\n cursor: not-allowed;\n `};\n /* Firefox */\n &[type='number'] {\n padding: 4px 8px;\n text-align: center;\n -moz-appearance: textfield;\n }\n\n *,\n *:before,\n *:after {\n box-sizing: inherit;\n }\n`;\n\nexport const RightElementWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0 8px 0 0;\n`;\n","import { Text } from '../../../components/Text';\n\nimport styled from '@emotion/styled';\n\nconst Wrapper = styled.div`\n display: flex;\n width: 100%;\n justify-content: flex-end;\n align-items: center;\n gap: 2px;\n`;\n\nexport type TextCounterProps = {\n maxLength: number;\n currentLength: number;\n};\n\nconst TextCounter = ({ currentLength, maxLength }: TextCounterProps) => {\n return (\n <Wrapper>\n <Text typography='caption_400' color='neutral400'>\n {currentLength}\n </Text>\n <Text typography='caption_400' color='neutral350'>\n /\n </Text>\n <Text typography='caption_400' color='neutral350'>\n {maxLength}\n </Text>\n </Wrapper>\n );\n};\n\nexport default TextCounter;\n","import * as ShoplAssets from '@shoplflow/shopl-assets';\nimport * as HadaAssets from '@shoplflow/hada-assets';\n\nimport { useContext } from 'react';\nimport type { DomainType } from '../types/Domain';\nimport { StoryDomainContext } from '../../.storybook/useStoryDomain';\nimport { getDomain } from '../hooks';\n\nexport type ShoplIconKey = Exclude<keyof typeof ShoplAssets, 'isShoplIcon' | 'createIcon'>;\nexport type HadaIconKey = Exclude<keyof typeof HadaAssets, 'isHadaIcon' | 'createIcon'>;\n\nexport type IconNameType = ShoplIconKey & HadaIconKey;\n\n/**\n * 스토리북 파일에서만 사용합니다.\n */\nexport const useStoryAssetFunction = (iconName: IconNameType) => {\n const { domain } = useContext(StoryDomainContext);\n const HadaIcon = HadaAssets[iconName];\n const ShoplIcon = ShoplAssets[iconName];\n return domain === 'HADA' ? HadaIcon : ShoplIcon;\n};\n\n/**\n * 특정 컴포넌트 내부에서 아이콘을 포함하고 있을 경우 분기 용도로 사용합니다.\n * 빌드에 포함 가능합니다.\n */\nexport const assetFunction = (iconName: IconNameType, domainProps?: DomainType) => {\n const domain = domainProps ?? getDomain();\n const HadaIcon = HadaAssets[iconName];\n const ShoplIcon = ShoplAssets[iconName];\n return domain === 'hada' ? HadaIcon : ShoplIcon;\n};\n","import { createContext, useContext, useEffect, useState } from 'react';\nimport { DomainType } from '../src/types/Domain';\n\nexport type StoryDomainType = {\n domain: DomainType | undefined;\n handleToggleTheme: () => void;\n}\n\nexport const StoryDomainContext = createContext<StoryDomainType>({\n domain: 'SHOPL',\n handleToggleTheme: () => {}\n})\n\nexport const useStoryDomain = () => {\n const [domain, setDomain] = useState<DomainType | undefined>();\n\n useEffect(() => {\n const domain = localStorage.getItem('domain');\n if (domain) {\n setDomain(domain as DomainType);\n } else {\n setDomain('HADA');\n }\n }, [])\n useEffect(() => {\n if (domain) {\n localStorage.setItem('domain', domain);\n }\n }, [domain]);\n const handleToggleTheme = () => {\n setDomain(domain === 'HADA' ? 'SHOPL' : 'HADA')\n }\n\n return {\n domain,\n handleToggleTheme\n }\n}","export const getNumberLimitRange = (value: number, min: number, max: number) => {\n if (min && value < min) {\n return String(min);\n }\n if (max && value > max) {\n return String(max);\n }\n return String(value);\n};\n","import type { MouseEvent } from 'react';\nimport React, { useRef, forwardRef, useCallback, useEffect, useState } from 'react';\nimport { StyledInputButton, StyledInputButtonContent } from './InputButton.styled';\nimport { InputWrapper } from '../common/input.styled';\nimport { Stack } from '../../Stack';\nimport { IconButton } from '../../Buttons';\nimport type { InputButtonProps } from './InputButton.types';\nimport { Icon } from '../../Icon';\nimport { assetFunction } from '../../../styles/IconAssets';\n\nconst InputButton = forwardRef<HTMLInputElement, InputButtonProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n onClick,\n isSelected,\n disabled = false,\n useClear = true,\n rightSource,\n onClear,\n width = '100%',\n ...rest\n },\n ref,\n ) => {\n const [text, setText] = useState(value ?? defaultValue ?? '');\n const [isHovered, setIsHovered] = useState(false);\n const prevValue = useRef(value ?? defaultValue ?? '');\n\n const convertToString = useCallback((value: string | number | readonly string[]) => {\n if (typeof value !== 'number') {\n return typeof value === 'string' ? value : value.join('');\n }\n return String(value);\n }, []);\n\n const handleOnClick = (e: MouseEvent<HTMLDivElement>) => {\n if (!disabled) {\n onClick && onClick(e);\n }\n };\n\n const handleOnClear = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (!disabled) {\n onClear && onClear(e);\n setText('');\n }\n };\n const handleOnMouseEnter = () => {\n setIsHovered(true);\n };\n const handleOnMouseLeave = () => {\n setIsHovered(false);\n };\n\n useEffect(() => {\n if (prevValue.current === value) {\n return;\n }\n if (value || value === '') {\n const convertString = convertToString(value);\n\n setText(convertString);\n prevValue.current = convertString;\n }\n }, [convertToString, value]);\n\n useEffect(() => {\n if (prevValue.current === value) {\n return;\n }\n onChange && onChange(convertToString(text));\n }, [convertToString, onChange, value, text]);\n\n return (\n <InputWrapper\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n data-shoplflow={'InputButton'}\n isHovered={isHovered}\n isFocused={isSelected}\n disabled={disabled}\n minHeight={'40px'}\n maxHeight={'40px'}\n width={width}\n >\n <StyledInputButton onClick={handleOnClick} disabled={disabled}>\n <StyledInputButtonContent className={'body1_400'} value={text} ref={ref} {...rest} />\n <Stack.Horizontal align={'center'}>\n {useClear && text && (\n <IconButton sizeVar={'S'} onClick={handleOnClear} styleVar={'GHOST'} disabled={disabled}>\n <Icon iconSource={assetFunction('DeleteIcon')} color={'neutral350'} />\n </IconButton>\n )}\n {rightSource}\n </Stack.Horizontal>\n </StyledInputButton>\n </InputWrapper>\n );\n },\n);\n\nexport default InputButton;\n","import styled from '@emotion/styled';\nimport { css } from '@emotion/react';\nimport { colorTokens } from '../../../styles';\n\nexport const StyledInputButton = styled.div<{\n disabled?: boolean;\n}>`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n background: ${colorTokens.neutral0};\n gap: 4px;\n padding: 4px 4px 4px 12px;\n cursor: pointer;\n ${({ disabled }) =>\n disabled &&\n css`\n background-color: ${colorTokens.neutral100};\n cursor: not-allowed;\n `}\n`;\n\nexport const StyledInputButtonContent = styled.input`\n display: flex;\n width: 100%;\n border: none;\n box-sizing: border-box;\n caret-color: transparent;\n &::placeholder {\n color: ${colorTokens.neutral350};\n }\n`;\n","import type { ChangeEvent, FocusEvent } from 'react';\nimport React, { forwardRef, useEffect, useId, useState } from 'react';\n\nimport type { TextAreaProps } from './TextArea.types';\n\nimport { BottomElementWrapper, StyledTextarea } from './TextArea.styled';\nimport TextCounter from '../common/TextCounter';\nimport { InputWrapper } from '../common/input.styled';\n\nconst TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n name,\n maxLength,\n placeholder,\n disabled = false,\n isError = false,\n onChange,\n value,\n defaultValue,\n onBlur,\n onFocus,\n minHeight = '100px',\n width,\n height,\n className,\n ...rest\n },\n ref,\n ) => {\n const [text, setText] = useState('');\n const [isFocused, setIsFocused] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n\n const handleOnMouseEnter = () => {\n setIsHovered(true);\n };\n const handleOnMouseLeave = () => {\n setIsHovered(false);\n };\n\n const handleOnFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n onFocus && onFocus(event);\n setIsFocused(true);\n };\n const handleOnBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n onBlur && onBlur(event);\n\n !isHovered && setIsFocused(false);\n };\n const handleOnChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n onChange && onChange(event);\n setText(event.target.value);\n };\n\n const convertToString = (value: string | number | readonly string[]) => {\n if (typeof value !== 'number') {\n return typeof value === 'string' ? value : value.join('');\n }\n return String(value);\n };\n\n useEffect(() => {\n if (defaultValue) {\n const convertString = convertToString(defaultValue);\n if (maxLength && convertString.length > maxLength) {\n setText(convertString);\n }\n setText(convertString);\n }\n }, [defaultValue, maxLength]);\n\n useEffect(() => {\n if (value) {\n const convertString = convertToString(value);\n if (maxLength && convertString.length > maxLength) {\n setText(convertString);\n }\n setText(convertToString(value));\n }\n }, [maxLength, value]);\n\n const uniqueId = useId();\n\n return (\n <InputWrapper\n htmlFor={uniqueId}\n isFocused={isFocused}\n disabled={disabled}\n isHovered={isHovered}\n isError={isError}\n direction={'column'}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n height={height}\n minHeight={minHeight}\n width={width}\n data-shoplflow={'text-area'}\n >\n <StyledTextarea\n className={'body1_400' + (className ? ` ${className}` : '')}\n placeholder={placeholder}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n onChange={handleOnChange}\n name={name}\n id={uniqueId}\n value={value}\n ref={ref}\n maxLength={maxLength}\n disabled={disabled}\n {...rest}\n />\n <BottomElementWrapper>\n {maxLength && <TextCounter currentLength={String(text).length} maxLength={maxLength} />}\n </BottomElementWrapper>\n </InputWrapper>\n );\n },\n);\n\nexport default TextArea;\n","import styled from '@emotion/styled';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\nimport { colorTokens } from '../../../styles';\n\nexport const BottomElementWrapper = styled.div`\n display: flex;\n width: 100%;\n flex-direction: row;\n padding: 8px 12px;\n gap: 8px;\n background-color: ${colorTokens.neutral0};\n`;\n\nexport const StyledTextarea = styled.textarea`\n padding: 8px 12px 0 12px;\n background-color: transparent;\n resize: none;\n width: 100%;\n height: 100%;\n flex: 1;\n word-break: break-all;\n ${({ disabled }) => getDisabledStyle(disabled)};\n &::placeholder {\n color: ${colorTokens.neutral350};\n }\n`;\n","import React, { type MouseEvent, useState } from 'react';\nimport { StyledSelectInputButton } from './SelectInputButton.styled';\nimport type { SelectInputButtonProps } from './SelectInputButton.types';\nimport { IconButton } from '../../Buttons';\nimport { Icon } from '../../Icon';\nimport { assetFunction } from '../../../styles/IconAssets';\nimport { Stack } from '../../Stack';\nimport { InputWrapper } from '../common/input.styled';\nimport { Text } from '../../Text';\n\nconst SelectInputButton = ({\n disabled,\n isSelected,\n onMouseEnter,\n onMouseLeave,\n onClick,\n onClear,\n value,\n placeholder,\n label,\n width = '100%',\n rightSource,\n ...rest\n}: SelectInputButtonProps) => {\n const [isHovered, setIsHovered] = useState(false);\n\n const handleOnClick = (e: MouseEvent<HTMLLabelElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (!disabled) {\n onClick && onClick(e);\n }\n };\n\n const handleOnClear = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (!disabled) {\n onClear && onClear(e);\n }\n };\n const handleOnMouseEnter = (e: MouseEvent<HTMLLabelElement>) => {\n setIsHovered(true);\n onMouseEnter && onMouseEnter(e);\n };\n const handleOnMouseLeave = (e: MouseEvent<HTMLLabelElement>) => {\n setIsHovered(false);\n onMouseLeave && onMouseLeave(e);\n };\n return (\n <InputWrapper\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n onClick={handleOnClick}\n isHovered={isHovered}\n isFocused={isSelected}\n disabled={disabled}\n width={width}\n minHeight={'40px'}\n {...rest}\n data-shoplflow={'SelectInputButton'}\n >\n <StyledSelectInputButton>\n {value && value.length > 0 && label ? (\n <Text typography={'body1_400'} lineClamp={1}>\n {value[0][label] as string}\n </Text>\n ) : (\n <Text typography={'body1_400'} lineClamp={1} color={'neutral350'}>\n {placeholder}\n </Text>\n )}\n\n <Stack.Horizontal align={'center'} spacing={'spacing04'}>\n {value && value.length > 1 && (\n <Text typography={'body1_400'} color={'neutral700'}>\n +{value.length - 1}\n </Text>\n )}\n <Stack.Horizontal align={'center'}>\n {value && value.length > 0 && (\n <IconButton sizeVar={'S'} onClick={handleOnClear} styleVar={'GHOST'} disabled={disabled}>\n <Icon iconSource={assetFunction('DeleteIcon')} color={'neutral350'} />\n </IconButton>\n )}\n {rightSource}\n </Stack.Horizontal>\n </Stack.Horizontal>\n </StyledSelectInputButton>\n </InputWrapper>\n );\n};\n\nexport default SelectInputButton;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\n\nexport const StyledSelectInputButton = styled.div<{\n disabled?: boolean;\n}>`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n background: ${colorTokens.neutral0};\n gap: 4px;\n padding: 4px 4px 4px 12px;\n cursor: pointer;\n ${({ disabled }) =>\n disabled &&\n css`\n background-color: ${colorTokens.neutral100};\n cursor: not-allowed;\n `}\n`;\n","import { useCallback, useState } from 'react';\nimport { Popper } from '../Popper';\nimport type { TooltipProps } from './Tooltip.types';\nimport { TooltipContent } from './TooltipContent';\nimport { flip, shift } from '@floating-ui/core';\n\nconst Tooltip = ({\n trigger,\n popper,\n placement = 'bottom-start',\n offset = 4,\n triggerRef,\n portalRef,\n ...popperProps\n}: TooltipProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const showHandler = useCallback(() => {\n setIsOpen(true);\n }, []);\n\n const hideHandler = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n return (\n <Popper offset={offset} placement={placement} middlewares={[flip(), shift({ padding: 5 })]} {...popperProps}>\n <Popper.Trigger\n ref={triggerRef}\n isOpen={isOpen}\n onMouseOver={showHandler}\n onMouseLeave={hideHandler}\n onFocus={showHandler}\n onBlur={hideHandler}\n style={{ display: 'flex', alignItems: 'center', justifyContent: 'center' }}\n >\n {trigger}\n </Popper.Trigger>\n <Popper.Portal ref={portalRef}>{popper}</Popper.Portal>\n </Popper>\n );\n};\n\nTooltip.Content = TooltipContent;\n\nexport default Tooltip;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../styles';\n\nexport const StyledTooltipContent = styled.div`\n background-color: ${colorTokens.neutral700};\n padding: 4px 8px;\n max-width: 240px;\n border-radius: 4px;\n`;\n","import React from 'react';\nimport { StyledTooltipContent } from './Tooltip.styled';\nimport type { TooltipContentProps } from './Tooltip.types';\nimport { Text } from '../Text';\n\nexport const TooltipContent = ({ content, ...args }: TooltipContentProps) => {\n return (\n <StyledTooltipContent {...args}>\n <Text typography='caption_400' color='neutral0' wordBreak='break-all'>\n {content}\n </Text>\n </StyledTooltipContent>\n );\n};\n","import { createContext, useContext } from 'react';\n\nexport type TabsContextType = {\n activeTab: string | null;\n setActiveTab: (tab: string) => void;\n};\n\nexport const TabsContext = createContext<TabsContextType | null>(null);\n\nexport const useTabs = () => {\n const context = useContext(TabsContext);\n\n if (context === null) {\n throw new Error('useTabs should be used in Tabs');\n }\n return context;\n};\n","import { TabsContext } from './useTabs';\nimport { LayoutGroup, AnimatePresence } from 'framer-motion';\nimport { useEffect, useState } from 'react';\nimport type { TabsProps } from './Tabs.types';\nimport { Tab } from './Tab';\n\nconst Tabs = ({ children, initialTab, onChange }: TabsProps) => {\n const [activeTab, setActiveTab] = useState(initialTab);\n\n useEffect(() => {\n if (!onChange || !activeTab) {\n return;\n }\n\n onChange(activeTab);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeTab]);\n\n return (\n <TabsContext.Provider\n value={{\n activeTab,\n setActiveTab,\n }}\n >\n <LayoutGroup>\n <AnimatePresence>{children}</AnimatePresence>\n </LayoutGroup>\n </TabsContext.Provider>\n );\n};\n\nTabs.Tab = Tab;\n\nexport default Tabs;\n","import { useTabs } from './useTabs';\nimport type { MouseEvent } from 'react';\nimport { useCallback, useState } from 'react';\nimport type { TabProps } from './Tabs.types';\n\nimport { StyledTabText, StyledTab } from './Tabs.styled';\n\nimport type { TypographyTokens } from '../../styles';\nimport { Indicator } from './Indicator';\n\nexport const Tab = ({\n value,\n label,\n leftSource,\n rightSource,\n as,\n styleVar = 'NORMAL',\n sizeVar = 'L',\n onClick,\n activeColor,\n ...args\n}: TabProps) => {\n const { activeTab, setActiveTab } = useTabs();\n\n const [isHover, setIsHover] = useState(false);\n\n const isActive = value === activeTab;\n\n const hoverHandler = useCallback(() => {\n setIsHover(true);\n }, []);\n const unhoverHandler = useCallback(() => {\n setIsHover(false);\n }, []);\n\n const clickHandler = (event: MouseEvent<HTMLElement>) => {\n onClick?.(event);\n setActiveTab(value);\n };\n\n let typography: TypographyTokens = 'title1_700';\n\n if (styleVar === 'INFO') {\n typography = 'body1_700';\n }\n\n if (styleVar === 'NORMAL' && sizeVar === 'M') {\n typography = 'title2_700';\n }\n\n return (\n <StyledTab\n isActive={isActive}\n as={as}\n onClick={clickHandler}\n onMouseOver={hoverHandler}\n onMouseLeave={unhoverHandler}\n onFocus={hoverHandler}\n onBlur={unhoverHandler}\n isHover={isHover}\n styleVar={styleVar}\n {...args}\n >\n {leftSource}\n <StyledTabText\n isHover={isHover}\n lineClamp={2}\n typography={`${typography}`}\n isActive={isActive}\n activeColor={activeColor}\n styleVar={styleVar}\n >\n {label}\n </StyledTabText>\n {rightSource}\n {styleVar === 'INFO' && isActive && <Indicator layoutId='underline' />}\n </StyledTab>\n );\n};\n","import styled from '@emotion/styled';\nimport { Text } from '../Text';\nimport { css } from '@emotion/react';\nimport type { ColorTokens } from '../../styles';\nimport { colorTokens } from '../../styles';\nimport type { TabStyleVariantType, TabStyledProps, TabTextStyledProps } from './Tabs.types';\n\nexport const getHoverTabStyleByStyleVar = (styleVar: TabStyleVariantType) => {\n switch (styleVar) {\n case 'INFO': {\n return css`\n ::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n bottom: -2px;\n height: 2px;\n background: ${colorTokens.neutral500};\n }\n `;\n }\n default: {\n return null;\n }\n }\n};\n\nexport const getWrapperStyleByStyleVar = (styleVar: TabStyleVariantType) => {\n switch (styleVar) {\n case 'INFO': {\n return css`\n padding-inline: 16px;\n `;\n }\n default: {\n return null;\n }\n }\n};\n\nexport const getActiveTriggerStyleByStyleVar = (styleVar: TabStyleVariantType) => {\n switch (styleVar) {\n case 'INFO': {\n return css`\n ::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n bottom: -2px;\n height: 2px;\n background: #000;\n }\n `;\n }\n default: {\n return null;\n }\n }\n};\n\nexport const StyledTab = styled.div<TabStyledProps>`\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 12px 16px;\n width: fit-content;\n cursor: pointer;\n position: relative;\n user-select: none;\n\n ${({ styleVar }) => styleVar && getWrapperStyleByStyleVar(styleVar)};\n\n /* hover style */\n ${({ isActive, isHover, styleVar }) => !isActive && isHover && styleVar && getHoverTabStyleByStyleVar(styleVar)}\n\n /* active style */\n ${({ isActive, styleVar }) => isActive && styleVar && getActiveTriggerStyleByStyleVar(styleVar)}\n`;\n\nexport const getTextStyleByStyleVar = (styleVar: TabStyleVariantType) => {\n switch (styleVar) {\n case 'NORMAL': {\n return css`\n color: ${colorTokens.neutral400};\n `;\n }\n case 'INFO': {\n return css`\n color: ${colorTokens.neutral500};\n `;\n }\n }\n};\n\nconst getHoverTextStyleByStyleVar = (styleVar: TabStyleVariantType) => {\n switch (styleVar) {\n case 'NORMAL': {\n return css`\n color: ${colorTokens.neutral500};\n `;\n }\n case 'INFO': {\n return css`\n color: ${colorTokens.neutral700};\n `;\n }\n default: {\n return null;\n }\n }\n};\n\nexport const getActiveTextStyleByStyleVar = (styleVar: TabStyleVariantType, activeColor?: ColorTokens) => {\n switch (styleVar) {\n case 'NORMAL': {\n return css`\n color: ${activeColor ? colorTokens[activeColor] : colorTokens.neutral700};\n `;\n }\n case 'INFO': {\n return css`\n color: ${colorTokens.neutral700};\n `;\n }\n default: {\n return css`\n color: ${colorTokens.primary300};\n `;\n }\n }\n};\n\nexport const StyledTabText = styled(Text)<TabTextStyledProps>`\n cursor: pointer;\n\n ${({ styleVar }) => styleVar && getTextStyleByStyleVar(styleVar)};\n\n /* hover style */\n ${({ isHover, styleVar, isActive }) => !isActive && isHover && styleVar && getHoverTextStyleByStyleVar(styleVar)}\n\n /* active style */\n ${({ isActive, styleVar, activeColor }) =>\n isActive && styleVar && getActiveTextStyleByStyleVar(styleVar, activeColor)}\n`;\n","import styled from '@emotion/styled';\nimport { motion } from 'framer-motion';\n\nexport const StyledIndicator = styled(motion.div)`\n position: absolute;\n bottom: -2px;\n left: 0px;\n right: 0px;\n height: 2px;\n background-color: black;\n width: 100%;\n`;\n","import { StyledIndicator } from './Indicator.styled';\n\nexport const Indicator = ({ layoutId }: { layoutId: string }) => {\n return <StyledIndicator layoutId={layoutId} transition={{ duration: 0.2 }} />;\n};\n","import type { $Values } from '@shoplflow/utils';\nimport type {\n ChildrenProps,\n LeftAndRightNodeProps,\n SizeVariantProps,\n StyleVariantProps,\n} from '../../utils/type/ComponentProps';\nimport type { HTMLAttributes } from 'react';\nimport type { ColorTokens } from '../../styles';\n\nexport const TabStyleVariants = {\n NORMAL: 'NORMAL',\n INFO: 'INFO',\n} as const;\n\nexport const TabSizeVariants = {\n M: 'M',\n L: 'L',\n} as const;\n\nexport type TabStyleVariantType = $Values<typeof TabStyleVariants>;\nexport type TabSizeVariantType = $Values<typeof TabSizeVariants>;\nexport interface TabsProps extends TabsOptionProps {\n /**\n * Tab은 Controlled Component입니다. onChange를 꼭 넘겨주세요\n * @param tab\n * @returns\n */\n onChange: (tab: string) => void;\n}\n\nexport interface TabsOptionProps extends ChildrenProps {\n initialTab: string;\n}\n\nexport interface TabProps extends TabOptionProps {\n value: string;\n label: string;\n}\n\nexport interface TabOptionProps\n extends LeftAndRightNodeProps,\n StyleVariantProps<TabStyleVariantType>,\n SizeVariantProps<TabSizeVariantType>,\n Omit<HTMLAttributes<HTMLElement>, 'color'> {\n as?: React.ElementType;\n activeColor?: ColorTokens;\n}\n\nexport interface TabStyledProps extends StyleVariantProps<TabStyleVariantType> {\n as?: React.ElementType;\n isActive: boolean;\n isHover: boolean;\n}\n\nexport interface TabTextStyledProps extends TabStyledProps {\n activeColor?: ColorTokens;\n}\n","import styled from '@emotion/styled';\nimport { borderRadiusTokens, colorTokens } from '../../styles';\n\nexport const PaginationWrapper = styled.div`\n display: flex;\n align-items: center;\n width: 100%;\n justify-content: space-between;\n`;\n\nexport const StyledPagination = styled.nav`\n display: flex;\n align-items: center;\n`;\n\nexport const PageItem = styled.button<{ isActive: boolean }>`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n border-radius: ${borderRadiusTokens.borderRadius08};\n background-color: ${({ isActive }) => (isActive ? colorTokens.neutral300 : colorTokens.neutral0)};\n font-size: 13px;\n font-weight: ${({ isActive }) => isActive && '600'};\n line-height: 2;\n cursor: pointer;\n\n &:hover {\n background-color: ${({ isActive }) => (isActive ? colorTokens.neutral300 : colorTokens.neutral100)};\n }\n`;\n\nexport const Ellipsis = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n`;\n","import React from 'react';\nimport { StyledPagination, PageItem, PaginationWrapper, Ellipsis } from './Pagination.styled';\nimport type { PaginationProps } from './Pagination.types';\nimport { Icon } from '../Icon';\nimport { IconButton } from '../Buttons';\nimport { EndPageIcon, FirstPageIcon, LeftArrowIcon, RightArrowIcon } from '@shoplflow/shopl-assets';\nimport { Text } from '../Text';\nimport PaginationSizeSelector from './PaginationSizeSelector';\n\nconst Pagination = ({\n currentPage,\n pageCount = 5,\n itemsTotalCount,\n pageSize,\n previousPage,\n nextPage,\n gotoPage,\n leftSource,\n rightSource,\n totalCount,\n ...rest\n}: PaginationProps) => {\n const pageTotalCount = totalCount ?? Math.ceil(itemsTotalCount / Number(pageSize));\n const showLeftEllipsis = currentPage > pageCount - 1;\n const showRightEllipsis =\n currentPage < pageTotalCount && Math.ceil((currentPage + 1) / pageCount) < Math.ceil(pageTotalCount / pageCount);\n\n const canPreviousPage = currentPage > 0;\n const canNextPage = currentPage < pageTotalCount - 1;\n\n return (\n <PaginationWrapper {...rest}>\n {leftSource ? leftSource : <div />}\n <StyledPagination data-shoplflow={'Pagination'}>\n <IconButton sizeVar='S' styleVar='GHOST' disabled={!canPreviousPage} onClick={() => gotoPage(0)}>\n <Icon iconSource={FirstPageIcon} color='neutral400' sizeVar='S' />\n </IconButton>\n <IconButton sizeVar='S' styleVar='GHOST' onClick={previousPage} disabled={!canPreviousPage}>\n <Icon iconSource={LeftArrowIcon} color='neutral400' sizeVar='S' />\n </IconButton>\n\n {showLeftEllipsis && (\n <Ellipsis>\n <Text>...</Text>\n </Ellipsis>\n )}\n\n {[...Array(pageTotalCount)].splice(0, pageCount).map(\n (_, idx) =>\n idx + Math.floor(currentPage / pageCount) * pageCount < pageTotalCount && (\n <PageItem\n key={idx}\n isActive={currentPage === idx + Math.floor(currentPage / pageCount) * pageCount}\n onClick={() => gotoPage(idx + Math.floor(currentPage / pageCount) * pageCount)}\n >\n {idx + 1 + Math.floor(currentPage / pageCount) * pageCount}\n </PageItem>\n ),\n )}\n\n {showRightEllipsis && (\n <Ellipsis>\n <Text>...</Text>\n </Ellipsis>\n )}\n\n <IconButton sizeVar='S' styleVar='GHOST' onClick={nextPage} disabled={!canNextPage}>\n <Icon iconSource={RightArrowIcon} color='neutral400' sizeVar='S' />\n </IconButton>\n\n <IconButton sizeVar='S' styleVar='GHOST' disabled={!canNextPage} onClick={() => gotoPage(pageTotalCount - 1)}>\n <Icon iconSource={EndPageIcon} color='neutral400' sizeVar='S' />\n </IconButton>\n </StyledPagination>\n\n {rightSource ? rightSource : <div />}\n </PaginationWrapper>\n );\n};\n\nPagination.SizeSelector = PaginationSizeSelector;\n\nexport default Pagination;\n","import { useSelect } from '@shoplflow/utils';\nimport React from 'react';\nimport { Dropdown } from '../Dropdown';\nimport { Text } from '../Text';\nimport { Menu } from '../Menu';\nimport type { PaginationSizeSelectorProps } from './Pagination.types';\n\nconst PaginationSizeSelector = ({ data, pageSize, setPageSize }: PaginationSizeSelectorProps) => {\n const { selectedItem, handleToggleSelect } = useSelect('SINGLE', data, {\n key: 'value',\n });\n\n const handleClickMenu = (value: string) => {\n handleToggleSelect(value);\n setPageSize(value);\n };\n\n return (\n <Dropdown\n option={'CLICK'}\n width={'66px'}\n trigger={\n <Dropdown.Button\n placeholder={String(pageSize)}\n sizeVar='S'\n value={\n selectedItem && (\n <Text typography='body1_400' color={'neutral400'}>\n {selectedItem.label}\n </Text>\n )\n }\n />\n }\n popper={\n <Dropdown.Content type='FILL'>\n {data.map((item) => {\n const isSelected = item.value === pageSize;\n return (\n <Menu key={item.value} isSelected={isSelected} onClick={() => handleClickMenu(item.value)}>\n {item.label}\n </Menu>\n );\n })}\n </Dropdown.Content>\n }\n />\n );\n};\n\nexport default PaginationSizeSelector;\n","import React, { forwardRef } from 'react';\nimport {\n StyledToggleButton,\n StyledToggleInner,\n StyledToggleInnerInput,\n StyledToggleInnerLabel,\n} from './ToggleButton.styled';\nimport type { ToggleButtonProps, ToggleButtonInnerRadioProps } from './ToggleButton.types';\nimport { Text } from '../Text';\nimport { ToggleButtonContext, useToggleButton } from './useToggleButton';\n\nconst ToggleButton = ({\n fixedWidth,\n children,\n targetName,\n onChange,\n selectedValue,\n sizeVar = 'S',\n ...rest\n}: ToggleButtonProps) => {\n return (\n <ToggleButtonContext.Provider value={{ fixedWidth, targetName, onChange, selectedValue, sizeVar }}>\n <StyledToggleButton data-shoplflow={'ToggleButton'} {...rest}>\n {children}\n </StyledToggleButton>\n </ToggleButtonContext.Provider>\n );\n};\n\nconst ToggleInnerRadio = forwardRef<HTMLInputElement, ToggleButtonInnerRadioProps>(\n ({ label, disabled, value, id, ...rest }, ref) => {\n const { fixedWidth, onChange, targetName, selectedValue, sizeVar } = useToggleButton();\n\n let selected = false;\n\n if (selectedValue && selectedValue === value) {\n selected = true;\n }\n\n return (\n <StyledToggleInner disabled={disabled} type='button'>\n <StyledToggleInnerInput\n width={fixedWidth}\n disabled={disabled}\n selected={selected}\n value={value}\n id={id}\n type='radio'\n ref={ref}\n name={targetName}\n {...rest}\n onChange={onChange}\n />\n\n <StyledToggleInnerLabel\n htmlFor={id}\n width={fixedWidth}\n disabled={disabled}\n selected={selected}\n sizeVar={sizeVar}\n >\n <Text\n lineClamp={1}\n color={selected ? 'neutral700' : 'neutral500'}\n wordBreak='break-all'\n typography={selected ? 'body2_500' : 'body2_400'}\n >\n {label}\n </Text>\n </StyledToggleInnerLabel>\n </StyledToggleInner>\n );\n },\n);\n\nToggleButton.InnerRadio = ToggleInnerRadio;\n\nexport default ToggleButton;\n","import styled from '@emotion/styled';\nimport { borderRadiusTokens, colorTokens, spacingTokens } from '../../styles';\nimport type { ToggleButtonSizeVariantType } from './ToggleButton.types';\nimport { css } from '@emotion/react';\n\nconst getLabelStyleByStatus = (selected: boolean, disabled: boolean) => {\n if (disabled) {\n return css`\n cursor: not-allowed;\n opacity: 0.5;\n `;\n }\n\n if (selected) {\n return css`\n cursor: default;\n background-color: ${colorTokens.neutral0};\n `;\n }\n};\n\nconst getLabelStyleBySizeVar = (sizeVar: ToggleButtonSizeVariantType) => {\n switch (sizeVar) {\n case 'S': {\n return css`\n padding: 4px 8px;\n `;\n }\n\n case 'M': {\n return css`\n padding: 8px;\n `;\n }\n\n default: {\n return;\n }\n }\n};\n\nexport const StyledToggleButton = styled.div`\n display: flex;\n padding: ${spacingTokens.spacing04};\n align-items: center;\n background-color: ${colorTokens.neutral150};\n border-radius: ${borderRadiusTokens.borderRadius06};\n`;\n\nexport const StyledToggleInner = styled.button`\n height: fit-content;\n width: fit-content;\n cursor: pointer;\n\n & input:checked + label {\n background-color: ${colorTokens.neutral0};\n cursor: default;\n }\n`;\n\nexport const StyledToggleInnerLabel = styled.label<{\n width: number;\n disabled?: boolean;\n selected: boolean;\n sizeVar: ToggleButtonSizeVariantType;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: ${({ width }) => `${width}px`};\n padding: 0 12px;\n border-radius: 6px;\n background-color: transparent;\n ${({ disabled, selected }) => getLabelStyleByStatus(selected, Boolean(disabled))}\n ${({ sizeVar }) => getLabelStyleBySizeVar(sizeVar)}\n\n &:hover {\n ${({ disabled }) =>\n !disabled &&\n css`\n cursor: pointer;\n background-color: ${colorTokens.neutral400_5};\n `}\n }\n`;\n\nexport const StyledToggleInnerInput = styled.input`\n position: absolute;\n width: 0;\n height: 0;\n opacity: 0;\n visibility: hidden;\n`;\n","import { createContext, useContext } from 'react';\nimport type { ToggleButtonSizeVariantType } from './ToggleButton.types';\n\nexport type ToggleButtonContextType = {\n fixedWidth: number;\n targetName: string;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n selectedValue?: string;\n sizeVar: ToggleButtonSizeVariantType;\n};\n\nexport const ToggleButtonContext = createContext<ToggleButtonContextType | null>(null);\n\nexport const useToggleButton = () => {\n const context = useContext(ToggleButtonContext);\n\n if (!context) {\n throw new Error('ToggleInnerButton 컴포넌트는 ToggleButton 내부에서 사용해주세요');\n }\n\n return context;\n};\n","import type { $Values } from '@shoplflow/utils';\nimport type { HTMLAttributes, InputHTMLAttributes } from 'react';\n\nexport const ToggleButtonSizeVariants = {\n S: 'S',\n M: 'M',\n} as const;\n\nexport type ToggleButtonSizeVariantType = $Values<typeof ToggleButtonSizeVariants>;\n\nexport interface ToggleButtonProps extends ToggleButtonOptionProps, HTMLAttributes<HTMLDivElement> {\n targetName: string;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n fixedWidth: number;\n selectedValue?: string;\n sizeVar?: ToggleButtonSizeVariantType;\n}\n\nexport interface ToggleButtonOptionProps {}\n\nexport interface ToggleButtonInnerRadioProps\n extends ToggleButtonInnerRadioOptionProps,\n InputHTMLAttributes<HTMLInputElement> {\n label: string;\n}\n\nexport interface ToggleButtonInnerRadioOptionProps {\n disabled?: boolean;\n selected?: boolean;\n}\n","import styled from '@emotion/styled';\nimport { colorTokens, fontWeightTokens } from '../../../styles';\n\nexport const SmallStyledDayDatepickerWrapper = styled.div`\n display: flex;\n width: 280px;\n height: 100%;\n flex-direction: column;\n\n & .dayDatepickerArea .react-datepicker {\n width: 100%;\n height: 100%;\n border: none;\n margin: 0;\n padding: 16px;\n box-sizing: border-box;\n font-family: 'Pretendard', 'Pretendard JP', sans-serif !important;\n\n & .highlighted-sundays {\n color: ${colorTokens.red300};\n }\n\n &__month-text--selected {\n color: #fff;\n }\n\n &-popper {\n width: 432px;\n padding-top: 0;\n }\n\n &__month-container {\n width: 100%;\n }\n\n &__month {\n margin: 0;\n }\n\n &__header {\n border: none;\n background-color: transparent;\n padding: 0;\n font-size: 14px;\n font-style: normal;\n line-height: 18px;\n }\n\n &__month-wrapper {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr 1fr;\n /* gap: 1.75rem; */\n }\n\n &__month-text {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 48px;\n height: 48px;\n border-radius: 50%;\n font-size: 16px;\n color: #333;\n font-weight: 400;\n\n :hover {\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.primary300};\n }\n\n &--keyboard-selected {\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.neutral700};\n }\n\n &--selected:not(.react-datepicker--keyboard-selected) {\n background-color: ${colorTokens.primary300};\n color: ${colorTokens.neutral0};\n }\n }\n\n &__week {\n width: 100%;\n display: flex;\n justify-content: space-between;\n\n &:first-of-type {\n margin-top: 0;\n }\n }\n\n &__day-names {\n width: 100%;\n height: 18px;\n margin: 8px 0 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n &__day-name {\n color: ${colorTokens.neutral400};\n width: 32px;\n margin: 0;\n font-size: 13px;\n font-weight: 500;\n line-height: 1rem;\n\n :last-of-type {\n margin: 0;\n }\n }\n\n &__day {\n width: 32px;\n height: 32px;\n display: flex;\n justify-content: center;\n align-items: center;\n line-height: 32px;\n color: ${colorTokens.neutral700};\n border-radius: 50%;\n font-size: 14px;\n font-weight: 500;\n margin: 0px;\n\n &--keyboard-selected {\n background-color: transparent;\n }\n\n &--outside-month {\n color: ${colorTokens.neutral400};\n }\n\n &--today {\n color: ${colorTokens.primary300};\n font-weight: ${fontWeightTokens.fontWeightRegular};\n }\n\n &--in-selecting-range:not(\n .react-datepicker__day--in-range,\n .react-datepicker__month-text--in-range,\n .react-datepicker__quarter-text--in-range,\n .react-datepicker__year-text--in-range,\n .react-datepicker__day--selecting-range-start\n ) {\n background-color: ${colorTokens.primary100};\n }\n\n &--in-range {\n background-color: ${colorTokens.primary300};\n color: ${colorTokens.neutral0};\n position: relative;\n\n &:not(.react-datepicker__day--range-start):not(.react-datepicker__day--range-end) {\n border-radius: 0;\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.primary300};\n }\n\n &:not(.react-datepicker__day--range-end):after {\n width: 4px;\n height: 100%;\n background-color: ${colorTokens.primary100};\n position: absolute;\n content: '';\n right: -4px;\n top: 0;\n z-index: 1;\n }\n\n &.react-datepicker__day--range-start {\n width: 32px;\n height: 32px;\n background-color: ${colorTokens.primary100};\n margin-right: 0;\n box-sizing: border-box;\n border: unset;\n border-radius: 50% 0 0 50%;\n }\n\n &.react-datepicker__day--range-end {\n width: 32px;\n height: 32px;\n background-color: ${colorTokens.primary100};\n box-sizing: border-box;\n border: unset;\n border-radius: 0 50% 50% 0;\n }\n &.react-datepicker__day--range-end.react-datepicker__day--range-start {\n width: 32px;\n height: 32px;\n background-color: ${colorTokens.primary100};\n box-sizing: border-box;\n border: unset;\n border-radius: 50%;\n }\n &.react-datepicker__day--range-start .each-day {\n width: 32px;\n height: 32px;\n background-color: ${colorTokens.primary300};\n border-radius: 100%;\n }\n\n &.react-datepicker__day--range-end .each-day {\n width: 32px;\n height: 32px;\n background-color: ${colorTokens.primary300};\n border-radius: 100%;\n }\n }\n\n &--selected {\n color: ${colorTokens.neutral0};\n background-color: ${colorTokens.primary300};\n }\n\n &--highlighted {\n color: ${colorTokens.neutral0};\n background-color: ${colorTokens.primary300};\n }\n\n &--disabled {\n cursor: not-allowed;\n opacity: 0.3;\n color: ${colorTokens.neutral700};\n\n &.react-datepicker__day--keyboard-selected {\n background-color: ${colorTokens.neutral200};\n }\n &.react-datepicker__day--excluded {\n color: ${colorTokens.neutral0};\n }\n }\n\n &:not(&--disabled):not(&--selected):not(&--highlighted):not(&--range-end):hover {\n color: ${colorTokens.primary300};\n background-color: ${colorTokens.primary100};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n\n &__year {\n &-wrapper {\n justify-content: center;\n }\n }\n }\n`;\n\nexport const StyledDayDatepicker = styled.div`\n display: flex;\n width: 100%;\n height: 100%;\n flex-direction: column;\n\n & .dayDatepickerArea .react-datepicker {\n width: 100%;\n height: 100%;\n border: none;\n margin: 0;\n padding: 16px 30px 16px;\n box-sizing: border-box;\n font-family: 'Pretendard', 'Pretendard JP', sans-serif !important;\n\n & .highlighted-sundays {\n color: ${colorTokens.red300};\n }\n\n &__month-text--selected {\n color: #fff;\n }\n\n &-popper {\n width: 432px;\n padding-top: 0;\n }\n\n &__month-container {\n width: 100%;\n }\n\n &__month {\n margin: 12px 0 0;\n }\n\n &__header {\n border: none;\n background-color: transparent;\n padding: 0;\n }\n\n &__month-wrapper {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr 1fr;\n /* gap: 1.75rem; */\n }\n\n &__month-text {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 48px;\n height: 48px;\n border-radius: 50%;\n font-size: 16px;\n color: #333;\n\n :hover {\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.primary300};\n }\n\n &--keyboard-selected {\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.neutral700};\n }\n\n &--selected:not(.react-datepicker--keyboard-selected) {\n background-color: ${colorTokens.primary300};\n color: ${colorTokens.neutral0};\n }\n }\n\n &__week {\n margin-top: 8px;\n\n &:first-of-type {\n margin-top: 0;\n }\n }\n\n &__day-names {\n height: 18px;\n margin: 12px 0 0;\n }\n\n &__day-name {\n width: 40px;\n margin: 0 10px 0 0;\n color: ${colorTokens.navy300};\n font-size: 13px;\n font-weight: 500;\n line-height: 1rem;\n\n :last-of-type {\n margin: 0;\n }\n }\n\n &__day {\n width: 40px;\n height: 40px;\n line-height: 40px;\n margin: 0 10px 0 0;\n color: ${colorTokens.neutral700};\n border-radius: 50%;\n font-size: 14px;\n font-weight: 500;\n\n &--keyboard-selected {\n background-color: transparent;\n }\n\n &--outside-month {\n color: ${colorTokens.neutral400};\n }\n\n &--today {\n color: ${colorTokens.primary300};\n font-weight: ${fontWeightTokens.fontWeightRegular};\n }\n\n &--in-selecting-range:not(\n .react-datepicker__day--in-range,\n .react-datepicker__month-text--in-range,\n .react-datepicker__quarter-text--in-range,\n .react-datepicker__year-text--in-range,\n .react-datepicker__day--selecting-range-start\n ) {\n background-color: ${colorTokens.primary100};\n }\n\n &--in-range {\n background-color: ${colorTokens.primary300};\n color: ${colorTokens.neutral0};\n position: relative;\n\n &:not(.react-datepicker__day--range-start):not(.react-datepicker__day--range-end) {\n border-radius: 0;\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.primary300};\n }\n\n &:not(.react-datepicker__day--range-end):not(.react-datepicker__day--range-start):after {\n width: 10px;\n height: 100%;\n background-color: ${colorTokens.primary100};\n position: absolute;\n content: '';\n right: -10px;\n top: 0;\n z-index: 1;\n }\n\n &.react-datepicker__day--range-start {\n width: 50px;\n height: 40px;\n background-color: ${colorTokens.primary100};\n margin-right: 0;\n padding-right: 10px;\n box-sizing: border-box;\n border: unset;\n border-radius: 50% 0 0 50%;\n }\n\n &.react-datepicker__day--range-end {\n width: 40px;\n height: 40px;\n background-color: ${colorTokens.primary100};\n box-sizing: border-box;\n border: unset;\n border-radius: 0 50% 50% 0;\n }\n &.react-datepicker__day--range-end.react-datepicker__day--range-start {\n width: 40px;\n height: 40px;\n background-color: ${colorTokens.primary100};\n box-sizing: border-box;\n border: unset;\n border-radius: 50%;\n margin-right: 10px;\n }\n &.react-datepicker__day--range-start .each-day {\n width: 40px;\n height: 40px;\n background-color: ${colorTokens.primary300};\n border-radius: 100%;\n }\n\n &.react-datepicker__day--range-end .each-day {\n width: 40px;\n height: 40px;\n background-color: ${colorTokens.primary300};\n border-radius: 100%;\n }\n }\n\n &--selected {\n color: ${colorTokens.neutral0};\n background-color: ${colorTokens.primary300};\n }\n\n &--highlighted {\n color: ${colorTokens.neutral0};\n background-color: ${colorTokens.primary300};\n }\n\n &--disabled {\n cursor: not-allowed;\n opacity: 0.3;\n color: ${colorTokens.neutral700};\n\n &.react-datepicker__day--keyboard-selected {\n background-color: ${colorTokens.neutral200};\n }\n &.react-datepicker__day--excluded {\n color: ${colorTokens.neutral0};\n }\n }\n\n &:not(&--disabled):not(&--selected):not(&--highlighted):not(&--range-end):hover {\n color: ${colorTokens.primary300};\n background-color: ${colorTokens.primary100};\n }\n }\n\n &__year {\n &-wrapper {\n justify-content: center;\n }\n }\n }\n`;\n","import { SmallStyledDayDatepickerWrapper, StyledDayDatepicker } from './DayDatepicker.styled';\nimport type { DayDatepickerProps } from './DayDatepicker.types';\nimport DatePicker from 'react-datepicker';\n\nimport 'react-datepicker/dist/react-datepicker.css';\nimport MonthStepper from '../stepper/MonthStepper';\n\nconst DayDatepicker = ({ sizeVar, children, calendarType, ...rest }: DayDatepickerProps) => {\n const Wrapper = sizeVar === 'S' ? SmallStyledDayDatepickerWrapper : StyledDayDatepicker;\n\n /**\n * 범위 선택 캘린더\n */\n if (calendarType.type === 'range') {\n return (\n <Wrapper data-shoplflow={'DayDatepicker'}>\n <div className='dayDatepickerArea'>\n <DatePicker\n inline\n renderCustomHeader={(props) => <MonthStepper sizeVar={sizeVar || 'M'} {...props} />}\n renderDayContents={(dayOfMonth) => {\n return <div className='each-day'>{dayOfMonth}</div>;\n }}\n {...rest}\n selectsRange\n selectsMultiple={undefined}\n onChange={calendarType.handleDayRangeChange}\n >\n {children}\n </DatePicker>\n </div>\n </Wrapper>\n );\n }\n\n /**\n * 다중 선택 캘린더\n */\n if (calendarType.type === 'multiple') {\n return (\n <Wrapper data-shoplflow={'DayDatepicker'}>\n <div className='dayDatepickerArea'>\n <DatePicker\n inline\n renderCustomHeader={(props) => <MonthStepper sizeVar={sizeVar || 'M'} {...props} />}\n renderDayContents={(dayOfMonth) => {\n return <div className='each-day'>{dayOfMonth}</div>;\n }}\n {...rest}\n selectsMultiple\n onChange={calendarType.handleMutlipleDaysChange}\n >\n {children}\n </DatePicker>\n </div>\n </Wrapper>\n );\n }\n\n return (\n <Wrapper data-shoplflow={'DayDatepicker'}>\n <div className='dayDatepickerArea'>\n <DatePicker\n inline\n renderCustomHeader={(props) => <MonthStepper sizeVar={sizeVar || 'M'} {...props} />}\n renderDayContents={(dayOfMonth) => {\n return <div className='each-day'>{dayOfMonth}</div>;\n }}\n {...rest}\n onChange={calendarType.handleDayChange}\n >\n {children}\n </DatePicker>\n </div>\n </Wrapper>\n );\n};\n\nexport default DayDatepicker;\n","import styled from '@emotion/styled';\nimport { colorTokens, fontWeightTokens } from '../../../styles';\n\nexport const Header = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n width: 100%;\n height: 32px;\n gap: 8px;\n`;\n\nexport const Month = styled.p`\n font-size: 18px;\n color: ${colorTokens.neutral700};\n cursor: pointer;\n`;\n\nexport const DatePickerWrapper = styled.div`\n position: absolute;\n z-index: 10;\n top: 36px;\n border-radius: 16px;\n overflow: hidden;\n box-shadow: 0px 10px 30px 0px rgba(51, 51, 51, 0.2);\n height: fit-content;\n padding: 16px 24px 24px 24px;\n background-color: ${colorTokens.neutral0};\n\n & .react-datepicker {\n padding: 0px !important;\n\n &__header--custom {\n margin-bottom: 16px;\n }\n\n &__month-wrapper {\n column-gap: 8px;\n margin-top: 8px;\n }\n\n &__month-text--today {\n font-weight: ${fontWeightTokens.fontWeightRegular};\n }\n }\n`;\n","import { DatePickerWrapper, Month, Header } from './Stepper.styled';\nimport type { DayDatepickerHeaderCustomProps } from '../DayDatepicker/DayDatepicker.types';\nimport DatePicker from 'react-datepicker';\nimport { Icon } from '../../Icon';\nimport { LeftArrowIcon, RightArrowIcon } from '@shoplflow/shopl-assets';\nimport { IconButton } from '../../Buttons';\nimport { useOutsideClick } from '@shoplflow/utils';\nimport YearStepper from './YearStepper';\nimport { ko } from 'date-fns/locale';\nimport { Text } from '../../Text';\n\ntype MonthStepperProps = DayDatepickerHeaderCustomProps & { sizeVar: 'S' | 'M' };\n\nconst MonthStepper = ({\n date,\n monthDate,\n decreaseMonth,\n increaseMonth,\n changeYear,\n changeMonth,\n minDate,\n maxDate,\n locale,\n sizeVar,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n}: MonthStepperProps) => {\n const [isOpen, setIsOpen] = useOutsideClick({\n selector: '.react-datepicker__header',\n });\n\n return (\n <Header className='calendarHeader'>\n <IconButton styleVar='GHOST' sizeVar='S' onClick={decreaseMonth} disabled={prevMonthButtonDisabled}>\n <Icon iconSource={LeftArrowIcon} sizeVar='XS' color={prevMonthButtonDisabled ? 'neutral200' : 'neutral700'} />\n </IconButton>\n <Month\n className='react-datepicker__header'\n onClick={() => {\n setIsOpen((prev) => !prev);\n }}\n >\n <Text typography={sizeVar === 'M' ? 'title1_700' : 'body1_700'}>{`${date.getFullYear()}.${\n monthDate.getMonth() + 1\n }`}</Text>\n </Month>\n {isOpen && (\n <DatePickerWrapper>\n <div className='datepicker-header-wrapper'>\n <DatePicker\n className='datepicker-custom-month'\n onChange={(date) => {\n if (!date) {\n return;\n }\n changeYear && changeYear(date.getFullYear());\n changeMonth && changeMonth(date.getMonth());\n setIsOpen(false);\n }}\n inline\n selectsEnd\n dateFormat='mm'\n selected={date}\n minDate={minDate}\n maxDate={maxDate}\n locale={locale ?? ko}\n showMonthYearPicker\n renderCustomHeader={(props) => <YearStepper {...props} />}\n showFourColumnMonthYearPicker\n />\n </div>\n </DatePickerWrapper>\n )}\n <IconButton styleVar='GHOST' sizeVar='S' onClick={increaseMonth} disabled={nextMonthButtonDisabled}>\n <Icon iconSource={RightArrowIcon} sizeVar='XS' color={nextMonthButtonDisabled ? 'neutral200' : 'neutral700'} />\n </IconButton>\n </Header>\n );\n};\n\nexport default MonthStepper;\n","import { Month, Header } from './Stepper.styled';\nimport type { DayDatepickerHeaderCustomProps } from '../DayDatepicker/DayDatepicker.types';\nimport { Icon } from '../../Icon';\nimport { LeftArrowIcon, RightArrowIcon } from '@shoplflow/shopl-assets';\nimport { IconButton } from '../../Buttons';\nimport { useOutsideClick } from '@shoplflow/utils';\nimport { Popper } from '../../Popper';\nimport { flip, shift } from '@floating-ui/core';\nimport YearSelect from './YearSelect';\nimport { useMemo } from 'react';\nimport { Text } from '../../Text';\n\ntype YearStepperProps = Pick<\n DayDatepickerHeaderCustomProps,\n | 'date'\n | 'decreaseYear'\n | 'prevYearButtonDisabled'\n | 'nextYearButtonDisabled'\n | 'increaseYear'\n | 'changeYear'\n | 'minDate'\n | 'maxDate'\n>;\n\nconst YearStepper = ({\n date,\n decreaseYear,\n prevYearButtonDisabled,\n nextYearButtonDisabled,\n increaseYear,\n changeYear,\n minDate,\n maxDate,\n}: YearStepperProps) => {\n const [isOpen, setIsOpen] = useOutsideClick({\n selector: '.react-datepicker-year-stepper',\n });\n\n const startYear = minDate ? minDate.getFullYear() : 2000;\n const endYear = maxDate ? maxDate.getFullYear() : 2100;\n\n const OptionList = useMemo(\n () =>\n Array.from({ length: endYear - startYear + 1 })\n .fill(0)\n .map((_, index) => ({ value: startYear + index, label: `${startYear + index}` })),\n [startYear, endYear],\n );\n\n return (\n <Header className='calendarHeader'>\n <IconButton\n styleVar='GHOST'\n sizeVar='S'\n onClick={decreaseYear}\n disabled={prevYearButtonDisabled || date.getFullYear() === startYear}\n >\n <Icon iconSource={LeftArrowIcon} sizeVar='XS' color={prevYearButtonDisabled ? 'neutral200' : 'neutral700'} />\n </IconButton>\n <Popper placement='bottom' middlewares={[flip(), shift({ padding: 5 })]}>\n <Popper.Trigger isOpen={isOpen}>\n <Month\n className='react-datepicker-year-stepper'\n onClick={(event) => {\n event.stopPropagation();\n setIsOpen((prev) => !prev);\n }}\n >\n <Text typography='title1_700'>{`${date.getFullYear()}`}</Text>\n </Month>\n </Popper.Trigger>\n <Popper.Portal>\n <YearSelect\n className='react-datepicker-year-stepper'\n optionList={OptionList}\n onClick={({ value }) => {\n changeYear(value);\n setIsOpen(false);\n }}\n parentClassName='react-datepicker-year-stepper'\n maxHeight={`200px`}\n activeValue={date.getFullYear()}\n />\n </Popper.Portal>\n </Popper>\n\n <IconButton\n styleVar='GHOST'\n sizeVar='S'\n onClick={increaseYear}\n disabled={nextYearButtonDisabled || date.getFullYear() === endYear}\n >\n <Icon iconSource={RightArrowIcon} sizeVar='XS' color={nextYearButtonDisabled ? 'neutral200' : 'neutral700'} />\n </IconButton>\n </Header>\n );\n};\n\nexport default YearStepper;\n","import SimpleBarReact from 'simplebar-react';\nimport { Container, OptionList, OptionListItem } from './Year.styled';\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useOutsideClick } from '@shoplflow/utils';\n\nexport type YearSelectProps = {\n optionList: Array<{ value: number; label: string }>;\n className?: string;\n parentClassName?: string;\n activeValue?: number;\n maxHeight?: string;\n onClose?: () => void;\n onClick: (item: { value: number; label: string }) => void;\n};\n\nconst YearSelect = ({ optionList, className, parentClassName, activeValue, maxHeight, onClick }: YearSelectProps) => {\n const optionListRef = useRef<Array<null | HTMLLIElement>>([]);\n const parentRef = useRef<HTMLUListElement>(null);\n\n const [isAllRefMounted, setIsAllRefMounted] = useState<boolean>(false);\n const [isOpened, setIsOpened] = useOutsideClick({\n selector: `.${parentClassName}` || '',\n });\n\n useEffect(() => {\n setIsOpened(isOpened);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (!isAllRefMounted || !activeValue || !maxHeight) {\n return;\n }\n\n const selectedOptionIndex = optionList.findIndex((option) => option?.value === activeValue);\n\n const heightPerOption = optionListRef.current[selectedOptionIndex]?.offsetHeight ?? 0;\n const parentHeight = optionListRef.current[selectedOptionIndex]?.closest('ul')?.clientHeight ?? 0;\n\n if (heightPerOption * (selectedOptionIndex + 1) >= parentHeight) {\n parentRef.current?.scrollTo({ top: heightPerOption * selectedOptionIndex });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isAllRefMounted, activeValue, maxHeight]);\n\n return (\n <Container className={`${parentClassName} ${className}`}>\n <OptionList ref={parentRef} maxHeight={maxHeight}>\n <SimpleBarReact\n style={{\n maxHeight,\n }}\n placeholder={undefined}\n >\n {optionList?.map((option, index) => (\n <OptionListItem\n key={option.value}\n onClick={(event) => {\n event.stopPropagation();\n onClick(option);\n }}\n isActive={activeValue === option.value}\n ref={(el) => {\n optionListRef.current[index] = el;\n index + 1 === optionList.length && setIsAllRefMounted(true);\n }}\n >\n {option.label}\n </OptionListItem>\n ))}\n </SimpleBarReact>\n </OptionList>\n </Container>\n );\n};\n\nexport default YearSelect;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\n\nexport const Header = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n width: 100%;\n height: 32px;\n gap: 8px;\n`;\n\nexport const Month = styled.p`\n font-size: 18px;\n color: ${colorTokens.neutral700};\n cursor: pointer;\n`;\n\nexport const DatePickerWrapper = styled.div`\n position: absolute;\n z-index: 10;\n top: 3rem;\n\n border: 1px solid #eaeaea;\n box-shadow: 0px 10px 30px 0px rgba(51, 51, 51, 0.2);\n .react-datepicker {\n border: 1px solid #eaeaea;\n }\n`;\n\n// Select styles\nexport const Container = styled.div`\n border-radius: 4px;\n background-color: ${colorTokens.neutral0};\n box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.12);\n padding: 4px;\n z-index: 10;\n position: relative;\n top: 0px;\n left: 0px;\n\n & .simplebar-placeholder {\n height: 0px !important;\n }\n`;\n\nexport const OptionList = styled.ul<{ maxHeight?: string }>`\n height: fit-content;\n\n ${({ maxHeight }) => {\n if (maxHeight) {\n return `\n max-height: ${maxHeight};\n overflow: auto;\n overflow-y: scroll; \n\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n\n &::-webkit-scrollbar {\n display: none; /* Chrome, Safari, Opera*/\n }\n `;\n }\n }}\n`;\n\nexport const OptionListItem = styled.li<{ isActive?: boolean }>`\n padding: 7px 8px;\n font-size: 14px;\n font-weight: 500;\n line-height: 18px;\n text-align: left;\n white-space: break-spaces;\n cursor: pointer;\n border-radius: 4px;\n background-color: ${({ isActive }) => isActive && colorTokens.primary300};\n color: ${({ isActive }) => isActive && colorTokens.neutral0};\n\n &:hover {\n background-color: ${({ isActive }) => !isActive && colorTokens.neutral100};\n }\n`;\n","import type { $Values } from '@shoplflow/utils';\nimport type { DatePickerProps, ReactDatePickerCustomHeaderProps } from 'react-datepicker';\nimport type { Locale } from 'react-datepicker/dist/date_utils';\nimport type { SizeVariantProps } from '../../../utils/type/ComponentProps';\n\nexport const DayDatepickerSizeVariants = {\n S: 'S',\n M: 'M',\n} as const;\n\n/**\n * single, multiple, range union type (캘린더의 형태)\n */\nexport type DayCalendarType =\n | { type: 'single'; handleDayChange: (date: Date | null) => void }\n | { type: 'multiple'; handleMutlipleDaysChange: (date: Date[] | null) => void }\n | { type: 'range'; handleDayRangeChange: (dates: [Date | null, Date | null]) => void };\n\nexport type DayDatepickerSizeVariantType = $Values<typeof DayDatepickerSizeVariants>;\n\nexport type DayDatepickerProps = Pick<\n DatePickerProps,\n | 'highlightDates'\n | 'startDate'\n | 'endDate'\n | 'locale'\n | 'selectedDates'\n | 'selected'\n | 'children'\n | 'excludeDates'\n | 'calendarStartDay'\n> &\n DayDatepickerOptionProps;\n\nexport type DayDatepickerOptionProps = {\n /**\n * 캘린더 타입\n */\n calendarType: DayCalendarType;\n minDate?: Date;\n maxDate?: Date;\n locale?: Locale;\n} & SizeVariantProps<DayDatepickerSizeVariantType>;\n\nexport type DayDatepickerHeaderCustomProps = ReactDatePickerCustomHeaderProps & {\n minDate?: Date;\n maxDate?: Date;\n locale?: Locale;\n};\n","import React, { useMemo, useState } from 'react';\nimport { EachMonthArea, EachMonthDate, MonthArea, MonthContainer } from './MonthDatepicker.styled';\nimport type { MonthDatepickerProps } from './MonthDatepicker.types';\nimport YearStepper from '../stepper/YearStepper';\nimport { differenceInCalendarMonths, endOfMonth, startOfMonth } from 'date-fns';\n\nconst MonthDatepicker = ({\n handleMonthClick,\n initStartDate,\n initEndDate,\n minDate,\n maxDate,\n onlySingleMonth,\n}: MonthDatepickerProps) => {\n // 연차 이동에 기준이 되는 날짜\n const [currentDate, setCurrentDate] = useState(initStartDate || new Date());\n\n /**\n * [월, 년도]\n */\n const [selectedStartMonthAndYear, setSelectedStartMonthAndYear] = useState(\n initStartDate ? [initStartDate.getMonth(), initStartDate.getFullYear()] : null,\n );\n\n /**\n * [월, 년도]\n */\n const [selectedEndMonthAndYear, setSelectedEndMonthAndYear] = useState(\n initEndDate ? [initEndDate.getMonth(), initEndDate.getFullYear()] : null,\n );\n\n const Months = useMemo(() => {\n return Array.from({ length: 12 }).map((_, index) => index + 1);\n }, []);\n\n const clickMonth = (month: number, year: number) => {\n // 단일 월 선택일 경우\n if (onlySingleMonth) {\n setSelectedStartMonthAndYear([month, year]);\n handleMonthClick({\n startDate: startOfMonth(new Date(year, month - 1)),\n endDate: endOfMonth(new Date(year, month - 1)),\n selectedMonthRange: 1,\n });\n return;\n }\n\n // 시작일 선택 or 시작 + 마지막 월이 이미 선택되어 있을 경우\n if (!selectedStartMonthAndYear || (selectedStartMonthAndYear && selectedEndMonthAndYear)) {\n const startDate = startOfMonth(new Date(year, month - 1));\n const endDate = endOfMonth(new Date(year, month - 1));\n\n setSelectedStartMonthAndYear([month, year]);\n setSelectedEndMonthAndYear(null);\n handleMonthClick({\n startDate,\n endDate,\n // 현재 달 까지 포함\n selectedMonthRange: differenceInCalendarMonths(endDate, startDate) + 1,\n });\n return;\n }\n\n // 날짜가 하나만 선택\n if (selectedStartMonthAndYear && !selectedEndMonthAndYear) {\n // 년도가 이전 or 년도 동일 + 달이 이전\n const [selectedMonth, selectedYear] = selectedStartMonthAndYear;\n if (selectedYear > year || (selectedYear === year && selectedMonth > month)) {\n const startDate = startOfMonth(new Date(year, month - 1));\n const endDate = endOfMonth(new Date(selectedYear, selectedMonth - 1));\n\n setSelectedStartMonthAndYear([month, year]);\n setSelectedEndMonthAndYear([selectedMonth, selectedYear]);\n handleMonthClick({\n startDate,\n endDate,\n // 현재 달 까지 포함\n selectedMonthRange: differenceInCalendarMonths(endDate, startDate) + 1,\n });\n return;\n }\n\n if (selectedMonth !== month || selectedYear !== year) {\n setSelectedEndMonthAndYear([month, year]);\n }\n const startDate = startOfMonth(new Date(selectedYear, selectedMonth - 1));\n const endDate = endOfMonth(new Date(year, month - 1));\n\n handleMonthClick({\n startDate,\n endDate,\n // 현재 달까지 포함\n selectedMonthRange: differenceInCalendarMonths(endDate, startDate) + 1,\n });\n }\n };\n\n return (\n <MonthContainer data-shoplflow={'MonthDatepicker'}>\n <YearStepper\n date={currentDate}\n decreaseYear={() => {\n setCurrentDate(new Date(currentDate.getFullYear() - 1, currentDate.getMonth(), currentDate.getDate()));\n }}\n minDate={minDate}\n maxDate={maxDate}\n prevYearButtonDisabled={minDate ? minDate.getFullYear() === currentDate.getFullYear() : false}\n nextYearButtonDisabled={maxDate ? maxDate.getFullYear() === currentDate.getFullYear() : false}\n increaseYear={() => {\n setCurrentDate(new Date(currentDate.getFullYear() + 1, currentDate.getMonth(), currentDate.getDate()));\n }}\n changeYear={(year) => {\n setCurrentDate(new Date(year, currentDate.getMonth(), currentDate.getDate()));\n }}\n />\n <MonthArea>\n {Months.map((month) => {\n const currentYear = currentDate.getFullYear();\n\n const isStart = currentYear === selectedStartMonthAndYear?.[1] && month === selectedStartMonthAndYear?.[0];\n const isEnd = selectedEndMonthAndYear?.[1] === currentYear && selectedEndMonthAndYear?.[0] === month;\n const isReady = isStart && Boolean(selectedEndMonthAndYear);\n let inRange = false;\n\n let disabled = false;\n\n if (minDate) {\n const minMonth = minDate.getMonth() + 1;\n const minYear = minDate.getFullYear();\n\n // 최소 년도보다 현재 년도가 작음\n if (currentYear < minYear) {\n disabled = true;\n }\n\n // 최소년도와 현재년도가 같고, 월이 작거나 같음\n if (currentYear === minYear) {\n if (month <= minMonth) {\n disabled = true;\n }\n }\n }\n\n if (maxDate) {\n const maxMonth = maxDate.getMonth() + 1;\n const maxYear = maxDate.getFullYear();\n\n // 최대년도보다 현재 년도가 큼\n if (currentYear > maxYear) {\n disabled = true;\n }\n\n // 최대년도와 현재년도가 같고, 월이 크거나 같음\n if (currentYear === maxYear) {\n if (month >= maxMonth) {\n disabled = true;\n }\n }\n }\n\n // 시작일 + 마지막일이 선택된 경우\n if (selectedStartMonthAndYear && selectedEndMonthAndYear) {\n const [startMonth, startYear] = selectedStartMonthAndYear;\n const [endMonth, endYear] = selectedEndMonthAndYear;\n // 시작년 마지막년도 사이의 해당 년도가 존재하는 경우\n if (currentYear > startYear && currentYear < endYear) {\n inRange = true;\n }\n\n // 시작년도, 마지막년도, 현재 년도가 같은 경우\n if (currentYear === startYear && currentYear === endYear) {\n // 현재 월 => 시작 월, 마지막 월 사이에 존재\n if (month >= startMonth && month <= endMonth) {\n inRange = true;\n }\n }\n\n // 시작년도, 현재년도 같음 + 시작월 <= 현재 월\n if (currentYear === startYear && currentYear !== endYear) {\n if (month >= startMonth) {\n inRange = true;\n }\n }\n\n // 시작년도, 마지막 년도 같음 + 마지막 월 >= 현재 월\n if (currentYear === endYear && currentYear !== startYear) {\n if (month <= endMonth) {\n inRange = true;\n }\n }\n }\n\n return (\n <EachMonthArea\n inRange={inRange}\n isStart={isStart}\n isReady={isReady}\n isEnd={isEnd}\n disabled={disabled}\n key={month}\n onClick={() => {\n if (disabled) {\n return;\n }\n\n clickMonth(month, currentDate.getFullYear());\n }}\n >\n <EachMonthDate inRange={inRange} isStart={isStart} isEnd={isEnd} disabled={disabled}>\n {month}\n </EachMonthDate>\n </EachMonthArea>\n );\n })}\n </MonthArea>\n </MonthContainer>\n );\n};\n\nexport default MonthDatepicker;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\nimport type { MonthDatepickerStyleType } from './MonthDatepicker.types';\n\n// 날짜 동그라미 영역 스타일\nexport const getEachDateStyle = (props: MonthDatepickerStyleType) => {\n const { inRange, isStart, isEnd, disabled } = props;\n\n if (isStart || isEnd) {\n return css`\n background-color: ${colorTokens.primary300};\n color: ${colorTokens.neutral0};\n `;\n }\n\n if (inRange) {\n return css`\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.neutral700};\n `;\n }\n\n if (disabled) {\n return css`\n color: ${colorTokens.neutral400};\n cursor: not-allowed;\n `;\n }\n\n return css`\n &:hover {\n background-color: ${colorTokens.primary100};\n }\n `;\n};\n\n// 날짜 래퍼 영역\nexport const getEachMonthAreaStyle = (props: MonthDatepickerStyleType & { isReady: boolean }) => {\n const { inRange, isStart, isEnd, isReady, disabled } = props;\n\n if (isStart && isReady) {\n return css`\n &::after {\n content: '';\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 48px;\n background: ${colorTokens.primary100};\n }\n `;\n }\n\n if (isEnd && !isStart) {\n return css`\n &::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 48px;\n background: ${colorTokens.primary100};\n }\n `;\n }\n\n if (inRange) {\n return css`\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.neutral700};\n `;\n }\n\n if (disabled) {\n return css`\n cursor: not-allowed;\n `;\n }\n};\n\nexport const MonthContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 400px;\n max-width: 400px;\n gap: 16px;\n padding: 16px 24px 24px;\n`;\n\nexport const MonthArea = styled.div`\n width: 100%;\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n grid-row-gap: 16px;\n`;\n\nexport const EachMonthArea = styled.div<MonthDatepickerStyleType & { isReady: boolean }>`\n width: 100%;\n height: 48px;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n\n ${(props) => getEachMonthAreaStyle(props)}\n`;\n\nexport const EachMonthDate = styled.div<MonthDatepickerStyleType>`\n width: 48px;\n height: 48px;\n text-align: center;\n font-size: 14px;\n line-height: 48px;\n padding: 0;\n border-radius: 50%;\n cursor: pointer;\n position: absolute;\n z-index: 10;\n\n ${(props) => getEachDateStyle(props)}\n`;\n","import React, { useState } from 'react';\nimport { YearContainer, YearArea, EachYearArea, EachYearDate } from './AnnualDatepicker.styled';\nimport type { AnnualDatepickerProps } from './AnnualDatepicker.types';\n\nconst AnnualDatepicker = ({\n startYear = 2000,\n endYear = 2100,\n currentYear,\n handleYearClick,\n}: AnnualDatepickerProps) => {\n const [selectedYear, setSelectedYear] = useState(currentYear || new Date().getFullYear());\n const Years = Array.from({ length: endYear - startYear + 1 }).map((_, index) => startYear + index);\n\n const clickYear = (year: number) => {\n setSelectedYear(year);\n handleYearClick(year);\n };\n\n return (\n <YearContainer data-shoplflow={'AnnualDatepicker'}>\n <YearArea>\n {Years.map((year) => {\n return (\n <EachYearArea\n key={year}\n isSelected={selectedYear === year}\n onClick={() => {\n clickYear(year);\n }}\n >\n <EachYearDate isSelected={selectedYear === year}>{year}</EachYearDate>\n </EachYearArea>\n );\n })}\n </YearArea>\n </YearContainer>\n );\n};\n\nexport default AnnualDatepicker;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\n\n// 날짜 동그라미 영역 스타일\nexport const getEachDateStyle = (props: { isSelected?: boolean; disabled?: boolean }) => {\n const { isSelected, disabled } = props;\n\n if (isSelected) {\n return css`\n background-color: ${colorTokens.primary300};\n color: ${colorTokens.neutral0};\n `;\n }\n\n if (disabled) {\n return css`\n color: ${colorTokens.neutral400};\n cursor: not-allowed;\n `;\n }\n\n return css`\n &:hover {\n background-color: ${colorTokens.primary100};\n }\n `;\n};\n\n// 날짜 래퍼 영역\nexport const getEachYearAreaStyle = (props: { isSelected?: boolean; disabled?: boolean }) => {\n const { disabled } = props;\n\n if (disabled) {\n return css`\n cursor: not-allowed;\n `;\n }\n};\n\nexport const YearContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 400px;\n max-width: 400px;\n gap: 16px;\n padding: 16px 24px 24px;\n`;\n\nexport const YearArea = styled.div`\n width: 100%;\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n grid-row-gap: 16px;\n`;\n\nexport const EachYearArea = styled.div<{ isSelected?: boolean; disabled?: boolean }>`\n width: 100%;\n height: 48px;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n\n ${(props) => getEachYearAreaStyle(props)}\n`;\n\nexport const EachYearDate = styled.div<{ isSelected?: boolean; disabled?: boolean }>`\n width: 48px;\n height: 48px;\n text-align: center;\n font-size: 14px;\n line-height: 48px;\n padding: 0;\n border-radius: 50%;\n cursor: pointer;\n position: absolute;\n z-index: 10;\n\n ${(props) => getEachDateStyle(props)}\n`;\n","import { useMemo, useState } from 'react';\n\nimport { WeekArea, WeekContainer, EachWeekArea, EachWeekDate } from './WeekDatepicker.styled';\nimport type { WeekDatepickerProps } from './WeekDatepicker.types';\nimport YearStepper from '../stepper/YearStepper';\nimport { getEndOfISOWeek, getStartOfISOWeek, getWeeksInYear } from '../helpers';\nimport { differenceInCalendarISOWeeks, getISOWeek, getISOWeekYear } from 'date-fns';\n\nconst WeekDatepicker = ({\n handleWeekClick,\n initStartDate,\n initEndDate,\n minDate,\n maxDate,\n onlySingleWeek,\n}: WeekDatepickerProps) => {\n const year = initStartDate?.getFullYear() || new Date().getFullYear();\n const [currentDate, setCurrentDate] = useState(new Date(year, 5, 5));\n\n /**\n * [주, 년도]\n */\n const [selectedStartWeekAndYear, setSelectedStartWeekAndYear] = useState(\n initStartDate ? [getISOWeek(initStartDate || new Date()), getISOWeekYear(initStartDate || new Date())] : null,\n );\n\n /**\n * [주, 년도]\n */\n const [selectedEndWeekAndYear, setSelectedEndWeekAndYear] = useState(\n initEndDate ? [getISOWeek(initEndDate || new Date()), getISOWeekYear(initEndDate || new Date())] : null,\n );\n\n const selectedYear = currentDate.getFullYear();\n\n const Years = useMemo(() => {\n return Array.from({ length: getWeeksInYear(selectedYear) }).map((_, index) => {\n return String(index + 1).padStart(2, '0');\n });\n }, [selectedYear]);\n\n const clickWeek = (week: number, year: number) => {\n // onlySingleWeek or 시작일 선택 or 시작 + 마지막 주이 이미 선택되어 있을 경우\n if (onlySingleWeek || !selectedStartWeekAndYear || (selectedStartWeekAndYear && selectedEndWeekAndYear)) {\n setSelectedStartWeekAndYear([week, year]);\n setSelectedEndWeekAndYear(null);\n handleWeekClick({\n startYear: year,\n startWeek: week,\n startDate: getStartOfISOWeek(week, year),\n endYear: year,\n endWeek: week,\n endDate: getEndOfISOWeek(week, year),\n selectedWeeksRange: 1,\n });\n return;\n }\n\n // 날짜가 하나만 선택\n if (selectedStartWeekAndYear && !selectedEndWeekAndYear) {\n const [selectedWeek, selectedYear] = selectedStartWeekAndYear;\n\n // 선택된 년도가 이전 or 년도 동일 주가 이전\n if (selectedYear > year || (selectedYear === year && selectedWeek > week)) {\n const startDate = getStartOfISOWeek(week, year);\n const endDate = getEndOfISOWeek(selectedWeek, selectedYear);\n\n setSelectedStartWeekAndYear([week, year]);\n setSelectedEndWeekAndYear([selectedWeek, selectedYear]);\n handleWeekClick({\n startYear: year,\n startWeek: week,\n startDate: startDate,\n endYear: selectedYear,\n endWeek: selectedWeek,\n endDate: endDate,\n // 현재 주까지 포함\n selectedWeeksRange: differenceInCalendarISOWeeks(endDate, startDate) + 1,\n });\n return;\n }\n\n if (selectedWeek !== week || selectedYear !== year) {\n setSelectedEndWeekAndYear([week, year]);\n }\n\n const startDate = getStartOfISOWeek(selectedWeek, selectedYear);\n const endDate = getEndOfISOWeek(week, year);\n handleWeekClick({\n startYear: selectedYear,\n startWeek: selectedWeek,\n startDate: startDate,\n endYear: year,\n endWeek: week,\n endDate: endDate,\n // 현재 주까지 포함\n selectedWeeksRange: differenceInCalendarISOWeeks(endDate, startDate) + 1,\n });\n }\n };\n\n return (\n <WeekContainer>\n <YearStepper\n date={currentDate}\n decreaseYear={() => {\n setCurrentDate(new Date(currentDate.getFullYear() - 1, currentDate.getMonth(), currentDate.getDate()));\n }}\n minDate={minDate}\n maxDate={maxDate}\n prevYearButtonDisabled={minDate ? minDate.getFullYear() === currentDate.getFullYear() : false}\n nextYearButtonDisabled={maxDate ? maxDate.getFullYear() === currentDate.getFullYear() : false}\n increaseYear={() => {\n setCurrentDate(new Date(currentDate.getFullYear() + 1, currentDate.getMonth(), currentDate.getDate()));\n }}\n changeYear={(year) => {\n setCurrentDate(new Date(year, currentDate.getMonth(), currentDate.getDate()));\n }}\n />\n\n {/* 주차 그리드 */}\n <WeekArea>\n {Years.map((each, index) => {\n const currentYear = currentDate.getFullYear();\n const currentWeek = Number(each);\n\n const isStart =\n currentYear === selectedStartWeekAndYear?.[1] && currentWeek === selectedStartWeekAndYear?.[0];\n const isEnd = selectedEndWeekAndYear?.[1] === currentYear && selectedEndWeekAndYear?.[0] === currentWeek;\n const isReady = isStart && Boolean(selectedEndWeekAndYear);\n let inRange = false;\n\n let disabled = false;\n\n // 최소 날짜가 있는 경우\n if (minDate) {\n const minWeek = getISOWeek(minDate);\n const minYear = getISOWeekYear(minDate);\n\n // 최소 년도보다 현재 년도가 작음\n if (currentYear < minYear) {\n disabled = true;\n }\n\n // 최소년도와 현재년도가 같고, 주차가 작거나 같음\n if (currentYear === minYear) {\n if (currentWeek <= minWeek) {\n disabled = true;\n }\n }\n }\n\n // 최대 날짜가 있는 경우\n if (maxDate) {\n const maxWeek = getISOWeek(maxDate);\n const maxYear = getISOWeekYear(maxDate);\n\n // 최대년도보다 현재 년도가 큼\n if (currentYear > maxYear) {\n disabled = true;\n }\n\n // 최대년도와 현재년도가 같고, 주차가 크거나 같음\n if (currentYear === maxYear) {\n if (currentWeek >= maxWeek) {\n disabled = true;\n }\n }\n }\n\n // 시작일 + 마지막일이 선택된 경우\n if (selectedStartWeekAndYear && selectedEndWeekAndYear) {\n const [startWeek, startYear] = selectedStartWeekAndYear;\n const [endWeek, endYear] = selectedEndWeekAndYear;\n // 시작년 마지막년도 사이의 해당 년도가 존재하는 경우\n if (currentYear > startYear && currentYear < endYear) {\n inRange = true;\n }\n\n // 시작년도, 마지막년도, 현재 년도가 같은 경우\n if (currentYear === startYear && currentYear === endYear) {\n // 현재 주 => 시작 주, 마지막 주 사이에 존재\n if (currentWeek >= startWeek && currentWeek <= endWeek) {\n inRange = true;\n }\n }\n\n // 시작년도, 현재년도 같음 + 시작주 <= 현재 주\n if (currentYear === startYear && currentYear !== endYear) {\n if (currentWeek >= startWeek) {\n inRange = true;\n }\n }\n\n // 시작년도, 마지막 년도 같음 + 마지막 주 >= 현재 주\n if (currentYear === endYear && currentYear !== startYear) {\n if (currentWeek <= endWeek) {\n inRange = true;\n }\n }\n }\n\n return (\n <EachWeekArea\n inRange={inRange}\n isStart={isStart}\n isReady={isReady}\n isEnd={isEnd}\n disabled={disabled}\n key={index}\n onClick={() => {\n if (disabled) {\n return;\n }\n clickWeek(Number(each), currentDate.getFullYear());\n }}\n >\n <EachWeekDate inRange={inRange} isStart={isStart} isEnd={isEnd} disabled={disabled}>\n W{each}\n </EachWeekDate>\n </EachWeekArea>\n );\n })}\n </WeekArea>\n </WeekContainer>\n );\n};\n\nexport default WeekDatepicker;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\nimport type { WeekDatepickerStyleType } from './WeekDatepicker.types';\n\n// 날짜 동그라미 영역 스타일\nexport const getEachDateStyle = (props: WeekDatepickerStyleType) => {\n const { inRange, isStart, isEnd, disabled } = props;\n\n if (isStart || isEnd) {\n return css`\n background-color: ${colorTokens.primary300};\n color: ${colorTokens.neutral0};\n `;\n }\n\n if (inRange) {\n return css`\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.neutral700};\n `;\n }\n\n if (disabled) {\n return css`\n color: ${colorTokens.neutral400};\n cursor: not-allowed;\n `;\n }\n\n return css`\n &:hover {\n background-color: ${colorTokens.primary100};\n }\n `;\n};\n\n// 날짜 래퍼 영역\nexport const getEachWeekAreaStyle = (props: WeekDatepickerStyleType & { isReady: boolean }) => {\n const { inRange, isStart, isEnd, isReady, disabled } = props;\n\n if (isStart && isReady) {\n return css`\n &::after {\n content: '';\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 24px;\n background: ${colorTokens.primary100};\n }\n `;\n }\n\n if (isEnd && !isStart) {\n return css`\n &::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 24px;\n background: ${colorTokens.primary100};\n }\n `;\n }\n\n if (inRange) {\n return css`\n background-color: ${colorTokens.primary100};\n color: ${colorTokens.neutral700};\n `;\n }\n\n if (disabled) {\n return css`\n cursor: not-allowed;\n `;\n }\n};\n\nexport const WeekContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 400px;\n max-width: 400px;\n gap: 16px;\n padding: 16px 24px 24px;\n`;\n\nexport const WeekArea = styled.div`\n width: 100%;\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n grid-row-gap: 8px;\n`;\n\nexport const EachWeekArea = styled.div<WeekDatepickerStyleType & { isReady: boolean }>`\n width: 100%;\n height: 48px;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n\n ${(props) => getEachWeekAreaStyle(props)}\n`;\n\nexport const EachWeekDate = styled.div<WeekDatepickerStyleType>`\n width: 48px;\n height: 48px;\n text-align: center;\n font-size: 14px;\n line-height: 48px;\n padding: 0;\n border-radius: 50%;\n cursor: pointer;\n position: absolute;\n z-index: 10;\n\n ${(props) => getEachDateStyle(props)}\n`;\n","import { addWeeks, endOfISOWeek, getISOWeeksInYear, startOfISOWeek } from 'date-fns';\n\n/**\n * ISO8601 기준, 해당 년도의 주차를 반환\n * @param year\n * @returns\n */\nexport function getWeeksInYear(year: number): number {\n return getISOWeeksInYear(new Date(year, 5, 5));\n}\n\n/**\n * @description 선택된 주의 첫번째 날짜\n * @param week\n * @param year\n * @returns\n */\nexport const getStartOfISOWeek = (week: number, year: number) => {\n // 1월 4일을 기준으로 첫째 주의 시작을 찾습니다 (ISO 8601 규칙에 따라)\n const januaryFourth = new Date(year, 0, 4);\n const firstWeekStart = startOfISOWeek(januaryFourth);\n\n // 입력받은 주차만큼 주를 더해 주차의 첫째 날 계산\n const startOfWeek = addWeeks(firstWeekStart, week - 1);\n\n return startOfWeek;\n};\n\n/**\n * @description 선택된 주의 마지막 날짜\n * @param week\n * @param year\n * @returns\n */\nexport const getEndOfISOWeek = (week: number, year: number) => {\n // 1월 4일을 기준으로 첫째 주의 시작을 찾습니다 (ISO 8601 규칙에 따라)\n const januaryFourth = new Date(year, 0, 4);\n const firstWeekStart = startOfISOWeek(januaryFourth);\n\n // 입력받은 주차만큼 주를 더해 주차의 첫째 날 계산\n const startOfWeek = addWeeks(firstWeekStart, week - 1);\n const endOfWeek = endOfISOWeek(startOfWeek);\n return endOfWeek;\n};\n","import React from 'react';\nimport { createPortal } from 'react-dom';\n\nconst PopperPortal = () => {\n return (\n <>\n {createPortal(\n <div\n id={'popper-portal-key'}\n style={{\n zIndex: 20001,\n position: 'relative',\n }}\n />,\n document.body,\n )}\n </>\n );\n};\n\nexport default PopperPortal;\n","import React from 'react';\n\nimport { useDomain } from '../hooks/useDomain';\nimport type { DomainType } from '../types/Domain';\nimport ModalPortal from '../portal/ModalPortal';\nimport PopperPortal from '../portal/PopperPortal';\nimport ModalProvider from '../components/Modal/providers/ModalProvider';\nimport { domAnimation, LazyMotion } from 'framer-motion';\n\nexport interface ShoplflowProviderProps {\n domain?: DomainType;\n children: React.ReactNode;\n}\n\nconst ShoplflowProvider = ({ children, domain = 'SHOPL' }: ShoplflowProviderProps) => {\n useDomain(domain);\n\n return (\n <ModalProvider>\n <PopperPortal />\n <ModalPortal />\n <LazyMotion features={domAnimation}>{children}</LazyMotion>\n </ModalProvider>\n );\n};\n\nexport default ShoplflowProvider;\n"]}