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.
- package/lib/commands/add.js +93 -80
- package/lib/commands/configure.js +100 -32
- package/lib/commands/doctor.js +28 -2
- package/lib/commands/new.js +80 -37
- package/lib/commands/notifications.js +1 -1
- package/lib/commands/remove.js +43 -15
- package/lib/commands/run.js +2 -2
- package/lib/commands/update.js +2 -2
- package/lib/scaffold/CHANGELOG.json +14 -0
- package/lib/scaffold/backends/api/generator.js +14 -14
- package/lib/scaffold/backends/api/patch/README.md +83 -0
- package/lib/scaffold/backends/api/patch/lib/core/data/api/storage_api.dart +1 -1
- package/lib/scaffold/backends/api/patch/lib/core/data/entities/user_entity.dart +5 -0
- package/lib/scaffold/backends/api/patch/lib/{environnements.dart → environments.dart} +3 -11
- package/lib/scaffold/backends/api/patch/lib/features/ai_chat/api/ai_chat_api.dart +108 -0
- package/lib/scaffold/backends/api/patch/lib/features/ai_chat/api/ai_chat_conversation_entity.dart +51 -0
- 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
- package/lib/scaffold/backends/api/patch/lib/features/{llm_chat/providers/llm_chat_notifier.dart → ai_chat/providers/ai_chat_notifier.dart} +71 -38
- package/lib/scaffold/backends/api/patch/lib/features/authentication/api/authentication_api.dart +2 -2
- package/lib/scaffold/backends/api/patch/lib/features/feedbacks/api/feature_request_api.dart +54 -0
- package/lib/scaffold/backends/api/patch/lib/features/onboarding/models/user_info.dart +16 -16
- package/lib/scaffold/backends/api/patch/lib/features/onboarding/ui/components/onboarding_att_setup.dart +4 -3
- package/lib/scaffold/backends/api/patch/lib/features/onboarding/ui/widgets/onboarding_radio_question.dart +38 -28
- package/lib/scaffold/backends/api/patch/lib/features/settings/ui/components/admin/admin_users_api.dart +100 -0
- package/lib/scaffold/backends/api/patch/lib/features/{subscription → subscriptions}/api/entities/subscription_entity.dart +13 -0
- package/lib/scaffold/backends/api/patch/lib/features/subscriptions/api/stripe_backend_api.dart +60 -0
- package/lib/scaffold/backends/api/patch/lib/features/{subscription → subscriptions}/api/subscription_api.dart +1 -1
- package/lib/scaffold/backends/api/pubspec.yaml.tpl +4 -5
- package/lib/scaffold/backends/firebase/deploy.js +87 -13
- package/lib/scaffold/backends/firebase/generator.js +5 -5
- package/lib/scaffold/backends/firebase/tokens.js +4 -4
- package/lib/scaffold/backends/supabase/deploy.js +63 -11
- package/lib/scaffold/backends/supabase/edge-functions/admin-list-users/index.ts +149 -0
- package/lib/scaffold/backends/supabase/edge-functions/{llm-chat → ai-chat}/index.ts +19 -19
- package/lib/scaffold/backends/supabase/edge-functions/revenuecat-webhook/index.ts +2 -0
- package/lib/scaffold/backends/supabase/edge-functions/stripe-create-checkout-session/index.ts +123 -0
- package/lib/scaffold/backends/supabase/edge-functions/stripe-create-portal-session/index.ts +97 -0
- package/lib/scaffold/backends/supabase/edge-functions/stripe-list-prices/index.ts +83 -0
- package/lib/scaffold/backends/supabase/edge-functions/stripe-webhook/index.ts +138 -0
- package/lib/scaffold/backends/supabase/generator.js +17 -17
- package/lib/scaffold/backends/supabase/migrations/20240101000009_ai_messages.sql +50 -0
- package/lib/scaffold/backends/supabase/migrations/20240101000012_stripe_customers.sql +36 -0
- package/lib/scaffold/backends/supabase/migrations/20240101000013_admin_role.sql +62 -0
- package/lib/scaffold/backends/supabase/patch/lib/core/data/entities/user_entity.dart +4 -0
- package/lib/scaffold/backends/supabase/patch/lib/{environnements.dart → environments.dart} +3 -13
- package/lib/scaffold/backends/supabase/patch/lib/features/ai_chat/api/ai_chat_api.dart +95 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/ai_chat/api/ai_chat_conversation_entity.dart +52 -0
- 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
- package/lib/scaffold/backends/supabase/patch/lib/features/{llm_chat/providers/llm_chat_notifier.dart → ai_chat/providers/ai_chat_notifier.dart} +63 -35
- package/lib/scaffold/backends/supabase/patch/lib/features/authentication/api/authentication_api.dart +1 -1
- package/lib/scaffold/backends/supabase/patch/lib/features/feedbacks/api/feature_request_api.dart +46 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/onboarding/models/user_info.dart +16 -16
- package/lib/scaffold/backends/supabase/patch/lib/features/onboarding/ui/components/onboarding_att_setup.dart +4 -3
- package/lib/scaffold/backends/supabase/patch/lib/features/onboarding/ui/widgets/onboarding_radio_question.dart +38 -28
- package/lib/scaffold/backends/supabase/patch/lib/features/settings/ui/components/admin/admin_users_api.dart +93 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/{subscription → subscriptions}/api/entities/subscription_entity.dart +13 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/subscriptions/api/stripe_backend_api.dart +52 -0
- package/lib/scaffold/backends/supabase/patch/lib/features/{subscription → subscriptions}/api/subscription_api.dart +1 -1
- package/lib/scaffold/backends/supabase/pubspec.yaml.tpl +4 -5
- package/lib/scaffold/backends/supabase/tokens.js +3 -3
- package/lib/scaffold/catalog.js +9 -11
- package/lib/scaffold/generate.js +45 -31
- package/lib/scaffold/shared/generator-utils.js +188 -81
- package/lib/scaffold/shared/sort-imports.js +191 -0
- package/lib/scaffold/shared/template-strings.js +3 -3
- package/lib/utils/checks.js +22 -6
- package/lib/utils/env-tools.js +7 -0
- package/lib/utils/flutter-install.js +114 -0
- package/lib/utils/i18n/messages-en.js +52 -35
- package/lib/utils/i18n/messages-es.js +52 -35
- package/lib/utils/i18n/messages-pt.js +54 -37
- package/lib/utils/updates.js +15 -15
- package/package.json +1 -1
- package/templates/firebase/.env.example +2 -2
- package/templates/firebase/android/app/src/main/res/drawable/background.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-night/background.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-night-v21/background.png +0 -0
- package/templates/firebase/android/app/src/main/res/drawable-v21/background.png +0 -0
- package/templates/firebase/android/app/src/main/res/values-night-v31/styles.xml +1 -1
- package/templates/firebase/android/app/src/main/res/values-v31/styles.xml +1 -1
- package/templates/firebase/assets/images/logo_wordmark_dark.png +0 -0
- package/templates/firebase/assets/images/logo_wordmark_light.png +0 -0
- package/templates/firebase/docs/revenuecat-setup.es.md +1 -1
- package/templates/firebase/docs/revenuecat-setup.pt.md +1 -1
- package/templates/firebase/firestore.rules +24 -5
- package/templates/firebase/functions/package-lock.json +22 -1
- package/templates/firebase/functions/package.json +2 -1
- package/templates/firebase/functions/src/admin/functions.ts +113 -0
- package/templates/firebase/functions/src/{llm_chat → ai_chat}/index.ts +16 -16
- package/templates/firebase/functions/src/index.ts +8 -2
- package/templates/firebase/functions/src/notifications/device_triggers.ts +2 -2
- package/templates/firebase/functions/src/notifications/triggers.ts +3 -3
- package/templates/firebase/functions/src/subscriptions/models/subscription_status.ts +2 -0
- package/templates/firebase/functions/src/subscriptions/stripe_functions.ts +222 -0
- package/templates/firebase/functions/src/subscriptions/subscriptions_functions.ts +2 -2
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png +0 -0
- package/templates/firebase/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png +0 -0
- package/templates/firebase/lib/components/components.dart +4 -1
- package/templates/firebase/lib/components/kasy_app_bar.dart +22 -7
- package/templates/firebase/lib/components/kasy_avatar.dart +7 -6
- package/templates/firebase/lib/components/kasy_button.dart +23 -99
- package/templates/firebase/lib/components/kasy_dialog.dart +11 -11
- package/templates/firebase/lib/components/kasy_image_viewer.dart +84 -0
- package/templates/firebase/lib/components/{kasy_sidebar_pro.dart → kasy_sidebar.dart} +702 -425
- package/templates/firebase/lib/components/kasy_status_tag.dart +91 -0
- package/templates/firebase/lib/components/kasy_text_area.dart +1 -3
- package/templates/firebase/lib/components/kasy_text_field.dart +5 -6
- package/templates/firebase/lib/components/kasy_text_field_otp.dart +1 -3
- package/templates/firebase/lib/components/kasy_toast.dart +2 -2
- package/templates/firebase/lib/components/kasy_web_header.dart +209 -0
- package/templates/firebase/lib/core/ads/ads_provider.dart +1 -1
- package/templates/firebase/lib/core/bottom_menu/bottom_menu.dart +136 -23
- package/templates/firebase/lib/core/bottom_menu/bottom_router.dart +19 -91
- package/templates/firebase/lib/core/bottom_menu/kasy_bottom_bar_factory.dart +196 -96
- package/templates/firebase/lib/core/bottom_menu/web_content_wrapper.dart +54 -0
- package/templates/firebase/lib/core/config/app_env.dart +5 -11
- package/templates/firebase/lib/core/config/features.dart +5 -4
- package/templates/firebase/lib/core/data/api/analytics_api.dart +1 -1
- package/templates/firebase/lib/core/data/api/http_client.dart +1 -1
- package/templates/firebase/lib/core/data/entities/user_entity.dart +3 -0
- package/templates/firebase/lib/core/data/models/entitlement.dart +35 -0
- package/templates/firebase/lib/core/data/models/subscription.dart +13 -186
- package/templates/firebase/lib/core/data/models/user.dart +11 -0
- package/templates/firebase/lib/core/data/repositories/user_repository.dart +1 -1
- package/templates/firebase/lib/core/home_widgets/home_widget_background_task.dart +1 -1
- package/templates/firebase/lib/core/home_widgets/home_widget_mywidget_service.dart +1 -1
- package/templates/firebase/lib/core/icons/kasy_icons.dart +31 -1
- package/templates/firebase/lib/core/rating/api/rating_api.dart +2 -2
- package/templates/firebase/lib/core/states/logout_action.dart +25 -0
- package/templates/firebase/lib/core/states/user_state_notifier.dart +3 -3
- package/templates/firebase/lib/core/theme/colors.dart +488 -188
- package/templates/firebase/lib/core/theme/radius.dart +22 -11
- package/templates/firebase/lib/core/theme/shadows.dart +66 -0
- package/templates/firebase/lib/core/theme/texts.dart +75 -41
- package/templates/firebase/lib/core/theme/universal_theme.dart +9 -4
- package/templates/firebase/lib/core/web_device_preview/web_device_preview.dart +5 -4
- package/templates/firebase/lib/core/web_viewport_scale.dart +52 -0
- package/templates/firebase/lib/core/widgets/kasy_brand_badge.dart +118 -0
- package/templates/firebase/lib/core/widgets/kasy_brand_logo.dart +40 -0
- package/templates/firebase/lib/core/widgets/kasy_focus_ring.dart +125 -0
- package/templates/firebase/lib/core/widgets/kasy_hover.dart +53 -14
- package/templates/firebase/lib/core/widgets/kasy_pressable_depth.dart +18 -13
- package/templates/firebase/lib/{environnements.dart → environments.dart} +3 -14
- package/templates/firebase/lib/features/ai_chat/ai_chat_page.dart +159 -0
- package/templates/firebase/lib/features/ai_chat/api/ai_chat_api.dart +107 -0
- package/templates/firebase/lib/features/ai_chat/api/ai_chat_conversation_entity.dart +64 -0
- package/templates/firebase/lib/features/{llm_chat/api/llm_chat_message_entity.dart → ai_chat/api/ai_chat_message_entity.dart} +6 -6
- package/templates/firebase/lib/features/{llm_chat/providers/llm_chat_notifier.dart → ai_chat/providers/ai_chat_notifier.dart} +73 -38
- package/templates/firebase/lib/features/ai_chat/providers/ai_conversations_notifier.dart +103 -0
- package/templates/firebase/lib/features/{llm_chat/ui/widgets/llm_chat_avatars.dart → ai_chat/ui/widgets/ai_chat_avatars.dart} +13 -13
- package/templates/firebase/lib/features/{llm_chat/ui/widgets/llm_chat_composer.dart → ai_chat/ui/widgets/ai_chat_composer.dart} +10 -10
- package/templates/firebase/lib/features/{llm_chat/llm_chat_page.dart → ai_chat/ui/widgets/ai_chat_conversation_view.dart} +80 -67
- package/templates/firebase/lib/features/ai_chat/ui/widgets/ai_conversation_list.dart +285 -0
- package/templates/firebase/lib/features/ai_chat/ui/widgets/ai_conversation_tile.dart +163 -0
- package/templates/firebase/lib/features/authentication/api/authentication_api.dart +52 -13
- package/templates/firebase/lib/features/authentication/api/popup_dismiss_watcher.dart +12 -0
- package/templates/firebase/lib/features/authentication/api/popup_dismiss_watcher_web.dart +35 -0
- package/templates/firebase/lib/features/authentication/ui/recover_password_page.dart +108 -68
- package/templates/firebase/lib/features/authentication/ui/signin_page.dart +38 -51
- package/templates/firebase/lib/features/authentication/ui/signup_page.dart +38 -51
- package/templates/firebase/lib/features/authentication/ui/widgets/auth_card_scaffold.dart +128 -0
- package/templates/firebase/lib/features/authentication/ui/widgets/recover_password_result.dart +61 -44
- package/templates/firebase/lib/features/feedbacks/api/feature_request_api.dart +32 -0
- package/templates/firebase/lib/features/feedbacks/models/feedback_state.dart +5 -5
- package/templates/firebase/lib/features/feedbacks/providers/feedback_page_notifier.dart +2 -2
- package/templates/firebase/lib/features/home/design_system_page.dart +808 -170
- package/templates/firebase/lib/features/home/home_components_page.dart +6 -3
- package/templates/firebase/lib/features/home/home_components_preview_page.dart +6 -6
- package/templates/firebase/lib/features/home/home_components_preview_registry.dart +325 -186
- package/templates/firebase/lib/features/home/home_feed.dart +289 -0
- package/templates/firebase/lib/features/home/home_image_grid.dart +355 -0
- package/templates/firebase/lib/features/home/home_page.dart +11 -250
- package/templates/firebase/lib/features/{local_reminder → local_reminders}/providers/reminder_notifier.dart +1 -1
- package/templates/firebase/lib/features/{local_reminder → local_reminders}/ui/reminder_page.dart +2 -2
- package/templates/firebase/lib/features/notifications/shared/att_permission.dart +1 -1
- package/templates/firebase/lib/features/notifications/ui/request_notification_permission.dart +25 -61
- package/templates/firebase/lib/features/notifications/ui/widgets/permission_request_view.dart +117 -0
- package/templates/firebase/lib/features/onboarding/models/user_info.dart +16 -16
- package/templates/firebase/lib/features/onboarding/ui/components/onboarding_att_setup.dart +4 -3
- package/templates/firebase/lib/features/onboarding/ui/components/onboarding_features.dart +7 -9
- package/templates/firebase/lib/features/onboarding/ui/components/onboarding_loader.dart +71 -48
- package/templates/firebase/lib/features/onboarding/ui/components/onboarding_notifications_setup.dart +3 -2
- package/templates/firebase/lib/features/onboarding/ui/components/onboarding_questions.dart +5 -5
- package/templates/firebase/lib/features/onboarding/ui/onboarding_page.dart +4 -4
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_background.dart +4 -2
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_feature.dart +39 -121
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_illustration_scaffold.dart +105 -70
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_module_mockups.dart +639 -0
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_progress.dart +62 -50
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_radio_question.dart +38 -28
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_step_header.dart +75 -0
- package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_sticky_footer.dart +16 -5
- package/templates/firebase/lib/features/onboarding/ui/widgets/selectable_row_tile.dart +26 -22
- package/templates/firebase/lib/features/settings/settings_page.dart +601 -90
- package/templates/firebase/lib/features/settings/ui/components/admin/admin_page.dart +1193 -0
- package/templates/firebase/lib/features/settings/ui/components/admin/admin_paywalls.dart +1 -1
- package/templates/firebase/lib/features/settings/ui/components/admin/admin_routes.dart +2 -3
- package/templates/firebase/lib/features/settings/ui/components/admin/admin_users_api.dart +86 -0
- package/templates/firebase/lib/features/settings/ui/components/admin/admin_users_tab.dart +1215 -0
- package/templates/firebase/lib/features/settings/ui/components/admin/send_push_notification_page.dart +236 -0
- package/templates/firebase/lib/features/settings/ui/components/avatar_component.dart +3 -3
- package/templates/firebase/lib/features/settings/ui/widgets/kasy_user_avatar.dart +77 -0
- package/templates/firebase/lib/features/settings/ui/widgets/settings_tile.dart +1 -0
- package/templates/firebase/lib/features/{subscription → subscriptions}/api/entities/subscription_entity.dart +17 -0
- package/templates/firebase/lib/features/{subscription → subscriptions}/api/inapp_subscription_api.dart +67 -46
- package/templates/firebase/lib/features/subscriptions/api/revenuecat_product.dart +189 -0
- package/templates/firebase/lib/features/subscriptions/api/stripe_backend_api.dart +55 -0
- package/templates/firebase/lib/features/subscriptions/api/stripe_payment_api.dart +82 -0
- package/templates/firebase/lib/features/subscriptions/api/stripe_product.dart +178 -0
- package/templates/firebase/lib/features/{subscription → subscriptions}/api/subscription_api.dart +1 -1
- package/templates/firebase/lib/features/subscriptions/api/subscription_payment_api.dart +53 -0
- package/templates/firebase/lib/features/subscriptions/api/subscription_payment_api_provider.dart +21 -0
- package/templates/firebase/lib/features/{subscription → subscriptions}/providers/premium_page_provider.dart +9 -6
- package/templates/firebase/lib/features/{subscription → subscriptions}/repositories/subscription_repository.dart +26 -30
- package/{lib/scaffold/backends/supabase/patch/lib/features/subscription → templates/firebase/lib/features/subscriptions}/shared/maybeshow_premium.dart +0 -2
- package/templates/firebase/lib/features/subscriptions/shared/subscription_management.dart +45 -0
- package/templates/firebase/lib/features/{subscription → subscriptions}/ui/component/active_premium_content.dart +28 -4
- package/templates/firebase/lib/features/{subscription → subscriptions}/ui/component/paywall_minimal.dart +7 -7
- package/templates/firebase/lib/features/{subscription → subscriptions}/ui/component/paywall_row.dart +8 -8
- package/templates/firebase/lib/features/{subscription → subscriptions}/ui/component/paywall_with_switch.dart +7 -7
- package/templates/firebase/lib/features/{subscription → subscriptions}/ui/component/premium_content.dart +7 -7
- package/templates/firebase/lib/features/{subscription → subscriptions}/ui/component/premium_page_factory.dart +5 -5
- package/templates/firebase/lib/features/{subscription → subscriptions}/ui/premium_page.dart +5 -5
- package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/comparison_table.dart +1 -1
- package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/paywall_empty_state.dart +4 -4
- package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/premium_bottom_menu.dart +3 -4
- package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/selectable_col.dart +1 -1
- package/templates/firebase/lib/i18n/en.i18n.json +171 -46
- package/templates/firebase/lib/i18n/es.i18n.json +175 -50
- package/templates/firebase/lib/i18n/pt.i18n.json +166 -41
- package/templates/firebase/lib/main.dart +6 -3
- package/templates/firebase/lib/router.dart +15 -23
- package/templates/firebase/pubspec.yaml +5 -6
- package/templates/firebase/test/core/data/repositories/user_repository_test.dart +3 -3
- package/templates/firebase/test/core/states/user_state_notifier_test.dart +4 -4
- package/templates/firebase/test/core/widgets/focus_ring_shape_test.dart +55 -0
- package/templates/firebase/test/features/{subscription → subscriptions}/api/fake_inapp_subscription_api.dart +11 -4
- package/templates/firebase/test/features/{subscription → subscriptions}/api/fake_revenuecat_product.dart +1 -0
- package/templates/firebase/test/features/{subscription → subscriptions}/api/fake_subscription_api.dart +2 -2
- package/templates/firebase/test/features/{subscription → subscriptions}/subscription_page_test.dart +4 -4
- package/templates/firebase/test/test_utils.dart +6 -6
- package/templates/firebase/web/index.html +5 -2
- package/lib/scaffold/backends/api/patch/lib/features/llm_chat/api/llm_chat_api.dart +0 -58
- package/lib/scaffold/backends/api/patch/lib/features/subscription/shared/maybeshow_premium.dart +0 -86
- package/lib/scaffold/backends/supabase/migrations/20240101000009_llm_messages.sql +0 -22
- package/lib/scaffold/backends/supabase/patch/lib/features/llm_chat/api/llm_chat_api.dart +0 -47
- package/templates/firebase/assets/images/onboarding/authentication-login-template.jpg +0 -0
- package/templates/firebase/assets/images/onboarding/img2.jpg +0 -0
- package/templates/firebase/assets/images/onboarding/img3.jpg +0 -0
- package/templates/firebase/assets/images/onboarding/notifications.png +0 -0
- package/templates/firebase/assets/images/onboarding/purchase.png +0 -0
- package/templates/firebase/lib/core/sidebar/kasy_sidebar.dart +0 -2021
- package/templates/firebase/lib/features/authentication/ui/widgets/auth_brand.dart +0 -35
- package/templates/firebase/lib/features/home/home_features_page.dart +0 -207
- package/templates/firebase/lib/features/llm_chat/api/llm_chat_api.dart +0 -50
- package/templates/firebase/lib/features/settings/ui/components/admin/admin_bottom_sheet.dart +0 -316
- package/templates/firebase/lib/features/subscription/shared/maybeshow_premium.dart +0 -85
- /package/templates/firebase/lib/features/{local_reminder → local_reminders}/repositories/reminder_preferences.dart +0 -0
- /package/templates/firebase/lib/features/{subscription → subscriptions}/providers/models/premium_state.dart +0 -0
- /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/feature_line.dart +0 -0
- /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/premium_background.dart +0 -0
- /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/premium_background_gradient.dart +0 -0
- /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/premium_banner.dart +0 -0
- /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/premium_card.dart +0 -0
- /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/premium_close_button.dart +0 -0
- /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/premium_feature.dart +0 -0
- /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/selectable_row.dart +0 -0
- /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/trial_switcher.dart +0 -0
- /package/templates/firebase/lib/features/{subscription → subscriptions}/ui/widgets/unsubscribe_feedback_popup.dart +0 -0
|
@@ -1,4 +1,83 @@
|
|
|
1
1
|
{
|
|
2
|
+
"admin_console": {
|
|
3
|
+
"tabs": {
|
|
4
|
+
"overview": "Resumen",
|
|
5
|
+
"users": "Usuarios",
|
|
6
|
+
"requests": "Solicitudes",
|
|
7
|
+
"kit": "Kit",
|
|
8
|
+
"tools": "Herramientas"
|
|
9
|
+
},
|
|
10
|
+
"overview": {
|
|
11
|
+
"section": "Proyecto",
|
|
12
|
+
"backend": "Backend",
|
|
13
|
+
"account": "Cuenta",
|
|
14
|
+
"guest": "Invitado",
|
|
15
|
+
"user_id": "ID de usuario",
|
|
16
|
+
"build": "Versión",
|
|
17
|
+
"session_title": "Sesión actual",
|
|
18
|
+
"requests_metric": "Solicitudes de función",
|
|
19
|
+
"users_hint": "Abre la pestaña Usuarios para gestionar todas las cuentas.",
|
|
20
|
+
"debug_note": "Consola de depuración — visible solo en builds de desarrollo."
|
|
21
|
+
},
|
|
22
|
+
"users": {
|
|
23
|
+
"title": "Usuarios",
|
|
24
|
+
"search_hint": "Buscar por nombre o correo",
|
|
25
|
+
"col_user": "Usuario",
|
|
26
|
+
"col_status": "Estado",
|
|
27
|
+
"col_plan": "Plan",
|
|
28
|
+
"col_joined": "Registro",
|
|
29
|
+
"status_active": "Activo",
|
|
30
|
+
"status_inactive": "Inactivo",
|
|
31
|
+
"plan_subscriber": "Suscriptor",
|
|
32
|
+
"plan_free": "Gratis",
|
|
33
|
+
"empty": "No se encontraron usuarios",
|
|
34
|
+
"error": "No se pudieron cargar los usuarios. Asegúrate de ser admin.",
|
|
35
|
+
"page": "Página $page de $total",
|
|
36
|
+
"prev": "Anterior",
|
|
37
|
+
"next": "Siguiente",
|
|
38
|
+
"anonymous": "Anónimo",
|
|
39
|
+
"filter_all": "Todos los usuarios",
|
|
40
|
+
"filter_subscribers": "Suscriptores",
|
|
41
|
+
"loading": "Cargando usuarios…",
|
|
42
|
+
"results": "Mostrando $from a $to de $total",
|
|
43
|
+
"truncated": "Mostrando los $count más recientes. La búsqueda cubre solo los cargados.",
|
|
44
|
+
"empty_search": "Ningún usuario coincide con la búsqueda",
|
|
45
|
+
"empty_search_hint": "Prueba con otro nombre o correo.",
|
|
46
|
+
"refresh": "Actualizar",
|
|
47
|
+
"retry": "Reintentar"
|
|
48
|
+
},
|
|
49
|
+
"requests": {
|
|
50
|
+
"title": "Solicitudes de función",
|
|
51
|
+
"empty": "Aún no hay solicitudes",
|
|
52
|
+
"votes": "$count votos",
|
|
53
|
+
"visible": "Visible",
|
|
54
|
+
"hidden": "Oculto",
|
|
55
|
+
"edit": "Editar traducciones",
|
|
56
|
+
"error": "No se pudieron cargar las solicitudes",
|
|
57
|
+
"saved": "Solicitud actualizada",
|
|
58
|
+
"editor_title": "Editar solicitud",
|
|
59
|
+
"field_title": "Título",
|
|
60
|
+
"field_description": "Descripción",
|
|
61
|
+
"lang_en": "Inglés",
|
|
62
|
+
"lang_pt": "Portugués",
|
|
63
|
+
"lang_es": "Español",
|
|
64
|
+
"visibility": "Visible para los usuarios",
|
|
65
|
+
"save": "Guardar",
|
|
66
|
+
"cancel": "Cancelar"
|
|
67
|
+
},
|
|
68
|
+
"groups": {
|
|
69
|
+
"features": "Funciones",
|
|
70
|
+
"showcase": "Vitrina",
|
|
71
|
+
"preview": "Vista previa",
|
|
72
|
+
"debug_actions": "Acciones de debug",
|
|
73
|
+
"identity": "Identidad"
|
|
74
|
+
},
|
|
75
|
+
"settings_entry": {
|
|
76
|
+
"title": "Admin",
|
|
77
|
+
"caption": "Visible solo para administradores y en modo de desarrollo."
|
|
78
|
+
},
|
|
79
|
+
"requires_admin": "Necesitas ser admin para ver esto."
|
|
80
|
+
},
|
|
2
81
|
"home": {
|
|
3
82
|
"title": "Ejemplo Kasy",
|
|
4
83
|
"welcome": "Bienvenido al demo de Kasy",
|
|
@@ -12,7 +91,7 @@
|
|
|
12
91
|
"signup_title": "Registro",
|
|
13
92
|
"signup_description": "El usuario anónimo puede registrarse con correo o red social",
|
|
14
93
|
"assistant_title": "Asistente IA",
|
|
15
|
-
"assistant_description": "
|
|
94
|
+
"assistant_description": "Chatear con el asistente de IA"
|
|
16
95
|
},
|
|
17
96
|
"features_page": {
|
|
18
97
|
"title": "Recursos del kit",
|
|
@@ -78,8 +157,11 @@
|
|
|
78
157
|
},
|
|
79
158
|
"recover": {
|
|
80
159
|
"title": "Recuperar contraseña",
|
|
160
|
+
"subtitle": "Ingresa tu correo y te enviaremos un enlace para crear una nueva contraseña.",
|
|
81
161
|
"email_label": "Correo electrónico",
|
|
82
162
|
"submit": "Recuperar contraseña",
|
|
163
|
+
"remember": "¿Recordaste tu contraseña?",
|
|
164
|
+
"signin_link": "Iniciar sesión",
|
|
83
165
|
"error_title": "Error",
|
|
84
166
|
"error_text": "Ingresa un correo electrónico válido"
|
|
85
167
|
}
|
|
@@ -148,6 +230,9 @@
|
|
|
148
230
|
"unsubscribe_feedback_min_chars": "Se requieren mínimo 6 caracteres",
|
|
149
231
|
"unsubscribe_confirm_button": "Continuar",
|
|
150
232
|
"lifetime_user_description": "Eres un usuario de por vida",
|
|
233
|
+
"managed_elsewhere_title": "Suscripción en otra plataforma",
|
|
234
|
+
"managed_elsewhere_description": "Esta suscripción se realizó en otra plataforma y no se puede gestionar ni cancelar aquí. Inicia sesión en tu cuenta en la plataforma donde la compraste.",
|
|
235
|
+
"restore_button": "Restaurar compras",
|
|
151
236
|
"cancel_button": "Cerrar"
|
|
152
237
|
},
|
|
153
238
|
"paywallWithSwitch": {
|
|
@@ -172,65 +257,96 @@
|
|
|
172
257
|
},
|
|
173
258
|
"onboarding": {
|
|
174
259
|
"feature_1": {
|
|
175
|
-
"title": "
|
|
176
|
-
"description": "
|
|
260
|
+
"title": "Monetiza desde el día uno",
|
|
261
|
+
"description": "Paywalls, suscripciones y prueba gratis listos para producción. Sin crear backend de cobros.",
|
|
177
262
|
"action": "Continuar",
|
|
178
263
|
"skip": "Omitir",
|
|
179
264
|
"login": "¿Ya tienes cuenta? Iniciar sesión"
|
|
180
265
|
},
|
|
181
266
|
"feature_2": {
|
|
182
|
-
"title": "
|
|
183
|
-
"description": "
|
|
267
|
+
"title": "Inicio de sesión, ya resuelto",
|
|
268
|
+
"description": "Correo, login social y recuperación de contraseña. Seguro y listo para publicar.",
|
|
184
269
|
"action": "Continuar"
|
|
185
270
|
},
|
|
186
271
|
"feature_3": {
|
|
187
|
-
"title": "
|
|
188
|
-
"description": "
|
|
272
|
+
"title": "Haz que vuelvan",
|
|
273
|
+
"description": "Push, avisos en la app y permisos ya integrados para enganchar y retener.",
|
|
189
274
|
"action": "Continuar"
|
|
190
275
|
},
|
|
276
|
+
"mockups": {
|
|
277
|
+
"paywall": {
|
|
278
|
+
"title": "Premium",
|
|
279
|
+
"annual": "Anual",
|
|
280
|
+
"monthly": "Mensual",
|
|
281
|
+
"save_badge": "-40%",
|
|
282
|
+
"price_year": "\\$39,99 / año",
|
|
283
|
+
"price_month": "\\$4,99 / mes",
|
|
284
|
+
"cta": "Iniciar prueba gratis"
|
|
285
|
+
},
|
|
286
|
+
"auth": {
|
|
287
|
+
"welcome": "Bienvenido de vuelta",
|
|
288
|
+
"email_hint": "tu@email.com",
|
|
289
|
+
"sign_in": "Iniciar sesión",
|
|
290
|
+
"divider": "o"
|
|
291
|
+
},
|
|
292
|
+
"notification": {
|
|
293
|
+
"title": "Nuevo mensaje",
|
|
294
|
+
"time": "ahora"
|
|
295
|
+
},
|
|
296
|
+
"push_permission": {
|
|
297
|
+
"title": "¿Activar notificaciones?",
|
|
298
|
+
"allow": "Permitir",
|
|
299
|
+
"deny": "Ahora no"
|
|
300
|
+
},
|
|
301
|
+
"tracking_permission": {
|
|
302
|
+
"title": "¿Permitir seguimiento?",
|
|
303
|
+
"allow": "Permitir",
|
|
304
|
+
"deny": "Pedir no rastrear"
|
|
305
|
+
}
|
|
306
|
+
},
|
|
191
307
|
"ageQuestion": {
|
|
192
|
-
"title": "¿
|
|
193
|
-
"description": "Esto nos ayuda a personalizar tu experiencia
|
|
308
|
+
"title": "¿Cuántos años tienes?",
|
|
309
|
+
"description": "Esto nos ayuda a personalizar tu experiencia.",
|
|
194
310
|
"options(map)": {
|
|
195
|
-
"age18_30": "
|
|
196
|
-
"age31_40": "
|
|
197
|
-
"age41_50": "
|
|
198
|
-
"age51_60": "50 años
|
|
199
|
-
"none": "Prefiero no
|
|
311
|
+
"age18_30": "18 a 30 años",
|
|
312
|
+
"age31_40": "31 a 40 años",
|
|
313
|
+
"age41_50": "41 a 50 años",
|
|
314
|
+
"age51_60": "Más de 50 años",
|
|
315
|
+
"none": "Prefiero no decirlo"
|
|
200
316
|
},
|
|
201
317
|
"action": "Continuar"
|
|
202
318
|
},
|
|
203
319
|
"genderQuestion": {
|
|
204
|
-
"title": "¿
|
|
205
|
-
"description": "Elige
|
|
320
|
+
"title": "¿Cómo te identificas?",
|
|
321
|
+
"description": "Elige lo que mejor te represente. Puedes omitir si prefieres.",
|
|
206
322
|
"options(map)": {
|
|
207
323
|
"male": "Masculino",
|
|
208
324
|
"female": "Femenino",
|
|
209
|
-
"none": "Prefiero no
|
|
325
|
+
"none": "Prefiero no decirlo"
|
|
210
326
|
},
|
|
211
327
|
"action": "Continuar"
|
|
212
328
|
},
|
|
213
329
|
"notifications": {
|
|
214
|
-
"title": "
|
|
215
|
-
"description": "Solo te
|
|
216
|
-
"continue_button": "
|
|
217
|
-
"skip_button": "
|
|
330
|
+
"title": "No te pierdas nada",
|
|
331
|
+
"description": "Solo te escribiremos cuando de verdad importe. Nada de spam.",
|
|
332
|
+
"continue_button": "Activar notificaciones",
|
|
333
|
+
"skip_button": "Ahora no"
|
|
218
334
|
},
|
|
219
335
|
"att": {
|
|
220
|
-
"title": "
|
|
221
|
-
"description": "
|
|
336
|
+
"title": "Tú tienes el control",
|
|
337
|
+
"description": "Permite el seguimiento para anuncios más relevantes. La decisión siempre es tuya.",
|
|
222
338
|
"continue_button": "Continuar"
|
|
223
339
|
},
|
|
224
340
|
"loading": {
|
|
225
|
-
"title": "
|
|
226
|
-
"subtitle": "
|
|
341
|
+
"title": "Preparando todo para ti",
|
|
342
|
+
"subtitle": "Solo tomará un momento"
|
|
227
343
|
}
|
|
228
344
|
},
|
|
229
345
|
"feature_requests": {
|
|
230
346
|
"title": "Ideas",
|
|
231
347
|
"description": "Vota ideas o comparte la tuya. Cada voz define lo que construimos.",
|
|
232
348
|
"community_ideas": "Ideas de la comunidad",
|
|
233
|
-
"no_requests": "Sin ideas
|
|
349
|
+
"no_requests": "Sin ideas aún. Sé el primero en sugerir una.",
|
|
234
350
|
"vote_success": {
|
|
235
351
|
"title": "Voto registrado",
|
|
236
352
|
"description": "Gracias por ayudarnos a priorizar"
|
|
@@ -242,16 +358,16 @@
|
|
|
242
358
|
"add_feature": {
|
|
243
359
|
"chip_label": "Agregar",
|
|
244
360
|
"title": "Enviar una idea",
|
|
245
|
-
"description": "
|
|
361
|
+
"description": "Cuéntanos qué te gustaría ver en la app.",
|
|
246
362
|
"save_button": "Enviar",
|
|
247
|
-
"title_label": "
|
|
248
|
-
"title_hint": "Un
|
|
249
|
-
"description_label": "
|
|
363
|
+
"title_label": "Título",
|
|
364
|
+
"title_hint": "Un título corto y descriptivo",
|
|
365
|
+
"description_label": "Descripción",
|
|
250
366
|
"description_hint": "Describe el recurso o la mejora en detalle...",
|
|
251
367
|
"error_title": "Error",
|
|
252
|
-
"error_required": "El
|
|
253
|
-
"error_sending": "Algo
|
|
254
|
-
"error_too_short": "
|
|
368
|
+
"error_required": "El título y la descripción son obligatorios",
|
|
369
|
+
"error_sending": "Algo salió mal. Inténtalo de nuevo.",
|
|
370
|
+
"error_too_short": "Descripción muy corta. Agrega más detalles",
|
|
255
371
|
"toast_success": {
|
|
256
372
|
"title": "Idea enviada",
|
|
257
373
|
"description": "La revisaremos y te daremos una respuesta"
|
|
@@ -289,13 +405,10 @@
|
|
|
289
405
|
},
|
|
290
406
|
"navigation": {
|
|
291
407
|
"home": "Inicio",
|
|
292
|
-
"
|
|
408
|
+
"support": "Soporte",
|
|
293
409
|
"notifications": "Notificaciones",
|
|
294
|
-
"settings": "Config."
|
|
295
|
-
|
|
296
|
-
"wishlist": {
|
|
297
|
-
"empty_title": "Nada aquí aún",
|
|
298
|
-
"empty_subtitle": "Guarda tus favoritos para encontrarlos aquí"
|
|
410
|
+
"settings": "Config.",
|
|
411
|
+
"logout": "Salir"
|
|
299
412
|
},
|
|
300
413
|
"reminderPage": {
|
|
301
414
|
"title": "Recordatorios",
|
|
@@ -368,10 +481,11 @@
|
|
|
368
481
|
"premium": "Premium",
|
|
369
482
|
"privacy": "Política de privacidad",
|
|
370
483
|
"support": "Soporte",
|
|
371
|
-
"disconnect": "
|
|
372
|
-
"disconnect_confirm_title": "Salir",
|
|
484
|
+
"disconnect": "Sí, salir",
|
|
485
|
+
"disconnect_confirm_title": "¿Salir de tu cuenta?",
|
|
373
486
|
"disconnect_confirm_message": "¿Seguro que quieres salir?",
|
|
374
487
|
"disconnect_cancel": "Cancelar",
|
|
488
|
+
"logout": "Cerrar sesión",
|
|
375
489
|
"my_account": "Mi cuenta",
|
|
376
490
|
"not_signed_in": "No conectado",
|
|
377
491
|
"register": "Registrarse",
|
|
@@ -381,8 +495,8 @@
|
|
|
381
495
|
"admin_panel_debug_notice": "Toda esta sección Admin (título, panel y opciones) solo existe en builds de debug. No se incluye en release; quien instala desde la tienda o un APK de producción no ve nada de esto.",
|
|
382
496
|
"delete_account": {
|
|
383
497
|
"button": "Quiero eliminar mi cuenta",
|
|
384
|
-
"title": "¿
|
|
385
|
-
"content": "Advertencia: esta acción es irreversible",
|
|
498
|
+
"title": "¿Quieres eliminar tu cuenta?",
|
|
499
|
+
"content": "Advertencia: esta acción es irreversible.",
|
|
386
500
|
"cancel": "Cancelar",
|
|
387
501
|
"confirm": "Sí, eliminar"
|
|
388
502
|
},
|
|
@@ -421,6 +535,10 @@
|
|
|
421
535
|
"send_push_no_emails": "Agrega al menos un correo",
|
|
422
536
|
"send_push_route_label": "Ruta al abrir (opcional)",
|
|
423
537
|
"send_push_route_hint": "Ej: /premium, /notifications",
|
|
538
|
+
"send_push_preview_label": "Vista previa",
|
|
539
|
+
"send_push_preview_now": "ahora",
|
|
540
|
+
"send_push_preview_title_placeholder": "Título de la notificación",
|
|
541
|
+
"send_push_preview_body_placeholder": "El cuerpo del mensaje aparece aquí",
|
|
424
542
|
"device_preview_title": "Device Preview (solo web)"
|
|
425
543
|
}
|
|
426
544
|
},
|
|
@@ -448,7 +566,7 @@
|
|
|
448
566
|
"delete_all": "Eliminar todo",
|
|
449
567
|
"delete_all_confirm_title": "¿Eliminar todas las notificaciones?",
|
|
450
568
|
"delete_all_confirm_message": "Esto eliminará todas las notificaciones de tu cuenta. Esta acción no se puede deshacer.",
|
|
451
|
-
"delete_action": "
|
|
569
|
+
"delete_action": "Sí, eliminar",
|
|
452
570
|
"cancel_action": "Cancelar",
|
|
453
571
|
"deleted_one": "Notificación eliminada",
|
|
454
572
|
"deleted_all": "Todas las notificaciones eliminadas"
|
|
@@ -456,18 +574,25 @@
|
|
|
456
574
|
"bottom_router": {
|
|
457
575
|
"fake_page_text": "Esta es una página de prueba"
|
|
458
576
|
},
|
|
459
|
-
"
|
|
460
|
-
"title": "
|
|
577
|
+
"ai_chat": {
|
|
578
|
+
"title": "Asistente IA",
|
|
461
579
|
"empty_state": "Inicia una conversación con tu asistente.",
|
|
462
580
|
"hint": "Pregunta algo...",
|
|
463
|
-
"error_not_configured": "
|
|
464
|
-
"error_no_reply": "No
|
|
465
|
-
"error_network": "No se pudo conectar al asistente de IA."
|
|
581
|
+
"error_not_configured": "El asistente aún no está disponible. Inténtalo más tarde.",
|
|
582
|
+
"error_no_reply": "No pudimos obtener una respuesta. Inténtalo de nuevo.",
|
|
583
|
+
"error_network": "No se pudo conectar al asistente de IA.",
|
|
584
|
+
"new_conversation": "Nueva conversación",
|
|
585
|
+
"conversations_empty": "Aún no hay conversaciones",
|
|
586
|
+
"no_conversation_selected": "Elige una conversación o empieza una nueva.",
|
|
587
|
+
"delete_title": "¿Eliminar conversación?",
|
|
588
|
+
"delete_message": "Esta conversación y todos sus mensajes se eliminarán de forma permanente.",
|
|
589
|
+
"delete_cancel": "Cancelar",
|
|
590
|
+
"delete_confirm": "Sí, eliminar"
|
|
466
591
|
},
|
|
467
592
|
"phone_auth": {
|
|
468
593
|
"title_input": "Autenticación por Teléfono",
|
|
469
594
|
"subtitle_input": "Ingresa tu número de teléfono",
|
|
470
|
-
"description_input": "
|
|
595
|
+
"description_input": "Te enviaremos un código de verificación para confirmar tu identidad",
|
|
471
596
|
"phone_label": "Número de teléfono",
|
|
472
597
|
"phone_hint": "+34 600 123 456",
|
|
473
598
|
"error_empty": "Por favor, ingresa un número de teléfono",
|