diff --git a/apps/web/netlify/edge-functions/og.tsx b/apps/web/netlify/edge-functions/og.tsx index 6461d65ca7..8d2b66cabf 100644 --- a/apps/web/netlify/edge-functions/og.tsx +++ b/apps/web/netlify/edge-functions/og.tsx @@ -115,7 +115,7 @@ function renderTemplate(params: z.infer) { {params.title}
- {params.headers.map((header, i) => ( + {params.headers.map((header: string, i: number) => (
); } +const floatingPanelTabs = [ + { + title: "Compact Mode", + description: + "Minimal overlay that indicates recording is active. Stays out of your way.", + image: + "https://ijoptyyjrfqwaqhyxkxj.supabase.co/storage/v1/object/public/public_images/hyprnote/float-compact.jpg", + }, + { + title: "Memos", + description: + "Take quick notes during the meeting without losing focus on the conversation.", + image: + "https://ijoptyyjrfqwaqhyxkxj.supabase.co/storage/v1/object/public/public_images/hyprnote/float-memos.jpg", + }, + { + title: "Transcript", + description: + "Watch the live transcript as the conversation unfolds in real-time.", + image: + "https://ijoptyyjrfqwaqhyxkxj.supabase.co/storage/v1/object/public/public_images/hyprnote/float-transcript.jpg", + }, + { + title: "Live Insights", + description: + "Rolling summary of the past 5 minutes with AI suggestions and next steps.", + image: + "https://ijoptyyjrfqwaqhyxkxj.supabase.co/storage/v1/object/public/public_images/hyprnote/float-insights.jpg", + }, + { + title: "Chat", + description: "Ask questions and get instant answers during the meeting.", + image: + "https://ijoptyyjrfqwaqhyxkxj.supabase.co/storage/v1/object/public/public_images/hyprnote/float-chat.jpg", + }, +]; + function FloatingPanelSection() { return (
@@ -2067,10 +2142,73 @@ function FloatingPanelHeader() { } function FloatingPanelContent() { + const [selectedTab, setSelectedTab] = useState(0); + const scrollRef = useRef(null); + + const scrollToTab = (index: number) => { + setSelectedTab(index); + if (scrollRef.current) { + const container = scrollRef.current; + const scrollLeft = container.offsetWidth * index; + container.scrollTo({ left: scrollLeft, behavior: "smooth" }); + } + }; + return (
+ + - +
+ ); +} + +function FloatingPanelTablet({ + selectedTab, + setSelectedTab, +}: { + selectedTab: number; + setSelectedTab: (index: number) => void; +}) { + return ( +
+
+
+
+ {floatingPanelTabs.map((tab, index) => ( + + ))} +
+
+ +
+ {`${floatingPanelTabs[selectedTab].title} +
+
); } @@ -2078,52 +2216,14 @@ function FloatingPanelContent() { function FloatingPanelDesktop() { const [selectedTab, setSelectedTab] = useState(0); - const tabs = [ - { - title: "Compact Mode", - description: - "The default collapsed overlay that indicates the meeting is being listened to. Minimal and unobtrusive, staying out of your way.", - image: - "https://ijoptyyjrfqwaqhyxkxj.supabase.co/storage/v1/object/public/public_images/hyprnote/float-compact.jpg", - }, - { - title: "Memos", - description: - "Take quick notes during the meeting. Jot down important points, ideas, or reminders without losing focus on the conversation.", - image: - "https://ijoptyyjrfqwaqhyxkxj.supabase.co/storage/v1/object/public/public_images/hyprnote/float-memos.jpg", - }, - { - title: "Transcript", - description: - "Watch the live transcript as the conversation unfolds in real-time, so you never miss what was said during the meeting.", - image: - "https://ijoptyyjrfqwaqhyxkxj.supabase.co/storage/v1/object/public/public_images/hyprnote/float-transcript.jpg", - }, - { - title: "Live Insights", - description: - "Get a rolling summary of the past 5 minutes with AI-powered suggestions. For sales calls, receive prompts for qualification questions and next steps.", - image: - "https://ijoptyyjrfqwaqhyxkxj.supabase.co/storage/v1/object/public/public_images/hyprnote/float-insights.jpg", - }, - { - title: "Chat", - description: - "Ask questions and get instant answers during the meeting. Query the transcript, get clarifications, or find specific information on the fly.", - image: - "https://ijoptyyjrfqwaqhyxkxj.supabase.co/storage/v1/object/public/public_images/hyprnote/float-chat.jpg", - }, - ]; - return ( -
+
- {tabs.map((tab, index) => ( + {floatingPanelTabs.map((tab, index) => (
setSelectedTab(index)} @@ -2133,12 +2233,12 @@ function FloatingPanelDesktop() { selectedTab === index ? "bg-stone-50" : "hover:bg-neutral-50", ])} > -

- +

+

{tab.title} - {" "} - – {tab.description} -

+

+

{tab.description}

+
))}
@@ -2146,8 +2246,8 @@ function FloatingPanelDesktop() {
{`${tabs[selectedTab].title}
@@ -2155,52 +2255,69 @@ function FloatingPanelDesktop() { ); } -function FloatingPanelMobile() { +function FloatingPanelMobile({ + scrollRef, + selectedTab, + setSelectedTab, + scrollToTab, +}: { + scrollRef: React.RefObject; + selectedTab: number; + setSelectedTab: (index: number) => void; + scrollToTab: (index: number) => void; +}) { return (
-
- Floating panel preview -
-
-

- Compact Mode – - The default collapsed overlay that indicates the meeting is being - listened to. Minimal and unobtrusive, staying out of your way. -

-
-
-

- Memos – Take - quick notes during the meeting. Jot down important points, ideas, or - reminders without losing focus on the conversation. -

-
-
-

- Transcript – - Watch the live transcript as the conversation unfolds in real-time, so - you never miss what was said during the meeting. -

-
-
-

- Live Insights – - Get a rolling summary of the past 5 minutes with AI-powered - suggestions. For sales calls, receive prompts for qualification - questions and next steps. -

+
{ + const container = e.currentTarget; + const scrollLeft = container.scrollLeft; + const itemWidth = container.offsetWidth; + const index = Math.round(scrollLeft / itemWidth); + setSelectedTab(index); + }} + > +
+ {floatingPanelTabs.map((tab, index) => ( +
+
+
+ {`${tab.title} +
+
+

+ + {tab.title} + {" "} + – {tab.description} +

+
+
+
+ ))} +
-
-

- Chat – Ask - questions and get instant answers during the meeting. Query the - transcript, get clarifications, or find specific information on the - fly. -

+ +
+ {tabs.map((_, index) => ( +
);