* Set default font in examle * prettify file * add ui elements * Use UIButton at AuthPanel * sort deps * remove unsed getUserTitle method * move UserId inside AuthPanel * tests * use UIButton and UInput in Anonymous login * Use UIButton and UIInput in email login * Replace Button to UIButton * fix context for onTitleClick in dropdown * rearrage class props in dropdown * TODO: change finding over DOM to using ref * Use UIButton in input * rearrage deps * Use UIButton in comment * test * Focus and Input buttons * custom focus style for inputs and buttons * the same focus style for comment input * align buttons by top line in input * Token dropdown & hover fix * disable hover when button disabled * make token dropdown markup in new style * Fix trailing comma * update prettier * move prettier config to json format because it is more hendy for settings (for example vscode can suggest rules) * prettier fixed trailing comman in ejs * Remove unnecessary conditions * Files was formatted by Prettier * fix cursor pointer on collapse button * Move components and right naming * ui-button -> button * ui-input -> input * input -> comment-form * Change cursor behavior on disabled state * Change button style * font-weight: normal by default * add small border-radius * Change another one button to component * Fix autofocus on username in email login form * use preact inbuild autoFocus * fix autofocus on back from token step * sleep for 0s enough to wait next render before focus * use more specific name for username input * fix line-height at auth line on mobile * fix className
27 lines
752 B
TypeScript
27 lines
752 B
TypeScript
/** @jsx createElement */
|
|
import { createElement, JSX } from 'preact';
|
|
import { forwardRef } from 'preact/compat';
|
|
import b, { Mods, Mix } from 'bem-react-helper';
|
|
import { Theme } from '@app/common/types';
|
|
|
|
interface Props extends Omit<JSX.HTMLAttributes, 'size'> {
|
|
kind?: 'primary' | 'secondary' | 'link';
|
|
size?: 'middle' | 'large';
|
|
theme?: Theme;
|
|
mods?: Mods;
|
|
mix?: Mix;
|
|
type?: string;
|
|
}
|
|
|
|
export const Button = forwardRef<HTMLButtonElement, Props>(
|
|
({ children, theme, mods, mix, kind, type = 'button', size, ...props }) => {
|
|
const className = b('button', { mods: { kind, size }, mix }, { theme, ...mods });
|
|
|
|
return (
|
|
<button className={className} type={type} {...props}>
|
|
{children}
|
|
</button>
|
|
);
|
|
}
|
|
);
|