mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-14 23:24:46 -04:00
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import React from 'react'
|
|
import type { IconName, IconSize } from './types'
|
|
|
|
export interface ForkAwesomeIconProps {
|
|
icon: IconName
|
|
className?: string
|
|
fixedWidth?: boolean
|
|
size?: IconSize
|
|
stacked?: boolean
|
|
}
|
|
|
|
/**
|
|
* Renders a fork awesome icon.
|
|
*
|
|
* @param icon The icon that should be rendered.
|
|
* @param fixedWidth If the icon should be rendered with a fixed width.
|
|
* @param size The size class the icon should be rendered in.
|
|
* @param className Additional classes the icon should get.
|
|
* @param stacked If the icon is part of a {@link ForkAwesomeStack stack}.
|
|
* @see https://forkaweso.me
|
|
*/
|
|
export const ForkAwesomeIcon: React.FC<ForkAwesomeIconProps> = ({
|
|
icon,
|
|
fixedWidth = false,
|
|
size,
|
|
className,
|
|
stacked = false
|
|
}) => {
|
|
const fixedWithClass = fixedWidth ? 'fa-fw' : ''
|
|
const sizeClass = size ? `-${size}` : stacked ? '-1x' : ''
|
|
const stackClass = stacked ? '-stack' : ''
|
|
const extraClasses = `${className ?? ''} ${sizeClass || stackClass ? `fa${stackClass}${sizeClass}` : ''}`
|
|
return <i className={`fa ${fixedWithClass} fa-${icon} ${extraClasses}`} />
|
|
}
|