@momo-kits/native-kits 0.158.1-beta.1-debug → 0.158.1-beta.2-debug
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compose/build.gradle.kts +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +15 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +15 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +1 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +4 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +11 -9
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +56 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +167 -0
- package/example/ios/Example.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/Example.xcscheme +32 -0
- package/example/ios/Example.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/WorkspaceSettings.xcsettings +16 -0
- package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +6 -0
- package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +5 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/Pods-Example.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SDWebImage.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SkeletonUI.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/lottie-ios-LottiePrivacyInfo.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/lottie-ios.xcscheme +58 -0
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +60 -0
- package/gradle.properties +1 -1
- package/local.properties +2 -2
- package/package.json +1 -1
- package/.claude/settings.local.json +0 -11
- package/.claude/skills/design-system/SKILL.md +0 -88
- package/.claude/skills/design-system/references/components/avatar.md +0 -134
- package/.claude/skills/design-system/references/components/badge.md +0 -127
- package/.claude/skills/design-system/references/components/bottom-tab.md +0 -177
- package/.claude/skills/design-system/references/components/bottomsheet.md +0 -170
- package/.claude/skills/design-system/references/components/button.md +0 -206
- package/.claude/skills/design-system/references/components/carousel.md +0 -117
- package/.claude/skills/design-system/references/components/checkbox.md +0 -98
- package/.claude/skills/design-system/references/components/chip.md +0 -146
- package/.claude/skills/design-system/references/components/collapse.md +0 -120
- package/.claude/skills/design-system/references/components/date-picker.md +0 -119
- package/.claude/skills/design-system/references/components/divider.md +0 -84
- package/.claude/skills/design-system/references/components/icon.md +0 -130
- package/.claude/skills/design-system/references/components/image.md +0 -81
- package/.claude/skills/design-system/references/components/information.md +0 -107
- package/.claude/skills/design-system/references/components/input-dropdown.md +0 -138
- package/.claude/skills/design-system/references/components/input-money.md +0 -157
- package/.claude/skills/design-system/references/components/input-otp.md +0 -132
- package/.claude/skills/design-system/references/components/input-phone-number.md +0 -140
- package/.claude/skills/design-system/references/components/input-search.md +0 -124
- package/.claude/skills/design-system/references/components/input-text-area.md +0 -133
- package/.claude/skills/design-system/references/components/input.md +0 -152
- package/.claude/skills/design-system/references/components/loader.md +0 -87
- package/.claude/skills/design-system/references/components/pagination.md +0 -105
- package/.claude/skills/design-system/references/components/popup-notify.md +0 -128
- package/.claude/skills/design-system/references/components/progress-info.md +0 -114
- package/.claude/skills/design-system/references/components/radio.md +0 -86
- package/.claude/skills/design-system/references/components/rating.md +0 -126
- package/.claude/skills/design-system/references/components/skeleton.md +0 -120
- package/.claude/skills/design-system/references/components/slider.md +0 -141
- package/.claude/skills/design-system/references/components/snackbar.md +0 -97
- package/.claude/skills/design-system/references/components/stepper.md +0 -100
- package/.claude/skills/design-system/references/components/steps.md +0 -91
- package/.claude/skills/design-system/references/components/suggest-action.md +0 -95
- package/.claude/skills/design-system/references/components/swipe.md +0 -121
- package/.claude/skills/design-system/references/components/switch.md +0 -98
- package/.claude/skills/design-system/references/components/tab-view.md +0 -120
- package/.claude/skills/design-system/references/components/tag.md +0 -118
- package/.claude/skills/design-system/references/components/text.md +0 -151
- package/.claude/skills/design-system/references/components/toast.md +0 -99
- package/.claude/skills/design-system/references/components/tooltip.md +0 -138
- package/.claude/skills/design-system/references/components/top-nav-miniapp.md +0 -94
- package/.claude/skills/design-system/references/components/top-nav.md +0 -226
- package/.claude/skills/design-system/references/components/uploader.md +0 -115
- package/.claude/skills/design-system/references/navigation/bottom-tab.md +0 -131
- package/.claude/skills/design-system/references/navigation/bottomsheet.md +0 -161
- package/.claude/skills/design-system/references/navigation/modal.md +0 -133
- package/.claude/skills/design-system/references/navigation/navigation-options.md +0 -225
- package/.claude/skills/design-system/references/navigation/navigator.md +0 -111
- package/.claude/skills/design-system/references/navigation/setup.md +0 -134
- package/.claude/skills/design-system/references/navigation/stack.md +0 -128
- package/.claude/skills/design-system/references/spec-convention.md +0 -80
- package/.claude/skills/design-system/references/tokens/colors.md +0 -131
- package/.claude/skills/design-system/references/tokens/spacing-radius.md +0 -144
- package/.claude/skills/design-system/references/tokens/theme.md +0 -125
- package/.claude/skills/design-system/references/tokens/typography.md +0 -135
- package/.claude/skills/design-system-kits/SKILL.md +0 -102
- package/.claude/skills/design-system-kits/references/code-convention.md +0 -118
- package/.claude/skills/design-system-kits/references/components/avatar.md +0 -45
- package/.claude/skills/design-system-kits/references/components/badge.md +0 -27
- package/.claude/skills/design-system-kits/references/components/button.md +0 -65
- package/.claude/skills/design-system-kits/references/components/carousel.md +0 -51
- package/.claude/skills/design-system-kits/references/components/checkbox.md +0 -39
- package/.claude/skills/design-system-kits/references/components/chip.md +0 -54
- package/.claude/skills/design-system-kits/references/components/collapse.md +0 -63
- package/.claude/skills/design-system-kits/references/components/date-picker.md +0 -36
- package/.claude/skills/design-system-kits/references/components/divider.md +0 -21
- package/.claude/skills/design-system-kits/references/components/icon.md +0 -382
- package/.claude/skills/design-system-kits/references/components/image.md +0 -62
- package/.claude/skills/design-system-kits/references/components/information.md +0 -61
- package/.claude/skills/design-system-kits/references/components/input-dropdown.md +0 -92
- package/.claude/skills/design-system-kits/references/components/input-money.md +0 -128
- package/.claude/skills/design-system-kits/references/components/input-otp.md +0 -85
- package/.claude/skills/design-system-kits/references/components/input-phone-number.md +0 -96
- package/.claude/skills/design-system-kits/references/components/input-search.md +0 -127
- package/.claude/skills/design-system-kits/references/components/input-text-area.md +0 -100
- package/.claude/skills/design-system-kits/references/components/input.md +0 -126
- package/.claude/skills/design-system-kits/references/components/loader.md +0 -41
- package/.claude/skills/design-system-kits/references/components/pagination.md +0 -47
- package/.claude/skills/design-system-kits/references/components/popup-notify.md +0 -69
- package/.claude/skills/design-system-kits/references/components/popup-promotion.md +0 -35
- package/.claude/skills/design-system-kits/references/components/progress-info.md +0 -55
- package/.claude/skills/design-system-kits/references/components/radio.md +0 -42
- package/.claude/skills/design-system-kits/references/components/rating.md +0 -36
- package/.claude/skills/design-system-kits/references/components/skeleton.md +0 -25
- package/.claude/skills/design-system-kits/references/components/slider.md +0 -53
- package/.claude/skills/design-system-kits/references/components/snackbar.md +0 -52
- package/.claude/skills/design-system-kits/references/components/stepper.md +0 -46
- package/.claude/skills/design-system-kits/references/components/steps.md +0 -57
- package/.claude/skills/design-system-kits/references/components/suggest-action.md +0 -44
- package/.claude/skills/design-system-kits/references/components/swipe.md +0 -44
- package/.claude/skills/design-system-kits/references/components/switch.md +0 -43
- package/.claude/skills/design-system-kits/references/components/tab-view.md +0 -56
- package/.claude/skills/design-system-kits/references/components/tag.md +0 -50
- package/.claude/skills/design-system-kits/references/components/text.md +0 -56
- package/.claude/skills/design-system-kits/references/components/toast.md +0 -51
- package/.claude/skills/design-system-kits/references/components/tooltip.md +0 -95
- package/.claude/skills/design-system-kits/references/components/uploader.md +0 -48
- package/.claude/skills/design-system-kits/references/design-spec-structure.md +0 -356
- package/.claude/skills/design-system-kits/references/design-spec-to-code.md +0 -596
- package/.claude/skills/design-system-kits/references/navigation/bottom-tab.md +0 -155
- package/.claude/skills/design-system-kits/references/navigation/bottomsheet.md +0 -94
- package/.claude/skills/design-system-kits/references/navigation/modal.md +0 -125
- package/.claude/skills/design-system-kits/references/navigation/navigation-options.md +0 -430
- package/.claude/skills/design-system-kits/references/navigation/navigator.md +0 -177
- package/.claude/skills/design-system-kits/references/navigation/setup.md +0 -94
- package/.claude/skills/design-system-kits/references/navigation/stack.md +0 -152
- package/.claude/skills/design-system-kits/references/screen-layout-rule.md +0 -125
- package/.claude/skills/design-system-kits/references/tokens/colors.md +0 -183
- package/.claude/skills/design-system-kits/references/tokens/spacing-radius.md +0 -45
- package/.claude/skills/design-system-kits/references/tokens/theme.md +0 -97
- package/.claude/skills/design-system-kits/references/tokens/typography.md +0 -105
- package/.claude/skills/vibe-design/SKILL.md +0 -306
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# Badge
|
|
2
|
-
|
|
3
|
-
## React Native
|
|
4
|
-
|
|
5
|
-
```tsx
|
|
6
|
-
import { Badge, BadgeDot, BadgeDotAnimation, BadgeRibbon } from '@momo-kits/foundation';
|
|
7
|
-
|
|
8
|
-
<Badge label="99+" backgroundColor={Colors.red_03} />
|
|
9
|
-
<BadgeDot size="small" /> // 'small' | 'large'
|
|
10
|
-
<BadgeDotAnimation size="small" /> // 'small' | 'large'
|
|
11
|
-
<BadgeRibbon label="NEW" />
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
## Compose
|
|
15
|
-
|
|
16
|
-
```kotlin
|
|
17
|
-
import vn.momo.kits.components.Badge
|
|
18
|
-
import vn.momo.kits.components.BadgeDot
|
|
19
|
-
import vn.momo.kits.components.BadgeRibbon
|
|
20
|
-
import vn.momo.kits.components.DotSize
|
|
21
|
-
|
|
22
|
-
Badge(label = "99+", backgroundColor = Colors.red_03)
|
|
23
|
-
BadgeDot(size = DotSize.Small) // Small(10dp), Large(16dp)
|
|
24
|
-
BadgeRibbon(label = "NEW")
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
> **Note:** `BadgeDotAnimation` is RN-only (animated dot). Compose has no equivalent.
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
# Button Reference
|
|
2
|
-
|
|
3
|
-
## React Native
|
|
4
|
-
|
|
5
|
-
```tsx
|
|
6
|
-
import { Button } from '@momo-kits/foundation';
|
|
7
|
-
|
|
8
|
-
<Button
|
|
9
|
-
title="Click me" // button label
|
|
10
|
-
type="primary" // 'primary'|'secondary'|'tonal'|'outline'|'danger'|'text'|'disabled'
|
|
11
|
-
size="large" // 'large'|'medium'|'small'
|
|
12
|
-
full // full-width button (default: true)
|
|
13
|
-
iconLeft={iconSource} // left icon
|
|
14
|
-
iconRight={iconSource} // right icon
|
|
15
|
-
loading={false} // show spinner
|
|
16
|
-
disabled={false} // disable interaction
|
|
17
|
-
onPress={() => {}} // press handler
|
|
18
|
-
tintColor={Colors.pink_03} // custom tint
|
|
19
|
-
gradientConfig={{ // custom gradient
|
|
20
|
-
colors: ['#ff0', '#f00'],
|
|
21
|
-
start: { x: 0, y: 0 },
|
|
22
|
-
end: { x: 1, y: 0 },
|
|
23
|
-
}}
|
|
24
|
-
accessibilityLabel="submit" // QA automation ID
|
|
25
|
-
accessibilityState={{ disabled: true }}
|
|
26
|
-
params={{ action: 'submit' }} // tracking params
|
|
27
|
-
/>
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## Compose
|
|
33
|
-
|
|
34
|
-
```kotlin
|
|
35
|
-
import vn.momo.kits.components.Button
|
|
36
|
-
import vn.momo.kits.components.ButtonType
|
|
37
|
-
import vn.momo.kits.components.Size
|
|
38
|
-
|
|
39
|
-
Button(
|
|
40
|
-
onClick = { /* action */ },
|
|
41
|
-
type = ButtonType.PRIMARY, // PRIMARY, SECONDARY, TONAL, OUTLINE, DANGER, TEXT, DISABLED
|
|
42
|
-
size = Size.LARGE, // LARGE (48dp), MEDIUM (36dp), SMALL (28dp)
|
|
43
|
-
title = "Button",
|
|
44
|
-
iconLeft = "", // icon source string
|
|
45
|
-
iconRight = "",
|
|
46
|
-
loading = false, // show spinner
|
|
47
|
-
useTintColor = false, // tint icons to match text color (default: false)
|
|
48
|
-
isFull = true, // full-width (default: true)
|
|
49
|
-
modifier = Modifier,
|
|
50
|
-
)
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Button sizes map to typography: LARGE → `actionDefaultBold`, MEDIUM → `actionSBold`, SMALL → `actionXsBold`.
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## Side-by-Side Example
|
|
58
|
-
|
|
59
|
-
| Feature | React Native | Compose |
|
|
60
|
-
|---------|-------------|---------|
|
|
61
|
-
| Type prop | `type="primary"` (string) | `type = ButtonType.PRIMARY` (enum) |
|
|
62
|
-
| Size prop | `size="large"` (string) | `size = Size.LARGE` (enum) |
|
|
63
|
-
| Full width | `full` (boolean shorthand) | `isFull = true` |
|
|
64
|
-
| Press handler | `onPress={fn}` | `onClick = { fn() }` |
|
|
65
|
-
| Icon | `iconLeft={source}` (ImageSource) | `iconLeft = "icon_name"` (String) |
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# Carousel
|
|
2
|
-
|
|
3
|
-
## React Native
|
|
4
|
-
|
|
5
|
-
```tsx
|
|
6
|
-
import { Carousel } from '@momo-kits/carousel';
|
|
7
|
-
|
|
8
|
-
<Carousel
|
|
9
|
-
data={items}
|
|
10
|
-
renderItem={({ item, index }) => <Card>...</Card>}
|
|
11
|
-
autoplay={false}
|
|
12
|
-
autoplayInterval={3000}
|
|
13
|
-
loop={false}
|
|
14
|
-
enableSnap={true}
|
|
15
|
-
scrollEnabled={true}
|
|
16
|
-
inactiveSlideOpacity={1}
|
|
17
|
-
inactiveSlideScale={1}
|
|
18
|
-
onSnapToItem={(index) => {}}
|
|
19
|
-
onScrollIndexChanged={(index) => {}}
|
|
20
|
-
/>
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Compose
|
|
24
|
-
|
|
25
|
-
```kotlin
|
|
26
|
-
import vn.momo.kits.components.Carousel
|
|
27
|
-
|
|
28
|
-
Carousel(
|
|
29
|
-
itemCount = items.size,
|
|
30
|
-
modifier = Modifier,
|
|
31
|
-
loop = false, // infinite loop; default: false
|
|
32
|
-
autoplay = false, // auto-advance slides; default: false
|
|
33
|
-
autoplayInterval = 3000L, // ms between slides
|
|
34
|
-
enableSnap = true, // default: true
|
|
35
|
-
scrollEnabled = true, // default: true
|
|
36
|
-
inactiveSlideOpacity = 1f, // default: 1f
|
|
37
|
-
inactiveSlideScale = 1f, // default: 1f
|
|
38
|
-
onSnapToItem = { index -> },
|
|
39
|
-
onScrollIndexChanged = { index -> },
|
|
40
|
-
) { index ->
|
|
41
|
-
Card(items[index])
|
|
42
|
-
}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Key Differences
|
|
46
|
-
|
|
47
|
-
| Feature | React Native | Compose |
|
|
48
|
-
|---------|-------------|---------|
|
|
49
|
-
| Data source | `data` + `renderItem` | `itemCount` + `content` slot |
|
|
50
|
-
| Loop | `loop` | `loop` (virtual page ×1000) |
|
|
51
|
-
| Pagination | `Pagination` prop | Manual via `onScrollIndexChanged` |
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# CheckBox
|
|
2
|
-
|
|
3
|
-
## React Native
|
|
4
|
-
|
|
5
|
-
```tsx
|
|
6
|
-
import { CheckBox } from '@momo-kits/foundation';
|
|
7
|
-
|
|
8
|
-
<CheckBox
|
|
9
|
-
value={checked}
|
|
10
|
-
onChange={setChecked}
|
|
11
|
-
label="Accept terms"
|
|
12
|
-
disabled={false}
|
|
13
|
-
indeterminate={false} // partial selection state
|
|
14
|
-
accessibilityState={{ checked: true, disabled: false }}
|
|
15
|
-
params={{ field: 'terms' }} // tracking
|
|
16
|
-
/>
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Compose
|
|
20
|
-
|
|
21
|
-
```kotlin
|
|
22
|
-
import vn.momo.kits.components.CheckBox
|
|
23
|
-
|
|
24
|
-
CheckBox(
|
|
25
|
-
checked = isChecked,
|
|
26
|
-
onCheckedChange = { isChecked = it },
|
|
27
|
-
title = "Accept terms", // optional label
|
|
28
|
-
disabled = false,
|
|
29
|
-
indeterminate = false, // partial state (minus icon)
|
|
30
|
-
)
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Key Differences
|
|
34
|
-
|
|
35
|
-
| Feature | React Native | Compose |
|
|
36
|
-
|---------|-------------|---------|
|
|
37
|
-
| Value prop | `value` | `checked` |
|
|
38
|
-
| Change handler | `onChange` | `onCheckedChange` |
|
|
39
|
-
| Label prop | `label` | `title` |
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# Chip
|
|
2
|
-
|
|
3
|
-
## React Native
|
|
4
|
-
|
|
5
|
-
```tsx
|
|
6
|
-
import { Chip } from '@momo-kits/chip';
|
|
7
|
-
|
|
8
|
-
<Chip
|
|
9
|
-
label="Filter"
|
|
10
|
-
selected={isSelected}
|
|
11
|
-
onPress={toggle}
|
|
12
|
-
size="large" // 'small'|'large'
|
|
13
|
-
iconLeft="icon_name" // left icon name
|
|
14
|
-
iconRight={null} // right icon name (optional)
|
|
15
|
-
iconLeftColor={Colors.pink_03} // left icon tint color
|
|
16
|
-
iconRightColor={Colors.black_12}
|
|
17
|
-
backgroundColor={Colors.black_03}
|
|
18
|
-
accessibilityLabel="filter_chip"
|
|
19
|
-
accessibilityState={{ selected: isSelected }}
|
|
20
|
-
/>
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Note: Chip is a separate package `@momo-kits/chip` in RN.
|
|
24
|
-
|
|
25
|
-
## Compose
|
|
26
|
-
|
|
27
|
-
```kotlin
|
|
28
|
-
import vn.momo.kits.components.Chip
|
|
29
|
-
import vn.momo.kits.components.ChipSize
|
|
30
|
-
|
|
31
|
-
Chip(
|
|
32
|
-
label = "Filter",
|
|
33
|
-
selected = isSelected,
|
|
34
|
-
onClick = { toggle() },
|
|
35
|
-
size = ChipSize.LARGE, // SMALL (24dp height), LARGE (32dp height)
|
|
36
|
-
iconLeft = "icon_name", // left icon name (null = hidden)
|
|
37
|
-
iconRight = null, // right icon name (null = hidden)
|
|
38
|
-
iconLeftTint = Colors.pink_03, // left icon tint color
|
|
39
|
-
iconRightTint = Colors.black_12,
|
|
40
|
-
backgroundColor = null, // custom bg when not selected (null = default)
|
|
41
|
-
accessibilityLabel = "filter_chip",
|
|
42
|
-
)
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
> **Note:** RN uses `iconLeft`/`iconRight` and `iconLeftColor`/`iconRightColor`. Compose uses `iconLeft`/`iconRight` and `iconLeftTint`/`iconRightTint`.
|
|
46
|
-
|
|
47
|
-
Chip is built-in (`vn.momo.kits.components`) in Compose.
|
|
48
|
-
|
|
49
|
-
### ChipSize (Compose)
|
|
50
|
-
|
|
51
|
-
| Value | Height |
|
|
52
|
-
|-------|--------|
|
|
53
|
-
| `SMALL` | 24dp |
|
|
54
|
-
| `LARGE` | 32dp |
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
# Collapse
|
|
2
|
-
|
|
3
|
-
## React Native
|
|
4
|
-
|
|
5
|
-
```tsx
|
|
6
|
-
import { Collapse } from '@momo-kits/collapse';
|
|
7
|
-
|
|
8
|
-
<Collapse
|
|
9
|
-
title="More details"
|
|
10
|
-
expandDefault={false}
|
|
11
|
-
onPress={(isExpanded) => {}}
|
|
12
|
-
description="Optional subtitle"
|
|
13
|
-
image="https://..."
|
|
14
|
-
imageSize={24}
|
|
15
|
-
subTitle="Right label"
|
|
16
|
-
tagProps={{ label: 'Tag', type: 'info' }}
|
|
17
|
-
titleSize="medium" // 'small'|'medium'|'large'
|
|
18
|
-
showBorder={false}
|
|
19
|
-
useBackgroundCollapseButton={false}
|
|
20
|
-
backgroundColor="#FFFFFF"
|
|
21
|
-
titleColor="#000000"
|
|
22
|
-
>
|
|
23
|
-
<Text>Hidden content</Text>
|
|
24
|
-
</Collapse>
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Compose
|
|
28
|
-
|
|
29
|
-
```kotlin
|
|
30
|
-
import vn.momo.kits.components.Collapse
|
|
31
|
-
import vn.momo.kits.components.CollapseTitleSize
|
|
32
|
-
import vn.momo.kits.components.TagColor
|
|
33
|
-
|
|
34
|
-
Collapse(
|
|
35
|
-
title = "More details",
|
|
36
|
-
modifier = Modifier,
|
|
37
|
-
description = "Optional subtitle",
|
|
38
|
-
image = "https://...",
|
|
39
|
-
imageSize = 24,
|
|
40
|
-
subTitle = "Right label",
|
|
41
|
-
tagLabel = "Tag",
|
|
42
|
-
tagColor = TagColor.Default,
|
|
43
|
-
showBorder = false,
|
|
44
|
-
expandDefault = false,
|
|
45
|
-
titleSize = CollapseTitleSize.Medium, // Small | Medium | Large
|
|
46
|
-
useBackgroundCollapseButton = false,
|
|
47
|
-
backgroundColor = null,
|
|
48
|
-
titleColor = null,
|
|
49
|
-
onPress = { isExpanded -> },
|
|
50
|
-
accessibilityId = "Collapse/section",
|
|
51
|
-
) {
|
|
52
|
-
Text("Hidden content")
|
|
53
|
-
}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## Key Differences
|
|
57
|
-
|
|
58
|
-
| Feature | React Native | Compose |
|
|
59
|
-
|---------|-------------|---------|
|
|
60
|
-
| Expand state | Via `ref` | Internal state (no ref) |
|
|
61
|
-
| Content | Children | `content` slot |
|
|
62
|
-
| Title size | `string` | `CollapseTitleSize` enum |
|
|
63
|
-
| Programmatic control | `ref?.setExpanded()` | Not available |
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# DateTimePicker / Calendar
|
|
2
|
-
|
|
3
|
-
## React Native
|
|
4
|
-
|
|
5
|
-
```tsx
|
|
6
|
-
import { DateTimePicker } from '@momo-kits/date-picker';
|
|
7
|
-
|
|
8
|
-
<DateTimePicker
|
|
9
|
-
format="DD-MM-YYYY" // DD-MM-YYYY, HH:mm, DD-MM-YYYY HH:mm
|
|
10
|
-
minuteInterval={1} // minute interval (1, 5, 10, 15, 30, etc.)
|
|
11
|
-
onChange={(date: Date) => {}} // called when date/time changes
|
|
12
|
-
selectedValue={new Date()} // initially selected date/time
|
|
13
|
-
minDate={new Date()} // minimum selectable date
|
|
14
|
-
maxDate={new Date()} // maximum selectable date
|
|
15
|
-
arrayLabelTime={[]} // optional labels for time columns, e.g. ["Ngày", "Tháng", "Năm"]
|
|
16
|
-
style={{}} // optional custom styles
|
|
17
|
-
/>
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Compose
|
|
21
|
-
|
|
22
|
-
```kotlin
|
|
23
|
-
import vn.momo.kits.components.datetimepicker.DateTimePicker
|
|
24
|
-
import kotlinx.datetime.LocalDateTime
|
|
25
|
-
|
|
26
|
-
DateTimePicker(
|
|
27
|
-
modifier = Modifier, // optional modifier
|
|
28
|
-
format = "DD-MM-YYYY", // DD-MM-YYYY, HH:mm, DD-MM-YYYY HH:mm
|
|
29
|
-
onChange = { date: LocalDateTime -> }, // called when date/time changes
|
|
30
|
-
selectedValue = null, // initially selected date/time (LocalDateTime), defaults to now
|
|
31
|
-
minDate = null, // minimum selectable date (LocalDateTime), defaults to -10 years
|
|
32
|
-
maxDate = null, // maximum selectable date (LocalDateTime), defaults to +10 years
|
|
33
|
-
minuteInterval = 1, // minute interval (1, 5, 10, 15, 30, etc.)
|
|
34
|
-
arrayLabelTime = emptyList(), // optional labels for time columns, e.g. listOf("Ngày", "Tháng", "Năm")
|
|
35
|
-
)
|
|
36
|
-
```
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# Divider
|
|
2
|
-
|
|
3
|
-
## React Native
|
|
4
|
-
|
|
5
|
-
```tsx
|
|
6
|
-
import { Divider } from '@momo-kits/foundation';
|
|
7
|
-
|
|
8
|
-
<Divider /> // default: solid, with vertical margin
|
|
9
|
-
<Divider useMargin={false} /> // no vertical margin
|
|
10
|
-
<Divider type="dash" /> // dashed line (uses DashDivider internally)
|
|
11
|
-
<Divider type="default" /> // solid line; default
|
|
12
|
-
<Divider style={{ marginVertical: 8 }} /> // custom style
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Compose
|
|
16
|
-
|
|
17
|
-
```kotlin
|
|
18
|
-
import vn.momo.kits.components.Divider
|
|
19
|
-
|
|
20
|
-
Divider()
|
|
21
|
-
```
|