Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
a550197
fix(org): reduce organization settings query payload (#5538)
idoshamun Feb 22, 2026
903246d
feat(onboarding): add redesigned onboarding page and remove header se…
tsahimatsliah Feb 24, 2026
7c7fd58
feat(onboarding): improve feed preview, scroll behavior, and modal UX
tsahimatsliah Feb 24, 2026
fc2a895
feat(onboarding): polish onboarding v2 feed dynamics and setup flows
tsahimatsliah Feb 24, 2026
8e36c2b
feat: add magical breathing glow animation to onboarding hero cover
tsahimatsliah Feb 25, 2026
3bb7226
feat(onboarding): add mobile header bar and polish hero section
tsahimatsliah Feb 25, 2026
4b876ff
Merge branch 'main' into feat/redesign-onboarding
tsahimatsliah Feb 25, 2026
d1e5ecc
fix(onboarding): remove unused variable and replace for...of loop to …
github-actions[bot] Feb 25, 2026
a9488ca
fix(onboarding): fix all review issues - DOM mutations, hardcoded col…
github-actions[bot] Feb 25, 2026
1433346
Merge branch 'main' into feat/redesign-onboarding
tsahimatsliah Feb 25, 2026
3523eb3
fix(onboarding): move background-size to CSS class to fix no-custom-c…
github-actions[bot] Feb 25, 2026
cc9764e
Merge branch 'main' into feat/redesign-onboarding
tsahimatsliah Feb 25, 2026
dda02ca
fix(onboarding): resolve ESLint errors breaking build and CI
tsahimatsliah Feb 25, 2026
256d6b0
fix(onboarding): resolve all ESLint errors to fix Vercel and CircleCI…
github-actions[bot] Feb 25, 2026
a45201a
fix(sidebar): satisfy lint formatting in desktop sidebar
tsahimatsliah Feb 25, 2026
d900665
Merge remote-tracking branch 'origin/feat/redesign-onboarding' into f…
github-actions[bot] Feb 25, 2026
4f3829d
fix(onboarding): fix remaining lint errors after merge
github-actions[bot] Feb 25, 2026
a89a164
Merge remote-tracking branch 'origin/feat/redesign-onboarding' into f…
github-actions[bot] Feb 25, 2026
c9c7628
Merge branch 'main' into feat/redesign-onboarding
tsahimatsliah Feb 25, 2026
c26bb12
Merge remote-tracking branch 'origin/feat/redesign-onboarding' into f…
github-actions[bot] Feb 25, 2026
375ecd5
feat(onboarding): rewrite engagement animation from scratch for perfe…
tsahimatsliah Feb 26, 2026
965e3ef
feat(onboarding): scale up engagement animation with dynamic numbers …
tsahimatsliah Feb 26, 2026
3f5d57b
fix(onboarding): use correct semantic colors for engagement animation
tsahimatsliah Feb 26, 2026
a4bcccf
fix(onboarding): hide scroll to top button on onboarding v2
tsahimatsliah Feb 26, 2026
0645686
fix(onboarding): refine onboarding v2 modal polish
tsahimatsliah Feb 26, 2026
cbff82d
fix(onboarding): refresh onboarding v2 bullet styling and copy
tsahimatsliah Feb 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions packages/shared/src/components/MainLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ export interface MainLayoutProps
screenCentered?: boolean;
customBanner?: ReactNode;
showSidebar?: boolean;
sidebarDisabled?: boolean;
onNavTabClick?: (tab: string) => void;
canGoBack?: string;
hideBackButton?: boolean;
Expand All @@ -71,8 +72,10 @@ function MainLayoutComponent({
isNavItemsButton,
customBanner,
additionalButtons,
hideSearchField,
screenCentered = true,
showSidebar = true,
sidebarDisabled = true,
className,
onLogoClick,
onNavTabClick,
Expand Down Expand Up @@ -192,6 +195,7 @@ function MainLayoutComponent({
hasBanner={isBannerAvailable}
sidebarRendered={sidebarRendered}
additionalButtons={additionalButtons}
hideSearchField={hideSearchField}
onLogoClick={onLogoClick}
/>
<main
Expand All @@ -202,6 +206,7 @@ function MainLayoutComponent({
isAuthReady &&
!isScreenCentered &&
sidebarExpanded &&
!sidebarDisabled &&
'laptop:!pl-60',
isBannerAvailable && 'laptop:pt-24',
)}
Expand All @@ -212,6 +217,7 @@ function MainLayoutComponent({
onNavTabClick={onNavTabClick}
onLogoClick={onLogoClick}
activePage={activePage}
disabled={sidebarDisabled}
/>
)}
{children}
Expand Down
5 changes: 4 additions & 1 deletion packages/shared/src/components/layout/MainLayoutHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export interface MainLayoutHeaderProps {
sidebarRendered?: boolean;
additionalButtons?: ReactNode;
onLogoClick?: (e: React.MouseEvent) => unknown;
hideSearchField?: boolean;
}

const SearchPanel = dynamic(
Expand All @@ -39,6 +40,7 @@ function MainLayoutHeader({
sidebarRendered,
additionalButtons,
onLogoClick,
hideSearchField,
}: MainLayoutHeaderProps): ReactElement {
const { loadedSettings } = useSettingsContext();
const { streak, isStreaksEnabled } = useReadingStreak();
Expand All @@ -56,6 +58,7 @@ function MainLayoutHeader({

const RenderSearchPanel = useCallback(
() =>
!hideSearchField &&
loadedSettings && (
<SearchPanel
className={{
Expand All @@ -70,7 +73,7 @@ function MainLayoutHeader({
}}
/>
),
[loadedSettings, isSearchPage, hasBanner],
[loadedSettings, isSearchPage, hasBanner, hideSearchField],
);

if (loadedSettings && !isLaptop) {
Expand Down
4 changes: 4 additions & 0 deletions packages/shared/src/components/sidebar/Sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,15 @@ interface SidebarProps {
isNavButtons?: boolean;
onNavTabClick?: (tab: string) => void;
onLogoClick?: (e: React.MouseEvent) => unknown;
disabled?: boolean;
}

export const Sidebar = ({
isNavButtons,
onNavTabClick,
onLogoClick,
activePage,
disabled,
}: SidebarProps): ReactElement => {
const isLaptop = useViewSize(ViewSize.Laptop);
const isTablet = useViewSize(ViewSize.Tablet);
Expand All @@ -39,6 +41,7 @@ export const Sidebar = ({
activePage={activePage}
onLogoClick={onLogoClick}
featureTheme={featureTheme}
disabled={disabled}
/>
);
}
Expand All @@ -52,6 +55,7 @@ export const Sidebar = ({
featureTheme={featureTheme}
isNavButtons={isNavButtons}
onNavTabClick={onNavTabClick}
disabled={disabled}
/>
);
}
Expand Down
107 changes: 60 additions & 47 deletions packages/shared/src/components/sidebar/SidebarDesktop.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,58 +22,70 @@ type SidebarDesktopProps = {
};
isNavButtons?: boolean;
onNavTabClick?: (tab: string) => void;
disabled?: boolean;
};
export const SidebarDesktop = ({
activePage: activePageProp,
featureTheme,
isNavButtons,
onNavTabClick,
disabled,
}: SidebarDesktopProps): ReactElement => {
const router = useRouter();
const { sidebarExpanded } = useSettingsContext();
const { isAvailable: isBannerAvailable } = useBanner();
const activePage = activePageProp || router.asPath || router.pathname;

const effectiveExpanded = disabled ? false : sidebarExpanded;

const defaultRenderSectionProps = useMemo(
() => ({
sidebarExpanded,
shouldShowLabel: sidebarExpanded,
sidebarExpanded: effectiveExpanded,
shouldShowLabel: effectiveExpanded,
activePage,
}),
[sidebarExpanded, activePage],
[effectiveExpanded, activePage],
);

return (
<SidebarAside
data-testid="sidebar-aside"
className={classNames(
sidebarExpanded ? 'laptop:w-60' : 'laptop:w-11',
effectiveExpanded ? 'laptop:w-60' : 'laptop:w-11',
isBannerAvailable
? 'laptop:top-24 laptop:h-[calc(100vh-theme(space.24))]'
: 'laptop:top-16 laptop:h-[calc(100vh-theme(space.16))]',
featureTheme && 'bg-transparent',
disabled && 'pointer-events-none select-none',
)}
aria-disabled={disabled || undefined}
>
<SidebarScrollWrapper>
<Nav>
<SidebarMenuIcon />
{/* Primary Action */}
<div
className={classNames(
'mb-2 flex items-center justify-center transition-[padding] duration-300',
sidebarExpanded ? 'px-2' : 'px-1',
)}
>
<CreatePostButton
<Nav
className={classNames(
disabled &&
'[&_a]:!text-text-disabled [&_button]:!text-text-disabled [&_span]:!text-text-disabled [&_svg]:!text-text-disabled',
)}
>
{!disabled && <SidebarMenuIcon />}
{!disabled && (
<div
className={classNames(
'!flex whitespace-nowrap',
sidebarExpanded ? 'w-full justify-start' : 'justify-center',
'mb-2 flex items-center justify-center transition-[padding] duration-300',
effectiveExpanded ? 'px-2' : 'px-1',
)}
compact={!sidebarExpanded}
size={ButtonSize.Small}
showIcon
/>
</div>
>
<CreatePostButton
className={classNames(
'!flex whitespace-nowrap',
effectiveExpanded ? 'w-full justify-start' : 'justify-center',
)}
compact={!effectiveExpanded}
size={ButtonSize.Small}
showIcon
/>
</div>
)}

{/* Primary Navigation - Always visible */}
<MainSection
Expand All @@ -82,32 +94,33 @@ export const SidebarDesktop = ({
isItemsButton={isNavButtons}
/>

{/* User Content Sections */}
<CustomFeedSection
{...defaultRenderSectionProps}
onNavTabClick={onNavTabClick}
title="Feeds"
isItemsButton={false}
/>
<NetworkSection
{...defaultRenderSectionProps}
title="Squads"
isItemsButton={isNavButtons}
key="network-section"
/>
<BookmarkSection
{...defaultRenderSectionProps}
title="Saved"
isItemsButton={false}
key="bookmark-section"
/>

{/* Discovery Section */}
<DiscoverSection
{...defaultRenderSectionProps}
title="Discover"
isItemsButton={isNavButtons}
/>
{!disabled && (
<>
<CustomFeedSection
{...defaultRenderSectionProps}
onNavTabClick={onNavTabClick}
title="Feeds"
isItemsButton={false}
/>
<NetworkSection
{...defaultRenderSectionProps}
title="Squads"
isItemsButton={isNavButtons}
key="network-section"
/>
<BookmarkSection
{...defaultRenderSectionProps}
title="Saved"
isItemsButton={false}
key="bookmark-section"
/>
<DiscoverSection
{...defaultRenderSectionProps}
title="Discover"
isItemsButton={isNavButtons}
/>
</>
)}
</Nav>
</SidebarScrollWrapper>
</SidebarAside>
Expand Down
4 changes: 4 additions & 0 deletions packages/shared/src/components/sidebar/SidebarTablet.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,15 @@ export const SidebarTablet = ({
activePage,
featureTheme,
onLogoClick,
disabled,
}: {
activePage: string;
featureTheme?: {
logo?: string;
logoText?: string;
};
onLogoClick?: (e: React.MouseEvent) => unknown;
disabled?: boolean;
}): ReactElement => {
const { alerts } = useAlertsContext();
const { user, isLoggedIn, squads } = useAuthContext();
Expand Down Expand Up @@ -91,6 +93,8 @@ export const SidebarTablet = ({
className={classNames(
'w-16 items-center gap-4',
featureTheme && 'bg-transparent',
disabled &&
'pointer-events-none select-none [&_a]:!text-text-disabled [&_button]:!text-text-disabled [&_span]:!text-text-disabled [&_svg]:!text-text-disabled',
)}
>
<HeaderLogo
Expand Down
1 change: 1 addition & 0 deletions packages/shared/src/lib/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export const slackIntegration = 'https://r.daily.dev/slack';
export const statusPage = 'https://r.daily.dev/status';
export const businessWebsiteUrl = 'https://r.daily.dev/business';
export const appsUrl = 'https://daily.dev/apps';
export const mobileAppUrl = 'https://app.daily.dev';
export const timezoneSettingsUrl = 'https://r.daily.dev/timezone';
export const isDevelopment = process.env.NODE_ENV === 'development';
export const isProductionAPI =
Expand Down
9 changes: 6 additions & 3 deletions packages/webapp/components/footer/FooterWrapper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ export default function FooterWrapper({
post,
}: FooterNavBarProps): ReactElement {
const router = useRouter();
const isOnboardingV2 = router?.pathname === '/onboarding-v2';

const showPlusButton =
!router?.pathname?.startsWith('/settings') &&
Expand All @@ -55,9 +56,11 @@ export default function FooterWrapper({
'bg-gradient-to-t from-background-subtle from-70% to-transparent px-2 pt-2',
)}
>
<div className="hidden tablet:block">
<ScrollToTopButton />
</div>
{!isOnboardingV2 && (
<div className="hidden tablet:block">
<ScrollToTopButton />
</div>
)}
{post && post.type !== PostType.Brief && (
<div className="my-2 w-full px-2 tablet:hidden">
<NewComment
Expand Down
Loading