From 448fa89619ef59371948a1a89518e8e63f312d91 Mon Sep 17 00:00:00 2001 From: Teaffanie <70811472+Teaffanie@users.noreply.github.com> Date: Mon, 14 Sep 2020 11:18:38 +0800 Subject: [PATCH] luci-theme-bootstrap-blue: add new themes from Lienol --- .../lienol/luci-theme-bootstrap-blue/Makefile | 15 + .../luci-static/bootstrap_blue/cascade.css | 1597 +++++++++++++++++ .../luci-static/bootstrap_blue/favicon.ico | Bin 0 -> 1150 bytes .../luci-static/bootstrap_blue/html5.js | 3 + .../luci-static/bootstrap_blue/mobile.css | 78 + .../luci-static/bootstrap_blue/wifi.png | Bin 0 -> 21597 bytes .../view/themes/bootstrap_blue/footer.htm | 54 + .../view/themes/bootstrap_blue/header.htm | 76 + .../uci-defaults/30_luci-theme-bootstrap-blue | 6 + .../lienol/luci-theme-bootstrap-mod/Makefile | 15 + .../luci-static/bootstrap_mod/cascade.css | 1592 ++++++++++++++++ .../luci-static/bootstrap_mod/favicon.ico | Bin 0 -> 1150 bytes .../htdocs/luci-static/bootstrap_mod/html5.js | 3 + .../luci-static/bootstrap_mod/mobile.css | 78 + .../htdocs/luci-static/bootstrap_mod/wifi.png | Bin 0 -> 21597 bytes .../view/themes/bootstrap_mod/footer.htm | 54 + .../view/themes/bootstrap_mod/header.htm | 76 + .../uci-defaults/30_luci-theme-bootstrap-mod | 6 + 18 files changed, 3653 insertions(+) create mode 100644 package/lienol/luci-theme-bootstrap-blue/Makefile create mode 100644 package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/cascade.css create mode 100644 package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/favicon.ico create mode 100644 package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/html5.js create mode 100644 package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/mobile.css create mode 100644 package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/wifi.png create mode 100644 package/lienol/luci-theme-bootstrap-blue/luasrc/view/themes/bootstrap_blue/footer.htm create mode 100644 package/lienol/luci-theme-bootstrap-blue/luasrc/view/themes/bootstrap_blue/header.htm create mode 100644 package/lienol/luci-theme-bootstrap-blue/root/etc/uci-defaults/30_luci-theme-bootstrap-blue create mode 100644 package/lienol/luci-theme-bootstrap-mod/Makefile create mode 100644 package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/cascade.css create mode 100644 package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/favicon.ico create mode 100644 package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/html5.js create mode 100644 package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/mobile.css create mode 100644 package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/wifi.png create mode 100644 package/lienol/luci-theme-bootstrap-mod/luasrc/view/themes/bootstrap_mod/footer.htm create mode 100644 package/lienol/luci-theme-bootstrap-mod/luasrc/view/themes/bootstrap_mod/header.htm create mode 100644 package/lienol/luci-theme-bootstrap-mod/root/etc/uci-defaults/30_luci-theme-bootstrap-mod diff --git a/package/lienol/luci-theme-bootstrap-blue/Makefile b/package/lienol/luci-theme-bootstrap-blue/Makefile new file mode 100644 index 0000000000..32d8297956 --- /dev/null +++ b/package/lienol/luci-theme-bootstrap-blue/Makefile @@ -0,0 +1,15 @@ +# Copyright (C) 2020 Lienol +# +# This is free software, licensed under the GNU General Public License v3. +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Bootstrap Blue Theme By Lienol +LUCI_DEPENDS:= +PKG_VERSION:=2 +PKG_DATE:=20200912 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/cascade.css b/package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/cascade.css new file mode 100644 index 0000000000..9765dcd98f --- /dev/null +++ b/package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/cascade.css @@ -0,0 +1,1597 @@ +html, +body { + height: 100%; +} + +body { + background: #ffffff; + color: #333; + font-family: Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.8; + margin: 0; + /* padding-top: 60px; */ + margin: unset; +} + +a { + color: #118af3; + text-decoration: none; + outline: 0; +} + +a:hover { + opacity: 1; +} + +h1, +h2, +h3, +h4, +h5, +h6, +p, +.cbi-map-descr, +.cbi-section-descr { + color: #19a4e6; + margin-top: 0; + margin-bottom: 10px; +} + +ul, +ol { + margin: 0; + padding: 0; + list-style: none; +} + +tr, +.tr { + display: table-row; +} + +legend { + color: #19a4e6; + font-size: 18px; + font-weight: bold; + padding: 0 0 3px; +} + +.left { + text-align: left !important; +} + +.right { + text-align: right !important; +} + +.center { + text-align: center !important; +} + +.top { + vertical-align: top !important; +} + +.middle { + vertical-align: middle !important; +} + +.bottom { + vertical-align: bottom !important; +} + +.pull-left { + float: left !important; +} + +.pull-right { + float: right !important; +} + +.inline { + display: inline; +} + +.hidden { + display: none; +} + + +/* Style */ + +.container:first-child { + /* min-height: 40px; */ + display: flow-root; +} + +.container { + max-width: 1080px; + margin: 0 auto; +} + +/* Header */ + +header { + font-size: 14px; + /* position: fixed; + top: 0; + left: 0; + right: 0; */ + background: #34aee8; + box-shadow: 0 2px 2px rgba(0, 0, 0, .1); + z-index: 100; + border-bottom: 2px solid #19a4e6; +} + +.brand { + float: left; + color: #ffffff; + font-size: 24px; + font-weight: 700; + line-height: 40px; + margin-right: 20px; + position: absolute; + left: 0; + margin-left: 20px; +} + + +/* .brand { display:none; } */ + +.brand:hover { + opacity: 1; +} + +.nav li { + float: left; +} + +.nav a { + display: block; + color: #fff; + line-height: 40px; + padding: 0 15px; +} + +.nav a:hover {} + + +/* Dropdown */ + +.dropdown { + position: relative; +} + +.dropdown:hover { + background-color: #0088cc; +} + +.dropdown:hover .dropdown-menu { + display: block; +} + +.dropdown-menu { + display: none; + position: absolute; + top: 40px; + background: #34aee8; + border-radius: 5px; + padding: 5px 0px; + z-index: 100; +} + +.dropdown-menu:before { + content: ''; + position: absolute; + top: -6px; + left: 27px; + border-bottom: 6px solid #00aaff; + border-left: 7px solid transparent; + border-right: 7px solid transparent; +} + +.dropdown-menu a { + color: #fff; + line-height: 30px; + min-width: 150px; + padding: 0 20px; + font-size: 14px; +} + +.dropdown-menu a:hover { + background: #118af3; + /* color: #3fc3ef; */ +} + +.cbi-dropdown { + display: inline-block; + width: 210px; + height: 30px; + padding: 4px; + font-size: 13px; + line-height: 18px; + color: #808080; + border: 1px solid #ccc; + border-radius: 3px; + box-sizing: border-box; +} + +.cbi-dropdown { + border: 1px solid #ccc; + border-radius: 3px; + display: inline-flex; + padding: 0; + cursor: pointer; + height: auto; + background: linear-gradient(#fff 0%, #e9e8e6 100%); + position: relative; + color: #404040; +} + +.cbi-dropdown { + /* min-width: 210px; */ + max-width: 400px; + width: 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, +.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; + /* color: #404040; */ + min-height: 20px; +} + +.cbi-dropdown>ul>li .hide-open { + display: block; + 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; +} + +.cbi-dropdown>ul>li input[type="text"] { + height: 20px; +} + +.cbi-dropdown[open] { + position: relative; +} + +.cbi-dropdown[open]>ul.dropdown { + display: block; + background: #f6f6f5; + border: 1px solid #918e8c; + box-shadow: 0 0 4px #918e8c; + position: absolute; + z-index: 1000; + max-width: none; + min-width: 100%; + width: auto; +} + +.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; +} + +.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: block; + 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; +} + +#maincontent.container { + margin-top: 10px; +} + + +/* Label */ + +.label { + border-radius: 10px !important; + display: inline-block; + background: #bbb; + border-bottom: 2px solid rgba(0, 0, 0, .05); + border-radius: 4px; + color: #fff; + font-size: 14px; + line-height: 24px; + text-transform: uppercase; + margin-top: 6px; + padding: 2px 9px; + cursor: pointer; +} + +.label.success { + background: #118af3; +} + +.label.notice { + background: #118af3; +} + +.label.important { + background: #f00; +} + +.label.warning { + background: #fc0; +} + + +/* Main */ + +h2 a { + color: #333; +} + +h2 a:hover { + opacity: 1; +} + +h2+.cbi-map-descr { + margin-top: -10px; +} + +.alert-message { + position: relative; + padding: 15px; + margin-bottom: 10px; + background: linear-gradient(to bottom, #fceec1, #eedc94) repeat-x; + /* border: 1px solid rgba(0, 0, 0, .1); + border-width: 2px 0; */ + border-radius: 2px; +} + +.alert-message>h4, +p { + margin: 0; +} + +.error, +.errorbox { + display: inline; +} + +.error { + color: #f00; +} + +.errorbox { + color: #3b3; +} + +#maincontainer { + box-shadow: 0 0 2px rgba(0, 0, 0, .3); + border-radius: 4px; + width: 500px; + margin: 120px auto 0; + padding: 30px; +} + +#syslog { + color: #111; + width: 100%; +} + + +/* Change List */ + +.uci-change-legend { + padding-top: 15px; +} + +.uci-change-legend-label { + float: left; + margin-right: 100px; +} + +.uci-change-legend-label>ins, +.uci-change-legend-label>del, +.uci-change-legend-label>var { + float: left; + width: 10px; + height: 10px; + margin-top: 3px; + margin-right: 6px; +} + +.uci-change-list { + font-family: monospace; +} + +.uci-change-list ins, +.uci-change-legend-label ins, +.uci-change-list del, +.uci-change-legend-label del, +.uci-change-list var, +.uci-change-legend-label var { + display: block; + text-decoration: none; + padding: 2px; +} + +.uci-change-list ins, +.uci-change-legend-label ins { + background: #cfc; + border: 2px solid #4f4; +} + +.uci-change-list del, +.uci-change-legend-label del { + background: #fcc; + border: 2px solid #f00; +} + +.uci-change-list var, +.uci-change-legend-label var { + background: #f2f2f2; + border: 2px solid #ccc; +} + +.uci-change-list var ins, +.uci-change-list var del { + border: 0; + white-space: pre; + padding: 0; +} + +.uci-change-legend-label var ins, +.uci-change-legend-label var del { + border: 0; + line-height: 6px; +} + + +/* Tabs */ + +.tabs, +.cbi-tabmenu { + border-bottom: 2px solid #34aee8; + margin-bottom: 20px; +} + +.tabs li, +.cbi-tabmenu li { + display: inline-block; +} + +.tabs a, +.cbi-tabmenu a { + display: block; + color: #19a4e6; + line-height: 34px; + margin-bottom: -2px; + margin-right: 20px; + padding: 0 3px; +} + +.active a, +.cbi-tab a { + border-bottom: 2px solid #111; + color: #111; +} + + +/* Fieldset */ + +fieldset { + border: 0px; + margin: 10px 0; + padding: 0; +} + +fieldset fieldset { + margin: 0; +} + +.cbi-value { + margin-bottom: 1em; + zoom: 1; + clear: both; +} + +table .cbi-value-field, +.table .cbi-value-field { + display: table-cell; +} + +.cbi-value-title { + /* white-space: nowrap; + overflow: hidden; + text-overflow: clip; */ + display: table-cell; + padding-top: 0.4em; + line-height: 1.2em; + float: left; + width: 13em; + margin-right: 1.5em; + text-align: right; + color: #404040; +} + +.cbi-value-field { + color: #811; + display: table-cell; +} + +.cbi-section-table-cell { + white-space: nowrap; +} + +.cbi-section-create { + margin: -3px; + display: inline-flex; + align-items: center; +} + +.cbi-section-create>* { + margin: 3px; + flex: 1 1 auto; +} + + +/* Table */ + + +/* .cbi-section table tbody tr:nth-child(odd) { background-color: #fdfdfd; } */ + +table, +.table { + width: 100%; + display: table; + margin: 0 0 10px !important; + border-radius: 5px; + /* border: 1px solid #a9b1bb26; */ + border-collapse: collapse; + position: relative; +} + + +/* table tr:first-child, .table .tr:first-child { border-top: 1px solid #b0e6b9; } */ + + +/* table tr, .table .tr { border-bottom: 1px solid #b0e6b9; } */ + +table th, +table td, +.table .th, +.table .td { + color: #811; + padding: 3px !important; +} + +table tr+tr td, +.table .tr+.tr .td { + border-top: 1px solid #a9b1bb26; +} + +table th, +.table .th { + text-align: left; + font-weight: bold; +} + +table td:first-child, +.table .td:first-child { + color: #127; +} + +.table[width="33%"], +.th[width="33%"], +.td[width="33%"] { + width: 33%; +} + +.table[width="100%"], +.th[width="100%"], +.td[width="100%"] { + width: 100%; +} + +.table .th, +.table .td { + display: table-cell; + vertical-align: middle; +} + +.table .tr.placeholder { + height: calc(3em + 20px); +} + +.table .tr.placeholder>.td { + position: absolute; + left: 0; + right: 0; + bottom: 0; + text-align: center; + line-height: 3em; +} + +.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>*>.cbi-button-up, +.cbi-input-up { + /* background: unset; */ +} + +.td.cbi-section-actions>*>.cbi-button-down, +.cbi-input-down { + /* background: unset; */ +} + +#cbi-network .tr, +#cbi-wireless .tr, +.tr .tr:first-child, +#cbi-network tr, +#cbi-wireless tr, +tr tr:first-child { + border-top: 0; +} + +#cbi-network .tr, +#cbi-wireless .tr, +.tr .tr, +#cbi-network tr, +#cbi-wireless tr, +tr tr { + border-bottom: 0; +} + +#cpu_free, +#memtotal, +#memfree, +#memcache, +#membuff, +#conns, +#swaptotal, +#swapfree { + line-height: 18px; +} + +#cpu_free>div, +#memtotal>div, +#memfree>div, +#memcache>div, +#membuff>div, +#conns>div, +#swaptotal>div, +#swapfree>div { + border: 1.5px solid #bbb !important; + border-radius: 5px; + width: 240px !important; +} + +#cpu_free>div>div, +#memtotal>div>div, +#memfree>div>div, +#memcache>div>div, +#membuff>div>div, +#conns>div>div, +#swaptotal>div>div, +#swapfree>div>div { + background: #00adff7a !important; + height: 18px !important; + border-radius: 3px; +} + + +/* Form */ + +input, +textarea, +select { + display: inline-block; + width: 16em; + padding: 0.4em; + border: 1px solid #118af3; + border-radius: 5px; + box-sizing: border-box; + color: #111; + font: inherit; + line-height: 18px; +} + +table.cbi-section-table input, +table.cbi-section-table textarea, +table.cbi-section-table select, +.table.cbi-section-table input, +.table.cbi-section-table textarea, +.table.cbi-section-table select { + width: auto; +} + +#cbi-network-switch_vlan select, +#cbi-firewall-zone select, +#cbi-firewall-redirect select { + width: auto; +} + +input:active, +input:focus { + outline: 0; + border-color: #118af3; +} + +input[type=file]:focus, +input[type=checkbox]:focus, +textarea:focus, +select:focus { + outline: 0; +} + +input[type=button], +input[type=reset], +input[type=submit], +button { + width: auto !important; +} + +input[type=checkbox], +input[type=radio] { + width: auto; + margin: 0; + vertical-align: middle; + cursor: pointer; +} + +input[type=file] { + padding: 0; + border: 0; +} + +.cbi-input-invalid, +.cbi-value-error input { + color: #f00; + border-color: #f00 !important; +} + +.cbi-image-button { + margin: 10px 8px; + vertical-align: middle; +} + +.uneditable-input { + background: #fafafa; + border-color: #f2f2f2; + color: #ccc; + cursor: not-allowed; +} + +.uneditable-input:active, +.uneditable-input:focus { + border-color: #f2f2f2; +} + +.cbi-value-description { + /* display: inline; */ + background-image: url(/luci-static/resources/cbi/help.gif); + /* background-position-x: 0px; + background-position-y: 1px; */ + background-position: 0em 0.3em; + background-repeat: no-repeat; + padding: 0 1.2rem; +} + +.cbi-value-description img { + display: none; + vertical-align: sub; +} + +.cbi-page-actions { + text-align: right; + padding: 10px 0px; +} + +.cbi-page-actions.right { + float: inherit; +} + + +/* Button */ + +.btn, +.cbi-button, +button { + border-radius: 6px !important; + display: inline-block; + background: #fff; + border: 1px solid #118af3; + border-radius: 2px; + box-shadow: 0 2px 2px rgba(0, 0, 0, .05); + color: #333; + line-height: 16px; + padding: 0.5em; + cursor: pointer; + margin-left: 0.2em; +} + +.btn:active, +.btn:focus, +.cbi-button:active, +.cbi-button:focus, +button:active, +button:focus { + border-color: #bbb; +} + +/* +.cbi-button-up, +.cbi-input-up { + background-position: center; + background-image: url('../resources/cbi/up.gif'), linear-gradient(#ffffff, #ffffff 50%, #e6e6e6); + background-repeat: no-repeat; + padding-left: 15px; + padding-right: 15px; +} + +.cbi-button-down, +.cbi-input-down { + background-position: center; + background-image: url('../resources/cbi/down.gif'), linear-gradient(#ffffff, #ffffff 50%, #e6e6e6); + background-repeat: no-repeat; + padding-left: 15px; + padding-right: 15px; +} +*/ + +.cbi-button-add, +.cbi-input-add { + background: #19a4e6; + border-color: #19a4e6; + color: #fff; +} + +.cbi-button-add:active, +.cbi-button-add:focus, +.cbi-input-add:active, +.cbi-input-add:focus { +} + +.cbi-button-remove, +.cbi-input-remove, +.cbi-section-remove input { + border-color: red; + background-color: red; + color: #fff; +} + +.cbi-button-remove:active, +.cbi-button-remove:focus, +.cbi-input-remove:active, +.cbi-input-remove:focus, +.cbi-section-remove input:active, +.cbi-section-remove input:focus { +} + +.cbi-button-reload, +.cbi-input-reload { + background: rgb(148, 143, 225); + border-color: rgb(148, 143, 225); + color: #fff; +} + +.cbi-button-reload:active, +.cbi-button-reload:focus, +.cbi-input-reload:active, +.cbi-input-reload:focus { +} + +.cbi-button-reset, +.cbi-input-reset { + background: #6bde84; + border-color: #6bde84; + color: #fff; +} + +.cbi-button-reset:active, +.cbi-button-reset:focus, +.cbi-input-reset:active, +.cbi-input-reset:focus { +} + +.cbi-button-edit, +.cbi-input-edit { + background: #ff7700; + border-color: #ff7700; + color: #fff; +} + +.cbi-button-edit:active, +.cbi-button-edit:focus, +.cbi-input-edit:active, +.cbi-input-edit:focus { +} + +.cbi-button-apply, +.cbi-input-apply { + background: rgb(0, 171, 232); + border-color: rgb(0, 171, 232); + color: #fff; +} + +.cbi-button-apply:active, +.cbi-button-apply:focus, +.cbi-input-apply:active, +.cbi-input-apply:focus { +} + +.cbi-button-save, +.cbi-input-save { + background: rgb(148, 143, 225); + border-color: rgb(148, 143, 225); + color: #fff; +} + +.cbi-button-save:active, +.cbi-button-save:focus, +.cbi-input-save:active, +.cbi-input-save:focus { +} + +/* LuCI 18 DynamicList */ +input[type="text"] + .cbi-button, +input[type="password"] + .cbi-button, +select + .cbi-button { + padding: 4px 8px; +} + + +/* Input Error */ + +.cbi-section-error { + background: #fee; + border: 2px solid #f00; + padding: 10px; +} + +.cbi-section-error ul { + padding-left: 20px; +} + +.cbi-section-error ul li { + color: #f00; + list-style: disc; +} + + +/* Interface */ + +.ifacebox { + text-align: center; + margin-right: 60px; +} + +.ifacebox .ifacebox-head { + border-bottom: 1px solid #ccc; + padding: 2px; + background: #eee; +} + +.ifacebox .ifacebox-head.active { + background: #85d8ff; +} + +.ifacebox .ifacebox-body { + border: 2px solid #f2f2f2; + border-top: 0; + border-radius: 0 0 4px 4px; + padding: 2px 10px; +} + +.network-status-table .ifacebox-body { + display: flex; + flex-direction: column; + height: 100%; + text-align: left; +} + +.network-status-table .ifacebox { + margin: .5em; + flex-grow: 1; +} + +.ifacebox .ifacebox-body { + padding: .25em; +} + +.ifacebox { + background-color: #fff; + border: 1px solid #ccc; + margin: 0 10px; + text-align: center; + white-space: nowrap; + background-image: linear-gradient(#fff, #fff 25%, #f9f9f9); + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + border-radius: 4px; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + display: inline-flex; + flex-direction: column; + line-height: 1.2em; + min-width: 100px; +} + +.ifacebadge { + display: inline-block; + flex-direction: row; + white-space: nowrap; + background-color: #fff; + border: 1px solid #ccc; + padding: 2px; + background-image: linear-gradient(#fff, #fff 25%, #f9f9f9); + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + border-radius: 4px; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + cursor: default; + line-height: 1.2em; +} + +.ifacebadge.large, +.network-status-table .ifacebox-body .ifacebadge { + display: inline-flex; + flex: 1; + padding: .25em; + min-width: 220px; + margin: .125em; + float: left; +} + +.ifacebadge img { + width: 16px; + height: 16px; + vertical-align: middle; +} + +.ifacebadge>*, +.ifacebadge.large>* { + margin: 0 .125em; +} + +.ifacebadge>*, +.ifacebadge.large>* { + margin: 0 .125em; +} + +.network-status-table { + display: flex; + flex-wrap: wrap; +} + +.cbi-tooltip { + position: absolute; + z-index: 1000; + left: -10000px; + box-shadow: 0 0 2px #ccc; + border-radius: 3px; + background: #fff; + white-space: pre; + opacity: 0; + transition: opacity .25s ease-in; + padding: 2px 5px; +} + +.cbi-tooltip-container { + /* cursor: help; */ +} + + +/* Firewall */ + +.zonebadge { + display: inline-block; + border-radius: 4px; + color: #333; + white-space: nowrap; + padding: 0 8px; + cursor: pointer; +} + +.zonebadge em, +.zonebadge strong { + margin: 0 5px; +} + +.zonebadge-empty { + border: 2px dashed #ddd; + color: #ddd; + font-style: italic; +} + +.zone-forwards { + display: flex; + flex-wrap: wrap; +} + +.zone-forwards .zone-src, +.zone-forwards .zone-dest { + display: flex; + flex-direction: column; +} + +.zone-forwards>span { + flex-basis: 10%; + text-align: center; +} + +.zone-forwards>* { + flex: 1 1 40%; + padding: 1px; +} + + +/* Footer */ + +footer { + border-top: 1px solid #34aee8; + color: #111; + text-align: center; + padding: 10px 0; + margin-top: 10px; +} + +footer a { + color: #118af3; +} + +footer a:hover { + color: #fff; +} + + +/* diy */ + +#wan4_i, +#wan6_i { + vertical-align: top; + width: 50px !important; +} + +/* login */ +body.node-main-login { + /* background: url(bg.jpg); */ + background: linear-gradient(#8f97f59e,#22b9a4); + background-repeat: no-repeat; + background-size: 100% 100%; + -moz-background-size: 100% 100%; + padding-top: unset; +} + +body.node-main-login>header { + background: none; + border-bottom: none; +} + +body.node-main-login .alert-message { + z-index: 999; +} + +.node-main-login>.container>form { + width: 20rem; + display: inline-block; + padding: 1rem 1rem; + border-radius: .375rem; + text-align: center; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.node-main-login>.container>form .errorbox { + color: red; +} + +.node-main-login>.container>form>.cbi-map>h2 { + width: 100px; + height: 100px; + color: #fff; + text-align: center; + letter-spacing: 4px; + display: block; + margin: -100px auto 15px auto; + padding: 0; + text-indent: -500px; + overflow: hidden; + border-radius: 60px; + /* border: #118af3 3px solid; */ + background-image: url(wifi.png); + background-size: cover; + /* box-shadow: 0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(156, 39, 176, 0.4); */ +} + +.node-main-login>.container>form input[name='luci_username'], +.node-main-login>.container>form input[name='luci_password'] { + background: unset; + color: #000; +} + +.node-main-login>.container>form>.cbi-map>.cbi-section { + display: inline-block; +} + +.node-main-login>.container>footer { + position: absolute; + top: 40%; + left: 50%; + transform: translate(-50%, -50%); + width: 100%; + margin-top: 60px; + display: none; +} + +.node-main-login>.container>form .cbi-page-actions { + text-align: center !important; +} + +/* luci18 */ +.cbi-section-table-titles.named::before { + content: attr(data-title) " "; + display: table-cell; + padding: 5px 3px !important; + line-height: 18px; + font-weight: bold; + vertical-align: middle; + color: #811; +} + +.cbi-section-table-descr.named::before { + content: attr(data-title) " "; + display: table-cell; + padding: 10px 10px 9px; + line-height: 18px; + font-weight: bold; + vertical-align: middle; +} + +.cbi-section-table-row[data-title]::before { + border-top: 1px solid #a9b1bb26; + content: attr(data-title) " "; + display: table-cell; + padding: 10px 10px 9px; + line-height: 18px; + font-weight: bold; + vertical-align: middle; +} + +/* luci 19 */ +body.modal-overlay-active { + overflow: hidden; + height: 100vh; +} + +body.modal-overlay-active #modal_overlay { + visibility: visible; + left: 0; + right: 0; + opacity: 1; +} + +body.modal-overlay-active #modal_overlay>.modal { + align-items: center; + box-shadow: 0 0 3px #444; + display: flex; + flex-wrap: wrap; + max-height: unset; + max-width: unset; + min-height: 32px; + min-width: 270px; + /* background: linear-gradient(to bottom, #fceec1, #eedc94) repeat-x !important; */ + border-radius: 3px; + padding: 1em; + margin: 0; + position: absolute; + top: 15%; + left: 50%; + transform: translate(-50%, -15%); +} + +#modal_overlay { + visibility: hidden; + position: fixed; + top: 0; + bottom: 0; + left: -10000px; + right: 10000px; + background: rgba(0, 0, 0, 0.7); + z-index: 900; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + transition: opacity .125s ease-in; + opacity: 0; +} + +#modal_overlay>.modal.uci-dialog, +#modal_overlay>.modal.cbi-modal { + max-width: 900px; +} + +/*.modal.alert-message.notice { + position: absolute; + padding: 15px; + margin-bottom: 10px; + background: linear-gradient(to bottom, #fceec1, #eedc94) repeat-x; + border: 1px solid rgba(0, 0, 0, .1); + border-width: 2px 0; +}*/ + +.modal>* { + flex-basis: 100%; + /* line-height: normal; */ + margin-bottom: .5em; + max-width: 100%; +} + +#modal_overlay .modal>* { + flex-basis: 100%; + /* line-height: normal; */ + margin-bottom: .5em; +} + +[data-tab-title] { + height: 0; + opacity: 0; + overflow: hidden; +} + +[data-tab-active="true"], +.cbi-filebrowser.open { + height: auto; + opacity: 1; + overflow: visible; + transition: opacity .25s ease-in; +} + +.tabs>li:not(.active), +.cbi-tabmenu>.cbi-tab-disabled { + color: #999; +} + +.cbi-dynlist { + height: auto; + min-height: 30px; + display: inline-flex; + flex-direction: column; +} + +.cbi-dropdown:not(.btn):not(.cbi-button), +.cbi-dynlist { + min-width: 210px; + max-width: 400px; + width: auto; + background: white; + /* border: 1px solid #118af3; */ + border-radius: 5px; + box-sizing: border-box; + /* padding: 0 0.4em !important; */ +} + +.cbi-dynlist>.item { + margin-bottom: 4px; + box-shadow: 0 0 2px #ccc; + background: #fff; + border: 1px solid #118af3; + border-radius: 3px; + position: relative; + pointer-events: none; + padding: 2px 2em 2px 10px; +} + +.cbi-dynlist>.item::after { + content: "×"; + position: absolute; + display: inline-flex; + align-items: center; + top: -1px; + right: -1px; + bottom: -1px; + border: 1px solid #ccc; + border-radius: 0 3px 3px 0; + font-weight: 700; + color: #c44; + pointer-events: auto; + padding: 0 6px; +} + +.cbi-dynlist>.add-item, +.td.cbi-section-actions>* { + /* display: flex; */ +} + +.cbi-dynlist>.add-item>input, +.cbi-dynlist>.add-item>button { + flex: 1 1 auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.cbi-dropdown.btn>.open, +.cbi-dropdown.cbi-button>.open { + margin-left: .5em; + border-left: 1px solid; + padding: 0 .5em; +} + +.cbi-dropdown.btn>ul:not(.dropdown), +.cbi-dropdown.cbi-button>ul:not(.dropdown) { + margin: 0 0 0 13px !important; +} + +.btn.primary, +.cbi-button-action.important { + color: #fff; + background: #118af3; + border: 1px solid #118af3; +} + +.cbi-dropdown { + display: inline-flex !important; + cursor: pointer; + height: auto; + position: relative; + padding: 0 !important; +} + +.cbi-progressbar { + border: 1px solid #ccc; + border-radius: 3px; + position: relative; + min-width: 170px; + height: 20px; + background: #f9f9f9; + margin: 4px 0; +} + +.cbi-progressbar>div { + background: #85d8ff; + height: 100%; + transition: width .25s ease-in; + width: 0%; +} + +.cbi-progressbar::after { + position: absolute; + bottom: 0; + top: 0; + right: 0; + left: 0; + text-align: center; + text-shadow: 0 0 2px #fff; + content: attr(title); + white-space: pre; + overflow: hidden; + text-overflow: ellipsis; +} + +header [data-indicator] { + padding: 1px 3px 2px; + font-size: 9.75px; + font-weight: bold; + color: #fff !important; + text-transform: uppercase; + white-space: nowrap; + background-color: #bfbfbf; + border-radius: 3px; + text-shadow: none; + margin-left: .4em; +} + +header [data-indicator][data-style="active"] { + background-color: #62cffc; +} \ No newline at end of file diff --git a/package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/favicon.ico b/package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..77a138ba0c53da3f891857646887710d4b472fdd GIT binary patch literal 1150 zcmZQzU<5(|0R}M0U}0bo1F|%L7$l?s#Ef7P$NwD5 zyD&e$2Aer)Damoz)Z-BQhHeH9btry7RT$l_@13qXDgni$+neEMN>FdArv z0lGQBFs%lPtwI-v>Tv?n|DhPfWM1mmXwsh<2>{OOVxp*g!w@ zqKiTG6Xkx8S{(YJ#vmwkbwIoQ(e*=B!~Bd+gY5bTGY4TZ#0^ONRX{enUXU0V0QLV( zPE1sV@sVhl9&mgiiG!HP;ejTF!iAZEi$+n5hl8yD3NCej>=_t7@G~$xU}j)Az{tSR l0L0A?85r0SfW?IY1cTV^K(P)%28J8b3=GeoL-c_30szk#m9qc< literal 0 HcmV?d00001 diff --git a/package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/html5.js b/package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/html5.js new file mode 100644 index 0000000000..1ec510f2a4 --- /dev/null +++ b/package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/html5.js @@ -0,0 +1,3 @@ +// HTML5 Shiv v3 | @jon_neal @afarkas @rem | MIT/GPL2 Licensed +// Uncompressed source: https://github.com/aFarkas/html5shiv +(function(a,b){function f(a){var c,d,e,f;b.documentMode>7?(c=b.createElement("font"),c.setAttribute("data-html5shiv",a.nodeName.toLowerCase())):c=b.createElement("shiv:"+a.nodeName);while(a.firstChild)c.appendChild(a.childNodes[0]);for(d=a.attributes,e=d.length,f=0;f7?e[g][e[g].length-1]=e[g][e[g].length-1].replace(d,'$1font[data-html5shiv="$2"]'):e[g][e[g].length-1]=e[g][e[g].length-1].replace(d,"$1shiv\\:$2"),e[g]=e[g].join("}");return e.join("{")}var c=function(a){return a.innerHTML="",a.childNodes.length===1}(b.createElement("a")),d=function(a,b,c){return b.appendChild(a),(c=(c?c(a):a.currentStyle).display)&&b.removeChild(a)&&c==="block"}(b.createElement("nav"),b.documentElement,a.getComputedStyle),e={elements:"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video".split(" "),shivDocument:function(a){a=a||b;if(a.documentShived)return;a.documentShived=!0;var f=a.createElement,g=a.createDocumentFragment,h=a.getElementsByTagName("head")[0],i=function(a){f(a)};c||(e.elements.join(" ").replace(/\w+/g,i),a.createElement=function(a){var b=f(a);return b.canHaveChildren&&e.shivDocument(b.document),b},a.createDocumentFragment=function(){return e.shivDocument(g())});if(!d&&h){var j=f("div");j.innerHTML=["x"].join(""),h.insertBefore(j.lastChild,h.firstChild)}return a}};e.shivDocument(b),a.html5=e;if(c||!a.attachEvent)return;a.attachEvent("onbeforeprint",function(){if(a.html5.supportsXElement||!b.namespaces)return;b.namespaces.shiv||b.namespaces.add("shiv");var c=-1,d=new RegExp("^("+a.html5.elements.join("|")+")$","i"),e=b.getElementsByTagName("*"),g=e.length,j,k=i(h(function(a,b){var c=[],d=a.length;while(d)c.unshift(a[--d]);d=b.length;while(d)c.unshift(b[--d]);c.sort(function(a,b){return a.sourceIndex-b.sourceIndex}),d=c.length;while(d)c[--d]=c[d].styleSheet;return c}(b.getElementsByTagName("style"),b.getElementsByTagName("link"))));while(++c.pull-right>* { + position: absolute; + right: 0.5rem; + cursor: pointer; + } +} + +@media screen and (max-width: 1024px) { + body { + font-size: 12px; + } + + header { + font-size: 13px; + } + + legend { + font-size: 14px; + } + + .dropdown-menu a { + font-size: 13px; + min-width: 130px; + padding: 0 15px; + } + + .mobile-hide { + display: none; + } + + #maincontent.container { + padding: 0px 10px; + } + + div.cbi-section, + fieldset { + min-width: inherit; + overflow-x: auto; + overflow-y: hidden; + } + + .cbi-value {} + + .cbi-value-title { + width: 30%; + min-width: 0rem !important; + margin-right: 1em; + /* text-align: left; + padding-left: 1em; */ + } + + .cbi-value-field { + width: 55%; + } + + .cbi-value-description { + width: 75%; + display: inline-table; + padding: 1px 1.2rem; + background-position-y: 3px; + } + + .cbi-value-field .cbi-input-select, + .cbi-value input[type="password"], + .cbi-value input[type="text"] { + min-width: unset; + /* width: 95%; */ + } +} \ No newline at end of file diff --git a/package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/wifi.png b/package/lienol/luci-theme-bootstrap-blue/htdocs/luci-static/bootstrap_blue/wifi.png new file mode 100644 index 0000000000000000000000000000000000000000..629594f82484949c6f1161ff1be88253308197c4 GIT binary patch literal 21597 zcmeHvX&{vQ8@5U$MNvsYg%n983B$C>9$Cv?$QBdAFqq;+);8X8392%I21?cm+E z^C08Z{YG5}EKKcMTZFb8^IZ;=@8-Q_uM-F8V(@HPP~mF;l(uGuKl(SD>3$ z)55d$%JfU{q0LLWp2xOhC{#axYV7nS(&x&JOBAi&z^)JeSiO|SH!kk$zj5i`%zn*} zkBr7FEwC*{SNym$Y4gsGrG>r!`qApO-oOVvuJtj=>Lo22>AC{d4772f7GS+I0Zd?v zW&d>k!{^GX_xyS)+v?1*Gw}?sy`kTib_2h&3~mlFvb`6ZXLk&~{SCSsvd%pFh9(_v zTK&j%Yp?;pa~bD_7Q{1IYOq@@y#azQZ!0=f=+#G_HyLW5W zwnzr(ZaD!$49Ao67ccSAFT@B);296g6_@f22o{gpdAQC|+{V zqW6L@!+IQLy&wK+YuXP9#Azf&Z$gZcjqXMcP?*)MSX;Zc#K?2q?%cLh5vSW?Ii4^C z1#QU4#AQr&jWaO$10FXAfti|btyGQs%{@{aPo_P!X?$|m&v7t-e?9TKOp1d6Qa)&! zY{e{@GO=@OKNeAMPH!U|G+45_#ej-RXKeoQY1hR-#?OgTh?xN$%N_wGLe1tTWpU-@ zJ;OvWKzC6$hZs!Ez+r(wFv2%Cz7Sf)4Z8nWMNkWk1W#T0@q@JdD(s99L(1YmzFX5s@eN;JKz~5_`*! zSp@H;no#lvrcueXWhv59DecMB!+TqMbQhrk-+Pk5?}DF!_V#^mwj^R=Z5iqy$bh(p z+2xtSXtw9q8a^Moxm_~>GCh!Fwd>~gLFCUTxO0iX|2J}x)0bx7R4<{PY;7)r>!J`t z`LzIQ1Iv?6r^sVlpLRfmGOR9EJ5%D))L@J(Ki0Bo*(a(4I4un9Te3Qj$nS@xFg_U! z+1&X<*$j5E|4=LSPFmDu8k4 zPbp%Cha@w8evEkZQ$`;Xq?$;zi42pFl^HkM)vZ~4su)O5Tro^2TtZVHBzhD1&n1Yd zZS7J0;#778;~UKsO*<8a?OXda0z&g)f*3z*PjWv6#3=CXuQfd1r^Jx9s7`?`?Ws^= zApd&8dqfw z^rqm!N?QwfX%)8I>YctAMeQ7zZJnd;NXhlv(nnVA@)XI}3A3H>tJxmsxqbB_j8j&v&Dm25h90z`$U4F7$6bD1A`FTeljHe)cMZXfU_NV=%w{jE6L0 z@-CkWars6|&$Q-AWUVNdiX};^%&A*Rq?4<5wBsMGo;oF&LL;h?APpCzBtm+0xgQ2U z(=0T;FwiL!MM?9fw%E-WMity>DVw-?p{I61B4oFVwf_xS60#O8f$CT1NiQmgLJJni z9w0!^YrM5$1SI|3Ge8fCmT}1~Vq=ZZmOJ;1#<0WR-orX0J20joS!~X1O=yH`F5@t> z&?)h7GfE1%xVc3%q5rU*Y5sX^xf3CoTDU$J6?6~Q!xU-pZ6GnkA_vZ5m4nt%R=F4{ zD-mYktkW9E%-&6$orz81cljE;#05g_Ck7q{^k@583RTYInVBF1-5g{?#UJM%(saYe z;d^qU*%`m8;h$>exLIc8Pf(iob|g*ayOiyR%($PA#goDXWlu*Q`$u*i%wuobnPoaj)F%Ycvf={4pG0UG-Yk?`Tu?bp0D2&*lnC?4oH&?0WkcPZPWs zdphKB`4P;h>v=x$@4)NMxc_o1pkn$gfJb07nwmP3AYKG>bH`E+7CR^K+#190M&{}F z9m%MlO8t5)z60^HFr(=0J*q0#rAE)mMN+~A;al+P%HA|9K?W*n-iVeW(#m%gka>jX zfCCui=rnRr!>i1JI;>-Se~r@IfyigHlXaKlv3NQXut1}Tv^3Lvtz`;ndE-HnOI9G% zQ#6;!)-mezxKMRe)r#1AK*<4x z(@;$CWxFQ{hfRa8_*DCGoWe)66SFyuL|b{fdR}*UpRn6q&KFmDrfFgaJ0_3Gtn>sL zIM_8%9w`TYPQ!By4_^gvjC0=>x-AB#JyIMnx$xTb zq@Oiks11d-Z_oU*yk}QLgzDh5d{p_ROP?H=LiV!BT4yCEq$WwJIvKcy<1B zp_|X=xXBa^p9s!YJyUiXF}W^W!3ud?&+Udj#w^hIGT%jg zh<Ru)7UJZCm1X2X?Ou+$ zq3y+$o-1^iopAH~D$fLERD)qjinLrxI~EkAucC2qGW6>FeHOAYBQvNIn%O^B%~?sNiG zzWnYly>zoLd1`hlEb2XJb+~PeQi&61cA1${nI$(q5cVpiDcGyi!G!i}wyR2aX z3zsv@fM-O*J9`!#F80HWN9(Z4f%?#$s5i-yfH(R1I-#b1g4d&A?d^IoCh?#>4u6mS z4I%O5GI2Xb@8eec)b63a^ggq)Cn8R7JGMGv-!41arCQyIfz8KT8+M8S69L6RMfQIi z_2#=pRDXc_B3dVUiO|{=IVX9M_O`?kuZmRU>=)(soF~jq*9OPst#IZqN6oW`2>8rD zn^10-mkymvZ@$rapUD&ivV!K=4GuWH(G&4*pBdq%0p|*OedP;pv4($mS%}2y@Q`$y z>PopuXU^(N%B>hqD>B_lKS+N0z7v18CK_8c7~rpe+{91=Qi+;?KN{@3#a+MZ51gUi zVbQh}1!mh&tGvB?0Lv6P;TPs5t`swbk)RF%=A5bgKC2$7GG=zq>0T0(uMnTf7%azp zu<6c)LeUX^zMv63jYF$`GI`l`e8Z7@qM%TGugod9>nxz_6|1$0n;z_J-F%xfRcv}$ z;?D3;aTCvFt2Y9qghmZM3s5E$bBY2fR?>V@?OK4$@rqoY=>`Lz;X^nw&YMp&YE)}? zGXC;&T|Wr7QbKiBpzcirHD)jT{R`XmRY)3w{ceqUt%uqq5PHA6z`gD!AGCW;B7pr`WUR!nKO*NGm}#~!%BYE6?N6R6ynPt4UYyxzTMb${5Z;u&|QMjJ9 z6hm%Gbc^56qA-65ADq^nsj+u!txj`V0=wuJb-INuml}CaXzydGEJI7pt zQ3j*Ss*)plsWh9J;_{{y!Q-CV#)i(c`<|}ve^&?vl(O}9c`$Jb1+8qLHFD5M?#VuKEUTfR8N~^BtGhmWlS5 z!dxdDdYHj?IsBafaqn{1^>yNarQS^95*P*@3S9X*p1WkWFtzu}T}W-tHsL zRCwF-W*UCh@^%6vd9Jp(7UnR6e@+FdY3y$Qu#o>&ji#LQYQ82%iz4m*&&Q`!kcT3h zDjIB>x%UmYx97i+(m)oXp_OV8=Y~EE!673c{o9M5%!M*-nQjkPK9lj|Zg)KdadPBui>~0t7$evg6^@ z-QF@Fw%A2=U1}SWi|ONznsYkb_i|x0h9Z(LE+1vGn7^UZDVSnxQ4{rzV7+NrjYQ|S zj@q;G`~ow|jW6P^FGdF^(WJj`=t_aPR4;7Kn^`@kr2T|8J(SMMZQYBf`Xi*BOJBe z9M93K@^`a02=)+w4jwFLG7BX(-w zZ?HA9KfXse)uN4A65yqPzqt{w(kewqB~41bGa9~l>38fU`(k<@fg}UE;i+k3S7?Bi zx3B62V!igy+l547B<{e1r7(lUJstLX(~+$-zyK>`%_h9(t4-D3zlJ(EQ5#riAFf?r z(@Fy@$Vu^zg_hv!24flosojeYpXZ-Ni^du`M~DR9pjGnN%)Jr_?!A4G|7HFev_kMr z@907BMR9CF4s0P1M)Rjyg=|L9au-YlKRM~^-ioR)KXq`;!z1~!#!MDhUpWtj9g>H# zndm=v_m&h&X?jW2W}-8G2+Ivr8J! zFDXwSkY49U*n`{)#Cl!O#|%~HPC-v`Nx0FLwaRdM1-n~lHwAyCm|Sg8Q;Ph>zDKQ{ zQj;sbjQRS5oV|pxCBvQJ5BlJ{DC`(KqG4P;^upH|v0LJTtC0Fq*eNU9?=%&T-%@^j z<;3Q2t7pj{F>}xdcL;f(9t!sNqI%gO@eTgG7#nQY*Am|MC8O>hHa0$RZ%FMw7Oqz7 zrgweN`e0n43}gyUX_N<21ZFaZudC0t^p3?3sIwqp`~s^JUYVL!d}=n{W_$QuK{c?P z%et<__+y5!M4{D*d95Bht@ksnOX&T}|5g9SC@IHkFdJJkOn?5~fSx@iapJ4`Q{7jCrrfs$8UN!p zIaCvzsd@%y5eo@OrA~|Lmann?ATcpx6pK~>}!M(-y}i5_X|p-l3Di@YyTEbsiD z=9p!NZbTJXmQ{_6Gkz{CWBCS3(~kEP4D&P6Xb7g0JGE~0>ZO|aRDR#E|HD8K6RJbo){NG4S|e&Po=UBDbuC z#MZ)LhSc7fw-%=8h&v_%Zl=b7XLlmCf&fKj&Oo&0@$ADCqxd{Qr|9~gpw=WC-0M3s zFl$hFuceU{{L$iF-Ym#|MBZCl{d~#bOyBi%m*hjrSv?_Ct%zTF-YWOfcv7$N@CyXj zF6#6kJIkr5zS-~X22ZH>`?YaGuy;gV#g@AB)m-0vKBQZ)b|=19PmH|O*j`#*{lwOeyky5~vs$juveAWHCTY$`o~e$g6`m zprC%)il4_pUm|<80NbE%eMCj96=ut0^}eGSTegb{5-Or3zN|blFpq<@3FbE=I~3^^ESeNkXegk1Xpv z5v|sq;dIid_g>@gY=lkao#yKQlug}L(e7Iu%fxP(BVJO5{w5RQ{9KWdc6<3`ljp3` z-8Tyo4}ZqF=kqg3^edA8n?Q5k9biLnpBE}nU16TDJvC(Bl3BMN|Bvc1U<*bVN+A7E15NPRvc>Y;TZrD^1pHp%Dt+44EVS=oEoLfb_7qkUt& z`Rr#56d$>`G>b^X<=v1nN$=$I(+XOAd6sB{QRTeXmA4xm`I$DAVxrktk&AB2 zE2a18!b)d4s#oxuLdK@LVAJ-G(KX!lyPiP}&mL=QGf$kkp3qZqFh5_dU=Lf{`;R%$ ze4ngr&kn;>)ttsbNIWqdyzTqIZ08)+*TKl_c4rB>FpK*Pr}50p1d5PQ7H6fS`*k_8 zLOf!M_A-NwmMd~w?cCQ~*OaFPO54A=i?C!x48BPdO*7_jC@D|tyI27afa2RVNSRHB z>!$Er4WP*Ly6KRsIsx*~d&${>`%L?ZRAccXuR@iga+d_k^7OG2#l5EL=e~+|Xd8OX z7(`JVh8q;+4Oy7EQ+-p~&iJQ`Fr_#N?;|tIB~p*5G3>V7ou9&ZY_Om`a>!zCK-Bx= zL!7s%*kKuh9Wu~m-F7ksv_j_*Ikt~a|4&GzFbd($t7zFS_pg;*nS#dobO z+k19?kQE1VYGP%NS4^aLuXElyN^9Fb_$X(tS*5%@?R6Y$VGdA|07F2X=+wGA#qW_7 z@MGH!UpCIjkwF`bp?iy^)LeR&pBH4?X({6B-X*)ST!ID@fRwv>{PN`fTRgNBNk~Sh zAZhw#S^0~x!jea#upgBlM`wb*Y0l-7x_6l^&rn{7uus3AIe$DMXz$TtJ4pg3iZEM{ zU*NK~BS;^#a2FW_Z+=Vz4A>-EG`mR|6PHFVtmm_1ex`*ltix59CT=S#KCyDXKGkop zGeWjixzpUqb`9!Yo%pJ~1H$=`AToTQ@iBhoQ5r-;I0)JN*n##)1(v*!RU_(OBv)?l zy!W%Kg14^0h!S&2@04$7{H}rrEe(E&u64_+U7g~462*a zb=U`trC(cnCTv$;;LI$$%sr5<%O#y*t<#;?A8=)#0F?5gM^5I1UJZ7wFssNOtv&uV z;gMYI1G%N*JBFRDKq9fw-8Rnga)PW&Y1}2fZf}sTuyu+vS87s3g121Th_Mg20zB9G zIn7y^i58V?ZX`wosRCyk8TJ%>o|HOPz_&5e*;$BWw`UR{GC!}T3%G##l>cgo;8nIM|=>cxmdl! zF<|_67cEHr;Z8YY-mZKaBl>0XCLJnr!>F0JLM&8;S*o+)$hW9Ga2Jg5T~DoiRGie6 zPg!w5+-^TNv8JsPddD-XD795RL>_kkP>X$iIXPaqPMkCIN@Hucd6~jZ!dgjxEtmPD$t2E zwl5_HtX)o^$X4yKfv$U`nb5lBRJdpboPbIsvpk_bKm%pn$GyO?oD*r~2}~hCCaSzl zL!)Z8%R9~XHK-KjTXB>f@)dP3=hC32VK6dH@5)Ixzsz3ogtDkX@S{3N(CKa8V4#m% z3cK;@?rE~MwBov>Vc!}O2GJjLvgant0*OBJ7vA(4?q7NT{-XiUN5#d2eAlBIV*}8) z#=YV_p`;H1zBKOQTq10nPEdO%XfO*CO>-`Hy#rI z2!FXWKd~-_`OvBJuSbT0ULw;LB%9pl$s567e|77+yEwuexuV^E$oMEZ=(n1e6f?ZF ztpl~7L9(L}o5d5)cj)1ehsYmF2Dx!^^m#TD-_@3bJCGeAxxG*W@Z4IieY5w}Y&QK} z-7o;%G0sZW^>EcR_b?e;AB3E73XOSEu%J#NnphPM^5cv+!y@zG4+vG2xzSuIHlmd= z`OMw+prH31@iMVEVb*Zd+X?}IVGnYF0rlEV^b9?5xMq>^4_=?~k>i7T0UX|~HpYfm`z#E@E?fcEMS45lB;d>t|T5`2wMfRhw(q9Ydm>5ql}D2j(P)(UlT)J))76 z+82{_0hgUt{9qkCK0Ju_1&}BI0`M%#(V9l1BGxO<@)pQ;P^X3Mmq`w>YpX+MEtP|^ zDu{xs%k0Iiq&RPR(!qrZ;=8GK(^!z*Pz@5{w&*~Q*`PN_0Y{BR+Xueb-g{V-M9baK z-vf_|y*h86@b(fj>|tp&g-n#N?T&Z=F9Uco6oXSpGj8RRwRme z?PaJyf9|B$2XO+br=CezrG_6E>Rq?QA{X}hWc;T1>S(y?{ zIl=w4{DA7XYeGwL+st!}zaUHV3Q$yfOtX4-!4OEImC9pV@--iDn2fAPeHu;>G;da; zIk--XwR4V{uU7(cb;+i@mPqOe8dX4$1!_N496+U7z$X+&Ig1(-)|(3*cE=|M+YB_4?1n$Ga<&zf5sfQoUNc(P>rQfkYsK zcE4;q2=O#>a8Fbvp>2OwvA@N+lE>FBl+N7}Hl2G*+l%QP8V+nnmVDag_47WyBWu%k32MhH&L91A5lx=-+2@E&EjVfQ*hyUi~F?ja2UU_Sx7<9*sXI?lx^LV7j z4^aZ^xi8D+J9Y@sqag-2$#|eL311=7>p1Nf=Rco4x}NLz?rL{^p|12Rs{Yz0KCaXW zlrIIY;dO@m?E;WP<#6-oJL$(FX^?K z8gc%NW{&iBV^e$s?;Okbi=OmWn(l?`+WWmn>lAR!G_0;6du?WV?Zl(Qo zp(8;`zX6?kYg?(^^}DDivom47BEc8j$14-xpo=g((bL)C69bvkN7;O6@G|S(m+%h@ z<4e&m|B5&3RmP^Yl4H619%tv1`b)lsnW_~}27673LxJaYiBHQN@ZwyXId{eFwB=HhRixacIMfit7w*9}ZI<cyFP08a(-L+oEwWBGjeNN=bcb?WmE9e3Su zd{ApUq3kK~V8ZXfuHNeOnb~Z1WWI~T9_kKV5>WQR_k)sNQhoGQ#ABxha67EJN*~U= zNz1sCXrQYKcZ~mUMh?A0u9$?bb*V7rbqH%RK9}ikzL&BSA}HtbtZb<;8Q&-Kx=c5r z^a|YZUx}}#C7mgQ&YiT!E1f|8MW_dT5k~Er42{-El02N(lg=f>x{G@C{d+{KLABom^y^&+qaj~4bR*3{3q?#Lyg?z-W!k3J~to9 z6qPKT&0-OTaq&CN3XQCx9B-Tpvgg!z`MTjzMXIHSpX~aIlQX<~3`HW#QYPp4?PDoz z^LrOfOEhnl&IAhS^_`difr_TO^HwmSMSRms-!xSWQ&*nV=MI8Z;H5Wt!_Ul-3@#@0 z!u=cUWJ}f-ONlYygu@zVC_#qPOcxux=C@Z{0T4xdPKcRVR@-1=3s%>P`=R$84Ixw0 z{5Ot(8qQ{13LlG%a4j-S&^v60TMIGHhMY>Z1fU(PKnzbt(fxRJTklbV4N~lbTkAw2 z-R1ulSU0Vb&9e_cS}mI^Cdwe@V*m_qNDgvk@@9+IobF@-ZP96>*iFIIR60N|%%rrm z?=IZXhq8SwAyH3RW2e|T!;>LLz0*~2&m`>FwL(sbtS$D^^E1=Xe&D^|&k>8WCFD8D zHnX=^h5_xZ=~!WUh^N*V-rM2hHE$Lo%agWxKD{cG7QZlm(X%AHb|-0m9n52+54 zj88@4+-wwz?N2f;P|;}yZ1ZjDFg5V{H(rskMV^^EotIzD>WnS}v8D;v6JWw2`VTb3 zzNG?LlY$F3Wjp_g_x3{4Az9jI(L{3>v4DwhX;U@*hN|9^CVBa#$Slh#4SKflTZs2s z;HO|3xvuA6zOzE3t!~e9BzK0_;lu=Enr^N^&Y^4R?`L@GmJ+|N&MN&Z$QK}y zdPcG`m%nk(YTaMv1cJFx9sM#!3O`V&HgzKH&k>kb28Rls*PhI3ZK7C`b&HEYvhWXD zS=kw_HV-^qEeOOrDhz59EC8Ah<`LvTJ<}b5$1$B;Td5;eY#tU-@Q5x06Cx7pueGi;yVMLmW?IOIv26?3ea21xUXVT!Z>mJ{%Ue9;m z{wpfBw?R8#{HP@KTlaJtqkZ{8PC*IZ!ko@BrrpMRhuy(l9V<&cB?!H-Kz6xt@+)&! z|GZ3jO`M10^s?r`BwYzX%OdL1)4+dgv1*cq@7Zx^Q@9zJ+I=kx+{5TAja(t4u-K5?yW0{dHN2}2z;k;2db@l z|FjhLaE-`2`OCKVT)6tNJOzu(n#;t>slKTT`?60I>9y$P_r;~9jTTI+c0B;S;ug;T z(4^dXotLp{^`YHgis+mm_gi8I$4x$35;Vr}M=oo1WZ{H&WXqhCil|-LXC&ICI)>F` zyyfM-L0AFPrdG6#Dbl-p1%nOn! z(Cvog^+E>EA=L15jQT_mTXmH)W#e|Paxk-F(&`Ur_5(Aaa>4W6E5A_4vYo8Rb@seU zz5J)U@3|MO1?iDeCq7>w&>jbr%+lWhlq)r29cjm1kFo<;rPx!?;-#NbmJMeP6sV(~*8ARmZv^?OqTnBxcUH?u_9+|zwr$%o6g8AB8 zVp6D0QUHKt67u@5Hto>_9X%ui6g3NOmn?!i9dJ^|WBT0!%E*k@QJK)`CcQ(M2u=y8558RmdKTKjm$LN zUNjSz_WnKd8T_E732RcxN!ewqe21!qJsrCWOh*o4j@GZL0f2RTJdWWJamtheqTEH_P||b8&Tbl`So+9_3p$q%O`3E2BV5Vl353T2?hZb7gU@bsrY=& zRJZj_1CGnyaGt$Ynl%suIJ>>4P4WbYw^N;n7E?^B_P&CL^dXra>Z~c{p#{36Lw&6p zKwh~nT;fby4?|oa^TOppP2K0nhZW#v%2#@ENdmzEP)Cp+7b1(N9>w)(E3ijh=ohcv z`^myVzm!~V%kL)G4hud2b@w0ilX{mv&{`&i_a2vYaXrkgqa`k}%}W65{UQsEUrrFL zNCZro{y)N^@$I=cihUuG>}$Ectz*4MK_0Z!y0tX>$9~hP(IjI3NFR^zv(~agAd6Y2 zFZHI>4jIGl`Gswy0zljKn_W#0qm_H{0FaH78wj^RWF+^ddKc}~c3B^xTQx9ojgx0w zj^;~GY-odteyuzYz{`0Uvj^#lQJ9H+!|0_YS`} zNK++z$qkCGljADRaSJn+hww`e^*Ii$=(9)X%YdV{-w~ha-7mn(G7zP>i~Ym&TY9)1 zsGqg#cf5U2O5sMfGV|t1=umf~w(uU669i>hZ*1Ehg`y-#wq^;p+`L5q>xt9b?t6T&oP0!ZAPUJCpSAYZBh5PA{^c>)FX1`yL=;8tPx3!IOf zwVew?HtybE8N~QTW}pqNh}j1acL0t^WG~O1DKOkowt@*$j93}OPLSV)&NDy`$o+*+ zVY#d`6j~Bxi5Bb{l*Zc4cq@yUSb{zSxI}9e22a03lo(Ei>@kt67cZH-0J(H2fj*J- zeD<1DLA9hGO$!yyRY0Fe?f#w9V!7PLN4s;sDiO%fM~?f2mu1sKSm3pyxxcE*(4_t3 z83VmO)sGeFX4#$7#|;9-p+XB=q$1P;co9gP1OQ;!c|<(cN{GeGvqCg|LubuDn`tjR zQyw;W&Qm;Mb|$(dTjPdSx8av5BV?Nk`bJ%aw;|O#!gJuU%l7xX<?(|6u=b&4jlVikQkB#*V z*>MRXc>33cO=P2RJjjQ(%kb3Q!u%5Yf&0|(2f_1r|UgzzQsdMaJp);W5$V^@?s zaQNmt*FZAtfpX5gKj1Gb6Zm71VX1U2SiJ)T;B!RFDCpj!0R^t;YmZK8>YPj#iz+4T z%y~5{=z`3$73{*T)7?3Gwku8bjCwVvafnjb!r2Nm!6j28lfMS~1b|yQC+JJT=O6l9 zcbH+Wx5(qUKGi2xV;UJCD_Lw;G+ZmL*y7&d@jk`9n`!M2~n4u8}A3!4L}8D5iDX!-b5za ztlYvt`K4s%)XsK_2N1-kj>aD*mcxt=`Ds>}r1khDOn;=0aU?|EY3JPJ?3B5) zOznxgt#T#;A&p+IsajpKO9b43EW5m&F4gRr|M^Q5muq(bS%*Fg4^* zC&KMYck-l9i7UvTRI#H8L@rWiV`JU{nJoI}7~v!TN|ytSKb4`{D^Raww(;hUNKy0J z@^C5BS`GMVEUQ%qpM_1M($0+InvvW<{48+zZ!pnI*pHyQjKmrho(6hU?y`8uc*Eo` zMeiqARJ;+~mZd5F^TxbThAQ(FP<>B!G=#5-F}ORg1{CrzryE)$lZ??_cD z-7=@f5+M`7^WXnW6a?vOX)u+z-`YzBGH?z9xIUf~CokLx4o<$yIX#XBf$4?$#X`0R zv@gq5qHq78*g-6>+otvuY@sW4ua5WG_HSXJ&>iS~(*M4fW{lwAuRcTi? zDuCL7SI$}mkFU$Dwq1>}3A-_PT2bt>`b7CRU|yx0I_~BC2B>muFnaGw{7NSx!J`%j zd*qcc*N)U{ulrKMb96shy9Z7O<~n-KZ>p!^cA+S&1yChWw<(+@CESRZF}#XMJMp^7 z_|5i=On%v9XI5ZHz**LZYM(9hO0%ipO3hXuIr_6DQ5xHlJaT$QhC=f z3BhvAaut9GEUpfJ(+isR&F-6SpiBKma2f;`$ z=mB3^>8H_Y^I|^y{7KWtM8$WR{n=e|_ z9?Pso>_qpyVxn2k3T~NRx}L=r~4;%)km-qqXfavWO4A zeDZznCqTDe>{0MNG68bl-MIsD(FZ-&55IT`s|4c=>rSvVGde$90gkM%%cEU2Vn;nv zH2tc@aZan0d0d<%3EY3+7ljw{zHC)DJ0yBo%q_T2f;L;Zj7vZ1Bu8N4)QDkuRsJbs z7Vz|zzdfxn-Z$hi7ngfxIZ}QepnQ~4R%?X2D$L$P3xI^{=p9uIW0a&1w zA#rhiLP-8uc+XN_;>=V1rr#paOD57~N{hpvTo$7nLQZ-(DX^CVYA=0&(8qHGyRPzTAl^-eq7yw|D)W){%j&5JvDiyk4A@ng-zH8g)x6hd`P_nVI3K zR6_vi5BVpnW4jSMDBU#f7H5Nr#EA+tz{x6E6EA$t7Cr1S7}@$8krVp?wgA1N-uaA9 z&;k^rDu++*C>!meyO-f1XWm28ZLV5#Zz+UlBa)5Y!;hrXhm*s0(hBf?8(>Lb6(asd z0qq-2m0bp0A!%uB55;=kN_DBf^&BZRTMaz@oEMmM(kSwL27xNhvaChD$VFUs z#qd+_b99dQnof6_L@FsV`<$-U?RBJW{gLNOXZ6cJ(-Lt`IoT zPm(<58TQH`#)5YF-Iz@P5fOP~(Au2!WG5Fp=Bml3r*v*6&t35rEKk&hYH*~VJMEJV zfd<*10ucI2R`gc@ojxQ@cajLRgSGvS-wTj)YIC|60pt@p zGZecIq#JF5lNPT}eJn7R?~-jDyVivS)CgTYfk3P#m-}fkVk~8w4qLpawloFR`z)ZZh>TWT7e-K{FFOe=|8P#LWbB5eDE6lWyOCakz#eo5HWWcC`eShgJ|5z4DU||`X(?@ zb^?X?|Dc)Zg!#P~p13=O*H4Axj<3Ss+#iI6KagKnrcdR$ySE$yK-wU`OKb-W+TrW; zy9ZbSekXuoZfuRZD|P_DYgh7wS$%yZu!yW7VDhhL|7RP3OE$|m0yg!hr-TI=Z;Sth732<1PiXR1C)AnQ4lb0Iup@3P`@+hvN}Qh zDL^Qr-wTN4rdi`dxQGMU8b=@aX;k^%5gC#%P~Ag?{ff2uOzzDMa$?vNdtun)tI^f0 z$t18Mu$`hd|1wt~)EDgNT~_cdg819$CS&?`i{AaM1_qFKKXR$AB&ZR@lac*O^jnnw zFFh;VLDFQT-=OIi0UwDTbNYbp!G0&Ii_WIX>iNK@P?{pW8g%iB`W;Mui4P$u9$!cC z9W*t7YkB=}WLw`S6bw*w3fm;e~ zXlQRYYb*zY>01T(IOAu#VwHUW_giZ9pz_!{{cVD&J^q`L12iIVA1S7)>!!&002&E( z0+eqZ1dL1L0mDl2=6ine-ciGHEO*KnX)PW@Is*v$^pF1{!DG*%G-Wy!2;!Ms>aH5} zXM;9VZ}WtL*V~}6^vP!P_kG_ua_%A36_q^Cgaa68z_PyuHlKR6CjMgZ53$J27xsJN zeUl)b0Ayhd6o6HvQ{}s{;kgWFg;%4$+f5nJ_i6LT03m&TRp3_r=sOD%fV9(l7GPGe zqpH*#_6qc46M8ZR2@Ho$vVS>yH@7nt2jgf5(|Gh zmx?XKen#*L{roiltIL5^BcO~{oqTA7vPUP~gaMh&9{qPzMaXb>d7;}1EHfd;ioRtk z07&Jx#wfXy_I*WV2N(@h2>b{xpw_V=b$9vQ=qf^ATftxXbu(M^^>c^FuT zt*8UQRT1uI8pDs%=^(}B_L*e*mIuAr3^IT{DUFBs^3C7C#4*w`(O+U_JLxtyX@;)< z1V#Zk#Jmwu!S{jVALz=*0EUvToYIvb>&=SzedwT?|)r?(ntW~D~C(daE}1V)t4krC;5GGLECOh2dp z@%G}c#wMuHd5hbFQq26!ItvMK5u$|46%M+&)cKFC4vLrhc=A|k+3inmRDk2qNL&YM z)Py>|Kjf3=E~I4)E_)8!(Qm9=Vd^T2D$5sv(?6QS{MU@2zmyL)Pr|$J4giC0dbx{w z+CH>r0f_P{d0hVJH8GZc_^@);8e+^~+e!uwuKvEvZ4cmmLE7a0Y@Jd!SGC!b!v5B7 z>U5TAhlFSROn|=?>!0kJdBV-k@HZZJPGy!^Obm*@s52;@0b9}4E8W{FApA{!yDP$R z&RR0Wua8s=A0h|A`&L`K#~l+WSLrTe=3k8X*y4L1#KTmenlb`YlvrhNPbY#8+vHx&o}13mOG%J=OelnV!F8UN900Nm<y{|C054is`A}5dKw@yAOFt*%uB&-JN?{SG(2^1o zyqAa}Hvt6oGvLkoLqGgrdP}7AJ#H}1a>j33>&oXdVO;Ww7e8MVdo*=+t)T(v>b++3u{q5rk# z`d@pl|F!4(UwbYB;eYM9{{Ob;;wKM{OKkTMI>i;ZVUPSbdR02e3mnt*ajMwV*HFu) zmuo}b+FnEF|9v0i1K1PR%DpW=rE+J%W+%Z)=Vw;0udfZ606&-Ci(=ihSCu@x*>$#| zZ*b~XjEA$Q?@=FZnjfH}<%TtEY)^?sGJ=n8SXXw)V~{G#mG<#$+_QPV%`sWALP*!T ozxb + Copyright 2008 Jo-Philipp Wich + Copyright 2012 David Menting + Copyright 2020 Lienol + Licensed to the public under the Apache License 2.0. +-%> + +<% + local ver = require "luci.version" +%> + + + + + + + + diff --git a/package/lienol/luci-theme-bootstrap-blue/luasrc/view/themes/bootstrap_blue/header.htm b/package/lienol/luci-theme-bootstrap-blue/luasrc/view/themes/bootstrap_blue/header.htm new file mode 100644 index 0000000000..f25ead693a --- /dev/null +++ b/package/lienol/luci-theme-bootstrap-blue/luasrc/view/themes/bootstrap_blue/header.htm @@ -0,0 +1,76 @@ +<%# + Copyright 2008 Steven Barth + Copyright 2008-2016 Jo-Philipp Wich + Copyright 2012 David Menting + Copyright 2020 Lienol + 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 node = disp.context.dispatched + + -- send as HTML5 + http.prepare_content("text/html") +-%> + + + + + + <%=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 -%> + + + + + + "> +
+ +
+ +
+ <%- 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.%>

+ <% if disp.lookup("admin/system/admin") then %> + + <% end %> +
+ <%- end -%> + + + + \ No newline at end of file diff --git a/package/lienol/luci-theme-bootstrap-blue/root/etc/uci-defaults/30_luci-theme-bootstrap-blue b/package/lienol/luci-theme-bootstrap-blue/root/etc/uci-defaults/30_luci-theme-bootstrap-blue new file mode 100644 index 0000000000..0284dd2410 --- /dev/null +++ b/package/lienol/luci-theme-bootstrap-blue/root/etc/uci-defaults/30_luci-theme-bootstrap-blue @@ -0,0 +1,6 @@ +#!/bin/sh +uci batch <<-EOF + set luci.themes.Bootstrap_Blue=/luci-static/bootstrap_blue + commit luci +EOF +exit 0 diff --git a/package/lienol/luci-theme-bootstrap-mod/Makefile b/package/lienol/luci-theme-bootstrap-mod/Makefile new file mode 100644 index 0000000000..f507e476cb --- /dev/null +++ b/package/lienol/luci-theme-bootstrap-mod/Makefile @@ -0,0 +1,15 @@ +# Copyright (C) 2020 Lienol +# +# This is free software, licensed under the GNU General Public License v3. +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Bootstrap Mod Theme By Lienol +LUCI_DEPENDS:= +PKG_VERSION:=2 +PKG_DATE:=20200912 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/cascade.css b/package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/cascade.css new file mode 100644 index 0000000000..f7810a847f --- /dev/null +++ b/package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/cascade.css @@ -0,0 +1,1592 @@ +html, +body { + height: 100%; +} + +body { + background: #ffffff; + color: #333; + font-family: Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.8; + margin: 0; + /* padding-top: 60px; */ + margin: unset; +} + +a { + color: #0069d6; + text-decoration: none; + outline: 0; +} + +a:hover { + opacity: 1; +} + +h1, +h2, +h3, +h4, +h5, +h6, +p, +.cbi-map-descr, +.cbi-section-descr { + color: #404040; + margin-top: 0; + margin-bottom: 10px; +} + +ul, +ol { + margin: 0; + padding: 0; + list-style: none; +} + +tr, +.tr { + display: table-row; +} + +legend { + color: #404040; + font-size: 18px; + font-weight: bold; + padding: 0 0 3px; +} + +.left { + text-align: left !important; +} + +.right { + text-align: right !important; +} + +.center { + text-align: center !important; +} + +.top { + vertical-align: top !important; +} + +.middle { + vertical-align: middle !important; +} + +.bottom { + vertical-align: bottom !important; +} + +.pull-left { + float: left !important; +} + +.pull-right { + float: right !important; +} + +.inline { + display: inline; +} + +.hidden { + display: none; +} + + +/* Style */ + +.container:first-child { + /* min-height: 40px; */ + display: flow-root; +} + +.container { + max-width: 1080px; + margin: 0 auto; +} + +/* Header */ + +header { + font-size: 14px; + /* position: fixed; + top: 0; + left: 0; + right: 0; */ + background: #222; + box-shadow: 0 2px 2px rgba(0, 0, 0, .1); + z-index: 100; + border-bottom: 2px solid #ccc; +} + +.brand { + float: left; + color: #ffffff; + font-size: 24px; + font-weight: 700; + line-height: 40px; + margin-right: 20px; + position: absolute; + left: 0; + margin-left: 20px; +} + + +/* .brand { display:none; } */ + +.brand:hover { + opacity: 1; +} + +.nav li { + float: left; +} + +.nav a { + display: block; + line-height: 40px; + padding: 0 15px; + color: #bfbfbf; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.nav a:hover { + color: white; +} + + +/* Dropdown */ + +.dropdown { + position: relative; +} + +.dropdown:hover { + background-color: rgba(0, 0, 0, 0.3); +} + +.dropdown:hover .dropdown-menu { + display: block; +} + +.dropdown-menu { + display: none; + position: absolute; + top: 40px; + background: #222; + border-radius: 5px; + padding: 5px 0px; + z-index: 100; +} + +.dropdown-menu:before { + content: ''; + position: absolute; + top: -6px; + left: 27px; + border-bottom: 6px solid white; + border-left: 7px solid transparent; + border-right: 7px solid transparent; +} + +.dropdown-menu a { + color: #999; + line-height: 30px; + min-width: 150px; + padding: 0 20px; + font-size: 14px; +} + +.dropdown-menu a:hover { + background: #191919; + color: #fff; +} + +.cbi-dropdown { + display: inline-block; + width: 210px; + height: 30px; + padding: 4px; + font-size: 13px; + line-height: 18px; + color: #808080; + border: 1px solid #ccc; + border-radius: 3px; + box-sizing: border-box; +} + +.cbi-dropdown { + border: 1px solid #ccc; + border-radius: 3px; + display: inline-flex; + padding: 0; + cursor: pointer; + height: auto; + background: linear-gradient(#fff 0%, #e9e8e6 100%); + position: relative; + color: #404040; +} + +.cbi-dropdown { + /* min-width: 210px; */ + max-width: 400px; + width: 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, +.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; + /* color: #404040; */ + min-height: 20px; +} + +.cbi-dropdown>ul>li .hide-open { + display: block; + 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; +} + +.cbi-dropdown>ul>li input[type="text"] { + height: 20px; +} + +.cbi-dropdown[open] { + position: relative; +} + +.cbi-dropdown[open]>ul.dropdown { + display: block; + background: #f6f6f5; + border: 1px solid #918e8c; + box-shadow: 0 0 4px #918e8c; + position: absolute; + z-index: 1000; + max-width: none; + min-width: 100%; + width: auto; +} + +.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; +} + +.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: block; + 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; +} + +#maincontent.container { + margin-top: 10px; +} + + +/* Label */ + +.label { + display: inline-block; + background: #bbb; + border-radius: 4px; + color: #fff; + font-size: 14px; + line-height: 24px; + text-transform: uppercase; + margin-top: 6px; + padding: 1px 9px; + cursor: pointer; +} + +.label.success { + background: #46a546; +} + +.label.notice { + background: #46a546; +} + +.label.important { + background: #f00; +} + +.label.warning { + background: #fc0; +} + + +/* Main */ + +h2 a { + color: #333; +} + +h2 a:hover { + opacity: 1; +} + +h2+.cbi-map-descr { + margin-top: -10px; +} + +.alert-message { + position: relative; + padding: 15px; + margin-bottom: 10px; + background: linear-gradient(to bottom, #fceec1, #eedc94) repeat-x; + /* border: 1px solid rgba(0, 0, 0, .1); + border-width: 2px 0; */ + border-radius: 2px; +} + +.alert-message>h4, +p { + margin: 0; +} + +.error, +.errorbox { + display: inline; +} + +.error { + color: #f00; +} + +.errorbox { + color: #3b3; +} + +#maincontainer { + box-shadow: 0 0 2px rgba(0, 0, 0, .3); + border-radius: 4px; + width: 500px; + margin: 120px auto 0; + padding: 30px; +} + +#syslog { + color: #111; + width: 100%; +} + + +/* Change List */ + +.uci-change-legend { + padding-top: 15px; +} + +.uci-change-legend-label { + float: left; + margin-right: 100px; +} + +.uci-change-legend-label>ins, +.uci-change-legend-label>del, +.uci-change-legend-label>var { + float: left; + width: 10px; + height: 10px; + margin-top: 3px; + margin-right: 6px; +} + +.uci-change-list { + font-family: monospace; +} + +.uci-change-list ins, +.uci-change-legend-label ins, +.uci-change-list del, +.uci-change-legend-label del, +.uci-change-list var, +.uci-change-legend-label var { + display: block; + text-decoration: none; + padding: 2px; +} + +.uci-change-list ins, +.uci-change-legend-label ins { + background: #cfc; + border: 2px solid #4f4; +} + +.uci-change-list del, +.uci-change-legend-label del { + background: #fcc; + border: 2px solid #f00; +} + +.uci-change-list var, +.uci-change-legend-label var { + background: #f2f2f2; + border: 2px solid #ccc; +} + +.uci-change-list var ins, +.uci-change-list var del { + border: 0; + white-space: pre; + padding: 0; +} + +.uci-change-legend-label var ins, +.uci-change-legend-label var del { + border: 0; + line-height: 6px; +} + + +/* Tabs */ + +.tabs, +.cbi-tabmenu { + border-bottom: 2px solid #ddd; + margin-bottom: 20px; +} + +.tabs li, +.cbi-tabmenu li { + display: inline-block; +} + +.tabs a, +.cbi-tabmenu a { + display: block; + color: #404040; + line-height: 34px; + margin-bottom: -2px; + margin-right: 20px; + padding: 0 3px; +} + +.active a, +.cbi-tab a { + border-bottom: 2px solid #111; + color: #111; +} + + +/* Fieldset */ + +fieldset { + border: 0px; + margin: 10px 0; + padding: 0; +} + +fieldset fieldset { + margin: 0; +} + +.cbi-value { + margin-bottom: 1em; + zoom: 1; + clear: both; +} + +table .cbi-value-field, +.table .cbi-value-field { + display: table-cell; +} + +.cbi-value-title { + /* white-space: nowrap; + overflow: hidden; + text-overflow: clip; */ + display: table-cell; + padding-top: 0.4em; + line-height: 1.2em; + float: left; + width: 13em; + margin-right: 1.5em; + text-align: right; + color: #404040; +} + +.cbi-value-field { + color: #811; + display: table-cell; +} + +.cbi-section-table-cell { + white-space: nowrap; +} + +.cbi-section-create { + margin: -3px; + display: inline-flex; + align-items: center; +} + +.cbi-section-create>* { + margin: 3px; + flex: 1 1 auto; +} + + +/* Table */ + + +/* .cbi-section table tbody tr:nth-child(odd) { background-color: #fdfdfd; } */ + +table, +.table { + width: 100%; + display: table; + margin: 0 0 10px !important; + border-radius: 5px; + /* border: 1px solid #a9b1bb26; */ + border-collapse: collapse; + position: relative; +} + + +/* table tr:first-child, .table .tr:first-child { border-top: 1px solid #b0e6b9; } */ + + +/* table tr, .table .tr { border-bottom: 1px solid #b0e6b9; } */ + +table th, +table td, +.table .th, +.table .td { + color: #811; + padding: 3px !important; +} + +table tr+tr td, +.table .tr+.tr .td { + border-top: 1px solid #a9b1bb26; +} + +table th, +.table .th { + text-align: left; + font-weight: bold; +} + +table td:first-child, +.table .td:first-child { + color: #127; +} + +.table[width="33%"], +.th[width="33%"], +.td[width="33%"] { + width: 33%; +} + +.table[width="100%"], +.th[width="100%"], +.td[width="100%"] { + width: 100%; +} + +.table .th, +.table .td { + display: table-cell; + vertical-align: middle; +} + +.table .tr.placeholder { + height: calc(3em + 20px); +} + +.table .tr.placeholder>.td { + position: absolute; + left: 0; + right: 0; + bottom: 0; + text-align: center; + line-height: 3em; +} + +.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>*>.cbi-button-up, +.cbi-input-up { + /* background: unset; */ +} + +.td.cbi-section-actions>*>.cbi-button-down, +.cbi-input-down { + /* background: unset; */ +} + +#cbi-network .tr, +#cbi-wireless .tr, +.tr .tr:first-child, +#cbi-network tr, +#cbi-wireless tr, +tr tr:first-child { + border-top: 0; +} + +#cbi-network .tr, +#cbi-wireless .tr, +.tr .tr, +#cbi-network tr, +#cbi-wireless tr, +tr tr { + border-bottom: 0; +} + +#cpu_free, +#memtotal, +#memfree, +#memcache, +#membuff, +#conns, +#swaptotal, +#swapfree { + line-height: 18px; +} + +#cpu_free>div, +#memtotal>div, +#memfree>div, +#memcache>div, +#membuff>div, +#conns>div, +#swaptotal>div, +#swapfree>div { + border: 1.5px solid #bbb !important; + border-radius: 5px; + width: 240px !important; +} + +#cpu_free>div>div, +#memtotal>div>div, +#memfree>div>div, +#memcache>div>div, +#membuff>div>div, +#conns>div>div, +#swaptotal>div>div, +#swapfree>div>div { + height: 18px !important; + border-radius: 3px; +} + + +/* Form */ + +input, +textarea, +select { + display: inline-block; + width: 16em; + padding: 0.4em; + border: 1px solid #ccc; + border-radius: 5px; + box-sizing: border-box; + color: #111; + font: inherit; + line-height: 18px; +} + +table.cbi-section-table input, +table.cbi-section-table textarea, +table.cbi-section-table select, +.table.cbi-section-table input, +.table.cbi-section-table textarea, +.table.cbi-section-table select { + width: auto; +} + +#cbi-network-switch_vlan select, +#cbi-firewall-zone select, +#cbi-firewall-redirect select { + width: auto; +} + +input:active, +input:focus { + outline: 0; + border-color: #ccc; +} + +input[type=file]:focus, +input[type=checkbox]:focus, +textarea:focus, +select:focus { + outline: 0; +} + +input[type=button], +input[type=reset], +input[type=submit], +button { + width: auto !important; +} + +input[type=checkbox], +input[type=radio] { + width: auto; + margin: 0; + vertical-align: middle; + cursor: pointer; +} + +input[type=file] { + padding: 0; + border: 0; +} + +.cbi-input-invalid, +.cbi-value-error input { + color: #f00; + border-color: #f00 !important; +} + +.cbi-image-button { + margin: 10px 8px; + vertical-align: middle; +} + +.uneditable-input { + background: #fafafa; + border-color: #f2f2f2; + color: #ccc; + cursor: not-allowed; +} + +.uneditable-input:active, +.uneditable-input:focus { + border-color: #f2f2f2; +} + +.cbi-value-description { + /* display: inline; */ + background-image: url(/luci-static/resources/cbi/help.gif); + /* background-position-x: 0px; + background-position-y: 1px; */ + background-position: 0em 0.3em; + background-repeat: no-repeat; + padding: 0 1.2rem; +} + +.cbi-value-description img { + display: none; + vertical-align: sub; +} + +.cbi-page-actions { + text-align: right; + padding: 10px 0px; +} + +.cbi-page-actions.right { + float: inherit; +} + + +/* Button */ + +.btn, +.cbi-button, +button { + border-radius: 6px !important; + display: inline-block; + background: #fff; + border: 1px solid #ccc; + border-radius: 2px; + box-shadow: 0 2px 2px rgba(0, 0, 0, .05); + color: #333; + line-height: 16px; + padding: 0.5em; + cursor: pointer; + margin-left: 0.2em; +} + +.btn:active, +.btn:focus, +.cbi-button:active, +.cbi-button:focus, +button:active, +button:focus { + border-color: #bbb; +} + +/* +.cbi-button-up, +.cbi-input-up { + background-position: center; + background-image: url('../resources/cbi/up.gif'), linear-gradient(#ffffff, #ffffff 50%, #e6e6e6); + background-repeat: no-repeat; + padding-left: 15px; + padding-right: 15px; +} + +.cbi-button-down, +.cbi-input-down { + background-position: center; + background-image: url('../resources/cbi/down.gif'), linear-gradient(#ffffff, #ffffff 50%, #e6e6e6); + background-repeat: no-repeat; + padding-left: 15px; + padding-right: 15px; +} +*/ + +.cbi-button-add, +.cbi-input-add { + background: #404040; + border-color: #404040; + color: #fff; +} + +.cbi-button-add:active, +.cbi-button-add:focus, +.cbi-input-add:active, +.cbi-input-add:focus { +} + +.cbi-button-remove, +.cbi-input-remove, +.cbi-section-remove input { + border-color: red; + background-color: red; + color: #fff; +} + +.cbi-button-remove:active, +.cbi-button-remove:focus, +.cbi-input-remove:active, +.cbi-input-remove:focus, +.cbi-section-remove input:active, +.cbi-section-remove input:focus { +} + +.cbi-button-reload, +.cbi-input-reload { + background: rgb(148, 143, 225); + border-color: rgb(148, 143, 225); + color: #fff; +} + +.cbi-button-reload:active, +.cbi-button-reload:focus, +.cbi-input-reload:active, +.cbi-input-reload:focus { +} + +.cbi-button-reset, +.cbi-input-reset { + background: #6bde84; + border-color: #6bde84; + color: #fff; +} + +.cbi-button-reset:active, +.cbi-button-reset:focus, +.cbi-input-reset:active, +.cbi-input-reset:focus { +} + +.cbi-button-edit, +.cbi-input-edit { + background: #ff7700; + border-color: #ff7700; + color: #fff; +} + +.cbi-button-edit:active, +.cbi-button-edit:focus, +.cbi-input-edit:active, +.cbi-input-edit:focus { +} + +.cbi-button-apply, +.cbi-input-apply { + color: #fff; + background: #0069d6; + border: 1px solid #0069d6; +} + +.cbi-button-apply:active, +.cbi-button-apply:focus, +.cbi-input-apply:active, +.cbi-input-apply:focus { +} + +.cbi-button-save, +.cbi-input-save { + background: rgb(148, 143, 225); + border-color: rgb(148, 143, 225); + color: #fff; +} + +.cbi-button-save:active, +.cbi-button-save:focus, +.cbi-input-save:active, +.cbi-input-save:focus { +} + +/* LuCI 18 DynamicList */ +input[type="text"] + .cbi-button, +input[type="password"] + .cbi-button, +select + .cbi-button { + padding: 4px 8px; +} + + +/* Input Error */ + +.cbi-section-error { + background: #fee; + border: 2px solid #f00; + padding: 10px; +} + +.cbi-section-error ul { + padding-left: 20px; +} + +.cbi-section-error ul li { + color: #f00; + list-style: disc; +} + + +/* Interface */ + +.ifacebox { + text-align: center; + margin-right: 60px; +} + +.ifacebox .ifacebox-head { + border-bottom: 1px solid #ccc; + padding: 2px; + background: #eee; +} + +.ifacebox .ifacebox-head.active { + background: #90c0e0; +} + +.ifacebox .ifacebox-body { + border: 2px solid #f2f2f2; + border-top: 0; + border-radius: 0 0 4px 4px; + padding: 2px 10px; +} + +.network-status-table .ifacebox-body { + display: flex; + flex-direction: column; + height: 100%; + text-align: left; +} + +.network-status-table .ifacebox { + margin: .5em; + flex-grow: 1; +} + +.ifacebox .ifacebox-body { + padding: .25em; +} + +.ifacebox { + background-color: #fff; + border: 1px solid #ccc; + margin: 0 10px; + text-align: center; + white-space: nowrap; + background-image: linear-gradient(#fff, #fff 25%, #f9f9f9); + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + border-radius: 4px; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + display: inline-flex; + flex-direction: column; + line-height: 1.2em; + min-width: 100px; +} + +.ifacebadge { + display: inline-block; + flex-direction: row; + white-space: nowrap; + background-color: #fff; + border: 1px solid #ccc; + padding: 2px; + background-image: linear-gradient(#fff, #fff 25%, #f9f9f9); + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + border-radius: 4px; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + cursor: default; + line-height: 1.2em; +} + +.ifacebadge.large, +.network-status-table .ifacebox-body .ifacebadge { + display: inline-flex; + flex: 1; + padding: .25em; + min-width: 220px; + margin: .125em; + float: left; +} + +.ifacebadge img { + width: 16px; + height: 16px; + vertical-align: middle; +} + +.ifacebadge>*, +.ifacebadge.large>* { + margin: 0 .125em; +} + +.ifacebadge>*, +.ifacebadge.large>* { + margin: 0 .125em; +} + +.network-status-table { + display: flex; + flex-wrap: wrap; +} + +.cbi-tooltip { + position: absolute; + z-index: 1000; + left: -10000px; + box-shadow: 0 0 2px #ccc; + border-radius: 3px; + background: #fff; + white-space: pre; + opacity: 0; + transition: opacity .25s ease-in; + padding: 2px 5px; +} + +.cbi-tooltip-container { + /* cursor: help; */ +} + + +/* Firewall */ + +.zonebadge { + display: inline-block; + border-radius: 4px; + color: #333; + white-space: nowrap; + padding: 0 8px; + cursor: pointer; +} + +.zonebadge em, +.zonebadge strong { + margin: 0 5px; +} + +.zonebadge-empty { + border: 2px dashed #ddd; + color: #ddd; + font-style: italic; +} + +.zone-forwards { + display: flex; + flex-wrap: wrap; +} + +.zone-forwards .zone-src, +.zone-forwards .zone-dest { + display: flex; + flex-direction: column; +} + +.zone-forwards>span { + flex-basis: 10%; + text-align: center; +} + +.zone-forwards>* { + flex: 1 1 40%; + padding: 1px; +} + + +/* Footer */ + +footer { + border-top: 1px solid #ddd; + color: #111; + text-align: center; + padding: 10px 0; + margin-top: 10px; +} + +footer a { + color: #0069d6; +} + +/* diy */ + +#wan4_i, +#wan6_i { + vertical-align: top; + width: 50px !important; +} + +/* login */ +body.node-main-login { + /* background: url(bg.jpg); */ + background: linear-gradient(#22b9a4, #9a87d4); + background-repeat: no-repeat; + background-size: 100% 100%; + -moz-background-size: 100% 100%; + padding-top: unset; +} + +body.node-main-login>header { + background: none; + border-bottom: none; +} + +body.node-main-login .alert-message { + z-index: 999; +} + +.node-main-login>.container>form { + width: 20rem; + display: inline-block; + padding: 1rem 1rem; + border-radius: .375rem; + text-align: center; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.node-main-login>.container>form .errorbox { + color: red; +} + +.node-main-login>.container>form>.cbi-map>h2 { + width: 100px; + height: 100px; + color: #fff; + text-align: center; + letter-spacing: 4px; + display: block; + margin: -100px auto 15px auto; + padding: 0; + text-indent: -500px; + overflow: hidden; + border-radius: 60px; + /* border: #ccc 3px solid; */ + background-image: url(wifi.png); + background-size: cover; + /* box-shadow: 0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(156, 39, 176, 0.4); */ +} + +.node-main-login>.container>form input[name='luci_username'], +.node-main-login>.container>form input[name='luci_password'] { + background: unset; + color: #000; +} + +.node-main-login>.container>form>.cbi-map>.cbi-section { + display: inline-block; +} + +.node-main-login>.container>footer { + position: absolute; + top: 40%; + left: 50%; + transform: translate(-50%, -50%); + width: 100%; + margin-top: 60px; + display: none; +} + +.node-main-login>.container>form .cbi-page-actions { + text-align: center !important; +} + +/* luci18 */ +.cbi-section-table-titles.named::before { + content: attr(data-title) " "; + display: table-cell; + padding: 5px 3px !important; + line-height: 18px; + font-weight: bold; + vertical-align: middle; + color: #811; +} + +.cbi-section-table-descr.named::before { + content: attr(data-title) " "; + display: table-cell; + padding: 10px 10px 9px; + line-height: 18px; + font-weight: bold; + vertical-align: middle; +} + +.cbi-section-table-row[data-title]::before { + border-top: 1px solid #a9b1bb26; + content: attr(data-title) " "; + display: table-cell; + padding: 10px 10px 9px; + line-height: 18px; + font-weight: bold; + vertical-align: middle; +} + +/* luci 19 */ +body.modal-overlay-active { + overflow: hidden; + height: 100vh; +} + +body.modal-overlay-active #modal_overlay { + visibility: visible; + left: 0; + right: 0; + opacity: 1; +} + +body.modal-overlay-active #modal_overlay>.modal { + align-items: center; + box-shadow: 0 0 3px #444; + display: flex; + flex-wrap: wrap; + max-height: unset; + max-width: unset; + min-height: 32px; + min-width: 270px; + /* background: linear-gradient(to bottom, #fceec1, #eedc94) repeat-x !important; */ + border-radius: 3px; + padding: 1em; + margin: 0; + position: absolute; + top: 15%; + left: 50%; + transform: translate(-50%, -15%); +} + +#modal_overlay { + visibility: hidden; + position: fixed; + top: 0; + bottom: 0; + left: -10000px; + right: 10000px; + background: rgba(0, 0, 0, 0.7); + z-index: 900; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + transition: opacity .125s ease-in; + opacity: 0; +} + +#modal_overlay>.modal.uci-dialog, +#modal_overlay>.modal.cbi-modal { + max-width: 900px; +} + +/*.modal.alert-message.notice { + position: absolute; + padding: 15px; + margin-bottom: 10px; + background: linear-gradient(to bottom, #fceec1, #eedc94) repeat-x; + border: 1px solid rgba(0, 0, 0, .1); + border-width: 2px 0; +}*/ + +.modal>* { + flex-basis: 100%; + /* line-height: normal; */ + margin-bottom: .5em; + max-width: 100%; +} + +#modal_overlay .modal>* { + flex-basis: 100%; + /* line-height: normal; */ + margin-bottom: .5em; +} + +[data-tab-title] { + height: 0; + opacity: 0; + overflow: hidden; +} + +[data-tab-active="true"], +.cbi-filebrowser.open { + height: auto; + opacity: 1; + overflow: visible; + transition: opacity .25s ease-in; +} + +.tabs>li:not(.active), +.cbi-tabmenu>.cbi-tab-disabled { + color: #999; +} + +.cbi-dynlist { + height: auto; + min-height: 30px; + display: inline-flex; + flex-direction: column; +} + +.cbi-dropdown:not(.btn):not(.cbi-button), +.cbi-dynlist { + min-width: 210px; + max-width: 400px; + width: auto; + background: white; + /* border: 1px solid #ccc; */ + border-radius: 5px; + box-sizing: border-box; + /* padding: 0 0.4em !important; */ +} + +.cbi-dynlist>.item { + margin-bottom: 4px; + box-shadow: 0 0 2px #ccc; + background: #fff; + border: 1px solid #ccc; + border-radius: 3px; + position: relative; + pointer-events: none; + padding: 2px 2em 2px 10px; +} + +.cbi-dynlist>.item::after { + content: "×"; + position: absolute; + display: inline-flex; + align-items: center; + top: -1px; + right: -1px; + bottom: -1px; + border: 1px solid #ccc; + border-radius: 0 3px 3px 0; + font-weight: 700; + color: #c44; + pointer-events: auto; + padding: 0 6px; +} + +.cbi-dynlist>.add-item, +.td.cbi-section-actions>* { + /* display: flex; */ +} + +.cbi-dynlist>.add-item>input, +.cbi-dynlist>.add-item>button { + flex: 1 1 auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.cbi-dropdown.btn>.open, +.cbi-dropdown.cbi-button>.open { + margin-left: .5em; + border-left: 1px solid; + padding: 0 .5em; +} + +.cbi-dropdown.btn>ul:not(.dropdown), +.cbi-dropdown.cbi-button>ul:not(.dropdown) { + margin: 0 0 0 13px !important; +} + +.btn.primary, +.cbi-button-action.important { + color: #fff; + background: #0069d6; + border: 1px solid #0069d6; +} + +.cbi-dropdown { + display: inline-flex !important; + cursor: pointer; + height: auto; + position: relative; + padding: 0 !important; +} + +.cbi-progressbar { + border: 1px solid #ccc; + border-radius: 3px; + position: relative; + min-width: 170px; + height: 20px; + background: #f9f9f9; + margin: 4px 0; +} + +.cbi-progressbar>div { + background: #90c0e0; + height: 100%; + transition: width .25s ease-in; + width: 0%; +} + +.cbi-progressbar::after { + position: absolute; + bottom: 0; + top: 0; + right: 0; + left: 0; + text-align: center; + text-shadow: 0 0 2px #fff; + content: attr(title); + white-space: pre; + overflow: hidden; + text-overflow: ellipsis; +} + +header [data-indicator] { + padding: 1px 3px 2px; + font-size: 9.75px; + font-weight: bold; + color: #fff !important; + text-transform: uppercase; + white-space: nowrap; + background-color: #bfbfbf; + border-radius: 3px; + text-shadow: none; + margin-left: .4em; +} + +header [data-indicator][data-style="active"] { + background-color: #62cffc; +} \ No newline at end of file diff --git a/package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/favicon.ico b/package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..77a138ba0c53da3f891857646887710d4b472fdd GIT binary patch literal 1150 zcmZQzU<5(|0R}M0U}0bo1F|%L7$l?s#Ef7P$NwD5 zyD&e$2Aer)Damoz)Z-BQhHeH9btry7RT$l_@13qXDgni$+neEMN>FdArv z0lGQBFs%lPtwI-v>Tv?n|DhPfWM1mmXwsh<2>{OOVxp*g!w@ zqKiTG6Xkx8S{(YJ#vmwkbwIoQ(e*=B!~Bd+gY5bTGY4TZ#0^ONRX{enUXU0V0QLV( zPE1sV@sVhl9&mgiiG!HP;ejTF!iAZEi$+n5hl8yD3NCej>=_t7@G~$xU}j)Az{tSR l0L0A?85r0SfW?IY1cTV^K(P)%28J8b3=GeoL-c_30szk#m9qc< literal 0 HcmV?d00001 diff --git a/package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/html5.js b/package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/html5.js new file mode 100644 index 0000000000..1ec510f2a4 --- /dev/null +++ b/package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/html5.js @@ -0,0 +1,3 @@ +// HTML5 Shiv v3 | @jon_neal @afarkas @rem | MIT/GPL2 Licensed +// Uncompressed source: https://github.com/aFarkas/html5shiv +(function(a,b){function f(a){var c,d,e,f;b.documentMode>7?(c=b.createElement("font"),c.setAttribute("data-html5shiv",a.nodeName.toLowerCase())):c=b.createElement("shiv:"+a.nodeName);while(a.firstChild)c.appendChild(a.childNodes[0]);for(d=a.attributes,e=d.length,f=0;f7?e[g][e[g].length-1]=e[g][e[g].length-1].replace(d,'$1font[data-html5shiv="$2"]'):e[g][e[g].length-1]=e[g][e[g].length-1].replace(d,"$1shiv\\:$2"),e[g]=e[g].join("}");return e.join("{")}var c=function(a){return a.innerHTML="",a.childNodes.length===1}(b.createElement("a")),d=function(a,b,c){return b.appendChild(a),(c=(c?c(a):a.currentStyle).display)&&b.removeChild(a)&&c==="block"}(b.createElement("nav"),b.documentElement,a.getComputedStyle),e={elements:"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video".split(" "),shivDocument:function(a){a=a||b;if(a.documentShived)return;a.documentShived=!0;var f=a.createElement,g=a.createDocumentFragment,h=a.getElementsByTagName("head")[0],i=function(a){f(a)};c||(e.elements.join(" ").replace(/\w+/g,i),a.createElement=function(a){var b=f(a);return b.canHaveChildren&&e.shivDocument(b.document),b},a.createDocumentFragment=function(){return e.shivDocument(g())});if(!d&&h){var j=f("div");j.innerHTML=["x"].join(""),h.insertBefore(j.lastChild,h.firstChild)}return a}};e.shivDocument(b),a.html5=e;if(c||!a.attachEvent)return;a.attachEvent("onbeforeprint",function(){if(a.html5.supportsXElement||!b.namespaces)return;b.namespaces.shiv||b.namespaces.add("shiv");var c=-1,d=new RegExp("^("+a.html5.elements.join("|")+")$","i"),e=b.getElementsByTagName("*"),g=e.length,j,k=i(h(function(a,b){var c=[],d=a.length;while(d)c.unshift(a[--d]);d=b.length;while(d)c.unshift(b[--d]);c.sort(function(a,b){return a.sourceIndex-b.sourceIndex}),d=c.length;while(d)c[--d]=c[d].styleSheet;return c}(b.getElementsByTagName("style"),b.getElementsByTagName("link"))));while(++c.pull-right>* { + position: absolute; + right: 0.5rem; + cursor: pointer; + } +} + +@media screen and (max-width: 1024px) { + body { + font-size: 12px; + } + + header { + font-size: 13px; + } + + legend { + font-size: 14px; + } + + .dropdown-menu a { + font-size: 13px; + min-width: 130px; + padding: 0 15px; + } + + .mobile-hide { + display: none; + } + + #maincontent.container { + padding: 0px 10px; + } + + div.cbi-section, + fieldset { + min-width: inherit; + overflow-x: auto; + overflow-y: hidden; + } + + .cbi-value {} + + .cbi-value-title { + width: 30%; + min-width: 0rem !important; + margin-right: 1em; + /* text-align: left; + padding-left: 1em; */ + } + + .cbi-value-field { + width: 55%; + } + + .cbi-value-description { + width: 75%; + display: inline-table; + padding: 1px 1.2rem; + background-position-y: 3px; + } + + .cbi-value-field .cbi-input-select, + .cbi-value input[type="password"], + .cbi-value input[type="text"] { + min-width: unset; + /* width: 95%; */ + } +} \ No newline at end of file diff --git a/package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/wifi.png b/package/lienol/luci-theme-bootstrap-mod/htdocs/luci-static/bootstrap_mod/wifi.png new file mode 100644 index 0000000000000000000000000000000000000000..629594f82484949c6f1161ff1be88253308197c4 GIT binary patch literal 21597 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 ozxb + Copyright 2008 Jo-Philipp Wich + Copyright 2012 David Menting + Copyright 2020 Lienol + Licensed to the public under the Apache License 2.0. +-%> + +<% + local ver = require "luci.version" +%> + + +
+ + + + + diff --git a/package/lienol/luci-theme-bootstrap-mod/luasrc/view/themes/bootstrap_mod/header.htm b/package/lienol/luci-theme-bootstrap-mod/luasrc/view/themes/bootstrap_mod/header.htm new file mode 100644 index 0000000000..f25ead693a --- /dev/null +++ b/package/lienol/luci-theme-bootstrap-mod/luasrc/view/themes/bootstrap_mod/header.htm @@ -0,0 +1,76 @@ +<%# + Copyright 2008 Steven Barth + Copyright 2008-2016 Jo-Philipp Wich + Copyright 2012 David Menting + Copyright 2020 Lienol + 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 node = disp.context.dispatched + + -- send as HTML5 + http.prepare_content("text/html") +-%> + + + + + + <%=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 -%> + + + + + + "> +
+ +
+ +
+ <%- 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.%>

+ <% if disp.lookup("admin/system/admin") then %> + + <% end %> +
+ <%- end -%> + + + + \ No newline at end of file diff --git a/package/lienol/luci-theme-bootstrap-mod/root/etc/uci-defaults/30_luci-theme-bootstrap-mod b/package/lienol/luci-theme-bootstrap-mod/root/etc/uci-defaults/30_luci-theme-bootstrap-mod new file mode 100644 index 0000000000..53f559312e --- /dev/null +++ b/package/lienol/luci-theme-bootstrap-mod/root/etc/uci-defaults/30_luci-theme-bootstrap-mod @@ -0,0 +1,6 @@ +#!/bin/sh +uci batch <<-EOF + set luci.themes.Bootstrap_Mod=/luci-static/bootstrap_mod + commit luci +EOF +exit 0