From 1c3bc51fd0fe3b3cf5933c77c77cd5d590d3ec23 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Mon, 6 Nov 2023 17:43:23 +0800 Subject: [PATCH] Move pinned items into the grid --- packages/web/components/elements/Button.tsx | 16 ++++- .../templates/homeFeed/HeaderSpacer.tsx | 2 +- .../templates/homeFeed/HomeFeedContainer.tsx | 67 +++++++++++++++++++ .../templates/homeFeed/LibraryHeader.tsx | 64 ++++-------------- 4 files changed, 96 insertions(+), 53 deletions(-) diff --git a/packages/web/components/elements/Button.tsx b/packages/web/components/elements/Button.tsx index 08459b130..d48c8cb2c 100644 --- a/packages/web/components/elements/Button.tsx +++ b/packages/web/components/elements/Button.tsx @@ -174,6 +174,7 @@ export const Button = styled('button', { }, }, ctaPill: { + cursor: 'pointer', borderRadius: '15px', px: '10px', py: '4px', @@ -184,7 +185,20 @@ export const Button = styled('button', { bg: '$grayBgActive', '&:hover': { bg: '$grayBgHover', - // border: '1px solid $grayBorderHover', + }, + }, + ctaPillUnselected: { + cursor: 'pointer', + borderRadius: '15px', + px: '10px', + py: '4px', + font: '$inter', + fontSize: '12px', + fontWeight: 'medium', + border: '1px solid transparent', + bg: 'transparent', + '&:hover': { + bg: '$grayBgHover', }, }, link: { diff --git a/packages/web/components/templates/homeFeed/HeaderSpacer.tsx b/packages/web/components/templates/homeFeed/HeaderSpacer.tsx index ef4cd6d13..080a5f43c 100644 --- a/packages/web/components/templates/homeFeed/HeaderSpacer.tsx +++ b/packages/web/components/templates/homeFeed/HeaderSpacer.tsx @@ -1,6 +1,6 @@ import { Box } from '../../elements/LayoutPrimitives' -export const HEADER_HEIGHT = '110px' +export const HEADER_HEIGHT = '70px' export function HeaderSpacer(): JSX.Element { return ( diff --git a/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx b/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx index 7ca5aa271..c04e55c8c 100644 --- a/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx +++ b/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx @@ -51,6 +51,8 @@ import { NotebookPresenter } from '../article/NotebookPresenter' import { saveUrlMutation } from '../../../lib/networking/mutations/saveUrlMutation' import { articleQuery } from '../../../lib/networking/queries/useGetArticleQuery' import { searchQuery } from '../../../lib/networking/queries/search' +import { MoreOptionsIcon } from '../../elements/images/MoreOptionsIcon' +import { theme } from '../../tokens/stitches.config' export type LayoutType = 'LIST_LAYOUT' | 'GRID_LAYOUT' export type LibraryMode = 'reads' | 'highlights' @@ -1019,6 +1021,61 @@ function HomeFeedGrid(props: HomeFeedContentProps): JSX.Element { ) } +type PinnedItem = { + title: string + search: string +} + +type PinnedButtonsProps = { + items: PinnedItem[] + searchTerm: string | undefined + applySearchQuery: (searchQuery: string) => void +} + +const PinnedButtons = (props: PinnedButtonsProps): JSX.Element => { + if (!props.items.length) { + return <> + } + + return ( + + {props.items.map((item) => { + const style = + item.search == props.searchTerm ? 'ctaPill' : 'ctaPillUnselected' + return ( + + ) + })} + + + ) +} + type LibraryItemsLayoutProps = { layout: LayoutType viewer?: UserBasicData @@ -1057,6 +1114,16 @@ function LibraryItemsLayout(props: LibraryItemsLayoutProps): JSX.Element { > + + {props.isValidating && props.items.length == 0 && }
{ diff --git a/packages/web/components/templates/homeFeed/LibraryHeader.tsx b/packages/web/components/templates/homeFeed/LibraryHeader.tsx index 63ec91d74..d8d2340ff 100644 --- a/packages/web/components/templates/homeFeed/LibraryHeader.tsx +++ b/packages/web/components/templates/homeFeed/LibraryHeader.tsx @@ -107,34 +107,19 @@ function LargeHeaderLayout(props: LibraryHeaderProps): JSX.Element { }, }} > - - - - + ) } @@ -416,29 +401,6 @@ export function SearchBox(props: SearchBoxProps): JSX.Element { ) } -const PinnedButtons = (): JSX.Element => { - return ( - - - - - - - - - ) -} - type ControlButtonBoxProps = { layout: LayoutType updateLayout: (layout: LayoutType) => void