@cullsin/lnc-menu 7.1.1 → 7.1.3
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.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/src/SideMenu.d.ts +4 -3
- package/dist/src/SideMenu.js +2 -2
- package/dist/src/autoInjectTenantFallbackCss.d.ts +1 -0
- package/dist/src/autoInjectTenantFallbackCss.js +3 -0
- package/dist/src/generatedTenantFallbackCss.d.ts +2 -0
- package/dist/src/generatedTenantFallbackCss.js +2 -0
- package/dist/src/injectTenantFallbackCss.d.ts +1 -0
- package/dist/src/injectTenantFallbackCss.js +31 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +16 -5
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { default as SideMenu } from './src/SideMenu';
|
|
2
2
|
export { getTranslations, en, es } from './src/translations';
|
|
3
3
|
export type { Language, Translations } from './src/translations';
|
|
4
|
-
import './src/
|
|
4
|
+
import './src/autoInjectTenantFallbackCss';
|
|
5
5
|
import './src/sidemenu.scss';
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { default as SideMenu } from './src/SideMenu';
|
|
2
2
|
export { getTranslations, en, es } from './src/translations';
|
|
3
|
-
import './src/
|
|
3
|
+
import './src/autoInjectTenantFallbackCss';
|
|
4
4
|
import './src/sidemenu.scss'; // consumer must support SCSS
|
package/dist/src/SideMenu.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { Location, NavigateFunction } from "react-router-dom";
|
|
2
1
|
import { Language } from "./translations";
|
|
3
2
|
interface SideMenuProps {
|
|
4
3
|
useDrawer: () => {
|
|
5
4
|
isDrawerOpen: boolean;
|
|
6
5
|
toggleDrawer: () => void;
|
|
7
6
|
};
|
|
8
|
-
navigate:
|
|
9
|
-
location:
|
|
7
|
+
navigate: (to: string) => void;
|
|
8
|
+
location: {
|
|
9
|
+
pathname: string;
|
|
10
|
+
};
|
|
10
11
|
language?: Language;
|
|
11
12
|
module?: 'sample' | 'patient';
|
|
12
13
|
}
|
package/dist/src/SideMenu.js
CHANGED
|
@@ -3,7 +3,7 @@ import RecentActorsOutlinedIcon from "@mui/icons-material/RecentActorsOutlined";
|
|
|
3
3
|
import Box from "@mui/material/Box";
|
|
4
4
|
import Drawer from "@mui/material/Drawer";
|
|
5
5
|
import List from "@mui/material/List";
|
|
6
|
-
import
|
|
6
|
+
import ListItemButton from "@mui/material/ListItemButton";
|
|
7
7
|
import ListItemIcon from "@mui/material/ListItemIcon";
|
|
8
8
|
import ListItemText from "@mui/material/ListItemText";
|
|
9
9
|
import Tooltip from "@mui/material/Tooltip";
|
|
@@ -85,7 +85,7 @@ function SideMenu({ useDrawer, location, language = 'en', module }) {
|
|
|
85
85
|
background: "transparent",
|
|
86
86
|
},
|
|
87
87
|
},
|
|
88
|
-
}, children: _jsx(List, { sx: { padding: "var(--side-menu-padding, 0)", paddingTop: "8px" }, children: menuItems.map((item, index) => (_jsx(Tooltip, { title: item.text, placement: "right", disableHoverListener: isDrawerOpen, children: _jsxs(
|
|
88
|
+
}, children: _jsx(List, { sx: { padding: "var(--side-menu-padding, 0)", paddingTop: "8px" }, children: menuItems.map((item, index) => (_jsx(Tooltip, { title: item.text, placement: "right", disableHoverListener: isDrawerOpen, children: _jsxs(ListItemButton, { selected: selectedMainMenu === item.text, className: isDrawerOpen ? "menu-open" : "menu-closed", onClick: () => handleMenuClick(item), sx: {
|
|
89
89
|
padding: "var(--side-menu-item-padding, 8px)",
|
|
90
90
|
margin: "var(--side-menu-item-margin, 4px 8px)",
|
|
91
91
|
borderRadius: "var(--side-menu-item-radius, 8px)",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const tenantFallbackCss = "/* ================================================================\r\n TENANT MODULE CSS \u2014 lnc-menu-npm-fe\r\n Auto-generated by generate-tenant-css.js\r\n Branch scanned: filesystem\r\n Covers: CSS var() references, SCSS $variables, and hardcoded\r\n brand values detected in component files.\r\n ================================================================ */\r\n\r\n\n/* \u00E2\u201D\u20AC\u00E2\u201D\u20AC FONT FACES: local dev fallback (generate-tenant-css) \u00E2\u201D\u20AC\u00E2\u201D\u20AC\u00E2\u201D\u20AC\u00E2\u201D\u20AC\u00E2\u201D\u20AC\u00E2\u201D\u20AC\u00E2\u201D\u20AC\u00E2\u201D\u20AC\u00E2\u201D\u20AC\u00E2\u201D\u20AC\u00E2\u201D\u20AC\u00E2\u201D\u20AC\u00E2\u201D\u20AC\u00E2\u201D\u20AC */\n/* @font-face rules for local dev fallback. In production the CDN\n tenant.css @font-face declarations (built by generate-tenant-all.js)\n load via injectTenantCss() and override these automatically.\n To change the local font path, update LOCAL_FONT_BASE_URL above. */\n@font-face {\n font-family: \"OpenSans-Light\";\n src: url(\"/asset/font/OpenSans-Light.ttf\") format(\"truetype\");\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-LightItalic\";\n src: url(\"/asset/font/OpenSans-LightItalic.ttf\") format(\"truetype\");\n font-weight: 300;\n font-style: italic;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-Regular\";\n src: url(\"/asset/font/OpenSans-Regular.ttf\") format(\"truetype\");\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-Italic\";\n src: url(\"/asset/font/OpenSans-Italic.ttf\") format(\"truetype\");\n font-weight: 400;\n font-style: italic;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-Medium\";\n src: url(\"/asset/font/OpenSans-Medium.ttf\") format(\"truetype\");\n font-weight: 500;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-MediumItalic\";\n src: url(\"/asset/font/OpenSans-MediumItalic.ttf\") format(\"truetype\");\n font-weight: 500;\n font-style: italic;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-SemiBold\";\n src: url(\"/asset/font/OpenSans-SemiBold.ttf\") format(\"truetype\");\n font-weight: 600;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-SemiBoldItalic\";\n src: url(\"/asset/font/OpenSans-SemiBoldItalic.ttf\") format(\"truetype\");\n font-weight: 600;\n font-style: italic;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-Bold\";\n src: url(\"/asset/font/OpenSans-Bold.ttf\") format(\"truetype\");\n font-weight: 700;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-BoldItalic\";\n src: url(\"/asset/font/OpenSans-BoldItalic.ttf\") format(\"truetype\");\n font-weight: 700;\n font-style: italic;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-ExtraBold\";\n src: url(\"/asset/font/OpenSans-ExtraBold.ttf\") format(\"truetype\");\n font-weight: 800;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-ExtraBoldItalic\";\n src: url(\"/asset/font/OpenSans-ExtraBoldItalic.ttf\") format(\"truetype\");\n font-weight: 800;\n font-style: italic;\n font-display: swap;\n}\n/* \u00E2\u201D\u20AC\u00E2\u201D\u20AC END FONT FACES \u00E2\u201D\u20AC\u00E2\u201D\u20AC */\n\n/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n MODULE: side-menu (lnc-menu-npm-fe)\r\n CSS custom-properties consumed by this micro-frontend.\r\n These are default / fallback values overridden by tenant.css.\r\n \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 */\r\n:root {\r\n --color-scrollbar-thumb: rgba(255,255,255,0.2);\r\n --side-menu-bg: #1e2f97;\r\n --side-menu-bg-gradient: linear-gradient(180deg, #1e2f97, #0b1659);\r\n --side-menu-border-right: 1px solid rgba(255, 255, 255, 0.08);\r\n --side-menu-icon-color-active: #ffffff;\r\n --side-menu-icon-color-default: rgba(255, 255, 255, 0.70);\r\n --side-menu-icon-size: 24px;\r\n --side-menu-item-active-bg: #1aa7ee;\r\n --side-menu-item-active-hover-bg: #0a8bcc;\r\n --side-menu-item-bg-default: transparent;\r\n --side-menu-item-hover-bg: rgba(255, 255, 255, 0.08);\r\n --side-menu-item-margin: 4px 8px;\r\n --side-menu-item-padding: 8px;\r\n --side-menu-item-radius: 8px;\r\n --side-menu-item-width-closed: 40px;\r\n --side-menu-item-width-open: 198px;\r\n --side-menu-list-color: rgba(255, 255, 255, 0.87);\r\n --side-menu-more-menu-color: rgba(255, 255, 255, 0.87);\r\n --side-menu-more-menu-font-size: 14px;\r\n --side-menu-padding: 0;\r\n --side-menu-popover-radius: 4px;\r\n --side-menu-text-color-active: #ffffff;\r\n --side-menu-text-color-default: rgba(255, 255, 255, 0.87);\r\n --side-menu-text-font-family: inherit;\r\n --side-menu-text-font-size: 14px;\r\n --side-menu-text-line-height: 1.4;\r\n --size-header-height: 65px;\r\n}\r\n";
|
|
2
|
+
export default tenantFallbackCss;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const tenantFallbackCss = "/* ================================================================\r\n TENANT MODULE CSS — lnc-menu-npm-fe\r\n Auto-generated by generate-tenant-css.js\r\n Branch scanned: filesystem\r\n Covers: CSS var() references, SCSS $variables, and hardcoded\r\n brand values detected in component files.\r\n ================================================================ */\r\n\r\n\n/* ── FONT FACES: local dev fallback (generate-tenant-css) ────────────── */\n/* @font-face rules for local dev fallback. In production the CDN\n tenant.css @font-face declarations (built by generate-tenant-all.js)\n load via injectTenantCss() and override these automatically.\n To change the local font path, update LOCAL_FONT_BASE_URL above. */\n@font-face {\n font-family: \"OpenSans-Light\";\n src: url(\"/asset/font/OpenSans-Light.ttf\") format(\"truetype\");\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-LightItalic\";\n src: url(\"/asset/font/OpenSans-LightItalic.ttf\") format(\"truetype\");\n font-weight: 300;\n font-style: italic;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-Regular\";\n src: url(\"/asset/font/OpenSans-Regular.ttf\") format(\"truetype\");\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-Italic\";\n src: url(\"/asset/font/OpenSans-Italic.ttf\") format(\"truetype\");\n font-weight: 400;\n font-style: italic;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-Medium\";\n src: url(\"/asset/font/OpenSans-Medium.ttf\") format(\"truetype\");\n font-weight: 500;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-MediumItalic\";\n src: url(\"/asset/font/OpenSans-MediumItalic.ttf\") format(\"truetype\");\n font-weight: 500;\n font-style: italic;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-SemiBold\";\n src: url(\"/asset/font/OpenSans-SemiBold.ttf\") format(\"truetype\");\n font-weight: 600;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-SemiBoldItalic\";\n src: url(\"/asset/font/OpenSans-SemiBoldItalic.ttf\") format(\"truetype\");\n font-weight: 600;\n font-style: italic;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-Bold\";\n src: url(\"/asset/font/OpenSans-Bold.ttf\") format(\"truetype\");\n font-weight: 700;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-BoldItalic\";\n src: url(\"/asset/font/OpenSans-BoldItalic.ttf\") format(\"truetype\");\n font-weight: 700;\n font-style: italic;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-ExtraBold\";\n src: url(\"/asset/font/OpenSans-ExtraBold.ttf\") format(\"truetype\");\n font-weight: 800;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: \"OpenSans-ExtraBoldItalic\";\n src: url(\"/asset/font/OpenSans-ExtraBoldItalic.ttf\") format(\"truetype\");\n font-weight: 800;\n font-style: italic;\n font-display: swap;\n}\n/* ── END FONT FACES ── */\n\n/* ═══════════════════════════════════════════════════════════════\r\n MODULE: side-menu (lnc-menu-npm-fe)\r\n CSS custom-properties consumed by this micro-frontend.\r\n These are default / fallback values overridden by tenant.css.\r\n ═══════════════════════════════════════════════════════════════ */\r\n:root {\r\n --color-scrollbar-thumb: rgba(255,255,255,0.2);\r\n --side-menu-bg: #1e2f97;\r\n --side-menu-bg-gradient: linear-gradient(180deg, #1e2f97, #0b1659);\r\n --side-menu-border-right: 1px solid rgba(255, 255, 255, 0.08);\r\n --side-menu-icon-color-active: #ffffff;\r\n --side-menu-icon-color-default: rgba(255, 255, 255, 0.70);\r\n --side-menu-icon-size: 24px;\r\n --side-menu-item-active-bg: #1aa7ee;\r\n --side-menu-item-active-hover-bg: #0a8bcc;\r\n --side-menu-item-bg-default: transparent;\r\n --side-menu-item-hover-bg: rgba(255, 255, 255, 0.08);\r\n --side-menu-item-margin: 4px 8px;\r\n --side-menu-item-padding: 8px;\r\n --side-menu-item-radius: 8px;\r\n --side-menu-item-width-closed: 40px;\r\n --side-menu-item-width-open: 198px;\r\n --side-menu-list-color: rgba(255, 255, 255, 0.87);\r\n --side-menu-more-menu-color: rgba(255, 255, 255, 0.87);\r\n --side-menu-more-menu-font-size: 14px;\r\n --side-menu-padding: 0;\r\n --side-menu-popover-radius: 4px;\r\n --side-menu-text-color-active: #ffffff;\r\n --side-menu-text-color-default: rgba(255, 255, 255, 0.87);\r\n --side-menu-text-font-family: inherit;\r\n --side-menu-text-font-size: 14px;\r\n --side-menu-text-line-height: 1.4;\r\n --size-header-height: 65px;\r\n}\r\n";
|
|
2
|
+
export default tenantFallbackCss;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function injectTenantFallbackCss(cssText: string): void;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const TENANT_FALLBACK_STYLE_ID = "tenant-fallback-css";
|
|
2
|
+
function rewriteFallbackAssetUrls(cssText) {
|
|
3
|
+
var _a, _b;
|
|
4
|
+
const baseUrl = (_b = (_a = import.meta.env) === null || _a === void 0 ? void 0 : _a.BASE_URL) !== null && _b !== void 0 ? _b : "/";
|
|
5
|
+
const normalizedBaseUrl = baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
|
|
6
|
+
return cssText.replace(/url\((["']?)\/asset\//g, `url($1${normalizedBaseUrl}asset/`);
|
|
7
|
+
}
|
|
8
|
+
export function injectTenantFallbackCss(cssText) {
|
|
9
|
+
var _a;
|
|
10
|
+
if (typeof document === "undefined")
|
|
11
|
+
return;
|
|
12
|
+
const rewrittenCss = rewriteFallbackAssetUrls(cssText);
|
|
13
|
+
const existingStyle = document.getElementById(TENANT_FALLBACK_STYLE_ID);
|
|
14
|
+
if (existingStyle) {
|
|
15
|
+
if ((_a = existingStyle.textContent) === null || _a === void 0 ? void 0 : _a.includes(rewrittenCss))
|
|
16
|
+
return;
|
|
17
|
+
existingStyle.textContent = existingStyle.textContent
|
|
18
|
+
? `${existingStyle.textContent}\n\n${rewrittenCss}`
|
|
19
|
+
: rewrittenCss;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const style = document.createElement("style");
|
|
23
|
+
style.id = TENANT_FALLBACK_STYLE_ID;
|
|
24
|
+
style.textContent = rewrittenCss;
|
|
25
|
+
const tenantCssLink = document.querySelector('link[rel="stylesheet"][href*="tenant.css"]');
|
|
26
|
+
if (tenantCssLink) {
|
|
27
|
+
document.head.insertBefore(style, tenantCssLink);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
document.head.appendChild(style);
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../src/sidemenu.tsx","../src/translations/en.ts","../src/translations/es.ts","../src/translations/index.ts","../index.ts"],"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cullsin/lnc-menu",
|
|
3
|
-
"version": "7.1.
|
|
3
|
+
"version": "7.1.3",
|
|
4
4
|
"description": "Reusable SideMenu component for MedGenome LNC platform using MUI",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -9,21 +9,32 @@
|
|
|
9
9
|
"dist"
|
|
10
10
|
],
|
|
11
11
|
"scripts": {
|
|
12
|
-
"build": "npm run generate:tenant && tsc && npm run copy-css",
|
|
12
|
+
"build": "npm run generate:tenant && npm run sync:tenant-fallback && tsc && npm run copy-css",
|
|
13
13
|
"copy-css": "cpy src/sidemenu.scss src/tenant.module.css dist/src --flat",
|
|
14
|
-
"generate:tenant": "node generate-tenant-css.mjs"
|
|
14
|
+
"generate:tenant": "node generate-tenant-css.mjs",
|
|
15
|
+
"sync:tenant-fallback": "node scripts/sync-tenant-fallback.js"
|
|
15
16
|
},
|
|
16
17
|
"license": "MIT",
|
|
17
18
|
"publishConfig": {
|
|
18
19
|
"access": "public"
|
|
19
20
|
},
|
|
20
21
|
"dependencies": {
|
|
21
|
-
"@
|
|
22
|
-
"@
|
|
22
|
+
"@emotion/react": "^11.14.0",
|
|
23
|
+
"@emotion/styled": "^11.14.0",
|
|
24
|
+
"@mui/icons-material": "^7.3.5",
|
|
25
|
+
"@mui/material": "^7.3.5",
|
|
23
26
|
"react-router-dom": "^7.6.2"
|
|
24
27
|
},
|
|
28
|
+
"peerDependencies": {
|
|
29
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
30
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
31
|
+
},
|
|
25
32
|
"devDependencies": {
|
|
33
|
+
"@types/react": "^19.2.2",
|
|
34
|
+
"@types/react-dom": "^19.2.2",
|
|
26
35
|
"cpy-cli": "^5.0.0",
|
|
36
|
+
"react": "^19.2.0",
|
|
37
|
+
"react-dom": "^19.2.0",
|
|
27
38
|
"typescript": "^5.0.0"
|
|
28
39
|
},
|
|
29
40
|
"repository": {
|