@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scalemule/news-publication",
3
- "version": "0.0.48",
3
+ "version": "0.0.49",
4
4
  "description": "Shared server framework for ScaleMule local news publications. Walnut Creek Times is the broadsheet default; each paper supplies its own identity and feature flags.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -102,7 +102,43 @@
102
102
  "import": "./dist/sponsorship-view.js",
103
103
  "require": "./dist/sponsorship-view.cjs"
104
104
  },
105
- "./sponsorship.css": "./sponsorship.css"
105
+ "./sponsorship.css": "./sponsorship.css",
106
+ "./pets": {
107
+ "types": "./dist/pets.d.ts",
108
+ "import": "./dist/pets.js",
109
+ "require": "./dist/pets.cjs"
110
+ },
111
+ "./pets-view": {
112
+ "types": "./dist/pets-view.d.ts",
113
+ "import": "./dist/pets-view.js",
114
+ "require": "./dist/pets-view.cjs"
115
+ },
116
+ "./pets-forms": {
117
+ "types": "./dist/pets-forms.d.ts",
118
+ "import": "./dist/pets-forms.js",
119
+ "require": "./dist/pets-forms.cjs"
120
+ },
121
+ "./pets-server": {
122
+ "types": "./dist/pets-server.d.ts",
123
+ "import": "./dist/pets-server.js",
124
+ "require": "./dist/pets-server.cjs"
125
+ },
126
+ "./pets-auth-server": {
127
+ "types": "./dist/pets-auth-server.d.ts",
128
+ "import": "./dist/pets-auth-server.js",
129
+ "require": "./dist/pets-auth-server.cjs"
130
+ },
131
+ "./pets.css": "./pets.css",
132
+ "./pets-interactions": {
133
+ "types": "./dist/pets-interactions.d.ts",
134
+ "import": "./dist/pets-interactions.js",
135
+ "require": "./dist/pets-interactions.cjs"
136
+ },
137
+ "./pets-publication": {
138
+ "types": "./dist/pets-publication.d.ts",
139
+ "import": "./dist/pets-publication.js",
140
+ "require": "./dist/pets-publication.cjs"
141
+ }
106
142
  },
107
143
  "files": [
108
144
  "dist",
@@ -113,7 +149,8 @@
113
149
  "README.md",
114
150
  "LICENSE",
115
151
  "story-review.css",
116
- "sponsorship.css"
152
+ "sponsorship.css",
153
+ "pets.css"
117
154
  ],
118
155
  "peerDependencies": {
119
156
  "@scalemule/react": "0.0.21",
package/pets.css ADDED
@@ -0,0 +1,538 @@
1
+ .paw {
2
+ --paw-bg: #f7faf9;
3
+ --paw-ink: #18343c;
4
+ --paw-muted: #4b6268;
5
+ --paw-blue: #123c4a;
6
+ --paw-green: #dcebe1;
7
+ --paw-leaf: #356b4d;
8
+ --paw-line: #c5d6d4;
9
+ --paw-sun: #f2cf66;
10
+ color: var(--paw-ink);
11
+ background: var(--paw-bg);
12
+ font-family: "Avenir Next", Avenir, "Segoe UI", sans-serif;
13
+ font-size: 17px;
14
+ line-height: 1.65;
15
+ max-width: 1240px;
16
+ margin: auto;
17
+ padding: 0 clamp(20px, 5vw, 64px);
18
+ }
19
+ .paw * {
20
+ box-sizing: border-box;
21
+ }
22
+ .paw a {
23
+ color: inherit;
24
+ text-underline-offset: 4px;
25
+ }
26
+ .paw a:hover {
27
+ text-decoration-thickness: 2px;
28
+ }
29
+ .paw :focus-visible {
30
+ outline: 3px solid var(--paw-leaf);
31
+ outline-offset: 5px;
32
+ }
33
+ .paw h1,
34
+ .paw h2,
35
+ .paw h3 {
36
+ font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
37
+ font-weight: 500;
38
+ line-height: 1.08;
39
+ letter-spacing: -0.035em;
40
+ text-wrap: balance;
41
+ }
42
+ .paw h1 {
43
+ font-size: clamp(42px, 6.2vw, 76px);
44
+ margin: 0 0 24px;
45
+ }
46
+ .paw h2 {
47
+ font-size: clamp(30px, 3.5vw, 46px);
48
+ margin: 0;
49
+ }
50
+ .paw h3 {
51
+ font-size: 28px;
52
+ margin: 10px 0;
53
+ }
54
+ .paw p {
55
+ max-width: 66ch;
56
+ }
57
+ .paw small {
58
+ display: block;
59
+ font-size: 13px;
60
+ }
61
+ .paw-masthead {
62
+ display: flex;
63
+ align-items: center;
64
+ gap: 24px;
65
+ padding: 28px 0;
66
+ }
67
+ .paw-brand {
68
+ display: flex;
69
+ align-items: center;
70
+ gap: 12px;
71
+ font-size: 26px;
72
+ font-weight: 750;
73
+ letter-spacing: -1px;
74
+ text-decoration: none;
75
+ white-space: nowrap;
76
+ }
77
+ .paw-masthead > p {
78
+ font-size: 13px;
79
+ color: var(--paw-muted);
80
+ flex: 1;
81
+ }
82
+ .paw .paw-button,
83
+ .paw button {
84
+ display: inline-flex;
85
+ align-items: center;
86
+ justify-content: center;
87
+ min-height: 46px;
88
+ background: var(--paw-blue);
89
+ color: var(--paw-bg);
90
+ border: 1px solid transparent;
91
+ padding: 10px 22px;
92
+ border-radius: 100px;
93
+ font:
94
+ 600 14px/1.3 "Avenir Next",
95
+ Avenir,
96
+ "Segoe UI",
97
+ sans-serif;
98
+ text-decoration: none;
99
+ cursor: pointer;
100
+ }
101
+ .paw button:disabled {
102
+ opacity: 0.55;
103
+ cursor: wait;
104
+ }
105
+ .paw-nav {
106
+ display: flex;
107
+ gap: clamp(16px, 3vw, 38px);
108
+ border-block: 1px solid var(--paw-line);
109
+ padding: 14px 0;
110
+ overflow: auto;
111
+ white-space: nowrap;
112
+ font-size: 14px;
113
+ }
114
+ .paw-nav a {
115
+ text-decoration: none;
116
+ }
117
+ .paw-community {
118
+ display: flex;
119
+ align-items: center;
120
+ justify-content: space-between;
121
+ gap: 16px;
122
+ margin: 22px 0 30px;
123
+ font-size: 14px;
124
+ }
125
+ .paw-community > p {
126
+ color: var(--paw-muted);
127
+ }
128
+ .paw-community form {
129
+ display: flex;
130
+ align-items: center;
131
+ gap: 10px;
132
+ }
133
+ .paw select,
134
+ .paw input,
135
+ .paw textarea {
136
+ font: inherit;
137
+ color: var(--paw-ink);
138
+ background: var(--paw-bg);
139
+ border: 1px solid var(--paw-line);
140
+ border-radius: 8px;
141
+ padding: 10px;
142
+ min-height: 44px;
143
+ max-width: 100%;
144
+ }
145
+ .paw-community label {
146
+ font-size: 12px;
147
+ }
148
+ .paw-community select {
149
+ max-width: 190px;
150
+ }
151
+ .paw-community button {
152
+ padding: 8px 15px;
153
+ min-height: 44px;
154
+ }
155
+ .paw-welcome {
156
+ display: grid;
157
+ grid-template-columns: 1.4fr 1fr;
158
+ gap: 30px;
159
+ align-items: center;
160
+ padding: 38px 0 64px;
161
+ }
162
+ .paw-welcome p {
163
+ font-size: 20px;
164
+ color: var(--paw-muted);
165
+ max-width: 40ch;
166
+ margin: 0 0 28px;
167
+ }
168
+ .paw-welcome small {
169
+ margin-top: 15px;
170
+ color: var(--paw-muted);
171
+ }
172
+ .paw-emblem {
173
+ background: var(--paw-green);
174
+ border-radius: 48% 48% 32% 38%;
175
+ aspect-ratio: 1;
176
+ display: flex;
177
+ flex-direction: column;
178
+ align-items: center;
179
+ justify-content: center;
180
+ gap: 20px;
181
+ max-width: 390px;
182
+ color: var(--paw-leaf);
183
+ transform: rotate(3deg);
184
+ }
185
+ .paw-emblem span {
186
+ text-align: center;
187
+ font-size: 19px;
188
+ line-height: 1.4;
189
+ }
190
+ .paw-spotlight {
191
+ display: grid;
192
+ grid-template-columns: 1.3fr 1fr;
193
+ gap: 42px;
194
+ align-items: center;
195
+ margin-bottom: 40px;
196
+ }
197
+ .paw-spotlight-copy h2 {
198
+ font-size: clamp(40px, 5vw, 66px);
199
+ margin: 14px 0 22px;
200
+ }
201
+ .paw-spotlight-copy > p:not(.paw-context):not(.paw-credit) {
202
+ font-size: 19px;
203
+ }
204
+ .paw-photo {
205
+ margin: 0;
206
+ }
207
+ .paw-photo img {
208
+ display: block;
209
+ width: 100%;
210
+ height: auto;
211
+ aspect-ratio: 4/3;
212
+ object-fit: cover;
213
+ border-radius: 16px;
214
+ }
215
+ .paw-photo figcaption {
216
+ font-size: 11px;
217
+ color: var(--paw-muted);
218
+ margin: 6px 0;
219
+ }
220
+ .paw-photo-empty {
221
+ aspect-ratio: 4/3;
222
+ background: var(--paw-green);
223
+ color: var(--paw-leaf);
224
+ display: flex;
225
+ align-items: center;
226
+ justify-content: center;
227
+ gap: 14px;
228
+ flex-direction: column;
229
+ border-radius: 16px;
230
+ font-size: 13px;
231
+ }
232
+ .paw-context,
233
+ .paw-credit,
234
+ .paw-safety {
235
+ font-size: 13px;
236
+ color: var(--paw-muted);
237
+ }
238
+ .paw-context {
239
+ margin: 16px 0 8px;
240
+ }
241
+ .paw-credit {
242
+ margin-top: 18px;
243
+ }
244
+ .paw-section {
245
+ padding: 48px 0;
246
+ border-top: 1px solid var(--paw-line);
247
+ scroll-margin-top: 20px;
248
+ }
249
+ .paw-section-heading {
250
+ display: flex;
251
+ align-items: baseline;
252
+ justify-content: space-between;
253
+ gap: 24px;
254
+ margin-bottom: 26px;
255
+ }
256
+ .paw-section-heading h2 {
257
+ max-width: 20ch;
258
+ }
259
+ .paw-section-heading p {
260
+ font-size: 14px;
261
+ color: var(--paw-muted);
262
+ max-width: 30ch;
263
+ }
264
+ .paw-gallery {
265
+ display: grid;
266
+ grid-template-columns: repeat(3, minmax(0, 1fr));
267
+ gap: 32px;
268
+ }
269
+ .paw-resource-copy > p:not(.paw-context):not(.paw-credit) {
270
+ font-size: 15px;
271
+ display: -webkit-box;
272
+ -webkit-line-clamp: 4;
273
+ -webkit-box-orient: vertical;
274
+ overflow: hidden;
275
+ }
276
+ .paw-resource h3 a {
277
+ text-decoration: none;
278
+ }
279
+ .paw-recovery {
280
+ background: var(--paw-green);
281
+ padding: 34px;
282
+ border-radius: 18px;
283
+ border: 0;
284
+ margin: 16px 0 48px;
285
+ }
286
+ .paw-empty {
287
+ padding: 20px 0;
288
+ color: var(--paw-muted);
289
+ }
290
+ .paw-memorial {
291
+ --paw-green: #e5e7e8;
292
+ --paw-leaf: #48545b;
293
+ }
294
+ .paw-memorial .paw-photo img {
295
+ border-radius: 3px;
296
+ }
297
+ .paw-source {
298
+ font-size: 13px;
299
+ }
300
+ .paw-source a {
301
+ display: block;
302
+ }
303
+ .paw-sponsor {
304
+ padding: 20px 0;
305
+ border-block: 1px solid var(--paw-line);
306
+ font-size: 14px;
307
+ }
308
+ .paw-sponsor > p {
309
+ font-size: 11px;
310
+ color: var(--paw-muted);
311
+ }
312
+ .paw-footer {
313
+ display: flex;
314
+ align-items: center;
315
+ gap: 15px;
316
+ border-top: 1px solid var(--paw-line);
317
+ margin-top: 45px;
318
+ padding: 26px 0;
319
+ font-size: 12px;
320
+ color: var(--paw-muted);
321
+ }
322
+ .paw-form {
323
+ max-width: 700px;
324
+ margin: 30px auto 60px;
325
+ }
326
+ .paw-form label {
327
+ display: grid;
328
+ gap: 6px;
329
+ margin: 18px 0;
330
+ }
331
+ .paw-form textarea {
332
+ min-height: 150px;
333
+ resize: vertical;
334
+ }
335
+ .paw-form fieldset {
336
+ border: 0;
337
+ padding: 0;
338
+ margin: 24px 0;
339
+ }
340
+ .paw-form legend {
341
+ font-family: Georgia, serif;
342
+ font-size: 28px;
343
+ }
344
+ .paw-form .paw-consent {
345
+ display: flex;
346
+ align-items: flex-start;
347
+ font-size: 14px;
348
+ }
349
+ .paw-consent input {
350
+ min-height: 24px;
351
+ }
352
+ .paw-error {
353
+ padding: 14px 18px;
354
+ background: #ffe6df;
355
+ color: #713223;
356
+ border-radius: 10px;
357
+ }
358
+ .paw-form-actions {
359
+ display: flex;
360
+ gap: 12px;
361
+ margin-top: 25px;
362
+ flex-wrap: wrap;
363
+ }
364
+ .paw-form progress {
365
+ width: 100%;
366
+ accent-color: var(--paw-leaf);
367
+ }
368
+ @media (prefers-color-scheme: dark) {
369
+ .paw {
370
+ --paw-bg: #132d34;
371
+ --paw-ink: #edf5f3;
372
+ --paw-muted: #b4cbc7;
373
+ --paw-blue: #d7e9e2;
374
+ --paw-green: #23483e;
375
+ --paw-leaf: #b5dabd;
376
+ --paw-line: #3d5a60;
377
+ }
378
+ .paw-memorial {
379
+ --paw-green: #344348;
380
+ --paw-leaf: #d6e0e2;
381
+ }
382
+ }
383
+ @media (max-width: 780px) {
384
+ .paw-masthead {
385
+ flex-wrap: wrap;
386
+ gap: 12px;
387
+ padding: 22px 0;
388
+ }
389
+ .paw-masthead > p {
390
+ display: none;
391
+ }
392
+ .paw-masthead > .paw-button {
393
+ margin-left: auto;
394
+ padding: 10px 14px;
395
+ }
396
+ .paw-brand {
397
+ font-size: 23px;
398
+ }
399
+ .paw-community {
400
+ align-items: flex-start;
401
+ flex-direction: column;
402
+ margin-bottom: 20px;
403
+ }
404
+ .paw-community > p {
405
+ margin: 0;
406
+ }
407
+ .paw-community form {
408
+ width: 100%;
409
+ }
410
+ .paw-community label {
411
+ flex: 1;
412
+ }
413
+ .paw-welcome {
414
+ grid-template-columns: 1fr;
415
+ padding: 20px 0 40px;
416
+ }
417
+ .paw-emblem {
418
+ display: none;
419
+ }
420
+ .paw-spotlight {
421
+ grid-template-columns: 1fr;
422
+ gap: 15px;
423
+ }
424
+ .paw-spotlight-copy h2 {
425
+ margin: 12px 0;
426
+ }
427
+ .paw-gallery {
428
+ grid-template-columns: repeat(2, minmax(0, 1fr));
429
+ gap: 22px;
430
+ }
431
+ .paw-section-heading {
432
+ display: block;
433
+ }
434
+ .paw-section-heading p {
435
+ max-width: none;
436
+ }
437
+ .paw-section {
438
+ padding: 30px 0;
439
+ }
440
+ .paw-recovery {
441
+ padding: 24px;
442
+ }
443
+ .paw h3 {
444
+ font-size: 25px;
445
+ }
446
+ }
447
+ @media (max-width: 480px) {
448
+ .paw-gallery {
449
+ grid-template-columns: 1fr;
450
+ }
451
+ .paw-community select {
452
+ max-width: 160px;
453
+ }
454
+ .paw-brand svg {
455
+ width: 28px;
456
+ }
457
+ .paw-masthead > .paw-button {
458
+ font-size: 12px;
459
+ }
460
+ .paw-recovery {
461
+ padding: 20px;
462
+ }
463
+ .paw-section-heading h2 {
464
+ max-width: none;
465
+ }
466
+ }
467
+ @media (prefers-reduced-motion: reduce) {
468
+ .paw * {
469
+ scroll-behavior: auto !important;
470
+ animation: none !important;
471
+ transition: none !important;
472
+ }
473
+ }
474
+
475
+ .paw-filters {
476
+ display: flex;
477
+ flex-wrap: wrap;
478
+ gap: 16px;
479
+ align-items: end;
480
+ margin: 28px 0 40px;
481
+ }
482
+ .paw-filters label {
483
+ display: grid;
484
+ gap: 6px;
485
+ flex: 1;
486
+ min-width: 150px;
487
+ font-size: 14px;
488
+ }
489
+ .paw-filters select,
490
+ .paw-filters input {
491
+ width: 100%;
492
+ }
493
+ .paw button:disabled {
494
+ opacity: 0.6;
495
+ cursor: wait;
496
+ }
497
+ .paw picture {
498
+ display: block;
499
+ }
500
+ .paw-nav {
501
+ overflow-x: auto;
502
+ scrollbar-width: thin;
503
+ }
504
+ .paw form {
505
+ min-width: 0;
506
+ }
507
+ .paw input,
508
+ .paw textarea,
509
+ .paw select {
510
+ max-width: 100%;
511
+ box-sizing: border-box;
512
+ }
513
+ .paw-sponsor .sm-sponsorship {
514
+ display: flex;
515
+ justify-content: space-between;
516
+ gap: 20px;
517
+ align-items: center;
518
+ }
519
+ .paw-sponsor .sm-sponsorship-logo {
520
+ max-width: 100px;
521
+ max-height: 64px;
522
+ object-fit: contain;
523
+ }
524
+ .paw-sponsor .sm-sponsorship-label {
525
+ font-size: 11px;
526
+ text-transform: uppercase;
527
+ letter-spacing: 0.1em;
528
+ }
529
+ .paw-sponsor .sm-sponsorship-name {
530
+ font-weight: 700;
531
+ }
532
+ .paw-sponsor .sm-sponsorship-sr {
533
+ position: absolute;
534
+ width: 1px;
535
+ height: 1px;
536
+ overflow: hidden;
537
+ clip-path: inset(50%);
538
+ }