diff --git a/packages/web/components/elements/Table.tsx b/packages/web/components/elements/Table.tsx index 94945f1cf..38ba1587f 100644 --- a/packages/web/components/elements/Table.tsx +++ b/packages/web/components/elements/Table.tsx @@ -178,6 +178,7 @@ export function Table(props: TableProps): JSX.Element { borderBottomLeftRadius: index == props.rows.length - 1 ? '5px' : '', borderBottomRightRadius: index == props.rows.length - 1 ? '5px' : '', + padding: '10px 20px 10px 40px', }} > { - props.onDelete(row[0]) + props.onDelete && props.onDelete(row[0]) }} > diff --git a/packages/web/components/patterns/DropdownMenu.tsx b/packages/web/components/patterns/DropdownMenu.tsx index 317af1ade..074a32e22 100644 --- a/packages/web/components/patterns/DropdownMenu.tsx +++ b/packages/web/components/patterns/DropdownMenu.tsx @@ -1,9 +1,9 @@ import { ReactNode, useMemo, useState } from 'react' -import { Box, HStack, VStack } from './../elements/LayoutPrimitives' +import { HStack, VStack } from './../elements/LayoutPrimitives' import { Dropdown, - DropdownSeparator, DropdownOption, + DropdownSeparator, } from '../elements/DropdownElements' import { StyledText } from '../elements/StyledText' import { Button } from '../elements/Button' @@ -18,6 +18,7 @@ export type HeaderDropdownAction = | 'navigate-to-emails' | 'navigate-to-labels' | 'navigate-to-profile' + | 'navigate-to-subscriptions' | 'increaseFontSize' | 'decreaseFontSize' | 'logout' @@ -38,19 +39,27 @@ export function DropdownMenu(props: DropdownMenuProps): JSX.Element { return ( - Theme + Theme - - @@ -67,6 +76,10 @@ export function DropdownMenu(props: DropdownMenuProps): JSX.Element { onSelect={() => props.actionHandler('navigate-to-labels')} title="Labels" /> + props.actionHandler('navigate-to-subscriptions')} + title="Subscriptions" + /> window.Intercom('show')} title="Feedback" diff --git a/packages/web/components/patterns/PrimaryHeader.tsx b/packages/web/components/patterns/PrimaryHeader.tsx index 12c7e4754..79d7b8e4b 100644 --- a/packages/web/components/patterns/PrimaryHeader.tsx +++ b/packages/web/components/patterns/PrimaryHeader.tsx @@ -1,9 +1,9 @@ -import { Box, HStack, SpanBox } from '../elements/LayoutPrimitives' +import { Box, HStack } from '../elements/LayoutPrimitives' import { OmnivoreNameLogo } from './../elements/images/OmnivoreNameLogo' import { DropdownMenu, HeaderDropdownAction } from './../patterns/DropdownMenu' -import { updateTheme } from '../../lib/themeUpdater' +import { darkenTheme, lightenTheme, updateTheme } from '../../lib/themeUpdater' import { AvatarDropdown } from './../elements/AvatarDropdown' -import { theme, ThemeId } from './../tokens/stitches.config' +import { ThemeId } from './../tokens/stitches.config' import { useCallback, useEffect, useState } from 'react' import { ScrollOffsetChangeset, @@ -12,7 +12,6 @@ import { import { useRouter } from 'next/router' import { useKeyboardShortcuts } from '../../lib/keyboardShortcuts/useKeyboardShortcuts' import { primaryCommands } from '../../lib/keyboardShortcuts/navigationShortcuts' -import { darkenTheme, lightenTheme } from '../../lib/themeUpdater' import { UserBasicData } from '../../lib/networking/queries/useGetViewerQuery' import { setupAnalytics } from '../../lib/analytics' import { Button } from '../elements/Button' @@ -111,6 +110,9 @@ export function PrimaryHeader(props: HeaderProps): JSX.Element { router.push(`/${props.user.profile.username}`) } break + case 'navigate-to-subscriptions': + router.push('/settings/subscriptions') + break case 'logout': props.setShowLogoutConfirmation(true) break @@ -187,13 +189,17 @@ function NavHeader(props: NavHeaderProps): JSX.Element { {props.toolbarControl && ( - {props.toolbarControl} diff --git a/packages/web/pages/settings/subscriptions.tsx b/packages/web/pages/settings/subscriptions.tsx index ec9d7cab5..fba1a7b43 100644 --- a/packages/web/pages/settings/subscriptions.tsx +++ b/packages/web/pages/settings/subscriptions.tsx @@ -59,6 +59,19 @@ export default function SubscriptionsPage(): JSX.Element { rows={rows} onDelete={setConfirmUnsubscribeName} /> + + {/* TODO: Dynamically loaded from API response */} + ) }