@nextsparkjs/theme-crm 0.1.0-beta.1
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/CRM_PLAN.md +343 -0
- package/about.md +122 -0
- package/config/app.config.ts +185 -0
- package/config/billing.config.ts +187 -0
- package/config/dashboard.config.ts +372 -0
- package/config/dev.config.ts +55 -0
- package/config/features.config.ts +336 -0
- package/config/flows.config.ts +511 -0
- package/config/permissions.config.ts +297 -0
- package/config/theme.config.ts +111 -0
- package/entities/activities/activities.config.ts +61 -0
- package/entities/activities/activities.fields.ts +362 -0
- package/entities/activities/activities.service.ts +503 -0
- package/entities/activities/activities.types.ts +117 -0
- package/entities/activities/messages/en.json +123 -0
- package/entities/activities/messages/es.json +123 -0
- package/entities/activities/migrations/020_activities_table.sql +123 -0
- package/entities/activities/migrations/021_activities_metas.sql +114 -0
- package/entities/activities/migrations/022_activities_sample_data.sql +420 -0
- package/entities/campaigns/campaigns.config.ts +61 -0
- package/entities/campaigns/campaigns.fields.ts +413 -0
- package/entities/campaigns/campaigns.service.ts +426 -0
- package/entities/campaigns/campaigns.types.ts +124 -0
- package/entities/campaigns/messages/en.json +145 -0
- package/entities/campaigns/messages/es.json +145 -0
- package/entities/campaigns/migrations/001_campaigns_table.sql +127 -0
- package/entities/campaigns/migrations/002_campaigns_metas.sql +114 -0
- package/entities/campaigns/migrations/003_campaigns_sample_data.sql +364 -0
- package/entities/companies/companies.config.ts +61 -0
- package/entities/companies/companies.fields.ts +429 -0
- package/entities/companies/companies.service.ts +566 -0
- package/entities/companies/companies.types.ts +125 -0
- package/entities/companies/messages/en.json +146 -0
- package/entities/companies/messages/es.json +146 -0
- package/entities/companies/migrations/001_companies_table.sql +150 -0
- package/entities/companies/migrations/002_companies_metas.sql +114 -0
- package/entities/companies/migrations/003_companies_sample_data.sql +246 -0
- package/entities/contacts/contacts.config.ts +61 -0
- package/entities/contacts/contacts.fields.ts +359 -0
- package/entities/contacts/contacts.service.ts +509 -0
- package/entities/contacts/contacts.types.ts +108 -0
- package/entities/contacts/messages/en.json +117 -0
- package/entities/contacts/messages/es.json +117 -0
- package/entities/contacts/migrations/001_contacts_table.sql +134 -0
- package/entities/contacts/migrations/002_contacts_metas.sql +114 -0
- package/entities/contacts/migrations/003_contacts_sample_data.sql +421 -0
- package/entities/leads/leads.config.ts +61 -0
- package/entities/leads/leads.fields.ts +336 -0
- package/entities/leads/leads.service.ts +496 -0
- package/entities/leads/leads.types.ts +114 -0
- package/entities/leads/messages/en.json +132 -0
- package/entities/leads/messages/es.json +132 -0
- package/entities/leads/migrations/001_leads_table.sql +150 -0
- package/entities/leads/migrations/002_leads_metas.sql +120 -0
- package/entities/leads/migrations/003_leads_sample_data.sql +242 -0
- package/entities/notes/messages/en.json +114 -0
- package/entities/notes/messages/es.json +114 -0
- package/entities/notes/migrations/020_notes_table.sql +118 -0
- package/entities/notes/migrations/021_notes_metas.sql +114 -0
- package/entities/notes/migrations/022_notes_sample_data.sql +275 -0
- package/entities/notes/notes.config.ts +61 -0
- package/entities/notes/notes.fields.ts +283 -0
- package/entities/notes/notes.service.ts +320 -0
- package/entities/notes/notes.types.ts +102 -0
- package/entities/opportunities/messages/en.json +107 -0
- package/entities/opportunities/messages/es.json +107 -0
- package/entities/opportunities/migrations/010_opportunities_table.sql +145 -0
- package/entities/opportunities/migrations/011_opportunities_metas.sql +114 -0
- package/entities/opportunities/migrations/012_opportunities_sample_data.sql +438 -0
- package/entities/opportunities/opportunities.config.ts +61 -0
- package/entities/opportunities/opportunities.fields.ts +416 -0
- package/entities/opportunities/opportunities.service.ts +525 -0
- package/entities/opportunities/opportunities.types.ts +135 -0
- package/entities/pipelines/messages/en.json +115 -0
- package/entities/pipelines/messages/es.json +115 -0
- package/entities/pipelines/migrations/001_pipelines_table.sql +106 -0
- package/entities/pipelines/migrations/002_pipelines_metas.sql +114 -0
- package/entities/pipelines/migrations/003_pipelines_sample_data.sql +91 -0
- package/entities/pipelines/pipelines.config.ts +62 -0
- package/entities/pipelines/pipelines.fields.ts +193 -0
- package/entities/pipelines/pipelines.service.ts +383 -0
- package/entities/pipelines/pipelines.types.ts +78 -0
- package/entities/products/messages/en.json +135 -0
- package/entities/products/messages/es.json +135 -0
- package/entities/products/migrations/001_products_table.sql +117 -0
- package/entities/products/migrations/002_products_metas.sql +114 -0
- package/entities/products/migrations/003_products_sample_data.sql +247 -0
- package/entities/products/products.config.ts +62 -0
- package/entities/products/products.fields.ts +361 -0
- package/entities/products/products.service.ts +437 -0
- package/entities/products/products.types.ts +125 -0
- package/lib/crm-constants.ts +77 -0
- package/lib/crm-utils.ts +185 -0
- package/lib/selectors.ts +333 -0
- package/messages/en.json +131 -0
- package/messages/es.json +131 -0
- package/migrations/999_theme_sample_data.sql +473 -0
- package/package.json +18 -0
- package/pendings.md +205 -0
- package/permissions-matrix.md +216 -0
- package/styles/components.css +414 -0
- package/styles/crm-theme.css +358 -0
- package/styles/globals.css +576 -0
- package/styles/variables.css +111 -0
- package/templates/dashboard/(main)/activities/components/ActivityCard.tsx +169 -0
- package/templates/dashboard/(main)/activities/components/ActivityTimeline.tsx +165 -0
- package/templates/dashboard/(main)/activities/page.tsx +297 -0
- package/templates/dashboard/(main)/campaigns/page.tsx +373 -0
- package/templates/dashboard/(main)/companies/page.tsx +296 -0
- package/templates/dashboard/(main)/contacts/page.tsx +347 -0
- package/templates/dashboard/(main)/layout.tsx +98 -0
- package/templates/dashboard/(main)/leads/page.tsx +335 -0
- package/templates/dashboard/(main)/opportunities/[id]/edit/page.tsx +95 -0
- package/templates/dashboard/(main)/opportunities/create/page.tsx +94 -0
- package/templates/dashboard/(main)/opportunities/page.tsx +350 -0
- package/templates/dashboard/(main)/pipelines/[id]/edit/page.tsx +95 -0
- package/templates/dashboard/(main)/pipelines/[id]/page.tsx +143 -0
- package/templates/dashboard/(main)/pipelines/create/page.tsx +94 -0
- package/templates/dashboard/(main)/pipelines/page.tsx +234 -0
- package/templates/dashboard/(main)/products/[id]/edit/page.tsx +97 -0
- package/templates/dashboard/(main)/products/[id]/page.tsx +509 -0
- package/templates/dashboard/(main)/products/create/page.tsx +96 -0
- package/templates/dashboard/(main)/products/page.tsx +308 -0
- package/templates/shared/ActionButtons.tsx +41 -0
- package/templates/shared/CRMDashboard.tsx +519 -0
- package/templates/shared/CRMDataTable.tsx +441 -0
- package/templates/shared/CRMMetricCard.tsx +76 -0
- package/templates/shared/CRMMobileNav.tsx +172 -0
- package/templates/shared/CRMSidebar.tsx +346 -0
- package/templates/shared/CRMTopBar.tsx +265 -0
- package/templates/shared/DealCard.tsx +123 -0
- package/templates/shared/EntityCard.tsx +58 -0
- package/templates/shared/OpportunityForm.tsx +649 -0
- package/templates/shared/PipelineForm.tsx +367 -0
- package/templates/shared/PipelineKanban.tsx +194 -0
- package/templates/shared/QuickFilters.tsx +47 -0
- package/templates/shared/StageColumn.tsx +175 -0
- package/templates/shared/StageSelect.tsx +177 -0
- package/templates/shared/StagesRepeater.tsx +317 -0
- package/templates/shared/index.ts +9 -0
|
@@ -0,0 +1,511 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CRM Theme - Flows Configuration
|
|
3
|
+
*
|
|
4
|
+
* Defines user journeys/flows that span multiple features.
|
|
5
|
+
* Each flow key becomes a tag: @flow-{key}
|
|
6
|
+
*
|
|
7
|
+
* Flows are enriched at build-time with:
|
|
8
|
+
* - Feature metadata (from features.config.ts)
|
|
9
|
+
* - Test coverage (from tags-registry + test files)
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { defineFlows } from '@nextsparkjs/core/lib/config/features-types'
|
|
13
|
+
|
|
14
|
+
export default defineFlows({
|
|
15
|
+
// ===========================================================================
|
|
16
|
+
// ACQUISITION FLOWS
|
|
17
|
+
// User acquisition and onboarding journeys
|
|
18
|
+
// ===========================================================================
|
|
19
|
+
|
|
20
|
+
onboarding: {
|
|
21
|
+
name: 'User Onboarding',
|
|
22
|
+
description: 'Complete journey from signup to first lead creation',
|
|
23
|
+
category: 'acquisition',
|
|
24
|
+
icon: 'rocket',
|
|
25
|
+
criticalPath: true,
|
|
26
|
+
|
|
27
|
+
steps: [
|
|
28
|
+
{
|
|
29
|
+
feature: 'auth',
|
|
30
|
+
action: 'signup',
|
|
31
|
+
description: 'User creates account with email/password or OAuth',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
feature: 'auth',
|
|
35
|
+
action: 'verify-email',
|
|
36
|
+
description: 'User verifies email address',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
feature: 'users',
|
|
40
|
+
action: 'setup-profile',
|
|
41
|
+
description: 'User configures their profile',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
feature: 'teams',
|
|
45
|
+
action: 'configure-team',
|
|
46
|
+
description: 'Admin configures team settings',
|
|
47
|
+
optional: true,
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
|
|
51
|
+
features: ['auth', 'users', 'teams'],
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
'invite-member': {
|
|
55
|
+
name: 'Invite Team Member',
|
|
56
|
+
description: 'Invite a new member to the CRM organization',
|
|
57
|
+
category: 'acquisition',
|
|
58
|
+
icon: 'user-plus',
|
|
59
|
+
criticalPath: false,
|
|
60
|
+
|
|
61
|
+
steps: [
|
|
62
|
+
{
|
|
63
|
+
feature: 'teams',
|
|
64
|
+
action: 'open-invite',
|
|
65
|
+
description: 'Admin opens invite dialog',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
feature: 'teams',
|
|
69
|
+
action: 'enter-email',
|
|
70
|
+
description: 'Admin enters new member email and role',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
feature: 'teams',
|
|
74
|
+
action: 'send-invite',
|
|
75
|
+
description: 'System sends invitation email',
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
|
|
79
|
+
features: ['teams'],
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
// ===========================================================================
|
|
83
|
+
// LEAD MANAGEMENT FLOWS
|
|
84
|
+
// Lead capture and conversion journeys
|
|
85
|
+
// ===========================================================================
|
|
86
|
+
|
|
87
|
+
'lead-to-customer': {
|
|
88
|
+
name: 'Lead to Customer',
|
|
89
|
+
description: 'Complete sales cycle from lead capture to closed deal',
|
|
90
|
+
category: 'sales',
|
|
91
|
+
icon: 'trending-up',
|
|
92
|
+
criticalPath: true,
|
|
93
|
+
|
|
94
|
+
steps: [
|
|
95
|
+
{
|
|
96
|
+
feature: 'leads',
|
|
97
|
+
action: 'create-lead',
|
|
98
|
+
description: 'Sales rep captures new lead',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
feature: 'leads',
|
|
102
|
+
action: 'qualify-lead',
|
|
103
|
+
description: 'Sales rep qualifies the lead',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
feature: 'lead-conversion',
|
|
107
|
+
action: 'convert',
|
|
108
|
+
description: 'Sales rep converts lead to contact/company',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
feature: 'opportunities',
|
|
112
|
+
action: 'create-opportunity',
|
|
113
|
+
description: 'Sales rep creates opportunity',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
feature: 'pipeline-kanban',
|
|
117
|
+
action: 'move-stages',
|
|
118
|
+
description: 'Sales rep moves opportunity through pipeline stages',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
feature: 'opportunities',
|
|
122
|
+
action: 'close-won',
|
|
123
|
+
description: 'Sales rep closes the deal',
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
|
|
127
|
+
features: ['leads', 'lead-conversion', 'contacts', 'companies', 'opportunities', 'pipeline-kanban'],
|
|
128
|
+
},
|
|
129
|
+
|
|
130
|
+
'create-lead': {
|
|
131
|
+
name: 'Create Lead',
|
|
132
|
+
description: 'Capture a new sales lead',
|
|
133
|
+
category: 'leads',
|
|
134
|
+
icon: 'user-plus',
|
|
135
|
+
criticalPath: true,
|
|
136
|
+
|
|
137
|
+
steps: [
|
|
138
|
+
{
|
|
139
|
+
feature: 'leads',
|
|
140
|
+
action: 'open-form',
|
|
141
|
+
description: 'User opens lead creation form',
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
feature: 'leads',
|
|
145
|
+
action: 'enter-details',
|
|
146
|
+
description: 'User enters lead details (name, email, source)',
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
feature: 'leads',
|
|
150
|
+
action: 'assign-owner',
|
|
151
|
+
description: 'User assigns lead owner',
|
|
152
|
+
optional: true,
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
feature: 'leads',
|
|
156
|
+
action: 'save',
|
|
157
|
+
description: 'User saves the new lead',
|
|
158
|
+
},
|
|
159
|
+
],
|
|
160
|
+
|
|
161
|
+
features: ['leads'],
|
|
162
|
+
},
|
|
163
|
+
|
|
164
|
+
'convert-lead': {
|
|
165
|
+
name: 'Convert Lead',
|
|
166
|
+
description: 'Convert qualified lead to contact and company',
|
|
167
|
+
category: 'leads',
|
|
168
|
+
icon: 'user-check',
|
|
169
|
+
criticalPath: true,
|
|
170
|
+
|
|
171
|
+
steps: [
|
|
172
|
+
{
|
|
173
|
+
feature: 'leads',
|
|
174
|
+
action: 'select-lead',
|
|
175
|
+
description: 'User selects a qualified lead',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
feature: 'lead-conversion',
|
|
179
|
+
action: 'initiate-conversion',
|
|
180
|
+
description: 'User initiates lead conversion',
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
feature: 'lead-conversion',
|
|
184
|
+
action: 'create-contact',
|
|
185
|
+
description: 'System creates contact from lead data',
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
feature: 'lead-conversion',
|
|
189
|
+
action: 'create-company',
|
|
190
|
+
description: 'System creates company (optional)',
|
|
191
|
+
optional: true,
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
feature: 'lead-conversion',
|
|
195
|
+
action: 'confirm',
|
|
196
|
+
description: 'User confirms conversion',
|
|
197
|
+
},
|
|
198
|
+
],
|
|
199
|
+
|
|
200
|
+
features: ['leads', 'lead-conversion', 'contacts', 'companies'],
|
|
201
|
+
},
|
|
202
|
+
|
|
203
|
+
// ===========================================================================
|
|
204
|
+
// OPPORTUNITY MANAGEMENT FLOWS
|
|
205
|
+
// Deal and pipeline management
|
|
206
|
+
// ===========================================================================
|
|
207
|
+
|
|
208
|
+
'manage-opportunity': {
|
|
209
|
+
name: 'Manage Opportunity',
|
|
210
|
+
description: 'Create and manage a sales opportunity through the pipeline',
|
|
211
|
+
category: 'sales',
|
|
212
|
+
icon: 'briefcase',
|
|
213
|
+
criticalPath: true,
|
|
214
|
+
|
|
215
|
+
steps: [
|
|
216
|
+
{
|
|
217
|
+
feature: 'opportunities',
|
|
218
|
+
action: 'create',
|
|
219
|
+
description: 'Sales rep creates new opportunity',
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
feature: 'opportunities',
|
|
223
|
+
action: 'link-contact',
|
|
224
|
+
description: 'Sales rep links opportunity to contact/company',
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
feature: 'products',
|
|
228
|
+
action: 'add-products',
|
|
229
|
+
description: 'Sales rep adds products to opportunity',
|
|
230
|
+
optional: true,
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
feature: 'pipeline-kanban',
|
|
234
|
+
action: 'track-progress',
|
|
235
|
+
description: 'Sales rep tracks opportunity through pipeline',
|
|
236
|
+
},
|
|
237
|
+
],
|
|
238
|
+
|
|
239
|
+
features: ['opportunities', 'contacts', 'companies', 'products', 'pipeline-kanban'],
|
|
240
|
+
},
|
|
241
|
+
|
|
242
|
+
'pipeline-management': {
|
|
243
|
+
name: 'Pipeline Management',
|
|
244
|
+
description: 'Visual pipeline management using kanban board',
|
|
245
|
+
category: 'sales',
|
|
246
|
+
icon: 'layout',
|
|
247
|
+
criticalPath: true,
|
|
248
|
+
|
|
249
|
+
steps: [
|
|
250
|
+
{
|
|
251
|
+
feature: 'pipeline-kanban',
|
|
252
|
+
action: 'view-board',
|
|
253
|
+
description: 'User views pipeline kanban board',
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
feature: 'pipeline-kanban',
|
|
257
|
+
action: 'drag-opportunity',
|
|
258
|
+
description: 'User drags opportunity to new stage',
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
feature: 'opportunities',
|
|
262
|
+
action: 'update-details',
|
|
263
|
+
description: 'User updates opportunity details',
|
|
264
|
+
optional: true,
|
|
265
|
+
},
|
|
266
|
+
],
|
|
267
|
+
|
|
268
|
+
features: ['pipeline-kanban', 'opportunities', 'pipelines'],
|
|
269
|
+
},
|
|
270
|
+
|
|
271
|
+
// ===========================================================================
|
|
272
|
+
// ACTIVITY MANAGEMENT FLOWS
|
|
273
|
+
// Task and activity tracking
|
|
274
|
+
// ===========================================================================
|
|
275
|
+
|
|
276
|
+
'schedule-activity': {
|
|
277
|
+
name: 'Schedule Activity',
|
|
278
|
+
description: 'Schedule a call, meeting, or task',
|
|
279
|
+
category: 'activities',
|
|
280
|
+
icon: 'calendar',
|
|
281
|
+
criticalPath: false,
|
|
282
|
+
|
|
283
|
+
steps: [
|
|
284
|
+
{
|
|
285
|
+
feature: 'activities',
|
|
286
|
+
action: 'create',
|
|
287
|
+
description: 'User creates new activity',
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
feature: 'activities',
|
|
291
|
+
action: 'set-type',
|
|
292
|
+
description: 'User selects activity type (call, meeting, task)',
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
feature: 'activities',
|
|
296
|
+
action: 'link-record',
|
|
297
|
+
description: 'User links activity to lead/contact/opportunity',
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
feature: 'activities',
|
|
301
|
+
action: 'set-datetime',
|
|
302
|
+
description: 'User sets date and time',
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
feature: 'activities',
|
|
306
|
+
action: 'save',
|
|
307
|
+
description: 'User saves the activity',
|
|
308
|
+
},
|
|
309
|
+
],
|
|
310
|
+
|
|
311
|
+
features: ['activities'],
|
|
312
|
+
},
|
|
313
|
+
|
|
314
|
+
'complete-activity': {
|
|
315
|
+
name: 'Complete Activity',
|
|
316
|
+
description: 'Mark an activity as completed and log outcome',
|
|
317
|
+
category: 'activities',
|
|
318
|
+
icon: 'check-circle',
|
|
319
|
+
criticalPath: false,
|
|
320
|
+
|
|
321
|
+
steps: [
|
|
322
|
+
{
|
|
323
|
+
feature: 'activities',
|
|
324
|
+
action: 'select-activity',
|
|
325
|
+
description: 'User selects an activity',
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
feature: 'activities',
|
|
329
|
+
action: 'log-outcome',
|
|
330
|
+
description: 'User logs the outcome/notes',
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
feature: 'activities',
|
|
334
|
+
action: 'mark-complete',
|
|
335
|
+
description: 'User marks activity as completed',
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
feature: 'activities',
|
|
339
|
+
action: 'schedule-followup',
|
|
340
|
+
description: 'User schedules follow-up activity',
|
|
341
|
+
optional: true,
|
|
342
|
+
},
|
|
343
|
+
],
|
|
344
|
+
|
|
345
|
+
features: ['activities'],
|
|
346
|
+
},
|
|
347
|
+
|
|
348
|
+
// ===========================================================================
|
|
349
|
+
// CONTACT MANAGEMENT FLOWS
|
|
350
|
+
// Contact and company management
|
|
351
|
+
// ===========================================================================
|
|
352
|
+
|
|
353
|
+
'create-contact': {
|
|
354
|
+
name: 'Create Contact',
|
|
355
|
+
description: 'Add a new contact to the CRM',
|
|
356
|
+
category: 'contacts',
|
|
357
|
+
icon: 'user-plus',
|
|
358
|
+
criticalPath: true,
|
|
359
|
+
|
|
360
|
+
steps: [
|
|
361
|
+
{
|
|
362
|
+
feature: 'contacts',
|
|
363
|
+
action: 'open-form',
|
|
364
|
+
description: 'User opens contact creation form',
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
feature: 'contacts',
|
|
368
|
+
action: 'enter-details',
|
|
369
|
+
description: 'User enters contact information',
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
feature: 'companies',
|
|
373
|
+
action: 'link-company',
|
|
374
|
+
description: 'User links contact to company',
|
|
375
|
+
optional: true,
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
feature: 'contacts',
|
|
379
|
+
action: 'save',
|
|
380
|
+
description: 'User saves the new contact',
|
|
381
|
+
},
|
|
382
|
+
],
|
|
383
|
+
|
|
384
|
+
features: ['contacts', 'companies'],
|
|
385
|
+
},
|
|
386
|
+
|
|
387
|
+
// ===========================================================================
|
|
388
|
+
// REPORTING FLOWS
|
|
389
|
+
// Analytics and reporting
|
|
390
|
+
// ===========================================================================
|
|
391
|
+
|
|
392
|
+
'view-sales-report': {
|
|
393
|
+
name: 'View Sales Report',
|
|
394
|
+
description: 'Access and analyze sales performance data',
|
|
395
|
+
category: 'reports',
|
|
396
|
+
icon: 'bar-chart',
|
|
397
|
+
criticalPath: false,
|
|
398
|
+
|
|
399
|
+
steps: [
|
|
400
|
+
{
|
|
401
|
+
feature: 'sales-reports',
|
|
402
|
+
action: 'navigate',
|
|
403
|
+
description: 'User navigates to sales reports',
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
feature: 'sales-reports',
|
|
407
|
+
action: 'select-period',
|
|
408
|
+
description: 'User selects reporting period',
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
feature: 'sales-reports',
|
|
412
|
+
action: 'view-data',
|
|
413
|
+
description: 'User views report data and charts',
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
feature: 'sales-reports',
|
|
417
|
+
action: 'export',
|
|
418
|
+
description: 'User exports report to PDF/Excel',
|
|
419
|
+
optional: true,
|
|
420
|
+
},
|
|
421
|
+
],
|
|
422
|
+
|
|
423
|
+
features: ['sales-reports'],
|
|
424
|
+
},
|
|
425
|
+
|
|
426
|
+
// ===========================================================================
|
|
427
|
+
// DATA MANAGEMENT FLOWS
|
|
428
|
+
// Import/export operations
|
|
429
|
+
// ===========================================================================
|
|
430
|
+
|
|
431
|
+
'bulk-import-data': {
|
|
432
|
+
name: 'Bulk Import Data',
|
|
433
|
+
description: 'Import records from CSV/Excel file',
|
|
434
|
+
category: 'settings',
|
|
435
|
+
icon: 'upload',
|
|
436
|
+
criticalPath: false,
|
|
437
|
+
|
|
438
|
+
steps: [
|
|
439
|
+
{
|
|
440
|
+
feature: 'bulk-import',
|
|
441
|
+
action: 'select-entity',
|
|
442
|
+
description: 'User selects entity type to import',
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
feature: 'bulk-import',
|
|
446
|
+
action: 'upload-file',
|
|
447
|
+
description: 'User uploads CSV/Excel file',
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
feature: 'bulk-import',
|
|
451
|
+
action: 'map-fields',
|
|
452
|
+
description: 'User maps file columns to entity fields',
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
feature: 'bulk-import',
|
|
456
|
+
action: 'review-preview',
|
|
457
|
+
description: 'User reviews import preview',
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
feature: 'bulk-import',
|
|
461
|
+
action: 'execute-import',
|
|
462
|
+
description: 'User executes the import',
|
|
463
|
+
},
|
|
464
|
+
],
|
|
465
|
+
|
|
466
|
+
features: ['bulk-import'],
|
|
467
|
+
},
|
|
468
|
+
|
|
469
|
+
// ===========================================================================
|
|
470
|
+
// BILLING FLOWS
|
|
471
|
+
// Subscription and payment journeys
|
|
472
|
+
// ===========================================================================
|
|
473
|
+
|
|
474
|
+
'upgrade-plan': {
|
|
475
|
+
name: 'Upgrade Plan',
|
|
476
|
+
description: 'Upgrade subscription to a higher tier plan',
|
|
477
|
+
category: 'settings',
|
|
478
|
+
icon: 'trending-up',
|
|
479
|
+
criticalPath: false,
|
|
480
|
+
|
|
481
|
+
steps: [
|
|
482
|
+
{
|
|
483
|
+
feature: 'plans',
|
|
484
|
+
action: 'view-plans',
|
|
485
|
+
description: 'Admin views available plans',
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
feature: 'plans',
|
|
489
|
+
action: 'compare-plans',
|
|
490
|
+
description: 'Admin compares features between plans',
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
feature: 'plans',
|
|
494
|
+
action: 'select-plan',
|
|
495
|
+
description: 'Admin selects a new plan',
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
feature: 'billing',
|
|
499
|
+
action: 'enter-payment',
|
|
500
|
+
description: 'Admin enters or confirms payment method',
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
feature: 'billing',
|
|
504
|
+
action: 'confirm-upgrade',
|
|
505
|
+
description: 'Admin confirms the upgrade',
|
|
506
|
+
},
|
|
507
|
+
],
|
|
508
|
+
|
|
509
|
+
features: ['plans', 'billing'],
|
|
510
|
+
},
|
|
511
|
+
})
|