diff --git a/frontend/src/components/ReportEditor/BandContext.js b/frontend/src/components/ReportEditor/BandContext.js
new file mode 100644
index 0000000..4c62919
--- /dev/null
+++ b/frontend/src/components/ReportEditor/BandContext.js
@@ -0,0 +1,49 @@
+import React, { createContext, useContext, useState } from 'react';
+
+/**
+ * Context for tracking band iteration state
+ * Used to provide current data item to elements inside bands
+ */
+const BandContext = createContext();
+
+export function BandProvider({ children, bandDataMap = {} }) {
+ // Map of bandId -> current data item
+ // Can be provided externally or managed internally
+ const [internalBandData, setInternalBandData] = useState({});
+
+ // Use external bandDataMap if provided, otherwise use internal state
+ const currentBandData = Object.keys(bandDataMap).length > 0 ? bandDataMap : internalBandData;
+
+ const setBandData = (bandId, data) => {
+ setInternalBandData(prev => ({
+ ...prev,
+ [bandId]: data
+ }));
+ };
+
+ const clearBandData = () => {
+ setInternalBandData({});
+ };
+
+ const removeBandData = (bandId) => {
+ setInternalBandData(prev => {
+ const newData = { ...prev };
+ delete newData[bandId];
+ return newData;
+ });
+ };
+
+ return (
+