@sonordev/site-kit 8.2.0 → 8.3.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/AGENTS.md +13 -1
- package/CHANGELOG.md +5 -0
- package/README.md +9 -5
- package/agent-manifest.json +47 -8
- package/dist/{AnalyticsProvider-6TAA3XYB.js → AnalyticsProvider-QXO33JUF.js} +6 -6
- package/dist/{ArticleFaqSection-3Q26DP7P.js → ArticleFaqSection-DEWE5B4Q.js} +1 -1
- package/dist/{ArticleViewTracker-H4N7YCLC.js → ArticleViewTracker-KN6ENIRS.js} +17 -6
- package/dist/{BlocksPopup-FJT5YQD3.js → BlocksPopup-3RPN6YVJ.js} +6 -6
- package/dist/{ChatWidget-THQHHTAA.js → ChatWidget-D2X445PO.js} +6 -6
- package/dist/{FileField-OZXXJGUM.js → FileField-UNGSNGJ5.js} +4 -4
- package/dist/{FormSpotlight-MLDJS246.js → FormSpotlight-JFH2ENKQ.js} +1 -1
- package/dist/{FormStage-6RVY7M3R.js → FormStage-RC3WHHXP.js} +1 -1
- package/dist/{ManagedForm-3VV54RVH.js → ManagedForm-FOQZ2IYG.js} +7 -7
- package/dist/{ManagedNewsletterForm-RTJDGMGG.js → ManagedNewsletterForm-NFNF33V3.js} +16 -7
- package/dist/{SignalCore-T7ZOCA44.js → SignalCore-5KABGX5C.js} +4 -4
- package/dist/SiteChat-JQ46ZIJ4.js +6 -0
- package/dist/SiteDesignReporter-N7L6DR4J.js +12 -0
- package/dist/{SitePopups-K6ADAWFK.js → SitePopups-WZBKX5Q3.js} +6 -6
- package/dist/SitemapSync-GY6UADRI.js +9 -0
- package/dist/_client/booking-widget.js +6 -6
- package/dist/_client/testimonial-section.js +3 -3
- package/dist/affiliates/index.js +4 -4
- package/dist/analytics/index.js +6 -6
- package/dist/{article-styles-GFXJJDLE.js → article-styles-7QONZJR5.js} +3 -3
- package/dist/article-tables-6XHVULPU.js +2 -0
- package/dist/articles/Article.d.ts +2 -89
- package/dist/articles/ArticleFAQ.d.ts +2 -41
- package/dist/articles/ArticleFaqSection.d.ts +2 -2
- package/dist/articles/ArticleList.d.ts +2 -79
- package/dist/articles/ArticleViewTracker.d.ts +2 -15
- package/dist/articles/AuthorCard.d.ts +2 -10
- package/dist/articles/AuthorPage.d.ts +2 -8
- package/dist/articles/ClusterLandingPage.d.ts +2 -40
- package/dist/articles/ClusterNavigation.d.ts +2 -37
- package/dist/articles/ManagedNewsletterForm.d.ts +3 -12
- package/dist/articles/NewsletterShell.d.ts +2 -17
- package/dist/articles/NewsletterWidget.d.ts +2 -30
- package/dist/articles/PublicationLayout.d.ts +2 -67
- package/dist/articles/PublicationSidebar.d.ts +2 -36
- package/dist/articles/RelatedPosts.d.ts +2 -22
- package/dist/articles/ServiceCallout.d.ts +2 -56
- package/dist/articles/TableOfContents.d.ts +2 -6
- package/dist/articles/article-photos.d.ts +2 -9
- package/dist/articles/article-styles.d.ts +2 -21
- package/dist/articles/article-tables.d.ts +2 -12
- package/dist/articles/artwork.d.ts +2 -13
- package/dist/articles/author-schema.d.ts +2 -72
- package/dist/articles/author-social.d.ts +2 -14
- package/dist/articles/excerpt.d.ts +2 -17
- package/dist/articles/index.d.ts +2 -79
- package/dist/articles/index.js +16 -11
- package/dist/articles/news-sitemap.d.ts +2 -46
- package/dist/articles/processArticleHtml.d.ts +2 -34
- package/dist/articles/public-reads.d.ts +2 -26
- package/dist/articles/reading-time.d.ts +2 -9
- package/dist/articles/routes.d.ts +2 -52
- package/dist/articles/server-core.d.ts +2 -461
- package/dist/articles/server-ui.d.ts +2 -30
- package/dist/articles/server-ui.js +26 -17
- package/dist/articles/server.d.ts +2 -461
- package/dist/articles/server.js +14 -5
- package/dist/articles/types.d.ts +2 -316
- package/dist/articles/widget-styles.d.ts +2 -8
- package/dist/chat/index.js +8 -8
- package/dist/{chunk-575L73NT.js → chunk-2JMCBJM5.js} +1 -1
- package/dist/chunk-34ZYJTQR.js +1 -0
- package/dist/{chunk-7FSB2EXS.js → chunk-3OY52UFM.js} +1 -1
- package/dist/{chunk-WMVK77ND.js → chunk-4K735O3J.js} +1 -1
- package/dist/{chunk-66G47P5C.js → chunk-4PVMUPC6.js} +2 -2
- package/dist/{chunk-L5UOHS6E.js → chunk-5D7ZISUP.js} +1 -1
- package/dist/{chunk-SMYX3AAO.js → chunk-5RYSTKVU.js} +1 -1
- package/dist/{chunk-6CJGZFOU.js → chunk-A4MPHIVP.js} +1 -1
- package/dist/chunk-B7T2SFUF.js +1 -0
- package/dist/{chunk-FV2VD7WM.js → chunk-BC7JMY4Z.js} +3 -3
- package/dist/{chunk-57K4GW3D.js → chunk-BOCYBDKV.js} +1 -1
- package/dist/{chunk-NFRJTOTB.js → chunk-BSQP6PRA.js} +1 -1
- package/dist/{chunk-GKGSXUVQ.js → chunk-BVB5FBAA.js} +1 -1
- package/dist/{chunk-Q72M5KBS.js → chunk-C2UROFGZ.js} +1 -1
- package/dist/{chunk-3EU6S5YC.js → chunk-C4AFNZT2.js} +1 -1
- package/dist/{chunk-WACWV5EP.js → chunk-D6ZIQMHB.js} +3 -3
- package/dist/{chunk-GYF2ULVO.js → chunk-DJAYFHVF.js} +1 -1
- package/dist/{chunk-JC2VS2SB.js → chunk-DPSNMOMZ.js} +1 -1
- package/dist/{chunk-NNEIBXGU.js → chunk-E3UR37RX.js} +2 -2
- package/dist/{chunk-Y3INC4QJ.js → chunk-E4PTMORJ.js} +1 -1
- package/dist/{chunk-EBILJHUF.js → chunk-EA6FZMYA.js} +2 -2
- package/dist/{chunk-X7VKRHFF.js → chunk-FHUTOXS7.js} +1 -1
- package/dist/{chunk-JBEUZJS3.js → chunk-GKJVSZ7H.js} +3 -3
- package/dist/chunk-H72ZFO3F.js +1 -0
- package/dist/{chunk-FVXFLVXF.js → chunk-HND6BDXC.js} +3 -3
- package/dist/chunk-IEGDPRQB.js +14 -0
- package/dist/{chunk-CAH4Y4PY.js → chunk-JO76F5WP.js} +1 -1
- package/dist/{chunk-FQUGGPBM.js → chunk-KJVUOJMW.js} +58 -58
- package/dist/{chunk-SC4MZGWZ.js → chunk-LBDWAXAO.js} +1 -1
- package/dist/{chunk-WSNG2K3T.js → chunk-LPKKSYKX.js} +3 -3
- package/dist/{chunk-HUBMKTPW.js → chunk-M5SF7NCC.js} +1 -1
- package/dist/{chunk-YBAFUM3Z.js → chunk-MQ4REMTH.js} +2 -2
- package/dist/{chunk-BQZPHICL.js → chunk-NA4Z4CQG.js} +1 -1
- package/dist/{chunk-727R7C5R.js → chunk-OIWFXUVD.js} +2 -2
- package/dist/{chunk-H4R2GPAB.js → chunk-QBCWVT2S.js} +2 -2
- package/dist/{chunk-WYZ4OUON.js → chunk-QCZHYO5M.js} +1 -1
- package/dist/{chunk-I6QFPSUU.js → chunk-QDILCQBL.js} +9 -9
- package/dist/{chunk-WK3N3Y7V.js → chunk-SCTVADDL.js} +2 -2
- package/dist/{chunk-QXMIKDOL.js → chunk-SNRE3ZVZ.js} +3 -3
- package/dist/{chunk-WBC5B3JD.js → chunk-TT4JZDKM.js} +3 -3
- package/dist/{chunk-5ZCY36TY.js → chunk-U7Y3QG3A.js} +1 -1
- package/dist/{chunk-3G7YABRA.js → chunk-W7OPEMGJ.js} +4 -1
- package/dist/{chunk-XWIRU6UT.js → chunk-WBUG7XRL.js} +2 -2
- package/dist/{chunk-ZM2FNWIQ.js → chunk-WSOZ3FQN.js} +1 -1
- package/dist/chunk-X4IJS7LV.js +319 -0
- package/dist/{chunk-JIH32RH2.js → chunk-XA7Q2VQA.js} +1 -1
- package/dist/{chunk-GWP2VBFH.js → chunk-XLAXYPTK.js} +3 -3
- package/dist/client/index.js +4 -16
- package/dist/fleet/index.js +6 -6
- package/dist/forms/index.js +9 -325
- package/dist/forms/server.js +2 -2
- package/dist/images/index.js +4 -4
- package/dist/index.js +1 -1
- package/dist/layout/client.js +9 -9
- package/dist/layout/index.js +10 -10
- package/dist/llms/index.js +8 -8
- package/dist/maps/index.js +4 -4
- package/dist/mcp/sonor.d.ts +42 -3
- package/dist/mcp/sonor.js +25 -20
- package/dist/mcp/transport.d.ts +1 -1
- package/dist/press-kit/articles/Article.d.ts +89 -0
- package/dist/press-kit/articles/ArticleFAQ.d.ts +41 -0
- package/dist/press-kit/articles/ArticleFaqSection.d.ts +2 -0
- package/dist/press-kit/articles/ArticleList.d.ts +79 -0
- package/dist/press-kit/articles/ArticleViewTracker.d.ts +15 -0
- package/dist/press-kit/articles/AuthorCard.d.ts +10 -0
- package/dist/press-kit/articles/AuthorPage.d.ts +8 -0
- package/dist/press-kit/articles/ClusterLandingPage.d.ts +40 -0
- package/dist/press-kit/articles/ClusterNavigation.d.ts +37 -0
- package/dist/press-kit/articles/ManagedNewsletterForm.d.ts +12 -0
- package/dist/press-kit/articles/NewsletterShell.d.ts +17 -0
- package/dist/press-kit/articles/NewsletterWidget.d.ts +30 -0
- package/dist/press-kit/articles/PublicationLayout.d.ts +67 -0
- package/dist/press-kit/articles/PublicationSidebar.d.ts +36 -0
- package/dist/press-kit/articles/RelatedPosts.d.ts +22 -0
- package/dist/press-kit/articles/ServiceCallout.d.ts +56 -0
- package/dist/press-kit/articles/TableOfContents.d.ts +6 -0
- package/dist/press-kit/articles/article-photos.d.ts +9 -0
- package/dist/press-kit/articles/article-styles.d.ts +21 -0
- package/dist/press-kit/articles/article-tables.d.ts +12 -0
- package/dist/press-kit/articles/artwork.d.ts +13 -0
- package/dist/press-kit/articles/author-schema.d.ts +72 -0
- package/dist/press-kit/articles/author-social.d.ts +14 -0
- package/dist/press-kit/articles/excerpt.d.ts +17 -0
- package/dist/press-kit/articles/index.d.ts +79 -0
- package/dist/press-kit/articles/news-sitemap.d.ts +46 -0
- package/dist/press-kit/articles/processArticleHtml.d.ts +34 -0
- package/dist/press-kit/articles/public-reads.d.ts +26 -0
- package/dist/press-kit/articles/reading-time.d.ts +9 -0
- package/dist/press-kit/articles/routes.d.ts +52 -0
- package/dist/press-kit/articles/server-core.d.ts +461 -0
- package/dist/press-kit/articles/server-ui.d.ts +31 -0
- package/dist/press-kit/articles/types.d.ts +316 -0
- package/dist/press-kit/articles/widget-styles.d.ts +8 -0
- package/dist/reputation/index.js +3 -3
- package/dist/reputation/server.js +2 -2
- package/dist/revalidate/index.js +2 -2
- package/dist/runtime/index.js +5 -4
- package/dist/seo/client.js +6 -6
- package/dist/seo/index.js +7 -7
- package/dist/seo/llms.js +8 -8
- package/dist/seo/register-sitemap-cli.js +1 -1
- package/dist/seo/sitemap.js +6 -6
- package/dist/server/index.js +3 -2
- package/dist/shared/build-entries.d.ts +2 -1
- package/dist/shared/clientApiConfig.d.ts +2 -0
- package/dist/shared/import-specifiers.d.ts +1 -1
- package/dist/shared/index.d.ts +6 -0
- package/dist/shared/index.js +8 -0
- package/dist/shared/version.d.ts +1 -1
- package/dist/signal/index.js +2 -2
- package/dist/sitemap/index.js +6 -6
- package/dist/sync/index.js +6 -6
- package/dist/website/images.js +4 -4
- package/dist/website/index.js +7 -7
- package/dist/website/popups.js +6 -6
- package/dist/{writeLLMsTxt-DGKLYXIW.js → writeLLMsTxt-VKHCM5IS.js} +5 -5
- package/docs/MIGRATING-TO-PRESS-KIT.md +83 -0
- package/docs.json +145 -29
- package/package.json +15 -5
- package/src/articles/README.md +5 -360
- package/src/mcp/README.md +16 -0
- package/src/og/README.md +1 -1
- package/src/runtime/README.md +4 -0
- package/dist/SiteChat-JSHPGAE3.js +0 -6
- package/dist/SiteDesignReporter-L2JBAKKK.js +0 -12
- package/dist/SitemapSync-VV2YSMIW.js +0 -9
- package/dist/article-tables-AXSZOGNW.js +0 -2
package/dist/articles/types.d.ts
CHANGED
|
@@ -1,316 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*/
|
|
4
|
-
import type { PublicationRoutingOptions } from './routes';
|
|
5
|
-
/** Public, approved photo snapshot. Planning briefs and private source metadata stay in Sonor. */
|
|
6
|
-
export interface ArticleEditorialPhoto {
|
|
7
|
-
url: string;
|
|
8
|
-
alt: string;
|
|
9
|
-
caption?: string;
|
|
10
|
-
width: number;
|
|
11
|
-
height: number;
|
|
12
|
-
placement: {
|
|
13
|
-
kind: 'after_intro';
|
|
14
|
-
} | {
|
|
15
|
-
kind: 'after_heading';
|
|
16
|
-
heading: string;
|
|
17
|
-
headingId?: string;
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
export interface Article {
|
|
21
|
-
id: string;
|
|
22
|
-
project_id: string;
|
|
23
|
-
/** URL slug */
|
|
24
|
-
slug: string;
|
|
25
|
-
/** Content */
|
|
26
|
-
title: string;
|
|
27
|
-
subtitle?: string;
|
|
28
|
-
excerpt?: string;
|
|
29
|
-
content: string;
|
|
30
|
-
content_html?: string;
|
|
31
|
-
/** Complete promotional image, including composed share-card text when generated. */
|
|
32
|
-
featured_image?: string;
|
|
33
|
-
featured_image_alt?: string;
|
|
34
|
-
/** Article artwork, separate from the promotional card. Optional on older APIs. */
|
|
35
|
-
editorial_image?: string;
|
|
36
|
-
/** Empty for decorative atmosphere artwork; preserve an explicitly empty value. */
|
|
37
|
-
editorial_image_alt?: string;
|
|
38
|
-
/** Dedicated index frame from Sonor's atmosphere + content-stage renderer. */
|
|
39
|
-
index_image?: string;
|
|
40
|
-
index_image_alt?: string;
|
|
41
|
-
/** Supporting photos placed deliberately in the article body; optional on older APIs. */
|
|
42
|
-
editorial_photos?: ArticleEditorialPhoto[];
|
|
43
|
-
/** Author - can be string or object depending on API response */
|
|
44
|
-
author_id?: string;
|
|
45
|
-
author?: ArticleAuthor | string;
|
|
46
|
-
/** Categorization - can be string slug or object */
|
|
47
|
-
category_id?: string;
|
|
48
|
-
category?: ArticleCategory | string;
|
|
49
|
-
tags?: string[] | ArticleTag[];
|
|
50
|
-
/** SEO */
|
|
51
|
-
meta_title?: string;
|
|
52
|
-
meta_description?: string;
|
|
53
|
-
og_title?: string;
|
|
54
|
-
og_description?: string;
|
|
55
|
-
canonical_url?: string;
|
|
56
|
-
focus_keyphrase?: string;
|
|
57
|
-
keywords?: string;
|
|
58
|
-
/** Rich content */
|
|
59
|
-
table_of_contents?: TocItem[];
|
|
60
|
-
faq_items?: {
|
|
61
|
-
question: string;
|
|
62
|
-
answer: string;
|
|
63
|
-
}[];
|
|
64
|
-
/** E-E-A-T: when present, use as JSON-LD on the post page (Article/FAQ/Person from Signal) */
|
|
65
|
-
schema?: object | object[];
|
|
66
|
-
/** Raw DB column name for the same E-E-A-T JSON-LD — the public API passes
|
|
67
|
-
* it through unmapped. generateAllArticleSchemas reads schema ?? schema_json. */
|
|
68
|
-
schema_json?: object | object[];
|
|
69
|
-
service_callouts?: {
|
|
70
|
-
title: string;
|
|
71
|
-
description?: string;
|
|
72
|
-
url?: string;
|
|
73
|
-
}[];
|
|
74
|
-
/** Publishing */
|
|
75
|
-
status: 'draft' | 'published' | 'scheduled' | 'archived';
|
|
76
|
-
published_at?: string;
|
|
77
|
-
/** Scheduled publish time (blog_posts.scheduled_for) */
|
|
78
|
-
scheduled_for?: string;
|
|
79
|
-
/** Settings */
|
|
80
|
-
allow_comments?: boolean;
|
|
81
|
-
featured?: boolean;
|
|
82
|
-
/** Computed */
|
|
83
|
-
/** Pre-mapped caller data only — the API never returns this name */
|
|
84
|
-
reading_time_minutes?: number;
|
|
85
|
-
/** The field the API actually returns (blog_posts.reading_time) */
|
|
86
|
-
reading_time?: number;
|
|
87
|
-
view_count?: number;
|
|
88
|
-
word_count?: number;
|
|
89
|
-
/** Timestamps */
|
|
90
|
-
created_at: string;
|
|
91
|
-
updated_at: string;
|
|
92
|
-
/** Topic Cluster fields */
|
|
93
|
-
article_type?: 'pillar' | 'support' | 'comparison' | 'faq' | 'glossary' | 'checklist' | 'case-study-adjacent';
|
|
94
|
-
cluster_id?: string;
|
|
95
|
-
cluster_slug?: string;
|
|
96
|
-
cluster_name?: string;
|
|
97
|
-
parent_pillar_id?: string;
|
|
98
|
-
parent_pillar_slug?: string;
|
|
99
|
-
parent_pillar_title?: string;
|
|
100
|
-
/** The pillar's own category slug, for category-segmented article URLs */
|
|
101
|
-
parent_pillar_category?: string;
|
|
102
|
-
search_intent?: 'informational' | 'navigational' | 'commercial' | 'transactional';
|
|
103
|
-
funnel_stage?: 'awareness' | 'consideration' | 'decision' | 'retention';
|
|
104
|
-
relationship_to_pillar?: string;
|
|
105
|
-
publish_priority?: number;
|
|
106
|
-
canonical_role?: 'primary' | 'supporting' | 'overlap-risk';
|
|
107
|
-
ai_summary?: string;
|
|
108
|
-
/** Sibling articles in the same cluster (populated by API) */
|
|
109
|
-
sibling_articles?: Array<{
|
|
110
|
-
slug: string;
|
|
111
|
-
title: string;
|
|
112
|
-
article_type: string;
|
|
113
|
-
category?: string;
|
|
114
|
-
}>;
|
|
115
|
-
}
|
|
116
|
-
export interface ArticleAuthor {
|
|
117
|
-
id: string;
|
|
118
|
-
project_id: string;
|
|
119
|
-
name: string;
|
|
120
|
-
slug: string;
|
|
121
|
-
bio?: string;
|
|
122
|
-
avatar_url?: string;
|
|
123
|
-
/** @deprecated Legacy shape — the API column is website_url. getAuthorSocialLinks handles both. */
|
|
124
|
-
website?: string;
|
|
125
|
-
/** @deprecated Legacy shape — the API columns are linkedin_url/twitter_url/etc. getAuthorSocialLinks handles both. */
|
|
126
|
-
social_links?: {
|
|
127
|
-
twitter?: string;
|
|
128
|
-
linkedin?: string;
|
|
129
|
-
github?: string;
|
|
130
|
-
};
|
|
131
|
-
is_active: boolean;
|
|
132
|
-
/** E-E-A-T / Author Page fields */
|
|
133
|
-
title?: string;
|
|
134
|
-
company?: string;
|
|
135
|
-
short_bio?: string;
|
|
136
|
-
credentials?: string[];
|
|
137
|
-
expertise_areas?: string[];
|
|
138
|
-
years_experience?: number;
|
|
139
|
-
linkedin_url?: string;
|
|
140
|
-
twitter_url?: string;
|
|
141
|
-
website_url?: string;
|
|
142
|
-
author_page_url?: string;
|
|
143
|
-
/**
|
|
144
|
-
* schema.org `@id` for this person, shared by every site that describes
|
|
145
|
-
* them (blog_authors.entity_id), e.g. `https://example.com/#person`.
|
|
146
|
-
* Unset: the kit uses `<author page URL>#person`.
|
|
147
|
-
*/
|
|
148
|
-
entity_id?: string | null;
|
|
149
|
-
same_as?: string[];
|
|
150
|
-
knows_about?: string[];
|
|
151
|
-
is_subject_matter_expert?: boolean;
|
|
152
|
-
has_verified_credentials?: boolean;
|
|
153
|
-
featured_publications?: string[];
|
|
154
|
-
awards?: string[];
|
|
155
|
-
post_count?: number;
|
|
156
|
-
created_at?: string;
|
|
157
|
-
updated_at?: string;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* The public /categories endpoint guarantees only name/slug/post_count
|
|
161
|
-
* (getCategories maps exactly those keys). id/project_id exist in
|
|
162
|
-
* blog_categories but are stripped from the public response — do not
|
|
163
|
-
* re-promote them to required.
|
|
164
|
-
*/
|
|
165
|
-
export interface ArticleCategory {
|
|
166
|
-
id?: string;
|
|
167
|
-
project_id?: string;
|
|
168
|
-
name: string;
|
|
169
|
-
slug: string;
|
|
170
|
-
description?: string;
|
|
171
|
-
parent_id?: string;
|
|
172
|
-
post_count?: number;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* The public /tags endpoint returns only name/slug/post_count. Tags are
|
|
176
|
-
* synthesized from blog_posts.tags strings — no id/project_id can ever
|
|
177
|
-
* exist, on any server version.
|
|
178
|
-
*/
|
|
179
|
-
export interface ArticleTag {
|
|
180
|
-
name: string;
|
|
181
|
-
slug: string;
|
|
182
|
-
post_count?: number;
|
|
183
|
-
}
|
|
184
|
-
export interface TopicCluster {
|
|
185
|
-
id: string;
|
|
186
|
-
cluster_name: string;
|
|
187
|
-
cluster_slug: string;
|
|
188
|
-
core_topic: string;
|
|
189
|
-
primary_entity?: string;
|
|
190
|
-
industry?: string;
|
|
191
|
-
geo_target?: string;
|
|
192
|
-
commercial_goal?: string;
|
|
193
|
-
pillar_post_id?: string;
|
|
194
|
-
target_service_page?: string;
|
|
195
|
-
article_count: number;
|
|
196
|
-
pillar: Article | null;
|
|
197
|
-
supports: Article[];
|
|
198
|
-
interlink_map: Array<{
|
|
199
|
-
from: string;
|
|
200
|
-
to: string;
|
|
201
|
-
anchor: string;
|
|
202
|
-
}>;
|
|
203
|
-
created_at?: string;
|
|
204
|
-
}
|
|
205
|
-
export interface ClusterNavigation {
|
|
206
|
-
cluster_name: string;
|
|
207
|
-
cluster_slug: string;
|
|
208
|
-
/** category = the article's own category slug, for category-segmented article URLs */
|
|
209
|
-
pillar: {
|
|
210
|
-
slug: string;
|
|
211
|
-
title: string;
|
|
212
|
-
category?: string;
|
|
213
|
-
} | null;
|
|
214
|
-
siblings: Array<{
|
|
215
|
-
slug: string;
|
|
216
|
-
title: string;
|
|
217
|
-
article_type: string;
|
|
218
|
-
category?: string;
|
|
219
|
-
}>;
|
|
220
|
-
is_pillar: boolean;
|
|
221
|
-
}
|
|
222
|
-
export interface ArticleListOptions {
|
|
223
|
-
projectId: string;
|
|
224
|
-
/** Pagination */
|
|
225
|
-
page?: number;
|
|
226
|
-
perPage?: number;
|
|
227
|
-
/** Filters */
|
|
228
|
-
category?: string;
|
|
229
|
-
tag?: string;
|
|
230
|
-
/** Author slug (preferred) or display name; slug filtering requires the current Sonor API */
|
|
231
|
-
author?: string;
|
|
232
|
-
search?: string;
|
|
233
|
-
featured?: boolean;
|
|
234
|
-
cluster?: string;
|
|
235
|
-
/** Sorting */
|
|
236
|
-
orderBy?: 'published_at' | 'title' | 'view_count';
|
|
237
|
-
order?: 'asc' | 'desc';
|
|
238
|
-
}
|
|
239
|
-
export interface ArticleListResult {
|
|
240
|
-
posts: Article[];
|
|
241
|
-
pagination: {
|
|
242
|
-
page: number;
|
|
243
|
-
perPage: number;
|
|
244
|
-
total: number;
|
|
245
|
-
totalPages: number;
|
|
246
|
-
hasNext: boolean;
|
|
247
|
-
hasPrev: boolean;
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
export interface ArticleProps {
|
|
251
|
-
projectId: string;
|
|
252
|
-
slug: string;
|
|
253
|
-
children?: (props: ArticleRenderProps) => React.ReactNode;
|
|
254
|
-
}
|
|
255
|
-
export interface ArticleRenderProps {
|
|
256
|
-
post: Article;
|
|
257
|
-
content: string;
|
|
258
|
-
relatedPosts?: Article[];
|
|
259
|
-
tableOfContents?: TocItem[];
|
|
260
|
-
}
|
|
261
|
-
export interface ArticleListProps {
|
|
262
|
-
projectId: string;
|
|
263
|
-
options?: Omit<ArticleListOptions, 'projectId'>;
|
|
264
|
-
children?: (props: ArticleListRenderProps) => React.ReactNode;
|
|
265
|
-
}
|
|
266
|
-
export interface ArticleListRenderProps {
|
|
267
|
-
posts: Article[];
|
|
268
|
-
pagination: ArticleListResult['pagination'];
|
|
269
|
-
categories: ArticleCategory[];
|
|
270
|
-
tags: ArticleTag[];
|
|
271
|
-
}
|
|
272
|
-
export interface AuthorCardProps {
|
|
273
|
-
author: ArticleAuthor;
|
|
274
|
-
showBio?: boolean;
|
|
275
|
-
showSocial?: boolean;
|
|
276
|
-
showTrustBlock?: boolean;
|
|
277
|
-
className?: string;
|
|
278
|
-
}
|
|
279
|
-
export interface AuthorPageProps {
|
|
280
|
-
author: ArticleAuthor;
|
|
281
|
-
posts: Article[];
|
|
282
|
-
basePath?: string;
|
|
283
|
-
/**
|
|
284
|
-
* AuthorPage is exported from the client-stamped `articles` barrel, so from
|
|
285
|
-
* a Server Component only serializable options survive: a function
|
|
286
|
-
* `authorPages` / `postPath` fails at render. For a custom author route,
|
|
287
|
-
* render `generateAuthorSchema` on the server and pass `jsonLd={false}`.
|
|
288
|
-
*/
|
|
289
|
-
routing?: PublicationRoutingOptions;
|
|
290
|
-
/** Absolute site origin, so the ProfilePage JSON-LD carries absolute URLs and a Person @id. */
|
|
291
|
-
siteUrl?: string;
|
|
292
|
-
/** Fallback employer name for the Person when the author row has no company. */
|
|
293
|
-
siteName?: string;
|
|
294
|
-
/**
|
|
295
|
-
* Emit the ProfilePage JSON-LD (default true). Pass false only when the
|
|
296
|
-
* page renders generateAuthorSchema itself, so it is never emitted twice.
|
|
297
|
-
*/
|
|
298
|
-
jsonLd?: boolean;
|
|
299
|
-
}
|
|
300
|
-
export interface RelatedPostsProps {
|
|
301
|
-
projectId: string;
|
|
302
|
-
postId: string;
|
|
303
|
-
limit?: number;
|
|
304
|
-
className?: string;
|
|
305
|
-
}
|
|
306
|
-
export interface TableOfContentsProps {
|
|
307
|
-
content: string;
|
|
308
|
-
maxDepth?: number;
|
|
309
|
-
className?: string;
|
|
310
|
-
}
|
|
311
|
-
export interface TocItem {
|
|
312
|
-
id: string;
|
|
313
|
-
text: string;
|
|
314
|
-
level: number;
|
|
315
|
-
children?: TocItem[];
|
|
316
|
-
}
|
|
1
|
+
/** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
|
|
2
|
+
export * from '../press-kit/articles/types';
|
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* Shared sidebar-widget chrome, extracted from PublicationSidebar so the client-side
|
|
4
|
-
* NewsletterWidget (its own module — it needs hooks, and PublicationSidebar is also
|
|
5
|
-
* bundled into the un-stamped server entry articles/server-ui) can reuse it.
|
|
6
|
-
*/
|
|
7
|
-
export declare const widgetStyle: React.CSSProperties;
|
|
8
|
-
export declare const widgetTitleStyle: React.CSSProperties;
|
|
1
|
+
/** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
|
|
2
|
+
export * from '../press-kit/articles/widget-styles';
|
package/dist/chat/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { ChatWidget, DEFAULT_LAUNCHER_OFFSET_BOTTOM, EchoChat, chatLauncherStyles, isChatEnabled } from '../chunk-
|
|
3
|
-
export { SiteChat } from '../chunk-
|
|
2
|
+
export { ChatWidget, DEFAULT_LAUNCHER_OFFSET_BOTTOM, EchoChat, chatLauncherStyles, isChatEnabled } from '../chunk-HND6BDXC.js';
|
|
3
|
+
export { SiteChat } from '../chunk-E3UR37RX.js';
|
|
4
4
|
import '../chunk-6T6CQVNL.js';
|
|
5
5
|
import '../chunk-JE4A5S4F.js';
|
|
6
6
|
import '../chunk-27FISYK4.js';
|
|
7
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-MQ4REMTH.js';
|
|
8
8
|
import '../chunk-Q6E4OPGG.js';
|
|
9
9
|
import '../chunk-5ROTTMBL.js';
|
|
10
10
|
import '../chunk-C2FZBUSS.js';
|
|
@@ -15,12 +15,12 @@ import '../chunk-S22FSH7C.js';
|
|
|
15
15
|
import '../chunk-L2V5PUFN.js';
|
|
16
16
|
import '../chunk-5TM3WPCI.js';
|
|
17
17
|
import '../chunk-GJWI74ZZ.js';
|
|
18
|
-
import '../chunk-
|
|
18
|
+
import '../chunk-JO76F5WP.js';
|
|
19
19
|
import '../chunk-EKBEOXTH.js';
|
|
20
|
-
import '../chunk-
|
|
21
|
-
import '../chunk-
|
|
22
|
-
import '../chunk-
|
|
23
|
-
import '../chunk-
|
|
20
|
+
import '../chunk-OIWFXUVD.js';
|
|
21
|
+
import '../chunk-C4AFNZT2.js';
|
|
22
|
+
import '../chunk-W7OPEMGJ.js';
|
|
23
|
+
import '../chunk-C2UROFGZ.js';
|
|
24
24
|
import '../chunk-PKBMQBKP.js';
|
|
25
25
|
|
|
26
26
|
// src/chat/echo-config.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { generateLLMsTxt, generateLLMsFullTxt, appendAgentAccessSection } from './chunk-
|
|
1
|
+
import { generateLLMsTxt, generateLLMsFullTxt, appendAgentAccessSection } from './chunk-D6ZIQMHB.js';
|
|
2
2
|
import { createHash } from 'crypto';
|
|
3
3
|
import { existsSync, readFileSync } from 'fs';
|
|
4
4
|
import { join } from 'path';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { detectTimezone, releaseSlotHold, fetchBookingTypeDetails, fetchBookingTypes, fetchAvailability, createSlotHold, createBooking, formatDuration, formatDate, formatTime, prepareMeeting } from './chunk-
|
|
3
|
-
import { readPublishedApiConfig, DEFAULT_SONOR_API_URL } from './chunk-
|
|
2
|
+
import { detectTimezone, releaseSlotHold, fetchBookingTypeDetails, fetchBookingTypes, fetchAvailability, createSlotHold, createBooking, formatDuration, formatDate, formatTime, prepareMeeting } from './chunk-WBUG7XRL.js';
|
|
3
|
+
import { readPublishedApiConfig, DEFAULT_SONOR_API_URL } from './chunk-W7OPEMGJ.js';
|
|
4
4
|
import { useState, useRef, useMemo, useCallback, useEffect, useId } from 'react';
|
|
5
5
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -6,7 +6,7 @@ import { DEFAULT_HONEYPOT_FIELD } from './chunk-NJCTQH2P.js';
|
|
|
6
6
|
import React, { useRef, useEffect, useState, useMemo, useCallback } from 'react';
|
|
7
7
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
8
8
|
|
|
9
|
-
var loadInteractiveForm = () => import('./ManagedForm-
|
|
9
|
+
var loadInteractiveForm = () => import('./ManagedForm-FOQZ2IYG.js').then((m) => m.ManagedForm);
|
|
10
10
|
var REPLAY_WAIT_MS = 8e3;
|
|
11
11
|
function FormEnhancer({
|
|
12
12
|
formId,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { reviewPhotoUrl } from './chunk-CAT235HY.js';
|
|
3
|
-
import { fetchReviews } from './chunk-
|
|
3
|
+
import { fetchReviews } from './chunk-BSQP6PRA.js';
|
|
4
4
|
import { useState, useEffect, useCallback } from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createPublicationRoutes } from './chunk-
|
|
1
|
+
import { createPublicationRoutes } from './chunk-4K735O3J.js';
|
|
2
2
|
import { resolveTrailingSlash, applyTrailingSlash } from './chunk-YVKRYQRG.js';
|
|
3
3
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -323,7 +323,7 @@ function ClusterNavigation({
|
|
|
323
323
|
] });
|
|
324
324
|
}
|
|
325
325
|
|
|
326
|
-
// src/articles/author-social.ts
|
|
326
|
+
// packages/press-kit/src/articles/author-social.ts
|
|
327
327
|
var withPrefix = (value, base) => value.startsWith("http") ? value : `${base}${value}`;
|
|
328
328
|
function getAuthorSocialLinks(author) {
|
|
329
329
|
const links = [];
|
|
@@ -338,7 +338,7 @@ function getAuthorSocialLinks(author) {
|
|
|
338
338
|
return links;
|
|
339
339
|
}
|
|
340
340
|
|
|
341
|
-
// src/articles/reading-time.ts
|
|
341
|
+
// packages/press-kit/src/articles/reading-time.ts
|
|
342
342
|
function readingTimeMinutes(post) {
|
|
343
343
|
const value = post.reading_time_minutes ?? post.reading_time;
|
|
344
344
|
return typeof value === "number" && value > 0 ? value : null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { writeLLMsTxtToPublic } from './chunk-
|
|
1
|
+
import { writeLLMsTxtToPublic } from './chunk-D6ZIQMHB.js';
|
|
2
2
|
import { getSiteConfig } from './chunk-Z22QVHT4.js';
|
|
3
3
|
import { buildFetch } from './chunk-UAYAJPEP.js';
|
|
4
4
|
import { findAppDirForDiscovery } from './chunk-ZEGVKVD5.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { getLLMsData, getOptimizedLLMsTxt } from './chunk-
|
|
2
|
-
import { linkClassificationHost } from './chunk-
|
|
3
|
-
import { resolveArticleUrl } from './chunk-
|
|
1
|
+
import { getLLMsData, getOptimizedLLMsTxt } from './chunk-XA7Q2VQA.js';
|
|
2
|
+
import { linkClassificationHost } from './chunk-5D7ZISUP.js';
|
|
3
|
+
import { resolveArticleUrl } from './chunk-4K735O3J.js';
|
|
4
4
|
import { freshFetch } from './chunk-UAYAJPEP.js';
|
|
5
5
|
import { LLM_GEO_CONTRACT_VERSION, sanitizePrimaryLanguageTag, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary } from './chunk-NZ4RXN3G.js';
|
|
6
6
|
import { resolveTrailingSlash, applyTrailingSlash } from './chunk-YVKRYQRG.js';
|
|
@@ -26,7 +26,7 @@ function useFieldControls(fields) {
|
|
|
26
26
|
}
|
|
27
27
|
if (needsFile && !requested.current.file) {
|
|
28
28
|
requested.current.file = true;
|
|
29
|
-
import('./FileField-
|
|
29
|
+
import('./FileField-UNGSNGJ5.js').then((m) => {
|
|
30
30
|
if (!cancelled) setControls((prev) => ({ ...prev, File: m.FileField }));
|
|
31
31
|
}).catch(() => {
|
|
32
32
|
requested.current.file = false;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { DEFAULT_WIDGET_Z_INDEX } from './chunk-27FISYK4.js';
|
|
3
|
-
import { resolveAnalyticsTarget } from './chunk-
|
|
3
|
+
import { resolveAnalyticsTarget } from './chunk-JO76F5WP.js';
|
|
4
4
|
import { useState, useEffect } from 'react';
|
|
5
5
|
import ReactDOM from 'react-dom';
|
|
6
6
|
import dynamic from 'next/dynamic';
|
|
7
7
|
import { jsx } from 'react/jsx-runtime';
|
|
8
8
|
|
|
9
9
|
var LazyChatWidget = dynamic(
|
|
10
|
-
() => import('./ChatWidget-
|
|
10
|
+
() => import('./ChatWidget-D2X445PO.js').then((m) => ({ default: m.ChatWidget })),
|
|
11
11
|
{ ssr: false }
|
|
12
12
|
);
|
|
13
13
|
function SiteChat(props) {
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { registerAnalyticsDispatcher } from './chunk-LCDVPAMR.js';
|
|
3
3
|
import { getOrCreateVisitorId, getOrCreateSessionId } from './chunk-ZKADJNR2.js';
|
|
4
4
|
import { onPageLeave } from './chunk-L2V5PUFN.js';
|
|
5
|
-
import { resolveAnalyticsTarget } from './chunk-
|
|
6
|
-
import { sonorFetch, sonorBeacon } from './chunk-
|
|
5
|
+
import { resolveAnalyticsTarget } from './chunk-JO76F5WP.js';
|
|
6
|
+
import { sonorFetch, sonorBeacon } from './chunk-OIWFXUVD.js';
|
|
7
7
|
import { createContext, useRef, useEffect, useState, useMemo, useCallback, useContext } from 'react';
|
|
8
8
|
import { usePathname } from 'next/navigation';
|
|
9
9
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { secretsMatch, readCappedBody } from './chunk-XTRZGXB2.js';
|
|
2
|
-
import { SITE_KIT_VERSION } from './chunk-
|
|
2
|
+
import { SITE_KIT_VERSION } from './chunk-C2UROFGZ.js';
|
|
3
3
|
|
|
4
4
|
// src/llms/revalidate.ts
|
|
5
5
|
function createLlmsRevalidateHandler(secret, options) {
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { DEFAULT_WIDGET_Z_INDEX } from './chunk-27FISYK4.js';
|
|
3
3
|
import { readAnalyticsIdentity } from './chunk-5ROTTMBL.js';
|
|
4
4
|
import { getOrCreateVisitorId } from './chunk-ZKADJNR2.js';
|
|
5
|
-
import { resolveAnalyticsTarget } from './chunk-
|
|
6
|
-
import { sonorFetch } from './chunk-
|
|
5
|
+
import { resolveAnalyticsTarget } from './chunk-JO76F5WP.js';
|
|
6
|
+
import { sonorFetch } from './chunk-OIWFXUVD.js';
|
|
7
7
|
import { useState, useEffect, useCallback, useRef } from 'react';
|
|
8
8
|
import ReactDOM from 'react-dom';
|
|
9
9
|
import dynamic from 'next/dynamic';
|
|
@@ -161,7 +161,7 @@ function activatePopup(active, id, popups) {
|
|
|
161
161
|
return [...active, id];
|
|
162
162
|
}
|
|
163
163
|
var LazyBlocksPopup = dynamic(
|
|
164
|
-
() => import('./BlocksPopup-
|
|
164
|
+
() => import('./BlocksPopup-3RPN6YVJ.js').then((m) => ({ default: m.BlocksPopup })),
|
|
165
165
|
{ ssr: false }
|
|
166
166
|
);
|
|
167
167
|
function SitePopups(props) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import { VISUAL_VIEWPORT_GAP_PROPERTY } from './chunk-6T6CQVNL.js';
|
|
3
3
|
import { GlassStyles } from './chunk-JE4A5S4F.js';
|
|
4
4
|
import { DEFAULT_WIDGET_Z_INDEX } from './chunk-27FISYK4.js';
|
|
5
|
-
import { useForm } from './chunk-
|
|
5
|
+
import { useForm } from './chunk-MQ4REMTH.js';
|
|
6
6
|
import { parseColor, relativeLuminance, DARK_LUMINANCE, contrastRatio } from './chunk-S22FSH7C.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { sonorFetch } from './chunk-OIWFXUVD.js';
|
|
8
|
+
import { readPublishedApiConfig } from './chunk-W7OPEMGJ.js';
|
|
9
9
|
import { useState, useEffect, useRef, useLayoutEffect, useCallback, Fragment as Fragment$1 } from 'react';
|
|
10
10
|
import { lexer } from 'marked';
|
|
11
11
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { publishSiteCredential } from './chunk-U7Y3QG3A.js';
|
|
2
|
+
|
|
3
|
+
// src/client/SiteKitCredential.tsx
|
|
4
|
+
function SiteKitCredential({
|
|
5
|
+
apiKey,
|
|
6
|
+
apiUrl,
|
|
7
|
+
site,
|
|
8
|
+
debug
|
|
9
|
+
}) {
|
|
10
|
+
publishSiteCredential({ apiKey, apiUrl, site, debug });
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { SiteKitCredential };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FRAME_READY_MESSAGE } from './chunk-EKBEOXTH.js';
|
|
2
|
-
import { readPublishedApiConfig, DEFAULT_SONOR_API_URL } from './chunk-
|
|
2
|
+
import { readPublishedApiConfig, DEFAULT_SONOR_API_URL } from './chunk-W7OPEMGJ.js';
|
|
3
3
|
|
|
4
4
|
// src/shared/frame.ts
|
|
5
5
|
function isFramed() {
|