@momo-kits/native-kits 0.157.1-skill.1 → 0.157.1-skill.3-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/momo-native-kits-skill/SKILL.md +51 -0
- package/.claude/momo-native-kits-skill/evals/evals.json +95 -0
- package/.claude/momo-native-kits-skill/references/badge.md +52 -0
- package/.claude/momo-native-kits-skill/references/button.md +182 -0
- package/.claude/momo-native-kits-skill/references/card.md +48 -0
- package/.claude/momo-native-kits-skill/references/checkbox.md +51 -0
- package/.claude/momo-native-kits-skill/references/chip.md +48 -0
- package/.claude/momo-native-kits-skill/references/constants.md +260 -0
- package/.claude/momo-native-kits-skill/references/divider.md +26 -0
- package/.claude/momo-native-kits-skill/references/input.md +408 -0
- package/.claude/momo-native-kits-skill/references/navigation.md +475 -0
- package/.claude/momo-native-kits-skill/references/popup.md +97 -0
- package/.claude/momo-native-kits-skill/references/radio.md +60 -0
- package/.claude/momo-native-kits-skill/references/skeleton.md +40 -0
- package/.claude/momo-native-kits-skill/references/snackbar.md +54 -0
- package/.claude/momo-native-kits-skill/references/switch.md +62 -0
- package/.claude/momo-native-kits-skill/references/text.md +195 -0
- package/.claude/momo-native-kits-skill/references/tooltip.md +34 -0
- package/.claude/momo-native-kits-skill/references/trustbanner.md +61 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/benchmark.json +20 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/benchmark.md +13 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-0-button/eval_metadata.json +6 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-0-button/with_skill/outputs/ButtonExample.kt +55 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-0-button/without_skill/outputs/ButtonExample.kt +45 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-1-input/eval_metadata.json +6 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-1-input/with_skill/outputs/InputPhoneExample.kt +40 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-1-input/without_skill/outputs/InputPhoneExample.kt +42 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-2-bottomtab/eval_metadata.json +6 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-2-bottomtab/with_skill/outputs/BottomTabExample.kt +236 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-2-bottomtab/without_skill/outputs/BottomTabExample.kt +152 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-3-checkbox/eval_metadata.json +6 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-3-checkbox/with_skill/outputs/CheckBoxExample.kt +49 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-3-checkbox/without_skill/outputs/CheckBoxExample.kt +123 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-4-datetimepicker/eval_metadata.json +6 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-4-datetimepicker/with_skill/outputs/DateTimePickerExample.kt +318 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-1/eval-4-datetimepicker/without_skill/outputs/DateTimePickerExample.kt +330 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-card/with_skill/outputs/CardExample.kt +124 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-card/without_skill/outputs/CardExample.kt +71 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-loginform/with_skill/outputs/LoginFormExample.kt +134 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-loginform/without_skill/outputs/LoginFormExample.kt +199 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-navcontainer/with_skill/outputs/NavigationContainerExample.kt +224 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-navcontainer/without_skill/outputs/NavigationContainerExample.kt +225 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-popup/with_skill/outputs/PopupExample.kt +79 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-popup/without_skill/outputs/PopupExample.kt +169 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-setoptions/eval_metadata.json +6 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-setoptions/with_skill/outputs/SetOptionsExample.kt +255 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-setoptions/without_skill/outputs/SetOptionsExample.kt +212 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-skeleton/with_skill/outputs/SkeletonExample.kt +199 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-2/eval-skeleton/without_skill/outputs/SkeletonExample.kt +229 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/benchmark.json +20 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/benchmark.md +13 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/eval_metadata.json +22 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/with_skill/outputs/PrimaryButtonExample.kt +38 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/with_skill/timing.json +5 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/without_skill/outputs/PrimaryButtonExample.kt +83 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-button/without_skill/timing.json +5 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/eval_metadata.json +22 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/with_skill/outputs/NavigationContainerExample.kt +547 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/with_skill/timing.json +5 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/without_skill/outputs/MoMoNavigationContainer.kt +519 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-navcontainer/without_skill/timing.json +5 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/eval_metadata.json +27 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/with_skill/outputs/SetOptionsExample.kt +429 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/with_skill/timing.json +5 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/without_skill/outputs/SetOptionsExample.kt +353 -0
- package/.claude/momo-native-kits-skill/workspace/iteration-3/eval-setoptions/without_skill/timing.json +5 -0
- package/.claude/settings.local.json +35 -7
- package/build.gradle.kts +11 -0
- package/compose/build.gradle.kts +180 -0
- package/compose/build.gradle.kts.backup +180 -0
- package/compose/compose.podspec +54 -0
- package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +110 -0
- package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
- package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
- package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +57 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +107 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +201 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +222 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +48 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +86 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +76 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +76 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +305 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +33 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +720 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +121 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +405 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +69 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +85 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +32 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +340 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +198 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +357 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +94 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +136 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +543 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +76 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +148 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +188 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +116 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +448 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +172 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +255 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +231 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +233 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +254 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +241 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +364 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +56 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +41 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +92 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +40 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +352 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +103 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +70 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +17 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +96 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +96 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +92 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +130 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +214 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +590 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +177 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +205 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +29 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +239 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +191 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +306 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +13 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +185 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +285 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +35 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +59 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +68 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +11 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +14 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +50 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +51 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +239 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +119 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +98 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +161 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +331 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +497 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +162 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +243 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +86 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +187 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +279 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +80 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +306 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +32 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +370 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +132 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +42 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +62 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +15 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +88 -0
- package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +149 -0
- package/gradle/libs.versions.toml +57 -0
- package/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/gradle/wrapper/gradle-wrapper.properties +8 -0
- package/gradle.properties +26 -0
- package/gradlew +252 -0
- package/gradlew.bat +94 -0
- package/ios/Input/Input.swift +112 -50
- package/local.properties +8 -0
- package/package.json +1 -1
- package/settings.gradle.kts +52 -0
- package/.claude/momo-native-kits/SKILL.md +0 -87
- package/.claude/momo-native-kits/references/Badge.md +0 -39
- package/.claude/momo-native-kits/references/BadgeDot.md +0 -37
- package/.claude/momo-native-kits/references/BottomSheet.md +0 -51
- package/.claude/momo-native-kits/references/BottomTab.md +0 -65
- package/.claude/momo-native-kits/references/Button.md +0 -197
- package/.claude/momo-native-kits/references/CheckBox.md +0 -51
- package/.claude/momo-native-kits/references/Chip.md +0 -47
- package/.claude/momo-native-kits/references/Divider.md +0 -29
- package/.claude/momo-native-kits/references/HeaderTitle.md +0 -45
- package/.claude/momo-native-kits/references/HeaderType.md +0 -47
- package/.claude/momo-native-kits/references/Icon.md +0 -32
- package/.claude/momo-native-kits/references/Image.md +0 -38
- package/.claude/momo-native-kits/references/Information.md +0 -36
- package/.claude/momo-native-kits/references/Input.md +0 -334
- package/.claude/momo-native-kits/references/InputDropDown.md +0 -47
- package/.claude/momo-native-kits/references/InputMoney.md +0 -241
- package/.claude/momo-native-kits/references/InputOTP.md +0 -52
- package/.claude/momo-native-kits/references/InputPhoneNumber.md +0 -175
- package/.claude/momo-native-kits/references/InputSearch.md +0 -57
- package/.claude/momo-native-kits/references/InputTextArea.md +0 -46
- package/.claude/momo-native-kits/references/NavigationContainer.md +0 -51
- package/.claude/momo-native-kits/references/Navigator.md +0 -287
- package/.claude/momo-native-kits/references/PaginationDot.md +0 -28
- package/.claude/momo-native-kits/references/PaginationNumber.md +0 -28
- package/.claude/momo-native-kits/references/PopupNotify.md +0 -47
- package/.claude/momo-native-kits/references/Radio.md +0 -44
- package/.claude/momo-native-kits/references/Skeleton.md +0 -32
- package/.claude/momo-native-kits/references/Switch.md +0 -36
- package/.claude/momo-native-kits/references/Tag.md +0 -40
- package/.claude/momo-native-kits/references/Text.md +0 -37
- package/.claude/momo-native-kits/references/Title.md +0 -43
- package/.claude/momo-native-kits/references/Tooltip.md +0 -30
- package/building-skill-for-claude.md +0 -1190
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: input-phone-number
|
|
3
|
-
description: Phone number input with automatic +84 prefix. Use when collecting Vietnamese phone numbers.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# InputPhoneNumber
|
|
7
|
-
|
|
8
|
-
Phone number input field with automatic +84 country code prefix and Vietnam flag icon.
|
|
9
|
-
|
|
10
|
-
## API
|
|
11
|
-
|
|
12
|
-
```kotlin
|
|
13
|
-
@Composable
|
|
14
|
-
fun InputPhoneNumber(
|
|
15
|
-
text: MutableState<String> = remember { mutableStateOf("") },
|
|
16
|
-
placeholder: String = "0123456789",
|
|
17
|
-
size: InputPhoneNumberSize = InputPhoneNumberSize.SMALL,
|
|
18
|
-
onChangeText: (String) -> Unit = {},
|
|
19
|
-
hintText: String = "",
|
|
20
|
-
error: String = "",
|
|
21
|
-
errorSpacing: Boolean = false,
|
|
22
|
-
icon: String = "",
|
|
23
|
-
iconColor: Color = AppTheme.current.colors.text.default,
|
|
24
|
-
onRightIconPressed: () -> Unit = {},
|
|
25
|
-
onFocus: () -> Unit = {},
|
|
26
|
-
onBlur: () -> Unit = {},
|
|
27
|
-
loading: Boolean = false,
|
|
28
|
-
modifier: Modifier = Modifier,
|
|
29
|
-
inputModifier: Modifier = Modifier,
|
|
30
|
-
)
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Props
|
|
34
|
-
|
|
35
|
-
| Prop | Type | Default | Description |
|
|
36
|
-
|------|------|---------|-------------|
|
|
37
|
-
| `text` | `MutableState<String>` | `""` | Current text value (required) |
|
|
38
|
-
| `placeholder` | `String` | `"0123456789"` | Placeholder text |
|
|
39
|
-
| `size` | `InputPhoneNumberSize` | `SMALL` | Input height |
|
|
40
|
-
| `onChangeText` | `(String) -> Unit` | `{}` | Text change callback |
|
|
41
|
-
| `hintText` | `String` | `""` | Hint text below input |
|
|
42
|
-
| `error` | `String` | `""` | Error message |
|
|
43
|
-
| `errorSpacing` | `Boolean` | `false` | Show spacing for error |
|
|
44
|
-
| `icon` | `String` | `""` | Right icon name |
|
|
45
|
-
| `iconColor` | `Color` | default color | Right icon color |
|
|
46
|
-
| `onRightIconPressed` | `() -> Unit` | `{}` | Right icon click |
|
|
47
|
-
| `onFocus` | `() -> Unit` | `{}` | Focus callback |
|
|
48
|
-
| `onBlur` | `() -> Unit` | `{}` | Blur callback |
|
|
49
|
-
| `loading` | `Boolean` | `false` | Loading spinner |
|
|
50
|
-
| `modifier` | `Modifier` | `Modifier` | Outer modifier |
|
|
51
|
-
| `inputModifier` | `Modifier` | `Modifier` | Input field modifier |
|
|
52
|
-
|
|
53
|
-
## InputPhoneNumberSize
|
|
54
|
-
|
|
55
|
-
| Size | Height | Text Style | Divider Height |
|
|
56
|
-
|------|--------|------------|----------------|
|
|
57
|
-
| `SMALL` | 48dp | headerSSemibold | 24dp |
|
|
58
|
-
| `LARGE` | 56dp | headerMBold | 32dp |
|
|
59
|
-
|
|
60
|
-
## Features
|
|
61
|
-
|
|
62
|
-
- **Auto +84 prefix**: Automatically adds "+84" country code prefix
|
|
63
|
-
- **Vietnam flag**: Shows Vietnam flag icon next to country code
|
|
64
|
-
- **Number-only keyboard**: Automatically uses numeric keyboard
|
|
65
|
-
- **Auto-clear**: Shows clear button when focused with text
|
|
66
|
-
|
|
67
|
-
## Examples
|
|
68
|
-
|
|
69
|
-
### Basic Usage
|
|
70
|
-
|
|
71
|
-
```kotlin
|
|
72
|
-
val phone = remember { mutableStateOf("") }
|
|
73
|
-
|
|
74
|
-
InputPhoneNumber(
|
|
75
|
-
text = phone,
|
|
76
|
-
onChangeText = { phone.value = it }
|
|
77
|
-
)
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### With Placeholder
|
|
81
|
-
|
|
82
|
-
```kotlin
|
|
83
|
-
val phone = remember { mutableStateOf("") }
|
|
84
|
-
|
|
85
|
-
InputPhoneNumber(
|
|
86
|
-
text = phone,
|
|
87
|
-
placeholder = "Enter phone number",
|
|
88
|
-
onChangeText = { phone.value = it }
|
|
89
|
-
)
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### With Error
|
|
93
|
-
|
|
94
|
-
```kotlin
|
|
95
|
-
val phone = remember { mutableStateOf("") }
|
|
96
|
-
|
|
97
|
-
InputPhoneNumber(
|
|
98
|
-
text = phone,
|
|
99
|
-
error = "Invalid phone number",
|
|
100
|
-
errorSpacing = true,
|
|
101
|
-
onChangeText = { phone.value = it }
|
|
102
|
-
)
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Sizes
|
|
106
|
-
|
|
107
|
-
```kotlin
|
|
108
|
-
// Small (default - 48dp)
|
|
109
|
-
InputPhoneNumber(
|
|
110
|
-
text = phone,
|
|
111
|
-
size = InputPhoneNumberSize.SMALL,
|
|
112
|
-
onChangeText = { phone.value = it }
|
|
113
|
-
)
|
|
114
|
-
|
|
115
|
-
// Large (56dp)
|
|
116
|
-
InputPhoneNumber(
|
|
117
|
-
text = phone,
|
|
118
|
-
size = InputPhoneNumberSize.LARGE,
|
|
119
|
-
onChangeText = { phone.value = it }
|
|
120
|
-
)
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### With Right Icon
|
|
124
|
-
|
|
125
|
-
```kotlin
|
|
126
|
-
InputPhoneNumber(
|
|
127
|
-
text = phone,
|
|
128
|
-
icon = "close",
|
|
129
|
-
onRightIconPressed = { phone.value = "" },
|
|
130
|
-
onChangeText = { phone.value = it }
|
|
131
|
-
)
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
### Focus Callbacks
|
|
135
|
-
|
|
136
|
-
```kotlin
|
|
137
|
-
InputPhoneNumber(
|
|
138
|
-
text = phone,
|
|
139
|
-
onFocus = { /* show keyboard */ },
|
|
140
|
-
onBlur = { /* validate phone */ },
|
|
141
|
-
onChangeText = { phone.value = it }
|
|
142
|
-
)
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
### Loading State
|
|
146
|
-
|
|
147
|
-
```kotlin
|
|
148
|
-
InputPhoneNumber(
|
|
149
|
-
text = phone,
|
|
150
|
-
loading = true,
|
|
151
|
-
onChangeText = { phone.value = it }
|
|
152
|
-
)
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### Hint Text
|
|
156
|
-
|
|
157
|
-
```kotlin
|
|
158
|
-
InputPhoneNumber(
|
|
159
|
-
text = phone,
|
|
160
|
-
hintText = "Enter 10-digit phone number",
|
|
161
|
-
onChangeText = { phone.value = it }
|
|
162
|
-
)
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
## How It Works
|
|
166
|
-
|
|
167
|
-
1. User types 9 digits (e.g., "912345678")
|
|
168
|
-
2. Component automatically prepends "+84" (e.g., "+84912345678")
|
|
169
|
-
3. Display shows: "+84 912 345 678" (formatted)
|
|
170
|
-
|
|
171
|
-
## Auto-Clear Behavior
|
|
172
|
-
|
|
173
|
-
When focused with text:
|
|
174
|
-
- Clear icon appears on the right
|
|
175
|
-
- Clicking clears the text and triggers `onChangeText("")`
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: input-search
|
|
3
|
-
description: Search input with built-in search icon and clear button. Use when implementing search functionality.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# InputSearch
|
|
7
|
-
|
|
8
|
-
Search input with built-in search icon and clear button.
|
|
9
|
-
|
|
10
|
-
## Keywords
|
|
11
|
-
|
|
12
|
-
search, tìm kiếm, ô tìm kiếm
|
|
13
|
-
|
|
14
|
-
## API
|
|
15
|
-
|
|
16
|
-
```kotlin
|
|
17
|
-
@Composable
|
|
18
|
-
fun InputSearch(
|
|
19
|
-
inputSearchProps: InputSearchProps = InputSearchProps(
|
|
20
|
-
text = remember { mutableStateOf("") }
|
|
21
|
-
),
|
|
22
|
-
)
|
|
23
|
-
|
|
24
|
-
data class InputSearchProps(
|
|
25
|
-
val text: MutableState<String>,
|
|
26
|
-
val placeholder: String = "",
|
|
27
|
-
val onChangeText: (String) -> Unit = {},
|
|
28
|
-
val onClearPress: () -> Unit = {},
|
|
29
|
-
val loading: Boolean = false,
|
|
30
|
-
val disabled: Boolean = false,
|
|
31
|
-
val buttonText: String = "",
|
|
32
|
-
val showButtonText: Boolean = false,
|
|
33
|
-
// ... more options
|
|
34
|
-
)
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Features
|
|
38
|
-
|
|
39
|
-
- Built-in search icon
|
|
40
|
-
- Auto clear button when focused with text
|
|
41
|
-
- Loading state support
|
|
42
|
-
- Custom right icon support
|
|
43
|
-
|
|
44
|
-
## Examples
|
|
45
|
-
|
|
46
|
-
```kotlin
|
|
47
|
-
val searchText = remember { mutableStateOf("") }
|
|
48
|
-
|
|
49
|
-
InputSearch(
|
|
50
|
-
inputSearchProps = InputSearchProps(
|
|
51
|
-
text = searchText,
|
|
52
|
-
placeholder = "Search...",
|
|
53
|
-
onChangeText = { searchText.value = it },
|
|
54
|
-
onClearPress = { searchText.value = "" }
|
|
55
|
-
)
|
|
56
|
-
)
|
|
57
|
-
```
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: input-text-area
|
|
3
|
-
description: Multi-line text area input. Use when user needs to enter longer text descriptions.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# InputTextArea
|
|
7
|
-
|
|
8
|
-
Multi-line text area input.
|
|
9
|
-
|
|
10
|
-
## Keywords
|
|
11
|
-
|
|
12
|
-
textarea, text area, mô tả, description, nhập mô tả
|
|
13
|
-
|
|
14
|
-
## API
|
|
15
|
-
|
|
16
|
-
```kotlin
|
|
17
|
-
@Composable
|
|
18
|
-
fun InputTextArea(
|
|
19
|
-
text: MutableState<String>,
|
|
20
|
-
floatingValue: String = "",
|
|
21
|
-
placeholder: String = "",
|
|
22
|
-
maxLength: Int = 300,
|
|
23
|
-
onChangeText: (String) -> Unit = {},
|
|
24
|
-
error: String = "",
|
|
25
|
-
)
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Features
|
|
29
|
-
|
|
30
|
-
- Multi-line input
|
|
31
|
-
- Character count display (e.g., "50/300")
|
|
32
|
-
- Max length enforcement
|
|
33
|
-
|
|
34
|
-
## Examples
|
|
35
|
-
|
|
36
|
-
```kotlin
|
|
37
|
-
val description = remember { mutableStateOf("") }
|
|
38
|
-
|
|
39
|
-
InputTextArea(
|
|
40
|
-
text = description,
|
|
41
|
-
floatingValue = "Description",
|
|
42
|
-
placeholder = "Enter description...",
|
|
43
|
-
maxLength = 300,
|
|
44
|
-
onChangeText = { description.value = it }
|
|
45
|
-
)
|
|
46
|
-
```
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: navigation-container
|
|
3
|
-
description: Entry point for Compose screens. Use when setting up the main container for a Compose-based screen.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# NavigationContainer
|
|
7
|
-
|
|
8
|
-
Entry point for Compose screens.
|
|
9
|
-
|
|
10
|
-
## Keywords
|
|
11
|
-
|
|
12
|
-
navigation, container, screen, màn hình
|
|
13
|
-
|
|
14
|
-
## API
|
|
15
|
-
|
|
16
|
-
```kotlin
|
|
17
|
-
@Composable
|
|
18
|
-
fun NavigationContainer(
|
|
19
|
-
initialScreen: @Composable () -> Unit,
|
|
20
|
-
options: NavigationOptions? = null,
|
|
21
|
-
initialTheme: Theme = defaultTheme,
|
|
22
|
-
applicationContext: MiniAppContext? = null,
|
|
23
|
-
maxApi: IMaxApi? = null,
|
|
24
|
-
setNavigator: ((Navigator) -> Unit)? = null,
|
|
25
|
-
statusBarHeight: Dp? = null,
|
|
26
|
-
config: KitConfig? = null,
|
|
27
|
-
language: String? = null
|
|
28
|
-
)
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Parameters
|
|
32
|
-
|
|
33
|
-
| Parameter | Type | Description |
|
|
34
|
-
|-----------|------|-------------|
|
|
35
|
-
| `initialScreen` | `@Composable () -> Unit` | Initial screen |
|
|
36
|
-
| `options` | `NavigationOptions?` | Navigation options |
|
|
37
|
-
| `maxApi` | `IMaxApi?` | Required for native features |
|
|
38
|
-
| `config` | `KitConfig?` | UI configuration |
|
|
39
|
-
| `language` | `String?` | Current language |
|
|
40
|
-
|
|
41
|
-
## Examples
|
|
42
|
-
|
|
43
|
-
```kotlin
|
|
44
|
-
NavigationContainer(
|
|
45
|
-
initialScreen = { HomeScreen() },
|
|
46
|
-
maxApi = maxApi,
|
|
47
|
-
config = config,
|
|
48
|
-
language = language,
|
|
49
|
-
setNavigator = { navigator = it }
|
|
50
|
-
)
|
|
51
|
-
```
|
|
@@ -1,287 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: navigator
|
|
3
|
-
description: Class for managing navigation between screens. Use when navigating between screens, showing modals, bottom sheets, or snackbars.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Navigator
|
|
7
|
-
|
|
8
|
-
Class for managing navigation between screens, modals, bottom sheets, and snackbars.
|
|
9
|
-
|
|
10
|
-
## API
|
|
11
|
-
|
|
12
|
-
```kotlin
|
|
13
|
-
class Navigator(
|
|
14
|
-
private val navController: NavController,
|
|
15
|
-
private val maxApi: IMaxApi?
|
|
16
|
-
)
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Methods
|
|
20
|
-
|
|
21
|
-
### Screen Navigation
|
|
22
|
-
|
|
23
|
-
| Method | Parameters | Description |
|
|
24
|
-
|--------|------------|-------------|
|
|
25
|
-
| `push` | `content: @Composable () -> Unit, options: NavigationOptions? = null` | Push new screen to stack |
|
|
26
|
-
| `replace` | `content: @Composable () -> Unit, options: NavigationOptions? = null` | Replace current screen |
|
|
27
|
-
| `pop` | `count: Int = 1, callBack: (() -> Unit)? = null` | Pop N screens from stack |
|
|
28
|
-
| `present` | `content: @Composable () -> Unit, options: NavigationOptions? = null` | Present as dialog |
|
|
29
|
-
| `reset` | `content: @Composable () -> Unit, options: NavigationOptions? = null` | Reset to new screen (clear stack) |
|
|
30
|
-
| `onBackSafe` | `callBack: (() -> Unit)? = null` | Handle back with optional callback |
|
|
31
|
-
|
|
32
|
-
### Overlay Components
|
|
33
|
-
|
|
34
|
-
| Method | Parameters | Description |
|
|
35
|
-
|--------|------------|-------------|
|
|
36
|
-
| `showModal` | `content, barrierDismissible = true, onDismiss = null` | Show modal overlay |
|
|
37
|
-
| `showBottomSheet` | `content, isSurface, barrierDismissible, onDismiss, bottomSheetHeader` | Show bottom sheet |
|
|
38
|
-
| `showSnackBar` | `snackBar: SnackBar, onDismiss = null` | Show snackbar notification |
|
|
39
|
-
| `hideSnackBar` | - | Hide current snackbar |
|
|
40
|
-
|
|
41
|
-
## NavigationOptions
|
|
42
|
-
|
|
43
|
-
```kotlin
|
|
44
|
-
data class NavigationOptions(
|
|
45
|
-
val headerBackProps: HeaderBackProps? = null,
|
|
46
|
-
val onBackHandler: (() -> Unit)? = null,
|
|
47
|
-
// ... other options
|
|
48
|
-
)
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## Usage
|
|
52
|
-
|
|
53
|
-
### Get Navigator Instance
|
|
54
|
-
|
|
55
|
-
```kotlin
|
|
56
|
-
// From NavigationContainer
|
|
57
|
-
NavigationContainer(
|
|
58
|
-
initialScreen = { MyScreen() },
|
|
59
|
-
setNavigator = { navigator = it }
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
// Or use composition local
|
|
63
|
-
val navigator = Navigator.current
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Push Screen
|
|
67
|
-
|
|
68
|
-
```kotlin
|
|
69
|
-
// Simple push
|
|
70
|
-
navigator.push { MyScreen() }
|
|
71
|
-
|
|
72
|
-
// With options
|
|
73
|
-
navigator.push(
|
|
74
|
-
content = { DetailScreen(productId) },
|
|
75
|
-
options = NavigationOptions(
|
|
76
|
-
headerBackProps = HeaderBackProps(
|
|
77
|
-
title = "Product Details",
|
|
78
|
-
preventBack = PreventBackConfirm(
|
|
79
|
-
primary = PopupAction(title = "Leave", onPress = { })
|
|
80
|
-
)
|
|
81
|
-
)
|
|
82
|
-
)
|
|
83
|
-
)
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Replace Screen
|
|
87
|
-
|
|
88
|
-
```kotlin
|
|
89
|
-
// Replace current screen (pops then pushes)
|
|
90
|
-
navigator.replace { NewScreen() }
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Pop Screen
|
|
94
|
-
|
|
95
|
-
```kotlin
|
|
96
|
-
// Pop 1 screen
|
|
97
|
-
navigator.pop()
|
|
98
|
-
|
|
99
|
-
// Pop 2 screens
|
|
100
|
-
navigator.pop(2)
|
|
101
|
-
|
|
102
|
-
// Pop with callback
|
|
103
|
-
navigator.pop(1) {
|
|
104
|
-
// Called after pop completes
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### Present Dialog
|
|
109
|
-
|
|
110
|
-
```kotlin
|
|
111
|
-
navigator.present {
|
|
112
|
-
DialogContent()
|
|
113
|
-
}
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Reset Stack
|
|
117
|
-
|
|
118
|
-
```kotlin
|
|
119
|
-
// Clear all screens and navigate to new screen
|
|
120
|
-
navigator.reset { HomeScreen() }
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Safe Back Handler
|
|
124
|
-
|
|
125
|
-
```kotlin
|
|
126
|
-
// Handle back with confirmation if needed
|
|
127
|
-
navigator.onBackSafe {
|
|
128
|
-
// Callback after back completes
|
|
129
|
-
}
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
## BottomSheet
|
|
133
|
-
|
|
134
|
-
```kotlin
|
|
135
|
-
// Simple bottom sheet
|
|
136
|
-
navigator.showBottomSheet(
|
|
137
|
-
content = { MyContent() }
|
|
138
|
-
)
|
|
139
|
-
|
|
140
|
-
// With header
|
|
141
|
-
navigator.showBottomSheet(
|
|
142
|
-
content = { MyContent() },
|
|
143
|
-
bottomSheetHeader = BottomHeader.Title("Select Option")
|
|
144
|
-
)
|
|
145
|
-
|
|
146
|
-
// Surface style (different background)
|
|
147
|
-
navigator.showBottomSheet(
|
|
148
|
-
content = { MyContent() },
|
|
149
|
-
isSurface = true
|
|
150
|
-
)
|
|
151
|
-
|
|
152
|
-
// Not dismissible
|
|
153
|
-
navigator.showBottomSheet(
|
|
154
|
-
content = { MyContent() },
|
|
155
|
-
barrierDismissible = false,
|
|
156
|
-
onDismiss = { /* handle dismiss */ }
|
|
157
|
-
)
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## BottomHeader
|
|
161
|
-
|
|
162
|
-
```kotlin
|
|
163
|
-
// Title header
|
|
164
|
-
BottomHeader.Title("Title")
|
|
165
|
-
|
|
166
|
-
// Custom header
|
|
167
|
-
BottomHeader.Custom {
|
|
168
|
-
MyHeaderContent()
|
|
169
|
-
}
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
## Modal
|
|
173
|
-
|
|
174
|
-
```kotlin
|
|
175
|
-
// Simple modal
|
|
176
|
-
navigator.showModal(
|
|
177
|
-
content = { MyModalContent() }
|
|
178
|
-
)
|
|
179
|
-
|
|
180
|
-
// Not dismissible
|
|
181
|
-
navigator.showModal(
|
|
182
|
-
content = { MyModalContent() },
|
|
183
|
-
barrierDismissible = false,
|
|
184
|
-
onDismiss = { /* handle dismiss */ }
|
|
185
|
-
)
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
## SnackBar
|
|
189
|
-
|
|
190
|
-
```kotlin
|
|
191
|
-
// Success snackbar
|
|
192
|
-
navigator.showSnackBar(
|
|
193
|
-
snackBar = SnackBar(
|
|
194
|
-
message = "Saved successfully",
|
|
195
|
-
type = SnackBar.Type.SUCCESS
|
|
196
|
-
)
|
|
197
|
-
)
|
|
198
|
-
|
|
199
|
-
// Error snackbar
|
|
200
|
-
navigator.showSnackBar(
|
|
201
|
-
snackBar = SnackBar(
|
|
202
|
-
message = "Something went wrong",
|
|
203
|
-
type = SnackBar.Type.ERROR
|
|
204
|
-
)
|
|
205
|
-
)
|
|
206
|
-
|
|
207
|
-
// Info snackbar
|
|
208
|
-
navigator.showSnackBar(
|
|
209
|
-
snackBar = SnackBar(
|
|
210
|
-
message = "Processing...",
|
|
211
|
-
type = SnackBar.Type.INFO
|
|
212
|
-
)
|
|
213
|
-
)
|
|
214
|
-
|
|
215
|
-
// With action button
|
|
216
|
-
navigator.showSnackBar(
|
|
217
|
-
snackBar = SnackBar(
|
|
218
|
-
message = "Item deleted",
|
|
219
|
-
action = SnackBar.Action(
|
|
220
|
-
title = "UNDO",
|
|
221
|
-
onPress = { /* undo */ }
|
|
222
|
-
)
|
|
223
|
-
)
|
|
224
|
-
)
|
|
225
|
-
|
|
226
|
-
// Hide snackbar
|
|
227
|
-
navigator.hideSnackBar()
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
## SnackBar Type
|
|
231
|
-
|
|
232
|
-
| Type | Description |
|
|
233
|
-
|------|-------------|
|
|
234
|
-
| `SUCCESS` | Green color, success messages |
|
|
235
|
-
| `ERROR` | Red color, error messages |
|
|
236
|
-
| `INFO` | Default color, informational |
|
|
237
|
-
| `WARNING` | Warning messages |
|
|
238
|
-
|
|
239
|
-
## Common Patterns
|
|
240
|
-
|
|
241
|
-
### Navigate with Result
|
|
242
|
-
|
|
243
|
-
```kotlin
|
|
244
|
-
// Push screen and handle result
|
|
245
|
-
navigator.push {
|
|
246
|
-
SelectScreen(
|
|
247
|
-
onResult = { selected ->
|
|
248
|
-
// Handle result
|
|
249
|
-
navigator.pop()
|
|
250
|
-
}
|
|
251
|
-
)
|
|
252
|
-
}
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
### Confirm Before Back
|
|
256
|
-
|
|
257
|
-
```kotlin
|
|
258
|
-
navigator.push(
|
|
259
|
-
content = { EditScreen() },
|
|
260
|
-
options = NavigationOptions(
|
|
261
|
-
onBackHandler = {
|
|
262
|
-
showUnsavedChangesDialog()
|
|
263
|
-
},
|
|
264
|
-
headerBackProps = HeaderBackProps(
|
|
265
|
-
preventBack = PreventBackConfirm(
|
|
266
|
-
primary = PopupAction(
|
|
267
|
-
title = "Discard",
|
|
268
|
-
onPress = { navigator.pop() }
|
|
269
|
-
)
|
|
270
|
-
)
|
|
271
|
-
)
|
|
272
|
-
)
|
|
273
|
-
)
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
### Nested Navigation
|
|
277
|
-
|
|
278
|
-
```kotlin
|
|
279
|
-
// Present login as modal
|
|
280
|
-
navigator.present {
|
|
281
|
-
LoginScreen(
|
|
282
|
-
onSuccess = {
|
|
283
|
-
navigator.pop()
|
|
284
|
-
}
|
|
285
|
-
)
|
|
286
|
-
}
|
|
287
|
-
```
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pagination-dot
|
|
3
|
-
description: Pagination component showing dots. Use when implementing carousel-style pagination.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# PaginationDot
|
|
7
|
-
|
|
8
|
-
Pagination component showing dots.
|
|
9
|
-
|
|
10
|
-
## Keywords
|
|
11
|
-
|
|
12
|
-
pagination dots, dot pagination
|
|
13
|
-
|
|
14
|
-
## API
|
|
15
|
-
|
|
16
|
-
```kotlin
|
|
17
|
-
@Composable
|
|
18
|
-
fun PaginationDot(
|
|
19
|
-
activeIndex: Int = 0,
|
|
20
|
-
dataLength: Int = 3
|
|
21
|
-
)
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Examples
|
|
25
|
-
|
|
26
|
-
```kotlin
|
|
27
|
-
PaginationDot(activeIndex = currentPage, dataLength = totalPages)
|
|
28
|
-
```
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pagination-number
|
|
3
|
-
description: Pagination component showing page numbers. Use when displaying current page position (e.g., "1/5").
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# PaginationNumber
|
|
7
|
-
|
|
8
|
-
Pagination component showing page numbers.
|
|
9
|
-
|
|
10
|
-
## Keywords
|
|
11
|
-
|
|
12
|
-
pagination, page, trang
|
|
13
|
-
|
|
14
|
-
## API
|
|
15
|
-
|
|
16
|
-
```kotlin
|
|
17
|
-
@Composable
|
|
18
|
-
fun PaginationNumber(
|
|
19
|
-
activeIndex: Int = 0,
|
|
20
|
-
dataLength: Int = 2
|
|
21
|
-
)
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Examples
|
|
25
|
-
|
|
26
|
-
```kotlin
|
|
27
|
-
PaginationNumber(activeIndex = 0, dataLength = 5) // Shows "1/5"
|
|
28
|
-
```
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: popup-notify
|
|
3
|
-
description: Confirm popup component. Use when showing confirmation dialogs, warnings, or alert popups.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# PopupNotify
|
|
7
|
-
|
|
8
|
-
Confirm popup component.
|
|
9
|
-
|
|
10
|
-
## Keywords
|
|
11
|
-
|
|
12
|
-
popup, confirm, xác nhận, thông báo
|
|
13
|
-
|
|
14
|
-
## API
|
|
15
|
-
|
|
16
|
-
```kotlin
|
|
17
|
-
@Composable
|
|
18
|
-
fun PopupNotify(
|
|
19
|
-
title: String = "",
|
|
20
|
-
content: String = "",
|
|
21
|
-
primary: PopupAction? = null,
|
|
22
|
-
secondary: PopupAction? = null,
|
|
23
|
-
type: PopupNotifyType = PopupNotifyType.DEFAULT
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
data class PopupAction(
|
|
27
|
-
val title: String,
|
|
28
|
-
val onPress: (() -> Unit)? = null,
|
|
29
|
-
val type: PopupActionType = PopupActionType.PRIMARY
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
enum class PopupNotifyType { DEFAULT, WARNING, ERROR }
|
|
33
|
-
enum class PopupActionType { PRIMARY, SECONDARY }
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Examples
|
|
37
|
-
|
|
38
|
-
```kotlin
|
|
39
|
-
navigator.showModal {
|
|
40
|
-
PopupNotify(
|
|
41
|
-
title = "Confirm",
|
|
42
|
-
content = "Are you sure?",
|
|
43
|
-
primary = PopupAction(title = "Confirm", onClick = { }),
|
|
44
|
-
secondary = PopupAction(title = "Cancel", type = PopupActionType.SECONDARY)
|
|
45
|
-
)
|
|
46
|
-
}
|
|
47
|
-
```
|