-
IMAGE MASTER
-
- Hue
- {
- remember();
- setAdjustment({ hslHue: Number(e.target.value) });
- }}
- />
- {(recipe.adjustments.hslHue ?? 0) > 0 ? `+${recipe.adjustments.hslHue}` : recipe.adjustments.hslHue ?? 0}
-
-
- Saturation
- {
- remember();
- setAdjustment({ hslSat: Number(e.target.value) });
- }}
- />
- {(recipe.adjustments.hslSat ?? 0) > 0 ? `+${recipe.adjustments.hslSat}` : recipe.adjustments.hslSat ?? 0}
-
-
-
Luminance
-
{
- remember();
- setAdjustment({ hslLum: Number(e.target.value) });
- }}
- />
-
{(recipe.adjustments.hslLum ?? 0) > 0 ? `+${recipe.adjustments.hslLum}` : recipe.adjustments.hslLum ?? 0}
+
+ IMAGE MASTER
+ {((recipe.adjustments.hslHue ?? 0) !== 0 || (recipe.adjustments.hslSat ?? 0) !== 0 || (recipe.adjustments.hslLum ?? 0) !== 0) ? (
+
+ ) : null}
+
v.toFixed(1)}
+ prefix="dev-hsl-master"
+ dataKey="dev-hsl-master-hue"
+ onChange={(v) => {
+ remember();
+ setAdjustment({ hslHue: v });
+ }}
+ onReset={() => {
+ remember();
+ setAdjustment({ hslHue: 0 });
+ }}
+ />
+ v.toFixed(1)}
+ prefix="dev-hsl-master"
+ dataKey="dev-hsl-master-sat"
+ onChange={(v) => {
+ remember();
+ setAdjustment({ hslSat: v });
+ }}
+ onReset={() => {
+ remember();
+ setAdjustment({ hslSat: 0 });
+ }}
+ />
+ v.toFixed(1)}
+ prefix="dev-hsl-master"
+ dataKey="dev-hsl-master-lum"
+ onChange={(v) => {
+ remember();
+ setAdjustment({ hslLum: v });
+ }}
+ onReset={() => {
+ remember();
+ setAdjustment({ hslLum: 0 });
+ }}
+ />
),
diff --git a/docker/frontend/src/styles/app.css b/docker/frontend/src/styles/app.css
index c796807..a484996 100644
--- a/docker/frontend/src/styles/app.css
+++ b/docker/frontend/src/styles/app.css
@@ -201,6 +201,30 @@
font-weight: 400;
white-space: nowrap;
}
+.chip-row.grid-4 {
+ display: grid;
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ gap: 4px;
+ width: 100%;
+}
+.chip-row.grid-4 .chip {
+ justify-content: center;
+ text-align: center;
+ flex-direction: column;
+ align-items: center;
+ gap: 2px;
+ padding: 4px 2px;
+ font-size: 10px;
+ font-weight: 400;
+ white-space: nowrap;
+}
+.chip-row.grid-4 .chip .chip-label {
+ font-size: 9.5px;
+}
+.chip-row.grid-4 .chip .chip-dot {
+ width: 8px;
+ height: 8px;
+}
.chip-label {
font-weight: 400;
letter-spacing: 0.02em;
diff --git a/docker/frontend/src/ui/ChipColumn.tsx b/docker/frontend/src/ui/ChipColumn.tsx
index a85ff75..b6c2176 100644
--- a/docker/frontend/src/ui/ChipColumn.tsx
+++ b/docker/frontend/src/ui/ChipColumn.tsx
@@ -72,19 +72,21 @@ export function ChipRow({
chips,
grid,
grid3,
+ grid4,
list,
glyph,
}: {
chips: ChipDef[];
grid?: boolean;
grid3?: boolean;
+ grid4?: boolean;
list?: boolean;
// The mark drawn at the head of every row of a `list` (a frame, a look). It
// is decoration and nothing else — the name beside it is the row.
glyph?: string;
}) {
return (
-