From c8421d8c08d3e93fe57ec46d0fb64e7a2259be73 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sat, 8 Mar 2025 15:22:53 +0530 Subject: [PATCH 01/43] feat: added welcome page --- frontend/src/components/Icons/GoogleIcon.vue | 29 ++++++++++ frontend/src/components/Modals/LeadModal.vue | 4 +- frontend/src/pages/Welcome.vue | 61 ++++++++++++++++++++ frontend/src/router.js | 5 ++ 4 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 frontend/src/components/Icons/GoogleIcon.vue create mode 100644 frontend/src/pages/Welcome.vue diff --git a/frontend/src/components/Icons/GoogleIcon.vue b/frontend/src/components/Icons/GoogleIcon.vue new file mode 100644 index 00000000..5e0d8aa5 --- /dev/null +++ b/frontend/src/components/Icons/GoogleIcon.vue @@ -0,0 +1,29 @@ + diff --git a/frontend/src/components/Modals/LeadModal.vue b/frontend/src/components/Modals/LeadModal.vue index dbe21ba6..b7e4f99e 100644 --- a/frontend/src/components/Modals/LeadModal.vue +++ b/frontend/src/components/Modals/LeadModal.vue @@ -122,7 +122,7 @@ const createLead = createResource({ const leadStatuses = computed(() => { let statuses = statusOptions('lead') if (!lead.status) { - lead.status = statuses[0].value + lead.status = statuses?.[0]?.value } return statuses }) @@ -192,7 +192,7 @@ onMounted(() => { if (!lead.lead_owner) { lead.lead_owner = getUser().name } - if (!lead.status && leadStatuses.value[0].value) { + if (!lead.status && leadStatuses.value[0]?.value) { lead.status = leadStatuses.value[0].value } }) diff --git a/frontend/src/pages/Welcome.vue b/frontend/src/pages/Welcome.vue new file mode 100644 index 00000000..d03f8aeb --- /dev/null +++ b/frontend/src/pages/Welcome.vue @@ -0,0 +1,61 @@ + + diff --git a/frontend/src/router.js b/frontend/src/router.js index 06e5ce79..e5665630 100644 --- a/frontend/src/router.js +++ b/frontend/src/router.js @@ -91,6 +91,11 @@ const routes = [ component: () => import('@/pages/EmailTemplate.vue'), props: true, }, + { + path: '/welcome', + name: 'Welcome', + component: () => import('@/pages/Welcome.vue'), + }, { path: '/:invalidpath', name: 'Invalid Page', From e055c479424a5905a8bafa2895ef7aa36e2c9290 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sat, 8 Mar 2025 16:13:05 +0530 Subject: [PATCH 02/43] feat: added help modal with minimize & maximize functionality and added in sidebar --- frontend/src/components/Icons/HelpIcon.vue | 16 ++++++++++ .../src/components/Layouts/AppSidebar.vue | 18 ++++++++++-- frontend/src/components/Modals/HelpModal.vue | 29 +++++++++++++++++++ 3 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 frontend/src/components/Icons/HelpIcon.vue create mode 100644 frontend/src/components/Modals/HelpModal.vue diff --git a/frontend/src/components/Icons/HelpIcon.vue b/frontend/src/components/Icons/HelpIcon.vue new file mode 100644 index 00000000..97c09698 --- /dev/null +++ b/frontend/src/components/Icons/HelpIcon.vue @@ -0,0 +1,16 @@ + diff --git a/frontend/src/components/Layouts/AppSidebar.vue b/frontend/src/components/Layouts/AppSidebar.vue index cf9ea854..360c5a9a 100644 --- a/frontend/src/components/Layouts/AppSidebar.vue +++ b/frontend/src/components/Layouts/AppSidebar.vue @@ -74,6 +74,15 @@
+ + + @@ -109,10 +119,12 @@ import TaskIcon from '@/components/Icons/TaskIcon.vue' import PhoneIcon from '@/components/Icons/PhoneIcon.vue' import CollapseSidebar from '@/components/Icons/CollapseSidebar.vue' import NotificationsIcon from '@/components/Icons/NotificationsIcon.vue' +import HelpIcon from '@/components/Icons/HelpIcon.vue' import SidebarLink from '@/components/SidebarLink.vue' import Notifications from '@/components/Notifications.vue' import Settings from '@/components/Settings/Settings.vue' import SignupBanner from '@/components/SignupBanner.vue' +import HelpModal from '@/components/Modals/HelpModal.vue' import { viewsStore } from '@/stores/views' import { unreadNotificationsCount, @@ -233,4 +245,6 @@ function getIcon(routeName, icon) { return PinIcon } } + +const showHelpModal = ref(false) diff --git a/frontend/src/components/Modals/HelpModal.vue b/frontend/src/components/Modals/HelpModal.vue new file mode 100644 index 00000000..21eddbe6 --- /dev/null +++ b/frontend/src/components/Modals/HelpModal.vue @@ -0,0 +1,29 @@ + + From 56c3692a041f4d236fa35ccae99284e2a51ef3f7 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sat, 8 Mar 2025 16:48:24 +0530 Subject: [PATCH 03/43] fix: show getting started banner in sidebar if not completed --- .../src/components/GettingStartedBanner.vue | 33 +++++++++++++++++++ frontend/src/components/Icons/StepsIcon.vue | 16 +++++++++ .../src/components/Layouts/AppSidebar.vue | 17 +++++++++- frontend/src/components/Modals/HelpModal.vue | 4 +++ 4 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 frontend/src/components/GettingStartedBanner.vue create mode 100644 frontend/src/components/Icons/StepsIcon.vue diff --git a/frontend/src/components/GettingStartedBanner.vue b/frontend/src/components/GettingStartedBanner.vue new file mode 100644 index 00000000..fd06f678 --- /dev/null +++ b/frontend/src/components/GettingStartedBanner.vue @@ -0,0 +1,33 @@ + + diff --git a/frontend/src/components/Icons/StepsIcon.vue b/frontend/src/components/Icons/StepsIcon.vue new file mode 100644 index 00000000..94d2efab --- /dev/null +++ b/frontend/src/components/Icons/StepsIcon.vue @@ -0,0 +1,16 @@ + diff --git a/frontend/src/components/Layouts/AppSidebar.vue b/frontend/src/components/Layouts/AppSidebar.vue index 360c5a9a..c685fd77 100644 --- a/frontend/src/components/Layouts/AppSidebar.vue +++ b/frontend/src/components/Layouts/AppSidebar.vue @@ -74,7 +74,13 @@
+ - +
@@ -124,6 +134,7 @@ import SidebarLink from '@/components/SidebarLink.vue' import Notifications from '@/components/Notifications.vue' import Settings from '@/components/Settings/Settings.vue' import SignupBanner from '@/components/SignupBanner.vue' +import GettingStartedBanner from '@/components/GettingStartedBanner.vue' import HelpModal from '@/components/Modals/HelpModal.vue' import { viewsStore } from '@/stores/views' import { @@ -246,5 +257,9 @@ function getIcon(routeName, icon) { } } +const isOnboardingStepsCompleted = useStorage( + 'isOnboardingStepsCompleted', + false, +) const showHelpModal = ref(false) diff --git a/frontend/src/components/Modals/HelpModal.vue b/frontend/src/components/Modals/HelpModal.vue index 21eddbe6..9bf0f9bb 100644 --- a/frontend/src/components/Modals/HelpModal.vue +++ b/frontend/src/components/Modals/HelpModal.vue @@ -24,6 +24,10 @@ import MinimizeIcon from '@/components/Icons/MinimizeIcon.vue' import MaximizeIcon from '@/components/Icons/MaximizeIcon.vue' import { ref } from 'vue' +const props = defineProps({ + isOnboardingStepsCompleted: Boolean, +}) + const show = defineModel() const minimize = ref(false) From b5add306c3859fd389d7cedaa35e06edc9c6553a Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Wed, 12 Mar 2025 13:43:42 +0530 Subject: [PATCH 04/43] fix: added steps with icon in help modal --- .../src/components/GettingStartedBanner.vue | 7 +- frontend/src/components/Icons/ConvertIcon.vue | 16 ++++ frontend/src/components/Icons/InviteIcon.vue | 16 ++++ frontend/src/components/Modals/HelpModal.vue | 72 ++++++++++++++--- frontend/src/components/Settings/Settings.vue | 3 +- frontend/src/composables/onboarding.js | 80 +++++++++++++++++++ 6 files changed, 181 insertions(+), 13 deletions(-) create mode 100644 frontend/src/components/Icons/ConvertIcon.vue create mode 100644 frontend/src/components/Icons/InviteIcon.vue create mode 100644 frontend/src/composables/onboarding.js diff --git a/frontend/src/components/GettingStartedBanner.vue b/frontend/src/components/GettingStartedBanner.vue index fd06f678..a5aaa263 100644 --- a/frontend/src/components/GettingStartedBanner.vue +++ b/frontend/src/components/GettingStartedBanner.vue @@ -9,7 +9,9 @@
{{ __('Gettings started') }}
-
{{ __('4/10 steps') }}
+
+ {{ __('{0}/{1} steps', [stepsCompleted, totalSteps]) }} +