Appmanager: UI Rework
Change-Id: I2f809f96e274adac7df9f63d44b0a794bfa3a0dc
diff --git a/core/installer/values-tmpl/url-shortener.cue b/core/installer/values-tmpl/url-shortener.cue
index a7293d5..a2e4994 100644
--- a/core/installer/values-tmpl/url-shortener.cue
+++ b/core/installer/values-tmpl/url-shortener.cue
@@ -11,7 +11,7 @@
namespace: "app-url-shortener"
readme: "URL shortener application will be installed on \(input.network.name) network and be accessible at https://\(_domain)"
description: "Provides URL shortening service. Can be configured to be reachable only from private network or publicly."
-icon: "<svg xmlns='http://www.w3.org/2000/svg' width='40.63' height='50' viewBox='0 0 13 16'><circle cx='2' cy='10' r='1' fill='currentColor'/><circle cx='2' cy='6' r='1' fill='currentColor'/><path fill='currentColor' d='M4.5 14c-.06 0-.11 0-.17-.03a.501.501 0 0 1-.3-.64l4-11a.501.501 0 0 1 .94.34l-4 11c-.07.2-.27.33-.47.33m3 0c-.06 0-.11 0-.17-.03a.501.501 0 0 1-.3-.64l4-11a.501.501 0 0 1 .94.34l-4 11c-.07.2-.27.33-.47.33'/></svg>"
+icon: "<svg xmlns='http://www.w3.org/2000/svg' width='50' height='50' viewBox='0 0 13 16'><circle cx='2' cy='10' r='1' fill='currentColor'/><circle cx='2' cy='6' r='1' fill='currentColor'/><path fill='currentColor' d='M4.5 14c-.06 0-.11 0-.17-.03a.501.501 0 0 1-.3-.64l4-11a.501.501 0 0 1 .94.34l-4 11c-.07.2-.27.33-.47.33m3 0c-.06 0-.11 0-.17-.03a.501.501 0 0 1-.3-.64l4-11a.501.501 0 0 1 .94.34l-4 11c-.07.2-.27.33-.47.33'/></svg>"
_httpPortName: "http"
diff --git a/core/installer/welcome/appmanager-tmpl/app.html b/core/installer/welcome/appmanager-tmpl/app.html
index 5ce3534..d76dde9 100644
--- a/core/installer/welcome/appmanager-tmpl/app.html
+++ b/core/installer/welcome/appmanager-tmpl/app.html
@@ -81,7 +81,8 @@
{{ end }}
{{ define "header" }}
- <h1>{{ .App.Icon }}{{ .App.Name }}</h1>
+ {{ .App.Icon }}
+ <h1>{{ .App.Name }}</h1>
{{ end }}
{{ define "extra_menu" }}
diff --git a/core/installer/welcome/appmanager-tmpl/base.html b/core/installer/welcome/appmanager-tmpl/base.html
index 759ce87..a227233 100644
--- a/core/installer/welcome/appmanager-tmpl/base.html
+++ b/core/installer/welcome/appmanager-tmpl/base.html
@@ -3,14 +3,14 @@
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="/static/pico.2.0.6.min.css">
- <link rel="stylesheet" type="text/css" href="/static/appmanager.css?v=0.0.2">
+ <link rel="stylesheet" type="text/css" href="/static/appmanager.css?v=0.0.8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<header class="is-fixed-above-lg is-fixed">
{{ block "header" . }}{{ end }}
</header>
- <main class="container page-index">
+ <main class="container-fluid page-index">
<aside id="menu-nav">
<nav id="menu" class="is-sticky-above-lg">
<ul>
diff --git a/core/installer/welcome/appmanager-tmpl/index.html b/core/installer/welcome/appmanager-tmpl/index.html
index 356dc28..d934cd3 100644
--- a/core/installer/welcome/appmanager-tmpl/index.html
+++ b/core/installer/welcome/appmanager-tmpl/index.html
@@ -13,14 +13,12 @@
<a href="/app/{{ .Slug }}" class="app-link">
<article>
<div class="icon">
- <div>
- {{ .Icon }}
- </div>
+ {{ .Icon }}
</div>
<div class="card-content">
<div class="app-details">
<div class="app-name-container">
- <p class="app">{{ .Name }}</p>
+ <h3 class="app">{{ .Name }}</h3>
<span class="instance-count" data-tooltip="Instances {{ len .Instances }}" data-placement="bottom">{{ len .Instances }}</span>
</div>
<p class="description">{{ .ShortDescription }}</p>
diff --git a/core/installer/welcome/launcher-tmpl/launcher.html b/core/installer/welcome/launcher-tmpl/launcher.html
index 6d404ad..ca15ee9 100644
--- a/core/installer/welcome/launcher-tmpl/launcher.html
+++ b/core/installer/welcome/launcher-tmpl/launcher.html
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>dodo: Launcher</title>
<link rel="stylesheet" type="text/css" href="/static/pico.2.0.6.min.css">
- <link rel="stylesheet" type="text/css" href="/static/launcher.css?v=0.0.13">
+ <link rel="stylesheet" type="text/css" href="/static/launcher.css?v=0.0.15">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/hack-font/3.3.0/web/hack.min.css">
</head>
<body class="container-fluid">
@@ -80,6 +80,6 @@
{{ template "help-content-template" (dict "Help" $h.Children "First" false) }}
{{ end }}
{{ end }}
- <script src="/static/launcher.js?v=0.0.13"></script>
+ <script src="/static/launcher.js?v=0.0.14"></script>
</body>
</html>
diff --git a/core/installer/welcome/static/appmanager.css b/core/installer/welcome/static/appmanager.css
index 2f3564f..f48a1ea 100644
--- a/core/installer/welcome/static/appmanager.css
+++ b/core/installer/welcome/static/appmanager.css
@@ -1,7 +1,110 @@
-@media screen and (min-width: 801px) {
- #main {
- width: 600px;
+[data-theme="light"],
+:root:not([data-theme="dark"]) {
+ --pico-font-family: Hack, monospace;
+ --pico-font-size: 14px;
+ --pico-header-height: 56px;
+ --pico-border-radius: 0;
+ --pico-background-color: #d6d6d6;
+ --pico-form-element-border-color: #3a3a3a;
+ --pico-form-element-active-border-color: #7f9f7f;
+ --pico-form-element-focus-color: #7f9f7f;
+ --pico-form-element-background-color: #d6d6d6;
+ --pico-form-element-active-background-color: #d6d6d6;
+ --pico-form-element-selected-background-color: #d6d6d6;
+ --pico-primary: #7f9f7f;
+ --pico-primary-background: #7f9f7f;
+ --pico-primary-hover: #d4888d;
+ --pico-primary-hover-background: #d4888d;
+ --pico-grid-spacing-horizontal: 0;
+ --search-background-color: #d6d6d6;
+ --pico-color: #3a3a3a;
+ --pico-form-element-color: var(--pico-muted-color);
+ --pico-primary-inverse: #3a3a3a;
+ h3,
+ p {
+ color: var(--pico-accordion-open-summary-color);
}
+ label {
+ color: var(--pico-secondary);
+ }
+ input:is([type="checkbox"]) {
+ --pico-form-element-focus-color: none;
+ --pico-border-color: var(--pico-secondary);
+ }
+}
+
+@media (max-width: 768px) {
+ body > main {
+ grid-template-columns: 9rem 1fr !important;
+ column-gap: 0 !important;
+ }
+
+ .container-fluid {
+ padding-left: 1px;
+ padding-right: 1px;
+ margin-left: 0;
+ margin-right: 0;
+ }
+}
+
+body > header {
+ z-index: 4;
+ position: relative;
+}
+
+html {
+ scroll-behavior: smooth;
+ overflow-x: hidden;
+}
+
+body > header.is-fixed-above-lg + main {
+ --pico-main-top-offset: var(--pico-header-height);
+}
+
+body > header.is-fixed-above-lg {
+ height: var(--pico-header-height);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ z-index: 2;
+ position: sticky;
+ top: 0;
+ -webkit-backdrop-filter: blur(1rem);
+ backdrop-filter: blur(1rem);
+ background-color: var(--pico-form-element-border-color);
+ transition: border-top-color 0.4s ease-in-out, box-shadow 0.4s ease-in-out;
+}
+
+body > main > aside > nav.is-sticky-above-lg {
+ position: sticky;
+ top: calc(
+ var(--pico-main-top-offset) + var(--pico-block-spacing-vertical) / 2
+ );
+ max-height: calc(var(--max-height) - var(--pico-spacing));
+ overflow: auto;
+ transition: top var(--pico-transition);
+ transition-delay: 50ms;
+}
+
+body > main {
+ display: grid;
+ grid-template-rows: auto auto 1fr;
+ grid-template-columns: 11rem 1fr;
+ grid-template-areas: "menu content";
+ column-gap: 2rem;
+ margin-top: 1rem;
+ padding: 0;
+}
+
+header > h1,
+header > svg {
+ margin-bottom: 2.5px;
+ color: var(--pico-primary-hover);
+}
+
+.search-bar {
+ max-width: 616px;
+ width: 100%;
}
article {
@@ -14,8 +117,9 @@
}
.icon {
- margin-right: 10px;
+ margin: 0 6px;
flex-shrink: 0;
+ color: var(--pico-accordion-open-summary-color);
}
.app-details {
@@ -35,11 +139,16 @@
margin-bottom: 2px;
margin-top: 0px;
margin-left: 5px;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+.app-link:hover h3.app,
+.app-link:hover .icon {
+ color: var(--pico-primary-hover);
}
.description {
- --pico-color: var(--pico-secondary);
- font-size: medium;
margin-bottom: 3px;
margin-left: 5px;
text-decoration: none !important;
@@ -53,17 +162,14 @@
display: flex;
justify-content: center;
align-items: center;
- width: 24px;
- height: 24px;
+ width: 22px;
+ height: 22px;
border-radius: 50%;
- background-color: white;
- color: var(--pico-color);
- font-size: 16px;
font-weight: bold;
border: 2px solid var(--pico-color) !important;
position: absolute;
- top: 14px;
- right: 11px;
+ top: 10px;
+ right: 10px;
transform: translate(50%, -50%);
}
@@ -95,6 +201,8 @@
padding-top: 0px;
padding-bottom: 2px;
text-decoration: none;
+ width: 100%;
+ padding-right: 0;
}
nav li {
@@ -104,6 +212,7 @@
input[type="search"] {
margin-bottom: 0;
+ height: 100%;
}
.page {
@@ -112,11 +221,6 @@
flex-direction: column;
}
-.search-bar {
- max-width: 616px;
- min-width: 500px;
-}
-
.card-content {
width: 100%;
}
@@ -125,64 +229,22 @@
margin-bottom: 6px;
}
-header {
- height: 80px !important;
- display: flex;
- align-items: center;
- justify-content: center;
-}
-
-header > h1 {
- margin-bottom: 0px;
-}
-
nav {
height: 100%;
}
#config-form label {
width: auto !important;
+ padding: 0 5px 0 5px;
}
-html {
- scroll-behavior: smooth;
- --pico-header-height: 80px;
+#config-form > label:nth-of-type(2) label {
+ padding-left: 0;
+ padding-right: 0;
}
-body > header.is-fixed-above-lg + main {
- --pico-main-top-offset: var(--pico-header-height);
-}
-
-body > header.is-fixed-above-lg {
- z-index: 2;
- position: sticky;
- top: 0;
- -webkit-backdrop-filter: blur(1rem);
- backdrop-filter: blur(1rem);
- background-color: var(--pico-header-background);
- transition: border-top-color 0.4s ease-in-out, box-shadow 0.4s ease-in-out;
-}
-
-body > header.is-fixed-above-lg.is-fixed {
- border-bottom-color: var(--pico-header-border-color);
- box-shadow: var(--pico-card-box-shadow);
-}
-
-body > header {
- z-index: 4;
- position: relative;
- padding: 0.5rem 0;
- border-bottom: var(--pico-border-width) solid transparent;
-}
-
-body > main {
- display: grid;
- grid-template-rows: auto auto 1fr;
- grid-template-columns: 11rem 1fr;
- grid-template-areas: "menu content";
- column-gap: 2rem;
- margin-top: 1rem;
- padding: 0;
+input[type="checkbox"]:checked {
+ border-color: var(--pico-form-element-focus-color) !important;
}
#menu-nav {
@@ -193,22 +255,6 @@
grid-area: content;
}
-main > aside {
- --pico-font-size: 16px;
- font-size: var(--pico-font-size);
-}
-
-body > main > aside > nav.is-sticky-above-lg {
- position: sticky;
- top: calc(
- var(--pico-main-top-offset) + var(--pico-block-spacing-vertical) / 2
- );
- max-height: calc(var(--max-height) - var(--pico-spacing));
- overflow: auto;
- transition: top var(--pico-transition);
- transition-delay: 50ms;
-}
-
main > aside#menu-nav nav {
margin-bottom: var(--pico-spacing);
margin-block: calc(var(--pico-outline-width) * -1);
diff --git a/core/installer/welcome/static/launcher.css b/core/installer/welcome/static/launcher.css
index d6038f9..12d24fe 100644
--- a/core/installer/welcome/static/launcher.css
+++ b/core/installer/welcome/static/launcher.css
@@ -32,8 +32,6 @@
display: flex;
flex-direction: column;
align-items: center;
- margin-top: 5px;
- margin-bottom: 5px;
}
.app-list {
@@ -44,8 +42,6 @@
overflow-x: hidden;
padding-top: 3px;
width: 95% !important;
- /* scrollbar-width: thin;
- scrollbar-color: var(--bodyBg) var(--bg); */
}
.scrollbar-custom {
@@ -53,11 +49,6 @@
scrollbar-color: var(--bodyBg) var(--bg);
}
-/* .app-list:hover::-webkit-scrollbar {
- width: 6px;
- scrollbar-color: var(--bodyBg) var(--bg);
-} */
-
.scrollbar-custom::-webkit-scrollbar {
width: 6px;
}
@@ -75,38 +66,28 @@
background-color: var(--bodyBg);
}
-/* .layout-scrollbar::-webkit-scrollbar-thumb:active {
- background-color: var(--bodyBg);
-} */
-
#right-panel {
flex: 1;
background-color: none !important;
- margin: 5px 0 5px 5px;
- padding: 2px;
+ padding: 0 0 0 2px;
}
.appFrame {
- border-radius: 10px;
+ border-radius: 0;
width: 100%;
height: 100%;
border: 0;
}
.app-icon {
- /* position: relative; */
- /* display: inline-block; */
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
- /* cursor: initial; */
width: 80px !important;
height: 50px !important;
margin-bottom: 10px !important;
cursor: pointer !important;
- /* --pico-background-color: unset !important;
- --pico-color: unset !important; */
}
.tooltip {
@@ -161,7 +142,6 @@
.modal-right {
flex: 1;
- /* width: 70%; */
overflow-y: auto;
float: right;
margin-left: 2px;