dinocollab-shared 1.1.4 → 1.1.5
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/auth/profile.js +1 -1
- package/dist/auth/profile.js.map +1 -1
- package/dist/layout-global/animated-tabs.units.js +1 -1
- package/dist/layout-global/animated-tabs.units.js.map +1 -1
- package/dist/layout-global/app-footer.js +1 -1
- package/dist/layout-global/app-footer.js.map +1 -1
- package/dist/layout-global/app-footer.styled.js +1 -1
- package/dist/layout-global/app-footer.styled.js.map +1 -1
- package/dist/layout-global/app-header.js +1 -1
- package/dist/layout-global/app-header.js.map +1 -1
- package/dist/layout-global/app-header.nav.js +1 -1
- package/dist/layout-global/app-header.nav.js.map +1 -1
- package/dist/layout-global/app-header.styled.js +1 -1
- package/dist/layout-global/app-header.styled.js.map +1 -1
- package/dist/layout-global/app-theme-provider.js +1 -1
- package/dist/layout-global/app-theme-provider.js.map +1 -1
- package/dist/layout-global/configs.js +1 -1
- package/dist/layout-global/configs.js.map +1 -1
- package/dist/layout-global/index.js +1 -1
- package/dist/layout-global/mobile-menu.styled.js +1 -1
- package/dist/layout-global/mobile-menu.styled.js.map +1 -1
- package/dist/layout-global/sub-menu.js +1 -1
- package/dist/layout-global/sub-menu.js.map +1 -1
- package/dist/layout-global/sub-menu.styled.js +1 -1
- package/dist/layout-global/sub-menu.styled.js.map +1 -1
- package/dist/layout-global/types.js.map +1 -1
- package/dist/types/auth/profile.d.ts.map +1 -1
- package/dist/types/layout-global/app-footer.d.ts +5 -0
- package/dist/types/layout-global/app-footer.d.ts.map +1 -1
- package/dist/types/layout-global/app-footer.styled.d.ts +4 -0
- package/dist/types/layout-global/app-footer.styled.d.ts.map +1 -1
- package/dist/types/layout-global/app-header.d.ts +2 -0
- package/dist/types/layout-global/app-header.d.ts.map +1 -1
- package/dist/types/layout-global/app-header.nav.d.ts.map +1 -1
- package/dist/types/layout-global/app-header.styled.d.ts +4 -0
- package/dist/types/layout-global/app-header.styled.d.ts.map +1 -1
- package/dist/types/layout-global/app-theme-provider.d.ts +7 -5
- package/dist/types/layout-global/app-theme-provider.d.ts.map +1 -1
- package/dist/types/layout-global/index.d.ts +3 -1
- package/dist/types/layout-global/index.d.ts.map +1 -1
- package/dist/types/layout-global/mobile-menu.styled.d.ts.map +1 -1
- package/dist/types/layout-global/sub-menu.styled.d.ts +1 -0
- package/dist/types/layout-global/sub-menu.styled.d.ts.map +1 -1
- package/dist/types/layout-global/types.d.ts +1 -0
- package/dist/types/layout-global/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/auth/profile.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as t,createClass as o,objectSpread2 as r,defineProperty as e,classCallCheck as l,callSuper as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as n,jsx as a}from"react/jsx-runtime";import{Fragment as c,Component as s}from"react";import{Fade as d,Tooltip as p,IconButton as u,Avatar as h,Menu as m,Typography as v,Divider as f,MenuItem as g,Box as x,ListItemIcon as b,colors as C}from"@mui/material";import{getAvatarProps as k}from"../layout-global/helpers.js";var y={root:"Profile-root",title:"Profile-title",item:"Profile-item"},P=function(t,o){return"".concat("",".").concat(y[t]).concat("")},M=function(){function C(t){var o;return l(this,C),o=i(this,C,[t]),e(o,"toggle",function(){return o.setState({isOpen:!o.state.isOpen})}),e(o,"handleClick",function(t){o.setState({element:t.currentTarget})}),e(o,"handleClose",function(){o.setState({element:null})}),o.state={isOpen:!1,element:null},o}return t(C,s),o(C,[{key:"render",value:function(){var t,o=this.props.profile,e=(null==o?void 0:o.UserName)||"Guest";return n(c,{children:[a(d,{in:!0,children:a(p,{title:"Account settings",children:a(u,{onClick:this.handleClick,size:"small","aria-controls":this.state.element?"account-menu":void 0,"aria-haspopup":"true","aria-expanded":this.state.element?"true":void 0,children:a(h,r({src:null!==(t=null==o?void 0:o.AvatarUrl)&&void 0!==t?t:""},k(e)))})})}),n(m,{anchorEl:this.state.element,id:"account-menu",disableScrollLock:!0,open:!!this.state.element,onClose:this.handleClose,onClick:this.handleClose,MenuListProps:{component:"div"},slotProps:{paper:S(this.props.theme)},transformOrigin:{horizontal:"right",vertical:"top"},anchorOrigin:{horizontal:"right",vertical:"bottom"},children:[n(v,{variant:"subtitle1",noWrap:!0,className:y.title,onClick:function(t){return t.stopPropagation()},children:["Hello, ",e]}),a(f,{variant:"middle",sx:{mb:1}}),this.props.menuConfigs.map(function(t,o){return a(g,{children:n(x,r(r(r({className:y.item,onClick:t.onClick},t.href?{component:"a",href:t.href}:{}),t.buttonProps),{},{children:[a(b,{children:t.icon}),t.title]}))},o)})]})]})}}])}(),S=function(){var t="light"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"dark"),o=t?"#fff":"#323234",r=t?"#000":"#fff",l=t?C.blue[600]:"#e78a3f",i=t?C.grey[200]:C.grey[700];return{elevation:0,sx:e(e(e(e(e(e(e({"--color-background":o,"--color-text":r,"--color-text-secondary":l,"--color-divider":i,minWidth:"200px",overflow:"visible",filter:"drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",mt:1.5,bgcolor:"var(--color-background)",color:"var(--color-text)"},P("title"),{marginTop:"-8px",padding:"10px 16px",fontWeight:"600",color:"var(--color-text)"}),P("item"),{padding:"6px 16px",textDecoration:"none",color:"currentColor",display:"flex",alignItems:"center",gap:"8px"}),"& .MuiAvatar-root",{width:32,height:32,ml:-.5,mr:1,bgcolor:"var(--color-avatar-bg)",color:"var(--color-avatar-text)"}),"& .MuiMenuItem-root",{padding:0,transition:"all 0.3s",color:"var(--color-text)",".MuiSvgIcon-root":{transition:"all 0.2s",transform:"translateX(0px) scale(1)"},"&:hover":{color:"var(--color-text-secondary)",backgroundColor:"var(--color-divider)",".MuiSvgIcon-root":{color:"var(--color-text-secondary)",transform:"translateX(4px) scale(1.2)"}}}),"& .MuiListItemIcon-root",{color:"var(--color-text)"}),"& .MuiDivider-root",{borderColor:"var(--color-divider)"}),"&:before",{content:'""',display:"block",position:"absolute",top:0,right:20,width:10,height:10,bgcolor:"var(--color-background)",transform:"translateY(-50%) rotate(45deg)",zIndex:0})}};export{M as Profile,M as default,y as profileClasses};
|
|
1
|
+
import{inherits as t,createClass as o,objectSpread2 as r,defineProperty as e,classCallCheck as l,callSuper as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as n,jsx as a}from"react/jsx-runtime";import{Fragment as c,Component as s}from"react";import{Fade as d,Tooltip as p,IconButton as u,Avatar as h,Menu as m,Typography as v,Divider as f,MenuItem as g,Box as x,ListItemIcon as b,colors as C}from"@mui/material";import{getAvatarProps as k}from"../layout-global/helpers.js";var y={root:"Profile-root",title:"Profile-title",item:"Profile-item"},P=function(t,o){return"".concat("",".").concat(y[t]).concat("")},M=function(){function C(t){var o;return l(this,C),o=i(this,C,[t]),e(o,"toggle",function(){return o.setState({isOpen:!o.state.isOpen})}),e(o,"handleClick",function(t){o.setState({element:t.currentTarget})}),e(o,"handleClose",function(){o.setState({element:null})}),o.state={isOpen:!1,element:null},o}return t(C,s),o(C,[{key:"render",value:function(){var t,o=this.props.profile,e=(null==o?void 0:o.UserName)||"Guest";return n(c,{children:[a(d,{in:!0,children:a(p,{title:"Account settings",children:a(u,{onClick:this.handleClick,size:"small","aria-controls":this.state.element?"account-menu":void 0,"aria-haspopup":"true","aria-expanded":this.state.element?"true":void 0,sx:{flex:0},children:a(h,r({src:null!==(t=null==o?void 0:o.AvatarUrl)&&void 0!==t?t:""},k(e)))})})}),n(m,{anchorEl:this.state.element,id:"account-menu",disableScrollLock:!0,open:!!this.state.element,onClose:this.handleClose,onClick:this.handleClose,MenuListProps:{component:"div"},slotProps:{paper:S(this.props.theme)},transformOrigin:{horizontal:"right",vertical:"top"},anchorOrigin:{horizontal:"right",vertical:"bottom"},children:[n(v,{variant:"subtitle1",noWrap:!0,className:y.title,onClick:function(t){return t.stopPropagation()},children:["Hello, ",e]}),a(f,{variant:"middle",sx:{mb:1}}),this.props.menuConfigs.map(function(t,o){return a(g,{children:n(x,r(r(r({className:y.item,onClick:t.onClick},t.href?{component:"a",href:t.href}:{}),t.buttonProps),{},{children:[a(b,{children:t.icon}),t.title]}))},o)})]})]})}}])}(),S=function(){var t="light"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"dark"),o=t?"#fff":"#323234",r=t?"#000":"#fff",l=t?C.blue[600]:"#e78a3f",i=t?C.grey[200]:C.grey[700];return{elevation:0,sx:e(e(e(e(e(e(e({"--color-background":o,"--color-text":r,"--color-text-secondary":l,"--color-divider":i,minWidth:"200px",overflow:"visible",filter:"drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",mt:1.5,bgcolor:"var(--color-background)",color:"var(--color-text)"},P("title"),{marginTop:"-8px",padding:"10px 16px",fontWeight:"600",color:"var(--color-text)"}),P("item"),{padding:"6px 16px",textDecoration:"none",color:"currentColor",display:"flex",alignItems:"center",gap:"8px"}),"& .MuiAvatar-root",{width:32,height:32,ml:-.5,mr:1,bgcolor:"var(--color-avatar-bg)",color:"var(--color-avatar-text)"}),"& .MuiMenuItem-root",{padding:0,transition:"all 0.3s",color:"var(--color-text)",".MuiSvgIcon-root":{transition:"all 0.2s",transform:"translateX(0px) scale(1)"},"&:hover":{color:"var(--color-text-secondary)",backgroundColor:"var(--color-divider)",".MuiSvgIcon-root":{color:"var(--color-text-secondary)",transform:"translateX(4px) scale(1.2)"}}}),"& .MuiListItemIcon-root",{color:"var(--color-text)"}),"& .MuiDivider-root",{borderColor:"var(--color-divider)"}),"&:before",{content:'""',display:"block",position:"absolute",top:0,right:20,width:10,height:10,bgcolor:"var(--color-background)",transform:"translateY(-50%) rotate(45deg)",zIndex:0})}};export{M as Profile,M as default,y as profileClasses};
|
|
2
2
|
//# sourceMappingURL=profile.js.map
|
package/dist/auth/profile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sources":["../../src/auth/profile.tsx"],"sourcesContent":["import { Component, Fragment } from 'react'\r\nimport type { PropsWithChildren } from 'react'\r\nimport { Box, MenuItem, Divider, IconButton, Tooltip, colors } from '@mui/material'\r\nimport { Avatar, Fade, ListItemIcon, Menu, PaperProps, Typography } from '@mui/material'\r\nimport { getAvatarProps } from '../layout-global/helpers'\r\nimport type { IIMenuConfigs, IProfile } from './types'\r\n\r\nexport const profileClasses = {\r\n root: 'Profile-root',\r\n title: 'Profile-title',\r\n item: 'Profile-item'\r\n}\r\n\r\nconst getClasses = (key: keyof typeof profileClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${profileClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nexport interface IAvatarButtonProps extends PropsWithChildren {\r\n profile: IProfile | null\r\n menuConfigs: IIMenuConfigs\r\n theme?: 'dark' | 'light'\r\n}\r\n\r\nexport interface IAvatarButtonState {\r\n isOpen: boolean\r\n element: HTMLElement | null\r\n}\r\n\r\nexport class Profile extends Component<IAvatarButtonProps, IAvatarButtonState> {\r\n constructor(props: IAvatarButtonProps) {\r\n super(props)\r\n this.state = {\r\n isOpen: false,\r\n element: null\r\n }\r\n }\r\n\r\n toggle = () => this.setState({ isOpen: !this.state.isOpen })\r\n\r\n handleClick = (event: React.MouseEvent<HTMLElement>) => {\r\n this.setState({ element: event.currentTarget })\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ element: null })\r\n }\r\n\r\n render() {\r\n const { profile } = this.props\r\n const userName = profile?.UserName || 'Guest'\r\n return (\r\n <Fragment>\r\n <Fade in>\r\n <Tooltip title='Account settings'>\r\n <IconButton\r\n onClick={this.handleClick}\r\n size='small'\r\n aria-controls={this.state.element ? 'account-menu' : undefined}\r\n aria-haspopup='true'\r\n aria-expanded={this.state.element ? 'true' : undefined}\r\n >\r\n <Avatar src={profile?.AvatarUrl ?? ''} {...getAvatarProps(userName)} />\r\n </IconButton>\r\n </Tooltip>\r\n </Fade>\r\n <Menu\r\n anchorEl={this.state.element}\r\n id='account-menu'\r\n disableScrollLock\r\n open={!!this.state.element}\r\n onClose={this.handleClose}\r\n onClick={this.handleClose}\r\n MenuListProps={{ component: 'div' }}\r\n slotProps={{ paper: getStylePaper(this.props.theme) }}\r\n transformOrigin={{ horizontal: 'right', vertical: 'top' }}\r\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\r\n >\r\n <Typography\r\n variant='subtitle1'\r\n noWrap\r\n className={profileClasses.title}\r\n onClick={(e: React.MouseEvent<HTMLDivElement, MouseEvent>) => e.stopPropagation()}\r\n >\r\n Hello, {userName}\r\n </Typography>\r\n <Divider variant='middle' sx={{ mb: 1 }} />\r\n {this.props.menuConfigs.map((menuConfig, index) => (\r\n <MenuItem key={index}>\r\n <Box\r\n className={profileClasses.item}\r\n onClick={menuConfig.onClick}\r\n {...(menuConfig.href ? { component: 'a', href: menuConfig.href } : {})}\r\n {...menuConfig.buttonProps}\r\n >\r\n <ListItemIcon>{menuConfig.icon}</ListItemIcon>\r\n {menuConfig.title}\r\n </Box>\r\n </MenuItem>\r\n ))}\r\n </Menu>\r\n </Fragment>\r\n )\r\n }\r\n}\r\nexport default Profile\r\n\r\nconst getStylePaper = (theme: 'dark' | 'light' = 'dark'): Partial<PaperProps<'div', {}>> => {\r\n const isLightTheme = theme === 'light'\r\n const backgroundColor = isLightTheme ? '#fff' : '#323234'\r\n const textColor = isLightTheme ? '#000' : '#fff'\r\n const textSecondaryColor = isLightTheme ? colors.blue[600] : '#e78a3f'\r\n const dividerColor = isLightTheme ? colors.grey[200] : colors.grey[700]\r\n return {\r\n elevation: 0,\r\n sx: {\r\n '--color-background': backgroundColor,\r\n '--color-text': textColor,\r\n '--color-text-secondary': textSecondaryColor,\r\n '--color-divider': dividerColor,\r\n\r\n minWidth: '200px',\r\n overflow: 'visible',\r\n filter: 'drop-shadow(0px 2px 8px rgba(0,0,0,0.32))',\r\n mt: 1.5,\r\n bgcolor: 'var(--color-background)', // dark background\r\n color: 'var(--color-text)', // white text,\r\n\r\n [getClasses('title')]: {\r\n marginTop: '-8px',\r\n padding: '10px 16px',\r\n fontWeight: '600',\r\n color: 'var(--color-text)'\r\n },\r\n [getClasses('item')]: {\r\n padding: '6px 16px',\r\n textDecoration: 'none',\r\n color: 'currentColor',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px'\r\n },\r\n '& .MuiAvatar-root': {\r\n width: 32,\r\n height: 32,\r\n ml: -0.5,\r\n mr: 1,\r\n bgcolor: 'var(--color-avatar-bg)',\r\n color: 'var(--color-avatar-text)'\r\n },\r\n '& .MuiMenuItem-root': {\r\n padding: 0,\r\n transition: 'all 0.3s',\r\n color: 'var(--color-text)',\r\n '.MuiSvgIcon-root': {\r\n transition: 'all 0.2s',\r\n transform: 'translateX(0px) scale(1)'\r\n },\r\n '&:hover': {\r\n color: 'var(--color-text-secondary)',\r\n backgroundColor: 'var(--color-divider)',\r\n '.MuiSvgIcon-root': {\r\n color: 'var(--color-text-secondary)',\r\n transform: 'translateX(4px) scale(1.2)'\r\n }\r\n }\r\n },\r\n '& .MuiListItemIcon-root': {\r\n color: 'var(--color-text)'\r\n },\r\n '& .MuiDivider-root': {\r\n borderColor: 'var(--color-divider)'\r\n },\r\n '&:before': {\r\n content: '\"\"',\r\n display: 'block',\r\n position: 'absolute',\r\n top: 0,\r\n right: 20,\r\n width: 10,\r\n height: 10,\r\n bgcolor: 'var(--color-background)',\r\n transform: 'translateY(-50%) rotate(45deg)',\r\n zIndex: 0\r\n }\r\n }\r\n }\r\n}\r\n"],"names":["profileClasses","root","title","item","getClasses","key","options","concat","Profile","props","_this","_classCallCheck","_callSuper","_defineProperty","setState","isOpen","state","event","element","currentTarget","_inherits","Component","_createClass","value","_profile$AvatarUrl","profile","this","userName","UserName","_jsxs","Fragment","children","_jsx","Fade","in","Tooltip","IconButton","onClick","handleClick","size","undefined","Avatar","_objectSpread","src","AvatarUrl","getAvatarProps","Menu","anchorEl","id","disableScrollLock","open","onClose","handleClose","MenuListProps","component","slotProps","paper","getStylePaper","theme","transformOrigin","horizontal","vertical","anchorOrigin","Typography","variant","noWrap","className","e","stopPropagation","Divider","sx","mb","menuConfigs","map","menuConfig","index","MenuItem","Box","href","buttonProps","ListItemIcon","icon","isLightTheme","arguments","length","backgroundColor","textColor","textSecondaryColor","colors","blue","dividerColor","grey","elevation","minWidth","overflow","filter","mt","bgcolor","color","marginTop","padding","fontWeight","textDecoration","display","alignItems","gap","width","height","ml","mr","transition","transform","borderColor","content","position","top","right","zIndex"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"profile.js","sources":["../../src/auth/profile.tsx"],"sourcesContent":["import { Component, Fragment } from 'react'\r\nimport type { PropsWithChildren } from 'react'\r\nimport { Box, MenuItem, Divider, IconButton, Tooltip, colors } from '@mui/material'\r\nimport { Avatar, Fade, ListItemIcon, Menu, PaperProps, Typography } from '@mui/material'\r\nimport { getAvatarProps } from '../layout-global/helpers'\r\nimport type { IIMenuConfigs, IProfile } from './types'\r\n\r\nexport const profileClasses = {\r\n root: 'Profile-root',\r\n title: 'Profile-title',\r\n item: 'Profile-item'\r\n}\r\n\r\nconst getClasses = (key: keyof typeof profileClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${profileClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nexport interface IAvatarButtonProps extends PropsWithChildren {\r\n profile: IProfile | null\r\n menuConfigs: IIMenuConfigs\r\n theme?: 'dark' | 'light'\r\n}\r\n\r\nexport interface IAvatarButtonState {\r\n isOpen: boolean\r\n element: HTMLElement | null\r\n}\r\n\r\nexport class Profile extends Component<IAvatarButtonProps, IAvatarButtonState> {\r\n constructor(props: IAvatarButtonProps) {\r\n super(props)\r\n this.state = {\r\n isOpen: false,\r\n element: null\r\n }\r\n }\r\n\r\n toggle = () => this.setState({ isOpen: !this.state.isOpen })\r\n\r\n handleClick = (event: React.MouseEvent<HTMLElement>) => {\r\n this.setState({ element: event.currentTarget })\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ element: null })\r\n }\r\n\r\n render() {\r\n const { profile } = this.props\r\n const userName = profile?.UserName || 'Guest'\r\n return (\r\n <Fragment>\r\n <Fade in>\r\n <Tooltip title='Account settings'>\r\n <IconButton\r\n onClick={this.handleClick}\r\n size='small'\r\n aria-controls={this.state.element ? 'account-menu' : undefined}\r\n aria-haspopup='true'\r\n aria-expanded={this.state.element ? 'true' : undefined}\r\n sx={{ flex: 0 }}\r\n >\r\n <Avatar src={profile?.AvatarUrl ?? ''} {...getAvatarProps(userName)} />\r\n </IconButton>\r\n </Tooltip>\r\n </Fade>\r\n <Menu\r\n anchorEl={this.state.element}\r\n id='account-menu'\r\n disableScrollLock\r\n open={!!this.state.element}\r\n onClose={this.handleClose}\r\n onClick={this.handleClose}\r\n MenuListProps={{ component: 'div' }}\r\n slotProps={{ paper: getStylePaper(this.props.theme) }}\r\n transformOrigin={{ horizontal: 'right', vertical: 'top' }}\r\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\r\n >\r\n <Typography\r\n variant='subtitle1'\r\n noWrap\r\n className={profileClasses.title}\r\n onClick={(e: React.MouseEvent<HTMLDivElement, MouseEvent>) => e.stopPropagation()}\r\n >\r\n Hello, {userName}\r\n </Typography>\r\n <Divider variant='middle' sx={{ mb: 1 }} />\r\n {this.props.menuConfigs.map((menuConfig, index) => (\r\n <MenuItem key={index}>\r\n <Box\r\n className={profileClasses.item}\r\n onClick={menuConfig.onClick}\r\n {...(menuConfig.href ? { component: 'a', href: menuConfig.href } : {})}\r\n {...menuConfig.buttonProps}\r\n >\r\n <ListItemIcon>{menuConfig.icon}</ListItemIcon>\r\n {menuConfig.title}\r\n </Box>\r\n </MenuItem>\r\n ))}\r\n </Menu>\r\n </Fragment>\r\n )\r\n }\r\n}\r\nexport default Profile\r\n\r\nconst getStylePaper = (theme: 'dark' | 'light' = 'dark'): Partial<PaperProps<'div', {}>> => {\r\n const isLightTheme = theme === 'light'\r\n const backgroundColor = isLightTheme ? '#fff' : '#323234'\r\n const textColor = isLightTheme ? '#000' : '#fff'\r\n const textSecondaryColor = isLightTheme ? colors.blue[600] : '#e78a3f'\r\n const dividerColor = isLightTheme ? colors.grey[200] : colors.grey[700]\r\n return {\r\n elevation: 0,\r\n sx: {\r\n '--color-background': backgroundColor,\r\n '--color-text': textColor,\r\n '--color-text-secondary': textSecondaryColor,\r\n '--color-divider': dividerColor,\r\n\r\n minWidth: '200px',\r\n overflow: 'visible',\r\n filter: 'drop-shadow(0px 2px 8px rgba(0,0,0,0.32))',\r\n mt: 1.5,\r\n bgcolor: 'var(--color-background)', // dark background\r\n color: 'var(--color-text)', // white text,\r\n\r\n [getClasses('title')]: {\r\n marginTop: '-8px',\r\n padding: '10px 16px',\r\n fontWeight: '600',\r\n color: 'var(--color-text)'\r\n },\r\n [getClasses('item')]: {\r\n padding: '6px 16px',\r\n textDecoration: 'none',\r\n color: 'currentColor',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px'\r\n },\r\n '& .MuiAvatar-root': {\r\n width: 32,\r\n height: 32,\r\n ml: -0.5,\r\n mr: 1,\r\n bgcolor: 'var(--color-avatar-bg)',\r\n color: 'var(--color-avatar-text)'\r\n },\r\n '& .MuiMenuItem-root': {\r\n padding: 0,\r\n transition: 'all 0.3s',\r\n color: 'var(--color-text)',\r\n '.MuiSvgIcon-root': {\r\n transition: 'all 0.2s',\r\n transform: 'translateX(0px) scale(1)'\r\n },\r\n '&:hover': {\r\n color: 'var(--color-text-secondary)',\r\n backgroundColor: 'var(--color-divider)',\r\n '.MuiSvgIcon-root': {\r\n color: 'var(--color-text-secondary)',\r\n transform: 'translateX(4px) scale(1.2)'\r\n }\r\n }\r\n },\r\n '& .MuiListItemIcon-root': {\r\n color: 'var(--color-text)'\r\n },\r\n '& .MuiDivider-root': {\r\n borderColor: 'var(--color-divider)'\r\n },\r\n '&:before': {\r\n content: '\"\"',\r\n display: 'block',\r\n position: 'absolute',\r\n top: 0,\r\n right: 20,\r\n width: 10,\r\n height: 10,\r\n bgcolor: 'var(--color-background)',\r\n transform: 'translateY(-50%) rotate(45deg)',\r\n zIndex: 0\r\n }\r\n }\r\n }\r\n}\r\n"],"names":["profileClasses","root","title","item","getClasses","key","options","concat","Profile","props","_this","_classCallCheck","_callSuper","_defineProperty","setState","isOpen","state","event","element","currentTarget","_inherits","Component","_createClass","value","_profile$AvatarUrl","profile","this","userName","UserName","_jsxs","Fragment","children","_jsx","Fade","in","Tooltip","IconButton","onClick","handleClick","size","undefined","sx","flex","Avatar","_objectSpread","src","AvatarUrl","getAvatarProps","Menu","anchorEl","id","disableScrollLock","open","onClose","handleClose","MenuListProps","component","slotProps","paper","getStylePaper","theme","transformOrigin","horizontal","vertical","anchorOrigin","Typography","variant","noWrap","className","e","stopPropagation","Divider","mb","menuConfigs","map","menuConfig","index","MenuItem","Box","href","buttonProps","ListItemIcon","icon","isLightTheme","arguments","length","backgroundColor","textColor","textSecondaryColor","colors","blue","dividerColor","grey","elevation","minWidth","overflow","filter","mt","bgcolor","color","marginTop","padding","fontWeight","textDecoration","display","alignItems","gap","width","height","ml","mr","transition","transform","borderColor","content","position","top","right","zIndex"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{objectWithoutProperties as e,objectSpread2 as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i,jsxs as
|
|
1
|
+
import{objectWithoutProperties as e,objectSpread2 as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i,jsxs as r}from"react/jsx-runtime";import{useCallback as a,useMemo as n}from"react";import{styled as o,Button as s,Box as c,Typography as l}from"@mui/material";var A=["children","startIcon","className","forceTheme"],g="data:image/webp;base64,UklGRkwEAABXRUJQVlA4WAoAAAAQAAAAdwAAdwAAQUxQSM4DAAABoEXb2iFJ+jKzjLZt27Zt27Zt27Zt27Zt24jM+5BfZPzxR/yrn2ZWREwA/Xdy+ctuYHMU9QRp8D4eQTnZwJ8JUU1aHZwMV0waPZwKUhUORFYVjioLJ8JVhT1hqsJhp2o0HewPU8zkAzo44FLLqJA9OtgeppQJFHZMB3sUQ3REB3uDFBNpvw42+AkqtXBFc1ui4BM6aCmmPQBssiUKOaZzSkis914oY0sUeoI7IaT8H6aPPVHocaa2kBoaM9imKMoaQBvtElL1LzPArogylE9NYu1P/D9f9Lp1Yyip7BvgXUWHgj4CwNsg9WQGm1k9NbmqNpavfGwxFbhythX3GPCjiUNEebvbBu/M6gkAO1Y9ibhVEjiiR7KXeNwS8xId+vFxRbjlAoo2TOfg4soS5Q0A7Lda0DkA0ySrq3n9yWGxA/BuI1dXeLvrWivea2a3S6rOXD0uxoQz++tYIPk75liwVJ24OkzgVQBaU/mScYcDrdMM3mfkS2q9xcwnBS1hvitoIfPVUEDqah0GDu3bonQCh0qCKy554gGvXR6V1WlPi5lvvoR0uA+DniMlnXa0nPniQ7kHELkncTJDybmjQdbpyVzXcczTIPbrMEOJ3jIHA6xQl4ny3qs3F+UkzPbB9ZCZRlJ14xoylHrXh2dDgpgYFyAP5XIDuBMgV3O3l1aGIwoNIP489D1XprSsVKpK1yXPxFHGqesHRCa50v/0ekGGXaug+3d5NifxQZVOCPNZGmr2B3ifw1hpt86VXA7y1dX0h3kJuZXmUZIGtSKR8Z/g1wWR0RSPTYvCzZFA7EDw2wLJePJ7ZtFbppI1wl5wN0hoetOKfgM86wOt0RSsllUMdTCLMoyd19ifrLGBm06CI9/kRgrz2UBVrooZr7nsomg0t1C6ElwRM8B+J+EJuHsO2fy4MBNKcWPF0W8G0tF4AJ4pThOGcllMOM8lls5RY/Wa2mTmEi7AhC1cHunM32jeaq6Q7cw1bzmX03b6c8VN2MHFsZ2c3FITfnAO2yEO4rKBvWhDd7iiwhZzo8l+5nFrXIJivmT+VpShhsYMkabSXwblBC0A+zamDGV+Mz2lcdziPocLqQl+BckY8TVTSBqqz+F6dAHFP+s4paDKXlNI4pscricxVPUn+EEkaZpBI0uQzBm/cfjQ0ulTzLka+PORZJF/kA5wuXlsnUzD30E/A9n2cj3gx5HZg3oPXXYFPrork30HrvLoCfS0cdoYuWaJ02qSzbf4KOhmJrL9pFvdAr6OdZECnfk3/jbwdmoCUmXC9pufcH+uL60Vkf6XMVZQOCBYAAAAEAcAnQEqeAB4AD6RSJ9LpaQioaSIALASCWlu4XEgAqWZ93Pu1keUUni2PHdLNfliQEgJASAkBICQEgJASAkBGAAA/v6knwxv//8VGk/xH3//+MPIwAAAAA==",m="data:image/webp;base64,UklGRngCAABXRUJQVlA4WAoAAAAQAAAAdwAAdwAAQUxQSAgCAAABkAXZtmk769nvxbbt5M+2bdvOp23btm3btm0nBzM8r9a5a8WpiogJoP8XB5eZceCMsMfXdkzuxVf4HkS2p4Vz9Tch9e3UPK0APJ/cuVFDURs0H3AEwOUwjtQGcCUTSTzUAKZyDAbexyOZRwMmx1mgLUkNWBwAkok1D+B5GFesLv8AyFyuZHIvheLMBYDpqfTZgW8+ba5NUXx/bXpdtjiA2TlMkztOgItVFbnuDJgeXY1rkcH1elrB2pRKKeBd/yClgGu5tMKH6b5KATfr+SgF7ErlpRTMDr5KASczagVkU+uUWq9zaPWhuFavMmm1h5R6nUSpDclJpRdViFWwWTFJpRuFiVuolz2CSKXD8cmFEj1u5kMaGcvCyZ3i3CxKbvW465GwegaTFrcc2ftykIs9bpOT+x3I1R6X28H0RKQKLfzWtdLkds8L7wngXZ+YpA5R2qoVEpEHSuCpf7nZQGqxVsPmOAH0lCoIsDj6Akgjk9d04CNHHAN4UkyisEU20J+DygOwlg/pLWzfyQ8A7PdnoVbvIfWxuMScb69MrwYGErtv9u5zVsu6ZunI8rHoD8LYBeLpFH4YJ4JUSvwEVoRW0CnRIxjhetRZuvz7Gz8Aa5aLunI8B4TneCabzZGhSdPvd38Nu11TUZvV4HCc6BE+hpPGSZ4CESolfICP4Sr5jn01yVel/+8CVlA4IEoAAACQBgCdASp4AHgAPpFIoUylpCMiIIgAsBIJaW7hdJAAT22IvEgubeI386q8sEbEFRz2xF4gqOe2IvEFRzvAAP7/Uk9vLwAAAAAAAA==",d=function(o){var s=o.children,g=o.startIcon,m=o.className,d=o.forceTheme,b=e(o,A),v=a(function(){if(!g)return null;var e=g;return"string"==typeof g&&(e=i(c,{component:"span",className:"icon-img",sx:{"--mask-url":"url(".concat(g,")")}})),i("span",{className:"icon-static",children:e})},[g]),u=n(function(){var e=["tab-button"];return e.push(m||""),e.join(" ")},[m]);return r(p,t(t({},b),{},{className:u,forceTheme:d,children:[v(),r("div",{className:"text-container",children:[i(l,{variant:"h6",className:"text text-visible",children:s}),i(l,{variant:"h6",className:"text text-hidden",children:s})]})]}))},p=o(s,{shouldForwardProp:function(e){return"forceTheme"!==e}})(function(e){var t=e.theme,i=e.forceTheme,r={dark:{primary:t.palette.common.white,secondary:"rgb(249, 169, 37)",iconActive:"rgb(249, 169, 37)",bgGradient:"linear-gradient(45deg, rgb(211, 47, 47) 0%, rgb(249, 169, 37) 70%, rgb(211, 47, 47) 100%) 0% 0% / 200%",iconImageFilter:"invert(1) brightness(2)"},light:{primary:t.palette.common.black,secondary:"rgb(156, 39, 176)",iconActive:"rgb(156, 39, 176)",bgGradient:"linear-gradient(45deg, rgb(25, 118, 210) 0%, rgb(156, 39, 176) 70%, rgb(25, 118, 210) 100%) 0% 0% / 200%",iconImageFilter:"invert(0) brightness(0.2)"}}[i||t.palette.mode];return{"--color-primary":r.primary,"--color-secondary":r.secondary,"--bg-underline":r.bgGradient,"--bg-icon":r.bgGradient,"--icon-color-active":r.iconActive,"--size-icon":"24px","--spacing-x-size":"12px","--timing-fast":"0.25s","--timing-medium":"0.3s","--easing-smooth":"cubic-bezier(0.25, 0.46, 0.45, 0.94)","--easing-bounce":"cubic-bezier(0.34, 1.56, 0.64, 1)",height:"var(--height-button, 40px)",position:"relative",overflow:"hidden",transition:"transform 0.2s, box-shadow 0.2s",display:"flex",alignItems:"center",gap:"8px",padding:"6px var(--spacing-x-size)",color:"var(--color-primary)",backgroundColor:"transparent !important",a:{display:"flex",alignItems:"center"},"&::after":{content:'""',position:"absolute",bottom:"2px",left:"var(--spacing-x-size)",width:"0",height:"2px",background:"var(--bg-underline)",transition:"width var(--timing-fast) var(--easing-smooth)"},"& .icon-static":{display:"flex",alignItems:"center",flexShrink:0,transition:"transform var(--timing-medium) var(--easing-bounce)",transformOrigin:"left bottom",position:"relative","img, svg, .icon-img":{width:"var(--size-icon)",height:"var(--size-icon)"},".icon-img":{backgroundImage:"var(--mask-url)",backgroundSize:"cover",backgroundPosition:"center",display:"block",borderRadius:4,transition:"filter 0.3s",position:"relative",zIndex:1,filter:r.iconImageFilter}},"& .text-container":{position:"relative",overflow:"hidden",flex:1},".text":{textTransform:"none",fontWeight:600,lineHeight:1.6,transformOrigin:"left bottom"},"& .text-visible, & .text-hidden":{transition:"transform var(--timing-medium) var(--easing-smooth)",display:"block",width:"100%",textAlign:"left",margin:0},"& .text-visible":{transform:"translateY(0) skewY(0)",opacity:1},"& .text-hidden":{position:"absolute",top:"50%",left:"0",transform:"translateY(50%) skewY(15deg)",opacity:1},"&.active":{"& .icon-static":{color:"var(--icon-color-active)",".icon-img":{background:"var(--bg-icon)",WebkitMaskImage:"var(--mask-url)",maskImage:"var(--mask-url)",WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskSize:"cover",maskSize:"cover",filter:"none"}},"&::after":{width:"var(--size-icon)"}},"&.inactive":{"&::after":{width:"0"}},"&:hover":{"&::after":{width:"calc(100% - (var(--spacing-x-size) * 2))"},"& .icon-static":{transform:"rotate(-10deg)"},"& .text-visible":{transform:"translateY(-100%) skewY(-15deg)",opacity:1},"& .text-hidden":{transform:"translateY(-50%) skewY(0)",opacity:1}}}});export{d as ButtonAnimation,g as IconAudioBase64,m as IconVideoBase64};
|
|
2
2
|
//# sourceMappingURL=animated-tabs.units.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animated-tabs.units.js","sources":["../../src/layout-global/animated-tabs.units.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react'\r\nimport { Box, Button, styled, Typography } from '@mui/material'\r\nimport type { FC, ReactNode } from 'react'\r\nimport type { ButtonProps, Theme } from '@mui/material'\r\n\r\nexport const IconAudioBase64 = `data:image/webp;base64,UklGRkwEAABXRUJQVlA4WAoAAAAQAAAAdwAAdwAAQUxQSM4DAAABoEXb2iFJ+jKzjLZt27Zt27Zt27Zt27Zt24jM+5BfZPzxR/yrn2ZWREwA/Xdy+ctuYHMU9QRp8D4eQTnZwJ8JUU1aHZwMV0waPZwKUhUORFYVjioLJ8JVhT1hqsJhp2o0HewPU8zkAzo44FLLqJA9OtgeppQJFHZMB3sUQ3REB3uDFBNpvw42+AkqtXBFc1ui4BM6aCmmPQBssiUKOaZzSkis914oY0sUeoI7IaT8H6aPPVHocaa2kBoaM9imKMoaQBvtElL1LzPArogylE9NYu1P/D9f9Lp1Yyip7BvgXUWHgj4CwNsg9WQGm1k9NbmqNpavfGwxFbhythX3GPCjiUNEebvbBu/M6gkAO1Y9ibhVEjiiR7KXeNwS8xId+vFxRbjlAoo2TOfg4soS5Q0A7Lda0DkA0ySrq3n9yWGxA/BuI1dXeLvrWivea2a3S6rOXD0uxoQz++tYIPk75liwVJ24OkzgVQBaU/mScYcDrdMM3mfkS2q9xcwnBS1hvitoIfPVUEDqah0GDu3bonQCh0qCKy554gGvXR6V1WlPi5lvvoR0uA+DniMlnXa0nPniQ7kHELkncTJDybmjQdbpyVzXcczTIPbrMEOJ3jIHA6xQl4ny3qs3F+UkzPbB9ZCZRlJ14xoylHrXh2dDgpgYFyAP5XIDuBMgV3O3l1aGIwoNIP489D1XprSsVKpK1yXPxFHGqesHRCa50v/0ekGGXaug+3d5NifxQZVOCPNZGmr2B3ifw1hpt86VXA7y1dX0h3kJuZXmUZIGtSKR8Z/g1wWR0RSPTYvCzZFA7EDw2wLJePJ7ZtFbppI1wl5wN0hoetOKfgM86wOt0RSsllUMdTCLMoyd19ifrLGBm06CI9/kRgrz2UBVrooZr7nsomg0t1C6ElwRM8B+J+EJuHsO2fy4MBNKcWPF0W8G0tF4AJ4pThOGcllMOM8lls5RY/Wa2mTmEi7AhC1cHunM32jeaq6Q7cw1bzmX03b6c8VN2MHFsZ2c3FITfnAO2yEO4rKBvWhDd7iiwhZzo8l+5nFrXIJivmT+VpShhsYMkabSXwblBC0A+zamDGV+Mz2lcdziPocLqQl+BckY8TVTSBqqz+F6dAHFP+s4paDKXlNI4pscricxVPUn+EEkaZpBI0uQzBm/cfjQ0ulTzLka+PORZJF/kA5wuXlsnUzD30E/A9n2cj3gx5HZg3oPXXYFPrork30HrvLoCfS0cdoYuWaJ02qSzbf4KOhmJrL9pFvdAr6OdZECnfk3/jbwdmoCUmXC9pufcH+uL60Vkf6XMVZQOCBYAAAAEAcAnQEqeAB4AD6RSJ9LpaQioaSIALASCWlu4XEgAqWZ93Pu1keUUni2PHdLNfliQEgJASAkBICQEgJASAkBGAAA/v6knwxv//8VGk/xH3//+MPIwAAAAA==`\r\n\r\nexport const IconVideoBase64 = `data:image/webp;base64,UklGRngCAABXRUJQVlA4WAoAAAAQAAAAdwAAdwAAQUxQSAgCAAABkAXZtmk769nvxbbt5M+2bdvOp23btm3btm0nBzM8r9a5a8WpiogJoP8XB5eZceCMsMfXdkzuxVf4HkS2p4Vz9Tch9e3UPK0APJ/cuVFDURs0H3AEwOUwjtQGcCUTSTzUAKZyDAbexyOZRwMmx1mgLUkNWBwAkok1D+B5GFesLv8AyFyuZHIvheLMBYDpqfTZgW8+ba5NUXx/bXpdtjiA2TlMkztOgItVFbnuDJgeXY1rkcH1elrB2pRKKeBd/yClgGu5tMKH6b5KATfr+SgF7ErlpRTMDr5KASczagVkU+uUWq9zaPWhuFavMmm1h5R6nUSpDclJpRdViFWwWTFJpRuFiVuolz2CSKXD8cmFEj1u5kMaGcvCyZ3i3CxKbvW465GwegaTFrcc2ftykIs9bpOT+x3I1R6X28H0RKQKLfzWtdLkds8L7wngXZ+YpA5R2qoVEpEHSuCpf7nZQGqxVsPmOAH0lCoIsDj6Akgjk9d04CNHHAN4UkyisEU20J+DygOwlg/pLWzfyQ8A7PdnoVbvIfWxuMScb69MrwYGErtv9u5zVsu6ZunI8rHoD8LYBeLpFH4YJ4JUSvwEVoRW0CnRIxjhetRZuvz7Gz8Aa5aLunI8B4TneCabzZGhSdPvd38Nu11TUZvV4HCc6BE+hpPGSZ4CESolfICP4Sr5jn01yVel/+8CVlA4IEoAAACQBgCdASp4AHgAPpFIoUylpCMiIIgAsBIJaW7hdJAAT22IvEgubeI386q8sEbEFRz2xF4gqOe2IvEFRzvAAP7/Uk9vLwAAAAAAAA==`\r\n\r\nexport interface IButtonThemeProps {\r\n forceTheme?: 'dark' | 'light'\r\n}\r\n\r\nexport interface IButtonAnimationProps extends ButtonProps, IButtonThemeProps {\r\n children: ReactNode\r\n startIcon?: ReactNode\r\n [key: string]: any // Allow additional props\r\n}\r\n\r\nexport const ButtonAnimation: FC<IButtonAnimationProps> = (props) => {\r\n const { children, startIcon, className, forceTheme, ...otherProps } = props\r\n\r\n const renderIcon = useCallback(() => {\r\n if (!startIcon) return null\r\n let finalIcon = startIcon\r\n if (typeof startIcon === 'string') {\r\n finalIcon = <Box component='span' className='icon-img' sx={{ '--mask-url': `url(${startIcon})` }} />\r\n }\r\n return <span className='icon-static'>{finalIcon}</span>\r\n }, [startIcon])\r\n\r\n const rootClasses = useMemo(() => {\r\n const classes = ['tab-button']\r\n classes.push(className || '')\r\n return classes.join(' ')\r\n }, [className])\r\n\r\n return (\r\n <ButtonAnimationStyled {...otherProps} className={rootClasses} forceTheme={forceTheme}>\r\n {renderIcon()}\r\n <div className='text-container'>\r\n <Typography variant='h6' className='text text-visible'>\r\n {children}\r\n </Typography>\r\n <Typography variant='h6' className='text text-hidden'>\r\n {children}\r\n </Typography>\r\n </div>\r\n </ButtonAnimationStyled>\r\n )\r\n}\r\n\r\nconst ButtonAnimationStyled = styled(Button, {\r\n shouldForwardProp: (prop: PropertyKey) => prop !== 'forceTheme'\r\n})<IButtonThemeProps>(({ theme, forceTheme }: { theme: Theme; forceTheme?: 'dark' | 'light' }) => {\r\n const sxMap = {\r\n dark: {\r\n primary: theme.palette.common.white,\r\n secondary: 'rgb(249, 169, 37)',\r\n iconActive: 'rgb(249, 169, 37)',\r\n bgGradient: 'linear-gradient(45deg, rgb(211, 47, 47) 0%, rgb(249, 169, 37) 70%, rgb(211, 47, 47) 100%) 0% 0% / 200%',\r\n iconImageFilter: 'invert(1) brightness(2)'\r\n },\r\n light: {\r\n primary: theme.palette.common.black,\r\n secondary: 'rgb(156, 39, 176)',\r\n iconActive: 'rgb(156, 39, 176)',\r\n bgGradient: 'linear-gradient(45deg, rgb(25, 118, 210) 0%, rgb(156, 39, 176) 70%, rgb(25, 118, 210) 100%) 0% 0% / 200%',\r\n iconImageFilter: 'invert(0) brightness(0.2)'\r\n }\r\n }\r\n\r\n const mode = forceTheme || theme.palette.mode\r\n const currentSx = sxMap[mode as keyof typeof sxMap]\r\n\r\n return {\r\n '--color-primary': currentSx.primary,\r\n '--color-secondary': currentSx.secondary,\r\n '--bg-underline': currentSx.bgGradient,\r\n '--bg-icon': currentSx.bgGradient,\r\n '--icon-color-active': currentSx.iconActive,\r\n '--size-icon': '24px',\r\n '--spacing-x-size': '12px',\r\n '--timing-fast': '0.25s',\r\n '--timing-medium': '0.3s',\r\n '--easing-smooth': 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n '--easing-bounce': 'cubic-bezier(0.34, 1.56, 0.64, 1)',\r\n height: 'var(--height-button, 40px)',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n transition: 'transform 0.2s, box-shadow 0.2s',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n padding: '6px var(--spacing-x-size)',\r\n color: 'var(--color-primary)',\r\n backgroundColor: 'transparent !important',\r\n\r\n a: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n\r\n '&::after': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n bottom: '2px',\r\n left: 'var(--spacing-x-size)',\r\n width: '0',\r\n height: '2px',\r\n background: 'var(--bg-underline)',\r\n transition: 'width var(--timing-fast) var(--easing-smooth)'\r\n },\r\n\r\n '& .icon-static': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexShrink: 0,\r\n transition: 'transform var(--timing-medium) var(--easing-bounce)',\r\n transformOrigin: 'left bottom',\r\n position: 'relative',\r\n 'img, svg, .icon-img': { width: 'var(--size-icon)', height: 'var(--size-icon)' },\r\n '.icon-img': {\r\n backgroundImage: `var(--mask-url)`,\r\n backgroundSize: 'cover',\r\n backgroundPosition: 'center',\r\n display: 'block',\r\n borderRadius: 4,\r\n transition: 'filter 0.3s',\r\n position: 'relative',\r\n zIndex: 1,\r\n filter: currentSx.iconImageFilter\r\n }\r\n },\r\n\r\n '& .text-container': { position: 'relative', overflow: 'hidden', flex: 1 },\r\n\r\n '.text': {\r\n textTransform: 'none',\r\n fontWeight: 600,\r\n fontSize: '1.125rem',\r\n lineHeight: 1.6,\r\n transformOrigin: 'left bottom'\r\n },\r\n\r\n '& .text-visible, & .text-hidden': {\r\n transition: 'transform var(--timing-medium) var(--easing-smooth)',\r\n display: 'block',\r\n width: '100%',\r\n textAlign: 'left',\r\n margin: 0\r\n },\r\n\r\n '& .text-visible': { transform: 'translateY(0) skewY(0)', opacity: 1 },\r\n\r\n '& .text-hidden': {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '0',\r\n transform: 'translateY(50%) skewY(15deg)',\r\n opacity: 1\r\n },\r\n\r\n '&.active-tab': {\r\n '& .icon-static': {\r\n color: 'var(--icon-color-active)',\r\n '.icon-img': {\r\n background: 'var(--bg-icon)',\r\n WebkitMaskImage: 'var(--mask-url)',\r\n maskImage: 'var(--mask-url)',\r\n WebkitMaskRepeat: 'no-repeat',\r\n maskRepeat: 'no-repeat',\r\n WebkitMaskSize: 'cover',\r\n maskSize: 'cover',\r\n filter: 'none'\r\n }\r\n },\r\n '&::after': { width: 'var(--size-icon)' }\r\n },\r\n '&.inactive-tab': { '&::after': { width: '0' } },\r\n\r\n '&:hover': {\r\n // transform: 'scale(1.02)',\r\n '&::after': { width: 'calc(100% - (var(--spacing-x-size) * 2))' },\r\n '& .icon-static': { transform: 'rotate(-10deg)' },\r\n '& .text-visible': { transform: 'translateY(-100%) skewY(-15deg)', opacity: 1 },\r\n '& .text-hidden': { transform: 'translateY(-50%) skewY(0)', opacity: 1 }\r\n }\r\n }\r\n})\r\n"],"names":["IconAudioBase64","IconVideoBase64","ButtonAnimation","props","children","startIcon","className","forceTheme","otherProps","_objectWithoutProperties","_excluded","renderIcon","useCallback","finalIcon","_jsx","Box","component","sx","concat","rootClasses","useMemo","classes","push","join","_jsxs","ButtonAnimationStyled","_objectSpread","Typography","variant","styled","Button","shouldForwardProp","prop","_ref","theme","currentSx","dark","primary","palette","common","white","secondary","iconActive","bgGradient","iconImageFilter","light","black","mode","height","position","overflow","transition","display","alignItems","gap","padding","color","backgroundColor","a","content","bottom","left","width","background","flexShrink","transformOrigin","backgroundImage","backgroundSize","backgroundPosition","borderRadius","zIndex","filter","flex","textTransform","fontWeight","fontSize","lineHeight","textAlign","margin","transform","opacity","top","WebkitMaskImage","maskImage","WebkitMaskRepeat","maskRepeat","WebkitMaskSize","maskSize"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"animated-tabs.units.js","sources":["../../src/layout-global/animated-tabs.units.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react'\r\nimport { Box, Button, styled, Typography } from '@mui/material'\r\nimport type { FC, ReactNode } from 'react'\r\nimport type { ButtonProps, Theme } from '@mui/material'\r\n\r\nexport const IconAudioBase64 = `data:image/webp;base64,UklGRkwEAABXRUJQVlA4WAoAAAAQAAAAdwAAdwAAQUxQSM4DAAABoEXb2iFJ+jKzjLZt27Zt27Zt27Zt27Zt24jM+5BfZPzxR/yrn2ZWREwA/Xdy+ctuYHMU9QRp8D4eQTnZwJ8JUU1aHZwMV0waPZwKUhUORFYVjioLJ8JVhT1hqsJhp2o0HewPU8zkAzo44FLLqJA9OtgeppQJFHZMB3sUQ3REB3uDFBNpvw42+AkqtXBFc1ui4BM6aCmmPQBssiUKOaZzSkis914oY0sUeoI7IaT8H6aPPVHocaa2kBoaM9imKMoaQBvtElL1LzPArogylE9NYu1P/D9f9Lp1Yyip7BvgXUWHgj4CwNsg9WQGm1k9NbmqNpavfGwxFbhythX3GPCjiUNEebvbBu/M6gkAO1Y9ibhVEjiiR7KXeNwS8xId+vFxRbjlAoo2TOfg4soS5Q0A7Lda0DkA0ySrq3n9yWGxA/BuI1dXeLvrWivea2a3S6rOXD0uxoQz++tYIPk75liwVJ24OkzgVQBaU/mScYcDrdMM3mfkS2q9xcwnBS1hvitoIfPVUEDqah0GDu3bonQCh0qCKy554gGvXR6V1WlPi5lvvoR0uA+DniMlnXa0nPniQ7kHELkncTJDybmjQdbpyVzXcczTIPbrMEOJ3jIHA6xQl4ny3qs3F+UkzPbB9ZCZRlJ14xoylHrXh2dDgpgYFyAP5XIDuBMgV3O3l1aGIwoNIP489D1XprSsVKpK1yXPxFHGqesHRCa50v/0ekGGXaug+3d5NifxQZVOCPNZGmr2B3ifw1hpt86VXA7y1dX0h3kJuZXmUZIGtSKR8Z/g1wWR0RSPTYvCzZFA7EDw2wLJePJ7ZtFbppI1wl5wN0hoetOKfgM86wOt0RSsllUMdTCLMoyd19ifrLGBm06CI9/kRgrz2UBVrooZr7nsomg0t1C6ElwRM8B+J+EJuHsO2fy4MBNKcWPF0W8G0tF4AJ4pThOGcllMOM8lls5RY/Wa2mTmEi7AhC1cHunM32jeaq6Q7cw1bzmX03b6c8VN2MHFsZ2c3FITfnAO2yEO4rKBvWhDd7iiwhZzo8l+5nFrXIJivmT+VpShhsYMkabSXwblBC0A+zamDGV+Mz2lcdziPocLqQl+BckY8TVTSBqqz+F6dAHFP+s4paDKXlNI4pscricxVPUn+EEkaZpBI0uQzBm/cfjQ0ulTzLka+PORZJF/kA5wuXlsnUzD30E/A9n2cj3gx5HZg3oPXXYFPrork30HrvLoCfS0cdoYuWaJ02qSzbf4KOhmJrL9pFvdAr6OdZECnfk3/jbwdmoCUmXC9pufcH+uL60Vkf6XMVZQOCBYAAAAEAcAnQEqeAB4AD6RSJ9LpaQioaSIALASCWlu4XEgAqWZ93Pu1keUUni2PHdLNfliQEgJASAkBICQEgJASAkBGAAA/v6knwxv//8VGk/xH3//+MPIwAAAAA==`\r\n\r\nexport const IconVideoBase64 = `data:image/webp;base64,UklGRngCAABXRUJQVlA4WAoAAAAQAAAAdwAAdwAAQUxQSAgCAAABkAXZtmk769nvxbbt5M+2bdvOp23btm3btm0nBzM8r9a5a8WpiogJoP8XB5eZceCMsMfXdkzuxVf4HkS2p4Vz9Tch9e3UPK0APJ/cuVFDURs0H3AEwOUwjtQGcCUTSTzUAKZyDAbexyOZRwMmx1mgLUkNWBwAkok1D+B5GFesLv8AyFyuZHIvheLMBYDpqfTZgW8+ba5NUXx/bXpdtjiA2TlMkztOgItVFbnuDJgeXY1rkcH1elrB2pRKKeBd/yClgGu5tMKH6b5KATfr+SgF7ErlpRTMDr5KASczagVkU+uUWq9zaPWhuFavMmm1h5R6nUSpDclJpRdViFWwWTFJpRuFiVuolz2CSKXD8cmFEj1u5kMaGcvCyZ3i3CxKbvW465GwegaTFrcc2ftykIs9bpOT+x3I1R6X28H0RKQKLfzWtdLkds8L7wngXZ+YpA5R2qoVEpEHSuCpf7nZQGqxVsPmOAH0lCoIsDj6Akgjk9d04CNHHAN4UkyisEU20J+DygOwlg/pLWzfyQ8A7PdnoVbvIfWxuMScb69MrwYGErtv9u5zVsu6ZunI8rHoD8LYBeLpFH4YJ4JUSvwEVoRW0CnRIxjhetRZuvz7Gz8Aa5aLunI8B4TneCabzZGhSdPvd38Nu11TUZvV4HCc6BE+hpPGSZ4CESolfICP4Sr5jn01yVel/+8CVlA4IEoAAACQBgCdASp4AHgAPpFIoUylpCMiIIgAsBIJaW7hdJAAT22IvEgubeI386q8sEbEFRz2xF4gqOe2IvEFRzvAAP7/Uk9vLwAAAAAAAA==`\r\n\r\nexport interface IButtonThemeProps {\r\n forceTheme?: 'dark' | 'light'\r\n}\r\n\r\nexport interface IButtonAnimationProps extends ButtonProps, IButtonThemeProps {\r\n children: ReactNode\r\n startIcon?: ReactNode\r\n [key: string]: any // Allow additional props\r\n}\r\n\r\nexport const ButtonAnimation: FC<IButtonAnimationProps> = (props) => {\r\n const { children, startIcon, className, forceTheme, ...otherProps } = props\r\n\r\n const renderIcon = useCallback(() => {\r\n if (!startIcon) return null\r\n let finalIcon = startIcon\r\n if (typeof startIcon === 'string') {\r\n finalIcon = <Box component='span' className='icon-img' sx={{ '--mask-url': `url(${startIcon})` }} />\r\n }\r\n return <span className='icon-static'>{finalIcon}</span>\r\n }, [startIcon])\r\n\r\n const rootClasses = useMemo(() => {\r\n const classes = ['tab-button']\r\n classes.push(className || '')\r\n return classes.join(' ')\r\n }, [className])\r\n\r\n return (\r\n <ButtonAnimationStyled {...otherProps} className={rootClasses} forceTheme={forceTheme}>\r\n {renderIcon()}\r\n <div className='text-container'>\r\n <Typography variant='h6' className='text text-visible'>\r\n {children}\r\n </Typography>\r\n <Typography variant='h6' className='text text-hidden'>\r\n {children}\r\n </Typography>\r\n </div>\r\n </ButtonAnimationStyled>\r\n )\r\n}\r\n\r\nconst ButtonAnimationStyled = styled(Button, {\r\n shouldForwardProp: (prop: PropertyKey) => prop !== 'forceTheme'\r\n})<IButtonThemeProps>(({ theme, forceTheme }: { theme: Theme; forceTheme?: 'dark' | 'light' }) => {\r\n const sxMap = {\r\n dark: {\r\n primary: theme.palette.common.white,\r\n secondary: 'rgb(249, 169, 37)',\r\n iconActive: 'rgb(249, 169, 37)',\r\n bgGradient: 'linear-gradient(45deg, rgb(211, 47, 47) 0%, rgb(249, 169, 37) 70%, rgb(211, 47, 47) 100%) 0% 0% / 200%',\r\n iconImageFilter: 'invert(1) brightness(2)'\r\n },\r\n light: {\r\n primary: theme.palette.common.black,\r\n secondary: 'rgb(156, 39, 176)',\r\n iconActive: 'rgb(156, 39, 176)',\r\n bgGradient: 'linear-gradient(45deg, rgb(25, 118, 210) 0%, rgb(156, 39, 176) 70%, rgb(25, 118, 210) 100%) 0% 0% / 200%',\r\n iconImageFilter: 'invert(0) brightness(0.2)'\r\n }\r\n }\r\n\r\n const mode = forceTheme || theme.palette.mode\r\n const currentSx = sxMap[mode as keyof typeof sxMap]\r\n\r\n return {\r\n '--color-primary': currentSx.primary,\r\n '--color-secondary': currentSx.secondary,\r\n '--bg-underline': currentSx.bgGradient,\r\n '--bg-icon': currentSx.bgGradient,\r\n '--icon-color-active': currentSx.iconActive,\r\n '--size-icon': '24px',\r\n '--spacing-x-size': '12px',\r\n '--timing-fast': '0.25s',\r\n '--timing-medium': '0.3s',\r\n '--easing-smooth': 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\r\n '--easing-bounce': 'cubic-bezier(0.34, 1.56, 0.64, 1)',\r\n height: 'var(--height-button, 40px)',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n transition: 'transform 0.2s, box-shadow 0.2s',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n padding: '6px var(--spacing-x-size)',\r\n color: 'var(--color-primary)',\r\n backgroundColor: 'transparent !important',\r\n\r\n a: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n\r\n '&::after': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n bottom: '2px',\r\n left: 'var(--spacing-x-size)',\r\n width: '0',\r\n height: '2px',\r\n background: 'var(--bg-underline)',\r\n transition: 'width var(--timing-fast) var(--easing-smooth)'\r\n },\r\n\r\n '& .icon-static': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexShrink: 0,\r\n transition: 'transform var(--timing-medium) var(--easing-bounce)',\r\n transformOrigin: 'left bottom',\r\n position: 'relative',\r\n 'img, svg, .icon-img': { width: 'var(--size-icon)', height: 'var(--size-icon)' },\r\n '.icon-img': {\r\n backgroundImage: `var(--mask-url)`,\r\n backgroundSize: 'cover',\r\n backgroundPosition: 'center',\r\n display: 'block',\r\n borderRadius: 4,\r\n transition: 'filter 0.3s',\r\n position: 'relative',\r\n zIndex: 1,\r\n filter: currentSx.iconImageFilter\r\n }\r\n },\r\n\r\n '& .text-container': { position: 'relative', overflow: 'hidden', flex: 1 },\r\n\r\n '.text': {\r\n textTransform: 'none',\r\n fontWeight: 600,\r\n lineHeight: 1.6,\r\n transformOrigin: 'left bottom'\r\n },\r\n\r\n '& .text-visible, & .text-hidden': {\r\n transition: 'transform var(--timing-medium) var(--easing-smooth)',\r\n display: 'block',\r\n width: '100%',\r\n textAlign: 'left',\r\n margin: 0\r\n },\r\n\r\n '& .text-visible': { transform: 'translateY(0) skewY(0)', opacity: 1 },\r\n\r\n '& .text-hidden': {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '0',\r\n transform: 'translateY(50%) skewY(15deg)',\r\n opacity: 1\r\n },\r\n\r\n '&.active': {\r\n '& .icon-static': {\r\n color: 'var(--icon-color-active)',\r\n '.icon-img': {\r\n background: 'var(--bg-icon)',\r\n WebkitMaskImage: 'var(--mask-url)',\r\n maskImage: 'var(--mask-url)',\r\n WebkitMaskRepeat: 'no-repeat',\r\n maskRepeat: 'no-repeat',\r\n WebkitMaskSize: 'cover',\r\n maskSize: 'cover',\r\n filter: 'none'\r\n }\r\n },\r\n '&::after': { width: 'var(--size-icon)' }\r\n },\r\n '&.inactive': { '&::after': { width: '0' } },\r\n\r\n '&:hover': {\r\n '&::after': { width: 'calc(100% - (var(--spacing-x-size) * 2))' },\r\n '& .icon-static': { transform: 'rotate(-10deg)' },\r\n '& .text-visible': { transform: 'translateY(-100%) skewY(-15deg)', opacity: 1 },\r\n '& .text-hidden': { transform: 'translateY(-50%) skewY(0)', opacity: 1 }\r\n }\r\n }\r\n})\r\n"],"names":["IconAudioBase64","IconVideoBase64","ButtonAnimation","props","children","startIcon","className","forceTheme","otherProps","_objectWithoutProperties","_excluded","renderIcon","useCallback","finalIcon","_jsx","Box","component","sx","concat","rootClasses","useMemo","classes","push","join","_jsxs","ButtonAnimationStyled","_objectSpread","Typography","variant","styled","Button","shouldForwardProp","prop","_ref","theme","currentSx","dark","primary","palette","common","white","secondary","iconActive","bgGradient","iconImageFilter","light","black","mode","height","position","overflow","transition","display","alignItems","gap","padding","color","backgroundColor","a","content","bottom","left","width","background","flexShrink","transformOrigin","backgroundImage","backgroundSize","backgroundPosition","borderRadius","zIndex","filter","flex","textTransform","fontWeight","lineHeight","textAlign","margin","transform","opacity","top","WebkitMaskImage","maskImage","WebkitMaskRepeat","maskRepeat","WebkitMaskSize","maskSize"],"mappings":"6UAKaA,EAAm/C,k+CAEn/CC,EAAm4B,k3BAYn4BC,EAA6C,SAACC,GACzD,IAAQC,EAA8DD,EAA9DC,SAAUC,EAAoDF,EAApDE,UAAWC,EAAyCH,EAAzCG,UAAWC,EAA8BJ,EAA9BI,WAAeC,EAAUC,EAAKN,EAAKO,GAErEC,EAAaC,EAAY,WAC7B,IAAKP,EAAW,OAAO,KACvB,IAAIQ,EAAYR,EAIhB,MAHyB,iBAAdA,IACTQ,EAAYC,EAACC,EAAG,CAACC,UAAU,OAAOV,UAAU,WAAWW,GAAI,CAAE,aAAY,OAAAC,OAASb,EAAS,SAEtFS,UAAMR,UAAU,cAAeF,SAAAS,GACxC,EAAG,CAACR,IAEEc,EAAcC,EAAQ,WAC1B,IAAMC,EAAU,CAAC,cAEjB,OADAA,EAAQC,KAAKhB,GAAa,IACnBe,EAAQE,KAAK,IACtB,EAAG,CAACjB,IAEJ,OACEkB,EAACC,EAAqBC,EAAAA,KAAKlB,GAAU,GAAA,CAAEF,UAAWa,EAAaZ,WAAYA,EACxEH,SAAA,CAAAO,IACDa,EAAK,MAAA,CAAAlB,UAAU,iBAAgBF,SAAA,CAC7BU,EAACa,EAAW,CAAAC,QAAQ,KAAKtB,UAAU,oBAAmBF,SACnDA,IAEHU,EAACa,EAAW,CAAAC,QAAQ,KAAKtB,UAAU,mBAAkBF,SAClDA,UAKX,EAEMqB,EAAwBI,EAAOC,EAAQ,CAC3CC,kBAAmB,SAACC,GAAiB,MAAc,eAATA,CAAqB,GADnCH,CAER,SAAAI,GAA2E,IAAxEC,EAAKD,EAALC,MAAO3B,EAAU0B,EAAV1B,WAmBxB4B,EAlBQ,CACZC,KAAM,CACJC,QAASH,EAAMI,QAAQC,OAAOC,MAC9BC,UAAW,oBACXC,WAAY,oBACZC,WAAY,yGACZC,gBAAiB,2BAEnBC,MAAO,CACLR,QAASH,EAAMI,QAAQC,OAAOO,MAC9BL,UAAW,oBACXC,WAAY,oBACZC,WAAY,2GACZC,gBAAiB,8BAIRrC,GAAc2B,EAAMI,QAAQS,MAGzC,MAAO,CACL,kBAAmBZ,EAAUE,QAC7B,oBAAqBF,EAAUM,UAC/B,iBAAkBN,EAAUQ,WAC5B,YAAaR,EAAUQ,WACvB,sBAAuBR,EAAUO,WACjC,cAAe,OACf,mBAAoB,OACpB,gBAAiB,QACjB,kBAAmB,OACnB,kBAAmB,uCACnB,kBAAmB,oCACnBM,OAAQ,6BACRC,SAAU,WACVC,SAAU,SACVC,WAAY,kCACZC,QAAS,OACTC,WAAY,SACZC,IAAK,MACLC,QAAS,4BACTC,MAAO,uBACPC,gBAAiB,yBAEjBC,EAAG,CACDN,QAAS,OACTC,WAAY,UAGd,WAAY,CACVM,QAAS,KACTV,SAAU,WACVW,OAAQ,MACRC,KAAM,wBACNC,MAAO,IACPd,OAAQ,MACRe,WAAY,sBACZZ,WAAY,iDAGd,iBAAkB,CAChBC,QAAS,OACTC,WAAY,SACZW,WAAY,EACZb,WAAY,sDACZc,gBAAiB,cACjBhB,SAAU,WACV,sBAAuB,CAAEa,MAAO,mBAAoBd,OAAQ,oBAC5D,YAAa,CACXkB,gBAAkC,kBAClCC,eAAgB,QAChBC,mBAAoB,SACpBhB,QAAS,QACTiB,aAAc,EACdlB,WAAY,cACZF,SAAU,WACVqB,OAAQ,EACRC,OAAQpC,EAAUS,kBAItB,oBAAqB,CAAEK,SAAU,WAAYC,SAAU,SAAUsB,KAAM,GAEvE,QAAS,CACPC,cAAe,OACfC,WAAY,IACZC,WAAY,IACZV,gBAAiB,eAGnB,kCAAmC,CACjCd,WAAY,sDACZC,QAAS,QACTU,MAAO,OACPc,UAAW,OACXC,OAAQ,GAGV,kBAAmB,CAAEC,UAAW,yBAA0BC,QAAS,GAEnE,iBAAkB,CAChB9B,SAAU,WACV+B,IAAK,MACLnB,KAAM,IACNiB,UAAW,+BACXC,QAAS,GAGX,WAAY,CACV,iBAAkB,CAChBvB,MAAO,2BACP,YAAa,CACXO,WAAY,iBACZkB,gBAAiB,kBACjBC,UAAW,kBACXC,iBAAkB,YAClBC,WAAY,YACZC,eAAgB,QAChBC,SAAU,QACVf,OAAQ,SAGZ,WAAY,CAAET,MAAO,qBAEvB,aAAc,CAAE,WAAY,CAAEA,MAAO,MAErC,UAAW,CACT,WAAY,CAAEA,MAAO,4CACrB,iBAAkB,CAAEgB,UAAW,kBAC/B,kBAAmB,CAAEA,UAAW,kCAAmCC,QAAS,GAC5E,iBAAkB,CAAED,UAAW,4BAA6BC,QAAS,IAG3E"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as r,createClass as e,objectSpread2 as n,classCallCheck as i,callSuper as a,defineProperty as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as l}from"react/jsx-runtime";import{Component as
|
|
1
|
+
import{inherits as r,createClass as e,objectSpread2 as n,classCallCheck as i,callSuper as a,defineProperty as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as l}from"react/jsx-runtime";import{Component as s}from"react";import{CssBaseline as c,Container as m,Grid as p,Typography as d,Divider as h,Box as u,IconButton as v}from"@mui/material";import{AppLogo as f}from"./app-logo.js";import{TextLineBreak as g}from"./ui.units.js";import{AppThemeProvider as N}from"./app-theme-provider.js";import{FooterStyled as k,appFooterClasses as x,AppFooterNav as b}from"./app-footer.styled.js";import{getFooterNavConfigs as C,bgFooterUrl as j,appLogoUrl as y,footerDescription as F,appSocialConfigs as I,copyrightText as L}from"./configs.js";var E=function(){function E(){var r;i(this,E);for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return r=a(this,E,[].concat(n)),o(r,"handleNavItemClick",function(e,n){r.props.onNavItemClick&&n&&r.props.onNavItemClick(e,n)}),r}return r(E,s),e(E,[{key:"render",value:function(){var r,e=this,i=C(this.props.baseUrl);return t(N,n(n({},null===(r=this.props.slots)||void 0===r?void 0:r.themeProps),{},{children:[l(c,{}),t(k,{className:x.root,children:[l("img",{src:j,alt:"Footer Background",className:x.background,loading:"lazy"}),t(m,{maxWidth:!1,className:x.content,children:[t(p,{container:!0,children:[t(p,{item:!0,xs:12,lg:7,children:[l(f,{src:y,href:this.props.baseUrl.home,className:x.appLogo}),l(d,{variant:"subtitle1",className:x.description,children:l(g,{children:F})})]}),l(p,{item:!0,xs:12,lg:5,children:l(b,{children:l(p,{container:!0,children:i.map(function(r,n){return l(p,{item:!0,xs:12,md:6,children:l("ul",{children:r.map(function(r,n){var i,a,o;return l("li",{className:x.navItem,children:l(d,{variant:"h5",className:x.navItemText,component:"a",href:null!==(i=null===(a=r.navLink)||void 0===a?void 0:a.href)&&void 0!==i?i:"/",target:null===(o=r.navLink)||void 0===o?void 0:o.target,onClick:function(n){return e.handleNavItemClick(n,r.navLink)},children:l("span",{children:r.title})})},n)})})},n)})})})})]}),t("div",{className:x.copyright,children:[l(h,{sx:{borderColor:"#1E1E1E",mt:{xs:"20px",md:"80px"}}}),l("ul",{className:x.socialList,children:I.map(function(r,e){var i=n({"--social-color-hover":r.color||"#FFFFFF"},r.sx);return l(u,{component:"li",sx:i,children:l(v,{component:"a",href:r.link,target:"_blank",rel:"noopener noreferrer",children:r.icon})},e)})}),l("div",{className:x.copyrightText,children:l(d,{variant:"subtitle1",noWrap:!0,children:L})})]})]})]})]}))}}])}(),P=function(r){var e=function(e){return l(E,n(n({},r),e))};return e.displayName="AppFooter",e};export{E as AppFooter,P as createAppFooter,E as default};
|
|
2
2
|
//# sourceMappingURL=app-footer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-footer.js","sources":["../../src/layout-global/app-footer.tsx"],"sourcesContent":["import { Component, FC } from 'react'\r\nimport { Box, Container, CssBaseline, Divider, Grid, IconButton, Typography } from '@mui/material'\r\nimport type { SxProps, Theme } from '@mui/material'\r\nimport { AppLogo } from './app-logo'\r\nimport { TextLineBreak } from './ui.units'\r\nimport { AppThemeProvider } from './app-theme-provider'\r\nimport { appFooterClasses, AppFooterNav, FooterStyled } from './app-footer.styled'\r\nimport { getFooterNavConfigs, appSocialConfigs, copyrightText, footerDescription, bgFooterUrl, appLogoUrl } from './configs'\r\nimport type { INavLink, NavItemClickFunction } from './types'\r\nimport type { IAppSiteBaseUrl } from '../types'\r\n\r\nexport interface IAppFooterProps {\r\n baseUrl: IAppSiteBaseUrl\r\n onNavItemClick?: NavItemClickFunction\r\n}\r\n\r\nexport class AppFooter extends Component<IAppFooterProps> {\r\n render() {\r\n // const bgFooterUrl = useMemo(() => getBgFooterUrl(props.baseUrl), [props.baseUrl])\r\n const footerNavConfigs = getFooterNavConfigs(this.props.baseUrl)\r\n\r\n return (\r\n <AppThemeProvider>\r\n {/* The AppThemeProvider provides a consistent theme across the application */}\r\n {/* It uses the light theme with Roboto and Oswald fonts */}\r\n {/* The primary font is Roboto and the secondary font is Oswald */}\r\n {/* The theme is applied globally using MUI's ThemeProvider and CssBaseline */}\r\n <CssBaseline />\r\n <FooterStyled className={appFooterClasses.root}>\r\n <img src={bgFooterUrl} alt='Footer Background' className={appFooterClasses.background} loading='lazy' />\r\n <Container maxWidth={false} className={appFooterClasses.content}>\r\n <Grid container>\r\n <Grid item xs={12} lg={7}>\r\n <AppLogo src={appLogoUrl} href={this.props.baseUrl.home} className={appFooterClasses.appLogo} />\r\n <Typography variant='
|
|
1
|
+
{"version":3,"file":"app-footer.js","sources":["../../src/layout-global/app-footer.tsx"],"sourcesContent":["import { Component, FC } from 'react'\r\nimport { Box, Container, CssBaseline, Divider, Grid, IconButton, Typography } from '@mui/material'\r\nimport type { SxProps, Theme } from '@mui/material'\r\nimport { AppLogo } from './app-logo'\r\nimport { TextLineBreak } from './ui.units'\r\nimport { AppThemeProvider, IAppThemeProviderProps } from './app-theme-provider'\r\nimport { appFooterClasses, AppFooterNav, FooterStyled } from './app-footer.styled'\r\nimport { getFooterNavConfigs, appSocialConfigs, copyrightText, footerDescription, bgFooterUrl, appLogoUrl } from './configs'\r\nimport type { INavLink, NavItemClickFunction } from './types'\r\nimport type { IAppSiteBaseUrl } from '../types'\r\n\r\nexport interface IAppFooterSlots {\r\n themeProps?: Partial<IAppThemeProviderProps>\r\n}\r\n\r\nexport interface IAppFooterProps {\r\n baseUrl: IAppSiteBaseUrl\r\n onNavItemClick?: NavItemClickFunction\r\n slots?: IAppFooterSlots\r\n}\r\n\r\nexport class AppFooter extends Component<IAppFooterProps> {\r\n render() {\r\n // const bgFooterUrl = useMemo(() => getBgFooterUrl(props.baseUrl), [props.baseUrl])\r\n const footerNavConfigs = getFooterNavConfigs(this.props.baseUrl)\r\n\r\n return (\r\n <AppThemeProvider {...this.props.slots?.themeProps}>\r\n {/* The AppThemeProvider provides a consistent theme across the application */}\r\n {/* It uses the light theme with Roboto and Oswald fonts */}\r\n {/* The primary font is Roboto and the secondary font is Oswald */}\r\n {/* The theme is applied globally using MUI's ThemeProvider and CssBaseline */}\r\n <CssBaseline />\r\n <FooterStyled className={appFooterClasses.root}>\r\n <img src={bgFooterUrl} alt='Footer Background' className={appFooterClasses.background} loading='lazy' />\r\n <Container maxWidth={false} className={appFooterClasses.content}>\r\n <Grid container>\r\n <Grid item xs={12} lg={7}>\r\n <AppLogo src={appLogoUrl} href={this.props.baseUrl.home} className={appFooterClasses.appLogo} />\r\n <Typography variant='subtitle1' className={appFooterClasses.description}>\r\n <TextLineBreak>{footerDescription}</TextLineBreak>\r\n </Typography>\r\n </Grid>\r\n <Grid item xs={12} lg={5}>\r\n <AppFooterNav>\r\n <Grid container>\r\n {footerNavConfigs.map((navs, index) => (\r\n <Grid key={index} item xs={12} md={6}>\r\n <ul>\r\n {navs.map((nav, navIndex) => (\r\n <li key={navIndex} className={appFooterClasses.navItem}>\r\n <Typography\r\n variant='h5'\r\n className={appFooterClasses.navItemText}\r\n component='a'\r\n href={nav.navLink?.href ?? '/'}\r\n target={nav.navLink?.target}\r\n onClick={(event) => this.handleNavItemClick(event, nav.navLink)}\r\n >\r\n <span>{nav.title}</span>\r\n </Typography>\r\n </li>\r\n ))}\r\n </ul>\r\n </Grid>\r\n ))}\r\n </Grid>\r\n </AppFooterNav>\r\n </Grid>\r\n </Grid>\r\n <div className={appFooterClasses.copyright}>\r\n <Divider sx={{ borderColor: '#1E1E1E', mt: { xs: '20px', md: '80px' } }} />\r\n <ul className={appFooterClasses.socialList}>\r\n {appSocialConfigs.map((social, index) => {\r\n const sxProps: SxProps<Theme> = { '--social-color-hover': social.color || '#FFFFFF', ...social.sx }\r\n return (\r\n <Box component='li' key={index} sx={sxProps}>\r\n <IconButton component='a' href={social.link} target='_blank' rel='noopener noreferrer'>\r\n {social.icon}\r\n </IconButton>\r\n </Box>\r\n )\r\n })}\r\n </ul>\r\n <div className={appFooterClasses.copyrightText}>\r\n <Typography variant='subtitle1' noWrap>\r\n {copyrightText}\r\n </Typography>\r\n </div>\r\n </div>\r\n </Container>\r\n </FooterStyled>\r\n </AppThemeProvider>\r\n )\r\n }\r\n\r\n handleNavItemClick = (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>, item?: INavLink) => {\r\n if (!this.props.onNavItemClick || !item) return\r\n this.props.onNavItemClick(event, item)\r\n }\r\n}\r\nexport default AppFooter\r\n\r\nexport const createAppFooter = (params: IAppFooterProps): FC<Partial<IAppFooterProps>> => {\r\n const _AppFooter: FC<Partial<IAppFooterProps>> = (props) => <AppFooter {...params} {...props} />\r\n _AppFooter.displayName = 'AppFooter'\r\n return _AppFooter\r\n}\r\n"],"names":["AppFooter","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","event","item","props","onNavItemClick","_inherits","Component","_createClass","key","value","_this$props$slots","_this2","footerNavConfigs","getFooterNavConfigs","baseUrl","_jsxs","AppThemeProvider","_objectSpread","slots","themeProps","children","_jsx","CssBaseline","FooterStyled","className","appFooterClasses","root","src","bgFooterUrl","alt","background","loading","Container","maxWidth","content","Grid","container","xs","lg","AppLogo","appLogoUrl","href","home","appLogo","Typography","variant","description","TextLineBreak","footerDescription","AppFooterNav","map","navs","index","md","nav","navIndex","_nav$navLink$href","_nav$navLink","_nav$navLink2","navItem","navItemText","component","navLink","target","onClick","handleNavItemClick","title","copyright","Divider","sx","borderColor","mt","socialList","appSocialConfigs","social","sxProps","color","Box","IconButton","link","rel","icon","copyrightText","noWrap","createAppFooter","params","_AppFooter","displayName"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{objectSpread2 as o,defineProperty as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as r}from"react/jsx-runtime";import{styled as e,Box as i,colors as
|
|
1
|
+
import{objectSpread2 as o,defineProperty as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as r}from"react/jsx-runtime";import{styled as e,Box as i,colors as n}from"@mui/material";var a={root:"AppFooter-root",content:"AppFooter-content",background:"AppFooter-background",description:"AppFooter-description",copyright:"AppFooter-copyright",copyrightText:"AppFooter-copyrightText",socialList:"AppFooter-socialList",appLogo:"AppFooter-appLogo",navs:"AppFooter-navs",navItem:"AppFooter-navItem",navItemText:"AppFooter-navItemText"},p=function(o,t){return"".concat((null==t?void 0:t.prefix)||"",".").concat(a[o]).concat((null==t?void 0:t.suffix)||"")},c=e(function(t){return r(i,o({component:"footer"},t))})(function(o){var r=o.theme;return t(t(t(t(t(t({backgroundColor:"var(--color-bg-footer, #141414)",color:"var(--color-text-footer, #ffffff)",position:"relative",paddingTop:"130px",width:"100%","*":{margin:0,padding:0,boxSizing:"border-box"}},p("content"),{maxWidth:"var(--max-width, 1688px)",position:"relative",zIndex:1}),p("background"),{objectFit:"cover",width:"100%",height:"100%",position:"absolute",top:0,left:0,zIndex:0}),p("description"),{marginTop:r.spacing(2),color:"var(--color-text-footer, ".concat(n.grey[400],")"),lineHeight:1.5,textAlign:"left",maxWidth:"500px",marginBottom:r.spacing(4)}),p("copyright"),t({position:"relative"},p("socialList"),t({position:"absolute",top:"50%",left:0,transform:"translateY(-50%)"},r.breakpoints.down("md"),{position:"unset",transform:"none",paddingTop:r.spacing(2.5)}))),p("copyrightText"),{paddingTop:r.spacing(4),paddingBottom:r.spacing(4),width:"100%",".MuiTypography-root":{lineHeight:1,textAlign:"center",color:"var(--color-text-footer, ".concat(n.grey[300],")")}}),p("socialList"),{display:"flex",justifyContent:"center",listStyle:"none","&:hover":{"--social-color":n.grey[600]},li:{margin:r.spacing(0,1),a:{backgroundColor:"rgb(27, 27, 27)",textDecoration:"none",width:"var(--social-icon-size, 40px)",height:"var(--social-icon-size, 40px)",borderRadius:"50%",transition:"all 0.3s ease",color:"var(--social-color, #f0f0f0)","&:hover":{color:"var(--social-color-hover, #ffffff)",transform:"translateY(-3px) scale(1.05)"}}}})}),l=e(function(t){return r(i,o({component:"nav"},t))})(function(o){var r=o.theme;return t({"--bg-divider":"linear-gradient(45deg, rgb(211, 47, 47) 0%, rgb(249, 169, 37) 70%, rgb(211, 47, 47) 100%) 0% 0% / 200%","&:hover":{"--color-text-footer":n.grey[600]}},p("navItem"),t(t(t({position:"relative",backgroundColor:"var(--bg-nav-item, transparent)",transition:"all 0.35s",borderRadius:r.shape.borderRadius},p("navItemText"),{padding:"var(--padding-nav-item-text, ".concat(r.spacing(1,4,1,1.5),")"),color:"var(--color-text-footer, ".concat(n.grey[300],")"),textDecoration:"none",display:"block",width:"100%",transition:"all 0.3s ease",span:{display:"inline-block"}}),"&::before",{content:'""',position:"absolute",left:"14px",top:"50%",transform:"translateY(-50%)",width:0,transition:"all 0.4s",background:"var(--bg-divider)",height:"2px"}),"&:hover",{"--color-text-footer":n.common.white,"--padding-nav-item-text":r.spacing(1,1.5,1,4),backgroundColor:"var(--bg-nav-item-hover, rgba(249, 169, 37, 0.1))","&::before":{width:r.spacing(1.5),marginRight:r.spacing(1)}}))});export{l as AppFooterNav,c as FooterStyled,a as appFooterClasses,p as getAppFooterClasses};
|
|
2
2
|
//# sourceMappingURL=app-footer.styled.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-footer.styled.js","sources":["../../src/layout-global/app-footer.styled.tsx"],"sourcesContent":["import { Box, colors, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { BoxProps } from '@mui/material'\r\n\r\nexport const appFooterClasses = {\r\n root: 'AppFooter-root',\r\n content: 'AppFooter-content',\r\n background: 'AppFooter-background',\r\n description: 'AppFooter-description',\r\n copyright: 'AppFooter-copyright',\r\n copyrightText: 'AppFooter-copyrightText',\r\n socialList: 'AppFooter-socialList',\r\n appLogo: 'AppFooter-appLogo',\r\n navs: 'AppFooter-navs',\r\n navItem: 'AppFooter-navItem',\r\n navItemText: 'AppFooter-navItemText'\r\n}\r\n\r\
|
|
1
|
+
{"version":3,"file":"app-footer.styled.js","sources":["../../src/layout-global/app-footer.styled.tsx"],"sourcesContent":["import { Box, colors, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { BoxProps } from '@mui/material'\r\n\r\nexport const appFooterClasses = {\r\n root: 'AppFooter-root',\r\n content: 'AppFooter-content',\r\n background: 'AppFooter-background',\r\n description: 'AppFooter-description',\r\n copyright: 'AppFooter-copyright',\r\n copyrightText: 'AppFooter-copyrightText',\r\n socialList: 'AppFooter-socialList',\r\n appLogo: 'AppFooter-appLogo',\r\n navs: 'AppFooter-navs',\r\n navItem: 'AppFooter-navItem',\r\n navItemText: 'AppFooter-navItemText'\r\n}\r\n\r\nexport const getAppFooterClasses = (key: keyof typeof appFooterClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${appFooterClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nexport const FooterStyled: ComponentType<BoxProps> = styled((p: BoxProps) => <Box component='footer' {...p} />)(({ theme }) => ({\r\n backgroundColor: 'var(--color-bg-footer, #141414)',\r\n color: 'var(--color-text-footer, #ffffff)',\r\n position: 'relative',\r\n paddingTop: '130px',\r\n width: '100%',\r\n '*': {\r\n margin: 0,\r\n padding: 0,\r\n boxSizing: 'border-box'\r\n },\r\n\r\n [getAppFooterClasses('content')]: {\r\n maxWidth: 'var(--max-width, 1688px)',\r\n position: 'relative',\r\n zIndex: 1\r\n },\r\n\r\n [getAppFooterClasses('background')]: {\r\n objectFit: 'cover',\r\n width: '100%',\r\n height: '100%',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n zIndex: 0\r\n },\r\n\r\n [getAppFooterClasses('description')]: {\r\n marginTop: theme.spacing(2),\r\n color: `var(--color-text-footer, ${colors.grey[400]})`,\r\n lineHeight: 1.5,\r\n textAlign: 'left',\r\n maxWidth: '500px',\r\n marginBottom: theme.spacing(4)\r\n },\r\n\r\n [getAppFooterClasses('copyright')]: {\r\n position: 'relative',\r\n [getAppFooterClasses('socialList')]: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: 0,\r\n transform: 'translateY(-50%)',\r\n [theme.breakpoints.down('md')]: {\r\n position: 'unset',\r\n transform: 'none',\r\n paddingTop: theme.spacing(2.5)\r\n }\r\n }\r\n },\r\n\r\n [getAppFooterClasses('copyrightText')]: {\r\n paddingTop: theme.spacing(4),\r\n paddingBottom: theme.spacing(4),\r\n width: '100%',\r\n '.MuiTypography-root': {\r\n lineHeight: 1,\r\n textAlign: 'center',\r\n color: `var(--color-text-footer, ${colors.grey[300]})`\r\n }\r\n },\r\n\r\n [getAppFooterClasses('socialList')]: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n listStyle: 'none',\r\n '&:hover': { '--social-color': colors.grey[600] },\r\n li: {\r\n margin: theme.spacing(0, 1),\r\n a: {\r\n backgroundColor: 'rgb(27, 27, 27)',\r\n textDecoration: 'none',\r\n width: 'var(--social-icon-size, 40px)',\r\n height: 'var(--social-icon-size, 40px)',\r\n borderRadius: '50%',\r\n transition: 'all 0.3s ease',\r\n color: 'var(--social-color, #f0f0f0)',\r\n '&:hover': {\r\n color: 'var(--social-color-hover, #ffffff)',\r\n transform: 'translateY(-3px) scale(1.05)'\r\n }\r\n }\r\n }\r\n }\r\n}))\r\n\r\nexport const AppFooterNav: ComponentType<BoxProps> = styled((p: BoxProps) => <Box component='nav' {...p} />)(({ theme }) => ({\r\n '--bg-divider': 'linear-gradient(45deg, rgb(211, 47, 47) 0%, rgb(249, 169, 37) 70%, rgb(211, 47, 47) 100%) 0% 0% / 200%',\r\n '&:hover': { '--color-text-footer': colors.grey[600] },\r\n [getAppFooterClasses('navItem')]: {\r\n position: 'relative',\r\n backgroundColor: 'var(--bg-nav-item, transparent)',\r\n transition: 'all 0.35s',\r\n borderRadius: theme.shape.borderRadius,\r\n\r\n [getAppFooterClasses('navItemText')]: {\r\n padding: `var(--padding-nav-item-text, ${theme.spacing(1, 4, 1, 1.5)})`,\r\n color: `var(--color-text-footer, ${colors.grey[300]})`,\r\n textDecoration: 'none',\r\n display: 'block',\r\n width: '100%',\r\n transition: 'all 0.3s ease',\r\n span: { display: 'inline-block' }\r\n },\r\n\r\n '&::before': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n left: '14px',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n width: 0,\r\n transition: 'all 0.4s',\r\n background: 'var(--bg-divider)',\r\n height: '2px'\r\n },\r\n\r\n '&:hover': {\r\n '--color-text-footer': colors.common.white,\r\n '--padding-nav-item-text': theme.spacing(1, 1.5, 1, 4),\r\n backgroundColor: 'var(--bg-nav-item-hover, rgba(249, 169, 37, 0.1))',\r\n '&::before': { width: theme.spacing(1.5), marginRight: theme.spacing(1) }\r\n }\r\n }\r\n}))\r\n"],"names":["appFooterClasses","root","content","background","description","copyright","copyrightText","socialList","appLogo","navs","navItem","navItemText","getAppFooterClasses","key","options","concat","prefix","suffix","FooterStyled","styled","p","_jsx","Box","_objectSpread","component","_ref","theme","_defineProperty","backgroundColor","color","position","paddingTop","width","margin","padding","boxSizing","maxWidth","zIndex","objectFit","height","top","left","marginTop","spacing","colors","grey","lineHeight","textAlign","marginBottom","transform","breakpoints","down","paddingBottom","display","justifyContent","listStyle","li","a","textDecoration","borderRadius","transition","AppFooterNav","_ref3","shape","span","common","white","marginRight"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as r,createClass as
|
|
1
|
+
import{inherits as r,createClass as s,objectSpread2 as e,classCallCheck as o,callSuper as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as i,jsx as a}from"react/jsx-runtime";import{Component as n}from"react";import{CssBaseline as l,Container as p,Stack as m}from"@mui/material";import{AppLogo as c}from"./app-logo.js";import{AppThemeProvider as d}from"./app-theme-provider.js";import{appLogoUrl as h,getHeaderNavConfigs as f}from"./configs.js";import{HeaderStyled as u,appHeaderClasses as v}from"./app-header.styled.js";import x from"./mobile-menu.js";import g from"./app-header.nav.js";var j=function(){function j(r){var s;return o(this,j),(s=t(this,j,[r])).configs=f(r.baseUrl),s}return r(j,n),s(j,[{key:"render",value:function(){var r,s;return i(d,e(e({},null===(r=this.props.slots)||void 0===r?void 0:r.themeProps),{},{children:[a(l,{}),a(u,{className:v.root,children:a("div",{className:v.rootFixed,children:i(p,{maxWidth:!1,className:v.content,sx:{height:"100%"},children:[a(c,{src:h,href:this.props.baseUrl.home,sx:{mb:"-12px"}}),i(m,{direction:"row",alignItems:"center",spacing:2,children:[a(g,{onNavItemClick:this.props.onNavItemClick,configs:this.configs,sx:{display:{xs:"none",md:"flex"}},slots:null===(s=this.props.slots)||void 0===s?void 0:s.navItem}),i(m,{direction:"row",gap:1,sx:{justifyContent:"flex-end",alignItems:"center"},children:[this.props.actions,a(x,{baseUrl:this.props.baseUrl})]})]})]})})})]}))}}])}(),b=function(r){var s=function(s){return a(j,e({},e(e(e({},r),s),{},{slots:e(e({},r.slots),s.slots)})))};return s.displayName="AppHeader",s};export{j as AppHeader,b as createAppHeader,j as default};
|
|
2
2
|
//# sourceMappingURL=app-header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-header.js","sources":["../../src/layout-global/app-header.tsx"],"sourcesContent":["import { Component } from 'react'\r\nimport { Container, CssBaseline, Stack } from '@mui/material'\r\nimport type { ComponentType, FC, ReactNode } from 'react'\r\nimport { AppLogo } from './app-logo'\r\nimport { AppThemeProvider } from './app-theme-provider'\r\nimport { IAppNav, NavItemClickFunction } from './types'\r\nimport { appLogoUrl, getHeaderNavConfigs } from './configs'\r\nimport { appHeaderClasses, HeaderStyled } from './app-header.styled'\r\nimport type { IAppSiteBaseUrl } from '../types'\r\nimport type { IAppHeaderNavSlots } from './app-header.nav'\r\nimport MobileMenu from './mobile-menu'\r\nimport AppHeaderNav from './app-header.nav'\r\n\r\nexport interface IAppHeaderSlots {\r\n navItem?: IAppHeaderNavSlots\r\n}\r\n\r\nexport interface IAppHeaderProps {\r\n baseUrl: IAppSiteBaseUrl\r\n onNavItemClick?: NavItemClickFunction\r\n actions?: ReactNode\r\n slots?: IAppHeaderSlots\r\n}\r\n\r\nexport class AppHeader extends Component<IAppHeaderProps> {\r\n private configs: IAppNav[]\r\n constructor(props: IAppHeaderProps) {\r\n super(props)\r\n this.configs = getHeaderNavConfigs(props.baseUrl)\r\n }\r\n\r\n render() {\r\n return (\r\n <AppThemeProvider>\r\n {/* The AppThemeProvider provides a consistent theme across the application */}\r\n {/* It uses the light theme with Roboto and Oswald fonts */}\r\n {/* The primary font is Roboto and the secondary font is Oswald */}\r\n {/* The theme is applied globally using MUI's ThemeProvider and CssBaseline */}\r\n <CssBaseline />\r\n <HeaderStyled className={appHeaderClasses.root}>\r\n <div className={appHeaderClasses.rootFixed}>\r\n <Container maxWidth={false} className={appHeaderClasses.content} sx={{ height: '100%' }}>\r\n {/* The AppLogo component displays the application logo */}\r\n <AppLogo src={appLogoUrl} href={this.props.baseUrl.home} sx={{ mb: '-12px' }} />\r\n <Stack direction='row' alignItems='center' spacing={2}>\r\n <AppHeaderNav\r\n onNavItemClick={this.props.onNavItemClick}\r\n configs={this.configs}\r\n sx={{ display: { xs: 'none', md: 'flex' } }}\r\n slots={this.props.slots?.navItem}\r\n />\r\n <Stack direction='row' gap={1} sx={{ justifyContent: 'flex-end', alignItems: 'center' }}>\r\n {this.props.actions}\r\n {/* MobileMenu is a responsive menu for smaller screens */}\r\n {/* It provides a hamburger menu icon that toggles the navigation items */}\r\n <MobileMenu baseUrl={this.props.baseUrl} />\r\n </Stack>\r\n </Stack>\r\n </Container>\r\n </div>\r\n </HeaderStyled>\r\n </AppThemeProvider>\r\n )\r\n }\r\n}\r\nexport default AppHeader\r\n\r\nexport const createAppHeader = (params: IAppHeaderProps): ComponentType<Partial<IAppHeaderProps>> => {\r\n const _AppHeader: FC<Partial<IAppHeaderProps>> = (props) => <AppHeader {...params
|
|
1
|
+
{"version":3,"file":"app-header.js","sources":["../../src/layout-global/app-header.tsx"],"sourcesContent":["import { Component } from 'react'\r\nimport { Container, CssBaseline, Stack } from '@mui/material'\r\nimport type { ComponentType, FC, ReactNode } from 'react'\r\nimport { AppLogo } from './app-logo'\r\nimport { AppThemeProvider, IAppThemeProviderProps } from './app-theme-provider'\r\nimport { IAppNav, NavItemClickFunction } from './types'\r\nimport { appLogoUrl, getHeaderNavConfigs } from './configs'\r\nimport { appHeaderClasses, HeaderStyled } from './app-header.styled'\r\nimport type { IAppSiteBaseUrl } from '../types'\r\nimport type { IAppHeaderNavSlots } from './app-header.nav'\r\nimport MobileMenu from './mobile-menu'\r\nimport AppHeaderNav from './app-header.nav'\r\n\r\nexport interface IAppHeaderSlots {\r\n navItem?: IAppHeaderNavSlots\r\n themeProps?: Partial<IAppThemeProviderProps>\r\n}\r\n\r\nexport interface IAppHeaderProps {\r\n baseUrl: IAppSiteBaseUrl\r\n onNavItemClick?: NavItemClickFunction\r\n actions?: ReactNode\r\n slots?: IAppHeaderSlots\r\n}\r\n\r\nexport class AppHeader extends Component<IAppHeaderProps> {\r\n private configs: IAppNav[]\r\n constructor(props: IAppHeaderProps) {\r\n super(props)\r\n this.configs = getHeaderNavConfigs(props.baseUrl)\r\n }\r\n\r\n render() {\r\n return (\r\n <AppThemeProvider {...this.props.slots?.themeProps}>\r\n {/* The AppThemeProvider provides a consistent theme across the application */}\r\n {/* It uses the light theme with Roboto and Oswald fonts */}\r\n {/* The primary font is Roboto and the secondary font is Oswald */}\r\n {/* The theme is applied globally using MUI's ThemeProvider and CssBaseline */}\r\n <CssBaseline />\r\n <HeaderStyled className={appHeaderClasses.root}>\r\n <div className={appHeaderClasses.rootFixed}>\r\n <Container maxWidth={false} className={appHeaderClasses.content} sx={{ height: '100%' }}>\r\n {/* The AppLogo component displays the application logo */}\r\n <AppLogo src={appLogoUrl} href={this.props.baseUrl.home} sx={{ mb: '-12px' }} />\r\n <Stack direction='row' alignItems='center' spacing={2}>\r\n <AppHeaderNav\r\n onNavItemClick={this.props.onNavItemClick}\r\n configs={this.configs}\r\n sx={{ display: { xs: 'none', md: 'flex' } }}\r\n slots={this.props.slots?.navItem}\r\n />\r\n <Stack direction='row' gap={1} sx={{ justifyContent: 'flex-end', alignItems: 'center' }}>\r\n {this.props.actions}\r\n {/* MobileMenu is a responsive menu for smaller screens */}\r\n {/* It provides a hamburger menu icon that toggles the navigation items */}\r\n <MobileMenu baseUrl={this.props.baseUrl} />\r\n </Stack>\r\n </Stack>\r\n </Container>\r\n </div>\r\n </HeaderStyled>\r\n </AppThemeProvider>\r\n )\r\n }\r\n}\r\nexport default AppHeader\r\n\r\nexport const createAppHeader = (params: IAppHeaderProps): ComponentType<Partial<IAppHeaderProps>> => {\r\n const _AppHeader: FC<Partial<IAppHeaderProps>> = (props) => {\r\n return <AppHeader {...{ ...params, ...props, slots: { ...params.slots, ...props.slots } }} />\r\n }\r\n _AppHeader.displayName = 'AppHeader'\r\n return _AppHeader\r\n}\r\n"],"names":["AppHeader","props","_this","_classCallCheck","_callSuper","configs","getHeaderNavConfigs","baseUrl","_inherits","Component","_createClass","key","value","_this$props$slots","_this$props$slots2","_jsxs","AppThemeProvider","_objectSpread","this","slots","themeProps","children","_jsx","CssBaseline","HeaderStyled","className","appHeaderClasses","root","rootFixed","Container","maxWidth","content","sx","height","AppLogo","src","appLogoUrl","href","home","mb","Stack","direction","alignItems","spacing","AppHeaderNav","onNavItemClick","display","xs","md","navItem","gap","justifyContent","actions","MobileMenu","createAppHeader","params","_AppHeader","displayName"],"mappings":"0lBAyBaA,IAAAA,aAEX,SAAAA,EAAYC,GAAsB,IAAAC,EAEiB,OAFjBC,OAAAH,IAChCE,EAAAE,EAAAJ,KAAAA,GAAMC,KACDI,QAAUC,EAAoBL,EAAMM,SAAQL,CACnD,CAAC,OAAAM,EAAAR,EAL4BS,GAK5BC,EAAAV,EAAA,CAAA,CAAAW,IAAA,SAAAC,MAED,WAAM,IAAAC,EAAAC,EACJ,OACEC,EAACC,EAAgBC,EAAAA,KAAqB,QAArBJ,EAAKK,KAAKjB,MAAMkB,aAAXN,IAAgBA,OAAhBA,EAAAA,EAAkBO,YAAU,GAAA,CAAAC,SAAA,CAKhDC,EAACC,EAAW,CAAA,GACZD,EAACE,GAAaC,UAAWC,EAAiBC,cACxCL,EAAK,MAAA,CAAAG,UAAWC,EAAiBE,UAC/BP,SAAAN,EAACc,EAAU,CAAAC,UAAU,EAAOL,UAAWC,EAAiBK,QAASC,GAAI,CAAEC,OAAQ,QAAQZ,SAAA,CAErFC,EAACY,EAAO,CAACC,IAAKC,EAAYC,KAAMnB,KAAKjB,MAAMM,QAAQ+B,KAAMN,GAAI,CAAEO,GAAI,WACnExB,EAACyB,EAAM,CAAAC,UAAU,MAAMC,WAAW,SAASC,QAAS,EAACtB,SAAA,CACnDC,EAACsB,EAAY,CACXC,eAAgB3B,KAAKjB,MAAM4C,eAC3BxC,QAASa,KAAKb,QACd2B,GAAI,CAAEc,QAAS,CAAEC,GAAI,OAAQC,GAAI,SACjC7B,MAAuBL,QAAlBA,EAAEI,KAAKjB,MAAMkB,aAAXL,IAAgBA,OAAhBA,EAAAA,EAAkBmC,UAE3BlC,EAACyB,EAAM,CAAAC,UAAU,MAAMS,IAAK,EAAGlB,GAAI,CAAEmB,eAAgB,WAAYT,WAAY,oBAC1ExB,KAAKjB,MAAMmD,QAGZ9B,EAAC+B,GAAW9C,QAASW,KAAKjB,MAAMM,0BAQhD,IAAC,IAIU+C,EAAkB,SAACC,GAC9B,IAAMC,EAA2C,SAACvD,GAChD,OAAOqB,EAACtB,EAASiB,EAAAA,CAAAA,EAAAA,EAAAA,EAAAA,EAAUsC,CAAAA,EAAAA,GAAWtD,GAAK,CAAA,EAAA,CAAEkB,MAAKF,EAAAA,EAAA,CAAA,EAAOsC,EAAOpC,OAAUlB,EAAMkB,UACjF,EAED,OADAqC,EAAWC,YAAc,YAClBD,CACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as e,createClass as t,objectSpread2 as n,classCallCheck as r,callSuper as a,defineProperty as o}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as
|
|
1
|
+
import{inherits as e,createClass as t,objectSpread2 as n,classCallCheck as r,callSuper as a,defineProperty as o,objectWithoutProperties as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as s,jsx as i}from"react/jsx-runtime";import{Component as c}from"react";import u from"@mui/icons-material/ExpandMore";import{toArray as m}from"./helpers.js";import{ButtonAnimation as p}from"./animated-tabs.units.js";import{NavStyled as v,appHeaderClasses as d}from"./app-header.styled.js";import h from"./sub-menu.js";var f=["onClick"],I=function(){function I(e){var t;return r(this,I),t=a(this,I,[e]),o(t,"getButtonNavProps",function(e){var r,a,o=t.props.slots||{},s=o.buttonNavProps,i=o.buttonNavPropsGetter,c=i?i(e):s,u=null!=c?c:{},m=u.onClick,p=l(u,f),v=n({},e.options);e.navLink&&!p.component&&(v.component="a",v.href=null!==(r=null===(a=e.navLink)||void 0===a?void 0:a.href)&&void 0!==r?r:"/");return n(n(n({},v),p),{},{onClick:function(n){t.onClickNavItemHandler(n,e),null==m||m(n)}})}),o(t,"renderItemIcon",function(e){return 0===m(e.menu).length?null:i(u,{className:d.navItemIcon})}),o(t,"getItemClasses",function(e){var n=[d.navItem];return t.state.navSelected&&t.state.navSelected.title===e.title&&n.push(d.navItemSelected),n.join(" ")}),o(t,"onClickNavItemHandler",function(e,n){if(n.menu)return e.preventDefault(),void t.setState({anchorEl:e.currentTarget,navSelected:n});n.navLink&&t.props.onNavItemClick&&t.props.onNavItemClick(e,n.navLink)}),o(t,"onCloseMenuHandler",function(){t.setState({anchorEl:null,navSelected:null})}),t.state={anchorEl:null,navSelected:null},t}return e(I,c),t(I,[{key:"render",value:function(){var e=this;return s(v,{sx:this.props.sx,children:[i("ul",{className:d.navItems,children:this.props.configs.map(function(t,r){return i("li",{className:e.getItemClasses(t),children:i(p,n(n({forceTheme:"dark",endIcon:e.renderItemIcon(t)},e.getButtonNavProps(t)),{},{children:t.title}))},r)})}),i(h,{anchorEl:this.state.anchorEl,onClose:this.onCloseMenuHandler,navSelected:this.state.navSelected,onNavItemClick:this.props.onNavItemClick})]})}}])}();export{I as default};
|
|
2
2
|
//# sourceMappingURL=app-header.nav.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-header.nav.js","sources":["../../src/layout-global/app-header.nav.tsx"],"sourcesContent":["import { Component } from 'react'\r\nimport type { SxProps, Theme } from '@mui/material'\r\nimport type { MouseEvent as RMouseEvent, ReactNode } from 'react'\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore'\r\nimport { toArray } from './helpers'\r\nimport { ButtonAnimation, IButtonAnimationProps } from './animated-tabs.units'\r\nimport { appHeaderClasses, NavStyled } from './app-header.styled'\r\nimport type { IAppNav, NavItemClickFunction } from './types'\r\nimport SubMenu from './sub-menu'\r\n\r\nexport interface IAppHeaderNavSlots {\r\n buttonNavProps?: IButtonAnimationProps\r\n buttonNavPropsGetter?: (item: IAppNav) => Partial<IButtonAnimationProps>\r\n}\r\n\r\nexport interface IHeaderNavProps {\r\n configs: IAppNav[]\r\n sx?: SxProps<Theme>\r\n onNavItemClick?: NavItemClickFunction\r\n slots?: IAppHeaderNavSlots\r\n}\r\n\r\ninterface IHeaderNavState {\r\n anchorEl: HTMLElement | null\r\n navSelected: IAppNav | null\r\n}\r\n\r\nclass AppHeaderNav extends Component<IHeaderNavProps, IHeaderNavState> {\r\n constructor(props: IHeaderNavProps) {\r\n super(props)\r\n this.state = { anchorEl: null, navSelected: null }\r\n }\r\n\r\n render() {\r\n return (\r\n <NavStyled sx={this.props.sx}>\r\n <ul className={appHeaderClasses.navItems}>\r\n {this.props.configs.map((item, index) => (\r\n <li key={index} className={this.getItemClasses(item)}>\r\n <ButtonAnimation
|
|
1
|
+
{"version":3,"file":"app-header.nav.js","sources":["../../src/layout-global/app-header.nav.tsx"],"sourcesContent":["import { Component } from 'react'\r\nimport type { SxProps, Theme } from '@mui/material'\r\nimport type { MouseEvent as RMouseEvent, ReactNode } from 'react'\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore'\r\nimport { toArray } from './helpers'\r\nimport { ButtonAnimation, IButtonAnimationProps } from './animated-tabs.units'\r\nimport { appHeaderClasses, NavStyled } from './app-header.styled'\r\nimport type { IAppNav, NavItemClickFunction } from './types'\r\nimport SubMenu from './sub-menu'\r\n\r\nexport interface IAppHeaderNavSlots {\r\n buttonNavProps?: IButtonAnimationProps\r\n buttonNavPropsGetter?: (item: IAppNav) => Partial<IButtonAnimationProps>\r\n}\r\n\r\nexport interface IHeaderNavProps {\r\n configs: IAppNav[]\r\n sx?: SxProps<Theme>\r\n onNavItemClick?: NavItemClickFunction\r\n slots?: IAppHeaderNavSlots\r\n}\r\n\r\ninterface IHeaderNavState {\r\n anchorEl: HTMLElement | null\r\n navSelected: IAppNav | null\r\n}\r\n\r\nclass AppHeaderNav extends Component<IHeaderNavProps, IHeaderNavState> {\r\n constructor(props: IHeaderNavProps) {\r\n super(props)\r\n this.state = { anchorEl: null, navSelected: null }\r\n }\r\n\r\n render() {\r\n return (\r\n <NavStyled sx={this.props.sx}>\r\n <ul className={appHeaderClasses.navItems}>\r\n {this.props.configs.map((item, index) => (\r\n <li key={index} className={this.getItemClasses(item)}>\r\n <ButtonAnimation forceTheme='dark' endIcon={this.renderItemIcon(item)} {...this.getButtonNavProps(item)}>\r\n {item.title}\r\n </ButtonAnimation>\r\n </li>\r\n ))}\r\n </ul>\r\n <SubMenu\r\n anchorEl={this.state.anchorEl}\r\n onClose={this.onCloseMenuHandler}\r\n navSelected={this.state.navSelected}\r\n onNavItemClick={this.props.onNavItemClick}\r\n />\r\n </NavStyled>\r\n )\r\n }\r\n\r\n getButtonNavProps = (item: IAppNav): Partial<IButtonAnimationProps> => {\r\n const { buttonNavProps, buttonNavPropsGetter } = this.props.slots || {}\r\n const dynamic = buttonNavPropsGetter ? buttonNavPropsGetter(item) : buttonNavProps\r\n const { onClick: outsideOnClick, ...outsideProps } = dynamic ?? {}\r\n\r\n // Base props từ item\r\n const base: Partial<IButtonAnimationProps> = {\r\n ...item.options\r\n }\r\n\r\n // Thêm link nếu item có navLink và outside chưa tự set\r\n if (item.navLink && !(outsideProps as any).component) {\r\n base.component = 'a'\r\n ;(base as any).href = item.navLink?.href ?? '/'\r\n }\r\n\r\n return {\r\n ...base,\r\n ...outsideProps,\r\n onClick: (e: React.MouseEvent<any>) => {\r\n this.onClickNavItemHandler(e, item)\r\n outsideOnClick?.(e)\r\n }\r\n }\r\n }\r\n\r\n renderItemIcon = (nav: IAppNav): ReactNode => {\r\n const menu = toArray(nav.menu)\r\n if (menu.length === 0) return null\r\n return <ExpandMoreIcon className={appHeaderClasses.navItemIcon} />\r\n }\r\n\r\n getItemClasses = (nav: IAppNav) => {\r\n const classes = [appHeaderClasses.navItem]\r\n if (this.state.navSelected && this.state.navSelected.title === nav.title) {\r\n classes.push(appHeaderClasses.navItemSelected)\r\n }\r\n return classes.join(' ')\r\n }\r\n\r\n onClickNavItemHandler = (e: RMouseEvent<HTMLAnchorElement, MouseEvent>, nav: IAppNav) => {\r\n if (nav.menu) {\r\n e.preventDefault()\r\n this.setState({ anchorEl: e.currentTarget, navSelected: nav })\r\n return\r\n }\r\n if (nav.navLink && this.props.onNavItemClick) {\r\n // If there's a navLink and an onNavItemClick handler, call it\r\n this.props.onNavItemClick(e, nav.navLink)\r\n }\r\n }\r\n\r\n onCloseMenuHandler = () => {\r\n this.setState({ anchorEl: null, navSelected: null })\r\n }\r\n}\r\nexport default AppHeaderNav\r\n"],"names":["AppHeaderNav","props","_this","_classCallCheck","_callSuper","_defineProperty","item","_item$navLink$href","_item$navLink","_ref","slots","buttonNavProps","buttonNavPropsGetter","dynamic","_ref2","outsideOnClick","onClick","outsideProps","_objectWithoutProperties","_excluded","base","_objectSpread","options","navLink","component","href","e","onClickNavItemHandler","nav","toArray","menu","length","_jsx","ExpandMoreIcon","className","appHeaderClasses","navItemIcon","classes","navItem","state","navSelected","title","push","navItemSelected","join","preventDefault","setState","anchorEl","currentTarget","onNavItemClick","_inherits","Component","_createClass","key","value","_this2","this","_jsxs","NavStyled","sx","children","navItems","configs","map","index","getItemClasses","ButtonAnimation","forceTheme","endIcon","renderItemIcon","getButtonNavProps","SubMenu","onClose","onCloseMenuHandler"],"mappings":"whBA2BMA,aACJ,SAAAA,EAAYC,GAAsB,IAAAC,EAEkB,OAFlBC,OAAAH,GAChCE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EA0BM,oBAAA,SAACI,GACnB,IAUsDC,EAAAC,EAVtDC,EAAiDP,EAAKD,MAAMS,OAAS,CAAE,EAA/DC,EAAcF,EAAdE,eAAgBC,EAAoBH,EAApBG,qBAClBC,EAAUD,EAAuBA,EAAqBN,GAAQK,EACpEG,EAAqDD,QAAAA,EAAW,CAAE,EAAjDE,EAAcD,EAAvBE,QAA4BC,EAAYC,EAAAJ,EAAAK,GAG1CC,EAAIC,KACLf,EAAKgB,SAINhB,EAAKiB,UAAaN,EAAqBO,YACzCJ,EAAKI,UAAY,IACfJ,EAAaK,aAAIlB,UAAAC,EAAGF,EAAKiB,eAAO,IAAAf,OAAA,EAAZA,EAAciB,YAAI,IAAAlB,EAAAA,EAAI,KAG9C,OAAAc,EAAAA,EAAAA,EACKD,CAAAA,EAAAA,GACAH,GAAY,GAAA,CACfD,QAAS,SAACU,GACRxB,EAAKyB,sBAAsBD,EAAGpB,GAC9BS,SAAAA,EAAiBW,EACnB,MAEHrB,EAAAH,EAEgB,iBAAA,SAAC0B,GAEhB,OAAoB,IADPC,EAAQD,EAAIE,MAChBC,OAAqB,KACvBC,EAACC,EAAe,CAAAC,UAAWC,EAAiBC,gBACpD/B,EAAAH,EAEgB,iBAAA,SAAC0B,GAChB,IAAMS,EAAU,CAACF,EAAiBG,SAIlC,OAHIpC,EAAKqC,MAAMC,aAAetC,EAAKqC,MAAMC,YAAYC,QAAUb,EAAIa,OACjEJ,EAAQK,KAAKP,EAAiBQ,iBAEzBN,EAAQO,KAAK,OACrBvC,EAAAH,EAAA,wBAEuB,SAACwB,EAA+CE,GACtE,GAAIA,EAAIE,KAGN,OAFAJ,EAAEmB,sBACF3C,EAAK4C,SAAS,CAAEC,SAAUrB,EAAEsB,cAAeR,YAAaZ,IAGtDA,EAAIL,SAAWrB,EAAKD,MAAMgD,gBAE5B/C,EAAKD,MAAMgD,eAAevB,EAAGE,EAAIL,WAEpClB,EAAAH,EAAA,qBAEoB,WACnBA,EAAK4C,SAAS,CAAEC,SAAU,KAAMP,YAAa,SA9E7CtC,EAAKqC,MAAQ,CAAEQ,SAAU,KAAMP,YAAa,MAAMtC,CACpD,CAAC,OAAAgD,EAAAlD,EAJwBmD,GAIxBC,EAAApD,EAAA,CAAA,CAAAqD,IAAA,SAAAC,MAED,WAAM,IAAAC,EAAAC,KACJ,OACEC,EAACC,EAAU,CAAAC,GAAIH,KAAKvD,MAAM0D,GAAEC,SAAA,CAC1B5B,QAAIE,UAAWC,EAAiB0B,SAAQD,SACrCJ,KAAKvD,MAAM6D,QAAQC,IAAI,SAACzD,EAAM0D,GAAK,OAClChC,EAAA,KAAA,CAAgBE,UAAWqB,EAAKU,eAAe3D,GAAKsD,SAClD5B,EAACkC,EAAe7C,EAAAA,EAAA,CAAC8C,WAAW,OAAOC,QAASb,EAAKc,eAAe/D,IAAWiD,EAAKe,kBAAkBhE,IAAK,CAAA,EAAA,CACpGsD,SAAAtD,EAAKmC,UAFDuB,EAKV,KAEHhC,EAACuC,EAAO,CACNxB,SAAUS,KAAKjB,MAAMQ,SACrByB,QAAShB,KAAKiB,mBACdjC,YAAagB,KAAKjB,MAAMC,YACxBS,eAAgBO,KAAKvD,MAAMgD,mBAInC,IAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{objectSpread2 as e,defineProperty as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n}from"react/jsx-runtime";import{styled as a,Box as o}from"@mui/material";var r={root:"AppHeader-root",rootFixed:"AppHeader-rootFixed",content:"AppHeader-content",navItem:"AppHeader-navItem",navItems:"AppHeader-navItems",navItemIcon:"AppHeader-navItemIcon",navItemSelected:"AppHeader-navItemSelected",subMenu:"AppHeader-subMenu",subMenuItem:"AppHeader-subMenuItem",subMenuTitle:"AppHeader-subMenuTitle",subNavItem:"AppHeader-subNavItem",subNavItemIcon:"AppHeader-subNavItemIcon",subNavItemText:"AppHeader-subNavItemContent"},i=function(e,t){return"".concat((null==t?void 0:t.prefix)||"",".").concat(r[e]).concat((null==t?void 0:t.suffix)||"")},p=a(function(t){return n(o,e({component:"header"},t))})(function(e){var n=e.theme;return t(t(t({},i("rootFixed",{prefix:"& > "}),{zIndex:1110,height:"var(--height-header, 114px)",backgroundColor:"var(--color-header, #1b1b1b)",color:n.palette.common.white,position:"fixed",left:0,top:0,width:"100vw"}),i("content"),{display:"flex",alignItems:"center",justifyContent:"space-between",height:"100%",maxWidth:"var(--max-width, 1688px)"}),"&::before",{content:'""',display:"block",height:"var(--height-header, 114px)",width:"100%"})});p.displayName="HeaderStyled";var
|
|
1
|
+
import{objectSpread2 as e,defineProperty as t}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n}from"react/jsx-runtime";import{styled as a,Box as o}from"@mui/material";var r={root:"AppHeader-root",rootFixed:"AppHeader-rootFixed",content:"AppHeader-content",navItem:"AppHeader-navItem",navItems:"AppHeader-navItems",navItemIcon:"AppHeader-navItemIcon",navItemSelected:"AppHeader-navItemSelected",subMenu:"AppHeader-subMenu",subMenuItem:"AppHeader-subMenuItem",subMenuTitle:"AppHeader-subMenuTitle",subNavItem:"AppHeader-subNavItem",subNavItemIcon:"AppHeader-subNavItemIcon",subNavItemText:"AppHeader-subNavItemContent"},i=function(e,t){return"".concat((null==t?void 0:t.prefix)||"",".").concat(r[e]).concat((null==t?void 0:t.suffix)||"")},p=a(function(t){return n(o,e({component:"header"},t))})(function(e){var n=e.theme;return t(t(t({"*":{margin:0,padding:0,boxSizing:"border-box"}},i("rootFixed",{prefix:"& > "}),{zIndex:1110,height:"var(--height-header, 114px)",backgroundColor:"var(--color-header, #1b1b1b)",color:n.palette.common.white,position:"fixed",left:0,top:0,width:"100vw"}),i("content"),{display:"flex",alignItems:"center",justifyContent:"space-between",height:"100%",maxWidth:"var(--max-width, 1688px)"}),"&::before",{content:'""',display:"block",height:"var(--height-header, 114px)",width:"100%"})});p.displayName="HeaderStyled";var d=a(function(t){return n(o,e({component:"nav"},t))})(function(e){var n=e.theme;return t(t(t(t({display:"flex",alignItems:"center"},i("navItems"),{listStyle:"none",display:"flex",gap:n.spacing(.5),margin:0,padding:0}),i("navItemIcon"),{transition:"transform 0.3s ease"}),i("navItemSelected"),t(t({},i("navItemIcon"),{transform:"rotate(180deg) scale(1.2)"}),"& > button.MuiButtonBase-root",{backgroundColor:"rgba(249, 169, 37, 0.1) !important"})),i("navItem"),{textDecoration:"none","& > button.MuiButtonBase-root .MuiButton-icon":{marginLeft:0},"&:hover":t(t({},i("navItemIcon"),{transform:"rotate(0deg) scale(1.2)"}),i("navItemSelected"),t({},i("navItemIcon"),{transform:"rotate(180deg) scale(1.2)"}))})});d.displayName="NavStyled";export{p as HeaderStyled,d as NavStyled,r as appHeaderClasses,i as getAppHeaderClasses};
|
|
2
2
|
//# sourceMappingURL=app-header.styled.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-header.styled.js","sources":["../../src/layout-global/app-header.styled.tsx"],"sourcesContent":["import { Box, BoxProps, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\n\r\nexport const appHeaderClasses = {\r\n root: 'AppHeader-root',\r\n rootFixed: 'AppHeader-rootFixed',\r\n content: 'AppHeader-content',\r\n navItem: 'AppHeader-navItem',\r\n navItems: 'AppHeader-navItems',\r\n navItemIcon: 'AppHeader-navItemIcon',\r\n navItemSelected: 'AppHeader-navItemSelected',\r\n subMenu: 'AppHeader-subMenu',\r\n subMenuItem: 'AppHeader-subMenuItem',\r\n subMenuTitle: 'AppHeader-subMenuTitle',\r\n subNavItem: 'AppHeader-subNavItem',\r\n subNavItemIcon: 'AppHeader-subNavItemIcon',\r\n subNavItemText: 'AppHeader-subNavItemContent'\r\n}\r\n\r\
|
|
1
|
+
{"version":3,"file":"app-header.styled.js","sources":["../../src/layout-global/app-header.styled.tsx"],"sourcesContent":["import { Box, BoxProps, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\n\r\nexport const appHeaderClasses = {\r\n root: 'AppHeader-root',\r\n rootFixed: 'AppHeader-rootFixed',\r\n content: 'AppHeader-content',\r\n navItem: 'AppHeader-navItem',\r\n navItems: 'AppHeader-navItems',\r\n navItemIcon: 'AppHeader-navItemIcon',\r\n navItemSelected: 'AppHeader-navItemSelected',\r\n subMenu: 'AppHeader-subMenu',\r\n subMenuItem: 'AppHeader-subMenuItem',\r\n subMenuTitle: 'AppHeader-subMenuTitle',\r\n subNavItem: 'AppHeader-subNavItem',\r\n subNavItemIcon: 'AppHeader-subNavItemIcon',\r\n subNavItemText: 'AppHeader-subNavItemContent'\r\n}\r\n\r\nexport const getAppHeaderClasses = (key: keyof typeof appHeaderClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${appHeaderClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nexport const HeaderStyled: ComponentType<BoxProps> = styled((p: BoxProps) => <Box component='header' {...p} />)(({ theme }) => ({\r\n '*': {\r\n margin: 0,\r\n padding: 0,\r\n boxSizing: 'border-box'\r\n },\r\n [getAppHeaderClasses('rootFixed', { prefix: '& > ' })]: {\r\n zIndex: 1110, // theme.zIndex.appBar,\r\n height: 'var(--height-header, 114px)',\r\n backgroundColor: 'var(--color-header, #1b1b1b)',\r\n color: theme.palette.common.white,\r\n position: 'fixed',\r\n left: 0,\r\n top: 0,\r\n width: '100vw'\r\n },\r\n [getAppHeaderClasses('content')]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n height: '100%',\r\n maxWidth: 'var(--max-width, 1688px)'\r\n },\r\n '&::before': {\r\n content: '\"\"',\r\n display: 'block',\r\n height: 'var(--height-header, 114px)',\r\n width: '100%'\r\n }\r\n}))\r\nexport type HeaderStyledType = typeof HeaderStyled\r\nHeaderStyled.displayName = 'HeaderStyled'\r\n\r\nexport const NavStyled: ComponentType<BoxProps> = styled((p: BoxProps) => <Box component='nav' {...p} />)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n [getAppHeaderClasses('navItems')]: {\r\n listStyle: 'none',\r\n display: 'flex',\r\n gap: theme.spacing(0.5),\r\n margin: 0,\r\n padding: 0\r\n },\r\n [getAppHeaderClasses('navItemIcon')]: {\r\n transition: 'transform 0.3s ease'\r\n },\r\n [getAppHeaderClasses('navItemSelected')]: {\r\n [getAppHeaderClasses('navItemIcon')]: {\r\n transform: 'rotate(180deg) scale(1.2)'\r\n },\r\n '& > button.MuiButtonBase-root': {\r\n backgroundColor: 'rgba(249, 169, 37, 0.1) !important'\r\n }\r\n },\r\n [getAppHeaderClasses('navItem')]: {\r\n textDecoration: 'none',\r\n '& > button.MuiButtonBase-root .MuiButton-icon': {\r\n marginLeft: 0\r\n },\r\n '&:hover': {\r\n [getAppHeaderClasses('navItemIcon')]: {\r\n transform: 'rotate(0deg) scale(1.2)'\r\n },\r\n [getAppHeaderClasses('navItemSelected')]: {\r\n [getAppHeaderClasses('navItemIcon')]: {\r\n transform: 'rotate(180deg) scale(1.2)'\r\n }\r\n }\r\n }\r\n }\r\n}))\r\nNavStyled.displayName = 'NavStyled'\r\n"],"names":["appHeaderClasses","root","rootFixed","content","navItem","navItems","navItemIcon","navItemSelected","subMenu","subMenuItem","subMenuTitle","subNavItem","subNavItemIcon","subNavItemText","getAppHeaderClasses","key","options","concat","prefix","suffix","HeaderStyled","styled","p","_jsx","Box","_objectSpread","component","_ref","theme","_defineProperty","margin","padding","boxSizing","zIndex","height","backgroundColor","color","palette","common","white","position","left","top","width","display","alignItems","justifyContent","maxWidth","displayName","NavStyled","_ref3","listStyle","gap","spacing","transition","transform","textDecoration","marginLeft"],"mappings":"qLAGO,IAAMA,EAAmB,CAC9BC,KAAM,iBACNC,UAAW,sBACXC,QAAS,oBACTC,QAAS,oBACTC,SAAU,qBACVC,YAAa,wBACbC,gBAAiB,4BACjBC,QAAS,oBACTC,YAAa,wBACbC,aAAc,yBACdC,WAAY,uBACZC,eAAgB,2BAChBC,eAAgB,+BAGLC,EAAsB,SAACC,EAAoCC,GACtE,MAAA,GAAAC,QAAUD,aAAAA,EAAAA,EAASE,SAAU,QAAED,OAAIjB,EAAiBe,IAAIE,QAAGD,aAAAA,EAAAA,EAASG,SAAU,GAChF,EAEaC,EAAwCC,EAAO,SAACC,GAAW,OAAKC,EAACC,EAAGC,EAAA,CAACC,UAAU,UAAaJ,GAAK,EAAzDD,CAA2D,SAAAM,GAAA,IAAGC,EAAKD,EAALC,MAAK,OAAAC,EAAAA,EAAAA,EAAA,CACtH,IAAK,CACHC,OAAQ,EACRC,QAAS,EACTC,UAAW,eAEZlB,EAAoB,YAAa,CAAEI,OAAQ,SAAY,CACtDe,OAAQ,KACRC,OAAQ,8BACRC,gBAAiB,+BACjBC,MAAOR,EAAMS,QAAQC,OAAOC,MAC5BC,SAAU,QACVC,KAAM,EACNC,IAAK,EACLC,MAAO,UAER7B,EAAoB,WAAa,CAChC8B,QAAS,OACTC,WAAY,SACZC,eAAgB,gBAChBZ,OAAQ,OACRa,SAAU,6BAEZ,YAAa,CACX5C,QAAS,KACTyC,QAAS,QACTV,OAAQ,8BACRS,MAAO,QACR,GAGHvB,EAAa4B,YAAc,mBAEdC,EAAqC5B,EAAO,SAACC,GAAW,OAAKC,EAACC,EAAGC,EAAA,CAACC,UAAU,OAAUJ,GAAK,EAAtDD,CAAwD,SAAA6B,GAAA,IAAGtB,EAAKsB,EAALtB,MAAK,OAAAC,EAAAA,EAAAA,EAAAA,EAAA,CAChHe,QAAS,OACTC,WAAY,UACX/B,EAAoB,YAAc,CACjCqC,UAAW,OACXP,QAAS,OACTQ,IAAKxB,EAAMyB,QAAQ,IACnBvB,OAAQ,EACRC,QAAS,IAEVjB,EAAoB,eAAiB,CACpCwC,WAAY,wBAEbxC,EAAoB,mBAAkBe,EAAAA,EACpCf,CAAAA,EAAAA,EAAoB,eAAiB,CACpCyC,UAAW,8BAEb,gCAAiC,CAC/BpB,gBAAiB,wCAGpBrB,EAAoB,WAAa,CAChC0C,eAAgB,OAChB,gDAAiD,CAC/CC,WAAY,GAEd,UAAS5B,EAAAA,KACNf,EAAoB,eAAiB,CACpCyC,UAAW,4BAEZzC,EAAoB,mBAAkBe,EAAA,GACpCf,EAAoB,eAAiB,CACpCyC,UAAW,gCAIlB,GAEHN,EAAUD,YAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as t,jsx as e}from"react/jsx-runtime";import{ThemeProvider as n,CssBaseline as i,createTheme as o}from"@mui/material";var a=function(t){return Math.round(1e4*t)/1e4},r=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return o({palette:{mode:"light",primary:{main:"#1976d2",contrastText:"#fff"},secondary:{main:"#f48fb1"},background:{default:"#ffffff",paper:"#fff"},text:{primary:"#222",secondary:"#555"}},typography:{fontFamily:"var(".concat(t,"), Arial, sans-serif"),fontSize:a(16*n),fontWeightLight:300,fontWeightRegular:400,fontWeightMedium:500,fontWeightBold:700,h1:{fontSize:"".concat(a(6*n),"rem"),fontFamily:"var(".concat(e,"), Arial, sans-serif"),fontWeight:300,lineHeight:1.167},h2:{fontSize:"".concat(a(3.75*n),"rem"),fontFamily:"var(".concat(e,"), Arial, sans-serif"),fontWeight:300,lineHeight:1.2},h3:{fontSize:"".concat(a(3*n),"rem"),fontFamily:"var(".concat(e,"), Arial, sans-serif"),fontWeight:400,lineHeight:1.167},h4:{fontSize:"".concat(a(2.125*n),"rem"),fontFamily:"var(".concat(e,"), Arial, sans-serif"),fontWeight:400,lineHeight:1.235},h5:{fontSize:"".concat(a(1.5*n),"rem"),fontFamily:"var(".concat(e,"), Arial, sans-serif"),fontWeight:400,lineHeight:1.334},h6:{fontSize:"".concat(a(1.125*n),"rem"),fontFamily:"var(".concat(e,"), Arial, sans-serif"),fontWeight:500,lineHeight:1.6},subtitle1:{fontSize:"".concat(a(1*n),"rem"),fontWeight:400,lineHeight:1.75},subtitle2:{fontSize:"".concat(a(.875*n),"rem"),fontWeight:500,lineHeight:1.57},body1:{fontSize:"".concat(a(1*n),"rem"),fontWeight:400,lineHeight:1.5},body2:{fontSize:"".concat(a(.875*n),"rem"),fontWeight:400,lineHeight:1.43},button:{fontSize:"".concat(a(.875*n),"rem"),fontWeight:500,lineHeight:1.75,textTransform:"uppercase"},caption:{fontSize:"".concat(a(.75*n),"rem"),fontWeight:400,lineHeight:1.66},overline:{fontSize:"".concat(a(.75*n),"rem"),fontWeight:400,lineHeight:2.66,textTransform:"uppercase",letterSpacing:"0.08em"}}})},f=function(o){var a=o.children,f=o.primaryVar,c=void 0===f?"--font-primary":f,h=o.secondaryVar,l=void 0===h?"--font-secondary":h,m=o.fontScale,g=r(c,l,void 0===m?1:m);return t(n,{theme:g,children:[e(i,{}),a]})};export{f as AppThemeProvider,r as getLightTheme};
|
|
2
2
|
//# sourceMappingURL=app-theme-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-theme-provider.js","sources":["../../src/layout-global/app-theme-provider.tsx"],"sourcesContent":["import { ReactNode } from 'react'\r\nimport { createTheme, CssBaseline, ThemeProvider } from '@mui/material'\r\n\r\nexport const getLightTheme = (
|
|
1
|
+
{"version":3,"file":"app-theme-provider.js","sources":["../../src/layout-global/app-theme-provider.tsx"],"sourcesContent":["import { ReactNode } from 'react'\r\nimport { createTheme, CssBaseline, ThemeProvider } from '@mui/material'\r\n\r\n// Function to round a number to 4 decimal places\r\nconst roundToFour = (num: number): number => {\r\n return Math.round(num * 10000) / 10000\r\n}\r\n\r\nexport const getLightTheme = (primary: string, secondary: string, fontScale: number = 1) => {\r\n return createTheme({\r\n palette: {\r\n mode: 'light',\r\n primary: { main: '#1976d2', contrastText: '#fff' },\r\n secondary: { main: '#f48fb1' },\r\n background: { default: '#ffffff', paper: '#fff' },\r\n text: { primary: '#222', secondary: '#555' }\r\n },\r\n typography: {\r\n fontFamily: `var(${primary}), Arial, sans-serif`,\r\n fontSize: roundToFour(16 * fontScale),\r\n fontWeightLight: 300,\r\n fontWeightRegular: 400,\r\n fontWeightMedium: 500,\r\n fontWeightBold: 700,\r\n h1: { fontSize: `${roundToFour(6 * fontScale)}rem`, fontFamily: `var(${secondary}), Arial, sans-serif`, fontWeight: 300, lineHeight: 1.167 },\r\n h2: { fontSize: `${roundToFour(3.75 * fontScale)}rem`, fontFamily: `var(${secondary}), Arial, sans-serif`, fontWeight: 300, lineHeight: 1.2 },\r\n h3: { fontSize: `${roundToFour(3 * fontScale)}rem`, fontFamily: `var(${secondary}), Arial, sans-serif`, fontWeight: 400, lineHeight: 1.167 },\r\n h4: {\r\n fontSize: `${roundToFour(2.125 * fontScale)}rem`,\r\n fontFamily: `var(${secondary}), Arial, sans-serif`,\r\n fontWeight: 400,\r\n lineHeight: 1.235\r\n },\r\n h5: { fontSize: `${roundToFour(1.5 * fontScale)}rem`, fontFamily: `var(${secondary}), Arial, sans-serif`, fontWeight: 400, lineHeight: 1.334 },\r\n h6: { fontSize: `${roundToFour(1.125 * fontScale)}rem`, fontFamily: `var(${secondary}), Arial, sans-serif`, fontWeight: 500, lineHeight: 1.6 },\r\n subtitle1: { fontSize: `${roundToFour(1 * fontScale)}rem`, fontWeight: 400, lineHeight: 1.75 },\r\n subtitle2: { fontSize: `${roundToFour(0.875 * fontScale)}rem`, fontWeight: 500, lineHeight: 1.57 },\r\n body1: { fontSize: `${roundToFour(1 * fontScale)}rem`, fontWeight: 400, lineHeight: 1.5 },\r\n body2: { fontSize: `${roundToFour(0.875 * fontScale)}rem`, fontWeight: 400, lineHeight: 1.43 },\r\n button: { fontSize: `${roundToFour(0.875 * fontScale)}rem`, fontWeight: 500, lineHeight: 1.75, textTransform: 'uppercase' },\r\n caption: { fontSize: `${roundToFour(0.75 * fontScale)}rem`, fontWeight: 400, lineHeight: 1.66 },\r\n overline: {\r\n fontSize: `${roundToFour(0.75 * fontScale)}rem`,\r\n fontWeight: 400,\r\n lineHeight: 2.66,\r\n textTransform: 'uppercase',\r\n letterSpacing: '0.08em'\r\n }\r\n }\r\n })\r\n}\r\n\r\nexport interface IAppThemeProviderProps {\r\n children: ReactNode\r\n primaryVar?: string\r\n secondaryVar?: string\r\n fontScale?: number\r\n}\r\n\r\nexport const AppThemeProvider = (props: IAppThemeProviderProps) => {\r\n const { children, primaryVar = '--font-primary', secondaryVar = '--font-secondary', fontScale = 1 } = props\r\n const theme = getLightTheme(primaryVar, secondaryVar, fontScale)\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <CssBaseline />\r\n {children}\r\n </ThemeProvider>\r\n )\r\n}\r\n"],"names":["roundToFour","num","Math","round","getLightTheme","primary","secondary","fontScale","arguments","length","undefined","createTheme","palette","mode","main","contrastText","background","default","paper","text","typography","fontFamily","concat","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","h1","fontWeight","lineHeight","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","button","textTransform","caption","overline","letterSpacing","AppThemeProvider","props","children","_props$primaryVar","primaryVar","_props$secondaryVar","secondaryVar","_props$fontScale","theme","_jsxs","ThemeProvider","_jsx","CssBaseline"],"mappings":"kIAIA,IAAMA,EAAc,SAACC,GACnB,OAAOC,KAAKC,MAAY,IAANF,GAAe,GACnC,EAEaG,EAAgB,SAACC,EAAiBC,GAA4C,IAAzBC,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAoB,EACpF,OAAOG,EAAY,CACjBC,QAAS,CACPC,KAAM,QACNR,QAAS,CAAES,KAAM,UAAWC,aAAc,QAC1CT,UAAW,CAAEQ,KAAM,WACnBE,WAAY,CAAEC,QAAS,UAAWC,MAAO,QACzCC,KAAM,CAAEd,QAAS,OAAQC,UAAW,SAEtCc,WAAY,CACVC,WAAUC,OAAAA,OAASjB,EAA6B,wBAChDkB,SAAUvB,EAAY,GAAKO,GAC3BiB,gBAAiB,IACjBC,kBAAmB,IACnBC,iBAAkB,IAClBC,eAAgB,IAChBC,GAAI,CAAEL,SAAQ,GAAAD,OAAKtB,EAAY,EAAIO,GAAe,OAAEc,WAAUC,OAAAA,OAAShB,EAA+B,wBAAEuB,WAAY,IAAKC,WAAY,OACrIC,GAAI,CAAER,SAAQ,GAAAD,OAAKtB,EAAY,KAAOO,GAAe,OAAEc,WAAUC,OAAAA,OAAShB,EAA+B,wBAAEuB,WAAY,IAAKC,WAAY,KACxIE,GAAI,CAAET,SAAQ,GAAAD,OAAKtB,EAAY,EAAIO,GAAe,OAAEc,WAAUC,OAAAA,OAAShB,EAA+B,wBAAEuB,WAAY,IAAKC,WAAY,OACrIG,GAAI,CACFV,SAAQ,GAAAD,OAAKtB,EAAY,MAAQO,GAAe,OAChDc,WAAUC,OAAAA,OAAShB,EAA+B,wBAClDuB,WAAY,IACZC,WAAY,OAEdI,GAAI,CAAEX,SAAQ,GAAAD,OAAKtB,EAAY,IAAMO,GAAe,OAAEc,WAAUC,OAAAA,OAAShB,EAA+B,wBAAEuB,WAAY,IAAKC,WAAY,OACvIK,GAAI,CAAEZ,SAAQ,GAAAD,OAAKtB,EAAY,MAAQO,GAAe,OAAEc,WAAUC,OAAAA,OAAShB,EAA+B,wBAAEuB,WAAY,IAAKC,WAAY,KACzIM,UAAW,CAAEb,SAAQ,GAAAD,OAAKtB,EAAY,EAAIO,GAAe,OAAEsB,WAAY,IAAKC,WAAY,MACxFO,UAAW,CAAEd,SAAQ,GAAAD,OAAKtB,EAAY,KAAQO,GAAe,OAAEsB,WAAY,IAAKC,WAAY,MAC5FQ,MAAO,CAAEf,SAAQ,GAAAD,OAAKtB,EAAY,EAAIO,GAAe,OAAEsB,WAAY,IAAKC,WAAY,KACpFS,MAAO,CAAEhB,SAAQ,GAAAD,OAAKtB,EAAY,KAAQO,GAAe,OAAEsB,WAAY,IAAKC,WAAY,MACxFU,OAAQ,CAAEjB,SAAQ,GAAAD,OAAKtB,EAAY,KAAQO,GAAe,OAAEsB,WAAY,IAAKC,WAAY,KAAMW,cAAe,aAC9GC,QAAS,CAAEnB,SAAQ,GAAAD,OAAKtB,EAAY,IAAOO,GAAe,OAAEsB,WAAY,IAAKC,WAAY,MACzFa,SAAU,CACRpB,SAAQ,GAAAD,OAAKtB,EAAY,IAAOO,GAAe,OAC/CsB,WAAY,IACZC,WAAY,KACZW,cAAe,YACfG,cAAe,YAIvB,EASaC,EAAmB,SAACC,GAC/B,IAAQC,EAA8FD,EAA9FC,SAAQC,EAAsFF,EAApFG,WAAAA,OAAa,IAAHD,EAAG,iBAAgBA,EAAAE,EAAuDJ,EAArDK,aAAAA,OAAe,IAAHD,EAAG,mBAAkBA,EAAAE,EAAoBN,EAAlBvC,UAC9E8C,EAAQjD,EAAc6C,EAAYE,OADwD,IAAHC,EAAG,EAACA,GAEjG,OACEE,EAACC,EAAa,CAACF,MAAOA,EACpBN,SAAA,CAAAS,EAACC,EAAc,CAAA,GACdV,IAGP"}
|