diff --git a/README.md b/README.md index cd5a7cd..f107363 100644 --- a/README.md +++ b/README.md @@ -220,6 +220,7 @@ If nobody is working on the feature, you can clone the dev branch and make your #### Fork Contributers - [TabulateJarl8](https://github.com/TabulateJarl8) - [dhogenson](https://github.com/dhogenson) +- [Y2Kwastaken](https://github.com/Y2Kwastaken) #### Original Owner diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 23cba9f..cee46de 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -146,18 +146,12 @@ "breathing_breaks": { "message": "Breathing Breaks" }, - "music": { - "message": "Music" - }, "daily_quotes": { "message": "Daily Quotes" }, "widget_short_focus": { "message": "Focus" }, - "widget_short_music": { - "message": "Music" - }, "widget_short_breathing": { "message": "Breathing" }, diff --git a/css/content.css b/css/content.css index 36f66b7..2fc904e 100644 --- a/css/content.css +++ b/css/content.css @@ -473,7 +473,7 @@ modal. */ /* ===== GPA calculator modal (rebuilt) ===== */ #canvasrefined-gpa-modal { - --cr-gpa-course-cols: 30px minmax(0,1fr) 66px 58px 118px 16px minmax(88px,auto); + --cr-gpa-course-cols: 30px minmax(0,1fr) 80px 58px 118px 16px minmax(88px,auto); --cr-gpa-accent: var(--ic-brand-primary,#0374b5); position:fixed;inset:0;z-index:2147483100;background:rgba(15,25,40,.5);backdrop-filter:blur(3px); display:flex;align-items:flex-start;justify-content:center;padding:7vh 16px 16px; @@ -544,12 +544,12 @@ .cr-gpa-suffix {flex:none;padding:0 8px 0 2px;font-size:11px;color:var(--bctext-2,#9aa3ab);} .cr-gpa-note {color:var(--bctext-2,#9aa3ab);font-size:12px;line-height:1.5;margin:14px 0 0;padding-top:12px;border-top:1px solid var(--bcborders,#c7cdd1);} @media (max-width:720px) { - #canvasrefined-gpa-modal {--cr-gpa-course-cols:26px minmax(0,1fr) 58px 52px 108px 15px 88px;padding:4vh 8px 8px;} + #canvasrefined-gpa-modal {--cr-gpa-course-cols:26px minmax(0,1fr) 72px 52px 108px 15px 88px;padding:4vh 8px 8px;} .cr-gpa-body {grid-template-columns:1fr;} .cr-gpa-pane-scale {border-left:none;border-top:1px solid var(--bcborders,#c7cdd1);} } -/* ===== Generic dashboard widgets: Focus Timer, Music, Breathing, Quotes ===== +/* ===== Generic dashboard widgets: Focus Timer, Breathing, Quotes ===== Shared shell follows the same card look as Notes/GPA: 262px grid cell with the 36px Canvas gutter when placed before/after the course cards, and a full-width flowing card when placed in the top/bottom container row. */ @@ -575,6 +575,7 @@ width: 100%; height: 100%; margin: 0; + min-height: 0; } .canvasrefined-widget-slot .canvasrefined-widget-card {width:100%;margin:0;height:100%;} .cr-widget-head {display:flex;align-items:center;justify-content:space-between;padding:12px 14px 10px;border-bottom:1px solid var(--bcborders,#c7cdd1);} @@ -595,14 +596,14 @@ .cr-timer-preset.active {background:color-mix(in srgb, var(--bclinks,#0374b5) 18%, transparent);border-color:var(--bclinks,#0374b5);color:var(--bclinks,#0374b5);} .cr-timer-custom-row {display:flex;gap:8px;padding:10px 14px 0;align-items:center;} .cr-timer-custom-row[hidden] {display:none;} -.cr-time-fields {display:flex;gap:6px;flex:1;min-width:0;} -.cr-tf-box {display:flex;align-items:center;gap:2px;flex:1;min-width:0;border:1px solid var(--bcborders,#c7cdd1);border-radius:8px;padding:4px 8px;background:color-mix(in srgb, var(--bctext-0,#2d3b45) 5%, transparent);} -.cr-tf-box:focus-within {border-color:var(--bclinks,#0374b5);box-shadow:0 0 0 2px color-mix(in srgb, var(--bclinks,#0374b5) 22%, transparent);} -.cr-tf {width:100%;min-width:0;border:none;background:transparent;color:var(--bctext-0,#2d3b45);font:inherit;font-size:14px;font-weight:600;text-align:center;padding:2px 0;} -.cr-tf:focus {outline:none;} -.cr-tf::-webkit-outer-spin-button,.cr-tf::-webkit-inner-spin-button {-webkit-appearance:none;margin:0;} -.cr-tf-unit {font-size:10px;font-weight:700;color:var(--bctext-2,#9aa3ab);text-transform:uppercase;} -.cr-timer-custom-row .cr-widget-btn {flex:none;padding:8px 14px;} +/* Compact clock entry: 0 : 00 : 00, click a segment to edit it. */ +.cr-time-input {display:flex;align-items:center;justify-content:center;gap:1px;flex:1;min-width:0;border:1px solid var(--bcborders,#c7cdd1);border-radius:8px;padding:4px 8px;background:color-mix(in srgb, var(--bctext-0,#2d3b45) 5%, transparent);} +.cr-time-input:focus-within {border-color:var(--bclinks,#0374b5);box-shadow:0 0 0 2px color-mix(in srgb, var(--bclinks,#0374b5) 22%, transparent);} +.cr-tf {width:2.4ch;min-width:0;border:none;background:transparent;color:var(--bctext-0,#2d3b45);font:inherit;font-size:15px;font-weight:700;line-height:1.2;text-align:center;padding:0;border-radius:4px;} +.cr-tf:focus {outline:none;background:color-mix(in srgb, var(--bclinks,#0374b5) 20%, transparent);} +.cr-tf::placeholder {color:var(--bctext-2,#9aa3ab);} +.cr-tf-colon {font-size:15px;font-weight:700;color:var(--bctext-2,#9aa3ab);padding-bottom:1px;} +.cr-timer-custom-row .cr-widget-btn {flex:none;padding:7px 13px;} .cr-timer-controls {display:flex;gap:8px;padding:12px 14px 14px;} /* Breathing Breaks: 4s in / 6s out, colour shifts green -> blue when exhaling */ .canvasrefined-breathing {background:linear-gradient(160deg, color-mix(in srgb, #6ea8ff 14%, var(--bcbackground-1,#fff)), var(--bcbackground-1,#fff));} @@ -634,59 +635,21 @@ .canvasrefined-breathing.is-running .cr-breath-phase-out {animation: cr-breath-out-label 10s ease-in-out infinite;} @keyframes cr-breath-in-label {0%{opacity:1;}38%{opacity:1;}44%{opacity:0;}100%{opacity:0;}} @keyframes cr-breath-out-label {0%{opacity:0;}38%{opacity:0;}44%{opacity:1;}94%{opacity:1;}100%{opacity:0;}} -/* Music: mini player + slide-in library switcher (visual only) */ -.cr-music-list-btn {display:inline-flex;align-items:center;gap:5px;border:1px solid var(--bcborders,#c7cdd1);background:transparent;color:var(--bctext-0,#2d3b45);border-radius:999px;padding:4px 10px;font:inherit;font-size:11px;font-weight:600;cursor:pointer;} -.cr-music-list-btn:hover {border-color:var(--bctext-2,#9aa3ab);} -.cr-music-caret {transition:transform .2s;} -.canvasrefined-music.is-drawer-open .cr-music-caret {transform:rotate(180deg);} -.canvasrefined-music {position:relative;min-height:320px;} -.canvasrefined-music.container-mode {min-height:320px;} -.cr-player {display:flex;flex-direction:column;gap:12px;padding:16px 14px 10px;flex:1;justify-content:center;} -.cr-player-thumb {display:none;position:relative;height:104px;border-radius:12px;overflow:hidden;background:linear-gradient(135deg, color-mix(in srgb, var(--cr-thumb-color,#0374b5) 82%, #000 8%), color-mix(in srgb, var(--cr-thumb-color,#0374b5) 38%, var(--bcbackground-1,#fff)));} -.cr-player-thumb-mark {position:absolute;right:10px;bottom:8px;color:rgba(255,255,255,.55);line-height:0;} -.canvasrefined-music.thumb-bg .cr-player-thumb {display:block;} -.canvasrefined-music.thumb-bg .cr-player-art {display:none;} -.canvasrefined-music.no-thumb .cr-player-thumb, -.canvasrefined-music.no-thumb .cr-player-art {display:none;} -.cr-player-body {display:flex;align-items:center;gap:12px;} -.cr-player-art {flex:none;width:56px;height:56px;border-radius:14px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb, var(--bclinks,#0374b5) 16%, transparent);color:var(--bclinks,#0374b5);} -.cr-player-info {min-width:0;flex:1;} -.cr-player-title {font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;} -.cr-player-sub {font-size:11.5px;color:var(--bctext-2,#9aa3ab);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;} -.cr-player-progress {height:5px;margin:0 14px;border-radius:999px;background:color-mix(in srgb, var(--bctext-0,#2d3b45) 12%, transparent);overflow:hidden;} -.cr-player-progress-fill {height:100%;width:0;background:var(--bclinks,#0374b5);border-radius:999px;} -.cr-player-times {display:flex;justify-content:space-between;padding:5px 16px 0;font-size:10.5px;color:var(--bctext-2,#9aa3ab);font-variant-numeric:tabular-nums;} -.cr-player-controls {display:flex;align-items:center;justify-content:center;gap:16px;padding:10px 14px 14px;} -.cr-player-btn {display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:50%;background:transparent;color:var(--bctext-0,#2d3b45);cursor:pointer;} -.cr-player-btn:hover {background:color-mix(in srgb, var(--bctext-0,#2d3b45) 8%, transparent);} -.cr-player-play {width:46px;height:46px;background:var(--bclinks,#0374b5);color:#fff;} -.cr-player-play:hover {background:var(--bclinks,#0374b5);filter:brightness(1.08);} -/* Slide-in library drawer: platforms / playlists / songs */ -.cr-music-drawer {position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;background:var(--bcbackground-1,#fff);color:var(--bctext-0,#2d3b45);transform:translateX(102%);transition:transform .28s ease;visibility:hidden;box-shadow:-10px 0 26px rgba(0,0,0,.2);} -.canvasrefined-music.is-drawer-open .cr-music-drawer {transform:translateX(0);visibility:visible;} -.cr-drawer-head {display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--bcborders,#c7cdd1);} -.cr-drawer-title {font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--bctext-2,#9aa3ab);} -.cr-drawer-close {border:none;background:transparent;color:var(--bctext-2,#9aa3ab);font-size:20px;line-height:1;cursor:pointer;padding:0 5px;border-radius:6px;} -.cr-drawer-close:hover {color:var(--bctext-0,#2d3b45);background:color-mix(in srgb, var(--bctext-0,#2d3b45) 8%, transparent);} -.cr-drawer-tabs {display:flex;gap:6px;padding:8px 12px;border-bottom:1px solid var(--bcborders,#c7cdd1);} -.cr-drawer-tab {flex:1;border:1px solid transparent;background:transparent;color:var(--bctext-2,#9aa3ab);border-radius:999px;padding:6px 8px;font:inherit;font-size:11.5px;font-weight:600;cursor:pointer;} -.cr-drawer-tab:hover {color:var(--bctext-0,#2d3b45);} -.cr-drawer-tab.active {background:color-mix(in srgb, var(--bclinks,#0374b5) 16%, transparent);color:var(--bclinks,#0374b5);border-color:color-mix(in srgb, var(--bclinks,#0374b5) 45%, transparent);} -.cr-drawer-body {flex:1;overflow-y:auto;padding:8px 10px 12px;} -.cr-drawer-pane[hidden] {display:none;} -.cr-drawer-row {display:flex;align-items:center;gap:10px;padding:8px;border-radius:9px;} -.cr-drawer-row:hover {background:color-mix(in srgb, var(--bctext-0,#2d3b45) 6%, transparent);} -.cr-drawer-icon {flex:none;display:flex;line-height:0;} -.cr-drawer-icon-pl {opacity:.85;} -.cr-drawer-meta {display:flex;flex-direction:column;min-width:0;flex:1;} -.cr-drawer-name {font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;} -.cr-drawer-sub {font-size:11px;color:var(--bctext-2,#9aa3ab);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;} -.cr-drawer-chevron {flex:none;color:var(--bctext-2,#9aa3ab);font-size:16px;} -.cr-drawer-index,.cr-drawer-len {flex:none;font-size:11px;color:var(--bctext-2,#9aa3ab);font-variant-numeric:tabular-nums;} -.cr-drawer-index {width:16px;text-align:right;} -/* Daily Quote: looks only for now */ -.canvasrefined-quotes {background:linear-gradient(150deg, color-mix(in srgb, #b98cff 14%, var(--bcbackground-1,#fff)), var(--bcbackground-1,#fff));} -.cr-quote-body {padding:14px 16px 16px;display:flex;flex-direction:column;gap:6px;flex:1;justify-content:center;} -.cr-quote-mark {font-size:24px;line-height:.5;font-weight:800;color:color-mix(in srgb, var(--bclinks,#0374b5) 55%, transparent);} -.cr-quote-text {margin:0;font-size:15px;line-height:1.5;font-style:italic;color:var(--bctext-0,#2d3b45);} -.cr-quote-author {font-size:12px;font-weight:600;color:var(--bctext-2,#9aa3ab);align-self:flex-end;} +/* Breathing layout: circle + time stacked above the controls (card mode), and + circle + time on the left with the controls on the right in Top/Bottom rows. */ +.cr-breath-layout {display:flex;flex-direction:column;flex:1;min-height:0;} +.cr-breath-left {display:flex;flex-direction:column;align-items:center;justify-content:center;} +.cr-breath-right {display:flex;flex-direction:column;justify-content:center;} +.canvasrefined-breathing.container-mode .cr-breath-layout {flex-direction:row;align-items:center;gap:26px;} +.canvasrefined-breathing.container-mode .cr-breath-left {flex:0 0 40%;width:40%;max-width:40%;} +.canvasrefined-breathing.container-mode .cr-breath-right {flex:1;min-width:0;} +.canvasrefined-breathing.container-mode .cr-breath-stage {padding:8px 0;} +.canvasrefined-breathing.container-mode .cr-timer-presets {padding-top:0;} +.canvasrefined-breathing.container-mode .cr-timer-controls {padding-bottom:0;} +/* Daily Quote: text scales with the widget's own width (small grid cell vs. + full-width container row), using container-query units. */ +.canvasrefined-quotes {container-type:inline-size;background:linear-gradient(150deg, color-mix(in srgb, #b98cff 14%, var(--bcbackground-1,#fff)), var(--bcbackground-1,#fff));} +.cr-quote-body {padding:clamp(12px,4.5cqw,26px);display:flex;flex-direction:column;gap:clamp(4px,1.6cqw,12px);flex:1;justify-content:center;} +.cr-quote-mark {font-size:clamp(20px,11cqw,44px);line-height:.5;font-weight:800;color:color-mix(in srgb, var(--bclinks,#0374b5) 55%, transparent);} +.cr-quote-text {margin:0;font-size:clamp(14px,7.5cqw,26px);line-height:1.45;font-style:italic;color:var(--bctext-0,#2d3b45);} +.cr-quote-author {font-size:clamp(11px,3.6cqw,17px);font-weight:600;color:var(--bctext-2,#9aa3ab);align-self:flex-end;} diff --git a/css/popup.css b/css/popup.css index 180acf6..3d14d90 100644 --- a/css/popup.css +++ b/css/popup.css @@ -407,11 +407,21 @@ input[type="checkbox"]:checked {background: #8dd28d;} .widget-order-strip[data-area="cards_end"] .wos-item {flex: 1 1 0;} /* Widget sections (Widgets tab): two side-by-side columns; add future widgets as one more .option-container inside .widgets-grid. */ -.widgets-grid {display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:stretch;margin-top:8px;} -.widgets-grid .option-container {margin-top:0;box-sizing:border-box;} +.widgets-grid {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:stretch;margin-top:8px;} +.widgets-grid .option-container {margin-top:0;box-sizing:border-box;min-width:0;} /* Widget position dropdowns (Widgets tab) — mirror #todo_timeframe exactly: same font, padding, radius, colors and full-width stacked layout. */ .widget-pos {font-size:12px;background:var(--inputbg);color:#e2e2e2;border:none;border-radius:7px;padding:6px 8px;font-family:inherit;width:100%;box-sizing:border-box;margin-top:2px;margin-bottom:6px;color-scheme:dark;} .widget-pos option {background:#1e1e1e;color:#e2e2e2;} .widget-pos option:checked, .widget-pos option:hover {background:#2e2e2e;color:#fff;} +/* Inline rows: the label sits on the same line as its control. */ +.widget-inline-row {display:flex;align-items:center;gap:8px;} +.widget-inline-label {flex:none;} +.widget-inline-select {flex:1;min-width:0;margin-top:0;margin-bottom:0;} +/* Compact clock entry (preset lengths), matching the on-canvas widget. */ +.popup-time-input {display:flex;align-items:center;justify-content:center;gap:1px;flex:1;min-width:0;background:var(--inputbg);border-radius:7px;padding:4px 6px;} +.popup-time-input:focus-within {box-shadow:0 0 0 2px rgba(86,202,240,.35);} +.popup-tf {width:2.2ch;min-width:0;border:none;background:transparent;color:#e2e2e2;font:inherit;font-size:13px;font-weight:700;text-align:center;padding:0;border-radius:4px;} +.popup-tf:focus {outline:none;background:rgba(127,127,127,.28);} +.popup-tf-colon {font-size:13px;font-weight:700;color:#9aa3ab;} diff --git a/html/popup.html b/html/popup.html index ec1cbf2..f57ba9b 100644 --- a/html/popup.html +++ b/html/popup.html @@ -1135,6 +1135,14 @@ +