@pi-spi/app 1.3.1 → 1.5.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 (223) hide show
  1. package/README.md +74 -7
  2. package/assets/icons/qr.png +0 -0
  3. package/assets/sounds/voice/search_prompt_en.mp3 +0 -0
  4. package/assets/sounds/voice/search_prompt_fr.mp3 +0 -0
  5. package/assets/sounds/voice/search_prompt_pt.mp3 +0 -0
  6. package/example/App.tsx +16 -1
  7. package/example/app.json +9 -1
  8. package/lib/module/core/assets.js +1 -0
  9. package/lib/module/core/assets.js.map +1 -1
  10. package/lib/module/core/di.js +8 -1
  11. package/lib/module/core/di.js.map +1 -1
  12. package/lib/module/core/pi_spi_custom_theme.js +63 -0
  13. package/lib/module/core/pi_spi_custom_theme.js.map +1 -0
  14. package/lib/module/core/pi_spi_sdk_config.js +15 -3
  15. package/lib/module/core/pi_spi_sdk_config.js.map +1 -1
  16. package/lib/module/core/router.js +3 -0
  17. package/lib/module/core/router.js.map +1 -1
  18. package/lib/module/core/routes.js +14 -0
  19. package/lib/module/core/routes.js.map +1 -1
  20. package/lib/module/core/storage.js +27 -29
  21. package/lib/module/core/storage.js.map +1 -1
  22. package/lib/module/core/theme.js +51 -0
  23. package/lib/module/core/theme.js.map +1 -1
  24. package/lib/module/index.js +1 -0
  25. package/lib/module/index.js.map +1 -1
  26. package/lib/module/l10n/app_localizations.js.map +1 -1
  27. package/lib/module/l10n/app_localizations_en.js +24 -1
  28. package/lib/module/l10n/app_localizations_en.js.map +1 -1
  29. package/lib/module/l10n/app_localizations_fr.js +24 -1
  30. package/lib/module/l10n/app_localizations_fr.js.map +1 -1
  31. package/lib/module/l10n/app_localizations_pt.js +24 -1
  32. package/lib/module/l10n/app_localizations_pt.js.map +1 -1
  33. package/lib/module/modules/alias/presentation/pages/alias_page_create_options.js +3 -3
  34. package/lib/module/modules/alias/presentation/pages/alias_page_create_options.js.map +1 -1
  35. package/lib/module/modules/alias/presentation/pages/alias_page_otp.js.map +1 -1
  36. package/lib/module/modules/categorie/presentation/pages/categorie_edit_icon_btn.js +2 -2
  37. package/lib/module/modules/categorie/presentation/pages/categorie_edit_icon_btn.js.map +1 -1
  38. package/lib/module/modules/categorie/presentation/pages/categorie_select_widget.js +12 -10
  39. package/lib/module/modules/categorie/presentation/pages/categorie_select_widget.js.map +1 -1
  40. package/lib/module/modules/compte/presentation/pages/solde_widget_with_qr.js +14 -9
  41. package/lib/module/modules/compte/presentation/pages/solde_widget_with_qr.js.map +1 -1
  42. package/lib/module/modules/home/presentation/pages/home_page.js +41 -2
  43. package/lib/module/modules/home/presentation/pages/home_page.js.map +1 -1
  44. package/lib/module/modules/home/presentation/pages/home_tab_compte.js +1 -2
  45. package/lib/module/modules/home/presentation/pages/home_tab_compte.js.map +1 -1
  46. package/lib/module/modules/home/presentation/pages/home_tab_compte_more_menu.js +2 -2
  47. package/lib/module/modules/home/presentation/pages/home_tab_compte_more_menu.js.map +1 -1
  48. package/lib/module/modules/introduction/presentation/pages/introduction_bar.js +8 -1
  49. package/lib/module/modules/introduction/presentation/pages/introduction_bar.js.map +1 -1
  50. package/lib/module/modules/introduction/presentation/pages/introduction_page.js +29 -4
  51. package/lib/module/modules/introduction/presentation/pages/introduction_page.js.map +1 -1
  52. package/lib/module/modules/notification/presentation/bloc/notification_bloc.js +11 -4
  53. package/lib/module/modules/notification/presentation/bloc/notification_bloc.js.map +1 -1
  54. package/lib/module/modules/notification/presentation/bloc/notification_state.js +7 -1
  55. package/lib/module/modules/notification/presentation/bloc/notification_state.js.map +1 -1
  56. package/lib/module/modules/notification/presentation/pages/notification_page_liste.js +6 -2
  57. package/lib/module/modules/notification/presentation/pages/notification_page_liste.js.map +1 -1
  58. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page.js +2 -2
  59. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page.js.map +1 -1
  60. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.js +2 -2
  61. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.js.map +1 -1
  62. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_theme.js +156 -25
  63. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_theme.js.map +1 -1
  64. package/lib/module/modules/profile/presentation/pages/web/profile_web_page.js.map +1 -1
  65. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page.js.map +1 -1
  66. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page_share.js +2 -2
  67. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page_share.js.map +1 -1
  68. package/lib/module/modules/search/domain/models/fonctionnalite.js +199 -0
  69. package/lib/module/modules/search/domain/models/fonctionnalite.js.map +1 -0
  70. package/lib/module/modules/search/presentation/pages/search_fonctionnalites.js +119 -0
  71. package/lib/module/modules/search/presentation/pages/search_fonctionnalites.js.map +1 -0
  72. package/lib/module/modules/search/presentation/pages/search_page.js +359 -0
  73. package/lib/module/modules/search/presentation/pages/search_page.js.map +1 -0
  74. package/lib/module/modules/search/presentation/pages/search_page_voice_button.js +335 -0
  75. package/lib/module/modules/search/presentation/pages/search_page_voice_button.js.map +1 -0
  76. package/lib/module/modules/subscription/presentation/pages/subscription_menu_widget.js +2 -2
  77. package/lib/module/modules/subscription/presentation/pages/subscription_menu_widget.js.map +1 -1
  78. package/lib/module/modules/transactions/domain/models/transaction_send/transaction_send_command.js +6 -2
  79. package/lib/module/modules/transactions/domain/models/transaction_send/transaction_send_command.js.map +1 -1
  80. package/lib/module/modules/transactions/presentation/bloc/transaction_search/transaction_search_bloc.js +13 -1
  81. package/lib/module/modules/transactions/presentation/bloc/transaction_search/transaction_search_bloc.js.map +1 -1
  82. package/lib/module/modules/transactions/presentation/bloc/transaction_search/transaction_search_state.js +7 -1
  83. package/lib/module/modules/transactions/presentation/bloc/transaction_search/transaction_search_state.js.map +1 -1
  84. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_motif.js +3 -1
  85. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_motif.js.map +1 -1
  86. package/lib/module/modules/transactions/presentation/pages/transaction_jour_libelle.js +15 -0
  87. package/lib/module/modules/transactions/presentation/pages/transaction_jour_libelle.js.map +1 -0
  88. package/lib/module/modules/transactions/presentation/pages/transaction_list_item_widget.js +2 -1
  89. package/lib/module/modules/transactions/presentation/pages/transaction_list_item_widget.js.map +1 -1
  90. package/lib/module/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.js +5 -3
  91. package/lib/module/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.js.map +1 -1
  92. package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page_filters.js +216 -137
  93. package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page_filters.js.map +1 -1
  94. package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page_liste.js +8 -3
  95. package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page_liste.js.map +1 -1
  96. package/lib/module/modules/transactions/presentation/pages/transaction_send/transaction_send_page_options.js +3 -3
  97. package/lib/module/modules/transactions/presentation/pages/transaction_send/transaction_send_page_options.js.map +1 -1
  98. package/lib/module/shared/widgets/amount_widget.js +4 -1
  99. package/lib/module/shared/widgets/amount_widget.js.map +1 -1
  100. package/lib/module/shared/widgets/input_amount.js.map +1 -1
  101. package/lib/module/shared/widgets/input_text.js +2 -0
  102. package/lib/module/shared/widgets/input_text.js.map +1 -1
  103. package/lib/module/shared/widgets/menu_actions_widget.js +10 -1
  104. package/lib/module/shared/widgets/menu_actions_widget.js.map +1 -1
  105. package/lib/module/shared/widgets/pagination_loader_widget.js +29 -0
  106. package/lib/module/shared/widgets/pagination_loader_widget.js.map +1 -0
  107. package/lib/typescript/src/core/assets.d.ts +1 -0
  108. package/lib/typescript/src/core/assets.d.ts.map +1 -1
  109. package/lib/typescript/src/core/di.d.ts.map +1 -1
  110. package/lib/typescript/src/core/pi_spi_custom_theme.d.ts +49 -0
  111. package/lib/typescript/src/core/pi_spi_custom_theme.d.ts.map +1 -0
  112. package/lib/typescript/src/core/pi_spi_sdk_config.d.ts +15 -2
  113. package/lib/typescript/src/core/pi_spi_sdk_config.d.ts.map +1 -1
  114. package/lib/typescript/src/core/router.d.ts +1 -0
  115. package/lib/typescript/src/core/router.d.ts.map +1 -1
  116. package/lib/typescript/src/core/routes.d.ts.map +1 -1
  117. package/lib/typescript/src/core/storage.d.ts +11 -3
  118. package/lib/typescript/src/core/storage.d.ts.map +1 -1
  119. package/lib/typescript/src/core/theme.d.ts +19 -0
  120. package/lib/typescript/src/core/theme.d.ts.map +1 -1
  121. package/lib/typescript/src/index.d.ts +2 -1
  122. package/lib/typescript/src/index.d.ts.map +1 -1
  123. package/lib/typescript/src/l10n/app_localizations.d.ts +46 -0
  124. package/lib/typescript/src/l10n/app_localizations.d.ts.map +1 -1
  125. package/lib/typescript/src/l10n/app_localizations_en.d.ts.map +1 -1
  126. package/lib/typescript/src/l10n/app_localizations_fr.d.ts.map +1 -1
  127. package/lib/typescript/src/l10n/app_localizations_pt.d.ts.map +1 -1
  128. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_select_widget.d.ts.map +1 -1
  129. package/lib/typescript/src/modules/compte/presentation/pages/solde_widget_with_qr.d.ts.map +1 -1
  130. package/lib/typescript/src/modules/home/presentation/pages/home_page.d.ts.map +1 -1
  131. package/lib/typescript/src/modules/introduction/presentation/pages/introduction_bar.d.ts.map +1 -1
  132. package/lib/typescript/src/modules/introduction/presentation/pages/introduction_page.d.ts.map +1 -1
  133. package/lib/typescript/src/modules/notification/presentation/bloc/notification_bloc.d.ts.map +1 -1
  134. package/lib/typescript/src/modules/notification/presentation/bloc/notification_state.d.ts +5 -0
  135. package/lib/typescript/src/modules/notification/presentation/bloc/notification_state.d.ts.map +1 -1
  136. package/lib/typescript/src/modules/notification/presentation/pages/notification_page_liste.d.ts.map +1 -1
  137. package/lib/typescript/src/modules/profile/presentation/pages/parametre/profile_parametre_page.d.ts.map +1 -1
  138. package/lib/typescript/src/modules/profile/presentation/pages/parametre/profile_parametre_page_theme.d.ts.map +1 -1
  139. package/lib/typescript/src/modules/profile/presentation/pages/web/profile_web_page.d.ts.map +1 -1
  140. package/lib/typescript/src/modules/search/domain/models/fonctionnalite.d.ts +70 -0
  141. package/lib/typescript/src/modules/search/domain/models/fonctionnalite.d.ts.map +1 -0
  142. package/lib/typescript/src/modules/search/presentation/pages/search_fonctionnalites.d.ts +21 -0
  143. package/lib/typescript/src/modules/search/presentation/pages/search_fonctionnalites.d.ts.map +1 -0
  144. package/lib/typescript/src/modules/search/presentation/pages/search_page.d.ts +21 -0
  145. package/lib/typescript/src/modules/search/presentation/pages/search_page.d.ts.map +1 -0
  146. package/lib/typescript/src/modules/search/presentation/pages/search_page_voice_button.d.ts +29 -0
  147. package/lib/typescript/src/modules/search/presentation/pages/search_page_voice_button.d.ts.map +1 -0
  148. package/lib/typescript/src/modules/transactions/domain/models/transaction_send/transaction_send_command.d.ts +1 -1
  149. package/lib/typescript/src/modules/transactions/domain/models/transaction_send/transaction_send_command.d.ts.map +1 -1
  150. package/lib/typescript/src/modules/transactions/presentation/bloc/transaction_search/transaction_search_bloc.d.ts.map +1 -1
  151. package/lib/typescript/src/modules/transactions/presentation/bloc/transaction_search/transaction_search_state.d.ts +5 -0
  152. package/lib/typescript/src/modules/transactions/presentation/bloc/transaction_search/transaction_search_state.d.ts.map +1 -1
  153. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_motif.d.ts +2 -1
  154. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_motif.d.ts.map +1 -1
  155. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_jour_libelle.d.ts +4 -0
  156. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_jour_libelle.d.ts.map +1 -0
  157. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_list_item_widget.d.ts +2 -1
  158. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_list_item_widget.d.ts.map +1 -1
  159. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.d.ts.map +1 -1
  160. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_filters.d.ts +5 -1
  161. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_filters.d.ts.map +1 -1
  162. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_liste.d.ts.map +1 -1
  163. package/lib/typescript/src/shared/widgets/amount_widget.d.ts +3 -1
  164. package/lib/typescript/src/shared/widgets/amount_widget.d.ts.map +1 -1
  165. package/lib/typescript/src/shared/widgets/input_text.d.ts +3 -3
  166. package/lib/typescript/src/shared/widgets/input_text.d.ts.map +1 -1
  167. package/lib/typescript/src/shared/widgets/menu_actions_widget.d.ts +5 -1
  168. package/lib/typescript/src/shared/widgets/menu_actions_widget.d.ts.map +1 -1
  169. package/lib/typescript/src/shared/widgets/pagination_loader_widget.d.ts +7 -0
  170. package/lib/typescript/src/shared/widgets/pagination_loader_widget.d.ts.map +1 -0
  171. package/package.json +49 -35
  172. package/src/core/assets.ts +1 -0
  173. package/src/core/di.ts +8 -1
  174. package/src/core/pi_spi_custom_theme.ts +66 -0
  175. package/src/core/pi_spi_sdk_config.ts +18 -3
  176. package/src/core/router.tsx +3 -0
  177. package/src/core/routes.tsx +15 -0
  178. package/src/core/storage.ts +30 -22
  179. package/src/core/theme.ts +53 -0
  180. package/src/index.ts +2 -1
  181. package/src/l10n/app_localizations.ts +46 -0
  182. package/src/l10n/app_localizations_en.ts +23 -0
  183. package/src/l10n/app_localizations_fr.ts +23 -0
  184. package/src/l10n/app_localizations_pt.ts +23 -0
  185. package/src/modules/alias/presentation/pages/alias_page_create_options.tsx +3 -3
  186. package/src/modules/alias/presentation/pages/alias_page_otp.tsx +2 -2
  187. package/src/modules/categorie/presentation/pages/categorie_edit_icon_btn.tsx +2 -2
  188. package/src/modules/categorie/presentation/pages/categorie_select_widget.tsx +13 -9
  189. package/src/modules/compte/presentation/pages/solde_widget_with_qr.tsx +10 -3
  190. package/src/modules/home/presentation/pages/home_page.tsx +31 -2
  191. package/src/modules/home/presentation/pages/home_tab_compte.tsx +1 -1
  192. package/src/modules/home/presentation/pages/home_tab_compte_more_menu.tsx +2 -2
  193. package/src/modules/introduction/presentation/pages/introduction_bar.tsx +12 -2
  194. package/src/modules/introduction/presentation/pages/introduction_page.tsx +20 -2
  195. package/src/modules/notification/presentation/bloc/notification_bloc.ts +12 -3
  196. package/src/modules/notification/presentation/bloc/notification_state.ts +11 -1
  197. package/src/modules/notification/presentation/pages/notification_page_liste.tsx +4 -1
  198. package/src/modules/profile/presentation/pages/parametre/profile_parametre_page.tsx +5 -2
  199. package/src/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.tsx +2 -2
  200. package/src/modules/profile/presentation/pages/parametre/profile_parametre_page_theme.tsx +95 -15
  201. package/src/modules/profile/presentation/pages/web/profile_web_page.tsx +3 -2
  202. package/src/modules/qrcode/presentation/pages/qrcode_alias_page.tsx +2 -2
  203. package/src/modules/qrcode/presentation/pages/qrcode_alias_page_share.tsx +2 -2
  204. package/src/modules/search/domain/models/fonctionnalite.ts +217 -0
  205. package/src/modules/search/presentation/pages/search_fonctionnalites.ts +135 -0
  206. package/src/modules/search/presentation/pages/search_page.tsx +314 -0
  207. package/src/modules/search/presentation/pages/search_page_voice_button.tsx +283 -0
  208. package/src/modules/subscription/presentation/pages/subscription_menu_widget.tsx +2 -2
  209. package/src/modules/transactions/domain/models/transaction_send/transaction_send_command.ts +6 -2
  210. package/src/modules/transactions/presentation/bloc/transaction_search/transaction_search_bloc.ts +15 -1
  211. package/src/modules/transactions/presentation/bloc/transaction_search/transaction_search_state.ts +10 -1
  212. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_motif.tsx +3 -0
  213. package/src/modules/transactions/presentation/pages/transaction_jour_libelle.ts +17 -0
  214. package/src/modules/transactions/presentation/pages/transaction_list_item_widget.tsx +3 -1
  215. package/src/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.tsx +7 -4
  216. package/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_filters.tsx +204 -101
  217. package/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_liste.tsx +6 -2
  218. package/src/modules/transactions/presentation/pages/transaction_send/transaction_send_page_options.tsx +3 -3
  219. package/src/shared/widgets/amount_widget.tsx +5 -2
  220. package/src/shared/widgets/input_amount.tsx +2 -2
  221. package/src/shared/widgets/input_text.tsx +8 -3
  222. package/src/shared/widgets/menu_actions_widget.tsx +8 -2
  223. package/src/shared/widgets/pagination_loader_widget.tsx +24 -0
@@ -1 +1 @@
1
- {"version":3,"file":"transaction_send_command.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/domain/models/transaction_send/transaction_send_command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction_send_command.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/domain/models/transaction_send/transaction_send_command.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"transaction_search_bloc.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/bloc/transaction_search/transaction_search_bloc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,6BAA0B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA4B,CAAC;AAMpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gDAA6C,CAAC;AACxF,OAAO,EAA8D,KAAK,sBAAsB,EAAE,MAAM,+BAA4B,CAAC;AACrI,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,+BAA4B,CAAC;AAEpC,2FAA2F;AAC3F,qBAAa,qBAAsB,SAAQ,IAAI,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAGjF,QAAQ,CAAC,qBAAqB,EAAE,oBAAoB;IAFhE,QAAQ,CAAC,MAAM,SAAgB;gBAEV,qBAAqB,EAAE,oBAAoB;IAgBhE,kDAAkD;IAClD,OAAO,CAAC,MAAM;IAcd,iDAAiD;YACnC,MAAM;IAwBpB,iBAAiB;YACH,UAAU;CAazB"}
1
+ {"version":3,"file":"transaction_search_bloc.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/bloc/transaction_search/transaction_search_bloc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,6BAA0B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA4B,CAAC;AAMpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gDAA6C,CAAC;AACxF,OAAO,EAA8D,KAAK,sBAAsB,EAAE,MAAM,+BAA4B,CAAC;AACrI,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,+BAA4B,CAAC;AAEpC,2FAA2F;AAC3F,qBAAa,qBAAsB,SAAQ,IAAI,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAGjF,QAAQ,CAAC,qBAAqB,EAAE,oBAAoB;IAFhE,QAAQ,CAAC,MAAM,SAAgB;gBAEV,qBAAqB,EAAE,oBAAoB;IAgBhE,kDAAkD;IAClD,OAAO,CAAC,MAAM;IAcd,iDAAiD;YACnC,MAAM;IA6BpB,iBAAiB;YACH,UAAU;CAsBzB"}
@@ -10,5 +10,10 @@ export declare class TransactionSearchInitialState extends TransactionSearchStat
10
10
  export declare class TransactionSearchLoadingState extends TransactionSearchState {
11
11
  }
12
12
  export declare class TransactionSearchListState extends TransactionSearchState {
13
+ /** true pendant le chargement de la page suivante : un petit loader est affiché en bas de la liste. */
14
+ readonly isPaginating: boolean;
15
+ constructor(transactions: TransactionListe, command: TransactionSearchCommand,
16
+ /** true pendant le chargement de la page suivante : un petit loader est affiché en bas de la liste. */
17
+ isPaginating?: boolean);
13
18
  }
14
19
  //# sourceMappingURL=transaction_search_state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction_search_state.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/bloc/transaction_search/transaction_search_state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6CAA0C,CAAC;AACjF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yEAAsE,CAAC;AAErH,8BAAsB,sBAAsB;IAExC,QAAQ,CAAC,YAAY,EAAE,gBAAgB;IACvC,QAAQ,CAAC,OAAO,EAAE,wBAAwB;gBADjC,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,wBAAwB;CAE7C;AAED,qBAAa,6BAA8B,SAAQ,sBAAsB;CAAG;AAE5E,qBAAa,6BAA8B,SAAQ,sBAAsB;CAAG;AAE5E,qBAAa,0BAA2B,SAAQ,sBAAsB;CAAG"}
1
+ {"version":3,"file":"transaction_search_state.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/bloc/transaction_search/transaction_search_state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6CAA0C,CAAC;AACjF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yEAAsE,CAAC;AAErH,8BAAsB,sBAAsB;IAExC,QAAQ,CAAC,YAAY,EAAE,gBAAgB;IACvC,QAAQ,CAAC,OAAO,EAAE,wBAAwB;gBADjC,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,wBAAwB;CAE7C;AAED,qBAAa,6BAA8B,SAAQ,sBAAsB;CAAG;AAE5E,qBAAa,6BAA8B,SAAQ,sBAAsB;CAAG;AAE5E,qBAAa,0BAA2B,SAAQ,sBAAsB;IAIlE,uGAAuG;IACvG,QAAQ,CAAC,YAAY;gBAHrB,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,wBAAwB;IACjC,uGAAuG;IAC9F,YAAY,UAAQ;CAIhC"}
@@ -1,8 +1,9 @@
1
1
  import type { TransactionSendCommand } from '../../../domain/models/transaction_send/transaction_send_command.js';
2
2
  import type { TransactionSendBloc } from '../../bloc/transaction_send/transaction_send_bloc.js';
3
3
  /** Champ note (motif) du formulaire. */
4
- export declare function TransactionFormInputMotif({ command, transactionFormBloc, }: {
4
+ export declare function TransactionFormInputMotif({ command, transactionFormBloc, readOnly, }: {
5
5
  command: TransactionSendCommand;
6
6
  transactionFormBloc: TransactionSendBloc;
7
+ readOnly?: boolean;
7
8
  }): import("react").JSX.Element;
8
9
  //# sourceMappingURL=transaction_form_input_motif.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction_form_input_motif.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_motif.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qEAAkE,CAAC;AAK/G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sDAAmD,CAAC;AAG7F,wCAAwC;AACxC,wBAAgB,yBAAyB,CAAC,EACxC,OAAO,EACP,mBAAmB,GACpB,EAAE;IACD,OAAO,EAAE,sBAAsB,CAAC;IAChC,mBAAmB,EAAE,mBAAmB,CAAC;CAC1C,+BAaA"}
1
+ {"version":3,"file":"transaction_form_input_motif.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_motif.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qEAAkE,CAAC;AAK/G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sDAAmD,CAAC;AAG7F,wCAAwC;AACxC,wBAAgB,yBAAyB,CAAC,EACxC,OAAO,EACP,mBAAmB,EACnB,QAAgB,GACjB,EAAE;IACD,OAAO,EAAE,sBAAsB,CAAC;IAChC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,+BAcA"}
@@ -0,0 +1,4 @@
1
+ import type { AppLocalizations } from '../../../../l10n/app_localizations.js';
2
+ /** « Aujourd'hui », « Hier » ou la date du jour [jour] (aaaa-mm-jj) */
3
+ export declare function transactionJourLibelle(traductions: AppLocalizations, jour: string): string;
4
+ //# sourceMappingURL=transaction_jour_libelle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction_jour_libelle.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/transactions/presentation/pages/transaction_jour_libelle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAoC,CAAC;AAG3E,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAY1F"}
@@ -4,8 +4,9 @@ import { type Transaction } from '../../domain/models/transaction.js';
4
4
  * rouge / crédit vert), nom, montant signé et date. Un tap ouvre le
5
5
  * détail, sauf si [noLink] ; avec [onSelect], une case à cocher précède la ligne.
6
6
  */
7
- export declare function TransactionListItemWidget({ transaction, detailsBackRoute, noLink, onSelect, isSelected, }: {
7
+ export declare function TransactionListItemWidget({ transaction, datePartern, detailsBackRoute, noLink, onSelect, isSelected, }: {
8
8
  transaction: Transaction;
9
+ datePartern?: string;
9
10
  detailsBackRoute?: string;
10
11
  noLink?: boolean;
11
12
  onSelect?: (value: boolean) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"transaction_list_item_widget.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/transactions/presentation/pages/transaction_list_item_widget.tsx"],"names":[],"mappings":"AASA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,oCAAiC,CAAC;AAEpF;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,WAAW,EACX,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,UAAU,GACX,EAAE;IACD,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,+BAoEA"}
1
+ {"version":3,"file":"transaction_list_item_widget.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/transactions/presentation/pages/transaction_list_item_widget.tsx"],"names":[],"mappings":"AASA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,oCAAiC,CAAC;AAEpF;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,WAAW,EACX,WAA4B,EAC5B,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,UAAU,GACX,EAAE;IACD,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,+BAoEA"}
@@ -1 +1 @@
1
- {"version":3,"file":"transaction_recents_widget.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.tsx"],"names":[],"mappings":"AAuBA,6DAA6D;AAC7D,wBAAgB,wBAAwB,uCAoDvC"}
1
+ {"version":3,"file":"transaction_recents_widget.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.tsx"],"names":[],"mappings":"AAwBA,6DAA6D;AAC7D,wBAAgB,wBAAwB,uCAsDvC"}
@@ -1,3 +1,7 @@
1
- /** Filtres de la recherche : plage de dates, sens (reçus / payés) et catégories. */
1
+ /**
2
+ * Filtres de la recherche : plage de dates, sens (reçus / envoyés) et
3
+ * catégories. Les choix sont faits sur un brouillon : ils ne sont reportés
4
+ * sur la commande qu'avec « Appliquer ». Fermer la page les abandonne.
5
+ */
2
6
  export declare function TransactionSearchPageFilters(): import("react").JSX.Element;
3
7
  //# sourceMappingURL=transaction_search_page_filters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction_search_page_filters.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_filters.tsx"],"names":[],"mappings":"AAmBA,oFAAoF;AACpF,wBAAgB,4BAA4B,gCAkD3C"}
1
+ {"version":3,"file":"transaction_search_page_filters.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_filters.tsx"],"names":[],"mappings":"AAqBA;;;;GAIG;AACH,wBAAgB,4BAA4B,gCA2F3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"transaction_search_page_liste.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_liste.tsx"],"names":[],"mappings":"AASA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,uCAAoC,CAAC;AAOvF,oEAAoE;AACpE,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC;AAMrG;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,OAAO,UAAO,GAAG,gBAAgB,EAAE,CAmBjG;AAED,wGAAwG;AACxG,wBAAgB,0BAA0B,CAAC,EACzC,MAAM,EACN,aAAa,GACd,EAAE;IACD,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;CAC/B,+BA8DA"}
1
+ {"version":3,"file":"transaction_search_page_liste.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_liste.tsx"],"names":[],"mappings":"AASA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,uCAAoC,CAAC;AAQvF,oEAAoE;AACpE,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC;AAMrG;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,OAAO,UAAO,GAAG,gBAAgB,EAAE,CAmBjG;AAED,wGAAwG;AACxG,wBAAgB,0BAA0B,CAAC,EACzC,MAAM,EACN,aAAa,GACd,EAAE;IACD,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;CAC/B,+BAiEA"}
@@ -6,12 +6,14 @@ export declare function formatMontant(montant: number | null | undefined, locale
6
6
  * langue de l'utilisateur, et en mode flouté si l'utilisateur a masqué
7
7
  * les montants (paramètre `DISPLAY_AMOUNT`).
8
8
  */
9
- export declare function AmountWidget({ montant, sign, prefixText, surfixText, style, numberOfLines, }: {
9
+ export declare function AmountWidget({ montant, sign, prefixText, surfixText, style, numberOfLines, adjustsFontSizeToFit, }: {
10
10
  montant: number | null | undefined;
11
11
  sign?: string;
12
12
  prefixText?: string;
13
13
  surfixText?: string;
14
14
  style?: TextStyle;
15
15
  numberOfLines?: number;
16
+ /** Réduit la police pour que le texte tienne dans la largeur disponible (avec [numberOfLines]). */
17
+ adjustsFontSizeToFit?: boolean;
16
18
  }): import("react").JSX.Element;
17
19
  //# sourceMappingURL=amount_widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"amount_widget.d.ts","sourceRoot":"","sources":["../../../../../src/shared/widgets/amount_widget.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAOtE,mHAAmH;AACnH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAExF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,IAAI,EACJ,UAAU,EACV,UAAU,EACV,KAAK,EACL,aAAa,GACd,EAAE;IACD,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,+BAgCA"}
1
+ {"version":3,"file":"amount_widget.d.ts","sourceRoot":"","sources":["../../../../../src/shared/widgets/amount_widget.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAOtE,mHAAmH;AACnH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAExF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,IAAI,EACJ,UAAU,EACV,UAAU,EACV,KAAK,EACL,aAAa,EACb,oBAAoB,GACrB,EAAE;IACD,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mGAAmG;IACnG,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,+BAgCA"}
@@ -1,5 +1,5 @@
1
- import { type ReactNode } from 'react';
2
- import { TextInput, type KeyboardTypeOptions, type ReturnKeyTypeOptions } from 'react-native';
1
+ import { type ForwardRefExoticComponent, type ReactNode, type RefAttributes } from 'react';
2
+ import { type KeyboardTypeOptions, type ReturnKeyTypeOptions, type TextInputInstance } from 'react-native';
3
3
  export type CustomTextInputProps = {
4
4
  labelText?: string;
5
5
  hintText?: string;
@@ -29,5 +29,5 @@ export type CustomTextInputProps = {
29
29
  * comme un `TextField` Material (le texte d'aide n'apparaît qu'au focus
30
30
  * quand il y a un label), et message d'erreur sous le champ.
31
31
  */
32
- export declare const CustomTextInput: import("react").ForwardRefExoticComponent<CustomTextInputProps & import("react").RefAttributes<TextInput>>;
32
+ export declare const CustomTextInput: ForwardRefExoticComponent<CustomTextInputProps & RefAttributes<TextInputInstance>>;
33
33
  //# sourceMappingURL=input_text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"input_text.d.ts","sourceRoot":"","sources":["../../../../../src/shared/widgets/input_text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,EAAoB,SAAS,EAAQ,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAKtH,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uCAAuC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oDAAoD;IACpD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C,CAAC;AAKF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,4GAsF1B,CAAC"}
1
+ {"version":3,"file":"input_text.d.ts","sourceRoot":"","sources":["../../../../../src/shared/widgets/input_text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,yBAAyB,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AACzH,OAAO,EAAqC,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAK9I,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uCAAuC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oDAAoD;IACpD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C,CAAC;AAKF;;;;;;GAMG;AAGH,eAAO,MAAM,eAAe,EAAE,yBAAyB,CAAC,oBAAoB,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAyF7G,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { ReactNode } from 'react';
1
2
  export declare class MenuActionItem {
2
3
  readonly icon: number;
3
4
  readonly title: string;
@@ -5,13 +6,16 @@ export declare class MenuActionItem {
5
6
  readonly action: () => void;
6
7
  readonly iconSize?: number;
7
8
  readonly color?: string;
9
+ /** Élément affiché à droite de la ligne (ex. une flèche). */
10
+ readonly trailing?: ReactNode;
8
11
  constructor(icon: number, title: string, subtitle: string | null | undefined, action: () => void, options?: {
9
12
  iconSize?: number;
10
13
  color?: string;
14
+ trailing?: ReactNode;
11
15
  });
12
16
  }
13
17
  /** Liste d'actions (icône, titre, sous-titre) dans une carte, comme des `ListTile` Material. */
14
- export declare function MenuActionsWiget({ items }: {
18
+ export declare function MenuActionsWidget({ items }: {
15
19
  items: MenuActionItem[];
16
20
  }): import("react").JSX.Element;
17
21
  //# sourceMappingURL=menu_actions_widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu_actions_widget.d.ts","sourceRoot":"","sources":["../../../../../src/shared/widgets/menu_actions_widget.tsx"],"names":[],"mappings":"AAMA,qBAAa,cAAc;IAKvB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI;IAP7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;gBAGb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,MAAM,EAAE,MAAM,IAAI,EAC3B,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;CAKtD;AAED,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,cAAc,EAAE,CAAA;CAAE,+BA4BtE"}
1
+ {"version":3,"file":"menu_actions_widget.d.ts","sourceRoot":"","sources":["../../../../../src/shared/widgets/menu_actions_widget.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,qBAAa,cAAc;IAOvB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI;IAT7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;gBAGnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,MAAM,EAAE,MAAM,IAAI,EAC3B,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAO;CAM5E;AAED,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,cAAc,EAAE,CAAA;CAAE,+BA6BvE"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Petit loader affiché en bas d'une liste pendant le chargement de la page
3
+ * suivante (pagination). Sur iOS, le loader natif garde sa couleur
4
+ * système ; sur le web et Android, il prend la couleur primaire.
5
+ */
6
+ export declare function PaginationLoaderWidget(): import("react").JSX.Element;
7
+ //# sourceMappingURL=pagination_loader_widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination_loader_widget.d.ts","sourceRoot":"","sources":["../../../../../src/shared/widgets/pagination_loader_widget.tsx"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,sBAAsB,gCAUrC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-spi/app",
3
- "version": "1.3.1",
3
+ "version": "1.5.0",
4
4
  "description": "SDK React Native permettant d'intégrer PI-SPI (transactions, demande d'annulation, retour de fond, demande de paiement, QR Code, gestion des alias, gestion des abonnements, notifications, profil, compte) dans une application mobile existante.",
5
5
  "homepage": "https://github.com/pisfn-sandbox/mobile-app-react-native-sdk.git",
6
6
  "repository": {
@@ -37,8 +37,8 @@
37
37
  "prepare": "npm run gen-l10n && bob build"
38
38
  },
39
39
  "dependencies": {
40
+ "@noble/ciphers": "^2.4.0",
40
41
  "axios": "^1.20.0",
41
- "crypto-js": "^4.2.0",
42
42
  "qrcode": "^1.5.4",
43
43
  "rn-emoji-keyboard": "^1.7.0"
44
44
  },
@@ -47,7 +47,7 @@
47
47
  "@react-native-async-storage/async-storage": ">=2.0.0",
48
48
  "@react-navigation/native": ">=7.0.0",
49
49
  "@react-navigation/native-stack": ">=7.0.0",
50
- "expo": ">=57.0.0",
50
+ "expo": ">=58.0.0",
51
51
  "expo-asset": "*",
52
52
  "expo-audio": "*",
53
53
  "expo-camera": "*",
@@ -63,6 +63,7 @@
63
63
  "expo-print": "*",
64
64
  "expo-secure-store": "*",
65
65
  "expo-sharing": "*",
66
+ "expo-speech-recognition": "*",
66
67
  "expo-video": "*",
67
68
  "react": ">=19.0.0",
68
69
  "react-native": ">=0.80.0",
@@ -75,38 +76,38 @@
75
76
  "devDependencies": {
76
77
  "@expo/vector-icons": "^15.0.2",
77
78
  "@react-native-async-storage/async-storage": "2.2.0",
78
- "@react-navigation/native": "^7.5.0",
79
- "@react-navigation/native-stack": "^7.20.0",
80
- "@types/crypto-js": "^4.2.2",
81
- "@types/jest": "^29.5.14",
79
+ "@react-navigation/native": "^7.5.1",
80
+ "@react-navigation/native-stack": "^7.21.0",
81
+ "@types/jest": "^30.0.0",
82
82
  "@types/node": "^22.20.5",
83
83
  "@types/qrcode": "^1.5.6",
84
- "@types/react": "~19.2.2",
85
- "expo": "~57.0.27",
86
- "expo-audio": "~57.0.5",
87
- "expo-camera": "~57.0.6",
88
- "expo-clipboard": "~57.0.2",
89
- "expo-contacts": "~57.0.6",
90
- "expo-crypto": "~57.0.3",
91
- "expo-file-system": "~57.0.7",
92
- "expo-image": "~57.0.5",
93
- "expo-image-picker": "~57.0.20",
94
- "expo-location": "~57.0.20",
95
- "expo-network": "~57.0.2",
96
- "expo-print": "~57.0.2",
97
- "expo-secure-store": "~57.0.4",
98
- "expo-sharing": "~57.0.22",
99
- "expo-video": "~57.0.5",
100
- "jest": "^29.7.0",
101
- "react": "19.2.3",
102
- "react-native": "0.86.3",
103
- "react-native-builder-bob": "^0.43.1",
104
- "react-native-safe-area-context": "~5.7.0",
105
- "react-native-screens": "~4.26.0",
106
- "react-native-svg": "15.15.4",
107
- "react-native-view-shot": "^5.1.0",
108
- "react-native-webview": "^13.16.1",
109
- "ts-jest": "^29.2.5",
84
+ "@types/react": "~19.3.0",
85
+ "expo": "~58.0.19",
86
+ "expo-audio": "~58.0.10",
87
+ "expo-camera": "~58.0.12",
88
+ "expo-clipboard": "~58.0.4",
89
+ "expo-contacts": "~58.0.9",
90
+ "expo-crypto": "~58.0.7",
91
+ "expo-file-system": "~58.0.11",
92
+ "expo-image": "~58.0.17",
93
+ "expo-image-picker": "~58.0.10",
94
+ "expo-location": "~58.0.19",
95
+ "expo-network": "~58.0.4",
96
+ "expo-print": "~58.0.7",
97
+ "expo-secure-store": "~58.0.2",
98
+ "expo-sharing": "~58.0.20",
99
+ "expo-speech-recognition": "~58.0.0",
100
+ "expo-video": "~58.0.12",
101
+ "jest": "~30.5.2",
102
+ "react": "19.3.0",
103
+ "react-native": "0.88.0",
104
+ "react-native-builder-bob": "^0.44.1",
105
+ "react-native-safe-area-context": "~5.10.1",
106
+ "react-native-screens": "~4.30.0",
107
+ "react-native-svg": "15.16.0",
108
+ "react-native-view-shot": "6.1.1",
109
+ "react-native-webview": "14.0.1",
110
+ "ts-jest": "^29.4.15",
110
111
  "typescript": "~6.0.3"
111
112
  },
112
113
  "react-native-builder-bob": {
@@ -148,7 +149,7 @@
148
149
  "^(expo-contacts|expo-location)$": "<rootDir>/test/stubs/permissions.ts",
149
150
  "\\.(mp4|mp3|png|jpe?g|gif)$": "<rootDir>/test/stubs/empty.ts",
150
151
  "^rn-emoji-keyboard$": "<rootDir>/test/stubs/empty.ts",
151
- "^(@expo/vector-icons|react-native-safe-area-context|expo-audio|expo-image|expo-video|expo-image-picker|expo-file-system|expo-print|expo-sharing|react-native-webview|expo-camera|react-native-view-shot)$": "<rootDir>/test/stubs/empty.ts"
152
+ "^(@expo/vector-icons|react-native-safe-area-context|expo-audio|expo-image|expo-video|expo-image-picker|expo-file-system|expo-print|expo-sharing|react-native-webview|expo-camera|react-native-view-shot|expo-speech-recognition)$": "<rootDir>/test/stubs/empty.ts"
152
153
  },
153
154
  "transform": {
154
155
  "^.+\\.tsx?$": [
@@ -160,7 +161,20 @@
160
161
  "isolatedModules": true
161
162
  }
162
163
  }
164
+ ],
165
+ "^.+\\.jsx?$": [
166
+ "ts-jest",
167
+ {
168
+ "tsconfig": {
169
+ "allowJs": true,
170
+ "esModuleInterop": true,
171
+ "isolatedModules": true
172
+ }
173
+ }
163
174
  ]
164
- }
175
+ },
176
+ "transformIgnorePatterns": [
177
+ "/node_modules/(?!@noble/)"
178
+ ]
165
179
  }
166
180
  }
@@ -77,6 +77,7 @@ export class Images {
77
77
  static readonly arrowDown: number = require('../../assets/icons/arrow_down.png');
78
78
  static readonly homeFooterHome: number = require('../../assets/icons/home_outline.png'); // .svg en Flutter : Metro ne charge pas de SVG sans transformer, la version .png est utilisée.
79
79
  static readonly homeFooterQrcode: number = require('../../assets/icons/qrcode.png');
80
+ static readonly homeFooterQr: number = require('../../assets/icons/qr.png');
80
81
  static readonly homeFooterTransfer: number = require('../../assets/icons/transfer.png');
81
82
  static readonly iconEdit: number = require('../../assets/icons/edit.png');
82
83
  static readonly iconAdd: number = require('../../assets/icons/add.png');
package/src/core/di.ts CHANGED
@@ -34,6 +34,7 @@ import { AppEnv } from './env';
34
34
  import { AppLogger } from './logger';
35
35
  import type { PiSpiSdkConfig } from './pi_spi_sdk_config';
36
36
  import { AppStorage, SecureStorage, SharedPreferences } from './storage';
37
+ import { Themer } from './theme';
37
38
  import { ValueNotifier } from './value_notifier';
38
39
 
39
40
  /**
@@ -138,7 +139,13 @@ export class Di {
138
139
  * aucune n'existe encore) est conservée telle quelle.
139
140
  */
140
141
  private static async applyDefaultTheme(config: PiSpiSdkConfig): Promise<void> {
141
- if (config.appConfig.defaultTheme != null) {
142
+ // Un thème personnalisé (PiSpiAppConfig.customTheme) prime sur
143
+ // defaultTheme : il est construit ici et persisté sous son code.
144
+ const customTheme = config.appConfig.customTheme;
145
+ Themer.customTheme = customTheme?.build() ?? null;
146
+ if (customTheme != null) {
147
+ await Di.sharedPreferences.setString(ConfigKey.preferedTheme, Themer.customThemeCode);
148
+ } else if (config.appConfig.defaultTheme != null) {
142
149
  await Di.sharedPreferences.setString(ConfigKey.preferedTheme, config.appConfig.defaultTheme);
143
150
  }
144
151
  }
@@ -0,0 +1,66 @@
1
+ import { Themer, lerpColor, type ThemeData } from './theme';
2
+
3
+ /**
4
+ * Thème personnalisé de l'application hôte, quand aucun des thèmes du SDK
5
+ * (`Themes`) ne convient. À passer dans `PiSpiAppConfig.customTheme`.
6
+ *
7
+ * Deux façons de le définir :
8
+ *
9
+ * - **Par ses couleurs** (cas courant) : le SDK construit un thème complet
10
+ * sur le même modèle que ses thèmes clairs colorés (rouge, violet,
11
+ * rose...). Seule `primary` est obligatoire ; les autres couleurs en sont
12
+ * dérivées si elles ne sont pas fournies.
13
+ *
14
+ * ```ts
15
+ * new PiSpiCustomTheme({ primary: '#00695C', secondary: '#B2DFDB' })
16
+ * ```
17
+ *
18
+ * - **Par un `ThemeData` complet** (avancé), avec
19
+ * `PiSpiCustomTheme.themeData`. Partez de préférence du thème construit
20
+ * par le SDK, pour conserver tous les réglages dont ses écrans ont
21
+ * besoin (cartes, champs, boutons, textes) :
22
+ *
23
+ * ```ts
24
+ * const base = new PiSpiCustomTheme({ primary: '#00695C' }).build();
25
+ * PiSpiCustomTheme.themeData({ ...base, cardColor: '#F1F8F7' })
26
+ * ```
27
+ */
28
+ export class PiSpiCustomTheme {
29
+ /** Couleur principale (`#RRGGBB`) : boutons, liens, icônes, champ actif. */
30
+ readonly primary?: string;
31
+ /** Couleur claire : avatars, puces de filtre, fonds secondaires. Par défaut, `primary` éclaircie à 75 %. */
32
+ readonly secondary?: string;
33
+ /** Couleur intermédiaire (tertiaire du schéma de couleurs). Par défaut, `primary` éclaircie à 40 %. */
34
+ readonly tertiary?: string;
35
+ /** Couleur d'un bouton appuyé. Par défaut, `primary` assombrie à 20 %. */
36
+ readonly pressed?: string;
37
+
38
+ private themeDataValue?: ThemeData;
39
+
40
+ /** Thème construit à partir de ses couleurs. */
41
+ constructor(params: { primary: string; secondary?: string; tertiary?: string; pressed?: string }) {
42
+ this.primary = params.primary;
43
+ this.secondary = params.secondary;
44
+ this.tertiary = params.tertiary;
45
+ this.pressed = params.pressed;
46
+ }
47
+
48
+ /** Thème fourni entièrement par l'hôte (usage avancé, voir la documentation de la classe). */
49
+ static themeData(theme: ThemeData): PiSpiCustomTheme {
50
+ const custom = new PiSpiCustomTheme({ primary: theme.primaryColor });
51
+ custom.themeDataValue = theme;
52
+ return custom;
53
+ }
54
+
55
+ /** Le `ThemeData` appliqué aux écrans du SDK. */
56
+ build(): ThemeData {
57
+ if (this.themeDataValue != null) return this.themeDataValue;
58
+ const main = this.primary!;
59
+ return Themer.colored(
60
+ main,
61
+ this.secondary ?? lerpColor(main, '#FFFFFF', 0.75),
62
+ this.tertiary ?? lerpColor(main, '#FFFFFF', 0.4),
63
+ this.pressed ?? lerpColor(main, '#000000', 0.2),
64
+ );
65
+ }
66
+ }
@@ -1,4 +1,5 @@
1
1
  import { supportedLocales, type SupportedLocaleCode } from '../l10n/app_localizations';
2
+ import type { PiSpiCustomTheme } from './pi_spi_custom_theme';
2
3
  import { Themes } from './theme';
3
4
 
4
5
  /**
@@ -214,6 +215,18 @@ export class PiSpiAppConfig {
214
215
  */
215
216
  readonly defaultTheme?: Themes;
216
217
 
218
+ /**
219
+ * Thème personnalisé de l'application hôte, quand aucun des thèmes du
220
+ * SDK (`Themes`) ne convient : défini par ses couleurs ou par un
221
+ * `ThemeData` complet (voir {@link PiSpiCustomTheme}). Optionnel : si
222
+ * fourni, il est appliqué et **persisté** à chaque ouverture du SDK, et
223
+ * il prime sur {@link defaultTheme}. L'entrée « Thème » des paramètres
224
+ * est alors masquée, sauf si {@link canChangeTheme} vaut `true` : le
225
+ * client peut alors choisir entre « Thème de l'application » (ce thème)
226
+ * et les thèmes du SDK.
227
+ */
228
+ readonly customTheme?: PiSpiCustomTheme;
229
+
217
230
  /**
218
231
  * Autorise le client à changer lui-même de thème depuis les écrans de
219
232
  * paramètres du SDK ; sinon (`false`), l'entrée « Thème » y est
@@ -221,8 +234,8 @@ export class PiSpiAppConfig {
221
234
  * la préférence déjà persistée, voir sa documentation) pour toute la
222
235
  * session — comme pour {@link defaultLocale}.
223
236
  *
224
- * Non fourni, sa valeur par défaut dépend de {@link defaultTheme} :
225
- * `false` si l'hôte a fourni un `defaultTheme` (il impose alors ce
237
+ * Non fourni, sa valeur par défaut dépend de {@link defaultTheme} et de
238
+ * {@link customTheme} : `false` si l'hôte a fourni l'un des deux (il impose alors ce
226
239
  * thème, cohérent avec le comportement de `defaultLocale`), `true` sinon
227
240
  * (l'hôte n'a exprimé aucun avis sur le thème, donc autant laisser le
228
241
  * client choisir). Passez explicitement `true`/`false` pour imposer un
@@ -241,6 +254,7 @@ export class PiSpiAppConfig {
241
254
  appstoreLink?: string;
242
255
  defaultLocale?: SupportedLocaleCode;
243
256
  defaultTheme?: Themes;
257
+ customTheme?: PiSpiCustomTheme;
244
258
  canChangeTheme?: boolean;
245
259
  }) {
246
260
  this.pspCodeMembre = params.pspCodeMembre;
@@ -253,7 +267,8 @@ export class PiSpiAppConfig {
253
267
  this.appstoreLink = params.appstoreLink ?? '';
254
268
  this.defaultLocale = params.defaultLocale ?? 'fr';
255
269
  this.defaultTheme = params.defaultTheme;
256
- this.canChangeTheme = params.canChangeTheme ?? params.defaultTheme === undefined;
270
+ this.customTheme = params.customTheme;
271
+ this.canChangeTheme = params.canChangeTheme ?? (params.defaultTheme === undefined && params.customTheme === undefined);
257
272
 
258
273
  devAssert(
259
274
  (PiSpiAppConfig.supportedLocaleCodes as readonly string[]).includes(this.defaultLocale),
@@ -369,6 +369,9 @@ export class AppRouter {
369
369
  // Home
370
370
  static readonly home = '/home';
371
371
 
372
+ // Recherche
373
+ static readonly search = '/search';
374
+
372
375
  // Première utilisation : introduction puis demande de permission contacts
373
376
  static readonly introduction = '/introduction';
374
377
  static readonly permissions = '/permissions';
@@ -51,6 +51,8 @@ import { HomePage } from '../modules/home/presentation/pages/home_page';
51
51
  import { SelectAccountPage } from '../modules/home/presentation/pages/select_account_page';
52
52
  import { IntroductionPage } from '../modules/introduction/presentation/pages/introduction';
53
53
  import { PermissionsPage } from '../modules/permission/presentation/pages/permissions_page';
54
+ import type { Fonctionnalite } from '../modules/search/domain/models/fonctionnalite';
55
+ import { SearchPage } from '../modules/search/presentation/pages/search_page';
54
56
  import { AliasBloc } from '../modules/alias/presentation/bloc/alias_bloc';
55
57
  import { BlocProvider, useBloc } from './bloc_react';
56
58
  import { CompteAliasStatus } from './compte_alias_status';
@@ -76,6 +78,8 @@ export function appRoutes(): RouteDef[] {
76
78
  ...aliasRoutes(),
77
79
  // Page d'accueil
78
80
  ...homeRoute(),
81
+ // Recherche des fonctionnalités
82
+ ...searchRoute(),
79
83
  // Abonnements (l'onglet de l'accueil ; les autres routes avec leur module)
80
84
  ...subscriptionListRoute(),
81
85
  // Catégories
@@ -93,6 +97,17 @@ export function appRoutes(): RouteDef[] {
93
97
  ];
94
98
  }
95
99
 
100
+ /** RECHERCHE (catalogue construit par la page appelante, voir `fonctionnalitesRecherchables`) */
101
+ function searchRoute(): RouteDef[] {
102
+ return [
103
+ {
104
+ path: AppRouter.search,
105
+ kind: 'page',
106
+ builder: (state) => <SearchPage fonctionnalites={(state.extra as Fonctionnalite[] | undefined) ?? []} />,
107
+ },
108
+ ];
109
+ }
110
+
96
111
  /** NOTIFICATIONS (bloc fourni par la cloche de l'accueil) */
97
112
  function notificationsRoute(): RouteDef[] {
98
113
  return [