@shoplflow/base 0.12.4 → 0.12.6

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.d.mts CHANGED
@@ -140,6 +140,7 @@ declare const typographyTokens: {
140
140
  body2_400: string;
141
141
  body3_400: string;
142
142
  body3_500: string;
143
+ caption_700: string;
143
144
  caption_400: string;
144
145
  };
145
146
 
package/dist/index.d.ts CHANGED
@@ -140,6 +140,7 @@ declare const typographyTokens: {
140
140
  body2_400: string;
141
141
  body3_400: string;
142
142
  body3_500: string;
143
+ caption_700: string;
143
144
  caption_400: string;
144
145
  };
145
146
 
package/dist/index.js CHANGED
@@ -1154,6 +1154,7 @@ var body2_500 = ".body2_500";
1154
1154
  var body2_400 = ".body2_400";
1155
1155
  var body3_400 = ".body3_400";
1156
1156
  var body3_500 = ".body3_500";
1157
+ var caption_700 = ".caption_700";
1157
1158
  var caption_400 = ".caption_400";
1158
1159
  exports.typographyTokens = {
1159
1160
  heading1_700: heading1_700,
@@ -1175,6 +1176,7 @@ exports.typographyTokens = {
1175
1176
  body2_400: body2_400,
1176
1177
  body3_400: body3_400,
1177
1178
  body3_500: body3_500,
1179
+ caption_700: caption_700,
1178
1180
  caption_400: caption_400
1179
1181
  };
1180
1182
  exports.StyledStack = styled5__default.default.div(_templateObject2(), function(param) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/useDomain.ts","../src/portal/ModalPortal.tsx","../src/animation/fadeInOut.ts","../src/components/BackDrop/BackDrop.styled.ts","../src/components/BackDrop/BackDrop.tsx","../src/hooks/ModalContext.ts","../src/providers/ModalProvider.tsx","../src/providers/ShoplflowProvider.tsx","../src/hooks/useHandleModal.ts","../src/hooks/useModalValue.ts","../src/styles/tokens.ts","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.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/components/Modal/ModalFooter.tsx","../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalHeader.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/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/Icon/Icon.tsx","../src/components/Icon/Icon.styled.ts","../src/components/Icon/Icon.types.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/hooks/useMergeRef.ts","../src/components/Inputs/common/input.styled.ts","../src/components/Inputs/TextArea/TextArea.tsx","../src/components/Inputs/TextArea/TextArea.styled.ts","../src/components/ControlButtons/MinusButton/MinusButton.tsx","../src/components/ControlButtons/MinusButton/MinusButton.styled.ts"],"names":["motion","styled","jsx","useState","modal","removeModal","useContext","background","Stack","forwardRef","React","css","noop","useMemo","useEffect","jsxs","getLineTypographyBySizeVar","getStyleBySizeVar","getStyleByStyleVar","useCallback","createContext","value","useId","Container","IconButton"],"mappings":"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","sourcesContent":["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 '../hooks/ModalContext';\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}>\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)`\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 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 }: BackDropProps) => {\n return (\n <BackDropStyled\n variants={fadeInOut}\n initial={'initial'}\n animate={'animate'}\n exit={'exit'}\n data-shoplflow={'BackDrop'}\n >\n {children}\n </BackDropStyled>\n );\n};\n\nexport default BackDrop;\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};\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 type { ReactNode } from 'react';\nimport { useMemo, useState } from 'react';\nimport type { RemoveModalProps } from '../hooks/ModalContext';\nimport { ModalContext, ModalHandlerContext } from '../hooks/ModalContext';\nimport { isNullOrUndefined } from '@shoplflow/utils';\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) => {\n setOpenedModals((modals) => {\n if (modals) {\n return [...modals, { component, id }];\n }\n return [{ component, id }];\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 return (\n <ModalContext.Provider value={openedModals}>\n <ModalHandlerContext.Provider value={dispatch}>{children}</ModalHandlerContext.Provider>\n </ModalContext.Provider>\n );\n};\n\nexport default ModalProvider;\n","import React from 'react';\n\nimport { useDomain } from '../hooks/useDomain';\nimport type { DomainType } from '../types/Domain';\nimport ModalPortal from '../portal/ModalPortal';\nimport ModalProvider from './ModalProvider';\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 <ModalPortal />\n {children}\n </ModalProvider>\n );\n};\n\nexport default ShoplflowProvider;\n","import { useContext } from 'react';\nimport { ModalHandlerContext } from './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 { useContext } from 'react';\nimport { ModalContext } from './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","/* 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 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 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_400 = '.caption_400';\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_400,\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(\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,\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 height: ${({ height }) => height};\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","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 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';\n\nconst ModalContainer = ({ children, outsideClick = noop, ...rest }: ModalContainerProps) => {\n const ref = useParentElementClick<HTMLDivElement>(outsideClick);\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: rest.height,\n } as React.HTMLAttributes<HTMLElement> & ModalBodyProps);\n });\n\n return (\n <Container ref={ref} {...rest} 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;\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 default:\n return MODAL_SIZE_M;\n }\n};\n\nconst getModalBodyTopBottomPadding = (isIncludeHeader: boolean) => {\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\nexport const Container = styled.div<ModalContainerProps>`\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 }) => (height ? `${height}px` : 'initial')};\n min-height: 180px;\n max-height: 1200px;\n width: ${({ sizeVar }) => getModalWidthFromSize(sizeVar)}px;\n max-width: ${({ sizeVar }) => getModalWidthFromSize(sizeVar)}px;\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 height: string | number;\n}>`\n display: flex;\n width: 100%;\n height: 100%;\n overflow: hidden;\n flex-direction: column;\n background: ${colorTokens.neutral0};\n min-height: 112px;\n min-height: ${({ height }) => height};\n flex: 1;\n ${({ isIncludeHeader }) => getModalBodyTopBottomPadding(isIncludeHeader)}\n`;\n\nexport const ModalBodyContent = styled.div<{\n isIncludeHeader: boolean;\n sizeVar: ModalContainerProps['sizeVar'];\n}>`\n display: flex;\n flex-direction: column;\n width: 100%;\n max-width: ${({ sizeVar }) => getModalWidthFromSize(sizeVar)}px;\n box-sizing: border-box;\n padding: 0 24px;\n overflow: hidden;\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} 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 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 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, ModalBodyContent } from './Modal.styled';\nimport type { ModalBodyProps } from './Modal.types';\nimport Scrollbars from 'react-custom-scrollbars-2';\nimport { useResizeObserver } from '@shoplflow/utils';\n\nconst ModalBody = ({\n children,\n isIncludeHeader = false,\n isIncludeFooter = false,\n sizeVar,\n height: modalContainerHeight,\n}: ModalBodyProps) => {\n const { height: windowHeight } = useResizeObserver(document.body, {\n trackHeight: true,\n });\n\n const headerHeight = 64;\n const footerHeight = 64;\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 (modalContainerHeight) {\n return modalContainerHeight - headerFooterHeight;\n } else {\n return '100%';\n }\n };\n\n const heightUnderMaxHeight = windowHeight - topBottomMargin - headerFooterHeight;\n\n const heightOverMaxHeight = 1200 - topBottomMargin - headerFooterHeight;\n\n return (\n <BodyContainer isIncludeHeader={isIncludeHeader} height={setAutoHeightMin()}>\n <Scrollbars\n id={`scrollbar`}\n // autoHeight\n autoHeight={!modalContainerHeight}\n autoHeightMin={setAutoHeightMin()}\n // autoHeightMax={'100%'}\n autoHeightMax={windowHeight > 1200 ? heightOverMaxHeight : heightUnderMaxHeight}\n autoHide\n autoHideTimeout={1000}\n autoHideDuration={200}\n style={{\n height: '100%',\n overflow: 'hidden',\n }}\n >\n <ModalBodyContent isIncludeHeader={isIncludeHeader} sizeVar={sizeVar}>\n {children}\n </ModalBodyContent>\n </Scrollbars>\n </BodyContainer>\n );\n};\n\nexport default ModalBody;\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","// 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","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 (defaultSelected) {\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 = ({ isSelected, color, radius }: ChipToggleProps) => 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<ChipToggleProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\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;\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 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 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 width: fit-content;\n gap: 4px;\n cursor: pointer;\n background: ${({ background }) => background && colorTokens[background]};\n ${({ sizeVar }) => getStyleBySizeVar(sizeVar)};\n ${(props) => props.styleVar === 'LINE' && lineStyle(props)};\n ${({ disabled }) => getDisabledStyle(disabled)};\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 const colorNumber = color.replace(/[a-z]|_/g, '');\n\n const nextColorNumber = Number(colorNumber) + 100 * step;\n const nextColorToken = `${colorName}${nextColorNumber}`;\n const colorKeysOfColorName = Object.keys(colorTokens)\n .filter((colorToken) => colorToken.includes(colorName))\n .sort((a, b) => Number(a.replace(/[a-z]|_/g, '')) - Number(b.replace(/[a-z]|_/g, '')));\n const colorTokenKeys = Object.keys(colorTokens);\n const findColorToken = colorTokenKeys.find((colorToken) => colorToken === nextColorToken) as ColorTokens | undefined;\n const lastColorToken = colorKeysOfColorName[colorKeysOfColorName.length - 1] as ColorTokens;\n\n return findColorToken ? findColorToken : lastColorToken;\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 { forwardRef } from 'react';\nimport { Text } from '../../Text';\nimport { StyledButton } from './Button.styled';\nimport type { ButtonComponent, ButtonProps } from './Button.types';\n\nconst Button: ButtonComponent = forwardRef(\n <T extends React.ElementType = 'button'>(\n {\n styleVar = 'PRIMARY',\n sizeVar = 'M',\n style,\n color,\n as,\n children,\n leftSource,\n rightSource,\n ...rest\n }: ButtonProps<T>,\n ref: React.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 <Text\n wordBreak={'keep-all'}\n whiteSpace={'nowrap'}\n color={styleVar === 'PRIMARY' ? 'neutral0' : 'neutral700'}\n typography={sizeVar === 'M' ? 'body1_400' : 'body2_400'}\n >\n {children}\n </Text>\n {rightSource}\n </StyledButton>\n );\n },\n);\n\nexport default Button;\n","import styled from '@emotion/styled';\nimport type { ButtonOptionProps, ButtonSizeVar, ButtonStyleVar } from './Button.types';\nimport { colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\n\nconst getStyleByStyleVar = (styleVar?: ButtonStyleVar, 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 return css`\n border: 1px solid ${colorTokens.coolgray100};\n background-color: ${colorTokens.coolgray50};\n :hover {\n background-color: ${!disabled && colorTokens.coolgray100};\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?: ButtonSizeVar) => {\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 gap: 4px;\n padding: 0 12px;\n border-radius: 6px;\n cursor: pointer;\n ${({ styleVar, disabled }) => getStyleByStyleVar(styleVar, disabled)};\n ${({ sizeVar }) => getStyleBySizeVar(sizeVar)};\n ${({ disabled }) => getDisabledStyle(disabled)};\n`;\n","import type { $Values } from '@shoplflow/utils';\nimport type { ComponentPropsWithoutRef, ComponentPropsWithRef, ElementType, ReactElement } from 'react';\nimport type { PolymorphicComponentProps } from '../../../types/PolymorphicComponentProps';\nimport type {\n DisableProps,\n LeftAndRightNodeProps,\n SizeVariantProps,\n StyleVariantProps,\n} from '../../../utils/type/ComponentProps';\n\nimport type { TypographyTokens } from '../../../styles';\n\nexport const buttonSizeVar = {\n S: 'S',\n M: 'M',\n} as const;\n\nexport type ButtonSizeVar = $Values<typeof buttonSizeVar>;\n\nexport const buttonStyleVar = {\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n SOLID: 'SOLID',\n GHOST: 'GHOST',\n} as const;\n\nexport type ButtonStyleVar = $Values<typeof buttonStyleVar>;\n\n// MARK : interface는 객체 구조를 가지기 때문에, 컴파일 시점에 객체 구조가 명확하게 설정되어 있어야 합니다. 따라서 동적 타입을 명시할 때는 타입을 선언하고, 정적 타입을 선언할 때는 interface를 사용합니다.\nexport type ButtonOptionProps<T extends ElementType = 'button'> = Omit<\n ComponentPropsWithoutRef<T>,\n 'color' | 'disabled'\n> &\n SizeVariantProps<ButtonSizeVar> &\n StyleVariantProps<ButtonStyleVar> &\n DisableProps & {\n typography?: TypographyTokens;\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 } from 'react';\nimport { forwardRef } from 'react';\nimport { StyledIconButton } from './IconButton.styled';\nimport type { IconButtonProps, IconButtonComponent } from './IconButton.types';\n\nconst IconButton: IconButtonComponent = forwardRef(\n <T extends ElementType = 'button'>(\n { styleVar, sizeVar, disabled, as, children, ...rest }: IconButtonProps<T>,\n ref: ComponentPropsWithRef<T>['ref'],\n ) => {\n return (\n <StyledIconButton\n styleVar={styleVar}\n sizeVar={sizeVar}\n disabled={disabled}\n as={as}\n ref={ref}\n {...rest}\n data-shoplflow={'IconButton'}\n >\n {children}\n </StyledIconButton>\n );\n },\n);\n\nexport default IconButton;\n","import styled from '@emotion/styled';\nimport type { IconButtonOptionProps, IconButtonSizeVar, IconButtonStyleVar } from './IconButton.types';\nimport { borderRadiusTokens, colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\n\nconst getWidthAndHeightFromSizeVar = (sizeVar?: IconButtonSizeVar) => {\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?: IconButtonStyleVar) => {\n switch (styleVar) {\n case 'SOLID':\n return css`\n border: 1px solid ${colorTokens.neutral200};\n &:hover {\n background-color: ${colorTokens.neutral100};\n }\n `;\n case 'GHOST':\n return css`\n border: 1px solid transparent;\n &:hover {\n background-color: ${colorTokens.neutral400_5};\n }\n `;\n default:\n return css`\n border: 1px solid ${colorTokens.neutral200};\n &:hover {\n background-color: ${colorTokens.neutral100};\n }\n `;\n }\n};\n\nexport const StyledIconButton = styled.button<IconButtonOptionProps>`\n display: flex;\n flex-shrink: 0;\n border-radius: ${borderRadiusTokens.borderRadius06};\n justify-content: center;\n align-items: center;\n background-color: ${colorTokens.neutral0};\n cursor: pointer;\n ${({ styleVar }) => getStyleByStyleVar(styleVar)};\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 IconSourceProps,\n SizeVariantProps,\n StyleVariantProps,\n} from '../../../utils/type/ComponentProps';\n\nexport const iconButtonSizeVar = {\n S: 'S',\n M: 'M',\n} as const;\n\nexport type IconButtonSizeVar = $Values<typeof iconButtonSizeVar>;\n\nexport const iconButtonStyleVar = {\n SOLID: 'SOLID',\n GHOST: 'GHOST',\n} as const;\n\nexport type IconButtonStyleVar = $Values<typeof iconButtonStyleVar>;\n\nexport type IconButtonOptionProps<T extends ElementType = 'button'> = Omit<\n ComponentPropsWithoutRef<T>,\n 'color' | 'disabled'\n> &\n DisableProps &\n SizeVariantProps<IconButtonSizeVar> &\n StyleVariantProps<IconButtonStyleVar> &\n IconSourceProps;\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 min-height: 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 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.X_SMALL:\n return '12px';\n case IconSizeVariants.SMALL:\n return '20px';\n case IconSizeVariants.MEDIUM:\n return '24px';\n case IconSizeVariants.LARGE:\n return '30px';\n case IconSizeVariants.X_LARGE:\n return '36px';\n default:\n return '24px';\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\n & > path {\n fill: ${({ color }) => color && colorTokens[color]};\n }\n`;\n","import type { $Values } from '@shoplflow/utils';\nimport type { ColorTokenProps, IconSourceProps, SizeVariantProps } from '../../utils/type/ComponentProps';\n\nexport const IconSizeVariants = {\n X_SMALL: 'X_SMALL',\n SMALL: 'SMALL',\n MEDIUM: 'MEDIUM',\n LARGE: 'LARGE',\n X_LARGE: 'X_LARGE',\n} as const;\n\nexport type IconSizeVariantsType = $Values<typeof IconSizeVariants>;\n\nexport interface IconProps extends IconOptionProps {}\nexport interface IconOptionProps extends SizeVariantProps<IconSizeVariantsType>, IconSourceProps, ColorTokenProps {}\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 { Icon } from '../../Icon';\nimport { InputWrapper } from '../common/input.styled';\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 className,\n ...rest\n },\n ref,\n ) => {\n const [text, setText] = useState('');\n const [isFocused, setIsFocused] = useState(false);\n const [type, setType] = useState<HTMLInputTypeAttribute | undefined>('text');\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 const slicedText = sliceText(event.target.value);\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) {\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) {\n const convertString = convertToString(value);\n const slicedText = sliceText(convertString);\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 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 <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={'neutral600'} />\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 </InputWrapper>\n );\n },\n);\n\nexport default Input;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\n\nexport const StyledInput = styled.input`\n padding: 4px 0 4px 12px;\n background-color: transparent;\n width: 100%;\n border: none;\n box-sizing: border-box;\n &::placeholder {\n color: ${colorTokens.neutral350};\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';\nimport type { IconSource as ShoplIconSource } from '@shoplflow/shopl-assets';\nimport type { IconSource as HadaIconSource } 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] as HadaIconSource;\n const ShoplIcon = ShoplAssets[iconName] as ShoplIconSource;\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] as HadaIconSource;\n const ShoplIcon = ShoplAssets[iconName] as ShoplIconSource;\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}","import { useMemo } from 'react';\n\nexport type ReactRef<T> = React.RefCallback<T> | React.MutableRefObject<T>;\n\nexport function assignRef<T = any>(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 '${value}' to ref '${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 styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\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 InputWrapper = styled.label<\n Status & {\n direction?: 'row' | 'column';\n }\n>`\n display: flex;\n align-items: center;\n width: 100%;\n flex-direction: ${({ direction }) => direction || 'row'};\n justify-content: space-between;\n min-height: 40px;\n margin: 1px;\n gap: 8px;\n box-shadow: 0 0 0 1px ${(props) => getBorderColorByStatus(props)};\n border-radius: 6px;\n background-color: ${colorTokens.neutral0};\n overflow: hidden;\n ${({ disabled }) => getDisabledStyle(disabled)};\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 = 100,\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 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 minHeight={minHeight}\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<{ minHeight?: number }>`\n padding: 8px 12px 0 12px;\n background-color: transparent;\n resize: none;\n width: 100%;\n height: ${({ minHeight }) => (minHeight ? `${minHeight}px` : '300px')};\n flex: 1;\n word-break: break-all;\n ${({ disabled }) => getDisabledStyle(disabled)};\n &::placeholder {\n color: ${colorTokens.neutral350};\n }\n`;\n","import React, { forwardRef } from 'react';\nimport * as StyledMinusBox from './MinusButton.styled';\nimport type { MinusBoxProps } from './MinusButton.types';\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\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 width: 32px;\n height: 32px;\n padding: 7px;\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"]}
1
+ {"version":3,"sources":["../src/hooks/useDomain.ts","../src/portal/ModalPortal.tsx","../src/animation/fadeInOut.ts","../src/components/BackDrop/BackDrop.styled.ts","../src/components/BackDrop/BackDrop.tsx","../src/hooks/ModalContext.ts","../src/providers/ModalProvider.tsx","../src/providers/ShoplflowProvider.tsx","../src/hooks/useHandleModal.ts","../src/hooks/useModalValue.ts","../src/styles/tokens.ts","../src/components/Stack/Stack.tsx","../src/components/Stack/Stack.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/components/Modal/ModalFooter.tsx","../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalHeader.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/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/Icon/Icon.tsx","../src/components/Icon/Icon.styled.ts","../src/components/Icon/Icon.types.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/hooks/useMergeRef.ts","../src/components/Inputs/common/input.styled.ts","../src/components/Inputs/TextArea/TextArea.tsx","../src/components/Inputs/TextArea/TextArea.styled.ts","../src/components/ControlButtons/MinusButton/MinusButton.tsx","../src/components/ControlButtons/MinusButton/MinusButton.styled.ts"],"names":["motion","styled","jsx","useState","modal","removeModal","useContext","background","Stack","forwardRef","React","css","noop","useMemo","useEffect","jsxs","getLineTypographyBySizeVar","getStyleBySizeVar","getStyleByStyleVar","useCallback","createContext","value","useId","Container","IconButton"],"mappings":"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","sourcesContent":["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 '../hooks/ModalContext';\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}>\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)`\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 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 }: BackDropProps) => {\n return (\n <BackDropStyled\n variants={fadeInOut}\n initial={'initial'}\n animate={'animate'}\n exit={'exit'}\n data-shoplflow={'BackDrop'}\n >\n {children}\n </BackDropStyled>\n );\n};\n\nexport default BackDrop;\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};\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 type { ReactNode } from 'react';\nimport { useMemo, useState } from 'react';\nimport type { RemoveModalProps } from '../hooks/ModalContext';\nimport { ModalContext, ModalHandlerContext } from '../hooks/ModalContext';\nimport { isNullOrUndefined } from '@shoplflow/utils';\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) => {\n setOpenedModals((modals) => {\n if (modals) {\n return [...modals, { component, id }];\n }\n return [{ component, id }];\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 return (\n <ModalContext.Provider value={openedModals}>\n <ModalHandlerContext.Provider value={dispatch}>{children}</ModalHandlerContext.Provider>\n </ModalContext.Provider>\n );\n};\n\nexport default ModalProvider;\n","import React from 'react';\n\nimport { useDomain } from '../hooks/useDomain';\nimport type { DomainType } from '../types/Domain';\nimport ModalPortal from '../portal/ModalPortal';\nimport ModalProvider from './ModalProvider';\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 <ModalPortal />\n {children}\n </ModalProvider>\n );\n};\n\nexport default ShoplflowProvider;\n","import { useContext } from 'react';\nimport { ModalHandlerContext } from './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 { useContext } from 'react';\nimport { ModalContext } from './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","/* 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 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 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';\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};\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(\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,\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 height: ${({ height }) => height};\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","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 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';\n\nconst ModalContainer = ({ children, outsideClick = noop, ...rest }: ModalContainerProps) => {\n const ref = useParentElementClick<HTMLDivElement>(outsideClick);\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: rest.height,\n } as React.HTMLAttributes<HTMLElement> & ModalBodyProps);\n });\n\n return (\n <Container ref={ref} {...rest} 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;\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 default:\n return MODAL_SIZE_M;\n }\n};\n\nconst getModalBodyTopBottomPadding = (isIncludeHeader: boolean) => {\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\nexport const Container = styled.div<ModalContainerProps>`\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 }) => (height ? `${height}px` : 'initial')};\n min-height: 180px;\n max-height: 1200px;\n width: ${({ sizeVar }) => getModalWidthFromSize(sizeVar)}px;\n max-width: ${({ sizeVar }) => getModalWidthFromSize(sizeVar)}px;\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 height: string | number;\n}>`\n display: flex;\n width: 100%;\n height: 100%;\n overflow: hidden;\n flex-direction: column;\n background: ${colorTokens.neutral0};\n min-height: 112px;\n min-height: ${({ height }) => height};\n flex: 1;\n ${({ isIncludeHeader }) => getModalBodyTopBottomPadding(isIncludeHeader)}\n`;\n\nexport const ModalBodyContent = styled.div<{\n isIncludeHeader: boolean;\n sizeVar: ModalContainerProps['sizeVar'];\n}>`\n display: flex;\n flex-direction: column;\n width: 100%;\n max-width: ${({ sizeVar }) => getModalWidthFromSize(sizeVar)}px;\n box-sizing: border-box;\n padding: 0 24px;\n overflow: hidden;\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} 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 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 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, ModalBodyContent } from './Modal.styled';\nimport type { ModalBodyProps } from './Modal.types';\nimport Scrollbars from 'react-custom-scrollbars-2';\nimport { useResizeObserver } from '@shoplflow/utils';\n\nconst ModalBody = ({\n children,\n isIncludeHeader = false,\n isIncludeFooter = false,\n sizeVar,\n height: modalContainerHeight,\n}: ModalBodyProps) => {\n const { height: windowHeight } = useResizeObserver(document.body, {\n trackHeight: true,\n });\n\n const headerHeight = 64;\n const footerHeight = 64;\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 (modalContainerHeight) {\n return modalContainerHeight - headerFooterHeight;\n } else {\n return '100%';\n }\n };\n\n const heightUnderMaxHeight = windowHeight - topBottomMargin - headerFooterHeight;\n\n const heightOverMaxHeight = 1200 - topBottomMargin - headerFooterHeight;\n\n return (\n <BodyContainer isIncludeHeader={isIncludeHeader} height={setAutoHeightMin()}>\n <Scrollbars\n id={`scrollbar`}\n // autoHeight\n autoHeight={!modalContainerHeight}\n autoHeightMin={setAutoHeightMin()}\n // autoHeightMax={'100%'}\n autoHeightMax={windowHeight > 1200 ? heightOverMaxHeight : heightUnderMaxHeight}\n autoHide\n autoHideTimeout={1000}\n autoHideDuration={200}\n style={{\n height: '100%',\n overflow: 'hidden',\n }}\n >\n <ModalBodyContent isIncludeHeader={isIncludeHeader} sizeVar={sizeVar}>\n {children}\n </ModalBodyContent>\n </Scrollbars>\n </BodyContainer>\n );\n};\n\nexport default ModalBody;\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","// 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","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 (defaultSelected) {\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 = ({ isSelected, color, radius }: ChipToggleProps) => 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<ChipToggleProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\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;\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 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 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 width: fit-content;\n gap: 4px;\n cursor: pointer;\n background: ${({ background }) => background && colorTokens[background]};\n ${({ sizeVar }) => getStyleBySizeVar(sizeVar)};\n ${(props) => props.styleVar === 'LINE' && lineStyle(props)};\n ${({ disabled }) => getDisabledStyle(disabled)};\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 const colorNumber = color.replace(/[a-z]|_/g, '');\n\n const nextColorNumber = Number(colorNumber) + 100 * step;\n const nextColorToken = `${colorName}${nextColorNumber}`;\n const colorKeysOfColorName = Object.keys(colorTokens)\n .filter((colorToken) => colorToken.includes(colorName))\n .sort((a, b) => Number(a.replace(/[a-z]|_/g, '')) - Number(b.replace(/[a-z]|_/g, '')));\n const colorTokenKeys = Object.keys(colorTokens);\n const findColorToken = colorTokenKeys.find((colorToken) => colorToken === nextColorToken) as ColorTokens | undefined;\n const lastColorToken = colorKeysOfColorName[colorKeysOfColorName.length - 1] as ColorTokens;\n\n return findColorToken ? findColorToken : lastColorToken;\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 { forwardRef } from 'react';\nimport { Text } from '../../Text';\nimport { StyledButton } from './Button.styled';\nimport type { ButtonComponent, ButtonProps } from './Button.types';\n\nconst Button: ButtonComponent = forwardRef(\n <T extends React.ElementType = 'button'>(\n {\n styleVar = 'PRIMARY',\n sizeVar = 'M',\n style,\n color,\n as,\n children,\n leftSource,\n rightSource,\n ...rest\n }: ButtonProps<T>,\n ref: React.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 <Text\n wordBreak={'keep-all'}\n whiteSpace={'nowrap'}\n color={styleVar === 'PRIMARY' ? 'neutral0' : 'neutral700'}\n typography={sizeVar === 'M' ? 'body1_400' : 'body2_400'}\n >\n {children}\n </Text>\n {rightSource}\n </StyledButton>\n );\n },\n);\n\nexport default Button;\n","import styled from '@emotion/styled';\nimport type { ButtonOptionProps, ButtonSizeVar, ButtonStyleVar } from './Button.types';\nimport { colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\n\nconst getStyleByStyleVar = (styleVar?: ButtonStyleVar, 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 return css`\n border: 1px solid ${colorTokens.coolgray100};\n background-color: ${colorTokens.coolgray50};\n :hover {\n background-color: ${!disabled && colorTokens.coolgray100};\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?: ButtonSizeVar) => {\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 gap: 4px;\n padding: 0 12px;\n border-radius: 6px;\n cursor: pointer;\n ${({ styleVar, disabled }) => getStyleByStyleVar(styleVar, disabled)};\n ${({ sizeVar }) => getStyleBySizeVar(sizeVar)};\n ${({ disabled }) => getDisabledStyle(disabled)};\n`;\n","import type { $Values } from '@shoplflow/utils';\nimport type { ComponentPropsWithoutRef, ComponentPropsWithRef, ElementType, ReactElement } from 'react';\nimport type { PolymorphicComponentProps } from '../../../types/PolymorphicComponentProps';\nimport type {\n DisableProps,\n LeftAndRightNodeProps,\n SizeVariantProps,\n StyleVariantProps,\n} from '../../../utils/type/ComponentProps';\n\nimport type { TypographyTokens } from '../../../styles';\n\nexport const buttonSizeVar = {\n S: 'S',\n M: 'M',\n} as const;\n\nexport type ButtonSizeVar = $Values<typeof buttonSizeVar>;\n\nexport const buttonStyleVar = {\n PRIMARY: 'PRIMARY',\n SECONDARY: 'SECONDARY',\n SOLID: 'SOLID',\n GHOST: 'GHOST',\n} as const;\n\nexport type ButtonStyleVar = $Values<typeof buttonStyleVar>;\n\n// MARK : interface는 객체 구조를 가지기 때문에, 컴파일 시점에 객체 구조가 명확하게 설정되어 있어야 합니다. 따라서 동적 타입을 명시할 때는 타입을 선언하고, 정적 타입을 선언할 때는 interface를 사용합니다.\nexport type ButtonOptionProps<T extends ElementType = 'button'> = Omit<\n ComponentPropsWithoutRef<T>,\n 'color' | 'disabled'\n> &\n SizeVariantProps<ButtonSizeVar> &\n StyleVariantProps<ButtonStyleVar> &\n DisableProps & {\n typography?: TypographyTokens;\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 } from 'react';\nimport { forwardRef } from 'react';\nimport { StyledIconButton } from './IconButton.styled';\nimport type { IconButtonProps, IconButtonComponent } from './IconButton.types';\n\nconst IconButton: IconButtonComponent = forwardRef(\n <T extends ElementType = 'button'>(\n { styleVar, sizeVar, disabled, as, children, ...rest }: IconButtonProps<T>,\n ref: ComponentPropsWithRef<T>['ref'],\n ) => {\n return (\n <StyledIconButton\n styleVar={styleVar}\n sizeVar={sizeVar}\n disabled={disabled}\n as={as}\n ref={ref}\n {...rest}\n data-shoplflow={'IconButton'}\n >\n {children}\n </StyledIconButton>\n );\n },\n);\n\nexport default IconButton;\n","import styled from '@emotion/styled';\nimport type { IconButtonOptionProps, IconButtonSizeVar, IconButtonStyleVar } from './IconButton.types';\nimport { borderRadiusTokens, colorTokens } from '../../../styles';\nimport { css } from '@emotion/react';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\n\nconst getWidthAndHeightFromSizeVar = (sizeVar?: IconButtonSizeVar) => {\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?: IconButtonStyleVar) => {\n switch (styleVar) {\n case 'SOLID':\n return css`\n border: 1px solid ${colorTokens.neutral200};\n &:hover {\n background-color: ${colorTokens.neutral100};\n }\n `;\n case 'GHOST':\n return css`\n border: 1px solid transparent;\n &:hover {\n background-color: ${colorTokens.neutral400_5};\n }\n `;\n default:\n return css`\n border: 1px solid ${colorTokens.neutral200};\n &:hover {\n background-color: ${colorTokens.neutral100};\n }\n `;\n }\n};\n\nexport const StyledIconButton = styled.button<IconButtonOptionProps>`\n display: flex;\n flex-shrink: 0;\n border-radius: ${borderRadiusTokens.borderRadius06};\n justify-content: center;\n align-items: center;\n background-color: ${colorTokens.neutral0};\n cursor: pointer;\n ${({ styleVar }) => getStyleByStyleVar(styleVar)};\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 IconSourceProps,\n SizeVariantProps,\n StyleVariantProps,\n} from '../../../utils/type/ComponentProps';\n\nexport const iconButtonSizeVar = {\n S: 'S',\n M: 'M',\n} as const;\n\nexport type IconButtonSizeVar = $Values<typeof iconButtonSizeVar>;\n\nexport const iconButtonStyleVar = {\n SOLID: 'SOLID',\n GHOST: 'GHOST',\n} as const;\n\nexport type IconButtonStyleVar = $Values<typeof iconButtonStyleVar>;\n\nexport type IconButtonOptionProps<T extends ElementType = 'button'> = Omit<\n ComponentPropsWithoutRef<T>,\n 'color' | 'disabled'\n> &\n DisableProps &\n SizeVariantProps<IconButtonSizeVar> &\n StyleVariantProps<IconButtonStyleVar> &\n IconSourceProps;\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 min-height: 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 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.X_SMALL:\n return '12px';\n case IconSizeVariants.SMALL:\n return '20px';\n case IconSizeVariants.MEDIUM:\n return '24px';\n case IconSizeVariants.LARGE:\n return '30px';\n case IconSizeVariants.X_LARGE:\n return '36px';\n default:\n return '24px';\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\n & > path {\n fill: ${({ color }) => color && colorTokens[color]};\n }\n`;\n","import type { $Values } from '@shoplflow/utils';\nimport type { ColorTokenProps, IconSourceProps, SizeVariantProps } from '../../utils/type/ComponentProps';\n\nexport const IconSizeVariants = {\n X_SMALL: 'X_SMALL',\n SMALL: 'SMALL',\n MEDIUM: 'MEDIUM',\n LARGE: 'LARGE',\n X_LARGE: 'X_LARGE',\n} as const;\n\nexport type IconSizeVariantsType = $Values<typeof IconSizeVariants>;\n\nexport interface IconProps extends IconOptionProps {}\nexport interface IconOptionProps extends SizeVariantProps<IconSizeVariantsType>, IconSourceProps, ColorTokenProps {}\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 { Icon } from '../../Icon';\nimport { InputWrapper } from '../common/input.styled';\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 className,\n ...rest\n },\n ref,\n ) => {\n const [text, setText] = useState('');\n const [isFocused, setIsFocused] = useState(false);\n const [type, setType] = useState<HTMLInputTypeAttribute | undefined>('text');\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 const slicedText = sliceText(event.target.value);\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) {\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) {\n const convertString = convertToString(value);\n const slicedText = sliceText(convertString);\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 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 <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={'neutral600'} />\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 </InputWrapper>\n );\n },\n);\n\nexport default Input;\n","import styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\n\nexport const StyledInput = styled.input`\n padding: 4px 0 4px 12px;\n background-color: transparent;\n width: 100%;\n border: none;\n box-sizing: border-box;\n &::placeholder {\n color: ${colorTokens.neutral350};\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';\nimport type { IconSource as ShoplIconSource } from '@shoplflow/shopl-assets';\nimport type { IconSource as HadaIconSource } 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] as HadaIconSource;\n const ShoplIcon = ShoplAssets[iconName] as ShoplIconSource;\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] as HadaIconSource;\n const ShoplIcon = ShoplAssets[iconName] as ShoplIconSource;\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}","import { useMemo } from 'react';\n\nexport type ReactRef<T> = React.RefCallback<T> | React.MutableRefObject<T>;\n\nexport function assignRef<T = any>(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 '${value}' to ref '${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 styled from '@emotion/styled';\nimport { colorTokens } from '../../../styles';\nimport { getDisabledStyle } from '../../../styles/utils/getDisabledStyle';\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 InputWrapper = styled.label<\n Status & {\n direction?: 'row' | 'column';\n }\n>`\n display: flex;\n align-items: center;\n width: 100%;\n flex-direction: ${({ direction }) => direction || 'row'};\n justify-content: space-between;\n min-height: 40px;\n margin: 1px;\n gap: 8px;\n box-shadow: 0 0 0 1px ${(props) => getBorderColorByStatus(props)};\n border-radius: 6px;\n background-color: ${colorTokens.neutral0};\n overflow: hidden;\n ${({ disabled }) => getDisabledStyle(disabled)};\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 = 100,\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 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 minHeight={minHeight}\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<{ minHeight?: number }>`\n padding: 8px 12px 0 12px;\n background-color: transparent;\n resize: none;\n width: 100%;\n height: ${({ minHeight }) => (minHeight ? `${minHeight}px` : '300px')};\n flex: 1;\n word-break: break-all;\n ${({ disabled }) => getDisabledStyle(disabled)};\n &::placeholder {\n color: ${colorTokens.neutral350};\n }\n`;\n","import React, { forwardRef } from 'react';\nimport * as StyledMinusBox from './MinusButton.styled';\nimport type { MinusBoxProps } from './MinusButton.types';\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\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 width: 32px;\n height: 32px;\n padding: 7px;\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"]}
package/dist/index.mjs CHANGED
@@ -336,6 +336,7 @@ var body2_500 = ".body2_500";
336
336
  var body2_400 = ".body2_400";
337
337
  var body3_400 = ".body3_400";
338
338
  var body3_500 = ".body3_500";
339
+ var caption_700 = ".caption_700";
339
340
  var caption_400 = ".caption_400";
340
341
  var typographyTokens = {
341
342
  heading1_700,
@@ -357,6 +358,7 @@ var typographyTokens = {
357
358
  body2_400,
358
359
  body3_400,
359
360
  body3_500,
361
+ caption_700,
360
362
  caption_400
361
363
  };
362
364
  var StyledStack = styled5.div`