diff --git a/src/lib/icons.spec.ts b/src/lib/icons.spec.ts
index 8402406b..c34dce43 100644
Binary files a/src/lib/icons.spec.ts and b/src/lib/icons.spec.ts differ
diff --git a/src/lib/icons/audio-lines.svelte b/src/lib/icons/audio-lines.svelte
index 57d618e6..30a63b80 100644
--- a/src/lib/icons/audio-lines.svelte
+++ b/src/lib/icons/audio-lines.svelte
@@ -1,4 +1,5 @@
+ import { untrack } from 'svelte';
import type { IconProps } from './types.js';
let {
@@ -49,7 +50,9 @@
}
function handleMouseEnter() {
- if (animate) return;
+ // hoverAnimate doubles as the in-flight flag: guard on it, not on the
+ // animate union, or a parent holding animate=true would block every blink.
+ if (hoverAnimate) return;
hoverAnimate = true;
animateEyes(13, 15, 14, 14, 250, 200).then(() => {
animateEyes(14, 14, 13, 15, 250).then(() => {
@@ -58,6 +61,11 @@
});
}
+ // The blink is driven imperatively, so the prop has to trigger it explicitly.
+ $effect(() => {
+ if (animateProp) untrack(handleMouseEnter);
+ });
+
$effect(() => () => clearTimeout(entryTimer));
diff --git a/src/lib/icons/eye.svelte b/src/lib/icons/eye.svelte
index ae1b5d12..98921599 100644
--- a/src/lib/icons/eye.svelte
+++ b/src/lib/icons/eye.svelte
@@ -1,4 +1,5 @@
diff --git a/src/lib/icons/message-circle-more.svelte b/src/lib/icons/message-circle-more.svelte
index b8e1a742..d1d3d6d2 100644
--- a/src/lib/icons/message-circle-more.svelte
+++ b/src/lib/icons/message-circle-more.svelte
@@ -1,4 +1,5 @@
diff --git a/src/lib/icons/message-square-more.svelte b/src/lib/icons/message-square-more.svelte
index ce9e6d93..9f3f42f1 100644
--- a/src/lib/icons/message-square-more.svelte
+++ b/src/lib/icons/message-square-more.svelte
@@ -1,4 +1,5 @@
diff --git a/static/r/audio-lines.json b/static/r/audio-lines.json
index 98df4ab1..fd42a79a 100644
--- a/static/r/audio-lines.json
+++ b/static/r/audio-lines.json
@@ -9,7 +9,7 @@
{
"type": "registry:component",
"target": "~/src/lib/components/movingicons/audio-lines.svelte",
- "content": "\n\n
\n\t\n
\n\n\n"
+ "content": "\n\n
\n\t\n
\n\n\n"
}
],
"registryDependencies": []
diff --git a/static/r/bot.json b/static/r/bot.json
index e7b1227f..1ebb8579 100644
--- a/static/r/bot.json
+++ b/static/r/bot.json
@@ -9,7 +9,7 @@
{
"type": "registry:component",
"target": "~/src/lib/components/movingicons/bot.svelte",
- "content": "\n\n
\n\t
\n
\n\n\n"
+ "content": "\n\n
\n\t
\n
\n\n\n"
}
],
"registryDependencies": []
diff --git a/static/r/eye.json b/static/r/eye.json
index b2dbd293..1bcf093c 100644
--- a/static/r/eye.json
+++ b/static/r/eye.json
@@ -9,7 +9,7 @@
{
"type": "registry:component",
"target": "~/src/lib/components/movingicons/eye.svelte",
- "content": "\n\n
\n\t
\n
\n\n\n"
+ "content": "\n\n
\n\t
\n
\n\n\n"
}
],
"registryDependencies": []
diff --git a/static/r/message-circle-more.json b/static/r/message-circle-more.json
index c9d962b0..136da641 100644
--- a/static/r/message-circle-more.json
+++ b/static/r/message-circle-more.json
@@ -9,7 +9,7 @@
{
"type": "registry:component",
"target": "~/src/lib/components/movingicons/message-circle-more.svelte",
- "content": "\n\n
\n\t
\n
\n\n\n"
+ "content": "\n\n
\n\t
\n
\n\n\n"
}
],
"registryDependencies": []
diff --git a/static/r/message-square-more.json b/static/r/message-square-more.json
index 6819da63..e405d279 100644
--- a/static/r/message-square-more.json
+++ b/static/r/message-square-more.json
@@ -9,7 +9,7 @@
{
"type": "registry:component",
"target": "~/src/lib/components/movingicons/message-square-more.svelte",
- "content": "\n\n
\n\t
\n
\n\n\n"
+ "content": "\n\n
\n\t
\n
\n\n\n"
}
],
"registryDependencies": []