diff --git a/site/components/sections/footer.tsx b/site/components/sections/footer.tsx index fe73bf0..3fe1d33 100644 --- a/site/components/sections/footer.tsx +++ b/site/components/sections/footer.tsx @@ -1,7 +1,7 @@ import React from 'react'; import Link from 'next/link'; -export function Footer() { +export function Footer({ noBadge }: { noBadge?: boolean }) { return ( ); } diff --git a/site/components/sections/splitbee-counter.tsx b/site/components/sections/splitbee-counter.tsx new file mode 100644 index 0000000..e2953d0 --- /dev/null +++ b/site/components/sections/splitbee-counter.tsx @@ -0,0 +1,74 @@ +import React from 'react'; +import clsx from 'clsx'; + +export const useSplitbeeCount = ( + event: T, + token: string +): number => { + const [data, setData] = React.useState(0); + const socket = React.useRef(null); + React.useEffect(() => { + if (typeof window !== undefined) { + socket.current = new WebSocket('wss://api.splitbee.io/realtime'); + socket.current.onopen = (e) => { + socket.current.send( + JSON.stringify({ + type: 'subscribe', + data: { + token: token, + events: [event], + }, + }) + ); + }; + socket.current.onmessage = (e) => { + const d = JSON.parse(e.data); + setData(d.count); + }; + + return () => {}; + } + }, []); + + return data; +}; + +export const SplitbeeCounter = () => { + const count = useSplitbeeCount('Trigger Toast', 'NTV7AYBLEXW3'); + + const letters = count.toString().split(''); + + return ( +
+
+ Toasts made on this website so far +
+
+ {letters.map((l, i) => ( +
+ {l} +
+ ))} +
+
+ ⚡️ Real-time analytics by{' '} + + Splitbee + +
+
+ ); +}; diff --git a/site/pages/index.tsx b/site/pages/index.tsx index 36ba7c9..bf4bcd6 100644 --- a/site/pages/index.tsx +++ b/site/pages/index.tsx @@ -16,6 +16,7 @@ import { version } from '../../package.json'; import { ToastExample } from '../components/sections/toast-example'; import { Footer } from '../components/sections/footer'; import { ToasterExample } from '../components/sections/toaster-example'; +import { SplitbeeCounter } from '../components/sections/splitbee-counter'; import Link from 'next/link'; const Feature: React.FC = ({ children }) => ( @@ -236,11 +237,12 @@ export default function Home() { + -
+
-
); }