From 9961ada6c7e03b52faa844508fa4855e1696ff71 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Wed, 5 Jun 2024 19:11:21 +0800 Subject: [PATCH 1/6] Match latest UX a bit more closely for just read --- packages/web/components/elements/Button.tsx | 10 + .../web/components/elements/Pagination.tsx | 51 +- .../icons/home/AddToLibraryActionIcon.tsx | 9 +- .../elements/icons/home/ArchiveActionIcon.tsx | 14 +- .../elements/icons/home/CommentActionIcon.tsx | 9 +- .../elements/icons/home/RemoveActionIcon.tsx | 18 +- .../elements/icons/home/ShareActionIcon.tsx | 10 +- .../templates/navMenu/LibraryMenu.tsx | 21 +- .../templates/navMenu/NavigationMenu.tsx | 1074 +++++++++++++++++ .../web/components/tokens/stitches.config.ts | 3 + packages/web/pages/justread/index.tsx | 268 +++- 11 files changed, 1406 insertions(+), 81 deletions(-) create mode 100644 packages/web/components/templates/navMenu/NavigationMenu.tsx diff --git a/packages/web/components/elements/Button.tsx b/packages/web/components/elements/Button.tsx index 69eb8ac72..e0a999ce3 100644 --- a/packages/web/components/elements/Button.tsx +++ b/packages/web/components/elements/Button.tsx @@ -428,6 +428,16 @@ export const Button = styled('button', { opacity: 0.8, }, }, + homeAction: { + display: 'flex', + color: 'transparent', + border: 'none', + bg: 'transparent', + cursor: 'pointer', + p: '5px', + borderRadius: '5px', + '&:hover': { bg: '$readerHoverBg', opacity: '1' }, + }, themeSwitch: { p: '0px', m: '0px', diff --git a/packages/web/components/elements/Pagination.tsx b/packages/web/components/elements/Pagination.tsx index 595f130ec..2d36cdb59 100644 --- a/packages/web/components/elements/Pagination.tsx +++ b/packages/web/components/elements/Pagination.tsx @@ -1,45 +1,60 @@ -import React, { useState } from 'react' +import React, { useCallback, useMemo, useState } from 'react' import { Button } from './Button' import { HStack, VStack } from './LayoutPrimitives' type PaginationProps = { items: T[] itemsPerPage: number + loadMoreButtonText?: string render: (item: T) => React.ReactNode } const Pagination = ({ items, itemsPerPage, + loadMoreButtonText, render, }: PaginationProps) => { const [currentPage, setCurrentPage] = useState(1) const maxPage = Math.ceil(items.length / itemsPerPage) - function createChangePageHandler(page: number) { - return function handlePageChange() { - setCurrentPage(page) - } - } + const incrementCurrentPage = useCallback(() => { + setCurrentPage(currentPage + 1) + }, [currentPage, setCurrentPage]) - const itemsToShow = items.slice( - (currentPage - 1) * itemsPerPage, - currentPage * itemsPerPage - ) + const itemsToShow = useMemo(() => { + const count = currentPage * itemsPerPage + return items.slice(0, count) + }, [items, currentPage, itemsPerPage]) return ( - + {itemsToShow.map(render)} - - {Array.from({ length: maxPage }, (_, i) => i + 1).map((pageNum) => ( + + {currentPage < maxPage && ( - ))} + )} ) diff --git a/packages/web/components/elements/icons/home/AddToLibraryActionIcon.tsx b/packages/web/components/elements/icons/home/AddToLibraryActionIcon.tsx index e42a1bb8a..b2db19fe2 100644 --- a/packages/web/components/elements/icons/home/AddToLibraryActionIcon.tsx +++ b/packages/web/components/elements/icons/home/AddToLibraryActionIcon.tsx @@ -11,16 +11,15 @@ export class AddToLibraryActionIcon extends React.Component { return ( - { render() { const strokeColor = (this.props.color || '#D9D9D9').toString() - const backgroundColor = (this.props.color || '#3D3D3D').toString() return ( - { return ( - { render() { const strokeColor = (this.props.color || '#D9D9D9').toString() - const backgroundColor = (this.props.color || '#3D3D3D').toString() return ( - { render() { const strokeColor = (this.props.color || '#D9D9D9').toString() - const backgroundColor = (this.props.color || '#3D3D3D').toString() return ( - - - + + ) } + +// const SiteSourceHoverContent = ( +// props: SourceHoverContentProps +// ): JSX.Element => { +// const sendHomeFeedback = useCallback( +// async (feedbackType: SendHomeFeedbackType) => { +// const feedback: SendHomeFeedbackInput = { +// feedbackType, +// } +// feedback.site = props.source.name +// const result = await sendHomeFeedbackMutation(feedback) +// if (result) { +// showSuccessToast('Feedback sent') +// } else { +// showErrorToast('Error sending feedback') +// } +// }, +// [props] +// ) + +// return ( +// +// +// {props.source.icon && ( +// +// )} +// +// {props.source.name} +// +// +// {/* +// {subscription ? <>{subscription.description} : <>} +// */} +// +// +// ) +// } + +type FeedbackViewProps = { + sendFeedback: (type: SendHomeFeedbackType) => void +} + +const FeedbackView = (props: FeedbackViewProps): JSX.Element => { + return ( + + + + + ) +} + +type HeaderProps = { + toggleMenu: () => void +} + +const Header = (props: HeaderProps): JSX.Element => { + const small = false + + return ( + + + + + + ) +} From c4d8be60940486c77743ffec4c109b9c8b454933 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Wed, 5 Jun 2024 19:20:54 +0800 Subject: [PATCH 2/6] Linting --- packages/web/pages/justread/index.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/web/pages/justread/index.tsx b/packages/web/pages/justread/index.tsx index 877707db0..0a2707d5b 100644 --- a/packages/web/pages/justread/index.tsx +++ b/packages/web/pages/justread/index.tsx @@ -61,8 +61,10 @@ export default function Home(): JSX.Element { /> {showLeftMenu && ( {}} searchTerm={''} + // eslint-disable-next-line @typescript-eslint/no-empty-function applySearchQuery={(searchQuery: string) => {}} showFilterMenu={showLeftMenu} setShowFilterMenu={(show) => { From 9861822d8f8df515c2049cd78f29c60c6ae95855 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Wed, 5 Jun 2024 19:26:36 +0800 Subject: [PATCH 3/6] Comment out feedback buttons --- packages/web/pages/justread/index.tsx | 58 +++++++++++++-------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/packages/web/pages/justread/index.tsx b/packages/web/pages/justread/index.tsx index 0a2707d5b..409408f4f 100644 --- a/packages/web/pages/justread/index.tsx +++ b/packages/web/pages/justread/index.tsx @@ -724,36 +724,36 @@ const SubscriptionSourceHoverContent = ( // ) // } -type FeedbackViewProps = { - sendFeedback: (type: SendHomeFeedbackType) => void -} +// type FeedbackViewProps = { +// sendFeedback: (type: SendHomeFeedbackType) => void +// } -const FeedbackView = (props: FeedbackViewProps): JSX.Element => { - return ( - - - - - ) -} +// const FeedbackView = (props: FeedbackViewProps): JSX.Element => { +// return ( +// +// +// +// +// ) +// } type HeaderProps = { toggleMenu: () => void From 136baf80e4b0725bf240e3bb568788758515a8ec Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 6 Jun 2024 11:10:52 +0800 Subject: [PATCH 4/6] Revert LibraryMenu changes --- .../templates/navMenu/LibraryMenu.tsx | 21 +++++-------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/packages/web/components/templates/navMenu/LibraryMenu.tsx b/packages/web/components/templates/navMenu/LibraryMenu.tsx index 367480623..e39923bca 100644 --- a/packages/web/components/templates/navMenu/LibraryMenu.tsx +++ b/packages/web/components/templates/navMenu/LibraryMenu.tsx @@ -2,7 +2,7 @@ import { ReactNode, useEffect, useMemo, useRef, useState } from 'react' import { StyledText } from '../../elements/StyledText' import { Box, HStack, SpanBox, VStack } from '../../elements/LayoutPrimitives' import { Button } from '../../elements/Button' -import { Circle, DotsThree, List, MagnifyingGlass, X } from 'phosphor-react' +import { Circle, DotsThree, MagnifyingGlass, X } from 'phosphor-react' import { Subscription, SubscriptionType, @@ -122,9 +122,9 @@ export function LibraryFilterMenu(props: LibraryFilterMenuProps): JSX.Element { - - + + - +