diff --git a/packages/web/components/elements/DropdownElements.tsx b/packages/web/components/elements/DropdownElements.tsx index 9ba1030e0..66dd5aa8f 100644 --- a/packages/web/components/elements/DropdownElements.tsx +++ b/packages/web/components/elements/DropdownElements.tsx @@ -12,11 +12,11 @@ import { PopperContentProps } from '@radix-ui/react-popover' import { CSS } from '@stitches/react' import { styled } from './../tokens/stitches.config' -const itemStyles = { - fontSize: '16px', - fontWeight: '500', - py: '12px', - px: '24px', +const StyledItem = styled(Item, { + fontSize: '14px', + fontWeight: '400', + py: '10px', + px: '15px', borderRadius: 3, cursor: 'default', color: '$utilityTextDefault', @@ -25,9 +25,7 @@ const itemStyles = { outline: 'none', backgroundColor: '$grayBgHover', }, -} - -const StyledItem = styled(Item, itemStyles) +}) const DropdownTrigger = styled(Trigger, { fontSize: '100%', @@ -44,7 +42,6 @@ const StyledTriggerItem = styled(TriggerItem, { outline: 'none', backgroundColor: '$grayBgHover', }, - ...itemStyles, }) export const DropdownContent = styled(Content, { diff --git a/packages/web/components/patterns/LibraryCards/LibraryGridCard.tsx b/packages/web/components/patterns/LibraryCards/LibraryGridCard.tsx index b6f284837..45c842056 100644 --- a/packages/web/components/patterns/LibraryCards/LibraryGridCard.tsx +++ b/packages/web/components/patterns/LibraryCards/LibraryGridCard.tsx @@ -173,7 +173,7 @@ export function LibraryGridCard(props: LinkedItemCardProps): JSX.Element { {props.item.title} diff --git a/packages/web/components/patterns/LibraryCards/LibraryListCard.tsx b/packages/web/components/patterns/LibraryCards/LibraryListCard.tsx index af9363975..148431290 100644 --- a/packages/web/components/patterns/LibraryCards/LibraryListCard.tsx +++ b/packages/web/components/patterns/LibraryCards/LibraryListCard.tsx @@ -155,7 +155,7 @@ export function LibraryListCard(props: LinkedItemCardProps): JSX.Element { fontSize: '16px', fontWeight: '700', lineHeight: '1.25', - maxWidth: '1200px', + maxWidth: '80%', fontFamily: '$display', overflow: 'hidden', textOverflow: 'ellipsis', diff --git a/packages/web/components/templates/PrimaryDropdown.tsx b/packages/web/components/templates/PrimaryDropdown.tsx index 81bae0cda..6da5e01e4 100644 --- a/packages/web/components/templates/PrimaryDropdown.tsx +++ b/packages/web/components/templates/PrimaryDropdown.tsx @@ -1,16 +1,23 @@ import { useRouter } from 'next/router' -import { Check } from 'phosphor-react' -import { ReactNode, useCallback, useMemo, useState } from 'react' +import { Check, Moon, Sun, UserSwitch } from 'phosphor-react' +import { ReactNode, useCallback, useEffect, useMemo, useState } from 'react' import { useGetViewerQuery } from '../../lib/networking/queries/useGetViewerQuery' import { currentThemeName, updateTheme } from '../../lib/themeUpdater' +import { Avatar } from '../elements/Avatar' import { AvatarDropdown } from '../elements/AvatarDropdown' import { Button } from '../elements/Button' -import { Dropdown, DropdownOption } from '../elements/DropdownElements' -import { Box, HStack, VStack } from '../elements/LayoutPrimitives' +import { + Dropdown, + DropdownOption, + DropdownSeparator, +} from '../elements/DropdownElements' +import GridLayoutIcon from '../elements/images/GridLayoutIcon' +import ListLayoutIcon from '../elements/images/ListLayoutIcon' +import { Box, HStack, SpanBox, VStack } from '../elements/LayoutPrimitives' import { Separator } from '../elements/Separator' import { StyledText } from '../elements/StyledText' import { DropdownMenu } from '../patterns/DropdownMenu' -import { ThemeId } from '../tokens/stitches.config' +import { styled, theme, ThemeId } from '../tokens/stitches.config' import { LayoutType } from './homeFeed/HomeFeedContainer' type PrimaryDropdownProps = { @@ -79,13 +86,64 @@ export function PrimaryDropdown(props: PrimaryDropdownProps): JSX.Element { ) } + css={{ width: '240px' }} > - {props.showThemeSection && ( - - + + + + {viewerData.me && ( + <> + + {viewerData.me.name} + + + {`@${viewerData.me.profile.username}`} + + + )} - )} - {props.layout == 'LIST_LAYOUT' && ( + + + {props.showThemeSection && } + {/* {props.layout == 'LIST_LAYOUT' && ( props.updateLayout && props.updateLayout('GRID_LAYOUT') @@ -103,7 +161,8 @@ export function PrimaryDropdown(props: PrimaryDropdownProps): JSX.Element { /> - )} + )} */} + headerDropdownActionHandler('navigate-to-install')} title="Install" @@ -132,6 +191,7 @@ export function PrimaryDropdown(props: PrimaryDropdownProps): JSX.Element { onSelect={() => window.Intercom('show')} title="Feedback" /> + headerDropdownActionHandler('logout')} title="Logout" @@ -140,40 +200,136 @@ export function PrimaryDropdown(props: PrimaryDropdownProps): JSX.Element { ) } -function ThemeSection(): JSX.Element { +const StyledToggleButton = styled('button', { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + color: '$thTextContrast2', + backgroundColor: 'transparent', + border: 'none', + cursor: 'pointer', + width: '70px', + height: '100%', + borderRadius: '5px', + fontSize: '12px', + fontFamily: '$inter', + gap: '5px', + m: '2px', + '&:hover': { + opacity: 0.8, + }, + '&[data-state="on"]': { + bg: '$thBackground', + }, +}) + +function ThemeSection(props: PrimaryDropdownProps): JSX.Element { const [currentTheme, setCurrentTheme] = useState(currentThemeName()) - const isDark = useMemo(() => { - return currentTheme === 'Dark' || currentTheme === 'Darker' - }, [currentTheme]) - return ( - <> - Theme - - - + { + updateTheme(ThemeId.Light) + setCurrentTheme(ThemeId.Light) + }} + > + Light + + + { + updateTheme(ThemeId.Dark) + setCurrentTheme(ThemeId.Dark) + }} + > + Dark + + + - + {props.layout && ( + + + Layout + + + { + props.updateLayout && props.updateLayout('LIST_LAYOUT') + }} + > + + + { + props.updateLayout && props.updateLayout('GRID_LAYOUT') + }} + > + + + + + )} + ) } diff --git a/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx b/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx index 6ef8d9de7..ae7a73375 100644 --- a/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx +++ b/packages/web/components/templates/homeFeed/HomeFeedContainer.tsx @@ -908,15 +908,15 @@ function HomeFeedGrid(props: HomeFeedContentProps): JSX.Element { }, '&:focus': { '> div': { - bg: '$grayBgActive', + bg: '$thBackgroundActive', }, }, '&:hover': { '> div': { - bg: '$grayBgActive', + bg: '$thBackgroundActive', }, '> a': { - bg: '$grayBgActive', + bg: '$thBackgroundActive', }, }, }} diff --git a/packages/web/components/templates/homeFeed/LibraryFilterMenu.tsx b/packages/web/components/templates/homeFeed/LibraryFilterMenu.tsx index 077040717..9e827f6b4 100644 --- a/packages/web/components/templates/homeFeed/LibraryFilterMenu.tsx +++ b/packages/web/components/templates/homeFeed/LibraryFilterMenu.tsx @@ -197,7 +197,7 @@ function MenuPanel(props: MenuPanelProps): JSX.Element { } diff --git a/packages/web/components/tokens/stitches.config.ts b/packages/web/components/tokens/stitches.config.ts index 8de256f11..15b0338c4 100644 --- a/packages/web/components/tokens/stitches.config.ts +++ b/packages/web/components/tokens/stitches.config.ts @@ -176,6 +176,7 @@ export const { styled, css, theme, getCssText, globalCss, keyframes, config } = thBackground: '#FFFFFF', thBackground2: '#F3F3F3', thBackground3: '#FFFFFF', + thBackground4: '#EBEBEB', thBackgroundContrast: '#FFFFFF', thTextContrast: '#1E1E1E', @@ -260,6 +261,8 @@ const darkThemeSpec = { thBackground: '#2A2A2A', thBackground2: '#3D3D3D', thBackground3: '#242424', + thBackground4: '#3D3D3D', + thBackgroundActive: '#2A2A2B', thBackgroundContrast: '#000000', thTextContrast: '#FFFFFF',