Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
bb6895c
feat: show connection status and last sync time for bank accounts and…
marufsharifi Jun 17, 2026
987214e
prettier fix
marufsharifi Jun 18, 2026
d7ca6d1
fix wallet connection status row UI
marufsharifi Jun 19, 2026
b17ae30
Extract shared connection status badge
marufsharifi Jun 19, 2026
33715ba
Remove unlock magic string
marufsharifi Jun 19, 2026
faf19f9
Share policy ID helper
marufsharifi Jun 19, 2026
e33e3d2
Gate disabled bank account CTA
marufsharifi Jun 19, 2026
75e8fc0
reuse state helper
marufsharifi Jun 19, 2026
32cffdd
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jun 19, 2026
a6e4064
Extract shared inline status message
marufsharifi Jun 19, 2026
8fe9a87
Extract connection status message component
marufsharifi Jun 19, 2026
51754b3
add translations
marufsharifi Jun 19, 2026
8e7c788
Fix shared helper imports
marufsharifi Jun 19, 2026
77db8a5
fix prettier
marufsharifi Jun 19, 2026
c61844c
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jun 20, 2026
f6e03c4
Reuse connection status message component
marufsharifi Jun 20, 2026
43d695d
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jun 23, 2026
108c35b
fix workflow status message styling
marufsharifi Jun 23, 2026
220b4c7
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jun 24, 2026
ca5d61f
fix wallet workflow status spacing
marufsharifi Jun 24, 2026
840a49b
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jun 25, 2026
31d8ac8
fix workflow status spacing
marufsharifi Jun 25, 2026
23af402
Gate connection status by beta
marufsharifi Jun 25, 2026
2c2f1dd
Fix connection message theme colors
marufsharifi Jun 25, 2026
b38f1c1
keep connection status layout aligned
marufsharifi Jun 25, 2026
22bf0e6
fix connectionStatusMessage lint
marufsharifi Jun 25, 2026
a20ad2e
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jun 26, 2026
cd874ff
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jun 30, 2026
628c771
polish wallet connection status message styling
marufsharifi Jun 30, 2026
f709b61
polish workflow bank account hover layout
marufsharifi Jun 30, 2026
b4c09c1
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 1, 2026
12686d1
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 2, 2026
a96efa2
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 2, 2026
42d8fe2
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 2, 2026
45d941d
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 3, 2026
5876c88
gate wallet row hover by beta status
marufsharifi Jul 3, 2026
4d9a4df
extract shared bank account helpers
marufsharifi Jul 3, 2026
795f9d5
refactor duplicated wallet card loop
marufsharifi Jul 3, 2026
23e1677
fix fmt
marufsharifi Jul 3, 2026
e62e177
beta enabled
marufsharifi Jul 3, 2026
f17b0b5
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 4, 2026
fdf3131
gate workflows payment row by beta
marufsharifi Jul 4, 2026
5fcf847
preserve default badge with connection status
marufsharifi Jul 4, 2026
ab65a9a
preserve frozen badge over status pill
marufsharifi Jul 4, 2026
f3d9a90
limit card sync text to feed cards
marufsharifi Jul 4, 2026
e44cff9
cleanup connection status message styles
marufsharifi Jul 4, 2026
2383d88
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 6, 2026
6264682
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 6, 2026
dc65e1a
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 7, 2026
668a57b
fix duplicate status badges
marufsharifi Jul 7, 2026
660dca2
restore add-details CTA in beta
marufsharifi Jul 7, 2026
5b7e21c
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 8, 2026
8f29a68
fix deprecated icon prop
marufsharifi Jul 8, 2026
5b419c5
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 9, 2026
ab4477a
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 9, 2026
8da02c0
skip incomplete status for missing bank state
marufsharifi Jul 9, 2026
15525d0
preserve beta error fallbacks
marufsharifi Jul 9, 2026
bf07d4a
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 10, 2026
9769047
skip last sync for CSV cards
marufsharifi Jul 10, 2026
8300bec
clean up status row logic
marufsharifi Jul 10, 2026
c85bab0
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 10, 2026
7636520
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 11, 2026
5c77002
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 13, 2026
5899f02
fix card status and sync dates
marufsharifi Jul 13, 2026
a35a9b6
normalize extracted policy IDs
marufsharifi Jul 13, 2026
d104021
fix connection message i18n
marufsharifi Jul 13, 2026
b928338
preserve card title fallback
marufsharifi Jul 13, 2026
e6c9251
preserve card offline errors
marufsharifi Jul 13, 2026
273cbf7
clean up status helpers
marufsharifi Jul 13, 2026
f56363e
dedupe card connection errors
marufsharifi Jul 13, 2026
6b50e5e
dedupe workflow bank menu item
marufsharifi Jul 13, 2026
3d1aaa8
add bank status unit tests
marufsharifi Jul 13, 2026
a24faa5
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 13, 2026
70023a3
fix personal card rbr fallback
marufsharifi Jul 13, 2026
2530a1c
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 14, 2026
9dd2ce2
align card connection rbr logic
marufsharifi Jul 14, 2026
f53a070
order import fixed
marufsharifi Jul 14, 2026
6c0fe38
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 15, 2026
a424754
fix native RBR text alignment
marufsharifi Jul 15, 2026
530982b
guard card domain policy lookup
marufsharifi Jul 15, 2026
4d5f680
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 16, 2026
a6d3132
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 17, 2026
e9e9df6
fix connection message HTML alignment
marufsharifi Jul 17, 2026
32ba661
test policy domain parsing
marufsharifi Jul 17, 2026
87dbaec
test card connection status logic
marufsharifi Jul 17, 2026
b889636
fix spellcheck
marufsharifi Jul 17, 2026
e0f36ca
remove unused export
marufsharifi Jul 17, 2026
d2f460c
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 18, 2026
5919ab5
add wallet connection beta
marufsharifi Jul 18, 2026
36f7944
use card status flags
marufsharifi Jul 18, 2026
f3cf9a1
Merge branch 'main' into feat/show-connection-status-and-last-sync-fo…
marufsharifi Jul 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -991,6 +991,7 @@ const CONST = {
BULK_EDIT: 'bulkEdit',
BULK_EDIT_WORKSPACES: 'bulkEditWorkspaces',
SUBMIT_2026: 'submit2026',
WALLET_CONNECTION_STATUS: 'walletConnectionStatus',
BULK_SUBMIT_APPROVE_PAY: 'bulkSubmitApprovePay',
WORKSPACE_ROOMS_PAGE: 'workspaceRoomsPage',
VENDOR_MATCHING: 'vendorMatching',
Expand Down
39 changes: 39 additions & 0 deletions src/components/ConnectionStatusBadge.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import useThemeStyles from '@hooks/useThemeStyles';

import React from 'react';
import {View} from 'react-native';

import Badge from './Badge';
import Tooltip from './Tooltip';

type ConnectionStatusBadgeProps = {
text: string;
tone?: 'default' | 'success' | 'danger';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have 'default' case?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, default is used for the neutral Verifying bank account status.

tooltipText?: string;
};

function ConnectionStatusBadge({text, tone = 'default', tooltipText}: ConnectionStatusBadgeProps) {
const styles = useThemeStyles();

const badge = (
<Badge
text={text}
success={tone === 'success'}
error={tone === 'danger'}
isCondensed
badgeStyles={[styles.ml0]}
/>
);

if (!tooltipText) {
return badge;
}

return (
<Tooltip text={tooltipText}>
<View>{badge}</View>
</Tooltip>
);
}

export default ConnectionStatusBadge;
89 changes: 89 additions & 0 deletions src/components/ConnectionStatusMessage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset';
import useResponsiveLayout from '@hooks/useResponsiveLayout';
import useTheme from '@hooks/useTheme';
import useThemeStyles from '@hooks/useThemeStyles';

import type {ComponentProps} from 'react';

import React from 'react';
import {View} from 'react-native';

import Button from './Button';
import Icon from './Icon';
import RenderHTML from './RenderHTML';

type ConnectionStatusMessageProps = {
message?: string;
actionText?: string;
onActionPress?: () => void;
isActionDisabled?: boolean;
statusTone?: 'default' | 'success' | 'danger';
onLinkPress?: ComponentProps<typeof RenderHTML>['onLinkPress'];
shouldIncludeHorizontalPadding?: boolean;
};

function ConnectionStatusMessage({
message,
actionText,
onActionPress,
isActionDisabled = false,
statusTone = 'default',
onLinkPress,
shouldIncludeHorizontalPadding = true,
}: ConnectionStatusMessageProps) {
const icons = useMemoizedLazyExpensifyIcons(['DotIndicator']);
const theme = useTheme();
const styles = useThemeStyles();
const {shouldUseNarrowLayout} = useResponsiveLayout();

if (!message && !actionText) {
return null;
}

let statusMessageRowPadding;
if (shouldIncludeHorizontalPadding) {
statusMessageRowPadding = shouldUseNarrowLayout ? styles.ph5 : styles.ph8;
}
const shouldShowActionButton = !!actionText && !!onActionPress;
const isDangerStatus = statusTone === 'danger';
const messageTag = isDangerStatus ? 'rbr' : 'muted-text-label';
const messageHTML = `<${messageTag}>${message ?? ''}</${messageTag}>`;
const messageContent = (
<View style={[styles.flexRow, styles.alignItemsCenter, styles.flex1]}>
{isDangerStatus && (
<View style={[styles.offlineFeedbackErrorDot, styles.mr2]}>
<Icon
src={icons.DotIndicator}
fill={theme.danger}
/>
</View>
)}
<View style={[styles.flex1, styles.flexRow]}>
<RenderHTML
html={messageHTML}
onLinkPress={onLinkPress}
/>
</View>
</View>
);

const actionButton = shouldShowActionButton ? (
<Button
small
danger
style={styles.alignSelfStart}
text={actionText}
onPress={onActionPress}
isDisabled={isActionDisabled}
/>
) : null;

return (
<View style={[statusMessageRowPadding, styles.flexRow, styles.alignItemsCenter, styles.gap3]}>
{messageContent}
<View style={[styles.alignItemsCenter, styles.justifyContentCenter]}>{actionButton}</View>
</View>
);
}

export default ConnectionStatusMessage;
21 changes: 21 additions & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2603,6 +2603,27 @@ const translations: TranslationDeepObject<typeof en> = {
description: 'Verwende diese Karte für deine Expensify Travel-Buchungen. Sie wird beim Bezahlen als “Travel Card” angezeigt.',
},
chaseAccountNumberDifferent: 'Warum ist meine Kontonummer anders?',
cardLastSynced: (relativeDate: string) => `Synchronisiert am ${relativeDate}`,
cardNeverSynced: 'Nie synchronisiert',
cardStatus: {
active: 'Aktiv',
inactive: 'Inaktiv',
fixConnection: 'Bitte beheben Sie diese Verbindung',
fixConnectionIn: (companyCardsRoute: string) => `Bitte beheben Sie diese Verbindung in <a href="${companyCardsRoute}">Firmenkarten</a>`,
askAdminToFixConnection: 'Bitte bitten Sie eine(n) Admin, diese Verbindung zu reparieren',
},
bankAccountStatus: {
active: 'Aktiv',
incomplete: 'Unvollständig',
pending: 'Ausstehend',
verifying: 'Wird überprüft',
reviewingDocumentation: 'Wir prüfen Ihre Unterlagen',
finishAddingBankAccount: 'Hinzufügen des Bankkontos abschließen',
finish: 'Fertig',
confirmTestTransactions: 'Bitte bestätigen Sie Testtransaktionen',
accountRequiresAttention: 'Dieses Konto erfordert Ihre Aufmerksamkeit',
unlock: 'Entsperren',
},
},
cardPage: {
expensifyCard: 'Expensify Karte',
Expand Down
21 changes: 21 additions & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2652,6 +2652,27 @@ const translations = {
addBankAccountToSendAndReceive: 'Add a bank account to make or receive payments.',
addDebitOrCreditCard: 'Add debit or credit card',
cardInactive: 'Inactive',
cardLastSynced: (relativeDate: string) => `Synced ${relativeDate}`,
cardNeverSynced: 'Never synced',
cardStatus: {
active: 'Active',
inactive: 'Inactive',
fixConnection: 'Please fix this connection',
fixConnectionIn: (companyCardsRoute: string) => `Please fix this connection in <a href="${companyCardsRoute}">company cards</a>`,
askAdminToFixConnection: 'Please ask an admin to fix this connection',
},
bankAccountStatus: {
active: 'Active',
incomplete: 'Incomplete',
pending: 'Pending',
verifying: 'Verifying',
reviewingDocumentation: "We're reviewing your documentation",
finishAddingBankAccount: 'Finish adding bank account',
finish: 'Finish',
confirmTestTransactions: 'Please confirm test transactions',
accountRequiresAttention: 'This account requires attention',
unlock: 'Unlock',
},
assignedCards: 'Cards',
assignedCardsDescription: 'Transactions from assigned cards sync automatically.',
addVirtualCardPersonalDetails: {
Expand Down
21 changes: 21 additions & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2478,6 +2478,27 @@ const translations: TranslationDeepObject<typeof en> = {
description: 'Usa esta tarjeta para tus reservas de Expensify Travel. Aparecerá como “Travel Card” al pagar.',
},
chaseAccountNumberDifferent: '¿Por qué es diferente el número de mi cuenta?',
cardLastSynced: (relativeDate: string) => `Sincronizado ${relativeDate}`,
cardNeverSynced: 'Nunca sincronizado',
cardStatus: {
active: 'Activo',
inactive: 'Inactivo',
fixConnection: 'Por favor, corrige esta conexión',
fixConnectionIn: (companyCardsRoute) => `Por favor, corrige esta conexión en <a href="${companyCardsRoute}">tarjetas de la empresa</a>`,
askAdminToFixConnection: 'Pídele a un administrador que solucione esta conexión',
},
bankAccountStatus: {
active: 'Activo',
incomplete: 'Incompleto',
pending: 'Pendiente',
verifying: 'Verificando',
reviewingDocumentation: 'Estamos revisando tu documentación',
finishAddingBankAccount: 'Terminar de añadir cuenta bancaria',
finish: 'Finalizar',
confirmTestTransactions: 'Confirma las transacciones de prueba',
accountRequiresAttention: 'Esta cuenta requiere atención',
unlock: 'Desbloquear',
},
},
cardPage: {
expensifyCard: 'Tarjeta Expensify',
Expand Down
21 changes: 21 additions & 0 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2608,6 +2608,27 @@ const translations: TranslationDeepObject<typeof en> = {
description: 'Utilisez cette carte pour vos réservations Expensify Travel. Elle apparaîtra comme “Travel Card” lors du paiement.',
},
chaseAccountNumberDifferent: 'Pourquoi mon numéro de compte est-il différent ?',
cardLastSynced: (relativeDate: string) => `Synchronisé le ${relativeDate}`,
cardNeverSynced: 'Jamais synchronisé',
cardStatus: {
active: 'Actif',
inactive: 'Inactif',
fixConnection: 'Veuillez corriger cette connexion',
fixConnectionIn: (companyCardsRoute: string) => `Veuillez corriger cette connexion dans <a href="${companyCardsRoute}">cartes d’entreprise</a>`,
askAdminToFixConnection: 'Veuillez demander à un administrateur de corriger cette connexion',
},
bankAccountStatus: {
active: 'Actif',
incomplete: 'Incomplet',
pending: 'En attente',
verifying: 'Vérification en cours',
reviewingDocumentation: 'Nous examinons votre documentation',
finishAddingBankAccount: 'Terminer l’ajout du compte bancaire',
finish: 'Terminer',
confirmTestTransactions: 'Veuillez confirmer les transactions de test',
accountRequiresAttention: 'Ce compte nécessite une attention particulière',
unlock: 'Déverrouiller',
},
},
cardPage: {
expensifyCard: 'Carte Expensify',
Expand Down
21 changes: 21 additions & 0 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2598,6 +2598,27 @@ const translations: TranslationDeepObject<typeof en> = {
description: 'Usa questa carta per le tue prenotazioni con Expensify Travel. Verrà visualizzata come “Travel Card” al momento del pagamento.',
},
chaseAccountNumberDifferent: 'Perché il mio numero di conto è diverso?',
cardLastSynced: (relativeDate: string) => `Sincronizzato il ${relativeDate}`,
cardNeverSynced: 'Mai sincronizzato',
cardStatus: {
active: 'Attiva',
inactive: 'Inattivo',
fixConnection: 'Sistema questa connessione per favore',
fixConnectionIn: (companyCardsRoute: string) => `Correggi questa connessione in <a href="${companyCardsRoute}">carte aziendali</a>`,
askAdminToFixConnection: 'Chiedi a un amministratore di correggere questa connessione',
},
bankAccountStatus: {
active: 'Attiva',
incomplete: 'Incompleto',
pending: 'In sospeso',
verifying: 'Verifica in corso',
reviewingDocumentation: 'Stiamo esaminando la tua documentazione',
finishAddingBankAccount: 'Completa l’aggiunta del conto bancario',
finish: 'Fine',
confirmTestTransactions: 'Conferma le transazioni di prova',
accountRequiresAttention: 'Questo conto richiede attenzione',
unlock: 'Sblocca',
},
},
cardPage: {
expensifyCard: 'Carta Expensify',
Expand Down
21 changes: 21 additions & 0 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2572,6 +2572,27 @@ const translations: TranslationDeepObject<typeof en> = {
description: 'このカードをExpensify Travelでの予約に使用してください。チェックアウト時には「Travel Card」と表示されます。',
},
chaseAccountNumberDifferent: '口座番号が異なるのはなぜですか?',
cardLastSynced: (relativeDate: string) => `${relativeDate} に同期しました`,
cardNeverSynced: '未同期',
cardStatus: {
active: 'アクティブ',
inactive: '無効',
fixConnection: 'この接続を修正してください',
fixConnectionIn: (companyCardsRoute: string) => `この接続を<a href="${companyCardsRoute}">会社カード</a>で修正してください`,
askAdminToFixConnection: '管理者にこの接続の修正を依頼してください',
},
bankAccountStatus: {
active: 'アクティブ',
incomplete: '未完了',
pending: '保留中',
verifying: '確認中',
reviewingDocumentation: '書類を審査しています',
finishAddingBankAccount: '銀行口座の追加を完了',
finish: '完了',
confirmTestTransactions: 'テスト取引を確認してください',
accountRequiresAttention: 'このアカウントには対応が必要です',
unlock: 'ロック解除',
},
},
cardPage: {
expensifyCard: 'Expensify カード',
Expand Down
21 changes: 21 additions & 0 deletions src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2597,6 +2597,27 @@ const translations: TranslationDeepObject<typeof en> = {
description: 'Gebruik deze kaart voor je Expensify Travel-boekingen. Hij wordt weergegeven als “Travel Card” bij het afrekenen.',
},
chaseAccountNumberDifferent: 'Waarom is mijn rekeningnummer anders?',
cardLastSynced: (relativeDate: string) => `Gesynchroniseerd op ${relativeDate}`,
cardNeverSynced: 'Nooit gesynchroniseerd',
cardStatus: {
active: 'Actief',
inactive: 'Inactief',
fixConnection: 'Repareer deze verbinding alsjeblieft',
fixConnectionIn: (companyCardsRoute: string) => `Repareer deze verbinding in <a href="${companyCardsRoute}">bedrijfskaarten</a>`,
askAdminToFixConnection: 'Vraag een/beheerder om deze verbinding te herstellen',
},
bankAccountStatus: {
active: 'Actief',
incomplete: 'Onvolledig',
pending: 'In behandeling',
verifying: 'Bevestigen',
reviewingDocumentation: 'We beoordelen je documentatie',
finishAddingBankAccount: 'Bankrekening toevoegen afronden',
finish: 'Afronden',
confirmTestTransactions: 'Bevestig testtransacties alsjeblieft',
accountRequiresAttention: 'Deze account vereist aandacht',
unlock: 'Ontgrendelen',
},
},
cardPage: {
expensifyCard: 'Expensify Kaart',
Expand Down
21 changes: 21 additions & 0 deletions src/languages/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2588,6 +2588,27 @@ const translations: TranslationDeepObject<typeof en> = {
description: 'Użyj tej karty do rezerwacji w Expensify Travel. Podczas płatności będzie wyświetlana jako “Travel Card”.',
},
chaseAccountNumberDifferent: 'Dlaczego mój numer konta jest inny?',
cardLastSynced: (relativeDate: string) => `Zsynchronizowano ${relativeDate}`,
cardNeverSynced: 'Nigdy nie zsynchronizowano',
cardStatus: {
active: 'Aktywne',
inactive: 'Nieaktywne',
fixConnection: 'Napraw to połączenie',
fixConnectionIn: (companyCardsRoute: string) => `Napraw to połączenie w <a href="${companyCardsRoute}">firmowe karty</a>`,
askAdminToFixConnection: 'Poproś administratora o naprawienie tego połączenia',
},
bankAccountStatus: {
active: 'Aktywne',
incomplete: 'Nieukończone',
pending: 'Oczekujące',
verifying: 'Weryfikowanie',
reviewingDocumentation: 'Sprawdzamy twoją dokumentację',
finishAddingBankAccount: 'Dokończ dodawanie konta bankowego',
finish: 'Zakończ',
confirmTestTransactions: 'Potwierdź proszę transakcje testowe',
accountRequiresAttention: 'To konto wymaga uwagi',
unlock: 'Odblokuj',
},
},
cardPage: {
expensifyCard: 'Karta Expensify',
Expand Down
21 changes: 21 additions & 0 deletions src/languages/pt-BR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2589,6 +2589,27 @@ const translations: TranslationDeepObject<typeof en> = {
description: 'Use este cartão para suas reservas no Expensify Travel. Ele aparecerá como “Travel Card” no checkout.',
},
chaseAccountNumberDifferent: 'Por que meu número de conta é diferente?',
cardLastSynced: (relativeDate: string) => `Sincronizado em ${relativeDate}`,
cardNeverSynced: 'Nunca sincronizado',
cardStatus: {
active: 'Ativo',
inactive: 'Inativo',
fixConnection: 'Corrija esta conexão',
fixConnectionIn: (companyCardsRoute: string) => `Corrija esta conexão em <a href="${companyCardsRoute}">cartões corporativos</a>`,
askAdminToFixConnection: 'Peça para um administrador corrigir essa conexão',
},
bankAccountStatus: {
active: 'Ativo',
incomplete: 'Incompleto',
pending: 'Pendente',
verifying: 'Verificando',
reviewingDocumentation: 'Estamos analisando sua documentação',
finishAddingBankAccount: 'Concluir adição da conta bancária',
finish: 'Concluir',
confirmTestTransactions: 'Confirme as transações de teste',
accountRequiresAttention: 'Esta conta precisa de atenção',
unlock: 'Desbloquear',
},
},
cardPage: {
expensifyCard: 'Cartão Expensify',
Expand Down
Loading
Loading