mirror of
https://github.com/steveiliop56/tinyauth.git
synced 2025-10-28 04:35:40 +00:00
* wip * feat: make forms functional * feat: finalize pages * chore: remove unused translations * feat: app context * feat: user context * feat: finalize username login * fix: use correct tab order in login form * feat: add oauth logic * chore: update readme and assets * chore: rename docs back to assets * feat: favicons * feat: custom background image config option * chore: add acknowledgements for background image * feat: sanitize redirect URL * feat: sanitize redirect URL on check * chore: fix dependabot config * refactor: bot suggestions * fix: correctly redirect to app and check for untrusted redirects * fix: run oauth auto redirect only when there is a redirect URI * refactor: change select color * fix: fix dockerfiles * fix: fix hook rendering * chore: remove translations cdn * chore: formatting * feat: validate api response against zod schema * fix: use axios error instead of generic error in login page
34 lines
725 B
TypeScript
34 lines
725 B
TypeScript
import { Loader2 } from "lucide-react";
|
|
import { Button } from "./button";
|
|
import React from "react";
|
|
import { twMerge } from "tailwind-merge";
|
|
|
|
interface Props extends React.ComponentProps<typeof Button> {
|
|
title: string;
|
|
icon: React.ReactNode;
|
|
onClick?: () => void;
|
|
loading?: boolean;
|
|
}
|
|
|
|
export const OAuthButton = (props: Props) => {
|
|
const { title, icon, onClick, loading, className, ...rest } = props;
|
|
|
|
return (
|
|
<Button
|
|
onClick={onClick}
|
|
className={twMerge("rounded-md", className)}
|
|
variant="outline"
|
|
{...rest}
|
|
>
|
|
{loading ? (
|
|
<Loader2 className="animate-spin" />
|
|
) : (
|
|
<>
|
|
{icon}
|
|
{title}
|
|
</>
|
|
)}
|
|
</Button>
|
|
);
|
|
};
|