diff --git a/README.md b/README.md index 30d1694b..92e4bfb8 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ preview assets supplied by the host app; it never signs URLs, reads tokens, or parses provider-specific IDs. ```tsx -import { PreviewShell } from '@numeracode/whimsy-file-browser'; +import { PreviewShell } from '@numeracode/whimsy-file-browser/preview'; export function MyPreview({ item }) { return ( @@ -68,6 +68,10 @@ Use the same `PreviewShell` from filebrowser, spaces, showcase, dedupe, and any gallery surface. Whimsy remains responsible for auth, permission checks, and signed manifest generation. +Prefer the `/preview` subpath for preview-only integrations. It avoids loading +the legacy browser/redux runtime when a host app only needs tile, shell, +renderer, or lightbox primitives. + ## Development ```bash diff --git a/packages/chonky/README.md b/packages/chonky/README.md index 584d0a1a..51dd8913 100644 --- a/packages/chonky/README.md +++ b/packages/chonky/README.md @@ -47,13 +47,13 @@ export function MyBrowser() { ## Provider-agnostic previews -Use `PreviewShell`, `FilePreviewer`, `PreviewTile`, and `MediaLightbox` for new -preview integrations. The package renders manifests and signed URLs supplied by -the host app; it does not include Whimsy auth, provider credentials, or signing -logic. +Use `PreviewShell`, `FilePreviewer`, `PreviewTile`, and `MediaLightbox` from the +preview-only subpath for new preview integrations. The package renders +manifests and signed URLs supplied by the host app; it does not include Whimsy +auth, provider credentials, or signing logic. ```tsx -import { MediaLightbox, PreviewTile } from '@numeracode/whimsy-file-browser'; +import { MediaLightbox, PreviewTile } from '@numeracode/whimsy-file-browser/preview'; export function PreviewExample({ item, open, setOpen }) { return ( diff --git a/packages/chonky/package.json b/packages/chonky/package.json index caf0d29a..f4028e17 100644 --- a/packages/chonky/package.json +++ b/packages/chonky/package.json @@ -12,6 +12,11 @@ "types": "./dist/index.d.ts", "import": "./dist/index.mjs", "require": "./dist/index.js" + }, + "./preview": { + "types": "./dist/preview.d.ts", + "import": "./dist/preview.mjs", + "require": "./dist/preview.js" } }, "files": [ @@ -25,9 +30,9 @@ "node": ">=20" }, "scripts": { - "build": "tsup src/index.ts --format cjs,esm --dts --sourcemap --clean --external react --external react-dom", + "build": "tsup src/index.ts src/preview.ts --format cjs,esm --dts --sourcemap --clean --external react --external react-dom", "clean": "rm -rf dist", - "dev": "tsup src/index.ts --format cjs,esm --dts --sourcemap --watch --external react --external react-dom", + "dev": "tsup src/index.ts src/preview.ts --format cjs,esm --dts --sourcemap --watch --external react --external react-dom", "lint": "npm run typecheck", "test": "vitest run --passWithNoTests --globals --environment jsdom", "typecheck": "tsc -p tsconfig.json --noEmit" diff --git a/packages/chonky/src/preview.ts b/packages/chonky/src/preview.ts new file mode 100644 index 00000000..ebb278d0 --- /dev/null +++ b/packages/chonky/src/preview.ts @@ -0,0 +1,40 @@ +export { FilePreviewer, defaultPreviewRenderers } from './components/preview/FilePreviewer'; +export { MediaLightbox } from './components/preview/MediaLightbox'; +export { PreviewFallback } from './components/preview/PreviewFallback'; +export { PreviewShell } from './components/preview/PreviewShell'; +export { PreviewTile } from './components/preview/PreviewTile'; +export { createBrowserOpaqueId } from './types/browser-item.types'; +export type { + BrowserItem, + BrowserItemCapabilities, + BrowserItemFlags, + BrowserItemKind, + BrowserItemRef, + BrowserMetadataValue, + BrowserOpaqueId, + BrowserPreviewAsset, + BrowserPreviewAssetKind, + BrowserPreviewRenderer, + BrowserPreviewTrack, + BrowserPreviewTrackKind, + BrowserPreviewUnavailableReason, + BrowserSourceDescriptor, + BrowserSourceKind, + PreviewDescriptor, +} from './types/browser-item.types'; +export type { + AvailableBrowserPreviewAsset, + FilePreviewerProps, + LazyPreviewRenderer, + MediaLightboxProps, + PreviewFallbackProps, + PreviewManifestLoader, + PreviewRendererComponent, + PreviewRendererEntry, + PreviewRendererModule, + PreviewRendererProps, + PreviewRendererRegistry, + PreviewRequest, + PreviewShellProps, + PreviewTileProps, +} from './types/preview-shell.types';