@automattic/onboarding 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.
- package/README.md +20 -0
- package/dist/cjs/action-buttons/index.js +50 -0
- package/dist/cjs/action-buttons/index.js.map +1 -0
- package/dist/cjs/action-buttons/style.scss +108 -0
- package/dist/cjs/cart/create-cart-manager-client.js +30 -0
- package/dist/cjs/cart/create-cart-manager-client.js.map +1 -0
- package/dist/cjs/cart/index.js +239 -0
- package/dist/cjs/cart/index.js.map +1 -0
- package/dist/cjs/confetti/index.js +8 -0
- package/dist/cjs/confetti/index.js.map +1 -0
- package/dist/cjs/feature-icon/index.js +19 -0
- package/dist/cjs/feature-icon/index.js.map +1 -0
- package/dist/cjs/flow-progress/index.js +14 -0
- package/dist/cjs/flow-progress/index.js.map +1 -0
- package/dist/cjs/flow-progress/style.scss +5 -0
- package/dist/cjs/flow-progress/use-flow-progress.js +92 -0
- package/dist/cjs/flow-progress/use-flow-progress.js.map +1 -0
- package/dist/cjs/hooray/index.js +12 -0
- package/dist/cjs/hooray/index.js.map +1 -0
- package/dist/cjs/hooray/style.scss +66 -0
- package/dist/cjs/index.js +54 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/intent-screen/index.js +11 -0
- package/dist/cjs/intent-screen/index.js.map +1 -0
- package/dist/cjs/mshots-image/index.js +234 -0
- package/dist/cjs/mshots-image/index.js.map +1 -0
- package/dist/cjs/mshots-image/style.scss +43 -0
- package/dist/cjs/navigator/hooks/index.js +6 -0
- package/dist/cjs/navigator/hooks/index.js.map +1 -0
- package/dist/cjs/navigator/hooks/use-navigator-listener.js +16 -0
- package/dist/cjs/navigator/hooks/use-navigator-listener.js.map +1 -0
- package/dist/cjs/navigator/index.js +18 -0
- package/dist/cjs/navigator/index.js.map +1 -0
- package/dist/cjs/navigator/navigator-buttons/index.js +23 -0
- package/dist/cjs/navigator/navigator-buttons/index.js.map +1 -0
- package/dist/cjs/navigator/navigator-buttons/style.scss +47 -0
- package/dist/cjs/navigator/navigator-header/index.js +13 -0
- package/dist/cjs/navigator/navigator-header/index.js.map +1 -0
- package/dist/cjs/navigator/navigator-header/style.scss +45 -0
- package/dist/cjs/navigator/navigator-item-group/index.js +10 -0
- package/dist/cjs/navigator/navigator-item-group/index.js.map +1 -0
- package/dist/cjs/navigator/navigator-item-group/style.scss +28 -0
- package/dist/cjs/navigator/navigator-listener/index.js +9 -0
- package/dist/cjs/navigator/navigator-listener/index.js.map +1 -0
- package/dist/cjs/navigator/navigator-screen/index.js +16 -0
- package/dist/cjs/navigator/navigator-screen/index.js.map +1 -0
- package/dist/cjs/navigator/navigator-screens/hooks/index.js +8 -0
- package/dist/cjs/navigator/navigator-screens/hooks/index.js.map +1 -0
- package/dist/cjs/navigator/navigator-screens/hooks/use-navigator-buttons.js +17 -0
- package/dist/cjs/navigator/navigator-screens/hooks/use-navigator-buttons.js.map +1 -0
- package/dist/cjs/navigator/navigator-screens/hooks/use-navigator-screens.js +14 -0
- package/dist/cjs/navigator/navigator-screens/hooks/use-navigator-screens.js.map +1 -0
- package/dist/cjs/navigator/navigator-screens/index.js +9 -0
- package/dist/cjs/navigator/navigator-screens/index.js.map +1 -0
- package/dist/cjs/navigator/navigator-screens/navigator-screens.js +18 -0
- package/dist/cjs/navigator/navigator-screens/navigator-screens.js.map +1 -0
- package/dist/cjs/navigator/navigator-screens/navigator-screens.scss +60 -0
- package/dist/cjs/navigator/navigator-screens/types.js +3 -0
- package/dist/cjs/navigator/navigator-screens/types.js.map +1 -0
- package/dist/cjs/notice/index.js +12 -0
- package/dist/cjs/notice/index.js.map +1 -0
- package/dist/cjs/notice/style.scss +19 -0
- package/dist/cjs/progress/index.js +11 -0
- package/dist/cjs/progress/index.js.map +1 -0
- package/dist/cjs/progress/style.scss +34 -0
- package/dist/cjs/select-card-checkbox/index.js +17 -0
- package/dist/cjs/select-card-checkbox/index.js.map +1 -0
- package/dist/cjs/select-card-checkbox/style.scss +30 -0
- package/dist/cjs/select-card-radio/index.js +21 -0
- package/dist/cjs/select-card-radio/index.js.map +1 -0
- package/dist/cjs/select-card-radio/style.scss +44 -0
- package/dist/cjs/select-items/index.js +13 -0
- package/dist/cjs/select-items/index.js.map +1 -0
- package/dist/cjs/select-items/style.scss +96 -0
- package/dist/cjs/select-items-alt/index.js +14 -0
- package/dist/cjs/select-items-alt/index.js.map +1 -0
- package/dist/cjs/select-items-alt/style.scss +72 -0
- package/dist/cjs/sensei-logo/index.js +8 -0
- package/dist/cjs/sensei-logo/index.js.map +1 -0
- package/dist/cjs/setup-tailored-site-after-creation.js +109 -0
- package/dist/cjs/setup-tailored-site-after-creation.js.map +1 -0
- package/dist/cjs/step-container/index.js +65 -0
- package/dist/cjs/step-container/index.js.map +1 -0
- package/dist/cjs/step-container/style.scss +304 -0
- package/dist/cjs/step-navigation-link/index.js +35 -0
- package/dist/cjs/step-navigation-link/index.js.map +1 -0
- package/dist/cjs/step-navigation-link/style.scss +42 -0
- package/dist/cjs/titles/index.js +13 -0
- package/dist/cjs/titles/index.js.map +1 -0
- package/dist/cjs/titles/styles.scss +29 -0
- package/dist/cjs/upload-and-set-site-logo.js +32 -0
- package/dist/cjs/upload-and-set-site-logo.js.map +1 -0
- package/dist/cjs/utils/contrastChecker.js +38 -0
- package/dist/cjs/utils/contrastChecker.js.map +1 -0
- package/dist/cjs/utils/domain-suggester.js +113 -0
- package/dist/cjs/utils/domain-suggester.js.map +1 -0
- package/dist/cjs/utils/flows.js +218 -0
- package/dist/cjs/utils/flows.js.map +1 -0
- package/dist/cjs/utils/index.js +13 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/is-domain.js +22 -0
- package/dist/cjs/utils/is-domain.js.map +1 -0
- package/dist/cjs/utils/use-data-loss-warning.js +20 -0
- package/dist/cjs/utils/use-data-loss-warning.js.map +1 -0
- package/dist/cjs/videopress-logo/index.js +8 -0
- package/dist/cjs/videopress-logo/index.js.map +1 -0
- package/dist/esm/action-buttons/index.js +42 -0
- package/dist/esm/action-buttons/index.js.map +1 -0
- package/dist/esm/action-buttons/style.scss +108 -0
- package/dist/esm/cart/create-cart-manager-client.js +27 -0
- package/dist/esm/cart/create-cart-manager-client.js.map +1 -0
- package/dist/esm/cart/index.js +229 -0
- package/dist/esm/cart/index.js.map +1 -0
- package/dist/esm/confetti/index.js +6 -0
- package/dist/esm/confetti/index.js.map +1 -0
- package/dist/esm/feature-icon/index.js +16 -0
- package/dist/esm/feature-icon/index.js.map +1 -0
- package/dist/esm/flow-progress/index.js +12 -0
- package/dist/esm/flow-progress/index.js.map +1 -0
- package/dist/esm/flow-progress/style.scss +5 -0
- package/dist/esm/flow-progress/use-flow-progress.js +88 -0
- package/dist/esm/flow-progress/use-flow-progress.js.map +1 -0
- package/dist/esm/hooray/index.js +9 -0
- package/dist/esm/hooray/index.js.map +1 -0
- package/dist/esm/hooray/style.scss +66 -0
- package/dist/esm/index.js +22 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/intent-screen/index.js +8 -0
- package/dist/esm/intent-screen/index.js.map +1 -0
- package/dist/esm/mshots-image/index.js +229 -0
- package/dist/esm/mshots-image/index.js.map +1 -0
- package/dist/esm/mshots-image/style.scss +43 -0
- package/dist/esm/navigator/hooks/index.js +2 -0
- package/dist/esm/navigator/hooks/index.js.map +1 -0
- package/dist/esm/navigator/hooks/use-navigator-listener.js +14 -0
- package/dist/esm/navigator/hooks/use-navigator-listener.js.map +1 -0
- package/dist/esm/navigator/index.js +8 -0
- package/dist/esm/navigator/index.js.map +1 -0
- package/dist/esm/navigator/navigator-buttons/index.js +17 -0
- package/dist/esm/navigator/navigator-buttons/index.js.map +1 -0
- package/dist/esm/navigator/navigator-buttons/style.scss +47 -0
- package/dist/esm/navigator/navigator-header/index.js +11 -0
- package/dist/esm/navigator/navigator-header/index.js.map +1 -0
- package/dist/esm/navigator/navigator-header/style.scss +45 -0
- package/dist/esm/navigator/navigator-item-group/index.js +8 -0
- package/dist/esm/navigator/navigator-item-group/index.js.map +1 -0
- package/dist/esm/navigator/navigator-item-group/style.scss +28 -0
- package/dist/esm/navigator/navigator-listener/index.js +7 -0
- package/dist/esm/navigator/navigator-listener/index.js.map +1 -0
- package/dist/esm/navigator/navigator-screen/index.js +14 -0
- package/dist/esm/navigator/navigator-screen/index.js.map +1 -0
- package/dist/esm/navigator/navigator-screens/hooks/index.js +3 -0
- package/dist/esm/navigator/navigator-screens/hooks/index.js.map +1 -0
- package/dist/esm/navigator/navigator-screens/hooks/use-navigator-buttons.js +14 -0
- package/dist/esm/navigator/navigator-screens/hooks/use-navigator-buttons.js.map +1 -0
- package/dist/esm/navigator/navigator-screens/hooks/use-navigator-screens.js +11 -0
- package/dist/esm/navigator/navigator-screens/hooks/use-navigator-screens.js.map +1 -0
- package/dist/esm/navigator/navigator-screens/index.js +4 -0
- package/dist/esm/navigator/navigator-screens/index.js.map +1 -0
- package/dist/esm/navigator/navigator-screens/navigator-screens.js +15 -0
- package/dist/esm/navigator/navigator-screens/navigator-screens.js.map +1 -0
- package/dist/esm/navigator/navigator-screens/navigator-screens.scss +60 -0
- package/dist/esm/navigator/navigator-screens/types.js +2 -0
- package/dist/esm/navigator/navigator-screens/types.js.map +1 -0
- package/dist/esm/notice/index.js +9 -0
- package/dist/esm/notice/index.js.map +1 -0
- package/dist/esm/notice/style.scss +19 -0
- package/dist/esm/progress/index.js +8 -0
- package/dist/esm/progress/index.js.map +1 -0
- package/dist/esm/progress/style.scss +34 -0
- package/dist/esm/select-card-checkbox/index.js +14 -0
- package/dist/esm/select-card-checkbox/index.js.map +1 -0
- package/dist/esm/select-card-checkbox/style.scss +30 -0
- package/dist/esm/select-card-radio/index.js +15 -0
- package/dist/esm/select-card-radio/index.js.map +1 -0
- package/dist/esm/select-card-radio/style.scss +44 -0
- package/dist/esm/select-items/index.js +10 -0
- package/dist/esm/select-items/index.js.map +1 -0
- package/dist/esm/select-items/style.scss +96 -0
- package/dist/esm/select-items-alt/index.js +11 -0
- package/dist/esm/select-items-alt/index.js.map +1 -0
- package/dist/esm/select-items-alt/style.scss +72 -0
- package/dist/esm/sensei-logo/index.js +6 -0
- package/dist/esm/sensei-logo/index.js.map +1 -0
- package/dist/esm/setup-tailored-site-after-creation.js +103 -0
- package/dist/esm/setup-tailored-site-after-creation.js.map +1 -0
- package/dist/esm/step-container/index.js +62 -0
- package/dist/esm/step-container/index.js.map +1 -0
- package/dist/esm/step-container/style.scss +304 -0
- package/dist/esm/step-navigation-link/index.js +32 -0
- package/dist/esm/step-navigation-link/index.js.map +1 -0
- package/dist/esm/step-navigation-link/style.scss +42 -0
- package/dist/esm/titles/index.js +7 -0
- package/dist/esm/titles/index.js.map +1 -0
- package/dist/esm/titles/styles.scss +29 -0
- package/dist/esm/upload-and-set-site-logo.js +27 -0
- package/dist/esm/upload-and-set-site-logo.js.map +1 -0
- package/dist/esm/utils/contrastChecker.js +33 -0
- package/dist/esm/utils/contrastChecker.js.map +1 -0
- package/dist/esm/utils/domain-suggester.js +108 -0
- package/dist/esm/utils/domain-suggester.js.map +1 -0
- package/dist/esm/utils/flows.js +179 -0
- package/dist/esm/utils/flows.js.map +1 -0
- package/dist/esm/utils/index.js +6 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/is-domain.js +18 -0
- package/dist/esm/utils/is-domain.js.map +1 -0
- package/dist/esm/utils/use-data-loss-warning.js +16 -0
- package/dist/esm/utils/use-data-loss-warning.js.map +1 -0
- package/dist/esm/videopress-logo/index.js +6 -0
- package/dist/esm/videopress-logo/index.js.map +1 -0
- package/dist/styles/base-styles.scss +7 -0
- package/dist/styles/mixins.scss +262 -0
- package/dist/styles/variables.scss +26 -0
- package/dist/styles/z-index.scss +41 -0
- package/dist/tsconfig-cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/action-buttons/index.d.ts +17 -0
- package/dist/types/action-buttons/index.d.ts.map +1 -0
- package/dist/types/cart/create-cart-manager-client.d.ts +3 -0
- package/dist/types/cart/create-cart-manager-client.d.ts.map +1 -0
- package/dist/types/cart/index.d.ts +47 -0
- package/dist/types/cart/index.d.ts.map +1 -0
- package/dist/types/confetti/index.d.ts +6 -0
- package/dist/types/confetti/index.d.ts.map +1 -0
- package/dist/types/feature-icon/index.d.ts +9 -0
- package/dist/types/feature-icon/index.d.ts.map +1 -0
- package/dist/types/flow-progress/index.d.ts +9 -0
- package/dist/types/flow-progress/index.d.ts.map +1 -0
- package/dist/types/flow-progress/use-flow-progress.d.ts +11 -0
- package/dist/types/flow-progress/use-flow-progress.d.ts.map +1 -0
- package/dist/types/hooray/index.d.ts +10 -0
- package/dist/types/hooray/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +25 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/intent-screen/index.d.ts +12 -0
- package/dist/types/intent-screen/index.d.ts.map +1 -0
- package/dist/types/mshots-image/index.d.ts +21 -0
- package/dist/types/mshots-image/index.d.ts.map +1 -0
- package/dist/types/navigator/hooks/index.d.ts +3 -0
- package/dist/types/navigator/hooks/index.d.ts.map +1 -0
- package/dist/types/navigator/hooks/use-navigator-listener.d.ts +4 -0
- package/dist/types/navigator/hooks/use-navigator-listener.d.ts.map +1 -0
- package/dist/types/navigator/index.d.ts +8 -0
- package/dist/types/navigator/index.d.ts.map +1 -0
- package/dist/types/navigator/navigator-buttons/index.d.ts +17 -0
- package/dist/types/navigator/navigator-buttons/index.d.ts.map +1 -0
- package/dist/types/navigator/navigator-header/index.d.ts +12 -0
- package/dist/types/navigator/navigator-header/index.d.ts.map +1 -0
- package/dist/types/navigator/navigator-item-group/index.d.ts +9 -0
- package/dist/types/navigator/navigator-item-group/index.d.ts.map +1 -0
- package/dist/types/navigator/navigator-listener/index.d.ts +7 -0
- package/dist/types/navigator/navigator-listener/index.d.ts.map +1 -0
- package/dist/types/navigator/navigator-screen/index.d.ts +11 -0
- package/dist/types/navigator/navigator-screen/index.d.ts.map +1 -0
- package/dist/types/navigator/navigator-screens/hooks/index.d.ts +3 -0
- package/dist/types/navigator/navigator-screens/hooks/index.d.ts.map +1 -0
- package/dist/types/navigator/navigator-screens/hooks/use-navigator-buttons.d.ts +4 -0
- package/dist/types/navigator/navigator-screens/hooks/use-navigator-buttons.d.ts.map +1 -0
- package/dist/types/navigator/navigator-screens/hooks/use-navigator-screens.d.ts +4 -0
- package/dist/types/navigator/navigator-screens/hooks/use-navigator-screens.d.ts.map +1 -0
- package/dist/types/navigator/navigator-screens/index.d.ts +4 -0
- package/dist/types/navigator/navigator-screens/index.d.ts.map +1 -0
- package/dist/types/navigator/navigator-screens/navigator-screens.d.ts +12 -0
- package/dist/types/navigator/navigator-screens/navigator-screens.d.ts.map +1 -0
- package/dist/types/navigator/navigator-screens/types.d.ts +17 -0
- package/dist/types/navigator/navigator-screens/types.d.ts.map +1 -0
- package/dist/types/notice/index.d.ts +7 -0
- package/dist/types/notice/index.d.ts.map +1 -0
- package/dist/types/progress/index.d.ts +10 -0
- package/dist/types/progress/index.d.ts.map +1 -0
- package/dist/types/select-card-checkbox/index.d.ts +11 -0
- package/dist/types/select-card-checkbox/index.d.ts.map +1 -0
- package/dist/types/select-card-radio/index.d.ts +22 -0
- package/dist/types/select-card-radio/index.d.ts.map +1 -0
- package/dist/types/select-items/index.d.ts +25 -0
- package/dist/types/select-items/index.d.ts.map +1 -0
- package/dist/types/select-items-alt/index.d.ts +19 -0
- package/dist/types/select-items-alt/index.d.ts.map +1 -0
- package/dist/types/sensei-logo/index.d.ts +8 -0
- package/dist/types/sensei-logo/index.d.ts.map +1 -0
- package/dist/types/setup-tailored-site-after-creation.d.ts +8 -0
- package/dist/types/setup-tailored-site-after-creation.d.ts.map +1 -0
- package/dist/types/step-container/index.d.ts +45 -0
- package/dist/types/step-container/index.d.ts.map +1 -0
- package/dist/types/step-navigation-link/index.d.ts +18 -0
- package/dist/types/step-navigation-link/index.d.ts.map +1 -0
- package/dist/types/titles/index.d.ts +12 -0
- package/dist/types/titles/index.d.ts.map +1 -0
- package/dist/types/upload-and-set-site-logo.d.ts +13 -0
- package/dist/types/upload-and-set-site-logo.d.ts.map +1 -0
- package/dist/types/utils/contrastChecker.d.ts +17 -0
- package/dist/types/utils/contrastChecker.d.ts.map +1 -0
- package/dist/types/utils/domain-suggester.d.ts +15 -0
- package/dist/types/utils/domain-suggester.d.ts.map +1 -0
- package/dist/types/utils/flows.d.ts +89 -0
- package/dist/types/utils/flows.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +6 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/is-domain.d.ts +2 -0
- package/dist/types/utils/is-domain.d.ts.map +1 -0
- package/dist/types/utils/use-data-loss-warning.d.ts +2 -0
- package/dist/types/utils/use-data-loss-warning.d.ts.map +1 -0
- package/dist/types/videopress-logo/index.d.ts +8 -0
- package/dist/types/videopress-logo/index.d.ts.map +1 -0
- package/jest.config.js +5 -0
- package/package.json +63 -0
- package/src/action-buttons/index.tsx +113 -0
- package/src/action-buttons/style.scss +108 -0
- package/src/cart/create-cart-manager-client.ts +34 -0
- package/src/cart/index.tsx +375 -0
- package/src/cart/test/index.ts +172 -0
- package/src/confetti/index.tsx +95 -0
- package/src/feature-icon/index.tsx +102 -0
- package/src/flow-progress/index.tsx +22 -0
- package/src/flow-progress/style.scss +5 -0
- package/src/flow-progress/use-flow-progress.ts +108 -0
- package/src/hooray/index.tsx +34 -0
- package/src/hooray/style.scss +66 -0
- package/src/index.ts +36 -0
- package/src/intent-screen/README.md +12 -0
- package/src/intent-screen/index.tsx +26 -0
- package/src/intent-screen/test/index.tsx +197 -0
- package/src/mshots-image/index.tsx +368 -0
- package/src/mshots-image/style.scss +43 -0
- package/src/mshots-image/test/mshots-image.tsx +5 -0
- package/src/navigator/hooks/index.tsx +2 -0
- package/src/navigator/hooks/use-navigator-listener.tsx +18 -0
- package/src/navigator/index.ts +7 -0
- package/src/navigator/navigator-buttons/index.tsx +58 -0
- package/src/navigator/navigator-buttons/style.scss +47 -0
- package/src/navigator/navigator-header/index.tsx +40 -0
- package/src/navigator/navigator-header/style.scss +45 -0
- package/src/navigator/navigator-item-group/index.tsx +23 -0
- package/src/navigator/navigator-item-group/style.scss +28 -0
- package/src/navigator/navigator-listener/index.tsx +12 -0
- package/src/navigator/navigator-screen/index.tsx +24 -0
- package/src/navigator/navigator-screens/hooks/index.tsx +2 -0
- package/src/navigator/navigator-screens/hooks/use-navigator-buttons.tsx +32 -0
- package/src/navigator/navigator-screens/hooks/use-navigator-screens.tsx +57 -0
- package/src/navigator/navigator-screens/index.ts +3 -0
- package/src/navigator/navigator-screens/navigator-screens.scss +60 -0
- package/src/navigator/navigator-screens/navigator-screens.tsx +41 -0
- package/src/navigator/navigator-screens/types.ts +15 -0
- package/src/notice/index.tsx +16 -0
- package/src/notice/style.scss +19 -0
- package/src/progress/index.tsx +23 -0
- package/src/progress/style.scss +34 -0
- package/src/select-card-checkbox/index.tsx +38 -0
- package/src/select-card-checkbox/style.scss +30 -0
- package/src/select-card-radio/index.tsx +64 -0
- package/src/select-card-radio/style.scss +44 -0
- package/src/select-card-radio/test/index.tsx +50 -0
- package/src/select-items/README.md +13 -0
- package/src/select-items/index.tsx +90 -0
- package/src/select-items/style.scss +96 -0
- package/src/select-items-alt/README.md +13 -0
- package/src/select-items-alt/index.tsx +61 -0
- package/src/select-items-alt/style.scss +72 -0
- package/src/sensei-logo/index.tsx +30 -0
- package/src/setup-tailored-site-after-creation.ts +149 -0
- package/src/step-container/index.tsx +251 -0
- package/src/step-container/style.scss +304 -0
- package/src/step-navigation-link/index.tsx +71 -0
- package/src/step-navigation-link/style.scss +42 -0
- package/src/titles/index.tsx +36 -0
- package/src/titles/styles.scss +29 -0
- package/src/types.d.ts +1 -0
- package/src/upload-and-set-site-logo.ts +38 -0
- package/src/utils/contrastChecker.ts +52 -0
- package/src/utils/domain-suggester.ts +126 -0
- package/src/utils/flows.ts +232 -0
- package/src/utils/index.ts +5 -0
- package/src/utils/is-domain.ts +18 -0
- package/src/utils/test/domain-suggester.ts +87 -0
- package/src/utils/use-data-loss-warning.ts +17 -0
- package/src/videopress-logo/index.tsx +36 -0
- package/styles/base-styles.scss +7 -0
- package/styles/mixins.scss +262 -0
- package/styles/variables.scss +26 -0
- package/styles/z-index.scss +41 -0
- package/tsconfig-cjs.json +7 -0
- package/tsconfig.json +15 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
@import "@wordpress/base-styles/breakpoints";
|
|
2
|
+
@import "@wordpress/base-styles/mixins";
|
|
3
|
+
@import "@automattic/typography/styles/fonts";
|
|
4
|
+
|
|
5
|
+
.select-items {
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
justify-content: center;
|
|
9
|
+
margin-top: -12px;
|
|
10
|
+
margin-bottom: 16px;
|
|
11
|
+
padding-left: 40px;
|
|
12
|
+
|
|
13
|
+
@include break-small {
|
|
14
|
+
margin-bottom: 40px;
|
|
15
|
+
padding-left: 60px;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.select-items__item {
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: flex-start;
|
|
22
|
+
position: relative;
|
|
23
|
+
padding: 24px 0;
|
|
24
|
+
|
|
25
|
+
p {
|
|
26
|
+
margin: 0;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@include break-small {
|
|
30
|
+
width: 342px;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@include break-medium {
|
|
34
|
+
width: 456px;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&-icon {
|
|
38
|
+
position: absolute;
|
|
39
|
+
top: 24px;
|
|
40
|
+
left: -40px;
|
|
41
|
+
@include break-small {
|
|
42
|
+
left: -48px;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&-info-wrapper {
|
|
47
|
+
@include break-mobile {
|
|
48
|
+
display: flex;
|
|
49
|
+
align-items: flex-start;
|
|
50
|
+
width: 100%;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&-info {
|
|
55
|
+
flex: 1;
|
|
56
|
+
|
|
57
|
+
@include break-mobile {
|
|
58
|
+
padding-right: 20px;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
&-title {
|
|
63
|
+
margin-bottom: 8px;
|
|
64
|
+
font-size: $font-title-small;
|
|
65
|
+
font-weight: 400;
|
|
66
|
+
line-height: 1.2;
|
|
67
|
+
color: #101517;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
&-description {
|
|
71
|
+
font-size: $font-body-small;
|
|
72
|
+
color: var(--studio-gray-50);
|
|
73
|
+
|
|
74
|
+
> p:last-child {
|
|
75
|
+
margin-bottom: 0;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
button.select-items__item-button {
|
|
80
|
+
margin-top: 24px;
|
|
81
|
+
border-radius: 4px;
|
|
82
|
+
min-width: 130px;
|
|
83
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
84
|
+
border: 1px solid rgb(195, 196, 199);
|
|
85
|
+
color: #101517;
|
|
86
|
+
font-weight: 500;
|
|
87
|
+
|
|
88
|
+
@include break-mobile {
|
|
89
|
+
margin-top: 0;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
& + & {
|
|
94
|
+
border-top: 1px solid rgba(220, 220, 222, 0.64);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# SelectAltItem
|
|
2
|
+
|
|
3
|
+
This is the final item in IntentScreen and does not have a button or icon.
|
|
4
|
+
|
|
5
|
+
## Props
|
|
6
|
+
|
|
7
|
+
- **show**: _boolean_ - if false, this item is shown.
|
|
8
|
+
- **key**: _string_ - unique identifier for the item.
|
|
9
|
+
- **description**: _string_ - text explaining the item, not translated or wrapped.
|
|
10
|
+
- **value**: _string_ - passed to onClick/onSelect handler to identify the item.
|
|
11
|
+
- **actionText**: _string_ - text used for the link to the action.
|
|
12
|
+
- **disable**: _boolean_ - if true, disable _actionText_ and show _ToolTip_.
|
|
13
|
+
- **disableText**: _string_ - text to provide context in the _ToolTip_.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Button } from '@automattic/components';
|
|
2
|
+
import { Tooltip } from '@wordpress/components';
|
|
3
|
+
import { Icon, info } from '@wordpress/icons';
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
import { TranslateResult } from 'i18n-calypso';
|
|
6
|
+
import './style.scss';
|
|
7
|
+
|
|
8
|
+
export interface SelectItemAlt< T > {
|
|
9
|
+
show: boolean;
|
|
10
|
+
key: string;
|
|
11
|
+
description: TranslateResult;
|
|
12
|
+
value: T;
|
|
13
|
+
actionText: TranslateResult;
|
|
14
|
+
disable: boolean;
|
|
15
|
+
disableText: TranslateResult;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface Props< T > {
|
|
19
|
+
className?: string;
|
|
20
|
+
items: SelectItemAlt< T >[];
|
|
21
|
+
onSelect: ( value: T ) => void;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function SelectItemsAlt< T >( { className, items, onSelect }: Props< T > ) {
|
|
25
|
+
return (
|
|
26
|
+
<div className={ clsx( 'select-items-alt', className ) }>
|
|
27
|
+
{ items.map(
|
|
28
|
+
( { disable, disableText, show, key, description, actionText, value } ) =>
|
|
29
|
+
show && (
|
|
30
|
+
<div key={ key } className="select-items-alt__item">
|
|
31
|
+
<div className="select-items-alt__item-info-wrapper">
|
|
32
|
+
<div className="select-items-alt__item-info">
|
|
33
|
+
<p className="select-items-alt__item-description">{ description }</p>
|
|
34
|
+
</div>
|
|
35
|
+
<Button
|
|
36
|
+
disabled={ disable }
|
|
37
|
+
className="select-items-alt__item-button"
|
|
38
|
+
onClick={ () => onSelect( value ) }
|
|
39
|
+
>
|
|
40
|
+
{ actionText }
|
|
41
|
+
</Button>
|
|
42
|
+
|
|
43
|
+
{ disable && (
|
|
44
|
+
<>
|
|
45
|
+
|
|
46
|
+
<Tooltip text={ disableText as string } position="bottom center">
|
|
47
|
+
<div className="select-items-alt__item-disabled-info">
|
|
48
|
+
<Icon icon={ info } size={ 20 } />
|
|
49
|
+
</div>
|
|
50
|
+
</Tooltip>
|
|
51
|
+
</>
|
|
52
|
+
) }
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
)
|
|
56
|
+
) }
|
|
57
|
+
</div>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export default SelectItemsAlt;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
@import "@wordpress/base-styles/breakpoints";
|
|
2
|
+
@import "@wordpress/base-styles/mixins";
|
|
3
|
+
@import "@automattic/typography/styles/fonts";
|
|
4
|
+
|
|
5
|
+
.select-items-alt {
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
justify-content: center;
|
|
9
|
+
padding-left: 40px;
|
|
10
|
+
|
|
11
|
+
@include break-small {
|
|
12
|
+
padding-left: 60px;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.select-items-alt__item {
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: flex-start;
|
|
19
|
+
position: relative;
|
|
20
|
+
padding: 8px 0;
|
|
21
|
+
|
|
22
|
+
@include break-small {
|
|
23
|
+
width: 342px;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@include break-medium {
|
|
27
|
+
width: 456px;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&-info-wrapper {
|
|
31
|
+
@include break-mobile {
|
|
32
|
+
display: flex;
|
|
33
|
+
align-items: flex-start;
|
|
34
|
+
width: 100%;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&-info {
|
|
39
|
+
flex: 1;
|
|
40
|
+
padding-right: 6px;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&-description {
|
|
44
|
+
font-size: $font-body-small;
|
|
45
|
+
color: #646970;
|
|
46
|
+
margin-bottom: 0;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
&-button {
|
|
50
|
+
margin-top: 8px;
|
|
51
|
+
padding: 0;
|
|
52
|
+
min-width: 130px;
|
|
53
|
+
border: none;
|
|
54
|
+
background: none;
|
|
55
|
+
color: #101517;
|
|
56
|
+
text-decoration: underline;
|
|
57
|
+
font-weight: 500;
|
|
58
|
+
text-align: end;
|
|
59
|
+
|
|
60
|
+
@include break-mobile {
|
|
61
|
+
margin-top: 0;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
&:not([disabled]):hover {
|
|
65
|
+
color: var(--color-neutral-70);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
&-disabled-info svg {
|
|
70
|
+
fill: var(--color-neutral-20);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
type Props = {
|
|
2
|
+
className?: string;
|
|
3
|
+
size?: number;
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
const SenseiLogo: React.FunctionComponent< Props > = ( {
|
|
7
|
+
className = 'sensei-logo',
|
|
8
|
+
size = 18,
|
|
9
|
+
} ) => {
|
|
10
|
+
return (
|
|
11
|
+
<svg
|
|
12
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
13
|
+
className={ className }
|
|
14
|
+
width={ size }
|
|
15
|
+
height={ size }
|
|
16
|
+
fill="none"
|
|
17
|
+
viewBox="0 0 18 18"
|
|
18
|
+
>
|
|
19
|
+
<circle cx="9" cy="9" r="9" fill="#101517"></circle>
|
|
20
|
+
<path
|
|
21
|
+
fill="#fff"
|
|
22
|
+
fillRule="evenodd"
|
|
23
|
+
d="M7.427 11.513c.211-.175.126-.36.422-.427-.013.147.103.296.178.427-.077-.279-.002-.407.055-.546.245-.596-.466-.981-.95-1.076.165-.125.28-.248.489-.27a1.574 1.574 0 00-.746.175c-.783.403-1.403-.397-.993-1.122.219-.388.468-.394.692-.657a.85.85 0 01.053.428.747.747 0 00.034-.504c-.073-.255-.282-.256-.32-.623-.009-.076-.075.043-.186-.058-.027-.024-.08-.068-.115-.048-.06.033-.127.006-.163.025-.06.032-.077-.034-.141.012-.114.082-.126-.01-.234.005-.136.017-.226.198-.303.108-.071-.081-.145.058-.197.058-.036 0-.22.24-.3.02-.061-.163-.197.157-.27.048-.023-.034-.086.082-.126-.033-.01-.026 0-.06-.076-.02-.151.075-.098-.046-.146-.11-.059-.078-.08-.078-.048-.204.025-.1-.013-.25.14-.276.04-.007.076-.004.13-.113.068-.136.163-.07.146-.132-.025-.09.101-.213.16-.27.077-.078.179-.19.215-.3a.48.48 0 01.072-.107c.057-.064.074-.002.16-.034.062-.023.014.04.075-.053.02-.03.073-.002.133-.03.182-.085.2-.084.245-.282.008-.037.017-.066.056-.062.077.007.094-.04.142-.039.042.002.057-.022.08-.05.126-.165.195-.042.251-.055.043-.01.016-.108.13-.078.163.044.11-.039.214-.012.122.032.13.144.215.171.101.032.149.15.216.15.238-.005.166.173.316.244-.113-.122.008-.32-.248-.345-.057-.005-.077-.096-.162-.139-.103-.05-.092-.16-.277-.204.047-.032.062.003.09-.056.042-.084.065-.035.08-.086.015-.048.005-.075.117-.118.116-.044.228-.148.332-.142.092.005.13-.06.125-.143-.006-.086-.023-.204.156-.167.108.02.106.001.106-.077-.001-.078.028-.125.122-.122.07.003.137-.001.163-.088.02-.07.146-.087.213-.113.223-.086.254.038.315-.071.05-.09.138-.241.237-.133.02.022.038.038.105-.043.057-.067.19-.151.238-.036.02.046.061.092.097.033a.057.057 0 01.038-.03c.036-.007.055-.017.073-.026.154-.077.22-.072.15.095-.1.24.558-.146.375.114-.067.095.379.15.444.193.035.024.034.044.101.058.191.037.188.02.2.184.005.074.076.033.076.128 0 .405.332.201.386.302.009.017.023.032.056.032.104 0 .11-.022.158.068.02.036.035.054.09.072.083.029.078.039.047.105-.038.079.021.078.098.085.07.007.103.048.151.105.079.092.2.119.303.172.06.03.001.106.1.185.074.058.111.05.013.125-.417.317.154.23.314.526.035.066.083.148.151.224.16.174.07.223.156.331.05.063.011.048.092.104.191.133-.074.222-.224.161-.07-.027-.117-.064-.104-.02.01.038-.008.064-.037.092-.088.085.086.052.128.046.127-.02.467-.058.465.07-.004.167.095.205.176.216.13.018.167.043.239.17.064.116.102.054.203.157.068.07.153.195.014.214-.033.004-.07 0-.085.012a.28.28 0 01-.098.05c-.208.069.098.104.173.086.066-.015.147-.037.21-.02.041.011.045.06.173.081.043.007.025.075.004.122-.073.162.135.076.114.199-.013.07.076.185-.048.188-.04 0-.082-.011-.08.025.002.08-.117-.022-.224.088-.04.041-.134.07-.192-.007-.022-.029-.05-.052-.153-.017-.102.035-.171.154-.216-.03-.012-.05-.035-.05-.1-.074-.088-.033-.08-.196-.21-.09a.16.16 0 01-.15.028c-.101-.027-.214.01-.223-.072a.255.255 0 00-.266-.225c-.104.006-.195.025-.25-.104.04.148.146.158.269.158.102 0 .162.057.18.17.031.201.144.075.286.17.07.046.12.12.148.207.03.09.261-.018.199.196-.027.092-.076.127-.171.201-.282.223-.352.003-.436.181-.043.093-.044.024-.138.07-.155.073-.254-.098-.367-.035-.128.071-.118-.061-.248.028-.107.073-.217-.056-.268.145-.044.172-.227.176-.31.084-.133-.147-.093.173-.255.041-.086-.07-.15.032-.276.034-.233.004-.344-.214-.458-.081-.135.156-.233-.024-.235-.184-.002-.163-.548-.109-.834-.194-.16-.047-.658.01-.495-.265-.262.296.321.277.48.345.096.04.173.072.266.086.091.225.15.468.16.764.03-.162.037-.329.02-.492-.03-.29.17.144.194.207.13.341-.016.968-.344 1.157a2.293 2.293 0 00-.396-.751c.18.297.434.904.23 1.251a.74.74 0 01-.386-.366c.053.253.29.533.575.44.498-.161.496.177 1.156.233.48.084 1.165 0 1.492.028.179.015.93.15.926.352-.013.84-.308.883-1.084.963-.45.046-.799.064-1.284.084a44.096 44.096 0 01-3.429-.002c-.51-.022-.755-.026-1.297-.103-.541-.076-.838-.275-.83-.9.004-.231.638-.451.845-.476.245-.03.636.003.99-.089.372-.096.527-.16.8-.385zm3.766-4.59c-.117-.033-.035-.106-.238-.012-.12.056-.137-.098-.258-.07-.12.027-.17-.096-.35-.127-.225-.039-.063-.1-.418-.024-.068.014-.126-.069-.339-.04-.25.035-.162.064-.313-.087-.192-.19-.344-.062-.54-.14.151.127.259.015.438.168-.17.105-.369.609-.678.64.337.082.5.269.808.314.356.051.622.089.812.402.212.352.31.15.615.128.194-.013.199-.14.23-.275.045-.186.09-.194.22-.219.15-.028.114-.07.075-.118-.106-.13.013-.157.103-.185.156-.049.03-.057.03-.127-.196-.067-.045-.164.064-.206.119.079.17.066.223.055.077-.016.128.023.193-.022-.096.012-.115-.027-.196-.015-.036.006-.08.008-.154-.04-.127-.082-.19.036-.327 0zM9.588 8.165l-.769-.414c-.926-.498-1.348.238-1.646 1.044l-.54.554c.387-.256.703-.541 1.11-.539.064 0 1.067.368.906-.07-.03-.078.063-.04.088-.152.028-.129.038-.107.137-.025.062.052.149.086.122-.036-.011-.055-.027-.104.197-.003.107.047.067-.049.214-.068.204-.026.16-.236.257-.265.053-.017.107.043.207-.058.035-.036.077-.068.164-.044-.1-.055-.155-.01-.206.023-.103.067-.143-.028-.241.053zM8.017 6.707c.112-.015.225-.027.34-.035a.09.09 0 00.057-.113.204.204 0 01.103-.157L8.516 6.4c-.182 0-.329.075-.515.16-.037.017-.017.084-.083.161a.194.194 0 01-.142.179.094.094 0 00-.063.034.09.09 0 00-.018.07.169.169 0 01-.195.047c-.141-.059-.246-.05-.316.027a.258.258 0 01.28.011c.095.05.212.023.275-.062a.095.095 0 01.089-.075c.1-.04.162-.122.189-.245z"
|
|
24
|
+
clipRule="evenodd"
|
|
25
|
+
></path>
|
|
26
|
+
</svg>
|
|
27
|
+
);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export default SenseiLogo;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { recordTracksEvent } from '@automattic/calypso-analytics';
|
|
2
|
+
import {
|
|
3
|
+
Onboard,
|
|
4
|
+
Site,
|
|
5
|
+
OnboardSelect,
|
|
6
|
+
SiteActions,
|
|
7
|
+
updateLaunchpadSettings,
|
|
8
|
+
} from '@automattic/data-stores';
|
|
9
|
+
import { select, dispatch } from '@wordpress/data';
|
|
10
|
+
import wpcomRequest from 'wpcom-proxy-request';
|
|
11
|
+
import {
|
|
12
|
+
isLinkInBioFlow,
|
|
13
|
+
isNewsletterFlow,
|
|
14
|
+
isNewsletterOrLinkInBioFlow,
|
|
15
|
+
LINK_IN_BIO_FLOW,
|
|
16
|
+
FREE_FLOW,
|
|
17
|
+
isFreeFlow,
|
|
18
|
+
} from './utils';
|
|
19
|
+
import type { ActiveTheme } from '@automattic/data-stores';
|
|
20
|
+
|
|
21
|
+
const ONBOARD_STORE = Onboard.register();
|
|
22
|
+
// `client_id` and `client_secret` are only needed when signing up users.
|
|
23
|
+
const SITE_STORE = Site.register( { client_id: '', client_secret: '' } );
|
|
24
|
+
|
|
25
|
+
export const base64ImageToBlob = ( base64String: string ) => {
|
|
26
|
+
// extract content type and base64 payload from original string
|
|
27
|
+
const pos = base64String.indexOf( ';base64,' );
|
|
28
|
+
const type = base64String.substring( 5, pos );
|
|
29
|
+
const b64 = base64String.substr( pos + 8 );
|
|
30
|
+
|
|
31
|
+
// decode base64
|
|
32
|
+
const imageContent = atob( b64 );
|
|
33
|
+
|
|
34
|
+
// create an ArrayBuffer and a view (as unsigned 8-bit)
|
|
35
|
+
const buffer = new ArrayBuffer( imageContent.length );
|
|
36
|
+
const view = new Uint8Array( buffer );
|
|
37
|
+
|
|
38
|
+
// fill the view, using the decoded base64
|
|
39
|
+
for ( let n = 0; n < imageContent.length; n++ ) {
|
|
40
|
+
view[ n ] = imageContent.charCodeAt( n );
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// convert ArrayBuffer to Blob
|
|
44
|
+
return new Blob( [ buffer ], { type: type } );
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
interface SetupOnboardingSiteOptions {
|
|
48
|
+
siteId: number;
|
|
49
|
+
flowName: string | null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function setupSiteAfterCreation( { siteId, flowName }: SetupOnboardingSiteOptions ) {
|
|
53
|
+
// const { resetOnboardStore } = dispatch( ONBOARD_STORE );
|
|
54
|
+
const goals = ( select( ONBOARD_STORE ) as OnboardSelect ).getGoals();
|
|
55
|
+
const selectedDesign = ( select( ONBOARD_STORE ) as OnboardSelect ).getSelectedDesign();
|
|
56
|
+
const siteTitle = ( select( ONBOARD_STORE ) as OnboardSelect ).getSelectedSiteTitle();
|
|
57
|
+
const siteDescription = ( select( ONBOARD_STORE ) as OnboardSelect ).getSelectedSiteDescription();
|
|
58
|
+
const siteLogo = ( select( ONBOARD_STORE ) as OnboardSelect ).getSelectedSiteLogo();
|
|
59
|
+
|
|
60
|
+
if ( siteId && flowName ) {
|
|
61
|
+
const formData: ( string | File )[][] = [];
|
|
62
|
+
const settings: {
|
|
63
|
+
blogname: string;
|
|
64
|
+
blogdescription: string;
|
|
65
|
+
launchpad_screen?: string;
|
|
66
|
+
site_goals?: Array< string >;
|
|
67
|
+
site_intent?: string;
|
|
68
|
+
} = {
|
|
69
|
+
blogname: siteTitle,
|
|
70
|
+
blogdescription: siteDescription,
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
const promises = [];
|
|
74
|
+
|
|
75
|
+
if ( isNewsletterOrLinkInBioFlow( flowName ) || isFreeFlow( flowName ) ) {
|
|
76
|
+
// link-in-bio and link-in-bio-tld are considered the same intent.
|
|
77
|
+
if ( isLinkInBioFlow( flowName ) || isFreeFlow( flowName ) ) {
|
|
78
|
+
settings.site_intent = isLinkInBioFlow( flowName ) ? LINK_IN_BIO_FLOW : FREE_FLOW;
|
|
79
|
+
if ( selectedDesign && selectedDesign.is_virtual ) {
|
|
80
|
+
const { assembleSite } = dispatch( SITE_STORE ) as SiteActions;
|
|
81
|
+
promises.push(
|
|
82
|
+
wpcomRequest< ActiveTheme[] >( {
|
|
83
|
+
path: `/sites/${ encodeURIComponent( siteId ) }/themes?status=active`,
|
|
84
|
+
apiNamespace: 'wp/v2',
|
|
85
|
+
} ).then( ( activeThemes ) => {
|
|
86
|
+
assembleSite( String( siteId ), activeThemes[ 0 ].stylesheet, {
|
|
87
|
+
homeHtml: selectedDesign.recipe?.pattern_html,
|
|
88
|
+
headerHtml: selectedDesign.recipe?.header_html,
|
|
89
|
+
footerHtml: selectedDesign.recipe?.footer_html,
|
|
90
|
+
siteSetupOption: 'assembler-virtual-theme',
|
|
91
|
+
} );
|
|
92
|
+
} )
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
} else {
|
|
96
|
+
settings.site_intent = flowName;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
settings.launchpad_screen = 'full';
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Newsletter flow sets "paid-newsletter" goal as an indication to setup paid newsletter later on
|
|
103
|
+
if ( isNewsletterFlow( flowName ) && goals && goals.length > 0 ) {
|
|
104
|
+
settings.site_goals = Array.from( goals );
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
formData.push( [ 'settings', JSON.stringify( settings ) ] );
|
|
108
|
+
|
|
109
|
+
if ( siteLogo ) {
|
|
110
|
+
formData.push( [
|
|
111
|
+
'site_icon',
|
|
112
|
+
new File( [ base64ImageToBlob( siteLogo ) ], 'site-logo.png' ),
|
|
113
|
+
] );
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
promises.push(
|
|
117
|
+
wpcomRequest< { updated: object } >( {
|
|
118
|
+
path: `/sites/${ siteId }/onboarding-customization`,
|
|
119
|
+
method: 'POST',
|
|
120
|
+
apiNamespace: 'wpcom/v2',
|
|
121
|
+
apiVersion: '2',
|
|
122
|
+
formData,
|
|
123
|
+
} ).then( () => {
|
|
124
|
+
recordTracksEvent( 'calypso_signup_site_options_submit', {
|
|
125
|
+
has_site_title: !! siteTitle,
|
|
126
|
+
has_tagline: !! siteDescription,
|
|
127
|
+
} );
|
|
128
|
+
/**
|
|
129
|
+
* We need to wait the site being created, then go to checkout and wait for the user
|
|
130
|
+
* to buy the plan before we can set a premium theme to the site. If we reset the store
|
|
131
|
+
* here we loose this information.
|
|
132
|
+
*/
|
|
133
|
+
// resetOnboardStore();
|
|
134
|
+
} )
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
if ( isFreeFlow( flowName ) ) {
|
|
138
|
+
if ( siteTitle || siteDescription || siteLogo ) {
|
|
139
|
+
promises.push(
|
|
140
|
+
updateLaunchpadSettings( siteId, {
|
|
141
|
+
checklist_statuses: { setup_free: true },
|
|
142
|
+
} )
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return Promise.all( promises );
|
|
148
|
+
}
|
|
149
|
+
}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { WordPressLogo, JetpackLogo, WooCommerceWooLogo } from '@automattic/components';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import { TranslateResult, useTranslate } from 'i18n-calypso';
|
|
4
|
+
import { ReactElement } from 'react';
|
|
5
|
+
import ActionButtons from '../action-buttons';
|
|
6
|
+
import SenseiLogo from '../sensei-logo';
|
|
7
|
+
import StepNavigationLink from '../step-navigation-link';
|
|
8
|
+
import VideoPressLogo from '../videopress-logo';
|
|
9
|
+
import './style.scss';
|
|
10
|
+
|
|
11
|
+
interface Props {
|
|
12
|
+
stepName: string;
|
|
13
|
+
stepSectionName?: string;
|
|
14
|
+
stepContent: ReactElement;
|
|
15
|
+
shouldHideNavButtons?: boolean;
|
|
16
|
+
shouldStickyNavButtons?: boolean;
|
|
17
|
+
hasStickyNavButtonsPadding?: boolean;
|
|
18
|
+
hideBack?: boolean;
|
|
19
|
+
hideSkip?: boolean;
|
|
20
|
+
hideNext?: boolean;
|
|
21
|
+
skipButtonAlign?: 'top' | 'bottom';
|
|
22
|
+
skipHeadingText?: string;
|
|
23
|
+
backLabelText?: TranslateResult;
|
|
24
|
+
skipLabelText?: TranslateResult;
|
|
25
|
+
nextLabelText?: TranslateResult;
|
|
26
|
+
formattedHeader?: ReactElement;
|
|
27
|
+
hideFormattedHeader?: boolean;
|
|
28
|
+
headerImageUrl?: string;
|
|
29
|
+
className?: string;
|
|
30
|
+
// Displays an <hr> above the skip button and adds more white space
|
|
31
|
+
isLargeSkipLayout?: boolean;
|
|
32
|
+
isExternalBackUrl?: boolean;
|
|
33
|
+
headerButton?: ReactElement;
|
|
34
|
+
customizedActionButtons?: ReactElement;
|
|
35
|
+
isWideLayout?: boolean;
|
|
36
|
+
isExtraWideLayout?: boolean;
|
|
37
|
+
isFullLayout?: boolean;
|
|
38
|
+
isHorizontalLayout?: boolean;
|
|
39
|
+
goBack?: () => void;
|
|
40
|
+
goNext?: () => void;
|
|
41
|
+
flowName?: string;
|
|
42
|
+
intent?: string;
|
|
43
|
+
recordTracksEvent: ( eventName: string, eventProperties: object ) => void;
|
|
44
|
+
showHeaderJetpackPowered?: boolean;
|
|
45
|
+
showJetpackPowered?: boolean;
|
|
46
|
+
showHeaderWooCommercePowered?: boolean;
|
|
47
|
+
showFooterWooCommercePowered?: boolean;
|
|
48
|
+
showSenseiPowered?: boolean;
|
|
49
|
+
showVideoPressPowered?: boolean;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const StepContainer: React.FC< Props > = ( {
|
|
53
|
+
stepContent,
|
|
54
|
+
stepName,
|
|
55
|
+
shouldHideNavButtons,
|
|
56
|
+
shouldStickyNavButtons,
|
|
57
|
+
hasStickyNavButtonsPadding,
|
|
58
|
+
hideBack,
|
|
59
|
+
backLabelText,
|
|
60
|
+
hideSkip,
|
|
61
|
+
skipLabelText,
|
|
62
|
+
skipButtonAlign = 'top',
|
|
63
|
+
skipHeadingText,
|
|
64
|
+
hideNext = true,
|
|
65
|
+
nextLabelText,
|
|
66
|
+
formattedHeader,
|
|
67
|
+
headerImageUrl,
|
|
68
|
+
headerButton,
|
|
69
|
+
hideFormattedHeader,
|
|
70
|
+
className,
|
|
71
|
+
isHorizontalLayout,
|
|
72
|
+
isFullLayout,
|
|
73
|
+
isWideLayout,
|
|
74
|
+
isExtraWideLayout,
|
|
75
|
+
isExternalBackUrl,
|
|
76
|
+
isLargeSkipLayout,
|
|
77
|
+
customizedActionButtons,
|
|
78
|
+
goBack,
|
|
79
|
+
goNext,
|
|
80
|
+
flowName,
|
|
81
|
+
intent,
|
|
82
|
+
stepSectionName,
|
|
83
|
+
recordTracksEvent,
|
|
84
|
+
showHeaderJetpackPowered,
|
|
85
|
+
showHeaderWooCommercePowered,
|
|
86
|
+
showJetpackPowered,
|
|
87
|
+
showSenseiPowered,
|
|
88
|
+
showVideoPressPowered,
|
|
89
|
+
showFooterWooCommercePowered,
|
|
90
|
+
} ) => {
|
|
91
|
+
const translate = useTranslate();
|
|
92
|
+
|
|
93
|
+
const recordClick = ( direction: 'back' | 'forward', stepSectionName?: string ) => {
|
|
94
|
+
const tracksProps = {
|
|
95
|
+
flow: flowName,
|
|
96
|
+
step: stepName,
|
|
97
|
+
intent: intent,
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
// We don't need to track if we are in the sub-steps since it's not really going back a step
|
|
101
|
+
if ( direction === 'back' && ! stepSectionName ) {
|
|
102
|
+
recordTracksEvent( 'calypso_signup_previous_step_button_click', tracksProps );
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if ( direction === 'forward' ) {
|
|
106
|
+
recordTracksEvent( 'calypso_signup_skip_step', tracksProps );
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
function BackButton() {
|
|
111
|
+
// Hide back button if goBack is falsy, it won't do anything in that case.
|
|
112
|
+
if ( shouldHideNavButtons || ! goBack ) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
return (
|
|
116
|
+
<StepNavigationLink
|
|
117
|
+
direction="back"
|
|
118
|
+
handleClick={ goBack }
|
|
119
|
+
label={ backLabelText }
|
|
120
|
+
hasBackIcon
|
|
121
|
+
rel={ isExternalBackUrl ? 'external' : '' }
|
|
122
|
+
recordClick={ () => recordClick( 'back', stepSectionName ) }
|
|
123
|
+
/>
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function SkipButton() {
|
|
128
|
+
if ( shouldHideNavButtons || ! goNext ) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return (
|
|
133
|
+
<div className="step-container__skip-wrapper">
|
|
134
|
+
{ skipHeadingText && (
|
|
135
|
+
<div className="step-container__skip-heading">{ skipHeadingText }</div>
|
|
136
|
+
) }
|
|
137
|
+
<StepNavigationLink
|
|
138
|
+
direction="forward"
|
|
139
|
+
handleClick={ goNext }
|
|
140
|
+
label={ skipLabelText }
|
|
141
|
+
cssClass={ clsx( 'step-container__navigation-link', 'has-underline', {
|
|
142
|
+
'has-skip-heading': skipHeadingText,
|
|
143
|
+
} ) }
|
|
144
|
+
borderless
|
|
145
|
+
recordClick={ () => recordClick( 'forward' ) }
|
|
146
|
+
/>
|
|
147
|
+
</div>
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function NextButton() {
|
|
152
|
+
if ( shouldHideNavButtons || ! goNext ) {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return (
|
|
157
|
+
<StepNavigationLink
|
|
158
|
+
direction="forward"
|
|
159
|
+
handleClick={ goNext }
|
|
160
|
+
label={ nextLabelText || translate( 'Continue' ) }
|
|
161
|
+
cssClass="step-container__navigation-link"
|
|
162
|
+
borderless={ false }
|
|
163
|
+
primary
|
|
164
|
+
/>
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const classes = clsx( 'step-container', className, flowName, stepName, {
|
|
169
|
+
'is-horizontal-layout': isHorizontalLayout,
|
|
170
|
+
'is-wide-layout': isWideLayout,
|
|
171
|
+
'is-full-layout': isFullLayout,
|
|
172
|
+
'is-large-skip-layout': isLargeSkipLayout,
|
|
173
|
+
'has-navigation': ! shouldHideNavButtons,
|
|
174
|
+
'is-extra-wide-layout': isExtraWideLayout,
|
|
175
|
+
} );
|
|
176
|
+
|
|
177
|
+
return (
|
|
178
|
+
<div className={ classes }>
|
|
179
|
+
<ActionButtons
|
|
180
|
+
className={ clsx( 'step-container__navigation', {
|
|
181
|
+
'should-hide-nav-buttons': shouldHideNavButtons,
|
|
182
|
+
'should-sticky-nav-buttons': shouldStickyNavButtons,
|
|
183
|
+
'has-sticky-nav-buttons-padding': hasStickyNavButtonsPadding,
|
|
184
|
+
} ) }
|
|
185
|
+
>
|
|
186
|
+
{ shouldStickyNavButtons && (
|
|
187
|
+
<WordPressLogo className="step-container__navigation-logo" size={ 24 } />
|
|
188
|
+
) }
|
|
189
|
+
{ ! hideBack && <BackButton /> }
|
|
190
|
+
{ ! hideSkip && skipButtonAlign === 'top' && <SkipButton /> }
|
|
191
|
+
{ ! hideNext && <NextButton /> }
|
|
192
|
+
{ customizedActionButtons }
|
|
193
|
+
</ActionButtons>
|
|
194
|
+
{ ! hideFormattedHeader && (
|
|
195
|
+
<div className="step-container__header">
|
|
196
|
+
{ formattedHeader }
|
|
197
|
+
{ headerImageUrl && (
|
|
198
|
+
<div className="step-container__header-image">
|
|
199
|
+
<img src={ headerImageUrl } alt="" />
|
|
200
|
+
</div>
|
|
201
|
+
) }
|
|
202
|
+
{ headerButton && <div className="step-container__header-button">{ headerButton }</div> }
|
|
203
|
+
{ showHeaderJetpackPowered && (
|
|
204
|
+
<div className="step-container__header-jetpack-powered">
|
|
205
|
+
<JetpackLogo monochrome size={ 18 } /> <span>{ translate( 'Jetpack powered' ) }</span>
|
|
206
|
+
</div>
|
|
207
|
+
) }
|
|
208
|
+
{ showHeaderWooCommercePowered && (
|
|
209
|
+
<div className="step-container__header-woocommerce-powered">
|
|
210
|
+
<WooCommerceWooLogo /> <span>{ translate( 'WooCommerce powered' ) }</span>
|
|
211
|
+
</div>
|
|
212
|
+
) }
|
|
213
|
+
</div>
|
|
214
|
+
) }
|
|
215
|
+
|
|
216
|
+
<div className="step-container__content">{ stepContent }</div>
|
|
217
|
+
|
|
218
|
+
{ ! hideSkip && skipButtonAlign === 'bottom' && (
|
|
219
|
+
<div className="step-container__buttons">
|
|
220
|
+
{ isLargeSkipLayout && <hr className="step-container__skip-hr" /> }
|
|
221
|
+
<SkipButton />
|
|
222
|
+
</div>
|
|
223
|
+
) }
|
|
224
|
+
{ showJetpackPowered && (
|
|
225
|
+
<div className="step-container__jetpack-powered">
|
|
226
|
+
<JetpackLogo monochrome size={ 18 } /> <span>{ translate( 'Jetpack powered' ) }</span>
|
|
227
|
+
</div>
|
|
228
|
+
) }
|
|
229
|
+
|
|
230
|
+
{ showFooterWooCommercePowered && (
|
|
231
|
+
<div className="step-container__woocommerce-powered">
|
|
232
|
+
<WooCommerceWooLogo /> <span>{ translate( 'WooCommerce powered' ) }</span>
|
|
233
|
+
</div>
|
|
234
|
+
) }
|
|
235
|
+
|
|
236
|
+
{ showSenseiPowered && (
|
|
237
|
+
<div className="step-container__sensei-powered">
|
|
238
|
+
<SenseiLogo /> <span>{ translate( 'Powered by Sensei' ) }</span>
|
|
239
|
+
</div>
|
|
240
|
+
) }
|
|
241
|
+
|
|
242
|
+
{ showVideoPressPowered && (
|
|
243
|
+
<div className="step-container__videopress-powered">
|
|
244
|
+
<VideoPressLogo size={ 24 } /> <span>{ translate( 'Powered by VideoPress' ) }</span>
|
|
245
|
+
</div>
|
|
246
|
+
) }
|
|
247
|
+
</div>
|
|
248
|
+
);
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
export default StepContainer;
|