diff --git a/linkease/ddnsto/Makefile b/ddnsto/Makefile similarity index 100% rename from linkease/ddnsto/Makefile rename to ddnsto/Makefile diff --git a/linkease/ddnsto/files/ddnsto-monitor.sh b/ddnsto/files/ddnsto-monitor.sh similarity index 100% rename from linkease/ddnsto/files/ddnsto-monitor.sh rename to ddnsto/files/ddnsto-monitor.sh diff --git a/linkease/ddnsto/files/ddnsto.config b/ddnsto/files/ddnsto.config similarity index 100% rename from linkease/ddnsto/files/ddnsto.config rename to ddnsto/files/ddnsto.config diff --git a/linkease/ddnsto/files/ddnsto.init b/ddnsto/files/ddnsto.init similarity index 100% rename from linkease/ddnsto/files/ddnsto.init rename to ddnsto/files/ddnsto.init diff --git a/linkease/ddnsto/files/ddnsto.uci-default b/ddnsto/files/ddnsto.uci-default similarity index 100% rename from linkease/ddnsto/files/ddnsto.uci-default rename to ddnsto/files/ddnsto.uci-default diff --git a/linkease/ffmpeg-remux/Makefile b/ffmpeg-remux/Makefile similarity index 100% rename from linkease/ffmpeg-remux/Makefile rename to ffmpeg-remux/Makefile diff --git a/istore/LICENSE b/istore/LICENSE new file mode 100644 index 00000000..99c0dc46 --- /dev/null +++ b/istore/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 易有云团队 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/istore/README.en.md b/istore/README.en.md new file mode 100644 index 00000000..a4babbda --- /dev/null +++ b/istore/README.en.md @@ -0,0 +1,4 @@ +# iStore + +## Introduce +The iStore is a app store for OpenWRT, it is implemented using Shell scripts, only depends on OpenWRT standard components, and does not contain binary files itself diff --git a/istore/README.md b/istore/README.md new file mode 100644 index 00000000..5682087f --- /dev/null +++ b/istore/README.md @@ -0,0 +1,51 @@ +# iStore + +## 介绍 + +iStore 是一个[开源](https://github.com/linkease/istore)且标准的 OpenWRT 软件中心实现。 + +是属于易有云团队的固件 [iStoreOS](https://github.com/istoreos) 的一部分。 + +iStore 的设计目标: + +1. 方便用户安装插件 +2. 每个插件都有教程,方便初学者入门使用插件 +3. 适配所有的 OpenWRT 皮肤,以及移动端 +4. 全部基于 OpenWRT 的标准接口开发,不用以前 KoolShare LEDE 的特有的插件风格的软件中心 + +iStore 的无法弥补的缺陷: + +1. 因为 OpenWRT 版本特别多,导致不同平台的插件依赖不一样。所以即使你的系统能安装 iStore,iStore 里面的插件不一定能安装 +2. 我们需要固件开发者自主集成 iStore,并解决 iStore 里面的各种插件的依赖 + +我们建议固件开发者集成 iStore,这样固件开发者只需要发布一个精简固件,用户可以按需安装自己喜欢的插件。还能共享插件的教程,独立更新某个插件版本。 + +> 21版本的固件安装 iStore 需要依赖 `luci-compat` + +## 安装 iStore 到 OpenWRT 官方固件 +只支持 x86_64 和 arm64 设备。 + +``` +opkg update || exit 1 +cd /tmp +wget https://github.com/linkease/openwrt-app-actions/raw/main/applications/luci-app-systools/root/usr/share/systools/istore-reinstall.run +chmod 755 istore-reinstall.run +./istore-reinstall.run +``` + +## 集成到自己编译的固件中 +iStore 官方的软件仓库支持 `x86_64`,`arm64` 两个架构,这两个架构的基于 **OpenWRT** 固件都可以直接集成 iStore + +只需在固件编译目录下执行: +```shell +echo >> feeds.conf.default +echo 'src-git istore https://github.com/linkease/istore;main' >> feeds.conf.default +./scripts/feeds update istore +./scripts/feeds install -d y -p istore luci-app-store +``` + +然后正常编译固件即可 + +## 功能预览 + +![istore-preview.png](./preview/istore-preview.png) diff --git a/linkease/luci-app-store/API.md b/istore/luci/luci-app-store/API.md similarity index 100% rename from linkease/luci-app-store/API.md rename to istore/luci/luci-app-store/API.md diff --git a/linkease/luci-app-store/Makefile b/istore/luci/luci-app-store/Makefile similarity index 100% rename from linkease/luci-app-store/Makefile rename to istore/luci/luci-app-store/Makefile diff --git a/linkease/luci-app-store/README.md b/istore/luci/luci-app-store/README.md similarity index 100% rename from linkease/luci-app-store/README.md rename to istore/luci/luci-app-store/README.md diff --git a/linkease/luci-app-store/luasrc/controller/store.lua b/istore/luci/luci-app-store/luasrc/controller/store.lua similarity index 100% rename from linkease/luci-app-store/luasrc/controller/store.lua rename to istore/luci/luci-app-store/luasrc/controller/store.lua diff --git a/linkease/luci-app-store/luasrc/view/store/main.htm b/istore/luci/luci-app-store/luasrc/view/store/main.htm similarity index 100% rename from linkease/luci-app-store/luasrc/view/store/main.htm rename to istore/luci/luci-app-store/luasrc/view/store/main.htm diff --git a/linkease/luci-app-store/root/bin/is-opkg b/istore/luci/luci-app-store/root/bin/is-opkg similarity index 100% rename from linkease/luci-app-store/root/bin/is-opkg rename to istore/luci/luci-app-store/root/bin/is-opkg diff --git a/linkease/luci-app-store/root/etc/config/istore b/istore/luci/luci-app-store/root/etc/config/istore similarity index 100% rename from linkease/luci-app-store/root/etc/config/istore rename to istore/luci/luci-app-store/root/etc/config/istore diff --git a/linkease/luci-app-store/root/etc/init.d/istore b/istore/luci/luci-app-store/root/etc/init.d/istore similarity index 100% rename from linkease/luci-app-store/root/etc/init.d/istore rename to istore/luci/luci-app-store/root/etc/init.d/istore diff --git a/linkease/luci-app-store/root/etc/uci-defaults/luci-app-store b/istore/luci/luci-app-store/root/etc/uci-defaults/luci-app-store similarity index 100% rename from linkease/luci-app-store/root/etc/uci-defaults/luci-app-store rename to istore/luci/luci-app-store/root/etc/uci-defaults/luci-app-store diff --git a/linkease/luci-app-store/root/usr/libexec/istore/backup b/istore/luci/luci-app-store/root/usr/libexec/istore/backup similarity index 100% rename from linkease/luci-app-store/root/usr/libexec/istore/backup rename to istore/luci/luci-app-store/root/usr/libexec/istore/backup diff --git a/linkease/luci-app-store/root/usr/libexec/istore/ipkg-build b/istore/luci/luci-app-store/root/usr/libexec/istore/ipkg-build similarity index 100% rename from linkease/luci-app-store/root/usr/libexec/istore/ipkg-build rename to istore/luci/luci-app-store/root/usr/libexec/istore/ipkg-build diff --git a/linkease/luci-app-store/root/usr/share/opkg/intercept/rm b/istore/luci/luci-app-store/root/usr/share/opkg/intercept/rm similarity index 100% rename from linkease/luci-app-store/root/usr/share/opkg/intercept/rm rename to istore/luci/luci-app-store/root/usr/share/opkg/intercept/rm diff --git a/linkease/luci-app-store/src/Makefile b/istore/luci/luci-app-store/src/Makefile similarity index 100% rename from linkease/luci-app-store/src/Makefile rename to istore/luci/luci-app-store/src/Makefile diff --git a/linkease/luci-app-store/src/compat.conf b/istore/luci/luci-app-store/src/compat.conf similarity index 100% rename from linkease/luci-app-store/src/compat.conf rename to istore/luci/luci-app-store/src/compat.conf diff --git a/linkease/luci-app-store/src/dummy/package.mk b/istore/luci/luci-app-store/src/dummy/package.mk similarity index 100% rename from linkease/luci-app-store/src/dummy/package.mk rename to istore/luci/luci-app-store/src/dummy/package.mk diff --git a/linkease/luci-app-store/src/key-build.pub b/istore/luci/luci-app-store/src/key-build.pub similarity index 100% rename from linkease/luci-app-store/src/key-build.pub rename to istore/luci/luci-app-store/src/key-build.pub diff --git a/linkease/luci-app-store/src/po/templates/iStore.pot b/istore/luci/luci-app-store/src/po/templates/iStore.pot similarity index 100% rename from linkease/luci-app-store/src/po/templates/iStore.pot rename to istore/luci/luci-app-store/src/po/templates/iStore.pot diff --git a/linkease/luci-app-store/src/po/zh-cn/iStore.po b/istore/luci/luci-app-store/src/po/zh-cn/iStore.po similarity index 100% rename from linkease/luci-app-store/src/po/zh-cn/iStore.po rename to istore/luci/luci-app-store/src/po/zh-cn/iStore.po diff --git a/linkease/luci-app-store/src/po/zh-tw/iStore.po b/istore/luci/luci-app-store/src/po/zh-tw/iStore.po similarity index 100% rename from linkease/luci-app-store/src/po/zh-tw/iStore.po rename to istore/luci/luci-app-store/src/po/zh-tw/iStore.po diff --git a/linkease/luci-lib-taskd/Makefile b/istore/luci/luci-lib-taskd/Makefile similarity index 100% rename from linkease/luci-lib-taskd/Makefile rename to istore/luci/luci-lib-taskd/Makefile diff --git a/linkease/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.css b/istore/luci/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.css similarity index 100% rename from linkease/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.css rename to istore/luci/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.css diff --git a/linkease/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.js b/istore/luci/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.js similarity index 100% rename from linkease/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.js rename to istore/luci/luci-lib-taskd/htdocs/luci-static/resources/tasks/tasks.js diff --git a/linkease/luci-lib-taskd/luasrc/controller/tasks-lib.lua b/istore/luci/luci-lib-taskd/luasrc/controller/tasks-lib.lua similarity index 100% rename from linkease/luci-lib-taskd/luasrc/controller/tasks-lib.lua rename to istore/luci/luci-lib-taskd/luasrc/controller/tasks-lib.lua diff --git a/linkease/luci-lib-taskd/luasrc/model/tasks.lua b/istore/luci/luci-lib-taskd/luasrc/model/tasks.lua similarity index 100% rename from linkease/luci-lib-taskd/luasrc/model/tasks.lua rename to istore/luci/luci-lib-taskd/luasrc/model/tasks.lua diff --git a/linkease/luci-lib-taskd/luasrc/view/tasks/docker.htm b/istore/luci/luci-lib-taskd/luasrc/view/tasks/docker.htm similarity index 100% rename from linkease/luci-lib-taskd/luasrc/view/tasks/docker.htm rename to istore/luci/luci-lib-taskd/luasrc/view/tasks/docker.htm diff --git a/linkease/luci-lib-taskd/luasrc/view/tasks/embed.htm b/istore/luci/luci-lib-taskd/luasrc/view/tasks/embed.htm similarity index 100% rename from linkease/luci-lib-taskd/luasrc/view/tasks/embed.htm rename to istore/luci/luci-lib-taskd/luasrc/view/tasks/embed.htm diff --git a/linkease/luci-lib-taskd/src/Makefile b/istore/luci/luci-lib-taskd/src/Makefile similarity index 100% rename from linkease/luci-lib-taskd/src/Makefile rename to istore/luci/luci-lib-taskd/src/Makefile diff --git a/linkease/luci-lib-taskd/src/dummy/package.mk b/istore/luci/luci-lib-taskd/src/dummy/package.mk similarity index 100% rename from linkease/luci-lib-taskd/src/dummy/package.mk rename to istore/luci/luci-lib-taskd/src/dummy/package.mk diff --git a/linkease/luci-lib-taskd/src/po/zh-cn/lib-tasks.po b/istore/luci/luci-lib-taskd/src/po/zh-cn/lib-tasks.po similarity index 100% rename from linkease/luci-lib-taskd/src/po/zh-cn/lib-tasks.po rename to istore/luci/luci-lib-taskd/src/po/zh-cn/lib-tasks.po diff --git a/linkease/luci-lib-xterm/Makefile b/istore/luci/luci-lib-xterm/Makefile similarity index 100% rename from linkease/luci-lib-xterm/Makefile rename to istore/luci/luci-lib-xterm/Makefile diff --git a/linkease/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.css b/istore/luci/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.css similarity index 100% rename from linkease/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.css rename to istore/luci/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.css diff --git a/linkease/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.js b/istore/luci/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.js similarity index 100% rename from linkease/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.js rename to istore/luci/luci-lib-xterm/htdocs/luci-static/resources/xterm/xterm.js diff --git a/linkease/luci-lib-xterm/luasrc/view/xterm/embed.htm b/istore/luci/luci-lib-xterm/luasrc/view/xterm/embed.htm similarity index 100% rename from linkease/luci-lib-xterm/luasrc/view/xterm/embed.htm rename to istore/luci/luci-lib-xterm/luasrc/view/xterm/embed.htm diff --git a/linkease/taskd/Makefile b/istore/luci/taskd/Makefile similarity index 100% rename from linkease/taskd/Makefile rename to istore/luci/taskd/Makefile diff --git a/linkease/taskd/files/taskd.sh b/istore/luci/taskd/files/taskd.sh similarity index 100% rename from linkease/taskd/files/taskd.sh rename to istore/luci/taskd/files/taskd.sh diff --git a/linkease/taskd/files/tasks.init b/istore/luci/taskd/files/tasks.init similarity index 100% rename from linkease/taskd/files/tasks.init rename to istore/luci/taskd/files/tasks.init diff --git a/istore/preview/istore-preview.png b/istore/preview/istore-preview.png new file mode 100644 index 00000000..01c21a9e Binary files /dev/null and b/istore/preview/istore-preview.png differ diff --git a/linkease/translations/en/app.po b/istore/translations/en/app.po similarity index 100% rename from linkease/translations/en/app.po rename to istore/translations/en/app.po diff --git a/linkease/translations/templates/app.pot b/istore/translations/templates/app.pot similarity index 100% rename from linkease/translations/templates/app.pot rename to istore/translations/templates/app.pot diff --git a/linkease/translations/zh-cn/app.po b/istore/translations/zh-cn/app.po similarity index 100% rename from linkease/translations/zh-cn/app.po rename to istore/translations/zh-cn/app.po diff --git a/linkease/linkease/Makefile b/linkease/Makefile similarity index 100% rename from linkease/linkease/Makefile rename to linkease/Makefile diff --git a/linkease/linkease/files/aria2.sh b/linkease/files/aria2.sh similarity index 100% rename from linkease/linkease/files/aria2.sh rename to linkease/files/aria2.sh diff --git a/linkease/linkease/files/linkease-config.sh b/linkease/files/linkease-config.sh similarity index 100% rename from linkease/linkease/files/linkease-config.sh rename to linkease/files/linkease-config.sh diff --git a/linkease/linkease/files/linkease.config b/linkease/files/linkease.config similarity index 100% rename from linkease/linkease/files/linkease.config rename to linkease/files/linkease.config diff --git a/linkease/linkease/files/linkease.init b/linkease/files/linkease.init similarity index 100% rename from linkease/linkease/files/linkease.init rename to linkease/files/linkease.init diff --git a/linkease/linkease/files/linkease.uci-default b/linkease/files/linkease.uci-default similarity index 100% rename from linkease/linkease/files/linkease.uci-default rename to linkease/files/linkease.uci-default diff --git a/linkease/luci-app-store/root/usr/share/rpcd/acl.d/luci-app-store.json b/linkease/luci-app-store/root/usr/share/rpcd/acl.d/luci-app-store.json deleted file mode 100644 index 4be4f3fb..00000000 --- a/linkease/luci-app-store/root/usr/share/rpcd/acl.d/luci-app-store.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "luci-app-store": { - "description": "Grant UCI access for luci-app-store", - "read": { - "uci": [ "istore" ] - }, - "write": { - "uci": [ "istore" ] - } - } -} diff --git a/aliyundrive-webdav/Makefile b/luci-app-aliyundrive-webdav/openwrt/aliyundrive-webdav/Makefile similarity index 100% rename from aliyundrive-webdav/Makefile rename to luci-app-aliyundrive-webdav/openwrt/aliyundrive-webdav/Makefile diff --git a/aliyundrive-webdav/files/aliyundrive-webdav.config b/luci-app-aliyundrive-webdav/openwrt/aliyundrive-webdav/files/aliyundrive-webdav.config similarity index 100% rename from aliyundrive-webdav/files/aliyundrive-webdav.config rename to luci-app-aliyundrive-webdav/openwrt/aliyundrive-webdav/files/aliyundrive-webdav.config diff --git a/aliyundrive-webdav/files/aliyundrive-webdav.init b/luci-app-aliyundrive-webdav/openwrt/aliyundrive-webdav/files/aliyundrive-webdav.init similarity index 100% rename from aliyundrive-webdav/files/aliyundrive-webdav.init rename to luci-app-aliyundrive-webdav/openwrt/aliyundrive-webdav/files/aliyundrive-webdav.init diff --git a/luci-app-aliyundrive-webdav/Makefile b/luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/Makefile similarity index 100% rename from luci-app-aliyundrive-webdav/Makefile rename to luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/Makefile diff --git a/luci-app-aliyundrive-webdav/luasrc/controller/aliyundrive-webdav.lua b/luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/luasrc/controller/aliyundrive-webdav.lua similarity index 100% rename from luci-app-aliyundrive-webdav/luasrc/controller/aliyundrive-webdav.lua rename to luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/luasrc/controller/aliyundrive-webdav.lua diff --git a/luci-app-aliyundrive-webdav/luasrc/model/cbi/aliyundrive-webdav/client.lua b/luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/luasrc/model/cbi/aliyundrive-webdav/client.lua similarity index 100% rename from luci-app-aliyundrive-webdav/luasrc/model/cbi/aliyundrive-webdav/client.lua rename to luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/luasrc/model/cbi/aliyundrive-webdav/client.lua diff --git a/luci-app-aliyundrive-webdav/luasrc/model/cbi/aliyundrive-webdav/log.lua b/luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/luasrc/model/cbi/aliyundrive-webdav/log.lua similarity index 100% rename from luci-app-aliyundrive-webdav/luasrc/model/cbi/aliyundrive-webdav/log.lua rename to luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/luasrc/model/cbi/aliyundrive-webdav/log.lua diff --git a/luci-app-aliyundrive-webdav/luasrc/view/aliyundrive-webdav/aliyundrive-webdav_log.htm b/luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/luasrc/view/aliyundrive-webdav/aliyundrive-webdav_log.htm similarity index 100% rename from luci-app-aliyundrive-webdav/luasrc/view/aliyundrive-webdav/aliyundrive-webdav_log.htm rename to luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/luasrc/view/aliyundrive-webdav/aliyundrive-webdav_log.htm diff --git a/luci-app-aliyundrive-webdav/luasrc/view/aliyundrive-webdav/aliyundrive-webdav_qrcode.htm b/luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/luasrc/view/aliyundrive-webdav/aliyundrive-webdav_qrcode.htm similarity index 100% rename from luci-app-aliyundrive-webdav/luasrc/view/aliyundrive-webdav/aliyundrive-webdav_qrcode.htm rename to luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/luasrc/view/aliyundrive-webdav/aliyundrive-webdav_qrcode.htm diff --git a/luci-app-aliyundrive-webdav/luasrc/view/aliyundrive-webdav/aliyundrive-webdav_status.htm b/luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/luasrc/view/aliyundrive-webdav/aliyundrive-webdav_status.htm similarity index 100% rename from luci-app-aliyundrive-webdav/luasrc/view/aliyundrive-webdav/aliyundrive-webdav_status.htm rename to luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/luasrc/view/aliyundrive-webdav/aliyundrive-webdav_status.htm diff --git a/luci-app-aliyundrive-webdav/po/zh-cn/aliyundrive-webdav.po b/luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/po/zh-cn/aliyundrive-webdav.po similarity index 100% rename from luci-app-aliyundrive-webdav/po/zh-cn/aliyundrive-webdav.po rename to luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/po/zh-cn/aliyundrive-webdav.po diff --git a/linkease/luci-app-ddnsto/po/zh_Hans b/luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/po/zh_Hans similarity index 100% rename from linkease/luci-app-ddnsto/po/zh_Hans rename to luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/po/zh_Hans diff --git a/luci-app-aliyundrive-webdav/root/etc/uci-defaults/luci-aliyundrive-webdav b/luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/root/etc/uci-defaults/luci-aliyundrive-webdav similarity index 100% rename from luci-app-aliyundrive-webdav/root/etc/uci-defaults/luci-aliyundrive-webdav rename to luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/root/etc/uci-defaults/luci-aliyundrive-webdav diff --git a/luci-app-aliyundrive-webdav/root/usr/share/rpcd/acl.d/luci-app-aliyundrive-webdav.json b/luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/root/usr/share/rpcd/acl.d/luci-app-aliyundrive-webdav.json similarity index 100% rename from luci-app-aliyundrive-webdav/root/usr/share/rpcd/acl.d/luci-app-aliyundrive-webdav.json rename to luci-app-aliyundrive-webdav/openwrt/luci-app-aliyundrive-webdav/root/usr/share/rpcd/acl.d/luci-app-aliyundrive-webdav.json diff --git a/luci-app-argon-config/.github/workflows/build.sh b/luci-app-argon-config/.github/workflows/build.sh deleted file mode 100755 index e34e3185..00000000 --- a/luci-app-argon-config/.github/workflows/build.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -sed -i 's/git\.openwrt\.org\/project\/luci/github\.com\/openwrt\/luci/g' ./feeds.conf.default -./scripts/feeds update luci -./scripts/feeds install luci -mv ./bin/luci-app-argon-config ./package/ -make defconfig -make package/luci-app-argon-config/compile V=s -j$(nproc) BUILD_LOG=1 - -tar -cJf logs.tar.xz logs -mv logs.tar.xz bin diff --git a/luci-app-argon-config/.github/workflows/check.yml b/luci-app-argon-config/.github/workflows/check.yml deleted file mode 100644 index c6c3a056..00000000 --- a/luci-app-argon-config/.github/workflows/check.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: CI - -on: - push: - branches: - - master - tags-ignore: - - 'release-*' - paths: - - 'luci-app-argon-config/**' - pull_request: - branches: - - master - -jobs: - build: - name: Build the IPK - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@master - - name: Prepare - run: | - mkdir -p bin/luci-app-argon-config - cp -rf ./luasrc ./po ./root ./Makefile ./bin/luci-app-argon-config - - name: Docker Build - run: | - docker pull openwrtorg/sdk:x86-64-21.02-SNAPSHOT - docker run --rm -u root -v "$(pwd)"/bin/:/home/build/openwrt/bin -v ${{ github.workspace }}/.github/workflows:/home/build/workflows openwrtorg/sdk:x86-64-21.02-SNAPSHOT /bin/sh /home/build/workflows/build.sh - - name: Upload app - uses: actions/upload-artifact@v2 - with: - name: luci-app-argon-config - path: ./bin/packages/x86_64/base/*argon-config* - if-no-files-found: error - - name: Upload Log - if: ${{ always() }} - uses: actions/upload-artifact@v2 - with: - name: buildlog - path: bin/logs.tar.xz diff --git a/luci-app-argon-config/.github/workflows/release.yml b/luci-app-argon-config/.github/workflows/release.yml deleted file mode 100644 index 61e18dca..00000000 --- a/luci-app-argon-config/.github/workflows/release.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Release - -on: - push: - tags: - - 'release-*' - -jobs: - build: - name: Build the IPK - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@master - - name: Prepare - run: | - mkdir -p bin/luci-app-argon-config - cp -rf ./luasrc ./po ./root ./Makefile ./bin/luci-app-argon-config - - name: Docker Build - run: | - docker pull openwrtorg/sdk:x86-64-21.02-SNAPSHOT - docker run --rm -u root -v "$(pwd)"/bin/:/home/build/openwrt/bin -v ${{ github.workspace }}/.github/workflows:/home/build/workflows openwrtorg/sdk:x86-64-21.02-SNAPSHOT /bin/sh /home/build/workflows/build.sh - - name: Release - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - set -x - assets=() - for asset in ./bin/packages/x86_64/base/*argon-config*.ipk; do - assets+=("-a" "$asset") - done - tag_name=$(basename ${{github.ref}}) - hub release create -p "${assets[@]}" -m "$tag_name" "$tag_name" - - name: Upload Log - if: ${{ always() }} - uses: actions/upload-artifact@v2 - with: - name: buildlog - path: bin/logs.tar.xz diff --git a/luci-app-argon-config/Makefile b/luci-app-argon-config/Makefile deleted file mode 100644 index 500a33f8..00000000 --- a/luci-app-argon-config/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG_NAME:=luci-app-argon-config -PKG_VERSION:=0.9 -PKG_RELEASE:=20220424 - -PKG_MAINTAINER:=jerrykuku - -LUCI_TITLE:=LuCI page for Argon Config -LUCI_PKGARCH:=all -LUCI_DEPENDS:=+luci-compat +luci-lib-ipkg +luci-theme-argon - -define Package/$(PKG_NAME)/conffiles -/etc/config/argon -endef - -include $(TOPDIR)/feeds/luci/luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-argon-config/README.md b/luci-app-argon-config/README.md deleted file mode 100644 index 59212036..00000000 --- a/luci-app-argon-config/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# luci-app-argon-config -Argon Theme Config Plugin - -You can set the blur and transparency of the login page of argon theme, and manage the background pictures and videos. \ No newline at end of file diff --git a/luci-app-argon-config/luasrc/controller/argon-config.lua b/luci-app-argon-config/luasrc/controller/argon-config.lua deleted file mode 100644 index 5d7faf45..00000000 --- a/luci-app-argon-config/luasrc/controller/argon-config.lua +++ /dev/null @@ -1,10 +0,0 @@ -module("luci.controller.argon-config", package.seeall) - -function index() - if not nixio.fs.access('/www/luci-static/argon/css/cascade.css') then - return - end - - local page = entry({"admin", "system", "argon-config"}, form("argon-config"), _("Argon Config"), 90) - page.acl_depends = { "luci-app-argon-config" } -end diff --git a/luci-app-argon-config/luasrc/model/cbi/argon-config.lua b/luci-app-argon-config/luasrc/model/cbi/argon-config.lua deleted file mode 100644 index ced16c47..00000000 --- a/luci-app-argon-config/luasrc/model/cbi/argon-config.lua +++ /dev/null @@ -1,217 +0,0 @@ -local nxfs = require 'nixio.fs' -local wa = require 'luci.tools.webadmin' -local opkg = require 'luci.model.ipkg' -local sys = require 'luci.sys' -local http = require 'luci.http' -local nutil = require 'nixio.util' -local name = 'argon' -local uci = require 'luci.model.uci'.cursor() - -local fstat = nxfs.statvfs(opkg.overlay_root()) -local space_total = fstat and fstat.blocks or 0 -local space_free = fstat and fstat.bfree or 0 -local space_used = space_total - space_free - -local free_byte = space_free * fstat.frsize - -local primary, dark_primary, blur_radius, blur_radius_dark, blur_opacity, mode -if nxfs.access('/etc/config/argon') then - primary = uci:get_first('argon', 'global', 'primary') - dark_primary = uci:get_first('argon', 'global', 'dark_primary') - blur_radius = uci:get_first('argon', 'global', 'blur') - blur_radius_dark = uci:get_first('argon', 'global', 'blur_dark') - blur_opacity = uci:get_first('argon', 'global', 'transparency') - blur_opacity_dark = uci:get_first('argon', 'global', 'transparency_dark') - mode = uci:get_first('argon', 'global', 'mode') - bing_background = uci:get_first('argon', 'global', 'bing_background') -end - -function glob(...) - local iter, code, msg = nxfs.glob(...) - if iter then - return nutil.consume(iter) - else - return nil, code, msg - end -end - -local transparency_sets = { - 0, - 0.1, - 0.2, - 0.3, - 0.4, - 0.5, - 0.6, - 0.7, - 0.8, - 0.9, - 1 -} - --- [[ 模糊设置 ]]-- -br = SimpleForm('config', translate('Argon Config'), translate('Here you can set the blur and transparency of the login page of argon theme, and manage the background pictures and videos.[Chrome is recommended]')) -br.reset = false -br.submit = false -s = br:section(SimpleSection) - -o = s:option(ListValue, 'bing_background', translate('Wallpaper Source')) -o:value('0', translate('Built-in')) -o:value('1', translate('Bing Wallpapers')) -o.default = bing_background -o.rmempty = false - -o = s:option(ListValue, 'mode', translate('Theme mode')) -o:value('normal', translate('Follow System')) -o:value('light', translate('Force Light')) -o:value('dark', translate('Force Dark')) -o.default = mode -o.rmempty = false -o.description = translate('You can choose Theme color mode here') - -o = s:option(Value, 'primary', translate('[Light mode] Primary Color'), translate('A HEX Color ; ( Default: #5e72e4 )')) -o.default = primary -o.datatype = ufloat -o.rmempty = false - - - -o = s:option(ListValue, 'transparency', translate('[Light mode] Transparency'), translate('0 transparent - 1 opaque ; ( Suggest: transparent: 0 or translucent preset: 0.5 )')) -for _, v in ipairs(transparency_sets) do - o:value(v) -end -o.default = blur_opacity -o.datatype = ufloat -o.rmempty = false - -o = s:option(Value, 'blur', translate('[Light mode] Frosted Glass Radius'), translate('Larger value will more blurred ; ( Suggest: clear: 1 or blur preset: 10 )')) -o.default = blur_radius -o.datatype = ufloat -o.rmempty = false - -o = s:option(Value, 'dark_primary', translate('[Dark mode] Primary Color'), translate('A HEX Color ; ( Default: #483d8b )')) -o.default = dark_primary -o.datatype = ufloat -o.rmempty = false - -o = s:option(ListValue, 'transparency_dark', translate('[Dark mode] Transparency'), translate('0 transparent - 1 opaque ; ( Suggest: Black translucent preset: 0.5 )')) -for _, v in ipairs(transparency_sets) do - o:value(v) -end -o.default = blur_opacity_dark -o.datatype = ufloat -o.rmempty = false - -o = s:option(Value, 'blur_dark', translate('[Dark mode] Frosted Glass Radius'), translate('Larger value will more blurred ; ( Suggest: clear: 1 or blur preset: 10 )')) -o.default = blur_radius_dark -o.datatype = ufloat -o.rmempty = false - -o = s:option(Button, 'save', translate('Save Changes')) -o.inputstyle = 'reload' - -function br.handle(self, state, data) - if (state == FORM_VALID and data.blur ~= nil and data.blur_dark ~= nil and data.transparency ~= nil and data.transparency_dark ~= nil and data.mode ~= nil) then - nxfs.writefile('/tmp/aaa', data) - for key, value in pairs(data) do - uci:set('argon','@global[0]',key,value) - end - uci:commit('argon') - end - return true -end - -ful = SimpleForm('upload', translate('Upload (Free: ') .. wa.byte_format(free_byte) .. ')', translate("You can upload files such as jpg,png,gif,webp,mp4,webm files, To change the login page background.")) -ful.reset = false -ful.submit = false - -sul = ful:section(SimpleSection, '', translate("Upload file to '/www/luci-static/argon/background/'")) -fu = sul:option(FileUpload, '') -fu.template = 'argon-config/other_upload' -um = sul:option(DummyValue, '', nil) -um.template = 'argon-config/other_dvalue' - -local dir, fd -dir = '/www/luci-static/argon/background/' -nxfs.mkdir(dir) -http.setfilehandler( - function(meta, chunk, eof) - if not fd then - if not meta then - return - end - - if meta and chunk then - fd = nixio.open(dir .. meta.file, 'w') - end - - if not fd then - um.value = translate('Create upload file error.') - return - end - end - if chunk and fd then - fd:write(chunk) - end - if eof and fd then - fd:close() - fd = nil - um.value = translate('File saved to') .. ' "/www/luci-static/argon/background/' .. meta.file .. '"' - end - end -) - -if http.formvalue('upload') then - local f = http.formvalue('ulfile') - if #f <= 0 then - um.value = translate('No specify upload file.') - end -end - -local function getSizeStr(size) - local i = 0 - local byteUnits = {' kB', ' MB', ' GB', ' TB'} - repeat - size = size / 1024 - i = i + 1 - until (size <= 1024) - return string.format('%.1f', size) .. byteUnits[i] -end - -local inits, attr = {} -for i, f in ipairs(glob(dir .. '*')) do - attr = nxfs.stat(f) - if attr then - inits[i] = {} - inits[i].name = nxfs.basename(f) - inits[i].mtime = os.date('%Y-%m-%d %H:%M:%S', attr.mtime) - inits[i].modestr = attr.modestr - inits[i].size = getSizeStr(attr.size) - inits[i].remove = 0 - inits[i].install = false - end -end - -form = SimpleForm('filelist', translate('Background file list'), nil) -form.reset = false -form.submit = false - -tb = form:section(Table, inits) -nm = tb:option(DummyValue, 'name', translate('File name')) -mt = tb:option(DummyValue, 'mtime', translate('Modify time')) -sz = tb:option(DummyValue, 'size', translate('Size')) -btnrm = tb:option(Button, 'remove', translate('Remove')) -btnrm.render = function(self, section, scope) - self.inputstyle = 'remove' - Button.render(self, section, scope) -end - -btnrm.write = function(self, section) - local v = nxfs.unlink(dir .. nxfs.basename(inits[section].name)) - if v then - table.remove(inits, section) - end - return v -end - -return br, ful, form diff --git a/luci-app-argon-config/luasrc/view/argon-config/other_button.htm b/luci-app-argon-config/luasrc/view/argon-config/other_button.htm deleted file mode 100644 index 1c391ad9..00000000 --- a/luci-app-argon-config/luasrc/view/argon-config/other_button.htm +++ /dev/null @@ -1,7 +0,0 @@ -<%+cbi/valueheader%> - <% if self:cfgvalue(section) ~= false then %> - " style="display: <%= display %>" type="submit"<%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.inputtitle or self.title)%> /> - <% else %> - - - <% end %> -<%+cbi/valuefooter%> diff --git a/luci-app-argon-config/luasrc/view/argon-config/other_dvalue.htm b/luci-app-argon-config/luasrc/view/argon-config/other_dvalue.htm deleted file mode 100644 index 296c61e4..00000000 --- a/luci-app-argon-config/luasrc/view/argon-config/other_dvalue.htm +++ /dev/null @@ -1,8 +0,0 @@ -<%+cbi/valueheader%> - -<% - local val = self:cfgvalue(section) or self.default or "" - write(pcdata(val)) -%> - -<%+cbi/valuefooter%> diff --git a/luci-app-argon-config/luasrc/view/argon-config/other_upload.htm b/luci-app-argon-config/luasrc/view/argon-config/other_upload.htm deleted file mode 100644 index 775629f3..00000000 --- a/luci-app-argon-config/luasrc/view/argon-config/other_upload.htm +++ /dev/null @@ -1,5 +0,0 @@ -<%+cbi/valueheader%> - - - -<%+cbi/valuefooter%> diff --git a/luci-app-argon-config/po/es/argon-config.po b/luci-app-argon-config/po/es/argon-config.po deleted file mode 100644 index e6670acc..00000000 --- a/luci-app-argon-config/po/es/argon-config.po +++ /dev/null @@ -1,179 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: 2021-03-15 21:25-0300\n" -"PO-Revision-Date: 2022-04-23 15:21-0300\n" -"Last-Translator: Franco Castillo \n" -"Language-Team: \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.0.1\n" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:97 -msgid "0 transparent - 1 opaque ; ( Suggest: Black translucent preset: 0.5 )" -msgstr "" -"0 transparente - 1 opaco; (Sugerencia: negro translúcido preestablecido: 0.5)" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:79 -msgid "" -"0 transparent - 1 opaque ; ( Suggest: transparent: 0 or translucent preset: " -"0.5 )" -msgstr "" -"0 transparente - 1 opaco; (Sugerencia: transparente: 0 o translúcido " -"preestablecido: 0.5)" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:92 -msgid "A HEX Color ; ( Default: #483d8b )" -msgstr "Un color HEX; (Predeterminado: #483d8b)" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:72 -msgid "A HEX Color ; ( Default: #5e72e4 )" -msgstr "Un color HEX; (Predeterminado: #5e72e4)" - -#: applications/luci-app-argon-config/luasrc/controller/argon-config.lua:8 -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:53 -msgid "Argon Config" -msgstr "Configuración de Argon" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:195 -msgid "Background file list" -msgstr "Lista de archivos de fondo" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:60 -msgid "Bing Wallpapers" -msgstr "Fondos de Bing" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:59 -msgid "Built-in" -msgstr "Integrado" - -#: applications/luci-app-argon-config/luasrc/view/argon-config/other_upload.htm:2 -msgid "Choose local file:" -msgstr "Elija un archivo local:" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:149 -msgid "Create upload file error." -msgstr "Crear archivo de error de carga." - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:200 -msgid "File name" -msgstr "Nombre del archivo" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:159 -msgid "File saved to" -msgstr "Archivo guardado en" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:65 -msgid "Follow System" -msgstr "Seguir el sistema" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:67 -msgid "Force Dark" -msgstr "Forzar oscuro" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:66 -msgid "Force Light" -msgstr "Forzar claro" - -#: applications/luci-app-argon-config/root/usr/share/rpcd/acl.d/luci-app-argon-config.json:3 -msgid "Grant UCI access for luci-app-argon-config" -msgstr "Otorgar acceso UCI para luci-app-argon-config" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:53 -msgid "" -"Here you can set the blur and transparency of the login page of argon theme, " -"and manage the background pictures and videos.[Chrome is recommended]" -msgstr "" -"Aquí puede configurar el desenfoque y la transparencia de la página de " -"inicio de sesión del tema argon y administrar las imágenes de fondo y los " -"videos. [Se recomienda Chrome]" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:87 -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:105 -msgid "" -"Larger value will more blurred ; ( Suggest: clear: 1 or blur preset: 10 )" -msgstr "" -"El valor más grande se verá más borroso; (Sugerencia: claro: 1 o desenfoque " -"predeterminado: 10)" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:201 -msgid "Modify time" -msgstr "Modificar la hora" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:167 -msgid "No specify upload file." -msgstr "No especificar archivo de carga." - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:203 -msgid "Remove" -msgstr "Eliminar" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:110 -msgid "Save Changes" -msgstr "Guardar cambios" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:202 -msgid "Size" -msgstr "Tamaño" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:64 -msgid "Theme mode" -msgstr "Modo del tema" - -#: applications/luci-app-argon-config/luasrc/view/argon-config/other_upload.htm:4 -msgid "Upload" -msgstr "Cargar" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:124 -msgid "Upload (Free:" -msgstr "Cargar (Libre:" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:128 -msgid "Upload file to '/www/luci-static/argon/background/'" -msgstr "Subir archivo a '/www/luci-static/argon/background/'" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:58 -msgid "Wallpaper Source" -msgstr "Fuente del fondo de pantalla" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:70 -msgid "You can choose Theme color mode here" -msgstr "Puede elegir el modo de color del tema aquí" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:124 -msgid "" -"You can upload files such as jpg,png,gif,webp,mp4,webm files, To change the login page " -"background." -msgstr "" -"Puede cargar archivos como jpg, png, gif, webp, mp4, webm, para cambiar el fondo de la " -"página de inicio de sesión." - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:105 -msgid "[Dark mode] Frosted Glass Radius" -msgstr "[Modo oscuro] Radio de vidrio esmerilado" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:92 -msgid "[Dark mode] Primary Color" -msgstr "[Modo oscuro] Color primario" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:97 -msgid "[Dark mode] Transparency" -msgstr "[Modo oscuro] Transparencia" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:87 -msgid "[Light mode] Frosted Glass Radius" -msgstr "[Modo claro] Radio de vidrio esmerilado" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:72 -msgid "[Light mode] Primary Color" -msgstr "[Modo claro] Color primario" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:79 -msgid "[Light mode] Transparency" -msgstr "[Modo claro] Transparencia" - -#~ msgid "Luci Argon theme config" -#~ msgstr "Configuración del tema Luci Argon" diff --git a/luci-app-argon-config/po/templates/argon-config.pot b/luci-app-argon-config/po/templates/argon-config.pot deleted file mode 100644 index 4b56ec11..00000000 --- a/luci-app-argon-config/po/templates/argon-config.pot +++ /dev/null @@ -1,155 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:97 -msgid "0 transparent - 1 opaque ; ( Suggest: Black translucent preset: 0.5 )" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:79 -msgid "" -"0 transparent - 1 opaque ; ( Suggest: transparent: 0 or translucent preset: " -"0.5 )" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:92 -msgid "A HEX Color ; ( Default: #483d8b )" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:72 -msgid "A HEX Color ; ( Default: #5e72e4 )" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/controller/argon-config.lua:8 -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:53 -msgid "Argon Config" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:195 -msgid "Background file list" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:60 -msgid "Bing Wallpapers" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:59 -msgid "Built-in" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/view/argon-config/other_upload.htm:2 -msgid "Choose local file:" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:149 -msgid "Create upload file error." -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:200 -msgid "File name" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:159 -msgid "File saved to" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:65 -msgid "Follow System" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:67 -msgid "Force Dark" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:66 -msgid "Force Light" -msgstr "" - -#: applications/luci-app-argon-config/root/usr/share/rpcd/acl.d/luci-app-argon-config.json:3 -msgid "Grant UCI access for luci-app-argon-config" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:53 -msgid "" -"Here you can set the blur and transparency of the login page of argon theme, " -"and manage the background pictures and videos.[Chrome is recommended]" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:87 -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:105 -msgid "" -"Larger value will more blurred ; ( Suggest: clear: 1 or blur preset: 10 )" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:201 -msgid "Modify time" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:167 -msgid "No specify upload file." -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:203 -msgid "Remove" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:110 -msgid "Save Changes" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:202 -msgid "Size" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:64 -msgid "Theme mode" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/view/argon-config/other_upload.htm:4 -msgid "Upload" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:124 -msgid "Upload (Free:" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:128 -msgid "Upload file to '/www/luci-static/argon/background/'" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:58 -msgid "Wallpaper Source" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:70 -msgid "You can choose Theme color mode here" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:124 -msgid "" -"You can upload files such as jpg,png,gif,webp,mp4,webm files, To change the login page " -"background." -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:105 -msgid "[Dark mode] Frosted Glass Radius" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:92 -msgid "[Dark mode] Primary Color" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:97 -msgid "[Dark mode] Transparency" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:87 -msgid "[Light mode] Frosted Glass Radius" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:72 -msgid "[Light mode] Primary Color" -msgstr "" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:79 -msgid "[Light mode] Transparency" -msgstr "" diff --git a/luci-app-argon-config/po/zh-cn/argon-config.po b/luci-app-argon-config/po/zh-cn/argon-config.po deleted file mode 100644 index 6b173412..00000000 --- a/luci-app-argon-config/po/zh-cn/argon-config.po +++ /dev/null @@ -1,129 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: dingpengyu \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"X-Generator: Poedit 2.3.1\n" - -msgid "Argon Config" -msgstr "Argon 主题设置" - -msgid "Here you can set the blur and transparency of the login page of argon theme, and manage the background pictures and videos.[Chrome is recommended]" -msgstr "在这里你可以设置argon 主题的登录页面的模糊和透明度,并管理背景图片与视频。[建议使用 Chrome]" - -msgid "Wallpaper Source" -msgstr "壁纸来源" - -msgid "Built-in" -msgstr "内建" - -msgid "Bing Wallpapers" -msgstr "Bing 壁纸" - -msgid "Theme mode" -msgstr "主题模式" - -msgid "Follow System" -msgstr "跟随系统" - -msgid "Force Light" -msgstr "强制亮色" - -msgid "Force Dark" -msgstr "强制暗色" - -msgid "You can choose Theme color mode here" -msgstr "你可以选择喜欢的主题模式" - -msgid "[Light mode] Primary Color" -msgstr "[亮色模式] 主色调" - -msgid "[Dark mode] Primary Color" -msgstr "[暗色模式] 主色调" - -msgid "A HEX Color ; ( Default: #5e72e4 )" -msgstr "十六进制颜色值 ( 预设为:#5e72e4 )" - -msgid "A HEX Color ; ( Default: #483d8b )" -msgstr "十六进制颜色值 ( 预设为:#483d8b )" - -msgid "[Light mode] Transparency" -msgstr "[亮色模式] 透明度" - -msgid "[Dark mode] Transparency" -msgstr "[暗色模式] 透明度" - -msgid "0 transparent - 1 opaque ; ( Suggest: transparent: 0 or translucent preset: 0.5 )" -msgstr "0最透明 - 1不透明 ; ( 建议: 透明 0 或 半透明预设 0.5 )" - -msgid "0 transparent - 1 opaque ; ( Suggest: Black translucent preset: 0.5 )" -msgstr "0最透明 - 1不透明 ; ( 建议: 黑色半透明 0.5 )" - -msgid "[Light mode] Frosted Glass Radius" -msgstr "[亮色模式] 毛玻璃模糊半径" - -msgid "[Dark mode] Frosted Glass Radius" -msgstr "[暗色模式] 毛玻璃模糊半径" - -msgid "Larger value will more blurred ; ( Suggest: clear: 1 or blur preset: 10 )" -msgstr "值越大越模糊; ( 建议: 清透 1 或 模糊预设 10 )" - -msgid "You can upload files such as jpg,png,gif,webp,mp4,webm files, To change the login page background." -msgstr "你可以上传jpg、png、gif、webp或mp4、webm文件,以创建自己喜欢的登录界面" - -msgid "Save Changes" -msgstr "保存更改" - -msgid "Choose local file:" -msgstr "选择本地文件:" - -msgid "Couldn't open file:" -msgstr "无法打开文件:" - -msgid "Create upload file error." -msgstr "创建上传文件失败。" - -msgid "File name" -msgstr "文件名" - -msgid "File saved to" -msgstr "文件保存到" - -msgid "FileTransfer" -msgstr "文件传输" - -msgid "Install" -msgstr "安装" - -msgid "Attributes" -msgstr "属性" - -msgid "Modify time" -msgstr "修改时间" - -msgid "No specify upload file." -msgstr "未指定上传文件。" - -msgid "Path on Route:" -msgstr "路由根目录:" - -msgid "Remove" -msgstr "移除" - -msgid "Size" -msgstr "大小" - -msgid "Upload (Free:" -msgstr "上传 (剩余空间:" - -msgid "Background file list" -msgstr "背景文件列表" - -msgid "Upload file to '/www/luci-static/argon/background/'" -msgstr "文件将上传到'/www/luci-static/argon/background/'" diff --git a/luci-app-argon-config/po/zh-tw/argon-config.po b/luci-app-argon-config/po/zh-tw/argon-config.po deleted file mode 100644 index ea2523c1..00000000 --- a/luci-app-argon-config/po/zh-tw/argon-config.po +++ /dev/null @@ -1,165 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Victor Tseng \n" -"Language-Team: \n" -"Language: zh_TW\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.2.2\n" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:97 -msgid "0 transparent - 1 opaque ; ( Suggest: Black translucent preset: 0.5 )" -msgstr "0 全透明 - 1 不透明(建議:黑色半透明 0.5)" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:79 -msgid "" -"0 transparent - 1 opaque ; ( Suggest: transparent: 0 or translucent preset: 0.5 )" -msgstr "0 全透明 - 1 不透明(建議:全透明 0,或半透明 0.5)" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:92 -msgid "A HEX Color ; ( Default: #483d8b )" -msgstr "十六進制顏色(預設 #483d8b)" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:72 -msgid "A HEX Color ; ( Default: #5e72e4 )" -msgstr "十六進制顏色(預設 #5e72e4)" - -#: applications/luci-app-argon-config/luasrc/controller/argon-config.lua:8 -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:53 -msgid "Argon Config" -msgstr "Argon 設定" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:195 -msgid "Background file list" -msgstr "背景檔案清單" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:60 -msgid "Bing Wallpapers" -msgstr "必應桌布" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:59 -msgid "Built-in" -msgstr "內建" - -#: applications/luci-app-argon-config/luasrc/view/argon-config/other_upload.htm:2 -msgid "Choose local file:" -msgstr "選擇本地檔案:" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:149 -msgid "Create upload file error." -msgstr "建立上傳檔案錯誤。" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:200 -msgid "File name" -msgstr "檔案名稱" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:159 -msgid "File saved to" -msgstr "檔案已儲存至" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:65 -msgid "Follow System" -msgstr "跟隨系統配色" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:67 -msgid "Force Dark" -msgstr "強制深色" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:66 -msgid "Force Light" -msgstr "強制淺色" - -#: applications/luci-app-argon-config/root/usr/share/rpcd/acl.d/luci-app-argon-config.json:3 -msgid "Grant UCI access for luci-app-argon-config" -msgstr "為 luci-app-argon-config 授予 UCI 權限" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:53 -msgid "" -"Here you can set the blur and transparency of the login page of argon theme, and " -"manage the background pictures and videos.[Chrome is recommended]" -msgstr "" -"您可以在此設定登入畫面的模糊度、透明度、以及管理背景圖片與影片(推薦使用 " -"Chrome)。" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:87 -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:105 -msgid "Larger value will more blurred ; ( Suggest: clear: 1 or blur preset: 10 )" -msgstr "數值越大越模糊(建議:清晰 1,或模糊程度 10)" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:201 -msgid "Modify time" -msgstr "修改時間" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:167 -msgid "No specify upload file." -msgstr "沒有選擇要上傳的檔案。" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:203 -msgid "Remove" -msgstr "移除" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:110 -msgid "Save Changes" -msgstr "保存變更" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:202 -msgid "Size" -msgstr "容量" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:64 -msgid "Theme mode" -msgstr "佈景主題模式" - -#: applications/luci-app-argon-config/luasrc/view/argon-config/other_upload.htm:4 -msgid "Upload" -msgstr "上傳" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:124 -msgid "Upload (Free:" -msgstr "上傳(剩餘空間:" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:128 -msgid "Upload file to '/www/luci-static/argon/background/'" -msgstr "上傳檔案至「/www/luci-static/argon/background」" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:58 -msgid "Wallpaper Source" -msgstr "桌布來源" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:70 -msgid "You can choose Theme color mode here" -msgstr "您可以在此選擇佈景主題的顏色模式" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:124 -msgid "" -"You can upload files such as jpg,png,gif,mp4,webm files, To change the login page " -"background." -msgstr "您可以上傳諸如 jpg、png、gif、mp4、webm 等類型的檔案來更換登入畫面的背景。" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:105 -msgid "[Dark mode] Frosted Glass Radius" -msgstr "《深色模式》模糊效果半徑" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:92 -msgid "[Dark mode] Primary Color" -msgstr "《深色模式》主色彩" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:97 -msgid "[Dark mode] Transparency" -msgstr "《深色模式》透明度" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:87 -msgid "[Light mode] Frosted Glass Radius" -msgstr "《淺色模式》模糊效果半徑" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:72 -msgid "[Light mode] Primary Color" -msgstr "《淺色模式》主色彩" - -#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:79 -msgid "[Light mode] Transparency" -msgstr "《淺色模式》透明度" diff --git a/luci-app-argon-config/po/zh_Hant b/luci-app-argon-config/po/zh_Hant deleted file mode 120000 index f6e591fd..00000000 --- a/luci-app-argon-config/po/zh_Hant +++ /dev/null @@ -1 +0,0 @@ -zh-tw \ No newline at end of file diff --git a/luci-app-argon-config/root/etc/config/argon b/luci-app-argon-config/root/etc/config/argon deleted file mode 100644 index fb7f35d9..00000000 --- a/luci-app-argon-config/root/etc/config/argon +++ /dev/null @@ -1,9 +0,0 @@ -config global - option primary '#5e72e4' - option dark_primary '#483d8b' - option blur '10' - option blur_dark '10' - option transparency '0.5' - option transparency_dark '0.5' - option mode 'normal' - option bing_background '0' diff --git a/luci-app-argon-config/root/etc/uci-defaults/luci-argon-config b/luci-app-argon-config/root/etc/uci-defaults/luci-argon-config deleted file mode 100755 index 935d7c8b..00000000 --- a/luci-app-argon-config/root/etc/uci-defaults/luci-argon-config +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -sed -i 's/cbi.submit\"] = true/cbi.submit\"] = \"1\"/g' /usr/lib/lua/luci/dispatcher.lua - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/luci-app-argon-config/root/usr/share/rpcd/acl.d/luci-app-argon-config.json b/luci-app-argon-config/root/usr/share/rpcd/acl.d/luci-app-argon-config.json deleted file mode 100644 index f0a31379..00000000 --- a/luci-app-argon-config/root/usr/share/rpcd/acl.d/luci-app-argon-config.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "luci-app-argon-config": { - "description": "Grant UCI access for luci-app-argon-config", - "read": { - "uci": [ "argon" ] - }, - "write": { - "uci": [ "argon" ] - } - } -} diff --git a/linkease/luci-app-ddnsto/Makefile b/luci-app-ddnsto/Makefile similarity index 100% rename from linkease/luci-app-ddnsto/Makefile rename to luci-app-ddnsto/Makefile diff --git a/linkease/luci-app-ddnsto/luasrc/controller/ddnsto.lua b/luci-app-ddnsto/luasrc/controller/ddnsto.lua similarity index 100% rename from linkease/luci-app-ddnsto/luasrc/controller/ddnsto.lua rename to luci-app-ddnsto/luasrc/controller/ddnsto.lua diff --git a/linkease/luci-app-ddnsto/luasrc/model/cbi/ddnsto.lua b/luci-app-ddnsto/luasrc/model/cbi/ddnsto.lua similarity index 100% rename from linkease/luci-app-ddnsto/luasrc/model/cbi/ddnsto.lua rename to luci-app-ddnsto/luasrc/model/cbi/ddnsto.lua diff --git a/linkease/luci-app-ddnsto/luasrc/view/ddnsto/main.htm b/luci-app-ddnsto/luasrc/view/ddnsto/main.htm similarity index 100% rename from linkease/luci-app-ddnsto/luasrc/view/ddnsto/main.htm rename to luci-app-ddnsto/luasrc/view/ddnsto/main.htm diff --git a/linkease/luci-app-ddnsto/po/zh-cn/ddnsto.po b/luci-app-ddnsto/po/zh-cn/ddnsto.po similarity index 100% rename from linkease/luci-app-ddnsto/po/zh-cn/ddnsto.po rename to luci-app-ddnsto/po/zh-cn/ddnsto.po diff --git a/linkease/luci-app-linkease/po/zh_Hans b/luci-app-ddnsto/po/zh_Hans similarity index 100% rename from linkease/luci-app-linkease/po/zh_Hans rename to luci-app-ddnsto/po/zh_Hans diff --git a/linkease/luci-app-ddnsto/root/etc/uci-defaults/50_luci-ddnsto b/luci-app-ddnsto/root/etc/uci-defaults/50_luci-ddnsto similarity index 100% rename from linkease/luci-app-ddnsto/root/etc/uci-defaults/50_luci-ddnsto rename to luci-app-ddnsto/root/etc/uci-defaults/50_luci-ddnsto diff --git a/linkease/luci-app-ddnsto/root/www/luci-static/ddnsto/index.js b/luci-app-ddnsto/root/www/luci-static/ddnsto/index.js similarity index 100% rename from linkease/luci-app-ddnsto/root/www/luci-static/ddnsto/index.js rename to luci-app-ddnsto/root/www/luci-static/ddnsto/index.js diff --git a/linkease/luci-app-ddnsto/root/www/luci-static/ddnsto/style.css b/luci-app-ddnsto/root/www/luci-static/ddnsto/style.css similarity index 100% rename from linkease/luci-app-ddnsto/root/www/luci-static/ddnsto/style.css rename to luci-app-ddnsto/root/www/luci-static/ddnsto/style.css diff --git a/linkease/luci-app-istorex/Makefile b/luci-app-istorex/Makefile similarity index 100% rename from linkease/luci-app-istorex/Makefile rename to luci-app-istorex/Makefile diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/bg.jpg b/luci-app-istorex/htdocs/luci-static/istorex/bg.jpg similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/bg.jpg rename to luci-app-istorex/htdocs/luci-static/istorex/bg.jpg diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.05e5ca20.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.05e5ca20.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.05e5ca20.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.05e5ca20.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.11f1e958.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.11f1e958.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.11f1e958.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.11f1e958.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.12358599.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.12358599.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.12358599.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.12358599.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.283eada3.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.283eada3.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.283eada3.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.283eada3.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.437e6cf0.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.437e6cf0.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.437e6cf0.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.437e6cf0.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.477e6e94.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.477e6e94.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.477e6e94.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.477e6e94.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.574eccc8.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.574eccc8.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.574eccc8.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.574eccc8.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.6700eedc.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.6700eedc.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.6700eedc.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.6700eedc.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.6d3585bb.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.6d3585bb.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.6d3585bb.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.6d3585bb.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.7a6e650d.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.7a6e650d.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.7a6e650d.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.7a6e650d.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.814bd89b.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.814bd89b.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.814bd89b.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.814bd89b.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.82d0adb4.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.82d0adb4.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.82d0adb4.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.82d0adb4.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.88211d90.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.88211d90.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.88211d90.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.88211d90.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.8de52bcc.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.8de52bcc.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.8de52bcc.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.8de52bcc.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.93c6cb9a.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.93c6cb9a.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.93c6cb9a.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.93c6cb9a.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.98c5424c.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.98c5424c.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.98c5424c.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.98c5424c.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.a2310d96.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.a2310d96.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.a2310d96.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.a2310d96.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.b1661ee7.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.b1661ee7.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.b1661ee7.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.b1661ee7.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.b3a0ed74.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.b3a0ed74.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.b3a0ed74.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.b3a0ed74.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.c40a1ac4.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.c40a1ac4.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.c40a1ac4.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.c40a1ac4.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.d2056b7d.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.d2056b7d.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.d2056b7d.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.d2056b7d.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.e4a00bc3.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.e4a00bc3.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.e4a00bc3.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.e4a00bc3.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.e69413a4.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.e69413a4.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.e69413a4.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.e69413a4.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.ee4cd872.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.ee4cd872.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.ee4cd872.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.ee4cd872.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.eef43a4f.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.eef43a4f.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.eef43a4f.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.eef43a4f.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.f2850d08.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.f2850d08.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.f2850d08.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.f2850d08.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.feed9b2f.js b/luci-app-istorex/htdocs/luci-static/istorex/chunk.feed9b2f.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/chunk.feed9b2f.js rename to luci-app-istorex/htdocs/luci-static/istorex/chunk.feed9b2f.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/copy.png b/luci-app-istorex/htdocs/luci-static/istorex/copy.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/copy.png rename to luci-app-istorex/htdocs/luci-static/istorex/copy.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/device.svg b/luci-app-istorex/htdocs/luci-static/istorex/device.svg similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/device.svg rename to luci-app-istorex/htdocs/luci-static/istorex/device.svg diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/disk.png b/luci-app-istorex/htdocs/luci-static/istorex/disk.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/disk.png rename to luci-app-istorex/htdocs/luci-static/istorex/disk.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/file-manage.png b/luci-app-istorex/htdocs/luci-static/istorex/file-manage.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/file-manage.png rename to luci-app-istorex/htdocs/luci-static/istorex/file-manage.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/file.png b/luci-app-istorex/htdocs/luci-static/istorex/file.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/file.png rename to luci-app-istorex/htdocs/luci-static/istorex/file.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/folder.png b/luci-app-istorex/htdocs/luci-static/istorex/folder.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/folder.png rename to luci-app-istorex/htdocs/luci-static/istorex/folder.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/image/bg.gif b/luci-app-istorex/htdocs/luci-static/istorex/image/bg.gif similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/image/bg.gif rename to luci-app-istorex/htdocs/luci-static/istorex/image/bg.gif diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/image/logo.png b/luci-app-istorex/htdocs/luci-static/istorex/image/logo.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/image/logo.png rename to luci-app-istorex/htdocs/luci-static/istorex/image/logo.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/index.js b/luci-app-istorex/htdocs/luci-static/istorex/index.js similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/index.js rename to luci-app-istorex/htdocs/luci-static/istorex/index.js diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/info.svg b/luci-app-istorex/htdocs/luci-static/istorex/info.svg similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/info.svg rename to luci-app-istorex/htdocs/luci-static/istorex/info.svg diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/logo.png b/luci-app-istorex/htdocs/luci-static/istorex/logo.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/logo.png rename to luci-app-istorex/htdocs/luci-static/istorex/logo.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/logout.svg b/luci-app-istorex/htdocs/luci-static/istorex/logout.svg similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/logout.svg rename to luci-app-istorex/htdocs/luci-static/istorex/logout.svg diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/nas.png b/luci-app-istorex/htdocs/luci-static/istorex/nas.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/nas.png rename to luci-app-istorex/htdocs/luci-static/istorex/nas.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/network.png b/luci-app-istorex/htdocs/luci-static/istorex/network.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/network.png rename to luci-app-istorex/htdocs/luci-static/istorex/network.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/network.svg b/luci-app-istorex/htdocs/luci-static/istorex/network.svg similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/network.svg rename to luci-app-istorex/htdocs/luci-static/istorex/network.svg diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/open.svg b/luci-app-istorex/htdocs/luci-static/istorex/open.svg similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/open.svg rename to luci-app-istorex/htdocs/luci-static/istorex/open.svg diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/partition.png b/luci-app-istorex/htdocs/luci-static/istorex/partition.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/partition.png rename to luci-app-istorex/htdocs/luci-static/istorex/partition.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/photo.png b/luci-app-istorex/htdocs/luci-static/istorex/photo.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/photo.png rename to luci-app-istorex/htdocs/luci-static/istorex/photo.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/right.svg b/luci-app-istorex/htdocs/luci-static/istorex/right.svg similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/right.svg rename to luci-app-istorex/htdocs/luci-static/istorex/right.svg diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/safari.svg b/luci-app-istorex/htdocs/luci-static/istorex/safari.svg similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/safari.svg rename to luci-app-istorex/htdocs/luci-static/istorex/safari.svg diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/setting.png b/luci-app-istorex/htdocs/luci-static/istorex/setting.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/setting.png rename to luci-app-istorex/htdocs/luci-static/istorex/setting.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/setting.svg b/luci-app-istorex/htdocs/luci-static/istorex/setting.svg similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/setting.svg rename to luci-app-istorex/htdocs/luci-static/istorex/setting.svg diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/setup.svg b/luci-app-istorex/htdocs/luci-static/istorex/setup.svg similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/setup.svg rename to luci-app-istorex/htdocs/luci-static/istorex/setup.svg diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/store@3x.png b/luci-app-istorex/htdocs/luci-static/istorex/store@3x.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/store@3x.png rename to luci-app-istorex/htdocs/luci-static/istorex/store@3x.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/style.css b/luci-app-istorex/htdocs/luci-static/istorex/style.css similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/style.css rename to luci-app-istorex/htdocs/luci-static/istorex/style.css diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/sync.png b/luci-app-istorex/htdocs/luci-static/istorex/sync.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/sync.png rename to luci-app-istorex/htdocs/luci-static/istorex/sync.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/tag-0.png b/luci-app-istorex/htdocs/luci-static/istorex/tag-0.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/tag-0.png rename to luci-app-istorex/htdocs/luci-static/istorex/tag-0.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/tag-1.png b/luci-app-istorex/htdocs/luci-static/istorex/tag-1.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/tag-1.png rename to luci-app-istorex/htdocs/luci-static/istorex/tag-1.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/tag-2.png b/luci-app-istorex/htdocs/luci-static/istorex/tag-2.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/tag-2.png rename to luci-app-istorex/htdocs/luci-static/istorex/tag-2.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/tag-3.png b/luci-app-istorex/htdocs/luci-static/istorex/tag-3.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/tag-3.png rename to luci-app-istorex/htdocs/luci-static/istorex/tag-3.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/tag-4.png b/luci-app-istorex/htdocs/luci-static/istorex/tag-4.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/tag-4.png rename to luci-app-istorex/htdocs/luci-static/istorex/tag-4.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/task.svg b/luci-app-istorex/htdocs/luci-static/istorex/task.svg similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/task.svg rename to luci-app-istorex/htdocs/luci-static/istorex/task.svg diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/user.png b/luci-app-istorex/htdocs/luci-static/istorex/user.png similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/user.png rename to luci-app-istorex/htdocs/luci-static/istorex/user.png diff --git a/linkease/luci-app-istorex/htdocs/luci-static/istorex/warning.svg b/luci-app-istorex/htdocs/luci-static/istorex/warning.svg similarity index 100% rename from linkease/luci-app-istorex/htdocs/luci-static/istorex/warning.svg rename to luci-app-istorex/htdocs/luci-static/istorex/warning.svg diff --git a/linkease/luci-app-istorex/luasrc/controller/istorex.lua b/luci-app-istorex/luasrc/controller/istorex.lua similarity index 100% rename from linkease/luci-app-istorex/luasrc/controller/istorex.lua rename to luci-app-istorex/luasrc/controller/istorex.lua diff --git a/linkease/luci-app-istorex/luasrc/view/istorex/index.htm b/luci-app-istorex/luasrc/view/istorex/index.htm similarity index 100% rename from linkease/luci-app-istorex/luasrc/view/istorex/index.htm rename to luci-app-istorex/luasrc/view/istorex/index.htm diff --git a/linkease/luci-app-istorex/luasrc/view/istorex/main.htm b/luci-app-istorex/luasrc/view/istorex/main.htm similarity index 100% rename from linkease/luci-app-istorex/luasrc/view/istorex/main.htm rename to luci-app-istorex/luasrc/view/istorex/main.htm diff --git a/linkease/luci-app-istorex/luasrc/view/istorex/main_dev.htm b/luci-app-istorex/luasrc/view/istorex/main_dev.htm similarity index 100% rename from linkease/luci-app-istorex/luasrc/view/istorex/main_dev.htm rename to luci-app-istorex/luasrc/view/istorex/main_dev.htm diff --git a/linkease/luci-app-istorex/root/etc/config/istorex b/luci-app-istorex/root/etc/config/istorex similarity index 100% rename from linkease/luci-app-istorex/root/etc/config/istorex rename to luci-app-istorex/root/etc/config/istorex diff --git a/linkease/luci-app-istorex/root/etc/uci-defaults/50_luci-istorex b/luci-app-istorex/root/etc/uci-defaults/50_luci-istorex similarity index 100% rename from linkease/luci-app-istorex/root/etc/uci-defaults/50_luci-istorex rename to luci-app-istorex/root/etc/uci-defaults/50_luci-istorex diff --git a/linkease/luci-app-istorex/root/usr/share/luci/menu.d/luci-app-istorex.json b/luci-app-istorex/root/usr/share/luci/menu.d/luci-app-istorex.json similarity index 100% rename from linkease/luci-app-istorex/root/usr/share/luci/menu.d/luci-app-istorex.json rename to luci-app-istorex/root/usr/share/luci/menu.d/luci-app-istorex.json diff --git a/linkease/luci-app-istorex/root/usr/share/rpcd/acl.d/luci-app-istorex.json b/luci-app-istorex/root/usr/share/rpcd/acl.d/luci-app-istorex.json similarity index 100% rename from linkease/luci-app-istorex/root/usr/share/rpcd/acl.d/luci-app-istorex.json rename to luci-app-istorex/root/usr/share/rpcd/acl.d/luci-app-istorex.json diff --git a/linkease/luci-app-linkease/Makefile b/luci-app-linkease/Makefile similarity index 100% rename from linkease/luci-app-linkease/Makefile rename to luci-app-linkease/Makefile diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.22632dc4.js b/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.22632dc4.js similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.22632dc4.js rename to luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.22632dc4.js diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.324cab41.js b/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.324cab41.js similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.324cab41.js rename to luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.324cab41.js diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.4a114b4a.js b/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.4a114b4a.js similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.4a114b4a.js rename to luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.4a114b4a.js diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.4ea0593d.js b/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.4ea0593d.js similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.4ea0593d.js rename to luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.4ea0593d.js diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.6424c2fc.js b/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.6424c2fc.js similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.6424c2fc.js rename to luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.6424c2fc.js diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.7191676b.js b/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.7191676b.js similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.7191676b.js rename to luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.7191676b.js diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.a0a5dece.js b/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.a0a5dece.js similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.a0a5dece.js rename to luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.a0a5dece.js diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.a6a47e72.js b/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.a6a47e72.js similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.a6a47e72.js rename to luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.a6a47e72.js diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.c69499bb.js b/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.c69499bb.js similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.c69499bb.js rename to luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.c69499bb.js diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.d52f0fe8.js b/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.d52f0fe8.js similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.d52f0fe8.js rename to luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.d52f0fe8.js diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.dc0a1b58.js b/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.dc0a1b58.js similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.dc0a1b58.js rename to luci-app-linkease/htdocs/luci-static/linkeasefile/chunk.dc0a1b58.js diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/codicon.ttf b/luci-app-linkease/htdocs/luci-static/linkeasefile/codicon.ttf similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/codicon.ttf rename to luci-app-linkease/htdocs/luci-static/linkeasefile/codicon.ttf diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/archive.png b/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/archive.png similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/archive.png rename to luci-app-linkease/htdocs/luci-static/linkeasefile/icons/archive.png diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/dir.png b/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/dir.png similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/dir.png rename to luci-app-linkease/htdocs/luci-static/linkeasefile/icons/dir.png diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/doc.png b/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/doc.png similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/doc.png rename to luci-app-linkease/htdocs/luci-static/linkeasefile/icons/doc.png diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/error.png b/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/error.png similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/error.png rename to luci-app-linkease/htdocs/luci-static/linkeasefile/icons/error.png diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/image.png b/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/image.png similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/image.png rename to luci-app-linkease/htdocs/luci-static/linkeasefile/icons/image.png diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/music.png b/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/music.png similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/music.png rename to luci-app-linkease/htdocs/luci-static/linkeasefile/icons/music.png diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/notfound.png b/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/notfound.png similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/notfound.png rename to luci-app-linkease/htdocs/luci-static/linkeasefile/icons/notfound.png diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/other.png b/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/other.png similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/other.png rename to luci-app-linkease/htdocs/luci-static/linkeasefile/icons/other.png diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/video.png b/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/video.png similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/icons/video.png rename to luci-app-linkease/htdocs/luci-static/linkeasefile/icons/video.png diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/index.js b/luci-app-linkease/htdocs/luci-static/linkeasefile/index.js similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/index.js rename to luci-app-linkease/htdocs/luci-static/linkeasefile/index.js diff --git a/linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/style.css b/luci-app-linkease/htdocs/luci-static/linkeasefile/style.css similarity index 100% rename from linkease/luci-app-linkease/htdocs/luci-static/linkeasefile/style.css rename to luci-app-linkease/htdocs/luci-static/linkeasefile/style.css diff --git a/linkease/luci-app-linkease/luasrc/controller/linkease.lua b/luci-app-linkease/luasrc/controller/linkease.lua similarity index 100% rename from linkease/luci-app-linkease/luasrc/controller/linkease.lua rename to luci-app-linkease/luasrc/controller/linkease.lua diff --git a/linkease/luci-app-linkease/luasrc/controller/linkease_backend.lua b/luci-app-linkease/luasrc/controller/linkease_backend.lua similarity index 100% rename from linkease/luci-app-linkease/luasrc/controller/linkease_backend.lua rename to luci-app-linkease/luasrc/controller/linkease_backend.lua diff --git a/linkease/luci-app-linkease/luasrc/model/cbi/linkease.lua b/luci-app-linkease/luasrc/model/cbi/linkease.lua similarity index 100% rename from linkease/luci-app-linkease/luasrc/model/cbi/linkease.lua rename to luci-app-linkease/luasrc/model/cbi/linkease.lua diff --git a/linkease/luci-app-linkease/luasrc/view/admin_status/index/linkease.htm b/luci-app-linkease/luasrc/view/admin_status/index/linkease.htm similarity index 100% rename from linkease/luci-app-linkease/luasrc/view/admin_status/index/linkease.htm rename to luci-app-linkease/luasrc/view/admin_status/index/linkease.htm diff --git a/linkease/luci-app-linkease/luasrc/view/linkease/file.htm b/luci-app-linkease/luasrc/view/linkease/file.htm similarity index 100% rename from linkease/luci-app-linkease/luasrc/view/linkease/file.htm rename to luci-app-linkease/luasrc/view/linkease/file.htm diff --git a/linkease/luci-app-linkease/luasrc/view/linkease_status.htm b/luci-app-linkease/luasrc/view/linkease_status.htm similarity index 100% rename from linkease/luci-app-linkease/luasrc/view/linkease_status.htm rename to luci-app-linkease/luasrc/view/linkease_status.htm diff --git a/linkease/luci-app-linkease/po/zh-cn/linkease.po b/luci-app-linkease/po/zh-cn/linkease.po similarity index 100% rename from linkease/luci-app-linkease/po/zh-cn/linkease.po rename to luci-app-linkease/po/zh-cn/linkease.po diff --git a/linkease/luci-app-quickstart/po/zh_Hans b/luci-app-linkease/po/zh_Hans similarity index 100% rename from linkease/luci-app-quickstart/po/zh_Hans rename to luci-app-linkease/po/zh_Hans diff --git a/linkease/luci-app-linkease/root/etc/uci-defaults/50_luci-linkease b/luci-app-linkease/root/etc/uci-defaults/50_luci-linkease similarity index 100% rename from linkease/luci-app-linkease/root/etc/uci-defaults/50_luci-linkease rename to luci-app-linkease/root/etc/uci-defaults/50_luci-linkease diff --git a/luci-app-mosdns/Makefile b/luci-app-mosdns/luci-app-mosdns/Makefile similarity index 100% rename from luci-app-mosdns/Makefile rename to luci-app-mosdns/luci-app-mosdns/Makefile diff --git a/luci-app-mosdns/luasrc/controller/mosdns.lua b/luci-app-mosdns/luci-app-mosdns/luasrc/controller/mosdns.lua similarity index 100% rename from luci-app-mosdns/luasrc/controller/mosdns.lua rename to luci-app-mosdns/luci-app-mosdns/luasrc/controller/mosdns.lua diff --git a/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua b/luci-app-mosdns/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua similarity index 100% rename from luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua rename to luci-app-mosdns/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua diff --git a/luci-app-mosdns/luasrc/model/cbi/mosdns/log.lua b/luci-app-mosdns/luci-app-mosdns/luasrc/model/cbi/mosdns/log.lua similarity index 100% rename from luci-app-mosdns/luasrc/model/cbi/mosdns/log.lua rename to luci-app-mosdns/luci-app-mosdns/luasrc/model/cbi/mosdns/log.lua diff --git a/luci-app-mosdns/luasrc/model/cbi/mosdns/rule_list.lua b/luci-app-mosdns/luci-app-mosdns/luasrc/model/cbi/mosdns/rule_list.lua similarity index 100% rename from luci-app-mosdns/luasrc/model/cbi/mosdns/rule_list.lua rename to luci-app-mosdns/luci-app-mosdns/luasrc/model/cbi/mosdns/rule_list.lua diff --git a/luci-app-mosdns/luasrc/model/cbi/mosdns/update.lua b/luci-app-mosdns/luci-app-mosdns/luasrc/model/cbi/mosdns/update.lua similarity index 100% rename from luci-app-mosdns/luasrc/model/cbi/mosdns/update.lua rename to luci-app-mosdns/luci-app-mosdns/luasrc/model/cbi/mosdns/update.lua diff --git a/luci-app-mosdns/luasrc/view/mosdns/mosdns_editor.htm b/luci-app-mosdns/luci-app-mosdns/luasrc/view/mosdns/mosdns_editor.htm similarity index 100% rename from luci-app-mosdns/luasrc/view/mosdns/mosdns_editor.htm rename to luci-app-mosdns/luci-app-mosdns/luasrc/view/mosdns/mosdns_editor.htm diff --git a/luci-app-mosdns/luasrc/view/mosdns/mosdns_flush_cache.htm b/luci-app-mosdns/luci-app-mosdns/luasrc/view/mosdns/mosdns_flush_cache.htm similarity index 100% rename from luci-app-mosdns/luasrc/view/mosdns/mosdns_flush_cache.htm rename to luci-app-mosdns/luci-app-mosdns/luasrc/view/mosdns/mosdns_flush_cache.htm diff --git a/luci-app-mosdns/luasrc/view/mosdns/mosdns_geo_update.htm b/luci-app-mosdns/luci-app-mosdns/luasrc/view/mosdns/mosdns_geo_update.htm similarity index 100% rename from luci-app-mosdns/luasrc/view/mosdns/mosdns_geo_update.htm rename to luci-app-mosdns/luci-app-mosdns/luasrc/view/mosdns/mosdns_geo_update.htm diff --git a/luci-app-mosdns/luasrc/view/mosdns/mosdns_log.htm b/luci-app-mosdns/luci-app-mosdns/luasrc/view/mosdns/mosdns_log.htm similarity index 100% rename from luci-app-mosdns/luasrc/view/mosdns/mosdns_log.htm rename to luci-app-mosdns/luci-app-mosdns/luasrc/view/mosdns/mosdns_log.htm diff --git a/luci-app-mosdns/luasrc/view/mosdns/mosdns_status.htm b/luci-app-mosdns/luci-app-mosdns/luasrc/view/mosdns/mosdns_status.htm similarity index 100% rename from luci-app-mosdns/luasrc/view/mosdns/mosdns_status.htm rename to luci-app-mosdns/luci-app-mosdns/luasrc/view/mosdns/mosdns_status.htm diff --git a/luci-app-mosdns/po/zh-cn/mosdns.po b/luci-app-mosdns/luci-app-mosdns/po/zh-cn/mosdns.po similarity index 100% rename from luci-app-mosdns/po/zh-cn/mosdns.po rename to luci-app-mosdns/luci-app-mosdns/po/zh-cn/mosdns.po diff --git a/linkease/luci-app-unishare/po/zh_Hans b/luci-app-mosdns/luci-app-mosdns/po/zh_Hans similarity index 100% rename from linkease/luci-app-unishare/po/zh_Hans rename to luci-app-mosdns/luci-app-mosdns/po/zh_Hans diff --git a/luci-app-mosdns/root/etc/config/mosdns b/luci-app-mosdns/luci-app-mosdns/root/etc/config/mosdns similarity index 100% rename from luci-app-mosdns/root/etc/config/mosdns rename to luci-app-mosdns/luci-app-mosdns/root/etc/config/mosdns diff --git a/luci-app-mosdns/root/etc/hotplug.d/iface/99-mosdns b/luci-app-mosdns/luci-app-mosdns/root/etc/hotplug.d/iface/99-mosdns similarity index 100% rename from luci-app-mosdns/root/etc/hotplug.d/iface/99-mosdns rename to luci-app-mosdns/luci-app-mosdns/root/etc/hotplug.d/iface/99-mosdns diff --git a/luci-app-mosdns/root/etc/init.d/mosdns b/luci-app-mosdns/luci-app-mosdns/root/etc/init.d/mosdns similarity index 100% rename from luci-app-mosdns/root/etc/init.d/mosdns rename to luci-app-mosdns/luci-app-mosdns/root/etc/init.d/mosdns diff --git a/luci-app-mosdns/root/etc/mosdns/config_custom.yaml b/luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/config_custom.yaml similarity index 100% rename from luci-app-mosdns/root/etc/mosdns/config_custom.yaml rename to luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/config_custom.yaml diff --git a/luci-app-mosdns/root/etc/mosdns/rule/blocklist.txt b/luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/blocklist.txt similarity index 100% rename from luci-app-mosdns/root/etc/mosdns/rule/blocklist.txt rename to luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/blocklist.txt diff --git a/luci-app-mosdns/root/etc/mosdns/rule/cloudflare-cidr.txt b/luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/cloudflare-cidr.txt similarity index 100% rename from luci-app-mosdns/root/etc/mosdns/rule/cloudflare-cidr.txt rename to luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/cloudflare-cidr.txt diff --git a/luci-app-mosdns/root/etc/mosdns/rule/ddnslist.txt b/luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/ddnslist.txt similarity index 100% rename from luci-app-mosdns/root/etc/mosdns/rule/ddnslist.txt rename to luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/ddnslist.txt diff --git a/luci-app-mosdns/root/etc/mosdns/rule/greylist.txt b/luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/greylist.txt similarity index 100% rename from luci-app-mosdns/root/etc/mosdns/rule/greylist.txt rename to luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/greylist.txt diff --git a/luci-app-mosdns/root/etc/mosdns/rule/hosts.txt b/luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/hosts.txt similarity index 100% rename from luci-app-mosdns/root/etc/mosdns/rule/hosts.txt rename to luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/hosts.txt diff --git a/luci-app-mosdns/root/etc/mosdns/rule/local-ptr.txt b/luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/local-ptr.txt similarity index 100% rename from luci-app-mosdns/root/etc/mosdns/rule/local-ptr.txt rename to luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/local-ptr.txt diff --git a/luci-app-mosdns/root/etc/mosdns/rule/redirect.txt b/luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/redirect.txt similarity index 100% rename from luci-app-mosdns/root/etc/mosdns/rule/redirect.txt rename to luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/redirect.txt diff --git a/luci-app-mosdns/root/etc/mosdns/rule/whitelist.txt b/luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/whitelist.txt similarity index 100% rename from luci-app-mosdns/root/etc/mosdns/rule/whitelist.txt rename to luci-app-mosdns/luci-app-mosdns/root/etc/mosdns/rule/whitelist.txt diff --git a/luci-app-mosdns/root/etc/uci-defaults/luci-mosdns b/luci-app-mosdns/luci-app-mosdns/root/etc/uci-defaults/luci-mosdns similarity index 100% rename from luci-app-mosdns/root/etc/uci-defaults/luci-mosdns rename to luci-app-mosdns/luci-app-mosdns/root/etc/uci-defaults/luci-mosdns diff --git a/luci-app-mosdns/root/usr/share/mosdns/cache.dump b/luci-app-mosdns/luci-app-mosdns/root/usr/share/mosdns/cache.dump similarity index 100% rename from luci-app-mosdns/root/usr/share/mosdns/cache.dump rename to luci-app-mosdns/luci-app-mosdns/root/usr/share/mosdns/cache.dump diff --git a/luci-app-mosdns/root/usr/share/mosdns/default.yaml b/luci-app-mosdns/luci-app-mosdns/root/usr/share/mosdns/default.yaml similarity index 100% rename from luci-app-mosdns/root/usr/share/mosdns/default.yaml rename to luci-app-mosdns/luci-app-mosdns/root/usr/share/mosdns/default.yaml diff --git a/luci-app-mosdns/root/usr/share/mosdns/mosdns.sh b/luci-app-mosdns/luci-app-mosdns/root/usr/share/mosdns/mosdns.sh similarity index 100% rename from luci-app-mosdns/root/usr/share/mosdns/mosdns.sh rename to luci-app-mosdns/luci-app-mosdns/root/usr/share/mosdns/mosdns.sh diff --git a/luci-app-mosdns/root/usr/share/rpcd/acl.d/luci-app-mosdns.json b/luci-app-mosdns/luci-app-mosdns/root/usr/share/rpcd/acl.d/luci-app-mosdns.json similarity index 100% rename from luci-app-mosdns/root/usr/share/rpcd/acl.d/luci-app-mosdns.json rename to luci-app-mosdns/luci-app-mosdns/root/usr/share/rpcd/acl.d/luci-app-mosdns.json diff --git a/luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/foldcode.js b/luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/foldcode.js similarity index 100% rename from luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/foldcode.js rename to luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/foldcode.js diff --git a/luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/foldgutter.css b/luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/foldgutter.css similarity index 100% rename from luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/foldgutter.css rename to luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/foldgutter.css diff --git a/luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/foldgutter.js b/luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/foldgutter.js similarity index 100% rename from luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/foldgutter.js rename to luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/foldgutter.js diff --git a/luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/indent-fold.js b/luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/indent-fold.js similarity index 100% rename from luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/indent-fold.js rename to luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/addon/fold/indent-fold.js diff --git a/luci-app-mosdns/root/www/luci-static/resources/mosdns/lib/codemirror.css b/luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/lib/codemirror.css similarity index 100% rename from luci-app-mosdns/root/www/luci-static/resources/mosdns/lib/codemirror.css rename to luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/lib/codemirror.css diff --git a/luci-app-mosdns/root/www/luci-static/resources/mosdns/lib/codemirror.js b/luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/lib/codemirror.js similarity index 100% rename from luci-app-mosdns/root/www/luci-static/resources/mosdns/lib/codemirror.js rename to luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/lib/codemirror.js diff --git a/luci-app-mosdns/root/www/luci-static/resources/mosdns/mode/yaml/yaml.js b/luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/mode/yaml/yaml.js similarity index 100% rename from luci-app-mosdns/root/www/luci-static/resources/mosdns/mode/yaml/yaml.js rename to luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/mode/yaml/yaml.js diff --git a/luci-app-mosdns/root/www/luci-static/resources/mosdns/theme/dracula.css b/luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/theme/dracula.css similarity index 100% rename from luci-app-mosdns/root/www/luci-static/resources/mosdns/theme/dracula.css rename to luci-app-mosdns/luci-app-mosdns/root/www/luci-static/resources/mosdns/theme/dracula.css diff --git a/luci-app-mosdns/mosdns/Makefile b/luci-app-mosdns/mosdns/Makefile new file mode 100644 index 00000000..c4a68f16 --- /dev/null +++ b/luci-app-mosdns/mosdns/Makefile @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: GPL-3.0-only +# +# Copyright (C) 2021 ImmortalWrt.org + +include $(TOPDIR)/rules.mk + +PKG_NAME:=mosdns +PKG_VERSION:=5.3.1 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://codeload.github.com/IrineSistiana/mosdns/tar.gz/v$(PKG_VERSION)? +PKG_HASH:=7c8c795de794df52fd2b51214826aea9ebde0dcd0da78d8dda9cc5e4ab98cd80 + +PKG_LICENSE:=GPL-3.0 +PKG_LICENSE_FILE:=LICENSE +PKG_MAINTAINER:=Tianling Shen + +PKG_BUILD_DEPENDS:=golang/host +PKG_BUILD_PARALLEL:=1 +PKG_USE_MIPS16:=0 +PKG_BUILD_FLAGS:=no-mips16 + +GO_PKG:=github.com/IrineSistiana/mosdns +GO_PKG_LDFLAGS_X:=main.version=v$(PKG_VERSION) + +include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk + +define Package/mosdns + SECTION:=net + CATEGORY:=Network + SUBMENU:=IP Addresses and Names + TITLE:=A plug-in DNS forwarder/splitter + URL:=https://github.com/IrineSistiana/mosdns + DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle +endef + +GO_PKG_TARGET_VARS:=$(filter-out CGO_ENABLED=%,$(GO_PKG_TARGET_VARS)) CGO_ENABLED=0 + +define Package/mosdns/install + $(call GoPackage/Package/Install/Bin,$(1)) +endef + +$(eval $(call GoBinPackage,mosdns)) +$(eval $(call BuildPackage,mosdns)) diff --git a/mosdns/patches/201-compatible-with-go1.20.patch b/luci-app-mosdns/mosdns/patches/201-compatible-with-go1.20.patch similarity index 100% rename from mosdns/patches/201-compatible-with-go1.20.patch rename to luci-app-mosdns/mosdns/patches/201-compatible-with-go1.20.patch diff --git a/mosdns/patches/203-add-response-for-bad-request-in-ServeHTTP-handler.patch b/luci-app-mosdns/mosdns/patches/203-add-response-for-bad-request-in-ServeHTTP-handler.patch similarity index 100% rename from mosdns/patches/203-add-response-for-bad-request-in-ServeHTTP-handler.patch rename to luci-app-mosdns/mosdns/patches/203-add-response-for-bad-request-in-ServeHTTP-handler.patch diff --git a/mosdns/patches/204-black_hole-apply-Fisher-Yates-shuffle-algorithm-to-r.patch b/luci-app-mosdns/mosdns/patches/204-black_hole-apply-Fisher-Yates-shuffle-algorithm-to-r.patch similarity index 100% rename from mosdns/patches/204-black_hole-apply-Fisher-Yates-shuffle-algorithm-to-r.patch rename to luci-app-mosdns/mosdns/patches/204-black_hole-apply-Fisher-Yates-shuffle-algorithm-to-r.patch diff --git a/mosdns/patches/205-format-logtime.patch b/luci-app-mosdns/mosdns/patches/205-format-logtime.patch similarity index 100% rename from mosdns/patches/205-format-logtime.patch rename to luci-app-mosdns/mosdns/patches/205-format-logtime.patch diff --git a/v2dat/Makefile b/luci-app-mosdns/v2dat/Makefile similarity index 100% rename from v2dat/Makefile rename to luci-app-mosdns/v2dat/Makefile diff --git a/v2dat/patches/100-format-logtime.patch b/luci-app-mosdns/v2dat/patches/100-format-logtime.patch similarity index 100% rename from v2dat/patches/100-format-logtime.patch rename to luci-app-mosdns/v2dat/patches/100-format-logtime.patch diff --git a/luci-app-passwall/Makefile b/luci-app-passwall/Makefile index ffee7c6c..85955cc9 100644 --- a/luci-app-passwall/Makefile +++ b/luci-app-passwall/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall -PKG_VERSION:=4.71-3 +PKG_VERSION:=4.72-1 PKG_RELEASE:= PKG_CONFIG_DEPENDS:= \ diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe.lua index 5024e871..7d6ebf8b 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe.lua @@ -6,27 +6,46 @@ local has_trojan_plus = api.is_finded("trojan-plus") local has_singbox = api.finded_com("singbox") local has_xray = api.finded_com("xray") local has_trojan_go = api.finded_com("trojan-go") +local has_hysteria2 = api.finded_com("hysteria") local ss_aead_type = {} local trojan_type = {} +local vmess_type = {} +local vless_type = {} +local hysteria2_type = {} if has_ss then - ss_aead_type[#ss_aead_type + 1] = "shadowsocks-libev" + local s = "shadowsocks-libev" + table.insert(ss_aead_type, s) end if has_ss_rust then - ss_aead_type[#ss_aead_type + 1] = "shadowsocks-rust" + local s = "shadowsocks-rust" + table.insert(ss_aead_type, s) end if has_trojan_plus then - trojan_type[#trojan_type + 1] = "trojan-plus" + local s = "trojan-plus" + table.insert(trojan_type, s) end if has_singbox then - trojan_type[#trojan_type + 1] = "sing-box" - ss_aead_type[#ss_aead_type + 1] = "sing-box" + local s = "sing-box" + table.insert(trojan_type, s) + table.insert(ss_aead_type, s) + table.insert(vmess_type, s) + table.insert(vless_type, s) + table.insert(hysteria2_type, s) end if has_xray then - trojan_type[#trojan_type + 1] = "xray" - ss_aead_type[#ss_aead_type + 1] = "xray" + local s = "xray" + table.insert(trojan_type, s) + table.insert(ss_aead_type, s) + table.insert(vmess_type, s) + table.insert(vless_type, s) end if has_trojan_go then - trojan_type[#trojan_type + 1] = "trojan-go" + local s = "trojan-go" + table.insert(trojan_type, s) +end +if has_hysteria2 then + local s = "hysteria2" + table.insert(hysteria2_type, s) end m = Map(appname) @@ -48,16 +67,46 @@ o = s:option(DynamicList, "filter_discard_list", translate("Discard List")) o = s:option(DynamicList, "filter_keep_list", translate("Keep List")) if #ss_aead_type > 0 then - o = s:option(ListValue, "ss_aead_type", translate("SS AEAD Node Use Type")) + o = s:option(ListValue, "ss_aead_type", translatef("%s Node Use Type", "SS AEAD")) for key, value in pairs(ss_aead_type) do - o:value(value, translate(value:gsub("^%l",string.upper))) + o:value(value) end end if #trojan_type > 0 then - o = s:option(ListValue, "trojan_type", translate("Trojan Node Use Type")) + o = s:option(ListValue, "trojan_type", translatef("%s Node Use Type", "Trojan")) for key, value in pairs(trojan_type) do - o:value(value, translate(value:gsub("^%l",string.upper))) + o:value(value) + end +end + +if #vmess_type > 0 then + o = s:option(ListValue, "vmess_type", translatef("%s Node Use Type", "VMess")) + for key, value in pairs(vmess_type) do + o:value(value) + end + if has_xray then + o.default = "xray" + end +end + +if #vless_type > 0 then + o = s:option(ListValue, "vless_type", translatef("%s Node Use Type", "VLESS")) + for key, value in pairs(vless_type) do + o:value(value) + end + if has_xray then + o.default = "xray" + end +end + +if #hysteria2_type > 0 then + o = s:option(ListValue, "hysteria2_type", translatef("%s Node Use Type", "Hysteria2")) + for key, value in pairs(hysteria2_type) do + o:value(value) + end + if has_hysteria2 then + o.default = "hysteria2" end end diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua index 203f2e5e..53ff9535 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua @@ -1,33 +1,51 @@ local api = require "luci.passwall.api" local appname = api.appname -local sys = api.sys local has_ss = api.is_finded("ss-redir") local has_ss_rust = api.is_finded("sslocal") local has_trojan_plus = api.is_finded("trojan-plus") local has_singbox = api.finded_com("singbox") local has_xray = api.finded_com("xray") local has_trojan_go = api.finded_com("trojan-go") +local has_hysteria2 = api.finded_com("hysteria") local ss_aead_type = {} local trojan_type = {} +local vmess_type = {} +local vless_type = {} +local hysteria2_type = {} if has_ss then - ss_aead_type[#ss_aead_type + 1] = "shadowsocks-libev" + local s = "shadowsocks-libev" + table.insert(ss_aead_type, s) end if has_ss_rust then - ss_aead_type[#ss_aead_type + 1] = "shadowsocks-rust" + local s = "shadowsocks-rust" + table.insert(ss_aead_type, s) end if has_trojan_plus then - trojan_type[#trojan_type + 1] = "trojan-plus" + local s = "trojan-plus" + table.insert(trojan_type, s) end if has_singbox then - trojan_type[#trojan_type + 1] = "sing-box" - ss_aead_type[#ss_aead_type + 1] = "sing-box" + local s = "sing-box" + table.insert(trojan_type, s) + table.insert(ss_aead_type, s) + table.insert(vmess_type, s) + table.insert(vless_type, s) + table.insert(hysteria2_type, s) end if has_xray then - trojan_type[#trojan_type + 1] = "xray" - ss_aead_type[#ss_aead_type + 1] = "xray" + local s = "xray" + table.insert(trojan_type, s) + table.insert(ss_aead_type, s) + table.insert(vmess_type, s) + table.insert(vless_type, s) end if has_trojan_go then - trojan_type[#trojan_type + 1] = "trojan-go" + local s = "trojan-go" + table.insert(trojan_type, s) +end +if has_hysteria2 then + local s = "hysteria2" + table.insert(hysteria2_type, s) end m = Map(appname) @@ -69,20 +87,47 @@ o:depends("filter_keyword_mode", "3") o:depends("filter_keyword_mode", "4") if #ss_aead_type > 0 then - o = s:option(ListValue, "ss_aead_type", translate("SS AEAD Node Use Type")) + o = s:option(ListValue, "ss_aead_type", translatef("%s Node Use Type", "SS AEAD")) o.default = "global" o:value("global", translate("Use global config")) for key, value in pairs(ss_aead_type) do - o:value(value, translate(value:gsub("^%l",string.upper))) + o:value(value) end end if #trojan_type > 0 then - o = s:option(ListValue, "trojan_type", translate("Trojan Node Use Type")) + o = s:option(ListValue, "trojan_type", translatef("%s Node Use Type", "Trojan")) o.default = "global" o:value("global", translate("Use global config")) for key, value in pairs(trojan_type) do - o:value(value, translate(value:gsub("^%l",string.upper))) + o:value(value) + end +end + +if #vmess_type > 0 then + o = s:option(ListValue, "vmess_type", translatef("%s Node Use Type", "VMess")) + o.default = "global" + o:value("global", translate("Use global config")) + for key, value in pairs(vmess_type) do + o:value(value) + end +end + +if #vless_type > 0 then + o = s:option(ListValue, "vless_type", translatef("%s Node Use Type", "VLESS")) + o.default = "global" + o:value("global", translate("Use global config")) + for key, value in pairs(vless_type) do + o:value(value) + end +end + +if #hysteria2_type > 0 then + o = s:option(ListValue, "hysteria2_type", translatef("%s Node Use Type", "Hysteria2")) + o.default = "global" + o:value("global", translate("Use global config")) + for key, value in pairs(hysteria2_type) do + o:value(value) end end diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua index 881ba29c..1ceb9e82 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua @@ -200,6 +200,20 @@ if has_singbox then o.default = "https://github.com/SagerNet/sing-geosite/releases/latest/download/geosite.db" o:value("https://github.com/SagerNet/sing-geosite/releases/latest/download/geosite.db") o.rmempty = false + + o = s:option(Button, "_remove_resource", translate("Remove resource files")) + o.description = translate("Sing-Box will automatically download resource files when starting, you can use this feature achieve upgrade resource files.") + o.inputstyle = "remove" + function o.write(self, section, value) + local geoip_path = s.fields["geoip_path"] and s.fields["geoip_path"]:formvalue(section) or nil + if geoip_path then + os.remove(geoip_path) + end + local geosite_path = s.fields["geosite_path"] and s.fields["geosite_path"]:formvalue(section) or nil + if geosite_path then + os.remove(geosite_path) + end + end end return m diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua index a4c0be58..d936711b 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua @@ -19,6 +19,87 @@ protocol:value("http") protocol:value("tls") protocol:value("bittorrent") +o = s:option(MultiValue, "inbound", translate("Inbound Tag")) +o:value("tproxy", translate("Transparent proxy")) +o:value("socks", "Socks") + +network = s:option(ListValue, "network", translate("Network")) +network:value("tcp,udp", "TCP UDP") +network:value("tcp", "TCP") +network:value("udp", "UDP") + +source = s:option(DynamicList, "source", translate("Source")) +source.description = "
  • " .. translate("Example:") +.. "
  • " .. translate("IP") .. ": 192.168.1.100" +.. "
  • " .. translate("IP CIDR") .. ": 192.168.1.0/24" +.. "
  • " .. translate("GeoIP") .. ": geoip:private" +.. "
" +source.cast = "string" +source.cfgvalue = function(self, section) + local value + if self.tag_error[section] then + value = self:formvalue(section) + else + value = self.map:get(section, self.option) + if type(value) == "string" then + local value2 = {} + string.gsub(value, '[^' .. " " .. ']+', function(w) table.insert(value2, w) end) + value = value2 + end + end + return value +end +source.validate = function(self, value, t) + local err = {} + for _, v in ipairs(value) do + local flag = false + if datatypes.ip4addr(v) then + flag = true + end + + if flag == false and v:find("geoip:") and v:find("geoip:") == 1 then + flag = true + end + + if flag == false then + err[#err + 1] = v + end + end + + if #err > 0 then + self:add_error(t, "invalid", translate("Not true format, please re-enter!")) + for _, v in ipairs(err) do + self:add_error(t, "invalid", v) + end + end + + return value +end + +local dynamicList_write = function(self, section, value) + local t = {} + local t2 = {} + if type(value) == "table" then + local x + for _, x in ipairs(value) do + if x and #x > 0 then + if not t2[x] then + t2[x] = x + t[#t+1] = x + end + end + end + else + t = { value } + end + t = table.concat(t, " ") + return DynamicList.write(self, section, t) +end + +source.write = dynamicList_write + +port = s:option(Value, "port", translate("port")) + domain_list = s:option(TextValue, "domain_list", translate("Domain")) domain_list.rows = 10 domain_list.wrap = "off" diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/socks_config.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/socks_config.lua index 14b09661..be67a87b 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/socks_config.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/socks_config.lua @@ -108,10 +108,8 @@ o.default = "https://www.google.com/generate_204" o:depends("enable_autoswitch", true) for k, v in pairs(nodes_table) do - if v.node_type == "normal" then - autoswitch_backup_node:value(v.id, v["remark"]) - socks_node:value(v.id, v["remark"]) - end + autoswitch_backup_node:value(v.id, v["remark"]) + socks_node:value(v.id, v["remark"]) end m:append(Template(appname .. "/socks_auto_switch/footer")) diff --git a/luci-app-passwall/luasrc/passwall/util_sing-box.lua b/luci-app-passwall/luasrc/passwall/util_sing-box.lua index e49ec994..5f2eb04b 100644 --- a/luci-app-passwall/luasrc/passwall/util_sing-box.lua +++ b/luci-app-passwall/luasrc/passwall/util_sing-box.lua @@ -1052,8 +1052,31 @@ function gen_config(var) table.insert(protocols, w) end) end + + local inboundTag = nil + if e["inbound"] and e["inbound"] ~= "" then + inboundTag = {} + if e["inbound"]:find("tproxy") then + if tcp_redir_port then + if tcp_proxy_way == "tproxy" then + table.insert(inboundTag, "tproxy_tcp") + else + table.insert(inboundTag, "redirect_tcp") + end + end + if udp_redir_port then + table.insert(inboundTag, "tproxy_udp") + end + end + if e["inbound"]:find("socks") then + if local_socks_port then + table.insert(inboundTag, "socks-in") + end + end + end local rule = { + inbound = inboundTag, outbound = outboundTag, invert = false, --匹配反选 protocol = protocols diff --git a/luci-app-passwall/luasrc/passwall/util_xray.lua b/luci-app-passwall/luasrc/passwall/util_xray.lua index b98cd94f..9f1abdd3 100644 --- a/luci-app-passwall/luasrc/passwall/util_xray.lua +++ b/luci-app-passwall/luasrc/passwall/util_xray.lua @@ -547,6 +547,7 @@ function gen_config(var) local node = uci:get_all(appname, node_id) if local_socks_port then local inbound = { + tag = "socks-in", listen = local_socks_address, port = tonumber(local_socks_port), protocol = "socks", @@ -870,39 +871,70 @@ function gen_config(var) table.insert(protocols, w) end) end + local inboundTag = nil + if e["inbound"] and e["inbound"] ~= "" then + inboundTag = {} + if e["inbound"]:find("tproxy") then + if tcp_redir_port then + table.insert(inboundTag, "tcp_redir") + end + if udp_redir_port then + table.insert(inboundTag, "udp_redir") + end + end + if e["inbound"]:find("socks") then + if local_socks_port then + table.insert(inboundTag, "socks-in") + end + end + end + local domains = nil if e.domain_list then - local _domain = {} + domains = {} string.gsub(e.domain_list, '[^' .. "\r\n" .. ']+', function(w) - table.insert(_domain, w) + table.insert(domains, w) end) - table.insert(rules, { - type = "field", - outboundTag = outboundTag, - balancerTag = balancerTag, - domain = _domain, - protocol = protocols - }) end + local ip = nil if e.ip_list then - local _ip = {} + ip = {} string.gsub(e.ip_list, '[^' .. "\r\n" .. ']+', function(w) - table.insert(_ip, w) + table.insert(ip, w) end) - table.insert(rules, { - type = "field", - outboundTag = outboundTag, - balancerTag = balancerTag, - ip = _ip, - protocol = protocols - }) end - if not e.domain_list and not e.ip_list and protocols then - table.insert(rules, { - type = "field", - outboundTag = outboundTag, - balancerTag = balancerTag, - protocol = protocols - }) + local source = nil + if e.source then + source = {} + string.gsub(e.source, '[^' .. " " .. ']+', function(w) + table.insert(source, w) + end) + end + local rule = { + _flag = e.remarks, + type = "field", + inboundTag = inboundTag, + outboundTag = outboundTag, + balancerTag = balancerTag, + network = e["network"] or "tcp,udp", + source = source, + sourcePort = nil, + port = e["port"] ~= "" and e["port"] or nil, + protocol = protocols + } + if domains then + local _rule = api.clone(rule) + _rule["_flag"] = _rule["_flag"] .. "_domains" + _rule.domains = domains + table.insert(rules, _rule) + end + if ip then + local _rule = api.clone(rule) + _rule["_flag"] = _rule["_flag"] .. "_ip" + _rule.ip = ip + table.insert(rules, _rule) + end + if not domains and not ip and protocols then + table.insert(rules, rule) end end end) diff --git a/luci-app-passwall/luasrc/view/passwall/node_list/link_share_man.htm b/luci-app-passwall/luasrc/view/passwall/node_list/link_share_man.htm index 8e78f726..12fdebe6 100644 --- a/luci-app-passwall/luasrc/view/passwall/node_list/link_share_man.htm +++ b/luci-app-passwall/luasrc/view/passwall/node_list/link_share_man.htm @@ -5,6 +5,7 @@ local api = require "luci.passwall.api" - diff --git a/luci-theme-Light/luasrc/view/themes/Light/header.htm b/luci-theme-Light/luasrc/view/themes/Light/header.htm deleted file mode 100644 index f4a68100..00000000 --- a/luci-theme-Light/luasrc/view/themes/Light/header.htm +++ /dev/null @@ -1,204 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Copyright 2012 David Menting - Licensed to the public under the Apache License 2.0. --%> - -<% - local sys = require "luci.sys" - local util = require "luci.util" - local http = require "luci.http" - local disp = require "luci.dispatcher" - - local boardinfo = util.ubus("system", "board") - - local request = disp.context.path - local request2 = disp.context.request - - local category = request[1] - local cattree = category and disp.node(category) - - local leaf = request2[#request2] - - local tree = disp.node() - local node = disp.context.dispatched - - local categories = disp.node_childs(tree) - - local c = tree - local i, r - - -- tag all nodes leading to this page - for i, r in ipairs(request) do - if c.nodes and c.nodes[r] then - c = c.nodes[r] - c._menu_selected = true - end - end - - -- send as HTML5 - http.prepare_content("text/html") - - local function nodeurl(prefix, name, query) - local url = controller .. prefix .. name .. "/" - if query then - url = url .. http.build_querystring(query) - end - return pcdata(url) - end - - local function subtree(prefix, node, level) - if not level then - level = 1 - end - - local childs = disp.node_childs(node) - if #childs > 0 then - - if level > 2 then -%> -
    - <% - end - - local selected_node - local selected_name - local i, v - - for i, v in ipairs(childs) do - local nnode = node.nodes[v] - if nnode._menu_selected then - selected_node = nnode - selected_name = v - end - if level > 2 then - %> -
  • - <%=striptags(translate(nnode.title))%> -
  • - <% end - end - - if level > 2 then - %> -
-<% end - - if selected_node then - subtree(prefix .. selected_name .. "/", selected_node, level + 1) - end - end - end --%> - - - - - <%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI - - - - - - <% if node and node.css then %> - <% end -%> - <% if css then %> - <% end -%> - - - - -
-
-
- <%=boardinfo.hostname or "?"%> - - - <% - -- calculate the number of unsaved changes - if tree.nodes[category] and tree.nodes[category].ucidata then - local ucichanges = 0 - - for i, j in pairs(require("luci.model.uci").cursor():changes()) do - for k, l in pairs(j) do - for m, n in pairs(l) do - ucichanges = ucichanges + 1; - end - end - end - %> -
- <% if ucichanges > 0 then %> - <%:Unsaved Changes%>: <%=ucichanges%> - <% end %> - -
- <% end %> -
-
-
- -<%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%> -
-
-

<%:No password set!%>

- <%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%>
- "><%:Go to password configuration...%> -
-
-<%- end -%> - -
-<% if category then subtree("/" .. category .. "/", cattree) end %> diff --git a/luci-theme-Light/root/etc/uci-defaults/luci-theme-Light b/luci-theme-Light/root/etc/uci-defaults/luci-theme-Light deleted file mode 100644 index 0dd75e5c..00000000 --- a/luci-theme-Light/root/etc/uci-defaults/luci-theme-Light +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -uci batch <<-EOF - set luci.themes.Light=/luci-static/Light - set luci.main.mediaurlbase=/luci-static/Light - commit luci -EOF -exit 0 diff --git a/luci-theme-argon/.github/workflows/manual_release.yml b/luci-theme-argon/.github/workflows/manual_release.yml deleted file mode 100644 index 514ba17e..00000000 --- a/luci-theme-argon/.github/workflows/manual_release.yml +++ /dev/null @@ -1,140 +0,0 @@ -# -# Copyright (c) 2022-2023 SMALLPROGRAM -# Description: Auto compile -# - -# -# Fork and compile the latest version yourself using Github Actions -# 1.Into the repository of your own fork -# 2.Into the repository [Settings] -# 3.[Code and automation - Actions] ↓ [General] → [Workflow permissions] ↓ Check the [Read and write permissions] and [Save] -# 4.Let's take [Actions] -# - -name: "Auto compile with OpenWrt SDK" -on: - repository_dispatch: - workflow_dispatch: - inputs: - ssh: - description: 'SSH connection to Actions' - required: false - default: 'false' - push: - branches: - - '18.06' - paths: - - 'luci-theme-argon/Makefile' -env: - TZ: Asia/Shanghai - -jobs: - job_check: - if: github.repository == ${{ github.repository }} - name: Check Version - runs-on: ubuntu-latest - outputs: - argon_version: ${{ steps.check_version.outputs.latest_version }} - has_update: ${{ steps.check_version.outputs.has_update }} - steps: - - name: Checkout - uses: actions/checkout@main - with: - fetch-depth: 0 - ref: '18.06' - - - name: Check version - id: check_version - env: - url_release: https://api.github.com/repos/${{ github.repository }}/releases/latest - run: | - latest_version=$(grep -oP 'PKG_VERSION:=\K.*' Makefile | sed 's/^/v/') - latest_release=$(wget -qO- -t1 -T2 ${{env.url_release}} | awk -F '"' '/tag_name/{print $4}') - has_update=$([ "${latest_version}" != "${latest_release}" ] && echo true || echo false) - echo "latest_version=${latest_version}" >> $GITHUB_OUTPUT - echo "has_update=${has_update}" >> $GITHUB_OUTPUT - echo "latest_version: ${latest_version}" - echo "latest_release: ${latest_release}" - echo "has_update: ${has_update}" - - - name: Generate new tag & release - if: steps.check_version.outputs.has_update == 'true' - uses: softprops/action-gh-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - name: For Lean's LEDE 18.06 LuCI - tag_name: ${{steps.check_version.outputs.latest_version}} - - job_build_argon: - name: Build Argon (18.06) - needs: job_check - if: needs.job_check.outputs.has_update == 'true' - runs-on: ubuntu-latest - steps: - - name: Install packages - run: | - echo "Install packages" - sudo -E apt-get -qq update - sudo -E apt-get -qq install build-essential clang flex bison g++ gawk gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev file wget - sudo -E apt-get -qq autoremove --purge - sudo -E apt-get -qq clean - - - name: Cache openwrt SDK - id: cache-sdk - uses: actions/cache@v3 - with: - path: sdk - key: openwrt-sdk-21.02-x86-64 - - - name: Initialization environment - if: steps.cache-sdk.outputs.cache-hit != 'true' - env: - url_sdk: https://archive.openwrt.org/releases/21.02.5/targets/x86/64/openwrt-sdk-21.02.5-x86-64_gcc-8.4.0_musl.Linux-x86_64.tar.xz - run: | - wget ${{ env.url_sdk }} - file_name=$(echo ${{env.url_sdk}} | awk -F/ '{print $NF}') - mkdir sdk && tar -xJf $file_name -C ./sdk --strip-components=1 - cd sdk - echo "src-git base https://github.com/openwrt/openwrt.git;openwrt-21.02" > feeds.conf - echo "src-git-full packages https://github.com/openwrt/packages.git;openwrt-21.02" >> feeds.conf - echo "src-git-full luci https://git.openwrt.org/project/luci.git;openwrt-18.06" >> feeds.conf - echo "src-git-full routing https://git.openwrt.org/feed/routing.git;openwrt-21.02" >> feeds.conf - git clone -b 18.06 https://github.com/${{ github.repository }}.git package/downloads/luci-theme-argon - ./scripts/feeds update -a - echo "CONFIG_PACKAGE_luci-theme-argon=m" > .config - ./scripts/feeds install -d n luci-theme-argon - make download -j8 - - - name: Configure Argon (18.06) - run: | - cd sdk - ./scripts/feeds install luci-theme-argon - echo "CONFIG_ALL_NONSHARED=n" > .config - echo "CONFIG_ALL_KMODS=n" >> .config - echo "CONFIG_ALL=n" >> .config - echo "CONFIG_AUTOREMOVE=n" >> .config - echo "CONFIG_LUCI_LANG_zh_Hans=y" >> .config - echo "CONFIG_PACKAGE_luci-theme-argon=m" >> .config - make defconfig - - - name: Compile Argon (18.06) - id: compile - run: | - cd sdk - echo "make package/luci-theme-argon/{clean,compile} -j$(nproc)" - make package/luci-theme-argon/{clean,compile} -j$(nproc) - mv bin/packages/x86_64/base/ ../ - rm .config .config.old - cd .. - echo "status=success" >> $GITHUB_OUTPUT - echo "FIRMWARE=$PWD" >> $GITHUB_ENV - - - name: Upload Argon (18.06) ipks to release - uses: softprops/action-gh-release@v1 - if: steps.compile.outputs.status == 'success' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{needs.job_check.outputs.argon_version}} - files: ${{ env.FIRMWARE }}/base/luci-theme*.ipk diff --git a/luci-theme-argon/.gitignore b/luci-theme-argon/.gitignore deleted file mode 100644 index e1e0fe55..00000000 --- a/luci-theme-argon/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ - -README_ZH.md -README.md diff --git a/luci-theme-argon/Makefile b/luci-theme-argon/Makefile deleted file mode 100644 index 6bb5b580..00000000 --- a/luci-theme-argon/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -# -# Copyright (C) 2008-2019 Jerrykuku -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Argon Theme -LUCI_DEPENDS:=+curl +jsonfilter -PKG_VERSION:=1.8.3 -PKG_RELEASE:=20230710 - -include $(TOPDIR)/feeds/luci/luci.mk - - -define Package/luci-theme-argon/postinst -#!/bin/sh -sed -i ":a;$!N;s/tmpl.render.*sysauth_template.*return/local scope = { duser = default_user, fuser = user }\nlocal ok, res = luci.util.copcall\(luci.template.render_string, [[<% include\(\"themes\/\" .. theme .. \"\/sysauth\"\) %>]], scope\)\nif ok then\nreturn res\nend\nreturn luci.template.render\(\"sysauth\", scope\)/;ba" /usr/lib/lua/luci/dispatcher.lua -sed -i ":a;$!N;s/t.render.*sysauth_template.*return/local scope = { duser = h, fuser = a }\nlocal ok, res = luci.util.copcall\(luci.template.render_string, [[<% include\(\"themes\/\" .. theme .. \"\/sysauth\"\) %>]], scope\)\nif ok then\nreturn res\nend\nreturn luci.template.render\(\"sysauth\", scope\)/;ba" /usr/lib/lua/luci/dispatcher.lua -[ -f /usr/lib/lua/luci/view/themes/argon/out_header_login.htm ] && mv -f /usr/lib/lua/luci/view/themes/argon/out_header_login.htm /usr/lib/lua/luci/view/header_login.htm -rm -Rf /var/luci-modulecache -rm -Rf /var/luci-indexcache -exit 0 -endef - -# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-theme-argon/Screenshots/screenshot_pc.jpg b/luci-theme-argon/Screenshots/screenshot_pc.jpg deleted file mode 100644 index 4c355449..00000000 Binary files a/luci-theme-argon/Screenshots/screenshot_pc.jpg and /dev/null differ diff --git a/luci-theme-argon/Screenshots/screenshot_phone.jpg b/luci-theme-argon/Screenshots/screenshot_phone.jpg deleted file mode 100644 index 8237a036..00000000 Binary files a/luci-theme-argon/Screenshots/screenshot_phone.jpg and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/css/cascade.css b/luci-theme-argon/htdocs/luci-static/argon/css/cascade.css deleted file mode 100644 index c289aaee..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/css/cascade.css +++ /dev/null @@ -1,3361 +0,0 @@ -/** - * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template - * - * luci-theme-argon - * Copyright 2020 Jerryk - * - * Have a bug? Please create an issue here on GitHub! - * https://github.com/jerrykuku/luci-theme-argon/issues - * - * luci-theme-bootstrap: - * Copyright 2008 Steven Barth - * Copyright 2008 Jo-Philipp Wich - * Copyright 2012 David Menting - * - * MUI: - * https://github.com/muicss/mui - * - * luci-theme-material: - * https://github.com/LuttyYang/luci-theme-material/ - * - * Argon Theme - * https://demos.creative-tim.com/argon-dashboard/index.html - * - * Login background - * https://unsplash.com/ - * - * Licensed to the public under the Apache License 2.0 - */ -/* - * Font generate by Icomoon - */ -/* - * Common Styles - */ -@import url("fonts.css?v=3"); -@import url("pure-min.css?v=1"); -:root { - /** general **/ - --primary: #5e72e4; - --dark-primary: #483d8b; - --background-color: #f4f5f7; - --font-color: #525f7f; - /** login form **/ - --login-form-background-color: #ffffff; - --darker: black; - --default: #525461; - --warning: #fb6340; - --footer-color: #aaa; - --menubar-background: #fff; - --menubar-scrollbar-thumb: #eee; - --menubar-text-color: #4c4c4c; - --blue: #5e72e4; - --indigo: #5603ad; - --purple: #8965e0; - --pink: #f3a4b5; - --red: #f5365c; - --orange: #fb6340; - --yellow: #ffd600; - --green: #2dce89; - --teal: #11cdef; - --cyan: #2bffc6; - --white: #fff; - --gray: #8898aa; - --gray-dark: #32325d; - --light: #ced4da; - --lighter: #e9ecef; - --secondary: #f7fafc; - --success: #2dce89; - --info: #11cdef; - --danger: #f5365c; - --light: #adb5bd; - --dark: #212529; - --neutral: #fff; - --login-form-bg-color: rgba(244, 245, 247, 0.8); - --blur-radius: 10px; - --blur-opacity: 0.5; - --blur-radius-dark: 10px; - --blur-opacity-dark: 0.5; - --font-family-sans-serif: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; - --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; - --font-family-normal: Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif; -} -[data-theme="dark"] { - --primary: #483d8b; - --dark-primary: #483d8b; - --background-color: #1e1e1e; - --font-color: #cccccc; - --darker: black; - --default: #525461; - --warning: #fb6340; - --footer-color: #aaa; - --menubar-background: #fff; - --menubar-scrollbar-thumb: #f6f9fc; - --menubar-text-color: #4c4c4c; - --blue: #5e72e4; - --indigo: #5603ad; - --purple: #8965e0; - --pink: #f3a4b5; - --red: #f5365c; - --orange: #fb6340; - --yellow: #ffd600; - --green: #2dce89; - --teal: #11cdef; - --cyan: #2bffc6; - --white: #fff; - --gray: #8898aa; - --gray-dark: #32325d; - --light: #ced4da; - --lighter: #e9ecef; - --secondary: #f7fafc; - --success: #2dce89; - --info: #11cdef; - --danger: #f5365c; - --light: #adb5bd; - --dark: #212529; - --neutral: #fff; - --login-form-bg-color: rgba(244, 245, 247, 0.8); - --blur-radius: 10px; - --blur-opacity: 0.5; - --blur-radius-dark: 10px; - --blur-opacity-dark: 0.5; - --font-family-sans-serif: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; - --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; - --font-family-normal: Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif; -} -html, -body { - margin: 0px; - padding: 0px; - height: 100%; - font-size: 16px; - font-family: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; - font-family: var(--font-family-sans-serif); -} -html { - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -body { - font-size: 0.875rem; - background-color: #f4f5f7; - background-color: var(--background-color); - color: #525f7f; - color: var(--font-color); -} -* { - margin: 0; - padding: 0; - box-sizing: border-box; - -webkit-tap-highlight-color: transparent; -} -::selection { - background-color: #5e72e4; - background-color: var(--primary); - color: #ffffff; - color: var(--white); -} -::-webkit-scrollbar { - width: 10px; - height: 10px; -} -::-webkit-scrollbar, -::-webkit-scrollbar-corner { - background: transparent; -} -::-webkit-scrollbar-thumb { - background: #9e9e9e; -} -::-webkit-scrollbar-thumb:hover { - background: #757575; -} -::-webkit-scrollbar-thumb:active { - background: #424242; -} -a:link, -a:visited, -a:active { - color: var(--primary); - text-decoration: none; -} -a:-webkit-any-link:not(li a, .main-left a, .brand, .pull-right a, .alert-message a, .login-container footer a, .cbi-button) { - color: -webkit-link; - cursor: pointer; - color: var(--primary); - text-shadow: 1px 1px 2px #ccc; -} -a:hover { - text-decoration: underline; -} -li { - list-style-type: none; -} -@-webkit-keyframes sparkle { - from { - background-position: 0 0; - } - to { - background-position: 0 -64px; - } -} -@-moz-keyframes sparkle { - from { - background-position: 0 0; - } - to { - background-position: 0 -64px; - } -} -@-o-keyframes sparkle { - from { - background-position: 0 0; - } - to { - background-position: 0 -64px; - } -} -@keyframes sparkle { - from { - background-position: 0 0; - } - to { - background-position: 0 -64px; - } -} -/*********************** -* -* Login Page -* -***************************/ -.login-container { - margin: auto; - height: 500px!important; - min-height: 500px!important; - left: 0; - right: 0; - bottom: 0; - margin-left: auto!important; - border-radius: 10px; -} -.login-form { - background-color: rgba(255, 255, 255, 0)!important; - border-radius: 10px; -} -.login-form .brand { - margin: 20px auto 20px 108px!important; -} -.input-group { - margin-bottom: 1rem!important; -} -.input-group input { - margin-bottom: 0!important; -} -.ftc { - bottom: 0!important; -} -.login-page { - height: 100%; -} -.login-page .video { - position: absolute; - width: 100%; - height: 100%; - display: flex; - align-items: center; - justify-content: center; - background-color: #000; - background-color: var(--darker); - overflow: hidden; -} -.login-page .video video { - width: 100%; - height: 100%; - object-fit: cover; -} -.login-page .volume-control { - position: fixed; - right: 1rem; - top: 1rem; - width: 1.5rem; - height: 1.5rem; - z-index: 5000; - cursor: pointer; - background-size: contain; - background-image: url(../img/volume_high.svg); -} -.login-page .volume-control.mute { - background-image: url(../img/volume_off.svg); -} -.login-page .main-bg { - position: fixed; - width: 100%; - height: 100%; - left: 0; - top: 0; - background-image: url(../img/blank.png); - background-repeat: no-repeat; - background-position: center; - background-size: cover; - transition: all 0.5s; -} -.login-page .login-container { - height: 100%; - margin-left: 4.5rem; - position: absolute; - top: 0px; - display: flex; - flex-direction: column; - -webkit-box-pack: center; - justify-content: center; - align-items: flex-start; - min-height: 100%; - z-index: 2; - width: 420px; - box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 35px -5px; - margin-left: 5%; - background: transparent; -} -.login-page .login-container .login-form { - display: flex; - flex-direction: column; - -webkit-box-align: center; - align-items: center; - position: absolute; - top: 0px; - width: 100%; - min-height: 100%; - max-width: 420px; - background-color: #fff; - background-color: var(--white); - overflow:hidden; -} -.login-page .login-container .login-form .brand { - display: flex; - -webkit-box-align: center; - align-items: center; - margin: 50px auto 15px auto; - color: #525461; - color: var(--default); -} -.login-page .login-container .login-form .brand .icon { - width: 50px; - height: auto; -} -.login-page .login-container .login-form .brand-text { - font-size: 1.8rem; - font-weight: 700; - letter-spacing: 1px; - margin-bottom: auto; - font-family: "TypoGraphica"; - width: 420px; - padding: 0 0.5rem 0.1rem 0.5rem; - text-align: center; - word-break: break-word; - overflow: hidden; - text-overflow: ellipsis; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; -} -.login-page .login-container .login-form .brand:hover { - text-decoration: none; -} -.login-page .login-container .login-form .form-login { - width: 420px; - padding: 20px 50px; - box-sizing: border-box; -} -.login-page .login-container .login-form .form-login .errorbox { - text-align: center; - color: #fb6340; - color: var(--warning); -} -.login-page .login-container .login-form .form-login .input-group { - margin-bottom: 1.25rem; - position: relative; -} -.login-page .login-container .login-form .form-login .input-group::before { - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - color: #525461; - color: var(--default); - font-size: 1.5rem; - position: absolute; - z-index: 100; - left: 10px; - top: 10px; -} -.login-page .login-container .login-form .form-login .input-group .border { - position: absolute; - width: 100%; - height: 1px; - bottom: 0; - border-bottom: 1px #5e72e4 solid; - border-bottom: 1px var(--primary) solid; - transform: scaleX(0); - transition: transform 0.3s; -} -.login-page .login-container .login-form .form-login .input-group input { - font-size: 1rem; - line-height: 1.5em; - display: block; - width: 100%; - padding: 0.5rem 0.75rem 0.5rem 3rem; - margin: 0.825rem 0; - box-sizing: border-box; - transition: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55); - color: #525461; - color: var(--default); - border: 0; - border-radius: 0; - border-bottom: 1px solid #fff; - border-bottom: 1px solid var(--white); - background-color: transparent; - background-clip: padding-box; - box-shadow: 0 3px 2px rgba(233, 236, 239, 0.05); - outline: none; -} -.login-page .login-container .login-form .form-login .input-group input:focus + .border { - transform: scaleX(1); -} -.login-page .login-container .login-form .form-login .input-group .cbi-input-password { - margin-bottom: 2rem; - position: relative; -} -.login-page .login-container .login-form .form-login .user-icon::before { - content: "\e971"; -} -.login-page .login-container .login-form .form-login .pass-icon::before { - content: "\e910"; -} -.login-page .login-container .login-form .cbi-button-apply { - width: 100% !important; - box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 50px 0px; - font-weight: 600; - font-size: 15px; - color: #fff; - color: var(--white); - text-align: center; - width: 100%; - cursor: pointer; - min-height: 50px; - background-color: #5e72e4 !important; - background-color: var(--primary) !important; - border-radius: 6px; - outline: none; - border-width: initial; - border-style: none; - border-color: initial; - border-image: initial; - padding: 10px 0px; - margin: 30px 0px 100px; - transition: all 0.3s !important; - letter-spacing: 0.8rem; -} -.login-page .login-container .login-form .cbi-button-apply:hover, -.login-page .login-container .login-form .cbi-button-apply :focus { - opacity: 0.9; -} -.login-page .login-container footer { - box-sizing: border-box; - width: 100%; - text-align: center; - line-height: 1.6rem; - display: flex; - justify-content: space-evenly; - margin-top: auto; - padding: 0px 0px 30px; - z-index: 10; - color: #525461; - color: var(--default); - position: absolute; - bottom: 0; -} -.login-page .login-container footer, -.login-page .login-container footer a { - color: var(--default); -} -.login-page .login-container footer .ftc { - position: absolute; - bottom: 30px; - width: 100%; -} -.login-page .login-container footer .luci-link { - display: block; -} -.pull-right { - float: right; -} -.pull-left { - float: left; -} -@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { - .login-page .login-container .login-form { - -webkit-backdrop-filter: blur(var(--blur-radius)); - backdrop-filter: blur(var(--blur-radius)); - background-color: rgba(244, 245, 247, var(--blur-opacity)); - } -} -/*********************** -* -* Header -* -***************************/ -header { - width: 100%; - padding: 0 0 0 0; - position: relative; -} -header .container { - margin-top: rem; - padding: 0.5rem 1rem 0 1rem; -} -header .container .pull-right > * { - position: relative; - top: 0.45rem; - cursor: pointer; -} -header::after { - content: ""; - position: absolute; - height: 2rem; - width: 100%; - background-color: #5e72e4 !important; - background-color: var(--primary) !important; -} -header.bg-primary { - background-color: #5e72e4 !important; - background-color: var(--primary) !important; -} -header .fill { - padding: 0.8rem 0; - border-bottom: 0px solid rgba(255, 255, 255, 0.08) !important; -} -header .fill .container { - height: 2rem; - padding: 0 1.25rem; -} -header .fill .container .brand { - font-size: 1.5rem; - color: #fff; - color: var(--white); - font-family: "TypoGraphica"; - text-decoration: none; - padding-left: 1rem; - cursor: default; - vertical-align: text-bottom; - display: none; -} -/*********************** -* -* Footer -* -***************************/ -footer { - text-align: right; - padding: 1rem; - font-size: 0.8rem; -} -footer a { - text-decoration: none; -} -/*********************** -* -* Main -* -***************************/ -@keyframes anim-rotate { - 0% { - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - } - 100% { - -webkit-transform: rotate(360deg); - -ms-transform: rotate(360deg); - transform: rotate(360deg); - } -} -.main { - top: 0rem; - bottom: 0rem; - position: relative; - height: 100%; - width: 100%; - height: calc(100% - 4rem); -} -.main .main-left { - float: left; - width: 15%; - width: calc(0% + 15rem); - height: 100%; - background-color: #fff !important; - background-color: var(--menubar-background) !important; - box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 15px -5px; - overflow-x: auto; - position: fixed; - z-index: 100; - transition: width 0.2s ease-in-out; - overflow-y: scroll; -} -.main .main-left::-webkit-scrollbar { - width: 5px; - height: 1px; -} -.main .main-left::-webkit-scrollbar-thumb { - background-color: #f6f9fc; - background-color: var(--menubar-scrollbar-thumb); -} -.main .main-left::-webkit-scrollbar-track { - background-color: transparent; -} -.main .main-left .sidenav-header { - padding: 1.5rem; - text-align: center; -} -.main .main-left .sidenav-header .brand { - font-size: 1.8rem; - color: #5e72e4; - color: var(--primary); - font-family: "TypoGraphica", sans-serif; - text-decoration: none; - padding-left: 0; - cursor: default; - vertical-align: text-bottom; - white-space: nowrap; -} -.main .main-left .nav { - margin-top: 0.5rem; -} -.main .main-left .nav li { - padding: 0rem; - cursor: pointer; -} -.main .main-left .nav li a { - color: #525f7f; - color: var(--default); - display: block; -} -.main .main-left .nav li:nth-last-child(1) { - font-size: 1.2rem; -} -.main .main-left .nav li:nth-last-child(1) .menu:after { - content: ""; -} -.main .main-left .nav li.slide { - padding: 0; -} -.main .main-left .nav li.slide ul { - display: none; -} -.main .main-left .nav li.slide ul li a { - position: relative; - margin: 0.1rem 1rem 0.1rem 3rem; - padding: 0.5rem 0rem 0.5rem 0; - text-decoration: none; - white-space: nowrap; - color: #4c4c4c; - color: var(--menubar-text-color); - transition: all 0.2s; - font-size: 0.875rem; -} -.main .main-left .nav li.slide ul li a::after { - content: ""; - position: absolute; - width: 00%; - height: 2px; - left: 0; - bottom: 0; - background-color: #5e72e4; - background-color: var(--primary); - transition: all 0.2s; -} -.main .main-left .nav li.slide ul li a:hover::after { - color: #000; - color: var(--darker); - width: 100%; -} -.main .main-left .nav li.slide .menu { - display: block; - margin: 0.1rem 0.5rem 0.1rem 0.5rem; - padding: 0.675rem 0 0.675rem 2.5rem; - border-radius: 0.375rem; - text-decoration: none; - cursor: default; - font-size: 1rem; - transition: all 0.2s; - position: relative; -} -.main .main-left .nav li.slide .menu::before { - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - left: 0.8rem; - content: "\e915"; - color: #5e72e4; - color: var(--primary); -} -.main .main-left .nav li.slide .menu::after { - position: absolute; - right: 0.5rem; - top: 0.8rem; - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Better Font Rendering =========== */ - -moz-osx-font-smoothing: grayscale; - content: '\e90f'; - transition: all 0.15s ease; - color: #ced4da; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - transition: all 0.3s; -} -.main .main-left .nav li.slide .menu:hover, -.main .main-left .nav li.slide .menu.active { - cursor: pointer; - color: #fff; - background: #5e72e4; - background: var(--primary); - box-shadow: 0 0 1px #ccc; -} -.main .main-left .nav li.slide .menu:hover a, -.main .main-left .nav li.slide .menu.active a { - color: #000; -} -.main .main-left .nav li.slide .menu:hover a::after, -.main .main-left .nav li.slide .menu.active a::after { - color: #000; - width: 100%; -} -.main .main-left .nav li.slide .menu:hover::before, -.main .main-left .nav li.slide .menu.active::before { - color: #fff !important; -} -.main .main-left .nav li.slide .menu:hover::after, -.main .main-left .nav li.slide .menu.active::after { - color: #fff; -} -.main .main-left .nav li.slide .menu.active::after { - transform: rotate(90deg); -} -.main .main-left .nav li.slide .menu[data-title=Status]:before { - content: "\e906"; - color: #5e72e4; - color: var(--primary); -} -.main .main-left .nav li.slide .menu[data-title=System]:before { - content: "\e90a"; - color: #fb6340; -} -.main .main-left .nav li.slide .menu[data-title=Services]:before { - content: "\e909"; - color: #11cdef; -} -.main .main-left .nav li.slide .menu[data-title=NAS]:before { - content: "\e90c"; - color: #f3a4b5; -} -.main .main-left .nav li.slide .menu[data-title=VPN]:before { - content: "\e90b"; - color: #aaad03; -} -.main .main-left .nav li.slide .menu[data-title=Network]:before { - content: "\e908"; - color: #8965e0; -} -.main .main-left .nav li.slide .menu[data-title=Bandwidth_Monitor]:before { - content: "\e90d"; - color: #2dce89; -} -.main .main-left .nav li.slide .menu[data-title=Docker]:before { - content: "\e911"; - color: #6699ff; -} -.main .main-left .nav li.slide .menu[data-title=Statistics]:before { - content: "\e913"; - color: #5603ad; -} -.main .main-left .nav li.slide .menu[data-title=Control]:before { - content: "\e912"; - color: #5e72e4; - color: var(--primary); -} -.main .main-left .nav li.slide .menu[data-title=Asterisk]:before { - content: "\e914"; - color: #fb6340; -} -.main .main-left .nav li.slide .menu[data-title=Logout]:before { - content: "\e907"; - color: #adb5bd; -} -.main .main-left .nav li.slide .slide-menu li a { - position: relative; - margin: 0.1rem 1rem 0.1rem 3rem; - padding: 0.5rem 0rem 0.5rem 0; - text-decoration: none; - white-space: nowrap; - color: rgba(0, 0, 0, 0.6); - transition: all 0.2s; - font-size: 0.875rem; -} -.main .main-left .nav li.slide .slide-menu li a::after { - content: ""; - position: absolute; - width: 00%; - height: 2px; - left: 0; - bottom: 0; - background-color: #5e72e4; - background-color: var(--primary); - transition: all 0.2s; - box-shadow: 0 0 1px #ccc; -} -.main .main-left .nav li.slide .slide-menu li a:hover::after { - color: #000; - width: 100%; -} -.main .main-left .nav li.slide .slide-menu .active a { - color: #000; -} -.main .main-left .nav li.slide .slide-menu .active a::after { - color: #000; - width: 100%; -} -.main .main-left .nav li.slide:last-child > .menu::after { - content: ""; -} -.main .main-right { - width: 85%; - width: calc(100% - 15rem); - float: right; - height: auto; - transition: width 0.3s ease-in-out; -} -.main .main-right #maincontent { - position: relative; - z-index: 50; -} -.main .main-right #maincontent .container { - margin: 0 1.25rem 1rem 1.25rem; -} -.main .main-right #maincontent .container p { - color: #32325d; - line-height: 1.5em; -} -.main .main-right #maincontent .container > div:nth-child(1).alert-message.warning > a { - font: inherit; - overflow: visible; - text-transform: none; - display: inline-block; - margin-bottom: 0; - font-weight: 400; - text-align: center; - white-space: nowrap; - vertical-align: middle; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - min-width: 6rem; - padding: 0.5rem 1rem; - font-size: 0.9rem; - line-height: 1.42857143; - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; - margin-top: 2rem; - text-decoration: inherit; -} -.main .loading { - position: fixed; - width: 100%; - height: 100%; - z-index: 2000; - display: flex; - align-items: center; - justify-content: center; - background-color: #f8f9fe; - top: 0; -} -.main .loading span { - display: block; - text-align: center; - margin-top: 2rem; - color: #5e72e4; - color: var(--primary); - font-size: 2rem; -} -.main .loading span .loading-img { - animation: anim-rotate 2s infinite linear; - margin-right: 0.4rem; - display: inline-block; -} -.main .loading span .loading-img::before { - content: "\e603"; -} -/* button style */ -.cbi-button { - -webkit-appearance: none; - text-transform: uppercase; - height: auto; - color: rgba(0, 0, 0, 0.87); - background-color: #F0F0F0; - transition: all 0.2s ease-in-out; - display: inline-block; - padding: 0.75rem 0.8rem; - border: none; - border-radius: 0.2rem; - cursor: pointer; - -ms-touch-action: manipulation; - touch-action: manipulation; - background-image: none; - text-align: center; - vertical-align: middle; - white-space: nowrap; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - font-size: 0.875rem; - width: auto !important; - line-height: 1em; -} -.cbi-button:hover, -.cbi-button:focus, -.cbi-button:active { - outline: 0; - text-decoration: none; -} -.cbi-button:hover, -.cbi-button:focus { - box-shadow: 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); -} -.cbi-button:active { - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.19), 0 5px 5px rgba(0, 0, 0, 0.23); -} -.cbi-button:disabled { - cursor: not-allowed; - pointer-events: none; - opacity: 0.6; - box-shadow: none; -} -.cbi-button-check { - margin-top: 0.25rem !important; -} -form.inline + form.inline, -.cbi-button + .cbi-button { - margin-left: 0rem; -} -.cbi-button-reset, -.cbi-input-remove { - color: #fff !important; - background-color: #f0ad4e !important; - border-color: #eea236 !important; -} -.cbi-input-find, -.cbi-input-save, -.cbi-button-add, -.cbi-button-save, -.cbi-button-find, -.cbi-input-reload, -.cbi-button-reload { - color: #fff !important; - background-color: #337ab7 !important; - border-color: #2e6da4 !important; -} -.cbi-value-field .cbi-input-apply, -.cbi-button-apply, -.cbi-button-edit { - color: #fff !important; - background-color: #5e72e4 !important; - background-color: var(--primary) !important; - border-color: #5e72e4 !important; - border-color: var(--primary) !important; -} -.node-services-vssr .ssr-button { - margin-left: 0.3rem; -} -.cbi-section-remove > .cbi-button, -.cbi-button-remove { - color: #fff !important; - background-color: #fb6340 !important; - border-color: #fb6340 !important; -} -.cbi-value-field .cbi-button-add, -.cbi-value-field .cbi-button-remove, -.cbi-value-field .cbi-button-neutral { - min-width: 2.5rem !important; -} -/* Replace LuCI's default file and folder type icons */ -img[src="/luci-static/resources/cbi/reload.gif"] { - content: url("/luci-static/argon/img/reload.webp"); -} -img[src="/luci-static/resources/cbi/file.gif"] { - content: url("/luci-static/argon/img/file.webp"); -} -img[src="/luci-static/resources/cbi/add.gif"] { - content: url("/luci-static/argon/img/add.webp"); -} -img[src="/luci-static/resources/cbi/remove.gif"] { - content: url("/luci-static/argon/img/remove.webp"); -} -img[src="/luci-static/resources/cbi/edit.gif"] { - content: url("/luci-static/argon/img/edit.webp"); -} -img[src="/luci-static/resources/cbi/fieldadd.gif"] { - content: url("/luci-static/argon/img/fieldadd.webp"); -} -img[src="/luci-static/resources/cbi/link.gif"] { - content: url("/luci-static/argon/img/link.webp"); -} -img[src="/luci-static/resources/cbi/find.gif"] { - content: url("/luci-static/argon/img/find.webp"); -} -img[src="/luci-static/resources/cbi/folder.gif"] { - content: url("/luci-static/argon/img/folder.webp"); -} -/* input */ -.cbi-value input[type="password"], -.cbi-value input[type="text"] { - min-width: 15rem; -} -/* select */ -.cbi-value-field .cbi-dropdown { - min-width: 15rem; -} -select { - min-width: 20rem; - appearance: none; - -webkit-appearance: none; - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTY1MzQ4MDM3OTIyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI1ODMiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4qIHsgdGV4dC1zaGFkb3c6IHRyYW5zcGFyZW50IDBweCAwcHggMHB4LCByZ2JhKDAsIDAsIDAsIDAuNSkgMHB4IDBweCAwcHggIWltcG9ydGFudDsgfQo8L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMjAuNDggMjQ1Ljc2aDk4My4wNEw1MTIgNzc4LjI0eiIgcC1pZD0iMjU4NCIgZmlsbD0iIzcwNzA3MCI+PC9wYXRoPjwvc3ZnPg==') !important; - background-position: 96%; - background-size: 8px; - background-repeat: no-repeat; -} -.th[data-type="button"], -.td[data-type="button"], -.th[data-type="fvalue"], -.td[data-type="fvalue"] { - flex: 1 1 2em; - text-align: center; -} -/*textarea*/ -textarea { - border: 1px solid #dee2e6 !important; - outline: none; - min-height: 14rem !important; - padding: 0.8rem !important; - background-color: #fff; - font-family: var(--font-family-monospace) !important; - font-size: inherit; - color: black; - border-radius: 0.375rem !important; - vertical-align: middle; -} -.cbi-value .cbi-value-field textarea { - margin: 0.25rem; -} -/* change */ -.uci-change-list { - font-family: monospace; -} -.uci-change-list ins, -.uci-change-legend-label ins { - text-decoration: none; - border: 1px solid #00FF00; - background-color: #CCFFCC; - display: block; - padding: 2px; -} -.uci-change-list del, -.uci-change-legend-label del { - text-decoration: none; - border: 1px solid #FF0000; - background-color: #FFCCCC; - display: block; - font-style: normal; - padding: 2px; -} -.uci-change-list var, -.uci-change-legend-label var { - text-decoration: none; - border: 1px solid #CCCCCC; - background-color: #EEEEEE; - display: block; - font-style: normal; - padding: 2px; -} -.uci-change-list var ins, -.uci-change-list var del { - border: none; - white-space: pre; - font-style: normal; - padding: 0px; -} -.uci-change-list ins strong { - display: inline; -} -.uci-change-legend { - padding: 5px; -} -.uci-change-legend-label { - display: flex; - align-items: center; - width: auto; - float: left; - margin-right: 2rem; -} -.uci-change-legend-label > ins, -.uci-change-legend-label > del, -.uci-change-legend-label > var { - float: left; - margin-right: 4px; - width: 10px; - height: 10px; - display: block; -} -.uci-change-legend-label var ins, -.uci-change-legend-label var del { - line-height: 0; - border: none; -} -.uci-change-list var, -.uci-change-list del, -.uci-change-list ins { - padding: 0.5rem; -} -/* other fix */ -input[type="checkbox"] { - appearance: none !important; - -webkit-appearance: none !important; - border: 1px solid #dee2e6; - width: 17px !important; - height: 17px !important; - padding: 0; - cursor: pointer; - transition: all 0.2s; - margin: 0.5rem 0.25rem 0.7rem 0.25rem; - vertical-align: middle; -} -input[type="checkbox"]:checked { - background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important; - background-color: #5e72e4; - background-color: var(--primary); - background-size: 70%; - background-repeat: no-repeat; - background-position: center; -} -ul li .cbi-input-checkbox { - margin: 0.5rem 0.25rem 0.7rem 0.25rem !important; - vertical-align: middle !important; -} -.cbi-input-radio { - appearance: none !important; - -webkit-appearance: none !important; - border: 1px solid #dee2e6; - width: 16px !important; - height: 16px !important; - padding: 0; - border-radius: 50%; - cursor: pointer; - transition: all 0.2s; - margin: 0.25rem 0; -} -.cbi-input-radio:checked { - background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'-4 -4 8 8\'%3e%3ccircle r=\'3\' fill=\'%23fff\'/%3e%3c/svg%3e') !important; - background-color: #5e72e4; - background-color: var(--primary); - background-size: 70%; - background-repeat: no-repeat; - background-position: center; -} -.toggle { - position: relative; - display: block; - width: 40px; - height: 20px; - cursor: pointer; - -webkit-tap-highlight-color: transparent; - transform: translate3d(0, 0, 0); - margin: 1em 0; -} -.toggle:before { - content: ""; - position: relative; - top: 3px; - left: 3px; - width: 34px; - height: 14px; - display: block; - background: #9A9999; - border-radius: 8px; - transition: background 0.2s ease; -} -.toggle span { - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 20px; - display: block; - background: white; - border-radius: 10px; - box-shadow: 0 3px 8px rgba(154, 153, 153, 0.5); - transition: all 0.2s ease; -} -.toggle span:before { - content: ""; - position: absolute; - display: block; - margin: -18px; - width: 56px; - height: 56px; - background: rgba(79, 46, 220, 0.5); - border-radius: 50%; - transform: scale(0); - opacity: 1; - pointer-events: none; -} -.cbi-input-checkbox:checked + .toggle:before { - background: #947ADA; -} -.cbi-input-checkbox:checked + .toggle span { - background: #4F2EDC; - transform: translateX(20px); - transition: all 0.2s cubic-bezier(0.8, 0.4, 0.3, 1.25), background 0.15s ease; - box-shadow: 0 3px 8px rgba(79, 46, 220, 0.2); -} -.cbi-input-checkbox:checked + .toggle span:before { - transform: scale(1); - opacity: 0; - transition: all 0.4s ease; -} -.cbi-value-field .cbi-input-checkbox, -.cbi-value-field .cbi-input-radio { - margin-top: 0.5rem; - height: 1rem; -} -.td .cbi-input-checkbox, -.td .cbi-input-radio { - margin-top: 0; -} -.cbi-value-field > input + .cbi-value-description { - padding: 0; -} -.cbi-value-field > ul > li { - display: flex; -} -.cbi-value-field > ul > li > label { - margin-top: 0rem; -} -.cbi-value-field > ul > li .ifacebadge { - background-color: #eee; - margin-left: 0.4rem; - margin-top: -0.5rem; -} -.cbi-section-table-row > .cbi-value-field .cbi-dropdown { - min-width: 7rem; -} -.cbi-section-create { - margin: 0; - padding-left: 0.5rem; - align-items: center; -} -.cbi-section-create > * { - margin: 0.25rem; -} -.cbi-section-remove { - padding: 0.5rem; -} -div.cbi-value var, -td.cbi-value-field var, -.td.cbi-value-field var { - font-style: italic; - color: var(--primary); - text-shadow: 1px 1px 2px #ccc; -} -small { - font-size: 90%; - white-space: normal; - line-height: 1.42857143; -} -.cbi-button-up, -.cbi-button-down { - display: inline-block; - min-width: 0; - padding: 0.2rem 0.6rem; - font-size: 1.2rem; - color: #5e72e4 !important; - color: var(--primary) !important; -} -.cbi-optionals { - padding: 1rem 1rem 0 1rem; - border-top: 1px solid #CCC; -} -.cbi-dropdown-container { - position: relative; -} -.cbi-tooltip-container { - cursor: help; -} -.cbi-tooltip { - position: absolute; - z-index: 1000; - left: -1000px; - opacity: 0; - transition: opacity 0.25s ease-out; - pointer-events: none; - box-shadow: 0 0 2px #444; -} -.cbi-tooltip-container:hover .cbi-tooltip { - left: auto; - opacity: 1; - transition: opacity 0.25s ease-in; -} -.cbi-map-descr + fieldset { - margin-top: 1rem; -} -.cbi-section > legend { - display: none !important; -} -/* Define the error text border breathe display animation */ -@keyframes error-border-breathe { - 0%{ - border-color: #fb6340; - } - 50%{ - border-color: transparent; - } - 100%{ - border-color: #fb6340; - } -} -/* Center display error text box */ -.cbi-section-error > ul{ - text-align: center; -} -/* Add border for error text box, and border breathe display animation to make it more noticeable */ -.cbi-section-error > ul > li { - font-weight: 600; - max-width: 60%; - color: #fb6340; - line-height: 1rem; - display: inline-block; - border: 2px solid #fb6340; - border-radius: 0.3rem; - animation: error-border-breathe 1.5s ease-in-out infinite; - padding-left: 4px; - padding-right: 4px; - padding-top: 2px; - padding-bottom: 2px; -} -.cbi-input-invalid, -.cbi-value-error input { - color: #fb6340; - border: 1px dashed #fb6340; -} -fieldset > fieldset { - margin: 0; - padding: 0; - border: none; - box-shadow: none; -} -.zonebadge .cbi-tooltip { - padding: 0.25rem; - background: inherit; - margin: -1.5rem 0 0 -0.5rem; -} -.zonebadge-empty { - background: repeating-linear-gradient(45deg, rgba(204, 204, 204, 0.5), rgba(204, 204, 204, 0.5) 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px); - color: #404040; -} -.zone-forwards { - display: flex; - min-width: 10rem; -} -.zone-forwards > * { - flex: 1 1 45%; -} -.zone-forwards > span { - flex-basis: 10%; - text-align: center; - padding: 0 0.25rem; -} -.zone-forwards .zone-src, -.zone-forwards .zone-dest { - display: flex; - flex-direction: column; -} -#diag-rc-output > pre { - background-color: #fff; - display: block; - padding: 8.5px; - margin: 0 0 18px; - line-height: 1.5rem; - white-space: pre-wrap; - word-wrap: break-word; - font-size: 1.4rem; - color: #404040; -} -input[name="ping"], -input[name="traceroute"], -input[name="nslookup"] { - width: 80%; -} -/* fix progress bar */ -#swaptotal > div, -#swapfree > div, -#memfree > div, -#membuff > div, -#conns > div, -#memtotal > div { - width: 100% !important; - height: 1.6rem !important; - line-height: 1.6rem; - border-radius: 0.25rem; - overflow: hidden; -} -#swaptotal > div > div, -#swapfree > div > div, -#memfree > div > div, -#membuff > div > div, -#conns > div > div, -#memtotal > div > div { - height: 100% !important; - background-color: #5e72e4 !important; - background-color: var(--primary) !important; - background-image: url(../img/trafficbar.png); - background-position: left top; - animation: sparkle 1000ms linear infinite; -} -#swaptotal > div > div > div > small, -#swapfree > div > div > div > small, -#memfree > div > div > div > small, -#membuff > div > div > div > small, -#conns > div > div > div > small, -#memtotal > div > div > div > small { - text-shadow: 1px 1px 2px #ccc; -} -/* fix multiple table */ -table table, -.table .table { - border: none; -} -.cbi-value-field table, -.cbi-value-field .table { - border: none; -} -td > table > tbody > tr > td, -.td > .table > .tbody > .tr > .td { - border: none; -} -.cbi-value-field > table > tbody > tr > td, -.cbi-value-field > .table > .tbody > .tr > .td { - border: none; -} -/* button style */ -.cbi-page-actions .cbi-button-apply, -.cbi-section-actions .cbi-button-edit, -.cbi-button-edit.important, -.cbi-button-apply.important, -.cbi-button-reload.important, -.cbi-button-action.important { - color: #fff; - background-color: #337ab7; -} -.cbi-page-actions .cbi-button-save, -.cbi-button-add.important, -.cbi-button-save.important, -.cbi-button-positive.important { - color: #fff; - background-color: #5bc0de; -} -.cbi-button-remove.important, -.cbi-button-reset.important, -.cbi-button-negative.important { - color: #fff; - background-color: #d9534f; -} -.cbi-button-find, -.cbi-button-link, -.cbi-button-neutral { - color: #fff !important; - border: 1px solid #f0ad4e !important; - background-color: #f0ad4e !important; -} -.cbi-button-edit, -.cbi-button-apply, -.cbi-button-reload, -.cbi-button-action { - color: #2e6da4; - border: 1px solid #2e6da4; - background-color: transparent; -} -.cbi-page-actions .cbi-button-apply + .cbi-button-save, -.cbi-button-add, -.cbi-button-save, -.cbi-button-positive { - color: #46b8da; - border: 1px solid #46b8da; - background-color: transparent; -} -.cbi-section-remove > .cbi-button, -.cbi-button-remove, -.cbi-button-reset, -.cbi-button-negative { - color: #fff !important; - border: 1px solid #d43f3a !important; - background-color: #fb6340 !important; -} -.cbi-page-actions .cbi-button-link:first-child { - float: left; -} -.a-to-btn { - text-decoration: none; -} -/* file selector button */ -::file-selector-button { - color: #fff; - border-radius: .25rem; - border: 1px solid #2e6da4; - padding: .4rem .5rem; - background-color: #337ab7; - box-sizing: border-box; - cursor: pointer; - transition: all 0.2s ease-in-out; -} -::file-selector-button:hover, -::file-selector-button:focus, -::file-selector-button:active { - outline: 0; - text-decoration: none; -} -::file-selector-button:hover, -::file-selector-button:focus { - box-shadow: 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); -} -::file-selector-button:active { - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.19), 0 5px 5px rgba(0, 0, 0, 0.23); -} -/* table */ -.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - width: auto !important; - background-color: #e9ecef; - background-color: var(--lighter); -} -.td.cbi-section-actions { - text-align: right; - vertical-align: middle; -} -.td.cbi-section-actions > * { - display: flex; -} -.td.cbi-section-actions > * > *, -.td.cbi-section-actions > * > form > * { - flex: 1 1 4em; - margin: 0 1px; -} -.td.cbi-section-actions > * > form { - display: inline-flex; - margin: 0; -} -/* desc */ -/* luci */ -.hidden { - display: none; -} -.left, -.left::before { - text-align: left !important; -} -.right, -.right::before { - text-align: right !important; -} -.center, -.center::before { - text-align: center !important; -} -.top { - align-self: flex-start !important; - vertical-align: top !important; -} -.bottom { - align-self: flex-end !important; - vertical-align: bottom !important; -} -.inline { - display: inline; -} -.cbi-page-actions { - border-top: 0px solid #eee; - padding-top: 0rem; - text-align: right; -} -#xhr_poll_status { - cursor: pointer; - display: inline-block; -} -#xhr_poll_status > .label.success { - background-color: #fff !important; - color: #32325d !important; -} -.label { - padding: 0.3rem 0.8rem; - font-size: 0.8rem; - font-weight: bold; - color: #ffffff !important; - text-transform: uppercase; - white-space: nowrap; - background-color: #bfbfbf; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - text-shadow: none; - text-decoration: none; -} -.notice { - background-color: #5BC0DE; -} -.showSide { - display: none; - color: #fff; - font-size: 1.4rem; -} -.darkMask { - width: 100%; - height: 100%; - position: fixed; - background-color: rgba(0, 0, 0, 0.56); - z-index: 99; - left: 0; - top: 0; - display: none; -} -#cbi-firewall-redirect table *, -#cbi-network-switch_vlan table *, -#cbi-firewall-zone table * { - font-size: small; -} -#cbi-firewall-redirect table input[type="text"], -#cbi-network-switch_vlan table input[type="text"], -#cbi-firewall-zone table input[type="text"] { - width: 5rem; -} -#cbi-firewall-redirect table select, -#cbi-network-switch_vlan table select, -#cbi-firewall-zone table select { - min-width: 3.5rem; -} -#cbi-network-switch_vlan .th, -#cbi-network-switch_vlan .td { - flex-basis: 12%; -} -/* Fix background color of table-titles */ -.cbi-section-node > .cbi-section-table > tbody > .cbi-section-table-titles th { - background-color: var(--lighter); - border: none; -} -/* Fix background color of table-descr */ -.cbi-section-node > .cbi-section-table > tbody > .cbi-section-table-descr th { - border: none; -} -/* Fix background color not change when the H tag is in the table rowstyle-1 */ -.cbi-section-node > .cbi-section-table > tbody > .cbi-rowstyle-1 th { - background-color: #fff; - border-top: 1px solid #ddd; - border-bottom: none; -} -/* Fix background color not change when the H tag is in the table rowstyle-2 */ -.cbi-section-node > .cbi-section-table > tbody > .cbi-rowstyle-2 th { - background-color: #f9f9f9; - border-top: 1px solid #ddd; - border-bottom: none; -} -/* Change the color of the H label in the table to make it more visible */ -th h1, td h1, -th h2, td h2, -th h3, td h3, -th h4, td h4, -th h5, td h5, -th h6, td h6 { - background: var(--lighter); -} -/* language fix */ -body.lang_pl.node-main-login .cbi-value-title { - width: 12rem; -} -/* applyreboot fix */ -#applyreboot-container { - margin: 2rem; -} -#applyreboot-section { - margin: 2rem; - line-height: 300%; -} -.table { - display: table; - position: relative; - color: #525f7f; - border-collapse: collapse; -} -.tr { - display: table-row; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); -} -.thead { - display: table-header-group; -} -.tbody { - display: table-row-group; -} -.tfoot { - display: table-footer-group; -} -.td, -.th { - vertical-align: middle; - text-align: center; - display: table-cell; - padding: 1rem; - white-space: nowrap; -} -.th { - font-weight: bold; -} -.tr.placeholder { - height: 4em; -} -.tr.placeholder > .td { - position: absolute; - left: 0; - right: 0; - bottom: 0; - text-align: center; - background: inherit; -} -.table[width="33%"], -.th[width="33%"], -.td[width="33%"] { - width: 33%; - padding-left: 1.5rem; - padding-right: 1.5rem; -} -.table[width="100%"], -.th[width="100%"], -.td[width="100%"] { - width: 100%; -} -.table-titles .th { - padding: 0.75rem 1rem; - color: #8898aa; - background-color: #f6f9fc; -} -.col-1 { - flex: 1 1 30px !important; - -webkit-flex: 1 1 30px !important; -} -.col-2 { - flex: 2 2 60px !important; - -webkit-flex: 2 2 60px !important; -} -.col-3 { - flex: 3 3 90px !important; - -webkit-flex: 3 3 90px !important; -} -.col-4 { - flex: 4 4 120px !important; - -webkit-flex: 4 4 120px !important; -} -.col-5 { - flex: 5 5 150px !important; - -webkit-flex: 5 5 150px !important; -} -.col-6 { - flex: 6 6 180px !important; - -webkit-flex: 6 6 180px !important; -} -.col-7 { - flex: 7 7 210px !important; - -webkit-flex: 7 7 210px !important; -} -.col-8 { - flex: 8 8 240px !important; - -webkit-flex: 8 8 240px !important; -} -.col-9 { - flex: 9 9 270px !important; - -webkit-flex: 9 9 270px !important; -} -.col-10 { - flex: 10 10 300px !important; - -webkit-flex: 10 10 300px !important; - white-space: inherit; -} -.cbi-rowstyle-2 .cbi-button-up, -.cbi-rowstyle-2 .cbi-button-down { - background-color: var(--lighter); -} -.cbi-button-up, -.cbi-button-down, -.cbi-value-helpicon, -.showSide, -.main > .loading > span { - font-family: 'argon' !important; - font-style: normal !important; - font-weight: normal !important; - font-variant: normal !important; - text-transform: none !important; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.cbi-button-up { - transform: rotate(180deg); -} -select { - padding: 0.36rem 0.8rem; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; -} -select, -input { - font-size: 0.875rem; - transition: all 0.15s ease-in-out; - line-height: 1.5; - padding: 0.625rem 0.75rem; - color: #8898aa; - border: 1px solid #dee2e6; - border-radius: 0.25rem; - background-color: #fff; - background-clip: padding-box; - box-shadow: 0 3px 2px rgba(233, 236, 239, 0.05); - outline: none; - transition: box-shadow 0.15s ease; - margin: 0.25rem; -} -select:not([multiple="multiple"]):hover, -input:hover, -input:focus { - border-color: #5e72e4; - border-color: var(--primary); - outline: 0; - background-color: #fff; - box-shadow: 0 3px 9px rgba(50, 50, 9, 0), 3px 4px 8px rgba(94, 114, 228, 0.1); -} -select[multiple="multiple"] { - height: auto; -} -code { - color: #0099CC; -} -abbr { - color: #005470; - text-decoration: underline; - cursor: help; -} -hr { - margin: 1rem 0; - border-color: #EEE; - opacity: 0.1; -} -.kpi { - font-size: 0.875rem; -} -fieldset[id^="cbi-apply-"] { - position: fixed; - z-index: 200; - width: 20rem; - margin-left: -10rem; - margin-top: -5rem; - height: 10rem; - left: 50%; - top: 50%; - padding: 1rem; - box-sizing: border-box; - font-size: 1.2rem; - text-align: center; - box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 15px -5px; - transition: all 0.3s; -} -[id^="cbi-apply-"] > .panel-title { - border-bottom: none; -} -[id^="cbi-apply-"] > [id^="cbi-apply-"] { - position: initial; - width: auto; - height: auto; - font-size: 0.875rem; - margin-left: 0rem; - margin-top: 0.8rem; - display: block; -} -.cbi-section > h3:first-child, -.panel-title { - font-size: 1.125rem; - width: 100%; - display: block; - margin: 0; - padding: 0.8755rem 1.5rem; - border-bottom: 1px solid #ddd; - letter-spacing: 0.1rem; - color: #32325d; - font-weight: normal; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} -table { - border-spacing: 0; - border-collapse: collapse; -} -table, -.table { - width: 100%; -} -table > tbody > tr > td, -table > tbody > tr > th, -table > tfoot > tr > td, -table > tfoot > tr > th, -table > thead > tr > td, -table > thead > tr > th, -.table > .tbody > .tr > .td, -.table > .tbody > .tr > .th, -.table > .tfoot > .tr > .td, -.table > .tfoot > .tr > .th, -.table > .thead > .tr > .td, -.table > .thead > .tr > .th { - padding: 0.5rem; - border-top: 1px solid #ddd; -} -.cbi-section-table-cell { - white-space: nowrap; - align-self: flex-end; - flex: 1 1 auto; -} -.cbi-section-table { - font-size: 0.875rem; - border: none; - margin: 0 !important; -} -.status-bar { - font-size: 0.875rem; -} -.cbi-section-table-row:last-child { - margin-bottom: 0; -} -.cbi-section-table-row > .cbi-value-field .cbi-dropdown, -.cbi-section-table-row > .cbi-value-field .cbi-input-select, -.cbi-section-table-row > .cbi-value-field .cbi-input-text, -.cbi-section-table-row > .cbi-value-field .cbi-input-password { - width: 100%; -} -.cbi-section-table-row > .cbi-value-field .cbi-input-text, -.cbi-section-table-row > .cbi-value-field .cbi-input-password { - min-width: 100px; -} -#lease6_status_table > tbody > .cbi-section-table-row.cbi-rowstyle-1 div, -#lease6_status_table > tbody > .cbi-section-table-row.cbi-rowstyle-2 div { - min-width: 100%; -} -.cbi-section-table-row > .cbi-value-field [data-dynlist] > input, -.cbi-section-table-row > .cbi-value-field input.cbi-input-password { - width: calc(100% - 1.5rem); -} -div > table > tbody > tr:nth-of-type(2n), -div > .table > .tbody > .tr:nth-of-type(2n) { - background-color: #f9f9f9; -} -div > table > tbody > tr:nth-of-type(2n), -div > .table > .tbody > .tr:nth-of-type(2n) { - background-color: #f9f9f9; -} -.danger { - background-color: #f5365c !important; - background-color: var(--danger) !important; - color: #fff !important; -} -/* Define the warning background-color breathe display animation */ -@keyframes warning-background-color-breathe { - 0%{ - color: #fff; - background-color: #fb6340; - } - 50%{ - color: #32325d; - background-color: #fff; - } - 100%{ - color: #fff; - background-color: #fb6340; - } -} -.warning, -.warning * { - background-color: #fb6340; - background-color: var(--warning); - color: #fff; - animation: warning-background-color-breathe 1.5s ease-in-out infinite !important; -} -.notice { - background-color: #5e72e4 !important; - background-color: var(--primary) !important; - color: #fff !important; -} -.success { - background-color: #2dce89 !important; - background-color: var(--success) !important; - color: #fff !important; -} -.errorbox, -.alert-message { - margin: 0 0 0 0; - padding: 1rem 2rem; - border: 0; - font-weight: normal; - font-style: normal; - line-height: 1.5em; - font-family: inherit; - min-width: inherit; - overflow: auto; - border-radius: 0.3rem; - background-color: #FFF; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); -} -.errorbox { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.alert-message.warning { - margin-bottom: 1rem; -} -.error { - color: red; -} -h1 { - font-size: 2rem; - padding-bottom: 10px; - border-bottom: 1px solid #eee; -} -h2 { - margin: 0 0 1rem 0; - font-size: 1.25rem; - letter-spacing: 0.1rem; - padding: 1rem 1.5rem; - color: #32325d; - border-radius: 0.375rem; - background: #fff; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); -} -#cbi-dropbear h2, -#cbi-dropbear .cbi-map-descr, -#cbi-dropbear .cbi-map-descr abbr, -#cbi-rc h2, -#cbi-rc .cbi-map-descr, -#cbi-distfeedconf h2, -#cbi-distfeedconf .cbi-map-descr, -#cbi-customfeedconf h2, -#cbi-customfeedconf .cbi-map-descr, -#cbi-download h2, -#cbi-filelist h2 { - color: #32325d !important; -} -h3 { - font-size: 1.15rem; - width: 100%; - display: block; - margin: 1rem 0; - color: #32325d; - font-weight: bold; - letter-spacing: 0.1rem; - padding: 1rem 1.5rem; - border-radius: 0.375rem; - background: var(--lighter); - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); -} -fieldset { - margin: 1.25rem 0 0 0; - padding: 0; - font-weight: normal; - font-style: normal; - line-height: 1; - font-family: inherit; - min-width: inherit; - overflow-x: auto; - overflow-y: hidden; - border: 1px solid rgba(0, 0, 0, 0.05); - border-radius: 0.375rem; - background-color: #fff; - box-shadow: 0 0 2rem 0 rgba(136, 152, 170, 0.15); - -webkit-overflow-scrolling: touch; -} -fieldset > legend { - display: none !important; -} -fieldset > fieldset { - margin: 0; - padding: 0; - border: none; - box-shadow: none; -} -fieldset.cbi-section p { - padding: 1em; -} -.panel-title { - width: 100%; - display: block; - margin-bottom: 0; - padding: 0.8755rem 1.5rem; - background-color: #fff; - border-bottom: 1px solid #ddd; - margin-bottom: 0rem; - letter-spacing: 0.1rem; - color: #32325d; - font-weight: 600; - position: sticky; - left: 0; -} -table { - border-spacing: 0; - border-collapse: collapse; - width: 100%; -} -table > tbody > tr > td, -table > tfoot > tr > td, -table > thead > tr > td { - font-size: 0.875rem; - color: #525f7f; - line-height: 1.4em; - vertical-align: middle !important; - padding: 0.8rem 1.5rem; - border-top: 1px solid #ddd; -} -table > tbody > tr > th, -table > tfoot > tr > th, -table > thead > tr > th { - padding-right: 1.5rem; - padding-left: 1.5rem; - color: #8898aa; - background-color: #f6f9fc; - font-size: 0.65rem; - padding-top: 0.75rem; - padding-bottom: 0.75rem; - letter-spacing: 1px; - border-bottom: 1px solid #e9ecef; -} -table > tbody > tr:first-child > td, -table > tfoot > tr:first-child > td, -table > thead > tr:first-child > td { - border-top: 0px; -} -.cbi-section-table-cell { - text-align: center; -} -.cbi-section-table-row { - text-align: center; -} -fieldset > table > tbody > tr:nth-of-type(2n) { - background-color: #f9f9f9; -} -/* fix multiple table */ -table table { - border: none; -} -.cbi-value-field table { - border: none; -} -td > table > tbody > tr > td { - border: none; -} -.cbi-value-field > table > tbody > tr > td { - border: none; -} -/* table */ -.tabs { - margin: 0 0 1rem 0; - padding: 0 1rem; - background-color: #FFFFFF; - border-radius: 0.375rem; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - white-space: nowrap; - overflow-x: auto; -} -.tabs::-webkit-scrollbar, -.cbi-section::-webkit-scrollbar, -.cbi-section > *::-webkit-scrollbar, -textarea::-webkit-scrollbar, -div::-webkit-scrollbar { - width: 5px; - height: 5px; -} -.tabs::-webkit-scrollbar-thumb { - background-color: #9e9e9e; -} -.tabs::-webkit-scrollbar-thumb:hover { - background: #757575; -} -.tabs::-webkit-scrollbar-thumb:active { - background: #424242; -} -.tabs::-webkit-scrollbar-track { - background-color: transparent; -} -.tabs li[class~="active"], -.tabs li:hover { - cursor: pointer; - border-bottom: 0.18751rem solid #5e72e4; - border-bottom: 0.18751rem solid var(--primary); - color: #5e72e4; - color: var(--primary); - background-color: var(--light-subtabs-background); - margin-bottom: 0; - border-radius: 0; -} -.tabs li[class~="active"] a, -.tabs li:hover a { - color: #5e72e4; - color: var(--primary); -} -.tabs li { - font-size: 0.875rem; - display: inline-block; - padding: 0.875rem 0rem; - border-bottom: 0.18751rem solid rgba(0, 0, 0, 0); -} -.tabs li a { - text-decoration: none; - color: #404040; - padding: 0.5rem 0.8rem; -} -.tabs li:hover { - border-bottom: 0.18751rem solid #5e72e4; - border-bottom: 0.18751rem solid var(--primary); -} -.cbi-tabmenu { - color: white; - padding: 0.5rem 0.5rem 0 0.5rem; - white-space: nowrap; - overflow-x: auto; - border-bottom: 1px solid #ddd !important; -} -.cbi-tabmenu::-webkit-scrollbar { - width: 1px; - height: 5px; -} -.cbi-tabmenu::-webkit-scrollbar-thumb { - background-color: #9e9e9e; -} -.cbi-tabmenu::-webkit-scrollbar-thumb:hover { - background: #757575; -} -.cbi-tabmenu::-webkit-scrollbar-thumb:active { - background: #424242; -} -.cbi-tabmenu::-webkit-scrollbar-track { - background-color: transparent; -} -.cbi-tabmenu li { - background: #e3e3e3; - display: inline-block; - font-size: 0.875rem; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; - padding: 0.5rem 0rem; - border-bottom: 0.18751rem solid rgba(0, 0, 0, 0); -} -.cbi-tabmenu li a { - text-decoration: none; - color: #404040; - padding: 0.5rem 0.8rem; -} -.cbi-tabmenu li:hover { - cursor: pointer; - border-bottom: 0.18751rem solid #5e72e4; - border-bottom: 0.18751rem solid var(--primary); - color: #5e72e4; - color: var(--primary); - background-color: var(--light-subtabs-background); - margin-bottom: 0; -} -.cbi-tabmenu li:hover a { - color: #525f7f; -} -.cbi-tabmenu li[class~="cbi-tab"] { - border-bottom: 0.18751rem solid #5e72e4; - border-bottom: 0.18751rem solid var(--primary); - color: var(--primary); - background-color: var(--light-subtabs-background); - margin-bottom: 0; -} -.cbi-tabmenu li[class~="cbi-tab"] a { - color: #5e72e4; - color: var(--primary); -} -.cbi-tab-descr { - margin: 1rem 1.5rem; - color: #32325d; - font-size: small; - line-height: 1.5em; -} -.cbi-dropdown { - display: inline-flex; - cursor: pointer; - position: relative; - padding: 0; - height: auto; -} -.cbi-dropdown:focus { - outline: 2px solid #4b6e9b; -} -.cbi-dropdown > ul { - margin: 0 !important; - padding: 0; - list-style: none; - overflow-x: hidden; - overflow-y: auto; - display: flex; - width: 100%; -} -.cbi-dropdown > ul.preview { - display: none; -} -.cbi-dropdown > .open { - border: 0px outset #eee; - flex-basis: 15px; - background: #fff; -} -.cbi-dropdown > .open, -.cbi-dropdown > .more { - flex-grow: 0; - flex-shrink: 0; - display: flex; - flex-direction: column; - justify-content: center; - text-align: center; - line-height: 2em; - padding: 0 0.25em; -} -.cbi-dropdown > .more, -.cbi-dropdown > ul > li[placeholder] { - color: #777; - font-weight: bold; - text-shadow: 1px 1px 0px #fff; - display: none; -} -.cbi-dropdown > ul > li { - display: none; - padding: 0.25em; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - flex-shrink: 1; - flex-grow: 1; - align-items: center; - align-self: center; - min-height: 20px; -} -.cbi-dropdown > ul > li .hide-open { - display: initial; -} -.cbi-dropdown > ul > li .hide-close { - display: none; -} -.cbi-dropdown > ul > li[display]:not([display="0"]) { - border-left: 1px solid #ccc; -} -.cbi-dropdown[empty] > ul { - max-width: 1px; -} -.cbi-dropdown > ul > li > form { - display: none; - margin: 0; - padding: 0; - pointer-events: none; -} -.cbi-dropdown > ul > li img { - vertical-align: middle; - margin-right: 0.25em; -} -.cbi-dropdown > ul > li > form > input[type="checkbox"] { - margin: 0; - height: auto; -} -.cbi-dropdown > ul > li input[type="text"] { - height: 20px; -} -.cbi-dropdown[open] { - position: relative; - border-color: #5e72e4; - border-color: var(--primary); -} -.cbi-dropdown[open] > ul.dropdown { - display: block; - background: #fff; - border-color: #5e72e4; - border-color: var(--primary); - position: absolute; - z-index: 1000; - max-width: none; - min-width: 100%; - width: auto; - box-shadow: 0 1px 3px rgba(50, 50, 93, 0.15), 0 1px 0 rgba(0, 0, 0, 0.05); -} -.cbi-dropdown > ul > li[display], -.cbi-dropdown[open] > ul.preview, -.cbi-dropdown[open] > ul.dropdown > li, -.cbi-dropdown[multiple] > ul > li > label, -.cbi-dropdown[multiple][open] > ul.dropdown > li, -.cbi-dropdown[multiple][more] > .more, -.cbi-dropdown[multiple][empty] > .more { - flex-grow: 1; - display: flex; - align-items: center; -} -.cbi-dropdown[empty] > ul > li, -.cbi-dropdown[optional][open] > ul.dropdown > li[placeholder], -.cbi-dropdown[multiple][open] > ul.dropdown > li > form { - display: block; -} -.cbi-dropdown[open] > ul.dropdown > li .hide-open { - display: none; -} -.cbi-dropdown[open] > ul.dropdown > li .hide-close { - display: initial; -} -.cbi-dropdown[open] > ul.dropdown > li { - border-bottom: 1px solid #ccc; -} -.cbi-dropdown[open] > ul.dropdown > li[selected] { - background: #b0d0f0; -} -.cbi-dropdown[open] > ul.dropdown > li.focus { - background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%); -} -.cbi-dropdown[open] > ul.dropdown > li:last-child { - margin-bottom: 0; - border-bottom: none; -} -.cbi-dropdown[disabled] { - pointer-events: none; - opacity: 0.6; -} -.cbi-dropdown .zonebadge { - width: 100%; -} -.cbi-dropdown[open] .zonebadge { - width: 100%; -} -.cbi-dropdown { - font-size: 0.875rem; - transition: all 0.15s ease-in-out; - line-height: 1.5; - height: calc(2.75rem + 2px); - padding: 0m; - color: #8898aa; - border: 1px solid #dee2e6; - border-radius: 0.25rem; - background-color: #fff; - background-clip: padding-box; - box-shadow: 0 3px 2px rgba(233, 236, 239, 0.05); - margin: 0.25rem; -} -.cbi-value-field .cbi-dropdown { - min-width: 20rem; -} -.cbi-value-field .cbi-dropdown .zonebadge > .ifacebadge { - padding: 0rem 1rem; - margin: 0rem 0.3rem; - border: 1px solid #6C6C6C; -} -select[multiple="multiple"] { - height: auto; -} -.cbi-dropdown > ul { - margin: 0 !important; - padding: 0; - list-style: none; - overflow-x: hidden; - overflow-y: hidden; - display: flex; - width: 100%; -} -.cbi-section > legend { - display: none !important; -} -.cbi-section-remove:nth-of-type(2n), -.cbi-section-node:nth-of-type(2n) { - background-color: #f9f9f9; -} -.cbi-section-node-tabbed { - padding: 0; - margin-top: 0; -} -.cbi-section-node { - background: #fff; - border: 0; - border-radius: 0.375rem; - margin-bottom: 0px; - box-shadow: 0 0 0rem 0 rgba(136, 152, 170, 0.15); - overflow-x: auto; - overflow-y: hidden; - padding: 0rem 0; -} -#cbi-network-lan.cbi-section-node { - overflow-x: visible; - overflow-y: visible; -} -.cbi-section-node .cbi-value { - padding: 0.5rem 1rem 0.5rem 1rem !important; -} -.cbi-tabcontainer > .cbi-value:nth-of-type(2n), -.cbi-tabcontainer > .cbi-value:nth-of-type(2n)>textarea { - background-color: #f9f9f9; -} -.cbi-value-field, -.cbi-value-description { - display: table-cell; - line-height: 1.6; - font-size: 0.875rem; -} -/* Fix text position of the luci-app-filebrowser running state */ -#cbi-filebrowser > .cbi-section > .cbi-section > .cbi-value > .cbi-value-field, -/* Fix text position of the luci-apps running state of the [Control] type */ -form > .cbi-map > .cbi-section > .cbi-section-node > .cbi-value > .cbi-value-field font { - word-wrap: break-word; - font-size: 0.875rem; - line-height: 1.6; - padding: 0.7rem; - padding-left: 0; - text-align: right; - display: table-cell; -} -.cbi-value-helpicon > img { - display: none; -} -.cbi-value-helpicon:before { - content: "\f059"; -} -.cbi-value-description { - color: #8d8d8d; - opacity: 0.8; - font-size: small; - padding: 0.5rem; -} -.cbi-value-title { - word-wrap: break-word; - font-size: 0.875rem; - line-height: 1.6; - color: #525f7f; - padding: 0.7rem; - padding-left: 0; - width: 23rem; - text-align: right; - display: table-cell; -} -.cbi-value { - padding: 0.3rem 1rem; - display: inline-block; - width: 100%; -} -.cbi-section-table-descr > .cbi-section-table-cell, -.cbi-section-table-titles > .cbi-section-table-cell { - border: none; -} -.cbi-rowstyle-1 { - background-color: #fff; -} -.cbi-rowstyle-2 { - background-color: #fefefe; -} -.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - width: auto !important; -} -/* desc */ -.cbi-section-descr { - padding: 1rem 1.5rem; - font-size: 0.7rem; - font-weight: 600; - line-height: 1.5em; - color: #525f7f; -} -.cbi-map-descr { - margin: 0rem 1.5rem 1rem 1.5rem; - color: #32325d; - font-size: small; - line-height: 1.5em; -} -/* input */ -.cbi-value input[type="password"], -.cbi-value input[type="text"] { - min-width: 20rem; -} -input[type="checkbox"] { - height: auto; -} -/* select */ -.cbi-value-field .ifacebadge { - display: inline-flex; - border-bottom: 0px solid #CCCCCC; - padding: 0.5rem 1rem; - box-shadow: none; -} -td > .ifacebadge { - background-color: #F0F0F0; - font-size: 0.9rem; -} -.ifacebadge > img { - float: right; - margin: 0 0.3rem; -} -#syslog { - width: 100%; - min-height: 15rem; - padding: 1rem; - line-height: 1.4em; - color: #1e1e1e; - border-radius: 0; - background-color: #fff; - border: none; - outline: none; -} -.ifacebadge { - display: inline-flex; - border-bottom: 0px solid #CCCCCC; - padding: 0.5rem 1rem; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - background: #fff; -} -td > .ifacebadge, -.td > .ifacebadge { - background-color: #e9ecef; - font-size: 0.9rem; - border-radius: 0.2rem; -} -.ifacebadge > em, -.ifacebadge > img { - display: inline-block; - margin: 0 0.3rem; - align-self: center; -} -.ifacebadge span { - line-height: 1.6em; -} -.network-status-table { - display: flex; - flex-wrap: wrap; -} -.network-status-table .ifacebox { - margin: 1rem; - flex-grow: 1; -} -.network-status-table .ifacebox-body { - display: flex; - flex-direction: column; - height: 100%; -} -.network-status-table .ifacebox-body > span { - flex: 10 10 auto; - height: 100%; - line-height: 1.7em; - padding-left: 2rem; - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} -.network-status-table .ifacebox-body > div { - display: flex; - flex-wrap: wrap; -} -.network-status-table .ifacebox-body .ifacebadge { - flex: 1 1 auto; - margin: 0; - padding: 0.5em; - min-width: 220px; - background-color: #fff; - align-items: center; -} -.ifacebox { - border: 1px solid #ccc; - border-radius: 0.375rem; - background-color: #f9f9f9; - display: inline-flex; - flex-direction: column; - line-height: 1.2em; - min-width: 100px; - overflow: hidden; -} -.ifacebox-head { - padding: 1rem; - background: #eee; -} -.ifacebox-head.active { - background: #5e72e4; - background: var(--primary); - color: #fff; -} -.ifacebox-body { - padding: 0.5em; -} -.cbi-image-button { - margin-left: 0.5rem; -} -#iwsvg, -#iwsvg2, -#bwsvg { - border: none !important; - border-radius: 0.375rem; - box-shadow: 0 0 2rem 0 rgba(136, 152, 170, 0.15); - overflow: hidden; -} -.cbi-image-button { - margin-left: 0.5rem; -} -.zonebadge { - padding: 0.2rem 0.5rem; - display: inline-block; - cursor: pointer; -} -.zonebadge > .ifacebadge { - padding: 0.2rem 1rem; - margin: 0.3rem; - border: 1px solid #6C6C6C; -} -.zonebadge > input[type="text"] { - padding: 0.16rem 1rem; - min-width: 10rem; - margin-top: 0.3rem; -} -.cbi-value-field .cbi-input-checkbox { - margin: 0.5rem 0.25rem 0.7rem 0.25rem; - vertical-align: middle; - height: 1rem; - line-height: 1.6; -} -.cbi-input-checkbox { - margin: 0.5rem 0.25rem 0.7rem 0.25rem; - vertical-align: middle; -} -.cbi-value-field .cbi-input-radio { - margin: 0rem 0.25rem; -} -.cbi-input-radio { - margin: 0rem 0.25rem; -} -.cbi-value-field > input + .cbi-value-description { - padding: 0; -} -.cbi-value-field > ul > li { - display: flex; - align-items: center; - font-size: 0.875rem; -} -.cbi-value-field > ul > li .ifacebadge { - font-size: 0.875rem; - background-color: #eee; - display: flex; - align-items: center; - margin-left: 0rem; - margin-top: 0rem; -} -.cbi-section-table-row > .cbi-value-field .cbi-input-select { - min-width: 7rem; -} -.cbi-section-create > .cbi-button-add { - margin: 0.75rem 0.75rem 0.75rem 0.25rem; -} -.cbi-section-remove { - padding: 0.5rem; -} -.cbi-optionals { - padding: 1rem 1rem 0 1rem; - border-top: 1px solid #CCC; -} -input[name="ping"], -input[name="traceroute"], -input[name="nslookup"] { - width: 80%; -} -.label { - padding: 0.3rem 0.8rem; - font-size: 0.8rem; - font-weight: bold; - color: #fff !important; - text-transform: uppercase; - white-space: nowrap; - background-color: #32325d; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - text-shadow: none; - text-decoration: none; -} -/* fix status overview */ -.node-status-overview > .main fieldset:nth-child(4) td:nth-child(2) { - white-space: normal; -} -.node-status-overview > .main #wan4_i, -.node-status-overview > .main #wan6_i { - min-width: 80px !important; -} -/* fix status processes */ -.node-status-processes > .main table tr td:nth-child(3) { - white-space: normal; -} -/* fix system reboot */ -.node-system-reboot > .main > .main-right p, -.node-system-reboot > .main > .main-right h3 { - padding-left: 2rem; - color: #fff; -} -/* fix Services Network Shares*/ -.node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-title { - margin-bottom: 1rem; - width: auto; -} -.node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-field { - display: list-item; -} -.node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-description { - padding-top: 1rem; -} -/* fix System Software*/ -.node-system-packages > .main table tr td:nth-child(1) { - width: auto !important; -} -.node-system-packages > .main table tr td:nth-last-child(1) { - white-space: normal; - font-size: small; - color: #404040; -} -.node-system-packages > .main .cbi-tabmenu > li > a, -.tabs > li > a { - padding: 0.5rem 0.8rem; -} -.node-system-packages > .main .cbi-value > pre { - background-color: #eee; - padding: 0.5rem; - overflow: auto; -} -.node-system-packages > .main .cbi-page-actions { - padding: 1rem 0; -} -.node-system-packages > .main .cbi-section-node:first-child .cbi-value-last { - line-height: 1.8em; -} -.node-system-packages > .main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] { - border: 1px solid #999999 !important; - width: 100% !important; - background-color: #fff !important; - height: 1.4rem !important; - border-radius: 0.25rem; - margin: 0.5rem 0; - overflow: hidden; -} -.node-system-packages > .main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] div { - border-right: 0 !important; - background-color: #5e72e4 !important; - background-color: var(--primary) !important; - height: 100% !important; - background-image: url(../img/trafficbar.png); - background-position: left top; - animation: sparkle 1000ms linear infinite; -} -.node-system-leds .cbi-section em { - display: block; -} -.cbi-tabmenu + .cbi-section { - margin-top: 0; -} -.cbi-section { - background: #fff; - border: 0; - border-radius: 0.375rem; - box-shadow: 0 0 2rem 0 rgba(136, 152, 170, 0.15); - overflow-x: auto; - overflow-y: hidden; -} -.cbi-section em { - font-size: 0.7rem; - font-weight: 600; - color: var(--primary); - text-shadow: 1px 1px 2px #ccc; - text-align: center; -} -.cbi-section h4 { - font-size: 0.7rem; - font-weight: 600; - color: #525f7f; -} -#content_syslog { - border-radius: 0.375rem; - box-shadow: 0 0 2rem 0 rgba(136, 152, 170, 0.15); - overflow: hidden; -} -.node-system-packages .cbi-section-node .cbi-value { - padding: 0.5rem 1rem; - font-size: 0.875rem; -} -.node-system-packages br { - display: none; -} -/* fix network firewall*/ -.node-network-firewall > .main .cbi-section-table-row > .cbi-value-field .cbi-input-select { - min-width: 4rem; -} -.node-network-firewall .cbi-section-table { - width: 100% !important; -} -.node-status-iptables fieldset, -.node-system-packages fieldset, -.node-system-flashops fieldset { - margin-top: 0; -} -.node-system-flashops fieldset > ul { - padding: 1rem; -} -.node-system-flashops fieldset + .cbi-page-actions { - margin-top: 1rem; -} -.node-status-iptables .cbi-tabmenu, -.node-system-packages .cbi-tabmenu, -.node-system-flashops .cbi-tabmenu { - border: none; -} -.node-system-flashops form.inline + form.inline { - margin-left: 0; -} -.Changes .cbi-section { - font-size: 0.875rem; - padding: 1rem; -} -.node-network-diagnostics { - font-size: 0.875rem; -} -.node-network-diagnostics #diag-rc-output { - display: block; - padding: 1rem; -} -.node-network-diagnostics #diag-rc-output pre { - font-size: 0.875rem; -} -.node-network-diagnostics .cbi-section div { - padding: 0 1.5rem; -} -.node-network-diagnostics input { - margin: 0.25rem !important; -} -.node-network-wireless .cbi-button-add { - margin-left: 0; -} -/* fix nlbw/display*/ -#detail-bubble.in { - z-index: 500; -} -.node-nlbw-display .cbi-section ul { - padding: 0.875rem 1.5rem; -} -.node-nlbw-backup form { - margin-left: 1.5rem; -} -.node-nas-usb_printer em { - display: block; -} -/* luci-app-passwall */ -#cbi-passwall #add_link_div, -#cbi-passwall #set_node_div { - background: #fffffff0; -} -#cbi-passwall .cbi-section-table tbody ._now_use { - background: #5e72e473 !important; -} -/* luci-app-commands */ -.commandbox h3 { - overflow: hidden; - text-overflow: ellipsis; -} -.commandbox code { - word-break: break-word; - overflow: hidden; - text-overflow: ellipsis; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; -} -div.commandbox { - height: 16em; -} -/* luci-app-ssr-plus */ -#cbi-shadowsocksr .cbi-map-descr h3 { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -/* luci-app-mwan3 */ -.node-status-mwan .cbi-tabmenu { - padding: 3rem 0.5rem 0 0.5rem; -} -/* luci-app-openclash */ -.node-services-openclash .cbi-tabmenu { - font-size: 0; -} -.node-services-openclash .cbi-tabmenu > li { - margin-right: 4px; -} -.node-services-openclash .cbi-tabmenu > li:last-child { - margin-right: 0; -} -/* luci-app-ddnsto */ -.node-services-ddnsto .cbi-section-node .cbi-value div { - display: table-cell; - line-height: 1.6; - font-size: 0.875rem; -} - -/* luci-app-dockerman */ -#cbi-dockerd > .cbi-section > br, -#cbi-docker > .cbi-section > br { - display: none; -} - -/* luci-app-diskman */ -#cbi-diskman > .cbi-section > br { - display: none; -} - -/* luci-app-istorex (Quick Start) */ -#app #main #page .app-container_body .btn-f, -#app #main #page .app-container_body .btn-r { - -webkit-user-select: none; /* Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* IE10+/Edge */ - user-select: none; /* Standard */ - width: 30px; -} - -/* luci-app-ttyd */ -.TTYD.node-system-terminal .main { - height: 100%!important; -} -.TTYD.node-system-terminal .main .main-right, -.TTYD.node-system-terminal .main .main-right #maincontent, -.TTYD.node-system-terminal .main .main-right #maincontent .container .cbi-map { - height: 100%!important; - display: flex!important; - flex-direction: column!important; -} -.TTYD.node-system-terminal .main .main-right #maincontent, -.TTYD.node-system-terminal .main .main-right #maincontent .container, -.TTYD.node-system-terminal .main .main-right #maincontent .container .cbi-map #terminal { - flex: 1!important; -} - -@media screen and (max-width: 1600px) { - .main .main-left { - width: calc(0% + 13rem); - } - .main .main-right { - width: calc(100% - 13rem); - } - .cbi-button:not(.cbi-button-up, .cbi-button-down) { - /*padding: 0.3rem 1.5rem;*/ - font-size: 0.8rem; - } - header > .container > .pull-right > * { - top: 0.35rem; - } - .label { - padding: 0.2rem 0.6rem; - } - .cbi-value-title { - width: 15rem; - padding-right: 0.6rem; - } - fieldset { - padding: 0; - } - .node-status-iptables > .main fieldset li > a { - padding: 0.3rem 0.6rem; - } -} -@media screen and (max-width: 1280px) { - header > .container { - margin-top: 0.25rem; - } - .main .main-left { - width: calc(0% + 13rem); - } - .main .main-right { - width: calc(100% - 13rem); - } - .cbi-tabmenu > li > a, - .tabs > li > a { - padding: 0.2rem 0.5rem; - } - .panel-title { - font-size: 1.1rem; - padding-bottom: 1rem; - } - table { - font-size: 0.7rem !important; - width: 100% !important; - } - .main > .main-left > .nav > li, - .main > .main-left > .nav > li a, - .main > .main-left > .nav > .slide > .menu { - font-size: 0.9rem; - } - .main > .main-left > .nav > .slide > .slide-menu > li > a { - font-size: 0.7rem; - } -} -@media screen and (max-width: 992px) { - .main .main-left { - width: 0; - position: fixed; - z-index: 100; - } - .main .main-right { - width: 100%; - } - .showSide { - padding: 0.1rem; - position: relative; - display: inline-block; - } - .showSide:hover { - text-decoration: none; - } - .showSide:before { - content: "\e20e"; - font-size: 1.7rem; - } - header > .fill > .container > .brand { - display: inline-block; - } - .node-network-diagnostics > .main .cbi-map fieldset > div * { - width: 100% !important; - } - .node-network-diagnostics > .main .cbi-map fieldset > div input[type="text"] { - margin: 3rem 0 0 0 !important; - } - .node-network-diagnostics > .main .cbi-map fieldset > div:nth-child(4) input[type="text"] { - margin: 0 !important; - } - .node-network-diagnostics > .main .cbi-map fieldset > div select, - .node-network-diagnostics > .main .cbi-map fieldset > div input[type="button"] { - margin: 1rem 0 0 0 !important; - } - .node-network-diagnostics > .main .cbi-map fieldset > div { - width: 100% !important; - } - #diag-rc-output > pre { - font-size: 1rem; - } -} -@media screen and (max-width: 500px) { - .login-page .login-container { - margin-left: 0rem !important; - width: 500px; - } - .login-page .login-container .login-form { - max-width: 500px; - } -} -@media screen and (max-width: 480px) { - body { - font-size: 0.8rem; - } - .pull-right { - float: right; - margin-top: 0rem !important; - } - .login-page .login-container { - margin-left: 0rem !important; - width: 100%; - } - .login-page .login-container .login-form .form-login .input-group::before { - color: #525461; - } - .login-page .login-container .login-form .form-login .input-group input { - color: #525461; - border-bottom: white 1px solid; - border-bottom: var(--white) 1px solid; - border-radius: 0; - } - fieldset { - padding: 0; - margin: 1rem 0 0 0; - } - .toggle { - margin: 0; - } - h2 { - font-size: 1.125rem; - } - .panel-title { - font-size: 1rem; - padding-bottom: 1rem; - } - #maincontent > .container { - margin: 0 1rem 1.5rem 1rem; - } - .main > .main-left > .nav > .slide > .menu { - font-size: 1rem; - } - .main > .main-left > .nav > .slide > .slide-menu > li > a { - font-size: 0.9rem; - } - .main > .main-left > .nav > .slide > .menu:after { - top: 0.9rem; - } - #ethinfo td { - padding: 0.75rem 0.2rem !important; - } - .cbi-value-title { - width: 100%; - min-width: 0rem !important; - display: block; - margin-top: 0.5rem; - margin-bottom: 0.5rem; - text-align: left; - padding: 0 0.25rem; - } - .cbi-value input[type="password"], - .cbi-value input[type="text"] { - min-width: 15rem; - } - select, - input { - width: 100% !important; - min-width: auto; - margin: 0.25rem 0; - } - input { - box-sizing: border-box; - } - .cbi-value > .cbi-value-field > div > input { - width: calc(100% - 1.5rem) !important; - } - .cbi-value > .cbi-value-field { - display: inline-block; - width: 100%; - position: relative; - } - .cbi-page-actions > div > input { - display: none; - } - ::-webkit-scrollbar { - width: 0px !important; - height: 0px !important; - } - .tabs > li > a { - font-size: 0.9rem; - } - select, - input { - font-size: 0.9rem; - } - .mobile-hide { - display: none !important; - } - .node-status-realtime table > tbody > tr > td, - .node-status-realtime table > tfoot > tr > td, - .node-status-realtime table > thead > tr > td { - font-size: 0.8125rem; - color: #525f7f; - line-height: 1.4em; - vertical-align: middle !important; - padding: 0.8rem 0rem; - border-top: 1px solid #ddd; - width: auto; - text-align: center; - } - .node-system-packages > .main .cbi-value.cbi-value-last > div { - width: 100% !important; - } - .node-system-packages .cbi-section-node .cbi-value { - padding: 0.3rem 1rem; - } - .node-system-packages > .main .cbi-value .cbi-value-field input { - width: 100%; - } - .node-system-leds .cbi-section em { - display: block; - } - .node-status-iptables > .main div > .cbi-map > form { - position: static !important; - margin: 0 0 2rem 0; - padding: 2rem; - border: 0; - font-weight: normal; - font-style: normal; - line-height: 1; - font-family: inherit; - min-width: inherit; - overflow-x: auto; - overflow-y: hidden; - border-radius: 0.375rem; - background-color: #FFF; - box-shadow: 0 0 2rem 0 rgba(136, 152, 170, 0.15); - -webkit-overflow-scrolling: touch; - } - .node-status-iptables > .main div > .cbi-map > form input[type="submit"] { - width: 100% !important; - margin: 0; - } - .node-status-iptables > .main div > .cbi-map > form input[type="submit"] + input[type="submit"] { - margin-top: 1rem; - } - .cbi-value input[type="text"]:has(+ img) { - width: 10rem !important; - } - .cbi-button-add { - margin-left: 0.5rem; - } - .node-network-network .cbi-section-table tr, - .node-network-network .cbi-section-table td { - display: block; - } - .node-network-network .cbi-section-table td { - width: 100% !important; - text-align: center !important; - padding: 0.8rem 1.5rem !important; - } - .node-network-network .cbi-section-table .cbi-section-table-titles { - display: flex; - } - .node-network-network .cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - flex: 1 !important; - } - .node-services-vssr .status-info { - font-size: 0.75rem; - } - .node-services-vssr .icon-con { - margin-top: 0.4rem; - } - .node-services-vssr .icon-con img { - width: 2.3rem !important; - height: auto; - } -} diff --git a/luci-theme-argon/htdocs/luci-static/argon/css/dark.css b/luci-theme-argon/htdocs/luci-static/argon/css/dark.css deleted file mode 100644 index 085c7f63..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/css/dark.css +++ /dev/null @@ -1,836 +0,0 @@ -body { - background: #1e1e1e; - color: #cccccc; -} - -.login-page .login-container .login-form { - background-color: #1e1e1e; -} - -.login-page .login-container .login-form .brand { - color: #adb5bd; -} - -.login-page .login-container .login-form .form-login .input-group::before { - color: #adb5bd; -} - -.login-page .login-container .login-form .form-login .input-group .border { - border-bottom: 1px var(--dark-primary) solid; -} - -.login-page .login-container .login-form .form-login .input-group input { - background-color: transparent !important; - color: #adb5bd; - border-bottom: #adb5bd 1px solid !important; - border-radius: 0; - border-top: none !important; - border-left: none !important; - border-right: none !important; - box-shadow: none; -} - -.login-page .login-container .login-form .form-login .input-group input:focus { - border-top: none !important; - border-left: none !important; - border-right: none !important; -} - -.login-page .login-container .login-form .form-login .cbi-button-apply { - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; -} - -.login-page .login-container .login-form .form-login .cbi-button-apply:hover, -.login-page .login-container .login-form .form-login .cbi-button-apply:focus { - opacity: .9; -} - -.login-page .login-container footer, -.login-page .login-container footer a { - color: #adb5bd; -} - -header::after { - background-color: #1e1e1e !important; -} - -.main .main-left { - background-color: #333333 !important; - box-shadow: 0 0 .5rem 0 rgba(0,0,0,0.15); -} - -.main .main-left .sidenav-header .brand { - color: #ccc; -} - -.main .main-left .nav .slide .slide-menu .active a { - color: #fff !important; -} - -.main .main-left .nav .slide .slide-menu li a { - color: #cccccc; -} - -.main .main-left .nav .slide .slide-menu li a::after { - background-color: var(--dark-primary) !important; - box-shadow: 0 0 1px #000 !important; -} - -.main .main-left .nav .slide .slide-menu li a:hover { - background: none !important; -} - -.main .main-left .nav .slide .menu:hover, -.main .main-left .nav .slide .menu.active { - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; - color: #fff !important; - box-shadow: 0 0 1px #000 !important; -} - -.main .main-left .nav .slide .menu[data-title=Status]:before { - color: var(--dark-primary) !important; -} - -.main .main-left .nav .slide .menu[data-title=Control]:before { - color: var(--dark-primary) !important; -} - -.main .main-left .nav li a { - color: #cccccc !important; -} - -.main .main-left .nav li a:hover { - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; - color: #fff !important; -} - -.main .main-left::-webkit-scrollbar-thumb { - background-color: #252526 !important; -} - -.main .main-right { - background-color: #1e1e1e; -} - -h2 { - color: #ccc; - background: #333333; -} - -h3 { - color: #ccc; - border-bottom: 0; - background: #333333; -} - -a:link, -a:visited, -a:active { - color: var(--dark_webkit-any-link); -} - -a:-webkit-any-link:not(li a, .main-left a, .brand, .pull-right a, .alert-message a, .login-container footer a, .cbi-button) { - color: var(--dark_webkit-any-link) !important; - text-shadow: 1px 1px 2px #000 !important; -} - -input:-webkit-autofill { - background-color: #3c3c3c !important; -} - -input[type="checkbox"]:checked { - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; -} - -.cbi-input-radio:checked { - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; -} - -.cbi-value-field .cbi-input-apply, -.cbi-button-apply, -.cbi-button-edit { - color: #fff !important; - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; - border-color: #483d8b !important; - border-color: var(--dark-primary) !important; -} - -.cbi-section em { - color: var(--dark_webkit-any-link); - text-shadow: 1px 1px 2px #000; -} - -header.bg-primary { - background-color: #1e1e1e !important; -} - -.cbi-map-descr { - color: #ccc; -} - -.cbi-section { - background: none; - box-shadow: 0 0 .5rem 0 rgba(0,0,0,0.35); -} - -.panel-title { - color: #ccc; - background-color: #333333; - border-bottom: 0px; -} - -table>tbody>tr>td, -table>tfoot>tr>td, -table>thead>tr>td { - color: #ccc; -} - -fieldset>table>tbody>tr:nth-of-type(2n) { - background-color: #252526; -} - -table>tbody>tr>td, -table>tfoot>tr>td, -table>thead>tr>td { - border-top: 1px solid #252526; -} - -#swaptotal>div>div, -#swapfree>div>div, -#memfree>div>div, -#membuff>div>div, -#conns>div>div, -#memtotal>div>div { - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; -} - -#swaptotal>div>div>div>small, -#swapfree>div>div>div>small, -#memfree>div>div>div>small, -#membuff>div>div>div>small, -#conns>div>div>div>small, -#memtotal>div>div>div>small { - color: #ccc !important; - text-shadow: 1px 1px 2px #000 !important; -} - -.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last { - line-height: 1.8em; -} - -.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] { - border: 1px solid #999999 !important; - background-color: transparent !important; -} - -.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] div { - background-color: #32325d !important; - background-color: var(--dark-primary) !important; -} - -table>tbody>tr>th, -table>tfoot>tr>th, -table>thead>tr>th { - background-color: #252526; - border-top: none; - border-bottom: black 1px solid !important; -} - -.cbi-rowstyle-2 { - background-color: #2c2c2c !important; -} - -.cbi-rowstyle-1 { - background-color: #252526; -} - -.cbi-section>h3:first-child, -.panel-title { - color: #ccc; - border-bottom: 0; -} - -.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - background-color: #1e1e1f; -} - -.cbi-button { - color: #ccc; - background-color: #2c2c2c; -} - -.cbi-rowstyle-2 .cbi-button-up, -.cbi-rowstyle-2 .cbi-button-down { - background-color: #252526 !important; -} - -.cbi-section-node { - background: none; - border-radius: 0 0 .375rem .375rem; - padding: 0rem; -} - -abbr { - color: #8898aa; -} - -div>table>tbody>tr:nth-of-type(2n), -div>.table>.tbody>.tr:nth-of-type(2n) { - background-color: #252526; -} - -/* file selector button */ -::file-selector-button { - border: 1px solid darkseagreen !important; - background-color: darkseagreen !important; -} - -/* Fix background color of table-titles */ -.cbi-section-node>.cbi-section-table>tbody>.cbi-section-table-titles th { - background-color: #1e1e1e; - border: none !important; -} - -/* Fix background color of table-descr */ -.cbi-section-node>.cbi-section-table>tbody>.cbi-section-table-descr th { - background-color: #333333; - border: none !important; -} - -/* Fix background color not change when the H tag is in the table rowstyle-1 */ -.cbi-section-node>.cbi-section-table>tbody>.cbi-rowstyle-1 th { - background-color: #252526; - border-top: 1px solid #252526; - border-bottom: none !important; -} - -/* Fix background color not change when the H tag is in the table rowstyle-2 */ -.cbi-section-node>.cbi-section-table>tbody>.cbi-rowstyle-2 th { - background-color: #2c2c2c; - border-top: 1px solid #252526; - border-bottom: none !important; -} - -/* Change the color of the H label in the table to make it more visible */ -th h1, td h1, -th h2, td h2, -th h3, td h3, -th h4, td h4, -th h5, td h5, -th h6, td h6 { - background: var(--gray-dark); -} - -/* Improved the background color of each itemes in "UNSAVED CHANGES" (dark mode only) */ -.uci-change-list del, -.uci-change-legend-label del { - background-color: #fb74008c; -} -.uci-change-list var, -.uci-change-legend-label var { - background-color: #333333; -} -.uci-change-list ins, -.uci-change-legend-label ins { - background-color: #00ff0a45 !important; -} - -#content_syslog { - box-shadow: 0 0 .5rem 0 rgba(0,0,0,0.35); -} - -#syslog { - color: #ccc; - background-color: #1e1e1e; -} - -#iwsvg, -#iwsvg2, -#bwsvg { - overflow: hidden; - box-shadow: 0 0 .5rem 0 rgba(0,0,0,0.35); - background-color: #1e1e1e !important; -} - -.tabs { - background-color: #252526; -} - -.tabs>li:hover, -.tabs>li[class~="active"], -.cbi-tabmenu>li:hover, -.cbi-tabmenu>li[class~="cbi-tab"] { - border-bottom: .18751rem solid var(--dark-primary); - background-color: #3c3c3c; -} - -.tabs>li>a, -.cbi-tabmenu>li>a { - color: #ccc !important; -} - -.cbi-tabmenu>li>a:hover, -.cbi-tabmenu>li:hover>a, -.cbi-tabmenu>.cbi-tab>a, -.tabs>li>a:hover, -.tabs>li:hover>a, -.tabs>li[class~="active"]>a { - color: #fff !important; -} - -.cbi-tabmenu>li { - background: #2d2d2d; -} - -.cbi-tabmenu { - border-bottom: 0 solid #ddd !important; -} - -.cbi-tab-descr { - color: #ccc; -} - -.cbi-tabcontainer>.cbi-value:nth-of-type(2n), -.cbi-tabcontainer>.cbi-value:nth-of-type(2n)>textarea { - background-color: #252526; -} - -.cbi-value-title { - color: #ccc; -} - -select, -input { - color: #ccc; - background-color: transparent; - border: 1px solid #3c3c3c !important; - box-shadow: 0 3px 2px rgba(0,0,0,0.05); -} - -select:not([multiple="multiple"]):hover, -input:hover, -input:focus { - border-color: #483d8b !important; - border-color: var(--dark-primary) !important; - background-color: transparent; - outline: 0; - box-shadow: none; -} - -select { - background-color: #1e1e1e !important; -} - -#cbi-dropbear h2, -#cbi-dropbear .cbi-map-descr, -#cbi-dropbear .cbi-map-descr abbr, -#cbi-rc h2, -#cbi-rc .cbi-map-descr, -#cbi-distfeedconf h2, -#cbi-distfeedconf .cbi-map-descr, -#cbi-customfeedconf h2, -#cbi-customfeedconf .cbi-map-descr, -#cbi-download h2, -#cbi-filelist h2 { - color: #ccc !important; -} - -.cbi-value-field>ul>li .ifacebadge { - background-color: #3c3c3c; -} - -.cbi-section-descr { - color: #ccc; -} - -/*textarea for dark mode*/ -textarea { - border: 1px solid #3c3c3c !important; - background-color: #1e1e1e; - color: #ccc; -} - -.cbi-section-remove:nth-of-type(2n), -.cbi-section-node:nth-of-type(2n) { - background-color: #1e1e1e; -} - -.node-system-packages>.main table tr td:nth-last-child(1) { - color: #ccc; -} - -.node-system-packages>.main .cbi-value>pre { - background-color: #333; -} - -.cbi-section-node .cbi-value { - padding: 1rem 1rem .3rem 1rem; -} - -.ifacebox { - background-color: #1e1e1e; - border: 1px solid #1e1e1e; -} - -.ifacebox-head { - color: #666; -} - -.ifacebox-body { - background-color: #333; -} - -.zonebadge strong { - color: #333; -} - -.zonebadge>.ifacebadge { - background-color: #3c3c3c; -} - -/* Fix firewall zone: "unspecified -or- create: " background color (dark mode only) */ -div[onclick$="._fwzone_new').checked=true"] { - border: 1px solid #3c3c3c; - background-color: transparent !important; -} - -/* Improve the background color of "Any zone" and "Device" when ADD/EDIT Rules in Firewall > Traffic Rules (dark mode only) */ -label[for$=".src_any"], -label[for$=".dest_empty"], -label[for$=".dest_any"] { - background-color: #2888db !important; -} - -/* Fix/add background color of wireless signal strength badge for dark mode */ -td>.ifacebadge, -.td>.ifacebadge { - background-color: #3c3c3c; -} - -/* Improved loading process gif color (dark mode only) */ -img[src="/luci-static/resources/icons/loading.gif"] { - filter: invert(1); -} - -div.cbi-value var, -td.cbi-value-field var, -.td.cbi-value-field var { - color: #483d8b; - color: var(--dark_webkit-any-link); - text-shadow: 1px 1px 2px #000; -} - -#diag-rc-output>pre { - color: #ccc; - background-color: #1e1e1e; -} - -.node-services-vssr .block { - background-color: #1e1e1e !important; - box-shadow: 0 0 .5rem 0 rgba(0,0,0,0.35) !important; -} - -.node-services-vssr .block h4 { - color: #ccc !important; -} - -.node-services-vssr .status-bar { - color: #ccc; - background: #333333f0; - box-shadow: #00000094 10px 10px 30px 5px; -} - -.node-services-vssr .cbi-section-table-row { - color: #ccc; - background-color: #3c3c3c !important; - box-shadow: 0 0 5px 0 rgba(0,0,0,0.35); -} - -.node-services-vssr .cbi-section-table-row.fast { - background: #483d8b !important; - background: var(--dark-primary) !important; - color: #fff; -} - -.node-services-vssr .ssr-button { - color: #ccc; -} - -.node-services-vssr .incon:nth-child(2) { - border-right: #1e1e1e 1px solid; -} - -.main .main-right #maincontent .container p { - color: #ccc; -} - -#xhr_poll_status>.label.success { - color: #ccc !important; - background-color: darkolivegreen !important; -} - -/* Define the warning background-color breathe display animation (dark mode) */ -@keyframes warning-background-color-breathe-dark { - 0%{ - color: #fff; - background-color: darkorange; - } - 50%{ - color: #ccc; - background-color: #333333; - } - 100%{ - color: #fff; - background-color: darkorange; - } -} -.warning, -.warning * { - animation: warning-background-color-breathe-dark 1.5s ease-in-out infinite !important; -} - -.notice { - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; -} - -/* Improved the aleart-message background color during device restart (dark mode only) */ -.errorbox, -.alert-message { - background-color: #333333; -} - -.cbi-input-find, -.cbi-input-save, -.cbi-button-add, -.cbi-button-save, -.cbi-button-find, -.cbi-input-reload, -.cbi-button-reload { - background-color: darkseagreen !important; - border-color: darkseagreen !important; -} - -.cbi-button-reset, -.cbi-input-remove { - color: #fff !important; - background-color: darkorange !important; - border-color: darkorange !important; -} - -.cbi-page-actions .cbi-button-apply, -.cbi-section-actions .cbi-button-edit, -.cbi-button-edit.important, -.cbi-button-apply.important, -.cbi-button-reload.important, -.cbi-button-action.important { - border: 1px #483d8b solid !important; - border: 1px var(--dark-primary) solid !important; -} - -fieldset[id^="cbi-apply-"] { - background-color: #333333; -} - -#detail-bubble>div { - border: 1px solid #ccc; - border-radius: 2px; - padding: 5px; - background: #252525; -} - -/* Define the error text border breathe display animation (dark mode) */ -@keyframes error-border-breathe-dark { - 0%{ - border-color: darkorange; - } - 50%{ - border-color: transparent; - } - 100%{ - border-color: darkorange; - } -} - -/* Add border for error text box, and border breathe display animation to make it more noticeable (dark mode) */ -.cbi-section-error>ul>li { - color: darkorange; - border: 2px solid darkorange ; - animation: error-border-breathe-dark 1.5s ease-in-out infinite; -} - -.cbi-input-invalid, -.cbi-value-error input { - color: darkorange; - border: 1px dashed darkorange !important; -} - -.node-services-vssr .block h4 span { - color: #ccc !important; -} - -/* luci-app-passwall */ -#cbi-passwall #add_link_div, -#cbi-passwall #set_node_div { - background: #333333f0 !important; - box-shadow: #00000094 10px 10px 30px 5px !important; -} - -/* luci-app-bypass */ -#cbi-bypass .status-bar { - color: #ccc; - background: #333333f0; - box-shadow: #00000094 10px 10px 30px 5px; -} - -/* luci-app-clash */ -#cbi-clash .cbi-section .pure-u-1-4 .pure-g, -#cbi-clash .cbi-section .siz .pure-g { - background-color: #1e1e1e !important; - box-shadow: 0 0 .5rem 0 rgba(0,0,0,0.35) !important; -} - -/* luci-app-openclash */ -#cbi-openclash #eye-icon, -#cbi-openclash img[title="刷新"] { - filter: invert(100%); -} -#cbi-openclash #cbi-openclash-config fieldset[control-id="ControlID-46"], -#cbi-openclash .CodeMirror-merge-copybuttons-right, -.CodeMirror-scroll { - background-color: #333333 !important; -} -#cbi-openclash .cbi-section .cbi-tabmenu li { - border-right: 1px solid #3c3c3c !important; -} -#cbi-openclash .CodeMirror-merge { - border: 1px solid transparent !important; -} -#cbi-openclash-config-clog .cbi-section { - border: 1px solid #3c3c3c !important; -} -#cbi-openclash .CodeMirror-gutters { - border-right: 1px solid #3c3c3c !important; - background-color: #1e1e1e !important; -} - -/* luci-app-dockerman */ -#cbi-dockerd .img-con img { - filter: invert(0.4); -} - -/* luci-app-istorex (interface config[NetworkPort]) */ -#cbi-nfs-mount .app-container_status-label_bg { - background: #333333; -} -#cbi-nfs-mount td svg { - filter: invert(0.3); -} -#actioner .actioner-dns { - background-color: #333333; -} -#actioner .actioner-dns_header, -#actioner .actioner-container_header { - border-bottom: 1px solid #cbcbcb !important; -} -#actioner .actioner-dns_footer { - border-top: 1px solid #cbcbcb !important; -} - -/* luci-app-istorex (Network Guide) */ -#app #main #page .title, -#app #main #page .desc { - color: #cccccc; - background-color: #333333; -} -#app #main #page .network-message li:not(span):not(a) { - color: #8d8d8d; -} -#app #main #page code { - background-color: #333333; -} - -/* luci-app-istorex (Quick Start) */ -#app #main #page .network-container_flow-container, -#app #main #page .app-container_status-container, -#app #main #page .nas-container .nas-container_card .app-container, -#app #main #page .app-container { - background-color: #333333; -} -#app #main #page .flow-data span, -#app #main #page .app-container_status-label_block span, -#app #main #page .app-container .item-label span:not(#app #main #page .app-container .progress-value span) { - color: #cccccc; -} -#app #main #page .app-container_status-info span, -#app #main #page .app-container_status-info span, -#app #main #page .app-container_title span { - color: #dddddd; -} -.app-container_body .app-container_status-label_bg { - background-color: #282828 !important; -} -#app #main #page .item-label_value .progress { - background-color: rgb(118, 118, 118); -} -#app #main #page .app-container_nas-menu button[class=""] { - background-color: #8b8b8b; -} -#app #main #page .app-container_nas-menu button[class="on"] { - background-color: #555555; -} -#app #main #page .app-container_title .DeviceBlock ul { - background-color: #cccccc; -} -#actioner div.action, -#actioner div.actioner-container { - background-color: #3c3c3c; -} -#actioner div.action .title { - color: #cccccc; -} -#actioner div.action .desc { - color: #cbcbcb; -} -#actioner div.action div.roots span, -#actioner div.action div.move span:not(span.tip), -#actioner div.action div.left span, -#actioner div.action div.input_row span, -#actioner div.label-item label span { - color: #cbcbcb; -} -#actioner div.action span.tooltip-trigger svg path { - fill: #cbcbcb; -} -#actioner div.actioner-dns_body div.label-item_value select { - height: 43px; -} -#actioner div.actioner-container_footer div.close { - color: #ffffff; -} -#app #main div.app-container div.app-container_title span a svg path, -#app #main #page span.disk_infoicon svg g { - fill: #8b8b8b; -} - -@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { - .login-page .login-container .login-form { - -webkit-backdrop-filter: blur(var(--blur-radius-dark)); - backdrop-filter: blur(var(--blur-radius-dark)); - background-color: rgba(0, 0, 0, var(--blur-opacity-dark)); - } -} - -@media screen and (max-width:480px) { - .node-status-iptables>.main div>.cbi-map>form { - background-color: #1e1e1e; - box-shadow: 0 0 .5rem 0 rgba(0,0,0,0.35); - } -} \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/css/fonts.css b/luci-theme-argon/htdocs/luci-static/argon/css/fonts.css deleted file mode 100644 index cc4e1a80..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/css/fonts.css +++ /dev/null @@ -1,186 +0,0 @@ -/** - * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template - * - * luci-theme-argon - * Copyright 2020 Jerryk - * - * Have a bug? Please create an issue here on GitHub! - * https://github.com/jerrykuku/luci-theme-argon/issues - * - * luci-theme-bootstrap: - * Copyright 2008 Steven Barth - * Copyright 2008 Jo-Philipp Wich - * Copyright 2012 David Menting - * - * MUI: - * https://github.com/muicss/mui - * - * luci-theme-material: - * https://github.com/LuttyYang/luci-theme-material/ - * - * Argon Theme - * https://demos.creative-tim.com/argon-dashboard/index.html - * - * Login background - * https://unsplash.com/ - * - * Licensed to the public under the Apache License 2.0 - */ - - - @font-face { - font-family: 'Google Sans'; - src: url('data:application/font-woff2;charset=utf-8;base64,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') format('woff2'), - url('data:application/font-woff;charset=utf-8;base64,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') format('woff'); - font-weight: normal; - font-style: normal; -} - -/* Logo Font */ -@font-face { - font-family: 'TypoGraphica'; - src: url('../fonts/TypoGraphica.eot?#iefix') format('embedded-opentype'), url('../fonts/TypoGraphica.woff') format('woff'), url('../fonts/TypoGraphica.ttf') format('truetype'), url('../fonts/TypoGraphica.svg#TypoGraphica') format('svg'); - font-weight: normal; - font-style: normal; -} - -/* ICON Font */ - -@font-face { - font-family: 'argon'; - src: url('../fonts/argon.eot?u6kthm'); - src: url('../fonts/argon.eot?u6kthm#iefix') format('embedded-opentype'), - url('../fonts/argon.ttf?u6kthm') format('truetype'), - url('../fonts/argon.woff?u6kthm') format('woff'), - url('../fonts/argon.svg?u6kthm#argon') format('svg'); - font-weight: normal; - font-style: normal; - font-display: block; -} - -[class^="icon-"], -[class*=" icon-"] { - /* use !important to prevent issues with browser extensions that change fonts */ - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-expand_more:before { - content: "\e20b"; -} - -.icon-menu:before { - content: "\e20e"; -} - -.icon-favorite:before { - content: "\e291"; -} - -.icon-spinner:before { - content: "\e603"; -} - -.icon-delete:before { - content: "\e900"; -} - -.icon-edit:before { - content: "\e901"; -} - -.icon-use:before { - content: "\e902"; -} - -.icon-loading:before { - content: "\e903"; -} - -.icon-switch:before { - content: "\e904"; -} - -.icon-error:before { - content: "\e905"; -} - -.icon-dashboard:before { - content: "\e906"; -} - -.icon-logout:before { - content: "\e907"; -} - -.icon-Network:before { - content: "\e908"; -} - -.icon-services:before { - content: "\e909"; -} - -.icon-system:before { - content: "\e90a"; -} - -.icon-vpn:before { - content: "\e90b"; -} - -.icon-storage:before { - content: "\e90c"; -} - -.icon-statistics:before { - content: "\e90d"; -} - -.icon-hello-world:before { - content: "\e90e"; -} - -.icon-angle-right:before { - content: "\e90f"; -} - -.icon-password:before { - content: "\e910"; -} - -.icon-user:before { - content: "\e971"; -} - -.icon-question:before { - content: "\f059"; -} - -.icon-docker:before { - content: "\e911"; -} - -.icon-control:before { - content: "\e912"; -} - -.icon-statistics1:before { - content: "\e913"; -} - -.icon-asterisk:before { - content: "\e914"; -} - -.icon-app:before { - content: "\e915"; -} \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/css/pure-min.css b/luci-theme-argon/htdocs/luci-static/argon/css/pure-min.css deleted file mode 100644 index e898cf2c..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/css/pure-min.css +++ /dev/null @@ -1,11 +0,0 @@ -/*! -Pure v2.0.3 -Copyright 2013 Yahoo! -Licensed under the BSD License. -https://github.com/pure-css/pure/blob/master/LICENSE.md -*/ -/*! -normalize.css v | MIT License | git.io/normalize -Copyright (c) Nicolas Gallagher and Jonathan Neal -*/ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select{font-family:inherit;font-size:100%;line-height:1.15;margin:5px}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{font-family:sans-serif}.hidden,[hidden]{display:none!important}.pure-img{max-width:100%;height:auto}.pure-g{letter-spacing:-.31em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,"Droid Sans",Helvetica,Arial,sans-serif;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-line-pack:start;align-content:flex-start}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){table .pure-g{display:block}}.opera-only :-o-prefocus,.pure-g{word-spacing:-.43em}.pure-u{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-g [class*=pure-u]{font-family:sans-serif}.pure-u-1,.pure-u-1-1,.pure-u-1-12,.pure-u-1-2,.pure-u-1-24,.pure-u-1-3,.pure-u-1-4,.pure-u-1-5,.pure-u-1-6,.pure-u-1-8,.pure-u-10-24,.pure-u-11-12,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-2-24,.pure-u-2-3,.pure-u-2-5,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24,.pure-u-3-24,.pure-u-3-4,.pure-u-3-5,.pure-u-3-8,.pure-u-4-24,.pure-u-4-5,.pure-u-5-12,.pure-u-5-24,.pure-u-5-5,.pure-u-5-6,.pure-u-5-8,.pure-u-6-24,.pure-u-7-12,.pure-u-7-24,.pure-u-7-8,.pure-u-8-24,.pure-u-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%}.pure-u-1-12,.pure-u-2-24{width:8.3333%}.pure-u-1-8,.pure-u-3-24{width:12.5%}.pure-u-1-6,.pure-u-4-24{width:16.6667%}.pure-u-1-5{width:20%}.pure-u-5-24{width:20.8333%}.pure-u-1-4,.pure-u-6-24{width:25%}.pure-u-7-24{width:29.1667%}.pure-u-1-3,.pure-u-8-24{width:33.3333%}.pure-u-3-8,.pure-u-9-24{width:37.5%}.pure-u-2-5{width:40%}.pure-u-10-24,.pure-u-5-12{width:41.6667%}.pure-u-11-24{width:45.8333%}.pure-u-1-2,.pure-u-12-24{width:50%}.pure-u-13-24{width:54.1667%}.pure-u-14-24,.pure-u-7-12{width:58.3333%}.pure-u-3-5{width:60%}.pure-u-15-24,.pure-u-5-8{width:62.5%}.pure-u-16-24,.pure-u-2-3{width:66.6667%}.pure-u-17-24{width:70.8333%}.pure-u-18-24,.pure-u-3-4{width:75%}.pure-u-19-24{width:79.1667%}.pure-u-4-5{width:80%}.pure-u-20-24,.pure-u-5-6{width:83.3333%}.pure-u-21-24,.pure-u-7-8{width:87.5%}.pure-u-11-12,.pure-u-22-24{width:91.6667%}.pure-u-23-24{width:95.8333%}.pure-u-1,.pure-u-1-1,.pure-u-24-24,.pure-u-5-5{width:100%}.pure-button{display:inline-block;line-height:normal;white-space:nowrap;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-group{letter-spacing:-.31em;text-rendering:optimizespeed}.opera-only :-o-prefocus,.pure-button-group{word-spacing:-.43em}.pure-button-group .pure-button{letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-button{font-family:inherit;font-size:100%;padding:.5em 1em;color:rgba(0,0,0,.8);border:none transparent;background-color:#e6e6e6;text-decoration:none;border-radius:2px}.pure-button-hover,.pure-button:focus,.pure-button:hover{background-image:-webkit-gradient(linear,left top,left bottom,from(transparent),color-stop(40%,rgba(0,0,0,.05)),to(rgba(0,0,0,.1)));background-image:linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1))}.pure-button:focus{outline:0}.pure-button-active,.pure-button:active{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;border-color:#000}.pure-button-disabled,.pure-button-disabled:active,.pure-button-disabled:focus,.pure-button-disabled:hover,.pure-button[disabled]{border:none;background-image:none;opacity:.4;cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;pointer-events:none}.pure-button-hidden{display:none}.pure-button-primary,.pure-button-selected,a.pure-button-primary,a.pure-button-selected{background-color:#0078e7;color:#fff}.pure-button-group .pure-button{margin:0;border-radius:0;border-right:1px solid rgba(0,0,0,.2)}.pure-button-group .pure-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.pure-button-group .pure-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:none}.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form select,.pure-form textarea{padding:.5em .6em;display:inline-block;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #ddd;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-form input:not([type]){padding:.5em .6em;display:inline-block;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #ddd;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-form input[type=color]{padding:.2em .5em}.pure-form input[type=color]:focus,.pure-form input[type=date]:focus,.pure-form input[type=datetime-local]:focus,.pure-form input[type=datetime]:focus,.pure-form input[type=email]:focus,.pure-form input[type=month]:focus,.pure-form input[type=number]:focus,.pure-form input[type=password]:focus,.pure-form input[type=search]:focus,.pure-form input[type=tel]:focus,.pure-form input[type=text]:focus,.pure-form input[type=time]:focus,.pure-form input[type=url]:focus,.pure-form input[type=week]:focus,.pure-form select:focus,.pure-form textarea:focus{outline:0;border-color:#129fea}.pure-form input:not([type]):focus{outline:0;border-color:#129fea}.pure-form input[type=checkbox]:focus,.pure-form input[type=file]:focus,.pure-form input[type=radio]:focus{outline:thin solid #129fea;outline:1px auto #129fea}.pure-form .pure-checkbox,.pure-form .pure-radio{margin:.5em 0;display:block}.pure-form input[type=color][disabled],.pure-form input[type=date][disabled],.pure-form input[type=datetime-local][disabled],.pure-form input[type=datetime][disabled],.pure-form input[type=email][disabled],.pure-form input[type=month][disabled],.pure-form input[type=number][disabled],.pure-form input[type=password][disabled],.pure-form input[type=search][disabled],.pure-form input[type=tel][disabled],.pure-form input[type=text][disabled],.pure-form input[type=time][disabled],.pure-form input[type=url][disabled],.pure-form input[type=week][disabled],.pure-form select[disabled],.pure-form textarea[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input:not([type])[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input[readonly],.pure-form select[readonly],.pure-form textarea[readonly]{background-color:#eee;color:#777;border-color:#ccc}.pure-form input:focus:invalid,.pure-form select:focus:invalid,.pure-form textarea:focus:invalid{color:#b94a48;border-color:#e9322d}.pure-form input[type=checkbox]:focus:invalid:focus,.pure-form input[type=file]:focus:invalid:focus,.pure-form input[type=radio]:focus:invalid:focus{outline-color:#e9322d}.pure-form select{height:2.25em;border:1px solid #ccc;background-color:#fff}.pure-form select[multiple]{height:auto}.pure-form label{margin:.5em 0 .2em}.pure-form fieldset{margin:0;padding:.35em 0 .75em;border:0}.pure-form legend{display:block;width:100%;padding:.3em 0;margin-bottom:.3em;color:#333;border-bottom:1px solid #e5e5e5}.pure-form-stacked input[type=color],.pure-form-stacked input[type=date],.pure-form-stacked input[type=datetime-local],.pure-form-stacked input[type=datetime],.pure-form-stacked input[type=email],.pure-form-stacked input[type=file],.pure-form-stacked input[type=month],.pure-form-stacked input[type=number],.pure-form-stacked input[type=password],.pure-form-stacked input[type=search],.pure-form-stacked input[type=tel],.pure-form-stacked input[type=text],.pure-form-stacked input[type=time],.pure-form-stacked input[type=url],.pure-form-stacked input[type=week],.pure-form-stacked label,.pure-form-stacked select,.pure-form-stacked textarea{display:block;margin:.25em 0}.pure-form-stacked input:not([type]){display:block;margin:.25em 0}.pure-form-aligned input,.pure-form-aligned select,.pure-form-aligned textarea,.pure-form-message-inline{display:inline-block;vertical-align:middle}.pure-form-aligned textarea{vertical-align:top}.pure-form-aligned .pure-control-group{margin-bottom:.5em}.pure-form-aligned .pure-control-group label{text-align:right;display:inline-block;vertical-align:middle;width:10em;margin:0 1em 0 0}.pure-form-aligned .pure-controls{margin:1.5em 0 0 11em}.pure-form .pure-input-rounded,.pure-form input.pure-input-rounded{border-radius:2em;padding:.5em 1em}.pure-form .pure-group fieldset{margin-bottom:10px}.pure-form .pure-group input,.pure-form .pure-group textarea{display:block;padding:10px;margin:0 0 -1px;border-radius:0;position:relative;top:-1px}.pure-form .pure-group input:focus,.pure-form .pure-group textarea:focus{z-index:3}.pure-form .pure-group input:first-child,.pure-form .pure-group textarea:first-child{top:1px;border-radius:4px 4px 0 0;margin:0}.pure-form .pure-group input:first-child:last-child,.pure-form .pure-group textarea:first-child:last-child{top:1px;border-radius:4px;margin:0}.pure-form .pure-group input:last-child,.pure-form .pure-group textarea:last-child{top:-2px;border-radius:0 0 4px 4px;margin:0}.pure-form .pure-group button{margin:.35em 0}.pure-form .pure-input-1{width:100%}.pure-form .pure-input-3-4{width:75%}.pure-form .pure-input-2-3{width:66%}.pure-form .pure-input-1-2{width:50%}.pure-form .pure-input-1-3{width:33%}.pure-form .pure-input-1-4{width:25%}.pure-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:.875em}.pure-form-message{display:block;color:#666;font-size:.875em}@media only screen and (max-width :480px){.pure-form button[type=submit]{margin:.7em 0 0}.pure-form input:not([type]),.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form label{margin-bottom:.3em;display:block}.pure-group input:not([type]),.pure-group input[type=color],.pure-group input[type=date],.pure-group input[type=datetime-local],.pure-group input[type=datetime],.pure-group input[type=email],.pure-group input[type=month],.pure-group input[type=number],.pure-group input[type=password],.pure-group input[type=search],.pure-group input[type=tel],.pure-group input[type=text],.pure-group input[type=time],.pure-group input[type=url],.pure-group input[type=week]{margin-bottom:0}.pure-form-aligned .pure-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.pure-form-aligned .pure-controls{margin:1.5em 0 0 0}.pure-form-message,.pure-form-message-inline{display:block;font-size:.75em;padding:.2em 0 .8em}}.pure-menu{-webkit-box-sizing:border-box;box-sizing:border-box}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:3}.pure-menu-item,.pure-menu-list{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-heading,.pure-menu-link{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-separator{display:inline-block;vertical-align:middle}.pure-menu-item .pure-menu-item{display:block}.pure-menu-children{display:none;position:absolute;left:100%;top:0;margin:0;padding:0;z-index:3}.pure-menu-horizontal .pure-menu-children{left:0;top:auto;width:inherit}.pure-menu-active>.pure-menu-children,.pure-menu-allow-hover:hover>.pure-menu-children{display:block;position:absolute}.pure-menu-has-children>.pure-menu-link:after{padding-left:.5em;content:"\25B8";font-size:small}.pure-menu-horizontal .pure-menu-has-children>.pure-menu-link:after{content:"\25BE"}.pure-menu-scrollable{overflow-y:scroll;overflow-x:hidden}.pure-menu-scrollable .pure-menu-list{display:block}.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list{display:inline-block}.pure-menu-horizontal.pure-menu-scrollable{white-space:nowrap;overflow-y:hidden;overflow-x:auto;padding:.5em 0}.pure-menu-horizontal .pure-menu-children .pure-menu-separator,.pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-horizontal .pure-menu-children .pure-menu-separator{display:block;width:auto}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#fff}.pure-menu-disabled,.pure-menu-heading,.pure-menu-link{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent}.pure-menu-active>.pure-menu-link,.pure-menu-link:focus,.pure-menu-link:hover{background-color:#eee}.pure-menu-selected>.pure-menu-link,.pure-menu-selected>.pure-menu-link:visited{color:#000}.pure-table{border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table thead{background-color:#e0e0e0;color:#000;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td{background-color:#f2f2f2}.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0} \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/favicon.ico b/luci-theme-argon/htdocs/luci-static/argon/favicon.ico deleted file mode 100644 index 79c8f860..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/favicon.ico and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.eot b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.eot deleted file mode 100644 index efce636a..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.eot and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.svg b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.svg deleted file mode 100644 index c555b759..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.svg +++ /dev/null @@ -1,1191 +0,0 @@ - - - - -Created by FontForge 20090622 at Tue Jul 23 03:29:07 2019 - By deploy user -TypoGraphica ©Sharkshock Productions 2015. All Rights Reserved - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.ttf b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.ttf deleted file mode 100644 index e11f89a0..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.ttf and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.woff b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.woff deleted file mode 100644 index fef38ca0..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.woff and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.eot b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.eot deleted file mode 100644 index e28f6db5..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.eot and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.svg b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.svg deleted file mode 100644 index 1e12b5f6..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - -Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.ttf b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.ttf deleted file mode 100644 index 3d062dcf..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.ttf and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.woff b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.woff deleted file mode 100644 index ef1e9c2c..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.woff and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/android-icon-192x192.png b/luci-theme-argon/htdocs/luci-static/argon/icon/android-icon-192x192.png deleted file mode 100644 index 7bfe4e5f..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/icon/android-icon-192x192.png and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-144x144.png b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-144x144.png deleted file mode 100644 index 8d523df8..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-144x144.png and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-60x60.png b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-60x60.png deleted file mode 100644 index 4c80656d..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-60x60.png and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-72x72.png b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-72x72.png deleted file mode 100644 index 07753022..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-72x72.png and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/browserconfig.xml b/luci-theme-argon/htdocs/luci-static/argon/icon/browserconfig.xml deleted file mode 100644 index c5541482..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/icon/browserconfig.xml +++ /dev/null @@ -1,2 +0,0 @@ - -#ffffff \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-16x16.png b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-16x16.png deleted file mode 100644 index 88bf3297..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-16x16.png and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-32x32.png b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-32x32.png deleted file mode 100644 index d524df3e..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-32x32.png and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-96x96.png b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-96x96.png deleted file mode 100644 index 6c8e8874..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-96x96.png and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/manifest.json b/luci-theme-argon/htdocs/luci-static/argon/icon/manifest.json deleted file mode 100644 index 2817bc81..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/icon/manifest.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "Openwrt", - "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", - "sizes": "192x192", - "type": "image\/png", - "density": "4.0" - } - ] -} \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/ms-icon-144x144.png b/luci-theme-argon/htdocs/luci-static/argon/icon/ms-icon-144x144.png deleted file mode 100644 index 8d523df8..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/icon/ms-icon-144x144.png and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/add.webp b/luci-theme-argon/htdocs/luci-static/argon/img/add.webp deleted file mode 100644 index 7271dd3e..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/img/add.webp and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/argon.svg b/luci-theme-argon/htdocs/luci-static/argon/img/argon.svg deleted file mode 100644 index 0c8aea07..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/img/argon.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/bg1.jpg b/luci-theme-argon/htdocs/luci-static/argon/img/bg1.jpg deleted file mode 100644 index 26a52a53..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/img/bg1.jpg and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/blank.png b/luci-theme-argon/htdocs/luci-static/argon/img/blank.png deleted file mode 100644 index 9f4100e6..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/img/blank.png and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/edit.webp b/luci-theme-argon/htdocs/luci-static/argon/img/edit.webp deleted file mode 100644 index 264840a3..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/img/edit.webp and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/fieldadd.webp b/luci-theme-argon/htdocs/luci-static/argon/img/fieldadd.webp deleted file mode 100644 index a4619e24..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/img/fieldadd.webp and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/file.webp b/luci-theme-argon/htdocs/luci-static/argon/img/file.webp deleted file mode 100644 index 6597e6ce..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/img/file.webp and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/find.webp b/luci-theme-argon/htdocs/luci-static/argon/img/find.webp deleted file mode 100644 index 0b8fae85..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/img/find.webp and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/folder.webp b/luci-theme-argon/htdocs/luci-static/argon/img/folder.webp deleted file mode 100644 index eef1fb10..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/img/folder.webp and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/link.webp b/luci-theme-argon/htdocs/luci-static/argon/img/link.webp deleted file mode 100644 index 51dc404e..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/img/link.webp and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/reload.webp b/luci-theme-argon/htdocs/luci-static/argon/img/reload.webp deleted file mode 100644 index f9a15668..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/img/reload.webp and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/remove.webp b/luci-theme-argon/htdocs/luci-static/argon/img/remove.webp deleted file mode 100644 index 02e49860..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/img/remove.webp and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/trafficbar.png b/luci-theme-argon/htdocs/luci-static/argon/img/trafficbar.png deleted file mode 100644 index c9a99ce0..00000000 Binary files a/luci-theme-argon/htdocs/luci-static/argon/img/trafficbar.png and /dev/null differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/volume_high.svg b/luci-theme-argon/htdocs/luci-static/argon/img/volume_high.svg deleted file mode 100644 index f01ad5c7..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/img/volume_high.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/volume_off.svg b/luci-theme-argon/htdocs/luci-static/argon/img/volume_off.svg deleted file mode 100644 index 0598d584..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/img/volume_off.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/js/color_calc-argon.js b/luci-theme-argon/htdocs/luci-static/argon/js/color_calc-argon.js deleted file mode 100644 index bf7d7948..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/js/color_calc-argon.js +++ /dev/null @@ -1,72 +0,0 @@ -/* - * The background color of the [Light Mode] subtabs follow the custom primary color and reduce its transparency - * Author: SpeedPartner - */ - -/* - * Get hex for the [Light mode] Primary Color ,then reduce it to 25% transparency and convert it to RGBA value - */ - const hexColor_primary_light = getComputedStyle(document.documentElement).getPropertyValue('--primary').replace(/\s/, ""); - const hexToRgba_primary_light = (hex) => { - const r = parseInt(hex.substring(1, 3), 16); - const g = parseInt(hex.substring(3, 5), 16); - const b = parseInt(hex.substring(5, 7), 16); - const a = 0.15 - return [r, g, b].map(x => x.toFixed()).concat(a); - }; - const rgbaColor_primary_light = hexToRgba_primary_light(hexColor_primary_light); - console.log(rgbaColor_primary_light); - -/* - * Constitute a css color variable named light-subtabs-background - */ - document.documentElement.style.setProperty('--light-subtabs-background', `rgba(`+rgbaColor_primary_light+`)`); - - -/* - * Improved link font color that follows custom [Dark mode] Primary Color - * Author: SpeedPartner - */ - -/* - * Get hex for the [Dark mode] Primary Color ,then reduce it to 70% transparency and convert it to RGB value - */ - const hexColor_primary = getComputedStyle(document.documentElement).getPropertyValue('--dark-primary').replace(/\s/, ""); - const hexToRgb_primary = (hex) => { - const r = parseInt(hex.substring(1, 3), 16); - const g = parseInt(hex.substring(3, 5), 16); - const b = parseInt(hex.substring(5, 7), 16); - const a = 0.7 - return [r*a, g*a, b*a].map(x => x.toFixed(2)); - }; - const rgbColor_primary = hexToRgb_primary(hexColor_primary); - //console.log(rgbColor_primary); - -/* - * Constitute overlay color #cccccc, then reduce it to 30% transparency and convert it to RGB value - */ - const hexColor_overlay = "#cccccc"; - const hexToRgb_overlay = (hex) => { - const r = parseInt(hex.substring(1, 3), 16); - const g = parseInt(hex.substring(3, 5), 16); - const b = parseInt(hex.substring(5, 7), 16); - const a = 0.3 - return [r*a, g*a, b*a].map(x => x.toFixed(2)); - }; - const rgbColor_overlay = hexToRgb_overlay(hexColor_overlay); - //console.log(rgbColor_overlay); - -/* - * Overlay the RGB value of two colors - */ - const New_Color = [ - Math.round(Number(rgbColor_primary[0]) + Number(rgbColor_overlay[0])), - Math.round(Number(rgbColor_primary[1]) + Number(rgbColor_overlay[1])), - Math.round(Number(rgbColor_primary[2]) + Number(rgbColor_overlay[2])) - ]; - //console.log(New_Color); - -/* - * Constitute a css color variable named dark_webkit-any-link - */ - document.documentElement.style.setProperty('--dark_webkit-any-link', `rgb(`+New_Color+`)`); diff --git a/luci-theme-argon/htdocs/luci-static/argon/js/jquery.min.js b/luci-theme-argon/htdocs/luci-static/argon/js/jquery.min.js deleted file mode 100644 index d467083b..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/js/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 - * - * Have a bug? Please create an issue here on GitHub! - * https://github.com/jerrykuku/luci-theme-argon/issues - * - * luci-theme-bootstrap: - * Copyright 2008 Steven Barth - * Copyright 2008 Jo-Philipp Wich - * Copyright 2012 David Menting - * - * MUI: - * https://github.com/muicss/mui - * - * luci-theme-material: - * https://github.com/LuttyYang/luci-theme-material/ - * - * Argon Theme - * https://demos.creative-tim.com/argon-dashboard/index.html - * - * Login background - * https://unsplash.com/ - * - * Licensed to the public under the Apache License 2.0 - */ - - var lastNode = undefined; - var mainNodeName = undefined; - - var nodeUrl = ""; - (function (node) { - if (node[0] == "admin") { - luciLocation = [node[1], node[2]]; - } else { - luciLocation = node; - } - - for (var i in luciLocation) { - nodeUrl += luciLocation[i]; - if (i != luciLocation.length - 1) { - nodeUrl += "/"; - } - } - })(luciLocation); - - /** - * get the current node by Burl (primary) - * @returns {boolean} success? - */ - function getCurrentNodeByUrl() { - var ret = false; - const urlReg = new RegExp(nodeUrl + "$") - if (!$('body').hasClass('logged-in')) { - luciLocation = ["Main", "Login"]; - return true; - } - $(".main > .main-left > .nav > .slide > .active").next(".slide-menu").stop(true).slideUp("fast"); - $(".main > .main-left > .nav > .slide > .menu").removeClass("active"); - $(".main > .main-left > .nav > .slide > .menu").each(function () { - var ulNode = $(this); - - ulNode.next().find("a").each(function () { - var that = $(this); - var href = that.attr("href"); - - if (urlReg.test(href)) { - ulNode.click(); - ulNode.next(".slide-menu").stop(true, true); - lastNode = that.parent(); - lastNode.addClass("active"); - ret = true; - return true; - } - }); - }); - return ret; - } - - /** - * menu click - */ - $(".main > .main-left > .nav > .slide > .menu").click(function () { - var ul = $(this).next(".slide-menu"); - var menu = $(this); - if (!menu.hasClass("exit")) { - $(".main > .main-left > .nav > .slide > .active").next(".slide-menu").stop(true).slideUp("fast"); - $(".main > .main-left > .nav > .slide > .menu").removeClass("active"); - if (!ul.is(":visible")) { - menu.addClass("active"); - ul.addClass("active"); - ul.stop(true).slideDown("fast"); - } else { - ul.stop(true).slideUp("fast", function () { - menu.removeClass("active"); - ul.removeClass("active"); - }); - } - - return false; - } - - }); - - /** - * hook menu click and add the hash - */ - $(".main > .main-left > .nav > .slide > .slide-menu > li > a").click(function () { - if (lastNode != undefined) - lastNode.removeClass("active"); - $(this).parent().addClass("active"); - $(".main > .loading").fadeIn("fast"); - return true; - }); - - /** - * fix menu click - */ - $(".main > .main-left > .nav > .slide > .slide-menu > li").click(function () { - if (lastNode != undefined) - lastNode.removeClass("active"); - $(this).addClass("active"); - $(".main > .loading").fadeIn("fast"); - window.location = $($(this).find("a")[0]).attr("href"); - return false; - }); - - /** - * fix submenu click - */ - $("#maincontent > .container > .tabs > li").click(function () { - $(".main > .loading").fadeIn("fast"); - window.location = $($(this).find("a")[0]).attr("href"); - return false; - }); - - /** - * get current node and open it - */ - if (getCurrentNodeByUrl()) { - mainNodeName = "node-" + luciLocation[0] + "-" + luciLocation[1]; - mainNodeName = mainNodeName.replace(/[ \t\n\r\/]+/g, "_").toLowerCase(); - $("body").addClass(mainNodeName); - } - - if (mainNodeName != undefined) { - console.log(mainNodeName); - switch (mainNodeName) { - case "node-status-system_log": - case "node-status-kernel_log": - $("#syslog").focus(function () { - $("#syslog").blur(); - $(".main-right").focus(); - $(".main-right").blur(); - }); - break; - case "node-status-firewall": - var button = $(".node-status-firewall > .main fieldset li > a"); - button.addClass("cbi-button cbi-button-reset a-to-btn"); - break; - case "node-system-reboot": - var button = $(".node-system-reboot > .main > .main-right p > a"); - button.addClass("cbi-button cbi-input-reset a-to-btn"); - break; - } - } diff --git a/luci-theme-argon/htdocs/luci-static/argon/js/sidebar-argon.js b/luci-theme-argon/htdocs/luci-static/argon/js/sidebar-argon.js deleted file mode 100644 index fdf5a99c..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/js/sidebar-argon.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template - * - * luci-theme-argon - * Copyright 2023 Jerrykuku - * - * Have a bug? Please create an issue here on GitHub! - * https://github.com/jerrykuku/luci-theme-argon/issues - * - * luci-theme-bootstrap: - * Copyright 2008 Steven Barth - * Copyright 2008 Jo-Philipp Wich - * Copyright 2012 David Menting - * - * MUI: - * https://github.com/muicss/mui - * - * luci-theme-material: - * https://github.com/LuttyYang/luci-theme-material/ - * - * Argon Theme - * https://demos.creative-tim.com/argon-dashboard/index.html - * - * Login background - * https://unsplash.com/ - * - * Licensed to the public under the Apache License 2.0 - */ - - /** - * Sidebar expand - */ - var showSide = false; - $(".showSide").click(function () { - if (showSide) { - $(".darkMask").stop(true).fadeOut("fast"); - $(".main-left").width(0); - $(".main-right").css("overflow-y", "auto"); - showSide = false; - } else { - $(".darkMask").stop(true).fadeIn("fast"); - $(".main-left").width("15rem"); - $(".main-right").css("overflow-y", "hidden"); - showSide = true; - } - }); - - $(".darkMask").click(function () { - if (showSide) { - showSide = false; - $(".darkMask").stop(true).fadeOut("fast"); - $(".main-left").width(0); - $(".main-right").css("overflow-y", "auto"); - } - }); - - $(window).resize(function () { - if ($(window).width() > 921) { - $(".main-left").css("width", ""); - $(".darkMask").stop(true); - $(".darkMask").css("display", "none"); - showSide = false; - } - }); diff --git a/luci-theme-argon/htdocs/luci-static/argon/js/styles-argon.js b/luci-theme-argon/htdocs/luci-static/argon/js/styles-argon.js deleted file mode 100644 index 2e40a94c..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/js/styles-argon.js +++ /dev/null @@ -1,103 +0,0 @@ -/** - * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template - * - * luci-theme-argon - * Copyright 2023 Jerrykuku - * - * Have a bug? Please create an issue here on GitHub! - * https://github.com/jerrykuku/luci-theme-argon/issues - * - * luci-theme-bootstrap: - * Copyright 2008 Steven Barth - * Copyright 2008 Jo-Philipp Wich - * Copyright 2012 David Menting - * - * MUI: - * https://github.com/muicss/mui - * - * luci-theme-material: - * https://github.com/LuttyYang/luci-theme-material/ - * - * Argon Theme - * https://demos.creative-tim.com/argon-dashboard/index.html - * - * Login background - * https://unsplash.com/ - * - * Licensed to the public under the Apache License 2.0 - */ - -/* - * Font generate by Icomoon - */ -(function ($) { - $(".main > .loading").fadeOut(); - - /** - * trim text, Remove spaces, wrap - * @param text - * @returns {string} - */ - function trimText(text) { - return text.replace(/[ \t\n\r]+/g, " "); - } - -// define what element should be observed by the observer -// and what types of mutations trigger the callback - const observer = new MutationObserver(() => { - console.log("callback that runs when observer is triggered"); - }); - if ($("#cbi-dhcp-lan-ignore").length > 0) { - observer.observe(document.getElementById("cbi-dhcp-lan-ignore"), { - subtree: true, - attributes: true - }); - } - - $(".cbi-button-up").val(""); - $(".cbi-button-down").val(""); - - /** - * hook other "A Label" and add hash to it. - */ - $("#maincontent > .container").find("a").each(function () { - var that = $(this); - var onclick = that.attr("onclick"); - if (onclick == undefined || onclick == "") { - that.click(function () { - var href = that.attr("href"); - if (href.indexOf("#") == -1) { - $(".main > .loading").fadeIn("fast"); - return true; - } - }); - } - }); - - /** - * fix legend position - */ - $("legend").each(function () { - var that = $(this); - that.after("" + that.text() + ""); - }); - - $(".cbi-section-table-titles, .cbi-section-table-descr, .cbi-section-descr").each(function () { - var that = $(this); - if (that.text().trim() == "") { - that.css("padding", "0px"); - } - }); - - $(".node-main-login > .main .cbi-value.cbi-value-last .cbi-input-text").focus(function () { - //$(".node-main-login > .main > .main-right > .login-bg").addClass("blur"); - }); - $(".node-main-login > .main .cbi-value.cbi-value-last .cbi-input-text").blur(function () { - //$(".node-main-login > .main > .main-right > .login-bg").removeClass("blur"); - }); - - $(".main-right").focus(); - $(".main-right").blur(); - $("input").attr("size", "0"); - -})(jQuery); diff --git a/luci-theme-argon/htdocs/luci-static/argon/less/cascade.less b/luci-theme-argon/htdocs/luci-static/argon/less/cascade.less deleted file mode 100644 index 2de44e54..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/less/cascade.less +++ /dev/null @@ -1,4133 +0,0 @@ -/** - * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template - * - * luci-theme-argon - * Copyright 2020 Jerryk - * - * Have a bug? Please create an issue here on GitHub! - * https://github.com/jerrykuku/luci-theme-argon/issues - * - * luci-theme-bootstrap: - * Copyright 2008 Steven Barth - * Copyright 2008 Jo-Philipp Wich - * Copyright 2012 David Menting - * - * MUI: - * https://github.com/muicss/mui - * - * luci-theme-material: - * https://github.com/LuttyYang/luci-theme-material/ - * - * Argon Theme - * https://demos.creative-tim.com/argon-dashboard/index.html - * - * Login background - * https://unsplash.com/ - * - * Licensed to the public under the Apache License 2.0 - */ - -/* - * Font generate by Icomoon - */ - -/* - * Common Styles - */ - -@import url("fonts.css?v=3"); -@import url("pure-min.css?v=1"); - -:root { - /** general **/ - --primary: #5e72e4; - --dark-primary: #483d8b; - --background-color: #f4f5f7; - --font-color: #525f7f; - /** login form **/ - --login-form-background-color: #ffffff; - --login-form-bg-color: rgba(244, 245, 247, 0.8); - --blur-radius: 10px; - --blur-opacity: 0.5; - - --white: #fff; - --darker: black; - --default: #525461; - - --warning: #fb6340; - --footer-color: #aaa; - --menubar-background: #fff; - --menubar-scrollbar-thumb: #eee; - --menubar-text-color: #4c4c4c; - --blue: #5e72e4; - --indigo: #5603ad; - --purple: #8965e0; - --pink: #f3a4b5; - --red: #f5365c; - --orange: #fb6340; - --yellow: #ffd600; - --green: #2dce89; - --teal: #11cdef; - --cyan: #2bffc6; - --white: #fff; - --gray: #8898aa; - --gray-dark: #32325d; - --light: #ced4da; - --lighter: #e9ecef; - --secondary: #f7fafc; - --success: #2dce89; - --info: #11cdef; - --danger: #f5365c; - --light: #adb5bd; - --dark: #212529; - --neutral: #fff; - --login-form-bg-color: rgba(244, 245, 247, 0.8); - - --blur-radius: 10px; - --blur-opacity: 0.5; - --blur-radius-dark: 10px; - --blur-opacity-dark: 0.5; - --font-family-sans-serif: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; - --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; - --font-family-normal: Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif; -} - -[data-theme="dark"] { - --primary: #483d8b; - --dark-primary: #483d8b; - --background-color: #1e1e1e; - --font-color: #cccccc; - --white: #fff; - --darker: black; - --default: #525461; - - --warning: #fb6340; - --footer-color: #aaa; - --menubar-background: #fff; - --menubar-scrollbar-thumb: #f6f9fc; - --menubar-text-color: #4c4c4c; - --blue: #5e72e4; - --indigo: #5603ad; - --purple: #8965e0; - --pink: #f3a4b5; - --red: #f5365c; - --orange: #fb6340; - --yellow: #ffd600; - --green: #2dce89; - --teal: #11cdef; - --cyan: #2bffc6; - --white: #fff; - --gray: #8898aa; - --gray-dark: #32325d; - --light: #ced4da; - --lighter: #e9ecef; - --secondary: #f7fafc; - --success: #2dce89; - --info: #11cdef; - --danger: #f5365c; - --light: #adb5bd; - --dark: #212529; - --neutral: #fff; - --login-form-bg-color: rgba(244, 245, 247, 0.8); - - --blur-radius: 10px; - --blur-opacity: 0.5; - --blur-radius-dark: 10px; - --blur-opacity-dark: 0.5; - --font-family-sans-serif: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; - --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; - --font-family-normal: Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif; -} - -html, -body { - margin: 0px; - padding: 0px; - height: 100%; - font-size: 16px; - font-family: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; - font-family: var(--font-family-sans-serif); -} - -html { - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} - -body { - font-size: 0.875rem; - background-color: #f4f5f7; - background-color: var(--background-color); - color: #525f7f; - color: var(--font-color); - -} - -* { - margin: 0; - padding: 0; - box-sizing: border-box; - -webkit-tap-highlight-color: transparent; - -} - -::selection { - background-color: #5e72e4; - background-color: var(--primary); - color: #ffffff; - color: var(--white); -} - -::-webkit-scrollbar { - width: 10px; - height: 10px; -} - -::-webkit-scrollbar, -::-webkit-scrollbar-corner { - background: transparent; -} - -::-webkit-scrollbar-thumb { - background: #9e9e9e; -} - -::-webkit-scrollbar-thumb:hover { - background: #757575; -} - -::-webkit-scrollbar-thumb:active { - background: #424242; -} - -a:link, -a:visited, -a:active { - color: var(--primary); - text-decoration: none; -} - -a:-webkit-any-link:not(li a, .main-left a, .brand, .pull-right a, .alert-message a, .login-container footer a, .cbi-button) { - color: -webkit-link; - cursor: pointer; - color: var(--primary); - text-shadow: 1px 1px 2px #ccc; -} - -a:hover { - text-decoration: underline; -} - -li { - list-style-type: none; -} - -@-webkit-keyframes sparkle { - from { - background-position: 0 0; - } - - to { - background-position: 0 -64px; - } -} - -@-moz-keyframes sparkle { - from { - background-position: 0 0; - } - - to { - background-position: 0 -64px; - } -} - -@-o-keyframes sparkle { - from { - background-position: 0 0; - } - - to { - background-position: 0 -64px; - } -} - -@keyframes sparkle { - from { - background-position: 0 0; - } - - to { - background-position: 0 -64px; - } -} - -/*********************** -* -* Login Page -* -***************************/ - -.login-page { - height: 100%; - - .video { - position: absolute; - width: 100%; - height: 100%; - display: flex; - align-items: center; - justify-content: center; - background-color: #000; - background-color: var(--darker); - overflow: hidden; - - video { - width: 100%; - height: 100%; - object-fit: cover; - } - } - - .volume-control { - position: fixed; - right: 1rem; - top: 1rem; - width: 1.5rem; - height: 1.5rem; - z-index: 5000; - cursor: pointer; - background-size: contain; - background-image: url(../img/volume_high.svg); - - &.mute { - background-image: url(../img/volume_off.svg); - } - } - - .main-bg { - position: fixed; - width: 100%; - height: 100%; - left: 0; - top: 0; - background-image: url(../img/blank.png); - background-repeat: no-repeat; - background-position: center; - background-size: cover; - transition: all 0.5s; - } - - .login-container { - height: 100%; - margin-left: 4.5rem; - position: absolute; - top: 0px; - display: flex; - flex-direction: column; - -webkit-box-pack: center; - justify-content: center; - align-items: flex-start; - min-height: 100%; - z-index: 2; - width: 420px; - box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 35px -5px; - margin-left: 5%; - background: transparent; - - .login-form { - display: flex; - flex-direction: column; - -webkit-box-align: center; - align-items: center; - position: absolute; - top: 0px; - width: 100%; - min-height: 100%; - max-width: 420px; - background-color: #fff; - background-color: var(--white); - overflow:hidden; - - .brand { - display: flex; - -webkit-box-align: center; - align-items: center; - margin: 50px auto 15px auto; - color: #525461; - color: var(--default); - - .icon { - width: 50px; - height: auto; - } - - &:hover { - text-decoration: none; - } - } - - .brand-text { - font-size: 1.8rem; - font-weight: 700; - letter-spacing: 1px; - margin-bottom: 85px; - font-family: "TypoGraphica"; - width: 420px; - padding: 0 0.5rem 0.1rem 0.5rem; - text-align: center; - word-break: break-word; - overflow: hidden; - text-overflow: ellipsis; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - } - - .form-login { - width: 420px; - padding: 20px 50px; - box-sizing: border-box; - - .errorbox { - text-align: center; - color: #fb6340; - color: var(--warning); - } - - .input-group { - margin-bottom: 1.25rem; - position: relative; - - &::before { - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - color: #525461; - color: var(--default); - font-size: 1.5rem; - position: absolute; - z-index: 100; - left: 10px; - top: 10px; - } - - .border { - position: absolute; - width: 100%; - height: 1px; - bottom: 0; - border-bottom: 1px #5e72e4 solid; - border-bottom: 1px var(--primary) solid; - transform: scaleX(0); - transition: transform 0.3s; - } - - input { - font-size: 1rem; - line-height: 1.5em; - display: block; - width: 100%; - padding: .5rem .75rem 0.5rem 3rem; - margin: 0.825rem 0; - box-sizing: border-box; - transition: all .3s cubic-bezier(.68, -.55, .265, 1.55); - color: #525461; - color: var(--default); - border: 0; - border-radius: 0; - border-bottom: 1px solid #fff; - border-bottom: 1px solid var(--white); - background-color: transparent; - background-clip: padding-box; - box-shadow: 0 3px 2px rgba(233, 236, 239, .05); - outline: none; - - &:focus+.border { - transform: scaleX(1); - } - } - - .cbi-input-password { - margin-bottom: 2rem; - position: relative; - } - } - - .user-icon::before { - content: "\e971"; - } - - .pass-icon::before { - content: "\e910"; - - } - } - - .cbi-button-apply { - width: 100% !important; - box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 50px 0px; - font-weight: 600; - font-size: 15px; - color: #fff; - color: var(--white); - text-align: center; - width: 100%; - cursor: pointer; - min-height: 50px; - background-color: #5e72e4 !important; - background-color: var(--primary) !important; - border-radius: 6px; - outline: none; - border-width: initial; - border-style: none; - border-color: initial; - border-image: initial; - padding: 10px 0px; - margin: 30px 0px 100px; - transition: all 0.3s !important; - letter-spacing: 0.8rem; - - &:hover, - :focus { - opacity: 0.9; - } - } - } - - footer { - box-sizing: border-box; - width: 100%; - text-align: center; - line-height: 1.6rem; - display: flex; - justify-content: space-evenly; - margin-top: auto; - padding: 0px 0px 30px; - z-index: 10; - color: #525461; - color: var(--default); - position: absolute; - bottom: 0; - - .ftc { - position: absolute; - bottom: 30px; - width: 100%; - } - - .luci-link { - display: block; - } - } - - footer { - color: var(--default); - - a { - color: var(--default); - } - } - } -} - -.pull-right { - float: right; -} - -.pull-left { - float: left; -} - -@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { - .login-page .login-container .login-form { - -webkit-backdrop-filter: blur(var(--blur-radius)); - backdrop-filter: blur(var(--blur-radius)); - background-color: rgba(244, 245, 247, var(--blur-opacity)); - - } -} - - - -/*********************** -* -* Header -* -***************************/ - - -header { - width: 100%; - padding: 0 0 0 0; - position: relative; - - .container { - margin-top: rem; - padding: 0.5rem 1rem 0 1rem; - - .pull-right>* { - position: relative; - top: 0.45rem; - cursor: pointer; - } - } - - &::after { - content: ""; - position: absolute; - height: 2rem; - width: 100%; - background-color: #5e72e4 !important; - background-color: var(--primary) !important; - } - - &.bg-primary { - background-color: #5e72e4 !important; - background-color: var(--primary) !important; - } - - .fill { - padding: 0.8rem 0; - border-bottom: 0px solid rgba(255, 255, 255, .08) !important; - - .container { - height: 2rem; - padding: 0 1.25rem; - - .brand { - font-size: 1.5rem; - color: #fff; - color: var(--white); - font-family: "TypoGraphica"; - text-decoration: none; - padding-left: 1rem; - cursor: default; - vertical-align: text-bottom; - display: none; - } - } - } -} - - - - - -/*********************** -* -* Footer -* -***************************/ - -footer { - - text-align: right; - padding: 1rem; - font-size: 0.8rem; - - a { - text-decoration: none; - } -} - - - -/*********************** -* -* Main -* -***************************/ - -@keyframes anim-rotate { - 0% { - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - } - - 100% { - -webkit-transform: rotate(360deg); - -ms-transform: rotate(360deg); - transform: rotate(360deg) - } -} - -.main { - top: 0rem; - bottom: 0rem; - position: relative; - height: 100%; - width: 100%; - height: calc(100% - 4rem); - - .main-left { - float: left; - width: 15%; - width: calc(0% + 15rem); - height: 100%; - background-color: #fff !important; - background-color: var(--menubar-background) !important; - box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 15px -5px; - overflow-x: auto; - position: fixed; - z-index: 100; - transition: width 0.2s ease-in-out; - overflow-y: scroll; - - &::-webkit-scrollbar { - width: 5px; - height: 1px; - } - - &::-webkit-scrollbar-thumb { - background-color: #f6f9fc; - background-color: var(--menubar-scrollbar-thumb); - - } - - &::-webkit-scrollbar-track { - background-color: transparent; - } - - .sidenav-header { - padding: 1.5rem; - text-align: center; - - .brand { - font-size: 1.8rem; - color: #5e72e4; - color: var(--primary); - font-family: "TypoGraphica", sans-serif; - text-decoration: none; - padding-left: 0; - cursor: default; - vertical-align: text-bottom; - white-space: nowrap; - } - } - - .nav { - margin-top: 0.5rem; - - li { - padding: 0rem; - cursor: pointer; - - a { - color: #525f7f; - color: var(--default); - display: block; - } - - &:nth-last-child(1) { - font-size: 1.2rem; - - .menu:after { - content: ""; - } - } - - &.slide { - padding: 0; - - ul { - display: none; - - li { - a { - position: relative; - - margin: 0.1rem 1rem 0.1rem 3rem; - padding: 0.5rem 0rem 0.5rem 0; - text-decoration: none; - white-space: nowrap; - color: #4c4c4c; - color: var(--menubar-text-color); - transition: all 0.2s; - font-size: 0.875rem; - - &::after { - content: ""; - position: absolute; - width: 00%; - height: 2px; - left: 0; - bottom: 0; - background-color: #5e72e4; - background-color: var(--primary); - transition: all 0.2s; - } - - &:hover { - &::after { - color: #000; - color: var(--darker); - width: 100%; - } - } - } - } - } - - .menu { - display: block; - margin: 0.1rem .5rem 0.1rem .5rem; - padding: .675rem 0 .675rem 2.5rem; - border-radius: .375rem; - text-decoration: none; - cursor: default; - font-size: 1rem; - transition: all 0.2s; - position: relative; - - &::before { - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - left: 0.8rem; - content: "\e915"; - color: #5e72e4; - color: var(--primary); - } - - &::after { - position: absolute; - right: 0.5rem; - top: 0.8rem; - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - content: '\e90f'; - transition: all .15s ease; - color: #ced4da; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - transition: all 0.3s; - } - - &:hover, - &.active { - cursor: pointer; - color: #fff; - background: #5e72e4; - background: var(--primary); - box-shadow: 0 0 1px #ccc; - - a { - color: #000; - - &::after { - color: #000; - width: 100%; - } - } - - &::before { - color: #fff !important; - } - - &::after { - color: #fff; - - } - } - - &.active { - &::after { - - transform: rotate(90deg); - } - } - - } - - .menu[data-title=Status]:before { - content: "\e906"; - color: #5e72e4; - color: var(--primary); - } - - .menu[data-title=System]:before { - content: "\e90a"; - color: #fb6340; - } - - .menu[data-title=Services]:before { - content: "\e909"; - color: #11cdef; - } - - .menu[data-title=NAS]:before { - content: "\e90c"; - color: #f3a4b5; - } - - .menu[data-title=VPN]:before { - content: "\e90b"; - color: #aaad03; - } - - .menu[data-title=Network]:before { - content: "\e908"; - color: #8965e0; - } - - .menu[data-title=Bandwidth_Monitor]:before { - content: "\e90d"; - color: #2dce89; - } - - .menu[data-title=Docker]:before { - content: "\e911"; - color: #6699ff; - } - - .menu[data-title=Statistics]:before { - content: "\e913"; - color: #5603ad; - } - - .menu[data-title=Control]:before { - content: "\e912"; - color: #5e72e4; - color: var(--primary); - } - - .menu[data-title=Asterisk]:before { - content: "\e914"; - color: #fb6340; - } - - .menu[data-title=Logout]:before { - content: "\e907"; - color: #adb5bd; - } - - .slide-menu { - li { - a { - position: relative; - - margin: 0.1rem 1rem 0.1rem 3rem; - padding: 0.5rem 0rem 0.5rem 0; - text-decoration: none; - white-space: nowrap; - color: rgba(0, 0, 0, .6); - transition: all 0.2s; - font-size: 0.875rem; - - &::after { - content: ""; - position: absolute; - width: 00%; - height: 2px; - left: 0; - bottom: 0; - background-color: #5e72e4; - background-color: var(--primary); - transition: all 0.2s; - box-shadow: 0 0 1px #ccc; - } - - &:hover::after { - color: #000; - width: 100%; - } - } - } - - .active { - a { - color: #000; - - &::after { - color: #000; - width: 100%; - } - } - } - } - - &:last-child>.menu::after { - content: ""; - } - } - } - } - } - - .main-right { - width: 85%; - width: calc(100% - 15rem); - float: right; - height: auto; - transition: width 0.3s ease-in-out; - - #maincontent { - - position: relative; - z-index: 50; - - .container { - margin: 0 1.25rem 1rem 1.25rem; - - p { - color: #32325d; - line-height: 1.5em; - } - } - - .container>div:nth-child(1).alert-message.warning>a { - font: inherit; - overflow: visible; - text-transform: none; - display: inline-block; - margin-bottom: 0; - font-weight: 400; - text-align: center; - white-space: nowrap; - vertical-align: middle; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - min-width: 6rem; - padding: 0.5rem 1rem; - font-size: 0.9rem; - line-height: 1.42857143; - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; - margin-top: 2rem; - text-decoration: inherit; - } - } - } - - .loading { - position: fixed; - width: 100%; - height: 100%; - z-index: 2000; - display: flex; - align-items: center; - justify-content: center; - background-color: #f8f9fe; - top: 0; - - span { - display: block; - text-align: center; - margin-top: 2rem; - color: #5e72e4; - color: var(--primary); - font-size: 2rem; - - .loading-img { - animation: anim-rotate 2s infinite linear; - margin-right: 0.4rem; - display: inline-block; - - &::before { - content: "\e603"; - } - } - - } - } -} - - -/* button style */ - -.cbi-button { - -webkit-appearance: none; - text-transform: uppercase; - height: auto; - font-size: 0.875rem; - color: rgba(0, 0, 0, 0.87); - background-color: #F0F0F0; - transition: all 0.2s ease-in-out; - display: inline-block; - padding: 0.75rem 0.8rem; - border: none; - border-radius: 0.2rem; - cursor: pointer; - -ms-touch-action: manipulation; - touch-action: manipulation; - background-image: none; - text-align: center; - vertical-align: middle; - white-space: nowrap; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - font-size: .875rem; - width: auto !important; - line-height: 1em; -} - -.cbi-button:hover, -.cbi-button:focus, -.cbi-button:active { - outline: 0; - text-decoration: none; -} - -.cbi-button:hover, -.cbi-button:focus { - box-shadow: 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); -} - -.cbi-button:active { - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.19), 0 5px 5px rgba(0, 0, 0, 0.23); -} - -.cbi-button:disabled { - cursor: not-allowed; - pointer-events: none; - opacity: 0.60; - box-shadow: none; -} - -.cbi-button-check { - margin-top: 0.25rem !important; -} - -form.inline+form.inline, -.cbi-button+.cbi-button { - margin-left: 0rem; -} - -.cbi-button-reset, -.cbi-input-remove { - - color: #fff !important; - background-color: #f0ad4e !important; - border-color: #eea236 !important; -} - -.cbi-input-find, -.cbi-input-save, -.cbi-button-add, -.cbi-button-save, -.cbi-button-find, -.cbi-input-reload, -.cbi-button-reload { - - color: #fff !important; - background-color: #337ab7 !important; - border-color: #2e6da4 !important; -} - -.cbi-value-field .cbi-input-apply, -.cbi-button-apply, -.cbi-button-edit { - - color: #fff !important; - background-color: #5e72e4 !important; - background-color: var(--primary) !important; - border-color: #5e72e4 !important; - border-color: var(--primary) !important; -} - -.node-services-vssr .ssr-button { - margin-left: 0.3rem; - -} - -.cbi-section-remove>.cbi-button, -.cbi-button-remove { - color: #fff !important; - background-color: #fb6340 !important; - border-color: #fb6340 !important; -} - -.cbi-value-field .cbi-button-add, -.cbi-value-field .cbi-button-remove, -.cbi-value-field .cbi-button-neutral { - - min-width: 2.5rem !important; -} - -/* Replace LuCI's default file and folder type icons */ -img[src="/luci-static/resources/cbi/reload.gif"] { - content: url("/luci-static/argon/img/reload.webp"); -} -img[src="/luci-static/resources/cbi/file.gif"] { - content: url("/luci-static/argon/img/file.webp"); -} -img[src="/luci-static/resources/cbi/add.gif"] { - content: url("/luci-static/argon/img/add.webp"); -} -img[src="/luci-static/resources/cbi/remove.gif"] { - content: url("/luci-static/argon/img/remove.webp"); -} -img[src="/luci-static/resources/cbi/edit.gif"] { - content: url("/luci-static/argon/img/edit.webp"); -} -img[src="/luci-static/resources/cbi/fieldadd.gif"] { - content: url("/luci-static/argon/img/fieldadd.webp"); -} -img[src="/luci-static/resources/cbi/link.gif"] { - content: url("/luci-static/argon/img/link.webp"); -} -img[src="/luci-static/resources/cbi/find.gif"] { - content: url("/luci-static/argon/img/find.webp"); -} -img[src="/luci-static/resources/cbi/folder.gif"] { - content: url("/luci-static/argon/img/folder.webp"); -} - -/* input */ -.cbi-value input[type="password"], -.cbi-value input[type="text"] { - min-width: 15rem; -} - -/* select */ -.cbi-value-field .cbi-dropdown { - min-width: 15rem; -} - -select { - min-width: 20rem; - appearance: none; - -webkit-appearance: none; - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTY1MzQ4MDM3OTIyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI1ODMiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4qIHsgdGV4dC1zaGFkb3c6IHRyYW5zcGFyZW50IDBweCAwcHggMHB4LCByZ2JhKDAsIDAsIDAsIDAuNSkgMHB4IDBweCAwcHggIWltcG9ydGFudDsgfQo8L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMjAuNDggMjQ1Ljc2aDk4My4wNEw1MTIgNzc4LjI0eiIgcC1pZD0iMjU4NCIgZmlsbD0iIzcwNzA3MCI+PC9wYXRoPjwvc3ZnPg==') !important; - background-position: 96%; - background-size: 8px; - background-repeat: no-repeat; - -} - -.th[data-type="button"], -.td[data-type="button"], -.th[data-type="fvalue"], -.td[data-type="fvalue"] { - flex: 1 1 2em; - text-align: center; -} - -/*textarea*/ -textarea { - border: 1px solid #dee2e6 !important; - outline: none; - min-height: 14rem !important; - padding: 0.8rem !important; - background-color: #fff; - font-family: var(--font-family-monospace) !important; - font-size: inherit; - color: black; - border-radius: 0.375rem !important; - vertical-align: middle; -} - -.cbi-value .cbi-value-field textarea { - margin: 0.25rem; -} - -/* change */ -.uci-change-list { - font-family: monospace; -} - -.uci-change-list ins, -.uci-change-legend-label ins { - text-decoration: none; - border: 1px solid #00FF00; - background-color: #CCFFCC; - display: block; - padding: 2px; -} - -.uci-change-list del, -.uci-change-legend-label del { - text-decoration: none; - border: 1px solid #FF0000; - background-color: #FFCCCC; - display: block; - font-style: normal; - padding: 2px; -} - -.uci-change-list var, -.uci-change-legend-label var { - text-decoration: none; - border: 1px solid #CCCCCC; - background-color: #EEEEEE; - display: block; - font-style: normal; - padding: 2px; - -} - -.uci-change-list var ins, -.uci-change-list var del { - border: none; - white-space: pre; - font-style: normal; - padding: 0px; -} - -.uci-change-list ins strong { - display: inline; -} - -.uci-change-legend { - padding: 5px; -} - -.uci-change-legend-label { - display: flex; - align-items: center; - width: auto; - float: left; - margin-right: 2rem; -} - -.uci-change-legend-label>ins, -.uci-change-legend-label>del, -.uci-change-legend-label>var { - float: left; - margin-right: 4px; - width: 10px; - height: 10px; - display: block; -} - -.uci-change-legend-label var ins, -.uci-change-legend-label var del { - line-height: 0; - border: none; -} - -.uci-change-list var, -.uci-change-list del, -.uci-change-list ins { - padding: 0.5rem; -} - -/* other fix */ -input[type="checkbox"] { - appearance: none !important; - -webkit-appearance: none !important; - border: 1px solid #dee2e6; - - width: 17px !important; - height: 17px !important; - padding: 0; - cursor: pointer; - transition: all 0.2s; - - margin: 0.5rem 0.25rem 0.7rem 0.25rem; - vertical-align: middle; -} - -input[type="checkbox"]:checked { - background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important; - background-color: #5e72e4; - background-color: var(--primary); - background-size: 70%; - background-repeat: no-repeat; - background-position: center; -} - -ul li .cbi-input-checkbox { - margin: 0.5rem 0.25rem 0.7rem 0.25rem !important; - vertical-align: middle !important; -} - -.cbi-input-radio { - appearance: none !important; - -webkit-appearance: none !important; - border: 1px solid #dee2e6; - - width: 16px !important; - height: 16px !important; - padding: 0; - border-radius: 50%; - cursor: pointer; - transition: all 0.2s; - margin: 0.25rem 0; -} - -.cbi-input-radio:checked { - background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'-4 -4 8 8\'%3e%3ccircle r=\'3\' fill=\'%23fff\'/%3e%3c/svg%3e') !important; - background-color: #5e72e4; - background-color: var(--primary); - background-size: 70%; - background-repeat: no-repeat; - background-position: center; -} - - -.toggle { - position: relative; - display: block; - width: 40px; - height: 20px; - cursor: pointer; - -webkit-tap-highlight-color: transparent; - transform: translate3d(0, 0, 0); - margin: 1em 0; -} - -.toggle:before { - content: ""; - position: relative; - top: 3px; - left: 3px; - width: 34px; - height: 14px; - display: block; - background: #9A9999; - border-radius: 8px; - transition: background 0.2s ease; -} - -.toggle span { - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 20px; - display: block; - background: white; - border-radius: 10px; - box-shadow: 0 3px 8px rgba(154, 153, 153, 0.5); - transition: all 0.2s ease; -} - -.toggle span:before { - content: ""; - position: absolute; - display: block; - margin: -18px; - width: 56px; - height: 56px; - background: rgba(79, 46, 220, 0.5); - border-radius: 50%; - transform: scale(0); - opacity: 1; - pointer-events: none; -} - -.cbi-input-checkbox:checked+.toggle:before { - background: #947ADA; -} - -.cbi-input-checkbox:checked+.toggle span { - background: #4F2EDC; - transform: translateX(20px); - transition: all 0.2s cubic-bezier(0.8, 0.4, 0.3, 1.25), background 0.15s ease; - box-shadow: 0 3px 8px rgba(79, 46, 220, 0.2); -} - -.cbi-input-checkbox:checked+.toggle span:before { - transform: scale(1); - opacity: 0; - transition: all 0.4s ease; -} - - -.cbi-value-field .cbi-input-checkbox, -.cbi-value-field .cbi-input-radio { - margin-top: 0.5rem; - height: 1rem; -} - -.td .cbi-input-checkbox, -.td .cbi-input-radio { - margin-top: 0; -} - -.cbi-value-field>input+.cbi-value-description { - padding: 0; -} - -.cbi-value-field>ul>li { - display: flex; -} - -.cbi-value-field>ul>li>label { - margin-top: 0rem; -} - -.cbi-value-field>ul>li .ifacebadge { - background-color: #eee; - margin-left: 0.4rem; - margin-top: -0.5rem; -} - -.cbi-section-table-row>.cbi-value-field .cbi-dropdown { - min-width: 7rem; -} - -.cbi-section-create { - margin: 0; - padding-left: 0.5rem; - align-items: center; - -} - -.cbi-section-create>* { - margin: 0.25rem; -} - -.cbi-section-remove { - padding: 0.5rem; -} - -div.cbi-value var, -td.cbi-value-field var, -.td.cbi-value-field var { - font-style: italic; - color: var(--primary); - text-shadow: 1px 1px 2px #ccc; -} - -small { - font-size: 90%; - white-space: normal; - line-height: 1.42857143; -} - -.cbi-button-up, -.cbi-button-down { - display: inline-block; - min-width: 0; - padding: 0.2rem 0.6rem; - font-size: 1.2rem; - color: #5e72e4 !important; - color: var(--primary) !important; -} - -.cbi-optionals { - padding: 1rem 1rem 0 1rem; - border-top: 1px solid #CCC; -} - -.cbi-dropdown-container { - position: relative; -} - -.cbi-tooltip-container { - cursor: help; -} - -.cbi-tooltip { - position: absolute; - z-index: 1000; - left: -1000px; - opacity: 0; - transition: opacity .25s ease-out; - pointer-events: none; - box-shadow: 0 0 2px #444; -} - -.cbi-tooltip-container:hover .cbi-tooltip { - left: auto; - opacity: 1; - transition: opacity .25s ease-in; -} - -.cbi-map-descr+fieldset { - margin-top: 1rem; -} - -.cbi-section>legend { - display: none !important; -} - -/* Define the error text border breathe display animation */ -@keyframes error-border-breathe { - 0%{ - border-color: #fb6340; - } - 50%{ - border-color: transparent; - } - 100%{ - border-color: #fb6340; - } -} - -/* Center display error text box */ -.cbi-section-error > ul{ - text-align: center; -} - -/* Add border for error text box, and border breathe display animation to make it more noticeable */ -.cbi-section-error > ul > li { - font-weight: 600; - max-width: 60%; - color: #fb6340; - line-height: 1rem; - display: inline-block; - border: 2px solid #fb6340; - border-radius: 0.3rem; - animation: error-border-breathe 1.5s ease-in-out infinite; - padding-left: 4px; - padding-right: 4px; - padding-top: 2px; - padding-bottom: 2px; -} - -.cbi-input-invalid, -.cbi-value-error input { - color: #fb6340; - border: 1px dashed #fb6340; -} - - -fieldset>fieldset { - margin: 0; - padding: 0; - border: none; - box-shadow: none; -} - - -.zonebadge .cbi-tooltip { - padding: .25rem; - background: inherit; - margin: -1.5rem 0 0 -.5rem; -} - -.zonebadge-empty { - background: repeating-linear-gradient(45deg, rgba(204, 204, 204, 0.5), rgba(204, 204, 204, 0.5) 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px); - color: #404040; -} - -.zone-forwards { - display: flex; - min-width: 10rem; -} - -.zone-forwards>* { - flex: 1 1 45%; -} - -.zone-forwards>span { - flex-basis: 10%; - text-align: center; - padding: 0 .25rem; -} - -.zone-forwards .zone-src, -.zone-forwards .zone-dest { - display: flex; - flex-direction: column; -} - -#diag-rc-output>pre { - background-color: #fff; - display: block; - padding: 8.5px; - margin: 0 0 18px; - line-height: 1.5rem; - white-space: pre-wrap; - word-wrap: break-word; - font-size: 1.4rem; - color: #404040; -} - -input[name="ping"], -input[name="traceroute"], -input[name="nslookup"] { - width: 80%; -} - - -/* fix progress bar */ -#swaptotal>div, -#swapfree>div, -#memfree>div, -#membuff>div, -#conns>div, -#memtotal>div { - width: 100% !important; - height: 1.6rem !important; - line-height: 1.6rem; - border-radius: .25rem; - overflow: hidden; -} - -#swaptotal>div>div, -#swapfree>div>div, -#memfree>div>div, -#membuff>div>div, -#conns>div>div, -#memtotal>div>div { - height: 100% !important; - background-color: #5e72e4 !important; - background-color: var(--primary) !important; - background-image: url(../img/trafficbar.png); - background-position: left top; - animation: sparkle 1000ms linear infinite; -} - -#swaptotal>div>div>div>small, -#swapfree>div>div>div>small, -#memfree>div>div>div>small, -#membuff>div>div>div>small, -#conns>div>div>div>small, -#memtotal>div>div>div>small { - text-shadow: 1px 1px 2px #ccc; -} - -/* fix multiple table */ - -table table, -.table .table { - border: none; -} - -.cbi-value-field table, -.cbi-value-field .table { - border: none; -} - -td>table>tbody>tr>td, -.td>.table>.tbody>.tr>.td { - border: none; -} - -.cbi-value-field>table>tbody>tr>td, -.cbi-value-field>.table>.tbody>.tr>.td { - border: none; -} - -/* button style */ - - - -.cbi-page-actions .cbi-button-apply, -.cbi-section-actions .cbi-button-edit, -.cbi-button-edit.important, -.cbi-button-apply.important, -.cbi-button-reload.important, -.cbi-button-action.important { - color: #fff; - background-color: #337ab7; -} - -.cbi-page-actions .cbi-button-save, -.cbi-button-add.important, -.cbi-button-save.important, -.cbi-button-positive.important { - color: #fff; - background-color: #5bc0de; -} - -.cbi-button-remove.important, -.cbi-button-reset.important, -.cbi-button-negative.important { - color: #fff; - background-color: #d9534f; -} - - - -.cbi-button-find, -.cbi-button-link, -.cbi-button-neutral { - color: #fff !important; - border: 1px solid #f0ad4e !important; - background-color: #f0ad4e !important; -} - -.cbi-button-edit, -.cbi-button-apply, -.cbi-button-reload, -.cbi-button-action { - color: #2e6da4; - border: 1px solid #2e6da4; - background-color: transparent; -} - -.cbi-page-actions .cbi-button-apply+.cbi-button-save, -.cbi-button-add, -.cbi-button-save, -.cbi-button-positive { - color: #46b8da; - border: 1px solid #46b8da; - background-color: transparent; -} - -.cbi-section-remove>.cbi-button, -.cbi-button-remove, -.cbi-button-reset, -.cbi-button-negative { - color: #fff !important; - border: 1px solid #d43f3a !important; - background-color: #fb6340 !important; -} - -.cbi-page-actions .cbi-button-link:first-child { - float: left; -} - -.a-to-btn { - text-decoration: none; -} - -/* file selector button */ -::file-selector-button { - color: #fff; - border-radius: .25rem; - border: 1px solid #2e6da4; - padding: .4rem .5rem; - background-color: #337ab7; - box-sizing: border-box; - cursor: pointer; - transition: all 0.2s ease-in-out; -} -::file-selector-button:hover, -::file-selector-button:focus, -::file-selector-button:active { - outline: 0; - text-decoration: none; -} -::file-selector-button:hover, -::file-selector-button:focus { - box-shadow: 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); -} -::file-selector-button:active { - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.19), 0 5px 5px rgba(0, 0, 0, 0.23); -} - -/* table */ - - -.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - width: auto !important; - background-color: #e9ecef; - background-color: var(--lighter); -} - -.td.cbi-section-actions { - text-align: right; - vertical-align: middle; -} - -.td.cbi-section-actions>* { - display: flex; -} - -.td.cbi-section-actions>*>*, -.td.cbi-section-actions>*>form>* { - flex: 1 1 4em; - margin: 0 1px; -} - -.td.cbi-section-actions>*>form { - display: inline-flex; - margin: 0; -} - -/* desc */ - - - - - - -/* luci */ - -.hidden { - display: none -} - -.left, -.left::before { - text-align: left !important; -} - -.right, -.right::before { - text-align: right !important; -} - -.center, -.center::before { - text-align: center !important; -} - -.top { - align-self: flex-start !important; - vertical-align: top !important; -} - -.bottom { - align-self: flex-end !important; - vertical-align: bottom !important; -} - -.inline { - display: inline; -} - -.cbi-page-actions { - border-top: 0px solid #eee; - padding-top: 0rem; - text-align: right; -} - - - - - -#xhr_poll_status { - cursor: pointer; - display: inline-block; - -} - -#xhr_poll_status>.label.success { - background-color: #fff !important; - color: #32325d !important; -} - -.label { - padding: 0.3rem 0.8rem; - font-size: 0.8rem; - font-weight: bold; - color: #ffffff !important; - text-transform: uppercase; - white-space: nowrap; - background-color: #bfbfbf; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - text-shadow: none; - text-decoration: none; -} - -.notice { - background-color: #5BC0DE; -} - -.showSide { - display: none; - color: #fff; - font-size: 1.4rem; -} - -.darkMask { - width: 100%; - height: 100%; - position: fixed; - background-color: rgba(0, 0, 0, 0.56); - z-index: 99; - left: 0; - top: 0; - display: none; -} - - -#cbi-firewall-redirect table *, -#cbi-network-switch_vlan table *, -#cbi-firewall-zone table * { - font-size: small; -} - -#cbi-firewall-redirect table input[type="text"], -#cbi-network-switch_vlan table input[type="text"], -#cbi-firewall-zone table input[type="text"] { - width: 5rem; -} - -#cbi-firewall-redirect table select, -#cbi-network-switch_vlan table select, -#cbi-firewall-zone table select { - min-width: 3.5rem; -} - -#cbi-network-switch_vlan .th, -#cbi-network-switch_vlan .td { - flex-basis: 12%; -} - -/* Fix background color of table-titles */ -.cbi-section-node>.cbi-section-table>tbody>.cbi-section-table-titles th { - background-color: var(--lighter); - border: none; -} - -/* Fix background color of table-descr */ -.cbi-section-node>.cbi-section-table>tbody>.cbi-section-table-descr th { - border: none; -} - -/* Fix background color not change when the H tag is in the table rowstyle-1 */ -.cbi-section-node>.cbi-section-table>tbody>.cbi-rowstyle-1 th { - background-color: #fff; - border-top: 1px solid #ddd; - border-bottom: none; -} - -/* Fix background color not change when the H tag is in the table rowstyle-2 */ -.cbi-section-node>.cbi-section-table>tbody>.cbi-rowstyle-2 th { - background-color: #f9f9f9; - border-top: 1px solid #ddd; - border-bottom: none; -} - -/* Change the color of the H label in the table to make it more visible */ -th h1, td h1, -th h2, td h2, -th h3, td h3, -th h4, td h4, -th h5, td h5, -th h6, td h6 { - background: var(--lighter); -} - -/* language fix */ -body.lang_pl.node-main-login .cbi-value-title { - width: 12rem; -} - -/* applyreboot fix */ - -#applyreboot-container { - margin: 2rem; -} - -#applyreboot-section { - margin: 2rem; - line-height: 300%; -} - - - -.table { - display: table; - position: relative; - color: #525f7f; - border-collapse: collapse; -} - -.tr { - display: table-row; - border-bottom: 1px solid rgba(0, 0, 0, .05); -} - -.thead { - display: table-header-group; -} - -.tbody { - display: table-row-group; -} - -.tfoot { - display: table-footer-group; -} - -.td, -.th { - vertical-align: middle; - text-align: center; - display: table-cell; - padding: 1rem; - white-space: nowrap; -} - - - -.th { - font-weight: bold; -} - -.tr.placeholder { - height: 4em; -} - -.tr.placeholder>.td { - position: absolute; - left: 0; - right: 0; - bottom: 0; - text-align: center; - background: inherit; -} - -.table[width="33%"], -.th[width="33%"], -.td[width="33%"] { - width: 33%; - padding-left: 1.5rem; - padding-right: 1.5rem -} - -.table[width="100%"], -.th[width="100%"], -.td[width="100%"] { - width: 100%; -} - -.table-titles .th { - padding: 0.75rem 1rem; - color: #8898aa; - background-color: #f6f9fc; -} - -.col-1 { - flex: 1 1 30px !important; - -webkit-flex: 1 1 30px !important; -} - -.col-2 { - flex: 2 2 60px !important; - -webkit-flex: 2 2 60px !important; -} - -.col-3 { - flex: 3 3 90px !important; - -webkit-flex: 3 3 90px !important; -} - -.col-4 { - flex: 4 4 120px !important; - -webkit-flex: 4 4 120px !important; -} - -.col-5 { - flex: 5 5 150px !important; - -webkit-flex: 5 5 150px !important; -} - -.col-6 { - flex: 6 6 180px !important; - -webkit-flex: 6 6 180px !important; -} - -.col-7 { - flex: 7 7 210px !important; - -webkit-flex: 7 7 210px !important; -} - -.col-8 { - flex: 8 8 240px !important; - -webkit-flex: 8 8 240px !important; -} - -.col-9 { - flex: 9 9 270px !important; - -webkit-flex: 9 9 270px !important; -} - -.col-10 { - flex: 10 10 300px !important; - -webkit-flex: 10 10 300px !important; - white-space: inherit; -} - - - -.cbi-rowstyle-2 .cbi-button-up, -.cbi-rowstyle-2 .cbi-button-down { - background-color: var(--lighter); - -} - -.cbi-button-up, -.cbi-button-down, -.cbi-value-helpicon, -.showSide, -.main>.loading>span { - font-family: 'argon' !important; - font-style: normal !important; - font-weight: normal !important; - font-variant: normal !important; - text-transform: none !important; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.cbi-button-up { - transform: rotate(180deg); -} - - -select { - padding: 0.36rem 0.8rem; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; -} - -select, -input { - font-size: .875rem; - transition: all .15s ease-in-out; - line-height: 1.5; - - padding: .625rem .75rem; - color: #8898aa; - border: 1px solid #dee2e6; - border-radius: .25rem; - background-color: #fff; - background-clip: padding-box; - box-shadow: 0 3px 2px rgba(233, 236, 239, .05); - outline: none; - transition: box-shadow .15s ease; - margin: 0.25rem; -} - -select:not([multiple="multiple"]):hover, -input:hover, -input:focus { - border-color: #5e72e4; - border-color: var(--primary); - outline: 0; - background-color: #fff; - box-shadow: 0 3px 9px rgba(50, 50, 9, 0), 3px 4px 8px rgba(94, 114, 228, .1); -} - - - -select[multiple="multiple"] { - height: auto; -} - -code { - color: #0099CC; -} - -abbr { - color: #005470; - text-decoration: underline; - cursor: help; -} - - -hr { - margin: 1rem 0; - border-color: #EEE; - opacity: 0.1; -} - - - - - -.kpi { - font-size: 0.875rem; -} - - -fieldset[id^="cbi-apply-"] { - position: fixed; - z-index: 200; - width: 20rem; - margin-left: -10rem; - margin-top: -5rem; - height: 10rem; - left: 50%; - top: 50%; - padding: 1rem; - box-sizing: border-box; - font-size: 1.2rem; - text-align: center; - box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 15px -5px; - transition: all 0.3s; -} - -[id^="cbi-apply-"]>.panel-title { - border-bottom: none; - -} - -[id^="cbi-apply-"]>[id^="cbi-apply-"] { - position: initial; - width: auto; - height: auto; - font-size: 0.875rem; - margin-left: 0rem; - margin-top: .8rem; - display: block; -} - -.cbi-section>h3:first-child, -.panel-title { - font-size: 1.125rem; - width: 100%; - display: block; - margin: 0; - padding: 0.8755rem 1.5rem; - border-bottom: 1px solid #ddd; - letter-spacing: 0.1rem; - color: #32325d; - font-weight: normal; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -table { - border-spacing: 0; - border-collapse: collapse; -} - -table, -.table { - width: 100%; -} - -table>tbody>tr>td, -table>tbody>tr>th, -table>tfoot>tr>td, -table>tfoot>tr>th, -table>thead>tr>td, -table>thead>tr>th, -.table>.tbody>.tr>.td, -.table>.tbody>.tr>.th, -.table>.tfoot>.tr>.td, -.table>.tfoot>.tr>.th, -.table>.thead>.tr>.td, -.table>.thead>.tr>.th { - padding: .5rem; - border-top: 1px solid #ddd; - -} - -.cbi-section-table-cell { - white-space: nowrap; - align-self: flex-end; - flex: 1 1 auto; -} - -.cbi-section-table { - font-size: 0.875rem; - border: none; - margin: 0 !important; -} - -.status-bar { - font-size: 0.875rem; -} - -.cbi-section-table-row:last-child { - margin-bottom: 0; -} - -.cbi-section-table-row>.cbi-value-field .cbi-dropdown, -.cbi-section-table-row>.cbi-value-field .cbi-input-select, -.cbi-section-table-row>.cbi-value-field .cbi-input-text, -.cbi-section-table-row>.cbi-value-field .cbi-input-password{ - width:100% -} - -.cbi-section-table-row>.cbi-value-field .cbi-input-text, -.cbi-section-table-row>.cbi-value-field .cbi-input-password{ - min-width:100px -} - -#lease6_status_table > tbody > .cbi-section-table-row.cbi-rowstyle-1 div, -#lease6_status_table > tbody > .cbi-section-table-row.cbi-rowstyle-2 div{ - min-width:100%; -} - -.cbi-section-table-row>.cbi-value-field [data-dynlist]>input, -.cbi-section-table-row>.cbi-value-field input.cbi-input-password { - width: calc(100% - 1.5rem); -} - -div>table>tbody>tr:nth-of-type(2n), -div>.table>.tbody>.tr:nth-of-type(2n) { - background-color: #f9f9f9; -} - -div>table>tbody>tr:nth-of-type(2n), -div>.table>.tbody>.tr:nth-of-type(2n) { - background-color: #f9f9f9; -} - -.danger { - background-color: #f5365c !important; - background-color: var(--danger) !important; - color: #fff !important; -} - -/* Define the warning background-color breathe display animation */ -@keyframes warning-background-color-breathe { - 0%{ - color: #fff; - background-color: #fb6340; - } - 50%{ - color: #32325d; - background-color: #fff; - } - 100%{ - color: #fff; - background-color: #fb6340; - } -} -.warning, -.warning * { - background-color: #fb6340; - background-color: var(--warning); - color: #fff; - animation: warning-background-color-breathe 1.5s ease-in-out infinite !important; -} - -.notice { - background-color: #5e72e4 !important; - background-color: var(--primary) !important; - color: #fff !important; -} - -.success { - background-color: #2dce89 !important; - background-color: var(--success) !important; - color: #fff !important; -} - -.errorbox, -.alert-message { - margin: 0 0 0 0; - padding: 1rem 2rem; - border: 0; - font-weight: normal; - font-style: normal; - line-height: 1.5em; - font-family: inherit; - min-width: inherit; - overflow: auto; - border-radius: 0.3rem; - background-color: #FFF; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); -} - -.errorbox { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.alert-message.warning{ - margin-bottom: 1rem; -} -.error { - color: red; -} - - - -h1 { - font-size: 2rem; - padding-bottom: 10px; - border-bottom: 1px solid #eee; -} - - - -h2 { - margin: 0 0 1rem 0; - font-size: 1.25rem; - letter-spacing: 0.1rem; - padding: 1rem 1.5rem; - color: #32325d; - border-radius: .375rem; - background: #fff; - box-shadow: 0 4px 8px rgba(0, 0, 0, .03); -} - - -#cbi-dropbear h2, -#cbi-dropbear .cbi-map-descr, -#cbi-dropbear .cbi-map-descr abbr, -#cbi-rc h2, -#cbi-rc .cbi-map-descr, -#cbi-distfeedconf h2, -#cbi-distfeedconf .cbi-map-descr, -#cbi-customfeedconf h2, -#cbi-customfeedconf .cbi-map-descr, -#cbi-download h2, -#cbi-filelist h2 { - color: #32325d !important; -} - - -h3 { - font-size: 1.15rem; - width: 100%; - display: block; - margin: 1rem 0; - letter-spacing: 0.1rem; - color: #32325d; - font-weight: bold; - letter-spacing: 0.1rem; - padding: 1rem 1.5rem; - border-radius: 0.375rem; - background: var(--lighter); - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); -} - - - -fieldset { - margin: 1.25rem 0 0 0; - padding: 0; - font-weight: normal; - font-style: normal; - line-height: 1; - font-family: inherit; - - min-width: inherit; - overflow-x: auto; - overflow-y: hidden; - - border: 1px solid rgba(0, 0, 0, .05); - border-radius: .375rem; - background-color: #fff; - box-shadow: 0 0 2rem 0 rgba(136, 152, 170, .15); - - -webkit-overflow-scrolling: touch; -} - - - -fieldset>legend { - display: none !important; -} - -fieldset>fieldset { - margin: 0; - padding: 0; - border: none; - box-shadow: none; -} - -fieldset.cbi-section p { - padding: 1em; -} - -.panel-title { - width: 100%; - display: block; - margin-bottom: 0; - padding: 0.8755rem 1.5rem; - background-color: #fff; - border-bottom: 1px solid #ddd; - margin-bottom: 0rem; - letter-spacing: 0.1rem; - color: #32325d; - font-weight: 600; - position: sticky; - left: 0; -} - -table { - border-spacing: 0; - border-collapse: collapse; - width: 100%; -} - -table>tbody>tr>td, -table>tfoot>tr>td, -table>thead>tr>td { - font-size: .875rem; - color: #525f7f; - line-height: 1.4em; - vertical-align: middle !important; - padding: 0.8rem 1.5rem; - border-top: 1px solid #ddd; - -} - -table>tbody>tr>th, -table>tfoot>tr>th, -table>thead>tr>th { - - padding-right: 1.5rem; - padding-left: 1.5rem; - color: #8898aa; - background-color: #f6f9fc; - font-size: .65rem; - padding-top: .75rem; - padding-bottom: .75rem; - letter-spacing: 1px; - border-bottom: 1px solid #e9ecef; -} - -table>tbody>tr:first-child>td, -table>tfoot>tr:first-child>td, -table>thead>tr:first-child>td { - border-top: 0px; -} - -.cbi-section-table-cell { - text-align: center; -} - -.cbi-section-table-row { - text-align: center; -} - -fieldset>table>tbody>tr:nth-of-type(2n) { - background-color: #f9f9f9; -} - - - - - -/* fix multiple table */ - -table table { - border: none; -} - -.cbi-value-field table { - border: none; -} - -td>table>tbody>tr>td { - border: none; -} - -.cbi-value-field>table>tbody>tr>td { - border: none; -} - - - - - - -/* table */ - -.tabs { - margin: 0 0 1rem 0; - padding: 0 1rem; - background-color: #FFFFFF; - border-radius: 0.375rem; - box-shadow: 0 4px 8px rgba(0, 0, 0, .03); - white-space: nowrap; - overflow-x: auto; - - &::-webkit-scrollbar { - width: 5px; - height: 5px; - } - - &::-webkit-scrollbar-thumb { - background-color: #9e9e9e; - } - - &::-webkit-scrollbar-thumb:hover { - background-color: #757575; - } - - &::-webkit-scrollbar-thumb:active { - background-color: #424242; - } - - &::-webkit-scrollbar-track { - background-color: transparent; - } - - li[class~="active"], - li:hover { - cursor: pointer; - border-bottom: 0.18751rem solid #5e72e4; - border-bottom: 0.18751rem solid var(--primary); - color: #5e72e4; - color: var(--primary); - background-color: var(--light-subtabs-background); - margin-bottom: 0; - border-radius: 0; - - a { - color: #5e72e4; - color: var(--primary); - } - } - - li { - font-size: 0.875rem; - display: inline-block; - padding: 0.875rem 0rem; - border-bottom: 0.18751rem solid rgba(0, 0, 0, 0); - - a { - text-decoration: none; - color: #404040; - padding: 0.5rem 0.8rem; - } - - &:hover { - border-bottom: 0.18751rem solid #5e72e4; - border-bottom: 0.18751rem solid var(--primary); - } - } -} - -.cbi-section::-webkit-scrollbar, -.cbi-section > *::-webkit-scrollbar, -textarea::-webkit-scrollbar, -div::-webkit-scrollbar { - width: 5px; - height: 5px; -} - -.cbi-tabmenu { - color: white; - padding: 0.5rem 0.5rem 0 0.5rem; - white-space: nowrap; - overflow-x: auto; - border-bottom: 1px solid #ddd !important; - - &::-webkit-scrollbar { - width: 1px; - height: 5px; - } - - &::-webkit-scrollbar-thumb { - background-color: #9e9e9e; - } - - &::-webkit-scrollbar-thumb:hover { - background-color: #757575; - } - - &::-webkit-scrollbar-thumb:active { - background-color: t#424242; - } - - &::-webkit-scrollbar-track { - background-color: transparent; - } - - li { - background: #e3e3e3; - display: inline-block; - font-size: 0.875rem; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; - padding: 0.5rem 0rem; - border-bottom: 0.18751rem solid rgba(0, 0, 0, 0); - - a { - text-decoration: none; - color: #404040; - padding: 0.5rem 0.8rem; - } - - &:hover { - cursor: pointer; - border-bottom: 0.18751rem solid #5e72e4; - border-bottom: 0.18751rem solid var(--primary); - color: #5e72e4; - color: var(--primary); - background-color: var(--light-subtabs-background); - margin-bottom: 0; - - a { - color: #525f7f; - } - } - } - - li[class~="cbi-tab"] { - border-bottom: 0.18751rem solid #5e72e4; - border-bottom: 0.18751rem solid var(--primary); - color: var(--primary); - background-color: var(--light-subtabs-background); - margin-bottom: 0; - - a { - color: #5e72e4; - color: var(--primary); - } - } -} - -.cbi-tab-descr { - margin: 1rem 1.5rem; - color: #32325d; - font-size: small; - line-height: 1.5em; -} - -.cbi-dropdown { - display: inline-flex; - cursor: pointer; - position: relative; - padding: 0; - height: auto; -} - -.cbi-dropdown:focus { - outline: 2px solid #4b6e9b; -} - -.cbi-dropdown>ul { - margin: 0 !important; - padding: 0; - list-style: none; - overflow-x: hidden; - overflow-y: auto; - display: flex; - width: 100%; -} - -.cbi-dropdown>ul.preview { - display: none; -} - -.cbi-dropdown>.open { - border: 0px outset #eee; - flex-basis: 15px; - background: #fff; -} - -.cbi-dropdown>.open, -.cbi-dropdown>.more { - flex-grow: 0; - flex-shrink: 0; - display: flex; - flex-direction: column; - justify-content: center; - text-align: center; - line-height: 2em; - padding: 0 .25em; -} - -.cbi-dropdown>.more, -.cbi-dropdown>ul>li[placeholder] { - color: #777; - font-weight: bold; - text-shadow: 1px 1px 0px #fff; - display: none; -} - -.cbi-dropdown>ul>li { - display: none; - padding: .25em; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - flex-shrink: 1; - flex-grow: 1; - align-items: center; - align-self: center; - min-height: 20px; -} - -.cbi-dropdown>ul>li .hide-open { - display: initial; -} - -.cbi-dropdown>ul>li .hide-close { - display: none; -} - -.cbi-dropdown>ul>li[display]:not([display="0"]) { - border-left: 1px solid #ccc; -} - -.cbi-dropdown[empty]>ul { - max-width: 1px; -} - -.cbi-dropdown>ul>li>form { - display: none; - margin: 0; - padding: 0; - pointer-events: none; -} - -.cbi-dropdown>ul>li img { - vertical-align: middle; - margin-right: .25em; -} - -.cbi-dropdown>ul>li>form>input[type="checkbox"] { - margin: 0; - height: auto; -} - -.cbi-dropdown>ul>li input[type="text"] { - height: 20px; -} - -.cbi-dropdown[open] { - position: relative; - border-color: #5e72e4; - border-color: var(--primary); -} - -.cbi-dropdown[open]>ul.dropdown { - display: block; - background: #fff; - border-color: #5e72e4; - border-color: var(--primary); - position: absolute; - z-index: 1000; - max-width: none; - min-width: 100%; - width: auto; - box-shadow: 0 1px 3px rgba(50, 50, 93, .15), 0 1px 0 rgba(0, 0, 0, .05); -} - -.cbi-dropdown>ul>li[display], -.cbi-dropdown[open]>ul.preview, -.cbi-dropdown[open]>ul.dropdown>li, -.cbi-dropdown[multiple]>ul>li>label, -.cbi-dropdown[multiple][open]>ul.dropdown>li, -.cbi-dropdown[multiple][more]>.more, -.cbi-dropdown[multiple][empty]>.more { - flex-grow: 1; - display: flex; - align-items: center; -} - -.cbi-dropdown[empty]>ul>li, -.cbi-dropdown[optional][open]>ul.dropdown>li[placeholder], -.cbi-dropdown[multiple][open]>ul.dropdown>li>form { - display: block; -} - -.cbi-dropdown[open]>ul.dropdown>li .hide-open { - display: none; -} - -.cbi-dropdown[open]>ul.dropdown>li .hide-close { - display: initial; -} - -.cbi-dropdown[open]>ul.dropdown>li { - border-bottom: 1px solid #ccc; -} - -.cbi-dropdown[open]>ul.dropdown>li[selected] { - background: #b0d0f0; -} - -.cbi-dropdown[open]>ul.dropdown>li.focus { - background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%); -} - -.cbi-dropdown[open]>ul.dropdown>li:last-child { - margin-bottom: 0; - border-bottom: none; -} - -.cbi-dropdown[disabled] { - pointer-events: none; - opacity: .6; -} - -.cbi-dropdown .zonebadge { - width: 100%; -} - -.cbi-dropdown[open] .zonebadge { - width: 100%; -} - -.cbi-dropdown { - font-size: .875rem; - transition: all .15s ease-in-out; - line-height: 1.5; - height: calc(2.75rem + 2px); - padding: 0m; - color: #8898aa; - border: 1px solid #dee2e6; - border-radius: .25rem; - background-color: #fff; - background-clip: padding-box; - box-shadow: 0 3px 2px rgba(233, 236, 239, .05); - margin: 0.25rem; -} - -.cbi-value-field .cbi-dropdown { - min-width: 20rem; -} - -.cbi-value-field .cbi-dropdown .zonebadge>.ifacebadge { - padding: 0rem 1rem; - margin: 0rem 0.3rem; - border: 1px solid #6C6C6C; -} - - - -select[multiple="multiple"] { - height: auto; -} - -.cbi-dropdown>ul { - margin: 0 !important; - padding: 0; - list-style: none; - overflow-x: hidden; - overflow-y: hidden; - display: flex; - width: 100%; -} - - - -.cbi-section>legend { - display: none !important; -} - - - - - -.cbi-section-remove:nth-of-type(2n), -.cbi-section-node:nth-of-type(2n) { - background-color: #f9f9f9; -} - -.cbi-section-node-tabbed { - padding: 0; - margin-top: 0; - -} - -.cbi-section-node { - background: #fff; - border: 0; - border-radius: .375rem; - margin-bottom: 0px; - box-shadow: 0 0 0rem 0 rgba(136, 152, 170, .15); - overflow-x: auto; - overflow-y: hidden; - padding: 0rem 0; -} - -#cbi-network-lan.cbi-section-node { - overflow-x: visible; - overflow-y: visible; -} - - - -.cbi-section-node .cbi-value { - padding: 0.5rem 1rem 0.5rem 1rem !important; -} - - -.cbi-tabcontainer>.cbi-value:nth-of-type(2n), -.cbi-tabcontainer>.cbi-value:nth-of-type(2n)>textarea { - background-color: #f9f9f9; -} - -.cbi-value-field, -.cbi-value-description { - display: table-cell; - line-height: 1.6; - font-size: 0.875rem; -} - -/* Fix text position of the luci-app-filebrowser running state */ -#cbi-filebrowser>.cbi-section>.cbi-section>.cbi-value>.cbi-value-field, -/* Fix text position of the luci-apps running state of the [Control] type */ -form>.cbi-map>.cbi-section>.cbi-section-node>.cbi-value>.cbi-value-field font { - word-wrap: break-word; - font-size: 0.875rem; - line-height: 1.6; - padding: 0.7rem; - padding-left: 0; - text-align: right; - display: table-cell; -} - - -.cbi-value-helpicon>img { - display: none; -} - -.cbi-value-helpicon:before { - content: "\f059"; -} - -.cbi-value-description { - color: #8d8d8d; - opacity: 0.8; - font-size: small; - padding: 0.5rem; -} - -.cbi-value-title { - word-wrap: break-word; - font-size: 0.875rem; - line-height: 1.6; - color: #525f7f; - padding: .7rem; - padding-left: 0; - width: 23rem; - text-align: right; - display: table-cell; -} - -.cbi-value { - padding: 0.3rem 1rem; - display: inline-block; - width: 100%; -} - -.cbi-section-table-descr>.cbi-section-table-cell, -.cbi-section-table-titles>.cbi-section-table-cell { - border: none; -} - -.cbi-rowstyle-1 { - background-color: #fff; -} - -.cbi-rowstyle-2 { - background-color: #fefefe; -} - - - -.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - width: auto !important; -} - -/* desc */ -.cbi-section-descr { - padding: 1rem 1.5rem; - font-size: 0.7rem; - font-weight: 600; - line-height: 1.5em; - color: #525f7f; -} - -.cbi-map-descr { - margin: 0rem 1.5rem 1rem 1.5rem; - color: #32325d; - font-size: small; - line-height: 1.5em; -} - - - - -/* input */ -.cbi-value input[type="password"], -.cbi-value input[type="text"] { - min-width: 20rem; -} - -input[type="checkbox"] { - height: auto; -} - -/* select */ - - -.cbi-value-field .ifacebadge { - display: inline-flex; - border-bottom: 0px solid #CCCCCC; - padding: 0.5rem 1rem; - - box-shadow: none; -} - -td>.ifacebadge { - background-color: #F0F0F0; - font-size: 0.9rem; -} - -.ifacebadge>img { - float: right; - margin: 0 0.3rem; -} - -#syslog { - width: 100%; - min-height: 15rem; - padding: 1rem; - line-height: 1.4em; - color: #1e1e1e; - border-radius: 0; - background-color: #fff; - border: none; - outline: none; -} - - -.ifacebadge { - display: inline-flex; - border-bottom: 0px solid #CCCCCC; - padding: 0.5rem 1rem; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - background: #fff; -} - -td>.ifacebadge, -.td>.ifacebadge { - background-color: #e9ecef; - font-size: 0.9rem; - border-radius: 0.2rem; -} - -.ifacebadge>em, -.ifacebadge>img { - display: inline-block; - margin: 0 0.3rem; - align-self: center; -} - - - -.ifacebadge span { - line-height: 1.6em; -} - -.network-status-table { - display: flex; - flex-wrap: wrap; -} - -.network-status-table .ifacebox { - margin: 1rem; - flex-grow: 1; -} - -.network-status-table .ifacebox-body { - display: flex; - flex-direction: column; - height: 100%; -} - -.network-status-table .ifacebox-body>span { - flex: 10 10 auto; - height: 100%; - line-height: 1.7em; - padding-left: 2rem; - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.network-status-table .ifacebox-body>div { - display: flex; - flex-wrap: wrap; -} - -.network-status-table .ifacebox-body .ifacebadge { - flex: 1 1 auto; - margin: 0; - padding: .5em; - min-width: 220px; - background-color: #fff; - align-items: center; -} - -.ifacebox { - - border: 1px solid #ccc; - border-radius: 0.375rem; - background-color: #f9f9f9; - display: inline-flex; - flex-direction: column; - line-height: 1.2em; - min-width: 100px; - overflow: hidden; -} - -.ifacebox-head { - padding: 1rem; - background: #eee; -} - -.ifacebox-head.active { - background: #5e72e4; - background: var(--primary); - color: #fff; -} - -.ifacebox-body { - padding: 0.5em; -} - -.cbi-image-button { - margin-left: 0.5rem; -} - -#iwsvg, -#iwsvg2, -#bwsvg { - border: none !important; - border-radius: 0.375rem; - box-shadow: 0 0 2rem 0 rgba(136, 152, 170, .15); - overflow: hidden; -} - - - -.cbi-image-button { - margin-left: 0.5rem; -} - -.zonebadge { - padding: 0.2rem 0.5rem; - display: inline-block; - cursor: pointer; -} - -.zonebadge>.ifacebadge { - padding: 0.2rem 1rem; - margin: 0.3rem; - border: 1px solid #6C6C6C; -} - -.zonebadge>input[type="text"] { - padding: 0.16rem 1rem; - min-width: 10rem; - margin-top: 0.3rem; -} - -.cbi-value-field .cbi-input-checkbox { - margin: 0.5rem 0.25rem 0.7rem 0.25rem; - vertical-align: middle; - height: 1rem; - line-height: 1.6; -} - -.cbi-input-checkbox { - margin: 0.5rem 0.25rem 0.7rem 0.25rem; - vertical-align: middle; -} - -.cbi-value-field .cbi-input-radio { - margin: 0rem 0.25rem; -} - -.cbi-input-radio { - margin: 0rem 0.25rem; -} - -.cbi-value-field>input+.cbi-value-description { - padding: 0; -} - -.cbi-value-field>ul>li { - display: flex; - align-items: center; - font-size: 0.875rem; -} - - - -.cbi-value-field>ul>li .ifacebadge { - font-size: 0.875rem; - background-color: #eee; - display: flex; - align-items: center; - margin-left: 0rem; - margin-top: 0rem; -} - -.cbi-section-table-row>.cbi-value-field .cbi-input-select { - min-width: 7rem; -} - -.cbi-section-create>.cbi-button-add { - margin: 0.75rem 0.75rem 0.75rem 0.25rem; -} - -.cbi-section-remove { - padding: 0.5rem; -} - - -.cbi-optionals { - padding: 1rem 1rem 0 1rem; - border-top: 1px solid #CCC; -} - - -input[name="ping"], -input[name="traceroute"], -input[name="nslookup"] { - width: 80%; -} - - - -.label { - padding: 0.3rem 0.8rem; - font-size: 0.8rem; - font-weight: bold; - color: #fff !important; - text-transform: uppercase; - white-space: nowrap; - background-color: #32325d; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - text-shadow: none; - text-decoration: none; -} - - - - - - - -/* fix status overview */ - -.node-status-overview>.main fieldset:nth-child(4) td:nth-child(2) { - white-space: normal; -} - -.node-status-overview>.main #wan4_i, -.node-status-overview>.main #wan6_i { - min-width: 80px !important; -} - -/* fix status processes */ - -.node-status-processes>.main table tr td:nth-child(3) { - white-space: normal; -} - - -/* fix system reboot */ - -.node-system-reboot>.main>.main-right p, -.node-system-reboot>.main>.main-right h3 { - padding-left: 2rem; - color: #fff; -} - -/* fix Services Network Shares*/ -.node-services-samba>.main .cbi-tabcontainer:nth-child(3) .cbi-value-title { - margin-bottom: 1rem; - width: auto; -} - -.node-services-samba>.main .cbi-tabcontainer:nth-child(3) .cbi-value-field { - display: list-item; -} - -.node-services-samba>.main .cbi-tabcontainer:nth-child(3) .cbi-value-description { - padding-top: 1rem; -} - -/* fix System Software*/ -.node-system-packages>.main table tr td:nth-child(1) { - width: auto !important; -} - -.node-system-packages>.main table tr td:nth-last-child(1) { - white-space: normal; - font-size: small; - color: #404040; -} - -.node-system-packages>.main .cbi-tabmenu>li>a, -.tabs>li>a { - padding: 0.5rem 0.8rem; -} - -.node-system-packages>.main .cbi-value>pre { - background-color: #eee; - padding: 0.5rem; - overflow: auto; -} - -.node-system-packages>.main .cbi-page-actions { - padding: 1rem 0; -} - -.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last { - line-height: 1.8em; - - div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] { - border: 1px solid #999999 !important; - width: 100% !important; - background-color: #fff !important; - height: 1.4rem !important; - border-radius: 0.25rem; - margin: 0.5rem 0; - overflow: hidden; - - div { - border-right: 0 !important; - background-color: #5e72e4 !important; - background-color: var(--primary) !important; - height: 100% !important; - background-image: url(../img/trafficbar.png); - background-position: left top; - animation: sparkle 1000ms linear infinite; - } - } - -} - -.node-system-leds .cbi-section em { - display: block; -} - -.cbi-tabmenu+.cbi-section { - margin-top: 0; -} - -.cbi-section { - background: #fff; - border: 0; - border-radius: .375rem; - box-shadow: 0 0 2rem 0 rgba(136, 152, 170, .15); - overflow-x: auto; - overflow-y: hidden; - - em { - font-size: 0.7rem; - font-weight: 600; - color: var(--primary); - text-shadow: 1px 1px 2px #ccc; - text-align: center; - } - - h4 { - font-size: 0.7rem; - font-weight: 600; - color: #525f7f; - } - - -} - - - - - -#content_syslog { - border-radius: .375rem; - box-shadow: 0 0 2rem 0 rgba(136, 152, 170, .15); - overflow: hidden; -} - -.node-system-packages .cbi-section-node .cbi-value { - padding: 0.5rem 1rem; - font-size: 0.875rem; -} - -.node-system-packages br { - display: none; -} - -/* fix network firewall*/ -.node-network-firewall>.main .cbi-section-table-row>.cbi-value-field .cbi-input-select { - min-width: 4rem; -} - -.node-network-firewall .cbi-section-table { - width: 100% !important; -} - -.node-status-iptables fieldset, -.node-system-packages fieldset, -.node-system-flashops fieldset { - margin-top: 0; -} - -.node-system-flashops fieldset > ul { - padding: 1rem; -} - -.node-system-flashops fieldset + .cbi-page-actions { - margin-top: 1rem; -} - -.node-status-iptables .cbi-tabmenu, -.node-system-packages .cbi-tabmenu, -.node-system-flashops .cbi-tabmenu { - border: none; -} - -.node-system-flashops form.inline+form.inline { - margin-left: 0; -} - -.Changes .cbi-section { - font-size: 0.875rem; - padding: 1rem; -} - -.node-network-diagnostics { - font-size: 0.875rem; - - #diag-rc-output { - display: block; - padding: 1rem; - - pre { - font-size: 0.875rem; - } - - } - - .cbi-section div { - padding: 0 1.5rem; - } - -} - - -.node-network-diagnostics input { - margin: 0.25rem !important; -} - -.node-network-wireless .cbi-button-add{ - margin-left: 0; -} - - - -/* fix nlbw/display*/ -#detail-bubble.in { - z-index: 500; -} - -.node-nlbw-display .cbi-section ul { - padding: 0.875rem 1.5rem; -} - -.node-nlbw-backup form { - margin-left: 1.5rem; -} - -.node-nas-usb_printer em { - display: block; -} - -/* luci-app-passwall */ -#cbi-passwall #add_link_div, -#cbi-passwall #set_node_div { - background: #fffffff0; -} -#cbi-passwall .cbi-section-table tbody ._now_use { - background: #5e72e473 !important; -} - -/* luci-app-commands */ -.commandbox h3 { - overflow: hidden; - text-overflow: ellipsis; -} -.commandbox code { - word-break: break-word; - overflow: hidden; - text-overflow: ellipsis; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; -} -div.commandbox { - height: 16em; -} - -/* luci-app-ssr-plus */ -#cbi-shadowsocksr .cbi-map-descr h3 { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -/* luci-app-mwan3 */ -.node-status-mwan .cbi-tabmenu { - padding: 3rem 0.5rem 0 0.5rem; -} - -/* luci-app-openclash */ -.node-services-openclash .cbi-tabmenu { - font-size: 0; -} -.node-services-openclash .cbi-tabmenu > li { - margin-right: 4px; -} -.node-services-openclash .cbi-tabmenu > li:last-child { - margin-right: 0; -} - -/* luci-app-ddnsto */ -.node-services-ddnsto .cbi-section-node .cbi-value div { - display: table-cell; - line-height: 1.6; - font-size: 0.875rem; -} - -/* luci-app-dockerman */ -#cbi-dockerd > .cbi-section > br, -#cbi-docker > .cbi-section > br { - display: none; -} - -/* luci-app-diskman */ -#cbi-diskman > .cbi-section > br { - display: none; -} - -/* luci-app-istorex (Quick Start) */ -#app #main #page .app-container_body .btn-f, -#app #main #page .app-container_body .btn-r { - -webkit-user-select: none; /* Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* IE10+/Edge */ - user-select: none; /* Standard */ - width: 30px; -} - -/* luci-app-ttyd */ -.TTYD.node-system-terminal .main { - height: 100%!important; -} -.TTYD.node-system-terminal .main .main-right, -.TTYD.node-system-terminal .main .main-right #maincontent, -.TTYD.node-system-terminal .main .main-right #maincontent .container .cbi-map { - height: 100%!important; - display: flex!important; - flex-direction: column!important; -} -.TTYD.node-system-terminal .main .main-right #maincontent, -.TTYD.node-system-terminal .main .main-right #maincontent .container, -.TTYD.node-system-terminal .main .main-right #maincontent .container .cbi-map #terminal { - flex: 1!important; -} - -@media screen and (max-width: 1600px) { - - .main { - .main-left { - width: calc(0% + 13rem); - } - - .main-right { - width: calc(100% - 13rem); - } - } - - - .cbi-button:not(.cbi-button-up, .cbi-button-down) { - /*padding: 0.3rem 1.5rem;*/ - font-size: 0.8rem; - } - - header>.container>.pull-right>* { - top: 0.35rem; - } - - .label { - padding: 0.2rem 0.6rem; - } - - .cbi-value-title { - width: 15rem; - padding-right: 0.6rem; - } - - fieldset { - padding: 0; - } - - .node-status-iptables>.main fieldset li>a { - padding: 0.3rem 0.6rem; - } - - -} - - -@media screen and (max-width: 1280px) { - - header>.container { - margin-top: 0.25rem; - } - - .main { - .main-left { - width: calc(0% + 13rem); - } - - .main-right { - width: calc(100% - 13rem); - } - } - - - - .cbi-tabmenu>li>a, - .tabs>li>a { - padding: 0.2rem 0.5rem; - } - - .panel-title { - font-size: 1.1rem; - padding-bottom: 1rem; - } - - table { - font-size: 0.7rem !important; - width: 100% !important; - } - - .main>.main-left>.nav>li, - .main>.main-left>.nav>li a, - .main>.main-left>.nav>.slide>.menu { - font-size: 0.9rem; - } - - .main>.main-left>.nav>.slide>.slide-menu>li>a { - font-size: 0.7rem; - } -} - -@media screen and (max-width: 992px) { - .main { - .main-left { - width: 0; - position: fixed; - z-index: 100; - } - - .main-right { - width: 100%; - } - } - - .showSide { - padding: 0.1rem; - position: relative; - display: inline-block; - - &:hover { - text-decoration: none; - } - } - - .showSide:before { - content: "\e20e"; - font-size: 1.7rem; - } - - header>.fill>.container>.brand { - display: inline-block; - } - - .node-network-diagnostics>.main .cbi-map fieldset>div * { - width: 100% !important; - } - - .node-network-diagnostics>.main .cbi-map fieldset>div input[type="text"] { - margin: 3rem 0 0 0 !important; - } - - .node-network-diagnostics>.main .cbi-map fieldset>div:nth-child(4) input[type="text"] { - margin: 0 !important; - } - - .node-network-diagnostics>.main .cbi-map fieldset>div select, - .node-network-diagnostics>.main .cbi-map fieldset>div input[type="button"] { - margin: 1rem 0 0 0 !important; - } - - .node-network-diagnostics>.main .cbi-map fieldset>div { - width: 100% !important; - } - - #diag-rc-output>pre { - font-size: 1rem; - } - - -} - -@media screen and (max-width: 500px) { -.login-page { - .login-container { - margin-left: 0rem !important; - width: 500px; - - .login-form { - max-width: 500px; - } - } -} - -@media screen and (max-width: 480px) { - body { - font-size: 0.8rem; - } - - .pull-right { - float: right; - margin-top: 0rem !important; - } - - .login-page .login-container { - margin-left: 0rem !important; - width: 100%; - - .login-form { - - .form-login { - .input-group { - &::before { - color: #525461; - } - - input { - color: #525461; - border-bottom: white 1px solid; - border-bottom: var(--white) 1px solid; - border-radius: 0; - } - - } - } - } - - } - - - - fieldset { - padding: 0; - margin: 1rem 0 0 0; - } - - .toggle { - margin: 0; - } - - h2 { - font-size: 1.125rem; - } - - .panel-title { - font-size: 1rem; - padding-bottom: 1rem; - } - - #maincontent>.container { - margin: 0 1rem 1.5rem 1rem; - } - - .main>.main-left>.nav>.slide>.menu { - font-size: 1rem; - } - - .main>.main-left>.nav>.slide>.slide-menu>li>a { - font-size: 0.9rem; - } - - - .main>.main-left>.nav>.slide>.menu:after { - top: 0.9rem; - } - - - #ethinfo td { - padding: 0.75rem 0.2rem !important; - - } - - .cbi-value-title { - width: 100%; - min-width: 0rem !important; - display: block; - margin-top: 0.5rem; - margin-bottom: 0.5rem; - text-align: left; - padding: 0 0.25rem; - } - - .cbi-value input[type="password"], - .cbi-value input[type="text"] { - min-width: 15rem; - } - - select, - input { - width: 100% !important; - min-width: auto; - margin: 0.25rem 0; - } - - input { - box-sizing: border-box; - } - - .cbi-value>.cbi-value-field>div>input { - width: calc(100% - 1.5rem) !important; - } - - .cbi-value>.cbi-value-field { - display: inline-block; - width: 100%; - position: relative; - } - - .cbi-page-actions>div>input { - display: none; - } - - - ::-webkit-scrollbar { - width: 0px !important; - height: 0px !important; - } - - - .tabs>li>a { - font-size: 0.9rem; - } - - select, - input { - font-size: 0.9rem; - } - - .mobile-hide { - display: none !important; - } - - - - .node-status-realtime { - - table>tbody>tr>td, - table>tfoot>tr>td, - table>thead>tr>td { - font-size: .8125rem; - color: #525f7f; - line-height: 1.4em; - vertical-align: middle !important; - padding: 0.8rem 0rem; - border-top: 1px solid #ddd; - width: auto; - text-align: center; - } - } - - - .node-system-packages>.main .cbi-value.cbi-value-last>div { - width: 100% !important; - } - - .node-system-packages .cbi-section-node .cbi-value { - padding: 0.3rem 1rem; - } - - .node-system-packages>.main .cbi-value .cbi-value-field input { - width: 100%; - } - - .node-system-leds .cbi-section em { - display: block; - } - - .node-status-iptables>.main div>.cbi-map>form { - position: static !important; - margin: 0 0 2rem 0; - padding: 2rem; - border: 0; - font-weight: normal; - font-style: normal; - line-height: 1; - font-family: inherit; - min-width: inherit; - overflow-x: auto; - overflow-y: hidden; - border-radius: 0.375rem; - background-color: #FFF; - box-shadow: 0 0 2rem 0 rgba(136, 152, 170, .15); - -webkit-overflow-scrolling: touch; - } - - .node-status-iptables>.main div>.cbi-map>form input[type="submit"] { - width: 100% !important; - margin: 0; - } - - .node-status-iptables>.main div>.cbi-map>form input[type="submit"]+input[type="submit"] { - margin-top: 1rem; - } - - .cbi-value input[type="text"]:has(+ img) { - width: 10rem !important; - } - - .cbi-button-add { - margin-left: 0.5rem; - } - - .node-network-network { - .cbi-section-table { - - tr, - td { - display: block; - } - - td { - width: 100% !important; - text-align: center !important; - padding: 0.8rem 1.5rem !important; - } - - .cbi-section-table-titles { - display: flex; - - .cbi-section-table-cell { - flex: 1 !important; - } - } - } - } - - .node-services-vssr { - .status-info { - font-size: 0.75rem; - } - - .icon-con { - margin-top: 0.4rem; - - img { - width: 2.3rem !important; - height: auto; - } - } - } -} diff --git a/luci-theme-argon/htdocs/luci-static/argon/less/dark.less b/luci-theme-argon/htdocs/luci-static/argon/less/dark.less deleted file mode 100644 index 997fe795..00000000 --- a/luci-theme-argon/htdocs/luci-static/argon/less/dark.less +++ /dev/null @@ -1,908 +0,0 @@ -/** - * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template - * - * luci-theme-argon - * Copyright 2020 Jerryk - * - * Have a bug? Please create an issue here on GitHub! - * https://github.com/jerrykuku/luci-theme-argon/issues - * - * luci-theme-bootstrap: - * Copyright 2008 Steven Barth - * Copyright 2008 Jo-Philipp Wich - * Copyright 2012 David Menting - * - * MUI: - * https://github.com/muicss/mui - * - * luci-theme-material: - * https://github.com/LuttyYang/luci-theme-material/ - * - * Argon Theme - * https://demos.creative-tim.com/argon-dashboard/index.html - * - * Login background - * https://unsplash.com/ - * - * Licensed to the public under the Apache License 2.0 - */ - -body { - background: #1e1e1e; - color: #cccccc; -} - -.login-page .login-container { - - .login-form { - background-color: #1e1e1e; - - .brand { - color: #adb5bd; - } - - .form-login { - .input-group { - &::before { - color: #adb5bd; - } - - .border { - border-bottom: 1px var(--dark-primary) solid; - } - - input { - background-color: transparent !important; - color: #adb5bd; - border-bottom: #adb5bd 1px solid !important; - border-radius: 0; - border-top: none !important; - border-left: none !important; - border-right: none !important; - box-shadow: none; - - &:focus { - border-top: none !important; - border-left: none !important; - border-right: none !important; - } - } - } - - .cbi-button-apply { - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; - &:hover, - &:focus { - opacity: 0.9; - } - } - } - - - } - - footer { - color: #adb5bd; - a { - color: #adb5bd; - } - } - -} - -header::after { - background-color: #1e1e1e !important; -} - - -.main { - .main-left { - - background-color: #333333 !important; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .15); - - .sidenav-header .brand { - color: #ccc; - } - - .nav { - .slide { - .slide-menu { - - .active { - a { - color: #fff !important; - - &::after { - background-color: var(--dark-primary) !important; - } - } - } - - li { - a { - color: #cccccc; - - &:hover { - background: none !important; - } - - &::after { - background-color: var(--dark-primary) !important; - box-shadow: 0 0 1px #000 !important; - } - - } - } - } - - .menu { - &:hover, - &.active { - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; - color: #fff !important; - box-shadow: 0 0 1px #000 !important; - } - } - - .menu[data-title=Status]:before, - .menu[data-title=Control]:before { - color: var(--dark-primary) !important; - } - } - - li { - a { - color: #cccccc !important; - } - - a:hover { - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; - color: #fff !important; - - - } - } - } - - - &::-webkit-scrollbar-thumb { - background-color: #252526 !important; - } - - } - - .main-right { - background-color: #1e1e1e; - } -} - -h2 { - color: #ccc; - background: #333333; -} - -h3 { - color: #ccc; - border-bottom: 0; - background: #333333; -} - -a:link, -a:visited, -a:active { - color: var(--dark_webkit-any-link); -} - -a:-webkit-any-link:not(li a, .main-left a, .brand, .pull-right a, .alert-message a, .login-container footer a, .cbi-button) { - color: var(--dark_webkit-any-link) !important; - text-shadow: 1px 1px 2px #000 !important; -} - -input:-webkit-autofill { - background-color: #3c3c3c !important; -} - -input[type="checkbox"]:checked { - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; -} - -.cbi-input-radio:checked { - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; -} - -.cbi-value-field .cbi-input-apply, -.cbi-button-apply, -.cbi-button-edit { - color: #fff !important; - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; - border-color: #483d8b !important; - border-color: var(--dark-primary) !important; -} - -.cbi-section em { - color: var(--dark_webkit-any-link); - text-shadow: 1px 1px 2px #000; -} - -header.bg-primary { - background-color: #1e1e1e !important; -} - - - -.cbi-map-descr { - color: #ccc; -} - -.cbi-section { - background: none; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35) -} - -.panel-title { - color: #ccc; - background-color: #333333; - border-bottom: 0px; -} - -table>tbody>tr>td, -table>tfoot>tr>td, -table>thead>tr>td { - color: #ccc; -} - -fieldset>table>tbody>tr:nth-of-type(2n) { - background-color: #252526; -} - -table>tbody>tr>td, -table>tfoot>tr>td, -table>thead>tr>td { - border-top: 1px solid #252526; -} - -#swaptotal>div>div, -#swapfree>div>div, -#memfree>div>div, -#membuff>div>div, -#conns>div>div, -#memtotal>div>div { - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; -} - -#swaptotal>div>div>div>small, -#swapfree>div>div>div>small, -#memfree>div>div>div>small, -#membuff>div>div>div>small, -#conns>div>div>div>small, -#memtotal>div>div>div>small { - color: #ccc !important; - text-shadow: 1px 1px 2px #000 !important; -} - -.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last { - line-height: 1.8em; - - div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] { - border: 1px solid #999999 !important; - background-color: transparent !important; - - div { - background-color: #32325d !important; - background-color: var(--dark-primary) !important; - } - } - -} - - -table>tbody>tr>th, -table>tfoot>tr>th, -table>thead>tr>th { - background-color: #252526; - border-top: none; - border-bottom: black 1px solid !important; -} - -.cbi-rowstyle-2 { - background-color: #2c2c2c !important; -} - -.cbi-rowstyle-1 { - background-color: #252526; -} - -.cbi-section>h3:first-child, -.panel-title { - color: #ccc; - border-bottom: 0; -} - -.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - background-color: #1e1e1f; -} - -.cbi-button { - color: #ccc; - background-color: #2c2c2c; -} - -.cbi-rowstyle-2 .cbi-button-up, -.cbi-rowstyle-2 .cbi-button-down { - background-color: #252526 !important; -} - -.cbi-section-node { - background: none; - border-radius: 0 0 .375rem .375rem; - padding: 0rem; -} - -abbr { - color: #8898aa; -} - -div>table>tbody>tr:nth-of-type(2n), -div>.table>.tbody>.tr:nth-of-type(2n) { - background-color: #252526; -} - -/* file selector button */ -::file-selector-button { - border: 1px solid darkseagreen !important; - background-color: darkseagreen !important; -} - -/* Fix background color of table-titles */ -.cbi-section-node>.cbi-section-table>tbody>.cbi-section-table-titles th { - background-color: #1e1e1e; - border: none !important; -} - -/* Fix background color of table-descr */ -.cbi-section-node>.cbi-section-table>tbody>.cbi-section-table-descr th { - background-color: #333333; - border: none !important; -} - -/* Fix background color not change when the H tag is in the table rowstyle-1 */ -.cbi-section-node>.cbi-section-table>tbody>.cbi-rowstyle-1 th { - background-color: #252526; - border-top: 1px solid #252526; - border-bottom: none !important; -} - -/* Fix background color not change when the H tag is in the table rowstyle-2 */ -.cbi-section-node>.cbi-section-table>tbody>.cbi-rowstyle-2 th { - background-color: #2c2c2c; - border-top: 1px solid #252526; - border-bottom: none !important; -} - -/* Change the color of the H label in the table to make it more visible */ -th h1, td h1, -th h2, td h2, -th h3, td h3, -th h4, td h4, -th h5, td h5, -th h6, td h6 { - background: var(--gray-dark); -} - -/* Improved the background color of each itemes in "UNSAVED CHANGES" (dark mode only) */ -.uci-change-list del, -.uci-change-legend-label del { - background-color: #fb74008c; -} -.uci-change-list var, -.uci-change-legend-label var { - background-color: #333333; -} -.uci-change-list ins, -.uci-change-legend-label ins { - background-color: #00ff0a45 !important; -} - -#content_syslog { - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35) -} - -#syslog { - color: #ccc; - background-color: #1e1e1e; -} - -#iwsvg, -#iwsvg2, -#bwsvg { - overflow: hidden; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); - background-color: #1e1e1e !important; -} - -.tabs { - background-color: #252526; -} - -.tabs>li:hover, -.tabs>li[class~="active"], -.cbi-tabmenu>li:hover, -.cbi-tabmenu>li[class~="cbi-tab"] { - border-bottom: .18751rem solid var(--dark-primary); - background-color: #3c3c3c; -} - -.tabs>li>a, -.cbi-tabmenu>li>a { - color: #ccc !important; -} - -.cbi-tabmenu>li>a:hover, -.cbi-tabmenu>li:hover>a, -.cbi-tabmenu>.cbi-tab>a, -.tabs>li>a:hover, -.tabs>li:hover>a, -.tabs>li[class~="active"]>a { - color: #fff !important; -} - -.cbi-tabmenu>li { - background: #2d2d2d; -} - -.cbi-tabmenu { - border-bottom: 0px solid #ddd !important; -} - -.cbi-tab-descr { - color: #ccc; -} - -.cbi-tabcontainer>.cbi-value:nth-of-type(2n), -.cbi-tabcontainer>.cbi-value:nth-of-type(2n)>textarea { - background-color: #252526; -} - -.cbi-value-title { - color: #ccc; -} - -select, -input { - color: #ccc; - background-color: transparent; - border: 1px solid #3c3c3c !important; - box-shadow: 0 3px 2px rgba(0, 0, 0, .05); -} - -select:not([multiple="multiple"]):hover, -input:hover, -input:focus { - border-color: #483d8b !important; - border-color: var(--dark-primary) !important; - background-color: transparent; - outline: 0; - box-shadow: none; -} - -select { - background-color: #1e1e1e !important; -} - -#cbi-dropbear h2, -#cbi-dropbear .cbi-map-descr, -#cbi-dropbear .cbi-map-descr abbr, -#cbi-rc h2, -#cbi-rc .cbi-map-descr, -#cbi-distfeedconf h2, -#cbi-distfeedconf .cbi-map-descr, -#cbi-customfeedconf h2, -#cbi-customfeedconf .cbi-map-descr, -#cbi-download h2, -#cbi-filelist h2 { - color: #ccc !important; -} - -.cbi-value-field>ul>li .ifacebadge { - background-color: #3c3c3c; -} - -.cbi-section-descr { - color: #ccc; -} - -/*textarea for dark mode*/ -textarea { - border: 1px solid #3c3c3c !important; - background-color: #1e1e1e; - color: #ccc; -} - -.cbi-section-remove:nth-of-type(2n), -.cbi-section-node:nth-of-type(2n) { - background-color: #1e1e1e; -} - -.node-system-packages>.main table tr td:nth-last-child(1) { - color: #ccc; -} -.node-system-packages > .main .cbi-value > pre { - background-color: #333; -} - -.cbi-section-node .cbi-value { - padding: 1rem 1rem 0.3rem 1rem; -} - -.ifacebox { - background-color: #1e1e1e; - border: 1px solid #1e1e1e; -} - -.ifacebox-head { - color: #666; -} - -.ifacebox-body { - background-color: #333; -} - -.zonebadge strong { - color: #333; -} - -.zonebadge>.ifacebadge { - background-color: #3c3c3c; -} - -/* Fix firewall zone: "unspecified -or- create: " background color (dark mode only) */ -div[onclick$="._fwzone_new').checked=true"] { - border: 1px solid #3c3c3c; - background-color: transparent !important; -} - -/* Improve the background color of "Any zone" and "Device" when ADD/EDIT Rules in Firewall > Traffic Rules (dark mode only) */ -label[for$=".src_any"], -label[for$=".dest_empty"], -label[for$=".dest_any"] { - background-color: #2888db !important; -} - -/* Fix/add background color of wireless signal strength badge for dark mode */ -td>.ifacebadge, -.td>.ifacebadge { - background-color: #3c3c3c; -} - -/* Improved loading process gif color (dark mode only) */ -img[src="/luci-static/resources/icons/loading.gif"] { - filter: invert(1); -} - -div.cbi-value var, -td.cbi-value-field var, -.td.cbi-value-field var { - color: #483d8b; - color: var(--dark_webkit-any-link); - text-shadow: 1px 1px 2px #000; -} - -#diag-rc-output>pre { - color: #ccc; - background-color: #1e1e1e; -} - -.node-services-vssr .block { - background-color: #1e1e1e !important; - box-shadow: 0 0 .5rem 0 rgba(0,0,0,0.35) !important; -} - -.node-services-vssr .block h4 { - color: #ccc !important; -} - -.node-services-vssr .status-bar { - color: #ccc; - background: #333333f0; - box-shadow: #00000094 10px 10px 30px 5px; -} - -.node-services-vssr .cbi-section-table-row { - color: #ccc; - background-color: #3c3c3c !important; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, .35) -} - -.node-services-vssr .cbi-section-table-row.fast { - background: #483d8b !important; - background: var(--dark-primary) !important; - color: #fff; -} - -.node-services-vssr .ssr-button { - color: #ccc; - -} - -.node-services-vssr .incon:nth-child(2) { - border-right: #1e1e1e 1px solid; -} - -.main .main-right #maincontent .container p { - color: #ccc; -} - -#xhr_poll_status>.label.success { - color: #ccc !important; - - background-color: darkolivegreen !important; -} - -/* Define the warning background-color breathe display animation (dark mode) */ -@keyframes warning-background-color-breathe-dark { - 0%{ - color: #fff; - background-color: darkorange; - } - 50%{ - color: #ccc; - background-color: #333333; - } - 100%{ - color: #fff; - background-color: darkorange; - } -} -.warning, -.warning * { - animation: warning-background-color-breathe-dark 1.5s ease-in-out infinite !important; -} - -.notice { - background-color: #483d8b !important; - background-color: var(--dark-primary) !important; -} - -/* Improved the aleart-message background color during device restart (dark mode only) */ -.errorbox, -.alert-message { - background-color: #333333; -} - -.cbi-input-find, -.cbi-input-save, -.cbi-button-add, -.cbi-button-save, -.cbi-button-find, -.cbi-input-reload, -.cbi-button-reload { - background-color: darkseagreen !important; - border-color: darkseagreen !important; -} - -.cbi-button-reset, -.cbi-input-remove { - color: #fff !important; - background-color: darkorange !important; - border-color: darkorange !important; -} - -.cbi-page-actions .cbi-button-apply, -.cbi-section-actions .cbi-button-edit, -.cbi-button-edit.important, -.cbi-button-apply.important, -.cbi-button-reload.important, -.cbi-button-action.important { - border: 1px #483d8b solid !important; - border: 1px var(--dark-primary) solid !important; -} - - - -fieldset[id^="cbi-apply-"] { - background-color: #333333; -} - -#detail-bubble>div { - border: 1px solid #ccc; - border-radius: 2px; - padding: 5px; - background: #252525; -} - -/* Define the error text border breathe display animation (dark mode) */ -@keyframes error-border-breathe-dark { - 0%{ - border-color: darkorange; - } - 50%{ - border-color: transparent; - } - 100%{ - border-color: darkorange; - } -} - -/* Add border for error text box, and border breathe display animation to make it more noticeable (dark mode) */ -.cbi-section-error>ul>li { - color: darkorange; - border: 2px solid darkorange ; - animation: error-border-breathe-dark 1.5s ease-in-out infinite; -} - -.cbi-input-invalid, -.cbi-value-error input { - color: darkorange; - border: 1px dashed darkorange !important; -} - -.node-services-vssr .block h4 span{ - color: #ccc !important; -} - -/* luci-app-passwall */ -#cbi-passwall #add_link_div, -#cbi-passwall #set_node_div { - background: #333333f0 !important; - box-shadow: #00000094 10px 10px 30px 5px !important; -} - -/* luci-app-bypass */ -#cbi-bypass .status-bar { - color: #ccc; - background: #333333f0; - box-shadow: #00000094 10px 10px 30px 5px; -} - -/* luci-app-clash */ -#cbi-clash .cbi-section .pure-u-1-4 .pure-g, -#cbi-clash .cbi-section .siz .pure-g { - background-color: #1e1e1e !important; - box-shadow: 0 0 .5rem 0 rgba(0,0,0,0.35) !important; -} - -/* luci-app-openclash */ -#cbi-openclash #eye-icon, -#cbi-openclash img[title="刷新"] { - filter: invert(100%); -} -#cbi-openclash #cbi-openclash-config fieldset[control-id="ControlID-46"], -#cbi-openclash .CodeMirror-merge-copybuttons-right, -.CodeMirror-scroll { - background-color: #333333 !important; -} -#cbi-openclash .cbi-section .cbi-tabmenu li { - border-right: 1px solid #3c3c3c !important; -} -#cbi-openclash .CodeMirror-merge { - border: 1px solid transparent !important; -} -#cbi-openclash-config-clog .cbi-section { - border: 1px solid #3c3c3c !important; -} -#cbi-openclash .CodeMirror-gutters { - border-right: 1px solid #3c3c3c !important; - background-color: #1e1e1e !important; -} - -/* luci-app-dockerman */ -#cbi-dockerd .img-con img { - filter: invert(0.4); -} - -/* luci-app-istorex (interface config[NetworkPort]) */ -#cbi-nfs-mount .app-container_status-label_bg { - background: #333333; -} -#cbi-nfs-mount td svg { - filter: invert(0.3); -} -#actioner .actioner-dns { - background-color: #333333; -} -#actioner .actioner-dns_header, -#actioner .actioner-container_header { - border-bottom: 1px solid #cbcbcb !important; -} -#actioner .actioner-dns_footer { - border-top: 1px solid #cbcbcb !important; -} - -/* luci-app-istorex (Network Guide) */ -#app #main #page .title, -#app #main #page .desc { - color: #cccccc; - background-color: #333333; -} -#app #main #page .network-message li:not(span):not(a) { - color: #8d8d8d; -} -#app #main #page code { - background-color: #333333; -} - -/* luci-app-istorex (Quick Start) */ -#app #main #page .network-container_flow-container, -#app #main #page .app-container_status-container, -#app #main #page .nas-container .nas-container_card .app-container, -#app #main #page .app-container { - background-color: #333333; -} -#app #main #page .flow-data span, -#app #main #page .app-container_status-label_block span, -#app #main #page .app-container .item-label span:not(#app #main #page .app-container .progress-value span) { - color: #cccccc; -} -#app #main #page .app-container_status-info span, -#app #main #page .app-container_status-info span, -#app #main #page .app-container_title span { - color: #dddddd; -} -.app-container_body .app-container_status-label_bg { - background-color: #282828 !important; -} -#app #main #page .item-label_value .progress { - background-color: rgb(118, 118, 118); -} -#app #main #page .app-container_nas-menu button[class=""] { - background-color: #8b8b8b; -} -#app #main #page .app-container_nas-menu button[class="on"] { - background-color: #555555; -} -#app #main #page .app-container_title .DeviceBlock ul { - background-color: #cccccc; -} -#actioner div.action, -#actioner div.actioner-container { - background-color: #3c3c3c; -} -#actioner div.action .title { - color: #cccccc; -} -#actioner div.action .desc { - color: #cbcbcb; -} -#actioner div.action div.roots span, -#actioner div.action div.move span:not(span.tip), -#actioner div.action div.left span, -#actioner div.action div.input_row span, -#actioner div.label-item label span { - color: #cbcbcb; -} -#actioner div.action span.tooltip-trigger svg path { - fill: #cbcbcb; -} -#actioner div.actioner-dns_body div.label-item_value select { - height: 43px; -} -#actioner div.actioner-container_footer div.close { - color: #ffffff; -} -#app #main div.app-container div.app-container_title span a svg path, -#app #main #page span.disk_infoicon svg g { - fill: #8b8b8b; -} - -@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { - .login-page .login-container .login-form { - -webkit-backdrop-filter: blur(var(--blur-radius-dark)); - backdrop-filter: blur(var(--blur-radius-dark)); - background-color: rgba(0, 0, 0, var(--blur-opacity-dark)); - } -} - -@media screen and (max-width: 480px) { - .node-status-iptables>.main div>.cbi-map>form { - background-color: #1e1e1e; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); - } -} \ No newline at end of file diff --git a/luci-theme-argon/luasrc/view/themes/argon/footer.htm b/luci-theme-argon/luasrc/view/themes/argon/footer.htm deleted file mode 100644 index f56186db..00000000 --- a/luci-theme-argon/luasrc/view/themes/argon/footer.htm +++ /dev/null @@ -1,79 +0,0 @@ -<%# - Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material Argon Template - - luci-theme-argon - Copyright 2020 Jerrykuku - - Have a bug? Please create an issue here on GitHub! - https://github.com/jerrykuku/luci-theme-argon/issues - - luci-theme-bootstrap: - Copyright 2008 Steven Barth - Copyright 2008-2016 Jo-Philipp Wich - Copyright 2012 David Menting - - MUI: - https://github.com/muicss/mui - - luci-theme-material: - https://github.com/LuttyYang/luci-theme-material/ - - Argon Theme - https://demos.creative-tim.com/argon-dashboard/index.html - - Login background - https://unsplash.com/ - - Font generate by Icomoon - https://icomoon.io/ - - Licensed to the public under the Apache License 2.0 --%> - -<% - local ver = require "luci.version" - local disp = require "luci.dispatcher" - local request = disp.context.path - local category = request[1] - local tree = disp.node() - local categories = disp.node_childs(tree) -%> -
- - - - - - - - diff --git a/luci-theme-argon/luasrc/view/themes/argon/header.htm b/luci-theme-argon/luasrc/view/themes/argon/header.htm deleted file mode 100644 index 3786aee8..00000000 --- a/luci-theme-argon/luasrc/view/themes/argon/header.htm +++ /dev/null @@ -1,331 +0,0 @@ -<%# - Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI and Argon Template - - luci-theme-argon - Copyright 2020 Jerryk - - Have a bug? Please create an issue here on GitHub! - https://github.com/jerrykuku/luci-theme-argon/issues - - luci-theme-bootstrap: - Copyright 2008 Steven Barth - Copyright 2008-2016 Jo-Philipp Wich - Copyright 2012 David Menting - - MUI: - https://github.com/muicss/mui - - Argon Theme - https://demos.creative-tim.com/argon-dashboard/index.html - - Licensed to the public under the Apache License 2.0 --%> - -<% - local sys = require "luci.sys" - local util = require "luci.util" - local http = require "luci.http" - local disp = require "luci.dispatcher" - local fs = require "nixio.fs" - local nutil = require "nixio.util" - local uci = require 'luci.model.uci'.cursor() - - local boardinfo = util.ubus("system", "board") - - local request = disp.context.path - local request2 = disp.context.request - - local category = request[1] - local cattree = category and disp.node(category) - - local leaf = request2[#request2] - - local tree = disp.node() - local node = disp.context.dispatched - - local categories = disp.node_childs(tree) - - local c = tree - local i, r - - -- tag all nodes leading to this page - for i, r in ipairs(request) do - if c.nodes and c.nodes[r] then - c = c.nodes[r] - c._menu_selected = true - end - end - - -- send as HTML5 - http.prepare_content("text/html") - - local function nodeurl(prefix, name, query) - local u = url(prefix, name) - if query then - u = u .. http.build_querystring(query) - end - return pcdata(u) - end - - local function render_tabmenu(prefix, node, level) - if not level then - level = 1 - end - - local childs = disp.node_childs(node) - if #childs > 0 then - if level > 2 then - write('
    ') - end - - local selected_node - local selected_name - local i, v - - for i, v in ipairs(childs) do - local nnode = node.nodes[v] - if nnode._menu_selected then - selected_node = nnode - selected_name = v - end - - if level > 2 then - write('
  • %s
  • ' %{ - v, (nnode._menu_selected or (node.leaf and v == leaf)) and 'active' or '', - nodeurl(prefix, v, nnode.query), - striptags(translate(nnode.title)) - }) - end - end - - if level > 2 then - write('
') - end - - if selected_node then - render_tabmenu(prefix .. "/" .. selected_name, selected_node, level + 1) - end - end - end - - local function render_submenu(prefix, node) - local childs = disp.node_childs(node) - if #childs > 0 then - write('
    ') - - for i, r in ipairs(childs) do - local nnode = node.nodes[r] - local title = pcdata(striptags(translate(nnode.title))) - - write('
  • %s
  • ' %{ - title, - nodeurl(prefix, r, nnode.query), - title - }) - end - - write('
') - end - end - - local function render_topmenu() - local childs = disp.node_childs(cattree) - if #childs > 0 then - write('') - end - end - - local function render_changes() - -- calculate the number of unsaved changes - if tree.nodes[category] and tree.nodes[category].ucidata then - local ucichanges = 0 - for i, j in pairs(require("luci.model.uci").cursor():changes()) do - for k, l in pairs(j) do - for m, n in pairs(l) do - ucichanges = ucichanges + 1; - end - end - end - - if ucichanges > 0 then - write('%s: %d' %{ - url(category, 'uci/changes'), - http.urlencode(http.formvalue('redir') or table.concat(disp.context.request, "/")), - translate('Unsaved Changes'), - ucichanges - }) - end - end - end - - math.randomseed(os.time()) - - -- Custom settings - local mode = 'normal' - local dark_css = fs.readfile('/www/luci-static/argon/css/dark.css') - local bar_color = '#5e72e4' - local primary, dark_primary, blur_radius, blur_radius_dark, blur_opacity - if fs.access('/etc/config/argon') then - primary = uci:get_first('argon', 'global', 'primary') - dark_primary = uci:get_first('argon', 'global', 'dark_primary') - blur_radius = uci:get_first('argon', 'global', 'blur') - blur_radius_dark = uci:get_first('argon', 'global', 'blur_dark') - blur_opacity = uci:get_first('argon', 'global', 'transparency') - blur_opacity_dark = uci:get_first('argon', 'global', 'transparency_dark') - mode = uci:get_first('argon', 'global', 'mode') - bar_color = mode == 'dark' and dark_primary or primary - end - - --%> - - - - - - - <%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - - LuCI - - - - - - - - - - - - - LuCI"> - - LuCI"> - - - - - - - - - - - - - - - <% if node and node.css then %> - - <% end -%> - <% if css then %> - - <% end -%> - - - - - - - - -
-
- - <% render_topmenu() %> -
-
-
-
-
- - <%=boardinfo.hostname or "?"%> -
- <% render_changes() %> - -
-
-
-
-
-
-
- <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%> -
-

<%:No password set!%>

-

<%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%> -

- -
- <%- end -%> - - - - <% if category then render_tabmenu(category, cattree) end %> - - - - - - diff --git a/luci-theme-argon/luasrc/view/themes/argon/header_login.htm b/luci-theme-argon/luasrc/view/themes/argon/header_login.htm deleted file mode 100644 index 43db26a4..00000000 --- a/luci-theme-argon/luasrc/view/themes/argon/header_login.htm +++ /dev/null @@ -1,136 +0,0 @@ -<%# - Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI and Argon Template - - luci-theme-argon - Copyright 2020 Jerrykuku - - Have a bug? Please create an issue here on GitHub! - https://github.com/jerrykuku/luci-theme-argon/issues - - luci-theme-bootstrap: - Copyright 2008 Steven Barth - Copyright 2008-2016 Jo-Philipp Wich - Copyright 2012 David Menting - - MUI: - https://github.com/muicss/mui - - Argon Theme - https://demos.creative-tim.com/argon-dashboard/index.html - - Licensed to the public under the Apache License 2.0 --%> - -<% - local sys = require "luci.sys" - local util = require "luci.util" - local http = require "luci.http" - local disp = require "luci.dispatcher" - - local fs = require "nixio.fs" - local nutil = require "nixio.util" - local uci = require 'luci.model.uci'.cursor() - local boardinfo = util.ubus("system", "board") - - local request = disp.context.path - local request2 = disp.context.request - - local category = request[1] - local cattree = category and disp.node(category) - - local leaf = request2[#request2] - - local tree = disp.node() - local node = disp.context.dispatched - - local categories = disp.node_childs(tree) - - local c = tree - local i, r - - math.randomseed(tonumber(tostring(os.time()):reverse():sub(1, 9))) - - -- Custom settings - local mode = 'normal' - local dark_css = fs.readfile('/www/luci-static/argon/css/dark.css') - local bar_color = '#5e72e4' - local primary, dark_primary, blur_radius, blur_radius_dark, blur_opacity - if fs.access('/etc/config/argon') then - primary = uci:get_first('argon', 'global', 'primary') - dark_primary = uci:get_first('argon', 'global', 'dark_primary') - blur_radius = uci:get_first('argon', 'global', 'blur') - blur_radius_dark = uci:get_first('argon', 'global', 'blur_dark') - blur_opacity = uci:get_first('argon', 'global', 'transparency') - blur_opacity_dark = uci:get_first('argon', 'global', 'transparency_dark') - mode = uci:get_first('argon', 'global', 'mode') - bar_color = mode == 'dark' and dark_primary or primary - end --%> - - - - - - - <%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI - - - - - - - - - - - - - LuCI"> - - LuCI"> - - - - - - - - - - - - - - - <% if node and node.css then %> - - <% end -%> - <% if css then %> - - <% end -%> - - - - - - - - \ No newline at end of file diff --git a/luci-theme-argon/luasrc/view/themes/argon/out_header_login.htm b/luci-theme-argon/luasrc/view/themes/argon/out_header_login.htm deleted file mode 100644 index 062d17fa..00000000 --- a/luci-theme-argon/luasrc/view/themes/argon/out_header_login.htm +++ /dev/null @@ -1,12 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2019 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<% - if not luci.dispatcher.context.template_header_sent then - include("themes/" .. theme .. "/header_login") - luci.dispatcher.context.template_header_sent = true - end -%> diff --git a/luci-theme-argon/luasrc/view/themes/argon/sysauth.htm b/luci-theme-argon/luasrc/view/themes/argon/sysauth.htm deleted file mode 100644 index 1cd8ef12..00000000 --- a/luci-theme-argon/luasrc/view/themes/argon/sysauth.htm +++ /dev/null @@ -1,186 +0,0 @@ -<%# - Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI and Argon Template - - luci-theme-argon - Copyright 2021 Jerryk - - Have a bug? Please create an issue here on GitHub! - https://github.com/jerrykuku/luci-theme-argon/issues - - luci-theme-bootstrap: - Copyright 2008 Steven Barth - Copyright 2008-2016 Jo-Philipp Wich - Copyright 2012 David Menting - - MUI: - https://github.com/muicss/mui - - Argon Theme - https://demos.creative-tim.com/argon-dashboard/index.html - - Licensed to the public under the Apache License 2.0 --%> - -<%+header_login%> -<% - local util = require "luci.util" - local fs = require "nixio.fs" - local nutil = require "nixio.util" - local json = require "luci.jsonc" - local sys = require "luci.sys" - local uci = require 'luci.model.uci'.cursor() - - -- Fetch Local Background Media - - local function glob(...) - local iter, code, msg = fs.glob(...) - if iter then - return nutil.consume(iter) - else - return nil, code, msg - end - end - - - local imageTypes = " jpg png gif webp " - local videoTypes = " mp4 webm " - local allTypes = imageTypes .. videoTypes - local function fetchMedia(path, themeDir) - local backgroundTable = {} - local backgroundCount = 0 - for i, f in ipairs(glob(path)) do - attr = fs.stat(f) - if attr then - local ext = fs.basename(f):match(".+%.(%w+)$") - if ext ~= nil then - ext = ext:lower() - end - if ext ~= nil and string.match(allTypes, " "..ext.." ") ~= nil then - local bg = {} - bg.type = ext - bg.url = themeDir .. fs.basename(f) - table.insert(backgroundTable, bg) - backgroundCount = backgroundCount + 1 - end - end - end - return backgroundTable, backgroundCount - end - local function selectBackground(themeDir) - local bgUrl = media .. "/img/bg1.jpg" - local backgroundType = "Image" - local mimeType = "" - - if fs.access("/etc/config/argon") then - local online_wallpaper = uci:get_first('argon', 'global', 'online_wallpaper') or (uci:get_first('argon', 'global', 'bing_background') == '1' and 'bing') - if (online_wallpaper and online_wallpaper ~= "none") then - local picurl = sys.exec("/usr/libexec/argon/online_wallpaper") - if (picurl and picurl ~= '') then - return picurl, "Image", "" - end - end - end - - local backgroundTable, backgroundCount = fetchMedia("/www" .. themeDir .. "*", themeDir) - if ( backgroundCount > 0 ) then - local currentBg = backgroundTable[math.random(1, backgroundCount)] - bgUrl = currentBg.url - if (string.match(videoTypes, " "..currentBg.type.." ") ~= nil) then - backgroundType = "Video" - mimeType = "video/" .. currentBg.type - end - end - - return bgUrl, backgroundType, mimeType - end - - local boardinfo = util.ubus("system", "board") - local themeDir = media .. "/background/" - local bgUrl, backgroundType, mimeType = selectBackground(themeDir) -%> - -