diff --git a/app/(dashboard)/bookkeeping/[id]/page.tsx b/app/(dashboard)/bookkeeping/[id]/page.tsx index 388945da..2effb33d 100644 --- a/app/(dashboard)/bookkeeping/[id]/page.tsx +++ b/app/(dashboard)/bookkeeping/[id]/page.tsx @@ -681,7 +681,7 @@ export default function JournalEntryDetailPage({ params }: { params: Promise<{ i {attachmentCount === 0 && references.length === 0 ? (
- + {t('no_attachments')}
) : ( diff --git a/app/(dashboard)/invoices/[id]/page.tsx b/app/(dashboard)/invoices/[id]/page.tsx index 3b5bbe92..b96639c7 100644 --- a/app/(dashboard)/invoices/[id]/page.tsx +++ b/app/(dashboard)/invoices/[id]/page.tsx @@ -1390,7 +1390,7 @@ export default function InvoiceDetailPage({ params }: { params: Promise<{ id: st className={cn( 'flex items-center gap-2', invoice.status === 'paid' && 'text-success', - invoice.status === 'partially_paid' && 'text-warning-foreground', + invoice.status === 'partially_paid' && 'text-attn', )} > {invoice.status === 'paid' ? ( @@ -1423,7 +1423,7 @@ export default function InvoiceDetailPage({ params }: { params: Promise<{ id: st

{formatCurrency( @@ -1567,7 +1567,7 @@ export default function InvoiceDetailPage({ params }: { params: Promise<{ id: st {/* Credit note reference (if this invoice was credited) */} {creditNote && ( - + )} diff --git a/app/(dashboard)/salary/employees/[id]/page.tsx b/app/(dashboard)/salary/employees/[id]/page.tsx index 656db559..415dc5a2 100644 --- a/app/(dashboard)/salary/employees/[id]/page.tsx +++ b/app/(dashboard)/salary/employees/[id]/page.tsx @@ -481,7 +481,7 @@ export default function EmployeeDetailPage({ params }: { params: Promise<{ id: s {showChecksumWarning && ( -

{t('bank_warn_checksum')}

+

{t('bank_warn_checksum')}

)}

{t('form_bank_hint')}

diff --git a/components/auth/BankIdAuth.tsx b/components/auth/BankIdAuth.tsx index 336c5501..a1bb9f37 100644 --- a/components/auth/BankIdAuth.tsx +++ b/components/auth/BankIdAuth.tsx @@ -465,14 +465,14 @@ export function BankIdAuth({ mode, onComplete, hero = false }: BankIdAuthProps) if (status === 'service_unavailable') { return ( -
+
- +
-

+

BankID är inte tillgängligt just nu

-

+

{mode === 'login' ? 'Logga in med e-post och lösenord nedan, eller använd "Glömt lösenord?" för en inloggningslänk via e-post.' : mode === 'signup' @@ -483,7 +483,7 @@ export function BankIdAuth({ mode, onComplete, hero = false }: BankIdAuthProps) onClick={startSession} variant="ghost" size="sm" - className="mt-1 h-auto px-0 py-0 text-xs text-amber-600 underline underline-offset-2 hover:text-amber-800 dark:text-amber-400" + className="mt-1 h-auto px-0 py-0 text-xs text-muted-foreground underline underline-offset-2 hover:text-foreground" > Försök med BankID igen diff --git a/components/auth/SessionTimeoutModal.tsx b/components/auth/SessionTimeoutModal.tsx index 27c239a1..5f8f604b 100644 --- a/components/auth/SessionTimeoutModal.tsx +++ b/components/auth/SessionTimeoutModal.tsx @@ -35,7 +35,7 @@ export function SessionTimeoutModal({ onInteractOutside={(event) => event.preventDefault()} > -

+
{t('warning_title')} diff --git a/components/bookkeeping/ActivateAccountsDialog.tsx b/components/bookkeeping/ActivateAccountsDialog.tsx index f009efa2..3e8e3145 100644 --- a/components/bookkeeping/ActivateAccountsDialog.tsx +++ b/components/bookkeeping/ActivateAccountsDialog.tsx @@ -130,10 +130,10 @@ export function ActivateAccountsDialog({ )} {!loading && unknownRows.length > 0 && ( -
+

Finns inte i BAS-katalogen:

{unknownRows.map((r) => r.account_number).join(', ')}

-

+

Skapa dem som egna konton, eller kontrollera inmatningen.

{onCreateUnknown && ( diff --git a/components/bookkeeping/AddAccountDialog.tsx b/components/bookkeeping/AddAccountDialog.tsx index 31bc4fc0..842ccca0 100644 --- a/components/bookkeeping/AddAccountDialog.tsx +++ b/components/bookkeeping/AddAccountDialog.tsx @@ -184,9 +184,9 @@ export function AddAccountDialog({
{isBASMatch && ( -
- -

+

+ +

Kontonummer {accountNumber} finns i BAS-standarden. Använd "BAS-katalog"-fliken för att aktivera standardkonton istället.

diff --git a/components/bookkeeping/AttachmentPreviewSheet.tsx b/components/bookkeeping/AttachmentPreviewSheet.tsx index aead8cfc..d0584058 100644 --- a/components/bookkeeping/AttachmentPreviewSheet.tsx +++ b/components/bookkeeping/AttachmentPreviewSheet.tsx @@ -321,8 +321,8 @@ export default function AttachmentPreviewSheet({ {isPdfType(doc.mime_type, doc.file_name) && integrity[doc.id] === 'invalid' && (
-
- +
+

{t('corrupt_title')}

@@ -420,8 +420,8 @@ export default function AttachmentPreviewSheet({
-
- +
+
{tj('remove_blocked_title')}
diff --git a/components/bookkeeping/CorrectOpeningBalanceDialog.tsx b/components/bookkeeping/CorrectOpeningBalanceDialog.tsx index 6416583f..57d636a2 100644 --- a/components/bookkeeping/CorrectOpeningBalanceDialog.tsx +++ b/components/bookkeeping/CorrectOpeningBalanceDialog.tsx @@ -135,7 +135,7 @@ export default function CorrectOpeningBalanceDialog({ {/* Storno explanation: a booked verifikat can't be edited in place */} -
+

En bokförd verifikation kan inte ändras direkt (Bokföringslagen). När du sparar stornas diff --git a/components/bookkeeping/JournalEntryAttachments.tsx b/components/bookkeeping/JournalEntryAttachments.tsx index 30dd42ff..895fd900 100644 --- a/components/bookkeeping/JournalEntryAttachments.tsx +++ b/components/bookkeeping/JournalEntryAttachments.tsx @@ -432,8 +432,8 @@ export default function JournalEntryAttachments({

-
- +
+
{t('remove_blocked_title')}
diff --git a/components/bookkeeping/JournalEntryForm.tsx b/components/bookkeeping/JournalEntryForm.tsx index 1b1203d5..c0b39442 100644 --- a/components/bookkeeping/JournalEntryForm.tsx +++ b/components/bookkeeping/JournalEntryForm.tsx @@ -1277,9 +1277,9 @@ export default function JournalEntryForm({
{(monthChanged || selectedPeriodLocked) && ( -
- -
+
+ +
{monthChanged && (

{t('review_month_changed', { prev: monthLabel(lastPostedMonth as string), current: monthLabel(entryMonth) })} @@ -1291,7 +1291,7 @@ export default function JournalEntryForm({ )} {uploadedFiles.filter((f) => f.status === 'uploaded').length === 0 && ( -

+

{t('no_doc_body')}

@@ -1510,9 +1510,9 @@ export default function JournalEntryForm({ )} {periodMismatch === 'no_period' && ( -
- -
+
+ +

{t('no_period_warning', { date: entryDate })}

{t('no_period_help')}

@@ -2043,9 +2043,9 @@ export default function JournalEntryForm({ warningText={embedded ? '' : t('review_warning')} > {(monthChanged || selectedPeriodLocked) && ( -
- -
+
+ +
{monthChanged && (

{t('review_month_changed', { diff --git a/components/bookkeeping/year-end/DispositionsStep.tsx b/components/bookkeeping/year-end/DispositionsStep.tsx index a52383d8..5cd2c431 100644 --- a/components/bookkeeping/year-end/DispositionsStep.tsx +++ b/components/bookkeeping/year-end/DispositionsStep.tsx @@ -237,7 +237,7 @@ export function DispositionsStep({ fiscalYear={fiscalYear} /> {taxDepreciationDirty && ( -

+

Spara eller återställ ändringarna i skattemässig avskrivning innan du lämnar steget.

)} @@ -302,7 +302,7 @@ export function DispositionsStep({ {proposal.warnings?.map((warning) => ( - + {warning} @@ -335,7 +335,7 @@ export function DispositionsStep({ {completed.warnings.length > 0 && ( {completed.warnings.map((warning) => ( -

{warning}

+

{warning}

))}
)} @@ -378,7 +378,7 @@ export function DispositionsStep({ )} {taxDepreciationDirty && ( -

+

Spara eller återställ ändringarna i skattemässig avskrivning innan du lämnar steget.

)} @@ -582,7 +582,7 @@ function ProposalCard({ {proposal.warnings.map((w, i) => ( -

+

{w}

))} diff --git a/components/bookkeeping/year-end/EfDeclarationSection.tsx b/components/bookkeeping/year-end/EfDeclarationSection.tsx index 86fd0e18..bc5c2d09 100644 --- a/components/bookkeeping/year-end/EfDeclarationSection.tsx +++ b/components/bookkeeping/year-end/EfDeclarationSection.tsx @@ -186,7 +186,7 @@ export function EfDeclarationSection({ {noPostedEntries && ( - +

Inga verifikat bokförda i perioden.{' '} Värdena nedan baseras enbart på NE-bilagans räkenskapsschema (intäkter och @@ -298,7 +298,7 @@ export function EfDeclarationSection({ {inputWarnings.map((w, i) => ( - +

{w}

@@ -335,7 +335,7 @@ export function EfDeclarationSection({
{item.warnings.length > 0 && ( - + {item.warnings.map((w, i) => (

{w}

))} diff --git a/components/dashboard/SandboxBanner.tsx b/components/dashboard/SandboxBanner.tsx index baff6525..7434153d 100644 --- a/components/dashboard/SandboxBanner.tsx +++ b/components/dashboard/SandboxBanner.tsx @@ -17,20 +17,22 @@ export function SandboxBanner() { router.push('/register') } + // Primary-on-secondary, not a solid amber bar: the sandbox notice is + // environment chrome, and chrome never wears the warning fill. return ( -
+
Sandlådemiljö: AI och externa tjänster är avstängda. Data raderas efter 24h. + {/* Warning-variant confirms use the default primary button: in + chrome only --destructive survives as a colored action. */}