diff --git a/packages/studio/src/components/OpenInDesktopButton.tsx b/packages/studio/src/components/OpenInDesktopButton.tsx
index a5e5698c40b..22d2f324115 100644
--- a/packages/studio/src/components/OpenInDesktopButton.tsx
+++ b/packages/studio/src/components/OpenInDesktopButton.tsx
@@ -119,10 +119,15 @@ export function OpenInDesktopButton() {
data-testid="header-open-in-desktop"
data-opening={opening || undefined}
title="Open this project in the HyperFrames desktop app and edit it with Framey"
- className="hf-framey-trigger gap-1.5 pl-1.5"
- icon={}
+ className="hf-framey-trigger gap-1.5 border border-accent/40 bg-accent/10 pl-1 font-semibold text-text-0 enabled:hover:bg-accent/20"
+ icon={}
>
{opening ? "Opening in the app…" : "Edit with Framey"}
+ {!opening && (
+
+ New
+
+ )}
}
>
diff --git a/packages/studio/src/styles/components.css b/packages/studio/src/styles/components.css
index fe27c4db224..d2731444001 100644
--- a/packages/studio/src/styles/components.css
+++ b/packages/studio/src/styles/components.css
@@ -952,8 +952,8 @@
}
}
-/* Framey on the header's "Edit with Framey" (OpenInDesktopButton.tsx): a wiggle on hover, a flight towards
- * the app while it opens. The eye follows the pointer from script. */
+/* Framey on the header's "Edit with Framey" (OpenInDesktopButton.tsx): a pulse as the page opens, a wiggle
+ * on hover, a flight towards the app while it opens. The eye follows the pointer from script. */
@keyframes hf-framey-wiggle {
0%,
100% {
@@ -977,6 +977,19 @@
}
}
+@keyframes hf-framey-pulse {
+ 0% {
+ box-shadow: 0 0 0 0 color-mix(in oklch, var(--color-accent) 45%, transparent);
+ }
+ 100% {
+ box-shadow: 0 0 0 8px transparent;
+ }
+}
+
+.hf-framey-trigger {
+ animation: hf-framey-pulse 1.6s ease-out 3;
+}
+
.hf-framey {
transform-origin: 30% 30%;
}
@@ -994,6 +1007,7 @@
}
@media (prefers-reduced-motion: reduce) {
+ .hf-framey-trigger,
.hf-framey-trigger:hover .hf-framey,
.hf-framey-trigger[data-opening] .hf-framey {
animation: none;