@0610studio/zs-ui 0.18.0 → 0.19.0

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.
Files changed (164) hide show
  1. package/build/ZsUiModule.d.ts.map +1 -1
  2. package/build/ZsUiModule.js +0 -2
  3. package/build/ZsUiModule.js.map +1 -1
  4. package/build/assets/SvgExclamation.d.ts.map +1 -1
  5. package/build/assets/SvgExclamation.js.map +1 -1
  6. package/build/assets/SvgTooltipTail.d.ts +7 -0
  7. package/build/assets/SvgTooltipTail.d.ts.map +1 -0
  8. package/build/assets/SvgTooltipTail.js +7 -0
  9. package/build/assets/SvgTooltipTail.js.map +1 -0
  10. package/build/context/OverlayContext.d.ts.map +1 -1
  11. package/build/context/OverlayContext.js +11 -14
  12. package/build/context/OverlayContext.js.map +1 -1
  13. package/build/context/ThemeContext.d.ts +9 -0
  14. package/build/context/ThemeContext.d.ts.map +1 -1
  15. package/build/context/ThemeContext.js +24 -15
  16. package/build/context/ThemeContext.js.map +1 -1
  17. package/build/index.d.ts +16 -3
  18. package/build/index.d.ts.map +1 -1
  19. package/build/index.js +7 -7
  20. package/build/index.js.map +1 -1
  21. package/build/model/globalOverlay.d.ts +0 -8
  22. package/build/model/globalOverlay.d.ts.map +1 -1
  23. package/build/model/globalOverlay.js +0 -9
  24. package/build/model/globalOverlay.js.map +1 -1
  25. package/build/model/types.d.ts +2 -1
  26. package/build/model/types.d.ts.map +1 -1
  27. package/build/model/types.js.map +1 -1
  28. package/build/model/useFoldingState.d.ts.map +1 -1
  29. package/build/model/useFoldingState.js +51 -32
  30. package/build/model/useFoldingState.js.map +1 -1
  31. package/build/model/useKeyboard.d.ts.map +1 -1
  32. package/build/model/useKeyboard.js +8 -4
  33. package/build/model/useKeyboard.js.map +1 -1
  34. package/build/model/utils.d.ts +1 -1
  35. package/build/model/utils.d.ts.map +1 -1
  36. package/build/model/utils.js +2 -1
  37. package/build/model/utils.js.map +1 -1
  38. package/build/overlay/AlertOverlay/index.d.ts +1 -2
  39. package/build/overlay/AlertOverlay/index.d.ts.map +1 -1
  40. package/build/overlay/AlertOverlay/index.js +13 -11
  41. package/build/overlay/AlertOverlay/index.js.map +1 -1
  42. package/build/overlay/BottomSheetOverlay/index.d.ts.map +1 -1
  43. package/build/overlay/BottomSheetOverlay/index.js +22 -11
  44. package/build/overlay/BottomSheetOverlay/index.js.map +1 -1
  45. package/build/overlay/LoadingNotify/index.d.ts +2 -2
  46. package/build/overlay/LoadingNotify/index.d.ts.map +1 -1
  47. package/build/overlay/LoadingNotify/index.js +2 -2
  48. package/build/overlay/LoadingNotify/index.js.map +1 -1
  49. package/build/overlay/Modality/index.d.ts.map +1 -1
  50. package/build/overlay/Modality/index.js +6 -12
  51. package/build/overlay/Modality/index.js.map +1 -1
  52. package/build/overlay/PopOver/PopOverMenu.d.ts.map +1 -1
  53. package/build/overlay/PopOver/PopOverMenu.js +7 -8
  54. package/build/overlay/PopOver/PopOverMenu.js.map +1 -1
  55. package/build/overlay/SnackbarNotify/index.d.ts +3 -3
  56. package/build/overlay/SnackbarNotify/index.d.ts.map +1 -1
  57. package/build/overlay/SnackbarNotify/index.js +5 -4
  58. package/build/overlay/SnackbarNotify/index.js.map +1 -1
  59. package/build/overlay/SnackbarNotify/ui/SnackbarItem.d.ts +4 -4
  60. package/build/overlay/SnackbarNotify/ui/SnackbarItem.d.ts.map +1 -1
  61. package/build/overlay/SnackbarNotify/ui/SnackbarItem.js +9 -9
  62. package/build/overlay/SnackbarNotify/ui/SnackbarItem.js.map +1 -1
  63. package/build/overlay/ZSPortal/index.d.ts.map +1 -1
  64. package/build/overlay/ZSPortal/index.js +15 -4
  65. package/build/overlay/ZSPortal/index.js.map +1 -1
  66. package/build/overlay/ui/ModalBackground.js.map +1 -1
  67. package/build/theme/elevation.d.ts +94 -10
  68. package/build/theme/elevation.d.ts.map +1 -1
  69. package/build/theme/elevation.js +39 -35
  70. package/build/theme/elevation.js.map +1 -1
  71. package/build/theme/intentColors.d.ts +9 -0
  72. package/build/theme/intentColors.d.ts.map +1 -0
  73. package/build/theme/intentColors.js +30 -0
  74. package/build/theme/intentColors.js.map +1 -0
  75. package/build/theme/palette.d.ts +1 -5
  76. package/build/theme/palette.d.ts.map +1 -1
  77. package/build/theme/palette.js +3 -12
  78. package/build/theme/palette.js.map +1 -1
  79. package/build/theme/resolveColor.d.ts +4 -0
  80. package/build/theme/resolveColor.d.ts.map +1 -0
  81. package/build/theme/resolveColor.js +29 -0
  82. package/build/theme/resolveColor.js.map +1 -0
  83. package/build/theme/tokens.d.ts +35 -0
  84. package/build/theme/tokens.d.ts.map +1 -0
  85. package/build/theme/tokens.js +35 -0
  86. package/build/theme/tokens.js.map +1 -0
  87. package/build/theme/typography.d.ts.map +1 -1
  88. package/build/theme/typography.js +36 -72
  89. package/build/theme/typography.js.map +1 -1
  90. package/build/ui/ZSBlockButton/index.d.ts +4 -2
  91. package/build/ui/ZSBlockButton/index.d.ts.map +1 -1
  92. package/build/ui/ZSBlockButton/index.js +17 -80
  93. package/build/ui/ZSBlockButton/index.js.map +1 -1
  94. package/build/ui/ZSBorderBeam/index.d.ts +48 -0
  95. package/build/ui/ZSBorderBeam/index.d.ts.map +1 -0
  96. package/build/ui/ZSBorderBeam/index.js +135 -0
  97. package/build/ui/ZSBorderBeam/index.js.map +1 -0
  98. package/build/ui/ZSCheckBox/index.d.ts +18 -0
  99. package/build/ui/ZSCheckBox/index.d.ts.map +1 -0
  100. package/build/ui/ZSCheckBox/index.js +60 -0
  101. package/build/ui/ZSCheckBox/index.js.map +1 -0
  102. package/build/ui/ZSChip/index.d.ts +28 -0
  103. package/build/ui/ZSChip/index.d.ts.map +1 -0
  104. package/build/ui/ZSChip/index.js +76 -0
  105. package/build/ui/ZSChip/index.js.map +1 -0
  106. package/build/ui/ZSContainer/index.d.ts +19 -0
  107. package/build/ui/ZSContainer/index.d.ts.map +1 -1
  108. package/build/ui/ZSContainer/index.js +29 -15
  109. package/build/ui/ZSContainer/index.js.map +1 -1
  110. package/build/ui/ZSPressable/index.d.ts.map +1 -1
  111. package/build/ui/ZSPressable/index.js +9 -6
  112. package/build/ui/ZSPressable/index.js.map +1 -1
  113. package/build/ui/ZSRadioGroup/index.d.ts +4 -4
  114. package/build/ui/ZSRadioGroup/index.d.ts.map +1 -1
  115. package/build/ui/ZSRadioGroup/index.js +72 -52
  116. package/build/ui/ZSRadioGroup/index.js.map +1 -1
  117. package/build/ui/ZSSegmented/index.d.ts +26 -0
  118. package/build/ui/ZSSegmented/index.d.ts.map +1 -0
  119. package/build/ui/ZSSegmented/index.js +124 -0
  120. package/build/ui/ZSSegmented/index.js.map +1 -0
  121. package/build/ui/ZSSkeleton/SkiaShimmer.d.ts +18 -0
  122. package/build/ui/ZSSkeleton/SkiaShimmer.d.ts.map +1 -0
  123. package/build/ui/ZSSkeleton/SkiaShimmer.js +73 -0
  124. package/build/ui/ZSSkeleton/SkiaShimmer.js.map +1 -0
  125. package/build/ui/ZSSkeleton/index.d.ts +9 -3
  126. package/build/ui/ZSSkeleton/index.d.ts.map +1 -1
  127. package/build/ui/ZSSkeleton/index.js +13 -44
  128. package/build/ui/ZSSkeleton/index.js.map +1 -1
  129. package/build/ui/ZSSkeletonBox/index.d.ts +10 -3
  130. package/build/ui/ZSSkeletonBox/index.d.ts.map +1 -1
  131. package/build/ui/ZSSkeletonBox/index.js +9 -47
  132. package/build/ui/ZSSkeletonBox/index.js.map +1 -1
  133. package/build/ui/ZSSwitch/index.d.ts +4 -2
  134. package/build/ui/ZSSwitch/index.d.ts.map +1 -1
  135. package/build/ui/ZSSwitch/index.js +8 -6
  136. package/build/ui/ZSSwitch/index.js.map +1 -1
  137. package/build/ui/ZSText/index.d.ts +3 -2
  138. package/build/ui/ZSText/index.d.ts.map +1 -1
  139. package/build/ui/ZSText/index.js +5 -16
  140. package/build/ui/ZSText/index.js.map +1 -1
  141. package/build/ui/ZSTextField/index.d.ts.map +1 -1
  142. package/build/ui/ZSTextField/index.js +57 -40
  143. package/build/ui/ZSTextField/index.js.map +1 -1
  144. package/build/ui/ZSTextField/ui/ButtonClose.d.ts.map +1 -1
  145. package/build/ui/ZSTextField/ui/ButtonClose.js +4 -1
  146. package/build/ui/ZSTextField/ui/ButtonClose.js.map +1 -1
  147. package/build/ui/ZSTooltip/index.d.ts +38 -0
  148. package/build/ui/ZSTooltip/index.d.ts.map +1 -0
  149. package/build/ui/ZSTooltip/index.js +99 -0
  150. package/build/ui/ZSTooltip/index.js.map +1 -0
  151. package/build/ui/ZSView/index.d.ts +3 -2
  152. package/build/ui/ZSView/index.d.ts.map +1 -1
  153. package/build/ui/ZSView/index.js +7 -8
  154. package/build/ui/ZSView/index.js.map +1 -1
  155. package/build/ui/atoms/AnimatedWrapper.d.ts.map +1 -1
  156. package/build/ui/atoms/AnimatedWrapper.js +33 -40
  157. package/build/ui/atoms/AnimatedWrapper.js.map +1 -1
  158. package/build/ui/atoms/TextAtom.d.ts +1 -2
  159. package/build/ui/atoms/TextAtom.d.ts.map +1 -1
  160. package/build/ui/atoms/TextAtom.js.map +1 -1
  161. package/build/ui/atoms/ViewAtom.d.ts +1 -2
  162. package/build/ui/atoms/ViewAtom.d.ts.map +1 -1
  163. package/build/ui/atoms/ViewAtom.js.map +1 -1
  164. package/package.json +6 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/overlay/ZSPortal/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { createContext, useContext, useState, useCallback, ReactNode, useEffect } from 'react';\nimport Animated, { FadeInDown, FadeOutDown } from 'react-native-reanimated';\nimport { Z_INDEX_VALUE } from '../../model/utils';\n\ninterface PortalContextType {\n registerPortal: (id: string, element: ReactNode) => void;\n unregisterPortal: (id: string) => void;\n}\n\nconst PortalContext = createContext<PortalContextType | null>(null);\n\ninterface PortalProviderProps {\n children: ReactNode;\n}\n\nexport const PortalProvider: React.FC<PortalProviderProps> = ({ children }) => {\n const [portals, setPortals] = useState<Map<string, ReactNode>>(new Map());\n\n const registerPortal = useCallback((id: string, element: ReactNode) => {\n setPortals(prev => {\n // 동일한 요소가 이미 등록되어 있다면 업데이트하지 않음\n if (prev.get(id) === element) {\n return prev;\n }\n const newMap = new Map(prev);\n newMap.set(id, element);\n return newMap;\n });\n }, []);\n\n const unregisterPortal = useCallback((id: string) => {\n setPortals(prev => {\n // 해당 ID가 존재하지 않으면 상태를 변경하지 않음\n if (!prev.has(id)) {\n return prev;\n }\n const newMap = new Map(prev);\n newMap.delete(id);\n return newMap;\n });\n }, []);\n\n return (\n <PortalContext.Provider value={{ registerPortal, unregisterPortal }}>\n {children}\n {Array.from(portals.entries()).map(([id, element]) => (\n <Animated.View entering={FadeInDown} exiting={FadeOutDown} key={id} style={{ position: 'absolute', top: 0, left: 0, right: 0, bottom: 0, pointerEvents: 'box-none', zIndex: Z_INDEX_VALUE.ABOVE_KEYBOARD }}>\n {element}\n </Animated.View>\n ))}\n </PortalContext.Provider>\n );\n};\n\n// ------------------------------------------------------------------------------------------------\n\ninterface PortalProps {\n children: ReactNode;\n isFocused?: boolean;\n}\n\nexport const ZSPortal: React.FC<PortalProps> = ({ children, isFocused = true }) => {\n const context = useContext(PortalContext);\n const [portalId] = useState(() => `portal_${Date.now()}_${Math.random()}`);\n\n useEffect(() => {\n if (!context) return;\n if (isFocused) {\n context.registerPortal(portalId, children);\n } else {\n context.unregisterPortal(portalId);\n }\n }, [isFocused, children]);\n\n useEffect(() => {\n return () => {\n if (!context) return;\n context.unregisterPortal(portalId);\n };\n }, []);\n\n return null;\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/overlay/ZSPortal/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { createContext, useContext, useState, useCallback, useMemo, ReactNode, useEffect } from 'react';\nimport { StyleSheet } from 'react-native';\nimport Animated, { FadeInDown, FadeOutDown } from 'react-native-reanimated';\nimport { Z_INDEX_VALUE } from '../../model/utils';\n\ninterface PortalContextType {\n registerPortal: (id: string, element: ReactNode) => void;\n unregisterPortal: (id: string) => void;\n}\n\nconst PortalContext = createContext<PortalContextType | null>(null);\n\ninterface PortalProviderProps {\n children: ReactNode;\n}\n\nexport const PortalProvider: React.FC<PortalProviderProps> = ({ children }) => {\n const [portals, setPortals] = useState<Map<string, ReactNode>>(new Map());\n\n const registerPortal = useCallback((id: string, element: ReactNode) => {\n setPortals(prev => {\n if (prev.get(id) === element) {\n return prev;\n }\n const newMap = new Map(prev);\n newMap.set(id, element);\n return newMap;\n });\n }, []);\n\n const unregisterPortal = useCallback((id: string) => {\n setPortals(prev => {\n if (!prev.has(id)) {\n return prev;\n }\n const newMap = new Map(prev);\n newMap.delete(id);\n return newMap;\n });\n }, []);\n\n const contextValue = useMemo(\n () => ({ registerPortal, unregisterPortal }),\n [registerPortal, unregisterPortal]\n );\n\n return (\n <PortalContext.Provider value={contextValue}>\n {children}\n {Array.from(portals.entries()).map(([id, element]) => (\n <Animated.View entering={FadeInDown} exiting={FadeOutDown} key={id} style={styles.portalLayer}>\n {element}\n </Animated.View>\n ))}\n </PortalContext.Provider>\n );\n};\n\nconst styles = StyleSheet.create({\n portalLayer: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n pointerEvents: 'box-none',\n zIndex: Z_INDEX_VALUE.ABOVE_KEYBOARD,\n },\n});\n\ninterface PortalProps {\n children: ReactNode;\n isFocused?: boolean;\n}\n\nexport const ZSPortal: React.FC<PortalProps> = ({ children, isFocused = true }) => {\n const context = useContext(PortalContext);\n const [portalId] = useState(() => `portal_${Date.now()}_${Math.random()}`);\n\n useEffect(() => {\n if (!context) return;\n if (isFocused) {\n context.registerPortal(portalId, children);\n } else {\n context.unregisterPortal(portalId);\n }\n }, [isFocused, children]);\n\n useEffect(() => {\n return () => {\n if (!context) return;\n context.unregisterPortal(portalId);\n };\n }, []);\n\n return null;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ModalBackground.js","sourceRoot":"","sources":["../../../src/overlay/ui/ModalBackground.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAUlD,SAAS,eAAe,CAAC,EAAE,YAAY,EAAE,QAAQ,GAAG,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,EAAwB;IACrI,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEzE,OAAO,CACL,MAAC,QAAQ,CAAC,IAAI,IACZ,KAAK,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,KAAK,QAAQ,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,QAAQ,KAAK,MAAM,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,QAAQ,KAAK,OAAO,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAC7Q,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAC7B,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,aAE7B,KAAC,SAAS,IACR,KAAK,EAAE,MAAM,CAAC,UAAU,EACxB,OAAO,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAErB,EAEX,QAAQ,IACK,CACjB,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,YAAoB,EAAE,EAAE,CAC5C,UAAU,CAAC,MAAM,CAAC;IAChB,OAAO,EAAE;QACP,eAAe,EAAE,YAAY;QAC7B,GAAG,UAAU,CAAC,YAAY;KAC3B;IACD,UAAU,EAAE;QACV,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,GAAG,UAAU,CAAC,YAAY;KAC3B;CACF,CAAC,CAAC;AAEL,eAAe,eAAe,CAAC","sourcesContent":["import React, { useMemo } from 'react';\nimport { Pressable, StyleSheet } from 'react-native';\nimport Animated, { FadeIn, FadeOut } from 'react-native-reanimated';\nimport { Z_INDEX_VALUE } from '../../model/utils';\n\ninterface ModalBackgroundProps {\n zIndex?: number;\n modalBgColor: string;\n position?: 'center' | 'left' | 'right' | 'pop'; // TODO: 'left' | 'right' 미구현\n children: React.ReactNode;\n onPress?: () => void;\n}\n\nfunction ModalBackground({ modalBgColor, position = 'center', children, onPress, zIndex = Z_INDEX_VALUE.DEFAULT }: ModalBackgroundProps) {\n const styles = useMemo(() => createStyles(modalBgColor), [modalBgColor]);\n\n return (\n <Animated.View\n style={[styles.modalBg, { zIndex }, position === 'center' && { justifyContent: 'center', alignItems: 'center' }, position === 'left' && { justifyContent: 'flex-start', alignItems: 'center' }, position === 'right' && { justifyContent: 'flex-end', alignItems: 'center' }]}\n entering={FadeIn.duration(50)}\n exiting={FadeOut.duration(50)}\n >\n <Pressable\n style={styles.fullScreen}\n onPress={onPress ?? (() => { })}\n >\n </Pressable>\n\n {children}\n </Animated.View>\n );\n}\n\nconst createStyles = (modalBgColor: string) =>\n StyleSheet.create({\n modalBg: {\n backgroundColor: modalBgColor,\n ...StyleSheet.absoluteFill,\n },\n fullScreen: {\n width: '100%',\n height: '100%',\n ...StyleSheet.absoluteFill,\n },\n });\n\nexport default ModalBackground;\n"]}
1
+ {"version":3,"file":"ModalBackground.js","sourceRoot":"","sources":["../../../src/overlay/ui/ModalBackground.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAUlD,SAAS,eAAe,CAAC,EAAE,YAAY,EAAE,QAAQ,GAAG,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,EAAwB;IACrI,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEzE,OAAO,CACL,MAAC,QAAQ,CAAC,IAAI,IACZ,KAAK,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,KAAK,QAAQ,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,QAAQ,KAAK,MAAM,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,QAAQ,KAAK,OAAO,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAC7Q,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAC7B,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,aAE7B,KAAC,SAAS,IACR,KAAK,EAAE,MAAM,CAAC,UAAU,EACxB,OAAO,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAErB,EAEX,QAAQ,IACK,CACjB,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,YAAoB,EAAE,EAAE,CAC5C,UAAU,CAAC,MAAM,CAAC;IAChB,OAAO,EAAE;QACP,eAAe,EAAE,YAAY;QAC7B,GAAG,UAAU,CAAC,YAAY;KAC3B;IACD,UAAU,EAAE;QACV,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,GAAG,UAAU,CAAC,YAAY;KAC3B;CACF,CAAC,CAAC;AAEL,eAAe,eAAe,CAAC","sourcesContent":["import React, { useMemo } from 'react';\nimport { Pressable, StyleSheet } from 'react-native';\nimport Animated, { FadeIn, FadeOut } from 'react-native-reanimated';\nimport { Z_INDEX_VALUE } from '../../model/utils';\n\ninterface ModalBackgroundProps {\n zIndex?: number;\n modalBgColor: string;\n position?: 'center' | 'left' | 'right' | 'pop';\n children: React.ReactNode;\n onPress?: () => void;\n}\n\nfunction ModalBackground({ modalBgColor, position = 'center', children, onPress, zIndex = Z_INDEX_VALUE.DEFAULT }: ModalBackgroundProps) {\n const styles = useMemo(() => createStyles(modalBgColor), [modalBgColor]);\n\n return (\n <Animated.View\n style={[styles.modalBg, { zIndex }, position === 'center' && { justifyContent: 'center', alignItems: 'center' }, position === 'left' && { justifyContent: 'flex-start', alignItems: 'center' }, position === 'right' && { justifyContent: 'flex-end', alignItems: 'center' }]}\n entering={FadeIn.duration(50)}\n exiting={FadeOut.duration(50)}\n >\n <Pressable\n style={styles.fullScreen}\n onPress={onPress ?? (() => { })}\n >\n </Pressable>\n\n {children}\n </Animated.View>\n );\n}\n\nconst createStyles = (modalBgColor: string) =>\n StyleSheet.create({\n modalBg: {\n backgroundColor: modalBgColor,\n ...StyleSheet.absoluteFill,\n },\n fullScreen: {\n width: '100%',\n height: '100%',\n ...StyleSheet.absoluteFill,\n },\n });\n\nexport default ModalBackground;\n"]}
@@ -1,18 +1,102 @@
1
- import { ShadowLevel, ShadowStyle } from "./types";
1
+ import type { BoxShadowValue } from "react-native";
2
+ import { ShadowLevel } from "./types";
2
3
  import { Theme } from "./types";
3
- export declare const IOS_SHADOW: readonly ShadowStyle[];
4
+ export declare const IOS_SHADOW: readonly [{
5
+ readonly shadowOffset: {
6
+ readonly width: 0;
7
+ readonly height: 0;
8
+ };
9
+ readonly shadowOpacity: 0;
10
+ readonly shadowRadius: 0;
11
+ }, {
12
+ readonly shadowOffset: {
13
+ readonly width: 0;
14
+ readonly height: 1;
15
+ };
16
+ readonly shadowOpacity: 0.2;
17
+ readonly shadowRadius: 1;
18
+ }, {
19
+ readonly shadowOffset: {
20
+ readonly width: 0;
21
+ readonly height: 1;
22
+ };
23
+ readonly shadowOpacity: 0.2;
24
+ readonly shadowRadius: 1.41;
25
+ }, {
26
+ readonly shadowOffset: {
27
+ readonly width: 0;
28
+ readonly height: 1;
29
+ };
30
+ readonly shadowOpacity: 0.2;
31
+ readonly shadowRadius: 2.22;
32
+ }, {
33
+ readonly shadowOffset: {
34
+ readonly width: 0;
35
+ readonly height: 2;
36
+ };
37
+ readonly shadowOpacity: 0.2;
38
+ readonly shadowRadius: 2.62;
39
+ }, {
40
+ readonly shadowOffset: {
41
+ readonly width: 0;
42
+ readonly height: 2;
43
+ };
44
+ readonly shadowOpacity: 0.2;
45
+ readonly shadowRadius: 3.84;
46
+ }, {
47
+ readonly shadowOffset: {
48
+ readonly width: 0;
49
+ readonly height: 3;
50
+ };
51
+ readonly shadowOpacity: 0.2;
52
+ readonly shadowRadius: 4.65;
53
+ }, {
54
+ readonly shadowOffset: {
55
+ readonly width: 0;
56
+ readonly height: 4;
57
+ };
58
+ readonly shadowOpacity: 0.25;
59
+ readonly shadowRadius: 4.65;
60
+ }, {
61
+ readonly shadowOffset: {
62
+ readonly width: 0;
63
+ readonly height: 6;
64
+ };
65
+ readonly shadowOpacity: 0.25;
66
+ readonly shadowRadius: 4.65;
67
+ }, {
68
+ readonly shadowOffset: {
69
+ readonly width: 0;
70
+ readonly height: 8;
71
+ };
72
+ readonly shadowOpacity: 0.25;
73
+ readonly shadowRadius: 5.8;
74
+ }, {
75
+ readonly shadowOffset: {
76
+ readonly width: 0;
77
+ readonly height: 10;
78
+ };
79
+ readonly shadowOpacity: 0.25;
80
+ readonly shadowRadius: 6.5;
81
+ }];
4
82
  export interface ElevationProps {
5
- shadowColor?: string;
6
- shadowOffset?: {
7
- width: number;
8
- height: number;
9
- };
10
- shadowOpacity?: number;
11
- shadowRadius?: number;
12
- elevation?: number;
83
+ boxShadow?: BoxShadowValue[];
13
84
  }
14
85
  export type ElevationStyles = {
15
86
  [key in ShadowLevel]: ElevationProps;
16
87
  };
88
+ export interface ColorChannels {
89
+ r: number;
90
+ g: number;
91
+ b: number;
92
+ a: number;
93
+ }
94
+ /** `rgb()`/`rgba()` 색상 문자열에서 r·g·b·a 채널을 추출한다. 파싱 실패 시 불투명 검정으로 폴백. */
95
+ export declare function parseColorChannels(color: string): ColorChannels;
96
+ /**
97
+ * IOS_SHADOW 의 레벨별 오프셋·블러와 elevationShadow 색상을 합쳐 cross-platform boxShadow 를 만든다.
98
+ * 기존 iOS 그림자와 동일하게 최종 불투명도는 색상 alpha × shadowOpacity 로 계산한다.
99
+ */
100
+ export declare function createBoxShadow(level: ShadowLevel, shadowColor: string): BoxShadowValue[];
17
101
  export default function elevation(palette: Theme): ElevationStyles;
18
102
  //# sourceMappingURL=elevation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"elevation.d.ts","sourceRoot":"","sources":["../../src/theme/elevation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,eAAO,MAAM,UAAU,EAAE,SAAS,WAAW,EAYnC,CAAC;AAEX,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,eAAe,GAAG;KAC3B,GAAG,IAAI,WAAW,GAAG,cAAc;CACrC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,OAAO,EAAE,KAAK,GAAG,eAAe,CAqCjE"}
1
+ {"version":3,"file":"elevation.d.ts","sourceRoot":"","sources":["../../src/theme/elevation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,WAAW,EAAe,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYoB,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,MAAM,MAAM,eAAe,GAAG;KAC3B,GAAG,IAAI,WAAW,GAAG,cAAc;CACrC,CAAC;AAIF,MAAM,WAAW,aAAa;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAY/D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE,CAkBzF;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,OAAO,EAAE,KAAK,GAAG,eAAe,CAKjE"}
@@ -1,4 +1,3 @@
1
- import { Platform } from "react-native";
2
1
  export const IOS_SHADOW = [
3
2
  { shadowOffset: { width: 0, height: 0 }, shadowOpacity: 0, shadowRadius: 0 },
4
3
  { shadowOffset: { width: 0, height: 1 }, shadowOpacity: 0.2, shadowRadius: 1.0 },
@@ -12,41 +11,46 @@ export const IOS_SHADOW = [
12
11
  { shadowOffset: { width: 0, height: 8 }, shadowOpacity: 0.25, shadowRadius: 5.8 },
13
12
  { shadowOffset: { width: 0, height: 10 }, shadowOpacity: 0.25, shadowRadius: 6.5 },
14
13
  ];
15
- export default function elevation(palette) {
16
- // iOS와 웹에서는 shadowOffset/shadowOpacity/shadowRadius를 사용 (웹은 CSS box-shadow로 변환됨)
17
- // Android에서는 elevation 속성을 사용
18
- const useShadowStyle = Platform.OS === 'ios' || Platform.OS === 'web';
14
+ const SHADOW_LEVELS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
15
+ /** `rgb()`/`rgba()` 색상 문자열에서 r·g·b·a 채널을 추출한다. 파싱 실패 시 불투명 검정으로 폴백. */
16
+ export function parseColorChannels(color) {
17
+ const group = color.match(/rgba?\(([^)]+)\)/i)?.[1];
18
+ if (!group) {
19
+ return { r: 0, g: 0, b: 0, a: 1 };
20
+ }
21
+ const [r, g, b, a] = group.split(',').map((part) => parseFloat(part.trim()));
19
22
  return {
20
- 0: useShadowStyle
21
- ? { ...IOS_SHADOW[0], shadowColor: palette.elevationShadow[0] }
22
- : { elevation: 0, shadowColor: palette.elevationShadow[0] },
23
- 1: useShadowStyle
24
- ? { ...IOS_SHADOW[1], shadowColor: palette.elevationShadow[1] }
25
- : { elevation: 1, shadowColor: palette.elevationShadow[1] },
26
- 2: useShadowStyle
27
- ? { ...IOS_SHADOW[2], shadowColor: palette.elevationShadow[2] }
28
- : { elevation: 2, shadowColor: palette.elevationShadow[2] },
29
- 3: useShadowStyle
30
- ? { ...IOS_SHADOW[3], shadowColor: palette.elevationShadow[3] }
31
- : { elevation: 3, shadowColor: palette.elevationShadow[3] },
32
- 4: useShadowStyle
33
- ? { ...IOS_SHADOW[4], shadowColor: palette.elevationShadow[4] }
34
- : { elevation: 4, shadowColor: palette.elevationShadow[4] },
35
- 5: useShadowStyle
36
- ? { ...IOS_SHADOW[5], shadowColor: palette.elevationShadow[5] }
37
- : { elevation: 5, shadowColor: palette.elevationShadow[5] },
38
- 6: useShadowStyle
39
- ? { ...IOS_SHADOW[6], shadowColor: palette.elevationShadow[6] }
40
- : { elevation: 6, shadowColor: palette.elevationShadow[6] },
41
- 7: useShadowStyle
42
- ? { ...IOS_SHADOW[7], shadowColor: palette.elevationShadow[7] }
43
- : { elevation: 7, shadowColor: palette.elevationShadow[7] },
44
- 8: useShadowStyle
45
- ? { ...IOS_SHADOW[8], shadowColor: palette.elevationShadow[8] }
46
- : { elevation: 8, shadowColor: palette.elevationShadow[8] },
47
- 9: useShadowStyle
48
- ? { ...IOS_SHADOW[9], shadowColor: palette.elevationShadow[9] }
49
- : { elevation: 9, shadowColor: palette.elevationShadow[9] },
23
+ r: r ?? 0,
24
+ g: g ?? 0,
25
+ b: b ?? 0,
26
+ a: a === undefined || Number.isNaN(a) ? 1 : a,
50
27
  };
51
28
  }
29
+ /**
30
+ * IOS_SHADOW 의 레벨별 오프셋·블러와 elevationShadow 색상을 합쳐 cross-platform boxShadow 를 만든다.
31
+ * 기존 iOS 그림자와 동일하게 최종 불투명도는 색상 alpha × shadowOpacity 로 계산한다.
32
+ */
33
+ export function createBoxShadow(level, shadowColor) {
34
+ const shadow = IOS_SHADOW[level];
35
+ const { r, g, b, a } = parseColorChannels(shadowColor);
36
+ const alpha = a * shadow.shadowOpacity;
37
+ if (alpha <= 0) {
38
+ return [];
39
+ }
40
+ return [
41
+ {
42
+ offsetX: shadow.shadowOffset.width,
43
+ offsetY: shadow.shadowOffset.height,
44
+ blurRadius: shadow.shadowRadius,
45
+ spreadDistance: 0,
46
+ color: `rgba(${r}, ${g}, ${b}, ${alpha})`,
47
+ },
48
+ ];
49
+ }
50
+ export default function elevation(palette) {
51
+ return SHADOW_LEVELS.reduce((styles, level) => {
52
+ styles[level] = { boxShadow: createBoxShadow(level, palette.elevationShadow[level] ?? '') };
53
+ return styles;
54
+ }, {});
55
+ }
52
56
  //# sourceMappingURL=elevation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"elevation.js","sourceRoot":"","sources":["../../src/theme/elevation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIxC,MAAM,CAAC,MAAM,UAAU,GAA2B;IAChD,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE;IAC5E,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;IAChF,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE;IACjF,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE;IACjF,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE;IACjF,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE;IACjF,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE;IACjF,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;IAClF,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;IAClF,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE;IACjF,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE;CAC1E,CAAC;AAcX,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,OAAc;IAC9C,iFAAiF;IACjF,8BAA8B;IAC9B,MAAM,cAAc,GAAG,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC;IAEtE,OAAO;QACL,CAAC,EAAE,cAAc;YACf,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;YAC/D,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QAC7D,CAAC,EAAE,cAAc;YACf,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;YAC/D,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QAC7D,CAAC,EAAE,cAAc;YACf,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;YAC/D,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QAC7D,CAAC,EAAE,cAAc;YACf,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;YAC/D,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QAC7D,CAAC,EAAE,cAAc;YACf,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;YAC/D,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QAC7D,CAAC,EAAE,cAAc;YACf,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;YAC/D,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QAC7D,CAAC,EAAE,cAAc;YACf,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;YAC/D,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QAC7D,CAAC,EAAE,cAAc;YACf,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;YAC/D,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QAC7D,CAAC,EAAE,cAAc;YACf,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;YAC/D,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QAC7D,CAAC,EAAE,cAAc;YACf,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;YAC/D,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;KAC9D,CAAC;AACJ,CAAC","sourcesContent":["import { Platform } from \"react-native\";\nimport { ShadowLevel, ShadowStyle } from \"./types\";\nimport { Theme } from \"./types\";\n\nexport const IOS_SHADOW: readonly ShadowStyle[] = [\n { shadowOffset: { width: 0, height: 0 }, shadowOpacity: 0, shadowRadius: 0 },\n { shadowOffset: { width: 0, height: 1 }, shadowOpacity: 0.2, shadowRadius: 1.0 },\n { shadowOffset: { width: 0, height: 1 }, shadowOpacity: 0.2, shadowRadius: 1.41 },\n { shadowOffset: { width: 0, height: 1 }, shadowOpacity: 0.2, shadowRadius: 2.22 },\n { shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.2, shadowRadius: 2.62 },\n { shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.2, shadowRadius: 3.84 },\n { shadowOffset: { width: 0, height: 3 }, shadowOpacity: 0.2, shadowRadius: 4.65 },\n { shadowOffset: { width: 0, height: 4 }, shadowOpacity: 0.25, shadowRadius: 4.65 },\n { shadowOffset: { width: 0, height: 6 }, shadowOpacity: 0.25, shadowRadius: 4.65 },\n { shadowOffset: { width: 0, height: 8 }, shadowOpacity: 0.25, shadowRadius: 5.8 },\n { shadowOffset: { width: 0, height: 10 }, shadowOpacity: 0.25, shadowRadius: 6.5 },\n] as const;\n\nexport interface ElevationProps {\n shadowColor?: string;\n shadowOffset?: { width: number; height: number };\n shadowOpacity?: number;\n shadowRadius?: number;\n elevation?: number;\n}\n\nexport type ElevationStyles = {\n [key in ShadowLevel]: ElevationProps;\n};\n\nexport default function elevation(palette: Theme): ElevationStyles {\n // iOS와 웹에서는 shadowOffset/shadowOpacity/shadowRadius를 사용 (웹은 CSS box-shadow로 변환됨)\n // Android에서는 elevation 속성을 사용\n const useShadowStyle = Platform.OS === 'ios' || Platform.OS === 'web';\n\n return {\n 0: useShadowStyle\n ? { ...IOS_SHADOW[0], shadowColor: palette.elevationShadow[0] }\n : { elevation: 0, shadowColor: palette.elevationShadow[0] },\n 1: useShadowStyle\n ? { ...IOS_SHADOW[1], shadowColor: palette.elevationShadow[1] }\n : { elevation: 1, shadowColor: palette.elevationShadow[1] },\n 2: useShadowStyle\n ? { ...IOS_SHADOW[2], shadowColor: palette.elevationShadow[2] }\n : { elevation: 2, shadowColor: palette.elevationShadow[2] },\n 3: useShadowStyle\n ? { ...IOS_SHADOW[3], shadowColor: palette.elevationShadow[3] }\n : { elevation: 3, shadowColor: palette.elevationShadow[3] },\n 4: useShadowStyle\n ? { ...IOS_SHADOW[4], shadowColor: palette.elevationShadow[4] }\n : { elevation: 4, shadowColor: palette.elevationShadow[4] },\n 5: useShadowStyle\n ? { ...IOS_SHADOW[5], shadowColor: palette.elevationShadow[5] }\n : { elevation: 5, shadowColor: palette.elevationShadow[5] },\n 6: useShadowStyle\n ? { ...IOS_SHADOW[6], shadowColor: palette.elevationShadow[6] }\n : { elevation: 6, shadowColor: palette.elevationShadow[6] },\n 7: useShadowStyle\n ? { ...IOS_SHADOW[7], shadowColor: palette.elevationShadow[7] }\n : { elevation: 7, shadowColor: palette.elevationShadow[7] },\n 8: useShadowStyle\n ? { ...IOS_SHADOW[8], shadowColor: palette.elevationShadow[8] }\n : { elevation: 8, shadowColor: palette.elevationShadow[8] },\n 9: useShadowStyle\n ? { ...IOS_SHADOW[9], shadowColor: palette.elevationShadow[9] }\n : { elevation: 9, shadowColor: palette.elevationShadow[9] },\n };\n}\n"]}
1
+ {"version":3,"file":"elevation.js","sourceRoot":"","sources":["../../src/theme/elevation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BoxShadowValue } from \"react-native\";\nimport { ShadowLevel, ShadowStyle } from \"./types\";\nimport { Theme } from \"./types\";\n\nexport const IOS_SHADOW = [\n { shadowOffset: { width: 0, height: 0 }, shadowOpacity: 0, shadowRadius: 0 },\n { shadowOffset: { width: 0, height: 1 }, shadowOpacity: 0.2, shadowRadius: 1.0 },\n { shadowOffset: { width: 0, height: 1 }, shadowOpacity: 0.2, shadowRadius: 1.41 },\n { shadowOffset: { width: 0, height: 1 }, shadowOpacity: 0.2, shadowRadius: 2.22 },\n { shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.2, shadowRadius: 2.62 },\n { shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.2, shadowRadius: 3.84 },\n { shadowOffset: { width: 0, height: 3 }, shadowOpacity: 0.2, shadowRadius: 4.65 },\n { shadowOffset: { width: 0, height: 4 }, shadowOpacity: 0.25, shadowRadius: 4.65 },\n { shadowOffset: { width: 0, height: 6 }, shadowOpacity: 0.25, shadowRadius: 4.65 },\n { shadowOffset: { width: 0, height: 8 }, shadowOpacity: 0.25, shadowRadius: 5.8 },\n { shadowOffset: { width: 0, height: 10 }, shadowOpacity: 0.25, shadowRadius: 6.5 },\n] as const satisfies readonly ShadowStyle[];\n\nexport interface ElevationProps {\n boxShadow?: BoxShadowValue[];\n}\n\nexport type ElevationStyles = {\n [key in ShadowLevel]: ElevationProps;\n};\n\nconst SHADOW_LEVELS: readonly ShadowLevel[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] as const;\n\nexport interface ColorChannels {\n r: number;\n g: number;\n b: number;\n a: number;\n}\n\n/** `rgb()`/`rgba()` 색상 문자열에서 r·g·b·a 채널을 추출한다. 파싱 실패 불투명 검정으로 폴백. */\nexport function parseColorChannels(color: string): ColorChannels {\n const group = color.match(/rgba?\\(([^)]+)\\)/i)?.[1];\n if (!group) {\n return { r: 0, g: 0, b: 0, a: 1 };\n }\n const [r, g, b, a] = group.split(',').map((part) => parseFloat(part.trim()));\n return {\n r: r ?? 0,\n g: g ?? 0,\n b: b ?? 0,\n a: a === undefined || Number.isNaN(a) ? 1 : a,\n };\n}\n\n/**\n * IOS_SHADOW 레벨별 오프셋·블러와 elevationShadow 색상을 합쳐 cross-platform boxShadow 만든다.\n * 기존 iOS 그림자와 동일하게 최종 불투명도는 색상 alpha × shadowOpacity 로 계산한다.\n */\nexport function createBoxShadow(level: ShadowLevel, shadowColor: string): BoxShadowValue[] {\n const shadow = IOS_SHADOW[level];\n const { r, g, b, a } = parseColorChannels(shadowColor);\n const alpha = a * shadow.shadowOpacity;\n\n if (alpha <= 0) {\n return [];\n }\n\n return [\n {\n offsetX: shadow.shadowOffset.width,\n offsetY: shadow.shadowOffset.height,\n blurRadius: shadow.shadowRadius,\n spreadDistance: 0,\n color: `rgba(${r}, ${g}, ${b}, ${alpha})`,\n },\n ];\n}\n\nexport default function elevation(palette: Theme): ElevationStyles {\n return SHADOW_LEVELS.reduce((styles, level) => {\n styles[level] = { boxShadow: createBoxShadow(level, palette.elevationShadow[level] ?? '') };\n return styles;\n }, {} as ElevationStyles);\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { IntentOptions, TypoColorOptions } from './types';
2
+ /**
3
+ * variant 별 텍스트 색상 토큰 (intent 단위 예외값 포함).
4
+ * ZSBlockButton · ZSChip 등 intent 기반 컴포넌트가 공유한다.
5
+ */
6
+ export declare const SOLID_TEXT_COLOR: Record<IntentOptions, TypoColorOptions>;
7
+ export declare const PASTEL_TEXT_COLOR: Record<IntentOptions, TypoColorOptions>;
8
+ export declare const STROKE_TEXT_COLOR: Record<IntentOptions, TypoColorOptions>;
9
+ //# sourceMappingURL=intentColors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intentColors.d.ts","sourceRoot":"","sources":["../../src/theme/intentColors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAQpE,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAOrE,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAOrE,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * variant 별 텍스트 색상 토큰 (intent 단위 예외값 포함).
3
+ * ZSBlockButton · ZSChip 등 intent 기반 컴포넌트가 공유한다.
4
+ */
5
+ export const SOLID_TEXT_COLOR = {
6
+ primary: 'white',
7
+ danger: 'white',
8
+ information: 'white',
9
+ success: 'white',
10
+ // 노랑(warning.50) 배경 위 흰 텍스트는 대비가 부족해 검정 사용
11
+ warning: 'black',
12
+ grey: 'white',
13
+ };
14
+ export const PASTEL_TEXT_COLOR = {
15
+ primary: 'primary.60',
16
+ danger: 'danger.60',
17
+ information: 'information.60',
18
+ success: 'success.60',
19
+ warning: 'warning.60',
20
+ grey: 'grey.70',
21
+ };
22
+ export const STROKE_TEXT_COLOR = {
23
+ primary: 'primary.50',
24
+ danger: 'danger.50',
25
+ information: 'information.50',
26
+ success: 'success.50',
27
+ warning: 'warning.60',
28
+ grey: 'grey.60',
29
+ };
30
+ //# sourceMappingURL=intentColors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intentColors.js","sourceRoot":"","sources":["../../src/theme/intentColors.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA4C;IACvE,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,OAAO;IACf,WAAW,EAAE,OAAO;IACpB,OAAO,EAAE,OAAO;IAChB,2CAA2C;IAC3C,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,OAAO;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAA4C;IACxE,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,gBAAgB;IAC7B,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAA4C;IACxE,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,gBAAgB;IAC7B,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,SAAS;CAChB,CAAC","sourcesContent":["import type { IntentOptions, TypoColorOptions } from './types';\n\n/**\n * variant 별 텍스트 색상 토큰 (intent 단위 예외값 포함).\n * ZSBlockButton · ZSChip 등 intent 기반 컴포넌트가 공유한다.\n */\nexport const SOLID_TEXT_COLOR: Record<IntentOptions, TypoColorOptions> = {\n primary: 'white',\n danger: 'white',\n information: 'white',\n success: 'white',\n // 노랑(warning.50) 배경 위 흰 텍스트는 대비가 부족해 검정 사용\n warning: 'black',\n grey: 'white',\n};\n\nexport const PASTEL_TEXT_COLOR: Record<IntentOptions, TypoColorOptions> = {\n primary: 'primary.60',\n danger: 'danger.60',\n information: 'information.60',\n success: 'success.60',\n warning: 'warning.60',\n grey: 'grey.70',\n};\n\nexport const STROKE_TEXT_COLOR: Record<IntentOptions, TypoColorOptions> = {\n primary: 'primary.50',\n danger: 'danger.50',\n information: 'information.50',\n success: 'success.50',\n warning: 'warning.60',\n grey: 'grey.60',\n};\n"]}
@@ -65,11 +65,7 @@ export interface ThemeFactoryConfig {
65
65
  light?: ThemeFactoryColors;
66
66
  dark?: ThemeFactoryColors;
67
67
  }
68
- /**
69
- * 테마 팩토리 함수 - SEMANTIC_LIGHT_COLORS와 SEMANTIC_DARK_COLORS를 재정의할 수 있는 기능을 제공합니다.
70
- * @param config - 라이트/다크 모드별로 색상을 재정의할 수 있는 설정 객체
71
- * @returns 재정의된 SEMANTIC_LIGHT_COLORS와 SEMANTIC_DARK_COLORS를 포함한 팩토리 함수
72
- */
68
+ /** 라이트/다크 시맨틱 색상을 재정의해 커스텀 팔레트 함수를 생성한다. */
73
69
  export declare function themeFactory(config?: ThemeFactoryConfig): ({ mode, themeColors, }?: {
74
70
  mode?: "light" | "dark";
75
71
  themeColors?: {
@@ -1 +1 @@
1
- {"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../src/theme/palette.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDxB,CAAC;AAuMF,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,GAAE,kBAAuB,IA0C5B,yBAG3B;IACD,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,IAAI,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC;CAC1C,KAAG,KAAK,CAiGf;AAED,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAC9B,IAAc,EACd,WAAgB,GACjB,GAAE;IACD,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,IAAI,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC;CAC1C,GAAG,KAAK,CAsBb"}
1
+ {"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../src/theme/palette.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDxB,CAAC;AAsMF,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC3B;AAED,4CAA4C;AAC5C,wBAAgB,YAAY,CAAC,MAAM,GAAE,kBAAuB,IAwC5B,yBAG3B;IACD,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,IAAI,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC;CAC1C,KAAG,KAAK,CA+Ff;AAED,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAC9B,IAAc,EACd,WAAgB,GACjB,GAAE;IACD,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,IAAI,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC;CAC1C,GAAG,KAAK,CAqBb"}
@@ -1,6 +1,6 @@
1
1
  import { BLACK, PRIMITIVE_BLUE, PRIMITIVE_GREEN, PRIMITIVE_GREY, PRIMITIVE_GREY_DARK, PRIMITIVE_ORANGE, PRIMITIVE_RED, PRIMITIVE_TEAL, PRIMITIVE_YELLOW, SHADOW_COLORS, WHITE } from "./primitive";
2
2
  export const transparency = {
3
- '0%': '00', // 완전 투명
3
+ '0%': '00',
4
4
  '2%': '05',
5
5
  '4%': '0A',
6
6
  '6%': '0F',
@@ -50,7 +50,7 @@ export const transparency = {
50
50
  '94%': 'F0',
51
51
  '96%': 'F5',
52
52
  '98%': 'FA',
53
- '100%': 'FF' // 완전 불투명
53
+ '100%': 'FF'
54
54
  };
55
55
  const MODAL_BG_COLOR = {
56
56
  light: PRIMITIVE_GREY[90] + transparency['52%'],
@@ -242,13 +242,8 @@ const SEMANTIC_BACKGROUND_COLORS = {
242
242
  information: SEMANTIC_DARK_COLORS.information[80],
243
243
  },
244
244
  };
245
- /**
246
- * 테마 팩토리 함수 - SEMANTIC_LIGHT_COLORS와 SEMANTIC_DARK_COLORS를 재정의할 수 있는 기능을 제공합니다.
247
- * @param config - 라이트/다크 모드별로 색상을 재정의할 수 있는 설정 객체
248
- * @returns 재정의된 SEMANTIC_LIGHT_COLORS와 SEMANTIC_DARK_COLORS를 포함한 팩토리 함수
249
- */
245
+ /** 라이트/다크 시맨틱 색상을 재정의해 커스텀 팔레트 함수를 생성한다. */
250
246
  export function themeFactory(config = {}) {
251
- // 기본 색상들을 깊은 복사로 생성
252
247
  const createCustomLightColors = () => {
253
248
  const customColors = { ...SEMANTIC_LIGHT_COLORS };
254
249
  if (config.light) {
@@ -281,10 +276,8 @@ export function themeFactory(config = {}) {
281
276
  };
282
277
  const customLightColors = createCustomLightColors();
283
278
  const customDarkColors = createCustomDarkColors();
284
- // 재정의된 색상으로 새로운 팔레트 함수 반환
285
279
  return function createPalette({ mode = 'light', themeColors = {}, } = {}) {
286
280
  const colors = mode === 'light' ? customLightColors : customDarkColors;
287
- // 재정의된 색상을 기반으로 동적으로 색상 매핑 생성
288
281
  const customTextColors = {
289
282
  light: {
290
283
  primary: colors.primary.main,
@@ -364,7 +357,6 @@ export function themeFactory(config = {}) {
364
357
  modalBgColor: MODAL_BG_COLOR[mode],
365
358
  mainColor: customMainColors[mode]
366
359
  };
367
- // 사용자 정의 테마 컬러가 있을 경우 병합
368
360
  if (themeColors?.[mode]) {
369
361
  return {
370
362
  ...theme,
@@ -385,7 +377,6 @@ export default function palette({ mode = 'light', themeColors = {}, } = {}) {
385
377
  modalBgColor: MODAL_BG_COLOR[mode],
386
378
  mainColor: MAIN_COLORS[mode]
387
379
  };
388
- // 사용자 정의 테마 컬러가 있을 경우 병합
389
380
  if (themeColors?.[mode]) {
390
381
  return {
391
382
  ...theme,
@@ -1 +1 @@
1
- {"version":3,"file":"palette.js","sourceRoot":"","sources":["../../src/theme/palette.ts"],"names":[],"mappings":"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","sourcesContent":["import { BLACK, PRIMITIVE_BLUE, PRIMITIVE_GREEN, PRIMITIVE_GREY, PRIMITIVE_GREY_DARK, PRIMITIVE_ORANGE, PRIMITIVE_RED, PRIMITIVE_TEAL, PRIMITIVE_YELLOW, SHADOW_COLORS, WHITE } from \"./primitive\";\nimport { Theme, ColorPalette, ColorPaletteExtend } from \"./types\";\n\nexport const transparency = {\n '0%': '00', // 완전 투명\n '2%': '05',\n '4%': '0A',\n '6%': '0F',\n '8%': '14',\n '10%': '1A',\n '12%': '1F',\n '14%': '24',\n '16%': '29',\n '18%': '2E',\n '20%': '33',\n '22%': '38',\n '24%': '3D',\n '26%': '42',\n '28%': '47',\n '30%': '4D',\n '32%': '52',\n '34%': '57',\n '36%': '5C',\n '38%': '61',\n '40%': '66',\n '42%': '6B',\n '44%': '70',\n '46%': '75',\n '48%': '7A',\n '50%': '80',\n '52%': '85',\n '54%': '8A',\n '56%': '8F',\n '58%': '94',\n '60%': '99',\n '62%': '9E',\n '64%': 'A3',\n '66%': 'A8',\n '68%': 'AD',\n '70%': 'B3',\n '72%': 'B8',\n '74%': 'BD',\n '76%': 'C2',\n '78%': 'C7',\n '80%': 'CC',\n '82%': 'D1',\n '84%': 'D6',\n '86%': 'DB',\n '88%': 'E0',\n '90%': 'E6',\n '92%': 'EB',\n '94%': 'F0',\n '96%': 'F5',\n '98%': 'FA',\n '100%': 'FF' // 완전 불투명\n};\n\nconst MODAL_BG_COLOR = {\n light: PRIMITIVE_GREY[90] + transparency['52%'],\n dark: PRIMITIVE_GREY[90] + transparency['40%'],\n}\n\nconst SEMANTIC_LIGHT_COLORS = {\n primary: {\n ...PRIMITIVE_ORANGE,\n lighter: PRIMITIVE_ORANGE[20],\n light: PRIMITIVE_ORANGE[30],\n main: PRIMITIVE_ORANGE[50],\n dark: PRIMITIVE_ORANGE[60],\n darker: PRIMITIVE_ORANGE[70],\n },\n secondary: {\n ...PRIMITIVE_TEAL,\n lighter: PRIMITIVE_TEAL[20],\n light: PRIMITIVE_TEAL[30],\n main: PRIMITIVE_TEAL[50],\n dark: PRIMITIVE_TEAL[60],\n darker: PRIMITIVE_TEAL[70],\n },\n danger: {\n ...PRIMITIVE_RED,\n lighter: PRIMITIVE_RED[20],\n light: PRIMITIVE_RED[30],\n main: PRIMITIVE_RED[50],\n dark: PRIMITIVE_RED[60],\n darker: PRIMITIVE_RED[70],\n },\n warning: {\n ...PRIMITIVE_YELLOW,\n lighter: PRIMITIVE_YELLOW[20],\n light: PRIMITIVE_YELLOW[30],\n main: PRIMITIVE_YELLOW[50],\n dark: PRIMITIVE_YELLOW[60],\n darker: PRIMITIVE_YELLOW[70],\n },\n success: {\n ...PRIMITIVE_GREEN,\n lighter: PRIMITIVE_GREEN[20],\n light: PRIMITIVE_GREEN[30],\n main: PRIMITIVE_GREEN[50],\n dark: PRIMITIVE_GREEN[60],\n darker: PRIMITIVE_GREEN[70],\n },\n information: {\n ...PRIMITIVE_BLUE,\n lighter: PRIMITIVE_BLUE[20],\n light: PRIMITIVE_BLUE[30],\n main: PRIMITIVE_BLUE[50],\n dark: PRIMITIVE_BLUE[60],\n darker: PRIMITIVE_BLUE[70],\n },\n grey: {\n ...PRIMITIVE_GREY,\n lighter: PRIMITIVE_GREY[20],\n light: PRIMITIVE_GREY[30],\n main: PRIMITIVE_GREY[20],\n dark: PRIMITIVE_GREY[60],\n darker: PRIMITIVE_GREY[70],\n },\n};\n\nconst SEMANTIC_DARK_COLORS = {\n primary: {\n ...SEMANTIC_LIGHT_COLORS.primary,\n lighter: PRIMITIVE_ORANGE[20],\n light: PRIMITIVE_ORANGE[30],\n main: PRIMITIVE_ORANGE[50],\n dark: PRIMITIVE_ORANGE[60],\n darker: PRIMITIVE_ORANGE[70],\n },\n secondary: {\n ...SEMANTIC_LIGHT_COLORS.secondary,\n lighter: PRIMITIVE_TEAL[20],\n light: PRIMITIVE_TEAL[30],\n main: PRIMITIVE_TEAL[50],\n dark: PRIMITIVE_TEAL[60],\n darker: PRIMITIVE_TEAL[70],\n },\n danger: {\n ...SEMANTIC_LIGHT_COLORS.danger,\n lighter: PRIMITIVE_RED[20],\n light: PRIMITIVE_RED[30],\n main: PRIMITIVE_RED[50],\n dark: PRIMITIVE_RED[60],\n darker: PRIMITIVE_RED[70],\n },\n warning: {\n ...SEMANTIC_LIGHT_COLORS.warning,\n lighter: PRIMITIVE_YELLOW[20],\n light: PRIMITIVE_YELLOW[30],\n main: PRIMITIVE_YELLOW[50],\n dark: PRIMITIVE_YELLOW[60],\n darker: PRIMITIVE_YELLOW[70],\n },\n success: {\n ...SEMANTIC_LIGHT_COLORS.success,\n lighter: PRIMITIVE_GREEN[20],\n light: PRIMITIVE_GREEN[30],\n main: PRIMITIVE_GREEN[50],\n dark: PRIMITIVE_GREEN[60],\n darker: PRIMITIVE_GREEN[70],\n },\n information: {\n ...SEMANTIC_LIGHT_COLORS.information,\n lighter: PRIMITIVE_BLUE[20],\n light: PRIMITIVE_BLUE[30],\n main: PRIMITIVE_BLUE[50],\n dark: PRIMITIVE_BLUE[60],\n darker: PRIMITIVE_BLUE[70],\n },\n grey: {\n ...PRIMITIVE_GREY_DARK,\n lighter: PRIMITIVE_GREY_DARK[20],\n light: PRIMITIVE_GREY_DARK[30],\n main: PRIMITIVE_GREY_DARK[20],\n dark: PRIMITIVE_GREY_DARK[60],\n darker: PRIMITIVE_GREY_DARK[70],\n },\n};\n\nconst MAIN_COLORS = {\n light: {\n primary: SEMANTIC_LIGHT_COLORS.primary.main,\n secondary: SEMANTIC_LIGHT_COLORS.secondary.main,\n danger: SEMANTIC_LIGHT_COLORS.danger.main,\n warning: SEMANTIC_LIGHT_COLORS.warning.main,\n success: SEMANTIC_LIGHT_COLORS.success.main,\n information: SEMANTIC_LIGHT_COLORS.information.main,\n grey: SEMANTIC_LIGHT_COLORS.grey.main\n },\n dark: {\n primary: SEMANTIC_DARK_COLORS.primary.main,\n secondary: SEMANTIC_DARK_COLORS.secondary.main,\n danger: SEMANTIC_DARK_COLORS.danger.main,\n warning: SEMANTIC_DARK_COLORS.warning.main,\n success: SEMANTIC_DARK_COLORS.success.main,\n information: SEMANTIC_DARK_COLORS.information.main,\n grey: SEMANTIC_DARK_COLORS.grey.main\n }\n}\n\nconst SEMANTIC_TEXT_COLORS = {\n light: {\n primary: SEMANTIC_LIGHT_COLORS.primary.main,\n base: SEMANTIC_LIGHT_COLORS.grey[80],\n secondary: SEMANTIC_LIGHT_COLORS.grey[60],\n disabled: SEMANTIC_LIGHT_COLORS.grey[50],\n danger: SEMANTIC_LIGHT_COLORS.danger[60],\n warning: SEMANTIC_LIGHT_COLORS.warning[60],\n success: SEMANTIC_LIGHT_COLORS.success[60],\n information: SEMANTIC_LIGHT_COLORS.information[60],\n white: WHITE,\n black: BLACK,\n },\n dark: {\n primary: SEMANTIC_DARK_COLORS.primary.main,\n base: SEMANTIC_DARK_COLORS.grey[90],\n secondary: SEMANTIC_DARK_COLORS.grey[70],\n disabled: SEMANTIC_DARK_COLORS.grey[50],\n danger: SEMANTIC_DARK_COLORS.danger[30],\n warning: SEMANTIC_DARK_COLORS.warning[30],\n success: SEMANTIC_DARK_COLORS.success[30],\n information: SEMANTIC_DARK_COLORS.information[30],\n white: WHITE,\n black: BLACK,\n },\n};\n\nconst SEMANTIC_BACKGROUND_COLORS = {\n light: {\n primary: SEMANTIC_LIGHT_COLORS.primary.main,\n layer1: SEMANTIC_LIGHT_COLORS.grey[5],\n layer2: SEMANTIC_LIGHT_COLORS.grey[20],\n neutral: SEMANTIC_LIGHT_COLORS.grey[30],\n base: WHITE,\n danger: SEMANTIC_LIGHT_COLORS.danger[5],\n warning: SEMANTIC_LIGHT_COLORS.warning[5],\n success: SEMANTIC_LIGHT_COLORS.success[5],\n information: SEMANTIC_LIGHT_COLORS.information[5],\n },\n dark: {\n primary: SEMANTIC_DARK_COLORS.primary.main,\n layer1: SEMANTIC_DARK_COLORS.grey[5],\n layer2: SEMANTIC_DARK_COLORS.grey[20],\n neutral: SEMANTIC_DARK_COLORS.grey[30],\n base: BLACK,\n danger: SEMANTIC_DARK_COLORS.danger[80],\n warning: SEMANTIC_DARK_COLORS.warning[80],\n success: SEMANTIC_DARK_COLORS.success[80],\n information: SEMANTIC_DARK_COLORS.information[80],\n },\n};\n\n// ThemeFactory 타입 정의\nexport interface ThemeFactoryColors {\n primary?: Partial<ColorPaletteExtend>;\n secondary?: Partial<ColorPalette>;\n danger?: Partial<ColorPalette>;\n warning?: Partial<ColorPalette>;\n success?: Partial<ColorPalette>;\n information?: Partial<ColorPalette>;\n grey?: Partial<ColorPalette>;\n}\n\nexport interface ThemeFactoryConfig {\n light?: ThemeFactoryColors;\n dark?: ThemeFactoryColors;\n}\n\n/**\n * 테마 팩토리 함수 - SEMANTIC_LIGHT_COLORS와 SEMANTIC_DARK_COLORS를 재정의할 수 있는 기능을 제공합니다.\n * @param config - 라이트/다크 모드별로 색상을 재정의할 수 있는 설정 객체\n * @returns 재정의된 SEMANTIC_LIGHT_COLORS와 SEMANTIC_DARK_COLORS를 포함한 팩토리 함수\n */\nexport function themeFactory(config: ThemeFactoryConfig = {}) {\n // 기본 색상들을 깊은 복사로 생성\n const createCustomLightColors = (): typeof SEMANTIC_LIGHT_COLORS => {\n const customColors = { ...SEMANTIC_LIGHT_COLORS };\n \n if (config.light) {\n Object.keys(config.light).forEach((key) => {\n const colorKey = key as keyof ThemeFactoryColors;\n if (config.light?.[colorKey]) {\n customColors[colorKey] = {\n ...customColors[colorKey],\n ...config.light[colorKey],\n } as any;\n }\n });\n }\n \n return customColors;\n };\n\n const createCustomDarkColors = (): typeof SEMANTIC_DARK_COLORS => {\n const customColors = { ...SEMANTIC_DARK_COLORS };\n \n if (config.dark) {\n Object.keys(config.dark).forEach((key) => {\n const colorKey = key as keyof ThemeFactoryColors;\n if (config.dark?.[colorKey]) {\n customColors[colorKey] = {\n ...customColors[colorKey],\n ...config.dark[colorKey],\n } as any;\n }\n });\n }\n \n return customColors;\n };\n\n const customLightColors = createCustomLightColors();\n const customDarkColors = createCustomDarkColors();\n\n // 재정의된 색상으로 새로운 팔레트 함수 반환\n return function createPalette({\n mode = 'light',\n themeColors = {},\n }: {\n mode?: 'light' | 'dark';\n themeColors?: { light?: Theme; dark?: Theme };\n } = {}): Theme {\n const colors = mode === 'light' ? customLightColors : customDarkColors;\n\n // 재정의된 색상을 기반으로 동적으로 색상 매핑 생성\n const customTextColors = {\n light: {\n primary: colors.primary.main,\n base: colors.grey[80],\n secondary: colors.grey[60],\n disabled: colors.grey[50],\n danger: colors.danger[60],\n warning: colors.warning[60],\n success: colors.success[60],\n information: colors.information[60],\n white: WHITE,\n black: BLACK,\n },\n dark: {\n primary: colors.primary.main,\n base: colors.grey[90],\n secondary: colors.grey[70],\n disabled: colors.grey[50],\n danger: colors.danger[30],\n warning: colors.warning[30],\n success: colors.success[30],\n information: colors.information[30],\n white: WHITE,\n black: BLACK,\n },\n };\n\n const customBackgroundColors = {\n light: {\n primary: colors.primary.main,\n layer1: colors.grey[5],\n layer2: colors.grey[20],\n neutral: colors.grey[30],\n base: WHITE,\n danger: colors.danger[5],\n warning: colors.warning[5],\n success: colors.success[5],\n information: colors.information[5],\n },\n dark: {\n primary: colors.primary.main,\n layer1: colors.grey[5],\n layer2: colors.grey[20],\n neutral: colors.grey[30],\n base: BLACK,\n danger: colors.danger[80],\n warning: colors.warning[80],\n success: colors.success[80],\n information: colors.information[80],\n },\n };\n\n const customMainColors = {\n light: {\n primary: colors.primary.main,\n secondary: colors.secondary.main,\n danger: colors.danger.main,\n warning: colors.warning.main,\n success: colors.success.main,\n information: colors.information.main,\n grey: colors.grey.main\n },\n dark: {\n primary: colors.primary.main,\n secondary: colors.secondary.main,\n danger: colors.danger.main,\n warning: colors.warning.main,\n success: colors.success.main,\n information: colors.information.main,\n grey: colors.grey.main\n }\n };\n\n const theme: Theme = {\n mode,\n ...colors,\n text: customTextColors[mode],\n background: customBackgroundColors[mode],\n elevationShadow: SHADOW_COLORS[mode],\n modalBgColor: MODAL_BG_COLOR[mode],\n mainColor: customMainColors[mode]\n };\n\n // 사용자 정의 테마 컬러가 있을 경우 병합\n if (themeColors?.[mode]) {\n return {\n ...theme,\n ...themeColors[mode],\n };\n }\n\n return theme;\n };\n}\n\nexport default function palette({\n mode = 'light',\n themeColors = {},\n}: {\n mode?: 'light' | 'dark';\n themeColors?: { light?: Theme; dark?: Theme };\n} = {}): Theme {\n const colors = mode === 'light' ? SEMANTIC_LIGHT_COLORS : SEMANTIC_DARK_COLORS;\n\n const theme: Theme = {\n mode,\n ...colors,\n text: SEMANTIC_TEXT_COLORS[mode],\n background: SEMANTIC_BACKGROUND_COLORS[mode],\n elevationShadow: SHADOW_COLORS[mode],\n modalBgColor: MODAL_BG_COLOR[mode],\n mainColor: MAIN_COLORS[mode]\n };\n\n // 사용자 정의 테마 컬러가 있을 경우 병합\n if (themeColors?.[mode]) {\n return {\n ...theme,\n ...themeColors[mode],\n };\n }\n\n return theme;\n}\n"]}
1
+ {"version":3,"file":"palette.js","sourceRoot":"","sources":["../../src/theme/palette.ts"],"names":[],"mappings":"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","sourcesContent":["import { BLACK, PRIMITIVE_BLUE, PRIMITIVE_GREEN, PRIMITIVE_GREY, PRIMITIVE_GREY_DARK, PRIMITIVE_ORANGE, PRIMITIVE_RED, PRIMITIVE_TEAL, PRIMITIVE_YELLOW, SHADOW_COLORS, WHITE } from \"./primitive\";\nimport { Theme, ColorPalette, ColorPaletteExtend } from \"./types\";\n\nexport const transparency = {\n '0%': '00',\n '2%': '05',\n '4%': '0A',\n '6%': '0F',\n '8%': '14',\n '10%': '1A',\n '12%': '1F',\n '14%': '24',\n '16%': '29',\n '18%': '2E',\n '20%': '33',\n '22%': '38',\n '24%': '3D',\n '26%': '42',\n '28%': '47',\n '30%': '4D',\n '32%': '52',\n '34%': '57',\n '36%': '5C',\n '38%': '61',\n '40%': '66',\n '42%': '6B',\n '44%': '70',\n '46%': '75',\n '48%': '7A',\n '50%': '80',\n '52%': '85',\n '54%': '8A',\n '56%': '8F',\n '58%': '94',\n '60%': '99',\n '62%': '9E',\n '64%': 'A3',\n '66%': 'A8',\n '68%': 'AD',\n '70%': 'B3',\n '72%': 'B8',\n '74%': 'BD',\n '76%': 'C2',\n '78%': 'C7',\n '80%': 'CC',\n '82%': 'D1',\n '84%': 'D6',\n '86%': 'DB',\n '88%': 'E0',\n '90%': 'E6',\n '92%': 'EB',\n '94%': 'F0',\n '96%': 'F5',\n '98%': 'FA',\n '100%': 'FF'\n};\n\nconst MODAL_BG_COLOR = {\n light: PRIMITIVE_GREY[90] + transparency['52%'],\n dark: PRIMITIVE_GREY[90] + transparency['40%'],\n}\n\nconst SEMANTIC_LIGHT_COLORS = {\n primary: {\n ...PRIMITIVE_ORANGE,\n lighter: PRIMITIVE_ORANGE[20],\n light: PRIMITIVE_ORANGE[30],\n main: PRIMITIVE_ORANGE[50],\n dark: PRIMITIVE_ORANGE[60],\n darker: PRIMITIVE_ORANGE[70],\n },\n secondary: {\n ...PRIMITIVE_TEAL,\n lighter: PRIMITIVE_TEAL[20],\n light: PRIMITIVE_TEAL[30],\n main: PRIMITIVE_TEAL[50],\n dark: PRIMITIVE_TEAL[60],\n darker: PRIMITIVE_TEAL[70],\n },\n danger: {\n ...PRIMITIVE_RED,\n lighter: PRIMITIVE_RED[20],\n light: PRIMITIVE_RED[30],\n main: PRIMITIVE_RED[50],\n dark: PRIMITIVE_RED[60],\n darker: PRIMITIVE_RED[70],\n },\n warning: {\n ...PRIMITIVE_YELLOW,\n lighter: PRIMITIVE_YELLOW[20],\n light: PRIMITIVE_YELLOW[30],\n main: PRIMITIVE_YELLOW[50],\n dark: PRIMITIVE_YELLOW[60],\n darker: PRIMITIVE_YELLOW[70],\n },\n success: {\n ...PRIMITIVE_GREEN,\n lighter: PRIMITIVE_GREEN[20],\n light: PRIMITIVE_GREEN[30],\n main: PRIMITIVE_GREEN[50],\n dark: PRIMITIVE_GREEN[60],\n darker: PRIMITIVE_GREEN[70],\n },\n information: {\n ...PRIMITIVE_BLUE,\n lighter: PRIMITIVE_BLUE[20],\n light: PRIMITIVE_BLUE[30],\n main: PRIMITIVE_BLUE[50],\n dark: PRIMITIVE_BLUE[60],\n darker: PRIMITIVE_BLUE[70],\n },\n grey: {\n ...PRIMITIVE_GREY,\n lighter: PRIMITIVE_GREY[20],\n light: PRIMITIVE_GREY[30],\n main: PRIMITIVE_GREY[20],\n dark: PRIMITIVE_GREY[60],\n darker: PRIMITIVE_GREY[70],\n },\n};\n\nconst SEMANTIC_DARK_COLORS = {\n primary: {\n ...SEMANTIC_LIGHT_COLORS.primary,\n lighter: PRIMITIVE_ORANGE[20],\n light: PRIMITIVE_ORANGE[30],\n main: PRIMITIVE_ORANGE[50],\n dark: PRIMITIVE_ORANGE[60],\n darker: PRIMITIVE_ORANGE[70],\n },\n secondary: {\n ...SEMANTIC_LIGHT_COLORS.secondary,\n lighter: PRIMITIVE_TEAL[20],\n light: PRIMITIVE_TEAL[30],\n main: PRIMITIVE_TEAL[50],\n dark: PRIMITIVE_TEAL[60],\n darker: PRIMITIVE_TEAL[70],\n },\n danger: {\n ...SEMANTIC_LIGHT_COLORS.danger,\n lighter: PRIMITIVE_RED[20],\n light: PRIMITIVE_RED[30],\n main: PRIMITIVE_RED[50],\n dark: PRIMITIVE_RED[60],\n darker: PRIMITIVE_RED[70],\n },\n warning: {\n ...SEMANTIC_LIGHT_COLORS.warning,\n lighter: PRIMITIVE_YELLOW[20],\n light: PRIMITIVE_YELLOW[30],\n main: PRIMITIVE_YELLOW[50],\n dark: PRIMITIVE_YELLOW[60],\n darker: PRIMITIVE_YELLOW[70],\n },\n success: {\n ...SEMANTIC_LIGHT_COLORS.success,\n lighter: PRIMITIVE_GREEN[20],\n light: PRIMITIVE_GREEN[30],\n main: PRIMITIVE_GREEN[50],\n dark: PRIMITIVE_GREEN[60],\n darker: PRIMITIVE_GREEN[70],\n },\n information: {\n ...SEMANTIC_LIGHT_COLORS.information,\n lighter: PRIMITIVE_BLUE[20],\n light: PRIMITIVE_BLUE[30],\n main: PRIMITIVE_BLUE[50],\n dark: PRIMITIVE_BLUE[60],\n darker: PRIMITIVE_BLUE[70],\n },\n grey: {\n ...PRIMITIVE_GREY_DARK,\n lighter: PRIMITIVE_GREY_DARK[20],\n light: PRIMITIVE_GREY_DARK[30],\n main: PRIMITIVE_GREY_DARK[20],\n dark: PRIMITIVE_GREY_DARK[60],\n darker: PRIMITIVE_GREY_DARK[70],\n },\n};\n\nconst MAIN_COLORS = {\n light: {\n primary: SEMANTIC_LIGHT_COLORS.primary.main,\n secondary: SEMANTIC_LIGHT_COLORS.secondary.main,\n danger: SEMANTIC_LIGHT_COLORS.danger.main,\n warning: SEMANTIC_LIGHT_COLORS.warning.main,\n success: SEMANTIC_LIGHT_COLORS.success.main,\n information: SEMANTIC_LIGHT_COLORS.information.main,\n grey: SEMANTIC_LIGHT_COLORS.grey.main\n },\n dark: {\n primary: SEMANTIC_DARK_COLORS.primary.main,\n secondary: SEMANTIC_DARK_COLORS.secondary.main,\n danger: SEMANTIC_DARK_COLORS.danger.main,\n warning: SEMANTIC_DARK_COLORS.warning.main,\n success: SEMANTIC_DARK_COLORS.success.main,\n information: SEMANTIC_DARK_COLORS.information.main,\n grey: SEMANTIC_DARK_COLORS.grey.main\n }\n}\n\nconst SEMANTIC_TEXT_COLORS = {\n light: {\n primary: SEMANTIC_LIGHT_COLORS.primary.main,\n base: SEMANTIC_LIGHT_COLORS.grey[80],\n secondary: SEMANTIC_LIGHT_COLORS.grey[60],\n disabled: SEMANTIC_LIGHT_COLORS.grey[50],\n danger: SEMANTIC_LIGHT_COLORS.danger[60],\n warning: SEMANTIC_LIGHT_COLORS.warning[60],\n success: SEMANTIC_LIGHT_COLORS.success[60],\n information: SEMANTIC_LIGHT_COLORS.information[60],\n white: WHITE,\n black: BLACK,\n },\n dark: {\n primary: SEMANTIC_DARK_COLORS.primary.main,\n base: SEMANTIC_DARK_COLORS.grey[90],\n secondary: SEMANTIC_DARK_COLORS.grey[70],\n disabled: SEMANTIC_DARK_COLORS.grey[50],\n danger: SEMANTIC_DARK_COLORS.danger[30],\n warning: SEMANTIC_DARK_COLORS.warning[30],\n success: SEMANTIC_DARK_COLORS.success[30],\n information: SEMANTIC_DARK_COLORS.information[30],\n white: WHITE,\n black: BLACK,\n },\n};\n\nconst SEMANTIC_BACKGROUND_COLORS = {\n light: {\n primary: SEMANTIC_LIGHT_COLORS.primary.main,\n layer1: SEMANTIC_LIGHT_COLORS.grey[5],\n layer2: SEMANTIC_LIGHT_COLORS.grey[20],\n neutral: SEMANTIC_LIGHT_COLORS.grey[30],\n base: WHITE,\n danger: SEMANTIC_LIGHT_COLORS.danger[5],\n warning: SEMANTIC_LIGHT_COLORS.warning[5],\n success: SEMANTIC_LIGHT_COLORS.success[5],\n information: SEMANTIC_LIGHT_COLORS.information[5],\n },\n dark: {\n primary: SEMANTIC_DARK_COLORS.primary.main,\n layer1: SEMANTIC_DARK_COLORS.grey[5],\n layer2: SEMANTIC_DARK_COLORS.grey[20],\n neutral: SEMANTIC_DARK_COLORS.grey[30],\n base: BLACK,\n danger: SEMANTIC_DARK_COLORS.danger[80],\n warning: SEMANTIC_DARK_COLORS.warning[80],\n success: SEMANTIC_DARK_COLORS.success[80],\n information: SEMANTIC_DARK_COLORS.information[80],\n },\n};\n\nexport interface ThemeFactoryColors {\n primary?: Partial<ColorPaletteExtend>;\n secondary?: Partial<ColorPalette>;\n danger?: Partial<ColorPalette>;\n warning?: Partial<ColorPalette>;\n success?: Partial<ColorPalette>;\n information?: Partial<ColorPalette>;\n grey?: Partial<ColorPalette>;\n}\n\nexport interface ThemeFactoryConfig {\n light?: ThemeFactoryColors;\n dark?: ThemeFactoryColors;\n}\n\n/** 라이트/다크 시맨틱 색상을 재정의해 커스텀 팔레트 함수를 생성한다. */\nexport function themeFactory(config: ThemeFactoryConfig = {}) {\n const createCustomLightColors = (): typeof SEMANTIC_LIGHT_COLORS => {\n const customColors = { ...SEMANTIC_LIGHT_COLORS };\n \n if (config.light) {\n Object.keys(config.light).forEach((key) => {\n const colorKey = key as keyof ThemeFactoryColors;\n if (config.light?.[colorKey]) {\n customColors[colorKey] = {\n ...customColors[colorKey],\n ...config.light[colorKey],\n } as any;\n }\n });\n }\n \n return customColors;\n };\n\n const createCustomDarkColors = (): typeof SEMANTIC_DARK_COLORS => {\n const customColors = { ...SEMANTIC_DARK_COLORS };\n \n if (config.dark) {\n Object.keys(config.dark).forEach((key) => {\n const colorKey = key as keyof ThemeFactoryColors;\n if (config.dark?.[colorKey]) {\n customColors[colorKey] = {\n ...customColors[colorKey],\n ...config.dark[colorKey],\n } as any;\n }\n });\n }\n \n return customColors;\n };\n\n const customLightColors = createCustomLightColors();\n const customDarkColors = createCustomDarkColors();\n\n return function createPalette({\n mode = 'light',\n themeColors = {},\n }: {\n mode?: 'light' | 'dark';\n themeColors?: { light?: Theme; dark?: Theme };\n } = {}): Theme {\n const colors = mode === 'light' ? customLightColors : customDarkColors;\n\n const customTextColors = {\n light: {\n primary: colors.primary.main,\n base: colors.grey[80],\n secondary: colors.grey[60],\n disabled: colors.grey[50],\n danger: colors.danger[60],\n warning: colors.warning[60],\n success: colors.success[60],\n information: colors.information[60],\n white: WHITE,\n black: BLACK,\n },\n dark: {\n primary: colors.primary.main,\n base: colors.grey[90],\n secondary: colors.grey[70],\n disabled: colors.grey[50],\n danger: colors.danger[30],\n warning: colors.warning[30],\n success: colors.success[30],\n information: colors.information[30],\n white: WHITE,\n black: BLACK,\n },\n };\n\n const customBackgroundColors = {\n light: {\n primary: colors.primary.main,\n layer1: colors.grey[5],\n layer2: colors.grey[20],\n neutral: colors.grey[30],\n base: WHITE,\n danger: colors.danger[5],\n warning: colors.warning[5],\n success: colors.success[5],\n information: colors.information[5],\n },\n dark: {\n primary: colors.primary.main,\n layer1: colors.grey[5],\n layer2: colors.grey[20],\n neutral: colors.grey[30],\n base: BLACK,\n danger: colors.danger[80],\n warning: colors.warning[80],\n success: colors.success[80],\n information: colors.information[80],\n },\n };\n\n const customMainColors = {\n light: {\n primary: colors.primary.main,\n secondary: colors.secondary.main,\n danger: colors.danger.main,\n warning: colors.warning.main,\n success: colors.success.main,\n information: colors.information.main,\n grey: colors.grey.main\n },\n dark: {\n primary: colors.primary.main,\n secondary: colors.secondary.main,\n danger: colors.danger.main,\n warning: colors.warning.main,\n success: colors.success.main,\n information: colors.information.main,\n grey: colors.grey.main\n }\n };\n\n const theme: Theme = {\n mode,\n ...colors,\n text: customTextColors[mode],\n background: customBackgroundColors[mode],\n elevationShadow: SHADOW_COLORS[mode],\n modalBgColor: MODAL_BG_COLOR[mode],\n mainColor: customMainColors[mode]\n };\n\n if (themeColors?.[mode]) {\n return {\n ...theme,\n ...themeColors[mode],\n };\n }\n\n return theme;\n };\n}\n\nexport default function palette({\n mode = 'light',\n themeColors = {},\n}: {\n mode?: 'light' | 'dark';\n themeColors?: { light?: Theme; dark?: Theme };\n} = {}): Theme {\n const colors = mode === 'light' ? SEMANTIC_LIGHT_COLORS : SEMANTIC_DARK_COLORS;\n\n const theme: Theme = {\n mode,\n ...colors,\n text: SEMANTIC_TEXT_COLORS[mode],\n background: SEMANTIC_BACKGROUND_COLORS[mode],\n elevationShadow: SHADOW_COLORS[mode],\n modalBgColor: MODAL_BG_COLOR[mode],\n mainColor: MAIN_COLORS[mode]\n };\n\n if (themeColors?.[mode]) {\n return {\n ...theme,\n ...themeColors[mode],\n };\n }\n\n return theme;\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { Theme } from './types';
2
+ export declare function resolveTextColor(palette: Theme, color: string): string | undefined;
3
+ export declare function resolveViewColor(palette: Theme, color: string): string | undefined;
4
+ //# sourceMappingURL=resolveColor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveColor.d.ts","sourceRoot":"","sources":["../../src/theme/resolveColor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,EAAkC,MAAM,SAAS,CAAC;AAS9E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQlF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWlF"}
@@ -0,0 +1,29 @@
1
+ function isColorMap(value) {
2
+ return typeof value === 'object' && value !== null;
3
+ }
4
+ export function resolveTextColor(palette, color) {
5
+ const [c01, c02] = color.split('.');
6
+ if (!c02)
7
+ return palette.text[c01];
8
+ if (c01 === 'text')
9
+ return palette.text[c02];
10
+ if (c01 === 'background')
11
+ return palette.background[c02];
12
+ const semanticPalette = palette[c01];
13
+ return isColorMap(semanticPalette) ? semanticPalette[c02] : undefined;
14
+ }
15
+ export function resolveViewColor(palette, color) {
16
+ const [c01, c02] = color.split('.');
17
+ if (c02) {
18
+ if (c01 === 'background')
19
+ return palette.background[c02];
20
+ if (c01 === 'text')
21
+ return palette.text[c02];
22
+ const semanticPalette = palette[c01];
23
+ return isColorMap(semanticPalette) ? semanticPalette[c02] : undefined;
24
+ }
25
+ if (c01)
26
+ return palette.background[c01] ?? palette[c01]?.main;
27
+ return undefined;
28
+ }
29
+ //# sourceMappingURL=resolveColor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveColor.js","sourceRoot":"","sources":["../../src/theme/resolveColor.ts"],"names":[],"mappings":"AAKA,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAc,EAAE,KAAa;IAC5D,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAiC,CAAC;IACpE,IAAI,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,GAA0B,CAAC,CAAC;IAC1D,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,GAA0B,CAAC,CAAC;IACpE,IAAI,GAAG,KAAK,YAAY;QAAE,OAAO,OAAO,CAAC,UAAU,CAAC,GAA4B,CAAC,CAAC;IAElF,MAAM,eAAe,GAAG,OAAO,CAAC,GAAyB,CAAC,CAAC;IAC3D,OAAO,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAc,EAAE,KAAa;IAC5D,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAiC,CAAC;IACpE,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,GAAG,KAAK,YAAY;YAAE,OAAO,OAAO,CAAC,UAAU,CAAC,GAA4B,CAAC,CAAC;QAClF,IAAI,GAAG,KAAK,MAAM;YAAE,OAAO,OAAO,CAAC,IAAI,CAAC,GAA0B,CAAC,CAAC;QAEpE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAyB,CAAC,CAAC;QAC3D,OAAO,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxF,CAAC;IACD,IAAI,GAAG;QAAE,OAAO,OAAO,CAAC,UAAU,CAAC,GAA4B,CAAC,IAAI,OAAO,CAAC,GAAyB,CAAC,EAAE,IAAI,CAAC;IAC7G,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import { ColorPalette, Theme, ThemeBackground, ThemeTextType } from './types';\n\ntype SemanticPaletteKey = 'primary' | 'secondary' | 'danger' | 'warning' | 'success' | 'information' | 'grey';\ntype PaletteShade = keyof ColorPalette;\n\nfunction isColorMap(value: unknown): value is Record<string, string> {\n return typeof value === 'object' && value !== null;\n}\n\nexport function resolveTextColor(palette: Theme, color: string): string | undefined {\n const [c01, c02] = color.split('.') as [string, string | undefined];\n if (!c02) return palette.text[c01 as keyof ThemeTextType];\n if (c01 === 'text') return palette.text[c02 as keyof ThemeTextType];\n if (c01 === 'background') return palette.background[c02 as keyof ThemeBackground];\n\n const semanticPalette = palette[c01 as SemanticPaletteKey];\n return isColorMap(semanticPalette) ? semanticPalette[c02 as PaletteShade] : undefined;\n}\n\nexport function resolveViewColor(palette: Theme, color: string): string | undefined {\n const [c01, c02] = color.split('.') as [string, string | undefined];\n if (c02) {\n if (c01 === 'background') return palette.background[c02 as keyof ThemeBackground];\n if (c01 === 'text') return palette.text[c02 as keyof ThemeTextType];\n\n const semanticPalette = palette[c01 as SemanticPaletteKey];\n return isColorMap(semanticPalette) ? semanticPalette[c02 as PaletteShade] : undefined;\n }\n if (c01) return palette.background[c01 as keyof ThemeBackground] ?? palette[c01 as SemanticPaletteKey]?.main;\n return undefined;\n}\n"]}