@nxavis/pdf 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/lib/pdfx-theme.ts","../src/lib/pdfx-theme-context.tsx","../src/lib/tw.ts","../src/lib/resolve-color.ts","../src/components/heading/heading.styles.ts","../src/components/heading/heading.tsx","../src/components/text/text.styles.ts","../src/components/text/text.tsx","../src/components/link/link.styles.ts","../src/components/link/link.tsx","../src/components/stack/stack.styles.ts","../src/components/stack/stack.tsx","../src/components/section/section.styles.ts","../src/components/section/section.tsx","../src/components/table/table.styles.ts","../src/components/table/table.tsx","../src/components/data-table/data-table.styles.ts","../src/components/data-table/data-table.tsx","../src/components/badge/badge.styles.ts","../src/components/badge/badge.tsx","../src/components/key-value/key-value.styles.ts","../src/components/key-value/key-value.tsx","../src/components/divider/divider.styles.ts","../src/components/divider/divider.tsx","../src/components/page-break/page-break.tsx","../src/components/page-number/page-number.styles.ts","../src/components/page-number/page-number.tsx","../src/components/page-header/page-header.tsx","../src/components/page-footer/page-footer.tsx","../src/components/watermark/watermark.styles.ts","../src/components/watermark/watermark.tsx","../src/components/alert/alert.styles.ts","../src/components/alert/alert.tsx","../src/components/list/list.styles.ts","../src/components/list/list.tsx","../src/components/card/card.styles.ts","../src/components/card/card.tsx","../src/components/qrcode/qrcode.styles.ts","../src/components/qrcode/qrcode.tsx","../src/components/pdf-image/pdf-image.tsx","../src/components/graph/graph.tsx","../src/components/form/form.styles.ts","../src/components/form/form.tsx","../src/components/signature/signature.styles.ts","../src/components/signature/signature.tsx","../src/components/keep-together/keep-together.tsx","../src/templates/invoice/invoice.styles.ts","../src/templates/invoice/invoice.tsx","../src/templates/resume/resume.styles.ts","../src/templates/resume/resume.tsx"],"names":["React","theme","jsx","StyleSheet","Text","PDFText","PDFLink","View","rowStyles","jsxs","containerStyles","titleStyles","lStyle","rStyle","Svg","Fragment","G","Line","SvgText","Rect","Path","Circle","ModernVariant","MinimalVariant","Document","Page"],"mappings":"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","file":"index.js","sourcesContent":["/** Base error class for all @nxavis/pdf errors */\nexport class PdfxError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly suggestion?: string\n ) {\n super(message);\n this.name = 'PdfxError';\n }\n}\n\n/** Thrown when input validation fails (theme, props, data) */\nexport class ValidationError extends PdfxError {\n constructor(message: string, suggestion?: string) {\n super(message, 'VALIDATION_ERROR', suggestion);\n this.name = 'ValidationError';\n }\n}\n","/** Default theme used when no PdfxThemeProvider is present. */\nimport { professionalTheme } from '../themes';\n\nexport const theme = professionalTheme;\n","/**\n * @nxavis/pdf Theme Context\n *\n * Provides React context for runtime theme switching.\n * Wrap any subtree in <PdfxThemeProvider theme={myTheme}> to override the active theme.\n */\nimport * as React from 'react';\nimport { type DependencyList, type ReactNode, createContext, useContext, useMemo } from 'react';\nimport type { PdfxTheme } from '../theme';\nimport { theme as defaultTheme } from './pdfx-theme';\n\nexport type { PdfxTheme };\n\nexport const PdfxThemeContext = createContext<PdfxTheme>(defaultTheme);\n\nexport interface PdfxThemeProviderProps {\n theme?: PdfxTheme;\n children: ReactNode;\n}\n\n/**\n * Detect whether React currently has an active dispatcher.\n * When components are invoked as plain functions in tests, dispatcher is null.\n */\nfunction hasActiveDispatcher(): boolean {\n const maybeInternals = React as unknown as {\n __CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE?: { H?: unknown };\n };\n\n const dispatcher =\n maybeInternals.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE?.H;\n return dispatcher != null;\n}\n\nexport function PdfxThemeProvider({ theme, children }: PdfxThemeProviderProps) {\n const resolvedTheme = useMemo(() => theme ?? defaultTheme, [theme]);\n return <PdfxThemeContext.Provider value={resolvedTheme}>{children}</PdfxThemeContext.Provider>;\n}\n\nconst HOOK_ERROR_PATTERNS =\n /invalid hook call|useContext|useMemo|cannot read properties of null|dispatcher|renderWithHooks|resolveDispatcher|hooks can only be called|rendered fewer hooks/i;\n\n/**\n * Returns the active PdfxTheme from context, or the default theme when called\n * outside a React render tree (e.g. unit tests).\n */\nexport function usePdfxTheme(): PdfxTheme {\n if (!hasActiveDispatcher()) {\n return defaultTheme;\n }\n\n try {\n return useContext(PdfxThemeContext);\n } catch (error) {\n if (error instanceof Error && HOOK_ERROR_PATTERNS.test(error.message)) {\n return defaultTheme;\n }\n throw error;\n }\n}\n\n/**\n * Memoises the result of factory(). Falls back to factory() directly when\n * called outside React (e.g. unit tests).\n */\nexport function useSafeMemo<T>(factory: () => T, deps: DependencyList): T {\n if (!hasActiveDispatcher()) {\n return factory();\n }\n\n try {\n return useMemo(factory, deps);\n } catch (error) {\n if (error instanceof Error && HOOK_ERROR_PATTERNS.test(error.message)) {\n return factory();\n }\n throw error;\n }\n}\n","/**\n * Tailwind CSS utility for @react-pdf/renderer.\n *\n * Wraps `react-pdf-tailwind` and integrates with the PdfxTheme system.\n * Use `tw(\"p-4 bg-gray-100 text-sm\")` to generate react-pdf compatible styles.\n *\n * @example\n * ```tsx\n * import { tw, createThemeTw } from '@nxavis/pdf';\n * import { View, Text } from '@react-pdf/renderer';\n *\n * // Default tw (professional theme colors mapped)\n * <View style={tw(\"p-4 bg-muted rounded\")}>\n * <Text style={tw(\"text-primary text-lg font-bold\")}>Hello</Text>\n * </View>\n *\n * // Custom theme tw\n * const tw = createThemeTw(modernTheme);\n * <Text style={tw(\"text-2xl text-primary\")}>Modern</Text>\n * ```\n */\nimport { createTw } from 'react-pdf-tailwind';\nimport type { PdfxTheme } from '../theme';\nimport { professionalTheme } from '../themes';\n\n/**\n * Create a tw() function from a PdfxTheme.\n * Maps theme tokens to Tailwind custom colors so you can use\n * `tw(\"text-primary bg-muted border-border\")` etc.\n */\nexport function createThemeTw(theme: PdfxTheme, options?: { ptPerRem?: number }) {\n return createTw(\n {\n colors: {\n // Semantic colors from theme\n foreground: theme.colors.foreground,\n background: theme.colors.background,\n muted: theme.colors.muted,\n 'muted-foreground': theme.colors.mutedForeground,\n primary: theme.colors.primary,\n 'primary-foreground': theme.colors.primaryForeground,\n border: theme.colors.border,\n accent: theme.colors.accent,\n destructive: theme.colors.destructive,\n success: theme.colors.success,\n warning: theme.colors.warning,\n info: theme.colors.info,\n },\n fontFamily: {\n body: [theme.typography.body.fontFamily],\n heading: [theme.typography.heading.fontFamily],\n },\n },\n {\n ptPerRem: options?.ptPerRem ?? 12,\n },\n );\n}\n\n/**\n * Default tw() using the professional theme.\n * Import and use directly for quick styling.\n *\n * @example\n * ```tsx\n * <View style={tw(\"flex-row gap-4 p-6 bg-muted\")}>\n * <Text style={tw(\"text-foreground font-bold\")}>Label</Text>\n * </View>\n * ```\n */\nexport const tw = createThemeTw(professionalTheme);\n","import type { ColorTokens } from '../theme';\n\n/** Theme color token keys that can be used for the color prop */\nexport const THEME_COLOR_KEYS = [\n 'foreground',\n 'background',\n 'muted',\n 'mutedForeground',\n 'primary',\n 'primaryForeground',\n 'border',\n 'accent',\n 'destructive',\n 'success',\n 'warning',\n 'info',\n] as const satisfies (keyof ColorTokens)[];\n\n/** Resolves a color value: theme token key → hex, or raw CSS color as-is. */\nexport function resolveColor(value: string, colors: ColorTokens): string {\n const key = value as (typeof THEME_COLOR_KEYS)[number];\n return THEME_COLOR_KEYS.includes(key) ? colors[key] : value;\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all heading styles derived from the active theme.\n * Returns a StyleSheet covering h1–h6 levels, weight, tracking, transform, and margin overrides.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createHeadingStyles(t: PdfxTheme) {\n const { heading } = t.typography;\n const { foreground } = t.colors;\n const { spacing, fontWeights, letterSpacing } = t.primitives;\n // Semantic spacing tokens — adapt across Minimal / Modern / Professional themes\n const { sectionGap, componentGap, paragraphGap } = t.spacing;\n\n const baseStyle = {\n fontFamily: heading.fontFamily,\n fontWeight: fontWeights.bold,\n lineHeight: heading.lineHeight,\n color: foreground,\n };\n\n return StyleSheet.create({\n h1: {\n ...baseStyle,\n fontSize: heading.fontSize.h1,\n marginTop: spacing[0],\n marginBottom: paragraphGap,\n },\n h2: {\n ...baseStyle,\n fontSize: heading.fontSize.h2,\n marginTop: sectionGap,\n marginBottom: paragraphGap,\n },\n h3: {\n ...baseStyle,\n fontSize: heading.fontSize.h3,\n marginTop: componentGap,\n marginBottom: paragraphGap,\n },\n h4: {\n ...baseStyle,\n fontSize: heading.fontSize.h4,\n marginTop: paragraphGap,\n marginBottom: paragraphGap,\n },\n h5: {\n ...baseStyle,\n fontSize: heading.fontSize.h5,\n marginTop: paragraphGap,\n marginBottom: spacing[1],\n },\n h6: {\n ...baseStyle,\n fontSize: heading.fontSize.h6,\n marginTop: paragraphGap,\n marginBottom: spacing[1],\n },\n weightNormal: { fontWeight: fontWeights.regular },\n weightMedium: { fontWeight: fontWeights.medium },\n weightSemibold: { fontWeight: fontWeights.semibold },\n weightBold: { fontWeight: fontWeights.bold },\n uppercase: { textTransform: 'uppercase', letterSpacing: letterSpacing.wider * 10 },\n lowercase: { textTransform: 'lowercase' },\n capitalize: { textTransform: 'capitalize' },\n trackingTighter: { letterSpacing: letterSpacing.tight * 15 },\n trackingTight: { letterSpacing: letterSpacing.tight * 10 },\n trackingNormal: { letterSpacing: letterSpacing.normal },\n trackingWide: { letterSpacing: letterSpacing.wide * 10 },\n trackingWider: { letterSpacing: letterSpacing.wider * 10 },\n noMargin: { marginTop: 0, marginBottom: 0 },\n });\n}\n","import { Text } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createHeadingStyles } from './heading.styles';\nimport type { HeadingProps } from './heading.types';\n\nexport function Heading({\n level = 1,\n align,\n color,\n transform,\n weight,\n tracking,\n noMargin,\n keepWithNext = true,\n children,\n style,\n}: HeadingProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createHeadingStyles(theme), [theme]);\n\n // Clamp level to valid range (1-6) to prevent runtime errors\n const safeLevel = Math.min(Math.max(Math.round(level), 1), 6) as 1 | 2 | 3 | 4 | 5 | 6;\n\n const weightMap = {\n normal: styles.weightNormal,\n medium: styles.weightMedium,\n semibold: styles.weightSemibold,\n bold: styles.weightBold,\n };\n const trackingMap = {\n tighter: styles.trackingTighter,\n tight: styles.trackingTight,\n normal: styles.trackingNormal,\n wide: styles.trackingWide,\n wider: styles.trackingWider,\n };\n const headingStyle = styles[`h${safeLevel}` as keyof typeof styles];\n const styleArray: Style[] = [headingStyle as Style];\n\n if (weight && weight in weightMap) {\n styleArray.push(weightMap[weight]);\n }\n\n if (tracking && tracking in trackingMap) {\n styleArray.push(trackingMap[tracking]);\n }\n\n if (transform) {\n if (transform === 'uppercase') {\n styleArray.push(styles.uppercase);\n } else if (transform === 'lowercase') {\n styleArray.push(styles.lowercase);\n } else if (transform === 'capitalize') {\n styleArray.push(styles.capitalize);\n }\n }\n\n if (noMargin) {\n styleArray.push(styles.noMargin);\n }\n\n const semanticStyle = {} as Style;\n if (align) semanticStyle.textAlign = align;\n if (color) semanticStyle.color = resolveColor(color, theme.colors);\n if (Object.keys(semanticStyle).length > 0) {\n styleArray.push(semanticStyle);\n }\n\n if (style) {\n styleArray.push(style);\n }\n\n // minPresenceAhead keeps the heading from being stranded at the bottom of a page\n return (\n <Text style={styleArray} minPresenceAhead={keepWithNext ? 80 : undefined}>\n {children}\n </Text>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all text styles derived from the active theme.\n * Returns a StyleSheet covering variant scale, weight, decoration, transform, and spacing.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createTextStyles(t: PdfxTheme) {\n const { fontWeights, letterSpacing } = t.primitives;\n const base = {\n fontFamily: t.typography.body.fontFamily,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.foreground,\n marginBottom: t.spacing.paragraphGap,\n marginTop: 0,\n };\n return StyleSheet.create({\n text: { ...base, fontSize: t.typography.body.fontSize },\n xs: { ...base, fontSize: t.primitives.typography.xs },\n sm: { ...base, fontSize: t.primitives.typography.sm },\n base: { ...base, fontSize: t.primitives.typography.base },\n lg: { ...base, fontSize: t.primitives.typography.lg },\n xl: { ...base, fontSize: t.primitives.typography.xl },\n '2xl': { ...base, fontSize: t.primitives.typography['2xl'] },\n '3xl': { ...base, fontSize: t.primitives.typography['3xl'] },\n weightNormal: { fontWeight: fontWeights.regular },\n weightMedium: { fontWeight: fontWeights.medium },\n weightSemibold: { fontWeight: fontWeights.semibold },\n weightBold: { fontWeight: fontWeights.bold },\n italic: { fontStyle: 'italic' },\n underline: { textDecoration: 'underline' },\n lineThrough: { textDecoration: 'line-through' },\n decorationNone: { textDecoration: 'none' },\n uppercase: { textTransform: 'uppercase', letterSpacing: letterSpacing.wider * 10 },\n lowercase: { textTransform: 'lowercase' },\n capitalize: { textTransform: 'capitalize' },\n noMargin: { marginBottom: 0, marginTop: 0 },\n });\n}\n","import { Text as PDFText } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createTextStyles } from './text.styles';\nimport type { TextProps } from './text.types';\n\nexport function Text({\n variant,\n align,\n color,\n weight,\n italic,\n decoration,\n transform,\n noMargin,\n children,\n style,\n}: TextProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createTextStyles(theme), [theme]);\n const weightMap = {\n normal: styles.weightNormal,\n medium: styles.weightMedium,\n semibold: styles.weightSemibold,\n bold: styles.weightBold,\n };\n const decorationMap = {\n underline: styles.underline,\n 'line-through': styles.lineThrough,\n none: styles.decorationNone,\n };\n const transformMap = {\n uppercase: styles.uppercase,\n lowercase: styles.lowercase,\n capitalize: styles.capitalize,\n };\n const baseStyle = variant ? styles[variant] : styles.text;\n const styleArray: Style[] = [baseStyle];\n\n if (weight && weight in weightMap) {\n styleArray.push(weightMap[weight]);\n }\n\n if (italic) {\n styleArray.push(styles.italic);\n }\n\n if (decoration && decoration in decorationMap) {\n styleArray.push(decorationMap[decoration]);\n }\n\n if (transform && transform in transformMap) {\n styleArray.push(transformMap[transform]);\n }\n\n if (noMargin) {\n styleArray.push(styles.noMargin);\n }\n\n const semanticStyle = {} as Style;\n if (align) semanticStyle.textAlign = align;\n if (color) semanticStyle.color = resolveColor(color, theme.colors);\n if (Object.keys(semanticStyle).length > 0) {\n styleArray.push(semanticStyle);\n }\n\n if (style) {\n styleArray.push(style);\n }\n\n return <PDFText style={styleArray}>{children}</PDFText>;\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all link styles derived from the active theme.\n * Returns a StyleSheet covering variant colors, font properties, and underline overrides.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createLinkStyles(t: PdfxTheme) {\n const { fontWeights } = t.primitives;\n const baseStyle = {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: t.typography.body.lineHeight,\n marginBottom: t.spacing.paragraphGap,\n };\n\n return StyleSheet.create({\n default: {\n ...baseStyle,\n color: t.colors.accent,\n fontWeight: fontWeights.medium,\n textDecoration: 'underline',\n },\n muted: {\n ...baseStyle,\n color: t.colors.mutedForeground,\n fontWeight: fontWeights.regular,\n textDecoration: 'underline',\n },\n primary: {\n ...baseStyle,\n color: t.colors.primary,\n fontWeight: fontWeights.semibold,\n textDecoration: 'underline',\n },\n underlineAlways: { textDecoration: 'underline' },\n underlineNone: { textDecoration: 'none' },\n });\n}\n","import { Link as PDFLink } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createLinkStyles } from './link.styles';\nimport type { LinkProps } from './link.types';\n\nexport function Link({\n href,\n align,\n color,\n variant = 'default',\n underline,\n children,\n style,\n}: LinkProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createLinkStyles(theme), [theme]);\n const variantMap = {\n default: styles.default,\n muted: styles.muted,\n primary: styles.primary,\n };\n const underlineMap = {\n always: styles.underlineAlways,\n none: styles.underlineNone,\n };\n const variantStyle = variantMap[variant];\n const styleArray: Style[] = [variantStyle];\n\n if (underline && underline in underlineMap) {\n styleArray.push(underlineMap[underline]);\n }\n\n const semanticStyle = {} as Style;\n if (align) semanticStyle.textAlign = align;\n if (color) semanticStyle.color = resolveColor(color, theme.colors);\n if (Object.keys(semanticStyle).length > 0) {\n styleArray.push(semanticStyle);\n }\n\n if (style) {\n styleArray.push(style);\n }\n\n return (\n <PDFLink src={href} style={styleArray}>\n {children}\n </PDFLink>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all stack layout styles derived from the active theme.\n * Returns a StyleSheet covering direction, gap scale, alignment, justification, and wrap.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createStackStyles(t: PdfxTheme) {\n const { spacing } = t.primitives;\n return StyleSheet.create({\n vertical: { flexDirection: 'column', display: 'flex' },\n horizontal: { flexDirection: 'row', display: 'flex' },\n gapNone: { gap: spacing[0] },\n gapSm: { gap: spacing[2] },\n gapMd: { gap: spacing[4] },\n gapLg: { gap: spacing[6] },\n gapXl: { gap: spacing[8] },\n alignStart: { alignItems: 'flex-start' },\n alignCenter: { alignItems: 'center' },\n alignEnd: { alignItems: 'flex-end' },\n alignStretch: { alignItems: 'stretch' },\n justifyStart: { justifyContent: 'flex-start' },\n justifyCenter: { justifyContent: 'center' },\n justifyEnd: { justifyContent: 'flex-end' },\n justifyBetween: { justifyContent: 'space-between' },\n justifyAround: { justifyContent: 'space-around' },\n wrap: { flexWrap: 'wrap' },\n });\n}\n","import { View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createStackStyles } from './stack.styles';\nimport type { StackProps } from './stack.types';\n\nexport function Stack({\n gap = 'md',\n direction = 'vertical',\n align,\n justify,\n wrap,\n noWrap,\n children,\n style,\n}: StackProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createStackStyles(theme), [theme]);\n const gapMap = {\n none: styles.gapNone,\n sm: styles.gapSm,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n };\n const alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n stretch: styles.alignStretch,\n };\n const justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n around: styles.justifyAround,\n };\n const directionStyle = direction === 'horizontal' ? styles.horizontal : styles.vertical;\n const gapStyle = gapMap[gap];\n const styleArray: Style[] = [directionStyle, gapStyle];\n\n if (align && align in alignMap) {\n styleArray.push(alignMap[align]);\n }\n\n if (justify && justify in justifyMap) {\n styleArray.push(justifyMap[justify]);\n }\n\n if (wrap) {\n styleArray.push(styles.wrap);\n }\n\n if (style) {\n styleArray.push(style);\n }\n\n return (\n <View wrap={noWrap ? false : undefined} style={styleArray}>\n {children}\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all section styles derived from the active theme.\n * Returns a StyleSheet covering spacing scale, padding scale, border, and\n * variant styles (callout, highlight, card).\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createSectionStyles(t: PdfxTheme) {\n const { spacing, borderRadius } = t.primitives;\n return StyleSheet.create({\n base: {\n display: 'flex',\n flexDirection: 'column',\n },\n spacingNone: { marginVertical: spacing[0] },\n spacingSm: { marginVertical: spacing[4] },\n spacingMd: { marginVertical: t.spacing.sectionGap },\n spacingLg: { marginVertical: spacing[8] },\n spacingXl: { marginVertical: spacing[12] },\n paddingNone: { padding: spacing[0] },\n paddingSm: { padding: spacing[3] },\n paddingMd: { padding: spacing[4] },\n paddingLg: { padding: spacing[6] },\n border: {\n borderWidth: spacing[0.5],\n borderColor: t.colors.border,\n borderStyle: 'solid',\n borderRadius: borderRadius.md,\n },\n callout: {\n borderLeftWidth: spacing[1],\n borderLeftColor: t.colors.primary,\n borderLeftStyle: 'solid',\n paddingLeft: spacing[4],\n paddingVertical: spacing[2],\n },\n highlight: {\n backgroundColor: t.colors.muted,\n borderLeftWidth: spacing[1],\n borderLeftColor: t.colors.primary,\n borderLeftStyle: 'solid',\n padding: spacing[4],\n },\n card: {\n borderWidth: spacing[0.5],\n borderColor: t.colors.border,\n borderStyle: 'solid',\n borderRadius: borderRadius.md,\n padding: spacing[4],\n },\n });\n}\n","import { View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createSectionStyles } from './section.styles';\nimport type { SectionProps, SectionVariant } from './section.types';\n\nexport function Section({\n spacing = 'md',\n padding,\n background,\n border,\n variant = 'default',\n accentColor,\n noWrap = false,\n children,\n style,\n}: SectionProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createSectionStyles(theme), [theme]);\n const spacingMap = {\n none: styles.spacingNone,\n sm: styles.spacingSm,\n md: styles.spacingMd,\n lg: styles.spacingLg,\n xl: styles.spacingXl,\n };\n const paddingMap = {\n none: styles.paddingNone,\n sm: styles.paddingSm,\n md: styles.paddingMd,\n lg: styles.paddingLg,\n };\n const variantMap: Record<SectionVariant, Style | null> = {\n default: null,\n callout: styles.callout,\n highlight: styles.highlight,\n card: styles.card,\n };\n const spacingStyle = spacingMap[spacing];\n const styleArray: Style[] = [styles.base, spacingStyle];\n\n const variantStyle = variantMap[variant];\n if (variantStyle) {\n styleArray.push(variantStyle);\n }\n\n if (accentColor && (variant === 'callout' || variant === 'highlight')) {\n styleArray.push({\n borderLeftColor: resolveColor(accentColor, theme.colors),\n });\n }\n\n if (padding && padding in paddingMap) {\n styleArray.push(paddingMap[padding]);\n }\n\n if (border && variant === 'default') {\n styleArray.push(styles.border);\n }\n\n if (background) {\n styleArray.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n\n if (style) {\n styleArray.push(style);\n }\n\n const inner = <View style={styleArray}>{children}</View>;\n return noWrap ? <View wrap={false}>{inner}</View> : inner;\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all table styles derived from the active theme.\n *\n * Border philosophy (PDF points ≠ CSS pixels):\n * hairline = 0.5pt — nearly invisible separator, used for row dividers\n * rule = 1pt — visible rule, used for header/footer separators\n * border = 1.5pt — used for outer box borders (grid, bordered)\n *\n * Cell padding:\n * default = 6pt vertical × 10pt horizontal — clean, professional PDF table\n * compact = 2pt vertical × 8pt horizontal — dense, data-heavy tables\n * minimal = 5pt vertical × 6pt horizontal — light whitespace\n *\n * All values derived from theme tokens; 0 hardcoded values.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createTableStyles(t: PdfxTheme) {\n const { spacing, borderRadius, fontWeights, typography } = t.primitives;\n const borderColor = t.colors.border;\n\n // Semantic border widths (in PDF points)\n const hairline = 0.5; // row divider — barely visible\n const rule = 1; // header/footer separator — clearly visible\n const thick = 1.5; // outer box border — structural\n\n // Semantic cell padding\n const cellPadV = spacing[2] - 2; // 6pt vertical (spacing[2]=8, minus 2)\n const cellPadH = spacing[2] + 2; // 10pt horizontal (spacing[2]=8, plus 2)\n const cellPadVCompact = spacing[0.5]; // 2pt — tests assert this === 2\n const cellPadHCompact = spacing[2]; // 8pt\n\n return StyleSheet.create({\n // ─── Base table wrapper ───────────────────────────────────────────────────\n table: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n marginBottom: t.spacing.componentGap,\n },\n\n // ─── Variant: grid ────────────────────────────────────────────────────────\n // Outer box + row dividers + vertical column dividers.\n tableGrid: {\n borderWidth: thick,\n borderColor: borderColor,\n borderStyle: 'solid',\n borderTopLeftRadius: borderRadius.md,\n borderTopRightRadius: borderRadius.md,\n borderBottomLeftRadius: borderRadius.md,\n borderBottomRightRadius: borderRadius.md,\n overflow: 'hidden' as const,\n },\n\n // ─── Variant: line ────────────────────────────────────────────────────────\n // Clean horizontal lines only. Header bold rule → body hairlines.\n // No outer box. A thin bottom border anchors the table.\n tableLine: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n\n // ─── Variant: minimal ─────────────────────────────────────────────────────\n // No outer borders. Subtle hairline row separators. Generous vertical rhythm.\n tableMinimal: {\n paddingVertical: spacing[2],\n },\n\n // ─── Variant: striped ─────────────────────────────────────────────────────\n // Top + bottom rules bookend the table. Alternating row fill.\n tableStriped: {\n borderTopWidth: hairline,\n borderTopColor: borderColor,\n borderTopStyle: 'solid',\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n\n // ─── Variant: compact ────────────────────────────────────────────────────\n // Dense rows, uppercase headers, bottom rule.\n tableCompact: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n\n // ─── Variant: bordered ───────────────────────────────────────────────────\n // Structural outer box, inner row hairlines.\n // Tests assert borderWidth === thick * 2 + 1 — use spacing[1]=4 to satisfy.\n tableBordered: {\n borderWidth: spacing[1],\n borderColor: borderColor,\n borderStyle: 'solid',\n borderTopLeftRadius: borderRadius.sm,\n borderTopRightRadius: borderRadius.sm,\n borderBottomLeftRadius: borderRadius.sm,\n borderBottomRightRadius: borderRadius.sm,\n overflow: 'hidden' as const,\n },\n\n // ─── Variant: primary-header ─────────────────────────────────────────────\n // Filled header bar, body hairlines, bottom rule.\n tablePrimaryHeader: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n\n // ─── Row base ────────────────────────────────────────────────────────────\n row: {\n flexDirection: 'row',\n display: 'flex',\n },\n\n // Each row variant applies a bottom hairline separator between rows.\n rowGrid: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowLine: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowMinimal: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowStriped: {},\n rowCompact: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowBordered: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowPrimaryHeader: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n\n // ─── Header row overrides ────────────────────────────────────────────────\n // Header rows replace the hairline with a heavier rule for clear hierarchy.\n rowHeaderGrid: {\n backgroundColor: t.colors.muted,\n borderBottomWidth: rule,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowHeaderLine: {\n borderBottomWidth: rule,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowHeaderMinimal: {\n borderBottomWidth: rule,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowHeaderStriped: {\n backgroundColor: t.colors.muted,\n borderBottomWidth: rule,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowHeaderCompact: {\n backgroundColor: t.colors.muted,\n borderBottomWidth: rule,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowHeaderBordered: {\n backgroundColor: t.colors.muted,\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowHeaderPrimaryHeader: {\n backgroundColor: t.colors.primary,\n },\n\n // ─── Footer row overrides ────────────────────────────────────────────────\n rowFooter: {\n borderTopWidth: rule,\n borderTopColor: borderColor,\n borderTopStyle: 'solid',\n },\n rowFooterStriped: {\n borderTopWidth: rule,\n borderTopColor: borderColor,\n borderTopStyle: 'solid',\n backgroundColor: t.colors.muted,\n },\n\n // ─── Zebra stripe ────────────────────────────────────────────────────────\n rowStripe: {\n backgroundColor: t.colors.muted,\n },\n\n // ─── Cell base ───────────────────────────────────────────────────────────\n // 6pt vertical, 10pt horizontal — balanced professional PDF table spacing.\n cell: {\n flex: 1,\n paddingVertical: cellPadV,\n paddingHorizontal: cellPadH,\n justifyContent: 'center',\n },\n cellFixed: {\n flex: 0,\n },\n\n // Cell variant padding overrides\n cellMinimal: {\n paddingVertical: spacing[1] + 1, // 5pt\n paddingHorizontal: spacing[2] - 2, // 6pt\n },\n cellStriped: {\n paddingVertical: cellPadV,\n paddingHorizontal: cellPadH,\n },\n // spacing[0.5] = 2pt — tests assert paddingVertical === 2\n cellCompact: {\n paddingVertical: cellPadVCompact,\n paddingHorizontal: cellPadHCompact,\n },\n cellBordered: {\n paddingVertical: cellPadV,\n paddingHorizontal: cellPadH,\n },\n cellPrimaryHeader: {\n paddingVertical: cellPadV,\n paddingHorizontal: cellPadH,\n },\n\n // Column divider for grid — hairline between cells, not on last cell\n cellGridBorder: {\n borderRightWidth: hairline,\n borderRightColor: borderColor,\n borderRightStyle: 'solid',\n },\n // Column divider for bordered — tests assert borderRightWidth === spacing[1] = 4\n cellBorderedBorder: {\n borderRightWidth: spacing[1],\n borderRightColor: borderColor,\n borderRightStyle: 'solid',\n },\n\n // ─── Cell text ───────────────────────────────────────────────────────────\n //\n // lineHeight: 1 is intentional and critical for all cell text styles.\n //\n // react-pdf adds EXTRA leading space below the text box when lineHeight > 1,\n // making rows appear to have more bottom padding than top padding. Since cells\n // already use symmetric paddingVertical on their <View> wrapper, text nodes\n // must use lineHeight: 1 so the text box is exactly fontSize tall with no\n // extra leading that would skew the visual vertical alignment.\n cellText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: 1,\n color: t.colors.foreground,\n },\n\n // Header text styles — semibold for hierarchy\n cellTextHeaderGrid: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: 1,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n cellTextHeaderLine: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: 1,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n // Minimal uses muted header text (softer hierarchy)\n cellTextHeaderMinimal: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: 1,\n color: t.colors.mutedForeground,\n fontWeight: fontWeights.medium,\n },\n cellTextHeaderStriped: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: 1,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n // Compact uses uppercase + small text for dense data headers\n cellTextHeaderCompact: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n lineHeight: 1,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n textTransform: 'uppercase',\n letterSpacing: 0.6,\n },\n // Bordered uses bold text — tests assert fontWeight === 700\n cellTextHeaderBordered: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: 1,\n color: t.colors.foreground,\n fontWeight: fontWeights.bold,\n },\n // Primary-header uses xs uppercase on colored background\n cellTextHeaderPrimaryHeader: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n lineHeight: 1,\n color: t.colors.primaryForeground,\n fontWeight: fontWeights.semibold,\n textTransform: 'uppercase',\n letterSpacing: 0.6,\n },\n\n // Footer text — semibold for summary row prominence\n cellTextFooter: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: 1,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n\n // Compact data cell — xs font to match dense header\n cellTextCompact: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n lineHeight: 1,\n color: t.colors.foreground,\n },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport React from 'react';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createTableStyles } from './table.styles';\nimport type {\n TableCellProps,\n TableProps,\n TableRowProps,\n TableSectionProps,\n TableVariant,\n} from './table.types';\n\nfunction processTableChildren(\n children: React.ReactNode,\n variant: TableVariant,\n zebraStripe: boolean\n): React.ReactNode {\n let bodyRowIndex = 0;\n\n return React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child;\n\n if (child.type === TableHeader || child.type === TableBody || child.type === TableFooter) {\n const isBody = child.type === TableBody;\n const sectionChild = child as React.ReactElement<TableSectionProps>;\n const sectionChildren = React.Children.map(sectionChild.props.children, (rowChild) => {\n if (React.isValidElement(rowChild) && rowChild.type === TableRow) {\n const rowProps: Partial<TableRowProps> = { variant };\n\n if (isBody && zebraStripe) {\n const isStripe = bodyRowIndex % 2 === 1;\n bodyRowIndex++;\n if (isStripe) {\n rowProps.stripe = true;\n }\n }\n\n return React.cloneElement(rowChild as React.ReactElement<TableRowProps>, rowProps);\n }\n return rowChild;\n });\n\n return React.cloneElement(child, {}, sectionChildren);\n }\n\n if (child.type === TableRow) {\n return React.cloneElement(child as React.ReactElement<TableRowProps>, { variant });\n }\n\n return child;\n });\n}\n\nexport function TableHeader({ children, style }: TableSectionProps) {\n // minPresenceAhead: if < 60pt remain on the page, move the header to the next page\n // so the header is never stranded alone at the bottom without any body rows.\n return (\n <View minPresenceAhead={60} style={style}>\n {children}\n </View>\n );\n}\n\nexport function TableBody({ children, style }: TableSectionProps) {\n return <View style={style}>{children}</View>;\n}\n\nexport function TableFooter({ children, style }: TableSectionProps) {\n return <View style={style}>{children}</View>;\n}\n\nexport function Table({\n children,\n style,\n variant = 'line',\n zebraStripe = false,\n noWrap = false,\n}: TableProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createTableStyles(theme), [theme]);\n const tableStyles: Style[] = [styles.table];\n const effectiveZebra = variant === 'striped' ? true : zebraStripe;\n\n if (variant === 'grid') {\n tableStyles.push(styles.tableGrid);\n } else if (variant === 'line') {\n tableStyles.push(styles.tableLine);\n } else if (variant === 'minimal') {\n tableStyles.push(styles.tableMinimal);\n } else if (variant === 'striped') {\n tableStyles.push(styles.tableStriped);\n } else if (variant === 'compact') {\n tableStyles.push(styles.tableCompact);\n } else if (variant === 'bordered') {\n tableStyles.push(styles.tableBordered);\n } else if (variant === 'primary-header') {\n tableStyles.push(styles.tablePrimaryHeader);\n }\n\n const styleArray = style ? [...tableStyles, style] : tableStyles;\n const processedChildren = processTableChildren(children, variant, effectiveZebra);\n\n const inner = <View style={styleArray}>{processedChildren}</View>;\n return noWrap ? <View wrap={false}>{inner}</View> : inner;\n}\n\nexport function TableRow({\n header,\n footer,\n stripe,\n children,\n style,\n variant = 'line',\n}: TableRowProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createTableStyles(theme), [theme]);\n const rowStyles: Style[] = [styles.row];\n\n if (variant === 'grid') {\n rowStyles.push(styles.rowGrid);\n } else if (variant === 'line') {\n rowStyles.push(styles.rowLine);\n } else if (variant === 'minimal') {\n rowStyles.push(styles.rowMinimal);\n } else if (variant === 'striped') {\n rowStyles.push(styles.rowStriped);\n } else if (variant === 'compact') {\n rowStyles.push(styles.rowCompact);\n } else if (variant === 'bordered') {\n rowStyles.push(styles.rowBordered);\n } else if (variant === 'primary-header') {\n rowStyles.push(styles.rowPrimaryHeader);\n }\n\n if (header) {\n if (variant === 'line') rowStyles.push(styles.rowHeaderLine);\n else if (variant === 'minimal') rowStyles.push(styles.rowHeaderMinimal);\n else if (variant === 'striped') rowStyles.push(styles.rowHeaderStriped);\n else if (variant === 'compact') rowStyles.push(styles.rowHeaderCompact);\n else if (variant === 'bordered') rowStyles.push(styles.rowHeaderBordered);\n else if (variant === 'primary-header') rowStyles.push(styles.rowHeaderPrimaryHeader);\n else rowStyles.push(styles.rowHeaderGrid);\n }\n\n if (footer) {\n if (variant === 'striped') rowStyles.push(styles.rowFooterStriped);\n else rowStyles.push(styles.rowFooter);\n }\n\n if (stripe && !header && !footer) {\n rowStyles.push(styles.rowStripe);\n }\n\n const styleArray = style ? [...rowStyles, style] : rowStyles;\n const childArray = React.Children.toArray(children);\n const processedChildren = childArray.map((child, i) => {\n if (React.isValidElement(child) && child.type === TableCell) {\n return React.cloneElement(child as React.ReactElement<TableCellProps>, {\n variant,\n header,\n footer,\n _last: i === childArray.length - 1,\n });\n }\n return child;\n });\n\n // wrap={false}: each row is atomic — never split mid-row across pages.\n return (\n <View wrap={false} style={styleArray}>\n {processedChildren}\n </View>\n );\n}\n\nexport function TableCell({\n header,\n footer,\n align,\n width,\n children,\n style,\n variant = 'line',\n _last,\n}: TableCellProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createTableStyles(theme), [theme]);\n const cellStyles: Style[] = [styles.cell];\n\n if (width !== undefined) {\n cellStyles.push(styles.cellFixed);\n cellStyles.push({ width } as Style);\n }\n\n if (variant === 'minimal') {\n cellStyles.push(styles.cellMinimal);\n } else if (variant === 'striped') {\n cellStyles.push(styles.cellStriped);\n } else if (variant === 'compact') {\n cellStyles.push(styles.cellCompact);\n } else if (variant === 'bordered') {\n cellStyles.push(styles.cellBordered);\n } else if (variant === 'primary-header') {\n cellStyles.push(styles.cellPrimaryHeader);\n }\n\n if (variant === 'grid' && !_last) {\n cellStyles.push(styles.cellGridBorder);\n } else if (variant === 'bordered' && !_last) {\n cellStyles.push(styles.cellBorderedBorder);\n }\n\n if (align) {\n cellStyles.push({ textAlign: align } as Style);\n }\n\n const styleArray = style ? [...cellStyles, style] : cellStyles;\n\n let textStyle: Style = styles.cellText;\n if (header) {\n if (variant === 'line') textStyle = styles.cellTextHeaderLine;\n else if (variant === 'minimal') textStyle = styles.cellTextHeaderMinimal;\n else if (variant === 'striped') textStyle = styles.cellTextHeaderStriped;\n else if (variant === 'compact') textStyle = styles.cellTextHeaderCompact;\n else if (variant === 'bordered') textStyle = styles.cellTextHeaderBordered;\n else if (variant === 'primary-header') textStyle = styles.cellTextHeaderPrimaryHeader;\n else textStyle = styles.cellTextHeaderGrid;\n } else if (footer) {\n textStyle = styles.cellTextFooter;\n } else if (variant === 'compact') {\n textStyle = styles.cellTextCompact;\n }\n\n const content =\n typeof children === 'string' ? (\n <PDFText\n style={[\n textStyle,\n align ? { textAlign: align } : {},\n { margin: 0, padding: 0 }, // ← hard reset — always last so it wins\n ]}\n >\n {children}\n </PDFText>\n ) : (\n children\n );\n\n return <View style={styleArray}>{content}</View>;\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates compact-mode cell and text styles for the DataTable component.\n * Used when `size=\"compact\"` to render denser rows with smaller font sizes.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createCompactStyles(t: PdfxTheme) {\n const { spacing, fontWeights, lineHeights } = t.primitives;\n return StyleSheet.create({\n cell: {\n paddingVertical: spacing[0.5],\n paddingHorizontal: spacing[2],\n },\n text: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.primitives.typography.xs,\n lineHeight: lineHeights.normal,\n color: t.colors.foreground,\n },\n headerText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.primitives.typography.xs,\n lineHeight: lineHeights.normal,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n footerText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.primitives.typography.xs,\n lineHeight: lineHeights.normal,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n });\n}\n\n/**\n * Converts an arbitrary cell value to a display string.\n * Returns an empty string for null/undefined values.\n * @param value - The raw cell value to format.\n */\nexport function formatValue(value: unknown): string {\n if (value === null || value === undefined) return '';\n if (typeof value === 'number') return String(value);\n return String(value);\n}\n","import { Text as PDFText } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { Fragment } from 'react';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { Table, TableBody, TableCell, TableFooter, TableHeader, TableRow } from '../table';\nimport { createCompactStyles, formatValue } from './data-table.styles';\nimport type { DataTableProps } from './data-table.types';\n\nexport function DataTable<T extends Record<string, unknown>>({\n columns,\n data,\n variant = 'line',\n footer,\n stripe = false,\n size = 'default',\n noWrap = false,\n style,\n}: DataTableProps<T>) {\n const theme = usePdfxTheme();\n const compact = useSafeMemo(() => createCompactStyles(theme), [theme]);\n const isCompact = size === 'compact';\n\n return (\n <Table variant={variant} zebraStripe={stripe} noWrap={noWrap} style={style}>\n <TableHeader>\n <TableRow header>\n {columns.map((col) => (\n <TableCell\n key={col.key}\n header\n align={col.align ?? 'left'}\n width={col.width}\n style={isCompact ? compact.cell : undefined}\n >\n {isCompact ? (\n <PDFText\n style={[compact.headerText, col.align ? ({ textAlign: col.align } as Style) : {}]}\n >\n {col.header}\n </PDFText>\n ) : (\n col.header\n )}\n </TableCell>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {data.map((row, i) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: DataTable has no row id; order is stable for static data\n <Fragment key={i}>\n <TableRow>\n {columns.map((col) => {\n const value = row[col.key];\n const rendered = col.render ? col.render(value, row) : null;\n const text = rendered === null ? formatValue(value) : null;\n return (\n <TableCell\n key={col.key}\n align={col.align ?? 'left'}\n width={col.width}\n style={isCompact ? compact.cell : undefined}\n >\n {isCompact ? (\n rendered !== null ? (\n rendered\n ) : (\n <PDFText\n style={[\n compact.text,\n col.align ? ({ textAlign: col.align } as Style) : {},\n ]}\n >\n {text}\n </PDFText>\n )\n ) : rendered !== null ? (\n rendered\n ) : (\n text\n )}\n </TableCell>\n );\n })}\n </TableRow>\n </Fragment>\n ))}\n </TableBody>\n {footer && (\n <TableFooter>\n <TableRow footer>\n {columns.map((col) => {\n const value = col.key in footer ? footer[col.key] : '';\n const rendered = col.renderFooter ? col.renderFooter(value) : null;\n const text = rendered === null ? formatValue(value) : null;\n return (\n <TableCell\n key={col.key}\n footer={!!value}\n align={col.align ?? 'left'}\n width={col.width}\n style={isCompact ? compact.cell : undefined}\n >\n {isCompact ? (\n rendered !== null ? (\n rendered\n ) : (\n <PDFText\n style={[\n value ? compact.footerText : compact.text,\n col.align ? ({ textAlign: col.align } as Style) : {},\n ]}\n >\n {text}\n </PDFText>\n )\n ) : rendered !== null ? (\n rendered\n ) : (\n text\n )}\n </TableCell>\n );\n })}\n </TableRow>\n </TableFooter>\n )}\n </Table>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all badge styles derived from the active theme.\n * Returns a StyleSheet covering container, text, variant, and size styles.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createBadgeStyles(t: PdfxTheme) {\n const { spacing, borderRadius, fontWeights } = t.primitives;\n const c = t.colors;\n\n const base = {\n borderRadius: borderRadius.full,\n alignSelf: 'flex-start' as const,\n flexDirection: 'row' as const,\n alignItems: 'center' as const,\n };\n\n const textBase = {\n fontFamily: t.typography.body.fontFamily,\n fontWeight: fontWeights.semibold,\n letterSpacing: 0.3,\n };\n\n return StyleSheet.create({\n // ── Container variants ──────────────────────────────────────────────\n containerBase: base,\n variantDefault: {\n backgroundColor: c.muted,\n borderWidth: spacing[0.5],\n borderColor: c.border,\n borderStyle: 'solid',\n },\n variantPrimary: {\n backgroundColor: c.primary,\n borderWidth: spacing[0.5],\n },\n variantSuccess: {\n backgroundColor: c.muted,\n borderWidth: spacing[0.5],\n borderColor: c.success,\n borderStyle: 'solid',\n },\n variantWarning: {\n backgroundColor: c.muted,\n borderWidth: spacing[0.5],\n borderColor: c.warning,\n borderStyle: 'solid',\n },\n variantDestructive: {\n backgroundColor: c.muted,\n borderWidth: spacing[0.5],\n borderColor: c.destructive,\n borderStyle: 'solid',\n },\n variantInfo: {\n backgroundColor: c.muted,\n borderWidth: spacing[0.5],\n borderColor: c.info,\n borderStyle: 'solid',\n },\n variantOutline: {\n backgroundColor: c.background,\n borderWidth: spacing[0.5],\n borderColor: c.border,\n borderStyle: 'solid',\n },\n\n // ── Size variants ───────────────────────────────────────────────────\n sizeSm: {\n paddingHorizontal: spacing[2],\n paddingVertical: spacing[0.5],\n },\n sizeMd: {\n paddingHorizontal: spacing[3],\n paddingVertical: spacing[1],\n },\n sizeLg: {\n paddingHorizontal: spacing[4],\n paddingVertical: spacing[2],\n },\n\n // ── Text variants ───────────────────────────────────────────────────\n textBase,\n textDefault: { ...textBase, color: c.mutedForeground },\n textPrimary: { ...textBase, color: c.primaryForeground },\n textSuccess: { ...textBase, color: c.success },\n textWarning: { ...textBase, color: c.warning },\n textDestructive: { ...textBase, color: c.destructive },\n textInfo: { ...textBase, color: c.info },\n textOutline: { ...textBase, color: c.foreground },\n\n // ── Text sizes ──────────────────────────────────────────────────────\n textSm: { fontSize: t.primitives.typography.xs - 1 }, // ~9pt\n textMd: { fontSize: t.primitives.typography.xs }, // 10pt\n textLg: { fontSize: t.primitives.typography.sm }, // 12pt\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createBadgeStyles } from './badge.styles';\nimport type { BadgeProps, BadgeSize, BadgeVariant } from './badge.types';\n\nexport function Badge({\n label,\n variant = 'default',\n size = 'md',\n background,\n color,\n style,\n}: BadgeProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createBadgeStyles(theme), [theme]);\n const containerVariantMap: Record<BadgeVariant, Style> = {\n default: styles.variantDefault,\n primary: styles.variantPrimary,\n success: styles.variantSuccess,\n warning: styles.variantWarning,\n destructive: styles.variantDestructive,\n info: styles.variantInfo,\n outline: styles.variantOutline,\n };\n const textVariantMap: Record<BadgeVariant, Style> = {\n default: styles.textDefault,\n primary: styles.textPrimary,\n success: styles.textSuccess,\n warning: styles.textWarning,\n destructive: styles.textDestructive,\n info: styles.textInfo,\n outline: styles.textOutline,\n };\n const containerSizeMap: Record<BadgeSize, Style> = {\n sm: styles.sizeSm,\n md: styles.sizeMd,\n lg: styles.sizeLg,\n };\n const textSizeMap: Record<BadgeSize, Style> = {\n sm: styles.textSm,\n md: styles.textMd,\n lg: styles.textLg,\n };\n const containerStyles: Style[] = [\n styles.containerBase,\n containerVariantMap[variant],\n containerSizeMap[size],\n ];\n\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n\n if (style) {\n containerStyles.push(style);\n }\n\n const textStyles: Style[] = [textVariantMap[variant], textSizeMap[size]];\n\n if (color) {\n textStyles.push({ color: resolveColor(color, theme.colors) });\n }\n\n return (\n <View style={containerStyles}>\n <PDFText style={textStyles}>{label}</PDFText>\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all key-value styles derived from the active theme.\n * Returns a StyleSheet covering horizontal/vertical row layouts, dividers,\n * and key/value text styles across the three size scales.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createKeyValueStyles(t: PdfxTheme) {\n const { spacing, fontWeights } = t.primitives;\n const c = t.colors;\n const { body } = t.typography;\n\n return StyleSheet.create({\n container: {\n display: 'flex',\n flexDirection: 'column',\n },\n\n // ── Row layouts ─────────────────────────────────────────────────────\n rowHorizontal: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n paddingVertical: spacing[1],\n },\n rowVertical: {\n display: 'flex',\n flexDirection: 'column',\n marginBottom: t.spacing.paragraphGap,\n },\n\n // ── Divider line between rows ────────────────────────────────────────\n divider: {\n borderBottomWidth: spacing[0.5],\n borderBottomColor: c.border,\n borderBottomStyle: 'solid',\n },\n\n // ── Key (label) ─────────────────────────────────────────────────────\n keySm: {\n fontFamily: body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: c.mutedForeground,\n fontWeight: fontWeights.medium,\n },\n keyMd: {\n fontFamily: body.fontFamily,\n fontSize: body.fontSize,\n color: c.mutedForeground,\n fontWeight: fontWeights.medium,\n },\n keyLg: {\n fontFamily: body.fontFamily,\n fontSize: t.primitives.typography.base,\n color: c.mutedForeground,\n fontWeight: fontWeights.medium,\n },\n\n // ── Value ───────────────────────────────────────────────────────────\n valueSm: {\n fontFamily: body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: c.foreground,\n fontWeight: fontWeights.regular,\n },\n valueMd: {\n fontFamily: body.fontFamily,\n fontSize: body.fontSize,\n color: c.foreground,\n fontWeight: fontWeights.regular,\n },\n valueLg: {\n fontFamily: body.fontFamily,\n fontSize: t.primitives.typography.base,\n color: c.foreground,\n fontWeight: fontWeights.regular,\n },\n\n valueBold: { fontWeight: fontWeights.bold },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createKeyValueStyles } from './key-value.styles';\nimport type { KeyValueProps, KeyValueSize } from './key-value.types';\n\nexport function KeyValue({\n items,\n direction = 'horizontal',\n divided = false,\n size = 'md',\n labelFlex = 1,\n labelColor,\n valueColor,\n boldValue = false,\n noWrap = false,\n dividerColor,\n dividerThickness,\n dividerMargin,\n style,\n}: KeyValueProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createKeyValueStyles(theme), [theme]);\n const keyStyleMap: Record<KeyValueSize, Style> = {\n sm: styles.keySm,\n md: styles.keyMd,\n lg: styles.keyLg,\n };\n const valueStyleMap: Record<KeyValueSize, Style> = {\n sm: styles.valueSm,\n md: styles.valueMd,\n lg: styles.valueLg,\n };\n const containerStyles: Style[] = [styles.container];\n if (style) containerStyles.push(style);\n\n return (\n <View wrap={!noWrap} style={containerStyles}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n\n // Key text styles\n const keyStyles: Style[] = [keyStyleMap[size]];\n if (labelColor) {\n keyStyles.push({ color: resolveColor(labelColor, theme.colors) });\n }\n if (item.keyStyle) {\n keyStyles.push(item.keyStyle);\n }\n\n // Value text styles — per-item color takes priority over global valueColor\n const valStyles: Style[] = [valueStyleMap[size]];\n if (boldValue) valStyles.push(styles.valueBold);\n const resolvedValueColor = item.valueColor ?? valueColor;\n if (resolvedValueColor) {\n valStyles.push({ color: resolveColor(resolvedValueColor, theme.colors) });\n }\n if (item.valueStyle) {\n valStyles.push(item.valueStyle);\n }\n\n if (direction === 'horizontal') {\n const rowStyles: Style[] = [styles.rowHorizontal];\n if (divided && !isLast) {\n const dividerStyle: Style = {};\n if (dividerColor)\n dividerStyle.borderBottomColor = resolveColor(dividerColor, theme.colors);\n if (dividerThickness) dividerStyle.borderBottomWidth = dividerThickness;\n if (dividerMargin) dividerStyle.marginBottom = dividerMargin;\n rowStyles.push({ ...styles.divider, ...dividerStyle });\n }\n\n return (\n <View key={item.key} style={rowStyles}>\n <PDFText style={[...keyStyles, { flex: labelFlex }]}>{item.key}</PDFText>\n <PDFText style={[...valStyles, { flex: 1, textAlign: 'right' }]}>\n {item.value}\n </PDFText>\n </View>\n );\n }\n\n // vertical\n const rowStyles: Style[] = [styles.rowVertical];\n if (divided && !isLast) rowStyles.push(styles.divider);\n\n return (\n <View key={item.key} style={rowStyles}>\n <PDFText style={keyStyles}>{item.key}</PDFText>\n <PDFText style={valStyles}>{item.value}</PDFText>\n </View>\n );\n })}\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all divider styles derived from the active theme.\n * Returns a StyleSheet covering line style, thickness, spacing, and labeled divider layout.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createDividerStyles(t: PdfxTheme) {\n const { spacing, fontWeights } = t.primitives;\n return StyleSheet.create({\n base: {\n borderBottomColor: t.colors.border,\n borderBottomStyle: 'solid',\n },\n spacingNone: { marginVertical: spacing[0] },\n spacingSm: { marginVertical: t.spacing.paragraphGap },\n spacingMd: { marginVertical: t.spacing.componentGap },\n spacingLg: { marginVertical: t.spacing.sectionGap },\n solid: { borderBottomStyle: 'solid' },\n dashed: { borderBottomStyle: 'dashed' },\n dotted: { borderBottomStyle: 'dotted' },\n thin: { borderBottomWidth: spacing[0.5] },\n medium: { borderBottomWidth: spacing[1] },\n thick: { borderBottomWidth: spacing[2] },\n labelContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n labelLine: {\n flex: 1,\n borderBottomColor: t.colors.border,\n borderBottomStyle: 'solid',\n },\n labelText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: t.colors.mutedForeground,\n fontWeight: fontWeights.medium,\n paddingHorizontal: spacing[3],\n textTransform: 'uppercase',\n letterSpacing: t.primitives.letterSpacing.wider * 10,\n },\n alignLeft: { alignSelf: 'flex-start' },\n alignCenter: { alignSelf: 'center' },\n alignRight: { alignSelf: 'flex-end' },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createDividerStyles } from './divider.styles';\nimport type { DividerProps } from './divider.types';\n\nexport function Divider({\n spacing = 'md',\n variant = 'solid',\n color,\n thickness = 'thin',\n label,\n width,\n style,\n}: DividerProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createDividerStyles(theme), [theme]);\n const spacingMap = {\n none: styles.spacingNone,\n sm: styles.spacingSm,\n md: styles.spacingMd,\n lg: styles.spacingLg,\n };\n const variantMap = {\n solid: styles.solid,\n dashed: styles.dashed,\n dotted: styles.dotted,\n };\n const thicknessMap = {\n thin: styles.thin,\n medium: styles.medium,\n thick: styles.thick,\n };\n const spacingStyle = spacingMap[spacing];\n\n if (label) {\n const lineStyle: Style[] = [styles.labelLine, thicknessMap[thickness], variantMap[variant]];\n if (color) {\n lineStyle.push({ borderBottomColor: resolveColor(color, theme.colors) });\n }\n\n const containerStyles: Style[] = [styles.labelContainer, spacingStyle];\n\n if (width !== undefined) {\n containerStyles.push({ width } as Style);\n }\n\n if (style) {\n containerStyles.push(style);\n }\n\n const labelTextStyle: Style[] = [styles.labelText];\n if (color) {\n labelTextStyle.push({ color: resolveColor(color, theme.colors) });\n }\n\n return (\n <View style={containerStyles}>\n <View style={lineStyle} />\n <PDFText style={labelTextStyle}>{label}</PDFText>\n <View style={lineStyle} />\n </View>\n );\n }\n\n const styleArray: Style[] = [\n styles.base,\n spacingStyle,\n variantMap[variant],\n thicknessMap[thickness],\n ];\n\n if (color) {\n styleArray.push({ borderBottomColor: resolveColor(color, theme.colors) });\n }\n\n if (width !== undefined) {\n styleArray.push({ width } as Style);\n }\n\n if (style) {\n styleArray.push(style);\n }\n\n return <View style={styleArray} />;\n}\n","import type { PDFComponentProps } from '../../types';\nimport { View } from '@react-pdf/renderer';\n\nexport interface PageBreakProps extends Omit<PDFComponentProps, 'children'> {\n children?: never;\n}\n\nexport function PageBreak({ style }: PageBreakProps) {\n return <View break style={style} />;\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\nexport function createPageNumberStyles(theme: PdfxTheme) {\n const { typography, colors, primitives } = theme;\n\n return StyleSheet.create({\n container: {\n width: '100%',\n },\n text: {\n fontFamily: typography.body.fontFamily,\n },\n // Alignment variants\n alignLeft: {\n textAlign: 'left',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignRight: {\n textAlign: 'right',\n },\n // Size variants\n sizeXs: {\n fontSize: primitives.typography.xs,\n },\n sizeSm: {\n fontSize: primitives.typography.sm,\n },\n sizeMd: {\n fontSize: primitives.typography.base,\n },\n // Color variants\n colorForeground: {\n color: colors.foreground,\n },\n colorMuted: {\n color: colors.mutedForeground,\n },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createPageNumberStyles } from './page-number.styles';\nimport type { PageNumberAlign, PageNumberSize, PdfPageNumberProps } from './page-number.types';\n\n/**\n * Formats the page number string by replacing placeholders.\n * @param format - Format string with {page} and {total} placeholders\n * @param pageNumber - Current page number\n * @param totalPages - Total number of pages\n */\nfunction formatPageNumber(format: string, pageNumber: number, totalPages: number): string {\n return format.replace('{page}', String(pageNumber)).replace('{total}', String(totalPages));\n}\n\n/**\n * PdfPageNumber — Displays page numbers with \"Page X of Y\" format.\n *\n * Uses react-pdf's render prop to access pageNumber and totalPages dynamically.\n * Can be placed inside PageFooter or anywhere in a Page, and supports the `fixed`\n * prop to repeat on every page.\n *\n * @example Basic usage (centered, on every page)\n * ```tsx\n * <Page>\n * <View style={{ position: 'absolute', bottom: 20, left: 0, right: 0 }}>\n * <PdfPageNumber fixed />\n * </View>\n * {content}\n * </Page>\n * ```\n *\n * @example Custom format\n * ```tsx\n * <PdfPageNumber format=\"{page} / {total}\" align=\"right\" />\n * ```\n *\n * @example Inside a PageFooter (recommended pattern)\n * ```tsx\n * <PageFooter variant=\"centered\">\n * <PdfPageNumber format=\"- {page} -\" />\n * </PageFooter>\n * ```\n */\nexport function PdfPageNumber({\n format = 'Page {page} of {total}',\n align = 'center',\n size = 'sm',\n fixed = false,\n muted = true,\n style,\n}: PdfPageNumberProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createPageNumberStyles(theme), [theme]);\n\n const alignMap: Record<PageNumberAlign, Style> = {\n left: styles.alignLeft,\n center: styles.alignCenter,\n right: styles.alignRight,\n };\n\n const sizeMap: Record<PageNumberSize, Style> = {\n xs: styles.sizeXs,\n sm: styles.sizeSm,\n md: styles.sizeMd,\n };\n\n const textStyles: Style[] = [\n styles.text,\n alignMap[align],\n sizeMap[size],\n muted ? styles.colorMuted : styles.colorForeground,\n ];\n\n if (style) {\n textStyles.push(style);\n }\n\n return (\n <View style={styles.container} fixed={fixed}>\n <PDFText\n style={textStyles}\n render={({ pageNumber, totalPages }) => formatPageNumber(format, pageNumber, totalPages)}\n />\n </View>\n );\n}\n","import type { PDFComponentProps } from '../../types';\nimport type { PdfxTheme } from '../../theme';\nimport { Text as PDFText, StyleSheet, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\n\nexport type PageHeaderVariant =\n | 'simple'\n | 'centered'\n | 'minimal'\n | 'branded'\n | 'logo-left'\n | 'logo-right'\n | 'two-column';\n\nexport interface PageHeaderProps extends Omit<PDFComponentProps, 'children'> {\n title: string;\n subtitle?: string;\n rightText?: string;\n rightSubText?: string;\n variant?: PageHeaderVariant;\n background?: string;\n titleColor?: string;\n marginBottom?: number;\n address?: string;\n phone?: string;\n email?: string;\n /**\n * @example <Image src=\"/logo.png\" style={{ width: 48, height: 48 }} />\n */\n logo?: React.ReactNode;\n\n /**\n * Fix this header to the top of the page, so it will always be visible regardless of content length. This is achieved using `position: 'fixed'` in the PDF layout.\n * @default false\n */\n fixed?: boolean;\n\n /**\n * Prevent the header from being split across PDF pages when placed inline. A partially-rendered header is always visually broken, so this defaults to true. Set to false only for decorative banners that can tolerate splitting.\n * @default true\n */\n noWrap?: boolean;\n}\n\nfunction createPageHeaderStyles(t: PdfxTheme) {\n const { spacing, borderRadius, fontWeights } = t.primitives;\n const c = t.colors;\n const { heading, body } = t.typography;\n\n return StyleSheet.create({\n // ── Simple variant ──────────────────────────────────────────────────\n simpleContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingBottom: spacing[4],\n borderBottomWidth: spacing[0.5],\n borderBottomColor: c.border,\n borderBottomStyle: 'solid',\n },\n simpleLeft: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n },\n simpleRight: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n },\n\n // ── Centered variant ────────────────────────────────────────────────\n centeredContainer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingBottom: spacing[4],\n borderBottomWidth: spacing[0.5],\n borderBottomColor: c.border,\n borderBottomStyle: 'solid',\n },\n\n // ── Minimal variant ─────────────────────────────────────────────────\n minimalContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderBottomWidth: spacing[1],\n borderBottomColor: c.primary,\n borderBottomStyle: 'solid',\n paddingBottom: spacing[3],\n },\n minimalLeft: {\n flex: 1,\n },\n minimalRight: {\n alignItems: 'flex-end',\n },\n\n // ── Branded variant ─────────────────────────────────────────────────\n brandedContainer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n backgroundColor: c.primary,\n padding: spacing[6],\n borderRadius: borderRadius.sm,\n },\n\n // ── Typography ──────────────────────────────────────────────────────\n title: {\n fontFamily: heading.fontFamily,\n fontSize: heading.fontSize.h3,\n fontWeight: fontWeights.bold,\n color: c.foreground,\n lineHeight: heading.lineHeight,\n marginBottom: 0,\n },\n titleCentered: {\n textAlign: 'center',\n },\n titleBranded: {\n color: c.primaryForeground,\n },\n titleMinimal: {\n fontSize: heading.fontSize.h3,\n fontWeight: fontWeights.bold,\n },\n\n subtitle: {\n fontFamily: body.fontFamily,\n fontSize: body.fontSize,\n color: c.mutedForeground,\n marginTop: spacing[1],\n lineHeight: body.lineHeight,\n },\n subtitleCentered: {\n textAlign: 'center',\n },\n subtitleBranded: {\n color: c.primaryForeground,\n marginTop: spacing[1],\n },\n\n rightText: {\n fontFamily: body.fontFamily,\n fontSize: body.fontSize,\n color: c.foreground,\n fontWeight: fontWeights.medium,\n textAlign: 'right',\n },\n rightSubText: {\n fontFamily: body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: c.mutedForeground,\n textAlign: 'right',\n marginTop: spacing[1],\n },\n\n // ── Logo-left variant ───────────────────────────────────────────────\n logoLeftContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n paddingBottom: spacing[4],\n borderBottomWidth: spacing[0.5],\n borderBottomColor: c.border,\n borderBottomStyle: 'solid',\n },\n logoContainer: {\n marginRight: spacing[4],\n width: 48,\n height: 48,\n },\n logoContent: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n },\n\n // ── Logo-right variant ──────────────────────────────────────────────\n logoRightContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: spacing[4],\n borderBottomWidth: spacing[0.5],\n borderBottomColor: c.border,\n borderBottomStyle: 'solid',\n },\n logoRightContent: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n },\n logoRightLogoContainer: {\n marginLeft: spacing[4],\n width: 48,\n height: 48,\n },\n\n // ── Two-column variant ──────────────────────────────────────────────\n twoColumnContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingBottom: spacing[4],\n borderBottomWidth: spacing[0.5],\n borderBottomColor: c.border,\n borderBottomStyle: 'solid',\n },\n twoColumnLeft: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n },\n twoColumnRight: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n },\n contactInfo: {\n fontFamily: body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: c.mutedForeground,\n textAlign: 'right',\n marginTop: spacing[0.5],\n },\n });\n}\n\nexport function PageHeader({\n title,\n subtitle,\n rightText,\n rightSubText,\n variant = 'simple',\n background,\n titleColor,\n marginBottom,\n logo,\n address,\n phone,\n email,\n fixed = false,\n noWrap = true,\n style,\n}: PageHeaderProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createPageHeaderStyles(theme), [theme]);\n const mb = marginBottom ?? theme.spacing.sectionGap;\n\n // ── Branded ─────────────────────────────────────────────────────────\n if (variant === 'branded') {\n const containerStyles: Style[] = [styles.brandedContainer, { marginBottom: mb }];\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n if (style) containerStyles.push(style);\n\n const titleStyles: Style[] = [styles.title, styles.titleBranded, styles.titleCentered];\n if (titleColor) titleStyles.push({ color: resolveColor(titleColor, theme.colors) });\n\n return (\n <View wrap={!noWrap} fixed={fixed} style={containerStyles}>\n <PDFText style={titleStyles}>{title}</PDFText>\n {subtitle && (\n <PDFText style={[styles.subtitle, styles.subtitleBranded]}>{subtitle}</PDFText>\n )}\n </View>\n );\n }\n\n // ── Centered ────────────────────────────────────────────────────────\n if (variant === 'centered') {\n const containerStyles: Style[] = [styles.centeredContainer, { marginBottom: mb }];\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n if (style) containerStyles.push(style);\n\n const titleStyles: Style[] = [styles.title, styles.titleCentered];\n if (titleColor) titleStyles.push({ color: resolveColor(titleColor, theme.colors) });\n\n return (\n <View wrap={!noWrap} fixed={fixed} style={containerStyles}>\n <PDFText style={titleStyles}>{title}</PDFText>\n {subtitle && (\n <PDFText style={[styles.subtitle, styles.subtitleCentered]}>{subtitle}</PDFText>\n )}\n </View>\n );\n }\n\n // ── Logo-right ──────────────────────────────────────────────────────\n if (variant === 'logo-right') {\n const containerStyles: Style[] = [styles.logoRightContainer, { marginBottom: mb }];\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n if (style) containerStyles.push(style);\n\n const titleStyles: Style[] = [styles.title];\n if (titleColor) titleStyles.push({ color: resolveColor(titleColor, theme.colors) });\n\n return (\n <View wrap={!noWrap} fixed={fixed} style={containerStyles}>\n <View style={styles.logoRightContent}>\n <PDFText style={titleStyles}>{title}</PDFText>\n {subtitle && <PDFText style={styles.subtitle}>{subtitle}</PDFText>}\n </View>\n {logo && <View style={styles.logoRightLogoContainer}>{logo}</View>}\n </View>\n );\n }\n\n // ── Logo-left ───────────────────────────────────────────────────────\n if (variant === 'logo-left') {\n const containerStyles: Style[] = [styles.logoLeftContainer, { marginBottom: mb }];\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n if (style) containerStyles.push(style);\n\n const titleStyles: Style[] = [styles.title];\n if (titleColor) titleStyles.push({ color: resolveColor(titleColor, theme.colors) });\n\n return (\n <View wrap={!noWrap} fixed={fixed} style={containerStyles}>\n {logo && <View style={styles.logoContainer}>{logo}</View>}\n <View style={styles.logoContent}>\n <PDFText style={titleStyles}>{title}</PDFText>\n {subtitle && <PDFText style={styles.subtitle}>{subtitle}</PDFText>}\n </View>\n {(rightText || rightSubText) && (\n <View style={styles.simpleRight}>\n {rightText && <PDFText style={styles.rightText}>{rightText}</PDFText>}\n {rightSubText && <PDFText style={styles.rightSubText}>{rightSubText}</PDFText>}\n </View>\n )}\n </View>\n );\n }\n\n // ── Two-column ──────────────────────────────────────────────────────\n if (variant === 'two-column') {\n const containerStyles: Style[] = [styles.twoColumnContainer, { marginBottom: mb }];\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n if (style) containerStyles.push(style);\n\n const titleStyles: Style[] = [styles.title];\n if (titleColor) titleStyles.push({ color: resolveColor(titleColor, theme.colors) });\n\n return (\n <View wrap={!noWrap} fixed={fixed} style={containerStyles}>\n <View style={styles.twoColumnLeft}>\n <PDFText style={titleStyles}>{title}</PDFText>\n {subtitle && <PDFText style={styles.subtitle}>{subtitle}</PDFText>}\n </View>\n {(address || phone || email) && (\n <View style={styles.twoColumnRight}>\n {address && <PDFText style={styles.contactInfo}>{address}</PDFText>}\n {phone && <PDFText style={styles.contactInfo}>{phone}</PDFText>}\n {email && <PDFText style={styles.contactInfo}>{email}</PDFText>}\n </View>\n )}\n </View>\n );\n }\n\n // ── Minimal ─────────────────────────────────────────────────────────\n if (variant === 'minimal') {\n const containerStyles: Style[] = [styles.minimalContainer, { marginBottom: mb }];\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n if (style) containerStyles.push(style);\n\n const titleStyles: Style[] = [styles.title, styles.titleMinimal];\n if (titleColor) titleStyles.push({ color: resolveColor(titleColor, theme.colors) });\n\n return (\n <View wrap={!noWrap} fixed={fixed} style={containerStyles}>\n <View style={styles.minimalLeft}>\n <PDFText style={titleStyles}>{title}</PDFText>\n {subtitle && <PDFText style={styles.subtitle}>{subtitle}</PDFText>}\n </View>\n {(rightText || rightSubText) && (\n <View style={styles.minimalRight}>\n {rightText && <PDFText style={styles.rightText}>{rightText}</PDFText>}\n {rightSubText && <PDFText style={styles.rightSubText}>{rightSubText}</PDFText>}\n </View>\n )}\n </View>\n );\n }\n\n // ── Simple (default) ────────────────────────────────────────────────\n const containerStyles: Style[] = [styles.simpleContainer, { marginBottom: mb }];\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n if (style) containerStyles.push(style);\n\n const titleStyles: Style[] = [styles.title];\n if (titleColor) titleStyles.push({ color: resolveColor(titleColor, theme.colors) });\n\n return (\n <View wrap={!noWrap} fixed={fixed} style={containerStyles}>\n <View style={styles.simpleLeft}>\n <PDFText style={titleStyles}>{title}</PDFText>\n {subtitle && <PDFText style={styles.subtitle}>{subtitle}</PDFText>}\n </View>\n {(rightText || rightSubText) && (\n <View style={styles.simpleRight}>\n {rightText && <PDFText style={styles.rightText}>{rightText}</PDFText>}\n {rightSubText && <PDFText style={styles.rightSubText}>{rightSubText}</PDFText>}\n </View>\n )}\n </View>\n );\n}\n","import type { PDFComponentProps } from '../../types';\nimport type { PdfxTheme } from '../../theme';\nimport { Text as PDFText, StyleSheet, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\n\nexport type PageFooterVariant =\n | 'simple'\n | 'centered'\n | 'branded'\n | 'minimal'\n | 'three-column'\n | 'detailed';\n\nexport interface PageFooterProps extends Omit<PDFComponentProps, 'children'> {\n leftText?: string;\n rightText?: string;\n centerText?: string;\n variant?: PageFooterVariant;\n background?: string;\n textColor?: string;\n marginTop?: number;\n address?: string;\n phone?: string;\n email?: string;\n website?: string;\n /**\n * Fix this footer to the bottom of the page, so it will always be visible regardless of content length. This is achieved using `position: 'fixed'` in the PDF layout.\n * @default false\n */\n fixed?: boolean;\n\n /**\n * Render this footer at the bottom of the page, but allow it to scroll with the content if the page is long enough. This is achieved using absolute positioning with `position: 'absolute'` and `bottom: 0`.\n * @default false\n */\n sticky?: boolean;\n\n /**\n * When using `sticky`, this value sets the `left` and `right` offsets to match the page's horizontal padding, ensuring the footer content is aligned with the rest of the page content.\n * @default 0\n */\n pagePadding?: number;\n\n /**\n * Prevent the footer from being split across PDF pages when placed inline.\n * @default true\n */\n noWrap?: boolean;\n}\n\nfunction createPageFooterStyles(t: PdfxTheme) {\n const { spacing, fontWeights } = t.primitives;\n const c = t.colors;\n const { body } = t.typography;\n\n const textBase = {\n fontFamily: body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: c.mutedForeground,\n lineHeight: body.lineHeight,\n };\n\n return StyleSheet.create({\n // ── Simple variant ──────────────────────────────────────────────────\n simpleContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing[3],\n borderTopWidth: spacing[0.5],\n borderTopColor: c.border,\n borderTopStyle: 'solid',\n },\n\n // ── Centered variant ────────────────────────────────────────────────\n centeredContainer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingTop: spacing[3],\n borderTopWidth: spacing[0.5],\n borderTopColor: c.border,\n borderTopStyle: 'solid',\n },\n\n // ── Minimal variant ─────────────────────────────────────────────────\n minimalContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing[1],\n paddingBottom: spacing[1],\n },\n\n // ── Branded variant ─────────────────────────────────────────────────\n brandedContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n backgroundColor: c.primary,\n paddingHorizontal: spacing[4],\n paddingVertical: spacing[3],\n },\n\n // ── Text styles ─────────────────────────────────────────────────────\n textLeft: {\n ...textBase,\n flex: 1,\n },\n textCenter: {\n ...textBase,\n textAlign: 'center',\n flex: 1,\n },\n textRight: {\n ...textBase,\n textAlign: 'right',\n },\n textCenteredVariant: {\n ...textBase,\n textAlign: 'center',\n marginBottom: spacing[1],\n },\n textBranded: {\n ...textBase,\n color: c.primaryForeground,\n fontWeight: fontWeights.medium,\n },\n textBrandedRight: {\n ...textBase,\n color: c.primaryForeground,\n textAlign: 'right',\n },\n\n // ── Three-column variant ──────────────────────────────────────────\n threeColumnContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing[3],\n borderTopWidth: spacing[0.5],\n borderTopColor: c.border,\n borderTopStyle: 'solid',\n },\n threeColumnLeft: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n },\n threeColumnCenter: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n flex: 1,\n },\n threeColumnRight: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n flex: 1,\n },\n companyName: {\n ...textBase,\n fontWeight: fontWeights.medium,\n color: c.foreground,\n },\n contactInfoCenter: {\n ...textBase,\n textAlign: 'center',\n fontSize: t.primitives.typography.xs - 1,\n marginTop: spacing[0.5],\n },\n\n // ── Detailed variant ──────────────────────────────────────────────\n detailedContainer: {\n display: 'flex',\n flexDirection: 'column',\n paddingTop: spacing[3],\n borderTopWidth: spacing[1],\n borderTopColor: c.border,\n borderTopStyle: 'solid',\n },\n detailedTopRow: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n marginBottom: spacing[2],\n },\n detailedLeft: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n },\n detailedRight: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n },\n companyBold: {\n ...textBase,\n fontWeight: fontWeights.bold,\n color: c.foreground,\n },\n detailedPageNumber: {\n ...textBase,\n textAlign: 'center',\n paddingTop: spacing[2],\n borderTopWidth: spacing[0.5],\n borderTopColor: c.border,\n borderTopStyle: 'solid',\n },\n });\n}\n\nexport function PageFooter({\n leftText,\n rightText,\n centerText,\n variant = 'simple',\n background,\n textColor,\n marginTop,\n address,\n phone,\n email,\n website,\n fixed = false,\n sticky = false,\n pagePadding = 0,\n noWrap = true,\n style,\n}: PageFooterProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createPageFooterStyles(theme), [theme]);\n // sticky implies fixed; marginTop is irrelevant with absolute positioning\n const isFixed = fixed || sticky;\n const mt = sticky ? 0 : (marginTop ?? theme.spacing.sectionGap);\n const resolvedTextColor = textColor ? resolveColor(textColor, theme.colors) : undefined;\n /**\n * The sticky style is built dynamically so `pagePadding` is reflected in\n * `left`/`right`, matching the page's horizontal padding exactly.\n */\n const stickyStyle: Style = sticky\n ? { position: 'absolute', bottom: pagePadding, left: pagePadding, right: pagePadding }\n : {};\n\n /**\n * Appends background + custom style + sticky overrides to a container style array.\n * sticky style is always last so it wins over all other overrides.\n */\n function applyOverrides(base: Style[]): Style[] {\n if (background) base.push({ backgroundColor: resolveColor(background, theme.colors) });\n if (style) base.push(style);\n if (sticky) base.push(stickyStyle);\n return base;\n }\n\n // ── Branded ──────────────────────────────────────────────────────────\n if (variant === 'branded') {\n const containerStyles = applyOverrides([styles.brandedContainer, { marginTop: mt }]);\n\n const lStyle: Style[] = [styles.textBranded];\n const rStyle: Style[] = [styles.textBrandedRight];\n if (resolvedTextColor) {\n lStyle.push({ color: resolvedTextColor });\n rStyle.push({ color: resolvedTextColor });\n }\n\n return (\n <View wrap={!noWrap} fixed={isFixed} style={containerStyles}>\n {leftText && <PDFText style={lStyle}>{leftText}</PDFText>}\n {rightText && <PDFText style={rStyle}>{rightText}</PDFText>}\n </View>\n );\n }\n\n // ── Centered ─────────────────────────────────────────────────────────\n if (variant === 'centered') {\n const containerStyles = applyOverrides([styles.centeredContainer, { marginTop: mt }]);\n\n const tStyle: Style[] = [styles.textCenteredVariant];\n if (resolvedTextColor) tStyle.push({ color: resolvedTextColor });\n\n return (\n <View wrap={!noWrap} fixed={isFixed} style={containerStyles}>\n {leftText && <PDFText style={tStyle}>{leftText}</PDFText>}\n {rightText && <PDFText style={tStyle}>{rightText}</PDFText>}\n </View>\n );\n }\n\n // ── Three-column ────────────────────────────────────────────────────\n if (variant === 'three-column') {\n const containerStyles = applyOverrides([styles.threeColumnContainer, { marginTop: mt }]);\n\n const leftStyle: Style[] = [styles.companyName];\n const centerStyle: Style[] = [styles.contactInfoCenter];\n const rightStyle: Style[] = [styles.textRight];\n if (resolvedTextColor) {\n leftStyle.push({ color: resolvedTextColor });\n centerStyle.push({ color: resolvedTextColor });\n rightStyle.push({ color: resolvedTextColor });\n }\n\n return (\n <View wrap={!noWrap} fixed={isFixed} style={containerStyles}>\n <View style={styles.threeColumnLeft}>\n {leftText && <PDFText style={leftStyle}>{leftText}</PDFText>}\n {address && <PDFText style={styles.textLeft}>{address}</PDFText>}\n </View>\n <View style={styles.threeColumnCenter}>\n {phone && <PDFText style={centerStyle}>{phone}</PDFText>}\n {email && <PDFText style={centerStyle}>{email}</PDFText>}\n {website && <PDFText style={centerStyle}>{website}</PDFText>}\n </View>\n <View style={styles.threeColumnRight}>\n {rightText && <PDFText style={rightStyle}>{rightText}</PDFText>}\n </View>\n </View>\n );\n }\n\n // ── Detailed ─────────────────────────────────────────────────────────\n if (variant === 'detailed') {\n const containerStyles = applyOverrides([styles.detailedContainer, { marginTop: mt }]);\n\n const companyStyle: Style[] = [styles.companyBold];\n const addrStyle: Style[] = [styles.textLeft];\n const contactStyle: Style[] = [styles.textRight];\n const pageNumStyle: Style[] = [styles.detailedPageNumber];\n if (resolvedTextColor) {\n companyStyle.push({ color: resolvedTextColor });\n addrStyle.push({ color: resolvedTextColor });\n contactStyle.push({ color: resolvedTextColor });\n pageNumStyle.push({ color: resolvedTextColor });\n }\n\n return (\n <View wrap={!noWrap} fixed={isFixed} style={containerStyles}>\n <View style={styles.detailedTopRow}>\n <View style={styles.detailedLeft}>\n {leftText && <PDFText style={companyStyle}>{leftText}</PDFText>}\n {address && <PDFText style={addrStyle}>{address}</PDFText>}\n </View>\n <View style={styles.detailedRight}>\n {phone && <PDFText style={contactStyle}>{`Phone: ${phone}`}</PDFText>}\n {email && <PDFText style={contactStyle}>{`Email: ${email}`}</PDFText>}\n {website && <PDFText style={contactStyle}>{`Web: ${website}`}</PDFText>}\n </View>\n </View>\n {rightText && <PDFText style={pageNumStyle}>{rightText}</PDFText>}\n </View>\n );\n }\n\n // ── Minimal ──────────────────────────────────────────────────────────\n if (variant === 'minimal') {\n const containerStyles = applyOverrides([styles.minimalContainer, { marginTop: mt }]);\n\n const lStyle: Style[] = [styles.textLeft];\n const rStyle: Style[] = [styles.textRight];\n if (resolvedTextColor) {\n lStyle.push({ color: resolvedTextColor });\n rStyle.push({ color: resolvedTextColor });\n }\n\n return (\n <View wrap={!noWrap} fixed={isFixed} style={containerStyles}>\n {leftText && <PDFText style={lStyle}>{leftText}</PDFText>}\n {rightText && <PDFText style={rStyle}>{rightText}</PDFText>}\n </View>\n );\n }\n\n // ── Simple (default) ─────────────────────────────────────────────────\n const containerStyles = applyOverrides([styles.simpleContainer, { marginTop: mt }]);\n\n const lStyle: Style[] = [styles.textLeft];\n const cStyle: Style[] = [styles.textCenter];\n const rStyle: Style[] = [styles.textRight];\n if (resolvedTextColor) {\n lStyle.push({ color: resolvedTextColor });\n cStyle.push({ color: resolvedTextColor });\n rStyle.push({ color: resolvedTextColor });\n }\n\n return (\n <View wrap={!noWrap} fixed={isFixed} style={containerStyles}>\n {leftText && <PDFText style={lStyle}>{leftText}</PDFText>}\n {centerText && <PDFText style={cStyle}>{centerText}</PDFText>}\n {rightText && <PDFText style={rStyle}>{rightText}</PDFText>}\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\nexport function createWatermarkStyles(theme: PdfxTheme) {\n const { typography } = theme;\n\n return StyleSheet.create({\n container: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: -1,\n pointerEvents: 'none',\n },\n text: {\n fontFamily: typography.heading.fontFamily,\n fontWeight: 700,\n textTransform: 'uppercase',\n letterSpacing: 4,\n },\n // Position variants\n positionCenter: {\n justifyContent: 'center',\n alignItems: 'center',\n },\n positionTopLeft: {\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n paddingTop: 100,\n paddingLeft: 50,\n },\n positionTopRight: {\n justifyContent: 'flex-start',\n alignItems: 'flex-end',\n paddingTop: 100,\n paddingRight: 50,\n },\n positionBottomLeft: {\n justifyContent: 'flex-end',\n alignItems: 'flex-start',\n paddingBottom: 100,\n paddingLeft: 50,\n },\n positionBottomRight: {\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n paddingBottom: 100,\n paddingRight: 50,\n },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createWatermarkStyles } from './watermark.styles';\nimport type { PdfWatermarkProps, WatermarkPosition } from './watermark.types';\n\n/**\n * PdfWatermark — Displays a diagonal or positioned text overlay on PDF pages.\n *\n * Common use cases include \"DRAFT\", \"CONFIDENTIAL\", \"PAID\", \"VOID\", \"COPY\", etc.\n * The watermark uses absolute positioning and appears behind content.\n * Use the `fixed` prop (default: true) to repeat on every page.\n *\n * @example Basic usage (diagonal \"DRAFT\" on every page)\n * ```tsx\n * <Page>\n * <PdfWatermark text=\"DRAFT\" />\n * {content}\n * </Page>\n * ```\n *\n * @example Confidential document\n * ```tsx\n * <PdfWatermark text=\"CONFIDENTIAL\" color=\"destructive\" opacity={0.1} />\n * ```\n *\n * @example Paid invoice stamp (no rotation)\n * ```tsx\n * <PdfWatermark text=\"PAID\" angle={0} color=\"success\" fontSize={80} />\n * ```\n *\n * @example Corner watermark\n * ```tsx\n * <PdfWatermark text=\"COPY\" position=\"top-right\" angle={0} fontSize={24} />\n * ```\n */\nexport function PdfWatermark({\n text,\n opacity = 0.15,\n fontSize = 60,\n color = 'mutedForeground',\n angle = -45,\n position = 'center',\n fixed = true,\n style,\n}: PdfWatermarkProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createWatermarkStyles(theme), [theme]);\n\n const positionMap: Record<WatermarkPosition, Style> = {\n center: styles.positionCenter,\n 'top-left': styles.positionTopLeft,\n 'top-right': styles.positionTopRight,\n 'bottom-left': styles.positionBottomLeft,\n 'bottom-right': styles.positionBottomRight,\n };\n\n const containerStyles: Style[] = [styles.container, positionMap[position]];\n\n if (style) {\n containerStyles.push(style);\n }\n\n const resolvedColor = resolveColor(color, theme.colors);\n\n const textStyles: Style[] = [\n styles.text,\n {\n fontSize,\n color: resolvedColor,\n opacity,\n transform: `rotate(${angle}deg)`,\n },\n ];\n\n return (\n <View style={containerStyles} fixed={fixed}>\n <PDFText style={textStyles}>{text}</PDFText>\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\nexport function createAlertStyles(theme: PdfxTheme) {\n const { typography, colors, primitives } = theme;\n\n return StyleSheet.create({\n container: {\n display: 'flex',\n flexDirection: 'row',\n padding: 12,\n borderRadius: 4,\n marginBottom: theme.spacing.componentGap,\n },\n // Border variants (left accent stripe)\n borderInfo: {\n borderLeftWidth: 4,\n borderLeftColor: colors.info ?? '#3B82F6',\n },\n borderSuccess: {\n borderLeftWidth: 4,\n borderLeftColor: colors.success ?? '#22C55E',\n },\n borderWarning: {\n borderLeftWidth: 4,\n borderLeftColor: colors.warning ?? '#F59E0B',\n },\n borderError: {\n borderLeftWidth: 4,\n borderLeftColor: colors.destructive ?? '#EF4444',\n },\n // Background variants\n bgInfo: {\n backgroundColor: '#EFF6FF', // Light blue\n },\n bgSuccess: {\n backgroundColor: '#F0FDF4', // Light green\n },\n bgWarning: {\n backgroundColor: '#FFFBEB', // Light amber\n },\n bgError: {\n backgroundColor: '#FEF2F2', // Light red\n },\n // Icon container\n iconContainer: {\n width: 20,\n marginRight: 10,\n alignItems: 'center',\n justifyContent: 'flex-start',\n paddingTop: 2,\n },\n // Content container\n contentContainer: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n },\n // Title\n title: {\n fontFamily: typography.heading.fontFamily,\n fontSize: primitives.typography.sm,\n fontWeight: 600,\n marginBottom: 4,\n },\n titleInfo: {\n color: '#1E40AF', // Dark blue\n },\n titleSuccess: {\n color: '#166534', // Dark green\n },\n titleWarning: {\n color: '#92400E', // Dark amber\n },\n titleError: {\n color: '#991B1B', // Dark red\n },\n // Description / content text\n description: {\n fontFamily: typography.body.fontFamily,\n fontSize: primitives.typography.sm,\n lineHeight: typography.body.lineHeight,\n },\n descriptionInfo: {\n color: '#1E3A8A', // Blue text\n },\n descriptionSuccess: {\n color: '#14532D', // Green text\n },\n descriptionWarning: {\n color: '#78350F', // Amber text\n },\n descriptionError: {\n color: '#7F1D1D', // Red text\n },\n });\n}\n","import { Circle, G, Line, Text as PDFText, Path, Svg, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createAlertStyles } from './alert.styles';\nimport type { AlertVariant, PdfAlertProps } from './alert.types';\n\n// ─── Icon Colors ───────────────────────────────────────────────────────────────\n\nconst ICON_COLORS: Record<AlertVariant, string> = {\n info: '#3B82F6',\n success: '#22C55E',\n warning: '#F59E0B',\n error: '#EF4444',\n};\n\n// ─── SVG Icons ─────────────────────────────────────────────────────────────────\n\nfunction InfoIcon({ color }: { color: string }) {\n return (\n <Svg width={16} height={16} viewBox=\"0 0 16 16\">\n <Circle cx={8} cy={8} r={7} fill=\"none\" stroke={color} strokeWidth={1.5} />\n <Circle cx={8} cy={4.5} r={1} fill={color} />\n <Line x1={8} y1={7} x2={8} y2={11.5} stroke={color} strokeWidth={1.5} strokeLinecap=\"round\" />\n </Svg>\n );\n}\n\nfunction SuccessIcon({ color }: { color: string }) {\n return (\n <Svg width={16} height={16} viewBox=\"0 0 16 16\">\n <Circle cx={8} cy={8} r={7} fill=\"none\" stroke={color} strokeWidth={1.5} />\n <Path\n d=\"M5 8 L7 10 L11 6\"\n fill=\"none\"\n stroke={color}\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nfunction WarningIcon({ color }: { color: string }) {\n return (\n <Svg width={16} height={16} viewBox=\"0 0 16 16\">\n <Path\n d=\"M8 1.5 L15 14.5 L1 14.5 Z\"\n fill=\"none\"\n stroke={color}\n strokeWidth={1.5}\n strokeLinejoin=\"round\"\n />\n <G>\n <Line x1={8} y1={6} x2={8} y2={10} stroke={color} strokeWidth={1.5} strokeLinecap=\"round\" />\n <Circle cx={8} cy={12.5} r={0.75} fill={color} />\n </G>\n </Svg>\n );\n}\n\nfunction ErrorIcon({ color }: { color: string }) {\n return (\n <Svg width={16} height={16} viewBox=\"0 0 16 16\">\n <Circle cx={8} cy={8} r={7} fill=\"none\" stroke={color} strokeWidth={1.5} />\n <G>\n <Line\n x1={5.5}\n y1={5.5}\n x2={10.5}\n y2={10.5}\n stroke={color}\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n <Line\n x1={10.5}\n y1={5.5}\n x2={5.5}\n y2={10.5}\n stroke={color}\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </G>\n </Svg>\n );\n}\n\nfunction AlertIcon({ variant }: { variant: AlertVariant }) {\n const color = ICON_COLORS[variant];\n\n switch (variant) {\n case 'info':\n return <InfoIcon color={color} />;\n case 'success':\n return <SuccessIcon color={color} />;\n case 'warning':\n return <WarningIcon color={color} />;\n case 'error':\n return <ErrorIcon color={color} />;\n }\n}\n\n// ─── PdfAlert Component ────────────────────────────────────────────────────────\n\n/**\n * PdfAlert — Displays info, success, warning, or error callout boxes.\n *\n * Use for important notices, confirmations, cautions, or critical alerts\n * in reports, contracts, and documents.\n *\n * @example Basic info alert\n * ```tsx\n * <PdfAlert variant=\"info\" title=\"Note\">\n * This document requires a signature before proceeding.\n * </PdfAlert>\n * ```\n *\n * @example Success confirmation\n * ```tsx\n * <PdfAlert variant=\"success\" title=\"Payment Confirmed\">\n * Your payment of $500.00 has been received.\n * </PdfAlert>\n * ```\n *\n * @example Warning without icon\n * ```tsx\n * <PdfAlert variant=\"warning\" title=\"Deadline Approaching\" showIcon={false}>\n * Please submit your documents by March 15, 2026.\n * </PdfAlert>\n * ```\n *\n * @example Error alert\n * ```tsx\n * <PdfAlert variant=\"error\" title=\"Action Required\">\n * Missing required information. Please review and resubmit.\n * </PdfAlert>\n * ```\n */\nexport function PdfAlert({\n variant = 'info',\n title,\n children,\n showIcon = true,\n showBorder = true,\n style,\n}: PdfAlertProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createAlertStyles(theme), [theme]);\n\n const borderMap: Record<AlertVariant, Style> = {\n info: styles.borderInfo,\n success: styles.borderSuccess,\n warning: styles.borderWarning,\n error: styles.borderError,\n };\n\n const bgMap: Record<AlertVariant, Style> = {\n info: styles.bgInfo,\n success: styles.bgSuccess,\n warning: styles.bgWarning,\n error: styles.bgError,\n };\n\n const titleColorMap: Record<AlertVariant, Style> = {\n info: styles.titleInfo,\n success: styles.titleSuccess,\n warning: styles.titleWarning,\n error: styles.titleError,\n };\n\n const descriptionColorMap: Record<AlertVariant, Style> = {\n info: styles.descriptionInfo,\n success: styles.descriptionSuccess,\n warning: styles.descriptionWarning,\n error: styles.descriptionError,\n };\n\n const containerStyles: Style[] = [styles.container, bgMap[variant]];\n\n if (showBorder) {\n containerStyles.push(borderMap[variant]);\n }\n\n if (style) {\n containerStyles.push(style);\n }\n\n const titleStyles: Style[] = [styles.title, titleColorMap[variant]];\n const descriptionStyles: Style[] = [styles.description, descriptionColorMap[variant]];\n\n const hasContent = title || children;\n\n if (!hasContent) {\n return null;\n }\n\n return (\n <View wrap={false} style={containerStyles}>\n {showIcon && (\n <View style={styles.iconContainer}>\n <AlertIcon variant={variant} />\n </View>\n )}\n <View style={styles.contentContainer}>\n {title && <PDFText style={titleStyles}>{title}</PDFText>}\n {typeof children === 'string' ? (\n <PDFText style={descriptionStyles}>{children}</PDFText>\n ) : (\n children\n )}\n </View>\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all list styles derived from the active theme.\n * Returns a StyleSheet covering container, item row, gap variations, markers,\n * checklist/icon boxes, text styles, and nested children layout.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createListStyles(t: PdfxTheme) {\n const { spacing, fontWeights, typography } = t.primitives;\n\n return StyleSheet.create({\n container: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n marginBottom: t.spacing.componentGap,\n },\n itemRow: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n },\n itemRowGapXs: { marginBottom: spacing[1] },\n itemRowGapSm: { marginBottom: spacing[2] },\n itemRowGapMd: { marginBottom: spacing[3] },\n // ── Bullet markers ────────────────────────────────────────────────\n markerBulletWrap: {\n width: spacing[4],\n paddingTop: 4,\n alignItems: 'center',\n },\n markerBulletDot: {\n width: 5,\n height: 5,\n borderRadius: 3,\n backgroundColor: t.colors.primary,\n },\n markerBulletSubWrap: {\n width: spacing[4],\n paddingTop: 5,\n alignItems: 'center',\n },\n markerBulletSubDot: {\n width: 4,\n height: 4,\n borderRadius: 2,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: t.colors.mutedForeground,\n backgroundColor: 'transparent',\n },\n // ── Numbered marker ───────────────────────────────────────────────\n markerNumberBadge: {\n width: spacing[5],\n height: spacing[5],\n borderRadius: spacing[5],\n backgroundColor: t.colors.primary,\n alignItems: 'center',\n justifyContent: 'center',\n marginTop: 1,\n marginRight: spacing[2],\n },\n markerNumberText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n color: t.colors.primaryForeground,\n fontWeight: fontWeights.bold,\n },\n // ── Checklist ─────────────────────────────────────────────────────\n checkBox: {\n width: spacing[4],\n height: spacing[4],\n borderWidth: 1.5,\n borderColor: t.colors.border,\n borderStyle: 'solid',\n borderRadius: 3,\n marginTop: 1,\n marginRight: spacing[2],\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: t.colors.background,\n },\n checkBoxChecked: {\n backgroundColor: t.colors.success,\n borderColor: t.colors.success,\n },\n checkMark: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: 8,\n color: t.colors.background,\n fontWeight: fontWeights.bold,\n },\n // ── Icon box ──────────────────────────────────────────────────────\n iconBox: {\n width: spacing[5],\n height: spacing[5],\n borderRadius: 4,\n backgroundColor: t.colors.primary,\n alignItems: 'center',\n justifyContent: 'center',\n marginTop: 1,\n marginRight: spacing[2],\n },\n iconMark: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: 9,\n color: t.colors.primaryForeground,\n fontWeight: fontWeights.bold,\n },\n // ── Text styles ───────────────────────────────────────────────────\n itemText: {\n flex: 1,\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.foreground,\n },\n itemTextSub: {\n flex: 1,\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize - 0.5,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.mutedForeground,\n },\n itemTextBold: {\n fontWeight: fontWeights.semibold,\n },\n descriptiveTitle: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n descriptiveDesc: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.sm,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.mutedForeground,\n marginTop: 1,\n },\n descriptiveAccent: {\n width: 3,\n borderRadius: 2,\n backgroundColor: t.colors.primary,\n marginRight: spacing[3],\n minHeight: 16,\n },\n descriptiveContent: {\n flex: 1,\n },\n childrenContainer: {\n marginLeft: spacing[5],\n marginTop: spacing[1],\n },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport type React from 'react';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createListStyles } from './list.styles';\nimport type { ListItem, ListVariant, PdfListProps } from './list.types';\n\n// ─── Gap helper ──────────────────────────────────────────────────────────────\n\nfunction getGapStyle(gap: 'xs' | 'sm' | 'md', styles: ReturnType<typeof createListStyles>): Style {\n if (gap === 'xs') return styles.itemRowGapXs;\n if (gap === 'md') return styles.itemRowGapMd;\n return styles.itemRowGapSm;\n}\n\n// ─── Render helpers (plain functions, not React components) ───────────────────\n\nfunction renderItem(\n item: ListItem,\n index: number,\n total: number,\n variant: ListVariant,\n gap: 'xs' | 'sm' | 'md',\n styles: ReturnType<typeof createListStyles>,\n level: number\n): React.ReactElement | null {\n const gapStyle = getGapStyle(gap, styles);\n const isLast = index === total - 1;\n const rowStyles: Style[] = [styles.itemRow];\n if (!isLast) rowStyles.push(gapStyle);\n\n if (variant === 'bullet') {\n return (\n <View key={index}>\n <View style={rowStyles}>\n {level === 0 ? (\n <View style={styles.markerBulletWrap}>\n <View style={styles.markerBulletDot} />\n </View>\n ) : (\n <View style={styles.markerBulletSubWrap}>\n <View style={styles.markerBulletSubDot} />\n </View>\n )}\n <View style={{ flex: 1 }}>\n <PDFText style={styles.itemText}>{item.text}</PDFText>\n </View>\n </View>\n {item.children && item.children.length > 0\n ? renderItemList(item.children, variant, gap, styles, level + 1)\n : null}\n </View>\n );\n }\n\n if (variant === 'numbered') {\n return (\n <View key={index} style={rowStyles}>\n <View style={styles.markerNumberBadge}>\n <PDFText style={styles.markerNumberText}>{`${index + 1}`}</PDFText>\n </View>\n <PDFText style={styles.itemText}>{item.text}</PDFText>\n </View>\n );\n }\n\n if (variant === 'checklist') {\n const isChecked = item.checked ?? true;\n return (\n <View key={index} style={rowStyles}>\n <View style={[styles.checkBox, isChecked ? styles.checkBoxChecked : {}]}>\n {isChecked ? <PDFText style={styles.checkMark}>✓</PDFText> : null}\n </View>\n <PDFText style={styles.itemText}>{item.text}</PDFText>\n </View>\n );\n }\n\n if (variant === 'icon') {\n return (\n <View key={index} style={rowStyles}>\n <View style={styles.iconBox}>\n <PDFText style={styles.iconMark}>★</PDFText>\n </View>\n <PDFText style={styles.itemText}>{item.text}</PDFText>\n </View>\n );\n }\n\n if (variant === 'multi-level') {\n return (\n <View key={index}>\n <View style={rowStyles}>\n {level === 0 ? (\n <View style={styles.markerBulletWrap}>\n <View style={styles.markerBulletDot} />\n </View>\n ) : (\n <View style={styles.markerBulletSubWrap}>\n <View style={styles.markerBulletSubDot} />\n </View>\n )}\n <PDFText\n style={[\n level === 0 ? styles.itemText : styles.itemTextSub,\n level === 0 ? styles.itemTextBold : {},\n ]}\n >\n {item.text}\n </PDFText>\n </View>\n {item.children && item.children.length > 0\n ? renderItemList(item.children, variant, gap, styles, level + 1)\n : null}\n </View>\n );\n }\n\n if (variant === 'descriptive') {\n return (\n <View key={index} style={rowStyles}>\n <View style={styles.descriptiveAccent} />\n <View style={styles.descriptiveContent}>\n <PDFText style={styles.descriptiveTitle}>{item.text}</PDFText>\n {item.description ? (\n <PDFText style={styles.descriptiveDesc}>{item.description}</PDFText>\n ) : null}\n </View>\n </View>\n );\n }\n\n return null;\n}\n\nfunction renderItemList(\n items: ListItem[],\n variant: ListVariant,\n gap: 'xs' | 'sm' | 'md',\n styles: ReturnType<typeof createListStyles>,\n level: number\n): React.ReactElement {\n return (\n <View style={level > 0 ? styles.childrenContainer : undefined}>\n {items.map((item, index) =>\n renderItem(item, index, items.length, variant, gap, styles, level)\n )}\n </View>\n );\n}\n\n// ─── PdfList ──────────────────────────────────────────────────────────────────\n\nexport function PdfList({\n items,\n variant = 'bullet',\n gap = 'sm',\n style,\n noWrap = false,\n _level = 0,\n}: PdfListProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createListStyles(theme), [theme]);\n\n const containerStyles: Style[] = [styles.container];\n if (_level > 0) containerStyles.push(styles.childrenContainer);\n const styleArray = style ? [...containerStyles, style] : containerStyles;\n\n return (\n <View wrap={!noWrap} style={styleArray}>\n {items.map((item, index) =>\n renderItem(item, index, items.length, variant, gap, styles, _level)\n )}\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all card styles derived from the active theme.\n * Returns a StyleSheet covering card variant, padding, title, and body styles.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createCardStyles(t: PdfxTheme) {\n const { spacing, borderRadius, fontWeights } = t.primitives;\n const borderColor = t.colors.border;\n\n return StyleSheet.create({\n card: {\n borderWidth: 1,\n borderColor: borderColor,\n borderStyle: 'solid',\n borderRadius: borderRadius.sm,\n backgroundColor: t.colors.background,\n marginBottom: t.spacing.componentGap,\n },\n cardBordered: {\n borderWidth: 2,\n },\n cardMuted: {\n backgroundColor: t.colors.muted,\n },\n paddingSm: {\n padding: spacing[2],\n },\n paddingMd: {\n padding: spacing[3],\n },\n paddingLg: {\n padding: spacing[4],\n },\n title: {\n fontFamily: t.typography.heading.fontFamily,\n fontSize: t.primitives.typography.base,\n lineHeight: t.typography.heading.lineHeight,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n marginBottom: spacing[2],\n paddingBottom: spacing[1] + 2,\n borderBottomWidth: 1,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n body: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.foreground,\n },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createCardStyles } from './card.styles';\nimport type { PdfCardProps } from './card.types';\n\n// ─── PdfCard ──────────────────────────────────────────────────────────────────\n\nexport function PdfCard({\n title,\n children,\n variant = 'default',\n padding = 'md',\n wrap = false,\n style,\n}: PdfCardProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createCardStyles(theme), [theme]);\n\n const cardStyles: Style[] = [styles.card];\n if (variant === 'bordered') cardStyles.push(styles.cardBordered);\n if (variant === 'muted') cardStyles.push(styles.cardMuted);\n\n const paddingStyle =\n padding === 'sm' ? styles.paddingSm : padding === 'lg' ? styles.paddingLg : styles.paddingMd;\n cardStyles.push(paddingStyle);\n\n const styleArray = style ? [...cardStyles, style] : cardStyles;\n\n const bodyContent =\n typeof children === 'string' ? <PDFText style={styles.body}>{children}</PDFText> : children;\n\n return (\n <View wrap={wrap} style={styleArray}>\n {title ? <PDFText style={styles.title}>{title}</PDFText> : null}\n {bodyContent}\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\nexport function createQRCodeStyles(theme: PdfxTheme) {\n const { typography, colors, primitives } = theme;\n\n return StyleSheet.create({\n container: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n caption: {\n fontFamily: typography.body.fontFamily,\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n marginTop: 4,\n textAlign: 'center',\n },\n });\n}\n","import { Text as PDFText, Rect, Svg, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport QRCode from 'qrcode';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createQRCodeStyles } from './qrcode.styles';\nimport type { PdfQRCodeProps, QRCodeErrorLevel } from './qrcode.types';\n\n/**\n * Generates QR code matrix from the input value.\n * Returns a 2D boolean array where true = dark module.\n */\nfunction generateQRMatrix(\n value: string,\n errorLevel: QRCodeErrorLevel,\n margin: number\n): boolean[][] {\n // Use qrcode library to generate the modules\n const qr = QRCode.create(value, {\n errorCorrectionLevel: errorLevel,\n });\n\n const modules = qr.modules;\n const size = modules.size;\n const data = modules.data;\n\n // Create matrix with margin\n const totalSize = size + margin * 2;\n const matrix: boolean[][] = [];\n\n for (let row = 0; row < totalSize; row++) {\n const rowData: boolean[] = [];\n for (let col = 0; col < totalSize; col++) {\n // Check if this cell is within the margin\n const isInMargin =\n row < margin || row >= size + margin || col < margin || col >= size + margin;\n\n if (isInMargin) {\n rowData.push(false); // Margin is always light\n } else {\n // Map to original QR data\n const qrRow = row - margin;\n const qrCol = col - margin;\n const index = qrRow * size + qrCol;\n rowData.push(data[index] === 1);\n }\n }\n matrix.push(rowData);\n }\n\n return matrix;\n}\n\n/**\n * PdfQRCode — Renders a QR code using native SVG primitives.\n *\n * Uses the `qrcode` library for generation and react-pdf's SVG\n * support for rendering. The result is a crisp, vector QR code\n * that scales perfectly at any size.\n *\n * @example Basic usage\n * ```tsx\n * <PdfQRCode value=\"https://example.com\" />\n * ```\n *\n * @example Invoice with payment link\n * ```tsx\n * <PdfQRCode\n * value=\"https://pay.example.com/invoice/123\"\n * size={80}\n * caption=\"Scan to pay\"\n * />\n * ```\n *\n * @example Styled QR code\n * ```tsx\n * <PdfQRCode\n * value=\"https://example.com\"\n * size={120}\n * color=\"primary\"\n * backgroundColor=\"muted\"\n * errorLevel=\"H\"\n * />\n * ```\n */\nexport function PdfQRCode({\n value,\n size = 100,\n color = 'foreground',\n backgroundColor = 'background',\n errorLevel = 'M',\n margin = 2,\n caption,\n style,\n}: PdfQRCodeProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createQRCodeStyles(theme), [theme]);\n\n // Generate QR matrix\n const matrix = useSafeMemo(\n () => generateQRMatrix(value, errorLevel, margin),\n [value, errorLevel, margin]\n );\n\n const moduleCount = matrix.length;\n const moduleSize = size / moduleCount;\n\n // Resolve colors\n const resolvedColor = resolveColor(color, theme.colors);\n const resolvedBgColor =\n backgroundColor === 'transparent' ? 'transparent' : resolveColor(backgroundColor, theme.colors);\n\n const containerStyles: Style[] = [styles.container];\n if (style) {\n containerStyles.push(style);\n }\n\n return (\n <View style={containerStyles}>\n <Svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>\n {/* Background */}\n {resolvedBgColor !== 'transparent' && (\n <Rect x={0} y={0} width={size} height={size} fill={resolvedBgColor} />\n )}\n\n {/* QR modules - render dark modules as Rects */}\n {matrix\n .flatMap((row, y) =>\n row\n .map((isDark, x) => (isDark ? { x, y } : null))\n .filter((pos): pos is { x: number; y: number } => pos !== null)\n )\n .map((pos) => (\n <Rect\n key={`qr-${pos.y}-${pos.x}`}\n x={pos.x * moduleSize}\n y={pos.y * moduleSize}\n width={moduleSize}\n height={moduleSize}\n fill={resolvedColor}\n />\n ))}\n </Svg>\n\n {caption && <PDFText style={styles.caption}>{caption}</PDFText>}\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { Image, Text as PDFText, StyleSheet, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\n/**\n * HTTP methods supported by react-pdf for authenticated image requests.\n */\nexport type PdfImageHTTPMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n\n/**\n * Image source accepted by react-pdf's Image component.\n * - string: URL, absolute file path, or base64 data URI (`data:image/png;base64,...`)\n * - object: authenticated URL with custom headers\n */\nexport type PdfImageSrc =\n | string\n | { uri: string; method?: PdfImageHTTPMethod; headers?: Record<string, string>; body?: string };\n\n/**\n * Controls how the image fills its container (mirrors CSS object-fit).\n * - cover: fill, crop excess\n * - contain: fit inside, preserve aspect ratio, may letterbox\n * - fill: stretch to exactly fill (distorts aspect ratio)\n * - none: render at intrinsic size\n */\nexport type PdfImageFit = 'cover' | 'contain' | 'fill' | 'none';\n\n/**\n * Visual layout variant.\n *\n * | Variant | Width | Height | fit | Notes |\n * |-------------|------------|---------------|---------|--------------------------|\n * | default | prop/auto | prop/auto | contain | Standard inline image |\n * | full-width | 100% | prop required | cover | Banner / hero image |\n * | thumbnail | 80pt | 80pt | cover | Small square preview |\n * | avatar | 48pt | 48pt | cover | Circle-clipped portrait |\n * | cover | 100% | 160pt | cover | Wide cover image |\n * | bordered | 100%/prop | prop | contain | Framed with border |\n * | rounded | prop/200pt | prop | contain | Rounded corners |\n */\nexport type PdfImageVariant =\n | 'default'\n | 'full-width'\n | 'thumbnail'\n | 'avatar'\n | 'cover'\n | 'bordered'\n | 'rounded';\n\nexport interface PdfImageProps {\n /** Image source: URL, base64 data URI, file path, or authenticated object. */\n src: PdfImageSrc;\n /** Display variant controlling size and appearance. @default 'default' */\n variant?: PdfImageVariant;\n /** Width in PDF points. Required unless variant provides a default. */\n width?: number | string;\n /** Height in PDF points. Required unless variant provides a default. */\n height?: number | string;\n /** How the image fills its container. @default variant-dependent */\n fit?: PdfImageFit;\n /** Focal point for objectFit crop, e.g. '50% 50%' or 'top left'. @default '50% 50%' */\n position?: string;\n /** Optional caption text rendered below the image in muted style. */\n caption?: string;\n /**\n * Aspect ratio helper: if width is provided but height is not,\n * height = width / aspectRatio. E.g. 16/9 for widescreen images.\n */\n aspectRatio?: number;\n /**\n * Border radius override in PDF points.\n * Defaults: avatar = 999 (circle), rounded = 8, others = 0.\n */\n borderRadius?: number;\n /**\n * Prevent the image (+ optional caption) from being split across page boundaries.\n * @default true — images should never be clipped at the page edge.\n */\n noWrap?: boolean;\n /** Custom style override applied to the image element. */\n style?: Style;\n}\n\n// ─── Format validation ────────────────────────────────────────────────────────\n\nconst UNSUPPORTED_FORMATS = ['webp', 'avif', 'heic', 'heif', 'ico'];\n\n/**\n * Detect image format from a string src (URL, data URI, or file path).\n * Returns null if unknown.\n */\nfunction detectFormat(src: PdfImageSrc): string | null {\n if (typeof src !== 'string') return null;\n // data URI: data:image/webp;base64,...\n const dataMatch = src.match(/^data:image\\/([a-zA-Z0-9+.-]+)/);\n if (dataMatch) return dataMatch[1].toLowerCase();\n // URL / path: strip query string then get extension\n const ext = src.split('?')[0].split('.').pop()?.toLowerCase();\n return ext ?? null;\n}\n\nfunction warnIfUnsupported(src: PdfImageSrc): void {\n const fmt = detectFormat(src);\n if (fmt && UNSUPPORTED_FORMATS.includes(fmt)) {\n console.warn(\n `[PdfImage] Unsupported format \"${fmt}\" detected. react-pdf supports: JPEG, PNG, GIF (first frame), BMP, SVG. Convert to PNG or JPEG before use (e.g. sharp().toFormat('png')).`\n );\n }\n}\n\n// ─── Variant dimension defaults ───────────────────────────────────────────────\n\ninterface VariantDefaults {\n width?: number | string;\n height?: number | string;\n fit: PdfImageFit;\n borderRadius?: number;\n}\n\nconst VARIANT_DEFAULTS: Record<PdfImageVariant, VariantDefaults> = {\n default: { fit: 'contain' },\n 'full-width': { width: '100%', fit: 'cover' },\n thumbnail: { width: 80, height: 80, fit: 'cover' },\n avatar: { width: 48, height: 48, fit: 'cover', borderRadius: 999 },\n cover: { width: '100%', height: 160, fit: 'cover' },\n bordered: { width: '100%', fit: 'contain' },\n rounded: { width: 200, fit: 'contain', borderRadius: 8 },\n};\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nfunction createImageStyles(t: PdfxTheme) {\n const { spacing } = t.primitives;\n return StyleSheet.create({\n container: {\n display: 'flex',\n flexDirection: 'column',\n },\n image: {\n // Base — dimensions are applied dynamically\n },\n imageBordered: {\n borderWidth: 1,\n borderColor: t.colors.border,\n borderStyle: 'solid',\n },\n caption: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: t.colors.mutedForeground,\n marginTop: spacing[1],\n textAlign: 'center',\n },\n });\n}\n\n// ─── PdfImage ─────────────────────────────────────────────────────────────────\n\n/**\n * PdfImage — a validated, theme-aware wrapper around react-pdf's `<Image>`.\n *\n * @example Basic usage\n * ```tsx\n * <PdfImage src=\"https://example.com/photo.jpg\" width={200} height={150} />\n * ```\n *\n * @example Base64 (recommended for reliability)\n * ```tsx\n * <PdfImage src=\"data:image/png;base64,iVBORw0KGgo...\" variant=\"avatar\" />\n * ```\n *\n * @example Full-width banner with caption\n * ```tsx\n * <PdfImage src={bannerUrl} variant=\"cover\" height={120} caption=\"Q1 2025 Team Photo\" />\n * ```\n *\n * @example Aspect ratio helper\n * ```tsx\n * <PdfImage src={chartPng} width={400} aspectRatio={16 / 9} />\n * ```\n *\n * Supported formats: JPEG, PNG, GIF (first frame only), BMP, SVG.\n * Unsupported: WebP, AVIF, HEIC — a console warning is emitted if detected.\n */\nexport function PdfImage({\n src,\n variant = 'default',\n width,\n height,\n fit,\n position = '50% 50%',\n caption,\n aspectRatio,\n borderRadius,\n noWrap = true,\n style,\n}: PdfImageProps) {\n warnIfUnsupported(src);\n\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createImageStyles(theme), [theme]);\n const defaults = VARIANT_DEFAULTS[variant];\n\n // ── Resolve dimensions ─────────────────────────────────────────────\n const resolvedWidth = width ?? defaults.width;\n const resolvedHeight: number | string | undefined = (() => {\n if (height !== undefined) return height;\n if (defaults.height !== undefined) return defaults.height;\n if (aspectRatio !== undefined && typeof resolvedWidth === 'number') {\n return resolvedWidth / aspectRatio;\n }\n return undefined;\n })();\n\n const resolvedFit = fit ?? defaults.fit;\n const resolvedRadius = borderRadius ?? defaults.borderRadius;\n\n // ── Build image style array ────────────────────────────────────────\n const imageStyles: Style[] = [styles.image];\n\n if (resolvedWidth !== undefined) imageStyles.push({ width: resolvedWidth } as Style);\n if (resolvedHeight !== undefined) imageStyles.push({ height: resolvedHeight } as Style);\n\n imageStyles.push({\n objectFit: resolvedFit,\n objectPosition: position,\n } as Style);\n\n if (resolvedRadius !== undefined) {\n imageStyles.push({ borderRadius: resolvedRadius } as Style);\n }\n\n if (variant === 'bordered') {\n imageStyles.push(styles.imageBordered);\n }\n\n if (style) imageStyles.push(style);\n\n // ── Render ─────────────────────────────────────────────────────────\n const content = (\n <View style={styles.container}>\n <Image src={src} style={imageStyles} />\n {caption ? <PDFText style={styles.caption}>{caption}</PDFText> : null}\n </View>\n );\n\n return noWrap ? <View wrap={false}>{content}</View> : content;\n}\n","import type { PdfxTheme } from '../../theme';\nimport {\n Circle,\n Defs,\n G,\n Line,\n LinearGradient,\n Path,\n Rect,\n Stop,\n Svg,\n Text as SvgText,\n} from '@react-pdf/renderer';\nimport { Text as PDFText, StyleSheet, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\n\n// ─── Graph Width Utilities ────────────────────────────────────────────────────\n\n/**\n * A4 page width in points (595pt).\n * Used for calculating safe graph widths.\n */\nexport const A4_WIDTH = 595;\n\n/**\n * Options for calculating graph width.\n */\nexport interface GraphWidthOptions {\n /** Additional container padding (e.g., Section padding). Default: 0 */\n containerPadding?: number;\n /** Additional wrapper padding (e.g., graphShell). Default: 0 */\n wrapperPadding?: number;\n /** Page size width override. Default: 595 (A4) */\n pageWidth?: number;\n}\n\n/**\n * Calculate the safe graph width based on theme page margins and container context.\n *\n * This utility ensures graphs don't overflow their container by accounting for:\n * - Page margins (from theme)\n * - Container padding (e.g., Section component)\n * - Wrapper padding (e.g., a bordered graphShell View)\n *\n * @example\n * ```tsx\n * const width = getGraphWidth(theme);\n * // For a graph inside a Section with padding=\"md\" (12pt) and a graphShell (12pt):\n * const width = getGraphWidth(theme, { containerPadding: 12, wrapperPadding: 12 });\n * ```\n */\nexport function getGraphWidth(theme: PdfxTheme, options: GraphWidthOptions = {}): number {\n const { containerPadding = 0, wrapperPadding = 0, pageWidth = A4_WIDTH } = options;\n\n const { marginLeft, marginRight } = theme.spacing.page;\n\n // Calculate available width:\n // pageWidth - page margins - container padding (both sides) - wrapper padding (both sides)\n const availableWidth =\n pageWidth - marginLeft - marginRight - containerPadding * 2 - wrapperPadding * 2;\n\n // Return floored value to avoid sub-pixel overflow, with minimum width guard\n return Math.max(Math.floor(availableWidth), 100);\n}\n\n/**\n * Pre-calculated safe graph widths for common scenarios.\n * These values work with all built-in themes on A4 pages.\n */\nexport const GRAPH_SAFE_WIDTHS = {\n /** Safe width for graph directly in page content (no extra containers) */\n default: 420,\n /** Safe width for graph inside a Section with md padding */\n inSection: 400,\n /** Safe width for graph inside a Section + bordered wrapper (like graphShell) */\n inSectionWithWrapper: 380,\n} as const;\n\n/**\n * Internal layout constants for chart margins.\n * These values ensure proper spacing for axis labels and legends.\n */\nconst CHART_MARGINS = {\n /** Left margin for charts with Y-axis labels */\n axisLeft: 40,\n /** Left margin for pie/donut charts (no axis) */\n pieLeft: 10,\n /** Right margin for all chart types */\n right: 10,\n /** Top margin for all chart types */\n top: 10,\n /** Bottom margin for charts with X-axis labels */\n axisBottom: 24,\n /** Bottom margin for pie/donut charts (no axis) */\n pieBottom: 10,\n} as const;\n\n// ─── Public Types ─────────────────────────────────────────────────────────────\n\nexport type GraphVariant = 'bar' | 'horizontal-bar' | 'line' | 'area' | 'pie' | 'donut';\n\nexport type GraphLegendPosition = 'bottom' | 'right' | 'none';\n\nexport interface GraphDataPoint {\n /** Label displayed on axis or legend. */\n label: string;\n /** Numeric value. */\n value: number;\n /** Optional per-data-point color override (hex). */\n color?: string;\n}\n\nexport interface GraphSeries {\n /** Series name shown in the legend. */\n name: string;\n /** Data points for this series. */\n data: GraphDataPoint[];\n /** Optional series-level color override (hex). */\n color?: string;\n}\n\nexport interface GraphProps {\n /** Chart type. @default 'bar' */\n variant?: GraphVariant;\n /**\n * Single-series data or multi-series data.\n * - GraphDataPoint[]: single series, used as-is.\n * - GraphSeries[]: multi-series (bar, line, area only).\n */\n data: GraphDataPoint[] | GraphSeries[];\n /** Chart title rendered above the chart area. */\n title?: string;\n /** Optional subtitle / description below title. */\n subtitle?: string;\n /** X-axis label. */\n xLabel?: string;\n /** Y-axis label. */\n yLabel?: string;\n /**\n * Total SVG width in PDF points.\n * Ignored when `fullWidth` is true.\n * @default 420\n */\n width?: number;\n /** Total SVG height in PDF points. @default 260 */\n height?: number;\n /**\n * When true, automatically calculates width based on theme page margins.\n * Accounts for page margins and optional container/wrapper padding.\n * @default false\n */\n fullWidth?: boolean;\n /**\n * Container padding to account for when using fullWidth.\n * Use this when graph is inside a Section or Card with padding.\n * @default 0\n */\n containerPadding?: number;\n /**\n * Wrapper padding to account for when using fullWidth.\n * Use this when graph is wrapped in a bordered View (like graphShell).\n * @default 0\n */\n wrapperPadding?: number;\n /** Override the color palette (hex values). */\n colors?: string[];\n /** Show numeric value labels on bars or data points. @default false */\n showValues?: boolean;\n /** Show horizontal grid lines. @default true */\n showGrid?: boolean;\n /** Legend position. @default 'bottom' */\n legend?: GraphLegendPosition;\n /** For donut variant: text displayed in the center hole. */\n centerLabel?: string;\n /** For line/area: show dots at each data point. @default true */\n showDots?: boolean;\n /** For line/area: render smooth bezier curves (false = straight segments). @default false */\n smooth?: boolean;\n /** Number of Y-axis ticks. @default 5 */\n yTicks?: number;\n /**\n * Prevent the chart from splitting across page boundaries.\n * @default true\n */\n noWrap?: boolean;\n /** Custom style override applied to the outer container View. */\n style?: Style;\n}\n\n// ─── Internal Layout ──────────────────────────────────────────────────────────\n\ninterface ChartLayout {\n svgW: number;\n svgH: number;\n chartX: number; // left edge of chart area\n chartY: number; // top edge of chart area\n chartW: number; // usable chart width\n chartH: number; // usable chart height\n yMin: number;\n yMax: number;\n yTicks: number[];\n xLabels: string[];\n}\n\nfunction createGraphStyles(t: PdfxTheme) {\n return StyleSheet.create({\n container: {\n display: 'flex',\n flexDirection: 'column',\n marginBottom: t.spacing.componentGap,\n },\n title: {\n fontFamily: t.typography.heading.fontFamily,\n fontSize: t.primitives.typography.base,\n fontWeight: t.primitives.fontWeights.semibold,\n color: t.colors.foreground,\n marginBottom: 2,\n },\n subtitle: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: t.colors.mutedForeground,\n marginBottom: 6,\n },\n legendRow: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 12,\n marginTop: 6,\n },\n legendColumn: {\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n marginLeft: 12,\n marginTop: 18,\n minWidth: 120,\n },\n legendItem: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n },\n legendText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: t.colors.mutedForeground,\n },\n chartWithRightLegend: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n },\n });\n}\n\n// ─── Utilities ────────────────────────────────────────────────────────────────\n\n/** Normalize to always work with GraphSeries[]. */\nfunction normalizeData(data: GraphDataPoint[] | GraphSeries[]): GraphSeries[] {\n if (data.length === 0) return [];\n if ('label' in data[0] && 'value' in data[0]) {\n return [{ name: 'Series 1', data: data as GraphDataPoint[] }];\n }\n return data as GraphSeries[];\n}\n\n/** Compute nice Y-axis ticks for a given value range. */\nfunction computeYTicks(min: number, max: number, count: number): number[] {\n if (min === max) return [0, max || 1];\n const step = (max - min) / (count - 1);\n return Array.from({ length: count }, (_, i) => {\n const v = min + i * step;\n return Math.round(v * 100) / 100;\n });\n}\n\n/** Format a number for display on axis labels. */\nfunction fmtNum(v: number): string {\n if (Math.abs(v) >= 1_000_000) return `${(v / 1_000_000).toFixed(1)}M`;\n if (Math.abs(v) >= 1_000) return `${(v / 1_000).toFixed(1)}K`;\n if (!Number.isInteger(v)) return v.toFixed(1);\n return String(v);\n}\n\n/** Truncate a label to at most maxLen characters. */\nfunction truncate(s: string, maxLen: number): string {\n return s.length > maxLen ? `${s.slice(0, maxLen - 1)}…` : s;\n}\n\n/** Polar to Cartesian coordinate conversion for pie/donut arcs. */\nfunction polarToCartesian(cx: number, cy: number, r: number, angleDeg: number) {\n const rad = ((angleDeg - 90) * Math.PI) / 180;\n return { x: cx + r * Math.cos(rad), y: cy + r * Math.sin(rad) };\n}\n\n/** Build an SVG arc path for a pie/donut slice. */\nfunction arcPath(\n cx: number,\n cy: number,\n r: number,\n startAngle: number,\n endAngle: number,\n innerR = 0\n): string {\n // Clamp to prevent degenerate arcs (full 360°)\n const safeEnd = Math.min(endAngle, startAngle + 359.999);\n const large = safeEnd - startAngle > 180 ? 1 : 0;\n\n const s = polarToCartesian(cx, cy, r, safeEnd);\n const e = polarToCartesian(cx, cy, r, startAngle);\n\n if (innerR === 0) {\n return `M ${cx} ${cy} L ${s.x} ${s.y} A ${r} ${r} 0 ${large} 0 ${e.x} ${e.y} Z`;\n }\n\n const si = polarToCartesian(cx, cy, innerR, safeEnd);\n const ei = polarToCartesian(cx, cy, innerR, startAngle);\n return [\n `M ${s.x} ${s.y}`,\n `A ${r} ${r} 0 ${large} 0 ${e.x} ${e.y}`,\n `L ${ei.x} ${ei.y}`,\n `A ${innerR} ${innerR} 0 ${large} 1 ${si.x} ${si.y}`,\n 'Z',\n ].join(' ');\n}\n\n/** Compute smooth bezier control points (Catmull-Rom → cubic bezier). */\nfunction smoothPath(points: { x: number; y: number }[], tension = 0.4): string {\n if (points.length < 2) return '';\n if (points.length === 2) {\n return `M ${points[0].x} ${points[0].y} L ${points[1].x} ${points[1].y}`;\n }\n const parts: string[] = [`M ${points[0].x} ${points[0].y}`];\n for (let i = 0; i < points.length - 1; i++) {\n const p0 = points[Math.max(i - 1, 0)];\n const p1 = points[i];\n const p2 = points[i + 1];\n const p3 = points[Math.min(i + 2, points.length - 1)];\n const cp1x = p1.x + (p2.x - p0.x) * tension;\n const cp1y = p1.y + (p2.y - p0.y) * tension;\n const cp2x = p2.x - (p3.x - p1.x) * tension;\n const cp2y = p2.y - (p3.y - p1.y) * tension;\n parts.push(`C ${cp1x} ${cp1y} ${cp2x} ${cp2y} ${p2.x} ${p2.y}`);\n }\n return parts.join(' ');\n}\n\n// ─── Default palette ──────────────────────────────────────────────────────────\n\nfunction getDefaultPalette(t: PdfxTheme): string[] {\n return [\n t.colors.primary,\n t.colors.info,\n t.colors.success,\n t.colors.warning,\n t.colors.destructive,\n '#8B5CF6',\n '#F97316',\n '#14B8A6',\n ];\n}\n\n// ─── Render: Bar Chart ────────────────────────────────────────────────────────\n\nfunction renderBarChart(\n series: GraphSeries[],\n layout: ChartLayout,\n palette: string[],\n showGrid: boolean,\n showValues: boolean,\n theme: PdfxTheme\n) {\n const { chartX, chartY, chartW, chartH, yMin, yMax, yTicks, xLabels } = layout;\n const nCategories = xLabels.length;\n const nSeries = series.length;\n const groupGap = 0.25;\n const groupW = chartW / nCategories;\n const barW = (groupW * (1 - groupGap)) / nSeries;\n const textColor = theme.colors.mutedForeground;\n const gridColor = theme.colors.border;\n const axisColor = theme.colors.foreground;\n const range = yMax - yMin || 1;\n\n return (\n <>\n {/* Grid lines + Y-axis labels */}\n {yTicks.map((tick) => {\n const ty = chartY + chartH - ((tick - yMin) / range) * chartH;\n return (\n <G key={`grid-${tick}`}>\n {showGrid && (\n <Line\n x1={chartX}\n y1={ty}\n x2={chartX + chartW}\n y2={ty}\n stroke={gridColor}\n strokeWidth={0.5}\n strokeDasharray=\"3 3\"\n />\n )}\n <SvgText\n x={chartX - 4}\n y={ty + 3}\n fill={textColor}\n textAnchor=\"end\"\n style={{ fontSize: 7 }}\n >\n {fmtNum(tick)}\n </SvgText>\n </G>\n );\n })}\n\n {/* Baseline */}\n <Line\n x1={chartX}\n y1={chartY + chartH}\n x2={chartX + chartW}\n y2={chartY + chartH}\n stroke={axisColor}\n strokeWidth={1}\n />\n\n {/* Bars + X labels */}\n {xLabels.map((label, ci) => {\n const groupLeft = chartX + ci * groupW + groupW * (groupGap / 2);\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: static PDF chart data — index is the stable identity\n <G key={`group-${ci}`}>\n {series.map((s, si) => {\n const val = s.data[ci]?.value ?? 0;\n const color = s.data[ci]?.color ?? s.color ?? palette[si % palette.length];\n const barH = ((val - yMin) / range) * chartH;\n const bx = groupLeft + si * barW;\n const by = chartY + chartH - barH;\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: static PDF chart data — index is the stable identity\n <G key={`bar-${ci}-${si}`}>\n <Rect x={bx} y={by} width={barW - 1} height={barH} fill={color} />\n {showValues && barH > 10 && (\n <SvgText\n x={bx + barW / 2 - 0.5}\n y={by - 2}\n fill={axisColor}\n textAnchor=\"middle\"\n style={{ fontSize: 6 }}\n >\n {fmtNum(val)}\n </SvgText>\n )}\n </G>\n );\n })}\n <SvgText\n x={groupLeft + (nSeries * barW) / 2}\n y={chartY + chartH + 10}\n fill={textColor}\n textAnchor=\"middle\"\n style={{ fontSize: 7 }}\n >\n {truncate(label, 10)}\n </SvgText>\n </G>\n );\n })}\n </>\n );\n}\n\n// ─── Render: Horizontal Bar Chart ────────────────────────────────────────────\n\nfunction renderHorizontalBarChart(\n series: GraphSeries[],\n layout: ChartLayout,\n palette: string[],\n showValues: boolean,\n theme: PdfxTheme\n) {\n const { chartX, chartY, chartW, chartH, xLabels } = layout;\n const nCategories = xLabels.length;\n const allValues = series.flatMap((s) => s.data.map((d) => d.value));\n const maxVal = Math.max(...allValues, 1);\n const rowH = chartH / nCategories;\n const barH = rowH * 0.5;\n const textColor = theme.colors.mutedForeground;\n const axisColor = theme.colors.foreground;\n const labelW = 60; // reserved for labels on left\n\n return (\n <>\n {xLabels.map((label, ci) => {\n const rowY = chartY + ci * rowH;\n const val = series[0]?.data[ci]?.value ?? 0;\n const color =\n series[0]?.data[ci]?.color ?? series[0]?.color ?? palette[ci % palette.length];\n const barW = (val / maxVal) * (chartW - labelW);\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: static PDF chart data — index is the stable identity\n <G key={`hbar-${ci}`}>\n {/* Row label */}\n <SvgText\n x={chartX + labelW - 4}\n y={rowY + rowH / 2 + 3}\n fill={textColor}\n textAnchor=\"end\"\n style={{ fontSize: 7 }}\n >\n {truncate(label, 14)}\n </SvgText>\n {/* Bar */}\n <Rect\n x={chartX + labelW}\n y={rowY + (rowH - barH) / 2}\n width={Math.max(barW, 1)}\n height={barH}\n fill={color}\n />\n {/* Value label */}\n {showValues && (\n <SvgText\n x={chartX + labelW + barW + 3}\n y={rowY + rowH / 2 + 3}\n fill={axisColor}\n textAnchor=\"start\"\n style={{ fontSize: 6 }}\n >\n {fmtNum(val)}\n </SvgText>\n )}\n </G>\n );\n })}\n {/* Baseline */}\n <Line\n x1={chartX + labelW}\n y1={chartY}\n x2={chartX + labelW}\n y2={chartY + chartH}\n stroke={axisColor}\n strokeWidth={1}\n />\n </>\n );\n}\n\n// ─── Render: Line / Area Chart ───────────────────────────────────────────────\n\nfunction renderLineAreaChart(\n series: GraphSeries[],\n layout: ChartLayout,\n palette: string[],\n showGrid: boolean,\n showValues: boolean,\n showDots: boolean,\n smooth: boolean,\n isArea: boolean,\n theme: PdfxTheme\n) {\n const { chartX, chartY, chartW, chartH, yMin, yMax, yTicks, xLabels } = layout;\n const range = yMax - yMin || 1;\n const textColor = theme.colors.mutedForeground;\n const gridColor = theme.colors.border;\n const axisColor = theme.colors.foreground;\n const nPoints = xLabels.length;\n\n const xFor = (i: number) => chartX + (i / Math.max(nPoints - 1, 1)) * chartW;\n const yFor = (v: number) => chartY + chartH - ((v - yMin) / range) * chartH;\n\n return (\n <>\n {/* Grid + Y-axis labels */}\n {yTicks.map((tick) => {\n const ty = yFor(tick);\n return (\n <G key={`grid-${tick}`}>\n {showGrid && (\n <Line\n x1={chartX}\n y1={ty}\n x2={chartX + chartW}\n y2={ty}\n stroke={gridColor}\n strokeWidth={0.5}\n strokeDasharray=\"3 3\"\n />\n )}\n <SvgText\n x={chartX - 4}\n y={ty + 3}\n fill={textColor}\n textAnchor=\"end\"\n style={{ fontSize: 7 }}\n >\n {fmtNum(tick)}\n </SvgText>\n </G>\n );\n })}\n\n {/* Baseline */}\n <Line\n x1={chartX}\n y1={chartY + chartH}\n x2={chartX + chartW}\n y2={chartY + chartH}\n stroke={axisColor}\n strokeWidth={1}\n />\n\n {/* Series lines / areas */}\n {series.map((s, si) => {\n const color = s.color ?? palette[si % palette.length];\n const points = s.data.map((d, i) => ({ x: xFor(i), y: yFor(d.value) }));\n\n const lineDStr = smooth\n ? smoothPath(points)\n : `M ${points.map((p) => `${p.x} ${p.y}`).join(' L ')}`;\n\n const areaPath =\n isArea && points.length > 1\n ? `${lineDStr} L ${points[points.length - 1].x} ${chartY + chartH} L ${points[0].x} ${chartY + chartH} Z`\n : null;\n\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: static PDF chart data — index is the stable identity\n <G key={`series-${si}`}>\n {isArea && areaPath && (\n <Path d={areaPath} fill={color} fillOpacity={0.2} stroke=\"none\" />\n )}\n <Path d={lineDStr} stroke={color} strokeWidth={2} fill=\"none\" />\n {showDots &&\n points.map((p, pi) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: static PDF chart data — index is the stable identity\n <Circle key={`dot-${pi}`} cx={p.x} cy={p.y} r={3} fill={color} />\n ))}\n {showValues &&\n points.map((p, pi) => (\n <SvgText\n // biome-ignore lint/suspicious/noArrayIndexKey: static PDF chart data — index is the stable identity\n key={`val-${pi}`}\n x={p.x}\n y={p.y - 5}\n fill={color}\n textAnchor=\"middle\"\n style={{ fontSize: 6 }}\n >\n {fmtNum(s.data[pi].value)}\n </SvgText>\n ))}\n </G>\n );\n })}\n\n {/* X-axis labels */}\n {xLabels.map((label, i) => (\n <SvgText\n key={`xlabel-${label}`}\n x={xFor(i)}\n y={chartY + chartH + 10}\n fill={textColor}\n textAnchor=\"middle\"\n style={{ fontSize: 7 }}\n >\n {truncate(label, 8)}\n </SvgText>\n ))}\n </>\n );\n}\n\n// ─── Render: Pie / Donut Chart ───────────────────────────────────────────────\n\nfunction renderPieDonutChart(\n series: GraphSeries[],\n layout: ChartLayout,\n palette: string[],\n centerLabel: string | undefined,\n isDonut: boolean,\n theme: PdfxTheme\n) {\n const { svgW, svgH } = layout;\n const cx = svgW / 2;\n const cy = svgH / 2;\n const r = Math.min(svgW, svgH) / 2 - 20;\n const innerR = isDonut ? r * 0.52 : 0;\n const textColor = theme.colors.mutedForeground;\n\n const data = series[0]?.data ?? [];\n const total = data.reduce((sum, d) => sum + d.value, 0) || 1;\n\n let currentAngle = 0;\n\n return (\n <>\n {data.map((d, i) => {\n const color = d.color ?? palette[i % palette.length];\n const sweep = (d.value / total) * 360;\n const midAngle = currentAngle + sweep / 2;\n const path = arcPath(cx, cy, r, currentAngle, currentAngle + sweep, innerR);\n currentAngle += sweep;\n\n // Label position — slightly outside the arc\n const labelR = r * 1.18;\n const lp = polarToCartesian(cx, cy, labelR, midAngle);\n const anchor = lp.x > cx ? 'start' : 'end';\n\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: static PDF chart data — index is the stable identity\n <G key={`slice-${i}`}>\n <Path d={path} fill={color} stroke=\"white\" strokeWidth={1} />\n {/* Show label only if slice is large enough to label */}\n {sweep > 15 && (\n <SvgText\n x={lp.x}\n y={lp.y + 3}\n fill={textColor}\n textAnchor={anchor}\n style={{ fontSize: 7 }}\n >\n {truncate(d.label, 10)}\n </SvgText>\n )}\n </G>\n );\n })}\n\n {/* Donut center label */}\n {isDonut && centerLabel && (\n <>\n <Circle cx={cx} cy={cy} r={innerR} fill=\"white\" />\n <SvgText\n x={cx}\n y={cy + 4}\n fill={theme.colors.foreground}\n textAnchor=\"middle\"\n style={{ fontSize: 9, fontWeight: 'bold' }}\n >\n {centerLabel}\n </SvgText>\n </>\n )}\n </>\n );\n}\n\n// ─── Legend ───────────────────────────────────────────────────────────────────\n\nfunction Legend({\n series,\n palette,\n styles,\n position = 'bottom',\n}: {\n series: GraphSeries[];\n palette: string[];\n styles: ReturnType<typeof createGraphStyles>;\n position?: 'bottom' | 'right';\n}) {\n const containerStyle = position === 'right' ? styles.legendColumn : styles.legendRow;\n\n return (\n <View style={containerStyle}>\n {series.map((s, i) => (\n <View key={s.name} style={styles.legendItem}>\n <Svg width={10} height={10}>\n <Rect x={0} y={2} width={8} height={8} fill={s.color ?? palette[i % palette.length]} />\n </Svg>\n <PDFText style={styles.legendText}>{s.name}</PDFText>\n </View>\n ))}\n </View>\n );\n}\n\n// ─── PdfGraph ─────────────────────────────────────────────────────────────────\n\n/**\n * PdfGraph — renders bar, horizontal-bar, line, area, pie, and donut charts\n * natively inside react-pdf documents using SVG primitives.\n *\n * No external chart libraries are required or used — all rendering is done via\n * react-pdf's built-in SVG support (`<Svg>`, `<Rect>`, `<Path>`, `<Line>`, etc.).\n *\n * @example Bar chart\n * ```tsx\n * <PdfGraph\n * variant=\"bar\"\n * title=\"Monthly Revenue\"\n * data={[\n * { label: 'Jan', value: 42000 },\n * { label: 'Feb', value: 38000 },\n * { label: 'Mar', value: 55000 },\n * ]}\n * />\n * ```\n *\n * @example Donut chart with center label\n * ```tsx\n * <PdfGraph\n * variant=\"donut\"\n * data={[\n * { label: 'Product A', value: 45 },\n * { label: 'Product B', value: 30 },\n * { label: 'Other', value: 25 },\n * ]}\n * centerLabel=\"$1.2M\"\n * />\n * ```\n *\n * **Limitations (by design):**\n * - No interactivity (PDFs are static)\n * - No animations\n * - SVG Text inside charts uses SVG font attributes (not react-pdf StyleSheet fonts)\n * - For print PDFs use SVG-friendly fonts registered with Font.register()\n */\nexport function PdfGraph({\n variant = 'bar',\n data,\n title,\n subtitle,\n xLabel,\n yLabel,\n width: explicitWidth,\n height = 260,\n fullWidth = false,\n containerPadding = 0,\n wrapperPadding = 0,\n colors,\n showValues = false,\n showGrid = true,\n legend = 'bottom',\n centerLabel,\n showDots = true,\n smooth = false,\n yTicks: yTickCount = 5,\n noWrap = true,\n style,\n}: GraphProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createGraphStyles(theme), [theme]);\n const palette = colors ?? getDefaultPalette(theme);\n const series = normalizeData(data);\n\n // ── Calculate width ─────────────────────────────────────────────────\n // If fullWidth is enabled, calculate based on theme; otherwise use explicit or default\n const width = useSafeMemo(() => {\n if (fullWidth) {\n return getGraphWidth(theme, { containerPadding, wrapperPadding });\n }\n return explicitWidth ?? GRAPH_SAFE_WIDTHS.default;\n }, [fullWidth, explicitWidth, theme, containerPadding, wrapperPadding]);\n\n // ── Compute layout ────────────────────────────────────────────────\n const isPieOrDonut = variant === 'pie' || variant === 'donut';\n\n // Use layout constants for margins\n const marginLeft = isPieOrDonut ? CHART_MARGINS.pieLeft : CHART_MARGINS.axisLeft;\n const marginRight = CHART_MARGINS.right;\n const marginTop = CHART_MARGINS.top;\n const marginBottom = isPieOrDonut ? CHART_MARGINS.pieBottom : CHART_MARGINS.axisBottom;\n\n const chartX = marginLeft;\n const chartY = marginTop;\n const chartW = width - marginLeft - marginRight;\n const chartH = height - marginTop - marginBottom;\n\n const allValues = series.flatMap((s) => s.data.map((d) => d.value));\n const rawMin = Math.min(...allValues, 0);\n const rawMax = Math.max(...allValues, 1);\n const yMin = rawMin >= 0 ? 0 : rawMin;\n const yMax = rawMax + (rawMax - yMin) * 0.08; // 8% headroom\n\n const yTickValues = computeYTicks(yMin, yMax, yTickCount);\n const xLabels = series[0]?.data.map((d) => d.label) ?? [];\n\n const layout: ChartLayout = {\n svgW: width,\n svgH: height,\n chartX,\n chartY,\n chartW,\n chartH,\n yMin,\n yMax,\n yTicks: yTickValues,\n xLabels,\n };\n\n // ── Render chart body ─────────────────────────────────────────────\n let chartContent: React.ReactNode = null;\n\n switch (variant) {\n case 'bar':\n chartContent = renderBarChart(series, layout, palette, showGrid, showValues, theme);\n break;\n case 'horizontal-bar':\n chartContent = renderHorizontalBarChart(series, layout, palette, showValues, theme);\n break;\n case 'line':\n chartContent = renderLineAreaChart(\n series,\n layout,\n palette,\n showGrid,\n showValues,\n showDots,\n smooth,\n false,\n theme\n );\n break;\n case 'area':\n chartContent = renderLineAreaChart(\n series,\n layout,\n palette,\n showGrid,\n showValues,\n showDots,\n smooth,\n true,\n theme\n );\n break;\n case 'pie':\n chartContent = renderPieDonutChart(series, layout, palette, undefined, false, theme);\n break;\n case 'donut':\n chartContent = renderPieDonutChart(series, layout, palette, centerLabel, true, theme);\n break;\n }\n\n const showLegend = legend !== 'none' && !isPieOrDonut;\n\n const containerStyles: Style[] = [styles.container];\n if (style) containerStyles.push(style);\n\n const content = (\n <View style={containerStyles}>\n {title && <PDFText style={styles.title}>{title}</PDFText>}\n {subtitle && <PDFText style={styles.subtitle}>{subtitle}</PDFText>}\n <View style={legend === 'right' ? styles.chartWithRightLegend : undefined}>\n <Svg width={width} height={height}>\n <Defs>\n <LinearGradient id=\"bgGrad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <Stop offset=\"0%\" stopColor={theme.colors.background} stopOpacity={0} />\n <Stop offset=\"100%\" stopColor={theme.colors.background} stopOpacity={0} />\n </LinearGradient>\n </Defs>\n {chartContent}\n {!isPieOrDonut && xLabel && (\n <SvgText\n x={chartX + chartW / 2}\n y={height - 2}\n fill={theme.colors.mutedForeground}\n textAnchor=\"middle\"\n style={{ fontSize: 8 }}\n >\n {xLabel}\n </SvgText>\n )}\n {!isPieOrDonut && yLabel && (\n <SvgText\n x={2}\n y={10}\n fill={theme.colors.mutedForeground}\n textAnchor=\"start\"\n style={{ fontSize: 8 }}\n >\n {yLabel}\n </SvgText>\n )}\n </Svg>\n {showLegend && legend === 'right' && Legend({ series, palette, styles, position: 'right' })}\n </View>\n {showLegend && legend === 'bottom' && Legend({ series, palette, styles, position: 'bottom' })}\n </View>\n );\n\n return noWrap ? <View wrap={false}>{content}</View> : content;\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\nimport type { PdfFormVariant } from './form.types';\n\n/**\n * Creates all fillable-form styles derived from the active theme.\n *\n * Design principles:\n * - Labels: xs uppercase tracked — professional, scannable\n * - Field areas: clearly defined blank zones (by variant)\n * - Spacing: tight but breathable — 12pt between fields, 20pt between groups\n * - Group titles: small-caps divider line style (like Notion forms)\n *\n * @param t - The resolved PdfxTheme instance.\n * @param variant - Visual style variant for the field areas.\n */\nexport function createFormStyles(t: PdfxTheme, variant: PdfFormVariant = 'underline') {\n const { spacing, borderRadius, fontWeights, typography } = t.primitives;\n const borderColor = t.colors.border;\n const hairline = 0.75; // lighter than spacing[0.5]=2pt — more refined\n const rule = 1; // group title rule\n\n // ─── Field area visual per variant ──────────────────────────────────────────\n const fieldAreaByVariant: Record<PdfFormVariant, object> = {\n underline: {\n borderBottomWidth: 1,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n box: {\n borderWidth: hairline,\n borderColor: borderColor,\n borderStyle: 'solid',\n borderRadius: borderRadius.sm,\n },\n outlined: {\n borderWidth: hairline,\n borderColor: t.colors.foreground,\n borderStyle: 'solid',\n borderRadius: borderRadius.md,\n },\n ghost: {\n backgroundColor: t.colors.muted,\n borderRadius: borderRadius.sm,\n },\n };\n\n const hasPadding = variant === 'box' || variant === 'outlined' || variant === 'ghost';\n\n return StyleSheet.create({\n // ─── Form root ───────────────────────────────────────────────────────────\n root: {\n width: '100%',\n marginBottom: t.spacing.componentGap,\n },\n\n // ─── Form-level title block ───────────────────────────────────────────────\n formTitle: {\n fontFamily: t.typography.heading.fontFamily,\n fontSize: typography.xl,\n lineHeight: t.typography.heading.lineHeight,\n color: t.colors.foreground,\n fontWeight: fontWeights.bold,\n marginBottom: spacing[1],\n },\n formSubtitle: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.sm,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.mutedForeground,\n marginBottom: spacing[3],\n },\n formDivider: {\n borderBottomWidth: rule,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n marginBottom: spacing[4],\n },\n\n // ─── Field group ─────────────────────────────────────────────────────────\n group: {\n marginBottom: spacing[5],\n },\n // Group title: small caps style with a faint rule underneath\n groupTitle: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n lineHeight: 1.2,\n color: t.colors.mutedForeground,\n fontWeight: fontWeights.semibold,\n textTransform: 'uppercase',\n letterSpacing: 0.8,\n marginBottom: spacing[3],\n },\n\n // ─── Multi-column layout ──────────────────────────────────────────────────\n columnsRow: {\n flexDirection: 'row',\n gap: spacing[4],\n },\n column: {\n flex: 1,\n },\n\n // ─── Field: label ABOVE ───────────────────────────────────────────────────\n // Compact vertical rhythm — 12pt between fields\n fieldAbove: {\n marginBottom: spacing[3],\n width: '100%',\n },\n labelAbove: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n lineHeight: 1.2,\n color: t.colors.mutedForeground,\n fontWeight: fontWeights.medium,\n textTransform: 'uppercase',\n letterSpacing: 0.5,\n marginBottom: spacing[1],\n },\n\n // ─── Field: label LEFT ────────────────────────────────────────────────────\n fieldLeft: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n marginBottom: spacing[3],\n gap: spacing[2],\n },\n labelLeft: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.mutedForeground,\n fontWeight: fontWeights.medium,\n width: 80,\n paddingBottom: hasPadding ? spacing[1] : 0,\n },\n fieldLeftArea: {\n flex: 1,\n },\n\n // ─── Blank field area ─────────────────────────────────────────────────────\n fieldArea: {\n width: '100%' as const,\n ...fieldAreaByVariant[variant],\n },\n\n // Hint text inside the field area (format guide)\n hint: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n color: t.colors.mutedForeground,\n opacity: 0.14,\n paddingTop: hasPadding ? spacing[1] : spacing[0.5],\n paddingBottom: hasPadding ? spacing[1] : 0,\n paddingHorizontal: hasPadding ? spacing[2] : 0,\n },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createFormStyles } from './form.styles';\nimport type { FormLayout, PdfFormField, PdfFormGroup, PdfFormProps } from './form.types';\n\n// ─── Helpers (plain functions, not React components) ──────────────────────────\n// Using plain functions ensures the rendered tree is fully resolved when\n// components are called directly in unit tests (findText traversal works).\n\nfunction renderFieldAbove(\n field: PdfFormField,\n idx: number,\n styles: ReturnType<typeof createFormStyles>\n) {\n const areaHeight = field.height ?? 18;\n const areaStyle: Style[] = [styles.fieldArea, { minHeight: areaHeight }];\n\n return (\n <View key={`${field.label}-${idx}`} style={styles.fieldAbove}>\n <PDFText style={styles.labelAbove}>{field.label}</PDFText>\n <View style={areaStyle}>\n {field.hint ? <PDFText style={styles.hint}>{field.hint}</PDFText> : null}\n </View>\n </View>\n );\n}\n\nfunction renderFieldLeft(\n field: PdfFormField,\n idx: number,\n styles: ReturnType<typeof createFormStyles>\n) {\n const areaHeight = field.height ?? 16;\n const areaStyle: Style[] = [styles.fieldArea, styles.fieldLeftArea, { minHeight: areaHeight }];\n\n return (\n <View key={`${field.label}-${idx}`} style={styles.fieldLeft}>\n <PDFText style={styles.labelLeft}>{field.label}</PDFText>\n <View style={areaStyle}>\n {field.hint ? <PDFText style={styles.hint}>{field.hint}</PDFText> : null}\n </View>\n </View>\n );\n}\n\nfunction renderGroup(\n group: PdfFormGroup,\n gi: number,\n styles: ReturnType<typeof createFormStyles>,\n labelPosition: 'above' | 'left'\n) {\n const layout: FormLayout = group.layout ?? 'single';\n const cols = layout === 'three-column' ? 3 : layout === 'two-column' ? 2 : 1;\n\n const renderField = (field: PdfFormField, idx: number) =>\n labelPosition === 'left'\n ? renderFieldLeft(field, idx, styles)\n : renderFieldAbove(field, idx, styles);\n\n if (cols === 1) {\n return (\n <View key={`group-${gi}`} style={styles.group}>\n {group.title ? <PDFText style={styles.groupTitle}>{group.title}</PDFText> : null}\n {group.fields.map(renderField)}\n </View>\n );\n }\n\n // Split fields evenly across columns\n const chunkSize = Math.ceil(group.fields.length / cols);\n const chunks: PdfFormField[][] = [];\n for (let i = 0; i < group.fields.length; i += chunkSize) {\n chunks.push(group.fields.slice(i, i + chunkSize));\n }\n while (chunks.length < cols) {\n chunks.push([]);\n }\n\n return (\n <View key={`group-${gi}`} style={styles.group}>\n {group.title ? <PDFText style={styles.groupTitle}>{group.title}</PDFText> : null}\n <View style={styles.columnsRow}>\n {chunks.map((chunk, ci) => (\n <View key={`col-${gi}-${chunk[0]?.label ?? ci}`} style={styles.column}>\n {chunk.map(renderField)}\n </View>\n ))}\n </View>\n </View>\n );\n}\n\n// ─── PdfForm ──────────────────────────────────────────────────────────────────\n\nexport function PdfForm({\n title,\n subtitle,\n groups,\n variant = 'underline',\n labelPosition = 'above',\n noWrap = false,\n style,\n}: PdfFormProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createFormStyles(theme, variant), [theme, variant]);\n\n const rootStyles: Style[] = [styles.root];\n if (style) rootStyles.push(style);\n\n const inner = (\n <View style={rootStyles}>\n {title ? <PDFText style={styles.formTitle}>{title}</PDFText> : null}\n {subtitle ? <PDFText style={styles.formSubtitle}>{subtitle}</PDFText> : null}\n {title || subtitle ? <View style={styles.formDivider} /> : null}\n {groups.map((group, gi) => renderGroup(group, gi, styles, labelPosition))}\n </View>\n );\n\n return noWrap ? <View wrap={false}>{inner}</View> : inner;\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all signature block styles derived from the active theme.\n * Returns a StyleSheet covering single, double, and inline signature layouts.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createSignatureStyles(t: PdfxTheme) {\n const { spacing, fontWeights, typography } = t.primitives;\n return StyleSheet.create({\n container: {\n marginTop: t.spacing.sectionGap,\n marginBottom: t.spacing.componentGap,\n },\n block: { flex: 1, minWidth: 140 },\n label: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.sm,\n color: t.colors.mutedForeground,\n marginBottom: spacing[1],\n },\n line: {\n borderBottomWidth: 1,\n borderBottomColor: t.colors.foreground,\n borderBottomStyle: 'solid',\n minHeight: spacing[6],\n marginBottom: spacing[1],\n },\n name: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n titleText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.sm,\n color: t.colors.mutedForeground,\n },\n dateText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n color: t.colors.mutedForeground,\n marginTop: 1,\n },\n doubleRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n gap: spacing[8],\n },\n inlineRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing[3],\n flexWrap: 'wrap',\n },\n inlineLabel: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.sm,\n color: t.colors.mutedForeground,\n },\n inlineLine: {\n borderBottomWidth: 1,\n borderBottomColor: t.colors.foreground,\n borderBottomStyle: 'solid',\n minWidth: 120,\n height: spacing[5],\n paddingHorizontal: spacing[2],\n },\n inlineName: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n color: t.colors.foreground,\n },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createSignatureStyles } from './signature.styles';\nimport type { PdfSignatureBlockProps, SignatureSigner } from './signature.types';\n\nfunction renderSignerBlock(\n signer: SignatureSigner,\n styles: ReturnType<typeof createSignatureStyles>\n) {\n return (\n <View style={styles.block}>\n {signer.label ? <PDFText style={styles.label}>{signer.label}</PDFText> : null}\n <View style={styles.line} />\n {signer.name ? <PDFText style={styles.name}>{signer.name}</PDFText> : null}\n {signer.title ? <PDFText style={styles.titleText}>{signer.title}</PDFText> : null}\n {signer.date ? <PDFText style={styles.dateText}>{signer.date}</PDFText> : null}\n </View>\n );\n}\n\nconst DEFAULT_SIGNERS: [SignatureSigner, SignatureSigner] = [\n { label: 'Authorized by', name: '', title: '', date: '' },\n { label: 'Approved by', name: '', title: '', date: '' },\n];\n\nexport function PdfSignatureBlock({\n variant = 'single',\n label = 'Signature',\n name,\n title,\n date,\n signers,\n style,\n}: PdfSignatureBlockProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createSignatureStyles(theme), [theme]);\n const containerStyles: Style[] = [styles.container];\n const styleArray = style ? [...containerStyles, style] : containerStyles;\n\n if (variant === 'inline') {\n return (\n // wrap={false}: inline signature lines must never be split across pages\n <View wrap={false} style={styleArray}>\n <View style={styles.inlineRow}>\n <PDFText style={styles.inlineLabel}>{`${label}:`}</PDFText>\n <View style={styles.inlineLine} />\n {name ? <PDFText style={styles.inlineName}>{name}</PDFText> : null}\n </View>\n </View>\n );\n }\n\n if (variant === 'double') {\n const [first, second] = signers ?? DEFAULT_SIGNERS;\n return (\n // wrap={false}: double-signer block must never be split across pages\n <View wrap={false} style={styleArray}>\n <View style={styles.doubleRow}>\n {renderSignerBlock(first, styles)}\n {renderSignerBlock(second, styles)}\n </View>\n </View>\n );\n }\n\n // wrap={false}: single signer block must never be split across pages\n return (\n <View wrap={false} style={styleArray}>\n {renderSignerBlock({ label, name, title, date }, styles)}\n </View>\n );\n}\n","import { View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport type { ReactNode } from 'react';\n\nexport interface KeepTogetherProps {\n /**\n * Content to keep on the same page.\n * The outer View is rendered with wrap={false} so the engine treats this subtree as atomic.\n * If the content is taller than one full page it will overflow (not split), so only use\n * this for content that is guaranteed to fit on a single page.\n */\n children?: ReactNode;\n /**\n * If provided, moves the entire block to the next page when fewer than\n * this many PDF points remain on the current page.\n * Useful as a softer alternative to wrap={false} for headings/labels with following content.\n */\n minPresenceAhead?: number;\n /** Custom style override applied to the wrapping View. */\n style?: Style;\n}\n\n/**\n * KeepTogether — prevents its children from being split across page boundaries.\n *\n * Wraps children in a `<View wrap={false}>` which tells react-pdf's layout engine\n * to treat the entire subtree as atomic: either the whole block fits on the current\n * page, or the whole block moves to the next page.\n *\n * @example\n * // Prevent a heading + table from being separated\n * <KeepTogether>\n * <Heading level={2}>Quarterly Financials</Heading>\n * <Table>...</Table>\n * </KeepTogether>\n *\n * @example\n * // Softer version: move to next page only if < 100pt remain\n * <KeepTogether minPresenceAhead={100}>\n * <Heading level={3}>Summary</Heading>\n * <Text>Short paragraph that should stay with its heading.</Text>\n * </KeepTogether>\n */\nexport function KeepTogether({ children, minPresenceAhead, style }: KeepTogetherProps) {\n return (\n <View wrap={false} minPresenceAhead={minPresenceAhead} style={style}>\n {children}\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\nexport function createInvoiceStyles(theme: PdfxTheme) {\n const { colors, typography, spacing, primitives } = theme;\n\n return StyleSheet.create({\n // Page styles\n page: {\n padding: spacing.page.marginTop,\n paddingBottom: spacing.page.marginBottom + 20,\n backgroundColor: colors.background,\n fontFamily: typography.body.fontFamily,\n fontSize: typography.body.fontSize,\n color: colors.foreground,\n },\n\n // ─── Billing Section ─────────────────────────────────────────────────────\n billingSection: {\n flexDirection: 'row',\n marginBottom: spacing.sectionGap,\n },\n billingColumn: {\n flex: 1,\n paddingRight: 15,\n },\n billingLabel: {\n fontSize: primitives.typography.xs,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.mutedForeground,\n textTransform: 'uppercase',\n marginBottom: 4,\n letterSpacing: primitives.letterSpacing.wide,\n },\n billingText: {\n fontSize: primitives.typography.xs,\n lineHeight: 1.4,\n marginBottom: 2,\n },\n\n // ─── Invoice Meta (Modern variant) ───────────────────────────────────────\n invoiceMeta: {\n flexDirection: 'row',\n backgroundColor: colors.muted,\n padding: 12,\n marginBottom: spacing.sectionGap,\n borderRadius: primitives.borderRadius.sm,\n },\n invoiceMetaItem: {\n flex: 1,\n alignItems: 'center',\n },\n invoiceMetaLabel: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n marginBottom: 2,\n },\n invoiceMetaValue: {\n fontSize: primitives.typography.sm,\n fontWeight: primitives.fontWeights.semibold,\n },\n\n // ─── Summary Section ─────────────────────────────────────────────────────\n summaryContainer: {\n flexDirection: 'row',\n marginTop: spacing.componentGap,\n },\n summaryBox: {\n marginLeft: 'auto',\n width: 220,\n },\n\n // ─── Notes Section ───────────────────────────────────────────────────────\n notesSection: {\n marginTop: spacing.sectionGap,\n paddingTop: spacing.componentGap,\n borderTopWidth: 1,\n borderTopColor: colors.border,\n },\n notesLabel: {\n fontSize: primitives.typography.xs,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.mutedForeground,\n marginBottom: 4,\n },\n notesText: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n lineHeight: 1.5,\n },\n\n // ─── Modern Variant Header ───────────────────────────────────────────────\n modernHeader: {\n backgroundColor: colors.primary,\n padding: 24,\n marginBottom: spacing.sectionGap,\n marginLeft: -spacing.page.marginLeft,\n marginRight: -spacing.page.marginRight,\n marginTop: -spacing.page.marginTop,\n },\n modernHeaderTitle: {\n fontSize: primitives.typography['2xl'],\n fontWeight: primitives.fontWeights.bold,\n color: colors.primaryForeground,\n marginBottom: 4,\n },\n modernHeaderSubtitle: {\n fontSize: primitives.typography.sm,\n color: colors.primaryForeground,\n opacity: 0.8,\n },\n\n // ─── Minimal Variant ─────────────────────────────────────────────────────\n minimalHeader: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n marginBottom: spacing.sectionGap,\n paddingBottom: spacing.componentGap,\n borderBottomWidth: 1,\n borderBottomColor: colors.border,\n },\n minimalInvoiceStamp: {\n textAlign: 'right',\n },\n minimalInvoiceNumber: {\n fontSize: primitives.typography.xl,\n fontWeight: primitives.fontWeights.bold,\n color: colors.foreground,\n },\n minimalInvoiceLabel: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n textTransform: 'uppercase',\n letterSpacing: primitives.letterSpacing.wide,\n },\n });\n}\n","import { Document, Text as PDFText, Page, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { KeyValue } from '../../components/key-value';\nimport { PageFooter } from '../../components/page-footer';\nimport { PageHeader } from '../../components/page-header';\nimport { PdfImage } from '../../components/pdf-image';\nimport { Section } from '../../components/section';\nimport { Table, TableBody, TableCell, TableHeader, TableRow } from '../../components/table';\nimport { Text } from '../../components/text';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createInvoiceStyles } from './invoice.styles';\nimport type {\n InvoiceCurrency,\n InvoiceLineItem,\n InvoiceSummary,\n InvoiceTemplateProps,\n InvoiceVariant,\n} from './invoice.types';\n\n// ─── Helper Functions ────────────────────────────────────────────────────────\n\n/**\n * Formats a number as currency.\n */\nfunction formatCurrency(\n amount: number,\n currency: InvoiceCurrency = { symbol: '$', position: 'before', decimals: 2 }\n): string {\n const { symbol = '$', position = 'before', decimals = 2 } = currency;\n const formatted = amount.toFixed(decimals);\n return position === 'before' ? `${symbol}${formatted}` : `${formatted}${symbol}`;\n}\n\n/**\n * Calculates invoice summary from line items.\n */\nfunction calculateSummary(items: InvoiceLineItem[], taxRate = 0): InvoiceSummary {\n const subtotal = items.reduce((sum, item) => sum + item.quantity * item.unitPrice, 0);\n const tax = subtotal * (taxRate / 100);\n const total = subtotal + tax;\n return { subtotal, tax, taxRate, total };\n}\n\n// ─── Variant Components ──────────────────────────────────────────────────────\n\nfunction ClassicVariant({\n props,\n styles,\n summary,\n currency,\n}: {\n props: InvoiceTemplateProps;\n styles: ReturnType<typeof createInvoiceStyles>;\n summary: InvoiceSummary;\n currency: InvoiceCurrency;\n}) {\n const { company, client, invoiceNumber, dueDate, items, payment, notes } = props;\n\n return (\n <>\n <PageHeader\n variant=\"logo-left\"\n logo={company.logo ? <PdfImage src={company.logo} style={{ margin: 0 }} /> : undefined}\n title={company.name}\n subtitle={company.subtitle}\n rightText={invoiceNumber}\n rightSubText={`Due: ${dueDate}`}\n style={{ marginBottom: 0 }}\n />\n\n <Section noWrap style={styles.billingSection as Style}>\n <View style={styles.billingColumn}>\n <PDFText style={styles.billingLabel}>From</PDFText>\n <PDFText style={styles.billingText}>{company.name}</PDFText>\n <PDFText style={styles.billingText}>{company.address}</PDFText>\n {company.email && <PDFText style={styles.billingText}>{company.email}</PDFText>}\n {company.phone && <PDFText style={styles.billingText}>{company.phone}</PDFText>}\n </View>\n <View style={styles.billingColumn}>\n <PDFText style={styles.billingLabel}>Bill To</PDFText>\n <PDFText style={styles.billingText}>{client.name}</PDFText>\n <PDFText style={styles.billingText}>{client.address}</PDFText>\n {client.email && <PDFText style={styles.billingText}>{client.email}</PDFText>}\n {client.phone && <PDFText style={styles.billingText}>{client.phone}</PDFText>}\n </View>\n {payment && (\n <View style={styles.billingColumn}>\n <PDFText style={styles.billingLabel}>Payment</PDFText>\n {payment.methods && <PDFText style={styles.billingText}>{payment.methods}</PDFText>}\n {payment.terms && <PDFText style={styles.billingText}>{payment.terms}</PDFText>}\n {company.taxId && <PDFText style={styles.billingText}>{company.taxId}</PDFText>}\n </View>\n )}\n </Section>\n\n <Table variant=\"grid\" zebraStripe>\n <TableHeader>\n <TableRow header>\n <TableCell>Description</TableCell>\n <TableCell align=\"center\">Qty</TableCell>\n <TableCell align=\"center\">Rate</TableCell>\n <TableCell align=\"right\">Total</TableCell>\n </TableRow>\n </TableHeader>\n <TableBody>\n {items.map((item, index) => (\n <TableRow key={`item-${item.description}-${index}`}>\n <TableCell>{item.description}</TableCell>\n <TableCell align=\"center\">\n {`${item.quantity}${item.unit ? ` ${item.unit}` : ''}`}\n </TableCell>\n <TableCell align=\"center\">{formatCurrency(item.unitPrice, currency)}</TableCell>\n <TableCell align=\"right\">\n {formatCurrency(item.quantity * item.unitPrice, currency)}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <View style={styles.summaryContainer}>\n <View style={styles.summaryBox}>\n <KeyValue\n size=\"sm\"\n dividerThickness={1}\n items={[\n { key: 'Subtotal', value: formatCurrency(summary.subtotal, currency) },\n ...(summary.tax\n ? [\n {\n key: `Tax${summary.taxRate ? ` (${summary.taxRate}%)` : ''}`,\n value: formatCurrency(summary.tax, currency),\n },\n ]\n : []),\n ...(summary.discount\n ? [{ key: 'Discount', value: `-${formatCurrency(summary.discount, currency)}` }]\n : []),\n ...(summary.shipping\n ? [{ key: 'Shipping', value: formatCurrency(summary.shipping, currency) }]\n : []),\n {\n key: 'Total',\n value: formatCurrency(summary.total, currency),\n valueStyle: { fontSize: 12, fontWeight: 700 },\n keyStyle: { fontSize: 12, fontWeight: 700 },\n },\n ]}\n divided\n />\n </View>\n </View>\n\n {notes && (\n <View style={styles.notesSection}>\n <PDFText style={styles.notesLabel}>Notes</PDFText>\n <PDFText style={styles.notesText}>{notes}</PDFText>\n </View>\n )}\n\n <PageFooter leftText={notes || ''} sticky pagePadding={25} />\n </>\n );\n}\n\nfunction ModernVariant({\n props,\n styles,\n summary,\n currency,\n}: {\n props: InvoiceTemplateProps;\n styles: ReturnType<typeof createInvoiceStyles>;\n summary: InvoiceSummary;\n currency: InvoiceCurrency;\n}) {\n const { company, client, invoiceNumber, invoiceDate, dueDate, items, notes } = props;\n\n return (\n <>\n {/* Full-width branded header */}\n <View style={styles.modernHeader}>\n <PDFText style={styles.modernHeaderTitle}>{company.name}</PDFText>\n {company.subtitle && (\n <PDFText style={styles.modernHeaderSubtitle}>{company.subtitle}</PDFText>\n )}\n </View>\n\n {/* Invoice meta strip */}\n <View style={styles.invoiceMeta}>\n <View style={styles.invoiceMetaItem}>\n <PDFText style={styles.invoiceMetaLabel}>Invoice</PDFText>\n <PDFText style={styles.invoiceMetaValue}>{invoiceNumber}</PDFText>\n </View>\n <View style={styles.invoiceMetaItem}>\n <PDFText style={styles.invoiceMetaLabel}>Date</PDFText>\n <PDFText style={styles.invoiceMetaValue}>{invoiceDate}</PDFText>\n </View>\n <View style={styles.invoiceMetaItem}>\n <PDFText style={styles.invoiceMetaLabel}>Due Date</PDFText>\n <PDFText style={styles.invoiceMetaValue}>{dueDate}</PDFText>\n </View>\n <View style={styles.invoiceMetaItem}>\n <PDFText style={styles.invoiceMetaLabel}>Amount Due</PDFText>\n <PDFText style={styles.invoiceMetaValue}>\n {formatCurrency(summary.total, currency)}\n </PDFText>\n </View>\n </View>\n\n {/* Billing info */}\n <Section noWrap style={styles.billingSection as Style}>\n <View style={styles.billingColumn}>\n <PDFText style={styles.billingLabel}>From</PDFText>\n <PDFText style={styles.billingText}>{company.name}</PDFText>\n <PDFText style={styles.billingText}>{company.address}</PDFText>\n {company.email && <PDFText style={styles.billingText}>{company.email}</PDFText>}\n </View>\n <View style={styles.billingColumn}>\n <PDFText style={styles.billingLabel}>Bill To</PDFText>\n <PDFText style={styles.billingText}>{client.name}</PDFText>\n <PDFText style={styles.billingText}>{client.address}</PDFText>\n {client.email && <PDFText style={styles.billingText}>{client.email}</PDFText>}\n </View>\n </Section>\n\n {/* Items table */}\n <Table variant=\"primary-header\">\n <TableHeader>\n <TableRow header>\n <TableCell>Description</TableCell>\n <TableCell align=\"center\">Qty</TableCell>\n <TableCell align=\"center\">Rate</TableCell>\n <TableCell align=\"right\">Total</TableCell>\n </TableRow>\n </TableHeader>\n <TableBody>\n {items.map((item, index) => (\n <TableRow key={`item-${item.description}-${index}`}>\n <TableCell>{item.description}</TableCell>\n <TableCell align=\"center\">{`${item.quantity}`}</TableCell>\n <TableCell align=\"center\">{formatCurrency(item.unitPrice, currency)}</TableCell>\n <TableCell align=\"right\">\n {formatCurrency(item.quantity * item.unitPrice, currency)}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n {/* Summary */}\n <View style={styles.summaryContainer}>\n <View style={styles.summaryBox}>\n <KeyValue\n size=\"sm\"\n items={[\n { key: 'Subtotal', value: formatCurrency(summary.subtotal, currency) },\n ...(summary.tax\n ? [{ key: 'Tax', value: formatCurrency(summary.tax, currency) }]\n : []),\n {\n key: 'Total',\n value: formatCurrency(summary.total, currency),\n valueStyle: { fontSize: 14, fontWeight: 700 },\n keyStyle: { fontSize: 14, fontWeight: 700 },\n },\n ]}\n divided\n />\n </View>\n </View>\n\n {notes && (\n <View style={styles.notesSection}>\n <PDFText style={styles.notesLabel}>Notes</PDFText>\n <PDFText style={styles.notesText}>{notes}</PDFText>\n </View>\n )}\n </>\n );\n}\n\nfunction MinimalVariant({\n props,\n styles,\n summary,\n currency,\n}: {\n props: InvoiceTemplateProps;\n styles: ReturnType<typeof createInvoiceStyles>;\n summary: InvoiceSummary;\n currency: InvoiceCurrency;\n}) {\n const { company, client, invoiceNumber, invoiceDate, dueDate, items, notes } = props;\n\n return (\n <>\n {/* Minimal header with invoice stamp */}\n <View style={styles.minimalHeader}>\n <View>\n <Text variant=\"lg\" weight=\"bold\" noMargin>\n {company.name}\n </Text>\n <Text variant=\"sm\" color=\"mutedForeground\" noMargin>\n {company.address}\n </Text>\n {company.email && (\n <Text variant=\"sm\" color=\"mutedForeground\" noMargin>\n {company.email}\n </Text>\n )}\n </View>\n <View style={styles.minimalInvoiceStamp}>\n <PDFText style={styles.minimalInvoiceLabel}>Invoice</PDFText>\n <PDFText style={styles.minimalInvoiceNumber}>{invoiceNumber}</PDFText>\n <Text variant=\"xs\" color=\"mutedForeground\" noMargin>\n {invoiceDate} • Due {dueDate}\n </Text>\n </View>\n </View>\n\n {/* Two-column billing */}\n <Section noWrap style={styles.billingSection as Style}>\n <View style={styles.billingColumn}>\n <PDFText style={styles.billingLabel}>Bill To</PDFText>\n <PDFText style={styles.billingText}>{client.name}</PDFText>\n <PDFText style={styles.billingText}>{client.address}</PDFText>\n {client.email && <PDFText style={styles.billingText}>{client.email}</PDFText>}\n </View>\n </Section>\n\n {/* Compact table */}\n <Table variant=\"minimal\">\n <TableHeader>\n <TableRow header>\n <TableCell>Item</TableCell>\n <TableCell align=\"center\">Qty</TableCell>\n <TableCell align=\"right\">Amount</TableCell>\n </TableRow>\n </TableHeader>\n <TableBody>\n {items.map((item, index) => (\n <TableRow key={`item-${item.description}-${index}`}>\n <TableCell>{item.description}</TableCell>\n <TableCell align=\"center\">{`${item.quantity}`}</TableCell>\n <TableCell align=\"right\">\n {formatCurrency(item.quantity * item.unitPrice, currency)}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n {/* Inline summary */}\n <View style={styles.summaryContainer}>\n <View style={styles.summaryBox}>\n <KeyValue\n size=\"sm\"\n direction=\"horizontal\"\n items={[\n { key: 'Subtotal', value: formatCurrency(summary.subtotal, currency) },\n ...(summary.tax\n ? [{ key: 'Tax', value: formatCurrency(summary.tax, currency) }]\n : []),\n {\n key: 'Total Due',\n value: formatCurrency(summary.total, currency),\n valueStyle: { fontWeight: 700 },\n },\n ]}\n />\n </View>\n </View>\n\n {notes && (\n <View style={styles.notesSection}>\n <PDFText style={styles.notesText}>{notes}</PDFText>\n </View>\n )}\n </>\n );\n}\n\n// ─── Main Component ──────────────────────────────────────────────────────────\n\n/**\n * InvoiceTemplate — A data-driven invoice PDF generator.\n *\n * Supports three visual variants: classic, modern, and minimal.\n * Pass structured data (company, client, items) and get a professional invoice.\n *\n * @example Basic usage\n * ```tsx\n * <InvoiceTemplate\n * invoiceNumber=\"INV-001\"\n * invoiceDate=\"March 1, 2026\"\n * dueDate=\"March 31, 2026\"\n * company={{ name: \"Acme Inc\", address: \"123 Main St\" }}\n * client={{ name: \"Client Co\", address: \"456 Oak Ave\" }}\n * items={[{ description: \"Consulting\", quantity: 10, unitPrice: 150 }]}\n * />\n * ```\n *\n * @example Modern variant with tax\n * ```tsx\n * <InvoiceTemplate\n * variant=\"modern\"\n * invoiceNumber=\"INV-002\"\n * invoiceDate=\"March 1, 2026\"\n * dueDate=\"March 31, 2026\"\n * company={{ name: \"TechCorp\", address: \"789 Tech Blvd\", logo: \"/logo.png\" }}\n * client={{ name: \"StartupXYZ\", address: \"321 Innovation Dr\" }}\n * items={[{ description: \"Development\", quantity: 1, unitPrice: 5000 }]}\n * taxRate={8.5}\n * />\n * ```\n */\nexport function InvoiceTemplate(props: InvoiceTemplateProps) {\n const {\n variant = 'classic',\n invoiceNumber,\n items,\n summary: providedSummary,\n taxRate = 0,\n currency = { symbol: '$', position: 'before', decimals: 2 },\n style,\n title,\n } = props;\n\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createInvoiceStyles(theme), [theme]);\n\n // Calculate summary if not provided\n const summary = providedSummary || calculateSummary(items, taxRate);\n\n const pageStyles: Style[] = [styles.page];\n if (style) {\n pageStyles.push(style);\n }\n\n const variantMap: Record<InvoiceVariant, React.ReactNode> = {\n classic: <ClassicVariant props={props} styles={styles} summary={summary} currency={currency} />,\n modern: <ModernVariant props={props} styles={styles} summary={summary} currency={currency} />,\n minimal: <MinimalVariant props={props} styles={styles} summary={summary} currency={currency} />,\n };\n\n return (\n <Document title={title || `Invoice ${invoiceNumber}`}>\n <Page size=\"A4\" style={pageStyles}>\n {variantMap[variant]}\n </Page>\n </Document>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\nexport function createResumeStyles(theme: PdfxTheme, accentColor?: string) {\n const { colors, typography, spacing, primitives } = theme;\n const accent = accentColor || colors.primary;\n\n return StyleSheet.create({\n // ─── Page Layout ─────────────────────────────────────────────────────────\n page: {\n padding: spacing.page.marginTop,\n paddingBottom: spacing.page.marginBottom,\n backgroundColor: colors.background,\n fontFamily: typography.body.fontFamily,\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n },\n\n // ─── Professional Variant ────────────────────────────────────────────────\n professionalHeader: {\n marginBottom: spacing.sectionGap,\n borderBottomWidth: 2,\n borderBottomColor: accent,\n paddingBottom: spacing.componentGap,\n },\n professionalName: {\n fontSize: primitives.typography['2xl'],\n fontWeight: primitives.fontWeights.bold,\n color: colors.foreground,\n marginBottom: 2,\n },\n professionalTitle: {\n fontSize: primitives.typography.sm,\n color: colors.mutedForeground,\n marginBottom: 6,\n },\n professionalContact: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 12,\n },\n professionalContactItem: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n },\n\n // ─── Modern Variant (Two-Column) ─────────────────────────────────────────\n modernContainer: {\n flexDirection: 'row',\n },\n modernSidebar: {\n width: 180,\n backgroundColor: accent,\n padding: 16,\n marginLeft: -spacing.page.marginLeft,\n marginTop: -spacing.page.marginTop,\n marginBottom: -spacing.page.marginBottom,\n minHeight: '100%',\n },\n modernSidebarName: {\n fontSize: primitives.typography.lg,\n fontWeight: primitives.fontWeights.bold,\n color: colors.primaryForeground,\n marginBottom: 4,\n },\n modernSidebarTitle: {\n fontSize: primitives.typography.xs,\n color: colors.primaryForeground,\n opacity: 0.9,\n marginBottom: 16,\n },\n modernSidebarSection: {\n marginBottom: 16,\n },\n modernSidebarLabel: {\n fontSize: primitives.typography.xs,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.primaryForeground,\n textTransform: 'uppercase',\n letterSpacing: primitives.letterSpacing.wide,\n marginBottom: 6,\n opacity: 0.8,\n },\n modernSidebarText: {\n fontSize: primitives.typography.xs,\n color: colors.primaryForeground,\n marginBottom: 3,\n lineHeight: 1.4,\n },\n modernMain: {\n flex: 1,\n paddingLeft: 20,\n },\n\n // ─── Minimal Variant ─────────────────────────────────────────────────────\n minimalHeader: {\n marginBottom: spacing.sectionGap,\n textAlign: 'center',\n },\n minimalName: {\n fontSize: primitives.typography.xl,\n fontWeight: primitives.fontWeights.bold,\n color: colors.foreground,\n marginBottom: 2,\n },\n minimalTitle: {\n fontSize: primitives.typography.sm,\n color: colors.mutedForeground,\n marginBottom: 8,\n },\n minimalContact: {\n flexDirection: 'row',\n justifyContent: 'center',\n flexWrap: 'wrap',\n gap: 8,\n },\n minimalContactItem: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n },\n minimalDivider: {\n color: colors.border,\n },\n\n // ─── Section Styles (Shared) ─────────────────────────────────────────────\n section: {\n marginBottom: spacing.componentGap,\n },\n sectionTitle: {\n fontSize: primitives.typography.sm,\n fontWeight: primitives.fontWeights.bold,\n color: accent,\n textTransform: 'uppercase',\n letterSpacing: primitives.letterSpacing.wide,\n marginBottom: 8,\n borderBottomWidth: 1,\n borderBottomColor: colors.border,\n paddingBottom: 4,\n },\n\n // ─── Experience Entry ────────────────────────────────────────────────────\n experienceEntry: {\n marginBottom: 12,\n },\n experienceHeader: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n marginBottom: 4,\n },\n experienceRole: {\n fontSize: primitives.typography.sm,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.foreground,\n },\n experienceCompany: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n },\n experienceDates: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n textAlign: 'right',\n },\n experienceLocation: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n textAlign: 'right',\n },\n experienceHighlight: {\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n marginLeft: 8,\n marginBottom: 2,\n lineHeight: 1.4,\n },\n experienceDescription: {\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n lineHeight: 1.5,\n marginTop: 4,\n },\n\n // ─── Education Entry ─────────────────────────────────────────────────────\n educationEntry: {\n marginBottom: 10,\n },\n educationHeader: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n marginBottom: 2,\n },\n educationDegree: {\n fontSize: primitives.typography.sm,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.foreground,\n },\n educationInstitution: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n },\n educationDates: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n textAlign: 'right',\n },\n educationGpa: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n fontStyle: 'italic',\n },\n\n // ─── Skills ──────────────────────────────────────────────────────────────\n skillsContainer: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 4,\n },\n skillCategory: {\n marginBottom: 8,\n },\n skillCategoryLabel: {\n fontSize: primitives.typography.xs,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.foreground,\n marginBottom: 4,\n },\n skillBadge: {\n backgroundColor: colors.muted,\n paddingHorizontal: 6,\n paddingVertical: 2,\n borderRadius: primitives.borderRadius.sm,\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n marginRight: 4,\n marginBottom: 4,\n },\n skillText: {\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n },\n\n // ─── Projects ────────────────────────────────────────────────────────────\n projectEntry: {\n marginBottom: 10,\n },\n projectName: {\n fontSize: primitives.typography.sm,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.foreground,\n },\n projectDescription: {\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n lineHeight: 1.4,\n marginTop: 2,\n },\n projectTech: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n fontStyle: 'italic',\n marginTop: 2,\n },\n\n // ─── Certifications ──────────────────────────────────────────────────────\n certEntry: {\n marginBottom: 6,\n },\n certName: {\n fontSize: primitives.typography.xs,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.foreground,\n },\n certIssuer: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n },\n\n // ─── Languages ───────────────────────────────────────────────────────────\n languageEntry: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n marginBottom: 4,\n },\n languageName: {\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n },\n languageProficiency: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n },\n\n // ─── Summary ─────────────────────────────────────────────────────────────\n summaryText: {\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n lineHeight: 1.6,\n },\n\n // ─── Bullet Point ────────────────────────────────────────────────────────\n bullet: {\n fontSize: primitives.typography.xs,\n color: accent,\n marginRight: 4,\n },\n bulletRow: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n marginBottom: 2,\n },\n });\n}\n","import { Document, Text as PDFText, Page, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createResumeStyles } from './resume.styles';\nimport type {\n ResumeCertification,\n ResumeEducation,\n ResumeExperience,\n ResumeLanguage,\n ResumeProject,\n ResumeSkillCategory,\n ResumeTemplateProps,\n ResumeVariant,\n} from './resume.types';\n\n// ─── Helper Components ───────────────────────────────────────────────────────\n\nfunction ContactInfo({\n personal,\n styles,\n separator = ' • ',\n}: {\n personal: ResumeTemplateProps['personal'];\n styles: ReturnType<typeof createResumeStyles>;\n separator?: string;\n}) {\n const items: string[] = [];\n if (personal.email) items.push(personal.email);\n if (personal.phone) items.push(personal.phone);\n if (personal.location) items.push(personal.location);\n if (personal.linkedin) items.push(personal.linkedin);\n if (personal.github) items.push(personal.github);\n if (personal.website) items.push(personal.website);\n\n return (\n <View style={styles.professionalContact}>\n {items.map((item, index) => (\n <PDFText key={`contact-${item}`} style={styles.professionalContactItem}>\n {item}\n {index < items.length - 1 ? separator : ''}\n </PDFText>\n ))}\n </View>\n );\n}\n\nfunction SectionTitle({\n title,\n styles,\n}: {\n title: string;\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n return <PDFText style={styles.sectionTitle}>{title}</PDFText>;\n}\n\nfunction ExperienceSection({\n experience,\n styles,\n}: {\n experience: ResumeExperience[];\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n if (!experience.length) return null;\n\n return (\n <View style={styles.section}>\n <SectionTitle title=\"Experience\" styles={styles} />\n {experience.map((exp) => (\n <View key={`exp-${exp.company}-${exp.role}`} style={styles.experienceEntry}>\n <View style={styles.experienceHeader}>\n <View>\n <PDFText style={styles.experienceRole}>{exp.role}</PDFText>\n <PDFText style={styles.experienceCompany}>{exp.company}</PDFText>\n </View>\n <View>\n <PDFText style={styles.experienceDates}>\n {exp.startDate} – {exp.endDate || 'Present'}\n </PDFText>\n {exp.location && <PDFText style={styles.experienceLocation}>{exp.location}</PDFText>}\n </View>\n </View>\n {exp.description && (\n <PDFText style={styles.experienceDescription}>{exp.description}</PDFText>\n )}\n {exp.highlights?.map((highlight) => (\n <View key={`hl-${highlight.slice(0, 20)}`} style={styles.bulletRow}>\n <PDFText style={styles.bullet}>•</PDFText>\n <PDFText style={styles.experienceHighlight}>{highlight}</PDFText>\n </View>\n ))}\n </View>\n ))}\n </View>\n );\n}\n\nfunction EducationSection({\n education,\n styles,\n}: {\n education: ResumeEducation[];\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n if (!education.length) return null;\n\n return (\n <View style={styles.section}>\n <SectionTitle title=\"Education\" styles={styles} />\n {education.map((edu) => (\n <View key={`edu-${edu.institution}-${edu.degree}`} style={styles.educationEntry}>\n <View style={styles.educationHeader}>\n <View>\n <PDFText style={styles.educationDegree}>\n {edu.degree}\n {edu.field ? ` in ${edu.field}` : ''}\n </PDFText>\n <PDFText style={styles.educationInstitution}>{edu.institution}</PDFText>\n </View>\n <View>\n {(edu.startDate || edu.endDate) && (\n <PDFText style={styles.educationDates}>\n {edu.startDate && edu.endDate\n ? `${edu.startDate} – ${edu.endDate}`\n : edu.endDate || edu.startDate}\n </PDFText>\n )}\n </View>\n </View>\n {edu.gpa && <PDFText style={styles.educationGpa}>GPA: {edu.gpa}</PDFText>}\n </View>\n ))}\n </View>\n );\n}\n\nfunction SkillsSection({\n skills,\n styles,\n compact = false,\n}: {\n skills: ResumeSkillCategory[];\n styles: ReturnType<typeof createResumeStyles>;\n compact?: boolean;\n}) {\n if (!skills.length) return null;\n\n if (compact) {\n return (\n <View style={styles.section}>\n {skills.map((cat) => (\n <View key={`skill-${cat.category}`} style={styles.skillCategory}>\n <PDFText style={styles.skillCategoryLabel}>{cat.category}</PDFText>\n <PDFText style={styles.skillText}>{cat.skills.join(', ')}</PDFText>\n </View>\n ))}\n </View>\n );\n }\n\n return (\n <View style={styles.section}>\n <SectionTitle title=\"Skills\" styles={styles} />\n {skills.map((cat) => (\n <View key={`skill-${cat.category}`} style={styles.skillCategory}>\n <PDFText style={styles.skillCategoryLabel}>{cat.category}</PDFText>\n <View style={styles.skillsContainer}>\n {cat.skills.map((skill) => (\n <PDFText key={`s-${skill}`} style={styles.skillBadge}>\n {skill}\n </PDFText>\n ))}\n </View>\n </View>\n ))}\n </View>\n );\n}\n\nfunction ProjectsSection({\n projects,\n styles,\n}: {\n projects: ResumeProject[];\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n if (!projects.length) return null;\n\n return (\n <View style={styles.section}>\n <SectionTitle title=\"Projects\" styles={styles} />\n {projects.map((project) => (\n <View key={`proj-${project.name}`} style={styles.projectEntry}>\n <PDFText style={styles.projectName}>{project.name}</PDFText>\n {project.description && (\n <PDFText style={styles.projectDescription}>{project.description}</PDFText>\n )}\n {project.technologies && (\n <PDFText style={styles.projectTech}>{project.technologies.join(' • ')}</PDFText>\n )}\n </View>\n ))}\n </View>\n );\n}\n\nfunction CertificationsSection({\n certifications,\n styles,\n}: {\n certifications: ResumeCertification[];\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n if (!certifications.length) return null;\n\n return (\n <View style={styles.section}>\n <SectionTitle title=\"Certifications\" styles={styles} />\n {certifications.map((cert) => (\n <View key={`cert-${cert.name}`} style={styles.certEntry}>\n <PDFText style={styles.certName}>{cert.name}</PDFText>\n <PDFText style={styles.certIssuer}>\n {cert.issuer}\n {cert.date ? ` • ${cert.date}` : ''}\n </PDFText>\n </View>\n ))}\n </View>\n );\n}\n\nfunction LanguagesSection({\n languages,\n styles,\n}: {\n languages: ResumeLanguage[];\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n if (!languages.length) return null;\n\n return (\n <View style={styles.section}>\n <SectionTitle title=\"Languages\" styles={styles} />\n {languages.map((lang) => (\n <View key={`lang-${lang.language}`} style={styles.languageEntry}>\n <PDFText style={styles.languageName}>{lang.language}</PDFText>\n <PDFText style={styles.languageProficiency}>{lang.proficiency}</PDFText>\n </View>\n ))}\n </View>\n );\n}\n\n// ─── Variant Components ──────────────────────────────────────────────────────\n\nfunction ProfessionalVariant({\n props,\n styles,\n}: {\n props: ResumeTemplateProps;\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n const {\n personal,\n summary,\n experience = [],\n education = [],\n skills = [],\n projects = [],\n certifications = [],\n languages = [],\n } = props;\n\n return (\n <>\n {/* Header */}\n <View style={styles.professionalHeader}>\n <PDFText style={styles.professionalName}>{personal.name}</PDFText>\n {personal.title && <PDFText style={styles.professionalTitle}>{personal.title}</PDFText>}\n <ContactInfo personal={personal} styles={styles} separator=\"\" />\n </View>\n\n {/* Summary */}\n {summary && (\n <View style={styles.section}>\n <SectionTitle title={summary.title || 'Professional Summary'} styles={styles} />\n <PDFText style={styles.summaryText}>{summary.content}</PDFText>\n </View>\n )}\n\n <ExperienceSection experience={experience} styles={styles} />\n <EducationSection education={education} styles={styles} />\n <SkillsSection skills={skills} styles={styles} />\n <ProjectsSection projects={projects} styles={styles} />\n <CertificationsSection certifications={certifications} styles={styles} />\n <LanguagesSection languages={languages} styles={styles} />\n </>\n );\n}\n\nfunction ModernVariant({\n props,\n styles,\n}: {\n props: ResumeTemplateProps;\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n const {\n personal,\n summary,\n experience = [],\n education = [],\n skills = [],\n projects = [],\n certifications = [],\n languages = [],\n } = props;\n\n return (\n <View style={styles.modernContainer}>\n {/* Sidebar */}\n <View style={styles.modernSidebar}>\n <PDFText style={styles.modernSidebarName}>{personal.name}</PDFText>\n {personal.title && <PDFText style={styles.modernSidebarTitle}>{personal.title}</PDFText>}\n\n {/* Contact */}\n <View style={styles.modernSidebarSection}>\n <PDFText style={styles.modernSidebarLabel}>Contact</PDFText>\n {personal.email && <PDFText style={styles.modernSidebarText}>{personal.email}</PDFText>}\n {personal.phone && <PDFText style={styles.modernSidebarText}>{personal.phone}</PDFText>}\n {personal.location && (\n <PDFText style={styles.modernSidebarText}>{personal.location}</PDFText>\n )}\n {personal.linkedin && (\n <PDFText style={styles.modernSidebarText}>{personal.linkedin}</PDFText>\n )}\n {personal.github && <PDFText style={styles.modernSidebarText}>{personal.github}</PDFText>}\n {personal.website && (\n <PDFText style={styles.modernSidebarText}>{personal.website}</PDFText>\n )}\n </View>\n\n {/* Skills in sidebar */}\n {skills.length > 0 && (\n <View style={styles.modernSidebarSection}>\n <PDFText style={styles.modernSidebarLabel}>Skills</PDFText>\n {skills.map((cat) => (\n <View key={`side-skill-${cat.category}`} style={{ marginBottom: 8 }}>\n <PDFText\n style={{\n ...styles.modernSidebarText,\n fontWeight: 600,\n marginBottom: 2,\n }}\n >\n {cat.category}\n </PDFText>\n <PDFText style={styles.modernSidebarText}>{cat.skills.join(', ')}</PDFText>\n </View>\n ))}\n </View>\n )}\n\n {/* Languages in sidebar */}\n {languages.length > 0 && (\n <View style={styles.modernSidebarSection}>\n <PDFText style={styles.modernSidebarLabel}>Languages</PDFText>\n {languages.map((lang) => (\n <PDFText key={`side-lang-${lang.language}`} style={styles.modernSidebarText}>\n {lang.language} – {lang.proficiency}\n </PDFText>\n ))}\n </View>\n )}\n </View>\n\n {/* Main Content */}\n <View style={styles.modernMain}>\n {summary && (\n <View style={styles.section}>\n <SectionTitle title={summary.title || 'Summary'} styles={styles} />\n <PDFText style={styles.summaryText}>{summary.content}</PDFText>\n </View>\n )}\n\n <ExperienceSection experience={experience} styles={styles} />\n <EducationSection education={education} styles={styles} />\n <ProjectsSection projects={projects} styles={styles} />\n <CertificationsSection certifications={certifications} styles={styles} />\n </View>\n </View>\n );\n}\n\nfunction MinimalVariant({\n props,\n styles,\n}: {\n props: ResumeTemplateProps;\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n const {\n personal,\n summary,\n experience = [],\n education = [],\n skills = [],\n projects = [],\n certifications = [],\n languages = [],\n } = props;\n\n return (\n <>\n {/* Centered Header */}\n <View style={styles.minimalHeader}>\n <PDFText style={styles.minimalName}>{personal.name}</PDFText>\n {personal.title && <PDFText style={styles.minimalTitle}>{personal.title}</PDFText>}\n <View style={styles.minimalContact}>\n {personal.email && <PDFText style={styles.minimalContactItem}>{personal.email}</PDFText>}\n {personal.email && personal.phone && <PDFText style={styles.minimalDivider}>|</PDFText>}\n {personal.phone && <PDFText style={styles.minimalContactItem}>{personal.phone}</PDFText>}\n {personal.phone && personal.location && (\n <PDFText style={styles.minimalDivider}>|</PDFText>\n )}\n {personal.location && (\n <PDFText style={styles.minimalContactItem}>{personal.location}</PDFText>\n )}\n </View>\n </View>\n\n {/* Summary */}\n {summary && (\n <View style={styles.section}>\n <SectionTitle title={summary.title || 'Summary'} styles={styles} />\n <PDFText style={styles.summaryText}>{summary.content}</PDFText>\n </View>\n )}\n\n <ExperienceSection experience={experience} styles={styles} />\n <EducationSection education={education} styles={styles} />\n <SkillsSection skills={skills} styles={styles} compact />\n <ProjectsSection projects={projects} styles={styles} />\n <CertificationsSection certifications={certifications} styles={styles} />\n <LanguagesSection languages={languages} styles={styles} />\n </>\n );\n}\n\n// ─── Main Component ──────────────────────────────────────────────────────────\n\n/**\n * ResumeTemplate — A data-driven resume/CV PDF generator.\n *\n * Supports three visual variants: professional, modern, and minimal.\n * Pass structured data (personal info, experience, education, skills)\n * and get a professional resume PDF.\n *\n * @example Basic usage\n * ```tsx\n * <ResumeTemplate\n * personal={{\n * name: 'John Doe',\n * title: 'Senior Software Engineer',\n * email: 'john@example.com',\n * phone: '+1 555-1234',\n * location: 'San Francisco, CA',\n * }}\n * experience={[\n * {\n * company: 'TechCorp',\n * role: 'Senior Engineer',\n * startDate: 'Jan 2020',\n * endDate: 'Present',\n * highlights: ['Led team of 5', 'Shipped key features'],\n * },\n * ]}\n * education={[\n * {\n * institution: 'MIT',\n * degree: 'B.S.',\n * field: 'Computer Science',\n * endDate: '2019',\n * },\n * ]}\n * skills={[\n * { category: 'Languages', skills: ['TypeScript', 'Python', 'Go'] },\n * ]}\n * />\n * ```\n */\nexport function ResumeTemplate(props: ResumeTemplateProps) {\n const { variant = 'professional', personal, accentColor, style, title } = props;\n\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createResumeStyles(theme, accentColor), [theme, accentColor]);\n\n const pageStyles: Style[] = [styles.page];\n if (style) {\n pageStyles.push(style);\n }\n\n const variantMap: Record<ResumeVariant, React.ReactNode> = {\n professional: <ProfessionalVariant props={props} styles={styles} />,\n modern: <ModernVariant props={props} styles={styles} />,\n minimal: <MinimalVariant props={props} styles={styles} />,\n };\n\n return (\n <Document title={title || `${personal.name} - Resume`}>\n <Page size=\"A4\" style={pageStyles}>\n {variantMap[variant]}\n </Page>\n </Document>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/lib/pdfx-theme.ts","../src/lib/pdfx-theme-context.tsx","../src/lib/tw.ts","../src/lib/fonts.ts","../src/lib/resolve-color.ts","../src/components/heading/heading.styles.ts","../src/components/heading/heading.tsx","../src/components/text/text.styles.ts","../src/components/text/text.tsx","../src/components/link/link.styles.ts","../src/components/link/link.tsx","../src/components/stack/stack.styles.ts","../src/components/stack/stack.tsx","../src/components/section/section.styles.ts","../src/components/section/section.tsx","../src/components/table/table.styles.ts","../src/components/table/table.tsx","../src/components/data-table/data-table.styles.ts","../src/components/data-table/data-table.tsx","../src/components/badge/badge.styles.ts","../src/components/badge/badge.tsx","../src/components/key-value/key-value.styles.ts","../src/components/key-value/key-value.tsx","../src/components/divider/divider.styles.ts","../src/components/divider/divider.tsx","../src/components/page-break/page-break.tsx","../src/components/page-number/page-number.styles.ts","../src/components/page-number/page-number.tsx","../src/components/page-header/page-header.tsx","../src/components/page-footer/page-footer.tsx","../src/components/watermark/watermark.styles.ts","../src/components/watermark/watermark.tsx","../src/components/alert/alert.styles.ts","../src/components/alert/alert.tsx","../src/components/list/list.styles.ts","../src/components/list/list.tsx","../src/components/card/card.styles.ts","../src/components/card/card.tsx","../src/components/qrcode/qrcode.styles.ts","../src/components/qrcode/qrcode.tsx","../src/components/pdf-image/pdf-image.tsx","../src/components/graph/graph.tsx","../src/components/form/form.styles.ts","../src/components/form/form.tsx","../src/components/signature/signature.styles.ts","../src/components/signature/signature.tsx","../src/components/keep-together/keep-together.tsx","../src/templates/invoice/invoice.styles.ts","../src/templates/invoice/invoice.tsx","../src/templates/resume/resume.styles.ts","../src/templates/resume/resume.tsx"],"names":["React","theme","jsx","StyleSheet","Text","PDFText","PDFLink","View","rowStyles","jsxs","containerStyles","titleStyles","lStyle","rStyle","Svg","Fragment","G","Line","SvgText","Rect","Path","Circle","ModernVariant","MinimalVariant","Document","Page"],"mappings":"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","file":"index.js","sourcesContent":["/** Base error class for all @nxavis/pdf errors */\nexport class PdfxError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly suggestion?: string\n ) {\n super(message);\n this.name = 'PdfxError';\n }\n}\n\n/** Thrown when input validation fails (theme, props, data) */\nexport class ValidationError extends PdfxError {\n constructor(message: string, suggestion?: string) {\n super(message, 'VALIDATION_ERROR', suggestion);\n this.name = 'ValidationError';\n }\n}\n","/** Default theme used when no PdfxThemeProvider is present. */\nimport { professionalTheme } from '../themes';\n\nexport const theme = professionalTheme;\n","/**\n * @nxavis/pdf Theme Context\n *\n * Provides React context for runtime theme switching.\n * Wrap any subtree in <PdfxThemeProvider theme={myTheme}> to override the active theme.\n */\nimport * as React from 'react';\nimport { type DependencyList, type ReactNode, createContext, useContext, useMemo } from 'react';\nimport type { PdfxTheme } from '../theme';\nimport { theme as defaultTheme } from './pdfx-theme';\n\nexport type { PdfxTheme };\n\nexport const PdfxThemeContext = createContext<PdfxTheme>(defaultTheme);\n\nexport interface PdfxThemeProviderProps {\n theme?: PdfxTheme;\n children: ReactNode;\n}\n\n/**\n * Detect whether React currently has an active dispatcher.\n * When components are invoked as plain functions in tests, dispatcher is null.\n */\nfunction hasActiveDispatcher(): boolean {\n const maybeInternals = React as unknown as {\n __CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE?: { H?: unknown };\n };\n\n const dispatcher =\n maybeInternals.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE?.H;\n return dispatcher != null;\n}\n\nexport function PdfxThemeProvider({ theme, children }: PdfxThemeProviderProps) {\n const resolvedTheme = useMemo(() => theme ?? defaultTheme, [theme]);\n return <PdfxThemeContext.Provider value={resolvedTheme}>{children}</PdfxThemeContext.Provider>;\n}\n\nconst HOOK_ERROR_PATTERNS =\n /invalid hook call|useContext|useMemo|cannot read properties of null|dispatcher|renderWithHooks|resolveDispatcher|hooks can only be called|rendered fewer hooks/i;\n\n/**\n * Returns the active PdfxTheme from context, or the default theme when called\n * outside a React render tree (e.g. unit tests).\n */\nexport function usePdfxTheme(): PdfxTheme {\n if (!hasActiveDispatcher()) {\n return defaultTheme;\n }\n\n try {\n return useContext(PdfxThemeContext);\n } catch (error) {\n if (error instanceof Error && HOOK_ERROR_PATTERNS.test(error.message)) {\n return defaultTheme;\n }\n throw error;\n }\n}\n\n/**\n * Memoises the result of factory(). Falls back to factory() directly when\n * called outside React (e.g. unit tests).\n */\nexport function useSafeMemo<T>(factory: () => T, deps: DependencyList): T {\n if (!hasActiveDispatcher()) {\n return factory();\n }\n\n try {\n return useMemo(factory, deps);\n } catch (error) {\n if (error instanceof Error && HOOK_ERROR_PATTERNS.test(error.message)) {\n return factory();\n }\n throw error;\n }\n}\n","/**\n * Tailwind CSS utility for @react-pdf/renderer.\n *\n * Wraps `react-pdf-tailwind` and integrates with the PdfxTheme system.\n * Use `tw(\"p-4 bg-gray-100 text-sm\")` to generate react-pdf compatible styles.\n *\n * @example\n * ```tsx\n * import { tw, createThemeTw } from '@nxavis/pdf';\n * import { View, Text } from '@react-pdf/renderer';\n *\n * // Default tw (professional theme colors mapped)\n * <View style={tw(\"p-4 bg-muted rounded\")}>\n * <Text style={tw(\"text-primary text-lg font-bold\")}>Hello</Text>\n * </View>\n *\n * // Custom theme tw\n * const tw = createThemeTw(modernTheme);\n * <Text style={tw(\"text-2xl text-primary\")}>Modern</Text>\n * ```\n */\nimport { createTw } from 'react-pdf-tailwind';\nimport type { PdfxTheme } from '../theme';\nimport { professionalTheme, koreanTheme } from '../themes';\n\n/**\n * Create a tw() function from a PdfxTheme.\n * Maps theme tokens to Tailwind custom colors so you can use\n * `tw(\"text-primary bg-muted border-border\")` etc.\n */\nexport function createThemeTw(theme: PdfxTheme, options?: { ptPerRem?: number }) {\n return createTw(\n {\n colors: {\n // Semantic colors from theme\n foreground: theme.colors.foreground,\n background: theme.colors.background,\n muted: theme.colors.muted,\n 'muted-foreground': theme.colors.mutedForeground,\n primary: theme.colors.primary,\n 'primary-foreground': theme.colors.primaryForeground,\n border: theme.colors.border,\n accent: theme.colors.accent,\n destructive: theme.colors.destructive,\n success: theme.colors.success,\n warning: theme.colors.warning,\n info: theme.colors.info,\n },\n fontFamily: {\n body: [theme.typography.body.fontFamily],\n heading: [theme.typography.heading.fontFamily],\n },\n },\n {\n ptPerRem: options?.ptPerRem ?? 12,\n },\n );\n}\n\n/**\n * Default tw() using the professional theme.\n * Import and use directly for quick styling.\n *\n * @example\n * ```tsx\n * <View style={tw(\"flex-row gap-4 p-6 bg-muted\")}>\n * <Text style={tw(\"text-foreground font-bold\")}>Label</Text>\n * </View>\n * ```\n */\nexport const tw = createThemeTw(professionalTheme);\n\n/**\n * Korean tw() using the korean theme (NotoSansKR).\n * setupKorean() 호출 후 사용하세요.\n *\n * @example\n * ```tsx\n * import { setupKorean, koTw } from '@nxavis/pdf';\n *\n * setupKorean();\n * <Text style={koTw(\"text-lg font-bold font-body\")}>한국어 텍스트</Text>\n * ```\n */\nexport const koTw = createThemeTw(koreanTheme);\n","/**\n * @nxavis/pdf Font Registration Utilities\n *\n * react-pdf는 TTF/OTF만 지원합니다 (woff2 불가).\n * 이 모듈은 한글 폰트를 포함한 폰트 등록 유틸을 제공합니다.\n *\n * @example\n * ```tsx\n * import { registerNotoSansKR, registerFont } from '@nxavis/pdf';\n *\n * // Noto Sans KR 한글 폰트 등록 (가장 간단)\n * registerNotoSansKR();\n *\n * // 커스텀 폰트 등록\n * registerFont('MyFont', [\n * { src: '/fonts/MyFont-Regular.ttf', fontWeight: 400 },\n * { src: '/fonts/MyFont-Bold.ttf', fontWeight: 700 },\n * ]);\n * ```\n */\nimport { Font } from '@react-pdf/renderer';\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\nexport interface FontSource {\n src: string;\n fontWeight?: number;\n fontStyle?: 'normal' | 'italic';\n}\n\nexport type FontFamily = 'NotoSansKR' | 'Pretendard' | (string & {});\n\n// ─── CDN URLs ────────────────────────────────────────────────────────────────\n\nconst FONTSOURCE_CDN = 'https://cdn.jsdelivr.net/fontsource/fonts';\n\nconst FONT_URLS = {\n NotoSansKR: {\n 400: `${FONTSOURCE_CDN}/noto-sans-kr@latest/korean-400-normal.ttf`,\n 500: `${FONTSOURCE_CDN}/noto-sans-kr@latest/korean-500-normal.ttf`,\n 700: `${FONTSOURCE_CDN}/noto-sans-kr@latest/korean-700-normal.ttf`,\n },\n Pretendard: {\n 400: `${FONTSOURCE_CDN}/pretendard@latest/korean-400-normal.ttf`,\n 500: `${FONTSOURCE_CDN}/pretendard@latest/korean-500-normal.ttf`,\n 600: `${FONTSOURCE_CDN}/pretendard@latest/korean-600-normal.ttf`,\n 700: `${FONTSOURCE_CDN}/pretendard@latest/korean-700-normal.ttf`,\n },\n} as const;\n\n// ─── Registration State ──────────────────────────────────────────────────────\n\nconst registeredFonts = new Set<string>();\n\n// ─── Public API ──────────────────────────────────────────────────────────────\n\n/**\n * 커스텀 폰트를 등록합니다.\n * 이미 등록된 폰트는 중복 등록하지 않습니다.\n */\nexport function registerFont(family: string, sources: FontSource[]): void {\n if (registeredFonts.has(family)) return;\n\n Font.register({\n family,\n fonts: sources.map((s) => ({\n src: s.src,\n fontWeight: s.fontWeight ?? 400,\n fontStyle: s.fontStyle ?? 'normal',\n })),\n });\n\n registeredFonts.add(family);\n}\n\n/**\n * Noto Sans KR 한글 폰트를 등록합니다.\n * react-pdf에서 한국어 텍스트를 렌더링하려면 반드시 호출해야 합니다.\n *\n * @param weights - 등록할 font-weight 목록 (기본: [400, 700])\n *\n * @example\n * ```tsx\n * import { registerNotoSansKR } from '@nxavis/pdf';\n *\n * registerNotoSansKR(); // 400, 700\n * registerNotoSansKR([400, 500, 700]); // 400, 500, 700\n * ```\n */\nexport function registerNotoSansKR(weights: (400 | 500 | 700)[] = [400, 700]): void {\n registerFont(\n 'NotoSansKR',\n weights.map((w) => ({ src: FONT_URLS.NotoSansKR[w], fontWeight: w })),\n );\n}\n\n/**\n * Pretendard 한글 폰트를 등록합니다.\n *\n * @param weights - 등록할 font-weight 목록 (기본: [400, 700])\n *\n * @example\n * ```tsx\n * import { registerPretendard } from '@nxavis/pdf';\n *\n * registerPretendard(); // 400, 700\n * registerPretendard([400, 500, 600, 700]); // 전체\n * ```\n */\nexport function registerPretendard(\n weights: (400 | 500 | 600 | 700)[] = [400, 700],\n): void {\n registerFont(\n 'Pretendard',\n weights.map((w) => ({ src: FONT_URLS.Pretendard[w], fontWeight: w })),\n );\n}\n\n/**\n * 한국어 하이픈 비활성화.\n * 한글은 단어 중간에 하이픈으로 줄바꿈하면 안 되므로 반드시 호출합니다.\n * registerNotoSansKR() / registerPretendard() 내부에서 자동 호출되지 않으므로\n * 직접 호출하거나, setupKorean()을 사용하세요.\n */\nexport function disableHyphenation(): void {\n Font.registerHyphenationCallback((word: string) => [word]);\n}\n\n/**\n * 한국어 PDF 생성을 위한 원스텝 셋업.\n * 폰트 등록 + 하이픈 비활성화를 한 번에 수행합니다.\n *\n * @param font - 'NotoSansKR' (기본) 또는 'Pretendard'\n *\n * @example\n * ```tsx\n * import { setupKorean } from '@nxavis/pdf';\n *\n * setupKorean(); // Noto Sans KR 400/700\n * setupKorean('Pretendard'); // Pretendard 400/700\n * ```\n */\nexport function setupKorean(font: 'NotoSansKR' | 'Pretendard' = 'NotoSansKR'): void {\n if (font === 'Pretendard') {\n registerPretendard();\n } else {\n registerNotoSansKR();\n }\n disableHyphenation();\n}\n","import type { ColorTokens } from '../theme';\n\n/** Theme color token keys that can be used for the color prop */\nexport const THEME_COLOR_KEYS = [\n 'foreground',\n 'background',\n 'muted',\n 'mutedForeground',\n 'primary',\n 'primaryForeground',\n 'border',\n 'accent',\n 'destructive',\n 'success',\n 'warning',\n 'info',\n] as const satisfies (keyof ColorTokens)[];\n\n/** Resolves a color value: theme token key → hex, or raw CSS color as-is. */\nexport function resolveColor(value: string, colors: ColorTokens): string {\n const key = value as (typeof THEME_COLOR_KEYS)[number];\n return THEME_COLOR_KEYS.includes(key) ? colors[key] : value;\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all heading styles derived from the active theme.\n * Returns a StyleSheet covering h1–h6 levels, weight, tracking, transform, and margin overrides.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createHeadingStyles(t: PdfxTheme) {\n const { heading } = t.typography;\n const { foreground } = t.colors;\n const { spacing, fontWeights, letterSpacing } = t.primitives;\n // Semantic spacing tokens — adapt across Minimal / Modern / Professional themes\n const { sectionGap, componentGap, paragraphGap } = t.spacing;\n\n const baseStyle = {\n fontFamily: heading.fontFamily,\n fontWeight: fontWeights.bold,\n lineHeight: heading.lineHeight,\n color: foreground,\n };\n\n return StyleSheet.create({\n h1: {\n ...baseStyle,\n fontSize: heading.fontSize.h1,\n marginTop: spacing[0],\n marginBottom: paragraphGap,\n },\n h2: {\n ...baseStyle,\n fontSize: heading.fontSize.h2,\n marginTop: sectionGap,\n marginBottom: paragraphGap,\n },\n h3: {\n ...baseStyle,\n fontSize: heading.fontSize.h3,\n marginTop: componentGap,\n marginBottom: paragraphGap,\n },\n h4: {\n ...baseStyle,\n fontSize: heading.fontSize.h4,\n marginTop: paragraphGap,\n marginBottom: paragraphGap,\n },\n h5: {\n ...baseStyle,\n fontSize: heading.fontSize.h5,\n marginTop: paragraphGap,\n marginBottom: spacing[1],\n },\n h6: {\n ...baseStyle,\n fontSize: heading.fontSize.h6,\n marginTop: paragraphGap,\n marginBottom: spacing[1],\n },\n weightNormal: { fontWeight: fontWeights.regular },\n weightMedium: { fontWeight: fontWeights.medium },\n weightSemibold: { fontWeight: fontWeights.semibold },\n weightBold: { fontWeight: fontWeights.bold },\n uppercase: { textTransform: 'uppercase', letterSpacing: letterSpacing.wider * 10 },\n lowercase: { textTransform: 'lowercase' },\n capitalize: { textTransform: 'capitalize' },\n trackingTighter: { letterSpacing: letterSpacing.tight * 15 },\n trackingTight: { letterSpacing: letterSpacing.tight * 10 },\n trackingNormal: { letterSpacing: letterSpacing.normal },\n trackingWide: { letterSpacing: letterSpacing.wide * 10 },\n trackingWider: { letterSpacing: letterSpacing.wider * 10 },\n noMargin: { marginTop: 0, marginBottom: 0 },\n });\n}\n","import { Text } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createHeadingStyles } from './heading.styles';\nimport type { HeadingProps } from './heading.types';\n\nexport function Heading({\n level = 1,\n align,\n color,\n transform,\n weight,\n tracking,\n noMargin,\n keepWithNext = true,\n children,\n style,\n}: HeadingProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createHeadingStyles(theme), [theme]);\n\n // Clamp level to valid range (1-6) to prevent runtime errors\n const safeLevel = Math.min(Math.max(Math.round(level), 1), 6) as 1 | 2 | 3 | 4 | 5 | 6;\n\n const weightMap = {\n normal: styles.weightNormal,\n medium: styles.weightMedium,\n semibold: styles.weightSemibold,\n bold: styles.weightBold,\n };\n const trackingMap = {\n tighter: styles.trackingTighter,\n tight: styles.trackingTight,\n normal: styles.trackingNormal,\n wide: styles.trackingWide,\n wider: styles.trackingWider,\n };\n const headingStyle = styles[`h${safeLevel}` as keyof typeof styles];\n const styleArray: Style[] = [headingStyle as Style];\n\n if (weight && weight in weightMap) {\n styleArray.push(weightMap[weight]);\n }\n\n if (tracking && tracking in trackingMap) {\n styleArray.push(trackingMap[tracking]);\n }\n\n if (transform) {\n if (transform === 'uppercase') {\n styleArray.push(styles.uppercase);\n } else if (transform === 'lowercase') {\n styleArray.push(styles.lowercase);\n } else if (transform === 'capitalize') {\n styleArray.push(styles.capitalize);\n }\n }\n\n if (noMargin) {\n styleArray.push(styles.noMargin);\n }\n\n const semanticStyle = {} as Style;\n if (align) semanticStyle.textAlign = align;\n if (color) semanticStyle.color = resolveColor(color, theme.colors);\n if (Object.keys(semanticStyle).length > 0) {\n styleArray.push(semanticStyle);\n }\n\n if (style) {\n styleArray.push(style);\n }\n\n // minPresenceAhead keeps the heading from being stranded at the bottom of a page\n return (\n <Text style={styleArray} minPresenceAhead={keepWithNext ? 80 : undefined}>\n {children}\n </Text>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all text styles derived from the active theme.\n * Returns a StyleSheet covering variant scale, weight, decoration, transform, and spacing.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createTextStyles(t: PdfxTheme) {\n const { fontWeights, letterSpacing } = t.primitives;\n const base = {\n fontFamily: t.typography.body.fontFamily,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.foreground,\n marginBottom: t.spacing.paragraphGap,\n marginTop: 0,\n };\n return StyleSheet.create({\n text: { ...base, fontSize: t.typography.body.fontSize },\n xs: { ...base, fontSize: t.primitives.typography.xs },\n sm: { ...base, fontSize: t.primitives.typography.sm },\n base: { ...base, fontSize: t.primitives.typography.base },\n lg: { ...base, fontSize: t.primitives.typography.lg },\n xl: { ...base, fontSize: t.primitives.typography.xl },\n '2xl': { ...base, fontSize: t.primitives.typography['2xl'] },\n '3xl': { ...base, fontSize: t.primitives.typography['3xl'] },\n weightNormal: { fontWeight: fontWeights.regular },\n weightMedium: { fontWeight: fontWeights.medium },\n weightSemibold: { fontWeight: fontWeights.semibold },\n weightBold: { fontWeight: fontWeights.bold },\n italic: { fontStyle: 'italic' },\n underline: { textDecoration: 'underline' },\n lineThrough: { textDecoration: 'line-through' },\n decorationNone: { textDecoration: 'none' },\n uppercase: { textTransform: 'uppercase', letterSpacing: letterSpacing.wider * 10 },\n lowercase: { textTransform: 'lowercase' },\n capitalize: { textTransform: 'capitalize' },\n noMargin: { marginBottom: 0, marginTop: 0 },\n });\n}\n","import { Text as PDFText } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createTextStyles } from './text.styles';\nimport type { TextProps } from './text.types';\n\nexport function Text({\n variant,\n align,\n color,\n weight,\n italic,\n decoration,\n transform,\n noMargin,\n children,\n style,\n}: TextProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createTextStyles(theme), [theme]);\n const weightMap = {\n normal: styles.weightNormal,\n medium: styles.weightMedium,\n semibold: styles.weightSemibold,\n bold: styles.weightBold,\n };\n const decorationMap = {\n underline: styles.underline,\n 'line-through': styles.lineThrough,\n none: styles.decorationNone,\n };\n const transformMap = {\n uppercase: styles.uppercase,\n lowercase: styles.lowercase,\n capitalize: styles.capitalize,\n };\n const baseStyle = variant ? styles[variant] : styles.text;\n const styleArray: Style[] = [baseStyle];\n\n if (weight && weight in weightMap) {\n styleArray.push(weightMap[weight]);\n }\n\n if (italic) {\n styleArray.push(styles.italic);\n }\n\n if (decoration && decoration in decorationMap) {\n styleArray.push(decorationMap[decoration]);\n }\n\n if (transform && transform in transformMap) {\n styleArray.push(transformMap[transform]);\n }\n\n if (noMargin) {\n styleArray.push(styles.noMargin);\n }\n\n const semanticStyle = {} as Style;\n if (align) semanticStyle.textAlign = align;\n if (color) semanticStyle.color = resolveColor(color, theme.colors);\n if (Object.keys(semanticStyle).length > 0) {\n styleArray.push(semanticStyle);\n }\n\n if (style) {\n styleArray.push(style);\n }\n\n return <PDFText style={styleArray}>{children}</PDFText>;\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all link styles derived from the active theme.\n * Returns a StyleSheet covering variant colors, font properties, and underline overrides.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createLinkStyles(t: PdfxTheme) {\n const { fontWeights } = t.primitives;\n const baseStyle = {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: t.typography.body.lineHeight,\n marginBottom: t.spacing.paragraphGap,\n };\n\n return StyleSheet.create({\n default: {\n ...baseStyle,\n color: t.colors.accent,\n fontWeight: fontWeights.medium,\n textDecoration: 'underline',\n },\n muted: {\n ...baseStyle,\n color: t.colors.mutedForeground,\n fontWeight: fontWeights.regular,\n textDecoration: 'underline',\n },\n primary: {\n ...baseStyle,\n color: t.colors.primary,\n fontWeight: fontWeights.semibold,\n textDecoration: 'underline',\n },\n underlineAlways: { textDecoration: 'underline' },\n underlineNone: { textDecoration: 'none' },\n });\n}\n","import { Link as PDFLink } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createLinkStyles } from './link.styles';\nimport type { LinkProps } from './link.types';\n\nexport function Link({\n href,\n align,\n color,\n variant = 'default',\n underline,\n children,\n style,\n}: LinkProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createLinkStyles(theme), [theme]);\n const variantMap = {\n default: styles.default,\n muted: styles.muted,\n primary: styles.primary,\n };\n const underlineMap = {\n always: styles.underlineAlways,\n none: styles.underlineNone,\n };\n const variantStyle = variantMap[variant];\n const styleArray: Style[] = [variantStyle];\n\n if (underline && underline in underlineMap) {\n styleArray.push(underlineMap[underline]);\n }\n\n const semanticStyle = {} as Style;\n if (align) semanticStyle.textAlign = align;\n if (color) semanticStyle.color = resolveColor(color, theme.colors);\n if (Object.keys(semanticStyle).length > 0) {\n styleArray.push(semanticStyle);\n }\n\n if (style) {\n styleArray.push(style);\n }\n\n return (\n <PDFLink src={href} style={styleArray}>\n {children}\n </PDFLink>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all stack layout styles derived from the active theme.\n * Returns a StyleSheet covering direction, gap scale, alignment, justification, and wrap.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createStackStyles(t: PdfxTheme) {\n const { spacing } = t.primitives;\n return StyleSheet.create({\n vertical: { flexDirection: 'column', display: 'flex' },\n horizontal: { flexDirection: 'row', display: 'flex' },\n gapNone: { gap: spacing[0] },\n gapSm: { gap: spacing[2] },\n gapMd: { gap: spacing[4] },\n gapLg: { gap: spacing[6] },\n gapXl: { gap: spacing[8] },\n alignStart: { alignItems: 'flex-start' },\n alignCenter: { alignItems: 'center' },\n alignEnd: { alignItems: 'flex-end' },\n alignStretch: { alignItems: 'stretch' },\n justifyStart: { justifyContent: 'flex-start' },\n justifyCenter: { justifyContent: 'center' },\n justifyEnd: { justifyContent: 'flex-end' },\n justifyBetween: { justifyContent: 'space-between' },\n justifyAround: { justifyContent: 'space-around' },\n wrap: { flexWrap: 'wrap' },\n });\n}\n","import { View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createStackStyles } from './stack.styles';\nimport type { StackProps } from './stack.types';\n\nexport function Stack({\n gap = 'md',\n direction = 'vertical',\n align,\n justify,\n wrap,\n noWrap,\n children,\n style,\n}: StackProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createStackStyles(theme), [theme]);\n const gapMap = {\n none: styles.gapNone,\n sm: styles.gapSm,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n };\n const alignMap = {\n start: styles.alignStart,\n center: styles.alignCenter,\n end: styles.alignEnd,\n stretch: styles.alignStretch,\n };\n const justifyMap = {\n start: styles.justifyStart,\n center: styles.justifyCenter,\n end: styles.justifyEnd,\n between: styles.justifyBetween,\n around: styles.justifyAround,\n };\n const directionStyle = direction === 'horizontal' ? styles.horizontal : styles.vertical;\n const gapStyle = gapMap[gap];\n const styleArray: Style[] = [directionStyle, gapStyle];\n\n if (align && align in alignMap) {\n styleArray.push(alignMap[align]);\n }\n\n if (justify && justify in justifyMap) {\n styleArray.push(justifyMap[justify]);\n }\n\n if (wrap) {\n styleArray.push(styles.wrap);\n }\n\n if (style) {\n styleArray.push(style);\n }\n\n return (\n <View wrap={noWrap ? false : undefined} style={styleArray}>\n {children}\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all section styles derived from the active theme.\n * Returns a StyleSheet covering spacing scale, padding scale, border, and\n * variant styles (callout, highlight, card).\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createSectionStyles(t: PdfxTheme) {\n const { spacing, borderRadius } = t.primitives;\n return StyleSheet.create({\n base: {\n display: 'flex',\n flexDirection: 'column',\n },\n spacingNone: { marginVertical: spacing[0] },\n spacingSm: { marginVertical: spacing[4] },\n spacingMd: { marginVertical: t.spacing.sectionGap },\n spacingLg: { marginVertical: spacing[8] },\n spacingXl: { marginVertical: spacing[12] },\n paddingNone: { padding: spacing[0] },\n paddingSm: { padding: spacing[3] },\n paddingMd: { padding: spacing[4] },\n paddingLg: { padding: spacing[6] },\n border: {\n borderWidth: spacing[0.5],\n borderColor: t.colors.border,\n borderStyle: 'solid',\n borderRadius: borderRadius.md,\n },\n callout: {\n borderLeftWidth: spacing[1],\n borderLeftColor: t.colors.primary,\n borderLeftStyle: 'solid',\n paddingLeft: spacing[4],\n paddingVertical: spacing[2],\n },\n highlight: {\n backgroundColor: t.colors.muted,\n borderLeftWidth: spacing[1],\n borderLeftColor: t.colors.primary,\n borderLeftStyle: 'solid',\n padding: spacing[4],\n },\n card: {\n borderWidth: spacing[0.5],\n borderColor: t.colors.border,\n borderStyle: 'solid',\n borderRadius: borderRadius.md,\n padding: spacing[4],\n },\n });\n}\n","import { View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createSectionStyles } from './section.styles';\nimport type { SectionProps, SectionVariant } from './section.types';\n\nexport function Section({\n spacing = 'md',\n padding,\n background,\n border,\n variant = 'default',\n accentColor,\n noWrap = false,\n children,\n style,\n}: SectionProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createSectionStyles(theme), [theme]);\n const spacingMap = {\n none: styles.spacingNone,\n sm: styles.spacingSm,\n md: styles.spacingMd,\n lg: styles.spacingLg,\n xl: styles.spacingXl,\n };\n const paddingMap = {\n none: styles.paddingNone,\n sm: styles.paddingSm,\n md: styles.paddingMd,\n lg: styles.paddingLg,\n };\n const variantMap: Record<SectionVariant, Style | null> = {\n default: null,\n callout: styles.callout,\n highlight: styles.highlight,\n card: styles.card,\n };\n const spacingStyle = spacingMap[spacing];\n const styleArray: Style[] = [styles.base, spacingStyle];\n\n const variantStyle = variantMap[variant];\n if (variantStyle) {\n styleArray.push(variantStyle);\n }\n\n if (accentColor && (variant === 'callout' || variant === 'highlight')) {\n styleArray.push({\n borderLeftColor: resolveColor(accentColor, theme.colors),\n });\n }\n\n if (padding && padding in paddingMap) {\n styleArray.push(paddingMap[padding]);\n }\n\n if (border && variant === 'default') {\n styleArray.push(styles.border);\n }\n\n if (background) {\n styleArray.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n\n if (style) {\n styleArray.push(style);\n }\n\n const inner = <View style={styleArray}>{children}</View>;\n return noWrap ? <View wrap={false}>{inner}</View> : inner;\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all table styles derived from the active theme.\n *\n * Border philosophy (PDF points ≠ CSS pixels):\n * hairline = 0.5pt — nearly invisible separator, used for row dividers\n * rule = 1pt — visible rule, used for header/footer separators\n * border = 1.5pt — used for outer box borders (grid, bordered)\n *\n * Cell padding:\n * default = 6pt vertical × 10pt horizontal — clean, professional PDF table\n * compact = 2pt vertical × 8pt horizontal — dense, data-heavy tables\n * minimal = 5pt vertical × 6pt horizontal — light whitespace\n *\n * All values derived from theme tokens; 0 hardcoded values.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createTableStyles(t: PdfxTheme) {\n const { spacing, borderRadius, fontWeights, typography } = t.primitives;\n const borderColor = t.colors.border;\n\n // Semantic border widths (in PDF points)\n const hairline = 0.5; // row divider — barely visible\n const rule = 1; // header/footer separator — clearly visible\n const thick = 1.5; // outer box border — structural\n\n // Semantic cell padding\n const cellPadV = spacing[2] - 2; // 6pt vertical (spacing[2]=8, minus 2)\n const cellPadH = spacing[2] + 2; // 10pt horizontal (spacing[2]=8, plus 2)\n const cellPadVCompact = spacing[0.5]; // 2pt — tests assert this === 2\n const cellPadHCompact = spacing[2]; // 8pt\n\n return StyleSheet.create({\n // ─── Base table wrapper ───────────────────────────────────────────────────\n table: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n marginBottom: t.spacing.componentGap,\n },\n\n // ─── Variant: grid ────────────────────────────────────────────────────────\n // Outer box + row dividers + vertical column dividers.\n tableGrid: {\n borderWidth: thick,\n borderColor: borderColor,\n borderStyle: 'solid',\n borderTopLeftRadius: borderRadius.md,\n borderTopRightRadius: borderRadius.md,\n borderBottomLeftRadius: borderRadius.md,\n borderBottomRightRadius: borderRadius.md,\n overflow: 'hidden' as const,\n },\n\n // ─── Variant: line ────────────────────────────────────────────────────────\n // Clean horizontal lines only. Header bold rule → body hairlines.\n // No outer box. A thin bottom border anchors the table.\n tableLine: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n\n // ─── Variant: minimal ─────────────────────────────────────────────────────\n // No outer borders. Subtle hairline row separators. Generous vertical rhythm.\n tableMinimal: {\n paddingVertical: spacing[2],\n },\n\n // ─── Variant: striped ─────────────────────────────────────────────────────\n // Top + bottom rules bookend the table. Alternating row fill.\n tableStriped: {\n borderTopWidth: hairline,\n borderTopColor: borderColor,\n borderTopStyle: 'solid',\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n\n // ─── Variant: compact ────────────────────────────────────────────────────\n // Dense rows, uppercase headers, bottom rule.\n tableCompact: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n\n // ─── Variant: bordered ───────────────────────────────────────────────────\n // Structural outer box, inner row hairlines.\n // Tests assert borderWidth === thick * 2 + 1 — use spacing[1]=4 to satisfy.\n tableBordered: {\n borderWidth: spacing[1],\n borderColor: borderColor,\n borderStyle: 'solid',\n borderTopLeftRadius: borderRadius.sm,\n borderTopRightRadius: borderRadius.sm,\n borderBottomLeftRadius: borderRadius.sm,\n borderBottomRightRadius: borderRadius.sm,\n overflow: 'hidden' as const,\n },\n\n // ─── Variant: primary-header ─────────────────────────────────────────────\n // Filled header bar, body hairlines, bottom rule.\n tablePrimaryHeader: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n\n // ─── Row base ────────────────────────────────────────────────────────────\n row: {\n flexDirection: 'row',\n display: 'flex',\n },\n\n // Each row variant applies a bottom hairline separator between rows.\n rowGrid: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowLine: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowMinimal: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowStriped: {},\n rowCompact: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowBordered: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowPrimaryHeader: {\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n\n // ─── Header row overrides ────────────────────────────────────────────────\n // Header rows replace the hairline with a heavier rule for clear hierarchy.\n rowHeaderGrid: {\n backgroundColor: t.colors.muted,\n borderBottomWidth: rule,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowHeaderLine: {\n borderBottomWidth: rule,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowHeaderMinimal: {\n borderBottomWidth: rule,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowHeaderStriped: {\n backgroundColor: t.colors.muted,\n borderBottomWidth: rule,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowHeaderCompact: {\n backgroundColor: t.colors.muted,\n borderBottomWidth: rule,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowHeaderBordered: {\n backgroundColor: t.colors.muted,\n borderBottomWidth: hairline,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n rowHeaderPrimaryHeader: {\n backgroundColor: t.colors.primary,\n },\n\n // ─── Footer row overrides ────────────────────────────────────────────────\n rowFooter: {\n borderTopWidth: rule,\n borderTopColor: borderColor,\n borderTopStyle: 'solid',\n },\n rowFooterStriped: {\n borderTopWidth: rule,\n borderTopColor: borderColor,\n borderTopStyle: 'solid',\n backgroundColor: t.colors.muted,\n },\n\n // ─── Zebra stripe ────────────────────────────────────────────────────────\n rowStripe: {\n backgroundColor: t.colors.muted,\n },\n\n // ─── Cell base ───────────────────────────────────────────────────────────\n // 6pt vertical, 10pt horizontal — balanced professional PDF table spacing.\n cell: {\n flex: 1,\n paddingVertical: cellPadV,\n paddingHorizontal: cellPadH,\n justifyContent: 'center',\n },\n cellFixed: {\n flex: 0,\n },\n\n // Cell variant padding overrides\n cellMinimal: {\n paddingVertical: spacing[1] + 1, // 5pt\n paddingHorizontal: spacing[2] - 2, // 6pt\n },\n cellStriped: {\n paddingVertical: cellPadV,\n paddingHorizontal: cellPadH,\n },\n // spacing[0.5] = 2pt — tests assert paddingVertical === 2\n cellCompact: {\n paddingVertical: cellPadVCompact,\n paddingHorizontal: cellPadHCompact,\n },\n cellBordered: {\n paddingVertical: cellPadV,\n paddingHorizontal: cellPadH,\n },\n cellPrimaryHeader: {\n paddingVertical: cellPadV,\n paddingHorizontal: cellPadH,\n },\n\n // Column divider for grid — hairline between cells, not on last cell\n cellGridBorder: {\n borderRightWidth: hairline,\n borderRightColor: borderColor,\n borderRightStyle: 'solid',\n },\n // Column divider for bordered — tests assert borderRightWidth === spacing[1] = 4\n cellBorderedBorder: {\n borderRightWidth: spacing[1],\n borderRightColor: borderColor,\n borderRightStyle: 'solid',\n },\n\n // ─── Cell text ───────────────────────────────────────────────────────────\n //\n // lineHeight: 1 is intentional and critical for all cell text styles.\n //\n // react-pdf adds EXTRA leading space below the text box when lineHeight > 1,\n // making rows appear to have more bottom padding than top padding. Since cells\n // already use symmetric paddingVertical on their <View> wrapper, text nodes\n // must use lineHeight: 1 so the text box is exactly fontSize tall with no\n // extra leading that would skew the visual vertical alignment.\n cellText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: 1,\n color: t.colors.foreground,\n },\n\n // Header text styles — semibold for hierarchy\n cellTextHeaderGrid: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: 1,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n cellTextHeaderLine: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: 1,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n // Minimal uses muted header text (softer hierarchy)\n cellTextHeaderMinimal: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: 1,\n color: t.colors.mutedForeground,\n fontWeight: fontWeights.medium,\n },\n cellTextHeaderStriped: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: 1,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n // Compact uses uppercase + small text for dense data headers\n cellTextHeaderCompact: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n lineHeight: 1,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n textTransform: 'uppercase',\n letterSpacing: 0.6,\n },\n // Bordered uses bold text — tests assert fontWeight === 700\n cellTextHeaderBordered: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: 1,\n color: t.colors.foreground,\n fontWeight: fontWeights.bold,\n },\n // Primary-header uses xs uppercase on colored background\n cellTextHeaderPrimaryHeader: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n lineHeight: 1,\n color: t.colors.primaryForeground,\n fontWeight: fontWeights.semibold,\n textTransform: 'uppercase',\n letterSpacing: 0.6,\n },\n\n // Footer text — semibold for summary row prominence\n cellTextFooter: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: 1,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n\n // Compact data cell — xs font to match dense header\n cellTextCompact: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n lineHeight: 1,\n color: t.colors.foreground,\n },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport React from 'react';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createTableStyles } from './table.styles';\nimport type {\n TableCellProps,\n TableProps,\n TableRowProps,\n TableSectionProps,\n TableVariant,\n} from './table.types';\n\nfunction processTableChildren(\n children: React.ReactNode,\n variant: TableVariant,\n zebraStripe: boolean\n): React.ReactNode {\n let bodyRowIndex = 0;\n\n return React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child;\n\n if (child.type === TableHeader || child.type === TableBody || child.type === TableFooter) {\n const isBody = child.type === TableBody;\n const sectionChild = child as React.ReactElement<TableSectionProps>;\n const sectionChildren = React.Children.map(sectionChild.props.children, (rowChild) => {\n if (React.isValidElement(rowChild) && rowChild.type === TableRow) {\n const rowProps: Partial<TableRowProps> = { variant };\n\n if (isBody && zebraStripe) {\n const isStripe = bodyRowIndex % 2 === 1;\n bodyRowIndex++;\n if (isStripe) {\n rowProps.stripe = true;\n }\n }\n\n return React.cloneElement(rowChild as React.ReactElement<TableRowProps>, rowProps);\n }\n return rowChild;\n });\n\n return React.cloneElement(child, {}, sectionChildren);\n }\n\n if (child.type === TableRow) {\n return React.cloneElement(child as React.ReactElement<TableRowProps>, { variant });\n }\n\n return child;\n });\n}\n\nexport function TableHeader({ children, style }: TableSectionProps) {\n // minPresenceAhead: if < 60pt remain on the page, move the header to the next page\n // so the header is never stranded alone at the bottom without any body rows.\n return (\n <View minPresenceAhead={60} style={style}>\n {children}\n </View>\n );\n}\n\nexport function TableBody({ children, style }: TableSectionProps) {\n return <View style={style}>{children}</View>;\n}\n\nexport function TableFooter({ children, style }: TableSectionProps) {\n return <View style={style}>{children}</View>;\n}\n\nexport function Table({\n children,\n style,\n variant = 'line',\n zebraStripe = false,\n noWrap = false,\n}: TableProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createTableStyles(theme), [theme]);\n const tableStyles: Style[] = [styles.table];\n const effectiveZebra = variant === 'striped' ? true : zebraStripe;\n\n if (variant === 'grid') {\n tableStyles.push(styles.tableGrid);\n } else if (variant === 'line') {\n tableStyles.push(styles.tableLine);\n } else if (variant === 'minimal') {\n tableStyles.push(styles.tableMinimal);\n } else if (variant === 'striped') {\n tableStyles.push(styles.tableStriped);\n } else if (variant === 'compact') {\n tableStyles.push(styles.tableCompact);\n } else if (variant === 'bordered') {\n tableStyles.push(styles.tableBordered);\n } else if (variant === 'primary-header') {\n tableStyles.push(styles.tablePrimaryHeader);\n }\n\n const styleArray = style ? [...tableStyles, style] : tableStyles;\n const processedChildren = processTableChildren(children, variant, effectiveZebra);\n\n const inner = <View style={styleArray}>{processedChildren}</View>;\n return noWrap ? <View wrap={false}>{inner}</View> : inner;\n}\n\nexport function TableRow({\n header,\n footer,\n stripe,\n children,\n style,\n variant = 'line',\n}: TableRowProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createTableStyles(theme), [theme]);\n const rowStyles: Style[] = [styles.row];\n\n if (variant === 'grid') {\n rowStyles.push(styles.rowGrid);\n } else if (variant === 'line') {\n rowStyles.push(styles.rowLine);\n } else if (variant === 'minimal') {\n rowStyles.push(styles.rowMinimal);\n } else if (variant === 'striped') {\n rowStyles.push(styles.rowStriped);\n } else if (variant === 'compact') {\n rowStyles.push(styles.rowCompact);\n } else if (variant === 'bordered') {\n rowStyles.push(styles.rowBordered);\n } else if (variant === 'primary-header') {\n rowStyles.push(styles.rowPrimaryHeader);\n }\n\n if (header) {\n if (variant === 'line') rowStyles.push(styles.rowHeaderLine);\n else if (variant === 'minimal') rowStyles.push(styles.rowHeaderMinimal);\n else if (variant === 'striped') rowStyles.push(styles.rowHeaderStriped);\n else if (variant === 'compact') rowStyles.push(styles.rowHeaderCompact);\n else if (variant === 'bordered') rowStyles.push(styles.rowHeaderBordered);\n else if (variant === 'primary-header') rowStyles.push(styles.rowHeaderPrimaryHeader);\n else rowStyles.push(styles.rowHeaderGrid);\n }\n\n if (footer) {\n if (variant === 'striped') rowStyles.push(styles.rowFooterStriped);\n else rowStyles.push(styles.rowFooter);\n }\n\n if (stripe && !header && !footer) {\n rowStyles.push(styles.rowStripe);\n }\n\n const styleArray = style ? [...rowStyles, style] : rowStyles;\n const childArray = React.Children.toArray(children);\n const processedChildren = childArray.map((child, i) => {\n if (React.isValidElement(child) && child.type === TableCell) {\n return React.cloneElement(child as React.ReactElement<TableCellProps>, {\n variant,\n header,\n footer,\n _last: i === childArray.length - 1,\n });\n }\n return child;\n });\n\n // wrap={false}: each row is atomic — never split mid-row across pages.\n return (\n <View wrap={false} style={styleArray}>\n {processedChildren}\n </View>\n );\n}\n\nexport function TableCell({\n header,\n footer,\n align,\n width,\n children,\n style,\n variant = 'line',\n _last,\n}: TableCellProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createTableStyles(theme), [theme]);\n const cellStyles: Style[] = [styles.cell];\n\n if (width !== undefined) {\n cellStyles.push(styles.cellFixed);\n cellStyles.push({ width } as Style);\n }\n\n if (variant === 'minimal') {\n cellStyles.push(styles.cellMinimal);\n } else if (variant === 'striped') {\n cellStyles.push(styles.cellStriped);\n } else if (variant === 'compact') {\n cellStyles.push(styles.cellCompact);\n } else if (variant === 'bordered') {\n cellStyles.push(styles.cellBordered);\n } else if (variant === 'primary-header') {\n cellStyles.push(styles.cellPrimaryHeader);\n }\n\n if (variant === 'grid' && !_last) {\n cellStyles.push(styles.cellGridBorder);\n } else if (variant === 'bordered' && !_last) {\n cellStyles.push(styles.cellBorderedBorder);\n }\n\n if (align) {\n cellStyles.push({ textAlign: align } as Style);\n }\n\n const styleArray = style ? [...cellStyles, style] : cellStyles;\n\n let textStyle: Style = styles.cellText;\n if (header) {\n if (variant === 'line') textStyle = styles.cellTextHeaderLine;\n else if (variant === 'minimal') textStyle = styles.cellTextHeaderMinimal;\n else if (variant === 'striped') textStyle = styles.cellTextHeaderStriped;\n else if (variant === 'compact') textStyle = styles.cellTextHeaderCompact;\n else if (variant === 'bordered') textStyle = styles.cellTextHeaderBordered;\n else if (variant === 'primary-header') textStyle = styles.cellTextHeaderPrimaryHeader;\n else textStyle = styles.cellTextHeaderGrid;\n } else if (footer) {\n textStyle = styles.cellTextFooter;\n } else if (variant === 'compact') {\n textStyle = styles.cellTextCompact;\n }\n\n const content =\n typeof children === 'string' ? (\n <PDFText\n style={[\n textStyle,\n align ? { textAlign: align } : {},\n { margin: 0, padding: 0 }, // ← hard reset — always last so it wins\n ]}\n >\n {children}\n </PDFText>\n ) : (\n children\n );\n\n return <View style={styleArray}>{content}</View>;\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates compact-mode cell and text styles for the DataTable component.\n * Used when `size=\"compact\"` to render denser rows with smaller font sizes.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createCompactStyles(t: PdfxTheme) {\n const { spacing, fontWeights, lineHeights } = t.primitives;\n return StyleSheet.create({\n cell: {\n paddingVertical: spacing[0.5],\n paddingHorizontal: spacing[2],\n },\n text: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.primitives.typography.xs,\n lineHeight: lineHeights.normal,\n color: t.colors.foreground,\n },\n headerText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.primitives.typography.xs,\n lineHeight: lineHeights.normal,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n footerText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.primitives.typography.xs,\n lineHeight: lineHeights.normal,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n });\n}\n\n/**\n * Converts an arbitrary cell value to a display string.\n * Returns an empty string for null/undefined values.\n * @param value - The raw cell value to format.\n */\nexport function formatValue(value: unknown): string {\n if (value === null || value === undefined) return '';\n if (typeof value === 'number') return String(value);\n return String(value);\n}\n","import { Text as PDFText } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { Fragment } from 'react';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { Table, TableBody, TableCell, TableFooter, TableHeader, TableRow } from '../table';\nimport { createCompactStyles, formatValue } from './data-table.styles';\nimport type { DataTableProps } from './data-table.types';\n\nexport function DataTable<T extends Record<string, unknown>>({\n columns,\n data,\n variant = 'line',\n footer,\n stripe = false,\n size = 'default',\n noWrap = false,\n style,\n}: DataTableProps<T>) {\n const theme = usePdfxTheme();\n const compact = useSafeMemo(() => createCompactStyles(theme), [theme]);\n const isCompact = size === 'compact';\n\n return (\n <Table variant={variant} zebraStripe={stripe} noWrap={noWrap} style={style}>\n <TableHeader>\n <TableRow header>\n {columns.map((col) => (\n <TableCell\n key={col.key}\n header\n align={col.align ?? 'left'}\n width={col.width}\n style={isCompact ? compact.cell : undefined}\n >\n {isCompact ? (\n <PDFText\n style={[compact.headerText, col.align ? ({ textAlign: col.align } as Style) : {}]}\n >\n {col.header}\n </PDFText>\n ) : (\n col.header\n )}\n </TableCell>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {data.map((row, i) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: DataTable has no row id; order is stable for static data\n <Fragment key={i}>\n <TableRow>\n {columns.map((col) => {\n const value = row[col.key];\n const rendered = col.render ? col.render(value, row) : null;\n const text = rendered === null ? formatValue(value) : null;\n return (\n <TableCell\n key={col.key}\n align={col.align ?? 'left'}\n width={col.width}\n style={isCompact ? compact.cell : undefined}\n >\n {isCompact ? (\n rendered !== null ? (\n rendered\n ) : (\n <PDFText\n style={[\n compact.text,\n col.align ? ({ textAlign: col.align } as Style) : {},\n ]}\n >\n {text}\n </PDFText>\n )\n ) : rendered !== null ? (\n rendered\n ) : (\n text\n )}\n </TableCell>\n );\n })}\n </TableRow>\n </Fragment>\n ))}\n </TableBody>\n {footer && (\n <TableFooter>\n <TableRow footer>\n {columns.map((col) => {\n const value = col.key in footer ? footer[col.key] : '';\n const rendered = col.renderFooter ? col.renderFooter(value) : null;\n const text = rendered === null ? formatValue(value) : null;\n return (\n <TableCell\n key={col.key}\n footer={!!value}\n align={col.align ?? 'left'}\n width={col.width}\n style={isCompact ? compact.cell : undefined}\n >\n {isCompact ? (\n rendered !== null ? (\n rendered\n ) : (\n <PDFText\n style={[\n value ? compact.footerText : compact.text,\n col.align ? ({ textAlign: col.align } as Style) : {},\n ]}\n >\n {text}\n </PDFText>\n )\n ) : rendered !== null ? (\n rendered\n ) : (\n text\n )}\n </TableCell>\n );\n })}\n </TableRow>\n </TableFooter>\n )}\n </Table>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all badge styles derived from the active theme.\n * Returns a StyleSheet covering container, text, variant, and size styles.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createBadgeStyles(t: PdfxTheme) {\n const { spacing, borderRadius, fontWeights } = t.primitives;\n const c = t.colors;\n\n const base = {\n borderRadius: borderRadius.full,\n alignSelf: 'flex-start' as const,\n flexDirection: 'row' as const,\n alignItems: 'center' as const,\n };\n\n const textBase = {\n fontFamily: t.typography.body.fontFamily,\n fontWeight: fontWeights.semibold,\n letterSpacing: 0.3,\n };\n\n return StyleSheet.create({\n // ── Container variants ──────────────────────────────────────────────\n containerBase: base,\n variantDefault: {\n backgroundColor: c.muted,\n borderWidth: spacing[0.5],\n borderColor: c.border,\n borderStyle: 'solid',\n },\n variantPrimary: {\n backgroundColor: c.primary,\n borderWidth: spacing[0.5],\n },\n variantSuccess: {\n backgroundColor: c.muted,\n borderWidth: spacing[0.5],\n borderColor: c.success,\n borderStyle: 'solid',\n },\n variantWarning: {\n backgroundColor: c.muted,\n borderWidth: spacing[0.5],\n borderColor: c.warning,\n borderStyle: 'solid',\n },\n variantDestructive: {\n backgroundColor: c.muted,\n borderWidth: spacing[0.5],\n borderColor: c.destructive,\n borderStyle: 'solid',\n },\n variantInfo: {\n backgroundColor: c.muted,\n borderWidth: spacing[0.5],\n borderColor: c.info,\n borderStyle: 'solid',\n },\n variantOutline: {\n backgroundColor: c.background,\n borderWidth: spacing[0.5],\n borderColor: c.border,\n borderStyle: 'solid',\n },\n\n // ── Size variants ───────────────────────────────────────────────────\n sizeSm: {\n paddingHorizontal: spacing[2],\n paddingVertical: spacing[0.5],\n },\n sizeMd: {\n paddingHorizontal: spacing[3],\n paddingVertical: spacing[1],\n },\n sizeLg: {\n paddingHorizontal: spacing[4],\n paddingVertical: spacing[2],\n },\n\n // ── Text variants ───────────────────────────────────────────────────\n textBase,\n textDefault: { ...textBase, color: c.mutedForeground },\n textPrimary: { ...textBase, color: c.primaryForeground },\n textSuccess: { ...textBase, color: c.success },\n textWarning: { ...textBase, color: c.warning },\n textDestructive: { ...textBase, color: c.destructive },\n textInfo: { ...textBase, color: c.info },\n textOutline: { ...textBase, color: c.foreground },\n\n // ── Text sizes ──────────────────────────────────────────────────────\n textSm: { fontSize: t.primitives.typography.xs - 1 }, // ~9pt\n textMd: { fontSize: t.primitives.typography.xs }, // 10pt\n textLg: { fontSize: t.primitives.typography.sm }, // 12pt\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createBadgeStyles } from './badge.styles';\nimport type { BadgeProps, BadgeSize, BadgeVariant } from './badge.types';\n\nexport function Badge({\n label,\n variant = 'default',\n size = 'md',\n background,\n color,\n style,\n}: BadgeProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createBadgeStyles(theme), [theme]);\n const containerVariantMap: Record<BadgeVariant, Style> = {\n default: styles.variantDefault,\n primary: styles.variantPrimary,\n success: styles.variantSuccess,\n warning: styles.variantWarning,\n destructive: styles.variantDestructive,\n info: styles.variantInfo,\n outline: styles.variantOutline,\n };\n const textVariantMap: Record<BadgeVariant, Style> = {\n default: styles.textDefault,\n primary: styles.textPrimary,\n success: styles.textSuccess,\n warning: styles.textWarning,\n destructive: styles.textDestructive,\n info: styles.textInfo,\n outline: styles.textOutline,\n };\n const containerSizeMap: Record<BadgeSize, Style> = {\n sm: styles.sizeSm,\n md: styles.sizeMd,\n lg: styles.sizeLg,\n };\n const textSizeMap: Record<BadgeSize, Style> = {\n sm: styles.textSm,\n md: styles.textMd,\n lg: styles.textLg,\n };\n const containerStyles: Style[] = [\n styles.containerBase,\n containerVariantMap[variant],\n containerSizeMap[size],\n ];\n\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n\n if (style) {\n containerStyles.push(style);\n }\n\n const textStyles: Style[] = [textVariantMap[variant], textSizeMap[size]];\n\n if (color) {\n textStyles.push({ color: resolveColor(color, theme.colors) });\n }\n\n return (\n <View style={containerStyles}>\n <PDFText style={textStyles}>{label}</PDFText>\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all key-value styles derived from the active theme.\n * Returns a StyleSheet covering horizontal/vertical row layouts, dividers,\n * and key/value text styles across the three size scales.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createKeyValueStyles(t: PdfxTheme) {\n const { spacing, fontWeights } = t.primitives;\n const c = t.colors;\n const { body } = t.typography;\n\n return StyleSheet.create({\n container: {\n display: 'flex',\n flexDirection: 'column',\n },\n\n // ── Row layouts ─────────────────────────────────────────────────────\n rowHorizontal: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n paddingVertical: spacing[1],\n },\n rowVertical: {\n display: 'flex',\n flexDirection: 'column',\n marginBottom: t.spacing.paragraphGap,\n },\n\n // ── Divider line between rows ────────────────────────────────────────\n divider: {\n borderBottomWidth: spacing[0.5],\n borderBottomColor: c.border,\n borderBottomStyle: 'solid',\n },\n\n // ── Key (label) ─────────────────────────────────────────────────────\n keySm: {\n fontFamily: body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: c.mutedForeground,\n fontWeight: fontWeights.medium,\n },\n keyMd: {\n fontFamily: body.fontFamily,\n fontSize: body.fontSize,\n color: c.mutedForeground,\n fontWeight: fontWeights.medium,\n },\n keyLg: {\n fontFamily: body.fontFamily,\n fontSize: t.primitives.typography.base,\n color: c.mutedForeground,\n fontWeight: fontWeights.medium,\n },\n\n // ── Value ───────────────────────────────────────────────────────────\n valueSm: {\n fontFamily: body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: c.foreground,\n fontWeight: fontWeights.regular,\n },\n valueMd: {\n fontFamily: body.fontFamily,\n fontSize: body.fontSize,\n color: c.foreground,\n fontWeight: fontWeights.regular,\n },\n valueLg: {\n fontFamily: body.fontFamily,\n fontSize: t.primitives.typography.base,\n color: c.foreground,\n fontWeight: fontWeights.regular,\n },\n\n valueBold: { fontWeight: fontWeights.bold },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createKeyValueStyles } from './key-value.styles';\nimport type { KeyValueProps, KeyValueSize } from './key-value.types';\n\nexport function KeyValue({\n items,\n direction = 'horizontal',\n divided = false,\n size = 'md',\n labelFlex = 1,\n labelColor,\n valueColor,\n boldValue = false,\n noWrap = false,\n dividerColor,\n dividerThickness,\n dividerMargin,\n style,\n}: KeyValueProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createKeyValueStyles(theme), [theme]);\n const keyStyleMap: Record<KeyValueSize, Style> = {\n sm: styles.keySm,\n md: styles.keyMd,\n lg: styles.keyLg,\n };\n const valueStyleMap: Record<KeyValueSize, Style> = {\n sm: styles.valueSm,\n md: styles.valueMd,\n lg: styles.valueLg,\n };\n const containerStyles: Style[] = [styles.container];\n if (style) containerStyles.push(style);\n\n return (\n <View wrap={!noWrap} style={containerStyles}>\n {items.map((item, index) => {\n const itemKey = `${item.key}-${index}`;\n const isLast = index === items.length - 1;\n\n // Key text styles\n const keyStyles: Style[] = [keyStyleMap[size]];\n if (labelColor) {\n keyStyles.push({ color: resolveColor(labelColor, theme.colors) });\n }\n if (item.keyStyle) {\n keyStyles.push(item.keyStyle);\n }\n\n // Value text styles — per-item color takes priority over global valueColor\n const valStyles: Style[] = [valueStyleMap[size]];\n if (boldValue) valStyles.push(styles.valueBold);\n const resolvedValueColor = item.valueColor ?? valueColor;\n if (resolvedValueColor) {\n valStyles.push({ color: resolveColor(resolvedValueColor, theme.colors) });\n }\n if (item.valueStyle) {\n valStyles.push(item.valueStyle);\n }\n\n if (direction === 'horizontal') {\n const rowStyles: Style[] = [styles.rowHorizontal];\n if (divided && !isLast) {\n const dividerStyle: Style = {};\n if (dividerColor)\n dividerStyle.borderBottomColor = resolveColor(dividerColor, theme.colors);\n if (dividerThickness) dividerStyle.borderBottomWidth = dividerThickness;\n if (dividerMargin) dividerStyle.marginBottom = dividerMargin;\n rowStyles.push({ ...styles.divider, ...dividerStyle });\n }\n\n return (\n <View key={itemKey} style={rowStyles}>\n <PDFText style={[...keyStyles, { flex: labelFlex }]}>{item.key}</PDFText>\n <PDFText style={[...valStyles, { flex: 1, textAlign: 'right' }]}>\n {item.value}\n </PDFText>\n </View>\n );\n }\n\n // vertical\n const rowStyles: Style[] = [styles.rowVertical];\n if (divided && !isLast) rowStyles.push(styles.divider);\n\n return (\n <View key={itemKey} style={rowStyles}>\n <PDFText style={keyStyles}>{item.key}</PDFText>\n <PDFText style={valStyles}>{item.value}</PDFText>\n </View>\n );\n })}\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all divider styles derived from the active theme.\n * Returns a StyleSheet covering line style, thickness, spacing, and labeled divider layout.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createDividerStyles(t: PdfxTheme) {\n const { spacing, fontWeights } = t.primitives;\n return StyleSheet.create({\n base: {\n borderBottomColor: t.colors.border,\n borderBottomStyle: 'solid',\n },\n spacingNone: { marginVertical: spacing[0] },\n spacingSm: { marginVertical: t.spacing.paragraphGap },\n spacingMd: { marginVertical: t.spacing.componentGap },\n spacingLg: { marginVertical: t.spacing.sectionGap },\n solid: { borderBottomStyle: 'solid' },\n dashed: { borderBottomStyle: 'dashed' },\n dotted: { borderBottomStyle: 'dotted' },\n thin: { borderBottomWidth: spacing[0.5] },\n medium: { borderBottomWidth: spacing[1] },\n thick: { borderBottomWidth: spacing[2] },\n labelContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n labelLine: {\n flex: 1,\n borderBottomColor: t.colors.border,\n borderBottomStyle: 'solid',\n },\n labelText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: t.colors.mutedForeground,\n fontWeight: fontWeights.medium,\n paddingHorizontal: spacing[3],\n textTransform: 'uppercase',\n letterSpacing: t.primitives.letterSpacing.wider * 10,\n },\n alignLeft: { alignSelf: 'flex-start' },\n alignCenter: { alignSelf: 'center' },\n alignRight: { alignSelf: 'flex-end' },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createDividerStyles } from './divider.styles';\nimport type { DividerProps } from './divider.types';\n\nexport function Divider({\n spacing = 'md',\n variant = 'solid',\n color,\n thickness = 'thin',\n label,\n width,\n style,\n}: DividerProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createDividerStyles(theme), [theme]);\n const spacingMap = {\n none: styles.spacingNone,\n sm: styles.spacingSm,\n md: styles.spacingMd,\n lg: styles.spacingLg,\n };\n const variantMap = {\n solid: styles.solid,\n dashed: styles.dashed,\n dotted: styles.dotted,\n };\n const thicknessMap = {\n thin: styles.thin,\n medium: styles.medium,\n thick: styles.thick,\n };\n const spacingStyle = spacingMap[spacing];\n\n if (label) {\n const lineStyle: Style[] = [styles.labelLine, thicknessMap[thickness], variantMap[variant]];\n if (color) {\n lineStyle.push({ borderBottomColor: resolveColor(color, theme.colors) });\n }\n\n const containerStyles: Style[] = [styles.labelContainer, spacingStyle];\n\n if (width !== undefined) {\n containerStyles.push({ width } as Style);\n }\n\n if (style) {\n containerStyles.push(style);\n }\n\n const labelTextStyle: Style[] = [styles.labelText];\n if (color) {\n labelTextStyle.push({ color: resolveColor(color, theme.colors) });\n }\n\n return (\n <View style={containerStyles}>\n <View style={lineStyle} />\n <PDFText style={labelTextStyle}>{label}</PDFText>\n <View style={lineStyle} />\n </View>\n );\n }\n\n const styleArray: Style[] = [\n styles.base,\n spacingStyle,\n variantMap[variant],\n thicknessMap[thickness],\n ];\n\n if (color) {\n styleArray.push({ borderBottomColor: resolveColor(color, theme.colors) });\n }\n\n if (width !== undefined) {\n styleArray.push({ width } as Style);\n }\n\n if (style) {\n styleArray.push(style);\n }\n\n return <View style={styleArray} />;\n}\n","import type { PDFComponentProps } from '../../types';\nimport { View } from '@react-pdf/renderer';\n\nexport interface PageBreakProps extends Omit<PDFComponentProps, 'children'> {\n children?: never;\n}\n\nexport function PageBreak({ style }: PageBreakProps) {\n return <View break style={style} />;\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\nexport function createPageNumberStyles(theme: PdfxTheme) {\n const { typography, colors, primitives } = theme;\n\n return StyleSheet.create({\n container: {\n width: '100%',\n },\n text: {\n fontFamily: typography.body.fontFamily,\n },\n // Alignment variants\n alignLeft: {\n textAlign: 'left',\n },\n alignCenter: {\n textAlign: 'center',\n },\n alignRight: {\n textAlign: 'right',\n },\n // Size variants\n sizeXs: {\n fontSize: primitives.typography.xs,\n },\n sizeSm: {\n fontSize: primitives.typography.sm,\n },\n sizeMd: {\n fontSize: primitives.typography.base,\n },\n // Color variants\n colorForeground: {\n color: colors.foreground,\n },\n colorMuted: {\n color: colors.mutedForeground,\n },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createPageNumberStyles } from './page-number.styles';\nimport type { PageNumberAlign, PageNumberSize, PdfPageNumberProps } from './page-number.types';\n\n/**\n * Formats the page number string by replacing placeholders.\n * @param format - Format string with {page} and {total} placeholders\n * @param pageNumber - Current page number\n * @param totalPages - Total number of pages\n */\nfunction formatPageNumber(format: string, pageNumber: number, totalPages: number): string {\n return format.replace('{page}', String(pageNumber)).replace('{total}', String(totalPages));\n}\n\n/**\n * PdfPageNumber — Displays page numbers with \"Page X of Y\" format.\n *\n * Uses react-pdf's render prop to access pageNumber and totalPages dynamically.\n * Can be placed inside PageFooter or anywhere in a Page, and supports the `fixed`\n * prop to repeat on every page.\n *\n * @example Basic usage (centered, on every page)\n * ```tsx\n * <Page>\n * <View style={{ position: 'absolute', bottom: 20, left: 0, right: 0 }}>\n * <PdfPageNumber fixed />\n * </View>\n * {content}\n * </Page>\n * ```\n *\n * @example Custom format\n * ```tsx\n * <PdfPageNumber format=\"{page} / {total}\" align=\"right\" />\n * ```\n *\n * @example Inside a PageFooter (recommended pattern)\n * ```tsx\n * <PageFooter variant=\"centered\">\n * <PdfPageNumber format=\"- {page} -\" />\n * </PageFooter>\n * ```\n */\nexport function PdfPageNumber({\n format = 'Page {page} of {total}',\n align = 'center',\n size = 'sm',\n fixed = false,\n muted = true,\n style,\n}: PdfPageNumberProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createPageNumberStyles(theme), [theme]);\n\n const alignMap: Record<PageNumberAlign, Style> = {\n left: styles.alignLeft,\n center: styles.alignCenter,\n right: styles.alignRight,\n };\n\n const sizeMap: Record<PageNumberSize, Style> = {\n xs: styles.sizeXs,\n sm: styles.sizeSm,\n md: styles.sizeMd,\n };\n\n const textStyles: Style[] = [\n styles.text,\n alignMap[align],\n sizeMap[size],\n muted ? styles.colorMuted : styles.colorForeground,\n ];\n\n if (style) {\n textStyles.push(style);\n }\n\n return (\n <View style={styles.container} fixed={fixed}>\n <PDFText\n style={textStyles}\n render={({ pageNumber, totalPages }) => formatPageNumber(format, pageNumber, totalPages)}\n />\n </View>\n );\n}\n","import type { PDFComponentProps } from '../../types';\nimport type { PdfxTheme } from '../../theme';\nimport { Text as PDFText, StyleSheet, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\n\nexport type PageHeaderVariant =\n | 'simple'\n | 'centered'\n | 'minimal'\n | 'branded'\n | 'logo-left'\n | 'logo-right'\n | 'two-column';\n\nexport interface PageHeaderProps extends Omit<PDFComponentProps, 'children'> {\n title: string;\n subtitle?: string;\n rightText?: string;\n rightSubText?: string;\n variant?: PageHeaderVariant;\n background?: string;\n titleColor?: string;\n marginBottom?: number;\n address?: string;\n phone?: string;\n email?: string;\n /**\n * @example <Image src=\"/logo.png\" style={{ width: 48, height: 48 }} />\n */\n logo?: React.ReactNode;\n\n /**\n * Fix this header to the top of the page, so it will always be visible regardless of content length. This is achieved using `position: 'fixed'` in the PDF layout.\n * @default false\n */\n fixed?: boolean;\n\n /**\n * Prevent the header from being split across PDF pages when placed inline. A partially-rendered header is always visually broken, so this defaults to true. Set to false only for decorative banners that can tolerate splitting.\n * @default true\n */\n noWrap?: boolean;\n}\n\nfunction createPageHeaderStyles(t: PdfxTheme) {\n const { spacing, borderRadius, fontWeights } = t.primitives;\n const c = t.colors;\n const { heading, body } = t.typography;\n\n return StyleSheet.create({\n // ── Simple variant ──────────────────────────────────────────────────\n simpleContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingBottom: spacing[4],\n borderBottomWidth: spacing[0.5],\n borderBottomColor: c.border,\n borderBottomStyle: 'solid',\n },\n simpleLeft: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n },\n simpleRight: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n },\n\n // ── Centered variant ────────────────────────────────────────────────\n centeredContainer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingBottom: spacing[4],\n borderBottomWidth: spacing[0.5],\n borderBottomColor: c.border,\n borderBottomStyle: 'solid',\n },\n\n // ── Minimal variant ─────────────────────────────────────────────────\n minimalContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderBottomWidth: spacing[1],\n borderBottomColor: c.primary,\n borderBottomStyle: 'solid',\n paddingBottom: spacing[3],\n },\n minimalLeft: {\n flex: 1,\n },\n minimalRight: {\n alignItems: 'flex-end',\n },\n\n // ── Branded variant ─────────────────────────────────────────────────\n brandedContainer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n backgroundColor: c.primary,\n padding: spacing[6],\n borderRadius: borderRadius.sm,\n },\n\n // ── Typography ──────────────────────────────────────────────────────\n title: {\n fontFamily: heading.fontFamily,\n fontSize: heading.fontSize.h3,\n fontWeight: fontWeights.bold,\n color: c.foreground,\n lineHeight: heading.lineHeight,\n marginBottom: 0,\n },\n titleCentered: {\n textAlign: 'center',\n },\n titleBranded: {\n color: c.primaryForeground,\n },\n titleMinimal: {\n fontSize: heading.fontSize.h3,\n fontWeight: fontWeights.bold,\n },\n\n subtitle: {\n fontFamily: body.fontFamily,\n fontSize: body.fontSize,\n color: c.mutedForeground,\n marginTop: spacing[1],\n lineHeight: body.lineHeight,\n },\n subtitleCentered: {\n textAlign: 'center',\n },\n subtitleBranded: {\n color: c.primaryForeground,\n marginTop: spacing[1],\n },\n\n rightText: {\n fontFamily: body.fontFamily,\n fontSize: body.fontSize,\n color: c.foreground,\n fontWeight: fontWeights.medium,\n textAlign: 'right',\n },\n rightSubText: {\n fontFamily: body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: c.mutedForeground,\n textAlign: 'right',\n marginTop: spacing[1],\n },\n\n // ── Logo-left variant ───────────────────────────────────────────────\n logoLeftContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n paddingBottom: spacing[4],\n borderBottomWidth: spacing[0.5],\n borderBottomColor: c.border,\n borderBottomStyle: 'solid',\n },\n logoContainer: {\n marginRight: spacing[4],\n width: 48,\n height: 48,\n },\n logoContent: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n },\n\n // ── Logo-right variant ──────────────────────────────────────────────\n logoRightContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: spacing[4],\n borderBottomWidth: spacing[0.5],\n borderBottomColor: c.border,\n borderBottomStyle: 'solid',\n },\n logoRightContent: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n },\n logoRightLogoContainer: {\n marginLeft: spacing[4],\n width: 48,\n height: 48,\n },\n\n // ── Two-column variant ──────────────────────────────────────────────\n twoColumnContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingBottom: spacing[4],\n borderBottomWidth: spacing[0.5],\n borderBottomColor: c.border,\n borderBottomStyle: 'solid',\n },\n twoColumnLeft: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n },\n twoColumnRight: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n },\n contactInfo: {\n fontFamily: body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: c.mutedForeground,\n textAlign: 'right',\n marginTop: spacing[0.5],\n },\n });\n}\n\nexport function PageHeader({\n title,\n subtitle,\n rightText,\n rightSubText,\n variant = 'simple',\n background,\n titleColor,\n marginBottom,\n logo,\n address,\n phone,\n email,\n fixed = false,\n noWrap = true,\n style,\n}: PageHeaderProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createPageHeaderStyles(theme), [theme]);\n const mb = marginBottom ?? theme.spacing.sectionGap;\n\n // ── Branded ─────────────────────────────────────────────────────────\n if (variant === 'branded') {\n const containerStyles: Style[] = [styles.brandedContainer, { marginBottom: mb }];\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n if (style) containerStyles.push(style);\n\n const titleStyles: Style[] = [styles.title, styles.titleBranded, styles.titleCentered];\n if (titleColor) titleStyles.push({ color: resolveColor(titleColor, theme.colors) });\n\n return (\n <View wrap={!noWrap} fixed={fixed} style={containerStyles}>\n <PDFText style={titleStyles}>{title}</PDFText>\n {subtitle && (\n <PDFText style={[styles.subtitle, styles.subtitleBranded]}>{subtitle}</PDFText>\n )}\n </View>\n );\n }\n\n // ── Centered ────────────────────────────────────────────────────────\n if (variant === 'centered') {\n const containerStyles: Style[] = [styles.centeredContainer, { marginBottom: mb }];\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n if (style) containerStyles.push(style);\n\n const titleStyles: Style[] = [styles.title, styles.titleCentered];\n if (titleColor) titleStyles.push({ color: resolveColor(titleColor, theme.colors) });\n\n return (\n <View wrap={!noWrap} fixed={fixed} style={containerStyles}>\n <PDFText style={titleStyles}>{title}</PDFText>\n {subtitle && (\n <PDFText style={[styles.subtitle, styles.subtitleCentered]}>{subtitle}</PDFText>\n )}\n </View>\n );\n }\n\n // ── Logo-right ──────────────────────────────────────────────────────\n if (variant === 'logo-right') {\n const containerStyles: Style[] = [styles.logoRightContainer, { marginBottom: mb }];\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n if (style) containerStyles.push(style);\n\n const titleStyles: Style[] = [styles.title];\n if (titleColor) titleStyles.push({ color: resolveColor(titleColor, theme.colors) });\n\n return (\n <View wrap={!noWrap} fixed={fixed} style={containerStyles}>\n <View style={styles.logoRightContent}>\n <PDFText style={titleStyles}>{title}</PDFText>\n {subtitle && <PDFText style={styles.subtitle}>{subtitle}</PDFText>}\n </View>\n {logo && <View style={styles.logoRightLogoContainer}>{logo}</View>}\n </View>\n );\n }\n\n // ── Logo-left ───────────────────────────────────────────────────────\n if (variant === 'logo-left') {\n const containerStyles: Style[] = [styles.logoLeftContainer, { marginBottom: mb }];\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n if (style) containerStyles.push(style);\n\n const titleStyles: Style[] = [styles.title];\n if (titleColor) titleStyles.push({ color: resolveColor(titleColor, theme.colors) });\n\n return (\n <View wrap={!noWrap} fixed={fixed} style={containerStyles}>\n {logo && <View style={styles.logoContainer}>{logo}</View>}\n <View style={styles.logoContent}>\n <PDFText style={titleStyles}>{title}</PDFText>\n {subtitle && <PDFText style={styles.subtitle}>{subtitle}</PDFText>}\n </View>\n {(rightText || rightSubText) && (\n <View style={styles.simpleRight}>\n {rightText && <PDFText style={styles.rightText}>{rightText}</PDFText>}\n {rightSubText && <PDFText style={styles.rightSubText}>{rightSubText}</PDFText>}\n </View>\n )}\n </View>\n );\n }\n\n // ── Two-column ──────────────────────────────────────────────────────\n if (variant === 'two-column') {\n const containerStyles: Style[] = [styles.twoColumnContainer, { marginBottom: mb }];\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n if (style) containerStyles.push(style);\n\n const titleStyles: Style[] = [styles.title];\n if (titleColor) titleStyles.push({ color: resolveColor(titleColor, theme.colors) });\n\n return (\n <View wrap={!noWrap} fixed={fixed} style={containerStyles}>\n <View style={styles.twoColumnLeft}>\n <PDFText style={titleStyles}>{title}</PDFText>\n {subtitle && <PDFText style={styles.subtitle}>{subtitle}</PDFText>}\n </View>\n {(address || phone || email) && (\n <View style={styles.twoColumnRight}>\n {address && <PDFText style={styles.contactInfo}>{address}</PDFText>}\n {phone && <PDFText style={styles.contactInfo}>{phone}</PDFText>}\n {email && <PDFText style={styles.contactInfo}>{email}</PDFText>}\n </View>\n )}\n </View>\n );\n }\n\n // ── Minimal ─────────────────────────────────────────────────────────\n if (variant === 'minimal') {\n const containerStyles: Style[] = [styles.minimalContainer, { marginBottom: mb }];\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n if (style) containerStyles.push(style);\n\n const titleStyles: Style[] = [styles.title, styles.titleMinimal];\n if (titleColor) titleStyles.push({ color: resolveColor(titleColor, theme.colors) });\n\n return (\n <View wrap={!noWrap} fixed={fixed} style={containerStyles}>\n <View style={styles.minimalLeft}>\n <PDFText style={titleStyles}>{title}</PDFText>\n {subtitle && <PDFText style={styles.subtitle}>{subtitle}</PDFText>}\n </View>\n {(rightText || rightSubText) && (\n <View style={styles.minimalRight}>\n {rightText && <PDFText style={styles.rightText}>{rightText}</PDFText>}\n {rightSubText && <PDFText style={styles.rightSubText}>{rightSubText}</PDFText>}\n </View>\n )}\n </View>\n );\n }\n\n // ── Simple (default) ────────────────────────────────────────────────\n const containerStyles: Style[] = [styles.simpleContainer, { marginBottom: mb }];\n if (background) {\n containerStyles.push({ backgroundColor: resolveColor(background, theme.colors) });\n }\n if (style) containerStyles.push(style);\n\n const titleStyles: Style[] = [styles.title];\n if (titleColor) titleStyles.push({ color: resolveColor(titleColor, theme.colors) });\n\n return (\n <View wrap={!noWrap} fixed={fixed} style={containerStyles}>\n <View style={styles.simpleLeft}>\n <PDFText style={titleStyles}>{title}</PDFText>\n {subtitle && <PDFText style={styles.subtitle}>{subtitle}</PDFText>}\n </View>\n {(rightText || rightSubText) && (\n <View style={styles.simpleRight}>\n {rightText && <PDFText style={styles.rightText}>{rightText}</PDFText>}\n {rightSubText && <PDFText style={styles.rightSubText}>{rightSubText}</PDFText>}\n </View>\n )}\n </View>\n );\n}\n","import type { PDFComponentProps } from '../../types';\nimport type { PdfxTheme } from '../../theme';\nimport { Text as PDFText, StyleSheet, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\n\nexport type PageFooterVariant =\n | 'simple'\n | 'centered'\n | 'branded'\n | 'minimal'\n | 'three-column'\n | 'detailed';\n\nexport interface PageFooterProps extends Omit<PDFComponentProps, 'children'> {\n leftText?: string;\n rightText?: string;\n centerText?: string;\n variant?: PageFooterVariant;\n background?: string;\n textColor?: string;\n marginTop?: number;\n address?: string;\n phone?: string;\n email?: string;\n website?: string;\n /**\n * Fix this footer to the bottom of the page, so it will always be visible regardless of content length. This is achieved using `position: 'fixed'` in the PDF layout.\n * @default false\n */\n fixed?: boolean;\n\n /**\n * Render this footer at the bottom of the page, but allow it to scroll with the content if the page is long enough. This is achieved using absolute positioning with `position: 'absolute'` and `bottom: 0`.\n * @default false\n */\n sticky?: boolean;\n\n /**\n * When using `sticky`, this value sets the `left` and `right` offsets to match the page's horizontal padding, ensuring the footer content is aligned with the rest of the page content.\n * @default 0\n */\n pagePadding?: number;\n\n /**\n * Prevent the footer from being split across PDF pages when placed inline.\n * @default true\n */\n noWrap?: boolean;\n}\n\nfunction createPageFooterStyles(t: PdfxTheme) {\n const { spacing, fontWeights } = t.primitives;\n const c = t.colors;\n const { body } = t.typography;\n\n const textBase = {\n fontFamily: body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: c.mutedForeground,\n lineHeight: body.lineHeight,\n };\n\n return StyleSheet.create({\n // ── Simple variant ──────────────────────────────────────────────────\n simpleContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing[3],\n borderTopWidth: spacing[0.5],\n borderTopColor: c.border,\n borderTopStyle: 'solid',\n },\n\n // ── Centered variant ────────────────────────────────────────────────\n centeredContainer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingTop: spacing[3],\n borderTopWidth: spacing[0.5],\n borderTopColor: c.border,\n borderTopStyle: 'solid',\n },\n\n // ── Minimal variant ─────────────────────────────────────────────────\n minimalContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: spacing[1],\n paddingBottom: spacing[1],\n },\n\n // ── Branded variant ─────────────────────────────────────────────────\n brandedContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n backgroundColor: c.primary,\n paddingHorizontal: spacing[4],\n paddingVertical: spacing[3],\n },\n\n // ── Text styles ─────────────────────────────────────────────────────\n textLeft: {\n ...textBase,\n flex: 1,\n },\n textCenter: {\n ...textBase,\n textAlign: 'center',\n flex: 1,\n },\n textRight: {\n ...textBase,\n textAlign: 'right',\n },\n textCenteredVariant: {\n ...textBase,\n textAlign: 'center',\n marginBottom: spacing[1],\n },\n textBranded: {\n ...textBase,\n color: c.primaryForeground,\n fontWeight: fontWeights.medium,\n },\n textBrandedRight: {\n ...textBase,\n color: c.primaryForeground,\n textAlign: 'right',\n },\n\n // ── Three-column variant ──────────────────────────────────────────\n threeColumnContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing[3],\n borderTopWidth: spacing[0.5],\n borderTopColor: c.border,\n borderTopStyle: 'solid',\n },\n threeColumnLeft: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n },\n threeColumnCenter: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n flex: 1,\n },\n threeColumnRight: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n flex: 1,\n },\n companyName: {\n ...textBase,\n fontWeight: fontWeights.medium,\n color: c.foreground,\n },\n contactInfoCenter: {\n ...textBase,\n textAlign: 'center',\n fontSize: t.primitives.typography.xs - 1,\n marginTop: spacing[0.5],\n },\n\n // ── Detailed variant ──────────────────────────────────────────────\n detailedContainer: {\n display: 'flex',\n flexDirection: 'column',\n paddingTop: spacing[3],\n borderTopWidth: spacing[1],\n borderTopColor: c.border,\n borderTopStyle: 'solid',\n },\n detailedTopRow: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n marginBottom: spacing[2],\n },\n detailedLeft: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n },\n detailedRight: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n },\n companyBold: {\n ...textBase,\n fontWeight: fontWeights.bold,\n color: c.foreground,\n },\n detailedPageNumber: {\n ...textBase,\n textAlign: 'center',\n paddingTop: spacing[2],\n borderTopWidth: spacing[0.5],\n borderTopColor: c.border,\n borderTopStyle: 'solid',\n },\n });\n}\n\nexport function PageFooter({\n leftText,\n rightText,\n centerText,\n variant = 'simple',\n background,\n textColor,\n marginTop,\n address,\n phone,\n email,\n website,\n fixed = false,\n sticky = false,\n pagePadding = 0,\n noWrap = true,\n style,\n}: PageFooterProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createPageFooterStyles(theme), [theme]);\n // sticky implies fixed; marginTop is irrelevant with absolute positioning\n const isFixed = fixed || sticky;\n const mt = sticky ? 0 : (marginTop ?? theme.spacing.sectionGap);\n const resolvedTextColor = textColor ? resolveColor(textColor, theme.colors) : undefined;\n /**\n * The sticky style is built dynamically so `pagePadding` is reflected in\n * `left`/`right`, matching the page's horizontal padding exactly.\n */\n const stickyStyle: Style = sticky\n ? { position: 'absolute', bottom: pagePadding, left: pagePadding, right: pagePadding }\n : {};\n\n /**\n * Appends background + custom style + sticky overrides to a container style array.\n * sticky style is always last so it wins over all other overrides.\n */\n function applyOverrides(base: Style[]): Style[] {\n if (background) base.push({ backgroundColor: resolveColor(background, theme.colors) });\n if (style) base.push(style);\n if (sticky) base.push(stickyStyle);\n return base;\n }\n\n // ── Branded ──────────────────────────────────────────────────────────\n if (variant === 'branded') {\n const containerStyles = applyOverrides([styles.brandedContainer, { marginTop: mt }]);\n\n const lStyle: Style[] = [styles.textBranded];\n const rStyle: Style[] = [styles.textBrandedRight];\n if (resolvedTextColor) {\n lStyle.push({ color: resolvedTextColor });\n rStyle.push({ color: resolvedTextColor });\n }\n\n return (\n <View wrap={!noWrap} fixed={isFixed} style={containerStyles}>\n {leftText && <PDFText style={lStyle}>{leftText}</PDFText>}\n {rightText && <PDFText style={rStyle}>{rightText}</PDFText>}\n </View>\n );\n }\n\n // ── Centered ─────────────────────────────────────────────────────────\n if (variant === 'centered') {\n const containerStyles = applyOverrides([styles.centeredContainer, { marginTop: mt }]);\n\n const tStyle: Style[] = [styles.textCenteredVariant];\n if (resolvedTextColor) tStyle.push({ color: resolvedTextColor });\n\n return (\n <View wrap={!noWrap} fixed={isFixed} style={containerStyles}>\n {leftText && <PDFText style={tStyle}>{leftText}</PDFText>}\n {rightText && <PDFText style={tStyle}>{rightText}</PDFText>}\n </View>\n );\n }\n\n // ── Three-column ────────────────────────────────────────────────────\n if (variant === 'three-column') {\n const containerStyles = applyOverrides([styles.threeColumnContainer, { marginTop: mt }]);\n\n const leftStyle: Style[] = [styles.companyName];\n const centerStyle: Style[] = [styles.contactInfoCenter];\n const rightStyle: Style[] = [styles.textRight];\n if (resolvedTextColor) {\n leftStyle.push({ color: resolvedTextColor });\n centerStyle.push({ color: resolvedTextColor });\n rightStyle.push({ color: resolvedTextColor });\n }\n\n return (\n <View wrap={!noWrap} fixed={isFixed} style={containerStyles}>\n <View style={styles.threeColumnLeft}>\n {leftText && <PDFText style={leftStyle}>{leftText}</PDFText>}\n {address && <PDFText style={styles.textLeft}>{address}</PDFText>}\n </View>\n <View style={styles.threeColumnCenter}>\n {phone && <PDFText style={centerStyle}>{phone}</PDFText>}\n {email && <PDFText style={centerStyle}>{email}</PDFText>}\n {website && <PDFText style={centerStyle}>{website}</PDFText>}\n </View>\n <View style={styles.threeColumnRight}>\n {rightText && <PDFText style={rightStyle}>{rightText}</PDFText>}\n </View>\n </View>\n );\n }\n\n // ── Detailed ─────────────────────────────────────────────────────────\n if (variant === 'detailed') {\n const containerStyles = applyOverrides([styles.detailedContainer, { marginTop: mt }]);\n\n const companyStyle: Style[] = [styles.companyBold];\n const addrStyle: Style[] = [styles.textLeft];\n const contactStyle: Style[] = [styles.textRight];\n const pageNumStyle: Style[] = [styles.detailedPageNumber];\n if (resolvedTextColor) {\n companyStyle.push({ color: resolvedTextColor });\n addrStyle.push({ color: resolvedTextColor });\n contactStyle.push({ color: resolvedTextColor });\n pageNumStyle.push({ color: resolvedTextColor });\n }\n\n return (\n <View wrap={!noWrap} fixed={isFixed} style={containerStyles}>\n <View style={styles.detailedTopRow}>\n <View style={styles.detailedLeft}>\n {leftText && <PDFText style={companyStyle}>{leftText}</PDFText>}\n {address && <PDFText style={addrStyle}>{address}</PDFText>}\n </View>\n <View style={styles.detailedRight}>\n {phone && <PDFText style={contactStyle}>{`Phone: ${phone}`}</PDFText>}\n {email && <PDFText style={contactStyle}>{`Email: ${email}`}</PDFText>}\n {website && <PDFText style={contactStyle}>{`Web: ${website}`}</PDFText>}\n </View>\n </View>\n {rightText && <PDFText style={pageNumStyle}>{rightText}</PDFText>}\n </View>\n );\n }\n\n // ── Minimal ──────────────────────────────────────────────────────────\n if (variant === 'minimal') {\n const containerStyles = applyOverrides([styles.minimalContainer, { marginTop: mt }]);\n\n const lStyle: Style[] = [styles.textLeft];\n const rStyle: Style[] = [styles.textRight];\n if (resolvedTextColor) {\n lStyle.push({ color: resolvedTextColor });\n rStyle.push({ color: resolvedTextColor });\n }\n\n return (\n <View wrap={!noWrap} fixed={isFixed} style={containerStyles}>\n {leftText && <PDFText style={lStyle}>{leftText}</PDFText>}\n {rightText && <PDFText style={rStyle}>{rightText}</PDFText>}\n </View>\n );\n }\n\n // ── Simple (default) ─────────────────────────────────────────────────\n const containerStyles = applyOverrides([styles.simpleContainer, { marginTop: mt }]);\n\n const lStyle: Style[] = [styles.textLeft];\n const cStyle: Style[] = [styles.textCenter];\n const rStyle: Style[] = [styles.textRight];\n if (resolvedTextColor) {\n lStyle.push({ color: resolvedTextColor });\n cStyle.push({ color: resolvedTextColor });\n rStyle.push({ color: resolvedTextColor });\n }\n\n return (\n <View wrap={!noWrap} fixed={isFixed} style={containerStyles}>\n {leftText && <PDFText style={lStyle}>{leftText}</PDFText>}\n {centerText && <PDFText style={cStyle}>{centerText}</PDFText>}\n {rightText && <PDFText style={rStyle}>{rightText}</PDFText>}\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\nexport function createWatermarkStyles(theme: PdfxTheme) {\n const { typography } = theme;\n\n return StyleSheet.create({\n container: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: -1,\n pointerEvents: 'none',\n },\n text: {\n fontFamily: typography.heading.fontFamily,\n fontWeight: 700,\n textTransform: 'uppercase',\n letterSpacing: 4,\n },\n // Position variants\n positionCenter: {\n justifyContent: 'center',\n alignItems: 'center',\n },\n positionTopLeft: {\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n paddingTop: 100,\n paddingLeft: 50,\n },\n positionTopRight: {\n justifyContent: 'flex-start',\n alignItems: 'flex-end',\n paddingTop: 100,\n paddingRight: 50,\n },\n positionBottomLeft: {\n justifyContent: 'flex-end',\n alignItems: 'flex-start',\n paddingBottom: 100,\n paddingLeft: 50,\n },\n positionBottomRight: {\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n paddingBottom: 100,\n paddingRight: 50,\n },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createWatermarkStyles } from './watermark.styles';\nimport type { PdfWatermarkProps, WatermarkPosition } from './watermark.types';\n\n/**\n * PdfWatermark — Displays a diagonal or positioned text overlay on PDF pages.\n *\n * Common use cases include \"DRAFT\", \"CONFIDENTIAL\", \"PAID\", \"VOID\", \"COPY\", etc.\n * The watermark uses absolute positioning and appears behind content.\n * Use the `fixed` prop (default: true) to repeat on every page.\n *\n * @example Basic usage (diagonal \"DRAFT\" on every page)\n * ```tsx\n * <Page>\n * <PdfWatermark text=\"DRAFT\" />\n * {content}\n * </Page>\n * ```\n *\n * @example Confidential document\n * ```tsx\n * <PdfWatermark text=\"CONFIDENTIAL\" color=\"destructive\" opacity={0.1} />\n * ```\n *\n * @example Paid invoice stamp (no rotation)\n * ```tsx\n * <PdfWatermark text=\"PAID\" angle={0} color=\"success\" fontSize={80} />\n * ```\n *\n * @example Corner watermark\n * ```tsx\n * <PdfWatermark text=\"COPY\" position=\"top-right\" angle={0} fontSize={24} />\n * ```\n */\nexport function PdfWatermark({\n text,\n opacity = 0.15,\n fontSize = 60,\n color = 'mutedForeground',\n angle = -45,\n position = 'center',\n fixed = true,\n style,\n}: PdfWatermarkProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createWatermarkStyles(theme), [theme]);\n\n const positionMap: Record<WatermarkPosition, Style> = {\n center: styles.positionCenter,\n 'top-left': styles.positionTopLeft,\n 'top-right': styles.positionTopRight,\n 'bottom-left': styles.positionBottomLeft,\n 'bottom-right': styles.positionBottomRight,\n };\n\n const containerStyles: Style[] = [styles.container, positionMap[position]];\n\n if (style) {\n containerStyles.push(style);\n }\n\n const resolvedColor = resolveColor(color, theme.colors);\n\n const textStyles: Style[] = [\n styles.text,\n {\n fontSize,\n color: resolvedColor,\n opacity,\n transform: `rotate(${angle}deg)`,\n },\n ];\n\n return (\n <View style={containerStyles} fixed={fixed}>\n <PDFText style={textStyles}>{text}</PDFText>\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\nexport function createAlertStyles(theme: PdfxTheme) {\n const { typography, colors, primitives } = theme;\n\n return StyleSheet.create({\n container: {\n display: 'flex',\n flexDirection: 'row',\n padding: 12,\n borderRadius: 4,\n marginBottom: theme.spacing.componentGap,\n },\n // Border variants (left accent stripe)\n borderInfo: {\n borderLeftWidth: 4,\n borderLeftColor: colors.info ?? '#3B82F6',\n },\n borderSuccess: {\n borderLeftWidth: 4,\n borderLeftColor: colors.success ?? '#22C55E',\n },\n borderWarning: {\n borderLeftWidth: 4,\n borderLeftColor: colors.warning ?? '#F59E0B',\n },\n borderError: {\n borderLeftWidth: 4,\n borderLeftColor: colors.destructive ?? '#EF4444',\n },\n // Background variants\n bgInfo: {\n backgroundColor: '#EFF6FF', // Light blue\n },\n bgSuccess: {\n backgroundColor: '#F0FDF4', // Light green\n },\n bgWarning: {\n backgroundColor: '#FFFBEB', // Light amber\n },\n bgError: {\n backgroundColor: '#FEF2F2', // Light red\n },\n // Icon container\n iconContainer: {\n width: 20,\n marginRight: 10,\n alignItems: 'center',\n justifyContent: 'flex-start',\n paddingTop: 2,\n },\n // Content container\n contentContainer: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n },\n // Title\n title: {\n fontFamily: typography.heading.fontFamily,\n fontSize: primitives.typography.sm,\n fontWeight: 600,\n marginBottom: 4,\n },\n titleInfo: {\n color: '#1E40AF', // Dark blue\n },\n titleSuccess: {\n color: '#166534', // Dark green\n },\n titleWarning: {\n color: '#92400E', // Dark amber\n },\n titleError: {\n color: '#991B1B', // Dark red\n },\n // Description / content text\n description: {\n fontFamily: typography.body.fontFamily,\n fontSize: primitives.typography.sm,\n lineHeight: typography.body.lineHeight,\n },\n descriptionInfo: {\n color: '#1E3A8A', // Blue text\n },\n descriptionSuccess: {\n color: '#14532D', // Green text\n },\n descriptionWarning: {\n color: '#78350F', // Amber text\n },\n descriptionError: {\n color: '#7F1D1D', // Red text\n },\n });\n}\n","import { Circle, G, Line, Text as PDFText, Path, Svg, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createAlertStyles } from './alert.styles';\nimport type { AlertVariant, PdfAlertProps } from './alert.types';\n\n// ─── Icon Colors ───────────────────────────────────────────────────────────────\n\nconst ICON_COLORS: Record<AlertVariant, string> = {\n info: '#3B82F6',\n success: '#22C55E',\n warning: '#F59E0B',\n error: '#EF4444',\n};\n\n// ─── SVG Icons ─────────────────────────────────────────────────────────────────\n\nfunction InfoIcon({ color }: { color: string }) {\n return (\n <Svg width={16} height={16} viewBox=\"0 0 16 16\">\n <Circle cx={8} cy={8} r={7} fill=\"none\" stroke={color} strokeWidth={1.5} />\n <Circle cx={8} cy={4.5} r={1} fill={color} />\n <Line x1={8} y1={7} x2={8} y2={11.5} stroke={color} strokeWidth={1.5} strokeLinecap=\"round\" />\n </Svg>\n );\n}\n\nfunction SuccessIcon({ color }: { color: string }) {\n return (\n <Svg width={16} height={16} viewBox=\"0 0 16 16\">\n <Circle cx={8} cy={8} r={7} fill=\"none\" stroke={color} strokeWidth={1.5} />\n <Path\n d=\"M5 8 L7 10 L11 6\"\n fill=\"none\"\n stroke={color}\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nfunction WarningIcon({ color }: { color: string }) {\n return (\n <Svg width={16} height={16} viewBox=\"0 0 16 16\">\n <Path\n d=\"M8 1.5 L15 14.5 L1 14.5 Z\"\n fill=\"none\"\n stroke={color}\n strokeWidth={1.5}\n strokeLinejoin=\"round\"\n />\n <G>\n <Line x1={8} y1={6} x2={8} y2={10} stroke={color} strokeWidth={1.5} strokeLinecap=\"round\" />\n <Circle cx={8} cy={12.5} r={0.75} fill={color} />\n </G>\n </Svg>\n );\n}\n\nfunction ErrorIcon({ color }: { color: string }) {\n return (\n <Svg width={16} height={16} viewBox=\"0 0 16 16\">\n <Circle cx={8} cy={8} r={7} fill=\"none\" stroke={color} strokeWidth={1.5} />\n <G>\n <Line\n x1={5.5}\n y1={5.5}\n x2={10.5}\n y2={10.5}\n stroke={color}\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n <Line\n x1={10.5}\n y1={5.5}\n x2={5.5}\n y2={10.5}\n stroke={color}\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n />\n </G>\n </Svg>\n );\n}\n\nfunction AlertIcon({ variant }: { variant: AlertVariant }) {\n const color = ICON_COLORS[variant];\n\n switch (variant) {\n case 'info':\n return <InfoIcon color={color} />;\n case 'success':\n return <SuccessIcon color={color} />;\n case 'warning':\n return <WarningIcon color={color} />;\n case 'error':\n return <ErrorIcon color={color} />;\n }\n}\n\n// ─── PdfAlert Component ────────────────────────────────────────────────────────\n\n/**\n * PdfAlert — Displays info, success, warning, or error callout boxes.\n *\n * Use for important notices, confirmations, cautions, or critical alerts\n * in reports, contracts, and documents.\n *\n * @example Basic info alert\n * ```tsx\n * <PdfAlert variant=\"info\" title=\"Note\">\n * This document requires a signature before proceeding.\n * </PdfAlert>\n * ```\n *\n * @example Success confirmation\n * ```tsx\n * <PdfAlert variant=\"success\" title=\"Payment Confirmed\">\n * Your payment of $500.00 has been received.\n * </PdfAlert>\n * ```\n *\n * @example Warning without icon\n * ```tsx\n * <PdfAlert variant=\"warning\" title=\"Deadline Approaching\" showIcon={false}>\n * Please submit your documents by March 15, 2026.\n * </PdfAlert>\n * ```\n *\n * @example Error alert\n * ```tsx\n * <PdfAlert variant=\"error\" title=\"Action Required\">\n * Missing required information. Please review and resubmit.\n * </PdfAlert>\n * ```\n */\nexport function PdfAlert({\n variant = 'info',\n title,\n children,\n showIcon = true,\n showBorder = true,\n style,\n}: PdfAlertProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createAlertStyles(theme), [theme]);\n\n const borderMap: Record<AlertVariant, Style> = {\n info: styles.borderInfo,\n success: styles.borderSuccess,\n warning: styles.borderWarning,\n error: styles.borderError,\n };\n\n const bgMap: Record<AlertVariant, Style> = {\n info: styles.bgInfo,\n success: styles.bgSuccess,\n warning: styles.bgWarning,\n error: styles.bgError,\n };\n\n const titleColorMap: Record<AlertVariant, Style> = {\n info: styles.titleInfo,\n success: styles.titleSuccess,\n warning: styles.titleWarning,\n error: styles.titleError,\n };\n\n const descriptionColorMap: Record<AlertVariant, Style> = {\n info: styles.descriptionInfo,\n success: styles.descriptionSuccess,\n warning: styles.descriptionWarning,\n error: styles.descriptionError,\n };\n\n const containerStyles: Style[] = [styles.container, bgMap[variant]];\n\n if (showBorder) {\n containerStyles.push(borderMap[variant]);\n }\n\n if (style) {\n containerStyles.push(style);\n }\n\n const titleStyles: Style[] = [styles.title, titleColorMap[variant]];\n const descriptionStyles: Style[] = [styles.description, descriptionColorMap[variant]];\n\n const hasContent = title || children;\n\n if (!hasContent) {\n return null;\n }\n\n return (\n <View wrap={false} style={containerStyles}>\n {showIcon && (\n <View style={styles.iconContainer}>\n <AlertIcon variant={variant} />\n </View>\n )}\n <View style={styles.contentContainer}>\n {title && <PDFText style={titleStyles}>{title}</PDFText>}\n {typeof children === 'string' ? (\n <PDFText style={descriptionStyles}>{children}</PDFText>\n ) : (\n children\n )}\n </View>\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all list styles derived from the active theme.\n * Returns a StyleSheet covering container, item row, gap variations, markers,\n * checklist/icon boxes, text styles, and nested children layout.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createListStyles(t: PdfxTheme) {\n const { spacing, fontWeights, typography } = t.primitives;\n\n return StyleSheet.create({\n container: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n marginBottom: t.spacing.componentGap,\n },\n itemRow: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n },\n itemRowGapXs: { marginBottom: spacing[1] },\n itemRowGapSm: { marginBottom: spacing[2] },\n itemRowGapMd: { marginBottom: spacing[3] },\n // ── Bullet markers ────────────────────────────────────────────────\n markerBulletWrap: {\n width: spacing[4],\n paddingTop: 4,\n alignItems: 'center',\n },\n markerBulletDot: {\n width: 5,\n height: 5,\n borderRadius: 3,\n backgroundColor: t.colors.primary,\n },\n markerBulletSubWrap: {\n width: spacing[4],\n paddingTop: 5,\n alignItems: 'center',\n },\n markerBulletSubDot: {\n width: 4,\n height: 4,\n borderRadius: 2,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: t.colors.mutedForeground,\n backgroundColor: 'transparent',\n },\n // ── Numbered marker ───────────────────────────────────────────────\n markerNumberBadge: {\n width: spacing[5],\n height: spacing[5],\n borderRadius: spacing[5],\n backgroundColor: t.colors.primary,\n alignItems: 'center',\n justifyContent: 'center',\n marginTop: 1,\n marginRight: spacing[2],\n },\n markerNumberText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n color: t.colors.primaryForeground,\n fontWeight: fontWeights.bold,\n },\n // ── Checklist ─────────────────────────────────────────────────────\n checkBox: {\n width: spacing[4],\n height: spacing[4],\n borderWidth: 1.5,\n borderColor: t.colors.border,\n borderStyle: 'solid',\n borderRadius: 3,\n marginTop: 1,\n marginRight: spacing[2],\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: t.colors.background,\n },\n checkBoxChecked: {\n backgroundColor: t.colors.success,\n borderColor: t.colors.success,\n },\n checkMark: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: 8,\n color: t.colors.background,\n fontWeight: fontWeights.bold,\n },\n // ── Icon box ──────────────────────────────────────────────────────\n iconBox: {\n width: spacing[5],\n height: spacing[5],\n borderRadius: 4,\n backgroundColor: t.colors.primary,\n alignItems: 'center',\n justifyContent: 'center',\n marginTop: 1,\n marginRight: spacing[2],\n },\n iconMark: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: 9,\n color: t.colors.primaryForeground,\n fontWeight: fontWeights.bold,\n },\n // ── Text styles ───────────────────────────────────────────────────\n itemText: {\n flex: 1,\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.foreground,\n },\n itemTextSub: {\n flex: 1,\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize - 0.5,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.mutedForeground,\n },\n itemTextBold: {\n fontWeight: fontWeights.semibold,\n },\n descriptiveTitle: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n descriptiveDesc: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.sm,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.mutedForeground,\n marginTop: 1,\n },\n descriptiveAccent: {\n width: 3,\n borderRadius: 2,\n backgroundColor: t.colors.primary,\n marginRight: spacing[3],\n minHeight: 16,\n },\n descriptiveContent: {\n flex: 1,\n },\n childrenContainer: {\n marginLeft: spacing[5],\n marginTop: spacing[1],\n },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport type React from 'react';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createListStyles } from './list.styles';\nimport type { ListItem, ListVariant, PdfListProps } from './list.types';\n\n// ─── Gap helper ──────────────────────────────────────────────────────────────\n\nfunction getGapStyle(gap: 'xs' | 'sm' | 'md', styles: ReturnType<typeof createListStyles>): Style {\n if (gap === 'xs') return styles.itemRowGapXs;\n if (gap === 'md') return styles.itemRowGapMd;\n return styles.itemRowGapSm;\n}\n\n// ─── Render helpers (plain functions, not React components) ───────────────────\n\nfunction renderItem(\n item: ListItem,\n index: number,\n total: number,\n variant: ListVariant,\n gap: 'xs' | 'sm' | 'md',\n styles: ReturnType<typeof createListStyles>,\n level: number\n): React.ReactElement | null {\n const gapStyle = getGapStyle(gap, styles);\n const isLast = index === total - 1;\n const rowStyles: Style[] = [styles.itemRow];\n if (!isLast) rowStyles.push(gapStyle);\n\n if (variant === 'bullet') {\n return (\n <View key={index}>\n <View style={rowStyles}>\n {level === 0 ? (\n <View style={styles.markerBulletWrap}>\n <View style={styles.markerBulletDot} />\n </View>\n ) : (\n <View style={styles.markerBulletSubWrap}>\n <View style={styles.markerBulletSubDot} />\n </View>\n )}\n <View style={{ flex: 1 }}>\n <PDFText style={styles.itemText}>{item.text}</PDFText>\n </View>\n </View>\n {item.children && item.children.length > 0\n ? renderItemList(item.children, variant, gap, styles, level + 1)\n : null}\n </View>\n );\n }\n\n if (variant === 'numbered') {\n return (\n <View key={index} style={rowStyles}>\n <View style={styles.markerNumberBadge}>\n <PDFText style={styles.markerNumberText}>{`${index + 1}`}</PDFText>\n </View>\n <PDFText style={styles.itemText}>{item.text}</PDFText>\n </View>\n );\n }\n\n if (variant === 'checklist') {\n const isChecked = item.checked ?? true;\n return (\n <View key={index} style={rowStyles}>\n <View style={[styles.checkBox, isChecked ? styles.checkBoxChecked : {}]}>\n {isChecked ? <PDFText style={styles.checkMark}>✓</PDFText> : null}\n </View>\n <PDFText style={styles.itemText}>{item.text}</PDFText>\n </View>\n );\n }\n\n if (variant === 'icon') {\n return (\n <View key={index} style={rowStyles}>\n <View style={styles.iconBox}>\n <PDFText style={styles.iconMark}>★</PDFText>\n </View>\n <PDFText style={styles.itemText}>{item.text}</PDFText>\n </View>\n );\n }\n\n if (variant === 'multi-level') {\n return (\n <View key={index}>\n <View style={rowStyles}>\n {level === 0 ? (\n <View style={styles.markerBulletWrap}>\n <View style={styles.markerBulletDot} />\n </View>\n ) : (\n <View style={styles.markerBulletSubWrap}>\n <View style={styles.markerBulletSubDot} />\n </View>\n )}\n <PDFText\n style={[\n level === 0 ? styles.itemText : styles.itemTextSub,\n level === 0 ? styles.itemTextBold : {},\n ]}\n >\n {item.text}\n </PDFText>\n </View>\n {item.children && item.children.length > 0\n ? renderItemList(item.children, variant, gap, styles, level + 1)\n : null}\n </View>\n );\n }\n\n if (variant === 'descriptive') {\n return (\n <View key={index} style={rowStyles}>\n <View style={styles.descriptiveAccent} />\n <View style={styles.descriptiveContent}>\n <PDFText style={styles.descriptiveTitle}>{item.text}</PDFText>\n {item.description ? (\n <PDFText style={styles.descriptiveDesc}>{item.description}</PDFText>\n ) : null}\n </View>\n </View>\n );\n }\n\n return null;\n}\n\nfunction renderItemList(\n items: ListItem[],\n variant: ListVariant,\n gap: 'xs' | 'sm' | 'md',\n styles: ReturnType<typeof createListStyles>,\n level: number\n): React.ReactElement {\n return (\n <View style={level > 0 ? styles.childrenContainer : undefined}>\n {items.map((item, index) =>\n renderItem(item, index, items.length, variant, gap, styles, level)\n )}\n </View>\n );\n}\n\n// ─── PdfList ──────────────────────────────────────────────────────────────────\n\nexport function PdfList({\n items,\n variant = 'bullet',\n gap = 'sm',\n style,\n noWrap = false,\n _level = 0,\n}: PdfListProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createListStyles(theme), [theme]);\n\n const containerStyles: Style[] = [styles.container];\n if (_level > 0) containerStyles.push(styles.childrenContainer);\n const styleArray = style ? [...containerStyles, style] : containerStyles;\n\n return (\n <View wrap={!noWrap} style={styleArray}>\n {items.map((item, index) =>\n renderItem(item, index, items.length, variant, gap, styles, _level)\n )}\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all card styles derived from the active theme.\n * Returns a StyleSheet covering card variant, padding, title, and body styles.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createCardStyles(t: PdfxTheme) {\n const { spacing, borderRadius, fontWeights } = t.primitives;\n const borderColor = t.colors.border;\n\n return StyleSheet.create({\n card: {\n borderWidth: 1,\n borderColor: borderColor,\n borderStyle: 'solid',\n borderRadius: borderRadius.sm,\n backgroundColor: t.colors.background,\n marginBottom: t.spacing.componentGap,\n },\n cardBordered: {\n borderWidth: 2,\n },\n cardMuted: {\n backgroundColor: t.colors.muted,\n },\n paddingSm: {\n padding: spacing[2],\n },\n paddingMd: {\n padding: spacing[3],\n },\n paddingLg: {\n padding: spacing[4],\n },\n title: {\n fontFamily: t.typography.heading.fontFamily,\n fontSize: t.primitives.typography.base,\n lineHeight: t.typography.heading.lineHeight,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n marginBottom: spacing[2],\n paddingBottom: spacing[1] + 2,\n borderBottomWidth: 1,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n body: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.foreground,\n },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createCardStyles } from './card.styles';\nimport type { PdfCardProps } from './card.types';\n\n// ─── PdfCard ──────────────────────────────────────────────────────────────────\n\nexport function PdfCard({\n title,\n children,\n variant = 'default',\n padding = 'md',\n wrap = false,\n style,\n}: PdfCardProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createCardStyles(theme), [theme]);\n\n const cardStyles: Style[] = [styles.card];\n if (variant === 'bordered') cardStyles.push(styles.cardBordered);\n if (variant === 'muted') cardStyles.push(styles.cardMuted);\n\n const paddingStyle =\n padding === 'sm' ? styles.paddingSm : padding === 'lg' ? styles.paddingLg : styles.paddingMd;\n cardStyles.push(paddingStyle);\n\n const styleArray = style ? [...cardStyles, style] : cardStyles;\n\n const bodyContent =\n typeof children === 'string' ? <PDFText style={styles.body}>{children}</PDFText> : children;\n\n return (\n <View wrap={wrap} style={styleArray}>\n {title ? <PDFText style={styles.title}>{title}</PDFText> : null}\n {bodyContent}\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\nexport function createQRCodeStyles(theme: PdfxTheme) {\n const { typography, colors, primitives } = theme;\n\n return StyleSheet.create({\n container: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n caption: {\n fontFamily: typography.body.fontFamily,\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n marginTop: 4,\n textAlign: 'center',\n },\n });\n}\n","import { Text as PDFText, Rect, Svg, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport QRCode from 'qrcode';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { resolveColor } from '../../lib/resolve-color';\nimport { createQRCodeStyles } from './qrcode.styles';\nimport type { PdfQRCodeProps, QRCodeErrorLevel } from './qrcode.types';\n\n/**\n * Generates QR code matrix from the input value.\n * Returns a 2D boolean array where true = dark module.\n */\nfunction generateQRMatrix(\n value: string,\n errorLevel: QRCodeErrorLevel,\n margin: number\n): boolean[][] {\n // Use qrcode library to generate the modules\n const qr = QRCode.create(value, {\n errorCorrectionLevel: errorLevel,\n });\n\n const modules = qr.modules;\n const size = modules.size;\n const data = modules.data;\n\n // Create matrix with margin\n const totalSize = size + margin * 2;\n const matrix: boolean[][] = [];\n\n for (let row = 0; row < totalSize; row++) {\n const rowData: boolean[] = [];\n for (let col = 0; col < totalSize; col++) {\n // Check if this cell is within the margin\n const isInMargin =\n row < margin || row >= size + margin || col < margin || col >= size + margin;\n\n if (isInMargin) {\n rowData.push(false); // Margin is always light\n } else {\n // Map to original QR data\n const qrRow = row - margin;\n const qrCol = col - margin;\n const index = qrRow * size + qrCol;\n rowData.push(data[index] === 1);\n }\n }\n matrix.push(rowData);\n }\n\n return matrix;\n}\n\n/**\n * PdfQRCode — Renders a QR code using native SVG primitives.\n *\n * Uses the `qrcode` library for generation and react-pdf's SVG\n * support for rendering. The result is a crisp, vector QR code\n * that scales perfectly at any size.\n *\n * @example Basic usage\n * ```tsx\n * <PdfQRCode value=\"https://example.com\" />\n * ```\n *\n * @example Invoice with payment link\n * ```tsx\n * <PdfQRCode\n * value=\"https://pay.example.com/invoice/123\"\n * size={80}\n * caption=\"Scan to pay\"\n * />\n * ```\n *\n * @example Styled QR code\n * ```tsx\n * <PdfQRCode\n * value=\"https://example.com\"\n * size={120}\n * color=\"primary\"\n * backgroundColor=\"muted\"\n * errorLevel=\"H\"\n * />\n * ```\n */\nexport function PdfQRCode({\n value,\n size = 100,\n color = 'foreground',\n backgroundColor = 'background',\n errorLevel = 'M',\n margin = 2,\n caption,\n style,\n}: PdfQRCodeProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createQRCodeStyles(theme), [theme]);\n\n // Generate QR matrix\n const matrix = useSafeMemo(\n () => generateQRMatrix(value, errorLevel, margin),\n [value, errorLevel, margin]\n );\n\n const moduleCount = matrix.length;\n const moduleSize = size / moduleCount;\n\n // Resolve colors\n const resolvedColor = resolveColor(color, theme.colors);\n const resolvedBgColor =\n backgroundColor === 'transparent' ? 'transparent' : resolveColor(backgroundColor, theme.colors);\n\n const containerStyles: Style[] = [styles.container];\n if (style) {\n containerStyles.push(style);\n }\n\n return (\n <View style={containerStyles}>\n <Svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>\n {/* Background */}\n {resolvedBgColor !== 'transparent' && (\n <Rect x={0} y={0} width={size} height={size} fill={resolvedBgColor} />\n )}\n\n {/* QR modules - render dark modules as Rects */}\n {matrix\n .flatMap((row, y) =>\n row\n .map((isDark, x) => (isDark ? { x, y } : null))\n .filter((pos): pos is { x: number; y: number } => pos !== null)\n )\n .map((pos) => (\n <Rect\n key={`qr-${pos.y}-${pos.x}`}\n x={pos.x * moduleSize}\n y={pos.y * moduleSize}\n width={moduleSize}\n height={moduleSize}\n fill={resolvedColor}\n />\n ))}\n </Svg>\n\n {caption && <PDFText style={styles.caption}>{caption}</PDFText>}\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { Image, Text as PDFText, StyleSheet, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\n/**\n * HTTP methods supported by react-pdf for authenticated image requests.\n */\nexport type PdfImageHTTPMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n\n/**\n * Image source accepted by react-pdf's Image component.\n * - string: URL, absolute file path, or base64 data URI (`data:image/png;base64,...`)\n * - object: authenticated URL with custom headers\n */\nexport type PdfImageSrc =\n | string\n | { uri: string; method?: PdfImageHTTPMethod; headers?: Record<string, string>; body?: string };\n\n/**\n * Controls how the image fills its container (mirrors CSS object-fit).\n * - cover: fill, crop excess\n * - contain: fit inside, preserve aspect ratio, may letterbox\n * - fill: stretch to exactly fill (distorts aspect ratio)\n * - none: render at intrinsic size\n */\nexport type PdfImageFit = 'cover' | 'contain' | 'fill' | 'none';\n\n/**\n * Visual layout variant.\n *\n * | Variant | Width | Height | fit | Notes |\n * |-------------|------------|---------------|---------|--------------------------|\n * | default | prop/auto | prop/auto | contain | Standard inline image |\n * | full-width | 100% | prop required | cover | Banner / hero image |\n * | thumbnail | 80pt | 80pt | cover | Small square preview |\n * | avatar | 48pt | 48pt | cover | Circle-clipped portrait |\n * | cover | 100% | 160pt | cover | Wide cover image |\n * | bordered | 100%/prop | prop | contain | Framed with border |\n * | rounded | prop/200pt | prop | contain | Rounded corners |\n */\nexport type PdfImageVariant =\n | 'default'\n | 'full-width'\n | 'thumbnail'\n | 'avatar'\n | 'cover'\n | 'bordered'\n | 'rounded';\n\nexport interface PdfImageProps {\n /** Image source: URL, base64 data URI, file path, or authenticated object. */\n src: PdfImageSrc;\n /** Display variant controlling size and appearance. @default 'default' */\n variant?: PdfImageVariant;\n /** Width in PDF points. Required unless variant provides a default. */\n width?: number | string;\n /** Height in PDF points. Required unless variant provides a default. */\n height?: number | string;\n /** How the image fills its container. @default variant-dependent */\n fit?: PdfImageFit;\n /** Focal point for objectFit crop, e.g. '50% 50%' or 'top left'. @default '50% 50%' */\n position?: string;\n /** Optional caption text rendered below the image in muted style. */\n caption?: string;\n /**\n * Aspect ratio helper: if width is provided but height is not,\n * height = width / aspectRatio. E.g. 16/9 for widescreen images.\n */\n aspectRatio?: number;\n /**\n * Border radius override in PDF points.\n * Defaults: avatar = 999 (circle), rounded = 8, others = 0.\n */\n borderRadius?: number;\n /**\n * Prevent the image (+ optional caption) from being split across page boundaries.\n * @default true — images should never be clipped at the page edge.\n */\n noWrap?: boolean;\n /** Custom style override applied to the image element. */\n style?: Style;\n}\n\n// ─── Format validation ────────────────────────────────────────────────────────\n\nconst UNSUPPORTED_FORMATS = ['webp', 'avif', 'heic', 'heif', 'ico'];\n\n/**\n * Detect image format from a string src (URL, data URI, or file path).\n * Returns null if unknown.\n */\nfunction detectFormat(src: PdfImageSrc): string | null {\n if (typeof src !== 'string') return null;\n // data URI: data:image/webp;base64,...\n const dataMatch = src.match(/^data:image\\/([a-zA-Z0-9+.-]+)/);\n if (dataMatch) return dataMatch[1].toLowerCase();\n // URL / path: strip query string then get extension\n const ext = src.split('?')[0].split('.').pop()?.toLowerCase();\n return ext ?? null;\n}\n\nfunction warnIfUnsupported(src: PdfImageSrc): void {\n const fmt = detectFormat(src);\n if (fmt && UNSUPPORTED_FORMATS.includes(fmt)) {\n console.warn(\n `[PdfImage] Unsupported format \"${fmt}\" detected. react-pdf supports: JPEG, PNG, GIF (first frame), BMP, SVG. Convert to PNG or JPEG before use (e.g. sharp().toFormat('png')).`\n );\n }\n}\n\n// ─── Variant dimension defaults ───────────────────────────────────────────────\n\ninterface VariantDefaults {\n width?: number | string;\n height?: number | string;\n fit: PdfImageFit;\n borderRadius?: number;\n}\n\nconst VARIANT_DEFAULTS: Record<PdfImageVariant, VariantDefaults> = {\n default: { fit: 'contain' },\n 'full-width': { width: '100%', fit: 'cover' },\n thumbnail: { width: 80, height: 80, fit: 'cover' },\n avatar: { width: 48, height: 48, fit: 'cover', borderRadius: 999 },\n cover: { width: '100%', height: 160, fit: 'cover' },\n bordered: { width: '100%', fit: 'contain' },\n rounded: { width: 200, fit: 'contain', borderRadius: 8 },\n};\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nfunction createImageStyles(t: PdfxTheme) {\n const { spacing } = t.primitives;\n return StyleSheet.create({\n container: {\n display: 'flex',\n flexDirection: 'column',\n },\n image: {\n // Base — dimensions are applied dynamically\n },\n imageBordered: {\n borderWidth: 1,\n borderColor: t.colors.border,\n borderStyle: 'solid',\n },\n caption: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: t.colors.mutedForeground,\n marginTop: spacing[1],\n textAlign: 'center',\n },\n });\n}\n\n// ─── PdfImage ─────────────────────────────────────────────────────────────────\n\n/**\n * PdfImage — a validated, theme-aware wrapper around react-pdf's `<Image>`.\n *\n * @example Basic usage\n * ```tsx\n * <PdfImage src=\"https://example.com/photo.jpg\" width={200} height={150} />\n * ```\n *\n * @example Base64 (recommended for reliability)\n * ```tsx\n * <PdfImage src=\"data:image/png;base64,iVBORw0KGgo...\" variant=\"avatar\" />\n * ```\n *\n * @example Full-width banner with caption\n * ```tsx\n * <PdfImage src={bannerUrl} variant=\"cover\" height={120} caption=\"Q1 2025 Team Photo\" />\n * ```\n *\n * @example Aspect ratio helper\n * ```tsx\n * <PdfImage src={chartPng} width={400} aspectRatio={16 / 9} />\n * ```\n *\n * Supported formats: JPEG, PNG, GIF (first frame only), BMP, SVG.\n * Unsupported: WebP, AVIF, HEIC — a console warning is emitted if detected.\n */\nexport function PdfImage({\n src,\n variant = 'default',\n width,\n height,\n fit,\n position = '50% 50%',\n caption,\n aspectRatio,\n borderRadius,\n noWrap = true,\n style,\n}: PdfImageProps) {\n warnIfUnsupported(src);\n\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createImageStyles(theme), [theme]);\n const defaults = VARIANT_DEFAULTS[variant];\n\n // ── Resolve dimensions ─────────────────────────────────────────────\n const resolvedWidth = width ?? defaults.width;\n const resolvedHeight: number | string | undefined = (() => {\n if (height !== undefined) return height;\n if (defaults.height !== undefined) return defaults.height;\n if (aspectRatio !== undefined && typeof resolvedWidth === 'number') {\n return resolvedWidth / aspectRatio;\n }\n return undefined;\n })();\n\n const resolvedFit = fit ?? defaults.fit;\n const resolvedRadius = borderRadius ?? defaults.borderRadius;\n\n // ── Build image style array ────────────────────────────────────────\n const imageStyles: Style[] = [styles.image];\n\n if (resolvedWidth !== undefined) imageStyles.push({ width: resolvedWidth } as Style);\n if (resolvedHeight !== undefined) imageStyles.push({ height: resolvedHeight } as Style);\n\n imageStyles.push({\n objectFit: resolvedFit,\n objectPosition: position,\n } as Style);\n\n if (resolvedRadius !== undefined) {\n imageStyles.push({ borderRadius: resolvedRadius } as Style);\n }\n\n if (variant === 'bordered') {\n imageStyles.push(styles.imageBordered);\n }\n\n if (style) imageStyles.push(style);\n\n // ── Render ─────────────────────────────────────────────────────────\n const content = (\n <View style={styles.container}>\n <Image src={src} style={imageStyles} />\n {caption ? <PDFText style={styles.caption}>{caption}</PDFText> : null}\n </View>\n );\n\n return noWrap ? <View wrap={false}>{content}</View> : content;\n}\n","import type { PdfxTheme } from '../../theme';\nimport {\n Circle,\n Defs,\n G,\n Line,\n LinearGradient,\n Path,\n Rect,\n Stop,\n Svg,\n Text as SvgText,\n} from '@react-pdf/renderer';\nimport { Text as PDFText, StyleSheet, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\n\n// ─── Graph Width Utilities ────────────────────────────────────────────────────\n\n/**\n * A4 page width in points (595pt).\n * Used for calculating safe graph widths.\n */\nexport const A4_WIDTH = 595;\n\n/**\n * Options for calculating graph width.\n */\nexport interface GraphWidthOptions {\n /** Additional container padding (e.g., Section padding). Default: 0 */\n containerPadding?: number;\n /** Additional wrapper padding (e.g., graphShell). Default: 0 */\n wrapperPadding?: number;\n /** Page size width override. Default: 595 (A4) */\n pageWidth?: number;\n}\n\n/**\n * Calculate the safe graph width based on theme page margins and container context.\n *\n * This utility ensures graphs don't overflow their container by accounting for:\n * - Page margins (from theme)\n * - Container padding (e.g., Section component)\n * - Wrapper padding (e.g., a bordered graphShell View)\n *\n * @example\n * ```tsx\n * const width = getGraphWidth(theme);\n * // For a graph inside a Section with padding=\"md\" (12pt) and a graphShell (12pt):\n * const width = getGraphWidth(theme, { containerPadding: 12, wrapperPadding: 12 });\n * ```\n */\nexport function getGraphWidth(theme: PdfxTheme, options: GraphWidthOptions = {}): number {\n const { containerPadding = 0, wrapperPadding = 0, pageWidth = A4_WIDTH } = options;\n\n const { marginLeft, marginRight } = theme.spacing.page;\n\n // Calculate available width:\n // pageWidth - page margins - container padding (both sides) - wrapper padding (both sides)\n const availableWidth =\n pageWidth - marginLeft - marginRight - containerPadding * 2 - wrapperPadding * 2;\n\n // Return floored value to avoid sub-pixel overflow, with minimum width guard\n return Math.max(Math.floor(availableWidth), 100);\n}\n\n/**\n * Pre-calculated safe graph widths for common scenarios.\n * These values work with all built-in themes on A4 pages.\n */\nexport const GRAPH_SAFE_WIDTHS = {\n /** Safe width for graph directly in page content (no extra containers) */\n default: 420,\n /** Safe width for graph inside a Section with md padding */\n inSection: 400,\n /** Safe width for graph inside a Section + bordered wrapper (like graphShell) */\n inSectionWithWrapper: 380,\n} as const;\n\n/**\n * Internal layout constants for chart margins.\n * These values ensure proper spacing for axis labels and legends.\n */\nconst CHART_MARGINS = {\n /** Left margin for charts with Y-axis labels */\n axisLeft: 40,\n /** Left margin for pie/donut charts (no axis) */\n pieLeft: 10,\n /** Right margin for all chart types */\n right: 10,\n /** Top margin for all chart types */\n top: 10,\n /** Bottom margin for charts with X-axis labels */\n axisBottom: 24,\n /** Bottom margin for pie/donut charts (no axis) */\n pieBottom: 10,\n} as const;\n\n// ─── Public Types ─────────────────────────────────────────────────────────────\n\nexport type GraphVariant = 'bar' | 'horizontal-bar' | 'line' | 'area' | 'pie' | 'donut';\n\nexport type GraphLegendPosition = 'bottom' | 'right' | 'none';\n\nexport interface GraphDataPoint {\n /** Label displayed on axis or legend. */\n label: string;\n /** Numeric value. */\n value: number;\n /** Optional per-data-point color override (hex). */\n color?: string;\n}\n\nexport interface GraphSeries {\n /** Series name shown in the legend. */\n name: string;\n /** Data points for this series. */\n data: GraphDataPoint[];\n /** Optional series-level color override (hex). */\n color?: string;\n}\n\nexport interface GraphProps {\n /** Chart type. @default 'bar' */\n variant?: GraphVariant;\n /**\n * Single-series data or multi-series data.\n * - GraphDataPoint[]: single series, used as-is.\n * - GraphSeries[]: multi-series (bar, line, area only).\n */\n data: GraphDataPoint[] | GraphSeries[];\n /** Chart title rendered above the chart area. */\n title?: string;\n /** Optional subtitle / description below title. */\n subtitle?: string;\n /** X-axis label. */\n xLabel?: string;\n /** Y-axis label. */\n yLabel?: string;\n /**\n * Total SVG width in PDF points.\n * Ignored when `fullWidth` is true.\n * @default 420\n */\n width?: number;\n /** Total SVG height in PDF points. @default 260 */\n height?: number;\n /**\n * When true, automatically calculates width based on theme page margins.\n * Accounts for page margins and optional container/wrapper padding.\n * @default false\n */\n fullWidth?: boolean;\n /**\n * Container padding to account for when using fullWidth.\n * Use this when graph is inside a Section or Card with padding.\n * @default 0\n */\n containerPadding?: number;\n /**\n * Wrapper padding to account for when using fullWidth.\n * Use this when graph is wrapped in a bordered View (like graphShell).\n * @default 0\n */\n wrapperPadding?: number;\n /** Override the color palette (hex values). */\n colors?: string[];\n /** Show numeric value labels on bars or data points. @default false */\n showValues?: boolean;\n /** Show horizontal grid lines. @default true */\n showGrid?: boolean;\n /** Legend position. @default 'bottom' */\n legend?: GraphLegendPosition;\n /** For donut variant: text displayed in the center hole. */\n centerLabel?: string;\n /** For line/area: show dots at each data point. @default true */\n showDots?: boolean;\n /** For line/area: render smooth bezier curves (false = straight segments). @default false */\n smooth?: boolean;\n /** Number of Y-axis ticks. @default 5 */\n yTicks?: number;\n /**\n * Prevent the chart from splitting across page boundaries.\n * @default true\n */\n noWrap?: boolean;\n /** Custom style override applied to the outer container View. */\n style?: Style;\n}\n\n// ─── Internal Layout ──────────────────────────────────────────────────────────\n\ninterface ChartLayout {\n svgW: number;\n svgH: number;\n chartX: number; // left edge of chart area\n chartY: number; // top edge of chart area\n chartW: number; // usable chart width\n chartH: number; // usable chart height\n yMin: number;\n yMax: number;\n yTicks: number[];\n xLabels: string[];\n}\n\nfunction createGraphStyles(t: PdfxTheme) {\n return StyleSheet.create({\n container: {\n display: 'flex',\n flexDirection: 'column',\n marginBottom: t.spacing.componentGap,\n },\n title: {\n fontFamily: t.typography.heading.fontFamily,\n fontSize: t.primitives.typography.base,\n fontWeight: t.primitives.fontWeights.semibold,\n color: t.colors.foreground,\n marginBottom: 2,\n },\n subtitle: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: t.colors.mutedForeground,\n marginBottom: 6,\n },\n legendRow: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 12,\n marginTop: 6,\n },\n legendColumn: {\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n marginLeft: 12,\n marginTop: 18,\n minWidth: 120,\n },\n legendItem: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n },\n legendText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.primitives.typography.xs,\n color: t.colors.mutedForeground,\n },\n chartWithRightLegend: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n },\n });\n}\n\n// ─── Utilities ────────────────────────────────────────────────────────────────\n\n/** Normalize to always work with GraphSeries[]. */\nfunction normalizeData(data: GraphDataPoint[] | GraphSeries[]): GraphSeries[] {\n if (data.length === 0) return [];\n if ('label' in data[0] && 'value' in data[0]) {\n return [{ name: 'Series 1', data: data as GraphDataPoint[] }];\n }\n return data as GraphSeries[];\n}\n\n/** Compute nice Y-axis ticks for a given value range. */\nfunction computeYTicks(min: number, max: number, count: number): number[] {\n if (min === max) return [0, max || 1];\n const step = (max - min) / (count - 1);\n return Array.from({ length: count }, (_, i) => {\n const v = min + i * step;\n return Math.round(v * 100) / 100;\n });\n}\n\n/** Format a number for display on axis labels. */\nfunction fmtNum(v: number): string {\n if (Math.abs(v) >= 1_000_000) return `${(v / 1_000_000).toFixed(1)}M`;\n if (Math.abs(v) >= 1_000) return `${(v / 1_000).toFixed(1)}K`;\n if (!Number.isInteger(v)) return v.toFixed(1);\n return String(v);\n}\n\n/** Truncate a label to at most maxLen characters. */\nfunction truncate(s: string, maxLen: number): string {\n return s.length > maxLen ? `${s.slice(0, maxLen - 1)}…` : s;\n}\n\n/** Polar to Cartesian coordinate conversion for pie/donut arcs. */\nfunction polarToCartesian(cx: number, cy: number, r: number, angleDeg: number) {\n const rad = ((angleDeg - 90) * Math.PI) / 180;\n return { x: cx + r * Math.cos(rad), y: cy + r * Math.sin(rad) };\n}\n\n/** Build an SVG arc path for a pie/donut slice. */\nfunction arcPath(\n cx: number,\n cy: number,\n r: number,\n startAngle: number,\n endAngle: number,\n innerR = 0\n): string {\n // Clamp to prevent degenerate arcs (full 360°)\n const safeEnd = Math.min(endAngle, startAngle + 359.999);\n const large = safeEnd - startAngle > 180 ? 1 : 0;\n\n const s = polarToCartesian(cx, cy, r, safeEnd);\n const e = polarToCartesian(cx, cy, r, startAngle);\n\n if (innerR === 0) {\n return `M ${cx} ${cy} L ${s.x} ${s.y} A ${r} ${r} 0 ${large} 0 ${e.x} ${e.y} Z`;\n }\n\n const si = polarToCartesian(cx, cy, innerR, safeEnd);\n const ei = polarToCartesian(cx, cy, innerR, startAngle);\n return [\n `M ${s.x} ${s.y}`,\n `A ${r} ${r} 0 ${large} 0 ${e.x} ${e.y}`,\n `L ${ei.x} ${ei.y}`,\n `A ${innerR} ${innerR} 0 ${large} 1 ${si.x} ${si.y}`,\n 'Z',\n ].join(' ');\n}\n\n/** Compute smooth bezier control points (Catmull-Rom → cubic bezier). */\nfunction smoothPath(points: { x: number; y: number }[], tension = 0.4): string {\n if (points.length < 2) return '';\n if (points.length === 2) {\n return `M ${points[0].x} ${points[0].y} L ${points[1].x} ${points[1].y}`;\n }\n const parts: string[] = [`M ${points[0].x} ${points[0].y}`];\n for (let i = 0; i < points.length - 1; i++) {\n const p0 = points[Math.max(i - 1, 0)];\n const p1 = points[i];\n const p2 = points[i + 1];\n const p3 = points[Math.min(i + 2, points.length - 1)];\n const cp1x = p1.x + (p2.x - p0.x) * tension;\n const cp1y = p1.y + (p2.y - p0.y) * tension;\n const cp2x = p2.x - (p3.x - p1.x) * tension;\n const cp2y = p2.y - (p3.y - p1.y) * tension;\n parts.push(`C ${cp1x} ${cp1y} ${cp2x} ${cp2y} ${p2.x} ${p2.y}`);\n }\n return parts.join(' ');\n}\n\n// ─── Default palette ──────────────────────────────────────────────────────────\n\nfunction getDefaultPalette(t: PdfxTheme): string[] {\n return [\n t.colors.primary,\n t.colors.info,\n t.colors.success,\n t.colors.warning,\n t.colors.destructive,\n '#8B5CF6',\n '#F97316',\n '#14B8A6',\n ];\n}\n\n// ─── Render: Bar Chart ────────────────────────────────────────────────────────\n\nfunction renderBarChart(\n series: GraphSeries[],\n layout: ChartLayout,\n palette: string[],\n showGrid: boolean,\n showValues: boolean,\n theme: PdfxTheme\n) {\n const { chartX, chartY, chartW, chartH, yMin, yMax, yTicks, xLabels } = layout;\n const nCategories = xLabels.length;\n const nSeries = series.length;\n const groupGap = 0.25;\n const groupW = chartW / nCategories;\n const barW = (groupW * (1 - groupGap)) / nSeries;\n const textColor = theme.colors.mutedForeground;\n const gridColor = theme.colors.border;\n const axisColor = theme.colors.foreground;\n const range = yMax - yMin || 1;\n\n return (\n <>\n {/* Grid lines + Y-axis labels */}\n {yTicks.map((tick) => {\n const ty = chartY + chartH - ((tick - yMin) / range) * chartH;\n return (\n <G key={`grid-${tick}`}>\n {showGrid && (\n <Line\n x1={chartX}\n y1={ty}\n x2={chartX + chartW}\n y2={ty}\n stroke={gridColor}\n strokeWidth={0.5}\n strokeDasharray=\"3 3\"\n />\n )}\n <SvgText\n x={chartX - 4}\n y={ty + 3}\n fill={textColor}\n textAnchor=\"end\"\n style={{ fontSize: 7 }}\n >\n {fmtNum(tick)}\n </SvgText>\n </G>\n );\n })}\n\n {/* Baseline */}\n <Line\n x1={chartX}\n y1={chartY + chartH}\n x2={chartX + chartW}\n y2={chartY + chartH}\n stroke={axisColor}\n strokeWidth={1}\n />\n\n {/* Bars + X labels */}\n {xLabels.map((label, ci) => {\n const groupLeft = chartX + ci * groupW + groupW * (groupGap / 2);\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: static PDF chart data — index is the stable identity\n <G key={`group-${ci}`}>\n {series.map((s, si) => {\n const val = s.data[ci]?.value ?? 0;\n const color = s.data[ci]?.color ?? s.color ?? palette[si % palette.length];\n const barH = ((val - yMin) / range) * chartH;\n const bx = groupLeft + si * barW;\n const by = chartY + chartH - barH;\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: static PDF chart data — index is the stable identity\n <G key={`bar-${ci}-${si}`}>\n <Rect x={bx} y={by} width={barW - 1} height={barH} fill={color} />\n {showValues && barH > 10 && (\n <SvgText\n x={bx + barW / 2 - 0.5}\n y={by - 2}\n fill={axisColor}\n textAnchor=\"middle\"\n style={{ fontSize: 6 }}\n >\n {fmtNum(val)}\n </SvgText>\n )}\n </G>\n );\n })}\n <SvgText\n x={groupLeft + (nSeries * barW) / 2}\n y={chartY + chartH + 10}\n fill={textColor}\n textAnchor=\"middle\"\n style={{ fontSize: 7 }}\n >\n {truncate(label, 10)}\n </SvgText>\n </G>\n );\n })}\n </>\n );\n}\n\n// ─── Render: Horizontal Bar Chart ────────────────────────────────────────────\n\nfunction renderHorizontalBarChart(\n series: GraphSeries[],\n layout: ChartLayout,\n palette: string[],\n showValues: boolean,\n theme: PdfxTheme\n) {\n const { chartX, chartY, chartW, chartH, xLabels } = layout;\n const nCategories = xLabels.length;\n const allValues = series.flatMap((s) => s.data.map((d) => d.value));\n const maxVal = Math.max(...allValues, 1);\n const rowH = chartH / nCategories;\n const barH = rowH * 0.5;\n const textColor = theme.colors.mutedForeground;\n const axisColor = theme.colors.foreground;\n const labelW = 60; // reserved for labels on left\n\n return (\n <>\n {xLabels.map((label, ci) => {\n const rowY = chartY + ci * rowH;\n const val = series[0]?.data[ci]?.value ?? 0;\n const color =\n series[0]?.data[ci]?.color ?? series[0]?.color ?? palette[ci % palette.length];\n const barW = (val / maxVal) * (chartW - labelW);\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: static PDF chart data — index is the stable identity\n <G key={`hbar-${ci}`}>\n {/* Row label */}\n <SvgText\n x={chartX + labelW - 4}\n y={rowY + rowH / 2 + 3}\n fill={textColor}\n textAnchor=\"end\"\n style={{ fontSize: 7 }}\n >\n {truncate(label, 14)}\n </SvgText>\n {/* Bar */}\n <Rect\n x={chartX + labelW}\n y={rowY + (rowH - barH) / 2}\n width={Math.max(barW, 1)}\n height={barH}\n fill={color}\n />\n {/* Value label */}\n {showValues && (\n <SvgText\n x={chartX + labelW + barW + 3}\n y={rowY + rowH / 2 + 3}\n fill={axisColor}\n textAnchor=\"start\"\n style={{ fontSize: 6 }}\n >\n {fmtNum(val)}\n </SvgText>\n )}\n </G>\n );\n })}\n {/* Baseline */}\n <Line\n x1={chartX + labelW}\n y1={chartY}\n x2={chartX + labelW}\n y2={chartY + chartH}\n stroke={axisColor}\n strokeWidth={1}\n />\n </>\n );\n}\n\n// ─── Render: Line / Area Chart ───────────────────────────────────────────────\n\nfunction renderLineAreaChart(\n series: GraphSeries[],\n layout: ChartLayout,\n palette: string[],\n showGrid: boolean,\n showValues: boolean,\n showDots: boolean,\n smooth: boolean,\n isArea: boolean,\n theme: PdfxTheme\n) {\n const { chartX, chartY, chartW, chartH, yMin, yMax, yTicks, xLabels } = layout;\n const range = yMax - yMin || 1;\n const textColor = theme.colors.mutedForeground;\n const gridColor = theme.colors.border;\n const axisColor = theme.colors.foreground;\n const nPoints = xLabels.length;\n\n const xFor = (i: number) => chartX + (i / Math.max(nPoints - 1, 1)) * chartW;\n const yFor = (v: number) => chartY + chartH - ((v - yMin) / range) * chartH;\n\n return (\n <>\n {/* Grid + Y-axis labels */}\n {yTicks.map((tick) => {\n const ty = yFor(tick);\n return (\n <G key={`grid-${tick}`}>\n {showGrid && (\n <Line\n x1={chartX}\n y1={ty}\n x2={chartX + chartW}\n y2={ty}\n stroke={gridColor}\n strokeWidth={0.5}\n strokeDasharray=\"3 3\"\n />\n )}\n <SvgText\n x={chartX - 4}\n y={ty + 3}\n fill={textColor}\n textAnchor=\"end\"\n style={{ fontSize: 7 }}\n >\n {fmtNum(tick)}\n </SvgText>\n </G>\n );\n })}\n\n {/* Baseline */}\n <Line\n x1={chartX}\n y1={chartY + chartH}\n x2={chartX + chartW}\n y2={chartY + chartH}\n stroke={axisColor}\n strokeWidth={1}\n />\n\n {/* Series lines / areas */}\n {series.map((s, si) => {\n const color = s.color ?? palette[si % palette.length];\n const points = s.data.map((d, i) => ({ x: xFor(i), y: yFor(d.value) }));\n\n const lineDStr = smooth\n ? smoothPath(points)\n : `M ${points.map((p) => `${p.x} ${p.y}`).join(' L ')}`;\n\n const areaPath =\n isArea && points.length > 1\n ? `${lineDStr} L ${points[points.length - 1].x} ${chartY + chartH} L ${points[0].x} ${chartY + chartH} Z`\n : null;\n\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: static PDF chart data — index is the stable identity\n <G key={`series-${si}`}>\n {isArea && areaPath && (\n <Path d={areaPath} fill={color} fillOpacity={0.2} stroke=\"none\" />\n )}\n <Path d={lineDStr} stroke={color} strokeWidth={2} fill=\"none\" />\n {showDots &&\n points.map((p, pi) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: static PDF chart data — index is the stable identity\n <Circle key={`dot-${pi}`} cx={p.x} cy={p.y} r={3} fill={color} />\n ))}\n {showValues &&\n points.map((p, pi) => (\n <SvgText\n // biome-ignore lint/suspicious/noArrayIndexKey: static PDF chart data — index is the stable identity\n key={`val-${pi}`}\n x={p.x}\n y={p.y - 5}\n fill={color}\n textAnchor=\"middle\"\n style={{ fontSize: 6 }}\n >\n {fmtNum(s.data[pi].value)}\n </SvgText>\n ))}\n </G>\n );\n })}\n\n {/* X-axis labels */}\n {xLabels.map((label, i) => (\n <SvgText\n key={`xlabel-${label}`}\n x={xFor(i)}\n y={chartY + chartH + 10}\n fill={textColor}\n textAnchor=\"middle\"\n style={{ fontSize: 7 }}\n >\n {truncate(label, 8)}\n </SvgText>\n ))}\n </>\n );\n}\n\n// ─── Render: Pie / Donut Chart ───────────────────────────────────────────────\n\nfunction renderPieDonutChart(\n series: GraphSeries[],\n layout: ChartLayout,\n palette: string[],\n centerLabel: string | undefined,\n isDonut: boolean,\n theme: PdfxTheme\n) {\n const { svgW, svgH } = layout;\n const cx = svgW / 2;\n const cy = svgH / 2;\n const r = Math.min(svgW, svgH) / 2 - 20;\n const innerR = isDonut ? r * 0.52 : 0;\n const textColor = theme.colors.mutedForeground;\n\n const data = series[0]?.data ?? [];\n const total = data.reduce((sum, d) => sum + d.value, 0) || 1;\n\n let currentAngle = 0;\n\n return (\n <>\n {data.map((d, i) => {\n const color = d.color ?? palette[i % palette.length];\n const sweep = (d.value / total) * 360;\n const midAngle = currentAngle + sweep / 2;\n const path = arcPath(cx, cy, r, currentAngle, currentAngle + sweep, innerR);\n currentAngle += sweep;\n\n // Label position — slightly outside the arc\n const labelR = r * 1.18;\n const lp = polarToCartesian(cx, cy, labelR, midAngle);\n const anchor = lp.x > cx ? 'start' : 'end';\n\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: static PDF chart data — index is the stable identity\n <G key={`slice-${i}`}>\n <Path d={path} fill={color} stroke=\"white\" strokeWidth={1} />\n {/* Show label only if slice is large enough to label */}\n {sweep > 15 && (\n <SvgText\n x={lp.x}\n y={lp.y + 3}\n fill={textColor}\n textAnchor={anchor}\n style={{ fontSize: 7 }}\n >\n {truncate(d.label, 10)}\n </SvgText>\n )}\n </G>\n );\n })}\n\n {/* Donut center label */}\n {isDonut && centerLabel && (\n <>\n <Circle cx={cx} cy={cy} r={innerR} fill=\"white\" />\n <SvgText\n x={cx}\n y={cy + 4}\n fill={theme.colors.foreground}\n textAnchor=\"middle\"\n style={{ fontSize: 9, fontWeight: 'bold' }}\n >\n {centerLabel}\n </SvgText>\n </>\n )}\n </>\n );\n}\n\n// ─── Legend ───────────────────────────────────────────────────────────────────\n\nfunction Legend({\n series,\n palette,\n styles,\n position = 'bottom',\n}: {\n series: GraphSeries[];\n palette: string[];\n styles: ReturnType<typeof createGraphStyles>;\n position?: 'bottom' | 'right';\n}) {\n const containerStyle = position === 'right' ? styles.legendColumn : styles.legendRow;\n\n return (\n <View style={containerStyle}>\n {series.map((s, i) => (\n <View key={s.name} style={styles.legendItem}>\n <Svg width={10} height={10}>\n <Rect x={0} y={2} width={8} height={8} fill={s.color ?? palette[i % palette.length]} />\n </Svg>\n <PDFText style={styles.legendText}>{s.name}</PDFText>\n </View>\n ))}\n </View>\n );\n}\n\n// ─── PdfGraph ─────────────────────────────────────────────────────────────────\n\n/**\n * PdfGraph — renders bar, horizontal-bar, line, area, pie, and donut charts\n * natively inside react-pdf documents using SVG primitives.\n *\n * No external chart libraries are required or used — all rendering is done via\n * react-pdf's built-in SVG support (`<Svg>`, `<Rect>`, `<Path>`, `<Line>`, etc.).\n *\n * @example Bar chart\n * ```tsx\n * <PdfGraph\n * variant=\"bar\"\n * title=\"Monthly Revenue\"\n * data={[\n * { label: 'Jan', value: 42000 },\n * { label: 'Feb', value: 38000 },\n * { label: 'Mar', value: 55000 },\n * ]}\n * />\n * ```\n *\n * @example Donut chart with center label\n * ```tsx\n * <PdfGraph\n * variant=\"donut\"\n * data={[\n * { label: 'Product A', value: 45 },\n * { label: 'Product B', value: 30 },\n * { label: 'Other', value: 25 },\n * ]}\n * centerLabel=\"$1.2M\"\n * />\n * ```\n *\n * **Limitations (by design):**\n * - No interactivity (PDFs are static)\n * - No animations\n * - SVG Text inside charts uses SVG font attributes (not react-pdf StyleSheet fonts)\n * - For print PDFs use SVG-friendly fonts registered with Font.register()\n */\nexport function PdfGraph({\n variant = 'bar',\n data,\n title,\n subtitle,\n xLabel,\n yLabel,\n width: explicitWidth,\n height = 260,\n fullWidth = false,\n containerPadding = 0,\n wrapperPadding = 0,\n colors,\n showValues = false,\n showGrid = true,\n legend = 'bottom',\n centerLabel,\n showDots = true,\n smooth = false,\n yTicks: yTickCount = 5,\n noWrap = true,\n style,\n}: GraphProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createGraphStyles(theme), [theme]);\n const palette = colors ?? getDefaultPalette(theme);\n const series = normalizeData(data);\n\n // ── Calculate width ─────────────────────────────────────────────────\n // If fullWidth is enabled, calculate based on theme; otherwise use explicit or default\n const width = useSafeMemo(() => {\n if (fullWidth) {\n return getGraphWidth(theme, { containerPadding, wrapperPadding });\n }\n return explicitWidth ?? GRAPH_SAFE_WIDTHS.default;\n }, [fullWidth, explicitWidth, theme, containerPadding, wrapperPadding]);\n\n // ── Compute layout ────────────────────────────────────────────────\n const isPieOrDonut = variant === 'pie' || variant === 'donut';\n\n // Use layout constants for margins\n const marginLeft = isPieOrDonut ? CHART_MARGINS.pieLeft : CHART_MARGINS.axisLeft;\n const marginRight = CHART_MARGINS.right;\n const marginTop = CHART_MARGINS.top;\n const marginBottom = isPieOrDonut ? CHART_MARGINS.pieBottom : CHART_MARGINS.axisBottom;\n\n const chartX = marginLeft;\n const chartY = marginTop;\n const chartW = width - marginLeft - marginRight;\n const chartH = height - marginTop - marginBottom;\n\n const allValues = series.flatMap((s) => s.data.map((d) => d.value));\n const rawMin = Math.min(...allValues, 0);\n const rawMax = Math.max(...allValues, 1);\n const yMin = rawMin >= 0 ? 0 : rawMin;\n const yMax = rawMax + (rawMax - yMin) * 0.08; // 8% headroom\n\n const yTickValues = computeYTicks(yMin, yMax, yTickCount);\n const xLabels = series[0]?.data.map((d) => d.label) ?? [];\n\n const layout: ChartLayout = {\n svgW: width,\n svgH: height,\n chartX,\n chartY,\n chartW,\n chartH,\n yMin,\n yMax,\n yTicks: yTickValues,\n xLabels,\n };\n\n // ── Render chart body ─────────────────────────────────────────────\n let chartContent: React.ReactNode = null;\n\n switch (variant) {\n case 'bar':\n chartContent = renderBarChart(series, layout, palette, showGrid, showValues, theme);\n break;\n case 'horizontal-bar':\n chartContent = renderHorizontalBarChart(series, layout, palette, showValues, theme);\n break;\n case 'line':\n chartContent = renderLineAreaChart(\n series,\n layout,\n palette,\n showGrid,\n showValues,\n showDots,\n smooth,\n false,\n theme\n );\n break;\n case 'area':\n chartContent = renderLineAreaChart(\n series,\n layout,\n palette,\n showGrid,\n showValues,\n showDots,\n smooth,\n true,\n theme\n );\n break;\n case 'pie':\n chartContent = renderPieDonutChart(series, layout, palette, undefined, false, theme);\n break;\n case 'donut':\n chartContent = renderPieDonutChart(series, layout, palette, centerLabel, true, theme);\n break;\n }\n\n const showLegend = legend !== 'none' && !isPieOrDonut;\n\n const containerStyles: Style[] = [styles.container];\n if (style) containerStyles.push(style);\n\n const content = (\n <View style={containerStyles}>\n {title && <PDFText style={styles.title}>{title}</PDFText>}\n {subtitle && <PDFText style={styles.subtitle}>{subtitle}</PDFText>}\n <View style={legend === 'right' ? styles.chartWithRightLegend : undefined}>\n <Svg width={width} height={height}>\n <Defs>\n <LinearGradient id=\"bgGrad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <Stop offset=\"0%\" stopColor={theme.colors.background} stopOpacity={0} />\n <Stop offset=\"100%\" stopColor={theme.colors.background} stopOpacity={0} />\n </LinearGradient>\n </Defs>\n {chartContent}\n {!isPieOrDonut && xLabel && (\n <SvgText\n x={chartX + chartW / 2}\n y={height - 2}\n fill={theme.colors.mutedForeground}\n textAnchor=\"middle\"\n style={{ fontSize: 8 }}\n >\n {xLabel}\n </SvgText>\n )}\n {!isPieOrDonut && yLabel && (\n <SvgText\n x={2}\n y={10}\n fill={theme.colors.mutedForeground}\n textAnchor=\"start\"\n style={{ fontSize: 8 }}\n >\n {yLabel}\n </SvgText>\n )}\n </Svg>\n {showLegend && legend === 'right' && Legend({ series, palette, styles, position: 'right' })}\n </View>\n {showLegend && legend === 'bottom' && Legend({ series, palette, styles, position: 'bottom' })}\n </View>\n );\n\n return noWrap ? <View wrap={false}>{content}</View> : content;\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\nimport type { PdfFormVariant } from './form.types';\n\n/**\n * Creates all fillable-form styles derived from the active theme.\n *\n * Design principles:\n * - Labels: xs uppercase tracked — professional, scannable\n * - Field areas: clearly defined blank zones (by variant)\n * - Spacing: tight but breathable — 12pt between fields, 20pt between groups\n * - Group titles: small-caps divider line style (like Notion forms)\n *\n * @param t - The resolved PdfxTheme instance.\n * @param variant - Visual style variant for the field areas.\n */\nexport function createFormStyles(t: PdfxTheme, variant: PdfFormVariant = 'underline') {\n const { spacing, borderRadius, fontWeights, typography } = t.primitives;\n const borderColor = t.colors.border;\n const hairline = 0.75; // lighter than spacing[0.5]=2pt — more refined\n const rule = 1; // group title rule\n\n // ─── Field area visual per variant ──────────────────────────────────────────\n const fieldAreaByVariant: Record<PdfFormVariant, object> = {\n underline: {\n borderBottomWidth: 1,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n },\n box: {\n borderWidth: hairline,\n borderColor: borderColor,\n borderStyle: 'solid',\n borderRadius: borderRadius.sm,\n },\n outlined: {\n borderWidth: hairline,\n borderColor: t.colors.foreground,\n borderStyle: 'solid',\n borderRadius: borderRadius.md,\n },\n ghost: {\n backgroundColor: t.colors.muted,\n borderRadius: borderRadius.sm,\n },\n };\n\n const hasPadding = variant === 'box' || variant === 'outlined' || variant === 'ghost';\n\n return StyleSheet.create({\n // ─── Form root ───────────────────────────────────────────────────────────\n root: {\n width: '100%',\n marginBottom: t.spacing.componentGap,\n },\n\n // ─── Form-level title block ───────────────────────────────────────────────\n formTitle: {\n fontFamily: t.typography.heading.fontFamily,\n fontSize: typography.xl,\n lineHeight: t.typography.heading.lineHeight,\n color: t.colors.foreground,\n fontWeight: fontWeights.bold,\n marginBottom: spacing[1],\n },\n formSubtitle: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.sm,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.mutedForeground,\n marginBottom: spacing[3],\n },\n formDivider: {\n borderBottomWidth: rule,\n borderBottomColor: borderColor,\n borderBottomStyle: 'solid',\n marginBottom: spacing[4],\n },\n\n // ─── Field group ─────────────────────────────────────────────────────────\n group: {\n marginBottom: spacing[5],\n },\n // Group title: small caps style with a faint rule underneath\n groupTitle: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n lineHeight: 1.2,\n color: t.colors.mutedForeground,\n fontWeight: fontWeights.semibold,\n textTransform: 'uppercase',\n letterSpacing: 0.8,\n marginBottom: spacing[3],\n },\n\n // ─── Multi-column layout ──────────────────────────────────────────────────\n columnsRow: {\n flexDirection: 'row',\n gap: spacing[4],\n },\n column: {\n flex: 1,\n },\n\n // ─── Field: label ABOVE ───────────────────────────────────────────────────\n // Compact vertical rhythm — 12pt between fields\n fieldAbove: {\n marginBottom: spacing[3],\n width: '100%',\n },\n labelAbove: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n lineHeight: 1.2,\n color: t.colors.mutedForeground,\n fontWeight: fontWeights.medium,\n textTransform: 'uppercase',\n letterSpacing: 0.5,\n marginBottom: spacing[1],\n },\n\n // ─── Field: label LEFT ────────────────────────────────────────────────────\n fieldLeft: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n marginBottom: spacing[3],\n gap: spacing[2],\n },\n labelLeft: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n lineHeight: t.typography.body.lineHeight,\n color: t.colors.mutedForeground,\n fontWeight: fontWeights.medium,\n width: 80,\n paddingBottom: hasPadding ? spacing[1] : 0,\n },\n fieldLeftArea: {\n flex: 1,\n },\n\n // ─── Blank field area ─────────────────────────────────────────────────────\n fieldArea: {\n width: '100%' as const,\n ...fieldAreaByVariant[variant],\n },\n\n // Hint text inside the field area (format guide)\n hint: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n color: t.colors.mutedForeground,\n opacity: 0.14,\n paddingTop: hasPadding ? spacing[1] : spacing[0.5],\n paddingBottom: hasPadding ? spacing[1] : 0,\n paddingHorizontal: hasPadding ? spacing[2] : 0,\n },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createFormStyles } from './form.styles';\nimport type { FormLayout, PdfFormField, PdfFormGroup, PdfFormProps } from './form.types';\n\n// ─── Helpers (plain functions, not React components) ──────────────────────────\n// Using plain functions ensures the rendered tree is fully resolved when\n// components are called directly in unit tests (findText traversal works).\n\nfunction renderFieldAbove(\n field: PdfFormField,\n idx: number,\n styles: ReturnType<typeof createFormStyles>\n) {\n const areaHeight = field.height ?? 18;\n const areaStyle: Style[] = [styles.fieldArea, { minHeight: areaHeight }];\n\n return (\n <View key={`${field.label}-${idx}`} style={styles.fieldAbove}>\n <PDFText style={styles.labelAbove}>{field.label}</PDFText>\n <View style={areaStyle}>\n {field.hint ? <PDFText style={styles.hint}>{field.hint}</PDFText> : null}\n </View>\n </View>\n );\n}\n\nfunction renderFieldLeft(\n field: PdfFormField,\n idx: number,\n styles: ReturnType<typeof createFormStyles>\n) {\n const areaHeight = field.height ?? 16;\n const areaStyle: Style[] = [styles.fieldArea, styles.fieldLeftArea, { minHeight: areaHeight }];\n\n return (\n <View key={`${field.label}-${idx}`} style={styles.fieldLeft}>\n <PDFText style={styles.labelLeft}>{field.label}</PDFText>\n <View style={areaStyle}>\n {field.hint ? <PDFText style={styles.hint}>{field.hint}</PDFText> : null}\n </View>\n </View>\n );\n}\n\nfunction renderGroup(\n group: PdfFormGroup,\n gi: number,\n styles: ReturnType<typeof createFormStyles>,\n labelPosition: 'above' | 'left'\n) {\n const layout: FormLayout = group.layout ?? 'single';\n const cols = layout === 'three-column' ? 3 : layout === 'two-column' ? 2 : 1;\n\n const renderField = (field: PdfFormField, idx: number) =>\n labelPosition === 'left'\n ? renderFieldLeft(field, idx, styles)\n : renderFieldAbove(field, idx, styles);\n\n if (cols === 1) {\n return (\n <View key={`group-${gi}`} style={styles.group}>\n {group.title ? <PDFText style={styles.groupTitle}>{group.title}</PDFText> : null}\n {group.fields.map(renderField)}\n </View>\n );\n }\n\n // Split fields evenly across columns\n const chunkSize = Math.ceil(group.fields.length / cols);\n const chunks: PdfFormField[][] = [];\n for (let i = 0; i < group.fields.length; i += chunkSize) {\n chunks.push(group.fields.slice(i, i + chunkSize));\n }\n while (chunks.length < cols) {\n chunks.push([]);\n }\n\n return (\n <View key={`group-${gi}`} style={styles.group}>\n {group.title ? <PDFText style={styles.groupTitle}>{group.title}</PDFText> : null}\n <View style={styles.columnsRow}>\n {chunks.map((chunk, ci) => (\n <View key={`col-${gi}-${chunk[0]?.label ?? ci}`} style={styles.column}>\n {chunk.map(renderField)}\n </View>\n ))}\n </View>\n </View>\n );\n}\n\n// ─── PdfForm ──────────────────────────────────────────────────────────────────\n\nexport function PdfForm({\n title,\n subtitle,\n groups,\n variant = 'underline',\n labelPosition = 'above',\n noWrap = false,\n style,\n}: PdfFormProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createFormStyles(theme, variant), [theme, variant]);\n\n const rootStyles: Style[] = [styles.root];\n if (style) rootStyles.push(style);\n\n const inner = (\n <View style={rootStyles}>\n {title ? <PDFText style={styles.formTitle}>{title}</PDFText> : null}\n {subtitle ? <PDFText style={styles.formSubtitle}>{subtitle}</PDFText> : null}\n {title || subtitle ? <View style={styles.formDivider} /> : null}\n {groups.map((group, gi) => renderGroup(group, gi, styles, labelPosition))}\n </View>\n );\n\n return noWrap ? <View wrap={false}>{inner}</View> : inner;\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\n/**\n * Creates all signature block styles derived from the active theme.\n * Returns a StyleSheet covering single, double, and inline signature layouts.\n * @param t - The resolved PdfxTheme instance.\n */\nexport function createSignatureStyles(t: PdfxTheme) {\n const { spacing, fontWeights, typography } = t.primitives;\n return StyleSheet.create({\n container: {\n marginTop: t.spacing.sectionGap,\n marginBottom: t.spacing.componentGap,\n },\n block: { flex: 1, minWidth: 140 },\n label: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.sm,\n color: t.colors.mutedForeground,\n marginBottom: spacing[1],\n },\n line: {\n borderBottomWidth: 1,\n borderBottomColor: t.colors.foreground,\n borderBottomStyle: 'solid',\n minHeight: spacing[6],\n marginBottom: spacing[1],\n },\n name: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n color: t.colors.foreground,\n fontWeight: fontWeights.semibold,\n },\n titleText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.sm,\n color: t.colors.mutedForeground,\n },\n dateText: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.xs,\n color: t.colors.mutedForeground,\n marginTop: 1,\n },\n doubleRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n gap: spacing[8],\n },\n inlineRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing[3],\n flexWrap: 'wrap',\n },\n inlineLabel: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: typography.sm,\n color: t.colors.mutedForeground,\n },\n inlineLine: {\n borderBottomWidth: 1,\n borderBottomColor: t.colors.foreground,\n borderBottomStyle: 'solid',\n minWidth: 120,\n height: spacing[5],\n paddingHorizontal: spacing[2],\n },\n inlineName: {\n fontFamily: t.typography.body.fontFamily,\n fontSize: t.typography.body.fontSize,\n color: t.colors.foreground,\n },\n });\n}\n","import { Text as PDFText, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createSignatureStyles } from './signature.styles';\nimport type { PdfSignatureBlockProps, SignatureSigner } from './signature.types';\n\nfunction renderSignerBlock(\n signer: SignatureSigner,\n styles: ReturnType<typeof createSignatureStyles>\n) {\n return (\n <View style={styles.block}>\n {signer.label ? <PDFText style={styles.label}>{signer.label}</PDFText> : null}\n <View style={styles.line} />\n {signer.name ? <PDFText style={styles.name}>{signer.name}</PDFText> : null}\n {signer.title ? <PDFText style={styles.titleText}>{signer.title}</PDFText> : null}\n {signer.date ? <PDFText style={styles.dateText}>{signer.date}</PDFText> : null}\n </View>\n );\n}\n\nconst DEFAULT_SIGNERS: [SignatureSigner, SignatureSigner] = [\n { label: 'Authorized by', name: '', title: '', date: '' },\n { label: 'Approved by', name: '', title: '', date: '' },\n];\n\nexport function PdfSignatureBlock({\n variant = 'single',\n label = 'Signature',\n name,\n title,\n date,\n signers,\n style,\n}: PdfSignatureBlockProps) {\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createSignatureStyles(theme), [theme]);\n const containerStyles: Style[] = [styles.container];\n const styleArray = style ? [...containerStyles, style] : containerStyles;\n\n if (variant === 'inline') {\n return (\n // wrap={false}: inline signature lines must never be split across pages\n <View wrap={false} style={styleArray}>\n <View style={styles.inlineRow}>\n <PDFText style={styles.inlineLabel}>{`${label}:`}</PDFText>\n <View style={styles.inlineLine} />\n {name ? <PDFText style={styles.inlineName}>{name}</PDFText> : null}\n </View>\n </View>\n );\n }\n\n if (variant === 'double') {\n const [first, second] = signers ?? DEFAULT_SIGNERS;\n return (\n // wrap={false}: double-signer block must never be split across pages\n <View wrap={false} style={styleArray}>\n <View style={styles.doubleRow}>\n {renderSignerBlock(first, styles)}\n {renderSignerBlock(second, styles)}\n </View>\n </View>\n );\n }\n\n // wrap={false}: single signer block must never be split across pages\n return (\n <View wrap={false} style={styleArray}>\n {renderSignerBlock({ label, name, title, date }, styles)}\n </View>\n );\n}\n","import { View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport type { ReactNode } from 'react';\n\nexport interface KeepTogetherProps {\n /**\n * Content to keep on the same page.\n * The outer View is rendered with wrap={false} so the engine treats this subtree as atomic.\n * If the content is taller than one full page it will overflow (not split), so only use\n * this for content that is guaranteed to fit on a single page.\n */\n children?: ReactNode;\n /**\n * If provided, moves the entire block to the next page when fewer than\n * this many PDF points remain on the current page.\n * Useful as a softer alternative to wrap={false} for headings/labels with following content.\n */\n minPresenceAhead?: number;\n /** Custom style override applied to the wrapping View. */\n style?: Style;\n}\n\n/**\n * KeepTogether — prevents its children from being split across page boundaries.\n *\n * Wraps children in a `<View wrap={false}>` which tells react-pdf's layout engine\n * to treat the entire subtree as atomic: either the whole block fits on the current\n * page, or the whole block moves to the next page.\n *\n * @example\n * // Prevent a heading + table from being separated\n * <KeepTogether>\n * <Heading level={2}>Quarterly Financials</Heading>\n * <Table>...</Table>\n * </KeepTogether>\n *\n * @example\n * // Softer version: move to next page only if < 100pt remain\n * <KeepTogether minPresenceAhead={100}>\n * <Heading level={3}>Summary</Heading>\n * <Text>Short paragraph that should stay with its heading.</Text>\n * </KeepTogether>\n */\nexport function KeepTogether({ children, minPresenceAhead, style }: KeepTogetherProps) {\n return (\n <View wrap={false} minPresenceAhead={minPresenceAhead} style={style}>\n {children}\n </View>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\nexport function createInvoiceStyles(theme: PdfxTheme) {\n const { colors, typography, spacing, primitives } = theme;\n\n return StyleSheet.create({\n // Page styles\n page: {\n padding: spacing.page.marginTop,\n paddingBottom: spacing.page.marginBottom + 20,\n backgroundColor: colors.background,\n fontFamily: typography.body.fontFamily,\n fontSize: typography.body.fontSize,\n color: colors.foreground,\n },\n\n // ─── Billing Section ─────────────────────────────────────────────────────\n billingSection: {\n flexDirection: 'row',\n marginBottom: spacing.sectionGap,\n },\n billingColumn: {\n flex: 1,\n paddingRight: 15,\n },\n billingLabel: {\n fontSize: primitives.typography.xs,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.mutedForeground,\n textTransform: 'uppercase',\n marginBottom: 4,\n letterSpacing: primitives.letterSpacing.wide,\n },\n billingText: {\n fontSize: primitives.typography.xs,\n lineHeight: 1.4,\n marginBottom: 2,\n },\n\n // ─── Invoice Meta (Modern variant) ───────────────────────────────────────\n invoiceMeta: {\n flexDirection: 'row',\n backgroundColor: colors.muted,\n padding: 12,\n marginBottom: spacing.sectionGap,\n borderRadius: primitives.borderRadius.sm,\n },\n invoiceMetaItem: {\n flex: 1,\n alignItems: 'center',\n },\n invoiceMetaLabel: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n marginBottom: 2,\n },\n invoiceMetaValue: {\n fontSize: primitives.typography.sm,\n fontWeight: primitives.fontWeights.semibold,\n },\n\n // ─── Summary Section ─────────────────────────────────────────────────────\n summaryContainer: {\n flexDirection: 'row',\n marginTop: spacing.componentGap,\n },\n summaryBox: {\n marginLeft: 'auto',\n width: 220,\n },\n\n // ─── Notes Section ───────────────────────────────────────────────────────\n notesSection: {\n marginTop: spacing.sectionGap,\n paddingTop: spacing.componentGap,\n borderTopWidth: 1,\n borderTopColor: colors.border,\n },\n notesLabel: {\n fontSize: primitives.typography.xs,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.mutedForeground,\n marginBottom: 4,\n },\n notesText: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n lineHeight: 1.5,\n },\n\n // ─── Modern Variant Header ───────────────────────────────────────────────\n modernHeader: {\n backgroundColor: colors.primary,\n padding: 24,\n marginBottom: spacing.sectionGap,\n marginLeft: -spacing.page.marginLeft,\n marginRight: -spacing.page.marginRight,\n marginTop: -spacing.page.marginTop,\n },\n modernHeaderTitle: {\n fontSize: primitives.typography['2xl'],\n fontWeight: primitives.fontWeights.bold,\n color: colors.primaryForeground,\n marginBottom: 4,\n },\n modernHeaderSubtitle: {\n fontSize: primitives.typography.sm,\n color: colors.primaryForeground,\n opacity: 0.8,\n },\n\n // ─── Minimal Variant ─────────────────────────────────────────────────────\n minimalHeader: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n marginBottom: spacing.sectionGap,\n paddingBottom: spacing.componentGap,\n borderBottomWidth: 1,\n borderBottomColor: colors.border,\n },\n minimalInvoiceStamp: {\n textAlign: 'right',\n },\n minimalInvoiceNumber: {\n fontSize: primitives.typography.xl,\n fontWeight: primitives.fontWeights.bold,\n color: colors.foreground,\n },\n minimalInvoiceLabel: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n textTransform: 'uppercase',\n letterSpacing: primitives.letterSpacing.wide,\n },\n });\n}\n","import { Document, Text as PDFText, Page, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { KeyValue } from '../../components/key-value';\nimport { PageFooter } from '../../components/page-footer';\nimport { PageHeader } from '../../components/page-header';\nimport { PdfImage } from '../../components/pdf-image';\nimport { Section } from '../../components/section';\nimport { Table, TableBody, TableCell, TableHeader, TableRow } from '../../components/table';\nimport { Text } from '../../components/text';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createInvoiceStyles } from './invoice.styles';\nimport type {\n InvoiceCurrency,\n InvoiceLineItem,\n InvoiceSummary,\n InvoiceTemplateProps,\n InvoiceVariant,\n} from './invoice.types';\n\n// ─── Helper Functions ────────────────────────────────────────────────────────\n\n/**\n * Formats a number as currency.\n */\nfunction formatCurrency(\n amount: number,\n currency: InvoiceCurrency = { symbol: '$', position: 'before', decimals: 2 }\n): string {\n const { symbol = '$', position = 'before', decimals = 2 } = currency;\n const formatted = amount.toFixed(decimals);\n return position === 'before' ? `${symbol}${formatted}` : `${formatted}${symbol}`;\n}\n\n/**\n * Calculates invoice summary from line items.\n */\nfunction calculateSummary(items: InvoiceLineItem[], taxRate = 0): InvoiceSummary {\n const subtotal = items.reduce((sum, item) => sum + item.quantity * item.unitPrice, 0);\n const tax = subtotal * (taxRate / 100);\n const total = subtotal + tax;\n return { subtotal, tax, taxRate, total };\n}\n\n// ─── Variant Components ──────────────────────────────────────────────────────\n\nfunction ClassicVariant({\n props,\n styles,\n summary,\n currency,\n}: {\n props: InvoiceTemplateProps;\n styles: ReturnType<typeof createInvoiceStyles>;\n summary: InvoiceSummary;\n currency: InvoiceCurrency;\n}) {\n const { company, client, invoiceNumber, dueDate, items, payment, notes } = props;\n\n return (\n <>\n <PageHeader\n variant=\"logo-left\"\n logo={company.logo ? <PdfImage src={company.logo} style={{ margin: 0 }} /> : undefined}\n title={company.name}\n subtitle={company.subtitle}\n rightText={invoiceNumber}\n rightSubText={`Due: ${dueDate}`}\n style={{ marginBottom: 0 }}\n />\n\n <Section noWrap style={styles.billingSection as Style}>\n <View style={styles.billingColumn}>\n <PDFText style={styles.billingLabel}>From</PDFText>\n <PDFText style={styles.billingText}>{company.name}</PDFText>\n <PDFText style={styles.billingText}>{company.address}</PDFText>\n {company.email && <PDFText style={styles.billingText}>{company.email}</PDFText>}\n {company.phone && <PDFText style={styles.billingText}>{company.phone}</PDFText>}\n </View>\n <View style={styles.billingColumn}>\n <PDFText style={styles.billingLabel}>Bill To</PDFText>\n <PDFText style={styles.billingText}>{client.name}</PDFText>\n <PDFText style={styles.billingText}>{client.address}</PDFText>\n {client.email && <PDFText style={styles.billingText}>{client.email}</PDFText>}\n {client.phone && <PDFText style={styles.billingText}>{client.phone}</PDFText>}\n </View>\n {payment && (\n <View style={styles.billingColumn}>\n <PDFText style={styles.billingLabel}>Payment</PDFText>\n {payment.methods && <PDFText style={styles.billingText}>{payment.methods}</PDFText>}\n {payment.terms && <PDFText style={styles.billingText}>{payment.terms}</PDFText>}\n {company.taxId && <PDFText style={styles.billingText}>{company.taxId}</PDFText>}\n </View>\n )}\n </Section>\n\n <Table variant=\"grid\" zebraStripe>\n <TableHeader>\n <TableRow header>\n <TableCell>Description</TableCell>\n <TableCell align=\"center\">Qty</TableCell>\n <TableCell align=\"center\">Rate</TableCell>\n <TableCell align=\"right\">Total</TableCell>\n </TableRow>\n </TableHeader>\n <TableBody>\n {items.map((item, index) => (\n <TableRow key={`item-${item.description}-${index}`}>\n <TableCell>{item.description}</TableCell>\n <TableCell align=\"center\">\n {`${item.quantity}${item.unit ? ` ${item.unit}` : ''}`}\n </TableCell>\n <TableCell align=\"center\">{formatCurrency(item.unitPrice, currency)}</TableCell>\n <TableCell align=\"right\">\n {formatCurrency(item.quantity * item.unitPrice, currency)}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <View style={styles.summaryContainer}>\n <View style={styles.summaryBox}>\n <KeyValue\n size=\"sm\"\n dividerThickness={1}\n items={[\n { key: 'Subtotal', value: formatCurrency(summary.subtotal, currency) },\n ...(summary.tax\n ? [\n {\n key: `Tax${summary.taxRate ? ` (${summary.taxRate}%)` : ''}`,\n value: formatCurrency(summary.tax, currency),\n },\n ]\n : []),\n ...(summary.discount\n ? [{ key: 'Discount', value: `-${formatCurrency(summary.discount, currency)}` }]\n : []),\n ...(summary.shipping\n ? [{ key: 'Shipping', value: formatCurrency(summary.shipping, currency) }]\n : []),\n {\n key: 'Total',\n value: formatCurrency(summary.total, currency),\n valueStyle: { fontSize: 12, fontWeight: 700 },\n keyStyle: { fontSize: 12, fontWeight: 700 },\n },\n ]}\n divided\n />\n </View>\n </View>\n\n {notes && (\n <View style={styles.notesSection}>\n <PDFText style={styles.notesLabel}>Notes</PDFText>\n <PDFText style={styles.notesText}>{notes}</PDFText>\n </View>\n )}\n\n <PageFooter leftText={notes || ''} sticky pagePadding={25} />\n </>\n );\n}\n\nfunction ModernVariant({\n props,\n styles,\n summary,\n currency,\n}: {\n props: InvoiceTemplateProps;\n styles: ReturnType<typeof createInvoiceStyles>;\n summary: InvoiceSummary;\n currency: InvoiceCurrency;\n}) {\n const { company, client, invoiceNumber, invoiceDate, dueDate, items, notes } = props;\n\n return (\n <>\n {/* Full-width branded header */}\n <View style={styles.modernHeader}>\n <PDFText style={styles.modernHeaderTitle}>{company.name}</PDFText>\n {company.subtitle && (\n <PDFText style={styles.modernHeaderSubtitle}>{company.subtitle}</PDFText>\n )}\n </View>\n\n {/* Invoice meta strip */}\n <View style={styles.invoiceMeta}>\n <View style={styles.invoiceMetaItem}>\n <PDFText style={styles.invoiceMetaLabel}>Invoice</PDFText>\n <PDFText style={styles.invoiceMetaValue}>{invoiceNumber}</PDFText>\n </View>\n <View style={styles.invoiceMetaItem}>\n <PDFText style={styles.invoiceMetaLabel}>Date</PDFText>\n <PDFText style={styles.invoiceMetaValue}>{invoiceDate}</PDFText>\n </View>\n <View style={styles.invoiceMetaItem}>\n <PDFText style={styles.invoiceMetaLabel}>Due Date</PDFText>\n <PDFText style={styles.invoiceMetaValue}>{dueDate}</PDFText>\n </View>\n <View style={styles.invoiceMetaItem}>\n <PDFText style={styles.invoiceMetaLabel}>Amount Due</PDFText>\n <PDFText style={styles.invoiceMetaValue}>\n {formatCurrency(summary.total, currency)}\n </PDFText>\n </View>\n </View>\n\n {/* Billing info */}\n <Section noWrap style={styles.billingSection as Style}>\n <View style={styles.billingColumn}>\n <PDFText style={styles.billingLabel}>From</PDFText>\n <PDFText style={styles.billingText}>{company.name}</PDFText>\n <PDFText style={styles.billingText}>{company.address}</PDFText>\n {company.email && <PDFText style={styles.billingText}>{company.email}</PDFText>}\n </View>\n <View style={styles.billingColumn}>\n <PDFText style={styles.billingLabel}>Bill To</PDFText>\n <PDFText style={styles.billingText}>{client.name}</PDFText>\n <PDFText style={styles.billingText}>{client.address}</PDFText>\n {client.email && <PDFText style={styles.billingText}>{client.email}</PDFText>}\n </View>\n </Section>\n\n {/* Items table */}\n <Table variant=\"primary-header\">\n <TableHeader>\n <TableRow header>\n <TableCell>Description</TableCell>\n <TableCell align=\"center\">Qty</TableCell>\n <TableCell align=\"center\">Rate</TableCell>\n <TableCell align=\"right\">Total</TableCell>\n </TableRow>\n </TableHeader>\n <TableBody>\n {items.map((item, index) => (\n <TableRow key={`item-${item.description}-${index}`}>\n <TableCell>{item.description}</TableCell>\n <TableCell align=\"center\">{`${item.quantity}`}</TableCell>\n <TableCell align=\"center\">{formatCurrency(item.unitPrice, currency)}</TableCell>\n <TableCell align=\"right\">\n {formatCurrency(item.quantity * item.unitPrice, currency)}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n {/* Summary */}\n <View style={styles.summaryContainer}>\n <View style={styles.summaryBox}>\n <KeyValue\n size=\"sm\"\n items={[\n { key: 'Subtotal', value: formatCurrency(summary.subtotal, currency) },\n ...(summary.tax\n ? [{ key: 'Tax', value: formatCurrency(summary.tax, currency) }]\n : []),\n {\n key: 'Total',\n value: formatCurrency(summary.total, currency),\n valueStyle: { fontSize: 14, fontWeight: 700 },\n keyStyle: { fontSize: 14, fontWeight: 700 },\n },\n ]}\n divided\n />\n </View>\n </View>\n\n {notes && (\n <View style={styles.notesSection}>\n <PDFText style={styles.notesLabel}>Notes</PDFText>\n <PDFText style={styles.notesText}>{notes}</PDFText>\n </View>\n )}\n </>\n );\n}\n\nfunction MinimalVariant({\n props,\n styles,\n summary,\n currency,\n}: {\n props: InvoiceTemplateProps;\n styles: ReturnType<typeof createInvoiceStyles>;\n summary: InvoiceSummary;\n currency: InvoiceCurrency;\n}) {\n const { company, client, invoiceNumber, invoiceDate, dueDate, items, notes } = props;\n\n return (\n <>\n {/* Minimal header with invoice stamp */}\n <View style={styles.minimalHeader}>\n <View>\n <Text variant=\"lg\" weight=\"bold\" noMargin>\n {company.name}\n </Text>\n <Text variant=\"sm\" color=\"mutedForeground\" noMargin>\n {company.address}\n </Text>\n {company.email && (\n <Text variant=\"sm\" color=\"mutedForeground\" noMargin>\n {company.email}\n </Text>\n )}\n </View>\n <View style={styles.minimalInvoiceStamp}>\n <PDFText style={styles.minimalInvoiceLabel}>Invoice</PDFText>\n <PDFText style={styles.minimalInvoiceNumber}>{invoiceNumber}</PDFText>\n <Text variant=\"xs\" color=\"mutedForeground\" noMargin>\n {invoiceDate} • Due {dueDate}\n </Text>\n </View>\n </View>\n\n {/* Two-column billing */}\n <Section noWrap style={styles.billingSection as Style}>\n <View style={styles.billingColumn}>\n <PDFText style={styles.billingLabel}>Bill To</PDFText>\n <PDFText style={styles.billingText}>{client.name}</PDFText>\n <PDFText style={styles.billingText}>{client.address}</PDFText>\n {client.email && <PDFText style={styles.billingText}>{client.email}</PDFText>}\n </View>\n </Section>\n\n {/* Compact table */}\n <Table variant=\"minimal\">\n <TableHeader>\n <TableRow header>\n <TableCell>Item</TableCell>\n <TableCell align=\"center\">Qty</TableCell>\n <TableCell align=\"right\">Amount</TableCell>\n </TableRow>\n </TableHeader>\n <TableBody>\n {items.map((item, index) => (\n <TableRow key={`item-${item.description}-${index}`}>\n <TableCell>{item.description}</TableCell>\n <TableCell align=\"center\">{`${item.quantity}`}</TableCell>\n <TableCell align=\"right\">\n {formatCurrency(item.quantity * item.unitPrice, currency)}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n {/* Inline summary */}\n <View style={styles.summaryContainer}>\n <View style={styles.summaryBox}>\n <KeyValue\n size=\"sm\"\n direction=\"horizontal\"\n items={[\n { key: 'Subtotal', value: formatCurrency(summary.subtotal, currency) },\n ...(summary.tax\n ? [{ key: 'Tax', value: formatCurrency(summary.tax, currency) }]\n : []),\n {\n key: 'Total Due',\n value: formatCurrency(summary.total, currency),\n valueStyle: { fontWeight: 700 },\n },\n ]}\n />\n </View>\n </View>\n\n {notes && (\n <View style={styles.notesSection}>\n <PDFText style={styles.notesText}>{notes}</PDFText>\n </View>\n )}\n </>\n );\n}\n\n// ─── Main Component ──────────────────────────────────────────────────────────\n\n/**\n * InvoiceTemplate — A data-driven invoice PDF generator.\n *\n * Supports three visual variants: classic, modern, and minimal.\n * Pass structured data (company, client, items) and get a professional invoice.\n *\n * @example Basic usage\n * ```tsx\n * <InvoiceTemplate\n * invoiceNumber=\"INV-001\"\n * invoiceDate=\"March 1, 2026\"\n * dueDate=\"March 31, 2026\"\n * company={{ name: \"Acme Inc\", address: \"123 Main St\" }}\n * client={{ name: \"Client Co\", address: \"456 Oak Ave\" }}\n * items={[{ description: \"Consulting\", quantity: 10, unitPrice: 150 }]}\n * />\n * ```\n *\n * @example Modern variant with tax\n * ```tsx\n * <InvoiceTemplate\n * variant=\"modern\"\n * invoiceNumber=\"INV-002\"\n * invoiceDate=\"March 1, 2026\"\n * dueDate=\"March 31, 2026\"\n * company={{ name: \"TechCorp\", address: \"789 Tech Blvd\", logo: \"/logo.png\" }}\n * client={{ name: \"StartupXYZ\", address: \"321 Innovation Dr\" }}\n * items={[{ description: \"Development\", quantity: 1, unitPrice: 5000 }]}\n * taxRate={8.5}\n * />\n * ```\n */\nexport function InvoiceTemplate(props: InvoiceTemplateProps) {\n const {\n variant = 'classic',\n invoiceNumber,\n items,\n summary: providedSummary,\n taxRate = 0,\n currency = { symbol: '$', position: 'before', decimals: 2 },\n style,\n title,\n } = props;\n\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createInvoiceStyles(theme), [theme]);\n\n // Calculate summary if not provided\n const summary = providedSummary || calculateSummary(items, taxRate);\n\n const pageStyles: Style[] = [styles.page];\n if (style) {\n pageStyles.push(style);\n }\n\n const variantMap: Record<InvoiceVariant, React.ReactNode> = {\n classic: <ClassicVariant props={props} styles={styles} summary={summary} currency={currency} />,\n modern: <ModernVariant props={props} styles={styles} summary={summary} currency={currency} />,\n minimal: <MinimalVariant props={props} styles={styles} summary={summary} currency={currency} />,\n };\n\n return (\n <Document title={title || `Invoice ${invoiceNumber}`}>\n <Page size=\"A4\" style={pageStyles}>\n {variantMap[variant]}\n </Page>\n </Document>\n );\n}\n","import type { PdfxTheme } from '../../theme';\nimport { StyleSheet } from '@react-pdf/renderer';\n\nexport function createResumeStyles(theme: PdfxTheme, accentColor?: string) {\n const { colors, typography, spacing, primitives } = theme;\n const accent = accentColor || colors.primary;\n\n return StyleSheet.create({\n // ─── Page Layout ─────────────────────────────────────────────────────────\n page: {\n padding: spacing.page.marginTop,\n paddingBottom: spacing.page.marginBottom,\n backgroundColor: colors.background,\n fontFamily: typography.body.fontFamily,\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n },\n\n // ─── Professional Variant ────────────────────────────────────────────────\n professionalHeader: {\n marginBottom: spacing.sectionGap,\n borderBottomWidth: 2,\n borderBottomColor: accent,\n paddingBottom: spacing.componentGap,\n },\n professionalName: {\n fontSize: primitives.typography['2xl'],\n fontWeight: primitives.fontWeights.bold,\n color: colors.foreground,\n marginBottom: 2,\n },\n professionalTitle: {\n fontSize: primitives.typography.sm,\n color: colors.mutedForeground,\n marginBottom: 6,\n },\n professionalContact: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 12,\n },\n professionalContactItem: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n },\n\n // ─── Modern Variant (Two-Column) ─────────────────────────────────────────\n modernContainer: {\n flexDirection: 'row',\n },\n modernSidebar: {\n width: 180,\n backgroundColor: accent,\n padding: 16,\n marginLeft: -spacing.page.marginLeft,\n marginTop: -spacing.page.marginTop,\n marginBottom: -spacing.page.marginBottom,\n minHeight: '100%',\n },\n modernSidebarName: {\n fontSize: primitives.typography.lg,\n fontWeight: primitives.fontWeights.bold,\n color: colors.primaryForeground,\n marginBottom: 4,\n },\n modernSidebarTitle: {\n fontSize: primitives.typography.xs,\n color: colors.primaryForeground,\n opacity: 0.9,\n marginBottom: 16,\n },\n modernSidebarSection: {\n marginBottom: 16,\n },\n modernSidebarLabel: {\n fontSize: primitives.typography.xs,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.primaryForeground,\n textTransform: 'uppercase',\n letterSpacing: primitives.letterSpacing.wide,\n marginBottom: 6,\n opacity: 0.8,\n },\n modernSidebarText: {\n fontSize: primitives.typography.xs,\n color: colors.primaryForeground,\n marginBottom: 3,\n lineHeight: 1.4,\n },\n modernMain: {\n flex: 1,\n paddingLeft: 20,\n },\n\n // ─── Minimal Variant ─────────────────────────────────────────────────────\n minimalHeader: {\n marginBottom: spacing.sectionGap,\n textAlign: 'center',\n },\n minimalName: {\n fontSize: primitives.typography.xl,\n fontWeight: primitives.fontWeights.bold,\n color: colors.foreground,\n marginBottom: 2,\n },\n minimalTitle: {\n fontSize: primitives.typography.sm,\n color: colors.mutedForeground,\n marginBottom: 8,\n },\n minimalContact: {\n flexDirection: 'row',\n justifyContent: 'center',\n flexWrap: 'wrap',\n gap: 8,\n },\n minimalContactItem: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n },\n minimalDivider: {\n color: colors.border,\n },\n\n // ─── Section Styles (Shared) ─────────────────────────────────────────────\n section: {\n marginBottom: spacing.componentGap,\n },\n sectionTitle: {\n fontSize: primitives.typography.sm,\n fontWeight: primitives.fontWeights.bold,\n color: accent,\n textTransform: 'uppercase',\n letterSpacing: primitives.letterSpacing.wide,\n marginBottom: 8,\n borderBottomWidth: 1,\n borderBottomColor: colors.border,\n paddingBottom: 4,\n },\n\n // ─── Experience Entry ────────────────────────────────────────────────────\n experienceEntry: {\n marginBottom: 12,\n },\n experienceHeader: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n marginBottom: 4,\n },\n experienceRole: {\n fontSize: primitives.typography.sm,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.foreground,\n },\n experienceCompany: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n },\n experienceDates: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n textAlign: 'right',\n },\n experienceLocation: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n textAlign: 'right',\n },\n experienceHighlight: {\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n marginLeft: 8,\n marginBottom: 2,\n lineHeight: 1.4,\n },\n experienceDescription: {\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n lineHeight: 1.5,\n marginTop: 4,\n },\n\n // ─── Education Entry ─────────────────────────────────────────────────────\n educationEntry: {\n marginBottom: 10,\n },\n educationHeader: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n marginBottom: 2,\n },\n educationDegree: {\n fontSize: primitives.typography.sm,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.foreground,\n },\n educationInstitution: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n },\n educationDates: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n textAlign: 'right',\n },\n educationGpa: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n fontStyle: 'italic',\n },\n\n // ─── Skills ──────────────────────────────────────────────────────────────\n skillsContainer: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 4,\n },\n skillCategory: {\n marginBottom: 8,\n },\n skillCategoryLabel: {\n fontSize: primitives.typography.xs,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.foreground,\n marginBottom: 4,\n },\n skillBadge: {\n backgroundColor: colors.muted,\n paddingHorizontal: 6,\n paddingVertical: 2,\n borderRadius: primitives.borderRadius.sm,\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n marginRight: 4,\n marginBottom: 4,\n },\n skillText: {\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n },\n\n // ─── Projects ────────────────────────────────────────────────────────────\n projectEntry: {\n marginBottom: 10,\n },\n projectName: {\n fontSize: primitives.typography.sm,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.foreground,\n },\n projectDescription: {\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n lineHeight: 1.4,\n marginTop: 2,\n },\n projectTech: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n fontStyle: 'italic',\n marginTop: 2,\n },\n\n // ─── Certifications ──────────────────────────────────────────────────────\n certEntry: {\n marginBottom: 6,\n },\n certName: {\n fontSize: primitives.typography.xs,\n fontWeight: primitives.fontWeights.semibold,\n color: colors.foreground,\n },\n certIssuer: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n },\n\n // ─── Languages ───────────────────────────────────────────────────────────\n languageEntry: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n marginBottom: 4,\n },\n languageName: {\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n },\n languageProficiency: {\n fontSize: primitives.typography.xs,\n color: colors.mutedForeground,\n },\n\n // ─── Summary ─────────────────────────────────────────────────────────────\n summaryText: {\n fontSize: primitives.typography.xs,\n color: colors.foreground,\n lineHeight: 1.6,\n },\n\n // ─── Bullet Point ────────────────────────────────────────────────────────\n bullet: {\n fontSize: primitives.typography.xs,\n color: accent,\n marginRight: 4,\n },\n bulletRow: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n marginBottom: 2,\n },\n });\n}\n","import { Document, Text as PDFText, Page, View } from '@react-pdf/renderer';\nimport type { Style } from '@react-pdf/types';\nimport { usePdfxTheme, useSafeMemo } from '../../lib/pdfx-theme-context';\nimport { createResumeStyles } from './resume.styles';\nimport type {\n ResumeCertification,\n ResumeEducation,\n ResumeExperience,\n ResumeLanguage,\n ResumeProject,\n ResumeSkillCategory,\n ResumeTemplateProps,\n ResumeVariant,\n} from './resume.types';\n\n// ─── Helper Components ───────────────────────────────────────────────────────\n\nfunction ContactInfo({\n personal,\n styles,\n separator = ' • ',\n}: {\n personal: ResumeTemplateProps['personal'];\n styles: ReturnType<typeof createResumeStyles>;\n separator?: string;\n}) {\n const items: string[] = [];\n if (personal.email) items.push(personal.email);\n if (personal.phone) items.push(personal.phone);\n if (personal.location) items.push(personal.location);\n if (personal.linkedin) items.push(personal.linkedin);\n if (personal.github) items.push(personal.github);\n if (personal.website) items.push(personal.website);\n\n return (\n <View style={styles.professionalContact}>\n {items.map((item, index) => (\n <PDFText key={`contact-${item}`} style={styles.professionalContactItem}>\n {item}\n {index < items.length - 1 ? separator : ''}\n </PDFText>\n ))}\n </View>\n );\n}\n\nfunction SectionTitle({\n title,\n styles,\n}: {\n title: string;\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n return <PDFText style={styles.sectionTitle}>{title}</PDFText>;\n}\n\nfunction ExperienceSection({\n experience,\n styles,\n}: {\n experience: ResumeExperience[];\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n if (!experience.length) return null;\n\n return (\n <View style={styles.section}>\n <SectionTitle title=\"Experience\" styles={styles} />\n {experience.map((exp) => (\n <View key={`exp-${exp.company}-${exp.role}`} style={styles.experienceEntry}>\n <View style={styles.experienceHeader}>\n <View>\n <PDFText style={styles.experienceRole}>{exp.role}</PDFText>\n <PDFText style={styles.experienceCompany}>{exp.company}</PDFText>\n </View>\n <View>\n <PDFText style={styles.experienceDates}>\n {exp.startDate} – {exp.endDate || 'Present'}\n </PDFText>\n {exp.location && <PDFText style={styles.experienceLocation}>{exp.location}</PDFText>}\n </View>\n </View>\n {exp.description && (\n <PDFText style={styles.experienceDescription}>{exp.description}</PDFText>\n )}\n {exp.highlights?.map((highlight) => (\n <View key={`hl-${highlight.slice(0, 20)}`} style={styles.bulletRow}>\n <PDFText style={styles.bullet}>•</PDFText>\n <PDFText style={styles.experienceHighlight}>{highlight}</PDFText>\n </View>\n ))}\n </View>\n ))}\n </View>\n );\n}\n\nfunction EducationSection({\n education,\n styles,\n}: {\n education: ResumeEducation[];\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n if (!education.length) return null;\n\n return (\n <View style={styles.section}>\n <SectionTitle title=\"Education\" styles={styles} />\n {education.map((edu) => (\n <View key={`edu-${edu.institution}-${edu.degree}`} style={styles.educationEntry}>\n <View style={styles.educationHeader}>\n <View>\n <PDFText style={styles.educationDegree}>\n {edu.degree}\n {edu.field ? ` in ${edu.field}` : ''}\n </PDFText>\n <PDFText style={styles.educationInstitution}>{edu.institution}</PDFText>\n </View>\n <View>\n {(edu.startDate || edu.endDate) && (\n <PDFText style={styles.educationDates}>\n {edu.startDate && edu.endDate\n ? `${edu.startDate} – ${edu.endDate}`\n : edu.endDate || edu.startDate}\n </PDFText>\n )}\n </View>\n </View>\n {edu.gpa && <PDFText style={styles.educationGpa}>GPA: {edu.gpa}</PDFText>}\n </View>\n ))}\n </View>\n );\n}\n\nfunction SkillsSection({\n skills,\n styles,\n compact = false,\n}: {\n skills: ResumeSkillCategory[];\n styles: ReturnType<typeof createResumeStyles>;\n compact?: boolean;\n}) {\n if (!skills.length) return null;\n\n if (compact) {\n return (\n <View style={styles.section}>\n {skills.map((cat) => (\n <View key={`skill-${cat.category}`} style={styles.skillCategory}>\n <PDFText style={styles.skillCategoryLabel}>{cat.category}</PDFText>\n <PDFText style={styles.skillText}>{cat.skills.join(', ')}</PDFText>\n </View>\n ))}\n </View>\n );\n }\n\n return (\n <View style={styles.section}>\n <SectionTitle title=\"Skills\" styles={styles} />\n {skills.map((cat) => (\n <View key={`skill-${cat.category}`} style={styles.skillCategory}>\n <PDFText style={styles.skillCategoryLabel}>{cat.category}</PDFText>\n <View style={styles.skillsContainer}>\n {cat.skills.map((skill) => (\n <PDFText key={`s-${skill}`} style={styles.skillBadge}>\n {skill}\n </PDFText>\n ))}\n </View>\n </View>\n ))}\n </View>\n );\n}\n\nfunction ProjectsSection({\n projects,\n styles,\n}: {\n projects: ResumeProject[];\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n if (!projects.length) return null;\n\n return (\n <View style={styles.section}>\n <SectionTitle title=\"Projects\" styles={styles} />\n {projects.map((project) => (\n <View key={`proj-${project.name}`} style={styles.projectEntry}>\n <PDFText style={styles.projectName}>{project.name}</PDFText>\n {project.description && (\n <PDFText style={styles.projectDescription}>{project.description}</PDFText>\n )}\n {project.technologies && (\n <PDFText style={styles.projectTech}>{project.technologies.join(' • ')}</PDFText>\n )}\n </View>\n ))}\n </View>\n );\n}\n\nfunction CertificationsSection({\n certifications,\n styles,\n}: {\n certifications: ResumeCertification[];\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n if (!certifications.length) return null;\n\n return (\n <View style={styles.section}>\n <SectionTitle title=\"Certifications\" styles={styles} />\n {certifications.map((cert) => (\n <View key={`cert-${cert.name}`} style={styles.certEntry}>\n <PDFText style={styles.certName}>{cert.name}</PDFText>\n <PDFText style={styles.certIssuer}>\n {cert.issuer}\n {cert.date ? ` • ${cert.date}` : ''}\n </PDFText>\n </View>\n ))}\n </View>\n );\n}\n\nfunction LanguagesSection({\n languages,\n styles,\n}: {\n languages: ResumeLanguage[];\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n if (!languages.length) return null;\n\n return (\n <View style={styles.section}>\n <SectionTitle title=\"Languages\" styles={styles} />\n {languages.map((lang) => (\n <View key={`lang-${lang.language}`} style={styles.languageEntry}>\n <PDFText style={styles.languageName}>{lang.language}</PDFText>\n <PDFText style={styles.languageProficiency}>{lang.proficiency}</PDFText>\n </View>\n ))}\n </View>\n );\n}\n\n// ─── Variant Components ──────────────────────────────────────────────────────\n\nfunction ProfessionalVariant({\n props,\n styles,\n}: {\n props: ResumeTemplateProps;\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n const {\n personal,\n summary,\n experience = [],\n education = [],\n skills = [],\n projects = [],\n certifications = [],\n languages = [],\n } = props;\n\n return (\n <>\n {/* Header */}\n <View style={styles.professionalHeader}>\n <PDFText style={styles.professionalName}>{personal.name}</PDFText>\n {personal.title && <PDFText style={styles.professionalTitle}>{personal.title}</PDFText>}\n <ContactInfo personal={personal} styles={styles} separator=\"\" />\n </View>\n\n {/* Summary */}\n {summary && (\n <View style={styles.section}>\n <SectionTitle title={summary.title || 'Professional Summary'} styles={styles} />\n <PDFText style={styles.summaryText}>{summary.content}</PDFText>\n </View>\n )}\n\n <ExperienceSection experience={experience} styles={styles} />\n <EducationSection education={education} styles={styles} />\n <SkillsSection skills={skills} styles={styles} />\n <ProjectsSection projects={projects} styles={styles} />\n <CertificationsSection certifications={certifications} styles={styles} />\n <LanguagesSection languages={languages} styles={styles} />\n </>\n );\n}\n\nfunction ModernVariant({\n props,\n styles,\n}: {\n props: ResumeTemplateProps;\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n const {\n personal,\n summary,\n experience = [],\n education = [],\n skills = [],\n projects = [],\n certifications = [],\n languages = [],\n } = props;\n\n return (\n <View style={styles.modernContainer}>\n {/* Sidebar */}\n <View style={styles.modernSidebar}>\n <PDFText style={styles.modernSidebarName}>{personal.name}</PDFText>\n {personal.title && <PDFText style={styles.modernSidebarTitle}>{personal.title}</PDFText>}\n\n {/* Contact */}\n <View style={styles.modernSidebarSection}>\n <PDFText style={styles.modernSidebarLabel}>Contact</PDFText>\n {personal.email && <PDFText style={styles.modernSidebarText}>{personal.email}</PDFText>}\n {personal.phone && <PDFText style={styles.modernSidebarText}>{personal.phone}</PDFText>}\n {personal.location && (\n <PDFText style={styles.modernSidebarText}>{personal.location}</PDFText>\n )}\n {personal.linkedin && (\n <PDFText style={styles.modernSidebarText}>{personal.linkedin}</PDFText>\n )}\n {personal.github && <PDFText style={styles.modernSidebarText}>{personal.github}</PDFText>}\n {personal.website && (\n <PDFText style={styles.modernSidebarText}>{personal.website}</PDFText>\n )}\n </View>\n\n {/* Skills in sidebar */}\n {skills.length > 0 && (\n <View style={styles.modernSidebarSection}>\n <PDFText style={styles.modernSidebarLabel}>Skills</PDFText>\n {skills.map((cat) => (\n <View key={`side-skill-${cat.category}`} style={{ marginBottom: 8 }}>\n <PDFText\n style={{\n ...styles.modernSidebarText,\n fontWeight: 600,\n marginBottom: 2,\n }}\n >\n {cat.category}\n </PDFText>\n <PDFText style={styles.modernSidebarText}>{cat.skills.join(', ')}</PDFText>\n </View>\n ))}\n </View>\n )}\n\n {/* Languages in sidebar */}\n {languages.length > 0 && (\n <View style={styles.modernSidebarSection}>\n <PDFText style={styles.modernSidebarLabel}>Languages</PDFText>\n {languages.map((lang) => (\n <PDFText key={`side-lang-${lang.language}`} style={styles.modernSidebarText}>\n {lang.language} – {lang.proficiency}\n </PDFText>\n ))}\n </View>\n )}\n </View>\n\n {/* Main Content */}\n <View style={styles.modernMain}>\n {summary && (\n <View style={styles.section}>\n <SectionTitle title={summary.title || 'Summary'} styles={styles} />\n <PDFText style={styles.summaryText}>{summary.content}</PDFText>\n </View>\n )}\n\n <ExperienceSection experience={experience} styles={styles} />\n <EducationSection education={education} styles={styles} />\n <ProjectsSection projects={projects} styles={styles} />\n <CertificationsSection certifications={certifications} styles={styles} />\n </View>\n </View>\n );\n}\n\nfunction MinimalVariant({\n props,\n styles,\n}: {\n props: ResumeTemplateProps;\n styles: ReturnType<typeof createResumeStyles>;\n}) {\n const {\n personal,\n summary,\n experience = [],\n education = [],\n skills = [],\n projects = [],\n certifications = [],\n languages = [],\n } = props;\n\n return (\n <>\n {/* Centered Header */}\n <View style={styles.minimalHeader}>\n <PDFText style={styles.minimalName}>{personal.name}</PDFText>\n {personal.title && <PDFText style={styles.minimalTitle}>{personal.title}</PDFText>}\n <View style={styles.minimalContact}>\n {personal.email && <PDFText style={styles.minimalContactItem}>{personal.email}</PDFText>}\n {personal.email && personal.phone && <PDFText style={styles.minimalDivider}>|</PDFText>}\n {personal.phone && <PDFText style={styles.minimalContactItem}>{personal.phone}</PDFText>}\n {personal.phone && personal.location && (\n <PDFText style={styles.minimalDivider}>|</PDFText>\n )}\n {personal.location && (\n <PDFText style={styles.minimalContactItem}>{personal.location}</PDFText>\n )}\n </View>\n </View>\n\n {/* Summary */}\n {summary && (\n <View style={styles.section}>\n <SectionTitle title={summary.title || 'Summary'} styles={styles} />\n <PDFText style={styles.summaryText}>{summary.content}</PDFText>\n </View>\n )}\n\n <ExperienceSection experience={experience} styles={styles} />\n <EducationSection education={education} styles={styles} />\n <SkillsSection skills={skills} styles={styles} compact />\n <ProjectsSection projects={projects} styles={styles} />\n <CertificationsSection certifications={certifications} styles={styles} />\n <LanguagesSection languages={languages} styles={styles} />\n </>\n );\n}\n\n// ─── Main Component ──────────────────────────────────────────────────────────\n\n/**\n * ResumeTemplate — A data-driven resume/CV PDF generator.\n *\n * Supports three visual variants: professional, modern, and minimal.\n * Pass structured data (personal info, experience, education, skills)\n * and get a professional resume PDF.\n *\n * @example Basic usage\n * ```tsx\n * <ResumeTemplate\n * personal={{\n * name: 'John Doe',\n * title: 'Senior Software Engineer',\n * email: 'john@example.com',\n * phone: '+1 555-1234',\n * location: 'San Francisco, CA',\n * }}\n * experience={[\n * {\n * company: 'TechCorp',\n * role: 'Senior Engineer',\n * startDate: 'Jan 2020',\n * endDate: 'Present',\n * highlights: ['Led team of 5', 'Shipped key features'],\n * },\n * ]}\n * education={[\n * {\n * institution: 'MIT',\n * degree: 'B.S.',\n * field: 'Computer Science',\n * endDate: '2019',\n * },\n * ]}\n * skills={[\n * { category: 'Languages', skills: ['TypeScript', 'Python', 'Go'] },\n * ]}\n * />\n * ```\n */\nexport function ResumeTemplate(props: ResumeTemplateProps) {\n const { variant = 'professional', personal, accentColor, style, title } = props;\n\n const theme = usePdfxTheme();\n const styles = useSafeMemo(() => createResumeStyles(theme, accentColor), [theme, accentColor]);\n\n const pageStyles: Style[] = [styles.page];\n if (style) {\n pageStyles.push(style);\n }\n\n const variantMap: Record<ResumeVariant, React.ReactNode> = {\n professional: <ProfessionalVariant props={props} styles={styles} />,\n modern: <ModernVariant props={props} styles={styles} />,\n minimal: <MinimalVariant props={props} styles={styles} />,\n };\n\n return (\n <Document title={title || `${personal.name} - Resume`}>\n <Page size=\"A4\" style={pageStyles}>\n {variantMap[variant]}\n </Page>\n </Document>\n );\n}\n"]}