"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.
) : (
)}
)
}