rainbow glow

This commit is contained in:
George Powell
2026-03-25 02:25:04 -04:00
parent 3d578a9eb8
commit e45ac28169
3 changed files with 90 additions and 68 deletions

View File

@@ -34,7 +34,7 @@
</script>
<p
class="big-text text-center text-gray-100! mb-6 px-4"
class="big-text text-center text-gray-800 dark:text-gray-100 mb-6 px-4"
style="transition: opacity 0.3s ease; opacity: {visible ? 1 : 0};"
>
{promptText}

View File

@@ -237,7 +237,9 @@
{/if}
<div class="share-card" in:fly={{ y: 40, duration: 400, delay: 600 }}>
<div class="big-text font-black! text-center">Share your result</div>
<div class="big-text font-black! text-center text-gray-300!">
Share your result
</div>
<div class="chat-window">
<!-- Received bubble: primary action (share / copy) -->
<div class="bubble-wrapper received-wrapper">
@@ -331,12 +333,19 @@
{#if isLoggedIn}
<div class="signin-prompt">
<a href="/progress" class="progress-btn"> 📈 See your progress </a>
<div class="rainbow-glow w-full">
<a
href="/progress"
class="flex flex-col items-center justify-center gap-1 w-full p-4 mb-2 bg-white dark:bg-gray-900 border-2 border-black/40 dark:border-white/40 rounded-2xl shadow-sm text-gray-800 dark:text-gray-100 text-base font-semibold no-underline transition-transform duration-100 hover:-translate-y-px active:scale-[0.98]"
>
📈 See your progress
</a>
</div>
</div>
{:else}
<div class="signin-prompt">
<p class="signin-text">
Sign in to save your streak &amp; track your progress
<p class="signin-text text-gray-800 dark:text-gray-300">
Create an account (or sign in) to track your progress
</p>
<form method="POST" action="/auth/apple" class="w-full">
<input type="hidden" name="anonymousId" value={anonymousId} />
@@ -369,10 +378,22 @@
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/>
<path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/>
<path fill="#FBBC05" d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l3.66-2.84z"/>
<path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"/>
<path
fill="#4285F4"
d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"
/>
<path
fill="#34A853"
d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"
/>
<path
fill="#FBBC05"
d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l3.66-2.84z"
/>
<path
fill="#EA4335"
d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"
/>
</svg>
Sign in with Google
</button>
@@ -660,6 +681,47 @@
}
/* ── Apple Sign In prompt ── */
.rainbow-glow {
position: relative;
border-radius: 1rem;
}
.rainbow-glow::before {
content: "";
position: absolute;
inset: 0px;
border-radius: 1.25rem;
background: conic-gradient(
from var(--angle, 0deg),
#ff0080,
#ff8c00,
#ffd700,
#00ff88,
#00cfff,
#a855f7,
#ff0080
);
animation: rainbow-rotate 6s linear infinite;
filter: blur(8px);
opacity: 0.75;
z-index: -1;
}
@property --angle {
syntax: "<angle>";
initial-value: 0deg;
inherits: false;
}
@keyframes rainbow-rotate {
0% {
--angle: 0deg;
}
100% {
--angle: 360deg;
}
}
.signin-prompt {
display: flex;
flex-direction: column;
@@ -670,17 +732,10 @@
.signin-text {
font-size: 0.85rem;
color: #555;
text-align: center;
font-weight: 500;
}
@media (prefers-color-scheme: dark) {
.signin-text {
color: #aaa;
}
}
.apple-signin-btn {
display: flex;
align-items: center;
@@ -737,41 +792,38 @@
gap: 0.5rem;
padding: 0.6rem 1rem;
width: 100%;
background: #fff;
color: #000;
background: #000;
color: #fff;
border-radius: 0.5rem;
font-size: 0.95rem;
font-weight: 600;
border: 1px solid #dadce0;
border: none;
cursor: pointer;
transition:
background 150ms ease,
border-color 150ms ease,
transform 80ms ease;
}
.google-signin-btn:hover {
background: #f8f8f8;
border-color: #bbb;
background: #222;
transform: translateY(-1px);
}
.google-signin-btn:active {
background: #f0f0f0;
background: #111;
transform: scale(0.98);
}
@media (prefers-color-scheme: dark) {
.google-signin-btn {
background: #1e1e1e;
color: #fff;
border: 1px solid #444;
background: #fff;
color: #000;
}
.google-signin-btn:hover {
background: #2a2a2a;
background: #e5e5e5;
}
.google-signin-btn:active {
background: #333;
background: #ccc;
}
}
@@ -780,43 +832,4 @@
height: 1.1rem;
flex-shrink: 0;
}
.progress-btn {
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
padding: 0.6rem 1rem;
width: 100%;
margin-bottom: 0.6rem;
background: #059669;
color: #fff;
border-radius: 0.5rem;
font-size: 0.95rem;
font-weight: 600;
text-decoration: none;
transition:
background 150ms ease,
transform 80ms ease;
}
.progress-btn:hover {
background: #047857;
transform: translateY(-1px);
}
.progress-btn:active {
background: #065f46;
transform: scale(0.98);
}
@media (prefers-color-scheme: dark) {
.progress-btn {
background: #10b981;
color: #fff;
}
.progress-btn:hover {
background: #059669;
}
.progress-btn:active {
background: #047857;
}
}
</style>

View File

@@ -1,12 +1,19 @@
<script lang="ts">
import { onMount } from 'svelte';
import { browser } from '$app/environment';
import "./layout.css";
import favicon from "$lib/assets/favicon.ico";
import TitleAnimation from "$lib/components/TitleAnimation.svelte";
import ThemeToggle from "$lib/components/ThemeToggle.svelte";
let isDev = $state(false);
onMount(() => {
isDev =
window.location.host === 'localhost:5173' ||
window.location.host === 'test.bibdle.com';
// Inject analytics script
const script = document.createElement('script');
script.defer = true;
@@ -32,6 +39,8 @@
<TitleAnimation />
<div class="font-normal"></div>
</h1>
<div class="hidden"><ThemeToggle /></div>
{#if isDev}
<div class="flex justify-center pb-2"><ThemeToggle /></div>
{/if}
{@render children()}
</div>