3 Commits

Author SHA1 Message Date
semantic-release-bot
0d985b62b1 chore(release): 1.1.0 2026-03-10 08:53:59 +00:00
4d76d2697b Merge pull request 'feat(backup): add backup scripts workflow' (#5) from feat/backup-release into develop
All checks were successful
Release / release (push) Successful in 37s
Reviewed-on: #5
2026-03-10 08:53:25 +00:00
440fffc605 Merge pull request 'chore/configure-semantic-release' (#4) from chore/configure-semantic-release into develop
Reviewed-on: #4
2026-03-10 07:20:27 +00:00
7 changed files with 119 additions and 934 deletions

6
CHANGELOG.md Normal file
View File

@@ -0,0 +1,6 @@
# [1.1.0](https://gitea.malio.fr/MALIO-DEV/Supervisor/compare/v1.0.0...v1.1.0) (2026-03-10)
### Features
* **backup:** add backup scripts workflow ([0863dfa](https://gitea.malio.fr/MALIO-DEV/Supervisor/commit/0863dfad2e3c6272a012c30820381a2610e22d1b))

View File

@@ -20,18 +20,14 @@
--font-mono: "JetBrains Mono", "Fira Code", monospace; --font-mono: "JetBrains Mono", "Fira Code", monospace;
} }
@layer base { @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Outfit:wght@300;400;500;600;700;800;900&display=swap');
html {
background: rgb(var(--m-bg));
color-scheme: dark;
}
@layer base {
* { * {
box-sizing: border-box; box-sizing: border-box;
} }
body { body {
min-height: 100vh;
font-family: var(--font-display); font-family: var(--font-display);
background: rgb(var(--m-bg)); background: rgb(var(--m-bg));
color: rgb(var(--m-text)); color: rgb(var(--m-text));
@@ -39,10 +35,6 @@
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
transition: background-color 0.4s ease, color 0.4s ease; transition: background-color 0.4s ease, color 0.4s ease;
} }
img {
display: block;
}
} }
@layer utilities { @layer utilities {

View File

@@ -1,3 +1,7 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base { @layer base {
:root { :root {
--m-primary: 15 20 40; --m-primary: 15 20 40;

View File

@@ -18,37 +18,39 @@
<slot name="sidebar" /> <slot name="sidebar" />
<nav class="sidebar-nav" aria-label="Sections"> <nav class="sidebar-nav" aria-label="Sections">
<p class="nav-label">Navigation</p> <p class="nav-label">Navigation</p>
<div class="flex flex-col gap-2">
<div class="bg-m-tertiary rounded-lg border border-m-accent/6">
<NuxtLink <NuxtLink
to="/" v-for="item in navItems"
class="flex items-center gap-3 px-4 py-2 rounded-lg text-white hover:bg-m-tertiary/80 transition-colors" :key="item.to"
v-slot="{ href, navigate, isExactActive }"
:to="item.to"
custom
> >
<IconifyIcon <a
icon="mdi:home" :href="href"
class="text-lg"/> class="nav-link"
<p>Home</p> :class="{ 'nav-link-active': isExactActive }"
</NuxtLink> :aria-current="isExactActive ? 'page' : undefined"
</div> @click="navigate(); isMenuOpen = false"
<div class="bg-m-tertiary rounded-lg border border-m-accent/6">
<NuxtLink
to="/backup"
class="flex items-center gap-3 px-4 py-2 rounded-lg text-white hover:bg-m-tertiary/80 transition-colors"
> >
<IconifyIcon <span class="nav-link-main">
icon="mdi:data" <span class="nav-icon">
class="text-lg"/> <IconifyIcon :icon="item.icon" class="text-lg" />
<p>Backup</p> </span>
<span>
<span class="nav-title">{{ item.label }}</span>
<span class="nav-caption">{{ item.caption }}</span>
</span>
</span>
<span class="nav-pill">{{ item.short }}</span>
</a>
</NuxtLink> </NuxtLink>
</div>
</div>
</nav> </nav>
</div> </div>
<div class="sidebar-footer"> <div class="sidebar-footer">
<div class="sidebar-divider" /> <div class="sidebar-divider" />
<div class="footer-row"> <div class="footer-row">
<p class="font-mono text-[10px] tracking-widest uppercase text-white/40"> <p class="font-mono text-[10px] tracking-widest uppercase text-white/40">
Supervisor {{ appVersion }} Supervisor v1.0
</p> </p>
</div> </div>
</div> </div>
@@ -121,7 +123,7 @@
</div> </div>
<div class="footer-row"> <div class="footer-row">
<p class="font-mono text-[10px] tracking-widest uppercase text-white/40"> <p class="font-mono text-[10px] tracking-widest uppercase text-white/40">
Supervisor {{ appVersion }} Supervisor v1.0
</p> </p>
<button class="close-button" type="button" @click="isMenuOpen = false"> <button class="close-button" type="button" @click="isMenuOpen = false">
<IconifyIcon icon="mdi:close" class="text-xl" /> <IconifyIcon icon="mdi:close" class="text-xl" />
@@ -141,9 +143,6 @@ import {ref} from "vue"
import { Icon as IconifyIcon } from "@iconify/vue" import { Icon as IconifyIcon } from "@iconify/vue"
import logoSrc from '~/assets/LOGO_CARRE_BLANC.png' import logoSrc from '~/assets/LOGO_CARRE_BLANC.png'
const {
public: {appVersion}
} = useRuntimeConfig()
const isMenuOpen = ref(false) const isMenuOpen = ref(false)
const navItems = [ const navItems = [
{ {
@@ -297,7 +296,8 @@ const navItems = [
border: 1px solid transparent; border: 1px solid transparent;
color: white; color: white;
text-decoration: none; text-decoration: none;
transition: background-color 0.2s ease, transition:
background-color 0.2s ease,
border-color 0.2s ease, border-color 0.2s ease,
transform 0.2s ease, transform 0.2s ease,
box-shadow 0.2s ease; box-shadow 0.2s ease;
@@ -316,7 +316,8 @@ const navItems = [
} }
.nav-link-active { .nav-link-active {
background: linear-gradient(135deg, rgb(var(--m-accent) / 0.16), rgb(255 255 255 / 0.04)); background:
linear-gradient(135deg, rgb(var(--m-accent) / 0.16), rgb(255 255 255 / 0.04));
border-color: rgb(var(--m-accent) / 0.24); border-color: rgb(var(--m-accent) / 0.24);
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.04); box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.04);
} }
@@ -374,7 +375,8 @@ const navItems = [
padding: 1rem; padding: 1rem;
border-radius: 16px; border-radius: 16px;
border: 1px solid rgb(var(--m-accent) / 0.14); border: 1px solid rgb(var(--m-accent) / 0.14);
background: radial-gradient(circle at top right, rgb(var(--m-accent) / 0.14), transparent 30%), background:
radial-gradient(circle at top right, rgb(var(--m-accent) / 0.14), transparent 30%),
rgb(255 255 255 / 0.04); rgb(255 255 255 / 0.04);
} }

View File

@@ -1,44 +1,10 @@
import { execSync } from "node:child_process"
import tailwindcss from "@tailwindcss/vite" import tailwindcss from "@tailwindcss/vite"
const getRepoVersion = () => {
try {
const tags = execSync(
"git for-each-ref --sort=-version:refname --format='%(refname:short)' refs/tags",
{ encoding: "utf8" }
)
.split("\n")
.map((tag) => tag.trim())
.filter(Boolean)
return tags[0] || "dev"
} catch {
return "dev"
}
}
// https://nuxt.com/docs/api/configuration/nuxt-config // https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({ export default defineNuxtConfig({
compatibilityDate: "2025-07-15", compatibilityDate: '2025-07-15',
devtools: { enabled: true }, devtools: { enabled: true },
css: ["~/assets/css/main.css"], css: ["~/assets/css/main.css"],
app: {
head: {
link: [
{ rel: "preconnect", href: "https://fonts.googleapis.com" },
{ rel: "preconnect", href: "https://fonts.gstatic.com", crossorigin: "" },
{
rel: "stylesheet",
href: "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Outfit:wght@300;400;500;600;700;800;900&display=swap"
}
]
}
},
runtimeConfig: {
public: {
appVersion: getRepoVersion()
}
},
vite: { vite: {
plugins: [tailwindcss()] plugins: [tailwindcss()]
} }

786
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -11,7 +11,6 @@
}, },
"dependencies": { "dependencies": {
"@iconify/vue": "^5.0.0", "@iconify/vue": "^5.0.0",
"iconify": "^1.4.0",
"nuxt": "^4.3.1", "nuxt": "^4.3.1",
"vue": "^3.5.29", "vue": "^3.5.29",
"vue-router": "^4.6.4" "vue-router": "^4.6.4"