From 88aa19ea4d8e8a37a8618163e57bef67104b88bd Mon Sep 17 00:00:00 2001
From: Alexander Platov <sas_lord@mail.ru>
Date: Wed, 15 Nov 2023 20:03:05 +0300
Subject: [PATCH] Moving the Back button (#3998)

Signed-off-by: Alexander Platov <sas_lord@mail.ru>
---
 packages/panel/src/components/Panel.svelte    |   4 +-
 packages/theme/styles/_layouts.scss           |   1 +
 packages/ui/src/components/Panel.svelte       |  17 +--
 .../ui/src/components/icons/ArrowLeft.svelte  |   4 +-
 .../ui/src/components/icons/ArrowRight.svelte |   4 +-
 .../ui/src/components/internal/Root.svelte    | 100 +++++++-----------
 6 files changed, 43 insertions(+), 87 deletions(-)

diff --git a/packages/panel/src/components/Panel.svelte b/packages/panel/src/components/Panel.svelte
index 52b4b8516a..9e17abe968 100644
--- a/packages/panel/src/components/Panel.svelte
+++ b/packages/panel/src/components/Panel.svelte
@@ -35,7 +35,6 @@
   export let isUtils: boolean = true
   export let isCustomAttr: boolean = true
   export let floatAside: boolean = false
-  export let allowBack: boolean = true
   export let allowClose: boolean = true
   export let embedded: boolean = false
   export let useMaxWidth: boolean | undefined = undefined
@@ -102,7 +101,6 @@
   bind:withoutTitle
   on:open
   on:close
-  {allowBack}
   {allowClose}
   {embedded}
   {floatAside}
@@ -130,8 +128,8 @@
   </svelte:fragment>
   <svelte:fragment slot="utils">
     {#if isUtils && $$slots.utils}
-      <!-- <div class="buttons-divider" /> -->
       <slot name="utils" />
+      <div class="buttons-divider max-h-7 h-7 mx-2" />
     {/if}
   </svelte:fragment>
 
diff --git a/packages/theme/styles/_layouts.scss b/packages/theme/styles/_layouts.scss
index 86291e44b0..0ced03b22e 100644
--- a/packages/theme/styles/_layouts.scss
+++ b/packages/theme/styles/_layouts.scss
@@ -718,6 +718,7 @@ input.search {
 .max-h-0 { max-height: 0; }
 .max-h-2 { max-height: .5rem; }
 .max-h-4 { max-height: 1rem; }
+.max-h-7 { max-height: 1.75rem; }
 .max-h-9 { max-height: 2.25rem; }
 .max-h-30 { max-height: 7.5rem; }
 .max-h-50 { max-height: 12.5rem; }
diff --git a/packages/ui/src/components/Panel.svelte b/packages/ui/src/components/Panel.svelte
index c9847fede3..3797bd7e4a 100644
--- a/packages/ui/src/components/Panel.svelte
+++ b/packages/ui/src/components/Panel.svelte
@@ -23,7 +23,6 @@
     ButtonGroup,
     Scroller,
     panelSeparators,
-    IconBack,
     ButtonItem
   } from '../../'
   import IconClose from './icons/Close.svelte'
@@ -40,7 +39,6 @@
   export let isFullSize: boolean = false
   export let withoutTitle: boolean = false
   export let floatAside: boolean = false
-  export let allowBack: boolean = true
   export let allowClose: boolean = true
   export let embedded: boolean = false
   export let useMaxWidth: boolean | undefined = undefined
@@ -133,20 +131,7 @@
     checkPanel()
   }}
 >
-  <div class="popupPanel-title" class:indent={allowClose || allowClose}>
-    {#if allowBack}
-      <Button
-        id={'btnPBack'}
-        focusIndex={10000}
-        icon={IconBack}
-        iconProps={{ size: 'medium' }}
-        kind={'icon'}
-        on:click={() => {
-          history.back()
-        }}
-      />
-      <div class="antiHSpacer" class:x2={!allowClose} />
-    {/if}
+  <div class="popupPanel-title" class:indent={allowClose}>
     {#if allowClose}
       <Button
         id={'btnPClose'}
diff --git a/packages/ui/src/components/icons/ArrowLeft.svelte b/packages/ui/src/components/icons/ArrowLeft.svelte
index 358e0fd5cc..2d0b2c0af7 100644
--- a/packages/ui/src/components/icons/ArrowLeft.svelte
+++ b/packages/ui/src/components/icons/ArrowLeft.svelte
@@ -18,8 +18,8 @@
   const fill: string = 'currentColor'
 </script>
 
-<svg class="svg-{size}" {fill} viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<svg class="svg-{size}" {fill} viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
   <path
-    d="M13.1,7.5H4.3l3.1-3.1L6.7,3.6l-4,4L2.4,8l0.4,0.4l4,4l0.6-0.8L4.3,8.5h8.8c0.3,0,0.5-0.2,0.5-0.5S13.3,7.5,13.1,7.5z"
+    d="M14 26L15.41 24.59L7.83 17H27C27.5523 17 28 16.5523 28 16C28 15.4477 27.5523 15 27 15H7.83L15.41 7.41L14 6L4 16L14 26Z"
   />
 </svg>
diff --git a/packages/ui/src/components/icons/ArrowRight.svelte b/packages/ui/src/components/icons/ArrowRight.svelte
index 018bf9cf4f..5277f3bf20 100644
--- a/packages/ui/src/components/icons/ArrowRight.svelte
+++ b/packages/ui/src/components/icons/ArrowRight.svelte
@@ -18,8 +18,8 @@
   export let fill: string = 'currentColor'
 </script>
 
-<svg class="svg-{size}" {fill} viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<svg class="svg-{size}" {fill} viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
   <path
-    d="M2.4,8c0,0.3,0.2,0.5,0.5,0.5h8.8l-3.1,3.1l0.6,0.8l4-4L13.6,8l-0.3-0.4l-4-4L8.6,4.4l3.1,3.1l-8.8,0C2.7,7.5,2.4,7.7,2.4,8z"
+    d="M18 6L16.57 7.393L24.15 15H5C4.44771 15 4 15.4477 4 16C4 16.5523 4.44772 17 5 17H24.15L16.57 24.573L18 26L28 16L18 6Z"
   />
 </svg>
diff --git a/packages/ui/src/components/internal/Root.svelte b/packages/ui/src/components/internal/Root.svelte
index a2f92c82b4..6576edf83b 100644
--- a/packages/ui/src/components/internal/Root.svelte
+++ b/packages/ui/src/components/internal/Root.svelte
@@ -1,28 +1,18 @@
 <script lang="ts">
-  import platform, { addEventListener, getMetadata, OK, PlatformEvent, Status } from '@hcengineering/platform'
+  import platform, { addEventListener, getMetadata, OK, PlatformEvent, Status, Severity } from '@hcengineering/platform'
   import { onDestroy } from 'svelte'
   import type { AnyComponent, WidthType } from '../../types'
   import { deviceSizes, deviceWidths } from '../../types'
   // import { applicationShortcutKey } from '../../utils'
   import { getCurrentLocation, location, navigate, locationStorageKeyId } from '../../location'
-
   import { Theme } from '@hcengineering/theme'
   import Component from '../Component.svelte'
-
   import StatusComponent from '../Status.svelte'
   import Clock from './Clock.svelte'
-  // import Mute from './icons/Mute.svelte'
-  import {
-    checkMobile,
-    deviceOptionsStore as deviceInfo
-    // networkStatus
-  } from '../../'
+  import { IconArrowLeft, IconArrowRight, checkMobile, deviceOptionsStore as deviceInfo } from '../../'
   import uiPlugin from '../../plugin'
   import Label from '../Label.svelte'
   import FontSizeSelector from './FontSizeSelector.svelte'
-  // import Computer from './icons/Computer.svelte'
-  // import Phone from './icons/Phone.svelte'
-  // import WiFi from './icons/WiFi.svelte'
   import LangSelector from './LangSelector.svelte'
   import ThemeSelector from './ThemeSelector.svelte'
 
@@ -146,18 +136,35 @@
   <div id="ui-root">
     <div class="antiStatusBar">
       <div class="flex-row-center h-full content-color">
+        <div class="history-box flex-row-center gap-3">
+          <button
+            class="antiButton ghost jf-center bs-none no-focus resetIconSize statusButton square"
+            style:color={'var(--theme-dark-color)'}
+            on:click={() => history.back()}
+          >
+            <IconArrowLeft size={'small'} />
+          </button>
+          <button
+            class="antiButton ghost jf-center bs-none no-focus resetIconSize statusButton square"
+            style:color={'var(--theme-dark-color)'}
+            on:click={() => history.forward()}
+          >
+            <IconArrowRight size={'small'} />
+          </button>
+        </div>
         <div
-          class="status-info"
+          class="flex-row-center justify-center status-info"
           style:margin-left={(isPortrait && docWidth <= 480) || (!isPortrait && docHeight <= 480) ? '1.5rem' : '0'}
         >
-          <div class="flex flex-row-center flex-center">
-            {#if maintenanceTime > 0}
-              <div class="flex-grow flex-center flex-row-center" class:maintenanceScheduled={maintenanceTime > 0}>
-                <Label label={platform.status.MaintenanceWarning} params={{ time: maintenanceTime }} />
-              </div>
-            {/if}
+          {#if maintenanceTime > 0}
+            <div class="flex-grow flex-center flex-row-center" class:maintenanceScheduled={maintenanceTime > 0}>
+              <Label label={platform.status.MaintenanceWarning} params={{ time: maintenanceTime }} />
+            </div>
+          {:else if status.severity !== Severity.OK}
             <StatusComponent {status} />
-          </div>
+          {:else}
+            <span class="logo-status">Zenflow</span>
+          {/if}
         </div>
         <div class="flex-row-reverse" style:-webkit-app-region={'no-drag'}>
           <div class="clock">
@@ -168,35 +175,6 @@
             <ThemeSelector />
             <LangSelector />
           </div>
-          <!-- <div
-            class="flex-center widget"
-            class:rotated={!isPortrait && isMobile}
-            on:click={() => {
-              alwaysMobile = !alwaysMobile
-              document.documentElement.style.setProperty('--app-height', `${window.innerHeight}px`)
-            }}
-          >
-            <svelte:component
-              this={isMobile ? Phone : Computer}
-              fill={alwaysMobile ? 'var(--theme-won-color)' : 'var(--content-color)'}
-              size={'small'}
-            />
-          </div>
-          <div
-            class="flex-center widget cursor-pointer"
-            on:click={(evt) => {
-              getMetadata(uiPlugin.metadata.ShowNetwork)?.(evt)
-            }}
-          >
-            <WiFi
-              size={'small'}
-              fill={$networkStatus === -1
-                ? 'var(--theme-error-color)'
-                : $networkStatus % 2 === 1
-                ? 'var(--theme-warning-color)'
-                : 'currentColor'}
-            />
-          </div> -->
         </div>
       </div>
     </div>
@@ -231,6 +209,10 @@
       background-color: var(--theme-statusbar-color);
       border-bottom: 1px solid var(--theme-navpanel-divider);
 
+      .history-box {
+        -webkit-app-region: no-drag;
+        margin-left: 5.625rem;
+      }
       .maintenanceScheduled {
         padding: 0 0.5rem;
         width: fit-content;
@@ -245,28 +227,18 @@
         flex-grow: 1;
         text-align: center;
       }
+      .logo-status {
+        font-weight: 500;
+        font-size: 14px;
+        color: var(--theme-content-color);
+      }
       .clock {
         margin: 0 12px 0 8px;
       }
-      // .widget {
-      //   font-size: 13px;
-      //   color: var(--theme-content-color);
-      //   transition: transform 0.15s ease-in-out;
-
-      //   &.rotated {
-      //     transform-origin: center center;
-      //     transform: rotate(90deg);
-      //   }
-      // }
-      // .widget + .widget {
-      //   margin-right: 12px;
-      // }
     }
 
     .app {
       height: calc(100% - var(--status-bar-height));
-      // min-width: 600px;
-      // min-height: 480px;
 
       .error {
         margin-top: 45vh;