Skip to content

Instantly share code, notes, and snippets.

@JoueBien
JoueBien / GlobalNextAnalytics.tsx
Created October 16, 2023 10:29
Next JS 13 GTM using @analytics/google-tag-manager
import {
PropsWithChildren,
FC,
createContext,
useState,
useEffect,
} from "react";
import Analytics, { AnalyticsInstance } from "analytics";
import googleTagManager from "@analytics/google-tag-manager";
import { useRouter } from "next/router";
@JoueBien
JoueBien / useScreenSize.tsx
Created January 26, 2023 07:23
useScreenSize
import { useEffect, useState } from "react";
export function useScreenSize() {
// Local State
const [width, setWidth] = useState<number>(1200);
const [height, setHeight] = useState<number>(900);
// Update the height
function onScreenSizeChange(_event: Event) {
setWidth(window.innerWidth);
@JoueBien
JoueBien / useKeyUp.tsx
Created January 26, 2023 07:23
useKeyUp
import { useEffect } from "react";
export function useKeyUp(callback: (event: KeyboardEvent) => void) {
function onKeyPress(event: KeyboardEvent) {
callback(event);
}
// On Mount and callback change
useEffect(() => {
document.addEventListener("keyup", onKeyPress);
// Libs
import { useEffect, useState } from "react";
export default function useIsSSR() {
// Local State
const [isClient, setIsClient] = useState<boolean>(false);
const [isSSR, setIsSSR] = useState<boolean>(true);
// On Mount set where we are