| <script lang="ts"> | |
| import type { HuggingFaceLibs } from '$lib/types'; | |
| interface Props { | |
| hfAuth: HuggingFaceLibs | null; | |
| } | |
| let { hfAuth = null }: Props = $props(); | |
| async function handleSignIn() { | |
| if (!hfAuth) return; | |
| const url = await hfAuth.oauthLoginUrl({ scopes: ["inference-api"] }); | |
| window.location.href = url; | |
| } | |
| </script> | |
| <button | |
| class="signin-button" | |
| onclick={handleSignIn} | |
| disabled={!hfAuth} | |
| > | |
| Sign in with Hugging Face | |
| </button> | |
| <style> | |
| .signin-button { | |
| background: #ff7b7b; | |
| color: #fff; | |
| border: none; | |
| padding: 0.6rem 1.2rem; | |
| border-radius: 6px; | |
| cursor: pointer; | |
| font-size: 1rem; | |
| transition: background-color 0.2s; | |
| } | |
| .signin-button:hover:not(:disabled) { | |
| background: #ff6565; | |
| } | |
| .signin-button:disabled { | |
| opacity: 0.6; | |
| cursor: not-allowed; | |
| } | |
| </style> |