@octane-xplat/ui 0.6.0 → 0.7.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.
- package/README.md +14 -4
- package/dist/native/{Absolute.native.tsrx.js → Absolute.tsrx.js} +2 -2
- package/dist/native/{Accordion.native.tsrx.js → Accordion.tsrx.js} +3 -3
- package/dist/native/{ActivityIndicator.native.tsrx.js → ActivityIndicator.tsrx.js} +2 -2
- package/dist/native/{Alert.native.tsrx.js → Alert.tsrx.js} +3 -3
- package/dist/native/{Avatar.native.tsrx.js → Avatar.tsrx.js} +3 -3
- package/dist/native/{AvatarGroup.native.tsrx.js → AvatarGroup.tsrx.js} +3 -3
- package/dist/native/{Badge.native.tsrx.js → Badge.tsrx.js} +2 -2
- package/dist/native/{Banner.native.tsrx.js → Banner.tsrx.js} +3 -3
- package/dist/native/{Breadcrumb.native.tsrx.js → Breadcrumb.tsrx.js} +2 -2
- package/dist/native/{Button.native.tsrx.js → Button.tsrx.js} +3 -3
- package/dist/native/{Card.native.tsrx.js → Card.tsrx.js} +2 -2
- package/dist/native/{Checkbox.native.tsrx.js → Checkbox.tsrx.js} +2 -2
- package/dist/native/{CheckboxGroup.native.tsrx.js → CheckboxGroup.tsrx.js} +3 -3
- package/dist/native/{Chip.native.tsrx.js → Chip.tsrx.js} +2 -2
- package/dist/native/{Collapsible.native.tsrx.js → Collapsible.tsrx.js} +3 -3
- package/dist/native/{CommandPalette.native.tsrx.js → CommandPalette.tsrx.js} +4 -4
- package/dist/native/{ContextMenu.native.tsrx.js → ContextMenu.tsrx.js} +4 -4
- package/dist/native/{Drawer.native.tsrx.js → Drawer.tsrx.js} +2 -2
- package/dist/native/{DropdownMenu.native.tsrx.js → DropdownMenu.tsrx.js} +5 -5
- package/dist/native/{Empty.native.tsrx.js → Empty.tsrx.js} +3 -3
- package/dist/native/{FieldGroup.native.tsrx.js → FieldGroup.tsrx.js} +2 -2
- package/dist/native/{FormField.native.tsrx.js → FormField.tsrx.js} +2 -2
- package/dist/native/{Grid.native.tsrx.js → Grid.tsrx.js} +2 -2
- package/dist/native/{Heading.native.tsrx.js → Heading.tsrx.js} +3 -3
- package/dist/native/Hoverable.tsrx.js +139 -0
- package/dist/native/{Icon.native.tsrx.js → Icon.tsrx.js} +3 -3
- package/dist/native/{Image.native.tsrx.js → Image.tsrx.js} +4 -4
- package/dist/native/{InputNumber.native.tsrx.js → InputNumber.tsrx.js} +4 -4
- package/dist/native/{InputRating.native.tsrx.js → InputRating.tsrx.js} +3 -3
- package/dist/native/{InputTags.native.tsrx.js → InputTags.tsrx.js} +4 -4
- package/dist/native/{Kbd.native.tsrx.js → Kbd.tsrx.js} +2 -2
- package/dist/native/{KeyboardAvoiding.native.tsrx.js → KeyboardAvoiding.mobile.tsrx.js} +5 -3
- package/dist/native/{Link.native.tsrx.js → Link.tsrx.js} +2 -2
- package/dist/native/ListItem.tsrx.js +178 -0
- package/dist/native/Meter.tsrx.js +70 -0
- package/dist/native/{NavLink.native.tsrx.js → NavLink.tsrx.js} +3 -3
- package/dist/native/{NavigationMenu.native.tsrx.js → NavigationMenu.tsrx.js} +3 -3
- package/dist/native/{Overlay.native.tsrx.js → Overlay.tsrx.js} +2 -2
- package/dist/native/{Pagination.native.tsrx.js → Pagination.tsrx.js} +2 -2
- package/dist/native/{PinInput.native.tsrx.js → PinInput.tsrx.js} +3 -3
- package/dist/native/{Popover.native.tsrx.js → Popover.tsrx.js} +4 -4
- package/dist/native/{Pressable.native.tsrx.js → Pressable.tsrx.js} +4 -4
- package/dist/native/{ProgressGroup.native.tsrx.js → ProgressGroup.tsrx.js} +3 -3
- package/dist/native/{RadioGroup.native.tsrx.js → RadioGroup.tsrx.js} +2 -2
- package/dist/native/{RichText.native.tsrx.js → RichText.tsrx.js} +3 -3
- package/dist/native/{RouteHost.native.tsrx.js → RouteHost.mobile.tsrx.js} +13 -2
- package/dist/native/{Row.native.tsrx.js → Row.tsrx.js} +4 -4
- package/dist/native/{SafeArea.native.tsrx.js → SafeArea.tsrx.js} +9 -3
- package/dist/native/{Screen.native.tsrx.js → Screen.tsrx.js} +13 -5
- package/dist/native/{ScrollBox.native.tsrx.js → ScrollBox.tsrx.js} +2 -2
- package/dist/native/{ScrollView.native.tsrx.js → ScrollView.tsrx.js} +5 -5
- package/dist/native/{SearchInput.native.tsrx.js → SearchInput.tsrx.js} +4 -4
- package/dist/native/{SegmentedControl.native.tsrx.js → SegmentedControl.tsrx.js} +2 -2
- package/dist/native/{Select.native.tsrx.js → Select.tsrx.js} +4 -4
- package/dist/native/{Separator.native.tsrx.js → Separator.tsrx.js} +2 -2
- package/dist/native/{Sheet.native.tsrx.js → Sheet.tsrx.js} +11 -3
- package/dist/native/{Skeleton.native.tsrx.js → Skeleton.tsrx.js} +2 -2
- package/dist/native/{Slider.native.tsrx.js → Slider.tsrx.js} +5 -5
- package/dist/native/{Spacer.native.tsrx.js → Spacer.tsrx.js} +2 -2
- package/dist/native/{Stack.native.tsrx.js → Stack.tsrx.js} +2 -2
- package/dist/native/{Stepper.native.tsrx.js → Stepper.tsrx.js} +2 -2
- package/dist/native/{Switch.native.tsrx.js → Switch.tsrx.js} +2 -2
- package/dist/native/{Table.native.tsrx.js → Table.tsrx.js} +2 -2
- package/dist/native/{Tabs.native.tsrx.js → Tabs.tsrx.js} +8 -18
- package/dist/native/{Text.native.tsrx.js → Text.tsrx.js} +3 -3
- package/dist/native/{TextArea.native.tsrx.js → TextArea.tsrx.js} +3 -3
- package/dist/native/{TextInput.native.tsrx.js → TextInput.tsrx.js} +3 -3
- package/dist/native/{Timeline.native.tsrx.js → Timeline.tsrx.js} +3 -3
- package/dist/native/Tooltip.tsrx.js +131 -0
- package/dist/native/{Tree.native.tsrx.js → Tree.tsrx.js} +2 -2
- package/dist/native/{User.native.tsrx.js → User.tsrx.js} +3 -3
- package/dist/native/{View.native.tsrx.js → View.tsrx.js} +4 -4
- package/dist/native/VirtualList.tsrx.js +466 -0
- package/dist/native/{WebView.native.tsrx.js → WebView.tsrx.js} +31 -6
- package/dist/native/{aliases.native.tsrx.js → aliases.tsrx.js} +2 -2
- package/dist/native/android/BottomNavigationView.android.tsrx.js +72 -23
- package/dist/native/android/CircularProgressIndicator.android.tsrx.js +1 -1
- package/dist/native/android/DrawerLayout.android.tsrx.js +2 -1
- package/dist/native/android/MaterialDialog.android.tsrx.js +1 -1
- package/dist/native/android/MaterialSwitch.android.tsrx.js +1 -1
- package/dist/native/android/RecyclerView.android.tsrx.js +15 -3
- package/dist/native/android/SeekBar.android.tsrx.js +1 -1
- package/dist/native/android/icon.android.js +7 -0
- package/dist/native/android/index.js +3 -1
- package/dist/native/android/openModal.android.js +1 -1
- package/dist/native/{anim.native.tsrx.js → anim.tsrx.js} +1 -1
- package/dist/native/apply-native-modifiers.native.js +9 -0
- package/dist/native/{escape-props.native.js → escape-props.js} +3 -1
- package/dist/native/index.shared.js +92 -0
- package/dist/native/ios/LiquidGlass.ios.tsrx.js +2 -2
- package/dist/native/ios/LiquidGlassContainer.ios.tsrx.js +2 -2
- package/dist/native/ios/SideDrawer.ios.tsrx.js +2 -1
- package/dist/native/ios/UIActivityIndicatorView.ios.tsrx.js +1 -1
- package/dist/native/ios/UIModal.ios.tsrx.js +1 -1
- package/dist/native/ios/UISlider.ios.tsrx.js +1 -1
- package/dist/native/ios/UISwitch.ios.tsrx.js +1 -1
- package/dist/native/ios/UITabBar.ios.tsrx.js +33 -12
- package/dist/native/ios/UITableView.ios.tsrx.js +15 -3
- package/dist/native/ios/icon.ios.js +7 -0
- package/dist/native/ios/index.js +3 -1
- package/dist/native/ios/openModal.ios.js +1 -1
- package/dist/native/keyboard-inset.mobile.js +66 -0
- package/dist/native/{layout-child.native.js → layout-child.js} +1 -1
- package/dist/native/{modal-presenter.native.js → modal-presenter.mobile.js} +1 -1
- package/dist/native/modifier-factories.js +24 -0
- package/dist/native/native/index.js +3 -3
- package/dist/native/octane-client-build.json +1 -1
- package/dist/native/{pan.native.tsrx.js → pan.tsrx.js} +1 -1
- package/dist/native/{platform.native.js → platform.js} +3 -3
- package/dist/native/{platformProps.native.js → platformProps.js} +3 -1
- package/dist/native/{refresh.native.js → refresh.js} +1 -1
- package/dist/native/{root-layout.native.js → root-layout.mobile.js} +2 -2
- package/dist/native/route-host.mobile.js +2 -0
- package/dist/native/route-table.js +105 -4
- package/dist/native/{route.native.js → route.js} +49 -13
- package/dist/native/safeAreaInsets.tsrx.js +67 -0
- package/dist/native/shared.js +93 -0
- package/dist/native/{sheet-detents.native.js → sheet-detents.js} +1 -1
- package/dist/native/{sheet-service.native.js → sheet-service.js} +9 -3
- package/dist/native/{stacks.native.js → stacks.js} +1 -1
- package/dist/native/{styled.native.tsrx.js → styled.tsrx.js} +1 -1
- package/dist/native/{svg.native.js → svg.mobile.js} +2 -2
- package/dist/native/tap-to-blur.mobile.js +94 -0
- package/dist/native/{text-write.native.js → text-write.js} +1 -1
- package/dist/native/theme/{colorScheme.native.js → colorScheme.js} +2 -2
- package/dist/native/theme/{status-bar-scheme.native.js → status-bar-scheme.mobile.js} +1 -1
- package/dist/native/theme/theme-scheme.js +2 -2
- package/dist/native/{toast-anchor.native.tsrx.js → toast-anchor.tsrx.js} +3 -3
- package/dist/native/{translate.native.js → translate.js} +1 -1
- package/dist/native/ui.js +92 -90
- package/dist/native/{use-back.native.tsrx.js → use-back.tsrx.js} +2 -2
- package/dist/native/{use-store.native.tsrx.js → use-store.tsrx.js} +1 -1
- package/dist/native/{useMeasure.native.tsrx.js → useMeasure.tsrx.js} +1 -1
- package/dist/native/vendor/ui-svg/index.android.js +137 -0
- package/dist/native/vendor/ui-svg/index.common.js +10 -0
- package/dist/native/vendor/ui-svg/index.ios.js +111 -0
- package/dist/native/virtual-list-layout.js +146 -0
- package/dist/native/{windows.native.js → windows.js} +1 -1
- package/dist/web/{web/Hoverable.web.tsrx.js → Hoverable.web.tsrx.js} +7 -6
- package/dist/web/ListItem.web.tsrx.js +139 -0
- package/dist/web/SafeArea.web.tsrx.js +9 -3
- package/dist/web/Tabs.web.tsrx.js +88 -44
- package/dist/web/{web/Tooltip.web.tsrx.js → Tooltip.web.tsrx.js} +7 -6
- package/dist/web/VirtualList.web.tsrx.js +622 -0
- package/dist/web/WebView.web.tsrx.js +42 -5
- package/dist/web/octane-client-build.json +1 -1
- package/dist/web/platform.web.js +1 -1
- package/dist/web/route-table.js +105 -4
- package/dist/web/route.web.js +36 -11
- package/dist/web/ui.js +9 -8
- package/dist/web/virtual-list-layout.js +146 -0
- package/dist/web/web/index.js +2 -2
- package/package.json +51 -23
- package/platforms/android/include.gradle +8 -0
- package/platforms/android/native-api-usage.json +8 -0
- package/platforms/ios/Podfile +2 -0
- package/src/Absolute.tsrx +22 -0
- package/src/Absolute.web.tsrx +22 -0
- package/src/Accordion.macos.tsrx +50 -0
- package/src/Accordion.tsrx +50 -0
- package/src/Accordion.web.tsrx +43 -0
- package/src/ActivityIndicator.tsrx +29 -0
- package/src/ActivityIndicator.web.tsrx +14 -0
- package/src/Alert.macos.tsrx +42 -0
- package/src/Alert.tsrx +24 -0
- package/src/Alert.web.tsrx +23 -0
- package/src/Avatar.macos.tsrx +25 -0
- package/src/Avatar.tsrx +25 -0
- package/src/Avatar.web.tsrx +24 -0
- package/src/AvatarGroup.macos.tsrx +32 -0
- package/src/AvatarGroup.tsrx +32 -0
- package/src/AvatarGroup.web.tsrx +29 -0
- package/src/Badge.macos.tsrx +12 -0
- package/src/Badge.tsrx +12 -0
- package/src/Badge.web.tsrx +10 -0
- package/src/Banner.macos.tsrx +20 -0
- package/src/Banner.tsrx +20 -0
- package/src/Banner.web.tsrx +20 -0
- package/src/Breadcrumb.macos.tsrx +27 -0
- package/src/Breadcrumb.tsrx +27 -0
- package/src/Breadcrumb.web.tsrx +25 -0
- package/src/Button.tsrx +23 -0
- package/src/Button.web.tsrx +21 -0
- package/src/CameraView.macos.tsrx +6 -0
- package/src/Card.macos.tsrx +13 -0
- package/src/Card.tsrx +13 -0
- package/src/Card.web.tsrx +11 -0
- package/src/Checkbox.tsrx +23 -0
- package/src/Checkbox.web.tsrx +34 -0
- package/src/CheckboxGroup.macos.tsrx +39 -0
- package/src/CheckboxGroup.tsrx +39 -0
- package/src/CheckboxGroup.web.tsrx +38 -0
- package/src/Chip.macos.tsrx +25 -0
- package/src/Chip.tsrx +25 -0
- package/src/Chip.web.tsrx +25 -0
- package/src/Collapsible.macos.tsrx +39 -0
- package/src/Collapsible.tsrx +39 -0
- package/src/Collapsible.web.tsrx +33 -0
- package/src/CommandPalette.macos.tsrx +58 -0
- package/src/CommandPalette.tsrx +58 -0
- package/src/CommandPalette.web.tsrx +59 -0
- package/src/ContextMenu.macos.tsrx +59 -0
- package/src/ContextMenu.tsrx +59 -0
- package/src/ContextMenu.web.tsrx +69 -0
- package/src/Drawer.macos.tsrx +28 -0
- package/src/Drawer.tsrx +25 -0
- package/src/Drawer.web.tsrx +31 -0
- package/src/DropdownMenu.macos.tsrx +63 -0
- package/src/DropdownMenu.tsrx +63 -0
- package/src/DropdownMenu.web.tsrx +78 -0
- package/src/Empty.macos.tsrx +15 -0
- package/src/Empty.tsrx +15 -0
- package/src/Empty.web.tsrx +13 -0
- package/src/FieldGroup.macos.tsrx +17 -0
- package/src/FieldGroup.tsrx +17 -0
- package/src/FieldGroup.web.tsrx +17 -0
- package/src/FormField.macos.tsrx +25 -0
- package/src/FormField.tsrx +25 -0
- package/src/FormField.web.tsrx +24 -0
- package/src/Grid.tsrx +32 -0
- package/src/Grid.web.tsrx +43 -0
- package/src/Heading.macos.tsrx +8 -0
- package/src/Heading.tsrx +17 -0
- package/src/Heading.web.tsrx +15 -0
- package/src/Hoverable.mobile.tsrx +21 -0
- package/src/Hoverable.tsrx +113 -0
- package/src/Hoverable.web.tsrx +98 -0
- package/src/Icon.macos.tsrx +18 -0
- package/src/Icon.tsrx +65 -0
- package/src/Icon.web.tsrx +75 -0
- package/src/Image.macos.tsrx +12 -0
- package/src/Image.tsrx +51 -0
- package/src/Image.web.tsrx +14 -0
- package/src/InputNumber.macos.tsrx +49 -0
- package/src/InputNumber.tsrx +49 -0
- package/src/InputNumber.web.tsrx +47 -0
- package/src/InputRating.macos.tsrx +42 -0
- package/src/InputRating.tsrx +39 -0
- package/src/InputRating.web.tsrx +52 -0
- package/src/InputTags.macos.tsrx +49 -0
- package/src/InputTags.tsrx +49 -0
- package/src/InputTags.web.tsrx +49 -0
- package/src/Kbd.macos.tsrx +11 -0
- package/src/Kbd.tsrx +11 -0
- package/src/Kbd.web.tsrx +9 -0
- package/src/KeyboardAvoiding.macos.tsrx +8 -0
- package/src/KeyboardAvoiding.mobile.tsrx +63 -0
- package/src/Link.macos.tsrx +15 -0
- package/src/Link.tsrx +10 -0
- package/src/Link.web.tsrx +12 -0
- package/src/ListItem.macos.tsrx +52 -0
- package/src/ListItem.tsrx +52 -0
- package/src/ListItem.web.tsrx +50 -0
- package/src/Meter.macos.tsrx +8 -0
- package/src/Meter.tsrx +45 -0
- package/src/Meter.web.tsrx +32 -0
- package/src/NavLink.macos.tsrx +24 -0
- package/src/NavLink.tsrx +22 -0
- package/src/NavLink.web.tsrx +23 -0
- package/src/NavigationMenu.macos.tsrx +31 -0
- package/src/NavigationMenu.tsrx +28 -0
- package/src/NavigationMenu.web.tsrx +31 -0
- package/src/Overlay.macos.tsrx +11 -0
- package/src/Overlay.tsrx +84 -0
- package/src/Overlay.web.tsrx +23 -0
- package/src/Pagination.macos.tsrx +54 -0
- package/src/Pagination.tsrx +47 -0
- package/src/Pagination.web.tsrx +50 -0
- package/src/PinInput.macos.tsrx +46 -0
- package/src/PinInput.tsrx +46 -0
- package/src/PinInput.web.tsrx +45 -0
- package/src/Popover.macos.tsrx +11 -0
- package/src/Popover.tsrx +157 -0
- package/src/Popover.web.tsrx +109 -0
- package/src/Pressable.macos.tsrx +19 -0
- package/src/Pressable.tsrx +37 -0
- package/src/Pressable.web.tsrx +45 -0
- package/src/ProgressGroup.macos.tsrx +17 -0
- package/src/ProgressGroup.tsrx +17 -0
- package/src/ProgressGroup.web.tsrx +15 -0
- package/src/RadioGroup.macos.tsrx +50 -0
- package/src/RadioGroup.tsrx +34 -0
- package/src/RadioGroup.web.tsrx +43 -0
- package/src/RichText.tsrx +40 -0
- package/src/RichText.web.tsrx +24 -0
- package/src/RouteHost.macos.tsrx +18 -0
- package/src/RouteHost.mobile.tsrx +44 -0
- package/src/Row.macos.tsrx +26 -0
- package/src/Row.tsrx +27 -0
- package/src/Row.web.tsrx +27 -0
- package/src/SafeArea.macos.tsrx +8 -0
- package/src/SafeArea.tsrx +20 -0
- package/src/SafeArea.web.tsrx +24 -0
- package/src/Screen.macos.tsrx +14 -0
- package/src/Screen.tsrx +31 -0
- package/src/Screen.web.tsrx +7 -0
- package/src/ScrollBox.tsrx +8 -0
- package/src/ScrollBox.web.tsrx +7 -0
- package/src/ScrollView.macos.tsrx +19 -0
- package/src/ScrollView.tsrx +117 -0
- package/src/ScrollView.web.tsrx +109 -0
- package/src/SearchInput.tsrx +60 -0
- package/src/SearchInput.web.test.tsrx +58 -0
- package/src/SearchInput.web.tsrx +55 -0
- package/src/SegmentedControl.tsrx +43 -0
- package/src/SegmentedControl.web.test.tsrx +46 -0
- package/src/SegmentedControl.web.tsrx +51 -0
- package/src/Select.macos.tsrx +104 -0
- package/src/Select.tsrx +104 -0
- package/src/Select.web.tsrx +124 -0
- package/src/Separator.macos.tsrx +17 -0
- package/src/Separator.tsrx +17 -0
- package/src/Separator.web.tsrx +17 -0
- package/src/Sheet.macos.tsrx +15 -0
- package/src/Sheet.tsrx +122 -0
- package/src/Sheet.web.tsrx +56 -0
- package/src/Skeleton.macos.tsrx +15 -0
- package/src/Skeleton.tsrx +15 -0
- package/src/Skeleton.web.tsrx +15 -0
- package/src/Slider.tsrx +71 -0
- package/src/Slider.web.tsrx +60 -0
- package/src/Spacer.tsrx +8 -0
- package/src/Spacer.web.tsrx +6 -0
- package/src/Stack.tsrx +24 -0
- package/src/Stack.web.tsrx +22 -0
- package/src/Stepper.macos.tsrx +52 -0
- package/src/Stepper.tsrx +31 -0
- package/src/Stepper.web.tsrx +37 -0
- package/src/Switch.tsrx +21 -0
- package/src/Switch.web.tsrx +28 -0
- package/src/Table.macos.tsrx +37 -0
- package/src/Table.tsrx +37 -0
- package/src/Table.web.tsrx +37 -0
- package/src/Tabs.macos.tsrx +60 -0
- package/src/Tabs.tsrx +55 -0
- package/src/Tabs.web.tsrx +98 -0
- package/src/Text.macos.tsrx +18 -0
- package/src/Text.tsrx +62 -0
- package/src/Text.web.tsrx +31 -0
- package/src/TextArea.tsrx +65 -0
- package/src/TextArea.web.tsrx +61 -0
- package/src/TextInput.tsrx +39 -0
- package/src/TextInput.web.tsrx +28 -0
- package/src/Timeline.macos.tsrx +27 -0
- package/src/Timeline.tsrx +24 -0
- package/src/Timeline.web.tsrx +22 -0
- package/src/Tooltip.mobile.tsrx +20 -0
- package/src/Tooltip.tsrx +102 -0
- package/src/Tooltip.web.tsrx +156 -0
- package/src/Tree.macos.tsrx +45 -0
- package/src/Tree.tsrx +45 -0
- package/src/Tree.web.tsrx +52 -0
- package/src/User.macos.tsrx +24 -0
- package/src/User.tsrx +24 -0
- package/src/User.web.tsrx +24 -0
- package/src/View.macos.tsrx +29 -0
- package/src/View.tsrx +32 -0
- package/src/View.web.tsrx +33 -0
- package/src/VirtualList.macos.tsrx +335 -0
- package/src/VirtualList.tsrx +358 -0
- package/src/VirtualList.web.tsrx +313 -0
- package/src/WebView.macos.tsrx +6 -0
- package/src/WebView.tsrx +89 -0
- package/src/WebView.web.tsrx +92 -0
- package/src/aliases.macos.tsrx +18 -0
- package/src/aliases.tsrx +18 -0
- package/src/aliases.web.tsrx +17 -0
- package/src/android/BottomNavigationView.android.tsrx +170 -0
- package/src/android/CircularProgressIndicator.android.tsrx +19 -0
- package/src/android/DrawerLayout.android.tsrx +48 -0
- package/src/android/MaterialDialog.android.tsrx +62 -0
- package/src/android/MaterialSwitch.android.tsrx +18 -0
- package/src/android/RecyclerView.android.tsrx +173 -0
- package/src/android/SeekBar.android.tsrx +20 -0
- package/src/android/icon.android.ts +8 -0
- package/src/android/index.ts +37 -0
- package/src/android/openModal.android.ts +55 -0
- package/src/anim.macos.tsrx +20 -0
- package/src/anim.tsrx +65 -0
- package/src/anim.web.tsrx +55 -0
- package/src/apply-native-modifiers.native.ts +13 -0
- package/src/camera-permission.web.ts +11 -0
- package/src/child-array.ts +16 -0
- package/src/colorScheme.macos.ts +27 -0
- package/src/controls.macos.tsrx +171 -0
- package/src/cx.ts +8 -0
- package/src/escape-props.macos.ts +11 -0
- package/src/escape-props.ts +70 -0
- package/src/escape-props.web.ts +25 -0
- package/src/hosted-unsupported.macos.tsrx +9 -0
- package/src/icons.ts +60 -0
- package/src/index.linux.ts +10 -0
- package/src/index.macos.ts +106 -0
- package/src/index.mobile.ts +6 -0
- package/src/index.shared.ts +269 -0
- package/src/index.ts +1 -0
- package/src/index.web.ts +261 -0
- package/src/ios/LiquidGlass.ios.tsrx +41 -0
- package/src/ios/LiquidGlassContainer.ios.tsrx +34 -0
- package/src/ios/SideDrawer.ios.tsrx +49 -0
- package/src/ios/UIActivityIndicatorView.ios.tsrx +18 -0
- package/src/ios/UIModal.ios.tsrx +68 -0
- package/src/ios/UISlider.ios.tsrx +20 -0
- package/src/ios/UISwitch.ios.tsrx +18 -0
- package/src/ios/UITabBar.ios.tsrx +172 -0
- package/src/ios/UITableView.ios.tsrx +186 -0
- package/src/ios/icon.ios.ts +8 -0
- package/src/ios/index.ts +42 -0
- package/src/ios/openModal.ios.ts +55 -0
- package/src/keyboard-inset.mobile.ts +89 -0
- package/src/layout-child.ts +57 -0
- package/src/layout-child.web.ts +108 -0
- package/src/layout-shells.macos.tsrx +10 -0
- package/src/layout.macos.tsrx +41 -0
- package/src/macos-extras.macos.tsrx +40 -0
- package/src/meter-math.ts +6 -0
- package/src/modal-presenter.mobile.ts +24 -0
- package/src/modifier-factories.ts +20 -0
- package/src/native/index.ts +6 -0
- package/src/pan.tsrx +64 -0
- package/src/pan.web.tsrx +38 -0
- package/src/platform.macos.ts +1 -0
- package/src/platform.ts +7 -0
- package/src/platform.web.ts +6 -0
- package/src/platformProps.ts +23 -0
- package/src/platformProps.web.ts +14 -0
- package/src/popover-position.ts +62 -0
- package/src/popover.mobile.test.ts +54 -0
- package/src/props.ts +1812 -0
- package/src/references.d.ts +2 -0
- package/src/refresh-metrics.ts +11 -0
- package/src/refresh.ts +271 -0
- package/src/refresh.web.test.ts +111 -0
- package/src/refresh.web.ts +205 -0
- package/src/root-layout.mobile.ts +89 -0
- package/src/route-host.mobile.ts +1 -0
- package/src/route-table.test.ts +345 -0
- package/src/route-table.ts +585 -0
- package/src/route.macos.ts +201 -0
- package/src/route.ts +703 -0
- package/src/route.web.ts +366 -0
- package/src/safeAreaInsets.macos.tsrx +7 -0
- package/src/safeAreaInsets.tsrx +60 -0
- package/src/safeAreaInsets.web.tsrx +38 -0
- package/src/sheet-detents.ts +142 -0
- package/src/sheet-detents.web.ts +147 -0
- package/src/sheet-service.macos.ts +60 -0
- package/src/sheet-service.ts +124 -0
- package/src/sheet-service.web.ts +64 -0
- package/src/sheet-snap.test.ts +46 -0
- package/src/sheet-snap.ts +66 -0
- package/src/stacks.macos.ts +13 -0
- package/src/stacks.ts +44 -0
- package/src/stacks.web.ts +9 -0
- package/src/store.mobile.test.ts +149 -0
- package/src/store.ts +39 -0
- package/src/store.web.test.tsrx +58 -0
- package/src/styled.macos.tsrx +23 -0
- package/src/styled.test.ts +40 -0
- package/src/styled.tsrx +36 -0
- package/src/styled.web.tsrx +23 -0
- package/src/surfaces.macos.tsrx +27 -0
- package/src/svg.mobile.ts +76 -0
- package/src/tap-to-blur.mobile.ts +108 -0
- package/src/text-controls.macos.tsrx +11 -0
- package/src/text-write.ts +28 -0
- package/src/text-write.web.ts +13 -0
- package/src/theme/colorScheme.linux.ts +52 -0
- package/src/theme/colorScheme.ts +26 -0
- package/src/theme/colorScheme.web.ts +20 -0
- package/src/theme/status-bar-scheme.mobile.ts +39 -0
- package/src/theme/theme-scheme.macos.ts +50 -0
- package/src/theme/theme-scheme.ts +66 -0
- package/src/theme/tokens.css +44 -22
- package/src/toast-anchor.macos.tsrx +3 -0
- package/src/toast-anchor.tsrx +122 -0
- package/src/toast-anchor.web.tsrx +92 -0
- package/src/toast.tsrx +90 -0
- package/src/toast.web.tsrx +50 -0
- package/src/transform.web.ts +52 -0
- package/src/translate.macos.ts +5 -0
- package/src/translate.ts +13 -0
- package/src/translate.web.ts +15 -0
- package/src/tsconfig.json +8 -0
- package/src/unsupported.macos.tsrx +5 -0
- package/src/use-back.tsrx +11 -0
- package/src/use-back.web.tsrx +12 -0
- package/src/use-store.tsrx +18 -0
- package/src/use-store.web.tsrx +18 -0
- package/src/useMeasure.macos.tsrx +23 -0
- package/src/useMeasure.tsrx +66 -0
- package/src/useMeasure.web.tsrx +39 -0
- package/src/useStore.macos.tsrx +6 -0
- package/src/vendor/ui-svg/LICENSE +201 -0
- package/src/vendor/ui-svg/index.android.ts +189 -0
- package/src/vendor/ui-svg/index.common.ts +19 -0
- package/src/vendor/ui-svg/index.ios.ts +147 -0
- package/src/vendor/ui-svg/index.ts +1 -0
- package/src/vendor/ui-svg/typings/SVGKit.d.ts +2862 -0
- package/src/vendor/ui-svg/typings/android.d.ts +1483 -0
- package/src/vendor/ui-svg/typings/ios.d.ts +1511 -0
- package/src/virtual-list-layout.test.ts +81 -0
- package/src/virtual-list-layout.ts +246 -0
- package/src/web/index.ts +11 -0
- package/src/windows.linux.ts +59 -0
- package/src/windows.macos.ts +10 -0
- package/src/windows.ts +7 -0
- package/src/windows.web.ts +6 -0
- package/types/generated/.tsrx-typegen-manifest.json +249 -0
- package/types/generated/Absolute.d.ts +3 -0
- package/types/generated/Absolute.web.d.ts +3 -0
- package/types/generated/Accordion.d.ts +5 -0
- package/types/generated/Accordion.web.d.ts +5 -0
- package/types/generated/ActivityIndicator.d.ts +7 -0
- package/types/generated/ActivityIndicator.web.d.ts +3 -0
- package/types/generated/Alert.d.ts +4 -0
- package/types/generated/Alert.web.d.ts +5 -0
- package/types/generated/Avatar.d.ts +6 -0
- package/types/generated/Avatar.web.d.ts +7 -0
- package/types/generated/AvatarGroup.d.ts +6 -0
- package/types/generated/AvatarGroup.web.d.ts +6 -0
- package/types/generated/Badge.d.ts +5 -0
- package/types/generated/Badge.web.d.ts +5 -0
- package/types/generated/Banner.d.ts +4 -0
- package/types/generated/Banner.web.d.ts +4 -0
- package/types/generated/Breadcrumb.d.ts +4 -0
- package/types/generated/Breadcrumb.web.d.ts +5 -0
- package/types/generated/Button.d.ts +6 -0
- package/types/generated/Button.web.d.ts +6 -0
- package/types/generated/Card.d.ts +4 -0
- package/types/generated/Card.web.d.ts +4 -0
- package/types/generated/Checkbox.d.ts +5 -0
- package/types/generated/Checkbox.web.d.ts +6 -0
- package/types/generated/CheckboxGroup.d.ts +3 -0
- package/types/generated/CheckboxGroup.web.d.ts +3 -0
- package/types/generated/Chip.d.ts +5 -0
- package/types/generated/Chip.web.d.ts +5 -0
- package/types/generated/Collapsible.d.ts +5 -0
- package/types/generated/Collapsible.web.d.ts +5 -0
- package/types/generated/CommandPalette.d.ts +4 -0
- package/types/generated/CommandPalette.web.d.ts +4 -0
- package/types/generated/ContextMenu.d.ts +5 -0
- package/types/generated/ContextMenu.web.d.ts +4 -0
- package/types/generated/Drawer.d.ts +7 -0
- package/types/generated/Drawer.web.d.ts +7 -0
- package/types/generated/DropdownMenu.d.ts +5 -0
- package/types/generated/DropdownMenu.web.d.ts +5 -0
- package/types/generated/Empty.d.ts +4 -0
- package/types/generated/Empty.web.d.ts +4 -0
- package/types/generated/FieldGroup.d.ts +4 -0
- package/types/generated/FieldGroup.web.d.ts +4 -0
- package/types/generated/FormField.d.ts +5 -0
- package/types/generated/FormField.web.d.ts +5 -0
- package/types/generated/Grid.d.ts +3 -0
- package/types/generated/Grid.web.d.ts +3 -0
- package/types/generated/Heading.d.ts +2 -0
- package/types/generated/Heading.web.d.ts +2 -0
- package/types/generated/Hoverable.d.ts +10 -0
- package/types/generated/Hoverable.web.d.ts +9 -0
- package/types/generated/Icon.d.ts +3 -0
- package/types/generated/Icon.web.d.ts +3 -0
- package/types/generated/Image.d.ts +7 -0
- package/types/generated/Image.web.d.ts +3 -0
- package/types/generated/InputNumber.d.ts +5 -0
- package/types/generated/InputNumber.web.d.ts +5 -0
- package/types/generated/InputRating.d.ts +4 -0
- package/types/generated/InputRating.web.d.ts +4 -0
- package/types/generated/InputTags.d.ts +4 -0
- package/types/generated/InputTags.web.d.ts +5 -0
- package/types/generated/Kbd.d.ts +4 -0
- package/types/generated/Kbd.web.d.ts +4 -0
- package/types/generated/KeyboardAvoiding.mobile.d.ts +2 -0
- package/types/generated/Link.d.ts +2 -0
- package/types/generated/Link.web.d.ts +3 -0
- package/types/generated/ListItem.d.ts +3 -0
- package/types/generated/ListItem.web.d.ts +3 -0
- package/types/generated/Meter.d.ts +3 -0
- package/types/generated/Meter.web.d.ts +3 -0
- package/types/generated/NavLink.d.ts +3 -0
- package/types/generated/NavLink.web.d.ts +3 -0
- package/types/generated/NavigationMenu.d.ts +4 -0
- package/types/generated/NavigationMenu.web.d.ts +5 -0
- package/types/generated/Overlay.d.ts +3 -0
- package/types/generated/Overlay.web.d.ts +3 -0
- package/types/generated/Pagination.d.ts +4 -0
- package/types/generated/Pagination.web.d.ts +5 -0
- package/types/generated/PinInput.d.ts +4 -0
- package/types/generated/PinInput.web.d.ts +4 -0
- package/types/generated/Popover.d.ts +6 -0
- package/types/generated/Popover.web.d.ts +3 -0
- package/types/generated/Pressable.d.ts +6 -0
- package/types/generated/Pressable.web.d.ts +2 -0
- package/types/generated/ProgressGroup.d.ts +3 -0
- package/types/generated/ProgressGroup.web.d.ts +4 -0
- package/types/generated/RadioGroup.d.ts +5 -0
- package/types/generated/RadioGroup.web.d.ts +5 -0
- package/types/generated/RichText.d.ts +7 -0
- package/types/generated/RichText.web.d.ts +3 -0
- package/types/generated/RouteHost.mobile.d.ts +14 -0
- package/types/generated/Row.d.ts +2 -0
- package/types/generated/Row.web.d.ts +2 -0
- package/types/generated/SafeArea.d.ts +2 -0
- package/types/generated/SafeArea.web.d.ts +3 -0
- package/types/generated/Screen.d.ts +3 -0
- package/types/generated/Screen.web.d.ts +3 -0
- package/types/generated/ScrollBox.d.ts +3 -0
- package/types/generated/ScrollBox.web.d.ts +3 -0
- package/types/generated/ScrollView.d.ts +7 -0
- package/types/generated/ScrollView.web.d.ts +6 -0
- package/types/generated/SearchInput.d.ts +7 -0
- package/types/generated/SearchInput.web.d.ts +6 -0
- package/types/generated/SegmentedControl.d.ts +7 -0
- package/types/generated/SegmentedControl.web.d.ts +6 -0
- package/types/generated/Select.d.ts +6 -0
- package/types/generated/Select.web.d.ts +6 -0
- package/types/generated/Separator.d.ts +5 -0
- package/types/generated/Separator.web.d.ts +5 -0
- package/types/generated/Sheet.d.ts +5 -0
- package/types/generated/Sheet.web.d.ts +7 -0
- package/types/generated/Skeleton.d.ts +5 -0
- package/types/generated/Skeleton.web.d.ts +6 -0
- package/types/generated/Slider.d.ts +6 -0
- package/types/generated/Slider.web.d.ts +6 -0
- package/types/generated/Spacer.d.ts +3 -0
- package/types/generated/Spacer.web.d.ts +3 -0
- package/types/generated/Stack.d.ts +3 -0
- package/types/generated/Stack.web.d.ts +3 -0
- package/types/generated/Stepper.d.ts +4 -0
- package/types/generated/Stepper.web.d.ts +5 -0
- package/types/generated/Switch.d.ts +7 -0
- package/types/generated/Switch.web.d.ts +6 -0
- package/types/generated/Table.d.ts +4 -0
- package/types/generated/Table.web.d.ts +5 -0
- package/types/generated/Tabs.d.ts +10 -0
- package/types/generated/Tabs.web.d.ts +6 -0
- package/types/generated/Text.d.ts +2 -0
- package/types/generated/Text.web.d.ts +2 -0
- package/types/generated/TextArea.d.ts +8 -0
- package/types/generated/TextArea.web.d.ts +9 -0
- package/types/generated/TextInput.d.ts +9 -0
- package/types/generated/TextInput.web.d.ts +2 -0
- package/types/generated/Timeline.d.ts +3 -0
- package/types/generated/Timeline.web.d.ts +4 -0
- package/types/generated/Tooltip.d.ts +9 -0
- package/types/generated/Tooltip.web.d.ts +12 -0
- package/types/generated/Tree.d.ts +4 -0
- package/types/generated/Tree.web.d.ts +4 -0
- package/types/generated/User.d.ts +5 -0
- package/types/generated/User.web.d.ts +5 -0
- package/types/generated/View.d.ts +7 -0
- package/types/generated/View.web.d.ts +7 -0
- package/types/generated/VirtualList.d.ts +5 -0
- package/types/generated/VirtualList.web.d.ts +4 -0
- package/types/generated/WebView.d.ts +11 -0
- package/types/generated/WebView.web.d.ts +5 -0
- package/types/generated/aliases.d.ts +7 -0
- package/types/generated/aliases.web.d.ts +7 -0
- package/types/generated/android/BottomNavigationView.android.d.ts +9 -0
- package/types/generated/android/CircularProgressIndicator.android.d.ts +6 -0
- package/types/generated/android/DrawerLayout.android.d.ts +12 -0
- package/types/generated/android/MaterialDialog.android.d.ts +8 -0
- package/types/generated/android/MaterialSwitch.android.d.ts +6 -0
- package/types/generated/android/RecyclerView.android.d.ts +14 -0
- package/types/generated/android/SeekBar.android.d.ts +5 -0
- package/types/generated/android/icon.android.d.ts +5 -0
- package/types/generated/android/index.d.ts +12 -0
- package/types/generated/android/openModal.android.d.ts +4 -0
- package/types/generated/anim.d.ts +10 -0
- package/types/generated/anim.web.d.ts +3 -0
- package/types/generated/apply-native-modifiers.native.d.ts +3 -0
- package/types/generated/child-array.d.ts +3 -0
- package/types/generated/cx.d.ts +6 -0
- package/types/generated/escape-props.d.ts +16 -0
- package/types/generated/icons.d.ts +5 -0
- package/types/generated/index.d.ts +1 -0
- package/types/generated/index.linux.d.ts +5 -0
- package/types/generated/index.mobile.d.ts +4 -0
- package/types/generated/index.shared.d.ts +111 -0
- package/types/generated/index.web.d.ts +111 -0
- package/types/generated/ios/LiquidGlass.ios.d.ts +12 -0
- package/types/generated/ios/LiquidGlassContainer.ios.d.ts +13 -0
- package/types/generated/ios/SideDrawer.ios.d.ts +12 -0
- package/types/generated/ios/UIActivityIndicatorView.ios.d.ts +5 -0
- package/types/generated/ios/UIModal.ios.d.ts +7 -0
- package/types/generated/ios/UISlider.ios.d.ts +5 -0
- package/types/generated/ios/UISwitch.ios.d.ts +6 -0
- package/types/generated/ios/UITabBar.ios.d.ts +7 -0
- package/types/generated/ios/UITableView.ios.d.ts +14 -0
- package/types/generated/ios/icon.ios.d.ts +5 -0
- package/types/generated/ios/index.d.ts +14 -0
- package/types/generated/ios/openModal.ios.d.ts +4 -0
- package/types/generated/keyboard-inset.mobile.d.ts +10 -0
- package/types/generated/layout-child.d.ts +6 -0
- package/types/generated/layout-child.web.d.ts +15 -0
- package/types/generated/meter-math.d.ts +6 -0
- package/types/generated/modal-presenter.mobile.d.ts +14 -0
- package/types/generated/modifier-factories.d.ts +15 -0
- package/types/generated/native/index.d.ts +3 -0
- package/types/generated/pan.d.ts +2 -0
- package/types/generated/pan.web.d.ts +9 -0
- package/types/generated/platform.d.ts +7 -0
- package/types/generated/platform.web.d.ts +6 -0
- package/types/generated/platformProps.d.ts +7 -0
- package/types/generated/platformProps.web.d.ts +2 -0
- package/types/generated/popover-position.d.ts +14 -0
- package/types/{props.d.ts → generated/props.d.ts} +127 -133
- package/types/generated/refresh-metrics.d.ts +8 -0
- package/types/generated/refresh.d.ts +42 -0
- package/types/generated/refresh.web.d.ts +23 -0
- package/types/generated/root-layout.mobile.d.ts +22 -0
- package/types/generated/route-host.mobile.d.ts +1 -0
- package/types/generated/route-table.d.ts +90 -0
- package/types/generated/route.d.ts +74 -0
- package/types/generated/route.web.d.ts +67 -0
- package/types/generated/safeAreaInsets.d.ts +8 -0
- package/types/generated/safeAreaInsets.web.d.ts +8 -0
- package/types/generated/sheet-detents.d.ts +23 -0
- package/types/generated/sheet-detents.web.d.ts +13 -0
- package/types/generated/sheet-service.d.ts +11 -0
- package/types/generated/sheet-service.web.d.ts +6 -0
- package/types/generated/sheet-snap.d.ts +18 -0
- package/types/generated/stacks.d.ts +9 -0
- package/types/generated/stacks.web.d.ts +4 -0
- package/types/generated/store.d.ts +14 -0
- package/types/generated/styled.d.ts +20 -0
- package/types/generated/styled.web.d.ts +10 -0
- package/types/generated/svg.mobile.d.ts +23 -0
- package/types/generated/tap-to-blur.mobile.d.ts +16 -0
- package/types/generated/text-write.d.ts +9 -0
- package/types/generated/theme/colorScheme.d.ts +6 -0
- package/types/generated/theme/colorScheme.linux.d.ts +5 -0
- package/types/generated/theme/colorScheme.web.d.ts +5 -0
- package/types/generated/theme/status-bar-scheme.mobile.d.ts +1 -0
- package/types/generated/theme/theme-scheme.d.ts +20 -0
- package/types/generated/toast-anchor.d.ts +4 -0
- package/types/generated/toast-anchor.web.d.ts +4 -0
- package/types/generated/transform.web.d.ts +8 -0
- package/types/generated/translate.d.ts +5 -0
- package/types/generated/translate.web.d.ts +6 -0
- package/types/generated/use-back.d.ts +6 -0
- package/types/generated/use-back.web.d.ts +7 -0
- package/types/generated/use-store.d.ts +9 -0
- package/types/generated/use-store.web.d.ts +9 -0
- package/types/generated/useMeasure.d.ts +3 -0
- package/types/generated/useMeasure.web.d.ts +3 -0
- package/types/generated/vendor/ui-svg/index.common.d.ts +7 -0
- package/types/generated/vendor/ui-svg/index.d.ts +1 -0
- package/types/generated/vendor/ui-svg/index.ios.d.ts +13 -0
- package/types/generated/virtual-list-layout.d.ts +44 -0
- package/types/generated/web/index.d.ts +3 -0
- package/types/generated/windows.d.ts +3 -0
- package/types/generated/windows.linux.d.ts +15 -0
- package/types/generated/windows.web.d.ts +3 -0
- package/types/index.macos.d.ts +142 -0
- package/dist/native/CameraView.native.tsrx.js +0 -165
- package/dist/native/Meter.native.tsrx.js +0 -92
- package/dist/native/Pager.native.tsrx.js +0 -282
- package/dist/native/Video.native.tsrx.js +0 -248
- package/dist/native/camera-permission.native.js +0 -47
- package/dist/native/safeAreaInsets.native.tsrx.js +0 -35
- package/dist/native/video-chrome.native.tsrx.js +0 -365
- package/dist/web/CameraView.web.tsrx.js +0 -310
- package/dist/web/Pager.web.tsrx.js +0 -337
- package/dist/web/Video.web.tsrx.js +0 -400
- package/dist/web/video-chrome.web.tsrx.js +0 -207
- package/types/android.d.ts +0 -53
- package/types/index.d.ts +0 -273
- package/types/index.native.d.ts +0 -273
- package/types/index.web.d.ts +0 -272
- package/types/ios.d.ts +0 -59
- package/types/native.d.ts +0 -5
- package/types/web.d.ts +0 -17
package/src/props.ts
ADDED
|
@@ -0,0 +1,1812 @@
|
|
|
1
|
+
/** Shared prop/type contract — the single source of truth for the public
|
|
2
|
+
* API surface. Platform leaves import these types so prop shapes cannot
|
|
3
|
+
* drift across .web/native-default, and `tsrx-typegen` emits the package's
|
|
4
|
+
* declarations from its public entrypoints and component leaves. No imports
|
|
5
|
+
* here: the shared contracts stay dependency-free and platform-agnostic. */
|
|
6
|
+
|
|
7
|
+
// ---------- gestures ----------
|
|
8
|
+
|
|
9
|
+
export interface PanEvent {
|
|
10
|
+
x: number
|
|
11
|
+
y: number
|
|
12
|
+
dx: number
|
|
13
|
+
dy: number
|
|
14
|
+
vx: number
|
|
15
|
+
vy: number
|
|
16
|
+
state: string
|
|
17
|
+
target: any
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface SwipeEvent {
|
|
21
|
+
direction: number
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** Public shape of `setTranslate` — the imperative translate write on a
|
|
25
|
+
* bound view (a leaf's `bind` target). Web composes into the element's
|
|
26
|
+
* `transform`; native sets the view's translateX/translateY props.
|
|
27
|
+
* Both axes default to 0, so `setTranslate(el)` resets. */
|
|
28
|
+
export type SetTranslate = (el: any, x?: number, y?: number) => void
|
|
29
|
+
|
|
30
|
+
// ---------- primitives ----------
|
|
31
|
+
|
|
32
|
+
/** Metadata read by parent layouts. Native forwards NativeScript attached
|
|
33
|
+
* attributes; web folds the CSS equivalents into the child's style. */
|
|
34
|
+
export interface LayoutChildProps {
|
|
35
|
+
row?: number
|
|
36
|
+
col?: number
|
|
37
|
+
rowSpan?: number
|
|
38
|
+
colSpan?: number
|
|
39
|
+
dock?: 'left' | 'top' | 'right' | 'bottom'
|
|
40
|
+
left?: number
|
|
41
|
+
top?: number
|
|
42
|
+
flexGrow?: number
|
|
43
|
+
flexShrink?: number
|
|
44
|
+
alignSelf?: string
|
|
45
|
+
order?: number
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** JSON-compatible modifier data accepted by the platform-authentic widgets. */
|
|
49
|
+
export type NativeModifierValue =
|
|
50
|
+
| string
|
|
51
|
+
| number
|
|
52
|
+
| boolean
|
|
53
|
+
| null
|
|
54
|
+
| readonly NativeModifierValue[]
|
|
55
|
+
| { readonly [key: string]: NativeModifierValue }
|
|
56
|
+
|
|
57
|
+
/** A serializable change to a NativeScript view's style or native property.
|
|
58
|
+
* Platform-specific UI subpaths apply modifier arrays after shared props and
|
|
59
|
+
* the matching `ios`/`android` escape bag. */
|
|
60
|
+
export type NativeModifier =
|
|
61
|
+
| { type: 'style'; values: Record<string, NativeModifierValue | undefined> }
|
|
62
|
+
| { type: 'property'; name: string; value: NativeModifierValue }
|
|
63
|
+
|
|
64
|
+
/** Adds the native-only modifier escape hatch to an OS-backed widget's props. */
|
|
65
|
+
export type PlatformWidgetProps<Props> = Props & {
|
|
66
|
+
modifiers?: readonly NativeModifier[]
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** Native glyph names for the OS-authentic UI subpaths. */
|
|
70
|
+
export interface PlatformIconChoice {
|
|
71
|
+
ios: string
|
|
72
|
+
android: string
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** Flex-container props shared by View/Row/Pressable — RN vocabulary, applied
|
|
76
|
+
* to the host flexboxlayout natively and the element's style on web.
|
|
77
|
+
* `gap` is a dip number (px on web); NS supports it on FlexboxLayout only
|
|
78
|
+
* (GridLayout has no gap). */
|
|
79
|
+
export interface FlexContainerProps {
|
|
80
|
+
justifyContent?: 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly'
|
|
81
|
+
alignItems?: 'start' | 'center' | 'end' | 'stretch' | 'baseline'
|
|
82
|
+
flexWrap?: boolean | 'wrap' | 'nowrap' | 'wrap-reverse'
|
|
83
|
+
gap?: number | string
|
|
84
|
+
rowGap?: number | string
|
|
85
|
+
columnGap?: number | string
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** Liquid Glass material config. Native maps it to `iosGlassEffect`
|
|
89
|
+
* (iOS 26+; inert on Android and older iOS), web to the `vx-glass`
|
|
90
|
+
* backdrop-filter approximation. `variant:'clear'` is the faint,
|
|
91
|
+
* mostly-transparent glass; `'regular'` is Apple's default. */
|
|
92
|
+
export interface GlassConfig {
|
|
93
|
+
variant?: 'regular' | 'clear' | 'identity' | 'none'
|
|
94
|
+
/** Touch-tracking highlight — only meaningful on <LiquidGlass>; the
|
|
95
|
+
* per-view glass applied by `glass` never receives touches upstream. */
|
|
96
|
+
interactive?: boolean
|
|
97
|
+
tint?: string
|
|
98
|
+
/** (LiquidGlassContainer only) merge distance between glass siblings. */
|
|
99
|
+
spacing?: number
|
|
100
|
+
/** Effect-change animation in ms (default 300). */
|
|
101
|
+
animateChangeDuration?: number
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export interface GridProps extends AccessibilityProps {
|
|
105
|
+
className?: any
|
|
106
|
+
style?: any
|
|
107
|
+
children?: any
|
|
108
|
+
rows?: string
|
|
109
|
+
columns?: string
|
|
110
|
+
ios?: Record<string, any>
|
|
111
|
+
android?: Record<string, any>
|
|
112
|
+
web?: Record<string, any>
|
|
113
|
+
id?: string
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export interface StackProps extends AccessibilityProps {
|
|
117
|
+
className?: any
|
|
118
|
+
style?: any
|
|
119
|
+
children?: any
|
|
120
|
+
ios?: Record<string, any>
|
|
121
|
+
android?: Record<string, any>
|
|
122
|
+
web?: Record<string, any>
|
|
123
|
+
id?: string
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export interface AbsoluteProps extends AccessibilityProps {
|
|
127
|
+
className?: any
|
|
128
|
+
style?: any
|
|
129
|
+
children?: any
|
|
130
|
+
ios?: Record<string, any>
|
|
131
|
+
android?: Record<string, any>
|
|
132
|
+
web?: Record<string, any>
|
|
133
|
+
id?: string
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/** Interactive glass surface — the element root IS the platform's glass
|
|
137
|
+
* effect view (NS `LiquidGlass`, a UIVisualEffectView hosting children).
|
|
138
|
+
* Real material on iOS 26+; inert layout on Android and older iOS;
|
|
139
|
+
* backdrop-filter approximation on web. */
|
|
140
|
+
export interface LiquidGlassProps extends LayoutChildProps {
|
|
141
|
+
className?: any
|
|
142
|
+
style?: any
|
|
143
|
+
children?: any
|
|
144
|
+
id?: string
|
|
145
|
+
variant?: 'regular' | 'clear'
|
|
146
|
+
interactive?: boolean
|
|
147
|
+
tint?: string
|
|
148
|
+
animateChangeDuration?: number
|
|
149
|
+
ios?: Record<string, any>
|
|
150
|
+
android?: Record<string, any>
|
|
151
|
+
web?: Record<string, any>
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/** Merged-glass region — sibling glass elements inside morph together
|
|
155
|
+
* across `spacing` dips (NS `LiquidGlassContainer`, an AbsoluteLayout:
|
|
156
|
+
* children position via left/top). */
|
|
157
|
+
export interface LiquidGlassContainerProps extends LayoutChildProps {
|
|
158
|
+
className?: any
|
|
159
|
+
style?: any
|
|
160
|
+
children?: any
|
|
161
|
+
id?: string
|
|
162
|
+
spacing?: number
|
|
163
|
+
ios?: Record<string, any>
|
|
164
|
+
android?: Record<string, any>
|
|
165
|
+
web?: Record<string, any>
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export interface SpacerProps {
|
|
169
|
+
className?: any
|
|
170
|
+
style?: any
|
|
171
|
+
ios?: Record<string, any>
|
|
172
|
+
android?: Record<string, any>
|
|
173
|
+
web?: Record<string, any>
|
|
174
|
+
id?: string
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/** The shared accessibility prop set — `Role` and friends are declared
|
|
178
|
+
* below; containers and leaf components carry the same names so ARIA on
|
|
179
|
+
* web and NativeScript's accessibility properties stay aligned. */
|
|
180
|
+
export interface AccessibilityProps {
|
|
181
|
+
accessible?: boolean
|
|
182
|
+
accessibilityLabel?: string
|
|
183
|
+
accessibilityRole?: Role
|
|
184
|
+
accessibilityHint?: string
|
|
185
|
+
accessibilityValue?: string
|
|
186
|
+
accessibilityState?: {
|
|
187
|
+
disabled?: boolean
|
|
188
|
+
selected?: boolean
|
|
189
|
+
checked?: boolean
|
|
190
|
+
}
|
|
191
|
+
accessibilityLiveRegion?: 'none' | 'polite' | 'assertive'
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
export interface ViewProps extends LayoutChildProps, FlexContainerProps, AccessibilityProps {
|
|
195
|
+
className?: any
|
|
196
|
+
style?: any
|
|
197
|
+
children?: any
|
|
198
|
+
id?: string
|
|
199
|
+
/** `ref` is runtime-reserved on component elements — leaves expose
|
|
200
|
+
* `bind` to reach the native/DOM node. */
|
|
201
|
+
bind?: (el: any) => void
|
|
202
|
+
onPan?: (e: PanEvent) => void
|
|
203
|
+
onSwipe?: (e: SwipeEvent) => void
|
|
204
|
+
/** Platform-specific properties are applied after shared props. */
|
|
205
|
+
ios?: any
|
|
206
|
+
android?: any
|
|
207
|
+
web?: any
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
export interface RowProps extends LayoutChildProps, FlexContainerProps, AccessibilityProps {
|
|
211
|
+
className?: any
|
|
212
|
+
style?: any
|
|
213
|
+
children?: any
|
|
214
|
+
id?: string
|
|
215
|
+
/** `ref` is runtime-reserved on component elements — leaves expose
|
|
216
|
+
* `bind` to reach the native/DOM node. */
|
|
217
|
+
bind?: (el: any) => void
|
|
218
|
+
onPan?: (e: PanEvent) => void
|
|
219
|
+
onSwipe?: (e: SwipeEvent) => void
|
|
220
|
+
/** Platform-specific properties are applied after shared props. */
|
|
221
|
+
ios?: any
|
|
222
|
+
android?: any
|
|
223
|
+
web?: any
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/** Shared accessibility roles. The native leaf maps the ARIA spellings that
|
|
227
|
+
* NativeScript names differently (for example `heading` → `header`). */
|
|
228
|
+
export type Role =
|
|
229
|
+
| 'button'
|
|
230
|
+
| 'link'
|
|
231
|
+
| 'search'
|
|
232
|
+
| 'image'
|
|
233
|
+
| 'heading'
|
|
234
|
+
| 'adjustable'
|
|
235
|
+
| 'summary'
|
|
236
|
+
| 'text'
|
|
237
|
+
| 'none'
|
|
238
|
+
| 'progressbar'
|
|
239
|
+
| 'checkbox'
|
|
240
|
+
| 'switch'
|
|
241
|
+
| 'radio'
|
|
242
|
+
| 'spinbutton'
|
|
243
|
+
| 'tab'
|
|
244
|
+
|
|
245
|
+
export interface TextProps extends LayoutChildProps {
|
|
246
|
+
className?: any
|
|
247
|
+
style?: any
|
|
248
|
+
children?: any
|
|
249
|
+
id?: string
|
|
250
|
+
numberOfLines?: number
|
|
251
|
+
ellipsize?: boolean
|
|
252
|
+
accessible?: boolean
|
|
253
|
+
accessibilityLabel?: string
|
|
254
|
+
accessibilityRole?: Role
|
|
255
|
+
accessibilityHint?: string
|
|
256
|
+
accessibilityValue?: string
|
|
257
|
+
accessibilityState?: {
|
|
258
|
+
disabled?: boolean
|
|
259
|
+
selected?: boolean
|
|
260
|
+
checked?: boolean
|
|
261
|
+
}
|
|
262
|
+
accessibilityLiveRegion?: 'none' | 'polite' | 'assertive'
|
|
263
|
+
/** Platform-specific properties are applied after shared props. */
|
|
264
|
+
ios?: any
|
|
265
|
+
android?: any
|
|
266
|
+
web?: any
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/** Inline rich text container. Children should be RichTextSpan components so
|
|
270
|
+
* the native leaf can preserve each run as a NativeScript Span. */
|
|
271
|
+
export interface RichTextProps extends LayoutChildProps {
|
|
272
|
+
className?: any
|
|
273
|
+
style?: any
|
|
274
|
+
children?: any
|
|
275
|
+
id?: string
|
|
276
|
+
/** Platform-specific properties are applied after shared props. */
|
|
277
|
+
ios?: any
|
|
278
|
+
android?: any
|
|
279
|
+
web?: any
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/** One styled or tappable inline run inside RichText. `text` is an explicit
|
|
283
|
+
* native-safe escape hatch; a single string child is also accepted. */
|
|
284
|
+
export interface RichTextSpanProps {
|
|
285
|
+
className?: any
|
|
286
|
+
style?: any
|
|
287
|
+
children?: any
|
|
288
|
+
text?: string
|
|
289
|
+
onPress?: () => void
|
|
290
|
+
/** Platform-specific properties are applied after shared props. */
|
|
291
|
+
ios?: any
|
|
292
|
+
android?: any
|
|
293
|
+
web?: any
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
export interface PressableProps extends LayoutChildProps, FlexContainerProps {
|
|
297
|
+
className?: any
|
|
298
|
+
style?: any
|
|
299
|
+
children?: any
|
|
300
|
+
id?: string
|
|
301
|
+
disabled?: boolean
|
|
302
|
+
/** `ref` is runtime-reserved on component elements — leaves expose
|
|
303
|
+
* `bind` to reach the native/DOM node. */
|
|
304
|
+
bind?: (el: any) => void
|
|
305
|
+
onPan?: (e: PanEvent) => void
|
|
306
|
+
onSwipe?: (e: SwipeEvent) => void
|
|
307
|
+
onPress?: () => void
|
|
308
|
+
/** ~500ms press-and-hold (web: timer over pointerdown/up). */
|
|
309
|
+
onLongPress?: () => void
|
|
310
|
+
accessible?: boolean
|
|
311
|
+
accessibilityLabel?: string
|
|
312
|
+
accessibilityRole?: Role
|
|
313
|
+
onPressIn?: () => void
|
|
314
|
+
onPressOut?: () => void
|
|
315
|
+
onDoublePress?: () => void
|
|
316
|
+
hitSlop?: number
|
|
317
|
+
accessibilityHint?: string
|
|
318
|
+
accessibilityValue?: string
|
|
319
|
+
accessibilityState?: {
|
|
320
|
+
disabled?: boolean
|
|
321
|
+
selected?: boolean
|
|
322
|
+
checked?: boolean
|
|
323
|
+
}
|
|
324
|
+
accessibilityLiveRegion?: 'none' | 'polite' | 'assertive'
|
|
325
|
+
/** Platform-specific properties are applied after shared props. */
|
|
326
|
+
ios?: any
|
|
327
|
+
android?: any
|
|
328
|
+
web?: any
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
export interface TextInputHandle {
|
|
332
|
+
focus(): void
|
|
333
|
+
blur(): void
|
|
334
|
+
native: any
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
export interface TextInputProps {
|
|
338
|
+
className?: any
|
|
339
|
+
style?: any
|
|
340
|
+
id?: string
|
|
341
|
+
value?: string
|
|
342
|
+
placeholder?: string
|
|
343
|
+
onChange?: (value: string) => void
|
|
344
|
+
bind?: (h: TextInputHandle) => void
|
|
345
|
+
secure?: boolean
|
|
346
|
+
keyboardType?: 'default' | 'email' | 'number' | 'decimal' | 'phone' | 'url'
|
|
347
|
+
returnKeyType?: 'done' | 'next' | 'go' | 'search' | 'send'
|
|
348
|
+
onSubmit?: () => void
|
|
349
|
+
onFocus?: () => void
|
|
350
|
+
onBlur?: () => void
|
|
351
|
+
editable?: boolean
|
|
352
|
+
placeholderTextColor?: string
|
|
353
|
+
/** Platform-specific properties are applied after shared props. */
|
|
354
|
+
ios?: any
|
|
355
|
+
android?: any
|
|
356
|
+
web?: any
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
export interface TextAreaProps extends TextInputProps {
|
|
360
|
+
/** Submit on native only when `returnKeyType` is `done` or `send`; other
|
|
361
|
+
* returns insert newlines because TextView emits returnPress per newline.
|
|
362
|
+
* Web submits on Cmd/Ctrl+Enter. */
|
|
363
|
+
/** Height in text rows. Web: the `rows` attr (fixed box); native:
|
|
364
|
+
* minHeight at the widget's measured line height. With `autoGrow` it
|
|
365
|
+
* becomes the starting height instead of a fixed one. */
|
|
366
|
+
rows?: number
|
|
367
|
+
/** Grow to fit content, capped by `maxRows`. Native TextView grows by
|
|
368
|
+
* default — this prop exists so web (<textarea> is fixed-rows) matches;
|
|
369
|
+
* without it, native gets a fixed `rows`-high box like web. */
|
|
370
|
+
autoGrow?: boolean
|
|
371
|
+
/** Growth cap in rows — past it the field scrolls internally. Native:
|
|
372
|
+
* maxHeight at measured line height (TextView's own `maxLines` only
|
|
373
|
+
* sets truncation on iOS — not a cap). */
|
|
374
|
+
maxRows?: number
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/** Chrome-reset search field — TextInput with a leading glyph and a clear
|
|
378
|
+
* affordance, normalized: the web leaf is `<input type="search">` with the
|
|
379
|
+
* engine's own clear button hidden (the leaf draws the same one native
|
|
380
|
+
* gets), the native leaf is a styled TextField with `returnKeyType`
|
|
381
|
+
* `'search'`. Not UISearchBar — OS search chrome is deliberately absent. */
|
|
382
|
+
export interface SearchInputProps {
|
|
383
|
+
className?: any
|
|
384
|
+
style?: any
|
|
385
|
+
id?: string
|
|
386
|
+
/** Controlled text — pair with `onChange`. */
|
|
387
|
+
value?: string
|
|
388
|
+
/** Initial text for uncontrolled use. */
|
|
389
|
+
defaultValue?: string
|
|
390
|
+
onChange?: (value: string) => void
|
|
391
|
+
/** Enter on web, the keyboard's `search` return key on native. */
|
|
392
|
+
onSubmit?: () => void
|
|
393
|
+
/** The clear button tapped — fires after `onChange('')`. */
|
|
394
|
+
onClear?: () => void
|
|
395
|
+
onFocus?: () => void
|
|
396
|
+
onBlur?: () => void
|
|
397
|
+
placeholder?: string
|
|
398
|
+
editable?: boolean
|
|
399
|
+
/** Leading glyph — a registered icon name. Defaults to the built-in
|
|
400
|
+
* `'xplat-search'` glyph; `false` renders no glyph. */
|
|
401
|
+
icon?: string | false
|
|
402
|
+
bind?: (h: TextInputHandle) => void
|
|
403
|
+
accessibilityLabel?: string
|
|
404
|
+
/** Platform-specific properties are applied after shared props. */
|
|
405
|
+
ios?: any
|
|
406
|
+
android?: any
|
|
407
|
+
web?: any
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/** Pull-to-refresh contract — shared by `ScrollView` and the platform
|
|
411
|
+
* lists (`UITableView`/`RecyclerView`). The indicator is self-drawn (the
|
|
412
|
+
* `vx-spinner` ring), not the OS spinner, so the affordance is the same
|
|
413
|
+
* pixels on every target. The pull gesture is enabled by `onRefresh`;
|
|
414
|
+
* `refreshing` is controlled — set it true while reloading to keep the
|
|
415
|
+
* indicator docked, false to collapse it. */
|
|
416
|
+
export interface RefreshProps {
|
|
417
|
+
/** True while a refresh is in flight — docks the indicator strip above
|
|
418
|
+
* the content. Read-only after the initial pull: the app owns it. */
|
|
419
|
+
refreshing?: boolean
|
|
420
|
+
/** Enables the pull gesture; fires when the user pulls past
|
|
421
|
+
* `refreshThreshold` and releases. */
|
|
422
|
+
onRefresh?: () => void
|
|
423
|
+
/** Pull distance past the top edge (px on web, dip on native) whose
|
|
424
|
+
* release fires `onRefresh`. Defaults to the indicator strip height
|
|
425
|
+
* (64). */
|
|
426
|
+
refreshThreshold?: number
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
export interface ListProps extends RefreshProps {
|
|
430
|
+
className?: any
|
|
431
|
+
style?: any
|
|
432
|
+
id?: string
|
|
433
|
+
items: any[]
|
|
434
|
+
renderItem: (item: any, index: number) => any
|
|
435
|
+
renderEmpty?: () => any
|
|
436
|
+
/** iOS row-height estimate (UITableView only). */
|
|
437
|
+
estimatedItemHeight?: number
|
|
438
|
+
/** Called when the list approaches its end. */
|
|
439
|
+
onEndReached?: () => void
|
|
440
|
+
/** Platform escape hatches, applied after the shared props. */
|
|
441
|
+
ios?: Record<string, any>
|
|
442
|
+
android?: Record<string, any>
|
|
443
|
+
web?: Record<string, any>
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
export interface ScrollViewProps extends LayoutChildProps, AccessibilityProps, RefreshProps {
|
|
447
|
+
className?: any
|
|
448
|
+
style?: any
|
|
449
|
+
id?: string
|
|
450
|
+
horizontal?: boolean
|
|
451
|
+
children?: any
|
|
452
|
+
/** Platform-specific properties are applied after shared props. */
|
|
453
|
+
ios?: any
|
|
454
|
+
android?: any
|
|
455
|
+
web?: any
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
/** Shared virtualized vertical list. Item keys must be unique and stable
|
|
459
|
+
* across inserts and reorders. Rows outside the rendered window unmount;
|
|
460
|
+
* keep durable row state keyed by item identity outside the row component. */
|
|
461
|
+
export interface VirtualListProps<T = any> extends LayoutChildProps, AccessibilityProps {
|
|
462
|
+
className?: any
|
|
463
|
+
style?: any
|
|
464
|
+
id?: string
|
|
465
|
+
items: readonly T[]
|
|
466
|
+
keyExtractor: (item: T, index: number) => string | number
|
|
467
|
+
getItemType?: (item: T, index: number) => string | number
|
|
468
|
+
renderItem: (item: T, index: number) => any
|
|
469
|
+
renderEmpty?: () => any
|
|
470
|
+
renderHeader?: () => any
|
|
471
|
+
renderFooter?: () => any
|
|
472
|
+
renderSeparator?: () => any
|
|
473
|
+
/** Platform-specific properties are applied after shared props. */
|
|
474
|
+
ios?: Record<string, any>
|
|
475
|
+
android?: Record<string, any>
|
|
476
|
+
web?: Record<string, any>
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
/** Scrollable ordinary content on web. Native is an inline flex container so
|
|
480
|
+
* a child ListView can own the scrolling without nesting recycling views in a
|
|
481
|
+
* native ScrollView. */
|
|
482
|
+
export interface ScrollBoxProps extends LayoutChildProps, AccessibilityProps {
|
|
483
|
+
className?: any
|
|
484
|
+
style?: any
|
|
485
|
+
id?: string
|
|
486
|
+
children?: any
|
|
487
|
+
/** Platform-specific properties are applied after the shared props. */
|
|
488
|
+
ios?: any
|
|
489
|
+
android?: any
|
|
490
|
+
web?: any
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
export interface WebViewHandle {
|
|
494
|
+
/** Re-request the current document. */
|
|
495
|
+
reload(): void
|
|
496
|
+
/** Frame-local history navigation. */
|
|
497
|
+
goBack(): void
|
|
498
|
+
goForward(): void
|
|
499
|
+
stopLoading(): void
|
|
500
|
+
/** The platform view (`HTMLIFrameElement` / NS `WebView`). */
|
|
501
|
+
native: any
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
export interface WebViewLoadEvent {
|
|
505
|
+
/** The loaded document URL when the platform reports one — absent for
|
|
506
|
+
* `html` documents. */
|
|
507
|
+
url?: string
|
|
508
|
+
/** Failure description; present only on the `onError` path. */
|
|
509
|
+
error?: string
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
export interface WebViewContentSize {
|
|
513
|
+
width: number
|
|
514
|
+
height: number
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
/** Embedded web document — chrome-reset bucket: web renders a sandboxed
|
|
518
|
+
* `<iframe>`, native renders the OS web view (`webview` → WKWebView /
|
|
519
|
+
* android.webkit.WebView). The *frame* is normalized; the document's
|
|
520
|
+
* pixels belong to each platform's engine, same as TextInput's IME.
|
|
521
|
+
* No JS bridge: iframe `postMessage`, WKScriptMessageHandler, and
|
|
522
|
+
* `addJavascriptInterface` have different page-side contracts, so a
|
|
523
|
+
* shared one would be fake parity — reach it through the escape bags. */
|
|
524
|
+
export interface WebViewProps extends LayoutChildProps, AccessibilityProps {
|
|
525
|
+
className?: any
|
|
526
|
+
style?: any
|
|
527
|
+
id?: string
|
|
528
|
+
/** Remote document URL. Native also accepts `~/` bundle paths and
|
|
529
|
+
* absolute file paths (NS `src` grammar). */
|
|
530
|
+
src?: string
|
|
531
|
+
/** Inline HTML document — web `srcdoc`; native loads it through the
|
|
532
|
+
* `src` property's data path (`loadHTMLString`/`loadDataWithBaseURL`).
|
|
533
|
+
* Takes precedence over `src` when both are set. Treated as trusted
|
|
534
|
+
* content — the default web sandbox keeps `allow-same-origin`, so a
|
|
535
|
+
* srcdoc document can reach the embedding page. */
|
|
536
|
+
html?: string
|
|
537
|
+
/** After each successful document load (web `load`; native
|
|
538
|
+
* `loadFinished` without an error). */
|
|
539
|
+
onLoad?: (e: WebViewLoadEvent) => void
|
|
540
|
+
/** Report the embedded document's measured size when the platform can read
|
|
541
|
+
* it. Cross-origin browser frames cannot be inspected. */
|
|
542
|
+
onLayoutContent?: (size: WebViewContentSize) => void
|
|
543
|
+
/** Resize the host to the embedded document's measured height. Browser
|
|
544
|
+
* frames must be same-origin; native measurement is best-effort. */
|
|
545
|
+
matchContents?: boolean
|
|
546
|
+
/** On load failure. Native reports the NS `loadFinished` error string;
|
|
547
|
+
* web maps the iframe `error` event, which does not fire reliably
|
|
548
|
+
* cross-browser — treat as best-effort there. */
|
|
549
|
+
onError?: (e: WebViewLoadEvent) => void
|
|
550
|
+
/** Default true. `false` freezes inner scrolling: web writes
|
|
551
|
+
* `scrolling="no"`, iOS clears the WKWebView scrollView's
|
|
552
|
+
* `scrollEnabled`, Android eats move touch events on the view (link
|
|
553
|
+
* taps still pass; drag text selection inside the frame is lost). */
|
|
554
|
+
scrollEnabled?: boolean
|
|
555
|
+
/** Web only — the iframe `sandbox` token list. Defaults to
|
|
556
|
+
* `'allow-scripts allow-same-origin allow-forms allow-modals'`: the
|
|
557
|
+
* capabilities NS WebView content already has, while top navigation,
|
|
558
|
+
* popups, and downloads stay contained. Pass a token list to tighten,
|
|
559
|
+
* `false` for no sandbox attribute. Ignored on native — the OS web
|
|
560
|
+
* views are already isolated processes. */
|
|
561
|
+
sandbox?: string | false
|
|
562
|
+
/** Imperative handle — reload/back/forward/stop plus `native` for
|
|
563
|
+
* anything the shared props don't cover. */
|
|
564
|
+
bind?: (h: WebViewHandle) => void
|
|
565
|
+
/** Platform-specific properties are applied after shared props. */
|
|
566
|
+
ios?: any
|
|
567
|
+
android?: any
|
|
568
|
+
web?: any
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
export interface ImageProps extends LayoutChildProps {
|
|
572
|
+
className?: any
|
|
573
|
+
style?: any
|
|
574
|
+
id?: string
|
|
575
|
+
src: string
|
|
576
|
+
alt?: string
|
|
577
|
+
/** Platform-specific properties are applied after shared props. */
|
|
578
|
+
ios?: any
|
|
579
|
+
android?: any
|
|
580
|
+
web?: any
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
export interface ScreenProps {
|
|
584
|
+
className?: any
|
|
585
|
+
style?: any
|
|
586
|
+
children?: any
|
|
587
|
+
/** Platform-specific properties are applied after shared props. */
|
|
588
|
+
ios?: any
|
|
589
|
+
android?: any
|
|
590
|
+
web?: any
|
|
591
|
+
id?: string
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
// ---------- device seams ----------
|
|
595
|
+
|
|
596
|
+
export interface SafeAreaProps {
|
|
597
|
+
className?: any
|
|
598
|
+
style?: any
|
|
599
|
+
children?: any
|
|
600
|
+
/** Do not inset the child away from the system's safe area. */
|
|
601
|
+
ignoreSafeArea?: boolean
|
|
602
|
+
/** NativeScript props applied to the host after shared props. */
|
|
603
|
+
ios?: Record<string, any>
|
|
604
|
+
android?: Record<string, any>
|
|
605
|
+
web?: Record<string, any>
|
|
606
|
+
id?: string
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
export interface KeyboardAvoidingProps {
|
|
610
|
+
className?: any
|
|
611
|
+
style?: any
|
|
612
|
+
children?: any
|
|
613
|
+
ios?: Record<string, any>
|
|
614
|
+
android?: Record<string, any>
|
|
615
|
+
web?: Record<string, any>
|
|
616
|
+
id?: string
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
export interface DrawerProps {
|
|
620
|
+
className?: any
|
|
621
|
+
style?: any
|
|
622
|
+
id?: string
|
|
623
|
+
main?: any
|
|
624
|
+
drawer?: any
|
|
625
|
+
open?: boolean
|
|
626
|
+
/** Backdrop tap — the self-drawn leaf fires it on both platforms. */
|
|
627
|
+
onDismiss?: () => void
|
|
628
|
+
ios?: Record<string, any>
|
|
629
|
+
android?: Record<string, any>
|
|
630
|
+
web?: Record<string, any>
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
export interface SwitchProps {
|
|
634
|
+
className?: any
|
|
635
|
+
style?: any
|
|
636
|
+
id?: string
|
|
637
|
+
checked?: boolean
|
|
638
|
+
onCheckedChange?: (checked: boolean) => void
|
|
639
|
+
/** Platform-specific properties are applied after shared props. */
|
|
640
|
+
ios?: any
|
|
641
|
+
android?: any
|
|
642
|
+
web?: any
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
export interface ActivityIndicatorProps {
|
|
646
|
+
className?: any
|
|
647
|
+
style?: any
|
|
648
|
+
id?: string
|
|
649
|
+
busy?: boolean
|
|
650
|
+
ios?: Record<string, any>
|
|
651
|
+
android?: Record<string, any>
|
|
652
|
+
web?: Record<string, any>
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
export interface MeterProps {
|
|
656
|
+
className?: any
|
|
657
|
+
style?: any
|
|
658
|
+
id?: string
|
|
659
|
+
children?: any
|
|
660
|
+
value: number
|
|
661
|
+
max?: number
|
|
662
|
+
size?: number
|
|
663
|
+
strokeWidth?: number
|
|
664
|
+
color?: string
|
|
665
|
+
trackColor?: string
|
|
666
|
+
accessibilityLabel?: string
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
export interface SliderProps {
|
|
670
|
+
className?: any
|
|
671
|
+
style?: any
|
|
672
|
+
id?: string
|
|
673
|
+
value: number
|
|
674
|
+
minValue?: number
|
|
675
|
+
maxValue?: number
|
|
676
|
+
disabled?: boolean
|
|
677
|
+
onValueChange?: (value: number) => void
|
|
678
|
+
ios?: Record<string, any>
|
|
679
|
+
android?: Record<string, any>
|
|
680
|
+
web?: Record<string, any>
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
export interface IconProps {
|
|
684
|
+
className?: any
|
|
685
|
+
id?: string
|
|
686
|
+
name: string
|
|
687
|
+
size?: number
|
|
688
|
+
color?: string
|
|
689
|
+
ios?: Record<string, any>
|
|
690
|
+
android?: Record<string, any>
|
|
691
|
+
web?: Record<string, any>
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
/** One registered icon representation. `svg` contains path `d` data;
|
|
695
|
+
* `markup` is full inner-SVG markup (groups, transforms, several paths)
|
|
696
|
+
* rendered inside an `<svg viewBox>` shell on web and through `svgview`
|
|
697
|
+
* (ui-svg) on native. `font`, `src`, and `text` are fallback
|
|
698
|
+
* representations, in that order after SVG. `src` may be a raster source or
|
|
699
|
+
* an SVG source; SVG is auto-detected for inline markup, SVG data URIs, and
|
|
700
|
+
* `.svg` paths/URLs. Opaque resource names need `markup`/`svg` when their
|
|
701
|
+
* format cannot be inferred from the string. */
|
|
702
|
+
export interface IconGlyph {
|
|
703
|
+
svg?: string
|
|
704
|
+
markup?: string
|
|
705
|
+
viewBox?: string
|
|
706
|
+
text?: string
|
|
707
|
+
font?: { family: string; glyph: string }
|
|
708
|
+
src?: string
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
export interface HeadingProps {
|
|
712
|
+
className?: any
|
|
713
|
+
style?: any
|
|
714
|
+
children?: any
|
|
715
|
+
id?: string
|
|
716
|
+
level?: 1 | 2 | 3 | 4 | 5 | 6
|
|
717
|
+
ios?: Record<string, any>
|
|
718
|
+
android?: Record<string, any>
|
|
719
|
+
web?: Record<string, any>
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
// ---------- overlays ----------
|
|
723
|
+
|
|
724
|
+
export interface OverlayProps {
|
|
725
|
+
open?: boolean
|
|
726
|
+
onDismiss?: () => void
|
|
727
|
+
/** Enables a RootLayout shade that dismisses when tapped. */
|
|
728
|
+
shadeCover?: boolean
|
|
729
|
+
className?: any
|
|
730
|
+
style?: any
|
|
731
|
+
children?: any
|
|
732
|
+
ios?: Record<string, any>
|
|
733
|
+
android?: Record<string, any>
|
|
734
|
+
web?: Record<string, any>
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
export type PopoverPlacement = 'top' | 'bottom' | 'left' | 'right'
|
|
738
|
+
|
|
739
|
+
/** A platform-neutral ref to the host view or element that owns a popover. */
|
|
740
|
+
export interface PopoverAnchorRef {
|
|
741
|
+
readonly current: unknown
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
export interface PopoverProps {
|
|
745
|
+
/** Ref to a native view or web element, commonly populated by `bind`. */
|
|
746
|
+
anchor: PopoverAnchorRef
|
|
747
|
+
open?: boolean
|
|
748
|
+
placement?: PopoverPlacement
|
|
749
|
+
dismissOnOutsideTap?: boolean
|
|
750
|
+
onDismiss?: () => void
|
|
751
|
+
className?: any
|
|
752
|
+
style?: any
|
|
753
|
+
children?: any
|
|
754
|
+
ios?: Record<string, any>
|
|
755
|
+
android?: Record<string, any>
|
|
756
|
+
web?: Record<string, any>
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
export interface HoverableProps {
|
|
760
|
+
id?: string
|
|
761
|
+
/** Content shown after the pointer rests over the children on pointer
|
|
762
|
+
* platforms (web, macOS). Touch targets never mount the card — keep
|
|
763
|
+
* essential information out of it. */
|
|
764
|
+
card: any
|
|
765
|
+
/** Styling for the card's wrapper view inside the popover — e.g. a
|
|
766
|
+
* pointer bridge covering the anchor↔card gap or a positional offset. */
|
|
767
|
+
cardClassName?: any
|
|
768
|
+
cardStyle?: any
|
|
769
|
+
children?: any
|
|
770
|
+
openDelay?: number
|
|
771
|
+
closeDelay?: number
|
|
772
|
+
placement?: PopoverPlacement
|
|
773
|
+
className?: any
|
|
774
|
+
style?: any
|
|
775
|
+
ios?: Record<string, any>
|
|
776
|
+
android?: Record<string, any>
|
|
777
|
+
web?: Record<string, any>
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
/** Tooltip — `trigger` is the anchor content, `content` the hint body.
|
|
781
|
+
* Pointer platforms show the hint after hover/focus intent (web adds
|
|
782
|
+
* `aria-describedby` + Escape/scroll dismissal; macOS presents an anchored
|
|
783
|
+
* NSPopover). Touch targets render the trigger and never mount the hint —
|
|
784
|
+
* keep essential information out of `content`. */
|
|
785
|
+
export interface TooltipProps {
|
|
786
|
+
id?: string
|
|
787
|
+
trigger: any
|
|
788
|
+
content: any
|
|
789
|
+
/** Styling for the tooltip panel inside the popover. */
|
|
790
|
+
contentClassName?: any
|
|
791
|
+
contentStyle?: any
|
|
792
|
+
openDelay?: number
|
|
793
|
+
closeDelay?: number
|
|
794
|
+
placement?: PopoverPlacement
|
|
795
|
+
disabled?: boolean
|
|
796
|
+
className?: any
|
|
797
|
+
style?: any
|
|
798
|
+
ios?: Record<string, any>
|
|
799
|
+
android?: Record<string, any>
|
|
800
|
+
web?: Record<string, any>
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
export type ToastContent = string | (() => any)
|
|
804
|
+
export type ToastPosition =
|
|
805
|
+
| 'top'
|
|
806
|
+
| 'top-start'
|
|
807
|
+
| 'top-end'
|
|
808
|
+
| 'bottom'
|
|
809
|
+
| 'bottom-start'
|
|
810
|
+
| 'bottom-end'
|
|
811
|
+
|
|
812
|
+
export interface ToastOptions {
|
|
813
|
+
duration?: number
|
|
814
|
+
position?: ToastPosition
|
|
815
|
+
/** When set, the toast is positioned by Popover relative to this view. */
|
|
816
|
+
anchor?: PopoverAnchorRef
|
|
817
|
+
/** Placement used with `anchor`; `position` supplies the top/bottom default. */
|
|
818
|
+
placement?: PopoverPlacement
|
|
819
|
+
ios?: Record<string, any>
|
|
820
|
+
android?: Record<string, any>
|
|
821
|
+
web?: Record<string, any>
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
// ---------- measurement ----------
|
|
825
|
+
|
|
826
|
+
export interface MeasureBounds {
|
|
827
|
+
x: number
|
|
828
|
+
y: number
|
|
829
|
+
width: number
|
|
830
|
+
height: number
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
export interface UseMeasureOptions {
|
|
834
|
+
/** Re-measure on layout, resize, scroll, and content-size changes. Defaults to true. */
|
|
835
|
+
observe?: boolean
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
export interface MeasureResult {
|
|
839
|
+
/** Pass to a View's `bind` prop. */
|
|
840
|
+
bind: (element: any) => void
|
|
841
|
+
bounds: MeasureBounds | null
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
export interface ModalProps {
|
|
845
|
+
open?: boolean
|
|
846
|
+
onClose?: (result?: ModalOpenResult) => void
|
|
847
|
+
fullscreen?: boolean
|
|
848
|
+
/** Native: sheet uses fullscreen=false (iOS form sheet; Android centered
|
|
849
|
+
* dialog), fullscreen uses fullscreen=true. Web: dialog is a centered
|
|
850
|
+
* card, sheet is bottom-anchored, fullscreen is the default dialog size. */
|
|
851
|
+
presentation?: 'sheet' | 'fullscreen' | 'dialog'
|
|
852
|
+
/** Component reference rendered inside the modal's separate root. When
|
|
853
|
+
* both component and children are set, component takes precedence. */
|
|
854
|
+
component?: any
|
|
855
|
+
/** Props passed to component. Context and theme do not cross modal roots. */
|
|
856
|
+
params?: any
|
|
857
|
+
children?: any
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
/** Options for `openModal`. `fullscreen` is retained for callers using the
|
|
861
|
+
* NativeScript option directly; `presentation` takes precedence when set.
|
|
862
|
+
* Android's non-fullscreen modal is a centered dialog, not a bottom sheet. */
|
|
863
|
+
export interface ModalOpenOptions {
|
|
864
|
+
presentation?: 'sheet' | 'fullscreen' | 'dialog'
|
|
865
|
+
fullscreen?: boolean
|
|
866
|
+
animated?: boolean
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
/** Value supplied to a modal close callback and returned by `openModal`. */
|
|
870
|
+
export type ModalOpenResult = unknown
|
|
871
|
+
|
|
872
|
+
/** Public function shape of the imperative modal service. */
|
|
873
|
+
export type OpenModal = (
|
|
874
|
+
component: any,
|
|
875
|
+
params?: any,
|
|
876
|
+
options?: ModalOpenOptions,
|
|
877
|
+
) => Promise<ModalOpenResult>
|
|
878
|
+
|
|
879
|
+
// ---------- sheet (in-window bottom panel) ----------
|
|
880
|
+
|
|
881
|
+
/** Declarative in-window sheet: bottom-anchored panel on the enclosing
|
|
882
|
+
* screen's RootLayout (native) or a document-body portal layer (web).
|
|
883
|
+
* Unlike `Modal presentation='sheet'` (system modal), content stays
|
|
884
|
+
* inside the app window — same window region as the declaring page. */
|
|
885
|
+
export interface SheetProps {
|
|
886
|
+
open?: boolean
|
|
887
|
+
/** Called when the shade is tapped or the sheet is dismissed by the
|
|
888
|
+
* platform — not on programmatic `open`→`false` transitions. */
|
|
889
|
+
onDismiss?: () => void
|
|
890
|
+
/** Dim backdrop + tap-to-dismiss (default true). */
|
|
891
|
+
shadeCover?: boolean
|
|
892
|
+
/** Snap heights as viewport-height fractions, e.g. `[0.25, 0.5, 1]` —
|
|
893
|
+
* sorted ascending; the sheet opens at the smallest and drags between
|
|
894
|
+
* detents via the grabber strip, releasing below half of the smallest
|
|
895
|
+
* dismisses (same dismissal as a shade tap — `onDismiss` / resolve).
|
|
896
|
+
* Absent → the panel keeps its content-sized height. In-window on
|
|
897
|
+
* every target; OS sheet presentations stay in the platform
|
|
898
|
+
* subpaths. */
|
|
899
|
+
detents?: number[]
|
|
900
|
+
className?: any
|
|
901
|
+
style?: any
|
|
902
|
+
children?: any
|
|
903
|
+
ios?: Record<string, any>
|
|
904
|
+
android?: Record<string, any>
|
|
905
|
+
web?: Record<string, any>
|
|
906
|
+
}
|
|
907
|
+
|
|
908
|
+
/** Options for the imperative `openSheet` service. */
|
|
909
|
+
export interface SheetOpenOptions {
|
|
910
|
+
shadeCover?: boolean
|
|
911
|
+
/** Same contract as `SheetProps.detents`. */
|
|
912
|
+
detents?: number[]
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
/** Imperative sheet: mounts `component` on a dedicated root in a bottom
|
|
916
|
+
* sheet and resolves with the value passed to `close(result)`. The
|
|
917
|
+
* component receives `{ params, close }`. */
|
|
918
|
+
export type OpenSheet = (
|
|
919
|
+
component: any,
|
|
920
|
+
params?: any,
|
|
921
|
+
options?: SheetOpenOptions,
|
|
922
|
+
) => Promise<ModalOpenResult>
|
|
923
|
+
|
|
924
|
+
// ---------- tabs / navigation shells ----------
|
|
925
|
+
|
|
926
|
+
export interface TabSpec {
|
|
927
|
+
title: string
|
|
928
|
+
/** Registered icon name (see `registerIcons`). The shared self-drawn
|
|
929
|
+
* `Tabs` renders the glyph through `Icon` on every platform. The
|
|
930
|
+
* platform tab bars (`UITabBar`/`BottomNavigationView` in the ios/
|
|
931
|
+
* android subpaths) consume the glyph's `src` (a NativeScript
|
|
932
|
+
* iconSource URI — `sys://` SF Symbol, `res://`, `font://`, file
|
|
933
|
+
* path) or `font`/`text` representation; `svg`/`markup`-only glyphs
|
|
934
|
+
* warn and render title-only there. */
|
|
935
|
+
icon?: string
|
|
936
|
+
render: () => any
|
|
937
|
+
/** Named parallel stack — the pane is the route outlet for `stack`
|
|
938
|
+
* (pushed screens render in place). The platform tab bars host a real
|
|
939
|
+
* Frame per such pane. */
|
|
940
|
+
stack?: string
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
export interface TabsProps {
|
|
944
|
+
className?: any
|
|
945
|
+
style?: any
|
|
946
|
+
id?: string
|
|
947
|
+
tabs: readonly TabSpec[]
|
|
948
|
+
selectedIndex?: number
|
|
949
|
+
onSelectedIndexChanged?: (index: number) => void
|
|
950
|
+
/** Renders a pushed route's screen by name (the app owns the table).
|
|
951
|
+
* Web: route outlet. Native: pushes render inside the pane's Frame. */
|
|
952
|
+
resolveScreen?: (name: string, params: Record<string, unknown>) => any
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
/** Platform tab-bar item shape. `icon` may be a registered name or a native
|
|
956
|
+
* asset value returned by `Icon.select()` from the matching subpath. */
|
|
957
|
+
export type PlatformTabSpec = Omit<TabSpec, 'icon'> & {
|
|
958
|
+
icon?: string
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
export type PlatformTabsProps = Omit<TabsProps, 'tabs'> & {
|
|
962
|
+
tabs: readonly PlatformTabSpec[]
|
|
963
|
+
ios?: Record<string, any>
|
|
964
|
+
android?: Record<string, any>
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
// ---------- routes ----------
|
|
968
|
+
|
|
969
|
+
export interface Route {
|
|
970
|
+
stack: string
|
|
971
|
+
name: string
|
|
972
|
+
params: Record<string, unknown>
|
|
973
|
+
/** 'push' (default) pushes onto the stack · 'modal' opens its own root
|
|
974
|
+
* (native: `showModal`; web: overlay pane, URL preserved) · 'fade' is a
|
|
975
|
+
* push with a fade transition. A `+modal`/`+fade` filename suffix in
|
|
976
|
+
* the route dir sets the manifest default; this field overrides it. */
|
|
977
|
+
presentation?: 'push' | 'modal' | 'fade'
|
|
978
|
+
/** Loader result supplied to the route screen as `data`. */
|
|
979
|
+
loaderData?: unknown
|
|
980
|
+
/** Loader rejection supplied to the route screen as `error`. */
|
|
981
|
+
loaderError?: unknown
|
|
982
|
+
/** Context returned by the route's `beforeLoad` export. It is merged into
|
|
983
|
+
* screen props and remains available from `useRoute`. */
|
|
984
|
+
context?: RouteContext
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
/** Values shared by a route guard and the screen it admits. */
|
|
988
|
+
export type RouteContext = Record<string, unknown>
|
|
989
|
+
|
|
990
|
+
export interface BeforeLoadArgs {
|
|
991
|
+
params: Record<string, unknown>
|
|
992
|
+
context: RouteContext
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
export type BeforeLoad = (
|
|
996
|
+
args: BeforeLoadArgs,
|
|
997
|
+
) => RouteContext | void | Promise<RouteContext | void>
|
|
998
|
+
|
|
999
|
+
/** The deliberately small cross-platform head surface. `meta` keys become
|
|
1000
|
+
* web `<meta name="..." content="...">` tags; native consumes `title`. */
|
|
1001
|
+
export interface RouteHead {
|
|
1002
|
+
title?: string
|
|
1003
|
+
meta?: Record<string, string>
|
|
1004
|
+
}
|
|
1005
|
+
|
|
1006
|
+
export type RouteHeadExport = RouteHead | ((params: Record<string, unknown>) => RouteHead)
|
|
1007
|
+
|
|
1008
|
+
export interface LinkProps {
|
|
1009
|
+
href: string
|
|
1010
|
+
target?: string
|
|
1011
|
+
className?: any
|
|
1012
|
+
children?: any
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
export interface NavLinkProps {
|
|
1016
|
+
route: Route
|
|
1017
|
+
activeClassName?: string
|
|
1018
|
+
className?: any
|
|
1019
|
+
children?: any
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
/** name → screen component table for `registerScreens` — the app owns the
|
|
1023
|
+
* route table; native `pushRoute` resolves `route.name` through it and
|
|
1024
|
+
* web outlets fall back to it via `screenFor`. Values are component
|
|
1025
|
+
* functions (`() => Element` / UniversalComponent shapes both fit). */
|
|
1026
|
+
export type ScreenTable = Record<string, any>
|
|
1027
|
+
|
|
1028
|
+
/** One route file's entry in the derived manifest. `name` is the file
|
|
1029
|
+
* path under the route dir with `[param]` segments normalized to
|
|
1030
|
+
* `:param` (`app/demo/[id].tsrx` → `demo/:id`); `segments` is the URL
|
|
1031
|
+
* pattern used for web path matching/substitution. */
|
|
1032
|
+
export interface RouteMeta {
|
|
1033
|
+
name: string
|
|
1034
|
+
segments: string[]
|
|
1035
|
+
params: string[]
|
|
1036
|
+
/** Source file (glob key) — diagnostics only. */
|
|
1037
|
+
file: string
|
|
1038
|
+
/** Declared default presentation — set by a `+modal`/`+fade` filename
|
|
1039
|
+
* suffix (`app/settings+modal.tsrx` → route 'settings', modal). */
|
|
1040
|
+
presentation?: 'push' | 'modal' | 'fade'
|
|
1041
|
+
/** Optional `loader` named export — a prefetch hook, not a data layer.
|
|
1042
|
+
* pushRoute fires it (fire-and-forget) before navigating so the
|
|
1043
|
+
* screen's `query$` reads hit a warm cache; boot/deep-link routes
|
|
1044
|
+
* skip it (the screen mounts in the same tick anyway). */
|
|
1045
|
+
loader?: (params: Record<string, unknown>) => unknown
|
|
1046
|
+
/** Optional guard awaited before a push commits. A thrown `redirect(...)`
|
|
1047
|
+
* short-circuits the attempted route. */
|
|
1048
|
+
beforeLoad?: BeforeLoad
|
|
1049
|
+
/** Optional route title/meta declaration, or a params-only function. */
|
|
1050
|
+
head?: RouteHeadExport
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1053
|
+
/** Output of `deriveRouteManifest` — `screens` feeds `registerScreens`
|
|
1054
|
+
* (native pushRoute + web outlet fallback), `routes` feeds web URL
|
|
1055
|
+
* matching, `layouts` catalogs `_layout` files by directory ('' = root). */
|
|
1056
|
+
export interface RouteManifest {
|
|
1057
|
+
screens: ScreenTable
|
|
1058
|
+
routes: RouteMeta[]
|
|
1059
|
+
layouts: Record<string, any>
|
|
1060
|
+
loaders?: Record<string, (params: Record<string, unknown>) => unknown | Promise<unknown>>
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
/** One programmatic route entry for `defineRoutes` — the manifest fields a
|
|
1064
|
+
* route file would have produced, supplied directly. `path` uses the
|
|
1065
|
+
* route-dir vocabulary: `'docs/:slug'` (or `'docs/[slug]'`), `'index'`/`''`
|
|
1066
|
+
* for the root route. `screen` is the component itself — not a module. */
|
|
1067
|
+
export interface RouteSpec {
|
|
1068
|
+
path: string
|
|
1069
|
+
screen: any
|
|
1070
|
+
/** Default presentation, like a `+modal`/`+fade` filename suffix. */
|
|
1071
|
+
presentation?: 'push' | 'modal' | 'fade'
|
|
1072
|
+
loader?: RouteMeta['loader']
|
|
1073
|
+
beforeLoad?: BeforeLoad
|
|
1074
|
+
head?: RouteHeadExport
|
|
1075
|
+
/** Diagnostics label recorded on `RouteMeta.file` (warn strings). */
|
|
1076
|
+
source?: string
|
|
1077
|
+
}
|
|
1078
|
+
|
|
1079
|
+
/** Input to `defineRoutes`: the route list plus optional path-keyed layouts
|
|
1080
|
+
* — `layouts: { docs: Shell }` plays the `_layout.tsrx` role for every
|
|
1081
|
+
* route under `docs/*`. */
|
|
1082
|
+
export interface RouteSpecSet {
|
|
1083
|
+
routes: readonly RouteSpec[]
|
|
1084
|
+
layouts?: Record<string, any>
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
export interface OpenWindowOptions {
|
|
1088
|
+
/** Data made available to the native window content resolver. */
|
|
1089
|
+
data?: Record<string, unknown>
|
|
1090
|
+
/** Optional URL used by the web window. */
|
|
1091
|
+
url?: string
|
|
1092
|
+
}
|
|
1093
|
+
|
|
1094
|
+
// ---------- animation ----------
|
|
1095
|
+
|
|
1096
|
+
/**
|
|
1097
|
+
* Value returned by `useAnimation(initial, prop)`. On web, `prop` supports
|
|
1098
|
+
* translateX/translateY/translateZ, scale/scaleX/scaleY, rotate/rotateX/
|
|
1099
|
+
* rotateY, and skewX/skewY as CSS transforms, plus `opacity` and other CSS
|
|
1100
|
+
* style properties. On NativeScript, `prop` is the name of a NativeScript
|
|
1101
|
+
* view property (for example, `translateX` or `opacity`).
|
|
1102
|
+
*/
|
|
1103
|
+
export interface AnimatedValue {
|
|
1104
|
+
readonly value: number
|
|
1105
|
+
bind(el: any): void
|
|
1106
|
+
to(target: number, opts?: { duration?: number }): void
|
|
1107
|
+
spring(target: number, opts?: { damping?: number; stiffness?: number }): void
|
|
1108
|
+
stop(): void
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
// ---------- self-drawn components (Phase 1) ----------
|
|
1112
|
+
|
|
1113
|
+
/** Button composes Pressable — same-props/same-pixels, self-drawn. `loading`
|
|
1114
|
+
* shows the spinner and blocks presses. */
|
|
1115
|
+
export interface ButtonProps extends PressableProps {
|
|
1116
|
+
loading?: boolean
|
|
1117
|
+
/** Content rendered before children (e.g. an Icon). */
|
|
1118
|
+
leading?: any
|
|
1119
|
+
/** Content rendered after children. */
|
|
1120
|
+
trailing?: any
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1123
|
+
/** Collapsible shows/hides `children` behind a `trigger`. Controlled via
|
|
1124
|
+
* `open`/`onOpenChange` or uncontrolled via `defaultOpen`. */
|
|
1125
|
+
export interface CollapsibleProps {
|
|
1126
|
+
className?: any
|
|
1127
|
+
style?: any
|
|
1128
|
+
id?: string
|
|
1129
|
+
trigger?: any
|
|
1130
|
+
children?: any
|
|
1131
|
+
open?: boolean
|
|
1132
|
+
defaultOpen?: boolean
|
|
1133
|
+
disabled?: boolean
|
|
1134
|
+
onOpenChange?: (open: boolean) => void
|
|
1135
|
+
accessibilityLabel?: string
|
|
1136
|
+
/** Platform-specific properties are applied after shared props. */
|
|
1137
|
+
ios?: any
|
|
1138
|
+
android?: any
|
|
1139
|
+
web?: any
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
export interface AccordionItemSpec {
|
|
1143
|
+
key: string
|
|
1144
|
+
header?: any
|
|
1145
|
+
content?: any
|
|
1146
|
+
disabled?: boolean
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
/** Accordion — a list of Collapsibles. `open` is the open key (or keys with
|
|
1150
|
+
* `multiple`); omit it for uncontrolled via `defaultOpen`. */
|
|
1151
|
+
export interface AccordionProps {
|
|
1152
|
+
className?: any
|
|
1153
|
+
style?: any
|
|
1154
|
+
id?: string
|
|
1155
|
+
items: AccordionItemSpec[]
|
|
1156
|
+
multiple?: boolean
|
|
1157
|
+
open?: string | string[]
|
|
1158
|
+
defaultOpen?: string | string[]
|
|
1159
|
+
onOpenChange?: (open: string | string[]) => void
|
|
1160
|
+
/** Platform-specific properties are applied after shared props. */
|
|
1161
|
+
ios?: any
|
|
1162
|
+
android?: any
|
|
1163
|
+
web?: any
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
/** Self-drawn checkbox — box + check mark, identical pixels across targets. */
|
|
1167
|
+
export interface CheckboxProps {
|
|
1168
|
+
className?: any
|
|
1169
|
+
style?: any
|
|
1170
|
+
id?: string
|
|
1171
|
+
checked?: boolean
|
|
1172
|
+
disabled?: boolean
|
|
1173
|
+
onCheckedChange?: (checked: boolean) => void
|
|
1174
|
+
label?: string
|
|
1175
|
+
accessibilityLabel?: string
|
|
1176
|
+
/** Platform-specific properties are applied after shared props. */
|
|
1177
|
+
ios?: any
|
|
1178
|
+
android?: any
|
|
1179
|
+
web?: any
|
|
1180
|
+
}
|
|
1181
|
+
|
|
1182
|
+
export interface RadioOption {
|
|
1183
|
+
value: string
|
|
1184
|
+
label?: string
|
|
1185
|
+
disabled?: boolean
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
/** Self-drawn radio group — dot options in a column/row. */
|
|
1189
|
+
export interface RadioGroupProps {
|
|
1190
|
+
className?: any
|
|
1191
|
+
style?: any
|
|
1192
|
+
id?: string
|
|
1193
|
+
options: RadioOption[]
|
|
1194
|
+
value?: string
|
|
1195
|
+
disabled?: boolean
|
|
1196
|
+
horizontal?: boolean
|
|
1197
|
+
onValueChange?: (value: string) => void
|
|
1198
|
+
accessibilityLabel?: string
|
|
1199
|
+
/** Platform-specific properties are applied after shared props. */
|
|
1200
|
+
ios?: any
|
|
1201
|
+
android?: any
|
|
1202
|
+
web?: any
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1205
|
+
/** Self-drawn segmented control — a row of equal-width segments in a track,
|
|
1206
|
+
* one selected (UISegmentedControl / Material segmented-button shape, no OS
|
|
1207
|
+
* chrome). `value`/`onValueChange` for controlled, `defaultValue` for
|
|
1208
|
+
* uncontrolled; `disabled` on the group or per-option. Sizes come from
|
|
1209
|
+
* className, matching the Button family. */
|
|
1210
|
+
export interface SegmentedControlProps {
|
|
1211
|
+
className?: any
|
|
1212
|
+
style?: any
|
|
1213
|
+
id?: string
|
|
1214
|
+
options: RadioOption[]
|
|
1215
|
+
value?: string
|
|
1216
|
+
defaultValue?: string
|
|
1217
|
+
onValueChange?: (value: string) => void
|
|
1218
|
+
disabled?: boolean
|
|
1219
|
+
accessibilityLabel?: string
|
|
1220
|
+
/** Platform-specific properties are applied after shared props. */
|
|
1221
|
+
ios?: any
|
|
1222
|
+
android?: any
|
|
1223
|
+
web?: any
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
export interface MenuItem {
|
|
1227
|
+
key: string
|
|
1228
|
+
label?: string
|
|
1229
|
+
icon?: string
|
|
1230
|
+
disabled?: boolean
|
|
1231
|
+
onSelect?: () => void
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
/** DropdownMenu — `trigger` anchored to a self-drawn item list via Popover.
|
|
1235
|
+
* Same anchored listbox on every target (decision #48). */
|
|
1236
|
+
export interface DropdownMenuProps {
|
|
1237
|
+
className?: any
|
|
1238
|
+
style?: any
|
|
1239
|
+
id?: string
|
|
1240
|
+
/** Anchor content — rendered inside the trigger Pressable. */
|
|
1241
|
+
trigger?: any
|
|
1242
|
+
items: MenuItem[]
|
|
1243
|
+
open?: boolean
|
|
1244
|
+
defaultOpen?: boolean
|
|
1245
|
+
onOpenChange?: (open: boolean) => void
|
|
1246
|
+
placement?: PopoverPlacement
|
|
1247
|
+
disabled?: boolean
|
|
1248
|
+
/** Platform-specific properties are applied after shared props. */
|
|
1249
|
+
ios?: any
|
|
1250
|
+
android?: any
|
|
1251
|
+
web?: any
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
/** ContextMenu — same anchored list as DropdownMenu, opened by right-click
|
|
1255
|
+
* on web and long-press on native. */
|
|
1256
|
+
export interface ContextMenuProps {
|
|
1257
|
+
className?: any
|
|
1258
|
+
style?: any
|
|
1259
|
+
id?: string
|
|
1260
|
+
items: MenuItem[]
|
|
1261
|
+
open?: boolean
|
|
1262
|
+
defaultOpen?: boolean
|
|
1263
|
+
onOpenChange?: (open: boolean) => void
|
|
1264
|
+
children?: any
|
|
1265
|
+
disabled?: boolean
|
|
1266
|
+
/** Platform-specific properties are applied after shared props. */
|
|
1267
|
+
ios?: any
|
|
1268
|
+
android?: any
|
|
1269
|
+
web?: any
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
/** Badge — inline label chip. Pure composition, unstyled beyond layout. */
|
|
1273
|
+
export interface BadgeProps {
|
|
1274
|
+
className?: any
|
|
1275
|
+
style?: any
|
|
1276
|
+
id?: string
|
|
1277
|
+
children?: any
|
|
1278
|
+
/** Platform-specific properties are applied after shared props. */
|
|
1279
|
+
ios?: any
|
|
1280
|
+
android?: any
|
|
1281
|
+
web?: any
|
|
1282
|
+
}
|
|
1283
|
+
|
|
1284
|
+
/** Separator — hairline rule between content. */
|
|
1285
|
+
export interface SeparatorProps {
|
|
1286
|
+
className?: any
|
|
1287
|
+
style?: any
|
|
1288
|
+
id?: string
|
|
1289
|
+
orientation?: 'horizontal' | 'vertical'
|
|
1290
|
+
/** Platform-specific properties are applied after shared props. */
|
|
1291
|
+
ios?: any
|
|
1292
|
+
android?: any
|
|
1293
|
+
web?: any
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1296
|
+
/** Skeleton — placeholder block shown while content loads. */
|
|
1297
|
+
export interface SkeletonProps {
|
|
1298
|
+
className?: any
|
|
1299
|
+
style?: any
|
|
1300
|
+
id?: string
|
|
1301
|
+
width?: number
|
|
1302
|
+
height?: number
|
|
1303
|
+
/** Platform-specific properties are applied after shared props. */
|
|
1304
|
+
ios?: any
|
|
1305
|
+
android?: any
|
|
1306
|
+
web?: any
|
|
1307
|
+
}
|
|
1308
|
+
|
|
1309
|
+
/** Avatar — circular image with a text fallback. */
|
|
1310
|
+
export interface AvatarProps {
|
|
1311
|
+
className?: any
|
|
1312
|
+
style?: any
|
|
1313
|
+
id?: string
|
|
1314
|
+
src?: string
|
|
1315
|
+
alt?: string
|
|
1316
|
+
/** Fallback text (initials) shown when `src` is missing/fails. */
|
|
1317
|
+
fallback?: string
|
|
1318
|
+
size?: number
|
|
1319
|
+
/** Platform-specific properties are applied after shared props. */
|
|
1320
|
+
ios?: any
|
|
1321
|
+
android?: any
|
|
1322
|
+
web?: any
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
/** AvatarGroup — overlapping row of avatars with an optional `+N` overflow. */
|
|
1326
|
+
export interface AvatarGroupProps {
|
|
1327
|
+
className?: any
|
|
1328
|
+
style?: any
|
|
1329
|
+
id?: string
|
|
1330
|
+
children?: any
|
|
1331
|
+
/** Max avatars rendered; the rest collapse into a `+N` avatar. */
|
|
1332
|
+
max?: number
|
|
1333
|
+
size?: number
|
|
1334
|
+
/** Platform-specific properties are applied after shared props. */
|
|
1335
|
+
ios?: any
|
|
1336
|
+
android?: any
|
|
1337
|
+
web?: any
|
|
1338
|
+
}
|
|
1339
|
+
|
|
1340
|
+
// ---------- form field layer (Phase 2) ----------
|
|
1341
|
+
|
|
1342
|
+
/** FormField wraps a control with a label, hint, and error text. The error
|
|
1343
|
+
* replaces the hint when present. Children is the control element. */
|
|
1344
|
+
export interface FormFieldProps {
|
|
1345
|
+
className?: any
|
|
1346
|
+
style?: any
|
|
1347
|
+
id?: string
|
|
1348
|
+
label?: string
|
|
1349
|
+
hint?: string
|
|
1350
|
+
error?: string
|
|
1351
|
+
required?: boolean
|
|
1352
|
+
children?: any
|
|
1353
|
+
ios?: any
|
|
1354
|
+
android?: any
|
|
1355
|
+
web?: any
|
|
1356
|
+
}
|
|
1357
|
+
|
|
1358
|
+
/** FieldGroup — labeled group of related fields (role=group). */
|
|
1359
|
+
export interface FieldGroupProps {
|
|
1360
|
+
className?: any
|
|
1361
|
+
style?: any
|
|
1362
|
+
id?: string
|
|
1363
|
+
label?: string
|
|
1364
|
+
children?: any
|
|
1365
|
+
ios?: any
|
|
1366
|
+
android?: any
|
|
1367
|
+
web?: any
|
|
1368
|
+
}
|
|
1369
|
+
|
|
1370
|
+
/** Shared settings/navigation row. Use the four shorthand props for common
|
|
1371
|
+
* rows, or `ListItem.Leading`/`Content`/`Supporting`/`Trailing` children
|
|
1372
|
+
* when the row needs custom composition. */
|
|
1373
|
+
export interface ListItemProps extends AccessibilityProps {
|
|
1374
|
+
className?: any
|
|
1375
|
+
style?: any
|
|
1376
|
+
id?: string
|
|
1377
|
+
title?: any
|
|
1378
|
+
supportingText?: any
|
|
1379
|
+
leading?: any
|
|
1380
|
+
trailing?: any
|
|
1381
|
+
onPress?: () => void
|
|
1382
|
+
disabled?: boolean
|
|
1383
|
+
children?: any
|
|
1384
|
+
}
|
|
1385
|
+
|
|
1386
|
+
export interface ListItemSlotProps {
|
|
1387
|
+
className?: any
|
|
1388
|
+
children?: any
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
export interface ListItemComponent {
|
|
1392
|
+
(props: ListItemProps): unknown
|
|
1393
|
+
Leading: (props: ListItemSlotProps) => unknown
|
|
1394
|
+
Content: (props: ListItemSlotProps) => unknown
|
|
1395
|
+
Supporting: (props: ListItemSlotProps) => unknown
|
|
1396
|
+
Trailing: (props: ListItemSlotProps) => unknown
|
|
1397
|
+
}
|
|
1398
|
+
|
|
1399
|
+
/** InputNumber — normalized TextInput (number keyboard) flanked by −/+
|
|
1400
|
+
* steppers. `value`/`onValueChange` for controlled, `defaultValue` for
|
|
1401
|
+
* uncontrolled. `step` defaults to 1; `min`/`max` clamp. */
|
|
1402
|
+
export interface InputNumberProps {
|
|
1403
|
+
className?: any
|
|
1404
|
+
style?: any
|
|
1405
|
+
id?: string
|
|
1406
|
+
value?: number
|
|
1407
|
+
defaultValue?: number
|
|
1408
|
+
min?: number
|
|
1409
|
+
max?: number
|
|
1410
|
+
step?: number
|
|
1411
|
+
disabled?: boolean
|
|
1412
|
+
placeholder?: string
|
|
1413
|
+
onValueChange?: (value: number) => void
|
|
1414
|
+
ios?: any
|
|
1415
|
+
android?: any
|
|
1416
|
+
web?: any
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
/** PinInput — a row of single-character cells that auto-advance on entry.
|
|
1420
|
+
* `onComplete` fires when all `length` cells are filled. */
|
|
1421
|
+
export interface PinInputProps {
|
|
1422
|
+
className?: any
|
|
1423
|
+
style?: any
|
|
1424
|
+
id?: string
|
|
1425
|
+
length?: number
|
|
1426
|
+
value?: string
|
|
1427
|
+
onValueChange?: (value: string) => void
|
|
1428
|
+
onComplete?: (value: string) => void
|
|
1429
|
+
secure?: boolean
|
|
1430
|
+
disabled?: boolean
|
|
1431
|
+
ios?: any
|
|
1432
|
+
android?: any
|
|
1433
|
+
web?: any
|
|
1434
|
+
}
|
|
1435
|
+
|
|
1436
|
+
export interface SelectOption {
|
|
1437
|
+
value: string
|
|
1438
|
+
label?: string
|
|
1439
|
+
disabled?: boolean
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1442
|
+
/** Select — anchored self-drawn listbox on every target (decision #48).
|
|
1443
|
+
* `multiple` keeps the listbox open and reports string[]; `searchable`
|
|
1444
|
+
* puts a normalized TextInput filter at the top of the listbox. */
|
|
1445
|
+
export interface SelectProps {
|
|
1446
|
+
className?: any
|
|
1447
|
+
style?: any
|
|
1448
|
+
id?: string
|
|
1449
|
+
options: SelectOption[]
|
|
1450
|
+
value?: string | string[]
|
|
1451
|
+
defaultValue?: string | string[]
|
|
1452
|
+
multiple?: boolean
|
|
1453
|
+
searchable?: boolean
|
|
1454
|
+
placeholder?: string
|
|
1455
|
+
open?: boolean
|
|
1456
|
+
defaultOpen?: boolean
|
|
1457
|
+
onOpenChange?: (open: boolean) => void
|
|
1458
|
+
onValueChange?: (value: string | string[]) => void
|
|
1459
|
+
disabled?: boolean
|
|
1460
|
+
placement?: PopoverPlacement
|
|
1461
|
+
accessibilityLabel?: string
|
|
1462
|
+
ios?: any
|
|
1463
|
+
android?: any
|
|
1464
|
+
web?: any
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1467
|
+
/** InputTags — chip list + trailing normalized TextInput. Enter commits a
|
|
1468
|
+
* tag, Backspace on an empty field removes the last tag. */
|
|
1469
|
+
export interface InputTagsProps {
|
|
1470
|
+
className?: any
|
|
1471
|
+
style?: any
|
|
1472
|
+
id?: string
|
|
1473
|
+
value?: string[]
|
|
1474
|
+
defaultValue?: string[]
|
|
1475
|
+
onValueChange?: (tags: string[]) => void
|
|
1476
|
+
placeholder?: string
|
|
1477
|
+
max?: number
|
|
1478
|
+
disabled?: boolean
|
|
1479
|
+
ios?: any
|
|
1480
|
+
android?: any
|
|
1481
|
+
web?: any
|
|
1482
|
+
}
|
|
1483
|
+
|
|
1484
|
+
/** InputRating — row of tappable glyphs reporting a 1..max score. */
|
|
1485
|
+
export interface InputRatingProps {
|
|
1486
|
+
className?: any
|
|
1487
|
+
style?: any
|
|
1488
|
+
id?: string
|
|
1489
|
+
value?: number
|
|
1490
|
+
defaultValue?: number
|
|
1491
|
+
max?: number
|
|
1492
|
+
/** Glyph per cell — a Text character (default ★) or a registered Icon name. */
|
|
1493
|
+
icon?: string
|
|
1494
|
+
onValueChange?: (value: number) => void
|
|
1495
|
+
disabled?: boolean
|
|
1496
|
+
accessibilityLabel?: string
|
|
1497
|
+
ios?: any
|
|
1498
|
+
android?: any
|
|
1499
|
+
web?: any
|
|
1500
|
+
}
|
|
1501
|
+
|
|
1502
|
+
/** CheckboxGroup — multi-select list of self-drawn checkboxes. */
|
|
1503
|
+
export interface CheckboxGroupProps {
|
|
1504
|
+
className?: any
|
|
1505
|
+
style?: any
|
|
1506
|
+
id?: string
|
|
1507
|
+
options: RadioOption[]
|
|
1508
|
+
value?: string[]
|
|
1509
|
+
defaultValue?: string[]
|
|
1510
|
+
onValueChange?: (values: string[]) => void
|
|
1511
|
+
disabled?: boolean
|
|
1512
|
+
horizontal?: boolean
|
|
1513
|
+
accessibilityLabel?: string
|
|
1514
|
+
ios?: any
|
|
1515
|
+
android?: any
|
|
1516
|
+
web?: any
|
|
1517
|
+
}
|
|
1518
|
+
|
|
1519
|
+
// ---------- navigation & wayfinding (Phase 3) ----------
|
|
1520
|
+
|
|
1521
|
+
export interface BreadcrumbItem {
|
|
1522
|
+
label: string
|
|
1523
|
+
onSelect?: () => void
|
|
1524
|
+
}
|
|
1525
|
+
|
|
1526
|
+
/** Breadcrumb — ancestor trail. Items render as pressable links separated
|
|
1527
|
+
* by `separator` (default /). */
|
|
1528
|
+
export interface BreadcrumbProps {
|
|
1529
|
+
className?: any
|
|
1530
|
+
style?: any
|
|
1531
|
+
id?: string
|
|
1532
|
+
items: BreadcrumbItem[]
|
|
1533
|
+
separator?: string
|
|
1534
|
+
accessibilityLabel?: string
|
|
1535
|
+
ios?: any
|
|
1536
|
+
android?: any
|
|
1537
|
+
web?: any
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
/** Pagination — prev/next + a windowed run of page buttons around `page`. */
|
|
1541
|
+
export interface PaginationProps {
|
|
1542
|
+
className?: any
|
|
1543
|
+
style?: any
|
|
1544
|
+
id?: string
|
|
1545
|
+
page: number
|
|
1546
|
+
pageCount: number
|
|
1547
|
+
/** Pages shown to each side of `page` (default 1). */
|
|
1548
|
+
siblingCount?: number
|
|
1549
|
+
onPageChange?: (page: number) => void
|
|
1550
|
+
disabled?: boolean
|
|
1551
|
+
accessibilityLabel?: string
|
|
1552
|
+
ios?: any
|
|
1553
|
+
android?: any
|
|
1554
|
+
web?: any
|
|
1555
|
+
}
|
|
1556
|
+
|
|
1557
|
+
export interface StepperStep {
|
|
1558
|
+
key: string
|
|
1559
|
+
label?: string
|
|
1560
|
+
icon?: string
|
|
1561
|
+
disabled?: boolean
|
|
1562
|
+
}
|
|
1563
|
+
|
|
1564
|
+
/** Stepper — numbered step row. Steps before `current` show a done mark;
|
|
1565
|
+
* tapping a non-disabled step calls `onStepChange`. */
|
|
1566
|
+
export interface StepperProps {
|
|
1567
|
+
className?: any
|
|
1568
|
+
style?: any
|
|
1569
|
+
id?: string
|
|
1570
|
+
steps: StepperStep[]
|
|
1571
|
+
current?: number
|
|
1572
|
+
onStepChange?: (index: number) => void
|
|
1573
|
+
accessibilityLabel?: string
|
|
1574
|
+
ios?: any
|
|
1575
|
+
android?: any
|
|
1576
|
+
web?: any
|
|
1577
|
+
}
|
|
1578
|
+
|
|
1579
|
+
export interface NavigationMenuItem {
|
|
1580
|
+
key: string
|
|
1581
|
+
label?: string
|
|
1582
|
+
icon?: string
|
|
1583
|
+
active?: boolean
|
|
1584
|
+
disabled?: boolean
|
|
1585
|
+
onSelect?: () => void
|
|
1586
|
+
}
|
|
1587
|
+
|
|
1588
|
+
/** NavigationMenu — row (or column) of nav items; mostly a desktop/web
|
|
1589
|
+
* idiom — the mobile equivalent is Tabs/Drawer. */
|
|
1590
|
+
export interface NavigationMenuProps {
|
|
1591
|
+
className?: any
|
|
1592
|
+
style?: any
|
|
1593
|
+
id?: string
|
|
1594
|
+
items: NavigationMenuItem[]
|
|
1595
|
+
horizontal?: boolean
|
|
1596
|
+
accessibilityLabel?: string
|
|
1597
|
+
ios?: any
|
|
1598
|
+
android?: any
|
|
1599
|
+
web?: any
|
|
1600
|
+
}
|
|
1601
|
+
|
|
1602
|
+
/** CommandPalette — overlay with a search field over a filtered action
|
|
1603
|
+
* list. Esc/outside dismisses, Enter selects the highlighted match. */
|
|
1604
|
+
export interface CommandPaletteProps {
|
|
1605
|
+
className?: any
|
|
1606
|
+
style?: any
|
|
1607
|
+
id?: string
|
|
1608
|
+
open?: boolean
|
|
1609
|
+
onOpenChange?: (open: boolean) => void
|
|
1610
|
+
items: MenuItem[]
|
|
1611
|
+
placeholder?: string
|
|
1612
|
+
ios?: any
|
|
1613
|
+
android?: any
|
|
1614
|
+
web?: any
|
|
1615
|
+
}
|
|
1616
|
+
|
|
1617
|
+
// ---------- data display (Phase 4) ----------
|
|
1618
|
+
|
|
1619
|
+
export interface TableColumn {
|
|
1620
|
+
key: string
|
|
1621
|
+
label?: string
|
|
1622
|
+
/** Column width in dips; omit to share the remaining space evenly. */
|
|
1623
|
+
width?: number
|
|
1624
|
+
align?: 'left' | 'center' | 'right'
|
|
1625
|
+
}
|
|
1626
|
+
|
|
1627
|
+
/** Table — self-drawn grid via rows + cells. Bounded and unvirtualized:
|
|
1628
|
+
* large datasets belong to the platform UITableView/RecyclerView
|
|
1629
|
+
* subpaths, not this component. */
|
|
1630
|
+
export interface TableProps {
|
|
1631
|
+
className?: any
|
|
1632
|
+
style?: any
|
|
1633
|
+
id?: string
|
|
1634
|
+
columns: TableColumn[]
|
|
1635
|
+
rows: Record<string, any>[]
|
|
1636
|
+
/** Cell override — default renders row[col.key] as text. */
|
|
1637
|
+
renderCell?: (row: Record<string, any>, column: TableColumn, rowIndex: number) => any
|
|
1638
|
+
/** Row key; defaults to the row index. */
|
|
1639
|
+
keyFor?: (row: Record<string, any>, rowIndex: number) => string
|
|
1640
|
+
onRowPress?: (row: Record<string, any>, rowIndex: number) => void
|
|
1641
|
+
empty?: any
|
|
1642
|
+
ios?: any
|
|
1643
|
+
android?: any
|
|
1644
|
+
web?: any
|
|
1645
|
+
}
|
|
1646
|
+
|
|
1647
|
+
export interface TimelineItem {
|
|
1648
|
+
key: string
|
|
1649
|
+
title?: string
|
|
1650
|
+
description?: string
|
|
1651
|
+
time?: string
|
|
1652
|
+
icon?: string
|
|
1653
|
+
}
|
|
1654
|
+
|
|
1655
|
+
/** Timeline — vertical list of events with dot + connector. */
|
|
1656
|
+
export interface TimelineProps {
|
|
1657
|
+
className?: any
|
|
1658
|
+
style?: any
|
|
1659
|
+
id?: string
|
|
1660
|
+
items: TimelineItem[]
|
|
1661
|
+
ios?: any
|
|
1662
|
+
android?: any
|
|
1663
|
+
web?: any
|
|
1664
|
+
}
|
|
1665
|
+
|
|
1666
|
+
export interface TreeNode {
|
|
1667
|
+
key: string
|
|
1668
|
+
label?: string
|
|
1669
|
+
children?: TreeNode[]
|
|
1670
|
+
disabled?: boolean
|
|
1671
|
+
}
|
|
1672
|
+
|
|
1673
|
+
/** Tree — recursive indent + collapse. `defaultExpanded` seeds the open
|
|
1674
|
+
* set; `onToggle` reports changes. */
|
|
1675
|
+
export interface TreeProps {
|
|
1676
|
+
className?: any
|
|
1677
|
+
style?: any
|
|
1678
|
+
id?: string
|
|
1679
|
+
nodes: TreeNode[]
|
|
1680
|
+
defaultExpanded?: string[]
|
|
1681
|
+
onToggle?: (key: string, open: boolean) => void
|
|
1682
|
+
onSelect?: (node: TreeNode) => void
|
|
1683
|
+
ios?: any
|
|
1684
|
+
android?: any
|
|
1685
|
+
web?: any
|
|
1686
|
+
}
|
|
1687
|
+
|
|
1688
|
+
/** Alert — status callout. `tone` maps to a class modifier; error tone
|
|
1689
|
+
* gets role=alert on web, others role=status. */
|
|
1690
|
+
export interface AlertProps {
|
|
1691
|
+
className?: any
|
|
1692
|
+
style?: any
|
|
1693
|
+
id?: string
|
|
1694
|
+
tone?: 'info' | 'success' | 'warning' | 'error'
|
|
1695
|
+
icon?: string
|
|
1696
|
+
title?: string
|
|
1697
|
+
children?: any
|
|
1698
|
+
ios?: any
|
|
1699
|
+
android?: any
|
|
1700
|
+
web?: any
|
|
1701
|
+
}
|
|
1702
|
+
|
|
1703
|
+
/** Card — container with optional header/footer slots. */
|
|
1704
|
+
export interface CardProps {
|
|
1705
|
+
className?: any
|
|
1706
|
+
style?: any
|
|
1707
|
+
id?: string
|
|
1708
|
+
header?: any
|
|
1709
|
+
footer?: any
|
|
1710
|
+
children?: any
|
|
1711
|
+
ios?: any
|
|
1712
|
+
android?: any
|
|
1713
|
+
web?: any
|
|
1714
|
+
}
|
|
1715
|
+
|
|
1716
|
+
/** Chip — small action/filter element: pressable, optional selected state,
|
|
1717
|
+
* optional ✕ remove affordance. */
|
|
1718
|
+
export interface ChipProps {
|
|
1719
|
+
className?: any
|
|
1720
|
+
style?: any
|
|
1721
|
+
id?: string
|
|
1722
|
+
children?: any
|
|
1723
|
+
selected?: boolean
|
|
1724
|
+
disabled?: boolean
|
|
1725
|
+
onSelect?: () => void
|
|
1726
|
+
onRemove?: () => void
|
|
1727
|
+
accessibilityLabel?: string
|
|
1728
|
+
ios?: any
|
|
1729
|
+
android?: any
|
|
1730
|
+
web?: any
|
|
1731
|
+
}
|
|
1732
|
+
|
|
1733
|
+
/** Kbd — keyboard key glyph (⌘K styling hook). */
|
|
1734
|
+
export interface KbdProps {
|
|
1735
|
+
className?: any
|
|
1736
|
+
style?: any
|
|
1737
|
+
id?: string
|
|
1738
|
+
children?: any
|
|
1739
|
+
ios?: any
|
|
1740
|
+
android?: any
|
|
1741
|
+
web?: any
|
|
1742
|
+
}
|
|
1743
|
+
|
|
1744
|
+
/** Empty — empty-state block: icon + title + description + actions. */
|
|
1745
|
+
export interface EmptyProps {
|
|
1746
|
+
className?: any
|
|
1747
|
+
style?: any
|
|
1748
|
+
id?: string
|
|
1749
|
+
icon?: string
|
|
1750
|
+
title?: string
|
|
1751
|
+
description?: string
|
|
1752
|
+
children?: any
|
|
1753
|
+
ios?: any
|
|
1754
|
+
android?: any
|
|
1755
|
+
web?: any
|
|
1756
|
+
}
|
|
1757
|
+
|
|
1758
|
+
/** Banner — inline notice strip with optional dismiss. */
|
|
1759
|
+
export interface BannerProps {
|
|
1760
|
+
className?: any
|
|
1761
|
+
style?: any
|
|
1762
|
+
id?: string
|
|
1763
|
+
icon?: string
|
|
1764
|
+
children?: any
|
|
1765
|
+
onDismiss?: () => void
|
|
1766
|
+
ios?: any
|
|
1767
|
+
android?: any
|
|
1768
|
+
web?: any
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1771
|
+
/** User — avatar + name/description row. */
|
|
1772
|
+
export interface UserProps {
|
|
1773
|
+
className?: any
|
|
1774
|
+
style?: any
|
|
1775
|
+
id?: string
|
|
1776
|
+
name?: string
|
|
1777
|
+
description?: string
|
|
1778
|
+
src?: string
|
|
1779
|
+
fallback?: string
|
|
1780
|
+
size?: number
|
|
1781
|
+
onSelect?: () => void
|
|
1782
|
+
ios?: any
|
|
1783
|
+
android?: any
|
|
1784
|
+
web?: any
|
|
1785
|
+
}
|
|
1786
|
+
|
|
1787
|
+
/** ProgressGroup — stacked labeled Meter rows. */
|
|
1788
|
+
export interface ProgressGroupProps {
|
|
1789
|
+
className?: any
|
|
1790
|
+
style?: any
|
|
1791
|
+
id?: string
|
|
1792
|
+
items: { key: string; label?: string; value: number; max?: number }[]
|
|
1793
|
+
ios?: any
|
|
1794
|
+
android?: any
|
|
1795
|
+
web?: any
|
|
1796
|
+
}
|
|
1797
|
+
|
|
1798
|
+
// ---------- theme ----------
|
|
1799
|
+
|
|
1800
|
+
export type ColorScheme = 'light' | 'dark'
|
|
1801
|
+
|
|
1802
|
+
// ---------- stores ----------
|
|
1803
|
+
|
|
1804
|
+
/** Minimal external-store contract `useStore` subscribes to. */
|
|
1805
|
+
export interface ReadableStore<T> {
|
|
1806
|
+
get(): T
|
|
1807
|
+
subscribe(notify: () => void): () => void
|
|
1808
|
+
}
|
|
1809
|
+
|
|
1810
|
+
export interface Store<T> extends ReadableStore<T> {
|
|
1811
|
+
set(next: T | ((prev: T) => T)): void
|
|
1812
|
+
}
|