From 2b633bba898483a53d0468c3e59d56bfc7c6fb71 Mon Sep 17 00:00:00 2001 From: Ross Bulat Date: Wed, 6 Mar 2024 10:14:56 +0700 Subject: [PATCH] update connect icon --- src/library/Tabs/ConectionIcon.tsx | 16 +++++++++++++ src/library/Tabs/Tab.tsx | 14 +++--------- src/library/Tabs/TabOverlay.tsx | 36 +++++++++++++++++------------- src/library/Tabs/Wrappers.ts | 9 +++++++- src/svg/Connect.svg | 2 +- 5 files changed, 48 insertions(+), 29 deletions(-) create mode 100644 src/library/Tabs/ConectionIcon.tsx diff --git a/src/library/Tabs/ConectionIcon.tsx b/src/library/Tabs/ConectionIcon.tsx new file mode 100644 index 00000000..66ff6f58 --- /dev/null +++ b/src/library/Tabs/ConectionIcon.tsx @@ -0,0 +1,16 @@ +// Copyright 2024 @rossbulat/console authors & contributors +// SPDX-License-Identifier: GPL-3.0-only + +import type { ApiStatus } from 'model/Api/types'; +import DisconnectSVG from 'svg/Disconnect.svg?react'; +import ConnectSVG from 'svg/Connect.svg?react'; + +export const ConnectionIcon = ({ status }: { status: ApiStatus }) => ( +
+ {['ready', 'connected', 'connecting'].includes(status) ? ( + + ) : ( + + )} +
+); diff --git a/src/library/Tabs/Tab.tsx b/src/library/Tabs/Tab.tsx index 46eb45d3..d3e15143 100644 --- a/src/library/Tabs/Tab.tsx +++ b/src/library/Tabs/Tab.tsx @@ -1,6 +1,5 @@ // Copyright 2024 @rossbulat/console authors & contributors // SPDX-License-Identifier: GPL-3.0-only -/* eslint-disable react/display-name */ import { useRef, useState } from 'react'; import { TabWrapper } from './Wrappers'; @@ -17,9 +16,8 @@ import { DEFAULT_TAB_WIDTH_PX, TAB_TRANSITION_DURATION_MS, } from 'contexts/Tabs/defaults'; -import DisconnectSVG from 'svg/Disconnect.svg?react'; -import ConnectSVG from 'svg/Connect.svg?react'; import { useApi } from 'contexts/Api'; +import { ConnectionIcon } from './ConectionIcon'; export const Tab = ({ index, id, name, initial = false }: TabProps) => { const { @@ -137,14 +135,8 @@ export const Tab = ({ index, id, name, initial = false }: TabProps) => { {...attributes} {...listeners} /> -
- {['ready', 'connected', 'connecting'].includes(apiStatus) ? ( - - ) : ( - - )} -
-
{name}
+ +
{name}
{tabs.length > 1 && ( diff --git a/src/library/Tabs/TabOverlay.tsx b/src/library/Tabs/TabOverlay.tsx index 131f45b4..1dce0373 100644 --- a/src/library/Tabs/TabOverlay.tsx +++ b/src/library/Tabs/TabOverlay.tsx @@ -7,21 +7,25 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faClose } from '@fortawesome/free-solid-svg-icons'; import type { TabProps } from './types'; import { DEFAULT_TAB_WIDTH_PX } from 'contexts/Tabs/defaults'; -import DisconnectSVG from 'svg/Disconnect.svg?react'; +import { useApi } from 'contexts/Api'; +import { ConnectionIcon } from './ConectionIcon'; -export const TabOverlay = ({ name }: TabProps) => ( - -
-
- -
-
{name}
+export const TabOverlay = ({ id, name }: TabProps) => { + const { getApiStatus } = useApi(); + const apiStatus = getApiStatus(id); - - -); + return ( + +
+ +
{name}
+ + + + ); +}; diff --git a/src/library/Tabs/Wrappers.ts b/src/library/Tabs/Wrappers.ts index 8eb6b653..62160a13 100644 --- a/src/library/Tabs/Wrappers.ts +++ b/src/library/Tabs/Wrappers.ts @@ -102,6 +102,13 @@ export const TabWrapper = styled(motion.div)` display: flex; align-items: center; + &.connected, + &.ready { + > svg { + fill: var(--accent-color-secondary); + } + } + > svg { width: var(--connection-icon-size); height: var(--connection-icon-size); @@ -120,7 +127,7 @@ export const TabWrapper = styled(motion.div)` top: 0; left: 0; width: 100%; - padding: 0 0.75rem 0 1.5rem; + padding: 0 0.75rem 0 1.6rem; display: flex; align-items: center; /* Handle text overflow */ diff --git a/src/svg/Connect.svg b/src/svg/Connect.svg index ac36c3d2..16ac9944 100644 --- a/src/svg/Connect.svg +++ b/src/svg/Connect.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file