This commit is contained in:
Andras Schmelczer 2026-09-11 17:57:03 +01:00
commit 7959fe85cc
29 changed files with 1679 additions and 498 deletions

View file

@ -1,4 +1,4 @@
import { Plus, Trash2, ArrowRight, ArrowDown } from 'lucide-react';
import { ArrowRight, ArrowDown } from 'lucide-react';
import type { Project, Room, FlooringSettings, SkirtingSettings } from '../lib/types';
import { NumberField } from './Fields';
@ -17,7 +17,7 @@ export function MaterialsEditor({ project, room, changeProject, changeRoom }: Pr
const s = project.skirting;
const floor = (key: keyof FlooringSettings, value: number | string) =>
changeProject((p) => ({ ...p, flooring: { ...p.flooring, [key]: value } }));
const skirt = (key: keyof SkirtingSettings, value: number | number[]) =>
const skirt = (key: keyof SkirtingSettings, value: number) =>
changeProject((p) => ({ ...p, skirting: { ...p.skirting, [key]: value } }));
return (
@ -118,42 +118,13 @@ export function MaterialsEditor({ project, room, changeProject, changeRoom }: Pr
<h3 id="skirting-materials" className="material-heading">
Skirting boards
</h3>
{s.stockLengths.map((length, i) => (
<div className="stock-input" key={i}>
<NumberField
label={`Stock length ${i + 1}`}
value={length}
min={1}
onChange={(n) =>
skirt(
'stockLengths',
s.stockLengths.map((v, j) => (i === j ? n : v)),
)
}
/>
<button
className="icon-button"
aria-label={`Remove stock length ${i + 1}`}
disabled={s.stockLengths.length === 1}
onClick={() =>
skirt(
'stockLengths',
s.stockLengths.filter((_, j) => i !== j),
)
}
>
<Trash2 size={16} />
</button>
</div>
))}
<button
className="text-button"
onClick={() => skirt('stockLengths', [...s.stockLengths, 3600])}
disabled={s.stockLengths.length >= 10}
>
<Plus size={16} /> Add a stock length
</button>
<div className="field-grid">
<NumberField
label="Skirting board length"
value={s.stockLength}
min={1}
onChange={(n) => skirt('stockLength', n)}
/>
<NumberField
label="Skirting thickness"
value={s.thickness}