Skip to content

Commit 5edae3f

Browse files
committed
Content menu WIP and more clean up
1 parent bb1c6b0 commit 5edae3f

18 files changed

+48
-146
lines changed
File renamed without changes.

components/Storyblok/PageHeader/HeaderNoImage.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import { hasRichText } from '@/utilities/hasRichText';
55
import { type HeaderProps } from './Header.types';
66
import { darkBgColors } from '@/utilities/datasource';
77

8+
/**
9+
* This header variant is used for Interior Pages, Support Page and Story Overview Page.
10+
*/
811
type HeaderNoImageProps = Partial<HeaderProps>;
912

1013
export const HeaderNoImage = ({ blok }: HeaderNoImageProps) => {

components/Storyblok/partials/CampaignHeader.tsx renamed to components/Storyblok/SbCampaignPage/CampaignHeader.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, { useId } from 'react';
22
import { type SbBlokData } from '@storyblok/react/rsc';
33
import { CreateBloks } from '@/components/CreateBloks';
4-
import { CampaignHero } from '@/components/Storyblok/partials/CampaignHero';
4+
import { CampaignHero } from '@/components/Storyblok/SbCampaignPage/CampaignHero';
55

66
export type CampaignHeaderProps = {
77
blok: SbBlokData & {

components/Storyblok/SbCampaignPage.tsx renamed to components/Storyblok/SbCampaignPage/SbCampaignPage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from 'react';
22
import { storyblokEditable, type SbBlokData } from '@storyblok/react/rsc';
33
import { CreateBloks } from '@/components/CreateBloks';
4-
import { CampaignHeader, type CampaignHeaderProps } from '@/components/Storyblok/partials/CampaignHeader';
4+
import { CampaignHeader, type CampaignHeaderProps } from '@/components/Storyblok/SbCampaignPage/CampaignHeader';
55
import { IconCardSection, type IconCardSectionProps } from '@/components/Storyblok/partials/IconCardSection';
66
import { Footer, type FooterProps } from '@/components/Storyblok/partials/Footer';
77

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export const mobileButton = 'relative w-full flex items-center justify-between max-w-400 mx-auto py-10 px-30 text-15 md:text-16 text-white uppercase tracking-widest leading-none font-semibold bg-transparent shadow-white shadow-[inset_0_0_0_1px] transition-shadow hocus:text-white hocus:shadow-[inset_0_0_0_3px]';
2+
export const mobileButtonIcon = 'w-22 stroke-2';

components/Storyblok/SbContentMenu/SbContentMenu.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ import { Heading } from '@/components/Typography';
99
import { HeroIcon } from '@/components/HeroIcon';
1010
import { config } from '@/utilities/config';
1111
import { getNumBloks } from '@/utilities/getNumBloks';
12+
import * as styles from './SbContentMenu.styles';
1213

1314
export type SbContentMenuProps = {
1415
blok: SbBlokData & {
1516
menuTitle?: string;
1617
relatedMenuTitle?: string;
18+
// Either a content menu parent item or a content nav item can be added to the below two links fields
1719
menuLinks?: SbBlokData[];
1820
relatedMenuLinks?: SbBlokData[];
1921
};
@@ -34,7 +36,7 @@ const MenuContent = ({
3436
relatedLinks,
3537
}: MenuContentProps) => (
3638
<>
37-
<div className={`ood-content-nav__menu-group`}>
39+
<div className={`ood-content-nav__menu-group text-white`}>
3840
{title && (
3941
<Heading font="sans" uppercase tracking="widest" className="mt-26 lg:mt-0 text-18 ml-16 lg:ml-0">
4042
{title}
@@ -99,13 +101,13 @@ export const SbContentMenu = ({ blok, slug }: SbContentMenuProps) => {
99101
{({ open }) => (
100102
<>
101103
<PopoverButton
102-
className={`ood-content-nav__toggle`}
104+
className={styles.mobileButton}
103105
>
104106
{open ? 'Close' : 'Section Menu'}{' '}
105107
<HeroIcon
106108
icon={open ? 'close' : 'menu'}
107109
noBaseStyle
108-
// className={styles.mobileButtonIcon}
110+
className={styles.mobileButtonIcon}
109111
/>
110112
</PopoverButton>
111113
<Transition

components/Storyblok/SbContentMenu/SbContentNestedMenu.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { type SbBlokData, storyblokEditable } from '@storyblok/react/rsc';
22
// import { CreateBloks } from '@/components/CreateBloks';
33

44
/**
5-
* This component renders a nested menu that has a parent link item in the content menu.
5+
* This component renders a nested menu that can be added to the content menu parent item.
66
* This nested menu can be 2nd or 3rd level.
77
*/
88
export type SbContentNestedMenuProps = {

components/Storyblok/SbInteriorPage.tsx

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
import { type SbBlokData, storyblokEditable } from '@storyblok/react/rsc';
33
import { useWindowSize } from 'usehooks-ts';
44
import {
5-
HeaderFullWidthImage, HeaderMinimal, HeaderNoImage, HeaderSmallImage,
5+
HeaderFullWidthImage, HeaderMinimal, HeaderNoImage, HeaderSmallImage, type HeaderProps,
66
} from '@/components/Storyblok/PageHeader';
7+
import { Container } from '@/components/Container';
78
import { Grid } from '@/components/Grid';
89
import { IconCardSection, type IconCardSectionProps } from '@/components/Storyblok/partials/IconCardSection';
910
import { Footer, type FooterProps } from '@/components/Storyblok/partials/Footer';
@@ -12,13 +13,15 @@ import { Heading } from '@/components/Typography';
1213
import { CreateBloks } from '@/components/CreateBloks';
1314
import { getNumBloks } from '@/utilities/getNumBloks';
1415
import { config } from '@/utilities/config';
16+
import { darkBgColors } from '@/utilities/datasource';
1517

1618

17-
export type SbInteriorPageProps =
19+
export type SbInteriorPageProps = HeaderProps
1820
& IconCardSectionProps
1921
& FooterProps
2022
& {
2123
blok: SbBlokData & {
24+
layout?: 'left-sidebar' | 'no-sidebar';
2225
localHeader: SbBlokData[];
2326
alertPicker: SbBlokData[];
2427
contentMenu: SbBlokData[];
@@ -33,18 +36,27 @@ export type SbInteriorPageProps =
3336

3437
export const SbInteriorPage = (props: SbInteriorPageProps) => {
3538
const windowSize = useWindowSize();
39+
const hasHeroImage = props.blok.headerStyle === 'has-image' || props.blok.headerStyle === 'full-width-image';
40+
const hasContentMenu = !!getNumBloks(props.blok.contentMenu);
41+
const showMobileContentMenu = windowSize.width < config.breakpoints.lg && hasContentMenu && props.blok.layout === 'left-sidebar';
3642

3743
return (
3844
<div {...storyblokEditable(props.blok)}>
3945
<CreateBloks blokSection={props.blok.alertPicker} />
4046
<CreateBloks blokSection={props.blok.localHeader} slug={props.slug} />
4147
<main id="main-content" className={`ood-interior-page ood-interior-page--${props.blok.headerStyle}`}>
4248
<article className="bg-fog-light">
43-
{/* Mobile content (section) menu */}
44-
{windowSize.width < config.breakpoints.lg &&
45-
<CreateBloks blokSection={props.blok.contentMenu} slug={props.slug} />
46-
}
4749
<header className="break-words">
50+
{/* Mobile content (section) menu */}
51+
{showMobileContentMenu &&
52+
<Container
53+
pt={2}
54+
pb={hasHeroImage ? 2 : undefined}
55+
className={hasHeroImage ? 'bg-palo-alto-dark' : darkBgColors[props.blok.headerBackgroundColor || 'palo-alto-dark']}
56+
>
57+
<CreateBloks blokSection={props.blok.contentMenu} slug={props.slug} />
58+
</Container>
59+
}
4860
{props.blok.headerStyle === 'has-image' && (
4961
<HeaderSmallImage {...props} />
5062
)}

components/Storyblok/SbMegaMenu/SbMegaMenuLinkGroup.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { type SbBlokData, storyblokEditable } from '@storyblok/react/rsc';
22
import { CtaLink } from '@/components/Cta';
3-
import { FlexCell } from '@/components/Storyblok/partials/FlexCell';
3+
import { FlexCell } from '@/components/FlexCell';
44
import { Heading } from '@/components/Typography';
55
import { getNumBloks } from '@/utilities/getNumBloks';
66
import { type SbOodMegaMenuNavItemProps } from '@/components/Storyblok/Storyblok.types';

components/Storyblok/SbNavItem.tsx

Lines changed: 0 additions & 23 deletions
This file was deleted.

components/Storyblok/SbStoryOverviewPage.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import { type SbBlokData } from '@storyblok/react/rsc';
1+
import { storyblokEditable, type SbBlokData } from '@storyblok/react/rsc';
22
import { type StoryblokRichtext } from 'storyblok-rich-text-react-renderer';
3-
import { storyblokEditable } from '@storyblok/react/rsc';
43
import { CreateBloks } from '@/components/CreateBloks';
54
import { Footer, type FooterProps } from '@/components/Storyblok/partials/Footer';
65
import { HeaderNoImage } from '@/components/Storyblok/PageHeader/HeaderNoImage';

components/Storyblok/SbStoryPage/SbStoryFullView.tsx

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { storyblokEditable, type SbBlokData } from '@storyblok/react/rsc';
22
import { CreateBloks } from '@/components/CreateBloks';
3-
import { CenteredContainer } from '@/components/Storyblok/partials/CenteredContainer';
3+
import { Container } from '@/components/Container';
44
import { IconCardSection, type IconCardSectionProps } from '@/components/Storyblok/partials/IconCardSection';
55
import { Footer, type FooterProps } from '@/components/Storyblok/partials/Footer';
66
import { Heading, Paragraph } from '@/components/Typography';
7-
import { FlexCell } from '@/components/Storyblok/partials/FlexCell';
7+
import { FlexCell } from '@/components/FlexCell';
88
import { FullWidthImage, type VisibleVerticalType } from '@/components/Image';
99
import { type SbImageType } from '../Storyblok.types';
1010

@@ -74,10 +74,7 @@ export const SbStoryFullView = (props: SbStoryFullViewProps) => {
7474
className="h-300 md:h-400 xl:h-500 2xl:h-[64rem]"
7575
/>
7676
)}
77-
<CenteredContainer
78-
flex
79-
classes="ood-story__header-content"
80-
>
77+
<Container className="flex ood-story__header-content">
8178
<FlexCell
8279
md={12}
8380
lg={10}
@@ -106,15 +103,15 @@ export const SbStoryFullView = (props: SbStoryFullViewProps) => {
106103
</Paragraph>
107104
)}
108105
</FlexCell>
109-
</CenteredContainer>
106+
</Container>
110107
</header>
111108
<div className="ood-story__content">
112109
<CreateBloks blokSection={props.blok.storyContent} />
113110
</div>
114111
<footer className="ood-story__main-footer">
115112
{(props.blok.author || publishedDate) && (
116113
<div className="ood-story__metadata">
117-
<CenteredContainer flex={true}>
114+
<Container className="flex">
118115
<FlexCell lg={8} className="mx-auto">
119116
<CreateBloks blokSection={props.blok.cta} />
120117
<div className="ood-story__metadata rs-pb-5">
@@ -140,7 +137,7 @@ export const SbStoryFullView = (props: SbStoryFullViewProps) => {
140137
)}
141138
</div>
142139
</FlexCell>
143-
</CenteredContainer>
140+
</Container>
144141
</div>
145142
)}
146143
<CreateBloks blokSection={props.blok.belowContent} />

components/Storyblok/SbSupportPage.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
'use client';
22
import { type MouseEventHandler, useCallback, useEffect } from 'react';
3+
import { storyblokEditable, type SbBlokData } from '@storyblok/react/rsc';
34
import { type StoryblokRichtext } from 'storyblok-rich-text-react-renderer';
45
import { useRouter } from 'next/navigation';
5-
import { storyblokEditable, type SbBlokData } from '@storyblok/react/rsc';
6+
import { Container } from '@/components/Container';
67
import { CreateBloks } from '@/components/CreateBloks';
78
import { HeaderNoImage } from '@/components/Storyblok/PageHeader/HeaderNoImage';
89
import { Footer, type FooterProps } from '@/components/Storyblok/partials/Footer';
910
import { Grid } from '@/components/Grid';
1011
import { IconCardSection, type IconCardSectionProps } from '@/components/Storyblok/partials/IconCardSection';
11-
import { CenteredContainer } from '@/components/Storyblok/partials/CenteredContainer';
1212
import { Heading, SrOnlyText } from '@/components/Typography';
1313
import { type DarkBgColorsType } from '@/utilities/datasource';
1414

@@ -88,7 +88,7 @@ export const SbSupportPage = (props: SbSupportPageProps) => {
8888
</header>
8989
)}
9090
<SrOnlyText as="p">{props.blok.srText}</SrOnlyText>
91-
<CenteredContainer classes="ood-support-page__filter-container">
91+
<Container className="ood-support-page__filter-container">
9292
<input
9393
type="radio"
9494
id="undergraduate"
@@ -195,7 +195,7 @@ export const SbSupportPage = (props: SbSupportPageProps) => {
195195
<CreateBloks blokSection={props.blok.sustainability} />
196196
<CreateBloks blokSection={props.blok.teaching} />
197197
</Grid>
198-
</CenteredContainer>
198+
</Container>
199199
</section>
200200
<CreateBloks blokSection={props.blok.belowContent} />
201201
<footer className="ood-support-page__main-footer">

components/Storyblok/partials/BodyLeftSidebar.tsx

Lines changed: 0 additions & 49 deletions
This file was deleted.

components/Storyblok/partials/CenteredContainer.tsx

Lines changed: 0 additions & 38 deletions
This file was deleted.

components/Storyblok/partials/IconCardSection.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { type SbBlokData } from '@storyblok/react/rsc';
22
import { storyblokEditable } from '@storyblok/react/rsc';
33
import { CreateBloks } from '@/components/CreateBloks';
4+
import { Container } from '@/components/Container';
45
import { Heading } from '@/components/Typography';
5-
import { CenteredContainer } from '@/components/Storyblok/partials/CenteredContainer';
66

77
export type IconCardSectionProps = {
88
blok: SbBlokData & {
@@ -28,12 +28,11 @@ export const IconCardSection = (props: IconCardSectionProps) => {
2828
? props.blok.iconCardHeading
2929
: 'Links to more information'}
3030
</Heading>
31-
<CenteredContainer
32-
flex={true}
33-
classes={`ood-icon-card-section__container su-align-items-stretch su-flex-${numIconCards}-col`}
31+
<Container
32+
className={`flex ood-icon-card-section__container su-align-items-stretch su-flex-${numIconCards}-col`}
3433
>
3534
<CreateBloks blokSection={props.blok.iconCards} />
36-
</CenteredContainer>
35+
</Container>
3736
</div>
3837
);
3938
};

0 commit comments

Comments
 (0)