mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-09 13:51:57 -04:00

Co-authored-by: Philip Molares <philip.molares@udo.edu> Signed-off-by: Philip Molares <philip.molares@udo.edu> Signed-off-by: Erik Michelson <github@erik.michelson.eu>
29 lines
1.1 KiB
TypeScript
29 lines
1.1 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: 2025 The HedgeDoc developers (see AUTHORS file)
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
import type { AuthProviderDto, AuthProviderWithCustomNameDto } from '@hedgedoc/commons'
|
|
import { IconButton } from '../../common/icon-button/icon-button'
|
|
import React, { useMemo } from 'react'
|
|
import { getOneClickProviderMetadata } from './get-one-click-provider-metadata'
|
|
|
|
export interface ViaOneClickProps {
|
|
provider: AuthProviderDto
|
|
}
|
|
|
|
/**
|
|
* Renders a login button for the given one-click login provider.
|
|
*
|
|
* @param provider The one-click login provider. In case of ones that can be defined multiple times, an identifier and a label is required.
|
|
*/
|
|
export const OneClickLoginButton: React.FC<ViaOneClickProps> = ({ provider }) => {
|
|
const { className, icon, url, name } = useMemo(() => getOneClickProviderMetadata(provider), [provider])
|
|
const text = (provider as AuthProviderWithCustomNameDto).providerName || name
|
|
|
|
return (
|
|
<IconButton className={className} icon={icon} href={url} title={text} border={true}>
|
|
{text}
|
|
</IconButton>
|
|
)
|
|
}
|