@automattic/launchpad 1.0.0 → 1.0.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.
Files changed (145) hide show
  1. package/.storybook/main.ts +16 -0
  2. package/.storybook/preview.ts +6 -0
  3. package/README.md +11 -2
  4. package/dist/cjs/action-components/index.js +6 -0
  5. package/dist/cjs/action-components/index.js.map +1 -0
  6. package/dist/cjs/action-components/share-site-modal/index.js +44 -0
  7. package/dist/cjs/action-components/share-site-modal/index.js.map +1 -0
  8. package/dist/cjs/action-components/share-site-modal/style.scss +159 -0
  9. package/dist/cjs/badge/index.js +2 -2
  10. package/dist/cjs/badge/index.js.map +1 -1
  11. package/dist/cjs/checklist/index.js +16 -8
  12. package/dist/cjs/checklist/index.js.map +1 -1
  13. package/dist/cjs/checklist/index.stories.js +29 -0
  14. package/dist/cjs/checklist/index.stories.js.map +1 -0
  15. package/dist/cjs/checklist-item/index.js +30 -13
  16. package/dist/cjs/checklist-item/index.js.map +1 -1
  17. package/dist/cjs/checklist-item/index.stories.js +79 -0
  18. package/dist/cjs/checklist-item/index.stories.js.map +1 -0
  19. package/dist/cjs/checklist-item/style.scss +142 -22
  20. package/dist/cjs/index.js +6 -1
  21. package/dist/cjs/index.js.map +1 -1
  22. package/dist/cjs/launchpad-container/index.js +11 -0
  23. package/dist/cjs/launchpad-container/index.js.map +1 -0
  24. package/dist/cjs/launchpad-container/style.scss +59 -0
  25. package/dist/cjs/launchpad-internal.js +40 -0
  26. package/dist/cjs/launchpad-internal.js.map +1 -0
  27. package/dist/cjs/launchpad-internal.stories.js +45 -0
  28. package/dist/cjs/launchpad-internal.stories.js.map +1 -0
  29. package/dist/cjs/launchpad.js +39 -10
  30. package/dist/cjs/launchpad.js.map +1 -1
  31. package/dist/cjs/msw/link-in-bio.js +68 -0
  32. package/dist/cjs/msw/link-in-bio.js.map +1 -0
  33. package/dist/cjs/msw/resolver.js +19 -0
  34. package/dist/cjs/msw/resolver.js.map +1 -0
  35. package/dist/cjs/msw/setup-free.js +88 -0
  36. package/dist/cjs/msw/setup-free.js.map +1 -0
  37. package/dist/cjs/setup-actions.js +51 -54
  38. package/dist/cjs/setup-actions.js.map +1 -1
  39. package/dist/cjs/use-tracking/index.js +72 -0
  40. package/dist/cjs/use-tracking/index.js.map +1 -0
  41. package/dist/esm/action-components/index.js +2 -0
  42. package/dist/esm/action-components/index.js.map +1 -0
  43. package/dist/esm/action-components/share-site-modal/index.js +42 -0
  44. package/dist/esm/action-components/share-site-modal/index.js.map +1 -0
  45. package/dist/esm/action-components/share-site-modal/style.scss +159 -0
  46. package/dist/esm/badge/index.js +2 -2
  47. package/dist/esm/badge/index.js.map +1 -1
  48. package/dist/esm/checklist/index.js +14 -8
  49. package/dist/esm/checklist/index.js.map +1 -1
  50. package/dist/esm/checklist/index.stories.js +25 -0
  51. package/dist/esm/checklist/index.stories.js.map +1 -0
  52. package/dist/esm/checklist-item/index.js +29 -14
  53. package/dist/esm/checklist-item/index.js.map +1 -1
  54. package/dist/esm/checklist-item/index.stories.js +75 -0
  55. package/dist/esm/checklist-item/index.stories.js.map +1 -0
  56. package/dist/esm/checklist-item/style.scss +142 -22
  57. package/dist/esm/index.js +3 -0
  58. package/dist/esm/index.js.map +1 -1
  59. package/dist/esm/launchpad-container/index.js +8 -0
  60. package/dist/esm/launchpad-container/index.js.map +1 -0
  61. package/dist/esm/launchpad-container/style.scss +59 -0
  62. package/dist/esm/launchpad-internal.js +37 -0
  63. package/dist/esm/launchpad-internal.js.map +1 -0
  64. package/dist/esm/launchpad-internal.stories.js +41 -0
  65. package/dist/esm/launchpad-internal.stories.js.map +1 -0
  66. package/dist/esm/launchpad.js +41 -13
  67. package/dist/esm/launchpad.js.map +1 -1
  68. package/dist/esm/msw/link-in-bio.js +66 -0
  69. package/dist/esm/msw/link-in-bio.js.map +1 -0
  70. package/dist/esm/msw/resolver.js +14 -0
  71. package/dist/esm/msw/resolver.js.map +1 -0
  72. package/dist/esm/msw/setup-free.js +86 -0
  73. package/dist/esm/msw/setup-free.js.map +1 -0
  74. package/dist/esm/setup-actions.js +51 -54
  75. package/dist/esm/setup-actions.js.map +1 -1
  76. package/dist/esm/use-tracking/index.js +68 -0
  77. package/dist/esm/use-tracking/index.js.map +1 -0
  78. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  79. package/dist/tsconfig.tsbuildinfo +1 -1
  80. package/dist/types/action-components/index.d.ts +2 -0
  81. package/dist/types/action-components/index.d.ts.map +1 -0
  82. package/dist/types/action-components/share-site-modal/index.d.ts +9 -0
  83. package/dist/types/action-components/share-site-modal/index.d.ts.map +1 -0
  84. package/dist/types/badge/index.d.ts.map +1 -1
  85. package/dist/types/checklist/index.d.ts +6 -7
  86. package/dist/types/checklist/index.d.ts.map +1 -1
  87. package/dist/types/checklist/index.stories.d.ts +8 -0
  88. package/dist/types/checklist/index.stories.d.ts.map +1 -0
  89. package/dist/types/checklist-item/index.d.ts +11 -8
  90. package/dist/types/checklist-item/index.d.ts.map +1 -1
  91. package/dist/types/checklist-item/index.stories.d.ts +14 -0
  92. package/dist/types/checklist-item/index.stories.d.ts.map +1 -0
  93. package/dist/types/index.d.ts +3 -0
  94. package/dist/types/index.d.ts.map +1 -1
  95. package/dist/types/launchpad-container/index.d.ts +15 -0
  96. package/dist/types/launchpad-container/index.d.ts.map +1 -0
  97. package/dist/types/launchpad-internal.d.ts +20 -0
  98. package/dist/types/launchpad-internal.d.ts.map +1 -0
  99. package/dist/types/launchpad-internal.stories.d.ts +8 -0
  100. package/dist/types/launchpad-internal.stories.d.ts.map +1 -0
  101. package/dist/types/launchpad.d.ts +10 -9
  102. package/dist/types/launchpad.d.ts.map +1 -1
  103. package/dist/types/msw/link-in-bio.d.ts +35 -0
  104. package/dist/types/msw/link-in-bio.d.ts.map +1 -0
  105. package/dist/types/msw/resolver.d.ts +3 -0
  106. package/dist/types/msw/resolver.d.ts.map +1 -0
  107. package/dist/types/msw/setup-free.d.ts +35 -0
  108. package/dist/types/msw/setup-free.d.ts.map +1 -0
  109. package/dist/types/setup-actions.d.ts +1 -1
  110. package/dist/types/setup-actions.d.ts.map +1 -1
  111. package/dist/types/types.d.ts +19 -9
  112. package/dist/types/types.d.ts.map +1 -1
  113. package/dist/types/use-tracking/index.d.ts +14 -0
  114. package/dist/types/use-tracking/index.d.ts.map +1 -0
  115. package/package.json +24 -16
  116. package/src/action-components/index.ts +1 -0
  117. package/src/action-components/share-site-modal/index.tsx +100 -0
  118. package/src/action-components/share-site-modal/style.scss +159 -0
  119. package/src/badge/index.tsx +2 -4
  120. package/src/checklist/index.stories.tsx +45 -0
  121. package/src/checklist/index.tsx +22 -21
  122. package/src/checklist/test/index.tsx +26 -0
  123. package/src/checklist-item/index.stories.tsx +92 -0
  124. package/src/checklist-item/index.tsx +62 -22
  125. package/src/checklist-item/style.scss +142 -22
  126. package/src/checklist-item/test/index.tsx +232 -0
  127. package/src/index.ts +3 -0
  128. package/src/launchpad-container/index.tsx +45 -0
  129. package/src/launchpad-container/style.scss +59 -0
  130. package/src/launchpad-container/test/index.tsx +72 -0
  131. package/src/launchpad-internal.stories.tsx +49 -0
  132. package/src/launchpad-internal.tsx +85 -0
  133. package/src/launchpad.tsx +80 -30
  134. package/src/msw/link-in-bio.ts +66 -0
  135. package/src/msw/resolver.ts +18 -0
  136. package/src/msw/setup-free.ts +85 -0
  137. package/src/setup-actions.ts +67 -54
  138. package/src/test/launchpad.tsx +51 -24
  139. package/src/test/lib/fixtures.ts +7 -2
  140. package/src/types.ts +24 -9
  141. package/src/use-tracking/index.tsx +87 -0
  142. package/src/use-tracking/test/index.tsx +116 -0
  143. package/static/mockServiceWorker.js +287 -0
  144. package/src/test/checklist-item.tsx +0 -96
  145. package/src/test/checklist.tsx +0 -25
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ site_intent: 'free',
5
+ launchpad_screen: 'full',
6
+ checklist_statuses: {
7
+ setup_free: true,
8
+ setup_general: true,
9
+ design_completed: true,
10
+ site_theme_selected: true,
11
+ },
12
+ checklist: [
13
+ {
14
+ id: 'plan_selected',
15
+ title: 'Choose a plan',
16
+ completed: true,
17
+ disabled: false,
18
+ subtitle: '',
19
+ badge_text: '',
20
+ isLaunchTask: false,
21
+ calypso_path: '/plans/site62798.wordpress.com',
22
+ },
23
+ {
24
+ id: 'setup_free',
25
+ title: 'Personalize your site',
26
+ completed: true,
27
+ disabled: false,
28
+ subtitle: '',
29
+ badge_text: '',
30
+ isLaunchTask: false,
31
+ calypso_path: '/settings/general/site62798.wordpress.com',
32
+ },
33
+ {
34
+ id: 'design_selected',
35
+ title: 'Select a design',
36
+ completed: true,
37
+ disabled: false,
38
+ subtitle: '',
39
+ badge_text: '',
40
+ isLaunchTask: false,
41
+ calypso_path: '/setup/update-design/designSetup?siteSlug=site62798.wordpress.com',
42
+ },
43
+ {
44
+ id: 'domain_upsell',
45
+ title: 'Choose a domain',
46
+ completed: false,
47
+ disabled: false,
48
+ subtitle: '',
49
+ badge_text: 'Upgrade plan',
50
+ isLaunchTask: false,
51
+ calypso_path: '/setup/domain-upsell/domains?siteSlug=site62798.wordpress.com',
52
+ },
53
+ {
54
+ id: 'first_post_published',
55
+ title: 'Write your first post',
56
+ completed: false,
57
+ disabled: false,
58
+ subtitle: '',
59
+ badge_text: '',
60
+ isLaunchTask: false,
61
+ calypso_path: '/post/site62798.wordpress.com',
62
+ },
63
+ {
64
+ id: 'design_edited',
65
+ title: 'Edit site design',
66
+ completed: false,
67
+ disabled: false,
68
+ subtitle: '',
69
+ badge_text: '',
70
+ isLaunchTask: false,
71
+ calypso_path: '/site-editor/site62798.wordpress.com',
72
+ },
73
+ {
74
+ id: 'site_launched',
75
+ title: 'Launch your site',
76
+ completed: false,
77
+ disabled: false,
78
+ subtitle: '',
79
+ badge_text: '',
80
+ isLaunchTask: true,
81
+ },
82
+ ],
83
+ is_enabled: true,
84
+ is_dismissed: false,
85
+ is_dismissible: false,
86
+ title: 'Next steps for your site',
87
+ };
88
+ //# sourceMappingURL=setup-free.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-free.js","sourceRoot":"","sources":["../../../src/msw/setup-free.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACd,WAAW,EAAE,MAAM;IACnB,gBAAgB,EAAE,MAAM;IACxB,kBAAkB,EAAE;QACnB,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,IAAI;KACzB;IACD,SAAS,EAAE;QACV;YACC,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,eAAe;YACtB,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,gCAAgC;SAC9C;QACD;YACC,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,uBAAuB;YAC9B,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,2CAA2C;SACzD;QACD;YACC,EAAE,EAAE,iBAAiB;YACrB,KAAK,EAAE,iBAAiB;YACxB,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,mEAAmE;SACjF;QACD;YACC,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,iBAAiB;YACxB,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,cAAc;YAC1B,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,+DAA+D;SAC7E;QACD;YACC,EAAE,EAAE,sBAAsB;YAC1B,KAAK,EAAE,uBAAuB;YAC9B,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,+BAA+B;SAC7C;QACD;YACC,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,kBAAkB;YACzB,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,sCAAsC;SACpD;QACD;YACC,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,kBAAkB;YACzB,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,IAAI;SAClB;KACD;IACD,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,KAAK;IACnB,cAAc,EAAE,KAAK;IACrB,KAAK,EAAE,0BAA0B;CACjC,CAAC"}
@@ -4,6 +4,7 @@ exports.setUpActionsForTasks = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const calypso_config_1 = tslib_1.__importDefault(require("@automattic/calypso-config"));
6
6
  const data_stores_1 = require("@automattic/data-stores");
7
+ const i18n_utils_1 = require("@automattic/i18n-utils");
7
8
  const viewport_1 = require("@automattic/viewport");
8
9
  const url_1 = require("@wordpress/url");
9
10
  const wpcom_proxy_request_1 = tslib_1.__importDefault(require("wpcom-proxy-request"));
@@ -14,29 +15,24 @@ const TASKS_TO_COMPLETE_ON_CLICK = [
14
15
  'manage_subscribers',
15
16
  'connect_social_media',
16
17
  'drive_traffic',
18
+ 'site_monitoring_page',
19
+ 'front_page_updated',
20
+ 'post_sharing_enabled',
21
+ 'mobile_app_installed',
17
22
  ];
18
- const setUpActionsForTasks = ({ siteSlug, tasks, tracksData, extraActions, uiContext = 'calypso', }) => {
19
- const { recordTracksEvent, checklistSlug, tasklistCompleted, launchpadContext } = tracksData;
20
- const { setShareSiteModalIsOpen, siteLaunched, setActiveChecklist } = extraActions;
21
- //Record click events for tasks
22
- const recordTaskClickTracksEvent = (task) => {
23
- recordTracksEvent('calypso_launchpad_task_clicked', {
24
- checklist_slug: checklistSlug,
25
- checklist_completed: tasklistCompleted,
26
- task_id: task.id,
27
- is_completed: task.completed,
28
- context: launchpadContext,
29
- order: task.order,
30
- });
31
- };
23
+ const setUpActionsForTasks = ({ siteSlug, tasks, tracksData, extraActions, eventHandlers, uiContext = 'calypso', }) => {
24
+ const { recordTracksEvent, checklistSlug, launchpadContext } = tracksData;
25
+ const { setShareSiteModalIsOpen, setActiveChecklist } = extraActions;
26
+ const { onSiteLaunched, onTaskClick } = eventHandlers || {};
32
27
  // Add actions to the tasks.
33
28
  return tasks.map((task) => {
34
29
  let action;
35
30
  let logMissingCalypsoPath = false;
36
- if (uiContext === 'calypso' && task.calypso_path !== undefined) {
37
- let targetPath = task.calypso_path;
38
- if (task.id === 'drive_traffic' && !(0, viewport_1.isMobile)()) {
39
- targetPath = (0, url_1.addQueryArgs)(targetPath, { tour: 'marketingConnectionsTour' });
31
+ let useCalypsoPath = true;
32
+ const hasCalypsoPath = task.calypso_path !== undefined;
33
+ if (uiContext === 'calypso' && hasCalypsoPath) {
34
+ if (task.id === 'drive_traffic' && !(0, viewport_1.isMobile)() && hasCalypsoPath) {
35
+ task.calypso_path = (0, url_1.addQueryArgs)(task.calypso_path, { tour: 'marketingConnectionsTour' });
40
36
  }
41
37
  // Enable task in 'calypso' context
42
38
  if (task.id === 'setup_general') {
@@ -48,7 +44,6 @@ const setUpActionsForTasks = ({ siteSlug, tasks, tracksData, extraActions, uiCon
48
44
  checklist_statuses: { [task.id]: true },
49
45
  });
50
46
  }
51
- window.location.assign(targetPath);
52
47
  };
53
48
  }
54
49
  else {
@@ -57,64 +52,45 @@ const setUpActionsForTasks = ({ siteSlug, tasks, tracksData, extraActions, uiCon
57
52
  action = () => {
58
53
  setShareSiteModalIsOpen?.(true);
59
54
  };
55
+ useCalypsoPath = false;
60
56
  break;
61
57
  case 'site_title':
62
58
  logMissingCalypsoPath = true;
63
- action = () => {
64
- window.location.assign(`/settings/general/${siteSlug}`);
65
- };
59
+ task.calypso_path = `/settings/general/${siteSlug}`;
66
60
  break;
67
61
  case 'domain_claim':
68
62
  case 'domain_upsell':
69
63
  case 'domain_customize':
70
64
  logMissingCalypsoPath = true;
71
- action = () => {
72
- window.location.assign(`/domains/add/${siteSlug}`);
73
- };
65
+ task.calypso_path = `/domains/add/${siteSlug}`;
74
66
  break;
75
67
  case 'drive_traffic':
76
68
  logMissingCalypsoPath = true;
77
- action = () => {
78
- const url = (0, viewport_1.isMobile)()
79
- ? `/marketing/connections/${siteSlug}`
80
- : `/marketing/connections/${siteSlug}?tour=marketingConnectionsTour`;
81
- window.location.assign(url);
82
- };
69
+ task.calypso_path = (0, viewport_1.isMobile)()
70
+ ? `/marketing/connections/${siteSlug}`
71
+ : `/marketing/connections/${siteSlug}?tour=marketingConnectionsTour`;
83
72
  break;
84
73
  case 'add_new_page':
85
74
  logMissingCalypsoPath = true;
86
- action = () => {
87
- window.location.assign(`/page/${siteSlug}`);
88
- };
75
+ task.calypso_path = `/page/${siteSlug}`;
89
76
  break;
90
77
  case 'edit_page':
91
78
  logMissingCalypsoPath = true;
92
- action = () => {
93
- window.location.assign(`/pages/${siteSlug}`);
94
- };
79
+ task.calypso_path = `/pages/${siteSlug}`;
95
80
  break;
96
81
  case 'update_about_page':
97
82
  logMissingCalypsoPath = true;
98
- action = () => {
99
- window.location.assign(`/page/${siteSlug}/${task?.extra_data?.about_page_id}`);
100
- };
83
+ task.calypso_path = `/page/${siteSlug}/${task?.extra_data?.about_page_id}`;
101
84
  break;
102
85
  case 'customize_welcome_message':
103
86
  logMissingCalypsoPath = true;
104
- action = () => {
105
- if (calypso_config_1.default.isEnabled('settings/newsletter-settings-page')) {
106
- window.location.assign(`/settings/newsletter/${siteSlug}`);
107
- }
108
- else {
109
- window.location.assign(`/settings/reading/${siteSlug}#newsletter-settings`);
110
- }
111
- };
87
+ task.calypso_path = calypso_config_1.default.isEnabled('settings/newsletter-settings-page')
88
+ ? `/settings/newsletter/${siteSlug}`
89
+ : `/settings/reading/${siteSlug}#newsletter-settings`;
112
90
  break;
113
91
  case 'manage_subscribers':
114
92
  logMissingCalypsoPath = true;
115
- action = () => {
116
- window.location.assign(`/subscribers/${siteSlug}`);
117
- };
93
+ task.calypso_path = `/subscribers/${siteSlug}`;
118
94
  break;
119
95
  case 'site_launched':
120
96
  case 'blog_launched':
@@ -126,11 +102,29 @@ const setUpActionsForTasks = ({ siteSlug, tasks, tracksData, extraActions, uiCon
126
102
  apiVersion: '1.1',
127
103
  method: 'post',
128
104
  });
129
- siteLaunched?.();
105
+ onSiteLaunched?.();
106
+ };
107
+ useCalypsoPath = false;
108
+ break;
109
+ case 'review_site':
110
+ action = () => {
111
+ // redirects to the site slug home page in a new tab
112
+ window.open(`https://${siteSlug}`, '_blank');
113
+ (0, data_stores_1.updateLaunchpadSettings)(siteSlug, {
114
+ checklist_statuses: { [task.id]: true },
115
+ });
116
+ };
117
+ useCalypsoPath = false;
118
+ break;
119
+ case 'domain_dns_mapped':
120
+ action = () => {
121
+ window.open((0, i18n_utils_1.localizeUrl)(`https://wordpress.com/support/domains/connect-existing-domain/#step-2-connect-your-domain`), '_blank');
130
122
  };
123
+ useCalypsoPath = false;
131
124
  break;
132
125
  default:
133
126
  logMissingCalypsoPath = true;
127
+ useCalypsoPath = false;
134
128
  break;
135
129
  }
136
130
  }
@@ -143,12 +137,15 @@ const setUpActionsForTasks = ({ siteSlug, tasks, tracksData, extraActions, uiCon
143
137
  });
144
138
  }
145
139
  const actionDispatch = () => {
146
- recordTaskClickTracksEvent(task);
147
- if (siteSlug && setActiveChecklist) {
140
+ if (siteSlug && setActiveChecklist && calypso_config_1.default.isEnabled('launchpad/navigator')) {
148
141
  setActiveChecklist(siteSlug, checklistSlug);
149
142
  }
143
+ onTaskClick?.(task);
150
144
  action?.();
151
145
  };
146
+ // Note that we double-check for both the flag and a valid calypso_path as a safety check.
147
+ // We intentionally avoid `hasCalypsoPath`, as it may be out of date.
148
+ task.useCalypsoPath = useCalypsoPath && task.calypso_path !== undefined;
152
149
  return { ...task, actionDispatch };
153
150
  });
154
151
  };
@@ -1 +1 @@
1
- {"version":3,"file":"setup-actions.js","sourceRoot":"","sources":["../../src/setup-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-actions.js","sourceRoot":"","sources":["../../src/setup-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useTracking = void 0;
4
+ const calypso_analytics_1 = require("@automattic/calypso-analytics");
5
+ const react_1 = require("react");
6
+ const stringifyTasks = (tasks) => {
7
+ const prefix = ',';
8
+ const suffix = ',';
9
+ const separator = ',';
10
+ const taskIds = tasks.map((task) => task.id).join(separator);
11
+ return `${prefix}${taskIds}${suffix}`;
12
+ };
13
+ const useTracking = (params) => {
14
+ const { tasks, checklistSlug, context, site, flow } = params;
15
+ const completedSteps = (0, react_1.useMemo)(() => tasks.filter((task) => task.completed), [tasks]);
16
+ const taskNames = (0, react_1.useMemo)(() => stringifyTasks(tasks), [tasks]);
17
+ const numberOfSteps = tasks.length;
18
+ const numberOfCompletedSteps = completedSteps.length;
19
+ const isCheckListCompleted = completedSteps.length === tasks.length;
20
+ const isSiteAvailable = !!site;
21
+ const hasNoTask = tasks.length === 0;
22
+ // We skip the view events until we have fetched the site details to avoid sending incomplete data
23
+ const shoulSkipTracking = hasNoTask || !isSiteAvailable;
24
+ (0, react_1.useEffect)(() => {
25
+ if (shoulSkipTracking) {
26
+ return;
27
+ }
28
+ const siteIntent = site?.options?.site_intent;
29
+ (0, calypso_analytics_1.recordTracksEvent)('calypso_launchpad_tasklist_viewed', {
30
+ number_of_steps: numberOfSteps,
31
+ number_of_completed_steps: numberOfCompletedSteps,
32
+ is_completed: isCheckListCompleted,
33
+ tasks: taskNames,
34
+ checklist_slug: checklistSlug,
35
+ context: context,
36
+ site_intent: siteIntent,
37
+ flow,
38
+ });
39
+ tasks.forEach((task) => {
40
+ (0, calypso_analytics_1.recordTracksEvent)('calypso_launchpad_task_view', {
41
+ checklist_slug: checklistSlug,
42
+ task_id: task.id,
43
+ is_completed: task.completed,
44
+ context: context,
45
+ order: task.order,
46
+ site_intent: siteIntent,
47
+ flow,
48
+ });
49
+ });
50
+ // Array of tasks requires deep comparison
51
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52
+ }, [
53
+ JSON.stringify(tasks.map(({ id, completed, order }) => ({ id, completed, order }))),
54
+ shoulSkipTracking,
55
+ ]);
56
+ const trackTaskClick = (task) => {
57
+ (0, calypso_analytics_1.recordTracksEvent)('calypso_launchpad_task_clicked', {
58
+ checklist_completed: isCheckListCompleted,
59
+ is_completed: task.completed,
60
+ checklist_slug: checklistSlug,
61
+ context: context,
62
+ task_id: task.id,
63
+ flow,
64
+ order: task.order,
65
+ });
66
+ };
67
+ return {
68
+ trackTaskClick,
69
+ };
70
+ };
71
+ exports.useTracking = useTracking;
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/use-tracking/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { default as ShareSiteModal } from './share-site-modal';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action-components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Popover } from '@automattic/components';
3
+ import { updateLaunchpadSettings } from '@automattic/data-stores';
4
+ import { useQueryClient } from '@tanstack/react-query';
5
+ import { Button, Modal } from '@wordpress/components';
6
+ import { Icon, link } from '@wordpress/icons';
7
+ import { useTranslate } from 'i18n-calypso';
8
+ import { useState, useRef } from 'react';
9
+ import './style.scss';
10
+ const ShareSiteModal = ({ setModalIsOpen, site }) => {
11
+ const translate = useTranslate();
12
+ const queryClient = useQueryClient();
13
+ const getSiteSlug = (site) => {
14
+ if (!site) {
15
+ return null;
16
+ }
17
+ if (site.slug) {
18
+ return site.slug;
19
+ }
20
+ if (site.URL) {
21
+ return new URL(site.URL).host;
22
+ }
23
+ return null;
24
+ };
25
+ const siteSlug = getSiteSlug(site);
26
+ const [clipboardCopied, setClipboardCopied] = useState(false);
27
+ const clipboardTextEl = useRef(null);
28
+ const copyHandler = async () => {
29
+ navigator.clipboard.writeText(`https://${siteSlug}`);
30
+ if (siteSlug) {
31
+ await updateLaunchpadSettings(siteSlug, {
32
+ checklist_statuses: { share_site: true },
33
+ });
34
+ }
35
+ queryClient.invalidateQueries({ queryKey: ['launchpad'] });
36
+ setClipboardCopied(true);
37
+ setTimeout(() => setClipboardCopied(false), 3000);
38
+ };
39
+ return (_jsx(_Fragment, { children: _jsx(Modal, { onRequestClose: () => setModalIsOpen(false), className: "share-site-modal__modal", title: "", children: _jsxs("div", { className: "share-site-modal__modal-content", children: [_jsxs("div", { className: "share-site-modal__modal-text", children: [_jsx("h1", { className: "share-site-modal__modal-heading", children: translate('Share your site') }), _jsx("p", { className: "share-site-modal__modal-body", children: translate('Now you can head over to your site and share it with the world.') })] }), _jsx("div", { className: "share-site-modal__modal-actions", children: _jsxs("div", { className: "share-site-modal__modal-site", children: [_jsxs("div", { className: "share-site-modal__modal-domain", children: [_jsx("p", { className: "share-site-modal__modal-domain-text", ref: clipboardTextEl, children: siteSlug }), _jsx(Popover, { className: "share-site-modal__popover", isVisible: clipboardCopied, context: clipboardTextEl.current, position: "top", children: translate('Copied to clipboard!') })] }), _jsxs(Button, { onClick: copyHandler, className: "share-site-modal__modal-view-site", disabled: !siteSlug, children: [_jsx(Icon, { icon: link, size: 22 }), _jsx("span", { className: "share-site-modal__modal-view-site-text", children: translate('Copy') })] })] }) })] }) }) }));
40
+ };
41
+ export default ShareSiteModal;
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/action-components/share-site-modal/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ @import "@automattic/typography/styles/variables";
2
+
3
+ .share-site-modal__modal {
4
+ max-width: 640px;
5
+
6
+ .components-modal__header {
7
+ padding: 48px;
8
+ }
9
+
10
+ .components-modal__content {
11
+ margin: 0;
12
+ padding: 0;
13
+ }
14
+
15
+ .share-site-modal__modal-content {
16
+ padding: 48px;
17
+ padding-bottom: 40px;
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: 32px;
21
+ }
22
+
23
+ .share-site-modal__modal-heading {
24
+ color: var(--studio-gray-100);
25
+ font-family: Recoleta, "Noto Serif", Georgia, "Times New Roman", Times, serif;
26
+ font-size: 2rem;
27
+ line-height: 40px;
28
+ font-weight: 400;
29
+ letter-spacing: 0.2px;
30
+ margin: 0;
31
+ padding-bottom: 8px;
32
+ }
33
+
34
+ .share-site-modal__modal-domain {
35
+ display: flex;
36
+ justify-content: center;
37
+ align-items: center;
38
+ }
39
+
40
+ .share-site-modal__modal-body,
41
+ .share-site-modal__modal-domain-text {
42
+ margin: 0;
43
+ color: var(--studio-gray-80);
44
+ font-size: 1rem;
45
+ line-height: 24px;
46
+ }
47
+
48
+ .share-site-modal__modal-domain-text {
49
+ padding: 0 8px;
50
+
51
+ // prevent text overflow
52
+ text-overflow: ellipsis;
53
+ white-space: nowrap;
54
+ overflow: hidden;
55
+ }
56
+
57
+ .share-site-modal__modal-buttons {
58
+ display: flex;
59
+ flex-direction: row;
60
+ justify-content: end;
61
+ gap: 16px;
62
+ }
63
+
64
+ .share-site-modal__modal-site {
65
+ padding: 8px;
66
+ background: var(--studio-gray-0);
67
+ display: flex;
68
+ flex-direction: row;
69
+ justify-content: space-between;
70
+ align-items: center;
71
+ }
72
+
73
+ .launchpad__clipboard-button {
74
+ opacity: 0;
75
+ }
76
+
77
+ .launchpad__clipboard-button:focus {
78
+ opacity: 1;
79
+ }
80
+
81
+ .share-site-modal__modal-site:hover {
82
+ .launchpad__clipboard-button {
83
+ opacity: 1;
84
+ }
85
+ }
86
+
87
+ .share-site-modal__modal-customize {
88
+ color: var(--studio-blue-50);
89
+ font-size: 0.875rem;
90
+ display: inline-flex;
91
+ flex-direction: row;
92
+ justify-content: start;
93
+ gap: 6px;
94
+ padding: 0;
95
+ margin: 0;
96
+ margin-top: 16px;
97
+ }
98
+
99
+ .share-site-modal__modal-upsell {
100
+ border-top: 1px solid var(--studio-gray-5);
101
+ background: var(--studio-gray-0);
102
+ display: flex;
103
+ justify-content: center;
104
+ align-items: center;
105
+ padding: 32px 48px;
106
+ gap: 32px;
107
+
108
+ .components-button {
109
+ height: 42px;
110
+ }
111
+ }
112
+
113
+ .share-site-modal__modal-upsell-content p {
114
+ margin-bottom: 0;
115
+ }
116
+
117
+ .share-site-modal__modal-upsell-content-highlight {
118
+ font-weight: bold;
119
+ }
120
+
121
+ .share-site-modal__modal-view-site {
122
+ display: flex;
123
+ gap: 4px;
124
+
125
+ font-weight: 500;
126
+ /* stylelint-disable-next-line */
127
+ font-size: 14px;
128
+ line-height: 20px;
129
+ letter-spacing: -0.154px;
130
+ color: #101517;
131
+ }
132
+
133
+ .share-site-modal__modal-view-site:visited {
134
+ color: #101517;
135
+ }
136
+
137
+ .share-site-modal__modal-view-site:hover:not(:disabled) {
138
+ text-decoration: underline;
139
+ }
140
+ }
141
+
142
+ .share-site-modal__popover {
143
+ outline: none;
144
+ z-index: 100000;
145
+ .popover__inner {
146
+ border: 0;
147
+ box-shadow: none;
148
+ border-radius: 2px;
149
+ color: var(--color-text-inverted);
150
+ background: var(--color-neutral-60);
151
+ font-size: $font-body-extra-small;
152
+ padding: 6px 10px;
153
+ text-align: left;
154
+ }
155
+
156
+ .popover__arrow {
157
+ display: none;
158
+ }
159
+ }
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import classNames from 'classnames';
2
+ import clsx from 'clsx';
3
3
  import './style.scss';
4
4
  const Badge = (props) => {
5
5
  const className = props.className;
6
6
  const type = props.type || 'warning';
7
- return (_jsx("div", { className: classNames(`badge badge--${type}`, className), children: props.children }));
7
+ return _jsx("div", { className: clsx(`badge badge--${type}`, className), children: props.children });
8
8
  };
9
9
  export default Badge;
10
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/badge/index.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,cAAc,CAAC;AAgBtB,MAAM,KAAK,GAA0C,CAAE,KAAK,EAAG,EAAE;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC;IACrC,OAAO,CACN,cAAK,SAAS,EAAG,UAAU,CAAE,gBAAiB,IAAK,EAAE,EAAE,SAAS,CAAE,YAAK,KAAK,CAAC,QAAQ,GAAQ,CAC7F,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/badge/index.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,cAAc,CAAC;AAgBtB,MAAM,KAAK,GAA0C,CAAE,KAAK,EAAG,EAAE;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC;IACrC,OAAO,cAAK,SAAS,EAAG,IAAI,CAAE,gBAAiB,IAAK,EAAE,EAAE,SAAS,CAAE,YAAK,KAAK,CAAC,QAAQ,GAAQ,CAAC;AAChG,CAAC,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -1,15 +1,21 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import classNames from 'classnames';
3
- import ChecklistItem from '../checklist-item';
2
+ import clsx from 'clsx';
3
+ import { Children, cloneElement } from 'react';
4
+ import { Placeholder as ChecklistItemPlaceholder } from '../checklist-item';
4
5
  import './style.scss';
5
- const Checklist = ({ tasks, makeLastTaskPrimaryAction }) => {
6
- return (_jsx("ul", { className: classNames('checklist__tasks', {
6
+ const Checklist = ({ children, makeLastTaskPrimaryAction }) => {
7
+ const lastChildIndex = Children.count(children) - 1;
8
+ return (_jsx("ul", { className: clsx('checklist__tasks', {
7
9
  'checklist__has-primary-action': makeLastTaskPrimaryAction,
8
- }), "aria-label": "Launchpad Checklist", children: tasks &&
9
- tasks.map((task, index) => (_jsx(ChecklistItem, { task: task, isPrimaryAction: makeLastTaskPrimaryAction && index === tasks.length - 1 }, task.id))) }));
10
+ }), "aria-label": "Launchpad Checklist", children: Children.map(children || [], (child, index) => {
11
+ if (index === lastChildIndex) {
12
+ return cloneElement(child, { isPrimaryAction: makeLastTaskPrimaryAction });
13
+ }
14
+ return child;
15
+ }) }));
10
16
  };
11
- Checklist.Placeholder = () => {
12
- return (_jsxs("ul", { className: "checklist__tasks", "aria-label": "Launchpad Checklist", children: [_jsx(ChecklistItem.Placeholder, {}), _jsx(ChecklistItem.Placeholder, {}), _jsx(ChecklistItem.Placeholder, {}), _jsx(ChecklistItem.Placeholder, {})] }));
17
+ export const Placeholder = () => {
18
+ return (_jsxs("ul", { className: "checklist__tasks", "aria-label": "Launchpad Checklist", children: [_jsx(ChecklistItemPlaceholder, {}), _jsx(ChecklistItemPlaceholder, {}), _jsx(ChecklistItemPlaceholder, {}), _jsx(ChecklistItemPlaceholder, {})] }));
13
19
  };
14
20
  export default Checklist;
15
21
  //# sourceMappingURL=index.js.map