@momo-kits/native-kits 0.157.5-debug → 0.158.1-beta.1-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/.claude/settings.local.json +11 -0
- package/.claude/skills/design-system/SKILL.md +88 -0
- package/.claude/skills/design-system/references/components/avatar.md +134 -0
- package/.claude/skills/design-system/references/components/badge.md +127 -0
- package/.claude/skills/design-system/references/components/bottom-tab.md +177 -0
- package/.claude/skills/design-system/references/components/bottomsheet.md +170 -0
- package/.claude/skills/design-system/references/components/button.md +206 -0
- package/.claude/skills/design-system/references/components/carousel.md +117 -0
- package/.claude/skills/design-system/references/components/checkbox.md +98 -0
- package/.claude/skills/design-system/references/components/chip.md +146 -0
- package/.claude/skills/design-system/references/components/collapse.md +120 -0
- package/.claude/skills/design-system/references/components/date-picker.md +119 -0
- package/.claude/skills/design-system/references/components/divider.md +84 -0
- package/.claude/skills/design-system/references/components/icon.md +130 -0
- package/.claude/skills/design-system/references/components/image.md +81 -0
- package/.claude/skills/design-system/references/components/information.md +107 -0
- package/.claude/skills/design-system/references/components/input-dropdown.md +138 -0
- package/.claude/skills/design-system/references/components/input-money.md +157 -0
- package/.claude/skills/design-system/references/components/input-otp.md +132 -0
- package/.claude/skills/design-system/references/components/input-phone-number.md +140 -0
- package/.claude/skills/design-system/references/components/input-search.md +124 -0
- package/.claude/skills/design-system/references/components/input-text-area.md +133 -0
- package/.claude/skills/design-system/references/components/input.md +152 -0
- package/.claude/skills/design-system/references/components/loader.md +87 -0
- package/.claude/skills/design-system/references/components/pagination.md +105 -0
- package/.claude/skills/design-system/references/components/popup-notify.md +128 -0
- package/.claude/skills/design-system/references/components/progress-info.md +114 -0
- package/.claude/skills/design-system/references/components/radio.md +86 -0
- package/.claude/skills/design-system/references/components/rating.md +126 -0
- package/.claude/skills/design-system/references/components/skeleton.md +120 -0
- package/.claude/skills/design-system/references/components/slider.md +141 -0
- package/.claude/skills/design-system/references/components/snackbar.md +97 -0
- package/.claude/skills/design-system/references/components/stepper.md +100 -0
- package/.claude/skills/design-system/references/components/steps.md +91 -0
- package/.claude/skills/design-system/references/components/suggest-action.md +95 -0
- package/.claude/skills/design-system/references/components/swipe.md +121 -0
- package/.claude/skills/design-system/references/components/switch.md +98 -0
- package/.claude/skills/design-system/references/components/tab-view.md +120 -0
- package/.claude/skills/design-system/references/components/tag.md +118 -0
- package/.claude/skills/design-system/references/components/text.md +151 -0
- package/.claude/skills/design-system/references/components/toast.md +99 -0
- package/.claude/skills/design-system/references/components/tooltip.md +138 -0
- package/.claude/skills/design-system/references/components/top-nav-miniapp.md +94 -0
- package/.claude/skills/design-system/references/components/top-nav.md +226 -0
- package/.claude/skills/design-system/references/components/uploader.md +115 -0
- package/.claude/skills/design-system/references/navigation/bottom-tab.md +131 -0
- package/.claude/skills/design-system/references/navigation/bottomsheet.md +161 -0
- package/.claude/skills/design-system/references/navigation/modal.md +133 -0
- package/.claude/skills/design-system/references/navigation/navigation-options.md +225 -0
- package/.claude/skills/design-system/references/navigation/navigator.md +111 -0
- package/.claude/skills/design-system/references/navigation/setup.md +134 -0
- package/.claude/skills/design-system/references/navigation/stack.md +128 -0
- package/.claude/skills/design-system/references/spec-convention.md +80 -0
- package/.claude/skills/design-system/references/tokens/colors.md +131 -0
- package/.claude/skills/design-system/references/tokens/spacing-radius.md +144 -0
- package/.claude/skills/design-system/references/tokens/theme.md +125 -0
- package/.claude/skills/design-system/references/tokens/typography.md +135 -0
- package/.claude/skills/design-system-kits/SKILL.md +102 -0
- package/.claude/skills/design-system-kits/references/code-convention.md +118 -0
- package/.claude/skills/design-system-kits/references/components/avatar.md +45 -0
- package/.claude/skills/design-system-kits/references/components/badge.md +27 -0
- package/.claude/skills/design-system-kits/references/components/button.md +65 -0
- package/.claude/skills/design-system-kits/references/components/carousel.md +51 -0
- package/.claude/skills/design-system-kits/references/components/checkbox.md +39 -0
- package/.claude/skills/design-system-kits/references/components/chip.md +54 -0
- package/.claude/skills/design-system-kits/references/components/collapse.md +63 -0
- package/.claude/skills/design-system-kits/references/components/date-picker.md +36 -0
- package/.claude/skills/design-system-kits/references/components/divider.md +21 -0
- package/.claude/skills/design-system-kits/references/components/icon.md +382 -0
- package/.claude/skills/design-system-kits/references/components/image.md +62 -0
- package/.claude/skills/design-system-kits/references/components/information.md +61 -0
- package/.claude/skills/design-system-kits/references/components/input-dropdown.md +92 -0
- package/.claude/skills/design-system-kits/references/components/input-money.md +128 -0
- package/.claude/skills/design-system-kits/references/components/input-otp.md +85 -0
- package/.claude/skills/design-system-kits/references/components/input-phone-number.md +96 -0
- package/.claude/skills/design-system-kits/references/components/input-search.md +127 -0
- package/.claude/skills/design-system-kits/references/components/input-text-area.md +100 -0
- package/.claude/skills/design-system-kits/references/components/input.md +126 -0
- package/.claude/skills/design-system-kits/references/components/loader.md +41 -0
- package/.claude/skills/design-system-kits/references/components/pagination.md +47 -0
- package/.claude/skills/design-system-kits/references/components/popup-notify.md +69 -0
- package/.claude/skills/design-system-kits/references/components/popup-promotion.md +35 -0
- package/.claude/skills/design-system-kits/references/components/progress-info.md +55 -0
- package/.claude/skills/design-system-kits/references/components/radio.md +42 -0
- package/.claude/skills/design-system-kits/references/components/rating.md +36 -0
- package/.claude/skills/design-system-kits/references/components/skeleton.md +25 -0
- package/.claude/skills/design-system-kits/references/components/slider.md +53 -0
- package/.claude/skills/design-system-kits/references/components/snackbar.md +52 -0
- package/.claude/skills/design-system-kits/references/components/stepper.md +46 -0
- package/.claude/skills/design-system-kits/references/components/steps.md +57 -0
- package/.claude/skills/design-system-kits/references/components/suggest-action.md +44 -0
- package/.claude/skills/design-system-kits/references/components/swipe.md +44 -0
- package/.claude/skills/design-system-kits/references/components/switch.md +43 -0
- package/.claude/skills/design-system-kits/references/components/tab-view.md +56 -0
- package/.claude/skills/design-system-kits/references/components/tag.md +50 -0
- package/.claude/skills/design-system-kits/references/components/text.md +56 -0
- package/.claude/skills/design-system-kits/references/components/toast.md +51 -0
- package/.claude/skills/design-system-kits/references/components/tooltip.md +95 -0
- package/.claude/skills/design-system-kits/references/components/uploader.md +48 -0
- package/.claude/skills/design-system-kits/references/design-spec-structure.md +356 -0
- package/.claude/skills/design-system-kits/references/design-spec-to-code.md +596 -0
- package/.claude/skills/design-system-kits/references/navigation/bottom-tab.md +155 -0
- package/.claude/skills/design-system-kits/references/navigation/bottomsheet.md +94 -0
- package/.claude/skills/design-system-kits/references/navigation/modal.md +125 -0
- package/.claude/skills/design-system-kits/references/navigation/navigation-options.md +430 -0
- package/.claude/skills/design-system-kits/references/navigation/navigator.md +177 -0
- package/.claude/skills/design-system-kits/references/navigation/setup.md +94 -0
- package/.claude/skills/design-system-kits/references/navigation/stack.md +152 -0
- package/.claude/skills/design-system-kits/references/screen-layout-rule.md +125 -0
- package/.claude/skills/design-system-kits/references/tokens/colors.md +183 -0
- package/.claude/skills/design-system-kits/references/tokens/spacing-radius.md +45 -0
- package/.claude/skills/design-system-kits/references/tokens/theme.md +97 -0
- package/.claude/skills/design-system-kits/references/tokens/typography.md +105 -0
- package/.claude/skills/vibe-design/SKILL.md +306 -0
- package/compose/build.gradle.kts +1 -1
- package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +7 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +157 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +123 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +224 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +108 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +2 -2
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +338 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +87 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +348 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +256 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +494 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +131 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +215 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +531 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +192 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +3 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +5 -2
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +2 -11
- package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +5 -1
- package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +12 -0
- package/gradle.properties +1 -1
- package/ios/Popup/PopupPromotion.swift +2 -2
- package/local.properties +8 -0
- package/package.json +1 -1
|
@@ -0,0 +1,27 @@
|
|
|
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.
|
|
@@ -0,0 +1,65 @@
|
|
|
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) |
|
|
@@ -0,0 +1,51 @@
|
|
|
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` |
|
|
@@ -0,0 +1,39 @@
|
|
|
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` |
|
|
@@ -0,0 +1,54 @@
|
|
|
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 |
|
|
@@ -0,0 +1,63 @@
|
|
|
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 |
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
```
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
```
|