| 41 | |
| 42 | // inspired from __NEXT_DATA__, we use application/json to avoid CSRF policy with inline scripts |
| 43 | const getServerHandoff = (id: string) => { |
| 44 | try { |
| 45 | const serverData = document.getElementById(`__PRIMER_DATA_${id}__`)?.textContent |
| 46 | if (serverData) return JSON.parse(serverData) |
| 47 | } catch (error) { |
| 48 | // if document/element does not exist or JSON is invalid, supress error |
| 49 | } |
| 50 | return {} |
| 51 | } |
| 52 | |
| 53 | export const ThemeProvider: React.FC<React.PropsWithChildren<ThemeProviderProps>> = ({children, ...props}) => { |
| 54 | // Get fallback values from parent ThemeProvider (if exists) |