From 6a3fdbbd43433dabcccf6dd70946a2d3526d420a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 25 May 2026 08:43:38 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=88=20Sync=202026-05-25=2008:43:38?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../public/aurora/images/pwa/app.webmanifest | 8 +- .../.dev/src/media/components/_badge.css | 4 +- .../.dev/src/media/components/_button.css | 2 +- .../.dev/src/media/components/_card.css | 2 +- .../.dev/src/media/components/_dropdown.css | 2 +- .../.dev/src/media/components/_form.css | 4 +- .../.dev/src/media/components/_input.css | 4 +- .../.dev/src/media/components/_overlay.css | 12 +- .../.dev/src/media/components/_progress.css | 2 +- .../.dev/src/media/components/_select.css | 2 +- .../.dev/src/media/components/_switcher.css | 8 +- .../.dev/src/media/components/_table.css | 4 +- .../.dev/src/media/components/_textarea.css | 2 +- luci-theme-aurora/.dev/src/media/login.css | 105 +++--------------- luci-theme-aurora/Makefile | 2 +- .../aurora/images/pwa/app.webmanifest | 8 +- .../htdocs/luci-static/aurora/login.css | 2 +- .../htdocs/luci-static/aurora/main.css | 2 +- .../ucode/template/themes/aurora/header.ut | 24 ++-- .../ucode/template/themes/aurora/sysauth.ut | 25 +++-- ua2f/Makefile | 4 +- 21 files changed, 87 insertions(+), 141 deletions(-) diff --git a/luci-theme-aurora/.dev/public/aurora/images/pwa/app.webmanifest b/luci-theme-aurora/.dev/public/aurora/images/pwa/app.webmanifest index 9e76a7ea..df004ec1 100644 --- a/luci-theme-aurora/.dev/public/aurora/images/pwa/app.webmanifest +++ b/luci-theme-aurora/.dev/public/aurora/images/pwa/app.webmanifest @@ -5,17 +5,19 @@ "scope": "/", "display": "standalone", "background_color": "#f8fafc", - "theme_color": "#0f172a", + "theme_color": "#f8fafc", "icons": [ { "src": "/luci-static/aurora/images/pwa/app-icon-192x192.png", "sizes": "192x192", - "type": "image/png" + "type": "image/png", + "purpose": "any" }, { "src": "/luci-static/aurora/images/pwa/app-icon-512x512.png", "sizes": "512x512", - "type": "image/png" + "type": "image/png", + "purpose": "any maskable" } ] } diff --git a/luci-theme-aurora/.dev/src/media/components/_badge.css b/luci-theme-aurora/.dev/src/media/components/_badge.css index c17c9666..70476710 100644 --- a/luci-theme-aurora/.dev/src/media/components/_badge.css +++ b/luci-theme-aurora/.dev/src/media/components/_badge.css @@ -19,7 +19,7 @@ } .zonebadge { - @apply border-secondary bg-secondary text-secondary-foreground inline-flex items-center gap-1.5 overflow-visible rounded-full border px-1 py-1.5 text-sm font-medium shadow-sm transition-all duration-200 hover:shadow-md max-md:gap-1 max-md:text-xs; + @apply border-secondary bg-secondary text-secondary-foreground inline-flex items-center gap-1.5 overflow-visible rounded-full border px-1 py-1.5 text-sm font-medium shadow-sm hover:shadow-md max-md:gap-1 max-md:text-xs; &[style*="--zone-color-rgb"] { @apply bg-[rgb(var(--zone-color-rgb),.7)]!; @@ -35,7 +35,7 @@ } .ifacebadge { - @apply border-border bg-label-surface text-default-foreground hover:border-border hover:bg-label-surface inline-flex cursor-default flex-wrap items-center gap-2 rounded-2xl border px-3 py-2 text-sm font-normal shadow-sm transition-all duration-200 hover:shadow-md max-md:gap-1.5 max-md:px-2.5 max-md:py-1.5 max-md:text-xs; + @apply border-border bg-label-surface text-default-foreground hover:border-border hover:bg-label-surface inline-flex cursor-default flex-wrap items-center gap-2 rounded-2xl border px-3 py-2 text-sm font-normal shadow-sm hover:shadow-md max-md:gap-1.5 max-md:px-2.5 max-md:py-1.5 max-md:text-xs; .cbi-dropdown &, .cbi-tooltip & { diff --git a/luci-theme-aurora/.dev/src/media/components/_button.css b/luci-theme-aurora/.dev/src/media/components/_button.css index be1d7fc4..bfe4a3ed 100644 --- a/luci-theme-aurora/.dev/src/media/components/_button.css +++ b/luci-theme-aurora/.dev/src/media/components/_button.css @@ -1,7 +1,7 @@ button, .btn, .cbi-button { - @apply inline-flex cursor-pointer items-center justify-center gap-1.5 rounded-2xl border px-3 py-1.5 text-sm font-medium antialiased shadow-sm transition-all duration-200 max-md:text-base max-md:font-medium; + @apply inline-flex cursor-pointer items-center justify-center gap-1.5 rounded-2xl border px-3 py-1.5 text-sm font-medium antialiased shadow-sm max-md:text-base max-md:font-medium; &[disabled] { @apply cursor-not-allowed opacity-40 dark:opacity-30; } diff --git a/luci-theme-aurora/.dev/src/media/components/_card.css b/luci-theme-aurora/.dev/src/media/components/_card.css index b104c3cd..bc7771ce 100644 --- a/luci-theme-aurora/.dev/src/media/components/_card.css +++ b/luci-theme-aurora/.dev/src/media/components/_card.css @@ -70,7 +70,7 @@ } & .ifacebox-head { - @apply border-border bg-label-surface text-foreground max-md:border-border/80 w-full rounded-t-2xl border-b px-4 py-3 text-center font-semibold tracking-tight transition-all duration-200 max-md:rounded-t-3xl max-md:px-3 max-md:py-2.5 max-md:text-sm max-md:leading-5 max-md:font-medium; + @apply border-border bg-label-surface text-foreground max-md:border-border/80 w-full rounded-t-2xl border-b px-4 py-3 text-center font-semibold tracking-tight transition-transform duration-200 max-md:rounded-t-3xl max-md:px-3 max-md:py-2.5 max-md:text-sm max-md:leading-5 max-md:font-medium; &[style*="--zone-color-rgb"] { @apply bg-[rgb(var(--zone-color-rgb),.75)]!; diff --git a/luci-theme-aurora/.dev/src/media/components/_dropdown.css b/luci-theme-aurora/.dev/src/media/components/_dropdown.css index a2121b79..2a9c3ab6 100644 --- a/luci-theme-aurora/.dev/src/media/components/_dropdown.css +++ b/luci-theme-aurora/.dev/src/media/components/_dropdown.css @@ -1,5 +1,5 @@ .cbi-dropdown { - @apply inline-flex h-fit max-w-full min-w-fit shrink-0 items-center p-0 whitespace-nowrap shadow-sm transition-all duration-200; + @apply inline-flex h-fit max-w-full min-w-fit shrink-0 items-center p-0 whitespace-nowrap shadow-sm; &[disabled] { @apply pointer-events-none opacity-40 dark:opacity-30; diff --git a/luci-theme-aurora/.dev/src/media/components/_form.css b/luci-theme-aurora/.dev/src/media/components/_form.css index 5a25bac0..91615b47 100644 --- a/luci-theme-aurora/.dev/src/media/components/_form.css +++ b/luci-theme-aurora/.dev/src/media/components/_form.css @@ -43,7 +43,7 @@ @apply inline-flex w-max max-w-120 flex-col items-start gap-3 max-md:max-w-full!; & .item { - @apply border-border/40 bg-panel-bg pointer-events-auto relative inline-flex cursor-move flex-col items-start gap-2 self-stretch overflow-hidden rounded-2xl border py-3 pr-10 pl-4 break-all shadow-sm transition-all duration-200 select-text max-md:w-full max-md:py-2.5 max-md:pr-8 max-md:pl-3; + @apply border-border/40 bg-panel-bg pointer-events-auto relative inline-flex cursor-move flex-col items-start gap-2 self-stretch overflow-hidden rounded-2xl border py-3 pr-10 pl-4 break-all shadow-sm select-text max-md:w-full max-md:py-2.5 max-md:pr-8 max-md:pl-3; @apply after:bg-muted after:text-muted-foreground after:absolute after:top-2.5 after:right-2 after:inline-flex after:h-6 after:w-6 after:shrink-0 after:cursor-pointer after:items-center after:justify-center after:rounded-xl after:text-sm after:font-medium after:content-['\00D7']; &.dragging { @@ -65,7 +65,7 @@ } & .add-item { - @apply border-border/70 hover:border-border hover:bg-page-bg/50 inline-flex items-center gap-1.5 self-stretch rounded-2xl border border-dashed bg-transparent px-1 py-1 transition-all duration-200; + @apply border-border/70 hover:border-border hover:bg-page-bg/50 inline-flex items-center gap-1.5 self-stretch rounded-2xl border border-dashed bg-transparent px-1 py-1; & > input { @apply min-w-61 flex-1; diff --git a/luci-theme-aurora/.dev/src/media/components/_input.css b/luci-theme-aurora/.dev/src/media/components/_input.css index 101688ed..8bddf9d7 100644 --- a/luci-theme-aurora/.dev/src/media/components/_input.css +++ b/luci-theme-aurora/.dev/src/media/components/_input.css @@ -6,7 +6,7 @@ input[type="text"], input[type="password"], .cbi-input-text, .cbi-input { - @apply text-foreground border-border/70 bg-page-bg placeholder-muted-foreground/70 focus:border-primary focus:ring-primary/20 relative rounded-2xl border px-3 py-1.5 text-sm font-normal shadow-sm transition-all duration-200 focus:ring-2 focus:outline-none; + @apply text-foreground border-border/70 bg-page-bg placeholder-muted-foreground/70 focus:border-primary focus:ring-primary/20 relative rounded-2xl border px-3 py-1.5 text-sm font-normal shadow-sm focus:ring-2 focus:outline-none; .table.cbi-section-table & { @apply w-full; @@ -23,7 +23,7 @@ input[type="password"], input[type="radio"], input[type="checkbox"] { - @apply focus:before:border-primary focus:before:ring-primary/20 checked:before:border-primary checked:before:bg-primary before:border-border/70 before:bg-page-bg after:bg-input-checked hover:before:border-border relative mr-3 inline-block h-4 w-4 cursor-pointer appearance-none before:absolute before:top-0 before:left-0 before:h-4 before:w-4 before:border before:transition-all before:duration-200 after:absolute after:top-0.5 after:left-0.5 after:h-3 after:w-3 after:opacity-0 after:transition-opacity after:duration-200 checked:after:opacity-100 focus:before:ring-2 focus:before:outline-none disabled:cursor-not-allowed; + @apply focus:before:border-primary focus:before:ring-primary/20 checked:before:border-primary checked:before:bg-primary before:border-border/70 before:bg-page-bg after:bg-input-checked hover:before:border-border relative mr-3 inline-block h-4 w-4 cursor-pointer appearance-none before:absolute before:top-0 before:left-0 before:h-4 before:w-4 before:border after:absolute after:top-0.5 after:left-0.5 after:h-3 after:w-3 after:opacity-0 after:transition-opacity after:duration-200 checked:after:opacity-100 focus:before:ring-2 focus:before:outline-none disabled:cursor-not-allowed; } input[type="radio"] { diff --git a/luci-theme-aurora/.dev/src/media/components/_overlay.css b/luci-theme-aurora/.dev/src/media/components/_overlay.css index 34924271..536168e4 100644 --- a/luci-theme-aurora/.dev/src/media/components/_overlay.css +++ b/luci-theme-aurora/.dev/src/media/components/_overlay.css @@ -1,5 +1,5 @@ .mobile-menu-overlay { - @apply max-md:bg-overlay-base/60 max-md:invisible max-md:fixed max-md:inset-0 max-md:z-60 max-md:opacity-0 max-md:transition-all max-md:duration-300 md:hidden; + @apply max-md:bg-overlay-base/60 max-md:invisible max-md:fixed max-md:inset-0 max-md:z-60 max-md:opacity-0 max-md:transition-opacity max-md:duration-300 md:hidden; &.mobile-menu-open { @apply max-md:visible max-md:opacity-100 max-md:backdrop-blur-md; @@ -20,7 +20,7 @@ } & .mobile-nav-close { - @apply max-md:cursor-pointer max-md:transition-all max-md:duration-200 max-md:hover:scale-105 max-md:active:scale-95; + @apply max-md:cursor-pointer max-md:transition-opacity max-md:duration-200 max-md:hover:scale-105 max-md:active:scale-95; & svg { @apply max-md:text-foreground size-5 max-md:transition-transform max-md:duration-200; @@ -33,16 +33,16 @@ & .mobile-nav-item { & .mobile-nav-link { - @apply max-md:text-default-foreground max-md:hover:text-foreground max-md:flex max-md:w-full max-md:items-center max-md:px-0 max-md:py-4 max-md:text-base max-md:font-medium max-md:no-underline max-md:transition-all max-md:duration-300 max-md:hover:translate-x-1; + @apply max-md:text-default-foreground max-md:hover:text-foreground max-md:flex max-md:w-full max-md:items-center max-md:px-0 max-md:py-4 max-md:text-base max-md:font-medium max-md:no-underline max-md:transition-opacity max-md:duration-300 max-md:hover:translate-x-1; } & .mobile-nav-submenu { - @apply max-md:m-0 max-md:list-none max-md:overflow-hidden max-md:p-0 max-md:transition-all max-md:duration-300 max-md:ease-in-out; + @apply max-md:m-0 max-md:list-none max-md:overflow-hidden max-md:p-0 max-md:transition-opacity max-md:duration-300 max-md:ease-in-out; & .mobile-nav-subitem { @apply max-md:border-border/20 max-md:border-b max-md:last:border-b-0; & .mobile-nav-sublink { - @apply max-md:text-default-foreground max-md:hover:text-foreground max-md:flex max-md:w-full max-md:items-center max-md:py-3 max-md:pr-0 max-md:pl-4 max-md:text-sm max-md:font-normal max-md:no-underline max-md:transition-all max-md:duration-300 max-md:hover:translate-x-1; + @apply max-md:text-default-foreground max-md:hover:text-foreground max-md:flex max-md:w-full max-md:items-center max-md:py-3 max-md:pr-0 max-md:pl-4 max-md:text-sm max-md:font-normal max-md:no-underline max-md:transition-opacity max-md:duration-300 max-md:hover:translate-x-1; } } } @@ -53,7 +53,7 @@ [data-nav-type="mega-menu"] { & .desktop-menu-overlay { - @apply bg-overlay-base/35 pointer-events-none fixed inset-0 z-50 opacity-0 transition-all duration-300 max-md:hidden; + @apply bg-overlay-base/35 pointer-events-none fixed inset-0 z-50 opacity-0 transition-opacity duration-300 max-md:hidden; &.active { @apply pointer-events-auto opacity-100 backdrop-blur-sm; diff --git a/luci-theme-aurora/.dev/src/media/components/_progress.css b/luci-theme-aurora/.dev/src/media/components/_progress.css index b6d90eca..8df40570 100644 --- a/luci-theme-aurora/.dev/src/media/components/_progress.css +++ b/luci-theme-aurora/.dev/src/media/components/_progress.css @@ -5,6 +5,6 @@ } & > div { - @apply from-progress-bar-start to-progress-bar-end h-full bg-linear-to-r transition-all duration-300; + @apply from-progress-bar-start to-progress-bar-end h-full bg-linear-to-r transition-opacity duration-300; } } diff --git a/luci-theme-aurora/.dev/src/media/components/_select.css b/luci-theme-aurora/.dev/src/media/components/_select.css index 5539cdb0..f8875b24 100644 --- a/luci-theme-aurora/.dev/src/media/components/_select.css +++ b/luci-theme-aurora/.dev/src/media/components/_select.css @@ -1,5 +1,5 @@ select { - @apply text-foreground border-border/70 bg-page-bg focus:border-primary focus:ring-primary/20 appearance-none rounded-2xl border px-3 py-1.5 pr-10 text-sm font-normal shadow-sm transition-all duration-200 focus:ring-2 focus:outline-none; + @apply text-foreground border-border/70 bg-page-bg focus:border-primary focus:ring-primary/20 appearance-none rounded-2xl border px-3 py-1.5 pr-10 text-sm font-normal shadow-sm focus:ring-2 focus:outline-none; @apply bg-[url('@assets/icons/arrow-down.svg')] bg-size-[16px] bg-position-[right_0.75rem_center] bg-no-repeat dark:bg-[url('@assets/icons/arrow-down-dark.svg')]; &[disabled] { @apply cursor-not-allowed opacity-40 dark:opacity-30; diff --git a/luci-theme-aurora/.dev/src/media/components/_switcher.css b/luci-theme-aurora/.dev/src/media/components/_switcher.css index 8e9096aa..ff5681cc 100644 --- a/luci-theme-aurora/.dev/src/media/components/_switcher.css +++ b/luci-theme-aurora/.dev/src/media/components/_switcher.css @@ -1,21 +1,21 @@ .theme-switcher { - @apply bg-page-bg relative inline-flex items-center gap-0 rounded-full shadow-sm backdrop-blur-sm transition-all duration-300 max-md:py-0.5; + @apply bg-page-bg relative inline-flex items-center gap-0 rounded-full shadow-sm backdrop-blur-sm transition-transform duration-300 max-md:py-0.5; @apply border-border/70 border; - @apply before:bg-border/50 before:ring-border/60 before:absolute before:top-1 before:left-1 before:z-0 before:h-[calc(100%-0.5rem)] before:w-[calc(33.333%-0.5rem)] before:rounded-full before:shadow-md before:ring-1 before:transition-all before:duration-300; + @apply before:bg-border/50 before:ring-border/60 before:absolute before:top-1 before:left-1 before:z-0 before:h-[calc(100%-0.5rem)] before:w-[calc(33.333%-0.5rem)] before:rounded-full before:shadow-md before:ring-1 before:transition-transform before:duration-300; footer & { @apply max-md:hidden; } & .theme-option { - @apply relative z-10 flex cursor-pointer items-center justify-center gap-1.5 rounded-full px-3 py-1.5 transition-all duration-300 hover:scale-105 active:scale-95; + @apply relative z-10 flex cursor-pointer items-center justify-center gap-1.5 rounded-full px-3 py-1.5 transition-transform duration-300 hover:scale-105 active:scale-95; & input[type="radio"] { @apply sr-only; } & .theme-icon { - @apply text-muted-foreground flex items-center justify-center transition-all duration-300; + @apply text-muted-foreground flex items-center justify-center transition-transform duration-300; & svg { @apply size-4 transition-transform duration-300; diff --git a/luci-theme-aurora/.dev/src/media/components/_table.css b/luci-theme-aurora/.dev/src/media/components/_table.css index 8fad57ed..78d7b5ba 100644 --- a/luci-theme-aurora/.dev/src/media/components/_table.css +++ b/luci-theme-aurora/.dev/src/media/components/_table.css @@ -35,7 +35,7 @@ table.table, & tr, & .tr { - @apply hover:bg-label-surface max-md:border-border transition-colors duration-200 max-md:flex max-md:flex-wrap max-md:border-b max-md:px-2 max-md:py-2; + @apply hover:bg-label-surface max-md:border-border max-md:flex max-md:flex-wrap max-md:border-b max-md:px-2 max-md:py-2; @apply has-[.cbi-progressbar]:max-md:flex has-[.cbi-progressbar]:max-md:items-center has-[.cbi-progressbar]:max-md:justify-center; &:first-child { @@ -130,7 +130,7 @@ table.table, & th, & .th { - @apply border-border bg-label-surface border-b px-3 py-3 text-left text-base font-medium backdrop-blur-sm max-md:flex-[1_1_50%] max-md:border-0 max-md:text-sm; + @apply border-border bg-label-surface border-b px-3 py-3 text-left text-base font-medium max-md:flex-[1_1_50%] max-md:border-0 max-md:text-sm; #cbi-samba4 & { @apply px-0.5 py-1.5; diff --git a/luci-theme-aurora/.dev/src/media/components/_textarea.css b/luci-theme-aurora/.dev/src/media/components/_textarea.css index 83bd0e18..4e821ac9 100644 --- a/luci-theme-aurora/.dev/src/media/components/_textarea.css +++ b/luci-theme-aurora/.dev/src/media/components/_textarea.css @@ -1,5 +1,5 @@ textarea { - @apply text-foreground border-border/70 bg-page-bg placeholder-muted-foreground/70 focus:border-primary focus:ring-primary/20 min-h-24 w-full resize-y rounded-2xl border px-3 py-2 text-sm font-normal shadow-sm transition-all duration-200 focus:ring-2 focus:outline-none; + @apply text-foreground border-border/70 bg-page-bg placeholder-muted-foreground/70 focus:border-primary focus:ring-primary/20 min-h-24 w-full resize-y rounded-2xl border px-3 py-2 text-sm font-normal shadow-sm focus:ring-2 focus:outline-none; &[disabled] { @apply cursor-not-allowed opacity-40 dark:opacity-30; } diff --git a/luci-theme-aurora/.dev/src/media/login.css b/luci-theme-aurora/.dev/src/media/login.css index cfde611e..323ae0f7 100644 --- a/luci-theme-aurora/.dev/src/media/login.css +++ b/luci-theme-aurora/.dev/src/media/login.css @@ -2,13 +2,6 @@ * luci-theme-aurora: login page stylesheet * Copyright 2025 eamonxg * Licensed to the public under the Apache License 2.0. - * - * Separate Tailwind entry — only generates utilities used by the login - * page, resulting in ~8 KB vs the 200 KB of main.css. - * - * aurora-config compatibility: all styles reference the same CSS custom - * properties (--primary, --panel-bg, etc.) defined in _tokens.css and - * overridden at runtime by the UCI token {% endif %} + {% if (!blank_page): %} + {% endif %} diff --git a/luci-theme-aurora/ucode/template/themes/aurora/sysauth.ut b/luci-theme-aurora/ucode/template/themes/aurora/sysauth.ut index 4fdc0c64..69ebc0a7 100644 --- a/luci-theme-aurora/ucode/template/themes/aurora/sysauth.ut +++ b/luci-theme-aurora/ucode/template/themes/aurora/sysauth.ut @@ -7,18 +7,25 @@ Licensed to the public under the Apache License 2.0. -#} -{%const boardinfo = ubus.call('system', 'board');-%} +{% +import { cursor } from 'uci'; +const boardinfo = ubus.call('system', 'board'); +const themeTokens = cursor().get_all('aurora', 'theme') || {}; +const loginLogoSvg = themeTokens.logo_svg || 'logo.svg'; +const loginIconVer = themeTokens.icon_cache_version || '0'; +-%} {% include('header', { blank_page: true }) %} -