{"version":3,"sources":["../../../../src/primitives/Scheduling/Admin/CalendarConnect.tsx"],"names":[],"mappings":";;AAuBO,SAAS,yBAAA,CAA0B;AAAA,EACxC,OAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAAmC;AACjC,EAAA,IAAI,QAAA,EAAU,uBAAO,GAAA,CAAA,QAAA,EAAA,EAAG,QAAA,EAAA,QAAA,CAAS,OAAO,CAAA,EAAE,CAAA;AAE1C,EAAA,MAAM,EAAE,MAAA,EAAQ,cAAA,EAAgB,oBAAoB,KAAA,EAAO,KAAA,EAAO,SAAQ,GACxE,OAAA;AAEF,EAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EACF,QAAA,EAAA;AAAA,IAAA,MAAA,KAAW,WAAA,wBACT,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,QAAA,EAAA,EAAO,QAAA,EAAA;AAAA,QAAA,WAAA;AAAA,QAAU,cAAA,GAAiB,CAAA,EAAA,EAAK,cAAc,CAAA,CAAA,GAAK;AAAA,OAAA,EAAG,CAAA;AAAA,MAC7D,kBAAA,CAAmB,MAAA,GAAS,CAAA,mBAC3B,IAAA,CAAC,OAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,kBAAA,CAAmB,MAAA;AAAA,QAAO,WAAA;AAAA,QAC1B,kBAAA,CAAmB,MAAA,KAAW,CAAA,GAAI,EAAA,GAAK,GAAA;AAAA,QAAI;AAAA,OAAA,EAC9C,CAAA,GACE,IAAA;AAAA,sBACJ,GAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,WAAW,eAAA,EAAiB,OAAA,EAAS,SAAS,QAAA,EAAA,SAAA,EAEpE;AAAA,KAAA,EACF,CAAA,wBAEC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,YAAO,QAAA,EAAA,mCAAA,EAAiC,CAAA;AAAA,sBACzC,GAAA,CAAC,OAAE,QAAA,EAAA,6GAAA,EAGH,CAAA;AAAA,MACC,gBAAA,mBACC,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,gBAAA;AAAA,UACN,MAAA,EAAO,QAAA;AAAA,UACP,GAAA,EAAI,qBAAA;AAAA,UACJ,SAAA,EAAW,eAAA;AAAA,UAEV,QAAA,EAAA,YAAA,IAAgB;AAAA;AAAA,OACnB,mBAEA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAW,eAAA;AAAA,UACX,OAAA,EAAS,KAAA;AAAA,UACT,UAAU,MAAA,KAAW,YAAA;AAAA,UAEpB,QAAA,EAAA,MAAA,KAAW,YAAA,GACR,kBAAA,GACC,YAAA,IAAgB;AAAA;AAAA;AACvB,KAAA,EAEJ,CAAA;AAAA,IAED,wBAAQ,GAAA,CAAC,KAAA,EAAA,EAAI,IAAA,EAAK,OAAA,EAAS,iBAAM,CAAA,GAAS;AAAA,GAAA,EAC7C,CAAA;AAEJ","file":"CalendarConnect.mjs","sourcesContent":["import type { ReactNode } from 'react';\nimport type { UseGoogleCalendarConnectResult } from '../../../hooks/useGoogleCalendarConnect';\n\nexport interface SchedulingCalendarConnectProps {\n  connect: UseGoogleCalendarConnectResult;\n  className?: string;\n  buttonClassName?: string;\n  /**\n   * Custom renderer. Receives the connect result so the consumer can build\n   * any UI shape they like. When omitted, a minimal \"Connect Google\" /\n   * \"Connected as <email>\" panel is rendered.\n   */\n  children?: (connect: UseGoogleCalendarConnectResult) => ReactNode;\n  /** Label for the connect CTA button. Defaults to 'Connect Google Calendar'. */\n  connectLabel?: ReactNode;\n  /**\n   * If your project completes OAuth in CE Settings → Integrations rather than\n   * via per-site `start()`, pass the URL here so the button becomes a link\n   * instead of triggering the per-site OAuth route.\n   */\n  externalSetupUrl?: string;\n}\n\nexport function SchedulingCalendarConnect({\n  connect,\n  className,\n  buttonClassName,\n  children,\n  connectLabel,\n  externalSetupUrl,\n}: SchedulingCalendarConnectProps) {\n  if (children) return <>{children(connect)}</>;\n\n  const { status, connectedEmail, availableCalendars, error, start, refresh } =\n    connect;\n\n  return (\n    <div className={className}>\n      {status === 'connected' ? (\n        <div>\n          <strong>Connected{connectedEmail ? `: ${connectedEmail}` : ''}</strong>\n          {availableCalendars.length > 0 ? (\n            <small>\n              {availableCalendars.length} calendar\n              {availableCalendars.length === 1 ? '' : 's'} available\n            </small>\n          ) : null}\n          <button type=\"button\" className={buttonClassName} onClick={refresh}>\n            Refresh\n          </button>\n        </div>\n      ) : (\n        <div>\n          <strong>Google Calendar is not connected.</strong>\n          <p>\n            Connecting lets bookings mirror to a sub-calendar and reads free /\n            busy windows from the connected account.\n          </p>\n          {externalSetupUrl ? (\n            <a\n              href={externalSetupUrl}\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              className={buttonClassName}\n            >\n              {connectLabel ?? 'Connect Google Calendar'}\n            </a>\n          ) : (\n            <button\n              type=\"button\"\n              className={buttonClassName}\n              onClick={start}\n              disabled={status === 'connecting'}\n            >\n              {status === 'connecting'\n                ? 'Connecting…'\n                : (connectLabel ?? 'Connect Google Calendar')}\n            </button>\n          )}\n        </div>\n      )}\n      {error ? <div role=\"alert\">{error}</div> : null}\n    </div>\n  );\n}\n"]}