kasy-cli 1.21.9 → 1.23.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 (269) hide show
  1. package/lib/commands/add.js +93 -80
  2. package/lib/commands/configure.js +100 -32
  3. package/lib/commands/doctor.js +28 -2
  4. package/lib/commands/new.js +80 -37
  5. package/lib/commands/notifications.js +1 -1
  6. package/lib/commands/remove.js +43 -15
  7. package/lib/commands/run.js +2 -2
  8. package/lib/commands/update.js +2 -2
  9. package/lib/scaffold/CHANGELOG.json +14 -0
  10. package/lib/scaffold/backends/api/generator.js +14 -14
  11. package/lib/scaffold/backends/api/patch/README.md +83 -0
  12. package/lib/scaffold/backends/api/patch/lib/core/data/api/storage_api.dart +1 -1
  13. package/lib/scaffold/backends/api/patch/lib/core/data/entities/user_entity.dart +5 -0
  14. package/lib/scaffold/backends/api/patch/lib/{environnements.dart → environments.dart} +3 -11
  15. package/lib/scaffold/backends/api/patch/lib/features/ai_chat/api/ai_chat_api.dart +108 -0
  16. package/lib/scaffold/backends/api/patch/lib/features/ai_chat/api/ai_chat_conversation_entity.dart +51 -0
  17. package/lib/scaffold/backends/api/patch/lib/features/{llm_chat/api/llm_chat_message_entity.dart → ai_chat/api/ai_chat_message_entity.dart} +5 -5
  18. package/lib/scaffold/backends/api/patch/lib/features/{llm_chat/providers/llm_chat_notifier.dart → ai_chat/providers/ai_chat_notifier.dart} +71 -38
  19. package/lib/scaffold/backends/api/patch/lib/features/authentication/api/authentication_api.dart +2 -2
  20. package/lib/scaffold/backends/api/patch/lib/features/feedbacks/api/feature_request_api.dart +54 -0
  21. package/lib/scaffold/backends/api/patch/lib/features/onboarding/models/user_info.dart +16 -16
  22. package/lib/scaffold/backends/api/patch/lib/features/onboarding/ui/components/onboarding_att_setup.dart +4 -3
  23. package/lib/scaffold/backends/api/patch/lib/features/onboarding/ui/widgets/onboarding_radio_question.dart +38 -28
  24. package/lib/scaffold/backends/api/patch/lib/features/settings/ui/components/admin/admin_users_api.dart +100 -0
  25. package/lib/scaffold/backends/api/patch/lib/features/{subscription → subscriptions}/api/entities/subscription_entity.dart +13 -0
  26. package/lib/scaffold/backends/api/patch/lib/features/subscriptions/api/stripe_backend_api.dart +60 -0
  27. package/lib/scaffold/backends/api/patch/lib/features/{subscription → subscriptions}/api/subscription_api.dart +1 -1
  28. package/lib/scaffold/backends/api/pubspec.yaml.tpl +4 -5
  29. package/lib/scaffold/backends/firebase/deploy.js +87 -13
  30. package/lib/scaffold/backends/firebase/generator.js +5 -5
  31. package/lib/scaffold/backends/firebase/tokens.js +4 -4
  32. package/lib/scaffold/backends/supabase/deploy.js +63 -11
  33. package/lib/scaffold/backends/supabase/edge-functions/admin-list-users/index.ts +149 -0
  34. package/lib/scaffold/backends/supabase/edge-functions/{llm-chat → ai-chat}/index.ts +19 -19
  35. package/lib/scaffold/backends/supabase/edge-functions/revenuecat-webhook/index.ts +2 -0
  36. package/lib/scaffold/backends/supabase/edge-functions/stripe-create-checkout-session/index.ts +123 -0
  37. package/lib/scaffold/backends/supabase/edge-functions/stripe-create-portal-session/index.ts +97 -0
  38. package/lib/scaffold/backends/supabase/edge-functions/stripe-list-prices/index.ts +83 -0
  39. package/lib/scaffold/backends/supabase/edge-functions/stripe-webhook/index.ts +138 -0
  40. package/lib/scaffold/backends/supabase/generator.js +17 -17
  41. package/lib/scaffold/backends/supabase/migrations/20240101000009_ai_messages.sql +50 -0
  42. package/lib/scaffold/backends/supabase/migrations/20240101000012_stripe_customers.sql +36 -0
  43. package/lib/scaffold/backends/supabase/migrations/20240101000013_admin_role.sql +62 -0
  44. package/lib/scaffold/backends/supabase/patch/lib/core/data/entities/user_entity.dart +4 -0
  45. package/lib/scaffold/backends/supabase/patch/lib/{environnements.dart → environments.dart} +3 -13
  46. package/lib/scaffold/backends/supabase/patch/lib/features/ai_chat/api/ai_chat_api.dart +95 -0
  47. package/lib/scaffold/backends/supabase/patch/lib/features/ai_chat/api/ai_chat_conversation_entity.dart +52 -0
  48. package/lib/scaffold/backends/supabase/patch/lib/features/{llm_chat/api/llm_chat_message_entity.dart → ai_chat/api/ai_chat_message_entity.dart} +6 -6
  49. package/lib/scaffold/backends/supabase/patch/lib/features/{llm_chat/providers/llm_chat_notifier.dart → ai_chat/providers/ai_chat_notifier.dart} +63 -35
  50. package/lib/scaffold/backends/supabase/patch/lib/features/authentication/api/authentication_api.dart +1 -1
  51. package/lib/scaffold/backends/supabase/patch/lib/features/feedbacks/api/feature_request_api.dart +46 -0
  52. package/lib/scaffold/backends/supabase/patch/lib/features/onboarding/models/user_info.dart +16 -16
  53. package/lib/scaffold/backends/supabase/patch/lib/features/onboarding/ui/components/onboarding_att_setup.dart +4 -3
  54. package/lib/scaffold/backends/supabase/patch/lib/features/onboarding/ui/widgets/onboarding_radio_question.dart +38 -28
  55. package/lib/scaffold/backends/supabase/patch/lib/features/settings/ui/components/admin/admin_users_api.dart +93 -0
  56. package/lib/scaffold/backends/supabase/patch/lib/features/{subscription → subscriptions}/api/entities/subscription_entity.dart +13 -0
  57. package/lib/scaffold/backends/supabase/patch/lib/features/subscriptions/api/stripe_backend_api.dart +52 -0
  58. package/lib/scaffold/backends/supabase/patch/lib/features/{subscription → subscriptions}/api/subscription_api.dart +1 -1
  59. package/lib/scaffold/backends/supabase/pubspec.yaml.tpl +4 -5
  60. package/lib/scaffold/backends/supabase/tokens.js +3 -3
  61. package/lib/scaffold/catalog.js +9 -11
  62. package/lib/scaffold/generate.js +45 -31
  63. package/lib/scaffold/shared/generator-utils.js +188 -81
  64. package/lib/scaffold/shared/sort-imports.js +191 -0
  65. package/lib/scaffold/shared/template-strings.js +3 -3
  66. package/lib/utils/checks.js +22 -6
  67. package/lib/utils/env-tools.js +7 -0
  68. package/lib/utils/flutter-install.js +114 -0
  69. package/lib/utils/i18n/messages-en.js +52 -35
  70. package/lib/utils/i18n/messages-es.js +52 -35
  71. package/lib/utils/i18n/messages-pt.js +54 -37
  72. package/lib/utils/updates.js +15 -15
  73. package/package.json +1 -1
  74. package/templates/firebase/.env.example +2 -2
  75. package/templates/firebase/android/app/src/main/res/drawable/background.png +0 -0
  76. package/templates/firebase/android/app/src/main/res/drawable-night/background.png +0 -0
  77. package/templates/firebase/android/app/src/main/res/drawable-night-v21/background.png +0 -0
  78. package/templates/firebase/android/app/src/main/res/drawable-v21/background.png +0 -0
  79. package/templates/firebase/android/app/src/main/res/values-night-v31/styles.xml +1 -1
  80. package/templates/firebase/android/app/src/main/res/values-v31/styles.xml +1 -1
  81. package/templates/firebase/assets/images/logo_wordmark_dark.png +0 -0
  82. package/templates/firebase/assets/images/logo_wordmark_light.png +0 -0
  83. package/templates/firebase/docs/revenuecat-setup.es.md +1 -1
  84. package/templates/firebase/docs/revenuecat-setup.pt.md +1 -1
  85. package/templates/firebase/firestore.rules +24 -5
  86. package/templates/firebase/functions/package-lock.json +22 -1
  87. package/templates/firebase/functions/package.json +2 -1
  88. package/templates/firebase/functions/src/admin/functions.ts +113 -0
  89. package/templates/firebase/functions/src/{llm_chat → ai_chat}/index.ts +16 -16
  90. package/templates/firebase/functions/src/index.ts +8 -2
  91. package/templates/firebase/functions/src/notifications/device_triggers.ts +2 -2
  92. package/templates/firebase/functions/src/notifications/triggers.ts +3 -3
  93. package/templates/firebase/functions/src/subscriptions/models/subscription_status.ts +2 -0
  94. package/templates/firebase/functions/src/subscriptions/stripe_functions.ts +222 -0
  95. package/templates/firebase/functions/src/subscriptions/subscriptions_functions.ts +2 -2
  96. package/templates/firebase/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png +0 -0
  97. package/templates/firebase/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png +0 -0
  98. package/templates/firebase/lib/components/components.dart +4 -1
  99. package/templates/firebase/lib/components/kasy_app_bar.dart +22 -7
  100. package/templates/firebase/lib/components/kasy_avatar.dart +7 -6
  101. package/templates/firebase/lib/components/kasy_button.dart +23 -99
  102. package/templates/firebase/lib/components/kasy_dialog.dart +11 -11
  103. package/templates/firebase/lib/components/kasy_image_viewer.dart +84 -0
  104. package/templates/firebase/lib/components/{kasy_sidebar_pro.dart → kasy_sidebar.dart} +702 -425
  105. package/templates/firebase/lib/components/kasy_status_tag.dart +91 -0
  106. package/templates/firebase/lib/components/kasy_text_area.dart +1 -3
  107. package/templates/firebase/lib/components/kasy_text_field.dart +5 -6
  108. package/templates/firebase/lib/components/kasy_text_field_otp.dart +1 -3
  109. package/templates/firebase/lib/components/kasy_toast.dart +2 -2
  110. package/templates/firebase/lib/components/kasy_web_header.dart +209 -0
  111. package/templates/firebase/lib/core/ads/ads_provider.dart +1 -1
  112. package/templates/firebase/lib/core/bottom_menu/bottom_menu.dart +136 -23
  113. package/templates/firebase/lib/core/bottom_menu/bottom_router.dart +19 -91
  114. package/templates/firebase/lib/core/bottom_menu/kasy_bottom_bar_factory.dart +196 -96
  115. package/templates/firebase/lib/core/bottom_menu/web_content_wrapper.dart +54 -0
  116. package/templates/firebase/lib/core/config/app_env.dart +5 -11
  117. package/templates/firebase/lib/core/config/features.dart +5 -4
  118. package/templates/firebase/lib/core/data/api/analytics_api.dart +1 -1
  119. package/templates/firebase/lib/core/data/api/http_client.dart +1 -1
  120. package/templates/firebase/lib/core/data/entities/user_entity.dart +3 -0
  121. package/templates/firebase/lib/core/data/models/entitlement.dart +35 -0
  122. package/templates/firebase/lib/core/data/models/subscription.dart +13 -186
  123. package/templates/firebase/lib/core/data/models/user.dart +11 -0
  124. package/templates/firebase/lib/core/data/repositories/user_repository.dart +1 -1
  125. package/templates/firebase/lib/core/home_widgets/home_widget_background_task.dart +1 -1
  126. package/templates/firebase/lib/core/home_widgets/home_widget_mywidget_service.dart +1 -1
  127. package/templates/firebase/lib/core/icons/kasy_icons.dart +31 -1
  128. package/templates/firebase/lib/core/rating/api/rating_api.dart +2 -2
  129. package/templates/firebase/lib/core/states/logout_action.dart +25 -0
  130. package/templates/firebase/lib/core/states/user_state_notifier.dart +3 -3
  131. package/templates/firebase/lib/core/theme/colors.dart +488 -188
  132. package/templates/firebase/lib/core/theme/radius.dart +22 -11
  133. package/templates/firebase/lib/core/theme/shadows.dart +66 -0
  134. package/templates/firebase/lib/core/theme/texts.dart +75 -41
  135. package/templates/firebase/lib/core/theme/universal_theme.dart +9 -4
  136. package/templates/firebase/lib/core/web_device_preview/web_device_preview.dart +5 -4
  137. package/templates/firebase/lib/core/web_viewport_scale.dart +52 -0
  138. package/templates/firebase/lib/core/widgets/kasy_brand_badge.dart +118 -0
  139. package/templates/firebase/lib/core/widgets/kasy_brand_logo.dart +40 -0
  140. package/templates/firebase/lib/core/widgets/kasy_focus_ring.dart +125 -0
  141. package/templates/firebase/lib/core/widgets/kasy_hover.dart +53 -14
  142. package/templates/firebase/lib/core/widgets/kasy_pressable_depth.dart +18 -13
  143. package/templates/firebase/lib/{environnements.dart → environments.dart} +3 -14
  144. package/templates/firebase/lib/features/ai_chat/ai_chat_page.dart +159 -0
  145. package/templates/firebase/lib/features/ai_chat/api/ai_chat_api.dart +107 -0
  146. package/templates/firebase/lib/features/ai_chat/api/ai_chat_conversation_entity.dart +64 -0
  147. package/templates/firebase/lib/features/{llm_chat/api/llm_chat_message_entity.dart → ai_chat/api/ai_chat_message_entity.dart} +6 -6
  148. package/templates/firebase/lib/features/{llm_chat/providers/llm_chat_notifier.dart → ai_chat/providers/ai_chat_notifier.dart} +73 -38
  149. package/templates/firebase/lib/features/ai_chat/providers/ai_conversations_notifier.dart +103 -0
  150. package/templates/firebase/lib/features/{llm_chat/ui/widgets/llm_chat_avatars.dart → ai_chat/ui/widgets/ai_chat_avatars.dart} +13 -13
  151. package/templates/firebase/lib/features/{llm_chat/ui/widgets/llm_chat_composer.dart → ai_chat/ui/widgets/ai_chat_composer.dart} +10 -10
  152. package/templates/firebase/lib/features/{llm_chat/llm_chat_page.dart → ai_chat/ui/widgets/ai_chat_conversation_view.dart} +80 -67
  153. package/templates/firebase/lib/features/ai_chat/ui/widgets/ai_conversation_list.dart +285 -0
  154. package/templates/firebase/lib/features/ai_chat/ui/widgets/ai_conversation_tile.dart +163 -0
  155. package/templates/firebase/lib/features/authentication/api/authentication_api.dart +52 -13
  156. package/templates/firebase/lib/features/authentication/api/popup_dismiss_watcher.dart +12 -0
  157. package/templates/firebase/lib/features/authentication/api/popup_dismiss_watcher_web.dart +35 -0
  158. package/templates/firebase/lib/features/authentication/ui/recover_password_page.dart +108 -68
  159. package/templates/firebase/lib/features/authentication/ui/signin_page.dart +38 -51
  160. package/templates/firebase/lib/features/authentication/ui/signup_page.dart +38 -51
  161. package/templates/firebase/lib/features/authentication/ui/widgets/auth_card_scaffold.dart +128 -0
  162. package/templates/firebase/lib/features/authentication/ui/widgets/recover_password_result.dart +61 -44
  163. package/templates/firebase/lib/features/feedbacks/api/feature_request_api.dart +32 -0
  164. package/templates/firebase/lib/features/feedbacks/models/feedback_state.dart +5 -5
  165. package/templates/firebase/lib/features/feedbacks/providers/feedback_page_notifier.dart +2 -2
  166. package/templates/firebase/lib/features/home/design_system_page.dart +808 -170
  167. package/templates/firebase/lib/features/home/home_components_page.dart +6 -3
  168. package/templates/firebase/lib/features/home/home_components_preview_page.dart +6 -6
  169. package/templates/firebase/lib/features/home/home_components_preview_registry.dart +325 -186
  170. package/templates/firebase/lib/features/home/home_feed.dart +289 -0
  171. package/templates/firebase/lib/features/home/home_image_grid.dart +355 -0
  172. package/templates/firebase/lib/features/home/home_page.dart +11 -250
  173. package/templates/firebase/lib/features/{local_reminder → local_reminders}/providers/reminder_notifier.dart +1 -1
  174. package/templates/firebase/lib/features/{local_reminder → local_reminders}/ui/reminder_page.dart +2 -2
  175. package/templates/firebase/lib/features/notifications/shared/att_permission.dart +1 -1
  176. package/templates/firebase/lib/features/notifications/ui/request_notification_permission.dart +25 -61
  177. package/templates/firebase/lib/features/notifications/ui/widgets/permission_request_view.dart +117 -0
  178. package/templates/firebase/lib/features/onboarding/models/user_info.dart +16 -16
  179. package/templates/firebase/lib/features/onboarding/ui/components/onboarding_att_setup.dart +4 -3
  180. package/templates/firebase/lib/features/onboarding/ui/components/onboarding_features.dart +7 -9
  181. package/templates/firebase/lib/features/onboarding/ui/components/onboarding_loader.dart +71 -48
  182. package/templates/firebase/lib/features/onboarding/ui/components/onboarding_notifications_setup.dart +3 -2
  183. package/templates/firebase/lib/features/onboarding/ui/components/onboarding_questions.dart +5 -5
  184. package/templates/firebase/lib/features/onboarding/ui/onboarding_page.dart +4 -4
  185. package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_background.dart +4 -2
  186. package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_feature.dart +39 -121
  187. package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_illustration_scaffold.dart +105 -70
  188. package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_module_mockups.dart +639 -0
  189. package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_progress.dart +62 -50
  190. package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_radio_question.dart +38 -28
  191. package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_step_header.dart +75 -0
  192. package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_sticky_footer.dart +16 -5
  193. package/templates/firebase/lib/features/onboarding/ui/widgets/selectable_row_tile.dart +26 -22
  194. package/templates/firebase/lib/features/settings/settings_page.dart +601 -90
  195. package/templates/firebase/lib/features/settings/ui/components/admin/admin_page.dart +1193 -0
  196. package/templates/firebase/lib/features/settings/ui/components/admin/admin_paywalls.dart +1 -1
  197. package/templates/firebase/lib/features/settings/ui/components/admin/admin_routes.dart +2 -3
  198. package/templates/firebase/lib/features/settings/ui/components/admin/admin_users_api.dart +86 -0
  199. package/templates/firebase/lib/features/settings/ui/components/admin/admin_users_tab.dart +1215 -0
  200. package/templates/firebase/lib/features/settings/ui/components/admin/send_push_notification_page.dart +236 -0
  201. package/templates/firebase/lib/features/settings/ui/components/avatar_component.dart +3 -3
  202. package/templates/firebase/lib/features/settings/ui/widgets/kasy_user_avatar.dart +77 -0
  203. package/templates/firebase/lib/features/settings/ui/widgets/settings_tile.dart +1 -0
  204. package/templates/firebase/lib/features/{subscription → subscriptions}/api/entities/subscription_entity.dart +17 -0
  205. package/templates/firebase/lib/features/{subscription → subscriptions}/api/inapp_subscription_api.dart +67 -46
  206. package/templates/firebase/lib/features/subscriptions/api/revenuecat_product.dart +189 -0
  207. package/templates/firebase/lib/features/subscriptions/api/stripe_backend_api.dart +55 -0
  208. package/templates/firebase/lib/features/subscriptions/api/stripe_payment_api.dart +82 -0
  209. package/templates/firebase/lib/features/subscriptions/api/stripe_product.dart +178 -0
  210. package/templates/firebase/lib/features/{subscription → subscriptions}/api/subscription_api.dart +1 -1
  211. package/templates/firebase/lib/features/subscriptions/api/subscription_payment_api.dart +53 -0
  212. package/templates/firebase/lib/features/subscriptions/api/subscription_payment_api_provider.dart +21 -0
  213. package/templates/firebase/lib/features/{subscription → subscriptions}/providers/premium_page_provider.dart +9 -6
  214. package/templates/firebase/lib/features/{subscription → subscriptions}/repositories/subscription_repository.dart +26 -30
  215. package/{lib/scaffold/backends/supabase/patch/lib/features/subscription → templates/firebase/lib/features/subscriptions}/shared/maybeshow_premium.dart +0 -2
  216. package/templates/firebase/lib/features/subscriptions/shared/subscription_management.dart +45 -0
  217. package/templates/firebase/lib/features/{subscription → subscriptions}/ui/component/active_premium_content.dart +28 -4
  218. package/templates/firebase/lib/features/{subscription → subscriptions}/ui/component/paywall_minimal.dart +7 -7
  219. package/templates/firebase/lib/features/{subscription → subscriptions}/ui/component/paywall_row.dart +8 -8
  220. package/templates/firebase/lib/features/{subscription → subscriptions}/ui/component/paywall_with_switch.dart +7 -7
  221. package/templates/firebase/lib/features/{subscription → subscriptions}/ui/component/premium_content.dart +7 -7
  222. package/templates/firebase/lib/features/{subscription → subscriptions}/ui/component/premium_page_factory.dart +5 -5
  223. package/templates/firebase/lib/features/{subscription → subscriptions}/ui/premium_page.dart +5 -5
  224. package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/comparison_table.dart +1 -1
  225. package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/paywall_empty_state.dart +4 -4
  226. package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/premium_bottom_menu.dart +3 -4
  227. package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/selectable_col.dart +1 -1
  228. package/templates/firebase/lib/i18n/en.i18n.json +171 -46
  229. package/templates/firebase/lib/i18n/es.i18n.json +175 -50
  230. package/templates/firebase/lib/i18n/pt.i18n.json +166 -41
  231. package/templates/firebase/lib/main.dart +6 -3
  232. package/templates/firebase/lib/router.dart +15 -23
  233. package/templates/firebase/pubspec.yaml +5 -6
  234. package/templates/firebase/test/core/data/repositories/user_repository_test.dart +3 -3
  235. package/templates/firebase/test/core/states/user_state_notifier_test.dart +4 -4
  236. package/templates/firebase/test/core/widgets/focus_ring_shape_test.dart +55 -0
  237. package/templates/firebase/test/features/{subscription → subscriptions}/api/fake_inapp_subscription_api.dart +11 -4
  238. package/templates/firebase/test/features/{subscription → subscriptions}/api/fake_revenuecat_product.dart +1 -0
  239. package/templates/firebase/test/features/{subscription → subscriptions}/api/fake_subscription_api.dart +2 -2
  240. package/templates/firebase/test/features/{subscription → subscriptions}/subscription_page_test.dart +4 -4
  241. package/templates/firebase/test/test_utils.dart +6 -6
  242. package/templates/firebase/web/index.html +5 -2
  243. package/lib/scaffold/backends/api/patch/lib/features/llm_chat/api/llm_chat_api.dart +0 -58
  244. package/lib/scaffold/backends/api/patch/lib/features/subscription/shared/maybeshow_premium.dart +0 -86
  245. package/lib/scaffold/backends/supabase/migrations/20240101000009_llm_messages.sql +0 -22
  246. package/lib/scaffold/backends/supabase/patch/lib/features/llm_chat/api/llm_chat_api.dart +0 -47
  247. package/templates/firebase/assets/images/onboarding/authentication-login-template.jpg +0 -0
  248. package/templates/firebase/assets/images/onboarding/img2.jpg +0 -0
  249. package/templates/firebase/assets/images/onboarding/img3.jpg +0 -0
  250. package/templates/firebase/assets/images/onboarding/notifications.png +0 -0
  251. package/templates/firebase/assets/images/onboarding/purchase.png +0 -0
  252. package/templates/firebase/lib/core/sidebar/kasy_sidebar.dart +0 -2021
  253. package/templates/firebase/lib/features/authentication/ui/widgets/auth_brand.dart +0 -35
  254. package/templates/firebase/lib/features/home/home_features_page.dart +0 -207
  255. package/templates/firebase/lib/features/llm_chat/api/llm_chat_api.dart +0 -50
  256. package/templates/firebase/lib/features/settings/ui/components/admin/admin_bottom_sheet.dart +0 -316
  257. package/templates/firebase/lib/features/subscription/shared/maybeshow_premium.dart +0 -85
  258. /package/templates/firebase/lib/features/{local_reminder → local_reminders}/repositories/reminder_preferences.dart +0 -0
  259. /package/templates/firebase/lib/features/{subscription → subscriptions}/providers/models/premium_state.dart +0 -0
  260. /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/feature_line.dart +0 -0
  261. /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/premium_background.dart +0 -0
  262. /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/premium_background_gradient.dart +0 -0
  263. /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/premium_banner.dart +0 -0
  264. /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/premium_card.dart +0 -0
  265. /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/premium_close_button.dart +0 -0
  266. /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/premium_feature.dart +0 -0
  267. /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/selectable_row.dart +0 -0
  268. /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/trial_switcher.dart +0 -0
  269. /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/unsubscribe_feedback_popup.dart +0 -0
@@ -1,7 +1,86 @@
1
1
  {
2
+ "admin_console": {
3
+ "tabs": {
4
+ "overview": "Overview",
5
+ "users": "Users",
6
+ "requests": "Requests",
7
+ "kit": "Kit",
8
+ "tools": "Tools"
9
+ },
10
+ "overview": {
11
+ "section": "Project",
12
+ "backend": "Backend",
13
+ "account": "Account",
14
+ "guest": "Guest",
15
+ "user_id": "User ID",
16
+ "build": "Build",
17
+ "session_title": "Current session",
18
+ "requests_metric": "Feature requests",
19
+ "users_hint": "Open the Users tab to manage every account.",
20
+ "debug_note": "Debug console — visible only in development builds."
21
+ },
22
+ "users": {
23
+ "title": "Users",
24
+ "search_hint": "Search by name or e-mail",
25
+ "col_user": "User",
26
+ "col_status": "Status",
27
+ "col_plan": "Plan",
28
+ "col_joined": "Joined",
29
+ "status_active": "Active",
30
+ "status_inactive": "Inactive",
31
+ "plan_subscriber": "Subscriber",
32
+ "plan_free": "Free",
33
+ "empty": "No users found",
34
+ "error": "Couldn't load users. Make sure you are an admin.",
35
+ "page": "Page $page of $total",
36
+ "prev": "Previous",
37
+ "next": "Next",
38
+ "anonymous": "Anonymous",
39
+ "filter_all": "All users",
40
+ "filter_subscribers": "Subscribers",
41
+ "loading": "Loading users…",
42
+ "results": "Showing $from to $to of $total",
43
+ "truncated": "Showing the $count most recent. Search covers the loaded set.",
44
+ "empty_search": "No users match your search",
45
+ "empty_search_hint": "Try a different name or e-mail.",
46
+ "refresh": "Refresh",
47
+ "retry": "Try again"
48
+ },
49
+ "requests": {
50
+ "title": "Feature requests",
51
+ "empty": "No feature requests yet",
52
+ "votes": "$count votes",
53
+ "visible": "Visible",
54
+ "hidden": "Hidden",
55
+ "edit": "Edit translations",
56
+ "error": "Couldn't load feature requests",
57
+ "saved": "Feature request updated",
58
+ "editor_title": "Edit feature request",
59
+ "field_title": "Title",
60
+ "field_description": "Description",
61
+ "lang_en": "English",
62
+ "lang_pt": "Portuguese",
63
+ "lang_es": "Spanish",
64
+ "visibility": "Visible to users",
65
+ "save": "Save",
66
+ "cancel": "Cancel"
67
+ },
68
+ "groups": {
69
+ "features": "Features",
70
+ "showcase": "Showcase",
71
+ "preview": "Preview",
72
+ "debug_actions": "Debug actions",
73
+ "identity": "Identity"
74
+ },
75
+ "settings_entry": {
76
+ "title": "Admin",
77
+ "caption": "Only visible to administrators and in development mode."
78
+ },
79
+ "requires_admin": "You need to be an admin to view this."
80
+ },
2
81
  "home": {
3
82
  "title": "Kasy example",
4
- "welcome": "Welcome on the Kasy demo",
83
+ "welcome": "Welcome to the Kasy demo",
5
84
  "cards": {
6
85
  "paywall_title": "Paywall",
7
86
  "paywall_description": "Show the paywall page",
@@ -12,12 +91,12 @@
12
91
  "signup_title": "Signup",
13
92
  "signup_description": "Anonymous user can signup using real email or other social login",
14
93
  "assistant_title": "AI Assistant",
15
- "assistant_description": "Open the LLM chat template page"
94
+ "assistant_description": "Chat with the AI assistant"
16
95
  },
17
96
  "features_page": {
18
97
  "title": "Kit features",
19
98
  "assistant_title": "Chat with AI",
20
- "assistant_description": "Ready-made LLM chat for questions, ideas, and in-app help",
99
+ "assistant_description": "Ready-made AI chat for questions, ideas, and in-app help",
21
100
  "feedback_title": "Vote & suggest",
22
101
  "feedback_description": "Join the roadmap—vote on ideas or submit your own",
23
102
  "notification_title": "Test notification",
@@ -78,8 +157,11 @@
78
157
  },
79
158
  "recover": {
80
159
  "title": "Recover password",
160
+ "subtitle": "Enter your email and we'll send you a link to set a new password.",
81
161
  "email_label": "Email",
82
162
  "submit": "Recover password",
163
+ "remember": "Remembered your password?",
164
+ "signin_link": "Sign in",
83
165
  "error_title": "Error",
84
166
  "error_text": "Fill a valid email"
85
167
  }
@@ -96,7 +178,7 @@
96
178
  "feature_1": "Feature 1 lorem ipsum ",
97
179
  "feature_2": "Feature 2 mop issum ",
98
180
  "feature_3": "Feature 3 lorem ",
99
- "duration_weekly": "Weak",
181
+ "duration_weekly": "Week",
100
182
  "duration_annual": "Year",
101
183
  "duration_monthly": "Month",
102
184
  "duration_monthly_description": "Cancel anytime",
@@ -123,7 +205,7 @@
123
205
  "purchase_success_title": "Subscription successful",
124
206
  "purchase_success_text": "Thank you for your trust",
125
207
  "error_title": "Error",
126
- "error_text": "We saved your error",
208
+ "error_text": "An error occurred. Please try again",
127
209
  "comparison": {
128
210
  "title": "Premium plan comparison",
129
211
  "features_label": "Features",
@@ -148,6 +230,9 @@
148
230
  "unsubscribe_feedback_min_chars": "Minimum 6 characters required",
149
231
  "unsubscribe_confirm_button": "Continue",
150
232
  "lifetime_user_description": "You are a lifetime user",
233
+ "managed_elsewhere_title": "Subscription on another platform",
234
+ "managed_elsewhere_description": "This subscription was made on another platform and can't be managed or cancelled here. Sign in to your account on the platform where you purchased it.",
235
+ "restore_button": "Restore purchases",
151
236
  "cancel_button": "Close"
152
237
  },
153
238
  "paywallWithSwitch": {
@@ -172,58 +257,89 @@
172
257
  },
173
258
  "onboarding": {
174
259
  "feature_1": {
175
- "title": "Subscriptions module",
176
- "description": "Manage subscriptions with premade paywalls",
260
+ "title": "Monetize from day one",
261
+ "description": "Production-ready paywalls, subscriptions and free trials. No billing backend to build.",
177
262
  "action": "Continue",
178
263
  "skip": "Skip",
179
264
  "login": "Already have an account? Log in"
180
265
  },
181
266
  "feature_2": {
182
- "title": "Authentication module",
183
- "description": "Manage authentication with premade screens for (login, register, forgot password, etc.)",
267
+ "title": "Sign-in, already built",
268
+ "description": "Email, social login and password recovery. Secure and ready to ship.",
184
269
  "action": "Continue"
185
270
  },
186
271
  "feature_3": {
187
- "title": "Notifications module",
188
- "description": "Receive push notifications, show in-app notifications, manage permissions, notifications list with status...",
272
+ "title": "Bring your users back",
273
+ "description": "Push, in-app alerts and permissions, wired up and ready to engage.",
189
274
  "action": "Continue"
190
275
  },
276
+ "mockups": {
277
+ "paywall": {
278
+ "title": "Premium",
279
+ "annual": "Annual",
280
+ "monthly": "Monthly",
281
+ "save_badge": "-40%",
282
+ "price_year": "\\$39.99 / yr",
283
+ "price_month": "\\$4.99 / mo",
284
+ "cta": "Start free trial"
285
+ },
286
+ "auth": {
287
+ "welcome": "Welcome back",
288
+ "email_hint": "you@email.com",
289
+ "sign_in": "Sign in",
290
+ "divider": "or"
291
+ },
292
+ "notification": {
293
+ "title": "New message",
294
+ "time": "now"
295
+ },
296
+ "push_permission": {
297
+ "title": "Enable notifications?",
298
+ "allow": "Allow",
299
+ "deny": "Don't allow"
300
+ },
301
+ "tracking_permission": {
302
+ "title": "Allow tracking?",
303
+ "allow": "Allow",
304
+ "deny": "Ask app not to track"
305
+ }
306
+ },
191
307
  "ageQuestion": {
192
- "title": "What is your age?",
193
- "description": "This helps us personalize your experience in the app.",
308
+ "title": "How old are you?",
309
+ "description": "This helps us tailor your experience.",
194
310
  "options(map)": {
195
- "age18_30": "[18 - 30] years old",
196
- "age31_40": "[31 - 40] years old",
197
- "age41_50": "[41 - 50] years old",
198
- "age51_60": "50 years and above",
199
- "none": "I prefer not to answer"
311
+ "age18_30": "18 to 30",
312
+ "age31_40": "31 to 40",
313
+ "age41_50": "41 to 50",
314
+ "age51_60": "Over 50",
315
+ "none": "I'd rather not say"
200
316
  },
201
317
  "action": "Continue"
202
318
  },
203
319
  "genderQuestion": {
204
- "title": "What is your gender?",
205
- "description": "Choose the option that best represents you. You can skip if you prefer.",
320
+ "title": "How do you identify?",
321
+ "description": "Pick what fits you best. You can skip this.",
206
322
  "options(map)": {
207
323
  "male": "Male",
208
324
  "female": "Female",
209
- "none": "I prefer not to answer"
325
+ "none": "I'd rather not say"
210
326
  },
211
327
  "action": "Continue"
212
328
  },
213
329
  "notifications": {
214
- "title": "Allow notifications",
215
- "description": "We will only send you important notifications",
216
- "continue_button": "Allow notifications",
217
- "skip_button": "Maybe later"
330
+ "title": "Stay in the loop",
331
+ "description": "We only reach out when it truly matters. No spam, ever.",
332
+ "continue_button": "Turn on notifications",
333
+ "skip_button": "Not now"
218
334
  },
219
335
  "att": {
220
- "title": "App Tracking Transparency",
221
- "description": "We need this only to improve our ad campaigns",
336
+ "title": "You're in control",
337
+ "description": "Allow tracking for more relevant ads. The choice is always yours.",
222
338
  "continue_button": "Continue"
223
339
  },
224
340
  "loading": {
225
- "title": "Creating your profile",
226
- "subtitle": "Wait a few seconds"
341
+ "title": "Setting everything up",
342
+ "subtitle": "This will only take a moment"
227
343
  }
228
344
  },
229
345
  "feature_requests": {
@@ -289,13 +405,10 @@
289
405
  },
290
406
  "navigation": {
291
407
  "home": "Home",
292
- "wishlist": "Wishlist",
408
+ "support": "Support",
293
409
  "notifications": "Notifications",
294
- "settings": "Config."
295
- },
296
- "wishlist": {
297
- "empty_title": "Nothing here yet",
298
- "empty_subtitle": "Save your favorites to find them here"
410
+ "settings": "Config.",
411
+ "logout": "Sign out"
299
412
  },
300
413
  "reminderPage": {
301
414
  "title": "Reminders",
@@ -368,10 +481,11 @@
368
481
  "premium": "Premium",
369
482
  "privacy": "Privacy policy",
370
483
  "support": "Support",
371
- "disconnect": "Disconnect",
372
- "disconnect_confirm_title": "Sign out",
484
+ "disconnect": "Yes, sign out",
485
+ "disconnect_confirm_title": "Sign out of your account?",
373
486
  "disconnect_confirm_message": "Are you sure you want to sign out?",
374
487
  "disconnect_cancel": "Cancel",
488
+ "logout": "Sign out",
375
489
  "my_account": "My account",
376
490
  "not_signed_in": "Not signed in",
377
491
  "register": "Register",
@@ -381,8 +495,8 @@
381
495
  "admin_panel_debug_notice": "This entire Admin section (header, panel, and all options below) only exists in debug builds. It is not included in release; people who install from the store or a production APK never see any of it.",
382
496
  "delete_account": {
383
497
  "button": "I want to delete my account",
384
- "title": "Delete my account?",
385
- "content": "Warning: this action is irreversible",
498
+ "title": "Delete your account?",
499
+ "content": "Warning: this action is irreversible.",
386
500
  "cancel": "Cancel",
387
501
  "confirm": "Yes, delete"
388
502
  },
@@ -421,6 +535,10 @@
421
535
  "send_push_no_emails": "Add at least one e-mail",
422
536
  "send_push_route_label": "Route on open (optional)",
423
537
  "send_push_route_hint": "e.g. /premium, /notifications",
538
+ "send_push_preview_label": "Preview",
539
+ "send_push_preview_now": "now",
540
+ "send_push_preview_title_placeholder": "Notification title",
541
+ "send_push_preview_body_placeholder": "Your message body shows here",
424
542
  "device_preview_title": "Device Preview (web only)"
425
543
  }
426
544
  },
@@ -448,7 +566,7 @@
448
566
  "delete_all": "Delete all",
449
567
  "delete_all_confirm_title": "Delete all notifications?",
450
568
  "delete_all_confirm_message": "This will permanently remove every notification from your account. This cannot be undone.",
451
- "delete_action": "Delete",
569
+ "delete_action": "Yes, delete",
452
570
  "cancel_action": "Cancel",
453
571
  "deleted_one": "Notification deleted",
454
572
  "deleted_all": "All notifications deleted"
@@ -456,13 +574,20 @@
456
574
  "bottom_router": {
457
575
  "fake_page_text": "This is a fake page"
458
576
  },
459
- "llm_chat": {
460
- "title": "LLM Chat Template",
577
+ "ai_chat": {
578
+ "title": "AI Assistant",
461
579
  "empty_state": "Start a conversation with your assistant.",
462
580
  "hint": "Ask something...",
463
- "error_not_configured": "LLM endpoint not configured. Use --dart-define=LLM_CHAT_ENDPOINT=...",
464
- "error_no_reply": "No reply field found in endpoint response.",
465
- "error_network": "Could not reach LLM endpoint."
581
+ "error_not_configured": "The assistant isn't available yet. Please try again later.",
582
+ "error_no_reply": "We couldn't get a reply. Please try again.",
583
+ "error_network": "Could not reach the AI assistant.",
584
+ "new_conversation": "New conversation",
585
+ "conversations_empty": "No conversations yet",
586
+ "no_conversation_selected": "Pick a conversation, or start a new one.",
587
+ "delete_title": "Delete conversation?",
588
+ "delete_message": "This conversation and all its messages will be permanently deleted.",
589
+ "delete_cancel": "Cancel",
590
+ "delete_confirm": "Yes, delete"
466
591
  },
467
592
  "phone_auth": {
468
593
  "title_input": "Phone Authentication",
@@ -473,7 +598,7 @@
473
598
  "error_empty": "Please enter a phone number",
474
599
  "error_invalid": "Please enter a valid phone number",
475
600
  "continue_btn": "Continue",
476
- "title_verify": "Verify OTP",
601
+ "title_verify": "Verify code",
477
602
  "verification_code": "Verification Code",
478
603
  "code_sent": "We have sent a verification code to $phone",
479
604
  "verify_code": "Verify Code",