kasy-cli 1.24.0 → 1.26.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 (41) hide show
  1. package/lib/commands/new.js +53 -3
  2. package/lib/utils/flutter-install.js +26 -1
  3. package/lib/utils/i18n/messages-en.js +3 -0
  4. package/lib/utils/i18n/messages-es.js +3 -0
  5. package/lib/utils/i18n/messages-pt.js +3 -0
  6. package/package.json +1 -1
  7. package/templates/firebase/lib/components/kasy_app_bar.dart +12 -6
  8. package/templates/firebase/lib/components/kasy_avatar.dart +17 -10
  9. package/templates/firebase/lib/components/kasy_card.dart +4 -0
  10. package/templates/firebase/lib/components/kasy_checkbox.dart +24 -15
  11. package/templates/firebase/lib/components/kasy_date_picker.dart +27 -20
  12. package/templates/firebase/lib/components/kasy_otp_verification_bottom_sheet.dart +19 -14
  13. package/templates/firebase/lib/components/kasy_sidebar.dart +6 -0
  14. package/templates/firebase/lib/components/kasy_tabs.dart +76 -65
  15. package/templates/firebase/lib/core/bottom_menu/bottom_menu.dart +103 -3
  16. package/templates/firebase/lib/core/bottom_menu/web_content_wrapper.dart +45 -2
  17. package/templates/firebase/lib/core/widgets/kasy_pressable_depth.dart +37 -1
  18. package/templates/firebase/lib/features/ai_chat/ui/widgets/ai_conversation_tile.dart +9 -4
  19. package/templates/firebase/lib/features/authentication/ui/recover_password_page.dart +1 -0
  20. package/templates/firebase/lib/features/authentication/ui/signin_page.dart +10 -5
  21. package/templates/firebase/lib/features/authentication/ui/signup_page.dart +1 -0
  22. package/templates/firebase/lib/features/feedbacks/ui/widgets/add_feature_button.dart +1 -0
  23. package/templates/firebase/lib/features/feedbacks/ui/widgets/feature_card.dart +2 -0
  24. package/templates/firebase/lib/features/home/home_feed.dart +21 -5
  25. package/templates/firebase/lib/features/home/home_image_grid.dart +83 -58
  26. package/templates/firebase/lib/features/local_reminders/ui/reminder_page.dart +124 -101
  27. package/templates/firebase/lib/features/notifications/ui/components/notification_tile.dart +1 -0
  28. package/templates/firebase/lib/features/notifications/ui/widgets/notification_tile.dart +85 -85
  29. package/templates/firebase/lib/features/onboarding/ui/widgets/selectable_row_tile.dart +67 -62
  30. package/templates/firebase/lib/features/settings/settings_page.dart +17 -1
  31. package/templates/firebase/lib/features/settings/ui/components/avatar_component.dart +37 -23
  32. package/templates/firebase/lib/features/settings/ui/components/language_switcher.dart +63 -48
  33. package/templates/firebase/lib/features/settings/ui/widgets/admin_card.dart +14 -6
  34. package/templates/firebase/lib/features/settings/ui/widgets/settings_tile.dart +2 -0
  35. package/templates/firebase/lib/features/subscriptions/ui/widgets/premium_banner.dart +9 -3
  36. package/templates/firebase/lib/features/subscriptions/ui/widgets/premium_close_button.dart +24 -16
  37. package/templates/firebase/lib/features/subscriptions/ui/widgets/selectable_col.dart +29 -22
  38. package/templates/firebase/lib/features/subscriptions/ui/widgets/selectable_row.dart +19 -12
  39. package/templates/firebase/lib/i18n/en.i18n.json +2 -1
  40. package/templates/firebase/lib/i18n/es.i18n.json +2 -1
  41. package/templates/firebase/lib/i18n/pt.i18n.json +2 -1
@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
4
4
  import 'package:flutter_animate/flutter_animate.dart';
5
5
  import 'package:kasy_kit/core/haptics/kasy_haptics.dart';
6
6
  import 'package:kasy_kit/core/theme/theme.dart';
7
+ import 'package:kasy_kit/core/widgets/kasy_focus_ring.dart';
7
8
  import 'package:kasy_kit/features/subscriptions/ui/widgets/selectable_row.dart';
8
9
 
9
10
 
@@ -43,6 +44,17 @@ class _SelectableColGroupState<T> extends State<SelectableColGroup<T>> {
43
44
 
44
45
  OnSelectItem<T> get onSelectItem => widget.onSelectItem;
45
46
 
47
+ void _selectIndex(int i) {
48
+ setState(() {
49
+ if (selectedIndex == i) {
50
+ return;
51
+ }
52
+ KasyHaptics.heavy(context);
53
+ selectedIndex = i;
54
+ onSelectItem(widget.items[i].data);
55
+ });
56
+ }
57
+
46
58
  @override
47
59
  Widget build(BuildContext context) {
48
60
  return IntrinsicHeight(
@@ -53,29 +65,24 @@ class _SelectableColGroupState<T> extends State<SelectableColGroup<T>> {
53
65
  children: [
54
66
  for (var i = 0; i < widget.items.length; i++)
55
67
  Expanded(
56
- child: GestureDetector(
57
- onTap: () {
58
- setState(() {
59
- if (selectedIndex == i) {
60
- return;
61
- }
62
- KasyHaptics.heavy(context);
63
- selectedIndex = i;
64
- onSelectItem(widget.items[i].data);
65
- });
66
- },
67
- child: Animate(
68
- effects: [
69
- FadeEffect(
70
- delay: Duration(milliseconds: 100 + 100 * i),
71
- duration: const Duration(milliseconds: 500),
68
+ child: KasyFocusRing(
69
+ onActivate: () => _selectIndex(i),
70
+ borderRadius: KasyRadius.lgBorderRadius,
71
+ child: GestureDetector(
72
+ onTap: () => _selectIndex(i),
73
+ child: Animate(
74
+ effects: [
75
+ FadeEffect(
76
+ delay: Duration(milliseconds: 100 + 100 * i),
77
+ duration: const Duration(milliseconds: 500),
78
+ ),
79
+ ],
80
+ child: SelectableCol.fromOption(
81
+ key: ValueKey('item_$i'),
82
+ widget.items[i],
83
+ selected: selectedIndex == i,
84
+ brightness: widget.brightness,
72
85
  ),
73
- ],
74
- child: SelectableCol.fromOption(
75
- key: ValueKey('item_$i'),
76
- widget.items[i],
77
- selected: selectedIndex == i,
78
- brightness: widget.brightness,
79
86
  ),
80
87
  ),
81
88
  ),
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
2
2
  import 'package:flutter_animate/flutter_animate.dart';
3
3
  import 'package:kasy_kit/core/haptics/kasy_haptics.dart';
4
4
  import 'package:kasy_kit/core/theme/theme.dart';
5
+ import 'package:kasy_kit/core/widgets/kasy_focus_ring.dart';
5
6
 
6
7
  typedef OnSelectItem<T> = void Function(T data);
7
8
 
@@ -34,23 +35,28 @@ class _SelectableRowGroupState<T> extends State<SelectableRowGroup<T>> {
34
35
 
35
36
  OnSelectItem<T> get onSelectItem => widget.onSelectItem;
36
37
 
38
+ void _selectIndex(int i) {
39
+ setState(() {
40
+ if (selectedIndex == i) {
41
+ return;
42
+ }
43
+ KasyHaptics.heavy(context);
44
+ selectedIndex = i;
45
+ onSelectItem(widget.items[i].data);
46
+ });
47
+ }
48
+
37
49
  @override
38
50
  Widget build(BuildContext context) {
39
51
  return Column(
40
52
  children: [
41
53
  for (var i = 0; i < widget.items.length; i++)
42
- GestureDetector(
43
- onTap: () {
44
- setState(() {
45
- if (selectedIndex == i) {
46
- return;
47
- }
48
- KasyHaptics.heavy(context);
49
- selectedIndex = i;
50
- onSelectItem(widget.items[i].data);
51
- });
52
- },
53
- child: Padding(
54
+ KasyFocusRing(
55
+ onActivate: () => _selectIndex(i),
56
+ borderRadius: KasyRadius.mdBorderRadius,
57
+ child: GestureDetector(
58
+ onTap: () => _selectIndex(i),
59
+ child: Padding(
54
60
  padding: EdgeInsets.only(
55
61
  bottom: i == widget.items.length - 1 ? 0 : KasySpacing.sm,
56
62
  ),
@@ -69,6 +75,7 @@ class _SelectableRowGroupState<T> extends State<SelectableRowGroup<T>> {
69
75
  ),
70
76
  ),
71
77
  ),
78
+ ),
72
79
  ),
73
80
  ],
74
81
  );
@@ -408,7 +408,8 @@
408
408
  "support": "Support",
409
409
  "notifications": "Notifications",
410
410
  "settings": "Config.",
411
- "logout": "Sign out"
411
+ "logout": "Sign out",
412
+ "skip_to_content": "Skip to content"
412
413
  },
413
414
  "reminderPage": {
414
415
  "title": "Reminders",
@@ -408,7 +408,8 @@
408
408
  "support": "Soporte",
409
409
  "notifications": "Notificaciones",
410
410
  "settings": "Config.",
411
- "logout": "Salir"
411
+ "logout": "Salir",
412
+ "skip_to_content": "Saltar al contenido"
412
413
  },
413
414
  "reminderPage": {
414
415
  "title": "Recordatorios",
@@ -408,7 +408,8 @@
408
408
  "support": "Suporte",
409
409
  "notifications": "Notificações",
410
410
  "settings": "Config.",
411
- "logout": "Sair"
411
+ "logout": "Sair",
412
+ "skip_to_content": "Pular para o conteúdo"
412
413
  },
413
414
  "reminderPage": {
414
415
  "title": "Lembretes",