From 24be49ef66f18bb3e0446e2ed0e934389d4c6748 Mon Sep 17 00:00:00 2001 From: Carlos Valente Date: Sat, 1 Aug 2026 17:09:48 +0200 Subject: [PATCH] refactor(settings): polish settings UI --- .../RedirectClientModal.module.scss | 74 ++- .../client-modal/RedirectClientModal.tsx | 68 +- .../RenameClientModal.module.scss | 13 + .../client-modal/RenameClientModal.tsx | 17 +- .../components/dialog/Dialog.module.scss | 2 +- .../src/common/components/tag/Tag.module.scss | 5 + apps/client/src/common/components/tag/Tag.tsx | 2 +- .../panel-utils/PanelUtils.module.scss | 106 ++-- .../app-settings/panel-utils/PanelUtils.tsx | 35 +- .../panel/about-panel/AboutPanel.tsx | 67 +- .../panel/about-panel/AppVersion.tsx | 37 +- .../panel/about-panel/CloudPanel.module.scss | 74 +++ .../panel/about-panel/CloudPanel.tsx | 52 ++ .../about-panel/ExternalLinkRow.module.scss | 15 + .../panel/about-panel/ExternalLinkRow.tsx | 21 + .../AutomationForm.module.scss | 9 +- .../automations-panel/AutomationForm.tsx | 588 +++++++++--------- .../automations-panel/AutomationPanel.tsx | 39 +- .../AutomationSettingsForm.tsx | 239 +++---- .../automations-panel/AutomationsList.tsx | 165 ++--- .../panel/automations-panel/TriggerForm.tsx | 141 ++--- .../panel/automations-panel/TriggersList.tsx | 164 +++-- .../automations-panel/TriggersListItem.tsx | 43 +- .../panel/feature-panel/ReportSettings.tsx | 5 +- .../panel/feature-panel/URLPresets.tsx | 14 +- .../feature-panel/composite/URLPresetForm.tsx | 164 ++--- .../panel/manage-panel/CustomFields.tsx | 65 +- .../panel/manage-panel/CustomViewForm.tsx | 121 ++-- .../panel/manage-panel/CustomViews.tsx | 5 +- .../panel/manage-panel/CustomViewsList.tsx | 13 +- .../manage-panel/ManagePanel.module.scss | 11 +- .../panel/manage-panel/ManageRundownForm.tsx | 47 +- .../panel/manage-panel/ManageRundowns.tsx | 2 +- .../composite/CustomFieldEntry.tsx | 29 +- .../composite/CustomFieldForm.tsx | 134 ++-- .../preview/PreviewTable.module.scss | 27 - .../sheet-import/preview/PreviewTable.tsx | 25 +- .../ClientControlPanel.module.scss | 20 +- .../client-control/ClientList.tsx | 78 ++- .../panel/project-panel/ProjectList.tsx | 8 +- .../panel/project-panel/ProjectListItem.tsx | 11 +- .../panel/project-panel/ProjectMergeForm.tsx | 184 ++++-- .../project-panel/ProjectPanel.module.scss | 86 ++- .../composite/CustomTranslationModal.tsx | 7 +- .../composite/StyleEditorModal.tsx | 9 +- .../panel/shutdown-panel/ShutdownPanel.tsx | 79 +-- apps/client/src/features/log/Log.module.scss | 47 +- apps/client/src/features/log/Log.tsx | 24 +- e2e/tests/features/210-client-remote.spec.ts | 23 +- 49 files changed, 1946 insertions(+), 1268 deletions(-) create mode 100644 apps/client/src/common/components/client-modal/RenameClientModal.module.scss create mode 100644 apps/client/src/features/app-settings/panel/about-panel/CloudPanel.module.scss create mode 100644 apps/client/src/features/app-settings/panel/about-panel/CloudPanel.tsx create mode 100644 apps/client/src/features/app-settings/panel/about-panel/ExternalLinkRow.module.scss create mode 100644 apps/client/src/features/app-settings/panel/about-panel/ExternalLinkRow.tsx diff --git a/apps/client/src/common/components/client-modal/RedirectClientModal.module.scss b/apps/client/src/common/components/client-modal/RedirectClientModal.module.scss index a8896858c..2ed057182 100644 --- a/apps/client/src/common/components/client-modal/RedirectClientModal.module.scss +++ b/apps/client/src/common/components/client-modal/RedirectClientModal.module.scss @@ -1,24 +1,82 @@ +.section { + display: flex; + flex-direction: column; + gap: 0.75rem; + padding: 0.75rem; + background-color: $gray-1300; + border: 1px solid $gray-1100; + border-radius: $component-border-radius-md; +} + +.sectionHeader { + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.separator { + display: flex; + align-items: center; + gap: 0.75rem; + color: $gray-500; + font-size: $inner-section-text-size; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + + &::before, + &::after { + content: ''; + flex: 1; + border-top: 1px solid $gray-1100; + } +} + .textEntry { - grid-area: input; display: flex; align-items: center; gap: 0.5rem; + flex: 1; + min-width: 0; color: $label-gray; } .inlineEntry { display: grid; - grid-template-areas: - 'label label' - 'input btn'; - grid-template-columns: 1fr auto; - column-gap: 0.5rem; + grid-template-columns: minmax(0, 1fr) auto; + align-items: center; + gap: 0.75rem; } .redirect { - grid-area: btn; + margin-left: auto; } .label { - color: $label-gray; + color: $gray-200; + font-size: $text-body-size; + font-weight: 600; +} + +.description { + color: $gray-500; + font-size: $inner-section-text-size; +} + +.origin { + flex: 0 0 auto; + color: $gray-500; + font-size: $inner-section-text-size; + white-space: nowrap; +} + +@media (max-width: $min-tablet) { + .inlineEntry { + grid-template-columns: 1fr; + align-items: stretch; + } + + .redirect { + align-self: flex-end; + } } diff --git a/apps/client/src/common/components/client-modal/RedirectClientModal.tsx b/apps/client/src/common/components/client-modal/RedirectClientModal.tsx index f577316ee..26c0d5872 100644 --- a/apps/client/src/common/components/client-modal/RedirectClientModal.tsx +++ b/apps/client/src/common/components/client-modal/RedirectClientModal.tsx @@ -1,6 +1,7 @@ import { useState } from 'react'; import { IoArrowForward } from 'react-icons/io5'; +import { baseURI } from '../../../externals'; import { navigatorConstants } from '../../../viewerConfig'; import useUrlPresets from '../../hooks-query/useUrlPresets'; import { setClientRemote } from '../../hooks/useSocket'; @@ -8,7 +9,7 @@ import Button from '../buttons/Button'; import Dialog from '../dialog/Dialog'; import Info from '../info/Info'; import Input from '../input/input/Input'; -import AppLink from '../link/app-link/AppLink'; +import ExternalLink from '../link/external-link/ExternalLink'; import Select from '../select/Select'; import style from './RedirectClientModal.module.scss'; @@ -44,6 +45,7 @@ export function RedirectClientModal({ id, isOpen, name, currentPath, origin, onC }; const enabledPresets = data.filter((preset) => preset.enabled); + const settingsUrl = `${window.location.origin}${baseURI}/?settings=sharing__presets`; const viewOptions = [ ...navigatorConstants.map((view) => ({ @@ -66,34 +68,46 @@ export function RedirectClientModal({ id, isOpen, name, currentPath, origin, onC bodyElements={ <> - Remotely redirect the client to a different URL.
- Either by entering a custom path or selecting a URL Preset. -
-
- Manage URL Presets + + Remotely redirect the client to a different URL. Choose a custom path or select a URL Preset. + + + Manage URL Presets +
-
- Enter custom path - - -
-
- Select View or URL Preset +
+
+ Enter custom path + Type the path the client should open. +
+ +
+
+
+ Or +
+
+
+ Select view or URL Preset + Choose from the available destinations. +
+
+