diff --git a/importarr/static/importarr.css b/importarr/static/importarr.css index ab7b726..f2d8e15 100644 --- a/importarr/static/importarr.css +++ b/importarr/static/importarr.css @@ -1,4 +1,3 @@ -:root{color-scheme:light;--bg:#f8fbff;--surface:#ffffff;--surface-2:#eef4ff;--surface-3:#dbeafe;--line:#c7d2fe;--text:#334155;--muted:#93a9c6;--heading:#3f3db6;--primary:#4b42b8;--primary-2:#776df2;--accent:#7db3f1;--cyan:#50dce5;--purple:#a56af0;--danger:#ef4444;--warn:#f59e0b;--shadow:#4b42b81f} -body{font-family:system-ui,sans-serif;margin:0;background:var(--bg);color:var(--text);font-size:14px}header,main{max-width:1280px;margin:auto;box-sizing:border-box}.topbar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.8rem;align-items:center;background:var(--surface);border-bottom:1px solid var(--line);padding:.45rem .9rem;position:sticky;top:0;z-index:2;box-shadow:0 .45rem 1.2rem var(--shadow)}.brand h1{font-size:1.35rem;margin:0;color:var(--primary)}.brand p,.top-status span{margin:0;color:var(--muted)}.top-status{min-width:0;text-align:center}.top-status strong{font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top-controls{display:flex;align-items:center;gap:.3rem}.top-controls button,.menu summary{min-width:2.25rem;min-height:2.15rem;padding:.35rem;border-radius:.3rem;background:var(--primary);color:#fff;border:1px solid var(--primary-2);text-align:center}.menu{position:relative}.menu summary{list-style:none;cursor:pointer;font-weight:800;font-size:1.15rem}.menu summary::-webkit-details-marker{display:none}.menu-panel{position:absolute;right:0;top:calc(100% + .35rem);display:grid;gap:.35rem;min-width:13rem;background:var(--surface);border:1px solid var(--line);padding:.5rem;box-shadow:0 .7rem 2rem var(--shadow)}.menu-panel a,.menu-panel button{display:block;width:100%;box-sizing:border-box;text-align:left;color:var(--text);background:var(--surface-2);text-decoration:none;border:1px solid var(--line);padding:.5rem;border-radius:.25rem;font-weight:700}.menu-panel .danger{background:#fee2e2;color:#7f1d1d}main{padding:0 .9rem .9rem}.summary-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);margin-top:.8rem;border:1px solid var(--line);box-shadow:0 .6rem 1.5rem var(--shadow)}.summary-strip article,.panel{background:var(--surface)}.summary-strip article{padding:.55rem;min-width:0}.summary-strip strong{display:block;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.summary-strip span,small,dd{color:var(--muted)}.panel{padding:.8rem;margin-top:.8rem;border:1px solid var(--line);box-shadow:0 .5rem 1.3rem var(--shadow)}.packed{background:var(--surface-2)}.packed summary{cursor:pointer;font-weight:800;font-size:1rem;color:var(--primary)}.queue-panel{background:var(--surface);color:var(--text)}.section-title{display:flex;justify-content:space-between;gap:1rem;align-items:center}.section-title h2,.job-group h3{font-size:1.55rem;line-height:1;margin:.2rem 0 .65rem;color:var(--heading)}.section-title span,.job-group h3 span{font-size:.85rem;color:var(--muted)}table{width:100%;border-collapse:collapse;background:var(--surface);margin-top:.35rem}.table-scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll table{min-width:42rem}.jobs-table table{table-layout:fixed;min-width:0}.jobs-table th:nth-child(1){width:66%}.jobs-table th:nth-child(2){width:12%}.jobs-table th:nth-child(3){width:10%}.jobs-table th:nth-child(4){width:12%}.jobs-table td{overflow:hidden;text-overflow:ellipsis}.jobs-table .file-name{font-size:.9rem;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.jobs-table small{display:block;font-size:.76rem;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}th,td{padding:.36rem .45rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}th{font-size:.75rem;color:var(--accent);font-weight:700}input,button{padding:.48rem;border-radius:.25rem;border:1px solid var(--line);box-sizing:border-box}button{background:var(--primary);color:#fff;font-weight:700;cursor:pointer;min-height:2.15rem}.danger{background:var(--danger);color:#fff}.warn{background:var(--warn);color:#451a03}.controls,.row-actions{display:flex;gap:.25rem;flex-wrap:nowrap}.row-actions button{width:1.85rem;min-width:1.85rem;min-height:1.85rem;padding:.2rem;font-size:.82rem;line-height:1}.inline-form{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.6rem}.inline-form input[name=path]{min-width:min(100%,28rem);flex:1}.info{display:grid;grid-template-columns:10rem 1fr;gap:.35rem .8rem}.info dt{font-weight:700}.info dd{margin:0;overflow-wrap:anywhere}.state{background:var(--primary);border:1px solid var(--primary-2);border-radius:999px;padding:.08rem .42rem;display:inline-block;color:#fff;font-size:.75rem;font-weight:800;line-height:1.4}.job-group{margin-top:.8rem}.job-group h3{display:flex;justify-content:space-between}.job-cards{display:none}.job-card{background:var(--surface-2);border:1px solid var(--line);margin:.4rem 0;padding:.58rem}.job-card .file-name{font-size:.95rem;word-break:break-word}.job-card dl{display:grid;grid-template-columns:5rem 1fr;gap:.25rem;margin:.45rem 0}.job-card dt{font-weight:700}.job-card dd{margin:0;word-break:break-word}dialog{max-width:min(48rem,95vw);background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:.6rem;box-shadow:0 1rem 3rem var(--shadow)}dialog::backdrop{background:#0f172a99}fieldset{border:1px solid var(--line);margin:.8rem 0}label{display:grid;gap:.3rem;margin:.6rem 0}.success{color:#16a34a}.error{color:#ef4444}.hint{color:var(--muted)} -@media (prefers-color-scheme:dark){:root{color-scheme:dark;--bg:#32415a;--surface:#40536f;--surface-2:#394a65;--surface-3:#2f3d55;--line:#33445f;--text:#f8fafc;--muted:#9fb5d1;--heading:#ffffff;--primary:#4b42b8;--primary-2:#776df2;--accent:#7db3f1;--cyan:#50dce5;--purple:#a56af0;--danger:#f87171;--warn:#fbbf24;--shadow:#18223666}.menu-panel .danger{background:#7f1d1d;color:#fee2e2}} +:root{color-scheme:light;--bg:#fff;--surface:#fff;--surface-2:#f2f7ff;--line:#d9e6fb;--text:#2f3b52;--muted:#8da5c3;--heading:#3f3db6;--primary:#4b42b8;--primary-2:#776df2;--accent:#7db3f1;--cyan:#50dce5;--purple:#a56af0;--danger:#a56af0;--warn:#50dce5;--shadow:#4b42b814}body{font-family:system-ui,sans-serif;margin:0;background:var(--bg);color:var(--text);font-size:14px}header,main{max-width:1280px;margin:auto;box-sizing:border-box}.topbar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.8rem;align-items:center;background:var(--surface);border-bottom:1px solid var(--line);padding:.45rem .9rem;position:sticky;top:0;z-index:2;box-shadow:0 .45rem 1.2rem var(--shadow)}.brand h1{font-size:1.35rem;margin:0;color:var(--primary)}.brand p,.top-status span{margin:0;color:var(--muted)}.top-status{min-width:0;text-align:center}.top-status strong{font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top-controls{display:flex;align-items:center;gap:.3rem}.top-controls button,.menu summary{min-width:2.25rem;min-height:2.15rem;padding:.35rem;border-radius:.3rem;background:var(--primary);color:#fff;border:1px solid var(--primary-2);text-align:center}.menu{position:relative}.menu summary{list-style:none;cursor:pointer;font-weight:800;font-size:1.15rem}.menu summary::-webkit-details-marker{display:none}.menu-panel{position:absolute;right:0;top:calc(100% + .35rem);display:grid;gap:.35rem;min-width:13rem;background:var(--surface);border:1px solid var(--line);padding:.5rem;box-shadow:0 .7rem 2rem var(--shadow)}.menu-panel a,.menu-panel button{display:block;width:100%;box-sizing:border-box;text-align:left;color:var(--text);background:var(--surface-2);text-decoration:none;border:1px solid var(--line);padding:.5rem;border-radius:.25rem;font-weight:700}.menu-panel .danger{background:var(--purple);color:#fff}main{padding:0 .9rem .9rem}.summary-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);margin-top:.8rem;border:1px solid var(--line);box-shadow:0 .6rem 1.5rem var(--shadow)}.summary-strip article,.panel{background:var(--surface)}.summary-strip article{padding:.55rem;min-width:0}.summary-strip strong{display:block;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.summary-strip span,small,dd{color:var(--muted)}.panel{padding:.8rem;margin-top:.8rem;border:1px solid var(--line);box-shadow:0 .5rem 1.3rem var(--shadow)}.packed{background:var(--surface-2)}.packed summary{cursor:pointer;font-weight:800;font-size:1rem;color:var(--primary)}.queue-panel{background:var(--surface);color:var(--text)}.section-title{display:flex;justify-content:space-between;gap:1rem;align-items:center}.section-title h2,.job-group h3{font-size:1.55rem;line-height:1;margin:.2rem 0 .65rem;color:var(--heading)}.section-title span,.job-group h3 span{font-size:.85rem;color:var(--muted)}table{width:100%;border-collapse:collapse;background:var(--surface);margin-top:.35rem}.table-scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll table{min-width:42rem}.jobs-table table{table-layout:fixed;min-width:0}.jobs-table th:nth-child(1){width:66%}.jobs-table th:nth-child(2){width:12%}.jobs-table th:nth-child(3){width:10%}.jobs-table th:nth-child(4){width:12%}.jobs-table td{overflow:hidden;text-overflow:ellipsis}.jobs-table .file-name{font-size:.9rem;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.jobs-table small{display:block;font-size:.76rem;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}th,td{padding:.36rem .45rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}th{font-size:.75rem;color:var(--accent);font-weight:700}input,button{padding:.48rem;border-radius:.25rem;border:1px solid var(--line);box-sizing:border-box}button{background:var(--primary);color:#fff;font-weight:700;cursor:pointer;min-height:2.15rem}.danger{background:var(--danger);color:#fff}.warn{background:var(--warn);color:#1e1b4b}.controls,.row-actions{display:flex;gap:.25rem;flex-wrap:nowrap}.row-actions button{width:1.85rem;min-width:1.85rem;min-height:1.85rem;padding:.2rem;font-size:.82rem;line-height:1}.inline-form{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.6rem}.inline-form input[name=path]{min-width:min(100%,28rem);flex:1}.info{display:grid;grid-template-columns:10rem 1fr;gap:.35rem .8rem}.info dt{font-weight:700}.info dd{margin:0;overflow-wrap:anywhere}.state{background:var(--primary);border:1px solid var(--primary-2);border-radius:999px;padding:.08rem .42rem;display:inline-block;color:#fff;font-size:.75rem;font-weight:800;line-height:1.4}.job-group{margin-top:.8rem}.job-group h3{display:flex;justify-content:space-between}.job-cards{display:none}.job-card{background:var(--surface-2);border:1px solid var(--line);margin:.4rem 0;padding:.58rem}.job-card .file-name{font-size:.95rem;word-break:break-word}.job-card dl{display:grid;grid-template-columns:5rem 1fr;gap:.25rem;margin:.45rem 0}.job-card dt{font-weight:700}.job-card dd{margin:0;word-break:break-word}dialog{max-width:min(48rem,95vw);background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:.6rem;box-shadow:0 1rem 3rem var(--shadow)}dialog::backdrop{background:#0f172a99}fieldset{border:1px solid var(--line);margin:.8rem 0}label{display:grid;gap:.3rem;margin:.6rem 0}.success{color:var(--cyan)}.error{color:var(--purple)}.hint{color:var(--muted)} +@media (prefers-color-scheme:dark){:root{color-scheme:dark;--bg:#2f3d55;--surface:#40536f;--surface-2:#374963;--line:#506684;--text:#f8fbff;--muted:#bed1e9;--heading:#fff;--primary:#776df2;--primary-2:#4b42b8;--accent:#7db3f1;--cyan:#50dce5;--purple:#a56af0;--danger:#a56af0;--warn:#50dce5;--shadow:#18223666}.topbar{background:#2f3d55}.packed{background:#374963}.queue-panel,.summary-strip article,.panel,table,dialog{background:#40536f}.menu-panel .danger{background:var(--purple);color:#fff}} @media (max-width:640px){header,main{max-width:1280px}.topbar{grid-template-columns:auto 1fr auto;padding:.4rem .55rem}.brand h1{font-size:1.05rem}.brand p{font-size:.75rem}.top-status{text-align:left}.top-status span{display:none}.top-status strong{font-size:.85rem}.summary-strip{grid-template-columns:1fr 1fr}.summary-strip article{padding:.5rem}.panel{padding:.65rem}.section-title h2,.job-group h3{font-size:1.35rem}.jobs-table{display:none}.job-cards{display:block}.table-scroll{overflow-x:auto}.controls,.inline-form{flex-direction:column}.controls button,.inline-form button,.inline-form input{width:100%}.info{grid-template-columns:1fr}.menu-panel{right:0;min-width:12rem}.job-card .file-name{word-break:break-word}.row-actions{justify-content:flex-end}.row-actions button{flex:0 0 1.9rem}} diff --git a/tests/test_status.py b/tests/test_status.py index 34078f1..872cb58 100644 --- a/tests/test_status.py +++ b/tests/test_status.py @@ -119,6 +119,9 @@ def test_stylesheet_includes_mobile_responsive_rules(): assert "@media (prefers-color-scheme:dark)" in css assert "--primary:#4b42b8" in css assert "--cyan:#50dce5" in css + assert "--bg:#fff" in css + assert "--bg:#2f3d55" in css + assert "--danger:#a56af0" in css def test_settings_endpoint_persists_arr_connection_values(tmp_path, monkeypatch):