updated solution using Next.js 13.4.10 AppRouter
To use the component without errors, you must dynamically import with no server-side rendering.
see this page.tsx
import dynamic from "next/dynamic";
const ButtonDy = dynamic(() => import("./mycomponents/Button"), {ssr: false});
export default function Home() {
return (
<main>
<ButtonDy>Epic Button</ButtonDy>
</main>
)
}
Here is the 'Button.tsx' component:
'use client'
import React, { useEffect } from "react";
import { initTE, Ripple } from "tw-elements";
const Button: React.FC<{
children?: React.ReactNode,
}> = ({
children,
}) => {
useEffect(() => {
initTE({ Ripple });
}, []);
return(<>
<button
type="button"
data-te-ripple-init
data-te-ripple-color="light"
className="inline-block rounded bg-primary px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-white shadow-[0_4px_9px_-4px_#3b71ca] transition duration-150 ease-in-out hover:bg-primary-600 hover:shadow-[0_8px_9px_-4px_rgba(59,113,202,0.3),0_4px_18px_0_rgba(59,113,202,0.2)] focus:bg-primary-600 focus:shadow-[0_8px_9px_-4px_rgba(59,113,202,0.3),0_4px_18px_0_rgba(59,113,202,0.2)] focus:outline-none focus:ring-0 active:bg-primary-700 active:shadow-[0_8px_9px_-4px_rgba(59,113,202,0.3),0_4px_18px_0_rgba(59,113,202,0.2)] dark:shadow-[0_4px_9px_-4px_rgba(59,113,202,0.5)] dark:hover:shadow-[0_8px_9px_-4px_rgba(59,113,202,0.2),0_4px_18px_0_rgba(59,113,202,0.1)] dark:focus:shadow-[0_8px_9px_-4px_rgba(59,113,202,0.2),0_4px_18px_0_rgba(59,113,202,0.1)] dark:active:shadow-[0_8px_9px_-4px_rgba(59,113,202,0.2),0_4px_18px_0_rgba(59,113,202,0.1)]">
{children}
</button>
</>);
}
export default Button;
original solution on Tailwind Elements Docs https://tailwind-elements.com/docs/standard/integrations/next-integration/