"use client" import { LoaderIcon } from "lucide-react" import { useState } from "react" import { useHasCompanyBrain } from "@/hooks/use-company-brain" import { useOrgMemberRole } from "@/hooks/use-org-member-role" import { useOrgSettings, useUpdateOrgSettings } from "@/hooks/use-org-settings" import { dmSans125ClassName, dmSansClassName } from "@/lib/fonts" import { cn } from "@lib/utils" const DESCRIPTION_ID = "workspace-prompt-description" const COUNTER_ID = "workspace-prompt-counter" const HEADING_ID = "workspace-prompt-heading" function SectionHeading({ children }: { children: React.ReactNode }) { return (

{children}

) } function PromptHeader() { return (
Workspace Prompt

Set persistent guidance for how Company Brain works across your workspace.

) } export function WorkspacePrompt({ showHeading = true, }: { showHeading?: boolean }) { const isCompanyBrain = useHasCompanyBrain() const { isAdmin } = useOrgMemberRole(isCompanyBrain) const settingsQuery = useOrgSettings() const updateSettings = useUpdateOrgSettings() const [draft, setDraft] = useState(null) const savedPrompt = settingsQuery.data?.workspacePrompt ?? "" const prompt = draft ?? savedPrompt const dirty = draft !== null && draft.trim() !== savedPrompt.trim() const canClear = !dirty && savedPrompt.length > 0 && isAdmin const handleSave = () => { updateSettings.mutate( { workspacePrompt: prompt.trim() ? prompt.trim() : null, }, { onSuccess: () => setDraft(null) }, ) } if (!isCompanyBrain) return null return (
{showHeading ? : null} {settingsQuery.isLoading ? ( ) : settingsQuery.isError ? (

Workspace prompt could not be loaded.

) : (