Skip to content

Commit e018b68

Browse files
Merge pull request #2235 from CapSoftware/studio-bento-real-controls
feat: rebuild the studio bento on the editor's real controls
2 parents 05ebc52 + 617371c commit e018b68

14 files changed

Lines changed: 3035 additions & 1727 deletions

File tree

apps/web/components/pages/HomeTwo/studio/StudioFeatures.tsx

Lines changed: 14 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,28 @@
11
"use client";
22

3-
import { classNames } from "@cap/utils/helpers";
43
import { useRef } from "react";
54
import { Eyebrow } from "../Eyebrow";
65
import { 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";
157
import { useInView, useReducedMotion } from "../visibility";
168
import { CARDS_A, CARDS_B } from "./catalog";
179
import { CANVAS, type StudioCard } from "./shared";
1810

1911
const 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 };
3122
const ALL = [...CARDS_A, ...CARDS_B];
3223
const 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

3728
const 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 }) => {
8159
export 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

Comments
 (0)