* chore(ci): update setup-node & checkout actions to v4 * refactor(oauth): rename internal types to avoid conflicting types fix(oauth): support building from parcel feat(oauth): add runtime lock support to prevent concurrent session updates feat(oauth): improve metadata validation fix(oauth): allow use of handle as login hint fix: proper parsing of authorization header feat(oauth): add email 2fa support feat(oauth): adapt auth UI to match app UI * fix(oauth): improve parsing of digest algo * fix(oauth-provider): dead code cleanup * fix(oauth-provider): avoid inconsistent use of "id" prop in InputCheckbox * style(oauth-provider): use if/else instead of switch * feat(oauth-provider): stronger validation of customization data Invalid oauth customization would cause the server to crash at startup. * docs(oauth-client): explain why the abortRequest method is not mandatory * fix(oauth-client): cancel fetch response body when not used * docs: typo Co-authored-by: devin ivy <devinivy@gmail.com> * feat(oauth-provider:metadata): add client_id_metadata_document_supported metadata * fix(oauth-provider): require the content-type to be set on client metadata response * feat(common): add obfuscation utilities fix(pds): show user did in logs fix(ozone): show user did in logs * tidy * fix(simple-store): avoid leaking context when calling hooks * fix: use patch level changeset * chore(oauth-types): add changeset regarding client_id_metadata_document_supported * chore: add changeset for bsky & ozone * unify loggerMiddleware instantiation * tidy --------- Co-authored-by: devin ivy <devinivy@gmail.com>
35 lines
845 B
TypeScript
35 lines
845 B
TypeScript
import { ButtonHTMLAttributes } from 'react'
|
|
import { clsx } from '../lib/clsx'
|
|
|
|
export function Button({
|
|
children,
|
|
className,
|
|
type = 'button',
|
|
role = 'Button',
|
|
color = 'grey',
|
|
disabled = false,
|
|
loading = undefined,
|
|
...props
|
|
}: {
|
|
color?: 'brand' | 'grey'
|
|
loading?: boolean
|
|
} & ButtonHTMLAttributes<HTMLButtonElement>) {
|
|
return (
|
|
<button
|
|
role={role}
|
|
type={type}
|
|
disabled={disabled || loading === true}
|
|
{...props}
|
|
className={clsx(
|
|
'py-2 px-6 rounded-lg truncate cursor-pointer touch-manipulation tracking-wide overflow-hidden',
|
|
color === 'brand'
|
|
? 'bg-brand text-white'
|
|
: 'bg-slate-100 hover:bg-slate-200 text-slate-600 dark:bg-slate-800 dark:hover:bg-slate-700 dark:text-slate-300',
|
|
className,
|
|
)}
|
|
>
|
|
{children}
|
|
</button>
|
|
)
|
|
}
|