diff --git a/src/components/ShimmerBorder.astro b/src/components/ShimmerBorder.astro
new file mode 100644
index 0000000..e8a4005
--- /dev/null
+++ b/src/components/ShimmerBorder.astro
@@ -0,0 +1,84 @@
+---
+/*
+ * A shimmer that travels around the edge of its parent.
+ *
+ * A conic gradient is rotated behind the card and masked down to just the
+ * border ring, so a single highlight runs continuously around the whole
+ * perimeter -- corners included.
+ *
+ * This is not React Bits' "Star Border", which slides two radial gradients
+ * along the top and bottom edges. That reads as two streaks passing by rather
+ * than one shimmer going around, which is the wrong feel for a card.
+ *
+ * Drop it inside a `position: relative` element. Decorative, so aria-hidden and
+ * no pointer events. It masks itself rather than clipping the parent, so
+ * anything overhanging the card -- a badge, say -- is unaffected.
+ */
+interface Props {
+ /** One full lap. */
+ speed?: string;
+ /** Ring thickness. */
+ thickness?: string;
+}
+const { speed = '5s', thickness = '1.5px' } = Astro.props;
+---
+
+
+
+
diff --git a/src/pages/404.astro b/src/pages/404.astro
index bfb72a5..1ece16e 100644
--- a/src/pages/404.astro
+++ b/src/pages/404.astro
@@ -1,5 +1,6 @@
---
import BaseLayout from '@layouts/BaseLayout.astro';
+import HeroStrands from '@components/HeroStrands.astro';
import { LINKS } from '@data/site';
// NOTE: this is the org site's 404, so GitHub Pages serves it for any
@@ -13,7 +14,9 @@ import { LINKS } from '@data/site';
path="/404"
noindex
>
-
+
diff --git a/src/pages/index.astro b/src/pages/index.astro
index 824a55c..e79fa41 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -2,6 +2,7 @@
import { Image } from 'astro:assets';
import BaseLayout from '@layouts/BaseLayout.astro';
import StoreButton from '@components/StoreButton.astro';
+import HeroStrands from '@components/HeroStrands.astro';
import { SITE, LINKS } from '@data/site';
import { STORES } from '@data/stores';
import devices from '@assets/devices.png';
@@ -14,6 +15,8 @@ import devices from '@assets/devices.png';
path="/"
>
+
+
{/* Ambient brand wash -- the modern descendant of the old #bg-circle. */}
-
+
+
+
@@ -45,4 +48,5 @@ const docsUrl = `${LINKS.docs}/private-api/installation`;
>
+
diff --git a/src/pages/pricing/index.astro b/src/pages/pricing/index.astro
index c9a97f2..7a5bebf 100644
--- a/src/pages/pricing/index.astro
+++ b/src/pages/pricing/index.astro
@@ -17,6 +17,7 @@
import BaseLayout from '@layouts/BaseLayout.astro';
import PageHeader from '@components/PageHeader.astro';
import MacOSPicker from '@components/MacOSPicker.astro';
+import ShimmerBorder from '@components/ShimmerBorder.astro';
import { PLANS, PRO_FEATURES, FREE_FEATURES, MACOS_RELEASES } from '@data/pricing';
import { LINKS } from '@data/site';
@@ -47,8 +48,9 @@ const newestMacOS = MACOS_RELEASES.reduce((a, b) => (b.version > a.version ? b :
plan.featured ? 'border-accent shadow-lg' : 'border-line',
]}
>
+ {plan.featured &&
}
{plan.featured && (
-
+
Best value
)}