diff --git a/packages/web/components/templates/PrimaryDropdown.tsx b/packages/web/components/templates/PrimaryDropdown.tsx
index f28aaa415..7a01cb2cd 100644
--- a/packages/web/components/templates/PrimaryDropdown.tsx
+++ b/packages/web/components/templates/PrimaryDropdown.tsx
@@ -6,9 +6,9 @@ import { currentTheme, updateTheme } from '../../lib/themeUpdater'
import { Avatar } from '../elements/Avatar'
import { AvatarDropdown } from '../elements/AvatarDropdown'
import {
- Dropdown,
- DropdownOption,
- DropdownSeparator,
+ Dropdown,
+ DropdownOption,
+ DropdownSeparator,
} from '../elements/DropdownElements'
import GridLayoutIcon from '../elements/images/GridLayoutIcon'
import ListLayoutIcon from '../elements/images/ListLayoutIcon'
@@ -18,327 +18,335 @@ import { styled, theme, ThemeId } from '../tokens/stitches.config'
import { LayoutType } from './homeFeed/HomeFeedContainer'
type PrimaryDropdownProps = {
- children?: ReactNode
- showThemeSection: boolean
+ children?: ReactNode
+ showThemeSection: boolean
- layout?: LayoutType
- updateLayout?: (layout: LayoutType) => void
+ layout?: LayoutType
+ updateLayout?: (layout: LayoutType) => void
- showAddLinkModal?: () => void
+ showAddLinkModal?: () => void
}
export type HeaderDropdownAction =
- | 'navigate-to-install'
- | 'navigate-to-feeds'
- | 'navigate-to-emails'
- | 'navigate-to-labels'
- | 'navigate-to-profile'
- | 'navigate-to-subscriptions'
- | 'navigate-to-api'
- | 'navigate-to-integrations'
- | 'navigate-to-saved-searches'
- | 'increaseFontSize'
- | 'decreaseFontSize'
- | 'logout'
+ | 'navigate-to-install'
+ | 'navigate-to-feeds'
+ | 'navigate-to-emails'
+ | 'navigate-to-labels'
+ | 'navigate-to-rules'
+ | 'navigate-to-profile'
+ | 'navigate-to-subscriptions'
+ | 'navigate-to-api'
+ | 'navigate-to-integrations'
+ | 'navigate-to-saved-searches'
+ | 'increaseFontSize'
+ | 'decreaseFontSize'
+ | 'logout'
export function PrimaryDropdown(props: PrimaryDropdownProps): JSX.Element {
- const { viewerData } = useGetViewerQuery()
- const router = useRouter()
+ const { viewerData } = useGetViewerQuery()
+ const router = useRouter()
- const headerDropdownActionHandler = useCallback(
- (action: HeaderDropdownAction) => {
- switch (action) {
- case 'navigate-to-install':
- router.push('/settings/installation')
- break
- case 'navigate-to-feeds':
- router.push('/settings/feeds')
- break
- case 'navigate-to-emails':
- router.push('/settings/emails')
- break
- case 'navigate-to-labels':
- router.push('/settings/labels')
- break
- case 'navigate-to-subscriptions':
- router.push('/settings/subscriptions')
- break
- case 'navigate-to-api':
- router.push('/settings/api')
- break
- case 'navigate-to-integrations':
- router.push('/settings/integrations')
- break
- case 'navigate-to-saved-searches':
- router.push('/settings/saved-searches')
- break
- case 'logout':
- document.dispatchEvent(new Event('logout'))
- break
- default:
- break
- }
- },
- [router]
- )
+ const headerDropdownActionHandler = useCallback(
+ (action: HeaderDropdownAction) => {
+ switch (action) {
+ case 'navigate-to-install':
+ router.push('/settings/installation')
+ break
+ case 'navigate-to-feeds':
+ router.push('/settings/feeds')
+ break
+ case 'navigate-to-emails':
+ router.push('/settings/emails')
+ break
+ case 'navigate-to-labels':
+ router.push('/settings/labels')
+ break
+ case 'navigate-to-rules':
+ router.push('/settings/rules')
+ break
+ case 'navigate-to-subscriptions':
+ router.push('/settings/subscriptions')
+ break
+ case 'navigate-to-api':
+ router.push('/settings/api')
+ break
+ case 'navigate-to-integrations':
+ router.push('/settings/integrations')
+ break
+ case 'navigate-to-saved-searches':
+ router.push('/settings/saved-searches')
+ break
+ case 'logout':
+ document.dispatchEvent(new Event('logout'))
+ break
+ default:
+ break
+ }
+ },
+ [router]
+ )
- if (!viewerData?.me) {
- return <>>
- }
+ if (!viewerData?.me) {
+ return <>>
+ }
- return (
-
- )
- }
- css={{ width: '240px' }}
- >
- {
- router.push('/settings/account')
- event.preventDefault()
- }}
- >
-
-
+ )
+ }
+ css={{ width: '240px' }}
>
- {viewerData.me && (
- <>
-
- {viewerData.me.name}
-
- {
+ router.push('/settings/account')
+ event.preventDefault()
}}
- >
- {`@${viewerData.me.profile.username}`}
-
- >
- )}
-
-
-
- {props.showThemeSection && }
- headerDropdownActionHandler('navigate-to-install')}
- title="Install"
- />
- headerDropdownActionHandler('navigate-to-feeds')}
- title="Feeds"
- />
- headerDropdownActionHandler('navigate-to-emails')}
- title="Emails"
- />
- headerDropdownActionHandler('navigate-to-labels')}
- title="Labels"
- />
- {props.showAddLinkModal && (
- <>
-
+ >
+
+
+ {viewerData.me && (
+ <>
+
+ {viewerData.me.name}
+
+
+ {`@${viewerData.me.profile.username}`}
+
+ >
+ )}
+
+
+
+ {props.showThemeSection && }
+ headerDropdownActionHandler('navigate-to-install')}
+ title="Install"
+ />
+ headerDropdownActionHandler('navigate-to-feeds')}
+ title="Feeds"
+ />
+ headerDropdownActionHandler('navigate-to-emails')}
+ title="Emails"
+ />
+ headerDropdownActionHandler('navigate-to-labels')}
+ title="Labels"
+ />
+ headerDropdownActionHandler('navigate-to-rules')}
+ title="Rules"
+ />
+ {props.showAddLinkModal && (
+ <>
+
- props.showAddLinkModal && props.showAddLinkModal()}
- title="Add Link"
- />
- >
- )}
- headerDropdownActionHandler('navigate-to-api')}
- title="API Keys"
- />
- headerDropdownActionHandler('navigate-to-integrations')}
- title="Integrations"
- />
- window.open('https://docs.omnivore.app', '_blank')}
- title="Documentation"
- />
- window.Intercom('show')}
- title="Feedback"
- />
-
- headerDropdownActionHandler('logout')}
- title="Logout"
- />
-
- )
+ props.showAddLinkModal && props.showAddLinkModal()}
+ title="Add Link"
+ />
+ >
+ )}
+ headerDropdownActionHandler('navigate-to-api')}
+ title="API Keys"
+ />
+ headerDropdownActionHandler('navigate-to-integrations')}
+ title="Integrations"
+ />
+ window.open('https://docs.omnivore.app', '_blank')}
+ title="Documentation"
+ />
+ window.Intercom('show')}
+ title="Feedback"
+ />
+
+ headerDropdownActionHandler('logout')}
+ title="Logout"
+ />
+
+ )
}
export 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',
- },
+ 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 {
- return (
- <>
-
-
-
- Mode
-
-
- {
- updateTheme(ThemeId.Light)
- }}
- >
- Light
-
-
- {
- updateTheme(ThemeId.Dark)
- }}
- >
- Dark
-
-
-
-
- {props.layout && (
-
-
- Layout
-
-
- {
- props.updateLayout && props.updateLayout('LIST_LAYOUT')
- }}
- >
-
-
- {
- props.updateLayout && props.updateLayout('GRID_LAYOUT')
- }}
- >
-
-
-
-
- )}
-
-
- >
- )
+ return (
+ <>
+
+
+
+ Mode
+
+
+ {
+ updateTheme(ThemeId.Light)
+ }}
+ >
+ Light
+
+
+ {
+ updateTheme(ThemeId.Dark)
+ }}
+ >
+ Dark
+
+
+
+
+ {props.layout && (
+
+
+ Layout
+
+
+ {
+ props.updateLayout && props.updateLayout('LIST_LAYOUT')
+ }}
+ >
+
+
+ {
+ props.updateLayout && props.updateLayout('GRID_LAYOUT')
+ }}
+ >
+
+
+
+
+ )}
+
+
+ >
+ )
}