create-bluecopa-react-app 1.0.5 → 1.0.7

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.
Files changed (117) hide show
  1. package/README.md +47 -10
  2. package/bin/create-bluecopa-react-app.js +257 -51
  3. package/package.json +6 -5
  4. package/templates/latest/Agent.md +254 -0
  5. package/templates/latest/Dockerfile +22 -0
  6. package/templates/latest/README.md +157 -221
  7. package/templates/latest/app/app.css +134 -0
  8. package/templates/latest/app/app.tsx +46 -0
  9. package/templates/latest/app/components/app-sidebar.tsx +174 -0
  10. package/templates/latest/app/components/chart-area-interactive.tsx +290 -0
  11. package/templates/latest/app/components/data-table.tsx +807 -0
  12. package/templates/latest/app/components/nav-documents.tsx +92 -0
  13. package/templates/latest/app/components/nav-main.tsx +56 -0
  14. package/templates/latest/app/components/nav-secondary.tsx +42 -0
  15. package/templates/latest/app/components/nav-user.tsx +112 -0
  16. package/templates/latest/app/components/section-cards.tsx +102 -0
  17. package/templates/latest/app/components/site-header.tsx +19 -0
  18. package/templates/latest/app/components/ui/avatar.tsx +53 -0
  19. package/templates/latest/app/components/ui/badge.tsx +46 -0
  20. package/templates/latest/app/components/ui/breadcrumb.tsx +109 -0
  21. package/templates/latest/app/components/ui/button.tsx +58 -0
  22. package/templates/latest/app/components/ui/card.tsx +92 -0
  23. package/templates/latest/app/components/ui/chart.tsx +352 -0
  24. package/templates/latest/app/components/ui/checkbox.tsx +30 -0
  25. package/templates/latest/app/components/ui/drawer.tsx +139 -0
  26. package/templates/latest/app/components/ui/dropdown-menu.tsx +258 -0
  27. package/templates/latest/app/components/ui/input.tsx +21 -0
  28. package/templates/latest/app/components/ui/label.tsx +24 -0
  29. package/templates/latest/app/components/ui/select.tsx +183 -0
  30. package/templates/latest/app/components/ui/separator.tsx +26 -0
  31. package/templates/latest/app/components/ui/sheet.tsx +139 -0
  32. package/templates/latest/app/components/ui/sidebar.tsx +731 -0
  33. package/templates/latest/app/components/ui/skeleton.tsx +13 -0
  34. package/templates/latest/app/components/ui/sonner.tsx +23 -0
  35. package/templates/latest/app/components/ui/table.tsx +117 -0
  36. package/templates/latest/app/components/ui/tabs.tsx +66 -0
  37. package/templates/latest/app/components/ui/toggle-group.tsx +73 -0
  38. package/templates/latest/app/components/ui/toggle.tsx +47 -0
  39. package/templates/latest/app/components/ui/tooltip.tsx +59 -0
  40. package/templates/latest/app/dashboard/data.json +614 -0
  41. package/templates/latest/app/hooks/use-bluecopa-user.ts +37 -0
  42. package/templates/latest/app/hooks/use-mobile.ts +19 -0
  43. package/templates/latest/{src → app}/lib/utils.ts +1 -1
  44. package/templates/latest/app/main.tsx +12 -0
  45. package/templates/latest/app/routes/home.tsx +40 -0
  46. package/templates/latest/app/routes.tsx +15 -0
  47. package/templates/latest/{src → app}/single-spa.tsx +5 -5
  48. package/templates/latest/components.json +22 -0
  49. package/templates/latest/dist/assets/__federation_expose_App-DsPovvoo.js +147 -0
  50. package/templates/latest/dist/assets/__federation_fn_import-CzfA7kmP.js +438 -0
  51. package/templates/latest/dist/assets/__federation_shared_react-Bp6HVBS4.js +16 -0
  52. package/templates/latest/dist/assets/__federation_shared_react-dom-BCcRGiYp.js +17 -0
  53. package/templates/latest/dist/assets/client-BZh_TW_6.js +12662 -0
  54. package/templates/latest/dist/assets/home-CAuoIW4B.js +54951 -0
  55. package/templates/latest/dist/assets/index-BzNimew1.js +69 -0
  56. package/templates/latest/dist/assets/index-Clg7n7gy.js +60 -0
  57. package/templates/latest/dist/assets/index-DMFtQdNS.js +412 -0
  58. package/templates/latest/dist/assets/remoteEntry.css +3688 -0
  59. package/templates/latest/dist/assets/remoteEntry.js +88 -0
  60. package/templates/latest/dist/avatars/shadcn.svg +6 -0
  61. package/templates/latest/dist/favicon.ico +0 -0
  62. package/templates/latest/dist/index.html +19 -0
  63. package/templates/latest/index.html +1 -1
  64. package/templates/latest/package-lock.json +1227 -3353
  65. package/templates/latest/package.json +47 -43
  66. package/templates/latest/pnpm-lock.yaml +4767 -0
  67. package/templates/latest/preview/index.html +32 -2
  68. package/templates/latest/public/avatars/shadcn.svg +6 -0
  69. package/templates/latest/public/favicon.ico +0 -0
  70. package/templates/latest/tsconfig.json +19 -12
  71. package/templates/latest/vite.config.ts +47 -40
  72. package/templates/latest/.env.example +0 -14
  73. package/templates/latest/.eslintrc.cjs +0 -42
  74. package/templates/latest/AGENT.md +0 -282
  75. package/templates/latest/clean.sh +0 -40
  76. package/templates/latest/postcss.config.cjs +0 -6
  77. package/templates/latest/public/bluecopa-logo.svg +0 -30
  78. package/templates/latest/public/favicon-32x32.png +0 -0
  79. package/templates/latest/public/favicon-96x96.png +0 -0
  80. package/templates/latest/setup.sh +0 -56
  81. package/templates/latest/src/App.tsx +0 -19
  82. package/templates/latest/src/components/charts/AreaChart.tsx +0 -80
  83. package/templates/latest/src/components/charts/DonutChart.tsx +0 -73
  84. package/templates/latest/src/components/charts/SparkAreaChart.tsx +0 -52
  85. package/templates/latest/src/components/layout/dashboard-header.tsx +0 -139
  86. package/templates/latest/src/components/layout/dashboard-layout.tsx +0 -37
  87. package/templates/latest/src/components/layout/navbar.tsx +0 -106
  88. package/templates/latest/src/components/layout/sidebar.tsx +0 -55
  89. package/templates/latest/src/components/page/dashboard/DashboardMetrics.tsx +0 -97
  90. package/templates/latest/src/components/page/dashboard/PaymentMethodsAnalysis.tsx +0 -182
  91. package/templates/latest/src/components/page/dashboard/RevenueAnalytics.tsx +0 -505
  92. package/templates/latest/src/components/page/dashboard/SalesAnalytics.tsx +0 -313
  93. package/templates/latest/src/components/page/dashboard/TransactionsTable.tsx +0 -256
  94. package/templates/latest/src/components/page/dashboard/dashboard-utils.ts +0 -147
  95. package/templates/latest/src/components/page/dashboard/dashboard.tsx +0 -185
  96. package/templates/latest/src/components/tables/data-grid.tsx +0 -439
  97. package/templates/latest/src/components/ui/alert.tsx +0 -59
  98. package/templates/latest/src/components/ui/avatar.tsx +0 -50
  99. package/templates/latest/src/components/ui/badge.tsx +0 -36
  100. package/templates/latest/src/components/ui/bluecopa-logo.tsx +0 -57
  101. package/templates/latest/src/components/ui/button.tsx +0 -58
  102. package/templates/latest/src/components/ui/card.tsx +0 -79
  103. package/templates/latest/src/components/ui/dropdown-menu.tsx +0 -200
  104. package/templates/latest/src/components/ui/input.tsx +0 -24
  105. package/templates/latest/src/components/ui/label.tsx +0 -21
  106. package/templates/latest/src/components/ui/select.tsx +0 -27
  107. package/templates/latest/src/hooks/use-api.ts +0 -55
  108. package/templates/latest/src/index.css +0 -59
  109. package/templates/latest/src/main.tsx +0 -13
  110. package/templates/latest/src/pages/Dashboard.tsx +0 -13
  111. package/templates/latest/src/pages/Home.tsx +0 -622
  112. package/templates/latest/src/providers/query-provider.tsx +0 -48
  113. package/templates/latest/src/types/api.ts +0 -78
  114. package/templates/latest/src/vite-env.d.ts +0 -11
  115. package/templates/latest/tailwind.config.js +0 -87
  116. package/templates/latest/tsconfig.app.json +0 -32
  117. package/templates/latest/tsconfig.node.json +0 -14
@@ -0,0 +1,40 @@
1
+ import { AppSidebar } from "~/components/app-sidebar"
2
+ import { ChartAreaInteractive } from "~/components/chart-area-interactive"
3
+ import { DataTable } from "~/components/data-table"
4
+ import { SectionCards } from "~/components/section-cards"
5
+ import { SiteHeader } from "~/components/site-header"
6
+ import {
7
+ SidebarInset,
8
+ SidebarProvider,
9
+ } from "~/components/ui/sidebar"
10
+
11
+ import data from "~/dashboard/data.json"
12
+
13
+ export default function Page() {
14
+ return (
15
+ <SidebarProvider
16
+ style={
17
+ {
18
+ "--sidebar-width": "calc(var(--spacing) * 72)",
19
+ "--header-height": "calc(var(--spacing) * 12)",
20
+ } as React.CSSProperties
21
+ }
22
+ >
23
+ <AppSidebar variant="inset" />
24
+ <SidebarInset>
25
+ <SiteHeader />
26
+ <div className="flex flex-1 flex-col">
27
+ <div className="@container/main flex flex-1 flex-col gap-2">
28
+ <div className="flex flex-col gap-4 py-4 md:gap-6 md:py-6">
29
+ <SectionCards />
30
+ <div className="px-4 lg:px-6">
31
+ <ChartAreaInteractive />
32
+ </div>
33
+ <DataTable data={data} />
34
+ </div>
35
+ </div>
36
+ </div>
37
+ </SidebarInset>
38
+ </SidebarProvider>
39
+ )
40
+ }
@@ -0,0 +1,15 @@
1
+ import { Routes, Route, Navigate } from "react-router-dom";
2
+ import { lazy } from "react";
3
+ import "./app.css";
4
+
5
+ const Home = lazy(() => import('~/routes/home'))
6
+
7
+
8
+ export default function RouteConfig() {
9
+ return (
10
+ <Routes>
11
+ <Route path="/" element={<Home />} />
12
+ <Route path="*" element={<Navigate to="/" replace />} />
13
+ </Routes>
14
+ );
15
+ }
@@ -1,9 +1,9 @@
1
1
  import React from "react";
2
- import { createRoot, Root } from "react-dom/client";
2
+ import { createRoot, type Root } from "react-dom/client";
3
3
  import singleSpaReact from "single-spa-react";
4
4
  import { MemoryRouter, BrowserRouter } from "react-router-dom";
5
- import App from "./App";
6
- import { AppProps } from "single-spa";
5
+ import App from "./app";
6
+ import type { AppProps } from "single-spa";
7
7
 
8
8
  // Single-spa lifecycle props interface
9
9
  interface LifecycleProps {
@@ -48,10 +48,10 @@ const lifecycles = singleSpaReact({
48
48
  },
49
49
  renderType: "createRoot",
50
50
  domElementGetter: () => {
51
- const el = document.getElementById("single-spa-application:pnl-explorer");
51
+ const el = document.getElementById("single-spa-application:bluecopa-preview");
52
52
  if (!el)
53
53
  throw new Error(
54
- "Mount target #single-spa-application:pnl-explorer not found"
54
+ "Mount target #single-spa-application:bluecopa-preview not found"
55
55
  );
56
56
  return el;
57
57
  },
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "new-york",
4
+ "rsc": false,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "",
8
+ "css": "app/app.css",
9
+ "baseColor": "gray",
10
+ "cssVariables": true,
11
+ "prefix": ""
12
+ },
13
+ "iconLibrary": "lucide",
14
+ "aliases": {
15
+ "components": "~/components",
16
+ "utils": "~/lib/utils",
17
+ "ui": "~/components/ui",
18
+ "lib": "~/lib",
19
+ "hooks": "~/hooks"
20
+ },
21
+ "registries": {}
22
+ }
@@ -0,0 +1,147 @@
1
+ System.register(['./__federation_fn_import-CzfA7kmP.js', './client-BZh_TW_6.js'], (function (exports, module) {
2
+ 'use strict';
3
+ var importShared, jsxRuntimeExports, clientExports, MemoryRouter, BrowserRouter, App;
4
+ return {
5
+ setters: [module => {
6
+ importShared = module.importShared;
7
+ }, module => {
8
+ jsxRuntimeExports = module.j;
9
+ clientExports = module.c;
10
+ MemoryRouter = module.M;
11
+ BrowserRouter = module.B;
12
+ App = module.A;
13
+ }],
14
+ execute: (async function () {
15
+
16
+ function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o);}return n}function t(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?e(Object(r),true).forEach((function(e){o(t,e,r[e]);})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):e(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e));}));}return t}function n(e){return (n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:true,configurable:true,writable:true}):e[t]=n,e}function r(e){return (r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(e,t){var n;if("function"!=typeof(n=t.domElement?function(){return t.domElement}:t.domElementGetter?t.domElementGetter:e.domElementGetter?e.domElementGetter:function(e){var t=e.appName||e.name;if(!t)throw Error("single-spa's dom-element-getter-helpers was not given an application name as a prop, so it can't make a unique dom element container for the react application");var n="single-spa-application:".concat(t);return function(){var e=document.getElementById(n);return e||((e=document.createElement("div")).id=n,document.body.appendChild(e)),e}}(t)))throw Error("single-spa's dom-element-getter-helpers was given an invalid domElementGetter for application or parcel '".concat(t.name,"'. Expected a function, received ").concat(r(n)));return function(){var e=n(t);if(!(e instanceof HTMLElement))throw Error("single-spa's dom-element-getter-helpers: domElementGetter returned an invalid dom element for application or parcel '".concat(t.name,"'. Expected HTMLElement, received ").concat(r(e)));return e}}var c=null;try{c=require("react").createContext();}catch(e){}var u={React:null,ReactDOM:null,ReactDOMClient:null,rootComponent:null,loadRootComponent:null,errorBoundary:null,errorBoundaryClass:null,domElementGetter:null,parcelCanUpdate:true,suppressComponentDidCatchWarning:false,domElements:{},renderResults:{},updateResolves:{},unmountResolves:{}};function i(e){if("object"!==n(e))throw new Error("single-spa-react requires a configuration object");var o,r=t(t({},u),e);if(!r.React)throw new Error("single-spa-react must be passed opts.React");if(!r.ReactDOM&&!r.ReactDOMClient)throw new Error("single-spa-react must be passed opts.ReactDOM or opts.ReactDOMClient");r.renderType||(null!==(o=r.ReactDOMClient)&&void 0!==o&&o.createRoot?r.renderType="createRoot":r.renderType="render");if(!r.rootComponent&&!r.loadRootComponent)throw new Error("single-spa-react must be passed opts.rootComponent or opts.loadRootComponent");if(r.errorBoundary&&"function"!=typeof r.errorBoundary)throw Error("The errorBoundary opt for single-spa-react must either be omitted or be a function that returns React elements");!c&&r.React.createContext&&(c=r.React.createContext()),r.SingleSpaRoot=function(e){function t(e){t.displayName="SingleSpaRoot(".concat(e.name,")");}return t.prototype=Object.create(e.React.Component.prototype),t.prototype.componentDidMount=function(){setTimeout(this.props.mountFinished);},t.prototype.componentWillUnmount=function(){setTimeout(this.props.unmountFinished);},t.prototype.render=function(){return setTimeout(this.props.updateFinished),this.props.children},t}(r);var a={bootstrap:s.bind(null,r),mount:p.bind(null,r),unmount:l.bind(null,r)};return r.parcelCanUpdate&&(a.update=m.bind(null,r)),a}function s(e,t){return e.rootComponent?Promise.resolve():e.loadRootComponent(t).then((function(t){e.rootComponent=t;}))}function p(e,t){return new Promise((function(n,o){e.suppressComponentDidCatchWarning||!function(e){if(!(e&&"string"==typeof e.version&&e.version.indexOf(".")>=0))return false;var t=e.version.slice(0,e.version.indexOf("."));try{return Number(t)>=16}catch(e){return false}}(e.React)||e.errorBoundary||e.errorBoundaryClass||(e.rootComponent.prototype?e.rootComponent.prototype.componentDidCatch||console.warn("single-spa-react: ".concat(t.name||t.appName||t.childAppName,"'s rootComponent should implement componentDidCatch to avoid accidentally unmounting the entire single-spa application.")):console.warn("single-spa-react: ".concat(t.name||t.appName||t.childAppName,"'s rootComponent does not implement an error boundary. If using a functional component, consider providing an opts.errorBoundary to singleSpaReact(opts).")));var r=y(e,t,(function(){n(this);})),c=a(e,t)(),u=function(e){var t=e.reactDom,n=e.renderType,o=e.elementToRender,r=e.domElement,a=t[n];if("function"!=typeof a)throw new Error('renderType "'.concat(n,'" did not return a function.'));switch(n){case "createRoot":case "unstable_createRoot":case "createBlockingRoot":case "unstable_createBlockingRoot":var c=a(r);return c.render(o),c;case "hydrateRoot":return a(r,o);case "hydrate":default:return a(o,r),null}}({elementToRender:r,domElement:c,reactDom:d(e),renderType:f(e)});e.domElements[t.name]=c,e.renderResults[t.name]=u;}))}function l(e,t){return new Promise((function(n){e.unmountResolves[t.name]=n;var o=e.renderResults[t.name];o&&o.unmount?o.unmount():d(e).unmountComponentAtNode(e.domElements[t.name]),delete e.domElements[t.name],delete e.renderResults[t.name];}))}function m(e,t){return new Promise((function(n){e.updateResolves[t.name]||(e.updateResolves[t.name]=[]),e.updateResolves[t.name].push(n);var o=y(e,t,null),r=e.renderResults[t.name];if(r&&r.render)r.render(o);else {var c=a(e,t)();d(e).render(o,c);}}))}function d(e){return e.ReactDOMClient||e.ReactDOM}function f(e){return "function"==typeof e.renderType?e.renderType():e.renderType}function y(e,n,o){var r=e.React.createElement(e.rootComponent,n),a=c?e.React.createElement(c.Provider,{value:n},r):r;return (e.errorBoundary||n.errorBoundary||e.errorBoundaryClass||n.errorBoundaryClass)&&(e.errorBoundaryClass=e.errorBoundaryClass||n.errorBoundaryClass||function(e,t){function n(t){e.React.Component.apply(this,arguments),this.state={caughtError:null,caughtErrorInfo:null},n.displayName="SingleSpaReactErrorBoundary(".concat(t.name,")");}return n.prototype=Object.create(e.React.Component.prototype),n.prototype.render=function(){return this.state.caughtError?(e.errorBoundary||t.errorBoundary)(this.state.caughtError,this.state.caughtErrorInfo,this.props):this.props.children},n.prototype.componentDidCatch=function(e,t){this.setState({caughtError:e,caughtErrorInfo:t});},n}(e,n),a=e.React.createElement(e.errorBoundaryClass,n,a)),a=e.React.createElement(e.SingleSpaRoot,t(t({},n),{},{mountFinished:o,updateFinished:function(){e.updateResolves[n.name]&&(e.updateResolves[n.name].forEach((function(e){return e()})),delete e.updateResolves[n.name]);},unmountFinished:function(){e.unmountResolves[n.name]&&(e.unmountResolves[n.name](),delete e.unmountResolves[n.name]);}}),a)}
17
+
18
+ const React = await importShared('react');
19
+ let root = null;
20
+ const injectStylesIntoShadowDOM = exports("injectStylesIntoShadowDOM", (styles) => {
21
+ const shadowRoot = window.__microfrontendShadowRoot;
22
+ if (shadowRoot) {
23
+ const styleElement = document.createElement("style");
24
+ const stylesArray = Array.isArray(styles) ? styles : [styles];
25
+ styleElement.textContent = stylesArray.join("\n");
26
+ shadowRoot.appendChild(styleElement);
27
+ console.log("Styles injected into shadow DOM");
28
+ } else {
29
+ console.warn("Shadow DOM not available for style injection");
30
+ }
31
+ });
32
+ const loadCSSIntoShadowDOM = exports("loadCSSIntoShadowDOM", async (cssUrls) => {
33
+ const shadowRoot = window.__microfrontendShadowRoot;
34
+ if (shadowRoot) {
35
+ const urlsArray = Array.isArray(cssUrls) ? cssUrls : [cssUrls];
36
+ for (const cssUrl of urlsArray) {
37
+ try {
38
+ console.log(`Loading CSS file: ${cssUrl}`);
39
+ const linkElement = document.createElement("link");
40
+ linkElement.rel = "stylesheet";
41
+ linkElement.href = cssUrl;
42
+ linkElement.onload = () => console.log(`CSS loaded: ${cssUrl}`);
43
+ linkElement.onerror = () => console.warn(`Failed to load CSS: ${cssUrl}`);
44
+ shadowRoot.appendChild(linkElement);
45
+ await new Promise((resolve) => setTimeout(resolve, 100));
46
+ } catch (error) {
47
+ console.warn(`Failed to load CSS: ${cssUrl}`, error);
48
+ }
49
+ }
50
+ } else {
51
+ console.warn("Shadow DOM not available for CSS loading");
52
+ }
53
+ });
54
+ const MicrofrontendRoot = ({ basename = "/", isMicroFrontend = false }) => {
55
+ const Router = isMicroFrontend ? MemoryRouter : BrowserRouter;
56
+ const routerProps = isMicroFrontend ? {} : { basename };
57
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { width: "100%", height: "100%", overflow: "auto" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Router, { ...routerProps, children: /* @__PURE__ */ jsxRuntimeExports.jsx(App, {}) }) });
58
+ };
59
+ const lifecycles = i({
60
+ React,
61
+ ReactDOMClient: { createRoot: clientExports.createRoot },
62
+ rootComponent: (props) => /* @__PURE__ */ jsxRuntimeExports.jsx(MicrofrontendRoot, { isMicroFrontend: true, basename: props.basename }),
63
+ errorBoundary: (err, info) => {
64
+ console.error("Microfrontend Single-spa Error:", err, info);
65
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Something went wrong loading Microfrontend" });
66
+ },
67
+ renderType: "createRoot",
68
+ domElementGetter: () => {
69
+ const el = document.getElementById("single-spa-application:bluecopa-preview");
70
+ if (!el)
71
+ throw new Error(
72
+ "Mount target #single-spa-application:bluecopa-preview not found"
73
+ );
74
+ return el;
75
+ }
76
+ });
77
+ const { mount, unmount, bootstrap } = lifecycles; exports({ mount, unmount, bootstrap });
78
+ const manualMount = exports("manualMount", async (props) => {
79
+ if (!props.domElement) {
80
+ throw new Error("domElement is required for mounting the application");
81
+ }
82
+ try {
83
+ if (root) {
84
+ root.unmount();
85
+ root = null;
86
+ }
87
+ injectStylesIntoShadowDOM(`
88
+ /* Basic reset for microfrontend */
89
+ * {
90
+ box-sizing: border-box;
91
+ }
92
+
93
+ body {
94
+ margin: 0;
95
+ padding: 0;
96
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
97
+ font-size: 14px;
98
+ line-height: 1.5;
99
+ color: #000;
100
+ }
101
+
102
+ /* Ensure proper display */
103
+ #microfrontend-container {
104
+ width: 100%;
105
+ height: 100%;
106
+ overflow: auto;
107
+ }
108
+ `);
109
+ root = clientExports.createRoot(props.domElement);
110
+ root.render(
111
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
112
+ MicrofrontendRoot,
113
+ {
114
+ isMicroFrontend: true,
115
+ basename: props.basename || "/app/external/microfrontend"
116
+ }
117
+ )
118
+ );
119
+ console.log("Microfrontend mounted successfully");
120
+ return;
121
+ } catch (error) {
122
+ console.error("Failed to mount Microfrontend:", error);
123
+ throw error;
124
+ }
125
+ });
126
+ const manualUnmount = exports("manualUnmount", async () => {
127
+ try {
128
+ if (root) {
129
+ root.unmount();
130
+ root = null;
131
+ }
132
+ console.log("Microfrontend unmounted successfully");
133
+ return Promise.resolve();
134
+ } catch (error) {
135
+ console.error("Failed to unmount Microfrontend:", error);
136
+ return Promise.reject(error);
137
+ }
138
+ });
139
+ const singleSpa = exports("default", {
140
+ mount: manualMount,
141
+ unmount: manualUnmount,
142
+ bootstrap: () => Promise.resolve()
143
+ });
144
+
145
+ })
146
+ };
147
+ }));