@mx-cartographer/experiences 9.3.8-alpha.al1 → 9.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -3
- package/dist/accounts/components/AccountListItem.es.js +4 -4
- package/dist/accounts/components/AccountsListCompact.es.js +15 -15
- package/dist/accounts/components/detailsdrawer/Accounts/AccountActions.es.js +6 -6
- package/dist/accounts/components/detailsdrawer/Accounts/AccountConnection.es.js +6 -6
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetails.es.js +11 -11
- package/dist/accounts/components/detailsdrawer/Accounts/AccountDetailsContent.es.js +6 -6
- package/dist/accounts/components/detailsdrawer/Accounts/ConnectionErrorMessage.es.js +7 -7
- package/dist/accounts/components/detailsdrawer/Transactions/TransactionsTab.es.js +4 -4
- package/dist/budgets/components/BudgetDetailsDrawer.es.js +95 -134
- package/dist/budgets/components/BudgetDetailsDrawer.es.js.map +1 -1
- package/dist/budgets/components/BudgetsEmptyState.es.js +7 -7
- package/dist/budgets/components/budgetdetails/AddSubBudget.es.js +56 -57
- package/dist/budgets/components/budgetdetails/AddSubBudget.es.js.map +1 -1
- package/dist/budgets/components/budgetdetails/SubBudgetList.es.js +34 -35
- package/dist/budgets/components/budgetdetails/SubBudgetList.es.js.map +1 -1
- package/dist/budgets/components/shared/BudgetAmount.d.ts +3 -7
- package/dist/budgets/components/shared/BudgetAmount.es.js +19 -40
- package/dist/budgets/components/shared/BudgetAmount.es.js.map +1 -1
- package/dist/cashflow/CashflowOnboarding.es.js +13 -13
- package/dist/cashflow/components/CashflowHeading.es.js +4 -4
- package/dist/cashflow/components/DetailsExpenseHeader.es.js +4 -4
- package/dist/common/components/DataRow.es.js +6 -6
- package/dist/common/components/MiniWidgetContainer.es.js +9 -9
- package/dist/common/components/charts/linechart/CustomLine.es.js +2 -2
- package/dist/common/components/charts/linechart/CustomMark.es.js +2 -2
- package/dist/common/context/hooks.d.ts +1 -0
- package/dist/common/context/hooks.es.js +12 -11
- package/dist/common/context/hooks.es.js.map +1 -1
- package/dist/common/context/index.d.ts +1 -1
- package/dist/common/index.es.js +116 -115
- package/dist/core/index.es.js +27 -25
- package/dist/core/stores/BudgetsStore.es.js +21 -28
- package/dist/core/stores/BudgetsStore.es.js.map +1 -1
- package/dist/core/stores/GlobalStore.d.ts +2 -1
- package/dist/core/stores/GlobalStore.es.js +11 -9
- package/dist/core/stores/GlobalStore.es.js.map +1 -1
- package/dist/core/stores/InsightsV2Store.d.ts +24 -0
- package/dist/core/stores/InsightsV2Store.es.js +41 -0
- package/dist/core/stores/InsightsV2Store.es.js.map +1 -0
- package/dist/core/stores/index.d.ts +2 -0
- package/dist/core/types/Beat.d.ts +2 -0
- package/dist/core/types/Beat.es.js.map +1 -1
- package/dist/core/types/Insights.d.ts +90 -0
- package/dist/core/types/InsightsInstanceSlotData.d.ts +93 -0
- package/dist/core/types/InsightsInstanceSlotData.es.js +8 -0
- package/dist/core/types/InsightsInstanceSlotData.es.js.map +1 -0
- package/dist/core/types/index.d.ts +1 -0
- package/dist/core/utils/BudgetUtil.es.js +50 -56
- package/dist/core/utils/BudgetUtil.es.js.map +1 -1
- package/dist/debts/DebtsWidget.es.js +5 -5
- package/dist/debts/components/debtsdrawer/DebtDetailsContent.es.js +3 -3
- package/dist/debts/components/debtsdrawer/DebtDetailsTab.es.js +6 -6
- package/dist/debts/components/debtsdrawer/DebtScheduleTab.es.js +8 -8
- package/dist/finstrong/components/HaveManageableDebt/HaveManageableDebtComponent.es.js +2 -2
- package/dist/finstrong/components/KeyIndicatorsTabItem.es.js +8 -8
- package/dist/finstrong/components/SaveEnoughToLiveOn/SaveEnoughToLiveOnDrawerContent.es.js +5 -5
- package/dist/finstrong/components/shared/Accounts.es.js +24 -24
- package/dist/finstrong/components/shared/ScoreHistoryTimeline.es.js +2 -2
- package/dist/finstrong/components/shared/Transactions.es.js +28 -28
- package/dist/finstrong/util/finstrongUtils.d.ts +1 -1
- package/dist/goals/GoalsWidget.es.js +12 -12
- package/dist/insights/components/insights/CustomTransaction/CustomTransaction.es.js +13 -13
- package/dist/insights/components/insights/UserFeedback/UserFeedback.es.js +14 -14
- package/dist/insights/components/shared/DeepLinks/DirectDeposit/DirectDepositDeepLink.es.js +2 -2
- package/dist/insights/components/shared/DirectDeposit/DirectDepositSubHeader.es.js +9 -9
- package/dist/insights/components/shared/InsightsCard/BeatCard.es.js +4 -4
- package/dist/insights/components/shared/InsightsCard/BeatCardMUI.es.js +4 -4
- package/dist/insights/components/shared/InsightsCard/ContentAndDescription.es.js +2 -2
- package/dist/insights/components/shared/InsightsCard/ContentAndDescriptionMUI.es.js +2 -2
- package/dist/insights/components/shared/MenuAction.es.js +16 -16
- package/dist/insights-v2/CommonUtils.d.ts +1 -0
- package/dist/insights-v2/CommonUtils.es.js +7 -0
- package/dist/insights-v2/CommonUtils.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/BarchartBlock.d.ts +3 -0
- package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/BarchartBlock.es.js +28 -0
- package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/BarchartBlock.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/index.d.ts +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/layout.d.ts +9 -0
- package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/layout.es.js +9 -0
- package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/layout.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/utils.d.ts +18 -0
- package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/utils.es.js +34 -0
- package/dist/insights-v2/blocks/ChartBlocks/BarchartBlock/utils.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/DonutChart.d.ts +13 -0
- package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/DonutChart.es.js +87 -0
- package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/DonutChart.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/DonutChartBlock.d.ts +4 -0
- package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/DonutChartBlock.es.js +23 -0
- package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/DonutChartBlock.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/index.d.ts +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/layout.d.ts +19 -0
- package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/layout.es.js +15 -0
- package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/layout.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/utils.d.ts +3 -0
- package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/utils.es.js +11 -0
- package/dist/insights-v2/blocks/ChartBlocks/DonutChartBlock/utils.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/ChartLegend.d.ts +7 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/ChartLegend.es.js +48 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/ChartLegend.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/CustomDoubleBar.d.ts +18 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/CustomDoubleBar.es.js +45 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/CustomDoubleBar.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/DoubleBarChart.d.ts +2 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/DoubleBarChart.es.js +125 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/DoubleBarChart.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/index.d.ts +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/layout.d.ts +8 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/layout.es.js +10 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleBarChartBlock/layout.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleProgressBarBlock/DoubleProgressBarBlock.d.ts +4 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleProgressBarBlock/DoubleProgressBarBlock.es.js +28 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleProgressBarBlock/DoubleProgressBarBlock.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleProgressBarBlock/ProgressBar.d.ts +8 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleProgressBarBlock/ProgressBar.es.js +44 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleProgressBarBlock/ProgressBar.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/DoubleProgressBarBlock/index.d.ts +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/StepChartBlock.d.ts +4 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/StepChartBlock.es.js +15 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/StepChartBlock.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/index.d.ts +9 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/index.es.js +13 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/index.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/utils.d.ts +19 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/utils.es.js +27 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/utils.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/variants/WithText.d.ts +5 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/variants/WithText.es.js +78 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/variants/WithText.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/variants/WithoutText.d.ts +5 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/variants/WithoutText.es.js +81 -0
- package/dist/insights-v2/blocks/ChartBlocks/StepChartBlock/variants/WithoutText.es.js.map +1 -0
- package/dist/insights-v2/blocks/ChartBlocks/index.d.ts +5 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountBlock/AccountBlock.d.ts +4 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountBlock/AccountBlock.es.js +200 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountBlock/AccountBlock.es.js.map +1 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountBlock/HeaderComponent.d.ts +5 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountBlock/HeaderComponent.es.js +26 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountBlock/HeaderComponent.es.js.map +1 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountBlock/IconComponent.d.ts +7 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountBlock/IconComponent.es.js +64 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountBlock/IconComponent.es.js.map +1 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountBlock/index.d.ts +1 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountBlock/layout.d.ts +32 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountBlock/layout.es.js +100 -0
- package/dist/insights-v2/blocks/ComponentBlocks/AccountBlock/layout.es.js.map +1 -0
- package/dist/insights-v2/blocks/ComponentBlocks/ActionBlock/ActionBlockLayer.d.ts +8 -0
- package/dist/insights-v2/blocks/ComponentBlocks/ActionBlock/ActionBlockLayer.es.js +41 -0
- package/dist/insights-v2/blocks/ComponentBlocks/ActionBlock/ActionBlockLayer.es.js.map +1 -0
- package/dist/insights-v2/blocks/ComponentBlocks/ActionBlock/PlaceholderActionBlock.d.ts +4 -0
- package/dist/insights-v2/blocks/ComponentBlocks/ActionBlock/PlaceholderActionBlock.es.js +32 -0
- package/dist/insights-v2/blocks/ComponentBlocks/ActionBlock/PlaceholderActionBlock.es.js.map +1 -0
- package/dist/insights-v2/blocks/ComponentBlocks/BudgetBlock/BudgetBlock.d.ts +3 -0
- package/dist/insights-v2/blocks/ComponentBlocks/BudgetBlock/BudgetBlock.es.js +50 -0
- package/dist/insights-v2/blocks/ComponentBlocks/BudgetBlock/BudgetBlock.es.js.map +1 -0
- package/dist/insights-v2/blocks/ComponentBlocks/BudgetBlock/index.d.ts +1 -0
- package/dist/insights-v2/blocks/ComponentBlocks/BudgetBlock/util.d.ts +7 -0
- package/dist/insights-v2/blocks/ComponentBlocks/BudgetBlock/util.es.js +12 -0
- package/dist/insights-v2/blocks/ComponentBlocks/BudgetBlock/util.es.js.map +1 -0
- package/dist/insights-v2/blocks/ComponentBlocks/index.d.ts +2 -0
- package/dist/insights-v2/blocks/ImageBlocks/ImageBlock.d.ts +4 -0
- package/dist/insights-v2/blocks/ImageBlocks/ImageBlock.es.js +35 -0
- package/dist/insights-v2/blocks/ImageBlocks/ImageBlock.es.js.map +1 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/SVGImageBlock.d.ts +3 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/SVGImageBlock.es.js +20 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/SVGImageBlock.es.js.map +1 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/images/DesignateEmergencySavingsAccount.es.js +296 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/images/DesignateEmergencySavingsAccount.es.js.map +1 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/images/FederalBankHoliday.es.js +449 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/images/FederalBankHoliday.es.js.map +1 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/images/FederalBankHolidayCibc.es.js +89 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/images/FederalBankHolidayCibc.es.js.map +1 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/images/UpcomingTaxDeadlineAlert.es.js +235 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/images/UpcomingTaxDeadlineAlert.es.js.map +1 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/images/UpcomingTaxDeadlineAlertCIBC.es.js +57 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/images/UpcomingTaxDeadlineAlertCIBC.es.js.map +1 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/index.d.ts +1 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/layout.d.ts +7 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/layout.es.js +15 -0
- package/dist/insights-v2/blocks/ImageBlocks/SVGImageBlock/layout.es.js.map +1 -0
- package/dist/insights-v2/blocks/ImageBlocks/index.d.ts +2 -0
- package/dist/insights-v2/blocks/index.d.ts +4 -0
- package/dist/insights-v2/blocks/types.d.ts +8 -0
- package/dist/insights-v2/components/AccountHeroCard.d.ts +35 -0
- package/dist/insights-v2/components/AccountHeroCard.es.js +91 -0
- package/dist/insights-v2/components/AccountHeroCard.es.js.map +1 -0
- package/dist/insights-v2/components/AmountPill.d.ts +16 -0
- package/dist/insights-v2/components/AmountPill.es.js +25 -0
- package/dist/insights-v2/components/AmountPill.es.js.map +1 -0
- package/dist/insights-v2/components/BaseLayout.d.ts +6 -0
- package/dist/insights-v2/components/BaseLayout.es.js +77 -0
- package/dist/insights-v2/components/BaseLayout.es.js.map +1 -0
- package/dist/insights-v2/components/ComponentBlocks/DepositLogo.d.ts +22 -0
- package/dist/insights-v2/components/ComponentBlocks/DepositLogo.es.js +33 -0
- package/dist/insights-v2/components/ComponentBlocks/DepositLogo.es.js.map +1 -0
- package/dist/insights-v2/components/ComponentBlocks/StatusIndicator.d.ts +14 -0
- package/dist/insights-v2/components/ComponentBlocks/StatusIndicator.es.js +65 -0
- package/dist/insights-v2/components/ComponentBlocks/StatusIndicator.es.js.map +1 -0
- package/dist/insights-v2/components/DesignateEmergencySavingsCard.d.ts +33 -0
- package/dist/insights-v2/components/DesignateEmergencySavingsCard.es.js +78 -0
- package/dist/insights-v2/components/DesignateEmergencySavingsCard.es.js.map +1 -0
- package/dist/insights-v2/components/Footer.d.ts +9 -0
- package/dist/insights-v2/components/Footer.es.js +25 -0
- package/dist/insights-v2/components/Footer.es.js.map +1 -0
- package/dist/insights-v2/components/Header.d.ts +8 -0
- package/dist/insights-v2/components/Header.es.js +41 -0
- package/dist/insights-v2/components/Header.es.js.map +1 -0
- package/dist/insights-v2/components/InsightTransactionRow.d.ts +23 -0
- package/dist/insights-v2/components/InsightTransactionRow.es.js +52 -0
- package/dist/insights-v2/components/InsightTransactionRow.es.js.map +1 -0
- package/dist/insights-v2/components/LogoClusterCard.d.ts +40 -0
- package/dist/insights-v2/components/LogoClusterCard.es.js +104 -0
- package/dist/insights-v2/components/LogoClusterCard.es.js.map +1 -0
- package/dist/insights-v2/components/LogoTile.d.ts +31 -0
- package/dist/insights-v2/components/LogoTile.es.js +34 -0
- package/dist/insights-v2/components/LogoTile.es.js.map +1 -0
- package/dist/insights-v2/components/MerchantHighlightCard.d.ts +34 -0
- package/dist/insights-v2/components/MerchantHighlightCard.es.js +64 -0
- package/dist/insights-v2/components/MerchantHighlightCard.es.js.map +1 -0
- package/dist/insights-v2/components/P2PLogoStack.d.ts +32 -0
- package/dist/insights-v2/components/P2PLogoStack.es.js +55 -0
- package/dist/insights-v2/components/P2PLogoStack.es.js.map +1 -0
- package/dist/insights-v2/components/SaveAnExtraCard.d.ts +27 -0
- package/dist/insights-v2/components/SaveAnExtraCard.es.js +57 -0
- package/dist/insights-v2/components/SaveAnExtraCard.es.js.map +1 -0
- package/dist/insights-v2/components/SavingsOpportunityCard.d.ts +18 -0
- package/dist/insights-v2/components/SavingsOpportunityCard.es.js +71 -0
- package/dist/insights-v2/components/SavingsOpportunityCard.es.js.map +1 -0
- package/dist/insights-v2/components/StatusMessageCard.d.ts +28 -0
- package/dist/insights-v2/components/StatusMessageCard.es.js +45 -0
- package/dist/insights-v2/components/StatusMessageCard.es.js.map +1 -0
- package/dist/insights-v2/components/StatusPill.d.ts +26 -0
- package/dist/insights-v2/components/StatusPill.es.js +30 -0
- package/dist/insights-v2/components/StatusPill.es.js.map +1 -0
- package/dist/insights-v2/components/SubHeader.d.ts +6 -0
- package/dist/insights-v2/components/SubHeader.es.js +40 -0
- package/dist/insights-v2/components/SubHeader.es.js.map +1 -0
- package/dist/insights-v2/components/SubscriptionHeroCard.d.ts +27 -0
- package/dist/insights-v2/components/SubscriptionHeroCard.es.js +63 -0
- package/dist/insights-v2/components/SubscriptionHeroCard.es.js.map +1 -0
- package/dist/insights-v2/components/TransactionListCard.d.ts +45 -0
- package/dist/insights-v2/components/TransactionListCard.es.js +118 -0
- package/dist/insights-v2/components/TransactionListCard.es.js.map +1 -0
- package/dist/insights-v2/components/TransferLogoCard.d.ts +44 -0
- package/dist/insights-v2/components/TransferLogoCard.es.js +121 -0
- package/dist/insights-v2/components/TransferLogoCard.es.js.map +1 -0
- package/dist/insights-v2/components/UpcomingBillCard.d.ts +41 -0
- package/dist/insights-v2/components/UpcomingBillCard.es.js +99 -0
- package/dist/insights-v2/components/UpcomingBillCard.es.js.map +1 -0
- package/dist/insights-v2/components/celebrationGradients.d.ts +19 -0
- package/dist/insights-v2/components/celebrationGradients.es.js +7 -0
- package/dist/insights-v2/components/celebrationGradients.es.js.map +1 -0
- package/dist/insights-v2/components/chartblocks/BarchartV2.d.ts +2 -0
- package/dist/insights-v2/components/chartblocks/BarchartV2.es.js +148 -0
- package/dist/insights-v2/components/chartblocks/BarchartV2.es.js.map +1 -0
- package/dist/insights-v2/components/chartblocks/EmptyBarChart.d.ts +1 -0
- package/dist/insights-v2/components/chartblocks/EmptyBarChart.es.js +14 -0
- package/dist/insights-v2/components/chartblocks/EmptyBarChart.es.js.map +1 -0
- package/dist/insights-v2/components/chartblocks/ThemedSVGImage.d.ts +2 -0
- package/dist/insights-v2/components/chartblocks/ThemedSVGImage.es.js +49 -0
- package/dist/insights-v2/components/chartblocks/ThemedSVGImage.es.js.map +1 -0
- package/dist/insights-v2/components/logoShadow.d.ts +26 -0
- package/dist/insights-v2/components/logoShadow.es.js +12 -0
- package/dist/insights-v2/components/logoShadow.es.js.map +1 -0
- package/dist/insights-v2/components/shared/Confetti.d.ts +15 -0
- package/dist/insights-v2/components/shared/Confetti.es.js +33 -0
- package/dist/insights-v2/components/shared/Confetti.es.js.map +1 -0
- package/dist/insights-v2/components/shared/images/DesignateEmergencySavings.es.js +338 -0
- package/dist/insights-v2/components/shared/images/DesignateEmergencySavings.es.js.map +1 -0
- package/dist/insights-v2/components/shared/images/PaidOffCard.es.js +85 -0
- package/dist/insights-v2/components/shared/images/PaidOffCard.es.js.map +1 -0
- package/dist/insights-v2/components/shared/images/SavingsAccountDeposit.es.js +124 -0
- package/dist/insights-v2/components/shared/images/SavingsAccountDeposit.es.js.map +1 -0
- package/dist/insights-v2/components/shared/images/SavingsOpportunityLeft.es.js +104 -0
- package/dist/insights-v2/components/shared/images/SavingsOpportunityLeft.es.js.map +1 -0
- package/dist/insights-v2/components/shared/images/SavingsOpportunityLeftDark.es.js +104 -0
- package/dist/insights-v2/components/shared/images/SavingsOpportunityLeftDark.es.js.map +1 -0
- package/dist/insights-v2/components/shared/images/SavingsOpportunityPerforation.es.js +38 -0
- package/dist/insights-v2/components/shared/images/SavingsOpportunityPerforation.es.js.map +1 -0
- package/dist/insights-v2/components/statusTokens.d.ts +12 -0
- package/dist/insights-v2/components/statusTokens.es.js +10 -0
- package/dist/insights-v2/components/statusTokens.es.js.map +1 -0
- package/dist/insights-v2/hooks/useContainerDimensions.d.ts +5 -0
- package/dist/insights-v2/hooks/useContainerDimensions.es.js +26 -0
- package/dist/insights-v2/hooks/useContainerDimensions.es.js.map +1 -0
- package/dist/insights-v2/index.d.ts +18 -0
- package/dist/insights-v2/index.es.js +55 -0
- package/dist/insights-v2/mappings/blocks.d.ts +14 -0
- package/dist/insights-v2/mappings/blocks.es.js +32 -0
- package/dist/insights-v2/mappings/blocks.es.js.map +1 -0
- package/dist/investments/InvestmentsWidget.es.js +10 -10
- package/dist/investments/components/AnalysisDetails.es.js +4 -4
- package/dist/investments/components/allocation/InvestementAllocationList.es.js +27 -27
- package/dist/microinsights/MicroCardTemplate.es.js +4 -4
- package/dist/microinsights/carousel/BeatList.es.js +9 -9
- package/dist/networth/NetWorthWidget.es.js +6 -6
- package/dist/networth/components/AssetsLiabilitiesDetail.es.js +2 -2
- package/dist/networth/components/GainsLossesDetail.es.js +13 -13
- package/dist/notifications/components/NotificationDrawer.es.js +5 -5
- package/dist/notifications/components/NotificationList.es.js +13 -13
- package/dist/recurringtransactions/components/MicroWidgetContent.es.js +13 -13
- package/dist/recurringtransactions/components/RecurrenceRow.es.js +6 -6
- package/dist/recurringtransactions/components/RecurringStatus.es.js +4 -4
- package/dist/recurringtransactions/components/RecurringTransactionDetails.es.js +19 -19
- package/dist/recurringtransactions/components/actions/PaymentScheduleAction.es.js +9 -9
- package/dist/recurringtransactions/components/recurrencecalendar/RecurrenceDay.es.js +5 -5
- package/dist/recurringtransactions/components/shared/recurringsettings/AddRecurringTransaction.es.js +25 -25
- package/dist/recurringtransactions/components/shared/recurringsettings/ManageIncome.es.js +5 -5
- package/dist/settings/components/notifications/NotificationSettings.es.js +12 -12
- package/dist/settings/components/profile/ProfileTab.es.js +20 -20
- package/dist/trends/TrendsWidget.es.js +25 -25
- package/package.json +1 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { getLogoElevation as R } from "./logoShadow.es.js";
|
|
2
|
+
import S from "./LogoTile.es.js";
|
|
3
|
+
import n from "@mui/material/Stack";
|
|
4
|
+
import { jsx as o, jsxs as y } from "react/jsx-runtime";
|
|
5
|
+
import s from "@mui/material/Box";
|
|
6
|
+
import E from "@mui/material/Badge";
|
|
7
|
+
var A = (r) => `Rank ${r}`, l = [
|
|
8
|
+
"flex-start",
|
|
9
|
+
"center",
|
|
10
|
+
"flex-end"
|
|
11
|
+
], G = 20, g = [
|
|
12
|
+
10,
|
|
13
|
+
25,
|
|
14
|
+
43
|
|
15
|
+
], _ = 122, a = {
|
|
16
|
+
x: 10,
|
|
17
|
+
y: 8
|
|
18
|
+
}, T = { "& .MuiBadge-badge": {
|
|
19
|
+
bgcolor: "common.black",
|
|
20
|
+
border: "1px solid",
|
|
21
|
+
borderColor: "common.white",
|
|
22
|
+
borderRadius: "999px",
|
|
23
|
+
boxShadow: (r) => R(r),
|
|
24
|
+
color: "common.white",
|
|
25
|
+
fontSize: (r) => r.typography.body2.fontSize,
|
|
26
|
+
fontWeight: (r) => r.typography.fontWeightRegular,
|
|
27
|
+
height: 24,
|
|
28
|
+
minWidth: 24,
|
|
29
|
+
padding: 0,
|
|
30
|
+
transform: `translate(-${a.x}px, -${a.y}px)`
|
|
31
|
+
} }, O = ({ background: r, footer: d, logoSize: i = 72, logos: c, ranked: e = !1, rankLabel: x = A, stagger: h = !0, sx: m }) => {
|
|
32
|
+
const f = h ? (l.length - 1) * G : 0, b = e ? _ : i + f, v = e ? 16 : 32;
|
|
33
|
+
return /* @__PURE__ */ o(n, {
|
|
34
|
+
sx: {
|
|
35
|
+
pt: 8,
|
|
36
|
+
px: 16,
|
|
37
|
+
width: "100%",
|
|
38
|
+
...m
|
|
39
|
+
},
|
|
40
|
+
children: /* @__PURE__ */ y(n, {
|
|
41
|
+
sx: {
|
|
42
|
+
alignItems: "center",
|
|
43
|
+
background: r ?? void 0,
|
|
44
|
+
bgcolor: r ? void 0 : "background.paper",
|
|
45
|
+
borderRadius: "8px",
|
|
46
|
+
gap: 12,
|
|
47
|
+
py: 16,
|
|
48
|
+
width: "100%"
|
|
49
|
+
},
|
|
50
|
+
children: [/* @__PURE__ */ o(n, {
|
|
51
|
+
sx: {
|
|
52
|
+
alignItems: "flex-start",
|
|
53
|
+
flexDirection: "row",
|
|
54
|
+
justifyContent: "space-between",
|
|
55
|
+
height: b,
|
|
56
|
+
px: v,
|
|
57
|
+
width: "100%"
|
|
58
|
+
},
|
|
59
|
+
children: c.map((u, t) => {
|
|
60
|
+
const p = /* @__PURE__ */ o(S, {
|
|
61
|
+
borderColor: "divider",
|
|
62
|
+
shadow: "elevation",
|
|
63
|
+
size: i,
|
|
64
|
+
children: u
|
|
65
|
+
}), w = e ? {
|
|
66
|
+
boxSizing: "border-box",
|
|
67
|
+
mt: g[t % g.length],
|
|
68
|
+
pl: a.x,
|
|
69
|
+
width: i + a.x + 2
|
|
70
|
+
} : { alignSelf: h ? l[t % l.length] : "center" };
|
|
71
|
+
return /* @__PURE__ */ o(s, {
|
|
72
|
+
sx: w,
|
|
73
|
+
children: e ? /* @__PURE__ */ o(E, {
|
|
74
|
+
anchorOrigin: {
|
|
75
|
+
horizontal: "left",
|
|
76
|
+
vertical: "top"
|
|
77
|
+
},
|
|
78
|
+
"aria-label": x(t + 1),
|
|
79
|
+
role: "img",
|
|
80
|
+
badgeContent: /* @__PURE__ */ o("span", {
|
|
81
|
+
"aria-hidden": !0,
|
|
82
|
+
children: t + 1
|
|
83
|
+
}),
|
|
84
|
+
overlap: "rectangular",
|
|
85
|
+
sx: T,
|
|
86
|
+
children: p
|
|
87
|
+
}) : p
|
|
88
|
+
}, t);
|
|
89
|
+
})
|
|
90
|
+
}), d && /* @__PURE__ */ o(s, {
|
|
91
|
+
sx: {
|
|
92
|
+
px: 16,
|
|
93
|
+
width: "100%"
|
|
94
|
+
},
|
|
95
|
+
children: d
|
|
96
|
+
})]
|
|
97
|
+
})
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
export {
|
|
101
|
+
O as default
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
//# sourceMappingURL=LogoClusterCard.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogoClusterCard.es.js","names":[],"sources":["../../../src/insights-v2/components/LogoClusterCard.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nimport Badge from '@mui/material/Badge'\nimport Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\nimport type { SxProps, Theme } from '@mui/material/styles'\n\nimport LogoTile from './LogoTile'\nimport { getLogoElevation } from './logoShadow'\n\ninterface LogoClusterCardProps {\n /** Brand/merchant logo visuals, rendered as a row of tiles. */\n logos: ReactNode[]\n /** Tile size in px. */\n logoSize?: number\n /** Card surface color/background token or CSS background string. */\n background?: string\n /**\n * Stagger the tiles diagonally (Figma cycles each tile's vertical alignment\n * top -> center -> bottom). When false, all tiles are vertically centered.\n * Default true.\n */\n stagger?: boolean\n /**\n * Overlay a 1-based rank badge on the top-left of each tile (Figma: Monthly\n * Top Merchant Spending V3). Default false.\n */\n ranked?: boolean\n /**\n * Accessible label for each rank badge, given the 1-based rank. Lets the\n * consumer pass localized copy (e.g. from the copy store) and control word\n * order. Defaults to `Rank {n}` — callers in a localized context must supply a\n * copy-store-derived function, or they will ship the English default.\n */\n rankLabel?: (rank: number) => string\n /**\n * Optional element rendered below the logo row (e.g. a `<StatusPill>`).\n * Figma: a status stacked beneath the logos on the slot.\n */\n footer?: ReactNode\n sx?: SxProps\n}\n\n// Default accessible label for a rank badge. Hoisted to a stable reference so\n// it isn't re-created each render (consumers override via the `rankLabel` prop,\n// e.g. with localized copy).\nconst defaultRankLabel = (rank: number) => `Rank ${rank}`\n\n// Non-ranked (MSA V2): tiles cascade via counter-axis alignment in a 112 zone\n// (tops 0/20/40).\nconst STAGGER_ALIGN = ['flex-start', 'center', 'flex-end'] as const\nconst STAGGER_STEP = 20\n// Ranked (Top Merchant V3): exact Figma logo top-offsets within the 122 `Logos`\n// content zone (logo2 bottom leaves ~7px). Not a uniform step, so use the\n// measured values rather than alignSelf.\nconst RANK_TILE_OFFSETS = [10, 25, 43] as const\nconst RANK_ROW_HEIGHT = 122\n// Figma: the rank badge overhangs the logo's top-left by 10px left / 8px up.\n// The row reserves the left overhang once (so the first badge stays inside the\n// card edge); the badge itself is offset by it via the MUI transform below.\nconst RANK_BADGE_OVERHANG = { x: 10, y: 8 } as const\n\n// Figma rank badge on MUI `Badge`: a 24px pure-black disc, 1px white border,\n// white `body2` number, soft elevation shadow. MUI centers the badge on the\n// logo's corner (`translate(-50%,-50%)`); override the transform so its top-left\n// lands exactly 10px left / 8px above the logo (Figma's overhang).\nconst rankBadgeSx: SxProps<Theme> = {\n '& .MuiBadge-badge': {\n // Intentional: `common.black`/`common.white` are mode-INDEPENDENT in\n // createMXTheme (unlike `text.primary`/`primary.contrastText`, which flip\n // per theme). A white-on-black disc plus the white border below keeps the\n // badge legible in BOTH light and dark mode — this is the dark-mode FIX, not\n // a bug. Do not \"theme-aware\"-ify these colors; it would break the Figma\n // look in light mode for no gain (the number sits on the always-black disc,\n // never on the surface).\n bgcolor: 'common.black',\n border: '1px solid',\n borderColor: 'common.white',\n borderRadius: '999px',\n boxShadow: (theme: Theme) => getLogoElevation(theme),\n color: 'common.white',\n // Figma number is `typography/body2` (13px / regular), not MUI's badge\n // default (12px / medium).\n fontSize: (theme: Theme) => theme.typography.body2.fontSize,\n fontWeight: (theme: Theme) => theme.typography.fontWeightRegular,\n height: 24,\n minWidth: 24,\n padding: 0,\n transform: `translate(-${RANK_BADGE_OVERHANG.x}px, -${RANK_BADGE_OVERHANG.y}px)`,\n },\n}\n\n/**\n * A row of rounded brand/logo tiles on a card surface, diagonally staggered\n * (top -> center -> bottom). Figma: Monthly Subscription Aggregate V2.\n */\nconst LogoClusterCard = ({\n background,\n footer,\n logoSize = 72,\n logos,\n ranked = false,\n rankLabel = defaultRankLabel,\n stagger = true,\n sx,\n}: LogoClusterCardProps) => {\n // Non-ranked cascades via alignSelf in a `logoSize + span` zone. Ranked uses\n // the exact Figma offsets in the 122 zone (its cascade isn't a uniform step).\n const staggerSpan = stagger ? (STAGGER_ALIGN.length - 1) * STAGGER_STEP : 0\n const rowHeight = ranked ? RANK_ROW_HEIGHT : logoSize + staggerSpan\n // Figma `Logos` frame side padding: 32 for MSA V2, 16 for the ranked cluster.\n const rowPaddingX = ranked ? 16 : 32\n\n return (\n <Stack sx={{ pt: 8, px: 16, width: '100%', ...sx }}>\n <Stack\n sx={{\n alignItems: 'center',\n background: background ?? undefined,\n bgcolor: background ? undefined : 'background.paper',\n borderRadius: '8px',\n gap: 12,\n // Card (Figma `Wrapper`) has no horizontal padding of its own — the\n // logo row carries its side padding (`rowPaddingX`); only vertical.\n py: 16,\n width: '100%',\n }}\n >\n <Stack\n sx={{\n alignItems: 'flex-start',\n flexDirection: 'row',\n // Both variants use Figma's SPACE_BETWEEN (fills the row). Ranked\n // items reserve the badge overhang (below), so this yields Figma's\n // 26/18 side insets and ~14px visible gaps; MSA yields ~3px gaps.\n justifyContent: 'space-between',\n height: rowHeight,\n px: rowPaddingX,\n width: '100%',\n }}\n >\n {logos.map((logo, index) => {\n const tile = (\n <LogoTile borderColor=\"divider\" shadow=\"elevation\" size={logoSize}>\n {logo}\n </LogoTile>\n )\n // Ranked: offset each tile to its exact Figma top and size the item\n // to Figma's badge-inclusive box (72 logo + 10 left overhang + 2\n // right = 84), with the logo pushed right by the overhang. Then\n // SPACE_BETWEEN reproduces the 26/18 side insets and 14px gaps.\n // Non-ranked: cascade via alignSelf in the stagger zone.\n const positionSx = ranked\n ? {\n boxSizing: 'border-box' as const,\n mt: RANK_TILE_OFFSETS[index % RANK_TILE_OFFSETS.length],\n pl: RANK_BADGE_OVERHANG.x,\n width: logoSize + RANK_BADGE_OVERHANG.x + 2,\n }\n : { alignSelf: stagger ? STAGGER_ALIGN[index % STAGGER_ALIGN.length] : 'center' }\n\n return (\n // Index key is fine: the caller-supplied list is static.\n <Box\n // eslint-disable-next-line react/no-array-index-key\n key={index}\n sx={positionSx}\n >\n {ranked ? (\n <Badge\n anchorOrigin={{ horizontal: 'left', vertical: 'top' }}\n aria-label={rankLabel(index + 1)}\n // `role=\"img\"` gives the root span a role that supports an\n // accessible name, so aria-label is surfaced to AT (a bare\n // generic span's aria-label is not announced).\n role=\"img\"\n // Hide the visible number from AT so the badge is announced\n // once via aria-label (\"Rank 1\"), not twice (\"Rank 1 … 1\").\n badgeContent={<span aria-hidden={true}>{index + 1}</span>}\n overlap=\"rectangular\"\n sx={rankBadgeSx}\n >\n {tile}\n </Badge>\n ) : (\n tile\n )}\n </Box>\n )\n })}\n </Stack>\n {footer && <Box sx={{ px: 16, width: '100%' }}>{footer}</Box>}\n </Stack>\n </Stack>\n )\n}\n\nexport default LogoClusterCard\n"],"mappings":";;;;;;AA8CA,IAAM,IAAA,CAAoB,MAAiB,QAAQ,CAAA,IAI7C,IAAgB;AAAA,EAAC;AAAA,EAAc;AAAA,EAAU;AAAU,GACnD,IAAe,IAIf,IAAoB;AAAA,EAAC;AAAA,EAAI;AAAA,EAAI;AAAE,GAC/B,IAAkB,KAIlB,IAAsB;AAAA,EAAE,GAAG;AAAA,EAAI,GAAG;AAAE,GAMpC,IAA8B,EAClC,qBAAqB;AAAA,EAQnB,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,cAAc;AAAA,EACd,WAAA,CAAY,MAAiB,EAAiB,CAAK;AAAA,EACnD,OAAO;AAAA,EAGP,UAAA,CAAW,MAAiB,EAAM,WAAW,MAAM;AAAA,EACnD,YAAA,CAAa,MAAiB,EAAM,WAAW;AAAA,EAC/C,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AAAA,EACT,WAAW,cAAc,EAAoB,CAAA,QAAS,EAAoB,CAAA;AAC5E,EACF,GAMM,IAAA,CAAmB,EACvB,YAAA,GACA,QAAA,GACA,UAAA,IAAW,IACX,OAAA,GACA,QAAA,IAAS,IACT,WAAA,IAAY,GACZ,SAAA,IAAU,IACV,IAAA,EAAA,MAC0B;AAG1B,QAAM,IAAc,KAAW,EAAc,SAAS,KAAK,IAAe,GACpE,IAAY,IAAS,IAAkB,IAAW,GAElD,IAAc,IAAS,KAAK;AAElC,SACE,gBAAA,EAAC,GAAD;AAAA,IAAO,IAAI;AAAA,MAAE,IAAI;AAAA,MAAG,IAAI;AAAA,MAAI,OAAO;AAAA,MAAQ,GAAG;AAAA,IAAG;AAAA,IAC/C,UAAA,gBAAA,EAAC,GAAD;AAAA,MACE,IAAI;AAAA,QACF,YAAY;AAAA,QACZ,YAAY,KAAc;AAAA,QAC1B,SAAS,IAAa,SAAY;AAAA,QAClC,cAAc;AAAA,QACd,KAAK;AAAA,QAGL,IAAI;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,MAXF,UAAA,CAaE,gBAAA,EAAC,GAAD;AAAA,QACE,IAAI;AAAA,UACF,YAAY;AAAA,UACZ,eAAe;AAAA,UAIf,gBAAgB;AAAA,UAChB,QAAQ;AAAA,UACR,IAAI;AAAA,UACJ,OAAO;AAAA,QACT;AAAA,QAEC,UAAA,EAAM,IAAA,CAAK,GAAM,MAAU;AAC1B,gBAAM,IACJ,gBAAA,EAAC,GAAD;AAAA,YAAU,aAAY;AAAA,YAAU,QAAO;AAAA,YAAY,MAAM;AAAA,YACtD,UAAA;AAAA,UACO,CAAA,GAON,IAAa,IACf;AAAA,YACE,WAAW;AAAA,YACX,IAAI,EAAkB,IAAQ,EAAkB,MAAA;AAAA,YAChD,IAAI,EAAoB;AAAA,YACxB,OAAO,IAAW,EAAoB,IAAI;AAAA,UAC5C,IACA,EAAE,WAAW,IAAU,EAAc,IAAQ,EAAc,MAAA,IAAU,SAAS;AAElF,iBAEE,gBAAA,EAAC,GAAD;AAAA,YAGE,IAAI;AAAA,YAEH,UAAA,IACC,gBAAA,EAAC,GAAD;AAAA,cACE,cAAc;AAAA,gBAAE,YAAY;AAAA,gBAAQ,UAAU;AAAA,cAAM;AAAA,cACpD,cAAY,EAAU,IAAQ,CAAC;AAAA,cAI/B,MAAK;AAAA,cAGL,cAAc,gBAAA,EAAC,QAAD;AAAA,gBAAM,eAAa;AAAA,gBAAO,UAAA,IAAQ;AAAA,cAAQ,CAAA;AAAA,cACxD,SAAQ;AAAA,cACR,IAAI;AAAA,cAEH,UAAA;AAAA,YACI,CAAA,IAEP;AAAA,UAEC,GAtBE,CAsBF;AAAA,QAET,CAAC;AAAA,MACI,CAAA,GACN,KAAU,gBAAA,EAAC,GAAD;AAAA,QAAK,IAAI;AAAA,UAAE,IAAI;AAAA,UAAI,OAAO;AAAA,QAAO;AAAA,QAAI,UAAA;AAAA,MAAY,CAAA,CACvD;AAAA;EACF,CAAA;AAEX"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { SxProps } from '@mui/material/styles';
|
|
3
|
+
interface LogoTileProps {
|
|
4
|
+
/** Logo/brand visual (arbitrary children). */
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
/** Square size in px. */
|
|
7
|
+
size?: number;
|
|
8
|
+
/** Surface color token. */
|
|
9
|
+
bgcolor?: string;
|
|
10
|
+
/** Border color token. */
|
|
11
|
+
borderColor?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Drop-shadow: `'offset'`/`true` = hard bottom-right (merchant, P2P);
|
|
14
|
+
* `'elevation'` = soft `0 2px 8px`; `false` (default) = none.
|
|
15
|
+
*/
|
|
16
|
+
shadow?: boolean | 'offset' | 'elevation';
|
|
17
|
+
/**
|
|
18
|
+
* Reserve layout space for the offset shadow (margin = shadow offset) so a
|
|
19
|
+
* sibling flex `gap` clears it. Default true; ignored unless shadow is offset.
|
|
20
|
+
*/
|
|
21
|
+
reserveShadowSpace?: boolean;
|
|
22
|
+
sx?: SxProps;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The shared rounded brand/logo tile primitive (MerchantHighlightCard,
|
|
26
|
+
* P2PLogoStack, LogoClusterCard): fixed square, 1px border, optional shadow.
|
|
27
|
+
* Named `LogoTile` (not `MerchantLogo`) to avoid colliding with MXUI's
|
|
28
|
+
* `MerchantLogo` export.
|
|
29
|
+
*/
|
|
30
|
+
declare const LogoTile: ({ bgcolor, borderColor, children, reserveShadowSpace, shadow, size, sx, }: LogoTileProps) => import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
export default LogoTile;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { LOGO_SHADOW_OFFSET as r, getLogoElevation as s, getLogoShadow as x } from "./logoShadow.es.js";
|
|
2
|
+
import { jsx as d } from "react/jsx-runtime";
|
|
3
|
+
import m from "@mui/material/Box";
|
|
4
|
+
var b = ({ bgcolor: i = "background.paper", borderColor: n = "common.white", children: a, reserveShadowSpace: f = !0, shadow: o = !1, size: e = 64, sx: l }) => {
|
|
5
|
+
const t = o === !0 || o === "offset";
|
|
6
|
+
return /* @__PURE__ */ d(m, {
|
|
7
|
+
sx: {
|
|
8
|
+
alignItems: "center",
|
|
9
|
+
bgcolor: i,
|
|
10
|
+
borderRadius: "8px",
|
|
11
|
+
display: "flex",
|
|
12
|
+
flexShrink: 0,
|
|
13
|
+
height: e,
|
|
14
|
+
justifyContent: "center",
|
|
15
|
+
overflow: "hidden",
|
|
16
|
+
width: e,
|
|
17
|
+
border: "1px solid",
|
|
18
|
+
borderColor: n,
|
|
19
|
+
...t && { boxShadow: x },
|
|
20
|
+
...o === "elevation" && { boxShadow: s },
|
|
21
|
+
...t && f && {
|
|
22
|
+
mr: `${r.x}px`,
|
|
23
|
+
mb: `${r.y}px`
|
|
24
|
+
},
|
|
25
|
+
...l
|
|
26
|
+
},
|
|
27
|
+
children: a
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
export {
|
|
31
|
+
b as default
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=LogoTile.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogoTile.es.js","names":[],"sources":["../../../src/insights-v2/components/LogoTile.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nimport Box from '@mui/material/Box'\nimport type { SxProps } from '@mui/material/styles'\n\nimport { getLogoElevation, getLogoShadow, LOGO_SHADOW_OFFSET } from './logoShadow'\n\ninterface LogoTileProps {\n /** Logo/brand visual (arbitrary children). */\n children: ReactNode\n /** Square size in px. */\n size?: number\n /** Surface color token. */\n bgcolor?: string\n /** Border color token. */\n borderColor?: string\n /**\n * Drop-shadow: `'offset'`/`true` = hard bottom-right (merchant, P2P);\n * `'elevation'` = soft `0 2px 8px`; `false` (default) = none.\n */\n shadow?: boolean | 'offset' | 'elevation'\n /**\n * Reserve layout space for the offset shadow (margin = shadow offset) so a\n * sibling flex `gap` clears it. Default true; ignored unless shadow is offset.\n */\n reserveShadowSpace?: boolean\n sx?: SxProps\n}\n\n/**\n * The shared rounded brand/logo tile primitive (MerchantHighlightCard,\n * P2PLogoStack, LogoClusterCard): fixed square, 1px border, optional shadow.\n * Named `LogoTile` (not `MerchantLogo`) to avoid colliding with MXUI's\n * `MerchantLogo` export.\n */\nconst LogoTile = ({\n bgcolor = 'background.paper',\n borderColor = 'common.white',\n children,\n reserveShadowSpace = true,\n shadow = false,\n size = 64,\n sx,\n}: LogoTileProps) => {\n const isOffset = shadow === true || shadow === 'offset'\n const isElevation = shadow === 'elevation'\n\n return (\n <Box\n sx={{\n alignItems: 'center',\n bgcolor,\n borderRadius: '8px',\n display: 'flex',\n flexShrink: 0,\n height: size,\n justifyContent: 'center',\n overflow: 'hidden',\n width: size,\n border: '1px solid',\n borderColor,\n ...(isOffset && { boxShadow: getLogoShadow }),\n ...(isElevation && { boxShadow: getLogoElevation }),\n // The offset box-shadow paints outside the box; reserve its footprint so\n // a flex gap starts from the shadow's outer edge, not the tile border.\n // (The soft elevation shadow is symmetric and needs no reservation.)\n ...(isOffset &&\n reserveShadowSpace && {\n mr: `${LOGO_SHADOW_OFFSET.x}px`,\n mb: `${LOGO_SHADOW_OFFSET.y}px`,\n }),\n ...sx,\n }}\n >\n {children}\n </Box>\n )\n}\n\nexport default LogoTile\n"],"mappings":";;;AAmCA,IAAM,IAAA,CAAY,EAChB,SAAA,IAAU,oBACV,aAAA,IAAc,gBACd,UAAA,GACA,oBAAA,IAAqB,IACrB,QAAA,IAAS,IACT,MAAA,IAAO,IACP,IAAA,EAAA,MACmB;AACnB,QAAM,IAAW,MAAW,MAAQ,MAAW;AAG/C,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,IAAI;AAAA,MACF,YAAY;AAAA,MACZ,SAAA;AAAA,MACA,cAAc;AAAA,MACd,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,aAAA;AAAA,MACA,GAAI,KAAY,EAAE,WAAW,EAAc;AAAA,MAC3C,GAjBc,MAAW,eAiBN,EAAE,WAAW,EAAiB;AAAA,MAIjD,GAAI,KACF,KAAsB;AAAA,QACpB,IAAI,GAAG,EAAmB,CAAA;AAAA,QAC1B,IAAI,GAAG,EAAmB,CAAA;AAAA,MAC5B;AAAA,MACF,GAAG;AAAA,IACL;AAAA,IAEC,UAAA;AAAA,EACE,CAAA;AAET"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { SxProps } from '@mui/material/styles';
|
|
3
|
+
interface MerchantHighlightCardProps {
|
|
4
|
+
/** Brand/merchant logo visual (rendered inside a `LogoTile`). */
|
|
5
|
+
logo: ReactNode;
|
|
6
|
+
/** Merchant/payee name. */
|
|
7
|
+
name: ReactNode;
|
|
8
|
+
/** Optional label above the name (e.g. "{Date}"). */
|
|
9
|
+
eyebrow?: ReactNode;
|
|
10
|
+
/** Amount. Rendered as a dark pill when `amountVariant='pill'`, else plain. */
|
|
11
|
+
amount?: ReactNode;
|
|
12
|
+
/** How to render the amount. */
|
|
13
|
+
amountVariant?: 'pill' | 'text';
|
|
14
|
+
/** Typography variant for the name. Defaults to `h2` for `pill`, else `h3`. */
|
|
15
|
+
nameVariant?: 'h2' | 'h3';
|
|
16
|
+
/** Trailing element beneath the name (e.g. a `<StatusPill>`); replaces `amount`. */
|
|
17
|
+
trailing?: ReactNode;
|
|
18
|
+
/** Card surface color token. */
|
|
19
|
+
bgcolor?: string;
|
|
20
|
+
/** CSS background (e.g. a gradient) for the card surface; overrides `bgcolor`. */
|
|
21
|
+
background?: string;
|
|
22
|
+
/** Card border color token (e.g. New Merchant's tinted card). */
|
|
23
|
+
borderColor?: string;
|
|
24
|
+
/** Render the logo's drop-shadow. Default true; false for MSA V2's Visual. */
|
|
25
|
+
logoShadow?: boolean;
|
|
26
|
+
sx?: SxProps;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A merchant/brand highlight card: a `LogoTile` beside a text column (optional
|
|
30
|
+
* eyebrow, name, amount/trailing). Shared by Peer-to-Peer Categorization, New
|
|
31
|
+
* Merchant, and Monthly Subscription Aggregate V2's Visual state.
|
|
32
|
+
*/
|
|
33
|
+
declare const MerchantHighlightCard: ({ amount, amountVariant, background, bgcolor, borderColor, eyebrow, logo, logoShadow, name, nameVariant, trailing, sx, }: MerchantHighlightCardProps) => import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
export default MerchantHighlightCard;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import v from "./AmountPill.es.js";
|
|
2
|
+
import w from "./LogoTile.es.js";
|
|
3
|
+
import i from "@mui/material/Stack";
|
|
4
|
+
import { Text as l } from "@mxenabled/mxui";
|
|
5
|
+
import { jsx as r, jsxs as c } from "react/jsx-runtime";
|
|
6
|
+
var A = ({ amount: t, amountVariant: o = "text", background: n, bgcolor: h = "grey.200", borderColor: d, eyebrow: a, logo: p, logoShadow: s = !0, name: x, nameVariant: m, trailing: u, sx: f }) => {
|
|
7
|
+
const g = m ?? (o === "pill" ? "h2" : "h3");
|
|
8
|
+
let e = u;
|
|
9
|
+
return e == null && t != null && (e = o === "pill" ? /* @__PURE__ */ r(v, { children: t }) : /* @__PURE__ */ r(l, {
|
|
10
|
+
color: "text.secondary",
|
|
11
|
+
variant: "body1",
|
|
12
|
+
children: t
|
|
13
|
+
})), /* @__PURE__ */ r(i, {
|
|
14
|
+
sx: {
|
|
15
|
+
px: 16,
|
|
16
|
+
width: "100%",
|
|
17
|
+
...f
|
|
18
|
+
},
|
|
19
|
+
children: /* @__PURE__ */ c(i, {
|
|
20
|
+
sx: {
|
|
21
|
+
alignItems: "center",
|
|
22
|
+
...n ? { background: n } : { bgcolor: h },
|
|
23
|
+
...d && {
|
|
24
|
+
border: "1px solid",
|
|
25
|
+
borderColor: d
|
|
26
|
+
},
|
|
27
|
+
borderRadius: "8px",
|
|
28
|
+
flexDirection: "row",
|
|
29
|
+
gap: 16,
|
|
30
|
+
p: 16,
|
|
31
|
+
width: "100%"
|
|
32
|
+
},
|
|
33
|
+
children: [/* @__PURE__ */ r(w, {
|
|
34
|
+
shadow: s,
|
|
35
|
+
children: p
|
|
36
|
+
}), /* @__PURE__ */ c(i, {
|
|
37
|
+
sx: {
|
|
38
|
+
gap: 2,
|
|
39
|
+
minWidth: 0
|
|
40
|
+
},
|
|
41
|
+
children: [
|
|
42
|
+
a && /* @__PURE__ */ r(l, {
|
|
43
|
+
color: "text.secondary",
|
|
44
|
+
truncate: !0,
|
|
45
|
+
variant: "caption",
|
|
46
|
+
children: a
|
|
47
|
+
}),
|
|
48
|
+
/* @__PURE__ */ r(l, {
|
|
49
|
+
bold: !0,
|
|
50
|
+
truncate: !0,
|
|
51
|
+
variant: g,
|
|
52
|
+
children: x
|
|
53
|
+
}),
|
|
54
|
+
e
|
|
55
|
+
]
|
|
56
|
+
})]
|
|
57
|
+
})
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
export {
|
|
61
|
+
A as default
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=MerchantHighlightCard.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MerchantHighlightCard.es.js","names":[],"sources":["../../../src/insights-v2/components/MerchantHighlightCard.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nimport Stack from '@mui/material/Stack'\nimport type { SxProps } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport AmountPill from './AmountPill'\nimport LogoTile from './LogoTile'\n\ninterface MerchantHighlightCardProps {\n /** Brand/merchant logo visual (rendered inside a `LogoTile`). */\n logo: ReactNode\n /** Merchant/payee name. */\n name: ReactNode\n /** Optional label above the name (e.g. \"{Date}\"). */\n eyebrow?: ReactNode\n /** Amount. Rendered as a dark pill when `amountVariant='pill'`, else plain. */\n amount?: ReactNode\n /** How to render the amount. */\n amountVariant?: 'pill' | 'text'\n /** Typography variant for the name. Defaults to `h2` for `pill`, else `h3`. */\n nameVariant?: 'h2' | 'h3'\n /** Trailing element beneath the name (e.g. a `<StatusPill>`); replaces `amount`. */\n trailing?: ReactNode\n /** Card surface color token. */\n bgcolor?: string\n /** CSS background (e.g. a gradient) for the card surface; overrides `bgcolor`. */\n background?: string\n /** Card border color token (e.g. New Merchant's tinted card). */\n borderColor?: string\n /** Render the logo's drop-shadow. Default true; false for MSA V2's Visual. */\n logoShadow?: boolean\n sx?: SxProps\n}\n\n/**\n * A merchant/brand highlight card: a `LogoTile` beside a text column (optional\n * eyebrow, name, amount/trailing). Shared by Peer-to-Peer Categorization, New\n * Merchant, and Monthly Subscription Aggregate V2's Visual state.\n */\nconst MerchantHighlightCard = ({\n amount,\n amountVariant = 'text',\n background,\n bgcolor = 'grey.200',\n borderColor,\n eyebrow,\n logo,\n logoShadow = true,\n name,\n nameVariant,\n trailing,\n sx,\n}: MerchantHighlightCardProps) => {\n const resolvedNameVariant = nameVariant ?? (amountVariant === 'pill' ? 'h2' : 'h3')\n\n // `trailing` (e.g. a StatusPill) takes the amount's slot when provided;\n // otherwise render the amount as a dark pill or plain text.\n let amountNode: ReactNode = trailing\n if (amountNode == null && amount != null) {\n amountNode =\n amountVariant === 'pill' ? (\n <AmountPill>{amount}</AmountPill>\n ) : (\n <Text color=\"text.secondary\" variant=\"body1\">\n {amount}\n </Text>\n )\n }\n\n return (\n <Stack sx={{ px: 16, width: '100%', ...sx }}>\n <Stack\n sx={{\n alignItems: 'center',\n ...(background ? { background } : { bgcolor }),\n ...(borderColor && { border: '1px solid', borderColor }),\n borderRadius: '8px',\n flexDirection: 'row',\n gap: 16,\n p: 16,\n width: '100%',\n }}\n >\n <LogoTile shadow={logoShadow}>{logo}</LogoTile>\n <Stack sx={{ gap: 2, minWidth: 0 }}>\n {eyebrow && (\n <Text color=\"text.secondary\" truncate={true} variant=\"caption\">\n {eyebrow}\n </Text>\n )}\n <Text bold={true} truncate={true} variant={resolvedNameVariant}>\n {name}\n </Text>\n {amountNode}\n </Stack>\n </Stack>\n </Stack>\n )\n}\n\nexport default MerchantHighlightCard\n"],"mappings":";;;;;AAyCA,IAAM,IAAA,CAAyB,EAC7B,QAAA,GACA,eAAA,IAAgB,QAChB,YAAA,GACA,SAAA,IAAU,YACV,aAAA,GACA,SAAA,GACA,MAAA,GACA,YAAA,IAAa,IACb,MAAA,GACA,aAAA,GACA,UAAA,GACA,IAAA,EAAA,MACgC;AAChC,QAAM,IAAsB,MAAgB,MAAkB,SAAS,OAAO;AAI9E,MAAI,IAAwB;AAC5B,SAAI,KAAc,QAAQ,KAAU,SAClC,IACE,MAAkB,SAChB,gBAAA,EAAC,GAAD,EAAA,UAAa,EAAmB,CAAA,IAEhC,gBAAA,EAAC,GAAD;AAAA,IAAM,OAAM;AAAA,IAAiB,SAAQ;AAAA,IAClC,UAAA;AAAA,EACG,CAAA,IAKV,gBAAA,EAAC,GAAD;AAAA,IAAO,IAAI;AAAA,MAAE,IAAI;AAAA,MAAI,OAAO;AAAA,MAAQ,GAAG;AAAA,IAAG;AAAA,IACxC,UAAA,gBAAA,EAAC,GAAD;AAAA,MACE,IAAI;AAAA,QACF,YAAY;AAAA,QACZ,GAAI,IAAa,EAAE,YAAA,EAAW,IAAI,EAAE,SAAA,EAAQ;AAAA,QAC5C,GAAI,KAAe;AAAA,UAAE,QAAQ;AAAA,UAAa,aAAA;AAAA,QAAY;AAAA,QACtD,cAAc;AAAA,QACd,eAAe;AAAA,QACf,KAAK;AAAA,QACL,GAAG;AAAA,QACH,OAAO;AAAA,MACT;AAAA,MAVF,UAAA,CAYE,gBAAA,EAAC,GAAD;AAAA,QAAU,QAAQ;AAAA,QAAa,UAAA;AAAA,MAAe,CAAA,GAC9C,gBAAA,EAAC,GAAD;AAAA,QAAO,IAAI;AAAA,UAAE,KAAK;AAAA,UAAG,UAAU;AAAA,QAAE;AAAA,QAAjC,UAAA;AAAA,UACG,KACC,gBAAA,EAAC,GAAD;AAAA,YAAM,OAAM;AAAA,YAAiB,UAAU;AAAA,YAAM,SAAQ;AAAA,YAClD,UAAA;AAAA,UACG,CAAA;AAAA,UAER,gBAAA,EAAC,GAAD;AAAA,YAAM,MAAM;AAAA,YAAM,UAAU;AAAA,YAAM,SAAS;AAAA,YACxC,UAAA;AAAA,UACG,CAAA;AAAA,UACL;AAAA,QACI;AAAA,MACF,CAAA,CAAA;AAAA;EACF,CAAA;AAEX"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { SxProps } from '@mui/material/styles';
|
|
3
|
+
interface P2PLogoStackProps {
|
|
4
|
+
/** Brand/merchant logo visuals (rendered as shadowed, cascading tiles). */
|
|
5
|
+
logos: ReactNode[];
|
|
6
|
+
/**
|
|
7
|
+
* Total number of merchants. When it exceeds the rendered logos, the last
|
|
8
|
+
* tile becomes a "+N" more indicator. Defaults to `logos.length`.
|
|
9
|
+
*/
|
|
10
|
+
total?: number;
|
|
11
|
+
/** Logo tile size in px (Figma: 64). */
|
|
12
|
+
size?: number;
|
|
13
|
+
/**
|
|
14
|
+
* Fixed height of the cascading row in px (Figma `Logos` frame: 106). Gives
|
|
15
|
+
* the staircase `mt` offsets room without collapsing.
|
|
16
|
+
*/
|
|
17
|
+
rowHeight?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Optional status element rendered below the logos (Figma: the full-width
|
|
20
|
+
* "Categorized" `<StatusPill>` in P2P's categorized state). Pass a
|
|
21
|
+
* `<StatusPill sx={{ alignSelf: 'stretch', justifyContent: 'center' }} />`.
|
|
22
|
+
*/
|
|
23
|
+
status?: ReactNode;
|
|
24
|
+
sx?: SxProps;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A cascading row of shadowed brand tiles with an optional "+N" overflow tile
|
|
28
|
+
* (Peer-to-Peer Categorization). Layout math ported locally from v1
|
|
29
|
+
* `shared/P2P/P2PMultipleCategorization`.
|
|
30
|
+
*/
|
|
31
|
+
declare const P2PLogoStack: ({ logos, rowHeight, size, status, total, sx, }: P2PLogoStackProps) => import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
export default P2PLogoStack;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import u from "./LogoTile.es.js";
|
|
2
|
+
import i from "@mui/material/Stack";
|
|
3
|
+
import { Text as w } from "@mxenabled/mxui";
|
|
4
|
+
import { jsx as S, jsxs as c } from "react/jsx-runtime";
|
|
5
|
+
var v = {
|
|
6
|
+
2: [0, 36],
|
|
7
|
+
3: [
|
|
8
|
+
0,
|
|
9
|
+
18,
|
|
10
|
+
36
|
|
11
|
+
],
|
|
12
|
+
4: [
|
|
13
|
+
0,
|
|
14
|
+
12,
|
|
15
|
+
24,
|
|
16
|
+
36
|
|
17
|
+
]
|
|
18
|
+
}, j = ({ logos: o, rowHeight: l = 106, size: h = 64, status: m, total: p, sx: f }) => {
|
|
19
|
+
const n = p ?? o.length, t = n >= 4, r = t ? o.slice(0, 3) : o.slice(0, 4), d = v[t ? 4 : Math.min(Math.max(r.length, 2), 3)], g = t ? r.length + 1 : r.length, s = (a, e, x) => /* @__PURE__ */ S(u, {
|
|
20
|
+
bgcolor: x,
|
|
21
|
+
borderColor: "background.paper",
|
|
22
|
+
reserveShadowSpace: e === g - 1,
|
|
23
|
+
shadow: !0,
|
|
24
|
+
size: h,
|
|
25
|
+
sx: { mt: `${d?.[e] ?? 0}px` },
|
|
26
|
+
children: a
|
|
27
|
+
}, e);
|
|
28
|
+
return /* @__PURE__ */ c(i, {
|
|
29
|
+
sx: {
|
|
30
|
+
gap: 12,
|
|
31
|
+
width: "100%",
|
|
32
|
+
...f
|
|
33
|
+
},
|
|
34
|
+
children: [/* @__PURE__ */ c(i, {
|
|
35
|
+
sx: {
|
|
36
|
+
flexDirection: "row",
|
|
37
|
+
gap: t ? 8 : 24,
|
|
38
|
+
height: l,
|
|
39
|
+
justifyContent: t ? "flex-start" : "center"
|
|
40
|
+
},
|
|
41
|
+
children: [r.map((a, e) => s(a, e, "background.paper")), t && s(/* @__PURE__ */ c(w, {
|
|
42
|
+
"aria-label": `+${n - 3} more`,
|
|
43
|
+
component: "span",
|
|
44
|
+
sx: { color: "common.white" },
|
|
45
|
+
variant: "h3",
|
|
46
|
+
children: ["+", n - 3]
|
|
47
|
+
}), 3, "grey.800")]
|
|
48
|
+
}), m]
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
export {
|
|
52
|
+
j as default
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=P2PLogoStack.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"P2PLogoStack.es.js","names":[],"sources":["../../../src/insights-v2/components/P2PLogoStack.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nimport Stack from '@mui/material/Stack'\nimport type { SxProps } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport LogoTile from './LogoTile'\n\ninterface P2PLogoStackProps {\n /** Brand/merchant logo visuals (rendered as shadowed, cascading tiles). */\n logos: ReactNode[]\n /**\n * Total number of merchants. When it exceeds the rendered logos, the last\n * tile becomes a \"+N\" more indicator. Defaults to `logos.length`.\n */\n total?: number\n /** Logo tile size in px (Figma: 64). */\n size?: number\n /**\n * Fixed height of the cascading row in px (Figma `Logos` frame: 106). Gives\n * the staircase `mt` offsets room without collapsing.\n */\n rowHeight?: number\n /**\n * Optional status element rendered below the logos (Figma: the full-width\n * \"Categorized\" `<StatusPill>` in P2P's categorized state). Pass a\n * `<StatusPill sx={{ alignSelf: 'stretch', justifyContent: 'center' }} />`.\n */\n status?: ReactNode\n sx?: SxProps\n}\n\n// Vertical offsets that produce the diagonal cascade, keyed by tile count.\n// Mirrors the shared P2PMultipleCategorization layout.\nconst MT_OFFSETS: Record<number, number[]> = {\n 2: [0, 36],\n 3: [0, 18, 36],\n 4: [0, 12, 24, 36],\n}\n\n/**\n * A cascading row of shadowed brand tiles with an optional \"+N\" overflow tile\n * (Peer-to-Peer Categorization). Layout math ported locally from v1\n * `shared/P2P/P2PMultipleCategorization`.\n */\nconst P2PLogoStack = ({\n logos,\n rowHeight = 106,\n size = 64,\n status,\n total,\n sx,\n}: P2PLogoStackProps) => {\n const merchantCount = total ?? logos.length\n // At 4+ merchants Figma shows 3 logos + a \"+N\" overflow tile (so exactly 4\n // renders as 3 + \"+1\"); below 4, all logos show. Mirrors v1.\n const hasOverflow = merchantCount >= 4\n const tiles = hasOverflow ? logos.slice(0, 3) : logos.slice(0, 4)\n const offsets = MT_OFFSETS[hasOverflow ? 4 : Math.min(Math.max(tiles.length, 2), 3)]\n // Total tiles actually rendered (logos, or 3 logos + the \"+N\" tile).\n const tileCount = hasOverflow ? tiles.length + 1 : tiles.length\n\n // The offset shadow takes no layout space, so interior tiles' shadows fall in\n // the row `gap`; only the LAST tile reserves its shadow footprint, else it\n // overlaps the card padding. (Index key is fine: the list is static.)\n const renderTile = (content: ReactNode, index: number, bgcolor: string) => (\n <LogoTile\n // eslint-disable-next-line react/no-array-index-key\n key={index}\n bgcolor={bgcolor}\n borderColor=\"background.paper\"\n reserveShadowSpace={index === tileCount - 1}\n shadow={true}\n size={size}\n sx={{ mt: `${offsets?.[index] ?? 0}px` }}\n >\n {content}\n </LogoTile>\n )\n\n return (\n <Stack sx={{ gap: 12, width: '100%', ...sx }}>\n {/* Fixed-height row gives the `mt` staircase room to cascade. */}\n <Stack\n sx={{\n flexDirection: 'row',\n gap: hasOverflow ? 8 : 24,\n height: rowHeight,\n justifyContent: hasOverflow ? 'flex-start' : 'center',\n }}\n >\n {tiles.map((logo, index) => renderTile(logo, index, 'background.paper'))}\n {hasOverflow &&\n renderTile(\n // h3-sized span, not a semantic heading, inside a decorative tile.\n <Text\n aria-label={`+${merchantCount - 3} more`}\n component=\"span\"\n sx={{ color: 'common.white' }}\n variant=\"h3\"\n >\n +{merchantCount - 3}\n </Text>,\n 3,\n 'grey.800',\n )}\n </Stack>\n {status}\n </Stack>\n )\n}\n\nexport default P2PLogoStack\n"],"mappings":";;;;AAmCA,IAAM,IAAuC;AAAA,EAC3C,GAAG,CAAC,GAAG,EAAE;AAAA,EACT,GAAG;AAAA,IAAC;AAAA,IAAG;AAAA,IAAI;AAAA,EAAE;AAAA,EACb,GAAG;AAAA,IAAC;AAAA,IAAG;AAAA,IAAI;AAAA,IAAI;AAAA,EAAE;AACnB,GAOM,IAAA,CAAgB,EACpB,OAAA,GACA,WAAA,IAAY,KACZ,MAAA,IAAO,IACP,QAAA,GACA,OAAA,GACA,IAAA,EAAA,MACuB;AACvB,QAAM,IAAgB,KAAS,EAAM,QAG/B,IAAc,KAAiB,GAC/B,IAAQ,IAAc,EAAM,MAAM,GAAG,CAAC,IAAI,EAAM,MAAM,GAAG,CAAC,GAC1D,IAAU,EAAW,IAAc,IAAI,KAAK,IAAI,KAAK,IAAI,EAAM,QAAQ,CAAC,GAAG,CAAC,CAAA,GAE5E,IAAY,IAAc,EAAM,SAAS,IAAI,EAAM,QAKnD,IAAA,CAAc,GAAoB,GAAe,MACrD,gBAAA,EAAC,GAAD;AAAA,IAGW,SAAA;AAAA,IACT,aAAY;AAAA,IACZ,oBAAoB,MAAU,IAAY;AAAA,IAC1C,QAAQ;AAAA,IACF,MAAA;AAAA,IACN,IAAI,EAAE,IAAI,GAAG,IAAU,CAAA,KAAU,CAAA,KAAM;AAAA,IAEtC,UAAA;AAAA,EACO,GATH,CASG;AAGZ,SACE,gBAAA,EAAC,GAAD;AAAA,IAAO,IAAI;AAAA,MAAE,KAAK;AAAA,MAAI,OAAO;AAAA,MAAQ,GAAG;AAAA,IAAG;AAAA,IAA3C,UAAA,CAEE,gBAAA,EAAC,GAAD;AAAA,MACE,IAAI;AAAA,QACF,eAAe;AAAA,QACf,KAAK,IAAc,IAAI;AAAA,QACvB,QAAQ;AAAA,QACR,gBAAgB,IAAc,eAAe;AAAA,MAC/C;AAAA,MANF,UAAA,CAQG,EAAM,IAAA,CAAK,GAAM,MAAU,EAAW,GAAM,GAAO,kBAAkB,CAAC,GACtE,KACC,EAEE,gBAAA,EAAC,GAAD;AAAA,QACE,cAAY,IAAI,IAAgB,CAAA;AAAA,QAChC,WAAU;AAAA,QACV,IAAI,EAAE,OAAO,eAAe;AAAA,QAC5B,SAAQ;AAAA,QAJV,UAAA,CAKC,KACG,IAAgB,CACd;AAAA,MACN,CAAA,GAAA,GACA,UACF,CACG;AAAA,IACN,CAAA,GAAA,CACI;AAAA;AAEX"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { SxProps, Theme } from '@mui/material/styles';
|
|
2
|
+
interface SaveAnExtraCardProps {
|
|
3
|
+
/** Subtitle label in the green header (e.g. "Save an extra"). */
|
|
4
|
+
title: string;
|
|
5
|
+
/** Large amount in the green header (e.g. "$100.00"). */
|
|
6
|
+
amount: string;
|
|
7
|
+
/** Small caption under the header amount (e.g. "to help your funds grow"). */
|
|
8
|
+
description: string;
|
|
9
|
+
/** Large amount in the white footer (e.g. "$3,320.00"). */
|
|
10
|
+
footerAmount: string;
|
|
11
|
+
/** Small caption under the footer amount (e.g. "After payday & projected expenses"). */
|
|
12
|
+
footerDescription: string;
|
|
13
|
+
/** Header surface color token. Default `success.main` (green). */
|
|
14
|
+
bgcolor?: string;
|
|
15
|
+
sx?: SxProps<Theme>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Save an Extra content: a green header ("Save an extra" / amount / caption)
|
|
19
|
+
* over a white footer (projected amount / caption), wrapped in a rounded,
|
|
20
|
+
* green-outlined card. Mirrors the v1 `SaveAnExtra100` structure with
|
|
21
|
+
* theme-aware tokens so it flips correctly in dark mode.
|
|
22
|
+
*
|
|
23
|
+
* Figma: Save an Extra $100 Content (Full variant). Scope is the Content
|
|
24
|
+
* section only.
|
|
25
|
+
*/
|
|
26
|
+
declare const SaveAnExtraCard: ({ title, amount, description, footerAmount, footerDescription, bgcolor, sx, }: SaveAnExtraCardProps) => import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export default SaveAnExtraCard;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { getLogoElevation as x } from "./logoShadow.es.js";
|
|
2
|
+
import { Text as r } from "@mxenabled/mxui";
|
|
3
|
+
import { jsx as e, jsxs as o } from "react/jsx-runtime";
|
|
4
|
+
import t from "@mui/material/Box";
|
|
5
|
+
var u = ({ title: i, amount: n, description: a, footerAmount: c, footerDescription: s, bgcolor: d = "success.main", sx: l }) => /* @__PURE__ */ o(t, {
|
|
6
|
+
sx: {
|
|
7
|
+
border: "1px solid",
|
|
8
|
+
borderColor: "success.main",
|
|
9
|
+
borderRadius: 2,
|
|
10
|
+
boxShadow: x,
|
|
11
|
+
overflow: "hidden",
|
|
12
|
+
...l
|
|
13
|
+
},
|
|
14
|
+
children: [/* @__PURE__ */ o(t, {
|
|
15
|
+
sx: {
|
|
16
|
+
bgcolor: d,
|
|
17
|
+
color: "success.contrastText",
|
|
18
|
+
p: 16,
|
|
19
|
+
pt: 12,
|
|
20
|
+
textAlign: "center"
|
|
21
|
+
},
|
|
22
|
+
children: [
|
|
23
|
+
/* @__PURE__ */ e(r, {
|
|
24
|
+
variant: "subtitle1",
|
|
25
|
+
children: i
|
|
26
|
+
}),
|
|
27
|
+
/* @__PURE__ */ e(r, {
|
|
28
|
+
variant: "h1",
|
|
29
|
+
children: n
|
|
30
|
+
}),
|
|
31
|
+
/* @__PURE__ */ e(r, {
|
|
32
|
+
variant: "caption",
|
|
33
|
+
children: a
|
|
34
|
+
})
|
|
35
|
+
]
|
|
36
|
+
}), /* @__PURE__ */ o(t, {
|
|
37
|
+
sx: {
|
|
38
|
+
bgcolor: "background.paper",
|
|
39
|
+
px: 16,
|
|
40
|
+
py: 12,
|
|
41
|
+
textAlign: "center"
|
|
42
|
+
},
|
|
43
|
+
children: [/* @__PURE__ */ e(r, {
|
|
44
|
+
variant: "h3",
|
|
45
|
+
children: c
|
|
46
|
+
}), /* @__PURE__ */ e(r, {
|
|
47
|
+
color: "text.secondary",
|
|
48
|
+
variant: "caption",
|
|
49
|
+
children: s
|
|
50
|
+
})]
|
|
51
|
+
})]
|
|
52
|
+
});
|
|
53
|
+
export {
|
|
54
|
+
u as default
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=SaveAnExtraCard.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SaveAnExtraCard.es.js","names":[],"sources":["../../../src/insights-v2/components/SaveAnExtraCard.tsx"],"sourcesContent":["import Box from '@mui/material/Box'\nimport type { SxProps, Theme } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { getLogoElevation } from './logoShadow'\n\ninterface SaveAnExtraCardProps {\n /** Subtitle label in the green header (e.g. \"Save an extra\"). */\n title: string\n /** Large amount in the green header (e.g. \"$100.00\"). */\n amount: string\n /** Small caption under the header amount (e.g. \"to help your funds grow\"). */\n description: string\n /** Large amount in the white footer (e.g. \"$3,320.00\"). */\n footerAmount: string\n /** Small caption under the footer amount (e.g. \"After payday & projected expenses\"). */\n footerDescription: string\n /** Header surface color token. Default `success.main` (green). */\n bgcolor?: string\n sx?: SxProps<Theme>\n}\n\n/**\n * Save an Extra content: a green header (\"Save an extra\" / amount / caption)\n * over a white footer (projected amount / caption), wrapped in a rounded,\n * green-outlined card. Mirrors the v1 `SaveAnExtra100` structure with\n * theme-aware tokens so it flips correctly in dark mode.\n *\n * Figma: Save an Extra $100 Content (Full variant). Scope is the Content\n * section only.\n */\nconst SaveAnExtraCard = ({\n title,\n amount,\n description,\n footerAmount,\n footerDescription,\n bgcolor = 'success.main',\n sx,\n}: SaveAnExtraCardProps) => {\n return (\n <Box\n sx={{\n border: '1px solid',\n borderColor: 'success.main',\n borderRadius: 2,\n boxShadow: getLogoElevation,\n overflow: 'hidden',\n ...sx,\n }}\n >\n {/* Green header */}\n <Box\n sx={{\n bgcolor,\n color: 'success.contrastText',\n p: 16,\n pt: 12,\n textAlign: 'center',\n }}\n >\n <Text variant=\"subtitle1\">{title}</Text>\n <Text variant=\"h1\">{amount}</Text>\n <Text variant=\"caption\">{description}</Text>\n </Box>\n\n {/* White footer with projected amount */}\n <Box sx={{ bgcolor: 'background.paper', px: 16, py: 12, textAlign: 'center' }}>\n <Text variant=\"h3\">{footerAmount}</Text>\n <Text color=\"text.secondary\" variant=\"caption\">\n {footerDescription}\n </Text>\n </Box>\n </Box>\n )\n}\n\nexport default SaveAnExtraCard\n"],"mappings":";;;;AAgCA,IAAM,IAAA,CAAmB,EACvB,OAAA,GACA,QAAA,GACA,aAAA,GACA,cAAA,GACA,mBAAA,GACA,SAAA,IAAU,gBACV,IAAA,EAAA,MAGE,gBAAA,EAAC,GAAD;AAAA,EACE,IAAI;AAAA,IACF,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,cAAc;AAAA,IACd,WAAW;AAAA,IACX,UAAU;AAAA,IACV,GAAG;AAAA,EACL;AAAA,EARF,UAAA,CAWE,gBAAA,EAAC,GAAD;AAAA,IACE,IAAI;AAAA,MACF,SAAA;AAAA,MACA,OAAO;AAAA,MACP,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,WAAW;AAAA,IACb;AAAA,IAPF,UAAA;AAAA,MASE,gBAAA,EAAC,GAAD;AAAA,QAAM,SAAQ;AAAA,QAAa,UAAA;AAAA,MAAY,CAAA;AAAA,MACvC,gBAAA,EAAC,GAAD;AAAA,QAAM,SAAQ;AAAA,QAAM,UAAA;AAAA,MAAa,CAAA;AAAA,MACjC,gBAAA,EAAC,GAAD;AAAA,QAAM,SAAQ;AAAA,QAAW,UAAA;AAAA,MAAkB,CAAA;AAAA,IACxC;AAAA,EAGL,CAAA,GAAA,gBAAA,EAAC,GAAD;AAAA,IAAK,IAAI;AAAA,MAAE,SAAS;AAAA,MAAoB,IAAI;AAAA,MAAI,IAAI;AAAA,MAAI,WAAW;AAAA,IAAS;AAAA,IAA5E,UAAA,CACE,gBAAA,EAAC,GAAD;AAAA,MAAM,SAAQ;AAAA,MAAM,UAAA;AAAA,IAAmB,CAAA,GACvC,gBAAA,EAAC,GAAD;AAAA,MAAM,OAAM;AAAA,MAAiB,SAAQ;AAAA,MAClC,UAAA;AAAA,IACG,CAAA,CACH;AAAA,EACF,CAAA,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SxProps, Theme } from '@mui/material/styles';
|
|
2
|
+
interface SavingsOpportunityCardProps {
|
|
3
|
+
amount: string;
|
|
4
|
+
label: string;
|
|
5
|
+
/** Whether to render the green gradient slot behind the coupon. Default true. */
|
|
6
|
+
slot?: boolean;
|
|
7
|
+
sx?: SxProps<Theme>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Savings Opportunity V2 content: a coupon (green wallet tile + perforation +
|
|
11
|
+
* amount) on a green gradient slot. Ported from the v1 `Coupon` component
|
|
12
|
+
* (`src/insights/components/shared/Coupon.tsx`) and adapted to the v2 theme.
|
|
13
|
+
*
|
|
14
|
+
* Figma: Savings Opportunity V2 Content (Full variant, coupon-style).
|
|
15
|
+
* Scope is the Content section only.
|
|
16
|
+
*/
|
|
17
|
+
declare const SavingsOpportunityCard: ({ amount, label, slot, sx, }: SavingsOpportunityCardProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export default SavingsOpportunityCard;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { ReactComponent as m } from "./shared/images/SavingsOpportunityLeft.es.js";
|
|
2
|
+
import { ReactComponent as u } from "./shared/images/SavingsOpportunityLeftDark.es.js";
|
|
3
|
+
import { ReactComponent as h } from "./shared/images/SavingsOpportunityPerforation.es.js";
|
|
4
|
+
import t from "@mui/material/Stack";
|
|
5
|
+
import { Text as i } from "@mxenabled/mxui";
|
|
6
|
+
import { jsx as r, jsxs as n } from "react/jsx-runtime";
|
|
7
|
+
import { alpha as o, useTheme as f } from "@mui/material/styles";
|
|
8
|
+
import g from "@mui/material/Box";
|
|
9
|
+
var p = 0.75, j = ({ amount: d, label: c, slot: a = !0, sx: s }) => {
|
|
10
|
+
const e = f(), l = `linear-gradient(90deg, ${o(e.palette.success.main, p)}, ${o(e.palette.success.light, p)})`;
|
|
11
|
+
return /* @__PURE__ */ r(g, {
|
|
12
|
+
sx: {
|
|
13
|
+
backgroundImage: a ? l : void 0,
|
|
14
|
+
bgcolor: a ? "background.paper" : "transparent",
|
|
15
|
+
p: 16,
|
|
16
|
+
...s
|
|
17
|
+
},
|
|
18
|
+
children: /* @__PURE__ */ n(t, {
|
|
19
|
+
sx: {
|
|
20
|
+
flexDirection: "row",
|
|
21
|
+
justifyContent: "center"
|
|
22
|
+
},
|
|
23
|
+
children: [
|
|
24
|
+
/* @__PURE__ */ r(t, {
|
|
25
|
+
sx: {
|
|
26
|
+
bgcolor: "background.paper",
|
|
27
|
+
borderBottomLeftRadius: "8px",
|
|
28
|
+
borderTopLeftRadius: "8px",
|
|
29
|
+
p: 4,
|
|
30
|
+
pr: 2
|
|
31
|
+
},
|
|
32
|
+
children: e.palette.mode === "dark" ? /* @__PURE__ */ r(u, { "aria-hidden": !0 }) : /* @__PURE__ */ r(m, { "aria-hidden": !0 })
|
|
33
|
+
}),
|
|
34
|
+
/* @__PURE__ */ r(t, {
|
|
35
|
+
sx: { svg: {
|
|
36
|
+
path: {
|
|
37
|
+
"&:not([stroke])": { fill: e.palette.background.paper },
|
|
38
|
+
"&[stroke]": { stroke: o(e.palette.divider, 0.24) }
|
|
39
|
+
},
|
|
40
|
+
rect: { fill: e.palette.background.paper }
|
|
41
|
+
} },
|
|
42
|
+
children: /* @__PURE__ */ r(h, { "aria-hidden": !0 })
|
|
43
|
+
}),
|
|
44
|
+
/* @__PURE__ */ n(t, {
|
|
45
|
+
sx: {
|
|
46
|
+
bgcolor: "background.paper",
|
|
47
|
+
borderBottomRightRadius: "12px",
|
|
48
|
+
borderTopRightRadius: "12px",
|
|
49
|
+
height: 74,
|
|
50
|
+
justifyContent: "center",
|
|
51
|
+
px: 12,
|
|
52
|
+
width: 216
|
|
53
|
+
},
|
|
54
|
+
children: [/* @__PURE__ */ r(i, {
|
|
55
|
+
color: "text.secondary",
|
|
56
|
+
variant: "caption",
|
|
57
|
+
children: c
|
|
58
|
+
}), /* @__PURE__ */ r(i, {
|
|
59
|
+
variant: "h1",
|
|
60
|
+
children: d
|
|
61
|
+
})]
|
|
62
|
+
})
|
|
63
|
+
]
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
export {
|
|
68
|
+
j as default
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=SavingsOpportunityCard.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SavingsOpportunityCard.es.js","names":[],"sources":["../../../src/insights-v2/components/SavingsOpportunityCard.tsx"],"sourcesContent":["import Box from '@mui/material/Box'\nimport Stack from '@mui/material/Stack'\nimport { alpha, type SxProps, type Theme, useTheme } from '@mui/material/styles'\n\nimport { Text } from '@mxenabled/mxui'\n\nimport { ReactComponent as Left } from './shared/images/SavingsOpportunityLeft.svg'\nimport { ReactComponent as LeftDark } from './shared/images/SavingsOpportunityLeftDark.svg'\nimport { ReactComponent as Perforation } from './shared/images/SavingsOpportunityPerforation.svg'\n\n/**\n * Figma slot: a white base layered with a `success.main → success.light` linear\n * gradient at 75% opacity (a green wash left-to-right). Both tokens are\n * theme-aware so the tint flips for dark mode. Matches the \"backgroundImage over\n * bgcolor\" pattern used across the insights-v2 Content components.\n */\nconst SLOT_GRADIENT_OPACITY = 0.75\n\ninterface SavingsOpportunityCardProps {\n amount: string\n label: string\n /** Whether to render the green gradient slot behind the coupon. Default true. */\n slot?: boolean\n sx?: SxProps<Theme>\n}\n\n/**\n * Savings Opportunity V2 content: a coupon (green wallet tile + perforation +\n * amount) on a green gradient slot. Ported from the v1 `Coupon` component\n * (`src/insights/components/shared/Coupon.tsx`) and adapted to the v2 theme.\n *\n * Figma: Savings Opportunity V2 Content (Full variant, coupon-style).\n * Scope is the Content section only.\n */\nconst SavingsOpportunityCard = ({\n amount,\n label,\n slot = true,\n sx,\n}: SavingsOpportunityCardProps) => {\n const theme = useTheme()\n const slotBackground = `linear-gradient(90deg, ${alpha(\n theme.palette.success.main,\n SLOT_GRADIENT_OPACITY,\n )}, ${alpha(theme.palette.success.light, SLOT_GRADIENT_OPACITY)})`\n\n return (\n <Box\n sx={{\n backgroundImage: slot ? slotBackground : undefined,\n bgcolor: slot ? 'background.paper' : 'transparent',\n p: 16,\n ...sx,\n }}\n >\n <Stack sx={{ flexDirection: 'row', justifyContent: 'center' }}>\n <Stack\n sx={{\n bgcolor: 'background.paper',\n borderBottomLeftRadius: '8px',\n borderTopLeftRadius: '8px',\n p: 4,\n pr: 2,\n }}\n >\n {theme.palette.mode === 'dark' ? (\n <LeftDark aria-hidden={true} />\n ) : (\n <Left aria-hidden={true} />\n )}\n </Stack>\n <Stack\n sx={{\n svg: {\n path: {\n '&:not([stroke])': {\n fill: theme.palette.background.paper,\n },\n '&[stroke]': {\n stroke: alpha(theme.palette.divider, 0.24),\n },\n },\n rect: {\n fill: theme.palette.background.paper,\n },\n },\n }}\n >\n <Perforation aria-hidden={true} />\n </Stack>\n <Stack\n sx={{\n bgcolor: 'background.paper',\n borderBottomRightRadius: '12px',\n borderTopRightRadius: '12px',\n height: 74,\n justifyContent: 'center',\n px: 12,\n width: 216,\n }}\n >\n <Text color=\"text.secondary\" variant=\"caption\">\n {label}\n </Text>\n <Text variant=\"h1\">{amount}</Text>\n </Stack>\n </Stack>\n </Box>\n )\n}\n\nexport default SavingsOpportunityCard\n"],"mappings":";;;;;;;;AAgBA,IAAM,IAAwB,MAkBxB,IAAA,CAA0B,EAC9B,QAAA,GACA,OAAA,GACA,MAAA,IAAO,IACP,IAAA,EAAA,MACiC;AACjC,QAAM,IAAQ,EAAS,GACjB,IAAiB,0BAA0B,EAC/C,EAAM,QAAQ,QAAQ,MACtB,CACF,CAAA,KAAM,EAAM,EAAM,QAAQ,QAAQ,OAAO,CAAqB,CAAA;AAE9D,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,IAAI;AAAA,MACF,iBAAiB,IAAO,IAAiB;AAAA,MACzC,SAAS,IAAO,qBAAqB;AAAA,MACrC,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,IAEA,UAAA,gBAAA,EAAC,GAAD;AAAA,MAAO,IAAI;AAAA,QAAE,eAAe;AAAA,QAAO,gBAAgB;AAAA,MAAS;AAAA,MAA5D,UAAA;AAAA,QACE,gBAAA,EAAC,GAAD;AAAA,UACE,IAAI;AAAA,YACF,SAAS;AAAA,YACT,wBAAwB;AAAA,YACxB,qBAAqB;AAAA,YACrB,GAAG;AAAA,YACH,IAAI;AAAA,UACN;AAAA,UAEC,UAAA,EAAM,QAAQ,SAAS,SACtB,gBAAA,EAAC,GAAD,EAAU,eAAa,GAAO,CAAA,IAE9B,gBAAA,EAAC,GAAD,EAAM,eAAa,GAAO,CAAA;AAAA,QAEvB,CAAA;AAAA,QACP,gBAAA,EAAC,GAAD;AAAA,UACE,IAAI,EACF,KAAK;AAAA,YACH,MAAM;AAAA,cACJ,mBAAmB,EACjB,MAAM,EAAM,QAAQ,WAAW,MACjC;AAAA,cACA,aAAa,EACX,QAAQ,EAAM,EAAM,QAAQ,SAAS,IAAI,EAC3C;AAAA,YACF;AAAA,YACA,MAAM,EACJ,MAAM,EAAM,QAAQ,WAAW,MACjC;AAAA,UACF,EACF;AAAA,UAEA,UAAA,gBAAA,EAAC,GAAD,EAAa,eAAa,GAAO,CAAA;AAAA,QAC5B,CAAA;AAAA,QACP,gBAAA,EAAC,GAAD;AAAA,UACE,IAAI;AAAA,YACF,SAAS;AAAA,YACT,yBAAyB;AAAA,YACzB,sBAAsB;AAAA,YACtB,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,IAAI;AAAA,YACJ,OAAO;AAAA,UACT;AAAA,UATF,UAAA,CAWE,gBAAA,EAAC,GAAD;AAAA,YAAM,OAAM;AAAA,YAAiB,SAAQ;AAAA,YAClC,UAAA;AAAA,UACG,CAAA,GACN,gBAAA,EAAC,GAAD;AAAA,YAAM,SAAQ;AAAA,YAAM,UAAA;AAAA,UAAa,CAAA,CAC5B;AAAA;MACF;AAAA;EACJ,CAAA;AAET"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { SxProps } from '@mui/material/styles';
|
|
3
|
+
interface StatusMessageCardProps {
|
|
4
|
+
/** Leading status icon (e.g. a check-circle). */
|
|
5
|
+
icon: ReactNode;
|
|
6
|
+
/** Status message. */
|
|
7
|
+
message: ReactNode;
|
|
8
|
+
/** Card surface color token. */
|
|
9
|
+
bgcolor?: string;
|
|
10
|
+
/** Card border color token. */
|
|
11
|
+
borderColor?: string;
|
|
12
|
+
/** Message text color token. */
|
|
13
|
+
messageColor?: string;
|
|
14
|
+
sx?: SxProps;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Single-line status/success message card: a leading icon and a bold message on
|
|
18
|
+
* a colored, bordered surface.
|
|
19
|
+
*
|
|
20
|
+
* Figma: the `All Categorized!` success state of Uncategorized Transactions V2
|
|
21
|
+
* (`Card / Content / Slot`) — green card (`success.100` bg, `success.main`
|
|
22
|
+
* border, radius 8), check-circle icon + bold message. Reusable for any
|
|
23
|
+
* icon + message status/empty state.
|
|
24
|
+
*
|
|
25
|
+
* Scope is the Content section only; Header/Description are out of scope.
|
|
26
|
+
*/
|
|
27
|
+
declare const StatusMessageCard: ({ bgcolor, borderColor, icon, message, messageColor, sx, }: StatusMessageCardProps) => import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export default StatusMessageCard;
|