apps/web/components/integration-onboarding-panel.tsx
Metadata
- Purpose: Reusable frontend UI component used by web routes.
- Domain:
applications - Language:
tsx - Bytes: 6878
- Lines: 124
- Content hash (short):
d15a424a - Source (start): apps/web/components/integration-onboarding-panel.tsx:1
- Source (end): apps/web/components/integration-onboarding-panel.tsx:124
Indexed Symbols
IntegrationOnboardingPanel(line 15, function) - Implements integration onboarding panel for module behavior.
Markdown Headings (if applicable)
No markdown headings detected.
Source Preview
import { Card } from "@anchor/ui";
import {
setWorkspaceSecretAction,
triggerAccountingSyncAction,
triggerNotificationTestAction
} from "../app/actions/operator-actions";
type IntegrationOnboardingPanelProps = {
workspaceId: string;
secretKeys: string[];
accountingStatus?: { provider?: string; syncType?: string; completedAt?: string; status?: string };
notificationStatus?: { channel?: string; target?: string; completedAt?: string; status?: string };
};
export function IntegrationOnboardingPanel({ workspaceId, secretKeys, accountingStatus, notificationStatus }: IntegrationOnboardingPanelProps) {
const hasQuickBooks = secretKeys.includes("QUICKBOOKS_API_TOKEN");
const hasXero = secretKeys.includes("XERO_API_TOKEN");
const hasSlack = secretKeys.includes("SLACK_WEBHOOK_URL");
const hasTeams = secretKeys.includes("TEAMS_WEBHOOK_URL");
const hasEmail = secretKeys.includes("EMAIL_TEST_ENDPOINT");
return (
<Card className="mb-4">
<h2 className="text-xl font-semibold text-[var(--ink-base)]">Integration Onboarding</h2>
<p className="mt-2 text-sm text-[var(--ink-muted)]">