@pi-spi/app 1.3.1 → 1.4.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 (155) hide show
  1. package/README.md +28 -5
  2. package/assets/icons/qr.png +0 -0
  3. package/assets/sounds/voice/search_prompt_en.mp3 +0 -0
  4. package/assets/sounds/voice/search_prompt_fr.mp3 +0 -0
  5. package/assets/sounds/voice/search_prompt_pt.mp3 +0 -0
  6. package/example/app.json +9 -1
  7. package/lib/module/core/assets.js +1 -0
  8. package/lib/module/core/assets.js.map +1 -1
  9. package/lib/module/core/router.js +3 -0
  10. package/lib/module/core/router.js.map +1 -1
  11. package/lib/module/core/routes.js +14 -0
  12. package/lib/module/core/routes.js.map +1 -1
  13. package/lib/module/core/storage.js +27 -29
  14. package/lib/module/core/storage.js.map +1 -1
  15. package/lib/module/l10n/app_localizations.js.map +1 -1
  16. package/lib/module/l10n/app_localizations_en.js +21 -1
  17. package/lib/module/l10n/app_localizations_en.js.map +1 -1
  18. package/lib/module/l10n/app_localizations_fr.js +21 -1
  19. package/lib/module/l10n/app_localizations_fr.js.map +1 -1
  20. package/lib/module/l10n/app_localizations_pt.js +21 -1
  21. package/lib/module/l10n/app_localizations_pt.js.map +1 -1
  22. package/lib/module/modules/alias/presentation/pages/alias_page_create_options.js +3 -3
  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.map +1 -1
  25. package/lib/module/modules/categorie/presentation/pages/categorie_edit_icon_btn.js +2 -2
  26. package/lib/module/modules/categorie/presentation/pages/categorie_edit_icon_btn.js.map +1 -1
  27. package/lib/module/modules/categorie/presentation/pages/categorie_select_widget.js +12 -10
  28. package/lib/module/modules/categorie/presentation/pages/categorie_select_widget.js.map +1 -1
  29. package/lib/module/modules/compte/presentation/pages/solde_widget_with_qr.js +14 -9
  30. package/lib/module/modules/compte/presentation/pages/solde_widget_with_qr.js.map +1 -1
  31. package/lib/module/modules/home/presentation/pages/home_page.js +41 -2
  32. package/lib/module/modules/home/presentation/pages/home_page.js.map +1 -1
  33. package/lib/module/modules/home/presentation/pages/home_tab_compte_more_menu.js +2 -2
  34. package/lib/module/modules/home/presentation/pages/home_tab_compte_more_menu.js.map +1 -1
  35. package/lib/module/modules/notification/presentation/bloc/notification_bloc.js +11 -4
  36. package/lib/module/modules/notification/presentation/bloc/notification_bloc.js.map +1 -1
  37. package/lib/module/modules/notification/presentation/bloc/notification_state.js +7 -1
  38. package/lib/module/modules/notification/presentation/bloc/notification_state.js.map +1 -1
  39. package/lib/module/modules/notification/presentation/pages/notification_page_liste.js +6 -2
  40. package/lib/module/modules/notification/presentation/pages/notification_page_liste.js.map +1 -1
  41. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.js +2 -2
  42. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.js.map +1 -1
  43. package/lib/module/modules/profile/presentation/pages/web/profile_web_page.js.map +1 -1
  44. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page.js.map +1 -1
  45. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page_share.js +2 -2
  46. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page_share.js.map +1 -1
  47. package/lib/module/modules/search/domain/models/fonctionnalite.js +199 -0
  48. package/lib/module/modules/search/domain/models/fonctionnalite.js.map +1 -0
  49. package/lib/module/modules/search/presentation/pages/search_fonctionnalites.js +119 -0
  50. package/lib/module/modules/search/presentation/pages/search_fonctionnalites.js.map +1 -0
  51. package/lib/module/modules/search/presentation/pages/search_page.js +359 -0
  52. package/lib/module/modules/search/presentation/pages/search_page.js.map +1 -0
  53. package/lib/module/modules/search/presentation/pages/search_page_voice_button.js +335 -0
  54. package/lib/module/modules/search/presentation/pages/search_page_voice_button.js.map +1 -0
  55. package/lib/module/modules/subscription/presentation/pages/subscription_menu_widget.js +2 -2
  56. package/lib/module/modules/subscription/presentation/pages/subscription_menu_widget.js.map +1 -1
  57. package/lib/module/modules/transactions/presentation/bloc/transaction_search/transaction_search_bloc.js +13 -1
  58. package/lib/module/modules/transactions/presentation/bloc/transaction_search/transaction_search_bloc.js.map +1 -1
  59. package/lib/module/modules/transactions/presentation/bloc/transaction_search/transaction_search_state.js +7 -1
  60. package/lib/module/modules/transactions/presentation/bloc/transaction_search/transaction_search_state.js.map +1 -1
  61. package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page_filters.js +216 -137
  62. package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page_filters.js.map +1 -1
  63. package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page_liste.js +6 -2
  64. package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page_liste.js.map +1 -1
  65. package/lib/module/modules/transactions/presentation/pages/transaction_send/transaction_send_page_options.js +3 -3
  66. package/lib/module/modules/transactions/presentation/pages/transaction_send/transaction_send_page_options.js.map +1 -1
  67. package/lib/module/shared/widgets/amount_widget.js +4 -1
  68. package/lib/module/shared/widgets/amount_widget.js.map +1 -1
  69. package/lib/module/shared/widgets/input_amount.js.map +1 -1
  70. package/lib/module/shared/widgets/input_text.js +2 -0
  71. package/lib/module/shared/widgets/input_text.js.map +1 -1
  72. package/lib/module/shared/widgets/menu_actions_widget.js +10 -1
  73. package/lib/module/shared/widgets/menu_actions_widget.js.map +1 -1
  74. package/lib/module/shared/widgets/pagination_loader_widget.js +29 -0
  75. package/lib/module/shared/widgets/pagination_loader_widget.js.map +1 -0
  76. package/lib/typescript/src/core/assets.d.ts +1 -0
  77. package/lib/typescript/src/core/assets.d.ts.map +1 -1
  78. package/lib/typescript/src/core/router.d.ts +1 -0
  79. package/lib/typescript/src/core/router.d.ts.map +1 -1
  80. package/lib/typescript/src/core/routes.d.ts.map +1 -1
  81. package/lib/typescript/src/core/storage.d.ts +11 -3
  82. package/lib/typescript/src/core/storage.d.ts.map +1 -1
  83. package/lib/typescript/src/l10n/app_localizations.d.ts +40 -0
  84. package/lib/typescript/src/l10n/app_localizations.d.ts.map +1 -1
  85. package/lib/typescript/src/l10n/app_localizations_en.d.ts.map +1 -1
  86. package/lib/typescript/src/l10n/app_localizations_fr.d.ts.map +1 -1
  87. package/lib/typescript/src/l10n/app_localizations_pt.d.ts.map +1 -1
  88. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_select_widget.d.ts.map +1 -1
  89. package/lib/typescript/src/modules/compte/presentation/pages/solde_widget_with_qr.d.ts.map +1 -1
  90. package/lib/typescript/src/modules/home/presentation/pages/home_page.d.ts.map +1 -1
  91. package/lib/typescript/src/modules/notification/presentation/bloc/notification_bloc.d.ts.map +1 -1
  92. package/lib/typescript/src/modules/notification/presentation/bloc/notification_state.d.ts +5 -0
  93. package/lib/typescript/src/modules/notification/presentation/bloc/notification_state.d.ts.map +1 -1
  94. package/lib/typescript/src/modules/notification/presentation/pages/notification_page_liste.d.ts.map +1 -1
  95. package/lib/typescript/src/modules/profile/presentation/pages/web/profile_web_page.d.ts.map +1 -1
  96. package/lib/typescript/src/modules/search/domain/models/fonctionnalite.d.ts +70 -0
  97. package/lib/typescript/src/modules/search/domain/models/fonctionnalite.d.ts.map +1 -0
  98. package/lib/typescript/src/modules/search/presentation/pages/search_fonctionnalites.d.ts +21 -0
  99. package/lib/typescript/src/modules/search/presentation/pages/search_fonctionnalites.d.ts.map +1 -0
  100. package/lib/typescript/src/modules/search/presentation/pages/search_page.d.ts +21 -0
  101. package/lib/typescript/src/modules/search/presentation/pages/search_page.d.ts.map +1 -0
  102. package/lib/typescript/src/modules/search/presentation/pages/search_page_voice_button.d.ts +29 -0
  103. package/lib/typescript/src/modules/search/presentation/pages/search_page_voice_button.d.ts.map +1 -0
  104. package/lib/typescript/src/modules/transactions/presentation/bloc/transaction_search/transaction_search_bloc.d.ts.map +1 -1
  105. package/lib/typescript/src/modules/transactions/presentation/bloc/transaction_search/transaction_search_state.d.ts +5 -0
  106. package/lib/typescript/src/modules/transactions/presentation/bloc/transaction_search/transaction_search_state.d.ts.map +1 -1
  107. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_filters.d.ts +5 -1
  108. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_filters.d.ts.map +1 -1
  109. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_liste.d.ts.map +1 -1
  110. package/lib/typescript/src/shared/widgets/amount_widget.d.ts +3 -1
  111. package/lib/typescript/src/shared/widgets/amount_widget.d.ts.map +1 -1
  112. package/lib/typescript/src/shared/widgets/input_text.d.ts +3 -3
  113. package/lib/typescript/src/shared/widgets/input_text.d.ts.map +1 -1
  114. package/lib/typescript/src/shared/widgets/menu_actions_widget.d.ts +5 -1
  115. package/lib/typescript/src/shared/widgets/menu_actions_widget.d.ts.map +1 -1
  116. package/lib/typescript/src/shared/widgets/pagination_loader_widget.d.ts +7 -0
  117. package/lib/typescript/src/shared/widgets/pagination_loader_widget.d.ts.map +1 -0
  118. package/package.json +49 -35
  119. package/src/core/assets.ts +1 -0
  120. package/src/core/router.tsx +3 -0
  121. package/src/core/routes.tsx +15 -0
  122. package/src/core/storage.ts +30 -22
  123. package/src/l10n/app_localizations.ts +40 -0
  124. package/src/l10n/app_localizations_en.ts +20 -0
  125. package/src/l10n/app_localizations_fr.ts +20 -0
  126. package/src/l10n/app_localizations_pt.ts +20 -0
  127. package/src/modules/alias/presentation/pages/alias_page_create_options.tsx +3 -3
  128. package/src/modules/alias/presentation/pages/alias_page_otp.tsx +2 -2
  129. package/src/modules/categorie/presentation/pages/categorie_edit_icon_btn.tsx +2 -2
  130. package/src/modules/categorie/presentation/pages/categorie_select_widget.tsx +13 -9
  131. package/src/modules/compte/presentation/pages/solde_widget_with_qr.tsx +10 -3
  132. package/src/modules/home/presentation/pages/home_page.tsx +31 -2
  133. package/src/modules/home/presentation/pages/home_tab_compte_more_menu.tsx +2 -2
  134. package/src/modules/notification/presentation/bloc/notification_bloc.ts +12 -3
  135. package/src/modules/notification/presentation/bloc/notification_state.ts +11 -1
  136. package/src/modules/notification/presentation/pages/notification_page_liste.tsx +4 -1
  137. package/src/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.tsx +2 -2
  138. package/src/modules/profile/presentation/pages/web/profile_web_page.tsx +3 -2
  139. package/src/modules/qrcode/presentation/pages/qrcode_alias_page.tsx +2 -2
  140. package/src/modules/qrcode/presentation/pages/qrcode_alias_page_share.tsx +2 -2
  141. package/src/modules/search/domain/models/fonctionnalite.ts +217 -0
  142. package/src/modules/search/presentation/pages/search_fonctionnalites.ts +135 -0
  143. package/src/modules/search/presentation/pages/search_page.tsx +314 -0
  144. package/src/modules/search/presentation/pages/search_page_voice_button.tsx +283 -0
  145. package/src/modules/subscription/presentation/pages/subscription_menu_widget.tsx +2 -2
  146. package/src/modules/transactions/presentation/bloc/transaction_search/transaction_search_bloc.ts +15 -1
  147. package/src/modules/transactions/presentation/bloc/transaction_search/transaction_search_state.ts +10 -1
  148. package/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_filters.tsx +204 -101
  149. package/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_liste.tsx +4 -1
  150. package/src/modules/transactions/presentation/pages/transaction_send/transaction_send_page_options.tsx +3 -3
  151. package/src/shared/widgets/amount_widget.tsx +5 -2
  152. package/src/shared/widgets/input_amount.tsx +2 -2
  153. package/src/shared/widgets/input_text.tsx +8 -3
  154. package/src/shared/widgets/menu_actions_widget.tsx +8 -2
  155. package/src/shared/widgets/pagination_loader_widget.tsx +24 -0
@@ -1 +1 @@
1
- {"version":3,"file":"categorie_select_widget.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/categorie/presentation/pages/categorie_select_widget.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAA+B,CAAC;AAI1D,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,EACpC,kBAAkB,EAClB,kBAAkB,GACnB,EAAE;IACD,kBAAkB,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrE,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B,+BAqBA"}
1
+ {"version":3,"file":"categorie_select_widget.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/categorie/presentation/pages/categorie_select_widget.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAA+B,CAAC;AAI1D,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,EACpC,kBAAkB,EAClB,kBAAkB,GACnB,EAAE;IACD,kBAAkB,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrE,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B,+BAyBA"}
@@ -1 +1 @@
1
- {"version":3,"file":"solde_widget_with_qr.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/compte/presentation/pages/solde_widget_with_qr.tsx"],"names":[],"mappings":"AAkCA;;;;GAIG;AACH,wBAAgB,iBAAiB,gCAqBhC;AAsKD,wBAAgB,iBAAiB,gCAkDhC"}
1
+ {"version":3,"file":"solde_widget_with_qr.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/compte/presentation/pages/solde_widget_with_qr.tsx"],"names":[],"mappings":"AAkCA;;;;GAIG;AACH,wBAAgB,iBAAiB,gCAqBhC;AA4KD,wBAAgB,iBAAiB,gCAkDhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"home_page.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/home/presentation/pages/home_page.tsx"],"names":[],"mappings":"AAkCA,iEAAiE;AACjE,wBAAgB,QAAQ,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,+BA4HjE"}
1
+ {"version":3,"file":"home_page.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/home/presentation/pages/home_page.tsx"],"names":[],"mappings":"AAqCA,iEAAiE;AACjE,wBAAgB,QAAQ,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,+BAoJjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"notification_bloc.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/notification/presentation/bloc/notification_bloc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,0BAAuB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAAyB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qDAAkD,CAAC;AAMpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8CAA2C,CAAC;AAEvF,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,yBAAsB,CAAC;AAC9B,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,yBAAsB,CAAC;AAmB9B,qBAAa,gBAAiB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAO5E,QAAQ,CAAC,sBAAsB,EAAE,qBAAqB;IACtD,QAAQ,CAAC,WAAW,EAAE,WAAW;IAPnC,QAAQ,CAAC,MAAM,SAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAc;IAC7D,+EAA+E;IAC/E,OAAO,CAAC,UAAU,CAAS;gBAGhB,sBAAsB,EAAE,qBAAqB,EAC7C,WAAW,EAAE,WAAW;IAgD1B,KAAK,IAAI,IAAI;YAKR,OAAO;YASP,MAAM;IA4BpB,kDAAkD;YACpC,MAAM;IA6Bd,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAS9B,UAAU;CA0BzB"}
1
+ {"version":3,"file":"notification_bloc.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/notification/presentation/bloc/notification_bloc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,0BAAuB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAAyB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qDAAkD,CAAC;AAMpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8CAA2C,CAAC;AAEvF,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,yBAAsB,CAAC;AAC9B,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,yBAAsB,CAAC;AAmB9B,qBAAa,gBAAiB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAO5E,QAAQ,CAAC,sBAAsB,EAAE,qBAAqB;IACtD,QAAQ,CAAC,WAAW,EAAE,WAAW;IAPnC,QAAQ,CAAC,MAAM,SAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAc;IAC7D,+EAA+E;IAC/E,OAAO,CAAC,UAAU,CAAS;gBAGhB,sBAAsB,EAAE,qBAAqB,EAC7C,WAAW,EAAE,WAAW;IAgD1B,KAAK,IAAI,IAAI;YAKR,OAAO;YASP,MAAM;IA4BpB,kDAAkD;YACpC,MAAM;IAkCd,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAS9B,UAAU;CA8BzB"}
@@ -11,6 +11,11 @@ export declare abstract class NotificationState {
11
11
  count: number, command: NotificationSearchCommand);
12
12
  }
13
13
  export declare class NotificationInitialState extends NotificationState {
14
+ /** true pendant le chargement de la page suivante : un petit loader est affiché en bas de la liste. */
15
+ readonly isPaginating: boolean;
16
+ constructor(notifications: NotificationListe, count: number, command: NotificationSearchCommand,
17
+ /** true pendant le chargement de la page suivante : un petit loader est affiché en bas de la liste. */
18
+ isPaginating?: boolean);
14
19
  }
15
20
  export declare class NotificationLoadingState extends NotificationState {
16
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"notification_state.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/notification/presentation/bloc/notification_state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAAwC,CAAC;AAChF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oDAAiD,CAAC;AAEjG,8BAAsB,iBAAiB;IAE5B,aAAa,EAAE,iBAAiB;IACvC,uCAAuC;IAChC,KAAK,EAAE,MAAM;IACpB,QAAQ,CAAC,OAAO,EAAE,yBAAyB;gBAHpC,aAAa,EAAE,iBAAiB;IACvC,uCAAuC;IAChC,KAAK,EAAE,MAAM,EACX,OAAO,EAAE,yBAAyB;CAE9C;AAED,qBAAa,wBAAyB,SAAQ,iBAAiB;CAAG;AAElE,qBAAa,wBAAyB,SAAQ,iBAAiB;CAAG;AAElE,qBAAa,0BAA2B,SAAQ,iBAAiB;IAK7D,QAAQ,CAAC,KAAK,EAAE,yBAAyB;gBAHzC,aAAa,EAAE,iBAAiB,EAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB,EACzB,KAAK,EAAE,yBAAyB;CAI5C;AAED,qBAAa,sBAAuB,SAAQ,iBAAiB;IAKzD,QAAQ,CAAC,KAAK,EAAE,yBAAyB;gBAHzC,aAAa,EAAE,iBAAiB,EAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB,EACzB,KAAK,EAAE,yBAAyB;CAI5C"}
1
+ {"version":3,"file":"notification_state.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/notification/presentation/bloc/notification_state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAAwC,CAAC;AAChF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oDAAiD,CAAC;AAEjG,8BAAsB,iBAAiB;IAE5B,aAAa,EAAE,iBAAiB;IACvC,uCAAuC;IAChC,KAAK,EAAE,MAAM;IACpB,QAAQ,CAAC,OAAO,EAAE,yBAAyB;gBAHpC,aAAa,EAAE,iBAAiB;IACvC,uCAAuC;IAChC,KAAK,EAAE,MAAM,EACX,OAAO,EAAE,yBAAyB;CAE9C;AAED,qBAAa,wBAAyB,SAAQ,iBAAiB;IAK3D,uGAAuG;IACvG,QAAQ,CAAC,YAAY;gBAJrB,aAAa,EAAE,iBAAiB,EAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB;IAClC,uGAAuG;IAC9F,YAAY,UAAQ;CAIhC;AAED,qBAAa,wBAAyB,SAAQ,iBAAiB;CAAG;AAElE,qBAAa,0BAA2B,SAAQ,iBAAiB;IAK7D,QAAQ,CAAC,KAAK,EAAE,yBAAyB;gBAHzC,aAAa,EAAE,iBAAiB,EAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB,EACzB,KAAK,EAAE,yBAAyB;CAI5C;AAED,qBAAa,sBAAuB,SAAQ,iBAAiB;IAKzD,QAAQ,CAAC,KAAK,EAAE,yBAAyB;gBAHzC,aAAa,EAAE,iBAAiB,EAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB,EACzB,KAAK,EAAE,yBAAyB;CAI5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"notification_page_liste.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/notification/presentation/pages/notification_page_liste.tsx"],"names":[],"mappings":"AAgBA,+FAA+F;AAC/F,wBAAgB,qBAAqB,gCAyDpC"}
1
+ {"version":3,"file":"notification_page_liste.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/notification/presentation/pages/notification_page_liste.tsx"],"names":[],"mappings":"AAiBA,+FAA+F;AAC/F,wBAAgB,qBAAqB,gCA2DpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"profile_web_page.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/profile/presentation/pages/web/profile_web_page.tsx"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,+BAkDtD"}
1
+ {"version":3,"file":"profile_web_page.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/profile/presentation/pages/web/profile_web_page.tsx"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,+BAmDtD"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Une fonctionnalité de l'application que l'utilisateur peut retrouver
3
+ * depuis la recherche.
4
+ *
5
+ * La recherche ignore les majuscules, les accents et la ponctuation :
6
+ * « Sécurité », « securite » et « SECURITÉ » donnent le même résultat.
7
+ */
8
+ export declare class Fonctionnalite {
9
+ /** Icône (module Metro, voir `Images`). */
10
+ readonly icon: number;
11
+ /** Libellé affiché, déjà traduit. C'est le champ le plus pertinent. */
12
+ readonly titre: string;
13
+ /** Courte description affichée sous le titre, déjà traduite. */
14
+ readonly sousTitre?: string;
15
+ /**
16
+ * Synonymes non affichés, dans toutes les langues de l'application.
17
+ * Ils doivent être écrits sans accents (voir {@link Fonctionnalite.normaliser}).
18
+ */
19
+ readonly motsCles: readonly string[];
20
+ /**
21
+ * Ouvre la fonctionnalité. Appelé par la page appelante une fois la
22
+ * recherche fermée, jamais par la page de recherche elle-même.
23
+ */
24
+ readonly ouvrir: () => void;
25
+ constructor(options: {
26
+ icon: number;
27
+ titre: string;
28
+ sousTitre?: string;
29
+ motsCles?: readonly string[];
30
+ ouvrir: () => void;
31
+ });
32
+ /**
33
+ * Met [texte] en minuscules sans accents, et remplace tout ce qui
34
+ * n'est ni lettre ni chiffre par un seul espace.
35
+ * Exemple : « Code QR — Scanner ! » devient « code qr scanner ».
36
+ */
37
+ static normaliser(texte: string): string;
38
+ /** Mots normalisés de [texte], sans les vides. */
39
+ private static mots;
40
+ /**
41
+ * Mots utiles de la saisie. Si elle ne contient que des mots courants
42
+ * (« de » en cours de frappe de « demander »), ils sont tous gardés.
43
+ */
44
+ private static motsUtiles;
45
+ /**
46
+ * Qualité de la correspondance entre un mot [saisi] et un [mot] de la
47
+ * fonctionnalité, 0 s'ils ne correspondent pas :
48
+ * - 3 : mots identiques ;
49
+ * - 2 : [mot] commence par [saisi] (frappe en cours : « envo » trouve
50
+ * « envoi »), ou l'inverse pour un [mot] d'au moins 4 lettres
51
+ * (pluriel : « abonnements » trouve « abonnement ») ;
52
+ * - 1 : une seule faute de frappe, sur des mots d'au moins 5 lettres
53
+ * (« securiter », « abonement »).
54
+ */
55
+ private static qualite;
56
+ /**
57
+ * Nombre de mots de la saisie trouvés dans la fonctionnalité, et points
58
+ * cumulés (qualité de la correspondance × poids du champ, la meilleure
59
+ * pour chaque mot saisi).
60
+ */
61
+ private score;
62
+ /**
63
+ * Fonctionnalités de [catalogue] dont au moins un mot utile de
64
+ * [recherche] est trouvé, triées par nombre de mots trouvés puis par
65
+ * points. À égalité, l'ordre du catalogue est conservé.
66
+ * Une saisie vide renvoie tout le catalogue.
67
+ */
68
+ static rechercher(catalogue: readonly Fonctionnalite[], recherche: string): Fonctionnalite[];
69
+ }
70
+ //# sourceMappingURL=fonctionnalite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fonctionnalite.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/search/domain/models/fonctionnalite.ts"],"names":[],"mappings":"AAgCA;;;;;;GAMG;AACH,qBAAa,cAAc;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,uEAAuE;IACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,gEAAgE;IAChE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAErC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;gBAEhB,OAAO,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;KACpB;IAQD;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAQxC,kDAAkD;IAClD,OAAO,CAAC,MAAM,CAAC,IAAI;IAMnB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO;IAQtB;;;;OAIG;IACH,OAAO,CAAC,KAAK;IAuBb;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE;CAS7F"}
@@ -0,0 +1,21 @@
1
+ import { type SdkRouter } from '../../../../core/router.js';
2
+ import type { AppLocalizations } from '../../../../l10n/app_localizations.js';
3
+ import { Fonctionnalite } from '../../domain/models/fonctionnalite.js';
4
+ /**
5
+ * Catalogue des fonctionnalités accessibles depuis la recherche.
6
+ *
7
+ * [router] est celui de la page qui ouvre la recherche : la navigation
8
+ * part de là une fois la recherche fermée.
9
+ * [ouvrirOnglet] change d'onglet sur l'accueil (0 : compte, 1 : abonnements).
10
+ * Seules les pages présentes dans le SDK sont proposées (pas de
11
+ * sécurité ni d'à-propos : c'est l'app hôte qui les gère).
12
+ *
13
+ * L'ordre de la liste sert d'ordre d'affichage à pertinence égale :
14
+ * les fonctionnalités les plus utilisées sont en tête.
15
+ * Pour en ajouter une : titre et sous-titre traduits, mots-clés sans
16
+ * accents en français, anglais et portugais.
17
+ */
18
+ export declare function fonctionnalitesRecherchables(router: SdkRouter, traductions: AppLocalizations, { ouvrirOnglet }: {
19
+ ouvrirOnglet: (onglet: number) => void;
20
+ }): Fonctionnalite[];
21
+ //# sourceMappingURL=search_fonctionnalites.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search_fonctionnalites.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/search/presentation/pages/search_fonctionnalites.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,4BAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAoC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAoC,CAAC;AAEpE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,gBAAgB,EAC7B,EAAE,YAAY,EAAE,EAAE;IAAE,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAC3D,cAAc,EAAE,CA6GlB"}
@@ -0,0 +1,21 @@
1
+ import { Fonctionnalite } from '../../domain/models/fonctionnalite.js';
2
+ /**
3
+ * Recherche dans les fonctionnalités de l'application.
4
+ *
5
+ * La recherche se fait au clavier ou à la voix (bouton micro du champ).
6
+ * La page ne navigue pas elle-même : elle se ferme en renvoyant la
7
+ * [Fonctionnalite] choisie à la page appelante, qui l'ouvre. Ainsi le
8
+ * retour depuis la fonctionnalité ramène à l'accueil, pas à la recherche.
9
+ *
10
+ * Recherche vocale, dans l'ordre :
11
+ * 1. premier appui : demande de la permission micro ;
12
+ * 2. voix off « Dites-moi ce que vous souhaitez faire » dans la langue
13
+ * de l'app ; un nouvel appui la coupe et passe directement à l'écoute ;
14
+ * 3. écoute : le texte reconnu remplit le champ au fil de la parole ;
15
+ * un appui l'arrête, sinon elle s'arrête seule après un silence.
16
+ */
17
+ export declare function SearchPage({ fonctionnalites, }: {
18
+ /** Catalogue dans lequel chercher, construit par la page appelante (voir `fonctionnalitesRecherchables`). */
19
+ fonctionnalites: Fonctionnalite[];
20
+ }): import("react").JSX.Element;
21
+ //# sourceMappingURL=search_page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search_page.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/search/presentation/pages/search_page.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAoC,CAAC;AAapE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,EACzB,eAAe,GAChB,EAAE;IACD,6GAA6G;IAC7G,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC,+BA2PA"}
@@ -0,0 +1,29 @@
1
+ import type { ValueNotifier } from '../../../../core/value_notifier.js';
2
+ /**
3
+ * Bouton micro de la recherche.
4
+ *
5
+ * Trois états visuels :
6
+ * - repos : micro coloré sur un disque teinté, pour se distinguer des
7
+ * autres icônes du champ. À l'ouverture, deux pulsations douces
8
+ * signalent qu'il est utilisable ;
9
+ * - actif ([ecoute]) : disque plein qui grossit avec un léger rebond,
10
+ * et trois ondes qui en partent en continu ;
11
+ * - appui : le bouton s'enfonce légèrement, avec une vibration (Android).
12
+ *
13
+ * Les ondes et l'invitation sont coupées si le téléphone demande de
14
+ * réduire les animations (accessibilité) ; seul le changement d'état
15
+ * du disque reste visible.
16
+ */
17
+ export declare function SearchPageVoiceButton({ ecoute, niveau, onPress, tooltip, }: {
18
+ /** La voix est active (voix off ou écoute) : le bouton est « allumé ». */
19
+ ecoute: boolean;
20
+ /**
21
+ * Volume de la voix de 0 (silence) à 1 (voix forte) : plus il est
22
+ * haut, plus le disque grossit et plus les ondes s'éloignent.
23
+ */
24
+ niveau: ValueNotifier<number>;
25
+ onPress: () => void;
26
+ /** Libellé du lecteur d'écran. */
27
+ tooltip?: string;
28
+ }): import("react").JSX.Element;
29
+ //# sourceMappingURL=search_page_voice_button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search_page_voice_button.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/search/presentation/pages/search_page_voice_button.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAiC,CAAC;AAiBrE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,GACR,EAAE;IACD,0EAA0E;IAC1E,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,+BA6LA"}
@@ -1 +1 @@
1
- {"version":3,"file":"transaction_search_bloc.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/bloc/transaction_search/transaction_search_bloc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,6BAA0B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA4B,CAAC;AAMpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gDAA6C,CAAC;AACxF,OAAO,EAA8D,KAAK,sBAAsB,EAAE,MAAM,+BAA4B,CAAC;AACrI,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,+BAA4B,CAAC;AAEpC,2FAA2F;AAC3F,qBAAa,qBAAsB,SAAQ,IAAI,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAGjF,QAAQ,CAAC,qBAAqB,EAAE,oBAAoB;IAFhE,QAAQ,CAAC,MAAM,SAAgB;gBAEV,qBAAqB,EAAE,oBAAoB;IAgBhE,kDAAkD;IAClD,OAAO,CAAC,MAAM;IAcd,iDAAiD;YACnC,MAAM;IAwBpB,iBAAiB;YACH,UAAU;CAazB"}
1
+ {"version":3,"file":"transaction_search_bloc.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/bloc/transaction_search/transaction_search_bloc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,6BAA0B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA4B,CAAC;AAMpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gDAA6C,CAAC;AACxF,OAAO,EAA8D,KAAK,sBAAsB,EAAE,MAAM,+BAA4B,CAAC;AACrI,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,+BAA4B,CAAC;AAEpC,2FAA2F;AAC3F,qBAAa,qBAAsB,SAAQ,IAAI,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAGjF,QAAQ,CAAC,qBAAqB,EAAE,oBAAoB;IAFhE,QAAQ,CAAC,MAAM,SAAgB;gBAEV,qBAAqB,EAAE,oBAAoB;IAgBhE,kDAAkD;IAClD,OAAO,CAAC,MAAM;IAcd,iDAAiD;YACnC,MAAM;IA6BpB,iBAAiB;YACH,UAAU;CAsBzB"}
@@ -10,5 +10,10 @@ export declare class TransactionSearchInitialState extends TransactionSearchStat
10
10
  export declare class TransactionSearchLoadingState extends TransactionSearchState {
11
11
  }
12
12
  export declare class TransactionSearchListState extends TransactionSearchState {
13
+ /** true pendant le chargement de la page suivante : un petit loader est affiché en bas de la liste. */
14
+ readonly isPaginating: boolean;
15
+ constructor(transactions: TransactionListe, command: TransactionSearchCommand,
16
+ /** true pendant le chargement de la page suivante : un petit loader est affiché en bas de la liste. */
17
+ isPaginating?: boolean);
13
18
  }
14
19
  //# sourceMappingURL=transaction_search_state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction_search_state.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/bloc/transaction_search/transaction_search_state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6CAA0C,CAAC;AACjF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yEAAsE,CAAC;AAErH,8BAAsB,sBAAsB;IAExC,QAAQ,CAAC,YAAY,EAAE,gBAAgB;IACvC,QAAQ,CAAC,OAAO,EAAE,wBAAwB;gBADjC,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,wBAAwB;CAE7C;AAED,qBAAa,6BAA8B,SAAQ,sBAAsB;CAAG;AAE5E,qBAAa,6BAA8B,SAAQ,sBAAsB;CAAG;AAE5E,qBAAa,0BAA2B,SAAQ,sBAAsB;CAAG"}
1
+ {"version":3,"file":"transaction_search_state.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/bloc/transaction_search/transaction_search_state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6CAA0C,CAAC;AACjF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yEAAsE,CAAC;AAErH,8BAAsB,sBAAsB;IAExC,QAAQ,CAAC,YAAY,EAAE,gBAAgB;IACvC,QAAQ,CAAC,OAAO,EAAE,wBAAwB;gBADjC,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,wBAAwB;CAE7C;AAED,qBAAa,6BAA8B,SAAQ,sBAAsB;CAAG;AAE5E,qBAAa,6BAA8B,SAAQ,sBAAsB;CAAG;AAE5E,qBAAa,0BAA2B,SAAQ,sBAAsB;IAIlE,uGAAuG;IACvG,QAAQ,CAAC,YAAY;gBAHrB,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,wBAAwB;IACjC,uGAAuG;IAC9F,YAAY,UAAQ;CAIhC"}
@@ -1,3 +1,7 @@
1
- /** Filtres de la recherche : plage de dates, sens (reçus / payés) et catégories. */
1
+ /**
2
+ * Filtres de la recherche : plage de dates, sens (reçus / envoyés) et
3
+ * catégories. Les choix sont faits sur un brouillon : ils ne sont reportés
4
+ * sur la commande qu'avec « Appliquer ». Fermer la page les abandonne.
5
+ */
2
6
  export declare function TransactionSearchPageFilters(): import("react").JSX.Element;
3
7
  //# sourceMappingURL=transaction_search_page_filters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction_search_page_filters.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_filters.tsx"],"names":[],"mappings":"AAmBA,oFAAoF;AACpF,wBAAgB,4BAA4B,gCAkD3C"}
1
+ {"version":3,"file":"transaction_search_page_filters.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_filters.tsx"],"names":[],"mappings":"AAqBA;;;;GAIG;AACH,wBAAgB,4BAA4B,gCA2F3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"transaction_search_page_liste.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_liste.tsx"],"names":[],"mappings":"AASA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,uCAAoC,CAAC;AAOvF,oEAAoE;AACpE,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC;AAMrG;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,OAAO,UAAO,GAAG,gBAAgB,EAAE,CAmBjG;AAED,wGAAwG;AACxG,wBAAgB,0BAA0B,CAAC,EACzC,MAAM,EACN,aAAa,GACd,EAAE;IACD,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;CAC/B,+BA8DA"}
1
+ {"version":3,"file":"transaction_search_page_liste.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/transactions/presentation/pages/transaction_search/transaction_search_page_liste.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,uCAAoC,CAAC;AAOvF,oEAAoE;AACpE,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC;AAMrG;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,OAAO,UAAO,GAAG,gBAAgB,EAAE,CAmBjG;AAED,wGAAwG;AACxG,wBAAgB,0BAA0B,CAAC,EACzC,MAAM,EACN,aAAa,GACd,EAAE;IACD,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;CAC/B,+BAgEA"}
@@ -6,12 +6,14 @@ export declare function formatMontant(montant: number | null | undefined, locale
6
6
  * langue de l'utilisateur, et en mode flouté si l'utilisateur a masqué
7
7
  * les montants (paramètre `DISPLAY_AMOUNT`).
8
8
  */
9
- export declare function AmountWidget({ montant, sign, prefixText, surfixText, style, numberOfLines, }: {
9
+ export declare function AmountWidget({ montant, sign, prefixText, surfixText, style, numberOfLines, adjustsFontSizeToFit, }: {
10
10
  montant: number | null | undefined;
11
11
  sign?: string;
12
12
  prefixText?: string;
13
13
  surfixText?: string;
14
14
  style?: TextStyle;
15
15
  numberOfLines?: number;
16
+ /** Réduit la police pour que le texte tienne dans la largeur disponible (avec [numberOfLines]). */
17
+ adjustsFontSizeToFit?: boolean;
16
18
  }): import("react").JSX.Element;
17
19
  //# sourceMappingURL=amount_widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"amount_widget.d.ts","sourceRoot":"","sources":["../../../../../src/shared/widgets/amount_widget.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAOtE,mHAAmH;AACnH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAExF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,IAAI,EACJ,UAAU,EACV,UAAU,EACV,KAAK,EACL,aAAa,GACd,EAAE;IACD,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,+BAgCA"}
1
+ {"version":3,"file":"amount_widget.d.ts","sourceRoot":"","sources":["../../../../../src/shared/widgets/amount_widget.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAOtE,mHAAmH;AACnH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAExF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,IAAI,EACJ,UAAU,EACV,UAAU,EACV,KAAK,EACL,aAAa,EACb,oBAAoB,GACrB,EAAE;IACD,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mGAAmG;IACnG,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,+BAgCA"}
@@ -1,5 +1,5 @@
1
- import { type ReactNode } from 'react';
2
- import { TextInput, type KeyboardTypeOptions, type ReturnKeyTypeOptions } from 'react-native';
1
+ import { type ForwardRefExoticComponent, type ReactNode, type RefAttributes } from 'react';
2
+ import { type KeyboardTypeOptions, type ReturnKeyTypeOptions, type TextInputInstance } from 'react-native';
3
3
  export type CustomTextInputProps = {
4
4
  labelText?: string;
5
5
  hintText?: string;
@@ -29,5 +29,5 @@ export type CustomTextInputProps = {
29
29
  * comme un `TextField` Material (le texte d'aide n'apparaît qu'au focus
30
30
  * quand il y a un label), et message d'erreur sous le champ.
31
31
  */
32
- export declare const CustomTextInput: import("react").ForwardRefExoticComponent<CustomTextInputProps & import("react").RefAttributes<TextInput>>;
32
+ export declare const CustomTextInput: ForwardRefExoticComponent<CustomTextInputProps & RefAttributes<TextInputInstance>>;
33
33
  //# sourceMappingURL=input_text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"input_text.d.ts","sourceRoot":"","sources":["../../../../../src/shared/widgets/input_text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,EAAoB,SAAS,EAAQ,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAKtH,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uCAAuC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oDAAoD;IACpD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C,CAAC;AAKF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,4GAsF1B,CAAC"}
1
+ {"version":3,"file":"input_text.d.ts","sourceRoot":"","sources":["../../../../../src/shared/widgets/input_text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,yBAAyB,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AACzH,OAAO,EAAqC,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAK9I,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uCAAuC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oDAAoD;IACpD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C,CAAC;AAKF;;;;;;GAMG;AAGH,eAAO,MAAM,eAAe,EAAE,yBAAyB,CAAC,oBAAoB,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAyF7G,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { ReactNode } from 'react';
1
2
  export declare class MenuActionItem {
2
3
  readonly icon: number;
3
4
  readonly title: string;
@@ -5,13 +6,16 @@ export declare class MenuActionItem {
5
6
  readonly action: () => void;
6
7
  readonly iconSize?: number;
7
8
  readonly color?: string;
9
+ /** Élément affiché à droite de la ligne (ex. une flèche). */
10
+ readonly trailing?: ReactNode;
8
11
  constructor(icon: number, title: string, subtitle: string | null | undefined, action: () => void, options?: {
9
12
  iconSize?: number;
10
13
  color?: string;
14
+ trailing?: ReactNode;
11
15
  });
12
16
  }
13
17
  /** Liste d'actions (icône, titre, sous-titre) dans une carte, comme des `ListTile` Material. */
14
- export declare function MenuActionsWiget({ items }: {
18
+ export declare function MenuActionsWidget({ items }: {
15
19
  items: MenuActionItem[];
16
20
  }): import("react").JSX.Element;
17
21
  //# sourceMappingURL=menu_actions_widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu_actions_widget.d.ts","sourceRoot":"","sources":["../../../../../src/shared/widgets/menu_actions_widget.tsx"],"names":[],"mappings":"AAMA,qBAAa,cAAc;IAKvB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI;IAP7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;gBAGb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,MAAM,EAAE,MAAM,IAAI,EAC3B,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;CAKtD;AAED,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,cAAc,EAAE,CAAA;CAAE,+BA4BtE"}
1
+ {"version":3,"file":"menu_actions_widget.d.ts","sourceRoot":"","sources":["../../../../../src/shared/widgets/menu_actions_widget.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,qBAAa,cAAc;IAOvB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI;IAT7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;gBAGnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,MAAM,EAAE,MAAM,IAAI,EAC3B,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAO;CAM5E;AAED,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,cAAc,EAAE,CAAA;CAAE,+BA6BvE"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Petit loader affiché en bas d'une liste pendant le chargement de la page
3
+ * suivante (pagination). Sur iOS, le loader natif garde sa couleur
4
+ * système ; sur le web et Android, il prend la couleur primaire.
5
+ */
6
+ export declare function PaginationLoaderWidget(): import("react").JSX.Element;
7
+ //# sourceMappingURL=pagination_loader_widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination_loader_widget.d.ts","sourceRoot":"","sources":["../../../../../src/shared/widgets/pagination_loader_widget.tsx"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,sBAAsB,gCAUrC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-spi/app",
3
- "version": "1.3.1",
3
+ "version": "1.4.0",
4
4
  "description": "SDK React Native permettant d'intégrer PI-SPI (transactions, demande d'annulation, retour de fond, demande de paiement, QR Code, gestion des alias, gestion des abonnements, notifications, profil, compte) dans une application mobile existante.",
5
5
  "homepage": "https://github.com/pisfn-sandbox/mobile-app-react-native-sdk.git",
6
6
  "repository": {
@@ -37,8 +37,8 @@
37
37
  "prepare": "npm run gen-l10n && bob build"
38
38
  },
39
39
  "dependencies": {
40
+ "@noble/ciphers": "^2.4.0",
40
41
  "axios": "^1.20.0",
41
- "crypto-js": "^4.2.0",
42
42
  "qrcode": "^1.5.4",
43
43
  "rn-emoji-keyboard": "^1.7.0"
44
44
  },
@@ -47,7 +47,7 @@
47
47
  "@react-native-async-storage/async-storage": ">=2.0.0",
48
48
  "@react-navigation/native": ">=7.0.0",
49
49
  "@react-navigation/native-stack": ">=7.0.0",
50
- "expo": ">=57.0.0",
50
+ "expo": ">=58.0.0",
51
51
  "expo-asset": "*",
52
52
  "expo-audio": "*",
53
53
  "expo-camera": "*",
@@ -63,6 +63,7 @@
63
63
  "expo-print": "*",
64
64
  "expo-secure-store": "*",
65
65
  "expo-sharing": "*",
66
+ "expo-speech-recognition": "*",
66
67
  "expo-video": "*",
67
68
  "react": ">=19.0.0",
68
69
  "react-native": ">=0.80.0",
@@ -75,38 +76,38 @@
75
76
  "devDependencies": {
76
77
  "@expo/vector-icons": "^15.0.2",
77
78
  "@react-native-async-storage/async-storage": "2.2.0",
78
- "@react-navigation/native": "^7.5.0",
79
- "@react-navigation/native-stack": "^7.20.0",
80
- "@types/crypto-js": "^4.2.2",
81
- "@types/jest": "^29.5.14",
79
+ "@react-navigation/native": "^7.5.1",
80
+ "@react-navigation/native-stack": "^7.21.0",
81
+ "@types/jest": "^30.0.0",
82
82
  "@types/node": "^22.20.5",
83
83
  "@types/qrcode": "^1.5.6",
84
- "@types/react": "~19.2.2",
85
- "expo": "~57.0.27",
86
- "expo-audio": "~57.0.5",
87
- "expo-camera": "~57.0.6",
88
- "expo-clipboard": "~57.0.2",
89
- "expo-contacts": "~57.0.6",
90
- "expo-crypto": "~57.0.3",
91
- "expo-file-system": "~57.0.7",
92
- "expo-image": "~57.0.5",
93
- "expo-image-picker": "~57.0.20",
94
- "expo-location": "~57.0.20",
95
- "expo-network": "~57.0.2",
96
- "expo-print": "~57.0.2",
97
- "expo-secure-store": "~57.0.4",
98
- "expo-sharing": "~57.0.22",
99
- "expo-video": "~57.0.5",
100
- "jest": "^29.7.0",
101
- "react": "19.2.3",
102
- "react-native": "0.86.3",
103
- "react-native-builder-bob": "^0.43.1",
104
- "react-native-safe-area-context": "~5.7.0",
105
- "react-native-screens": "~4.26.0",
106
- "react-native-svg": "15.15.4",
107
- "react-native-view-shot": "^5.1.0",
108
- "react-native-webview": "^13.16.1",
109
- "ts-jest": "^29.2.5",
84
+ "@types/react": "~19.3.0",
85
+ "expo": "~58.0.19",
86
+ "expo-audio": "~58.0.10",
87
+ "expo-camera": "~58.0.12",
88
+ "expo-clipboard": "~58.0.4",
89
+ "expo-contacts": "~58.0.9",
90
+ "expo-crypto": "~58.0.7",
91
+ "expo-file-system": "~58.0.11",
92
+ "expo-image": "~58.0.17",
93
+ "expo-image-picker": "~58.0.10",
94
+ "expo-location": "~58.0.19",
95
+ "expo-network": "~58.0.4",
96
+ "expo-print": "~58.0.7",
97
+ "expo-secure-store": "~58.0.2",
98
+ "expo-sharing": "~58.0.20",
99
+ "expo-speech-recognition": "~58.0.0",
100
+ "expo-video": "~58.0.12",
101
+ "jest": "~30.5.2",
102
+ "react": "19.3.0",
103
+ "react-native": "0.88.0",
104
+ "react-native-builder-bob": "^0.44.1",
105
+ "react-native-safe-area-context": "~5.10.1",
106
+ "react-native-screens": "~4.30.0",
107
+ "react-native-svg": "15.16.0",
108
+ "react-native-view-shot": "6.1.1",
109
+ "react-native-webview": "14.0.1",
110
+ "ts-jest": "^29.4.15",
110
111
  "typescript": "~6.0.3"
111
112
  },
112
113
  "react-native-builder-bob": {
@@ -148,7 +149,7 @@
148
149
  "^(expo-contacts|expo-location)$": "<rootDir>/test/stubs/permissions.ts",
149
150
  "\\.(mp4|mp3|png|jpe?g|gif)$": "<rootDir>/test/stubs/empty.ts",
150
151
  "^rn-emoji-keyboard$": "<rootDir>/test/stubs/empty.ts",
151
- "^(@expo/vector-icons|react-native-safe-area-context|expo-audio|expo-image|expo-video|expo-image-picker|expo-file-system|expo-print|expo-sharing|react-native-webview|expo-camera|react-native-view-shot)$": "<rootDir>/test/stubs/empty.ts"
152
+ "^(@expo/vector-icons|react-native-safe-area-context|expo-audio|expo-image|expo-video|expo-image-picker|expo-file-system|expo-print|expo-sharing|react-native-webview|expo-camera|react-native-view-shot|expo-speech-recognition)$": "<rootDir>/test/stubs/empty.ts"
152
153
  },
153
154
  "transform": {
154
155
  "^.+\\.tsx?$": [
@@ -160,7 +161,20 @@
160
161
  "isolatedModules": true
161
162
  }
162
163
  }
164
+ ],
165
+ "^.+\\.jsx?$": [
166
+ "ts-jest",
167
+ {
168
+ "tsconfig": {
169
+ "allowJs": true,
170
+ "esModuleInterop": true,
171
+ "isolatedModules": true
172
+ }
173
+ }
163
174
  ]
164
- }
175
+ },
176
+ "transformIgnorePatterns": [
177
+ "/node_modules/(?!@noble/)"
178
+ ]
165
179
  }
166
180
  }
@@ -77,6 +77,7 @@ export class Images {
77
77
  static readonly arrowDown: number = require('../../assets/icons/arrow_down.png');
78
78
  static readonly homeFooterHome: number = require('../../assets/icons/home_outline.png'); // .svg en Flutter : Metro ne charge pas de SVG sans transformer, la version .png est utilisée.
79
79
  static readonly homeFooterQrcode: number = require('../../assets/icons/qrcode.png');
80
+ static readonly homeFooterQr: number = require('../../assets/icons/qr.png');
80
81
  static readonly homeFooterTransfer: number = require('../../assets/icons/transfer.png');
81
82
  static readonly iconEdit: number = require('../../assets/icons/edit.png');
82
83
  static readonly iconAdd: number = require('../../assets/icons/add.png');
@@ -369,6 +369,9 @@ export class AppRouter {
369
369
  // Home
370
370
  static readonly home = '/home';
371
371
 
372
+ // Recherche
373
+ static readonly search = '/search';
374
+
372
375
  // Première utilisation : introduction puis demande de permission contacts
373
376
  static readonly introduction = '/introduction';
374
377
  static readonly permissions = '/permissions';
@@ -51,6 +51,8 @@ import { HomePage } from '../modules/home/presentation/pages/home_page';
51
51
  import { SelectAccountPage } from '../modules/home/presentation/pages/select_account_page';
52
52
  import { IntroductionPage } from '../modules/introduction/presentation/pages/introduction';
53
53
  import { PermissionsPage } from '../modules/permission/presentation/pages/permissions_page';
54
+ import type { Fonctionnalite } from '../modules/search/domain/models/fonctionnalite';
55
+ import { SearchPage } from '../modules/search/presentation/pages/search_page';
54
56
  import { AliasBloc } from '../modules/alias/presentation/bloc/alias_bloc';
55
57
  import { BlocProvider, useBloc } from './bloc_react';
56
58
  import { CompteAliasStatus } from './compte_alias_status';
@@ -76,6 +78,8 @@ export function appRoutes(): RouteDef[] {
76
78
  ...aliasRoutes(),
77
79
  // Page d'accueil
78
80
  ...homeRoute(),
81
+ // Recherche des fonctionnalités
82
+ ...searchRoute(),
79
83
  // Abonnements (l'onglet de l'accueil ; les autres routes avec leur module)
80
84
  ...subscriptionListRoute(),
81
85
  // Catégories
@@ -93,6 +97,17 @@ export function appRoutes(): RouteDef[] {
93
97
  ];
94
98
  }
95
99
 
100
+ /** RECHERCHE (catalogue construit par la page appelante, voir `fonctionnalitesRecherchables`) */
101
+ function searchRoute(): RouteDef[] {
102
+ return [
103
+ {
104
+ path: AppRouter.search,
105
+ kind: 'page',
106
+ builder: (state) => <SearchPage fonctionnalites={(state.extra as Fonctionnalite[] | undefined) ?? []} />,
107
+ },
108
+ ];
109
+ }
110
+
96
111
  /** NOTIFICATIONS (bloc fourni par la cloche de l'accueil) */
97
112
  function notificationsRoute(): RouteDef[] {
98
113
  return [