@scalemule/news-publication 0.0.48 → 0.0.49

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.
Files changed (72) hide show
  1. package/README.md +28 -0
  2. package/dist/{chunk-GB36YM56.js → chunk-2MEYHM7M.js} +11 -1
  3. package/dist/chunk-4JRWZXAP.js +62 -0
  4. package/dist/chunk-MBBPEFDA.js +124 -0
  5. package/dist/chunk-TTLM7YOH.js +444 -0
  6. package/dist/chunk-ZXH3O537.js +251 -0
  7. package/dist/community-maps-view.d.cts +3 -3
  8. package/dist/community-maps-view.d.ts +3 -3
  9. package/dist/cookie-consent-banner.d.cts +2 -2
  10. package/dist/cookie-consent-banner.d.ts +2 -2
  11. package/dist/cookie-settings-view.d.cts +2 -2
  12. package/dist/cookie-settings-view.d.ts +2 -2
  13. package/dist/index.cjs +29 -1
  14. package/dist/index.d.cts +4 -3
  15. package/dist/index.d.ts +4 -3
  16. package/dist/index.js +4 -3
  17. package/dist/marketplace-forms.d.cts +3 -3
  18. package/dist/marketplace-forms.d.ts +3 -3
  19. package/dist/marketplace-view.d.cts +5 -5
  20. package/dist/marketplace-view.d.ts +5 -5
  21. package/dist/{meet-RWmfj3I3.d.cts → meet-BWpxY20X.d.ts} +5 -0
  22. package/dist/{meet-RWmfj3I3.d.ts → meet-CO9Unz5M.d.cts} +5 -0
  23. package/dist/meet-forms.d.cts +7 -6
  24. package/dist/meet-forms.d.ts +7 -6
  25. package/dist/meet-forms.js +2 -1
  26. package/dist/meet-view.cjs +22 -2
  27. package/dist/meet-view.d.cts +7 -5
  28. package/dist/meet-view.d.ts +7 -5
  29. package/dist/meet-view.js +21 -4
  30. package/dist/network-bar.d.cts +2 -2
  31. package/dist/network-bar.d.ts +2 -2
  32. package/dist/network-copyright.d.cts +2 -2
  33. package/dist/network-copyright.d.ts +2 -2
  34. package/dist/pets-auth-server.cjs +212 -0
  35. package/dist/pets-auth-server.d.cts +17 -0
  36. package/dist/pets-auth-server.d.ts +17 -0
  37. package/dist/pets-auth-server.js +155 -0
  38. package/dist/pets-forms.cjs +762 -0
  39. package/dist/pets-forms.d.cts +26 -0
  40. package/dist/pets-forms.d.ts +26 -0
  41. package/dist/pets-forms.js +712 -0
  42. package/dist/pets-interactions.cjs +332 -0
  43. package/dist/pets-interactions.d.cts +20 -0
  44. package/dist/pets-interactions.d.ts +20 -0
  45. package/dist/pets-interactions.js +319 -0
  46. package/dist/pets-publication.cjs +818 -0
  47. package/dist/pets-publication.d.cts +36 -0
  48. package/dist/pets-publication.d.ts +36 -0
  49. package/dist/pets-publication.js +177 -0
  50. package/dist/pets-server.cjs +289 -0
  51. package/dist/pets-server.d.cts +42 -0
  52. package/dist/pets-server.d.ts +42 -0
  53. package/dist/pets-server.js +2 -0
  54. package/dist/pets-view.cjs +541 -0
  55. package/dist/pets-view.d.cts +56 -0
  56. package/dist/pets-view.d.ts +56 -0
  57. package/dist/pets-view.js +4 -0
  58. package/dist/pets.cjs +138 -0
  59. package/dist/pets.d.cts +127 -0
  60. package/dist/pets.d.ts +127 -0
  61. package/dist/pets.js +1 -0
  62. package/dist/sponsorship-view.d.cts +2 -2
  63. package/dist/sponsorship-view.d.ts +2 -2
  64. package/dist/sponsorship-view.js +2 -62
  65. package/dist/story-review.d.cts +6 -6
  66. package/dist/story-review.d.ts +6 -6
  67. package/dist/theme-toggle.d.cts +2 -2
  68. package/dist/theme-toggle.d.ts +2 -2
  69. package/dist/verified-card.d.cts +3 -3
  70. package/dist/verified-card.d.ts +3 -3
  71. package/package.json +40 -3
  72. package/pets.css +538 -0
@@ -0,0 +1,444 @@
1
+ import { SponsorAcknowledgment } from './chunk-4JRWZXAP.js';
2
+ import { PET_SAFETY, safePetLink, adoptionAvailability } from './chunk-MBBPEFDA.js';
3
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
4
+
5
+ function PawMark({ size = 36 }) {
6
+ return /* @__PURE__ */ jsxs(
7
+ "svg",
8
+ {
9
+ width: size,
10
+ height: size,
11
+ viewBox: "0 0 48 48",
12
+ fill: "currentColor",
13
+ "aria-hidden": "true",
14
+ children: [
15
+ /* @__PURE__ */ jsx(
16
+ "ellipse",
17
+ {
18
+ cx: "10",
19
+ cy: "19",
20
+ rx: "5.1",
21
+ ry: "6.5",
22
+ transform: "rotate(-25 10 19)"
23
+ }
24
+ ),
25
+ /* @__PURE__ */ jsx("ellipse", { cx: "20", cy: "10", rx: "5", ry: "6.5", transform: "rotate(-8 20 10)" }),
26
+ /* @__PURE__ */ jsx("ellipse", { cx: "32", cy: "12", rx: "5", ry: "6.5", transform: "rotate(14 32 12)" }),
27
+ /* @__PURE__ */ jsx("ellipse", { cx: "40", cy: "23", rx: "4.7", ry: "6.2", transform: "rotate(30 40 23)" }),
28
+ /* @__PURE__ */ jsx("path", { d: "M11 35c0-5 7-16 13-16s14 11 14 16c0 6-6 9-11 6-2-1-4-1-6 0-5 3-10 0-10-6Z" })
29
+ ]
30
+ }
31
+ );
32
+ }
33
+ function Photo({
34
+ resource,
35
+ mediaUrl,
36
+ large = false
37
+ }) {
38
+ const photo = resource.media.find((m) => m.status === "PUBLISHED");
39
+ const src = photo && safePetLink(mediaUrl(resource.id, photo.id));
40
+ if (!src)
41
+ return /* @__PURE__ */ jsxs("div", { className: "paw-photo-empty", children: [
42
+ /* @__PURE__ */ jsx(PawMark, { size: 64 }),
43
+ /* @__PURE__ */ jsx("span", { children: "A story from your community" })
44
+ ] });
45
+ const separator = src.includes("?") ? "&" : "?";
46
+ return /* @__PURE__ */ jsxs("figure", { className: "paw-photo", children: [
47
+ /* @__PURE__ */ jsxs("picture", { children: [
48
+ /* @__PURE__ */ jsx(
49
+ "source",
50
+ {
51
+ type: "image/webp",
52
+ srcSet: `${src}${separator}width=640&format=webp 640w, ${src}${separator}width=1280&format=webp 1280w`,
53
+ sizes: large ? "(max-width: 700px) 100vw, 65vw" : "(max-width: 700px) 100vw, 33vw"
54
+ }
55
+ ),
56
+ /* @__PURE__ */ jsx(
57
+ "img",
58
+ {
59
+ src: `${src}${separator}width=1280&format=jpeg`,
60
+ srcSet: `${src}${separator}width=640&format=jpeg 640w, ${src}${separator}width=1280&format=jpeg 1280w`,
61
+ sizes: large ? "(max-width: 700px) 100vw, 65vw" : "(max-width: 700px) 100vw, 33vw",
62
+ alt: photo.caption || resource.content.name,
63
+ width: large ? 1200 : 640,
64
+ height: large ? 900 : 480,
65
+ loading: large ? "eager" : "lazy"
66
+ }
67
+ )
68
+ ] }),
69
+ photo.attribution && /* @__PURE__ */ jsxs("figcaption", { children: [
70
+ "Photograph: ",
71
+ photo.attribution
72
+ ] })
73
+ ] });
74
+ }
75
+ function ResourceCard(props) {
76
+ const href = safePetLink(props.href);
77
+ return /* @__PURE__ */ jsxs("article", { className: `paw-resource${props.memorial ? " paw-memorial" : ""}`, children: [
78
+ /* @__PURE__ */ jsx(Photo, { ...props }),
79
+ /* @__PURE__ */ jsxs("div", { className: "paw-resource-copy", children: [
80
+ /* @__PURE__ */ jsxs("p", { className: "paw-context", children: [
81
+ props.label,
82
+ " \xB7 ",
83
+ props.community
84
+ ] }),
85
+ /* @__PURE__ */ jsx("h3", { children: href ? /* @__PURE__ */ jsx("a", { href, children: props.resource.content.name }) : props.resource.content.name }),
86
+ /* @__PURE__ */ jsx("p", { children: props.resource.content.story }),
87
+ props.resource.content.attribution && /* @__PURE__ */ jsxs("p", { className: "paw-credit", children: [
88
+ "Shared by ",
89
+ props.resource.content.attribution
90
+ ] })
91
+ ] })
92
+ ] });
93
+ }
94
+ function PetProfileCard(props) {
95
+ return /* @__PURE__ */ jsx(ResourceCard, { ...props, label: "Meet a neighbor" });
96
+ }
97
+ function PetCelebrationCard(props) {
98
+ return /* @__PURE__ */ jsx(
99
+ ResourceCard,
100
+ {
101
+ ...props,
102
+ memorial: props.resource.content.category === "memorial",
103
+ label: props.resource.content.category === "memorial" ? "In loving memory" : "A little joy worth sharing"
104
+ }
105
+ );
106
+ }
107
+ function LostPetNotice(props) {
108
+ return /* @__PURE__ */ jsxs("div", { className: "paw-notice", children: [
109
+ /* @__PURE__ */ jsx(
110
+ ResourceCard,
111
+ {
112
+ ...props,
113
+ label: props.resource.reunited_at ? "Reported reunited" : props.resource.kind === "found" ? "Found pet" : "Lost pet"
114
+ }
115
+ ),
116
+ /* @__PURE__ */ jsx("p", { className: "paw-safety", children: PET_SAFETY.recovery })
117
+ ] });
118
+ }
119
+ function AdoptionListingCard(props) {
120
+ const source = props.resource.content.source;
121
+ const url = source && safePetLink(source.official_url);
122
+ return /* @__PURE__ */ jsxs("div", { children: [
123
+ /* @__PURE__ */ jsx(ResourceCard, { ...props, label: "Adoption discovery" }),
124
+ source && /* @__PURE__ */ jsxs("p", { className: "paw-source", children: [
125
+ adoptionAvailability(source) === "confirmed" ? "Availability recently confirmed." : "Check current availability with the organization.",
126
+ " ",
127
+ url && /* @__PURE__ */ jsxs("a", { href: url, rel: "noopener noreferrer", children: [
128
+ "Visit ",
129
+ source.organization
130
+ ] }),
131
+ source.verified_at && /* @__PURE__ */ jsxs("small", { children: [
132
+ "Source checked",
133
+ " ",
134
+ new Date(source.verified_at).toLocaleDateString("en-US", {
135
+ timeZone: "America/Los_Angeles"
136
+ })
137
+ ] })
138
+ ] })
139
+ ] });
140
+ }
141
+ function PetEventCard(props) {
142
+ const event = props.resource.content.event, source = props.resource.content.source;
143
+ return /* @__PURE__ */ jsxs("div", { children: [
144
+ /* @__PURE__ */ jsx(ResourceCard, { ...props, label: "Pet community event" }),
145
+ event && /* @__PURE__ */ jsxs("p", { className: "paw-source", children: [
146
+ /* @__PURE__ */ jsx("time", { dateTime: event.starts_at, children: new Date(event.starts_at).toLocaleString("en-US", {
147
+ timeZone: "America/Los_Angeles",
148
+ dateStyle: "medium",
149
+ timeStyle: "short"
150
+ }) }),
151
+ " ",
152
+ "\xB7 Pacific time",
153
+ /* @__PURE__ */ jsx("br", {}),
154
+ event.cost_verified && event.cost === "free" ? "Verified free event" : event.cost_verified && event.cost === "paid" ? "Paid event \u2014 check official pricing" : "Check the official organization for cost"
155
+ ] }),
156
+ source && /* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsxs("a", { href: safePetLink(source.official_url), rel: "noopener noreferrer", children: [
157
+ "Official details from ",
158
+ source.organization
159
+ ] }) })
160
+ ] });
161
+ }
162
+ function PawOfTheWeekCard(props) {
163
+ const href = safePetLink(props.href);
164
+ return /* @__PURE__ */ jsxs("article", { className: "paw-spotlight", children: [
165
+ /* @__PURE__ */ jsx(Photo, { ...props, large: true }),
166
+ /* @__PURE__ */ jsxs("div", { className: "paw-spotlight-copy", children: [
167
+ /* @__PURE__ */ jsxs("p", { className: "paw-context", children: [
168
+ props.community,
169
+ "\u2019s Paw of the Week"
170
+ ] }),
171
+ /* @__PURE__ */ jsxs("h2", { children: [
172
+ "Meet ",
173
+ props.resource.content.name,
174
+ "."
175
+ ] }),
176
+ /* @__PURE__ */ jsx("p", { children: props.resource.content.story }),
177
+ href && /* @__PURE__ */ jsx("a", { className: "paw-button", href, children: "Read the story" }),
178
+ /* @__PURE__ */ jsx("p", { className: "paw-credit", children: "Chosen by our editors. Always free to submit." })
179
+ ] })
180
+ ] });
181
+ }
182
+ function PetFriendlyPlaceCard({
183
+ name,
184
+ description,
185
+ href,
186
+ verified,
187
+ verifiedAt
188
+ }) {
189
+ const url = safePetLink(href);
190
+ return /* @__PURE__ */ jsxs("article", { className: "paw-place", children: [
191
+ /* @__PURE__ */ jsx("p", { className: "paw-context", children: verified ? "Verified directory information" : "Community suggestion \u2014 not verified" }),
192
+ /* @__PURE__ */ jsx("h3", { children: url ? /* @__PURE__ */ jsx("a", { href: url, children: name }) : name }),
193
+ /* @__PURE__ */ jsx("p", { children: description }),
194
+ verifiedAt && /* @__PURE__ */ jsxs("small", { children: [
195
+ "Last checked ",
196
+ verifiedAt
197
+ ] })
198
+ ] });
199
+ }
200
+ function SponsorAcknowledgment2({
201
+ acknowledgment,
202
+ now = Date.now()
203
+ }) {
204
+ const start = Date.parse(acknowledgment.starts_at), end = Date.parse(acknowledgment.ends_at);
205
+ if (!(start <= now && now < end)) return null;
206
+ return /* @__PURE__ */ jsxs("div", { className: "paw-sponsor", children: [
207
+ /* @__PURE__ */ jsx(
208
+ SponsorAcknowledgment,
209
+ {
210
+ creative: acknowledgment.creative,
211
+ acknowledgment,
212
+ label: "Sponsored"
213
+ }
214
+ ),
215
+ /* @__PURE__ */ jsx("small", { children: "Paid community sponsorship. Sponsorship does not influence editorial selections and is not an endorsement." })
216
+ ] });
217
+ }
218
+ function PetsSection({
219
+ name = "Bay Area Paw",
220
+ tagline = "Happier pets. Closer communities.",
221
+ community,
222
+ communities,
223
+ resources,
224
+ spotlight,
225
+ acknowledgments = [],
226
+ basePath = "/pets",
227
+ mediaUrl,
228
+ contributeUrl,
229
+ placesUrl,
230
+ walksUrl,
231
+ nextUrl,
232
+ unavailable,
233
+ regionLabel,
234
+ resourceBasePath,
235
+ browseBasePath = "/browse",
236
+ eventsUrl,
237
+ accountUrl
238
+ }) {
239
+ const location = community?.name || regionLabel || "the Bay Area";
240
+ const link = (id) => `${resourceBasePath || basePath}/${encodeURIComponent(id)}`;
241
+ const local = (id) => communities.find((c) => c.id === id)?.name || "Our community";
242
+ const communityQuery = community ? "?community=" + encodeURIComponent(community.slug) : "";
243
+ const photoBoard = resources.filter(
244
+ (r) => r.kind === "photo" || r.kind === "profile"
245
+ );
246
+ const celebrations = resources.filter((r) => r.kind === "celebration");
247
+ const notices = resources.filter((r) => ["lost", "found"].includes(r.kind));
248
+ const adoptions = resources.filter((r) => r.kind === "adoption");
249
+ return /* @__PURE__ */ jsxs("div", { className: "paw", children: [
250
+ /* @__PURE__ */ jsxs("header", { className: "paw-masthead", children: [
251
+ /* @__PURE__ */ jsxs("a", { href: basePath || "/", className: "paw-brand", children: [
252
+ /* @__PURE__ */ jsx(PawMark, {}),
253
+ /* @__PURE__ */ jsx("span", { children: name })
254
+ ] }),
255
+ /* @__PURE__ */ jsx("p", { children: tagline }),
256
+ accountUrl && /* @__PURE__ */ jsx("a", { href: safePetLink(accountUrl), children: "My pets" }),
257
+ contributeUrl && /* @__PURE__ */ jsx("a", { className: "paw-button", href: safePetLink(contributeUrl), children: "Share your pet" })
258
+ ] }),
259
+ /* @__PURE__ */ jsxs("nav", { className: "paw-nav", "aria-label": "Pet community", children: [
260
+ /* @__PURE__ */ jsx("a", { href: "#neighbors", children: "Our pets" }),
261
+ /* @__PURE__ */ jsx("a", { href: "#lost-found", children: "Lost & found" }),
262
+ walksUrl && /* @__PURE__ */ jsx("a", { href: safePetLink(walksUrl), children: "Paw Walks" }),
263
+ placesUrl && /* @__PURE__ */ jsx("a", { href: safePetLink(placesUrl), children: "Paw Places" }),
264
+ /* @__PURE__ */ jsx("a", { href: "#adoption", children: "Adoption" }),
265
+ /* @__PURE__ */ jsx("a", { href: "#celebrations", children: "Celebrations" }),
266
+ eventsUrl && /* @__PURE__ */ jsx("a", { href: safePetLink(eventsUrl), children: "Events" })
267
+ ] }),
268
+ /* @__PURE__ */ jsxs("div", { className: "paw-community", children: [
269
+ /* @__PURE__ */ jsxs("p", { children: [
270
+ "A little closer to ",
271
+ location,
272
+ "."
273
+ ] }),
274
+ /* @__PURE__ */ jsxs("form", { action: basePath || "/", method: "get", children: [
275
+ /* @__PURE__ */ jsx("label", { htmlFor: "paw-community", children: "Your community" }),
276
+ /* @__PURE__ */ jsxs(
277
+ "select",
278
+ {
279
+ id: "paw-community",
280
+ name: "community",
281
+ defaultValue: community?.slug || "",
282
+ children: [
283
+ /* @__PURE__ */ jsx("option", { value: "", children: "All communities" }),
284
+ communities.map((c) => /* @__PURE__ */ jsx("option", { value: c.slug, children: c.name }, c.id))
285
+ ]
286
+ }
287
+ ),
288
+ /* @__PURE__ */ jsx("button", { type: "submit", children: "Explore" })
289
+ ] })
290
+ ] }),
291
+ unavailable ? /* @__PURE__ */ jsxs("div", { role: "status", className: "paw-empty", children: [
292
+ /* @__PURE__ */ jsx("h1", { children: "Your community is on its way." }),
293
+ /* @__PURE__ */ jsx("p", { children: "We can\u2019t load the pet community right now. Please try again shortly." })
294
+ ] }) : spotlight ? /* @__PURE__ */ jsx(
295
+ PawOfTheWeekCard,
296
+ {
297
+ resource: spotlight,
298
+ community: local(spotlight.area_id),
299
+ href: link(spotlight.id),
300
+ mediaUrl
301
+ }
302
+ ) : /* @__PURE__ */ jsxs("section", { className: "paw-welcome", children: [
303
+ /* @__PURE__ */ jsxs("div", { children: [
304
+ /* @__PURE__ */ jsxs("h1", { children: [
305
+ "Every pet has a story.",
306
+ /* @__PURE__ */ jsx("br", {}),
307
+ "Let\u2019s meet yours."
308
+ ] }),
309
+ /* @__PURE__ */ jsx("p", { children: "A place for familiar faces, happy reunions and the everyday joy of life with pets." }),
310
+ contributeUrl && /* @__PURE__ */ jsx("a", { className: "paw-button", href: safePetLink(contributeUrl), children: "Submit for Paw of the Week" }),
311
+ /* @__PURE__ */ jsx("small", { children: "Free to enter. Thoughtfully selected by local editors." })
312
+ ] }),
313
+ /* @__PURE__ */ jsxs("div", { className: "paw-emblem", children: [
314
+ /* @__PURE__ */ jsx(PawMark, { size: 180 }),
315
+ /* @__PURE__ */ jsxs("span", { children: [
316
+ "Good neighbors.",
317
+ /* @__PURE__ */ jsx("br", {}),
318
+ "Great companions."
319
+ ] })
320
+ ] })
321
+ ] }),
322
+ !unavailable && /* @__PURE__ */ jsxs(Fragment, { children: [
323
+ /* @__PURE__ */ jsxs("section", { id: "neighbors", className: "paw-section", children: [
324
+ /* @__PURE__ */ jsxs("div", { className: "paw-section-heading", children: [
325
+ /* @__PURE__ */ jsx("h2", { children: "Friends around the corner" }),
326
+ /* @__PURE__ */ jsx("p", { children: "Small moments. Very good company." })
327
+ ] }),
328
+ photoBoard.length ? /* @__PURE__ */ jsx("div", { className: "paw-gallery", children: photoBoard.map((r) => /* @__PURE__ */ jsx(
329
+ PetProfileCard,
330
+ {
331
+ resource: r,
332
+ community: local(r.area_id),
333
+ href: link(r.id),
334
+ mediaUrl
335
+ },
336
+ r.id
337
+ )) }) : /* @__PURE__ */ jsx("p", { className: "paw-empty", children: "The photo board is ready for its first neighbors. Share a photograph and a few words about your pet." }),
338
+ /* @__PURE__ */ jsx(
339
+ "a",
340
+ {
341
+ href: safePetLink(browseBasePath + "/neighbors" + communityQuery),
342
+ children: "Browse all community pets"
343
+ }
344
+ )
345
+ ] }),
346
+ /* @__PURE__ */ jsxs("section", { id: "lost-found", className: "paw-section paw-recovery", children: [
347
+ /* @__PURE__ */ jsxs("div", { className: "paw-section-heading", children: [
348
+ /* @__PURE__ */ jsx("h2", { children: "Let\u2019s help them get home." }),
349
+ /* @__PURE__ */ jsx("p", { children: "Lost & found is always free." })
350
+ ] }),
351
+ notices.length ? /* @__PURE__ */ jsx("div", { className: "paw-gallery", children: notices.map((r) => /* @__PURE__ */ jsx(
352
+ LostPetNotice,
353
+ {
354
+ resource: r,
355
+ community: local(r.area_id),
356
+ href: link(r.id),
357
+ mediaUrl
358
+ },
359
+ r.id
360
+ )) }) : /* @__PURE__ */ jsx("p", { children: "No current, reviewed notices in this community." }),
361
+ /* @__PURE__ */ jsx("p", { className: "paw-safety", children: PET_SAFETY.recovery }),
362
+ /* @__PURE__ */ jsx(
363
+ "a",
364
+ {
365
+ href: safePetLink(
366
+ browseBasePath + "/lost_found" + communityQuery
367
+ ),
368
+ children: "Open the lost & found board"
369
+ }
370
+ )
371
+ ] }),
372
+ /* @__PURE__ */ jsxs("section", { id: "celebrations", className: "paw-section", children: [
373
+ /* @__PURE__ */ jsxs("div", { className: "paw-section-heading", children: [
374
+ /* @__PURE__ */ jsx("h2", { children: "A life full of little milestones" }),
375
+ /* @__PURE__ */ jsx("p", { children: "Birthdays, adoption days, new beginnings and fond memories." })
376
+ ] }),
377
+ celebrations.length ? /* @__PURE__ */ jsx("div", { className: "paw-gallery", children: celebrations.map((r) => /* @__PURE__ */ jsx(
378
+ PetCelebrationCard,
379
+ {
380
+ resource: r,
381
+ community: local(r.area_id),
382
+ href: link(r.id),
383
+ mediaUrl
384
+ },
385
+ r.id
386
+ )) }) : /* @__PURE__ */ jsx("p", { className: "paw-empty", children: "Celebrate someone who makes your days brighter. Every story is reviewed with care." }),
387
+ /* @__PURE__ */ jsx(
388
+ "a",
389
+ {
390
+ href: safePetLink(
391
+ browseBasePath + "/celebration" + communityQuery
392
+ ),
393
+ children: "More pet celebrations"
394
+ }
395
+ )
396
+ ] }),
397
+ /* @__PURE__ */ jsxs("section", { id: "adoption", className: "paw-section", children: [
398
+ /* @__PURE__ */ jsxs("div", { className: "paw-section-heading", children: [
399
+ /* @__PURE__ */ jsx("h2", { children: "A new chapter starts with hello." }),
400
+ /* @__PURE__ */ jsx("p", { children: "Discover animals through local shelters and rescue organizations." })
401
+ ] }),
402
+ adoptions.length ? /* @__PURE__ */ jsx("div", { className: "paw-gallery", children: adoptions.map((r) => /* @__PURE__ */ jsx(
403
+ AdoptionListingCard,
404
+ {
405
+ resource: r,
406
+ community: local(r.area_id),
407
+ href: link(r.id),
408
+ mediaUrl
409
+ },
410
+ r.id
411
+ )) }) : /* @__PURE__ */ jsx("p", { className: "paw-empty", children: "Our editors are gathering official shelter and rescue listings. Check directly with your local organization for current availability." }),
412
+ /* @__PURE__ */ jsx("p", { className: "paw-safety", children: PET_SAFETY.adoption }),
413
+ /* @__PURE__ */ jsx(
414
+ "a",
415
+ {
416
+ href: safePetLink(browseBasePath + "/adoption" + communityQuery),
417
+ children: "Explore adoption listings"
418
+ }
419
+ )
420
+ ] }),
421
+ nextUrl && /* @__PURE__ */ jsx("a", { className: "paw-button", href: safePetLink(nextUrl), children: "More community pets" })
422
+ ] }),
423
+ acknowledgments.length > 0 && /* @__PURE__ */ jsxs("section", { "aria-label": "Community support", children: [
424
+ /* @__PURE__ */ jsx("p", { children: "Bay Area Paw is made possible with support from our community partners." }),
425
+ acknowledgments.map((item) => /* @__PURE__ */ jsx(
426
+ SponsorAcknowledgment2,
427
+ {
428
+ acknowledgment: item
429
+ },
430
+ item.campaign_id + item.placement_id
431
+ ))
432
+ ] }),
433
+ /* @__PURE__ */ jsxs("footer", { className: "paw-footer", children: [
434
+ /* @__PURE__ */ jsx(PawMark, { size: 24 }),
435
+ /* @__PURE__ */ jsxs("p", { children: [
436
+ "A community project from Bay Area News Network.",
437
+ /* @__PURE__ */ jsx("br", {}),
438
+ tagline
439
+ ] })
440
+ ] })
441
+ ] });
442
+ }
443
+
444
+ export { AdoptionListingCard, LostPetNotice, PawMark, PawOfTheWeekCard, PetCelebrationCard, PetEventCard, PetFriendlyPlaceCard, PetProfileCard, PetsSection, SponsorAcknowledgment2 as SponsorAcknowledgment };