Billing rework
All checks were successful
Build and Push / build (push) Successful in 1m32s

This commit is contained in:
2026-05-02 00:34:26 +02:00
parent 08460f93d4
commit 2c1e7af797
7 changed files with 52 additions and 11 deletions

View File

@@ -20,6 +20,13 @@ interface Props {
orgName: string;
/** Default full-name for personal orgs on first edit. */
userName: string;
/**
* Default billing email — the address the user registered with.
* Used on first edit (when `initial` is null). Customers can still
* type a different address (e.g. accounting@…) but the registration
* email is a sensible starting point.
*/
userEmail: string;
}
/**
@@ -38,6 +45,7 @@ export function BillingSettingsForm({
isPersonal,
orgName,
userName,
userEmail,
}: Props) {
const t = useTranslations("settingsBilling");
const tCommon = useTranslations("common");
@@ -53,7 +61,12 @@ export function BillingSettingsForm({
const [city, setCity] = useState(initial?.city ?? "");
const [country, setCountry] = useState(initial?.country ?? "CH");
const [vatNumber, setVatNumber] = useState(initial?.vatNumber ?? "");
const [billingEmail, setBillingEmail] = useState(initial?.billingEmail ?? "");
// Default billing email to the user's registration email when no
// record exists yet. They can change it (a separate accounting
// address is common); we just want sensible pre-fill on first edit.
const [billingEmail, setBillingEmail] = useState(
initial?.billingEmail ?? userEmail ?? ""
);
const [notes, setNotes] = useState(initial?.notes ?? "");
const [submitting, setSubmitting] = useState(false);
@@ -227,7 +240,9 @@ export function BillingSettingsForm({
onChange={(e) => setNotes(e.target.value)}
rows={3}
className="w-full px-3 py-2 rounded-lg border border-border bg-surface-2 text-text-primary text-sm focus:outline-none focus:border-text-secondary"
placeholder={t("notesPlaceholder")}
placeholder={t(
isPersonal ? "notesPlaceholderPersonal" : "notesPlaceholder"
)}
/>
</div>