refactor(ui): validation as errors on attempt, help text behind the ? (#1561)
The founder flagged the app as bloated with standing instructional text. Ny verifikation: the what's-missing lines (Ange en beskrivning, Minst två rader...) rendered from the first frame because their only gate was form validity, which an empty form fails: instructions dressed as validation. The submit buttons now stay enabled and an attempt on an incomplete form is what surfaces the lines, in destructive red, per the error-on-submit idiom. The Enter-to-advance flow keeps the old completeness predicate so navigation is untouched. Matcha mot befintlig verifikation: the two-sentence explainer moved behind a ? (HelpPopover, convention 7), the N:1 note tightened, the Visa även matchade switch became a quiet link (switches are settings idiom), and Stark träff, the normal auto-selected case, renders as muted text instead of a chip (chips mark exceptions, convention 5). Deleted always-visible paraphrase lines and their orphaned keys: items_card_description, picker_description, references_subtitle, sort_stack_hint, dimensions hints, document_help, and the dead fill_balance_hint key that had no render site at all. Co-authored-by: Jakob Wennberg <311770904+jakobwennberg-oss@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Jakob Wennberg
Claude Fable 5
parent
1e9f245f7c
commit
abff8d90f6
@@ -3370,7 +3370,6 @@
|
||||
"row_menu_remove_account": "Remove posting account",
|
||||
"row_menu_set_dimensions": "Set cost centre/project",
|
||||
"row_menu_remove_dimensions": "Remove cost centre/project",
|
||||
"dimensions_default_hint": "Cost centre/project applies to all rows without their own tagging.",
|
||||
"row_dimensions_inherit_hint": "Empty fields inherit the invoice default ({dims}).",
|
||||
"revenue_account_label": "Posting account",
|
||||
"revenue_account_hint": "Leave blank to derive the sales account from the VAT rate. You may select an active balance-sheet or revenue account in class 1-3. Ignored for reverse charge and export.",
|
||||
@@ -3409,7 +3408,6 @@
|
||||
"load_customers_failed_title": "Could not load customers",
|
||||
"load_customers_failed_description": "Check your connection and try again.",
|
||||
"items_card_title": "Invoice lines",
|
||||
"items_card_description": "Add products or services",
|
||||
"more_references": "References & more",
|
||||
"description_label": "Description",
|
||||
"description_placeholder": "E.g. Instagram campaign",
|
||||
@@ -4106,7 +4104,6 @@
|
||||
"payment_reference_label": "OCR / Payment reference",
|
||||
"payment_reference_placeholder": "OCR-nummer",
|
||||
"document_label": "Invoice document",
|
||||
"document_help": "Attach the supplier's PDF or an image. The document is stored with the invoice and automatically attached to the verifikation.",
|
||||
"document_upload_in_progress_title": "The document is still uploading",
|
||||
"document_upload_in_progress_description": "Wait for the upload to finish before registering the invoice.",
|
||||
"document_upload_failed_title": "The document could not be uploaded",
|
||||
@@ -4137,7 +4134,6 @@
|
||||
"row_dimensions_aria": "Cost centre/project for row {index}",
|
||||
"row_dimensions_title": "Cost centre/project",
|
||||
"row_dimensions_inherit_hint": "Empty fields inherit the invoice default ({dims}).",
|
||||
"dimensions_default_hint": "Cost centre/project applies to all rows without their own tagging.",
|
||||
"ai_totals_label": "From invoice (AI):",
|
||||
"ai_net": "Net {amount}",
|
||||
"ai_vat": "VAT {amount}",
|
||||
@@ -4452,7 +4448,6 @@
|
||||
"sort_description_asc": "Description, A to Z",
|
||||
"sort_description_desc": "Description, Z to A",
|
||||
"sort_by": "Sort by {column}",
|
||||
"sort_stack_hint": "Tip: Shift-click a column header to add it as a secondary sort.",
|
||||
"date_from_placeholder": "From YYYY-MM-DD",
|
||||
"date_to_placeholder": "To YYYY-MM-DD",
|
||||
"filter": "Filter",
|
||||
@@ -4600,7 +4595,6 @@
|
||||
"replace_failed": "Could not upload new version.",
|
||||
"choose_from_inbox": "Choose from inbox",
|
||||
"picker_title": "Choose a document from the inbox",
|
||||
"picker_description": "Documents received by email or upload that haven't been used yet.",
|
||||
"picker_search_placeholder": "Search supplier or file name…",
|
||||
"picker_results": "{count}",
|
||||
"picker_empty": "No unused documents in the inbox.",
|
||||
@@ -4704,7 +4698,6 @@
|
||||
"no_attachments": "No documents attached",
|
||||
"references_count": "{count, plural, one {# reference} other {# references}}",
|
||||
"references_title": "Linked supporting documents",
|
||||
"references_subtitle": "Reference to the invoice that identifies the transaction, part of the audit trail.",
|
||||
"reference_invoice": "Customer invoice {number}",
|
||||
"reference_supplier_invoice": "Supplier invoice {number}",
|
||||
"currency_title": "Currency conversion",
|
||||
@@ -4817,12 +4810,10 @@
|
||||
"toast_draft_missing_docs_description": "The draft was saved, but {count} document(s) could not be attached: {files}. Open the draft to attach them again.",
|
||||
"toast_open_entry": "Open the entry",
|
||||
"fill_balance_tooltip": "Double-click to fill the balancing amount",
|
||||
"fill_balance_hint": "Tip: double-click debit or credit to fill the remaining difference.",
|
||||
"keyboard_hint": "Enter jumps to the next field: once the entry balances, Enter opens the review.",
|
||||
"review_month_changed": "Note: different month than the previous voucher ({prev} → {current}).",
|
||||
"review_period_locked": "This period is closed or locked: posting may be rejected.",
|
||||
"add_dimensions": "Cost centre/Project",
|
||||
"dimensions_apply_all_hint": "Applies to all rows without their own tag.",
|
||||
"row_dimensions_aria": "Cost centre/project for this row"
|
||||
},
|
||||
"chart_of_accounts": {
|
||||
|
||||
@@ -3370,7 +3370,6 @@
|
||||
"row_menu_remove_account": "Ta bort bokföringskonto",
|
||||
"row_menu_set_dimensions": "Ange kostnadsställe/projekt",
|
||||
"row_menu_remove_dimensions": "Ta bort kostnadsställe/projekt",
|
||||
"dimensions_default_hint": "Kostnadsställe/projekt gäller alla rader utan egen märkning.",
|
||||
"row_dimensions_inherit_hint": "Tomma fält ärver fakturans standard ({dims}).",
|
||||
"revenue_account_label": "Bokföringskonto",
|
||||
"revenue_account_hint": "Lämna tomt för att härleda försäljningskontot från momssatsen. Du kan välja ett aktivt balans- eller intäktskonto i klass 1-3. Ignoreras för omvänd skattskyldighet och export.",
|
||||
@@ -3409,7 +3408,6 @@
|
||||
"load_customers_failed_title": "Kunde inte ladda kunder",
|
||||
"load_customers_failed_description": "Kontrollera din anslutning och försök igen.",
|
||||
"items_card_title": "Fakturarader",
|
||||
"items_card_description": "Lägg till produkter eller tjänster",
|
||||
"more_references": "Referenser & mer",
|
||||
"description_label": "Beskrivning",
|
||||
"description_placeholder": "T.ex. Instagram-kampanj",
|
||||
@@ -4106,7 +4104,6 @@
|
||||
"payment_reference_label": "OCR / Betalningsreferens",
|
||||
"payment_reference_placeholder": "OCR-nummer",
|
||||
"document_label": "Fakturaunderlag",
|
||||
"document_help": "Bifoga leverantörens PDF eller en bild. Underlaget sparas med fakturan och kopplas automatiskt till verifikationen.",
|
||||
"document_upload_in_progress_title": "Underlaget laddas fortfarande upp",
|
||||
"document_upload_in_progress_description": "Vänta tills uppladdningen är klar innan du registrerar fakturan.",
|
||||
"document_upload_failed_title": "Underlaget kunde inte laddas upp",
|
||||
@@ -4137,7 +4134,6 @@
|
||||
"row_dimensions_aria": "Kostnadsställe/Projekt för rad {index}",
|
||||
"row_dimensions_title": "Kostnadsställe/Projekt",
|
||||
"row_dimensions_inherit_hint": "Tomma fält ärver fakturans standard ({dims}).",
|
||||
"dimensions_default_hint": "Kostnadsställe/projekt gäller alla rader utan egen märkning.",
|
||||
"ai_totals_label": "Från fakturan (AI):",
|
||||
"ai_net": "Netto {amount}",
|
||||
"ai_vat": "Moms {amount}",
|
||||
@@ -4452,7 +4448,6 @@
|
||||
"sort_description_asc": "Beskrivning, A till Ö",
|
||||
"sort_description_desc": "Beskrivning, Ö till A",
|
||||
"sort_by": "Sortera efter {column}",
|
||||
"sort_stack_hint": "Tips: Shift-klicka på en kolumnrubrik för att lägga till den som sekundär sortering.",
|
||||
"date_from_placeholder": "Från YYYY-MM-DD",
|
||||
"date_to_placeholder": "Till YYYY-MM-DD",
|
||||
"filter": "Filtrera",
|
||||
@@ -4600,7 +4595,6 @@
|
||||
"replace_failed": "Kunde inte ladda upp ny version.",
|
||||
"choose_from_inbox": "Välj från inkorgen",
|
||||
"picker_title": "Välj underlag från inkorgen",
|
||||
"picker_description": "Underlag som kommit in via e-post eller uppladdning och ännu inte använts.",
|
||||
"picker_search_placeholder": "Sök leverantör eller filnamn…",
|
||||
"picker_results": "{count} st",
|
||||
"picker_empty": "Inga oanvända underlag i inkorgen.",
|
||||
@@ -4704,7 +4698,6 @@
|
||||
"no_attachments": "Inga underlag bifogade",
|
||||
"references_count": "{count, plural, one {# hänvisning} other {# hänvisningar}}",
|
||||
"references_title": "Kopplat underlag",
|
||||
"references_subtitle": "Hänvisning till fakturan som identifierar affärshändelsen, del av verifieringskedjan.",
|
||||
"reference_invoice": "Kundfaktura {number}",
|
||||
"reference_supplier_invoice": "Leverantörsfaktura {number}",
|
||||
"currency_title": "Valutaomräkning",
|
||||
@@ -4817,12 +4810,10 @@
|
||||
"toast_draft_missing_docs_description": "Utkastet sparades, men {count} underlag kunde inte bifogas: {files}. Öppna utkastet för att bifoga på nytt.",
|
||||
"toast_open_entry": "Öppna verifikatet",
|
||||
"fill_balance_tooltip": "Dubbelklicka för att fylla i balanserande belopp",
|
||||
"fill_balance_hint": "Tips: dubbelklicka på debet eller kredit för att fylla i differensen.",
|
||||
"keyboard_hint": "Enter hoppar till nästa fält: när verifikatet balanserar öppnar Enter granskningen.",
|
||||
"review_month_changed": "Obs: annan månad än föregående verifikat ({prev} → {current}).",
|
||||
"review_period_locked": "Perioden är stängd eller låst: bokföring kan nekas.",
|
||||
"add_dimensions": "Kostnadsställe/Projekt",
|
||||
"dimensions_apply_all_hint": "Gäller alla rader utan egen märkning.",
|
||||
"row_dimensions_aria": "Kostnadsställe/Projekt för raden"
|
||||
},
|
||||
"chart_of_accounts": {
|
||||
|
||||
Reference in New Issue
Block a user