diff --git a/.eslintrc.js b/.eslintrc.js index de64fa2bbd1..388f464b7a6 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -102,6 +102,13 @@ const baseConfig = { 'formatjs/no-camel-case': ['off'], 'formatjs/no-emoji': ['off'], 'formatjs/no-multiple-plurals': ['off'], + 'formatjs/enforce-id': [ + 'error', + { + idInterpolationPattern: '[sha512:contenthash:base64:6]', + idWhitelist: ['^.{1,}$'], + }, + ], // styled-components-a11y 'jsx-a11y/no-autofocus': ['off'], 'jsx-a11y/label-has-associated-control': ['off'], diff --git a/components/AccountHoverCard.tsx b/components/AccountHoverCard.tsx index 1cad355f418..03d340cdc25 100644 --- a/components/AccountHoverCard.tsx +++ b/components/AccountHoverCard.tsx @@ -136,6 +136,7 @@ const getInfoItems = (account): InfoItemProps[] => { info: ( @{account.parent.slug}, @@ -150,6 +151,7 @@ const getInfoItems = (account): InfoItemProps[] => { info: ( @{account.host.slug}, @@ -163,6 +165,7 @@ const getInfoItems = (account): InfoItemProps[] => { info: ( ( @@ -197,6 +200,7 @@ const getInfoItems = (account): InfoItemProps[] => { info: ( @@ -223,6 +227,7 @@ const getInfoItemsFromMembershipData = (data: UserContextualMembershipsQuery): I info: ( @{membership.account.slug}, date: , @@ -235,6 +240,7 @@ const getInfoItemsFromMembershipData = (data: UserContextualMembershipsQuery): I info: ( @{membership.account.slug}, date: , diff --git a/components/AccountingCategorySelect.tsx b/components/AccountingCategorySelect.tsx index a6e81fbc477..67c54e9bcb5 100644 --- a/components/AccountingCategorySelect.tsx +++ b/components/AccountingCategorySelect.tsx @@ -129,7 +129,7 @@ const getCategoryLabel = ( // Get category label let categoryStr; if (category === null) { - categoryStr = intl.formatMessage({ defaultMessage: "I don't know" }); + categoryStr = intl.formatMessage({ defaultMessage: "I don't know", id: 'AkIyKO' }); } else if (category) { categoryStr = category.friendlyName || @@ -200,7 +200,7 @@ const getOptions = ( categoriesById[VALUE_NONE] = { value: null, label, - searchText: intl.formatMessage({ defaultMessage: "I don't know" }).toLocaleLowerCase(), + searchText: intl.formatMessage({ defaultMessage: "I don't know", id: 'AkIyKO' }).toLocaleLowerCase(), }; } @@ -339,7 +339,7 @@ const AccountingCategorySelect = ({ })} > {getCategoryLabel(intl, selectedCategory, false, valuesByRole) || - intl.formatMessage({ defaultMessage: 'Select category' })} + intl.formatMessage({ defaultMessage: 'Select category', id: 'RUJYth' })} @@ -351,7 +351,7 @@ const AccountingCategorySelect = ({ - + {Object.entries(options).map(([categoryId, { label }]) => { @@ -383,7 +383,7 @@ const AccountingCategorySelect = ({ {isPrediction && ( @@ -406,6 +406,7 @@ const AccountingCategorySelect = ({ ( @@ -415,7 +416,10 @@ const AccountingCategorySelect = ({ onKeyDown={e => e.key === 'Enter' && triggerChange(prediction)} onClick={() => triggerChange(prediction)} className="cursor-pointer text-[--primary-color-600] underline hover:opacity-80" - aria-label={intl.formatMessage({ defaultMessage: 'Select {name}' }, { name: prediction.name })} + aria-label={intl.formatMessage( + { defaultMessage: 'Select {name}', id: 'G65XME' }, + { name: prediction.name }, + )} > {prediction.name} diff --git a/components/AmountWithExchangeRateInfo.js b/components/AmountWithExchangeRateInfo.js index 8d27f485d60..720e0708bb8 100644 --- a/components/AmountWithExchangeRateInfo.js +++ b/components/AmountWithExchangeRateInfo.js @@ -32,6 +32,7 @@ export const formatFxRateInfo = (intl, exchangeRate, { approximateCustomMessage, , fromCurrency, @@ -42,6 +43,7 @@ export const formatFxRateInfo = (intl, exchangeRate, { approximateCustomMessage,
}} />
@@ -67,7 +70,7 @@ export const formatFxRateInfo = (intl, exchangeRate, { approximateCustomMessage, ⚠️   - {approximateCustomMessage || } + {approximateCustomMessage || } )}
diff --git a/components/ApplyToHostModal.js b/components/ApplyToHostModal.js index 035486fc46f..4e0abd3072b 100644 --- a/components/ApplyToHostModal.js +++ b/components/ApplyToHostModal.js @@ -170,7 +170,7 @@ const applyToHostMutation = gql` const GQL_CONTEXT = { context: API_V2_CONTEXT }; const INITIAL_FORM_VALUES = { message: '', areTosChecked: false, collective: null, inviteMembers: [] }; const STEPS = { - INFORMATION: { name: 'Information', label: }, + INFORMATION: { name: 'Information', label: }, APPLY: { name: 'Apply', label: }, }; @@ -467,7 +467,7 @@ const ApplyToHostModal = ({ hostSlug, collective, onClose, onSuccess, router, ..

- +

diff --git a/components/AutoCollapse.tsx b/components/AutoCollapse.tsx index 82608d269e1..7c1985e489b 100644 --- a/components/AutoCollapse.tsx +++ b/components/AutoCollapse.tsx @@ -78,7 +78,7 @@ export const AutoCollapse = ({ children, maxCollapsedHeight }: AutoCollapseProps ) : ( - + )} diff --git a/components/CollectiveCard.js b/components/CollectiveCard.js index 3477e48fd09..c8d9afe52e5 100644 --- a/components/CollectiveCard.js +++ b/components/CollectiveCard.js @@ -261,7 +261,7 @@ class CollectiveCard extends React.Component { /> - + @@ -338,7 +338,7 @@ class CollectiveCard extends React.Component { > , }} @@ -358,7 +358,7 @@ class CollectiveCard extends React.Component { currency={get(membership, 'collective.currency')} /> - + ), )} diff --git a/components/CollectiveContactForm.js b/components/CollectiveContactForm.js index 8054cf27bce..1289cb48bf7 100644 --- a/components/CollectiveContactForm.js +++ b/components/CollectiveContactForm.js @@ -111,7 +111,7 @@ const CollectiveContactForm = ({ collective, isModal = false, onClose, onChange {error && }

- +

{isModal &&
} @@ -144,7 +144,7 @@ const CollectiveContactForm = ({ collective, isModal = false, onClose, onChange } }} > - +
diff --git a/components/CollectivePickerAsync.js b/components/CollectivePickerAsync.js index 334939fa976..ef6dac11495 100644 --- a/components/CollectivePickerAsync.js +++ b/components/CollectivePickerAsync.js @@ -85,6 +85,7 @@ const Messages = defineMessages({ }, searchForUsers: { defaultMessage: 'Search for Users by name or email', + id: 'xLF0/9', }, }); diff --git a/components/CollectiveTagsInput.tsx b/components/CollectiveTagsInput.tsx index d30b30a6bda..c776eeef4af 100644 --- a/components/CollectiveTagsInput.tsx +++ b/components/CollectiveTagsInput.tsx @@ -247,7 +247,7 @@ function CollectiveTagsInput({ defaultValue = [], onChange, suggestedTags = [] } {suggestedTags && ( - + )} diff --git a/components/CollectiveTypePicker.js b/components/CollectiveTypePicker.js index db599bfddde..e7552adb2ae 100644 --- a/components/CollectiveTypePicker.js +++ b/components/CollectiveTypePicker.js @@ -17,7 +17,7 @@ const getTypeCaption = type => { } else if (type === CollectiveType.COLLECTIVE) { return ; } else if (type === CollectiveType.VENDOR) { - return ; + return ; } else { return null; } diff --git a/components/ContributionConfirmationModal.tsx b/components/ContributionConfirmationModal.tsx index 35cef0b9d65..cc115135cdd 100644 --- a/components/ContributionConfirmationModal.tsx +++ b/components/ContributionConfirmationModal.tsx @@ -157,7 +157,11 @@ const ContributionConfirmationModal = ({ order, onClose, onSuccess }) => { + } />
{ }); toast({ variant: 'success', - message: intl.formatMessage({ defaultMessage: 'Contribution confirmed successfully' }), + message: intl.formatMessage({ defaultMessage: 'Contribution confirmed successfully', id: 'Khmjkh' }), }); onSuccess?.(); onClose(); @@ -204,13 +208,17 @@ const ContributionConfirmationModal = ({ order, onClose, onSuccess }) => { >

- +

@@ -223,7 +231,7 @@ const ContributionConfirmationModal = ({ order, onClose, onSuccess }) => { {/* @ts-ignore StyledInputAmount not typed yet */} { {/* @ts-ignore StyledInputAmount not typed yet */} { @@ -322,11 +331,14 @@ const ContributionConfirmationModal = ({ order, onClose, onSuccess }) => { diff --git a/components/CreateCollectiveMiniForm.tsx b/components/CreateCollectiveMiniForm.tsx index 321d4a14774..53326facfe0 100644 --- a/components/CreateCollectiveMiniForm.tsx +++ b/components/CreateCollectiveMiniForm.tsx @@ -63,6 +63,7 @@ const SaveButtonMessage = defineMessages({ }, [CollectiveType.VENDOR]: { defaultMessage: 'Create vendor', + id: 'jrCJwo', }, }); @@ -97,6 +98,7 @@ const msg = defineMessages({ }, contactEmail: { defaultMessage: "Contact's email", + id: '9W4YHR', }, cancel: { id: 'actions.cancel', diff --git a/components/CreateEvent.js b/components/CreateEvent.js index a86d6c30082..76c615562ed 100644 --- a/components/CreateEvent.js +++ b/components/CreateEvent.js @@ -129,10 +129,14 @@ class CreateEvent extends React.Component { ) : collective.isFrozen ? ( - {' '} + {' '} {isFeatureEnabled(collective.host, FEATURES.CONTACT_FORM) && ( - }> + } + > @@ -617,6 +622,7 @@ class CreateGiftCardsForm extends Component { @@ -624,7 +630,7 @@ class CreateGiftCardsForm extends Component { name="accept-payment-method-warning" checked={this.state.hasAcceptedWarning} onChange={() => this.setState({ hasAcceptedWarning: !this.state.hasAcceptedWarning })} - label={} + label={} /> diff --git a/components/CreateOrganizationForm.js b/components/CreateOrganizationForm.js index 2452770fb0c..014024276ad 100644 --- a/components/CreateOrganizationForm.js +++ b/components/CreateOrganizationForm.js @@ -401,7 +401,10 @@ const CreateOrganizationForm = props => { required fontSize="12px" label={ - + } onChange={({ checked }) => { setAuthorization(checked); diff --git a/components/CreateProfile.js b/components/CreateProfile.js index 8bac0b01b09..4c6c275537e 100644 --- a/components/CreateProfile.js +++ b/components/CreateProfile.js @@ -21,12 +21,15 @@ import { P, Span } from './Text'; const messages = defineMessages({ newsletter: { defaultMessage: 'Subscribe to our monthly newsletter', + id: 'cNkrNr', }, nameLabel: { defaultMessage: 'Your name', + id: 'vlKhIl', }, email: { defaultMessage: 'Your email', + id: 'nONnTw', }, }); @@ -101,6 +104,7 @@ const TOSCheckBox = ({ onChange, checked }) => { label={ {isOAuth ? ( - + ) : ( - + )} {isOAuth ? ( - + ) : ( - + )} @@ -310,17 +314,20 @@ const CreateProfile = ({ - + - + - + @@ -330,11 +337,12 @@ const CreateProfile = ({ {email}, WebsiteName }} /> - + @@ -345,7 +353,7 @@ const CreateProfile = ({ ←{` `} - + @@ -358,7 +366,7 @@ const CreateProfile = ({ fontWeight="500" loading={submitting} > - + diff --git a/components/CreateVirtualCardBtn.js b/components/CreateVirtualCardBtn.js index 18b9e250eef..31af5a77983 100644 --- a/components/CreateVirtualCardBtn.js +++ b/components/CreateVirtualCardBtn.js @@ -13,7 +13,7 @@ const CreateVirtualCardBtn = ({ children, host, collective }) => { const handleCreateCardSuccess = () => { toast({ variant: 'success', - message: , + message: , }); setShowModal(false); }; @@ -41,7 +41,7 @@ CreateVirtualCardBtn.propTypes = { const DefaultButton = props => ( - + ); diff --git a/components/DataTable.tsx b/components/DataTable.tsx index a573968226a..cd60f1e3af7 100644 --- a/components/DataTable.tsx +++ b/components/DataTable.tsx @@ -151,7 +151,7 @@ export function DataTable({

- {emptyMessage ? emptyMessage() : } + {emptyMessage ? emptyMessage() : }

diff --git a/components/DateRange.js b/components/DateRange.js index 533f3925637..7f5e0d26b4e 100644 --- a/components/DateRange.js +++ b/components/DateRange.js @@ -20,6 +20,7 @@ const getMessage = (from, to) => {
, dateTo: , @@ -31,6 +32,7 @@ const getMessage = (from, to) => { return ( }} /> ); @@ -38,6 +40,7 @@ const getMessage = (from, to) => { return ( }} /> ); diff --git a/components/DateTime.tsx b/components/DateTime.tsx index 2a25f72fa6c..9eccf9bd7a9 100644 --- a/components/DateTime.tsx +++ b/components/DateTime.tsx @@ -7,6 +7,7 @@ import { capitalize } from '../lib/utils'; const TITLE_MESSAGE = defineMessage({ defaultMessage: 'Local time: {localTime}{newLine}UTC time: {utcTime}', + id: '9kdoVP', }); export const generateDateTitle = (intl, date) => { diff --git a/components/EditOrderModal.tsx b/components/EditOrderModal.tsx index c24c4b95826..332cf67b769 100644 --- a/components/EditOrderModal.tsx +++ b/components/EditOrderModal.tsx @@ -135,7 +135,7 @@ const CancelModal = (props: Omit) => {

{props.order.status === 'PAUSED' ? ( - + ) : ( )} @@ -553,6 +553,7 @@ function EditPaymentMethodModal(props: EditOrderModalProps) { {props.order.status === 'PAUSED' ? ( @@ -569,6 +570,7 @@ function EditPaymentMethodModal(props: EditOrderModalProps) { ) : ( diff --git a/components/EditTags.tsx b/components/EditTags.tsx index c25fb353c81..6d5efb9bf76 100644 --- a/components/EditTags.tsx +++ b/components/EditTags.tsx @@ -136,7 +136,7 @@ const EditTags = ({ suggestedTags, loading, searchFunc, value, onChange, default > - + @@ -144,7 +144,7 @@ const EditTags = ({ suggestedTags, loading, searchFunc, value, onChange, default {(filteredOptions.length > 0 || inputValue) && ( {inputValue && ( diff --git a/components/EditTagsModal.tsx b/components/EditTagsModal.tsx index 78a27e0301c..b1cd54d7866 100644 --- a/components/EditTagsModal.tsx +++ b/components/EditTagsModal.tsx @@ -61,6 +61,7 @@ export default function EditTagsModal({ collective, onClose }: EditTagsModalProp message: ( , + message: , }); handleClose(); }; @@ -89,7 +90,7 @@ export default function EditTagsModal({ collective, onClose }: EditTagsModalProp {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}
- + this.handleChange('isPrivate', isPrivate.checked)} /> - + )} diff --git a/components/ErrorPage.js b/components/ErrorPage.js index 39effc53207..92fd0f6491d 100644 --- a/components/ErrorPage.js +++ b/components/ErrorPage.js @@ -109,7 +109,7 @@ class ErrorPage extends React.Component {

- +

@@ -121,7 +121,7 @@ class ErrorPage extends React.Component {

- +

@@ -140,10 +140,10 @@ class ErrorPage extends React.Component {

- +

- +

@@ -176,7 +176,10 @@ class ErrorPage extends React.Component {

- + { diff --git a/components/ExportTransactionsCSVModal.tsx b/components/ExportTransactionsCSVModal.tsx index 86a117dee0b..1a6ec1f377b 100644 --- a/components/ExportTransactionsCSVModal.tsx +++ b/components/ExportTransactionsCSVModal.tsx @@ -209,7 +209,7 @@ const ExportTransactionsCSVModal = ({ } + label={} labelFontWeight="700" labelProps={{ fontWeight: 'bold', fontSize: '16px' }} name="datePresets" @@ -239,7 +239,7 @@ const ExportTransactionsCSVModal = ({ /> } + label={} labelFontWeight="700" labelProps={{ fontWeight: 'bold', fontSize: '16px' }} name="fieldOptions" @@ -310,10 +310,10 @@ const ExportTransactionsCSVModal = ({

- +

, - description = , + title = , + description = , placeholder = '', open, setOpen, @@ -93,7 +93,7 @@ export function FeedbackModal({ htmlFor="okToContact" className="text-sm font-normal leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" > - +
diff --git a/components/FilesViewerModal.tsx b/components/FilesViewerModal.tsx index 8375ab51a07..b54b40cb11c 100644 --- a/components/FilesViewerModal.tsx +++ b/components/FilesViewerModal.tsx @@ -264,7 +264,7 @@ export default function FilesViewerModal({ diff --git a/components/GlobalWarnings.js b/components/GlobalWarnings.js index 15f8b49ae1c..0d47b4e2c5e 100644 --- a/components/GlobalWarnings.js +++ b/components/GlobalWarnings.js @@ -36,10 +36,10 @@ const GlobalWarnings = ({ collective }) => { return (

- +

- +

{isLoggedInUserHostAdmin && ( { }} > - + )} diff --git a/components/HTMLContent.js b/components/HTMLContent.js index 0596fa4d4e5..5ace629b74f 100644 --- a/components/HTMLContent.js +++ b/components/HTMLContent.js @@ -154,7 +154,7 @@ const HTMLContent = styled( } }} > - + )} diff --git a/components/I18nFormatters.js b/components/I18nFormatters.js index 74d09c3050d..42936f61c0a 100644 --- a/components/I18nFormatters.js +++ b/components/I18nFormatters.js @@ -18,7 +18,7 @@ export const I18nCode = chunks => {chunks}; export const I18nUnderline = chunks => {chunks}; export const I18nSupportLink = chunks => ( - {chunks.length ? chunks : } + {chunks.length ? chunks : } ); export const I18nSignInLink = chunks => ( diff --git a/components/InputField.js b/components/InputField.js index 084f28066ed..94e951768ed 100644 --- a/components/InputField.js +++ b/components/InputField.js @@ -421,7 +421,7 @@ class InputField extends React.Component { this.input = ( - + }} - defaultMessage={ - 'Location field requires "{service}" to function.{lineBreak} Make sure "{domain}" is not blocked.' - } + defaultMessage={`Location field requires "{service}" to function.{lineBreak} Make sure "{domain}" is not blocked.`} /> ) : ( diff --git a/components/LanguageSwitcher.tsx b/components/LanguageSwitcher.tsx index e7dd0afd2e3..aa515cbd178 100644 --- a/components/LanguageSwitcher.tsx +++ b/components/LanguageSwitcher.tsx @@ -40,7 +40,7 @@ export function LanguageSwitcher() {
diff --git a/components/MemberRoleDescription.js b/components/MemberRoleDescription.js index 025c3aef4c4..bde099b755f 100644 --- a/components/MemberRoleDescription.js +++ b/components/MemberRoleDescription.js @@ -9,14 +9,17 @@ const ROLES_DETAILS = defineMessages({ [roles.ADMIN]: { defaultMessage: 'Admins can edit settings, approve expenses, and receive activity notifications (such as when a new expense is submitted). They are the active managers of a Collective.', + id: '+Qi39W', }, [roles.MEMBER]: { defaultMessage: 'Core Contributors are shown as part of the team on your page but do not have admin access or get notifications. They do not play an active role on the platform.', + id: 'O8duLC', }, [roles.ACCOUNTANT]: { defaultMessage: 'Accountants have read-only access to non-public data, uploaded files, and reports for record-keeping purposes. They cannot make changes and are not shown on your page.', + id: 'OdjT4O', }, }); diff --git a/components/NewsAndUpdatesModal.js b/components/NewsAndUpdatesModal.js index db0bb706116..bd32b68c396 100644 --- a/components/NewsAndUpdatesModal.js +++ b/components/NewsAndUpdatesModal.js @@ -127,7 +127,7 @@ const NewsAndUpdatesModal = ({ open, setOpen }) => { - +

{ 404

- +

- +

{searchTerm ? ( @@ -43,7 +43,7 @@ const NotFound = ({ searchTerm, showAltLinks = true }: NotFoundProps) => { ) : showAltLinks ? (

- +

diff --git a/components/OpenEmailProviderButton.js b/components/OpenEmailProviderButton.js index 01a829fcf80..e640d9479c4 100644 --- a/components/OpenEmailProviderButton.js +++ b/components/OpenEmailProviderButton.js @@ -34,7 +34,7 @@ const OpenEmailProviderButton = ({ email, children }) => { : children( - + , ); diff --git a/components/PeriodFilterPresetsSelect.js b/components/PeriodFilterPresetsSelect.js index 02601a1fb80..ee9477d1a71 100644 --- a/components/PeriodFilterPresetsSelect.js +++ b/components/PeriodFilterPresetsSelect.js @@ -17,31 +17,31 @@ const getPastDateInterval = timeUnit => { */ export const PERIOD_FILTER_PRESETS = { allTime: { - label: , + label: , getInterval: () => ({ from: null, to: null }), }, today: { - label: , + label: , getInterval: () => ({ from: dayjs().startOf('day'), to: dayjs().endOf('day') }), }, thisMonth: { - label: , + label: , getInterval: () => ({ from: dayjs().startOf('month'), to: dayjs().endOf('day') }), }, thisYear: { - label: , + label: , getInterval: () => ({ from: dayjs().startOf('year'), to: dayjs().endOf('day') }), }, pastWeek: { - label: , + label: , getInterval: () => getPastDateInterval('week'), }, pastMonth: { - label: , + label: , getInterval: () => getPastDateInterval('month'), }, pastYear: { - label: , + label: , getInterval: () => getPastDateInterval('year'), }, }; diff --git a/components/PublishUpdateBtnWithData.js b/components/PublishUpdateBtnWithData.js index e17702a9fc6..d61ba3ec96e 100644 --- a/components/PublishUpdateBtnWithData.js +++ b/components/PublishUpdateBtnWithData.js @@ -80,7 +80,7 @@ const selectOptions = [ value: 'COLLECTIVE_ADMINS', }, { - label: , + label: , value: 'NO_ONE', }, ]; diff --git a/components/Response.js b/components/Response.js index 74ee09415b5..323d2046890 100644 --- a/components/Response.js +++ b/components/Response.js @@ -59,7 +59,7 @@ class Response extends React.Component {
{count > 1 && ( - + )} diff --git a/components/Search.js b/components/Search.js index 1ac1e48d7fd..d44083038e0 100644 --- a/components/Search.js +++ b/components/Search.js @@ -19,7 +19,10 @@ const SearchModal = ({ open, setOpen }) => { overflow="hidden" fontSize="14px" height="48px" - placeholder={intl.formatMessage({ defaultMessage: 'Search for Collectives, organizations, and more...' })} + placeholder={intl.formatMessage({ + defaultMessage: 'Search for Collectives, organizations, and more...', + id: 'LOtm7B', + })} showSearchButton searchButtonStyles={{ width: '32px', height: '32px' }} closeSearchModal={onClose} diff --git a/components/SearchTrigger.tsx b/components/SearchTrigger.tsx index 271d15e18f0..b1eadb85e1a 100644 --- a/components/SearchTrigger.tsx +++ b/components/SearchTrigger.tsx @@ -23,6 +23,7 @@ const SearchTrigger = ({ setShowSearchModal }) => { / }} /> diff --git a/components/SendMoneyToCollectiveBtn.js b/components/SendMoneyToCollectiveBtn.js index 0ae4ae948c6..3819be6e4c3 100644 --- a/components/SendMoneyToCollectiveBtn.js +++ b/components/SendMoneyToCollectiveBtn.js @@ -50,7 +50,9 @@ class SendMoneyToCollectiveBtn extends React.Component { if (!paymentMethods || paymentMethods.length === 0) { toast({ variant: 'error', - message: , + message: ( + + ), }); return; } @@ -82,6 +84,7 @@ class SendMoneyToCollectiveBtn extends React.Component { message: ( ), diff --git a/components/SignIn.js b/components/SignIn.js index eac04916865..b320264ab91 100644 --- a/components/SignIn.js +++ b/components/SignIn.js @@ -101,19 +101,21 @@ export default class SignIn extends React.Component { getSignInPageHeading(unknownEmail) { if (this.props.isOAuth && unknownEmail) { - return ; + return ; } else if (this.props.isOAuth) { - return ; + return ; } else { - return this.props.label || ; + return this.props.label || ; } } getSignInPageSubHeading(oAuthAppName) { if (this.props.isOAuth) { - return ; + return ( + + ); } else { - return ; + return ; } } @@ -292,10 +294,10 @@ export default class SignIn extends React.Component { {this.props.showSecondaryAction && !this.props.passwordRequired && ( - + - {this.renderSecondaryAction()} + {this.renderSecondaryAction()} )} @@ -303,7 +305,7 @@ export default class SignIn extends React.Component { {this.props.passwordRequired && ( - +   - + - +   - + @@ -344,14 +346,15 @@ export default class SignIn extends React.Component { > {email}, WebsiteName }} />{' '} - {this.renderSecondaryAction()} + {this.renderSecondaryAction()} this.setState({ unknownEmail: false })} underlineOnHover={true}> - + diff --git a/components/SignInOrJoinFree.js b/components/SignInOrJoinFree.js index 6e1f24d36fc..622219c71e9 100644 --- a/components/SignInOrJoinFree.js +++ b/components/SignInOrJoinFree.js @@ -295,7 +295,7 @@ class SignInOrJoinFree extends React.Component { - + diff --git a/components/StyledCollectiveCard.js b/components/StyledCollectiveCard.js index 8cd823e470d..efb02f8503c 100644 --- a/components/StyledCollectiveCard.js +++ b/components/StyledCollectiveCard.js @@ -205,7 +205,9 @@ const StyledCollectiveCard = ({ )} {collective.isFrozen ? ( - + ) : tag === undefined ? ( diff --git a/components/StyledDropzone.tsx b/components/StyledDropzone.tsx index da425d0c883..526cbf767ea 100644 --- a/components/StyledDropzone.tsx +++ b/components/StyledDropzone.tsx @@ -139,7 +139,10 @@ const StyledDropzone = ({ toast({ variant: 'error', message: intl.formatMessage( - { defaultMessage: 'You can only upload {count, plural, one {# file} other {# files}} at once' }, + { + defaultMessage: 'You can only upload {count, plural, one {# file} other {# files}} at once', + id: 'KLENgi', + }, { count: limit }, ), }); diff --git a/components/StyledMembershipCard.js b/components/StyledMembershipCard.js index 981ae839783..09e08066ff7 100644 --- a/components/StyledMembershipCard.js +++ b/components/StyledMembershipCard.js @@ -29,7 +29,7 @@ const StyledMembershipCard = ({ membership, intl, ...props }) => { values={{ contributorType: role === roles.HOST - ? intl.formatMessage({ defaultMessage: 'Hosted' }) + ? intl.formatMessage({ defaultMessage: 'Hosted', id: 'yVPYIH' }) : formatMemberRole(intl, role), }} />{' '} diff --git a/components/StyledModal.tsx b/components/StyledModal.tsx index 1ebc9fc4ed2..88a3ef6ceaa 100644 --- a/components/StyledModal.tsx +++ b/components/StyledModal.tsx @@ -191,7 +191,12 @@ const StyledModal = ({ } if ( hasUnsavedChanges && - !confirm(intl.formatMessage({ defaultMessage: 'You have unsaved changes. Are you sure you want to close this?' })) + !confirm( + intl.formatMessage({ + defaultMessage: 'You have unsaved changes. Are you sure you want to close this?', + id: 'srNsR3', + }), + ) ) { return; } diff --git a/components/StyledSelect.tsx b/components/StyledSelect.tsx index f67d931ca86..4b7ad1ccbf6 100644 --- a/components/StyledSelect.tsx +++ b/components/StyledSelect.tsx @@ -110,6 +110,7 @@ const ValueContainer = ({ children, ...rest }: ValueContainerProps) => { diff --git a/components/StyledUpdate.tsx b/components/StyledUpdate.tsx index ec70da2168a..58aa43b432b 100644 --- a/components/StyledUpdate.tsx +++ b/components/StyledUpdate.tsx @@ -163,6 +163,7 @@ class StyledUpdate extends Component ) : ( @@ -177,13 +178,13 @@ class StyledUpdate extends Component - + {' '} ) : update.isChangelog ? ( - + ) : ( - + )} )} @@ -312,10 +313,14 @@ class StyledUpdate extends Component - {' '} + {' '} {isFeatureEnabled(collective.host, FEATURES.CONTACT_FORM) && ( )} diff --git a/components/Survey.tsx b/components/Survey.tsx index e6859ba9f35..5939a2a7edb 100644 --- a/components/Survey.tsx +++ b/components/Survey.tsx @@ -37,8 +37,8 @@ export const sendSurveyResponseMutation = gql` export function Survey({ surveyKey, - question = , - followUpQuestion = , + question = , + followUpQuestion = , hasParentTitle = false, }: { surveyKey: SURVEY_KEY; @@ -128,7 +128,7 @@ export function Survey({ htmlFor="okToContact" className="text-sm font-normal leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" > - +
@@ -150,7 +150,10 @@ export function Survey({ {completed && (

- +

)}
diff --git a/components/Tabs.tsx b/components/Tabs.tsx index e70b6a1c0d2..d27e4c07f96 100644 --- a/components/Tabs.tsx +++ b/components/Tabs.tsx @@ -49,7 +49,10 @@ const Tabs = ({ tabs, selectedId, onChange, ...props }: TabsProps) => { return (

- +

setPresetName(e.target.value)} name="presetName" />

@@ -466,7 +466,7 @@ const ExportTransactionsCSVModal = ({

- + ({TOTAL_AVAILABLE_FIELDS})

@@ -524,18 +524,22 @@ const ExportTransactionsCSVModal = ({

- + ( )

- +

@@ -568,7 +572,7 @@ const ExportTransactionsCSVModal = ({ fields.map(field => ) ) : (

- +

), [canEditFields, fields, draggingTag, handleDragOver], @@ -582,10 +586,13 @@ const ExportTransactionsCSVModal = ({ onCheckedChange={handleTaxAndPaymentProcessorFeeSwitch} />

- +

- +
)} @@ -594,10 +601,13 @@ const ExportTransactionsCSVModal = ({

- +

- +

diff --git a/components/dashboard/Menu.tsx b/components/dashboard/Menu.tsx index 0ba0bb0331c..ef42419502f 100644 --- a/components/dashboard/Menu.tsx +++ b/components/dashboard/Menu.tsx @@ -86,6 +86,7 @@ export const getMenuItems = ({ intl, account, LoggedInUser }): MenuItem[] => { section: ALL_SECTIONS.EXPENSES, label: intl.formatMessage( { + id: 'hZhgoW', defaultMessage: 'To {accountName}', }, { accountName: account.name }, @@ -95,6 +96,7 @@ export const getMenuItems = ({ intl, account, LoggedInUser }): MenuItem[] => { section: ALL_SECTIONS.SUBMITTED_EXPENSES, label: intl.formatMessage( { + id: 'PVqJoO', defaultMessage: 'From {accountName}', }, { accountName: account.name }, @@ -128,6 +130,7 @@ export const getMenuItems = ({ intl, account, LoggedInUser }): MenuItem[] => { { label: intl.formatMessage( { + id: 'hZhgoW', defaultMessage: 'To {accountName}', }, { accountName: account.name }, @@ -137,6 +140,7 @@ export const getMenuItems = ({ intl, account, LoggedInUser }): MenuItem[] => { { label: intl.formatMessage( { + id: 'PVqJoO', defaultMessage: 'From {accountName}', }, { accountName: account.name }, @@ -155,7 +159,7 @@ export const getMenuItems = ({ intl, account, LoggedInUser }): MenuItem[] => { section: ALL_SECTIONS.HOSTED_COLLECTIVES, }, { - label: intl.formatMessage({ defaultMessage: 'Applications' }), + label: intl.formatMessage({ id: 'DqD1yK', defaultMessage: 'Applications' }), section: ALL_SECTIONS.HOST_APPLICATIONS, }, ], @@ -195,13 +199,13 @@ export const getMenuItems = ({ intl, account, LoggedInUser }): MenuItem[] => { { if: isType(account, EVENT), section: ALL_SECTIONS.TICKETS, - label: intl.formatMessage({ defaultMessage: 'Ticket tiers' }), + label: intl.formatMessage({ defaultMessage: 'Ticket tiers', id: 'tG3saB' }), Icon: Ticket, }, { if: isType(account, EVENT), section: ALL_SECTIONS.TIERS, - label: intl.formatMessage({ defaultMessage: 'Sponsorship tiers' }), + label: intl.formatMessage({ defaultMessage: 'Sponsorship tiers', id: '3Qx5eX' }), Icon: HeartHandshake, }, { diff --git a/components/dashboard/constants.ts b/components/dashboard/constants.ts index cffd70934da..1076cc1b800 100644 --- a/components/dashboard/constants.ts +++ b/components/dashboard/constants.ts @@ -93,6 +93,7 @@ export const SECTION_LABELS = defineMessages({ defaultMessage: 'Transactions', }, [ALL_SECTIONS.ACTIVITY_LOG]: { + id: 't0lUqz', defaultMessage: 'Activity log', }, [ALL_SECTIONS.HOST_FINANCIAL_CONTRIBUTIONS]: { @@ -124,6 +125,7 @@ export const SECTION_LABELS = defineMessages({ defaultMessage: 'Profile Sections', }, [ALL_SECTIONS.CONNECTED_ACCOUNTS]: { + id: 'H/VkpN', defaultMessage: 'Social Accounts', }, [ALL_SECTIONS.EXPORT]: { @@ -135,6 +137,7 @@ export const SECTION_LABELS = defineMessages({ defaultMessage: 'Policies', }, [ALL_SECTIONS.CUSTOM_EMAIL]: { + id: 'aw01NT', defaultMessage: 'Custom Email', }, [ALL_SECTIONS.HOST]: { @@ -162,6 +165,7 @@ export const SECTION_LABELS = defineMessages({ defaultMessage: 'Fiscal Hosting', }, [ALL_SECTIONS.CHART_OF_ACCOUNTS]: { + id: 'IzFWHI', defaultMessage: 'Chart of Accounts', }, [ALL_SECTIONS.TEAM]: { @@ -185,9 +189,11 @@ export const SECTION_LABELS = defineMessages({ defaultMessage: 'Webhooks', }, [ALL_SECTIONS.AUTHORIZED_APPS]: { + id: '+o/Xal', defaultMessage: 'Authorized Apps', }, [ALL_SECTIONS.FOR_DEVELOPERS]: { + id: 'o0kPeK', defaultMessage: 'For developers', }, [ALL_SECTIONS.TICKETS]: { @@ -243,6 +249,7 @@ export const SECTION_LABELS = defineMessages({ defaultMessage: 'Incoming Contributions', }, [ALL_SECTIONS.VENDORS]: { + id: 'RilevA', defaultMessage: 'Vendors', }, }); diff --git a/components/dashboard/filters/AmountFilter/AmountFilterValue.tsx b/components/dashboard/filters/AmountFilter/AmountFilterValue.tsx index d2ac853eef9..e9c8bbab01a 100644 --- a/components/dashboard/filters/AmountFilter/AmountFilterValue.tsx +++ b/components/dashboard/filters/AmountFilter/AmountFilterValue.tsx @@ -25,6 +25,7 @@ const getMessage = ({ filterValue, currency }: { filterValue: AmountFilterValueT return ( , }} @@ -34,6 +35,7 @@ const getMessage = ({ filterValue, currency }: { filterValue: AmountFilterValueT return ( , amountTo: , @@ -44,6 +46,7 @@ const getMessage = ({ filterValue, currency }: { filterValue: AmountFilterValueT return ( , }} @@ -53,6 +56,7 @@ const getMessage = ({ filterValue, currency }: { filterValue: AmountFilterValueT return ( , }} diff --git a/components/dashboard/filters/ChildAccountFilter.tsx b/components/dashboard/filters/ChildAccountFilter.tsx index 0942bf24f4c..762b0e3a5ff 100644 --- a/components/dashboard/filters/ChildAccountFilter.tsx +++ b/components/dashboard/filters/ChildAccountFilter.tsx @@ -18,7 +18,7 @@ function ChildAccountFilter({ const groupedOptions = React.useMemo( () => [ { - label: intl.formatMessage({ defaultMessage: 'Main account' }), + label: intl.formatMessage({ defaultMessage: 'Main account', id: 'pE0V//' }), options: [ { value: meta.accountSlug, @@ -65,7 +65,7 @@ export const childAccountFilter: FilterConfig> = { filter: { static: true, hide: ({ meta }) => !meta?.childrenAccounts || meta.childrenAccounts.length === 0, - labelMsg: defineMessage({ defaultMessage: 'Account' }), + labelMsg: defineMessage({ defaultMessage: 'Account', id: 'TwyMau' }), Component: ChildAccountFilter, valueRenderer: ({ value }) => , }, diff --git a/components/dashboard/filters/ComboSelectFilter.tsx b/components/dashboard/filters/ComboSelectFilter.tsx index 3fa38ba79fc..5d248ff5548 100644 --- a/components/dashboard/filters/ComboSelectFilter.tsx +++ b/components/dashboard/filters/ComboSelectFilter.tsx @@ -124,6 +124,7 @@ function ComboSelectFilter({ ? intl.formatMessage( { defaultMessage: 'Filter by {filterLabel}...', + id: 'sB/JCB', }, { filterLabel: intl.formatMessage(labelMsg) }, ) @@ -136,7 +137,7 @@ function ComboSelectFilter({ ) : ( - + )} diff --git a/components/dashboard/filters/DateFilter/DateFilterValue.tsx b/components/dashboard/filters/DateFilter/DateFilterValue.tsx index c179d771643..81f9e336029 100644 --- a/components/dashboard/filters/DateFilter/DateFilterValue.tsx +++ b/components/dashboard/filters/DateFilter/DateFilterValue.tsx @@ -16,6 +16,7 @@ const getMessage = (intl, dateRange: DateFilterValueType) => { return ( ); @@ -23,6 +24,7 @@ const getMessage = (intl, dateRange: DateFilterValueType) => { return ( }} /> ); @@ -30,6 +32,7 @@ const getMessage = (intl, dateRange: DateFilterValueType) => { return ( , dateTo: , @@ -40,6 +43,7 @@ const getMessage = (intl, dateRange: DateFilterValueType) => { return ( }} /> ); @@ -47,6 +51,7 @@ const getMessage = (intl, dateRange: DateFilterValueType) => { return ( }} /> ); @@ -54,6 +59,7 @@ const getMessage = (intl, dateRange: DateFilterValueType) => { return ( }} /> ); @@ -61,6 +67,7 @@ const getMessage = (intl, dateRange: DateFilterValueType) => { return ( }} /> ); diff --git a/components/dashboard/filters/DateFilter/TimezonePicker.tsx b/components/dashboard/filters/DateFilter/TimezonePicker.tsx index c38cc3fdacd..71d7b933602 100644 --- a/components/dashboard/filters/DateFilter/TimezonePicker.tsx +++ b/components/dashboard/filters/DateFilter/TimezonePicker.tsx @@ -10,14 +10,17 @@ export function Timezonepicker({ value = 'local', onChange }) {

- +

- +
diff --git a/components/dashboard/filters/ExpenseTagsFilter.tsx b/components/dashboard/filters/ExpenseTagsFilter.tsx index e1f06d79c55..de326487b49 100644 --- a/components/dashboard/filters/ExpenseTagsFilter.tsx +++ b/components/dashboard/filters/ExpenseTagsFilter.tsx @@ -16,7 +16,7 @@ type ExpenseTagFilterValue = z.infer; export const expenseTagFilter: FilterConfig = { schema: expenseTagFilterSchema, filter: { - labelMsg: defineMessage({ defaultMessage: 'Tag' }), + labelMsg: defineMessage({ defaultMessage: 'Tag', id: '18HJlm' }), Component: ExpenseTagsFilter, }, }; diff --git a/components/dashboard/filters/FilterDropdown.tsx b/components/dashboard/filters/FilterDropdown.tsx index 885e06b5b4f..eadddab04db 100644 --- a/components/dashboard/filters/FilterDropdown.tsx +++ b/components/dashboard/filters/FilterDropdown.tsx @@ -26,10 +26,10 @@ function ChooseFilterType({ return ( - + - + {filterOptions.map(option => { @@ -135,7 +135,7 @@ const FilterButton = ({ filterKey, setFilter, filters, tmpValue, open, isViewAct filterKey ) ) : ( - + )} {arrayValue?.length > 0 && ( diff --git a/components/dashboard/filters/HostedAccountFilter.tsx b/components/dashboard/filters/HostedAccountFilter.tsx index 2eb19a75a5c..3c2037cb20d 100644 --- a/components/dashboard/filters/HostedAccountFilter.tsx +++ b/components/dashboard/filters/HostedAccountFilter.tsx @@ -75,7 +75,7 @@ export const hostedAccountFilter: FilterConfig> = { schema, toVariables: (value, key) => ({ [key]: { slug: value } }), filter: { - labelMsg: defineMessage({ defaultMessage: 'Account' }), + labelMsg: defineMessage({ defaultMessage: 'Account', id: 'TwyMau' }), Component: HostedAccountFilter, valueRenderer: ({ value, ...props }) => , }, diff --git a/components/dashboard/preview/AccountSwitcher.tsx b/components/dashboard/preview/AccountSwitcher.tsx index 22b1261f38a..ed337e08eb6 100644 --- a/components/dashboard/preview/AccountSwitcher.tsx +++ b/components/dashboard/preview/AccountSwitcher.tsx @@ -164,7 +164,7 @@ const AccountsCommand = ({ - + {Object.entries(groupedAccounts).map(([collectiveType, accounts]) => { return ( @@ -172,7 +172,7 @@ const AccountsCommand = ({ key={collectiveType} heading={ collectiveType === CollectiveType.INDIVIDUAL - ? intl.formatMessage({ defaultMessage: 'Personal Account' }) + ? intl.formatMessage({ defaultMessage: 'Personal Account', id: 'Sch2bu' }) : formatCollectiveType(intl, collectiveType, 2) } > @@ -375,7 +375,7 @@ export default function AccountSwitcher({ activeSlug, defaultSlug, setDefaultSlu onActive={() => setActivePane('ROOT')} selectedValue={selectedRootValue} setSelectedValue={setSelectedRootValue} - inputPlaceholder={intl.formatMessage({ defaultMessage: 'Search accounts...' })} + inputPlaceholder={intl.formatMessage({ defaultMessage: 'Search accounts...', id: 'VSmsWL' })} groupedAccounts={groupedAccounts} setOpen={setOpen} activeAccount={activeAccount} @@ -393,7 +393,7 @@ export default function AccountSwitcher({ activeSlug, defaultSlug, setDefaultSlu onActive={() => setActivePane('CHILD')} selectedValue={selectedChildValue} setSelectedValue={setSelectedChildValue} - inputPlaceholder={intl.formatMessage({ defaultMessage: 'Search projects and events...' })} + inputPlaceholder={intl.formatMessage({ defaultMessage: 'Search projects and events...', id: 'DAM4uY' })} groupedAccounts={childGroupedAccounts} setOpen={setOpen} activeAccount={activeAccount} diff --git a/components/dashboard/sections/ActivityLog/ActivitiesTable.tsx b/components/dashboard/sections/ActivityLog/ActivitiesTable.tsx index 08864c3c792..033bd77656f 100644 --- a/components/dashboard/sections/ActivityLog/ActivitiesTable.tsx +++ b/components/dashboard/sections/ActivityLog/ActivitiesTable.tsx @@ -90,7 +90,7 @@ const tableColumns: ColumnDef[] = [ meta.openActivity(activity); }} > - + @@ -131,13 +131,13 @@ export default function ActivitiesTable({ emptyMessage={() => (

- +

{resetFilters && (
- +
)} diff --git a/components/dashboard/sections/ActivityLog/ActivityAccountFilter.js b/components/dashboard/sections/ActivityLog/ActivityAccountFilter.js index 474d0811dab..142e812ea03 100644 --- a/components/dashboard/sections/ActivityLog/ActivityAccountFilter.js +++ b/components/dashboard/sections/ActivityLog/ActivityAccountFilter.js @@ -15,7 +15,7 @@ const getCustomOptions = (intl, account) => { { value: account, isCustomOption: true, - label: intl.formatMessage(defineMessage({ defaultMessage: 'Own account' })), + label: intl.formatMessage(defineMessage({ defaultMessage: 'Own account', id: 'ev5iix' })), }, ]; @@ -23,14 +23,14 @@ const getCustomOptions = (intl, account) => { options.push({ id: '__CHILDREN_ACCOUNTS__', isCustomOption: true, - label: intl.formatMessage(defineMessage({ defaultMessage: 'All children accounts' })), + label: intl.formatMessage(defineMessage({ defaultMessage: 'All children accounts', id: 'tHJuXX' })), }); } if (account?.isHost) { options.push({ id: '__HOSTED_ACCOUNTS__', isCustomOption: true, - label: intl.formatMessage(defineMessage({ defaultMessage: 'All hosted accounts' })), + label: intl.formatMessage(defineMessage({ defaultMessage: 'All hosted accounts', id: 'M7USSD' })), }); } diff --git a/components/dashboard/sections/ActivityLog/ActivityDescription.tsx b/components/dashboard/sections/ActivityLog/ActivityDescription.tsx index 0324662b6ee..b104a49c009 100644 --- a/components/dashboard/sections/ActivityLog/ActivityDescription.tsx +++ b/components/dashboard/sections/ActivityLog/ActivityDescription.tsx @@ -102,7 +102,7 @@ export const getActivityVariables = ( Expense: msg => !activity.expense ? ( - + ) : ( diff --git a/components/dashboard/sections/ActivityLog/ActivityDetails.tsx b/components/dashboard/sections/ActivityLog/ActivityDetails.tsx index 5c81fccf860..ad7ebe0e257 100644 --- a/components/dashboard/sections/ActivityLog/ActivityDetails.tsx +++ b/components/dashboard/sections/ActivityLog/ActivityDetails.tsx @@ -21,15 +21,15 @@ const ValueContainer = styled.div` const ActivityDetailComponents = { ACCOUNTING_CATEGORIES_EDITED: { - title: defineMessage({ defaultMessage: 'Changes' }), + title: defineMessage({ defaultMessage: 'Changes', id: 'dgqhUM' }), Component: GenericActivityDiffDataWithList, }, COLLECTIVE_EDITED: { - title: defineMessage({ defaultMessage: 'Changes' }), + title: defineMessage({ defaultMessage: 'Changes', id: 'dgqhUM' }), Component: CollectiveEditedDetails, }, VENDOR_EDITED: { - title: defineMessage({ defaultMessage: 'Changes' }), + title: defineMessage({ defaultMessage: 'Changes', id: 'dgqhUM' }), Component: CollectiveEditedDetails, }, DEFAULT: { diff --git a/components/dashboard/sections/ActivityLog/ActivityDetailsDrawer.tsx b/components/dashboard/sections/ActivityLog/ActivityDetailsDrawer.tsx index 1e28caa2f7b..6ae764c41af 100644 --- a/components/dashboard/sections/ActivityLog/ActivityDetailsDrawer.tsx +++ b/components/dashboard/sections/ActivityLog/ActivityDetailsDrawer.tsx @@ -25,6 +25,7 @@ const ACCOUNT_KEYS = ['fromAccount', 'account', 'host'] as const; const AccountKeysI18n = defineMessages({ fromAccount: { defaultMessage: 'From', + id: 'dM+p3/', }, account: { id: 'To', @@ -46,6 +47,7 @@ export default function ActivityDetailsDrawer({ activity, onClose }: ActivityDra title={ ( diff --git a/components/dashboard/sections/ActivityLog/ActivityFilters.js b/components/dashboard/sections/ActivityLog/ActivityFilters.js index 565dbf2a674..ea5fd24d9cc 100644 --- a/components/dashboard/sections/ActivityLog/ActivityFilters.js +++ b/components/dashboard/sections/ActivityLog/ActivityFilters.js @@ -48,14 +48,14 @@ const ActivityFilters = ({ filters, onChange, account }) => { - + {(account?.isHost || account?.childrenAccounts?.totalCount > 0) && ( - + diff --git a/components/dashboard/sections/ActivityLog/ActivityTypeFilter.js b/components/dashboard/sections/ActivityLog/ActivityTypeFilter.js index 11678ed25df..4d3889f7e04 100644 --- a/components/dashboard/sections/ActivityLog/ActivityTypeFilter.js +++ b/components/dashboard/sections/ActivityLog/ActivityTypeFilter.js @@ -44,7 +44,7 @@ const ActivityCategories = { ], }, ACCOUNTS: { - title: defineMessage({ defaultMessage: 'Accounts' }), + title: defineMessage({ defaultMessage: 'Accounts', id: 'FvanT6' }), activities: [ 'COLLECTIVE_CREATED', 'COLLECTIVE_EDITED', @@ -72,7 +72,7 @@ const ActivityCategories = { ], }, UPDATES: { - title: defineMessage({ defaultMessage: 'Updates & Conversations' }), + title: defineMessage({ defaultMessage: 'Updates & Conversations', id: 'tCZ0vE' }), activities: [ 'COLLECTIVE_UPDATE_CREATED', 'COLLECTIVE_UPDATE_PUBLISHED', @@ -82,7 +82,7 @@ const ActivityCategories = { ], }, MEMBERS: { - title: defineMessage({ defaultMessage: 'Members' }), + title: defineMessage({ defaultMessage: 'Members', id: '+a+2ug' }), activities: [ 'COLLECTIVE_MEMBER_INVITED', 'COLLECTIVE_CORE_MEMBER_ADDED', @@ -106,7 +106,7 @@ const ActivityCategories = { activities: ['USER_CARD_CLAIMED', 'USER_CARD_INVITED'], }, USER: { - title: defineMessage({ defaultMessage: 'User Account' }), + title: defineMessage({ defaultMessage: 'User Account', id: 'jeJ/r2' }), activities: ['USER_CREATED', 'USER_NEW_TOKEN', 'USER_CHANGE_EMAIL'], }, }; diff --git a/components/dashboard/sections/ActivityLog/ActivityUser.tsx b/components/dashboard/sections/ActivityLog/ActivityUser.tsx index d4174e3153e..9ca612a57f3 100644 --- a/components/dashboard/sections/ActivityLog/ActivityUser.tsx +++ b/components/dashboard/sections/ActivityLog/ActivityUser.tsx @@ -29,7 +29,7 @@ export const ActivityUser = ({ }) => { return activity.isSystem ? ( - + ) : showBy ? ( { if (!fullDiff.length || (isEmpty(newData) && isEmpty(previousData))) { return ( - + ); } diff --git a/components/dashboard/sections/ActivityLog/GenericActivityDiffDataWithList.tsx b/components/dashboard/sections/ActivityLog/GenericActivityDiffDataWithList.tsx index 91af33d2e22..c418b5d9221 100644 --- a/components/dashboard/sections/ActivityLog/GenericActivityDiffDataWithList.tsx +++ b/components/dashboard/sections/ActivityLog/GenericActivityDiffDataWithList.tsx @@ -98,7 +98,7 @@ export const GenericActivityDiffDataWithList = ({ activity }) => { if (!added?.length && !removed?.length && !edited?.length) { return ( - + ); } diff --git a/components/dashboard/sections/ActivityLog/index.js b/components/dashboard/sections/ActivityLog/index.js index 489233a3457..cc99828c9c9 100644 --- a/components/dashboard/sections/ActivityLog/index.js +++ b/components/dashboard/sections/ActivityLog/index.js @@ -257,7 +257,7 @@ const ActivityLog = ({ accountSlug }) => { {!data.activities.totalCount ? ( - + ) : ( {
{LoggedInUser.collective.settings.oauthBeta ? (

- +

) : ( { const account = { accessorKey: 'account', - header: intl.formatMessage({ defaultMessage: 'Account' }), + header: intl.formatMessage({ defaultMessage: 'Account', id: 'TwyMau' }), cell: ({ cell }) => { const account = cell.getValue(); return ( @@ -168,7 +168,7 @@ const getColumns = ({ intl, activeViewId }) => { const tier = { accessorKey: 'tier.name', - header: intl.formatMessage({ defaultMessage: 'Tier' }), + header: intl.formatMessage({ defaultMessage: 'Tier', id: 'b07w+D' }), cell: ({ cell }) => { const tierName = cell.getValue(); return {capitalize(tierName)}; @@ -213,7 +213,7 @@ const Contributors = ({ accountSlug }: ContributorsProps) => { const views = [ { id: ContributorsTab.ALL, - label: intl.formatMessage({ defaultMessage: 'All' }), + label: intl.formatMessage({ defaultMessage: 'All', id: 'zQvVDJ' }), count: metadata?.account?.ALL.totalCount, filter: {}, }, @@ -227,7 +227,7 @@ const Contributors = ({ accountSlug }: ContributorsProps) => { }, { id: ContributorsTab.FOLLOWERS, - label: intl.formatMessage({ defaultMessage: 'Followers' }), + label: intl.formatMessage({ defaultMessage: 'Followers', id: 'pzTOmv' }), count: metadata?.account?.[ContributorsTab.FOLLOWERS]?.totalCount, filter: { role: [FilterMemberRole.FOLLOWER], diff --git a/components/dashboard/sections/HostVirtualCardRequests.tsx b/components/dashboard/sections/HostVirtualCardRequests.tsx index 8e86e733d71..420a190da51 100644 --- a/components/dashboard/sections/HostVirtualCardRequests.tsx +++ b/components/dashboard/sections/HostVirtualCardRequests.tsx @@ -52,7 +52,7 @@ const toVariables: FiltersToVariables, HostVirtualCardReq const filters: FilterComponentConfigs, FilterMeta> = { account: hostedAccountFilter.filter, status: { - labelMsg: defineMessage({ defaultMessage: 'Status' }), + labelMsg: defineMessage({ defaultMessage: 'Status', id: 'tzMNF3' }), Component: ({ intl, ...props }) => ( > = [ { id: 'pending', - label: intl.formatMessage({ defaultMessage: 'Pending' }), + label: intl.formatMessage({ defaultMessage: 'Pending', id: 'eKEL/g' }), filter: { status: [VirtualCardRequestStatus.PENDING], }, @@ -165,7 +165,7 @@ export default function HostVirtualCardRequests({ accountSlug: hostSlug }: Dashb }, { id: 'approved', - label: intl.formatMessage({ defaultMessage: 'Approved' }), + label: intl.formatMessage({ defaultMessage: 'Approved', id: '6XFO/C' }), filter: { status: [VirtualCardRequestStatus.APPROVED], }, @@ -173,7 +173,7 @@ export default function HostVirtualCardRequests({ accountSlug: hostSlug }: Dashb }, { id: 'rejected', - label: intl.formatMessage({ defaultMessage: 'Rejected' }), + label: intl.formatMessage({ defaultMessage: 'Rejected', id: '5qaD7s' }), filter: { status: [VirtualCardRequestStatus.REJECTED], }, diff --git a/components/dashboard/sections/HostVirtualCards.tsx b/components/dashboard/sections/HostVirtualCards.tsx index 4aa21003116..7563ff3638e 100644 --- a/components/dashboard/sections/HostVirtualCards.tsx +++ b/components/dashboard/sections/HostVirtualCards.tsx @@ -191,11 +191,11 @@ const toVariables: FiltersToVariables, HostedVirtualCards const filters: FilterComponentConfigs, FilterMeta> = { searchTerm: searchFilter.filter, - date: { ...dateFilter.filter, labelMsg: defineMessage({ defaultMessage: 'Expense period' }) }, - amount: { ...amountFilter.filter, labelMsg: defineMessage({ defaultMessage: 'Total spent' }) }, + date: { ...dateFilter.filter, labelMsg: defineMessage({ defaultMessage: 'Expense period', id: 'WS520d' }) }, + amount: { ...amountFilter.filter, labelMsg: defineMessage({ defaultMessage: 'Total spent', id: '9vPzIO' }) }, orderBy: orderByFilter.filter, account: { - labelMsg: defineMessage({ defaultMessage: 'Account' }), + labelMsg: defineMessage({ defaultMessage: 'Account', id: 'TwyMau' }), Component: ({ meta, ...props }) => { const { data, loading } = useQuery(hostedVirtualCardAccountsQuery, { variables: { slug: meta.hostSlug }, @@ -218,7 +218,7 @@ const filters: FilterComponentConfigs, FilterMeta> = { valueRenderer: ({ value }) => , }, status: { - labelMsg: defineMessage({ defaultMessage: 'Status' }), + labelMsg: defineMessage({ defaultMessage: 'Status', id: 'tzMNF3' }), Component: ({ intl, ...props }) => ( { const handleCreateVirtualCardSuccess = message => { toast({ variant: 'success', - message: message || , + message: message || , }); setCreateVirtualCardModalDisplay(false); refetch(); @@ -340,7 +340,7 @@ const HostVirtualCards = ({ accountSlug: hostSlug }: DashboardSectionProps) => { onClick={() => setCreateVirtualCardModalDisplay(true)} > - + diff --git a/components/dashboard/sections/NotificationsSettings/CollectiveSettings.js b/components/dashboard/sections/NotificationsSettings/CollectiveSettings.js index a93f7bc0c99..72c40eb860b 100644 --- a/components/dashboard/sections/NotificationsSettings/CollectiveSettings.js +++ b/components/dashboard/sections/NotificationsSettings/CollectiveSettings.js @@ -54,6 +54,7 @@ const CollectiveSettings = ({ account, advancedSettings, big, roleLabel, ...boxP ({account.host.totalHostedCollectives}{' '} ) diff --git a/components/dashboard/sections/Team.tsx b/components/dashboard/sections/Team.tsx index b4c233ae5ef..04b8bcd7740 100644 --- a/components/dashboard/sections/Team.tsx +++ b/components/dashboard/sections/Team.tsx @@ -224,10 +224,14 @@ const Team = ({ accountSlug }: DashboardSectionProps) => { ) : data?.account?.isFrozen ? ( - {' '} + {' '} {isFeatureEnabled(data.account.host, FEATURES.CONTACT_FORM) && ( )} @@ -240,6 +244,7 @@ const Team = ({ accountSlug }: DashboardSectionProps) => {

{host?.policies?.COLLECTIVE_MINIMUM_ADMINS.freeze && ( @@ -247,6 +252,7 @@ const Team = ({ accountSlug }: DashboardSectionProps) => {   @@ -259,6 +265,7 @@ const Team = ({ accountSlug }: DashboardSectionProps) => { @@ -312,7 +319,10 @@ const Team = ({ accountSlug }: DashboardSectionProps) => {

- +

{childrenAccountsWithMembers.map(child => ( diff --git a/components/dashboard/sections/Vendors.tsx b/components/dashboard/sections/Vendors.tsx index 27d88301d42..bde0ad271ed 100644 --- a/components/dashboard/sections/Vendors.tsx +++ b/components/dashboard/sections/Vendors.tsx @@ -146,7 +146,7 @@ const VendorsTable = ({ vendors, loading, editVendor, openVendor, handleSetArchi
{vendor.vendorInfo?.taxFormRequired && isEmpty(vendor.vendorInfo?.taxFormUrl) && ( - + )} @@ -220,7 +220,7 @@ const OrgsTable = ({ orgs, loading, openOrg }) => { openOrg(org)}> - + @@ -255,10 +255,10 @@ type FilterValues = z.infer; const filters: FilterComponentConfigs = { searchTerm: searchFilter.filter, isArchived: { - labelMsg: defineMessage({ defaultMessage: 'Archived' }), + labelMsg: defineMessage({ defaultMessage: 'Archived', id: '0HT+Ib' }), }, includePotentialVendors: { - labelMsg: defineMessage({ defaultMessage: 'Include potential vendors' }), + labelMsg: defineMessage({ defaultMessage: 'Include potential vendors', id: '4u4DgT' }), }, }; @@ -267,19 +267,19 @@ const Vendors = ({ accountSlug }: DashboardSectionProps) => { const views: Views = [ { id: VendorsTab.ALL, - label: intl.formatMessage({ defaultMessage: 'All' }), + label: intl.formatMessage({ defaultMessage: 'All', id: 'zQvVDJ' }), filter: {}, }, { id: VendorsTab.ARCHIVED, - label: intl.formatMessage({ defaultMessage: 'Archived' }), + label: intl.formatMessage({ defaultMessage: 'Archived', id: '0HT+Ib' }), filter: { isArchived: true, }, }, { id: VendorsTab.POTENTIAL_VENDORS, - label: intl.formatMessage({ defaultMessage: 'Potential vendors' }), + label: intl.formatMessage({ defaultMessage: 'Potential vendors', id: 'I5Wgky' }), filter: { includePotentialVendors: true, }, @@ -335,7 +335,7 @@ const Vendors = ({ accountSlug }: DashboardSectionProps) => { return (
} + title={} description={ { actions={ @@ -365,7 +365,7 @@ const Vendors = ({ accountSlug }: DashboardSectionProps) => {

diff --git a/components/dashboard/sections/accounting/AccountingCategoriesTable.tsx b/components/dashboard/sections/accounting/AccountingCategoriesTable.tsx index 7b7dfb26a42..848e8ddc7f8 100644 --- a/components/dashboard/sections/accounting/AccountingCategoriesTable.tsx +++ b/components/dashboard/sections/accounting/AccountingCategoriesTable.tsx @@ -30,7 +30,9 @@ const columns = [ }, { accessorKey: 'name', - header: () => , + header: () => ( + + ), meta: { input: { required: true, maxLength: 255 } }, cell: ({ cell, row }) => { return ( @@ -45,21 +47,25 @@ const columns = [ }, { accessorKey: 'hostOnly', - header: () => , + header: () => , cell: ({ cell }) => { - return cell.getValue() ? : ; + return cell.getValue() ? ( + + ) : ( + + ); }, }, { accessorKey: 'kind', - header: () => , + header: () => , cell: ({ cell }) => { return ; }, }, { accessorKey: 'expensesTypes', - header: () => , + header: () => , cell: ({ cell, row }) => { function CellContent() { const intl = useIntl(); @@ -131,8 +137,8 @@ export function AccountingCategoriesTable(props: AccountingCategoriesTableProps) data={props.accountingCategories} emptyMessage={ props.isFiltered - ? () => - : () => + ? () => + : () => } meta={ { diff --git a/components/dashboard/sections/accounting/AccountingCategoryDrawer.tsx b/components/dashboard/sections/accounting/AccountingCategoryDrawer.tsx index 31a15b90fa1..63783cb2df7 100644 --- a/components/dashboard/sections/accounting/AccountingCategoryDrawer.tsx +++ b/components/dashboard/sections/accounting/AccountingCategoryDrawer.tsx @@ -67,7 +67,7 @@ function AccountingCategoryDrawerView(props: AccountingCategoryDrawerViewProps)

{props.accountingCategory?.kind && ( @@ -75,17 +75,17 @@ function AccountingCategoryDrawerView(props: AccountingCategoryDrawerViewProps) )}

{props.accountingCategory?.hostOnly ? ( - + ) : ( - + )}

{props.accountingCategory?.name}

@@ -99,7 +99,7 @@ function AccountingCategoryDrawerView(props: AccountingCategoryDrawerViewProps) )}

@@ -111,7 +111,7 @@ function AccountingCategoryDrawerView(props: AccountingCategoryDrawerViewProps) {props.accountingCategory?.kind === AccountingCategoryKind.EXPENSE && (

{props.accountingCategory?.expensesTypes ? ( @@ -126,7 +126,7 @@ function AccountingCategoryDrawerView(props: AccountingCategoryDrawerViewProps) {!isEmptyHTMLValue(props.accountingCategory?.instructions) && (

@@ -138,7 +138,7 @@ function AccountingCategoryDrawerView(props: AccountingCategoryDrawerViewProps) - + @@ -151,7 +151,7 @@ function AccountingCategoryDrawerView(props: AccountingCategoryDrawerViewProps) - + @@ -181,8 +181,8 @@ function AccountingCategoryEditingDrawerView(props: AccountingCategoryEditingDra hostOnly: { value: props.accountingCategory?.hostOnly, label: props.accountingCategory?.hostOnly - ? intl.formatMessage({ defaultMessage: 'Yes' }) - : intl.formatMessage({ defaultMessage: 'No' }), + ? intl.formatMessage({ defaultMessage: 'Yes', id: 'a5msuh' }) + : intl.formatMessage({ defaultMessage: 'No', id: 'oUWADl' }), }, instructions: props.accountingCategory?.instructions, expensesTypes: props.accountingCategory?.expensesTypes diff --git a/components/dashboard/sections/accounting/AccountingCategoryForm.tsx b/components/dashboard/sections/accounting/AccountingCategoryForm.tsx index 053079a26a1..8dde9cb4478 100644 --- a/components/dashboard/sections/accounting/AccountingCategoryForm.tsx +++ b/components/dashboard/sections/accounting/AccountingCategoryForm.tsx @@ -91,17 +91,22 @@ export function AccountingCategoryForm(props: AccountingCategoryFormProps) { const hostOnlyOptions = [ { value: false, - label: intl.formatMessage({ defaultMessage: 'No' }), + label: intl.formatMessage({ defaultMessage: 'No', id: 'oUWADl' }), }, { value: true, - label: intl.formatMessage({ defaultMessage: 'Yes' }), + label: intl.formatMessage({ defaultMessage: 'Yes', id: 'a5msuh' }), }, ]; return ( - + {props.formik.values.kind.value === AccountingCategoryKind.EXPENSE && ( - + )} - + props.formik.setFieldValue('friendlyName', e.target.value)} /> - + - + @@ -66,7 +66,7 @@ export function CreateAccountingCategoryModal(props: CreateAccountingCategoryMod formik.handleSubmit(e)}>
- + diff --git a/components/dashboard/sections/accounting/index.tsx b/components/dashboard/sections/accounting/index.tsx index a88ed007f28..5ac9971681a 100644 --- a/components/dashboard/sections/accounting/index.tsx +++ b/components/dashboard/sections/accounting/index.tsx @@ -91,10 +91,10 @@ function categoryToEditableFields(category: AccountingCategory) { const orderByCodeFilter = buildOrderByFilter( z.enum(['CODE,DESC', 'CODE,ASC', 'NAME,DESC', 'NAME,ASC']).default('CODE,ASC'), { - 'CODE,DESC': defineMessage({ defaultMessage: 'Code descending' }), - 'CODE,ASC': defineMessage({ defaultMessage: 'Code ascending' }), - 'NAME,DESC': defineMessage({ defaultMessage: 'Name descending' }), - 'NAME,ASC': defineMessage({ defaultMessage: 'Name ascending' }), + 'CODE,DESC': defineMessage({ defaultMessage: 'Code descending', id: 'WSOB2K' }), + 'CODE,ASC': defineMessage({ defaultMessage: 'Code ascending', id: 'XeM7ah' }), + 'NAME,DESC': defineMessage({ defaultMessage: 'Name descending', id: 'mKpwVr' }), + 'NAME,ASC': defineMessage({ defaultMessage: 'Name ascending', id: 'M5aWJU' }), }, ); @@ -104,16 +104,16 @@ const appliesToFilter = buildComboSelectFilter( z.enum([AccountingCategoryKind.ADDED_FUNDS, AccountingCategoryKind.CONTRIBUTION, AccountingCategoryKind.EXPENSE]), ) .optional(), - defineMessage({ defaultMessage: 'Applies to' }), + defineMessage({ defaultMessage: 'Applies to', id: '6WqHWi' }), AccountingCategoryKindI18n, ); const hostOnlyFilter = buildComboSelectFilter( z.enum(['yes', 'no']).optional(), - defineMessage({ defaultMessage: 'Host only' }), + defineMessage({ defaultMessage: 'Host only', id: 'qj+AAT' }), { - ['yes']: defineMessage({ defaultMessage: 'Yes' }), - ['no']: defineMessage({ defaultMessage: 'No' }), + ['yes']: defineMessage({ defaultMessage: 'Yes', id: 'a5msuh' }), + ['no']: defineMessage({ defaultMessage: 'No', id: 'oUWADl' }), }, ); @@ -264,14 +264,17 @@ export const HostAdminAccountingSection = ({ accountSlug }: DashboardSectionProp
} + title={} description={ - + } actions={ @@ -300,7 +303,9 @@ export const HostAdminAccountingSection = ({ accountSlug }: DashboardSectionProp isDanger type="delete" onClose={() => setDeleteCategoryConfirmation(null)} - header={} + header={ + + } continueHandler={async () => { await onConfirmDelete(); setDeleteCategoryConfirmation(null); diff --git a/components/dashboard/sections/collectives/AddFundsModal.js b/components/dashboard/sections/collectives/AddFundsModal.js index 90aab76b026..44e60053019 100644 --- a/components/dashboard/sections/collectives/AddFundsModal.js +++ b/components/dashboard/sections/collectives/AddFundsModal.js @@ -294,7 +294,7 @@ const getTiersOptions = (intl, tiers) => { return [ { value: null, - label: intl.formatMessage({ defaultMessage: 'No tier' }), + label: intl.formatMessage({ defaultMessage: 'No tier', id: 'ozkv/Y' }), }, ...tiers.map(tier => ({ value: tier, @@ -504,7 +504,7 @@ const AddFundsModal = ({ collective, ...props }) => { } + label={} mt={3} > {({ form, field }) => ( @@ -536,9 +536,12 @@ const AddFundsModal = ({ collective, ...props }) => { htmlFor="addFunds-processedAt" inputType="date" hint={ - + } - label={} + label={} mt={3} > {({ field }) => } @@ -574,9 +577,12 @@ const AddFundsModal = ({ collective, ...props }) => { name="memo" htmlFor="addFunds-memo" hint={ - + } - label={} + label={} required={false} mt={3} > @@ -610,7 +616,7 @@ const AddFundsModal = ({ collective, ...props }) => { htmlFor="addFunds-hostFeePercent" label={ - + {` `} ( @@ -650,7 +656,7 @@ const AddFundsModal = ({ collective, ...props }) => { labelProps={{ fontSize: '16px', fontWeight: '700' }} idNumberLabelRenderer={shortTaxTypeLabel => intl.formatMessage( - { defaultMessage: "Source's {taxName} identifier" }, + { defaultMessage: "Source's {taxName} identifier", id: 'TNecsq' }, { taxName: shortTaxTypeLabel }, ) } @@ -662,7 +668,7 @@ const AddFundsModal = ({ collective, ...props }) => { } + label={} mt={3} > {({ form, field }) => ( @@ -701,6 +707,7 @@ const AddFundsModal = ({ collective, ...props }) => { label={ } @@ -778,6 +785,7 @@ const AddFundsModal = ({ collective, ...props }) => {
  • {
  • {
  • {fundDetails.memo && (
  • - + {': '} {fundDetails.memo}
  • @@ -841,7 +850,7 @@ const AddFundsModal = ({ collective, ...props }) => { )} {fundDetails.tier && (
  • - {' '} + {' '} }); + toast({ variant: 'success', message: }); } catch (e) { setFeeStructure(previousState); toast({ variant: 'error', message: e.message }); @@ -127,7 +127,7 @@ const HostFeeStructurePicker = ({ collective, host }: Partial
  • - +
    @@ -199,7 +199,7 @@ const ExpenseTypesPicker = ({ collective }: Partial) => }; try { await submitEditSettings({ variables }); - toast({ variant: 'success', message: }); + toast({ variant: 'success', message: }); } catch (e) { setExpenseTypes(previousState); toast({ variant: 'error', message: e.message }); @@ -219,12 +219,12 @@ const ExpenseTypesPicker = ({ collective }: Partial) => @@ -247,7 +247,7 @@ const ExpenseTypesPicker = ({ collective }: Partial) =>
    @@ -255,7 +255,7 @@ const ExpenseTypesPicker = ({ collective }: Partial) =>
    @@ -306,7 +306,7 @@ const CollectiveDetails = ({ return (

    - +

    {isLoading ? ( @@ -323,11 +323,11 @@ const CollectiveDetails = ({ value={} /> } + title={} value={} /> } + title={} value={} /> @@ -377,7 +378,7 @@ const CollectiveDetails = ({ collective.approvedAt ? ( ) : ( - + ) } /> @@ -395,11 +396,11 @@ const CollectiveDetails = ({ {isHostedCollective && ( } + title={} value={} /> } + title={} value={} /> @@ -472,7 +473,7 @@ const CollectiveDetails = ({
    , diff --git a/components/dashboard/sections/collectives/DisputedContributionsWarning.tsx b/components/dashboard/sections/collectives/DisputedContributionsWarning.tsx index c87b5a7f4af..bd1621b9b45 100644 --- a/components/dashboard/sections/collectives/DisputedContributionsWarning.tsx +++ b/components/dashboard/sections/collectives/DisputedContributionsWarning.tsx @@ -55,7 +55,7 @@ export const DisputedContributionsWarning = ({ hostSlug }: DisputedContributions defaultMessage="There are disputed charges that need review." />{' '} - +

    )} @@ -66,7 +66,7 @@ export const DisputedContributionsWarning = ({ hostSlug }: DisputedContributions defaultMessage="There are charges under review that need attention." />{' '} - +

    )} diff --git a/components/dashboard/sections/collectives/FreezeAccountModal.js b/components/dashboard/sections/collectives/FreezeAccountModal.js index ddbe61a7fc0..5d41b2f34bd 100644 --- a/components/dashboard/sections/collectives/FreezeAccountModal.js +++ b/components/dashboard/sections/collectives/FreezeAccountModal.js @@ -45,13 +45,19 @@ const FreezeAccountModal = ({ collective, ...props }) => { {collective.isFrozen ? (

    - +

    - +

    - +

    { ) : (

    - +

    - +

    - +

    { fontSize="13px" />

    - +

    )} @@ -138,11 +156,11 @@ const FreezeAccountModal = ({ collective, ...props }) => { variant: 'success', message: isUnfreezing ? intl.formatMessage( - { defaultMessage: '{accountName} (@{accountSlug}) has been unfrozen' }, + { defaultMessage: '{accountName} (@{accountSlug}) has been unfrozen', id: '4ePoy6' }, successMsgArgs, ) : intl.formatMessage( - { defaultMessage: '{accountName} (@{accountSlug}) has been frozen' }, + { defaultMessage: '{accountName} (@{accountSlug}) has been frozen', id: 'Dnbu8Y' }, successMsgArgs, ), }); @@ -154,9 +172,9 @@ const FreezeAccountModal = ({ collective, ...props }) => { }} > {isUnfreezing ? ( - + ) : ( - + )} diff --git a/components/dashboard/sections/collectives/HostApplicationDrawer.tsx b/components/dashboard/sections/collectives/HostApplicationDrawer.tsx index 2c1fbf5dfee..42f704fb42d 100644 --- a/components/dashboard/sections/collectives/HostApplicationDrawer.tsx +++ b/components/dashboard/sections/collectives/HostApplicationDrawer.tsx @@ -206,6 +206,7 @@ function HostApplication({ title={ ( @@ -225,7 +226,7 @@ function HostApplication({ } + title={} value={ + } >
    @@ -362,6 +366,7 @@ function HostApplication({ intl.formatMessage({ defaultMessage: 'You can not approve this collective as it doesn’t satisfy the minimum admin policy set by you.', + id: 'mqX77s', }) } onApprove={() => processApplication(ACTIONS.APPROVE)} diff --git a/components/dashboard/sections/collectives/HostApplications.tsx b/components/dashboard/sections/collectives/HostApplications.tsx index a773b0020b3..b0e55633c08 100644 --- a/components/dashboard/sections/collectives/HostApplications.tsx +++ b/components/dashboard/sections/collectives/HostApplications.tsx @@ -43,7 +43,7 @@ const filters: FilterComponentConfigs> = { orderBy: orderByFilter.filter, searchTerm: searchFilter.filter, status: { - labelMsg: defineMessage({ defaultMessage: 'Status' }), + labelMsg: defineMessage({ defaultMessage: 'Status', id: 'tzMNF3' }), Component: ({ intl, ...props }) => ( { const views: Views> = [ { id: 'pending', - label: intl.formatMessage({ defaultMessage: 'Pending' }), + label: intl.formatMessage({ defaultMessage: 'Pending', id: 'eKEL/g' }), filter: { status: HostApplicationStatus.PENDING, }, @@ -84,13 +84,13 @@ const HostApplications = ({ accountSlug: hostSlug }: DashboardSectionProps) => { }, { id: 'approved', - label: intl.formatMessage({ defaultMessage: 'Approved' }), + label: intl.formatMessage({ defaultMessage: 'Approved', id: '6XFO/C' }), filter: { status: HostApplicationStatus.APPROVED }, count: metadata?.host?.approved?.totalCount, }, { id: 'rejected', - label: intl.formatMessage({ defaultMessage: 'Rejected' }), + label: intl.formatMessage({ defaultMessage: 'Rejected', id: '5qaD7s' }), filter: { status: HostApplicationStatus.REJECTED }, count: metadata?.host?.rejected?.totalCount, }, diff --git a/components/dashboard/sections/collectives/HostApplicationsTable.tsx b/components/dashboard/sections/collectives/HostApplicationsTable.tsx index c89c8b2cbe7..f3fa0197338 100644 --- a/components/dashboard/sections/collectives/HostApplicationsTable.tsx +++ b/components/dashboard/sections/collectives/HostApplicationsTable.tsx @@ -48,7 +48,7 @@ const StatusTag = ({ status }: { status: HostApplicationStatus }) => { const columns: ColumnDef[] = [ { accessorKey: 'account', - header: () => , + header: () => , meta: { className: 'w-56' }, cell: ({ cell }) => { const account = cell.getValue() as HostApplication['account']; @@ -121,7 +121,7 @@ const columns: ColumnDef[] = [ { accessorKey: 'status', meta: { className: 'w-28' }, - header: () => , + header: () => , cell: ({ cell }) => { const status = cell.getValue() as HostApplication['status']; return ( @@ -152,7 +152,7 @@ const columns: ColumnDef[] = [ onClick={() => openApplication(application)} data-cy={`${application.account.slug}-view-details`} > - + @@ -191,13 +191,13 @@ export default function HostApplicationsTable({ emptyMessage={() => (

    - +

    {resetFilters && (
    - +
    )} diff --git a/components/dashboard/sections/collectives/HostedCollectives.tsx b/components/dashboard/sections/collectives/HostedCollectives.tsx index 669c80dff89..cbf6fba09f8 100644 --- a/components/dashboard/sections/collectives/HostedCollectives.tsx +++ b/components/dashboard/sections/collectives/HostedCollectives.tsx @@ -123,7 +123,7 @@ const HostedCollectives = ({ accountSlug: hostSlug, subpath }: DashboardSectionP const views = [ { id: 'all', - label: intl.formatMessage({ defaultMessage: 'All' }), + label: intl.formatMessage({ defaultMessage: 'All', id: 'zQvVDJ' }), filter: { type: [CollectiveType.COLLECTIVE, CollectiveType.FUND], }, diff --git a/components/dashboard/sections/collectives/UnhostAccountModal.js b/components/dashboard/sections/collectives/UnhostAccountModal.js index 61f9611ab26..af4529dc3f1 100644 --- a/components/dashboard/sections/collectives/UnhostAccountModal.js +++ b/components/dashboard/sections/collectives/UnhostAccountModal.js @@ -55,12 +55,14 @@ const UnhostAccountModal = ({ collective, host, ...props }) => {

    @@ -68,6 +70,7 @@ const UnhostAccountModal = ({ collective, host, ...props }) => { { color="black.800.900" mb="6px" > - + { toast({ variant: 'success', message: intl.formatMessage( - { defaultMessage: '{accountName} (@{accountSlug}) has been un-hosted' }, + { defaultMessage: '{accountName} (@{accountSlug}) has been un-hosted', id: 'hOzNmK' }, successMsgArgs, ), }); @@ -134,7 +137,7 @@ const UnhostAccountModal = ({ collective, host, ...props }) => { } }} > - + diff --git a/components/dashboard/sections/collectives/common.tsx b/components/dashboard/sections/collectives/common.tsx index df188ca636e..e84a8586663 100644 --- a/components/dashboard/sections/collectives/common.tsx +++ b/components/dashboard/sections/collectives/common.tsx @@ -41,6 +41,7 @@ export const cols: Record> = { const secondLine = isChild ? ( @@ -100,7 +101,7 @@ export const cols: Record> = { }, fee: { accessorKey: 'fee', - header: () => , + header: () => , cell: ({ row }) => { const collective = row.original; return isNil(collective.hostFeePercent) ? ( @@ -212,7 +213,7 @@ export const MoreActionsMenu = ({ onClick={() => setOpenModal('ADD_AGREEMENT')} > - + - + ) : ( - + )} setOpenModal('UNHOST')}> - + diff --git a/components/dashboard/sections/contributions/Contributions.tsx b/components/dashboard/sections/contributions/Contributions.tsx index efc6f54d82b..82b20bab0c2 100644 --- a/components/dashboard/sections/contributions/Contributions.tsx +++ b/components/dashboard/sections/contributions/Contributions.tsx @@ -198,7 +198,7 @@ const getColumns = ({ tab, setEditOrder, intl, isIncoming }) => { const totalAmount = { accessorKey: 'totalAmount', - header: intl.formatMessage({ defaultMessage: 'Total Amount' }), + header: intl.formatMessage({ defaultMessage: 'Total Amount', id: 'CDTMW3' }), cell: ({ cell }) => { const amount = cell.getValue(); return ( @@ -237,7 +237,7 @@ const getColumns = ({ tab, setEditOrder, intl, isIncoming }) => { onClick={() => setEditOrder({ order, action: 'editPaymentMethod' })} > {order.status === 'PAUSED' ? ( - + ) : ( { {isResumePrevented && ( - + )} {' '} @@ -339,13 +342,13 @@ const Contributions = ({ accountSlug, direction }: ContributionsProps) => { const views: Views> = [ { id: ContributionsTab.ALL, - label: intl.formatMessage({ defaultMessage: 'All' }), + label: intl.formatMessage({ defaultMessage: 'All', id: 'zQvVDJ' }), count: metadata?.account?.ALL.totalCount, filter: {}, }, { id: ContributionsTab.RECURRING, - label: intl.formatMessage({ defaultMessage: 'Recurring' }), + label: intl.formatMessage({ defaultMessage: 'Recurring', id: 'v84fNv' }), count: metadata?.account?.[ContributionsTab.RECURRING].totalCount, filter: { type: OrderTypeFilter.RECURRING, @@ -354,7 +357,7 @@ const Contributions = ({ accountSlug, direction }: ContributionsProps) => { }, { id: ContributionsTab.ONETIME, - label: intl.formatMessage({ defaultMessage: 'One-Time' }), + label: intl.formatMessage({ defaultMessage: 'One-Time', id: 'jX0G5O' }), count: metadata?.account?.[ContributionsTab.ONETIME].totalCount, filter: { type: OrderTypeFilter.ONETIME, @@ -363,7 +366,7 @@ const Contributions = ({ accountSlug, direction }: ContributionsProps) => { }, { id: ContributionsTab.CANCELED, - label: intl.formatMessage({ defaultMessage: 'Cancelled' }), + label: intl.formatMessage({ defaultMessage: 'Cancelled', id: '3wsVWF' }), count: metadata?.account?.[ContributionsTab.CANCELED].totalCount, filter: { status: [OrderStatus.CANCELLED], diff --git a/components/dashboard/sections/contributions/CreatePendingOrderModal.tsx b/components/dashboard/sections/contributions/CreatePendingOrderModal.tsx index 16695a66214..65bbcf1e7ba 100644 --- a/components/dashboard/sections/contributions/CreatePendingOrderModal.tsx +++ b/components/dashboard/sections/contributions/CreatePendingOrderModal.tsx @@ -239,7 +239,7 @@ const getTiersOptions = (intl, tiers) => { return [ { value: null, - label: intl.formatMessage({ defaultMessage: 'No tier' }), + label: intl.formatMessage({ defaultMessage: 'No tier', id: 'ozkv/Y' }), }, ...tiers.map(tier => ({ value: tier, @@ -351,19 +351,31 @@ const CreatePendingContributionForm = ({ host, onClose, error, edit }: CreatePen const expectedAtOptions = [ { value: dayjs().add(1, 'month'), - label: intl.formatMessage({ defaultMessage: 'Within {n} {n, plural, one {month} other {months}}' }, { n: 1 }), + label: intl.formatMessage( + { defaultMessage: 'Within {n} {n, plural, one {month} other {months}}', id: 'xjMZQI' }, + { n: 1 }, + ), }, { value: dayjs().add(3, 'month'), - label: intl.formatMessage({ defaultMessage: 'Within {n} {n, plural, one {month} other {months}}' }, { n: 3 }), + label: intl.formatMessage( + { defaultMessage: 'Within {n} {n, plural, one {month} other {months}}', id: 'xjMZQI' }, + { n: 3 }, + ), }, { value: dayjs().add(6, 'month'), - label: intl.formatMessage({ defaultMessage: 'Within {n} {n, plural, one {month} other {months}}' }, { n: 6 }), + label: intl.formatMessage( + { defaultMessage: 'Within {n} {n, plural, one {month} other {months}}', id: 'xjMZQI' }, + { n: 6 }, + ), }, { value: dayjs().add(1, 'year'), - label: intl.formatMessage({ defaultMessage: 'Within {n} {n, plural, one {year} other {years}}' }, { n: 1 }), + label: intl.formatMessage( + { defaultMessage: 'Within {n} {n, plural, one {year} other {years}}', id: 'bBxR0J' }, + { n: 1 }, + ), }, ]; if (edit?.pendingContributionData?.expectedAt) { @@ -377,7 +389,7 @@ const CreatePendingContributionForm = ({ host, onClose, error, edit }: CreatePen } const paymentMethodOptions = [ { value: 'UNKNOWN', label: intl.formatMessage({ id: 'Unknown', defaultMessage: 'Unknown' }) }, - { value: 'BANK_TRANSFER', label: intl.formatMessage({ defaultMessage: 'Bank Transfer' }) }, + { value: 'BANK_TRANSFER', label: intl.formatMessage({ defaultMessage: 'Bank Transfer', id: 'Aj4Xx4' }) }, { value: 'CHECK', label: intl.formatMessage({ id: 'PaymentMethod.Check', defaultMessage: 'Check' }) }, ]; @@ -388,7 +400,7 @@ const CreatePendingContributionForm = ({ host, onClose, error, edit }: CreatePen } + label={} labelFontSize="16px" labelFontWeight="700" > @@ -411,7 +423,7 @@ const CreatePendingContributionForm = ({ host, onClose, error, edit }: CreatePen } + label={} labelFontSize="16px" labelFontWeight="700" mt={3} @@ -439,7 +451,7 @@ const CreatePendingContributionForm = ({ host, onClose, error, edit }: CreatePen } + label={} mt={3} required={false} > @@ -464,7 +476,7 @@ const CreatePendingContributionForm = ({ host, onClose, error, edit }: CreatePen } + label={} mt={3} required > @@ -547,7 +559,10 @@ const CreatePendingContributionForm = ({ host, onClose, error, edit }: CreatePen label={} mt={3} hint={ - + } required={false} > @@ -618,7 +633,7 @@ const CreatePendingContributionForm = ({ host, onClose, error, edit }: CreatePen htmlFor="CreatePendingContribution-hostFeePercent" label={ - + {` `} ( @@ -660,7 +675,7 @@ const CreatePendingContributionForm = ({ host, onClose, error, edit }: CreatePen labelProps={{ fontSize: '16px', fontWeight: '700' }} idNumberLabelRenderer={shortTaxTypeLabel => intl.formatMessage( - { defaultMessage: "Contributor's {taxName} identifier" }, + { defaultMessage: "Contributor's {taxName} identifier", id: 'qrc1oy' }, { taxName: shortTaxTypeLabel }, ) } @@ -742,7 +757,13 @@ const CreatePendingContributionForm = ({ host, onClose, error, edit }: CreatePen } + label={ + + } /> )} {Boolean(values.tax?.rate) && ( @@ -801,9 +822,9 @@ const CreatePendingContributionForm = ({ host, onClose, error, edit }: CreatePen
    @@ -866,9 +887,13 @@ const CreatePendingContributionModal = ({ hostSlug, edit, ...props }: CreatePend > {edit ? ( - + ) : ( - + )} {loading ? ( @@ -910,6 +935,7 @@ const CreatePendingContributionModal = ({ hostSlug, edit, ...props }: CreatePend message: ( ), @@ -936,6 +962,7 @@ const CreatePendingContributionModal = ({ hostSlug, edit, ...props }: CreatePend message: ( ), diff --git a/components/dashboard/sections/contributions/HostFinancialContributions.tsx b/components/dashboard/sections/contributions/HostFinancialContributions.tsx index 5e9483ae1d1..a31b981a659 100644 --- a/components/dashboard/sections/contributions/HostFinancialContributions.tsx +++ b/components/dashboard/sections/contributions/HostFinancialContributions.tsx @@ -194,19 +194,19 @@ const HostFinancialContributions = ({ accountSlug: hostSlug }: DashboardSectionP const views: Views> = [ { - label: intl.formatMessage({ defaultMessage: 'All' }), + label: intl.formatMessage({ defaultMessage: 'All', id: 'zQvVDJ' }), filter: {}, id: 'all', count: metaData?.all?.totalCount, }, { - label: intl.formatMessage({ defaultMessage: 'Pending' }), + label: intl.formatMessage({ defaultMessage: 'Pending', id: 'eKEL/g' }), filter: { status: [OrderStatus.PENDING] }, count: metaData?.pending?.totalCount, id: 'pending', }, { - label: intl.formatMessage({ defaultMessage: 'Disputed' }), + label: intl.formatMessage({ defaultMessage: 'Disputed', id: 'X1pwhF' }), filter: { status: [OrderStatus.DISPUTED] }, count: metaData?.disputed?.totalCount, id: 'disputed', @@ -248,7 +248,7 @@ const HostFinancialContributions = ({ accountSlug: hostSlug }: DashboardSectionP
    } - description={} + description={} actions={ diff --git a/components/dashboard/sections/contributions/PausedIncomingContributionsMessage.tsx b/components/dashboard/sections/contributions/PausedIncomingContributionsMessage.tsx index a5c6052ea31..3237c990e35 100644 --- a/components/dashboard/sections/contributions/PausedIncomingContributionsMessage.tsx +++ b/components/dashboard/sections/contributions/PausedIncomingContributionsMessage.tsx @@ -73,17 +73,22 @@ export const PausedIncomingContributionsMessage = ({ {account.hasResumeContributionsProcessStarted ? (

    - +

    ) : !account.canStartResumeContributionsProcess ? (

    @@ -91,6 +96,7 @@ export const PausedIncomingContributionsMessage = ({

    {msg} }} />

    - + - + { toast({ variant: 'success', - message: intl.formatMessage({ defaultMessage: 'Resume contributions process started.' }), + message: intl.formatMessage({ + defaultMessage: 'Resume contributions process started.', + id: 'CNjqsl', + }), }); }) .catch(e => { @@ -135,7 +148,7 @@ export const PausedIncomingContributionsMessage = ({ {field => ( @@ -152,6 +165,7 @@ export const PausedIncomingContributionsMessage = ({ maxLength={2000} placeholder={intl.formatMessage({ defaultMessage: 'Hey Folks, we are back and ready to receive your contributions again!', + id: 'n5Dv18', })} /> )} @@ -164,7 +178,7 @@ export const PausedIncomingContributionsMessage = ({ diff --git a/components/dashboard/sections/contributions/filters.tsx b/components/dashboard/sections/contributions/filters.tsx index abeb2c625af..0db8265696f 100644 --- a/components/dashboard/sections/contributions/filters.tsx +++ b/components/dashboard/sections/contributions/filters.tsx @@ -27,8 +27,8 @@ export enum OrderTypeFilter { } const i18nOrderType = (intl, value) => { const langs = { - [OrderTypeFilter.RECURRING]: intl.formatMessage({ defaultMessage: 'Recurring' }), - [OrderTypeFilter.ONETIME]: intl.formatMessage({ defaultMessage: 'One-time' }), + [OrderTypeFilter.RECURRING]: intl.formatMessage({ defaultMessage: 'Recurring', id: 'v84fNv' }), + [OrderTypeFilter.ONETIME]: intl.formatMessage({ defaultMessage: 'One-time', id: '/Zj5Ed' }), }; return langs[value] ?? value; }; @@ -88,7 +88,7 @@ export const filters: FilterComponentConfigs = { amount: { ...amountFilter.filter, labelMsg: defineMessage({ id: 'TotalAmount', defaultMessage: 'Total amount' }) }, orderBy: orderByFilter.filter, status: { - labelMsg: defineMessage({ defaultMessage: 'Status' }), + labelMsg: defineMessage({ defaultMessage: 'Status', id: 'tzMNF3' }), Component: ({ valueRenderer, intl, ...props }) => (
    @@ -197,7 +198,11 @@ function WiseStatus(props: WiseStatusProps) {
    - +
    @@ -246,9 +252,9 @@ function WiseStatus(props: WiseStatusProps) { > {isConnected ? ( - + ) : ( - + )} @@ -296,6 +302,7 @@ function PayPalStatus(props: PayPalStatusProps) {
    @@ -310,7 +317,11 @@ function PayPalStatus(props: PayPalStatusProps) {
    - +
    @@ -349,7 +361,7 @@ function PayPalStatus(props: PayPalStatusProps) {
    - +
    @@ -367,6 +379,7 @@ function StripeIssuingStatus(props: StripeIssuingStatusProps) {
    @@ -381,7 +394,7 @@ function StripeIssuingStatus(props: StripeIssuingStatusProps) {
    - +
    diff --git a/components/dashboard/sections/expenses/HostDashboardExpenses.tsx b/components/dashboard/sections/expenses/HostDashboardExpenses.tsx index a3d0db85aad..69f21961004 100644 --- a/components/dashboard/sections/expenses/HostDashboardExpenses.tsx +++ b/components/dashboard/sections/expenses/HostDashboardExpenses.tsx @@ -102,7 +102,7 @@ const HostExpenses = ({ accountSlug: hostSlug }: DashboardSectionProps) => { const views: Views = [ { - label: intl.formatMessage({ defaultMessage: 'All' }), + label: intl.formatMessage({ defaultMessage: 'All', id: 'zQvVDJ' }), filter: {}, id: 'all', count: metaData?.all?.totalCount, @@ -123,13 +123,13 @@ const HostExpenses = ({ accountSlug: hostSlug }: DashboardSectionProps) => { count: metaData?.scheduled_for_payment?.totalCount, }, { - label: intl.formatMessage({ defaultMessage: 'On hold' }), + label: intl.formatMessage({ defaultMessage: 'On hold', id: '0Hhe6f' }), filter: { status: ExpenseStatusFilter.ON_HOLD, orderBy: 'CREATED_AT,ASC' }, id: 'on_hold', count: metaData?.on_hold?.totalCount, }, { - label: intl.formatMessage({ defaultMessage: 'Incomplete' }), + label: intl.formatMessage({ defaultMessage: 'Incomplete', id: 'kHwKVg' }), filter: { status: ExpenseStatusFilter.INCOMPLETE, orderBy: 'CREATED_AT,ASC' }, id: 'incomplete', count: metaData?.incomplete?.totalCount, @@ -141,7 +141,7 @@ const HostExpenses = ({ accountSlug: hostSlug }: DashboardSectionProps) => { count: metaData?.error?.totalCount, }, { - label: intl.formatMessage({ defaultMessage: 'Paid' }), + label: intl.formatMessage({ defaultMessage: 'Paid', id: 'u/vOPu' }), filter: { status: ExpenseStatusFilter.PAID }, id: 'paid', count: metaData?.paid?.totalCount, diff --git a/components/dashboard/sections/expenses/PayExpensesScheduledForPaymentButton.tsx b/components/dashboard/sections/expenses/PayExpensesScheduledForPaymentButton.tsx index 136d134c860..edd0ddce35a 100644 --- a/components/dashboard/sections/expenses/PayExpensesScheduledForPaymentButton.tsx +++ b/components/dashboard/sections/expenses/PayExpensesScheduledForPaymentButton.tsx @@ -71,13 +71,14 @@ export default function PayExpensesScheduledForPaymentButton(props: PayExpensesS { defaultMessage: 'There was an error trying to process this batch, please contact support', + id: 'MEB9ET', }, { SupportLink: I18nSupportLink }, ); toast({ variant: 'error', - title: intl.formatMessage({ defaultMessage: 'Batch payment failed' }), + title: intl.formatMessage({ defaultMessage: 'Batch payment failed', id: 'HYFu3j' }), message, }); } diff --git a/components/dashboard/sections/expenses/ReceivedExpenses.tsx b/components/dashboard/sections/expenses/ReceivedExpenses.tsx index f533a9bd689..872ce8e91c2 100644 --- a/components/dashboard/sections/expenses/ReceivedExpenses.tsx +++ b/components/dashboard/sections/expenses/ReceivedExpenses.tsx @@ -56,7 +56,7 @@ const filters: FilterComponentConfigs = { ...commonFilters, tag: expenseTagFilter.filter, account: { - labelMsg: defineMessage({ defaultMessage: 'Account' }), + labelMsg: defineMessage({ defaultMessage: 'Account', id: 'TwyMau' }), Component: ({ meta, ...props }) => { return ( { return (
    } - description={} + title={} + description={} /> diff --git a/components/dashboard/sections/expenses/ScheduledExpensesBanner.tsx b/components/dashboard/sections/expenses/ScheduledExpensesBanner.tsx index 3c4dacfa46b..fea80581eef 100644 --- a/components/dashboard/sections/expenses/ScheduledExpensesBanner.tsx +++ b/components/dashboard/sections/expenses/ScheduledExpensesBanner.tsx @@ -96,13 +96,14 @@ const ScheduledExpensesBanner = ({ hostSlug, onSubmit, secondButton }) => { { defaultMessage: 'There was an error trying to process this batch, please contact support', + id: 'MEB9ET', }, { SupportLink: I18nSupportLink }, ); toast({ variant: 'error', - title: intl.formatMessage({ defaultMessage: 'Batch payment failed' }), + title: intl.formatMessage({ defaultMessage: 'Batch payment failed', id: 'HYFu3j' }), message, }); } diff --git a/components/dashboard/sections/expenses/SubmittedExpenses.tsx b/components/dashboard/sections/expenses/SubmittedExpenses.tsx index 8b533dccf76..042fa3ea36d 100644 --- a/components/dashboard/sections/expenses/SubmittedExpenses.tsx +++ b/components/dashboard/sections/expenses/SubmittedExpenses.tsx @@ -67,15 +67,17 @@ const SubmittedExpenses = ({ accountSlug }: DashboardSectionProps) => { return (
    } - description={} + title={} + description={ + + } actions={ hasNewSubmitExpenseFlow ? ( @@ -83,12 +85,12 @@ const SubmittedExpenses = ({ accountSlug }: DashboardSectionProps) => { - + - + diff --git a/components/dashboard/sections/invoices-receipts/InvoicesReceipts.js b/components/dashboard/sections/invoices-receipts/InvoicesReceipts.js index cb6c54225be..034e991c281 100644 --- a/components/dashboard/sections/invoices-receipts/InvoicesReceipts.js +++ b/components/dashboard/sections/invoices-receipts/InvoicesReceipts.js @@ -29,6 +29,7 @@ const BILL_TO_OPTIONS = [ label: ( }} /> ), @@ -102,10 +103,11 @@ const InvoicesReceipts = ({ account }) => { {({ id }) => ( @@ -137,10 +139,13 @@ const InvoicesReceipts = ({ account }) => { - +

    - +

    {!showAlternativeReceiptsSection && ( { - +
    )} @@ -184,7 +189,7 @@ const InvoicesReceipts = ({ account }) => { - + @@ -193,7 +198,10 @@ const InvoicesReceipts = ({ account }) => { {showAlternativeReceiptsSection && ( - + )} @@ -216,7 +224,7 @@ const InvoicesReceipts = ({ account }) => { setIsFieldChanged(false); toast({ variant: 'success', - message: , + message: , }); }} > diff --git a/components/dashboard/sections/invoices-receipts/ReceiptTemplateForm.tsx b/components/dashboard/sections/invoices-receipts/ReceiptTemplateForm.tsx index 944bf501c05..acf8dccef70 100644 --- a/components/dashboard/sections/invoices-receipts/ReceiptTemplateForm.tsx +++ b/components/dashboard/sections/invoices-receipts/ReceiptTemplateForm.tsx @@ -36,7 +36,7 @@ const ReceiptTemplateForm = ({ receipt, onChange }: ReceiptTemplateFormProps) => return (

    @@ -63,7 +64,7 @@ const ReceiptTemplateForm = ({ receipt, onChange }: ReceiptTemplateFormProps) => fontWeight={700} lineHeight="24px" > - + onClick={() => setShowPreview(true)} > - + @@ -94,7 +95,7 @@ const ReceiptTemplateForm = ({ receipt, onChange }: ReceiptTemplateFormProps) => /> {showPreview && ( } + heading={} onClose={() => setShowPreview(false)} previewImage="/static/images/invoice-title-preview.jpg" imgHeight="548.6px" diff --git a/components/dashboard/sections/overview/AccountTable.tsx b/components/dashboard/sections/overview/AccountTable.tsx index 8757fe98b4a..7c481d0b38f 100644 --- a/components/dashboard/sections/overview/AccountTable.tsx +++ b/components/dashboard/sections/overview/AccountTable.tsx @@ -87,7 +87,7 @@ const columns: ColumnDef[] = [ } + label={} align="left" /> ), diff --git a/components/dashboard/sections/overview/Accounts.tsx b/components/dashboard/sections/overview/Accounts.tsx index 40f693fba02..a3c87d57585 100644 --- a/components/dashboard/sections/overview/Accounts.tsx +++ b/components/dashboard/sections/overview/Accounts.tsx @@ -83,7 +83,7 @@ export function Accounts({ accountSlug }) {
    - +
    @@ -95,12 +95,12 @@ export function Accounts({ accountSlug }) { - + - + @@ -110,7 +110,7 @@ export function Accounts({ accountSlug }) {
    - +
    {loading ? ( diff --git a/components/dashboard/sections/overview/CollectiveOverview.tsx b/components/dashboard/sections/overview/CollectiveOverview.tsx index 9aac8b89c47..55102cc5719 100644 --- a/components/dashboard/sections/overview/CollectiveOverview.tsx +++ b/components/dashboard/sections/overview/CollectiveOverview.tsx @@ -121,7 +121,9 @@ export function CollectiveOverview({ accountSlug }: DashboardSectionProps) { id: 'balance', className: 'col-span-1 row-span-2', label: , - helpLabel: , + helpLabel: ( + + ), timeseries: { ...data?.account.balanceTimeseries, currency: data?.account.balance?.current?.currency }, amount: data?.account.balance, showCurrencyCode: true, @@ -131,15 +133,15 @@ export function CollectiveOverview({ accountSlug }: DashboardSectionProps) { }, { id: 'received', - label: , - helpLabel: , + label: , + helpLabel: , amount: data?.account.received, timeseries: { ...data?.account.receivedTimeseries, currency: data?.account.received?.current?.currency }, }, { id: 'spent', - label: , - helpLabel: , + label: , + helpLabel: , amount: data?.account.spent, }, @@ -267,7 +269,7 @@ export function CollectiveOverview({ accountSlug }: DashboardSectionProps) { open={showFeedbackModal} setOpen={setShowFeedbackModal} feedbackKey={FEEDBACK_KEY.COLLECTIVE_OVERVIEW} - title={} + title={} />
    ); diff --git a/components/dashboard/sections/overview/ComparisonChart.tsx b/components/dashboard/sections/overview/ComparisonChart.tsx index c033b0dab77..202b24e38c4 100644 --- a/components/dashboard/sections/overview/ComparisonChart.tsx +++ b/components/dashboard/sections/overview/ComparisonChart.tsx @@ -148,7 +148,7 @@ const makeApexOptions = ({ currency, timeUnit, dateFrom, intl, compareFrom, expa show: expanded, formatter: value => isNil(value) - ? intl.formatMessage({ defaultMessage: 'No data' }) + ? intl.formatMessage({ defaultMessage: 'No data', id: 'UG5qoS' }) : formatAmountForLegend(value, currency, intl.locale), }, }, diff --git a/components/dashboard/sections/overview/Metric.tsx b/components/dashboard/sections/overview/Metric.tsx index 9e67fae9121..a360b9919ae 100644 --- a/components/dashboard/sections/overview/Metric.tsx +++ b/components/dashboard/sections/overview/Metric.tsx @@ -130,7 +130,8 @@ export function Metric({
    {isSnapshot ? ( ) : ( {isTimelineBeingGenerated && ( - + )} @@ -107,7 +107,7 @@ export function Timeline({ accountSlug, withFilter = false }) { ) : !activities.length ? ( - + ) : ( activities.map(activity => ( @@ -131,7 +131,7 @@ export function Timeline({ accountSlug, withFilter = false }) { }) } > - + )}
    diff --git a/components/dashboard/sections/overview/TodoList.tsx b/components/dashboard/sections/overview/TodoList.tsx index 39e5d3fa8e4..464d1435a06 100644 --- a/components/dashboard/sections/overview/TodoList.tsx +++ b/components/dashboard/sections/overview/TodoList.tsx @@ -23,7 +23,7 @@ export const TodoList = () => { return (
    - +
    {pendingExpenseCount > 0 && ( @@ -33,6 +33,7 @@ export const TodoList = () => { ( { ( { ( { - + @@ -49,7 +49,10 @@ const HostFeesSection = ({ host, isLoading }) => { {valuesToDisplay.fees}

    - +

    { - + @@ -73,7 +76,10 @@ const HostFeesSection = ({ host, isLoading }) => { {valuesToDisplay.sharedRevenue}

    - +

    { - + @@ -96,7 +102,10 @@ const HostFeesSection = ({ host, isLoading }) => { {valuesToDisplay.netHostFee}

    - +

    @@ -105,7 +114,7 @@ const HostFeesSection = ({ host, isLoading }) => { setShowHostFeeChart(!showHostFeeChart)}>

    - + {showHostFeeChart ? : } diff --git a/components/dashboard/sections/reports/HostFeesSectionHistorical.js b/components/dashboard/sections/reports/HostFeesSectionHistorical.js index 1cf18ff0f02..389fd8a9af4 100644 --- a/components/dashboard/sections/reports/HostFeesSectionHistorical.js +++ b/components/dashboard/sections/reports/HostFeesSectionHistorical.js @@ -101,7 +101,7 @@ const getChartOptions = (intl, hostCurrency) => ({ }); const SERIES_NAMES = defineMessages({ - hostRevenue: { defaultMessage: 'Net Host Fees' }, + hostRevenue: { defaultMessage: 'Net Host Fees', id: '4kaWYR' }, hostFeeShare: { id: 'Transaction.kind.HOST_FEE_SHARE', defaultMessage: 'Platform share' }, }); diff --git a/components/dashboard/sections/reports/PlatformTipsCollected.js b/components/dashboard/sections/reports/PlatformTipsCollected.js index 453f707b82f..81af22e250a 100644 --- a/components/dashboard/sections/reports/PlatformTipsCollected.js +++ b/components/dashboard/sections/reports/PlatformTipsCollected.js @@ -45,6 +45,7 @@ const PlatformTipsCollected = ({ host, isLoading }) => { {' / '} { const totalMoneyManagedProgressNodes = get(timeSeries, 'totalMoneyManaged.nodes', []); return [ { - name: intl.formatMessage({ defaultMessage: 'Total Managed Amount' }), + name: intl.formatMessage({ defaultMessage: 'Total Managed Amount', id: 'MzXqKG' }), data: dataToSeries(totalMoneyManagedProgressNodes), }, ]; @@ -129,7 +129,7 @@ const TotalMoneyManagedHistorical = ({ host, collectives }) => {

    - +

    { setShowMoneyManagedChart(!showMoneyManagedChart)}>

    - + {showMoneyManagedChart ? : } diff --git a/components/dashboard/sections/reports/TransactionsOverviewSection.js b/components/dashboard/sections/reports/TransactionsOverviewSection.js index bd70ef5795e..206442ef1e8 100644 --- a/components/dashboard/sections/reports/TransactionsOverviewSection.js +++ b/components/dashboard/sections/reports/TransactionsOverviewSection.js @@ -104,6 +104,7 @@ const getTransactionsAreaChartData = (host, locale) => {

    @@ -111,6 +112,7 @@ const getTransactionsAreaChartData = (host, locale) => { {formatCurrency(dailyAverageIncomeAmount.valueInCents, currency, { locale })}, }} @@ -126,6 +128,7 @@ const getTransactionsAreaChartData = (host, locale) => {

    @@ -133,6 +136,7 @@ const getTransactionsAreaChartData = (host, locale) => { {formatCurrency(dailyAverageAmount.valueInCents, currency, { locale })}, }} @@ -161,6 +165,7 @@ const getTransactionsBreakdownChartData = host => { legend: ( ), @@ -172,6 +177,7 @@ const getTransactionsBreakdownChartData = host => { legend: ( ), @@ -183,6 +189,7 @@ const getTransactionsBreakdownChartData = host => { legend: ( ), @@ -194,6 +201,7 @@ const getTransactionsBreakdownChartData = host => { legend: ( ), @@ -209,6 +217,7 @@ const getTransactionsBreakdownChartData = host => { legend: ( ), diff --git a/components/dashboard/sections/reports/preview/CurrentPeriodBadge.tsx b/components/dashboard/sections/reports/preview/CurrentPeriodBadge.tsx index a356f71ebb1..7af16bd81c6 100644 --- a/components/dashboard/sections/reports/preview/CurrentPeriodBadge.tsx +++ b/components/dashboard/sections/reports/preview/CurrentPeriodBadge.tsx @@ -23,6 +23,7 @@ export function CurrentPeriodBadge({ diff --git a/components/dashboard/sections/reports/preview/HostReportTabs.tsx b/components/dashboard/sections/reports/preview/HostReportTabs.tsx index 8f318aebfd0..b9635f2f6b5 100644 --- a/components/dashboard/sections/reports/preview/HostReportTabs.tsx +++ b/components/dashboard/sections/reports/preview/HostReportTabs.tsx @@ -40,15 +40,17 @@ export function HostReportTabs({ queryFilter, report }) { return (

    } - description={} + title={} + description={ + + } isActive={!queryFilter.values.isHost} onClick={() => queryFilter.setFilter('isHost', false)} totalChange={report.managedFunds.totalChange} /> } - description={} + title={} + description={} isActive={queryFilter.values.isHost} onClick={() => queryFilter.setFilter('isHost', true)} totalChange={report.operationalFunds.totalChange} diff --git a/components/dashboard/sections/reports/preview/HostTransactionReport.tsx b/components/dashboard/sections/reports/preview/HostTransactionReport.tsx index f672c899beb..f18a916a6ac 100644 --- a/components/dashboard/sections/reports/preview/HostTransactionReport.tsx +++ b/components/dashboard/sections/reports/preview/HostTransactionReport.tsx @@ -111,7 +111,7 @@ const HostTransactionReport = ({ accountSlug: hostSlug, subpath }: DashboardSect if (!variables) { return ( - + ); } @@ -140,7 +140,7 @@ const HostTransactionReport = ({ accountSlug: hostSlug, subpath }: DashboardSect openExportTransactionsModal()}> - + @@ -162,7 +162,7 @@ const HostTransactionReport = ({ accountSlug: hostSlug, subpath }: DashboardSect
    {reportSections?.length === 0 && (

    - +

    )} {reportSections?.map(section => ( @@ -253,10 +253,10 @@ const HostTransactionReport = ({ accountSlug: hostSlug, subpath }: DashboardSect viewTransactions(row.filter)}> - + openExportTransactionsModal(row.filter)}> - + @@ -315,11 +315,15 @@ const HostTransactionReport = ({ accountSlug: hostSlug, subpath }: DashboardSect
    + } > {dayjs(variables.dateFrom).utc().format('D MMM, YYYY')} (UTC) @@ -338,7 +342,7 @@ const HostTransactionReport = ({ accountSlug: hostSlug, subpath }: DashboardSect
    - +
    + } > {dayjs(variables.dateTo).utc().format('D MMM, YYYY')} (UTC) @@ -445,7 +453,7 @@ const PreviewFeatureConfigButton = ({ layout, setLayout }) => { } + title={} feedbackKey={FEEDBACK_KEY.HOST_REPORTS} open={feedbackModalOpen} setOpen={setFeedbackModalOpen} diff --git a/components/dashboard/sections/reports/preview/HostTransactionReportsList.tsx b/components/dashboard/sections/reports/preview/HostTransactionReportsList.tsx index e32fe878aba..6b6fa15f2bb 100644 --- a/components/dashboard/sections/reports/preview/HostTransactionReportsList.tsx +++ b/components/dashboard/sections/reports/preview/HostTransactionReportsList.tsx @@ -45,7 +45,7 @@ const getColumns = intl => [ { accessorKey: 'managedFundsTotalChange', meta: { className: 'w-44 text-right' }, - header: intl.formatMessage({ defaultMessage: 'Managed funds net' }), + header: intl.formatMessage({ defaultMessage: 'Managed funds net', id: 'cnkgEs' }), cell: ({ cell }) => { const amount = cell.getValue(); return ( @@ -64,7 +64,7 @@ const getColumns = intl => [ { accessorKey: 'operationalFundsTotalChange', meta: { className: 'w-44 text-right' }, - header: intl.formatMessage({ defaultMessage: 'Operational funds net' }), + header: intl.formatMessage({ defaultMessage: 'Operational funds net', id: 'VTkwSg' }), cell: ({ cell }) => { const amount = cell.getValue(); return ( diff --git a/components/dashboard/sections/reports/preview/LegacyColumnRows.tsx b/components/dashboard/sections/reports/preview/LegacyColumnRows.tsx index d966123a63b..17ecc3cccc1 100644 --- a/components/dashboard/sections/reports/preview/LegacyColumnRows.tsx +++ b/components/dashboard/sections/reports/preview/LegacyColumnRows.tsx @@ -12,6 +12,7 @@ import { TransactionReportRowLabel } from './TransactionRowLabel'; const legacyColumnHelpMessage = defineMessage({ defaultMessage: 'This amount is included in the originating transactions above. As of {date} {kind, select, HOST_FEE_SHARE {Platform fees} PAYMENT_PROCESSOR_FEE {Payment processor fees} HOST_FEE {Host fees} TAX {Taxes} other {these}} are split into their own transaction kind.', + id: 'YDaVYt', }); const legacyColumns = [ diff --git a/components/dashboard/sections/reports/preview/NavigationArrows.tsx b/components/dashboard/sections/reports/preview/NavigationArrows.tsx index de514b165a0..3f0196089a5 100644 --- a/components/dashboard/sections/reports/preview/NavigationArrows.tsx +++ b/components/dashboard/sections/reports/preview/NavigationArrows.tsx @@ -38,6 +38,7 @@ export function ReportNavigationArrows({ variables, onChange }) { @@ -56,6 +57,7 @@ export function ReportNavigationArrows({ variables, onChange }) { diff --git a/components/dashboard/sections/reports/preview/TransactionRowLabel.tsx b/components/dashboard/sections/reports/preview/TransactionRowLabel.tsx index 02eb9f561fe..28ba63e17dd 100644 --- a/components/dashboard/sections/reports/preview/TransactionRowLabel.tsx +++ b/components/dashboard/sections/reports/preview/TransactionRowLabel.tsx @@ -24,7 +24,7 @@ export const TransactionReportRowLabel = ({ filter }) => { } if (filter.isRefund) { - return intl.formatMessage({ defaultMessage: 'Refunded {kind}' }, { kind: label }); + return intl.formatMessage({ defaultMessage: 'Refunded {kind}', id: 'XGGPfz' }, { kind: label }); } else { return label; } diff --git a/components/dashboard/sections/transactions/HostTransactions.tsx b/components/dashboard/sections/transactions/HostTransactions.tsx index 85dbe66782f..1047f96a479 100644 --- a/components/dashboard/sections/transactions/HostTransactions.tsx +++ b/components/dashboard/sections/transactions/HostTransactions.tsx @@ -59,7 +59,7 @@ export const toVariables: FiltersToVariables = { ...commonFilters, excludeHost: { - labelMsg: defineMessage({ defaultMessage: 'Exclude host account' }), + labelMsg: defineMessage({ defaultMessage: 'Exclude host account', id: 'yxffGP' }), }, account: hostedAccountFilter.filter, }; @@ -101,7 +101,7 @@ const HostTransactions = ({ accountSlug: hostSlug }: DashboardSectionProps) => { const views = [ { - label: intl.formatMessage({ defaultMessage: 'All' }), + label: intl.formatMessage({ defaultMessage: 'All', id: 'zQvVDJ' }), filter: {}, id: 'all', }, diff --git a/components/dashboard/sections/transactions/TransactionDrawer.tsx b/components/dashboard/sections/transactions/TransactionDrawer.tsx index 05f4436a56f..dddad455e7f 100644 --- a/components/dashboard/sections/transactions/TransactionDrawer.tsx +++ b/components/dashboard/sections/transactions/TransactionDrawer.tsx @@ -214,7 +214,7 @@ const DataList = ({ title, value }) => { ); }; -const CopyID = ({ children, tooltipLabel = }) => { +const CopyID = ({ children, tooltipLabel = }) => { const { isCopied, copy } = useClipboard(); return ( @@ -302,11 +302,11 @@ export function TransactionDrawer({
    - +
    - }> + }> {transaction?.id ?? transactionId}
    @@ -341,7 +341,7 @@ export function TransactionDrawer({ @@ -349,6 +349,7 @@ export function TransactionDrawer({ setFilter('openTransactionId', transaction?.refundTransaction.id)}> - + @@ -376,6 +377,7 @@ export function TransactionDrawer({ - + {showDownloadInvoiceButton && ( {transaction?.expense ? ( - + ) : ( - + )} )} @@ -458,6 +460,7 @@ export function TransactionDrawer({

    - +

    } + title={} value={ - }> + }> {transaction?.group} } @@ -509,13 +512,16 @@ export function TransactionDrawer({ - + e.preventDefault()}> e.preventDefault()}> - +
    @@ -528,7 +534,7 @@ export function TransactionDrawer({ /> )} } + title={} value={i18nTransactionType(intl, transaction?.type)} /> - + )} @@ -555,7 +561,7 @@ export function TransactionDrawer({ } /> } + title={} value={ } + title={} value={ } + title={} value={ )} } + title={} value={ - + e.preventDefault()}> e.preventDefault()}> - +
    } value={ - }> + } + > {transaction?.oppositeTransaction?.id} } @@ -682,9 +693,11 @@ export function TransactionDrawer({ {transaction?.isRefund && transaction?.refundTransaction && ( } + title={} value={ - }> + } + > {transaction?.refundTransaction?.id} } @@ -693,7 +706,7 @@ export function TransactionDrawer({ {transaction?.expense?.account?.slug && ( } + title={} value={ @@ -713,7 +726,7 @@ export function TransactionDrawer({ )} {transaction?.order && ( } + title={} value={ diff --git a/components/dashboard/sections/transactions/TransactionRefundModal.tsx b/components/dashboard/sections/transactions/TransactionRefundModal.tsx index 9c85bd5bc0e..6c656fba6fb 100644 --- a/components/dashboard/sections/transactions/TransactionRefundModal.tsx +++ b/components/dashboard/sections/transactions/TransactionRefundModal.tsx @@ -55,10 +55,13 @@ const TransactionRefundModal = ({ - + - + diff --git a/components/dashboard/sections/transactions/TransactionRejectModal.tsx b/components/dashboard/sections/transactions/TransactionRejectModal.tsx index 09cb20c971c..de015e532d5 100644 --- a/components/dashboard/sections/transactions/TransactionRejectModal.tsx +++ b/components/dashboard/sections/transactions/TransactionRejectModal.tsx @@ -65,7 +65,7 @@ const TransactionRejectModal = ({ - + , + header: () => , meta: { className: 'w-32 2xl:w-48' }, cell: ({ cell }) => { const account = cell.getValue() as Transaction['account']; @@ -102,7 +102,7 @@ const cols = { }, oppositeAccount: { accessorKey: 'oppositeAccount', - header: () => , + header: () => , meta: { className: 'w-32 2xl:w-48' }, cell: ({ cell }) => { const account = cell.getValue() as Transaction['oppositeAccount']; @@ -121,7 +121,7 @@ const cols = { }, toFromAccount: { accessorKey: 'oppositeAccount', - header: () => , + header: () => , meta: { className: 'w-48' }, cell: ({ cell, row }) => { const account = cell.getValue() as Transaction['oppositeAccount']; @@ -165,7 +165,7 @@ const cols = { {isRefunded && !isOrderRejected && ( - + )} {isRefund && ( @@ -176,13 +176,13 @@ const cols = { {isDisputed && ( - + )} {isOrderRejected && isRefunded && ( - + )} {isInReview && ( @@ -198,7 +198,7 @@ const cols = { }, netAmount: { accessorKey: 'netAmount', - header: () => , + header: () => , meta: { className: 'w-28 text-right' }, cell: ({ cell, row }) => { const netAmount = cell.getValue() as Transaction['netAmount']; @@ -249,7 +249,7 @@ const cols = { - + diff --git a/components/dashboard/sections/transactions/filters.tsx b/components/dashboard/sections/transactions/filters.tsx index 605fb820b2f..1578e4ac6b9 100644 --- a/components/dashboard/sections/transactions/filters.tsx +++ b/components/dashboard/sections/transactions/filters.tsx @@ -124,11 +124,11 @@ export const filters: FilterComponentConfigs = { valueRenderer: ({ value }) => , }, group: { - labelMsg: defineMessage({ defaultMessage: 'Transaction group' }), + labelMsg: defineMessage({ defaultMessage: 'Transaction group', id: 'VY4AcX' }), valueRenderer: ({ value }) => value.substring(0, 8), }, expenseType: { - labelMsg: defineMessage({ defaultMessage: 'Expense type' }), + labelMsg: defineMessage({ defaultMessage: 'Expense type', id: '9cwufA' }), Component: ({ valueRenderer, intl, ...props }) => ( = { valueRenderer: ({ value, intl }) => i18nExpenseType(intl, value), }, orderId: { - labelMsg: defineMessage({ defaultMessage: 'Contribution ID' }), + labelMsg: defineMessage({ defaultMessage: 'Contribution ID', id: 'cVkF3C' }), Component: ({ value, onChange }) => { return (
    @@ -157,7 +157,7 @@ export const filters: FilterComponentConfigs = { }, }, expenseId: { - labelMsg: defineMessage({ defaultMessage: 'Expense ID' }), + labelMsg: defineMessage({ defaultMessage: 'Expense ID', id: 'aJWAKv' }), Component: ({ value, onChange }) => { return (
    @@ -173,7 +173,7 @@ export const filters: FilterComponentConfigs = { }, }, isRefund: { - labelMsg: defineMessage({ defaultMessage: 'Is Refund' }), + labelMsg: defineMessage({ defaultMessage: 'Is Refund', id: 'o+jEZR' }), Component: ({ intl, ...props }) => { const options = React.useMemo(() => { return [true, false].map(value => ({ diff --git a/components/dashboard/sections/virtual-cards/VirtualCards.tsx b/components/dashboard/sections/virtual-cards/VirtualCards.tsx index 55a64c915f0..ffd5f63c5bb 100644 --- a/components/dashboard/sections/virtual-cards/VirtualCards.tsx +++ b/components/dashboard/sections/virtual-cards/VirtualCards.tsx @@ -48,10 +48,10 @@ const toVariables: FiltersToVariables = { - date: { ...dateFilter.filter, labelMsg: defineMessage({ defaultMessage: 'Created at' }) }, + date: { ...dateFilter.filter, labelMsg: defineMessage({ defaultMessage: 'Created at', id: 'AbXVP4' }) }, orderBy: orderByFilter.filter, status: { - labelMsg: defineMessage({ defaultMessage: 'Status' }), + labelMsg: defineMessage({ defaultMessage: 'Status', id: 'tzMNF3' }), Component: ({ intl, ...props }) => ( ( defaultMessage="Be part of the new generation of communities." /> - + @@ -60,14 +60,19 @@ const JoinTheMovement = () => ( } - description={} + description={ + + } /> } description={ - + } /> diff --git a/components/e2c/ResourcesSection.js b/components/e2c/ResourcesSection.js index 5ec9ba47c42..c13f7f747a4 100644 --- a/components/e2c/ResourcesSection.js +++ b/components/e2c/ResourcesSection.js @@ -104,7 +104,7 @@ const ResourcesSection = () => { textTransform="uppercase" > - + {' '} • {blogEntry.date}

    diff --git a/components/edit-collective/AssignVirtualCardModal.js b/components/edit-collective/AssignVirtualCardModal.js index cdc75e8c5ae..5b2def672af 100644 --- a/components/edit-collective/AssignVirtualCardModal.js +++ b/components/edit-collective/AssignVirtualCardModal.js @@ -207,7 +207,7 @@ const AssignVirtualCardModal = ({ collective = undefined, host, onSuccess, onClo } + label={} htmlFor="collective" error={formik.touched.collective && formik.errors.collective} > @@ -243,6 +243,7 @@ const AssignVirtualCardModal = ({ collective = undefined, host, onSuccess, onClo > - + @@ -262,7 +263,7 @@ const AssignVirtualCardModal = ({ collective = undefined, host, onSuccess, onClo } + label={} htmlFor="assignee" error={formik.touched.assignee && formik.errors.assignee} > @@ -305,7 +306,7 @@ const AssignVirtualCardModal = ({ collective = undefined, host, onSuccess, onClo } + label={} htmlFor="cardName" error={formik.touched.cardName && formik.errors.cardName} > @@ -325,7 +326,7 @@ const AssignVirtualCardModal = ({ collective = undefined, host, onSuccess, onClo } + label={} htmlFor="number" error={formik.touched.cardNumber && formik.errors.cardNumber} > @@ -375,7 +376,7 @@ const AssignVirtualCardModal = ({ collective = undefined, host, onSuccess, onClo } + label={} htmlFor="expiryDate" error={formik.touched.expiryDate && formik.errors.expiryDate} > @@ -395,7 +396,7 @@ const AssignVirtualCardModal = ({ collective = undefined, host, onSuccess, onClo } + label={} htmlFor="cvv" error={formik.touched.cvv && formik.errors.cvv} > diff --git a/components/edit-collective/DeleteVirtualCardModal.js b/components/edit-collective/DeleteVirtualCardModal.js index 0ddd38e6e76..afa37c5bde0 100644 --- a/components/edit-collective/DeleteVirtualCardModal.js +++ b/components/edit-collective/DeleteVirtualCardModal.js @@ -48,6 +48,7 @@ const DeleteVirtualCardModal = ({ virtualCard, onSuccess, onClose, onDeleteRefet message: ( ); + onSuccess?.(); handleClose(); }, }); @@ -69,11 +70,14 @@ const DeleteVirtualCardModal = ({ virtualCard, onSuccess, onClose, onDeleteRefet
    - +

    - +

    diff --git a/components/edit-collective/EditConnectedAccount.js b/components/edit-collective/EditConnectedAccount.js index 80e6d6024f9..00bf19dac60 100644 --- a/components/edit-collective/EditConnectedAccount.js +++ b/components/edit-collective/EditConnectedAccount.js @@ -84,7 +84,10 @@ class EditConnectedAccount extends React.Component { // Success! toast({ variant: 'success', - message: intl.formatMessage({ defaultMessage: 'Successfully connected {service} account' }, { service }), + message: intl.formatMessage( + { defaultMessage: 'Successfully connected {service} account', id: 'p63wXt' }, + { service }, + ), }); // Refetch connected accounts @@ -95,7 +98,10 @@ class EditConnectedAccount extends React.Component { // Not showing the exact error message to users as raw fetch messages are not user friendly toast({ variant: 'error', - message: intl.formatMessage({ defaultMessage: 'Error while connecting {service} account' }, { service }), + message: intl.formatMessage( + { defaultMessage: 'Error while connecting {service} account', id: 'FWMal2' }, + { service }, + ), }); } finally { // Update URL to remove callback params @@ -202,7 +208,7 @@ class EditConnectedAccount extends React.Component {

    - +

    ) : ( @@ -216,12 +222,16 @@ class EditConnectedAccount extends React.Component { {Boolean(connectedAccount.settings?.needsReconnect) && ( - + )}

    @{connectedAccount.username}, @@ -265,7 +275,10 @@ class EditConnectedAccount extends React.Component { minWidth={120} mb={2} > - {intl.formatMessage({ defaultMessage: 'Connect {service}' }, { service: capitalize(service) })} + {intl.formatMessage( + { defaultMessage: 'Connect {service}', id: 'C9HmCs' }, + { service: capitalize(service) }, + )} )} diff --git a/components/edit-collective/EditPayPalAccount.js b/components/edit-collective/EditPayPalAccount.js index 21c0f4c627d..62ba27eae11 100644 --- a/components/edit-collective/EditPayPalAccount.js +++ b/components/edit-collective/EditPayPalAccount.js @@ -122,7 +122,7 @@ const EditPayPalAccount = props => { - + ); @@ -141,6 +141,7 @@ const EditPayPalAccount = props => {

    diff --git a/components/edit-collective/EditTransferWiseAccount.js b/components/edit-collective/EditTransferWiseAccount.js index 02097fa29c8..10800f25e73 100644 --- a/components/edit-collective/EditTransferWiseAccount.js +++ b/components/edit-collective/EditTransferWiseAccount.js @@ -40,7 +40,7 @@ const EditTransferWiseAccount = ({ collective, ...props }) => { )} - + ); diff --git a/components/edit-collective/EditVirtualCardModal.tsx b/components/edit-collective/EditVirtualCardModal.tsx index 47daa454ac1..43de39cad30 100644 --- a/components/edit-collective/EditVirtualCardModal.tsx +++ b/components/edit-collective/EditVirtualCardModal.tsx @@ -254,6 +254,7 @@ export default function EditVirtualCardModal({ message: ( ); + onSuccess?.(); handleClose(); }, validate(values: any) { @@ -337,17 +338,23 @@ export default function EditVirtualCardModal({
    {isEditing ? ( - + ) : ( - + )}

    {isEditing ? ( - + ) : ( - + )}

    @@ -358,7 +365,9 @@ export default function EditVirtualCardModal({ mb={3} labelFontSize="13px" labelFontWeight="bold" - label={} + label={ + + } htmlFor="collective" error={formik.touched.collective && formik.errors.collective} > @@ -397,6 +406,7 @@ export default function EditVirtualCardModal({ > - + @@ -418,7 +428,7 @@ export default function EditVirtualCardModal({ } + label={} htmlFor="assignee" error={formik.touched.assignee && formik.errors.assignee} > @@ -440,7 +450,7 @@ export default function EditVirtualCardModal({ mt={3} labelFontWeight="bold" labelFontSize="13px" - label={} + label={} htmlFor="cardName" error={formik.touched.cardName && formik.errors.cardName} > @@ -449,7 +459,7 @@ export default function EditVirtualCardModal({ {...inputProps} name="cardName" id="cardName" - placeholder={intl.formatMessage({ defaultMessage: 'e.g Card for Subscription' })} + placeholder={intl.formatMessage({ defaultMessage: 'e.g Card for Subscription', id: 'vREsbj' })} onChange={formik.handleChange} value={formik.values.cardName} disabled={isBusy} @@ -468,6 +478,7 @@ export default function EditVirtualCardModal({ label={ } + label={} htmlFor="limitAmount" > {inputProps => ( @@ -550,7 +561,7 @@ export default function EditVirtualCardModal({ {isEditing ? ( ) : ( - + )} diff --git a/components/edit-collective/Form.js b/components/edit-collective/Form.js index 148a4f7cf02..8598d190ee8 100644 --- a/components/edit-collective/Form.js +++ b/components/edit-collective/Form.js @@ -273,7 +273,7 @@ class EditCollectiveForm extends React.Component { id: 'event.privateInstructions.description', defaultMessage: 'These instructions will be provided by email to the participants.', }, - inValidDateError: { defaultMessage: 'Please enter a valid date' }, + inValidDateError: { defaultMessage: 'Please enter a valid date', id: '6DCLcI' }, }); collective.backgroundImage = collective.backgroundImage || defaultBackgroundImage[collective.type]; @@ -888,7 +888,7 @@ class EditCollectiveForm extends React.Component { isEvent ? `/${collective.parentCollective.slug}/events/${collective.slug}` : `/${collective.slug}` } > - + diff --git a/components/edit-collective/LeaveHostModal.tsx b/components/edit-collective/LeaveHostModal.tsx index 0e98db9fb67..34baccf0133 100644 --- a/components/edit-collective/LeaveHostModal.tsx +++ b/components/edit-collective/LeaveHostModal.tsx @@ -137,7 +137,7 @@ export const LeaveHostModal = ({ account, host, onClose }) => { toast({ variant: 'success', message: intl.formatMessage( - { defaultMessage: '{hostName} is no longer the Fiscal Host for {collectiveName}' }, + { defaultMessage: '{hostName} is no longer the Fiscal Host for {collectiveName}', id: 'lf0csJ' }, { hostName: host.name, collectiveName: account.name }, ), }); @@ -163,6 +163,7 @@ export const LeaveHostModal = ({ account, host, onClose }) => {

    {account.name}, count: portabilitySummary.totalCount, @@ -176,7 +177,7 @@ export const LeaveHostModal = ({ account, host, onClose }) => { ), }} />{' '} - +

    {
    @@ -204,10 +209,14 @@ export const LeaveHostModal = ({ account, host, onClose }) => {
    @@ -215,12 +224,16 @@ export const LeaveHostModal = ({ account, host, onClose }) => { @@ -237,10 +250,14 @@ export const LeaveHostModal = ({ account, host, onClose }) => { maxLength={2000} placeholder={ values.pauseContributions - ? intl.formatMessage({ defaultMessage: 'We are transitioning to a new fiscal host.' }) + ? intl.formatMessage({ + defaultMessage: 'We are transitioning to a new fiscal host.', + id: '7l+n+e', + }) : intl.formatMessage({ defaultMessage: 'We are leaving Open Collective. You can continue supporting us through our website.', + id: 'd6I3CS', }) } /> diff --git a/components/edit-collective/RequestVirtualCardModal.js b/components/edit-collective/RequestVirtualCardModal.js index 6930b106fed..1ba43024a9b 100644 --- a/components/edit-collective/RequestVirtualCardModal.js +++ b/components/edit-collective/RequestVirtualCardModal.js @@ -195,6 +195,7 @@ const RequestVirtualCardModal = props => { label={ { ml={3} labelFontSize="13px" labelFontWeight="bold" - label={} + label={} htmlFor="spendingLimitAmount" > {inputProps => ( diff --git a/components/edit-collective/SendFundsToCollectiveSection.js b/components/edit-collective/SendFundsToCollectiveSection.js index b68e62787f4..689d8fa7af2 100644 --- a/components/edit-collective/SendFundsToCollectiveSection.js +++ b/components/edit-collective/SendFundsToCollectiveSection.js @@ -51,7 +51,7 @@ const SendFundsToCollectiveSection = ({ collective, toCollective, LoggedInUser } @@ -59,21 +59,21 @@ const SendFundsToCollectiveSection = ({ collective, toCollective, LoggedInUser }

    setModal({ ...modal, show: false, isApproved: false })}> - + setModal({ ...modal, show: false, isApproved: true })} > - + diff --git a/components/edit-collective/SocialLinksFormField.tsx b/components/edit-collective/SocialLinksFormField.tsx index 6bcc05108cb..8fa21bffb71 100644 --- a/components/edit-collective/SocialLinksFormField.tsx +++ b/components/edit-collective/SocialLinksFormField.tsx @@ -94,7 +94,7 @@ export default function SocialLinksFormField({ value = [], touched, onChange }: > - + diff --git a/components/edit-collective/VirtualCard.js b/components/edit-collective/VirtualCard.js index 4fb8c7b75ba..c5d5aa051cf 100644 --- a/components/edit-collective/VirtualCard.js +++ b/components/edit-collective/VirtualCard.js @@ -159,10 +159,10 @@ export const ActionsButton = props => { try { if (isActive) { await pauseCard({ variables: { virtualCard: { id: virtualCard.id } } }); - handleActionSuccess(); + handleActionSuccess(); } else { await resumeCard({ variables: { virtualCard: { id: virtualCard.id } } }); - handleActionSuccess(); + handleActionSuccess(); } } catch (e) { props.onError(e); @@ -187,7 +187,7 @@ export const ActionsButton = props => { {props.openVirtualCardDrawer && ( props.openVirtualCardDrawer(virtualCard)}> - + @@ -212,14 +212,14 @@ export const ActionsButton = props => { {canDeleteVirtualCard && ( setIsDeletingVirtualCard(true)} disabled={isCanceled}> - + )} {canEditVirtualCard && ( setIsEditingVirtualCard(true)}> - + @@ -232,7 +232,7 @@ export const ActionsButton = props => { target="_blank" rel="noopener noreferrer" > - + @@ -241,7 +241,7 @@ export const ActionsButton = props => { - + @@ -250,7 +250,7 @@ export const ActionsButton = props => { - + @@ -262,7 +262,7 @@ export const ActionsButton = props => { } + header={} continueLabel={} onClose={() => setShowConfirmationModal(false)} continueHandler={async () => { @@ -270,7 +270,10 @@ export const ActionsButton = props => { }} >

    - +

    )} @@ -335,7 +338,7 @@ const getLimitString = ({ {spendingLimitInterval === VirtualCardLimitInterval.PER_AUTHORIZATION ? (  •  { @@ -102,9 +100,7 @@ const ArchiveCollective = ({ collective }) => {

      @@ -130,9 +126,7 @@ const ArchiveCollective = ({ collective }) => { > @@ -141,9 +135,7 @@ const ArchiveCollective = ({ collective }) => {

    @@ -159,9 +151,7 @@ const ArchiveCollective = ({ collective }) => { ) : ( )} @@ -177,9 +167,7 @@ const ArchiveCollective = ({ collective }) => { setModal({ type: 'Unarchive', show: true })} loading={processing}> @@ -208,22 +196,21 @@ const ArchiveCollective = ({ collective }) => { - + )} {modal.type === 'Unarchive' && ( )} @@ -232,7 +219,7 @@ const ArchiveCollective = ({ collective }) => { setModal({ ...modal, show: false })}> - + { }} > {modal.type === 'Unarchive' ? ( - + ) : ( - + )} diff --git a/components/edit-collective/actions/Delete.js b/components/edit-collective/actions/Delete.js index 6890bea349b..b29f460e17f 100644 --- a/components/edit-collective/actions/Delete.js +++ b/components/edit-collective/actions/Delete.js @@ -64,18 +64,14 @@ const DeleteCollective = ({ collective, ...props }) => {

    @@ -92,9 +88,7 @@ const DeleteCollective = ({ collective, ...props }) => { > @@ -109,9 +103,7 @@ const DeleteCollective = ({ collective, ...props }) => { ) : ( )}{' '} @@ -123,9 +115,7 @@ const DeleteCollective = ({ collective, ...props }) => {

    {' '}

    @@ -135,9 +125,7 @@ const DeleteCollective = ({ collective, ...props }) => {

    @@ -147,7 +135,7 @@ const DeleteCollective = ({ collective, ...props }) => { @@ -155,9 +143,7 @@ const DeleteCollective = ({ collective, ...props }) => {

    @@ -165,7 +151,7 @@ const DeleteCollective = ({ collective, ...props }) => { setShowModal(false)}> - + {

    @@ -39,9 +35,7 @@ const EmptyBalance = ({ collective, LoggedInUser }) => {

    )} diff --git a/components/edit-collective/sections/BankTransfer.js b/components/edit-collective/sections/BankTransfer.js index 6be0a65fa34..1d68a137822 100644 --- a/components/edit-collective/sections/BankTransfer.js +++ b/components/edit-collective/sections/BankTransfer.js @@ -160,7 +160,7 @@ const BankTransfer = props => { {existingManualPaymentMethod && ( - +
                     {renderBankInstructions(instructions, latestBankAccount?.data)}
    @@ -197,7 +197,7 @@ const BankTransfer = props => {
                       setShowRemoveBankConfirmationModal(true);
                     }}
                   >
    -                
    +                
                   
                 )}
               
    @@ -312,7 +312,7 @@ const BankTransfer = props => {
               onClose={() => {
                 setShowRemoveBankConfirmationModal(false);
               }}
    -          header={}
    +          header={}
               continueHandler={async () => {
                 const paymentMethods = get(data.host, 'settings.paymentMethods');
                 const modifiedPaymentMethods = omit(paymentMethods, 'manual');
    @@ -338,7 +338,7 @@ const BankTransfer = props => {
               }}
             >
               

    - +

    )} diff --git a/components/edit-collective/sections/ConnectedAccounts.js b/components/edit-collective/sections/ConnectedAccounts.js index 7d3a566142a..4ab412d8c1c 100644 --- a/components/edit-collective/sections/ConnectedAccounts.js +++ b/components/edit-collective/sections/ConnectedAccounts.js @@ -33,6 +33,7 @@ const ConnectedAccounts = props => {

    { message: ( { onCompleted: () => { toast({ variant: 'success', - message: , + message: , }); }, }); @@ -77,13 +78,16 @@ const CustomMessage = ({ collective }) => { return (

    - +

    - + { onClick={() => setShowPreview(true)} > - + @@ -115,13 +119,19 @@ const CustomMessage = ({ collective }) => { {[CollectiveType.EVENT, CollectiveType.PROJECT].includes(collective.type) ? (

    - +

    ) : (

    - +

    )} @@ -138,9 +148,12 @@ const CustomMessage = ({ collective }) => { {showPreview && ( } + heading={} subheading={ - + } onClose={() => setShowPreview(false)} previewImage="/static/images/custom-email-preview.png" diff --git a/components/edit-collective/sections/EditCollectivePage.js b/components/edit-collective/sections/EditCollectivePage.js index ee4e6f275f1..2417acc996e 100644 --- a/components/edit-collective/sections/EditCollectivePage.js +++ b/components/edit-collective/sections/EditCollectivePage.js @@ -133,7 +133,7 @@ const CollectiveSectionEntry = ({ value: 'ADMIN', }, { - label: , + label: , value: 'DISABLED', }, ]; diff --git a/components/edit-collective/sections/FiscalHosting.js b/components/edit-collective/sections/FiscalHosting.js index 8fe835e6427..fcb2af8f953 100644 --- a/components/edit-collective/sections/FiscalHosting.js +++ b/components/edit-collective/sections/FiscalHosting.js @@ -192,9 +192,7 @@ const FiscalHosting = ({ collective }) => {

    )} @@ -204,9 +202,7 @@ const FiscalHosting = ({ collective }) => {

    )} @@ -220,7 +216,7 @@ const FiscalHosting = ({ collective }) => { disabled={false} my={2} > - + )} @@ -231,7 +227,7 @@ const FiscalHosting = ({ collective }) => { disabled={collective.plan.hostedCollectives > 0} mb={2} > - + )} @@ -240,9 +236,7 @@ const FiscalHosting = ({ collective }) => {

    )} @@ -251,19 +245,17 @@ const FiscalHosting = ({ collective }) => { {activateAsHostModal.type === 'Activate' && ( - + )} {activateAsHostModal.type === 'Deactivate' && ( - + )}

    , }} @@ -273,13 +265,13 @@ const FiscalHosting = ({ collective }) => { {activateAsHostModal.type === 'Activate' && ( )} {activateAsHostModal.type === 'Deactivate' && ( )}

    @@ -287,7 +279,7 @@ const FiscalHosting = ({ collective }) => { setActivateAsHostModal({ ...activateAsHostModal, show: false })}> - + { }} > {activateAsHostModal.type === 'Activate' && ( - + )} {activateAsHostModal.type === 'Deactivate' && ( - + )} @@ -324,9 +316,7 @@ const FiscalHosting = ({ collective }) => {

    )} @@ -335,9 +325,7 @@ const FiscalHosting = ({ collective }) => {

    )} @@ -350,7 +338,7 @@ const FiscalHosting = ({ collective }) => { loading={activateBudgetStatus.processing} mb={2} > - + )} @@ -360,10 +348,10 @@ const FiscalHosting = ({ collective }) => { {activateBudgetModal.type === 'Activate' && ( - + )} {activateBudgetModal.type === 'Deactivate' && ( - + )} @@ -371,13 +359,13 @@ const FiscalHosting = ({ collective }) => { {activateBudgetModal.type === 'Activate' && ( )} {activateBudgetModal.type === 'Deactivate' && ( )}

    @@ -385,14 +373,14 @@ const FiscalHosting = ({ collective }) => { setActivateBudgetModal({ ...activateBudgetModal, show: false })}> - + handlePrimaryBtnClick()}> {activateBudgetModal.type === 'Activate' && ( - + )} {activateBudgetModal.type === 'Deactivate' && ( - + )} diff --git a/components/edit-collective/sections/Host.js b/components/edit-collective/sections/Host.js index e3116093772..5d36b34be92 100644 --- a/components/edit-collective/sections/Host.js +++ b/components/edit-collective/sections/Host.js @@ -213,7 +213,7 @@ class Host extends React.Component { ) : (

    - +

    {/** Host info */} @@ -242,6 +242,7 @@ class Host extends React.Component { @@ -261,6 +262,7 @@ class Host extends React.Component {

    - + - +

    diff --git a/components/edit-collective/sections/HostVirtualCardsSettings.js b/components/edit-collective/sections/HostVirtualCardsSettings.js index 552b64c45a1..7b991e6fa2c 100644 --- a/components/edit-collective/sections/HostVirtualCardsSettings.js +++ b/components/edit-collective/sections/HostVirtualCardsSettings.js @@ -219,7 +219,7 @@ const HostVirtualCards = props => { - + - +
    )} {hasPaymentMethodsToConfirm && ( - + )} {orderedPaymentMethods.map(pm => { @@ -426,7 +426,7 @@ function AddCreditCardButton(props: AddCreditCardButtonProps) { } toast({ variant: 'success', - message: , + message: , }); } catch (e) { toast({ variant: 'error', message: i18nGraphqlException(intl, e) }); diff --git a/components/edit-collective/sections/Policies.js b/components/edit-collective/sections/Policies.js index a3576c8a633..5629a5573a7 100644 --- a/components/edit-collective/sections/Policies.js +++ b/components/edit-collective/sections/Policies.js @@ -124,6 +124,7 @@ const messages = defineMessages({ }, 'requiredAdmins.numberOfAdmins': { defaultMessage: '{admins, plural, =0 {Do not enforce minimum number of admins} one {# Admin} other {# Admins} }', + id: 'tGmvPD', }, }); @@ -219,7 +220,7 @@ const Policies = ({ collective, showOnlyExpensePolicy }) => { toast({ variant: 'success', - message: formatMessage({ defaultMessage: 'Policies updated successfully' }), + message: formatMessage({ defaultMessage: 'Policies updated successfully', id: 'Owy3QB' }), }); } catch (e) { toast({ @@ -265,8 +266,8 @@ const Policies = ({ collective, showOnlyExpensePolicy }) => { label: formatMessage(messages['requiredAdmins.numberOfAdmins'], { admins: n }), })); const minAdminsApplies = [ - { value: 'NEW_COLLECTIVES', label: }, - { value: 'ALL_COLLECTIVES', label: }, + { value: 'NEW_COLLECTIVES', label: }, + { value: 'ALL_COLLECTIVES', label: }, ]; const hostAuthorCannotApproveExpensePolicy = data?.account?.host?.policies?.['EXPENSE_AUTHOR_CANNOT_APPROVE']; @@ -369,7 +370,7 @@ const Policies = ({ collective, showOnlyExpensePolicy }) => { disabled={isSubmittingSettings} labelFontSize="13px" labelFontWeight="700" - label={} + label={} flexGrow={1} > { disabled={isSubmittingSettings} labelFontSize="13px" labelFontWeight="700" - label={} + label={} flexGrow={1} > { } + label={ + + } onChange={({ checked }) => { formik.setFieldValue('policies.COLLECTIVE_MINIMUM_ADMINS', { ...formik.values.policies.COLLECTIVE_MINIMUM_ADMINS, @@ -425,12 +431,18 @@ const Policies = ({ collective, showOnlyExpensePolicy }) => { checked={Boolean(formik.values.policies?.COLLECTIVE_MINIMUM_ADMINS?.freeze)} />

    - +

    {formik.values.policies?.COLLECTIVE_MINIMUM_ADMINS?.applies === 'ALL_COLLECTIVES' && formik.values.policies?.COLLECTIVE_MINIMUM_ADMINS?.freeze && ( - + )}
    @@ -476,7 +488,7 @@ const Policies = ({ collective, showOnlyExpensePolicy }) => { color={!formik.values.policies?.['EXPENSE_AUTHOR_CANNOT_APPROVE']?.enabled ? 'black.600' : undefined} >

    - +

    { - +

    { - +

    - +

    - +

    + } checked={formik.values.policies?.EXPENSE_PUBLIC_VENDORS} onChange={({ checked }) => { @@ -652,11 +670,12 @@ const Policies = ({ collective, showOnlyExpensePolicy }) => { collective.isHost && ( - +

    { + } checked={formik.values.policies?.EXPENSE_CATEGORIZATION?.requiredForExpenseSubmitters} onChange={({ checked }) => { @@ -684,7 +706,10 @@ const Policies = ({ collective, showOnlyExpensePolicy }) => { + } checked={formik.values.policies?.EXPENSE_CATEGORIZATION?.requiredForCollectiveAdmins} onChange={({ checked }) => { @@ -724,13 +749,16 @@ const Policies = ({ collective, showOnlyExpensePolicy }) => { {collective.isHost && ( - + + } checked={formik.values.policies?.COLLECTIVE_ADMINS_CAN_REFUND} onChange={() => diff --git a/components/edit-collective/sections/Security.js b/components/edit-collective/sections/Security.js index 434e47ba41e..59ff762dccc 100644 --- a/components/edit-collective/sections/Security.js +++ b/components/edit-collective/sections/Security.js @@ -146,11 +146,15 @@ const Security = ({ collective }) => {

    - +

    @@ -172,10 +176,13 @@ const Security = ({ collective }) => {

    - +

    - +

    @@ -212,7 +219,7 @@ const Security = ({ collective }) => { } > - + diff --git a/components/edit-collective/sections/SendingMoney.js b/components/edit-collective/sections/SendingMoney.js index b5c75f3a905..f0ea209977c 100644 --- a/components/edit-collective/sections/SendingMoney.js +++ b/components/edit-collective/sections/SendingMoney.js @@ -68,15 +68,13 @@ class SendingMoney extends React.Component { {!services.includes('paypal') && ( - + {!this.props.collective.settings?.disablePaypalPayouts && (

    )} @@ -84,9 +82,7 @@ class SendingMoney extends React.Component {

    )} diff --git a/components/edit-collective/sections/Tiers.js b/components/edit-collective/sections/Tiers.js index 5a93040378a..ad47a9363ab 100644 --- a/components/edit-collective/sections/Tiers.js +++ b/components/edit-collective/sections/Tiers.js @@ -37,7 +37,10 @@ const getSortedContributeCards = (collective, tiers, intl) => { collective, hideContributors: true, hideCTA: true, - missingCTAMsg: intl.formatMessage({ defaultMessage: 'The default contribution tier cannot be edited.' }), + missingCTAMsg: intl.formatMessage({ + defaultMessage: 'The default contribution tier cannot be edited.', + id: 'setJlw', + }), }, } : { @@ -84,12 +87,15 @@ const Tiers = ({ collective, isLegacyOCFDuplicatedAccount }) => {

    - +

    - +

    @@ -97,7 +103,7 @@ const Tiers = ({ collective, isLegacyOCFDuplicatedAccount }) => { href="https://docs.opencollective.com/help/collectives/collective-settings/tiers-goals" openInNewTab > - . + .

    diff --git a/components/edit-collective/sections/UserSecurity.js b/components/edit-collective/sections/UserSecurity.js index 846c01c612c..1ed0ed09e9e 100644 --- a/components/edit-collective/sections/UserSecurity.js +++ b/components/edit-collective/sections/UserSecurity.js @@ -74,7 +74,7 @@ class UserSecurity extends React.Component { if (password === currentPassword) { this.setState({ - passwordError: , + passwordError: , }); return; } @@ -82,7 +82,10 @@ class UserSecurity extends React.Component { if (passwordScore <= 1) { this.setState({ passwordError: ( - + ), }); return; @@ -107,9 +110,9 @@ class UserSecurity extends React.Component { toast({ variant: 'success', message: hadPassword ? ( - + ) : ( - + ), }); } catch (e) { @@ -158,7 +161,7 @@ class UserSecurity extends React.Component { {LoggedInUser.hasPassword && ( } + label={} labelFontWeight="bold" htmlFor="current-password" mb={2} @@ -180,7 +183,7 @@ class UserSecurity extends React.Component { )} } + label={} labelFontWeight="bold" htmlFor="new-password" mt={2} @@ -189,6 +192,7 @@ class UserSecurity extends React.Component { hint={ { {

    - +

    {JSON.stringify(WebhookEventInfo[activity](), null, 2)}
    diff --git a/components/edit-collective/sections/Webhooks.js b/components/edit-collective/sections/Webhooks.js index 84f30746d89..c3e34d14b29 100644 --- a/components/edit-collective/sections/Webhooks.js +++ b/components/edit-collective/sections/Webhooks.js @@ -219,7 +219,7 @@ class Webhooks extends React.Component { @@ -282,6 +283,7 @@ class Webhooks extends React.Component {

    diff --git a/components/edit-collective/sections/fiscal-host/OCFDuplicateAndApplyToHostModal.tsx b/components/edit-collective/sections/fiscal-host/OCFDuplicateAndApplyToHostModal.tsx index 88c5f7b9db4..3e3dded1f17 100644 --- a/components/edit-collective/sections/fiscal-host/OCFDuplicateAndApplyToHostModal.tsx +++ b/components/edit-collective/sections/fiscal-host/OCFDuplicateAndApplyToHostModal.tsx @@ -189,7 +189,11 @@ const applyToHostMutation = gql` const GQL_CONTEXT = { context: API_V2_CONTEXT }; const INITIAL_FORM_VALUES = { message: '', areTosChecked: false, collective: null, inviteMembers: [] }; const STEPS = { - INFORMATION: { key: 'INFORMATION', name: 'Information', label: }, + INFORMATION: { + key: 'INFORMATION', + name: 'Information', + label: , + }, APPLY: { key: 'APPLY', name: 'Apply', label: }, } as const; @@ -487,7 +491,7 @@ const OCFDuplicateAndApplyToHostModal = ({ hostSlug, collective, onClose, onSucc

    - +

    diff --git a/components/edit-collective/sections/team/MemberForm.js b/components/edit-collective/sections/team/MemberForm.js index b43aabf1f95..2369d0cc854 100644 --- a/components/edit-collective/sections/team/MemberForm.js +++ b/components/edit-collective/sections/team/MemberForm.js @@ -30,7 +30,7 @@ const memberFormMessages = defineMessages({ roleLabel: { id: 'members.role.label', defaultMessage: 'Role' }, sinceLabel: { id: 'user.since.label', defaultMessage: 'Since' }, descriptionLabel: { id: 'Fields.description', defaultMessage: 'Description' }, - inValidDateError: { defaultMessage: 'Please enter a valid date' }, + inValidDateError: { defaultMessage: 'Please enter a valid date', id: '6DCLcI' }, }); const MemberForm = props => { diff --git a/components/edit-collective/sections/team/ResendMemberInviteBtn.js b/components/edit-collective/sections/team/ResendMemberInviteBtn.js index a303cb0c293..b6924100f2d 100644 --- a/components/edit-collective/sections/team/ResendMemberInviteBtn.js +++ b/components/edit-collective/sections/team/ResendMemberInviteBtn.js @@ -37,7 +37,7 @@ const ResendMemberInviteBtn = ({ member, collective }) => { } catch (e) { toast({ variant: 'error', - title: intl.formatMessage({ defaultMessage: 'Cannot send member invitation' }), + title: intl.formatMessage({ defaultMessage: 'Cannot send member invitation', id: 'mGnvLd' }), message: i18nGraphqlException(intl, e), }); } diff --git a/components/edit-collective/tiers/ConfirmTierDeleteModal.js b/components/edit-collective/tiers/ConfirmTierDeleteModal.js index b1be9fcd9e8..8919ed919d3 100644 --- a/components/edit-collective/tiers/ConfirmTierDeleteModal.js +++ b/components/edit-collective/tiers/ConfirmTierDeleteModal.js @@ -36,6 +36,7 @@ export default function ConfirmTierDeleteModal({ isDeleting, onClose, onConfirmD const action = ( ); @@ -44,16 +45,19 @@ export default function ConfirmTierDeleteModal({ isDeleting, onClose, onConfirmD {action}

    - +

    - +

    - +

    - + } + label={} labelFontWeight="bold" mt="3" flexDirection={'row'} @@ -504,6 +504,7 @@ function FormFields({ collective, values, hideTypeSelect }) { name="invoiceTemplate" label={intl.formatMessage({ defaultMessage: 'Choose receipt', + id: 'cyMx/0', })} labelFontWeight="bold" mt="3" @@ -525,6 +526,7 @@ function FormFields({ collective, values, hideTypeSelect }) { {intl.formatMessage({ defaultMessage: 'Choose between the receipts templates available.', + id: 'sn4ULW', })} @@ -853,7 +855,7 @@ function EditTierForm({ tier, collective, onClose, onUpdate, forcedType }) { toast({ variant: 'success', message: intl.formatMessage( - { defaultMessage: '{type, select, TICKET {Ticket} other {Tier}} deleted.' }, + { defaultMessage: '{type, select, TICKET {Ticket} other {Tier}} deleted.', id: 'r5PByj' }, { type: tier.type }, ), }); @@ -889,11 +891,11 @@ function EditTierForm({ tier, collective, onClose, onUpdate, forcedType }) { variant: 'success', message: isEditing ? intl.formatMessage( - { defaultMessage: '{type, select, TICKET {Ticket} other {Tier}} updated.' }, + { defaultMessage: '{type, select, TICKET {Ticket} other {Tier}} updated.', id: 'SOhVsw' }, { type: values.type }, ) : intl.formatMessage( - { defaultMessage: '{type, select, TICKET {Ticket} other {Tier}} created.' }, + { defaultMessage: '{type, select, TICKET {Ticket} other {Tier}} created.', id: 'deViVP' }, { type: values.type }, ), }); @@ -910,11 +912,13 @@ function EditTierForm({ tier, collective, onClose, onUpdate, forcedType }) { {isEditing ? ( ) : ( )} diff --git a/components/expenses/ApproveExpenseModal.tsx b/components/expenses/ApproveExpenseModal.tsx index 16bba4aaf03..28890a5d934 100644 --- a/components/expenses/ApproveExpenseModal.tsx +++ b/components/expenses/ApproveExpenseModal.tsx @@ -34,7 +34,7 @@ export default function ApproveExpenseModal({ return ( } + header={} maxWidth={384} disableSubmit={!selectedCategory} continueHandler={async () => { @@ -59,7 +59,7 @@ export default function ApproveExpenseModal({ >
    diff --git a/components/expenses/ConfirmProcessExpenseModal.tsx b/components/expenses/ConfirmProcessExpenseModal.tsx index 1f77cc3e42c..c0a6ce589c8 100644 --- a/components/expenses/ConfirmProcessExpenseModal.tsx +++ b/components/expenses/ConfirmProcessExpenseModal.tsx @@ -15,6 +15,7 @@ import { toast } from '../ui/useToast'; const messages = defineMessages({ reasonPlaceholder: { defaultMessage: 'e.g. Email Address is wrong', + id: 'g0KLMH', }, REQUEST_RE_APPROVAL_TITLE: { id: 'expense.requestReApproval.btn', @@ -23,19 +24,24 @@ const messages = defineMessages({ REQUEST_RE_APPROVAL_DESCRIPTION: { defaultMessage: 'Please mention the reason why this expense requires re-approval. The reason will be shared with the user and also be documented as a comment under the expense.', + id: 'jD5/NS', }, REQUEST_RE_APPROVAL_CONFIRM_BUTTON: { defaultMessage: 'Confirm and request re-approval', + id: 'UrUS9j', }, MARK_AS_INCOMPLETE_TITLE: { defaultMessage: 'Mark as incomplete', + id: 'hu7oaH', }, MARK_AS_INCOMPLETE_DESCRIPTION: { defaultMessage: 'Please mention the reason why this expense has been marked as incomplete. The reason will be shared with the user and also be documented as a comment under the expense.', + id: 'x7D8vH', }, MARK_AS_INCOMPLETE_CONFIRM_BUTTON: { defaultMessage: 'Confirm and mark as incomplete', + id: 'lNyyJU', }, APPROVE_TITLE: { id: 'actions.approve', @@ -44,6 +50,7 @@ const messages = defineMessages({ APPROVE_DESCRIPTION: { defaultMessage: 'You may add a note that will be shared with the user and also be documented as a comment under the expense.', + id: 'xmVXUM', }, APPROVE_CONFIRM_BUTTON: { id: 'actions.approve', @@ -56,6 +63,7 @@ const messages = defineMessages({ UNAPPROVE_DESCRIPTION: { defaultMessage: 'Please mention the reason why this expense has been unapproved. The reason will be shared with the user and also be documented as a comment under the expense.', + id: 'SREb+h', }, UNAPPROVE_CONFIRM_BUTTON: { id: 'expense.unapprove.btn', defaultMessage: 'Unapprove' }, REJECT_TITLE: { @@ -65,17 +73,21 @@ const messages = defineMessages({ REJECT_DESCRIPTION: { defaultMessage: 'Please mention the reason why this expense has been rejected. The reason will be shared with the user and also be documented as a comment under the expense.', + id: 'aOO6yW', }, REJECT_CONFIRM_BUTTON: { id: 'actions.reject', defaultMessage: 'Reject' }, HOLD_TITLE: { defaultMessage: 'Put expense on hold', + id: 'FXOuRH', }, HOLD_DESCRIPTION: { defaultMessage: 'Expense is still approved but can not be paid out until it is released. Expense is also not displayed in ready to pay.', + id: 'aE2FPd', }, HOLD_CONFIRM_BUTTON: { defaultMessage: 'Put on Hold', + id: '+pCc8I', }, RELEASE_TITLE: { id: 'actions.release', @@ -83,6 +95,7 @@ const messages = defineMessages({ }, RELEASE_DESCRIPTION: { defaultMessage: 'Expense can be paid out and is displayed in ready to pay list.', + id: 'zIsgw6', }, RELEASE_CONFIRM_BUTTON: { id: 'actions.release', diff --git a/components/expenses/Expense.tsx b/components/expenses/Expense.tsx index 9ab74339e33..1bb36bf01f0 100644 --- a/components/expenses/Expense.tsx +++ b/components/expenses/Expense.tsx @@ -423,8 +423,8 @@ function Expense(props) { setShowResetModal(false); }} {...(isEditingExistingExpense && { - continueLabel: intl.formatMessage({ defaultMessage: 'Yes, cancel editing' }), - cancelLabel: intl.formatMessage({ defaultMessage: 'No, continue editing' }), + continueLabel: intl.formatMessage({ defaultMessage: 'Yes, cancel editing', id: 'b++lom' }), + cancelLabel: intl.formatMessage({ defaultMessage: 'No, continue editing', id: 'fIsGOi' }), })} /> ) : ( @@ -502,7 +502,7 @@ function Expense(props) { buttonSize="tiny" onClick={() => setState(state => ({ ...state, showTaxLinkModal: true }))} > - +
    )} @@ -588,7 +588,7 @@ function Expense(props) { name="newsletterOptIn" label={ - . + . } required @@ -716,6 +716,7 @@ function Expense(props) { parentTitle={intl.formatMessage( { defaultMessage: 'Expense #{expenseId} attachment', + id: 'At2m8o', }, { expenseId: expense.legacyId }, )} diff --git a/components/expenses/ExpenseAmountBreakdown.js b/components/expenses/ExpenseAmountBreakdown.js index f3b21bb9ae6..57c520c5a9a 100644 --- a/components/expenses/ExpenseAmountBreakdown.js +++ b/components/expenses/ExpenseAmountBreakdown.js @@ -41,7 +41,7 @@ const ExpenseAmountBreakdown = ({ items, currency, taxes, expenseTotalAmount }) - + {currency && ` (${currency})`}   diff --git a/components/expenses/ExpenseForm.js b/components/expenses/ExpenseForm.js index d20645ba4d0..e3875fc7930 100644 --- a/components/expenses/ExpenseForm.js +++ b/components/expenses/ExpenseForm.js @@ -716,7 +716,7 @@ const ExpenseFormBody = ({ {/* Tags */}
    - + @@ -736,7 +736,7 @@ const ExpenseFormBody = ({ {/* Currency */}
    - +
    @@ -767,7 +767,7 @@ const ExpenseFormBody = ({ lineHeight="26px" fontWeight="bold" > - +
    @@ -799,7 +799,10 @@ const ExpenseFormBody = ({
    - + {formik.values.accountingCategory?.instructions && ( @@ -905,8 +908,8 @@ const ExpenseFormBody = ({ setShowResetModal(false); }} {...(editingExpense && { - continueLabel: formatMessage({ defaultMessage: 'Yes, cancel editing' }), - cancelLabel: formatMessage({ defaultMessage: 'No, continue editing' }), + continueLabel: formatMessage({ defaultMessage: 'Yes, cancel editing', id: 'b++lom' }), + cancelLabel: formatMessage({ defaultMessage: 'No, continue editing', id: 'fIsGOi' }), })} /> )} diff --git a/components/expenses/ExpenseFormItems.js b/components/expenses/ExpenseFormItems.js index b1351a3c96e..14f88221ef7 100644 --- a/components/expenses/ExpenseFormItems.js +++ b/components/expenses/ExpenseFormItems.js @@ -238,6 +238,7 @@ class ExpenseFormItems extends React.PureComponent { @@ -246,7 +247,7 @@ class ExpenseFormItems extends React.PureComponent {
    - + @@ -266,6 +267,7 @@ class ExpenseFormItems extends React.PureComponent { label={ } diff --git a/components/expenses/ExpenseFormPayeeStep.js b/components/expenses/ExpenseFormPayeeStep.js index c6a5262888c..bc457b2c386 100644 --- a/components/expenses/ExpenseFormPayeeStep.js +++ b/components/expenses/ExpenseFormPayeeStep.js @@ -149,11 +149,11 @@ const getPayeeOptions = (intl, payoutProfiles) => { const payeeOptions = [ { - label: intl.formatMessage({ defaultMessage: 'Myself' }), + label: intl.formatMessage({ defaultMessage: 'Myself', id: 'YjO/0+' }), options: getProfileOptions(INDIVIDUAL), }, { - label: intl.formatMessage({ defaultMessage: 'Vendors' }), + label: intl.formatMessage({ defaultMessage: 'Vendors', id: 'RilevA' }), options: getProfileOptions(VENDOR), }, { @@ -177,7 +177,7 @@ const getPayeeOptions = (intl, payoutProfiles) => { if (profilesByType[PROJECT]?.length) { payeeOptions.push({ options: getProfileOptions(PROJECT), - label: intl.formatMessage({ defaultMessage: 'My Projects' }), + label: intl.formatMessage({ defaultMessage: 'My Projects', id: 'FVO2wx' }), }); } if (profilesByType[EVENT]?.length) { diff --git a/components/expenses/ExpenseItemForm.js b/components/expenses/ExpenseItemForm.js index 8f431cbe500..90cd8021f0b 100644 --- a/components/expenses/ExpenseItemForm.js +++ b/components/expenses/ExpenseItemForm.js @@ -156,16 +156,19 @@ const WithOCRComparisonWarning = ({ comparison, formatValue, children, mrClass = {comparison.hasCurrencyMismatch ? ( ) : comparison.hasAmountMismatch ? ( ) : ( )} @@ -527,6 +530,7 @@ const ExpenseItemForm = ({ } approximateCustomMessage={intl.formatMessage({ defaultMessage: 'This value is an estimate. Please set the exact amount received if known.', + id: 'zNBAqh', })} /> )} @@ -534,7 +538,7 @@ const ExpenseItemForm = ({ {hasAccountingCategory && (

    - +

    - +   diff --git a/components/expenses/ExpenseRecurringBanner.js b/components/expenses/ExpenseRecurringBanner.js index 9b66900b862..5f98dc0ba5e 100644 --- a/components/expenses/ExpenseRecurringBanner.js +++ b/components/expenses/ExpenseRecurringBanner.js @@ -48,7 +48,7 @@ const ExpenseRecurringEditModal = ({ onClose, expense }) => { await deleteExpense({ variables: { expense: pick(expense, ['id']) } }); toast({ variant: 'success', - message: intl.formatMessage({ defaultMessage: 'Expense deleted' }), + message: intl.formatMessage({ defaultMessage: 'Expense deleted', id: 'KYXMJ6' }), }); router.push(getCollectivePageRoute(expense.account)); onClose(); diff --git a/components/expenses/ExpenseSummary.js b/components/expenses/ExpenseSummary.js index 80a4e947871..6bd8fc25613 100644 --- a/components/expenses/ExpenseSummary.js +++ b/components/expenses/ExpenseSummary.js @@ -461,6 +461,7 @@ const ExpenseSummary = ({ @@ -488,7 +489,7 @@ const ExpenseSummary = ({ - + diff --git a/components/expenses/ExpenseSummaryAdditionalInformation.js b/components/expenses/ExpenseSummaryAdditionalInformation.js index fb274533238..7b5331ab291 100644 --- a/components/expenses/ExpenseSummaryAdditionalInformation.js +++ b/components/expenses/ExpenseSummaryAdditionalInformation.js @@ -68,6 +68,7 @@ const PayeeTotalPayoutSumTooltip = ({ stats }) => { content={() => ( {text}, agreementsCount: collective.hostAgreements.totalCount, diff --git a/components/expenses/ExpensesPage.tsx b/components/expenses/ExpensesPage.tsx index db9684082fd..beb22ce4c3c 100644 --- a/components/expenses/ExpensesPage.tsx +++ b/components/expenses/ExpensesPage.tsx @@ -95,7 +95,7 @@ const Expenses = props => {

    {onlySubmittedExpenses ? ( - + ) : ( )} diff --git a/components/expenses/ItemDescriptionHint.tsx b/components/expenses/ItemDescriptionHint.tsx index 398da1bc178..e9d101bf260 100644 --- a/components/expenses/ItemDescriptionHint.tsx +++ b/components/expenses/ItemDescriptionHint.tsx @@ -28,7 +28,7 @@ export const ExpenseItemDescriptionHint = ({ item, isInvoice, form, field }: Exp description: ( { form.setFieldValue(field.name, suggested); setHideHint(true); @@ -45,9 +45,11 @@ export const ExpenseItemDescriptionHint = ({ item, isInvoice, form, field }: Exp return isInvoice ? intl.formatMessage({ defaultMessage: 'Specify item or activity and timeframe, e.g. "Volunteer Training, April 2023"', + id: 'rpqkOE', }) : intl.formatMessage({ defaultMessage: 'Describe the expense, e.g. "Dinner with the team"', + id: 'cX1UXz', }); } else { return null; diff --git a/components/expenses/MarkExpenseAsUnpaidButton.tsx b/components/expenses/MarkExpenseAsUnpaidButton.tsx index 87b3a5a5c47..c7611af62a2 100644 --- a/components/expenses/MarkExpenseAsUnpaidButton.tsx +++ b/components/expenses/MarkExpenseAsUnpaidButton.tsx @@ -34,6 +34,7 @@ const generateNewExpenseStatusOptions = intl => [ const messages = defineMessages({ reasonPlaceholder: { defaultMessage: 'e.g. Failed transfer', + id: 'mOdpl+', }, }); diff --git a/components/expenses/PayExpenseModal.tsx b/components/expenses/PayExpenseModal.tsx index 8119bda6007..d993b9daa7c 100644 --- a/components/expenses/PayExpenseModal.tsx +++ b/components/expenses/PayExpenseModal.tsx @@ -333,6 +333,7 @@ const getHandleSubmit = (intl, currency, onSubmit) => async values => { { defaultMessage: 'You are about to record a payment for {totalAmount} that includes a {paymentProcessorFeeAmount} payment processor fee. This fee looks unusually high.{newLine}{newLine}Are you sure you want to do this?', + id: 'UW7XhX', }, { totalAmount: formatCurrency(values.totalAmountPaidInHostCurrency, currency), @@ -573,9 +574,12 @@ const PayExpenseModal = ({ error={formik.errors.clearedAt} required={false} mt={3} - label={} + label={} hint={ - + } > {inputProps => ( @@ -607,7 +611,10 @@ const PayExpenseModal = ({ + } > formik.setFieldValue('feesPayer', checked ? 'PAYEE' : 'COLLECTIVE')} label={ - + } /> @@ -702,7 +709,7 @@ const PayExpenseModal = ({ {amounts.effectiveRate ? (

    ~ {expense.currency} 1 = {amounts.totalAmount?.currency} {round(amounts.effectiveRate, 5)} diff --git a/components/expenses/PayoutBankInformationForm.js b/components/expenses/PayoutBankInformationForm.js index affdd4c5ccc..8f4523622ce 100644 --- a/components/expenses/PayoutBankInformationForm.js +++ b/components/expenses/PayoutBankInformationForm.js @@ -506,6 +506,7 @@ const PayoutBankInformationForm = ({ isNew, getFieldName, host, fixedCurrency, i @@ -539,6 +540,7 @@ const PayoutBankInformationForm = ({ isNew, getFieldName, host, fixedCurrency, i { defaultMessage: 'The minimum amount for transferring to {selectedCurrency} is {minAmountForSelectedCurrency}', + id: 'AzGwgz', }, { selectedCurrency, diff --git a/components/expenses/PayoutMethodSelect.tsx b/components/expenses/PayoutMethodSelect.tsx index 7d88e07a21d..ce2b2103000 100644 --- a/components/expenses/PayoutMethodSelect.tsx +++ b/components/expenses/PayoutMethodSelect.tsx @@ -286,9 +286,15 @@ class PayoutMethodSelect extends React.Component { if (!collective?.host?.isTrustedHost) { return ( - +   - + ); } @@ -297,6 +303,7 @@ class PayoutMethodSelect extends React.Component { option['label']) @@ -304,7 +311,10 @@ class PayoutMethodSelect extends React.Component { }} />   - + ); } @@ -314,7 +324,10 @@ class PayoutMethodSelect extends React.Component { {payeeIsCollectiveFamilyType && !payeeIsSameHost && ( - + )} diff --git a/components/expenses/ProcessExpenseButtons.js b/components/expenses/ProcessExpenseButtons.js index 503eda42b7e..76c66631fcd 100644 --- a/components/expenses/ProcessExpenseButtons.js +++ b/components/expenses/ProcessExpenseButtons.js @@ -81,7 +81,7 @@ const getErrorContent = (intl, error, host) => { if (message) { if (message.startsWith('Insufficient Paypal balance')) { return { - title: intl.formatMessage({ defaultMessage: 'Insufficient Paypal balance' }), + title: intl.formatMessage({ defaultMessage: 'Insufficient Paypal balance', id: 'BmZrOu' }), message: ( diff --git a/components/expenses/SecurityChecksModal.js b/components/expenses/SecurityChecksModal.js index ce13ce73962..979fde73ae4 100644 --- a/components/expenses/SecurityChecksModal.js +++ b/components/expenses/SecurityChecksModal.js @@ -79,9 +79,9 @@ const SecurityCheck = check => { minWidth="max-content" > {isExpanded ? ( - + ) : ( - + )} {isExpanded ? : } diff --git a/components/expenses/TaxFormLinkModal.js b/components/expenses/TaxFormLinkModal.js index 2bdceb5aed4..0aa9e6a50fc 100644 --- a/components/expenses/TaxFormLinkModal.js +++ b/components/expenses/TaxFormLinkModal.js @@ -44,13 +44,18 @@ const TaxFormLinkModal = ({ account, year, onClose, refetchExpense }) => {

    - +

    { - + } width="100%" @@ -83,7 +88,7 @@ const TaxFormLinkModal = ({ account, year, onClose, refetchExpense }) => { - + } width="100%" @@ -113,13 +118,13 @@ const TaxFormLinkModal = ({ account, year, onClose, refetchExpense }) => { if (get(result, 'data.setTaxForm.success')) { toast({ variant: 'success', - message: , + message: , }); await refetchExpense(); } else { toast({ variant: 'error', - message: , + message: , }); } onClose(); @@ -128,7 +133,7 @@ const TaxFormLinkModal = ({ account, year, onClose, refetchExpense }) => { } }} > - + diff --git a/components/expenses/lib/utils.ts b/components/expenses/lib/utils.ts index f5f977fef97..a53ba9a1c61 100644 --- a/components/expenses/lib/utils.ts +++ b/components/expenses/lib/utils.ts @@ -47,6 +47,7 @@ export const getExpenseExchangeRateWarningOrError = (intl, exchangeRate, referen { defaultMessage: "This exchange rate is too different from the one in our records ({value}) for that date and won't be accepted.", + id: 'cEI/zq', }, { value: round(referenceExchangeRate.value, 7) }, ), @@ -57,6 +58,7 @@ export const getExpenseExchangeRateWarningOrError = (intl, exchangeRate, referen { defaultMessage: 'This exchange rate looks very different from the one in our records ({value}) for this date.', + id: 'mLRswr', }, { value: round(referenceExchangeRate.value, 7) }, ), diff --git a/components/expenses/list/SubmittedExpenseListItem.tsx b/components/expenses/list/SubmittedExpenseListItem.tsx index 0e2906d0ef8..ce67a6897d6 100644 --- a/components/expenses/list/SubmittedExpenseListItem.tsx +++ b/components/expenses/list/SubmittedExpenseListItem.tsx @@ -32,9 +32,11 @@ type SubmittedExpenseListItemProps = { const I18nMessages = defineMessages({ DESCRIPTION_LINE: { defaultMessage: 'From {submitter} to {account} • {payoutMethod} • {submittedAt}', + id: 'pqeIM+', }, DESCRIPTION_LINE_NO_PAYOUT_METHOD: { defaultMessage: 'From {submitter} to {account} • {submittedAt}', + id: 'XohPxN', }, }); @@ -177,7 +179,7 @@ export function SubmittedExpenseListItem(props: SubmittedExpenseListItemProps) { {props.expense.status !== ExpenseStatus.DRAFT && hasNewSubmitExpenseFlow && ( - + )} diff --git a/components/faqs/ContributeFAQ.js b/components/faqs/ContributeFAQ.js index 458324d30e3..3be222176a0 100644 --- a/components/faqs/ContributeFAQ.js +++ b/components/faqs/ContributeFAQ.js @@ -97,11 +97,12 @@ const ContributeFAQ = ({ collective, ...props }) => ( - <FormattedMessage defaultMessage="What information is shared with the Collectives?" /> + <FormattedMessage defaultMessage="What information is shared with the Collectives?" id="Ntwzwf" /> @@ -116,9 +117,7 @@ const ContributeFAQ = ({ collective, ...props }) => ( diff --git a/components/faqs/CreateExpenseFAQ.js b/components/faqs/CreateExpenseFAQ.js index 899705822f3..550849e99d3 100644 --- a/components/faqs/CreateExpenseFAQ.js +++ b/components/faqs/CreateExpenseFAQ.js @@ -55,10 +55,13 @@ const CreateExpenseFAQ = ({ defaultOpen, ...props }) => ( - <FormattedMessage defaultMessage="Why do you need my legal name?" /> + <FormattedMessage defaultMessage="Why do you need my legal name?" id="FpmEYP" /> - + diff --git a/components/filters/PeriodFilter.tsx b/components/filters/PeriodFilter.tsx index 28fb8effd40..379fce54f20 100644 --- a/components/filters/PeriodFilter.tsx +++ b/components/filters/PeriodFilter.tsx @@ -67,7 +67,7 @@ const parseDateForDateRange = (dateStr, isEndOfDay) => { } }; -const UTC_LABEL = defineMessage({ defaultMessage: 'Coordinated Universal Time' }); +const UTC_LABEL = defineMessage({ defaultMessage: 'Coordinated Universal Time', id: '94IjMb' }); const getTimeZoneTypeName = (intl, timezone) => { if (timezone === 'local') { @@ -137,11 +137,14 @@ export const PeriodFilterForm = ({ label={ - + + } > @@ -174,7 +177,7 @@ export const PeriodFilterForm = ({ )} } + label={} labelFontWeight="700" labelProps={{ fontWeight: 'bold', fontSize: '16px' }} name="dateFrom" @@ -197,7 +200,7 @@ export const PeriodFilterForm = ({ )} } + label={} labelFontWeight="700" labelProps={{ fontWeight: 'bold', fontSize: '16px' }} name="dateTo" @@ -222,7 +225,7 @@ export const PeriodFilterForm = ({ {!isValidDateInterval && ( - + )} diff --git a/components/fiscal-hosting/FindTheRightFiscalHostSection.js b/components/fiscal-hosting/FindTheRightFiscalHostSection.js index af01bcf4a79..e2874053efa 100644 --- a/components/fiscal-hosting/FindTheRightFiscalHostSection.js +++ b/components/fiscal-hosting/FindTheRightFiscalHostSection.js @@ -46,6 +46,7 @@ const messages = defineMessages({ 'fiscalHosting.serviceOffered.description': { defaultMessage: 'Some Fiscal Hosts are very light-touch, while others provide significant support or programming and options like employment and insurance. Fiscal Hosts with a specific focus, such as open source projects or climate movement groups, may offer services specifically tailored to that community.', + id: 'AeQQjn', }, 'fiscalHosting.fees': { id: 'fiscalHosting.fees', diff --git a/components/help-and-support/ContactSection.js b/components/help-and-support/ContactSection.js index f16053a5c1e..ba3b4a360b9 100644 --- a/components/help-and-support/ContactSection.js +++ b/components/help-and-support/ContactSection.js @@ -147,7 +147,7 @@ const ContactForm = () => { } + label={} labelFontWeight="700" labelProps={{ lineHeight: '24px', @@ -161,7 +161,7 @@ const ContactForm = () => { } + label={} labelFontWeight="700" labelProps={{ lineHeight: '24px', @@ -209,7 +209,7 @@ const ContactForm = () => { } + label={} {...getFieldProps('relatedCollectives')} labelFontWeight="700" labelProps={{ @@ -217,7 +217,7 @@ const ContactForm = () => { fontSize: '16px', }} error={touched.relatedCollectives && formatFormErrorMessage(intl, errors.relatedCollectives)} - hint={} + hint={} > {inputProps => ( { mb={['24px', 0]} loading={isSubmitting} > - + diff --git a/components/help-and-support/SearchTopicsSection.js b/components/help-and-support/SearchTopicsSection.js index f6f817f64bc..1e2d5b5c05b 100644 --- a/components/help-and-support/SearchTopicsSection.js +++ b/components/help-and-support/SearchTopicsSection.js @@ -107,13 +107,12 @@ const SearchTopics = () => { } catch (error) { toast({ variant: 'error', - title: intl.formatMessage({ defaultMessage: 'Error in fetching results' }), + title: intl.formatMessage({ defaultMessage: 'Error in fetching results', id: 'HqFOSM' }), message: (

    Visit our docs page' - } + defaultMessage="Oops! There was an unexpected error.{lineBreak} Visit our docs page" + id="dgz/z/" values={{ openDocsLink: getI18nLink({ href: `${DOCS_BASE_URL}`, @@ -141,7 +140,7 @@ const SearchTopics = () => { {

    {searchQuery ? ( {query}. Please type another keyword.'} + defaultMessage="No results found for {query}. Please type another keyword." + id="uleS3x" values={{ query: searchQuery, b: I18nBold, }} /> ) : ( - + )}

    @@ -234,7 +234,7 @@ const SearchTopics = () => { >

    diff --git a/components/home/CollaborateWithMoneySection.js b/components/home/CollaborateWithMoneySection.js index 9d7a9473dac..468e4646d02 100644 --- a/components/home/CollaborateWithMoneySection.js +++ b/components/home/CollaborateWithMoneySection.js @@ -69,13 +69,13 @@ const CollaborateWithMoney = () => {
    - + diff --git a/components/home/DedicatedTeamSection.js b/components/home/DedicatedTeamSection.js index 743796059cf..734642afd95 100644 --- a/components/home/DedicatedTeamSection.js +++ b/components/home/DedicatedTeamSection.js @@ -24,9 +24,7 @@ const DedicatedTeam = () => {
    @@ -77,7 +75,7 @@ const DedicatedTeam = () => { fontSize="16px" lineHeight="20px" > - + diff --git a/components/home/GetToKnowUsSection.js b/components/home/GetToKnowUsSection.js index 269aafebc02..65e48113026 100644 --- a/components/home/GetToKnowUsSection.js +++ b/components/home/GetToKnowUsSection.js @@ -51,7 +51,7 @@ const GetToKnowUs = () => { @@ -67,11 +67,12 @@ const GetToKnowUs = () => { mb={[3, 0]} >

    - +

    @@ -82,7 +83,7 @@ const GetToKnowUs = () => { openInNewTab textDecoration="underline" > - + { mb="24px" > - + - + { textDecoration="underline" openInNewTab > - + @@ -130,11 +131,12 @@ const GetToKnowUs = () => { ml={[null, 3]} >

    - +

    @@ -147,7 +149,7 @@ const GetToKnowUs = () => { mb="24px" > - + { textDecoration="underline" openInNewTab > - + { textDecoration="underline" openInNewTab > - + { color="black.800" > - + @@ -232,7 +234,7 @@ const GetToKnowUs = () => { letterSpacing={['-0.008em', null, '-0.04em']} color="primary.900" > - +

    { >

    @@ -259,7 +259,7 @@ const GetToKnowUs = () => { fontSize="16px" lineHeight="20px" > - + diff --git a/components/home/OpenCollectiveIsSection.js b/components/home/OpenCollectiveIsSection.js index e3703ec9a0e..2ff04ce0514 100644 --- a/components/home/OpenCollectiveIsSection.js +++ b/components/home/OpenCollectiveIsSection.js @@ -28,13 +28,10 @@ const OpenCollectiveIs = () => { - + - + @@ -80,9 +77,8 @@ const OpenCollectiveIs = () => { fontWeight="700" >

    diff --git a/components/home/RaiseMoneySection.js b/components/home/RaiseMoneySection.js index b7d1e0fc152..1b5a055357a 100644 --- a/components/home/RaiseMoneySection.js +++ b/components/home/RaiseMoneySection.js @@ -43,13 +43,13 @@ const RaiseMoney = () => { - + @@ -211,9 +211,7 @@ const RaiseMoney = () => { > mutual aid group, a community initiative, an open-source software project, or a climate change activist, Open Collective helps groups unlock access to money." - } + defaultMessage="Whether you're a mutual aid group, a community initiative, an open-source software project, or a climate change activist, Open Collective helps groups unlock access to money." values={{ u: I18nUnderline, mutualAidLink: getI18nLink({ @@ -266,7 +264,7 @@ const RaiseMoney = () => { >

    @@ -282,7 +280,7 @@ const RaiseMoney = () => { >

    @@ -311,7 +309,7 @@ const RaiseMoney = () => { fontWeight="700" textDecoration={[null, null, 'underline']} > - +

    { >

    - +

    @@ -354,7 +350,7 @@ const RaiseMoney = () => { fontWeight="700" textDecoration={[null, null, 'underline']} > - +

    { >

    - +

    @@ -397,7 +391,7 @@ const RaiseMoney = () => { fontWeight="700" textDecoration={[null, null, 'underline']} > - +

    { >

    - +

    diff --git a/components/home/TheFutureIsCollectiveSection.js b/components/home/TheFutureIsCollectiveSection.js index dd6cef0d2da..0eada9cad49 100644 --- a/components/home/TheFutureIsCollectiveSection.js +++ b/components/home/TheFutureIsCollectiveSection.js @@ -26,16 +26,14 @@ const TheFutureIsCollective = () => { letterSpacing={['-0.04em', '0.012em', null]} textAlign="center" > - + legal and financial toolbox for grassroots groups. It’s a fundraising + legal status + money management platform for your community. What do you want to do?' - } + defaultMessage="Open Collective is a legal and financial toolbox for grassroots groups. It’s a fundraising + legal status + money management platform for your community. What do you want to do?" values={{ b: I18nBold, }} diff --git a/components/how-it-works/AndSoMuchMoreSection.js b/components/how-it-works/AndSoMuchMoreSection.js index 2bfb7b14c41..50b5e645c95 100644 --- a/components/how-it-works/AndSoMuchMoreSection.js +++ b/components/how-it-works/AndSoMuchMoreSection.js @@ -130,7 +130,7 @@ const MoreFeatures = () => ( href="https://docs.opencollective.com/help/" fontWeight="500" > - +
    diff --git a/components/navigation/ProfileMenu.tsx b/components/navigation/ProfileMenu.tsx index 7e7e9ca7490..68a8be7e95e 100644 --- a/components/navigation/ProfileMenu.tsx +++ b/components/navigation/ProfileMenu.tsx @@ -157,7 +157,7 @@ const ProfileMenu = ({ logoutParameters }: { logoutParameters?: Parameters } > - + )} @@ -167,7 +167,7 @@ const ProfileMenu = ({ logoutParameters }: { logoutParameters?: Parameters setShowPreviewFeaturesModal(true)} appending={ - + } > @@ -186,11 +186,11 @@ const ProfileMenu = ({ logoutParameters }: { logoutParameters?: Parameters - + - + diff --git a/components/navigation/ProfileMenuMemberships.tsx b/components/navigation/ProfileMenuMemberships.tsx index c22ed2e8bde..be45fb42b30 100644 --- a/components/navigation/ProfileMenuMemberships.tsx +++ b/components/navigation/ProfileMenuMemberships.tsx @@ -100,7 +100,7 @@ const MembershipLine = ({ user, membership, closeDrawer }) => { - +
    @@ -185,7 +185,10 @@ MembershipsList.propTypes = { const MENU_SECTIONS = { [CollectiveType.COLLECTIVE]: { title: defineMessage({ id: 'collective', defaultMessage: 'My Collectives' }), - emptyMessage: defineMessage({ defaultMessage: 'Create a collective to collect and spend money transparently' }), + emptyMessage: defineMessage({ + defaultMessage: 'Create a collective to collect and spend money transparently', + id: 'MZB6HL', + }), plusButton: { text: defineMessage({ id: 'home.create', defaultMessage: 'Create a Collective' }), href: '/create', @@ -205,6 +208,7 @@ const MENU_SECTIONS = { title: defineMessage({ id: 'organization', defaultMessage: 'My Organizations' }), emptyMessage: defineMessage({ defaultMessage: 'A profile representing a company or organization instead of an individual', + id: 'CBITv6', }), plusButton: { text: defineMessage({ id: 'host.organization.create', defaultMessage: 'Create an Organization' }), diff --git a/components/navigation/menu-items.tsx b/components/navigation/menu-items.tsx index 993bead6b93..db2d6d55276 100644 --- a/components/navigation/menu-items.tsx +++ b/components/navigation/menu-items.tsx @@ -9,13 +9,13 @@ type Item = { export const landingPageItems: Item[] = [ { - label: , + label: , items: [ { label: , href: '/collectives', }, - { label: , href: '/become-a-sponsor' }, + { label: , href: '/become-a-sponsor' }, { label: , href: '/become-a-host', @@ -59,7 +59,7 @@ export const dashboardFooterItems: Item[] = [ }, ...landingPageItems, { - label: , + label: , href: '/help', }, { diff --git a/components/navigation/preview/SiteMenu.tsx b/components/navigation/preview/SiteMenu.tsx index 7d37e98717e..c70db1df554 100644 --- a/components/navigation/preview/SiteMenu.tsx +++ b/components/navigation/preview/SiteMenu.tsx @@ -57,7 +57,7 @@ export default function SiteMenu() { - + @@ -68,7 +68,7 @@ export default function SiteMenu() { {LoggedInUser && ( - + )} diff --git a/components/oauth/ApplicationApproveScreen.js b/components/oauth/ApplicationApproveScreen.js index f1cf99b2a82..5cdabae0e16 100644 --- a/components/oauth/ApplicationApproveScreen.js +++ b/components/oauth/ApplicationApproveScreen.js @@ -50,47 +50,47 @@ const TopAvatarsContainer = styled.div` const SCOPES_INFO = { email: { - label: , + label: , icon: , }, incognito: { - label: , + label: , icon: , }, account: { - label: , + label: , icon: , }, expenses: { - label: , + label: , icon: , }, orders: { - label: , + label: , icon: , }, transactions: { - label: , + label: , icon: , }, virtualCards: { - label: , + label: , icon: , }, updates: { - label: , + label: , icon: , }, conversations: { - label: , + label: , icon: , }, webhooks: { - label: , + label: , icon: , }, host: { - label: , + label: , icon: , }, /* We disable those scopes for now */ @@ -201,7 +201,7 @@ export const ApplicationApproveScreen = ({ application, redirectUri, autoApprove {isRedirecting ? (

    - +

    @@ -210,6 +210,7 @@ export const ApplicationApproveScreen = ({ application, redirectUri, autoApprove

    @@ -218,6 +219,7 @@ export const ApplicationApproveScreen = ({ application, redirectUri, autoApprove

    {' '}
    @@ -229,6 +231,7 @@ export const ApplicationApproveScreen = ({ application, redirectUri, autoApprove {'. '} ( @@ -246,7 +249,10 @@ export const ApplicationApproveScreen = ({ application, redirectUri, autoApprove

    - +

    )} @@ -266,7 +272,10 @@ export const ApplicationApproveScreen = ({ application, redirectUri, autoApprove ))} {difference(filteredScopes, ['email']).length > 0 && ( - + )} {error && ( @@ -295,7 +304,7 @@ export const ApplicationApproveScreen = ({ application, redirectUri, autoApprove - + )} diff --git a/components/oauth/AuthorizedApp.js b/components/oauth/AuthorizedApp.js index 4822cc1c7d8..b53e10f7222 100644 --- a/components/oauth/AuthorizedApp.js +++ b/components/oauth/AuthorizedApp.js @@ -58,18 +58,25 @@ export const AuthorizedApp = ({ authorization, onRevoke }) => { - + - + )}
    {authorization.lastUsedAt && ( @@ -81,6 +88,7 @@ export const AuthorizedApp = ({ authorization, onRevoke }) => { > { item: ( ), @@ -149,7 +158,7 @@ export const AuthorizedApp = ({ authorization, onRevoke }) => { toast({ variant: 'success', message: intl.formatMessage( - { defaultMessage: `Authorization for {appName} revoked` }, + { defaultMessage: `Authorization for {appName} revoked`, id: 'hfh76h' }, { appName: authorization.application.name }, ), }); @@ -158,7 +167,7 @@ export const AuthorizedApp = ({ authorization, onRevoke }) => { } }} > - + diff --git a/components/oauth/CreateOauthApplicationModal.js b/components/oauth/CreateOauthApplicationModal.js index 528f14bbe5f..e8265245581 100644 --- a/components/oauth/CreateOauthApplicationModal.js +++ b/components/oauth/CreateOauthApplicationModal.js @@ -49,7 +49,7 @@ const CreateOauthApplicationModal = ({ account, onSuccess, onClose, ...props }) return ( - + @@ -98,6 +98,7 @@ const CreateOauthApplicationModal = ({ account, onSuccess, onClose, ...props }) label={intl.formatMessage({ id: 'Fields.description', defaultMessage: 'Description' })} hint={intl.formatMessage({ defaultMessage: 'A short description of your app so users know what it does.', + id: 'sZy/sl', })} labelProps={LABEL_STYLES} mt={20} @@ -117,7 +118,7 @@ const CreateOauthApplicationModal = ({ account, onSuccess, onClose, ...props }) - + { } + header={ + + } {...props} continueHandler={async () => { try { @@ -49,7 +51,10 @@ const DeleteOAuthApplicationModal = ({ application, onDelete, ...props }) => { await onDelete(application); toast({ variant: 'success', - message: intl.formatMessage({ defaultMessage: 'Application {name} deleted' }, { name: application.name }), + message: intl.formatMessage( + { defaultMessage: 'Application {name} deleted', id: 'vAzArE' }, + { name: application.name }, + ), }); return CONFIRMATION_MODAL_TERMINATE; } catch (e) { @@ -58,7 +63,10 @@ const DeleteOAuthApplicationModal = ({ application, onDelete, ...props }) => { }} >

    - +

    ); diff --git a/components/oauth/OAuthApplicationSettings.js b/components/oauth/OAuthApplicationSettings.js index 33efa1d936d..8707e10518c 100644 --- a/components/oauth/OAuthApplicationSettings.js +++ b/components/oauth/OAuthApplicationSettings.js @@ -74,7 +74,11 @@ const ObfuscatedClientSecret = ({ secret }) => {

    {show && {secret}} setShow(!show)}> - {show ? : } + {show ? ( + + ) : ( + + )}

    ); @@ -97,7 +101,7 @@ const OAuthApplicationSettings = ({ backPath, id }) => {

    - ← + ←

    {loading ? ( @@ -114,17 +118,20 @@ const OAuthApplicationSettings = ({ backPath, id }) => { {data.application.preAuthorize2FA && ( - + )}

    - +

    - +

    {data.application.clientId} @@ -132,7 +139,7 @@ const OAuthApplicationSettings = ({ backPath, id }) => {

    - +

    @@ -164,7 +171,7 @@ const OAuthApplicationSettings = ({ backPath, id }) => { toast({ variant: 'success', message: intl.formatMessage( - { defaultMessage: 'Application "{name}" updated' }, + { defaultMessage: 'Application "{name}" updated', id: 'NZ1C9t' }, { name: result.data.updateApplication.name }, ), }); @@ -179,7 +186,7 @@ const OAuthApplicationSettings = ({ backPath, id }) => { @@ -198,6 +205,7 @@ const OAuthApplicationSettings = ({ backPath, id }) => { label={intl.formatMessage({ id: 'Fields.description', defaultMessage: 'Description' })} hint={intl.formatMessage({ defaultMessage: 'A short description of your app so users know what it does.', + id: 'sZy/sl', })} labelProps={LABEL_STYLES} mt={20} @@ -217,7 +225,7 @@ const OAuthApplicationSettings = ({ backPath, id }) => { { disabled={!dirty} minWidth="125px" > - + { disabled={isSubmitting} onClick={() => setShowDeleteModal(true)} > - +
    diff --git a/components/oauth/OAuthApplicationsList.js b/components/oauth/OAuthApplicationsList.js index 149618de4aa..b436005994a 100644 --- a/components/oauth/OAuthApplicationsList.js +++ b/components/oauth/OAuthApplicationsList.js @@ -53,11 +53,11 @@ const OAuthApplicationsList = ({ account, onApplicationCreated, offset = 0 }) =>

    - +

    setShowCreateApplicationModal(true)}> - + + + {showCreateApplicationModal && ( )}

    - {' '} + {' '}

    - +

    (

    - +

    {availableMethodLabels && availableMethodLabels.length > 0 ? ( diff --git a/components/orders/ProcessOrderButtons.js b/components/orders/ProcessOrderButtons.js index a6a808ac0df..e6167502f85 100644 --- a/components/orders/ProcessOrderButtons.js +++ b/components/orders/ProcessOrderButtons.js @@ -119,7 +119,10 @@ const ProcessOrderButtons = ({ order, permissions, onSuccess }) => { if (selectedAction === 'MARK_AS_EXPIRED') { toast({ variant: 'success', - message: intl.formatMessage({ defaultMessage: 'The contribution has been marked as expired' }), + message: intl.formatMessage({ + defaultMessage: 'The contribution has been marked as expired', + id: '46L6cy', + }), }); } }) diff --git a/components/osc-host-application/ApplicationForm.js b/components/osc-host-application/ApplicationForm.js index c70997ccafc..305c8910a46 100644 --- a/components/osc-host-application/ApplicationForm.js +++ b/components/osc-host-application/ApplicationForm.js @@ -362,7 +362,7 @@ const ApplicationForm = ({ } + helpText={} labelFontSize="16px" labelProps={{ fontWeight: '600' }} name="collective.slug" @@ -697,6 +697,7 @@ const ApplicationForm = ({ diff --git a/components/osc-host-application/ConnectGithub.js b/components/osc-host-application/ConnectGithub.js index d1e72cdff0c..7ee295c5a50 100644 --- a/components/osc-host-application/ConnectGithub.js +++ b/components/osc-host-application/ConnectGithub.js @@ -108,6 +108,7 @@ class ConnectGithub extends React.Component {

    return ( - + toast({ variant: 'success', message: intl.formatMessage( - { defaultMessage: 'Personal token "{name}" created' }, + { defaultMessage: 'Personal token "{name}" created', id: 'aIdo8o' }, { name: result.data.createPersonalToken.name }, ), }); @@ -92,7 +92,7 @@ const CreatePersonalTokenModal = ({ account, onSuccess, onClose, ...props }) => @@ -114,6 +114,7 @@ const CreatePersonalTokenModal = ({ account, onSuccess, onClose, ...props }) => hint={intl.formatMessage( { defaultMessage: 'Scopes define the access for personal tokens. More info.', + id: 'OL9S0O', }, { Link: getI18nLink({ @@ -159,7 +160,10 @@ const CreatePersonalTokenModal = ({ account, onSuccess, onClose, ...props }) => onCheckedChange={value => form.setFieldValue(field.name, value)} />

    ); @@ -168,11 +172,12 @@ const CreatePersonalTokenModal = ({ account, onSuccess, onClose, ...props }) => {({ field }) => { @@ -188,7 +193,7 @@ const CreatePersonalTokenModal = ({ account, onSuccess, onClose, ...props }) => buttonSize="small" loading={isSubmitting || isWaitingForOnSuccess} > - + { } + header={ + + } {...props} continueHandler={async () => { try { @@ -49,7 +55,7 @@ const DeletePersonalTokenModal = ({ personalToken, onDelete, ...props }) => { toast({ variant: 'success', message: intl.formatMessage( - { defaultMessage: 'Personal token "{name}" deleted' }, + { defaultMessage: 'Personal token "{name}" deleted', id: 'Ix3kXB' }, { name: personalToken.name || '' }, ), }); @@ -60,7 +66,10 @@ const DeletePersonalTokenModal = ({ personalToken, onDelete, ...props }) => { }} >

    - +

    ); diff --git a/components/personal-token/PersonalTokenSettings.js b/components/personal-token/PersonalTokenSettings.js index f41c1a7a2da..b5265c1ef4a 100644 --- a/components/personal-token/PersonalTokenSettings.js +++ b/components/personal-token/PersonalTokenSettings.js @@ -75,7 +75,11 @@ const ObfuscatedClientSecret = ({ secret }) => {

    {show && {secret}} setShow(!show)}> - {show ? : } + {show ? ( + + ) : ( + + )}

    ); @@ -99,7 +103,7 @@ const PersonalTokenSettings = ({ backPath, id }) => {

    - ← + ←

    {loading ? ( @@ -116,7 +120,7 @@ const PersonalTokenSettings = ({ backPath, id }) => {

    - +

    @@ -160,7 +164,7 @@ const PersonalTokenSettings = ({ backPath, id }) => { toast({ variant: 'success', message: intl.formatMessage( - { defaultMessage: 'Personal token "{name}" updated' }, + { defaultMessage: 'Personal token "{name}" updated', id: 'aS9iWV' }, { name: result.data.updatePersonalToken.name }, ), }); @@ -181,7 +185,7 @@ const PersonalTokenSettings = ({ backPath, id }) => { @@ -204,6 +208,7 @@ const PersonalTokenSettings = ({ backPath, id }) => { hint={intl.formatMessage( { defaultMessage: 'Scopes define the access for personal tokens. More info.', + id: 'OL9S0O', }, { Link: getI18nLink({ @@ -250,7 +255,10 @@ const PersonalTokenSettings = ({ backPath, id }) => { onCheckedChange={value => form.setFieldValue(field.name, value)} />
    ); @@ -259,11 +267,12 @@ const PersonalTokenSettings = ({ backPath, id }) => { {({ field }) => { @@ -279,7 +288,7 @@ const PersonalTokenSettings = ({ backPath, id }) => { disabled={!dirty} minWidth="125px" > - +
    { onClick={() => setShowDeleteModal(true)} data-cy="personalToken-delete" > - + diff --git a/components/personal-token/PersonalTokensList.js b/components/personal-token/PersonalTokensList.js index f7713faaff1..bf863dfef19 100644 --- a/components/personal-token/PersonalTokensList.js +++ b/components/personal-token/PersonalTokensList.js @@ -54,7 +54,7 @@ const PersonalTokensList = ({ account, onPersonalTokenCreated, offset = 0 }) =>

    - +

    buttonSize="tiny" onClick={() => setShowCreatePersonalTokenModal(true)} > - + + + {showCreatePersonalToken && (

    Personal-Token, queryParam: personalToken, @@ -92,11 +93,12 @@ const PersonalTokensList = ({ account, onPersonalTokenCreated, offset = 0 }) =>

    - +

    (

    - {token.name ?? } + {token.name ?? }

    diff --git a/components/pricing/ForCollectiveCard.js b/components/pricing/ForCollectiveCard.js index b14b36770c9..b665113984e 100644 --- a/components/pricing/ForCollectiveCard.js +++ b/components/pricing/ForCollectiveCard.js @@ -90,6 +90,7 @@ const messages = defineMessages({ 'pricing.outsideFunds.description': { defaultMessage: 'Manually credit Collective budgets with funds received outside the platform (e.g., cash, historical transactions, or third party channels like a shop).', + id: 'SqpA8z', }, 'pricing.bankTransfer': { id: 'pricing.bankTransfer', @@ -97,6 +98,7 @@ const messages = defineMessages({ }, 'pricing.bankTransfer.description': { defaultMessage: 'Automatically provide wire instructions and a reference number for tracking transactions.', + id: 'LnnC1J', }, 'pricing.creditCard': { id: 'pricing.creditCard', @@ -105,6 +107,7 @@ const messages = defineMessages({ 'pricing.creditCard.description': { defaultMessage: 'Receive financial contributions via credit card, automatically updating your budget for transparent tracking. *Stripe fees apply', + id: 'uM2WZi', }, }); @@ -216,19 +219,19 @@ const ForCollectiveCard = () => { - + - + - + - + diff --git a/components/pricing/ForFiscalHostCard.js b/components/pricing/ForFiscalHostCard.js index aff9552b541..ac975ac6e75 100644 --- a/components/pricing/ForFiscalHostCard.js +++ b/components/pricing/ForFiscalHostCard.js @@ -77,6 +77,7 @@ const Card = styled(Container)` const messages = defineMessages({ 'pricing.dashboard': { defaultMessage: 'Host Admin Dashboard', + id: 'cpa6/N', }, 'pricing.dashboard.description': { id: 'HostDashboard.description', @@ -90,6 +91,7 @@ const messages = defineMessages({ 'pricing.outsideFunds.description': { defaultMessage: 'Manually credit Collective budgets with funds received outside the platform, such as other e-commerce or fundraising tools.', + id: 'wdqJMo', }, 'pricing.bankTransfer': { id: 'pricing.bankTransfer', @@ -98,6 +100,7 @@ const messages = defineMessages({ 'pricing.bankTransfer.description': { defaultMessage: 'Automatically provide wire instructions and a reference number for tracking. Confirm receipt of funds with one click.', + id: '2oHG9J', }, 'pricing.creditCard': { id: 'pricing.creditCard', @@ -106,6 +109,7 @@ const messages = defineMessages({ 'pricing.creditCard.description': { defaultMessage: 'Receive financial contributions via credit card, automatically updating each Collective budget. *Stripe fees apply', + id: 'nQw9Hb', }, 'pricing.plan.start': { id: 'table.head.start', @@ -261,7 +265,7 @@ const ForFiscalHosts = () => { - + { /> - + - + - + - + diff --git a/components/pricing/index.js b/components/pricing/index.js index c8c645454c4..9dcaa1429de 100644 --- a/components/pricing/index.js +++ b/components/pricing/index.js @@ -275,7 +275,7 @@ const Pricing = () => { - {' '} + {' '} @@ -374,7 +374,7 @@ const Pricing = () => { - {' '} + {' '} diff --git a/components/recurring-contributions/RecurringContributionsPopUp.js b/components/recurring-contributions/RecurringContributionsPopUp.js index 14b8617560e..db87724ed05 100644 --- a/components/recurring-contributions/RecurringContributionsPopUp.js +++ b/components/recurring-contributions/RecurringContributionsPopUp.js @@ -225,7 +225,7 @@ const RecurringContributionsPopUp = ({ contribution, status, onCloseEdit, accoun onChange={e => setCancelReasonMessage(e.target.value)} value={cancelReasonMessage} fontSize="12px" - placeholder={intl.formatMessage({ defaultMessage: 'Provide more details (optional)' })} + placeholder={intl.formatMessage({ defaultMessage: 'Provide more details (optional)', id: '41Cgcs' })} height={70} width="100%" resize="none" diff --git a/components/search-page/SearchCollectiveCard.js b/components/search-page/SearchCollectiveCard.js index 503f60a6962..b6ca6a552db 100644 --- a/components/search-page/SearchCollectiveCard.js +++ b/components/search-page/SearchCollectiveCard.js @@ -30,6 +30,7 @@ const SearchCollectiveCard = ({ collective, ...props }) => { @@ -48,7 +49,7 @@ const SearchCollectiveCard = ({ collective, ...props }) => { {`${collective.host.hostFeePercent}%`} {` `} - + @@ -64,6 +65,7 @@ const SearchCollectiveCard = ({ collective, ...props }) => { @@ -83,7 +85,7 @@ const SearchCollectiveCard = ({ collective, ...props }) => { {` `} - + )} @@ -110,7 +112,7 @@ const SearchCollectiveCard = ({ collective, ...props }) => {

    - +
    diff --git a/components/submit-expense/ExpenseDetailsStep.tsx b/components/submit-expense/ExpenseDetailsStep.tsx index a20fd42fb9f..405fe138239 100644 --- a/components/submit-expense/ExpenseDetailsStep.tsx +++ b/components/submit-expense/ExpenseDetailsStep.tsx @@ -86,7 +86,7 @@ export function ExpenseDetailsForm(props: ExpenseDetailsFormProps) {

    - +

    } + label={} > {() => (

    - +

    @@ -136,6 +136,7 @@ export function ExpenseDetailsForm(props: ExpenseDetailsFormProps) { label={ } + label={} > {() => (
    @@ -296,6 +297,9 @@ const i18nTaxRate = (intl: IntlShape, taxType: TaxType, rate: number) => { if (rate) { return `${rate * 100}%`; } else { - return intl.formatMessage({ defaultMessage: 'No {taxName}' }, { taxName: i18nTaxType(intl, taxType, 'short') }); + return intl.formatMessage( + { defaultMessage: 'No {taxName}', id: 'lTGBvW' }, + { taxName: i18nTaxType(intl, taxType, 'short') }, + ); } }; diff --git a/components/submit-expense/ExpenseInfoStep.tsx b/components/submit-expense/ExpenseInfoStep.tsx index d10023cbe89..96c59a0efe4 100644 --- a/components/submit-expense/ExpenseInfoStep.tsx +++ b/components/submit-expense/ExpenseInfoStep.tsx @@ -36,7 +36,7 @@ export function ExpenseInfoForm(props: ExpenseInfoFormProps) { return (

    - +

    } + label={} > {({ field }) => ( } + label={} > {() => (

    - +

    diff --git a/components/submit-expense/ExpenseItemsForm.tsx b/components/submit-expense/ExpenseItemsForm.tsx index 65b76189f05..a5dbd099c0d 100644 --- a/components/submit-expense/ExpenseItemsForm.tsx +++ b/components/submit-expense/ExpenseItemsForm.tsx @@ -183,6 +183,7 @@ function ExpenseItemForm(props: ExpenseItemFormProps) { hint={ } > @@ -280,6 +281,7 @@ function ExpenseItemForm(props: ExpenseItemFormProps) { } approximateCustomMessage={intl.formatMessage({ defaultMessage: 'This value is an estimate. Please set the exact amount received if known.', + id: 'zNBAqh', })} /> )} diff --git a/components/submit-expense/ExpenseSummaryStep.tsx b/components/submit-expense/ExpenseSummaryStep.tsx index e24e7066ee1..a98f5ead3d2 100644 --- a/components/submit-expense/ExpenseSummaryStep.tsx +++ b/components/submit-expense/ExpenseSummaryStep.tsx @@ -52,7 +52,7 @@ export function ExpenseSummaryForm(props: ExpenseSummaryFormProps) { return (

    - +

    {props.form.values.title}

    @@ -112,7 +112,7 @@ export function ExpenseSummaryForm(props: ExpenseSummaryFormProps) {
    - +
    @@ -148,7 +148,7 @@ export function ExpenseSummaryForm(props: ExpenseSummaryFormProps) {
    - +
    @@ -156,14 +156,14 @@ export function ExpenseSummaryForm(props: ExpenseSummaryFormProps) {
    - +
    {account?.name}
    - +
    - +
    diff --git a/components/submit-expense/ExpenseWarnings.tsx b/components/submit-expense/ExpenseWarnings.tsx index 75ed67b8ebb..7fb59172bf5 100644 --- a/components/submit-expense/ExpenseWarnings.tsx +++ b/components/submit-expense/ExpenseWarnings.tsx @@ -30,11 +30,12 @@ export function ExpenseWarnings(props: ExpenseWarningsProps) {
    - : + :

    - +

    {canChangeAccount ? ( @@ -82,9 +82,9 @@ export function PickCollectiveStepForm(props: PickCollectiveStepFormProps) { 0 ? ( - + ) : ( - + ) } collectiveSlug={props.form.values.collectiveSlug} @@ -150,6 +150,7 @@ function CollectiveOption(props: CollectiveOptionProps) { {props.isLastUsedCollective ? ( - + )}
    diff --git a/components/submit-expense/PickExpenseTypeStep.tsx b/components/submit-expense/PickExpenseTypeStep.tsx index 66e0bd074e3..cdc53ec5097 100644 --- a/components/submit-expense/PickExpenseTypeStep.tsx +++ b/components/submit-expense/PickExpenseTypeStep.tsx @@ -20,13 +20,13 @@ export function PickExpenseTypeForm(props: PickExpenseTypeFormProps) { return (

    - +

    {supportedExpenseTypes.includes(ExpenseType.INVOICE) && ( } - subtitle={} + subtitle={} onClick={() => props.form.setFieldValue('expenseTypeOption', ExpenseType.INVOICE)} checked={props.form.values.expenseTypeOption === ExpenseType.INVOICE} /> @@ -35,7 +35,10 @@ export function PickExpenseTypeForm(props: PickExpenseTypeFormProps) { } subtitle={ - + } onClick={() => props.form.setFieldValue('expenseTypeOption', ExpenseType.RECEIPT)} checked={props.form.values.expenseTypeOption === ExpenseType.RECEIPT} @@ -46,14 +49,14 @@ export function PickExpenseTypeForm(props: PickExpenseTypeFormProps) { {props.form.values.expenseTypeOption && (props.form.options.hostExpensePolicy || props.form.options.collectiveExpensePolicy) && (

    - +

    )} {props.form.options.hostExpensePolicy && props.form.values.expenseTypeOption && (

    - +

    @@ -64,7 +67,7 @@ export function PickExpenseTypeForm(props: PickExpenseTypeFormProps) { {props.form.options.collectiveExpensePolicy && props.form.values.expenseTypeOption && (

    - +

    @@ -80,7 +83,7 @@ export function PickExpenseTypeForm(props: PickExpenseTypeFormProps) { required checked={props.form.values.acknowledgedExpensePolicy} onChange={({ checked }) => props.form.setFieldValue('acknowledgedExpensePolicy', checked)} - label={} + label={} error={props.form.touched.acknowledgedExpensePolicy && props.form.errors.acknowledgedExpensePolicy} />
    diff --git a/components/submit-expense/PickPaymentMethodStep.tsx b/components/submit-expense/PickPaymentMethodStep.tsx index 85716fb51a0..fb90c04e826 100644 --- a/components/submit-expense/PickPaymentMethodStep.tsx +++ b/components/submit-expense/PickPaymentMethodStep.tsx @@ -68,7 +68,7 @@ export function PickPaymentMethodForm(props: PickPaymentMethodFormProps) { return (

    - +

    @@ -85,13 +85,14 @@ export function PickPaymentMethodForm(props: PickPaymentMethodFormProps) { checked title={
    - {isPersonalProfile && } + {isPersonalProfile && } {!invitePayee && } {pickedLastSubmitedPayee ? ( - +
    } @@ -212,11 +213,12 @@ function PayeePicker(props: PayeePickerProps) { }} title={
    - {payeeSlug === loggedInAccount?.slug && } + {payeeSlug === loggedInAccount?.slug && } {i === 0 ? ( } + title={} content={ (isPickingOtherPayee || otherPayees.find(p => p.slug === props.form.values.payeeSlug)) && (
    @@ -280,7 +282,7 @@ function PayeePicker(props: PayeePickerProps) { } + title={} content={ isPickingVendor && (
    @@ -411,7 +413,7 @@ function InvitePayeePicker(props: InvitePayeePickerProps) {
    )} @@ -466,6 +468,7 @@ function PayoutMethodOptionButton(props: PayoutMethodOptionButtonProps) { {props.isLastUsedPaymentMethod ? ( @@ -524,14 +527,14 @@ function PayoutMethodOptionButton(props: PayoutMethodOptionButtonProps) { isDanger type="delete" onClose={() => setIsDeletingPayoutMethod(false)} - header={} - body={} + header={} + body={} continueHandler={async () => { try { await deletePayoutMethod(); toast({ variant: 'success', - message: , + message: , }); setIsDeletingPayoutMethod(false); props.onDelete(); @@ -670,7 +673,7 @@ function PayoutMethodPicker(props: PayoutMethodPickerProps) { - + } onClick={() => { @@ -759,7 +762,7 @@ function CreatePayoutMethodForm(props: CreatePayoutMethodFormProps) { }); toast({ variant: 'success', - message: , + message: , }); props.onCreate({ id: res.data.createPayoutMethod.id }); } catch (e) { @@ -786,7 +789,7 @@ function CreatePayoutMethodForm(props: CreatePayoutMethodFormProps) { } + label={} labelFontSize="13px" > {() => ( diff --git a/components/submit-expense/Steps.tsx b/components/submit-expense/Steps.tsx index dc05403d566..f7457bc674f 100644 --- a/components/submit-expense/Steps.tsx +++ b/components/submit-expense/Steps.tsx @@ -52,7 +52,7 @@ export type ExpenseStepDefinition = StepDefinition = { [ExpenseFlowStep.COLLECTIVE]: { - Title: () => , + Title: () => , Subtitle: (props: { form: ExpenseForm }) => props.form.options.account?.name ?? '', Form: PickCollectiveStepForm, hasError(form) { @@ -60,7 +60,7 @@ export const Steps: Record = { }, }, [ExpenseFlowStep.EXPENSE_TYPE]: { - Title: () => , + Title: () => , Subtitle: (props: { form: ExpenseForm }) => { return props.form.values.expenseTypeOption === ExpenseType.INVOICE ? ( @@ -74,7 +74,7 @@ export const Steps: Record = { }, }, [ExpenseFlowStep.PAYMENT_METHOD]: { - Title: () => , + Title: () => , Subtitle: function PickPaymentMethodStepSubtitle(props: { form: ExpenseForm }) { const payee = props.form.options.payee; @@ -118,7 +118,7 @@ export const Steps: Record = { }, Title: (props: { form: ExpenseForm }) => { return props.form.options.accountingCategories?.length > 0 ? ( - + ) : ( ); @@ -128,7 +128,7 @@ export const Steps: Record = { }, }, [ExpenseFlowStep.EXPENSE_DETAILS]: { - Title: () => , + Title: () => , Subtitle: function ExpenseDetailsStepSubtitle(props: { form: ExpenseForm }) { const intl = useIntl(); @@ -150,6 +150,7 @@ export const Steps: Record = { diff --git a/components/submit-expense/SubmitExpenseFlow.tsx b/components/submit-expense/SubmitExpenseFlow.tsx index 683698e453c..7c46fd70961 100644 --- a/components/submit-expense/SubmitExpenseFlow.tsx +++ b/components/submit-expense/SubmitExpenseFlow.tsx @@ -42,6 +42,7 @@ type SubmitExpenseFlowProps = { const I18nMessages = defineMessages({ ConfirmExit: { defaultMessage: 'Are you sure you want to discard this expense?', + id: 't0Uyqt', }, }); @@ -193,7 +194,7 @@ export function SubmitExpenseFlow(props: SubmitExpenseFlowProps) { }); toast({ variant: 'success', - title: , + title: , message: LoggedInUser ? : null, duration: 20000, }); @@ -236,7 +237,7 @@ export function SubmitExpenseFlow(props: SubmitExpenseFlowProps) { toast({ variant: 'success', - title: , + title: , message: LoggedInUser ? : null, duration: 20000, }); @@ -422,7 +423,7 @@ function SubmitExpenseFlowFooter(props: SubmitExpenseFlowFooterProps) { onClick={props.prevStep ? () => props.setCurrentStep(props.prevStep) : undefined} > - + {props.isLastStep ? ( diff --git a/components/submit-expense/SubmittedExpense.tsx b/components/submit-expense/SubmittedExpense.tsx index 0a8738415c7..13efa999b20 100644 --- a/components/submit-expense/SubmittedExpense.tsx +++ b/components/submit-expense/SubmittedExpense.tsx @@ -29,7 +29,7 @@ import { Button } from '../ui/Button'; import { useToast } from '../ui/useToast'; const I18nMessages = defineMessages({ - notePlaceholder: { defaultMessage: 'Add a note for the admins.' }, + notePlaceholder: { defaultMessage: 'Add a note for the admins.', id: '4rMvYo' }, }); type SubmittedExpenseProps = { @@ -114,7 +114,7 @@ export function SubmittedExpense(props: SubmittedExpenseProps) { setLastPrivateNoteId(result.data.createComment.id); toast({ variant: 'success', - message: , + message: , }); } catch (e) { toast({ @@ -145,7 +145,7 @@ export function SubmittedExpense(props: SubmittedExpenseProps) { {isInvite ? ( ) : ( - + )}
    @@ -170,12 +170,12 @@ export function SubmittedExpense(props: SubmittedExpenseProps) { ) : null}

    - +

      {requiresTaxDocuments && (
    1. - {' '} + {' '} , }} @@ -198,6 +199,7 @@ export function SubmittedExpense(props: SubmittedExpenseProps) {
    2. }} />
    3. @@ -208,6 +210,7 @@ export function SubmittedExpense(props: SubmittedExpenseProps) { ( - {' '} + {' '}
    - +
    diff --git a/components/submit-expense/useExpenseForm.ts b/components/submit-expense/useExpenseForm.ts index ad5cbbd3430..2fe1ef1f1d2 100644 --- a/components/submit-expense/useExpenseForm.ts +++ b/components/submit-expense/useExpenseForm.ts @@ -573,7 +573,7 @@ function buildFormSchema( return true; }, { - message: intl.formatMessage({ defaultMessage: 'Missing exchange rate' }), + message: intl.formatMessage({ defaultMessage: 'Missing exchange rate', id: 'UXE8lX' }), path: ['amount', 'exchangeRate', 'value'], }, ), diff --git a/components/taxes/TaxesFormikFields.tsx b/components/taxes/TaxesFormikFields.tsx index b735fa66c11..1f2936e7d5b 100644 --- a/components/taxes/TaxesFormikFields.tsx +++ b/components/taxes/TaxesFormikFields.tsx @@ -105,7 +105,10 @@ const i18nTaxRate = (intl: IntlShape, taxType: TaxType, rate: number) => { if (rate) { return `${rate * 100}%`; } else { - return intl.formatMessage({ defaultMessage: 'No {taxName}' }, { taxName: i18nTaxType(intl, taxType, 'short') }); + return intl.formatMessage( + { defaultMessage: 'No {taxName}', id: 'lTGBvW' }, + { taxName: i18nTaxType(intl, taxType, 'short') }, + ); } }; @@ -151,7 +154,7 @@ export const TaxesFormikFields = ({ - + {order.memo}
    @@ -237,7 +237,9 @@ const TransactionDetails = ({ displayActions, transaction, onMutationSuccess }) {` `} - }> + } + > diff --git a/components/transactions/TransactionsPageContent.tsx b/components/transactions/TransactionsPageContent.tsx index c85204012c7..3a51636052a 100644 --- a/components/transactions/TransactionsPageContent.tsx +++ b/components/transactions/TransactionsPageContent.tsx @@ -199,7 +199,7 @@ const Transactions = ({
    updateFilters({ searchTerm, offset: null })} diff --git a/components/two-factor-authentication/AuthenticatorSettings.tsx b/components/two-factor-authentication/AuthenticatorSettings.tsx index 40f0b3b0d94..5404db2bc2c 100644 --- a/components/two-factor-authentication/AuthenticatorSettings.tsx +++ b/components/two-factor-authentication/AuthenticatorSettings.tsx @@ -46,9 +46,11 @@ function generateNewAuthenticatorAppSecret(email: string) { const I18nMessages = defineMessages({ INVALID_TOTP_CODE: { defaultMessage: 'Invalid code', + id: 'x2R8CB', }, REQUIRED: { defaultMessage: 'Required', + id: 'Seanpx', }, }); @@ -103,11 +105,14 @@ export function AuthenticatorSettings(props: AuthenticatorSettingsProps) {

    - +

    - +
    {userTwoFactorMethods.map(device => { @@ -126,7 +131,7 @@ export function AuthenticatorSettings(props: AuthenticatorSettingsProps) { buttonStyle="secondary" display="flex" > - + )} @@ -179,7 +184,7 @@ function AddAuthenticatorModal(props: AddAuthenticatorModalProps) { const result = await addAuthenticatorAppMutation(); toast({ variant: 'success', - message: , + message: , }); if (result.data.addTwoFactorAuthTokenToIndividual.recoveryCodes) { @@ -225,7 +230,7 @@ function AddAuthenticatorModal(props: AddAuthenticatorModalProps) { return ( - +
    @@ -251,7 +256,7 @@ function AddAuthenticatorModal(props: AddAuthenticatorModalProps) { required mt={2} mb={3} - label={} + label={} htmlFor="twoFactorAuthenticatorCode" error={formik.touched.twoFactorAuthenticatorCode && formik.errors.twoFactorAuthenticatorCode} {...formik.getFieldProps('twoFactorAuthenticatorCode')} diff --git a/components/two-factor-authentication/DevicesSettings.tsx b/components/two-factor-authentication/DevicesSettings.tsx index 345df733f19..a03ff26ab9f 100644 --- a/components/two-factor-authentication/DevicesSettings.tsx +++ b/components/two-factor-authentication/DevicesSettings.tsx @@ -18,6 +18,7 @@ import { UserTwoFactorMethodItem } from './UserTwoFactorMethodItem'; const I18nMessages = defineMessages({ DEVICE_ADDED: { defaultMessage: 'Device added', + id: '9GxuH5', }, }); @@ -105,11 +106,14 @@ export function DevicesSettings(props: DevicesSettingsProps) {

    - +

    - +
    {twoFactorMethods.map(device => { @@ -127,7 +131,7 @@ export function DevicesSettings(props: DevicesSettingsProps) { buttonStyle="secondary" display="flex" > - + diff --git a/components/two-factor-authentication/RecoverySettings.tsx b/components/two-factor-authentication/RecoverySettings.tsx index 353d1e2cc64..a36b19a0d30 100644 --- a/components/two-factor-authentication/RecoverySettings.tsx +++ b/components/two-factor-authentication/RecoverySettings.tsx @@ -50,11 +50,14 @@ export function RecoverySettings(props: RecoverySettingsProps) {

    - +

    - +
    - +
    @@ -71,11 +74,13 @@ export function RecoverySettings(props: RecoverySettingsProps) { setIsRegeneratingRecoveryCodes(false)} - header={} + header={ + + } continueHandler={onRegenerateConfirmation} > - + )} diff --git a/components/two-factor-authentication/ResetTwoFactorButton.tsx b/components/two-factor-authentication/ResetTwoFactorButton.tsx index 8325efd48c7..cb57d5b9752 100644 --- a/components/two-factor-authentication/ResetTwoFactorButton.tsx +++ b/components/two-factor-authentication/ResetTwoFactorButton.tsx @@ -68,7 +68,7 @@ export function ResetTwoFactorButton(props: ResetTwoFactorButtonProps) { }); toast({ variant: 'success', - message: , + message: , }); return CONFIRMATION_MODAL_TERMINATE; } catch (e) { @@ -88,7 +88,7 @@ export function ResetTwoFactorButton(props: ResetTwoFactorButtonProps) { buttonSize="tiny" buttonStyle="dangerSecondary" > - + {isRemovingTwoFactorAuthentication && ( setIsRemovingTwoFactorAuthentication(false)} header={ - + } continueHandler={onRemoveConfirmation} > - +

    - +

    )} diff --git a/components/two-factor-authentication/SaveRecoveryCodesModal.tsx b/components/two-factor-authentication/SaveRecoveryCodesModal.tsx index aedf1e12739..6681e6ea06d 100644 --- a/components/two-factor-authentication/SaveRecoveryCodesModal.tsx +++ b/components/two-factor-authentication/SaveRecoveryCodesModal.tsx @@ -24,7 +24,7 @@ export function SaveRecoveryCodesModal(props: SaveRecoveryCodesModalProps) {

    - +

    @@ -64,7 +64,7 @@ export function SaveRecoveryCodesModal(props: SaveRecoveryCodesModalProps) { ) } > - +   diff --git a/components/two-factor-authentication/TwoFactorAuthenticationModal.tsx b/components/two-factor-authentication/TwoFactorAuthenticationModal.tsx index 816d005a2d3..29adca6c8f2 100644 --- a/components/two-factor-authentication/TwoFactorAuthenticationModal.tsx +++ b/components/two-factor-authentication/TwoFactorAuthenticationModal.tsx @@ -157,15 +157,16 @@ export default function TwoFactorAuthenticationModal() { {supportedMethods.length === 0 ? ( - + ) : ( - + )} {LoggedInUser && supportedMethods.length === 0 && ( {alternativeMethods.includes('totp') && ( )} {alternativeMethods.includes('webauthn') && ( )} {alternativeMethods.includes('recovery_code') && ( )} @@ -288,7 +289,7 @@ function RecoveryCodeOptions(props: { value: string; onChange: (string) => void; function WebauthnOption() { return (

    - +

    ); } diff --git a/components/two-factor-authentication/UserTwoFactorMethodItem.tsx b/components/two-factor-authentication/UserTwoFactorMethodItem.tsx index e72de1a4271..42e2fc14bf1 100644 --- a/components/two-factor-authentication/UserTwoFactorMethodItem.tsx +++ b/components/two-factor-authentication/UserTwoFactorMethodItem.tsx @@ -109,7 +109,7 @@ export function UserTwoFactorMethodItem(props: UserTwoFactorMethodItemProps) { >   - + setIsEditingMethodName(false)} - header={} + header={} cancelHandler={() => { setNewMethodName(props.userTwoFactorMethod.name); setIsEditingMethodName(false); @@ -173,7 +173,7 @@ export function UserTwoFactorMethodItem(props: UserTwoFactorMethodItemProps) { await removeTwoFactorMethod(); toast({ variant: 'success', - message: , + message: , }); setIsConfirmingRemove(false); return CONFIRMATION_MODAL_TERMINATE; @@ -185,7 +185,7 @@ export function UserTwoFactorMethodItem(props: UserTwoFactorMethodItemProps) { } }} > - + )} diff --git a/components/updates/UpdateAudienceBreakdown.js b/components/updates/UpdateAudienceBreakdown.js index 06ad2802f68..8cc228f90dd 100644 --- a/components/updates/UpdateAudienceBreakdown.js +++ b/components/updates/UpdateAudienceBreakdown.js @@ -33,7 +33,7 @@ const UpdateAudienceBreakdown = ({ audienceStats, isLoading }) => { if (isLoading) { return ; } else if (!audienceStats || audienceStats?.id.includes('NO_ONE')) { - return ; + return ; } const typesWithStats = Object.keys(translatedTypes); diff --git a/components/vendors/OrganizationDetails.tsx b/components/vendors/OrganizationDetails.tsx index 9083605e3ee..ea0158a8e79 100644 --- a/components/vendors/OrganizationDetails.tsx +++ b/components/vendors/OrganizationDetails.tsx @@ -86,7 +86,10 @@ const OrganizationDetails = ({ organization, host, onCancel, editVendor }) => { const result = await convertOrganizationToVendor({ variables: { organization: { id: organization.id }, host: { id: host.id } }, }); - toast({ variant: 'success', message: }); + toast({ + variant: 'success', + message: , + }); editVendor(result.data.convertOrganizationToVendor); } catch (e) { toast({ variant: 'error', message: i18nGraphqlException(intl, e) }); @@ -100,7 +103,7 @@ const OrganizationDetails = ({ organization, host, onCancel, editVendor }) => { return (

    - +

    @@ -132,7 +135,7 @@ const OrganizationDetails = ({ organization, host, onCancel, editVendor }) => { {activity && (
    - + {activity.expenses.totalCount} @@ -150,7 +153,7 @@ const OrganizationDetails = ({ organization, host, onCancel, editVendor }) => {
    , drawerActionsContainer, @@ -160,12 +163,13 @@ const OrganizationDetails = ({ organization, host, onCancel, editVendor }) => { width="100%" maxWidth="570px" onClose={() => setDisplayConvertToVendor(false)} - header={} + header={} continueHandler={handleConvert} >

    }} />

    diff --git a/components/vendors/VendorDetails.tsx b/components/vendors/VendorDetails.tsx index 279e72f5ff0..8493cfda83a 100644 --- a/components/vendors/VendorDetails.tsx +++ b/components/vendors/VendorDetails.tsx @@ -52,7 +52,7 @@ const VendorDetails = ({ vendor, host, onCancel, editVendor }: VendorDetailsProp return (

    - +

    {vendor.name}
    @@ -76,7 +76,7 @@ const VendorDetails = ({ vendor, host, onCancel, editVendor }: VendorDetailsProp {contact && (
    - + {contact.name} @@ -91,7 +91,7 @@ const VendorDetails = ({ vendor, host, onCancel, editVendor }: VendorDetailsProp
    {taxType && ( - + {taxType}: {taxId} @@ -99,7 +99,7 @@ const VendorDetails = ({ vendor, host, onCancel, editVendor }: VendorDetailsProp )} {vendor.location && ( - + )} @@ -112,7 +112,7 @@ const VendorDetails = ({ vendor, host, onCancel, editVendor }: VendorDetailsProp
    - + {vendor.expenses.totalCount} diff --git a/components/vendors/VendorForm.tsx b/components/vendors/VendorForm.tsx index f665eb014cd..bfea27bbd0c 100644 --- a/components/vendors/VendorForm.tsx +++ b/components/vendors/VendorForm.tsx @@ -117,13 +117,13 @@ const VendorForm = ({ vendor, host, onSuccess, onCancel, isModal }: VendorFormPr await editVendor({ variables: { vendor: { ...data, id: vendor.id } } }); toast({ variant: 'success', - message: , + message: , }); } else { await createVendor({ variables: { vendor: data, host: pick(host, ['id', 'slug']) } }); toast({ variant: 'success', - message: , + message: , }); } onSuccess?.(); @@ -158,7 +158,7 @@ const VendorForm = ({ vendor, host, onSuccess, onCancel, isModal }: VendorFormPr {vendor ? ( ) : ( - + )} {isModal && (
    @@ -192,7 +192,7 @@ const VendorForm = ({ vendor, host, onSuccess, onCancel, isModal }: VendorFormPr
    )} @@ -240,7 +240,7 @@ const VendorForm = ({ vendor, host, onSuccess, onCancel, isModal }: VendorFormPr {formik.values.vendorInfo?.taxFormRequired && ( )}

    - +

    - +

    { @@ -313,7 +313,7 @@ const VendorForm = ({ vendor, host, onSuccess, onCancel, isModal }: VendorFormPr
    , }} diff --git a/components/virtual-card-requests/VirtualCardRequestDrawer.tsx b/components/virtual-card-requests/VirtualCardRequestDrawer.tsx index 6e401524d0a..01481a37e9a 100644 --- a/components/virtual-card-requests/VirtualCardRequestDrawer.tsx +++ b/components/virtual-card-requests/VirtualCardRequestDrawer.tsx @@ -194,7 +194,7 @@ export function VirtualCardRequestDrawer(props: VirtualCardRequestDrawerProps) { } + title={} value={ } + title={} value={ - + {virtualCardRequest.status === VirtualCardRequestStatus.PENDING && ( @@ -130,7 +130,7 @@ type VirtualCardRequestsTableMeta = { const tableColumns: ColumnDef[] = [ { accessorKey: 'account', - header: () => , + header: () => , meta: { className: 'w-48' }, cell: ({ cell }: CellContext) => { @@ -152,7 +152,7 @@ const tableColumns: ColumnDef[] = [ accessorKey: 'assignee', meta: { className: 'w-36' }, - header: () => , + header: () => , cell: ({ cell, row }: CellContext) => { const assignee = cell.getValue(); const virtualCardRequest = row.original; @@ -280,7 +280,7 @@ export function VirtualCardRequestsTable(props: VirtualCardRequestsTableProps) { onClickRow={row => props?.onSelectedVirtualCardRequest(row.original)} emptyMessage={() => (

    - +

    )} /> diff --git a/components/virtual-cards/StripeVirtualCardComplianceStatement.tsx b/components/virtual-cards/StripeVirtualCardComplianceStatement.tsx index 941cdec5c3a..c5cd0ce24e9 100644 --- a/components/virtual-cards/StripeVirtualCardComplianceStatement.tsx +++ b/components/virtual-cards/StripeVirtualCardComplianceStatement.tsx @@ -6,6 +6,7 @@ export function StripeVirtualCardComplianceStatement() {

    } + title={} value={ } + title={} value={ } /> } + title={} value={getAvailableLimitShortString( intl, virtualCard.currency, @@ -191,7 +191,7 @@ export default function VirtualCardDrawer(props: VirtualCardDrawerProps) { {virtualCard.spendingLimitRenewsOn && ( } + title={} value={} /> )} @@ -215,7 +215,7 @@ export default function VirtualCardDrawer(props: VirtualCardDrawerProps) { as={React.forwardRef((props, ref: React.ForwardedRef) => { return ( - + ); })} @@ -227,10 +227,10 @@ export default function VirtualCardDrawer(props: VirtualCardDrawerProps) { href={`/${virtualCard.account.slug}/transactions?virtualCard=${virtualCard?.id}`} buttonStyle="secondary" > - + setIsEditingVirtualCard(true)}> - + diff --git a/components/virtual-cards/VirtualCardsTable.tsx b/components/virtual-cards/VirtualCardsTable.tsx index c732cccc970..e77810010f0 100644 --- a/components/virtual-cards/VirtualCardsTable.tsx +++ b/components/virtual-cards/VirtualCardsTable.tsx @@ -37,7 +37,7 @@ type VirtualCardsTableMeta = { const tableColumns: ColumnDef[] = [ { accessorKey: 'account', - header: () => , + header: () => , cell: ({ cell }: CellContext) => { const account = cell.getValue(); return ( @@ -200,7 +200,7 @@ export default function VirtualCardsTable(props: VirtualCardsTableProps) { emptyMessage={() => (

    - +

    )} diff --git a/lib/collective-sections.js b/lib/collective-sections.js index f3907055321..b76e32bda92 100644 --- a/lib/collective-sections.js +++ b/lib/collective-sections.js @@ -415,9 +415,12 @@ export const getSectionsCategoryDetails = (intl, collective, category) => { if (!canReceiveContributions) { details.title = intl.formatMessage({ id: 'Contributors', defaultMessage: 'Contributors' }); } else if (collective.type === CollectiveType.EVENT) { - details.title = intl.formatMessage({ defaultMessage: 'Get Involved' }); - details.subtitle = intl.formatMessage({ defaultMessage: 'Support the event or buy tickets.' }); - details.info = intl.formatMessage({ defaultMessage: 'Support the event or buy tickets to attend.' }); + details.title = intl.formatMessage({ defaultMessage: 'Get Involved', id: 'iUxV8v' }); + details.subtitle = intl.formatMessage({ defaultMessage: 'Support the event or buy tickets.', id: '9MpOZn' }); + details.info = intl.formatMessage({ + defaultMessage: 'Support the event or buy tickets to attend.', + id: 'ZvWD3X', + }); } else { details.subtitle = intl.formatMessage({ id: 'CollectivePage.SectionContribute.Subtitle', diff --git a/lib/csv.tsx b/lib/csv.tsx index de7f3bb6ad5..51e1946eb26 100644 --- a/lib/csv.tsx +++ b/lib/csv.tsx @@ -134,70 +134,70 @@ export const FIELD_GROUPS_2024: Record = { }; export const FieldGroupLabels: Record = { - transaction: , - accounts: , - order: , + transaction: , + accounts: , + order: , expense: , - tax: , + tax: , legacy: , }; export const FieldLabels: Partial> = { - accountingCategoryCode: , - accountingCategoryName: , + accountingCategoryCode: , + accountingCategoryName: , date: , - datetime: , - effectiveDate: , - id: , - legacyId: , - shortId: , - shortGroup: , - group: , + datetime: , + effectiveDate: , + id: , + legacyId: , + shortId: , + shortGroup: , + group: , description: , type: , kind: , - isRefund: , - isRefunded: , - refundId: , - shortRefundId: , - displayAmount: , + isRefund: , + isRefunded: , + refundId: , + shortRefundId: , + displayAmount: , amount: , - paymentProcessorFee: , - platformFee: , - hostFee: , - netAmount: , + paymentProcessorFee: , + platformFee: , + hostFee: , + netAmount: , balance: , currency: , - accountSlug: , - accountName: , - accountType: , - accountEmail: , - oppositeAccountSlug: , - oppositeAccountName: , - oppositeAccountType: , - oppositeAccountEmail: , - hostSlug: , - hostName: , - hostType: , - orderId: , - orderLegacyId: , - orderFrequency: , - orderMemo: , - orderProcessedDate: , - orderCustomData: , - paymentMethodService: , - paymentMethodType: , - expenseId: , - expenseLegacyId: , - expenseType: , - expenseTags: , - payoutMethodType: , - merchantId: , - taxAmount: , - taxType: , - taxRate: , - taxIdNumber: , - debitAndCreditAmounts: , + accountSlug: , + accountName: , + accountType: , + accountEmail: , + oppositeAccountSlug: , + oppositeAccountName: , + oppositeAccountType: , + oppositeAccountEmail: , + hostSlug: , + hostName: , + hostType: , + orderId: , + orderLegacyId: , + orderFrequency: , + orderMemo: , + orderProcessedDate: , + orderCustomData: , + paymentMethodService: , + paymentMethodType: , + expenseId: , + expenseLegacyId: , + expenseType: , + expenseTags: , + payoutMethodType: , + merchantId: , + taxAmount: , + taxType: , + taxRate: , + taxIdNumber: , + debitAndCreditAmounts: , }; export enum FIELD_OPTIONS { @@ -212,22 +212,22 @@ export enum LEGACY_FIELD_OPTIONS { } export const FieldOptionsLabels = { - [FIELD_OPTIONS.DEFAULT]: , - [FIELD_OPTIONS.DEFAULT_2023]: , + [FIELD_OPTIONS.DEFAULT]: , + [FIELD_OPTIONS.DEFAULT_2023]: , [FIELD_OPTIONS.NEW_PRESET]: ( - + ), - [LEGACY_FIELD_OPTIONS.CUSTOM]: , + [LEGACY_FIELD_OPTIONS.CUSTOM]: , }; export const GROUPS = { - transaction: , - account: , - order: , + transaction: , + account: , + order: , expense: , - tax: , + tax: , legacy: , }; @@ -240,134 +240,175 @@ export const FIELDS: Array<{ { id: 'datetime', group: 'transaction', - tooltip: , - label: , + tooltip: ( + + ), + label: , }, { id: 'effectiveDate', group: 'transaction', tooltip: ( - + ), - label: , + label: , }, { id: 'legacyId', group: 'transaction', - tooltip: , - label: , + tooltip: , + label: , }, { id: 'group', group: 'transaction', tooltip: ( - + ), - label: , + label: , }, { id: 'description', group: 'transaction', - tooltip: , + tooltip: , label: , }, { id: 'type', group: 'transaction', tooltip: ( - + ), - label: , + label: , }, { id: 'kind', group: 'transaction', - tooltip: , + tooltip: , label: , }, { id: 'netAmount', group: 'transaction', tooltip: ( - + ), - label: , + label: , }, { id: 'debitAndCreditAmounts', group: 'transaction', tooltip: ( - + ), - label: , + label: , }, { id: 'currency', group: 'transaction', - tooltip: , + tooltip: , label: , }, { id: 'displayAmount', group: 'transaction', tooltip: ( - + ), - label: , + label: , }, { id: 'isRefund', group: 'transaction', tooltip: ( - + ), - label: , + label: , }, { id: 'isRefunded', group: 'transaction', tooltip: ( - + ), - label: , + label: , }, { id: 'accountingCategoryCode', group: 'transaction', tooltip: ( - + ), - label: , + label: , }, { id: 'accountingCategoryName', group: 'transaction', tooltip: ( - + ), - label: , + label: , }, { id: 'merchantId', group: 'transaction', tooltip: ( - + ), - label: , + label: , }, { id: 'paymentMethodService', group: 'transaction', tooltip: ( - + ), - label: , + label: , }, { id: 'paymentMethodType', group: 'transaction', tooltip: ( - + ), label: , }, @@ -375,257 +416,337 @@ export const FIELDS: Array<{ id: 'accountSlug', group: 'account', tooltip: ( - + ), - label: , + label: , }, { id: 'accountName', group: 'account', - tooltip: , - label: , + tooltip: , + label: , }, { id: 'accountType', group: 'account', tooltip: ( - + ), - label: , + label: , }, { id: 'accountEmail', group: 'account', - tooltip: , - label: , + tooltip: , + label: , }, { id: 'oppositeAccountSlug', group: 'account', tooltip: ( - + ), - label: , + label: , }, { id: 'oppositeAccountName', group: 'account', - tooltip: , - label: , + tooltip: , + label: , }, { id: 'oppositeAccountType', group: 'account', tooltip: ( - + ), - label: , + label: , }, { id: 'oppositeAccountEmail', group: 'account', - tooltip: , - label: , + tooltip: ( + + ), + label: , }, { id: 'orderLegacyId', group: 'order', - tooltip: , - label: , + tooltip: ( + + ), + label: , }, { id: 'orderMemo', group: 'order', tooltip: ( - + ), - label: , + label: , }, { id: 'orderFrequency', group: 'order', - tooltip: , - label: , + tooltip: ( + + ), + label: , }, { id: 'orderCustomData', group: 'order', - tooltip: , - label: , + tooltip: , + label: , }, { id: 'expenseLegacyId', group: 'expense', - tooltip: , - label: , + tooltip: , + label: , }, { id: 'expenseType', group: 'expense', - tooltip: , - label: , + tooltip: , + label: , }, { id: 'expenseTags', group: 'expense', - tooltip: , - label: , + tooltip: , + label: , }, { id: 'taxType', group: 'tax', - tooltip: , - label: , + tooltip: , + label: , }, { id: 'taxRate', group: 'tax', - tooltip: , - label: , + tooltip: ( + + ), + label: , }, { id: 'taxIdNumber', group: 'tax', - tooltip: , - label: , + tooltip: , + label: , }, { id: 'date', group: 'legacy', - tooltip: , + tooltip: , label: , }, { id: 'id', group: 'legacy', tooltip: ( - + ), - label: , + label: , }, { id: 'shortId', group: 'legacy', - tooltip: , - label: , + tooltip: ( + + ), + label: , }, { id: 'shortGroup', group: 'legacy', - tooltip: , - label: , + tooltip: ( + + ), + label: , }, { id: 'shortRefundId', group: 'legacy', tooltip: ( - + ), - label: , + label: , }, { id: 'amount', group: 'legacy', tooltip: ( - + ), - label: , + label: , }, { id: 'paymentProcessorFee', group: 'legacy', tooltip: ( - + ), - label: , + label: , }, { id: 'expenseId', group: 'legacy', tooltip: ( - + ), - label: , + label: , }, { id: 'payoutMethodType', group: 'legacy', tooltip: ( - + ), - label: , + label: , }, { id: 'platformFee', group: 'legacy', tooltip: ( - + ), - label: , + label: , }, { id: 'hostFee', group: 'legacy', tooltip: ( - + ), - label: , + label: , }, { id: 'orderId', group: 'legacy', tooltip: ( - + ), - label: , + label: , }, // New Fields { id: 'refundLegacyId', group: 'transaction', - label: , + label: , }, { id: 'expenseTotalAmount', group: 'expense', - tooltip: , - label: , + tooltip: , + label: , }, { id: 'expenseCurrency', group: 'expense', - tooltip: , - label: , + tooltip: , + label: , }, { id: 'expenseSubmittedByHandle', group: 'expense', tooltip: ( - + ), - label: , + label: , }, { id: 'expenseApprovedByHandle', group: 'expense', tooltip: ( - + ), - label: , + label: , }, { id: 'expensePaidByHandle', group: 'expense', - tooltip: , - label: , + tooltip: ( + + ), + label: , }, // Deprecated { id: 'refundId', group: 'legacy', - label: , + label: , }, { id: 'balance', @@ -635,27 +756,27 @@ export const FIELDS: Array<{ { id: 'hostSlug', group: 'legacy', - label: , + label: , }, { id: 'hostName', group: 'legacy', - label: , + label: , }, { id: 'hostType', group: 'legacy', - label: , + label: , }, { id: 'orderProcessedDate', group: 'legacy', - label: , + label: , }, { id: 'taxAmount', group: 'legacy', - label: , + label: , }, ]; diff --git a/lib/errors/index.js b/lib/errors/index.js index a0c90412b9f..76253c21294 100644 --- a/lib/errors/index.js +++ b/lib/errors/index.js @@ -269,6 +269,7 @@ const msg = { }, [ERROR.FORM_FILE_UPLOADING]: { defaultMessage: 'The file is still uploading, please wait', + id: 'k8RfQ/', }, [ERROR.ACCOUNT_EMAIL_ALREADY_EXISTS]: { id: 'Error.AccountEmailAlreadyExists', @@ -276,15 +277,19 @@ const msg = { }, [ERROR.INVALID_FILE_SIZE_TOO_BIG]: { defaultMessage: 'The file is larger than the maximum allowed ({max})', + id: '9EFQ9C', }, [ERROR.INVALID_FILE_MIME_TYPE]: { defaultMessage: 'The file type is invalid', + id: 'X482Yd', }, [ERROR.TWO_FACTOR_AUTH_CANCELED]: { defaultMessage: 'Two Factor Authentication Cancelled', + id: 'WAUPIM', }, [ERROR.JWT_EXPIRED]: { defaultMessage: 'Your session has expired. Please sign-in again.', + id: 'Dtil7S', }, }), ...transferwiseMsg, diff --git a/lib/expenses/index.js b/lib/expenses/index.js index a70ae7d3011..af579af3954 100644 --- a/lib/expenses/index.js +++ b/lib/expenses/index.js @@ -89,6 +89,6 @@ export const getDefaultFileName = (intl, idx, totalNbFiles) => { if (totalNbFiles === 1) { return intl.formatMessage({ id: 'File.AttachedFile', defaultMessage: 'Attached file' }); } else { - return intl.formatMessage({ defaultMessage: 'Attached file {number}' }, { number: idx + 1 }); + return intl.formatMessage({ defaultMessage: 'Attached file {number}', id: 'A+AIST' }, { number: idx + 1 }); } }; diff --git a/lib/form-utils.ts b/lib/form-utils.ts index 4eb543d0aa2..7921ae5dcf7 100644 --- a/lib/form-utils.ts +++ b/lib/form-utils.ts @@ -15,6 +15,7 @@ export const RICH_ERROR_MESSAGES = defineMessages({ }, notInRange: { defaultMessage: 'Value must be between {min} and {max}', + id: 'f5QMcL', }, format: { id: 'FormError.pattern', diff --git a/lib/hooks/useQueryFilter.ts b/lib/hooks/useQueryFilter.ts index cf0f5512511..f33d160ec88 100644 --- a/lib/hooks/useQueryFilter.ts +++ b/lib/hooks/useQueryFilter.ts @@ -198,7 +198,7 @@ function addFilterValidationErrorToast(error, intl) { setImmediate(() => { toast({ variant: 'error', - title: intl.formatMessage({ defaultMessage: 'Filter validation error' }), + title: intl.formatMessage({ defaultMessage: 'Filter validation error', id: 'thZrl7' }), message: errorMessage, }); }); diff --git a/lib/i18n/activities.ts b/lib/i18n/activities.ts index 5c0f037128c..ef945168af1 100644 --- a/lib/i18n/activities.ts +++ b/lib/i18n/activities.ts @@ -11,297 +11,383 @@ export const ActivityTimelineMessageI18n = defineMessages submitted expense {expenseDescription} to ', + id: '8EI+IL', }, COLLECTIVE_EXPENSE_APPROVED: { defaultMessage: ' approved {expenseDescription}', + id: 'ub/vNK', }, COLLECTIVE_EXPENSE_ERROR: { defaultMessage: ' expense {expenseDescription} payment failed', + id: 'wciHmV', avatar: 'fromAccount', }, COLLECTIVE_EXPENSE_MARKED_AS_INCOMPLETE: { defaultMessage: ' marked {expenseDescription} as incomplete', + id: 'Uzut+A', }, COLLECTIVE_EXPENSE_MARKED_AS_SPAM: { defaultMessage: ' marked {expenseDescription} as spam', + id: 'hfCFQ9', }, COLLECTIVE_EXPENSE_MARKED_AS_UNPAID: { defaultMessage: ' marked {expenseDescription} as unpaid', + id: 'x91S7e', }, COLLECTIVE_EXPENSE_RE_APPROVAL_REQUESTED: { defaultMessage: ' requested re-approval of {expenseDescription}', + id: '+5TQLy', }, COLLECTIVE_EXPENSE_PAID: { defaultMessage: ' paid to for {expenseDescription}', + id: '/eA1Ga', }, COLLECTIVE_EXPENSE_REJECTED: { defaultMessage: ' rejected {expenseDescription}', + id: 'dye8kC', }, COLLECTIVE_EXPENSE_UNAPPROVED: { defaultMessage: ' unapproved expense {expenseDescription}', + id: 'faRZML', }, COLLECTIVE_EXPENSE_UPDATED: { defaultMessage: ' updated expense {expenseDescription}', + id: 'nWf9h8', }, EXPENSE_COMMENT_CREATED: { defaultMessage: ' commented on {expenseDescription}', + id: 'joNiQk', }, COLLECTIVE_EXPENSE_INVITE_DRAFTED: { defaultMessage: ' drafted an {expenseDescription} on ', + id: 'B+NQ+r', }, COLLECTIVE_EXPENSE_RECURRING_DRAFTED: { defaultMessage: ' recurring {expenseDescription} expense drafted on ', + id: 'HaWQNA', }, COLLECTIVE_UPDATE_PUBLISHED: { defaultMessage: ' published a new update on ', + id: 'uuJbG9', content: 'update', }, UPDATE_COMMENT_CREATED: { defaultMessage: ' commented on update {updateTitle}', + id: '21IyOj', }, ORDER_PAYMENT_FAILED: { defaultMessage: `'s contribution to failed`, + id: 'YKqXR6', }, PAYMENT_FAILED: { defaultMessage: `'s payment for contribution to failed`, + id: 'zw0B0K', }, COLLECTIVE_MEMBER_CREATED: { defaultMessage: ' joined as ', + id: 'blBwBm', avatar: 'fromAccount', }, CONTRIBUTION_REJECTED: { defaultMessage: // Individual not always available here (added to activity 2024-02-22), using Account as fallback ' rejected contribution from ', + id: 'AZmsFu', }, COLLECTIVE_CONVERSATION_CREATED: { defaultMessage: ' started a new conversation on ', + id: '6PKjA9', content: 'conversation', }, CONVERSATION_COMMENT_CREATED: { defaultMessage: ' commented on conversation {conversationTitle}', + id: 'CCaOhC', }, COLLECTIVE_VIRTUAL_CARD_REQUEST_APPROVED: { defaultMessage: ' approved request for virtual card to ', + id: 'VJNKy6', }, COLLECTIVE_VIRTUAL_CARD_REQUEST_REJECTED: { defaultMessage: ' rejected request for virtual card to ', + id: 'Sg4yBm', }, COLLECTIVE_VIRTUAL_CARD_ADDED: { defaultMessage: ' added a new virtual card to ', + id: '+qn/KC', }, COLLECTIVE_VIRTUAL_CARD_SUSPENDED: { defaultMessage: ' suspended virtual card on ', + id: '7jB1+y', }, VIRTUAL_CARD_REQUESTED: { defaultMessage: ' requested a virtual card for from ', + id: 'R8rMFM', }, VIRTUAL_CARD_PURCHASE: { defaultMessage: ' made purchase {expenseDescription} with virtual card', + id: '5ASOpu', }, SUBSCRIPTION_CANCELED: { defaultMessage: "'s recurring contribution has been cancelled", + id: 'pfrLXw', avatar: 'fromAccount', }, SUBSCRIPTION_PAUSED: { defaultMessage: "'s recurring contribution has been paused", + id: 'i7d4by', avatar: 'fromAccount', }, ORDER_PENDING_CONTRIBUTION_NEW: { defaultMessage: ' created new pending contribution to ', + id: 'MapeUk', }, }); export const ActivityDescriptionI18n = defineMessages({ ACCOUNTING_CATEGORIES_EDITED: { defaultMessage: 'Chart of account edited', + id: 'F3FkEv', }, // Collective creation & applications COLLECTIVE_CREATED: { defaultMessage: ' created{hasParent, select, true { under } other {}}', + id: 'vWYg/k', }, COLLECTIVE_EDITED: { defaultMessage: ' edited', + id: 'A4+n4H', }, COLLECTIVE_REJECTED: { defaultMessage: ' application rejected', + id: 'BZnKES', }, ORGANIZATION_COLLECTIVE_CREATED: { defaultMessage: ' created', + id: 'mrEGhM', }, COLLECTIVE_CREATED_GITHUB: { defaultMessage: ' created through GitHub', + id: '+UdXIM', }, COLLECTIVE_APPLY: { defaultMessage: ' applied to be hosted by ', + id: 'K9BlUB', }, COLLECTIVE_APPROVED: { defaultMessage: ' application approved', + id: 'elfKB7', }, COLLECTIVE_UNHOSTED: { defaultMessage: ' unhosted', + id: 'soEGOn', }, // Freezing collectives COLLECTIVE_FROZEN: { defaultMessage: ' frozen', + id: 'A5sIUw', }, COLLECTIVE_UNFROZEN: { defaultMessage: ' unfrozen', + id: 'axn2o/', }, // Comments & conversations COLLECTIVE_COMMENT_CREATED: { defaultMessage: 'New comment on ', + id: 'DhxIpu', }, UPDATE_COMMENT_CREATED: { defaultMessage: 'New comment on update {updateTitle}', + id: 'X0Cbkk', }, EXPENSE_COMMENT_CREATED: { defaultMessage: 'New comment on expense {expenseDescription}', + id: 'CAmz1n', }, CONVERSATION_COMMENT_CREATED: { defaultMessage: 'New comment on conversation {conversationTitle}', + id: 'AyOLNN', }, COLLECTIVE_CONVERSATION_CREATED: { defaultMessage: 'New conversation {conversationTitle} started on ', + id: 'L2vMgh', }, // Expenses COLLECTIVE_EXPENSE_CREATED: { defaultMessage: 'Expense {expenseDescription} created from to ', + id: 'tbPgmU', }, COLLECTIVE_EXPENSE_DELETED: { defaultMessage: 'Expense deleted', + id: 'KYXMJ6', }, COLLECTIVE_EXPENSE_UPDATED: { defaultMessage: 'Expense {expenseDescription} from to updated', + id: '/smQQF', }, COLLECTIVE_EXPENSE_REJECTED: { defaultMessage: 'Rejected expense {expenseDescription} from to ', + id: 'O9VCf1', }, COLLECTIVE_EXPENSE_APPROVED: { defaultMessage: 'Approved expense {expenseDescription} from to ', + id: 'C7dxIO', }, COLLECTIVE_EXPENSE_UNAPPROVED: { defaultMessage: 'Unapproved expense {expenseDescription} from to ', + id: 'lRbFqE', }, COLLECTIVE_EXPENSE_MOVED: { defaultMessage: 'Expense {expenseDescription} moved from to ', + id: 'TdeE3/', }, COLLECTIVE_EXPENSE_PAID: { defaultMessage: 'Paid expense {expenseDescription} from to ', + id: 'yuJl3e', }, COLLECTIVE_EXPENSE_MARKED_AS_UNPAID: { defaultMessage: 'Marked expense {expenseDescription} as unpaid', + id: 'Ttlx2B', }, COLLECTIVE_EXPENSE_MARKED_AS_SPAM: { defaultMessage: 'Marked expense {expenseDescription} as SPAM', + id: 'J3FStm', }, COLLECTIVE_EXPENSE_MARKED_AS_INCOMPLETE: { defaultMessage: 'Marked expense {expenseDescription} as incomplete', + id: '/mqxVR', }, COLLECTIVE_EXPENSE_PROCESSING: { defaultMessage: 'Expense {expenseDescription} is being processed', + id: 'qbG+ka', }, COLLECTIVE_EXPENSE_SCHEDULED_FOR_PAYMENT: { defaultMessage: 'Expense {expenseDescription} scheduled for payment', + id: 'e1Zd2a', }, COLLECTIVE_EXPENSE_ERROR: { defaultMessage: 'Expense {expenseDescription} payment failed', + id: 'M4DHuK', }, COLLECTIVE_EXPENSE_RE_APPROVAL_REQUESTED: { defaultMessage: 'Requested re-approval of {expenseDescription}', + id: 'GoA9Rd', }, COLLECTIVE_EXPENSE_INVITE_DRAFTED: { defaultMessage: 'Invited someone to submit expense {expenseDescription} to ', + id: 'VL8DTm', }, COLLECTIVE_EXPENSE_RECURRING_DRAFTED: { defaultMessage: 'New draft created for recurring expense on ', + id: 'ecapW0', }, COLLECTIVE_EXPENSE_MISSING_RECEIPT: { defaultMessage: 'Notified admins about a missing receipt for expense {expenseDescription} on ', + id: 'H8ux/L', }, COLLECTIVE_EXPENSE_PUT_ON_HOLD: { defaultMessage: 'Put expense {expenseDescription} on hold', + id: 'cU92dw', }, COLLECTIVE_EXPENSE_RELEASED_FROM_HOLD: { defaultMessage: 'Released hold on expense {expenseDescription}', + id: 'o60jEo', }, TAXFORM_REQUEST: { defaultMessage: 'Tax form request sent to ', + id: 'p8x23o', }, // Members COLLECTIVE_MEMBER_CREATED: { defaultMessage: ' joined as ', + id: 'blBwBm', }, COLLECTIVE_MEMBER_INVITED: { defaultMessage: ' was invited to join as ', + id: 'MAL7pS', }, COLLECTIVE_CORE_MEMBER_INVITED: { defaultMessage: ' was invited to join as ', + id: 'MAL7pS', }, COLLECTIVE_CORE_MEMBER_INVITATION_DECLINED: { defaultMessage: ' declined the invitation to join as ', + id: 'jVW1Qw', }, COLLECTIVE_CORE_MEMBER_ADDED: { defaultMessage: ' was added to with the role ', + id: 'yziJEf', }, COLLECTIVE_CORE_MEMBER_EDITED: { defaultMessage: 'Edited membership to ', + id: 'qpaFgk', }, COLLECTIVE_CORE_MEMBER_REMOVED: { defaultMessage: ' removed as of ', + id: '0Wi41l', }, // Transactions COLLECTIVE_TRANSACTION_CREATED: { defaultMessage: 'New transaction from to ', + id: 'WHvzwC', }, // Updates COLLECTIVE_UPDATE_CREATED: { defaultMessage: 'New update drafted on ', + id: 'z1f/0u', }, COLLECTIVE_UPDATE_PUBLISHED: { defaultMessage: 'Update published on : {updateTitle}', + id: 'ejoArz', }, // Contact COLLECTIVE_CONTACT: { defaultMessage: ' contacted ', + id: 'PjKtqv', }, // Virtual cards // TODO: Link virtual cards and/or admin page COLLECTIVE_VIRTUAL_CARD_ADDED: { defaultMessage: 'New virtual card added to ', + id: 'BqfMx5', }, COLLECTIVE_VIRTUAL_CARD_CREATED: { defaultMessage: 'New virtual card created on ', + id: 'WjU8+x', }, COLLECTIVE_VIRTUAL_CARD_MISSING_RECEIPTS: { defaultMessage: 'Notified admins about a missing receipt for expense on ', + id: '2E8GCk', }, COLLECTIVE_VIRTUAL_CARD_SUSPENDED: { defaultMessage: 'Virtual card suspended on ', + id: 'a1lJXS', }, VIRTUAL_CARD_REQUESTED: { defaultMessage: 'Requested a virtual card for ', + id: 'YscZ4w', }, VIRTUAL_CARD_PURCHASE: { defaultMessage: 'New purchase {expenseDescription} with virtual card', + id: 'qJWMMZ', }, VIRTUAL_CARD_CHARGE_DECLINED: { defaultMessage: 'Virtual card charge declined on ', + id: 'yKslCj', }, // Connected accounts CONNECTED_ACCOUNT_CREATED: { @@ -311,9 +397,11 @@ export const ActivityDescriptionI18n = defineMessages({ // Contributions SUBSCRIPTION_CANCELED: { defaultMessage: "'s recurring contribution cancelled", + id: 'gXMGr2', }, SUBSCRIPTION_PAUSED: { defaultMessage: "'s recurring contribution paused", + id: 'XEZlSZ', }, TICKET_CONFIRMED: { id: 'WebhookEvents.TICKET_CONFIRMED', @@ -321,92 +409,119 @@ export const ActivityDescriptionI18n = defineMessages({ }, CONTRIBUTION_REJECTED: { defaultMessage: 'Contribution from rejected by ', + id: 'nxBQAa', }, ORDER_CANCELED_ARCHIVED_COLLECTIVE: { defaultMessage: 'Recurring contribution cancelled on (archived)', + id: 'wHUZBr', }, ORDER_PROCESSING: { defaultMessage: 'Contribution from to set as processing', + id: 'LZTaeF', }, ORDER_PROCESSING_CRYPTO: { defaultMessage: 'Crypto contribution from to set as processing', + id: '6QW6MJ', }, ORDER_PENDING_CONTRIBUTION_NEW: { defaultMessage: 'New pending contribution from to ', + id: 'xrcsxW', }, ORDER_PENDING_CONTRIBUTION_REMINDER: { defaultMessage: 'Sent reminder to about pending contribution to ', + id: 'PPUTPf', }, BACKYOURSTACK_DISPATCH_CONFIRMED: { defaultMessage: 'BackYourStack dispatch confirmed for ', + id: 'T0S/DK', }, ORDER_PAYMENT_FAILED: { defaultMessage: 'Payment from to for contribution failed', + id: 'w/DRNl', }, PAYMENT_FAILED: { defaultMessage: 'Payment from to for contribution failed', + id: 'w/DRNl', }, PAYMENT_CREDITCARD_CONFIRMATION: { defaultMessage: 'Asked for credit card confirmation for contribution on ', + id: 'nGXhAY', }, PAYMENT_CREDITCARD_EXPIRING: { defaultMessage: 'Sent a reminder about expiring credit card to ', + id: '++1FQ+', }, USER_PAYMENT_METHOD_CREATED: { defaultMessage: 'Created a new payment method for ', + id: 'afrSHa', }, // Sign in USER_NEW_TOKEN: { - defaultMessage: 'Requested a new sign in token', // Deprecated and replaced by USER_SIGNIN + defaultMessage: 'Requested a new sign in token', + id: 'd//GCi', // Deprecated and replaced by USER_SIGNIN }, USER_SIGNIN: { defaultMessage: 'Signed In', + id: '9JgEIv', }, OAUTH_APPLICATION_AUTHORIZED: { defaultMessage: 'Authorized a new OAuth application', + id: 'X0h+Qz', }, USER_CHANGE_EMAIL: { defaultMessage: 'Changed email address', + id: 'w4ydKA', }, USER_PASSWORD_SET: { defaultMessage: 'Changed password', + id: '+H9kRE', }, TWO_FACTOR_METHOD_ADDED: { defaultMessage: 'Two factor authentication added', + id: 'vEQcqS', }, TWO_FACTOR_METHOD_DELETED: { defaultMessage: 'Two factor authentication removed', + id: 'qAF9zY', }, TWO_FACTOR_CODE_REQUESTED: { defaultMessage: 'Two factor authentication code requested', + id: 'CkcTj3', }, // Gift cards USER_CARD_CLAIMED: { defaultMessage: 'Claimed a gift card from ', + id: 'jHHcR5', }, USER_CARD_INVITED: { defaultMessage: 'Generated a new gift card for ', + id: 'CSCASZ', }, // Host ACTIVATED_COLLECTIVE_AS_HOST: { defaultMessage: 'Activated as a host', + id: '/rbxQW', }, ACTIVATED_COLLECTIVE_AS_INDEPENDENT: { defaultMessage: 'Activated as an independent collective', + id: 'okucEz', }, DEACTIVATED_COLLECTIVE_AS_HOST: { defaultMessage: 'Deactivated as a host', + id: 'aaWtVL', }, VENDOR_EDITED: { defaultMessage: 'Vendor edited', + id: 'q1szYC', }, VENDOR_CREATED: { defaultMessage: 'Vendor created', + id: 'IUlgDG', }, }); @@ -439,33 +554,43 @@ export const ActivityTypeI18n: ActivityTranslations = defineMessages({ }, COLLECTIVE_UNHOSTED: { defaultMessage: 'Collective unhosted', + id: 'iA/2nx', }, ORGANIZATION_COLLECTIVE_CREATED: { defaultMessage: 'Organization created', + id: 'lehIHr', }, USER_CREATED: { defaultMessage: 'User profile created', + id: 'RUJAuW', }, USER_NEW_TOKEN: { defaultMessage: 'Signed in', + id: '77MbQy', }, USER_CHANGE_EMAIL: { defaultMessage: 'Changed email address', + id: 'w4ydKA', }, USER_CARD_CLAIMED: { defaultMessage: 'Gift card claimed', + id: 'tAVMip', }, USER_CARD_INVITED: { defaultMessage: 'Gift card invited', + id: 'l9N8X3', }, USER_PAYMENT_METHOD_CREATED: { defaultMessage: 'New payment method', + id: 'L3WVIm', }, COLLECTIVE_CREATED_GITHUB: { defaultMessage: 'Collective created via GitHub', + id: 'luw/5Y', }, COLLECTIVE_EDITED: { defaultMessage: 'Account edited', + id: 'wzG+16', }, COLLECTIVE_CONVERSATION_CREATED: { id: 'Conversation.created', @@ -481,6 +606,7 @@ export const ActivityTypeI18n: ActivityTranslations = defineMessages({ }, COLLECTIVE_EXPENSE_DELETED: { defaultMessage: 'Expense deleted', + id: 'KYXMJ6', }, COLLECTIVE_EXPENSE_UPDATED: { id: 'Expense.Activity.Updated', @@ -504,6 +630,7 @@ export const ActivityTypeI18n: ActivityTranslations = defineMessages({ }, COLLECTIVE_EXPENSE_MOVED: { defaultMessage: 'Expense moved', + id: 'rj9VjD', }, COLLECTIVE_EXPENSE_MARKED_AS_UNPAID: { id: 'Expense.Activity.MarkedAsUnpaid', @@ -535,6 +662,7 @@ export const ActivityTypeI18n: ActivityTranslations = defineMessages({ }, COLLECTIVE_EXPENSE_RECURRING_DRAFTED: { defaultMessage: 'Recurring expense drafted', + id: '+yHjyj', }, COLLECTIVE_MEMBER_CREATED: { id: 'WebhookEvents.COLLECTIVE_MEMBER_CREATED', @@ -542,27 +670,35 @@ export const ActivityTypeI18n: ActivityTranslations = defineMessages({ }, COLLECTIVE_FROZEN: { defaultMessage: 'Frozen account', + id: 'JlQbWz', }, COLLECTIVE_UNFROZEN: { defaultMessage: 'Unfrozen account', + id: 'l7vp2G', }, COLLECTIVE_MEMBER_INVITED: { defaultMessage: 'Invited members', + id: 'hP+c6G', }, COLLECTIVE_CORE_MEMBER_ADDED: { defaultMessage: 'Core member added', + id: 'W533GZ', }, COLLECTIVE_CORE_MEMBER_INVITED: { defaultMessage: 'Core member invited', + id: 'RaVvOv', }, COLLECTIVE_CORE_MEMBER_INVITATION_DECLINED: { defaultMessage: 'Core member invitation declined', + id: 'lc+Sfp', }, COLLECTIVE_CORE_MEMBER_REMOVED: { defaultMessage: 'Core member removed', + id: 'Vp7WY+', }, COLLECTIVE_CORE_MEMBER_EDITED: { defaultMessage: 'Core member edited', + id: '4uNER1', }, COLLECTIVE_CONTACT: { id: 'Contact', @@ -570,18 +706,23 @@ export const ActivityTypeI18n: ActivityTranslations = defineMessages({ }, COLLECTIVE_VIRTUAL_CARD_SUSPENDED: { defaultMessage: 'Virtual card suspended', + id: 'It1slB', }, COLLECTIVE_VIRTUAL_CARD_ADDED: { defaultMessage: 'Virtual card added', + id: 'FLqc8O', }, VIRTUAL_CARD_REQUESTED: { defaultMessage: 'Virtual card requested', + id: 'p57bhB', }, VIRTUAL_CARD_CHARGE_DECLINED: { defaultMessage: 'Virtual card charge declined', + id: 'qpg0Od', }, CONTRIBUTION_REJECTED: { defaultMessage: 'Contribution rejected', + id: 'lhiC+5', }, COLLECTIVE_TRANSACTION_CREATED: { id: 'WebhookEvents.COLLECTIVE_TRANSACTION_CREATED', @@ -597,12 +738,15 @@ export const ActivityTypeI18n: ActivityTranslations = defineMessages({ }, SUBSCRIPTION_CANCELED: { defaultMessage: 'Recurring contribution cancelled', + id: 'p9V1Z4', }, SUBSCRIPTION_ACTIVATED: { defaultMessage: 'Recurring contribution activated', + id: 'sRTg0N', }, SUBSCRIPTION_CONFIRMED: { defaultMessage: 'Recurring contribution confirmed', + id: 'e2zrxE', }, TICKET_CONFIRMED: { id: 'WebhookEvents.TICKET_CONFIRMED', @@ -610,47 +754,62 @@ export const ActivityTypeI18n: ActivityTranslations = defineMessages({ }, ORDER_CANCELED_ARCHIVED_COLLECTIVE: { defaultMessage: 'Contribution canceled (archived collective)', + id: 'bD8eWy', }, ORDER_PROCESSING: { defaultMessage: 'Contribution processing', + id: 'EEO+n7', }, ORDER_PROCESSING_CRYPTO: { defaultMessage: 'Contribution processing (crypto)', + id: 'oisSUu', }, ORDER_PENDING_CONTRIBUTION_NEW: { defaultMessage: 'New pending contribution', + id: 'PRfgGt', }, ORDER_THANKYOU: { defaultMessage: 'New contribution', + id: 'raUlsb', }, ORDERS_SUSPICIOUS: { defaultMessage: 'Suspicious contribution', + id: 'oocfGT', }, ACTIVATED_COLLECTIVE_AS_HOST: { defaultMessage: 'Activated as host', + id: 'bOSDd3', }, ACTIVATED_COLLECTIVE_AS_INDEPENDENT: { defaultMessage: 'Activated as independent', + id: 'sPXJ/7', }, DEACTIVATED_COLLECTIVE_AS_HOST: { defaultMessage: 'Deactivated as host', + id: '8Np7Fc', }, PAYMENT_FAILED: { defaultMessage: 'Payment failed', + id: 'qV+TFm', }, TAXFORM_REQUEST: { defaultMessage: 'Tax form request', + id: 'w/zcEG', }, COLLECTIVE_COMMENT_CREATED: { defaultMessage: 'Comment posted', + id: 'VTN7xO', }, CONVERSATION_COMMENT_CREATED: { defaultMessage: 'New comment on conversation', + id: '6mlPiP', }, UPDATE_COMMENT_CREATED: { defaultMessage: 'New comment on update', + id: 'fqHI7A', }, EXPENSE_COMMENT_CREATED: { defaultMessage: 'New comment on expense', + id: 'dHCod9', }, }); diff --git a/lib/i18n/expense.js b/lib/i18n/expense.js index fe4092849eb..2aa3c7af1cb 100644 --- a/lib/i18n/expense.js +++ b/lib/i18n/expense.js @@ -94,9 +94,11 @@ const i18nStatus = defineMessages({ }, [ExpenseStatus.INCOMPLETE]: { defaultMessage: 'Incomplete', + id: 'kHwKVg', }, [ExpenseStatus.SPAM]: { defaultMessage: 'Spam', + id: 'LseLoM', }, [ExpenseStatus.CANCELED]: { id: 'expense.canceled', diff --git a/lib/i18n/is-refund.ts b/lib/i18n/is-refund.ts index 8debf2ac9b0..b77bd02306d 100644 --- a/lib/i18n/is-refund.ts +++ b/lib/i18n/is-refund.ts @@ -1,8 +1,8 @@ import { defineMessages } from 'react-intl'; const MESSAGES = defineMessages({ - IS_REFUND: { defaultMessage: 'Is Refund' }, - IS_NOT_REFUND: { defaultMessage: 'Is not Refund' }, + IS_REFUND: { defaultMessage: 'Is Refund', id: 'o+jEZR' }, + IS_NOT_REFUND: { defaultMessage: 'Is not Refund', id: 'VX6iYD' }, }); export const i18nIsRefund = (intl, value) => { diff --git a/lib/i18n/payment-method-type.js b/lib/i18n/payment-method-type.js index 2e2338efa68..56b585e33d3 100644 --- a/lib/i18n/payment-method-type.js +++ b/lib/i18n/payment-method-type.js @@ -1,23 +1,23 @@ import { defineMessages } from 'react-intl'; const i18nTypes = defineMessages({ - ADAPTIVE: { defaultMessage: 'PayPal Adaptive' }, + ADAPTIVE: { defaultMessage: 'PayPal Adaptive', id: 'wFUChi' }, ALL: { id: 'PaymentMethods.All', defaultMessage: 'All' }, BACS_DEBIT: { id: 'BacsDebit', defaultMessage: 'Bacs Debit' }, BANCONTACT: { id: 'Stripe.PaymentMethod.Label.bancontact', defaultMessage: 'Bancontact' }, - BANK_TRANSFER: { defaultMessage: 'Bank Transfer (Wise)' }, + BANK_TRANSFER: { defaultMessage: 'Bank Transfer (Wise)', id: 'ZJeFvb' }, COLLECTIVE: { id: 'OpenCollectiveBalance', defaultMessage: 'Open Collective Balance' }, CREDITCARD: { id: 'CreditCard', defaultMessage: 'Credit Card' }, CRYPTO: { id: 'Crypto', defaultMessage: 'Crypto' }, GIFTCARD: { id: 'GiftCard', defaultMessage: 'Gift Card' }, HOST: { id: 'Host', defaultMessage: 'Fiscal Host (Added Funds)' }, - LINK: { defaultMessage: 'Link (Stripe)' }, + LINK: { defaultMessage: 'Link (Stripe)', id: 'WYdbkR' }, MANUAL: { id: 'Payout.Manual', defaultMessage: 'Manual' }, - PAYMENT: { defaultMessage: 'PayPal payment' }, - PAYOUT: { defaultMessage: 'PayPal payout' }, + PAYMENT: { defaultMessage: 'PayPal payment', id: 'Ed6cRE' }, + PAYOUT: { defaultMessage: 'PayPal payout', id: 'AUPY+T' }, PREPAID: { id: 'Prepaid', defaultMessage: 'Prepaid Card' }, SEPA_DEBIT: { id: 'SEPADebit', defaultMessage: 'SEPA Debit' }, - SUBSCRIPTION: { defaultMessage: 'PayPal subscription' }, + SUBSCRIPTION: { defaultMessage: 'PayPal subscription', id: 'Clvp6T' }, US_BANK_ACCOUNT: { id: 'ACH Debit', defaultMessage: 'ACH Debit' }, VIRTUAL_CARD: { id: 'PayoutMethod.Type.VirtualCard', defaultMessage: 'Virtual Card' }, [null]: { id: 'PaymentMethods.None', defaultMessage: 'No payment method' }, diff --git a/lib/i18n/period-compare-filter.ts b/lib/i18n/period-compare-filter.ts index 8c4088ddfdd..b5ddaa1f217 100644 --- a/lib/i18n/period-compare-filter.ts +++ b/lib/i18n/period-compare-filter.ts @@ -29,33 +29,43 @@ export const i18nPeriodFilterCompare = defineMessages({ export const i18nPeriodFilterType = defineMessages({ [PeriodFilterType.TODAY]: { defaultMessage: 'Today', + id: 'zWgbGg', }, [PeriodFilterType.LAST_7_DAYS]: { defaultMessage: 'Last 7 days', + id: 'irFBKn', }, [PeriodFilterType.LAST_4_WEEKS]: { defaultMessage: 'Last 4 weeks', + id: 'QWcxnw', }, [PeriodFilterType.LAST_3_MONTHS]: { defaultMessage: 'Last 3 months', + id: 'E0NcxQ', }, [PeriodFilterType.LAST_12_MONTHS]: { defaultMessage: 'Last 12 months', + id: 'r5sWuC', }, [PeriodFilterType.MONTH_TO_DATE]: { defaultMessage: 'Month to date', + id: 'rwUDGW', }, [PeriodFilterType.QUARTER_TO_DATE]: { defaultMessage: 'Quarter to date', + id: 'a7RVBv', }, [PeriodFilterType.YEAR_TO_DATE]: { defaultMessage: 'Year to date', + id: 'zvczgi', }, [PeriodFilterType.ALL_TIME]: { defaultMessage: 'All time', + id: 's+lPP3', }, [PeriodFilterType.CUSTOM]: { defaultMessage: 'Custom', + id: 'Sjo1P4', }, }); diff --git a/lib/i18n/receipts-filter.ts b/lib/i18n/receipts-filter.ts index 5f54528bbe0..b721c8f3758 100644 --- a/lib/i18n/receipts-filter.ts +++ b/lib/i18n/receipts-filter.ts @@ -1,8 +1,8 @@ import { defineMessages } from 'react-intl'; const MESSAGES = defineMessages({ - RECEIPT_MISSING: { defaultMessage: 'Has missing receipts' }, - NO_RECEIPT_MISSING: { defaultMessage: 'Has no receipts missing' }, + RECEIPT_MISSING: { defaultMessage: 'Has missing receipts', id: 'qJxuiQ' }, + NO_RECEIPT_MISSING: { defaultMessage: 'Has no receipts missing', id: 'wDruhW' }, HAS_RECEIPTS: { id: 'VirtualCard.WithReceiptsFilter', defaultMessage: 'Has receipts' }, HAS_NO_RECEIPTS: { id: 'VirtualCard.WithoutReceiptsFilter', defaultMessage: 'Has no receipts' }, }); diff --git a/lib/i18n/reports.ts b/lib/i18n/reports.ts index b8b4d0b510a..29cb52c83bd 100644 --- a/lib/i18n/reports.ts +++ b/lib/i18n/reports.ts @@ -13,9 +13,11 @@ const MESSAGES = defineMessages({ }, [ReportSection.FEES_TIPS]: { defaultMessage: 'Fees & Tips', + id: 'P3537s', }, [ReportSection.OTHER]: { defaultMessage: 'Other', + id: '/VnDMl', }, }); diff --git a/lib/i18n/search-sorting-options.js b/lib/i18n/search-sorting-options.js index 85f940a7f9b..cb596b05617 100644 --- a/lib/i18n/search-sorting-options.js +++ b/lib/i18n/search-sorting-options.js @@ -3,15 +3,19 @@ import { defineMessages } from 'react-intl'; const MESSAGES = defineMessages({ ACTIVITY: { defaultMessage: 'Activity', + id: 'ZmlNQ3', }, RANK: { defaultMessage: 'Relevancy', + id: 'XNgXMJ', }, 'CREATED_AT.ASC': { defaultMessage: 'Oldest created', + id: 'd8OVmo', }, 'CREATED_AT.DESC': { defaultMessage: 'Recently created', + id: 'RC6rA2', }, }); diff --git a/lib/i18n/transaction.js b/lib/i18n/transaction.js index f6152314b00..9d5caaacd95 100644 --- a/lib/i18n/transaction.js +++ b/lib/i18n/transaction.js @@ -27,6 +27,7 @@ const i18nKind = defineMessages({ defaultMessage: 'Added funds', }, [TransactionKind.CONTRIBUTION]: { + id: '0LK5eg', defaultMessage: 'Contribution', }, [TransactionKind.EXPENSE]: { @@ -78,6 +79,7 @@ const i18nKind = defineMessages({ defaultMessage: 'Payment processor dispute fee', }, [TransactionKind.TAX]: { + id: 'AwzkSM', defaultMessage: 'Tax', }, }); diff --git a/lib/i18n/webhook-event-type.js b/lib/i18n/webhook-event-type.js index 13f82661cd4..0f36f2b9322 100644 --- a/lib/i18n/webhook-event-type.js +++ b/lib/i18n/webhook-event-type.js @@ -33,6 +33,7 @@ const TypesI18n = defineMessages({ }, [WebhookEvents.COLLECTIVE_EXPENSE_DELETED]: { defaultMessage: 'Expense deleted', + id: 'KYXMJ6', }, [WebhookEvents.COLLECTIVE_EXPENSE_UPDATED]: { id: 'Expense.Activity.Updated', @@ -68,6 +69,7 @@ const TypesI18n = defineMessages({ }, [WebhookEvents.SUBSCRIPTION_CANCELED]: { defaultMessage: 'Recurring contribution cancelled', + id: 'p9V1Z4', }, [WebhookEvents.TICKET_CONFIRMED]: { id: 'WebhookEvents.TICKET_CONFIRMED', @@ -79,6 +81,7 @@ const TypesI18n = defineMessages({ }, [WebhookEvents.ORDER_THANKYOU]: { defaultMessage: 'New financial contribution', + id: 'xbcpN/', }, }); diff --git a/lib/transactions.js b/lib/transactions.js index 4da873393e2..76b1e8476ab 100644 --- a/lib/transactions.js +++ b/lib/transactions.js @@ -128,6 +128,7 @@ export const renderDetailsString = ({ return ( ); @@ -151,13 +153,14 @@ export const renderDetailsString = ({ {expenseAmount && ( - + )} {paymentProcessorFeeString(paymentProcessorFee, isRefund, feesPayer)} {taxAmount && taxInfo && ( diff --git a/lib/virtual-cards/constants.ts b/lib/virtual-cards/constants.ts index 725b7e62383..41185da3c78 100644 --- a/lib/virtual-cards/constants.ts +++ b/lib/virtual-cards/constants.ts @@ -32,6 +32,7 @@ export const VirtualCardLimitIntervalDescriptionsI18n = defineMessages({ export const VirtualCardLimitIntervalI18n = defineMessages({ [VirtualCardLimitInterval.ALL_TIME]: { defaultMessage: 'All time', + id: 's+lPP3', }, [VirtualCardLimitInterval.DAILY]: { id: 'virtualCard.intervalLimit.daily', diff --git a/pages/applications.js b/pages/applications.js index 12c3d8d854a..02e50e859f2 100644 --- a/pages/applications.js +++ b/pages/applications.js @@ -22,11 +22,14 @@ class Apps extends React.Component { {LoggedInUser => ( - + - + diff --git a/pages/banner-iframe.js b/pages/banner-iframe.js index 1ac28211a55..efc9a60dd6e 100644 --- a/pages/banner-iframe.js +++ b/pages/banner-iframe.js @@ -364,9 +364,7 @@ class BannerIframe extends React.Component { n: backers.organizations + backers.collectives, collective: collective.name, }} - defaultMessage={ - '{n} {n, plural, one {organization is} other {organizations are}} supporting {collective}' - } + defaultMessage="{n} {n, plural, one {organization is} other {organizations are}} supporting {collective}" />
    @@ -399,7 +397,7 @@ class BannerIframe extends React.Component { diff --git a/pages/dashboard.tsx b/pages/dashboard.tsx index 0d9b82102be..fef98a7166b 100644 --- a/pages/dashboard.tsx +++ b/pages/dashboard.tsx @@ -89,19 +89,24 @@ function getBlocker(LoggedInUser, account, section) { if (!LoggedInUser) { return ; } else if (!account) { - return ; + return ; } else if (account.isIncognito) { - return ; + return ; } // Check permissions const isAdmin = LoggedInUser.isAdminOfCollective(account); if (SECTIONS_ACCESSIBLE_TO_ACCOUNTANTS.includes(section)) { if (!isAdmin && !LoggedInUser.hasRole(roles.ACCOUNTANT, account)) { - return ; + return ( + + ); } } else if (!isAdmin) { - return ; + return ; } } @@ -209,7 +214,7 @@ const DashboardPage = () => {

    {blocker}

    {LoggedInUser && ( - + )} diff --git a/pages/help-and-support.js b/pages/help-and-support.js index 24bcaae876c..549d1e06aab 100644 --- a/pages/help-and-support.js +++ b/pages/help-and-support.js @@ -19,6 +19,7 @@ import StyledLink from '../components/StyledLink'; const messages = defineMessages({ pageTitle: { defaultMessage: 'Help & Support', + id: 'Uf3+S6', }, defaultTitle: { id: 'OC.helpAndSupport', diff --git a/pages/home.js b/pages/home.js index 5e26041987d..d59bdfa5000 100644 --- a/pages/home.js +++ b/pages/home.js @@ -16,10 +16,12 @@ import Page from '../components/Page'; const messages = defineMessages({ defaultTitle: { defaultMessage: 'Raise and spend money with full transparency.', + id: 'TZ9FXt', }, defaultDescription: { defaultMessage: 'Open Collective is a legal and financial toolbox for groups. It’s a fundraising + legal status + money management platform for your community. What do you want to do?', + id: 'LrBotK', }, }); diff --git a/pages/oauth/authorize.js b/pages/oauth/authorize.js index 3689143ceb4..1be7b5f33c8 100644 --- a/pages/oauth/authorize.js +++ b/pages/oauth/authorize.js @@ -73,6 +73,7 @@ const OAuthAuthorizePage = () => { @@ -80,6 +81,7 @@ const OAuthAuthorizePage = () => { diff --git a/pages/order.tsx b/pages/order.tsx index 004f58a4228..32999fcaa7a 100644 --- a/pages/order.tsx +++ b/pages/order.tsx @@ -426,7 +426,7 @@ export default function OrderPage(props) { textTransform="uppercase" closeButtonProps={undefined} > - #{order.legacyId} + #{order.legacyId} @@ -434,6 +434,7 @@ export default function OrderPage(props) {

    , account: , @@ -452,7 +453,10 @@ export default function OrderPage(props) { + } containerCursor="default" > @@ -463,7 +467,7 @@ export default function OrderPage(props) { )} {order.pendingContributionData?.expectedAt && ( - + {isOverdue ? (   - + ) : ( @@ -526,9 +530,9 @@ export default function OrderPage(props) {

    {isPending ? ( - + ) : ( - + )}

    @@ -537,14 +541,14 @@ export default function OrderPage(props) { {isPending ? ( - + - + - + - + )} {Boolean(order.platformTipAmount?.valueInCents) && ( - + , @@ -703,7 +713,7 @@ export default function OrderPage(props) { {order?.memo && (

    - +

    diff --git a/pages/redeemed.js b/pages/redeemed.js index c4d76c992d9..34accd6cf40 100644 --- a/pages/redeemed.js +++ b/pages/redeemed.js @@ -211,7 +211,7 @@ class RedeemedPage extends React.Component { - + diff --git a/pages/reset-password-completed.js b/pages/reset-password-completed.js index a7e351af296..550e44986d9 100644 --- a/pages/reset-password-completed.js +++ b/pages/reset-password-completed.js @@ -15,7 +15,7 @@ const ResetPasswordCompleted = ({ LoggedInUser, loadingLoggedInUser }) => {

    - +

    {!LoggedInUser && !loadingLoggedInUser && ( @@ -23,6 +23,7 @@ const ResetPasswordCompleted = ({ LoggedInUser, loadingLoggedInUser }) => {

    - +

    {isValidEmail && (

    {email} }} />

    diff --git a/pages/reset-password.js b/pages/reset-password.js index cf5a3d97ed9..8d3d91b8231 100644 --- a/pages/reset-password.js +++ b/pages/reset-password.js @@ -64,7 +64,10 @@ class ResetPasswordPage extends React.Component { if (passwordScore <= 1) { this.setState({ passwordError: ( - + ), showError: true, }); @@ -106,7 +109,7 @@ class ResetPasswordPage extends React.Component {

    - +

    {!this.props.data?.loggedInAccount && ( @@ -116,6 +119,7 @@ class ResetPasswordPage extends React.Component { ) : ( )} @@ -167,12 +171,13 @@ class ResetPasswordPage extends React.Component { labelFontSize="13px" alignItems="left" width="100%" - label={} + label={} htmlFor="new-password" my={2} helpText={ , + message: , }); }; @@ -325,7 +326,10 @@ class SearchPage extends React.Component { borderRadius="100px" fontSize="16px" height="58px" - placeholder={intl.formatMessage({ defaultMessage: 'Search by name, handle, tag, description...' })} + placeholder={intl.formatMessage({ + defaultMessage: 'Search by name, handle, tag, description...', + id: 'HEJLVH', + })} value={this.state.term} onChange={value => this.setState({ term: value })} onSubmit={this.refetch} @@ -352,7 +356,7 @@ class SearchPage extends React.Component { - + - + , value: 'ALL' }]} + customOptions={[ + { label: , value: 'ALL' }, + ]} onChange={country => this.changeCountry(country)} minWidth={[0, '200px']} fontSize="12px" @@ -455,29 +461,33 @@ class SearchPage extends React.Component { {accounts?.nodes?.length === 0 && (

    - +

    No Search Results - +
    • - +
    • - +
    • - + @@ -527,6 +538,7 @@ class SearchPage extends React.Component { {email} }} />

      diff --git a/pages/submitted-expenses.tsx b/pages/submitted-expenses.tsx index 4dc0829872e..62e4cbc8859 100644 --- a/pages/submitted-expenses.tsx +++ b/pages/submitted-expenses.tsx @@ -177,7 +177,7 @@ class SubmittedExpensesPage extends React.Component

      - +

      diff --git a/pages/updatePaymentMethod.js b/pages/updatePaymentMethod.js index 790ba01982e..0c2b24932c7 100644 --- a/pages/updatePaymentMethod.js +++ b/pages/updatePaymentMethod.js @@ -264,7 +264,10 @@ class UpdatePaymentPage extends React.Component { defaultMessage="Your new card info has been added" /> ) : ( - + )} diff --git a/pages/welcome.js b/pages/welcome.js index 0e333dca58c..9522f7015e8 100644 --- a/pages/welcome.js +++ b/pages/welcome.js @@ -24,7 +24,7 @@ const Welcome = () => { return ( { - + - +
      @@ -72,7 +75,10 @@ const Welcome = () => { - +
      @@ -89,7 +95,10 @@ const Welcome = () => { - + @@ -103,10 +112,13 @@ const Welcome = () => { - + - + @@ -118,11 +130,11 @@ const Welcome = () => { {LoggedInUser && ( - + )} - +