🎈 Sync 2026-04-02 20:31:34

This commit is contained in:
github-actions[bot] committed 2026-04-02 20:31:34 +08:00
1 parent 020b4e1dc3
commit a794220143
32 files changed
+1032 -531

No files matched your search

+2 -2
View File
@@ -10,8 +10,8 @@ THEME_NAME:=alpha
THEME_TITLE:=Alpha
PKG_NAME:=luci-theme-$(THEME_NAME)
PKG_VERSION:=3.9.7_beta
PKG_RELEASE:=4
PKG_VERSION:=3.9.7_beta2
PKG_RELEASE:=5
include $(INCLUDE_DIR)/package.mk
+21 -26
View File
@@ -82,7 +82,8 @@ return baseclass.extend({
url + "/" + children[i].name,
l
),
hasChildren = submenu.children.length;
hasChildren = submenu.children.length,
dataTitle = hasChildren ? children[i].title : _(children[i].title);
ul.appendChild(
E(
"li",
@@ -104,9 +105,8 @@ return baseclass.extend({
click: hasChildren
? ui.createHandlerFn(this, "handleMenuExpand")
: null,
"data-title": hasChildren
? children[i].title
: _(children[i].title),
"data-title": dataTitle,
"data-name": children[i].name,
},
[_(children[i].title)]
),
@@ -180,36 +180,31 @@ return baseclass.extend({
darkMask = document.querySelector(".darkMask"),
mainRight = document.querySelector(".main-right"),
mainLeft = document.querySelector(".main-left"),
open = mainLeft.style.transform === ""; // true if currently open
// If it's a resize event, we simulate that the sidebar was "open" so the logic below closes it for mobile, and opens it for desktop
open = mainLeft.style.transform === "";
if (ev.type == "resize") {
open = true;
open = true;
}
// Logics: 'open' true means we want to CLOSE it on mobile, but OPEN it on desktop.
// Actually, let's make it clearer: we toggle the state.
var willOpen = !open;
if (ev.type == "resize") {
willOpen = width > 1152;
willOpen = width > 1152;
}
if (width <= 1152) {
// Mobile behavior
mainLeft.style.width = ""; // Reset width
mainLeft.style.transform = willOpen ? "" : "translateX(-20rem)";
mainLeft.style.visibility = willOpen ? "visible" : "";
darkMask.style.visibility = willOpen ? "visible" : "";
darkMask.style.opacity = willOpen ? 1 : "";
mainRight.style.width = "";
mainLeft.style.width = "";
mainLeft.style.transform = willOpen ? "" : "translateX(-20rem)";
mainLeft.style.visibility = willOpen ? "visible" : "";
darkMask.style.visibility = willOpen ? "visible" : "";
darkMask.style.opacity = willOpen ? 1 : "";
mainRight.style.width = "";
} else {
// Desktop behavior
mainLeft.style.width = ""; // Reset width
mainLeft.style.transform = willOpen ? "" : "translateX(-20rem)";
mainLeft.style.visibility = willOpen ? "visible" : "hidden";
mainRight.style.width = willOpen ? "" : "100%";
darkMask.style.visibility = "";
darkMask.style.opacity = "";
mainLeft.style.width = "";
mainLeft.style.transform = willOpen ? "" : "translateX(-20rem)";
mainLeft.style.visibility = willOpen ? "visible" : "hidden";
mainRight.style.width = willOpen ? "" : "100%";
darkMask.style.visibility = "";
darkMask.style.opacity = "";
}
if (ev && ev.preventDefault) ev.preventDefault();
if (ev && ev.stopPropagation) ev.stopPropagation();
+97 -26
View File
@@ -187,7 +187,7 @@
--main-menu-color: #202124;
--submenu-bg-hover: #4d5ca5;
--submenu-bg-hover-active: #09c;
--font-body: 'Inter-Regular';
--font-body: 'Inter-Regular', 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Noto Sans CJK SC', sans-serif;
}
tt {
@@ -372,8 +372,20 @@
height: 100%;
margin: 0;
padding: 0;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
body.lang_zh-cn,
body.lang_zh_CN,
body.lang_zh-hans,
body.lang_zh_Hans,
body.lang_zh-tw,
body.lang_zh_TW {
font-family: 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Noto Sans CJK SC', sans-serif;
}
select {
color: #555;
border: thin solid #ccc;
@@ -838,9 +850,13 @@
}
.main>.main-left>.nav>li>[data-title="Log out"],
.main>.main-left>.nav>li>[data-title="Logout"] {
.main>.main-left>.nav>li>[data-title="Logout"],
.main>.main-left>.nav>li>[data-name="logout"] {
display: flex;
align-items: center;
justify-content: flex-start;
padding: 0.5rem 1rem;
padding-right: 3rem;
}
.main>.main-left>.nav>li a {
@@ -850,7 +866,9 @@
.main>.main-left>.nav>li>[data-title="Log out"],
.main>.main-left>.nav>li>[data-title="Logout"],
.main>.main-left>.nav>li>[data-title="iStore"] {
.main>.main-left>.nav>li>[data-title="iStore"],
.main>.main-left>.nav>li>[data-name="logout"],
.main>.main-left>.nav>li>[data-name="istore"] {
font-size: 1rem;
color: #fff;
}
@@ -866,6 +884,8 @@
.main>.main-left>.nav>.slide>.menu,
.main>.main-left>.nav>li>[data-title="Logout"],
.main>.main-left>.nav>li>[data-title="iStore"],
.main>.main-left>.nav>li>[data-name="logout"],
.main>.main-left>.nav>li>[data-name="istore"],
.main>.main-left>.nav>li>[data-title="Dashboard"] {
font-size: 1rem;
font-weight: 500;
@@ -891,7 +911,8 @@
.main>.main-left>.nav>.slide>.menu.active::before {}
.main>.main-left>.nav>.slide>[data-title="Status"]:before {
.main>.main-left>.nav>.slide>[data-title="Status"]:before,
.main>.main-left>.nav>.slide>[data-name="status"]:before {
position: absolute;
right: 14px;
width: 25px;
@@ -901,7 +922,8 @@
background-size: 25px;
}
.main>.main-left>.nav>.slide>[data-title="System"]:before {
.main>.main-left>.nav>.slide>[data-title="System"]:before,
.main>.main-left>.nav>.slide>[data-name="system"]:before {
position: absolute;
right: 14px;
width: 25px;
@@ -911,7 +933,8 @@
background-size: 25px;
}
.main>.main-left>.nav>.slide>[data-title="Services"]:before {
.main>.main-left>.nav>.slide>[data-title="Services"]:before,
.main>.main-left>.nav>.slide>[data-name="services"]:before {
position: absolute;
right: 14px;
width: 25px;
@@ -921,7 +944,8 @@
background-size: 25px;
}
.main>.main-left>.nav>.slide>[data-title="NAS"]:before {
.main>.main-left>.nav>.slide>[data-title="NAS"]:before,
.main>.main-left>.nav>.slide>[data-name="nas"]:before {
position: absolute;
right: 14px;
width: 25px;
@@ -931,7 +955,8 @@
background-size: 25px;
}
.main>.main-left>.nav>.slide>[data-title="Modem"]:before {
.main>.main-left>.nav>.slide>[data-title="Modem"]:before,
.main>.main-left>.nav>.slide>[data-name="modem"]:before {
position: absolute;
right: 14px;
width: 25px;
@@ -941,7 +966,8 @@
background-size: 25px;
}
.main>.main-left>.nav>.slide>[data-title="Network"]:before {
.main>.main-left>.nav>.slide>[data-title="Network"]:before,
.main>.main-left>.nav>.slide>[data-name="network"]:before {
position: absolute;
right: 14px;
width: 25px;
@@ -951,7 +977,8 @@
background-size: 25px;
}
.main>.main-left>.nav>.slide>[data-title="VPN"]:before {
.main>.main-left>.nav>.slide>[data-title="VPN"]:before,
.main>.main-left>.nav>.slide>[data-name="vpn"]:before {
position: absolute;
right: 14px;
width: 25px;
@@ -961,7 +988,8 @@
background-size: 25px;
}
.main>.main-left>.nav>.slide>[data-title="Docker"]:before {
.main>.main-left>.nav>.slide>[data-title="Docker"]:before,
.main>.main-left>.nav>.slide>[data-name="docker"]:before {
position: absolute;
right: 14px;
width: 25px;
@@ -971,7 +999,8 @@
background-size: 25px;
}
.main>.main-left>.nav>li>[data-title="iStore"]:before {
.main>.main-left>.nav>li>[data-title="iStore"]:before,
.main>.main-left>.nav>li>[data-name="istore"]:before {
position: absolute;
right: 14px;
width: 25px;
@@ -1057,12 +1086,15 @@
}
.main>.main-left>.nav>li>[data-title="Logout"]::before,
.main>.main-left>.nav>li>[data-title="Log out"]::before {
.main>.main-left>.nav>li>[data-title="Log out"]::before,
.main>.main-left>.nav>li>[data-name="logout"]::before {
position: absolute;
top: 50%;
right: 14px;
width: 25px;
height: 25px;
content: "";
transform: translateY(-50%);
background: url(./icon/logout.svg) no-repeat;
background-size: 25px;
}
@@ -1089,7 +1121,9 @@
.main>.main-left>.nav>.slide>.slide-menu>li,
.main>.main-left>.nav>li>[data-title="Logout"],
.main>.main-left>.nav>li>[data-title="Log out"],
.main>.main-left>.nav>li>[data-title="iStore"] {
.main>.main-left>.nav>li>[data-title="iStore"],
.main>.main-left>.nav>li>[data-name="logout"],
.main>.main-left>.nav>li>[data-name="istore"] {
position: relative;
overflow: hidden;
transform: translate3d(0, 0, 0);
@@ -1099,7 +1133,9 @@
.main>.main-left>.nav>.slide>.slide-menu>li::after,
.main>.main-left>.nav>li>[data-title="Logout"]::after,
.main>.main-left>.nav>li>[data-title="Log out"]::after,
.main>.main-left>.nav>li>[data-title="iStore"]::after {
.main>.main-left>.nav>li>[data-title="iStore"]::after,
.main>.main-left>.nav>li>[data-name="logout"]::after,
.main>.main-left>.nav>li>[data-name="istore"]::after {
position: absolute;
top: 0;
left: 0;
@@ -1120,7 +1156,9 @@
.main>.main-left>.nav>.slide>.slide-menu>li:active::after,
.main>.main-left>.nav>li>[data-title="Logout"]:active::after,
.main>.main-left>.nav>li>[data-title="Log out"]:active::after,
.main>.main-left>.nav>li>[data-title="iStore"]:active::after {
.main>.main-left>.nav>li>[data-title="iStore"]:active::after,
.main>.main-left>.nav>li>[data-name="logout"]:active::after,
.main>.main-left>.nav>li>[data-name="istore"]:active::after {
transition: 0s;
transform: scale(0, 0);
opacity: 0.2;
@@ -1361,6 +1399,15 @@
margin-left: 0.6rem;
}
.btn,
.cbi-button,
[data-page="admin-system-opkg"] div.btn {
display: inline-flex;
align-items: center;
justify-content: center;
line-height: 1.2;
}
.btn:hover,
.btn:focus,
.btn:active,
@@ -2170,6 +2217,7 @@
.ifacebadge {
display: inline-flex;
align-items: center;
background: #ffffff33;
padding: 0.5rem 0.8rem;
border-radius: 10px;
@@ -2178,14 +2226,14 @@
td>.ifacebadge,
.td>.ifacebadge {
font-size: 0.8rem;
background-color: #000000;
background-color: #222235b3;
border-radius: 10px;
}
.ifacebadge>em,
.ifacebadge>img {
display: inline-block;
align-self: flex-start;
align-self: center;
margin: 0 0.2rem;
}
@@ -2213,7 +2261,7 @@
align-items: center;
flex: 1 1 auto;
min-width: 220px;
background-color: #11111d;
background-color: #222235b3;
margin: 0.5em 0.25em 0;
padding: 0.5em;
border-radius: 10px;
@@ -2610,8 +2658,8 @@
}
[data-page="admin-system-opkg"] div.btn {
display: inline;
padding: 0.3rem 0.6rem;
padding: 0.3rem 0.9rem;
min-height: 2.3rem;
}
[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),
@@ -2624,6 +2672,25 @@
margin: 2rem 2rem 1rem;
}
[data-page="admin-system-opkg"] #packages {
border-radius: 14px;
overflow: hidden;
background-color: rgba(16, 28, 45, 0.58);
-webkit-backdrop-filter: blur(8px);
backdrop-filter: blur(8px);
}
[data-page="admin-system-opkg"] #packages>.tr>.td,
[data-page="admin-system-opkg"] #packages tbody tr>td {
background-color: rgba(34, 34, 53, 0.46);
border-top: thin solid rgba(255, 255, 255, 0.08);
}
[data-page="admin-system-opkg"] #packages>.tr.table-titles>.th,
[data-page="admin-system-opkg"] #packages thead tr>th {
background-color: rgba(12, 22, 38, 0.82);
}
.td.version,
.td.size {
white-space: normal !important;
@@ -3101,7 +3168,7 @@
}
}
@media screen and (max-width: 2000000000px) {
@media screen and (max-width: 2000px) {
header {
height: 3.5rem;
}
@@ -3162,8 +3229,10 @@
.main>.main-left>.nav>li a,
.main>.main-left>.nav>.slide>.menu,
.main>.main-left>.nav>li>[data-title="Logout"],
.main>.main-left>.nav>li>[data-title="Logout"],
.main>.main-left>.nav>li>[data-title="iStore"] {
.main>.main-left>.nav>li>[data-title="Log out"],
.main>.main-left>.nav>li>[data-title="iStore"],
.main>.main-left>.nav>li>[data-name="logout"],
.main>.main-left>.nav>li>[data-name="istore"] {
font-size: 1rem;
color: #fff;
}
@@ -3447,7 +3516,9 @@
.main>.main-left>.nav>.slide>.menu,
.main>.main-left>.nav>li>[data-title="Logout"],
.main>.main-left>.nav>li>[data-title="Log out"],
.main>.main-left>.nav>li>[data-title="iStore"] {
.main>.main-left>.nav>li>[data-title="iStore"],
.main>.main-left>.nav>li>[data-name="logout"],
.main>.main-left>.nav>li>[data-name="istore"] {
font-size: 1.1rem;
}
@@ -3596,7 +3667,7 @@
.main>.main-left>.nav>.slide>.slide-menu>li>a,
.tr[data-title]::before,
.tr.cbi-section-table-titles.named::before {
font-size:
font-size: 0.8rem;
}
.cbi-value-title,
+1 -1
View File
@@ -50,4 +50,4 @@ config navbar
option line '6'
option newtab 'No'
option icon '/www/luci-static/alpha/gaya/icon/navbar/network.png'
option address '/cgi-bin/luci/admin/network/network'
option address '/cgi-bin/luci/admin/network/network'
+2 -2
View File
@@ -24,7 +24,7 @@
end) -- Check navbar enable status local navbar_enabled=config.navbar=="1" -- Calculate number
of enabled navbar links local num_links=0 uci:foreach("alpha", "navbar" , function(section) if
section.enable=="Enable" then num_links=num_links + 1 end end) -- Calculate link width for
responsive design local link_width=string.format("calc(100%% / %d)", num_links) -- Retrieve
responsive design local link_width=string.format("calc(100%% / %d)", num_links > 0 and num_links or 1) -- Retrieve
theme properties local background_color=config.color or '#2222359a' local
blur_value=tonumber(config.blur) or 20 local link_blur=string.format("blur(%dpx)", blur_value)
%>
@@ -65,7 +65,7 @@
</div>
<footer class="mobile">
<a href="https://github.com/derisamedia/luci-theme-alpha">
<%=ver.luciname%> | Alpha OS Theme v3.9.7
<%=ver.luciname%> | Alpha OS Theme v3.9.7-r2
</a>
</footer>
</div>
+1 -1
View File
@@ -26,7 +26,7 @@
}
});
let link_width = `calc(100% / ${num_links})`;
let link_width = `calc(100% / ${num_links > 0 ? num_links : 1})`;
let background_color = config.color || '#2222359a';
let blur_value = config.blur || 20;
let link_blur = `blur(${blur_value}px)`;
+1 -1
View File
@@ -69,7 +69,7 @@
</a>
<div class="status" id="indicators"></div>
<div class="logout">
<a href="/cgi-bin/luci/admin/logout" data-title="Logout">Keluar</a>
<a href="/cgi-bin/luci/admin/logout" data-title="Logout"><%:Logout%></a>
</div>
<div class="showSide">
<img src="<%=media%>/gaya/icon/menu_icon.svg" alt="">
+1 -1
View File
@@ -46,7 +46,7 @@
</a>
<div class="status" id="indicators"></div>
<div class="logout" >
<a href="/cgi-bin/luci/admin/logout" data-title="Logout">Keluar</a>
<a href="/cgi-bin/luci/admin/logout" data-title="Logout">{{ _('Logout') }}</a>
</div>
<div class="showSide">
<img src="{{ media }}/gaya/icon/menu_icon.svg" alt="">