@react-navigation/elements 2.0.0-alpha.1 → 2.0.0-alpha.11

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.
Files changed (153) hide show
  1. package/lib/commonjs/Background.js +2 -2
  2. package/lib/commonjs/Background.js.map +1 -1
  3. package/lib/commonjs/Button.js +100 -0
  4. package/lib/commonjs/Button.js.map +1 -0
  5. package/lib/commonjs/Header/Header.js +21 -17
  6. package/lib/commonjs/Header/Header.js.map +1 -1
  7. package/lib/commonjs/Header/HeaderBackButton.js +22 -40
  8. package/lib/commonjs/Header/HeaderBackButton.js.map +1 -1
  9. package/lib/commonjs/Header/HeaderBackContext.js +1 -2
  10. package/lib/commonjs/Header/HeaderBackContext.js.map +1 -1
  11. package/lib/commonjs/Header/HeaderBackground.js +2 -2
  12. package/lib/commonjs/Header/HeaderBackground.js.map +1 -1
  13. package/lib/commonjs/Header/HeaderButton.js +60 -0
  14. package/lib/commonjs/Header/HeaderButton.js.map +1 -0
  15. package/lib/commonjs/Header/HeaderHeightContext.js +1 -2
  16. package/lib/commonjs/Header/HeaderHeightContext.js.map +1 -1
  17. package/lib/commonjs/Header/HeaderShownContext.js +1 -2
  18. package/lib/commonjs/Header/HeaderShownContext.js.map +1 -1
  19. package/lib/commonjs/Header/HeaderTitle.js +2 -2
  20. package/lib/commonjs/Header/HeaderTitle.js.map +1 -1
  21. package/lib/commonjs/Header/getDefaultHeaderHeight.js +5 -3
  22. package/lib/commonjs/Header/getDefaultHeaderHeight.js.map +1 -1
  23. package/lib/commonjs/Header/getHeaderTitle.js.map +1 -1
  24. package/lib/commonjs/Header/useHeaderHeight.js +2 -2
  25. package/lib/commonjs/Header/useHeaderHeight.js.map +1 -1
  26. package/lib/commonjs/Label/Label.js +6 -10
  27. package/lib/commonjs/Label/Label.js.map +1 -1
  28. package/lib/commonjs/Label/getLabel.js.map +1 -1
  29. package/lib/commonjs/MaskedView.android.js.map +1 -1
  30. package/lib/commonjs/MaskedView.ios.js.map +1 -1
  31. package/lib/commonjs/MaskedView.js.map +1 -1
  32. package/lib/commonjs/MaskedViewNative.js +3 -2
  33. package/lib/commonjs/MaskedViewNative.js.map +1 -1
  34. package/lib/commonjs/MissingIcon.js +2 -2
  35. package/lib/commonjs/MissingIcon.js.map +1 -1
  36. package/lib/commonjs/PlatformPressable.js +27 -4
  37. package/lib/commonjs/PlatformPressable.js.map +1 -1
  38. package/lib/commonjs/ResourceSavingView.js +2 -2
  39. package/lib/commonjs/ResourceSavingView.js.map +1 -1
  40. package/lib/commonjs/SafeAreaProviderCompat.js +2 -2
  41. package/lib/commonjs/SafeAreaProviderCompat.js.map +1 -1
  42. package/lib/commonjs/Screen.js +6 -2
  43. package/lib/commonjs/Screen.js.map +1 -1
  44. package/lib/commonjs/Text.js +28 -0
  45. package/lib/commonjs/Text.js.map +1 -0
  46. package/lib/commonjs/getDefaultSidebarWidth.js.map +1 -1
  47. package/lib/commonjs/getNamedContext.js +2 -2
  48. package/lib/commonjs/getNamedContext.js.map +1 -1
  49. package/lib/commonjs/index.js +26 -3
  50. package/lib/commonjs/index.js.map +1 -1
  51. package/lib/commonjs/types.js.map +1 -1
  52. package/lib/module/Background.js.map +1 -1
  53. package/lib/module/Button.js +91 -0
  54. package/lib/module/Button.js.map +1 -0
  55. package/lib/module/Header/Header.js +19 -15
  56. package/lib/module/Header/Header.js.map +1 -1
  57. package/lib/module/Header/HeaderBackButton.js +20 -38
  58. package/lib/module/Header/HeaderBackButton.js.map +1 -1
  59. package/lib/module/Header/HeaderBackContext.js.map +1 -1
  60. package/lib/module/Header/HeaderBackground.js.map +1 -1
  61. package/lib/module/Header/HeaderButton.js +52 -0
  62. package/lib/module/Header/HeaderButton.js.map +1 -0
  63. package/lib/module/Header/HeaderHeightContext.js.map +1 -1
  64. package/lib/module/Header/HeaderShownContext.js.map +1 -1
  65. package/lib/module/Header/HeaderTitle.js.map +1 -1
  66. package/lib/module/Header/getDefaultHeaderHeight.js +6 -4
  67. package/lib/module/Header/getDefaultHeaderHeight.js.map +1 -1
  68. package/lib/module/Header/getHeaderTitle.js.map +1 -1
  69. package/lib/module/Header/useHeaderHeight.js.map +1 -1
  70. package/lib/module/Label/Label.js +4 -8
  71. package/lib/module/Label/Label.js.map +1 -1
  72. package/lib/module/Label/getLabel.js.map +1 -1
  73. package/lib/module/MaskedView.android.js.map +1 -1
  74. package/lib/module/MaskedView.ios.js.map +1 -1
  75. package/lib/module/MaskedView.js.map +1 -1
  76. package/lib/module/MaskedViewNative.js +1 -0
  77. package/lib/module/MaskedViewNative.js.map +1 -1
  78. package/lib/module/MissingIcon.js.map +1 -1
  79. package/lib/module/PlatformPressable.js +25 -2
  80. package/lib/module/PlatformPressable.js.map +1 -1
  81. package/lib/module/ResourceSavingView.js.map +1 -1
  82. package/lib/module/SafeAreaProviderCompat.js.map +1 -1
  83. package/lib/module/Screen.js +4 -0
  84. package/lib/module/Screen.js.map +1 -1
  85. package/lib/module/Text.js +20 -0
  86. package/lib/module/Text.js.map +1 -0
  87. package/lib/module/getDefaultSidebarWidth.js.map +1 -1
  88. package/lib/module/getNamedContext.js.map +1 -1
  89. package/lib/module/index.js +3 -0
  90. package/lib/module/index.js.map +1 -1
  91. package/lib/module/types.js.map +1 -1
  92. package/lib/typescript/src/Background.d.ts +2 -2
  93. package/lib/typescript/src/Background.d.ts.map +1 -1
  94. package/lib/typescript/src/Button.d.ts +12 -0
  95. package/lib/typescript/src/Button.d.ts.map +1 -0
  96. package/lib/typescript/src/Header/Header.d.ts +2 -1
  97. package/lib/typescript/src/Header/Header.d.ts.map +1 -1
  98. package/lib/typescript/src/Header/HeaderBackButton.d.ts +2 -1
  99. package/lib/typescript/src/Header/HeaderBackButton.d.ts.map +1 -1
  100. package/lib/typescript/src/Header/HeaderBackContext.d.ts +2 -1
  101. package/lib/typescript/src/Header/HeaderBackContext.d.ts.map +1 -1
  102. package/lib/typescript/src/Header/HeaderBackground.d.ts +2 -2
  103. package/lib/typescript/src/Header/HeaderBackground.d.ts.map +1 -1
  104. package/lib/typescript/src/Header/HeaderButton.d.ts +4 -0
  105. package/lib/typescript/src/Header/HeaderButton.d.ts.map +1 -0
  106. package/lib/typescript/src/Header/HeaderTitle.d.ts +3 -2
  107. package/lib/typescript/src/Header/HeaderTitle.d.ts.map +1 -1
  108. package/lib/typescript/src/Header/getDefaultHeaderHeight.d.ts +1 -1
  109. package/lib/typescript/src/Header/getDefaultHeaderHeight.d.ts.map +1 -1
  110. package/lib/typescript/src/Label/Label.d.ts +3 -2
  111. package/lib/typescript/src/Label/Label.d.ts.map +1 -1
  112. package/lib/typescript/src/MaskedViewNative.d.ts +1 -1
  113. package/lib/typescript/src/MaskedViewNative.d.ts.map +1 -1
  114. package/lib/typescript/src/MissingIcon.d.ts +3 -2
  115. package/lib/typescript/src/MissingIcon.d.ts.map +1 -1
  116. package/lib/typescript/src/PlatformPressable.d.ts +3 -2
  117. package/lib/typescript/src/PlatformPressable.d.ts.map +1 -1
  118. package/lib/typescript/src/ResourceSavingView.d.ts +2 -2
  119. package/lib/typescript/src/ResourceSavingView.d.ts.map +1 -1
  120. package/lib/typescript/src/SafeAreaProviderCompat.d.ts +2 -2
  121. package/lib/typescript/src/SafeAreaProviderCompat.d.ts.map +1 -1
  122. package/lib/typescript/src/Screen.d.ts +3 -3
  123. package/lib/typescript/src/Screen.d.ts.map +1 -1
  124. package/lib/typescript/src/Text.d.ts +4 -0
  125. package/lib/typescript/src/Text.d.ts.map +1 -0
  126. package/lib/typescript/src/getNamedContext.d.ts.map +1 -1
  127. package/lib/typescript/src/index.d.ts +3 -0
  128. package/lib/typescript/src/index.d.ts.map +1 -1
  129. package/lib/typescript/src/types.d.ts +26 -22
  130. package/lib/typescript/src/types.d.ts.map +1 -1
  131. package/package.json +17 -15
  132. package/src/Background.tsx +6 -1
  133. package/src/Button.tsx +99 -0
  134. package/src/Header/Header.tsx +79 -72
  135. package/src/Header/HeaderBackButton.tsx +17 -29
  136. package/src/Header/HeaderBackContext.tsx +3 -4
  137. package/src/Header/HeaderBackground.tsx +3 -3
  138. package/src/Header/HeaderButton.tsx +54 -0
  139. package/src/Header/HeaderTitle.tsx +3 -3
  140. package/src/Header/getDefaultHeaderHeight.tsx +8 -4
  141. package/src/Header/getHeaderTitle.tsx +2 -2
  142. package/src/Label/Label.tsx +6 -13
  143. package/src/Label/getLabel.tsx +2 -2
  144. package/src/MaskedViewNative.tsx +1 -0
  145. package/src/MissingIcon.tsx +1 -1
  146. package/src/PlatformPressable.tsx +34 -6
  147. package/src/ResourceSavingView.tsx +7 -1
  148. package/src/SafeAreaProviderCompat.tsx +2 -2
  149. package/src/Screen.tsx +13 -4
  150. package/src/Text.tsx +14 -0
  151. package/src/getNamedContext.tsx +1 -0
  152. package/src/index.tsx +3 -0
  153. package/src/types.tsx +27 -23
@@ -1,10 +1,10 @@
1
1
  import * as React from 'react';
2
- import { StyleProp, ViewStyle } from 'react-native';
2
+ import { type StyleProp, type ViewStyle } from 'react-native';
3
3
  type Props = {
4
4
  children: React.ReactNode;
5
5
  style?: StyleProp<ViewStyle>;
6
6
  };
7
- export declare function SafeAreaProviderCompat({ children, style }: Props): JSX.Element;
7
+ export declare function SafeAreaProviderCompat({ children, style }: Props): React.JSX.Element;
8
8
  export declare namespace SafeAreaProviderCompat {
9
9
  var initialMetrics: import("react-native-safe-area-context").Metrics;
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SafeAreaProviderCompat.d.ts","sourceRoot":"","sources":["../../../src/SafeAreaProviderCompat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,SAAS,EAGT,SAAS,EACV,MAAM,cAAc,CAAC;AAOtB,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC;AAeF,wBAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,eAehE;yBAfe,sBAAsB"}
1
+ {"version":3,"file":"SafeAreaProviderCompat.d.ts","sourceRoot":"","sources":["../../../src/SafeAreaProviderCompat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,KAAK,SAAS,EAGd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAOtB,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC;AAeF,wBAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,qBAehE;yBAfe,sBAAsB"}
@@ -1,6 +1,6 @@
1
- import { NavigationProp, ParamListBase, RouteProp } from '@react-navigation/native';
1
+ import { type NavigationProp, type ParamListBase, type RouteProp } from '@react-navigation/native';
2
2
  import * as React from 'react';
3
- import { Animated, StyleProp, ViewStyle } from 'react-native';
3
+ import { Animated, type StyleProp, type ViewStyle } from 'react-native';
4
4
  type Props = {
5
5
  focused: boolean;
6
6
  modal?: boolean;
@@ -13,6 +13,6 @@ type Props = {
13
13
  style?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;
14
14
  children: React.ReactNode;
15
15
  };
16
- export declare function Screen(props: Props): JSX.Element;
16
+ export declare function Screen(props: Props): React.JSX.Element;
17
17
  export {};
18
18
  //# sourceMappingURL=Screen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../../../src/Screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAEd,aAAa,EACb,SAAS,EACV,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAWhF,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IAC1C,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAChC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IACzD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,eA2DlC"}
1
+ {"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../../../src/Screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,QAAQ,EACR,KAAK,SAAS,EAGd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAWtB,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IAC1C,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAChC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IACzD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,qBA8DlC"}
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import { type TextProps } from 'react-native';
3
+ export declare function Text({ style, ...rest }: TextProps): React.JSX.Element;
4
+ //# sourceMappingURL=Text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../src/Text.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAElE,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,qBASjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"getNamedContext.d.ts","sourceRoot":"","sources":["../../../src/getNamedContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,qCAAqC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5E;AAKD,wBAAgB,eAAe,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,GACd,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAalB"}
1
+ {"version":3,"file":"getNamedContext.d.ts","sourceRoot":"","sources":["../../../src/getNamedContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,qCAAqC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5E;AAKD,wBAAgB,eAAe,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,GACd,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAalB"}
@@ -1,4 +1,5 @@
1
1
  export { Background } from './Background';
2
+ export { Button } from './Button';
2
3
  export { getDefaultSidebarWidth } from './getDefaultSidebarWidth';
3
4
  export { getDefaultHeaderHeight } from './Header/getDefaultHeaderHeight';
4
5
  export { getHeaderTitle } from './Header/getHeaderTitle';
@@ -6,6 +7,7 @@ export { Header } from './Header/Header';
6
7
  export { HeaderBackButton } from './Header/HeaderBackButton';
7
8
  export { HeaderBackContext } from './Header/HeaderBackContext';
8
9
  export { HeaderBackground } from './Header/HeaderBackground';
10
+ export { HeaderButton } from './Header/HeaderButton';
9
11
  export { HeaderHeightContext } from './Header/HeaderHeightContext';
10
12
  export { HeaderShownContext } from './Header/HeaderShownContext';
11
13
  export { HeaderTitle } from './Header/HeaderTitle';
@@ -17,6 +19,7 @@ export { PlatformPressable } from './PlatformPressable';
17
19
  export { ResourceSavingView } from './ResourceSavingView';
18
20
  export { SafeAreaProviderCompat } from './SafeAreaProviderCompat';
19
21
  export { Screen } from './Screen';
22
+ export { Text } from './Text';
20
23
  export declare const Assets: any[];
21
24
  export * from './types';
22
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,eAAO,MAAM,MAAM,OAKlB,CAAC;AAEF,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,eAAO,MAAM,MAAM,OAKlB,CAAC;AAEF,cAAc,SAAS,CAAC"}
@@ -140,6 +140,26 @@ export type HeaderTitleProps = {
140
140
  style?: Animated.WithAnimatedValue<StyleProp<TextStyle>>;
141
141
  };
142
142
  export type HeaderButtonProps = {
143
+ /**
144
+ * Callback to call when the button is pressed.
145
+ */
146
+ onPress?: () => void;
147
+ /**
148
+ * The `href` to use for the anchor tag on web
149
+ */
150
+ href?: string;
151
+ /**
152
+ * Whether the button is disabled.
153
+ */
154
+ disabled?: boolean;
155
+ /**
156
+ * Accessibility label for the button for screen readers.
157
+ */
158
+ accessibilityLabel?: string;
159
+ /**
160
+ * ID to locate this button in tests.
161
+ */
162
+ testID?: string;
143
163
  /**
144
164
  * Tint color for the header button.
145
165
  */
@@ -153,19 +173,15 @@ export type HeaderButtonProps = {
153
173
  */
154
174
  pressOpacity?: number;
155
175
  /**
156
- * Whether it's possible to navigate back in stack.
157
- */
158
- canGoBack?: boolean;
159
- };
160
- export type HeaderBackButtonProps = HeaderButtonProps & {
161
- /**
162
- * Whether the button is disabled.
176
+ * Style object for the button.
163
177
  */
164
- disabled?: boolean;
178
+ style?: StyleProp<ViewStyle>;
165
179
  /**
166
- * Callback to call when the button is pressed.
180
+ * Content to render for the button. Usually the icon.
167
181
  */
168
- onPress?: () => void;
182
+ children: React.ReactNode;
183
+ };
184
+ export type HeaderBackButtonProps = Omit<HeaderButtonProps, 'children'> & {
169
185
  /**
170
186
  * Function which returns a React Element to display custom image in header's back button.
171
187
  */
@@ -206,17 +222,5 @@ export type HeaderBackButtonProps = HeaderButtonProps & {
206
222
  * Layout of the title element in the header.
207
223
  */
208
224
  titleLayout?: Layout;
209
- /**
210
- * Accessibility label for the button for screen readers.
211
- */
212
- accessibilityLabel?: string;
213
- /**
214
- * ID to locate this button in tests.
215
- */
216
- testID?: string;
217
- /**
218
- * Style object for the button.
219
- */
220
- style?: StyleProp<ViewStyle>;
221
225
  };
222
226
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-navigation/elements",
3
3
  "description": "UI Components for React Navigation",
4
- "version": "2.0.0-alpha.1",
4
+ "version": "2.0.0-alpha.11",
5
5
  "keywords": [
6
6
  "react-native",
7
7
  "react-navigation",
@@ -36,23 +36,25 @@
36
36
  "prepack": "bob build",
37
37
  "clean": "del lib"
38
38
  },
39
+ "dependencies": {
40
+ "color": "^4.2.3"
41
+ },
39
42
  "devDependencies": {
40
- "@react-native-masked-view/masked-view": "0.2.9",
41
- "@react-navigation/native": "^7.0.0-alpha.3",
42
- "@testing-library/react-native": "^11.5.0",
43
- "@types/react": "~18.0.27",
44
- "@types/react-native": "~0.70.8",
45
- "del-cli": "^5.0.0",
43
+ "@react-native-masked-view/masked-view": "0.3.0",
44
+ "@react-navigation/native": "^7.0.0-alpha.13",
45
+ "@testing-library/react-native": "^12.4.3",
46
+ "@types/react": "~18.2.45",
47
+ "del-cli": "^5.1.0",
46
48
  "react": "18.2.0",
47
- "react-native": "0.71.8",
48
- "react-native-builder-bob": "^0.21.0",
49
- "typescript": "^4.9.4"
49
+ "react-native": "0.73.2",
50
+ "react-native-builder-bob": "^0.23.2",
51
+ "typescript": "^5.3.3"
50
52
  },
51
53
  "peerDependencies": {
52
- "@react-navigation/native": "^6.0.0",
53
- "react": "*",
54
- "react-native": "*",
55
- "react-native-safe-area-context": ">= 3.0.0"
54
+ "@react-navigation/native": "^7.0.0-alpha.13",
55
+ "react": ">= 18.2.0",
56
+ "react-native": ">= 0.72.0",
57
+ "react-native-safe-area-context": ">= 4.0.0"
56
58
  },
57
59
  "react-native-builder-bob": {
58
60
  "source": "src",
@@ -68,5 +70,5 @@
68
70
  ]
69
71
  ]
70
72
  },
71
- "gitHead": "17d212fd04d2c8d000f9fc38ae7ab9e888a0111d"
73
+ "gitHead": "e5eacec2515bbc499c7936df387da7cc0198ed9e"
72
74
  }
@@ -1,6 +1,11 @@
1
1
  import { useTheme } from '@react-navigation/native';
2
2
  import * as React from 'react';
3
- import { Animated, StyleProp, ViewProps, ViewStyle } from 'react-native';
3
+ import {
4
+ Animated,
5
+ type StyleProp,
6
+ type ViewProps,
7
+ type ViewStyle,
8
+ } from 'react-native';
4
9
 
5
10
  type Props = Omit<ViewProps, 'style'> & {
6
11
  style?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;
package/src/Button.tsx ADDED
@@ -0,0 +1,99 @@
1
+ import { useLinkProps, useTheme } from '@react-navigation/native';
2
+ import Color from 'color';
3
+ import * as React from 'react';
4
+ import { StyleSheet } from 'react-native';
5
+
6
+ import {
7
+ PlatformPressable,
8
+ type Props as PlatformPressableProps,
9
+ } from './PlatformPressable';
10
+ import { Text } from './Text';
11
+
12
+ type BaseProps = Omit<PlatformPressableProps, 'children'> & {
13
+ variant?: 'plain' | 'tinted' | 'filled';
14
+ color?: string;
15
+ children: string | string[];
16
+ };
17
+
18
+ type LinkProps = Omit<BaseProps, 'onPress'> &
19
+ Parameters<typeof useLinkProps>[0];
20
+
21
+ const BUTTON_RADIUS = 40;
22
+
23
+ export function Button(props: BaseProps | LinkProps) {
24
+ if ('screen' in props || 'action' in props) {
25
+ return <ButtonLink {...props} />;
26
+ } else {
27
+ return <ButtonBase {...props} />;
28
+ }
29
+ }
30
+
31
+ function ButtonLink({ screen, params, action, href, ...rest }: LinkProps) {
32
+ // @ts-expect-error: This is already type-checked by the prop types
33
+ const props = useLinkProps({ screen, params, action, href });
34
+
35
+ return <ButtonBase {...rest} {...props} />;
36
+ }
37
+
38
+ function ButtonBase({
39
+ variant = 'tinted',
40
+ color: customColor,
41
+ android_ripple,
42
+ style,
43
+ children,
44
+ ...rest
45
+ }: BaseProps) {
46
+ const { colors, fonts } = useTheme();
47
+
48
+ const color = customColor ?? colors.primary;
49
+
50
+ let backgroundColor;
51
+ let textColor;
52
+
53
+ switch (variant) {
54
+ case 'plain':
55
+ backgroundColor = 'transparent';
56
+ textColor = color;
57
+ break;
58
+ case 'tinted':
59
+ backgroundColor = Color(color).fade(0.85).string();
60
+ textColor = color;
61
+ break;
62
+ case 'filled':
63
+ backgroundColor = color;
64
+ textColor = Color(color).isDark()
65
+ ? 'white'
66
+ : Color(color).darken(0.71).string();
67
+ break;
68
+ }
69
+
70
+ return (
71
+ <PlatformPressable
72
+ {...rest}
73
+ style={[{ backgroundColor }, styles.button, style]}
74
+ android_ripple={{
75
+ radius: BUTTON_RADIUS,
76
+ color: Color(textColor).fade(0.85).string(),
77
+ ...android_ripple,
78
+ }}
79
+ >
80
+ <Text style={[{ color: textColor }, fonts.regular, styles.text]}>
81
+ {children}
82
+ </Text>
83
+ </PlatformPressable>
84
+ );
85
+ }
86
+
87
+ const styles = StyleSheet.create({
88
+ button: {
89
+ paddingHorizontal: 24,
90
+ paddingVertical: 10,
91
+ borderRadius: BUTTON_RADIUS,
92
+ },
93
+ text: {
94
+ fontSize: 14,
95
+ lineHeight: 20,
96
+ letterSpacing: 0.1,
97
+ textAlign: 'center',
98
+ },
99
+ });
@@ -1,5 +1,11 @@
1
1
  import * as React from 'react';
2
- import { Animated, Platform, StyleSheet, View, ViewStyle } from 'react-native';
2
+ import {
3
+ Animated,
4
+ Platform,
5
+ StyleSheet,
6
+ View,
7
+ type ViewStyle,
8
+ } from 'react-native';
3
9
  import {
4
10
  useSafeAreaFrame,
5
11
  useSafeAreaInsets,
@@ -48,6 +54,10 @@ export function Header(props: Props) {
48
54
 
49
55
  const isParentHeaderShown = React.useContext(HeaderShownContext);
50
56
 
57
+ // On models with Dynamic Island the status bar height is smaller than the safe area top inset.
58
+ const hasDynamicIsland = Platform.OS === 'ios' && insets.top > 50;
59
+ const statusBarHeight = hasDynamicIsland ? insets.top - 5 : insets.top;
60
+
51
61
  const {
52
62
  layout = frame,
53
63
  modal = false,
@@ -73,7 +83,7 @@ export function Header(props: Props) {
73
83
  headerShadowVisible,
74
84
  headerPressColor,
75
85
  headerPressOpacity,
76
- headerStatusBarHeight = isParentHeaderShown ? 0 : insets.top,
86
+ headerStatusBarHeight = isParentHeaderShown ? 0 : statusBarHeight,
77
87
  } = props;
78
88
 
79
89
  const defaultHeight = getDefaultHeaderHeight(
@@ -170,7 +180,7 @@ export function Header(props: Props) {
170
180
  for (const styleProp in safeStyles) {
171
181
  // @ts-expect-error: typescript wrongly complains that styleProp cannot be used to index safeStyles
172
182
  if (safeStyles[styleProp] === undefined) {
173
- // @ts-expect-error
183
+ // @ts-expect-error don't need to care about index signature for deletion
174
184
  // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
175
185
  delete safeStyles[styleProp];
176
186
  }
@@ -210,14 +220,13 @@ export function Header(props: Props) {
210
220
  : customTitle;
211
221
 
212
222
  return (
213
- <React.Fragment>
223
+ <Animated.View
224
+ pointerEvents="box-none"
225
+ style={[{ height, minHeight, maxHeight, opacity, transform }]}
226
+ >
214
227
  <Animated.View
215
228
  pointerEvents="box-none"
216
- style={[
217
- StyleSheet.absoluteFill,
218
- { zIndex: 0 },
219
- backgroundContainerStyle,
220
- ]}
229
+ style={[StyleSheet.absoluteFill, backgroundContainerStyle]}
221
230
  >
222
231
  {headerBackground ? (
223
232
  headerBackground({ style: backgroundStyle })
@@ -225,69 +234,67 @@ export function Header(props: Props) {
225
234
  <HeaderBackground style={backgroundStyle} />
226
235
  )}
227
236
  </Animated.View>
228
- <Animated.View
229
- pointerEvents="box-none"
230
- style={[{ height, minHeight, maxHeight, opacity, transform }]}
231
- >
232
- <View pointerEvents="none" style={{ height: headerStatusBarHeight }} />
233
- <View pointerEvents="box-none" style={styles.content}>
234
- <Animated.View
235
- pointerEvents="box-none"
236
- style={[
237
- styles.left,
238
- headerTitleAlign === 'center' && styles.expand,
239
- { marginStart: insets.left },
240
- leftContainerStyle,
241
- ]}
242
- >
243
- {leftButton}
244
- </Animated.View>
245
- <Animated.View
246
- pointerEvents="box-none"
247
- style={[
248
- styles.title,
249
- {
250
- // Avoid the title from going offscreen or overlapping buttons
251
- maxWidth:
252
- headerTitleAlign === 'center'
253
- ? layout.width -
254
- ((leftButton
255
- ? headerLeftLabelVisible !== false
256
- ? 80
257
- : 32
258
- : 16) +
259
- Math.max(insets.left, insets.right)) *
260
- 2
261
- : layout.width -
262
- ((leftButton ? 72 : 16) +
263
- (rightButton ? 72 : 16) +
264
- insets.left -
265
- insets.right),
266
- },
267
- titleContainerStyle,
268
- ]}
269
- >
270
- {headerTitle({
271
- children: title,
272
- allowFontScaling: titleAllowFontScaling,
273
- tintColor: headerTintColor,
274
- style: titleStyle,
275
- })}
276
- </Animated.View>
277
- <Animated.View
278
- pointerEvents="box-none"
279
- style={[
280
- styles.right,
281
- styles.expand,
282
- { marginEnd: insets.right },
283
- rightContainerStyle,
284
- ]}
285
- >
286
- {rightButton}
287
- </Animated.View>
288
- </View>
289
- </Animated.View>
290
- </React.Fragment>
237
+ <View pointerEvents="none" style={{ height: headerStatusBarHeight }} />
238
+ <View pointerEvents="box-none" style={styles.content}>
239
+ <Animated.View
240
+ pointerEvents="box-none"
241
+ style={[
242
+ styles.left,
243
+ headerTitleAlign === 'center' && styles.expand,
244
+ { marginStart: insets.left },
245
+ leftContainerStyle,
246
+ ]}
247
+ >
248
+ {leftButton}
249
+ </Animated.View>
250
+ <Animated.View
251
+ pointerEvents="box-none"
252
+ style={[
253
+ styles.title,
254
+ {
255
+ // Avoid the title from going offscreen or overlapping buttons
256
+ maxWidth:
257
+ headerTitleAlign === 'center'
258
+ ? layout.width -
259
+ ((leftButton
260
+ ? headerLeftLabelVisible !== false
261
+ ? 80
262
+ : 32
263
+ : 16) +
264
+ Math.max(insets.left, insets.right)) *
265
+ 2
266
+ : layout.width -
267
+ ((leftButton ? 72 : 16) +
268
+ (rightButton ? 72 : 16) +
269
+ insets.left -
270
+ insets.right),
271
+ },
272
+ headerTitleAlign === 'left' && leftButton
273
+ ? { marginLeft: 4 }
274
+ : null,
275
+ titleContainerStyle,
276
+ ]}
277
+ >
278
+ {headerTitle({
279
+ children: title,
280
+ allowFontScaling: titleAllowFontScaling,
281
+ tintColor: headerTintColor,
282
+ style: titleStyle,
283
+ })}
284
+ </Animated.View>
285
+ <Animated.View
286
+ pointerEvents="box-none"
287
+ style={[
288
+ styles.right,
289
+ styles.expand,
290
+ { marginEnd: insets.right },
291
+ rightContainerStyle,
292
+ ]}
293
+ >
294
+ {rightButton}
295
+ </Animated.View>
296
+ </View>
297
+ </Animated.View>
291
298
  );
292
299
  }
293
300