{"version":3,"file":"AppProviders.cjs","names":[],"sources":["../../src/app/AppProviders.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { QueryProvider } from \"../query/QueryProvider\";\nimport type { QueryProviderProps } from \"../query/QueryProvider\";\nimport { ThemeProvider } from \"../theme/ThemeProvider\";\nimport type { ThemeProviderProps } from \"../theme/ThemeProvider\";\nimport { I18nProvider } from \"../i18n/I18nProvider\";\nimport type { I18nProviderProps } from \"../i18n/I18nProvider\";\nimport { ErrorBoundary } from \"../error-boundary/ErrorBoundary\";\nimport type { ErrorBoundaryProps } from \"../error-boundary/ErrorBoundary\";\n\nexport interface AppProvidersProps {\n    children: ReactNode;\n    /**\n     * TanStack Query config. Enabled by default with SDK defaults; pass `false`\n     * to opt out (e.g. the app already mounts its own `QueryProvider`).\n     */\n    query?: Omit<QueryProviderProps, \"children\"> | false;\n    /**\n     * Theme config. Enabled by default; pass `false` to opt out.\n     */\n    theme?: Omit<ThemeProviderProps, \"children\"> | false;\n    /**\n     * i18n config. Opt-in: provide `locale` + `messages` to mount the provider.\n     */\n    i18n?: Omit<I18nProviderProps, \"children\">;\n    /**\n     * Top-level error boundary. Opt-in: provide a `fallback` to wrap the tree.\n     */\n    errorBoundary?: Omit<ErrorBoundaryProps, \"children\">;\n}\n\n/**\n * Compose the Tempest app-wide providers in one place: error boundary →\n * TanStack Query → theme → i18n. Query and theme are on by default; i18n and\n * the error boundary mount only when configured. Each provider can be disabled\n * or tuned independently, so an app's `main.tsx` stays a single declarative\n * block instead of a hand-nested provider pyramid.\n *\n * @example\n * <AppProviders\n *     errorBoundary={{ fallback: <Crash /> }}\n *     i18n={{ locale: \"pt-BR\", messages }}\n * >\n *     <AppRouter routes={routes} />\n * </AppProviders>\n */\nexport function AppProviders({ children, query, theme, i18n, errorBoundary }: AppProvidersProps) {\n    let tree: ReactNode = children;\n\n    if (i18n) {\n        tree = <I18nProvider {...i18n}>{tree}</I18nProvider>;\n    }\n\n    if (theme !== false) {\n        tree = <ThemeProvider {...(theme || {})}>{tree}</ThemeProvider>;\n    }\n\n    if (query !== false) {\n        tree = <QueryProvider {...(query || {})}>{tree}</QueryProvider>;\n    }\n\n    if (errorBoundary) {\n        tree = <ErrorBoundary {...errorBoundary}>{tree}</ErrorBoundary>;\n    }\n\n    return <>{tree}</>;\n}\n"],"mappings":"gNA8CA,SAAgB,EAAa,CAAE,WAAU,QAAO,QAAO,OAAM,iBAAoC,CAC7F,IAAI,EAAkB,EAkBtB,OAhBI,IACA,GAAO,EAAA,EAAA,IAAA,CAAC,EAAA,aAAD,CAAc,GAAI,EAAO,SAAA,CAAmB,CAAA,GAGnD,IAAU,KACV,GAAO,EAAA,EAAA,IAAA,CAAC,EAAA,cAAD,CAAe,GAAK,GAAS,CAAC,EAAK,SAAA,CAAoB,CAAA,GAG9D,IAAU,KACV,GAAO,EAAA,EAAA,IAAA,CAAC,EAAA,cAAD,CAAe,GAAK,GAAS,CAAC,EAAK,SAAA,CAAoB,CAAA,GAG9D,IACA,GAAO,EAAA,EAAA,IAAA,CAAC,EAAA,cAAD,CAAe,GAAI,EAAgB,SAAA,CAAoB,CAAA,IAG3D,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAA,SAAG,CAAO,CAAA,CACrB"}