diff --git a/app/components/Container/Container.styles.ts b/app/components/Container/Container.styles.ts index c41d13c..d7b0425 100644 --- a/app/components/Container/Container.styles.ts +++ b/app/components/Container/Container.styles.ts @@ -5,7 +5,7 @@ export const widths = { }; export const bgColors = { - black: 'bg--black text-white', + black: 'bg-black text-white', white: 'bg-white text-black', 'fog-light': 'bg-fog-light text-black', 'red-gradient': 'bg-soe-red-gradient text-white', diff --git a/app/components/FeatureHero/FeatureHero.styles.ts b/app/components/FeatureHero/FeatureHero.styles.ts new file mode 100644 index 0000000..d2ed356 --- /dev/null +++ b/app/components/FeatureHero/FeatureHero.styles.ts @@ -0,0 +1,4 @@ +export const root = 'h-full max-h-[1200px] relative overflow-hidden'; +export const wrapper = 'mr-0 au-ml-auto flex-col lg:flex-row'; +export const gradient = 'absolute top-0 left-0 bg-feature-gradient-rl bg-feature-gradient-bt w-full h-full z-30'; +export const contentWrapper = 'lg:rs-pr-9 ml-0 *:text-white z-50'; \ No newline at end of file diff --git a/app/components/FeatureHero/FeatureHero.tsx b/app/components/FeatureHero/FeatureHero.tsx new file mode 100644 index 0000000..7ce4f87 --- /dev/null +++ b/app/components/FeatureHero/FeatureHero.tsx @@ -0,0 +1,50 @@ +'use client' + +import { HTMLAttributes } from 'react'; +import { Container } from '../Container'; +import { FlexBox } from '../FlexBox'; +// import * as styles from './FeatureHero.styles'; +import Image from 'next/image'; +import ShapeA from '../images/shape-a'; +import { motion, useScroll, useTransform } from 'framer-motion'; + +type FeatureHeroProps = HTMLAttributes & { + children: React.ReactNode; + imageSrc?: string; +}; + +export const FeatureHero = ({ + children, + ...props +}: FeatureHeroProps) => { + const { scrollYProgress } = useScroll(); + const opacity = useTransform(scrollYProgress, [0, 0.05], [1, 0]); + + + return ( + + + {children} + +
+ + +
+ + +
+ +
+
+ +)}; diff --git a/app/components/FeatureHero/index.ts b/app/components/FeatureHero/index.ts new file mode 100644 index 0000000..d51221b --- /dev/null +++ b/app/components/FeatureHero/index.ts @@ -0,0 +1,2 @@ +export * from './FeatureHero'; +export * from './FeatureHero.styles'; diff --git a/app/components/ShapeAnimation/ShapeAnimation.tsx b/app/components/ShapeAnimation/ShapeAnimation.tsx index 66e598e..8396e05 100644 --- a/app/components/ShapeAnimation/ShapeAnimation.tsx +++ b/app/components/ShapeAnimation/ShapeAnimation.tsx @@ -50,8 +50,8 @@ export const ShapeAnimation = () => { }, [pathIndex, currentPath]); return ( -
- +
+
diff --git a/app/components/TimelineBanner/TimelineBanner.styles.ts b/app/components/TimelineBanner/TimelineBanner.styles.ts index e8c1994..fdd35dc 100644 --- a/app/components/TimelineBanner/TimelineBanner.styles.ts +++ b/app/components/TimelineBanner/TimelineBanner.styles.ts @@ -1,8 +1,8 @@ export const root = 'overflow-hidden'; export const wrapper = 'mr-0 au-ml-auto flex-col lg:flex-row'; -export const contentWrapper = 'lg:rs-pr-9 ml-0'; +export const contentWrapper = 'lg:rs-pr-9 ml-0 flex flex-col'; export const heading = '2xl:whitespace-pre-line -mt-01em rs-mb-2 xl:max-w-1200'; -export const superhead = 'order-first'; +export const superhead = 'order-first mb-38'; export const body = 'max-w-[50ch] rs-mb-3 *:*:leading-snug'; export const imageWrapper = 'group relative w-300 h-300 perspective-600'; export const image = 'object-cover w-full h-full transform rotate-y-30 group-hocus:-rotate-y-30 skew-y-12 ease-in duration-300 rounded-[30px]'; diff --git a/app/components/Typography/Text.tsx b/app/components/Typography/Text.tsx index b6945e0..64e7951 100644 --- a/app/components/Typography/Text.tsx +++ b/app/components/Typography/Text.tsx @@ -1,6 +1,6 @@ import { ReactNode, TimeHTMLAttributes } from 'react'; import { cnb } from 'cnbuilder'; -import { HeroIcon, type HeroIconProps, type IconType } from '../HeroIcon'; +import { HeroIcon, type HeroIconProps, type IconType } from '../images/HeroIcon'; import * as styles from './typography.styles'; import * as types from './typography.types'; diff --git a/app/components/HeroIcon/HeroIcon.styles.tsx b/app/components/images/HeroIcon/HeroIcon.styles.tsx similarity index 100% rename from app/components/HeroIcon/HeroIcon.styles.tsx rename to app/components/images/HeroIcon/HeroIcon.styles.tsx diff --git a/app/components/HeroIcon/HeroIcon.tsx b/app/components/images/HeroIcon/HeroIcon.tsx similarity index 100% rename from app/components/HeroIcon/HeroIcon.tsx rename to app/components/images/HeroIcon/HeroIcon.tsx diff --git a/app/components/HeroIcon/index.ts b/app/components/images/HeroIcon/index.ts similarity index 100% rename from app/components/HeroIcon/index.ts rename to app/components/images/HeroIcon/index.ts diff --git a/app/components/images/shape-a.tsx b/app/components/images/shape-a.tsx new file mode 100644 index 0000000..21d0c39 --- /dev/null +++ b/app/components/images/shape-a.tsx @@ -0,0 +1,16 @@ +import { HtmlHTMLAttributes } from 'react'; + +type Props = HtmlHTMLAttributes & { + height?: number + width?: number | string +} + +const ShapeA = ({ height = 900, width = '100%', ...props }: Props) => { + return ( + + + + ); +}; + +export default ShapeA; \ No newline at end of file diff --git a/app/page.tsx b/app/page.tsx index c9a5885..fe7f05e 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,13 +1,31 @@ -import { Heading } from '@/components/Typography'; +import { Heading, Text } from '@/components/Typography'; import { ShapeAnimation } from '@/components/ShapeAnimation'; import { TimelineBanner } from '@/components/TimelineBanner'; import { Masthead } from './components/Masthead'; +import { FeatureHero } from './components/FeatureHero'; export default function Home() { return (
- SOE Centennial + + + Exploring the reengineering of immune cells + + + Change Makers + + + The Sarafan ChEM-H Institute scholar is building a multidisciplinary lab to explore the reengineering of immune cells. Before coming to Stanford, she says, “I was thinking in terms of understanding. Now I feel that I can start thinking in terms of creating.” + + + by Jess Alvarenga + +
diff --git a/next.config.mjs b/next.config.mjs index 7ad85bf..cdaf77c 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -3,6 +3,7 @@ const nextConfig = { basePath: '/soe-centennial-nextjs', output: 'export', reactStrictMode: true, + images: { unoptimized: true }, }; export default nextConfig; diff --git a/package-lock.json b/package-lock.json index a5e1854..ab8bbe8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@tailwindcss/container-queries": "^0.1.1", "cnbuilder": "^3.1.0", "flubber": "^0.4.2", - "framer-motion": "^11.9.0", + "framer-motion": "^11.11.9", "next": "14.2.14", "react": "^18", "react-dom": "^18" @@ -2235,9 +2235,9 @@ } }, "node_modules/framer-motion": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.9.0.tgz", - "integrity": "sha512-nCfGxvsQecVLjjYDu35G2F5ls+ArE3FBfhxV0RSiisMaUKqteq5DMBFNRKwMyVj+VqKTNhawt+BV480YCHKFlQ==", + "version": "11.11.9", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.11.9.tgz", + "integrity": "sha512-XpdZseuCrZehdHGuW22zZt3SF5g6AHJHJi7JwQIigOznW4Jg1n0oGPMJQheMaKLC+0rp5gxUKMRYI6ytd3q4RQ==", "dependencies": { "tslib": "^2.4.0" }, diff --git a/package.json b/package.json index 739b1b3..9e7f5d3 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "build": "next build", "start": "next start", "lint": "next lint", - "lint:fix": "eslint \"{components,utilities}/**/*.{ts,tsx,js,jsx}\" --quiet --fix", + "lint:fix": "eslint \"app/{components,utilities}/**/*.{ts,tsx,js,jsx}\" --quiet --fix", "typecheck": "tsc --noEmit", "tsc": "tsc" }, @@ -16,7 +16,7 @@ "@tailwindcss/container-queries": "^0.1.1", "cnbuilder": "^3.1.0", "flubber": "^0.4.2", - "framer-motion": "^11.9.0", + "framer-motion": "^11.11.9", "next": "14.2.14", "react": "^18", "react-dom": "^18" diff --git a/public/assets/images/Hawa-Racine-Thiam.jpg b/public/assets/images/Hawa-Racine-Thiam.jpg new file mode 100644 index 0000000..926583c Binary files /dev/null and b/public/assets/images/Hawa-Racine-Thiam.jpg differ diff --git a/public/assets/images/Hawa-Racine-Thiam_silhouette.png b/public/assets/images/Hawa-Racine-Thiam_silhouette.png new file mode 100644 index 0000000..8b0b2b5 Binary files /dev/null and b/public/assets/images/Hawa-Racine-Thiam_silhouette.png differ diff --git a/public/assets/images/centennial-shape-a.svg b/public/assets/images/centennial-shape-a.svg new file mode 100644 index 0000000..0351287 --- /dev/null +++ b/public/assets/images/centennial-shape-a.svg @@ -0,0 +1,3 @@ + + + diff --git a/tailwind.config.ts b/tailwind.config.ts index 3652d65..945806a 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -19,13 +19,22 @@ export default { ], theme: { extend: { + colors: { + 'soe-black': '#181818', + }, backgroundImage: { 'soe-red-gradient': 'linear-gradient(90deg, #400000 0.19%, #7A0000 52.26%, #400000 99.94%)', + 'feature-gradient-bt': 'linear-gradient(180deg, rgba(0, 0, 0, 0.00) 75.5%, #181818 100%)', + 'feature-gradient-rl': 'linear-gradient(270deg, rgba(23, 23, 26, 0.00) 0.11%, #181818 99.89%)', + }, + fontFamily: { + 'dm-sans': ['var(--font-dm-sans)', 'sans-serif'], + stanford: ['var(--font-stanford)', 'sans-serif'], }, }, }, plugins: [ require('@tailwindcss/container-queries'), - require("@xpd/tailwind-3dtransforms") + require('@xpd/tailwind-3dtransforms'), ], } satisfies Config; \ No newline at end of file