diff --git a/packages/desktop-client/src/components/budget/index.tsx b/packages/desktop-client/src/components/budget/index.tsx
index 2d339b755ad..cad97746ba6 100644
--- a/packages/desktop-client/src/components/budget/index.tsx
+++ b/packages/desktop-client/src/components/budget/index.tsx
@@ -39,7 +39,7 @@ import { DynamicBudgetTable } from './DynamicBudgetTable';
import * as report from './report/ReportComponents';
import { ReportProvider } from './report/ReportContext';
import * as rollover from './rollover/RolloverComponents';
-import { RolloverContext } from './rollover/RolloverContext';
+import { RolloverProvider } from './rollover/RolloverContext';
import { prewarmAllMonths, prewarmMonth, switchBudgetType } from './util';
type ReportComponents = {
@@ -378,7 +378,7 @@ function BudgetInner(props: BudgetInnerProps) {
);
} else {
table = (
-
-
+
);
}
diff --git a/packages/desktop-client/src/components/budget/report/BalanceMenu.tsx b/packages/desktop-client/src/components/budget/report/BalanceMenu.tsx
new file mode 100644
index 00000000000..0878a98310b
--- /dev/null
+++ b/packages/desktop-client/src/components/budget/report/BalanceMenu.tsx
@@ -0,0 +1,44 @@
+import React, { type ComponentPropsWithoutRef } from 'react';
+
+import { reportBudget } from 'loot-core/src/client/queries';
+
+import { Menu } from '../../common/Menu';
+import { useSheetValue } from '../../spreadsheet/useSheetValue';
+
+type BalanceMenuProps = Omit<
+ ComponentPropsWithoutRef,
+ 'onMenuSelect' | 'items'
+> & {
+ categoryId: string;
+ onCarryover: (carryover: boolean) => void;
+};
+
+export function BalanceMenu({
+ categoryId,
+ onCarryover,
+ ...props
+}: BalanceMenuProps) {
+ const carryover = useSheetValue(reportBudget.catCarryover(categoryId));
+ return (
+