@shoplflow/base 0.30.6 → 0.30.7
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.
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -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/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","Container","IconButton","Fragment","RightElementWrapper","value","_a","useRef","_b","useId","flip","shift","LayoutGroup","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) => 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 { ButtonComponent, ButtonProps } from './Button.types';\nimport LoadingSpinner from '../../../assets/LoadingSpinner';\n\nconst Button: ButtonComponent = 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) as keyof ColorTokens]};\n background-color: ${colorTokens[color]};\n :hover {\n background-color: ${colorTokens[getNextColor(color) as keyof ColorTokens]};\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, IconButtonComponent } from './IconButton.types';\nimport LoadingSpinner from '../../../assets/LoadingSpinner';\n\nconst IconButton: IconButtonComponent = 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) as keyof ColorTokens]};\n background: ${colorTokens[color]};\n\n ${isHovered &&\n css`\n background: ${colorTokens[getNextColor(color) as keyof ColorTokens]};\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 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 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={value ? 'neutral700' : 'neutral400'}\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 { 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}: {\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}) => {\n if (type === 'number') {\n return css`\n width: 64px;\n height: 32px;\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 `;\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 direction?: 'row' | 'column';\n type?: HTMLInputTypeAttribute;\n }\n>`\n position: relative;\n display: flex;\n align-items: center;\n flex-direction: ${({ direction }) => direction || 'row'};\n ${({ type, height, minHeight, maxHeight, width, maxWidth, minWidth }) =>\n getStyleByType({ type, height, minHeight, maxHeight, width, maxWidth, minWidth })};\n justify-content: space-between;\n gap: 8px;\n border: 1px solid ${(props) => getBorderColorByStatus(props)};\n border-radius: 6px;\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 ...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 !isHovered && setIsFocused(false);\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 >\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 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 {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 lineClamp={1} wordBreak='break-all' typography='body2_400'>\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 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/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","Container","IconButton","Fragment","RightElementWrapper","value","_a","useRef","_b","useId","flip","shift","LayoutGroup","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 { ButtonComponent, ButtonProps } from './Button.types';\nimport LoadingSpinner from '../../../assets/LoadingSpinner';\n\nconst Button: ButtonComponent = 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) as keyof ColorTokens]};\n background-color: ${colorTokens[color]};\n :hover {\n background-color: ${colorTokens[getNextColor(color) as keyof ColorTokens]};\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, IconButtonComponent } from './IconButton.types';\nimport LoadingSpinner from '../../../assets/LoadingSpinner';\n\nconst IconButton: IconButtonComponent = 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) as keyof ColorTokens]};\n background: ${colorTokens[color]};\n\n ${isHovered &&\n css`\n background: ${colorTokens[getNextColor(color) as keyof ColorTokens]};\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 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 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={value ? 'neutral700' : 'neutral400'}\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 { 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}: {\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}) => {\n if (type === 'number') {\n return css`\n width: 64px;\n height: 32px;\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 `;\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 direction?: 'row' | 'column';\n type?: HTMLInputTypeAttribute;\n }\n>`\n position: relative;\n display: flex;\n align-items: center;\n flex-direction: ${({ direction }) => direction || 'row'};\n ${({ type, height, minHeight, maxHeight, width, maxWidth, minWidth }) =>\n getStyleByType({ type, height, minHeight, maxHeight, width, maxWidth, minWidth })};\n justify-content: space-between;\n gap: 8px;\n border: 1px solid ${(props) => getBorderColorByStatus(props)};\n border-radius: 6px;\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 ...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 !isHovered && setIsFocused(false);\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 >\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 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 {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 lineClamp={1} wordBreak='break-all' typography='body2_400'>\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 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"]}
|