diff --git a/.gitignore b/.gitignore index 4b53c4c..2c1c2aa 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ var/run/* *.swp .env venv/ +node_modules diff --git a/data/www/browserconfig.xml b/data/www/browserconfig.xml index ff8704a..f4cc73a 100755 --- a/data/www/browserconfig.xml +++ b/data/www/browserconfig.xml @@ -1,2 +1,2 @@ -#692fbd \ No newline at end of file +$spicyPurple \ No newline at end of file diff --git a/data/www/css/compiled/fleet-studio.css b/data/www/css/compiled/fleet-studio.css new file mode 100644 index 0000000..092124c --- /dev/null +++ b/data/www/css/compiled/fleet-studio.css @@ -0,0 +1 @@ +.invisible{visibility:hidden!important}.hidden{display:none!important}.tac{text-align:center}a{text-decoration:none}ul.pagetab{list-style:none;margin:0;padding:0;display:flex;flex-direction:row;border-bottom:1px solid rgb(14,239,95)}ul.pagetab li{flex:1;display:flex;flex-direction:row;justify-content:center;align-items:center;border-right:1px solid rgb(14,239,95)}ul.pagetab li a{flex:1;display:flex;flex-direction:row;justify-content:center;align-items:center;padding:20px 5px;color:#0eef5f;font-weight:700;text-decoration:none}ul.pagetab li.active a{background:#0eef5f;color:#fff}html{margin:0;padding:0;display:flex;flex:1;background:#0f0035;font-family:Arial,"sans-serif";color:#fff;height:100vh}body{margin:0;padding:0;display:flex;flex:1;flex-direction:column}main{display:flex;flex:1}main .studio-frame{display:flex;flex:1}main .studio-frame iframe{display:flex;flex:1} diff --git a/data/www/css/compiled/main-studio.css b/data/www/css/compiled/main-studio.css new file mode 100644 index 0000000..1211f3d --- /dev/null +++ b/data/www/css/compiled/main-studio.css @@ -0,0 +1 @@ +*{font-family:Roboto,Arial,"sans-serif"}html{height:100vh;margin:0;padding:0;display:flex;background-color:#0f0035;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}body{margin:0;padding:0;flex:1;background-color:#0f0035;color:#fff;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}.invisible{visibility:hidden!important}.hidden{display:none!important}.tac{text-align:center}a{text-decoration:none}header{text-align:center;display:flex;justify-content:flex-start;align-items:center;align-self:stretch;padding:0 25px}header .logo{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}header .logo a{color:inherit;display:flex;justify-content:center;align-items:center}header .logo img{width:32px;height:32px;margin-right:10px}header nav{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;flex:1}header nav ul{list-style:none;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}header nav ul li{margin:0 15px}header nav ul li.user-menu{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;border:1px solid rgb(14,239,95);padding:5px 15px;border-radius:4px;background:#0eef5f33}header nav ul li.user-menu .logout{color:#fff}header nav ul li.user-menu .username{margin-right:20px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;font-weight:700;color:#0eef5f}header nav ul li.user-menu .username i{margin-right:5px;font-size:12px}header nav ul li a{color:#fff9;text-decoration:none}header nav ul li a:hover,header nav ul li.active a{color:#fff}footer{align-self:stretch;justify-content:center;align-items:center;flex-direction:column;display:flex;padding:20px}footer .version{opacity:.3}.container{background:#0000001a;margin:auto;display:flex;align-self:stretch;flex-direction:column;justify-content:flex-start;align-items:center;flex:1;min-width:70%}@media only screen and (max-width: 1200px){.container{min-width:95%}}.container.expand{min-width:100%}@media only screen and (max-width: 1200px){.container.expand{min-width:100%}}select.select-item-picker,a.btn,button{background-color:#fff;border-radius:5px;border:1px solid rgb(188,72,255);color:#251142;padding:10px 30px;text-decoration:none;margin:10px;cursor:pointer;display:flex;flex-direction:row;justify-content:center;align-items:center;font-weight:400;font-size:14px;transition:.2s linear all}a.btn:hover,button:hover{color:#bc48ff}select.select-item-picker,button.purple{font-weight:700;border:1px solid rgb(105,47,189);color:#fff;background:#692fbd;background:linear-gradient(90deg,#bc48ff,#692fbd)}button.green{font-weight:700;color:#fff;border:1px solid rgb(14,239,95);background:linear-gradient(90deg,#3cf47e,#0bbf4c)}button.normal:hover{color:#fff;border-color:#692fbd;background:#692fbd;background:linear-gradient(90deg,#bc48ff,#692fbd)}button.green:hover,button.purple:hover{border:1px solid rgb(255,255,255)}.alert{margin:10px 30px 20px;padding:20px 50px;align-self:stretch;display:flex;flex-direction:row;justify-content:center;align-items:center;border-radius:4px}.alert-info{color:#464646;border:1px solid rgb(70,70,70);background:#46464633}.alert-success{color:#0eef5f;border:1px solid rgb(14,239,95);background:#0eef5f33}.alert-error{color:#ef0e5d;border:1px solid rgb(239,14,93);background:#ef0e5d33}.alert-icon{border-radius:4px;padding:3px 4px;min-width:18px;text-align:center}.modals{position:fixed;background:#0006;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;align-items:center}.modals-outer{min-width:30%;display:flex;flex-direction:column;overflow:auto}.modals-outer .modal-close{color:#fff;font-size:30px;display:flex;flex-direction:row;justify-content:flex-end;align-items:center;margin-bottom:20px;margin-top:0}.modals-inner{background:#fff;border-radius:10px;color:#333}.modals-inner .modal h2{border-bottom:1px solid rgb(153,153,153);padding:15px;margin:0}.modals-inner .modal h3{align-self:stretch;border-bottom:1px solid rgb(153,153,153);padding:15px;margin:0}.panel{background:#ffffff26;border-radius:5px;padding:0 25px 80px;margin:10px 25px;border-left:5px solid rgb(14,239,95);align-self:stretch}.panel.no-border{border:none}.panel h3{color:#fff}.panel-inactive{background:#fff;color:#999;border-color:#999}.panel-inactive h3{color:#1a1a1a}.panel table{width:100%;margin-top:30px;border-collapse:collapse;text-align:left;font-weight:400}.panel th{border-bottom:1px solid rgb(255,255,255);border-collapse:collapse;padding:10px;font-weight:400}.panel-inactive th{border-color:#999}.panel td{border-collapse:collapse;padding:10px}.panel td a.item.sort{cursor:move}.panel td a.item-name{color:#fff}.panel-inactive td a.item-name{color:#999}.panel td a.item-name:hover{text-decoration:underline}.panel td.actions a{background:#fff;color:#333;border:1px solid rgb(153,153,153);border-radius:4px;padding:2px;width:35px;display:inline-block;text-align:center;margin:0 2px}.panel td.actions a:hover{color:#0eef5f;border-color:#0eef5f}.panel td.actions a.item-edit:hover{color:#bc48ff;border-color:#bc48ff}.panel td.actions a.item-delete:hover{color:#ef0e5d;border-color:#ef0e5d}.panel td.infos{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start}.panel td .inner{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.panel td div.badge{margin-right:5px;font-size:10px;font-weight:700}.panel a{color:#0eef5f;text-decoration:none}.panel a:hover{color:#0bbf4c}.panel.panel-menu{display:flex;flex:1;flex-direction:column;align-self:stretch;margin-right:0;border-color:#692fbd}.panel.panel-menu ul{flex:1;max-width:250px;display:flex;flex-direction:column;align-self:stretch;list-style:none;margin:0;padding:0}.panel.panel-menu ul li{margin:3px 0}.panel.panel-menu ul li a{padding:5px 15px;color:inherit;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex:1}.panel.panel-menu ul li:hover{color:#464646;font-weight:700}.panel.panel-menu ul li.active{color:#692fbd;background:#692fbd57;border-radius:4px;font-weight:700;border:1px solid rgb(105,47,189)}.panel.panel-menu ul li.active a{color:inherit}.pure-material-switch{z-index:0;position:relative;display:inline-block}.pure-material-switch>input{appearance:none;-moz-appearance:none;-webkit-appearance:none;z-index:-1;position:absolute;right:6px;top:-8px;display:block;margin:0;border-radius:50%;width:40px;height:40px;background-color:#00000061;outline:none;opacity:0;transform:scale(1);pointer-events:none;transition:opacity .3s .1s,transform .2s .1s}.pure-material-switch>span{display:inline-block;width:100%;cursor:pointer}.pure-material-switch>span:before{content:"";float:right;display:inline-block;margin:5px 0 5px 10px;border-radius:7px;width:36px;height:14px;background-color:#00000061;vertical-align:top;transition:background-color .2s,opacity .2s}.pure-material-switch>span:after{content:"";position:absolute;top:2px;right:16px;border-radius:50%;width:20px;height:20px;background-color:#fff;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:background-color .2s,transform .2s}.pure-material-switch>input:checked{right:-10px;background-color:#0eef5f}.pure-material-switch>input:checked+span:before{background-color:#0eef5f99}.pure-material-switch>input:checked+span:after{background-color:#0eef5f;transform:translate(16px)}.pure-material-switch:hover>input{opacity:.04}.pure-material-switch>input:focus{opacity:.12}.pure-material-switch:hover>input:focus{opacity:.16}.pure-material-switch>input:active{opacity:1;transform:scale(0);transition:transform 0s,opacity 0s}.pure-material-switch>input:active+span:before{background-color:#0eef5f99}.pure-material-switch>input:checked:active+span:before{background-color:#00000061}.pure-material-switch>input:disabled{opacity:0}.pure-material-switch>input:disabled+span{color:#000;opacity:.38;cursor:default}.pure-material-switch>input:disabled+span:before{background-color:#00000061}.pure-material-switch>input:checked:disabled+span:before{background-color:#0eef5f99}.login-page{max-width:600px;padding-top:50px}.card{background:#fff;border-radius:6px;padding:50px;color:#333}.card .form{padding:0}.card .form .form-group{margin:0 0 30px;padding:0}.card .form .form-group .widget{flex:1}.card .form .form-group label{text-align:left}.card button[type=submit]{margin:0 auto}.card h3{text-align:center;font-size:36px;margin:0 0 40px}span.empty{text-transform:uppercase;opacity:.5;color:#999}a.badge,.badge{display:flex;flex-direction:row;justify-content:center;align-items:center;padding:5px;border-radius:4px;font-size:12px;background:#ffffff1a;border:1px solid transparent;color:#fff}a.badge:hover{color:#fff;border:1px solid rgba(255,255,255,.4)}.panel-inactive .badge{background:#9999991a;color:#999}.panel-inactive a.badge:hover{color:#999;border:1px solid rgba(153,153,153,.2)}.badge.anonymous{opacity:.2}.explorer{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start;align-self:stretch}.explorer .left{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;flex:1}.explorer .right{flex:3;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.explorer .panel-active{background:#fff;color:#999;border-color:#999}.explorer .panel-active h3{color:#0eef5f}.explorer .panel-inactive{background:#fff;color:#999;border-color:#999}.toolbar{display:flex;flex-direction:row;padding:0 25px;align-self:stretch}.toolbar h2{padding:0 25px 0 0}.toolbar .toolbar-actions{flex:1;display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.icon-right{margin:0 0 0 10px}.icon-left{margin:0 10px 0 0}.form{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;padding:20px}.form .form-group{margin:10px 20px 5px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;flex:1}.form .form-group label{flex:1;padding:10px;text-align:right;margin-right:20px}.form .form-group .widget{flex:3;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch}.form .form-group input,.form .form-group select,.form .form-group textarea{flex:1;padding:10px 5px;border:1px solid #e6e6e6;border-radius:4px;width:auto}.form .form-group input[type=checkbox]{flex:0}.form .form-group .trigger{margin-right:10px}.form .form-group select.trigger{max-width:120px}.form .form-group span{margin-left:10px}.form .actions{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;margin-top:10px;align-self:stretch}.form .actions button.green,.form .actions button{font-size:18px}.form .actions button.green:hover{background:#fff;color:#0eef5f;border-color:#0eef5f}.form .actions button.btn-normal{color:#999;border-color:#999;font-size:18px;margin:0}.form .actions button.btn-normal:hover{color:#464646;border-color:#464646}.plugin-description{font-size:14px;margin-left:34px;color:#999}.panel-logs{padding-bottom:20px}.panel-logs pre{background:#000000e6;border:1px solid rgb(70,70,70);border-radius:4px;font-family:monospace;color:#f2f2f2;padding:20px;min-height:200px;max-height:500px;overflow:auto} diff --git a/data/www/css/lib/flatpickr.min.css b/data/www/css/lib/flatpickr.min.css index a10acc6..17f0910 100755 --- a/data/www/css/lib/flatpickr.min.css +++ b/data/www/css/lib/flatpickr.min.css @@ -1,4 +1,4 @@ -.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/* +.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:$white;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:$white}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:$white}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/* /*rtl:begin:ignore*/left:0/* /*rtl:end:ignore*/}/* /*rtl:begin:ignore*/ @@ -10,4 +10,4 @@ /*rtl:begin:ignore*/ /* /*rtl:end:ignore*/ -.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}} \ No newline at end of file +.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:$white}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:$white;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}} \ No newline at end of file diff --git a/data/www/css/main.css b/data/www/css/main.css deleted file mode 100644 index ed251b3..0000000 --- a/data/www/css/main.css +++ /dev/null @@ -1,857 +0,0 @@ -* { - font-family: Roboto; -} - -html { - height: 100vh; - margin: 0; - padding: 0; - display: flex; - background-color: #0f0035; - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; - align-self: stretch; -} - -body { - margin: 0; - padding: 0; - flex: 1; - background-color: #0f0035; - color: #fff; - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; - align-self: stretch; -} - -.invisible { - visibility: hidden !important; -} - -.hidden { - display: none !important; -} - -.tac { - text-align: center; -} - -a { - text-decoration: none; -} - -.container { - background: rgba(0, 0, 0, 0.1); - margin: auto; - display: flex; - align-self: stretch; - flex-direction: column; - justify-content: flex-start; - align-items: center; - flex: 1; - min-width: 70%; - - @media only screen and (max-width: 1200px) { - min-width: 95%; - } -} - -.container.expand { - min-width: 100%; - - @media only screen and (max-width: 1200px) { - min-width: 100%; - } -} - -header { - text-align: center; - display: flex; - justify-content: flex-start; - align-items: center; - align-self: stretch; - padding: 0 25px 0 25px; -} - -header .logo { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; -} - -header .logo a { - color: inherit; - display: flex; - justify-content: center; - align-items: center; -} - -header .logo img { - width: 32px; - height: 32px; - margin-right: 10px; -} - -header nav { - display: flex; - flex-direction: row; - justify-content: flex-end; - align-items: center; - flex: 1; -} - -header nav ul { - list-style: none; - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; -} - -header nav ul li { - margin: 0 15px; -} - -header nav ul li.user-menu { - display: flex; - flex-direction: row; - justify-content: flex-end; - align-items: center; - border: 1px solid #0bc44e; - padding: 5px 15px; - border-radius: 4px; - background: rgba(14, 239, 95, .2); -} - -header nav ul li.user-menu .logout { - color: rgb(255, 255, 255); -} - -header nav ul li.user-menu .username { - margin-right: 20px; - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - font-weight: bold; - color: #0bc44e; -} - -header nav ul li.user-menu .username i { - margin-right: 5px; - font-size: 12px; -} - -header nav ul li a { - color: rgba(255, 255, 255, 0.6); - text-decoration: none; -} - -header nav ul li a:hover, -header nav ul li.active a { - color: white; -} - -.toolbar { - display: flex; - flex-direction: row; - padding: 0 25px 0 25px; - align-self: stretch; -} - -.toolbar h2 { - padding: 0 25px 0 0; -} - -.toolbar .toolbar-actions { - flex: 1; - display: flex; - flex-direction: row; - justify-content: flex-end; - align-items: center; -} - -select.select-item-picker, -a.btn, -button { - background-color: #fff; - border-radius: 5px; - border: 1px solid #bc48ff; - color: #270035; - padding: 10px 30px; - text-decoration: none; - margin: 10px; - cursor: pointer; - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - font-weight: 400; - font-size: 14px; - transition: .2s linear all; -} - -a.btn:hover, -button:hover { - color: #bc48ff; -} - -select.select-item-picker, -button.purple { - font-weight: bold; - border: 1px solid #692fbd; - color: white; - background: #692fbd; - background: linear-gradient(90deg, #bc48ff 0%, #692fbd 100%); -} - -button.green { - font-weight: bold; - color: white; - border: 1px solid #0eef5f; - background: linear-gradient(90deg, #2fde6f 0%, #13c251 100%); -} - -button.normal:hover { - color: white; - border-color: #692fbd; - background: #692fbd; - background: linear-gradient(90deg, #bc48ff 0%, #692fbd 100%); -} - -button.green:hover, -button.purple:hover { - border: 1px solid #fff; -} - -.alert { - margin: 10px 30px 20px 30px; - padding: 20px 50px; - align-self: stretch; - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - border-radius: 4px; -} - -.alert-info { - color: rgb(70, 70, 70); - border: 1px solid rgb(70, 70, 70); - background: rgba(70, 70, 70, .2); -} - -.alert-success { - color: rgb(14, 239, 95); - border: 1px solid rgb(14, 239, 95); - background: rgba(14, 239, 95, .2); -} - -.alert-error { - color: rgb(239, 14, 93); - border: 1px solid rgb(239, 14, 93); - background: rgba(239, 14, 93, .2); -} - - -.panel { - background: rgba(255, 255, 255, 0.15); - border-radius: 5px; - padding: 0 25px 80px 25px; - margin: 10px 25px; - border-left: 5px solid #0eef5f; - align-self: stretch; -} - -.panel.no-border { - border: none; -} - -.panel h3 { - color: #fff; -} - -.panel-inactive { - background: white; - color: #AAA; - border-color: #BBB; -} - -.panel-inactive h3 { - color: #333; -} - -.panel table { - width: 100%; - margin-top: 30px; - border-collapse: collapse; - text-align: left; - font-weight: normal; -} - -.panel th { - border-bottom: 1px solid #fff; - border-collapse: collapse; - padding: 10px; - font-weight: normal; -} - -.panel-inactive th { - border-color: #EEE; - -} - -.panel td { - border-collapse: collapse; - padding: 10px; -} - -.panel td a.item.sort { - cursor: move; -} - -.panel td a.item-name { - color: white; -} - -.panel-inactive td a.item-name { - color: #AAA; -} - -.panel td a.item-name:hover { - text-decoration: underline; -} - -.panel td.actions a { - background: white; - color: #333; - border: 1px solid #AAA; - border-radius: 4px; - padding: 2px; - width: 35px; - display: inline-block; - text-align: center; - margin: 0 2px; -} - -.panel td.actions a:hover { - color: #0eef5f; - border-color: #0eef5f; -} - -.panel td.actions a.item-edit:hover { - color: #bc48ff; - border-color: #bc48ff; -} - -.panel td.actions a.item-delete:hover { - color: #ef0e0e; - border-color: #ef0e0e; -} - -.panel td.infos { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: flex-start; -} - -.panel td .inner { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; -} - -.panel td div.badge { - margin-right: 5px; - font-size: 10px; - font-weight: bold; -} - -.panel a { - color: #0eef5f; - text-decoration: none; -} - -.panel a:hover { - color: #0bc44e; -} - -.icon-right { - margin: 0 0 0 10px; -} - -.icon-left { - margin: 0 10px 0 0; -} - -.pure-material-switch { - z-index: 0; - position: relative; - display: inline-block; -} - -.pure-material-switch > input { - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; - z-index: -1; - position: absolute; - right: 6px; - top: -8px; - display: block; - margin: 0; - border-radius: 50%; - width: 40px; - height: 40px; - background-color: rgba(0, 0, 0, 0.38); - outline: none; - opacity: 0; - transform: scale(1); - pointer-events: none; - transition: opacity 0.3s 0.1s, transform 0.2s 0.1s; -} - -.pure-material-switch > span { - display: inline-block; - width: 100%; - cursor: pointer; -} - -.pure-material-switch > span::before { - content: ""; - float: right; - display: inline-block; - margin: 5px 0 5px 10px; - border-radius: 7px; - width: 36px; - height: 14px; - background-color: rgba(0, 0, 0, 0.38); - vertical-align: top; - transition: background-color 0.2s, opacity 0.2s; -} - -.pure-material-switch > span::after { - content: ""; - position: absolute; - top: 2px; - right: 16px; - border-radius: 50%; - width: 20px; - height: 20px; - background-color: rgb(255, 255, 255); - box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); - transition: background-color 0.2s, transform 0.2s; -} - -.pure-material-switch > input:checked { - right: -10px; - background-color: rgb(14, 239, 95); -} - -.pure-material-switch > input:checked + span::before { - background-color: rgba(14, 239, 95, 0.6); -} - -.pure-material-switch > input:checked + span::after { - background-color: rgb(14, 239, 95); - transform: translateX(16px); -} - -.pure-material-switch:hover > input { - opacity: 0.04; -} - -.pure-material-switch > input:focus { - opacity: 0.12; -} - -.pure-material-switch:hover > input:focus { - opacity: 0.16; -} - -.pure-material-switch > input:active { - opacity: 1; - transform: scale(0); - transition: transform 0s, opacity 0s; -} - -.pure-material-switch > input:active + span::before { - background-color: rgba(14, 239, 95, 0.6); -} - -.pure-material-switch > input:checked:active + span::before { - background-color: rgba(0, 0, 0, 0.38); -} - -.pure-material-switch > input:disabled { - opacity: 0; -} - -.pure-material-switch > input:disabled + span { - color: rgb(0, 0, 0); - opacity: 0.38; - cursor: default; -} - -.pure-material-switch > input:disabled + span::before { - background-color: rgba(0, 0, 0, 0.38); -} - -.pure-material-switch > input:checked:disabled + span::before { - background-color: rgba(14, 239, 95, 0.6); -} - -.modals { - position: fixed; - background: rgba(0, 0, 0, 0.4); - top: 0; - right: 0; - bottom: 0; - left: 0; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -.modals-outer { - min-width: 30%; - display: flex; - flex-direction: column; - overflow: auto; -} - -.modals-outer .modal-close { - color: white; - font-size: 30px; - display: flex; - flex-direction: row; - justify-content: flex-end; - align-items: center; - margin-bottom: 20px; - margin-top: 0px; -} - -.modals-inner { - background: white; - border-radius: 10px; - color: #333; -} - -.modals-inner .modal h2 { - border-bottom: 1px solid #DDD; - padding: 15px 15px; - margin: 0; -} - - -.modals-inner .modal h3 { - align-self: stretch; - border-bottom: 1px solid #DDD; - padding: 15px 15px; - margin: 0; -} - -.form { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; - padding: 20px; -} - -.form .form-group { - margin: 10px 20px 5px 20px; - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - align-self: stretch; - flex: 1; -} - -.form .form-group label { - flex: 1; - padding: 10px; - text-align: right; - margin-right: 20px; -} - -.form .form-group .widget { - flex: 3; - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - align-self: stretch; -} - -.form .form-group input, -.form .form-group select, -.form .form-group textarea { - flex: 1; - padding: 10px 5px 10px 5px; - border: 1px solid #EEE; - border-radius: 4px; - width: auto; -} - -.form .form-group input[type=checkbox] { - flex: 0; -} - -.form .form-group .trigger { - margin-right: 10px; -} - -.form .form-group select.trigger { - max-width: 120px; -} - -.form .form-group span { - margin-left: 10px; -} - -.form .actions { - display: flex; - flex-direction: row; - justify-content: flex-end; - align-items: center; - margin-top: 10px; - align-self: stretch; -} - -.form .actions button.green, -.form .actions button { - font-size: 18px; -} - -.form .actions button.green:hover { - background: white; - color: rgb(14, 239, 95); - border-color: rgb(14, 239, 95); -} - -.form .actions button.btn-normal { - color: #999; - border-color: #999; - font-size: 18px; - margin: 0; -} - -.form .actions button.btn-normal:hover { - color: #555; - border-color: #555; -} - -span.empty { - text-transform: uppercase; - opacity: 0.5; - color: #999; -} - -footer { - align-self: stretch; - justify-content: center; - align-items: center; - flex-direction: column; - display: flex; - padding: 20px; -} - -footer .version { - opacity: 0.3; -} - -.login-page { - max-width: 600px; - padding-top: 50px; -} - -.card { - background: white; - border-radius: 6px; - padding: 50px 50px; - color: #333; -} - -.card .form { - padding: 0; -} - -.card .form .form-group { - margin: 0 0 30px 0; - padding: 0; -} -.card .form .form-group .widget { - flex: 1; -} - -.card .form .form-group label { - text-align: left; -} - -.card button[type=submit] { - margin: 0 auto; -} - -.card h3 { - text-align: center; - font-size: 36px; - margin: 0 0 40px 0; -} - -a.badge, -.badge { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - padding: 5px 5px; - border-radius: 4px; - font-size: 12px; - background: rgba(255, 255, 255, .1); - border: 1px solid transparent; - color: #ffffff; -} - -a.badge:hover { - color: #FFFFFF; - border: 1px solid rgba(255,255,255,.4); -} - -.panel-inactive .badge { - background: rgba(200, 200, 200, .1); - color: #999999; -} - -.panel-inactive a.badge:hover { - color: #999999; - border: 1px solid rgba(180,180,180,.4); -} - -.badge.anonymous { - opacity: .2; -} - -.panel-logs { - padding-bottom: 20px; -} - -.panel-logs pre { - background: rgba(0,0,0,0.9); - border: 1px solid #555; - border-radius: 4px; - font-family: monospace; - color: #BBB; - padding: 20px; - min-height: 200px; - max-height: 500px; - overflow: auto; -} - -.plugin-description { - font-size: 14px; - margin-left: 34px; - color: #999; - -} - -.explorer { - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: flex-start; - align-self: stretch; -} - - -.explorer .left { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; - align-self: stretch; - flex: 1; -} - -.explorer .right { - flex: 3; - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; -} - -.panel.panel-menu { - display: flex; - flex: 1; - flex-direction: column; - align-self: stretch; - margin-right: 0; - border-color: #692fbd; -} - -.panel.panel-menu ul { - flex: 1; - max-width: 250px; - display: flex; - flex-direction: column; - align-self: stretch; - list-style: none; - margin: 0; - padding: 0; -} - -.panel.panel-menu ul li { - margin: 3px 0; -} - -.panel.panel-menu ul li a { - padding: 5px 15px 5px 15px; - color: inherit; - display: flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - flex: 1; -} - - - -.panel.panel-menu ul li:hover { - color: #555; - font-weight: bold; -} - -.panel.panel-menu ul li.active { - color: #692fbd; - background: #692fbd22; - border-radius: 4px; - font-weight: bold; - border: 1px solid #692fbd; -} - - - -.explorer .panel-active { - background: white; - color: #AAA; - border-color: #BBB; -} -.explorer .panel-active h3 { - color: #0bc44e; -} - - -.explorer .panel-inactive { - background: white; - color: #AAA; - border-color: #BBB; -} diff --git a/data/www/scss/base/_html.scss b/data/www/scss/base/_html.scss new file mode 100644 index 0000000..1225eb0 --- /dev/null +++ b/data/www/scss/base/_html.scss @@ -0,0 +1,29 @@ +* { + font-family: 'Roboto', 'Arial', 'sans-serif'; +} + +html { + height: 100vh; + margin: 0; + padding: 0; + display: flex; + background-color: $blueDark; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + align-self: stretch; +} + +body { + margin: 0; + padding: 0; + flex: 1; + background-color: $blueDark; + color: $white; + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + align-self: stretch; +} + diff --git a/data/www/scss/base/_tachyons.scss b/data/www/scss/base/_tachyons.scss new file mode 100644 index 0000000..c3858e7 --- /dev/null +++ b/data/www/scss/base/_tachyons.scss @@ -0,0 +1,16 @@ + +.invisible { + visibility: hidden !important; +} + +.hidden { + display: none !important; +} + +.tac { + text-align: center; +} + +a { + text-decoration: none; +} diff --git a/data/www/scss/components/_alerts.scss b/data/www/scss/components/_alerts.scss new file mode 100644 index 0000000..8967ca7 --- /dev/null +++ b/data/www/scss/components/_alerts.scss @@ -0,0 +1,35 @@ +.alert { + margin: 10px 30px 20px 30px; + padding: 20px 50px; + align-self: stretch; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + border-radius: 4px; +} + +.alert-info { + color: $neutralGrey; + border: 1px solid $neutralGrey; + background: rgba($neutralGrey, .2); +} + +.alert-success { + color: $success; + border: 1px solid $success; + background: rgba($success, .2); +} + +.alert-error { + color: $danger; + border: 1px solid $danger; + background: rgba($danger, .2); +} + +.alert-icon { + border-radius: 4px; + padding: 3px 4px; + min-width: 18px; + text-align: center; +} \ No newline at end of file diff --git a/data/www/scss/components/_badges.scss b/data/www/scss/components/_badges.scss new file mode 100644 index 0000000..9ece039 --- /dev/null +++ b/data/www/scss/components/_badges.scss @@ -0,0 +1,32 @@ +a.badge, +.badge { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + padding: 5px 5px; + border-radius: 4px; + font-size: 12px; + background: rgba($white, .1); + border: 1px solid transparent; + color: $white; +} + +a.badge:hover { + color: $white; + border: 1px solid rgba($white, .4); +} + +.panel-inactive .badge { + background: rgba($lightGrey, .1); + color: $lightGrey; +} + +.panel-inactive a.badge:hover { + color: $lightGrey; + border: 1px solid rgba($lightGrey,.2); +} + +.badge.anonymous { + opacity: .2; +} diff --git a/data/www/scss/components/_buttons.scss b/data/www/scss/components/_buttons.scss new file mode 100644 index 0000000..d95d78f --- /dev/null +++ b/data/www/scss/components/_buttons.scss @@ -0,0 +1,52 @@ +select.select-item-picker, +a.btn, +button { + background-color: $white; + border-radius: 5px; + border: 1px solid $sweetPurple; + color: darken($bitterPurple, 30%); + padding: 10px 30px; + text-decoration: none; + margin: 10px; + cursor: pointer; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + font-weight: 400; + font-size: 14px; + transition: .2s linear all; +} + +a.btn:hover, +button:hover { + color: $sweetPurple; +} + +select.select-item-picker, +button.purple { + font-weight: bold; + border: 1px solid $bitterPurple; + color: white; + background: $bitterPurple; + background: linear-gradient(90deg, $sweetPurple 0%, $bitterPurple 100%); +} + +button.green { + font-weight: bold; + color: white; + border: 1px solid $limeGreen; + background: linear-gradient(90deg, lighten($limeGreen, 10%) 0%, darken($limeGreen, 10%) 100%); +} + +button.normal:hover { + color: white; + border-color: $bitterPurple; + background: $bitterPurple; + background: linear-gradient(90deg, $sweetPurple 0%, $bitterPurple 100%); +} + +button.green:hover, +button.purple:hover { + border: 1px solid $white; +} diff --git a/data/www/scss/components/_cards.scss b/data/www/scss/components/_cards.scss new file mode 100644 index 0000000..669e2c5 --- /dev/null +++ b/data/www/scss/components/_cards.scss @@ -0,0 +1,38 @@ +.login-page { + max-width: 600px; + padding-top: 50px; +} + +.card { + background: $white; + border-radius: 6px; + padding: 50px 50px; + color: lighten($black, 20%); +} + +.card .form { + padding: 0; +} + +.card .form .form-group { + margin: 0 0 30px 0; + padding: 0; +} + +.card .form .form-group .widget { + flex: 1; +} + +.card .form .form-group label { + text-align: left; +} + +.card button[type=submit] { + margin: 0 auto; +} + +.card h3 { + text-align: center; + font-size: 36px; + margin: 0 0 40px 0; +} diff --git a/data/www/scss/components/_empty.scss b/data/www/scss/components/_empty.scss new file mode 100644 index 0000000..4e39276 --- /dev/null +++ b/data/www/scss/components/_empty.scss @@ -0,0 +1,5 @@ +span.empty { + text-transform: uppercase; + opacity: 0.5; + color: $lightGrey; +} diff --git a/data/www/scss/components/_explorer.scss b/data/www/scss/components/_explorer.scss new file mode 100644 index 0000000..c86d081 --- /dev/null +++ b/data/www/scss/components/_explorer.scss @@ -0,0 +1,41 @@ +.explorer { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: flex-start; + align-self: stretch; +} + +.explorer .left { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + align-self: stretch; + flex: 1; +} + +.explorer .right { + flex: 3; + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; +} + + +.explorer .panel-active { + background: $white; + color: $lightGrey; + border-color: $lightGrey; +} + +.explorer .panel-active h3 { + color: $limeGreen; +} + +.explorer .panel-inactive { + background: $white; + color: $lightGrey; + border-color: $lightGrey; +} diff --git a/data/www/scss/components/_icons.scss b/data/www/scss/components/_icons.scss new file mode 100644 index 0000000..3898e1b --- /dev/null +++ b/data/www/scss/components/_icons.scss @@ -0,0 +1,7 @@ +.icon-right { + margin: 0 0 0 10px; +} + +.icon-left { + margin: 0 10px 0 0; +} diff --git a/data/www/scss/components/_modals.scss b/data/www/scss/components/_modals.scss new file mode 100644 index 0000000..0a99d22 --- /dev/null +++ b/data/www/scss/components/_modals.scss @@ -0,0 +1,49 @@ +.modals { + position: fixed; + background: rgba($black, 0.4); + top: 0; + right: 0; + bottom: 0; + left: 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.modals-outer { + min-width: 30%; + display: flex; + flex-direction: column; + overflow: auto; +} + +.modals-outer .modal-close { + color: $white; + font-size: 30px; + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: center; + margin-bottom: 20px; + margin-top: 0px; +} + +.modals-inner { + background: $white; + border-radius: 10px; + color: lighten($black, 20%); +} + +.modals-inner .modal h2 { + border-bottom: 1px solid $lightGrey; + padding: 15px 15px; + margin: 0; +} + +.modals-inner .modal h3 { + align-self: stretch; + border-bottom: 1px solid $lightGrey; + padding: 15px 15px; + margin: 0; +} diff --git a/data/www/scss/components/_pagetab.scss b/data/www/scss/components/_pagetab.scss new file mode 100644 index 0000000..1032062 --- /dev/null +++ b/data/www/scss/components/_pagetab.scss @@ -0,0 +1,35 @@ + +ul.pagetab { + list-style: none; + margin: 0; + padding: 0; + display: flex; + flex-direction: row; + border-bottom: 1px solid $limeGreen; +} + +ul.pagetab li { + flex: 1; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + border-right: 1px solid $limeGreen; +} + +ul.pagetab li a { + flex: 1; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + padding: 20px 5px; + color: $limeGreen; + font-weight: bold; + text-decoration: none; +} + +ul.pagetab li.active a { + background: $limeGreen; + color: $white; +} diff --git a/data/www/scss/components/_panels.scss b/data/www/scss/components/_panels.scss new file mode 100644 index 0000000..f3d2443 --- /dev/null +++ b/data/www/scss/components/_panels.scss @@ -0,0 +1,173 @@ +.panel { + background: rgba($white, 0.15); + border-radius: 5px; + padding: 0 25px 80px 25px; + margin: 10px 25px; + border-left: 5px solid $limeGreen; + align-self: stretch; +} + +.panel.no-border { + border: none; +} + +.panel h3 { + color: $white; +} + +.panel-inactive { + background: $white; + color: $lightGrey; + border-color: $lightGrey; +} + +.panel-inactive h3 { + color: lighten($black, 10%); +} + +.panel table { + width: 100%; + margin-top: 30px; + border-collapse: collapse; + text-align: left; + font-weight: normal; +} + +.panel th { + border-bottom: 1px solid $white; + border-collapse: collapse; + padding: 10px; + font-weight: normal; +} + +.panel-inactive th { + border-color: $lightGrey; +} + +.panel td { + border-collapse: collapse; + padding: 10px; +} + +.panel td a.item.sort { + cursor: move; +} + +.panel td a.item-name { + color: $white; +} + +.panel-inactive td a.item-name { + color: $lightGrey; +} + +.panel td a.item-name:hover { + text-decoration: underline; +} + +.panel td.actions a { + background: $white; + color: lighten($black, 20%); + border: 1px solid $lightGrey; + border-radius: 4px; + padding: 2px; + width: 35px; + display: inline-block; + text-align: center; + margin: 0 2px; +} + +.panel td.actions a:hover { + color: $limeGreen; + border-color: $limeGreen; +} + +.panel td.actions a.item-edit:hover { + color: $sweetPurple; + border-color: $sweetPurple; +} + +.panel td.actions a.item-delete:hover { + color: $danger; + border-color: $danger; +} + +.panel td.infos { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: flex-start; +} + +.panel td .inner { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; +} + +.panel td div.badge { + margin-right: 5px; + font-size: 10px; + font-weight: bold; +} + +.panel a { + color: $limeGreen; + text-decoration: none; +} + +.panel a:hover { + color: darken($limeGreen, 10%); +} + +.panel.panel-menu { + display: flex; + flex: 1; + flex-direction: column; + align-self: stretch; + margin-right: 0; + border-color: $bitterPurple; +} + +.panel.panel-menu ul { + flex: 1; + max-width: 250px; + display: flex; + flex-direction: column; + align-self: stretch; + list-style: none; + margin: 0; + padding: 0; +} + +.panel.panel-menu ul li { + margin: 3px 0; +} + +.panel.panel-menu ul li a { + padding: 5px 15px; + color: inherit; + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + flex: 1; +} + +.panel.panel-menu ul li:hover { + color: $neutralGrey; + font-weight: bold; +} + +.panel.panel-menu ul li.active { + color: $bitterPurple; + background: rgba($bitterPurple, 0.34); + border-radius: 4px; + font-weight: bold; + border: 1px solid $bitterPurple; +} + +.panel.panel-menu ul li.active a { + color: inherit; +} diff --git a/data/www/scss/components/_switches.scss b/data/www/scss/components/_switches.scss new file mode 100644 index 0000000..997b3c8 --- /dev/null +++ b/data/www/scss/components/_switches.scss @@ -0,0 +1,116 @@ +.pure-material-switch { + z-index: 0; + position: relative; + display: inline-block; +} + +.pure-material-switch > input { + appearance: none; + -moz-appearance: none; + -webkit-appearance: none; + z-index: -1; + position: absolute; + right: 6px; + top: -8px; + display: block; + margin: 0; + border-radius: 50%; + width: 40px; + height: 40px; + background-color: rgba($black, 0.38); + outline: none; + opacity: 0; + transform: scale(1); + pointer-events: none; + transition: opacity 0.3s 0.1s, transform 0.2s 0.1s; +} + +.pure-material-switch > span { + display: inline-block; + width: 100%; + cursor: pointer; +} + +.pure-material-switch > span::before { + content: ""; + float: right; + display: inline-block; + margin: 5px 0 5px 10px; + border-radius: 7px; + width: 36px; + height: 14px; + background-color: rgba($black, 0.38); + vertical-align: top; + transition: background-color 0.2s, opacity 0.2s; +} + +.pure-material-switch > span::after { + content: ""; + position: absolute; + top: 2px; + right: 16px; + border-radius: 50%; + width: 20px; + height: 20px; + background-color: $white; + box-shadow: 0 3px 1px -2px rgba($black, 0.2), 0 2px 2px 0 rgba($black, 0.14), 0 1px 5px 0 rgba($black, 0.12); + transition: background-color 0.2s, transform 0.2s; +} + +.pure-material-switch > input:checked { + right: -10px; + background-color: $limeGreen; +} + +.pure-material-switch > input:checked + span::before { + background-color: rgba($limeGreen, 0.6); +} + +.pure-material-switch > input:checked + span::after { + background-color: $limeGreen; + transform: translateX(16px); +} + +.pure-material-switch:hover > input { + opacity: 0.04; +} + +.pure-material-switch > input:focus { + opacity: 0.12; +} + +.pure-material-switch:hover > input:focus { + opacity: 0.16; +} + +.pure-material-switch > input:active { + opacity: 1; + transform: scale(0); + transition: transform 0s, opacity 0s; +} + +.pure-material-switch > input:active + span::before { + background-color: rgba($limeGreen, 0.6); +} + +.pure-material-switch > input:checked:active + span::before { + background-color: rgba($black, 0.38); +} + +.pure-material-switch > input:disabled { + opacity: 0; +} + +.pure-material-switch > input:disabled + span { + color: $black; + opacity: 0.38; + cursor: default; +} + +.pure-material-switch > input:disabled + span::before { + background-color: rgba($black, 0.38); +} + +.pure-material-switch > input:checked:disabled + span::before { + background-color: rgba($limeGreen, 0.6); +} diff --git a/data/www/scss/components/_toolbar.scss b/data/www/scss/components/_toolbar.scss new file mode 100644 index 0000000..f607cbb --- /dev/null +++ b/data/www/scss/components/_toolbar.scss @@ -0,0 +1,18 @@ +.toolbar { + display: flex; + flex-direction: row; + padding: 0 25px; + align-self: stretch; +} + +.toolbar h2 { + padding: 0 25px 0 0; +} + +.toolbar .toolbar-actions { + flex: 1; + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: center; +} diff --git a/data/www/scss/fleet-studio.scss b/data/www/scss/fleet-studio.scss new file mode 100644 index 0000000..6531036 --- /dev/null +++ b/data/www/scss/fleet-studio.scss @@ -0,0 +1,16 @@ +// Import utility styles +@import 'utils/variables'; +@import 'utils/mixins'; + +// Import base styles +@import 'base/tachyons'; + +// Import component styles +@import 'components/pagetab'; + +// Import pages styles +@import 'pages/fleet-studio'; + + + + diff --git a/data/www/scss/forms/_forms.scss b/data/www/scss/forms/_forms.scss new file mode 100644 index 0000000..7d38aab --- /dev/null +++ b/data/www/scss/forms/_forms.scss @@ -0,0 +1,91 @@ +.form { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + padding: 20px; +} + +.form .form-group { + margin: 10px 20px 5px 20px; + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + align-self: stretch; + flex: 1; +} + +.form .form-group label { + flex: 1; + padding: 10px; + text-align: right; + margin-right: 20px; +} + +.form .form-group .widget { + flex: 3; + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + align-self: stretch; +} + +.form .form-group input, +.form .form-group select, +.form .form-group textarea { + flex: 1; + padding: 10px 5px 10px 5px; + border: 1px solid darken($white, 10%); + border-radius: 4px; + width: auto; +} + +.form .form-group input[type=checkbox] { + flex: 0; +} + +.form .form-group .trigger { + margin-right: 10px; +} + +.form .form-group select.trigger { + max-width: 120px; +} + +.form .form-group span { + margin-left: 10px; +} + +.form .actions { + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: center; + margin-top: 10px; + align-self: stretch; +} + +.form .actions button.green, +.form .actions button { + font-size: 18px; +} + +.form .actions button.green:hover { + background: white; + color: $limeGreen; + border-color: $limeGreen; +} + +.form .actions button.btn-normal { + color: $lightGrey; + border-color: $lightGrey; + font-size: 18px; + margin: 0; +} + +.form .actions button.btn-normal:hover { + color: $neutralGrey; + border-color: $neutralGrey; +} diff --git a/data/www/scss/layout/_container.scss b/data/www/scss/layout/_container.scss new file mode 100644 index 0000000..a0db3ec --- /dev/null +++ b/data/www/scss/layout/_container.scss @@ -0,0 +1,23 @@ +.container { + background: rgba($black, 0.1); + margin: auto; + display: flex; + align-self: stretch; + flex-direction: column; + justify-content: flex-start; + align-items: center; + flex: 1; + min-width: 70%; + + @media only screen and (max-width: 1200px) { + min-width: 95%; + } +} + +.container.expand { + min-width: 100%; + + @media only screen and (max-width: 1200px) { + min-width: 100%; + } +} diff --git a/data/www/scss/layout/_footer.scss b/data/www/scss/layout/_footer.scss new file mode 100644 index 0000000..24408ee --- /dev/null +++ b/data/www/scss/layout/_footer.scss @@ -0,0 +1,12 @@ +footer { + align-self: stretch; + justify-content: center; + align-items: center; + flex-direction: column; + display: flex; + padding: 20px; +} + +footer .version { + opacity: 0.3; +} diff --git a/data/www/scss/layout/_header.scss b/data/www/scss/layout/_header.scss new file mode 100644 index 0000000..531a807 --- /dev/null +++ b/data/www/scss/layout/_header.scss @@ -0,0 +1,88 @@ +header { + text-align: center; + display: flex; + justify-content: flex-start; + align-items: center; + align-self: stretch; + padding: 0 25px; +} + +header .logo { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; +} + +header .logo a { + color: inherit; + display: flex; + justify-content: center; + align-items: center; +} + +header .logo img { + width: 32px; + height: 32px; + margin-right: 10px; +} + +header nav { + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: center; + flex: 1; +} + +header nav ul { + list-style: none; + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; +} + +header nav ul li { + margin: 0 15px; +} + +header nav ul li.user-menu { + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: center; + border: 1px solid $limeGreen; + padding: 5px 15px; + border-radius: 4px; + background: rgba($limeGreen, .2); +} + +header nav ul li.user-menu .logout { + color: $white; +} + +header nav ul li.user-menu .username { + margin-right: 20px; + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + font-weight: bold; + color: $limeGreen; +} + +header nav ul li.user-menu .username i { + margin-right: 5px; + font-size: 12px; +} + +header nav ul li a { + color: rgba($white, 0.6); + text-decoration: none; +} + +header nav ul li a:hover, +header nav ul li.active a { + color: white; +} diff --git a/data/www/scss/main-studio.scss b/data/www/scss/main-studio.scss new file mode 100644 index 0000000..a21bfd7 --- /dev/null +++ b/data/www/scss/main-studio.scss @@ -0,0 +1,32 @@ +// Import utility styles +@import 'utils/variables'; +@import 'utils/mixins'; + +// Import base styles +@import 'base/html'; +@import 'base/tachyons'; + +// Import layout styles +@import 'layout/header'; +@import 'layout/footer'; +@import 'layout/container'; + +// Import component styles +@import 'components/buttons'; +@import 'components/alerts'; +@import 'components/modals'; +@import 'components/panels'; +@import 'components/switches'; +@import 'components/cards'; +@import 'components/empty'; +@import 'components/badges'; +@import 'components/explorer'; +@import 'components/toolbar'; +@import 'components/icons'; + +// Import form styles +@import 'forms/forms'; + +// Import pages styles +@import 'pages/settings'; +@import 'pages/sysinfo'; diff --git a/data/www/scss/pages/_fleet-studio.scss b/data/www/scss/pages/_fleet-studio.scss new file mode 100644 index 0000000..1051337 --- /dev/null +++ b/data/www/scss/pages/_fleet-studio.scss @@ -0,0 +1,33 @@ +html { + margin: 0; + padding: 0; + display: flex; + flex: 1; + background: $blueDark; + font-family: 'Arial', 'sans-serif'; + color: white; + height: 100vh; +} + +body { + margin: 0; + padding: 0; + display: flex; + flex: 1; + flex-direction: column +} + +main { + display: flex; + flex: 1; +} + +main .studio-frame { + display: flex; + flex: 1; +} + +main .studio-frame iframe { + display: flex; + flex: 1; +} diff --git a/data/www/scss/pages/_settings.scss b/data/www/scss/pages/_settings.scss new file mode 100644 index 0000000..d062db3 --- /dev/null +++ b/data/www/scss/pages/_settings.scss @@ -0,0 +1,5 @@ +.plugin-description { + font-size: 14px; + margin-left: 34px; + color: $lightGrey; +} \ No newline at end of file diff --git a/data/www/scss/pages/_sysinfo.scss b/data/www/scss/pages/_sysinfo.scss new file mode 100644 index 0000000..3448ac5 --- /dev/null +++ b/data/www/scss/pages/_sysinfo.scss @@ -0,0 +1,16 @@ + +.panel-logs { + padding-bottom: 20px; +} + +.panel-logs pre { + background: rgba($black, 0.9); + border: 1px solid $neutralGrey; + border-radius: 4px; + font-family: monospace; + color: darken($white, 5%); + padding: 20px; + min-height: 200px; + max-height: 500px; + overflow: auto; +} \ No newline at end of file diff --git a/data/www/scss/utils/_mixins.scss b/data/www/scss/utils/_mixins.scss new file mode 100644 index 0000000..e69de29 diff --git a/data/www/scss/utils/_variables.scss b/data/www/scss/utils/_variables.scss new file mode 100644 index 0000000..eae82c2 --- /dev/null +++ b/data/www/scss/utils/_variables.scss @@ -0,0 +1,14 @@ +// Raw Colors +$blueDark: rgb(15, 0, 53); +$pinkyRed: rgb(239, 14, 93); +$limeGreen: rgb(14, 239, 95); +$bitterPurple: rgb(105, 47, 189); +$sweetPurple: rgb(188, 72, 255); +$neutralGrey: rgb(70, 70, 70); +$lightGrey: rgb(153, 153, 153); +$white: rgb(255, 255, 255); +$black: rgb(0, 0, 0); + +// Type Colors +$success: $limeGreen; +$danger: $pinkyRed; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2bcaf9e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,996 @@ +{ + "name": "obscreen-frontend", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "obscreen-frontend", + "version": "1.0.0", + "devDependencies": { + "sass": "^1.77.6", + "vite": "^5.3.1" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/immutable": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rollup": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/sass": { + "version": "1.77.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", + "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/vite": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz", + "integrity": "sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ef4f761 --- /dev/null +++ b/package.json @@ -0,0 +1,13 @@ +{ + "name": "obscreen-frontend", + "version": "1.0.0", + "scripts": { + "build": "vite build", + "watch": "vite" + }, + "devDependencies": { + "vite": "^5.3.1", + "sass": "^1.77.6" + } +} + diff --git a/src/controller/FleetNodeStudioController.py b/src/controller/FleetNodeStudioController.py index ed74457..457ae89 100644 --- a/src/controller/FleetNodeStudioController.py +++ b/src/controller/FleetNodeStudioController.py @@ -27,7 +27,7 @@ class FleetNodeStudioController(ObController): def fleet(self): return render_template( - 'fleet/studio/fleet.jinja.html', + 'fleet/studio/fleet-studio.jinja.html', node_studios=self._model_store.node_studio().get_enabled_node_studios(), ) diff --git a/views/base.jinja.html b/views/base.jinja.html index b713194..cf245e6 100755 --- a/views/base.jinja.html +++ b/views/base.jinja.html @@ -21,15 +21,15 @@ - + - + - + {% block add_css %}{% endblock %} {{ HOOK(H_ROOT_CSS) }} diff --git a/views/fleet/studio/fleet.jinja.html b/views/fleet/studio/fleet-studio.jinja.html similarity index 60% rename from views/fleet/studio/fleet.jinja.html rename to views/fleet/studio/fleet-studio.jinja.html index 3cbb6f2..5d82084 100644 --- a/views/fleet/studio/fleet.jinja.html +++ b/views/fleet/studio/fleet-studio.jinja.html @@ -1,21 +1,10 @@ - Obscreen - Fleet View - + Obscreen - Fleet Studio + -