/** * Shareable viewer link utilities. * * {@link generateShareLink} builds a URL that opens a LensPDF viewer * with a specific PDF pre-loaded and settings applied. * {@link parseShareParams} parses those query params back into props. * * URL format: * ``` * https://lenspdf.com/demo?url=&fullscreen=true&zoom=150&page=1&mode=single&theme=dark * ``` * * @public */ import type { ThemeTokens } from "../plugin/services"; /** Options for {@link generateShareLink}. */ export interface ShareLinkOptions { /** Base URL of the host's demo/viewer page (e.g. `https://lenspdf.com/demo`). */ baseUrl: string; /** PDF URL to pre-load. */ pdfUrl: string; /** Open in fullscreen mode (no site chrome). Default: false. */ fullscreen?: boolean; /** Initial zoom percentage. */ zoom?: number; /** Initial page number. */ page?: number; /** Viewer scroll mode. */ mode?: "scroll" | "single"; /** Tools to enable (encoded as comma-separated in URL). */ tools?: string[]; /** Theme: preset name or inline token overrides. */ theme?: "light" | "dark" | Partial; } /** * Build a shareable viewer URL with query params. * * ```ts * const link = generateShareLink({ * baseUrl: "https://lenspdf.com/demo", * pdfUrl: "https://cdn.example.com/proof.pdf", * fullscreen: true, * zoom: 150, * }); * // → "https://lenspdf.com/demo?url=https%3A%2F%2Fcdn.example.com%2Fproof.pdf&fullscreen=true&zoom=150" * ``` * * @public */ export declare function generateShareLink(opts: ShareLinkOptions): string; /** Parsed share parameters returned by {@link parseShareParams}. */ export interface ParsedShareParams { /** PDF URL to pre-load, or undefined if not specified. */ pdfUrl?: string; /** Whether to open in fullscreen mode. */ fullscreen: boolean; /** Initial zoom percentage, or undefined. */ zoom?: number; /** Initial page number, or undefined. */ page?: number; /** Viewer mode, or undefined. */ mode?: "scroll" | "single"; /** Tools to enable, or undefined. */ tools?: string[]; /** Theme preset name or inline tokens, or undefined. */ theme?: "light" | "dark" | Partial; } /** * Parse query params from a shareable viewer URL back into props. * Use this in the host's page component to read URL state: * * ```ts * const params = parseShareParams(new URLSearchParams(window.location.search)); * * ``` * * @public */ export declare function parseShareParams(searchParams: URLSearchParams): ParsedShareParams; //# sourceMappingURL=shareLink.d.ts.map