@0610studio/zs-ui 0.18.1 → 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 (106) hide show
  1. package/build/assets/SvgTooltipTail.d.ts +7 -0
  2. package/build/assets/SvgTooltipTail.d.ts.map +1 -0
  3. package/build/assets/SvgTooltipTail.js +7 -0
  4. package/build/assets/SvgTooltipTail.js.map +1 -0
  5. package/build/context/ThemeContext.d.ts.map +1 -1
  6. package/build/context/ThemeContext.js +17 -5
  7. package/build/context/ThemeContext.js.map +1 -1
  8. package/build/index.d.ts +15 -2
  9. package/build/index.d.ts.map +1 -1
  10. package/build/index.js +7 -1
  11. package/build/index.js.map +1 -1
  12. package/build/model/types.d.ts +1 -0
  13. package/build/model/types.d.ts.map +1 -1
  14. package/build/model/types.js.map +1 -1
  15. package/build/model/useFoldingState.d.ts.map +1 -1
  16. package/build/model/useFoldingState.js +51 -32
  17. package/build/model/useFoldingState.js.map +1 -1
  18. package/build/overlay/AlertOverlay/index.d.ts +1 -2
  19. package/build/overlay/AlertOverlay/index.d.ts.map +1 -1
  20. package/build/overlay/AlertOverlay/index.js +11 -9
  21. package/build/overlay/AlertOverlay/index.js.map +1 -1
  22. package/build/overlay/BottomSheetOverlay/index.d.ts.map +1 -1
  23. package/build/overlay/BottomSheetOverlay/index.js +4 -3
  24. package/build/overlay/BottomSheetOverlay/index.js.map +1 -1
  25. package/build/overlay/LoadingNotify/index.d.ts +2 -2
  26. package/build/overlay/LoadingNotify/index.d.ts.map +1 -1
  27. package/build/overlay/LoadingNotify/index.js +2 -2
  28. package/build/overlay/LoadingNotify/index.js.map +1 -1
  29. package/build/overlay/Modality/index.d.ts.map +1 -1
  30. package/build/overlay/Modality/index.js +3 -3
  31. package/build/overlay/Modality/index.js.map +1 -1
  32. package/build/overlay/PopOver/PopOverMenu.d.ts.map +1 -1
  33. package/build/overlay/PopOver/PopOverMenu.js +5 -3
  34. package/build/overlay/PopOver/PopOverMenu.js.map +1 -1
  35. package/build/overlay/SnackbarNotify/ui/SnackbarItem.d.ts +3 -3
  36. package/build/overlay/SnackbarNotify/ui/SnackbarItem.d.ts.map +1 -1
  37. package/build/overlay/SnackbarNotify/ui/SnackbarItem.js +5 -5
  38. package/build/overlay/SnackbarNotify/ui/SnackbarItem.js.map +1 -1
  39. package/build/theme/intentColors.d.ts +9 -0
  40. package/build/theme/intentColors.d.ts.map +1 -0
  41. package/build/theme/intentColors.js +30 -0
  42. package/build/theme/intentColors.js.map +1 -0
  43. package/build/theme/tokens.d.ts +35 -0
  44. package/build/theme/tokens.d.ts.map +1 -0
  45. package/build/theme/tokens.js +35 -0
  46. package/build/theme/tokens.js.map +1 -0
  47. package/build/theme/typography.d.ts.map +1 -1
  48. package/build/theme/typography.js +36 -72
  49. package/build/theme/typography.js.map +1 -1
  50. package/build/ui/ZSBlockButton/index.d.ts.map +1 -1
  51. package/build/ui/ZSBlockButton/index.js +4 -19
  52. package/build/ui/ZSBlockButton/index.js.map +1 -1
  53. package/build/ui/ZSBorderBeam/index.d.ts +48 -0
  54. package/build/ui/ZSBorderBeam/index.d.ts.map +1 -0
  55. package/build/ui/ZSBorderBeam/index.js +135 -0
  56. package/build/ui/ZSBorderBeam/index.js.map +1 -0
  57. package/build/ui/ZSCheckBox/index.d.ts +18 -0
  58. package/build/ui/ZSCheckBox/index.d.ts.map +1 -0
  59. package/build/ui/ZSCheckBox/index.js +60 -0
  60. package/build/ui/ZSCheckBox/index.js.map +1 -0
  61. package/build/ui/ZSChip/index.d.ts +28 -0
  62. package/build/ui/ZSChip/index.d.ts.map +1 -0
  63. package/build/ui/ZSChip/index.js +76 -0
  64. package/build/ui/ZSChip/index.js.map +1 -0
  65. package/build/ui/ZSContainer/index.d.ts +0 -1
  66. package/build/ui/ZSContainer/index.d.ts.map +1 -1
  67. package/build/ui/ZSContainer/index.js +3 -2
  68. package/build/ui/ZSContainer/index.js.map +1 -1
  69. package/build/ui/ZSPressable/index.d.ts.map +1 -1
  70. package/build/ui/ZSPressable/index.js +9 -4
  71. package/build/ui/ZSPressable/index.js.map +1 -1
  72. package/build/ui/ZSRadioGroup/index.d.ts +2 -3
  73. package/build/ui/ZSRadioGroup/index.d.ts.map +1 -1
  74. package/build/ui/ZSRadioGroup/index.js +12 -4
  75. package/build/ui/ZSRadioGroup/index.js.map +1 -1
  76. package/build/ui/ZSSegmented/index.d.ts +26 -0
  77. package/build/ui/ZSSegmented/index.d.ts.map +1 -0
  78. package/build/ui/ZSSegmented/index.js +124 -0
  79. package/build/ui/ZSSegmented/index.js.map +1 -0
  80. package/build/ui/ZSSkeleton/SkiaShimmer.d.ts +18 -0
  81. package/build/ui/ZSSkeleton/SkiaShimmer.d.ts.map +1 -0
  82. package/build/ui/ZSSkeleton/SkiaShimmer.js +73 -0
  83. package/build/ui/ZSSkeleton/SkiaShimmer.js.map +1 -0
  84. package/build/ui/ZSSkeleton/index.d.ts +7 -2
  85. package/build/ui/ZSSkeleton/index.d.ts.map +1 -1
  86. package/build/ui/ZSSkeleton/index.js +12 -43
  87. package/build/ui/ZSSkeleton/index.js.map +1 -1
  88. package/build/ui/ZSSkeletonBox/index.d.ts +8 -2
  89. package/build/ui/ZSSkeletonBox/index.d.ts.map +1 -1
  90. package/build/ui/ZSSkeletonBox/index.js +6 -46
  91. package/build/ui/ZSSkeletonBox/index.js.map +1 -1
  92. package/build/ui/ZSSwitch/index.d.ts +2 -1
  93. package/build/ui/ZSSwitch/index.d.ts.map +1 -1
  94. package/build/ui/ZSSwitch/index.js +6 -4
  95. package/build/ui/ZSSwitch/index.js.map +1 -1
  96. package/build/ui/ZSTextField/index.d.ts.map +1 -1
  97. package/build/ui/ZSTextField/index.js +17 -13
  98. package/build/ui/ZSTextField/index.js.map +1 -1
  99. package/build/ui/ZSTextField/ui/ButtonClose.d.ts.map +1 -1
  100. package/build/ui/ZSTextField/ui/ButtonClose.js +4 -1
  101. package/build/ui/ZSTextField/ui/ButtonClose.js.map +1 -1
  102. package/build/ui/ZSTooltip/index.d.ts +38 -0
  103. package/build/ui/ZSTooltip/index.d.ts.map +1 -0
  104. package/build/ui/ZSTooltip/index.js +99 -0
  105. package/build/ui/ZSTooltip/index.js.map +1 -0
  106. package/package.json +6 -1
@@ -7,6 +7,7 @@ import ModalBackground from '../ui/ModalBackground';
7
7
  import { useTheme } from '../../context/ThemeContext';
8
8
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
9
9
  import { OVERLAY_FOLDABLE_SINGLE_WIDTH, Z_INDEX_VALUE } from '../../model/utils';
10
+ import { RADIUS } from '../../theme/tokens';
10
11
  import useKeyboard from '../../model/useKeyboard';
11
12
  import useFoldingState from '../../model/useFoldingState';
12
13
  const IS_IOS = Platform.OS === 'ios';
@@ -221,7 +222,7 @@ function BottomSheetOverlay({ headerComponent, component, options = {}, }) {
221
222
  bottom: options.type === 'fixed' ? 0 : marginBottom + bottomInsets,
222
223
  paddingBottom: options.type === 'fixed' ? bottomInsets : 0,
223
224
  backgroundColor: palette.background.base,
224
- ...(options.type === 'fixed' ? { borderTopLeftRadius: 26, borderTopRightRadius: 26, borderBottomLeftRadius: 0, borderBottomRightRadius: 0 } : { borderRadius: 26 }),
225
+ ...(options.type === 'fixed' ? { borderTopLeftRadius: RADIUS.sheet, borderTopRightRadius: RADIUS.sheet, borderBottomLeftRadius: 0, borderBottomRightRadius: 0 } : { borderRadius: RADIUS.sheet }),
225
226
  },
226
227
  animatedStyles,
227
228
  ];
@@ -250,7 +251,7 @@ function BottomSheetOverlay({ headerComponent, component, options = {}, }) {
250
251
  const styles = StyleSheet.create({
251
252
  container: {
252
253
  position: 'absolute',
253
- borderRadius: 26,
254
+ borderRadius: RADIUS.sheet,
254
255
  overflow: 'hidden',
255
256
  zIndex: Z_INDEX_VALUE.BOTTOM_SHEET2,
256
257
  },
@@ -283,7 +284,7 @@ const styles = StyleSheet.create({
283
284
  gestureBar: {
284
285
  width: 45,
285
286
  height: 3,
286
- borderRadius: 2,
287
+ borderRadius: 1.5,
287
288
  },
288
289
  });
289
290
  export default BottomSheetOverlay;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/overlay/BottomSheetOverlay/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState, useCallback, useMemo, useRef } from 'react';\nimport { StyleSheet, View, PanResponder, Keyboard, Platform, type KeyboardEvent, type LayoutChangeEvent, type PanResponderGestureState, type GestureResponderEvent, useWindowDimensions, type ViewStyle } from 'react-native';\nimport { useBottomSheet } from '../../model/useOverlay';\nimport Animated, { useAnimatedStyle, useSharedValue, withSpring, withTiming } from 'react-native-reanimated';\nimport ModalBackground from '../ui/ModalBackground';\nimport { useTheme } from '../../context/ThemeContext';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { ShowBottomSheetProps } from '../../model/types';\nimport { OVERLAY_FOLDABLE_SINGLE_WIDTH, Z_INDEX_VALUE } from '../../model/utils';\nimport useKeyboard from '../../model/useKeyboard';\nimport useFoldingState from '../../model/useFoldingState';\n\nconst IS_IOS = Platform.OS === 'ios';\n\nconst ANIMATION_CONFIG = {\n keyboard: {\n show: { duration: 250 },\n hide: { duration: 150 },\n },\n spring: {\n damping: 50,\n stiffness: 300,\n mass: 0.7,\n velocity: 100,\n restDisplacementThreshold: 0.2,\n },\n restore: {\n damping: 26,\n stiffness: 260,\n mass: 0.85,\n restDisplacementThreshold: 0.1,\n restSpeedThreshold: 2,\n },\n close: { duration: 150 },\n scale: { duration: 200 },\n scaleRestore: {\n damping: 15,\n stiffness: 300,\n },\n} as const;\n\nconst GESTURE_CONSTANTS = {\n scaleAmount: 0.985,\n horizontalDamping: 18,\n verticalUpDamping: 18,\n verticalDownDamping: 1.5,\n closeVelocityThreshold: 0.5,\n closeDistanceRatio: 1 / 3,\n minimumCloseDistance: 80,\n hideDelay: 200,\n moveThreshold: 10,\n} as const;\n\nconst getSafeFiniteNumber = (value: number, fallback: number) =>\n Number.isFinite(value) ? value : fallback;\n\nfunction BottomSheetOverlay({\n headerComponent,\n component,\n options = {},\n}: ShowBottomSheetProps) {\n const {\n foldableSingleScreen = false,\n isBackgroundTouchClose = true,\n marginHorizontal = 10,\n marginBottom = 10,\n padding = 14,\n } = options;\n const { height: windowHeight } = useWindowDimensions();\n const { width: windowWidth } = useFoldingState();\n const { palette } = useTheme();\n const { bottomSheetVisible, setBottomSheetVisible, height, maxHeight } = useBottomSheet();\n const { bottom: bottomInsets, top: topInsets } = useSafeAreaInsets();\n const [sheetHeight, setSheetHeight] = useState(0);\n const isAutoHeight = height === 'auto';\n\n const viewportMaxHeight = useMemo(() =>\n Math.max(\n windowHeight - 30 - bottomInsets - topInsets,\n 0\n ),\n [bottomInsets, topInsets, windowHeight]\n );\n\n const constrainedMaxHeight = useMemo(() => {\n const maxHeightLimit = Math.max(getSafeFiniteNumber(maxHeight, viewportMaxHeight), 0);\n\n if (isAutoHeight) {\n return Math.min(viewportMaxHeight, maxHeightLimit);\n }\n\n return Math.min(viewportMaxHeight, maxHeightLimit, Math.max(getSafeFiniteNumber(height, 0), 0));\n }, [height, isAutoHeight, maxHeight, viewportMaxHeight]);\n\n const translateY = useSharedValue(0);\n const translateX = useSharedValue(0);\n const scale = useSharedValue(1);\n const startX = useSharedValue(0);\n const startY = useSharedValue(0);\n const isGesturing = useSharedValue(false);\n\n const [localVisible, setLocalVisible] = useState(false);\n const latestCloseOffsetRef = useRef(constrainedMaxHeight + 100);\n const closingOffsetRef = useRef(constrainedMaxHeight + 100);\n\n useEffect(() => {\n latestCloseOffsetRef.current = sheetHeight > 0 ? sheetHeight + 100 : constrainedMaxHeight + 100;\n }, [constrainedMaxHeight, sheetHeight]);\n\n const handleKeyboardShow = useCallback((event: KeyboardEvent) => {\n if (!isGesturing.value) {\n const targetY = -event.endCoordinates.height + (IS_IOS ? bottomInsets : 0);\n translateY.value = withTiming(targetY, ANIMATION_CONFIG.keyboard.show);\n }\n }, [bottomInsets]);\n\n const handleKeyboardHide = useCallback(() => {\n if (!isGesturing.value) {\n translateY.value = withTiming(0, ANIMATION_CONFIG.keyboard.hide);\n }\n }, []);\n\n useKeyboard({\n handleKeyboardShow,\n handleKeyboardHide,\n });\n\n useEffect(() => {\n let timeoutId: ReturnType<typeof setTimeout>;\n\n if (bottomSheetVisible) {\n closingOffsetRef.current = latestCloseOffsetRef.current;\n Keyboard.dismiss();\n translateY.value = latestCloseOffsetRef.current;\n setLocalVisible(true);\n translateY.value = withSpring(0, ANIMATION_CONFIG.spring);\n } else {\n const targetCloseOffset = closingOffsetRef.current || latestCloseOffsetRef.current;\n closingOffsetRef.current = targetCloseOffset;\n translateY.value = withTiming(targetCloseOffset, ANIMATION_CONFIG.close);\n timeoutId = setTimeout(() => {\n setLocalVisible(false);\n }, GESTURE_CONSTANTS.hideDelay);\n }\n\n return () => {\n if (timeoutId) clearTimeout(timeoutId);\n };\n }, [bottomSheetVisible]);\n\n const animatedStyles = useAnimatedStyle(() => {\n return {\n transform: [\n { translateY: translateY.value },\n { translateX: translateX.value },\n { scale: scale.value }\n ],\n };\n });\n\n const dismissKeyboard = useCallback(() => {\n Keyboard.dismiss();\n }, []);\n\n const closeBottomSheet = useCallback(() => {\n setBottomSheetVisible(false);\n }, [setBottomSheetVisible]);\n\n const handleSheetLayout = useCallback((event: LayoutChangeEvent) => {\n const nextHeight = Math.round(event.nativeEvent.layout.height);\n\n if (nextHeight > 0) {\n const nextCloseOffset = nextHeight + 100;\n latestCloseOffsetRef.current = nextCloseOffset;\n if (bottomSheetVisible) {\n closingOffsetRef.current = nextCloseOffset;\n }\n }\n\n setSheetHeight((prevHeight) => {\n if (Math.abs(prevHeight - nextHeight) <= 1) {\n return prevHeight;\n }\n\n return nextHeight;\n });\n }, [bottomSheetVisible]);\n\n const handlePanResponderGrant = useCallback(() => {\n dismissKeyboard();\n isGesturing.value = true;\n startX.value = translateX.value;\n startY.value = translateY.value;\n scale.value = withTiming(GESTURE_CONSTANTS.scaleAmount, ANIMATION_CONFIG.scale);\n }, [dismissKeyboard]);\n\n const handlePanResponderMove = useCallback((_: GestureResponderEvent, gestureState: PanResponderGestureState) => {\n const newTranslateX = (startX.value + gestureState.dx) / GESTURE_CONSTANTS.horizontalDamping;\n translateX.value = newTranslateX;\n\n const newTranslateY = startY.value + gestureState.dy;\n if (newTranslateY < 0) {\n translateY.value = newTranslateY / GESTURE_CONSTANTS.verticalUpDamping;\n } else {\n translateY.value = newTranslateY / GESTURE_CONSTANTS.verticalDownDamping;\n }\n }, []);\n\n const handlePanResponderRelease = useCallback((_: GestureResponderEvent, gestureState: PanResponderGestureState) => {\n isGesturing.value = false;\n\n const xVelocity = (gestureState.vx / GESTURE_CONSTANTS.horizontalDamping) * 1000;\n translateX.value = withSpring(0, { ...ANIMATION_CONFIG.restore, velocity: xVelocity });\n\n const dismissThresholdHeight = sheetHeight > 0 ? sheetHeight : constrainedMaxHeight;\n const dismissDistanceThreshold = Math.max(\n dismissThresholdHeight * GESTURE_CONSTANTS.closeDistanceRatio,\n GESTURE_CONSTANTS.minimumCloseDistance\n );\n const shouldClose = gestureState.vy > GESTURE_CONSTANTS.closeVelocityThreshold ||\n translateY.value > dismissDistanceThreshold;\n\n if (shouldClose) {\n const targetCloseOffset = latestCloseOffsetRef.current;\n closingOffsetRef.current = targetCloseOffset;\n translateY.value = withTiming(targetCloseOffset, ANIMATION_CONFIG.close);\n closeBottomSheet();\n } else {\n const yDamping = translateY.value >= 0\n ? GESTURE_CONSTANTS.verticalDownDamping\n : GESTURE_CONSTANTS.verticalUpDamping;\n const yVelocity = (gestureState.vy / yDamping) * 1000;\n translateY.value = withSpring(0, { ...ANIMATION_CONFIG.restore, velocity: yVelocity });\n }\n\n scale.value = withSpring(1, ANIMATION_CONFIG.scaleRestore);\n }, [closeBottomSheet, constrainedMaxHeight, sheetHeight]);\n\n const panResponder = useMemo(\n () => PanResponder.create({\n onStartShouldSetPanResponder: () => false,\n onStartShouldSetPanResponderCapture: () => false,\n onMoveShouldSetPanResponder: (_, gestureState) => {\n const { dx, dy } = gestureState;\n return Math.abs(dx) > GESTURE_CONSTANTS.moveThreshold || Math.abs(dy) > GESTURE_CONSTANTS.moveThreshold;\n },\n onMoveShouldSetPanResponderCapture: () => false,\n onPanResponderGrant: handlePanResponderGrant,\n onPanResponderMove: handlePanResponderMove,\n onPanResponderRelease: handlePanResponderRelease,\n }),\n [handlePanResponderGrant, handlePanResponderMove, handlePanResponderRelease]\n );\n\n const handleBackgroundPress = useCallback(() => {\n if (isBackgroundTouchClose) setBottomSheetVisible(false);\n }, [isBackgroundTouchClose, setBottomSheetVisible]);\n\n const containerHeightStyle = useMemo<ViewStyle>(() => {\n if (isAutoHeight) {\n return { maxHeight: constrainedMaxHeight };\n }\n\n return {\n height: constrainedMaxHeight,\n maxHeight: constrainedMaxHeight,\n };\n }, [constrainedMaxHeight, isAutoHeight]);\n\n const containerStyle = [\n styles.container,\n containerHeightStyle,\n {\n width: options.type === 'fixed' ? '100%' : windowWidth - marginHorizontal * 2,\n maxWidth: foldableSingleScreen ? OVERLAY_FOLDABLE_SINGLE_WIDTH : '100%',\n marginHorizontal: options.type === 'fixed' ? 0 : marginHorizontal,\n bottom: options.type === 'fixed' ? 0 : marginBottom + bottomInsets,\n paddingBottom: options.type === 'fixed' ? bottomInsets : 0,\n backgroundColor: palette.background.base,\n ... (options.type === 'fixed' ? { borderTopLeftRadius: 26, borderTopRightRadius: 26, borderBottomLeftRadius: 0, borderBottomRightRadius: 0 } : { borderRadius: 26 }),\n },\n animatedStyles,\n ] as ViewStyle[];\n\n const pressableViewStyle = [\n styles.pressableView,\n { paddingHorizontal: padding, paddingBottom: padding },\n isAutoHeight ? styles.pressableViewAuto : styles.pressableViewFill,\n ];\n\n const contentWrapperStyle = [\n styles.contentWrapper,\n isAutoHeight ? styles.contentWrapperAuto : styles.contentWrapperFill,\n ];\n\n const gestureBarContainerStyle = [\n styles.gestureBarContainer,\n { paddingBottom: padding }\n ];\n\n const gestureBarStyle = [\n styles.gestureBar,\n { backgroundColor: palette.grey[60] }\n ];\n\n if (!localVisible) {\n return null;\n }\n\n return (\n <ModalBackground\n zIndex={Z_INDEX_VALUE.BOTTOM_SHEET1}\n key={localVisible ? 'visiblebs' : 'hiddenbs'}\n modalBgColor={palette.modalBgColor}\n onPress={handleBackgroundPress}\n >\n <Animated.View style={containerStyle} onLayout={handleSheetLayout}>\n <View style={pressableViewStyle}>\n <View {...panResponder.panHandlers}>\n <View style={gestureBarContainerStyle}>\n <View style={gestureBarStyle} />\n </View>\n {headerComponent}\n </View>\n\n <View style={contentWrapperStyle}>\n {component}\n </View>\n </View>\n </Animated.View>\n </ModalBackground>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n position: 'absolute',\n borderRadius: 26,\n overflow: 'hidden',\n zIndex: Z_INDEX_VALUE.BOTTOM_SHEET2,\n },\n pressableView: {\n width: '100%',\n maxHeight: '100%',\n },\n pressableViewFill: {\n height: '100%',\n },\n pressableViewAuto: {\n flexShrink: 1,\n },\n contentWrapper: {\n minHeight: 0,\n },\n contentWrapperFill: {\n flex: 1,\n },\n contentWrapperAuto: {\n flexShrink: 1,\n maxHeight: '100%',\n },\n gestureBarContainer: {\n width: '100%',\n paddingTop: 10,\n justifyContent: 'center',\n alignItems: 'center',\n },\n gestureBar: {\n width: 45,\n height: 3,\n borderRadius: 2,\n },\n});\n\nexport default BottomSheetOverlay;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/overlay/BottomSheetOverlay/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState, useCallback, useMemo, useRef } from 'react';\nimport { StyleSheet, View, PanResponder, Keyboard, Platform, type KeyboardEvent, type LayoutChangeEvent, type PanResponderGestureState, type GestureResponderEvent, useWindowDimensions, type ViewStyle } from 'react-native';\nimport { useBottomSheet } from '../../model/useOverlay';\nimport Animated, { useAnimatedStyle, useSharedValue, withSpring, withTiming } from 'react-native-reanimated';\nimport ModalBackground from '../ui/ModalBackground';\nimport { useTheme } from '../../context/ThemeContext';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { ShowBottomSheetProps } from '../../model/types';\nimport { OVERLAY_FOLDABLE_SINGLE_WIDTH, Z_INDEX_VALUE } from '../../model/utils';\nimport { RADIUS } from '../../theme/tokens';\nimport useKeyboard from '../../model/useKeyboard';\nimport useFoldingState from '../../model/useFoldingState';\n\nconst IS_IOS = Platform.OS === 'ios';\n\nconst ANIMATION_CONFIG = {\n keyboard: {\n show: { duration: 250 },\n hide: { duration: 150 },\n },\n spring: {\n damping: 50,\n stiffness: 300,\n mass: 0.7,\n velocity: 100,\n restDisplacementThreshold: 0.2,\n },\n restore: {\n damping: 26,\n stiffness: 260,\n mass: 0.85,\n restDisplacementThreshold: 0.1,\n restSpeedThreshold: 2,\n },\n close: { duration: 150 },\n scale: { duration: 200 },\n scaleRestore: {\n damping: 15,\n stiffness: 300,\n },\n} as const;\n\nconst GESTURE_CONSTANTS = {\n scaleAmount: 0.985,\n horizontalDamping: 18,\n verticalUpDamping: 18,\n verticalDownDamping: 1.5,\n closeVelocityThreshold: 0.5,\n closeDistanceRatio: 1 / 3,\n minimumCloseDistance: 80,\n hideDelay: 200,\n moveThreshold: 10,\n} as const;\n\nconst getSafeFiniteNumber = (value: number, fallback: number) =>\n Number.isFinite(value) ? value : fallback;\n\nfunction BottomSheetOverlay({\n headerComponent,\n component,\n options = {},\n}: ShowBottomSheetProps) {\n const {\n foldableSingleScreen = false,\n isBackgroundTouchClose = true,\n marginHorizontal = 10,\n marginBottom = 10,\n padding = 14,\n } = options;\n const { height: windowHeight } = useWindowDimensions();\n const { width: windowWidth } = useFoldingState();\n const { palette } = useTheme();\n const { bottomSheetVisible, setBottomSheetVisible, height, maxHeight } = useBottomSheet();\n const { bottom: bottomInsets, top: topInsets } = useSafeAreaInsets();\n const [sheetHeight, setSheetHeight] = useState(0);\n const isAutoHeight = height === 'auto';\n\n const viewportMaxHeight = useMemo(() =>\n Math.max(\n windowHeight - 30 - bottomInsets - topInsets,\n 0\n ),\n [bottomInsets, topInsets, windowHeight]\n );\n\n const constrainedMaxHeight = useMemo(() => {\n const maxHeightLimit = Math.max(getSafeFiniteNumber(maxHeight, viewportMaxHeight), 0);\n\n if (isAutoHeight) {\n return Math.min(viewportMaxHeight, maxHeightLimit);\n }\n\n return Math.min(viewportMaxHeight, maxHeightLimit, Math.max(getSafeFiniteNumber(height, 0), 0));\n }, [height, isAutoHeight, maxHeight, viewportMaxHeight]);\n\n const translateY = useSharedValue(0);\n const translateX = useSharedValue(0);\n const scale = useSharedValue(1);\n const startX = useSharedValue(0);\n const startY = useSharedValue(0);\n const isGesturing = useSharedValue(false);\n\n const [localVisible, setLocalVisible] = useState(false);\n const latestCloseOffsetRef = useRef(constrainedMaxHeight + 100);\n const closingOffsetRef = useRef(constrainedMaxHeight + 100);\n\n useEffect(() => {\n latestCloseOffsetRef.current = sheetHeight > 0 ? sheetHeight + 100 : constrainedMaxHeight + 100;\n }, [constrainedMaxHeight, sheetHeight]);\n\n const handleKeyboardShow = useCallback((event: KeyboardEvent) => {\n if (!isGesturing.value) {\n const targetY = -event.endCoordinates.height + (IS_IOS ? bottomInsets : 0);\n translateY.value = withTiming(targetY, ANIMATION_CONFIG.keyboard.show);\n }\n }, [bottomInsets]);\n\n const handleKeyboardHide = useCallback(() => {\n if (!isGesturing.value) {\n translateY.value = withTiming(0, ANIMATION_CONFIG.keyboard.hide);\n }\n }, []);\n\n useKeyboard({\n handleKeyboardShow,\n handleKeyboardHide,\n });\n\n useEffect(() => {\n let timeoutId: ReturnType<typeof setTimeout>;\n\n if (bottomSheetVisible) {\n closingOffsetRef.current = latestCloseOffsetRef.current;\n Keyboard.dismiss();\n translateY.value = latestCloseOffsetRef.current;\n setLocalVisible(true);\n translateY.value = withSpring(0, ANIMATION_CONFIG.spring);\n } else {\n const targetCloseOffset = closingOffsetRef.current || latestCloseOffsetRef.current;\n closingOffsetRef.current = targetCloseOffset;\n translateY.value = withTiming(targetCloseOffset, ANIMATION_CONFIG.close);\n timeoutId = setTimeout(() => {\n setLocalVisible(false);\n }, GESTURE_CONSTANTS.hideDelay);\n }\n\n return () => {\n if (timeoutId) clearTimeout(timeoutId);\n };\n }, [bottomSheetVisible]);\n\n const animatedStyles = useAnimatedStyle(() => {\n return {\n transform: [\n { translateY: translateY.value },\n { translateX: translateX.value },\n { scale: scale.value }\n ],\n };\n });\n\n const dismissKeyboard = useCallback(() => {\n Keyboard.dismiss();\n }, []);\n\n const closeBottomSheet = useCallback(() => {\n setBottomSheetVisible(false);\n }, [setBottomSheetVisible]);\n\n const handleSheetLayout = useCallback((event: LayoutChangeEvent) => {\n const nextHeight = Math.round(event.nativeEvent.layout.height);\n\n if (nextHeight > 0) {\n const nextCloseOffset = nextHeight + 100;\n latestCloseOffsetRef.current = nextCloseOffset;\n if (bottomSheetVisible) {\n closingOffsetRef.current = nextCloseOffset;\n }\n }\n\n setSheetHeight((prevHeight) => {\n if (Math.abs(prevHeight - nextHeight) <= 1) {\n return prevHeight;\n }\n\n return nextHeight;\n });\n }, [bottomSheetVisible]);\n\n const handlePanResponderGrant = useCallback(() => {\n dismissKeyboard();\n isGesturing.value = true;\n startX.value = translateX.value;\n startY.value = translateY.value;\n scale.value = withTiming(GESTURE_CONSTANTS.scaleAmount, ANIMATION_CONFIG.scale);\n }, [dismissKeyboard]);\n\n const handlePanResponderMove = useCallback((_: GestureResponderEvent, gestureState: PanResponderGestureState) => {\n const newTranslateX = (startX.value + gestureState.dx) / GESTURE_CONSTANTS.horizontalDamping;\n translateX.value = newTranslateX;\n\n const newTranslateY = startY.value + gestureState.dy;\n if (newTranslateY < 0) {\n translateY.value = newTranslateY / GESTURE_CONSTANTS.verticalUpDamping;\n } else {\n translateY.value = newTranslateY / GESTURE_CONSTANTS.verticalDownDamping;\n }\n }, []);\n\n const handlePanResponderRelease = useCallback((_: GestureResponderEvent, gestureState: PanResponderGestureState) => {\n isGesturing.value = false;\n\n const xVelocity = (gestureState.vx / GESTURE_CONSTANTS.horizontalDamping) * 1000;\n translateX.value = withSpring(0, { ...ANIMATION_CONFIG.restore, velocity: xVelocity });\n\n const dismissThresholdHeight = sheetHeight > 0 ? sheetHeight : constrainedMaxHeight;\n const dismissDistanceThreshold = Math.max(\n dismissThresholdHeight * GESTURE_CONSTANTS.closeDistanceRatio,\n GESTURE_CONSTANTS.minimumCloseDistance\n );\n const shouldClose = gestureState.vy > GESTURE_CONSTANTS.closeVelocityThreshold ||\n translateY.value > dismissDistanceThreshold;\n\n if (shouldClose) {\n const targetCloseOffset = latestCloseOffsetRef.current;\n closingOffsetRef.current = targetCloseOffset;\n translateY.value = withTiming(targetCloseOffset, ANIMATION_CONFIG.close);\n closeBottomSheet();\n } else {\n const yDamping = translateY.value >= 0\n ? GESTURE_CONSTANTS.verticalDownDamping\n : GESTURE_CONSTANTS.verticalUpDamping;\n const yVelocity = (gestureState.vy / yDamping) * 1000;\n translateY.value = withSpring(0, { ...ANIMATION_CONFIG.restore, velocity: yVelocity });\n }\n\n scale.value = withSpring(1, ANIMATION_CONFIG.scaleRestore);\n }, [closeBottomSheet, constrainedMaxHeight, sheetHeight]);\n\n const panResponder = useMemo(\n () => PanResponder.create({\n onStartShouldSetPanResponder: () => false,\n onStartShouldSetPanResponderCapture: () => false,\n onMoveShouldSetPanResponder: (_, gestureState) => {\n const { dx, dy } = gestureState;\n return Math.abs(dx) > GESTURE_CONSTANTS.moveThreshold || Math.abs(dy) > GESTURE_CONSTANTS.moveThreshold;\n },\n onMoveShouldSetPanResponderCapture: () => false,\n onPanResponderGrant: handlePanResponderGrant,\n onPanResponderMove: handlePanResponderMove,\n onPanResponderRelease: handlePanResponderRelease,\n }),\n [handlePanResponderGrant, handlePanResponderMove, handlePanResponderRelease]\n );\n\n const handleBackgroundPress = useCallback(() => {\n if (isBackgroundTouchClose) setBottomSheetVisible(false);\n }, [isBackgroundTouchClose, setBottomSheetVisible]);\n\n const containerHeightStyle = useMemo<ViewStyle>(() => {\n if (isAutoHeight) {\n return { maxHeight: constrainedMaxHeight };\n }\n\n return {\n height: constrainedMaxHeight,\n maxHeight: constrainedMaxHeight,\n };\n }, [constrainedMaxHeight, isAutoHeight]);\n\n const containerStyle = [\n styles.container,\n containerHeightStyle,\n {\n width: options.type === 'fixed' ? '100%' : windowWidth - marginHorizontal * 2,\n maxWidth: foldableSingleScreen ? OVERLAY_FOLDABLE_SINGLE_WIDTH : '100%',\n marginHorizontal: options.type === 'fixed' ? 0 : marginHorizontal,\n bottom: options.type === 'fixed' ? 0 : marginBottom + bottomInsets,\n paddingBottom: options.type === 'fixed' ? bottomInsets : 0,\n backgroundColor: palette.background.base,\n ... (options.type === 'fixed' ? { borderTopLeftRadius: RADIUS.sheet, borderTopRightRadius: RADIUS.sheet, borderBottomLeftRadius: 0, borderBottomRightRadius: 0 } : { borderRadius: RADIUS.sheet }),\n },\n animatedStyles,\n ] as ViewStyle[];\n\n const pressableViewStyle = [\n styles.pressableView,\n { paddingHorizontal: padding, paddingBottom: padding },\n isAutoHeight ? styles.pressableViewAuto : styles.pressableViewFill,\n ];\n\n const contentWrapperStyle = [\n styles.contentWrapper,\n isAutoHeight ? styles.contentWrapperAuto : styles.contentWrapperFill,\n ];\n\n const gestureBarContainerStyle = [\n styles.gestureBarContainer,\n { paddingBottom: padding }\n ];\n\n const gestureBarStyle = [\n styles.gestureBar,\n { backgroundColor: palette.grey[60] }\n ];\n\n if (!localVisible) {\n return null;\n }\n\n return (\n <ModalBackground\n zIndex={Z_INDEX_VALUE.BOTTOM_SHEET1}\n key={localVisible ? 'visiblebs' : 'hiddenbs'}\n modalBgColor={palette.modalBgColor}\n onPress={handleBackgroundPress}\n >\n <Animated.View style={containerStyle} onLayout={handleSheetLayout}>\n <View style={pressableViewStyle}>\n <View {...panResponder.panHandlers}>\n <View style={gestureBarContainerStyle}>\n <View style={gestureBarStyle} />\n </View>\n {headerComponent}\n </View>\n\n <View style={contentWrapperStyle}>\n {component}\n </View>\n </View>\n </Animated.View>\n </ModalBackground>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n position: 'absolute',\n borderRadius: RADIUS.sheet,\n overflow: 'hidden',\n zIndex: Z_INDEX_VALUE.BOTTOM_SHEET2,\n },\n pressableView: {\n width: '100%',\n maxHeight: '100%',\n },\n pressableViewFill: {\n height: '100%',\n },\n pressableViewAuto: {\n flexShrink: 1,\n },\n contentWrapper: {\n minHeight: 0,\n },\n contentWrapperFill: {\n flex: 1,\n },\n contentWrapperAuto: {\n flexShrink: 1,\n maxHeight: '100%',\n },\n gestureBarContainer: {\n width: '100%',\n paddingTop: 10,\n justifyContent: 'center',\n alignItems: 'center',\n },\n gestureBar: {\n width: 45,\n height: 3,\n borderRadius: 1.5,\n },\n});\n\nexport default BottomSheetOverlay;\n"]}
@@ -1,6 +1,6 @@
1
- import React, { ReactNode } from "react";
1
+ import { ReactNode } from "react";
2
2
  declare function LoadingNotify({ loaderComponent, }: {
3
3
  loaderComponent?: () => ReactNode;
4
- }): React.JSX.Element | null;
4
+ }): import("react").JSX.Element | null;
5
5
  export default LoadingNotify;
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/overlay/LoadingNotify/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAe,MAAM,OAAO,CAAC;AAMtD,iBAAS,aAAa,CAAC,EACrB,eAAe,GAChB,EAAE;IACD,eAAe,CAAC,EAAE,MAAM,SAAS,CAAC;CACnC,4BA0BA;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/overlay/LoadingNotify/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAe,MAAM,OAAO,CAAC;AAM/C,iBAAS,aAAa,CAAC,EACrB,eAAe,GAChB,EAAE;IACD,eAAe,CAAC,EAAE,MAAM,SAAS,CAAC;CACnC,sCA0BA;AAED,eAAe,aAAa,CAAC"}
@@ -9,8 +9,8 @@ function LoadingNotify({ loaderComponent, }) {
9
9
  const { loaderVisible } = useLoader();
10
10
  const { palette } = useTheme();
11
11
  const renderLoader = useCallback(() => {
12
- return loaderComponent ? (loaderComponent()) : (_jsx(ActivityIndicator, { size: "large", color: "#fff" }));
13
- }, [loaderComponent]);
12
+ return loaderComponent ? (loaderComponent()) : (_jsx(ActivityIndicator, { size: "large", color: palette.text.white }));
13
+ }, [loaderComponent, palette.text.white]);
14
14
  if (!loaderVisible)
15
15
  return null;
16
16
  return (_jsx(ModalBackground, { zIndex: Z_INDEX_VALUE.LOADING, modalBgColor: palette.modalBgColor, children: renderLoader() }, loaderVisible ? 'visibleln' : 'hiddenln'));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/overlay/LoadingNotify/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAc,EAAa,WAAW,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,SAAS,aAAa,CAAC,EACrB,eAAe,GAGhB;IACC,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC;IACtC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE/B,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,OAAO,eAAe,CAAC,CAAC,CAAC,CACvB,eAAe,EAAE,CAClB,CAAC,CAAC,CAAC,CACF,KAAC,iBAAiB,IAChB,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,MAAM,GACZ,CACH,CAAC;IACJ,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,OAAO,CACL,KAAC,eAAe,IACd,MAAM,EAAE,aAAa,CAAC,OAAO,EAE7B,YAAY,EAAE,OAAO,CAAC,YAAY,YAEjC,YAAY,EAAE,IAHV,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAI7B,CACnB,CAAA;AACH,CAAC;AAED,eAAe,aAAa,CAAC","sourcesContent":["import { ActivityIndicator } from \"react-native\";\nimport React, { ReactNode, useCallback } from \"react\";\nimport { useLoader } from \"../../model/useOverlay\";\nimport ModalBackground from \"../ui/ModalBackground\";\nimport { useTheme } from \"../../context/ThemeContext\";\nimport { Z_INDEX_VALUE } from \"../../model/utils\";\n\nfunction LoadingNotify({\n loaderComponent,\n}: {\n loaderComponent?: () => ReactNode;\n}) {\n const { loaderVisible } = useLoader();\n const { palette } = useTheme();\n\n const renderLoader = useCallback(() => {\n return loaderComponent ? (\n loaderComponent()\n ) : (\n <ActivityIndicator\n size=\"large\"\n color=\"#fff\"\n />\n );\n }, [loaderComponent]);\n\n if (!loaderVisible) return null;\n\n return (\n <ModalBackground\n zIndex={Z_INDEX_VALUE.LOADING}\n key={loaderVisible ? 'visibleln' : 'hiddenln'}\n modalBgColor={palette.modalBgColor}\n >\n {renderLoader()}\n </ModalBackground>\n )\n}\n\nexport default LoadingNotify;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/overlay/LoadingNotify/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAa,WAAW,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,SAAS,aAAa,CAAC,EACrB,eAAe,GAGhB;IACC,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC;IACtC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE/B,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,OAAO,eAAe,CAAC,CAAC,CAAC,CACvB,eAAe,EAAE,CAClB,CAAC,CAAC,CAAC,CACF,KAAC,iBAAiB,IAChB,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,GACzB,CACH,CAAC;IACJ,CAAC,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAE1C,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,OAAO,CACL,KAAC,eAAe,IACd,MAAM,EAAE,aAAa,CAAC,OAAO,EAE7B,YAAY,EAAE,OAAO,CAAC,YAAY,YAEjC,YAAY,EAAE,IAHV,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAI7B,CACnB,CAAA;AACH,CAAC;AAED,eAAe,aAAa,CAAC","sourcesContent":["import { ActivityIndicator } from \"react-native\";\nimport { ReactNode, useCallback } from \"react\";\nimport { useLoader } from \"../../model/useOverlay\";\nimport ModalBackground from \"../ui/ModalBackground\";\nimport { useTheme } from \"../../context/ThemeContext\";\nimport { Z_INDEX_VALUE } from \"../../model/utils\";\n\nfunction LoadingNotify({\n loaderComponent,\n}: {\n loaderComponent?: () => ReactNode;\n}) {\n const { loaderVisible } = useLoader();\n const { palette } = useTheme();\n\n const renderLoader = useCallback(() => {\n return loaderComponent ? (\n loaderComponent()\n ) : (\n <ActivityIndicator\n size=\"large\"\n color={palette.text.white}\n />\n );\n }, [loaderComponent, palette.text.white]);\n\n if (!loaderVisible) return null;\n\n return (\n <ModalBackground\n zIndex={Z_INDEX_VALUE.LOADING}\n key={loaderVisible ? 'visibleln' : 'hiddenln'}\n modalBgColor={palette.modalBgColor}\n >\n {renderLoader()}\n </ModalBackground>\n )\n}\n\nexport default LoadingNotify;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/overlay/Modality/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAWnD,iBAAS,QAAQ,CAAC,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,EAAE;IACD,iBAAiB,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,oBAAoB,EAAE,OAAO,CAAC;CAC/B,4BA0GA;AA6BD,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/overlay/Modality/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AASnD,iBAAS,QAAQ,CAAC,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,EAAE;IACD,iBAAiB,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,oBAAoB,EAAE,OAAO,CAAC;CAC/B,4BA2GA;AA6BD,eAAe,QAAQ,CAAC"}
@@ -1,15 +1,15 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
- import { Dimensions, StatusBar, StyleSheet } from 'react-native';
3
+ import { StatusBar, StyleSheet, useWindowDimensions } from 'react-native';
4
4
  import { useSafeAreaInsets, initialWindowMetrics } from 'react-native-safe-area-context';
5
5
  import Animated, { FadeOut, useAnimatedStyle, withTiming, withDelay, useSharedValue } from 'react-native-reanimated';
6
6
  import { useModality } from '../../model/useOverlay';
7
7
  import { OVERLAY_FOLDABLE_SINGLE_WIDTH, Z_INDEX_VALUE } from '../../model/utils';
8
8
  import ZSView from '../../ui/ZSView';
9
9
  import { useTheme } from '../../context/ThemeContext';
10
- const windowHeight = Dimensions.get('window').height;
11
10
  function Modality({ foldableSingleScreen, modalityComponent, }) {
12
11
  const { palette } = useTheme();
12
+ const { height: windowHeight } = useWindowDimensions();
13
13
  const [localVisible, setLocalVisible] = useState(false);
14
14
  const { modalityVisible } = useModality();
15
15
  const insets = useSafeAreaInsets();
@@ -45,7 +45,7 @@ function Modality({ foldableSingleScreen, modalityComponent, }) {
45
45
  if (timeoutId)
46
46
  clearTimeout(timeoutId);
47
47
  };
48
- }, [modalityVisible, insets.top]);
48
+ }, [modalityVisible, insets.top, windowHeight]);
49
49
  const backScreenAnimatedStyle = useAnimatedStyle(() => {
50
50
  return {
51
51
  transform: [
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/overlay/Modality/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { Dimensions, StatusBar, StyleSheet } from 'react-native';\nimport { useSafeAreaInsets, initialWindowMetrics } from 'react-native-safe-area-context';\nimport Animated, { FadeOut, useAnimatedStyle, withTiming, withDelay, useSharedValue } from 'react-native-reanimated';\nimport { useModality } from '../../model/useOverlay';\nimport { OVERLAY_FOLDABLE_SINGLE_WIDTH, Z_INDEX_VALUE } from '../../model/utils';\nimport ZSView from '../../ui/ZSView';\nimport { useTheme } from '../../context/ThemeContext';\n\nconst windowHeight = Dimensions.get('window').height;\n\nfunction Modality({\n foldableSingleScreen,\n modalityComponent,\n}: {\n modalityComponent: React.ReactNode;\n foldableSingleScreen: boolean;\n}) {\n const { palette } = useTheme();\n const [localVisible, setLocalVisible] = useState(false);\n const { modalityVisible } = useModality();\n const insets = useSafeAreaInsets();\n const backScale = useSharedValue(1);\n const backTranslateY = useSharedValue(0);\n const backBorderRadius = useSharedValue(0);\n const mainTranslateY = useSharedValue(windowHeight);\n const backgroundOpacity = useSharedValue(1);\n const overrideMargin = 10;\n const mainScreenMargin = insets.top;\n const mainScrrenPadding = (initialWindowMetrics?.insets.bottom || insets.bottom);\n\n useEffect(() => {\n let timeoutId: ReturnType<typeof setTimeout>;\n \n if (modalityVisible) {\n setLocalVisible(true);\n backScale.value = withDelay(100, withTiming(0.92, { duration: 200 }));\n backTranslateY.value = withDelay(300, withTiming(insets.top, { duration: 200 }));\n backBorderRadius.value = withDelay(100, withTiming(12, { duration: 200 }));\n mainTranslateY.value = withDelay(200, withTiming(overrideMargin + insets.top, { duration: 200 }));\n backgroundOpacity.value = withTiming(1, { duration: 500 });\n } else {\n backScale.value = withTiming(1, { duration: 100 });\n backTranslateY.value = withTiming(0, { duration: 100 });\n backBorderRadius.value = withTiming(0, { duration: 100 });\n mainTranslateY.value = withTiming(windowHeight, { duration: 200 });\n backgroundOpacity.value = withTiming(0, { duration: 300 });\n timeoutId = setTimeout(() => {\n setLocalVisible(false);\n }, 500);\n }\n\n return () => {\n if (timeoutId) clearTimeout(timeoutId);\n };\n }, [modalityVisible, insets.top]);\n\n const backScreenAnimatedStyle = useAnimatedStyle(() => {\n return {\n transform: [\n { scaleX: backScale.value },\n { translateY: backTranslateY.value }\n ],\n borderTopLeftRadius: backBorderRadius.value,\n borderTopRightRadius: backBorderRadius.value,\n };\n });\n\n const mainScreenAnimatedStyle = useAnimatedStyle(() => {\n return {\n transform: [\n { translateY: mainTranslateY.value }\n ]\n };\n });\n\n const backgroundAnimatedStyle = useAnimatedStyle(() => {\n return {\n opacity: backgroundOpacity.value\n };\n });\n\n return (\n !localVisible ? null :\n <Animated.View\n key={localVisible ? 'visiblemd' : 'hiddenmd'}\n style={[\n styles.animatedBackground,\n { backgroundColor: palette.background.neutral },\n backgroundAnimatedStyle\n ]}\n >\n <StatusBar backgroundColor={modalityVisible ? palette.background.neutral : palette.background.base} />\n\n <Animated.View\n exiting={FadeOut.duration(300)}\n style={[\n styles.backScreen,\n { backgroundColor: palette.background.layer2, width: '100%', height: windowHeight, maxWidth: foldableSingleScreen ? OVERLAY_FOLDABLE_SINGLE_WIDTH : '100%' },\n backScreenAnimatedStyle\n ]}\n />\n\n <Animated.View\n style={[\n {\n height: windowHeight - mainScreenMargin,\n paddingBottom: mainScrrenPadding,\n backgroundColor: palette.background.base,\n width: '100%',\n maxWidth: foldableSingleScreen ? OVERLAY_FOLDABLE_SINGLE_WIDTH : '100%',\n alignSelf: 'center',\n },\n styles.mainScreen,\n mainScreenAnimatedStyle\n ]}\n >\n <ZSView style={[styles.contents, { width: '100%'}]}>\n {modalityComponent}\n </ZSView>\n </Animated.View>\n </Animated.View>\n );\n}\n\nconst styles = StyleSheet.create({\n contents: {\n flex: 1,\n paddingTop: 10,\n zIndex: Z_INDEX_VALUE.MODAL4,\n },\n animatedBackground: {\n ...StyleSheet.absoluteFill,\n zIndex: Z_INDEX_VALUE.MODAL1,\n alignSelf: 'center',\n },\n backScreen: {\n position: 'absolute',\n justifyContent: 'center',\n alignItems: 'center',\n alignSelf: 'center',\n zIndex: Z_INDEX_VALUE.MODAL2,\n },\n mainScreen: {\n position: 'absolute',\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n zIndex: Z_INDEX_VALUE.MODAL3,\n overflow: 'hidden',\n },\n});\n\nexport default Modality;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/overlay/Modality/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { StatusBar, StyleSheet, useWindowDimensions } from 'react-native';\nimport { useSafeAreaInsets, initialWindowMetrics } from 'react-native-safe-area-context';\nimport Animated, { FadeOut, useAnimatedStyle, withTiming, withDelay, useSharedValue } from 'react-native-reanimated';\nimport { useModality } from '../../model/useOverlay';\nimport { OVERLAY_FOLDABLE_SINGLE_WIDTH, Z_INDEX_VALUE } from '../../model/utils';\nimport ZSView from '../../ui/ZSView';\nimport { useTheme } from '../../context/ThemeContext';\n\nfunction Modality({\n foldableSingleScreen,\n modalityComponent,\n}: {\n modalityComponent: React.ReactNode;\n foldableSingleScreen: boolean;\n}) {\n const { palette } = useTheme();\n const { height: windowHeight } = useWindowDimensions();\n const [localVisible, setLocalVisible] = useState(false);\n const { modalityVisible } = useModality();\n const insets = useSafeAreaInsets();\n const backScale = useSharedValue(1);\n const backTranslateY = useSharedValue(0);\n const backBorderRadius = useSharedValue(0);\n const mainTranslateY = useSharedValue(windowHeight);\n const backgroundOpacity = useSharedValue(1);\n const overrideMargin = 10;\n const mainScreenMargin = insets.top;\n const mainScrrenPadding = (initialWindowMetrics?.insets.bottom || insets.bottom);\n\n useEffect(() => {\n let timeoutId: ReturnType<typeof setTimeout>;\n \n if (modalityVisible) {\n setLocalVisible(true);\n backScale.value = withDelay(100, withTiming(0.92, { duration: 200 }));\n backTranslateY.value = withDelay(300, withTiming(insets.top, { duration: 200 }));\n backBorderRadius.value = withDelay(100, withTiming(12, { duration: 200 }));\n mainTranslateY.value = withDelay(200, withTiming(overrideMargin + insets.top, { duration: 200 }));\n backgroundOpacity.value = withTiming(1, { duration: 500 });\n } else {\n backScale.value = withTiming(1, { duration: 100 });\n backTranslateY.value = withTiming(0, { duration: 100 });\n backBorderRadius.value = withTiming(0, { duration: 100 });\n mainTranslateY.value = withTiming(windowHeight, { duration: 200 });\n backgroundOpacity.value = withTiming(0, { duration: 300 });\n timeoutId = setTimeout(() => {\n setLocalVisible(false);\n }, 500);\n }\n\n return () => {\n if (timeoutId) clearTimeout(timeoutId);\n };\n }, [modalityVisible, insets.top, windowHeight]);\n\n const backScreenAnimatedStyle = useAnimatedStyle(() => {\n return {\n transform: [\n { scaleX: backScale.value },\n { translateY: backTranslateY.value }\n ],\n borderTopLeftRadius: backBorderRadius.value,\n borderTopRightRadius: backBorderRadius.value,\n };\n });\n\n const mainScreenAnimatedStyle = useAnimatedStyle(() => {\n return {\n transform: [\n { translateY: mainTranslateY.value }\n ]\n };\n });\n\n const backgroundAnimatedStyle = useAnimatedStyle(() => {\n return {\n opacity: backgroundOpacity.value\n };\n });\n\n return (\n !localVisible ? null :\n <Animated.View\n key={localVisible ? 'visiblemd' : 'hiddenmd'}\n style={[\n styles.animatedBackground,\n { backgroundColor: palette.background.neutral },\n backgroundAnimatedStyle\n ]}\n >\n <StatusBar backgroundColor={modalityVisible ? palette.background.neutral : palette.background.base} />\n\n <Animated.View\n exiting={FadeOut.duration(300)}\n style={[\n styles.backScreen,\n { backgroundColor: palette.background.layer2, width: '100%', height: windowHeight, maxWidth: foldableSingleScreen ? OVERLAY_FOLDABLE_SINGLE_WIDTH : '100%' },\n backScreenAnimatedStyle\n ]}\n />\n\n <Animated.View\n style={[\n {\n height: windowHeight - mainScreenMargin,\n paddingBottom: mainScrrenPadding,\n backgroundColor: palette.background.base,\n width: '100%',\n maxWidth: foldableSingleScreen ? OVERLAY_FOLDABLE_SINGLE_WIDTH : '100%',\n alignSelf: 'center',\n },\n styles.mainScreen,\n mainScreenAnimatedStyle\n ]}\n >\n <ZSView style={[styles.contents, { width: '100%'}]}>\n {modalityComponent}\n </ZSView>\n </Animated.View>\n </Animated.View>\n );\n}\n\nconst styles = StyleSheet.create({\n contents: {\n flex: 1,\n paddingTop: 10,\n zIndex: Z_INDEX_VALUE.MODAL4,\n },\n animatedBackground: {\n ...StyleSheet.absoluteFill,\n zIndex: Z_INDEX_VALUE.MODAL1,\n alignSelf: 'center',\n },\n backScreen: {\n position: 'absolute',\n justifyContent: 'center',\n alignItems: 'center',\n alignSelf: 'center',\n zIndex: Z_INDEX_VALUE.MODAL2,\n },\n mainScreen: {\n position: 'absolute',\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n zIndex: Z_INDEX_VALUE.MODAL3,\n overflow: 'hidden',\n },\n});\n\nexport default Modality;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PopOverMenu.d.ts","sourceRoot":"","sources":["../../../src/overlay/PopOver/PopOverMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAMrD,iBAAS,WAAW,CAAC,EACnB,EAAE,EACF,EAAE,EACF,SAAS,EACV,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAuF9C;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"PopOverMenu.d.ts","sourceRoot":"","sources":["../../../src/overlay/PopOver/PopOverMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAMrD,iBAAS,WAAW,CAAC,EACnB,EAAE,EACF,EAAE,EACF,SAAS,EACV,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAyF9C;AAED,eAAe,WAAW,CAAC"}
@@ -41,14 +41,16 @@ function PopOverMenu({ px, py, component }) {
41
41
  const getAdjustedPosition = () => {
42
42
  let adjustedX = px - contentWidth;
43
43
  let adjustedY = py;
44
- if (adjustedX > windowWidth) {
45
- adjustedX = windowWidth - MINIMUM_OFFSET;
44
+ // 오른쪽 화면 이탈 시 메뉴 오른쪽 끝을 화면 안으로 클램프
45
+ if (adjustedX + contentWidth > windowWidth - MINIMUM_OFFSET) {
46
+ adjustedX = windowWidth - contentWidth - MINIMUM_OFFSET;
46
47
  }
47
48
  if (adjustedX < 0) {
48
49
  adjustedX = MINIMUM_OFFSET;
49
50
  }
51
+ // 아래쪽 화면 이탈 시 앵커 위쪽으로 플립
50
52
  if (py + contentHeight > windowHeight) {
51
- adjustedY = py - (contentHeight * 1.5);
53
+ adjustedY = py - contentHeight - MINIMUM_OFFSET;
52
54
  }
53
55
  if (adjustedY < 0) {
54
56
  adjustedY = MINIMUM_OFFSET;
@@ -1 +1 @@
1
- {"version":3,"file":"PopOverMenu.js","sourceRoot":"","sources":["../../../src/overlay/PopOver/PopOverMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { LayoutChangeEvent, Pressable, useWindowDimensions } from \"react-native\";\nimport Animated, { FadeInUp, FadeOutUp } from \"react-native-reanimated\";\nimport { usePopOver } from \"../../model/useOverlay\";\nimport ModalBackground from \"../ui/ModalBackground\";\nimport { PopOverMenuProps } from \"../../model/types\";\nimport { useTheme } from \"../../context/ThemeContext\";\nimport { Z_INDEX_VALUE } from \"../../model/utils\";\n\nconst MINIMUM_OFFSET = 10;\n\nfunction PopOverMenu({\n px,\n py,\n component\n}: PopOverMenuProps): React.ReactElement | null {\n const { palette } = useTheme();\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const [isContentVisible, setIsContentVisible] = useState<boolean>(false);\n const [contentWidth, setContentWidth] = useState<number>(0);\n const [contentHeight, setContentHeight] = useState<number>(0);\n const { popOverVisible, setPopOverVisible } = usePopOver();\n const timerRef = useRef<number | null>(null);\n\n useEffect(() => {\n if (popOverVisible) {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n\n timerRef.current = setTimeout(() => {\n setIsContentVisible(true);\n }, 200);\n } else {\n setIsContentVisible(false);\n }\n\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n };\n }, [popOverVisible]);\n\n const handleLayout = useCallback((event: LayoutChangeEvent): void => {\n setContentWidth(event.nativeEvent.layout.width || 0);\n setContentHeight(event.nativeEvent.layout.height || 0);\n }, []);\n\n const getAdjustedPosition = () => {\n let adjustedX = px - contentWidth;\n let adjustedY = py;\n\n if (adjustedX > windowWidth) {\n adjustedX = windowWidth - MINIMUM_OFFSET;\n }\n if (adjustedX < 0) {\n adjustedX = MINIMUM_OFFSET;\n }\n\n if (py + contentHeight > windowHeight) {\n adjustedY = py - (contentHeight * 1.5);\n }\n if (adjustedY < 0) {\n adjustedY = MINIMUM_OFFSET;\n }\n\n return { adjustedX, adjustedY };\n };\n\n if (!popOverVisible) return null;\n\n const { adjustedX, adjustedY } = getAdjustedPosition();\n\n return (\n <ModalBackground\n zIndex={Z_INDEX_VALUE.POPOVER}\n key={popOverVisible ? 'visiblepo' : 'hiddenpo'}\n modalBgColor={palette.modalBgColor}\n position='pop'\n onPress={() => setPopOverVisible(false)}\n >\n {isContentVisible && (\n <Animated.View\n entering={FadeInUp}\n exiting={FadeOutUp}\n >\n <Pressable\n style={{\n position: 'absolute',\n left: adjustedX,\n top: adjustedY,\n }}\n onLayout={handleLayout}\n >\n {component}\n </Pressable>\n </Animated.View>\n )}\n </ModalBackground>\n );\n}\n\nexport default PopOverMenu;\n"]}
1
+ {"version":3,"file":"PopOverMenu.js","sourceRoot":"","sources":["../../../src/overlay/PopOver/PopOverMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { LayoutChangeEvent, Pressable, useWindowDimensions } from \"react-native\";\nimport Animated, { FadeInUp, FadeOutUp } from \"react-native-reanimated\";\nimport { usePopOver } from \"../../model/useOverlay\";\nimport ModalBackground from \"../ui/ModalBackground\";\nimport { PopOverMenuProps } from \"../../model/types\";\nimport { useTheme } from \"../../context/ThemeContext\";\nimport { Z_INDEX_VALUE } from \"../../model/utils\";\n\nconst MINIMUM_OFFSET = 10;\n\nfunction PopOverMenu({\n px,\n py,\n component\n}: PopOverMenuProps): React.ReactElement | null {\n const { palette } = useTheme();\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const [isContentVisible, setIsContentVisible] = useState<boolean>(false);\n const [contentWidth, setContentWidth] = useState<number>(0);\n const [contentHeight, setContentHeight] = useState<number>(0);\n const { popOverVisible, setPopOverVisible } = usePopOver();\n const timerRef = useRef<number | null>(null);\n\n useEffect(() => {\n if (popOverVisible) {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n\n timerRef.current = setTimeout(() => {\n setIsContentVisible(true);\n }, 200);\n } else {\n setIsContentVisible(false);\n }\n\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n };\n }, [popOverVisible]);\n\n const handleLayout = useCallback((event: LayoutChangeEvent): void => {\n setContentWidth(event.nativeEvent.layout.width || 0);\n setContentHeight(event.nativeEvent.layout.height || 0);\n }, []);\n\n const getAdjustedPosition = () => {\n let adjustedX = px - contentWidth;\n let adjustedY = py;\n\n // 오른쪽 화면 이탈 시 메뉴 오른쪽 끝을 화면 안으로 클램프\n if (adjustedX + contentWidth > windowWidth - MINIMUM_OFFSET) {\n adjustedX = windowWidth - contentWidth - MINIMUM_OFFSET;\n }\n if (adjustedX < 0) {\n adjustedX = MINIMUM_OFFSET;\n }\n\n // 아래쪽 화면 이탈 시 앵커 위쪽으로 플립\n if (py + contentHeight > windowHeight) {\n adjustedY = py - contentHeight - MINIMUM_OFFSET;\n }\n if (adjustedY < 0) {\n adjustedY = MINIMUM_OFFSET;\n }\n\n return { adjustedX, adjustedY };\n };\n\n if (!popOverVisible) return null;\n\n const { adjustedX, adjustedY } = getAdjustedPosition();\n\n return (\n <ModalBackground\n zIndex={Z_INDEX_VALUE.POPOVER}\n key={popOverVisible ? 'visiblepo' : 'hiddenpo'}\n modalBgColor={palette.modalBgColor}\n position='pop'\n onPress={() => setPopOverVisible(false)}\n >\n {isContentVisible && (\n <Animated.View\n entering={FadeInUp}\n exiting={FadeOutUp}\n >\n <Pressable\n style={{\n position: 'absolute',\n left: adjustedX,\n top: adjustedY,\n }}\n onLayout={handleLayout}\n >\n {component}\n </Pressable>\n </Animated.View>\n )}\n </ModalBackground>\n );\n}\n\nexport default PopOverMenu;\n"]}
@@ -1,9 +1,9 @@
1
- import React, { ReactNode } from "react";
1
+ import { ReactNode } from "react";
2
2
  import { CustomSnackbarProps, SnackItem } from "../../../model/types";
3
- declare const _default: React.MemoExoticComponent<({ customSnackbar, snackItem, hideSnackBar, }: {
3
+ declare const _default: import("react").MemoExoticComponent<({ customSnackbar, snackItem, hideSnackBar, }: {
4
4
  customSnackbar?: (props: CustomSnackbarProps) => ReactNode;
5
5
  snackItem: SnackItem;
6
6
  hideSnackBar: (index: number) => void;
7
- }) => React.JSX.Element>;
7
+ }) => import("react").JSX.Element>;
8
8
  export default _default;
9
9
  //# sourceMappingURL=SnackbarItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SnackbarItem.d.ts","sourceRoot":"","sources":["../../../../src/overlay/SnackbarNotify/ui/SnackbarItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAgC,MAAM,OAAO,CAAC;AAGvE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;iGASnE;IACD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,SAAS,CAAC;IAC3D,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAoED,wBAA8B"}
1
+ {"version":3,"file":"SnackbarItem.d.ts","sourceRoot":"","sources":["../../../../src/overlay/SnackbarNotify/ui/SnackbarItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAgC,MAAM,OAAO,CAAC;AAGhE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;2GAUnE;IACD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,SAAS,CAAC;IAC3D,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAmED,wBAA8B"}
@@ -4,6 +4,7 @@ import { StyleSheet, TouchableOpacity } from "react-native";
4
4
  import Animated, { FadeInUp, FadeOutUp, LinearTransition } from "react-native-reanimated";
5
5
  import ViewAtom from "../../../ui/atoms/ViewAtom";
6
6
  import { useTheme } from "../../../context/ThemeContext";
7
+ import { DURATION, RADIUS } from "../../../theme/tokens";
7
8
  import ZSText from "../../../ui/ZSText";
8
9
  const Snackbar = ({ customSnackbar, snackItem, hideSnackBar, }) => {
9
10
  const { type, message, snackbarDuration } = snackItem;
@@ -15,14 +16,14 @@ const Snackbar = ({ customSnackbar, snackItem, hideSnackBar, }) => {
15
16
  const closeTimeout = setTimeout(closeSnackbar, snackbarDuration);
16
17
  return () => clearTimeout(closeTimeout);
17
18
  }, [closeSnackbar, snackbarDuration]);
18
- return (_jsx(Animated.View, { style: [styles.snackbarWrapper], entering: FadeInUp.duration(250), exiting: FadeOutUp.duration(250), layout: LinearTransition.duration(250), children: _jsx(TouchableOpacity, { style: [styles.container], activeOpacity: 1, onPress: closeSnackbar, children: customSnackbar ? (customSnackbar({ snackType: type, snackMessage: message })) : (_jsx(ViewAtom, { style: [
19
+ return (_jsx(Animated.View, { style: [styles.snackbarWrapper], entering: FadeInUp.duration(DURATION.slow), exiting: FadeOutUp.duration(DURATION.slow), layout: LinearTransition.duration(DURATION.slow), children: _jsx(TouchableOpacity, { style: [styles.container], activeOpacity: 1, onPress: closeSnackbar, children: customSnackbar ? (customSnackbar({ snackType: type, snackMessage: message })) : (_jsx(ViewAtom, { style: [
19
20
  styles.snackBar,
20
21
  { backgroundColor: type === "error" ? palette.background.danger : palette.background.success },
21
22
  ], children: _jsx(ViewAtom, { style: styles.messageContainer, children: _jsx(ZSText, { children: message }) }) })) }) }));
22
23
  };
23
24
  const styles = StyleSheet.create({
24
25
  container: {
25
- borderRadius: 16,
26
+ borderRadius: RADIUS.xl,
26
27
  width: "100%",
27
28
  },
28
29
  snackbarWrapper: {
@@ -30,8 +31,8 @@ const styles = StyleSheet.create({
30
31
  marginTop: 8,
31
32
  },
32
33
  snackBar: {
33
- borderRadius: 16,
34
- paddingHorizontal: 10,
34
+ borderRadius: RADIUS.xl,
35
+ paddingHorizontal: 16,
35
36
  paddingVertical: 18,
36
37
  flexDirection: "row",
37
38
  alignItems: "center",
@@ -40,7 +41,6 @@ const styles = StyleSheet.create({
40
41
  messageContainer: {
41
42
  flex: 1,
42
43
  flexDirection: "column",
43
- marginLeft: 10,
44
44
  },
45
45
  });
46
46
  export default memo(Snackbar);
@@ -1 +1 @@
1
- {"version":3,"file":"SnackbarItem.js","sourceRoot":"","sources":["../../../../src/overlay/SnackbarNotify/ui/SnackbarItem.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAa,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE1F,OAAO,QAAQ,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC,MAAM,QAAQ,GAAG,CAAC,EAChB,cAAc,EACd,SAAS,EACT,YAAY,GAKb,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;IACtD,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,UAAU,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;QACjE,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEtC,OAAO,CACL,KAAC,QAAQ,CAAC,IAAI,IACZ,KAAK,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,EAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAChC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAChC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAEtC,KAAC,gBAAgB,IACf,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EACzB,aAAa,EAAE,CAAC,EAChB,OAAO,EAAE,aAAa,YAErB,cAAc,CAAC,CAAC,CAAC,CAChB,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAC3D,CAAC,CAAC,CAAC,CACF,KAAC,QAAQ,IACP,KAAK,EAAE;oBACL,MAAM,CAAC,QAAQ;oBACf,EAAE,eAAe,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;iBAC/F,YAED,KAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,CAAC,gBAAgB,YACtC,KAAC,MAAM,cAAE,OAAO,GAAU,GACjB,GACF,CACZ,GACgB,GACL,CACjB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,YAAY,EAAE,EAAE;QAChB,KAAK,EAAE,MAAM;KACd;IACD,eAAe,EAAE;QACf,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,CAAC;KACb;IACD,QAAQ,EAAE;QACR,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;QACnB,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,QAAQ;QACpB,KAAK,EAAE,MAAM;KACd;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,CAAC;QACP,aAAa,EAAE,QAAQ;QACvB,UAAU,EAAE,EAAE;KACf;CACF,CAAC,CAAC;AAEH,eAAe,IAAI,CAAC,QAAQ,CAAC,CAAC","sourcesContent":["import React, { ReactNode, memo, useEffect, useCallback } from \"react\";\nimport { StyleSheet, TouchableOpacity } from \"react-native\";\nimport Animated, { FadeInUp, FadeOutUp, LinearTransition } from \"react-native-reanimated\";\nimport { CustomSnackbarProps, SnackItem } from \"../../../model/types\";\nimport ViewAtom from \"../../../ui/atoms/ViewAtom\";\nimport { useTheme } from \"../../../context/ThemeContext\";\nimport ZSText from \"../../../ui/ZSText\";\n\nconst Snackbar = ({\n customSnackbar,\n snackItem,\n hideSnackBar,\n}: {\n customSnackbar?: (props: CustomSnackbarProps) => ReactNode;\n snackItem: SnackItem;\n hideSnackBar: (index: number) => void;\n}) => {\n const { type, message, snackbarDuration } = snackItem;\n const { palette } = useTheme();\n\n const closeSnackbar = useCallback(() => {\n hideSnackBar(snackItem.index);\n }, [hideSnackBar, snackItem.index]);\n\n useEffect(() => {\n const closeTimeout = setTimeout(closeSnackbar, snackbarDuration);\n return () => clearTimeout(closeTimeout);\n }, [closeSnackbar, snackbarDuration]);\n\n return (\n <Animated.View\n style={[styles.snackbarWrapper]}\n entering={FadeInUp.duration(250)}\n exiting={FadeOutUp.duration(250)}\n layout={LinearTransition.duration(250)}\n >\n <TouchableOpacity\n style={[styles.container]}\n activeOpacity={1}\n onPress={closeSnackbar}\n >\n {customSnackbar ? (\n customSnackbar({ snackType: type, snackMessage: message })\n ) : (\n <ViewAtom\n style={[\n styles.snackBar,\n { backgroundColor: type === \"error\" ? palette.background.danger : palette.background.success },\n ]}\n >\n <ViewAtom style={styles.messageContainer}>\n <ZSText>{message}</ZSText>\n </ViewAtom>\n </ViewAtom>\n )}\n </TouchableOpacity>\n </Animated.View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 16,\n width: \"100%\",\n },\n snackbarWrapper: {\n width: \"96%\",\n marginTop: 8,\n },\n snackBar: {\n borderRadius: 16,\n paddingHorizontal: 10,\n paddingVertical: 18,\n flexDirection: \"row\",\n alignItems: \"center\",\n width: \"100%\",\n },\n messageContainer: {\n flex: 1,\n flexDirection: \"column\",\n marginLeft: 10,\n },\n});\n\nexport default memo(Snackbar);\n"]}
1
+ {"version":3,"file":"SnackbarItem.js","sourceRoot":"","sources":["../../../../src/overlay/SnackbarNotify/ui/SnackbarItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ReactNode, memo, useEffect, useCallback } from \"react\";\nimport { StyleSheet, TouchableOpacity } from \"react-native\";\nimport Animated, { FadeInUp, FadeOutUp, LinearTransition } from \"react-native-reanimated\";\nimport { CustomSnackbarProps, SnackItem } from \"../../../model/types\";\nimport ViewAtom from \"../../../ui/atoms/ViewAtom\";\nimport { useTheme } from \"../../../context/ThemeContext\";\nimport { DURATION, RADIUS } from \"../../../theme/tokens\";\nimport ZSText from \"../../../ui/ZSText\";\n\nconst Snackbar = ({\n customSnackbar,\n snackItem,\n hideSnackBar,\n}: {\n customSnackbar?: (props: CustomSnackbarProps) => ReactNode;\n snackItem: SnackItem;\n hideSnackBar: (index: number) => void;\n}) => {\n const { type, message, snackbarDuration } = snackItem;\n const { palette } = useTheme();\n\n const closeSnackbar = useCallback(() => {\n hideSnackBar(snackItem.index);\n }, [hideSnackBar, snackItem.index]);\n\n useEffect(() => {\n const closeTimeout = setTimeout(closeSnackbar, snackbarDuration);\n return () => clearTimeout(closeTimeout);\n }, [closeSnackbar, snackbarDuration]);\n\n return (\n <Animated.View\n style={[styles.snackbarWrapper]}\n entering={FadeInUp.duration(DURATION.slow)}\n exiting={FadeOutUp.duration(DURATION.slow)}\n layout={LinearTransition.duration(DURATION.slow)}\n >\n <TouchableOpacity\n style={[styles.container]}\n activeOpacity={1}\n onPress={closeSnackbar}\n >\n {customSnackbar ? (\n customSnackbar({ snackType: type, snackMessage: message })\n ) : (\n <ViewAtom\n style={[\n styles.snackBar,\n { backgroundColor: type === \"error\" ? palette.background.danger : palette.background.success },\n ]}\n >\n <ViewAtom style={styles.messageContainer}>\n <ZSText>{message}</ZSText>\n </ViewAtom>\n </ViewAtom>\n )}\n </TouchableOpacity>\n </Animated.View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: RADIUS.xl,\n width: \"100%\",\n },\n snackbarWrapper: {\n width: \"96%\",\n marginTop: 8,\n },\n snackBar: {\n borderRadius: RADIUS.xl,\n paddingHorizontal: 16,\n paddingVertical: 18,\n flexDirection: \"row\",\n alignItems: \"center\",\n width: \"100%\",\n },\n messageContainer: {\n flex: 1,\n flexDirection: \"column\",\n },\n});\n\nexport default memo(Snackbar);\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"]}
@@ -0,0 +1,35 @@
1
+ /** 컴포넌트 공통 곡률 스케일 */
2
+ export declare const RADIUS: {
3
+ /** 체크박스 등 소형 요소 */
4
+ readonly xs: 4;
5
+ /** 소형 버튼 */
6
+ readonly sm: 6;
7
+ /** 중형 버튼 (Alert 버튼 등) */
8
+ readonly md: 12;
9
+ /** 입력 필드 · 카드 */
10
+ readonly lg: 14;
11
+ /** 스낵바 · pressed 배경 */
12
+ readonly xl: 16;
13
+ /** 다이얼로그 컨테이너 */
14
+ readonly xxl: 22;
15
+ /** 바텀시트 */
16
+ readonly sheet: 26;
17
+ /** 완전한 pill/원형 */
18
+ readonly pill: 9999;
19
+ };
20
+ /** 애니메이션 duration 공통 스케일 (ms) */
21
+ export declare const DURATION: {
22
+ /** press in/out · 오버레이 퇴장 */
23
+ readonly press: 100;
24
+ /** 입력 필드 포커스 등 빠른 전환 */
25
+ readonly fast: 150;
26
+ /** 상태 전환 기본값 (칩 선택, 스위치 등) */
27
+ readonly base: 200;
28
+ /** 이동 애니메이션 (세그먼트 thumb, 스낵바 등) */
29
+ readonly slow: 250;
30
+ /** 오버레이 진입 */
31
+ readonly enter: 300;
32
+ };
33
+ /** disabled 상태 공통 투명도 */
34
+ export declare const DISABLED_OPACITY = 0.5;
35
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,eAAO,MAAM,MAAM;IACjB,mBAAmB;;IAEnB,YAAY;;IAEZ,yBAAyB;;IAEzB,iBAAiB;;IAEjB,uBAAuB;;IAEvB,iBAAiB;;IAEjB,WAAW;;IAEX,kBAAkB;;CAEV,CAAC;AAEX,iCAAiC;AACjC,eAAO,MAAM,QAAQ;IACnB,6BAA6B;;IAE7B,wBAAwB;;IAExB,8BAA8B;;IAE9B,mCAAmC;;IAEnC,cAAc;;CAEN,CAAC;AAEX,yBAAyB;AACzB,eAAO,MAAM,gBAAgB,MAAM,CAAC"}
@@ -0,0 +1,35 @@
1
+ /** 컴포넌트 공통 곡률 스케일 */
2
+ export const RADIUS = {
3
+ /** 체크박스 등 소형 요소 */
4
+ xs: 4,
5
+ /** 소형 버튼 */
6
+ sm: 6,
7
+ /** 중형 버튼 (Alert 버튼 등) */
8
+ md: 12,
9
+ /** 입력 필드 · 카드 */
10
+ lg: 14,
11
+ /** 스낵바 · pressed 배경 */
12
+ xl: 16,
13
+ /** 다이얼로그 컨테이너 */
14
+ xxl: 22,
15
+ /** 바텀시트 */
16
+ sheet: 26,
17
+ /** 완전한 pill/원형 */
18
+ pill: 9999,
19
+ };
20
+ /** 애니메이션 duration 공통 스케일 (ms) */
21
+ export const DURATION = {
22
+ /** press in/out · 오버레이 퇴장 */
23
+ press: 100,
24
+ /** 입력 필드 포커스 등 빠른 전환 */
25
+ fast: 150,
26
+ /** 상태 전환 기본값 (칩 선택, 스위치 등) */
27
+ base: 200,
28
+ /** 이동 애니메이션 (세그먼트 thumb, 스낵바 등) */
29
+ slow: 250,
30
+ /** 오버레이 진입 */
31
+ enter: 300,
32
+ };
33
+ /** disabled 상태 공통 투명도 */
34
+ export const DISABLED_OPACITY = 0.5;
35
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,mBAAmB;IACnB,EAAE,EAAE,CAAC;IACL,YAAY;IACZ,EAAE,EAAE,CAAC;IACL,yBAAyB;IACzB,EAAE,EAAE,EAAE;IACN,iBAAiB;IACjB,EAAE,EAAE,EAAE;IACN,uBAAuB;IACvB,EAAE,EAAE,EAAE;IACN,iBAAiB;IACjB,GAAG,EAAE,EAAE;IACP,WAAW;IACX,KAAK,EAAE,EAAE;IACT,kBAAkB;IAClB,IAAI,EAAE,IAAI;CACF,CAAC;AAEX,iCAAiC;AACjC,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,6BAA6B;IAC7B,KAAK,EAAE,GAAG;IACV,wBAAwB;IACxB,IAAI,EAAE,GAAG;IACT,8BAA8B;IAC9B,IAAI,EAAE,GAAG;IACT,mCAAmC;IACnC,IAAI,EAAE,GAAG;IACT,cAAc;IACd,KAAK,EAAE,GAAG;CACF,CAAC;AAEX,yBAAyB;AACzB,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC","sourcesContent":["/** 컴포넌트 공통 곡률 스케일 */\nexport const RADIUS = {\n /** 체크박스 등 소형 요소 */\n xs: 4,\n /** 소형 버튼 */\n sm: 6,\n /** 중형 버튼 (Alert 버튼 등) */\n md: 12,\n /** 입력 필드 · 카드 */\n lg: 14,\n /** 스낵바 · pressed 배경 */\n xl: 16,\n /** 다이얼로그 컨테이너 */\n xxl: 22,\n /** 바텀시트 */\n sheet: 26,\n /** 완전한 pill/원형 */\n pill: 9999,\n} as const;\n\n/** 애니메이션 duration 공통 스케일 (ms) */\nexport const DURATION = {\n /** press in/out · 오버레이 퇴장 */\n press: 100,\n /** 입력 필드 포커스 등 빠른 전환 */\n fast: 150,\n /** 상태 전환 기본값 (칩 선택, 스위치 등) */\n base: 200,\n /** 이동 애니메이션 (세그먼트 thumb, 스낵바 등) */\n slow: 250,\n /** 오버레이 진입 */\n enter: 300,\n} as const;\n\n/** disabled 상태 공통 투명도 */\nexport const DISABLED_OPACITY = 0.5;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../src/theme/typography.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAI9D,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,CAAC,EAAE,UAAU,CAAA;CAAE,GAAG,uBAAuB,CAoMvG"}
1
+ {"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../src/theme/typography.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAI9D,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,CAAC,EAAE,UAAU,CAAA;CAAE,GAAG,uBAAuB,CAgKvG"}