import type { FetcherWithComponents, FormProps } from "@remix-run/react"; import type { ReactElement, ReactNode } from "react"; import { Form } from "@remix-run/react"; import { useHydrated } from "remix-utils"; export let NoJS = ({ children }: { children: ReactElement }) => { let isHydrated = useHydrated(); if (!isHydrated) { return children; } else { return null; } }; export let HasJS = ({ children }: { children: ReactElement }) => { let isHydrated = useHydrated(); if (isHydrated) { return children; } else { return null; } }; export let ProgessiveEnhancement = ({ children, fallback, }: { children: ReactElement; fallback: ReactElement; }) => { let isHydrated = useHydrated(); if (isHydrated) { return children; } else { return fallback; } }; export let ProgressiveForm = ({ fetcher, children, ...props }: { children: ReactNode; fetcher?: FetcherWithComponents; } & FormProps) => { let isHydrated = useHydrated(); let NoJS = () => ( ); if (fetcher) { return ( {children} ); } else { return (
{children} ); } };