feat(plan): render category colors from DB via --cat-color
Replace 14 hardcoded per-category CSS rules with a single --cat-color custom property set inline on each filled cell button, driven by the DB categories list threaded from PlanWork → PlanGrid → PlanRangeChips. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -418,41 +418,13 @@
|
||||
bottom: 8px;
|
||||
width: 3px;
|
||||
border-radius: 2px;
|
||||
background: var(--plan-paper-rule);
|
||||
background: var(--cat-color, var(--plan-paper-rule));
|
||||
transition:
|
||||
background var(--motion-fast) ease,
|
||||
box-shadow var(--motion-fast) ease,
|
||||
transform var(--motion-fast) ease;
|
||||
}
|
||||
|
||||
/* When the cell has a chip, paint the tape to match the category. We use
|
||||
the chip's class — but since the tape lives on the *button* and the
|
||||
category class lives on the inner chip span, we paint it from a custom
|
||||
property set on the button via JS-free attribute mapping. As a simpler
|
||||
approach, color the tape by reading the .plan-chip--* class of the
|
||||
*first descendant* with a CSS selector — modern browsers support :has(). */
|
||||
.plan-cell:has(.plan-chip--work)::before {
|
||||
background: var(--plan-tape-work);
|
||||
}
|
||||
.plan-cell:has(.plan-chip--preparation)::before {
|
||||
background: var(--plan-tape-preparation);
|
||||
}
|
||||
.plan-cell:has(.plan-chip--travel)::before {
|
||||
background: var(--plan-tape-travel);
|
||||
}
|
||||
.plan-cell:has(.plan-chip--leave)::before {
|
||||
background: var(--plan-tape-leave);
|
||||
}
|
||||
.plan-cell:has(.plan-chip--sick)::before {
|
||||
background: var(--plan-tape-sick);
|
||||
}
|
||||
.plan-cell:has(.plan-chip--training)::before {
|
||||
background: var(--plan-tape-training);
|
||||
}
|
||||
.plan-cell:has(.plan-chip--other)::before {
|
||||
background: var(--plan-tape-other);
|
||||
}
|
||||
|
||||
.plan-cell:hover {
|
||||
background: var(--plan-cell-bg-hover);
|
||||
}
|
||||
@@ -677,67 +649,27 @@
|
||||
font-family: var(--plan-font-body);
|
||||
/* Category chip is small, monoline. The heavy color lives on the tape
|
||||
on the cell edge — the chip is the *text* version of the same color. */
|
||||
color: var(--plan-ink);
|
||||
background: color-mix(in srgb, var(--plan-paper) 60%, var(--plan-paper-soft));
|
||||
border: 1px solid var(--plan-paper-rule);
|
||||
color: var(--cat-color, var(--plan-ink));
|
||||
background: color-mix(
|
||||
in srgb,
|
||||
var(--cat-color, var(--plan-paper-soft)) 10%,
|
||||
var(--plan-paper)
|
||||
);
|
||||
border: 1px solid
|
||||
color-mix(
|
||||
in srgb,
|
||||
var(--cat-color, var(--plan-paper-rule)) 35%,
|
||||
transparent
|
||||
);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* Category chips inherit the cell's tape color via :has() */
|
||||
.plan-cell:has(.plan-chip--work) .plan-chip--work {
|
||||
color: var(--plan-tape-work);
|
||||
border-color: color-mix(in srgb, var(--plan-tape-work) 35%, transparent);
|
||||
background: color-mix(in srgb, var(--plan-tape-work) 10%, var(--plan-paper));
|
||||
}
|
||||
.plan-cell:has(.plan-chip--preparation) .plan-chip--preparation {
|
||||
color: var(--plan-tape-preparation);
|
||||
border-color: color-mix(
|
||||
in srgb,
|
||||
var(--plan-tape-preparation) 35%,
|
||||
transparent
|
||||
);
|
||||
background: color-mix(
|
||||
in srgb,
|
||||
var(--plan-tape-preparation) 10%,
|
||||
var(--plan-paper)
|
||||
);
|
||||
}
|
||||
.plan-cell:has(.plan-chip--travel) .plan-chip--travel {
|
||||
color: var(--plan-tape-travel);
|
||||
border-color: color-mix(in srgb, var(--plan-tape-travel) 35%, transparent);
|
||||
background: color-mix(
|
||||
in srgb,
|
||||
var(--plan-tape-travel) 10%,
|
||||
var(--plan-paper)
|
||||
);
|
||||
}
|
||||
.plan-cell:has(.plan-chip--leave) .plan-chip--leave {
|
||||
color: var(--plan-tape-leave);
|
||||
border-color: color-mix(in srgb, var(--plan-tape-leave) 35%, transparent);
|
||||
background: color-mix(in srgb, var(--plan-tape-leave) 10%, var(--plan-paper));
|
||||
}
|
||||
.plan-cell:has(.plan-chip--sick) .plan-chip--sick {
|
||||
color: var(--plan-tape-sick);
|
||||
border-color: color-mix(in srgb, var(--plan-tape-sick) 35%, transparent);
|
||||
background: color-mix(in srgb, var(--plan-tape-sick) 10%, var(--plan-paper));
|
||||
}
|
||||
.plan-cell:has(.plan-chip--training) .plan-chip--training {
|
||||
color: var(--plan-tape-training);
|
||||
border-color: color-mix(in srgb, var(--plan-tape-training) 35%, transparent);
|
||||
background: color-mix(
|
||||
in srgb,
|
||||
var(--plan-tape-training) 10%,
|
||||
var(--plan-paper)
|
||||
);
|
||||
}
|
||||
.plan-cell:has(.plan-chip--other) .plan-chip--other {
|
||||
color: var(--plan-tape-other);
|
||||
border-color: color-mix(in srgb, var(--plan-tape-other) 35%, transparent);
|
||||
background: color-mix(in srgb, var(--plan-tape-other) 10%, var(--plan-paper));
|
||||
}
|
||||
|
||||
[data-theme="dark"] .plan-chip {
|
||||
background: color-mix(in srgb, var(--plan-cell-bg) 90%, var(--plan-paper));
|
||||
background: color-mix(
|
||||
in srgb,
|
||||
var(--cat-color, var(--plan-cell-bg)) 16%,
|
||||
var(--plan-paper)
|
||||
);
|
||||
}
|
||||
|
||||
.plan-chip-project {
|
||||
|
||||
Reference in New Issue
Block a user