From 51e146f8caa59d45c06975982b75972d3fd3365b Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Wed, 6 Aug 2025 22:24:47 +0530 Subject: [PATCH] [WEB-4488] feat: brand revamp (#7544) * chore: empty state asset and theme improvement (#7542) * chore: empty state asset and theme improvement * chore: upgrade modal improvement and code refactor * feat: onboarding revamp and theme changes (#7541) * refactor: consolidate password strength indicator into shared UI package * chore: remove old password strength meter implementations * chore: update package dependencies for password strength refactor * chore: code refactor * chore: brand logo added * chore: terms and conditions refactor * chore: auth form refactor * chore: oauth enhancements and refactor * chore: plane new logos added * chore: auth input form field added to ui package * chore: password input component added * chore: web auth refactor * chore: update brand colors and remove onboarding-specific styles * chore: clean up unused assets * chore: profile menu text overflow * chore: theme related changes * chore: logo spinner updated * chore: onboarding constant and types updated * chore: theme changes and code refactor * feat: onboarding flow revamp * fix: build error and code refactoring * chore: code refactor * fix: build error * chore: consent option added to onboarding and code refactor * fix: build fix * chore: code refactor * chore: auth screen revamp and code refactor * chore: onboarding enhancements * chore: code refactor * chore: onboarding logic improvement * chore: code refactor * fix: onboarding pre release improvements * chore: color token updated * chore: color token updated * chore: auth screen line height and size improvements * chore: input height updated * chore: n-progress theme updated * chore: theme and logo enhancements * chore: space auth and code refactor * chore: update new brand empty states (#7543) * [WEB-4585]chore: branding updates (#7540) * chore: updated logo, og image, and loaders * chore: updated branding colors * chore: tour modal logo * chore: updated logo spinner size * chore: updated email templates logos and colors * chore: code refactor * fix: removed conditional hook render * fix: space app loader --------- Co-authored-by: Vamsi Krishna <46787868+vamsikrishnamathala@users.noreply.github.com> Co-authored-by: vamsikrishnamathala --- .../(all)/(dashboard)/sidebar-dropdown.tsx | 2 +- .../public/favicon/android-chrome-192x192.png | Bin 2222 -> 5217 bytes .../public/favicon/android-chrome-512x512.png | Bin 3832 -> 14419 bytes .../admin/public/favicon/apple-touch-icon.png | Bin 2176 -> 6294 bytes apps/admin/public/favicon/favicon-16x16.png | Bin 1625 -> 466 bytes apps/admin/public/favicon/favicon-32x32.png | Bin 1617 -> 761 bytes apps/admin/public/favicon/favicon.ico | Bin 919 -> 15406 bytes apps/admin/public/favicon/site.webmanifest | 4 +- apps/admin/styles/globals.css | 74 +-- .../emails/auth/forgot_password.html | 24 +- .../templates/emails/auth/magic_signin.html | 20 +- .../invitations/project_invitation.html | 12 +- .../invitations/workspace_invitation.html | 22 +- .../emails/notifications/issue-updates.html | 4 +- .../notifications/project_addition.html | 32 +- .../notifications/webhook-deactivate.html | 22 +- .../emails/user/user_activation.html | 32 +- .../emails/user/user_deactivation.html | 32 +- .../app/issues/[anchor]/client-layout.tsx | 8 +- apps/space/app/page.tsx | 8 +- apps/space/app/views/[anchor]/layout.tsx | 8 +- .../account/auth-forms/auth-header.tsx | 14 +- .../account/auth-forms/auth-root.tsx | 61 +- .../components/account/auth-forms/email.tsx | 10 +- .../account/auth-forms/password.tsx | 18 +- .../account/auth-forms/unique-code.tsx | 12 +- apps/space/core/components/account/index.ts | 1 - .../account/oauth/github-button.tsx | 41 -- .../account/oauth/gitlab-button.tsx | 35 - .../account/oauth/google-button.tsx | 35 - .../core/components/account/oauth/index.ts | 4 - .../account/oauth/oauth-options.tsx | 29 - .../account/terms-and-conditions.tsx | 2 +- .../components/account/user-logged-in.tsx | 12 +- .../core/components/common/logo-spinner.tsx | 6 +- .../core/components/common/powered-by.tsx | 7 +- apps/space/core/components/views/auth.tsx | 49 +- apps/space/core/components/views/header.tsx | 13 + apps/space/core/lib/instance-provider.tsx | 2 +- apps/space/core/store/profile.store.ts | 1 + .../public/favicon/android-chrome-192x192.png | Bin 2222 -> 5217 bytes .../public/favicon/android-chrome-512x512.png | Bin 3832 -> 14419 bytes .../space/public/favicon/apple-touch-icon.png | Bin 2176 -> 6294 bytes apps/space/public/favicon/favicon-16x16.png | Bin 1625 -> 466 bytes apps/space/public/favicon/favicon-32x32.png | Bin 1617 -> 761 bytes apps/space/public/favicon/favicon.ico | Bin 919 -> 15406 bytes apps/space/public/favicon/site.webmanifest | 12 +- .../space/public/images/logo-spinner-dark.gif | Bin 36427 -> 976395 bytes .../public/images/logo-spinner-light.gif | Bin 35819 -> 427969 bytes apps/space/styles/globals.css | 74 +-- .../(all)/accounts/forgot-password/page.tsx | 205 +----- .../(all)/accounts/reset-password/page.tsx | 245 +------ .../app/(all)/accounts/set-password/page.tsx | 252 +------- apps/web/app/(all)/create-workspace/page.tsx | 13 +- apps/web/app/(all)/invitations/page.tsx | 14 +- apps/web/app/(all)/onboarding/page.tsx | 169 +---- apps/web/app/(all)/sign-up/page.tsx | 66 +- apps/web/app/(home)/page.tsx | 76 +-- apps/web/app/provider.tsx | 2 +- .../global/product-updates-header.tsx | 6 +- .../account/auth-forms/auth-header.tsx | 49 +- .../account/auth-forms/auth-root.tsx | 194 +++--- .../account/auth-forms/common/container.tsx | 7 + .../account/auth-forms/common/header.tsx | 8 + .../account/auth-forms/common/index.ts | 2 + .../components/account/auth-forms/email.tsx | 10 +- .../auth-forms/forgot-password-popover.tsx | 4 +- .../account/auth-forms/forgot-password.tsx | 145 +++++ .../account/auth-forms/form-root.tsx | 133 ++++ .../components/account/auth-forms/index.ts | 5 + .../account/auth-forms/password.tsx | 20 +- .../account/auth-forms/reset-password.tsx | 198 ++++++ .../account/auth-forms/set-password.tsx | 212 +++++++ .../account/auth-forms/unique-code.tsx | 14 +- apps/web/core/components/account/index.ts | 1 - .../account/oauth/github-button.tsx | 42 -- .../account/oauth/gitlab-button.tsx | 36 -- .../account/oauth/google-button.tsx | 36 -- .../core/components/account/oauth/index.ts | 4 - .../account/oauth/oauth-options.tsx | 38 -- .../account/terms-and-conditions.tsx | 54 +- .../components/auth-screens/auth-base.tsx | 18 + .../core/components/auth-screens/footer.tsx | 38 ++ .../core/components/auth-screens/header.tsx | 60 ++ .../web/core/components/auth-screens/index.ts | 2 + .../common/latest-feature-block.tsx | 10 +- .../core/components/common/logo-spinner.tsx | 2 +- .../global/product-updates/footer.tsx | 7 +- .../components/instance/not-ready-view.tsx | 2 +- .../issues/workspace-draft/root.tsx | 2 +- .../onboarding/create-or-join-workspaces.tsx | 27 +- .../onboarding/create-workspace.tsx | 26 +- .../web/core/components/onboarding/header.tsx | 93 ++- apps/web/core/components/onboarding/index.ts | 1 + .../components/onboarding/invitations.tsx | 12 +- .../components/onboarding/invite-members.tsx | 46 +- .../components/onboarding/profile-setup.tsx | 597 ++++++++---------- apps/web/core/components/onboarding/root.tsx | 146 +++++ .../components/onboarding/step-indicator.tsx | 4 +- .../onboarding/steps/common/header.tsx | 15 + .../onboarding/steps/common/index.ts | 1 + .../core/components/onboarding/steps/index.ts | 6 + .../onboarding/steps/profile/consent.tsx | 24 + .../onboarding/steps/profile/index.ts | 1 + .../onboarding/steps/profile/root.tsx | 263 ++++++++ .../onboarding/steps/profile/set-password.tsx | 135 ++++ .../components/onboarding/steps/role/index.ts | 1 + .../components/onboarding/steps/role/root.tsx | 168 +++++ .../core/components/onboarding/steps/root.tsx | 40 ++ .../components/onboarding/steps/team/index.ts | 1 + .../components/onboarding/steps/team/root.tsx | 414 ++++++++++++ .../onboarding/steps/usecase/index.ts | 1 + .../onboarding/steps/usecase/root.tsx | 164 +++++ .../onboarding/steps/workspace/create.tsx | 315 +++++++++ .../onboarding/steps/workspace/index.ts | 3 + .../steps/workspace/join-invites.tsx | 135 ++++ .../onboarding/steps/workspace/root.tsx | 51 ++ .../onboarding/switch-account-dropdown.tsx | 88 ++- .../onboarding/switch-account-modal.tsx | 4 +- .../core/components/onboarding/tour/root.tsx | 5 +- .../pages/pages-list-main-content.tsx | 10 +- .../web/core/components/project/card-list.tsx | 13 +- apps/web/core/components/workspace/logo.tsx | 2 +- .../workspace/settings/workspace-details.tsx | 2 +- .../workspace/sidebar/dropdown-item.tsx | 2 +- .../workspace/sidebar/user-menu-root.tsx | 2 +- .../layouts/auth-layout/workspace-wrapper.tsx | 4 +- .../core/lib/n-progress/AppProgressBar.tsx | 2 +- apps/web/core/store/user/profile.store.ts | 1 + .../all-issues/all-issues-dark.webp | Bin 85642 -> 71510 bytes .../all-issues/all-issues-light.webp | Bin 71872 -> 70300 bytes .../empty-state/all-issues/assigned-dark.webp | Bin 70338 -> 72200 bytes .../all-issues/assigned-light.webp | Bin 72084 -> 70098 bytes .../empty-state/all-issues/created-dark.webp | Bin 70004 -> 71902 bytes .../empty-state/all-issues/created-light.webp | Bin 72328 -> 70044 bytes .../all-issues/custom-view-dark.webp | Bin 70366 -> 72204 bytes .../all-issues/custom-view-light.webp | Bin 72264 -> 66086 bytes .../all-issues/no-project-dark.webp | Bin 85516 -> 71486 bytes .../all-issues/no-project-light.webp | Bin 68070 -> 65602 bytes .../all-issues/subscribed-dark.webp | Bin 70354 -> 72166 bytes .../all-issues/subscribed-light.webp | Bin 72268 -> 70130 bytes .../archived/empty-issues-dark.webp | Bin 54934 -> 96322 bytes .../archived/empty-issues-light.webp | Bin 65014 -> 79488 bytes .../cycle-issues/calendar-dark-resp.webp | Bin 37114 -> 37356 bytes .../cycle-issues/calendar-dark.webp | Bin 57398 -> 57744 bytes .../cycle-issues/calendar-light-resp.webp | Bin 39002 -> 34628 bytes .../cycle-issues/calendar-light.webp | Bin 60846 -> 53764 bytes .../cycle-issues/gantt_chart-dark-resp.webp | Bin 44260 -> 44948 bytes .../cycle-issues/gantt_chart-dark.webp | Bin 69388 -> 69840 bytes .../cycle-issues/gantt_chart-light-resp.webp | Bin 44350 -> 40562 bytes .../cycle-issues/gantt_chart-light.webp | Bin 75124 -> 67424 bytes .../cycle-issues/kanban-dark-resp.webp | Bin 58980 -> 59766 bytes .../empty-state/cycle-issues/kanban-dark.webp | Bin 93938 -> 94374 bytes .../cycle-issues/kanban-light-resp.webp | Bin 60980 -> 56564 bytes .../cycle-issues/kanban-light.webp | Bin 100208 -> 93976 bytes .../cycle-issues/list-dark-resp.webp | Bin 47436 -> 47902 bytes .../empty-state/cycle-issues/list-dark.webp | Bin 75056 -> 75926 bytes .../cycle-issues/list-light-resp.webp | Bin 48962 -> 44810 bytes .../empty-state/cycle-issues/list-light.webp | Bin 79588 -> 71922 bytes .../cycle-issues/spreadsheet-dark-resp.webp | Bin 50896 -> 51360 bytes .../cycle-issues/spreadsheet-dark.webp | Bin 83280 -> 83536 bytes .../cycle-issues/spreadsheet-light-resp.webp | Bin 52632 -> 47362 bytes .../cycle-issues/spreadsheet-light.webp | Bin 84346 -> 77274 bytes .../public/empty-state/cycle/active-dark.webp | Bin 70616 -> 70158 bytes .../empty-state/cycle/active-light.webp | Bin 71370 -> 70404 bytes .../empty-state/dashboard/widgets-dark.webp | Bin 78084 -> 34690 bytes .../empty-state/dashboard/widgets-light.webp | Bin 67128 -> 34706 bytes .../disabled-feature/cycles-dark.webp | Bin 71882 -> 72322 bytes .../disabled-feature/cycles-light.webp | Bin 74068 -> 67312 bytes .../draft/draft-issues-empty-dark.webp | Bin 53896 -> 72234 bytes .../draft/draft-issues-empty-light.webp | Bin 57020 -> 72772 bytes .../empty-filters/calendar-dark.webp | Bin 64996 -> 65102 bytes .../empty-filters/calendar-light.webp | Bin 66142 -> 59602 bytes .../empty-filters/gantt_chart-dark.webp | Bin 71714 -> 72184 bytes .../empty-filters/gantt_chart-light.webp | Bin 72198 -> 66104 bytes .../empty-filters/kanban-dark.webp | Bin 98618 -> 98840 bytes .../empty-filters/kanban-light.webp | Bin 100864 -> 94488 bytes .../empty-state/empty-filters/list-dark.webp | Bin 79200 -> 79272 bytes .../empty-state/empty-filters/list-light.webp | Bin 80098 -> 73644 bytes .../empty-filters/spreadsheet-dark.webp | Bin 87120 -> 87388 bytes .../empty-filters/spreadsheet-light.webp | Bin 87834 -> 81456 bytes .../empty-state/empty-updates-light.png | Bin 0 -> 100997 bytes .../public/empty-state/epics/epics-dark.webp | Bin 48054 -> 81498 bytes .../public/empty-state/epics/epics-light.webp | Bin 50384 -> 75440 bytes .../empty-state/epics/settings-dark.webp | Bin 0 -> 18014 bytes .../empty-state/epics/settings-light.webp | Bin 0 -> 19378 bytes .../empty-state/intake/filter-issue-dark.webp | Bin 46360 -> 44548 bytes .../intake/filter-issue-light.webp | Bin 44474 -> 42864 bytes .../empty-state/intake/intake-issue-dark.webp | Bin 46760 -> 46660 bytes .../intake/intake-issue-light.webp | Bin 44138 -> 43938 bytes .../module-issues/calendar-dark-resp.webp | Bin 36396 -> 36946 bytes .../module-issues/calendar-dark.webp | Bin 56800 -> 57858 bytes .../module-issues/calendar-light-resp.webp | Bin 38550 -> 33942 bytes .../module-issues/calendar-light.webp | Bin 64242 -> 54806 bytes .../module-issues/gantt_chart-dark-resp.webp | Bin 43940 -> 44496 bytes .../module-issues/gantt_chart-dark.webp | Bin 68556 -> 68972 bytes .../module-issues/gantt_chart-light-resp.webp | Bin 43636 -> 39840 bytes .../module-issues/gantt_chart-light.webp | Bin 70102 -> 64524 bytes .../module-issues/kanban-dark-resp.webp | Bin 58420 -> 59476 bytes .../module-issues/kanban-dark.webp | Bin 93376 -> 93948 bytes .../module-issues/kanban-light-resp.webp | Bin 59474 -> 56012 bytes .../module-issues/kanban-light.webp | Bin 99462 -> 95314 bytes .../module-issues/list-dark-resp.webp | Bin 47000 -> 47204 bytes .../empty-state/module-issues/list-dark.webp | Bin 74544 -> 74946 bytes .../module-issues/list-light-resp.webp | Bin 48404 -> 44228 bytes .../empty-state/module-issues/list-light.webp | Bin 78682 -> 72272 bytes .../module-issues/spreadsheet-dark-resp.webp | Bin 50794 -> 50896 bytes .../module-issues/spreadsheet-dark.webp | Bin 78710 -> 79672 bytes .../module-issues/spreadsheet-light-resp.webp | Bin 51730 -> 46742 bytes .../module-issues/spreadsheet-light.webp | Bin 83500 -> 76558 bytes .../onboarding/analytics-dark.webp | Bin 54378 -> 147492 bytes .../onboarding/analytics-light.webp | Bin 47910 -> 46266 bytes .../empty-state/onboarding/issues-dark.webp | Bin 85274 -> 87040 bytes .../empty-state/onboarding/issues-light.webp | Bin 88902 -> 80648 bytes .../empty-state/onboarding/modules-dark.webp | Bin 64280 -> 65140 bytes .../empty-state/onboarding/modules-light.webp | Bin 67462 -> 61650 bytes .../empty-state/onboarding/pages-dark.webp | Bin 84448 -> 84920 bytes .../empty-state/onboarding/pages-light.webp | Bin 215178 -> 69134 bytes .../empty-state/onboarding/projects-dark.webp | Bin 100726 -> 100922 bytes .../onboarding/projects-light.webp | Bin 117956 -> 112010 bytes .../empty-state/onboarding/views-dark.webp | Bin 55062 -> 56004 bytes .../empty-state/onboarding/views-light.webp | Bin 55700 -> 53050 bytes .../workspace-active-cycles-dark.webp | Bin 0 -> 70158 bytes .../workspace-active-cycles-light.webp | Bin 0 -> 70404 bytes .../public/empty-state/pages/all-dark.webp | Bin 84604 -> 84408 bytes .../empty-state/pages/all-filters-dark.svg | 50 ++ .../empty-state/pages/all-filters-light.svg | 45 ++ .../public/empty-state/pages/all-filters.svg | 45 -- .../public/empty-state/pages/all-light.webp | Bin 87890 -> 69182 bytes .../empty-state/pages/archived-dark.webp | Bin 52588 -> 51374 bytes .../empty-state/pages/archived-light.webp | Bin 54758 -> 160062 bytes .../empty-state/pages/name-filter-dark.svg | 49 ++ .../empty-state/pages/name-filter-light.svg | 44 ++ .../public/empty-state/pages/name-filter.svg | 44 -- .../pages/navigation-pane/assets-dark.webp | Bin 21086 -> 20670 bytes .../pages/navigation-pane/assets-light.webp | Bin 21472 -> 20952 bytes .../pages/navigation-pane/outline-dark.webp | Bin 18452 -> 17994 bytes .../pages/navigation-pane/outline-light.webp | Bin 18782 -> 18006 bytes .../empty-state/pages/private-dark.webp | Bin 47460 -> 47048 bytes .../empty-state/pages/private-light.webp | Bin 49954 -> 42126 bytes .../public/empty-state/pages/public-dark.webp | Bin 47552 -> 47254 bytes .../empty-state/pages/public-light.webp | Bin 50602 -> 42716 bytes .../empty-state/profile/assigned-dark.webp | Bin 48858 -> 48644 bytes .../empty-state/profile/assigned-light.webp | Bin 52468 -> 50750 bytes .../empty-state/profile/created-dark.webp | Bin 48718 -> 48456 bytes .../empty-state/profile/created-light.webp | Bin 53188 -> 48966 bytes .../empty-state/profile/subscribed-dark.webp | Bin 48754 -> 48502 bytes .../empty-state/profile/subscribed-light.webp | Bin 53274 -> 49108 bytes .../project-settings/estimates-dark-resp.webp | Bin 28148 -> 28276 bytes .../project-settings/estimates-dark.png | Bin 1385116 -> 257261 bytes .../estimates-light-resp.webp | Bin 33026 -> 25732 bytes .../project-settings/estimates-light.png | Bin 852149 -> 177466 bytes .../integrations-dark-resp.webp | Bin 37980 -> 67376 bytes .../project-settings/integrations-dark.webp | Bin 66530 -> 67376 bytes .../integrations-light-resp.webp | Bin 40660 -> 226238 bytes .../project-settings/integrations-light.webp | Bin 66340 -> 226238 bytes .../project-settings/labels-dark-resp.webp | Bin 33296 -> 33748 bytes .../project-settings/labels-dark.webp | Bin 42628 -> 43036 bytes .../project-settings/labels-light-resp.webp | Bin 28552 -> 24078 bytes .../project-settings/labels-light.webp | Bin 47320 -> 40026 bytes .../project-settings/updates-dark.png | Bin 0 -> 39599 bytes .../project-settings/updates-light.png | Bin 0 -> 39630 bytes .../empty-state/project/all-filters-dark.svg | 47 ++ .../empty-state/project/all-filters-light.svg | 42 ++ .../empty-state/project/all-filters.svg | 42 -- .../empty-state/project/name-filter-dark.svg | 46 ++ .../empty-state/project/name-filter-light.svg | 41 ++ .../empty-state/project/name-filter.svg | 34 +- .../search/all-issue-view-dark.webp | Bin 60420 -> 59062 bytes .../search/all-issues-view-light.webp | Bin 72366 -> 68990 bytes .../empty-state/search/project-dark.webp | Bin 52156 -> 51476 bytes .../empty-state/search/project-light.webp | Bin 66366 -> 66248 bytes .../public/empty-state/search/views-dark.webp | Bin 56238 -> 55206 bytes .../empty-state/search/views-light.webp | Bin 72318 -> 71804 bytes .../empty-state/stickies/stickies-dark.webp | Bin 123458 -> 120538 bytes .../empty-state/stickies/stickies-light.webp | Bin 128460 -> 122006 bytes .../stickies/stickies-search-dark.webp | Bin 85006 -> 69822 bytes .../stickies/stickies-search-light.webp | Bin 72294 -> 70492 bytes .../api-tokens-dark-resp.webp | Bin 38362 -> 39510 bytes .../workspace-settings/api-tokens-dark.webp | Bin 47030 -> 47554 bytes .../api-tokens-light-resp.webp | Bin 32154 -> 26926 bytes .../workspace-settings/api-tokens-light.webp | Bin 51692 -> 44508 bytes .../workspace-settings/exports-dark-resp.webp | Bin 44288 -> 44564 bytes .../workspace-settings/exports-dark.webp | Bin 62236 -> 61984 bytes .../exports-light-resp.webp | Bin 42258 -> 34452 bytes .../workspace-settings/exports-light.webp | Bin 67094 -> 34452 bytes .../workspace-settings/imports-dark-resp.webp | Bin 46276 -> 46538 bytes .../workspace-settings/imports-dark.webp | Bin 78010 -> 77830 bytes .../imports-light-resp.webp | Bin 51614 -> 43948 bytes .../workspace-settings/imports-light.webp | Bin 81674 -> 71230 bytes .../webhooks-dark-resp.webp | Bin 40072 -> 40654 bytes .../workspace-settings/webhooks-dark.webp | Bin 54446 -> 58016 bytes .../webhooks-light-resp.webp | Bin 35966 -> 27576 bytes .../workspace-settings/webhooks-light.webp | Bin 52944 -> 43392 bytes .../public/favicon/android-chrome-192x192.png | Bin 6932 -> 5217 bytes .../public/favicon/android-chrome-512x512.png | Bin 31206 -> 14419 bytes apps/web/public/favicon/apple-touch-icon.png | Bin 6156 -> 6294 bytes apps/web/public/favicon/favicon-16x16.png | Bin 260 -> 466 bytes apps/web/public/favicon/favicon-32x32.png | Bin 477 -> 761 bytes apps/web/public/favicon/favicon.ico | Bin 15086 -> 15406 bytes apps/web/public/images/logo-spinner-dark.gif | Bin 36427 -> 976395 bytes apps/web/public/images/logo-spinner-light.gif | Bin 35819 -> 427969 bytes apps/web/public/og-image.png | Bin 158143 -> 71428 bytes .../create-join-workspace-dark.webp | Bin 27102 -> 0 bytes .../create-join-workspace-light.webp | Bin 34658 -> 0 bytes .../onboarding/invite-members-dark.webp | Bin 20190 -> 0 bytes .../onboarding/invite-members-light.webp | Bin 21910 -> 0 bytes .../public/onboarding/profile-setup-dark.webp | Bin 43108 -> 0 bytes .../onboarding/profile-setup-light.webp | Bin 56108 -> 0 bytes .../onboarding/user-personalization-dark.webp | Bin 28146 -> 0 bytes .../user-personalization-light.webp | Bin 30398 -> 0 bytes apps/web/styles/globals.css | 74 +-- apps/web/styles/nprogress.css | 6 +- packages/constants/src/workspace.ts | 17 +- packages/tailwind-config/tailwind.config.js | 25 - packages/types/src/current-user/profile.ts | 1 + packages/types/src/users.ts | 1 + packages/types/src/workspace.ts | 15 + .../auth-form/auth-confirm-password-input.tsx | 77 +++ .../ui/src/auth-form/auth-forgot-password.tsx | 41 ++ packages/ui/src/auth-form/auth-form.tsx | 207 ++++++ packages/ui/src/auth-form/auth-input.tsx | 66 ++ .../ui/src/auth-form/auth-password-input.tsx | 77 +++ packages/ui/src/auth-form/index.ts | 11 + packages/ui/src/avatar/avatar.tsx | 2 +- packages/ui/src/form-fields/index.ts | 1 + .../ui/src/form-fields/password/helper.tsx | 4 +- packages/ui/src/form-fields/password/index.ts | 1 + .../form-fields/password/password-input.tsx | 69 ++ packages/ui/src/form-fields/root.tsx | 56 ++ .../ui/src/icons/brand/accenture-logo.tsx | 28 + packages/ui/src/icons/brand/dolby-logo.tsx | 40 ++ packages/ui/src/icons/brand/index.ts | 7 + packages/ui/src/icons/brand/plane-lockup.tsx | 48 ++ packages/ui/src/icons/brand/plane-logo.tsx | 19 + .../ui/src/icons/brand/plane-wordmark.tsx | 37 ++ packages/ui/src/icons/brand/sony-logo.tsx | 19 + packages/ui/src/icons/brand/zerodha-logo.tsx | 30 + packages/ui/src/icons/index.ts | 1 + packages/ui/src/index.ts | 1 + packages/ui/src/oauth/index.ts | 1 + packages/ui/src/oauth/oauth-button.tsx | 32 + packages/ui/src/oauth/oauth-options.tsx | 57 ++ packages/ui/styles/globals.css | 74 +-- yarn.lock | 31 +- 345 files changed, 5158 insertions(+), 2515 deletions(-) delete mode 100644 apps/space/core/components/account/oauth/github-button.tsx delete mode 100644 apps/space/core/components/account/oauth/gitlab-button.tsx delete mode 100644 apps/space/core/components/account/oauth/google-button.tsx delete mode 100644 apps/space/core/components/account/oauth/index.ts delete mode 100644 apps/space/core/components/account/oauth/oauth-options.tsx create mode 100644 apps/space/core/components/views/header.tsx create mode 100644 apps/web/core/components/account/auth-forms/common/container.tsx create mode 100644 apps/web/core/components/account/auth-forms/common/header.tsx create mode 100644 apps/web/core/components/account/auth-forms/common/index.ts create mode 100644 apps/web/core/components/account/auth-forms/forgot-password.tsx create mode 100644 apps/web/core/components/account/auth-forms/form-root.tsx create mode 100644 apps/web/core/components/account/auth-forms/reset-password.tsx create mode 100644 apps/web/core/components/account/auth-forms/set-password.tsx delete mode 100644 apps/web/core/components/account/oauth/github-button.tsx delete mode 100644 apps/web/core/components/account/oauth/gitlab-button.tsx delete mode 100644 apps/web/core/components/account/oauth/google-button.tsx delete mode 100644 apps/web/core/components/account/oauth/index.ts delete mode 100644 apps/web/core/components/account/oauth/oauth-options.tsx create mode 100644 apps/web/core/components/auth-screens/auth-base.tsx create mode 100644 apps/web/core/components/auth-screens/footer.tsx create mode 100644 apps/web/core/components/auth-screens/header.tsx create mode 100644 apps/web/core/components/onboarding/root.tsx create mode 100644 apps/web/core/components/onboarding/steps/common/header.tsx create mode 100644 apps/web/core/components/onboarding/steps/common/index.ts create mode 100644 apps/web/core/components/onboarding/steps/index.ts create mode 100644 apps/web/core/components/onboarding/steps/profile/consent.tsx create mode 100644 apps/web/core/components/onboarding/steps/profile/index.ts create mode 100644 apps/web/core/components/onboarding/steps/profile/root.tsx create mode 100644 apps/web/core/components/onboarding/steps/profile/set-password.tsx create mode 100644 apps/web/core/components/onboarding/steps/role/index.ts create mode 100644 apps/web/core/components/onboarding/steps/role/root.tsx create mode 100644 apps/web/core/components/onboarding/steps/root.tsx create mode 100644 apps/web/core/components/onboarding/steps/team/index.ts create mode 100644 apps/web/core/components/onboarding/steps/team/root.tsx create mode 100644 apps/web/core/components/onboarding/steps/usecase/index.ts create mode 100644 apps/web/core/components/onboarding/steps/usecase/root.tsx create mode 100644 apps/web/core/components/onboarding/steps/workspace/create.tsx create mode 100644 apps/web/core/components/onboarding/steps/workspace/index.ts create mode 100644 apps/web/core/components/onboarding/steps/workspace/join-invites.tsx create mode 100644 apps/web/core/components/onboarding/steps/workspace/root.tsx create mode 100644 apps/web/public/empty-state/empty-updates-light.png create mode 100644 apps/web/public/empty-state/epics/settings-dark.webp create mode 100644 apps/web/public/empty-state/epics/settings-light.webp create mode 100644 apps/web/public/empty-state/onboarding/workspace-active-cycles-dark.webp create mode 100644 apps/web/public/empty-state/onboarding/workspace-active-cycles-light.webp create mode 100644 apps/web/public/empty-state/pages/all-filters-dark.svg create mode 100644 apps/web/public/empty-state/pages/all-filters-light.svg delete mode 100644 apps/web/public/empty-state/pages/all-filters.svg create mode 100644 apps/web/public/empty-state/pages/name-filter-dark.svg create mode 100644 apps/web/public/empty-state/pages/name-filter-light.svg delete mode 100644 apps/web/public/empty-state/pages/name-filter.svg create mode 100644 apps/web/public/empty-state/project-settings/updates-dark.png create mode 100644 apps/web/public/empty-state/project-settings/updates-light.png create mode 100644 apps/web/public/empty-state/project/all-filters-dark.svg create mode 100644 apps/web/public/empty-state/project/all-filters-light.svg delete mode 100644 apps/web/public/empty-state/project/all-filters.svg create mode 100644 apps/web/public/empty-state/project/name-filter-dark.svg create mode 100644 apps/web/public/empty-state/project/name-filter-light.svg delete mode 100644 apps/web/public/onboarding/create-join-workspace-dark.webp delete mode 100644 apps/web/public/onboarding/create-join-workspace-light.webp delete mode 100644 apps/web/public/onboarding/invite-members-dark.webp delete mode 100644 apps/web/public/onboarding/invite-members-light.webp delete mode 100644 apps/web/public/onboarding/profile-setup-dark.webp delete mode 100644 apps/web/public/onboarding/profile-setup-light.webp delete mode 100644 apps/web/public/onboarding/user-personalization-dark.webp delete mode 100644 apps/web/public/onboarding/user-personalization-light.webp create mode 100644 packages/ui/src/auth-form/auth-confirm-password-input.tsx create mode 100644 packages/ui/src/auth-form/auth-forgot-password.tsx create mode 100644 packages/ui/src/auth-form/auth-form.tsx create mode 100644 packages/ui/src/auth-form/auth-input.tsx create mode 100644 packages/ui/src/auth-form/auth-password-input.tsx create mode 100644 packages/ui/src/auth-form/index.ts create mode 100644 packages/ui/src/form-fields/password/password-input.tsx create mode 100644 packages/ui/src/form-fields/root.tsx create mode 100644 packages/ui/src/icons/brand/accenture-logo.tsx create mode 100644 packages/ui/src/icons/brand/dolby-logo.tsx create mode 100644 packages/ui/src/icons/brand/index.ts create mode 100644 packages/ui/src/icons/brand/plane-lockup.tsx create mode 100644 packages/ui/src/icons/brand/plane-logo.tsx create mode 100644 packages/ui/src/icons/brand/plane-wordmark.tsx create mode 100644 packages/ui/src/icons/brand/sony-logo.tsx create mode 100644 packages/ui/src/icons/brand/zerodha-logo.tsx create mode 100644 packages/ui/src/oauth/index.ts create mode 100644 packages/ui/src/oauth/oauth-button.tsx create mode 100644 packages/ui/src/oauth/oauth-options.tsx diff --git a/apps/admin/app/(all)/(dashboard)/sidebar-dropdown.tsx b/apps/admin/app/(all)/(dashboard)/sidebar-dropdown.tsx index 5554947be..656d0531d 100644 --- a/apps/admin/app/(all)/(dashboard)/sidebar-dropdown.tsx +++ b/apps/admin/app/(all)/(dashboard)/sidebar-dropdown.tsx @@ -42,7 +42,7 @@ export const AdminSidebarDropdown = observer(() => { )} >
- {currentUser?.email} + {currentUser?.email}
WRa9^P?{A{SOh6i3F%ruVd;<%X_r_;Qb3eW15ipr zq*EG1Sjo@&{vW|kX~U_S68P{Z+U8VO~a1aM)68Rt3#+j!jsYc zjoqyGu?tUBlgd`g3hGyef)gzFvwzDkS?&*&u2|CMU0}FpiF(>TN4})PkPl&pGQ;*k z-=*rZUoOVEp)f7B3g&68hONc0NjV0osS5V;vEgtZkSrcf zXZ2a)+($$j;g_W_ppA^Y!SB6G{WbASZt6=F!ewDh4D4q+tKPnxLbQ>oX`!8_A*FJF zE=$*6JJ((EY4I*L_Ge7gx{x%s^iG>yGSj28Lu$$(zi!?r(^g?(h%zbZgwr0*ai3Pq zPw&jqupOEXRC{aR9C1V_GPg+CEOMl)!G(;bVPyWTtL|T+y{Pn=*ZA9j-$7T7DhF_z zf7TufXQDQtxOuh0rMv`Fcn<_!@we|wQPNk_wJ$cChS{>B&16k|DKR*Mjkbncl)1$} zj0o3-kzH^mk4QQ#omRx@_q-^;FCaIzuzV5tMO5YT@8(FD9 zCN6x%7h3X>scs_Wiu;He)52R`VmL3?48uykzfNWjY10P({;X=uZATF$Gpbw%-=hKi zB%4c1pI)(ytDZ}h!_iVG#PAGS-hR=J9Oq4yC1y+?m3^wndc#kFGQ?Ig|Li^agd91# z-F30@n(pTB2f3o2^b+toncrULlw5S~PiOFUxm-eGhecC7T>1s2>Zp2QyHKhh4t z8DT@d*(FK-y^i>KUc&r&UOrY6E?%+E>LI`~=&!^stUICp64nU=-<9~|P-360jC18E zsKFOHOHpMoDt9!m04d929*|U)5jmNHK#0nv6hN5Ot>?eV!2-6FnH#uV2y)K`xf~TW zFmh~ZyTMmRkW5xO0ovP5HWfig0&3K2rkipFVO#?lR?Ol z>3mq7z>R5F_4aiye1|88ph4DE1tGVu0?1mKS9rJWfr}iX!kuFtOLR4Sx=GVduBpt8 zvWj=PZX8kMTxjEz+cj!I0rgjZRwkJZ6c4zKAFswx{#l(H`ZYLOb$sTMWmbIr&hX4n z-($uKuk|0SS98U(eTYzXbLD0Bq4Ed@G~4jQAE65+BizAr_C5-nfkXSNQX;x-&*K%J z9)=@SBfK64a-Rgx(7%~#pzB62&ArX4cl$MPe`392927#_p$*R48QM6HgEFs^kEFNU z3RK~#a$lNmZ>X8R(;PnUOB_N`#+SlzZ+rIOnUQ`5;FvdbVNWL)X7p~Gs zwtIzQ^m4RdKVC41xAj}}z{SOx+i7iAGQ6>>Z*`zb(Tw6RsZA6HyPH{24Hq95*WOtj zSgy5v+*y0yJ`Ud6K9%xMU(C+K4J zS4G>)(TJVm47Pd3l%0a53rDW(B{ei4WD4x$RWHX@1LaZGf;rc^tom@T)e zBt)055i-2Z{)>*J{H}&^0K#dX4xm%Da46K!AXS zSEC+Y85okBEx*DBFutkwXw>B^ASv=u#$U$!X>&1@giA%k1&OywNifcy4!O+$R6wq$ z6VoL?O0Mo^ORykN1{p1ne-Ri&MT7$v~JY z1oV;I231bz=44N7jj&{^Weks?>yM+X05MJTEN%0dF~+M2qbSJ8$molt`dsQ;>zw$^ z_vLx{)l639LFcoDr7}PtJ&>io$Ccl+Tf~!8@p?aImr}VF?^*I-TeV9PX^?gS5i!8g zUw!xeNc3I*ecPUn&!aV)qBjl^g_1B*FQSfNzvhU2vmLy>e#&;??l#`%3us}=H~5hDe8^_7(9j!$nhW%R62=`mSk}8)aev{kiA_Z@hEh3Z z{GEgMrS$zMr{)mkwYuw^JwXpS1$uoxR|npt0bvj_vAbY#;*=0NlK@%`6EPlGuv5lG4?_#qd=+gN83;UUk>$4iQJ~uJY6%gRH{ykMWcG z8vINo+P5X-tU^@7pA6b}VW2`5WT2bkIq#PJjDF$!^H1O0t@rkgGXh9JPO5__ue=~0 zO;P{vC;Y}GZtcG~vG%~BYNmXi9?WH{RWZ8gfg&wQmsnFP<3ajJ3A2BxOZABEQR zTzMAQe;p`Gf?fc3>#t?&1=q5nfrGuamCiHOy##JQ#&P^U>l1IJLwFDz!q|dG&WHYM z$NXZum*ACDlGbg!z=ak|G}>F3Z7+OycvO$9dzxC~cvwFiPW3amg)2HL(QArNhS>Wqe0=6?%ka16mPWqQrwr)y z8Lz$@6*@rQ$BU_|tLQwZ>nS95rvWFySU4R#6*S^1e*_`9dRJW!vxplx5p<+TiPK{=>VTo*yXT*O zyuNz)@C~2bkFAz&vM4dB$+E|>*!_>VLlvmQkx%9yWQ?Loj=)PZ{P_)pgh z!wt=!-rdhh*P0B!;Y0jp>w46oqt-)!0|Q@KE6Xj!RqLM4Vo3+uO43c(0R2Lo^c2ow zPylax=!Hw-SA$vmBHxY2GW$M|xaf`O*da`6nE{-{H|sjAcWRmPaE~mpm`Io;#TjeS zoqLj)!XHkolOZwql+R*h;s>h64^T&ZRcC4-W0gmx&lnuX^ z`{Kb$o9?2f;8o8)S|p_;HrTb3vdm&mvaiuYOC|#~EV?1JCrYZ*Unf|VE>l?t`%}+q zTCCy)zM z+-kzd)n$8jvfON=cth)sZzr>is5e5f$FfAnDW4LIVI&wM*_@85*+!c@;sv~rz=jr^ zqKC(TK0JyS@R9@i0MQi9Jdk^z#O>-x;67by$nFGT&lS*<*ah6mLk%!s4R!fo+-(qU zXh8cc2o)w3kuv}pS&*0w2>%HXQl}u19tiytqG8C5g2Y5HWXett&QWq_>hV|59}-aNav{zRb)apk92!HRMw7rz1v;I2{Fm}itC#gwru{1%PF1FeZ3vrq z;*+F)5_eV4f}Vif#ZwD@w*_YObWco?1gf+-Z@iNl)CM&T76sv7uujFG0%vbMS$`6p zM~aL9z%0HtGMl2XjmdjZgm|IomT6Ovs06Aw+u}$?H6dN%N5uf{-$#f?$2uQ~XA7ys zh{V2zDI+u*KX}rK#!_R&LCYsIzKho3s8^`hG{E94-@nL_nD-UR7={hjd4+b$CkOv2 z^`X8Jlrb6hQY>ddB0Jc<^v|49IetKhmDK-KUy2QdNCFPv03ZpfkaG6`;jm?fxE4LZ zQ(WHpx<8ALQ{^PQmuHN==W}6zpbV>8`*tRVixA0Gqm=ds-LShajdBwm9nf}p=WgO0 zjN9aQbbDImoIF(foad0+Z0|YfpvZQ_G7^D+X-1yDQk3m zilcMH4>LTeL4CE9>yN5YadIHX8W%9tp4lx+98C)Ry83(jsG8&1_1BLJ=R)V)bX;fR2 zQD#1#t>Z#sBah!nk6k2Tyc~je>l+1UGjF)={q$X%2nOY1cVgmqMrLLU^yGvLEA>bq zMOWbWNF_Ql`h+JKua&n~&9ClKH~#@Pz>pl%v7HE3FN6!o{Zp z1!SMQ%ij7h`m2j91X047P&mxqeebQF@}qu@1%x+?lC zZxe;U6|#Rr7l(xnKH#kJ#=%ZT7-@eYCxESy zi^)*m8EFCMSYQap=Wlr!9ipkQo2Lc;4PYp-4|uz^s#2K<#vx~7Y%)n_KU!!uzZ7zG zA|h)tAWI|%mHZ;Y$X0l!9cIi59a8tMafNUWD?yAszQ9#By3g^ny_ zlC61`kWcIW&gsruf>1T@Qs)Do3LEyY7NX7eh=)e)w9_M(6yJ;fzIPSNS*^})|=i{l>P?J%(xkcco znS_AeEP8`^xzGZyZ6d8m5yduY-g1a%F;=|wm%a{vSLScK6PUzE9k8&(akm?swaF*V P41tcuP4zNWOz8gr9e*#` literal 2222 zcmcIm4Q$j@94~H)U>KMgMi8^65XES(?OpG-tGnalZfqCrZH|k~pwX^$4rRM#27LckuYv^A?Reoxrqkd^nAUqfI*4GHEH|$ z-tYbXzyH@u_tXZfmMmVm7(tLFfogvpe1BrycisV?b?0LX;cJmv{iKc{cNJUr0^~sF z3Iw@*xfrT9>e12HF53qU^z@diya{6g=1#Crh%b z4@AZ4Rt;=!4TkvEM&2!8>%3@1f`J4QFgP?J#bljHc(61t1IN}hfuU)L(dfZ8SO(F0 zwifj%8bDn(66ZLfUK3SARAkg*|jkH`!0|h>hQ{!4JZCv095CamB4IN^sJXVb=hN4H6 zf1u7UUuOV@mSyucZm30)@+NenvKhLO4ag1AdZX2P$*7&O+0nIIL|ITw{lRNC06%8{4+gUa^F`qfGDJ}fMKiShA=1e>$PAQK z1ToxlBdF8O(C+J?uw(?z;BE>QcqXi95(ga?B`yL8RgPe2K8%b{i76U14AnWVoe%hY zwVDzZV{k#QtJ;VLDt#`>?Q-FE8M*M< z+1A+%nzEyqh^EVh;drYJJQ#1~9|%}>TD;{5WN6JOfTaIY7a5qYgbkC^z=jBn)=le< zfZ_?OVKaUZe|Isxc1?5V;PAw-hWVoke&i23Aj1<*gGX7k^ySqEQs52vH-r+Mmy`WR zzK*XNn4WTf|Mu82dJnx5+ugAfEgUQDc=Ykq`i)!Hy@W=8s8J6eTCaY9f9xNhL_fOc z;0|UIW$M$4)5RgYYH8amh3gL>)y0T-8_FUF z7q!s~I_^il`hO>ny)jtOGkEb{VzhrY8sBzhA8XE>{gdcAX^!t2e543#OO1`adhzvV zN++Lpw+?(a+)J}Vn-+dsh|Qm(y{Wr@{qp#B?}^mxrSs$WO$7VAqgOATDk-U&syC;m zXC{)vyMp^h-j`h7wp}%^DI+b%eve(*7oX}J+4@vscK_aUbaESYIXJX`(9yHEc=vpS zEyKC|=Zf|b_02BXvwfmH@Q>d z&E(T7p~&g(S@Rvy+4|X;={4>21Iy;K*m9XTxBaI>HT}WEJ!`B#ia=%1|K7%DU;GP+ C)#N__ diff --git a/apps/admin/public/favicon/android-chrome-512x512.png b/apps/admin/public/favicon/android-chrome-512x512.png index 41400832b3142b8085148febc9488408d03cc07d..27fafe822d1b5459b202f2d254f2f755143fd4c6 100644 GIT binary patch literal 14419 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 tSJz%?S4o&orC^w0@|Ts_C@{|D1PmPr5r literal 3832 zcmeHKe{2&~9DjrHV<_Nnrt;%*+aD0Q-j8&dC_;2P$PSC7q5reAji&P?X4DGub7V zd-vYweSd#H@9vrM(&B{+9#{YXSm-WsRRAyx4QGM*bJ62U^yDadWGN-p8UVN5ZQL1P z&)#eR=G-TGtMn?*qbx6nOq?M5peY(s5E_8B1yP0L>!6PLU_g`{_@%?GI3@}XyfV*2 zc@!tC5lb3WxS^rc%Qw{Vb^$L~hpmmWNI(ec92N})C5??b@T6Q8jg4s%$C41e&Vd&i z3b86rIp&mAh*?b(!BZ52+3Y6TYOz?U)fhuD6iMZgG(*rKnOyMNjeuLBrRuBf(vTADk{1tOPC>% z^T}b|fg?*NTnH&?v67Yw6ABm^~jhl?yxxgD?aoT|-zpja6!7 zUDj&ke-NEszD@xOt;dtraYI`|p|lE3FRDjwqyln7wC0T|kgR~399DT)RFBNeF}zV& zrwTb;R=u(uoJ>^tq{$dVn;2|mr6>t=UFTS2ceIEwBU#NcFLE}_$T+fWIk+^z~p}6KkhG6Mbv^^@RsEmjcL>l zTOw*GtFct;Y=B!*qo9Z-%Z255qYWH5Z{!~ecxqa_?0;b7+J;JH5 zFo2?U)4C&(@ubnP6Mm3?buqa%rMV~Jh%t;|nyS!Cn(Uy27*0i0HavbXf>?8>+g0d| z?!DO6TH6D&kDop7>8a``h8Ji2w9>n@asJSvbLCm3&(_UdQuf9x#l0twe$v~Yi=i824Fju0YKplV0y*j)S-E8*3okp4t&&lO}vzdFT0G#E{^`bB2sYL zv8Uz9=k5f`oNH^VTeglx!}*Q#j#SkTb!=+;JeDz&)9F;(UpFLxY3R`5&Y`jJdm7a^ zk6#*Z-kRSqa;3d%O?KZm&4-^JS@F)9{VlUUd;xriw~l>!H8I@x?b-OU=Z6O$ye6%S zp8x*%p$K*C<85pv*tl=WOb<^Vs%lHbs73&~;r+Oz!}F6 zSJlL#W4~Sf;^)^ZZ70T2Mz{PiFwptt$fnWS#3Ga5(Fk7CE({I^6LZHGzbmg8dcuOr z<4Cw~tpC@t`WO9|wuk!W%rNsbI-x2@HYdRLrpG#$gYF+sb#!zc9si{}yRRosgqwq3 v?K;gUu_jpUmjT#k?z(;EO#R<|Ta3?M6)y9&m*=z_|EBJuQrE%tn|J&Pm-{+X diff --git a/apps/admin/public/favicon/apple-touch-icon.png b/apps/admin/public/favicon/apple-touch-icon.png index 5273d4951dbcf125f8f21386422af21adaa1b609..a631267832248a456bb5d92b8167092161c1d360 100644 GIT binary patch literal 6294 zcmds+=U06`?>T?M`EWj5GqYyxX?teR-t)U+b+uKfDOf0oh={1wRF(7zIr=}} zT{1!{J3=N($cTOPRbCL)jIwPI5i#qkDJd8RSnuSK2WSmk4s`jXa$-2iS>9tSF_Xs1 z2!xA^8{b>Zq_*J>+ECA;`r}D;Vs#0!{;~ptZe(msn=o$VPJa|j&+X8%cH2I1>)o&A zz1QM1+Om|lwy_+ToplObgBC!YM{{MwNN}kzU6;@jZeTEI1nj-N1!7;HdWZjzy`93h< z2T&dN!e#|g2=STBz09LJz`ty&wB3fE{FAbp1D;BL$}|I5iI*g(GR_h65QUi-6QA#G zhk-yP#E+~Gj5n9;h7X39oI$>eSYcbEQUGtMB99C=^iL&VjWK>bacEo*%s5O7j}L|W zEAuWB{q;BcaMS>RKvFmv4(cW3f-qdv1F(gStox$F5J}2t`mtRem(O-#lB6v0+yOSsLgI z@_6EhjpCdE=B6Zy#=I2f>hz1k+hJayyFBW#vU6{(Qx}MF^3B<_=^e;0RuizX9gtfZ z#XIeaK8XlpO7F&kwU9HmRoHg?x(%_1_7k+I^81a2fx+nBREZ(1Dk&Jm@5H8_FvkfC~KtLouV)KqxqEHKYDdi`Y47N~@cqe5$~HLzN*?i332&dwHE zkw6l22@jH14QcfO?W^#{oF==`URBGu#1ECXf0ua6~%TK07gN9T7aOOhl?#<87n;Cbz zHrjQ^h-6Ca@pG4zIAkqkQE>r7!gS=;cQlQ2Z%-dVPA+KY{CD3@RgV4ct%!T>kVQq> z`eN4E^DMer$jtZpEA_C&XDa>~kKP-_u2xdyY?;RL&ruJn33;!>XTz^Pvu)irQJ2|| zwtl>wsv3k}8vA4%`)}hSYSU}Kwi1-@dEKhv_@I9{io~i|-EkX7zw&u(68fqoh#HFA zeOar}=gB8Iy25Pu=R9tu{&p@=D1#@2g<_n>Z96S1JJ?+iX5i@YyE8F9!%oC^TdB&t zi~P8~XRsddmBgx16p28x!!Ij;?1WxqP|~)z3c}mBzUwOSV^1!`8P1N6HhyB3pC}c` zuKn9-jM~AUZr_roI)%hq$v=So`oKTz2LWW8pSJ$Vj zLUCWtTpGM&gg_M)V4c&!J2+!tP{8*2_!H9(FUqCbs|=T9K}z`L*6mKR{CF_dlkEb} zT(i)=F~QCSrN6-f5N-@CCbhH8r12(IJvWLfY?u!mu(@~evj*2bCjrY={k%fYv|}P% zsUl7C&~(+np&zT)^4DVM?+ip3Mnd3s(u_OqE%Ntec#zIz$rCK5kd|8h7$u9;9;$VYWXI~F*TqT7)`R6up z^8tQjEqxF9r(m7g=#>XShoQf&#a5Mt4Dh#YL4q2zpEaV~Dbdvf35m%AI>D#QeYVAV z(%r9qp!1-KA*w{vnB984tN7!BX4_wN6!ls!rnBu4AhA8vq+9O01$trCE0|Pg9{VzGL z>m62Dj0WuLZE!#7HtBI!=ZD~V`&;~}i|?hUaQRwkVJ!c%a$l+M)Zr>j@Em92NQxq( zqf+?q_E-qpAe=Fum19BBl?J^NnjXB$=ZAkV^-#PylM0++=f2Pa)G(>-tEA5Hlx5XC zl|6(RZ2fpK@jUPlW!ur3DUW#My>{Y9PT?#DCBaQwtc_*df8e_p7v9m@GcYhPo1%X> ze$>Cx9B_OdAU*xh`D)>AHF(`u_3!?H!d^|@KCAvi9Q7p(jD~cU`x68QkDYL8t5!|*j;V%_d zGEYA_qkB$^)qWk=q44UQISZ~Ca=7;+ldfKuJxRLFxc?i(siYs~JWe4uKfey1C*JdS zkN@{!|L>pxUsAY5YqCQAUXaWJs_%6Y}Pk}ZSVo!IlDhmQrk!?_z<;HsWDS! zaNFkf!>8<$8Ghd)tMnAt!5#%(mRGLHm6_U*a!!T9=EPO^j`S4i=69|Bo{X$iq0z6$ z*G7vq3c}A^#>P0#3yA^M^%d8LYbpcAf(OWkui6CLCBhk7UF23>Lj|$z{9}B+t>uF56NM4pmVKKI!^~0?RyfSW z;^t?Nnnjkxo2GlnJ!p!b)1VA9d@u^vI}Tt)R4Q&2AO?9+YRRPxE(Uo|)T1_iBeSBd z>i^-w`EEss=bi8ltLBAI*SEOf=jW@pcIPh=?_|Hx<&xV>es~?!DsCb)1PZdcx#Cas zTpCOL`~t!l9gh6|cqa?#5v$)c^3j1CTVhgXOkHKgMr=Ol{IZBT`~n1aDHjJ+H~bcR z@|q$@RSdBHf|TOV`X~Z5bK=B}6XS8#F}5TSe#z9=m4|LhlM5`?Sx8W)LXT?aP#@oTND-VB zqi^T;guWS9<|x@q8kW*A*p|BlU<9@mm3eKl&>CApISdoSw$^`zZ8;&L!UMk*7OzpE zlUAK*v%{yyeaOsJe8BMK5l2+wX>Kr_UDg@pCw{88UHHlHX>!P%rF^8iu^5{Sl5K1X z!O5R%;1!V0#X9EAz{eI7ntZ#&a5u=I=vlgkab=;(I+Z;R@cZK)OyDdivhd={PFbbR zMQyqIsO-;jDqgK7$S^{C^y#ZMxf;ukN|k_Uk)81T22b)JDmK?lNpixH=VTp+J&!kV zYR-%Ui}z|4U=7Gc6b&R%{RFlr>v>m#Ra{Kne99K(hiMx&_;@gMnlt(AX@WKyfX(C+ z6S3=c=t~#J0kndJX99||TAwuN5f0F-3oek?dsN&nf=O&*p{!W11}WPo$%zJL*PJ#j z=oIy8;HfVaM6hJK#tpcmpJ#XyhJCRcgW%TZ5carHsJ2kSNL%e*3SA7Yol(l~m(~wDtgn^$@u(3m>6fY@k0Oi2pK`{4%kBW4)pEoAVv<*l}&eqemI`lV2*DtABvs zQlW)LvIBJ??<@Ors1IgidhQ;dnnsCK=q6>i_}QpAJ%#fl4>O!kvi1Jo(bDK=HuLB)&2u{$kqxFtOreQ1QHjXl z$Gv7KMAEpW3}Rx!4g18j{n7WGyl7_lscD)y#3TO~ygL8kPliV8a=SAS%s2O7_&mN2 zc_bx`T%ysMS$&ErbaWa%#_4vyNlhLYzgxy`rPI81_t0>6JKQ}4Nz1TNxc_G6- z#iny`9lRkbiMRv-qLTaZtWuT}{y;c=QOBb8KrU%DAPZdoZ3RrY=0C2AN{V#|dHgQo z3ySnt+IXVgE0t02oPgE5!%n2bN|%4JmSAvyPlzyh=(P`v;(+Ftnh@Y*i@P(2H5gu& zJ@`xWhLm#YLxyXiN*Siysw2Db!^4=H*rXl|yS(k;_T8(H#}I>%EZ7_e2MxPy6hU9% zCrQQN>|uHUf|p}AcHFbXEMi6&@kqe2HKWa(#@UYd8#sQ=&64fAZUYN|K_rN+ zdY4v@jcmLt`%=xX&|DD!g5uxZczq8o`%Tvm{IdV|+@=am^0B_tx6CnNdGGVz_bQm-&KB5+qwz% z$0HXcTbS3yqu&Lx1DzXQ7So47WdgPDAh&Vxej1O&3tsaVcg|jX@&J>y&_|3?zb^FV z!4m~+wj^p!+84-%607K36;Ai8FDIzoo~D-7-C}Lq=Zdlx$L>qkg5m7tL+`nO=8+w- z$wB@q@B_Oj?NdRs7P7@_GF$kq^(K3<(t!&KV$7#EV2#Dm0xC0B%|<)S3C5Lzx7i@PKXogF9?)psexf_59x3MZjgng7N08 zJuVD0Q)a)$G?rf^bmvE~BNw3hz8Pp~btDJ4Cyq!k9?4n9aLmzRF_jF#RlE?)8%n_i z_ZV;FK-VC;n^1k`t8UWPlv5nIOvX#k%xQ4)j{uqZeG4&=dWU`I^FTsy@?#+ROM{L) zPa|0tvDS+c9hzD}7AYcjVWp0;;WRL|WO-*NvX_{cd9n=J>Ie5(P$(4L?12q=>e(m! z>g)_?aumZV$TJoQ@~Fv9f|yqRX(cSnR|_|$}978 zdF*+=z=q(;QucQko|XuiT-T|XOqO4?TZ~&0_@L21pDv2W0RBH{T3099Fl8^+*nL>B7I3iAWq685{RT_f+?H8g!PiuoRRXzC3U47 zKa2?Byo;r*{T1(Ih1I=CiZho9XVi))ACLLX>vJqxAp{*-7CA(dyi0`G648iaP)U{A zEcTi6*ZtaGco$K*Ji6u}zFmG{N!mVD^8TXld&W$ofeU}f737WVO9uT z3NH<8@9V7C)zO8$pJXE}o%xHt4>~TanHq@+r}izzEhVecurh2PQ;n^=;osE#rl;Ou zF5-E{teFMXDfLaSXI>W&^v(?rsv>!FJ{6+;IEk(D#;st~syXImHS|xpc9X@#GjnNL zk4|fvRC#u?R|}V2^M!M-k4~(nlIf0BCoS&N2t~~=vQJ7C9JkwQxVRV-T(V3M4aYy< zkZvb4127FZ!W?t4%8JKg9GPE-gw(HfD-0)FMu~~6aVw2M?sRu#ZBSZ`1^tc$ zVl;$ITh7`f0w5}{1%&2^$;>guY-5H%X1KwQv)3$082g!hC7_hRm~vd@`OL1dMp9wuXLcbqq`h|r{PQ78u*dYQ4&gmsNR}us( zP8yos2|fR>Pk}h(9_*jla2XD$&09e1o#Q4VYYBy1o>}5SP|RK=52r&CiEk=fR$o0J z3d$MQ(#y|zY{j3Z+BapE!k)4nMp~2zvx$v+QNO$Dg?8|l$sPZH1dp@aH>^3tP4pQS)qOYdQb}vclN`Wk!2`Yy>3q&7d z<|P)-w!?m_OsS5+6{XJM*_o3 zyO==K_lzAMhF!H9MFScDICfQCfg&y;6_t-Pi_CB$rd#Z8obFeVNu1T%zpc{$!+DF> z!6emAoj(k8))u3MsQVPG{QtDu(RHxnhr!8(KjIlE`1l3vps2H>?dUDRZk`h96tWoU zev68D0`e7&&kUqN@SC9xQ9KeYWhBQd4`b5EmN-YDo?1i()iT~AUm{bz%ou$@>rg#` zyW|HA+>4aT3h}-^Kg~Aw7iNiP*lE?%{#}{^n~ZV)T+M2rSfaq5M)BSB7zr}fVkpwo zb#>oo*h0WXl0v0MU*#H0l literal 2176 zcmcIme@xtD81Ax(Yzx^IRE!hXltf&#*B{&+ySjqx4&gEn2)hlGWvthJcXZsfU0Zg? zjX;7k>P$8>79(S0Gc)lIBF02F32X%UgN&TW#Ayr>#7!}b?Y8Nd;t%|K++CPX7Z+^O z_UrdO-}}DL^S4Ls`$-B7U(1!^=QRXbnQq)m zkRwMQMv(g+65W-0rRzC{mjfnFkUhW@3MdebARF^T3dh$19rXa8D6v?yyB9-6fyF8; zF4CpgL5)}(R>78ViJK4C@-_j>&qFtc7-%2>bPf##{F26mSS)6jfn#Huz|a^(uVt|U z!y#JfDnsqE3Q((w#CejW(OjE}vYO3S@+p)iX_6o<1V!VNl_AXxm5atN40=-qFH`P# zHtq|4u~?0+D-1ydgF#a;$0Vyhg0k6c1W6M#jY9;k)k``T!X+&$VZi}3UKJHxlqJ-# z$a&;CoyB0J^ArL~(yXM#WrBhcAx*Orj_-UO;aU zEEWsS)3g=O%{6m4M_Y1nvxldxW{<~1^B}R`A@g-c2_*Il|8ak*D#8}z{P%3fXiTGa zm|{_bS*?$^&K9scKJtrbtXvq5H`;*3cq9Knz~a;5Ju5J8Hdq6o(SNCnd6*`9^&qE$ z0v}ZCu60Mi;0dE)=Xnr+r5IaV(A)_)JTZ)6@~DCz$-@pv@Pt$0QC9eRQ3Zl5UF~!f zxI;&;e2sUEgGUFhN4vf{e{5&fhpE=KZ_7?vAAGqvkTP=ULJ@at>zWp9XxHj}Z@uyc z^-|wzx%tE|{`U8OJbif>+nztxv*X}5>0=XZowf4m(KPq;dygS=*##|FP5Cm{{u9nM z=Jm~w7Y@IjdgOt{nH-#$T2d9fICHLRwD(GHS9suyo*UEs(ay1JX!9Sds>hj+X8ST$ zEuUR?Ribxg-@nM-=NYv%^v!iwWoMl2ssDLmDl;eN)~7Rh;orMP)@_Tv+1hn|q_1{- zPE~f_Jb;f1!})V(=ccl&GuhtoKqT^7>DaF`gPSMEcAVk8-%t78$@-yb@)Ek35+!5@ zFeC4dU3=!s&hf6EaDOCn?)cvE-)0B;)^-FVk?Cl(vEfqa*5?L+()`A`!SsWf<5g!a zMy+dq+P1yBaq`B~$J?9an+IB3H)oXQH(mbh{K}4?zqRGXMM`BN&KUQ@{TG&=y84}O zsJH1<_ud{us*@Q*dF{3rSbn6zS+M{AahsqrSbcbFDZB6E;$_A^g0ry1(Ya}7^Pi}J B1vCHv diff --git a/apps/admin/public/favicon/favicon-16x16.png b/apps/admin/public/favicon/favicon-16x16.png index 8ddbd49c043e06b87fe4c980588a8cba97bfe94e..af59ef0108a7a043765bdf556348e43f6b331aac 100644 GIT binary patch delta 440 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 literal 919 zcmZQzU<5)CU}R8WXk=z!5CgJ11N_{1xum#&OkPh9mmrWV2y?IjshFY_X$%a^9-c0a zAr-gY-q@HM9LUgi@xA5wOij(ql{XkFnKCA>5ag9@Z9l;gvVoDO!R4BVH!HJ(Yv3P^ zH@r2yO~rjrSnFbIzyI_zJd?INBsNTb)$*(7v}^)`zb0=xT=4o;?bkaZHYM7^JlkdJ zK0G+Tis68=8qj$S3=B*R98_a)G;lhAe8s{bz(6eql1UHNoSpqPiM3)$4da|+t(-sP z&s?=O=GnTgE^Pnmxt47+R*7E~4({PUpl-}l8ohVzzGvLoQ$oM)t;+2B$T;JS!Idlj zp2e?QzpT1g=KTl1ryF0f+zA+JK>!Zbb7yjz9)?{F+Imy(nnd#S)2~$0OV{nYnYiNj ztH`grW}Pv7wjgZ#)w7B5edeM2pS|kUZQHfRE`0s1`!O>4EA7JKeGE+)%8P$*GP>rv z)$H&EhC8A4K8Dw7YM*MCiv0iipEtcshF^O~h71dXg?K$vC0}yz+`njxg HN@xNAL5sc; diff --git a/apps/admin/public/favicon/site.webmanifest b/apps/admin/public/favicon/site.webmanifest index 0b08af126..1d4105781 100644 --- a/apps/admin/public/favicon/site.webmanifest +++ b/apps/admin/public/favicon/site.webmanifest @@ -2,8 +2,8 @@ "name": "", "short_name": "", "icons": [ - { "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }, - { "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" } + { "src": "/favicon/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }, + { "src": "/favicon/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" } ], "theme_color": "#ffffff", "background_color": "#ffffff", diff --git a/apps/admin/styles/globals.css b/apps/admin/styles/globals.css index d5554ce2f..258fa2d85 100644 --- a/apps/admin/styles/globals.css +++ b/apps/admin/styles/globals.css @@ -24,24 +24,24 @@ :root { color-scheme: light !important; - --color-primary-10: 236, 241, 255; - --color-primary-20: 217, 228, 255; - --color-primary-30: 197, 214, 255; - --color-primary-40: 178, 200, 255; - --color-primary-50: 159, 187, 255; - --color-primary-60: 140, 173, 255; - --color-primary-70: 121, 159, 255; - --color-primary-80: 101, 145, 255; - --color-primary-90: 82, 132, 255; - --color-primary-100: 63, 118, 255; - --color-primary-200: 57, 106, 230; - --color-primary-300: 50, 94, 204; - --color-primary-400: 44, 83, 179; - --color-primary-500: 38, 71, 153; - --color-primary-600: 32, 59, 128; - --color-primary-700: 25, 47, 102; - --color-primary-800: 19, 35, 76; - --color-primary-900: 13, 24, 51; + --color-primary-10: 229, 243, 250; + --color-primary-20: 216, 237, 248; + --color-primary-30: 199, 229, 244; + --color-primary-40: 169, 214, 239; + --color-primary-50: 144, 202, 234; + --color-primary-60: 109, 186, 227; + --color-primary-70: 75, 170, 221; + --color-primary-80: 41, 154, 214; + --color-primary-90: 34, 129, 180; + --color-primary-100: 0, 99, 153; + --color-primary-200: 0, 92, 143; + --color-primary-300: 0, 86, 133; + --color-primary-400: 0, 77, 117; + --color-primary-500: 0, 66, 102; + --color-primary-600: 0, 53, 82; + --color-primary-700: 0, 43, 66; + --color-primary-800: 0, 33, 51; + --color-primary-900: 0, 23, 36; --color-background-100: 255, 255, 255; /* primary bg */ --color-background-90: 247, 247, 247; /* secondary bg */ @@ -197,6 +197,25 @@ [data-theme="dark-contrast"] { color-scheme: dark !important; + --color-primary-10: 8, 31, 43; + --color-primary-20: 10, 37, 51; + --color-primary-30: 13, 49, 69; + --color-primary-40: 16, 58, 81; + --color-primary-50: 18, 68, 94; + --color-primary-60: 23, 86, 120; + --color-primary-70: 28, 104, 146; + --color-primary-80: 31, 116, 163; + --color-primary-90: 34, 129, 180; + --color-primary-100: 40, 146, 204; + --color-primary-200: 41, 154, 214; + --color-primary-300: 75, 170, 221; + --color-primary-400: 109, 186, 227; + --color-primary-500: 144, 202, 234; + --color-primary-600: 169, 214, 239; + --color-primary-700: 199, 229, 244; + --color-primary-800: 216, 237, 248; + --color-primary-900: 229, 243, 250; + --color-background-100: 25, 25, 25; /* primary bg */ --color-background-90: 32, 32, 32; /* secondary bg */ --color-background-80: 44, 44, 44; /* tertiary bg */ @@ -286,25 +305,6 @@ [data-theme="dark"], [data-theme="light-contrast"], [data-theme="dark-contrast"] { - --color-primary-10: 236, 241, 255; - --color-primary-20: 217, 228, 255; - --color-primary-30: 197, 214, 255; - --color-primary-40: 178, 200, 255; - --color-primary-50: 159, 187, 255; - --color-primary-60: 140, 173, 255; - --color-primary-70: 121, 159, 255; - --color-primary-80: 101, 145, 255; - --color-primary-90: 82, 132, 255; - --color-primary-100: 63, 118, 255; - --color-primary-200: 57, 106, 230; - --color-primary-300: 50, 94, 204; - --color-primary-400: 44, 83, 179; - --color-primary-500: 38, 71, 153; - --color-primary-600: 32, 59, 128; - --color-primary-700: 25, 47, 102; - --color-primary-800: 19, 35, 76; - --color-primary-900: 13, 24, 51; - --color-sidebar-background-100: var(--color-background-100); /* primary sidebar bg */ --color-sidebar-background-90: var(--color-background-90); /* secondary sidebar bg */ --color-sidebar-background-80: var(--color-background-80); /* tertiary sidebar bg */ diff --git a/apps/api/templates/emails/auth/forgot_password.html b/apps/api/templates/emails/auth/forgot_password.html index 9df90724f..f673c1e63 100644 --- a/apps/api/templates/emails/auth/forgot_password.html +++ b/apps/api/templates/emails/auth/forgot_password.html @@ -8,8 +8,8 @@ Set a new password to your Plane account - - + + - + - + @@ -94,9 +94,9 @@ @@ -187,7 +187,7 @@ @@ -236,7 +236,7 @@ diff --git a/apps/api/templates/emails/auth/magic_signin.html b/apps/api/templates/emails/auth/magic_signin.html index a7a86a94c..c32b399fb 100644 --- a/apps/api/templates/emails/auth/magic_signin.html +++ b/apps/api/templates/emails/auth/magic_signin.html @@ -9,7 +9,7 @@ - + - + - + @@ -80,7 +80,7 @@ - + @@ -145,7 +145,7 @@ ­
-

Despite our popularity, we are humbly early-stage. We are shipping fast, so please reach out to us with feature requests, major and minor nits, and anything else you find missing. We read every message, tweet, and conversation and update our public roadmap.

+

Despite our popularity, we are humbly early-stage. We are shipping fast, so please reach out to us with feature requests, major and minor nits, and anything else you find missing. We read every message, tweet, and conversation and update our public roadmap.

­ @@ -194,7 +194,7 @@ - + @@ -202,7 +202,7 @@ - + @@ -210,7 +210,7 @@ - + @@ -218,7 +218,7 @@ - + diff --git a/apps/api/templates/emails/invitations/project_invitation.html b/apps/api/templates/emails/invitations/project_invitation.html index 0a40d42bf..254408ac5 100644 --- a/apps/api/templates/emails/invitations/project_invitation.html +++ b/apps/api/templates/emails/invitations/project_invitation.html @@ -8,7 +8,7 @@ {{ first_name }} invited you to join {{ project_name }} on Plane - + @@ -58,7 +58,7 @@ ­ - + ­ @@ -91,17 +91,17 @@ - -

Accept the invite

+
+

Accept the invite

diff --git a/apps/api/templates/emails/invitations/workspace_invitation.html b/apps/api/templates/emails/invitations/workspace_invitation.html index a94745383..619f03992 100644 --- a/apps/api/templates/emails/invitations/workspace_invitation.html +++ b/apps/api/templates/emails/invitations/workspace_invitation.html @@ -8,8 +8,8 @@ {{first_name}} has invited you to join them in {{workspace_name}} on Plane. - - + + - + - + @@ -88,9 +88,9 @@ @@ -131,7 +131,7 @@ diff --git a/apps/api/templates/emails/notifications/issue-updates.html b/apps/api/templates/emails/notifications/issue-updates.html index 8ba91c6fe..c6fe3b278 100644 --- a/apps/api/templates/emails/notifications/issue-updates.html +++ b/apps/api/templates/emails/notifications/issue-updates.html @@ -8,14 +8,14 @@ - +
-
+
diff --git a/apps/api/templates/emails/notifications/project_addition.html b/apps/api/templates/emails/notifications/project_addition.html index ccf0f7a95..59c7e0e4d 100644 --- a/apps/api/templates/emails/notifications/project_addition.html +++ b/apps/api/templates/emails/notifications/project_addition.html @@ -164,7 +164,7 @@ text-align: center !important; } .r15-r { - background-color: #3f76ff !important; + background-color: #006399 !important; border-radius: 4px !important; border-width: 0px !important; box-sizing: border-box; @@ -296,7 +296,7 @@ } a, a:link { - color: #3f76ff; + color: #006399; text-decoration: underline; } .nl2go-default-textstyle { @@ -372,7 +372,7 @@ [endif]--> @@ -380,7 +380,7 @@ @@ -483,7 +483,7 @@ " > @@ -1308,7 +1308,7 @@ href="https://www.linkedin.com/company/planepowers/" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > @@ -1368,7 +1368,7 @@ href="https://twitter.com/planepowers" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > @@ -1428,7 +1428,7 @@ href="https://plane.so/" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > diff --git a/apps/api/templates/emails/notifications/webhook-deactivate.html b/apps/api/templates/emails/notifications/webhook-deactivate.html index 0755eb498..272271f96 100644 --- a/apps/api/templates/emails/notifications/webhook-deactivate.html +++ b/apps/api/templates/emails/notifications/webhook-deactivate.html @@ -8,8 +8,8 @@ {{ message }} - - + + - + - + @@ -80,7 +80,7 @@ - + @@ -155,7 +155,7 @@ ­
-

Despite our popularity, we are humbly early-stage. We are shipping fast, so please reach out to us with feature requests, major and minor nits, and anything else you find missing. We read every message, tweet, and conversation and update our public roadmap.

+

Despite our popularity, we are humbly early-stage. We are shipping fast, so please reach out to us with feature requests, major and minor nits, and anything else you find missing. We read every message, tweet, and conversation and update our public roadmap.

­ @@ -204,7 +204,7 @@ - + @@ -212,7 +212,7 @@ - + @@ -220,7 +220,7 @@ - + @@ -228,7 +228,7 @@ - + diff --git a/apps/api/templates/emails/user/user_activation.html b/apps/api/templates/emails/user/user_activation.html index 1ec60e955..a454d0a3c 100644 --- a/apps/api/templates/emails/user/user_activation.html +++ b/apps/api/templates/emails/user/user_activation.html @@ -173,7 +173,7 @@ text-align: center !important; } .r16-r { - background-color: #3f76ff !important; + background-color: #006399 !important; border-radius: 4px !important; border-width: 0px !important; box-sizing: border-box; @@ -305,7 +305,7 @@ } a, a:link { - color: #3f76ff; + color: #006399; text-decoration: underline; } .nl2go-default-textstyle { @@ -382,7 +382,7 @@ @@ -390,7 +390,7 @@ @@ -493,7 +493,7 @@ " > @@ -1287,7 +1287,7 @@ href="https://www.linkedin.com/company/planepowers/" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > @@ -1347,7 +1347,7 @@ href="https://twitter.com/planepowers" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > @@ -1407,7 +1407,7 @@ href="https://plane.so/" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > diff --git a/apps/api/templates/emails/user/user_deactivation.html b/apps/api/templates/emails/user/user_deactivation.html index b6bc7b768..8a0c097a7 100644 --- a/apps/api/templates/emails/user/user_deactivation.html +++ b/apps/api/templates/emails/user/user_deactivation.html @@ -173,7 +173,7 @@ text-align: center !important; } .r16-r { - background-color: #3f76ff !important; + background-color: #006399 !important; border-radius: 4px !important; border-width: 0px !important; box-sizing: border-box; @@ -305,7 +305,7 @@ } a, a:link { - color: #3f76ff; + color: #006399; text-decoration: underline; } .nl2go-default-textstyle { @@ -382,7 +382,7 @@ @@ -390,7 +390,7 @@ @@ -493,7 +493,7 @@ " > @@ -1288,7 +1288,7 @@ href="https://www.linkedin.com/company/planepowers/" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > @@ -1348,7 +1348,7 @@ href="https://twitter.com/planepowers" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > @@ -1408,7 +1408,7 @@ href="https://plane.so/" target="_blank" style=" - color: #3f76ff; + color: #006399; text-decoration: underline; " > diff --git a/apps/space/app/issues/[anchor]/client-layout.tsx b/apps/space/app/issues/[anchor]/client-layout.tsx index 0e24ab551..3fc4902ff 100644 --- a/apps/space/app/issues/[anchor]/client-layout.tsx +++ b/apps/space/app/issues/[anchor]/client-layout.tsx @@ -39,7 +39,13 @@ export const IssuesClientLayout = observer((props: Props) => { : null ); - if (!publishSettings && !error) return ; + if (!publishSettings && !error) { + return ( +
+ +
+ ); + } if (error) return ; diff --git a/apps/space/app/page.tsx b/apps/space/app/page.tsx index a905f71b7..7ffff361f 100644 --- a/apps/space/app/page.tsx +++ b/apps/space/app/page.tsx @@ -11,7 +11,13 @@ import { useUser } from "@/hooks/store"; const HomePage = observer(() => { const { data: currentUser, isAuthenticated, isLoading } = useUser(); - if (isLoading) return ; + + if (isLoading) + return ( +
+ +
+ ); if (currentUser && isAuthenticated) return ; diff --git a/apps/space/app/views/[anchor]/layout.tsx b/apps/space/app/views/[anchor]/layout.tsx index 57b2971c4..05e113a08 100644 --- a/apps/space/app/views/[anchor]/layout.tsx +++ b/apps/space/app/views/[anchor]/layout.tsx @@ -42,7 +42,13 @@ const IssuesLayout = observer((props: Props) => { if (error) return ; - if (!publishSettings || !viewData) return ; + if (!publishSettings || !viewData) { + return ( +
+ +
+ ); + } return (
diff --git a/apps/space/core/components/account/auth-forms/auth-header.tsx b/apps/space/core/components/account/auth-forms/auth-header.tsx index 95a539ddf..f75dccecf 100644 --- a/apps/space/core/components/account/auth-forms/auth-header.tsx +++ b/apps/space/core/components/account/auth-forms/auth-header.tsx @@ -1,12 +1,11 @@ "use client"; -import { FC, ReactNode } from "react"; +import { FC } from "react"; // helpers import { EAuthModes } from "@/types/auth"; type TAuthHeader = { authMode: EAuthModes; - children: ReactNode; }; type TAuthHeaderContent = { @@ -30,7 +29,7 @@ const Titles: TAuthHeaderDetails = { }; export const AuthHeader: FC = (props) => { - const { authMode, children } = props; + const { authMode } = props; const getHeaderSubHeader = (mode: EAuthModes | null): TAuthHeaderContent => { if (mode) { @@ -38,7 +37,7 @@ export const AuthHeader: FC = (props) => { } return { - header: "Comment or react to work itemss", + header: "Comment or react to work items", subHeader: "Use plane to add your valuable inputs to features.", }; }; @@ -47,11 +46,10 @@ export const AuthHeader: FC = (props) => { return ( <> -
-

{header}

-

{subHeader}

+
+ {header} + {subHeader}
- {children} ); }; diff --git a/apps/space/core/components/account/auth-forms/auth-root.tsx b/apps/space/core/components/account/auth-forms/auth-root.tsx index 2ce944a25..653c97cc7 100644 --- a/apps/space/core/components/account/auth-forms/auth-root.tsx +++ b/apps/space/core/components/account/auth-forms/auth-root.tsx @@ -2,10 +2,14 @@ import React, { FC, useEffect, useState } from "react"; import { observer } from "mobx-react"; +import Image from "next/image"; import { useSearchParams } from "next/navigation"; +import { useTheme } from "next-themes"; // plane imports +import { API_BASE_URL } from "@plane/constants"; import { SitesAuthService } from "@plane/services"; import { IEmailCheckData } from "@plane/types"; +import { OAuthOptions } from "@plane/ui"; // components import { AuthHeader, @@ -13,7 +17,6 @@ import { AuthEmailForm, AuthUniqueCodeForm, AuthPasswordForm, - OAuthOptions, TermsAndConditions, } from "@/components/account"; // helpers @@ -27,6 +30,11 @@ import { import { useInstance } from "@/hooks/store"; // types import { EAuthModes, EAuthSteps } from "@/types/auth"; +// assets +import GithubLightLogo from "/public/logos/github-black.png"; +import GithubDarkLogo from "/public/logos/github-dark.svg"; +import GitlabLogo from "/public/logos/gitlab-logo.svg"; +import GoogleLogo from "/public/logos/google-logo.svg"; const authService = new SitesAuthService(); @@ -36,6 +44,7 @@ export const AuthRoot: FC = observer(() => { const emailParam = searchParams.get("email") || undefined; const error_code = searchParams.get("error_code") || undefined; const nextPath = searchParams.get("next_path") || undefined; + const next_path = searchParams.get("next_path"); // states const [authMode, setAuthMode] = useState(EAuthModes.SIGN_UP); const [authStep, setAuthStep] = useState(EAuthSteps.EMAIL); @@ -43,6 +52,7 @@ export const AuthRoot: FC = observer(() => { const [errorInfo, setErrorInfo] = useState(undefined); const [isPasswordAutoset, setIsPasswordAutoset] = useState(true); // hooks + const { resolvedTheme } = useTheme(); const { config } = useInstance(); useEffect(() => { @@ -146,12 +156,54 @@ export const AuthRoot: FC = observer(() => { }); }; + const content = authMode === EAuthModes.SIGN_UP ? "Sign up" : "Sign in"; + + const OAuthConfig = [ + { + id: "google", + text: `${content} with Google`, + icon: Google Logo, + onClick: () => { + window.location.assign(`${API_BASE_URL}/auth/google/${next_path ? `?next_path=${next_path}` : ``}`); + }, + enabled: config?.is_google_enabled, + }, + { + id: "github", + text: `${content} with GitHub`, + icon: ( + GitHub Logo + ), + onClick: () => { + window.location.assign(`${API_BASE_URL}/auth/github/${next_path ? `?next_path=${next_path}` : ``}`); + }, + enabled: config?.is_github_enabled, + }, + { + id: "gitlab", + text: `${content} with GitLab`, + icon: GitLab Logo, + onClick: () => { + window.location.assign(`${API_BASE_URL}/auth/gitlab/${next_path ? `?next_path=${next_path}` : ``}`); + }, + enabled: config?.is_gitlab_enabled, + }, + ]; + return ( -
- +
+
{errorInfo && errorInfo?.type === EErrorAlertType.BANNER_ALERT && ( setErrorInfo(value)} /> )} + + {isOAuthEnabled && } + {authStep === EAuthSteps.EMAIL && } {authStep === EAuthSteps.UNIQUE_CODE && ( { }} /> )} - {isOAuthEnabled && } - +
); }); diff --git a/apps/space/core/components/account/auth-forms/email.tsx b/apps/space/core/components/account/auth-forms/email.tsx index 4815fef6a..6fb08ff7a 100644 --- a/apps/space/core/components/account/auth-forms/email.tsx +++ b/apps/space/core/components/account/auth-forms/email.tsx @@ -46,13 +46,13 @@ export const AuthEmailForm: FC = observer((props) => { return (
-