diff --git a/components/modal/registration/conditions.jsx b/components/modal/registration/conditions.jsx index 0c69f5d22..07a8c46b2 100644 --- a/components/modal/registration/conditions.jsx +++ b/components/modal/registration/conditions.jsx @@ -26,7 +26,7 @@ const ModalConditions = observe(() => {
Just one more thing!
Please read and agree to the CORE - Terms and Conditions and + Terms and Conditions and privacy notice. The T&Cs and privacy notice are designed to inform you of your rights and obligations when using the CORE service. diff --git a/data/membership.yml b/data/membership.yml index f46530f98..df937e645 100644 --- a/data/membership.yml +++ b/data/membership.yml @@ -1,3 +1,14 @@ +headerLink: + - link: Membership levels + href: '#membership-levels' + - link: CORE Members + href: '#core-members' +# bring back when have documentation +# - link: Documentation +# href: '#documentation' + - link: Membership materials + href: '#membership-materials' + header: title: CORE Membership for organisations extra: Coming soon @@ -115,7 +126,17 @@ content: plans: [Sustaining] plans: - title: What is CORE membership? + title: CORE Membership levels + cardsDescription: + - title: | + STARTING for: + content: Organisations who want to get their content indexed in CORE and benefit from increased discoverability, while staying in control of how their content is exposed using the CORE Dashboard. + - title: | + SUPPORTING for: + content: Organisations who want to be widely recognised for their open research. This membership also comes with extra visibility for your organisation in the OA network, additional technical support, CORE API access for your researchers, and a seat on our Board of Supporters. + - title: | + SUSTAINING for: + content: Organisations who want to be seen as open research champions. This membership comes with additional tools to help stay compliant with OA policies and FAIR, unlimited technical support, CORE Dataset access for your researchers for text and data mining, and two seats on our Board of Supporters cards: - title: Starting caption: Free @@ -149,6 +170,7 @@ plans: action: title: Register your interest url: https://docs.google.com/forms/d/e/1FAIpQLSfFJmMIspYfOEM5aOKG4FTZoK4qeqozyds47O75Wm4dJ1ta2w/viewform + subscribe: UK HEIs can subscribe via the
[Jisc license subscriptions manager](https://subscriptionsmanager.jisc.ac.uk/#) - title: Sustaining caption: Membership fees @@ -167,6 +189,27 @@ plans: action: title: Register your interest url: https://docs.google.com/forms/d/e/1FAIpQLSfFJmMIspYfOEM5aOKG4FTZoK4qeqozyds47O75Wm4dJ1ta2w/viewform + subscribe: UK HEIs can subscribe via the
[Jisc license subscriptions manager](https://subscriptionsmanager.jisc.ac.uk/#) + +carousel: + items: + - img: /images/membership/bristol.svg + alt: "bristol" + - img: /images/membership/city.svg + alt: "city" + - img: /images/membership/george.svg + alt: "george" + - img: /images/membership/kent.png + alt: "kent" + - img: /images/membership/lancaster.svg + alt: "lancaster" + - img: /images/membership/sussex.svg + alt: "sussex" + - img: /images/membership/belfast.png + alt: "belfast" + action: + caption: See all CORE members + url: 'https://core.ac.uk/community/supporters' box: description: Here you can find a comparison table with detailed information about each feature. It can help you choose the most suitable membership plan. @@ -174,6 +217,15 @@ box: default: Show feature details and comparison active: Close feature details and comparison +how-it-works: + title: Find out more about membership’s features + image: /images/services/work.svg + description: | + Here you can find a comparison table with detailed information about each features. It can help you choose the most suitable membership’s level for you. Also you can access Membership documentation where described how each feature works. + action: + default: Comparison table + active: Comparison table + comparison-table: title: Features’ details and comparison headers: @@ -214,21 +266,29 @@ support: - title: Sustaining caption: Co-funds the maintenance of CORE services and their continuous improvement. img: /images/membership/sustaining.svg - members: - title: Some of our members - children: - - logo: stgeorg.png - name: St. George's, University of London - - logo: university-of-london.svg - name: City University of London - - logo: brunel.png - name: Brunel University - - logo: trent.png - name: Nottingham Trent University - - logo: sussex.svg - name: University of Sussex - - logo: aru.svg - name: Anglia Ruskin University + +materials: + title: Membership materials + cards: + - image: /images/membership/video.svg + action: + caption: Watch video + video: + src: https://youtube.com/embed/-gFYNg_8ySQ + +# bring back when we will have pdf file for it +# - image: /images/membership/presentation.svg +# action: +# caption: Open presentation +# url: /resources/core-leaflet-Glasgow-A3.pdf +# target: _blank + - image: /images/membership/flyer.svg + action: + caption: Open flyer + url: /resources/core-leaflet-Glasgow-A3.pdf + target: _blank + + fee: title: Membership fee for {{planName}} members* diff --git a/data/terms.yml b/data/terms.yml new file mode 100644 index 000000000..576fda6e7 --- /dev/null +++ b/data/terms.yml @@ -0,0 +1,54 @@ +header: + title: Terms & Conditions + description: This page sets the Terms & Conditions under which [CORE data*](https://core.ac.uk/terms)
can be used by others. + actions: + - caption: Download pdf + url: /resources/flyer-CORE-Sponsorship.pdf + variant: contained + target: _blank +main: + - mainItems: + - title: ODC-By licenced datasets + content: | + * You can use these datasets for any commercial or non-commercial purposes in line with the **ODC-By licence**. + * You need to acknowledge the use of CORE as [described](https://core.ac.uk/acknowledge). + - title: Other datasets and the API + content: | + While you need to obtain a licence to use other CORE datasets as well as the CORE API, many of our users are eligible for a free licence. + + However, you should contact us, irrespective of any potential free licence eligibility as described below, if you are developing or intending to develop a product, service or software using CORE data which: + + * might be monetised now or in the future **OR** + * is expected to serve only a restricted group of beneficiaries (e.g. only your own organisation) **OR** + * is intended for the benefit of everyone but related to the functionality provided by one of CORE’s existing services, such as but not limited to an API, a recommender system, search, discovery system or analytical dashboard. + - title: Free licence eligibility + content: | + If your use of CORE data does not fall under any of the categories mentioned in the above points 1-3 **AND** you are either an individual or a public research organisation, then you might be eligible for a free licence. + - mainItems: + - title: Individuals + content: | + If you are an individual, you can use CORE data freely if: + + * You are conducting work in your own personal capacity **AND** + * You will acknowledge the use of CORE as [described](https://core.ac.uk/acknowledge). + - title: Public research organisations + content: | + If you are working for a public research organisation (e.g. a university): + + You can use CORE data freely if: + + * You are pursuing research on CORE data with the objective of producing a research paper or a publicly available report AND + * You will acknowledge the use of CORE as [described](https://core.ac.uk/acknowledge). + + If you are intending to use CORE as part of a research project(s) then you should [contact us](https://core.ac.uk/about#contact) to obtain a licence. Depending on the circumstances, we will assess if you are eligible for a free licence. + - title: Authorisation for use of your data + content: | + You authorise us to use the logo of your organisation and/or project on our website and to mention our support to you in public communication. + + We reserve the right to withdraw our approval for use of CORE data at any time by giving you a **30-day** notice. +additional: + title: Disclaimer + content: | + The term (*)**CORE data** refers to a database created by harvesting and processing information publicly available on the Internet. Every effort has been made to ensure this dataset contains open access content only. We have included content only from repositories and journals that are listed in registries where the condition for inclusion is the provision of content under an open access compatible license. However, as metadata are often inconsistent, license information is often not machine readable and, from time to time, repositories leak information that is not open access, we cannot take any responsibility for the licences of the individual content in the dataset. It is therefore up to the user of this dataset to ensure that the way in which they use the dataset does not breach copyright of any third party. The dataset is in no way intended for the purposes of reading the original publications, but for machine processing only.
+ + Additionally, while CORE retains no copyright in any of the works in the database, we reserve the sui generis database rights. This is due to the substantial investment in obtaining, processing and serving the aggregated data to the relevant communities of interest. diff --git a/package-lock.json b/package-lock.json index 8284d6c1d..693285d05 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2033,6 +2033,20 @@ "svgstore": "^3.0.0-2", "throttle-debounce": "^3.0.1", "yargs": "^16.1.0" + }, + "dependencies": { + "react-slick": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.28.1.tgz", + "integrity": "sha512-JwRQXoWGJRbUTE7eZI1rGIHaXX/4YuwX6gn7ulfvUZ4vFDVQAA25HcsHSYaUiRCduTr6rskyIuyPMpuG6bbluw==", + "requires": { + "classnames": "^2.2.5", + "enquire.js": "^2.1.6", + "json2mq": "^0.2.0", + "lodash.debounce": "^4.0.8", + "resize-observer-polyfill": "^1.5.0" + } + } } }, "@oacore/eslint-config-base": { @@ -8975,9 +8989,9 @@ "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==" }, "react-slick": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.28.1.tgz", - "integrity": "sha512-JwRQXoWGJRbUTE7eZI1rGIHaXX/4YuwX6gn7ulfvUZ4vFDVQAA25HcsHSYaUiRCduTr6rskyIuyPMpuG6bbluw==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.29.0.tgz", + "integrity": "sha512-TGdOKE+ZkJHHeC4aaoH85m8RnFyWqdqRfAGkhd6dirmATXMZWAxOpTLmw2Ll/jPTQ3eEG7ercFr/sbzdeYCJXA==", "requires": { "classnames": "^2.2.5", "enquire.js": "^2.1.6", diff --git a/package.json b/package.json index 79b420b3a..ca0d44f7f 100644 --- a/package.json +++ b/package.json @@ -67,9 +67,11 @@ "react-dom": "^17.0.1", "react-ga": "^3.2.1", "react-markdown": "^5.0.3", + "react-slick": "^0.29.0", "react-spring": "^9.4.3", "reactstrap": "^8.7.1", "sass": "^1.29.0", + "slick-carousel": "^1.8.1", "url": "^0.11.0", "yaml-frontmatter-loader": "^0.1.0", "yaml-import-loader": "^1.3.6" diff --git a/pages/terms2/index.jsx b/pages/terms2/index.jsx new file mode 100644 index 000000000..9c2fcde2d --- /dev/null +++ b/pages/terms2/index.jsx @@ -0,0 +1,13 @@ +import React from 'react' + +import textData from '../../data/terms.yml' +import { Page } from '../../components' +import TermsPageTemplate from '../../templates/term' + +const TermsPage2 = () => ( + + + +) + +export default TermsPage2 diff --git a/public/images/membership/belfast.png b/public/images/membership/belfast.png new file mode 100644 index 000000000..8b24f1646 Binary files /dev/null and b/public/images/membership/belfast.png differ diff --git a/public/images/membership/bristol.svg b/public/images/membership/bristol.svg new file mode 100644 index 000000000..3a28d3eda --- /dev/null +++ b/public/images/membership/bristol.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/membership/carouselArrowLeft.svg b/public/images/membership/carouselArrowLeft.svg new file mode 100644 index 000000000..2bd9c6380 --- /dev/null +++ b/public/images/membership/carouselArrowLeft.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/membership/carouselArrowRight.svg b/public/images/membership/carouselArrowRight.svg new file mode 100644 index 000000000..45f038250 --- /dev/null +++ b/public/images/membership/carouselArrowRight.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/membership/city.svg b/public/images/membership/city.svg new file mode 100644 index 000000000..1112babcf --- /dev/null +++ b/public/images/membership/city.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/membership/flyer.svg b/public/images/membership/flyer.svg new file mode 100644 index 000000000..85bd0b360 --- /dev/null +++ b/public/images/membership/flyer.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/public/images/membership/george.svg b/public/images/membership/george.svg new file mode 100644 index 000000000..fdc12dbdd --- /dev/null +++ b/public/images/membership/george.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/membership/kent.png b/public/images/membership/kent.png new file mode 100644 index 000000000..1ce8b9627 Binary files /dev/null and b/public/images/membership/kent.png differ diff --git a/public/images/membership/lancaster.svg b/public/images/membership/lancaster.svg new file mode 100644 index 000000000..de0c4e8d8 --- /dev/null +++ b/public/images/membership/lancaster.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/membership/listIcon.svg b/public/images/membership/listIcon.svg new file mode 100644 index 000000000..8cdd08e6f --- /dev/null +++ b/public/images/membership/listIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/membership/presentation.svg b/public/images/membership/presentation.svg new file mode 100644 index 000000000..6b9b0fb0c --- /dev/null +++ b/public/images/membership/presentation.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/public/images/membership/sussex.svg b/public/images/membership/sussex.svg new file mode 100644 index 000000000..36491df5e --- /dev/null +++ b/public/images/membership/sussex.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/public/images/membership/video.svg b/public/images/membership/video.svg new file mode 100644 index 000000000..0a79001da --- /dev/null +++ b/public/images/membership/video.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/templates/membership/details-table.jsx b/templates/membership/details-table.jsx index 058e3d60c..c30d85e6c 100644 --- a/templates/membership/details-table.jsx +++ b/templates/membership/details-table.jsx @@ -1,21 +1,56 @@ -import React from 'react' +import React, { useEffect, useState } from 'react' +import { Button } from '@oacore/design/lib/elements' import styles from './styles.module.scss' import useTable from './hooks/useTable' +import { Markdown } from '../../components' import { MembershipTable, Section, TextBox } from 'design-v2/components' -const DetailsTable = ({ data }) => { +const DetailsTable = ({ data, howItWorksOption }) => { const { visibleTable, toggleVisibleTable } = useTable() + const [pathType, setPathType] = useState(false) + + useEffect(() => { + const path = window?.location?.pathname + setPathType(path.includes('/membership/')) + }, []) + return ( -
- +
+ {howItWorksOption || !pathType ? ( +
+
+ {data.howItWorks?.title} +
+
+

{data.howItWorks?.title}

+ {data.howItWorks?.description} + {data.howItWorks?.action && ( + + )} +
+
+ ) : ( + + )} {visibleTable && ( { const [open, setOpen] = useState(false) @@ -41,6 +43,13 @@ const DetailsBox = ({ title, description }) => { ) } +const CardDescription = ({ plan }) => ( +
+
{plan.title}
+ {plan.content} +
+) + const Card = ({ plan }) => (
@@ -62,12 +71,15 @@ const Card = ({ plan }) => ( )}
    {plan.advantages.map((advantage) => ( -
  • - -
  • +
    + listIcon +
  • + +
  • +
    ))}
@@ -75,78 +87,136 @@ const Card = ({ plan }) => ( {plan.action.title}
+ {plan.subscribe ? ( + {plan.subscribe} + ) : ( + '' + )}
) -const MembershipPageTemplate = ({ data }) => ( - -
-
-

{data.header.title}

+const MembershipPageTemplate = ({ data }) => { + const [visibleVideo, setVisibleVideo] = React.useState(false) - - {data.header.description} - -
- {data.header.actions.map((action) => ( - - ))} -
-
-
- logo -
-
-
-

{data.plans.title}

-
- {data.plans.cards.map((plan) => ( - + return ( + +
+ {data.headerLink.map((item) => ( + + {item.link} + ))}
-
- -
-

{data.support.title}

- - {data.support.description} - -
- {data.support.cards.map((card) => ( -
- {card.title} -
{card.title}
-

{card.caption}

+
+
+

{data.header.title}

+ + {data.header.description} + +
+ {data.header.actions.map((action) => ( + + ))}
- ))} -
-
- {data.support.members.title} -
- {data.support.members.children.map((member) => ( -
- - {member.name} - +
+
+ logo +
+
+
+

{data.plans.title}

+
+ {data.plans.cardsDescription.map((plan) => ( + + ))} +
+
+ {data.plans.cards.map((plan) => ( + + ))} +
+
+
+ + {data.carousel.items.map((slide) => ( + logo + ))} + + +
+ +
+

{data.support.title}

+ + {data.support.description} + +
+ {data.support.cards.map((card) => ( +
+ {card.title} +
{card.title}
+

{card.caption}

))}
-
-
-
-) +
+
+

{data.materials.title}

+
+ {data.materials.cards.map((card) => ( +
+ +
+ +
+ {card.video && ( +
+ ))} +
+
+ + ) +} export default MembershipPageTemplate diff --git a/templates/membership/styles.module.scss b/templates/membership/styles.module.scss index 4d54bf319..3609dfb9e 100644 --- a/templates/membership/styles.module.scss +++ b/templates/membership/styles.module.scss @@ -1,6 +1,18 @@ $card-header-color: #fef5ef; $support-card-width: 21.5rem; $member-image-width: 102px; +$grid-responsive-for-sections: repeat(auto-fit, minmax(300px, 1fr)); + +.nav-wrapper { + display: flex; + gap: 24px; + .link-item { + color: #666666; + &:hover { + text-decoration: none; + } + } +} .header { display: flex; @@ -45,6 +57,18 @@ $member-image-width: 102px; display: grid; grid-gap: 3rem; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + .member-description { + background: #f5f5f5; + padding: 16px; + margin: 21px 0 45px 0; + .member-description-title { + font-style: normal; + font-weight: 500; + font-size: 20px; + margin-bottom: 16px; + color: #b75400; + } + } } .plan { @@ -69,11 +93,14 @@ $member-image-width: 102px; } &-advantages { width: 100%; - list-style: disc; - li { - margin-left: 1rem; - line-height: 2; - color: var(--gray-800); + .listWrapper { + display: flex; + align-items: flex-start; + li { + margin-left: 0.5rem; + line-height: 2; + color: var(--gray-800); + } } .box { @@ -109,13 +136,25 @@ $member-image-width: 102px; display: flex; flex-direction: column; padding: 2rem; - min-height: 32rem; + min-height: 37rem; border: 1px solid var(--gray-200); &-button { margin-top: auto; text-align: center; } + .subscription { + text-align: center; + margin-top: 30px; + background: #f5f5f5; + padding: 10px 14px; + p { + color: #424242; + } + a { + color: var(--primary); + } + } } &-box { padding: 0.5rem 0; @@ -132,6 +171,24 @@ $member-image-width: 102px; } } +.carousel-wrapper { + .carousel-items { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(212px, 1fr)); + grid-gap: 35px; + } +} + +.link-wrapper { + display: flex; + justify-content: flex-end; + align-items: flex-end; + margin-top: 50px; + a { + text-decoration: underline; + } +} + .table { margin-top: 2rem; } @@ -205,8 +262,35 @@ $member-image-width: 102px; } } +.cards-wrapper { + display: grid; + grid-template-columns: repeat(auto-fill, minmax($support-card-width, 1fr)); + grid-gap: 1rem; + margin-top: 2rem; + .materials-card { + display: flex; + justify-content: center; + flex-direction: column; + .button-wrapper { + width: 100%; + display: flex; + justify-content: center; + .material-button { + margin-top: 24px; + text-align: center; + width: max-content; + background: #fff; + cursor: pointer; + &:hover { + background: #fff; + } + } + } + } +} + .support-text { - max-width: 90ch; + max-width: 80ch; } .fee-section { @@ -237,3 +321,30 @@ $member-image-width: 102px; gap: 1rem; flex-wrap: wrap; } + +.how-it-works { + display: grid; + grid-template-columns: $grid-responsive-for-sections; + align-items: center; + .content { + .button { + float: right; + margin-top: 2rem; + background: #fff; + &:hover { + background: #fff; + } + } + } +} + +.arrow { + position: absolute; + top: 100px; +} + +.carousel-item { + margin: 0 35px; + -webkit-filter: grayscale(100%); + filter: grayscale(100%); +} diff --git a/templates/term/index.jsx b/templates/term/index.jsx new file mode 100644 index 000000000..658d8b4c0 --- /dev/null +++ b/templates/term/index.jsx @@ -0,0 +1,55 @@ +import React from 'react' +import { Button } from '@oacore/design/lib/elements' + +import styles from './styles.module.scss' +import { Layout, Section } from '../../design-v2/components' +import { Markdown } from '../../components' + +const TermsPageTemplate = ({ data }) => ( + +
+
+

{data.header.title}

+ + {data.header.description} + +
+ {data.header.actions.map((action) => ( + + ))} +
+
+
+
+
+ {data.main[0].mainItems.map((mainItem) => ( +
+

{mainItem.title}

+ {mainItem.content} +
+ ))} +
+
+ {data.main[1].mainItems.map((mainItem) => ( +
+

{mainItem.title}

+ {mainItem.content} +
+ ))} +
+
+
+

{data.additional.title}

+ {data.additional.content} +
+
+) +export default TermsPageTemplate diff --git a/templates/term/styles.module.scss b/templates/term/styles.module.scss new file mode 100644 index 000000000..7dcd3ff10 --- /dev/null +++ b/templates/term/styles.module.scss @@ -0,0 +1,66 @@ +@import 'design-v2/variables'; + +.header { + .title { + font-style: normal; + font-weight: 700; + font-size: 44px; + line-height: 60px; + color: #000000; + } + .description { + font-style: normal; + font-weight: 400; + font-size: 16px; + line-height: 24px; + color: #616161; + } + .buttonGroup { + margin-top: 24px; + } +} +.content-wrapper { + display: flex; + justify-content: space-between; + flex-wrap: wrap-reverse; + .content-item { + width: 48%; + .item { + margin-bottom: 44px; + ul { + margin-left: 1.5rem; + li { + line-height: 2rem; + list-style-type: disc; + } + } + .main-title { + font-style: normal; + font-weight: 500; + font-size: 24px; + line-height: 24px; + color: #212121; + } + } + @media (max-width: $breakpoint-sm) { + width: 100%; + } + } +} +.additional-item { + margin-bottom: 65px; + .main-title { + font-style: normal; + font-weight: 500; + font-size: 24px; + line-height: 24px; + color: #212121; + } + .main-content { + font-style: normal; + font-weight: 400; + font-size: 16px; + line-height: 24px; + color: #212121; + } +}