feat: editor redesign 🔥 (#5780)

* Placed eraser into shape switcher (top toolbar).
Redesigned top toolbar.

* Redesigned zoom and undo-redo buttons.

* Started redesigning left toolbar.

* Redesigned help dialog.

* Colour picker now somewhat in line with new design

* [WIP] Changed a bunch of icons.
TODO: organise new icons.

* [WIP] Organised a bunch of icons. Still some to do

* [WIP] Started working on hamburger menu.

* Fixed some bugs with hamburger menu.

* Menu and left toolbar positioning.

* Added some more items to hamburger menu.

* Changed some icons.

* Modal/dialog styling & bunch of fixes.

* Some more dialog improvements & fixes.

* Mobile menu changes.

* Menu can now be closed with outside click.

* Collab avatars and button changes.

* Icon sizing. Left toolbar positioning.

* Implemented welcome screen rendering logic.

* [WIP] Welcome screen content + design.

* Some more welcome screen content and design.

* Merge fixes.

* Tweaked icon set.

* Welcome screen darkmode fix.

* Content updates.

* Various small fixes & adjustments.
Moved language selection into menu.
Fixed some problematic icons.
Slightly moved encryption icon.

* Sidebar header redesign.

* Libraries content rendering logic + some styling.

* Somem more library sidebar styling.

* Publish library dialog styling.

* scroll-back-to-content btn styling

* ColorPicker positioning.

* Library button styling.

* ColorPicker positioning "fix".

* Misc adjustments.

* PenMode button changes.

* Trying to make mobile somewhat usable.

* Added a couple of icons.

* Added some shortcuts.

* Prevent welcome screen flickering.
Fix issue with welcome screen interactivity.
Don't show sidebar button when docked.

* Icon sizing on smaller screens.

* Sidebar styling changes.

* Alignment button... well... alignments.

* Fix inconsistent padding in left toolbar.

* HintViewer changes.

* Hamburger menu changes.

* Move encryption badge back to its original pos.

* Arrowhead changes.
Active state, colours + stronger shadow.

* Added new custom font.

* Fixed bug with library button not rendering.

* Fixed issue with lang selection colours.

* Add tooltips for undo, redo.

* Address some dark mode contrast issues.

* (Re)introduce counter for selectedItems in sidebar

* [WIP] Tweaked bounding box colour & padding.

* Dashed bounding box for remote clients.

* Some more bounding box tweaks.

* Removed docking animation for now...

* Address some RTL issues.

* Welcome screen responsiveness.

* use lighter selection color in dark mode & align naming

* use rounded corners for transform handles

* use lighter gray for welcomeScreen text in dark mode

* disable selection on dialog buttons

* change selection button icon

* fix library item width being flexible

* library: visually align spinner with first section heading

* lint

* fix scrollbar color in dark mode & make thinner

* adapt properties panel max-height

* add shrotcut label to save-to-current-file

* fix unrelated `useOutsideClick` firing for active modal

* add promo color to e+ menu item

* fix type

* lowered button size

* fix transform handles raidus not accounting for zoom

* attempt fix for excal logo on safari

* final fix for excal logo on safari

* fixing fhd resolution button sized

* remove TODO shortcut

* Collab related styling changes.
Expanding avatar list no longer offsets top toolbar.
Added active state & collaborator count badge for collab button.

* Tweaked collab button active colours.

* Added active style to collab btn in hamburger menu

* Remove unnecessary comment.

* Added back promo link for non (signed in) E+ users

* Go to E+ button added for signed in E+ users.

* Close menu & dropdown on modal close.

* tweak icons & fix rendering on smaller sizes [part one]

* align welcomeScreen icons with other UI

* switch icon resize mq to `device-width`

* disable welcomeScreen items `:hover` when selecting on canvas

* change selection box color and style

* reduce selection padding and fix group selection styling

* improve collab cursor styling

- make name borders round
- hide status when "active"
- remove black/gray colors

* add Twitter to hamburger menu

* align collab button

* add shortcut for image export dialog

* revert yarn.lock

* fix more tabler icons

* slightly better-looking penMode button

* change penMode button & tooltip

* revert hamburger menu icon

* align padding on lang picker & canvas bg

* updated robot txt to allow twitter bot and fb bot

* added new OG and tweaked the OG state

* add tooltip to collab button

* align style for scroll-to-content button

* fix pointer-events around toolbar

* fix decor arrow positioning and RTL

* fix welcomeScreen-item active state in dark mode

* change `load` button copy

* prevent shadow anim when opening a docked sidebar

* update E+ links ga params

* show redirect-to-eplus welcomeScreen subheading for signed-in users

* make more generic

* add ga for eplus redirect button

* change copy and icons for hamburger export buttons

* update snaps

* trim the username to account for trailing spaces

* tweaks around decor breakpoints

* fix linear element editor test

* remove .env change

* remove `it.only`

Co-authored-by: dwelle <luzar.david@gmail.com>
Co-authored-by: Maielo <maielo.mv@gmail.com>
Co-authored-by: Aakansha Doshi <aakansha1216@gmail.com>
This commit is contained in:
Barnabás Molnár 2022-11-01 17:29:58 +01:00 committed by GitHub
parent 4d26993c8f
commit 6334bd832f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
119 changed files with 4963 additions and 3657 deletions

View file

@ -19,6 +19,10 @@
height: 100%;
width: 100%;
button {
cursor: pointer;
}
&:focus {
outline: none;
}
@ -85,15 +89,16 @@
.panelColumn {
display: flex;
flex-direction: column;
row-gap: 0.75rem;
h3,
legend,
.control-label {
margin-top: 0.333rem;
margin-bottom: 0.333rem;
margin: 0;
margin-bottom: 0.25rem;
font-size: 0.75rem;
color: var(--text-primary-color);
font-weight: bold;
font-weight: normal;
display: block;
}
@ -102,12 +107,6 @@
width: 100%;
}
h3:first-child,
legend:first-child,
.control-label:first-child {
margin-top: 0;
}
legend {
padding: 0;
}
@ -119,11 +118,12 @@
.buttonList {
flex-wrap: wrap;
display: flex;
column-gap: 0.5rem;
row-gap: 0.5rem;
label {
margin-right: 0.25rem;
font-size: 0.75rem;
display: inline-block;
}
input[type="radio"],
@ -136,38 +136,10 @@
.iconRow {
margin-top: 8px;
}
.ToolIcon {
margin: 0;
margin-inline-end: 8px;
&:focus {
outline: transparent;
box-shadow: 0 0 0 2px var(--focus-highlight-color);
}
&:hover {
background-color: var(--button-gray-2);
}
&:active {
background-color: var(--button-gray-3);
}
&:disabled {
cursor: not-allowed;
}
}
.ToolIcon__icon {
width: 28px;
height: 28px;
}
}
fieldset {
margin: 0;
margin-top: 0.333rem;
padding: 0;
border: none;
}
@ -185,64 +157,26 @@
box-shadow: 0 0 0 2px var(--focus-highlight-color);
}
button,
.buttonList label {
user-select: none;
background-color: var(--button-gray-1);
border: 0;
border-radius: var(--border-radius-md);
margin: 0.125rem 0;
padding: 0.25rem;
white-space: nowrap;
cursor: pointer;
&:focus-visible {
outline: transparent;
box-shadow: 0 0 0 2px var(--focus-highlight-color);
.buttonList {
.ToolIcon__icon {
all: unset !important;
display: flex !important;
}
&:hover {
background-color: var(--button-gray-2);
button {
background-color: transparent;
}
&:active {
background-color: var(--button-gray-3);
}
label,
button,
.zIndexButton {
@include outlineButtonStyles;
&:disabled {
cursor: not-allowed;
}
}
padding: 0;
.active,
.buttonList label.active {
background-color: var(--color-primary);
--icon-fill-color: #{$oc-white};
&:hover {
background-color: var(--color-primary-darker);
}
&:active {
background-color: var(--color-primary-darkest);
}
}
.buttonList.buttonListIcon {
label {
display: inline-flex;
justify-content: center;
align-items: center;
svg {
width: 35px;
height: 14px;
padding: 2px;
opacity: 0.6;
}
&.active svg {
opacity: 1;
width: var(--default-icon-size);
height: var(--default-icon-size);
}
}
}
@ -289,8 +223,6 @@
.App-toolbar {
width: 100%;
box-sizing: border-box;
.eraser {
&.ToolIcon:hover {
--icon-fill-color: #fff;
@ -322,12 +254,27 @@
color: var(--icon-fill-color);
}
.shapes-section {
display: flex;
justify-content: center;
pointer-events: none !important;
& > * {
pointer-events: all;
}
}
.App-menu_top {
grid-template-columns: auto max-content auto;
grid-gap: 4px;
grid-template-columns: 1fr 2fr 1fr;
grid-gap: 2rem;
align-items: flex-start;
cursor: default;
pointer-events: none !important;
@media (min-width: 1536px) {
grid-template-columns: 1fr 1fr 1fr;
grid-gap: 3rem;
}
}
.layer-ui__wrapper:not(.disable-pointerEvents) .App-menu_top > * {
@ -344,20 +291,14 @@
.App-menu_bottom {
position: absolute;
bottom: 0;
grid-template-columns: min-content auto min-content;
grid-gap: 15px;
bottom: 1rem;
display: flex;
justify-content: space-between;
align-items: flex-start;
cursor: default;
pointer-events: none !important;
:root[dir="ltr"] & {
left: 0.25rem;
}
:root[dir="rtl"] & {
right: 0.25rem;
}
box-sizing: border-box;
padding: 0 1rem;
&--transition-left {
section {
@ -390,7 +331,10 @@
.App-menu__left {
overflow-y: auto;
box-shadow: var(--shadow-island);
padding: 0.75rem;
width: 202px;
box-sizing: border-box;
position: absolute;
}
.dropdown-select {
@ -426,55 +370,65 @@
&:active {
background-color: var(--button-gray-2);
}
&__language {
height: 2rem;
background-color: var(--island-bg-color);
border-color: var(--default-border-color) !important;
cursor: pointer;
&:hover {
background-color: var(--island-bg-color);
}
}
}
.zIndexButton {
margin: 0;
margin-inline-end: 8px;
padding: 5px;
display: inline-flex;
align-items: center;
justify-content: center;
.disable-zen-mode {
border-radius: var(--border-radius-lg);
background-color: var(--color-gray-20);
border: 1px solid var(--color-gray-30);
padding: 10px 20px;
svg {
width: 18px;
height: 18px;
&:hover {
background-color: var(--color-gray-30);
}
}
.scroll-back-to-content {
color: var(--popup-text-color);
border-radius: var(--border-radius-lg);
background-color: var(--island-bg-color);
color: var(--icon-fill-color);
border: 1px solid var(--default-border-color);
padding: 10px 20px;
position: absolute;
left: 50%;
bottom: 30px;
transform: translateX(-50%);
padding: 10px 20px;
pointer-events: all;
&:hover {
background-color: var(--button-hover);
}
&:active {
border: 1px solid var(--color-primary-darkest);
}
}
.help-icon {
display: flex;
cursor: pointer;
fill: $oc-gray-6;
padding: 0;
margin: 0;
background: none;
color: var(--icon-fill-color);
@include outlineButtonStyles;
background-color: var(--island-bg-color);
width: var(--lg-button-size);
height: var(--lg-button-size);
svg {
width: 1.5rem;
height: 1.5rem;
}
&:hover {
background: none;
width: var(--lg-icon-size);
height: var(--lg-icon-size);
}
}
.reset-zoom-button {
padding: 0.2em;
background: transparent;
color: var(--text-primary-color);
font-family: var(--ui-font);
}
@ -491,7 +445,6 @@
.eraser-buttons {
display: grid;
grid-auto-flow: column;
gap: 0.4em;
margin-top: auto;
margin-bottom: auto;
margin-inline-start: 0.6em;
@ -572,17 +525,49 @@
// use custom, minimalistic scrollbar
// (doesn't work in Firefox)
::-webkit-scrollbar {
width: 5px;
width: 3px;
}
::-webkit-scrollbar-thumb {
background: var(--button-gray-2);
background: var(--scrollbar-thumb);
border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--button-gray-3);
background: var(--scrollbar-thumb-hover);
}
::-webkit-scrollbar-thumb:active {
background: var(--button-gray-2);
background: var(--scrollbar-thumb);
}
.mobile-misc-tools-container {
position: fixed;
top: 5rem;
right: 0;
display: flex;
flex-direction: column;
border: 1px solid var(--sidebar-border-color);
border-top-left-radius: var(--border-radius-lg);
border-bottom-left-radius: var(--border-radius-lg);
border-right: 0;
background-color: var(--island-bg-color);
.ToolIcon__icon {
border-radius: 0;
}
.library-button {
border: 0;
}
}
.App-toolbar--mobile {
overflow-x: hidden;
max-width: 100vw;
.ToolIcon__keybinding {
display: none;
}
}
}