ferns-ui 1.15.0 → 2.0.0-beta.2

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 (178) hide show
  1. package/dist/ActionSheet.js +11 -14
  2. package/dist/ActionSheet.js.map +1 -1
  3. package/dist/AddressField.js +1 -1
  4. package/dist/AddressField.js.map +1 -1
  5. package/dist/Badge.js +1 -1
  6. package/dist/Badge.js.map +1 -1
  7. package/dist/Banner.js +1 -1
  8. package/dist/Banner.js.map +1 -1
  9. package/dist/Box.js +3 -3
  10. package/dist/Box.js.map +1 -1
  11. package/dist/Button.js +1 -0
  12. package/dist/Button.js.map +1 -1
  13. package/dist/CheckBox.js.map +1 -1
  14. package/dist/Common.d.ts +7 -7
  15. package/dist/Common.js.map +1 -1
  16. package/dist/DataTable.js +2 -1
  17. package/dist/DataTable.js.map +1 -1
  18. package/dist/DateTimeField.js +22 -22
  19. package/dist/DateTimeField.js.map +1 -1
  20. package/dist/ErrorBoundary.d.ts +1 -1
  21. package/dist/FernsProvider.js +1 -1
  22. package/dist/FernsProvider.js.map +1 -1
  23. package/dist/Heading.js +1 -3
  24. package/dist/Heading.js.map +1 -1
  25. package/dist/Hyperlink.js +1 -1
  26. package/dist/Hyperlink.js.map +1 -1
  27. package/dist/IconButton.js +1 -1
  28. package/dist/IconButton.js.map +1 -1
  29. package/dist/Image.js.map +1 -1
  30. package/dist/MobileAddressAutoComplete.js +1 -1
  31. package/dist/MobileAddressAutoComplete.js.map +1 -1
  32. package/dist/Modal.d.ts +1 -1
  33. package/dist/Modal.js +15 -35
  34. package/dist/Modal.js.map +1 -1
  35. package/dist/ModalSheet.d.ts +1 -1
  36. package/dist/ModalSheet.js +1 -1
  37. package/dist/ModalSheet.js.map +1 -1
  38. package/dist/NumberField.js +4 -10
  39. package/dist/NumberField.js.map +1 -1
  40. package/dist/NumberPickerActionSheet.d.ts +3 -1
  41. package/dist/NumberPickerActionSheet.js +3 -0
  42. package/dist/NumberPickerActionSheet.js.map +1 -1
  43. package/dist/Page.js +1 -1
  44. package/dist/Page.js.map +1 -1
  45. package/dist/Pagination.js +2 -2
  46. package/dist/Pagination.js.map +1 -1
  47. package/dist/Permissions.d.ts +1 -1
  48. package/dist/Permissions.js +2 -2
  49. package/dist/Permissions.js.map +1 -1
  50. package/dist/PickerSelect.js +1 -1
  51. package/dist/PickerSelect.js.map +1 -1
  52. package/dist/SectionDivider.js +1 -1
  53. package/dist/SectionDivider.js.map +1 -1
  54. package/dist/SegmentedControl.js.map +1 -1
  55. package/dist/Signature.native.js +2 -2
  56. package/dist/Signature.native.js.map +1 -1
  57. package/dist/SignatureField.js +2 -2
  58. package/dist/SignatureField.js.map +1 -1
  59. package/dist/Slider.js +3 -3
  60. package/dist/Slider.js.map +1 -1
  61. package/dist/SplitPage.js +7 -7
  62. package/dist/SplitPage.js.map +1 -1
  63. package/dist/SplitPage.native.js +6 -4
  64. package/dist/SplitPage.native.js.map +1 -1
  65. package/dist/TapToEdit.js +3 -3
  66. package/dist/TapToEdit.js.map +1 -1
  67. package/dist/Text.js +1 -1
  68. package/dist/Text.js.map +1 -1
  69. package/dist/TextFieldNumberActionSheet.d.ts +4 -2
  70. package/dist/TextFieldNumberActionSheet.js +4 -1
  71. package/dist/TextFieldNumberActionSheet.js.map +1 -1
  72. package/dist/Tooltip.js +21 -39
  73. package/dist/Tooltip.js.map +1 -1
  74. package/dist/Unifier.d.ts +1 -0
  75. package/dist/Unifier.js.map +1 -1
  76. package/dist/Utilities.d.ts +1 -1
  77. package/dist/Utilities.js +3 -2
  78. package/dist/Utilities.js.map +1 -1
  79. package/dist/WebAddressAutocomplete.js +1 -2
  80. package/dist/WebAddressAutocomplete.js.map +1 -1
  81. package/dist/index.d.ts +10 -10
  82. package/dist/index.js +9 -10
  83. package/dist/index.js.map +1 -1
  84. package/dist/jestSetup.d.ts +0 -0
  85. package/dist/jestSetup.js +21 -0
  86. package/dist/jestSetup.js.map +1 -0
  87. package/dist/setupTests.js +22 -0
  88. package/dist/setupTests.js.map +1 -1
  89. package/dist/table/Table.js +15 -14
  90. package/dist/table/Table.js.map +1 -1
  91. package/dist/table/TableHeaderCell.js +2 -2
  92. package/dist/table/TableHeaderCell.js.map +1 -1
  93. package/dist/test-utils.d.ts +4 -1
  94. package/dist/useStoredState.js +2 -4
  95. package/dist/useStoredState.js.map +1 -1
  96. package/package.json +106 -43
  97. package/src/ActionSheet.tsx +22 -26
  98. package/src/AddressField.tsx +1 -1
  99. package/src/Avatar.test.tsx +0 -2
  100. package/src/Badge.tsx +1 -1
  101. package/src/Banner.tsx +1 -1
  102. package/src/Box.test.tsx +70 -71
  103. package/src/Box.tsx +9 -21
  104. package/src/Button.tsx +1 -0
  105. package/src/CheckBox.tsx +1 -7
  106. package/src/Common.ts +19 -7
  107. package/src/DataTable.tsx +4 -3
  108. package/src/DateTimeField.tsx +22 -22
  109. package/src/FernsProvider.tsx +4 -1
  110. package/src/Heading.tsx +1 -3
  111. package/src/Hyperlink.tsx +2 -2
  112. package/src/IconButton.tsx +2 -2
  113. package/src/Image.tsx +0 -1
  114. package/src/MobileAddressAutoComplete.tsx +1 -1
  115. package/src/Modal.tsx +21 -58
  116. package/src/ModalSheet.tsx +1 -1
  117. package/src/NumberField.tsx +4 -10
  118. package/src/NumberPickerActionSheet.tsx +5 -1
  119. package/src/Page.tsx +1 -1
  120. package/src/Pagination.tsx +11 -2
  121. package/src/Permissions.ts +2 -2
  122. package/src/PickerSelect.tsx +1 -1
  123. package/src/SectionDivider.tsx +1 -1
  124. package/src/SegmentedControl.tsx +1 -3
  125. package/src/Signature.native.tsx +2 -2
  126. package/src/SignatureField.tsx +2 -2
  127. package/src/Slider.tsx +17 -10
  128. package/src/SplitPage.native.tsx +4 -2
  129. package/src/SplitPage.tsx +4 -4
  130. package/src/TapToEdit.tsx +7 -3
  131. package/src/Text.tsx +1 -1
  132. package/src/TextArea.test.tsx +43 -27
  133. package/src/TextField.test.tsx +4 -3
  134. package/src/TextFieldNumberActionSheet.tsx +7 -3
  135. package/src/Tooltip.tsx +29 -45
  136. package/src/Unifier.ts +3 -1
  137. package/src/Utilities.tsx +4 -3
  138. package/src/WebAddressAutocomplete.tsx +1 -1
  139. package/src/index.tsx +10 -11
  140. package/src/jestSetup.ts +16 -0
  141. package/src/setupTests.ts +24 -0
  142. package/src/table/Table.tsx +38 -36
  143. package/src/table/TableHeaderCell.tsx +2 -2
  144. package/src/useStoredState.ts +11 -13
  145. package/dist/Accordion.test.d.ts +0 -1
  146. package/dist/Accordion.test.js +0 -71
  147. package/dist/Accordion.test.js.map +0 -1
  148. package/dist/AddressField.test.d.ts +0 -1
  149. package/dist/AddressField.test.js +0 -65
  150. package/dist/AddressField.test.js.map +0 -1
  151. package/dist/Avatar.test.d.ts +0 -1
  152. package/dist/Avatar.test.js +0 -131
  153. package/dist/Avatar.test.js.map +0 -1
  154. package/dist/Badge.test.d.ts +0 -1
  155. package/dist/Badge.test.js +0 -76
  156. package/dist/Badge.test.js.map +0 -1
  157. package/dist/Box.test.d.ts +0 -1
  158. package/dist/Box.test.js +0 -528
  159. package/dist/Box.test.js.map +0 -1
  160. package/dist/DateTimeField.test.d.ts +0 -1
  161. package/dist/DateTimeField.test.js +0 -258
  162. package/dist/DateTimeField.test.js.map +0 -1
  163. package/dist/DateUtilities.test.d.ts +0 -1
  164. package/dist/DateUtilities.test.js +0 -279
  165. package/dist/DateUtilities.test.js.map +0 -1
  166. package/dist/MarkdownView.d.ts +0 -5
  167. package/dist/MarkdownView.js +0 -44
  168. package/dist/MarkdownView.js.map +0 -1
  169. package/dist/TextArea.test.d.ts +0 -1
  170. package/dist/TextArea.test.js +0 -146
  171. package/dist/TextArea.test.js.map +0 -1
  172. package/dist/TextField.test.d.ts +0 -1
  173. package/dist/TextField.test.js +0 -251
  174. package/dist/TextField.test.js.map +0 -1
  175. package/dist/useStoredState.test.d.ts +0 -1
  176. package/dist/useStoredState.test.js +0 -93
  177. package/dist/useStoredState.test.js.map +0 -1
  178. package/src/MarkdownView.tsx +0 -67
@@ -1,8 +1,11 @@
1
1
  import React from "react";
2
2
  export declare const renderWithTheme: (ui: React.ReactElement) => {
3
+ rerender: (component: React.ReactElement) => void;
4
+ rerenderAsync: (component: React.ReactElement) => Promise<void>;
3
5
  update: (component: React.ReactElement) => void;
6
+ updateAsync: (component: React.ReactElement) => Promise<void>;
4
7
  unmount: () => void;
5
- rerender: (component: React.ReactElement) => void;
8
+ unmountAsync: () => Promise<void>;
6
9
  toJSON: () => null | import("react-test-renderer").ReactTestRendererJSON | import("react-test-renderer").ReactTestRendererJSON[];
7
10
  debug: import("@testing-library/react-native").DebugFunction;
8
11
  root: ReactTestInstance;
@@ -16,14 +16,12 @@ export const useStoredState = (key, initialValue) => {
16
16
  }, [initialValue, key]);
17
17
  // Fetch data when the component mounts
18
18
  useEffect(() => {
19
- void fetchData()
20
- .then((value) => {
19
+ void fetchData().then((value) => {
21
20
  if (isMounted.current) {
22
21
  setState(value);
23
22
  setIsLoading(false);
24
23
  }
25
- })
26
- .catch((error) => {
24
+ }).catch((error) => {
27
25
  console.error("Error fetching data:", error);
28
26
  if (isMounted.current) {
29
27
  setIsLoading(false);
@@ -1 +1 @@
1
- {"version":3,"file":"useStoredState.js","sourceRoot":"","sources":["../src/useStoredState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAE/D,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,GAAW,EACX,YAAgB,EACmD,EAAE;IACrE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,YAAY,CAAC,CAAC;IAChE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAE/B,2CAA2C;IAC3C,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,IAA4B,EAAE;QAC/D,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC9D,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;IAExB,uCAAuC;IACvC,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,SAAS,EAAE;aACb,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtB,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtB,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEL,OAAO,GAAG,EAAE;YACV,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;QAC5B,CAAC,CAAC;QACF,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,oBAAoB,GAAG,KAAK,EAAE,QAAuB,EAAiB,EAAE;QAC5E,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtB,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,KAAK,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC,CAAC"}
1
+ {"version":3,"file":"useStoredState.js","sourceRoot":"","sources":["../src/useStoredState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAE/D,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,GAAW,EACX,YAAgB,EACmD,EAAE;IACrE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,YAAY,CAAC,CAAC;IAChE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAE/B,2CAA2C;IAC3C,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,IAA4B,EAAE;QAC/D,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC9D,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;IAExB,uCAAuC;IACvC,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9B,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtB,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtB,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;QAC5B,CAAC,CAAC;QACF,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,oBAAoB,GAAG,KAAK,EAAE,QAAuB,EAAiB,EAAE;QAC5E,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtB,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,KAAK,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,12 @@
1
1
  {
2
2
  "name": "ferns-ui",
3
- "version": "1.15.0",
3
+ "version": "2.0.0-beta.2",
4
4
  "main": "dist/index.js",
5
5
  "license": "Apache-2.0",
6
6
  "scripts": {
7
7
  "local": "tsc-watch --onSuccess \"cp -a dist/* ../flourish/node_modules/ferns-ui/dist\"",
8
- "lint": "biome check src",
9
- "lintfix": "biome check --write src",
10
- "lintfixunsafe": "biome check --write --unsafe src",
8
+ "lint": "eslint",
9
+ "lintfix": "eslint --fix",
11
10
  "build": "tsc",
12
11
  "dev": "tsc -w",
13
12
  "deps": "node checkDeps.js",
@@ -42,83 +41,147 @@
42
41
  "trailingComma": "es5",
43
42
  "useTabs": false
44
43
  },
44
+ "eslintConfig": {
45
+ "extends": [
46
+ "plugin:ferns/recommended",
47
+ "plugin:react-native-a11y/all"
48
+ ],
49
+ "parser": "@typescript-eslint/parser",
50
+ "parserOptions": {
51
+ "project": "./tsconfig.json"
52
+ },
53
+ "plugins": [
54
+ "ban"
55
+ ],
56
+ "rules": {
57
+ "@typescript-eslint/explicit-function-return-type": "off",
58
+ "react-native-a11y/has-valid-accessibility-descriptors": "off",
59
+ "@typescript-eslint/consistent-type-definitions": [
60
+ "error",
61
+ "interface"
62
+ ],
63
+ "ban/ban": [
64
+ "error",
65
+ {
66
+ "name": [
67
+ "dayjs",
68
+ "*"
69
+ ],
70
+ "message": "Use Luxon."
71
+ },
72
+ {
73
+ "name": [
74
+ "moment",
75
+ "*"
76
+ ],
77
+ "message": "Use Luxon"
78
+ },
79
+ {
80
+ "name": [
81
+ "React",
82
+ "FC"
83
+ ],
84
+ "message": "Use FC imported directly from React instead of React.FC"
85
+ }
86
+ ]
87
+ }
88
+ },
45
89
  "files": [
46
90
  "dist/**/*",
47
91
  "src/**/*"
48
92
  ],
49
93
  "devDependencies": {
50
- "@biomejs/biome": "^2.3.6",
51
- "@expo/config-plugins": "~10.0.0",
94
+ "@expo/config-plugins": "~54.0.4",
52
95
  "@testing-library/react-native": "^13.2.0",
53
96
  "@types/jest": "^29.5.14",
54
- "@types/lodash": "^4.17.17",
55
- "@types/luxon": "^3.4.2",
97
+ "@types/lodash": "^4.17.16",
98
+ "@types/luxon": "^3.6.2",
56
99
  "@types/mdurl": "^2.0.0",
57
- "@types/react": "~18.3.12",
100
+ "@types/minimatch": "^6.0.0",
101
+ "@types/react": "~19.1.10",
58
102
  "@types/react-datetime-picker": "^5.0.0",
59
103
  "@types/react-signature-canvas": "^1.0.5",
60
104
  "@types/react-time-picker": "^6.0.0",
105
+ "@typescript-eslint/eslint-plugin": "^8.19.0",
106
+ "@typescript-eslint/parser": "^8.19.0",
61
107
  "babel-jest": "^29.7.0",
62
108
  "babel-preset-react-app": "^10.0.1",
109
+ "eslint": "^8.57.0",
110
+ "eslint-config-prettier": "^9.1.0",
111
+ "eslint-plugin-ban": "^2.0.0",
112
+ "eslint-plugin-comment-length": "^2.1.1",
113
+ "eslint-plugin-ferns": "^0.3.0",
114
+ "eslint-plugin-import": "^2.31.0",
115
+ "eslint-plugin-lodash": "^8.0.0",
116
+ "eslint-plugin-prettier": "^5.2.1",
117
+ "eslint-plugin-react": "^7.37.3",
118
+ "eslint-plugin-react-hooks": "^5.1.0",
119
+ "eslint-plugin-react-native": "^5.0.0",
120
+ "eslint-plugin-react-native-a11y": "^3.3.0",
121
+ "eslint-plugin-simple-import-sort": "^12.1.1",
122
+ "eslint-plugin-unused-imports": "4.1.4",
123
+ "expo-modules-core": "^3.0.29",
63
124
  "jest": "^29.7.0",
64
125
  "jest-expo": "~53.0.7",
65
126
  "jest-github-actions-reporter": "^1.0.3",
66
127
  "mdurl": "^2.0.0",
67
128
  "prettier": "^3.3.3",
68
- "react": "19.0.0",
69
- "react-keyed-flatten-children": "^5.0.0",
70
- "react-router": "^6.23.0",
71
- "react-router-dom": "^6.23.0",
129
+ "react": "19.1.0",
130
+ "react-keyed-flatten-children": "^5.1.1",
131
+ "react-router": "^6.26.2",
132
+ "react-router-dom": "^6.30.1",
133
+ "react-test-renderer": "19.1.0",
72
134
  "tsc-watch": "^7.1.1",
73
135
  "typescript": "~5.8.3"
74
136
  },
75
137
  "peerDependencies": {
76
- "react": "19.0.0",
77
- "react-router": "^6.23.0",
78
- "react-router-dom": "^6.23.0"
138
+ "react": "19.1.0",
139
+ "react-router": "^6.26.2",
140
+ "react-router-dom": "^6.30.1"
79
141
  },
80
142
  "dependencies": {
81
- "@expo-google-fonts/nunito": "^0.4.1",
82
- "@expo-google-fonts/titillium-web": "^0.4.0",
83
- "@expo/vector-icons": "^14.1.0",
84
- "@react-native-async-storage/async-storage": "1.23.1",
143
+ "@expo-google-fonts/nunito": "^0.4.2",
144
+ "@expo-google-fonts/titillium-web": "^0.4.1",
145
+ "@expo/vector-icons": "^15.0.3",
146
+ "@react-native-async-storage/async-storage": "2.2.0",
85
147
  "@react-native-community/blur": "^4.4.0",
86
- "@react-native-community/datetimepicker": "8.4.1",
148
+ "@react-native-community/datetimepicker": "8.4.4",
87
149
  "@react-native-community/slider": "^5.0.1",
88
- "@react-native-picker/picker": "2.11.0",
89
- "expo-clipboard": "~7.1.4",
90
- "expo-font": "~13.3.1",
91
- "expo-haptics": "~14.1.4",
92
- "expo-image-manipulator": "~13.1.7",
93
- "expo-image-picker": "~16.1.4",
94
- "expo-linear-gradient": "~14.1.5",
95
- "expo-localization": "~16.1.5",
96
- "libphonenumber-js": "^1.12.9",
150
+ "@react-native-picker/picker": "2.11.1",
151
+ "expo-clipboard": "~8.0.8",
152
+ "expo-font": "~14.0.10",
153
+ "expo-haptics": "~15.0.8",
154
+ "expo-image-manipulator": "~14.0.8",
155
+ "expo-image-picker": "~17.0.9",
156
+ "expo-linear-gradient": "~15.0.8",
157
+ "expo-localization": "~17.0.8",
158
+ "libphonenumber-js": "^1.12.31",
97
159
  "lodash": "^4.17.21",
98
- "luxon": "^3.6.1",
99
- "patch-package": "^8.0.0",
160
+ "luxon": "^3.7.2",
161
+ "patch-package": "^8.0.1",
100
162
  "react-app-polyfill": "^3.0.0",
101
- "react-date-picker": "^11.0.0",
102
- "react-datetime-picker": "^6.0.1",
163
+ "react-date-picker": "^12.0.1",
164
+ "react-datetime-picker": "^7.0.1",
103
165
  "react-dev-utils": "^12.0.1",
104
- "react-dom": "19.0.0",
105
- "react-native": "0.79.3",
166
+ "react-dom": "19.1.0",
167
+ "react-native": "0.81.5",
106
168
  "react-native-actions-sheet": "^0.9.3",
107
169
  "react-native-calendars": "^1.1312.1",
108
- "react-native-drawer-layout": "4.1.10",
109
- "react-native-gesture-handler": "~2.25.0",
110
- "react-native-google-places-autocomplete": "^2.5.6",
170
+ "react-native-drawer-layout": "4.2.0",
171
+ "react-native-gesture-handler": "~2.28.0",
172
+ "react-native-google-places-autocomplete": "^2.6.1",
111
173
  "react-native-markdown-display": "^7.0.2",
112
174
  "react-native-modalize": "^2.1.1",
113
- "react-native-permissions": "^5.4.1",
175
+ "react-native-permissions": "^5.4.4",
114
176
  "react-native-picker-select": "^9.1.3",
115
177
  "react-native-portalize": "^1.0.7",
116
- "react-native-reanimated": "~3.17.4",
178
+ "react-native-reanimated": "~4.1.1",
117
179
  "react-native-signature-canvas": "^4.7.4",
118
- "react-native-svg": "15.11.2",
119
- "react-native-swiper-flatlist": "^3.2.4",
180
+ "react-native-svg": "15.12.1",
181
+ "react-native-swiper-flatlist": "^3.2.5",
120
182
  "react-native-toast-notifications": "^3.4.0",
121
183
  "react-native-webview": "13.15.0",
184
+ "react-native-worklets": "0.5.1",
122
185
  "react-signature-canvas": "^1.1.0-alpha.2",
123
186
  "react-time-picker": "^7.0.0"
124
187
  }
@@ -5,8 +5,8 @@ import {
5
5
  Animated,
6
6
  Dimensions,
7
7
  EmitterSubscription,
8
- FlatList,
9
8
  findNodeHandle,
9
+ FlatList,
10
10
  Keyboard,
11
11
  KeyboardEvent,
12
12
  LayoutChangeEvent,
@@ -312,11 +312,11 @@ export class ActionSheet extends Component<Props, State, any> {
312
312
  () => {
313
313
  this.isClosing = false;
314
314
  this.isReachedTop = false;
315
- this.props.onPositionChanged?.(false);
315
+ this.props.onPositionChanged && this.props.onPositionChanged(false);
316
316
  this.indicatorTranslateY.setValue(-this.state.paddingTop);
317
317
  this.layoutHasCalled = false;
318
318
  this.deviceLayoutCalled = false;
319
- this.props.onClose?.();
319
+ this.props.onClose && this.props.onClose();
320
320
  }
321
321
  );
322
322
  }
@@ -334,7 +334,7 @@ export class ActionSheet extends Component<Props, State, any> {
334
334
  setTimeout(() => {
335
335
  UIManager.measureInWindow(
336
336
  this.safeAreaViewRef.current._nativeTag,
337
- (_x, _y, _width, height) => {
337
+ (x, y, width, height) => {
338
338
  safeAreaPaddingTop = height;
339
339
  resolve(height === 0 ? 20 : height);
340
340
  }
@@ -377,7 +377,7 @@ export class ActionSheet extends Component<Props, State, any> {
377
377
  this.underlayScale.setValue(1);
378
378
  this.underlayTranslateY.setValue(100);
379
379
  if (!gestureEnabled) {
380
- this.props.onPositionChanged?.(true);
380
+ this.props.onPositionChanged && this.props.onPositionChanged(true);
381
381
  }
382
382
  this.updateActionSheetPosition(scrollOffset);
383
383
  }
@@ -441,7 +441,7 @@ export class ActionSheet extends Component<Props, State, any> {
441
441
  this._scrollTo(scrollOffset);
442
442
  await waitAsync(300);
443
443
  this.isRecoiling = false;
444
- this.props.onPositionChanged?.(true);
444
+ this.props.onPositionChanged && this.props.onPositionChanged(true);
445
445
  } else {
446
446
  this._returnToPrevScrollPosition(this.actionSheetHeight);
447
447
  }
@@ -529,12 +529,12 @@ export class ActionSheet extends Component<Props, State, any> {
529
529
  if (this.actionSheetHeight < this.offsetY) {
530
530
  if (!this.isReachedTop) {
531
531
  this.isReachedTop = true;
532
- this.props.onPositionChanged?.(true);
532
+ this.props.onPositionChanged && this.props.onPositionChanged(true);
533
533
  }
534
534
  } else {
535
535
  if (this.isReachedTop) {
536
536
  this.isReachedTop = false;
537
- this.props.onPositionChanged?.(false);
537
+ this.props.onPositionChanged && this.props.onPositionChanged(false);
538
538
  }
539
539
  }
540
540
 
@@ -581,7 +581,7 @@ export class ActionSheet extends Component<Props, State, any> {
581
581
  const ReactNativeVersion = require("react-native/Libraries/Core/ReactNativeVersion");
582
582
 
583
583
  let v = ReactNativeVersion.version.major + ReactNativeVersion.version.minor;
584
- v = parseInt(v, 10);
584
+ v = parseInt(v);
585
585
 
586
586
  if (v >= 63 || Platform.OS === "ios") {
587
587
  const keyboardHeight = event.endCoordinates.height;
@@ -595,24 +595,20 @@ export class ActionSheet extends Component<Props, State, any> {
595
595
  return;
596
596
  }
597
597
 
598
- UIManager.measure(
599
- currentlyFocusedField,
600
- (_originX, _originY, _width, height, _pageX, pageY) => {
601
- const fieldHeight = height;
602
- const gap = windowHeight - keyboardHeight - (pageY + fieldHeight);
603
- if (gap >= 0) {
604
- return;
605
- }
606
- const toValue =
607
- this.props.keyboardMode === "position" ? -(keyboardHeight + 15) : gap - 10;
608
-
609
- Animated.timing(this.transformValue, {
610
- toValue,
611
- duration: 250,
612
- useNativeDriver: true,
613
- }).start();
598
+ UIManager.measure(currentlyFocusedField, (originX, originY, width, height, pageX, pageY) => {
599
+ const fieldHeight = height;
600
+ const gap = windowHeight - keyboardHeight - (pageY + fieldHeight);
601
+ if (gap >= 0) {
602
+ return;
614
603
  }
615
- );
604
+ const toValue = this.props.keyboardMode === "position" ? -(keyboardHeight + 15) : gap - 10;
605
+
606
+ Animated.timing(this.transformValue, {
607
+ toValue,
608
+ duration: 250,
609
+ useNativeDriver: true,
610
+ }).start();
611
+ });
616
612
  } else {
617
613
  Animated.timing(this.transformValue, {
618
614
  toValue: -10,
@@ -19,7 +19,7 @@ export const AddressField: FC<AddressFieldProps> = ({
19
19
  }) => {
20
20
  const handleAddressChange = (field: string, newValue: string) => {
21
21
  onChange({...value, [field]: newValue});
22
- onBlur?.({...value, [field]: newValue});
22
+ onBlur && onBlur({...value, [field]: newValue});
23
23
  };
24
24
 
25
25
  const handleAutoCompleteChange = (newValue: AddressInterface) => {
@@ -18,9 +18,7 @@ const mockRenderAsync = jest.fn();
18
18
  const mockSaveAsync = jest.fn();
19
19
 
20
20
  jest.mock("expo-image-manipulator", () => {
21
- const actual = jest.requireActual("expo-image-manipulator");
22
21
  return {
23
- ...actual,
24
22
  ImageManipulator: {
25
23
  manipulate: jest.fn().mockImplementation(() => ({
26
24
  resize: mockResize.mockImplementation(() => ({
package/src/Badge.tsx CHANGED
@@ -77,7 +77,7 @@ export const Badge = ({
77
77
  let badgeValue = value;
78
78
 
79
79
  if (variant === "numberOnly") {
80
- if (!Number.isNaN(Number(value)) && maxValue) {
80
+ if (!isNaN(Number(value)) && maxValue) {
81
81
  const numberValue = Number(value);
82
82
  if (numberValue > maxValue) {
83
83
  badgeValue = `${maxValue}+`;
package/src/Banner.tsx CHANGED
@@ -1,6 +1,6 @@
1
1
  import debounce from "lodash/debounce";
2
2
  import React, {useEffect, useState} from "react";
3
- import {ActivityIndicator, Text as NativeText, Pressable, View} from "react-native";
3
+ import {ActivityIndicator, Pressable, Text as NativeText, View} from "react-native";
4
4
 
5
5
  import {Box} from "./Box";
6
6
  import {BannerProps, IconName, SurfaceTheme} from "./Common";