first commit

This commit is contained in:
2026-07-18 01:34:52 +05:30
commit d1308bf149
113 changed files with 20593 additions and 0 deletions
+89
View File
@@ -0,0 +1,89 @@
// ============================================================================
// @photo-gallery/sdk — public API
// A reusable, macOS Photos-style photo gallery for React / Next.js.
// ============================================================================
// Main component + props
export { PhotoGallery } from './components/PhotoGallery';
export type { PhotoGalleryProps } from './components/PhotoGallery';
// Headless store access (for advanced composition / external control)
export { useGallery, useGalleryStoreApi, GalleryStoreContext } from './store/context';
export { createGalleryStore, DEFAULT_FEATURES } from './store/store';
export type {
GalleryState,
GalleryStore,
GalleryConfig,
GalleryFeatures,
ThemeTokens,
GridFilter,
} from './store/store';
export * as selectors from './store/selectors';
// Domain types
export type {
MediaItem,
MediaId,
MediaKind,
MediaSource,
Album,
AlbumId,
AlbumKind,
Person,
PersonId,
GeoLocation,
EditState,
EditAdjustments,
Annotation,
AnnotationShape,
DetectedObject,
DetectedFace,
SmartRule,
SmartRuleSet,
ThemePreference,
ResolvedTheme,
LibraryScale,
MapMode,
ViewId,
} from './types';
// Storage adapters
export { createLocalStorageAdapter } from './adapters/localStorage';
export type { StorageAdapter, PersistedState } from './adapters/types';
// AI provider interface (pluggable; free in-browser or cloud)
export type { AIProvider, GenerativeEditOp } from './ai/types';
export { cosineSimilarity } from './ai/types';
// Helpers
export { createMediaItem, mediaFromFile, isAcceptedMediaFile } from './lib/media';
export type { MediaInput } from './lib/media';
export { classifyMediaSource, sourceLabel } from './lib/classify';
export { matchesRuleSet, resolveSmartAlbum, defaultSystemAlbums, objectSmartAlbums } from './lib/smartAlbums';
export { editFilterCss, editTransformCss } from './lib/edits';
export { summarizeEdits } from './lib/versions';
export {
normalizeSegments,
outputDuration,
sourceToOutputTime,
videoOutputSize,
resolveOverlays,
sampleOverlay,
} from './lib/videoTimeline';
export { bakeVideo } from './lib/videoBake';
// Pure, dependency-free AI post-processing utils (reusable + unit-testable).
export { clusterFaces } from './lib/cluster';
export type { FaceCluster } from './lib/cluster';
export { sanitizeOcrText, OCR_TEXT_MAX_CHARS } from './lib/text';
// Icons (re-usable in host apps)
export { Icon } from './icons';
export type { IconName } from './icons';
// Constants
export {
FILTER_PRESETS,
GRID_ZOOM_STEPS,
TRASH_RETENTION_DAYS,
AUTO_ALBUM_OBJECTS,
} from './constants';