diff --git a/apps/desktop2/src/components/main/body/sessions/floating-regenerate-button.tsx b/apps/desktop2/src/components/main/body/sessions/floating-regenerate-button.tsx new file mode 100644 index 000000000..7ea2d52d1 --- /dev/null +++ b/apps/desktop2/src/components/main/body/sessions/floating-regenerate-button.tsx @@ -0,0 +1,74 @@ +import { Button } from "@hypr/ui/components/ui/button"; +import { SparklesIcon } from "lucide-react"; +import { useState } from "react"; + +const TEMPLATES = [ + "Brainstorming", + "1-on-1", + "User Interview", + "Daily Standup", + "Project Plan", + "Meeting Notes", + "Action Items", + "Decision Log", + "Key Insights", + "Brainstorming", + "1-on-1", +]; + +export function FloatingRegenerateButton() { + const [showTemplates, setShowTemplates] = useState(false); + + return ( +
+ {/* White card - slides up from behind */} +
setShowTemplates(true)} + onMouseLeave={() => setShowTemplates(false)} + > +
+
+ {TEMPLATES.map((template) => ( + + ))} +
+ +
+
+ or +
+
+
+
+ + {/* Black button - always on top */} + +
+ ); +} diff --git a/apps/desktop2/src/components/main/body/sessions/index.tsx b/apps/desktop2/src/components/main/body/sessions/index.tsx index df9c6ae93..ce7e54dd8 100644 --- a/apps/desktop2/src/components/main/body/sessions/index.tsx +++ b/apps/desktop2/src/components/main/body/sessions/index.tsx @@ -5,6 +5,7 @@ import NoteEditor from "@hypr/tiptap/editor"; import * as persisted from "../../../../store/tinybase/persisted"; import { rowIdfromTab, type Tab } from "../../../../store/zustand/tabs"; import { type TabItem, TabItemBase } from "../shared"; +import { FloatingRegenerateButton } from "./floating-regenerate-button"; import { InnerHeader } from "./inner-header"; import { OuterHeader } from "./outer-header"; import { AudioPlayer } from "./player"; @@ -51,7 +52,7 @@ export function TabContentNote({ tab }: { tab: Tab }) { ); return ( -
+
- handleEditRawMd(e)} - mentionConfig={{ - trigger: "@", - handleSearch: async () => { - return []; - }, - }} - /> +
+ handleEditRawMd(e)} + mentionConfig={{ + trigger: "@", + handleSearch: async () => { + return []; + }, + }} + /> +
{showAudioPlayer && } +
); }