lynkow 1.31.13 → 1.31.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -609,6 +609,12 @@ const lynkow = createClient({ siteId: 'your-site-id' })
609
609
  // Manually re-initialize after loading dynamic content
610
610
  lynkow.enhancements.init()
611
611
 
612
+ // Skip code-block CSS + copy button (use when you already render code blocks
613
+ // with your own highlighter, e.g. Shiki / Prism / a custom design system).
614
+ // Generic enhancements (text-align preservation, script activation, widget
615
+ // resize) remain active.
616
+ lynkow.enhancements.init({ codeBlocks: false })
617
+
612
618
  // Check if initialized
613
619
  lynkow.enhancements.isInitialized()
614
620
 
@@ -699,6 +705,40 @@ The SDK automatically:
699
705
  - Binds click handlers to copy buttons
700
706
  - Shows visual feedback when code is copied
701
707
 
708
+ #### Theming
709
+
710
+ Code-block styles are driven by CSS custom properties. Override any of them in your own stylesheet (no `!important` required):
711
+
712
+ | Variable | Default (dark) | Default (light) | Purpose |
713
+ |---|---|---|---|
714
+ | `--lynkow-code-bg` | `#1e1e1e` | `#f5f5f5` | Background of `.code-block`, header, `<pre>` |
715
+ | `--lynkow-code-fg` | `#e4e4e4` | `#1a1a1a` | Code text color |
716
+ | `--lynkow-code-border` | `#333` | `#e0e0e0` | Header bottom border |
717
+ | `--lynkow-code-muted-fg` | `#888` | `#666` | Language label + idle copy button |
718
+ | `--lynkow-code-copy-fg-hover` | `#fff` | `#1a1a1a` | Copy button hover color |
719
+ | `--lynkow-code-copy-bg-hover` | `rgba(255, 255, 255, 0.1)` | `rgba(0, 0, 0, 0.05)` | Copy button hover background |
720
+
721
+ The light variant is triggered by any of these conventions on `<html>`, `<body>`, or the `.code-block` element:
722
+ - Class: `.light`
723
+ - Attribute: `data-theme="light"`, `data-mode="light"`, `data-color-scheme="light"`
724
+
725
+ `prefers-color-scheme: light` is kept as an OS-level fallback that only applies when no explicit dark signal (`.dark`, `data-theme="dark"`, `data-mode="dark"`, `data-color-scheme="dark"`) is set on `<html>`.
726
+
727
+ Override example:
728
+
729
+ ```css
730
+ :root.dark {
731
+ --lynkow-code-bg: #0a0a0a;
732
+ --lynkow-code-fg: #fafafa;
733
+ }
734
+ ```
735
+
736
+ If you render code blocks with your own highlighter and want to skip the SDK styling and copy button entirely, opt out at init time:
737
+
738
+ ```typescript
739
+ lynkow.enhancements.init({ codeBlocks: false })
740
+ ```
741
+
702
742
  ## Events
703
743
 
704
744
  Subscribe to SDK events for reactive updates.
package/dist/index.d.mts CHANGED
@@ -5831,10 +5831,27 @@ declare class BrandingService extends BaseService {
5831
5831
  * - Copy button for code blocks
5832
5832
  * - (Future: lightbox for images, table of contents, etc.)
5833
5833
  */
5834
+ /**
5835
+ * Options accepted by {@link EnhancementsService.init}.
5836
+ */
5837
+ interface EnhancementsInitOptions {
5838
+ /**
5839
+ * Disable the code-block CSS injection AND the copy-to-clipboard button binding
5840
+ * (initial scan + MutationObserver re-binds). Use when you have your own code-block
5841
+ * rendering pipeline (server-side Shiki, client-side Prism, custom design system)
5842
+ * and the SDK styling would conflict.
5843
+ *
5844
+ * The generic enhancements (text-align preservation, script activation, widget
5845
+ * iframe resize) remain active regardless of this flag.
5846
+ *
5847
+ * Default: `true` (code-block styles + copy button are injected).
5848
+ */
5849
+ codeBlocks?: boolean;
5850
+ }
5834
5851
  /**
5835
5852
  * Service for adding interactive features to content rendered from the Lynkow API.
5836
5853
  *
5837
- * Accessible via `lynkow.enhancements`. This is a **browser-only** service -- all
5854
+ * Accessible via `lynkow.enhancements`. This is a **browser-only** service: all
5838
5855
  * methods are no-ops on the server. Currently provides:
5839
5856
  * - **Copy button** for code blocks (elements with `[data-copy-code]` attribute)
5840
5857
  * - **Script activation** for inline scripts injected via `dangerouslySetInnerHTML`
@@ -5845,13 +5862,31 @@ declare class BrandingService extends BaseService {
5845
5862
  * applies enhancements, making it compatible with SPA frameworks like React/Next.js.
5846
5863
  * Script clones are appended to `<head>` (not inline) to avoid React DOM reconciliation issues.
5847
5864
  *
5865
+ * ## Code-block theming
5866
+ *
5867
+ * Code-block CSS is driven by CSS custom properties (`--lynkow-code-bg`,
5868
+ * `--lynkow-code-fg`, `--lynkow-code-border`, `--lynkow-code-muted-fg`,
5869
+ * `--lynkow-code-copy-fg-hover`, `--lynkow-code-copy-bg-hover`). The light
5870
+ * variant is triggered by any of the common theming conventions on `<html>`,
5871
+ * `<body>` or the `.code-block` element itself: `.light` class,
5872
+ * `data-theme~="light"`, `data-mode~="light"`, `data-color-scheme~="light"`.
5873
+ * `prefers-color-scheme: light` is kept as an OS-level fallback that only
5874
+ * applies when no explicit dark signal is present on `<html>`. Override any
5875
+ * variable in your own stylesheet to customise without `!important`.
5876
+ *
5877
+ * Pass `init({ codeBlocks: false })` if you handle code-block rendering
5878
+ * yourself; the SDK will skip code-block CSS injection and copy-button binding.
5879
+ *
5848
5880
  * @example
5849
5881
  * ```typescript
5850
5882
  * const lynkow = createClient({ siteId: 'your-site-id' })
5851
5883
  *
5852
- * // Enhancements are automatically initialized by the client
5853
- * // Or manually reinitialize after loading dynamic content:
5884
+ * // Enhancements are automatically initialized by the client.
5885
+ * // Manually reinitialize after loading dynamic content:
5854
5886
  * lynkow.enhancements.init()
5887
+ *
5888
+ * // Skip code-block styling when rendering with your own highlighter:
5889
+ * lynkow.enhancements.init({ codeBlocks: false })
5855
5890
  * ```
5856
5891
  */
5857
5892
  declare class EnhancementsService {
@@ -5860,9 +5895,15 @@ declare class EnhancementsService {
5860
5895
  private pendingFrame;
5861
5896
  private handleWidgetResize;
5862
5897
  /**
5863
- * Inject styles into document head
5898
+ * Inject the generic enhancement styles (text-align preservation, etc.)
5899
+ * into document head. Idempotent.
5900
+ */
5901
+ private injectGenericStyles;
5902
+ /**
5903
+ * Inject the code-block styles (variable-based theming + copy button styling)
5904
+ * into document head. Idempotent.
5864
5905
  */
5865
- private injectStyles;
5906
+ private injectCodeBlockStyles;
5866
5907
  /**
5867
5908
  * Handle copy button click
5868
5909
  */
@@ -5887,21 +5928,31 @@ declare class EnhancementsService {
5887
5928
  * Initializes content enhancements: injects CSS styles, binds copy-to-clipboard
5888
5929
  * handlers on code blocks, activates inline scripts, starts the widget iframe
5889
5930
  * resize listener, and sets up a `MutationObserver` to automatically enhance
5890
- * newly added DOM content. Idempotent -- calling multiple times has no effect
5931
+ * newly added DOM content. Idempotent: calling multiple times has no effect
5891
5932
  * after the first initialization. No-op on server.
5892
5933
  *
5893
5934
  * Call this manually if you need to re-initialize after the client is created
5894
5935
  * (e.g. after dynamically loading content outside the initial render).
5895
5936
  *
5937
+ * @param options - Optional behavior toggles. See {@link EnhancementsInitOptions}.
5938
+ * Pass `{ codeBlocks: false }` to skip code-block CSS injection and the copy
5939
+ * button binding (useful when your renderer already handles code blocks).
5940
+ *
5896
5941
  * @example
5897
5942
  * ```typescript
5898
- * // Reinitialize enhancements after dynamically loading new content
5943
+ * // Default: inject everything.
5944
+ * lynkow.enhancements.init()
5945
+ *
5946
+ * // Reinitialize enhancements after dynamically loading new content.
5899
5947
  * const html = await fetchArticleContent()
5900
5948
  * document.getElementById('article').innerHTML = html
5901
5949
  * lynkow.enhancements.init()
5950
+ *
5951
+ * // Opt out of code-block styling when using your own highlighter (Shiki, Prism, ...).
5952
+ * lynkow.enhancements.init({ codeBlocks: false })
5902
5953
  * ```
5903
5954
  */
5904
- init(): void;
5955
+ init(options?: EnhancementsInitOptions): void;
5905
5956
  /**
5906
5957
  * Check whether the enhancements service has been initialized for the
5907
5958
  * current page. Returns `false` on the server and after a call to
@@ -6619,4 +6670,4 @@ declare function renderJsonLdGraph(nodes: object[] | null | undefined): string;
6619
6670
  */
6620
6671
  declare function mergeIntoGraph(server: object[] | null | undefined, custom: object[] | null | undefined): object[];
6621
6672
 
6622
- export { type Alternate, AnalyticsService, type ApiErrorDetail, type Author, type BaseRequestOptions, BlocksService, BrandingService, type CategoriesListResponse, CategoriesService, type Category, type CategoryDetail, type CategoryDetailResponse, type CategoryOptions, type CategoryResolveResponse, type CategoryTreeNode, type CategoryTreeResponse, type CategoryWithCount, type Client, type ClientConfig, type ConsentCategories, type ConsentLogResponse, ConsentService, type Content, type ContentBody, type ContentResolveResponse, type ContentSchema, type ContentSummary, type ContentsFilters, type ContentsListResponse, ContentsService, type CookieCategory, type CookieConfig, type CookiePreferences, type CookieTexts, CookiesService, EnhancementsService, type ErrorCode, type EventData, type EventName, type Form, type FormField, type FormFieldOption, type FormFieldType, type FormFieldValidation, type FormSettings, type FormSubmitData, type FormSubmitResponse, FormsService, type GlobalBlock, type GlobalBlockResponse, type ImageVariants, type JsonLdGraphConfig, type JsonLdNode, type JsonLdNodeSource, type LegalDocument, LegalService, type LynkowClient, type LynkowConfig, LynkowError, type LynkowEvents, MediaHelperService, type Page, type PageSeo, type PageSummary, type PagesListResponse, PagesService, type PageviewData, type PaginatedResponse, type PaginationMeta, type PaginationOptions, type Path, type PathsListResponse, PathsService, type Redirect, type ResolveResponse, type Review, type ReviewResponse, type ReviewSettings, type ReviewSubmitData, type ReviewSubmitResponse, type ReviewsFilters, type ReviewsListResponse, ReviewsService, type SchemaField, type SchemaFieldOption, type SchemaFieldType, type SchemaFieldValidation, type SearchConfig, type SearchHit, type SearchOptions, type SearchProfilePublic, type SearchResponse, SearchService, SeoService, type SiteConfig, type SiteConfigResponse, SiteService, type SortOptions, type SrcsetOptions, type SubmitOptions, type Tag, type TagsListResponse, TagsService, type TipTapMark, type TipTapNode, type TransformOptions, browserOnly, browserOnlyAsync, createClient, createLynkowClient, detectSiteTheme, isBrowser, isCategoryResolve, isContentResolve, isLynkowError, isServer, mergeIntoGraph, onSiteThemeChange, renderJsonLdGraph };
6673
+ export { type Alternate, AnalyticsService, type ApiErrorDetail, type Author, type BaseRequestOptions, BlocksService, BrandingService, type CategoriesListResponse, CategoriesService, type Category, type CategoryDetail, type CategoryDetailResponse, type CategoryOptions, type CategoryResolveResponse, type CategoryTreeNode, type CategoryTreeResponse, type CategoryWithCount, type Client, type ClientConfig, type ConsentCategories, type ConsentLogResponse, ConsentService, type Content, type ContentBody, type ContentResolveResponse, type ContentSchema, type ContentSummary, type ContentsFilters, type ContentsListResponse, ContentsService, type CookieCategory, type CookieConfig, type CookiePreferences, type CookieTexts, CookiesService, type EnhancementsInitOptions, EnhancementsService, type ErrorCode, type EventData, type EventName, type Form, type FormField, type FormFieldOption, type FormFieldType, type FormFieldValidation, type FormSettings, type FormSubmitData, type FormSubmitResponse, FormsService, type GlobalBlock, type GlobalBlockResponse, type ImageVariants, type JsonLdGraphConfig, type JsonLdNode, type JsonLdNodeSource, type LegalDocument, LegalService, type LynkowClient, type LynkowConfig, LynkowError, type LynkowEvents, MediaHelperService, type Page, type PageSeo, type PageSummary, type PagesListResponse, PagesService, type PageviewData, type PaginatedResponse, type PaginationMeta, type PaginationOptions, type Path, type PathsListResponse, PathsService, type Redirect, type ResolveResponse, type Review, type ReviewResponse, type ReviewSettings, type ReviewSubmitData, type ReviewSubmitResponse, type ReviewsFilters, type ReviewsListResponse, ReviewsService, type SchemaField, type SchemaFieldOption, type SchemaFieldType, type SchemaFieldValidation, type SearchConfig, type SearchHit, type SearchOptions, type SearchProfilePublic, type SearchResponse, SearchService, SeoService, type SiteConfig, type SiteConfigResponse, SiteService, type SortOptions, type SrcsetOptions, type SubmitOptions, type Tag, type TagsListResponse, TagsService, type TipTapMark, type TipTapNode, type TransformOptions, browserOnly, browserOnlyAsync, createClient, createLynkowClient, detectSiteTheme, isBrowser, isCategoryResolve, isContentResolve, isLynkowError, isServer, mergeIntoGraph, onSiteThemeChange, renderJsonLdGraph };
package/dist/index.d.ts CHANGED
@@ -5831,10 +5831,27 @@ declare class BrandingService extends BaseService {
5831
5831
  * - Copy button for code blocks
5832
5832
  * - (Future: lightbox for images, table of contents, etc.)
5833
5833
  */
5834
+ /**
5835
+ * Options accepted by {@link EnhancementsService.init}.
5836
+ */
5837
+ interface EnhancementsInitOptions {
5838
+ /**
5839
+ * Disable the code-block CSS injection AND the copy-to-clipboard button binding
5840
+ * (initial scan + MutationObserver re-binds). Use when you have your own code-block
5841
+ * rendering pipeline (server-side Shiki, client-side Prism, custom design system)
5842
+ * and the SDK styling would conflict.
5843
+ *
5844
+ * The generic enhancements (text-align preservation, script activation, widget
5845
+ * iframe resize) remain active regardless of this flag.
5846
+ *
5847
+ * Default: `true` (code-block styles + copy button are injected).
5848
+ */
5849
+ codeBlocks?: boolean;
5850
+ }
5834
5851
  /**
5835
5852
  * Service for adding interactive features to content rendered from the Lynkow API.
5836
5853
  *
5837
- * Accessible via `lynkow.enhancements`. This is a **browser-only** service -- all
5854
+ * Accessible via `lynkow.enhancements`. This is a **browser-only** service: all
5838
5855
  * methods are no-ops on the server. Currently provides:
5839
5856
  * - **Copy button** for code blocks (elements with `[data-copy-code]` attribute)
5840
5857
  * - **Script activation** for inline scripts injected via `dangerouslySetInnerHTML`
@@ -5845,13 +5862,31 @@ declare class BrandingService extends BaseService {
5845
5862
  * applies enhancements, making it compatible with SPA frameworks like React/Next.js.
5846
5863
  * Script clones are appended to `<head>` (not inline) to avoid React DOM reconciliation issues.
5847
5864
  *
5865
+ * ## Code-block theming
5866
+ *
5867
+ * Code-block CSS is driven by CSS custom properties (`--lynkow-code-bg`,
5868
+ * `--lynkow-code-fg`, `--lynkow-code-border`, `--lynkow-code-muted-fg`,
5869
+ * `--lynkow-code-copy-fg-hover`, `--lynkow-code-copy-bg-hover`). The light
5870
+ * variant is triggered by any of the common theming conventions on `<html>`,
5871
+ * `<body>` or the `.code-block` element itself: `.light` class,
5872
+ * `data-theme~="light"`, `data-mode~="light"`, `data-color-scheme~="light"`.
5873
+ * `prefers-color-scheme: light` is kept as an OS-level fallback that only
5874
+ * applies when no explicit dark signal is present on `<html>`. Override any
5875
+ * variable in your own stylesheet to customise without `!important`.
5876
+ *
5877
+ * Pass `init({ codeBlocks: false })` if you handle code-block rendering
5878
+ * yourself; the SDK will skip code-block CSS injection and copy-button binding.
5879
+ *
5848
5880
  * @example
5849
5881
  * ```typescript
5850
5882
  * const lynkow = createClient({ siteId: 'your-site-id' })
5851
5883
  *
5852
- * // Enhancements are automatically initialized by the client
5853
- * // Or manually reinitialize after loading dynamic content:
5884
+ * // Enhancements are automatically initialized by the client.
5885
+ * // Manually reinitialize after loading dynamic content:
5854
5886
  * lynkow.enhancements.init()
5887
+ *
5888
+ * // Skip code-block styling when rendering with your own highlighter:
5889
+ * lynkow.enhancements.init({ codeBlocks: false })
5855
5890
  * ```
5856
5891
  */
5857
5892
  declare class EnhancementsService {
@@ -5860,9 +5895,15 @@ declare class EnhancementsService {
5860
5895
  private pendingFrame;
5861
5896
  private handleWidgetResize;
5862
5897
  /**
5863
- * Inject styles into document head
5898
+ * Inject the generic enhancement styles (text-align preservation, etc.)
5899
+ * into document head. Idempotent.
5900
+ */
5901
+ private injectGenericStyles;
5902
+ /**
5903
+ * Inject the code-block styles (variable-based theming + copy button styling)
5904
+ * into document head. Idempotent.
5864
5905
  */
5865
- private injectStyles;
5906
+ private injectCodeBlockStyles;
5866
5907
  /**
5867
5908
  * Handle copy button click
5868
5909
  */
@@ -5887,21 +5928,31 @@ declare class EnhancementsService {
5887
5928
  * Initializes content enhancements: injects CSS styles, binds copy-to-clipboard
5888
5929
  * handlers on code blocks, activates inline scripts, starts the widget iframe
5889
5930
  * resize listener, and sets up a `MutationObserver` to automatically enhance
5890
- * newly added DOM content. Idempotent -- calling multiple times has no effect
5931
+ * newly added DOM content. Idempotent: calling multiple times has no effect
5891
5932
  * after the first initialization. No-op on server.
5892
5933
  *
5893
5934
  * Call this manually if you need to re-initialize after the client is created
5894
5935
  * (e.g. after dynamically loading content outside the initial render).
5895
5936
  *
5937
+ * @param options - Optional behavior toggles. See {@link EnhancementsInitOptions}.
5938
+ * Pass `{ codeBlocks: false }` to skip code-block CSS injection and the copy
5939
+ * button binding (useful when your renderer already handles code blocks).
5940
+ *
5896
5941
  * @example
5897
5942
  * ```typescript
5898
- * // Reinitialize enhancements after dynamically loading new content
5943
+ * // Default: inject everything.
5944
+ * lynkow.enhancements.init()
5945
+ *
5946
+ * // Reinitialize enhancements after dynamically loading new content.
5899
5947
  * const html = await fetchArticleContent()
5900
5948
  * document.getElementById('article').innerHTML = html
5901
5949
  * lynkow.enhancements.init()
5950
+ *
5951
+ * // Opt out of code-block styling when using your own highlighter (Shiki, Prism, ...).
5952
+ * lynkow.enhancements.init({ codeBlocks: false })
5902
5953
  * ```
5903
5954
  */
5904
- init(): void;
5955
+ init(options?: EnhancementsInitOptions): void;
5905
5956
  /**
5906
5957
  * Check whether the enhancements service has been initialized for the
5907
5958
  * current page. Returns `false` on the server and after a call to
@@ -6619,4 +6670,4 @@ declare function renderJsonLdGraph(nodes: object[] | null | undefined): string;
6619
6670
  */
6620
6671
  declare function mergeIntoGraph(server: object[] | null | undefined, custom: object[] | null | undefined): object[];
6621
6672
 
6622
- export { type Alternate, AnalyticsService, type ApiErrorDetail, type Author, type BaseRequestOptions, BlocksService, BrandingService, type CategoriesListResponse, CategoriesService, type Category, type CategoryDetail, type CategoryDetailResponse, type CategoryOptions, type CategoryResolveResponse, type CategoryTreeNode, type CategoryTreeResponse, type CategoryWithCount, type Client, type ClientConfig, type ConsentCategories, type ConsentLogResponse, ConsentService, type Content, type ContentBody, type ContentResolveResponse, type ContentSchema, type ContentSummary, type ContentsFilters, type ContentsListResponse, ContentsService, type CookieCategory, type CookieConfig, type CookiePreferences, type CookieTexts, CookiesService, EnhancementsService, type ErrorCode, type EventData, type EventName, type Form, type FormField, type FormFieldOption, type FormFieldType, type FormFieldValidation, type FormSettings, type FormSubmitData, type FormSubmitResponse, FormsService, type GlobalBlock, type GlobalBlockResponse, type ImageVariants, type JsonLdGraphConfig, type JsonLdNode, type JsonLdNodeSource, type LegalDocument, LegalService, type LynkowClient, type LynkowConfig, LynkowError, type LynkowEvents, MediaHelperService, type Page, type PageSeo, type PageSummary, type PagesListResponse, PagesService, type PageviewData, type PaginatedResponse, type PaginationMeta, type PaginationOptions, type Path, type PathsListResponse, PathsService, type Redirect, type ResolveResponse, type Review, type ReviewResponse, type ReviewSettings, type ReviewSubmitData, type ReviewSubmitResponse, type ReviewsFilters, type ReviewsListResponse, ReviewsService, type SchemaField, type SchemaFieldOption, type SchemaFieldType, type SchemaFieldValidation, type SearchConfig, type SearchHit, type SearchOptions, type SearchProfilePublic, type SearchResponse, SearchService, SeoService, type SiteConfig, type SiteConfigResponse, SiteService, type SortOptions, type SrcsetOptions, type SubmitOptions, type Tag, type TagsListResponse, TagsService, type TipTapMark, type TipTapNode, type TransformOptions, browserOnly, browserOnlyAsync, createClient, createLynkowClient, detectSiteTheme, isBrowser, isCategoryResolve, isContentResolve, isLynkowError, isServer, mergeIntoGraph, onSiteThemeChange, renderJsonLdGraph };
6673
+ export { type Alternate, AnalyticsService, type ApiErrorDetail, type Author, type BaseRequestOptions, BlocksService, BrandingService, type CategoriesListResponse, CategoriesService, type Category, type CategoryDetail, type CategoryDetailResponse, type CategoryOptions, type CategoryResolveResponse, type CategoryTreeNode, type CategoryTreeResponse, type CategoryWithCount, type Client, type ClientConfig, type ConsentCategories, type ConsentLogResponse, ConsentService, type Content, type ContentBody, type ContentResolveResponse, type ContentSchema, type ContentSummary, type ContentsFilters, type ContentsListResponse, ContentsService, type CookieCategory, type CookieConfig, type CookiePreferences, type CookieTexts, CookiesService, type EnhancementsInitOptions, EnhancementsService, type ErrorCode, type EventData, type EventName, type Form, type FormField, type FormFieldOption, type FormFieldType, type FormFieldValidation, type FormSettings, type FormSubmitData, type FormSubmitResponse, FormsService, type GlobalBlock, type GlobalBlockResponse, type ImageVariants, type JsonLdGraphConfig, type JsonLdNode, type JsonLdNodeSource, type LegalDocument, LegalService, type LynkowClient, type LynkowConfig, LynkowError, type LynkowEvents, MediaHelperService, type Page, type PageSeo, type PageSummary, type PagesListResponse, PagesService, type PageviewData, type PaginatedResponse, type PaginationMeta, type PaginationOptions, type Path, type PathsListResponse, PathsService, type Redirect, type ResolveResponse, type Review, type ReviewResponse, type ReviewSettings, type ReviewSubmitData, type ReviewSubmitResponse, type ReviewsFilters, type ReviewsListResponse, ReviewsService, type SchemaField, type SchemaFieldOption, type SchemaFieldType, type SchemaFieldValidation, type SearchConfig, type SearchHit, type SearchOptions, type SearchProfilePublic, type SearchResponse, SearchService, SeoService, type SiteConfig, type SiteConfigResponse, SiteService, type SortOptions, type SrcsetOptions, type SubmitOptions, type Tag, type TagsListResponse, TagsService, type TipTapMark, type TipTapNode, type TransformOptions, browserOnly, browserOnlyAsync, createClient, createLynkowClient, detectSiteTheme, isBrowser, isCategoryResolve, isContentResolve, isLynkowError, isServer, mergeIntoGraph, onSiteThemeChange, renderJsonLdGraph };