From 964c27557b7c00738daa95c85d1d1d48d42e45b7 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Wed, 8 Jan 2025 15:02:01 +0000
Subject: [PATCH 1/3] Remove FTUE onboarding as it is incompatible with
SSO/OIDC
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
.../user-onboarding-new.spec.ts | 79 ---
.../user-onboarding-old.spec.ts | 28 -
res/css/_components.pcss | 8 -
res/css/views/dialogs/_AppDownloadDialog.pcss | 77 ---
res/css/views/elements/_UseCaseSelection.pcss | 122 ----
.../elements/_UseCaseSelectionButton.pcss | 98 ----
.../_UserOnboardingButton.pcss | 75 ---
.../_UserOnboardingHeader.pcss | 93 ---
.../user-onboarding/_UserOnboardingList.pcss | 67 ---
.../user-onboarding/_UserOnboardingPage.pcss | 27 -
.../user-onboarding/_UserOnboardingTask.pcss | 112 ----
res/img/badges/f-droid.svg | 1 -
res/img/badges/google-play.svg | 1 -
res/img/badges/ios.svg | 1 -
.../user-onboarding/CommunityMessaging.png | Bin 558266 -> 0 bytes
res/img/user-onboarding/PersonalMessaging.png | Bin 192396 -> 0 bytes
res/img/user-onboarding/WorkMessaging.png | Bin 704621 -> 0 bytes
src/PosthogTrackers.ts | 1 -
src/Views.ts | 3 -
src/components/structures/LeftPanel.tsx | 5 -
src/components/structures/LoggedInView.tsx | 4 +-
src/components/structures/MatrixChat.tsx | 45 +-
src/components/structures/UserView.tsx | 4 +-
.../views/dialogs/AppDownloadDialog.tsx | 136 -----
.../views/elements/UseCaseSelection.tsx | 78 ---
.../views/elements/UseCaseSelectionButton.tsx | 54 --
.../tabs/user/PreferencesUserSettingsTab.tsx | 8 +-
.../user-onboarding/UserOnboardingButton.tsx | 80 ---
.../user-onboarding/UserOnboardingHeader.tsx | 82 ---
.../user-onboarding/UserOnboardingList.tsx | 68 ---
.../user-onboarding/UserOnboardingPage.tsx | 78 ---
.../user-onboarding/UserOnboardingTask.tsx | 59 --
src/hooks/useIsInitialSyncComplete.ts | 17 -
src/hooks/useUserOnboardingContext.ts | 124 ----
src/hooks/useUserOnboardingTasks.ts | 161 ------
src/i18n/strings/en_EN.json | 54 +-
src/settings/Settings.tsx | 12 -
src/settings/enums/UseCase.tsx | 14 -
.../components/structures/MatrixChat-test.tsx | 13 -
.../views/dialogs/AppDownloadDialog-test.tsx | 72 ---
.../AppDownloadDialog-test.tsx.snap | 540 ------------------
.../UserOnboardingList-test.tsx | 48 --
.../UserOnboardingPage-test.tsx | 86 ---
.../hooks/useUserOnboardingTasks-test.tsx | 82 ---
44 files changed, 14 insertions(+), 2703 deletions(-)
delete mode 100644 playwright/e2e/user-onboarding/user-onboarding-new.spec.ts
delete mode 100644 playwright/e2e/user-onboarding/user-onboarding-old.spec.ts
delete mode 100644 res/css/views/dialogs/_AppDownloadDialog.pcss
delete mode 100644 res/css/views/elements/_UseCaseSelection.pcss
delete mode 100644 res/css/views/elements/_UseCaseSelectionButton.pcss
delete mode 100644 res/css/views/user-onboarding/_UserOnboardingButton.pcss
delete mode 100644 res/css/views/user-onboarding/_UserOnboardingHeader.pcss
delete mode 100644 res/css/views/user-onboarding/_UserOnboardingList.pcss
delete mode 100644 res/css/views/user-onboarding/_UserOnboardingPage.pcss
delete mode 100644 res/css/views/user-onboarding/_UserOnboardingTask.pcss
delete mode 100644 res/img/badges/f-droid.svg
delete mode 100644 res/img/badges/google-play.svg
delete mode 100644 res/img/badges/ios.svg
delete mode 100644 res/img/user-onboarding/CommunityMessaging.png
delete mode 100644 res/img/user-onboarding/PersonalMessaging.png
delete mode 100644 res/img/user-onboarding/WorkMessaging.png
delete mode 100644 src/components/views/dialogs/AppDownloadDialog.tsx
delete mode 100644 src/components/views/elements/UseCaseSelection.tsx
delete mode 100644 src/components/views/elements/UseCaseSelectionButton.tsx
delete mode 100644 src/components/views/user-onboarding/UserOnboardingButton.tsx
delete mode 100644 src/components/views/user-onboarding/UserOnboardingHeader.tsx
delete mode 100644 src/components/views/user-onboarding/UserOnboardingList.tsx
delete mode 100644 src/components/views/user-onboarding/UserOnboardingPage.tsx
delete mode 100644 src/components/views/user-onboarding/UserOnboardingTask.tsx
delete mode 100644 src/hooks/useIsInitialSyncComplete.ts
delete mode 100644 src/hooks/useUserOnboardingContext.ts
delete mode 100644 src/hooks/useUserOnboardingTasks.ts
delete mode 100644 src/settings/enums/UseCase.tsx
delete mode 100644 test/unit-tests/components/views/dialogs/AppDownloadDialog-test.tsx
delete mode 100644 test/unit-tests/components/views/dialogs/__snapshots__/AppDownloadDialog-test.tsx.snap
delete mode 100644 test/unit-tests/components/views/user-onboarding/UserOnboardingList-test.tsx
delete mode 100644 test/unit-tests/components/views/user-onboarding/UserOnboardingPage-test.tsx
delete mode 100644 test/unit-tests/hooks/useUserOnboardingTasks-test.tsx
diff --git a/playwright/e2e/user-onboarding/user-onboarding-new.spec.ts b/playwright/e2e/user-onboarding/user-onboarding-new.spec.ts
deleted file mode 100644
index 3c7ef1f1710..00000000000
--- a/playwright/e2e/user-onboarding/user-onboarding-new.spec.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-Copyright 2024 New Vector Ltd.
-Copyright 2022 The Matrix.org Foundation C.I.C.
-
-SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
-Please see LICENSE files in the repository root for full details.
-*/
-
-import { test, expect } from "../../element-web-test";
-
-test.describe("User Onboarding (new user)", () => {
- test.use({
- displayName: "Jane Doe",
- });
-
- // This first beforeEach happens before the `user` fixture runs
- test.beforeEach(async ({ page }) => {
- await page.addInitScript(() => {
- window.localStorage.setItem("mx_registration_time", "1656633601");
- });
- });
-
- test.beforeEach(async ({ page, user }) => {
- await expect(page.locator(".mx_UserOnboardingPage")).toBeVisible();
- await expect(page.getByRole("button", { name: "Welcome" })).toBeVisible();
- await expect(page.locator(".mx_UserOnboardingList")).toBeVisible();
- });
-
- test("page is shown and preference exists", { tag: "@screenshot" }, async ({ page, app }) => {
- await expect(page.locator(".mx_UserOnboardingPage")).toMatchScreenshot(
- "User-Onboarding-new-user-page-is-shown-and-preference-exists-1.png",
- );
- await app.settings.openUserSettings("Preferences");
- await expect(page.getByText("Show shortcut to welcome checklist above the room list")).toBeVisible();
- });
-
- test("app download dialog", { tag: "@screenshot" }, async ({ page }) => {
- await page.getByRole("button", { name: "Download apps" }).click();
- await expect(
- page.getByRole("dialog").getByRole("heading", { level: 1, name: "Download Element" }),
- ).toBeVisible();
- await expect(page.locator(".mx_Dialog")).toMatchScreenshot(
- "User-Onboarding-new-user-app-download-dialog-1.png",
- {
- // Set a constant bg behind the modal to ensure screenshot stability
- css: `
- .mx_AppDownloadDialog_wrapper {
- background: black;
- }
- `,
- },
- );
- });
-
- test("using find friends action should increase progress", async ({ page, homeserver }) => {
- const bot = await homeserver.registerUser("botbob", "password", "BotBob");
-
- const oldProgress = parseFloat(await page.getByRole("progressbar").getAttribute("value"));
- await page.getByRole("button", { name: "Find friends" }).click();
- await page.locator(".mx_InviteDialog_editor").getByRole("textbox").fill(bot.userId);
- await page.getByRole("button", { name: "Go" }).click();
- await expect(page.locator(".mx_InviteDialog_buttonAndSpinner")).not.toBeVisible();
-
- const message = "Hi!";
- const composer = page.getByRole("textbox", { name: "Send a messageā¦" });
- await composer.fill(`${message}`);
- await composer.press("Enter");
- await expect(page.locator(".mx_MTextBody.mx_EventTile_content", { hasText: message })).toBeVisible();
-
- await page.goto("/#/home");
- await expect(page.locator(".mx_UserOnboardingPage")).toBeVisible();
- await expect(page.getByRole("button", { name: "Welcome" })).toBeVisible();
- await expect(page.locator(".mx_UserOnboardingList")).toBeVisible();
-
- await page.waitForTimeout(500); // await progress bar animation
- const progress = parseFloat(await page.getByRole("progressbar").getAttribute("value"));
- expect(progress).toBeGreaterThan(oldProgress);
- });
-});
diff --git a/playwright/e2e/user-onboarding/user-onboarding-old.spec.ts b/playwright/e2e/user-onboarding/user-onboarding-old.spec.ts
deleted file mode 100644
index 8931672b52e..00000000000
--- a/playwright/e2e/user-onboarding/user-onboarding-old.spec.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-Copyright 2024 New Vector Ltd.
-Copyright 2022 The Matrix.org Foundation C.I.C.
-
-SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
-Please see LICENSE files in the repository root for full details.
-*/
-
-import { test, expect } from "../../element-web-test";
-
-test.describe("User Onboarding (old user)", () => {
- test.use({
- displayName: "Jane Doe",
- });
-
- test.beforeEach(async ({ page }) => {
- await page.addInitScript(() => {
- window.localStorage.setItem("mx_registration_time", "2");
- });
- });
-
- test("page and preference are hidden", async ({ page, user, app }) => {
- await expect(page.locator(".mx_UserOnboardingPage")).not.toBeVisible();
- await expect(page.locator(".mx_UserOnboardingButton")).not.toBeVisible();
- await app.settings.openUserSettings("Preferences");
- await expect(page.getByText("Show shortcut to welcome checklist above the room list")).not.toBeVisible();
- });
-});
diff --git a/res/css/_components.pcss b/res/css/_components.pcss
index e9a53cd43cc..66ed7e15c8c 100644
--- a/res/css/_components.pcss
+++ b/res/css/_components.pcss
@@ -126,7 +126,6 @@
@import "./views/context_menus/_RoomNotificationContextMenu.pcss";
@import "./views/dialogs/_AddExistingToSpaceDialog.pcss";
@import "./views/dialogs/_AnalyticsLearnMoreDialog.pcss";
-@import "./views/dialogs/_AppDownloadDialog.pcss";
@import "./views/dialogs/_BugReportDialog.pcss";
@import "./views/dialogs/_BulkRedactDialog.pcss";
@import "./views/dialogs/_ChangelogDialog.pcss";
@@ -217,8 +216,6 @@
@import "./views/elements/_TagComposer.pcss";
@import "./views/elements/_TextWithTooltip.pcss";
@import "./views/elements/_ToggleSwitch.pcss";
-@import "./views/elements/_UseCaseSelection.pcss";
-@import "./views/elements/_UseCaseSelectionButton.pcss";
@import "./views/elements/_Validation.pcss";
@import "./views/emojipicker/_EmojiPicker.pcss";
@import "./views/location/_LocationPicker.pcss";
@@ -375,11 +372,6 @@
@import "./views/toasts/_IncomingLegacyCallToast.pcss";
@import "./views/toasts/_NonUrgentEchoFailureToast.pcss";
@import "./views/typography/_Heading.pcss";
-@import "./views/user-onboarding/_UserOnboardingButton.pcss";
-@import "./views/user-onboarding/_UserOnboardingHeader.pcss";
-@import "./views/user-onboarding/_UserOnboardingList.pcss";
-@import "./views/user-onboarding/_UserOnboardingPage.pcss";
-@import "./views/user-onboarding/_UserOnboardingTask.pcss";
@import "./views/verification/_VerificationShowSas.pcss";
@import "./views/voip/LegacyCallView/_LegacyCallViewButtons.pcss";
@import "./views/voip/_CallDuration.pcss";
diff --git a/res/css/views/dialogs/_AppDownloadDialog.pcss b/res/css/views/dialogs/_AppDownloadDialog.pcss
deleted file mode 100644
index e0591ed7e91..00000000000
--- a/res/css/views/dialogs/_AppDownloadDialog.pcss
+++ /dev/null
@@ -1,77 +0,0 @@
-.mx_AppDownloadDialog {
- display: flex;
- flex-direction: column;
- gap: $spacing-32;
- color: $primary-content;
-
- &.mx_Dialog_fixedWidth {
- width: 640px;
- }
-
- .mx_AppDownloadDialog_desktop {
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: $spacing-16;
- }
-
- .mx_AppDownloadDialog_mobile {
- display: flex;
- flex-direction: row;
- gap: $spacing-24;
-
- .mx_AppDownloadDialog_app {
- display: flex;
- flex-direction: column;
- flex-grow: 1;
- flex-basis: 50%;
- align-items: center;
- gap: $spacing-16;
-
- .mx_QRCode {
- /* intentionally hardcoded color to ensure the QR code is readable in any situation */
- background: #ffffff;
-
- padding: $spacing-24;
- border: 1px solid $quinary-content;
- border-radius: 4px;
- align-self: stretch;
- display: flex;
- align-items: center;
- flex-direction: column;
-
- .mx_VerificationQRCode {
- height: 144px;
- width: 144px;
- image-rendering: pixelated;
- border-radius: 0;
- }
- }
-
- .mx_AppDownloadDialog_info {
- font-size: $font-12px;
- color: $tertiary-content;
- }
-
- .mx_AppDownloadDialog_links {
- display: flex;
- flex-direction: row;
- gap: $spacing-8;
-
- .mx_AccessibleButton {
- svg {
- height: 40px;
- }
- }
- }
- }
- }
-
- .mx_AppDownloadDialog_legal {
- p {
- margin: 0;
- font-size: $font-12px;
- color: $tertiary-content;
- }
- }
-}
diff --git a/res/css/views/elements/_UseCaseSelection.pcss b/res/css/views/elements/_UseCaseSelection.pcss
deleted file mode 100644
index ec577a66bdd..00000000000
--- a/res/css/views/elements/_UseCaseSelection.pcss
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
-Copyright 2024 New Vector Ltd.
-Copyright 2022 The Matrix.org Foundation C.I.C.
-
-SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
-Please see LICENSE files in the repository root for full details.
-*/
-
-.mx_UseCaseSelection {
- display: grid;
- grid-template-rows: 1fr 1fr max-content 2fr;
- height: 100%;
- grid-gap: $spacing-40;
-
- .mx_UseCaseSelection_title {
- display: flex;
- flex-direction: column;
- justify-content: flex-end;
-
- h1 {
- font-weight: var(--cpd-font-weight-semibold);
- font-size: $font-32px;
- text-align: center;
- }
- }
-
- .mx_UseCaseSelection_info {
- display: flex;
- flex-direction: column;
- gap: $spacing-8;
- align-self: flex-end;
-
- h2 {
- margin: 0;
- font-weight: 500;
- font-size: $font-24px;
- text-align: center;
- }
-
- h3 {
- margin: 0;
- font-weight: 400;
- font-size: $font-16px;
- color: $secondary-content;
- text-align: center;
- }
- }
-
- .mx_UseCaseSelection_options {
- display: grid;
- grid-template-columns: repeat(auto-fit, 232px);
- gap: $spacing-32;
- align-self: stretch;
- justify-content: center;
- }
-
- .mx_UseCaseSelection_skip {
- display: flex;
- flex-direction: column;
- align-self: flex-start;
- }
-}
-
-.mx_UseCaseSelection_slideIn {
- animation-delay: 800ms;
- animation-duration: 300ms;
- animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
- animation-name: mx_UseCaseSelection_slideInLong;
- animation-fill-mode: backwards;
- will-change: opacity;
-}
-
-.mx_UseCaseSelection_slideInDelayed {
- animation-delay: 1500ms;
- animation-duration: 300ms;
- animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
- animation-name: mx_UseCaseSelection_slideInShort;
- animation-fill-mode: backwards;
- will-change: transform, opacity;
-}
-
-.mx_UseCaseSelection_selected {
- .mx_UseCaseSelection_slideIn,
- .mx_UseCaseSelection_slideInDelayed {
- animation-delay: 800ms;
- animation-duration: 300ms;
- animation-fill-mode: forwards;
- animation-name: mx_UseCaseSelection_fadeOut;
- will-change: opacity;
- }
-}
-
-@keyframes mx_UseCaseSelection_slideInLong {
- 0% {
- transform: translate(0, 20px);
- opacity: 0;
- }
- 100% {
- transform: translate(0, 0);
- opacity: 1;
- }
-}
-
-@keyframes mx_UseCaseSelection_slideInShort {
- 0% {
- transform: translate(0, 8px);
- opacity: 0;
- }
- 100% {
- transform: translate(0, 0);
- opacity: 1;
- }
-}
-
-@keyframes mx_UseCaseSelection_fadeOut {
- 0% {
- opacity: 1;
- }
- 100% {
- opacity: 0;
- }
-}
diff --git a/res/css/views/elements/_UseCaseSelectionButton.pcss b/res/css/views/elements/_UseCaseSelectionButton.pcss
deleted file mode 100644
index 9393b8a53c2..00000000000
--- a/res/css/views/elements/_UseCaseSelectionButton.pcss
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-Copyright 2024 New Vector Ltd.
-Copyright 2022 The Matrix.org Foundation C.I.C.
-
-SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
-Please see LICENSE files in the repository root for full details.
-*/
-
-.mx_UseCaseSelectionButton {
- display: flex;
- flex-direction: column;
- align-items: center;
- padding: $spacing-24 $spacing-16;
- background: $background;
- border: 1px solid $quinary-content;
- border-radius: 8px;
- text-align: center;
- position: relative;
- transition-property: box-shadow, transform;
- transition-duration: 300ms;
-
- .mx_UseCaseSelectionButton_icon {
- /* workaround: design expects a layering of two colors */
- background: linear-gradient(0deg, rgba(172, 59, 168, 0.15), rgba(172, 59, 168, 0.15)), #ffffff;
- border-radius: 14px;
- padding: $spacing-8;
- margin-bottom: $spacing-16;
-
- &::before {
- content: "";
- display: block;
- /* this has to remain the same color across all themes,
- as its background has a fixed color as well */
- background: #1e1e1e;
- mask-position: center;
- mask-repeat: no-repeat;
- mask-size: contain;
- width: 22px;
- height: 22px;
- }
-
- &.mx_UseCaseSelectionButton_messaging::before {
- mask-image: url("$(res)/img/element-icons/chat-bubble.svg");
- }
-
- &.mx_UseCaseSelectionButton_work::before {
- mask-image: url("$(res)/img/element-icons/view-community.svg");
- }
-
- &.mx_UseCaseSelectionButton_community::before {
- mask-image: url("@vector-im/compound-design-tokens/icons/public.svg");
- mask-size: 24px;
- }
- }
-
- &:hover,
- &:focus {
- box-shadow: 0 $spacing-4 $spacing-8 rgba(0, 0, 0, 0.08);
- transform: translate(0, -$spacing-8);
- }
-
- .mx_UseCaseSelectionButton_selectedIcon {
- right: -12px;
- top: -12px;
- position: absolute;
- border-radius: 24px;
- background: $accent;
- padding: 6px;
- transition-property: opacity, transform;
- transition-duration: 150ms;
- opacity: 0;
- transform: scale(0.6);
-
- &::before {
- content: "";
- display: block;
- background: $background;
- mask-position: center;
- mask-repeat: no-repeat;
- mask-size: contain;
- width: 12px;
- height: 12px;
-
- mask-image: url("@vector-im/compound-design-tokens/icons/check.svg");
- }
- }
-
- &.mx_UseCaseSelectionButton_selected {
- border: 2px solid $accent;
- padding: calc($spacing-24 - 1px) calc($spacing-16 - 1px);
- box-shadow: 0 $spacing-4 $spacing-8 rgba(0, 0, 0, 0.08);
-
- .mx_UseCaseSelectionButton_selectedIcon {
- opacity: 1;
- transform: scale(1);
- }
- }
-}
diff --git a/res/css/views/user-onboarding/_UserOnboardingButton.pcss b/res/css/views/user-onboarding/_UserOnboardingButton.pcss
deleted file mode 100644
index 75b1b1eb68d..00000000000
--- a/res/css/views/user-onboarding/_UserOnboardingButton.pcss
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-Copyright 2024 New Vector Ltd.
-Copyright 2022 The Matrix.org Foundation C.I.C.
-
-SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
-Please see LICENSE files in the repository root for full details.
-*/
-
-.mx_UserOnboardingButton {
- display: flex;
- flex-direction: column;
- align-content: stretch;
- align-items: stretch;
- border-radius: 8px;
- margin: $spacing-8 $spacing-8 0;
- padding: $spacing-12;
-
- &.mx_UserOnboardingButton_selected,
- &:hover,
- &:focus-within {
- background-color: $panel-actions;
- }
-
- .mx_UserOnboardingButton_content {
- display: flex;
- flex-direction: row;
- gap: 5px;
- align-items: center;
-
- .mx_Heading_h4 {
- margin-right: auto;
- font: var(--cpd-font-body-md-regular);
- color: $primary-content;
- }
-
- .mx_UserOnboardingButton_percentage {
- font-size: $font-12px;
- color: $secondary-content;
- }
-
- .mx_UserOnboardingButton_close {
- position: relative;
- box-sizing: border-box;
- width: 14px;
- height: 14px;
- border-radius: 7px;
- border: 1px solid $secondary-content;
- flex-shrink: 0;
-
- &::before {
- background-color: $secondary-content;
- content: "";
- mask-repeat: no-repeat;
- mask-position: center;
- mask-size: 12px;
- width: inherit;
- height: inherit;
- position: absolute;
- left: -1px;
- top: -1px;
- mask-image: url("@vector-im/compound-design-tokens/icons/close.svg");
- }
- }
- }
-
- .mx_ProgressBar {
- width: auto;
- margin-top: $spacing-8;
- background: $background;
- }
-
- &.mx_UserOnboardingButton_completed .mx_ProgressBar {
- display: none;
- }
-}
diff --git a/res/css/views/user-onboarding/_UserOnboardingHeader.pcss b/res/css/views/user-onboarding/_UserOnboardingHeader.pcss
deleted file mode 100644
index 6402e8c859e..00000000000
--- a/res/css/views/user-onboarding/_UserOnboardingHeader.pcss
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
-Copyright 2024 New Vector Ltd.
-Copyright 2022 The Matrix.org Foundation C.I.C.
-
-SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
-Please see LICENSE files in the repository root for full details.
-*/
-
-.mx_UserOnboardingHeader {
- display: flex;
- flex-direction: row;
- padding: $spacing-32;
- border-radius: 16px;
- background: $system;
- gap: $spacing-64;
-
- animation-delay: 1500ms;
- animation-duration: 300ms;
- animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
- animation-name: mx_UserOnboardingHeader_slideIn;
- animation-fill-mode: backwards;
- will-change: opacity, transform;
-
- @media (max-width: 1280px) {
- margin: $spacing-32;
- }
-
- .mx_UserOnboardingHeader_dot {
- color: $accent;
- }
-
- .mx_UserOnboardingHeader_content {
- display: flex;
- flex-direction: column;
- flex-basis: 50%;
- flex-shrink: 1;
- flex-grow: 1;
- min-width: 0;
- gap: $spacing-24;
- margin-right: auto;
-
- p {
- margin: 0;
- }
-
- .mx_AccessibleButton {
- margin-top: auto;
- align-self: flex-start;
- padding: $spacing-12 $spacing-24;
- }
- }
-
- .mx_UserOnboardingHeader_image {
- flex-basis: 30%;
- flex-shrink: 1;
- flex-grow: 1;
- align-self: center;
- height: calc(100% + $spacing-64 + $spacing-64);
- aspect-ratio: 4 / 3;
- object-fit: contain;
- min-width: 0;
- min-height: 0;
- margin-top: -$spacing-64;
- margin-bottom: -$spacing-64;
-
- animation-delay: 1500ms;
- animation-duration: 300ms;
- animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
- animation-name: mx_UserOnboardingHeader_slideInLong;
- animation-fill-mode: backwards;
- will-change: opacity, transform;
- }
-}
-
-@keyframes mx_UserOnboardingHeader_slideIn {
- 0% {
- transform: translate(0, 8px);
- opacity: 0;
- }
- 100% {
- transform: translate(0, 0);
- opacity: 1;
- }
-}
-
-@keyframes mx_UserOnboardingHeader_slideInLong {
- 0% {
- transform: translate(0, 32px);
- }
- 100% {
- transform: translate(0, 0);
- }
-}
diff --git a/res/css/views/user-onboarding/_UserOnboardingList.pcss b/res/css/views/user-onboarding/_UserOnboardingList.pcss
deleted file mode 100644
index bd198de2fee..00000000000
--- a/res/css/views/user-onboarding/_UserOnboardingList.pcss
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-Copyright 2024 New Vector Ltd.
-Copyright 2022 The Matrix.org Foundation C.I.C.
-
-SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
-Please see LICENSE files in the repository root for full details.
-*/
-
-.mx_UserOnboardingList {
- display: flex;
- flex-direction: column;
- margin: 0 $spacing-32;
-
- animation-duration: 300ms;
- animation-timing-function: cubic-bezier(0, 0, 0.58, 1);
- animation-name: mx_UserOnboardingList_slideIn;
- animation-fill-mode: backwards;
- will-change: opacity;
-
- .mx_UserOnboardingList_header {
- display: flex;
- flex-direction: row;
- gap: 12px;
- align-items: center;
-
- .mx_UserOnboardingList_hint {
- color: $secondary-content;
- }
- }
-
- .mx_UserOnboardingList_progress {
- display: flex;
- flex-direction: column;
- counter-reset: user-onboarding;
-
- .mx_ProgressBar {
- width: auto;
- margin-top: $spacing-16;
- height: 16px;
-
- @mixin ProgressBarBorderRadius 16px;
- }
- }
-
- .mx_UserOnboardingList_list {
- display: grid;
- grid-template-columns: max-content 1fr max-content;
-
- appearance: none;
- list-style: none;
- margin: $spacing-32 0 0;
- padding: 0;
-
- grid-gap: $spacing-24;
- }
-}
-
-@keyframes mx_UserOnboardingList_slideIn {
- 0% {
- transform: translate(0, 8px);
- opacity: 0;
- }
- 100% {
- transform: translate(0, 0);
- opacity: 1;
- }
-}
diff --git a/res/css/views/user-onboarding/_UserOnboardingPage.pcss b/res/css/views/user-onboarding/_UserOnboardingPage.pcss
deleted file mode 100644
index 285a1b34d48..00000000000
--- a/res/css/views/user-onboarding/_UserOnboardingPage.pcss
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-Copyright 2024 New Vector Ltd.
-Copyright 2022 The Matrix.org Foundation C.I.C.
-
-SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
-Please see LICENSE files in the repository root for full details.
-*/
-
-.mx_UserOnboardingPage {
- width: 100%;
- height: 100%;
-
- align-self: stretch;
- max-width: 1200px;
- margin: 0 auto auto;
-
- display: flex;
- flex-direction: column;
- box-sizing: border-box;
-
- gap: $spacing-64;
- padding: $spacing-64 100px;
-
- @media (max-width: 1280px) {
- padding: $spacing-48 $spacing-32;
- }
-}
diff --git a/res/css/views/user-onboarding/_UserOnboardingTask.pcss b/res/css/views/user-onboarding/_UserOnboardingTask.pcss
deleted file mode 100644
index 756a9d36043..00000000000
--- a/res/css/views/user-onboarding/_UserOnboardingTask.pcss
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
-Copyright 2024 New Vector Ltd.
-Copyright 2022 The Matrix.org Foundation C.I.C.
-
-SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
-Please see LICENSE files in the repository root for full details.
-*/
-
-.mx_UserOnboardingTask {
- display: contents;
-
- .mx_UserOnboardingTask_number {
- counter-increment: user-onboarding;
- grid-column: 1;
- color: $secondary-content;
- width: 32px;
- height: 32px;
- text-align: center;
- border: 2px solid $quinary-content;
- border-radius: 32px;
- line-height: 32px;
- align-self: center;
- position: relative;
-
- &::before {
- content: counter(user-onboarding);
- }
- }
-
- .mx_UserOnboardingTask_content {
- grid-column: 2;
- display: flex;
- flex-direction: column;
- flex-grow: 1;
- flex-shrink: 1;
-
- transition: all 500ms;
-
- .mx_UserOnboardingTask_title {
- font: var(--cpd-font-body-md-medium);
- }
-
- .mx_UserOnboardingTask_description {
- font-size: $font-12px;
- }
- }
-
- .mx_UserOnboardingTask_action.mx_AccessibleButton {
- grid-column: 3;
- min-width: 180px;
-
- @media (max-width: 800px) {
- grid-column: 2;
- margin-top: -16px;
- }
- }
-
- &.mx_UserOnboardingTask_completed {
- .mx_UserOnboardingTask_number {
- &::before {
- content: "";
- position: absolute;
- inset: -2px;
- background: var(--cpd-color-icon-accent-tertiary);
- border-radius: 32px;
-
- animation-duration: 300ms;
- animation-fill-mode: both;
- animation-name: mx_UserOnboardingTask_spring;
- will-change: opacity, transform;
- }
-
- &::after {
- background-color: var(--cpd-color-icon-on-solid-primary);
- content: "";
- mask-repeat: no-repeat;
- mask-position: center;
- mask-size: 24px;
- width: inherit;
- height: inherit;
- position: absolute;
- left: 0;
- top: 0;
- mask-image: url("@vector-im/compound-design-tokens/icons/check.svg");
-
- animation-duration: 300ms;
- animation-fill-mode: both;
- animation-name: mx_UserOnboardingTask_spring;
- will-change: opacity, transform;
- }
- }
-
- .mx_UserOnboardingTask_content {
- opacity: 0.6;
- }
- }
-}
-
-@keyframes mx_UserOnboardingTask_spring {
- 0% {
- opacity: 0;
- transform: scale(0.6);
- }
- 50% {
- opacity: 1;
- transform: scale(1.2);
- }
- 100% {
- opacity: 1;
- transform: scale(1);
- }
-}
diff --git a/res/img/badges/f-droid.svg b/res/img/badges/f-droid.svg
deleted file mode 100644
index d97143c42be..00000000000
--- a/res/img/badges/f-droid.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/res/img/badges/google-play.svg b/res/img/badges/google-play.svg
deleted file mode 100644
index 973d9d3afc5..00000000000
--- a/res/img/badges/google-play.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/res/img/badges/ios.svg b/res/img/badges/ios.svg
deleted file mode 100644
index e723d1cc046..00000000000
--- a/res/img/badges/ios.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/res/img/user-onboarding/CommunityMessaging.png b/res/img/user-onboarding/CommunityMessaging.png
deleted file mode 100644
index ec13eef8d661ea451cdd8191b6562ff684060205..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 558266
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