orn-ui 0.2.10 → 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 +66 -51
- package/README.md +3 -7
- 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 +174 -154
- 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 +176 -156
- 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 +193 -164
- 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,8 +3,9 @@
|
|
|
3
3
|
import React, { useRef, useState } from 'react';
|
|
4
4
|
import { Animated, PanResponder, View } from 'react-native';
|
|
5
5
|
import { createStyles } from '../theme/createStyles';
|
|
6
|
+
import { useLabels } from '../theme/UIProvider';
|
|
6
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
-
/**
|
|
8
|
+
/** Reorders by moving the item from `from` to `to`, without mutating `data`. Exported separately so it can be tested without simulating gestures. */
|
|
8
9
|
export function move(data, from, to) {
|
|
9
10
|
const next = data.slice();
|
|
10
11
|
const [item] = next.splice(from, 1);
|
|
@@ -19,18 +20,23 @@ const useStyles = createStyles(() => ({
|
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* ReorderableList
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
23
|
+
* Law of common fate: when dragging a row, the rows it has to cross shift
|
|
24
|
+
* together in the same direction — that is what communicates "they are
|
|
25
|
+
* going to swap places" before the finger lifts, not a simple highlight of
|
|
26
|
+
* the active item.
|
|
26
27
|
*
|
|
27
|
-
*
|
|
28
|
-
* PanResponder + Animated
|
|
29
|
-
*
|
|
30
|
-
*
|
|
28
|
+
* No external gesture/animation dependencies (reanimated, gesture-handler):
|
|
29
|
+
* PanResponder + Animated are enough because computing the target index
|
|
30
|
+
* needs the drag value in JS on every move (not something useNativeDriver
|
|
31
|
+
* can resolve on its own).
|
|
31
32
|
*
|
|
32
|
-
*
|
|
33
|
-
* `scrollEnabled`,
|
|
33
|
+
* Inside a vertical scroll you have to wire `onDragStart`/`onDragEnd` to
|
|
34
|
+
* `scrollEnabled`, or on iOS the drag never gets to start:
|
|
35
|
+
*
|
|
36
|
+
* Screen readers can't drag: each row is one accessible element with two
|
|
37
|
+
* actions, "Move up" and "Move down" (`labels.moveUp` / `labels.moveDown`),
|
|
38
|
+
* that call `onReorder` the same way a drop does. The row's content is read
|
|
39
|
+
* as its label, so keep interactive controls out of reorderable rows.
|
|
34
40
|
*
|
|
35
41
|
* ```tsx
|
|
36
42
|
* const [dragging, setDragging] = useState(false);
|
|
@@ -51,24 +57,25 @@ export function ReorderableList({
|
|
|
51
57
|
style
|
|
52
58
|
}) {
|
|
53
59
|
const styles = useStyles();
|
|
60
|
+
const labels = useLabels();
|
|
54
61
|
const [activeIndex, setActiveIndex] = useState(null);
|
|
55
62
|
const [targetIndex, setTargetIndex] = useState(null);
|
|
56
63
|
const dy = useRef(new Animated.Value(0)).current;
|
|
57
64
|
const activeIndexRef = useRef(null);
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
//
|
|
61
|
-
//
|
|
62
|
-
//
|
|
65
|
+
// Each row's PanResponder is created only once (cached in the Map below)
|
|
66
|
+
// and its closure stays fixed to that first render: reading `targetIndex`
|
|
67
|
+
// (state) directly there would always give the value from mount. A ref
|
|
68
|
+
// does reflect the latest write no matter when the closure reading it was
|
|
69
|
+
// created.
|
|
63
70
|
const targetIndexRef = useRef(null);
|
|
64
71
|
const dataRef = useRef(data);
|
|
65
72
|
dataRef.current = data;
|
|
66
|
-
//
|
|
67
|
-
//
|
|
68
|
-
//
|
|
73
|
+
// Same reason as targetIndexRef: each row's responder is created only
|
|
74
|
+
// once, so reading `disabled` straight from the closure would freeze the
|
|
75
|
+
// value from when that row was created.
|
|
69
76
|
const disabledRef = useRef(disabled);
|
|
70
77
|
disabledRef.current = disabled;
|
|
71
|
-
//
|
|
78
|
+
// Same reason: the callbacks are read from closures created only once.
|
|
72
79
|
const onReorderRef = useRef(onReorder);
|
|
73
80
|
onReorderRef.current = onReorder;
|
|
74
81
|
const onDragStartRef = useRef(onDragStart);
|
|
@@ -76,8 +83,8 @@ export function ReorderableList({
|
|
|
76
83
|
const onDragEndRef = useRef(onDragEnd);
|
|
77
84
|
onDragEndRef.current = onDragEnd;
|
|
78
85
|
const panResponders = useRef(new Map()).current;
|
|
79
|
-
//
|
|
80
|
-
//
|
|
86
|
+
// If `data` shrinks, the responders for indexes that no longer exist stay
|
|
87
|
+
// stuck in the Map forever: they are pruned on every render.
|
|
81
88
|
for (const index of panResponders.keys()) {
|
|
82
89
|
if (index >= data.length) panResponders.delete(index);
|
|
83
90
|
}
|
|
@@ -95,9 +102,9 @@ export function ReorderableList({
|
|
|
95
102
|
responder = PanResponder.create({
|
|
96
103
|
onStartShouldSetPanResponder: () => !disabledRef.current,
|
|
97
104
|
onMoveShouldSetPanResponder: (_, gesture) => !disabledRef.current && Math.abs(gesture.dy) > 2,
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
//
|
|
105
|
+
// A parent scroll requests the responder as soon as its vertical gesture
|
|
106
|
+
// starts — the same axis as the drag. Yielding it would cancel the drag
|
|
107
|
+
// midway, so the row keeps it until release.
|
|
101
108
|
onPanResponderTerminationRequest: () => false,
|
|
102
109
|
onPanResponderGrant: () => {
|
|
103
110
|
activeIndexRef.current = index;
|
|
@@ -132,8 +139,8 @@ export function ReorderableList({
|
|
|
132
139
|
style: style,
|
|
133
140
|
children: data.map((item, index) => {
|
|
134
141
|
const isActive = activeIndex === index;
|
|
135
|
-
//
|
|
136
|
-
//
|
|
142
|
+
// Rows between the origin and the target shift one full place in the
|
|
143
|
+
// drag direction: it is the "group moving together" effect.
|
|
137
144
|
let shift = 0;
|
|
138
145
|
if (activeIndex !== null && targetIndex !== null && !isActive) {
|
|
139
146
|
if (activeIndex < targetIndex && index > activeIndex && index <= targetIndex) shift = -itemHeight;else if (activeIndex > targetIndex && index < activeIndex && index >= targetIndex) shift = itemHeight;
|
|
@@ -151,6 +158,20 @@ export function ReorderableList({
|
|
|
151
158
|
}]
|
|
152
159
|
}],
|
|
153
160
|
...panResponderFor(index).panHandlers,
|
|
161
|
+
accessible: true,
|
|
162
|
+
accessibilityActions: [...(index > 0 ? [{
|
|
163
|
+
name: 'moveUp',
|
|
164
|
+
label: labels.moveUp
|
|
165
|
+
}] : []), ...(index < data.length - 1 ? [{
|
|
166
|
+
name: 'moveDown',
|
|
167
|
+
label: labels.moveDown
|
|
168
|
+
}] : [])],
|
|
169
|
+
onAccessibilityAction: event => {
|
|
170
|
+
if (disabled) return;
|
|
171
|
+
const to = event.nativeEvent.actionName === 'moveUp' ? index - 1 : index + 1;
|
|
172
|
+
if (to < 0 || to >= data.length) return;
|
|
173
|
+
onReorder(move(data, index, to));
|
|
174
|
+
},
|
|
154
175
|
children: renderItem(item, index, isActive)
|
|
155
176
|
}, keyExtractor(item, index));
|
|
156
177
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useRef","useState","Animated","PanResponder","View","createStyles","jsx","_jsx","move","data","from","to","next","slice","item","splice","useStyles","row","width","ReorderableList","keyExtractor","itemHeight","renderItem","onReorder","onDragStart","onDragEnd","disabled","style","styles","activeIndex","setActiveIndex","targetIndex","setTargetIndex","dy","Value","current","activeIndexRef","targetIndexRef","dataRef","disabledRef","onReorderRef","onDragStartRef","onDragEndRef","panResponders","Map","index","keys","length","delete","panResponderFor","responder","get","endDrag","setValue","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","_","gesture","Math","abs","onPanResponderTerminationRequest","onPanResponderGrant","onPanResponderMove","rawTarget","round","clamped","max","min","prev","onPanResponderRelease","onPanResponderTerminate","set","children","map","isActive","shift","transform","translateY","zIndex","elevation","panHandlers"],"sourceRoot":"../../../src","sources":["organisms/ReorderableList.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC/C,SAASC,QAAQ,EAAEC,YAAY,EAAEC,IAAI,QAAwC,cAAc;AAC3F,SAASC,YAAY,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;
|
|
1
|
+
{"version":3,"names":["React","useRef","useState","Animated","PanResponder","View","createStyles","useLabels","jsx","_jsx","move","data","from","to","next","slice","item","splice","useStyles","row","width","ReorderableList","keyExtractor","itemHeight","renderItem","onReorder","onDragStart","onDragEnd","disabled","style","styles","labels","activeIndex","setActiveIndex","targetIndex","setTargetIndex","dy","Value","current","activeIndexRef","targetIndexRef","dataRef","disabledRef","onReorderRef","onDragStartRef","onDragEndRef","panResponders","Map","index","keys","length","delete","panResponderFor","responder","get","endDrag","setValue","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","_","gesture","Math","abs","onPanResponderTerminationRequest","onPanResponderGrant","onPanResponderMove","rawTarget","round","clamped","max","min","prev","onPanResponderRelease","onPanResponderTerminate","set","children","map","isActive","shift","transform","translateY","zIndex","elevation","panHandlers","accessible","accessibilityActions","name","label","moveUp","moveDown","onAccessibilityAction","event","nativeEvent","actionName"],"sourceRoot":"../../../src","sources":["organisms/ReorderableList.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
import React, { memo } from 'react';
|
|
4
4
|
import { KeyboardAvoidingView, Platform, ScrollView, View } from 'react-native';
|
|
5
5
|
import { createStyles } from '../theme/createStyles';
|
|
6
|
-
import { useInsets } from '../theme/UIProvider';
|
|
7
|
-
import {
|
|
6
|
+
import { useInsets, useTheme } from '../theme/UIProvider';
|
|
7
|
+
import { KeyboardHandled, KeyboardPanArea, useKeyboardHost } from '../theme/KeyboardAvoidance';
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
9
|
const useStyles = createStyles(theme => ({
|
|
9
10
|
wrapper: {
|
|
10
11
|
flex: 1,
|
|
@@ -15,16 +16,31 @@ const useStyles = createStyles(theme => ({
|
|
|
15
16
|
},
|
|
16
17
|
contentContainer: {
|
|
17
18
|
flexGrow: 1
|
|
19
|
+
},
|
|
20
|
+
header: {
|
|
21
|
+
backgroundColor: theme.colors.background
|
|
18
22
|
}
|
|
19
23
|
}));
|
|
20
24
|
|
|
21
25
|
/**
|
|
22
26
|
* Screen
|
|
23
|
-
*
|
|
24
|
-
*
|
|
27
|
+
* Root screen container: theme background, safe area (via the UIProvider's
|
|
28
|
+
* insets), keyboard and optional scroll handled consistently.
|
|
29
|
+
*
|
|
30
|
+
* Keyboard: with the UIProvider handling it (default), Screen shifts only its
|
|
31
|
+
* content — clipped below the `header` — to keep the focused Input above the
|
|
32
|
+
* keyboard. The header stays fixed and a tab bar outside the Screen stays
|
|
33
|
+
* behind the keyboard, as in a native app. On iOS with scroll, the ScrollView
|
|
34
|
+
* already brings the field into view (automaticallyAdjustKeyboardInsets) and
|
|
35
|
+
* nothing is added. Without a host (`keyboardAvoidance={false}` on the
|
|
36
|
+
* provider) the usual KeyboardAvoidingView remains.
|
|
37
|
+
*
|
|
38
|
+
* Gestalt, common region: the header shares the screen's background and stays
|
|
39
|
+
* fixed; only the content moves, so navigation isn't lost.
|
|
25
40
|
*/
|
|
26
41
|
export const Screen = /*#__PURE__*/memo(({
|
|
27
42
|
children,
|
|
43
|
+
header,
|
|
28
44
|
style,
|
|
29
45
|
scrollable = true,
|
|
30
46
|
contentContainerStyle,
|
|
@@ -33,43 +49,60 @@ export const Screen = /*#__PURE__*/memo(({
|
|
|
33
49
|
}) => {
|
|
34
50
|
const insets = useInsets();
|
|
35
51
|
const styles = useStyles();
|
|
52
|
+
const theme = useTheme();
|
|
53
|
+
const host = useKeyboardHost();
|
|
36
54
|
const applyTop = edges.includes('top');
|
|
37
55
|
const applyBottom = edges.includes('bottom');
|
|
56
|
+
const topInset = applyTop ? insets.top : 0;
|
|
57
|
+
const scrollHandles = keyboardAvoiding && scrollable && Platform.OS === 'ios';
|
|
58
|
+
const panArea = keyboardAvoiding && !scrollHandles && !!host;
|
|
59
|
+
const avoidWithView = keyboardAvoiding && !scrollHandles && !host;
|
|
38
60
|
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
61
|
+
// With a header, the top inset goes above the header; the content starts
|
|
62
|
+
// right below it.
|
|
63
|
+
const contentTop = header ? 0 : topInset;
|
|
64
|
+
let content = scrollable ? /*#__PURE__*/_jsx(ScrollView, {
|
|
65
|
+
style: styles.container,
|
|
66
|
+
automaticallyAdjustKeyboardInsets: scrollHandles,
|
|
67
|
+
contentContainerStyle: [styles.contentContainer, {
|
|
68
|
+
paddingTop: contentTop
|
|
69
|
+
}, applyBottom && {
|
|
70
|
+
paddingBottom: insets.bottom
|
|
71
|
+
}, contentContainerStyle],
|
|
72
|
+
keyboardShouldPersistTaps: "handled",
|
|
73
|
+
children: scrollHandles ? /*#__PURE__*/_jsx(KeyboardHandled, {
|
|
74
|
+
children: children
|
|
75
|
+
}) : children
|
|
76
|
+
}) : /*#__PURE__*/_jsx(View, {
|
|
77
|
+
style: [styles.container, {
|
|
78
|
+
paddingTop: contentTop,
|
|
79
|
+
paddingBottom: applyBottom ? insets.bottom : 0
|
|
80
|
+
}],
|
|
81
|
+
children: children
|
|
82
|
+
});
|
|
83
|
+
if (panArea) {
|
|
84
|
+
content = /*#__PURE__*/_jsx(KeyboardPanArea, {
|
|
85
|
+
margin: theme.tokens.spacing.md,
|
|
86
|
+
topLimit: insets.top,
|
|
87
|
+
clip: true,
|
|
88
|
+
children: content
|
|
89
|
+
});
|
|
90
|
+
} else if (avoidWithView) {
|
|
91
|
+
content = /*#__PURE__*/_jsx(KeyboardAvoidingView, {
|
|
53
92
|
style: styles.container,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
paddingTop: applyTop ? insets.top : 0,
|
|
68
|
-
paddingBottom: applyBottom ? insets.bottom : 0
|
|
69
|
-
}],
|
|
70
|
-
children: children
|
|
71
|
-
})
|
|
72
|
-
})
|
|
93
|
+
behavior: Platform.OS === 'ios' ? 'padding' : 'height',
|
|
94
|
+
keyboardVerticalOffset: Platform.OS === 'ios' ? 0 : theme.tokens.spacing.xl,
|
|
95
|
+
children: content
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
99
|
+
style: [styles.wrapper, style],
|
|
100
|
+
children: [header && /*#__PURE__*/_jsx(View, {
|
|
101
|
+
style: [styles.header, {
|
|
102
|
+
paddingTop: topInset
|
|
103
|
+
}],
|
|
104
|
+
children: header
|
|
105
|
+
}), content]
|
|
73
106
|
});
|
|
74
107
|
});
|
|
75
108
|
Screen.displayName = 'Screen';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","KeyboardAvoidingView","Platform","ScrollView","View","createStyles","useInsets","jsx","_jsx","useStyles","theme","wrapper","flex","backgroundColor","colors","background","container","contentContainer","flexGrow","Screen","children","style","scrollable","contentContainerStyle","edges","keyboardAvoiding","insets","styles","applyTop","includes","applyBottom","
|
|
1
|
+
{"version":3,"names":["React","memo","KeyboardAvoidingView","Platform","ScrollView","View","createStyles","useInsets","useTheme","KeyboardHandled","KeyboardPanArea","useKeyboardHost","jsx","_jsx","jsxs","_jsxs","useStyles","theme","wrapper","flex","backgroundColor","colors","background","container","contentContainer","flexGrow","header","Screen","children","style","scrollable","contentContainerStyle","edges","keyboardAvoiding","insets","styles","host","applyTop","includes","applyBottom","topInset","top","scrollHandles","OS","panArea","avoidWithView","contentTop","content","automaticallyAdjustKeyboardInsets","paddingTop","paddingBottom","bottom","keyboardShouldPersistTaps","margin","tokens","spacing","md","topLimit","clip","behavior","keyboardVerticalOffset","xl","displayName"],"sourceRoot":"../../../src","sources":["organisms/Screen.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -17,8 +17,8 @@ const useStyles = createStyles(theme => ({
|
|
|
17
17
|
searchRow: {
|
|
18
18
|
flexDirection: 'row',
|
|
19
19
|
alignItems: 'center',
|
|
20
|
-
marginBottom: theme.tokens.spacing.lg
|
|
21
|
-
gap: theme.tokens.spacing.
|
|
20
|
+
marginBottom: theme.tokens.spacing.lg,
|
|
21
|
+
gap: theme.tokens.spacing.md
|
|
22
22
|
},
|
|
23
23
|
searchInput: {
|
|
24
24
|
flex: 1,
|
|
@@ -26,8 +26,8 @@ const useStyles = createStyles(theme => ({
|
|
|
26
26
|
},
|
|
27
27
|
scanButton: {
|
|
28
28
|
backgroundColor: theme.colors.primary,
|
|
29
|
-
width:
|
|
30
|
-
height:
|
|
29
|
+
width: SCAN_SIZE,
|
|
30
|
+
height: SCAN_SIZE,
|
|
31
31
|
borderRadius: theme.tokens.radius.lg,
|
|
32
32
|
...theme.tokens.shadow.sm
|
|
33
33
|
},
|
|
@@ -64,16 +64,33 @@ const useStyles = createStyles(theme => ({
|
|
|
64
64
|
padding: theme.tokens.spacing.md
|
|
65
65
|
},
|
|
66
66
|
skeletonText: {
|
|
67
|
-
flex: 1
|
|
68
|
-
|
|
67
|
+
flex: 1
|
|
68
|
+
},
|
|
69
|
+
empty: {
|
|
70
|
+
marginTop: theme.tokens.spacing.xxxl
|
|
69
71
|
}
|
|
70
72
|
}));
|
|
71
73
|
|
|
74
|
+
/** The scan button is square and as tall as the search Input beside it. */
|
|
75
|
+
const SCAN_SIZE = 50;
|
|
76
|
+
/** Same as Avatar's default size: the placeholder row matches a typical avatar row. */
|
|
77
|
+
const SKELETON_AVATAR = 44;
|
|
78
|
+
|
|
72
79
|
/**
|
|
73
80
|
* SearchList
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
81
|
+
* Search box + list + loading/pagination/empty states. The content of each
|
|
82
|
+
* item (renderItem) is up to whoever uses it, since it differs completely
|
|
83
|
+
* between use cases.
|
|
84
|
+
*
|
|
85
|
+
* Design:
|
|
86
|
+
* - Proximity + common region: the search row (box, scan, extra actions)
|
|
87
|
+
* sits right on top of the results it filters.
|
|
88
|
+
* - Doherty threshold: every wait has immediate feedback (placeholders, a
|
|
89
|
+
* spinner in the box while searching, a footer loader while paging), and
|
|
90
|
+
* "no results" only appears once it is known there is nothing.
|
|
91
|
+
* - Jakob's law: the clear (×) inside the box, pull-to-refresh, the keyboard
|
|
92
|
+
* dismissed when the list is dragged.
|
|
93
|
+
* - Fitts's law: the scan button is as tall as the box, a 50pt target.
|
|
77
94
|
*/
|
|
78
95
|
export function SearchList({
|
|
79
96
|
header,
|
|
@@ -82,7 +99,7 @@ export function SearchList({
|
|
|
82
99
|
searchPlaceholder,
|
|
83
100
|
searchIsLoading = false,
|
|
84
101
|
onScanPress,
|
|
85
|
-
scanAccessibilityLabel
|
|
102
|
+
scanAccessibilityLabel,
|
|
86
103
|
extraActions,
|
|
87
104
|
data,
|
|
88
105
|
keyExtractor,
|
|
@@ -120,8 +137,8 @@ export function SearchList({
|
|
|
120
137
|
const resolvedLoadingMoreText = loadingMoreText ?? labels.loadingMore;
|
|
121
138
|
const handleEndReached = onLoadMore ?? onEndReached;
|
|
122
139
|
|
|
123
|
-
//
|
|
124
|
-
//
|
|
140
|
+
// The custom footer and the pagination loader coexist: previously the first
|
|
141
|
+
// covered the second and the list stopped signaling it was fetching more.
|
|
125
142
|
const renderFooter = useCallback(() => {
|
|
126
143
|
const custom = typeof ListFooterComponent === 'function' ? /*#__PURE__*/_jsx(ListFooterComponent, {}) : ListFooterComponent ?? null;
|
|
127
144
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
@@ -141,19 +158,17 @@ export function SearchList({
|
|
|
141
158
|
});
|
|
142
159
|
}, [ListFooterComponent, isLoadingMore, resolvedLoadingMoreText, noMoreText, hasMore, data.length, styles.footer, styles.footerText]);
|
|
143
160
|
|
|
144
|
-
//
|
|
145
|
-
//
|
|
161
|
+
// Empty only once it is known there is nothing: during the initial load
|
|
162
|
+
// placeholders are shown, not "no results".
|
|
146
163
|
const renderEmpty = useCallback(() => {
|
|
147
164
|
if (isLoading || isRefreshing) return null;
|
|
148
165
|
return /*#__PURE__*/_jsx(EmptyState, {
|
|
149
166
|
title: emptyTitle,
|
|
150
167
|
description: emptyDescription,
|
|
151
168
|
iconName: emptyIconName,
|
|
152
|
-
style:
|
|
153
|
-
marginTop: 50
|
|
154
|
-
}
|
|
169
|
+
style: styles.empty
|
|
155
170
|
});
|
|
156
|
-
}, [isLoading, isRefreshing, emptyTitle, emptyDescription, emptyIconName]);
|
|
171
|
+
}, [isLoading, isRefreshing, emptyTitle, emptyDescription, emptyIconName, styles.empty]);
|
|
157
172
|
if (!isReady) {
|
|
158
173
|
return /*#__PURE__*/_jsx(View, {
|
|
159
174
|
style: [styles.container, containerStyle],
|
|
@@ -178,16 +193,22 @@ export function SearchList({
|
|
|
178
193
|
isLoading: searchIsLoading,
|
|
179
194
|
containerStyle: styles.searchInput
|
|
180
195
|
}), onScanPress && /*#__PURE__*/_jsx(IconButton, {
|
|
181
|
-
iconName: "
|
|
196
|
+
iconName: "scan",
|
|
182
197
|
onPress: onScanPress,
|
|
183
198
|
color: colors.onPrimary,
|
|
184
199
|
style: styles.scanButton,
|
|
185
|
-
accessibilityLabel: scanAccessibilityLabel
|
|
200
|
+
accessibilityLabel: scanAccessibilityLabel ?? labels.scan
|
|
186
201
|
}), extraActions]
|
|
187
202
|
}), /*#__PURE__*/_jsxs(View, {
|
|
188
203
|
style: styles.listArea,
|
|
189
204
|
children: [showOverlayLoading && /*#__PURE__*/_jsxs(View, {
|
|
190
205
|
style: styles.loadingOverlay,
|
|
206
|
+
accessible: true,
|
|
207
|
+
accessibilityRole: "progressbar",
|
|
208
|
+
accessibilityLabel: resolvedLoadingText,
|
|
209
|
+
accessibilityState: {
|
|
210
|
+
busy: true
|
|
211
|
+
},
|
|
191
212
|
children: [/*#__PURE__*/_jsx(ActivityIndicator, {
|
|
192
213
|
size: "large",
|
|
193
214
|
color: colors.primary
|
|
@@ -197,7 +218,16 @@ export function SearchList({
|
|
|
197
218
|
})]
|
|
198
219
|
}), isInitialLoading ? /*#__PURE__*/_jsx(View, {
|
|
199
220
|
testID: "list-skeleton",
|
|
200
|
-
style: [styles.listContent, contentContainerStyle]
|
|
221
|
+
style: [styles.listContent, contentContainerStyle]
|
|
222
|
+
// The placeholders are hidden from screen readers: the group
|
|
223
|
+
// announces that the list is loading instead of silence.
|
|
224
|
+
,
|
|
225
|
+
accessible: true,
|
|
226
|
+
accessibilityRole: "progressbar",
|
|
227
|
+
accessibilityLabel: resolvedLoadingText,
|
|
228
|
+
accessibilityState: {
|
|
229
|
+
busy: true
|
|
230
|
+
},
|
|
201
231
|
children: Array.from({
|
|
202
232
|
length: skeletonCount
|
|
203
233
|
}, (_, i) => /*#__PURE__*/_jsx(React.Fragment, {
|
|
@@ -205,15 +235,15 @@ export function SearchList({
|
|
|
205
235
|
style: styles.skeletonRow,
|
|
206
236
|
children: [/*#__PURE__*/_jsx(Skeleton, {
|
|
207
237
|
variant: "circle",
|
|
208
|
-
width:
|
|
238
|
+
width: SKELETON_AVATAR
|
|
209
239
|
}), /*#__PURE__*/_jsxs(View, {
|
|
210
240
|
style: styles.skeletonText,
|
|
211
241
|
children: [/*#__PURE__*/_jsx(Skeleton, {
|
|
212
|
-
|
|
213
|
-
|
|
242
|
+
variant: "text",
|
|
243
|
+
width: "60%"
|
|
214
244
|
}), /*#__PURE__*/_jsx(Skeleton, {
|
|
215
|
-
|
|
216
|
-
|
|
245
|
+
variant: "text",
|
|
246
|
+
width: "35%"
|
|
217
247
|
})]
|
|
218
248
|
})]
|
|
219
249
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","ActivityIndicator","FlatList","RefreshControl","Text","View","createStyles","useColors","useLabels","Input","EmptyState","Skeleton","Spinner","IconButton","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","useStyles","theme","container","flex","searchRow","flexDirection","alignItems","marginBottom","tokens","spacing","lg","gap","
|
|
1
|
+
{"version":3,"names":["React","useCallback","ActivityIndicator","FlatList","RefreshControl","Text","View","createStyles","useColors","useLabels","Input","EmptyState","Skeleton","Spinner","IconButton","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","useStyles","theme","container","flex","searchRow","flexDirection","alignItems","marginBottom","tokens","spacing","lg","gap","md","searchInput","scanButton","backgroundColor","colors","primary","width","SCAN_SIZE","height","borderRadius","radius","shadow","sm","listArea","listContent","paddingBottom","xl","loadingOverlay","position","top","left","right","bottom","scrim","zIndex","justifyContent","footer","paddingVertical","footerText","color","textLight","fontSize","skeletonRow","padding","skeletonText","empty","marginTop","xxxl","SKELETON_AVATAR","SearchList","header","searchValue","onSearchChange","searchPlaceholder","searchIsLoading","onScanPress","scanAccessibilityLabel","extraActions","data","keyExtractor","renderItem","isLoading","loadingMode","isRefreshing","isLoadingMore","isReady","loadingText","loadingMoreText","hasMore","noMoreText","skeletonCount","renderSkeletonItem","onLoadMore","onEndReached","onEndReachedThreshold","onRefresh","emptyTitle","emptyDescription","emptyIconName","ListHeaderComponent","ListFooterComponent","contentContainerStyle","containerStyle","ListComponent","listProps","styles","labels","resolvedSearchPlaceholder","search","resolvedLoadingText","loading","resolvedLoadingMoreText","loadingMore","handleEndReached","renderFooter","custom","children","style","text","fullscreen","length","renderEmpty","title","description","iconName","isInitialLoading","showOverlayLoading","placeholder","leftIconName","value","onChangeText","rightIconName","undefined","onRightIconPress","onPress","onPrimary","accessibilityLabel","scan","accessible","accessibilityRole","accessibilityState","busy","size","testID","Array","from","_","i","variant","keyboardDismissMode","ListEmptyComponent","refreshControl","refreshing","tintColor"],"sourceRoot":"../../../src","sources":["organisms/SearchList.tsx"],"mappings":"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","ignoreList":[]}
|