@momo-kits/native-kits 0.168.1-beta.11-debug → 0.168.1-beta.13

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 (147) hide show
  1. package/.claude/settings.local.json +185 -0
  2. package/CLAUDE.md +3 -2
  3. package/ios/Layout/ScreenLayout.swift +23 -3
  4. package/ios/Navigation/BottomSheet.swift +150 -22
  5. package/ios/Navigation/Component/SnackBar.swift +4 -0
  6. package/ios/Navigation/ModalScreen.swift +7 -3
  7. package/ios/Popup/PopupDisplay.swift +2 -2
  8. package/ios/Popup/PopupInput.swift +2 -2
  9. package/ios/Popup/PopupLayout.swift +15 -8
  10. package/ios/Popup/PopupNotify.swift +2 -2
  11. package/ios/native-kits.podspec +1 -1
  12. package/ios-demo/MoMoUIKitsDemo.podspec +1 -1
  13. package/package.json +1 -1
  14. package/build.gradle.kts +0 -11
  15. package/compose/build.gradle.kts +0 -198
  16. package/compose/build.gradle.kts.backup +0 -198
  17. package/compose/compose.podspec +0 -47
  18. package/compose/src/androidMain/kotlin/vn/momo/kits/const/HostFont.android.kt +0 -20
  19. package/compose/src/androidMain/kotlin/vn/momo/kits/navigation/ScrollToTop.android.kt +0 -6
  20. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/BackGesture.android.kt +0 -12
  21. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/OsFontScale.android.kt +0 -7
  22. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +0 -153
  23. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/ReservedRegions.android.kt +0 -6
  24. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +0 -110
  25. package/compose/src/commonMain/kotlin/vn/momo/kits/application/DesignSystemKits.kt +0 -62
  26. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +0 -1071
  27. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Localize.kt +0 -269
  28. package/compose/src/commonMain/kotlin/vn/momo/kits/application/WidgetContainer.kt +0 -56
  29. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +0 -157
  30. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +0 -81
  31. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +0 -32
  32. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +0 -338
  33. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +0 -175
  34. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +0 -357
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +0 -115
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +0 -89
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +0 -128
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +0 -209
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +0 -542
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +0 -49
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +0 -86
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +0 -125
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +0 -231
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +0 -189
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +0 -478
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +0 -114
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +0 -265
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +0 -235
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +0 -223
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +0 -265
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +0 -185
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +0 -343
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +0 -108
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +0 -56
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +0 -41
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +0 -84
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +0 -40
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +0 -361
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +0 -108
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +0 -308
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +0 -59
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +0 -87
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +0 -21
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +0 -90
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +0 -330
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +0 -220
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +0 -473
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +0 -122
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +0 -207
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +0 -92
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +0 -560
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +0 -86
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +0 -125
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +0 -207
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +0 -501
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +0 -176
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +0 -182
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +0 -193
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +0 -29
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +0 -236
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +0 -180
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +0 -325
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/const/HostFont.kt +0 -17
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +0 -12
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +0 -16
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +0 -194
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +0 -287
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +0 -54
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +0 -50
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/ScreenLayout.kt +0 -306
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +0 -41
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +0 -52
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +0 -66
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +0 -11
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +0 -104
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +0 -48
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +0 -51
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +0 -338
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/HostBackGestureBridge.kt +0 -58
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +0 -137
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +0 -116
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +0 -205
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +0 -399
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ScrollToTop.kt +0 -8
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +0 -732
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackTransition.kt +0 -148
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/SwipeBackHaptic.kt +0 -35
  108. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +0 -228
  109. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +0 -217
  110. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +0 -86
  111. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/DuoBarCompression.kt +0 -97
  112. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/DuoTabBar.kt +0 -377
  113. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +0 -169
  114. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +0 -455
  115. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +0 -105
  116. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderJourney.kt +0 -106
  117. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderLocation.kt +0 -74
  118. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +0 -399
  119. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +0 -39
  120. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +0 -363
  121. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SideBar.kt +0 -192
  122. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +0 -133
  123. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +0 -127
  124. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/BackGesture.kt +0 -12
  125. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ComposeLottieAnimation.kt +0 -91
  126. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/OsFontScale.kt +0 -9
  127. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +0 -74
  128. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ReservedRegions.kt +0 -20
  129. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +0 -1329
  130. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +0 -55
  131. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +0 -15
  132. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +0 -118
  133. package/compose/src/iosMain/kotlin/vn/momo/kits/const/HostFont.ios.kt +0 -42
  134. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/HostBackGesture.ios.kt +0 -45
  135. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/ScrollToTop.ios.kt +0 -32
  136. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/BackGesture.ios.kt +0 -38
  137. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/OsFontScale.ios.kt +0 -66
  138. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +0 -218
  139. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/ReservedRegions.ios.kt +0 -138
  140. package/gradle/libs.versions.toml +0 -69
  141. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  142. package/gradle/wrapper/gradle-wrapper.properties +0 -8
  143. package/gradle.properties +0 -26
  144. package/gradlew +0 -252
  145. package/gradlew.bat +0 -94
  146. package/ios-demo/README.md +0 -120
  147. package/settings.gradle.kts +0 -64
@@ -1,194 +0,0 @@
1
- package vn.momo.kits.const
2
-
3
- import androidx.compose.runtime.Stable
4
- import androidx.compose.runtime.staticCompositionLocalOf
5
- import androidx.compose.ui.graphics.Color
6
- import androidx.compose.ui.unit.dp
7
-
8
- @Stable
9
- data class Background(
10
- val default: Color,
11
- val surface: Color,
12
- val tonal: Color,
13
- val pressed: Color,
14
- val selected: Color,
15
- val disable: Color
16
- )
17
-
18
- @Stable
19
- data class ColorScheme(
20
- val primary: Color,
21
- val secondary: Color,
22
- val gradient: Color,
23
- val background: Background,
24
- val text: TextColors,
25
- val border: BorderColors,
26
- val success: ColorSet,
27
- val warning: ColorSet,
28
- val error: ColorSet,
29
- val highlight: ColorSet,
30
- val interactive: ColorSet
31
- )
32
-
33
- @Stable
34
- data class TextColors(
35
- val default: Color,
36
- val secondary: Color,
37
- val hint: Color,
38
- val disable: Color
39
- )
40
-
41
- @Stable
42
- data class BorderColors(
43
- val default: Color,
44
- val disable: Color
45
- )
46
-
47
- @Stable
48
- data class ColorSet(
49
- val primary: Color,
50
- val secondary: Color,
51
- val container: Color
52
- )
53
-
54
- @Stable
55
- data class ThemeAssets(
56
- val headerBackground: String? = null
57
- )
58
-
59
- @Stable
60
- data class Theme(
61
- val dark: Boolean,
62
- val colors: ColorScheme,
63
- val font: String,
64
- val assets: ThemeAssets
65
- ) {
66
- fun isHeaderImage(): Boolean {
67
- return !assets.headerBackground.isNullOrEmpty()
68
- }
69
- }
70
- private val lightBaseTheme = Theme(
71
- dark = false,
72
- colors = ColorScheme(
73
- primary = Colors.pink_03,
74
- secondary = Colors.pink_07,
75
- gradient = Color(0xFFFDCADE),
76
- background = Background(
77
- default = Color(0xFFF2F2F6),
78
- surface = Colors.black_01,
79
- tonal = Colors.pink_09,
80
- pressed = Color(0xFFDFDFE6),
81
- selected = Colors.pink_10,
82
- disable = Color(0xFFEBEBF2)
83
- ),
84
- text = TextColors(
85
- default = Colors.black_17,
86
- secondary = Colors.black_15,
87
- hint = Colors.black_12,
88
- disable = Colors.black_08
89
- ),
90
- border = BorderColors(
91
- default = Colors.black_04,
92
- disable = Colors.black_02
93
- ),
94
- success = ColorSet(
95
- primary = Colors.green_03,
96
- secondary = Colors.green_07,
97
- container = Colors.green_08
98
- ),
99
- warning = ColorSet(
100
- primary = Colors.orange_03,
101
- secondary = Colors.orange_07,
102
- container = Colors.orange_08
103
- ),
104
- error = ColorSet(
105
- primary = Colors.red_03,
106
- secondary = Colors.red_07,
107
- container = Colors.red_08,
108
- ),
109
- highlight = ColorSet(
110
- primary = Colors.mint_03,
111
- secondary = Colors.mint_07,
112
- container = Colors.mint_08
113
- ),
114
- interactive = ColorSet(
115
- primary = Colors.blue_03,
116
- secondary = Colors.blue_07,
117
- container = Colors.blue_08
118
- )
119
- ),
120
- font = "SFProText",
121
- assets = ThemeAssets(
122
- headerBackground = null
123
- )
124
- )
125
-
126
-
127
- private val darkBaseTheme = Theme(
128
- dark = true,
129
- colors = ColorScheme(
130
- primary = Colors.pink_04,
131
- secondary = Colors.pink_08,
132
- gradient = Color(0xFFFDCADE),
133
- background = Background(
134
- default = Color(0xFF121212),
135
- surface = Color(0xFF1E1E1E),
136
- tonal = Colors.pink_10,
137
- pressed = Color(0xFF1A1A1A),
138
- selected = Colors.pink_11,
139
- disable = Color(0xFF303030)
140
- ),
141
- text = TextColors(
142
- default = Color.White,
143
- secondary = Color(0xFFB0B0B0),
144
- hint = Color(0xFF727272),
145
- disable = Color(0xFF505050)
146
- ),
147
- border = BorderColors(
148
- default = Color(0xFF2A2A2A),
149
- disable = Color(0xFF242424)
150
- ),
151
- success = ColorSet(
152
- primary = Colors.green_03,
153
- secondary = Colors.green_07,
154
- container = Colors.green_08
155
- ),
156
- warning = ColorSet(
157
- primary = Colors.orange_03,
158
- secondary = Colors.orange_07,
159
- container = Colors.orange_08
160
- ),
161
- error = ColorSet(
162
- primary = Colors.red_03,
163
- secondary = Colors.red_07,
164
- container = Colors.red_08,
165
- ),
166
- highlight = ColorSet(
167
- primary = Colors.mint_03,
168
- secondary = Colors.mint_07,
169
- container = Colors.mint_08
170
- ),
171
- interactive = ColorSet(
172
- primary = Colors.blue_03,
173
- secondary = Colors.blue_07,
174
- container = Colors.blue_08
175
- )
176
- ),
177
- font = "SFProText",
178
- assets = ThemeAssets(
179
- headerBackground = null
180
- )
181
- )
182
-
183
-
184
- val defaultTheme: Theme
185
- get() = lightBaseTheme.copy(font = defaultFontFamily)
186
-
187
- val darkTheme: Theme
188
- get() = darkBaseTheme.copy(font = defaultFontFamily)
189
-
190
- val AppTheme = staticCompositionLocalOf { defaultTheme }
191
-
192
- val AppStatusBar = staticCompositionLocalOf { 0.dp }
193
-
194
- val AppNavigationBar = staticCompositionLocalOf { 0.dp }
@@ -1,287 +0,0 @@
1
- package vn.momo.kits.const
2
-
3
- import androidx.compose.runtime.Composable
4
- import androidx.compose.runtime.Immutable
5
- import androidx.compose.ui.platform.LocalDensity
6
- import androidx.compose.ui.text.TextStyle
7
- import androidx.compose.ui.text.font.FontFamily
8
- import androidx.compose.ui.text.font.FontWeight
9
- import androidx.compose.ui.text.style.TextDecoration
10
- import androidx.compose.ui.unit.*
11
- import vn.momo.kits.application.DesignSystemKits
12
- import vn.momo.kits.application.LocalContext
13
- import vn.momo.kits.platform.getScreenDimensions
14
- import kotlin.math.max
15
- import kotlin.math.min
16
-
17
- const val DEFAULT_SCREEN_SIZE = 375f
18
- const val MAX_FONT_SCALE = 1.5f
19
- const val MAX_DEVICE_SCALE = 5
20
-
21
- @Composable
22
- fun scaleSize(size: Float): Float {
23
- val context = LocalContext.current
24
- val useOsScale = context?.useOSScaleRate ?: DesignSystemKits.getConfigs().useOSScaleRate
25
- if (!useOsScale) {
26
- return size * (context?.userScaleRate ?: DesignSystemKits.getConfigs().userScaleRate)
27
- }
28
- val scaleSizeMaxRate: Float = MAX_FONT_SCALE
29
- // Short side, not width: landscape must not inflate every font.
30
- val deviceWidth = getScreenDimensions().let { minOf(it.width, it.height) }
31
- val deviceScale = deviceWidth / DEFAULT_SCREEN_SIZE
32
-
33
- val density = LocalDensity.current
34
- val fontScale = density.fontScale
35
-
36
- var fontSizeScaleDevice = size
37
- var fontSizeScaleOS = size
38
-
39
- if (deviceScale > 1) {
40
- fontSizeScaleDevice =
41
- min(deviceScale * fontSizeScaleDevice, fontSizeScaleDevice + MAX_DEVICE_SCALE)
42
- }
43
-
44
- if (fontScale > 1) {
45
- fontSizeScaleOS = min(fontScale * fontSizeScaleOS, fontSizeScaleOS * scaleSizeMaxRate)
46
- }
47
-
48
- return max(
49
- fontSizeScaleDevice,
50
- fontSizeScaleOS
51
- )
52
- }
53
-
54
- @Composable
55
- fun scaleSize(size: TextUnit): TextUnit {
56
- if (!size.isSp) return size
57
-
58
- val density = LocalDensity.current
59
-
60
- val scaled = scaleSize(size.value)
61
- val spValue = scaled / density.fontScale
62
-
63
- return TextUnit(value = spValue, type = TextUnitType.Sp)
64
- }
65
-
66
- @Composable
67
- fun scaleSize(size: Dp): Dp {
68
- return scaleSize(size.value).dp
69
- }
70
-
71
- @Composable
72
- fun scaleSize(textStyle: TextStyle): TextStyle {
73
- return textStyle.copy(
74
- fontSize = if (textStyle.fontSize != TextUnit.Unspecified)
75
- scaleSize(textStyle.fontSize)
76
- else
77
- TextUnit.Unspecified,
78
-
79
- lineHeight = if (textStyle.lineHeight != TextUnit.Unspecified)
80
- scaleSize(textStyle.lineHeight)
81
- else
82
- TextUnit.Unspecified,
83
- )
84
- }
85
-
86
-
87
- private const val LEGACY_DEFAULT_FONT_FILE = "SFProText-Regular.ttf"
88
- private const val NEW_DEFAULT_FONT_FILE = "MomoTrustSans-Regular.ttf"
89
-
90
- private val hostFontFiles: Map<String, String> = mapOf(
91
- "SFProText-100" to "SFProText-Thin.ttf",
92
- "SFProText-200" to "SFProText-Ultralight.ttf",
93
- "SFProText-300" to "SFProText-Light.ttf",
94
- "SFProText-400" to LEGACY_DEFAULT_FONT_FILE,
95
- "SFProText-500" to "SFProText-Medium.ttf",
96
- "SFProText-600" to "SFProText-Semibold.ttf",
97
- "SFProText-700" to "SFProText-Bold.ttf",
98
- "SFProText-800" to "SFProText-Heavy.ttf",
99
- "SFProText-900" to "SFProText-Black.ttf",
100
-
101
- "MomoTrustSans-100" to "MomoTrustSans-ExtraLight.ttf",
102
- "MomoTrustSans-200" to "MomoTrustSans-ExtraLight.ttf",
103
- "MomoTrustSans-300" to "MomoTrustSans-Light.ttf",
104
- "MomoTrustSans-400" to "MomoTrustSans-Regular.ttf",
105
- "MomoTrustSans-500" to "MomoTrustSans-Medium.ttf",
106
- "MomoTrustSans-600" to "MomoTrustSans-SemiBold.ttf",
107
- "MomoTrustSans-700" to "MomoTrustSans-Bold.ttf",
108
- "MomoTrustSans-800" to "MomoTrustSans-ExtraBold.ttf",
109
- "MomoTrustSans-900" to "MomoTrustSans-ExtraBold.ttf",
110
- ) + (1..9).flatMap { step ->
111
- val weight = step * 100
112
- listOf(
113
- "MoMoSignature-$weight" to "MoMoSignature.otf",
114
- "MoMoTrustDisplay-$weight" to "MoMoTrustDisplay.otf",
115
- )
116
- }
117
-
118
- private const val NEW_DEFAULT_FONT_FAMILY = "MomoTrustSans"
119
- private const val LEGACY_DEFAULT_FONT_FAMILY = "SFProText"
120
-
121
- // Families that ship one file per weight; the others map every weight to a single file.
122
- private val weightedFontFamilies = setOf(NEW_DEFAULT_FONT_FAMILY, LEGACY_DEFAULT_FONT_FAMILY)
123
-
124
- internal val defaultFontFamily: String
125
- get() = if (DesignSystemKits.getConfigs().isWhiteList) NEW_DEFAULT_FONT_FAMILY else LEGACY_DEFAULT_FONT_FAMILY
126
-
127
- @Composable
128
- fun getFontFamily(fontFamily: String, fontWeight: FontWeight? = FontWeight.Normal): FontFamily {
129
- val isWhiteList = DesignSystemKits.getConfigs().isWhiteList
130
- val defaultFile = if (isWhiteList) NEW_DEFAULT_FONT_FILE else LEGACY_DEFAULT_FONT_FILE
131
- val key = "$fontFamily-${fontWeight?.weight}"
132
- val mappedFile = hostFontFiles[key]
133
- val fileName = mappedFile ?: defaultFile
134
- // Declaring the file's real weight keeps Compose from synthesizing bold on top of a bold file.
135
- val fileWeight = if (mappedFile != null && fontFamily in weightedFontFamilies) {
136
- fontWeight ?: FontWeight.Normal
137
- } else {
138
- FontWeight.Normal
139
- }
140
- return hostFontFamily(fileName, fileWeight)
141
- ?: hostFontFamily(defaultFile, FontWeight.Normal)
142
- ?: FontFamily.Default
143
- }
144
-
145
- @Immutable
146
- class AppTypography internal constructor(
147
- val headlineDefaultBold: TextStyle,
148
- val headerMBold: TextStyle,
149
- val headerDefaultBold: TextStyle,
150
- val headerSSemibold: TextStyle,
151
- val headerXsSemibold: TextStyle,
152
- val bodyDefaultRegular: TextStyle,
153
- val bodyDefaultRegularStrikethrough: TextStyle,
154
- val descriptionDefaultRegular: TextStyle,
155
- val descriptionDefaultRegularStrikethrough: TextStyle,
156
- val descriptionXsRegular: TextStyle,
157
- val descriptionXsRegularStrikethrough: TextStyle,
158
- val labelDefaultMedium: TextStyle,
159
- val labelSMedium: TextStyle,
160
- val labelXsMedium: TextStyle,
161
- val actionDefaultBold: TextStyle,
162
- val actionSBold: TextStyle,
163
- val actionXsBold: TextStyle,
164
- val actionXxsBold: TextStyle,
165
- ) {
166
- constructor(
167
- default: TextStyle = TextStyle(
168
- fontSize = 14.sp,
169
- lineHeight = 20.sp,
170
- fontWeight = FontWeight.Normal
171
- ),
172
- headlineDefaultBold: TextStyle = TextStyle(
173
- fontSize = 24.sp,
174
- lineHeight = 34.sp,
175
- fontWeight = FontWeight.Bold
176
- ),
177
- headerMBold: TextStyle = TextStyle(
178
- fontSize = 18.sp,
179
- lineHeight = 26.sp,
180
- fontWeight = FontWeight.Bold
181
- ),
182
- headerDefaultBold: TextStyle = TextStyle(
183
- fontSize = 16.sp,
184
- lineHeight = 22.sp,
185
- fontWeight = FontWeight.Bold
186
- ),
187
- headerSSemibold: TextStyle = TextStyle(
188
- fontSize = 14.sp,
189
- lineHeight = 20.sp,
190
- fontWeight = FontWeight.SemiBold
191
- ),
192
- headerXsSemibold: TextStyle = TextStyle(
193
- fontSize = 12.sp,
194
- lineHeight = 18.sp,
195
- fontWeight = FontWeight.SemiBold
196
- ),
197
- bodyDefaultRegular: TextStyle = TextStyle(
198
- fontSize = 14.sp,
199
- lineHeight = 20.sp,
200
- fontWeight = FontWeight.Normal
201
- ),
202
- bodyDefaultRegularStrikethrough: TextStyle = TextStyle(
203
- fontSize = 14.sp,
204
- lineHeight = 20.sp,
205
- fontWeight = FontWeight.Normal,
206
- textDecoration = TextDecoration.LineThrough
207
- ),
208
- descriptionDefaultRegular: TextStyle = TextStyle(
209
- fontSize = 12.sp,
210
- lineHeight = 18.sp,
211
- fontWeight = FontWeight.Normal
212
- ),
213
- descriptionDefaultRegularStrikethrough: TextStyle = TextStyle(
214
- fontSize = 12.sp,
215
- lineHeight = 18.sp,
216
- fontWeight = FontWeight.Normal,
217
- textDecoration = TextDecoration.LineThrough
218
- ),
219
- descriptionXsRegular: TextStyle = TextStyle(
220
- fontSize = 10.sp,
221
- lineHeight = 14.sp,
222
- fontWeight = FontWeight.Normal
223
- ),
224
- descriptionXsRegularStrikethrough: TextStyle = TextStyle(
225
- fontSize = 10.sp,
226
- lineHeight = 14.sp,
227
- fontWeight = FontWeight.Normal,
228
- textDecoration = TextDecoration.LineThrough
229
- ),
230
- labelDefaultMedium: TextStyle = TextStyle(
231
- fontSize = 14.sp,
232
- lineHeight = 20.sp,
233
- fontWeight = FontWeight.Medium
234
- ),
235
- labelSMedium: TextStyle = TextStyle(
236
- fontSize = 12.sp,
237
- lineHeight = 18.sp,
238
- fontWeight = FontWeight.Medium
239
- ),
240
- labelXsMedium: TextStyle = TextStyle(
241
- fontSize = 10.sp,
242
- lineHeight = 14.sp,
243
- fontWeight = FontWeight.Medium
244
- ),
245
- actionDefaultBold: TextStyle = TextStyle(
246
- fontSize = 16.sp,
247
- lineHeight = 22.sp,
248
- fontWeight = FontWeight.Bold
249
- ),
250
- actionSBold: TextStyle = TextStyle(
251
- fontSize = 14.sp,
252
- lineHeight = 20.sp,
253
- fontWeight = FontWeight.Bold
254
- ),
255
- actionXsBold: TextStyle = TextStyle(
256
- fontSize = 12.sp,
257
- lineHeight = 18.sp,
258
- fontWeight = FontWeight.Bold
259
- ),
260
- actionXxsBold: TextStyle = TextStyle(
261
- fontSize = 10.sp,
262
- lineHeight = 14.sp,
263
- fontWeight = FontWeight.Bold
264
- ),
265
- ) : this(
266
- headlineDefaultBold = headlineDefaultBold,
267
- headerMBold = headerMBold,
268
- headerDefaultBold = headerDefaultBold,
269
- headerSSemibold = headerSSemibold,
270
- headerXsSemibold = headerXsSemibold,
271
- bodyDefaultRegular = bodyDefaultRegular,
272
- bodyDefaultRegularStrikethrough = bodyDefaultRegularStrikethrough,
273
- descriptionDefaultRegular = descriptionDefaultRegular,
274
- descriptionDefaultRegularStrikethrough = descriptionDefaultRegularStrikethrough,
275
- descriptionXsRegular = descriptionXsRegular,
276
- descriptionXsRegularStrikethrough = descriptionXsRegularStrikethrough,
277
- labelDefaultMedium = labelDefaultMedium,
278
- labelSMedium = labelSMedium,
279
- labelXsMedium = labelXsMedium,
280
- actionDefaultBold = actionDefaultBold,
281
- actionSBold = actionSBold,
282
- actionXsBold = actionXsBold,
283
- actionXxsBold = actionXxsBold
284
- )
285
- }
286
-
287
- val Typography = AppTypography()
@@ -1,54 +0,0 @@
1
- package vn.momo.kits.layout
2
-
3
- import androidx.compose.foundation.background
4
- import androidx.compose.foundation.layout.Arrangement
5
- import androidx.compose.foundation.layout.Box
6
- import androidx.compose.foundation.layout.BoxWithConstraints
7
- import androidx.compose.foundation.layout.ExperimentalLayoutApi
8
- import androidx.compose.foundation.layout.FlowRow
9
- import androidx.compose.foundation.layout.PaddingValues
10
- import androidx.compose.foundation.layout.fillMaxWidth
11
- import androidx.compose.foundation.layout.padding
12
- import androidx.compose.foundation.shape.RoundedCornerShape
13
- import androidx.compose.runtime.Composable
14
- import androidx.compose.runtime.CompositionLocalProvider
15
- import androidx.compose.ui.Modifier
16
- import androidx.compose.ui.draw.clip
17
- import androidx.compose.ui.draw.shadow
18
- import androidx.compose.ui.graphics.Color
19
- import androidx.compose.ui.unit.dp
20
- import vn.momo.kits.components.Image
21
- import vn.momo.kits.const.AppTheme
22
- import vn.momo.kits.const.Radius
23
- import vn.momo.kits.const.Spacing
24
-
25
- @Composable
26
- @OptIn(ExperimentalLayoutApi::class)
27
- fun Card(
28
- useShadow: Boolean = false,
29
- backgroundImage: String? = null,
30
- backgroundColor: Color? = null,
31
- contentPadding: PaddingValues = PaddingValues(Spacing.M),
32
- modifier: Modifier = Modifier,
33
- content: @Composable () -> Unit,
34
- ) {
35
- val columns = gridColumns()
36
- val gap = Spacing.S
37
- val shape = RoundedCornerShape(Radius.M)
38
- var surface = modifier.fillMaxWidth().padding(horizontal = Spacing.M)
39
- if (useShadow) surface = surface.shadow(6.dp, shape)
40
- surface = surface.clip(shape).background(backgroundColor ?: AppTheme.current.colors.background.surface)
41
- Box(modifier = surface) {
42
- if (backgroundImage != null) {
43
- Image(source = backgroundImage, modifier = Modifier.matchParentSize())
44
- }
45
- BoxWithConstraints(modifier = Modifier.fillMaxWidth().padding(contentPadding)) {
46
- CompositionLocalProvider(LocalGridContext provides gridContext(constraints.maxWidth, columns, gap)) {
47
- FlowRow(
48
- horizontalArrangement = Arrangement.spacedBy(gap),
49
- verticalArrangement = Arrangement.spacedBy(gap),
50
- ) { content() }
51
- }
52
- }
53
- }
54
- }
@@ -1,50 +0,0 @@
1
- package vn.momo.kits.layout
2
-
3
- import androidx.compose.foundation.layout.Column
4
- import androidx.compose.foundation.layout.height
5
- import androidx.compose.foundation.layout.width
6
- import androidx.compose.runtime.Composable
7
- import androidx.compose.runtime.compositionLocalOf
8
- import androidx.compose.ui.Modifier
9
- import androidx.compose.ui.platform.LocalDensity
10
- import androidx.compose.ui.unit.Dp
11
- import androidx.compose.ui.unit.dp
12
- import kotlin.math.floor
13
-
14
- internal data class GridContext(
15
- val numberOfColumns: Int = 12,
16
- val gutterPx: Int = 0,
17
- val columnPx: Float = 0f,
18
- val density: Float = 1f,
19
- ) {
20
- fun sizeForSpan(span: Int): Dp = (floor(columnPx * span + gutterPx * (span - 1)) / density).dp
21
- }
22
-
23
- internal val LocalGridContext = compositionLocalOf<GridContext?> { null }
24
-
25
- @Composable
26
- internal fun gridColumns(): Int = if (getScreenLayout().contentWidth > 600.dp) 24 else 12
27
-
28
- @Composable
29
- internal fun gridContext(maxWidthPx: Int, columns: Int, gap: Dp): GridContext {
30
- val density = LocalDensity.current
31
- val gutterPx = with(density) { gap.roundToPx() }
32
- return GridContext(columns, gutterPx, (maxWidthPx - gutterPx * (columns - 1)).toFloat() / columns, density.density)
33
- }
34
-
35
- @Composable
36
- fun Item(
37
- widthSpan: Int? = null,
38
- heightSpan: Int = 0,
39
- modifier: Modifier = Modifier,
40
- contentModifier: Modifier = Modifier,
41
- content: @Composable () -> Unit,
42
- ) {
43
- val grid = LocalGridContext.current
44
- var m = modifier
45
- if (grid != null) {
46
- m = m.width(grid.sizeForSpan(widthSpan ?: grid.numberOfColumns))
47
- if (heightSpan > 0) m = m.height(grid.sizeForSpan(heightSpan))
48
- }
49
- Column(modifier = m.then(contentModifier)) { content() }
50
- }