From 852275d3ea8a5d4d51e1807ce276c9b55cfb96ea Mon Sep 17 00:00:00 2001 From: Nirmal Khedkar Date: Sat, 26 Feb 2022 18:47:05 +0300 Subject: [PATCH] UI Customisation --- admin/src/app.js | 231 ++++++++++++++++++ admin/src/assets/images/logo-strapi-1.png | Bin 0 -> 44648 bytes admin/src/assets/images/logo-strapi.png | Bin 0 -> 3438 bytes admin/src/assets/images/logo_strapi.png | Bin 0 -> 3438 bytes .../LeftMenu/LeftMenuHeader/Wrapper.js | 50 ++++ admin/src/containers/HomePage/index.js | 26 +- admin/src/themes/colors.js | 50 ++++ admin/styles/ietnitk.scss | 25 ++ 8 files changed, 363 insertions(+), 19 deletions(-) create mode 100644 admin/src/app.js create mode 100644 admin/src/assets/images/logo-strapi-1.png create mode 100644 admin/src/assets/images/logo-strapi.png create mode 100644 admin/src/assets/images/logo_strapi.png create mode 100644 admin/src/components/LeftMenu/LeftMenuHeader/Wrapper.js create mode 100644 admin/src/themes/colors.js create mode 100644 admin/styles/ietnitk.scss diff --git a/admin/src/app.js b/admin/src/app.js new file mode 100644 index 0000000..77a43f3 --- /dev/null +++ b/admin/src/app.js @@ -0,0 +1,231 @@ +/** + * + * app.js + * + * Entry point of the application + */ + +// NOTE TO PLUGINS DEVELOPERS: +// If you modify this file by adding new options to a plugin entry point +// Here's the file: strapi/docs/3.0.0-beta.x/plugin-development/frontend-field-api.md +// Here's the file: strapi/docs/3.0.0-beta.x/guides/registering-a-field-in-admin.md +// Also the strapi-generate-plugins/files/admin/src/index.js needs to be updated +// IF THE DOC IS NOT UPDATED THE PULL REQUEST WILL NOT BE MERGED + +/* eslint-disable */ + +import '@babel/polyfill'; +import 'sanitize.css/sanitize.css'; + +// Third party css library needed +import 'bootstrap/dist/css/bootstrap.css'; +// import "../styles/ietnitk.scss"; +import 'font-awesome/css/font-awesome.min.css'; +import '@fortawesome/fontawesome-free/css/all.css'; +import '@fortawesome/fontawesome-free/js/all.min.js'; + +import React from 'react'; +import ReactDOM from 'react-dom'; +import { Provider } from 'react-redux'; +import { BrowserRouter } from 'react-router-dom'; +// Strapi provider with the internal APIs +import { StrapiProvider } from 'strapi-helper-plugin'; +import { merge } from 'lodash'; +import Fonts from './components/Fonts'; +import { freezeApp, pluginLoaded, unfreezeApp, updatePlugin } from './containers/App/actions'; +import { showNotification } from './containers/NotificationProvider/actions'; +import { showNotification as showNewNotification } from './containers/NewNotification/actions'; + +import basename from './utils/basename'; +import getInjectors from './utils/reducerInjectors'; +import injectReducer from './utils/injectReducer'; +import injectSaga from './utils/injectSaga'; +import Strapi from './utils/Strapi'; + +// Import root component +import App from './containers/App'; +// Import Language provider +import LanguageProvider from './containers/LanguageProvider'; + +import configureStore from './configureStore'; +import { SETTINGS_BASE_URL } from './config'; + +// Import i18n messages +import { translationMessages, languages } from './i18n'; + +// Create redux store with history +import history from './utils/history'; + +import plugins from './plugins'; + +const strapi = Strapi(); + +const initialState = {}; +const store = configureStore(initialState, history); +const { dispatch } = store; +const MOUNT_NODE = document.getElementById('app') || document.createElement('div'); + +Object.keys(plugins).forEach(current => { + const registerPlugin = plugin => { + return plugin; + }; + const currentPluginFn = plugins[current]; + + // By updating this by adding required methods + // to load a plugin you need to update this file + // strapi-generate-plugins/files/admin/src/index.js needs to be updated + const plugin = currentPluginFn({ + registerComponent: strapi.componentApi.registerComponent, + registerField: strapi.fieldApi.registerField, + registerPlugin, + settingsBaseURL: SETTINGS_BASE_URL || '/settings', + }); + + const pluginTradsPrefixed = languages.reduce((acc, lang) => { + const currentLocale = plugin.trads[lang]; + + if (currentLocale) { + const localeprefixedWithPluginId = Object.keys(currentLocale).reduce((acc2, current) => { + acc2[`${plugin.id}.${current}`] = currentLocale[current]; + + return acc2; + }, {}); + + acc[lang] = localeprefixedWithPluginId; + } + + return acc; + }, {}); + + // Inject plugins reducers + const pluginReducers = plugin.reducers || {}; + + Object.keys(pluginReducers).forEach(reducerName => { + getInjectors(store).injectReducer(reducerName, pluginReducers[reducerName]); + }); + + try { + merge(translationMessages, pluginTradsPrefixed); + dispatch(pluginLoaded(plugin)); + } catch (err) { + console.log({ err }); + } +}); + +// TODO +const remoteURL = (() => { + // Relative URL (ex: /dashboard) + if (REMOTE_URL[0] === '/') { + return (window.location.origin + REMOTE_URL).replace(/\/$/, ''); + } + + return REMOTE_URL.replace(/\/$/, ''); +})(); + +const displayNotification = (message, status) => { + console.warn( + // Validate the text + 'Deprecated: Will be deleted.\nPlease use strapi.notification.toggle(config).\nDocs : https://strapi.io/documentation/developer-docs/latest/development/local-plugins-customization.html#strapi-notification' + ); + dispatch(showNotification(message, status)); +}; +const displayNewNotification = config => { + dispatch(showNewNotification(config)); +}; +const lockApp = data => { + dispatch(freezeApp(data)); +}; +const unlockApp = () => { + dispatch(unfreezeApp()); +}; + +const lockAppWithOverlay = () => { + const overlayblockerParams = { + children:
, + noGradient: true, + }; + + lockApp(overlayblockerParams); +}; + +window.strapi = Object.assign(window.strapi || {}, { + node: MODE || 'host', + env: NODE_ENV, + remoteURL, + backendURL: BACKEND_URL === '/' ? window.location.origin : BACKEND_URL, + notification: { + // New notification api + toggle: config => { + displayNewNotification(config); + }, + success: message => { + displayNotification(message, 'success'); + }, + warning: message => { + displayNotification(message, 'warning'); + }, + error: message => { + displayNotification(message, 'error'); + }, + info: message => { + displayNotification(message, 'info'); + }, + }, + refresh: pluginId => ({ + translationMessages: translationMessagesUpdated => { + render(merge({}, translationMessages, translationMessagesUpdated)); + }, + leftMenuSections: leftMenuSectionsUpdated => { + store.dispatch(updatePlugin(pluginId, 'leftMenuSections', leftMenuSectionsUpdated)); + }, + }), + router: history, + languages, + currentLanguage: + window.localStorage.getItem('strapi-admin-language') || + window.navigator.language || + window.navigator.userLanguage || + 'en', + lockApp, + lockAppWithOverlay, + unlockApp, + injectReducer, + injectSaga, + store, +}); + +const render = messages => { + ReactDOM.render( + + + + + + + + + + , + MOUNT_NODE + ); +}; + +if (module.hot) { + module.hot.accept(['./i18n', './containers/App'], () => { + ReactDOM.unmountComponentAtNode(MOUNT_NODE); + + render(translationMessages); + }); +} + +if (NODE_ENV !== 'test') { + render(translationMessages); +} + +// @Pierre Burgy exporting dispatch for the notifications... +export { dispatch }; + +// TODO remove this for the new Cypress tests +if (window.Cypress) { + window.__store__ = Object.assign(window.__store__ || {}, { store }); +} diff --git a/admin/src/assets/images/logo-strapi-1.png b/admin/src/assets/images/logo-strapi-1.png new file mode 100644 index 0000000000000000000000000000000000000000..69536f7fdee4bd309b6d334e749870ebcd634354 GIT binary patch literal 44648 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 UI4M5RN&o-{TNj%StDwAp0v@5b;{X5v literal 0 HcmV?d00001 diff --git a/admin/src/assets/images/logo_strapi.png b/admin/src/assets/images/logo_strapi.png new file mode 100644 index 0000000000000000000000000000000000000000..910c837693e1a88461b44b3db4235ff5912dc2e4 GIT binary patch literal 3438 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 UI4M5RN&o-{TNj%StDwAp0v@5b;{X5v literal 0 HcmV?d00001 diff --git a/admin/src/components/LeftMenu/LeftMenuHeader/Wrapper.js b/admin/src/components/LeftMenu/LeftMenuHeader/Wrapper.js new file mode 100644 index 0000000..7d51493 --- /dev/null +++ b/admin/src/components/LeftMenu/LeftMenuHeader/Wrapper.js @@ -0,0 +1,50 @@ +import styled from 'styled-components'; +import PropTypes from 'prop-types'; + +import Logo from '../../../assets/images/logo-strapi.png'; + +const Wrapper = styled.div` + background-color: #ffffff; + 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(${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/admin/src/containers/HomePage/index.js b/admin/src/containers/HomePage/index.js index c4b3c76..f5c943e 100644 --- a/admin/src/containers/HomePage/index.js +++ b/admin/src/containers/HomePage/index.js @@ -26,30 +26,18 @@ import { import SocialLink from "./SocialLink"; const SOCIAL_LINKS = [ - { - name: "GitHub", - link: "https://github.com/iet-nitk", - }, - { - name: "MS Teams", - link: "https://slack.strapi.io/", - }, { name: "Facebook", - link: "https://medium.com/@strapi", - }, - { - name: "Twitter", - link: "https://medium.com/@strapi", - }, - { - name: "Instagram", - link: "https://twitter.com/strapijs", + link: "https://facebook.com/ietnitk", }, { - name: "Telegram", - link: "https://www.reddit.com/r/Strapi/", + name: "LinkedIn", + link: "https://linkedin.com/in/ietnitk", }, + { href: "https://www.github.com/IET-NITK", name: "Github" }, + { href: "https://t.me/IET_NITK", name: "Telegram" }, + { href: "https://www.youtube.com/c/IETNITK", name: "Youtube" }, + { href: "https://www.instagram.com/ietnitk", name: "Instagram" }, { name: "Website", link: "https://iet.nitk.ac.in", diff --git a/admin/src/themes/colors.js b/admin/src/themes/colors.js new file mode 100644 index 0000000..d6d19a6 --- /dev/null +++ b/admin/src/themes/colors.js @@ -0,0 +1,50 @@ +const colors = { + black: '#333740', + white: '#ffffff', + red: '#ff203c', + orange: '#ff5d00', + lightOrange: '#f64d0a', + yellow: '#ffd500', + green: '#6dbb1a', + blue: '#0097f7', + teal: '#5bc0de', + pink: '#ff5b77', + purple: '#613d7c', + gray: '#464a4c', + border: '#e3e9f3', + 'gray-dark': '#292b2c', + grayLight: '#636c72', + 'gray-lighter': '#eceeef', + 'gray-lightest': '#f7f7f9', + brightGrey: '#f0f3f8', + darkGrey: '#e3e9f3', + lightGrey: '#fafafa', + lightestGrey: '#fbfbfb', + mediumGrey: '#f2f3f4', + grey: '#9ea7b8', + greyDark: '#292b2c', + greyAlpha: 'rgba(227, 233, 243, 0.5)', + lightestBlue: '#e4f0fc', + lightBlue: '#e6f0fb', + mediumBlue: '#007eff', + darkBlue: '#aed4fb', + pale: '#f7f8f8', + content: { + background: '#fafafb', + 'background-alpha': 'rgba(14, 22, 34, 0.02)', + }, + leftMenu: { + 'link-hover': '#5f256b', + 'link-color': '#f5f5f5', + 'title-color': '#ffffff', + }, + strapi: { + 'gray-light': '#eff3f6', + gray: '#535f76', + 'blue-darker': '#803391', + 'blue-dark': '#53274E', + blue: '#ffffff', + }, +}; + +export default colors; diff --git a/admin/styles/ietnitk.scss b/admin/styles/ietnitk.scss new file mode 100644 index 0000000..e0d4cc5 --- /dev/null +++ b/admin/styles/ietnitk.scss @@ -0,0 +1,25 @@ +/* +NOTE: Dont override anything here unless absolutely necessary. Always prefer to override it from Strapi side instead. +*/ + +@import "../../node_modules/bootstrap/scss/functions"; +@import "../../node_modules/bootstrap/scss/variables"; +@import "../../node_modules/bootstrap/scss/mixins"; +// import customization + + + +$enable-gradients: true; + +$pagination-active-bg: map-get($map: $theme-colors, $key: "primary"); +$pagination-color: map-get($map: $theme-colors, $key: "primary"); +$pagination-hover-color: map-get($map: $theme-colors, $key: "primary"); +$dropdown-link-color: map-get($map: $theme-colors, $key: "primary"); +$link-color: map-get($map: $theme-colors, $key: "primary"); +$dropdown-link-active-bg: map-get($map: $theme-colors, $key: "primary"); +$component-active-bg: map-get($map: $theme-colors, $key: "primary"); +// $pagination-color: #803391; + + +// finally, import Bootstrap to set the changes! +@import "../../../node_modules/bootstrap/scss/bootstrap"; \ No newline at end of file