@pi-spi/app 2.1.0 → 2.2.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 (314) hide show
  1. package/lib/module/l10n/app_localizations.js.map +1 -1
  2. package/lib/module/l10n/app_localizations_en.js +32 -8
  3. package/lib/module/l10n/app_localizations_en.js.map +1 -1
  4. package/lib/module/l10n/app_localizations_fr.js +41 -14
  5. package/lib/module/l10n/app_localizations_fr.js.map +1 -1
  6. package/lib/module/l10n/app_localizations_pt.js +33 -7
  7. package/lib/module/l10n/app_localizations_pt.js.map +1 -1
  8. package/lib/module/modules/alias/domain/models/alias_revendication.js +4 -2
  9. package/lib/module/modules/alias/domain/models/alias_revendication.js.map +1 -1
  10. package/lib/module/modules/alias/infra/alias_output_local.js +11 -0
  11. package/lib/module/modules/alias/infra/alias_output_local.js.map +1 -1
  12. package/lib/module/modules/alias/infra/alias_output_repository.js +9 -8
  13. package/lib/module/modules/alias/infra/alias_output_repository.js.map +1 -1
  14. package/lib/module/modules/alias/presentation/pages/alias_delete_btn_widget.js +14 -18
  15. package/lib/module/modules/alias/presentation/pages/alias_delete_btn_widget.js.map +1 -1
  16. package/lib/module/modules/alias/presentation/pages/alias_page_claim.js +113 -60
  17. package/lib/module/modules/alias/presentation/pages/alias_page_claim.js.map +1 -1
  18. package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_form.js +151 -76
  19. package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_form.js.map +1 -1
  20. package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_timer.js +38 -24
  21. package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_timer.js.map +1 -1
  22. package/lib/module/modules/alias/presentation/pages/alias_page_create_options.js +28 -26
  23. package/lib/module/modules/alias/presentation/pages/alias_page_create_options.js.map +1 -1
  24. package/lib/module/modules/alias/presentation/pages/alias_page_otp.js +27 -110
  25. package/lib/module/modules/alias/presentation/pages/alias_page_otp.js.map +1 -1
  26. package/lib/module/modules/categorie/domain/services/categorie_service.js +2 -1
  27. package/lib/module/modules/categorie/domain/services/categorie_service.js.map +1 -1
  28. package/lib/module/modules/categorie/presentation/pages/categorie_edit_icon_btn.js +38 -42
  29. package/lib/module/modules/categorie/presentation/pages/categorie_edit_icon_btn.js.map +1 -1
  30. package/lib/module/modules/categorie/presentation/pages/categorie_form_pages.js +88 -80
  31. package/lib/module/modules/categorie/presentation/pages/categorie_form_pages.js.map +1 -1
  32. package/lib/module/modules/categorie/presentation/pages/categorie_icon.js +39 -0
  33. package/lib/module/modules/categorie/presentation/pages/categorie_icon.js.map +1 -1
  34. package/lib/module/modules/categorie/presentation/pages/categorie_liste_widget.js +55 -27
  35. package/lib/module/modules/categorie/presentation/pages/categorie_liste_widget.js.map +1 -1
  36. package/lib/module/modules/categorie/presentation/pages/categorie_select_page.js +21 -81
  37. package/lib/module/modules/categorie/presentation/pages/categorie_select_page.js.map +1 -1
  38. package/lib/module/modules/categorie/presentation/pages/categorie_select_widget.js +53 -16
  39. package/lib/module/modules/categorie/presentation/pages/categorie_select_widget.js.map +1 -1
  40. package/lib/module/modules/config/domain/models/config_keys.js +2 -0
  41. package/lib/module/modules/config/domain/models/config_keys.js.map +1 -1
  42. package/lib/module/modules/contacts/domain/contact_pi.js +3 -5
  43. package/lib/module/modules/contacts/domain/contact_pi.js.map +1 -1
  44. package/lib/module/modules/contacts/presentation/bloc/contact_bloc.js +30 -14
  45. package/lib/module/modules/contacts/presentation/bloc/contact_bloc.js.map +1 -1
  46. package/lib/module/modules/contacts/presentation/pages/contact_actions_sheet.js +106 -0
  47. package/lib/module/modules/contacts/presentation/pages/contact_actions_sheet.js.map +1 -0
  48. package/lib/module/modules/contacts/presentation/pages/contact_list_alias_widget.js +17 -7
  49. package/lib/module/modules/contacts/presentation/pages/contact_list_alias_widget.js.map +1 -1
  50. package/lib/module/modules/contacts/presentation/pages/contact_list_phone_widget.js +5 -4
  51. package/lib/module/modules/contacts/presentation/pages/contact_list_phone_widget.js.map +1 -1
  52. package/lib/module/modules/contacts/presentation/pages/contact_list_widget_item.js +76 -67
  53. package/lib/module/modules/contacts/presentation/pages/contact_list_widget_item.js.map +1 -1
  54. package/lib/module/modules/contacts/presentation/pages/contact_section.js +14 -4
  55. package/lib/module/modules/contacts/presentation/pages/contact_section.js.map +1 -1
  56. package/lib/module/modules/contacts/presentation/pages/contact_select_page.js +131 -110
  57. package/lib/module/modules/contacts/presentation/pages/contact_select_page.js.map +1 -1
  58. package/lib/module/modules/contacts/presentation/pages/create/contact_create_page.js +118 -59
  59. package/lib/module/modules/contacts/presentation/pages/create/contact_create_page.js.map +1 -1
  60. package/lib/module/modules/home/presentation/pages/home_page.js +3 -13
  61. package/lib/module/modules/home/presentation/pages/home_page.js.map +1 -1
  62. package/lib/module/modules/introduction/presentation/pages/introduction.js +17 -4
  63. package/lib/module/modules/introduction/presentation/pages/introduction.js.map +1 -1
  64. package/lib/module/modules/introduction/presentation/pages/introduction_footer.js +15 -53
  65. package/lib/module/modules/introduction/presentation/pages/introduction_footer.js.map +1 -1
  66. package/lib/module/modules/introduction/presentation/pages/introduction_page.js +22 -4
  67. package/lib/module/modules/introduction/presentation/pages/introduction_page.js.map +1 -1
  68. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.js +2 -2
  69. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.js.map +1 -1
  70. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications_son.js +1 -1
  71. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications_son.js.map +1 -1
  72. package/lib/module/modules/profile/presentation/pages/profile_page_avatar.js +2 -2
  73. package/lib/module/modules/profile/presentation/pages/profile_page_avatar.js.map +1 -1
  74. package/lib/module/modules/profile/presentation/pages/profile_page_contacts.js +14 -52
  75. package/lib/module/modules/profile/presentation/pages/profile_page_contacts.js.map +1 -1
  76. package/lib/module/modules/profile/presentation/pages/profile_page_contacts_actions.js +11 -1
  77. package/lib/module/modules/profile/presentation/pages/profile_page_contacts_actions.js.map +1 -1
  78. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page_share.js +3 -3
  79. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page_share.js.map +1 -1
  80. package/lib/module/modules/search/domain/models/fonctionnalite.js +51 -0
  81. package/lib/module/modules/search/domain/models/fonctionnalite.js.map +1 -1
  82. package/lib/module/modules/search/presentation/pages/search_btn_widget.js +136 -0
  83. package/lib/module/modules/search/presentation/pages/search_btn_widget.js.map +1 -0
  84. package/lib/module/modules/search/presentation/pages/search_fonctionnalites.js +21 -1
  85. package/lib/module/modules/search/presentation/pages/search_fonctionnalites.js.map +1 -1
  86. package/lib/module/modules/search/presentation/pages/search_page.js +266 -97
  87. package/lib/module/modules/search/presentation/pages/search_page.js.map +1 -1
  88. package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page.js +5 -3
  89. package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page.js.map +1 -1
  90. package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page_list.js +5 -6
  91. package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page_list.js.map +1 -1
  92. package/lib/module/modules/subscription/presentation/pages/subscription_menu_widget.js +3 -3
  93. package/lib/module/modules/subscription/presentation/pages/subscription_menu_widget.js.map +1 -1
  94. package/lib/module/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.js +1 -2
  95. package/lib/module/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.js.map +1 -1
  96. package/lib/module/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.js +17 -0
  97. package/lib/module/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.js.map +1 -1
  98. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.js +30 -23
  99. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.js.map +1 -1
  100. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.js +6 -6
  101. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.js.map +1 -1
  102. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.js +6 -6
  103. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.js.map +1 -1
  104. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page.js +16 -4
  105. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page.js.map +1 -1
  106. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.js +11 -9
  107. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.js.map +1 -1
  108. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.js +9 -7
  109. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.js.map +1 -1
  110. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.js +8 -10
  111. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.js.map +1 -1
  112. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.js +127 -105
  113. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.js.map +1 -1
  114. package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page.js +9 -15
  115. package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page.js.map +1 -1
  116. package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.js +5 -11
  117. package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.js.map +1 -1
  118. package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.js +9 -9
  119. package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.js.map +1 -1
  120. package/lib/module/shared/widgets/alias_widget.js +33 -12
  121. package/lib/module/shared/widgets/alias_widget.js.map +1 -1
  122. package/lib/module/shared/widgets/auth_code_field.js +89 -0
  123. package/lib/module/shared/widgets/auth_code_field.js.map +1 -0
  124. package/lib/module/shared/widgets/calendar_date_picker.js +21 -16
  125. package/lib/module/shared/widgets/calendar_date_picker.js.map +1 -1
  126. package/lib/module/shared/widgets/confirm_action_sheet_widget.js +20 -1
  127. package/lib/module/shared/widgets/confirm_action_sheet_widget.js.map +1 -1
  128. package/lib/module/shared/widgets/emoji_select_widget.js +34 -39
  129. package/lib/module/shared/widgets/emoji_select_widget.js.map +1 -1
  130. package/lib/module/shared/widgets/frequence_input_widget.js +18 -29
  131. package/lib/module/shared/widgets/frequence_input_widget.js.map +1 -1
  132. package/lib/module/shared/widgets/frequence_select_widget.js +233 -140
  133. package/lib/module/shared/widgets/frequence_select_widget.js.map +1 -1
  134. package/lib/module/shared/widgets/image_select_widget.js +4 -4
  135. package/lib/module/shared/widgets/image_select_widget.js.map +1 -1
  136. package/lib/module/shared/widgets/input_text.js +1 -1
  137. package/lib/module/shared/widgets/input_text.js.map +1 -1
  138. package/lib/module/shared/widgets/notification_dialog.js +3 -2
  139. package/lib/module/shared/widgets/notification_dialog.js.map +1 -1
  140. package/lib/module/shared/widgets/pin_entete.js +114 -0
  141. package/lib/module/shared/widgets/pin_entete.js.map +1 -0
  142. package/lib/module/shared/widgets/select_date_widget.js +74 -59
  143. package/lib/module/shared/widgets/select_date_widget.js.map +1 -1
  144. package/lib/module/shared/widgets/selection.js +21 -16
  145. package/lib/module/shared/widgets/selection.js.map +1 -1
  146. package/lib/typescript/src/l10n/app_localizations.d.ts +59 -11
  147. package/lib/typescript/src/l10n/app_localizations.d.ts.map +1 -1
  148. package/lib/typescript/src/l10n/app_localizations_en.d.ts.map +1 -1
  149. package/lib/typescript/src/l10n/app_localizations_fr.d.ts.map +1 -1
  150. package/lib/typescript/src/l10n/app_localizations_pt.d.ts.map +1 -1
  151. package/lib/typescript/src/modules/alias/domain/models/alias_revendication.d.ts.map +1 -1
  152. package/lib/typescript/src/modules/alias/infra/alias_output_local.d.ts +5 -0
  153. package/lib/typescript/src/modules/alias/infra/alias_output_local.d.ts.map +1 -1
  154. package/lib/typescript/src/modules/alias/infra/alias_output_repository.d.ts.map +1 -1
  155. package/lib/typescript/src/modules/alias/presentation/pages/alias_delete_btn_widget.d.ts.map +1 -1
  156. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_claim.d.ts.map +1 -1
  157. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_mbno_form.d.ts.map +1 -1
  158. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_mbno_timer.d.ts +1 -1
  159. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_mbno_timer.d.ts.map +1 -1
  160. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_options.d.ts +4 -1
  161. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_options.d.ts.map +1 -1
  162. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_otp.d.ts +9 -5
  163. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_otp.d.ts.map +1 -1
  164. package/lib/typescript/src/modules/categorie/domain/services/categorie_service.d.ts.map +1 -1
  165. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_edit_icon_btn.d.ts +3 -0
  166. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_edit_icon_btn.d.ts.map +1 -1
  167. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_form_pages.d.ts.map +1 -1
  168. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_icon.d.ts +9 -0
  169. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_icon.d.ts.map +1 -1
  170. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_liste_widget.d.ts +7 -2
  171. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_liste_widget.d.ts.map +1 -1
  172. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_select_page.d.ts.map +1 -1
  173. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_select_widget.d.ts +10 -2
  174. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_select_widget.d.ts.map +1 -1
  175. package/lib/typescript/src/modules/config/domain/models/config_keys.d.ts +3 -1
  176. package/lib/typescript/src/modules/config/domain/models/config_keys.d.ts.map +1 -1
  177. package/lib/typescript/src/modules/contacts/domain/contact_pi.d.ts +0 -2
  178. package/lib/typescript/src/modules/contacts/domain/contact_pi.d.ts.map +1 -1
  179. package/lib/typescript/src/modules/contacts/presentation/bloc/contact_bloc.d.ts +7 -0
  180. package/lib/typescript/src/modules/contacts/presentation/bloc/contact_bloc.d.ts.map +1 -1
  181. package/lib/typescript/src/modules/contacts/presentation/pages/contact_actions_sheet.d.ts +14 -0
  182. package/lib/typescript/src/modules/contacts/presentation/pages/contact_actions_sheet.d.ts.map +1 -0
  183. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_alias_widget.d.ts +4 -2
  184. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_alias_widget.d.ts.map +1 -1
  185. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_phone_widget.d.ts.map +1 -1
  186. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_widget_item.d.ts +6 -4
  187. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_widget_item.d.ts.map +1 -1
  188. package/lib/typescript/src/modules/contacts/presentation/pages/contact_section.d.ts +3 -1
  189. package/lib/typescript/src/modules/contacts/presentation/pages/contact_section.d.ts.map +1 -1
  190. package/lib/typescript/src/modules/contacts/presentation/pages/contact_select_page.d.ts.map +1 -1
  191. package/lib/typescript/src/modules/contacts/presentation/pages/create/contact_create_page.d.ts.map +1 -1
  192. package/lib/typescript/src/modules/home/presentation/pages/home_page.d.ts.map +1 -1
  193. package/lib/typescript/src/modules/introduction/presentation/pages/introduction.d.ts.map +1 -1
  194. package/lib/typescript/src/modules/introduction/presentation/pages/introduction_footer.d.ts +5 -1
  195. package/lib/typescript/src/modules/introduction/presentation/pages/introduction_footer.d.ts.map +1 -1
  196. package/lib/typescript/src/modules/introduction/presentation/pages/introduction_page.d.ts.map +1 -1
  197. package/lib/typescript/src/modules/profile/presentation/pages/profile_page_contacts.d.ts.map +1 -1
  198. package/lib/typescript/src/modules/profile/presentation/pages/profile_page_contacts_actions.d.ts.map +1 -1
  199. package/lib/typescript/src/modules/search/domain/models/fonctionnalite.d.ts +20 -0
  200. package/lib/typescript/src/modules/search/domain/models/fonctionnalite.d.ts.map +1 -1
  201. package/lib/typescript/src/modules/search/presentation/pages/search_btn_widget.d.ts +11 -0
  202. package/lib/typescript/src/modules/search/presentation/pages/search_btn_widget.d.ts.map +1 -0
  203. package/lib/typescript/src/modules/search/presentation/pages/search_fonctionnalites.d.ts.map +1 -1
  204. package/lib/typescript/src/modules/search/presentation/pages/search_page.d.ts.map +1 -1
  205. package/lib/typescript/src/modules/subscription/presentation/pages/subscription_create/subscription_create_page.d.ts.map +1 -1
  206. package/lib/typescript/src/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.d.ts.map +1 -1
  207. package/lib/typescript/src/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.d.ts.map +1 -1
  208. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.d.ts +4 -1
  209. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.d.ts.map +1 -1
  210. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.d.ts +4 -0
  211. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.d.ts.map +1 -1
  212. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.d.ts.map +1 -1
  213. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.d.ts.map +1 -1
  214. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.d.ts.map +1 -1
  215. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page.d.ts.map +1 -1
  216. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.d.ts.map +1 -1
  217. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.d.ts.map +1 -1
  218. package/lib/typescript/src/shared/widgets/alias_widget.d.ts +2 -2
  219. package/lib/typescript/src/shared/widgets/alias_widget.d.ts.map +1 -1
  220. package/lib/typescript/src/shared/widgets/auth_code_field.d.ts +17 -0
  221. package/lib/typescript/src/shared/widgets/auth_code_field.d.ts.map +1 -0
  222. package/lib/typescript/src/shared/widgets/calendar_date_picker.d.ts.map +1 -1
  223. package/lib/typescript/src/shared/widgets/confirm_action_sheet_widget.d.ts +12 -1
  224. package/lib/typescript/src/shared/widgets/confirm_action_sheet_widget.d.ts.map +1 -1
  225. package/lib/typescript/src/shared/widgets/emoji_select_widget.d.ts.map +1 -1
  226. package/lib/typescript/src/shared/widgets/frequence_input_widget.d.ts +6 -3
  227. package/lib/typescript/src/shared/widgets/frequence_input_widget.d.ts.map +1 -1
  228. package/lib/typescript/src/shared/widgets/frequence_select_widget.d.ts +23 -5
  229. package/lib/typescript/src/shared/widgets/frequence_select_widget.d.ts.map +1 -1
  230. package/lib/typescript/src/shared/widgets/image_select_widget.d.ts +1 -1
  231. package/lib/typescript/src/shared/widgets/input_text.d.ts +2 -0
  232. package/lib/typescript/src/shared/widgets/input_text.d.ts.map +1 -1
  233. package/lib/typescript/src/shared/widgets/notification_dialog.d.ts +3 -1
  234. package/lib/typescript/src/shared/widgets/notification_dialog.d.ts.map +1 -1
  235. package/lib/typescript/src/shared/widgets/pin_entete.d.ts +15 -0
  236. package/lib/typescript/src/shared/widgets/pin_entete.d.ts.map +1 -0
  237. package/lib/typescript/src/shared/widgets/select_date_widget.d.ts +4 -0
  238. package/lib/typescript/src/shared/widgets/select_date_widget.d.ts.map +1 -1
  239. package/lib/typescript/src/shared/widgets/selection.d.ts +11 -7
  240. package/lib/typescript/src/shared/widgets/selection.d.ts.map +1 -1
  241. package/package.json +1 -1
  242. package/src/l10n/app_localizations.ts +59 -11
  243. package/src/l10n/app_localizations_en.ts +32 -8
  244. package/src/l10n/app_localizations_fr.ts +38 -14
  245. package/src/l10n/app_localizations_pt.ts +31 -7
  246. package/src/modules/alias/domain/models/alias_revendication.ts +4 -2
  247. package/src/modules/alias/infra/alias_output_local.ts +11 -0
  248. package/src/modules/alias/infra/alias_output_repository.ts +9 -8
  249. package/src/modules/alias/presentation/pages/alias_delete_btn_widget.tsx +17 -24
  250. package/src/modules/alias/presentation/pages/alias_page_claim.tsx +76 -48
  251. package/src/modules/alias/presentation/pages/alias_page_create_mbno_form.tsx +113 -65
  252. package/src/modules/alias/presentation/pages/alias_page_create_mbno_timer.tsx +34 -25
  253. package/src/modules/alias/presentation/pages/alias_page_create_options.tsx +29 -36
  254. package/src/modules/alias/presentation/pages/alias_page_otp.tsx +24 -88
  255. package/src/modules/categorie/domain/services/categorie_service.ts +2 -1
  256. package/src/modules/categorie/presentation/pages/categorie_edit_icon_btn.tsx +38 -28
  257. package/src/modules/categorie/presentation/pages/categorie_form_pages.tsx +71 -41
  258. package/src/modules/categorie/presentation/pages/categorie_icon.tsx +26 -0
  259. package/src/modules/categorie/presentation/pages/categorie_liste_widget.tsx +45 -24
  260. package/src/modules/categorie/presentation/pages/categorie_select_page.tsx +10 -46
  261. package/src/modules/categorie/presentation/pages/categorie_select_widget.tsx +54 -13
  262. package/src/modules/config/domain/models/config_keys.ts +3 -0
  263. package/src/modules/contacts/domain/contact_pi.ts +3 -6
  264. package/src/modules/contacts/presentation/bloc/contact_bloc.ts +37 -20
  265. package/src/modules/contacts/presentation/pages/contact_actions_sheet.tsx +69 -0
  266. package/src/modules/contacts/presentation/pages/contact_list_alias_widget.tsx +26 -4
  267. package/src/modules/contacts/presentation/pages/contact_list_phone_widget.tsx +3 -0
  268. package/src/modules/contacts/presentation/pages/contact_list_widget_item.tsx +54 -65
  269. package/src/modules/contacts/presentation/pages/contact_section.tsx +13 -3
  270. package/src/modules/contacts/presentation/pages/contact_select_page.tsx +106 -74
  271. package/src/modules/contacts/presentation/pages/create/contact_create_page.tsx +86 -47
  272. package/src/modules/home/presentation/pages/home_page.tsx +2 -9
  273. package/src/modules/introduction/presentation/pages/introduction.tsx +8 -0
  274. package/src/modules/introduction/presentation/pages/introduction_footer.tsx +16 -36
  275. package/src/modules/introduction/presentation/pages/introduction_page.tsx +17 -5
  276. package/src/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.tsx +2 -2
  277. package/src/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications_son.tsx +1 -1
  278. package/src/modules/profile/presentation/pages/profile_page_avatar.tsx +2 -2
  279. package/src/modules/profile/presentation/pages/profile_page_contacts.tsx +12 -19
  280. package/src/modules/profile/presentation/pages/profile_page_contacts_actions.tsx +10 -1
  281. package/src/modules/qrcode/presentation/pages/qrcode_alias_page_share.tsx +3 -3
  282. package/src/modules/search/domain/models/fonctionnalite.ts +56 -0
  283. package/src/modules/search/presentation/pages/search_btn_widget.tsx +91 -0
  284. package/src/modules/search/presentation/pages/search_fonctionnalites.ts +21 -1
  285. package/src/modules/search/presentation/pages/search_page.tsx +166 -57
  286. package/src/modules/subscription/presentation/pages/subscription_create/subscription_create_page.tsx +4 -2
  287. package/src/modules/subscription/presentation/pages/subscription_create/subscription_create_page_list.tsx +5 -5
  288. package/src/modules/subscription/presentation/pages/subscription_menu_widget.tsx +3 -3
  289. package/src/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.ts +1 -2
  290. package/src/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.ts +17 -0
  291. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.tsx +26 -17
  292. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.tsx +9 -9
  293. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.tsx +9 -9
  294. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page.tsx +20 -2
  295. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.tsx +6 -8
  296. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.tsx +5 -5
  297. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.tsx +5 -7
  298. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.tsx +112 -103
  299. package/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page.tsx +6 -10
  300. package/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.tsx +3 -6
  301. package/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.tsx +5 -5
  302. package/src/shared/widgets/alias_widget.tsx +45 -18
  303. package/src/shared/widgets/auth_code_field.tsx +89 -0
  304. package/src/shared/widgets/calendar_date_picker.tsx +12 -11
  305. package/src/shared/widgets/confirm_action_sheet_widget.tsx +19 -1
  306. package/src/shared/widgets/emoji_select_widget.tsx +31 -29
  307. package/src/shared/widgets/frequence_input_widget.tsx +18 -24
  308. package/src/shared/widgets/frequence_select_widget.tsx +237 -117
  309. package/src/shared/widgets/image_select_widget.tsx +4 -4
  310. package/src/shared/widgets/input_text.tsx +3 -0
  311. package/src/shared/widgets/notification_dialog.tsx +4 -1
  312. package/src/shared/widgets/pin_entete.tsx +74 -0
  313. package/src/shared/widgets/select_date_widget.tsx +66 -34
  314. package/src/shared/widgets/selection.tsx +23 -12
@@ -15,7 +15,7 @@ import { withAlpha } from '../../../../shared/utils/color';
15
15
  import { AvatarWidget } from '../../../../shared/widgets/avatar_widget';
16
16
  import { ClipboardWidget } from '../../../../shared/widgets/clipboard_widget';
17
17
  import { ImageSelectWidget } from '../../../../shared/widgets/image_select_widget';
18
- import { SbSelectionOption } from '../../../../shared/widgets/selection';
18
+ import { SelectionOption } from '../../../../shared/widgets/selection';
19
19
  import { AliasBloc } from '../../../alias/presentation/bloc/alias_bloc';
20
20
  import { AliasExistState } from '../../../alias/presentation/bloc/alias_state';
21
21
  import { ProfileAvatar } from '../../domain/profile_avatar';
@@ -46,7 +46,7 @@ export function ProfilePageAvatar() {
46
46
  otherActions={
47
47
  avatar != null
48
48
  ? [
49
- <SbSelectionOption
49
+ <SelectionOption
50
50
  key="delete"
51
51
  icone="delete-forever"
52
52
  titre={traductions.btnTextDelete}
@@ -1,7 +1,6 @@
1
1
  import { MaterialIcons } from '@expo/vector-icons';
2
- import { Image } from 'expo-image';
3
2
  import { useState } from 'react';
4
- import { Keyboard, Pressable, StyleSheet, Text, TextInput, View } from 'react-native';
3
+ import { Keyboard, Pressable, StyleSheet, TextInput, View } from 'react-native';
5
4
 
6
5
  import { Images } from '../../../../core/assets';
7
6
  import { useBloc } from '../../../../core/bloc_react';
@@ -11,6 +10,7 @@ import { useAppLocalizations } from '../../../../l10n/localizations';
11
10
  import { Card } from '../../../../shared/material/card';
12
11
  import { showModalBottomSheet } from '../../../../shared/material/overlays';
13
12
  import { Scaffold } from '../../../../shared/material/scaffold';
13
+ import { SelectionOption } from '../../../../shared/widgets/selection';
14
14
  import { MyPageContainer } from '../../../../shared/widgets/my_page_container';
15
15
  import type { ContactPI } from '../../../contacts/domain/contact_pi';
16
16
  import type { PhoneContact } from '../../../contacts/domain/phone_contact';
@@ -67,18 +67,13 @@ export function ProfilePageContacts({ contactPI }: { contactPI?: ContactPI | nul
67
67
  {/* Nouveau contact */}
68
68
  {!hasInputSearchFocused && searchKeyword == null && (
69
69
  <>
70
- <Card>
71
- <Pressable accessibilityRole="button" onPress={() => void onSelect(null, null)} style={styles.action}>
72
- <View style={[styles.actionIcon, { backgroundColor: theme.colorScheme.surface }]}>
73
- <Image source={Images.iconTransactionSendByNewContact} style={styles.icon} tintColor={theme.colorScheme.onSurface} />
74
- </View>
75
- <View style={styles.texts}>
76
- <Text style={theme.textTheme.headlineSmall}>{traductions.profileContactPageaActionAdd}</Text>
77
- <Text style={theme.textTheme.displaySmall}>{traductions.profileContactPageaActionAddSubtitle}</Text>
78
- </View>
79
- </Pressable>
80
- </Card>
81
- <View style={styles.gap10} />
70
+ <SelectionOption
71
+ image={Images.iconTransactionSendByNewContact}
72
+ titre={traductions.profileContactPageaActionAdd}
73
+ sousTitre={traductions.profileContactPageaActionAddSubtitle}
74
+ onPress={() => void onSelect(null, null)}
75
+ />
76
+ <View style={styles.gap16} />
82
77
  </>
83
78
  )}
84
79
  {/* Contacts (la recherche est transmise à la pagination : le SDK
@@ -88,6 +83,8 @@ export function ProfilePageContacts({ contactPI }: { contactPI?: ContactPI | nul
88
83
  hideTitle
89
84
  expanded
90
85
  searchKeyword={searchKeyword}
86
+ // Le toucher ouvre déjà la feuille du contact
87
+ showActions={false}
91
88
  onSelect={(contact, alias) => void onSelect(contact, alias)}
92
89
  />
93
90
  </View>
@@ -102,10 +99,6 @@ const styles = StyleSheet.create({
102
99
  flex: { flex: 1 },
103
100
  search: { height: 36, flexDirection: 'row', alignItems: 'center', paddingHorizontal: 12 },
104
101
  input: { flex: 1, marginLeft: 8, paddingVertical: 0 },
105
- action: { flexDirection: 'row', alignItems: 'center', paddingHorizontal: 16, paddingVertical: 10 },
106
- actionIcon: { width: 45, height: 45, borderRadius: 14, alignItems: 'center', justifyContent: 'center' },
107
- icon: { width: 20, height: 20 },
108
- texts: { flex: 1, marginLeft: 16 },
109
- gap10: { height: 10 },
102
+ gap16: { height: 16 },
110
103
  gap20: { height: 20 },
111
104
  });
@@ -1,6 +1,6 @@
1
1
  import { MaterialIcons } from '@expo/vector-icons';
2
2
  import { useState } from 'react';
3
- import { Keyboard, Pressable, ScrollView, StyleSheet, Text, View } from 'react-native';
3
+ import { Keyboard, Platform, Pressable, ScrollView, Share, StyleSheet, Text, View } from 'react-native';
4
4
 
5
5
  import { Images } from '../../../../core/assets';
6
6
  import { useBloc, useBlocListener, useCreateBloc } from '../../../../core/bloc_react';
@@ -179,6 +179,15 @@ export function ProfilePageContactsActions({
179
179
  setCanEdit(true);
180
180
  }}
181
181
  />,
182
+ // Partager
183
+ <ProfileMenuTile
184
+ key="partager"
185
+ icone={Platform.OS === 'ios' ? 'ios-share' : 'share'}
186
+ titre={traductions.profileContactPageaActionShare}
187
+ onPress={() =>
188
+ void Share.share({ title: traductions.qrcodePagePartageAliasMessage(name ?? ''), message: alias })
189
+ }
190
+ />,
182
191
  // Supprimer
183
192
  <ProfileMenuTile
184
193
  key="supprimer"
@@ -3,7 +3,7 @@ import { ScrollView, Share, StyleSheet, View } from 'react-native';
3
3
  import { Images } from '../../../../core/assets';
4
4
  import { AppRouter, useAppRouter } from '../../../../core/router';
5
5
  import { useAppLocalizations } from '../../../../l10n/localizations';
6
- import { SbSelectionOption, SelectionSheet } from '../../../../shared/widgets/selection';
6
+ import { SelectionOption, SelectionSheet } from '../../../../shared/widgets/selection';
7
7
 
8
8
  /** Feuille « Partager » : le QR code (image) ou l'alias (texte). */
9
9
  export function QrcodeAliasPageShare({
@@ -24,7 +24,7 @@ export function QrcodeAliasPageShare({
24
24
  contenu={
25
25
  <ScrollView bounces={false} contentContainerStyle={styles.content}>
26
26
  {/* Partager le QR code */}
27
- <SbSelectionOption
27
+ <SelectionOption
28
28
  image={Images.homeFooterQrcode}
29
29
  titre={traductions.qrcodePagePartageQrCodeTitle}
30
30
  sousTitre={traductions.qrcodePagePartageQrCodeSubTitle}
@@ -35,7 +35,7 @@ export function QrcodeAliasPageShare({
35
35
  />
36
36
  <View style={styles.gap10} />
37
37
  {/* Partager l'alias */}
38
- <SbSelectionOption
38
+ <SelectionOption
39
39
  image={Images.iconsCircleUser}
40
40
  titre={traductions.qrcodePagePartageAliasTitle}
41
41
  sousTitre={traductions.qrcodePagePartageAliasSubTitle}
@@ -30,6 +30,14 @@ const ACCENTS: Record<string, string> = {
30
30
  æ: 'ae',
31
31
  };
32
32
 
33
+ /** Rubrique d'une fonctionnalité, pour grouper la liste quand rien n'est encore saisi. */
34
+ export enum FonctionnaliteRubrique {
35
+ paiements = 'paiements',
36
+ abonnements = 'abonnements',
37
+ servicesBancaires = 'servicesBancaires',
38
+ profil = 'profil',
39
+ }
40
+
33
41
  /**
34
42
  * Une fonctionnalité de l'application que l'utilisateur peut retrouver
35
43
  * depuis la recherche.
@@ -59,18 +67,66 @@ export class Fonctionnalite {
59
67
  */
60
68
  readonly ouvrir: () => void;
61
69
 
70
+ /** Rubrique sous laquelle elle est listée avant toute saisie. */
71
+ readonly rubrique: FonctionnaliteRubrique;
72
+
73
+ /** Proposée en raccourci en haut de la recherche, avant toute saisie. */
74
+ readonly raccourci: boolean;
75
+
62
76
  constructor(options: {
63
77
  icon: number;
64
78
  titre: string;
65
79
  sousTitre?: string;
66
80
  motsCles?: readonly string[];
67
81
  ouvrir: () => void;
82
+ rubrique?: FonctionnaliteRubrique;
83
+ raccourci?: boolean;
68
84
  }) {
69
85
  this.icon = options.icon;
70
86
  this.titre = options.titre;
71
87
  this.sousTitre = options.sousTitre;
72
88
  this.motsCles = options.motsCles ?? [];
73
89
  this.ouvrir = options.ouvrir;
90
+ this.rubrique = options.rubrique ?? FonctionnaliteRubrique.paiements;
91
+ this.raccourci = options.raccourci ?? false;
92
+ }
93
+
94
+ /**
95
+ * Parties de [texte] à mettre en évidence pour [recherche] : débuts de
96
+ * mots qui commencent par un mot saisi, sans tenir compte des accents ni
97
+ * des majuscules. Renvoie des intervalles [début, fin[ dans [texte],
98
+ * triés et sans chevauchement.
99
+ */
100
+ static correspondances(texte: string, recherche: string): [number, number][] {
101
+ const saisis = Fonctionnalite.normaliser(recherche)
102
+ .split(/[^a-z0-9]+/)
103
+ .filter((mot) => mot.length >= 2);
104
+ if (saisis.length === 0) return [];
105
+ // Texte normalisé caractère par caractère, avec la position d'origine
106
+ let t = '';
107
+ const origine: number[] = [];
108
+ for (let i = 0; i < texte.length; i++) {
109
+ // Espace et ponctuation deviennent un séparateur
110
+ const lettre = Fonctionnalite.normaliser(texte[i]);
111
+ const n = lettre.length === 0 ? ' ' : lettre;
112
+ for (const c of n) {
113
+ t += c;
114
+ origine.push(i);
115
+ }
116
+ }
117
+ const intervalles: [number, number][] = [];
118
+ for (const mot of t.matchAll(/[a-z0-9]+/g)) {
119
+ const debut = mot.index ?? 0;
120
+ const fin = debut + mot[0].length;
121
+ for (const saisi of saisis) {
122
+ if (t.startsWith(saisi, debut) || saisi.startsWith(mot[0])) {
123
+ const longueur = Math.min(saisi.length, fin - debut);
124
+ intervalles.push([origine[debut], origine[debut + longueur - 1] + 1]);
125
+ break;
126
+ }
127
+ }
128
+ }
129
+ return intervalles;
74
130
  }
75
131
 
76
132
  /**
@@ -0,0 +1,91 @@
1
+ import { MaterialIcons } from '@expo/vector-icons';
2
+ import { useEffect, useRef } from 'react';
3
+ import { Animated, Easing, Pressable, StyleSheet, View } from 'react-native';
4
+
5
+ import { useBloc } from '../../../../core/bloc_react';
6
+ import { useTheme } from '../../../../core/theme';
7
+ import { useAppLocalizations } from '../../../../l10n/localizations';
8
+ import { withAlpha } from '../../../../shared/utils/color';
9
+ import { ConfigBloc } from '../../../config/adapters/ui/bloc/config_bloc';
10
+ import { ConfigChangeEvent } from '../../../config/adapters/ui/bloc/config_event';
11
+ import { ConfigLoadedState } from '../../../config/adapters/ui/bloc/config_state';
12
+ import { ConfigKey } from '../../../config/domain/models/config_keys';
13
+
14
+ /** Nombre de premiers affichages de l'accueil où la pastille pulse. */
15
+ const AFFICHAGES_AVEC_PULSATION = 3;
16
+
17
+ /**
18
+ * Bouton de recherche des fonctionnalités de la barre de l'accueil : loupe
19
+ * dans une pastille teintée, libellé d'accessibilité (et infobulle au
20
+ * toucher long sur le web). Aux trois premiers affichages de l'accueil, la
21
+ * pastille pulse deux fois pour attirer l'œil ; plus du tout une fois la
22
+ * recherche utilisée. [onPress] absent : bouton grisé.
23
+ */
24
+ export function SearchBtnWidget({ onPress }: { onPress?: () => void }) {
25
+ const traductions = useAppLocalizations();
26
+ const theme = useTheme();
27
+ const primaire = theme.colorScheme.primary;
28
+ const configBloc = useBloc(ConfigBloc);
29
+ const pulsation = useRef(new Animated.Value(0)).current;
30
+
31
+ useEffect(() => {
32
+ if (!(configBloc.state instanceof ConfigLoadedState)) return;
33
+ const vus = Number.parseInt(configBloc.getParamValue(ConfigKey.searchHintCount) ?? '', 10) || 0;
34
+ if (vus >= AFFICHAGES_AVEC_PULSATION) return;
35
+ configBloc.add(new ConfigChangeEvent(ConfigKey.searchHintCount, String(vus + 1)));
36
+ // Deux pulsations, une fois l'accueil affiché
37
+ const une = () =>
38
+ Animated.sequence([
39
+ Animated.timing(pulsation, { toValue: 1, duration: 900, easing: Easing.out(Easing.ease), useNativeDriver: true }),
40
+ Animated.timing(pulsation, { toValue: 0, duration: 0, useNativeDriver: true }),
41
+ ]);
42
+ const animation = Animated.sequence([Animated.delay(800), une(), une()]);
43
+ animation.start();
44
+ return () => animation.stop();
45
+ }, [configBloc, pulsation]);
46
+
47
+ // Léger grossissement au milieu de la pulsation ; onde qui s'élargit et s'efface
48
+ const scale = pulsation.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, 1.12, 1] });
49
+ const ondeScale = pulsation.interpolate({ inputRange: [0, 1], outputRange: [1, 1.4] });
50
+ const ondeOpacite = pulsation.interpolate({ inputRange: [0, 0.01, 1], outputRange: [0, 0.25, 0] });
51
+
52
+ return (
53
+ <View style={styles.zone}>
54
+ <Animated.View
55
+ pointerEvents="none"
56
+ style={[styles.onde, { backgroundColor: primaire, opacity: ondeOpacite, transform: [{ scale: ondeScale }] }]}
57
+ />
58
+ <Animated.View style={{ transform: [{ scale }] }}>
59
+ <Pressable
60
+ accessibilityRole="button"
61
+ accessibilityLabel={traductions.homePageSearchTooltip}
62
+ accessibilityState={{ disabled: onPress == null }}
63
+ disabled={onPress == null}
64
+ hitSlop={6}
65
+ onPress={() => {
66
+ // Recherche utilisée : plus de pulsation
67
+ if (
68
+ configBloc.state instanceof ConfigLoadedState &&
69
+ configBloc.getParamValue(ConfigKey.searchHintCount) !== String(AFFICHAGES_AVEC_PULSATION)
70
+ ) {
71
+ configBloc.add(new ConfigChangeEvent(ConfigKey.searchHintCount, String(AFFICHAGES_AVEC_PULSATION)));
72
+ }
73
+ onPress?.();
74
+ }}
75
+ style={({ pressed }) => [
76
+ styles.pastille,
77
+ { backgroundColor: withAlpha(primaire, pressed ? 0.22 : 0.12), opacity: onPress == null ? 0.4 : 1 },
78
+ ]}
79
+ >
80
+ <MaterialIcons name="search" size={22} color={primaire} />
81
+ </Pressable>
82
+ </Animated.View>
83
+ </View>
84
+ );
85
+ }
86
+
87
+ const styles = StyleSheet.create({
88
+ zone: { width: 48, height: 48, alignItems: 'center', justifyContent: 'center' },
89
+ onde: { position: 'absolute', width: 40, height: 40, borderRadius: 20 },
90
+ pastille: { width: 40, height: 40, borderRadius: 20, alignItems: 'center', justifyContent: 'center' },
91
+ });
@@ -5,7 +5,7 @@ import { Di } from '../../../../core/di';
5
5
  import { AppEnv } from '../../../../core/env';
6
6
  import { AppRouter, type SdkRouter } from '../../../../core/router';
7
7
  import type { AppLocalizations } from '../../../../l10n/app_localizations';
8
- import { Fonctionnalite } from '../../domain/models/fonctionnalite';
8
+ import { Fonctionnalite, FonctionnaliteRubrique } from '../../domain/models/fonctionnalite';
9
9
 
10
10
  /**
11
11
  * Catalogue des fonctionnalités accessibles depuis la recherche.
@@ -34,6 +34,8 @@ export function fonctionnalitesRecherchables(
34
34
  new Fonctionnalite({
35
35
  icon: Images.arrowUp,
36
36
  titre: traductions.homeActionSend,
37
+ rubrique: FonctionnaliteRubrique.paiements,
38
+ raccourci: true,
37
39
  sousTitre: traductions.searchSendSubTitle,
38
40
  motsCles: ['envoi', 'transfert', 'payer', 'virement', 'send', 'pay', 'transfer', 'enviar', 'pagar'],
39
41
  ouvrir: () => aller(AppRouter.transactionSend),
@@ -41,6 +43,8 @@ export function fonctionnalitesRecherchables(
41
43
  new Fonctionnalite({
42
44
  icon: Images.arrowDown,
43
45
  titre: traductions.homeActionRequest,
46
+ rubrique: FonctionnaliteRubrique.paiements,
47
+ raccourci: true,
44
48
  sousTitre: traductions.searchReceiveSubTitle,
45
49
  motsCles: ['demander', 'demande', 'rtp', 'request', 'receive', 'pedir', 'receber'],
46
50
  ouvrir: () => aller(AppRouter.transactionReceive),
@@ -48,6 +52,7 @@ export function fonctionnalitesRecherchables(
48
52
  new Fonctionnalite({
49
53
  icon: Images.homeFooterQrcode,
50
54
  titre: traductions.searchQrScanTitle,
55
+ rubrique: FonctionnaliteRubrique.paiements,
51
56
  sousTitre: traductions.searchQrScanSubTitle,
52
57
  motsCles: ['qr', 'qrcode', 'scanner', 'scan', 'camera'],
53
58
  // Le QR scanné ouvre directement l'envoi, comme depuis l'accueil.
@@ -56,6 +61,8 @@ export function fonctionnalitesRecherchables(
56
61
  new Fonctionnalite({
57
62
  icon: Images.homeFooterQr,
58
63
  titre: traductions.qrcodePagePartageQrCodeTitle,
64
+ rubrique: FonctionnaliteRubrique.paiements,
65
+ raccourci: true,
59
66
  sousTitre: traductions.searchQrShowSubTitle,
60
67
  motsCles: ['qr', 'qrcode', 'partager', 'share', 'partilhar'],
61
68
  ouvrir: () => aller(AppRouter.qrcodeShow),
@@ -63,6 +70,7 @@ export function fonctionnalitesRecherchables(
63
70
  new Fonctionnalite({
64
71
  icon: Images.iconSend,
65
72
  titre: traductions.transactionSearchTitle,
73
+ rubrique: FonctionnaliteRubrique.paiements,
66
74
  sousTitre: traductions.searchTransactionsSubTitle,
67
75
  motsCles: ['historique', 'paiement', 'operation', 'releve', 'history', 'payment', 'historico', 'pagamento'],
68
76
  ouvrir: () => aller(AppRouter.transactionSearch),
@@ -70,6 +78,7 @@ export function fonctionnalitesRecherchables(
70
78
  new Fonctionnalite({
71
79
  icon: Images.iconsCloche,
72
80
  titre: traductions.searchNotificationsTitle,
81
+ rubrique: FonctionnaliteRubrique.paiements,
73
82
  sousTitre: traductions.searchNotificationsSubTitle,
74
83
  motsCles: ['notification', 'alerte', 'message', 'nouveau', 'alert', 'news', 'notificacao', 'alerta'],
75
84
  ouvrir: () => aller(AppRouter.notifications),
@@ -79,6 +88,8 @@ export function fonctionnalitesRecherchables(
79
88
  new Fonctionnalite({
80
89
  icon: Images.transactionPlanifier,
81
90
  titre: traductions.homeActionMoreSheetProgrammerTitle,
91
+ rubrique: FonctionnaliteRubrique.abonnements,
92
+ raccourci: true,
82
93
  sousTitre: traductions.homeActionMoreSheetProgrammerSubTitle,
83
94
  motsCles: ['programmer', 'planifier', 'recurrent', 'schedule', 'agendar'],
84
95
  ouvrir: () => aller(AppRouter.subscriptionSchedule),
@@ -86,6 +97,7 @@ export function fonctionnalitesRecherchables(
86
97
  new Fonctionnalite({
87
98
  icon: Images.homeMoreFindSubscription,
88
99
  titre: traductions.homePageToolbarTabbarAbonnement,
100
+ rubrique: FonctionnaliteRubrique.abonnements,
89
101
  sousTitre: traductions.searchAbonnementsSubTitle,
90
102
  motsCles: ['abonnement', 'echeance', 'programme', 'subscription', 'assinatura'],
91
103
  ouvrir: () => ouvrirOnglet(1),
@@ -93,6 +105,7 @@ export function fonctionnalitesRecherchables(
93
105
  new Fonctionnalite({
94
106
  icon: Images.homeMoreFindSubscription,
95
107
  titre: traductions.homeActionMoreSheetAbonnementTitle,
108
+ rubrique: FonctionnaliteRubrique.abonnements,
96
109
  sousTitre: traductions.homeActionMoreSheetAbonnementSubTitle,
97
110
  motsCles: ['abonnement', 'subscription', 'assinatura'],
98
111
  ouvrir: () => aller(AppRouter.subscriptionSubscribe),
@@ -100,6 +113,7 @@ export function fonctionnalitesRecherchables(
100
113
  new Fonctionnalite({
101
114
  icon: Images.homeMoreSplitPayments,
102
115
  titre: traductions.homeActionMoreSheetPartagerTitle,
116
+ rubrique: FonctionnaliteRubrique.abonnements,
103
117
  sousTitre: traductions.homeActionMoreSheetPartagerSubTitle,
104
118
  motsCles: ['partager', 'repartir', 'diviser', 'amis', 'split', 'share', 'dividir'],
105
119
  ouvrir: () => aller(AppRouter.transactionSplitPaymentTx),
@@ -109,6 +123,7 @@ export function fonctionnalitesRecherchables(
109
123
  new Fonctionnalite({
110
124
  icon: Images.iconsCircleUser,
111
125
  titre: traductions.profilePageMenuCompteTitle,
126
+ rubrique: FonctionnaliteRubrique.profil,
112
127
  sousTitre: traductions.searchCompteSubTitle,
113
128
  motsCles: ['profil', 'compte', 'iban', 'rib', 'profile', 'account', 'perfil', 'conta'],
114
129
  ouvrir: () => aller(AppRouter.profileCompte),
@@ -116,6 +131,7 @@ export function fonctionnalitesRecherchables(
116
131
  new Fonctionnalite({
117
132
  icon: Images.iconsSetting,
118
133
  titre: traductions.profilePageMenuParametreTitle,
134
+ rubrique: FonctionnaliteRubrique.profil,
119
135
  sousTitre: traductions.searchParametreSubTitle,
120
136
  motsCles: ['parametre', 'reglage', 'theme', 'langue', 'notification', 'sombre', 'settings', 'language', 'dark', 'definicoes', 'idioma'],
121
137
  ouvrir: () => aller(AppRouter.profileParametre),
@@ -126,6 +142,7 @@ export function fonctionnalitesRecherchables(
126
142
  new Fonctionnalite({
127
143
  icon: Images.iconsTheme,
128
144
  titre: traductions.searchThemeTitle,
145
+ rubrique: FonctionnaliteRubrique.profil,
129
146
  sousTitre: traductions.searchThemeSubTitle,
130
147
  motsCles: ['theme', 'apparence', 'sombre', 'clair', 'couleur', 'mode', 'appearance', 'dark', 'light', 'color', 'tema', 'aparencia', 'escuro', 'claro', 'cor'],
131
148
  ouvrir: () => aller(AppRouter.profileParametreTheme),
@@ -135,6 +152,7 @@ export function fonctionnalitesRecherchables(
135
152
  new Fonctionnalite({
136
153
  icon: Images.iconsCloche,
137
154
  titre: traductions.searchNotificationsParametreTitle,
155
+ rubrique: FonctionnaliteRubrique.profil,
138
156
  sousTitre: traductions.searchNotificationsParametreSubTitle,
139
157
  motsCles: ['notification', 'son', 'vibration', 'sonnerie', 'style', 'sound', 'vibrate', 'som', 'vibracao', 'estilo'],
140
158
  ouvrir: () => aller(AppRouter.profileParametreNotifications),
@@ -147,6 +165,7 @@ export function fonctionnalitesRecherchables(
147
165
  new Fonctionnalite({
148
166
  icon: Images.iconTransactionSendByAlias,
149
167
  titre: traductions.profilePageMenuAliasContactTitle,
168
+ rubrique: FonctionnaliteRubrique.profil,
150
169
  sousTitre: traductions.searchContactsSubTitle,
151
170
  motsCles: ['contact', 'alias', 'repertoire', 'contacts', 'contactos'],
152
171
  ouvrir: () => aller(AppRouter.profileContacts),
@@ -157,6 +176,7 @@ export function fonctionnalitesRecherchables(
157
176
  new Fonctionnalite({
158
177
  icon: Images.iconsHelp,
159
178
  titre: traductions.profilePageMenuHelpTitle,
179
+ rubrique: FonctionnaliteRubrique.profil,
160
180
  sousTitre: traductions.searchAideSubTitle,
161
181
  motsCles: ['aide', 'faq', 'assistance', 'support', 'help', 'ajuda'],
162
182
  ouvrir: () => aller(AppRouter.profileHelpCenter),