dinocollab-shared 1.1.27 → 1.1.28

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.
@@ -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,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};
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 f,Divider as v,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(f,{variant:"subtitle1",noWrap:!0,className:y.title,onClick:function(t){return t.stopPropagation()},children:["Hello, ",e]}),a(v,{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"),{display:"flex",alignItems:"center",gap:"8px",color:"currentColor",textDecoration:"none",padding:"6px 16px",flex:1}),"& .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
@@ -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 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
+ {"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 display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n color: 'currentColor',\r\n textDecoration: 'none',\r\n padding: '6px 16px',\r\n flex: 1\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","display","alignItems","gap","textDecoration","width","height","ml","mr","transition","transform","borderColor","content","position","top","right","zIndex"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dinocollab-shared",
3
- "version": "1.1.27",
3
+ "version": "1.1.28",
4
4
  "description": "DinoCollab shared utilities and components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",