${this.auth.get()?.user?.email && this.auth.get()?.token
? html`
${this.auth.get()?.user?.name}
${this.auth.get()?.user?.email}
`
: ""}
${this.auth.get()?.token
? html`
`
: html`
`} ${this.authStatus
? html`
${this.authStatus}
`
: ""}
${this.authResult
? html`
Authentication Result
${JSON.stringify(this.authResult, null, 2)}
`
: ""}
`;
}
static override styles = [
BaseElement.baseStyles,
css`
.oauth-wrapper {
padding: var(--ct-theme-spacing-loose, 1.5rem);
border-radius: var(
--ct-theme-border-radius,
var(--ct-border-radius-lg, 0.5rem)
);
background-color: var(
--ct-theme-color-surface,
var(--ct-color-white, #ffffff)
);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
max-width: 600px;
}
.profile-section {
display: flex;
align-items: center;
gap: var(--ct-theme-spacing-loose, 1.25rem);
margin-bottom: var(--ct-theme-spacing-loose, 1.5rem);
}
.profile-picture {
width: 80px;
height: 80px;
border-radius: 50%;
object-fit: cover;
}
.user-info {
flex: 1;
}
.user-name {
margin: 0;
font-size: 1.5rem;
color: var(--ct-theme-color-text, var(--ct-color-gray-900, #111827));
font-weight: 600;
}
.user-email {
margin: 0.25rem 0 0;
color: var(
--ct-theme-color-text-muted,
var(--ct-color-gray-600, #6b7280)
);
}
.action-section {
display: flex;
flex-direction: column;
gap: var(--ct-theme-spacing-normal, 1rem);
margin-bottom: var(--ct-theme-spacing-loose, 1.5rem);
}
.oauth-button {
background-color: #4285f4;
color: white;
border: none;
padding: var(--ct-theme-spacing-normal, 0.75rem)
var(--ct-theme-spacing-loose, 1.5rem);
border-radius: var(
--ct-theme-border-radius,
var(--ct-border-radius-md, 0.375rem)
);
cursor: pointer;
font-weight: 500;
font-size: 1rem;
font-family: var(--ct-theme-font-family, inherit);
transition: background-color var(--ct-theme-animation-duration, 0.2s) ease;
}
.oauth-button:hover {
background-color: #3367d6;
}
.oauth-button:disabled {
background-color: var(
--ct-theme-color-border,
var(--ct-color-gray-300, #d1d5db)
);
cursor: not-allowed;
}
.status-message {
padding: var(--ct-theme-spacing-normal, 0.75rem);
border-radius: var(
--ct-theme-border-radius,
var(--ct-border-radius-md, 0.375rem)
);
background-color: #e8f0fe;
color: #1a73e8;
font-size: 0.9rem;
}
.auth-result {
background-color: var(
--ct-theme-color-surface-hover,
var(--ct-color-gray-50, #f9fafb)
);
padding: var(--ct-theme-spacing-normal, 1rem);
border-radius: var(
--ct-theme-border-radius,
var(--ct-border-radius-md, 0.375rem)
);
}
.auth-result h3 {
margin: 0 0 0.75rem;
color: var(--ct-theme-color-text, var(--ct-color-gray-900, #111827));
}
.auth-result pre {
background-color: var(
--ct-theme-color-surface,
var(--ct-color-white, #ffffff)
);
padding: var(--ct-theme-spacing-normal, 0.75rem);
border-radius: var(
--ct-theme-border-radius,
var(--ct-border-radius-sm, 0.25rem)
);
overflow: auto;
max-height: 300px;
margin: 0;
font-size: 0.9rem;
font-family: monospace;
}
.oauth-button.logout {
background-color: var(
--ct-theme-color-error,
var(--ct-color-red-600, #dc2626)
);
}
.oauth-button.logout:hover {
background-color: var(
--ct-theme-color-error,
var(--ct-color-red-700, #b91c1c)
);
}
`,
];
}
globalThis.customElements.define("ct-google-oauth", CTGoogleOauth);