Skip to content

Commit

Permalink
feat: outputs
Browse files Browse the repository at this point in the history
  • Loading branch information
LucasDibz committed Jan 22, 2024
1 parent 364e5e5 commit 3a1654a
Show file tree
Hide file tree
Showing 6 changed files with 212 additions and 36 deletions.
19 changes: 7 additions & 12 deletions src/components/Book.tsx → src/components/Books.tsx
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
import { ipsers } from '../config/ipsers';
import type { Book } from '../config/outputs';

//@ts-expect-error: it exists...
const formatter = new Intl.ListFormat('en', {
style: 'long',
type: 'conjunction',
});

type Book = {
title: string;
subtitle?: string;
link?: string;
authors: string[];
};
export function Book({ book }: { book: Book }) {
export function Books({ book }: { book: Book }) {
const Tag = book?.link ? 'a' : 'div';
const TagProps = book?.link && {
href: book.link,
Expand All @@ -35,22 +30,22 @@ export function Book({ book }: { book: Book }) {
{book.authors.map((author, index) => (
<img
key={author}
className={'w-10 h-10 border-2 rounded-full'}
className={'w-12 h-12 border-2 rounded-full'}
style={{ zIndex: 10 - index }}
src={getImgSrcFromName(author)}
alt={author}
/>
))}
</div>

<div className='flex flex-col gap-1'>
<p className='font-semibold text-slate-900'>{book.title}</p>
<div className='flex flex-col gap-1 flex-1'>
<p className='font-bold text-slate-900'>{book.title}</p>
{book?.subtitle && (
<p className='text-sm text-end font-normal text-slate-700'>
<p className='italic text-xs text-end text-slate-500'>
{book.subtitle}
</p>
)}
<span className='text-sm font-normal italic text-slate-500'>
<span className=' font-semibold text-slate-600'>
{formatter.format(book.authors)}
</span>
</div>
Expand Down
4 changes: 2 additions & 2 deletions src/components/Header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ export function Header() {
key={item.href}
to={`${item.href}`}
className={({ isActive }) =>
`cursor-pointer font-semibold hover:text-rose-500 transition relative after:bg-rose-300 after:absolute after:h-[1px] after:mt-[1px] after:w-0 after:bottom-0 after:left-0 hover:after:w-full after:transition-all after:duration-300 underline-offset-4${
isActive ? ' underline text-rose-500' : ' text-slate-600'
`cursor-pointer font-semibold hover:text-slate-500 transition relative after:bg-slate-500 after:absolute after:h-[1px] after:mt-[1px] after:w-0 after:bottom-0 after:left-0 hover:after:w-full after:transition-all after:duration-300 underline-offset-4${
isActive ? ' underline text-slate-500' : ' text-slate-600'
}`
}
>
Expand Down
2 changes: 1 addition & 1 deletion src/components/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export * from './Body';
export * from './Book';
export * from './Books';
export * from './Card';
export * from './Footer';
export * from './Header';
48 changes: 47 additions & 1 deletion src/config/ipsers.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,50 @@
export const ipsers = {
export type Authors =
| 'Giulia Priora'
| 'Athina Sachoulidou'
| 'Claire Bright'
| 'Cristina Nogueira da Silva'
| 'Francisco Pereira Coutinho'
| 'João Zenha Martins'
| 'Jorge Morais Carvalho'
| 'Miguel de Azevedo Moura'
| 'Aleksandra Iugunian'
| 'Aline Arenque'
| 'Aline Bratti'
| 'Amanda Novaes'
| 'Dimitrius Costa'
| 'Diogo Brandão'
| 'Eduardo Santos'
| 'Hande Özkayagan'
| 'Inês Miguel'
| 'Júlia Schütz Veiga'
| 'Justyna Pałczyńska'
| 'Margarida Mingote'
| 'Margarida Morgado'
| 'Monyca Motta'
| 'Oumaima Derfoufi'
| 'Pedro Soares'
| 'Raquel Escada Carvalho'
| 'Rúben Ferreira'
| 'Teresa Brito e Faro'
| 'Carys Craig'
| 'João Pedro Quintais'
| 'Marco Scialdone'
| 'Pilar Montero'
| 'Raquel Cunha';

type Ipsers = {
[key: string]: {
title: string;
members: {
name: Authors;
imgSrc: string;
url: string;
hidden?: boolean;
}[];
};
};

export const ipsers: Ipsers = {
coordination: {
title: 'Coordination',
members: [
Expand Down
169 changes: 152 additions & 17 deletions src/config/outputs.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
export const outputs = [
{
import { Authors } from './ipsers';

export type Book = {
title: string;
subtitle?: string;
link?: string;
authors: Authors[];
};

type Outputs = {
[key: string]: {
title: string;
books: Book[];
};
};

export const outputs: Outputs = {
editedBooks: {
title: 'Edited books and journal issues',
books: [
{
Expand All @@ -14,7 +30,7 @@ export const outputs = [
},
],
},
{
chapters: {
title: 'Book chapters',
books: [
{
Expand All @@ -35,7 +51,7 @@ export const outputs = [
title:
'An International Instrument on Copyright and Educational Uses: Regulatory Models and Lessons',
subtitle:
'in J Schovsbo (ed) Intellectual Property Rights in Times of Crisis (Edward Elgar 2024) pp (with F Majekolagbe) Preprint available at',
'in J Schovsbo (ed) Intellectual Property Rights in Times of Crisis (Edward Elgar 2024) pp (with F Majekolagbe)',
authors: ['Giulia Priora'],
},
{
Expand Down Expand Up @@ -63,7 +79,7 @@ export const outputs = [
},
],
},
{
peerReviewed: {
title: 'Peer-reviewed journal articles',
books: [
{
Expand All @@ -89,24 +105,143 @@ export const outputs = [
},
],
},
{
title:
'CJEU grapples with the intertwined nature of private copies and retransmission of online television broadcasts',
caseComments: {
title: 'Case Comments',
books: [
{
title:
'Open Educational Resources through the European lens: Pedagogical opportunities and copyright constraints',
'CJEU grapples with the intertwined nature of private copies and retransmission of online television broadcasts',
subtitle: '(2023) JIPLP 18(10) 709-713',
link: 'https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4551810',
authors: ['Giulia Priora', 'Amanda Novaes'],
},
{
title:
"CJEU rejects Poland's challenge to preventive upload filtering to combat copyright infringement on online platforms",
subtitle: '(2022) EIPR (with BJ Jütte)',
link: 'https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4233278',
authors: ['Giulia Priora', 'Amanda Novaes'],
},
],
},
];

// {
// title: 'Title',
// subtitle: 'Subtitle',
// link: undefined,
// authors: ['A'],
// },
bookReviews: {
title: 'Book Reviews',
books: [
{
title:
'The moral boundaries of Intellectual Property from a US perspective',
subtitle: '(JLPIP, forthcoming)',
authors: ['Amanda Novaes'],
},
],
},
encyclopedia: {
title: 'Encyclopedia Entries',
books: [
{
title: 'IP Negative Spaces',
subtitle:
'in P Torremans/I Stamatoudi/BJ Jütte/P Yu (eds), Elgar Encyclopedia of Intellectual Property Law (Edward Elgar, forthcoming)',
authors: ['Giulia Priora'],
},
],
},
legalOpinions: {
title: 'Expert legal opinions',
books: [
{
title:
'Copyright limitations and exceptions for the use of digital materials in teaching and learning environments',
subtitle: 'Education International Policy brief, October 2023',
authors: ['Giulia Priora'],
},
],
},
academicBlogPosts: {
title: 'Academic Blog Posts',
books: [
{
title:
'Learn more about the Policy office hours on non-copyright limitations on public domain',
subtitle: '11 December 2023',
authors: ['Hande Özkayagan'],
link: 'https://pro.europeana.eu/post/learn-more-about-the-policy-office-hours-on-non-copyright-limitations-on-public-domain',
},
{
title:
'Genome Editing Technologies and Patent Rights: An Old Story for a New (More Sustainable) Future?',
subtitle: '5 December 2023',
authors: ['Aline Bratti'],
link: 'https://whatnext.law/2023/12/05/genome-editing-technologies-and-patent-rights-an-old-story-for-a-new-more-sustainable-future',
},
{
title: 'O caso Emicida v. Bauducco e o que é Trade Dress',
subtitle: '19 October 2023',
authors: ['Monyca Motta'],
link: 'https://www.linkedin.com/pulse/o-caso-emicida-v-bauducco-e-que-%2525C3%2525A9-trade-dress-monyca-motta%3FtrackingId=ekcMDGX8zJ573DWwXmWj7w%253D%253D/?trackingId=ekcMDGX8zJ573DWwXmWj7w%3D%3D',
},
{
title:
'Internet TV services under the scrutiny of EU copyright law: CJEU ruling in Ocilion” Kluwer Copyright Blog,',
subtitle: 'Kluwer Copyright Blog, 19 September 2023',
authors: ['Giulia Priora', 'Amanda Novaes'],
link: 'https://copyrightblog.kluweriplaw.com/2023/09/19/internet-tv-services-under-the-scrutiny-of-eu-copyright-law-cjeu-ruling-in-ocilion',
},
{
title:
'Privacy vs. publicity: Balancing the legal protection of trade secrets and whistleblowing',
subtitle: '31 July 2023',
authors: ['Aleksandra Iugunian'],
link: 'https://whatnext.law/2023/07/31/privacy-vs-publicity-balancing-the-legal-protection-of-trade-secrets-and-whistleblowing',
},
{
title: 'A legal field trip to the post-pandemic digital classroom',
subtitle: '24 July 2023.',
authors: ['Eduardo Santos'],
link: 'https://copyrightblog.kluweriplaw.com/2023/07/24/a-legal-field-trip-to-the-post-pandemic-digital-classroom',
},
{
title:
'A summary look at the Portuguese transposition of the CDSM Directive',
subtitle: 'Kluwer Copyright Blog, 27 June 2023 (with N Sousa e Silva)',
authors: ['Giulia Priora'],
link: 'https://copyrightblog.kluweriplaw.com/2023/06/27/a-summary-look-at-the-portuguese-transposition-of-the-cdsm-directive',
},
{
title:
'Tackling climate change: a story (also) about intellectual property rights and technology transfers',
subtitle: '23 May 2023',
authors: ['Júlia Schütz Veiga'],
link: 'https://whatnext.law/2023/05/23/tackling-climate-change-a-story-also-about-intellectual-property-rights-and-technology-transfers',
},
{
title:
'The Rising Importance of Snippets in Our Daily News Consumption',
subtitle: '23 December 2022',
authors: ['Inês Miguel'],
link: 'https://whatnext.law/en/2022/12/23/the-rising-importance-of-snippets-in-our-daily-news-consumption-2',
},
{
title:
"Law ain't Code: Upload filtering technologies and the CDSM Directive",
subtitle: '20 December 2022',
authors: ['Eduardo Santos'],
link: 'https://whatnext.law/en/2022/12/20/law-aint-code-upload-filtering-technologies-and-the-cdsm-directive-2',
},
{
title:
"Violazioni dei diritti d'autore online e legittimità del filtraggio in upload: la Corte di Giustizia si esprime sull'Articolo 17 della Direttiva CDSM",
subtitle: 'Diritti Comparati, 6 September 2022',
authors: ['Giulia Priora'],
link: 'https://www.diritticomparati.it/violazioni-dei-diritti-dautore-online-e-legittimita-del-filtraggio-in-upload-la-corte-di-giustizia-si-esprime-sullarticolo-17-della-direttiva-cdsm',
},
{
title:
"Empowered to negotiate or obliged to contract? Lessons from the Italian implementation of the press publishers' right",
subtitle: 'Kluwer Copyright Blog, 14 April 2022 (with U Furgal)',
authors: ['Giulia Priora'],
link: 'http://copyrightblog.kluweriplaw.com/2022/04/14/empowered-to-negotiate-or-obliged-to-contract-lessons-from-the-italian-implementation-of-the-press-publishers-right',
},
],
},
};
6 changes: 3 additions & 3 deletions src/pages/Outputs.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Body, Book, Card } from '../components';
import { Body, Books, Card } from '../components';
import { outputs } from '../config/outputs';

export function Outputs() {
Expand All @@ -7,13 +7,13 @@ export function Outputs() {
<Body.PageTitle>Scientific Outputs</Body.PageTitle>

<Body.Section>
{outputs.map((output) => (
{Object.values(outputs).map((output) => (
<Card key={output.title}>
<Card.Title>{output.title}</Card.Title>
<Card.Content>
<ol className='mt-3 divide-y divider-slate-200'>
{output.books.map((book) => (
<Book key={book.title} book={book} />
<Books key={book.title} book={book} />
))}
</ol>
</Card.Content>
Expand Down

0 comments on commit 3a1654a

Please sign in to comment.