@pi-spi/app 2.0.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 (389) hide show
  1. package/lib/module/core/api.js +14 -5
  2. package/lib/module/core/api.js.map +1 -1
  3. package/lib/module/l10n/app_localizations.js.map +1 -1
  4. package/lib/module/l10n/app_localizations_en.js +40 -8
  5. package/lib/module/l10n/app_localizations_en.js.map +1 -1
  6. package/lib/module/l10n/app_localizations_fr.js +49 -14
  7. package/lib/module/l10n/app_localizations_fr.js.map +1 -1
  8. package/lib/module/l10n/app_localizations_pt.js +41 -7
  9. package/lib/module/l10n/app_localizations_pt.js.map +1 -1
  10. package/lib/module/modules/alias/domain/models/alias_revendication.js +4 -2
  11. package/lib/module/modules/alias/domain/models/alias_revendication.js.map +1 -1
  12. package/lib/module/modules/alias/infra/alias_output_local.js +11 -0
  13. package/lib/module/modules/alias/infra/alias_output_local.js.map +1 -1
  14. package/lib/module/modules/alias/infra/alias_output_repository.js +9 -8
  15. package/lib/module/modules/alias/infra/alias_output_repository.js.map +1 -1
  16. package/lib/module/modules/alias/presentation/pages/alias_delete_btn_widget.js +14 -18
  17. package/lib/module/modules/alias/presentation/pages/alias_delete_btn_widget.js.map +1 -1
  18. package/lib/module/modules/alias/presentation/pages/alias_page_claim.js +113 -60
  19. package/lib/module/modules/alias/presentation/pages/alias_page_claim.js.map +1 -1
  20. package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_form.js +151 -76
  21. package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_form.js.map +1 -1
  22. package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_timer.js +38 -24
  23. package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_timer.js.map +1 -1
  24. package/lib/module/modules/alias/presentation/pages/alias_page_create_options.js +28 -26
  25. package/lib/module/modules/alias/presentation/pages/alias_page_create_options.js.map +1 -1
  26. package/lib/module/modules/alias/presentation/pages/alias_page_otp.js +27 -110
  27. package/lib/module/modules/alias/presentation/pages/alias_page_otp.js.map +1 -1
  28. package/lib/module/modules/categorie/domain/services/categorie_service.js +2 -1
  29. package/lib/module/modules/categorie/domain/services/categorie_service.js.map +1 -1
  30. package/lib/module/modules/categorie/presentation/pages/categorie_edit_icon_btn.js +58 -72
  31. package/lib/module/modules/categorie/presentation/pages/categorie_edit_icon_btn.js.map +1 -1
  32. package/lib/module/modules/categorie/presentation/pages/categorie_form_pages.js +88 -80
  33. package/lib/module/modules/categorie/presentation/pages/categorie_form_pages.js.map +1 -1
  34. package/lib/module/modules/categorie/presentation/pages/categorie_icon.js +39 -0
  35. package/lib/module/modules/categorie/presentation/pages/categorie_icon.js.map +1 -1
  36. package/lib/module/modules/categorie/presentation/pages/categorie_liste_widget.js +55 -27
  37. package/lib/module/modules/categorie/presentation/pages/categorie_liste_widget.js.map +1 -1
  38. package/lib/module/modules/categorie/presentation/pages/categorie_select_page.js +21 -81
  39. package/lib/module/modules/categorie/presentation/pages/categorie_select_page.js.map +1 -1
  40. package/lib/module/modules/categorie/presentation/pages/categorie_select_widget.js +53 -16
  41. package/lib/module/modules/categorie/presentation/pages/categorie_select_widget.js.map +1 -1
  42. package/lib/module/modules/config/domain/models/config_keys.js +2 -0
  43. package/lib/module/modules/config/domain/models/config_keys.js.map +1 -1
  44. package/lib/module/modules/contacts/domain/contact_pi.js +3 -5
  45. package/lib/module/modules/contacts/domain/contact_pi.js.map +1 -1
  46. package/lib/module/modules/contacts/presentation/bloc/contact_bloc.js +30 -14
  47. package/lib/module/modules/contacts/presentation/bloc/contact_bloc.js.map +1 -1
  48. package/lib/module/modules/contacts/presentation/pages/contact_actions_sheet.js +106 -0
  49. package/lib/module/modules/contacts/presentation/pages/contact_actions_sheet.js.map +1 -0
  50. package/lib/module/modules/contacts/presentation/pages/contact_list_alias_widget.js +17 -7
  51. package/lib/module/modules/contacts/presentation/pages/contact_list_alias_widget.js.map +1 -1
  52. package/lib/module/modules/contacts/presentation/pages/contact_list_phone_widget.js +5 -4
  53. package/lib/module/modules/contacts/presentation/pages/contact_list_phone_widget.js.map +1 -1
  54. package/lib/module/modules/contacts/presentation/pages/contact_list_widget_item.js +76 -67
  55. package/lib/module/modules/contacts/presentation/pages/contact_list_widget_item.js.map +1 -1
  56. package/lib/module/modules/contacts/presentation/pages/contact_section.js +14 -4
  57. package/lib/module/modules/contacts/presentation/pages/contact_section.js.map +1 -1
  58. package/lib/module/modules/contacts/presentation/pages/contact_select_page.js +131 -110
  59. package/lib/module/modules/contacts/presentation/pages/contact_select_page.js.map +1 -1
  60. package/lib/module/modules/contacts/presentation/pages/create/contact_create_page.js +118 -59
  61. package/lib/module/modules/contacts/presentation/pages/create/contact_create_page.js.map +1 -1
  62. package/lib/module/modules/home/presentation/pages/home_page.js +3 -13
  63. package/lib/module/modules/home/presentation/pages/home_page.js.map +1 -1
  64. package/lib/module/modules/introduction/presentation/pages/introduction.js +17 -4
  65. package/lib/module/modules/introduction/presentation/pages/introduction.js.map +1 -1
  66. package/lib/module/modules/introduction/presentation/pages/introduction_footer.js +15 -53
  67. package/lib/module/modules/introduction/presentation/pages/introduction_footer.js.map +1 -1
  68. package/lib/module/modules/introduction/presentation/pages/introduction_page.js +22 -4
  69. package/lib/module/modules/introduction/presentation/pages/introduction_page.js.map +1 -1
  70. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.js +2 -2
  71. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.js.map +1 -1
  72. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications_son.js +1 -1
  73. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications_son.js.map +1 -1
  74. package/lib/module/modules/profile/presentation/pages/profile_page_avatar.js +6 -28
  75. package/lib/module/modules/profile/presentation/pages/profile_page_avatar.js.map +1 -1
  76. package/lib/module/modules/profile/presentation/pages/profile_page_contacts.js +14 -53
  77. package/lib/module/modules/profile/presentation/pages/profile_page_contacts.js.map +1 -1
  78. package/lib/module/modules/profile/presentation/pages/profile_page_contacts_actions.js +131 -161
  79. package/lib/module/modules/profile/presentation/pages/profile_page_contacts_actions.js.map +1 -1
  80. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page.js +0 -1
  81. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page.js.map +1 -1
  82. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page_share.js +26 -38
  83. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page_share.js.map +1 -1
  84. package/lib/module/modules/search/domain/models/fonctionnalite.js +51 -0
  85. package/lib/module/modules/search/domain/models/fonctionnalite.js.map +1 -1
  86. package/lib/module/modules/search/presentation/pages/search_btn_widget.js +136 -0
  87. package/lib/module/modules/search/presentation/pages/search_btn_widget.js.map +1 -0
  88. package/lib/module/modules/search/presentation/pages/search_fonctionnalites.js +21 -1
  89. package/lib/module/modules/search/presentation/pages/search_fonctionnalites.js.map +1 -1
  90. package/lib/module/modules/search/presentation/pages/search_page.js +266 -97
  91. package/lib/module/modules/search/presentation/pages/search_page.js.map +1 -1
  92. package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page.js +5 -3
  93. package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page.js.map +1 -1
  94. package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page_list.js +5 -6
  95. package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page_list.js.map +1 -1
  96. package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page.js +0 -1
  97. package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page.js.map +1 -1
  98. package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page_actions.js +0 -1
  99. package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page_actions.js.map +1 -1
  100. package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.js +38 -93
  101. package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.js.map +1 -1
  102. package/lib/module/modules/subscription/presentation/pages/subscription_list/subscription_list_empty_widget.js +0 -1
  103. package/lib/module/modules/subscription/presentation/pages/subscription_list/subscription_list_empty_widget.js.map +1 -1
  104. package/lib/module/modules/subscription/presentation/pages/subscription_list/subscription_list_widget.js +0 -1
  105. package/lib/module/modules/subscription/presentation/pages/subscription_list/subscription_list_widget.js.map +1 -1
  106. package/lib/module/modules/subscription/presentation/pages/subscription_menu_widget.js +23 -42
  107. package/lib/module/modules/subscription/presentation/pages/subscription_menu_widget.js.map +1 -1
  108. package/lib/module/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.js +1 -2
  109. package/lib/module/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.js.map +1 -1
  110. package/lib/module/modules/transactions/infra/transaction_output_remote.js +2 -1
  111. package/lib/module/modules/transactions/infra/transaction_output_remote.js.map +1 -1
  112. package/lib/module/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.js +17 -0
  113. package/lib/module/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.js.map +1 -1
  114. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions.js +0 -1
  115. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions.js.map +1 -1
  116. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_cancel.js +34 -61
  117. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_cancel.js.map +1 -1
  118. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_return.js +49 -62
  119. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_return.js.map +1 -1
  120. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_ticket.js +68 -88
  121. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_ticket.js.map +1 -1
  122. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.js +30 -23
  123. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.js.map +1 -1
  124. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.js +77 -0
  125. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.js.map +1 -0
  126. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.js +49 -155
  127. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.js.map +1 -1
  128. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page.js +16 -4
  129. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page.js.map +1 -1
  130. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.js +11 -9
  131. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.js.map +1 -1
  132. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.js +17 -35
  133. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.js.map +1 -1
  134. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.js +8 -10
  135. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.js.map +1 -1
  136. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.js +127 -106
  137. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.js.map +1 -1
  138. package/lib/module/modules/transactions/presentation/pages/transaction_recents/transaction_recents_nombre_widget.js +50 -42
  139. package/lib/module/modules/transactions/presentation/pages/transaction_recents/transaction_recents_nombre_widget.js.map +1 -1
  140. package/lib/module/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.js +0 -1
  141. package/lib/module/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.js.map +1 -1
  142. package/lib/module/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions.js +0 -1
  143. package/lib/module/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions.js.map +1 -1
  144. package/lib/module/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions_reject.js +37 -67
  145. package/lib/module/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions_reject.js.map +1 -1
  146. package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page.js +9 -15
  147. package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page.js.map +1 -1
  148. package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.js +5 -11
  149. package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.js.map +1 -1
  150. package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.js +9 -9
  151. package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.js.map +1 -1
  152. package/lib/module/shared/widgets/alias_widget.js +33 -12
  153. package/lib/module/shared/widgets/alias_widget.js.map +1 -1
  154. package/lib/module/shared/widgets/auth_code_field.js +89 -0
  155. package/lib/module/shared/widgets/auth_code_field.js.map +1 -0
  156. package/lib/module/shared/widgets/calendar_date_picker.js +21 -16
  157. package/lib/module/shared/widgets/calendar_date_picker.js.map +1 -1
  158. package/lib/module/shared/widgets/confirm_action_sheet_widget.js +53 -67
  159. package/lib/module/shared/widgets/confirm_action_sheet_widget.js.map +1 -1
  160. package/lib/module/shared/widgets/emoji_select_widget.js +34 -39
  161. package/lib/module/shared/widgets/emoji_select_widget.js.map +1 -1
  162. package/lib/module/shared/widgets/frequence_input_widget.js +18 -29
  163. package/lib/module/shared/widgets/frequence_input_widget.js.map +1 -1
  164. package/lib/module/shared/widgets/frequence_select_widget.js +233 -140
  165. package/lib/module/shared/widgets/frequence_select_widget.js.map +1 -1
  166. package/lib/module/shared/widgets/image_select_widget.js +43 -107
  167. package/lib/module/shared/widgets/image_select_widget.js.map +1 -1
  168. package/lib/module/shared/widgets/input_text.js +1 -1
  169. package/lib/module/shared/widgets/input_text.js.map +1 -1
  170. package/lib/module/shared/widgets/notification_dialog.js +28 -37
  171. package/lib/module/shared/widgets/notification_dialog.js.map +1 -1
  172. package/lib/module/shared/widgets/pin_entete.js +114 -0
  173. package/lib/module/shared/widgets/pin_entete.js.map +1 -0
  174. package/lib/module/shared/widgets/select_date_widget.js +74 -59
  175. package/lib/module/shared/widgets/select_date_widget.js.map +1 -1
  176. package/lib/module/shared/widgets/selection.js +387 -6
  177. package/lib/module/shared/widgets/selection.js.map +1 -1
  178. package/lib/typescript/src/core/api.d.ts +6 -0
  179. package/lib/typescript/src/core/api.d.ts.map +1 -1
  180. package/lib/typescript/src/l10n/app_localizations.d.ts +75 -11
  181. package/lib/typescript/src/l10n/app_localizations.d.ts.map +1 -1
  182. package/lib/typescript/src/l10n/app_localizations_en.d.ts.map +1 -1
  183. package/lib/typescript/src/l10n/app_localizations_fr.d.ts.map +1 -1
  184. package/lib/typescript/src/l10n/app_localizations_pt.d.ts.map +1 -1
  185. package/lib/typescript/src/modules/alias/domain/models/alias_revendication.d.ts.map +1 -1
  186. package/lib/typescript/src/modules/alias/infra/alias_output_local.d.ts +5 -0
  187. package/lib/typescript/src/modules/alias/infra/alias_output_local.d.ts.map +1 -1
  188. package/lib/typescript/src/modules/alias/infra/alias_output_repository.d.ts.map +1 -1
  189. package/lib/typescript/src/modules/alias/presentation/pages/alias_delete_btn_widget.d.ts.map +1 -1
  190. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_claim.d.ts.map +1 -1
  191. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_mbno_form.d.ts.map +1 -1
  192. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_mbno_timer.d.ts +1 -1
  193. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_mbno_timer.d.ts.map +1 -1
  194. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_options.d.ts +4 -1
  195. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_options.d.ts.map +1 -1
  196. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_otp.d.ts +9 -5
  197. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_otp.d.ts.map +1 -1
  198. package/lib/typescript/src/modules/categorie/domain/services/categorie_service.d.ts.map +1 -1
  199. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_edit_icon_btn.d.ts +3 -0
  200. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_edit_icon_btn.d.ts.map +1 -1
  201. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_form_pages.d.ts.map +1 -1
  202. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_icon.d.ts +9 -0
  203. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_icon.d.ts.map +1 -1
  204. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_liste_widget.d.ts +7 -2
  205. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_liste_widget.d.ts.map +1 -1
  206. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_select_page.d.ts.map +1 -1
  207. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_select_widget.d.ts +10 -2
  208. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_select_widget.d.ts.map +1 -1
  209. package/lib/typescript/src/modules/config/domain/models/config_keys.d.ts +3 -1
  210. package/lib/typescript/src/modules/config/domain/models/config_keys.d.ts.map +1 -1
  211. package/lib/typescript/src/modules/contacts/domain/contact_pi.d.ts +0 -2
  212. package/lib/typescript/src/modules/contacts/domain/contact_pi.d.ts.map +1 -1
  213. package/lib/typescript/src/modules/contacts/presentation/bloc/contact_bloc.d.ts +7 -0
  214. package/lib/typescript/src/modules/contacts/presentation/bloc/contact_bloc.d.ts.map +1 -1
  215. package/lib/typescript/src/modules/contacts/presentation/pages/contact_actions_sheet.d.ts +14 -0
  216. package/lib/typescript/src/modules/contacts/presentation/pages/contact_actions_sheet.d.ts.map +1 -0
  217. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_alias_widget.d.ts +4 -2
  218. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_alias_widget.d.ts.map +1 -1
  219. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_phone_widget.d.ts.map +1 -1
  220. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_widget_item.d.ts +6 -4
  221. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_widget_item.d.ts.map +1 -1
  222. package/lib/typescript/src/modules/contacts/presentation/pages/contact_section.d.ts +3 -1
  223. package/lib/typescript/src/modules/contacts/presentation/pages/contact_section.d.ts.map +1 -1
  224. package/lib/typescript/src/modules/contacts/presentation/pages/contact_select_page.d.ts.map +1 -1
  225. package/lib/typescript/src/modules/contacts/presentation/pages/create/contact_create_page.d.ts.map +1 -1
  226. package/lib/typescript/src/modules/home/presentation/pages/home_page.d.ts.map +1 -1
  227. package/lib/typescript/src/modules/introduction/presentation/pages/introduction.d.ts.map +1 -1
  228. package/lib/typescript/src/modules/introduction/presentation/pages/introduction_footer.d.ts +5 -1
  229. package/lib/typescript/src/modules/introduction/presentation/pages/introduction_footer.d.ts.map +1 -1
  230. package/lib/typescript/src/modules/introduction/presentation/pages/introduction_page.d.ts.map +1 -1
  231. package/lib/typescript/src/modules/profile/presentation/pages/profile_page_avatar.d.ts.map +1 -1
  232. package/lib/typescript/src/modules/profile/presentation/pages/profile_page_contacts.d.ts.map +1 -1
  233. package/lib/typescript/src/modules/profile/presentation/pages/profile_page_contacts_actions.d.ts.map +1 -1
  234. package/lib/typescript/src/modules/qrcode/presentation/pages/qrcode_alias_page.d.ts.map +1 -1
  235. package/lib/typescript/src/modules/qrcode/presentation/pages/qrcode_alias_page_share.d.ts.map +1 -1
  236. package/lib/typescript/src/modules/search/domain/models/fonctionnalite.d.ts +20 -0
  237. package/lib/typescript/src/modules/search/domain/models/fonctionnalite.d.ts.map +1 -1
  238. package/lib/typescript/src/modules/search/presentation/pages/search_btn_widget.d.ts +11 -0
  239. package/lib/typescript/src/modules/search/presentation/pages/search_btn_widget.d.ts.map +1 -0
  240. package/lib/typescript/src/modules/search/presentation/pages/search_fonctionnalites.d.ts.map +1 -1
  241. package/lib/typescript/src/modules/search/presentation/pages/search_page.d.ts.map +1 -1
  242. package/lib/typescript/src/modules/subscription/presentation/pages/subscription_create/subscription_create_page.d.ts.map +1 -1
  243. package/lib/typescript/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page.d.ts.map +1 -1
  244. package/lib/typescript/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_actions.d.ts.map +1 -1
  245. package/lib/typescript/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.d.ts +2 -2
  246. package/lib/typescript/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.d.ts.map +1 -1
  247. package/lib/typescript/src/modules/subscription/presentation/pages/subscription_menu_widget.d.ts.map +1 -1
  248. package/lib/typescript/src/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.d.ts.map +1 -1
  249. package/lib/typescript/src/modules/transactions/infra/transaction_output_remote.d.ts.map +1 -1
  250. package/lib/typescript/src/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.d.ts.map +1 -1
  251. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions.d.ts.map +1 -1
  252. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_cancel.d.ts.map +1 -1
  253. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_return.d.ts.map +1 -1
  254. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.d.ts +4 -1
  255. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.d.ts.map +1 -1
  256. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.d.ts +17 -0
  257. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.d.ts.map +1 -0
  258. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.d.ts +6 -2
  259. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.d.ts.map +1 -1
  260. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.d.ts +4 -0
  261. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.d.ts.map +1 -1
  262. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.d.ts.map +1 -1
  263. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.d.ts.map +1 -1
  264. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.d.ts.map +1 -1
  265. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_recents/transaction_recents_nombre_widget.d.ts.map +1 -1
  266. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions.d.ts.map +1 -1
  267. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions_reject.d.ts.map +1 -1
  268. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page.d.ts.map +1 -1
  269. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.d.ts.map +1 -1
  270. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.d.ts.map +1 -1
  271. package/lib/typescript/src/shared/widgets/alias_widget.d.ts +2 -2
  272. package/lib/typescript/src/shared/widgets/alias_widget.d.ts.map +1 -1
  273. package/lib/typescript/src/shared/widgets/auth_code_field.d.ts +17 -0
  274. package/lib/typescript/src/shared/widgets/auth_code_field.d.ts.map +1 -0
  275. package/lib/typescript/src/shared/widgets/calendar_date_picker.d.ts.map +1 -1
  276. package/lib/typescript/src/shared/widgets/confirm_action_sheet_widget.d.ts +16 -2
  277. package/lib/typescript/src/shared/widgets/confirm_action_sheet_widget.d.ts.map +1 -1
  278. package/lib/typescript/src/shared/widgets/emoji_select_widget.d.ts.map +1 -1
  279. package/lib/typescript/src/shared/widgets/frequence_input_widget.d.ts +6 -3
  280. package/lib/typescript/src/shared/widgets/frequence_input_widget.d.ts.map +1 -1
  281. package/lib/typescript/src/shared/widgets/frequence_select_widget.d.ts +23 -5
  282. package/lib/typescript/src/shared/widgets/frequence_select_widget.d.ts.map +1 -1
  283. package/lib/typescript/src/shared/widgets/image_select_widget.d.ts +6 -4
  284. package/lib/typescript/src/shared/widgets/image_select_widget.d.ts.map +1 -1
  285. package/lib/typescript/src/shared/widgets/input_text.d.ts +2 -0
  286. package/lib/typescript/src/shared/widgets/input_text.d.ts.map +1 -1
  287. package/lib/typescript/src/shared/widgets/notification_dialog.d.ts +5 -3
  288. package/lib/typescript/src/shared/widgets/notification_dialog.d.ts.map +1 -1
  289. package/lib/typescript/src/shared/widgets/pin_entete.d.ts +15 -0
  290. package/lib/typescript/src/shared/widgets/pin_entete.d.ts.map +1 -0
  291. package/lib/typescript/src/shared/widgets/select_date_widget.d.ts +4 -0
  292. package/lib/typescript/src/shared/widgets/select_date_widget.d.ts.map +1 -1
  293. package/lib/typescript/src/shared/widgets/selection.d.ts +74 -3
  294. package/lib/typescript/src/shared/widgets/selection.d.ts.map +1 -1
  295. package/package.json +1 -1
  296. package/src/core/api.ts +11 -2
  297. package/src/l10n/app_localizations.ts +75 -11
  298. package/src/l10n/app_localizations_en.ts +40 -8
  299. package/src/l10n/app_localizations_fr.ts +46 -14
  300. package/src/l10n/app_localizations_pt.ts +39 -7
  301. package/src/modules/alias/domain/models/alias_revendication.ts +4 -2
  302. package/src/modules/alias/infra/alias_output_local.ts +11 -0
  303. package/src/modules/alias/infra/alias_output_repository.ts +9 -8
  304. package/src/modules/alias/presentation/pages/alias_delete_btn_widget.tsx +17 -24
  305. package/src/modules/alias/presentation/pages/alias_page_claim.tsx +76 -48
  306. package/src/modules/alias/presentation/pages/alias_page_create_mbno_form.tsx +113 -65
  307. package/src/modules/alias/presentation/pages/alias_page_create_mbno_timer.tsx +34 -25
  308. package/src/modules/alias/presentation/pages/alias_page_create_options.tsx +29 -36
  309. package/src/modules/alias/presentation/pages/alias_page_otp.tsx +24 -88
  310. package/src/modules/categorie/domain/services/categorie_service.ts +2 -1
  311. package/src/modules/categorie/presentation/pages/categorie_edit_icon_btn.tsx +58 -50
  312. package/src/modules/categorie/presentation/pages/categorie_form_pages.tsx +71 -41
  313. package/src/modules/categorie/presentation/pages/categorie_icon.tsx +26 -0
  314. package/src/modules/categorie/presentation/pages/categorie_liste_widget.tsx +45 -24
  315. package/src/modules/categorie/presentation/pages/categorie_select_page.tsx +10 -46
  316. package/src/modules/categorie/presentation/pages/categorie_select_widget.tsx +54 -13
  317. package/src/modules/config/domain/models/config_keys.ts +3 -0
  318. package/src/modules/contacts/domain/contact_pi.ts +3 -6
  319. package/src/modules/contacts/presentation/bloc/contact_bloc.ts +37 -20
  320. package/src/modules/contacts/presentation/pages/contact_actions_sheet.tsx +69 -0
  321. package/src/modules/contacts/presentation/pages/contact_list_alias_widget.tsx +26 -4
  322. package/src/modules/contacts/presentation/pages/contact_list_phone_widget.tsx +3 -0
  323. package/src/modules/contacts/presentation/pages/contact_list_widget_item.tsx +54 -65
  324. package/src/modules/contacts/presentation/pages/contact_section.tsx +13 -3
  325. package/src/modules/contacts/presentation/pages/contact_select_page.tsx +106 -74
  326. package/src/modules/contacts/presentation/pages/create/contact_create_page.tsx +86 -47
  327. package/src/modules/home/presentation/pages/home_page.tsx +2 -9
  328. package/src/modules/introduction/presentation/pages/introduction.tsx +8 -0
  329. package/src/modules/introduction/presentation/pages/introduction_footer.tsx +16 -36
  330. package/src/modules/introduction/presentation/pages/introduction_page.tsx +17 -5
  331. package/src/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.tsx +2 -2
  332. package/src/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications_son.tsx +1 -1
  333. package/src/modules/profile/presentation/pages/profile_page_avatar.tsx +6 -12
  334. package/src/modules/profile/presentation/pages/profile_page_contacts.tsx +12 -20
  335. package/src/modules/profile/presentation/pages/profile_page_contacts_actions.tsx +120 -117
  336. package/src/modules/qrcode/presentation/pages/qrcode_alias_page.tsx +0 -1
  337. package/src/modules/qrcode/presentation/pages/qrcode_alias_page_share.tsx +32 -40
  338. package/src/modules/search/domain/models/fonctionnalite.ts +56 -0
  339. package/src/modules/search/presentation/pages/search_btn_widget.tsx +91 -0
  340. package/src/modules/search/presentation/pages/search_fonctionnalites.ts +21 -1
  341. package/src/modules/search/presentation/pages/search_page.tsx +166 -57
  342. package/src/modules/subscription/presentation/pages/subscription_create/subscription_create_page.tsx +4 -2
  343. package/src/modules/subscription/presentation/pages/subscription_create/subscription_create_page_list.tsx +5 -5
  344. package/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page.tsx +0 -1
  345. package/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_actions.tsx +0 -1
  346. package/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.tsx +20 -59
  347. package/src/modules/subscription/presentation/pages/subscription_list/subscription_list_empty_widget.tsx +1 -1
  348. package/src/modules/subscription/presentation/pages/subscription_list/subscription_list_widget.tsx +1 -1
  349. package/src/modules/subscription/presentation/pages/subscription_menu_widget.tsx +25 -39
  350. package/src/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.ts +1 -2
  351. package/src/modules/transactions/infra/transaction_output_remote.ts +6 -1
  352. package/src/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.ts +17 -0
  353. package/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions.tsx +0 -1
  354. package/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_cancel.tsx +39 -41
  355. package/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_return.tsx +41 -46
  356. package/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_ticket.tsx +46 -40
  357. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.tsx +26 -17
  358. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.tsx +92 -0
  359. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.tsx +48 -94
  360. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page.tsx +20 -2
  361. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.tsx +6 -8
  362. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.tsx +9 -22
  363. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.tsx +5 -7
  364. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.tsx +112 -104
  365. package/src/modules/transactions/presentation/pages/transaction_recents/transaction_recents_nombre_widget.tsx +49 -42
  366. package/src/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.tsx +1 -1
  367. package/src/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions.tsx +0 -1
  368. package/src/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions_reject.tsx +47 -48
  369. package/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page.tsx +6 -10
  370. package/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.tsx +3 -6
  371. package/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.tsx +5 -5
  372. package/src/shared/widgets/alias_widget.tsx +45 -18
  373. package/src/shared/widgets/auth_code_field.tsx +89 -0
  374. package/src/shared/widgets/calendar_date_picker.tsx +12 -11
  375. package/src/shared/widgets/confirm_action_sheet_widget.tsx +49 -35
  376. package/src/shared/widgets/emoji_select_widget.tsx +31 -29
  377. package/src/shared/widgets/frequence_input_widget.tsx +18 -24
  378. package/src/shared/widgets/frequence_select_widget.tsx +237 -117
  379. package/src/shared/widgets/image_select_widget.tsx +46 -61
  380. package/src/shared/widgets/input_text.tsx +3 -0
  381. package/src/shared/widgets/notification_dialog.tsx +70 -71
  382. package/src/shared/widgets/pin_entete.tsx +74 -0
  383. package/src/shared/widgets/select_date_widget.tsx +66 -34
  384. package/src/shared/widgets/selection.tsx +304 -5
  385. package/lib/module/modules/transactions/presentation/pages/transaction_details/sheet_box.js +0 -47
  386. package/lib/module/modules/transactions/presentation/pages/transaction_details/sheet_box.js.map +0 -1
  387. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/sheet_box.d.ts +0 -10
  388. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/sheet_box.d.ts.map +0 -1
  389. package/src/modules/transactions/presentation/pages/transaction_details/sheet_box.tsx +0 -30
@@ -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),
@@ -1,8 +1,9 @@
1
1
  /* eslint-disable @typescript-eslint/no-require-imports */
2
2
  import { MaterialIcons } from '@expo/vector-icons';
3
+ import { Image } from 'expo-image';
3
4
  import { createAudioPlayer, type AudioPlayer } from 'expo-audio';
4
5
  import { ExpoSpeechRecognitionModule, useSpeechRecognitionEvent } from 'expo-speech-recognition';
5
- import { useEffect, useMemo, useRef, useState } from 'react';
6
+ import { useEffect, useMemo, useRef, useState, type ReactNode } from 'react';
6
7
  import { Keyboard, Platform, Pressable, ScrollView, StyleSheet, Text, TextInput, View } from 'react-native';
7
8
 
8
9
  import { AppRouter, useAppRouter } from '../../../../core/router';
@@ -12,9 +13,8 @@ import { useAppLocalizations } from '../../../../l10n/localizations';
12
13
  import { Card } from '../../../../shared/material/card';
13
14
  import { AppBar, Scaffold } from '../../../../shared/material/scaffold';
14
15
  import { CustomSnackBar } from '../../../../shared/widgets/custom_snack_bar';
15
- import { MenuActionItem, MenuActionsWidget } from '../../../../shared/widgets/menu_actions_widget';
16
- import { MyPageContainer } from '../../../../shared/widgets/my_page_container';
17
- import { Fonctionnalite } from '../../domain/models/fonctionnalite';
16
+ import { withAlpha } from '../../../../shared/utils/color';
17
+ import { Fonctionnalite, FonctionnaliteRubrique } from '../../domain/models/fonctionnalite';
18
18
  import { SearchPageVoiceButton } from './search_page_voice_button';
19
19
 
20
20
  /**
@@ -214,55 +214,151 @@ export function SearchPage({
214
214
  const resultats = Fonctionnalite.rechercher(fonctionnalites, recherche);
215
215
  const voixActive = ecoute || annonce;
216
216
 
217
- /** Ligne de résultat : ferme la recherche en renvoyant [item]. */
218
- const ligne = (item: Fonctionnalite) =>
219
- new MenuActionItem(item.icon, item.titre, item.sousTitre, () => AppRouter.pop(router, { value: item }), {
220
- iconSize: 20,
221
- trailing: (
222
- <MaterialIcons
223
- name={Platform.OS === 'ios' ? 'arrow-forward-ios' : 'arrow-forward'}
224
- size={16}
225
- color={Themer.neural03Color}
226
- />
227
- ),
217
+ const primaire = theme.colorScheme.primary;
218
+ const saisie = recherche.trim().length > 0;
219
+ const [focus, setFocus] = useState(false);
220
+ const actif = focus || voixActive;
221
+ const fermer = (item: Fonctionnalite) => AppRouter.pop(router, { value: item });
222
+
223
+ /** [texte] avec les parties qui correspondent à la saisie en gras, de la couleur principale. */
224
+ const surligner = (texte: string) => {
225
+ const parties = Fonctionnalite.correspondances(texte, recherche);
226
+ if (parties.length === 0) return texte;
227
+ const morceaux: ReactNode[] = [];
228
+ let position = 0;
229
+ parties.forEach(([debut, fin], i) => {
230
+ if (debut > position) morceaux.push(texte.substring(position, debut));
231
+ morceaux.push(
232
+ <Text key={i} style={[styles.gras, { color: primaire }]}>
233
+ {texte.substring(debut, fin)}
234
+ </Text>,
235
+ );
236
+ position = fin;
228
237
  });
238
+ if (position < texte.length) morceaux.push(texte.substring(position));
239
+ return morceaux;
240
+ };
241
+
242
+ /** Ligne de fonctionnalité : pastille, titre (partie trouvée en gras), sous-titre ; ferme la recherche en renvoyant [item]. */
243
+ const ligne = (item: Fonctionnalite) => (
244
+ <Pressable
245
+ key={item.titre}
246
+ accessibilityRole="button"
247
+ onPress={() => fermer(item)}
248
+ style={({ pressed }) => [styles.ligne, pressed ? { backgroundColor: theme.colorScheme.secondary } : null]}
249
+ >
250
+ <View style={[styles.pastille, { backgroundColor: withAlpha(primaire, 0.1) }]}>
251
+ <Image source={item.icon} style={styles.pastilleIcone} tintColor={primaire} contentFit="contain" />
252
+ </View>
253
+ <View style={styles.textes}>
254
+ <Text numberOfLines={2} style={[theme.textTheme.displayLarge, styles.titreLigne]}>
255
+ {surligner(item.titre)}
256
+ </Text>
257
+ {item.sousTitre != null && item.sousTitre.length > 0 && (
258
+ <Text numberOfLines={2} style={[theme.textTheme.displaySmall, { color: Themer.neural03Color }]}>
259
+ {item.sousTitre}
260
+ </Text>
261
+ )}
262
+ </View>
263
+ <MaterialIcons name={Platform.OS === 'ios' ? 'arrow-forward-ios' : 'arrow-forward'} size={16} color={Themer.neural03Color} />
264
+ </Pressable>
265
+ );
266
+
267
+ /** Liste de fonctionnalités dans une carte */
268
+ const liste = (items: Fonctionnalite[]) => (
269
+ <Card style={styles.carte}>
270
+ <View style={styles.carteContenu}>{items.map(ligne)}</View>
271
+ </Card>
272
+ );
273
+
274
+ /** Titre de rubrique */
275
+ const titre = (texte: string) => (
276
+ <Text style={[theme.textTheme.displayMedium, styles.titreRubrique, { color: Themer.neural03Color }]}>{texte}</Text>
277
+ );
278
+
279
+ /** Avant toute saisie : raccourcis en pastilles, puis toutes les fonctionnalités groupées par rubrique. */
280
+ const accueil = () => {
281
+ const raccourcis = fonctionnalites.filter((item) => item.raccourci);
282
+ const libelles: Record<FonctionnaliteRubrique, string> = {
283
+ [FonctionnaliteRubrique.paiements]: traductions.searchRubriquePaiements,
284
+ [FonctionnaliteRubrique.abonnements]: traductions.searchRubriqueAbonnements,
285
+ [FonctionnaliteRubrique.servicesBancaires]: traductions.searchRubriqueServicesBancaires,
286
+ [FonctionnaliteRubrique.profil]: traductions.searchRubriqueProfil,
287
+ };
288
+ return (
289
+ <>
290
+ {raccourcis.length > 0 && (
291
+ <>
292
+ {titre(traductions.searchShortcutsTitle)}
293
+ <View style={styles.raccourcis}>
294
+ {raccourcis.map((item) => (
295
+ <Pressable
296
+ key={item.titre}
297
+ accessibilityRole="button"
298
+ onPress={() => fermer(item)}
299
+ style={({ pressed }) => [
300
+ styles.raccourci,
301
+ { backgroundColor: withAlpha(primaire, pressed ? 0.16 : 0.08), borderColor: withAlpha(primaire, 0.15) },
302
+ ]}
303
+ >
304
+ <Image source={item.icon} style={styles.raccourciIcone} tintColor={primaire} contentFit="contain" />
305
+ <Text style={[theme.textTheme.displayMedium, styles.raccourciTexte]}>{item.titre}</Text>
306
+ </Pressable>
307
+ ))}
308
+ </View>
309
+ <View style={styles.gap24} />
310
+ </>
311
+ )}
312
+ {Object.values(FonctionnaliteRubrique).map((rubrique) => {
313
+ const items = fonctionnalites.filter((item) => item.rubrique === rubrique);
314
+ if (items.length === 0) return null;
315
+ return (
316
+ <View key={rubrique}>
317
+ {titre(libelles[rubrique])}
318
+ {liste(items)}
319
+ <View style={styles.gap24} />
320
+ </View>
321
+ );
322
+ })}
323
+ </>
324
+ );
325
+ };
229
326
 
230
327
  return (
231
328
  <Scaffold
232
329
  appBar={
233
330
  <AppBar
234
- title={<Text style={theme.textTheme.headlineMedium}>{traductions.searchTitle}</Text>}
235
331
  onBack={() => AppRouter.pop(router)}
236
- />
237
- }
238
- >
239
- <MyPageContainer>
240
- <Pressable accessible={false} style={styles.flex} onPress={Keyboard.dismiss}>
241
- <View style={styles.gap10} />
242
- {/* Champ de recherche : loupe à gauche ; à droite, la croix pour effacer (hors voix) et le bouton micro */}
243
- <Card>
244
- <View style={[styles.champ, { backgroundColor: theme.inputDecorationTheme.fillColor }]}>
245
- <MaterialIcons name="search" size={18} color={Themer.neural03Color} />
332
+ centerTitle={false}
333
+ title={
334
+ // Champ de recherche à la place du titre : loupe à gauche ; à droite, la croix pour effacer (hors voix) et le bouton micro
335
+ <View
336
+ style={[
337
+ styles.champ,
338
+ {
339
+ backgroundColor: theme.cardColor,
340
+ borderColor: actif ? primaire : withAlpha(Themer.neural03Color, 0.2),
341
+ borderWidth: actif ? 1.5 : 1,
342
+ },
343
+ ]}
344
+ >
345
+ <MaterialIcons name="search" size={20} color={actif ? primaire : Themer.neural03Color} />
246
346
  <TextInput
247
347
  value={recherche}
248
348
  onChangeText={setRecherche}
249
349
  autoFocus
350
+ onFocus={() => setFocus(true)}
351
+ onBlur={() => setFocus(false)}
250
352
  style={[theme.textTheme.displayLarge, styles.input]}
251
353
  // Le texte d'aide suit l'état de la voix.
252
354
  placeholder={
253
- annonce
254
- ? traductions.searchVoicePrompt
255
- : ecoute
256
- ? traductions.searchVoiceListening
257
- : traductions.searchHint
355
+ annonce ? traductions.searchVoicePrompt : ecoute ? traductions.searchVoiceListening : traductions.searchTitle
258
356
  }
259
357
  placeholderTextColor={Themer.neural03Color}
260
358
  returnKeyType="search"
261
359
  // « Entrée » ouvre le résultat le plus pertinent.
262
360
  onSubmitEditing={() => {
263
- if (recherche.trim().length > 0 && resultats.length > 0) {
264
- AppRouter.pop(router, { value: resultats[0] });
265
- }
361
+ if (saisie && resultats.length > 0) fermer(resultats[0]);
266
362
  }}
267
363
  />
268
364
  {recherche.length > 0 && !voixActive && (
@@ -277,38 +373,51 @@ export function SearchPage({
277
373
  onPress={() => void basculerEcoute()}
278
374
  />
279
375
  </View>
280
- </Card>
281
- <View style={styles.gap16} />
282
- <View style={styles.flex}>
283
- {resultats.length === 0 ? (
284
- <View style={styles.vide}>
285
- <MaterialIcons name="search-off" size={40} color={Themer.neural03Color} />
286
- <View style={styles.gap12} />
287
- <Text style={[theme.textTheme.displayMedium, styles.centre, { color: Themer.neural04Color }]}>
288
- {traductions.searchEmpty(recherche.trim())}
289
- </Text>
290
- </View>
291
- ) : (
292
- <ScrollView keyboardShouldPersistTaps="handled" contentContainerStyle={styles.liste}>
293
- <MenuActionsWidget items={resultats.map(ligne)} />
294
- </ScrollView>
295
- )}
376
+ }
377
+ />
378
+ }
379
+ >
380
+ <Pressable accessible={false} style={styles.flex} onPress={Keyboard.dismiss}>
381
+ {saisie && resultats.length === 0 ? (
382
+ <View style={styles.vide}>
383
+ <MaterialIcons name="search-off" size={40} color={Themer.neural03Color} />
384
+ <View style={styles.gap12} />
385
+ <Text style={[theme.textTheme.displayMedium, styles.centre, { color: Themer.neural04Color }]}>
386
+ {traductions.searchEmpty(recherche.trim())}
387
+ </Text>
296
388
  </View>
297
- </Pressable>
298
- </MyPageContainer>
389
+ ) : (
390
+ <ScrollView keyboardShouldPersistTaps="handled" contentContainerStyle={styles.liste}>
391
+ {/* Avant toute saisie : raccourcis puis rubriques */}
392
+ {saisie ? liste(resultats) : accueil()}
393
+ </ScrollView>
394
+ )}
395
+ </Pressable>
299
396
  </Scaffold>
300
397
  );
301
398
  }
302
399
 
303
400
  const styles = StyleSheet.create({
304
401
  flex: { flex: 1 },
305
- gap10: { height: 10 },
306
402
  gap12: { height: 12 },
307
- gap16: { height: 16 },
308
- champ: { height: 40, flexDirection: 'row', alignItems: 'center', paddingLeft: 12, paddingRight: 4 },
403
+ gap24: { height: 24 },
404
+ champ: { alignSelf: 'stretch', height: 48, borderRadius: 14, flexDirection: 'row', alignItems: 'center', paddingLeft: 12, paddingRight: 4 },
309
405
  input: { flex: 1, marginLeft: 8, paddingVertical: 0 },
310
406
  effacer: { paddingHorizontal: 6 },
311
- vide: { paddingTop: 32, alignItems: 'center' },
407
+ vide: { paddingTop: 32, paddingHorizontal: 20, alignItems: 'center' },
312
408
  centre: { textAlign: 'center' },
313
- liste: { paddingBottom: 20 },
409
+ liste: { paddingHorizontal: 20, paddingTop: 12, paddingBottom: 20 },
410
+ titreRubrique: { fontWeight: '700', paddingHorizontal: 4, paddingBottom: 10 },
411
+ raccourcis: { flexDirection: 'row', flexWrap: 'wrap', gap: 8 },
412
+ raccourci: { flexDirection: 'row', alignItems: 'center', paddingLeft: 12, paddingRight: 14, paddingVertical: 9, borderRadius: 999, borderWidth: 1 },
413
+ raccourciIcone: { width: 18, height: 18 },
414
+ raccourciTexte: { marginLeft: 8, fontWeight: '600' },
415
+ carte: { margin: 0 },
416
+ carteContenu: { padding: 6 },
417
+ ligne: { flexDirection: 'row', alignItems: 'center', paddingHorizontal: 8, paddingVertical: 10, borderRadius: 14 },
418
+ pastille: { width: 40, height: 40, borderRadius: 12, alignItems: 'center', justifyContent: 'center' },
419
+ pastilleIcone: { width: 20, height: 20 },
420
+ textes: { flex: 1, marginHorizontal: 14 },
421
+ titreLigne: { fontWeight: '500' },
422
+ gras: { fontWeight: '800' },
314
423
  });
@@ -5,7 +5,7 @@ import { useBloc, useBlocListener } from '../../../../../core/bloc_react';
5
5
  import { Di } from '../../../../../core/di';
6
6
  import { AppRouter, useAppRouter } from '../../../../../core/router';
7
7
  import { showModalBottomSheet } from '../../../../../shared/material/overlays';
8
- import { AppBar, Scaffold } from '../../../../../shared/material/scaffold';
8
+ import { Scaffold } from '../../../../../shared/material/scaffold';
9
9
  import { Frequence, FrequenceCommand } from '../../../../../shared/models/frequence_command';
10
10
  import { CustomLoadingDialog } from '../../../../../shared/widgets/loading_page';
11
11
  import { MyPageContainer } from '../../../../../shared/widgets/my_page_container';
@@ -25,6 +25,8 @@ import { TransactionSendPageError } from '../../../../transactions/presentation/
25
25
  import { TransactionSendPageSuccess } from '../../../../transactions/presentation/pages/transaction_send/transaction_send_page_succes';
26
26
  import { Subscription } from '../../../domain/models/subscription';
27
27
  import { SubscriptionCreatePageList } from './subscription_create_page_list';
28
+ import { useAppLocalizations } from '../../../../../l10n/localizations';
29
+ import { ProfileAppBar } from '../../../../profile/presentation/pages/profile_app_bar';
28
30
 
29
31
  /** Souscrire à un abonnement à partir d'un paiement passé (route `subscriptionSubscribe`) */
30
32
  export function SubscriptionCreatePage() {
@@ -92,7 +94,7 @@ export function SubscriptionCreatePage() {
92
94
  };
93
95
 
94
96
  return (
95
- <Scaffold appBar={<AppBar onBack={() => AppRouter.pop(router)} />}>
97
+ <Scaffold appBar={<ProfileAppBar titre={useAppLocalizations().subscriptionMenuSubscribeTitle} />}>
96
98
  <MyPageContainer>
97
99
  <View style={styles.flex}>
98
100
  <SubscriptionCreatePageList selectTransaction={selectTransaction} />
@@ -3,7 +3,7 @@ import { StyleSheet, Text, View } from 'react-native';
3
3
 
4
4
  import { BlocProvider, useCreateBloc } from '../../../../../core/bloc_react';
5
5
  import { Di } from '../../../../../core/di';
6
- import { useTheme } from '../../../../../core/theme';
6
+ import { Themer, useTheme } from '../../../../../core/theme';
7
7
  import { useAppLocalizations } from '../../../../../l10n/localizations';
8
8
  import { TransactionSens, type Transaction } from '../../../../transactions/domain/models/transaction';
9
9
  import { TransactionSearchCommand } from '../../../../transactions/domain/models/transaction_search/transaction_search_command';
@@ -33,11 +33,11 @@ export function SubscriptionCreatePageList({ selectTransaction }: { selectTransa
33
33
  return (
34
34
  <BlocProvider blocs={[searchBloc]}>
35
35
  <View style={styles.flex}>
36
- {/* Titre */}
37
- <Text style={theme.textTheme.titleSmall}>{traductions.subscriptionMenuSubscribeTitle}</Text>
36
+ {/* Sous-titre (titre dans la barre du haut) */}
38
37
  <View style={styles.gap8} />
39
- {/* Sous-titre */}
40
- <Text style={theme.textTheme.displaySmall}>{traductions.subscriptionMenuSubscribeSubtitle2}</Text>
38
+ <Text style={[theme.textTheme.displaySmall, { color: Themer.neural03Color }]}>
39
+ {traductions.subscriptionMenuSubscribeSubtitle2}
40
+ </Text>
41
41
  <View style={styles.gap16} />
42
42
  {/* Liste des transactions */}
43
43
  <TransactionSearchPageListe
@@ -116,7 +116,6 @@ export function SubscriptionDetailsPage({
116
116
 
117
117
  const editNote = async () => {
118
118
  const value = await showModalBottomSheet<string>(router, {
119
- themed: true,
120
119
  builder: () => <SubscriptionDetailsPageNoteSheet note={subscription.motif} />,
121
120
  });
122
121
  if (value != null && value !== subscription.motif) bloc.add(new SubscriptionDetailsNoteUpdateEvent(value));
@@ -25,7 +25,6 @@ import { SubscriptionAction, SubscriptionDetailsPageActionsConfirm } from './sub
25
25
 
26
26
  function confirm(router: SdkRouter, action: SubscriptionAction, subscription: Subscription): Promise<boolean | undefined> {
27
27
  return showModalBottomSheet<boolean>(router, {
28
- themed: true,
29
28
  builder: () => <SubscriptionDetailsPageActionsConfirm action={action} isSubcription={subscription.frequence != null} />,
30
29
  });
31
30
  }
@@ -1,13 +1,11 @@
1
- import { useEffect, useRef, useState } from 'react';
2
- import { Animated, Easing, Keyboard, Pressable, ScrollView, StyleSheet, Text, useWindowDimensions, View } from 'react-native';
3
- import { useSafeAreaInsets } from 'react-native-safe-area-context';
1
+ import { useState } from 'react';
2
+ import { Keyboard, ScrollView, StyleSheet, View } from 'react-native';
4
3
 
5
4
  import { AppRouter, useAppRouter } from '../../../../../core/router';
6
- import { useTheme } from '../../../../../core/theme';
7
5
  import { useAppLocalizations } from '../../../../../l10n/localizations';
8
6
  import { ElevatedButton } from '../../../../../shared/material/buttons';
9
7
  import { CustomTextMultipleInput } from '../../../../../shared/widgets/input_text_multiple';
10
- import { MyPageContainer } from '../../../../../shared/widgets/my_page_container';
8
+ import { SelectionSheet } from '../../../../../shared/widgets/selection';
11
9
  import {
12
10
  TransactionSendCommandMotif,
13
11
  TransactionSendCommandMotifError,
@@ -15,35 +13,15 @@ import {
15
13
 
16
14
  /**
17
15
  * Modifier la note de l'abonnement (feuille du bas, se ferme avec la
18
- * nouvelle note). Comme le `AnimatedContainer` Flutter, la feuille prend
19
- * 70 % de l'écran quand le champ a le focus, sa hauteur naturelle sinon.
16
+ * nouvelle note). La note défile, Enregistrer reste visible au-dessus du
17
+ * clavier.
20
18
  */
21
19
  export function SubscriptionDetailsPageNoteSheet({ note }: { note?: string | null }) {
22
20
  const traductions = useAppLocalizations();
23
- const theme = useTheme();
24
21
  const router = useAppRouter();
25
- const insets = useSafeAreaInsets();
26
- const { height: screenHeight } = useWindowDimensions();
27
- const maxHeight = screenHeight * 0.7;
28
22
 
29
23
  const [command] = useState(() => new TransactionSendCommandMotif({ value: note ?? undefined }));
30
24
  const [, setVersion] = useState(0);
31
- const [focused, setFocused] = useState(false);
32
- const [contentHeight, setContentHeight] = useState<number | null>(null);
33
- const height = useRef(new Animated.Value(0)).current;
34
- const measured = useRef(false);
35
-
36
- const naturalHeight = contentHeight == null ? 0 : Math.min(contentHeight, maxHeight);
37
- useEffect(() => {
38
- if (contentHeight == null) return;
39
- const target = focused ? maxHeight : naturalHeight;
40
- if (!measured.current) {
41
- measured.current = true;
42
- height.setValue(target);
43
- return;
44
- }
45
- Animated.timing(height, { toValue: target, duration: 300, easing: Easing.inOut(Easing.ease), useNativeDriver: false }).start();
46
- }, [focused, contentHeight, naturalHeight, maxHeight, height]);
47
25
 
48
26
  const canSave = command.value != null && command.value.length > 0 && command.isValid() && command.value !== note;
49
27
 
@@ -53,52 +31,35 @@ export function SubscriptionDetailsPageNoteSheet({ note }: { note?: string | nul
53
31
  };
54
32
 
55
33
  return (
56
- <Animated.View
57
- style={[
58
- styles.box,
59
- { backgroundColor: theme.colorScheme.surface, maxHeight },
60
- contentHeight != null ? { height } : null,
61
- ]}
62
- >
63
- {/* Avant la mesure du contenu, la feuille prend sa hauteur naturelle (pas de flex) */}
64
- <Pressable style={contentHeight != null ? styles.flex : null} onPress={Keyboard.dismiss} accessible={false}>
65
- <MyPageContainer style={contentHeight != null ? null : styles.noFlex}>
66
- <ScrollView
67
- keyboardShouldPersistTaps="handled"
68
- onContentSizeChange={(_w, h) => setContentHeight(h)}
69
- contentContainerStyle={[styles.content, { paddingBottom: 20 + insets.bottom }]}
70
- >
71
- {/* Titre */}
72
- <Text style={theme.textTheme.headlineLarge}>{traductions.transactionFormMotifLabel}</Text>
73
- <View style={styles.gap15} />
34
+ <SelectionSheet
35
+ titre={traductions.transactionFormMotifLabel}
36
+ contenu={
37
+ <>
38
+ <ScrollView keyboardShouldPersistTaps="handled" style={styles.defile} contentContainerStyle={styles.content}>
74
39
  <CustomTextMultipleInput
75
40
  defaultValue={note ?? undefined}
76
41
  labelText={traductions.transactionFormMotifHint}
77
42
  // Message d'erreur à afficher
78
43
  messageError={command.error === TransactionSendCommandMotifError.invalid ? traductions.transactionFormMotifInvalid : null}
79
- onFocusChange={setFocused}
80
44
  onChange={(value) => {
81
45
  command.value = value;
82
46
  command.isValid();
83
47
  setVersion((v) => v + 1);
84
48
  }}
85
49
  />
86
- {/* Bouton */}
87
- <View style={styles.btn}>
88
- <ElevatedButton onPress={canSave ? () => saveNote(command.value!) : undefined}>{traductions.btnTextSave}</ElevatedButton>
89
- </View>
90
50
  </ScrollView>
91
- </MyPageContainer>
92
- </Pressable>
93
- </Animated.View>
51
+ {/* Enregistrer, toujours visible au-dessus du clavier */}
52
+ <View style={styles.btn}>
53
+ <ElevatedButton onPress={canSave ? () => saveNote(command.value!) : undefined}>{traductions.btnTextSave}</ElevatedButton>
54
+ </View>
55
+ </>
56
+ }
57
+ />
94
58
  );
95
59
  }
96
60
 
97
61
  const styles = StyleSheet.create({
98
- flex: { flex: 1 },
99
- noFlex: { flex: 0 },
100
- box: { borderTopLeftRadius: 20, borderTopRightRadius: 20, overflow: 'hidden' },
101
- content: { paddingTop: 20 },
102
- gap15: { height: 15 },
103
- btn: { paddingVertical: 16 },
62
+ defile: { flexShrink: 1 },
63
+ content: { paddingHorizontal: 20, paddingTop: 8, paddingBottom: 16 },
64
+ btn: { paddingHorizontal: 20, paddingBottom: 12 },
104
65
  });
@@ -29,7 +29,7 @@ export function SubscriptionListEmptyWidget() {
29
29
  <Text style={[theme.textTheme.displaySmall, styles.flex]}>{traductions.subscriptionEmptySubTitle}</Text>
30
30
  <ElevatedButton
31
31
  style={styles.btn}
32
- onPress={() => void showModalBottomSheet(router, { themed: true, builder: () => <SubscriptionMenuWidget /> })}
32
+ onPress={() => void showModalBottomSheet(router, { builder: () => <SubscriptionMenuWidget /> })}
33
33
  >
34
34
  {traductions.subscriptionEmptyBtnCreate}
35
35
  </ElevatedButton>
@@ -36,7 +36,7 @@ export function SubscriptionListWidget() {
36
36
  if (state instanceof SubscriptionListLoadingState) return <SubscriptionListLoadingWidget />;
37
37
 
38
38
  const { subscriptions, paiementProgramme } = state;
39
- const openMenu = () => void showModalBottomSheet(router, { themed: true, builder: () => <SubscriptionMenuWidget /> });
39
+ const openMenu = () => void showModalBottomSheet(router, { builder: () => <SubscriptionMenuWidget /> });
40
40
 
41
41
  const section = (title: string, liste: Subscription[], createFn: () => void) => (
42
42
  <View>