Files
Reactive-Resume/packages/pdf/src/context.tsx
T
Amruth Pillai a4999c04af refactor: remove dead code, unused exports and redundant dependencies
- drop dotenv (Node 24 process.loadEnvFile) and dompurify (only used by dead code)
- delete unused ui components/hooks (card, progress, checkbox, use-confirm, use-prompt)
- delete dead sanitizeHtml/sanitizeCss, url-security helpers, patch-resume tool,
  schema/page, createResumePatches, patch-proposal preview builder, fonts fallback helpers
- inline single-caller wrappers (flags service, auth getSession, pdf renderer passthrough)
- deduplicate template color helpers into shared/color-helpers
- unexport 50+ internal-only symbols, remove dead export-map entries
- replace hand-rolled unique()/useIsMobile with Set spread and usehooks-ts
2026-07-03 20:04:36 +02:00

37 lines
1.2 KiB
TypeScript

import type { ResumeData } from "@reactive-resume/schema/resume/data";
import type { ReactNode } from "react";
import type { SectionTitleResolver } from "./section-title";
import { createContext, use, useMemo } from "react";
import { isRTL } from "@reactive-resume/utils/locale";
type RenderContextValue = ResumeData & {
resolveSectionTitle?: SectionTitleResolver | undefined;
rtl: boolean;
};
const RenderContext = createContext<RenderContextValue | null>(null);
type RenderProviderProps = {
data: ResumeData;
resolveSectionTitle?: SectionTitleResolver | undefined;
children: ReactNode;
};
export const RenderProvider = ({ data, resolveSectionTitle, children }: RenderProviderProps) => {
const rtl = isRTL(data.metadata.page.locale);
const contextValue = useMemo<RenderContextValue>(
() => ({ ...data, resolveSectionTitle, rtl }),
[data, resolveSectionTitle, rtl],
);
return <RenderContext.Provider value={contextValue}>{children}</RenderContext.Provider>;
};
export const useRender = (): RenderContextValue => {
const context = use(RenderContext);
if (!context) throw new Error("useRender must be called inside a <RenderProvider>.");
return context;
};