11"use client" ;
22
3- import { classNames } from "@cap/utils/helpers" ;
43import { useRef } from "react" ;
54import { Eyebrow } from "../Eyebrow" ;
65import { Fit , LazyMount } from "../scenes/engine" ;
7- import {
8- BAND ,
9- BODY_TEXT ,
10- grainBg ,
11- H_SECTION ,
12- MODE_THEME ,
13- meshStyle ,
14- } from "../theme" ;
6+ import { BAND , BODY_TEXT , grainBg , H_SECTION , MODE_THEME } from "../theme" ;
157import { useInView , useReducedMotion } from "../visibility" ;
168import { CARDS_A , CARDS_B } from "./catalog" ;
179import { CANVAS , type StudioCard } from "./shared" ;
1810
1911const ORDER = [
2012 "mask" ,
21- "text" ,
2213 "scenes" ,
2314 "zoom" ,
2415 "captions" ,
16+ "text" ,
2517 "three-d" ,
2618 "canvas" ,
2719 "grades" ,
2820 "clips" ,
2921] ;
30- const SPAN : Record < string , 1 | 2 > = { mask : 2 , scenes : 2 , clips : 2 } ;
3122const ALL = [ ...CARDS_A , ...CARDS_B ] ;
3223const CARDS = ORDER . flatMap ( ( key ) => {
3324 const card = ALL . find ( ( item ) => item . key === key ) ;
34- return card ? [ { ... card , span : SPAN [ key ] ?? 1 } ] : [ ] ;
25+ return card ? [ card ] : [ ] ;
3526} ) ;
3627
3728const Card = ( { card } : { card : StudioCard } ) => {
@@ -41,35 +32,22 @@ const Card = ({ card }: { card: StudioCard }) => {
4132 return (
4233 < li
4334 ref = { ref }
44- className = { classNames (
45- "flex flex-col rounded-[22px] p-3" ,
46- card . span === 2 ? "lg:col-span-2" : undefined ,
47- ) }
35+ className = "flex flex-col rounded-[18px] p-1.5 shadow-[0_0_0_1px_rgba(17,17,17,0.05)] md:last:col-span-2 lg:last:col-span-1"
4836 style = { grainBg ( BAND ) }
4937 >
50- < div className = "rounded-[16px] p-2" style = { meshStyle ( MODE_THEME . studio ) } >
51- < LazyMount
52- w = { CANVAS . w }
53- h = { CANVAS . h }
54- grow = { card . span === 2 }
55- className = "mx-auto"
56- >
57- < Fit
58- w = { CANVAS . w }
59- h = { CANVAS . h }
60- grow = { card . span === 2 }
61- className = "mx-auto"
62- >
38+ < div className = "overflow-hidden rounded-[13px] shadow-[0_0_0_1px_rgba(17,17,17,0.06)]" >
39+ < LazyMount w = { CANVAS . w } h = { CANVAS . h } grow >
40+ < Fit w = { CANVAS . w } h = { CANVAS . h } grow >
6341 < card . Visual playing = { inView && ! reduced } />
6442 </ Fit >
6543 </ LazyMount >
6644 </ div >
67- < div className = "px-3 pb-3 pt-5" >
68- < h3 className = "text-[19px ] font-normal leading-[1.15 ] tracking-[-0.02em] text-[#111111]" >
45+ < div className = "px-3.5 pb-3.5 pt-3. 5" >
46+ < h3 className = "text-[17px ] font-medium leading-[1.2 ] tracking-[-0.02em] text-[#111111]" >
6947 { card . title }
7048 </ h3 >
7149 < p
72- className = { `${ BODY_TEXT } mt-2 text-[14.5px ] leading-[1.5] text-[rgba(17,17,17,0.72 )]` }
50+ className = { `${ BODY_TEXT } mt-1.5 text-[14px ] leading-[1.5] text-[rgba(17,17,17,0.68 )]` }
7351 >
7452 { card . body }
7553 </ p >
@@ -81,25 +59,25 @@ const Card = ({ card }: { card: StudioCard }) => {
8159export const StudioFeatures = ( ) => (
8260 < section className = "px-5 py-16 lg:py-24" >
8361 < div className = "mx-auto max-w-[1200px]" >
84- < div className = "mx-auto flex max-w-[760px ] flex-col items-center text-center" >
62+ < div className = "mx-auto flex max-w-[720px ] flex-col items-center text-center" >
8563 < Eyebrow accent = { MODE_THEME . studio . accent } >
8664 Studio Mode · The editor
8765 </ Eyebrow >
8866 < h2
89- className = { `${ H_SECTION } mt-6 text-balance text-[clamp(38px,5vw,56px )]` }
67+ className = { `${ H_SECTION } mt-6 text-balance text-[clamp(34px,4.4vw,48px )]` }
9068 >
9169 Polish it before anyone sees it
9270 </ h2 >
9371 < p
94- className = { `${ BODY_TEXT } mt-6 max-w-[620px ] text-balance text-[16.5px ] leading-[1.5] text-[rgba(17,17,17,0.78)] sm:text-[17.5px ]` }
72+ className = { `${ BODY_TEXT } mt-5 max-w-[560px ] text-balance text-[16px ] leading-[1.5] text-[rgba(17,17,17,0.78)] sm:text-[17px ]` }
9573 >
9674 Studio Mode opens straight into an editor made for screen recordings.
9775 Blur what is private, switch scenes between screen and camera, add
9876 text and captions, grade the color, and export in 4K or as a link.
9977 </ p >
10078 </ div >
10179
102- < ul className = "mt-14 grid gap-4 md:grid-cols-2 lg:grid-cols-3" >
80+ < ul className = "mt-10 grid gap-3 md:grid-cols-2 lg:grid-cols-3" >
10381 { CARDS . map ( ( card ) => (
10482 < Card key = { card . key } card = { card } />
10583 ) ) }
0 commit comments