Fix clipped text in the invoice form

The saved-client box showed "Timber Media Pv" for "Timber Media Pvt Ltd": the form sat on a Carbon Grid nested in a
Column, whose tracks came out much narrower than the page grid, so the combo box was about 230 px wide at the default
window size and the date, GSTIN and PO fields were just as tight. The fields now sit on a plain 12-column CSS grid
(.voiced-fields), the client fields use the full width, place of supply gets its own row, and the line type select is
wide enough for "Rate x quantity".

Claude-Session: https://claude.ai/code/session_01PZypiWDfMkDTeEPeXjRhW5
This commit is contained in:
2026-10-06 09:35:02 +05:30
parent e1031b3ecc
commit 66a39b2291
2 changed files with 50 additions and 23 deletions
+23 -23
View File
@@ -800,8 +800,8 @@ export default function NewInvoice({ settings, onSettingsChange, active, onActiv
</Column>
<Column sm={4} md={8} lg={9} className="voiced-stack">
<Grid narrow>
<Column sm={4} md={4} lg={5}>
<div className="voiced-fields">
<div className="voiced-field voiced-field--4">
<TextInput
id="invoiceDate"
disabled={locked}
@@ -813,8 +813,8 @@ export default function NewInvoice({ settings, onSettingsChange, active, onActiv
setDueDate(addDays(e.target.value, settings.paymentTermsDays));
}}
/>
</Column>
<Column sm={4} md={4} lg={5}>
</div>
<div className="voiced-field voiced-field--4">
<TextInput
id="dueDate"
disabled={locked}
@@ -823,12 +823,12 @@ export default function NewInvoice({ settings, onSettingsChange, active, onActiv
value={dueDate}
onChange={(e) => setDueDate(e.target.value)}
/>
</Column>
<Column sm={4} md={8} lg={6}>
</div>
<div className="voiced-field voiced-field--4">
<TextInput id="invoiceNumber" labelText="Invoice number" value={issued?.number ?? number} readOnly />
</Column>
</div>
<Column sm={4} md={8} lg={8}>
<div className="voiced-field voiced-field--12">
<ComboBox
id="savedClient"
disabled={locked}
@@ -853,8 +853,8 @@ export default function NewInvoice({ settings, onSettingsChange, active, onActiv
>
Create client
</Button>
</Column>
<Column sm={4} md={8} lg={8}>
</div>
<div className="voiced-field voiced-field--12">
<TextInput
id="clientName"
disabled={locked}
@@ -865,8 +865,8 @@ export default function NewInvoice({ settings, onSettingsChange, active, onActiv
setClientId(null);
}}
/>
</Column>
<Column sm={4} md={8} lg={16}>
</div>
<div className="voiced-field voiced-field--12">
<TextArea
id="clientAddress"
disabled={locked}
@@ -875,8 +875,8 @@ export default function NewInvoice({ settings, onSettingsChange, active, onActiv
value={clientAddress}
onChange={(e) => setClientAddress(e.target.value)}
/>
</Column>
<Column sm={4} md={4} lg={5}>
</div>
<div className="voiced-field voiced-field--5">
<TextInput
id="clientGstin"
disabled={locked}
@@ -886,8 +886,8 @@ export default function NewInvoice({ settings, onSettingsChange, active, onActiv
invalid={Boolean(clientGstinError)}
invalidText={clientGstinError}
/>
</Column>
<Column sm={4} md={4} lg={5}>
</div>
<div className="voiced-field voiced-field--7">
<TextInput
id="poNumber"
disabled={locked}
@@ -895,8 +895,8 @@ export default function NewInvoice({ settings, onSettingsChange, active, onActiv
value={poNumber}
onChange={(e) => setPoNumber(e.target.value)}
/>
</Column>
<Column sm={4} md={8} lg={6}>
</div>
<div className="voiced-field voiced-field--12">
<Select
id="placeOfSupply"
disabled={locked}
@@ -908,8 +908,8 @@ export default function NewInvoice({ settings, onSettingsChange, active, onActiv
<SelectItem key={s.code} value={s.code} text={`${s.code} — ${s.name}`} />
))}
</Select>
</Column>
<Column sm={4} md={8} lg={16}>
</div>
<div className="voiced-field voiced-field--12">
<Toggle
id="saveClient"
disabled={locked}
@@ -917,8 +917,8 @@ export default function NewInvoice({ settings, onSettingsChange, active, onActiv
toggled={saveClient}
onToggle={setSaveClient}
/>
</Column>
</Grid>
</div>
</div>
<div>
<h3 style={{ marginBottom: "0.75rem" }}>Line items</h3>
@@ -969,7 +969,7 @@ export default function NewInvoice({ settings, onSettingsChange, active, onActiv
/>
</div>
) : null}
<div style={{ flex: "0 1 150px" }}>
<div style={{ flex: "0 1 180px" }}>
<Select
id={`mode-${index}`}
disabled={locked}