{{ breadcrumbs.length ? breadcrumbs[breadcrumbs.length - 1].label : pageTitle }}

{{ t.notifications?.title || 'Notifications' }}

{{ t.notifications?.loading || 'Loading notifications...' }}

{{ notificationsPreview.error }}

{{ t.notifications?.empty || 'No notifications.' }}

  • {{ notificationTitle(item) }}

    {{ notificationDisplayMessage(item) }}

    {{ formatDate(item.created_at) }}

{{ globalError }}

{{ t.actions.impersonationActive || 'Impersonation active' }}

{{ impersonationNoticeText }}

{{ dashboardLayoutError }}

{{ dashboardUndoHideMessage() }}

{{ t.cards.openRfqs }}

{{ dashboardOpenRfqsCount }}

{{ t.cards.pendingQuotes || 'Pending Quotes' }}

{{ dashboardPendingQuotesCount }}

{{ t.cards.totalSpend || 'Total Spend' }}

{{ dashboardShipperTotalSpend }}

{{ t.cards.totalAwardedVolumeKg || 'Total Awarded Volume (kg)' }}

{{ dashboardShipperAwardedVolumeKgDisplay }}

{{ t.cards.suppliers }}

{{ suppliers.length }}

{{ t.cards.consignees }}

{{ consignees.length }}

{{ t.sections?.transportModeSplitAwarded || 'Transport Mode Split (Awarded)' }}

{{ t.dashboardShipper?.modeSplitAwardedHint || 'Based on awarded shipments and awarded spend.' }}

{{ t.i18nCleanup.air || 'Air' }} {{ t.dashboardShipper?.modeSplitShipmentsLabel || 'Shipments' }}: {{ dashboardShipperAwardedModeSplit.air }} {{ t.dashboardShipper?.modeSplitSpendLabel || 'Spend' }}: {{ dashboardShipperAwardedModeSplitSpendDisplay.air }} {{ t.i18nCleanup.ocean || 'Ocean' }} {{ t.dashboardShipper?.modeSplitShipmentsLabel || 'Shipments' }}: {{ dashboardShipperAwardedModeSplit.ocean }} {{ t.dashboardShipper?.modeSplitSpendLabel || 'Spend' }}: {{ dashboardShipperAwardedModeSplitSpendDisplay.ocean }} {{ t.i18nCleanup.road || 'Road' }} {{ t.dashboardShipper?.modeSplitShipmentsLabel || 'Shipments' }}: {{ dashboardShipperAwardedModeSplit.road }} {{ t.dashboardShipper?.modeSplitSpendLabel || 'Spend' }}: {{ dashboardShipperAwardedModeSplitSpendDisplay.road }}

{{ t.sections?.supplierRanking || 'Supplier Ranking' }}

{{ idx + 1 }}
{{ s.name }} {{ s.won }} won / {{ s.total }} total
{{ s.winRate }}%

{{ t.sections?.topLanes || 'Top Lanes' }}

{{ lane.origin }} → {{ lane.destination }} {{ lane.count }}

{{ t.sections.dashboardOpenRfqs || 'Open RFQs' }}

{{ t.tables.rfqReference }} {{ t.tables.rfqTitle }} {{ t.tables.rfqRoute }} {{ t.tables.rfqDeadline }} {{ t.tables.rfqStatus }}
{{ row.reference_no }} {{ row.title || '-' }} {{ row.origin_name }} → {{ row.destination_name }} {{ formatDate(row.submission_deadline) }} open

{{ t.tables.noData }}

{{ t.sections.dashboardPendingQuotes || 'Pending Quotes' }}

{{ t.tables.quoteRfq }} {{ t.tables.quoteSupplier }} {{ t.tables.quoteAmount }} {{ t.tables.quoteStatus || 'Status' }}
{{ row.rfq_reference_no || row.rfq_id }} {{ row.supplier_name || '-' }} {{ row.currency_code }} {{ row.total_amount }} open

{{ t.tables.noData }}

{{ t.sections.dashboardAwardedQuotes || 'Awarded Quotes' }}

{{ t.tables.quoteRfq }} {{ t.tables.quoteSupplier }} {{ t.tables.quoteAmount }} {{ t.tables.quoteStatus || 'Status' }}
{{ row.rfq_reference_no || row.rfq_id }} {{ row.supplier_name || '-' }} {{ row.currency_code }} {{ row.total_amount }} {{ t.i18nCleanup.awarded || 'Awarded' }}

{{ t.tables.noData }}

{{ t.sections?.dashboardActiveShipments || 'Active Shipments' }}

{{ t.tables.rfqRoute || 'Route' }} {{ t.tables.supplierName || 'Supplier' }} {{ t.tables.rfqMode || 'Mode' }} {{ t.shipments?.completionLabel || 'Completion' }} {{ t.tables.templateUpdated || 'Updated' }}
{{ row.origin_name || '-' }} → {{ row.destination_name || '-' }} {{ row.supplier_name || '-' }} {{ shipmentRequestForLabel(row.request_for) }} {{ shipmentCompletionLabel(row) }} {{ formatDate(row.updated_at) }}

{{ t.tables.noData }}

{{ rfqEditId ? (t.rfqWizard?.editingRfq || 'Editing RFQ') : (t.rfqWizard?.newRfq || 'New RFQ') }}

{{ rfqEditReferenceNo }}
{{ rfqPackagingExtractionReviewNotice }}

{{ rfqFormNotice }}

{{ t.forms?.rfqPackagingExtractionCardTitle || 'Extract from document' }}

{{ t.forms?.rfqPackagingExtractionCardText || 'Upload one document and we prefill RFQ fields with confidence-based suggestions.' }}

{{ t.i18nCleanup.rfq_basics }}

{{ t.i18nCleanup.route || 'Route' }}

{{ t.i18nCleanup.schedule || 'Schedule' }}

{{ t.i18nCleanup.supplier_evaluation }}

{{ t.forms?.rfqShipmentDetailsTitle || 'Shipment Details' }}

{{ t.rfqWizard?.selectModeFirst || 'Please select a transport mode in the Basics step first.' }}

{{ t.rfqWizard?.step_documents || 'Documents & Remarks' }}

{{ t.rfqWizard?.reviewTitle || 'Review your RFQ' }}

{{ t.rfqWizard?.reviewBasicsTitle || 'Basics' }}
{{ rfqModeWithLoadTypeLabel(rfqForm.request_for, rfqForm.load_type) }} {{ rfqServiceScopeCodeLabel(rfqForm.service_scope) }} {{ rfqForm.incoterm }}
{{ t.rfqWizard?.labelTitle || 'Title' }} {{ rfqForm.title }}
{{ t.rfqWizard?.reviewConsignee || 'Consignee' }} {{ rfqWizardSelectedConsigneeName() || '-' }}
{{ t.rfqWizard?.labelCurrency || 'Base currency' }} {{ rfqForm.logic.base_currency || 'CHF' }}
{{ t.rfqWizard?.reviewRouteTitle || 'Route' }}
{{ t.i18nCleanup?.origin || 'Origin' }} {{ rfqForm.origin.name || '-' }} {{ rfqForm.origin.street }} {{ [rfqForm.origin.zip, rfqForm.origin.city].filter(Boolean).join(' ') }} {{ rfqForm.origin.country }}
{{ t.i18nCleanup?.destination || 'Destination' }} {{ rfqForm.destination.name || '-' }} {{ rfqForm.destination.street }} {{ [rfqForm.destination.zip, rfqForm.destination.city].filter(Boolean).join(' ') }} {{ rfqForm.destination.country }}
{{ t.rfqWizard?.labelIata || 'IATA' }} {{ rfqForm.origin_iata_code || '—' }} → {{ rfqForm.destination_iata_code || '—' }}
{{ t.rfqWizard?.labelPorts || 'Ports' }} {{ rfqForm.origin_port_code || '—' }} → {{ rfqForm.destination_port_code || '—' }}
{{ t.rfqWizard?.reviewScheduleTitle || 'Schedule & Suppliers' }}
{{ t.rfqWizard?.labelIncoterm || 'Incoterm' }} {{ rfqForm.incoterm || '-' }}
{{ t.i18nCleanup?.submission_deadline || 'Submission Deadline' }} {{ rfqForm.submission_deadline || '-' }}
{{ t.i18nCleanup?.loading_date || 'Loading Date' }} {{ rfqForm.loading_date || '-' }}
{{ t.i18nCleanup?.latest_delivery || 'Latest Delivery' }} {{ rfqForm.latest_delivery_date || '-' }}
{{ t.rfqWizard?.reviewSuppliers || 'Suppliers' }} {{ rfqWizardSelectedSuppliersText() }}
{{ t.rfqWizard?.reviewSelectionCriteria || 'Criteria' }} {{ rfqForm.selection_criteria.join(', ') }}
{{ t.rfqWizard?.reviewShipmentTitle || 'Shipment Details' }}
{{ t.forms?.rfqCommodityLabel || 'Commodity' }} {{ rfqForm.shipment.commodity || '-' }}
{{ t.forms?.rfqPackagingTypeLabel || 'Packaging' }} {{ rfqForm.shipment.packaging_type || '-' }}
{{ t.forms?.rfqStackableChoiceLabel || 'Stackable' }} {{ rfqForm.shipment.is_stackable ? (t.rfqWizard?.labelStackableYes || 'Yes') : (t.rfqWizard?.labelStackableNo || 'No') }}
{{ t.rfqWizard?.labelItems || 'Items' }}
{{ t.rfqWizard?.labelHsCode || 'HS Code' }} {{ rfqForm.shipment.hs_code }}
{{ t.rfqWizard?.labelTemperature || 'Temperature' }} {{ rfqForm.shipment.temperature_requirement }}
{{ t.rfqWizard?.reviewDangerousGoods || 'Dangerous Goods' }} UN {{ rfqForm.shipment.dangerous_goods.un_number }}, Class {{ rfqForm.shipment.dangerous_goods.class }}, PG {{ rfqForm.shipment.dangerous_goods.packaging_group }}
{{ t.rfqWizard?.reviewTransportTitle || 'Transport Requirements' }}
{{ t.rfqWizard?.stepSkipped || 'Skipped' }}
{{ t.rfqWizard?.labelAdrDgrImdg || 'ADR/DGR/IMDG' }} {{ t.rfqWizard?.labelYes || 'Yes' }}
{{ t.rfqWizard?.labelCustoms || 'Customs' }} {{ t.rfqWizard?.labelRequired || 'Required' }}
{{ t.rfqWizard?.reviewPharmaTitle || 'Pharma Requirements' }}
{{ t.rfqWizard?.labelLaneValidation || 'Lane validation' }} {{ rfqForm.pharma_requirements.lane_validation_required ? (t.rfqWizard?.labelYes || 'Yes') : (t.rfqWizard?.labelNo || 'No') }}
{{ t.rfqWizard?.labelGdp || 'GDP compliant' }} {{ rfqForm.pharma_requirements.gdp_compliant_required ? (t.rfqWizard?.labelYes || 'Yes') : (t.rfqWizard?.labelNo || 'No') }}
{{ t.rfqWizard?.labelCeiv || 'CEIV compliant' }} {{ rfqForm.pharma_requirements.ceiv_compliant_required ? (t.rfqWizard?.labelYes || 'Yes') : (t.rfqWizard?.labelNo || 'No') }}
{{ t.rfqWizard?.labelNonComplianceReporting || 'Non-compliance reporting' }} {{ rfqForm.pharma_requirements.non_compliance_reporting_required ? (t.rfqWizard?.labelYes || 'Yes') : (t.rfqWizard?.labelNo || 'No') }}
{{ t.rfqWizard?.labelSolutionType || 'Solution type' }} {{ rfqForm.pharma_requirements.solution_type || (t.rfqWizard?.labelNotSet || 'Not set') }}
{{ t.rfqWizard?.labelContainer || 'Container' }} {{ rfqForm.pharma_requirements.active_container_type || '-' }}
{{ t.rfqWizard?.reviewCommercialTitle || 'Commercial Rules' }}
{{ t.rfqWizard?.labelHardStop || 'Hard stop after deadline' }} {{ rfqForm.logic.hard_stop_after_deadline ? (t.rfqWizard?.labelYes || 'Yes') : (t.rfqWizard?.labelNo || 'No') }}
{{ t.rfqWizard?.labelLateQuotes || 'Allow late quotes' }} {{ rfqForm.logic.allow_late_quotes ? (t.rfqWizard?.labelYes || 'Yes') : (t.rfqWizard?.labelNo || 'No') }}
{{ t.rfqWizard?.labelAutoClose || 'Auto-close after' }} {{ rfqForm.logic.auto_close_hours }} {{ t.rfqWizard?.labelHours || 'hours' }}
{{ t.rfqWizard?.labelQuoteValidity || 'Quote validity' }} {{ rfqForm.logic.quote_validity_days || '14' }} {{ t.rfqWizard?.labelDays || 'days' }}
{{ t.rfqWizard?.labelCancellationTerms || 'Cancellation terms' }} {{ rfqForm.logic.cancellation_terms }}
{{ t.rfqWizard?.labelMessaging || 'Messaging thread' }} {{ rfqForm.logic.messaging_enabled ? (t.rfqWizard?.labelEnabled || 'Enabled') : (t.rfqWizard?.labelDisabled || 'Disabled') }}
{{ t.rfqWizard?.labelQuoteVersioning || 'Quote versioning' }} {{ rfqForm.logic.quote_versioning_enabled ? (t.rfqWizard?.labelEnabled || 'Enabled') : (t.rfqWizard?.labelDisabled || 'Disabled') }}
{{ t.rfqWizard?.labelAuditTrail || 'Audit trail' }} {{ rfqForm.logic.audit_trail_enabled ? (t.rfqWizard?.labelEnabled || 'Enabled') : (t.rfqWizard?.labelDisabled || 'Disabled') }}
{{ t.rfqWizard?.labelTimestampLock || 'Timestamp lock after award' }} {{ rfqForm.logic.timestamp_lock_after_award ? (t.rfqWizard?.labelEnabled || 'Enabled') : (t.rfqWizard?.labelDisabled || 'Disabled') }}
{{ t.rfqWizard?.labelFxDate || 'FX snapshot date' }} {{ rfqForm.logic.fx_rate_snapshot_date }}
{{ t.rfqWizard?.labelFxSource || 'FX source' }} {{ rfqForm.logic.fx_rate_source }}
{{ t.rfqWizard?.labelChargeBreakdown || 'Charge breakdown' }} {{ rfqForm.logic.charge_breakdown_mode || 'itemized' }}
{{ t.rfqWizard?.labelChargeRequirements || 'Charge requirements' }} {{ rfqForm.charge_requirements.join(', ') }}
{{ t.rfqWizard?.reviewDocumentsTitle || 'Documents & Remarks' }}
{{ t.rfqWizard?.reviewSupportingDocs || 'Documents' }} {{ doc.original_name || 'Document' }} {{ doc.original_name || 'Document' }} {{ doc.original_name || 'Document' }}
{{ t.i18nCleanup?.msds_attachment || 'MSDS' }} {{ rfqForm.shipment.dangerous_goods.msds_attachment_name || 'MSDS' }} {{ rfqForm.shipment.dangerous_goods.msds_attachment_name || 'MSDS' }} {{ rfqForm.shipment.dangerous_goods.msds_attachment_name || 'MSDS' }}
{{ t.i18nCleanup?.dgd_attachment || 'DGD' }} {{ rfqForm.shipment.dangerous_goods.dgd_attachment_name || 'DGD' }} {{ rfqForm.shipment.dangerous_goods.dgd_attachment_name || 'DGD' }} {{ rfqForm.shipment.dangerous_goods.dgd_attachment_name || 'DGD' }}
{{ t.rfqWizard?.labelRemarks || 'Remarks' }} {{ rfqForm.shipment.remarks }}
{{ t.rfqWizard?.noDocumentsAdded || 'No documents or remarks added.' }}

{{ t.rfqWizard?.reviewHasErrors || 'Some steps have validation errors. Please fix them before submitting.' }}

{{ rfqFormError }}

{{ tr('tables.sectionTitleRfqs', 'RFQ Overview') }}

{{ tableFilterStatusLabel(filteredRfqs.length, (dashboard.recent_rfqs || []).length) }}
{{ t.filters?.filter || 'Filter' }} {{ rfqsActiveFilterCount() }}
{{ t.filters?.visibleColumns || 'Visible columns' }} {{ rfqsVisibleColumnCount() }}/{{ rfqsColumnTotalCount() }}
{{ t.tables.rfqReference }} {{ t.tables.rfqTitle }} {{ t.tables.rfqMode }} {{ t.tables.rfqRoute }} {{ t.tables.rfqStatus }} {{ t.tables.rfqDeadline }} {{ t.tables.actions }}
{{ row.reference_no }} {{ row.title || '-' }} {{ rfqModeWithLoadTypeLabel(row.request_for, row.load_type) }} {{ row.origin_name }} → {{ row.destination_name }} {{ rfqDisplayStatusValue(row) }} {{ formatDate(row.submission_deadline) }}

{{ t.tables.noData }}

{{ t.i18nCleanup.loading_rfq_details }}

{{ rfqDetailView.error }}

{{ tr('tables.sectionTitleRfqQuotes', 'RFQ Quotes') }}

{{ tableFilterStatusLabel(filteredRfqQuotesViewItems.length, (rfqQuotesView && rfqQuotesView.items || []).length) }}
{{ t.filters?.filter || 'Filter' }} {{ rfqQuotesActiveFilterCount() }}
{{ t.filters?.visibleColumns || 'Visible columns' }} {{ rfqQuoteVisibleColumnCount() }}/{{ rfqQuoteColumnTotalCount() }}

{{ t.i18nCleanup.loading_quotes }}

{{ rfqQuotesView.error }}

{{ t.rfqRanking?.tableRank || 'Rank' }} {{ t.tables.quoteSupplier || 'Supplier' }} {{ t.tables.quoteVersion || 'Version' }} {{ t.i18nCleanup.status }} {{ t.tables.rfqMode || 'Mode' }} {{ t.i18nCleanup.currency }} {{ t.tables.quoteAmount || 'Amount' }} {{ t.tables.quoteTransit || 'Transit' }} {{ t.i18nCleanup.direct }} {{ t.i18nCleanup.late_quote }} {{ t.i18nCleanup.locked }} {{ t.i18nCleanup.locked_at }} {{ t.i18nCleanup.fx_rate_to_base }} {{ t.i18nCleanup.fx_snapshot_date }} {{ t.i18nCleanup.revision_note }} {{ t.i18nCleanup.charge_lines }} {{ t.i18nCleanup.attachments }} {{ t.i18nCleanup.created_at }} {{ t.i18nCleanup.updated_at }} {{ t.i18nCleanup.actions }}
{{ rfqQuotesPodiumByQuoteId[row.id].rank }} - {{ row.supplier_name }} {{ row.version_no }} {{ quoteStatusText(normalizeQuoteDecisionStatus(row.decision_status || 'open')) }} {{ rfqQuoteTransportModeLabel(row) }} {{ row.currency_code }} {{ row.total_amount }} {{ row.transit_time_days }} d {{ yesNoLabel(row.is_direct_transit) }} {{ yesNoLabel(row.is_late) }} {{ yesNoLabel(row.is_locked) }} {{ formatDate(row.locked_at) }} {{ row.fx_rate_to_base === null ? '-' : row.fx_rate_to_base }} {{ row.fx_snapshot_date || '-' }} {{ row.revision_note || '-' }} {{ formatRfqQuoteChargeLines(row.charge_lines) }} - {{ formatDate(row.created_at) }} {{ formatDate(row.updated_at) }}

{{ t.i18nCleanup.no_quotes_received_for_this_rfq_yet }}

{{ tr('tables.sectionTitleSuppliers', 'Suppliers') }}

{{ tableFilterStatusLabel(filteredSuppliers.length, (suppliers || []).length) }}
{{ t.filters?.filter || 'Filter' }} {{ suppliersActiveFilterCount() }}
{{ t.filters?.visibleColumns || 'Visible columns' }} {{ suppliersVisibleColumnCount() }}/{{ suppliersColumnTotalCount() }}
{{ t.tables.supplierName }} {{ t.tables.supplierCategory }} {{ t.tables.supplierStreet2 || (t.forms?.additionalAddressLineLabel || 'Additional address line') }} {{ t.tables.supplierCity }} {{ t.tables.supplierCountry }} {{ t.actions.contactName }} {{ t.actions.contactMail }} {{ t.tables.supplierScorePoints || 'Score Points' }} {{ t.tables.actions }}
{{ row.company_name }} {{ row.category }} {{ row.street_2 || '-' }} {{ row.city }} {{ row.country }} {{ row.contact_name || '-' }} {{ row.contact_mail || '-' }}

{{ t.tables.noData }}

{{ tr('tables.sectionTitleQuotes', 'Quotes') }}

{{ tableFilterStatusLabel(filteredQuotes.length, (dashboard.recent_quotes || []).length) }}
{{ t.filters?.filter || 'Filter' }} {{ quotesActiveFilterCount() }}
{{ t.filters?.visibleColumns || 'Visible columns' }} {{ quotesListVisibleColumnCount() }}/{{ quotesListColumnTotalCount() }}
{{ t.tables.quoteRfq }} {{ t.tables.quoteSupplier }} {{ t.tables.quoteVersion }} {{ t.tables.quoteStatus || 'Status' }} {{ t.tables.quoteAmount }} {{ t.tables.quoteTransit }} {{ t.tables.actions }}
{{ row.rfq_reference_no || row.rfq_id }} {{ row.supplier_name }} {{ row.version_no ?? '-' }} {{ quoteStatusText(quoteDisplayStatusValue(row)) }} {{ row.total_amount != null ? `${row.currency_code || ''} ${row.total_amount}`.trim() : '-' }} {{ row.transit_time_days != null ? `${row.transit_time_days} d` : '-' }}

{{ t.tables.noData }}

{{ tr('tables.sectionTitleShipments', 'Shipments') }}

{{ tableFilterStatusLabel(filteredShipments.length, (shipments || []).length) }}
{{ t.filters?.filter || 'Filter' }} {{ shipmentsActiveFilterCount() }}
{{ t.filters?.visibleColumns || 'Visible columns' }} {{ shipmentsVisibleColumnCount() }}/{{ shipmentsColumnTotalCount() }}
{{ t.tables.shipmentRfqReference || 'RFQ Reference' }} {{ t.tables.supplierName || 'Supplier' }} {{ t.tables.rfqMode || 'Mode' }} {{ t.forms?.rfqServiceScope || 'Service Scope' }} {{ t.tables.quoteStatus || 'Status' }} {{ t.shipments?.completionLabel || 'Completion' }} {{ t.tables.templateUpdated || 'Updated' }} {{ t.tables.actions }}
{{ row.rfq_reference_no || row.rfq_id || '-' }} {{ row.supplier_name || '-' }} {{ shipmentRequestForLabel(row.request_for) }} {{ shipmentServiceScopeLabel(row.service_scope) }} {{ shipmentStatusFilterLabel(row.status) }} {{ shipmentCompletionLabel(row) }} {{ formatDate(row.updated_at) }}

{{ t.tables.noData }}

{{ t.shipments?.loadingDetail || 'Loading shipment details...' }}

{{ shipmentDetailView.error }}

{{ t.i18nCleanup.loading_quote_details }}

{{ quoteDetailView.error }}

{{ tr('tables.sectionTitleConsignees', 'Consignees') }}

{{ tableFilterStatusLabel(filteredConsignees.length, (consignees || []).length) }}
{{ t.filters?.filter || 'Filter' }} {{ consigneesActiveFilterCount() }}
{{ t.filters?.visibleColumns || 'Visible columns' }} {{ consigneesVisibleColumnCount() }}/{{ consigneesColumnTotalCount() }}
{{ t.tables.consigneeName || 'Name' }} {{ t.tables.consigneeStreet || 'Street' }} {{ t.tables.consigneeStreet2 || (t.forms?.additionalAddressLineLabel || 'Additional address line') }} {{ t.tables.consigneeZip || 'ZIP' }} {{ t.tables.consigneeCity || 'City' }} {{ t.tables.consigneeCountry || 'Country' }} {{ t.tables.actions }}
{{ row.name }} {{ row.street }} {{ row.street_2 || '-' }} {{ row.zip }} {{ row.city }} {{ row.country }}

{{ t.tables.noData }}

{{ t.menu?.companySettings || "Company Settings" }}

{{ t.companySettings?.loading || "Loading company settings..." }}

{{ companySettings.error }}

{{ tr('tables.sectionTitleBilling', 'Billing') }}

{{ tableFilterStatusLabel(billingFilteredOverviewChanges().length, billingOverviewChanges().length) }}
{{ t.filters?.filter || 'Filter' }} {{ billingChangesActiveFilterCount() }}
{{ t.filters?.visibleColumns }} {{ billingChangesVisibleColumnCount() }}/{{ billingChangesColumnTotalCount() }}

{{ subscriptionGateNotice }}

{{ billingSubscription.error }}

{{ t.billing?.loadingOverview }}

{{ tr('tables.sectionTitleUsers', 'User Management') }}

{{ tableFilterStatusLabel(filteredUsers.length, (users || []).length) }}
{{ t.filters?.filter || 'Filter' }} {{ usersActiveFilterCount() }}
{{ t.filters?.visibleColumns || 'Visible columns' }} {{ usersVisibleColumnCount() }}/{{ usersColumnTotalCount() }}
{{ t.tables.userFirstName || 'First Name' }} {{ t.tables.userLastName || 'Last Name' }} {{ t.tables.userEmail }} {{ t.tables.userRoles }} {{ t.tables.userCompany || 'Company' }} {{ t.tables.userTwoFactor || '2FA' }} {{ t.tables.userStatus || 'Status' }} {{ t.tables.userLastLogin || 'Last Login' }} {{ t.tables.actions }}
{{ row.first_name || '-' }} {{ row.last_name || '-' }} {{ row.email }} {{ roleBadges(row.roles) }} {{ row.shipper_name || row.supplier_name || '-' }} {{ twoFactorMethodLabel(row) }} {{ userStatusLabel(row) }} {{ formatDate(row.last_login_at) }}

{{ t.tables.noData }}

{{ t.forms?.rfqPackagingAiOverlayTitle || 'AI analysis in progress' }}

{{ rfqPackagingAiOverlayMessage || (t.forms?.rfqPackagingExtractionLoading || 'Extracting...') }}

{{ t.actions.processing || 'Processing...' }}

{{ t.actions.success || 'Success' }}

{{ rfqSubmitSuccessMessage }}