@momo-kits/native-kits 0.152.4-scale.4 → 0.152.5-klib.1

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 (117) hide show
  1. package/README.md +175 -5
  2. package/ios/native-kits.podspec +18 -16
  3. package/package.json +2 -4
  4. package/CODE_OF_CONDUCT.md +0 -133
  5. package/CONTRIBUTING.md +0 -114
  6. package/LICENSE +0 -20
  7. package/build.gradle.kts +0 -32
  8. package/compose/MoMoComposeKits.podspec +0 -54
  9. package/compose/build.gradle.kts +0 -149
  10. package/compose/src/androidMain/AndroidManifest.xml +0 -2
  11. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +0 -105
  12. package/compose/src/commonMain/composeResources/files/lottie_circle_loader.json +0 -1
  13. package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
  14. package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
  15. package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
  16. package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
  17. package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
  18. package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
  19. package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
  20. package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
  21. package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
  22. package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
  23. package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
  24. package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
  25. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
  26. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
  27. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +0 -57
  28. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +0 -201
  29. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +0 -222
  30. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +0 -48
  31. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +0 -86
  32. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +0 -76
  33. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +0 -76
  34. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +0 -308
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +0 -33
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +0 -715
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +0 -214
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +0 -404
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +0 -69
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +0 -78
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +0 -27
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +0 -334
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +0 -345
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +0 -90
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +0 -133
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +0 -543
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +0 -23
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +0 -69
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +0 -143
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +0 -179
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +0 -111
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +0 -395
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +0 -164
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +0 -234
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +0 -226
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +0 -227
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +0 -241
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +0 -235
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +0 -364
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +0 -50
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +0 -34
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +0 -85
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +0 -33
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +0 -338
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +0 -95
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +0 -64
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +0 -89
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +0 -91
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +0 -86
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +0 -91
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +0 -208
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +0 -172
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +0 -199
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +0 -29
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +0 -237
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +0 -191
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +0 -306
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +0 -12
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +0 -13
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +0 -189
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +0 -293
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +0 -2
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +0 -35
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +0 -2
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +0 -59
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +0 -68
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +0 -11
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +0 -49
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +0 -51
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +0 -232
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +0 -111
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +0 -94
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +0 -159
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +0 -302
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ScaleSizeScope.kt +0 -22
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +0 -483
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +0 -169
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +0 -217
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +0 -86
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +0 -180
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +0 -251
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +0 -80
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +0 -306
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +0 -31
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +0 -385
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +0 -125
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +0 -38
  108. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +0 -1329
  109. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +0 -62
  110. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +0 -88
  111. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +0 -144
  112. package/gradle.properties +0 -19
  113. package/gradlew +0 -240
  114. package/gradlew.bat +0 -91
  115. package/ios/Theme.md +0 -18
  116. package/local.properties +0 -8
  117. package/settings.gradle.kts +0 -25
@@ -1,293 +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.Dp
11
- import androidx.compose.ui.unit.TextUnit
12
- import androidx.compose.ui.unit.TextUnitType
13
- import androidx.compose.ui.unit.dp
14
- import androidx.compose.ui.unit.sp
15
- import org.jetbrains.compose.resources.Font
16
- import org.jetbrains.compose.resources.FontResource
17
- import org.jetbrains.compose.resources.InternalResourceApi
18
- import vn.momo.kits.navigation.DisableScaleSize
19
- import vn.momo.kits.navigation.ScaleSizeMaxRate
20
- import vn.momo.kits.platform.getScreenDimensions
21
- import kotlin.math.max
22
- import kotlin.math.min
23
- import vn.momo.uikits.resources.Res
24
- import vn.momo.uikits.resources.momosignature
25
- import vn.momo.uikits.resources.momotrustdisplay
26
- import vn.momo.uikits.resources.sfprotext_black
27
- import vn.momo.uikits.resources.sfprotext_bold
28
- import vn.momo.uikits.resources.sfprotext_heavy
29
- import vn.momo.uikits.resources.sfprotext_light
30
- import vn.momo.uikits.resources.sfprotext_medium
31
- import vn.momo.uikits.resources.sfprotext_regular
32
- import vn.momo.uikits.resources.sfprotext_semibold
33
- import vn.momo.uikits.resources.sfprotext_thin
34
- import vn.momo.uikits.resources.sfprotext_ultralight
35
-
36
- const val DEFAULT_SCREEN_SIZE = 375f
37
- const val MAX_FONT_SCALE = 1.5f
38
- const val MAX_DEVICE_SCALE = 5
39
-
40
- @Composable
41
- fun scaleSize(size: Float): Float {
42
- if (DisableScaleSize.current == true) return size
43
- val scaleSizeMaxRate: Float = ScaleSizeMaxRate.current ?: MAX_FONT_SCALE
44
- val deviceWidth = getScreenDimensions().width
45
- val deviceScale = deviceWidth / DEFAULT_SCREEN_SIZE
46
-
47
- val density = LocalDensity.current
48
- val fontScale = density.fontScale
49
-
50
- var fontSizeScaleDevice = size
51
- var fontSizeScaleOS = size
52
-
53
- if (deviceScale > 1) {
54
- fontSizeScaleDevice =
55
- min(deviceScale * fontSizeScaleDevice, fontSizeScaleDevice + MAX_DEVICE_SCALE)
56
- }
57
-
58
- if (fontScale > 1) {
59
- fontSizeScaleOS = min(fontScale * fontSizeScaleOS, fontSizeScaleOS * scaleSizeMaxRate)
60
- }
61
-
62
- return max(
63
- fontSizeScaleDevice,
64
- fontSizeScaleOS
65
- )
66
- }
67
-
68
- @Composable
69
- fun scaleSize(size: TextUnit): TextUnit {
70
- if (DisableScaleSize.current == true) return size
71
- if (!size.isSp) return size
72
-
73
- val density = LocalDensity.current
74
-
75
- val scaled = scaleSize(size.value)
76
- val spValue = scaled / density.fontScale
77
-
78
- return TextUnit(value = spValue, type = TextUnitType.Sp)
79
- }
80
-
81
- @Composable
82
- fun scaleSize(size: Dp): Dp {
83
- return scaleSize(size.value).toInt().dp
84
- }
85
-
86
- @Composable
87
- fun scaleSize(textStyle: TextStyle): TextStyle {
88
- return textStyle.copy(
89
- fontSize = if (textStyle.fontSize != TextUnit.Unspecified)
90
- scaleSize(textStyle.fontSize)
91
- else
92
- TextUnit.Unspecified,
93
-
94
- lineHeight = if (textStyle.lineHeight != TextUnit.Unspecified)
95
- scaleSize(textStyle.lineHeight)
96
- else
97
- TextUnit.Unspecified,
98
-
99
- letterSpacing = if (textStyle.letterSpacing != TextUnit.Unspecified)
100
- scaleSize(textStyle.letterSpacing)
101
- else
102
- TextUnit.Unspecified
103
- )
104
- }
105
-
106
-
107
- @OptIn(InternalResourceApi::class)
108
- @Composable
109
- fun getFont(font: FontResource): FontFamily {
110
- return FontFamily(Font(font))
111
- }
112
-
113
- @Composable
114
- fun getFontFamily(fontFamily: String, fontWeight: FontWeight? = FontWeight.Normal): FontFamily {
115
- val key = "$fontFamily-${fontWeight?.weight}"
116
- val fontMap = mapOf(
117
- "SFProText-100" to Res.font.sfprotext_thin,
118
- "SFProText-200" to Res.font.sfprotext_ultralight,
119
- "SFProText-300" to Res.font.sfprotext_light,
120
- "SFProText-400" to Res.font.sfprotext_regular,
121
- "SFProText-500" to Res.font.sfprotext_medium,
122
- "SFProText-600" to Res.font.sfprotext_semibold,
123
- "SFProText-700" to Res.font.sfprotext_bold,
124
- "SFProText-800" to Res.font.sfprotext_heavy,
125
- "SFProText-900" to Res.font.sfprotext_black,
126
-
127
- "MoMoSignature-100" to Res.font.momosignature,
128
- "MoMoSignature-200" to Res.font.momosignature,
129
- "MoMoSignature-300" to Res.font.momosignature,
130
- "MoMoSignature-400" to Res.font.momosignature,
131
- "MoMoSignature-500" to Res.font.momosignature,
132
- "MoMoSignature-600" to Res.font.momosignature,
133
- "MoMoSignature-700" to Res.font.momosignature,
134
- "MoMoSignature-800" to Res.font.momosignature,
135
- "MoMoSignature-900" to Res.font.momosignature,
136
-
137
- "MoMoTrustDisplay-100" to Res.font.momotrustdisplay,
138
- "MoMoTrustDisplay-200" to Res.font.momotrustdisplay,
139
- "MoMoTrustDisplay-300" to Res.font.momotrustdisplay,
140
- "MoMoTrustDisplay-400" to Res.font.momotrustdisplay,
141
- "MoMoTrustDisplay-500" to Res.font.momotrustdisplay,
142
- "MoMoTrustDisplay-600" to Res.font.momotrustdisplay,
143
- "MoMoTrustDisplay-700" to Res.font.momotrustdisplay,
144
- "MoMoTrustDisplay-800" to Res.font.momotrustdisplay,
145
- "MoMoTrustDisplay-900" to Res.font.momotrustdisplay,
146
- )
147
- val font = fontMap[key] ?: Res.font.sfprotext_regular
148
- return getFont(font)
149
- }
150
-
151
- @Immutable
152
- class AppTypography internal constructor(
153
- val headlineDefaultBold: TextStyle,
154
- val headerMBold: TextStyle,
155
- val headerDefaultBold: TextStyle,
156
- val headerSSemibold: TextStyle,
157
- val headerXsSemibold: TextStyle,
158
- val bodyDefaultRegular: TextStyle,
159
- val bodyDefaultRegularStrikethrough: TextStyle,
160
- val descriptionDefaultRegular: TextStyle,
161
- val descriptionDefaultRegularStrikethrough: TextStyle,
162
- val descriptionXsRegular: TextStyle,
163
- val descriptionXsRegularStrikethrough: TextStyle,
164
- val labelDefaultMedium: TextStyle,
165
- val labelSMedium: TextStyle,
166
- val labelXsMedium: TextStyle,
167
- val actionDefaultBold: TextStyle,
168
- val actionSBold: TextStyle,
169
- val actionXsBold: TextStyle,
170
- val actionXxsBold: TextStyle,
171
- ) {
172
- constructor(
173
- default: TextStyle = TextStyle(
174
- fontSize = 14.sp,
175
- lineHeight = 20.sp,
176
- fontWeight = FontWeight.Normal
177
- ),
178
- headlineDefaultBold: TextStyle = TextStyle(
179
- fontSize = 24.sp,
180
- lineHeight = 34.sp,
181
- fontWeight = FontWeight.Bold
182
- ),
183
- headerMBold: TextStyle = TextStyle(
184
- fontSize = 18.sp,
185
- lineHeight = 26.sp,
186
- fontWeight = FontWeight.Bold
187
- ),
188
- headerDefaultBold: TextStyle = TextStyle(
189
- fontSize = 16.sp,
190
- lineHeight = 22.sp,
191
- fontWeight = FontWeight.Bold
192
- ),
193
- headerSSemibold: TextStyle = TextStyle(
194
- fontSize = 14.sp,
195
- lineHeight = 20.sp,
196
- fontWeight = FontWeight.SemiBold
197
- ),
198
- headerXsSemibold: TextStyle = TextStyle(
199
- fontSize = 12.sp,
200
- lineHeight = 18.sp,
201
- fontWeight = FontWeight.SemiBold
202
- ),
203
- bodyDefaultRegular: TextStyle = TextStyle(
204
- fontSize = 14.sp,
205
- lineHeight = 20.sp,
206
- fontWeight = FontWeight.Normal
207
- ),
208
- bodyDefaultRegularStrikethrough: TextStyle = TextStyle(
209
- fontSize = 14.sp,
210
- lineHeight = 20.sp,
211
- fontWeight = FontWeight.Normal,
212
- textDecoration = TextDecoration.LineThrough
213
- ),
214
- descriptionDefaultRegular: TextStyle = TextStyle(
215
- fontSize = 12.sp,
216
- lineHeight = 18.sp,
217
- fontWeight = FontWeight.Normal
218
- ),
219
- descriptionDefaultRegularStrikethrough: TextStyle = TextStyle(
220
- fontSize = 12.sp,
221
- lineHeight = 18.sp,
222
- fontWeight = FontWeight.Normal,
223
- textDecoration = TextDecoration.LineThrough
224
- ),
225
- descriptionXsRegular: TextStyle = TextStyle(
226
- fontSize = 10.sp,
227
- lineHeight = 14.sp,
228
- fontWeight = FontWeight.Normal
229
- ),
230
- descriptionXsRegularStrikethrough: TextStyle = TextStyle(
231
- fontSize = 10.sp,
232
- lineHeight = 14.sp,
233
- fontWeight = FontWeight.Normal,
234
- textDecoration = TextDecoration.LineThrough
235
- ),
236
- labelDefaultMedium: TextStyle = TextStyle(
237
- fontSize = 14.sp,
238
- lineHeight = 20.sp,
239
- fontWeight = FontWeight.Medium
240
- ),
241
- labelSMedium: TextStyle = TextStyle(
242
- fontSize = 12.sp,
243
- lineHeight = 18.sp,
244
- fontWeight = FontWeight.Medium
245
- ),
246
- labelXsMedium: TextStyle = TextStyle(
247
- fontSize = 10.sp,
248
- lineHeight = 14.sp,
249
- fontWeight = FontWeight.Medium
250
- ),
251
- actionDefaultBold: TextStyle = TextStyle(
252
- fontSize = 16.sp,
253
- lineHeight = 22.sp,
254
- fontWeight = FontWeight.Bold
255
- ),
256
- actionSBold: TextStyle = TextStyle(
257
- fontSize = 14.sp,
258
- lineHeight = 20.sp,
259
- fontWeight = FontWeight.Bold
260
- ),
261
- actionXsBold: TextStyle = TextStyle(
262
- fontSize = 12.sp,
263
- lineHeight = 18.sp,
264
- fontWeight = FontWeight.Bold
265
- ),
266
- actionXxsBold: TextStyle = TextStyle(
267
- fontSize = 10.sp,
268
- lineHeight = 14.sp,
269
- fontWeight = FontWeight.Bold
270
- ),
271
- ) : this(
272
- headlineDefaultBold = headlineDefaultBold,
273
- headerMBold = headerMBold,
274
- headerDefaultBold = headerDefaultBold,
275
- headerSSemibold = headerSSemibold,
276
- headerXsSemibold = headerXsSemibold,
277
- bodyDefaultRegular = bodyDefaultRegular,
278
- bodyDefaultRegularStrikethrough = bodyDefaultRegularStrikethrough,
279
- descriptionDefaultRegular = descriptionDefaultRegular,
280
- descriptionDefaultRegularStrikethrough = descriptionDefaultRegularStrikethrough,
281
- descriptionXsRegular = descriptionXsRegular,
282
- descriptionXsRegularStrikethrough = descriptionXsRegularStrikethrough,
283
- labelDefaultMedium = labelDefaultMedium,
284
- labelSMedium = labelSMedium,
285
- labelXsMedium = labelXsMedium,
286
- actionDefaultBold = actionDefaultBold,
287
- actionSBold = actionSBold,
288
- actionXsBold = actionXsBold,
289
- actionXxsBold = actionXxsBold
290
- )
291
- }
292
-
293
- val Typography = AppTypography()
@@ -1,2 +0,0 @@
1
- package vn.momo.kits.layout
2
-
@@ -1,35 +0,0 @@
1
- package vn.momo.kits.layout
2
-
3
- import androidx.compose.foundation.layout.Box
4
- import androidx.compose.foundation.layout.height
5
- import androidx.compose.foundation.layout.width
6
- import androidx.compose.runtime.Composable
7
- import androidx.compose.ui.Modifier
8
- import androidx.compose.ui.unit.Dp
9
-
10
- data class GridContext(
11
- val numberOfColumns: Number,
12
- val gutterSize: Number,
13
- val sizePerSpan: Number,
14
- val getSizeSpan: (Number) -> Number
15
- )
16
-
17
- @Composable
18
- fun Item(
19
- heightSpan: Number = 1,
20
- widthSpan: Number = 1,
21
- content: @Composable() () -> Unit,
22
- modifier: Modifier = Modifier,
23
- grid: GridContext
24
- ) {
25
-
26
- val widthItem = grid.getSizeSpan(widthSpan)
27
- val heightItem = grid.getSizeSpan(heightSpan)
28
-
29
- Box(
30
- modifier = modifier.width(width = Dp(widthItem.toFloat()))
31
- .height(height = Dp(heightItem.toFloat()))
32
- ) {
33
- content()
34
- }
35
- }
@@ -1,2 +0,0 @@
1
- package vn.momo.kits.layout
2
-
@@ -1,59 +0,0 @@
1
- package vn.momo.kits.modifier
2
-
3
- import androidx.compose.ui.Modifier
4
- import androidx.compose.ui.node.ModifierNodeElement
5
- import androidx.compose.ui.node.SemanticsModifierNode
6
- import androidx.compose.ui.semantics.SemanticsPropertyReceiver
7
- import androidx.compose.ui.semantics.contentDescription
8
- import androidx.compose.ui.semantics.semantics
9
- import androidx.compose.ui.semantics.testTag
10
- import vn.momo.kits.platform.getPlatformName
11
-
12
- fun Modifier.setAutomationId(accessibilityId: String, label: String? = null): Modifier {
13
- return if (getPlatformName() == "Android") {
14
- semantics {
15
- contentDescription = accessibilityId
16
- }
17
- } else {
18
- semantics {
19
- testTag = accessibilityId
20
- contentDescription = label ?: accessibilityId
21
- }
22
- }
23
- }
24
-
25
- /**
26
- * Alternative for [setAutomationId]
27
- *
28
- * reason: [link](https://developer.android.com/develop/ui/compose/custom-modifiers#composable_function_modifiers_are_never_skipped)
29
- * */
30
- fun Modifier.kitsAutomationId(accessibilityId: String, label: String? = null) =
31
- this then KitsAutomationIdElement(accessibilityId, label)
32
-
33
- private data class KitsAutomationIdElement(
34
- private val accessibilityId: String,
35
- private val label: String? = null,
36
- ) : ModifierNodeElement<KitsAutomationIdNode>() {
37
- override fun create(): KitsAutomationIdNode {
38
- return KitsAutomationIdNode(accessibilityId, label)
39
- }
40
-
41
- override fun update(node: KitsAutomationIdNode) {
42
- node.accessibilityId = accessibilityId
43
- node.label = label
44
- }
45
- }
46
-
47
- private class KitsAutomationIdNode(
48
- var accessibilityId: String,
49
- var label: String?,
50
- ) : Modifier.Node(), SemanticsModifierNode {
51
- override fun SemanticsPropertyReceiver.applySemantics() {
52
- if (getPlatformName() == "Android") {
53
- contentDescription = accessibilityId
54
- } else {
55
- testTag = accessibilityId
56
- contentDescription = label ?: accessibilityId
57
- }
58
- }
59
- }
@@ -1,68 +0,0 @@
1
- package vn.momo.kits.modifier
2
-
3
- import androidx.compose.animation.core.animateFloatAsState
4
- import androidx.compose.foundation.clickable
5
- import androidx.compose.foundation.gestures.detectTapGestures
6
- import androidx.compose.foundation.interaction.MutableInteractionSource
7
- import androidx.compose.foundation.interaction.collectIsPressedAsState
8
- import androidx.compose.runtime.getValue
9
- import androidx.compose.runtime.remember
10
- import androidx.compose.ui.Modifier
11
- import androidx.compose.ui.composed
12
- import androidx.compose.ui.graphics.graphicsLayer
13
- import androidx.compose.ui.input.pointer.pointerInput
14
- import androidx.compose.ui.platform.LocalFocusManager
15
- import androidx.compose.ui.platform.LocalSoftwareKeyboardController
16
- import androidx.compose.ui.semantics.Role
17
-
18
- fun Modifier.noFeedbackClickable(
19
- enabled: Boolean = true, onClickLabel: String? = null, role: Role? = null, onClick: () -> Unit
20
- ): Modifier = composed {
21
- clickable(
22
- interactionSource = remember { MutableInteractionSource() },
23
- indication = null,
24
- enabled,
25
- onClickLabel,
26
- role,
27
- onClick
28
- )
29
- }
30
-
31
- fun Modifier.activeOpacityClickable(
32
- activeOpacity: Float = 0.2f,
33
- enabled: Boolean = true,
34
- onClickLabel: String? = null,
35
- role: Role? = null,
36
- onClick: () -> Unit
37
- ): Modifier = composed {
38
- val interactionSource = remember { MutableInteractionSource() }
39
- val isPressed by interactionSource.collectIsPressedAsState()
40
- val animatedAlpha by animateFloatAsState(
41
- targetValue = if (isPressed) activeOpacity else 1f,
42
- label = "ActiveOpacity"
43
- )
44
-
45
- this
46
- .graphicsLayer { alpha = animatedAlpha }
47
- .clickable(
48
- interactionSource = interactionSource,
49
- indication = null,
50
- enabled,
51
- onClickLabel,
52
- role,
53
- onClick
54
- )
55
- }
56
-
57
-
58
- fun Modifier.hideKeyboardOnTap() = composed {
59
- val focusManager = LocalFocusManager.current
60
- val keyboardManager = LocalSoftwareKeyboardController.current
61
-
62
- pointerInput(Unit) {
63
- detectTapGestures {
64
- keyboardManager?.hide()
65
- focusManager.clearFocus()
66
- }
67
- }
68
- }
@@ -1,11 +0,0 @@
1
- package vn.momo.kits.modifier
2
-
3
- import androidx.compose.ui.Modifier
4
-
5
- fun Modifier.conditional(condition: Boolean, modifier: Modifier.() -> Modifier): Modifier {
6
- return if (condition) {
7
- then(modifier(Modifier))
8
- } else {
9
- this
10
- }
11
- }
@@ -1,49 +0,0 @@
1
- package vn.momo.kits.modifier
2
-
3
- import androidx.compose.ui.Modifier
4
- import androidx.compose.ui.draw.drawBehind
5
- import androidx.compose.ui.graphics.Color
6
- import androidx.compose.ui.graphics.Paint
7
- import androidx.compose.ui.graphics.drawscope.drawIntoCanvas
8
- import androidx.compose.ui.graphics.toArgb
9
- import androidx.compose.ui.unit.Dp
10
- import androidx.compose.ui.unit.dp
11
- import vn.momo.kits.platform.setMaskFilter
12
-
13
-
14
- fun Modifier.shadow(
15
- color: Color = Color.Black,
16
- borderRadius: Dp = 0.dp,
17
- blurRadius: Float = 0f,
18
- offsetY: Dp = 0.dp,
19
- offsetX: Dp = 0.dp,
20
- spread: Dp = 0f.dp,
21
- modifier: Modifier = Modifier
22
- ) = this.then(
23
- modifier.drawBehind {
24
- this.drawIntoCanvas {
25
- val paint = Paint()
26
- val frameworkPaint = paint.asFrameworkPaint()
27
- val spreadPixel = spread.toPx()
28
- val leftPixel = (0f - spreadPixel) + offsetX.toPx()
29
- val topPixel = (0f - spreadPixel) + offsetY.toPx()
30
- val rightPixel = (this.size.width + spreadPixel)
31
- val bottomPixel = (0f + spreadPixel) - offsetY.toPx()
32
-
33
- if (blurRadius != 0f) {
34
- frameworkPaint.setMaskFilter(blurRadius)
35
- }
36
-
37
- frameworkPaint.color = color.toArgb()
38
- it.drawRoundRect(
39
- left = leftPixel,
40
- top = topPixel,
41
- right = rightPixel,
42
- bottom = bottomPixel,
43
- radiusX = borderRadius.toPx(),
44
- radiusY = borderRadius.toPx(),
45
- paint
46
- )
47
- }
48
- }
49
- )
@@ -1,51 +0,0 @@
1
- package vn.momo.kits.modifier
2
-
3
- import androidx.compose.runtime.Composable
4
- import androidx.compose.runtime.State
5
- import androidx.compose.ui.Modifier
6
- import androidx.compose.ui.layout.Measurable
7
- import androidx.compose.ui.layout.MeasureResult
8
- import androidx.compose.ui.layout.MeasureScope
9
- import androidx.compose.ui.node.LayoutModifierNode
10
- import androidx.compose.ui.node.ModifierNodeElement
11
- import androidx.compose.ui.unit.Constraints
12
- import androidx.compose.ui.unit.IntOffset
13
-
14
- @Composable
15
- fun Modifier.dynamicSize(
16
- widthState: State<Int>? = null,
17
- heightState: State<Int>? = null,
18
- ) = this then DynamicSizeElement(widthState, heightState)
19
-
20
- private data class DynamicSizeElement(
21
- val widthState: State<Int>?,
22
- val heightState: State<Int>?,
23
- ) : ModifierNodeElement<DynamicSizeNode>() {
24
- override fun create(): DynamicSizeNode {
25
- return DynamicSizeNode(widthState, heightState)
26
- }
27
-
28
- override fun update(node: DynamicSizeNode) {
29
- node.widthState = widthState
30
- node.heightState = heightState
31
- }
32
-
33
- }
34
-
35
- private class DynamicSizeNode(
36
- var widthState: State<Int>?,
37
- var heightState: State<Int>?,
38
- ) : Modifier.Node(), LayoutModifierNode {
39
- override fun MeasureScope.measure(
40
- measurable: Measurable,
41
- constraints: Constraints
42
- ): MeasureResult {
43
- val p = measurable.measure(constraints)
44
- return layout(
45
- width = widthState?.value ?: p.width,
46
- height = heightState?.value ?: p.height,
47
- ) {
48
- p.place(IntOffset.Zero)
49
- }
50
- }
51
- }