orn-ui 0.2.9 → 0.3.0
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/AGENTS.md +67 -52
- package/README.md +5 -9
- package/lib/commonjs/atoms/Avatar.js +77 -5
- package/lib/commonjs/atoms/Avatar.js.map +1 -1
- package/lib/commonjs/atoms/Badge.js +17 -8
- package/lib/commonjs/atoms/Badge.js.map +1 -1
- package/lib/commonjs/atoms/Button.js +108 -39
- package/lib/commonjs/atoms/Button.js.map +1 -1
- package/lib/commonjs/atoms/Card.js +24 -2
- package/lib/commonjs/atoms/Card.js.map +1 -1
- package/lib/commonjs/atoms/Checkbox.js +41 -10
- package/lib/commonjs/atoms/Checkbox.js.map +1 -1
- package/lib/commonjs/atoms/Divider.js +30 -5
- package/lib/commonjs/atoms/Divider.js.map +1 -1
- package/lib/commonjs/atoms/EmptyState.js +58 -20
- package/lib/commonjs/atoms/EmptyState.js.map +1 -1
- package/lib/commonjs/atoms/Fab.js +32 -12
- package/lib/commonjs/atoms/Fab.js.map +1 -1
- package/lib/commonjs/atoms/Gradient.js +102 -36
- package/lib/commonjs/atoms/Gradient.js.map +1 -1
- package/lib/commonjs/atoms/IconButton.js +25 -4
- package/lib/commonjs/atoms/IconButton.js.map +1 -1
- package/lib/commonjs/atoms/Image.js +61 -25
- package/lib/commonjs/atoms/Image.js.map +1 -1
- package/lib/commonjs/atoms/Input.js +105 -17
- package/lib/commonjs/atoms/Input.js.map +1 -1
- package/lib/commonjs/atoms/KeyValueRow.js +37 -9
- package/lib/commonjs/atoms/KeyValueRow.js.map +1 -1
- package/lib/commonjs/atoms/PressableScale.js +25 -5
- package/lib/commonjs/atoms/PressableScale.js.map +1 -1
- package/lib/commonjs/atoms/ShinyText.js +29 -29
- package/lib/commonjs/atoms/Skeleton.js +28 -13
- package/lib/commonjs/atoms/Skeleton.js.map +1 -1
- package/lib/commonjs/atoms/Spinner.js +81 -22
- package/lib/commonjs/atoms/Spinner.js.map +1 -1
- package/lib/commonjs/atoms/Text.js +56 -5
- package/lib/commonjs/atoms/Text.js.map +1 -1
- package/lib/commonjs/atoms/Transition.js +46 -43
- package/lib/commonjs/atoms/Transition.js.map +1 -1
- package/lib/commonjs/atoms/index.js +6 -0
- package/lib/commonjs/atoms/index.js.map +1 -1
- package/lib/commonjs/atoms/inputValidation.js +56 -0
- package/lib/commonjs/atoms/inputValidation.js.map +1 -0
- package/lib/commonjs/icons/Icon.js +4 -4
- package/lib/commonjs/icons/defaultIcons.js +576 -24
- package/lib/commonjs/icons/defaultIcons.js.map +1 -1
- package/lib/commonjs/icons/index.js +6 -0
- package/lib/commonjs/icons/index.js.map +1 -1
- package/lib/commonjs/molecules/AvatarHeader.js +47 -14
- package/lib/commonjs/molecules/AvatarHeader.js.map +1 -1
- package/lib/commonjs/molecules/FormActions.js +25 -9
- package/lib/commonjs/molecules/FormActions.js.map +1 -1
- package/lib/commonjs/molecules/InfoRow.js +30 -14
- package/lib/commonjs/molecules/InfoRow.js.map +1 -1
- package/lib/commonjs/molecules/OptionCard.js +37 -22
- package/lib/commonjs/molecules/OptionCard.js.map +1 -1
- package/lib/commonjs/molecules/SegmentedControl.js +103 -14
- package/lib/commonjs/molecules/SegmentedControl.js.map +1 -1
- package/lib/commonjs/molecules/Stepper.js +61 -16
- package/lib/commonjs/molecules/Stepper.js.map +1 -1
- package/lib/commonjs/molecules/Steps.js +105 -41
- package/lib/commonjs/molecules/Steps.js.map +1 -1
- package/lib/commonjs/molecules/SymmetricGrid.js +26 -18
- package/lib/commonjs/molecules/SymmetricGrid.js.map +1 -1
- package/lib/commonjs/organisms/Alert.js +49 -35
- package/lib/commonjs/organisms/Alert.js.map +1 -1
- package/lib/commonjs/organisms/AlertProvider.js +10 -10
- package/lib/commonjs/organisms/BottomSheet.js +137 -85
- package/lib/commonjs/organisms/BottomSheet.js.map +1 -1
- package/lib/commonjs/organisms/Chart.js +197 -156
- package/lib/commonjs/organisms/Chart.js.map +1 -1
- package/lib/commonjs/organisms/DateField.js +36 -20
- package/lib/commonjs/organisms/DateField.js.map +1 -1
- package/lib/commonjs/organisms/DatePicker.js +56 -33
- package/lib/commonjs/organisms/DatePicker.js.map +1 -1
- package/lib/commonjs/organisms/List.js +62 -34
- package/lib/commonjs/organisms/List.js.map +1 -1
- package/lib/commonjs/organisms/Modal.js +120 -82
- package/lib/commonjs/organisms/Modal.js.map +1 -1
- package/lib/commonjs/organisms/NavigationBar.js +63 -24
- package/lib/commonjs/organisms/NavigationBar.js.map +1 -1
- package/lib/commonjs/organisms/OptionWheel.js +64 -64
- package/lib/commonjs/organisms/OptionWheel.js.map +1 -1
- package/lib/commonjs/organisms/ReorderableList.js +48 -27
- package/lib/commonjs/organisms/ReorderableList.js.map +1 -1
- package/lib/commonjs/organisms/Screen.js +68 -35
- package/lib/commonjs/organisms/Screen.js.map +1 -1
- package/lib/commonjs/organisms/SearchList.js +56 -26
- package/lib/commonjs/organisms/SearchList.js.map +1 -1
- package/lib/commonjs/organisms/Select.js +45 -24
- package/lib/commonjs/organisms/Select.js.map +1 -1
- package/lib/commonjs/organisms/Slides.js +36 -23
- package/lib/commonjs/organisms/Slides.js.map +1 -1
- package/lib/commonjs/organisms/ThemeToggle.js +10 -9
- package/lib/commonjs/organisms/ThemeToggle.js.map +1 -1
- package/lib/commonjs/organisms/Timeline.js +73 -56
- package/lib/commonjs/organisms/Timeline.js.map +1 -1
- package/lib/commonjs/organisms/Toast.js +46 -15
- package/lib/commonjs/organisms/Toast.js.map +1 -1
- package/lib/commonjs/organisms/ToastProvider.js +14 -10
- package/lib/commonjs/organisms/ToastProvider.js.map +1 -1
- package/lib/commonjs/organisms/Wizard.js +40 -15
- package/lib/commonjs/organisms/Wizard.js.map +1 -1
- package/lib/commonjs/organisms/chart/frame.js +25 -25
- package/lib/commonjs/organisms/chart/frame.js.map +1 -1
- package/lib/commonjs/organisms/chart/marks.js +42 -42
- package/lib/commonjs/organisms/chart/math.js +84 -85
- package/lib/commonjs/organisms/chart/math.js.map +1 -1
- package/lib/commonjs/organisms/chart/palette.js +28 -28
- package/lib/commonjs/organisms/imperativeBridge.js +5 -5
- package/lib/commonjs/organisms/imperativeBridge.js.map +1 -1
- package/lib/commonjs/organisms/useSlides.js +53 -21
- package/lib/commonjs/organisms/useSlides.js.map +1 -1
- package/lib/commonjs/safe-area/SafeAreaUIProvider.js +9 -66
- package/lib/commonjs/safe-area/SafeAreaUIProvider.js.map +1 -1
- package/lib/commonjs/safe-area/index.js.map +1 -1
- package/lib/commonjs/theme/KeyboardAvoidance.js +206 -0
- package/lib/commonjs/theme/KeyboardAvoidance.js.map +1 -0
- package/lib/commonjs/theme/NativeOverlay.js +263 -0
- package/lib/commonjs/theme/NativeOverlay.js.map +1 -0
- package/lib/commonjs/theme/UIProvider.js +86 -33
- package/lib/commonjs/theme/UIProvider.js.map +1 -1
- package/lib/commonjs/theme/colors.js +17 -17
- package/lib/commonjs/theme/colors.js.map +1 -1
- package/lib/commonjs/theme/createStyles.js +19 -16
- package/lib/commonjs/theme/createStyles.js.map +1 -1
- package/lib/commonjs/theme/createTheme.js +6 -6
- package/lib/commonjs/theme/index.js +6 -0
- package/lib/commonjs/theme/index.js.map +1 -1
- package/lib/commonjs/theme/insets.js +1 -1
- package/lib/commonjs/theme/labels.js +29 -1
- package/lib/commonjs/theme/labels.js.map +1 -1
- package/lib/commonjs/theme/palettes.js +25 -23
- package/lib/commonjs/theme/palettes.js.map +1 -1
- package/lib/commonjs/theme/tokens.js +28 -14
- package/lib/commonjs/theme/tokens.js.map +1 -1
- package/lib/commonjs/theme/useKeyboardField.js +36 -0
- package/lib/commonjs/theme/useKeyboardField.js.map +1 -0
- package/lib/commonjs/theme/useReduceMotion.js +31 -0
- package/lib/commonjs/theme/useReduceMotion.js.map +1 -0
- package/lib/module/atoms/Avatar.js +79 -8
- package/lib/module/atoms/Avatar.js.map +1 -1
- package/lib/module/atoms/Badge.js +17 -8
- package/lib/module/atoms/Badge.js.map +1 -1
- package/lib/module/atoms/Button.js +110 -41
- package/lib/module/atoms/Button.js.map +1 -1
- package/lib/module/atoms/Card.js +24 -2
- package/lib/module/atoms/Card.js.map +1 -1
- package/lib/module/atoms/Checkbox.js +42 -11
- package/lib/module/atoms/Checkbox.js.map +1 -1
- package/lib/module/atoms/Divider.js +31 -6
- package/lib/module/atoms/Divider.js.map +1 -1
- package/lib/module/atoms/EmptyState.js +58 -20
- package/lib/module/atoms/EmptyState.js.map +1 -1
- package/lib/module/atoms/Fab.js +33 -13
- package/lib/module/atoms/Fab.js.map +1 -1
- package/lib/module/atoms/Gradient.js +103 -37
- package/lib/module/atoms/Gradient.js.map +1 -1
- package/lib/module/atoms/IconButton.js +25 -4
- package/lib/module/atoms/IconButton.js.map +1 -1
- package/lib/module/atoms/Image.js +61 -25
- package/lib/module/atoms/Image.js.map +1 -1
- package/lib/module/atoms/Input.js +108 -20
- package/lib/module/atoms/Input.js.map +1 -1
- package/lib/module/atoms/KeyValueRow.js +37 -9
- package/lib/module/atoms/KeyValueRow.js.map +1 -1
- package/lib/module/atoms/PressableScale.js +25 -5
- package/lib/module/atoms/PressableScale.js.map +1 -1
- package/lib/module/atoms/ShinyText.js +29 -29
- package/lib/module/atoms/Skeleton.js +30 -13
- package/lib/module/atoms/Skeleton.js.map +1 -1
- package/lib/module/atoms/Spinner.js +82 -23
- package/lib/module/atoms/Spinner.js.map +1 -1
- package/lib/module/atoms/Text.js +56 -5
- package/lib/module/atoms/Text.js.map +1 -1
- package/lib/module/atoms/Transition.js +41 -42
- package/lib/module/atoms/Transition.js.map +1 -1
- package/lib/module/atoms/index.js +1 -1
- package/lib/module/atoms/index.js.map +1 -1
- package/lib/module/atoms/inputValidation.js +52 -0
- package/lib/module/atoms/inputValidation.js.map +1 -0
- package/lib/module/icons/Icon.js +4 -4
- package/lib/module/icons/defaultIcons.js +574 -24
- package/lib/module/icons/defaultIcons.js.map +1 -1
- package/lib/module/icons/index.js +1 -1
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/molecules/AvatarHeader.js +47 -14
- package/lib/module/molecules/AvatarHeader.js.map +1 -1
- package/lib/module/molecules/FormActions.js +25 -9
- package/lib/module/molecules/FormActions.js.map +1 -1
- package/lib/module/molecules/InfoRow.js +30 -14
- package/lib/module/molecules/InfoRow.js.map +1 -1
- package/lib/module/molecules/OptionCard.js +37 -22
- package/lib/module/molecules/OptionCard.js.map +1 -1
- package/lib/module/molecules/SegmentedControl.js +107 -18
- package/lib/module/molecules/SegmentedControl.js.map +1 -1
- package/lib/module/molecules/Stepper.js +63 -18
- package/lib/module/molecules/Stepper.js.map +1 -1
- package/lib/module/molecules/Steps.js +107 -43
- package/lib/module/molecules/Steps.js.map +1 -1
- package/lib/module/molecules/SymmetricGrid.js +26 -18
- package/lib/module/molecules/SymmetricGrid.js.map +1 -1
- package/lib/module/organisms/Alert.js +51 -37
- package/lib/module/organisms/Alert.js.map +1 -1
- package/lib/module/organisms/AlertProvider.js +10 -10
- package/lib/module/organisms/BottomSheet.js +142 -88
- package/lib/module/organisms/BottomSheet.js.map +1 -1
- package/lib/module/organisms/Chart.js +199 -158
- package/lib/module/organisms/Chart.js.map +1 -1
- package/lib/module/organisms/DateField.js +36 -20
- package/lib/module/organisms/DateField.js.map +1 -1
- package/lib/module/organisms/DatePicker.js +56 -33
- package/lib/module/organisms/DatePicker.js.map +1 -1
- package/lib/module/organisms/List.js +62 -34
- package/lib/module/organisms/List.js.map +1 -1
- package/lib/module/organisms/Modal.js +122 -84
- package/lib/module/organisms/Modal.js.map +1 -1
- package/lib/module/organisms/NavigationBar.js +64 -25
- package/lib/module/organisms/NavigationBar.js.map +1 -1
- package/lib/module/organisms/OptionWheel.js +64 -64
- package/lib/module/organisms/OptionWheel.js.map +1 -1
- package/lib/module/organisms/ReorderableList.js +48 -27
- package/lib/module/organisms/ReorderableList.js.map +1 -1
- package/lib/module/organisms/Screen.js +70 -37
- package/lib/module/organisms/Screen.js.map +1 -1
- package/lib/module/organisms/SearchList.js +56 -26
- package/lib/module/organisms/SearchList.js.map +1 -1
- package/lib/module/organisms/Select.js +46 -25
- package/lib/module/organisms/Select.js.map +1 -1
- package/lib/module/organisms/Slides.js +37 -24
- package/lib/module/organisms/Slides.js.map +1 -1
- package/lib/module/organisms/ThemeToggle.js +11 -10
- package/lib/module/organisms/ThemeToggle.js.map +1 -1
- package/lib/module/organisms/Timeline.js +73 -56
- package/lib/module/organisms/Timeline.js.map +1 -1
- package/lib/module/organisms/Toast.js +47 -16
- package/lib/module/organisms/Toast.js.map +1 -1
- package/lib/module/organisms/ToastProvider.js +15 -11
- package/lib/module/organisms/ToastProvider.js.map +1 -1
- package/lib/module/organisms/Wizard.js +41 -16
- package/lib/module/organisms/Wizard.js.map +1 -1
- package/lib/module/organisms/chart/frame.js +25 -25
- package/lib/module/organisms/chart/frame.js.map +1 -1
- package/lib/module/organisms/chart/marks.js +42 -42
- package/lib/module/organisms/chart/math.js +84 -85
- package/lib/module/organisms/chart/math.js.map +1 -1
- package/lib/module/organisms/chart/palette.js +28 -28
- package/lib/module/organisms/imperativeBridge.js +5 -5
- package/lib/module/organisms/imperativeBridge.js.map +1 -1
- package/lib/module/organisms/useSlides.js +53 -21
- package/lib/module/organisms/useSlides.js.map +1 -1
- package/lib/module/safe-area/SafeAreaUIProvider.js +10 -65
- package/lib/module/safe-area/SafeAreaUIProvider.js.map +1 -1
- package/lib/module/safe-area/index.js +1 -0
- package/lib/module/safe-area/index.js.map +1 -1
- package/lib/module/theme/KeyboardAvoidance.js +198 -0
- package/lib/module/theme/KeyboardAvoidance.js.map +1 -0
- package/lib/module/theme/NativeOverlay.js +257 -0
- package/lib/module/theme/NativeOverlay.js.map +1 -0
- package/lib/module/theme/UIProvider.js +88 -35
- package/lib/module/theme/UIProvider.js.map +1 -1
- package/lib/module/theme/colors.js +17 -17
- package/lib/module/theme/colors.js.map +1 -1
- package/lib/module/theme/createStyles.js +20 -16
- package/lib/module/theme/createStyles.js.map +1 -1
- package/lib/module/theme/createTheme.js +6 -6
- package/lib/module/theme/index.js +1 -1
- package/lib/module/theme/index.js.map +1 -1
- package/lib/module/theme/insets.js +1 -1
- package/lib/module/theme/labels.js +29 -1
- package/lib/module/theme/labels.js.map +1 -1
- package/lib/module/theme/palettes.js +25 -23
- package/lib/module/theme/palettes.js.map +1 -1
- package/lib/module/theme/tokens.js +27 -13
- package/lib/module/theme/tokens.js.map +1 -1
- package/lib/module/theme/useKeyboardField.js +33 -0
- package/lib/module/theme/useKeyboardField.js.map +1 -0
- package/lib/module/theme/useReduceMotion.js +28 -0
- package/lib/module/theme/useReduceMotion.js.map +1 -0
- package/lib/typescript/atoms/Avatar.d.ts +35 -5
- package/lib/typescript/atoms/Avatar.d.ts.map +1 -1
- package/lib/typescript/atoms/Badge.d.ts +14 -3
- package/lib/typescript/atoms/Badge.d.ts.map +1 -1
- package/lib/typescript/atoms/Button.d.ts +34 -3
- package/lib/typescript/atoms/Button.d.ts.map +1 -1
- package/lib/typescript/atoms/Card.d.ts +13 -2
- package/lib/typescript/atoms/Card.d.ts.map +1 -1
- package/lib/typescript/atoms/Checkbox.d.ts +26 -1
- package/lib/typescript/atoms/Checkbox.d.ts.map +1 -1
- package/lib/typescript/atoms/Divider.d.ts +18 -1
- package/lib/typescript/atoms/Divider.d.ts.map +1 -1
- package/lib/typescript/atoms/EmptyState.d.ts +30 -3
- package/lib/typescript/atoms/EmptyState.d.ts.map +1 -1
- package/lib/typescript/atoms/Fab.d.ts +24 -4
- package/lib/typescript/atoms/Fab.d.ts.map +1 -1
- package/lib/typescript/atoms/Gradient.d.ts +21 -15
- package/lib/typescript/atoms/Gradient.d.ts.map +1 -1
- package/lib/typescript/atoms/IconButton.d.ts +18 -4
- package/lib/typescript/atoms/IconButton.d.ts.map +1 -1
- package/lib/typescript/atoms/Image.d.ts +39 -17
- package/lib/typescript/atoms/Image.d.ts.map +1 -1
- package/lib/typescript/atoms/Input.d.ts +57 -7
- package/lib/typescript/atoms/Input.d.ts.map +1 -1
- package/lib/typescript/atoms/KeyValueRow.d.ts +16 -4
- package/lib/typescript/atoms/KeyValueRow.d.ts.map +1 -1
- package/lib/typescript/atoms/PressableScale.d.ts +12 -5
- package/lib/typescript/atoms/PressableScale.d.ts.map +1 -1
- package/lib/typescript/atoms/ShinyText.d.ts +17 -17
- package/lib/typescript/atoms/ShinyText.d.ts.map +1 -1
- package/lib/typescript/atoms/Skeleton.d.ts +12 -7
- package/lib/typescript/atoms/Skeleton.d.ts.map +1 -1
- package/lib/typescript/atoms/Spinner.d.ts +29 -1
- package/lib/typescript/atoms/Spinner.d.ts.map +1 -1
- package/lib/typescript/atoms/Text.d.ts +46 -0
- package/lib/typescript/atoms/Text.d.ts.map +1 -1
- package/lib/typescript/atoms/Transition.d.ts +19 -15
- package/lib/typescript/atoms/Transition.d.ts.map +1 -1
- package/lib/typescript/atoms/index.d.ts +3 -3
- package/lib/typescript/atoms/index.d.ts.map +1 -1
- package/lib/typescript/atoms/inputValidation.d.ts +29 -0
- package/lib/typescript/atoms/inputValidation.d.ts.map +1 -0
- package/lib/typescript/icons/Icon.d.ts +4 -4
- package/lib/typescript/icons/defaultIcons.d.ts +19 -2
- package/lib/typescript/icons/defaultIcons.d.ts.map +1 -1
- package/lib/typescript/icons/index.d.ts +2 -2
- package/lib/typescript/icons/index.d.ts.map +1 -1
- package/lib/typescript/icons/types.d.ts +13 -3
- package/lib/typescript/icons/types.d.ts.map +1 -1
- package/lib/typescript/molecules/AvatarHeader.d.ts +23 -4
- package/lib/typescript/molecules/AvatarHeader.d.ts.map +1 -1
- package/lib/typescript/molecules/FormActions.d.ts +21 -4
- package/lib/typescript/molecules/FormActions.d.ts.map +1 -1
- package/lib/typescript/molecules/InfoRow.d.ts +17 -3
- package/lib/typescript/molecules/InfoRow.d.ts.map +1 -1
- package/lib/typescript/molecules/OptionCard.d.ts +20 -5
- package/lib/typescript/molecules/OptionCard.d.ts.map +1 -1
- package/lib/typescript/molecules/SegmentedControl.d.ts +18 -2
- package/lib/typescript/molecules/SegmentedControl.d.ts.map +1 -1
- package/lib/typescript/molecules/Stepper.d.ts +23 -7
- package/lib/typescript/molecules/Stepper.d.ts.map +1 -1
- package/lib/typescript/molecules/Steps.d.ts +18 -4
- package/lib/typescript/molecules/Steps.d.ts.map +1 -1
- package/lib/typescript/molecules/SymmetricGrid.d.ts +15 -5
- package/lib/typescript/molecules/SymmetricGrid.d.ts.map +1 -1
- package/lib/typescript/organisms/Alert.d.ts +28 -2
- package/lib/typescript/organisms/Alert.d.ts.map +1 -1
- package/lib/typescript/organisms/AlertProvider.d.ts +10 -10
- package/lib/typescript/organisms/AlertProvider.d.ts.map +1 -1
- package/lib/typescript/organisms/BottomSheet.d.ts +20 -5
- package/lib/typescript/organisms/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/organisms/Chart.d.ts +86 -75
- package/lib/typescript/organisms/Chart.d.ts.map +1 -1
- package/lib/typescript/organisms/DateField.d.ts +17 -3
- package/lib/typescript/organisms/DateField.d.ts.map +1 -1
- package/lib/typescript/organisms/DatePicker.d.ts +7 -11
- package/lib/typescript/organisms/DatePicker.d.ts.map +1 -1
- package/lib/typescript/organisms/List.d.ts +30 -3
- package/lib/typescript/organisms/List.d.ts.map +1 -1
- package/lib/typescript/organisms/Modal.d.ts +30 -3
- package/lib/typescript/organisms/Modal.d.ts.map +1 -1
- package/lib/typescript/organisms/NavigationBar.d.ts +26 -7
- package/lib/typescript/organisms/NavigationBar.d.ts.map +1 -1
- package/lib/typescript/organisms/OptionWheel.d.ts +20 -16
- package/lib/typescript/organisms/OptionWheel.d.ts.map +1 -1
- package/lib/typescript/organisms/ReorderableList.d.ts +20 -11
- package/lib/typescript/organisms/ReorderableList.d.ts.map +1 -1
- package/lib/typescript/organisms/Screen.d.ts +27 -8
- package/lib/typescript/organisms/Screen.d.ts.map +1 -1
- package/lib/typescript/organisms/SearchList.d.ts +46 -3
- package/lib/typescript/organisms/SearchList.d.ts.map +1 -1
- package/lib/typescript/organisms/Select.d.ts +26 -6
- package/lib/typescript/organisms/Select.d.ts.map +1 -1
- package/lib/typescript/organisms/Slides.d.ts +44 -26
- package/lib/typescript/organisms/Slides.d.ts.map +1 -1
- package/lib/typescript/organisms/ThemeToggle.d.ts +6 -2
- package/lib/typescript/organisms/ThemeToggle.d.ts.map +1 -1
- package/lib/typescript/organisms/Timeline.d.ts +26 -9
- package/lib/typescript/organisms/Timeline.d.ts.map +1 -1
- package/lib/typescript/organisms/Toast.d.ts +19 -4
- package/lib/typescript/organisms/Toast.d.ts.map +1 -1
- package/lib/typescript/organisms/ToastProvider.d.ts +8 -8
- package/lib/typescript/organisms/ToastProvider.d.ts.map +1 -1
- package/lib/typescript/organisms/Wizard.d.ts +24 -6
- package/lib/typescript/organisms/Wizard.d.ts.map +1 -1
- package/lib/typescript/organisms/chart/frame.d.ts +21 -21
- package/lib/typescript/organisms/chart/frame.d.ts.map +1 -1
- package/lib/typescript/organisms/chart/marks.d.ts +28 -28
- package/lib/typescript/organisms/chart/marks.d.ts.map +1 -1
- package/lib/typescript/organisms/chart/math.d.ts +69 -70
- package/lib/typescript/organisms/chart/math.d.ts.map +1 -1
- package/lib/typescript/organisms/chart/palette.d.ts +2 -2
- package/lib/typescript/organisms/chart/palette.d.ts.map +1 -1
- package/lib/typescript/organisms/imperativeBridge.d.ts +4 -4
- package/lib/typescript/organisms/useSlides.d.ts +8 -16
- package/lib/typescript/organisms/useSlides.d.ts.map +1 -1
- package/lib/typescript/safe-area/SafeAreaUIProvider.d.ts +9 -7
- package/lib/typescript/safe-area/SafeAreaUIProvider.d.ts.map +1 -1
- package/lib/typescript/safe-area/index.d.ts.map +1 -1
- package/lib/typescript/theme/KeyboardAvoidance.d.ts +62 -0
- package/lib/typescript/theme/KeyboardAvoidance.d.ts.map +1 -0
- package/lib/typescript/theme/NativeOverlay.d.ts +43 -0
- package/lib/typescript/theme/NativeOverlay.d.ts.map +1 -0
- package/lib/typescript/theme/UIProvider.d.ts +38 -20
- package/lib/typescript/theme/UIProvider.d.ts.map +1 -1
- package/lib/typescript/theme/colors.d.ts +13 -13
- package/lib/typescript/theme/colors.d.ts.map +1 -1
- package/lib/typescript/theme/createStyles.d.ts +20 -14
- package/lib/typescript/theme/createStyles.d.ts.map +1 -1
- package/lib/typescript/theme/createTheme.d.ts +5 -5
- package/lib/typescript/theme/index.d.ts +1 -1
- package/lib/typescript/theme/index.d.ts.map +1 -1
- package/lib/typescript/theme/insets.d.ts +1 -1
- package/lib/typescript/theme/insets.d.ts.map +1 -1
- package/lib/typescript/theme/labels.d.ts +57 -2
- package/lib/typescript/theme/labels.d.ts.map +1 -1
- package/lib/typescript/theme/palettes.d.ts +25 -19
- package/lib/typescript/theme/palettes.d.ts.map +1 -1
- package/lib/typescript/theme/tokens.d.ts +15 -8
- package/lib/typescript/theme/tokens.d.ts.map +1 -1
- package/lib/typescript/theme/types.d.ts +7 -7
- package/lib/typescript/theme/types.d.ts.map +1 -1
- package/lib/typescript/theme/useKeyboardField.d.ts +17 -0
- package/lib/typescript/theme/useKeyboardField.d.ts.map +1 -0
- package/lib/typescript/theme/useReduceMotion.d.ts +7 -0
- package/lib/typescript/theme/useReduceMotion.d.ts.map +1 -0
- package/llms.txt +4 -4
- package/package.json +15 -14
- package/registry/alert-provider.json +4 -3
- package/registry/alert.json +3 -2
- package/registry/avatar-header.json +1 -1
- package/registry/avatar.json +3 -2
- package/registry/badge.json +1 -1
- package/registry/bottom-sheet.json +1 -1
- package/registry/button.json +3 -2
- package/registry/card.json +1 -1
- package/registry/chart.json +5 -5
- package/registry/checkbox.json +3 -2
- package/registry/core.json +31 -15
- package/registry/date-field.json +1 -1
- package/registry/date-picker.json +3 -2
- package/registry/divider.json +1 -1
- package/registry/empty-state.json +4 -2
- package/registry/fab.json +3 -2
- package/registry/form-actions.json +3 -2
- package/registry/gradient.json +1 -1
- package/registry/icon-button.json +3 -2
- package/registry/image.json +1 -1
- package/registry/index.json +79 -61
- package/registry/info-row.json +1 -1
- package/registry/input.json +5 -1
- package/registry/key-value-row.json +1 -1
- package/registry/list.json +3 -1
- package/registry/manifest.json +3 -1
- package/registry/modal.json +1 -1
- package/registry/navigation-bar.json +1 -1
- package/registry/option-card.json +3 -2
- package/registry/option-wheel.json +1 -1
- package/registry/pressable-scale.json +3 -2
- package/registry/reorderable-list.json +1 -1
- package/registry/screen.json +1 -1
- package/registry/search-list.json +7 -1
- package/registry/segmented-control.json +1 -1
- package/registry/select.json +1 -1
- package/registry/shiny-text.json +1 -1
- package/registry/skeleton.json +3 -2
- package/registry/slides.json +2 -2
- package/registry/spinner.json +1 -1
- package/registry/stepper.json +1 -1
- package/registry/steps.json +1 -1
- package/registry/symmetric-grid.json +1 -1
- package/registry/theme-toggle.json +1 -1
- package/registry/timeline.json +1 -1
- package/registry/title.json +1 -1
- package/registry/toast-provider.json +2 -2
- package/registry/toast.json +1 -1
- package/registry/transition.json +1 -1
- package/registry/wizard.json +1 -1
- package/src/atoms/Avatar.tsx +117 -26
- package/src/atoms/Badge.tsx +20 -9
- package/src/atoms/Button.tsx +102 -30
- package/src/atoms/Card.tsx +23 -3
- package/src/atoms/Checkbox.tsx +49 -12
- package/src/atoms/Divider.tsx +34 -4
- package/src/atoms/EmptyState.tsx +63 -16
- package/src/atoms/Fab.tsx +56 -9
- package/src/atoms/Gradient.tsx +92 -41
- package/src/atoms/IconButton.tsx +27 -4
- package/src/atoms/Image.tsx +74 -28
- package/src/atoms/Input.tsx +129 -19
- package/src/atoms/KeyValueRow.tsx +72 -28
- package/src/atoms/PressableScale.tsx +31 -7
- package/src/atoms/ShinyText.tsx +31 -31
- package/src/atoms/Skeleton.tsx +37 -17
- package/src/atoms/Spinner.tsx +87 -24
- package/src/atoms/Text.tsx +66 -6
- package/src/atoms/Transition.tsx +40 -44
- package/src/atoms/index.ts +3 -3
- package/src/atoms/inputValidation.ts +59 -0
- package/src/icons/Icon.tsx +4 -4
- package/src/icons/defaultIcons.tsx +445 -22
- package/src/icons/index.ts +2 -2
- package/src/icons/types.ts +26 -4
- package/src/molecules/AvatarHeader.tsx +88 -34
- package/src/molecules/FormActions.tsx +36 -6
- package/src/molecules/InfoRow.tsx +39 -12
- package/src/molecules/OptionCard.tsx +55 -20
- package/src/molecules/SegmentedControl.tsx +135 -15
- package/src/molecules/Stepper.tsx +73 -19
- package/src/molecules/Steps.tsx +121 -39
- package/src/molecules/SymmetricGrid.tsx +28 -12
- package/src/organisms/Alert.tsx +97 -26
- package/src/organisms/AlertProvider.tsx +13 -13
- package/src/organisms/BottomSheet.tsx +115 -43
- package/src/organisms/Chart.tsx +223 -165
- package/src/organisms/DateField.tsx +40 -15
- package/src/organisms/DatePicker.tsx +53 -32
- package/src/organisms/List.tsx +64 -15
- package/src/organisms/Modal.tsx +122 -63
- package/src/organisms/NavigationBar.tsx +73 -23
- package/src/organisms/OptionWheel.tsx +70 -66
- package/src/organisms/ReorderableList.tsx +49 -27
- package/src/organisms/Screen.tsx +79 -42
- package/src/organisms/SearchList.tsx +84 -20
- package/src/organisms/Select.tsx +63 -29
- package/src/organisms/Slides.tsx +63 -44
- package/src/organisms/ThemeToggle.tsx +15 -6
- package/src/organisms/Timeline.tsx +79 -62
- package/src/organisms/Toast.tsx +50 -15
- package/src/organisms/ToastProvider.tsx +17 -13
- package/src/organisms/Wizard.tsx +58 -21
- package/src/organisms/chart/frame.tsx +35 -35
- package/src/organisms/chart/marks.tsx +53 -53
- package/src/organisms/chart/math.ts +93 -94
- package/src/organisms/chart/palette.ts +28 -28
- package/src/organisms/imperativeBridge.ts +5 -5
- package/src/organisms/useSlides.ts +66 -31
- package/src/safe-area/SafeAreaUIProvider.tsx +9 -70
- package/src/safe-area/index.ts +1 -0
- package/src/theme/KeyboardAvoidance.tsx +216 -0
- package/src/theme/NativeOverlay.tsx +269 -0
- package/src/theme/UIProvider.tsx +109 -46
- package/src/theme/colors.ts +21 -21
- package/src/theme/createStyles.ts +23 -19
- package/src/theme/createTheme.ts +6 -6
- package/src/theme/index.ts +1 -1
- package/src/theme/insets.ts +1 -1
- package/src/theme/labels.ts +85 -2
- package/src/theme/palettes.ts +33 -25
- package/src/theme/tokens.ts +27 -13
- package/src/theme/types.ts +7 -7
- package/src/theme/useKeyboardField.ts +33 -0
- package/src/theme/useReduceMotion.ts +27 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { useReduceMotion } from '../atoms/Transition';
|
|
5
5
|
|
|
6
|
-
/**
|
|
6
|
+
/** A page of the scroll. The infinite mode's clones repeat a neighbor's `real`. */
|
|
7
7
|
|
|
8
8
|
export function clampIndex(value, total) {
|
|
9
9
|
if (total === 0) return 0;
|
|
@@ -14,13 +14,15 @@ export function clampIndex(value, total) {
|
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* useSlides
|
|
17
|
-
*
|
|
18
|
-
* scroll,
|
|
19
|
-
*
|
|
17
|
+
* Everything in `Slides` that isn't visible: which page is framed, when to
|
|
18
|
+
* move the scroll, how the infinite mode's clones map to real indexes, and the
|
|
19
|
+
* autoplay clock.
|
|
20
20
|
*
|
|
21
|
-
*
|
|
22
|
-
* `T
|
|
21
|
+
* It works only with indexes, never with the items: that way it doesn't need
|
|
22
|
+
* the component's generic `T`, and the UI resolves `pages[i].real` against its own `data`.
|
|
23
23
|
*/
|
|
24
|
+
/** Points a finger has to move the slides for the drag to count as a swipe. */
|
|
25
|
+
const DRAG_SLOP = 10;
|
|
24
26
|
export function useSlides({
|
|
25
27
|
total,
|
|
26
28
|
orientation,
|
|
@@ -33,8 +35,8 @@ export function useSlides({
|
|
|
33
35
|
}) {
|
|
34
36
|
const motionReduced = useReduceMotion();
|
|
35
37
|
const isHorizontal = orientation === 'horizontal';
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
+
// A single element has nowhere to cycle to: it would be swipeable between
|
|
39
|
+
// three copies of the same thing.
|
|
38
40
|
const isLoop = loop && total > 1;
|
|
39
41
|
const [uncontrolled, setUncontrolled] = useState(() => clampIndex(defaultIndex, total));
|
|
40
42
|
const active = clampIndex(index ?? uncontrolled, total);
|
|
@@ -47,11 +49,18 @@ export function useSlides({
|
|
|
47
49
|
});
|
|
48
50
|
const pageSize = isHorizontal ? size.width : size.height;
|
|
49
51
|
const scrollRef = useRef(null);
|
|
50
|
-
/**
|
|
52
|
+
/** The page actually visible (index within `pages`, clones included). */
|
|
51
53
|
const offsetPageRef = useRef(isLoop ? 1 : 0);
|
|
52
54
|
const didInitRef = useRef(false);
|
|
53
55
|
const lastPageSizeRef = useRef(0);
|
|
54
56
|
const draggingRef = useRef(false);
|
|
57
|
+
/**
|
|
58
|
+
* Page an animated `scrollTo` was sent to and hasn't reached yet. On iOS a
|
|
59
|
+
* touch (tapping another indicator) stops that animation midway: the
|
|
60
|
+
* scroll then ends on the wrong page, and committing it undid the tap.
|
|
61
|
+
*/
|
|
62
|
+
const pendingPageRef = useRef(null);
|
|
63
|
+
const dragStartRef = useRef(0);
|
|
55
64
|
const pages = useMemo(() => {
|
|
56
65
|
const real = Array.from({
|
|
57
66
|
length: total
|
|
@@ -83,19 +92,20 @@ export function useSlides({
|
|
|
83
92
|
onIndexChange?.(next);
|
|
84
93
|
}, [index, onIndexChange]);
|
|
85
94
|
|
|
86
|
-
//
|
|
87
|
-
//
|
|
95
|
+
// Only acts when the index and the visible page disagree: a change that
|
|
96
|
+
// came from the gesture itself doesn't fire a second scroll on top of the one that stopped.
|
|
88
97
|
useEffect(() => {
|
|
89
98
|
if (pageSize === 0 || total === 0) return;
|
|
90
99
|
const target = isLoop ? active + 1 : active;
|
|
91
100
|
const resized = lastPageSizeRef.current !== pageSize;
|
|
92
101
|
if (offsetPageRef.current === target && didInitRef.current && !resized) return;
|
|
93
|
-
//
|
|
94
|
-
//
|
|
102
|
+
// Neither the first positioning nor the rearrangement on rotation is a
|
|
103
|
+
// slide change: animating them would be a slide nobody asked for.
|
|
95
104
|
const animated = didInitRef.current && !resized;
|
|
96
105
|
didInitRef.current = true;
|
|
97
106
|
lastPageSizeRef.current = pageSize;
|
|
98
107
|
offsetPageRef.current = target;
|
|
108
|
+
pendingPageRef.current = animated ? target : null;
|
|
99
109
|
scrollToPage(target, animated);
|
|
100
110
|
}, [active, isLoop, pageSize, scrollToPage, total]);
|
|
101
111
|
const onLayout = useCallback(event => {
|
|
@@ -115,6 +125,16 @@ export function useSlides({
|
|
|
115
125
|
contentOffset
|
|
116
126
|
} = event.nativeEvent;
|
|
117
127
|
const page = Math.round((isHorizontal ? contentOffset.x : contentOffset.y) / pageSize);
|
|
128
|
+
// A scrollTo still on its way: if it stopped short (a touch interrupted
|
|
129
|
+
// it), finish the trip instead of committing where it stopped.
|
|
130
|
+
const pending = pendingPageRef.current;
|
|
131
|
+
if (pending !== null) {
|
|
132
|
+
if (page !== pending) {
|
|
133
|
+
scrollToPage(pending, true);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
pendingPageRef.current = null;
|
|
137
|
+
}
|
|
118
138
|
if (isLoop) {
|
|
119
139
|
if (page === 0) {
|
|
120
140
|
offsetPageRef.current = total;
|
|
@@ -135,14 +155,25 @@ export function useSlides({
|
|
|
135
155
|
offsetPageRef.current = page;
|
|
136
156
|
goTo(clampIndex(page, total));
|
|
137
157
|
}, [goTo, isHorizontal, isLoop, pageSize, scrollToPage, total]);
|
|
138
|
-
const onScrollBeginDrag = useCallback(
|
|
158
|
+
const onScrollBeginDrag = useCallback(event => {
|
|
139
159
|
draggingRef.current = true;
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
160
|
+
const {
|
|
161
|
+
contentOffset
|
|
162
|
+
} = event.nativeEvent;
|
|
163
|
+
dragStartRef.current = isHorizontal ? contentOffset.x : contentOffset.y;
|
|
164
|
+
}, [isHorizontal]);
|
|
165
|
+
const onScrollEndDrag = useCallback(event => {
|
|
166
|
+
// A short drag can be released without momentum and not emit
|
|
167
|
+
// momentumScrollEnd: without this autoPlay would stay paused forever.
|
|
144
168
|
draggingRef.current = false;
|
|
145
|
-
|
|
169
|
+
// A finger that really moved the slides takes over from a pending
|
|
170
|
+
// scrollTo; a tap (no movement) doesn't.
|
|
171
|
+
const {
|
|
172
|
+
contentOffset
|
|
173
|
+
} = event.nativeEvent;
|
|
174
|
+
const moved = Math.abs((isHorizontal ? contentOffset.x : contentOffset.y) - dragStartRef.current);
|
|
175
|
+
if (moved > DRAG_SLOP) pendingPageRef.current = null;
|
|
176
|
+
}, [isHorizontal]);
|
|
146
177
|
const toggleAutoPlay = useCallback(() => setAutoPlayPaused(paused => !paused), []);
|
|
147
178
|
useEffect(() => {
|
|
148
179
|
if (!autoPlay || autoPlayPaused || motionReduced || total < 2 || pageSize === 0) return;
|
|
@@ -154,9 +185,10 @@ export function useSlides({
|
|
|
154
185
|
return;
|
|
155
186
|
}
|
|
156
187
|
if (!isLoop) return;
|
|
157
|
-
//
|
|
158
|
-
//
|
|
188
|
+
// Last one in infinite mode: advances to the clone of the first instead
|
|
189
|
+
// of rewinding; momentumScrollEnd completes the jump to the original.
|
|
159
190
|
offsetPageRef.current = total + 1;
|
|
191
|
+
pendingPageRef.current = total + 1;
|
|
160
192
|
scrollToPage(total + 1, true);
|
|
161
193
|
}, interval);
|
|
162
194
|
return () => clearInterval(timer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","useReduceMotion","clampIndex","value","total","useSlides","orientation","loop","autoPlay","interval","index","defaultIndex","onIndexChange","motionReduced","isHorizontal","isLoop","uncontrolled","setUncontrolled","active","activeRef","current","autoPlayPaused","setAutoPlayPaused","size","setSize","width","height","pageSize","scrollRef","offsetPageRef","didInitRef","lastPageSizeRef","draggingRef","pages","real","Array","from","length","_","i","clone","scrollToPage","page","animated","offset","scrollTo","x","y","goTo","next","target","resized","onLayout","event","nativeEvent","layout","prev","onMomentumScrollEnd","contentOffset","Math","round","onScrollBeginDrag","onScrollEndDrag","toggleAutoPlay","paused","timer","setInterval","clearInterval"],"sourceRoot":"../../../src","sources":["organisms/useSlides.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","useReduceMotion","clampIndex","value","total","DRAG_SLOP","useSlides","orientation","loop","autoPlay","interval","index","defaultIndex","onIndexChange","motionReduced","isHorizontal","isLoop","uncontrolled","setUncontrolled","active","activeRef","current","autoPlayPaused","setAutoPlayPaused","size","setSize","width","height","pageSize","scrollRef","offsetPageRef","didInitRef","lastPageSizeRef","draggingRef","pendingPageRef","dragStartRef","pages","real","Array","from","length","_","i","clone","scrollToPage","page","animated","offset","scrollTo","x","y","goTo","next","target","resized","onLayout","event","nativeEvent","layout","prev","onMomentumScrollEnd","contentOffset","Math","round","pending","onScrollBeginDrag","onScrollEndDrag","moved","abs","toggleAutoPlay","paused","timer","setInterval","clearInterval"],"sourceRoot":"../../../src","sources":["organisms/useSlides.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,68 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
};
|
|
14
|
-
function sameInsets(a, b) {
|
|
15
|
-
return a.top === b.top && a.right === b.right && a.bottom === b.bottom && a.left === b.left;
|
|
16
|
-
}
|
|
17
|
-
function InsetsProbe({
|
|
18
|
-
onMeasure
|
|
19
|
-
}) {
|
|
20
|
-
const insets = useSafeAreaInsets();
|
|
21
|
-
useEffect(() => {
|
|
22
|
-
onMeasure(insets);
|
|
23
|
-
}, [insets, onMeasure]);
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
function RemeasuringModalSafeAreaBoundary({
|
|
27
|
-
children
|
|
28
|
-
}) {
|
|
29
|
-
const ambient = useInsets();
|
|
30
|
-
const [measured, setMeasured] = useState(null);
|
|
31
|
-
const onMeasure = React.useCallback(next => setMeasured(prev => prev && sameInsets(prev, next) ? prev : next), []);
|
|
32
|
-
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
33
|
-
children: [/*#__PURE__*/_jsx(SafeAreaProvider, {
|
|
34
|
-
style: probeStyle,
|
|
35
|
-
pointerEvents: "none",
|
|
36
|
-
children: /*#__PURE__*/_jsx(InsetsProbe, {
|
|
37
|
-
onMeasure: onMeasure
|
|
38
|
-
})
|
|
39
|
-
}), children(measured ?? ambient)]
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
function Measured({
|
|
43
|
-
insets: override,
|
|
44
|
-
children,
|
|
45
|
-
...rest
|
|
46
|
-
}) {
|
|
47
|
-
const measured = useSafeAreaInsets();
|
|
48
|
-
return /*#__PURE__*/_jsx(UIProvider, {
|
|
49
|
-
insets: override ?? measured,
|
|
50
|
-
ModalSafeAreaBoundary: RemeasuringModalSafeAreaBoundary,
|
|
51
|
-
...rest,
|
|
52
|
-
children: children
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
export function SafeAreaUIProvider({
|
|
56
|
-
mountSafeAreaProvider = true,
|
|
57
|
-
...props
|
|
58
|
-
}) {
|
|
59
|
-
if (!mountSafeAreaProvider) return /*#__PURE__*/_jsx(Measured, {
|
|
60
|
-
...props
|
|
61
|
-
});
|
|
62
|
-
return /*#__PURE__*/_jsx(SafeAreaProvider, {
|
|
63
|
-
children: /*#__PURE__*/_jsx(Measured, {
|
|
64
|
-
...props
|
|
65
|
-
})
|
|
66
|
-
});
|
|
67
|
-
}
|
|
3
|
+
import { UIProvider } from '../theme/UIProvider';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated Use `UIProvider` from 'orn-ui': it now measures the safe area
|
|
7
|
+
* insets itself (react-native-safe-area-context is a required peer). This
|
|
8
|
+
* alias stays for one minor version so existing imports keep working.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** @deprecated Use `UIProvider` from 'orn-ui' — same component. */
|
|
12
|
+
export const SafeAreaUIProvider = UIProvider;
|
|
68
13
|
//# sourceMappingURL=SafeAreaUIProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["UIProvider","SafeAreaUIProvider"],"sourceRoot":"../../../src","sources":["safe-area/SafeAreaUIProvider.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAA8B,qBAAqB;;AAEtE;AACA;AACA;AACA;AACA;;AAGA;AACA,OAAO,MAAMC,kBAAkB,GAAGD,UAAU","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SafeAreaUIProvider"],"sourceRoot":"../../../src","sources":["safe-area/index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,sBAAsB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["SafeAreaUIProvider"],"sourceRoot":"../../../src","sources":["safe-area/index.ts"],"mappings":";;AAAA;AACA,SAASA,kBAAkB,QAAQ,sBAAsB","ignoreList":[]}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { createContext, useContext, useEffect, useMemo, useRef } from 'react';
|
|
4
|
+
import { Animated, Easing, Keyboard, Platform, StyleSheet, View } from 'react-native';
|
|
5
|
+
import { useReduceMotion } from './useReduceMotion';
|
|
6
|
+
|
|
7
|
+
/** A focused field the host has to keep in view. */
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
const KeyboardHostContext = /*#__PURE__*/createContext(null);
|
|
10
|
+
|
|
11
|
+
/** The active host, or null if a container already handles the keyboard (or it is off). */
|
|
12
|
+
export function useKeyboardHost() {
|
|
13
|
+
return useContext(KeyboardHostContext);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* For containers that already keep the focused field visible on their own:
|
|
18
|
+
* a Modal or BottomSheet (its own native window, which the root's shift
|
|
19
|
+
* doesn't move) or a ScrollView with `automaticallyAdjustKeyboardInsets`.
|
|
20
|
+
* Inside, Inputs ask nothing of the host and the keyboard isn't compensated
|
|
21
|
+
* twice.
|
|
22
|
+
*/
|
|
23
|
+
export function KeyboardHandled({
|
|
24
|
+
children
|
|
25
|
+
}) {
|
|
26
|
+
return /*#__PURE__*/_jsx(KeyboardHostContext.Provider, {
|
|
27
|
+
value: null,
|
|
28
|
+
children: children
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** Duration when the keyboard event doesn't carry one (Android). */
|
|
33
|
+
const FALLBACK_DURATION = 250;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Vertical shift (≤ 0) so the whole field sits above the keyboard, with
|
|
37
|
+
* `margin` of room, without its top edge going past `topLimit`.
|
|
38
|
+
* `fieldY` is the position measured with the `current` shift applied.
|
|
39
|
+
* If the field is already visible, it moves back toward 0: it never rises more than needed.
|
|
40
|
+
*/
|
|
41
|
+
export function computeKeyboardOffset({
|
|
42
|
+
fieldY,
|
|
43
|
+
fieldHeight,
|
|
44
|
+
keyboardTop,
|
|
45
|
+
current,
|
|
46
|
+
margin,
|
|
47
|
+
topLimit
|
|
48
|
+
}) {
|
|
49
|
+
const base = fieldY - current;
|
|
50
|
+
let target = Math.min(0, keyboardTop - margin - (base + fieldHeight));
|
|
51
|
+
// A field taller than the available gap: seeing where you type (its top
|
|
52
|
+
// part) takes priority over its error.
|
|
53
|
+
target = Math.max(target, topLimit - base);
|
|
54
|
+
return Math.min(0, target);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* An area that shifts so the focused Input inside it sits above the
|
|
59
|
+
* keyboard (transform on the native thread; it returns to 0 on close). It is
|
|
60
|
+
* Android's `adjustPan`, the same on both platforms.
|
|
61
|
+
*
|
|
62
|
+
* - The root UIProvider mounts one around the whole app: the fallback, so
|
|
63
|
+
* an Input is visible even when it isn't inside a Screen.
|
|
64
|
+
* - Screen mounts another around its content, with `clip`: only the content
|
|
65
|
+
* moves and the header (`header` prop) and the tab bar stay still, as in a
|
|
66
|
+
* native app. The Input registers with the nearest area, so inside a
|
|
67
|
+
* Screen the root doesn't move.
|
|
68
|
+
*
|
|
69
|
+
* With `clip`, whatever rises is clipped at the area's top edge and the field
|
|
70
|
+
* never goes above that edge (it stays under the header).
|
|
71
|
+
*/
|
|
72
|
+
export function KeyboardPanArea({
|
|
73
|
+
margin,
|
|
74
|
+
topLimit,
|
|
75
|
+
clip = false,
|
|
76
|
+
children
|
|
77
|
+
}) {
|
|
78
|
+
const areaRef = useRef(null);
|
|
79
|
+
const pan = useRef(new Animated.Value(0)).current;
|
|
80
|
+
const offset = useRef(0);
|
|
81
|
+
const field = useRef(null);
|
|
82
|
+
const keyboardTop = useRef(null);
|
|
83
|
+
const reduceMotion = useReduceMotion();
|
|
84
|
+
const config = useRef({
|
|
85
|
+
margin,
|
|
86
|
+
topLimit,
|
|
87
|
+
reduceMotion,
|
|
88
|
+
clip
|
|
89
|
+
});
|
|
90
|
+
config.current = {
|
|
91
|
+
margin,
|
|
92
|
+
topLimit,
|
|
93
|
+
reduceMotion,
|
|
94
|
+
clip
|
|
95
|
+
};
|
|
96
|
+
const host = useMemo(() => {
|
|
97
|
+
const animateTo = (to, duration) => {
|
|
98
|
+
if (to === offset.current) return;
|
|
99
|
+
offset.current = to;
|
|
100
|
+
Animated.timing(pan, {
|
|
101
|
+
toValue: to,
|
|
102
|
+
duration: config.current.reduceMotion ? 0 : duration,
|
|
103
|
+
easing: Easing.out(Easing.cubic),
|
|
104
|
+
useNativeDriver: true
|
|
105
|
+
}).start();
|
|
106
|
+
};
|
|
107
|
+
const adjust = async duration => {
|
|
108
|
+
const current = field.current;
|
|
109
|
+
const top = keyboardTop.current;
|
|
110
|
+
if (!current || top === null) return;
|
|
111
|
+
const box = await current.measure();
|
|
112
|
+
// While measuring, focus may have moved to another field or the keyboard closed.
|
|
113
|
+
if (!box || field.current !== current || keyboardTop.current === null) return;
|
|
114
|
+
let limit = config.current.topLimit;
|
|
115
|
+
if (config.current.clip) {
|
|
116
|
+
const areaTop = await measureTop(areaRef.current);
|
|
117
|
+
if (areaTop !== null) limit = Math.max(limit, areaTop);
|
|
118
|
+
}
|
|
119
|
+
animateTo(computeKeyboardOffset({
|
|
120
|
+
fieldY: box.y,
|
|
121
|
+
fieldHeight: box.height,
|
|
122
|
+
keyboardTop: keyboardTop.current,
|
|
123
|
+
current: offset.current,
|
|
124
|
+
margin: config.current.margin,
|
|
125
|
+
topLimit: limit
|
|
126
|
+
}), duration);
|
|
127
|
+
};
|
|
128
|
+
return {
|
|
129
|
+
focus(next) {
|
|
130
|
+
field.current = next;
|
|
131
|
+
// With the keyboard already open (moving from one field to another) it readjusts right away.
|
|
132
|
+
if (keyboardTop.current !== null) void adjust(FALLBACK_DURATION);
|
|
133
|
+
},
|
|
134
|
+
blur(prev) {
|
|
135
|
+
if (field.current === prev) field.current = null;
|
|
136
|
+
},
|
|
137
|
+
// Internal use by the listeners below.
|
|
138
|
+
_show(e) {
|
|
139
|
+
if (!e?.endCoordinates) return;
|
|
140
|
+
keyboardTop.current = e.endCoordinates.screenY;
|
|
141
|
+
const duration = e.duration || FALLBACK_DURATION;
|
|
142
|
+
// Android emits didShow after resizing the window: measure on the
|
|
143
|
+
// next frame, with the layout already settled.
|
|
144
|
+
if (Platform.OS === 'android') requestAnimationFrame(() => void adjust(duration));else void adjust(duration);
|
|
145
|
+
},
|
|
146
|
+
_hide(e) {
|
|
147
|
+
keyboardTop.current = null;
|
|
148
|
+
animateTo(0, e?.duration || FALLBACK_DURATION);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
}, [pan]);
|
|
152
|
+
useEffect(() => {
|
|
153
|
+
const h = host;
|
|
154
|
+
// iOS notifies before animating (will*): the shift follows the keyboard.
|
|
155
|
+
// Android only has did*.
|
|
156
|
+
const subs = Platform.OS === 'ios' ? [Keyboard.addListener('keyboardWillShow', h._show), Keyboard.addListener('keyboardWillChangeFrame', h._show), Keyboard.addListener('keyboardWillHide', h._hide)] : [Keyboard.addListener('keyboardDidShow', h._show), Keyboard.addListener('keyboardDidHide', h._hide)];
|
|
157
|
+
return () => subs.forEach(s => s.remove());
|
|
158
|
+
}, [host]);
|
|
159
|
+
const moving = /*#__PURE__*/_jsx(Animated.View, {
|
|
160
|
+
style: [styles.fill, {
|
|
161
|
+
transform: [{
|
|
162
|
+
translateY: pan
|
|
163
|
+
}]
|
|
164
|
+
}],
|
|
165
|
+
children: children
|
|
166
|
+
});
|
|
167
|
+
return /*#__PURE__*/_jsx(KeyboardHostContext.Provider, {
|
|
168
|
+
value: host,
|
|
169
|
+
children: clip ? /*#__PURE__*/_jsx(View, {
|
|
170
|
+
ref: areaRef,
|
|
171
|
+
style: [styles.fill, styles.clip],
|
|
172
|
+
collapsable: false,
|
|
173
|
+
children: moving
|
|
174
|
+
}) : moving
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/** If the measurement never comes back (node unmounted), carry on without that limit. */
|
|
179
|
+
const MEASURE_TIMEOUT_MS = 100;
|
|
180
|
+
function measureTop(node) {
|
|
181
|
+
return new Promise(resolve => {
|
|
182
|
+
if (!node) return resolve(null);
|
|
183
|
+
const timer = setTimeout(() => resolve(null), MEASURE_TIMEOUT_MS);
|
|
184
|
+
node.measureInWindow((_x, y) => {
|
|
185
|
+
clearTimeout(timer);
|
|
186
|
+
resolve(y);
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
const styles = StyleSheet.create({
|
|
191
|
+
fill: {
|
|
192
|
+
flex: 1
|
|
193
|
+
},
|
|
194
|
+
clip: {
|
|
195
|
+
overflow: 'hidden'
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
//# sourceMappingURL=KeyboardAvoidance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","createContext","useContext","useEffect","useMemo","useRef","Animated","Easing","Keyboard","Platform","StyleSheet","View","useReduceMotion","jsx","_jsx","KeyboardHostContext","useKeyboardHost","KeyboardHandled","children","Provider","value","FALLBACK_DURATION","computeKeyboardOffset","fieldY","fieldHeight","keyboardTop","current","margin","topLimit","base","target","Math","min","max","KeyboardPanArea","clip","areaRef","pan","Value","offset","field","reduceMotion","config","host","animateTo","to","duration","timing","toValue","easing","out","cubic","useNativeDriver","start","adjust","top","box","measure","limit","areaTop","measureTop","y","height","focus","next","blur","prev","_show","e","endCoordinates","screenY","OS","requestAnimationFrame","_hide","h","subs","addListener","forEach","s","remove","moving","style","styles","fill","transform","translateY","ref","collapsable","MEASURE_TIMEOUT_MS","node","Promise","resolve","timer","setTimeout","measureInWindow","_x","clearTimeout","create","flex","overflow"],"sourceRoot":"../../../src","sources":["theme/KeyboardAvoidance.tsx"],"mappings":"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","ignoreList":[]}
|