From b7cd466d27de9554df5e4a37f946ffbe44324f98 Mon Sep 17 00:00:00 2001 From: Marvin Frachet Date: Fri, 6 Aug 2021 11:02:31 +0200 Subject: [PATCH] DS: moving the left menu to use the DS MainNav (#10689) --- packages/core/admin/admin/src/StrapiApp.js | 82 +++++---- .../src/assets/images/logo_strapi_menu.png | Bin 24050 -> 0 bytes .../admin/src/assets/images/strapi-img.png | Bin 0 -> 2530 bytes .../admin/src/components/GlobalStyle/index.js | 172 +----------------- .../admin/src/components/LeftMenu/Wrapper.js | 61 ------- .../LeftMenu/compos/Footer/Wrapper.js | 51 ------ .../LeftMenu/compos/Footer/index.js | 40 ---- .../LeftMenu/compos/Header/Wrapper.js | 48 ----- .../LeftMenu/compos/Header/index.js | 18 -- .../LeftMenu/compos/Link/LeftMenuIcon.js | 23 --- .../components/LeftMenu/compos/Link/Link.js | 40 ---- .../LeftMenu/compos/Link/LinkLabel.js | 10 - .../LeftMenu/compos/Link/NotificationCount.js | 32 ---- .../components/LeftMenu/compos/Link/index.js | 40 ---- .../components/LeftMenu/compos/Links/index.js | 31 ---- .../compos/LinksSection/LeftMenuListLink.js | 10 - .../LeftMenu/compos/LinksSection/index.js | 22 --- .../LeftMenu/compos/SectionTitle/index.js | 30 --- .../src/components/LeftMenu/compos/index.js | 5 - .../admin/src/components/LeftMenu/index.js | 122 ++++++++----- .../core/admin/admin/src/layouts/AppLayout.js | 30 +++ .../core/admin/admin/src/pages/Admin/index.js | 78 ++++---- .../admin/admin/src/pages/App/components.js | 15 -- .../core/admin/admin/src/pages/App/index.js | 29 ++- .../core/admin/admin/src/translations/en.json | 5 +- packages/core/admin/package.json | 2 + .../lib/src/hooks/usePersistentState/index.js | 17 ++ packages/core/helper-plugin/lib/src/index.js | 1 + yarn.lock | 18 ++ 29 files changed, 237 insertions(+), 795 deletions(-) delete mode 100644 packages/core/admin/admin/src/assets/images/logo_strapi_menu.png create mode 100644 packages/core/admin/admin/src/assets/images/strapi-img.png delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/Wrapper.js delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/compos/Footer/Wrapper.js delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/compos/Footer/index.js delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/compos/Header/Wrapper.js delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/compos/Header/index.js delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/compos/Link/LeftMenuIcon.js delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/compos/Link/Link.js delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/compos/Link/LinkLabel.js delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/compos/Link/NotificationCount.js delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/compos/Link/index.js delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/compos/Links/index.js delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/compos/LinksSection/LeftMenuListLink.js delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/compos/LinksSection/index.js delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/compos/SectionTitle/index.js delete mode 100644 packages/core/admin/admin/src/components/LeftMenu/compos/index.js create mode 100644 packages/core/admin/admin/src/layouts/AppLayout.js delete mode 100644 packages/core/admin/admin/src/pages/App/components.js create mode 100644 packages/core/helper-plugin/lib/src/hooks/usePersistentState/index.js diff --git a/packages/core/admin/admin/src/StrapiApp.js b/packages/core/admin/admin/src/StrapiApp.js index db0f07bc42..a21d0596d5 100644 --- a/packages/core/admin/admin/src/StrapiApp.js +++ b/packages/core/admin/admin/src/StrapiApp.js @@ -1,5 +1,7 @@ import React from 'react'; import { BrowserRouter } from 'react-router-dom'; +import { ThemeProvider } from '@strapi/parts/ThemeProvider'; +import { lightTheme } from '@strapi/parts/themes'; import merge from 'lodash/merge'; import pick from 'lodash/pick'; import isFunction from 'lodash/isFunction'; @@ -10,7 +12,7 @@ import configureStore from './core/store/configureStore'; import { Plugin } from './core/apis'; import App from './pages/App'; import AuthLogo from './assets/images/logo_strapi_auth.png'; -import MenuLogo from './assets/images/logo_strapi_menu.png'; +import MenuLogo from './assets/images/strapi-img.png'; import Providers from './components/Providers'; import Theme from './components/Theme'; import languageNativeNames from './translations/languageNativeNames'; @@ -423,44 +425,46 @@ class StrapiApp { } = this.library; return ( - - { - return this.runHookWaterfall(name, initialValue, async, store); - }} - runHookSeries={this.runHookSeries} - settings={this.settings} - showTutorials={this.configurations.tutorials} - showReleaseNotification={this.configurations.notifications.releases} - store={store} - > - <> - - - - - - - + + + { + return this.runHookWaterfall(name, initialValue, async, store); + }} + runHookSeries={this.runHookSeries} + settings={this.settings} + showTutorials={this.configurations.tutorials} + showReleaseNotification={this.configurations.notifications.releases} + store={store} + > + <> + + + + + + + + ); } } diff --git a/packages/core/admin/admin/src/assets/images/logo_strapi_menu.png b/packages/core/admin/admin/src/assets/images/logo_strapi_menu.png deleted file mode 100644 index a5331cd395fc800a3029f91127e859bfd46e7756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24050 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 NUk7)nRLlOt{{Vh;{w4qb diff --git a/packages/core/admin/admin/src/assets/images/strapi-img.png b/packages/core/admin/admin/src/assets/images/strapi-img.png new file mode 100644 index 0000000000000000000000000000000000000000..6fad73810469e8a9974f11e7757ddb172b49fe76 GIT binary patch literal 2530 zcmZ`*X*|>m8~w*H8oRNKeII+q&XDcS*sk47A*K z=LGUGu`vOFh78sd52kZ1;c4M$0{{_l03gQ$!11|7{sI7@2mn~e0|1f=00OrPIvfnn z1LhllnxlZT-&5T6B z$^=7tzmk6~katRO@a}xBMr6Z591+IA4APc;%j|)wskE>x&)hQ|my;>9>ihFycB{OD zY)us{{yn%{aViHz%d4uXF?!RGIzfaibk%O~0xw+q>g0D~$2VaD8@X0L&O5aj_#^lUd3lbtDB_M}ng%>r+jHVL6 zt}!!=DS;gPQn1(@WrkU_`1W2{`{wGgN0_-d@kc2671E(o;85Wix5b=qrw|l?8rRpH zG9GS-?U}}W(z~}uXxn1G-K8o%PvUqhPrWSh0;K(>c`GQ5!N=q-=hiogBk8V1}LYadPDV1 z3Yn#v@3lct#)T~%$3MGW2BL+3FfM3mX*IN;@1PGZm>MfFt}k!$gofnP{sA7acX_^UR0?D zNi(KXM=OoK4?KB;Mwd5D-dEv^TZ`J*C6;c|jqrJ%`Ia*@h0Nwu;xUJbSJ2oC)n>(s zWXo{8jUv;S^G4gFOlGBIOxJ~R7!$XVq=h@J%vBLoEpUPgzD%uzvET~Ee76Wa0y|57 z#7Z!}lzerg>JgV6g5J!IzbX?esf>jU>YMvnUoq(;E62F`8wWbR6w(+ETw!n#hB0aimP_$KoY7Vduz0z@Da4QeKOaiTxxAorL=qrZ<)hS;O8E? zDRNo-Gl8^>{gaq83T`qRLD!Bx`?RQ=9MUYV6vHmAJacWH;6JOT74xaL2J)+jms{hF zLg|9}-;u56In#iL0V{ti*@jr!38|Q!gMIEYqskg?YaF5xVOYKe#cb4NSez@^Q7N9z zKwVrM`)6)w2u7WRSCM8ub4cC?r2AbH9rUAE;aSz8u;wxtIUUmk!;NkeNO1~UouK~c zXA?+9-XU+1_O#Iea&YG3+g=(Gy|wfvQ^QtrpZBE{{3mSQ1sR54(dbK@BX^7TPaFk& z{rBy4!Xjt<2Ek`8#_LG%Xe{lf7#Huu8y=_nY0du}TIl*r$}{9D4CZc$TxV15kinVl zbjeb|Ax=H7W~EKJhphESW2p7Thhw&U2#@af{K`^&jfWa@;fCUDiUwX+Zm1z}tiEd_ zowUZ1^_0Qbj%>0dWaR;xNwvPUnFL@bZjpG{(DoAxchv9~`xtfmnN*nBD8-;~D~)I0 zn0J5@|Ax%xV77dTcY(Ha)6M=3$0T#QX;r(30%Es-D;_#ttR>24eJ^M0`vm{>773>i z==e#CfgB#GYgE0ixSi(f5g)s|GrTT-2U?Ss9-21zm;Kr1hG+e?lVs^sIt91cXIMddVdh<#y`?~DupQT2m2c#XUthC36u`qBYT>3drpB?^Vj$(B7+G}UzOC#ow zJ3oJn+GE2PV!>awwoV(xIwKDV_eAy0u3gLDJ2;4Ra?09~VEMEmTYd7-kI<$ z?9)jhy*56n|N2E64^JK|_1ES1Z_$Ce9fzGA&Yy-7_Ur^|_Z#>3lfUk+yzcGpHjF-) z3k&~Jl30g*J2BB;=iWKp=*>!@P;l_9Wd4*RDzeljRA1-{Jf;mPxaJJq&$}8?SvQVfE?{iIp&PJ&`i9nLQHoqzZ{O#iAW}&*`lE?S~gj8Jtx( z3*N!(uoHrw1DE-`{RwwF>>8^gZg zYzuTHYph@iUh0Bs0}@iCLb)2N68o1h%4)doDi?QcbG%1VFbDRri};)G^8Bg15T>a4 zLA}J)@Cw^HWM^PnZqQSEc|5J(_35ZyK`=^+d*2|#S=lTyveWSFa_s-HeWWDo$M>YiQ9OC5>;*IpY?R`#wIznAd1)-&)u7g47AT>3Rn(8VDO(X(= hPcn`8pF$AP%kO6R|1WS)91olq086wjs?HQ2_g_9ilnVd= literal 0 HcmV?d00001 diff --git a/packages/core/admin/admin/src/components/GlobalStyle/index.js b/packages/core/admin/admin/src/components/GlobalStyle/index.js index 6a588ba689..10d98e0bf3 100644 --- a/packages/core/admin/admin/src/components/GlobalStyle/index.js +++ b/packages/core/admin/admin/src/components/GlobalStyle/index.js @@ -6,176 +6,6 @@ import '@fortawesome/fontawesome-free/css/all.css'; import '@fortawesome/fontawesome-free/js/all.min.js'; import { createGlobalStyle } from 'styled-components'; -const GlobalStyle = createGlobalStyle` - html { - font-size: 62.5%; - } - - body { - font-family: 'Lato'; - font-size: 1.4rem; - line-height: 1.5; - color: #292b2c; - } - - * { - -webkit-font-smoothing: antialiased; - box-sizing: border-box; - font-family: 'Lato'; - } - - h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { - line-height: 1.1; - } - - .btn { - font-size: 1.4rem; - padding: 0; - } - - .cursor-pointer { - cursor: pointer; - } - - /* - * Override - */ - - .modal { - background: transparent; - .modal-dialog { - max-width: 74.5rem; - margin: 16rem auto 3rem calc(50% - #{$left - menu - width}); - position: relative; - z-index: 999; - } - } - - .modal-backdrop.show { - opacity: 0.15; - } - - - .modal-content { - border-radius: .2rem; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); - border: none; - - } - - .modal-header { - button { - &.close { - margin: 0; - padding: 2rem; - } - } - } - - .modal-body { - .video-react { - background: transparent; - } - } - form .row { - text-align: left; - } - - .form-check { - padding-left: 0; - .form-check-label { - padding-left: 1.25rem; - } - } - - .form-control:focus { - outline: none; - box-shadow: none; - } - - textarea.form-control { - height: 10.6rem; - } - - .input-group-addon { - padding-left: 0.75rem; - padding-right: 0.75rem; - } - - .btn-secondary:not(:disabled):not(.disabled):active:focus, - .btn-secondary:not(:disabled):not(.disabled).active:focus, - .btn-secondary, - .show > .btn-secondary.dropdown-toggle:focus { - &:focus, &:active, &:hover, &.focus { - box-shadow: 0 0 0 0px rgba(134,142,150,0.5); - color: rgb(51, 55, 64); - background-color: rgb(250, 250, 251) !important; - - } - } - - /* - * Notifications animation - */ - - .notification-enter { - opacity: 0; - top: -70px; - } - - .notification-enter.notification-enter-active { - opacity: 1; - transition: all 400ms ease-in; - top: 0; - } - - .notification-exit { - opacity: 1; - } - - .notification-exit.notification-exit-active { - opacity: 0; - transition: all 400ms ease-in; - } - - - ::-webkit-scrollbar { - width: 9px; - height: 5px; - } - - ::-webkit-scrollbar-track { - background-color: #eee; - } - - ::-webkit-scrollbar-track:hover { - background-color: #ddd; - } - - ::-webkit-scrollbar-thumb { - background-color: #ccc; - border-radius: 0.5rem; - } - - ::-webkit-scrollbar-thumb:hover { - background-color: #bbb; - } - - ::-webkit-scrollbar-button { - display: none; - } - - /* firefox scrollbar */ - /* stylelint-disable */ - * { - scrollbar-color: #bbb #eee; - scrollbar-width: thin; - } - /* stylelint-enable */ - - a::-moz-focus-inner { - border: 0; - } -`; +const GlobalStyle = createGlobalStyle``; export default GlobalStyle; diff --git a/packages/core/admin/admin/src/components/LeftMenu/Wrapper.js b/packages/core/admin/admin/src/components/LeftMenu/Wrapper.js deleted file mode 100644 index a9d1d671bb..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/Wrapper.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * - * Wrapper - * - */ - -import styled from 'styled-components'; -import PropTypes from 'prop-types'; - -const Wrapper = styled.div` - position: fixed; - float: left; - top: 0; - left: 0; - height: 100vh; - width: ${props => props.theme.main.sizes.leftMenu.width}; - background: ${props => props.theme.main.colors.strapi['blue-darker']}; - - /* scrollbar overrides */ - * { - ::-webkit-scrollbar { - width: 7px; - } - - ::-webkit-scrollbar-track, - ::-webkit-scrollbar-track:hover { - background-color: transparent; - } - - ::-webkit-scrollbar-thumb { - background-color: ${props => props.theme.main.colors.leftMenu['title-color']}; - } - - ::-webkit-scrollbar-thumb:hover { - background-color: ${props => props.theme.main.colors.leftMenu['link-color']}; - } - - /* firefox */ - scrollbar-color: ${props => props.theme.main.colors.leftMenu['title-color']} transparent; - } -`; - -Wrapper.defaultProps = { - theme: { - main: { - colors: { - strapi: {}, - }, - sizes: { - header: {}, - leftMenu: {}, - }, - }, - }, -}; - -Wrapper.propTypes = { - theme: PropTypes.object, -}; - -export default Wrapper; diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/Footer/Wrapper.js b/packages/core/admin/admin/src/components/LeftMenu/compos/Footer/Wrapper.js deleted file mode 100644 index 19ae60cc5c..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/Footer/Wrapper.js +++ /dev/null @@ -1,51 +0,0 @@ -import styled from 'styled-components'; -import PropTypes from 'prop-types'; - -const Wrapper = styled.div` - position: absolute; - width: 100%; - background: ${props => props.theme.main.colors.strapi['blue-darker']}; - bottom: 0; - .poweredBy { - width: 100%; - bottom: 0; - height: 3rem; - padding-left: 15px; - padding-right: 15px; - line-height: 3rem; - background-color: rgba(255, 255, 255, 0.02); - font-size: 1rem; - font-weight: 400; - letter-spacing: 0.05rem; - vertical-align: middle; - color: ${({ theme }) => theme.main.colors.strapi['gray-light']}; - } -`; - -const A = styled.a` - &:hover { - color: #007bff; - text-decoration: underline; - } -`; - -Wrapper.defaultProps = { - theme: { - main: { - colors: { - strapi: {}, - }, - sizes: { - header: {}, - leftMenu: {}, - }, - }, - }, -}; - -Wrapper.propTypes = { - theme: PropTypes.object, -}; - -export default Wrapper; -export { A }; diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/Footer/index.js b/packages/core/admin/admin/src/components/LeftMenu/compos/Footer/index.js deleted file mode 100644 index 17ad753299..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/Footer/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * - * LeftMenuFooter - * - */ - -import React from 'react'; - -import { useAppInfos } from '@strapi/helper-plugin'; -import Wrapper, { A } from './Wrapper'; - -function LeftMenuFooter() { - const projectType = strapi.projectType; - const { strapiVersion } = useAppInfos(); - - return ( - - - - ); -} - -export default LeftMenuFooter; diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/Header/Wrapper.js b/packages/core/admin/admin/src/components/LeftMenu/compos/Header/Wrapper.js deleted file mode 100644 index b427115c0a..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/Header/Wrapper.js +++ /dev/null @@ -1,48 +0,0 @@ -import styled from 'styled-components'; -import PropTypes from 'prop-types'; - -const Wrapper = styled.div` - background-color: ${props => props.theme.main.colors.leftMenu['background-header-link']}; - padding-left: 2rem; - height: ${props => props.theme.main.sizes.leftMenu.height}; - - .leftMenuHeaderLink { - &:hover { - text-decoration: none; - } - } - - .projectName { - display: block; - width: 100%; - height: ${props => props.theme.main.sizes.leftMenu.height}; - font-size: 2rem; - letter-spacing: 0.2rem; - color: $white; - - background-image: url(${props => props.logo}); - background-repeat: no-repeat; - background-position: left center; - background-size: auto 2.5rem; - } -`; - -Wrapper.defaultProps = { - theme: { - main: { - colors: { - leftMenu: {}, - }, - sizes: { - header: {}, - leftMenu: {}, - }, - }, - }, -}; - -Wrapper.propTypes = { - theme: PropTypes.object, -}; - -export default Wrapper; diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/Header/index.js b/packages/core/admin/admin/src/components/LeftMenu/compos/Header/index.js deleted file mode 100644 index 5d8636a97d..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/Header/index.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import { Link } from 'react-router-dom'; -import { useConfigurations } from '../../../../hooks'; -import Wrapper from './Wrapper'; - -const LeftMenuHeader = () => { - const { menuLogo } = useConfigurations(); - - return ( - - - - - - ); -}; - -export default LeftMenuHeader; diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/Link/LeftMenuIcon.js b/packages/core/admin/admin/src/components/LeftMenu/compos/Link/LeftMenuIcon.js deleted file mode 100644 index 7df224633d..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/Link/LeftMenuIcon.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import styled from 'styled-components'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; - -const FaIcon = styled(({ small, ...props }) => )` - position: absolute; - top: ${({ small }) => (small ? 'calc(50% - 0.3rem)' : 'calc(50% - 0.9rem + 0.3rem)')}; - left: ${({ small }) => (small ? '2.2rem' : '1.6rem')}; - width: ${({ small }) => (small ? 'auto' : '1.3rem')} !important; - font-size: ${({ small }) => (small ? '.5rem' : '1.3rem')}; -`; - -const LeftMenuIcon = ({ icon }) => ; - -LeftMenuIcon.propTypes = { - icon: PropTypes.string, -}; -LeftMenuIcon.defaultProps = { - icon: 'circle', -}; - -export default LeftMenuIcon; diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/Link/Link.js b/packages/core/admin/admin/src/components/LeftMenu/compos/Link/Link.js deleted file mode 100644 index e331644aad..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/Link/Link.js +++ /dev/null @@ -1,40 +0,0 @@ -import { NavLink } from 'react-router-dom'; -import styled from 'styled-components'; - -const Link = styled(NavLink)` - display: flex; - position: relative; - padding-top: 1rem; - padding-bottom: 0.2rem; - padding-left: 1.6rem; - min-height: 3.6rem; - line-height: 1.8rem; - border-left: 0.3rem solid transparent; - cursor: pointer; - color: ${props => props.theme.main.colors.leftMenu['link-color']}; - text-decoration: none; - -webkit-font-smoothing: antialiased; - - &:hover { - color: ${props => props.theme.main.colors.white}; - background: ${props => props.theme.main.colors.leftMenu['link-hover']}; - border-left: 0.3rem solid ${props => props.theme.main.colors.strapi.blue}; - text-decoration: none; - } - - &:focus { - color: ${props => props.theme.main.colors.white}; - text-decoration: none; - } - - &:visited { - color: ${props => props.theme.main.colors.leftMenu['link-color']}; - } - - &.active { - color: white !important; - border-left: 0.3rem solid ${props => props.theme.main.colors.strapi.blue}; - } -`; - -export default Link; diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/Link/LinkLabel.js b/packages/core/admin/admin/src/components/LeftMenu/compos/Link/LinkLabel.js deleted file mode 100644 index 0e28c155a5..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/Link/LinkLabel.js +++ /dev/null @@ -1,10 +0,0 @@ -import styled from 'styled-components'; - -const LinkLabel = styled.span` - display: inline-block; - width: 100%; - padding-right: 1rem; - padding-left: 2.5rem; -`; - -export default LinkLabel; diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/Link/NotificationCount.js b/packages/core/admin/admin/src/components/LeftMenu/compos/Link/NotificationCount.js deleted file mode 100644 index 1df658419b..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/Link/NotificationCount.js +++ /dev/null @@ -1,32 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import PropTypes from 'prop-types'; -import { Text } from '@buffetjs/core'; - -const NotificationWrapper = styled.div` - height: 14px; - margin-top: 4px; - margin-right: 20px; - padding: 0px 4px; - background-color: #383d49; - border-radius: 2px; - font-size: 11px; -`; - -const NotificationCount = ({ count }) => ( - - - {count} - - -); - -NotificationCount.defaultProps = { - count: 0, -}; - -NotificationCount.propTypes = { - count: PropTypes.number, -}; - -export default NotificationCount; diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/Link/index.js b/packages/core/admin/admin/src/components/LeftMenu/compos/Link/index.js deleted file mode 100644 index c96695082d..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/Link/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * - * LeftMenuLink - * - */ - -import React from 'react'; -import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; -import LinkLabel from './LinkLabel'; -import Link from './Link'; -import LeftMenuIcon from './LeftMenuIcon'; -import NotificationCount from './NotificationCount'; - -const LeftMenuLink = ({ to, icon, intlLabel, notificationsCount }) => { - return ( - - - {/* TODO change with new DS */} - - {message => {message}} - - {notificationsCount > 0 && } - - ); -}; - -LeftMenuLink.propTypes = { - to: PropTypes.string.isRequired, - icon: PropTypes.string, - intlLabel: PropTypes.object.isRequired, - notificationsCount: PropTypes.number, -}; - -LeftMenuLink.defaultProps = { - icon: 'circle', - notificationsCount: 0, -}; - -export default LeftMenuLink; diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/Links/index.js b/packages/core/admin/admin/src/components/LeftMenu/compos/Links/index.js deleted file mode 100644 index 0e95145ebf..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/Links/index.js +++ /dev/null @@ -1,31 +0,0 @@ -import styled from 'styled-components'; -import PropTypes from 'prop-types'; - -const LinksContainer = styled.div` - padding-top: 0.7rem; - position: absolute; - top: ${props => props.theme.main.sizes.leftMenu.height}; - right: 0; - bottom: 0; - left: 0; - overflow-y: auto; - height: calc(100vh - (${props => props.theme.main.sizes.leftMenu.height} + 3rem)); - box-sizing: border-box; -`; - -LinksContainer.defaultProps = { - theme: { - main: { - sizes: { - header: {}, - leftMenu: {}, - }, - }, - }, -}; - -LinksContainer.propTypes = { - theme: PropTypes.object, -}; - -export default LinksContainer; diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/LinksSection/LeftMenuListLink.js b/packages/core/admin/admin/src/components/LeftMenu/compos/LinksSection/LeftMenuListLink.js deleted file mode 100644 index a7296b8f47..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/LinksSection/LeftMenuListLink.js +++ /dev/null @@ -1,10 +0,0 @@ -import styled from 'styled-components'; - -const LeftMenuListLink = styled.div` - max-height: 180px; - margin-bottom: 19px; - margin-right: 25px; - overflow: auto; -`; - -export default LeftMenuListLink; diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/LinksSection/index.js b/packages/core/admin/admin/src/components/LeftMenu/compos/LinksSection/index.js deleted file mode 100644 index 836cebb0ba..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/LinksSection/index.js +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import LeftMenuLink from '../Link'; -import LeftMenuListLink from './LeftMenuListLink'; - -const LeftMenuLinksSection = ({ links }) => { - return ( - <> - - {links.map(link => ( - - ))} - - - ); -}; - -LeftMenuLinksSection.propTypes = { - links: PropTypes.arrayOf(PropTypes.object).isRequired, -}; - -export default LeftMenuLinksSection; diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/SectionTitle/index.js b/packages/core/admin/admin/src/components/LeftMenu/compos/SectionTitle/index.js deleted file mode 100644 index 484e404ae1..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/SectionTitle/index.js +++ /dev/null @@ -1,30 +0,0 @@ -import styled from 'styled-components'; - -const SectionTitle = styled.div` - display: flex; - justify-content: space-between; - padding-left: 2rem; - padding-right: 1.6rem; - padding-top: 1rem; - margin-bottom: 0.9rem; - color: ${props => props.theme.main.colors.leftMenu['title-color']}; - text-transform: uppercase; - font-size: 1.1rem; - letter-spacing: 0.1rem; - font-weight: 800; - max-height: 26px; -`; - -SectionTitle.defaultProps = { - theme: { - main: { - colors: { - leftMenu: { - 'title-color': '#5b626f', - }, - }, - }, - }, -}; - -export default SectionTitle; diff --git a/packages/core/admin/admin/src/components/LeftMenu/compos/index.js b/packages/core/admin/admin/src/components/LeftMenu/compos/index.js deleted file mode 100644 index 578c2c9a31..0000000000 --- a/packages/core/admin/admin/src/components/LeftMenu/compos/index.js +++ /dev/null @@ -1,5 +0,0 @@ -export { default as Footer } from './Footer'; -export { default as Header } from './Header'; -export { default as LinksContainer } from './Links'; -export { default as LinksSection } from './LinksSection'; -export { default as SectionTitle } from './SectionTitle'; diff --git a/packages/core/admin/admin/src/components/LeftMenu/index.js b/packages/core/admin/admin/src/components/LeftMenu/index.js index 0a91d0e30f..c4a2170a6e 100644 --- a/packages/core/admin/admin/src/components/LeftMenu/index.js +++ b/packages/core/admin/admin/src/components/LeftMenu/index.js @@ -1,58 +1,84 @@ -import React, { memo } from 'react'; +import React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; -import { BaselineAlignment } from '@strapi/helper-plugin'; -import { Footer, Header, LinksContainer, LinksSection, SectionTitle } from './compos'; -import LeftMenuLink from './compos/Link'; - -import Wrapper from './Wrapper'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import get from 'lodash/get'; +import { + MainNav, + NavBrand, + NavSections, + NavLink, + NavSection, + NavUser, + NavCondense, + Divider, +} from '@strapi/parts'; +import ContentIcon from '@strapi/icons/ContentIcon'; +import { auth, usePersistentState } from '@strapi/helper-plugin'; +import useConfigurations from '../../hooks/useConfigurations'; const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => { + const { menuLogo } = useConfigurations(); + const [condensed, setCondensed] = usePersistentState('navbar-condensed', false); + + const userInfo = auth.getUserInfo(); + + let displayName; + + if (userInfo && userInfo.firstname && userInfo.lastname) { + displayName = `${userInfo.firstname} ${userInfo.lastname}`; + } else { + displayName = get(userInfo, 'username', ''); + } + return ( - -
+ + } + /> - - - - + - {pluginsSectionLinks.length > 0 && ( - <> - - - - - + + }> + + + + {pluginsSectionLinks.length > 0 ? ( + + {pluginsSectionLinks.map(link => ( + }> + + + ))} + + ) : null} + + {generalSectionLinks.length > 0 ? ( + + {generalSectionLinks.map(link => ( + }> + + + ))} + + ) : null} + + + + {displayName} + + + setCondensed(s => !s)}> + {condensed ? ( + + ) : ( + )} - {generalSectionLinks.length > 0 && ( - <> - - - - - - )} - -