Fix broken production CSS from invalid changelog bullet character.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
96d3d83906
commit
2dd448874e
@ -1270,7 +1270,8 @@ img { max-width: 100%; display: block; }
|
|||||||
transition: opacity 0.6s ease, visibility 0.6s ease;
|
transition: opacity 0.6s ease, visibility 0.6s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.loader.hidden {
|
.loader.hidden,
|
||||||
|
.loader.loader-done {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
@ -7477,7 +7478,7 @@ img { max-width: 100%; display: block; }
|
|||||||
}
|
}
|
||||||
|
|
||||||
.changelog-item li::before {
|
.changelog-item li::before {
|
||||||
content: "•";
|
content: "\2022";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
color: var(--accent-3);
|
color: var(--accent-3);
|
||||||
|
|||||||
@ -101,6 +101,7 @@ export default function HomeClient(props: Props) {
|
|||||||
{ threshold: 0.1, rootMargin: "0px 0px -50px 0px" }
|
{ threshold: 0.1, rootMargin: "0px 0px -50px 0px" }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let scheduled = 0;
|
||||||
const observeAll = () => {
|
const observeAll = () => {
|
||||||
document.querySelectorAll(".reveal:not(.visible)").forEach((el, i) => {
|
document.querySelectorAll(".reveal:not(.visible)").forEach((el, i) => {
|
||||||
(el as HTMLElement).style.transitionDelay = `${(i % 6) * 0.1}s`;
|
(el as HTMLElement).style.transitionDelay = `${(i % 6) * 0.1}s`;
|
||||||
@ -108,12 +109,21 @@ export default function HomeClient(props: Props) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const schedule = () => {
|
||||||
|
if (scheduled) return;
|
||||||
|
scheduled = window.setTimeout(() => {
|
||||||
|
scheduled = 0;
|
||||||
observeAll();
|
observeAll();
|
||||||
const mo = new MutationObserver(observeAll);
|
}, 80);
|
||||||
|
};
|
||||||
|
|
||||||
|
observeAll();
|
||||||
|
const mo = new MutationObserver(schedule);
|
||||||
mo.observe(document.body, { childList: true, subtree: true });
|
mo.observe(document.body, { childList: true, subtree: true });
|
||||||
return () => {
|
return () => {
|
||||||
observer.disconnect();
|
observer.disconnect();
|
||||||
mo.disconnect();
|
mo.disconnect();
|
||||||
|
if (scheduled) clearTimeout(scheduled);
|
||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
|||||||
@ -1,18 +1,27 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useEffect } from "react";
|
import { useEffect, useState } from "react";
|
||||||
|
|
||||||
export default function Loader() {
|
export default function Loader() {
|
||||||
|
const [done, setDone] = useState(false);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const loader = document.getElementById("loader");
|
const hide = () => setDone(true);
|
||||||
const hide = () => loader?.classList.add("hidden");
|
const onLoad = () => setTimeout(hide, 900);
|
||||||
window.addEventListener("load", () => setTimeout(hide, 1800));
|
if (document.readyState === "complete") {
|
||||||
const t = setTimeout(hide, 3000);
|
const t = setTimeout(hide, 900);
|
||||||
return () => clearTimeout(t);
|
return () => clearTimeout(t);
|
||||||
|
}
|
||||||
|
window.addEventListener("load", onLoad);
|
||||||
|
const fallback = setTimeout(hide, 2200);
|
||||||
|
return () => {
|
||||||
|
window.removeEventListener("load", onLoad);
|
||||||
|
clearTimeout(fallback);
|
||||||
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="loader" id="loader">
|
<div className={`loader${done ? " loader-done" : ""}`} id="loader" aria-hidden={done}>
|
||||||
<div className="loader-inner">
|
<div className="loader-inner">
|
||||||
<svg className="loader-globe" viewBox="0 0 80 80" fill="none">
|
<svg className="loader-globe" viewBox="0 0 80 80" fill="none">
|
||||||
<circle cx="40" cy="40" r="35" stroke="url(#loaderGrad)" strokeWidth="3" strokeDasharray="60 160" className="loader-ring" />
|
<circle cx="40" cy="40" r="35" stroke="url(#loaderGrad)" strokeWidth="3" strokeDasharray="60 160" className="loader-ring" />
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user