@scalemule/news-publication 0.0.42 → 0.0.44
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/dist/article-blocks-DsabIDmH.d.cts +91 -0
- package/dist/article-blocks-DsabIDmH.d.ts +91 -0
- package/dist/{chunk-DC6RMIYL.js → chunk-2IYKWGVM.js} +1 -1
- package/dist/{chunk-C7JTEHTH.js → chunk-57YVL6BD.js} +1 -1
- package/dist/{chunk-XDGBMMLD.js → chunk-72PKW2HM.js} +1 -1
- package/dist/{chunk-VRDUSIVG.js → chunk-GVLJ3HAI.js} +4 -2
- package/dist/{chunk-EVAGI7C5.js → chunk-OIEO2YVG.js} +1 -1
- package/dist/chunk-OISLCYER.js +235 -0
- package/dist/chunk-UTBV6JJX.js +387 -0
- package/dist/cookie-consent-banner.cjs +38 -16
- package/dist/cookie-consent-banner.js +2 -2
- package/dist/cookie-settings-view.cjs +38 -16
- package/dist/cookie-settings-view.js +2 -2
- package/dist/index.cjs +382 -21
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +11 -9
- package/dist/network-bar.cjs +38 -16
- package/dist/network-bar.js +2 -2
- package/dist/network-copyright.cjs +43 -20
- package/dist/network-copyright.js +2 -2
- package/dist/network.cjs +138 -18
- package/dist/network.d.cts +20 -1
- package/dist/network.d.ts +20 -1
- package/dist/network.js +1 -1
- package/dist/snapshot-file.cjs +1 -1
- package/dist/snapshot-file.js +1 -1
- package/dist/story-review.cjs +890 -537
- package/dist/story-review.d.cts +11 -2
- package/dist/story-review.d.ts +11 -2
- package/dist/story-review.js +703 -537
- package/package.json +4 -4
- package/story-review.css +174 -0
- package/dist/chunk-56TU57OO.js +0 -268
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
import { recordConsentToCompliance as recordConsentToCompliance$1, getCookieConsent, decorateNetworkUrl } from '@scalemule/compliance';
|
|
2
|
+
export { COOKIE_CONSENT_BACKUP_KEY, COOKIE_CONSENT_EVENT, COOKIE_CONSENT_KEY, COOKIE_CONSENT_MAX_AGE_SECONDS, DEFAULT_CONSENT_HUB_URL, DEFAULT_PREFERENCES_ACCEPTED, DEFAULT_PREFERENCES_REJECTED, EU_EEA_UK_COUNTRIES, NETWORK_CONSENT_STORAGE_KEY, acceptAllCookies, checkUrlConsentBridge, clearCookieConsent, decorateNetworkUrl, getCookieConsent, hasConsented, isCategoryAllowed, isGeoConsentRequired, queryNetworkConsentHub, rejectOptionalCookies, setCookieConsent, setNetworkConsentHub } from '@scalemule/compliance';
|
|
3
|
+
|
|
4
|
+
// src/cookies.ts
|
|
5
|
+
async function recordConsentToCompliance(record, options) {
|
|
6
|
+
return recordConsentToCompliance$1(record, options);
|
|
7
|
+
}
|
|
8
|
+
var delegationInstalled = false;
|
|
9
|
+
function setupNetworkConsentDelegation() {
|
|
10
|
+
if (typeof window === "undefined" || delegationInstalled) return;
|
|
11
|
+
delegationInstalled = true;
|
|
12
|
+
document.addEventListener(
|
|
13
|
+
"click",
|
|
14
|
+
(e) => {
|
|
15
|
+
const target = e.target;
|
|
16
|
+
const anchor = target?.closest("a");
|
|
17
|
+
if (!anchor || !anchor.href) return;
|
|
18
|
+
try {
|
|
19
|
+
const url = new URL(anchor.href, window.location.href);
|
|
20
|
+
if (url.protocol !== "http:" && url.protocol !== "https:") return;
|
|
21
|
+
if (isNetworkHostname(url.hostname)) {
|
|
22
|
+
const consent = getCookieConsent();
|
|
23
|
+
if (consent) {
|
|
24
|
+
const decorated = decorateNetworkUrl(anchor.href);
|
|
25
|
+
if (decorated !== anchor.href) {
|
|
26
|
+
anchor.href = decorated;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
} catch {
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
{ capture: true }
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
var COOKIE_CATEGORIES = [
|
|
37
|
+
{
|
|
38
|
+
id: "essential",
|
|
39
|
+
title: "Strictly Necessary Cookies",
|
|
40
|
+
shortDescription: "Essential for site security, navigation, and privacy preference management.",
|
|
41
|
+
fullDescription: "These cookies are necessary for the website to function properly and securely. They enable core features such as load balancing, CSRF protection, secure session tokens, and remembering your cookie consent choice. Because the site cannot function without them, they cannot be turned off.",
|
|
42
|
+
required: true,
|
|
43
|
+
cookies: [
|
|
44
|
+
{
|
|
45
|
+
name: "sm_cookie_consent_v1",
|
|
46
|
+
provider: "First-Party (ScaleMule)",
|
|
47
|
+
purpose: "Stores your verified cookie privacy and category consent choices.",
|
|
48
|
+
duration: "1 year",
|
|
49
|
+
type: "HTTP Cookie"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: "napsite_session_v1",
|
|
53
|
+
provider: "First-Party",
|
|
54
|
+
purpose: "Maintains session continuity, security tokens, and server routing.",
|
|
55
|
+
duration: "30 minutes (idle)",
|
|
56
|
+
type: "Session Storage"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "napsite_preview",
|
|
60
|
+
provider: "First-Party",
|
|
61
|
+
purpose: "Verifies preview access permissions when viewing unpublished newsroom editions.",
|
|
62
|
+
duration: "14 days",
|
|
63
|
+
type: "HTTP Cookie"
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: "performance",
|
|
69
|
+
title: "Performance & Analytics Cookies",
|
|
70
|
+
shortDescription: "Help us measure reader engagement, story completion, and site reliability.",
|
|
71
|
+
fullDescription: "These cookies collect anonymous information about how visitors navigate our news publication. They allow us to count article reads, understand scroll depth and reading completion, and identify broken links or slow-loading assets so we can keep our community reporting responsive and fast. All metrics are aggregated and never contain personal information.",
|
|
72
|
+
required: false,
|
|
73
|
+
cookies: [
|
|
74
|
+
{
|
|
75
|
+
name: "napsite_visitor_v1",
|
|
76
|
+
provider: "First-Party",
|
|
77
|
+
purpose: "A randomized anonymous UUIDv7 to count distinct readers without tracking personal identity.",
|
|
78
|
+
duration: "1 year",
|
|
79
|
+
type: "Local Storage"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: "napsite_analytics_v1",
|
|
83
|
+
provider: "First-Party",
|
|
84
|
+
purpose: "Connects reading completion and web vitals to the anonymous session.",
|
|
85
|
+
duration: "30 minutes",
|
|
86
|
+
type: "HTTP Cookie"
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: "functional",
|
|
92
|
+
title: "Functional & Personalization Cookies",
|
|
93
|
+
shortDescription: "Remember your reading preferences, text size, and narration audio settings.",
|
|
94
|
+
fullDescription: "These cookies enable enhanced convenience features designed for readers. They remember your custom text sizing, keep your preferred audio narration playback speed (e.g., 1.0x vs 1.25x), and preserve your local town filters across the front page so you always see news closest to your neighborhood.",
|
|
95
|
+
required: false,
|
|
96
|
+
cookies: [
|
|
97
|
+
{
|
|
98
|
+
name: "reader_text_size",
|
|
99
|
+
provider: "First-Party",
|
|
100
|
+
purpose: "Remembers your preferred reading font size across articles.",
|
|
101
|
+
duration: "1 year",
|
|
102
|
+
type: "Local Storage"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: "news_publication_theme",
|
|
106
|
+
provider: "First-Party",
|
|
107
|
+
purpose: "Remembers your reading theme preference (light, dark, or system).",
|
|
108
|
+
duration: "1 year",
|
|
109
|
+
type: "HTTP Cookie"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
name: "audio_narration_speed",
|
|
113
|
+
provider: "First-Party",
|
|
114
|
+
purpose: "Stores your preferred audio player playback rate (e.g. 1.0x, 1.25x).",
|
|
115
|
+
duration: "1 year",
|
|
116
|
+
type: "Local Storage"
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
id: "advertising",
|
|
122
|
+
title: "Advertising & Local Sponsorship Cookies",
|
|
123
|
+
shortDescription: "Support local business sponsors by capping repetition and measuring notices.",
|
|
124
|
+
fullDescription: "Our journalism is supported by local business sponsors and community partners. These cookies ensure you do not see the same sponsor banner repeatedly (frequency capping) and help local merchants measure whether their announcement reached their community. They never track your activity across unrelated third-party websites or build external advertising profiles.",
|
|
125
|
+
required: false,
|
|
126
|
+
cookies: [
|
|
127
|
+
{
|
|
128
|
+
name: "napsite_sponsor_cap",
|
|
129
|
+
provider: "First-Party",
|
|
130
|
+
purpose: "Prevents repetitive display of identical local business announcements.",
|
|
131
|
+
duration: "7 days",
|
|
132
|
+
type: "Local Storage"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
name: "local_sponsor_ref",
|
|
136
|
+
provider: "First-Party",
|
|
137
|
+
purpose: "Attributes community inquiries directly to the sponsoring local merchant.",
|
|
138
|
+
duration: "30 days",
|
|
139
|
+
type: "Local Storage"
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
];
|
|
144
|
+
|
|
145
|
+
// src/network.ts
|
|
146
|
+
var EDITORIAL_PRINCIPLES = [
|
|
147
|
+
{
|
|
148
|
+
id: "independent-trustworthy-journalism",
|
|
149
|
+
number: 1,
|
|
150
|
+
title: "Independent, Trustworthy Local Journalism",
|
|
151
|
+
summary: "Our first responsibility is to provide accurate, useful, and independent local information.",
|
|
152
|
+
guidelines: [
|
|
153
|
+
"Verify information before publication.",
|
|
154
|
+
"Attribute reporting to credible sources.",
|
|
155
|
+
"Clearly distinguish original reporting from aggregation.",
|
|
156
|
+
"Correct mistakes promptly and transparently.",
|
|
157
|
+
"Maintain editorial independence from advertisers, sponsors, political organizations, and public officials.",
|
|
158
|
+
"Avoid sensationalism, manufactured outrage, and misleading headlines.",
|
|
159
|
+
"Provide appropriate context rather than simply repeating announcements."
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
id: "people-communities-first",
|
|
164
|
+
number: 2,
|
|
165
|
+
title: "People and Communities First",
|
|
166
|
+
summary: "Local journalism should be about more than institutions, government meetings, and press releases. We tell stories about the people who make communities interesting.",
|
|
167
|
+
guidelines: [
|
|
168
|
+
"Spotlight local residents doing extraordinary things.",
|
|
169
|
+
"Highlight teachers, students, and educational achievements.",
|
|
170
|
+
"Feature volunteers and nonprofit organizations.",
|
|
171
|
+
"Cover neighborhood initiatives and community milestones.",
|
|
172
|
+
"Recognize local artists, musicians, and creators.",
|
|
173
|
+
"Support small businesses and entrepreneurs.",
|
|
174
|
+
"Preserve local history and living traditions."
|
|
175
|
+
]
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
id: "connection-belonging",
|
|
179
|
+
number: 3,
|
|
180
|
+
title: "Connection and Belonging",
|
|
181
|
+
summary: "Our publications help residents feel connected to their communities and cultivate a stronger sense of local belonging.",
|
|
182
|
+
guidelines: [
|
|
183
|
+
"Help residents discover what is happening around them.",
|
|
184
|
+
"Spotlight who is contributing to their neighborhoods.",
|
|
185
|
+
"Highlight which organizations are making a difference.",
|
|
186
|
+
"Show where residents can participate and engage.",
|
|
187
|
+
"Celebrate what makes each community distinctive.",
|
|
188
|
+
"Build useful community experiences rather than attention-maximizing feeds."
|
|
189
|
+
]
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
id: "constructive-participation",
|
|
193
|
+
number: 4,
|
|
194
|
+
title: "Constructive Community Participation",
|
|
195
|
+
summary: "Readers have structured, respectful, and purposeful opportunities to contribute to their communities through our platform.",
|
|
196
|
+
guidelines: [
|
|
197
|
+
"Submit story ideas and news tips directly to the newsroom.",
|
|
198
|
+
"Share verified community photographs and visual stories.",
|
|
199
|
+
"Recommend local events and gatherings.",
|
|
200
|
+
"Contribute to seasonal community guides and neighborhood maps.",
|
|
201
|
+
"Recognize community volunteers and local achievers.",
|
|
202
|
+
"Suggest neighborhood improvements and share local knowledge.",
|
|
203
|
+
"Participate in carefully moderated civic discussions."
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
id: "accountability-constructive-journalism",
|
|
208
|
+
number: 5,
|
|
209
|
+
title: "Accountability and Constructive Journalism",
|
|
210
|
+
summary: "Communities benefit from understanding both their successes and their challenges. We report thoroughly, fairly, and responsibly without manufacturing conflict.",
|
|
211
|
+
guidelines: [
|
|
212
|
+
"Explain how local decisions affect residents.",
|
|
213
|
+
"Investigate matters of public interest.",
|
|
214
|
+
"Hold institutions and elected leaders accountable.",
|
|
215
|
+
"Provide useful context and historical depth.",
|
|
216
|
+
"Explore credible solutions where appropriate.",
|
|
217
|
+
"Give relevant stakeholders opportunities to respond.",
|
|
218
|
+
"Help readers understand how to participate in civic life."
|
|
219
|
+
]
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
id: "sustainable-respectful-media",
|
|
223
|
+
number: 6,
|
|
224
|
+
title: "Sustainable, Respectful Local Media",
|
|
225
|
+
summary: "We are developing a sustainable model for high-quality local journalism that respects readers and prioritizes trust over short-term traffic.",
|
|
226
|
+
guidelines: [
|
|
227
|
+
"Avoid intrusive advertising and clickbait distractions.",
|
|
228
|
+
"Avoid deceptive engagement tactics or endless outrage feeds.",
|
|
229
|
+
"Clearly identify sponsored content and commercial relationships.",
|
|
230
|
+
"Maintain a meaningful separation between advertising and editorial decisions.",
|
|
231
|
+
"Build long-term relationships with local businesses and community organizations.",
|
|
232
|
+
"Prioritize reader trust over short-term page views.",
|
|
233
|
+
"Design fast, accessible, readable websites.",
|
|
234
|
+
"Avoid low-quality syndication and tracking-heavy ad networks."
|
|
235
|
+
]
|
|
236
|
+
}
|
|
237
|
+
];
|
|
238
|
+
var NETWORK_PARENT = {
|
|
239
|
+
name: "Bay Area News Network",
|
|
240
|
+
url: "https://bayareanewsnetwork.com",
|
|
241
|
+
brandSlogan: "Bringing communities closer.",
|
|
242
|
+
tagline: "Bringing communities closer.",
|
|
243
|
+
mission: "To strengthen local communities through independent journalism, meaningful connections, and opportunities for residents to participate in the places they call home.",
|
|
244
|
+
extendedMission: "We believe communities thrive when people are informed, connected, and engaged. Our publications bring neighbors closer by sharing the stories that matter, celebrating local life, holding institutions accountable, and giving residents a voice in their community\u2019s future. Through independent local journalism and community participation, we aim to help people better understand, appreciate, and shape the places they call home.",
|
|
245
|
+
publicationSlogan: "Local stories. Stronger communities.",
|
|
246
|
+
description: "An institutional network of independent local publications that use journalism, technology, and community participation to strengthen the places they serve.",
|
|
247
|
+
principles: EDITORIAL_PRINCIPLES
|
|
248
|
+
};
|
|
249
|
+
var localPublications = [
|
|
250
|
+
{
|
|
251
|
+
slug: "bayareachronicle",
|
|
252
|
+
name: "Bay Area Chronicle",
|
|
253
|
+
url: "https://bayareachronicle.com",
|
|
254
|
+
area: "San Francisco Bay Area",
|
|
255
|
+
slogan: "Local stories. Stronger communities.",
|
|
256
|
+
description: "Regional investigative reporting and in-depth policy analysis covering housing, transit, environmental resilience, and civic institutions across the nine-county Bay Area.",
|
|
257
|
+
aboutIntro: "Bay Area Chronicle is an independent regional publication providing in-depth reporting and investigative journalism across the nine-county San Francisco Bay Area. While our sister publications focus on the immediate pulse of individual towns and valleys, Bay Area Chronicle investigates the broader challenges and systemic choices that span our region\u2014from regional transit integration and housing affordability to climate resilience and major civic governance. We believe regional awareness complements local loyalty, equipping Bay Area residents with the deep context required to solve shared problems."
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
slug: "concordchronicle",
|
|
261
|
+
name: "Concord Chronicle",
|
|
262
|
+
url: "https://concordchronicle.com",
|
|
263
|
+
area: "Concord & Clayton",
|
|
264
|
+
slogan: "Local stories. Stronger communities.",
|
|
265
|
+
description: "Independent reporting on municipal governance, school districts, small business, and neighborhood culture in Concord and Clayton.",
|
|
266
|
+
aboutIntro: "Concord Chronicle is an independent local publication dedicated to chronicling community life and civic affairs across Concord and Clayton. We report closely on city council deliberations, the Mt. Diablo Unified School District, the transformation of the former naval weapons station, and the vibrant small businesses that anchor Todos Santos Plaza and neighborhood shopping districts. By illuminating both local challenges and community milestones, we aim to provide reliable reporting that deepens resident participation and fosters a stronger civic community."
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
slug: "walnutcreektimes",
|
|
270
|
+
name: "Walnut Creek Times",
|
|
271
|
+
url: "https://walnutcreektimes.com",
|
|
272
|
+
area: "Walnut Creek \xB7 Rossmoor \xB7 Saranap \xB7 Pleasant Hill",
|
|
273
|
+
slogan: "Local stories. Stronger communities.",
|
|
274
|
+
description: "Independent local journalism covering civic decisions, downtown commerce, neighborhood life, and community achievements across Walnut Creek, Rossmoor, Saranap, and Pleasant Hill.",
|
|
275
|
+
aboutIntro: "Walnut Creek Times is an independent local publication dedicated to helping residents stay informed, connected, and engaged with the community they call home. We cover the people, places, decisions, and events that shape life across Walnut Creek, Rossmoor, Saranap, and Pleasant Hill. From downtown revitalization and neighborhood planning to open space stewardship, community celebrations, and the achievements of everyday residents, our goal is to provide trustworthy journalism that helps strengthen the connections between people and the places they live."
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
slug: "lamorindapost",
|
|
279
|
+
name: "Lamorinda Post",
|
|
280
|
+
url: "https://lamorindapost.com",
|
|
281
|
+
area: "Orinda \xB7 Lafayette \xB7 Moraga",
|
|
282
|
+
slogan: "Local stories. Stronger communities.",
|
|
283
|
+
description: "Community-rooted journalism for the three hillside towns of Lamorinda, covering local schools, civic leadership, wildfire preparedness, and neighborhood traditions.",
|
|
284
|
+
aboutIntro: "Lamorinda Post is an independent local publication dedicated to the neighbors, families, and civic institutions of Orinda, Lafayette, and Moraga. Connected across rolling ridgelines and oak-studded canyons, our communities share exceptional schools, active civic traditions, and vital concerns including wildfire resilience, open space preservation, and sensible town planning. We provide thoughtful, verified reporting on the decisions and people shaping our three towns, helping neighbors stay informed and actively engaged in their community\u2019s future."
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
slug: "alamoweekly",
|
|
288
|
+
name: "Alamo Weekly",
|
|
289
|
+
url: "https://alamoweekly.com",
|
|
290
|
+
area: "Alamo & Round Hill",
|
|
291
|
+
slogan: "Local stories. Stronger communities.",
|
|
292
|
+
description: "Hyperlocal news focused on the unincorporated enclave of Alamo, Round Hill, local schools, neighborhood preservation, and community organizations.",
|
|
293
|
+
aboutIntro: "Alamo Weekly is an independent local publication committed to serving the unincorporated community of Alamo and the surrounding Round Hill neighborhoods. Nestled between Mount Diablo and the Las Trampas ridge, Alamo cherishes its semi-rural character, scenic trails, and close-knit neighborhood traditions. We follow county land-use planning, local school achievements, historic preservation, and community volunteer efforts, ensuring Alamo residents have a dedicated voice and a dependable source of local information."
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
slug: "danvilletimes",
|
|
297
|
+
name: "Danville Times",
|
|
298
|
+
url: "https://danvilletimes.com",
|
|
299
|
+
area: "Danville & Blackhawk",
|
|
300
|
+
slogan: "Local stories. Stronger communities.",
|
|
301
|
+
description: "Civic reporting, community events, local enterprise, youth sports, and cultural heritage for the Town of Danville and Blackhawk.",
|
|
302
|
+
aboutIntro: "Danville Times is an independent local publication dedicated to reporting on the people, businesses, civic decisions, and community traditions of Danville and Blackhawk. From town council meetings and historic downtown preservation along Hartz Avenue to the bustling Iron Horse Trail, youth athletics, and Blackhawk community life, we chronicle the stories that matter to local families. Our mission is to deliver fair, accurate reporting that celebrates community achievement, holds local institutions accountable, and reinforces the bonds that unite our neighborhoods."
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
slug: "sanramontimes",
|
|
306
|
+
name: "San Ramon Times",
|
|
307
|
+
url: "https://sanramontimes.com",
|
|
308
|
+
area: "San Ramon & Dougherty Valley",
|
|
309
|
+
slogan: "Local stories. Stronger communities.",
|
|
310
|
+
description: "Daily reporting on municipal policy, City Center Bishop Ranch, San Ramon Valley schools, and the neighborhoods of Dougherty Valley.",
|
|
311
|
+
aboutIntro: "San Ramon Times is an independent local publication focused on the rapidly evolving civic, commercial, and residential landscape of San Ramon. We cover the municipal governance that guides our growing city, innovations at Bishop Ranch and City Center, educational excellence in the San Ramon Valley Unified School District, and community life throughout Dougherty Valley. Through clear and constructive journalism, we help residents understand how local decisions affect their daily lives and provide opportunities to participate meaningfully in city affairs."
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
slug: "diablovalleynews",
|
|
315
|
+
name: "Diablo Valley News",
|
|
316
|
+
url: "https://diablovalleynews.com",
|
|
317
|
+
area: "Concord \xB7 Walnut Creek \xB7 Pleasant Hill \xB7 Alamo \xB7 Danville \xB7 San Ramon",
|
|
318
|
+
slogan: "Local stories. Stronger communities.",
|
|
319
|
+
description: "Regional perspectives on economic trends, transportation, environmental stewardship, and community life surrounding Mount Diablo.",
|
|
320
|
+
aboutIntro: "Diablo Valley News is an independent local publication offering cross-community reporting for the towns and cities nestled in the shadow of Mount Diablo. From the I-680 and Route 24 commute corridors to regional parklands, Diablo Valley College initiatives, and valley-wide economic trends, we illuminate the connections between our neighboring communities. By bringing together reporting from across the valley, we help residents understand how shared regional developments influence their individual neighborhoods."
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
slug: "trivalleyweekly",
|
|
324
|
+
name: "Tri-Valley Weekly",
|
|
325
|
+
url: "https://trivalleyweekly.com",
|
|
326
|
+
area: "Dublin \xB7 Pleasanton \xB7 Livermore",
|
|
327
|
+
slogan: "Local stories. Stronger communities.",
|
|
328
|
+
description: "Comprehensive reporting across the innovation and wine corridor of Dublin, Pleasanton, and Livermore, connecting civic developments, local research, and regional culture.",
|
|
329
|
+
aboutIntro: "Tri-Valley Weekly is an independent local publication dedicated to connecting the dynamic communities of Dublin, Pleasanton, and Livermore. Spanning one of Northern California's premier corridors for technological research, historic downtown heritage, and historic viticulture, the Tri-Valley balances rapid civic growth with cherished local traditions. We report across city lines on transportation, regional commerce, school governance, environmental stewardship, and community culture, giving residents the comprehensive context needed to navigate and shape their shared valley."
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
slug: "eastbaypost",
|
|
333
|
+
name: "East Bay Post",
|
|
334
|
+
url: "https://eastbaypost.com",
|
|
335
|
+
area: "The East Bay",
|
|
336
|
+
slogan: "Local stories. Stronger communities.",
|
|
337
|
+
description: "Connecting the diverse neighborhoods, public policy, shoreline communities, and independent businesses across the East Bay.",
|
|
338
|
+
aboutIntro: "East Bay Post is an independent regional publication devoted to exploring the diverse neighborhoods, public policies, and cultural vitality of the East Bay. From waterfront revitalization and transit infrastructure to local arts, community advocacy, and neighborhood commerce across Alameda and Contra Costa counties, we investigate the forces shaping our interconnected urban and suburban communities. We provide rigorous, constructive reporting that bridges community divides and empowers residents to advocate for resilient, inclusive neighborhoods."
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
slug: "napagate",
|
|
342
|
+
name: "Napa Gate",
|
|
343
|
+
url: "https://napagate.com",
|
|
344
|
+
area: "Napa Valley",
|
|
345
|
+
slogan: "Local stories. Stronger communities.",
|
|
346
|
+
description: "Bespoke local reporting for the people, agriculture, culinary culture, riverfront, and civic institutions of the Napa Valley.",
|
|
347
|
+
aboutIntro: "Napa Gate is an independent local publication devoted to the distinctive communities, agricultural heritage, and civic life of the Napa Valley. From municipal decisions in the City of Napa to vineyard stewardship, hospitality labor, wildfire defense, and cultural events throughout Yountville, St. Helena, and Calistoga, we tell the stories of the people who live and work here year-round. We deliver nuanced, independent journalism that respects the valley\u2019s unique identity while examining the economic and environmental choices that will define its future.",
|
|
348
|
+
listed: false
|
|
349
|
+
}
|
|
350
|
+
];
|
|
351
|
+
var listedPublications = localPublications.filter(
|
|
352
|
+
(publication) => !("listed" in publication) || publication.listed
|
|
353
|
+
);
|
|
354
|
+
var communityPublications = listedPublications.filter(
|
|
355
|
+
(publication) => publication.slug !== "bayareachronicle"
|
|
356
|
+
);
|
|
357
|
+
function findPublicationBySlug(slug) {
|
|
358
|
+
return localPublications.find((p) => p.slug === slug);
|
|
359
|
+
}
|
|
360
|
+
function findPublicationByHost(host) {
|
|
361
|
+
const cleanHost = host.replace(/^https?:\/\//, "").replace(/\/.*$/, "").toLowerCase();
|
|
362
|
+
return localPublications.find((p) => {
|
|
363
|
+
const pubHost = p.url.replace(/^https?:\/\//, "").replace(/\/.*$/, "").toLowerCase();
|
|
364
|
+
return pubHost === cleanHost || cleanHost.startsWith(`${p.slug}.`);
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
function getNetworkPublicationUrl(slug) {
|
|
368
|
+
const pub = findPublicationBySlug(slug);
|
|
369
|
+
if (!pub) return null;
|
|
370
|
+
return decorateNetworkUrl(pub.url + "/");
|
|
371
|
+
}
|
|
372
|
+
var NETWORK_HOSTNAMES = new Set(
|
|
373
|
+
localPublications.map((p) => {
|
|
374
|
+
try {
|
|
375
|
+
return new URL(p.url).hostname.replace(/^www\./, "").toLowerCase();
|
|
376
|
+
} catch {
|
|
377
|
+
return `${p.slug}.com`;
|
|
378
|
+
}
|
|
379
|
+
})
|
|
380
|
+
);
|
|
381
|
+
function isNetworkHostname(hostname) {
|
|
382
|
+
if (!hostname) return false;
|
|
383
|
+
const clean = hostname.replace(/^www\./, "").toLowerCase();
|
|
384
|
+
return clean === "bayareanewsnetwork.com" || clean.endsWith(".bayareanewsnetwork.com") || NETWORK_HOSTNAMES.has(clean) || clean.endsWith(".bayareachronicle.com") || clean.endsWith(".napsite.com") || clean.endsWith(".site.scalemule.com");
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
export { COOKIE_CATEGORIES, EDITORIAL_PRINCIPLES, NETWORK_PARENT, communityPublications, findPublicationByHost, findPublicationBySlug, getNetworkPublicationUrl, isNetworkHostname, listedPublications, localPublications, recordConsentToCompliance, setupNetworkConsentDelegation };
|
|
@@ -12,77 +12,99 @@ var localPublications = [
|
|
|
12
12
|
name: "Bay Area Chronicle",
|
|
13
13
|
url: "https://bayareachronicle.com",
|
|
14
14
|
area: "San Francisco Bay Area",
|
|
15
|
-
|
|
15
|
+
slogan: "Local stories. Stronger communities.",
|
|
16
|
+
description: "Regional investigative reporting and in-depth policy analysis covering housing, transit, environmental resilience, and civic institutions across the nine-county Bay Area.",
|
|
17
|
+
aboutIntro: "Bay Area Chronicle is an independent regional publication providing in-depth reporting and investigative journalism across the nine-county San Francisco Bay Area. While our sister publications focus on the immediate pulse of individual towns and valleys, Bay Area Chronicle investigates the broader challenges and systemic choices that span our region\u2014from regional transit integration and housing affordability to climate resilience and major civic governance. We believe regional awareness complements local loyalty, equipping Bay Area residents with the deep context required to solve shared problems."
|
|
16
18
|
},
|
|
17
19
|
{
|
|
18
20
|
slug: "concordchronicle",
|
|
19
21
|
name: "Concord Chronicle",
|
|
20
22
|
url: "https://concordchronicle.com",
|
|
21
|
-
area: "Concord",
|
|
22
|
-
|
|
23
|
+
area: "Concord & Clayton",
|
|
24
|
+
slogan: "Local stories. Stronger communities.",
|
|
25
|
+
description: "Independent reporting on municipal governance, school districts, small business, and neighborhood culture in Concord and Clayton.",
|
|
26
|
+
aboutIntro: "Concord Chronicle is an independent local publication dedicated to chronicling community life and civic affairs across Concord and Clayton. We report closely on city council deliberations, the Mt. Diablo Unified School District, the transformation of the former naval weapons station, and the vibrant small businesses that anchor Todos Santos Plaza and neighborhood shopping districts. By illuminating both local challenges and community milestones, we aim to provide reliable reporting that deepens resident participation and fosters a stronger civic community."
|
|
23
27
|
},
|
|
24
28
|
{
|
|
25
29
|
slug: "walnutcreektimes",
|
|
26
30
|
name: "Walnut Creek Times",
|
|
27
31
|
url: "https://walnutcreektimes.com",
|
|
28
32
|
area: "Walnut Creek \xB7 Rossmoor \xB7 Saranap \xB7 Pleasant Hill",
|
|
29
|
-
|
|
33
|
+
slogan: "Local stories. Stronger communities.",
|
|
34
|
+
description: "Independent local journalism covering civic decisions, downtown commerce, neighborhood life, and community achievements across Walnut Creek, Rossmoor, Saranap, and Pleasant Hill.",
|
|
35
|
+
aboutIntro: "Walnut Creek Times is an independent local publication dedicated to helping residents stay informed, connected, and engaged with the community they call home. We cover the people, places, decisions, and events that shape life across Walnut Creek, Rossmoor, Saranap, and Pleasant Hill. From downtown revitalization and neighborhood planning to open space stewardship, community celebrations, and the achievements of everyday residents, our goal is to provide trustworthy journalism that helps strengthen the connections between people and the places they live."
|
|
30
36
|
},
|
|
31
37
|
{
|
|
32
38
|
slug: "lamorindapost",
|
|
33
39
|
name: "Lamorinda Post",
|
|
34
40
|
url: "https://lamorindapost.com",
|
|
35
41
|
area: "Orinda \xB7 Lafayette \xB7 Moraga",
|
|
36
|
-
|
|
42
|
+
slogan: "Local stories. Stronger communities.",
|
|
43
|
+
description: "Community-rooted journalism for the three hillside towns of Lamorinda, covering local schools, civic leadership, wildfire preparedness, and neighborhood traditions.",
|
|
44
|
+
aboutIntro: "Lamorinda Post is an independent local publication dedicated to the neighbors, families, and civic institutions of Orinda, Lafayette, and Moraga. Connected across rolling ridgelines and oak-studded canyons, our communities share exceptional schools, active civic traditions, and vital concerns including wildfire resilience, open space preservation, and sensible town planning. We provide thoughtful, verified reporting on the decisions and people shaping our three towns, helping neighbors stay informed and actively engaged in their community\u2019s future."
|
|
37
45
|
},
|
|
38
46
|
{
|
|
39
47
|
slug: "alamoweekly",
|
|
40
48
|
name: "Alamo Weekly",
|
|
41
49
|
url: "https://alamoweekly.com",
|
|
42
|
-
area: "Alamo",
|
|
43
|
-
|
|
50
|
+
area: "Alamo & Round Hill",
|
|
51
|
+
slogan: "Local stories. Stronger communities.",
|
|
52
|
+
description: "Hyperlocal news focused on the unincorporated enclave of Alamo, Round Hill, local schools, neighborhood preservation, and community organizations.",
|
|
53
|
+
aboutIntro: "Alamo Weekly is an independent local publication committed to serving the unincorporated community of Alamo and the surrounding Round Hill neighborhoods. Nestled between Mount Diablo and the Las Trampas ridge, Alamo cherishes its semi-rural character, scenic trails, and close-knit neighborhood traditions. We follow county land-use planning, local school achievements, historic preservation, and community volunteer efforts, ensuring Alamo residents have a dedicated voice and a dependable source of local information."
|
|
44
54
|
},
|
|
45
55
|
{
|
|
46
56
|
slug: "danvilletimes",
|
|
47
57
|
name: "Danville Times",
|
|
48
58
|
url: "https://danvilletimes.com",
|
|
49
|
-
area: "Danville",
|
|
50
|
-
|
|
59
|
+
area: "Danville & Blackhawk",
|
|
60
|
+
slogan: "Local stories. Stronger communities.",
|
|
61
|
+
description: "Civic reporting, community events, local enterprise, youth sports, and cultural heritage for the Town of Danville and Blackhawk.",
|
|
62
|
+
aboutIntro: "Danville Times is an independent local publication dedicated to reporting on the people, businesses, civic decisions, and community traditions of Danville and Blackhawk. From town council meetings and historic downtown preservation along Hartz Avenue to the bustling Iron Horse Trail, youth athletics, and Blackhawk community life, we chronicle the stories that matter to local families. Our mission is to deliver fair, accurate reporting that celebrates community achievement, holds local institutions accountable, and reinforces the bonds that unite our neighborhoods."
|
|
51
63
|
},
|
|
52
64
|
{
|
|
53
65
|
slug: "sanramontimes",
|
|
54
66
|
name: "San Ramon Times",
|
|
55
67
|
url: "https://sanramontimes.com",
|
|
56
|
-
area: "San Ramon",
|
|
57
|
-
|
|
68
|
+
area: "San Ramon & Dougherty Valley",
|
|
69
|
+
slogan: "Local stories. Stronger communities.",
|
|
70
|
+
description: "Daily reporting on municipal policy, City Center Bishop Ranch, San Ramon Valley schools, and the neighborhoods of Dougherty Valley.",
|
|
71
|
+
aboutIntro: "San Ramon Times is an independent local publication focused on the rapidly evolving civic, commercial, and residential landscape of San Ramon. We cover the municipal governance that guides our growing city, innovations at Bishop Ranch and City Center, educational excellence in the San Ramon Valley Unified School District, and community life throughout Dougherty Valley. Through clear and constructive journalism, we help residents understand how local decisions affect their daily lives and provide opportunities to participate meaningfully in city affairs."
|
|
58
72
|
},
|
|
59
73
|
{
|
|
60
74
|
slug: "diablovalleynews",
|
|
61
75
|
name: "Diablo Valley News",
|
|
62
76
|
url: "https://diablovalleynews.com",
|
|
63
77
|
area: "Concord \xB7 Walnut Creek \xB7 Pleasant Hill \xB7 Alamo \xB7 Danville \xB7 San Ramon",
|
|
64
|
-
|
|
78
|
+
slogan: "Local stories. Stronger communities.",
|
|
79
|
+
description: "Regional perspectives on economic trends, transportation, environmental stewardship, and community life surrounding Mount Diablo.",
|
|
80
|
+
aboutIntro: "Diablo Valley News is an independent local publication offering cross-community reporting for the towns and cities nestled in the shadow of Mount Diablo. From the I-680 and Route 24 commute corridors to regional parklands, Diablo Valley College initiatives, and valley-wide economic trends, we illuminate the connections between our neighboring communities. By bringing together reporting from across the valley, we help residents understand how shared regional developments influence their individual neighborhoods."
|
|
65
81
|
},
|
|
66
82
|
{
|
|
67
83
|
slug: "trivalleyweekly",
|
|
68
84
|
name: "Tri-Valley Weekly",
|
|
69
85
|
url: "https://trivalleyweekly.com",
|
|
70
|
-
area: "
|
|
71
|
-
|
|
86
|
+
area: "Dublin \xB7 Pleasanton \xB7 Livermore",
|
|
87
|
+
slogan: "Local stories. Stronger communities.",
|
|
88
|
+
description: "Comprehensive reporting across the innovation and wine corridor of Dublin, Pleasanton, and Livermore, connecting civic developments, local research, and regional culture.",
|
|
89
|
+
aboutIntro: "Tri-Valley Weekly is an independent local publication dedicated to connecting the dynamic communities of Dublin, Pleasanton, and Livermore. Spanning one of Northern California's premier corridors for technological research, historic downtown heritage, and historic viticulture, the Tri-Valley balances rapid civic growth with cherished local traditions. We report across city lines on transportation, regional commerce, school governance, environmental stewardship, and community culture, giving residents the comprehensive context needed to navigate and shape their shared valley."
|
|
72
90
|
},
|
|
73
91
|
{
|
|
74
92
|
slug: "eastbaypost",
|
|
75
93
|
name: "East Bay Post",
|
|
76
94
|
url: "https://eastbaypost.com",
|
|
77
95
|
area: "The East Bay",
|
|
78
|
-
|
|
96
|
+
slogan: "Local stories. Stronger communities.",
|
|
97
|
+
description: "Connecting the diverse neighborhoods, public policy, shoreline communities, and independent businesses across the East Bay.",
|
|
98
|
+
aboutIntro: "East Bay Post is an independent regional publication devoted to exploring the diverse neighborhoods, public policies, and cultural vitality of the East Bay. From waterfront revitalization and transit infrastructure to local arts, community advocacy, and neighborhood commerce across Alameda and Contra Costa counties, we investigate the forces shaping our interconnected urban and suburban communities. We provide rigorous, constructive reporting that bridges community divides and empowers residents to advocate for resilient, inclusive neighborhoods."
|
|
79
99
|
},
|
|
80
100
|
{
|
|
81
101
|
slug: "napagate",
|
|
82
102
|
name: "Napa Gate",
|
|
83
103
|
url: "https://napagate.com",
|
|
84
104
|
area: "Napa Valley",
|
|
85
|
-
|
|
105
|
+
slogan: "Local stories. Stronger communities.",
|
|
106
|
+
description: "Bespoke local reporting for the people, agriculture, culinary culture, riverfront, and civic institutions of the Napa Valley.",
|
|
107
|
+
aboutIntro: "Napa Gate is an independent local publication devoted to the distinctive communities, agricultural heritage, and civic life of the Napa Valley. From municipal decisions in the City of Napa to vineyard stewardship, hospitality labor, wildfire defense, and cultural events throughout Yountville, St. Helena, and Calistoga, we tell the stories of the people who live and work here year-round. We deliver nuanced, independent journalism that respects the valley\u2019s unique identity while examining the economic and environmental choices that will define its future.",
|
|
86
108
|
listed: false
|
|
87
109
|
}
|
|
88
110
|
];
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { CookieConsentBanner } from './chunk-
|
|
3
|
-
import './chunk-
|
|
2
|
+
export { CookieConsentBanner } from './chunk-2IYKWGVM.js';
|
|
3
|
+
import './chunk-UTBV6JJX.js';
|