Pick a channel
<!-- Radial Share Arc Structure -->
<div class="share-hub">
<nav class="splay-arc">
<a class="ch" data-ch="x" style="--i: 0;"><svg class="ch-icon">...</svg></a>
<a class="ch" data-ch="linkedin" style="--i: 1;"><svg class="ch-icon">...</svg></a>
<a class="ch" data-ch="whatsapp" style="--i: 2;"><svg class="ch-icon">...</svg></a>
<a class="ch" data-ch="email" style="--i: 3;"><svg class="ch-icon">...</svg></a>
<a class="ch" data-ch="link" style="--i: 4;"><svg class="ch-icon">...</svg></a>
</nav>
<button class="hub-btn">SHARE</button>
</div>
/* THE ARC IS SOLVED FOR, NOT PLACED */
.splay-arc {
--pitch: 46deg;
--gap: 1.5;
--r: calc((var(--d) * var(--gap)) / (2 * sin(var(--pitch) / 2)));
}
.ch {
--a: calc((var(--i) - (var(--n) - 1) / 2) * var(--pitch));
transform: translate(
calc(sin(var(--a)) * var(--r)),
calc(cos(var(--a)) * var(--r) * -1)
) scale(var(--s));
transition: transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
}
// Native Clipboard Write & Action Trigger
async function copyLink(url) {
await navigator.clipboard.writeText(url);
setHubState('copied', 'Link copied');
fireConfetti();
}