Integrate a fully functional page (html, css, js) in React

I have a standalone HTML, CSS, and js page that works on its own. The HTML loads js and CSS from cdns and also from files.

I want this to be integrated inside a next/react application. What I have right now is a custom URL for my page that just serves the static HTML file and it is working as expected.

The problem however is the login and user states. Since the file is static, it is hard to keep the information about the user login and other states in that file.

I tried to use the html-loader to load the HTML inside a dangerouslySetInnerHTML. And it does load the HTML. However, it doesn't load any JS or CSS files that are being loaded from the HTML file. Which I believe is something I need to solve. (Or it can just be an XY problem and hence the whole explanation before this).

Any help or nudge towards the right approach is appreciated. Thanks

Update: I tried to load all the files that I was importing in the HTML from the react app like this:

import "../public/heatmap/scripts/jquery.min.js"
import "../public/heatmap/scripts/heatmap.min.js"
import "../public/heatmap/scripts/bootstrap.bundle.min.js"
import "../public/heatmap/scripts/leaflet"
import "../public/heatmap/scripts/leaflet-heatmap"
import "../public/heatmap/scripts/main"
import "../public/heatmap/scripts/fetch_data"

But that yields in this error which I don't think makes sense as I am loading jquery before bootstrap.

Failed to parse source map: TypeError: Cannot read property 'line' of undefined
    at getNotFoundError (/Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js:1:816)
    at getModuleBuildError (/Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/webpackModuleError.js:1:2479)
    at /Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/index.js:1:562
    at Array.map (<anonymous>)
    at /Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/index.js:1:476
    at Hook.eval [as callAsync] (eval at create (/Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/compiled/webpack/bundle5.js:31934:10), <anonymous>:8:17)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/compiled/webpack/bundle5.js:31736:14)
    at /Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/compiled/webpack/bundle5.js:43260:38
    at eval (eval at create (/Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/compiled/webpack/bundle5.js:31934:10), <anonymous>:14:1)
    at Hook.eval [as callAsync] (eval at create (/Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/compiled/webpack/bundle5.js:31934:10), <anonymous>:6:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/compiled/webpack/bundle5.js:31736:14)
    at fn (/Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/compiled/webpack/bundle5.js:41174:45)
    at Hook.eval [as callAsync] (eval at create (/Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/compiled/webpack/bundle5.js:31934:10), <anonymous>:10:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/compiled/webpack/bundle5.js:31736:14)
    at cont (/Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/compiled/webpack/bundle5.js:43234:34)
    at /Users/pkoirala/Projects/csdap-frontend/node_modules/next/dist/compiled/webpack/bundle5.js:43280:10
error - ./public/heatmap/scripts/bootstrap.bundle.min.js:7:76
Module not found: Can't resolve 'jquery'
   5 |   */
   6 | !function(t, e) {
>  7 |     "object" == typeof exports && "undefined" != typeof module ? e(exports, require("jquery")) : "function" == typeof define && define.amd ? define(["exports", "jquery"], e) : e((t = "undefined" != typeof globalThis ? globalThis : t || self).bootstrap = {}, t.jQuery)
     |                                                                            ^
   8 | }(this, (function(t, e) {
   9 |     "use strict";
  10 |     function n(t) {

Solution 1:

Next.js has Head component:

import Head from "next/head";

this is where you set up metadata for the project. Also, you can load the cdn's here. For example:

<Head>

 <link
        href="https://fonts.googleapis.com/css2?family=Alice&family=Great+Vibes&family=Inconsolata&family=Indie+Flower&family=Lobster&family=Press+Start+2P&display=swap"
        rel="stylesheet"
      ></link>

 <script
        src="https://kit.fontawesome.com/fbadad80a0.js"
        crossOrigin="anonymous"
      ></script>

<Head/>

Use this component inside Header component or BaseLayout component. A compoenent that always get rendered in your project, so cdn's will be available.

Or alternatively you can install npm packages and import them inside pages/_app.js, so they will be globally available in your project. _app.js page is responsible for rendering our pages.

Be aware that using jquery inside a react might cause some bugs with event handling.