diff --git a/.storybook/storybook.scss b/.storybook/storybook.scss
index a7881a3007c67..b0be268408fcc 100644
--- a/.storybook/storybook.scss
+++ b/.storybook/storybook.scss
@@ -4,16 +4,13 @@
.ant-modal-wrap {
z-index: 1050 !important;
}
+
.ant-select-dropdown,
.ant-picker-dropdown {
z-index: 1060 !important;
}
+
.ant-tooltip {
z-index: 1060 !important;
}
}
-
-// allow taking screenshots of a scene's main content without overlapping top bar
-.TopBar {
- position: relative !important;
-}
diff --git a/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-hidden--dark.png b/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-hidden--dark.png
index 7310c6c91ef22..eb22ddd4ddc87 100644
Binary files a/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-hidden--dark.png and b/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-hidden--dark.png differ
diff --git a/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-hidden--light.png b/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-hidden--light.png
index ff610b614db3a..14f869a1f2f41 100644
Binary files a/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-hidden--light.png and b/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-hidden--light.png differ
diff --git a/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-shown--dark.png b/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-shown--dark.png
index 972128589e3b3..eb22ddd4ddc87 100644
Binary files a/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-shown--dark.png and b/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-shown--dark.png differ
diff --git a/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-shown--light.png b/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-shown--light.png
index c056f9fe33645..ffc91a7ba2239 100644
Binary files a/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-shown--light.png and b/frontend/__snapshots__/layout-navigation--app-page-with-side-bar-shown--light.png differ
diff --git a/frontend/__snapshots__/lemon-ui-icons--shelf-m--dark.png b/frontend/__snapshots__/lemon-ui-icons--shelf-m--dark.png
index 3c9e6051e5c3b..42faa2ad5cf45 100644
Binary files a/frontend/__snapshots__/lemon-ui-icons--shelf-m--dark.png and b/frontend/__snapshots__/lemon-ui-icons--shelf-m--dark.png differ
diff --git a/frontend/__snapshots__/lemon-ui-icons--shelf-m--light.png b/frontend/__snapshots__/lemon-ui-icons--shelf-m--light.png
index 45df2af16988a..4db4dcbf7c46a 100644
Binary files a/frontend/__snapshots__/lemon-ui-icons--shelf-m--light.png and b/frontend/__snapshots__/lemon-ui-icons--shelf-m--light.png differ
diff --git a/frontend/src/layout/ErrorBoundary/ErrorBoundary.scss b/frontend/src/layout/ErrorBoundary/ErrorBoundary.scss
index 2027e62542aba..27b6e65688ae2 100644
--- a/frontend/src/layout/ErrorBoundary/ErrorBoundary.scss
+++ b/frontend/src/layout/ErrorBoundary/ErrorBoundary.scss
@@ -6,10 +6,6 @@
background: var(--danger-highlight);
border-radius: var(--radius);
- .main-app-content > & {
- margin: 1.5rem 0;
- }
-
h2 {
margin-bottom: 0.75rem;
font-weight: 600;
diff --git a/frontend/src/layout/navigation-3000/Navigation.tsx b/frontend/src/layout/navigation-3000/Navigation.tsx
index 3e6b8d722609d..16b4e9fade648 100644
--- a/frontend/src/layout/navigation-3000/Navigation.tsx
+++ b/frontend/src/layout/navigation-3000/Navigation.tsx
@@ -3,7 +3,7 @@ import './Navigation.scss'
import clsx from 'clsx'
import { useMountedLogic, useValues } from 'kea'
import { BillingAlertsV2 } from 'lib/components/BillingAlertsV2'
-import { CommandPalette } from 'lib/components/CommandPalette/CommandPalette'
+import { CommandBar } from 'lib/components/CommandBar/CommandBar'
import { FlaggedFeature } from 'lib/components/FlaggedFeature'
import { FEATURE_FLAGS } from 'lib/constants'
import { ReactNode, useEffect } from 'react'
@@ -66,7 +66,7 @@ export function Navigation({
{!mobileLayout && }
-
+
)
}
diff --git a/frontend/src/layout/navigation-3000/components/TopBar.scss b/frontend/src/layout/navigation-3000/components/TopBar.scss
index d9bd2338e54fe..3d6aca2b4aa07 100644
--- a/frontend/src/layout/navigation-3000/components/TopBar.scss
+++ b/frontend/src/layout/navigation-3000/components/TopBar.scss
@@ -1,7 +1,5 @@
// TODO: Remove legacy scss files
-@import '../../navigation/TopBar/TopBar';
@import '../../navigation/SideBar/SideBar';
-@import '../../navigation/Breadcrumbs/Breadcrumbs';
.TopBar3000 {
--breadcrumbs-compaction-rate: 0;
diff --git a/frontend/src/layout/navigation-3000/sidepanel/panels/activity/NotificationBell.tsx b/frontend/src/layout/navigation-3000/sidepanel/panels/activity/NotificationBell.tsx
deleted file mode 100644
index a83b4903c538f..0000000000000
--- a/frontend/src/layout/navigation-3000/sidepanel/panels/activity/NotificationBell.tsx
+++ /dev/null
@@ -1,70 +0,0 @@
-import './NotificationsBell.scss'
-
-import { IconChevronDown } from '@posthog/icons'
-import clsx from 'clsx'
-import { useActions, useValues } from 'kea'
-import { ActivityLogRow } from 'lib/components/ActivityLog/ActivityLog'
-import { usePageVisibility } from 'lib/hooks/usePageVisibility'
-import { IconInfo, IconNotification, IconWithCount } from 'lib/lemon-ui/icons'
-import { LemonDivider } from 'lib/lemon-ui/LemonDivider'
-import { LemonTag } from 'lib/lemon-ui/LemonTag/LemonTag'
-import { Link } from 'lib/lemon-ui/Link'
-import { Popover } from 'lib/lemon-ui/Popover/Popover'
-import { urls } from 'scenes/urls'
-
-import { notificationsLogic } from '~/layout/navigation-3000/sidepanel/panels/activity/notificationsLogic'
-
-export function NotificationBell(): JSX.Element {
- const { unreadCount, hasNotifications, notifications, isNotificationPopoverOpen, hasUnread } =
- useValues(notificationsLogic)
- const { toggleNotificationsPopover, togglePolling } = useActions(notificationsLogic)
-
- usePageVisibility((pageIsVisible) => {
- togglePolling(pageIsVisible)
- })
-
- return (
- (isNotificationPopoverOpen ? toggleNotificationsPopover() : null)}
- overlay={
-
-
- Notifications{' '}
-
- Beta
-
-
-
- Notifications shows you changes others make to{' '}
- Insights and{' '}
- Feature Flags that you created. Come join{' '}
- our community forum and tell us what else
- should be here!
-
-
- {hasNotifications ? (
- notifications.map((logItem, index) => (
-
- ))
- ) : (
-
You're all caught up
- )}
-
- }
- className="NotificationsBell-Popover"
- >
-
-
-
-
-
-
-
- )
-}
diff --git a/frontend/src/layout/navigation-3000/sidepanel/panels/activity/NotificationsBell.scss b/frontend/src/layout/navigation-3000/sidepanel/panels/activity/NotificationsBell.scss
deleted file mode 100644
index 8cc3d12d58a58..0000000000000
--- a/frontend/src/layout/navigation-3000/sidepanel/panels/activity/NotificationsBell.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-.NotificationsBell-Popover {
- z-index: var(--z-notifications-popover);
- max-height: 90vh;
-}
diff --git a/frontend/src/layout/navigation/Breadcrumbs/Breadcrumbs.scss b/frontend/src/layout/navigation/Breadcrumbs/Breadcrumbs.scss
deleted file mode 100644
index d2b210f4c7e7d..0000000000000
--- a/frontend/src/layout/navigation/Breadcrumbs/Breadcrumbs.scss
+++ /dev/null
@@ -1,34 +0,0 @@
-.Breadcrumbs {
- display: flex;
- align-items: center;
- width: 100%;
- margin-top: 1rem;
- overflow-x: auto;
- cursor: default;
-}
-
-.Breadcrumbs__breadcrumb {
- display: flex;
- gap: 0.5rem;
- align-items: center;
- font-weight: var(--font-medium);
- white-space: pre;
- user-select: none;
-
- &--current {
- color: var(--default);
- cursor: default;
- }
-
- &--actionable {
- color: var(--primary-3000);
- cursor: pointer;
- }
-}
-
-.Breadcrumbs__separator {
- flex-shrink: 0;
- margin: 0 0.5rem;
- font-size: 1rem;
- color: var(--primary-alt);
-}
diff --git a/frontend/src/layout/navigation/Breadcrumbs/Breadcrumbs.tsx b/frontend/src/layout/navigation/Breadcrumbs/Breadcrumbs.tsx
deleted file mode 100644
index 461587697bfc5..0000000000000
--- a/frontend/src/layout/navigation/Breadcrumbs/Breadcrumbs.tsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import './Breadcrumbs.scss'
-
-import { IconChevronDown } from '@posthog/icons'
-import clsx from 'clsx'
-import { useValues } from 'kea'
-import { IconChevronRight } from 'lib/lemon-ui/icons'
-import { Link } from 'lib/lemon-ui/Link'
-import { Popover } from 'lib/lemon-ui/Popover/Popover'
-import React, { useState } from 'react'
-
-import { Breadcrumb as IBreadcrumb } from '~/types'
-
-import { breadcrumbsLogic } from './breadcrumbsLogic'
-
-function Breadcrumb({ breadcrumb, index }: { breadcrumb: IBreadcrumb; index: number }): JSX.Element {
- const [popoverShown, setPopoverShown] = useState(false)
-
- let breadcrumbContent = (
-
{
- breadcrumb.popover && setPopoverShown(!popoverShown)
- }}
- data-attr={`breadcrumb-${index}`}
- >
- {breadcrumb.symbol}
- {breadcrumb.name}
- {breadcrumb.popover && }
-
- )
-
- if (breadcrumb.path) {
- breadcrumbContent = {breadcrumbContent}
- }
-
- if (breadcrumb.popover) {
- return (
- {
- if (popoverShown) {
- setPopoverShown(false)
- }
- }}
- >
- {breadcrumbContent}
-
- )
- }
-
- return breadcrumbContent
-}
-
-export function Breadcrumbs(): JSX.Element | null {
- const { firstBreadcrumb, tailBreadcrumbs } = useValues(breadcrumbsLogic)
-
- return firstBreadcrumb ? (
-
-
- {tailBreadcrumbs.map((breadcrumb, index) => (
-
-
-
-
- ))}
-
- ) : null
-}
diff --git a/frontend/src/layout/navigation/Breadcrumbs/breadcrumbsLogic.tsx b/frontend/src/layout/navigation/Breadcrumbs/breadcrumbsLogic.tsx
index ec769563d9777..7d15f44db066d 100644
--- a/frontend/src/layout/navigation/Breadcrumbs/breadcrumbsLogic.tsx
+++ b/frontend/src/layout/navigation/Breadcrumbs/breadcrumbsLogic.tsx
@@ -1,5 +1,3 @@
-import './Breadcrumbs.scss'
-
import { actions, connect, kea, listeners, path, props, reducers, selectors } from 'kea'
import { subscriptions } from 'kea-subscriptions'
import { Lettermark } from 'lib/lemon-ui/Lettermark'
diff --git a/frontend/src/layout/navigation/Navigation.stories.tsx b/frontend/src/layout/navigation/Navigation.stories.tsx
deleted file mode 100644
index 71d2903d628a3..0000000000000
--- a/frontend/src/layout/navigation/Navigation.stories.tsx
+++ /dev/null
@@ -1,91 +0,0 @@
-import { LemonButton, LemonTable } from '@posthog/lemon-ui'
-import { Meta } from '@storybook/react'
-import { useActions } from 'kea'
-import { PageHeader } from 'lib/components/PageHeader'
-import { useEffect } from 'react'
-
-import { navigationLogic } from './navigationLogic'
-import { SideBar } from './SideBar/SideBar'
-import { TopBar } from './TopBar/TopBar'
-
-const meta: Meta = {
- title: 'Layout/Navigation',
- parameters: {
- layout: 'fullscreen',
- viewMode: 'story',
- },
-}
-export default meta
-function BaseAppPage(): JSX.Element {
- return (
- <>
-
-
-
-
- >
- )
-}
-
-export function AppPageWithSideBarHidden(): JSX.Element {
- const { toggleSideBarBase, toggleSideBarMobile } = useActions(navigationLogic)
-
- useEffect(() => {
- toggleSideBarBase(false)
- toggleSideBarMobile(false)
- }, [])
-
- return
-}
-
-export function AppPageWithSideBarShown(): JSX.Element {
- const { toggleSideBarBase, toggleSideBarMobile } = useActions(navigationLogic)
-
- useEffect(() => {
- toggleSideBarBase(true)
- toggleSideBarMobile(true)
- }, [])
-
- return
-}
diff --git a/frontend/src/layout/navigation/Navigation.tsx b/frontend/src/layout/navigation/Navigation.tsx
index 5dbdb204a2c5f..a98f6523756eb 100644
--- a/frontend/src/layout/navigation/Navigation.tsx
+++ b/frontend/src/layout/navigation/Navigation.tsx
@@ -1,41 +1,9 @@
-import clsx from 'clsx'
-import { BillingAlertsV2 } from 'lib/components/BillingAlertsV2'
-import { ReactNode } from 'react'
-import { SceneConfig } from 'scenes/sceneTypes'
-
-import { Breadcrumbs } from './Breadcrumbs/Breadcrumbs'
-import { ProjectNotice } from './ProjectNotice'
import { SideBar } from './SideBar/SideBar'
-import { TopBar } from './TopBar/TopBar'
-export function Navigation({
- children,
- sceneConfig,
-}: {
- children: ReactNode
- sceneConfig: SceneConfig | null
-}): JSX.Element {
+export function Navigation(): JSX.Element {
return (
-
-
-
-
- {sceneConfig?.layout !== 'plain' && (
- <>
-
- {!sceneConfig?.hideProjectNotice &&
}
-
- >
- )}
- {children}
-
-
-
+
+
+
)
}
diff --git a/frontend/src/layout/navigation/TopBar/Announcement.scss b/frontend/src/layout/navigation/TopBar/Announcement.scss
new file mode 100644
index 0000000000000..31e722dd2682b
--- /dev/null
+++ b/frontend/src/layout/navigation/TopBar/Announcement.scss
@@ -0,0 +1,51 @@
+@import '../../../styles/mixins';
+
+.Announcement {
+ display: flex;
+ flex-shrink: 0;
+ align-items: center;
+ justify-content: center;
+ height: 3rem;
+ padding: 0 1rem 0 0.5rem; // padding is larger on the right to accommodate the close button
+ font-size: 1rem;
+ font-weight: 500;
+ color: white;
+ text-align: center;
+ background: #000;
+ transition: margin 200ms ease;
+
+ &.Announcement--hidden {
+ margin-top: -3rem;
+ }
+
+ p {
+ margin: 0;
+ }
+
+ b,
+ strong {
+ font-weight: 700;
+ }
+
+ a {
+ color: var(--brand-red);
+ text-decoration: underline;
+ }
+
+ @include screen($sm) {
+ padding: 0 1rem;
+ }
+}
+
+.Announcement__close {
+ position: absolute;
+ right: 0.5rem;
+ display: flex;
+ padding: 0.125rem;
+ font-size: 1.25rem;
+ cursor: pointer;
+
+ @include screen($sm) {
+ right: 1rem;
+ }
+}
diff --git a/frontend/src/layout/navigation/TopBar/Announcement.tsx b/frontend/src/layout/navigation/TopBar/Announcement.tsx
index 04fc851df88e5..294c1cfeb9f4f 100644
--- a/frontend/src/layout/navigation/TopBar/Announcement.tsx
+++ b/frontend/src/layout/navigation/TopBar/Announcement.tsx
@@ -1,7 +1,8 @@
+import './Announcement.scss'
+
import { LemonButton, Link } from '@posthog/lemon-ui'
import clsx from 'clsx'
import { useActions, useValues } from 'kea'
-import { MOCK_NODE_PROCESS } from 'lib/constants'
import { NewFeatureBanner } from 'lib/introductions/NewFeatureBanner'
import { IconClose } from 'lib/lemon-ui/icons'
import { LemonMarkdown } from 'lib/lemon-ui/LemonMarkdown'
@@ -9,8 +10,6 @@ import { preflightLogic } from 'scenes/PreflightCheck/preflightLogic'
import { announcementLogic, AnnouncementType } from '~/layout/navigation/TopBar/announcementLogic'
-window.process = MOCK_NODE_PROCESS
-
export function Announcement(): JSX.Element | null {
const { shownAnnouncementType, cloudAnnouncement, closable } = useValues(announcementLogic)
const { preflight } = useValues(preflightLogic)
diff --git a/frontend/src/layout/navigation/TopBar/SitePopover.scss b/frontend/src/layout/navigation/TopBar/SitePopover.scss
new file mode 100644
index 0000000000000..079c647e359f6
--- /dev/null
+++ b/frontend/src/layout/navigation/TopBar/SitePopover.scss
@@ -0,0 +1,46 @@
+@import '../../../styles/mixins';
+
+.SitePopover {
+ min-width: 16rem;
+ max-width: 22rem;
+}
+
+.SitePopover__side-link {
+ margin-left: 0.5rem;
+ font-size: 0.8125rem;
+ font-weight: 600;
+ color: var(--primary-3000);
+ text-align: right;
+}
+
+.SitePopover__section {
+ width: 100%;
+ padding: 0.5rem 0;
+ border-bottom: 1px solid var(--border);
+
+ &:first-child {
+ padding-top: 0;
+ }
+
+ &:last-child {
+ padding-bottom: 0;
+ border-bottom: none;
+ }
+}
+
+.AccountInfo {
+ display: flex;
+ align-items: center;
+}
+
+.AccountInfo__identification {
+ width: 100%;
+ margin-left: 0.5rem;
+ overflow: hidden;
+}
+
+.AccessLevelIndicator {
+ margin-left: 0.5rem;
+ font-size: 0.625rem;
+ text-transform: uppercase;
+}
diff --git a/frontend/src/layout/navigation/TopBar/SitePopover.tsx b/frontend/src/layout/navigation/TopBar/SitePopover.tsx
index e4455a04f1087..8b6badc11ff04 100644
--- a/frontend/src/layout/navigation/TopBar/SitePopover.tsx
+++ b/frontend/src/layout/navigation/TopBar/SitePopover.tsx
@@ -1,4 +1,6 @@
-import { IconChevronDown, IconFeatures, IconLive } from '@posthog/icons'
+import './SitePopover.scss'
+
+import { IconFeatures, IconLive } from '@posthog/icons'
import { LemonButtonPropsBase } from '@posthog/lemon-ui'
import clsx from 'clsx'
import { useActions, useValues } from 'kea'
@@ -6,7 +8,6 @@ import {
IconBill,
IconCheckmark,
IconCorporate,
- IconExclamation,
IconLogout,
IconOffline,
IconPlus,
@@ -17,7 +18,6 @@ import { LemonButton } from 'lib/lemon-ui/LemonButton'
import { LemonRow } from 'lib/lemon-ui/LemonRow'
import { Lettermark } from 'lib/lemon-ui/Lettermark'
import { Link } from 'lib/lemon-ui/Link'
-import { Popover } from 'lib/lemon-ui/Popover/Popover'
import { ProfilePicture } from 'lib/lemon-ui/ProfilePicture'
import { Tooltip } from 'lib/lemon-ui/Tooltip'
import { eventUsageLogic } from 'lib/utils/eventUsageLogic'
@@ -98,7 +98,7 @@ function CurrentOrganization({ organization }: { organization: OrganizationBasic
to={urls.settings('organization')}
onClick={closeSitePopover}
>
-
+
@@ -301,26 +301,3 @@ export function SitePopoverOverlay(): JSX.Element {
>
)
}
-
-export function SitePopover(): JSX.Element {
- const { user } = useValues(userLogic)
- const { isSitePopoverOpen, systemStatusHealthy } = useValues(navigationLogic)
- const { toggleSitePopover, closeSitePopover } = useActions(navigationLogic)
-
- return (
-
}
- >
-
-
-
- {!systemStatusHealthy &&
}
-
-
-
-
- )
-}
diff --git a/frontend/src/layout/navigation/TopBar/TopBar.scss b/frontend/src/layout/navigation/TopBar/TopBar.scss
deleted file mode 100644
index 55803cdd6ef71..0000000000000
--- a/frontend/src/layout/navigation/TopBar/TopBar.scss
+++ /dev/null
@@ -1,249 +0,0 @@
-@import '../../../styles/mixins';
-
-.TopBar {
- position: sticky;
- top: 0;
- z-index: var(--z-main-nav);
- display: flex;
- gap: 1rem;
- align-items: center;
- justify-content: space-between;
- height: 3.5rem;
- padding: 0.5rem;
- background: var(--bg-bridge);
- border-bottom: 1px solid var(--border);
-
- @include screen($sm) {
- padding: 0.5rem 1rem;
- }
-}
-
-.TopBar__segment {
- display: flex;
- align-items: center;
- height: 100%;
-
- &--left {
- flex-grow: 1;
- }
-
- &--left > * + * {
- margin-left: 1rem;
- }
-
- &--right > * + * {
- margin-left: 1rem;
- }
-}
-
-.TopBar__hamburger {
- display: flex;
- height: 1.5rem;
- font-size: 1.5rem;
- cursor: pointer;
- user-select: none;
-}
-
-.TopBar__logo {
- flex-shrink: 0;
- width: 40px;
- overflow: hidden;
-
- svg {
- vertical-align: middle;
- }
-
- @include screen($md) {
- display: flex;
- align-items: center;
- width: auto;
- overflow: hidden;
- font-size: 1rem;
- }
-}
-
-.TopBar__lightning-mode-box {
- background: var(--bridge) !important;
-
- .LemonSwitch__slider {
- background-color: var(--border) !important;
- }
-}
-
-.Announcement {
- display: flex;
- flex-shrink: 0;
- align-items: center;
- justify-content: center;
- height: 3rem;
- padding: 0 1rem 0 0.5rem; // padding is larger on the right to accommodate the close button
- font-size: 1rem;
- font-weight: 500;
- color: white;
- text-align: center;
- background: #000;
- transition: margin 200ms ease;
-
- &.Announcement--hidden {
- margin-top: -3rem;
- }
-
- p {
- margin: 0;
- }
-
- b,
- strong {
- font-weight: 700;
- }
-
- a {
- color: var(--brand-red);
- text-decoration: underline;
- }
-
- @include screen($sm) {
- padding: 0 1rem;
- }
-}
-
-.Announcement__close {
- position: absolute;
- right: 0.5rem;
- display: flex;
- padding: 0.125rem;
- font-size: 1.25rem;
- cursor: pointer;
-
- @include screen($sm) {
- right: 1rem;
- }
-}
-
-.SitePopover {
- min-width: 16rem;
- max-width: 22rem;
-}
-
-.SitePopover__main-info {
- flex-grow: 1;
-}
-
-.SitePopover__side-link {
- margin-left: 0.5rem;
- font-size: 0.8125rem;
- font-weight: 600;
- color: var(--primary-3000);
- text-align: right;
-}
-
-.SitePopover__crumb {
- display: flex;
- align-items: center;
- height: 2.5rem;
- font-size: 1.5rem;
- color: var(--primary-alt);
- cursor: pointer;
-}
-
-.SitePopover__profile-picture {
- position: relative;
-}
-
-.SitePopover__danger {
- position: absolute;
- top: -0.375rem;
- right: -0.375rem;
- box-sizing: content-box;
- font-size: 0.75rem;
- color: #fff;
- background: var(--danger);
- border: 2px solid var(--bg-bridge);
- border-radius: 100%;
-}
-
-.SitePopover__section {
- width: 100%;
- padding: 0.5rem 0;
- border-bottom: 1px solid var(--border);
-
- &:first-child {
- padding-top: 0;
- }
-
- &:last-child {
- padding-bottom: 0;
- border-bottom: none;
- }
-}
-
-.AccountInfo {
- display: flex;
- align-items: center;
-}
-
-.AccountInfo__identification {
- width: 100%;
- margin-left: 0.5rem;
- overflow: hidden;
-}
-
-.AccessLevelIndicator {
- margin-left: 0.5rem;
- font-size: 0.625rem;
- text-transform: uppercase;
-}
-
-.CheekyHog {
- position: absolute;
- top: -0.2rem;
- animation-timing-function: ease-out;
- animation-delay: 0s;
- animation-fill-mode: both;
-}
-
-.CheekyHog--peek {
- animation-name: CheekyHog__Peek;
- animation-duration: 1s;
- animation-iteration-count: 1;
-}
-
-.CheekyHog--hide {
- animation-name: CheekyHog__Hide;
- animation-duration: 1s;
- animation-iteration-count: 1;
-}
-
-@keyframes CheekyHog__Peek {
- 0% {
- left: 0;
- transform: rotate(0);
- }
-
- 50% {
- left: -0.5rem;
- transform: rotate(-20deg);
- }
-
- 100% {
- left: -1.45rem;
- transform: rotate(-45deg);
- }
-}
-
-@keyframes CheekyHog__Hide {
- 0% {
- left: -1.45rem;
- transform: rotate(-45deg);
- }
-
- 50% {
- left: -0.5rem;
- transform: rotate(-20deg);
- }
-
- 100% {
- left: 0;
- transform: rotate(0);
- }
-}
diff --git a/frontend/src/layout/navigation/TopBar/TopBar.tsx b/frontend/src/layout/navigation/TopBar/TopBar.tsx
deleted file mode 100644
index cf9f4125dcdb4..0000000000000
--- a/frontend/src/layout/navigation/TopBar/TopBar.tsx
+++ /dev/null
@@ -1,120 +0,0 @@
-import './TopBar.scss'
-
-import { LemonButtonWithDropdown, Lettermark } from '@posthog/lemon-ui'
-import { useActions, useValues } from 'kea'
-import { ActivationSidebarToggle } from 'lib/components/ActivationSidebar/ActivationSidebarToggle'
-import { CommandPalette } from 'lib/components/CommandPalette/CommandPalette'
-import { HelpButton } from 'lib/components/HelpButton/HelpButton'
-import { TaxonomicFilterGroupType } from 'lib/components/TaxonomicFilter/types'
-import { UniversalSearchPopover } from 'lib/components/UniversalSearch/UniversalSearchPopover'
-import { FEATURE_FLAGS } from 'lib/constants'
-import { IconMenu, IconMenuOpen } from 'lib/lemon-ui/icons'
-import { Link } from 'lib/lemon-ui/Link'
-import { featureFlagLogic } from 'lib/logic/featureFlagLogic'
-import { organizationLogic } from 'scenes/organizationLogic'
-
-import { NotebookButton } from '~/layout/navigation/TopBar/NotebookButton'
-import { YearInHogButton } from '~/layout/navigation/TopBar/YearInHogButton'
-import { NotificationBell } from '~/layout/navigation-3000/sidepanel/panels/activity/NotificationBell'
-import { groupsModel } from '~/models/groupsModel'
-import { Logo } from '~/toolbar/assets/Logo'
-
-import { navigationLogic } from '../navigationLogic'
-import { ProjectSwitcherOverlay } from '../ProjectSwitcher'
-import { Announcement } from './Announcement'
-import { SitePopover } from './SitePopover'
-import { topBarLogic } from './topBarLogic'
-
-export function TopBar(): JSX.Element {
- const { isSideBarShown, noSidebar, minimalTopBar, mobileLayout } = useValues(navigationLogic)
- const { toggleSideBarBase, toggleSideBarMobile } = useActions(navigationLogic)
- const { groupNamesTaxonomicTypes } = useValues(groupsModel)
- const { featureFlags } = useValues(featureFlagLogic)
- const { currentOrganization } = useValues(organizationLogic)
- const { isProjectSwitcherShown } = useValues(topBarLogic)
- const { toggleProjectSwitcher, hideProjectSwitcher } = useActions(topBarLogic)
-
- const groupTypes = [
- TaxonomicFilterGroupType.Events,
- TaxonomicFilterGroupType.Persons,
- TaxonomicFilterGroupType.Actions,
- TaxonomicFilterGroupType.Cohorts,
- TaxonomicFilterGroupType.Insights,
- TaxonomicFilterGroupType.FeatureFlags,
- TaxonomicFilterGroupType.Plugins,
- TaxonomicFilterGroupType.Experiments,
- TaxonomicFilterGroupType.Dashboards,
- TaxonomicFilterGroupType.Notebooks,
- ...groupNamesTaxonomicTypes,
- ]
-
- return (
- <>
-
-
-
- {!noSidebar && (
-
(mobileLayout ? toggleSideBarMobile() : toggleSideBarBase())}
- >
- {isSideBarShown ? : }
-
- )}
-
-
-
- {!minimalTopBar && (
- <>
-
-
-
-
- >
- )}
-
-
- {!minimalTopBar ? (
- <>
- {!!featureFlags[FEATURE_FLAGS.YEAR_IN_HOG] &&
- window.POSTHOG_APP_CONTEXT?.year_in_hog_url && (
-
- )}
-
-
- >
- ) : (
- currentOrganization?.teams &&
- currentOrganization.teams.length > 1 && (
-
-
}
- onClick={() => toggleProjectSwitcher()}
- dropdown={{
- visible: isProjectSwitcherShown,
- onClickOutside: hideProjectSwitcher,
- overlay:
,
- actionable: true,
- placement: 'top-end',
- }}
- type="secondary"
- fullWidth
- >
-
Switch project
-
-
- )
- )}
-
-
-
-
-
- >
- )
-}
diff --git a/frontend/src/layout/navigation/TopBar/YearInHogButton.scss b/frontend/src/layout/navigation/TopBar/YearInHogButton.scss
index 1c5feb51eeecc..f61f0ed645ac4 100644
--- a/frontend/src/layout/navigation/TopBar/YearInHogButton.scss
+++ b/frontend/src/layout/navigation/TopBar/YearInHogButton.scss
@@ -2,3 +2,57 @@
background-color: var(--bg-3000);
border-radius: var(--radius);
}
+
+.CheekyHog {
+ position: absolute;
+ top: -0.2rem;
+ animation-timing-function: ease-out;
+ animation-delay: 0s;
+ animation-fill-mode: both;
+}
+
+.CheekyHog--peek {
+ animation-name: CheekyHog__Peek;
+ animation-duration: 1s;
+ animation-iteration-count: 1;
+}
+
+.CheekyHog--hide {
+ animation-name: CheekyHog__Hide;
+ animation-duration: 1s;
+ animation-iteration-count: 1;
+}
+
+@keyframes CheekyHog__Peek {
+ 0% {
+ left: 0;
+ transform: rotate(0);
+ }
+
+ 50% {
+ left: -0.5rem;
+ transform: rotate(-20deg);
+ }
+
+ 100% {
+ left: -1.45rem;
+ transform: rotate(-45deg);
+ }
+}
+
+@keyframes CheekyHog__Hide {
+ 0% {
+ left: -1.45rem;
+ transform: rotate(-45deg);
+ }
+
+ 50% {
+ left: -0.5rem;
+ transform: rotate(-20deg);
+ }
+
+ 100% {
+ left: 0;
+ transform: rotate(0);
+ }
+}
diff --git a/frontend/src/layout/navigation/TopBar/topBarLogic.ts b/frontend/src/layout/navigation/TopBar/topBarLogic.ts
deleted file mode 100644
index a1c2f8ce00a70..0000000000000
--- a/frontend/src/layout/navigation/TopBar/topBarLogic.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { actions, kea, path, reducers } from 'kea'
-
-import type { topBarLogicType } from './topBarLogicType'
-
-export const topBarLogic = kea
([
- path(['layout', 'navigation', 'TopBar', 'topBarLogic']),
- actions({
- toggleProjectSwitcher: true,
- hideProjectSwitcher: true,
- }),
- reducers({
- isProjectSwitcherShown: [
- false,
- {
- toggleProjectSwitcher: (state) => !state,
- hideProjectSwitcher: () => false,
- },
- ],
- }),
-])
diff --git a/frontend/src/layout/navigation/navigationLogic.ts b/frontend/src/layout/navigation/navigationLogic.ts
index 0fa4d1711161c..7237fee9bc9a0 100644
--- a/frontend/src/layout/navigation/navigationLogic.ts
+++ b/frontend/src/layout/navigation/navigationLogic.ts
@@ -26,8 +26,6 @@ export const navigationLogic = kea([
actions: [eventUsageLogic, ['reportProjectNoticeDismissed']],
})),
actions({
- toggleSideBarBase: (override?: boolean) => ({ override }), // Only use the override for testing
- toggleSideBarMobile: (override?: boolean) => ({ override }), // Only use the override for testing
toggleActivationSideBar: true,
showActivationSideBar: true,
hideActivationSideBar: true,
@@ -61,18 +59,11 @@ export const navigationLogic = kea([
})),
reducers({
// Non-mobile base
- isSideBarShownBase: [
- true,
- { persist: true },
- {
- toggleSideBarBase: (state, { override }) => override ?? !state,
- },
- ],
+ isSideBarShownBase: [true, { persist: true }, {}],
// Mobile, applied on top of base, so that the sidebar does not show up annoyingly when shrinking the window
isSideBarShownMobile: [
false,
{
- toggleSideBarMobile: (state, { override }) => override ?? !state,
hideSideBarMobile: () => false,
},
],
@@ -120,16 +111,10 @@ export const navigationLogic = kea([
(s) => [s.fullscreen, s.sceneConfig],
(fullscreen, sceneConfig) => fullscreen || sceneConfig?.layout === 'plain',
],
- minimalTopBar: [
- (s) => [s.sceneConfig],
- (sceneConfig) => {
- return sceneConfig?.layout === 'plain' && !sceneConfig.allowUnauthenticated
- },
- ],
isSideBarShown: [
- (s) => [s.mobileLayout, s.isSideBarShownBase, s.isSideBarShownMobile, s.noSidebar],
- (mobileLayout, isSideBarShownBase, isSideBarShownMobile, noSidebar) =>
- !noSidebar && (mobileLayout ? isSideBarShownMobile : isSideBarShownBase),
+ (s) => [s.mobileLayout, s.isSideBarShownMobile, s.noSidebar],
+ (mobileLayout, isSideBarShownMobile, noSidebar) =>
+ !noSidebar && (mobileLayout ? isSideBarShownMobile : true),
],
isActivationSideBarShown: [
(s) => [s.mobileLayout, s.isActivationSideBarShownBase, s.isSideBarShownMobile, s.noSidebar],
diff --git a/frontend/src/lib/components/ActivationSidebar/ActivationSidebarToggle.tsx b/frontend/src/lib/components/ActivationSidebar/ActivationSidebarToggle.tsx
deleted file mode 100644
index 6e2675bfc6741..0000000000000
--- a/frontend/src/lib/components/ActivationSidebar/ActivationSidebarToggle.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import { LemonButton } from '@posthog/lemon-ui'
-import { Progress } from 'antd'
-import { useActions, useValues } from 'kea'
-
-import { navigationLogic } from '~/layout/navigation/navigationLogic'
-
-import { activationLogic } from './activationLogic'
-
-export const ActivationSidebarToggle = (): JSX.Element | null => {
- const { mobileLayout } = useValues(navigationLogic)
- const { toggleActivationSideBar } = useActions(navigationLogic)
- const { activeTasks, completionPercent, isReady, hasCompletedAllTasks } = useValues(activationLogic)
-
- if (!isReady || hasCompletedAllTasks) {
- return null
- }
- return (
- activeTasks.length}
- strokeWidth={16}
- strokeColor="#345cff" // primary-light
- />
- }
- >
- {!mobileLayout && (
-
-
Quick Start
-
{activeTasks.length} still to go
-
- )}
-
- )
-}
diff --git a/frontend/src/lib/components/CommandPalette/CommandPalette.tsx b/frontend/src/lib/components/CommandPalette/CommandPalette.tsx
deleted file mode 100644
index f273b34c66c32..0000000000000
--- a/frontend/src/lib/components/CommandPalette/CommandPalette.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import { CommandBar } from '../CommandBar/CommandBar'
-
-/** Use the new Cmd+K search when the respective feature flag is enabled. */
-export function CommandPalette(): JSX.Element {
- return
-}
diff --git a/frontend/src/lib/components/UniversalSearch/UniversalSearch.scss b/frontend/src/lib/components/UniversalSearch/UniversalSearch.scss
deleted file mode 100644
index f327ff82c96be..0000000000000
--- a/frontend/src/lib/components/UniversalSearch/UniversalSearch.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-@import '../../../styles/mixins';
-
-.universal-search-box {
- max-width: 15rem;
- height: 100%;
- cursor: pointer;
- transition: 200ms ease margin;
-
- .ant-input-affix-wrapper,
- input {
- background: var(--bg-bridge);
- }
-
- @include screen($sm) {
- display: flex;
- }
-}
-
-.universal-search-popover {
- display: flex;
- flex-direction: column;
- background: var(--bg-light);
-
- &.force-minimum-width {
- min-width: 300px;
- }
-
- &.one-taxonomic-tab {
- .taxonomic-infinite-list {
- margin-top: 10px;
- }
- }
-}
diff --git a/frontend/src/lib/components/UniversalSearch/UniversalSearchPopover.tsx b/frontend/src/lib/components/UniversalSearch/UniversalSearchPopover.tsx
deleted file mode 100644
index d7f58130d3c7e..0000000000000
--- a/frontend/src/lib/components/UniversalSearch/UniversalSearchPopover.tsx
+++ /dev/null
@@ -1,206 +0,0 @@
-import './UniversalSearch.scss'
-
-import clsx from 'clsx'
-import { useMountedLogic, useValues } from 'kea'
-import { combineUrl, router } from 'kea-router'
-import { useEventListener } from 'lib/hooks/useEventListener'
-import { LemonButtonWithDropdownProps } from 'lib/lemon-ui/LemonButton'
-import { LemonInput } from 'lib/lemon-ui/LemonInput/LemonInput'
-import { Popover } from 'lib/lemon-ui/Popover'
-import { useState } from 'react'
-import { experimentsLogic } from 'scenes/experiments/experimentsLogic'
-import { PluginSelectionType, pluginsLogic } from 'scenes/plugins/pluginsLogic'
-import { urls } from 'scenes/urls'
-
-import { navigationLogic } from '~/layout/navigation/navigationLogic'
-import {
- ActionType,
- ChartDisplayType,
- CohortType,
- EventDefinition,
- Experiment,
- FeatureFlagType,
- Group,
- InsightModel,
- InsightType,
- PersonType,
-} from '~/types'
-
-import { TaxonomicFilter } from '../TaxonomicFilter/TaxonomicFilter'
-import { taxonomicFilterLogic } from '../TaxonomicFilter/taxonomicFilterLogic'
-import { TaxonomicFilterGroupType, TaxonomicFilterLogicProps, TaxonomicFilterValue } from '../TaxonomicFilter/types'
-
-export interface UniversalSearchPopoverProps
- extends Omit {
- groupType: TaxonomicFilterGroupType
- value?: ValueType
- onChange?: (value: ValueType, groupType: TaxonomicFilterGroupType, item: SearchDefinitionTypes) => void
- groupTypes?: TaxonomicFilterGroupType[]
- renderValue?: (value: ValueType) => JSX.Element
- dataAttr?: string
- placeholder?: React.ReactNode
- dropdownMatchSelectWidth?: boolean
- allowClear?: boolean
-}
-
-type SearchDefinitionTypes =
- | EventDefinition
- | CohortType
- | ActionType
- | Experiment
- | PersonType
- | Group
- | FeatureFlagType
- | InsightModel
- | PluginSelectionType
-
-function redirectOnSelectItems(
- value: TaxonomicFilterValue,
- groupType: TaxonomicFilterGroupType,
- item: SearchDefinitionTypes
-): void {
- if (value === null) {
- return
- }
- if (groupType === TaxonomicFilterGroupType.Events) {
- router.actions.push(
- combineUrl(
- urls.insightNew({
- insight: InsightType.TRENDS,
- interval: 'day',
- display: ChartDisplayType.ActionsLineGraph,
- events: [{ id: value, name: value, type: 'events', math: 'dau' }],
- })
- ).url
- )
- } else if (groupType === TaxonomicFilterGroupType.Actions) {
- router.actions.push(
- combineUrl(
- urls.insightNew({
- insight: InsightType.TRENDS,
- interval: 'day',
- display: ChartDisplayType.ActionsLineGraph,
- actions: [
- {
- id: (item as ActionType).id,
- name: (item as ActionType).name,
- type: 'actions',
- order: 0,
- },
- ],
- })
- ).url
- )
- } else if (groupType === TaxonomicFilterGroupType.Cohorts) {
- router.actions.push(urls.cohort(value))
- } else if (groupType === TaxonomicFilterGroupType.Persons) {
- router.actions.push(urls.personByDistinctId(String(value)))
- } else if (groupType.startsWith(TaxonomicFilterGroupType.GroupNamesPrefix)) {
- router.actions.push(urls.group((item as Group).group_type_index, String(value)))
- } else if (groupType === TaxonomicFilterGroupType.Insights) {
- router.actions.push(urls.insightView((item as InsightModel).short_id))
- } else if (groupType === TaxonomicFilterGroupType.FeatureFlags) {
- router.actions.push(urls.featureFlag(value))
- } else if (groupType === TaxonomicFilterGroupType.Experiments) {
- router.actions.push(urls.experiment(value))
- } else if (groupType === TaxonomicFilterGroupType.Plugins) {
- router.actions.push(
- combineUrl(urls.projectApps(), {
- name: (item as PluginSelectionType).name,
- }).url
- )
- } else if (groupType === TaxonomicFilterGroupType.Dashboards) {
- router.actions.push(urls.dashboard(value))
- } else if (groupType === TaxonomicFilterGroupType.Notebooks) {
- router.actions.push(urls.notebook(String(value)))
- }
-}
-
-export function UniversalSearchPopover({
- groupType,
- value,
- onChange,
- groupTypes,
- dataAttr,
- fullWidth = true,
-}: UniversalSearchPopoverProps): JSX.Element {
- // Ensure some logics are mounted
- useMountedLogic(experimentsLogic)
- useMountedLogic(pluginsLogic)
-
- const [visible, setVisible] = useState(false)
-
- const { isSideBarShown } = useValues(navigationLogic)
- const taxonomicFilterLogicProps: TaxonomicFilterLogicProps = {
- groupType,
- value,
- onChange: ({ type }, payload, item) => {
- redirectOnSelectItems(payload, type, item)
- onChange?.(payload, type, item)
- setVisible(false)
- },
- taxonomicGroupTypes: groupTypes ?? [groupType],
- optionsFromProp: undefined,
- popoverEnabled: true,
- selectFirstItem: true,
- taxonomicFilterLogicKey: 'universalSearch',
- }
- const logic = taxonomicFilterLogic(taxonomicFilterLogicProps)
- const { searchQuery } = useValues(logic)
-
- // Command+S shortcut to get to universal search popover
- useEventListener('keydown', (event) => {
- if (event.key === 's' && (event.ctrlKey || event.metaKey)) {
- event.preventDefault()
- setVisible(!visible)
- }
- })
-
- return (
-
-
}
- visible={visible}
- placement="right-start"
- fallbackPlacements={['bottom']}
- onClickOutside={() => setVisible(false)}
- middleware={[
- {
- name: 'offset',
- fn({ x, y, placement }) {
- if (placement === 'right-start') {
- return { y: y - 29, x: x - 253 }
- }
- return {}
- },
- },
- ]}
- >
-
{
- e.preventDefault()
- e.stopPropagation()
- setVisible(!visible)
- }}
- className={clsx(
- { 'w-full': fullWidth },
- '',
- 'universal-search-box',
- isSideBarShown && 'universal-search-box--sidebar-shown'
- )}
- >
- {!visible && (
-
- )}
-
-
-
- )
-}
diff --git a/frontend/src/lib/lemon-ui/icons/icons.tsx b/frontend/src/lib/lemon-ui/icons/icons.tsx
index 73940bced7069..f46dd433e29f1 100644
--- a/frontend/src/lib/lemon-ui/icons/icons.tsx
+++ b/frontend/src/lib/lemon-ui/icons/icons.tsx
@@ -512,18 +512,6 @@ export function IconMenu(props: LemonIconProps): JSX.Element {
)
}
-/** Material Design Menu Open icon. */
-export function IconMenuOpen(props: LemonIconProps): JSX.Element {
- return (
-
-
-
- )
-}
-
/** Material Design Sync icon. */
export function IconSync(props: LemonIconProps): JSX.Element {
return (
diff --git a/frontend/src/models/notebooksModel.ts b/frontend/src/models/notebooksModel.ts
index 1678704bcf545..17104131ca3e0 100644
--- a/frontend/src/models/notebooksModel.ts
+++ b/frontend/src/models/notebooksModel.ts
@@ -36,7 +36,7 @@ export const openNotebook = async (
const thePanelLogic = notebookPanelLogic.findMounted()
if (thePanelLogic && target === NotebookTarget.Popover) {
- notebookPanelLogic.actions.selectNotebook(notebookId, { autofocus })
+ thePanelLogic.actions.selectNotebook(notebookId, { autofocus })
} else {
if (router.values.location.pathname === urls.notebook('new')) {
router.actions.replace(urls.notebook(notebookId))
@@ -86,9 +86,7 @@ export const notebooksModel = kea([
notebooks: [
[] as NotebookListItemType[],
{
- createNotebook: async ({ title, location, content, onCreate }, breakpoint) => {
- await breakpoint(100)
-
+ createNotebook: async ({ title, location, content, onCreate }) => {
const notebook = await api.notebooks.create({
title,
content: defaultNotebookContent(title, content),
diff --git a/frontend/src/styles/global.scss b/frontend/src/styles/global.scss
index 45c21e1e367b3..0b0424caee499 100644
--- a/frontend/src/styles/global.scss
+++ b/frontend/src/styles/global.scss
@@ -452,36 +452,6 @@ input::-ms-clear {
}
}
-.main-app-content {
- position: relative; // So that scene-level is positioned correctly.
- flex: 1;
- width: 100%;
- min-width: 0;
- padding: 0 1rem 1rem;
- background-color: var(--bg-light);
-
- &.main-app-content--plain {
- padding: 0;
- }
-
- &.main-app-content--container {
- align-self: center;
- max-width: 72rem;
-
- @include screen($xxl) {
- max-width: 108rem;
- }
- }
-
- @include screen($sm) {
- padding: 0 1rem 2rem;
- }
-
- @include screen($lg) {
- padding: 0 2rem 4rem;
- }
-}
-
// AntD overrrides, placed inside `body` to increase specifity (nicely avoiding the need for !important)
body {
// Until we have 3000 rolled out we fallback to standard colors
diff --git a/playwright/e2e-vrt/README.md b/playwright/e2e-vrt/README.md
index e2f5088f8ad48..56a1ae146640d 100644
--- a/playwright/e2e-vrt/README.md
+++ b/playwright/e2e-vrt/README.md
@@ -35,7 +35,7 @@ We're using Playwright to run visual regression tests against Storybook. To crea
- Suggested Storybook container elements:
- `#root` for components and
- - `.main-app-content` for scenes
+ - `main` for scenes
3. Generate the reference images (you need to have Storybook running locally, i.e. on the Docker host machine):
diff --git a/playwright/e2e-vrt/layout/Navigation.spec.ts b/playwright/e2e-vrt/layout/Navigation.spec.ts
deleted file mode 100644
index 2af80117af5ad..0000000000000
--- a/playwright/e2e-vrt/layout/Navigation.spec.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { toId } from '../../helpers/storybook'
-import { test } from '../../fixtures/storybook'
-
-test.describe('Navigation', () => {
- // TODO: Remove when our Storybook test runner supports mobile viewports
- test('App Page With Side Bar Hidden (Mobile)', async ({ storyPage }) => {
- await storyPage.resizeToMobile()
- await storyPage.goto(toId('Layout/Navigation', 'App Page With Side Bar Hidden'))
- await storyPage.mainAppContent.waitFor()
- await storyPage.expectFullPageScreenshot()
- })
-
- test('App Page With Side Bar Shown (Mobile)', async ({ storyPage }) => {
- await storyPage.resizeToMobile()
- await storyPage.goto(toId('Layout/Navigation', 'App Page With Side Bar Shown'))
- await storyPage.mainAppContent.waitFor()
- await storyPage.expectFullPageScreenshot()
- })
-})
diff --git a/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Hidden-Desktop-1-chromium-linux.png b/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Hidden-Desktop-1-chromium-linux.png
deleted file mode 100644
index f53e69c2b4512..0000000000000
Binary files a/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Hidden-Desktop-1-chromium-linux.png and /dev/null differ
diff --git a/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Hidden-Mobile-1-chromium-linux.png b/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Hidden-Mobile-1-chromium-linux.png
index bbdca0cd4f17d..2c6380430086c 100644
Binary files a/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Hidden-Mobile-1-chromium-linux.png and b/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Hidden-Mobile-1-chromium-linux.png differ
diff --git a/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Shown-Desktop-1-chromium-linux.png b/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Shown-Desktop-1-chromium-linux.png
deleted file mode 100644
index 0dda6b93076e9..0000000000000
Binary files a/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Shown-Desktop-1-chromium-linux.png and /dev/null differ
diff --git a/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Shown-Mobile-1-chromium-linux.png b/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Shown-Mobile-1-chromium-linux.png
index 31edd17b2e4fd..95ace13b254f9 100644
Binary files a/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Shown-Mobile-1-chromium-linux.png and b/playwright/e2e-vrt/layout/Navigation.spec.ts-snapshots/Navigation-App-Page-With-Side-Bar-Shown-Mobile-1-chromium-linux.png differ
diff --git a/playwright/pages/storybook.ts b/playwright/pages/storybook.ts
index fe2369902be9b..4f990c81a3cf7 100644
--- a/playwright/pages/storybook.ts
+++ b/playwright/pages/storybook.ts
@@ -19,12 +19,10 @@ type ComponentScreenshotConfig = {
export class StorybookStoryPage {
readonly page: Page
- readonly mainAppContent: Locator
readonly storyRoot: Locator
constructor(page: Page) {
this.page = page
- this.mainAppContent = page.locator('.main-app-content')
this.storyRoot = page.locator('#storybook-root')
}
@@ -41,10 +39,6 @@ export class StorybookStoryPage {
await expect(this.page).toHaveScreenshot({ maxDiffPixelRatio: 0.01 })
}
- async expectSceneScreenshot(): Promise {
- await expect(this.mainAppContent).toHaveScreenshot({ maxDiffPixelRatio: 0.01 })
- }
-
async expectComponentScreenshot({ pseudo } = {} as ComponentScreenshotConfig): Promise {
const pseudoClasses = Object.entries(pseudo || {}).flatMap(([state, enabled]) => {
return enabled ? `pseudo-${PSEUDO_STATES[state]}` : []
diff --git a/posthog/warehouse/models/table.py b/posthog/warehouse/models/table.py
index 0291503763dec..8e57a0380edd3 100644
--- a/posthog/warehouse/models/table.py
+++ b/posthog/warehouse/models/table.py
@@ -30,6 +30,7 @@
"DateTime64": DateTimeDatabaseField,
"DateTime32": DateTimeDatabaseField,
"Date": DateDatabaseField,
+ "Date32": DateDatabaseField,
"UInt8": IntegerDatabaseField,
"UInt16": IntegerDatabaseField,
"UInt32": IntegerDatabaseField,