Rendering 2 dash apps in Flask

Hello, I am trying to render 2 dash apps using Flask, the problem I phase is one of the apps loses its callback interactivity aspects. Could you kindly assist below are the codes I am using.

Thanks in advance for your assistance!

app.py

from flask import Flask, render_template, redirect
from flask.helpers import url_for
from flask_bootstrap import Bootstrap
from dash_app.regions import create_regional_app
from dash_app.products import create_products_app

app = Flask(__name__)
create_regional_app(app)
create_products_app(app)
# Home route
@app.route("/")
def index():
    return render_template("index.html")

if __name__ == "__main__":
    app.run(debug=True)

region.py

import dash
from dash import Dash, html, dcc, Input, Output, callback, dash_table
import dash_bootstrap_components as dbc
import plotly.express as px
import plotly.graph_objects as go
import dash_app
import pandas as pd


data = pd.read_csv('data/sales_data.csv')
# print(data)

app = Dash()

def create_regional_app(flask_app):

    dash_app = dash.Dash(
        server=flask_app, name="Dashboard", url_base_pathname=("/dash/"), suppress_callback_exceptions=True,
    )

    dash_app.layout = html.Div(children=[

        html.Div([

            # Region dropdown
            html.Label('Region:', style={'color': '#0C359E'}, ),
            dcc.Dropdown(id='region_filter',
                         options=[{'label': 'All Regions', 'value': 'all_values'}] + [{'label': i, 'value': i}
                                                                                      for i in
                                                                                      (data['regions'].unique())],
                         value='all_values',
                         clearable=False,
                         disabled=False,
                         style={'display': True, 'width': '180px'},
                         multi=False,
                         searchable=True,
                         optionHeight=50,
                         className='dcc_compon'
                         ),

            # Sub Region   > This will be dependent on Region Filter
            html.Label('Town:', style={'color': '#0C359E'}),
            dcc.Dropdown(id='town_filter',
                         options=[],
                         value='all_values',
                         clearable=False,
                         disabled=False,
                         style={'display': True, 'width': '180px'},
                         multi=False,
                         searchable=True,
                         optionHeight=50,
                         className='dcc_compon'
                         ),
        ]),








    ])

    # 1. callback to list Town based on Region selected

    @callback(Output('town_filter', 'options', allow_duplicate=True),
              [Input('region_filter', 'value')],
              prevent_initial_call='initial_duplicate'
              )
    def update_region(town_filter):
        data1 = data[data['regions'] == town_filter]
        return [{'label': 'All Towns', 'value': 'all_values'}] + [{'label': i, 'value': i} for i in
                                                                      data1['town'].unique()]


    @callback(Output('town_filter', 'value', allow_duplicate=True),
              [Input('town_filter', 'options')],
              prevent_initial_call=True)
    def update_town(town_filter):
        return [k['value'] for k in town_filter][0]

products.py

import dash
from dash import Dash, html, dcc, Input, Output, callback, dash_table
import dash_bootstrap_components as dbc
import plotly.express as px
import plotly.graph_objects as go
import dash_app
import pandas as pd


data = pd.read_csv('data/sales_data.csv')
# print(data)

app = Dash()

def create_products_app(flask_app):

    dash_app = dash.Dash(
        server=flask_app, name="Products Dashboard", url_base_pathname=("/products/"), suppress_callback_exceptions=True,
    )

    dash_app.layout = html.Div(children=[

        html.Div([

            # Region dropdown
            html.Label('Category:', style={'color': '#0C359E'}, ),
            dcc.Dropdown(id='category_filter',
                         options=[{'label': 'All Categories', 'value': 'all_values'}] + [{'label': i, 'value': i}
                                                                                      for i in
                                                                                      (data['category'].unique())],
                         value='all_values',
                         clearable=False,
                         disabled=False,
                         style={'display': True, 'width': '180px'},
                         multi=False,
                         searchable=True,
                         optionHeight=50,
                         className='dcc_compon'
                         ),

            # Product   > This will be dependent on Product Filter
            html.Label('Product:', style={'color': '#0C359E'}),
            dcc.Dropdown(id='product_filter',
                         options=[],
                         value='all_values',
                         clearable=False,
                         disabled=False,
                         style={'display': True, 'width': '180px'},
                         multi=False,
                         searchable=True,
                         optionHeight=50,
                         className='dcc_compon'
                         ),
        ]),

    ])

    # 1. callback to list Product based on Category selected

    @callback(Output('product_filter', 'options', allow_duplicate=True),
              [Input('category_filter', 'value')],
              prevent_initial_call='initial_duplicate'
              )
    def update_region(product_filter):
        data1 = data[data['category'] == product_filter]
        return [{'label': 'All Products', 'value': 'all_values'}] + [{'label': i, 'value': i} for i in
                                                                  data1['products'].unique()]

    @callback(Output('product_filter', 'value', allow_duplicate=True),
              [Input('product_filter', 'options')],
              prevent_initial_call=True)
    def update_town(product_filter):
        return [k['value'] for k in product_filter][0]

datas sample