mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-09-13 03:45:11 +08:00
🎉 Sync 2026-08-28 21:44:02
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
Screenshots
|
||||
.DS_Store
|
||||
@@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -7,17 +7,11 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=Argon Theme
|
||||
LUCI_DEPENDS:=+wget-any +jsonfilter
|
||||
LUCI_DEPENDS:=+USE_APK:wget-any +!USE_APK:wget +jsonfilter
|
||||
PKG_VERSION:=2.4.7
|
||||
PKG_RELEASE:=4
|
||||
|
||||
PKG_VERSION:=2.4.3
|
||||
PKG_RELEASE:=3
|
||||
|
||||
LUCI_MINIFY_CSS:=0
|
||||
|
||||
define Package/luci-theme-argon/conffiles
|
||||
/etc/config/argon
|
||||
/www/luci-static/argon/background/
|
||||
endef
|
||||
CONFIG_LUCI_CSSTIDY:=
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
|
||||
@@ -0,0 +1,128 @@
|
||||
<!-- markdownlint-configure-file {
|
||||
"MD013": {
|
||||
"code_blocks": false,
|
||||
"tables": false,
|
||||
"line_length":200
|
||||
},
|
||||
"MD033": false,
|
||||
"MD041": false
|
||||
} -->
|
||||
|
||||
[license]: /LICENSE
|
||||
[license-badge]: https://img.shields.io/github/license/jerrykuku/luci-theme-argon?style=flat-square&a=1
|
||||
[prs]: https://github.com/jerrykuku/luci-theme-argon/pulls
|
||||
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square
|
||||
[issues]: https://github.com/jerrykuku/luci-theme-argon/issues/new
|
||||
[issues-badge]: https://img.shields.io/badge/Issues-welcome-brightgreen.svg?style=flat-square
|
||||
[release]: https://github.com/jerrykuku/luci-theme-argon/releases
|
||||
[release-badge]: https://img.shields.io/github/v/release/jerrykuku/luci-theme-argon?style=flat-square
|
||||
[download]: https://github.com/jerrykuku/luci-theme-argon/releases
|
||||
[download-badge]: https://img.shields.io/github/downloads/jerrykuku/luci-theme-argon/total?style=flat-square
|
||||
[contact]: https://t.me/jerryk6
|
||||
[contact-badge]: https://img.shields.io/badge/Contact-telegram-blue?style=flat-square
|
||||
[en-us-link]: /README.md
|
||||
[zh-cn-link]: /README_ZH.md
|
||||
[en-us-release-log]: /RELEASE.md
|
||||
[zh-cn-release-log]: /RELEASE_ZH.md
|
||||
[config-link]: https://github.com/jerrykuku/luci-app-argon-config/releases
|
||||
[official]: https://github.com/openwrt/openwrt
|
||||
[immortalwrt]: https://github.com/immortalwrt/immortalwrt
|
||||
|
||||
<div align="center">
|
||||
<img src="https://raw.githubusercontent.com/jerrykuku/staff/master/argon_title4.svg">
|
||||
|
||||
# A brand new OpenWrt LuCI theme
|
||||
|
||||
Argon is **a clean and tidy OpenWrt LuCI theme** that allows<br/>
|
||||
users to customize their login interface with images or videos.
|
||||
It also supports automatic and manual switching between light and dark modes.
|
||||
|
||||
[![license][license-badge]][license]
|
||||
[![prs][prs-badge]][prs]
|
||||
[![issues][issues-badge]][issues]
|
||||
[![release][release-badge]][release]
|
||||
[![download][download-badge]][download]
|
||||
[![contact][contact-badge]][contact]
|
||||
|
||||
**English** |
|
||||
[简体中文][zh-cn-link]
|
||||
|
||||
[Key Features](#key-features) •
|
||||
[Compatibility](#compatibility) •
|
||||
[Version History](#version-history) •
|
||||
[Getting started](#getting-started) •
|
||||
[Screenshots](#screenshots) •
|
||||
[Contributors](#contributors) •
|
||||
[Credits](#credits)
|
||||
|
||||
<img src="https://raw.githubusercontent.com/jerrykuku/staff/master/argon2.gif">
|
||||
</div>
|
||||
|
||||
## Key Features
|
||||
|
||||
- Clean and modern Argon-style interface design.
|
||||
- Fully adapted for both desktop and mobile displays.
|
||||
- Supports automatic or manual switching between light and dark modes.
|
||||
- Supports custom theme colors, along with adjustable blur and transparency effects.
|
||||
- The login page supports local images, videos, and online wallpapers as backgrounds.
|
||||
- Works with [luci-app-argon-config][config-link] for a more complete theme configuration experience.
|
||||
|
||||
## Compatibility
|
||||
|
||||
Only the `master` branch is maintained now.
|
||||
Support is focused on modern LuCI environments based on [Official OpenWrt][official] and [ImmortalWrt][immortalwrt].
|
||||
|
||||
## Version History
|
||||
|
||||
The latest version is v2.4.7 [Click here][en-us-release-log] to view the full version history record.
|
||||
|
||||
## Getting started
|
||||
|
||||
### Build from source
|
||||
|
||||
```bash
|
||||
cd openwrt/package
|
||||
git clone https://github.com/jerrykuku/luci-theme-argon.git
|
||||
make menuconfig #choose LUCI->Theme->Luci-theme-argon
|
||||
make -j1 V=s
|
||||
```
|
||||
|
||||
### Install release packages (`ipk`)
|
||||
|
||||
```bash
|
||||
wget https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.4.7/luci-theme-argon_2.4.7-1_all.ipk
|
||||
wget https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.4.7/luci-app-argon-config_2.4.7-1_all.ipk
|
||||
opkg install ./luci-theme-argon_2.4.7-1_all.ipk ./luci-app-argon-config_2.4.7-1_all.ipk
|
||||
```
|
||||
|
||||
### Install release packages (`apk`)
|
||||
|
||||
```bash
|
||||
wget https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.4.7/luci-theme-argon-2.4.7-r1.apk
|
||||
wget https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.4.7/luci-app-argon-config-2.4.7-r1.apk
|
||||
apk add --allow-untrusted ./luci-theme-argon-2.4.7-r1.apk ./luci-app-argon-config-2.4.7-r1.apk
|
||||
```
|
||||
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||

|
||||
|
||||
## Contributors
|
||||
|
||||
<a href="https://github.com/jerrykuku/luci-theme-argon/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=jerrykuku/luci-theme-argon&v=2" />
|
||||
</a>
|
||||
|
||||
Made with [contrib.rocks](https://contrib.rocks).
|
||||
|
||||
## Related Projects
|
||||
|
||||
- [luci-app-argon-config](https://github.com/jerrykuku/luci-app-argon-config): Configuration plugin for the Argon theme
|
||||
- [openwrt-package](https://github.com/jerrykuku/openwrt-package): My OpenWrt package collection
|
||||
- [CasaOS](https://github.com/IceWhaleTech/CasaOS): A simple, elegant open-source personal cloud system and my current primary project
|
||||
|
||||
## Credits
|
||||
|
||||
[luci-theme-material](https://github.com/LuttyYang/luci-theme-material/)
|
||||
@@ -0,0 +1,128 @@
|
||||
<!-- markdownlint-configure-file {
|
||||
"MD013": {
|
||||
"code_blocks": false,
|
||||
"tables": false,
|
||||
"line_length":200
|
||||
},
|
||||
"MD033": false,
|
||||
"MD041": false
|
||||
} -->
|
||||
|
||||
[license]: /LICENSE
|
||||
[license-badge]: https://img.shields.io/github/license/jerrykuku/luci-theme-argon?style=flat-square&a=1
|
||||
[prs]: https://github.com/jerrykuku/luci-theme-argon/pulls
|
||||
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square
|
||||
[issues]: https://github.com/jerrykuku/luci-theme-argon/issues/new
|
||||
[issues-badge]: https://img.shields.io/badge/Issues-welcome-brightgreen.svg?style=flat-square
|
||||
[release]: https://github.com/jerrykuku/luci-theme-argon/releases
|
||||
[release-badge]: https://img.shields.io/github/v/release/jerrykuku/luci-theme-argon?style=flat-square
|
||||
[download]: https://github.com/jerrykuku/luci-theme-argon/releases
|
||||
[download-badge]: https://img.shields.io/github/downloads/jerrykuku/luci-theme-argon/total?style=flat-square
|
||||
[contact]: https://t.me/jerryk6
|
||||
[contact-badge]: https://img.shields.io/badge/Contact-telegram-blue?style=flat-square
|
||||
[en-us-link]: /README.md
|
||||
[zh-cn-link]: /README_ZH.md
|
||||
[en-us-release-log]: /RELEASE.md
|
||||
[zh-cn-release-log]: /RELEASE_ZH.md
|
||||
[config-link]: https://github.com/jerrykuku/luci-app-argon-config/releases
|
||||
[official]: https://github.com/openwrt/openwrt
|
||||
[immortalwrt]: https://github.com/immortalwrt/immortalwrt
|
||||
|
||||
<div align="center">
|
||||
<img src="https://raw.githubusercontent.com/jerrykuku/staff/master/argon_title4.svg">
|
||||
|
||||
# 一个全新的 OpenWrt 主题
|
||||
|
||||
Argon 是**一款干净整洁的 OpenWrt LuCI 主题**,
|
||||
允许用户使用图片或视频自定义其登录界面。
|
||||
它还支持在浅色模式和深色模式之间自动或手动切换。
|
||||
|
||||
[![license][license-badge]][license]
|
||||
[![prs][prs-badge]][prs]
|
||||
[![issues][issues-badge]][issues]
|
||||
[![release][release-badge]][release]
|
||||
[![download][download-badge]][download]
|
||||
[![contact][contact-badge]][contact]
|
||||
|
||||
[English][en-us-link] |
|
||||
**简体中文**
|
||||
|
||||
[特色](#特色) •
|
||||
[兼容性](#兼容性) •
|
||||
[版本历史](#版本历史) •
|
||||
[快速开始](#快速开始) •
|
||||
[屏幕截图](#屏幕截图) •
|
||||
[贡献者](#贡献者) •
|
||||
[鸣谢](#鸣谢)
|
||||
|
||||
<img src="https://raw.githubusercontent.com/jerrykuku/staff/master/argon2.gif">
|
||||
</div>
|
||||
|
||||
## 特色
|
||||
|
||||
- 简洁清爽的 Argon 风格界面设计。
|
||||
- 完整适配桌面端与移动端显示。
|
||||
- 支持浅色 / 深色模式自动或手动切换。
|
||||
- 支持自定义主题主色,以及毛玻璃的模糊与透明度。
|
||||
- 登录页支持本地图片、视频和在线壁纸背景。
|
||||
- 可搭配 [luci-app-argon-config][config-link] 实现更完整的主题设置体验。
|
||||
|
||||
## 兼容性
|
||||
|
||||
目前仅维护 `master` 分支。
|
||||
当前主要面向 [官方 OpenWrt][official] 和 [ImmortalWrt][immortalwrt] 的较新版本 LuCI 环境。
|
||||
|
||||
## 版本历史
|
||||
|
||||
当前最新的版本为 v2.4.7 [点击这里][zh-cn-release-log]查看完整的版本历史日志.
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 从源码编译
|
||||
|
||||
```bash
|
||||
cd openwrt/package
|
||||
git clone https://github.com/jerrykuku/luci-theme-argon.git
|
||||
make menuconfig #choose LUCI->Theme->Luci-theme-argon
|
||||
make -j1 V=s
|
||||
```
|
||||
|
||||
### 安装 release 包 (`ipk`)
|
||||
|
||||
```bash
|
||||
wget https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.4.7/luci-theme-argon_2.4.7-1_all.ipk
|
||||
wget https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.4.7/luci-app-argon-config_2.4.7-1_all.ipk
|
||||
opkg install ./luci-theme-argon_2.4.7-1_all.ipk ./luci-app-argon-config_2.4.7-1_all.ipk
|
||||
```
|
||||
|
||||
### 安装 release 包 (`apk`)
|
||||
|
||||
```bash
|
||||
wget https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.4.7/luci-theme-argon-2.4.7-r1.apk
|
||||
wget https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.4.7/luci-app-argon-config-2.4.7-r1.apk
|
||||
apk add --allow-untrusted ./luci-theme-argon-2.4.7-r1.apk ./luci-app-argon-config-2.4.7-r1.apk
|
||||
```
|
||||
|
||||
|
||||
## 屏幕截图
|
||||
|
||||

|
||||

|
||||
|
||||
## 贡献者
|
||||
|
||||
<a href="https://github.com/jerrykuku/luci-theme-argon/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=jerrykuku/luci-theme-argon" />
|
||||
</a>
|
||||
|
||||
Made with [contrib.rocks](https://contrib.rocks).
|
||||
|
||||
## 相关项目
|
||||
|
||||
- [luci-app-argon-config](https://github.com/jerrykuku/luci-app-argon-config): Argon 主题设置插件
|
||||
- [openwrt-package](https://github.com/jerrykuku/openwrt-package): 我的 OpenWrt 软件包集合
|
||||
- [CasaOS](https://github.com/IceWhaleTech/CasaOS): 一个简单、易用且优雅的开源个人云系统,也是我目前主要投入的项目
|
||||
|
||||
## 鸣谢
|
||||
|
||||
[luci-theme-material](https://github.com/LuttyYang/luci-theme-material/)
|
||||
@@ -0,0 +1,161 @@
|
||||
# Update log for master branch
|
||||
|
||||
## v2.4.7 [ 2026.08.24 ]
|
||||
|
||||
### What's Changed
|
||||
* fix(openclash): correct form spacing and custom table styles by @Aethersailor in https://github.com/jerrykuku/luci-theme-argon/pull/698
|
||||
* fixed: Issue where browser tabs were displayed incorrectly. by @smallprogram in https://github.com/jerrykuku/luci-theme-argon/pull/700
|
||||
* refactor(openclash): unify Argon theme integration by @Aethersailor in https://github.com/jerrykuku/luci-theme-argon/pull/702
|
||||
|
||||
### New Contributors
|
||||
* @smallprogram made their first contribution in https://github.com/jerrykuku/luci-theme-argon/pull/700
|
||||
|
||||
**Full Changelog**: https://github.com/jerrykuku/luci-theme-argon/compare/v2.4.6...v2.4.7
|
||||
## v2.4.6 [ 2026.07.31 ]
|
||||
|
||||
### What's Changed
|
||||
* 修改警告提示对比度弱、系统设置按钮组间距,新增新版隐藏按钮样式 by @sydnkj in https://github.com/jerrykuku/luci-theme-argon/pull/688
|
||||
* fix(openclash): normalize config switcher tab height by @Aethersailor in https://github.com/jerrykuku/luci-theme-argon/pull/689
|
||||
* fix(pr) 修复#688,仅修改了编译产物,没有修改less源代码的问题 by @sydnkj in https://github.com/jerrykuku/luci-theme-argon/pull/692
|
||||
* fix(issues) 解决#691提到的暗黑主题白色线问题 by @sydnkj in https://github.com/jerrykuku/luci-theme-argon/pull/693
|
||||
|
||||
|
||||
**Full Changelog**: https://github.com/jerrykuku/luci-theme-argon/compare/v2.4.5...v2.4.6
|
||||
## v2.4.5 [ 2026.07.18 ]
|
||||
|
||||
### What's Changed
|
||||
* 修复输入框显示不全 by @Rain-Maple in https://github.com/jerrykuku/luci-theme-argon/pull/684
|
||||
* fix(apk): avoid replacing uclient-fetch with wget-nossl by @jelipo in https://github.com/jerrykuku/luci-theme-argon/pull/685
|
||||
* fix(openclash): align CBI zebra row spacing by @Aethersailor in https://github.com/jerrykuku/luci-theme-argon/pull/686
|
||||
|
||||
### New Contributors
|
||||
* @Rain-Maple made their first contribution in https://github.com/jerrykuku/luci-theme-argon/pull/684
|
||||
* @jelipo made their first contribution in https://github.com/jerrykuku/luci-theme-argon/pull/685
|
||||
* @Aethersailor made their first contribution in https://github.com/jerrykuku/luci-theme-argon/pull/686
|
||||
|
||||
**Full Changelog**: https://github.com/jerrykuku/luci-theme-argon/compare/v2.4.4...v2.4.5
|
||||
## v2.4.4 [ 2026.07.16 ]
|
||||
|
||||
### What's Changed
|
||||
* Dynlist indicate drop target by @jjm2473 in https://github.com/jerrykuku/luci-theme-argon/pull/590
|
||||
* feat(online_wallpaper): get rid of curl by @1715173329 in https://github.com/jerrykuku/luci-theme-argon/pull/603
|
||||
* chore(template): rewrite into ucode by @msylgj in https://github.com/jerrykuku/luci-theme-argon/pull/602
|
||||
* fix some css style error by @msylgj in https://github.com/jerrykuku/luci-theme-argon/pull/607
|
||||
* WIP: fix(css): fix some css issues by @msylgj in https://github.com/jerrykuku/luci-theme-argon/pull/617
|
||||
* 修复luci-app-poweroffdevice、admin-system-reboot的按钮宽度问题,修复首页/状态页的 Hide、Show 按钮 by @yhl452493373 in https://github.com/jerrykuku/luci-theme-argon/pull/622
|
||||
* 修复两处样式异常 by @guowenju in https://github.com/jerrykuku/luci-theme-argon/pull/632
|
||||
* Wallhaven.cc loading fix by @AcidSlide in https://github.com/jerrykuku/luci-theme-argon/pull/634
|
||||
* MWAN3 specific only - css fix by @AcidSlide in https://github.com/jerrykuku/luci-theme-argon/pull/633
|
||||
* 优化openclash的公告栏边距 by @yhl452493373 in https://github.com/jerrykuku/luci-theme-argon/pull/637
|
||||
* fix(nlbw): 修复`带宽监控`页面选择器并优化按钮布局 by @guowenju in https://github.com/jerrykuku/luci-theme-argon/pull/649
|
||||
* fix: smartdns: fix padding loss in layout style by @sydnkj in https://github.com/jerrykuku/luci-theme-argon/pull/650
|
||||
* luci-static/menu-argon: add missing ModeMenu handling by @feckert in https://github.com/jerrykuku/luci-theme-argon/pull/651
|
||||
* fix(nftables): 修复`检测到旧版规则` `alert-message` 弹窗点击关闭按钮无效的问题 by @guowenju in https://github.com/jerrykuku/luci-theme-argon/pull/652
|
||||
* 修复某些弹窗loading图标位置问题 by @yhl452493373 in https://github.com/jerrykuku/luci-theme-argon/pull/659
|
||||
* Comment out X-Frame-Options meta tag by @yws112358 in https://github.com/jerrykuku/luci-theme-argon/pull/663
|
||||
* 修复在最新openwrt上的一些问题 by @yhl452493373 in https://github.com/jerrykuku/luci-theme-argon/pull/666
|
||||
* 修复OpenWrt 25.12主页样式异常 by @guowenju in https://github.com/jerrykuku/luci-theme-argon/pull/658
|
||||
* 修复一些发现的问题 by @yhl452493373 in https://github.com/jerrykuku/luci-theme-argon/pull/668
|
||||
* Fix Safari rendering issues on login and LuCI pages by @Nonosword in https://github.com/jerrykuku/luci-theme-argon/pull/670
|
||||
* Update LUCI_DEPENDS to use wget-any by @1-1-2 in https://github.com/jerrykuku/luci-theme-argon/pull/671
|
||||
* Revert "Update LUCI_DEPENDS to use wget-any" by @jerrykuku in https://github.com/jerrykuku/luci-theme-argon/pull/673
|
||||
* 修复主页(dashboard)DHCP设备表格布局异常 by @guowenju in https://github.com/jerrykuku/luci-theme-argon/pull/674
|
||||
* fix(css): remove transform on tooltip by @ckorber in https://github.com/jerrykuku/luci-theme-argon/pull/678
|
||||
|
||||
### New Contributors
|
||||
* @1715173329 made their first contribution in https://github.com/jerrykuku/luci-theme-argon/pull/603
|
||||
* @guowenju made their first contribution in https://github.com/jerrykuku/luci-theme-argon/pull/632
|
||||
* @sydnkj made their first contribution in https://github.com/jerrykuku/luci-theme-argon/pull/650
|
||||
* @feckert made their first contribution in https://github.com/jerrykuku/luci-theme-argon/pull/651
|
||||
* @yws112358 made their first contribution in https://github.com/jerrykuku/luci-theme-argon/pull/663
|
||||
* @Nonosword made their first contribution in https://github.com/jerrykuku/luci-theme-argon/pull/670
|
||||
* @1-1-2 made their first contribution in https://github.com/jerrykuku/luci-theme-argon/pull/671
|
||||
* @ckorber made their first contribution in https://github.com/jerrykuku/luci-theme-argon/pull/678
|
||||
|
||||
**Full Changelog**: https://github.com/jerrykuku/luci-theme-argon/compare/v2.4.3...v2.4.4
|
||||
## v2.4.3 [ 2025.07.22 ]
|
||||
|
||||
- **Refactor**: Remove jQuery dependency, fully replace with vanilla JavaScript
|
||||
- **Modernize**: Upgrade HTML meta tags for better security and compatibility
|
||||
- **Security**: Add security-related HTTP headers (CSP, XSS protection, clickjacking protection, etc.)
|
||||
- **Font System**: Modernize font system with Google Sans font support
|
||||
- **Font Optimization**: Replace legacy font formats (eot/svg/ttf) with woff2 for better performance
|
||||
- **CSS Upgrade**: Upgrade Pure CSS to v3.0.0
|
||||
- **Menu Enhancement**: Improve menu animations, remove jQuery dependency and sync animation timing
|
||||
- **Style Improvement**: Add dockerman related style support
|
||||
- **Mobile Optimization**: Optimize mobile and PWA related meta tag configurations
|
||||
- **Icon Organization**: Reorganize website icon links following modern standards
|
||||
- **Accessibility**: Improve web accessibility by allowing user scaling
|
||||
- **Code Structure**: Optimize code structure with logical grouping comments
|
||||
|
||||
## v2.3.1 [ 2023.04.20 ]
|
||||
|
||||
- Fixed the issue where the dropdown menu was being clipped.
|
||||
- Fixed the problem where the exit icon was replaced with the app store icon.
|
||||
- Fixed the issue where some colors were out of control in dark mode.
|
||||
- Fixed the problem where the local startup script textarea could not be scrolled in the startup item.
|
||||
- Fixed the problem where the Passwall node list button was misaligned.
|
||||
- Fixed the text overflow problem in dynlist
|
||||
- Support wallpaper from Unsplashargon
|
||||
- Fix menu style mis-match on macOS+Chrome
|
||||
- Fixed the issue of the login page icon becoming larger
|
||||
- Support wallpaper from wallhaven
|
||||
> open footer links in new tab
|
||||
- Remake theme icon
|
||||
|
||||
## v2.3 [ 2023.04.03 ]
|
||||
|
||||
- Updated the style of Loading.
|
||||
- Fixed a large number of CSS style errors and made the overall more uniform.
|
||||
- Fixed the problem of uncontrolled individual colors in dark mode.
|
||||
|
||||
## v2.2.9
|
||||
|
||||
- Unify the settings of css spacing
|
||||
- Refactored the code of the login page
|
||||
- Fix the problem that the Minify Css option is turned on when compiling, which causes the
|
||||
- Fix the problem that the menu could not pop up in mobile mode
|
||||
- Unify the settings of css spacing
|
||||
- Refactored the code of the login page
|
||||
|
||||
## v2.2.8
|
||||
|
||||
- Fix the problem that the Minify Css option is turned on when compiling, which causes the frosted glass effect to be invalid and the logo font is lost.
|
||||
|
||||
## v2.2.5
|
||||
|
||||
- New config app for argon theme. You can set the blur and transparency of the login page of argon theme, and manage the background pictures and videos.[Chrome is recommended] [Download](https://github.com/jerrykuku/luci-app-argon-config/releases/download/v0.8-beta/luci-app-argon-config_0.8-beta_all.ipk)
|
||||
- Automatically set as the default theme when compiling.
|
||||
- Modify the file structure to adapt to luci-app-argon-config. The old method of turning on dark mode is no longer applicable, please use it with luci-app-argon-config.
|
||||
- Adapt to Koolshare lede 2.3.6。
|
||||
- Fix some Bug。
|
||||
|
||||
## v2.2.4
|
||||
|
||||
- Fix the problem that the login background cannot be displayed on some phones.
|
||||
- Remove the dependency of luasocket.
|
||||
|
||||
## v2.2.3
|
||||
|
||||
- Fix Firmware flash page display error in dark mode.
|
||||
- Update font icon, add a default icon of undefined menu.
|
||||
|
||||
## v2.2.2
|
||||
|
||||
- Add custom login background,put your image (allow png jpg gif) or MP4 video into /www/luci-static/argon/background, random change.
|
||||
- Add force dark mode, login ssh and type "touch /etc/dark" to open dark mode.
|
||||
- Add a volume mute button for video background, default is muted.
|
||||
- fix login page when keyboard show the bottom text overlay the button on mobile.
|
||||
- fix select color in dark mode,and add a style for scrollbar.
|
||||
- jquery update to v3.5.1.
|
||||
- change request bing api method form wget to luasocket (DEPENDS).
|
||||
|
||||
## v2.2.1
|
||||
|
||||
- Add blur effect for login form.
|
||||
- New login theme, Request background imge from bing.com, Auto change everyday.
|
||||
- New theme icon.
|
||||
- Add more menu category icon.
|
||||
- Fix font-size and padding margin.
|
||||
- Restructure css file.
|
||||
- Auto adapt to dark mode.
|
||||
@@ -0,0 +1,102 @@
|
||||
# Master 分支的更新日志
|
||||
|
||||
## v2.4.7 [ 2026.08.24 ]
|
||||
|
||||
- GitHub Release: https://github.com/jerrykuku/luci-theme-argon/releases/tag/v2.4.7
|
||||
- 详细更新内容请以 Release 页面为准。
|
||||
## v2.4.6 [ 2026.07.31 ]
|
||||
|
||||
- GitHub Release: https://github.com/jerrykuku/luci-theme-argon/releases/tag/v2.4.6
|
||||
- 详细更新内容请以 Release 页面为准。
|
||||
## v2.4.5 [ 2026.07.18 ]
|
||||
|
||||
- GitHub Release: https://github.com/jerrykuku/luci-theme-argon/releases/tag/v2.4.5
|
||||
- 详细更新内容请以 Release 页面为准。
|
||||
## v2.4.4 [ 2026.07.16 ]
|
||||
|
||||
- GitHub Release: https://github.com/jerrykuku/luci-theme-argon/releases/tag/v2.4.4
|
||||
- 详细更新内容请以 Release 页面为准。
|
||||
## v2.4.3 [ 2025.07.22 ]
|
||||
|
||||
- **重构**: 移除了对 jQuery 库的依赖,全面使用原生 JavaScript 替代
|
||||
- **现代化**: 升级 HTML meta 标签,提升网页安全性和兼容性
|
||||
- **安全增强**: 添加安全相关的 HTTP 头信息(CSP、XSS 防护、点击劫持防护等)
|
||||
- **字体系统**: 现代化字体系统,新增 Google Sans 字体支持
|
||||
- **字体优化**: 替换过时的字体格式(eot/svg/ttf)为 woff2,提升加载性能
|
||||
- **CSS升级**: Pure CSS 升级到 v3.0.0 版本
|
||||
- **菜单优化**: 改进菜单动画,移除 jQuery 依赖并同步动画时序
|
||||
- **样式改进**: 新增 dockerman 相关样式支持
|
||||
- **移动端优化**: 优化移动端和 PWA 相关的 meta 标签配置
|
||||
- **图标整理**: 重新整理网站图标链接,按现代标准排序
|
||||
- **无障碍性**: 改善网页无障碍性,允许用户缩放页面
|
||||
- **代码结构**: 优化代码结构,添加逻辑分组注释
|
||||
|
||||
## v2.3.1 [ 2023.04.20 ]
|
||||
|
||||
- 修复了下拉菜单被裁切的问题
|
||||
- 修复了退出图标变成了应用商店图标的问题
|
||||
- 修复了暗色模式下个别颜色不受控制的问题
|
||||
- 修复了启动项--本地启动脚本文本框不能滑动的问题
|
||||
- 修复了Passwall节点列表按钮错位的问题
|
||||
- 修复在dynlist中的文本溢出问题
|
||||
- 登录页面 支持自来 Unsplash 的在线壁纸
|
||||
- 修复在macOS的Chrome中,菜单的style异常
|
||||
- 修复在登录页面中,主题图标变大的问题
|
||||
- 登录页面 支持自来 wallhaven 的在线壁纸
|
||||
> 打开页脚链接时使用新标签页
|
||||
- 重制主题图标
|
||||
|
||||
## v2.3 [ 2023.04.03 ]
|
||||
|
||||
- 更新了 Loading 的样式
|
||||
- 修复了大量的 CSS 样式错误,整体更加统一
|
||||
- 修复了暗色模式下个别颜色不受控制的问题
|
||||
|
||||
## v2.2.9
|
||||
|
||||
- 修复了在手机模式下无法弹出菜单的 bug
|
||||
- 统一 css 间距的设置
|
||||
- 重构了登录页面的代码
|
||||
- 为导航菜单添加滑动效果
|
||||
|
||||
## v2.2.8
|
||||
|
||||
- 【v2.2.8】修复编译时打开 Minify Css 选项,导致磨砂玻璃效果无效,logo 字体丢失的问题
|
||||
|
||||
## v2.2.5
|
||||
|
||||
- 全新的设置 app.你可以设置 argon 主题的登录页面的模糊和透明度,并管理背景图片与视频。[建议使用 Chrome][点击下载](https://github.com/jerrykuku/luci-app-argon-config/releases/download/v0.8-beta/luci-app-argon-config_0.8-beta_all.ipk)
|
||||
- 当编译固件时,将自动设置为默认主题。
|
||||
- 修改文件结构,以适应 luci-app-argon-config,旧的开启暗色模式方法将不再适用,请搭配 luci-app-argon-config 使用。
|
||||
- 适配 Koolshare lede 2.3.6。
|
||||
- 修复了一些 Bug。
|
||||
|
||||
## v2.2.4
|
||||
|
||||
- 修复了在某些手机下图片背景第一次加载不能显示的问题。
|
||||
- 取消 luasocket 的依赖,无需再担心依赖问题。
|
||||
|
||||
## v2.2.3
|
||||
|
||||
- 修正了在暗色模式下,固件刷写弹窗内的显示错误。
|
||||
- 更新了图标库,为未定义的菜单增加了一个默认的图标。
|
||||
|
||||
## v2.2.2
|
||||
|
||||
- 背景文件策略调整为,同时接受 jpg png gif mp4, 自行上传文件至 /www/luci-static/argon/background 图片和视频同时随机。
|
||||
- 增加强制暗色模式,进入 ssh 输入 "touch /etc/dark" 进行开启。
|
||||
- 视频背景加了一个音量开关,喜欢带声音的可以自行点击开启,默认为静音模式。
|
||||
- 修复了手机模式下,登录页面出现键盘时,文字覆盖按钮的问题。
|
||||
- 修正了暗黑模式下下拉选项的背景颜色,同时修改了滚动条的样式。
|
||||
- jquery 更新到 v3.5.1。
|
||||
- 获取 Bing Api 的方法从 wget 更新到 luasocket 并添加依赖。
|
||||
|
||||
## v2.2.1
|
||||
|
||||
- 登录背景添加毛玻璃效果。
|
||||
- 全新的登录界面,图片背景跟随 Bing.com,每天自动切换。
|
||||
- 全新的主题 icon。
|
||||
- 增加多个导航 icon。
|
||||
- 细致的微调了 字号大小边距等等。
|
||||
- 重构了 css 文件。
|
||||
- 自动适应的暗黑模式。
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
|
Before Width: | Height: | Size: 3.5 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.9 KiB |
@@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.7 KiB |
@@ -1,41 +1,11 @@
|
||||
{
|
||||
"name": "Openwrt",
|
||||
"display": "standalone",
|
||||
"icons": [
|
||||
{
|
||||
"src": "\/android-icon-36x36.png",
|
||||
"sizes": "36x36",
|
||||
"type": "image\/png",
|
||||
"density": "0.75"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image\/png",
|
||||
"density": "1.0"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image\/png",
|
||||
"density": "1.5"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image\/png",
|
||||
"density": "2.0"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image\/png",
|
||||
"density": "3.0"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-192x192.png",
|
||||
"src": "android-icon-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image\/png",
|
||||
"density": "4.0"
|
||||
"type": "image/png"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 6.4 KiB |
@@ -40,7 +40,6 @@
|
||||
--gray-dark: #32325d;
|
||||
--light: #ced4da;
|
||||
--lighter: #e9ecef;
|
||||
|
||||
--success: #2dce89;
|
||||
--info: #11cdef;
|
||||
--warning: #fb6340;
|
||||
@@ -234,6 +233,7 @@ select[multiple="multiple"] {
|
||||
|
||||
&.error {
|
||||
background-color: var(--warning);
|
||||
color: var(--yellow);
|
||||
}
|
||||
|
||||
h4 {
|
||||
@@ -275,6 +275,31 @@ select[multiple="multiple"] {
|
||||
padding: .3rem .6rem;
|
||||
}
|
||||
|
||||
/* LuCI's ui.js dismisses notification banners by adding the .fade-out
|
||||
class and removing the banner node once a transitionend event fires
|
||||
on it. Without a transitioned opacity on .alert-message the Dismiss
|
||||
button has no visible effect and the banner stays open forever. */
|
||||
.alert-message {
|
||||
transition: opacity .4s ease;
|
||||
|
||||
&.fade-out {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
&.fade-in {
|
||||
animation: alert-message-fade-in .4s ease;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes alert-message-fade-in {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
#maincontent > .alert-message {
|
||||
position: fixed;
|
||||
transform: translate(-50%, -50%);
|
||||
@@ -486,6 +511,17 @@ body:not([data-page="admin-dashboard"]) {
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body:not([data-page="admin-dashboard"]) {
|
||||
tr>td,
|
||||
tr>th,
|
||||
.tr>.td,
|
||||
.tr>.th {
|
||||
border-top: thin solid #444 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#cbi-wireless .td,
|
||||
.table[width="100%"]>.tr:first-child>.td,
|
||||
[data-page="admin-network-diagnostics"] .tr>.td,
|
||||
@@ -2251,7 +2287,6 @@ span[data-tooltip] .label {
|
||||
padding: 0.5rem;
|
||||
opacity: 0;
|
||||
transition: opacity .25s ease-in;
|
||||
transform: translate(-50%, 10%);
|
||||
}
|
||||
|
||||
.cbi-tooltip-container:hover .cbi-tooltip:not(:empty) {
|
||||
|
||||
@@ -1063,40 +1063,18 @@ input,
|
||||
}
|
||||
}
|
||||
|
||||
[data-page^="admin-services-openclash"] {
|
||||
.oc {
|
||||
--bg-light: #1e1e1e !important;
|
||||
--bg-gray: #1e1e1e !important;
|
||||
|
||||
.developer-container {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
.config-upload-content{
|
||||
background: #1e1e1e !important;
|
||||
}
|
||||
}
|
||||
|
||||
.cbi-tabmenu::-webkit-scrollbar-thumb {
|
||||
background-color: #5b5b5b;
|
||||
}
|
||||
|
||||
.cbi-tabmenu::-webkit-scrollbar-track {
|
||||
background-color: rgba(60, 60, 60, 0.75);
|
||||
}
|
||||
|
||||
#tab {
|
||||
border-color: #3c3c3c;
|
||||
}
|
||||
|
||||
#diag-rc-output > pre,
|
||||
#dns-rc-output > pre {
|
||||
color: #ccc;
|
||||
border: 1px solid #3c3c3c !important;
|
||||
background-color: #1e1e1e;
|
||||
}
|
||||
|
||||
img[src$="arrow-clockwise-light.svg"],
|
||||
[data-page^="admin-services-openclash"] {
|
||||
--oc-accent: var(--dark-primary);
|
||||
--oc-surface: #1e1e1e;
|
||||
--oc-surface-muted: #252526;
|
||||
--oc-control-bg: #1e1e1e;
|
||||
--oc-border: #3c3c3c;
|
||||
--oc-text: #ccc;
|
||||
--oc-text-muted: #a1a1aa;
|
||||
--oc-neutral: #5b5b5b;
|
||||
--oc-scrollbar: #5b5b5b;
|
||||
|
||||
img[src$="arrow-clockwise-light.svg"],
|
||||
img[src$="wrench-light.svg"],
|
||||
img[src$="eye-light.svg"] {
|
||||
filter: invert(0.9);
|
||||
|
||||
@@ -433,6 +433,10 @@
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.settings-info {
|
||||
padding-top: 1em;
|
||||
padding-bottom: 1em;
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
[data-page="admin-system-system"] {
|
||||
.control-group {
|
||||
gap: .875rem;
|
||||
margin: 0.25rem 0;
|
||||
}
|
||||
|
||||
.cbi-dynlist {
|
||||
@@ -550,6 +551,10 @@
|
||||
.cbi-section.fade-in {
|
||||
.cbi-title {
|
||||
position: relative;
|
||||
|
||||
.label {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
> div:last-child {
|
||||
position: absolute;
|
||||
@@ -712,18 +717,354 @@
|
||||
|
||||
// Services - OpenClash
|
||||
[data-page^="admin-services-openclash"] {
|
||||
// One adapter contract for OpenClash's current component set.
|
||||
// Semantic colours remain owned by OpenClash; primary interactions and
|
||||
// neutral surfaces follow Argon's runtime-configurable palette.
|
||||
--oc-accent: var(--primary);
|
||||
--oc-accent-hover: var(--primary);
|
||||
--oc-accent-strong: var(--primary);
|
||||
--oc-accent-a5: transparent;
|
||||
--oc-accent-a10: transparent;
|
||||
--oc-accent-a20: transparent;
|
||||
--oc-accent-a30: transparent;
|
||||
--oc-accent-a40: transparent;
|
||||
--oc-accent-a50: transparent;
|
||||
--oc-accent-a60: transparent;
|
||||
--oc-surface: #fff;
|
||||
--oc-surface-muted: #f6f9fc;
|
||||
--oc-control-bg: #fff;
|
||||
--oc-border: #dee2e6;
|
||||
--oc-text: #525f7f;
|
||||
--oc-text-muted: #8898aa;
|
||||
--oc-neutral: #8898aa;
|
||||
--oc-scrollbar: #f6f9fc;
|
||||
|
||||
@supports (color: color-mix(in srgb, red, blue)) {
|
||||
--oc-accent-hover: color-mix(in srgb, var(--oc-accent) 88%, black);
|
||||
--oc-accent-strong: color-mix(in srgb, var(--oc-accent) 78%, black);
|
||||
--oc-accent-a5: color-mix(in srgb, var(--oc-accent) 5%, transparent);
|
||||
--oc-accent-a10: color-mix(in srgb, var(--oc-accent) 10%, transparent);
|
||||
--oc-accent-a20: color-mix(in srgb, var(--oc-accent) 20%, transparent);
|
||||
--oc-accent-a30: color-mix(in srgb, var(--oc-accent) 30%, transparent);
|
||||
--oc-accent-a40: color-mix(in srgb, var(--oc-accent) 40%, transparent);
|
||||
--oc-accent-a50: color-mix(in srgb, var(--oc-accent) 50%, transparent);
|
||||
--oc-accent-a60: color-mix(in srgb, var(--oc-accent) 60%, transparent);
|
||||
}
|
||||
|
||||
.oc {
|
||||
--bg-light: #fff;
|
||||
--bg-gray: #fff;
|
||||
--bg-white: var(--oc-surface) !important;
|
||||
--bg-light: var(--oc-surface) !important;
|
||||
--bg-gray: var(--oc-surface) !important;
|
||||
--bg-dark: var(--oc-surface) !important;
|
||||
--hover-bg: var(--oc-surface-muted) !important;
|
||||
--editor-bg: var(--oc-control-bg) !important;
|
||||
--card-bg-start: var(--oc-surface) !important;
|
||||
--border-color: var(--oc-border) !important;
|
||||
--border-light: var(--oc-border) !important;
|
||||
--border-dark: var(--oc-border) !important;
|
||||
--tab-border: var(--oc-border) !important;
|
||||
--divider: var(--oc-border) !important;
|
||||
--text-primary: var(--oc-text) !important;
|
||||
--text-secondary: var(--oc-text-muted) !important;
|
||||
--text-title: var(--oc-text) !important;
|
||||
--primary-color: var(--oc-accent) !important;
|
||||
--primary-bright: var(--oc-accent) !important;
|
||||
--btn-primary-hover: var(--oc-accent-hover) !important;
|
||||
--announcement-end: var(--oc-accent-strong) !important;
|
||||
--card-btn-bg: var(--oc-accent) !important;
|
||||
--card-accent: var(--oc-accent) !important;
|
||||
--primary-a5: var(--oc-accent-a5) !important;
|
||||
--primary-a10: var(--oc-accent-a10) !important;
|
||||
--primary-a20: var(--oc-accent-a20) !important;
|
||||
--primary-a30: var(--oc-accent-a30) !important;
|
||||
--primary-a40: var(--oc-accent-a40) !important;
|
||||
--primary-a50: var(--oc-accent-a50) !important;
|
||||
--primary-a60: var(--oc-accent-a60) !important;
|
||||
--radio-hover-bg: var(--oc-accent-a10) !important;
|
||||
--tab-hover-dark-bg: var(--oc-accent-a10) !important;
|
||||
--scrollbar-thumb: var(--oc-neutral) !important;
|
||||
--scrollbar-thumb-hover: var(--oc-text-muted) !important;
|
||||
border-radius: 8px;
|
||||
|
||||
.developer-container {
|
||||
background: transparent;
|
||||
.developer-container,
|
||||
.subscription-info-container {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
.announcement-card {
|
||||
width: auto!important;
|
||||
margin: 10px!important;
|
||||
width: auto !important;
|
||||
margin: 10px !important;
|
||||
}
|
||||
|
||||
.config-upload-content {
|
||||
background: var(--oc-surface) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Standard LuCI controls
|
||||
.cbi-button.cbi-button-add,
|
||||
.cbi-button.cbi-button-apply,
|
||||
.cbi-button.cbi-button-edit,
|
||||
.cbi-button.cbi-button-link,
|
||||
.cbi-button.cbi-button-positive,
|
||||
.cbi-button.cbi-button-reload,
|
||||
.cbi-button.cbi-button-save,
|
||||
.cbi-button.cbi-button-action,
|
||||
input.cbi-input-apply,
|
||||
input.cbi-input-reload,
|
||||
input.cbi-input-save,
|
||||
.btn.primary {
|
||||
color: #fff !important;
|
||||
border-color: var(--oc-accent) !important;
|
||||
background: var(--oc-accent) !important;
|
||||
}
|
||||
|
||||
.cbi-button.cbi-button-remove,
|
||||
.cbi-button.cbi-button-negative,
|
||||
input.cbi-input-remove {
|
||||
color: #fff !important;
|
||||
border-color: var(--danger) !important;
|
||||
background: var(--danger) !important;
|
||||
}
|
||||
|
||||
.cbi-button.cbi-button-reset {
|
||||
color: #fff !important;
|
||||
border-color: var(--warning) !important;
|
||||
background: var(--warning) !important;
|
||||
}
|
||||
|
||||
.cbi-button.cbi-button-find,
|
||||
input.cbi-input-find {
|
||||
color: #fff !important;
|
||||
border-color: var(--oc-neutral) !important;
|
||||
background-color: var(--oc-neutral) !important;
|
||||
}
|
||||
|
||||
// Sorting controls are compact icon buttons. A neutral outline keeps the
|
||||
// bundled gray arrow legible on light surfaces without implying disabled.
|
||||
#cbi-openclash .cbi-button-up,
|
||||
#cbi-openclash .cbi-button-down {
|
||||
border-color: var(--oc-neutral) !important;
|
||||
background-color: var(--oc-control-bg) !important;
|
||||
}
|
||||
|
||||
#cbi-openclash .cbi-button-up:not(:disabled):hover,
|
||||
#cbi-openclash .cbi-button-up:not(:disabled):focus,
|
||||
#cbi-openclash .cbi-button-down:not(:disabled):hover,
|
||||
#cbi-openclash .cbi-button-down:not(:disabled):focus {
|
||||
border-color: var(--oc-accent) !important;
|
||||
background-color: var(--oc-accent-a10) !important;
|
||||
box-shadow: 0 0 0 2px var(--oc-accent-a10) !important;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
border-color: var(--oc-accent) !important;
|
||||
|
||||
&:checked {
|
||||
border-color: var(--oc-accent) !important;
|
||||
background-color: var(--oc-accent) !important;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="text"],
|
||||
input[type="password"],
|
||||
input[type="number"],
|
||||
input[type="search"],
|
||||
input[type="url"],
|
||||
select,
|
||||
textarea,
|
||||
.cbi-dropdown,
|
||||
.oc .oc-input-textarea,
|
||||
.oc .sub-info-url-form-textarea,
|
||||
.oc .select-class,
|
||||
.oc .custom-option-input {
|
||||
color: var(--oc-text) !important;
|
||||
border-color: var(--oc-border) !important;
|
||||
background-color: var(--oc-control-bg) !important;
|
||||
}
|
||||
|
||||
input[type="text"]:focus,
|
||||
input[type="password"]:focus,
|
||||
input[type="number"]:focus,
|
||||
input[type="search"]:focus,
|
||||
input[type="url"]:focus,
|
||||
select:focus,
|
||||
textarea:focus,
|
||||
.cbi-dropdown:focus,
|
||||
.cbi-dropdown[open],
|
||||
.oc .oc-input-textarea:focus,
|
||||
.oc .sub-info-url-form-textarea:focus,
|
||||
.oc .select-class:focus,
|
||||
.oc .custom-option-input:focus {
|
||||
border-color: var(--oc-accent) !important;
|
||||
box-shadow: 0 0 0 2px var(--oc-accent-a10) !important;
|
||||
outline: 0 !important;
|
||||
}
|
||||
|
||||
.CodeMirror,
|
||||
.oc .cm-editor {
|
||||
color: var(--oc-text) !important;
|
||||
border: 1px solid var(--oc-border) !important;
|
||||
background: var(--oc-control-bg) !important;
|
||||
}
|
||||
|
||||
.CodeMirror-gutters,
|
||||
.oc .cm-gutters {
|
||||
border-color: var(--oc-border) !important;
|
||||
background: var(--oc-surface-muted) !important;
|
||||
}
|
||||
|
||||
.CodeMirror.CodeMirror-focused,
|
||||
.oc .cm-editor.cm-focused {
|
||||
border-color: var(--oc-accent) !important;
|
||||
box-shadow: 0 0 0 2px var(--oc-accent-a10) !important;
|
||||
outline: 0 !important;
|
||||
}
|
||||
|
||||
// Both tab classes are current component variants, not version branches.
|
||||
.oc .radio-button input[type="radio"]:checked+label,
|
||||
.oc #tab-header>ul.cbi-tabmenu>li.cbi-tab,
|
||||
.oc #tab-header>ul.oc-tabmenu>li.oc-tab {
|
||||
color: #fff !important;
|
||||
border-color: var(--oc-accent) !important;
|
||||
background: var(--oc-accent) !important;
|
||||
}
|
||||
|
||||
.oc .radio-button input[type="radio"]:checked+label {
|
||||
box-shadow: 0 1px 2px var(--oc-accent-a10) !important;
|
||||
}
|
||||
|
||||
.oc .radio-button label:hover,
|
||||
.oc #tab-header>ul.cbi-tabmenu>li:not(.cbi-tab):hover,
|
||||
.oc #tab-header>ul.cbi-tabmenu>li:not(.cbi-tab):focus,
|
||||
.oc #tab-header>ul.oc-tabmenu>li:not(.oc-tab):hover,
|
||||
.oc #tab-header>ul.oc-tabmenu>li:not(.oc-tab):focus {
|
||||
color: var(--oc-accent) !important;
|
||||
border-color: var(--oc-accent) !important;
|
||||
background: var(--oc-accent-a10) !important;
|
||||
}
|
||||
|
||||
.oc #tab-header>ul.cbi-tabmenu>li:not(.cbi-tab):hover>a,
|
||||
.oc #tab-header>ul.cbi-tabmenu>li:not(.cbi-tab):focus>a,
|
||||
.oc #tab-header>ul.oc-tabmenu>li:not(.oc-tab):hover>a,
|
||||
.oc #tab-header>ul.oc-tabmenu>li:not(.oc-tab):focus>a {
|
||||
color: var(--oc-accent) !important;
|
||||
}
|
||||
|
||||
.oc .card .general .btn:hover,
|
||||
.oc #addCustomOption:hover {
|
||||
background: var(--oc-accent-hover) !important;
|
||||
}
|
||||
|
||||
.oc .help-link:hover {
|
||||
background: var(--oc-accent-a10) !important;
|
||||
}
|
||||
|
||||
.oc .select-option[data-value="custom"] {
|
||||
border-color: var(--oc-accent-a20) !important;
|
||||
background: var(--oc-accent-a10) !important;
|
||||
|
||||
&:hover {
|
||||
background: var(--oc-accent-a20) !important;
|
||||
}
|
||||
}
|
||||
|
||||
.oc .announcement-banner,
|
||||
.oc .oix-announcement {
|
||||
background: linear-gradient(275deg, var(--oc-accent), var(--oc-accent-strong)) !important;
|
||||
}
|
||||
|
||||
.oc .announcement-banner::before,
|
||||
.oc .oix-announcement::before {
|
||||
background: var(--oc-accent-strong) !important;
|
||||
}
|
||||
|
||||
// The literal fill is a JavaScript state marker; change presentation only.
|
||||
.oc #mode-icon rect[fill="#2F88FF"] {
|
||||
fill: var(--oc-accent) !important;
|
||||
}
|
||||
|
||||
// Argon cards use colour and shadow for hover feedback, not layout motion.
|
||||
.oc .sub-card:hover,
|
||||
.oc .myip-ip-item:hover,
|
||||
.oc .myip-check-item:hover,
|
||||
.oc .myip-card-item:hover,
|
||||
.oc .card:hover,
|
||||
.oc .oix-header:hover,
|
||||
.oc .oix-card:hover,
|
||||
.oc .config-upload-btn-large:hover {
|
||||
transform: none !important;
|
||||
}
|
||||
|
||||
// Legacy help text is primary emphasis; success and error remain semantic.
|
||||
b[style*="color:green"],
|
||||
b[style*="color: green"],
|
||||
b[color="green"] {
|
||||
color: var(--oc-accent) !important;
|
||||
}
|
||||
|
||||
font[style*="color:green"],
|
||||
font[style*="color: green"],
|
||||
font[color="green"] {
|
||||
color: var(--success) !important;
|
||||
}
|
||||
|
||||
b[style*="color:red"],
|
||||
b[style*="color: red"],
|
||||
b[color="red"],
|
||||
font[style*="color:red"],
|
||||
font[style*="color: red"],
|
||||
font[color="red"] {
|
||||
color: var(--danger) !important;
|
||||
}
|
||||
|
||||
// Normalize the config switcher and top-level navigation height.
|
||||
.tabs>#tool_label {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
vertical-align: middle;
|
||||
|
||||
.tool_label_span {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.cbi-section-node-tabbed>.cbi-tabcontainer {
|
||||
gap: 0;
|
||||
|
||||
>.cbi-value {
|
||||
padding-top: 0.4375rem;
|
||||
padding-bottom: 0.4375rem;
|
||||
}
|
||||
}
|
||||
|
||||
&[data-page="admin-services-openclash-config"],
|
||||
&[data-page="admin-services-openclash-config-subscribe"],
|
||||
&[data-page^="admin-services-openclash-custom-dns-edit"],
|
||||
&[data-page^="admin-services-openclash-config-subscribe-edit"],
|
||||
&[data-page^="admin-services-openclash-groups-config"],
|
||||
&[data-page^="admin-services-openclash-proxy-provider-config"],
|
||||
&[data-page^="admin-services-openclash-servers-config"],
|
||||
&[data-page^="admin-services-openclash-other-file-edit"] {
|
||||
.cbi-map>.cbi-section>.cbi-section-node:not(.cbi-section-node-tabbed) {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
&[data-page^="admin-services-openclash-config-subscribe-edit"] {
|
||||
[id^="cbi-openclash-"][id$="-de_ex_keyword"] {
|
||||
>.cbi-value-field {
|
||||
>div:not([class])>span.cbi-checkbox {
|
||||
display: inline-flex;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
>.cbi-dropdown[multiple] {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -760,15 +1101,6 @@
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.oc .sub-card:hover {
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.oc .myip-ip-item:hover,
|
||||
.oc .myip-check-item:hover {
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.oc .main-cards-container {
|
||||
margin: 0 !important;
|
||||
gap: 0 !important;
|
||||
@@ -804,14 +1136,6 @@
|
||||
min-width: auto !important;
|
||||
}
|
||||
|
||||
.oc .config-upload-content {
|
||||
background: #fff !important;
|
||||
}
|
||||
|
||||
.oc .subscription-info-container {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
.cbi-tabmenu>li {
|
||||
border-right: none !important;
|
||||
margin: 0 0.4rem 0 0 !important;
|
||||
@@ -821,10 +1145,77 @@
|
||||
}
|
||||
}
|
||||
|
||||
// The custom table renderer carries release-owned inline colours. Keep its
|
||||
// layout, but make colour and row rhythm match ordinary Argon pages.
|
||||
#cbi-openclash .cbi-section-table-row,
|
||||
#cbi-openclash .cbi-rowstyle-1,
|
||||
#cbi-openclash .cbi-rowstyle-2,
|
||||
#cbi-openclash .cbi-tabcontainer>.cbi-value:nth-of-type(2n),
|
||||
#cbi-openclash table>tbody>tr:nth-of-type(2n) {
|
||||
background: var(--oc-surface) !important;
|
||||
}
|
||||
|
||||
#cbi-openclash [id^="tab-header-openclash-"] {
|
||||
border-bottom-color: var(--oc-border) !important;
|
||||
background: var(--oc-surface) !important;
|
||||
|
||||
>ul.cbi-tabmenu {
|
||||
background: var(--oc-surface) !important;
|
||||
|
||||
>li {
|
||||
color: var(--oc-text-muted) !important;
|
||||
border-color: var(--oc-border) !important;
|
||||
background: var(--oc-surface) !important;
|
||||
|
||||
&.cbi-tab {
|
||||
color: #fff !important;
|
||||
border-color: var(--oc-accent) !important;
|
||||
background: var(--oc-accent) !important;
|
||||
|
||||
>a {
|
||||
color: #fff !important;
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.cbi-tab):hover,
|
||||
&:not(.cbi-tab):focus {
|
||||
color: var(--oc-accent) !important;
|
||||
border-color: var(--oc-accent) !important;
|
||||
background: var(--oc-accent-a10) !important;
|
||||
|
||||
>a {
|
||||
color: var(--oc-accent) !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[id^="tab-header-openclash-"]>ul.cbi-tabmenu>li {
|
||||
margin: 0 !important;
|
||||
border-right: 1px solid var(--oc-border) !important;
|
||||
}
|
||||
|
||||
[id^="tab-header-openclash-"]+[id="tab-content"] {
|
||||
.td.cbi-section-table-cell>p {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#tab-content .dom {
|
||||
padding: 0 1rem 1rem 1rem;
|
||||
}
|
||||
|
||||
#cbi-openclash-dns_servers .cbi-section-table-row>
|
||||
.cbi-section-table-cell:last-child {
|
||||
min-width: 7.25rem;
|
||||
white-space: nowrap;
|
||||
|
||||
>.cbi-button {
|
||||
margin: 0 0.125rem !important;
|
||||
}
|
||||
}
|
||||
|
||||
.cbi-input-file {
|
||||
padding: 0.2813rem;
|
||||
width: 15rem !important;
|
||||
@@ -838,9 +1229,9 @@
|
||||
#diag-rc-output>pre,
|
||||
#dns-rc-output>pre {
|
||||
font-size: 0.875rem;
|
||||
color: #8898aa;
|
||||
border: 1px solid #dee2e6;
|
||||
background-color: transparent;
|
||||
color: var(--oc-text-muted);
|
||||
border: 1px solid var(--oc-border);
|
||||
background-color: var(--oc-control-bg);
|
||||
border-radius: 0.25rem;
|
||||
font-family: 'Google Sans' !important;
|
||||
box-shadow: none;
|
||||
@@ -850,7 +1241,8 @@
|
||||
font-family: 'Google Sans' !important;
|
||||
}
|
||||
|
||||
.CodeMirror {
|
||||
.CodeMirror,
|
||||
.cm-editor {
|
||||
font-size: inherit;
|
||||
font-family: 'Google Sans' !important;
|
||||
}
|
||||
@@ -858,7 +1250,6 @@
|
||||
.cbi-button-up,
|
||||
.cbi-button-down {
|
||||
padding: 0.8rem 1.5rem;
|
||||
background-color: #f1f1f1;
|
||||
font-size: 0;
|
||||
}
|
||||
|
||||
@@ -866,6 +1257,34 @@
|
||||
select#RELEASE_BRANCH {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
&[data-page^="admin-services-openclash-config-subscribe-edit"] {
|
||||
[id^="cbi-openclash-"][id$="-de_ex_keyword"] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
>label.cbi-value-title {
|
||||
display: block;
|
||||
float: none;
|
||||
width: 100%;
|
||||
padding-right: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
>.cbi-value-field {
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
|
||||
>.cbi-dropdown[multiple] {
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 5. VPN Pages
|
||||
|
||||
@@ -26,9 +26,6 @@ fetch_pic_url() {
|
||||
sed 's/1920x1080/UHD/g')"
|
||||
[ -n "${picpath}" ] && echo "//www.bing.com${picpath}"
|
||||
;;
|
||||
ghser)
|
||||
echo "https://api.vvhan.com/api/wallpaper/acg"
|
||||
;;
|
||||
unsplash)
|
||||
if [ -z "$API_KEY" ]; then
|
||||
local pic_id="$(wget -T3 --spider \
|
||||
@@ -77,13 +74,14 @@ try_update() {
|
||||
if flock -n 200 >"/dev/null" 2>&1; then
|
||||
local picurl="$(fetch_pic_url)"
|
||||
if [ -n "$picurl" ]; then
|
||||
|
||||
# below is quirk fix for all browsers
|
||||
# for some weird reason on first load, wallhaven images needs to be
|
||||
# download or browsed first before it can be shown as a background image
|
||||
# if not, browser only displays a blank image
|
||||
# NOTE: only happens to Wallhaven.cc source images
|
||||
if [[ "$WEB_PIC_SRC" == wallhave* ]] ; then
|
||||
wget -T3 -q "${picurl}" -O /dev/null
|
||||
wget -T3 -qO- "${picurl}" > /dev/null
|
||||
fi
|
||||
|
||||
echo "$picurl" | tee "$CACHE"
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{{ hostname }}{{ node?.title ? ` - ${striptags(node.title)}` : '' }} - LuCI</title>
|
||||
|
||||
<!-- SEO and Description -->
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta http-equiv="Referrer-Policy" content="strict-origin-when-cross-origin">
|
||||
|
||||
<!-- Mobile and PWA -->
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta name="apple-mobile-web-app-title" content="{{ hostname }} - LuCI">
|
||||
|
||||
<!-- Theme and Colors -->
|
||||
<meta name="theme-color" content="{{ bar_color }}">
|
||||
|
||||
<!-- Icons and Manifest -->
|
||||
<link rel="icon" type="image/x-icon" href="{{ media }}/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="{{ media }}/icon/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="{{ media }}/icon/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="{{ media }}/icon/android-icon-192x192.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="{{ media }}/icon/apple-icon-144x144.png">
|
||||
<link rel="manifest" href="{{ media }}/icon/manifest.json">
|
||||
@@ -19,7 +19,6 @@
|
||||
{%
|
||||
import { readfile, access } from 'fs';
|
||||
import { cursor } from 'uci';
|
||||
import { srand } from 'math';
|
||||
import { getuid, getspnam } from 'luci.core';
|
||||
|
||||
const boardinfo = ubus.call("system", "board");
|
||||
@@ -30,8 +29,6 @@
|
||||
//send as HTML5
|
||||
http.prepare_content('text/html; charset=UTF-8');
|
||||
|
||||
srand(+substr(reverse(time() + ""), 0, 8));
|
||||
|
||||
//Custom settings
|
||||
let mode = 'normal';
|
||||
let bar_color = '#5e72e4';
|
||||
@@ -53,42 +50,7 @@
|
||||
<html lang="{{ dispatcher.lang }}">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
<title>{{ hostname }}{{ node?.title ? ` - ${striptags(node.title)}` : '' }} - LuCI</title>
|
||||
|
||||
<!-- SEO and Description -->
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
|
||||
<!-- Security -->
|
||||
<meta http-equiv="X-Content-Type-Options" content="nosniff">
|
||||
<!-- <meta http-equiv="X-Frame-Options" content="SAMEORIGIN"> -->
|
||||
<meta http-equiv="X-XSS-Protection" content="1; mode=block">
|
||||
<meta http-equiv="Referrer-Policy" content="strict-origin-when-cross-origin">
|
||||
|
||||
<!-- Mobile and PWA -->
|
||||
<meta name="format-detection" content="telephone=no, email=no">
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta name="apple-mobile-web-app-title" content="{{ hostname }} - LuCI">
|
||||
|
||||
<!-- Theme and Colors -->
|
||||
<meta name="theme-color" content="{{ bar_color }}">
|
||||
<meta name="msapplication-TileColor" content="{{ bar_color }}">
|
||||
<meta name="msapplication-TileImage" content="{{ media }}/icon/ms-icon-144x144.png">
|
||||
<meta name="application-name" content="{{ hostname }} - LuCI">
|
||||
|
||||
<!-- Icons and Manifest -->
|
||||
<link rel="icon" type="image/x-icon" href="{{ media }}/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="{{ media }}/icon/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="{{ media }}/icon/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="{{ media }}/icon/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="{{ media }}/icon/android-icon-192x192.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="{{ media }}/icon/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="{{ media }}/icon/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="{{ media }}/icon/apple-icon-144x144.png">
|
||||
<link rel="manifest" href="{{ media }}/icon/manifest.json" crossorigin="use-credentials">
|
||||
{% include("themes/" + theme + "/head_meta", { hostname: hostname, node: node, bar_color: bar_color, media: media }) %}
|
||||
|
||||
<link rel="stylesheet" href="{{ media }}/css/cascade.css{# ?v=PKG_VERSION #}">
|
||||
<style title="text/css">
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
{%
|
||||
import { readfile, access } from 'fs';
|
||||
import { cursor } from 'uci';
|
||||
import { srand } from 'math';
|
||||
|
||||
const boardinfo = ubus.call("system", "board");
|
||||
const hostname = striptags(boardinfo?.hostname ?? '?');
|
||||
@@ -29,8 +28,6 @@
|
||||
//send as HTML5
|
||||
http.prepare_content('text/html; charset=UTF-8');
|
||||
|
||||
srand(+substr(reverse(time() + ""), 0, 8));
|
||||
|
||||
//Custom settings
|
||||
let mode = 'normal';
|
||||
let bar_color = '#5e72e4';
|
||||
@@ -52,42 +49,7 @@
|
||||
<html lang="{{ dispatcher.lang }}">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
<title>{{ hostname }}{{ node?.title ? ` - ${striptags(node.title)}` : '' }} - LuCI</title>
|
||||
|
||||
<!-- SEO and Description -->
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
|
||||
<!-- Security -->
|
||||
<meta http-equiv="X-Content-Type-Options" content="nosniff">
|
||||
<meta http-equiv="X-Frame-Options" content="SAMEORIGIN">
|
||||
<meta http-equiv="X-XSS-Protection" content="1; mode=block">
|
||||
<meta http-equiv="Referrer-Policy" content="strict-origin-when-cross-origin">
|
||||
|
||||
<!-- Mobile and PWA -->
|
||||
<meta name="format-detection" content="telephone=no, email=no">
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta name="apple-mobile-web-app-title" content="{{ hostname }} - LuCI">
|
||||
|
||||
<!-- Theme and Colors -->
|
||||
<meta name="theme-color" content="{{ bar_color }}">
|
||||
<meta name="msapplication-TileColor" content="{{ bar_color }}">
|
||||
<meta name="msapplication-TileImage" content="{{ media }}/icon/ms-icon-144x144.png">
|
||||
<meta name="application-name" content="{{ hostname }} - LuCI">
|
||||
|
||||
<!-- Icons and Manifest -->
|
||||
<link rel="icon" type="image/x-icon" href="{{ media }}/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="{{ media }}/icon/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="{{ media }}/icon/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="{{ media }}/icon/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="{{ media }}/icon/android-icon-192x192.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="{{ media }}/icon/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="{{ media }}/icon/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="{{ media }}/icon/apple-icon-144x144.png">
|
||||
<link rel="manifest" href="{{ media }}/icon/manifest.json" crossorigin="use-credentials">
|
||||
{% include("themes/" + theme + "/head_meta", { hostname: hostname, node: node, bar_color: bar_color, media: media }) %}
|
||||
|
||||
<link rel="stylesheet" href="{{ media }}/css/cascade.css{# ?v=PKG_VERSION #}">
|
||||
<style title="text/css">
|
||||
@@ -110,7 +72,6 @@
|
||||
}
|
||||
{% endif -%}
|
||||
</style>
|
||||
<link rel="shortcut icon" href="{{ media }}/favicon.ico">
|
||||
{% if (node?.css): %}
|
||||
<link rel="stylesheet" href="{{ resource }}/{{ node.css}}">
|
||||
{% endif -%}
|
||||
|
||||
@@ -25,9 +25,16 @@
|
||||
{%
|
||||
import * as fs from 'fs';
|
||||
import { cursor } from 'uci';
|
||||
import { rand } from 'math';
|
||||
|
||||
let cfg = cursor();
|
||||
// Per-request pseudo-random state for selecting local backgrounds.
|
||||
let lcgState = (+time()) % 2147483648;
|
||||
|
||||
function randomIndex(limit) {
|
||||
lcgState = (lcgState * 1103515245 + 12345) % 2147483648;
|
||||
|
||||
return lcgState % limit;
|
||||
}
|
||||
|
||||
//Fetch Local Background Media
|
||||
|
||||
@@ -67,7 +74,7 @@
|
||||
|
||||
let background = fetchMedia("/www" + themeDir, themeDir);
|
||||
if ( length(background) > 0 ) {
|
||||
let currentBg = background[(rand() % length(background))];
|
||||
let currentBg = background[randomIndex(length(background))];
|
||||
bgUrl = currentBg.url;
|
||||
if (index(videoTypes, " " + currentBg.type + " ") != -1) {
|
||||
backgroundType = "Video";
|
||||
|
||||
@@ -47,6 +47,10 @@
|
||||
|
||||
& div[style*="display:grid"] {
|
||||
@apply max-md:grid-cols-2! max-md:gap-3;
|
||||
|
||||
&:has(> .ifacebox) {
|
||||
@apply place-items-center;
|
||||
}
|
||||
}
|
||||
|
||||
& .network-status-table {
|
||||
@@ -63,7 +67,7 @@
|
||||
}
|
||||
|
||||
.ifacebox {
|
||||
@apply border-hairline bg-surface-overlay hover:border-hairline max-md:border-hairline relative inline-flex min-w-40 flex-col items-stretch overflow-visible rounded-2xl border text-center text-base leading-5 shadow-md hover:shadow-xl max-md:min-w-30 max-md:flex-1 max-md:rounded-3xl max-md:shadow-sm;
|
||||
@apply border-hairline bg-surface-overlay hover:border-hairline max-md:border-hairline relative inline-flex min-w-28 flex-col items-stretch overflow-visible rounded-2xl border text-center text-base leading-5 shadow-md hover:shadow-xl max-md:min-w-30 max-md:flex-1 max-md:rounded-3xl max-md:shadow-sm;
|
||||
|
||||
td & {
|
||||
@apply max-md:flex-row;
|
||||
|
||||
@@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk
|
||||
LUCI_TITLE:=Aurora Theme (A modern browser theme built with Vite and Tailwind CSS)
|
||||
LUCI_DEPENDS:=+luci-base
|
||||
|
||||
PKG_VERSION:=1.2.6
|
||||
PKG_RELEASE:=73
|
||||
PKG_VERSION:=1.2.7
|
||||
PKG_RELEASE:=74
|
||||
PKG_LICENSE:=Apache-2.0
|
||||
|
||||
LUCI_MINIFY_CSS:=
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user