From ee499f2d8be15204479483b56e6179d926b090b4 Mon Sep 17 00:00:00 2001 From: Eugene Date: Mon, 26 May 2025 20:22:39 +0200 Subject: [PATCH] UI tweaks --- warpgate-web/src/admin/App.svelte | 46 +------- warpgate-web/src/admin/config/Config.svelte | 103 +++++++++++++++++- .../src/admin/config/CreateTarget.svelte | 42 +++---- .../src/admin/config/Parameters.svelte | 66 ++++++----- warpgate-web/src/common/NavListItem.svelte | 75 +++++++++---- warpgate-web/src/common/RadioButton.svelte | 46 ++++++++ 6 files changed, 252 insertions(+), 126 deletions(-) create mode 100644 warpgate-web/src/common/RadioButton.svelte diff --git a/warpgate-web/src/admin/App.svelte b/warpgate-web/src/admin/App.svelte index 86ad4a19..4690674b 100644 --- a/warpgate-web/src/admin/App.svelte +++ b/warpgate-web/src/admin/App.svelte @@ -1,7 +1,7 @@ -
+
diff --git a/warpgate-web/src/admin/config/Config.svelte b/warpgate-web/src/admin/config/Config.svelte index b2038cba..a3b4a911 100644 --- a/warpgate-web/src/admin/config/Config.svelte +++ b/warpgate-web/src/admin/config/Config.svelte @@ -1,41 +1,142 @@ -
+{#snippet navItems()} +{/snippet} + +
+ + +
+ { + sidebarMode = e.detail.route !== '' + }} /> +
+ +
+ + {@render navItems()} +
+ + diff --git a/warpgate-web/src/admin/config/CreateTarget.svelte b/warpgate-web/src/admin/config/CreateTarget.svelte index 7ba0882f..8ab59141 100644 --- a/warpgate-web/src/admin/config/CreateTarget.svelte +++ b/warpgate-web/src/admin/config/CreateTarget.svelte @@ -5,6 +5,7 @@ import { stringifyError } from 'common/errors' import Alert from 'common/sveltestrap-s5-ports/Alert.svelte' import { TargetKind } from 'gateway/lib/api' + import RadioButton from 'common/RadioButton.svelte' let error: string|null = $state(null) let name = $state('') @@ -69,6 +70,12 @@ } } + const kinds: { name: string, value: TargetKind }[] = [ + { name: 'SSH', value: TargetKind.Ssh }, + { name: 'HTTP', value: TargetKind.Http }, + { name: 'MySQL', value: TargetKind.MySql }, + { name: 'PostgreSQL', value: TargetKind.Postgres }, + ]
@@ -91,34 +98,13 @@ - - - - + {#each kinds as kind} + + {/each} diff --git a/warpgate-web/src/admin/config/Parameters.svelte b/warpgate-web/src/admin/config/Parameters.svelte index 0528a765..608110e6 100644 --- a/warpgate-web/src/admin/config/Parameters.svelte +++ b/warpgate-web/src/admin/config/Parameters.svelte @@ -1,43 +1,41 @@
-

global parameters

+

global parameters

-
- - {#if parameters} - - {/if} - -
+ +{#if parameters} + +{/if} + diff --git a/warpgate-web/src/common/NavListItem.svelte b/warpgate-web/src/common/NavListItem.svelte index 026052cf..b65b31f8 100644 --- a/warpgate-web/src/common/NavListItem.svelte +++ b/warpgate-web/src/common/NavListItem.svelte @@ -2,27 +2,40 @@ import { faArrowRight } from '@fortawesome/free-solid-svg-icons' import Fa from 'svelte-fa' import { link } from 'svelte-spa-router' + import active from 'svelte-spa-router/active' + import { classnames } from './sveltestrap-s5-ports/_sveltestrapUtils' interface Props { + class?: string, title: string description?: string href: string + small?: boolean } let { title, + 'class': className, description, href, + small, }: Props = $props() + + let classes = $derived(classnames( + className, + 'link', + small ? 'sm' : false, + ))
-
{title}
+
{title}
{#if description}
{description}
{/if} @@ -39,7 +52,7 @@ display: flex; width: 100%; text-decoration: none; - padding: 1rem 1.5rem; + padding: 0.8rem 1.5rem 1rem; border-radius: var(--bs-border-radius); align-items: center; @@ -47,34 +60,54 @@ flex-grow: 1; } - &:hover { + &:hover, &.active { background: var(--bs-list-group-action-hover-bg); - h5 { + .title { color: var(--bs-list-group-action-hover-color); } } &:active { background: var(--bs-list-group-action-active-bg); - h5 { + .title { color: var(--bs-list-group-action-active-color); } } + + .title { + margin-bottom: 0.25rem; + font-size: 1.25rem; + + text-decoration: underline; + text-decoration-color: var(--wg-link-underline-color); + text-underline-offset: 2px; + } + + &.link:hover .title { + text-decoration-color: var(--wg-link-hover-underline-color); + } + + .description { + text-decoration: none; + line-height: 1rem; + font-size: 0.9rem; + } + + &.sm { + padding: 0.5rem 1rem; + + .title { + font-size: 1rem; + } + + .description { + font-size: 0.8rem; + } + + .icon { + display: none; + } + } } - h5 { - margin-bottom: 0.25rem; - - text-decoration: underline; - text-decoration-color: var(--wg-link-underline-color); - text-underline-offset: 2px; - } - - .link:hover h5 { - text-decoration-color: var(--wg-link-hover-underline-color); - } - - .description { - text-decoration: none; - } diff --git a/warpgate-web/src/common/RadioButton.svelte b/warpgate-web/src/common/RadioButton.svelte new file mode 100644 index 00000000..47a82de8 --- /dev/null +++ b/warpgate-web/src/common/RadioButton.svelte @@ -0,0 +1,46 @@ + + + + + +