@forthtilliath/react-native-kit 0.14.8 → 0.15.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.
Files changed (103) hide show
  1. package/README.md +37 -17
  2. package/dist/components/index.d.ts +4 -4
  3. package/dist/components/index.d.ts.map +1 -1
  4. package/dist/components/index.js +4 -4
  5. package/dist/components/list/SwipeableRow.d.ts +14 -1
  6. package/dist/components/list/SwipeableRow.d.ts.map +1 -1
  7. package/dist/components/list/SwipeableRow.js +18 -16
  8. package/dist/components/list/Thumbnail.d.ts.map +1 -1
  9. package/dist/components/list/Thumbnail.js +2 -6
  10. package/dist/components/list/UndoToast.d.ts +10 -4
  11. package/dist/components/list/UndoToast.d.ts.map +1 -1
  12. package/dist/components/list/UndoToast.js +11 -8
  13. package/dist/components/list/index.d.ts +4 -4
  14. package/dist/components/list/index.d.ts.map +1 -1
  15. package/dist/components/list/index.js +4 -4
  16. package/dist/components/picker/PhotoPicker.d.ts +7 -1
  17. package/dist/components/picker/PhotoPicker.d.ts.map +1 -1
  18. package/dist/components/picker/PhotoPicker.js +33 -28
  19. package/dist/components/picker/PickerModal.d.ts +7 -1
  20. package/dist/components/picker/PickerModal.d.ts.map +1 -1
  21. package/dist/components/picker/PickerModal.js +8 -28
  22. package/dist/components/picker/PickerModal.styles.d.ts +18 -1
  23. package/dist/components/picker/PickerModal.styles.d.ts.map +1 -1
  24. package/dist/components/picker/PickerModal.styles.js +16 -6
  25. package/dist/components/picker/VoiceSearchButton.d.ts +13 -2
  26. package/dist/components/picker/VoiceSearchButton.d.ts.map +1 -1
  27. package/dist/components/picker/VoiceSearchButton.js +18 -1
  28. package/dist/components/picker/index.d.ts +3 -3
  29. package/dist/components/picker/index.d.ts.map +1 -1
  30. package/dist/components/picker/index.js +3 -3
  31. package/dist/components/settings/AboutSettingsScreen.d.ts +7 -1
  32. package/dist/components/settings/AboutSettingsScreen.d.ts.map +1 -1
  33. package/dist/components/settings/AboutSettingsScreen.js +13 -13
  34. package/dist/components/settings/BackupSettingsScreen.d.ts +9 -59
  35. package/dist/components/settings/BackupSettingsScreen.d.ts.map +1 -1
  36. package/dist/components/settings/BackupSettingsScreen.js +32 -141
  37. package/dist/components/settings/BackupSettingsScreen.styles.d.ts +173 -0
  38. package/dist/components/settings/BackupSettingsScreen.styles.d.ts.map +1 -0
  39. package/dist/components/settings/BackupSettingsScreen.styles.js +98 -0
  40. package/dist/components/settings/ContactSettingsScreen.d.ts +7 -1
  41. package/dist/components/settings/ContactSettingsScreen.d.ts.map +1 -1
  42. package/dist/components/settings/ContactSettingsScreen.js +15 -14
  43. package/dist/components/settings/PrivacySettingsScreen.d.ts +7 -1
  44. package/dist/components/settings/PrivacySettingsScreen.d.ts.map +1 -1
  45. package/dist/components/settings/PrivacySettingsScreen.js +50 -28
  46. package/dist/components/settings/SettingsMenu.d.ts.map +1 -1
  47. package/dist/components/settings/SettingsMenu.js +2 -9
  48. package/dist/components/settings/ThemeSettingsScreen.d.ts +7 -1
  49. package/dist/components/settings/ThemeSettingsScreen.d.ts.map +1 -1
  50. package/dist/components/settings/ThemeSettingsScreen.js +17 -19
  51. package/dist/components/settings/UpdateSettingsScreen.d.ts +11 -2
  52. package/dist/components/settings/UpdateSettingsScreen.d.ts.map +1 -1
  53. package/dist/components/settings/UpdateSettingsScreen.js +7 -31
  54. package/dist/components/settings/UpdateSettingsScreen.styles.d.ts +28 -1
  55. package/dist/components/settings/UpdateSettingsScreen.styles.d.ts.map +1 -1
  56. package/dist/components/settings/UpdateSettingsScreen.styles.js +26 -11
  57. package/dist/components/settings/index.d.ts +7 -7
  58. package/dist/components/settings/index.d.ts.map +1 -1
  59. package/dist/components/settings/index.js +7 -7
  60. package/dist/components/theme/ThemeOptionList.d.ts +7 -1
  61. package/dist/components/theme/ThemeOptionList.d.ts.map +1 -1
  62. package/dist/components/theme/ThemeOptionList.js +6 -17
  63. package/dist/components/theme/ThemeToggle.d.ts +7 -1
  64. package/dist/components/theme/ThemeToggle.d.ts.map +1 -1
  65. package/dist/components/theme/ThemeToggle.js +6 -20
  66. package/dist/components/theme/index.d.ts +2 -2
  67. package/dist/components/theme/index.d.ts.map +1 -1
  68. package/dist/components/theme/index.js +2 -2
  69. package/dist/components/theme/themeLabels.d.ts +14 -0
  70. package/dist/components/theme/themeLabels.d.ts.map +1 -0
  71. package/dist/components/theme/themeLabels.js +5 -0
  72. package/dist/hooks/index.d.ts +3 -3
  73. package/dist/hooks/index.d.ts.map +1 -1
  74. package/dist/hooks/index.js +3 -3
  75. package/dist/hooks/useDebouncedChange.d.ts.map +1 -1
  76. package/dist/hooks/useDebouncedChange.js +6 -7
  77. package/dist/hooks/useSubmitGuard.d.ts.map +1 -1
  78. package/dist/hooks/useSubmitGuard.js +9 -5
  79. package/dist/i18n/KitLocaleProvider.d.ts +19 -0
  80. package/dist/i18n/KitLocaleProvider.d.ts.map +1 -0
  81. package/dist/i18n/KitLocaleProvider.js +16 -0
  82. package/dist/i18n/index.d.ts +3 -0
  83. package/dist/i18n/index.d.ts.map +1 -0
  84. package/dist/i18n/index.js +2 -0
  85. package/dist/i18n/locale.d.ts +14 -0
  86. package/dist/i18n/locale.d.ts.map +1 -0
  87. package/dist/i18n/locale.js +18 -0
  88. package/dist/index.d.ts +5 -2
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +5 -2
  91. package/dist/utils/helpers/confirmDestructive.d.ts +6 -0
  92. package/dist/utils/helpers/confirmDestructive.d.ts.map +1 -1
  93. package/dist/utils/helpers/confirmDestructive.js +20 -6
  94. package/dist/utils/helpers/index.d.ts +1 -0
  95. package/dist/utils/helpers/index.d.ts.map +1 -1
  96. package/dist/utils/helpers/index.js +1 -0
  97. package/dist/utils/helpers/mergeSlotStyles.d.ts +20 -0
  98. package/dist/utils/helpers/mergeSlotStyles.d.ts.map +1 -0
  99. package/dist/utils/helpers/mergeSlotStyles.js +26 -0
  100. package/dist/utils/index.d.ts +1 -1
  101. package/dist/utils/index.d.ts.map +1 -1
  102. package/dist/utils/index.js +1 -1
  103. package/package.json +14 -10
@@ -1,7 +1,13 @@
1
+ import { type KitLocale } from "../../i18n/locale.js";
1
2
  export interface ConfirmDestructiveOptions {
2
3
  message?: string;
3
4
  cancelLabel?: string;
4
5
  confirmLabel?: string;
6
+ /**
7
+ * Language of the default message/labels. Not a component, so this can't
8
+ * read a `KitLocaleProvider`: pass the app's locale here (French by default).
9
+ */
10
+ locale?: KitLocale;
5
11
  }
6
12
  export declare function confirmDestructive(title: string, onConfirm: () => void, options?: ConfirmDestructiveOptions): void;
7
13
  //# sourceMappingURL=confirmDestructive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"confirmDestructive.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/confirmDestructive.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAQD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,IAAI,EACrB,OAAO,GAAE,yBAA8B,QAWxC"}
1
+ {"version":3,"file":"confirmDestructive.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/confirmDestructive.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE1E,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAoBD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,IAAI,EACrB,OAAO,GAAE,yBAA8B,QAWxC"}
@@ -1,11 +1,25 @@
1
1
  import { Alert } from "react-native";
2
- const DEFAULT_MESSAGE = "Cette action est définitive.";
3
- const DEFAULT_CANCEL_LABEL = "Annuler";
4
- const DEFAULT_CONFIRM_LABEL = "Supprimer";
5
- // Confirmation destructive générique (titre + message + Annuler/Confirmer),
6
- // pour toute action irréversible (suppression, réinitialisation...).
2
+ import { DEFAULT_KIT_LOCALE } from "../../i18n/locale.js";
3
+ const defaultTexts = {
4
+ fr: {
5
+ message: "Cette action est définitive.",
6
+ cancelLabel: "Annuler",
7
+ confirmLabel: "Supprimer",
8
+ },
9
+ en: {
10
+ message: "This can't be undone.",
11
+ cancelLabel: "Cancel",
12
+ confirmLabel: "Delete",
13
+ },
14
+ };
15
+ // Generic destructive confirmation (title + message + Cancel/Confirm), for
16
+ // any irreversible action (deletion, reset...).
7
17
  export function confirmDestructive(title, onConfirm, options = {}) {
8
- const { message = DEFAULT_MESSAGE, cancelLabel = DEFAULT_CANCEL_LABEL, confirmLabel = DEFAULT_CONFIRM_LABEL, } = options;
18
+ const { locale = DEFAULT_KIT_LOCALE, ...overrides } = options;
19
+ const { message, cancelLabel, confirmLabel } = {
20
+ ...defaultTexts[locale],
21
+ ...overrides,
22
+ };
9
23
  Alert.alert(title, message, [
10
24
  { text: cancelLabel, style: "cancel" },
11
25
  { text: confirmLabel, style: "destructive", onPress: onConfirm },
@@ -1,2 +1,3 @@
1
1
  export * from "./confirmDestructive.js";
2
+ export * from "./mergeSlotStyles.js";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC"}
@@ -1 +1,2 @@
1
1
  export * from "./confirmDestructive.js";
2
+ export * from "./mergeSlotStyles.js";
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Merges a component's per-slot style overrides onto its defaults, slot by
3
+ * slot, as `[default, override]` style arrays — so overriding one property of
4
+ * a slot (say `button.backgroundColor`) keeps the rest of that slot's default
5
+ * (padding, radius…) instead of replacing it wholesale.
6
+ *
7
+ * Every key of `defaults` is paired this way, including non-style fields
8
+ * (icon colors…), which the caller resolves itself and simply ignores here.
9
+ *
10
+ * @param defaults - The default style of each slot.
11
+ * @param overrides - The caller's `styles` prop, if any.
12
+ * @returns For each slot of `defaults`, a `[default, override]` style array.
13
+ * @example
14
+ * const merged = mergeSlotStyles(defaultStyles, styles);
15
+ * <View style={merged.container} />
16
+ */
17
+ export declare function mergeSlotStyles<D extends Record<string, unknown>, O extends object>(defaults: D, overrides: O | undefined): {
18
+ [K in keyof D]: [D[K], K extends keyof O ? O[K] : undefined];
19
+ };
20
+ //# sourceMappingURL=mergeSlotStyles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeSlotStyles.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/mergeSlotStyles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,CAAC,SAAS,MAAM,EAEhB,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,CAAC,GAAG,SAAS,GACvB;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CAAE,CAWlE"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Merges a component's per-slot style overrides onto its defaults, slot by
3
+ * slot, as `[default, override]` style arrays — so overriding one property of
4
+ * a slot (say `button.backgroundColor`) keeps the rest of that slot's default
5
+ * (padding, radius…) instead of replacing it wholesale.
6
+ *
7
+ * Every key of `defaults` is paired this way, including non-style fields
8
+ * (icon colors…), which the caller resolves itself and simply ignores here.
9
+ *
10
+ * @param defaults - The default style of each slot.
11
+ * @param overrides - The caller's `styles` prop, if any.
12
+ * @returns For each slot of `defaults`, a `[default, override]` style array.
13
+ * @example
14
+ * const merged = mergeSlotStyles(defaultStyles, styles);
15
+ * <View style={merged.container} />
16
+ */
17
+ export function mergeSlotStyles(defaults, overrides) {
18
+ const merged = {};
19
+ for (const key of Object.keys(defaults)) {
20
+ merged[key] = [
21
+ defaults[key],
22
+ overrides?.[key],
23
+ ];
24
+ }
25
+ return merged;
26
+ }
@@ -1,2 +1,2 @@
1
- export * from "./helpers";
1
+ export * from "./helpers/index.js";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- export * from "./helpers";
1
+ export * from "./helpers/index.js";
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@forthtilliath/react-native-kit",
3
- "version": "0.14.8",
3
+ "version": "0.15.0",
4
4
  "type": "module",
5
+ "sideEffects": false,
5
6
  "license": "MIT",
6
7
  "publishConfig": {
7
8
  "access": "public"
@@ -21,8 +22,8 @@
21
22
  "./*": "./dist/*.js"
22
23
  },
23
24
  "dependencies": {
24
- "@forthtilliath/expo-release-updates-ui": "0.2.8",
25
- "@forthtilliath/ts-kit": "0.10.0"
25
+ "@forthtilliath/expo-release-updates-ui": "^0.3.0",
26
+ "@forthtilliath/ts-kit": "^0.11.0"
26
27
  },
27
28
  "peerDependencies": {
28
29
  "@expo/vector-icons": ">=15.0.0",
@@ -30,25 +31,28 @@
30
31
  "expo-speech-recognition": ">=1.0.0",
31
32
  "react": ">=19",
32
33
  "react-native": ">=0.81",
33
- "react-native-gesture-handler": ">=2.20.0"
34
+ "react-native-gesture-handler": ">=2.20.0",
35
+ "react-native-reanimated": ">=3.0.0"
34
36
  },
35
37
  "devDependencies": {
36
38
  "@expo/vector-icons": "^15.1.1",
37
- "@size-limit/file": "^11.2.0",
39
+ "@size-limit/file": "^14.1.0",
38
40
  "@types/react": "^19.2.18",
39
41
  "@types/react-test-renderer": "^19.1.0",
40
- "@vitest/coverage-v8": "4.1.10",
42
+ "@vitest/coverage-v8": "5.0.2",
41
43
  "eslint": "10.7.0",
42
44
  "expo-image-picker": "~57.0.9",
43
45
  "expo-speech-recognition": "^56.0.1",
44
46
  "react": "^19.2.8",
45
47
  "react-native": "0.86.0",
46
48
  "react-native-gesture-handler": "~2.32.0",
49
+ "react-native-reanimated": "4.5.1",
50
+ "react-native-worklets": "0.10.1",
47
51
  "react-test-renderer": "19.2.3",
48
- "size-limit": "^11.2.0",
52
+ "size-limit": "^14.1.0",
49
53
  "typescript": "^5.9.3",
50
- "vitest": "^4.1.10",
51
- "@forthtilliath/eslint-config": "0.7.0",
54
+ "vitest": "^5.0.2",
55
+ "@forthtilliath/eslint-config": "0.8.0",
52
56
  "@forthtilliath/typescript-config": "0.1.1"
53
57
  },
54
58
  "size-limit": [
@@ -61,7 +65,7 @@
61
65
  "scripts": {
62
66
  "lint": "eslint . --max-warnings 0",
63
67
  "check-types": "tsc --noEmit",
64
- "clean": "rm -rf dist",
68
+ "clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
65
69
  "dev": "tsc --watch -p tsconfig.build.json",
66
70
  "build": "pnpm run clean && tsc -p tsconfig.build.json",
67
71
  "test": "vitest run",