@automattic/launchpad 1.0.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 (71) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +35 -0
  3. package/dist/cjs/badge/index.js +13 -0
  4. package/dist/cjs/badge/index.js.map +1 -0
  5. package/dist/cjs/badge/style.scss +50 -0
  6. package/dist/cjs/checklist/index.js +18 -0
  7. package/dist/cjs/checklist/index.js.map +1 -0
  8. package/dist/cjs/checklist/style.scss +9 -0
  9. package/dist/cjs/checklist-item/index.js +35 -0
  10. package/dist/cjs/checklist-item/index.js.map +1 -0
  11. package/dist/cjs/checklist-item/style.scss +214 -0
  12. package/dist/cjs/index.js +14 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/launchpad.js +19 -0
  15. package/dist/cjs/launchpad.js.map +1 -0
  16. package/dist/cjs/setup-actions.js +156 -0
  17. package/dist/cjs/setup-actions.js.map +1 -0
  18. package/dist/cjs/types.js +3 -0
  19. package/dist/cjs/types.js.map +1 -0
  20. package/dist/esm/badge/index.js +10 -0
  21. package/dist/esm/badge/index.js.map +1 -0
  22. package/dist/esm/badge/style.scss +50 -0
  23. package/dist/esm/checklist/index.js +15 -0
  24. package/dist/esm/checklist/index.js.map +1 -0
  25. package/dist/esm/checklist/style.scss +9 -0
  26. package/dist/esm/checklist-item/index.js +32 -0
  27. package/dist/esm/checklist-item/index.js.map +1 -0
  28. package/dist/esm/checklist-item/style.scss +214 -0
  29. package/dist/esm/index.js +6 -0
  30. package/dist/esm/index.js.map +1 -0
  31. package/dist/esm/launchpad.js +16 -0
  32. package/dist/esm/launchpad.js.map +1 -0
  33. package/dist/esm/setup-actions.js +151 -0
  34. package/dist/esm/setup-actions.js.map +1 -0
  35. package/dist/esm/types.js +2 -0
  36. package/dist/esm/types.js.map +1 -0
  37. package/dist/tsconfig-cjs.tsbuildinfo +1 -0
  38. package/dist/tsconfig.tsbuildinfo +1 -0
  39. package/dist/types/badge/index.d.ts +10 -0
  40. package/dist/types/badge/index.d.ts.map +1 -0
  41. package/dist/types/checklist/index.d.ts +12 -0
  42. package/dist/types/checklist/index.d.ts.map +1 -0
  43. package/dist/types/checklist-item/index.d.ts +11 -0
  44. package/dist/types/checklist-item/index.d.ts.map +1 -0
  45. package/dist/types/index.d.ts +6 -0
  46. package/dist/types/index.d.ts.map +1 -0
  47. package/dist/types/launchpad.d.ts +12 -0
  48. package/dist/types/launchpad.d.ts.map +1 -0
  49. package/dist/types/setup-actions.d.ts +3 -0
  50. package/dist/types/setup-actions.d.ts.map +1 -0
  51. package/dist/types/types.d.ts +64 -0
  52. package/dist/types/types.d.ts.map +1 -0
  53. package/jest.config.js +5 -0
  54. package/package.json +59 -0
  55. package/src/badge/index.tsx +27 -0
  56. package/src/badge/style.scss +50 -0
  57. package/src/checklist/index.tsx +43 -0
  58. package/src/checklist/style.scss +9 -0
  59. package/src/checklist-item/index.tsx +94 -0
  60. package/src/checklist-item/style.scss +214 -0
  61. package/src/index.ts +5 -0
  62. package/src/launchpad.tsx +45 -0
  63. package/src/setup-actions.ts +168 -0
  64. package/src/test/badge.tsx +50 -0
  65. package/src/test/checklist-item.tsx +96 -0
  66. package/src/test/checklist.tsx +25 -0
  67. package/src/test/launchpad.tsx +49 -0
  68. package/src/test/lib/fixtures.ts +322 -0
  69. package/src/types.ts +70 -0
  70. package/tsconfig-cjs.json +7 -0
  71. package/tsconfig.json +11 -0
@@ -0,0 +1,50 @@
1
+ .badge {
2
+ display: inline-block;
3
+ // A number large enough to exceed height of any badge to make it look like a pill
4
+ border-radius: 1000px; /* stylelint-disable-line scales/radii */
5
+ padding: $badge-padding-y $badge-padding-x;
6
+ font-size: $font-body-small;
7
+ line-height: 17px;
8
+ height: 18px;
9
+ }
10
+
11
+ .badge--warning-clear {
12
+ color: var(--color-warning);
13
+ border: 1px solid var(--color-warning);
14
+ border-radius: 12px; /* stylelint-disable-line scales/radii */
15
+ }
16
+
17
+ .badge--warning {
18
+ color: var(--color-warning-80);
19
+ background-color: var(--color-warning-20);
20
+ }
21
+
22
+ .badge--success {
23
+ color: var(--color-text-inverted);
24
+ background-color: var(--color-success);
25
+ }
26
+
27
+ .badge--info {
28
+ color: var(--color-neutral-70);
29
+ background-color: var(--color-neutral-5);
30
+ }
31
+
32
+ .badge--info-blue {
33
+ background-color: var(--studio-blue-50);
34
+ color: var(--color-text-inverted);
35
+ }
36
+
37
+ .badge--info-green {
38
+ color: var(--studio-green-80);
39
+ background-color: rgba(184, 230, 191, 0.64);
40
+ }
41
+
42
+ .badge--info-purple {
43
+ color: var(--studio-woocommerce-purple-80);
44
+ background-color: var(--studio-woocommerce-purple-5);
45
+ }
46
+
47
+ .badge--error {
48
+ background-color: var(--color-error);
49
+ color: var(--color-text-inverted);
50
+ }
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ import ChecklistItem from '../checklist-item';
4
+ import './style.scss';
5
+ const Checklist = ({ tasks, makeLastTaskPrimaryAction }) => {
6
+ return (_jsx("ul", { className: classNames('checklist__tasks', {
7
+ '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
+ };
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, {})] }));
13
+ };
14
+ export default Checklist;
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checklist/index.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAG9C,OAAO,cAAc,CAAC;AAOtB,MAAM,SAAS,GAAG,CAAE,EAAE,KAAK,EAAE,yBAAyB,EAAkB,EAAG,EAAE;IAC5E,OAAO,CACN,aACC,SAAS,EAAG,UAAU,CAAE,kBAAkB,EAAE;YAC3C,+BAA+B,EAAE,yBAAyB;SAC1D,CAAE,gBACQ,qBAAqB,YAE9B,KAAK;YACN,KAAK,CAAC,GAAG,CAAE,CAAE,IAAU,EAAE,KAAa,EAAG,EAAE,CAAC,CAC3C,KAAC,aAAa,IAEb,IAAI,EAAG,IAAI,EACX,eAAe,EAAG,yBAAyB,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,IAFnE,IAAI,CAAC,EAAE,CAGZ,CACF,CAAE,GACA,CACL,CAAC;AACH,CAAC,CAAC;AAEF,SAAS,CAAC,WAAW,GAAG,GAAG,EAAE;IAC5B,OAAO,CACN,cAAI,SAAS,EAAC,kBAAkB,gBAAY,qBAAqB,aAChE,KAAC,aAAa,CAAC,WAAW,KAAG,EAC7B,KAAC,aAAa,CAAC,WAAW,KAAG,EAC7B,KAAC,aAAa,CAAC,WAAW,KAAG,EAC7B,KAAC,aAAa,CAAC,WAAW,KAAG,IACzB,CACL,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,9 @@
1
+ @import "@wordpress/base-styles/mixins";
2
+ @import "@wordpress/base-styles/breakpoints";
3
+ @import "@automattic/typography/styles/variables";
4
+
5
+ .checklist__tasks {
6
+ list-style: none;
7
+ margin: 0;
8
+ padding: 0;
9
+ }
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Badge, Button, Gridicon } from '@automattic/components';
3
+ import classnames from 'classnames';
4
+ import { translate, useRtl } from 'i18n-calypso';
5
+ import './style.scss';
6
+ const ChecklistItem = ({ task, isPrimaryAction }) => {
7
+ const isRtl = useRtl();
8
+ const { id, completed, disabled, title, subtitle, actionDispatch } = task;
9
+ // Display chevron if task is incomplete. Don't display chevron and badge at the same time.
10
+ const shouldDisplayChevron = !completed && !disabled && !task.badge_text;
11
+ const handlePrimaryAction = () => {
12
+ localStorage.removeItem('launchpad_siteSlug');
13
+ actionDispatch && actionDispatch();
14
+ };
15
+ // Display task counter if task is incomplete and has the count properties;
16
+ const shouldDisplayTaskCounter = task.target_repetitions &&
17
+ null !== task.repetition_count &&
18
+ undefined !== task.repetition_count;
19
+ return (_jsx("li", { className: classnames('checklist-item__task', {
20
+ completed: completed,
21
+ pending: !completed,
22
+ enabled: !disabled,
23
+ disabled: disabled,
24
+ }), children: isPrimaryAction ? (_jsx(Button, { className: "checklist-item__checklist-primary-button", disabled: disabled, "data-task": id, onClick: handlePrimaryAction, children: title })) : (_jsxs(Button, { className: "checklist-item__task-content", disabled: disabled, "data-task": id, onClick: actionDispatch, children: [completed && (
25
+ // show checkmark for completed tasks regardless if they are disabled or kept active
26
+ _jsx("div", { className: "checklist-item__checkmark-container", children: _jsx(Gridicon, { "aria-label": translate('Task complete'), className: "checklist-item__checkmark", icon: "checkmark", size: 18 }) })), _jsx("span", { className: "checklist-item__text", children: title }), task.badge_text ? _jsx(Badge, { type: "info-blue", children: task.badge_text }) : null, shouldDisplayTaskCounter && (_jsxs("span", { className: "checklist-item__counter", children: [task.repetition_count, "/", task.target_repetitions] })), shouldDisplayChevron && (_jsx(Gridicon, { "aria-label": translate('Task enabled'), className: "checklist-item__chevron", icon: `chevron-${isRtl ? 'left' : 'right'}`, size: 18 })), subtitle && _jsx("p", { className: "checklist-item__subtext", children: subtitle })] })) }));
27
+ };
28
+ ChecklistItem.Placeholder = () => {
29
+ return (_jsx("div", { className: "checklist-item__task-content is-placeholder", children: _jsx("div", { className: "checklist-item__content", children: _jsx("div", {}) }) }));
30
+ };
31
+ export default ChecklistItem;
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checklist-item/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,cAAc,CAAC;AAEtB,MAAM,aAAa,GAAG,CAAE,EAAE,IAAI,EAAE,eAAe,EAA6C,EAAG,EAAE;IAChG,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAE1E,2FAA2F;IAC3F,MAAM,oBAAoB,GAAG,CAAE,SAAS,IAAI,CAAE,QAAQ,IAAI,CAAE,IAAI,CAAC,UAAU,CAAC;IAE5E,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAChC,YAAY,CAAC,UAAU,CAAE,oBAAoB,CAAE,CAAC;QAChD,cAAc,IAAI,cAAc,EAAE,CAAC;IACpC,CAAC,CAAC;IAEF,2EAA2E;IAC3E,MAAM,wBAAwB,GAC7B,IAAI,CAAC,kBAAkB;QACvB,IAAI,KAAK,IAAI,CAAC,gBAAgB;QAC9B,SAAS,KAAK,IAAI,CAAC,gBAAgB,CAAC;IAErC,OAAO,CACN,aACC,SAAS,EAAG,UAAU,CAAE,sBAAsB,EAAE;YAC/C,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,CAAE,SAAS;YACpB,OAAO,EAAE,CAAE,QAAQ;YACnB,QAAQ,EAAE,QAAQ;SAClB,CAAE,YAED,eAAe,CAAC,CAAC,CAAC,CACnB,KAAC,MAAM,IACN,SAAS,EAAC,0CAA0C,EACpD,QAAQ,EAAG,QAAQ,eACP,EAAE,EACd,OAAO,EAAG,mBAAmB,YAE3B,KAAK,GACC,CACT,CAAC,CAAC,CAAC,CACH,MAAC,MAAM,IACN,SAAS,EAAC,8BAA8B,EACxC,QAAQ,EAAG,QAAQ,eACP,EAAE,EACd,OAAO,EAAG,cAAc,aAEtB,SAAS,IAAI;gBACd,oFAAoF;gBACpF,cAAK,SAAS,EAAC,qCAAqC,YACnD,KAAC,QAAQ,kBACK,SAAS,CAAE,eAAe,CAAE,EACzC,SAAS,EAAC,2BAA2B,EACrC,IAAI,EAAC,WAAW,EAChB,IAAI,EAAG,EAAE,GACR,GACG,CACN,EACD,eAAM,SAAS,EAAC,sBAAsB,YAAG,KAAK,GAAS,EACrD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAC,KAAK,IAAC,IAAI,EAAC,WAAW,YAAG,IAAI,CAAC,UAAU,GAAU,CAAC,CAAC,CAAC,IAAI,EAC5E,wBAAwB,IAAI,CAC7B,gBAAM,SAAS,EAAC,yBAAyB,aACtC,IAAI,CAAC,gBAAgB,OAAK,IAAI,CAAC,kBAAkB,IAC7C,CACP,EACC,oBAAoB,IAAI,CACzB,KAAC,QAAQ,kBACK,SAAS,CAAE,cAAc,CAAE,EACxC,SAAS,EAAC,yBAAyB,EACnC,IAAI,EAAG,WAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAQ,EAAE,EAC9C,IAAI,EAAG,EAAE,GACR,CACF,EACC,QAAQ,IAAI,YAAG,SAAS,EAAC,yBAAyB,YAAG,QAAQ,GAAM,IAC7D,CACT,GACG,CACL,CAAC;AACH,CAAC,CAAC;AAEF,aAAa,CAAC,WAAW,GAAG,GAAG,EAAE;IAChC,OAAO,CACN,cAAK,SAAS,EAAC,6CAA6C,YAC3D,cAAK,SAAS,EAAC,yBAAyB,YACvC,eAAW,GACN,GACD,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,214 @@
1
+ @import "@wordpress/base-styles/mixins";
2
+ @import "@wordpress/base-styles/breakpoints";
3
+ @import "@automattic/typography/styles/variables";
4
+
5
+ .checklist-item__task-content {
6
+ align-items: flex-start;
7
+ background-color: transparent;
8
+ border-bottom: 1px solid var(--studio-gray-5);
9
+ border-left: none;
10
+ border-right: none;
11
+ border-top: none;
12
+ display: flex;
13
+ flex-wrap: wrap;
14
+ padding: 16px 0;
15
+ width: 100%;
16
+ margin: 0;
17
+ color: var(--color-neutral-100);
18
+
19
+ &.is-placeholder {
20
+ padding: 16px 0 16px 0;
21
+ }
22
+ }
23
+
24
+ .checklist-item__content {
25
+ width: 100%;
26
+
27
+ .is-placeholder & {
28
+ animation: loading-fade 1.6s ease-in-out infinite;
29
+ background-color: var(--color-neutral-light);
30
+ color: transparent;
31
+ min-height: 44px;
32
+ }
33
+
34
+ >div {
35
+ .is-placeholder & {
36
+ color: transparent;
37
+ }
38
+ }
39
+ }
40
+
41
+ .button.checklist-item__task-content:hover:not([disabled]),
42
+ .button.checklist-item__task-content:focus:not([disabled]) {
43
+ fill: var(--studio-blue-50);
44
+ color: var(--studio-blue-50);
45
+ border-bottom: 1px solid var(--studio-gray-5);
46
+ }
47
+
48
+ .checklist-item__task-content .badge {
49
+ margin-left: auto;
50
+ background-color: var(--studio-blue-5);
51
+ color: var(--studio-blue-80);
52
+ font-size: $font-body-extra-small;
53
+ }
54
+
55
+ .checklist-item__task-content[disabled],
56
+ .checklist-item__task-content[disabled]:focus {
57
+ background-color: transparent;
58
+ pointer-events: none;
59
+ }
60
+
61
+ .checklist-item__task-content[data-task="verify_email"] {
62
+ color: var(--color-text);
63
+ }
64
+
65
+ .checklist-item__task-content[data-task="set_up_payments"] .badge {
66
+ background-color: var(--studio-green-5);
67
+ cursor: default;
68
+ }
69
+
70
+ .checklist-item__checkmark-container {
71
+ margin-right: 8px;
72
+ width: 20px;
73
+
74
+ .checklist-item__checkmark {
75
+ top: 2px;
76
+ vertical-align: text-bottom;
77
+ }
78
+ }
79
+
80
+ // general styles
81
+ .checklist-item__text {
82
+ font-weight: 600;
83
+ flex-grow: 1;
84
+ text-align: left;
85
+ }
86
+
87
+ .checklist-item__subtext {
88
+ flex-basis: 100%;
89
+ margin-left: 28px;
90
+ margin-top: 8px;
91
+ text-align: left;
92
+ font-size: $font-body-small;
93
+ line-height: 20px;
94
+
95
+ a,
96
+ a:visited {
97
+ text-decoration: underline;
98
+ color: var(--color-neutral-100);
99
+
100
+ &:hover {
101
+ color: var(--studio-blue-50);
102
+ }
103
+ }
104
+ }
105
+
106
+ .checklist-item__task-content:hover .checklist-item__subtext {
107
+ color: var(--color-neutral-100);
108
+ }
109
+
110
+ .checklist__has-primary-action .checklist-item__task:nth-last-child(2) {
111
+
112
+ // remove bottom border for last checklist item before the primary button
113
+ .checklist-item__task-content,
114
+ .checklist-item__task-content:hover,
115
+ .checklist-item__task-content:focus {
116
+ border-bottom: none;
117
+ }
118
+ }
119
+
120
+ .checklist-item__task:last-child {
121
+ .checklist-item__task-content,
122
+ .checklist-item__task-content:hover,
123
+ .checklist-item__task-content:focus {
124
+ border-bottom: none;
125
+ }
126
+ }
127
+
128
+ // completed tasks (both enabled and disabled)
129
+ .checklist-item__task.completed.disabled,
130
+ .checklist-item__task.completed.enabled {
131
+ .checklist-item__text {
132
+ color: var(--color-neutral-40);
133
+ font-weight: 400;
134
+ }
135
+
136
+ .checklist-item__chevron,
137
+ .checklist-item__checkmark {
138
+ fill: var(--color-neutral-40);
139
+ }
140
+ .checklist-item__counter {
141
+ color: var(--color-neutral-40);
142
+ font-weight: 400;
143
+ margin-right: 0;
144
+ }
145
+ }
146
+
147
+ // pending tasks and completed enabled
148
+ .checklist-item__task.completed.enabled:hover,
149
+ .checklist-item__task.pending:hover,
150
+ .checklist-item__task.completed.enabled > a:focus,
151
+ .checklist-item__task.pending > a:focus {
152
+ .checklist-item__text {
153
+ color: var(--studio-blue-50);
154
+ }
155
+
156
+ .checklist-item__chevron,
157
+ .checklist-item__checkmark {
158
+ fill: var(--studio-blue-50);
159
+ }
160
+
161
+ // change badge color on hover (Choose a Plan step)
162
+ .badge {
163
+ background: var(--studio-blue-10);
164
+ }
165
+
166
+ .checklist-item__task-content[data-task="set_up_payments"] .badge {
167
+ background-color: var(--studio-green-5);
168
+ }
169
+ }
170
+
171
+ // pending disabled tasks
172
+ .checklist-item__task.pending.disabled {
173
+ .checklist-item__text {
174
+ color: inherit;
175
+ }
176
+ }
177
+
178
+ .checklist-item__chevron {
179
+ display: flex;
180
+ line-height: 20px;
181
+ width: 30px;
182
+ }
183
+
184
+ .gridicon.checklist-item__chevron {
185
+ top: 2px;
186
+ margin-top: 0;
187
+ }
188
+
189
+ .checklist-item__counter {
190
+ margin-right: 1em;
191
+ font-weight: 600;
192
+ }
193
+
194
+ .checklist-item__checklist-primary-button {
195
+ width: 100%;
196
+ font-weight: 500;
197
+ padding: 11px;
198
+ margin-top: 12px;
199
+ background-color: var(--color-primary);
200
+ border-color: var(--color-primary);
201
+ color: var(--color-text-inverted);
202
+
203
+ &:hover:not([disabled]) {
204
+ background-color: var(--color-primary-60);
205
+ border-color: var(--color-primary-60);
206
+ color: var(--color-text-inverted);
207
+ }
208
+
209
+ &[disabled] {
210
+ background-color: var(--color-primary-10);
211
+ border-color: var(--color-primary-10);
212
+ color: var(--color-text-inverted);
213
+ }
214
+ }
@@ -0,0 +1,6 @@
1
+ export { default as Checklist } from './checklist';
2
+ export { default as ChecklistItem } from './checklist-item';
3
+ export { default as Launchpad } from './launchpad';
4
+ export { setUpActionsForTasks } from './setup-actions';
5
+ export * from './types';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,cAAc,SAAS,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useLaunchpad } from '@automattic/data-stores';
3
+ import { useRef, useMemo } from 'react';
4
+ import Checklist from './checklist';
5
+ const Launchpad = ({ siteSlug, checklistSlug, taskFilter, makeLastTaskPrimaryAction, useLaunchpadOptions = {}, }) => {
6
+ const launchpadData = useLaunchpad(siteSlug || '', checklistSlug, useLaunchpadOptions);
7
+ const { isFetchedAfterMount, data } = launchpadData;
8
+ const tasks = useRef([]);
9
+ useMemo(() => {
10
+ const originalTasks = data.checklist || [];
11
+ tasks.current = taskFilter ? taskFilter(originalTasks) : originalTasks;
12
+ }, [data, taskFilter]);
13
+ return (_jsx("div", { className: "launchpad__checklist-wrapper", children: isFetchedAfterMount ? (_jsx(Checklist, { tasks: tasks.current, makeLastTaskPrimaryAction: makeLastTaskPrimaryAction })) : (_jsx(Checklist.Placeholder, {})) }));
14
+ };
15
+ export default Launchpad;
16
+ //# sourceMappingURL=launchpad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launchpad.js","sourceRoot":"","sources":["../../src/launchpad.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,SAAS,MAAM,aAAa,CAAC;AAYpC,MAAM,SAAS,GAAG,CAAE,EACnB,QAAQ,EACR,aAAa,EACb,UAAU,EACV,yBAAyB,EACzB,mBAAmB,GAAG,EAAE,GACR,EAAG,EAAE;IACrB,MAAM,aAAa,GAAG,YAAY,CAAE,QAAQ,IAAI,EAAE,EAAE,aAAa,EAAE,mBAAmB,CAAE,CAAC;IACzF,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,CAAY,EAAE,CAAE,CAAC;IAErC,OAAO,CAAE,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QAC3C,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAE,aAAa,CAAE,CAAC,CAAC,CAAC,aAAa,CAAC;IAC1E,CAAC,EAAE,CAAE,IAAI,EAAE,UAAU,CAAE,CAAE,CAAC;IAE1B,OAAO,CACN,cAAK,SAAS,EAAC,8BAA8B,YAC1C,mBAAmB,CAAC,CAAC,CAAC,CACvB,KAAC,SAAS,IACT,KAAK,EAAG,KAAK,CAAC,OAAO,EACrB,yBAAyB,EAAG,yBAAyB,GACpD,CACF,CAAC,CAAC,CAAC,CACH,KAAC,SAAS,CAAC,WAAW,KAAG,CACzB,GACI,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,151 @@
1
+ import config from '@automattic/calypso-config';
2
+ import { updateLaunchpadSettings } from '@automattic/data-stores';
3
+ import { isMobile } from '@automattic/viewport';
4
+ import { addQueryArgs } from '@wordpress/url';
5
+ import wpcomRequest from 'wpcom-proxy-request';
6
+ const TASKS_TO_COMPLETE_ON_CLICK = [
7
+ 'add_about_page',
8
+ 'manage_paid_newsletter_plan',
9
+ 'earn_money',
10
+ 'manage_subscribers',
11
+ 'connect_social_media',
12
+ 'drive_traffic',
13
+ ];
14
+ export const setUpActionsForTasks = ({ siteSlug, tasks, tracksData, extraActions, uiContext = 'calypso', }) => {
15
+ const { recordTracksEvent, checklistSlug, tasklistCompleted, launchpadContext } = tracksData;
16
+ const { setShareSiteModalIsOpen, siteLaunched, setActiveChecklist } = extraActions;
17
+ //Record click events for tasks
18
+ const recordTaskClickTracksEvent = (task) => {
19
+ recordTracksEvent('calypso_launchpad_task_clicked', {
20
+ checklist_slug: checklistSlug,
21
+ checklist_completed: tasklistCompleted,
22
+ task_id: task.id,
23
+ is_completed: task.completed,
24
+ context: launchpadContext,
25
+ order: task.order,
26
+ });
27
+ };
28
+ // Add actions to the tasks.
29
+ return tasks.map((task) => {
30
+ let action;
31
+ let logMissingCalypsoPath = false;
32
+ if (uiContext === 'calypso' && task.calypso_path !== undefined) {
33
+ let targetPath = task.calypso_path;
34
+ if (task.id === 'drive_traffic' && !isMobile()) {
35
+ targetPath = addQueryArgs(targetPath, { tour: 'marketingConnectionsTour' });
36
+ }
37
+ // Enable task in 'calypso' context
38
+ if (task.id === 'setup_general') {
39
+ task.disabled = false;
40
+ }
41
+ action = () => {
42
+ if (siteSlug && TASKS_TO_COMPLETE_ON_CLICK.includes(task.id)) {
43
+ updateLaunchpadSettings(siteSlug, {
44
+ checklist_statuses: { [task.id]: true },
45
+ });
46
+ }
47
+ window.location.assign(targetPath);
48
+ };
49
+ }
50
+ else {
51
+ switch (task.id) {
52
+ case 'share_site':
53
+ action = () => {
54
+ setShareSiteModalIsOpen?.(true);
55
+ };
56
+ break;
57
+ case 'site_title':
58
+ logMissingCalypsoPath = true;
59
+ action = () => {
60
+ window.location.assign(`/settings/general/${siteSlug}`);
61
+ };
62
+ break;
63
+ case 'domain_claim':
64
+ case 'domain_upsell':
65
+ case 'domain_customize':
66
+ logMissingCalypsoPath = true;
67
+ action = () => {
68
+ window.location.assign(`/domains/add/${siteSlug}`);
69
+ };
70
+ break;
71
+ case 'drive_traffic':
72
+ logMissingCalypsoPath = true;
73
+ action = () => {
74
+ const url = isMobile()
75
+ ? `/marketing/connections/${siteSlug}`
76
+ : `/marketing/connections/${siteSlug}?tour=marketingConnectionsTour`;
77
+ window.location.assign(url);
78
+ };
79
+ break;
80
+ case 'add_new_page':
81
+ logMissingCalypsoPath = true;
82
+ action = () => {
83
+ window.location.assign(`/page/${siteSlug}`);
84
+ };
85
+ break;
86
+ case 'edit_page':
87
+ logMissingCalypsoPath = true;
88
+ action = () => {
89
+ window.location.assign(`/pages/${siteSlug}`);
90
+ };
91
+ break;
92
+ case 'update_about_page':
93
+ logMissingCalypsoPath = true;
94
+ action = () => {
95
+ window.location.assign(`/page/${siteSlug}/${task?.extra_data?.about_page_id}`);
96
+ };
97
+ break;
98
+ case 'customize_welcome_message':
99
+ logMissingCalypsoPath = true;
100
+ action = () => {
101
+ if (config.isEnabled('settings/newsletter-settings-page')) {
102
+ window.location.assign(`/settings/newsletter/${siteSlug}`);
103
+ }
104
+ else {
105
+ window.location.assign(`/settings/reading/${siteSlug}#newsletter-settings`);
106
+ }
107
+ };
108
+ break;
109
+ case 'manage_subscribers':
110
+ logMissingCalypsoPath = true;
111
+ action = () => {
112
+ window.location.assign(`/subscribers/${siteSlug}`);
113
+ };
114
+ break;
115
+ case 'site_launched':
116
+ case 'blog_launched':
117
+ case 'videopress_launched':
118
+ case 'link_in_bio_launched':
119
+ action = async () => {
120
+ await wpcomRequest({
121
+ path: `/sites/${siteSlug}/launch`,
122
+ apiVersion: '1.1',
123
+ method: 'post',
124
+ });
125
+ siteLaunched?.();
126
+ };
127
+ break;
128
+ default:
129
+ logMissingCalypsoPath = true;
130
+ break;
131
+ }
132
+ }
133
+ if (logMissingCalypsoPath) {
134
+ recordTracksEvent('calypso_launchpad_task_missing_calypso_path', {
135
+ checklist_slug: checklistSlug,
136
+ task_id: task.id,
137
+ is_completed: task.completed,
138
+ context: launchpadContext,
139
+ });
140
+ }
141
+ const actionDispatch = () => {
142
+ recordTaskClickTracksEvent(task);
143
+ if (siteSlug && setActiveChecklist) {
144
+ setActiveChecklist(siteSlug, checklistSlug);
145
+ }
146
+ action?.();
147
+ };
148
+ return { ...task, actionDispatch };
149
+ });
150
+ };
151
+ //# sourceMappingURL=setup-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-actions.js","sourceRoot":"","sources":["../../src/setup-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}