@jamwidgets/core 0.3.4 → 0.5.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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  > **Note:** This repo is a read-only mirror. Source lives in a private monorepo.
4
4
  > For issues/PRs, please open them here and we'll sync changes back.
5
5
 
6
- Framework-agnostic API client, types, and headless controllers for [JamWidgets](https://jamwidgets.com) widgets.
6
+ Framework-agnostic API client, types, and headless controllers for [Jamwidgets](https://jamwidgets.com) widgets.
7
7
 
8
8
  ## Installation
9
9
 
@@ -13,6 +13,15 @@ npm install @jamwidgets/core
13
13
 
14
14
  This is the base package used by `@jamwidgets/astro`, `@jamwidgets/react`, and `@jamwidgets/solid`. Use it directly when building custom integrations or with any JavaScript framework.
15
15
 
16
+ ## Gallery elements
17
+
18
+ ```html
19
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@jamwidgets/core@0.5.0/dist/gallery-elements.js"></script>
20
+ <jamwidgets-gallery-index site-key="your-key" deep-link></jamwidgets-gallery-index>
21
+ <jamwidgets-gallery site-key="your-key" slug="field-notes" tag="portraits"></jamwidgets-gallery>
22
+ <jamwidgets-random-photo site-key="your-key" slug="field-notes" seed="homepage"></jamwidgets-random-photo>
23
+ ```
24
+
16
25
  ## API Functions
17
26
 
18
27
  ### Comments
@@ -261,10 +270,10 @@ All types are exported for TypeScript users:
261
270
 
262
271
  ```ts
263
272
  import type {
264
- JamWidgetsConfig,
273
+ JamwidgetsConfig,
265
274
  Comment,
266
275
  ReactionCounts,
267
- JamWidgetsPost,
276
+ JamwidgetsPost,
268
277
  Poll,
269
278
  Announcement,
270
279
  FeedbackType,
package/dist/beacon.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { type JamWidgetsConfig } from "./index.js";
2
- export interface TrackPageviewOptions extends Partial<JamWidgetsConfig> {
1
+ import { type JamwidgetsConfig } from "./index.js";
2
+ export interface TrackPageviewOptions extends Partial<JamwidgetsConfig> {
3
3
  /** Path to record. Defaults to `location.pathname`. */
4
4
  path?: string;
5
5
  }
@@ -0,0 +1,38 @@
1
+ declare const HTMLElementBase: typeof HTMLElement;
2
+ declare abstract class GalleryElement extends HTMLElementBase {
3
+ protected root?: ShadowRoot;
4
+ private generation;
5
+ static get observedAttributes(): string[];
6
+ connectedCallback(): void;
7
+ disconnectedCallback(): void;
8
+ attributeChangedCallback(name: string, previous: string | null, value: string | null): void;
9
+ protected reload(): void;
10
+ protected advanceGeneration(): number;
11
+ protected get currentGeneration(): number;
12
+ protected isCurrent(generation: number): boolean;
13
+ protected get siteKey(): string;
14
+ protected get endpoint(): string | undefined;
15
+ protected abstract load(generation: number): Promise<void>;
16
+ frame(): HTMLElement;
17
+ protected loading(): void;
18
+ protected fail(error: unknown): void;
19
+ brand(frame: HTMLElement): Promise<void>;
20
+ }
21
+ export declare class JamwidgetsGalleryElement extends GalleryElement {
22
+ protected load(generation: number): Promise<void>;
23
+ }
24
+ export declare class JamwidgetsGalleryIndexElement extends GalleryElement {
25
+ private galleries;
26
+ private loaded;
27
+ private readonly navigate;
28
+ connectedCallback(): void;
29
+ disconnectedCallback(): void;
30
+ protected load(generation: number): Promise<void>;
31
+ private showIndex;
32
+ private showGallery;
33
+ }
34
+ export declare class JamwidgetsRandomPhotoElement extends GalleryElement {
35
+ protected load(generation: number): Promise<void>;
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=gallery-elements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gallery-elements.d.ts","sourceRoot":"","sources":["../src/gallery-elements.ts"],"names":[],"mappings":"AA8BA,QAAA,MAAM,eAAe,EAA2C,OAAO,WAAW,CAAC;AAkBnF,uBAAe,cAAe,SAAQ,eAAe;IACnD,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC5B,OAAO,CAAC,UAAU,CAAK;IAEvB,MAAM,KAAK,kBAAkB,aAE5B;IAED,iBAAiB;IAIjB,oBAAoB;IAGpB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAGpF,SAAS,CAAC,MAAM;IAKhB,SAAS,CAAC,iBAAiB;IAC3B,SAAS,KAAK,iBAAiB,WAA8B;IAC7D,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM;IAEtC,SAAS,KAAK,OAAO,WAAkD;IACvE,SAAS,KAAK,QAAQ,uBAAyD;IAC/E,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1D,KAAK,IAAI,WAAW;IAOpB,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO;IACvB,KAAK,CAAC,KAAK,EAAE,WAAW;CAS/B;AAyDD,qBAAa,wBAAyB,SAAQ,cAAc;cAC1C,IAAI,CAAC,UAAU,EAAE,MAAM;CAUxC;AAED,qBAAa,6BAA8B,SAAQ,cAAc;IAC/D,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAUvB;IAEF,iBAAiB;IAIjB,oBAAoB;cAKJ,IAAI,CAAC,UAAU,EAAE,MAAM;YAazB,SAAS;YAYT,WAAW;CAsB1B;AAED,qBAAa,4BAA6B,SAAQ,cAAc;cAC9C,IAAI,CAAC,UAAU,EAAE,MAAM;CAUxC"}
@@ -0,0 +1,354 @@
1
+ import { fetchGalleries, fetchGallery, fetchRandomPhoto, fetchSiteConfig, POWERED_BY_LABEL, POWERED_BY_URL, } from "./index.js";
2
+ const styles = `
3
+ :host{display:block;color:inherit;font:inherit;--jw-gap:clamp(.55rem,1.5vw,1rem)}
4
+ *{box-sizing:border-box}.state{padding:2rem;text-align:center;color:color-mix(in srgb,currentColor 60%,transparent)}
5
+ .error{color:#b42318}.head{margin-bottom:1rem}.head h2{margin:0;font:700 clamp(1.4rem,3vw,2rem)/1.15 inherit}
6
+ .head p{margin:.4rem 0 0;color:color-mix(in srgb,currentColor 66%,transparent)}
7
+ .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));gap:var(--jw-gap)}
8
+ figure{margin:0}.photo{position:relative;overflow:hidden;border:0;border-radius:.8rem;background:#eee;cursor:zoom-in;padding:0;width:100%}
9
+ .photo img,.cover img,.random img{display:block;width:100%;height:auto;aspect-ratio:var(--ratio,4/3);object-fit:var(--fit,cover)}
10
+ figcaption{padding:.45rem .15rem 0;font-size:.875rem;color:color-mix(in srgb,currentColor 72%,transparent)}
11
+ .tags{display:flex;gap:.4rem;overflow:auto;margin:0 0 1rem;padding:.1rem}.tag,.back{border:1px solid color-mix(in srgb,currentColor 20%,transparent);border-radius:999px;background:transparent;color:inherit;padding:.4rem .75rem;cursor:pointer}
12
+ .tag[aria-pressed=true]{background:currentColor;color:Canvas}.index{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));gap:var(--jw-gap)}
13
+ .card{border:1px solid color-mix(in srgb,currentColor 15%,transparent);border-radius:1rem;overflow:hidden;background:transparent;color:inherit;text-align:left;padding:0;cursor:pointer}
14
+ .card-copy{display:block;padding:.85rem}.card strong{display:block;font-size:1.05rem}.card small{display:block;margin-top:.2rem;color:color-mix(in srgb,currentColor 60%,transparent)}
15
+ dialog{border:0;border-radius:1rem;padding:0;max-width:min(94vw,72rem);max-height:92vh;background:#111;color:#fff}dialog::backdrop{background:#000b}
16
+ dialog img{display:block;max-width:92vw;max-height:84vh;width:auto;height:auto}.close{position:absolute;right:.6rem;top:.6rem;width:2.4rem;height:2.4rem;border:0;border-radius:50%;background:#000a;color:#fff;font-size:1.5rem;cursor:pointer}
17
+ .viewer-caption{padding:.7rem 1rem}.powered{margin-top:.8rem;text-align:center;font-size:.75rem}.powered a{color:color-mix(in srgb,currentColor 55%,transparent);text-decoration:none}
18
+ `;
19
+ const HTMLElementBase = (globalThis.HTMLElement ?? class {
20
+ });
21
+ function image(photo, className) {
22
+ const img = document.createElement("img");
23
+ const variants = [...photo.variants].sort((a, b) => a.width - b.width);
24
+ const fallback = variants.at(-1);
25
+ img.src = fallback?.url ?? "";
26
+ img.srcset = variants.map((variant) => `${variant.url} ${variant.width}w`).join(", ");
27
+ img.sizes = "(min-width: 72rem) 25vw, (min-width: 40rem) 50vw, 100vw";
28
+ img.alt = photo.decorative ? "" : (photo.altText ?? "");
29
+ img.loading = "lazy";
30
+ img.decoding = "async";
31
+ if (photo.width)
32
+ img.width = photo.width;
33
+ if (photo.height)
34
+ img.height = photo.height;
35
+ if (className)
36
+ img.className = className;
37
+ return img;
38
+ }
39
+ class GalleryElement extends HTMLElementBase {
40
+ root;
41
+ generation = 0;
42
+ static get observedAttributes() {
43
+ return ["site-key", "endpoint", "slug", "tag", "seed", "deep-link"];
44
+ }
45
+ connectedCallback() {
46
+ this.root ??= this.attachShadow({ mode: "open" });
47
+ this.reload();
48
+ }
49
+ disconnectedCallback() {
50
+ this.generation += 1;
51
+ }
52
+ attributeChangedCallback(name, previous, value) {
53
+ if (previous !== value && this.isConnected && this.root)
54
+ this.reload();
55
+ }
56
+ reload() {
57
+ const generation = this.advanceGeneration();
58
+ this.loading();
59
+ void this.load(generation);
60
+ }
61
+ advanceGeneration() { return ++this.generation; }
62
+ get currentGeneration() { return this.generation; }
63
+ isCurrent(generation) { return this.isConnected && generation === this.generation; }
64
+ get siteKey() { return this.getAttribute("site-key") ?? ""; }
65
+ get endpoint() { return this.getAttribute("endpoint") ?? undefined; }
66
+ frame() {
67
+ const frame = document.createElement("section");
68
+ const style = document.createElement("style");
69
+ style.textContent = styles;
70
+ this.root?.replaceChildren(style, frame);
71
+ return frame;
72
+ }
73
+ loading() { const frame = this.frame(); frame.className = "state"; frame.textContent = "Loading gallery…"; }
74
+ fail(error) { const frame = this.frame(); frame.className = "state error"; frame.textContent = error instanceof Error ? error.message : "Gallery unavailable"; }
75
+ async brand(frame) {
76
+ try {
77
+ const config = await fetchSiteConfig({ siteKey: this.siteKey, endpoint: this.endpoint });
78
+ if (!config?.showPoweredBy || !frame.isConnected)
79
+ return;
80
+ const footer = document.createElement("footer");
81
+ footer.className = "powered";
82
+ const link = document.createElement("a");
83
+ link.href = POWERED_BY_URL;
84
+ link.target = "_blank";
85
+ link.rel = "noopener noreferrer";
86
+ link.textContent = POWERED_BY_LABEL;
87
+ footer.append(link);
88
+ frame.append(footer);
89
+ }
90
+ catch { /* Paid sites must never be branded on an uncertain response. */ }
91
+ }
92
+ }
93
+ async function fetchAllGalleries(siteKey, endpoint) {
94
+ const galleries = [];
95
+ let after;
96
+ do {
97
+ const page = await fetchGalleries({ siteKey, endpoint, limit: 100, after });
98
+ galleries.push(...page.galleries);
99
+ after = page.nextCursor;
100
+ } while (after);
101
+ return galleries;
102
+ }
103
+ function renderGallery(host, gallery, initialTag) {
104
+ const frame = host.frame();
105
+ const head = document.createElement("header");
106
+ head.className = "head";
107
+ const title = document.createElement("h2");
108
+ title.textContent = gallery.title;
109
+ head.append(title);
110
+ if (gallery.description) {
111
+ const description = document.createElement("p");
112
+ description.textContent = gallery.description;
113
+ head.append(description);
114
+ }
115
+ frame.append(head);
116
+ const allTags = [...new Set(gallery.photos.flatMap((photo) => photo.tags))].sort();
117
+ const grid = document.createElement("div");
118
+ grid.className = "grid";
119
+ let active = initialTag ?? "";
120
+ const draw = () => {
121
+ grid.replaceChildren();
122
+ for (const photo of gallery.photos.filter((item) => !active || item.tags.includes(active))) {
123
+ const figure = document.createElement("figure");
124
+ const button = document.createElement("button");
125
+ button.type = "button";
126
+ button.className = "photo";
127
+ button.append(image(photo));
128
+ button.addEventListener("click", () => openViewer(frame, photo));
129
+ figure.append(button);
130
+ if (photo.caption) {
131
+ const caption = document.createElement("figcaption");
132
+ caption.textContent = photo.caption;
133
+ figure.append(caption);
134
+ }
135
+ grid.append(figure);
136
+ }
137
+ };
138
+ if (allTags.length) {
139
+ const tags = document.createElement("nav");
140
+ tags.className = "tags";
141
+ tags.setAttribute("aria-label", "Filter photos");
142
+ for (const value of ["", ...allTags]) {
143
+ const button = document.createElement("button");
144
+ button.type = "button";
145
+ button.className = "tag";
146
+ button.textContent = value || "All";
147
+ button.setAttribute("aria-pressed", String(active === value));
148
+ button.addEventListener("click", () => { active = value; for (const item of tags.querySelectorAll("button"))
149
+ item.setAttribute("aria-pressed", String(item === button)); draw(); });
150
+ tags.append(button);
151
+ }
152
+ frame.append(tags);
153
+ }
154
+ frame.append(grid);
155
+ draw();
156
+ return frame;
157
+ }
158
+ function openViewer(frame, photo) {
159
+ const dialog = document.createElement("dialog");
160
+ const close = document.createElement("button");
161
+ close.type = "button";
162
+ close.className = "close";
163
+ close.ariaLabel = "Close photo";
164
+ close.textContent = "×";
165
+ close.addEventListener("click", () => dialog.close());
166
+ const full = image(photo);
167
+ full.loading = "eager";
168
+ full.sizes = "100vw";
169
+ dialog.append(close, full);
170
+ if (photo.caption) {
171
+ const caption = document.createElement("div");
172
+ caption.className = "viewer-caption";
173
+ caption.textContent = photo.caption;
174
+ dialog.append(caption);
175
+ }
176
+ dialog.addEventListener("click", (event) => { if (event.target === dialog)
177
+ dialog.close(); });
178
+ dialog.addEventListener("close", () => dialog.remove());
179
+ frame.append(dialog);
180
+ dialog.showModal();
181
+ }
182
+ export class JamwidgetsGalleryElement extends GalleryElement {
183
+ async load(generation) {
184
+ try {
185
+ const slug = this.getAttribute("slug");
186
+ if (!slug || !this.siteKey)
187
+ throw new Error("site-key and slug are required");
188
+ const tag = this.getAttribute("tag") ?? undefined;
189
+ const gallery = await fetchGallery({ siteKey: this.siteKey, endpoint: this.endpoint, slug, tag });
190
+ if (!this.isCurrent(generation))
191
+ return;
192
+ if (!gallery)
193
+ throw new Error("Gallery not found");
194
+ const frame = renderGallery(this, gallery, tag);
195
+ await this.brand(frame);
196
+ }
197
+ catch (error) {
198
+ if (this.isCurrent(generation))
199
+ this.fail(error);
200
+ }
201
+ }
202
+ }
203
+ export class JamwidgetsGalleryIndexElement extends GalleryElement {
204
+ galleries = [];
205
+ loaded = false;
206
+ navigate = () => {
207
+ if (!this.hasAttribute("deep-link"))
208
+ return;
209
+ if (!this.loaded) {
210
+ this.reload();
211
+ return;
212
+ }
213
+ const slug = new URL(location.href).searchParams.get("gallery");
214
+ const generation = this.advanceGeneration();
215
+ if (slug)
216
+ void this.showGallery(slug, this.galleries, false, generation);
217
+ else
218
+ void this.showIndex(this.galleries, generation);
219
+ };
220
+ connectedCallback() {
221
+ super.connectedCallback();
222
+ globalThis.addEventListener?.("popstate", this.navigate);
223
+ }
224
+ disconnectedCallback() {
225
+ globalThis.removeEventListener?.("popstate", this.navigate);
226
+ super.disconnectedCallback();
227
+ }
228
+ async load(generation) {
229
+ try {
230
+ this.loaded = false;
231
+ if (!this.siteKey)
232
+ throw new Error("site-key is required");
233
+ const galleries = await fetchAllGalleries(this.siteKey, this.endpoint);
234
+ if (!this.isCurrent(generation))
235
+ return;
236
+ this.galleries = galleries;
237
+ this.loaded = true;
238
+ const linked = this.hasAttribute("deep-link") ? new URL(location.href).searchParams.get("gallery") : null;
239
+ if (linked)
240
+ await this.showGallery(linked, galleries, false, generation);
241
+ else
242
+ await this.showIndex(galleries, generation);
243
+ }
244
+ catch (error) {
245
+ if (this.isCurrent(generation))
246
+ this.fail(error);
247
+ }
248
+ }
249
+ async showIndex(galleries, expectedGeneration = this.currentGeneration) {
250
+ if (!this.isCurrent(expectedGeneration))
251
+ return;
252
+ const frame = this.frame();
253
+ const index = document.createElement("div");
254
+ index.className = "index";
255
+ for (const gallery of galleries) {
256
+ const card = document.createElement("button");
257
+ card.type = "button";
258
+ card.className = "card";
259
+ if (gallery.cover) {
260
+ const cover = document.createElement("span");
261
+ cover.className = "cover";
262
+ cover.append(image(gallery.cover));
263
+ card.append(cover);
264
+ }
265
+ const copy = document.createElement("span");
266
+ copy.className = "card-copy";
267
+ const title = document.createElement("strong");
268
+ title.textContent = gallery.title;
269
+ const count = document.createElement("small");
270
+ count.textContent = `${gallery.photoCount} photo${gallery.photoCount === 1 ? "" : "s"}`;
271
+ copy.append(title, count);
272
+ card.append(copy);
273
+ card.addEventListener("click", () => void this.showGallery(gallery.slug, galleries, true, this.advanceGeneration()));
274
+ index.append(card);
275
+ }
276
+ frame.append(index);
277
+ await this.brand(frame);
278
+ }
279
+ async showGallery(slug, galleries, updateHistory, expectedGeneration) {
280
+ try {
281
+ const gallery = await fetchGallery({ siteKey: this.siteKey, endpoint: this.endpoint, slug });
282
+ if (expectedGeneration !== undefined && !this.isCurrent(expectedGeneration))
283
+ return;
284
+ if (!gallery) {
285
+ if (this.hasAttribute("deep-link")) {
286
+ const url = new URL(location.href);
287
+ url.searchParams.delete("gallery");
288
+ history.replaceState({}, "", url);
289
+ }
290
+ await this.showIndex(galleries, expectedGeneration);
291
+ return;
292
+ }
293
+ const frame = renderGallery(this, gallery);
294
+ const back = document.createElement("button");
295
+ back.type = "button";
296
+ back.className = "back";
297
+ back.textContent = "← All galleries";
298
+ back.addEventListener("click", () => { if (this.hasAttribute("deep-link")) {
299
+ const url = new URL(location.href);
300
+ url.searchParams.delete("gallery");
301
+ history.pushState({}, "", url);
302
+ } void this.showIndex(galleries, this.advanceGeneration()); });
303
+ frame.prepend(back);
304
+ if (updateHistory && this.hasAttribute("deep-link")) {
305
+ const url = new URL(location.href);
306
+ url.searchParams.set("gallery", slug);
307
+ history.pushState({}, "", url);
308
+ }
309
+ await this.brand(frame);
310
+ }
311
+ catch (error) {
312
+ if (expectedGeneration === undefined || this.isCurrent(expectedGeneration))
313
+ this.fail(error);
314
+ }
315
+ }
316
+ }
317
+ export class JamwidgetsRandomPhotoElement extends GalleryElement {
318
+ async load(generation) {
319
+ try {
320
+ const slug = this.getAttribute("slug");
321
+ if (!slug || !this.siteKey)
322
+ throw new Error("site-key and slug are required");
323
+ const seed = this.getAttribute("seed") ?? globalThis.crypto?.randomUUID?.() ?? String(Date.now());
324
+ const photo = await fetchRandomPhoto({ siteKey: this.siteKey, endpoint: this.endpoint, slug, tag: this.getAttribute("tag") ?? undefined, seed });
325
+ if (!this.isCurrent(generation))
326
+ return;
327
+ if (!photo)
328
+ throw new Error("No matching photo");
329
+ const frame = this.frame();
330
+ const figure = document.createElement("figure");
331
+ figure.className = "random";
332
+ figure.append(image(photo));
333
+ if (photo.caption) {
334
+ const caption = document.createElement("figcaption");
335
+ caption.textContent = photo.caption;
336
+ figure.append(caption);
337
+ }
338
+ frame.append(figure);
339
+ await this.brand(frame);
340
+ }
341
+ catch (error) {
342
+ if (this.isCurrent(generation))
343
+ this.fail(error);
344
+ }
345
+ }
346
+ }
347
+ if (globalThis.customElements) {
348
+ if (!customElements.get("jamwidgets-gallery"))
349
+ customElements.define("jamwidgets-gallery", JamwidgetsGalleryElement);
350
+ if (!customElements.get("jamwidgets-gallery-index"))
351
+ customElements.define("jamwidgets-gallery-index", JamwidgetsGalleryIndexElement);
352
+ if (!customElements.get("jamwidgets-random-photo"))
353
+ customElements.define("jamwidgets-random-photo", JamwidgetsRandomPhotoElement);
354
+ }
package/dist/index.d.ts CHANGED
@@ -8,14 +8,14 @@ export declare const DEFAULT_ENDPOINT = "https://jamwidgets.com";
8
8
  export declare const API_PATH = "/api/v1";
9
9
  export declare const VISITOR_STORAGE_KEY = "jamwidgets_visitor_id";
10
10
  export { getAttributionHeaders, getSessionId } from "./attribution.js";
11
- export interface JamWidgetsConfig {
11
+ export interface JamwidgetsConfig {
12
12
  /** Your site key (required) */
13
13
  siteKey: string;
14
14
  /** Base URL of your Jamwidgets instance (default: 'https://jamwidgets.com') */
15
15
  endpoint?: string;
16
16
  }
17
- /** @deprecated Use JamWidgetsConfig instead */
18
- export type SeriphConfig = JamWidgetsConfig;
17
+ /** @deprecated Use JamwidgetsConfig instead */
18
+ export type SeriphConfig = JamwidgetsConfig;
19
19
  export interface Comment {
20
20
  id: string;
21
21
  pageId: string;
@@ -52,6 +52,42 @@ export interface JamwidgetsPost {
52
52
  tags: string[];
53
53
  publishedAt: string;
54
54
  }
55
+ export interface GalleryPhotoVariant {
56
+ width: number;
57
+ height: number;
58
+ url: string;
59
+ fileSize: number;
60
+ }
61
+ export interface GalleryPhoto {
62
+ id: string;
63
+ filename: string;
64
+ width?: number;
65
+ height?: number;
66
+ variants: GalleryPhotoVariant[];
67
+ altText?: string;
68
+ decorative: boolean;
69
+ caption?: string;
70
+ tags: string[];
71
+ }
72
+ export interface JamwidgetsGallery {
73
+ id: string;
74
+ title: string;
75
+ slug: string;
76
+ description?: string;
77
+ sortOrder: "manual" | "newest" | "oldest";
78
+ coverPhotoId?: string;
79
+ photos: GalleryPhoto[];
80
+ publishedAt?: string;
81
+ }
82
+ export interface GallerySummary {
83
+ id: string;
84
+ title: string;
85
+ slug: string;
86
+ description?: string;
87
+ cover?: GalleryPhoto;
88
+ photoCount: number;
89
+ publishedAt: string;
90
+ }
55
91
  /** @deprecated Use JamwidgetsPost instead */
56
92
  export type SeriphPost = JamwidgetsPost;
57
93
  /** Build full API URL from endpoint and path */
@@ -79,9 +115,9 @@ export declare function getConfigFromMeta(): {
79
115
  endpoint?: string;
80
116
  } | null;
81
117
  /** Get site key from config, with fallback to meta tag */
82
- export declare function getSiteKey(config: JamWidgetsConfig): string;
118
+ export declare function getSiteKey(config: JamwidgetsConfig): string;
83
119
  /** Resolve full config, merging props with meta tag fallbacks */
84
- export declare function resolveConfig(config: Partial<JamWidgetsConfig>): JamWidgetsConfig;
120
+ export declare function resolveConfig(config: Partial<JamwidgetsConfig>): JamwidgetsConfig;
85
121
  /** Generate a random UUID v4 */
86
122
  export declare function generateUUID(): string;
87
123
  /**
@@ -99,29 +135,29 @@ export declare function getVisitorId(): string;
99
135
  export interface SiteConfig {
100
136
  name: string;
101
137
  slug: string;
102
- /** False on Free render the "Powered by JamWidgets" footer. True on Team → hide it. */
103
- hasCustomBranding: boolean;
138
+ /** True on Free; render the "Powered by Jamwidgets" attribution. */
139
+ showPoweredBy: boolean;
104
140
  }
105
- /** Where the branding footer links. */
141
+ /** Where the powered-by footer links. */
106
142
  export declare const POWERED_BY_URL = "https://jamwidgets.com/?utm_source=powered_by";
107
- export declare const POWERED_BY_LABEL = "Powered by JamWidgets";
143
+ export declare const POWERED_BY_LABEL = "Powered by Jamwidgets";
108
144
  /**
109
145
  * Fetch (and cache, per endpoint+key) the site config. Returns null on failure.
110
- * Used by rendered widgets to decide whether to show the branding footer.
146
+ * Used by rendered widgets to decide whether to show the powered-by footer.
111
147
  */
112
- export declare function fetchSiteConfig(options: JamWidgetsConfig): Promise<SiteConfig | null>;
113
- export interface SubmitFormOptions extends JamWidgetsConfig {
148
+ export declare function fetchSiteConfig(options: JamwidgetsConfig): Promise<SiteConfig | null>;
149
+ export interface SubmitFormOptions extends JamwidgetsConfig {
114
150
  formSlug: string;
115
151
  data: Record<string, unknown>;
116
152
  /** Form load timestamp for spam detection (auto-set if not provided) */
117
153
  formLoadTime?: number;
118
154
  }
119
155
  export declare function submitForm(options: SubmitFormOptions): Promise<FormSubmitResponse>;
120
- export interface FetchCommentsOptions extends JamWidgetsConfig {
156
+ export interface FetchCommentsOptions extends JamwidgetsConfig {
121
157
  pageId: string;
122
158
  }
123
159
  export declare function fetchComments(options: FetchCommentsOptions): Promise<Comment[]>;
124
- export interface PostCommentOptions extends JamWidgetsConfig {
160
+ export interface PostCommentOptions extends JamwidgetsConfig {
125
161
  pageId: string;
126
162
  authorName: string;
127
163
  authorEmail?: string;
@@ -129,7 +165,7 @@ export interface PostCommentOptions extends JamWidgetsConfig {
129
165
  parentId?: string;
130
166
  }
131
167
  export declare function postComment(options: PostCommentOptions): Promise<Comment>;
132
- export interface FetchReactionsOptions extends JamWidgetsConfig {
168
+ export interface FetchReactionsOptions extends JamwidgetsConfig {
133
169
  pageId: string;
134
170
  }
135
171
  export interface FetchReactionsResponse extends ReactionCounts {
@@ -137,7 +173,7 @@ export interface FetchReactionsResponse extends ReactionCounts {
137
173
  userReactions: string[];
138
174
  }
139
175
  export declare function fetchReactions(options: FetchReactionsOptions): Promise<FetchReactionsResponse>;
140
- export interface AddReactionOptions extends JamWidgetsConfig {
176
+ export interface AddReactionOptions extends JamwidgetsConfig {
141
177
  pageId: string;
142
178
  reactionType?: string;
143
179
  }
@@ -145,7 +181,7 @@ export declare function addReaction(options: AddReactionOptions): Promise<{
145
181
  reactionType: string;
146
182
  count: number;
147
183
  }>;
148
- export interface RemoveReactionOptions extends JamWidgetsConfig {
184
+ export interface RemoveReactionOptions extends JamwidgetsConfig {
149
185
  pageId: string;
150
186
  reactionType?: string;
151
187
  }
@@ -153,23 +189,45 @@ export declare function removeReaction(options: RemoveReactionOptions): Promise<
153
189
  reactionType: string;
154
190
  count: number;
155
191
  }>;
156
- export interface SubscribeOptions extends JamWidgetsConfig {
192
+ export interface SubscribeOptions extends JamwidgetsConfig {
157
193
  email: string;
158
194
  }
159
195
  export declare function subscribe(options: SubscribeOptions): Promise<SubscribeResponse>;
160
- export interface FetchPostsOptions extends JamWidgetsConfig {
196
+ export interface FetchPostsOptions extends JamwidgetsConfig {
161
197
  /** Filter posts by tag */
162
198
  tag?: string;
163
199
  /** Maximum number of posts to fetch (default: 500) */
164
200
  limit?: number;
165
201
  }
166
202
  export declare function fetchPosts(options: FetchPostsOptions): Promise<JamwidgetsPost[]>;
167
- export interface FetchPostOptions extends JamWidgetsConfig {
203
+ export interface FetchPostOptions extends JamwidgetsConfig {
168
204
  /** The post slug to fetch */
169
205
  slug: string;
170
206
  }
171
207
  export declare function fetchPost(options: FetchPostOptions): Promise<JamwidgetsPost | null>;
172
- export interface JoinWaitlistOptions extends JamWidgetsConfig {
208
+ export interface FetchGalleriesOptions extends JamwidgetsConfig {
209
+ after?: string;
210
+ limit?: number;
211
+ /** Site origin sent by build-time loaders for allowed-origin validation. */
212
+ origin?: string;
213
+ }
214
+ export interface GalleryPage {
215
+ galleries: GallerySummary[];
216
+ nextCursor?: string;
217
+ }
218
+ export declare function fetchGalleries(options: FetchGalleriesOptions): Promise<GalleryPage>;
219
+ export interface FetchGalleryOptions extends JamwidgetsConfig {
220
+ slug: string;
221
+ tag?: string;
222
+ /** Site origin sent by build-time loaders for allowed-origin validation. */
223
+ origin?: string;
224
+ }
225
+ export declare function fetchGallery(options: FetchGalleryOptions): Promise<JamwidgetsGallery | null>;
226
+ export interface FetchRandomPhotoOptions extends FetchGalleryOptions {
227
+ seed?: string;
228
+ }
229
+ export declare function fetchRandomPhoto(options: FetchRandomPhotoOptions): Promise<GalleryPhoto | null>;
230
+ export interface JoinWaitlistOptions extends JamwidgetsConfig {
173
231
  email: string;
174
232
  name?: string;
175
233
  /** Where the signup came from (e.g., "homepage", "blog") */
@@ -182,7 +240,7 @@ export interface JoinWaitlistResponse {
182
240
  position?: number;
183
241
  }
184
242
  export declare function joinWaitlist(options: JoinWaitlistOptions): Promise<JoinWaitlistResponse>;
185
- export interface ViewCountsOptions extends JamWidgetsConfig {
243
+ export interface ViewCountsOptions extends JamwidgetsConfig {
186
244
  pageId: string;
187
245
  }
188
246
  export interface ViewCounts {
@@ -196,7 +254,7 @@ export interface RecordViewResponse extends ViewCounts {
196
254
  export declare function getViewCounts(options: ViewCountsOptions): Promise<ViewCounts>;
197
255
  export declare function recordView(options: ViewCountsOptions): Promise<RecordViewResponse>;
198
256
  export type FeedbackType = "bug" | "feature" | "general";
199
- export interface SubmitFeedbackOptions extends JamWidgetsConfig {
257
+ export interface SubmitFeedbackOptions extends JamwidgetsConfig {
200
258
  type: FeedbackType;
201
259
  content: string;
202
260
  email?: string;
@@ -231,11 +289,11 @@ export interface PollWithResults extends Poll {
231
289
  /** Options the current visitor has voted for */
232
290
  userVotes?: string[];
233
291
  }
234
- export interface FetchPollOptions extends JamWidgetsConfig {
292
+ export interface FetchPollOptions extends JamwidgetsConfig {
235
293
  slug: string;
236
294
  }
237
295
  export declare function fetchPoll(options: FetchPollOptions): Promise<PollWithResults>;
238
- export interface VotePollOptions extends JamWidgetsConfig {
296
+ export interface VotePollOptions extends JamwidgetsConfig {
239
297
  slug: string;
240
298
  selectedOptions: string[];
241
299
  }
@@ -254,10 +312,10 @@ export interface Announcement {
254
312
  linkText?: string;
255
313
  isDismissible: boolean;
256
314
  }
257
- export interface FetchAnnouncementsOptions extends JamWidgetsConfig {
315
+ export interface FetchAnnouncementsOptions extends JamwidgetsConfig {
258
316
  }
259
317
  export declare function fetchAnnouncements(options: FetchAnnouncementsOptions): Promise<Announcement[]>;
260
- export interface DismissAnnouncementOptions extends JamWidgetsConfig {
318
+ export interface DismissAnnouncementOptions extends JamwidgetsConfig {
261
319
  announcementId: number;
262
320
  }
263
321
  export declare function dismissAnnouncement(options: DismissAnnouncementOptions): Promise<void>;
@@ -312,7 +370,7 @@ export declare class SubscribeController {
312
370
  private config;
313
371
  private listeners;
314
372
  private _state;
315
- constructor(config: JamWidgetsConfig);
373
+ constructor(config: JamwidgetsConfig);
316
374
  /** Get current state */
317
375
  getState(): SubscribeState;
318
376
  /** Subscribe to state changes */
@@ -338,7 +396,7 @@ export declare class WaitlistController {
338
396
  private config;
339
397
  private listeners;
340
398
  private _state;
341
- constructor(config: JamWidgetsConfig);
399
+ constructor(config: JamwidgetsConfig);
342
400
  getState(): WaitlistState;
343
401
  subscribe(listener: ControllerListener<WaitlistState>): () => void;
344
402
  private notify;
@@ -359,7 +417,7 @@ export declare class FormController {
359
417
  private listeners;
360
418
  private loadTime;
361
419
  private _state;
362
- constructor(config: JamWidgetsConfig, formSlug: string);
420
+ constructor(config: JamwidgetsConfig, formSlug: string);
363
421
  getState(): FormState;
364
422
  subscribe(listener: ControllerListener<FormState>): () => void;
365
423
  private notify;
@@ -375,7 +433,7 @@ export declare class ReactionsController {
375
433
  private pageId;
376
434
  private listeners;
377
435
  private _state;
378
- constructor(config: JamWidgetsConfig, pageId: string);
436
+ constructor(config: JamwidgetsConfig, pageId: string);
379
437
  getState(): ReactionsState;
380
438
  subscribe(listener: ControllerListener<ReactionsState>): () => void;
381
439
  private notify;
@@ -393,7 +451,7 @@ export declare class CommentsController {
393
451
  private pageId;
394
452
  private listeners;
395
453
  private _state;
396
- constructor(config: JamWidgetsConfig, pageId: string);
454
+ constructor(config: JamwidgetsConfig, pageId: string);
397
455
  getState(): CommentsState;
398
456
  subscribe(listener: ControllerListener<CommentsState>): () => void;
399
457
  private notify;
@@ -418,7 +476,7 @@ export declare class FeedbackController {
418
476
  private config;
419
477
  private listeners;
420
478
  private _state;
421
- constructor(config: JamWidgetsConfig);
479
+ constructor(config: JamwidgetsConfig);
422
480
  getState(): FeedbackState;
423
481
  subscribe(listener: ControllerListener<FeedbackState>): () => void;
424
482
  private notify;
@@ -443,7 +501,7 @@ export declare class PollController {
443
501
  private slug;
444
502
  private listeners;
445
503
  private _state;
446
- constructor(config: JamWidgetsConfig, slug: string);
504
+ constructor(config: JamwidgetsConfig, slug: string);
447
505
  getState(): PollState;
448
506
  subscribe(listener: ControllerListener<PollState>): () => void;
449
507
  private notify;
@@ -469,7 +527,7 @@ export declare class AnnouncementsController {
469
527
  private config;
470
528
  private listeners;
471
529
  private _state;
472
- constructor(config: JamWidgetsConfig);
530
+ constructor(config: JamwidgetsConfig);
473
531
  getState(): AnnouncementsState;
474
532
  /** Get visible (non-dismissed) announcements */
475
533
  getVisibleAnnouncements(): Announcement[];
@@ -497,7 +555,7 @@ export declare class ViewCountsController {
497
555
  private pageId;
498
556
  private listeners;
499
557
  private _state;
500
- constructor(config: JamWidgetsConfig, pageId: string);
558
+ constructor(config: JamwidgetsConfig, pageId: string);
501
559
  getState(): ViewCountsState;
502
560
  subscribe(listener: ControllerListener<ViewCountsState>): () => void;
503
561
  private notify;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -145,13 +145,13 @@ function getHeaders(siteKey, path) {
145
145
  "X-Seriph-Visitor": visitorId,
146
146
  };
147
147
  }
148
- /** Where the branding footer links. */
148
+ /** Where the powered-by footer links. */
149
149
  export const POWERED_BY_URL = "https://jamwidgets.com/?utm_source=powered_by";
150
- export const POWERED_BY_LABEL = "Powered by JamWidgets";
150
+ export const POWERED_BY_LABEL = "Powered by Jamwidgets";
151
151
  const siteConfigCache = new Map();
152
152
  /**
153
153
  * Fetch (and cache, per endpoint+key) the site config. Returns null on failure.
154
- * Used by rendered widgets to decide whether to show the branding footer.
154
+ * Used by rendered widgets to decide whether to show the powered-by footer.
155
155
  */
156
156
  export async function fetchSiteConfig(options) {
157
157
  const { endpoint } = options;
@@ -333,6 +333,60 @@ export async function fetchPost(options) {
333
333
  const data = await response.json();
334
334
  return data.public_post || data;
335
335
  }
336
+ export async function fetchGalleries(options) {
337
+ const siteKey = getSiteKey(options);
338
+ const url = new URL(buildUrl(options.endpoint, "/galleries"));
339
+ url.searchParams.set("limit", String(options.limit ?? 100));
340
+ if (options.after)
341
+ url.searchParams.set("after", options.after);
342
+ const response = await fetch(url, {
343
+ headers: {
344
+ ...getHeaders(siteKey),
345
+ ...(options.origin ? { Origin: options.origin } : {}),
346
+ },
347
+ });
348
+ if (!response.ok)
349
+ throw new Error(`Failed to fetch galleries: ${response.status}`);
350
+ return response.json();
351
+ }
352
+ export async function fetchGallery(options) {
353
+ const siteKey = getSiteKey(options);
354
+ const url = new URL(buildUrl(options.endpoint, `/galleries/${encodeURIComponent(options.slug)}`));
355
+ if (options.tag)
356
+ url.searchParams.set("tag", options.tag);
357
+ const response = await fetch(url, {
358
+ headers: {
359
+ ...getHeaders(siteKey),
360
+ ...(options.origin ? { Origin: options.origin } : {}),
361
+ },
362
+ });
363
+ if (response.status === 404)
364
+ return null;
365
+ if (!response.ok)
366
+ throw new Error(`Failed to fetch gallery: ${response.status}`);
367
+ const data = await response.json();
368
+ return data.gallery ?? data;
369
+ }
370
+ export async function fetchRandomPhoto(options) {
371
+ const siteKey = getSiteKey(options);
372
+ const url = new URL(buildUrl(options.endpoint, `/galleries/${encodeURIComponent(options.slug)}/random`));
373
+ if (options.tag)
374
+ url.searchParams.set("tag", options.tag);
375
+ if (options.seed)
376
+ url.searchParams.set("seed", options.seed);
377
+ const response = await fetch(url, {
378
+ headers: {
379
+ ...getHeaders(siteKey),
380
+ ...(options.origin ? { Origin: options.origin } : {}),
381
+ },
382
+ });
383
+ if (response.status === 404)
384
+ return null;
385
+ if (!response.ok)
386
+ throw new Error(`Failed to fetch random photo: ${response.status}`);
387
+ const data = await response.json();
388
+ return data.gallery_photo ?? data.galleryPhoto ?? data;
389
+ }
336
390
  export async function joinWaitlist(options) {
337
391
  const { endpoint, email, name, source } = options;
338
392
  const siteKey = getSiteKey(options);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jamwidgets/core",
3
- "version": "0.3.4",
3
+ "version": "0.5.0",
4
4
  "description": "Framework-agnostic API client and types for Jamwidgets",
5
5
  "repository": {
6
6
  "type": "git",
@@ -18,6 +18,10 @@
18
18
  ".": {
19
19
  "types": "./dist/index.d.ts",
20
20
  "import": "./dist/index.js"
21
+ },
22
+ "./gallery-elements": {
23
+ "types": "./dist/gallery-elements.d.ts",
24
+ "import": "./dist/gallery-elements.js"
21
25
  }
22
26
  },
23
27
  "files": [
@@ -34,7 +38,8 @@
34
38
  "comments",
35
39
  "reactions",
36
40
  "subscribe",
37
- "widgets"
41
+ "widgets",
42
+ "galleries"
38
43
  ],
39
44
  "license": "MIT",
40
45
  "devDependencies": {