sokko-g/website/src/styles/toolboxes/_task-planner.scss
Shinuwa e4cbe3e087
All checks were successful
Deploy Sokko G / deploy (push) Successful in 14s
Highlight task planner items near reset
2026-08-20 16:42:41 +02:00

749 lines
17 KiB
SCSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Rôle : gère l’outil task planner, ses catégories, relations et réglages.
@use "../mixins";
.task-planner-module {
display: grid;
gap: var(--space-4);
padding: var(--space-4);
}
.task-planner-topbar {
display: grid;
gap: 10px;
align-items: stretch;
}
.task-planner-topbar .inline-form {
padding: 0;
}
.task-planner-add-stack {
display: grid;
gap: var(--space-3);
}
.task-planner-add-stack .text-import-actions {
padding-top: var(--space-2);
}
.task-planner-global-controls {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
gap: 10px;
}
.task-planner-settings-toggle,
.task-planner-dropdown-button,
.task-planner-settings-button {
display: inline-grid;
width: 34px;
min-width: 34px;
min-height: 34px;
place-items: center;
padding: 0;
border: 1px solid rgba(165, 180, 252, 0.1);
border-radius: var(--radius-md);
background: rgba(21, 26, 48, 0.76);
color: var(--color-text-secondary);
}
.task-planner-settings-toggle {
grid-template-columns: 16px minmax(0, auto);
width: auto;
max-width: 100%;
padding: 0 12px;
gap: 8px;
}
.task-planner-settings-toggle span {
overflow: hidden;
font-size: var(--font-size-xs);
font-weight: 900;
text-overflow: ellipsis;
white-space: nowrap;
}
.task-planner-settings-toggle .ui-icon,
.task-planner-dropdown-button .ui-icon,
.task-planner-settings-button .ui-icon {
width: 16px;
height: 16px;
}
.task-planner-clear-completed-button {
display: inline-flex;
min-height: 38px;
align-items: center;
justify-content: center;
gap: 8px;
padding: 0 12px;
white-space: nowrap;
}
.task-planner-clear-completed-button .ui-icon {
width: 15px;
height: 15px;
}
.task-planner-settings {
display: grid;
grid-template-columns: minmax(130px, 1fr) minmax(110px, 0.72fr);
gap: 10px;
align-items: end;
padding: 12px;
border: 1px solid rgba(165, 180, 252, 0.12);
border-radius: var(--radius-md);
background:
linear-gradient(135deg, rgba(139, 92, 246, 0.06), transparent 58%),
rgba(7, 10, 24, 0.34);
}
.task-planner-settings-actions {
display: flex;
grid-column: 1 / -1;
justify-content: flex-end;
}
.task-planner-settings label,
.task-planner-reset-override {
display: grid;
gap: 6px;
min-width: 0;
}
.task-planner-settings span,
.task-planner-reset-override > span,
.task-planner-relations > span {
color: var(--color-text-secondary);
font-size: var(--font-size-xs);
font-weight: 900;
text-transform: uppercase;
}
.task-planner-settings select,
.task-planner-settings input,
.task-planner-add-form select,
.task-planner-type-select,
.task-planner-reset-override select,
.task-planner-reset-override input,
.task-planner-relations select,
.combos-device-row select,
.equipment-planner-socket-links select,
.equipment-planner-socket-controls select {
width: 100%;
min-height: 36px;
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
background-color: rgba(15, 23, 42, 0.64);
color: var(--color-text-primary);
}
.task-planner-settings select option,
.task-planner-add-form select option,
.task-planner-type-select option,
.task-planner-reset-override select option,
.task-planner-relations select option,
.combos-device-row select option,
.equipment-planner-socket-links select option,
.equipment-planner-socket-controls select option {
background: #11182f;
color: var(--color-text-primary);
}
.task-planner-add-form {
grid-template-columns: minmax(0, 1fr) minmax(120px, 0.36fr) auto;
}
.task-planner-list {
display: grid;
gap: 10px;
margin: 0;
padding: 0;
list-style: none;
}
.task-planner-child-list {
position: relative;
gap: 8px;
margin-top: 8px;
padding-left: 22px;
}
.task-planner-child-list::before {
content: "";
position: absolute;
top: -4px;
bottom: 15px;
left: 7px;
width: 1px;
background: linear-gradient(180deg, rgba(246, 196, 83, 0.46), rgba(139, 92, 246, 0.18));
}
.task-planner-child-list > .task-planner-item {
position: relative;
}
.task-planner-hidden-parent {
position: relative;
display: grid;
gap: 8px;
min-width: 0;
padding: 10px;
border: 1px solid rgba(165, 180, 252, 0.1);
border-radius: var(--radius-md);
background:
linear-gradient(135deg, rgba(148, 163, 184, 0.035), transparent 56%),
rgba(5, 7, 17, 0.28);
}
.task-planner-hidden-parent > .task-planner-child-list {
margin-top: 0;
}
.task-planner-child-list > .task-planner-item::before,
.task-planner-child-list > .task-planner-hidden-parent::before {
content: "";
position: absolute;
top: 25px;
left: -15px;
width: 11px;
height: 1px;
background: rgba(246, 196, 83, 0.46);
}
.task-planner-hidden-parent-line {
display: grid;
grid-template-columns: 24px minmax(0, 1fr) auto;
gap: 8px;
align-items: center;
min-height: 34px;
padding: 6px 10px;
border: 1px solid rgba(165, 180, 252, 0.08);
border-radius: var(--radius-md);
background:
linear-gradient(135deg, rgba(148, 163, 184, 0.04), transparent 58%),
rgba(5, 7, 17, 0.24);
opacity: 0.76;
}
.task-planner-hidden-parent-line > input[type="checkbox"] {
justify-self: center;
}
.task-planner-hidden-parent-line > span {
min-width: 0;
overflow: hidden;
color: var(--color-text-muted);
font-size: var(--font-size-sm);
font-weight: 800;
text-decoration: line-through;
text-overflow: ellipsis;
white-space: nowrap;
}
.task-planner-hidden-parent-line > small {
color: rgba(180, 189, 211, 0.62);
font-size: var(--font-size-xs);
font-weight: 900;
}
.task-planner-empty {
padding: var(--space-4);
border: 1px dashed rgba(165, 180, 252, 0.18);
border-radius: var(--radius-md);
color: var(--color-text-muted);
text-align: center;
}
.task-planner-category-boundary-drop-zone {
min-height: 10px;
border: 1px dashed rgba(165, 180, 252, 0.16);
border-radius: var(--radius-sm);
background: rgba(15, 23, 42, 0.12);
}
.task-planner-category-boundary-drop-zone.is-drop-target {
border-color: rgba(246, 196, 83, 0.72);
background: rgba(246, 196, 83, 0.08);
box-shadow: inset 0 0 0 1px rgba(246, 196, 83, 0.24);
}
.task-planner-category-section {
display: grid;
gap: 8px;
padding: 10px;
border: 1px solid rgba(246, 196, 83, 0.16);
border-radius: var(--radius-md);
background:
linear-gradient(135deg, rgba(246, 196, 83, 0.04), transparent 42%),
rgba(7, 10, 24, 0.18);
}
.task-planner-category-header {
padding: 0 2px;
}
.task-planner-category-title {
display: inline-flex;
flex: 1 1 auto;
min-width: 0;
align-items: center;
gap: 8px;
}
.task-planner-category-actions {
display: inline-flex;
flex: 0 0 auto;
align-items: center;
gap: 8px;
}
.task-planner-category-header h3 {
min-width: 0;
margin: 0;
overflow: hidden;
color: var(--color-accent-gold);
font-size: var(--font-size-sm);
text-overflow: ellipsis;
white-space: nowrap;
}
.task-planner-category-actions > span {
flex: 0 0 auto;
padding: 3px 9px;
border: 1px solid rgba(246, 196, 83, 0.22);
border-radius: var(--radius-pill);
background: rgba(246, 196, 83, 0.08);
color: var(--color-text-secondary);
font-size: var(--font-size-xs);
font-weight: 800;
}
.task-planner-category-section.is-complete .task-planner-category-header h3 {
color: var(--color-text-muted);
text-decoration: line-through;
}
.task-planner-category-section.is-dragging {
cursor: grabbing;
opacity: 0.58;
transform: scale(0.99);
}
.task-planner-category-section.is-drop-target {
border-color: rgba(246, 196, 83, 0.72);
}
.task-planner-category-section.is-drop-target.drop-after {
border-color: rgba(246, 196, 83, 0.72);
}
.task-planner-item {
position: relative;
display: grid;
gap: 10px;
padding: 10px;
border: 1px solid rgba(165, 180, 252, 0.12);
border-radius: var(--radius-md);
background: rgba(5, 7, 17, 0.36);
}
.task-planner-item.is-complete > .task-planner-line {
opacity: 0.78;
}
.task-planner-item.has-missing-prerequisite {
border-color: rgba(246, 196, 83, 0.34);
background:
linear-gradient(135deg, rgba(246, 196, 83, 0.06), transparent 44%),
rgba(5, 7, 17, 0.36);
}
.task-planner-item.is-reset-soon:not(.is-complete) {
border-color: rgba(34, 211, 238, 0.34);
box-shadow:
inset 0 0 0 1px rgba(34, 211, 238, 0.07),
0 0 0 rgba(34, 211, 238, 0);
animation: task-planner-reset-soon-pulse 2600ms var(--ease-standard) infinite;
}
@keyframes task-planner-reset-soon-pulse {
0%,
100% {
border-color: rgba(34, 211, 238, 0.26);
box-shadow:
inset 0 0 0 1px rgba(34, 211, 238, 0.05),
0 0 0 rgba(34, 211, 238, 0);
}
50% {
border-color: rgba(34, 211, 238, 0.44);
box-shadow:
inset 0 0 0 1px rgba(34, 211, 238, 0.1),
0 0 12px rgba(34, 211, 238, 0.07);
}
}
@media (prefers-reduced-motion: reduce) {
.task-planner-item.is-reset-soon:not(.is-complete) {
animation: none;
}
}
.task-planner-line {
display: grid;
grid-template-columns: 30px 24px minmax(0, 1fr) 134px auto auto;
gap: 8px;
align-items: center;
}
.task-planner-line > input[type="checkbox"] {
justify-self: center;
}
.task-planner-drag-handle,
.task-planner-category-drag-handle,
.task-planner-delete-button {
display: inline-grid;
width: 30px;
min-width: 30px;
min-height: 30px;
place-items: center;
padding: 0;
border: 1px solid rgba(165, 180, 252, 0.1);
border-radius: var(--radius-md);
background: rgba(21, 26, 48, 0.76);
color: var(--color-text-secondary);
}
.task-planner-drag-handle:disabled {
cursor: not-allowed;
opacity: 0.3;
}
.task-planner-drag-handle .ui-icon,
.task-planner-category-drag-handle .ui-icon,
.task-planner-delete-button .ui-icon {
width: 15px;
height: 15px;
}
.task-planner-actions {
display: inline-flex;
justify-content: flex-end;
gap: 6px;
}
.task-planner-title-input {
font-weight: 800;
}
.task-planner-item.is-complete > .task-planner-line .task-planner-title-input {
color: var(--color-text-muted);
text-decoration: line-through;
}
.task-planner-type-select {
appearance: none;
-webkit-appearance: none;
width: 100%;
min-height: 36px;
overflow: hidden;
padding: 0 30px 0 10px;
border-color: rgba(165, 180, 252, 0.09);
text-overflow: ellipsis;
background-image:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23c4b5fd' viewBox='-6.5 0 32 32'%3E%3Cpath d='M18.813 11.406l-7.906 9.906c-.75.906-1.906.906-2.625 0L.376 11.406c-.75-.938-.375-1.656.781-1.656h16.875c1.188 0 1.531.719.781 1.656z'/%3E%3C/svg%3E"),
linear-gradient(135deg, rgba(139, 92, 246, 0.04), rgba(31, 41, 78, 0.08)),
linear-gradient(rgba(21, 26, 48, 0.38), rgba(21, 26, 48, 0.38));
background-position:
calc(100% - 10px) 50%,
0 0,
0 0;
background-size:
11px 11px,
auto,
auto;
background-repeat: no-repeat;
color: var(--color-text-secondary);
font-size: var(--font-size-xs);
font-weight: 900;
}
.task-planner-type-select:hover,
.task-planner-type-select:focus {
border-color: rgba(196, 181, 253, 0.22);
background-image:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23f6c453' viewBox='-6.5 0 32 32'%3E%3Cpath d='M18.813 11.406l-7.906 9.906c-.75.906-1.906.906-2.625 0L.376 11.406c-.75-.938-.375-1.656.781-1.656h16.875c1.188 0 1.531.719.781 1.656z'/%3E%3C/svg%3E"),
linear-gradient(135deg, rgba(246, 196, 83, 0.06), rgba(139, 92, 246, 0.08)),
linear-gradient(rgba(21, 26, 48, 0.58), rgba(21, 26, 48, 0.58));
color: var(--color-text-primary);
}
.task-planner-warning {
display: inline-flex;
align-items: center;
padding: 4px 8px;
border: 1px solid rgba(246, 196, 83, 0.28);
border-radius: var(--radius-pill);
background: rgba(246, 196, 83, 0.08);
color: var(--color-accent-gold);
font-size: var(--font-size-xs);
font-weight: 900;
white-space: nowrap;
}
.task-planner-prerequisite-tooltip {
display: grid;
gap: 7px;
min-width: 180px;
}
.task-planner-prerequisite-tooltip strong {
color: var(--color-text-primary);
font-size: var(--font-size-xs);
}
.task-planner-prerequisite-tooltip > span {
display: grid;
gap: 4px;
}
.task-planner-prerequisite-tooltip > span > span {
min-width: 0;
overflow: hidden;
color: var(--color-text-secondary);
text-overflow: ellipsis;
white-space: nowrap;
}
.inline-notice {
display: inline-flex;
width: fit-content;
max-width: 100%;
align-items: center;
gap: 7px;
padding: 5px 9px;
border: 1px solid rgba(246, 196, 83, 0.28);
border-radius: var(--radius-md);
background:
linear-gradient(135deg, rgba(246, 196, 83, 0.1), rgba(139, 92, 246, 0.08)),
rgba(9, 12, 28, 0.9);
box-shadow: 0 10px 24px rgba(2, 6, 23, 0.22);
color: var(--color-accent-gold);
font-size: var(--font-size-xs);
font-weight: 900;
line-height: 1.2;
animation: inline-notice-in 160ms ease;
}
.inline-notice .ui-icon {
width: 14px;
height: 14px;
flex: 0 0 auto;
}
.task-planner-notice {
position: absolute;
top: 48px;
left: 72px;
z-index: 2;
pointer-events: none;
}
@keyframes inline-notice-in {
from {
opacity: 0;
transform: translateY(-2px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.task-planner-description-panel,
.task-planner-task-settings {
margin-left: 62px;
}
.task-planner-description-panel {
display: grid;
gap: 10px;
}
.task-planner-category-field,
.task-planner-description-field {
display: grid;
gap: 6px;
min-width: 0;
}
.task-planner-category-field span,
.task-planner-description-field span {
color: var(--color-text-secondary);
font-size: var(--font-size-xs);
font-weight: 900;
text-transform: uppercase;
}
.task-planner-category-field input {
width: 100%;
}
.task-planner-category-field.is-disabled span {
color: rgba(148, 163, 184, 0.72);
}
.task-planner-category-field.is-disabled input,
.task-planner-category-field input:disabled {
border-color: rgba(165, 180, 252, 0.08);
background:
linear-gradient(135deg, rgba(148, 163, 184, 0.05), transparent 62%),
rgba(15, 23, 42, 0.42);
box-shadow: none;
color: rgba(203, 213, 225, 0.66);
cursor: not-allowed;
}
.task-planner-description {
min-height: 72px;
resize: vertical;
}
.task-planner-task-settings {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
gap: 12px;
align-items: start;
padding: 10px;
border: 1px solid rgba(165, 180, 252, 0.1);
border-radius: var(--radius-md);
background: rgba(7, 10, 24, 0.24);
}
.task-planner-reset-control {
display: grid;
grid-template-columns: minmax(0, 1fr) 34px;
gap: 8px;
align-items: center;
}
.task-planner-reset-control button {
display: inline-grid;
width: 34px;
min-width: 34px;
min-height: 36px;
place-items: center;
padding: 0;
border: 1px solid rgba(165, 180, 252, 0.12);
border-radius: var(--radius-md);
background: rgba(21, 26, 48, 0.58);
color: var(--color-text-secondary);
}
.task-planner-reset-control button:disabled {
opacity: 0.42;
cursor: not-allowed;
}
.task-planner-reset-control button .ui-icon {
width: 14px;
height: 14px;
}
.task-planner-reset-override.is-empty p {
display: grid;
min-height: 36px;
align-items: center;
margin: 0;
padding: 0 12px;
border: 1px solid rgba(165, 180, 252, 0.08);
border-radius: var(--radius-md);
background: rgba(15, 23, 42, 0.34);
color: var(--color-text-muted);
font-size: var(--font-size-sm);
font-weight: 800;
}
.task-planner-relations {
display: grid;
grid-column: span 1;
gap: 6px;
min-width: 0;
}
.task-planner-relations > div {
display: grid;
gap: 6px;
min-height: 36px;
}
.task-planner-relations em {
color: var(--color-text-muted);
font-size: var(--font-size-xs);
font-style: normal;
}
.task-planner-relation-chip {
display: grid;
grid-template-columns: minmax(0, 1fr) auto 28px;
gap: 8px;
align-items: center;
padding: 4px 5px 4px 9px;
border: 1px solid rgba(165, 180, 252, 0.12);
border-radius: var(--radius-md);
background: rgba(21, 26, 48, 0.46);
}
.task-planner-relation-chip > span {
min-width: 0;
overflow: hidden;
color: var(--color-text-secondary);
font-size: var(--font-size-xs);
font-weight: 800;
text-overflow: ellipsis;
white-space: nowrap;
}
.task-planner-relation-chip label {
display: inline-flex;
align-items: center;
gap: 5px;
color: var(--color-text-muted);
font-size: var(--font-size-xs);
font-weight: 800;
}
.task-planner-relation-chip label input {
min-height: 0;
}
.task-planner-relation-chip button {
display: inline-flex;
width: 26px;
min-width: 26px;
min-height: 26px;
align-items: center;
justify-content: center;
gap: 5px;
padding: 0;
border: 1px solid rgba(165, 180, 252, 0.12);
border-radius: var(--radius-md);
background: rgba(21, 26, 48, 0.58);
color: var(--color-text-secondary);
font-size: var(--font-size-xs);
font-weight: 800;
}
.task-planner-relation-chip button .ui-icon {
width: 12px;
height: 12px;
}
.task-planner-relations select {
min-height: 36px;
padding-inline: 10px;
}