{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "orchid-workspace",
  "title": "Orchid Workspace",
  "dependencies": [
    "@heroicons/react@2.2.0"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://ui.orchid.ai/r/orchid-theme.json",
    "https://ui.orchid.ai/r/z-action-row.json",
    "https://ui.orchid.ai/r/z-add-context-button.json",
    "https://ui.orchid.ai/r/z-button.json",
    "https://ui.orchid.ai/r/z-kbd.json",
    "https://ui.orchid.ai/r/z-provider-icon.json"
  ],
  "files": [
    {
      "path": "registry/ui/orchid/examples/orchid-workspace.tsx",
      "content": "\"use client\";\nimport { useState, type ReactNode } from 'react';\nimport { CalendarDaysIcon, PencilSquareIcon, BanknotesIcon } from '@heroicons/react/16/solid';\nimport ZActionRow from \"../spectrum/molecules/z-action-row/z-action-row\";\nimport ZButton from \"../spectrum/atoms/z-button/z-button\";\nimport ZKbd from \"../spectrum/atoms/z-kbd/z-kbd\";\nimport ZProviderIcon from \"../spectrum/atoms/z-provider-icon/z-provider-icon\";\nimport ZAddContextButton from \"../spectrum/molecules/z-add-context-button/z-add-context-button\";\nexport type OrchidWorkspaceProps = {\n    onSubmit?: (message: string) => void;\n    onAddContext?: () => void;\n    onReviewReply?: () => void;\n    onAcceptInvite?: () => void;\n    onDeclineInvite?: () => void;\n    onRefund?: () => void;\n};\nexport default function OrchidWorkspace({ onSubmit, onAddContext, onReviewReply, onAcceptInvite, onDeclineInvite, onRefund, }: OrchidWorkspaceProps) {\n    const [message, setMessage] = useState('Send the meeting summary and decisions to Adam with owners and due dates');\n    const [dismissed, setDismissed] = useState<string[]>([]);\n    function submit(event: React.FormEvent) {\n        event.preventDefault();\n        if (message.trim())\n            onSubmit?.(message.trim());\n    }\n    return (<section className=\"text-neutral mx-auto flex w-full max-w-3xl flex-col gap-3 p-4 sm:p-8\" aria-label=\"Orchid workspace\">\n      <form onSubmit={submit} className=\"bg-surface-subtle mb-5 overflow-hidden rounded-xl p-0.5 shadow-md\">\n        <div className=\"bg-surface flex items-start gap-2 rounded-[10px] p-3\">\n          <ZProviderIcon provider=\"granola\" className=\"mt-0.5 size-4\"/>\n          <label htmlFor=\"orchid-message\" className=\"text-copy text-neutral-subtle pt-0.5\">\n            Granola\n          </label>\n          <textarea id=\"orchid-message\" aria-label=\"Message to delegate\" value={message} onChange={(event) => setMessage(event.target.value)} rows={2} className=\"text-copy min-w-0 flex-1 resize-none bg-transparent outline-none\"/>\n        </div>\n        <div className=\"flex items-center justify-between gap-2 px-2 py-1.5\">\n          <ZAddContextButton providers={['gmail', 'slack', 'linear']} onClick={onAddContext}/>\n          <ZButton type=\"submit\" variant=\"primary\" disabled={!message.trim() || !onSubmit} trailing={<ZKbd shortcut=\"return\"/>}>\n            Go\n          </ZButton>\n        </div>\n      </form>\n\n      {!dismissed.includes('reply') && (<ActionCard>\n          <p className=\"bg-surface text-copy rounded-[10px] p-2 leading-6\">\n            <Person name=\"David Kim\"/> <span className=\"text-neutral-subtle\">from</span>{' '}\n            <Provider name=\"Salesforce\" provider=\"salesforce\"/>{' '}\n            <span className=\"text-neutral-subtle\">\n              sent over the signed term sheet. I've cross-checked the legal terms and prepared the\n              counter-signature for your approval.\n            </span>\n          </p>\n          <ZActionRow hasPadding icon={PencilSquareIcon} iconClassName=\"text-ai\" left={<span className=\"text-copy text-neutral-subtle truncate\">\n                Draft Hi David, thanks for sending this over. I've reviewed the final terms…\n              </span>} right={<>\n                <ZButton onClick={() => setDismissed((items) => [...items, 'reply'])}>\n                  Dismiss\n                </ZButton>\n                <ZButton variant=\"primary\" onClick={onReviewReply} disabled={!onReviewReply} leading={<ZProviderIcon provider=\"gmail\"/>}>\n                  Review Reply\n                </ZButton>\n              </>}/>\n        </ActionCard>)}\n\n      <ActionCard>\n        <p className=\"bg-surface text-copy rounded-[10px] p-2 leading-6\">\n          <Person name=\"Rachel Torres\"/>{' '}\n          <span className=\"text-neutral-subtle\">\n            invited you to Quarterly Board Sync. I've cleared your slot and prepared a meeting brief\n            with last quarter's growth metrics.\n          </span>\n        </p>\n        <ZActionRow hasPadding icon={CalendarDaysIcon} left={<span className=\"text-copy text-neutral-subtle\">Wed, Jan 22 2:00 PM</span>} right={<>\n              <ZButton onClick={onDeclineInvite} disabled={!onDeclineInvite}>\n                Decline\n              </ZButton>\n              <ZButton variant=\"primary\" onClick={onAcceptInvite} disabled={!onAcceptInvite} leading={<ZProviderIcon provider=\"googlecalendar\"/>}>\n                Accept\n              </ZButton>\n            </>}/>\n      </ActionCard>\n\n      {!dismissed.includes('refund') && (<ActionCard>\n          <p className=\"bg-surface text-copy rounded-[10px] p-2 leading-6\">\n            <Person name=\"Joe\"/>{' '}\n            <span className=\"text-neutral-subtle\">\n              requested a refund because we don't support Notion integration yet.\n            </span>\n          </p>\n          <ZActionRow hasPadding icon={BanknotesIcon} left={<span className=\"text-copy text-neutral-subtle\">\n                Refund <span className=\"text-neutral\">$20</span> to Joe\n              </span>} right={<>\n                <ZButton onClick={() => setDismissed((items) => [...items, 'refund'])}>\n                  Dismiss\n                </ZButton>\n                <ZButton variant=\"primary\" onClick={onRefund} disabled={!onRefund} leading={<ZProviderIcon provider=\"stripe\"/>}>\n                  Refund\n                </ZButton>\n              </>}/>\n        </ActionCard>)}\n    </section>);\n}\nfunction ActionCard({ children }: {\n    children: ReactNode;\n}) {\n    return (<div className=\"bg-surface-subtle overflow-hidden rounded-xl p-0.5 shadow-md\">{children}</div>);\n}\nfunction Person({ name }: {\n    name: string;\n}) {\n    return (<span className=\"border-neutral inline-flex items-center rounded-lg border px-1.5 leading-5 shadow-xs\">\n      {name}\n    </span>);\n}\nfunction Provider({ name, provider }: {\n    name: string;\n    provider: string;\n}) {\n    return (<span className=\"border-neutral inline-flex items-center gap-1 rounded-lg border px-1.5 leading-5 shadow-xs\">\n      <ZProviderIcon provider={provider}/>\n      {name}\n    </span>);\n}\n",
      "type": "registry:ui",
      "target": "@ui/orchid/examples/orchid-workspace.tsx"
    }
  ],
  "type": "registry:block"
}