@uptrademedia/site-kit 1.0.8 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/api-CWtoFJCO.d.mts +137 -0
  2. package/dist/api-CWtoFJCO.d.ts +137 -0
  3. package/dist/{api-QUIPJJCX.js → api-UBHLAPUG.js} +20 -20
  4. package/dist/api-UBHLAPUG.js.map +1 -0
  5. package/dist/{api-V3BA5PMX.mjs → api-XNF6Q5HO.mjs} +3 -3
  6. package/dist/api-XNF6Q5HO.mjs.map +1 -0
  7. package/dist/blog/index.d.mts +131 -5
  8. package/dist/blog/index.d.ts +131 -5
  9. package/dist/blog/index.js +532 -302
  10. package/dist/blog/index.js.map +1 -1
  11. package/dist/blog/index.mjs +532 -302
  12. package/dist/blog/index.mjs.map +1 -1
  13. package/dist/{chunk-QQB4FO4Q.js → chunk-AWAJEIZS.js} +11 -8
  14. package/dist/chunk-AWAJEIZS.js.map +1 -0
  15. package/dist/{chunk-MB3WR5KJ.mjs → chunk-CDJL2YGL.mjs} +61 -443
  16. package/dist/chunk-CDJL2YGL.mjs.map +1 -0
  17. package/dist/{chunk-TDK7DLCH.js → chunk-FLAA4ZJO.js} +59 -448
  18. package/dist/chunk-FLAA4ZJO.js.map +1 -0
  19. package/dist/{chunk-JGQPAXTL.mjs → chunk-H5AGHERY.mjs} +8 -5
  20. package/dist/chunk-H5AGHERY.mjs.map +1 -0
  21. package/dist/{chunk-VDI7KYME.js → chunk-IYVJGUYX.js} +8 -4
  22. package/dist/chunk-IYVJGUYX.js.map +1 -0
  23. package/dist/{chunk-FQVGK746.mjs → chunk-SKHOW2CI.mjs} +8 -4
  24. package/dist/chunk-SKHOW2CI.mjs.map +1 -0
  25. package/dist/cli/index.js +32 -25
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/index.mjs +32 -25
  28. package/dist/cli/index.mjs.map +1 -1
  29. package/dist/images/index.d.mts +49 -126
  30. package/dist/images/index.d.ts +49 -126
  31. package/dist/images/index.js +12 -12
  32. package/dist/images/index.mjs +1 -5
  33. package/dist/index.d.mts +2 -2
  34. package/dist/index.d.ts +2 -2
  35. package/dist/index.js +510 -106
  36. package/dist/index.js.map +1 -1
  37. package/dist/index.mjs +440 -13
  38. package/dist/index.mjs.map +1 -1
  39. package/dist/{routing-CIOFpFCB.d.mts → routing-BT0RrBLk.d.mts} +14 -1
  40. package/dist/{routing-CF91y6NO.d.ts → routing-wmNSxSvP.d.ts} +14 -1
  41. package/dist/seo/index.d.mts +37 -4
  42. package/dist/seo/index.d.ts +37 -4
  43. package/dist/seo/index.js +48 -18
  44. package/dist/seo/index.js.map +1 -1
  45. package/dist/seo/index.mjs +34 -5
  46. package/dist/seo/index.mjs.map +1 -1
  47. package/dist/seo/server.d.mts +15 -4
  48. package/dist/seo/server.d.ts +15 -4
  49. package/dist/seo/server.js +16 -16
  50. package/dist/seo/server.mjs +2 -2
  51. package/dist/{types-j8X4vUhB.d.mts → types-wf4dwNMO.d.mts} +5 -0
  52. package/dist/{types-j8X4vUhB.d.ts → types-wf4dwNMO.d.ts} +5 -0
  53. package/package.json +6 -1
  54. package/dist/api-QUIPJJCX.js.map +0 -1
  55. package/dist/api-V3BA5PMX.mjs.map +0 -1
  56. package/dist/chunk-FQVGK746.mjs.map +0 -1
  57. package/dist/chunk-JGQPAXTL.mjs.map +0 -1
  58. package/dist/chunk-MB3WR5KJ.mjs.map +0 -1
  59. package/dist/chunk-QQB4FO4Q.js.map +0 -1
  60. package/dist/chunk-TDK7DLCH.js.map +0 -1
  61. package/dist/chunk-VDI7KYME.js.map +0 -1
@@ -0,0 +1,137 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React__default from 'react';
3
+
4
+ interface ManagedImageData {
5
+ id: string;
6
+ slot_id: string;
7
+ page_path: string | null;
8
+ file_id: string | null;
9
+ external_url: string | null;
10
+ alt_text: string | null;
11
+ title: string | null;
12
+ caption: string | null;
13
+ focal_point_x: number;
14
+ focal_point_y: number;
15
+ aspect_ratio: string | null;
16
+ public_url?: string;
17
+ is_placeholder: boolean;
18
+ }
19
+ interface ImageFile {
20
+ id: string;
21
+ filename: string;
22
+ storage_path: string;
23
+ mime_type: string;
24
+ file_size: number;
25
+ folder_path: string | null;
26
+ public_url?: string;
27
+ }
28
+ interface ManagedImageProps {
29
+ /** API key for Portal API */
30
+ apiKey?: string;
31
+ /** API URL (defaults to https://api.uptrademedia.com) */
32
+ apiUrl?: string;
33
+ /** Unique slot identifier (e.g., 'hero-background', 'about-team-1') */
34
+ slotId: string;
35
+ /** Page path for page-specific slots (defaults to current path) */
36
+ pagePath?: string;
37
+ /** Fallback alt text if not set in Portal */
38
+ alt?: string;
39
+ /** CSS class names */
40
+ className?: string;
41
+ /** Image width */
42
+ width?: number | string;
43
+ /** Image height */
44
+ height?: number | string;
45
+ /** CSS object-fit property */
46
+ objectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';
47
+ /** Fallback image URL when no image assigned */
48
+ fallback?: string;
49
+ /** Custom placeholder component */
50
+ placeholder?: React__default.ReactNode;
51
+ /** Called when image loads */
52
+ onLoad?: () => void;
53
+ /** Called on error */
54
+ onError?: (error: Error) => void;
55
+ /** Priority loading (Next.js Image optimization) */
56
+ priority?: boolean;
57
+ /** Additional styles */
58
+ style?: React__default.CSSProperties;
59
+ /** Enable dev picker even outside dev mode */
60
+ forceDevMode?: boolean;
61
+ }
62
+ declare function ManagedImage({ apiKey, apiUrl, slotId, pagePath, alt, className, width, height, objectFit, fallback, placeholder, onLoad, onError, priority, style, forceDevMode, }: ManagedImageProps): react_jsx_runtime.JSX.Element;
63
+
64
+ /**
65
+ * Images API functions
66
+ *
67
+ * All functions use Portal API with API key authentication.
68
+ * Never makes direct Supabase calls.
69
+ */
70
+
71
+ interface ImageApiConfig {
72
+ apiUrl: string;
73
+ apiKey: string;
74
+ }
75
+ /**
76
+ * Fetch a managed image for a specific slot
77
+ */
78
+ declare function fetchManagedImage(config: ImageApiConfig, slotId: string, pagePath?: string): Promise<{
79
+ image: ManagedImageData | null;
80
+ is_placeholder: boolean;
81
+ }>;
82
+ /**
83
+ * Fetch all managed images for the project
84
+ */
85
+ declare function fetchManagedImages(config: ImageApiConfig, options?: {
86
+ pagePath?: string;
87
+ category?: string;
88
+ includePlaceholders?: boolean;
89
+ }): Promise<{
90
+ images: ManagedImageData[];
91
+ }>;
92
+ /**
93
+ * List available image files in the project
94
+ */
95
+ declare function listImageFiles(config: ImageApiConfig, options?: {
96
+ folder?: string;
97
+ search?: string;
98
+ }): Promise<{
99
+ files: ImageFile[];
100
+ folders: string[];
101
+ }>;
102
+ /**
103
+ * Upload a new image
104
+ */
105
+ declare function uploadImage(config: ImageApiConfig, file: File, options?: {
106
+ slotId?: string;
107
+ pagePath?: string;
108
+ folder?: string;
109
+ altText?: string;
110
+ }): Promise<{
111
+ file: ImageFile;
112
+ image?: ManagedImageData;
113
+ }>;
114
+ /**
115
+ * Assign an existing file to an image slot
116
+ */
117
+ declare function assignImageToSlot(config: ImageApiConfig, slotId: string, options: {
118
+ fileId?: string;
119
+ externalUrl?: string;
120
+ pagePath?: string;
121
+ altText?: string;
122
+ title?: string;
123
+ caption?: string;
124
+ focalPointX?: number;
125
+ focalPointY?: number;
126
+ aspectRatio?: string;
127
+ }): Promise<{
128
+ image: ManagedImageData;
129
+ }>;
130
+ /**
131
+ * Clear an image from a slot (keeps the file)
132
+ */
133
+ declare function clearImageSlot(config: ImageApiConfig, slotId: string, pagePath?: string): Promise<{
134
+ success: boolean;
135
+ }>;
136
+
137
+ export { type ImageFile as I, ManagedImage as M, type ManagedImageProps as a, type ManagedImageData as b, fetchManagedImages as c, assignImageToSlot as d, clearImageSlot as e, fetchManagedImage as f, type ImageApiConfig as g, listImageFiles as l, uploadImage as u };
@@ -0,0 +1,137 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React__default from 'react';
3
+
4
+ interface ManagedImageData {
5
+ id: string;
6
+ slot_id: string;
7
+ page_path: string | null;
8
+ file_id: string | null;
9
+ external_url: string | null;
10
+ alt_text: string | null;
11
+ title: string | null;
12
+ caption: string | null;
13
+ focal_point_x: number;
14
+ focal_point_y: number;
15
+ aspect_ratio: string | null;
16
+ public_url?: string;
17
+ is_placeholder: boolean;
18
+ }
19
+ interface ImageFile {
20
+ id: string;
21
+ filename: string;
22
+ storage_path: string;
23
+ mime_type: string;
24
+ file_size: number;
25
+ folder_path: string | null;
26
+ public_url?: string;
27
+ }
28
+ interface ManagedImageProps {
29
+ /** API key for Portal API */
30
+ apiKey?: string;
31
+ /** API URL (defaults to https://api.uptrademedia.com) */
32
+ apiUrl?: string;
33
+ /** Unique slot identifier (e.g., 'hero-background', 'about-team-1') */
34
+ slotId: string;
35
+ /** Page path for page-specific slots (defaults to current path) */
36
+ pagePath?: string;
37
+ /** Fallback alt text if not set in Portal */
38
+ alt?: string;
39
+ /** CSS class names */
40
+ className?: string;
41
+ /** Image width */
42
+ width?: number | string;
43
+ /** Image height */
44
+ height?: number | string;
45
+ /** CSS object-fit property */
46
+ objectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';
47
+ /** Fallback image URL when no image assigned */
48
+ fallback?: string;
49
+ /** Custom placeholder component */
50
+ placeholder?: React__default.ReactNode;
51
+ /** Called when image loads */
52
+ onLoad?: () => void;
53
+ /** Called on error */
54
+ onError?: (error: Error) => void;
55
+ /** Priority loading (Next.js Image optimization) */
56
+ priority?: boolean;
57
+ /** Additional styles */
58
+ style?: React__default.CSSProperties;
59
+ /** Enable dev picker even outside dev mode */
60
+ forceDevMode?: boolean;
61
+ }
62
+ declare function ManagedImage({ apiKey, apiUrl, slotId, pagePath, alt, className, width, height, objectFit, fallback, placeholder, onLoad, onError, priority, style, forceDevMode, }: ManagedImageProps): react_jsx_runtime.JSX.Element;
63
+
64
+ /**
65
+ * Images API functions
66
+ *
67
+ * All functions use Portal API with API key authentication.
68
+ * Never makes direct Supabase calls.
69
+ */
70
+
71
+ interface ImageApiConfig {
72
+ apiUrl: string;
73
+ apiKey: string;
74
+ }
75
+ /**
76
+ * Fetch a managed image for a specific slot
77
+ */
78
+ declare function fetchManagedImage(config: ImageApiConfig, slotId: string, pagePath?: string): Promise<{
79
+ image: ManagedImageData | null;
80
+ is_placeholder: boolean;
81
+ }>;
82
+ /**
83
+ * Fetch all managed images for the project
84
+ */
85
+ declare function fetchManagedImages(config: ImageApiConfig, options?: {
86
+ pagePath?: string;
87
+ category?: string;
88
+ includePlaceholders?: boolean;
89
+ }): Promise<{
90
+ images: ManagedImageData[];
91
+ }>;
92
+ /**
93
+ * List available image files in the project
94
+ */
95
+ declare function listImageFiles(config: ImageApiConfig, options?: {
96
+ folder?: string;
97
+ search?: string;
98
+ }): Promise<{
99
+ files: ImageFile[];
100
+ folders: string[];
101
+ }>;
102
+ /**
103
+ * Upload a new image
104
+ */
105
+ declare function uploadImage(config: ImageApiConfig, file: File, options?: {
106
+ slotId?: string;
107
+ pagePath?: string;
108
+ folder?: string;
109
+ altText?: string;
110
+ }): Promise<{
111
+ file: ImageFile;
112
+ image?: ManagedImageData;
113
+ }>;
114
+ /**
115
+ * Assign an existing file to an image slot
116
+ */
117
+ declare function assignImageToSlot(config: ImageApiConfig, slotId: string, options: {
118
+ fileId?: string;
119
+ externalUrl?: string;
120
+ pagePath?: string;
121
+ altText?: string;
122
+ title?: string;
123
+ caption?: string;
124
+ focalPointX?: number;
125
+ focalPointY?: number;
126
+ aspectRatio?: string;
127
+ }): Promise<{
128
+ image: ManagedImageData;
129
+ }>;
130
+ /**
131
+ * Clear an image from a slot (keeps the file)
132
+ */
133
+ declare function clearImageSlot(config: ImageApiConfig, slotId: string, pagePath?: string): Promise<{
134
+ success: boolean;
135
+ }>;
136
+
137
+ export { type ImageFile as I, ManagedImage as M, type ManagedImageProps as a, type ManagedImageData as b, fetchManagedImages as c, assignImageToSlot as d, clearImageSlot as e, fetchManagedImage as f, type ImageApiConfig as g, listImageFiles as l, uploadImage as u };
@@ -1,77 +1,77 @@
1
1
  'use strict';
2
2
 
3
- var chunkVDI7KYME_js = require('./chunk-VDI7KYME.js');
3
+ var chunkIYVJGUYX_js = require('./chunk-IYVJGUYX.js');
4
4
  require('./chunk-ZSMWDLMK.js');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "getABTest", {
9
9
  enumerable: true,
10
- get: function () { return chunkVDI7KYME_js.getABTest; }
10
+ get: function () { return chunkIYVJGUYX_js.getABTest; }
11
11
  });
12
12
  Object.defineProperty(exports, "getContentBlock", {
13
13
  enumerable: true,
14
- get: function () { return chunkVDI7KYME_js.getContentBlock; }
14
+ get: function () { return chunkIYVJGUYX_js.getContentBlock; }
15
15
  });
16
16
  Object.defineProperty(exports, "getEntities", {
17
17
  enumerable: true,
18
- get: function () { return chunkVDI7KYME_js.getEntities; }
18
+ get: function () { return chunkIYVJGUYX_js.getEntities; }
19
19
  });
20
20
  Object.defineProperty(exports, "getEntityEnhancedSchema", {
21
21
  enumerable: true,
22
- get: function () { return chunkVDI7KYME_js.getEntityEnhancedSchema; }
22
+ get: function () { return chunkIYVJGUYX_js.getEntityEnhancedSchema; }
23
23
  });
24
24
  Object.defineProperty(exports, "getFAQData", {
25
25
  enumerable: true,
26
- get: function () { return chunkVDI7KYME_js.getFAQData; }
26
+ get: function () { return chunkIYVJGUYX_js.getFAQData; }
27
27
  });
28
28
  Object.defineProperty(exports, "getInternalLinks", {
29
29
  enumerable: true,
30
- get: function () { return chunkVDI7KYME_js.getInternalLinks; }
30
+ get: function () { return chunkIYVJGUYX_js.getInternalLinks; }
31
31
  });
32
32
  Object.defineProperty(exports, "getManagedScripts", {
33
33
  enumerable: true,
34
- get: function () { return chunkVDI7KYME_js.getManagedScripts; }
34
+ get: function () { return chunkIYVJGUYX_js.getManagedScripts; }
35
35
  });
36
36
  Object.defineProperty(exports, "getPrimaryEntity", {
37
37
  enumerable: true,
38
- get: function () { return chunkVDI7KYME_js.getPrimaryEntity; }
38
+ get: function () { return chunkIYVJGUYX_js.getPrimaryEntity; }
39
39
  });
40
40
  Object.defineProperty(exports, "getRedirectData", {
41
41
  enumerable: true,
42
- get: function () { return chunkVDI7KYME_js.getRedirectData; }
42
+ get: function () { return chunkIYVJGUYX_js.getRedirectData; }
43
43
  });
44
44
  Object.defineProperty(exports, "getRobotsData", {
45
45
  enumerable: true,
46
- get: function () { return chunkVDI7KYME_js.getRobotsData; }
46
+ get: function () { return chunkIYVJGUYX_js.getRobotsData; }
47
47
  });
48
48
  Object.defineProperty(exports, "getSEOPageData", {
49
49
  enumerable: true,
50
- get: function () { return chunkVDI7KYME_js.getSEOPageData; }
50
+ get: function () { return chunkIYVJGUYX_js.getSEOPageData; }
51
51
  });
52
52
  Object.defineProperty(exports, "getSchemaMarkups", {
53
53
  enumerable: true,
54
- get: function () { return chunkVDI7KYME_js.getSchemaMarkups; }
54
+ get: function () { return chunkIYVJGUYX_js.getSchemaMarkups; }
55
55
  });
56
56
  Object.defineProperty(exports, "getSitemapEntries", {
57
57
  enumerable: true,
58
- get: function () { return chunkVDI7KYME_js.getSitemapEntries; }
58
+ get: function () { return chunkIYVJGUYX_js.getSitemapEntries; }
59
59
  });
60
60
  Object.defineProperty(exports, "getVisibilityScore", {
61
61
  enumerable: true,
62
- get: function () { return chunkVDI7KYME_js.getVisibilityScore; }
62
+ get: function () { return chunkIYVJGUYX_js.getVisibilityScore; }
63
63
  });
64
64
  Object.defineProperty(exports, "getVisibilitySummary", {
65
65
  enumerable: true,
66
- get: function () { return chunkVDI7KYME_js.getVisibilitySummary; }
66
+ get: function () { return chunkIYVJGUYX_js.getVisibilitySummary; }
67
67
  });
68
68
  Object.defineProperty(exports, "recordABImpression", {
69
69
  enumerable: true,
70
- get: function () { return chunkVDI7KYME_js.recordABImpression; }
70
+ get: function () { return chunkIYVJGUYX_js.recordABImpression; }
71
71
  });
72
72
  Object.defineProperty(exports, "registerSitemap", {
73
73
  enumerable: true,
74
- get: function () { return chunkVDI7KYME_js.registerSitemap; }
74
+ get: function () { return chunkIYVJGUYX_js.registerSitemap; }
75
75
  });
76
- //# sourceMappingURL=api-QUIPJJCX.js.map
77
- //# sourceMappingURL=api-QUIPJJCX.js.map
76
+ //# sourceMappingURL=api-UBHLAPUG.js.map
77
+ //# sourceMappingURL=api-UBHLAPUG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"api-UBHLAPUG.js"}
@@ -1,4 +1,4 @@
1
- export { getABTest, getContentBlock, getEntities, getEntityEnhancedSchema, getFAQData, getInternalLinks, getManagedScripts, getPrimaryEntity, getRedirectData, getRobotsData, getSEOPageData, getSchemaMarkups, getSitemapEntries, getVisibilityScore, getVisibilitySummary, recordABImpression, registerSitemap } from './chunk-FQVGK746.mjs';
1
+ export { getABTest, getContentBlock, getEntities, getEntityEnhancedSchema, getFAQData, getInternalLinks, getManagedScripts, getPrimaryEntity, getRedirectData, getRobotsData, getSEOPageData, getSchemaMarkups, getSitemapEntries, getVisibilityScore, getVisibilitySummary, recordABImpression, registerSitemap } from './chunk-SKHOW2CI.mjs';
2
2
  import './chunk-4XPGGLVP.mjs';
3
- //# sourceMappingURL=api-V3BA5PMX.mjs.map
4
- //# sourceMappingURL=api-V3BA5PMX.mjs.map
3
+ //# sourceMappingURL=api-XNF6Q5HO.mjs.map
4
+ //# sourceMappingURL=api-XNF6Q5HO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"api-XNF6Q5HO.mjs"}
@@ -3,6 +3,68 @@ import React__default from 'react';
3
3
  import { B as BlogPost$1, T as TocItem, a as BlogListResult, b as BlogCategory, A as AuthorCardProps, c as TableOfContentsProps } from '../types-DI0jnhjJ.mjs';
4
4
  export { k as BlogAnalytics, d as BlogAuthor, f as BlogListOptions, i as BlogListProps, j as BlogListRenderProps, g as BlogPostProps, h as BlogPostRenderProps, e as BlogTag, R as RelatedPostsProps } from '../types-DI0jnhjJ.mjs';
5
5
 
6
+ interface BlogPostStyles {
7
+ /** Article wrapper */
8
+ article?: string;
9
+ /** Header section */
10
+ header?: string;
11
+ /** Breadcrumb navigation */
12
+ breadcrumb?: string;
13
+ /** Breadcrumb link */
14
+ breadcrumbLink?: string;
15
+ /** Post title (h1) */
16
+ title?: string;
17
+ /** Post subtitle */
18
+ subtitle?: string;
19
+ /** Meta info row */
20
+ meta?: string;
21
+ /** Meta item */
22
+ metaItem?: string;
23
+ /** Featured image wrapper */
24
+ featuredImageWrapper?: string;
25
+ /** Featured image */
26
+ featuredImage?: string;
27
+ /** Content layout (grid with TOC) */
28
+ contentLayout?: string;
29
+ /** Main content wrapper */
30
+ content?: string;
31
+ /** Table of contents sidebar */
32
+ tocSidebar?: string;
33
+ /** TOC title */
34
+ tocTitle?: string;
35
+ /** TOC list */
36
+ tocList?: string;
37
+ /** TOC list item */
38
+ tocItem?: string;
39
+ /** TOC link */
40
+ tocLink?: string;
41
+ /** Tags container */
42
+ tags?: string;
43
+ /** Individual tag */
44
+ tag?: string;
45
+ /** FAQ section */
46
+ faqSection?: string;
47
+ /** FAQ title */
48
+ faqTitle?: string;
49
+ /** FAQ item container */
50
+ faqItem?: string;
51
+ /** FAQ question (summary) */
52
+ faqQuestion?: string;
53
+ /** FAQ answer */
54
+ faqAnswer?: string;
55
+ /** Author card section */
56
+ authorCard?: string;
57
+ /** Related posts section */
58
+ relatedSection?: string;
59
+ /** Related posts title */
60
+ relatedTitle?: string;
61
+ /** Related posts grid */
62
+ relatedGrid?: string;
63
+ /** Related post card */
64
+ relatedCard?: string;
65
+ /** Not found state */
66
+ notFound?: string;
67
+ }
6
68
  interface BlogPostServerProps {
7
69
  /** Portal API URL */
8
70
  apiUrl?: string;
@@ -20,8 +82,15 @@ interface BlogPostServerProps {
20
82
  showAuthor?: boolean;
21
83
  /** Base URL for blog links */
22
84
  basePath?: string;
23
- /** Custom class name */
85
+ /** Custom class name (applied to article) */
24
86
  className?: string;
87
+ /**
88
+ * Custom Tailwind/CSS classes for each element.
89
+ * When provided, inline styles are disabled for that element.
90
+ */
91
+ styles?: BlogPostStyles;
92
+ /** Use CSS classes only (no inline styles) - set to true for Tailwind sites */
93
+ unstyled?: boolean;
25
94
  /** Custom render function */
26
95
  children?: (props: {
27
96
  post: BlogPost$1;
@@ -29,8 +98,58 @@ interface BlogPostServerProps {
29
98
  relatedPosts: BlogPost$1[];
30
99
  }) => React__default.ReactNode;
31
100
  }
32
- declare function BlogPost({ apiUrl, apiKey, slug, showToc, showRelated, relatedCount, showAuthor, basePath, className, children, }: BlogPostServerProps): Promise<string | number | bigint | boolean | Iterable<React__default.ReactNode> | react_jsx_runtime.JSX.Element | null | undefined>;
101
+ declare function BlogPost({ apiUrl, apiKey, slug, showToc, showRelated, relatedCount, showAuthor, basePath, className, styles, unstyled, children, }: BlogPostServerProps): Promise<string | number | bigint | boolean | Iterable<React__default.ReactNode> | react_jsx_runtime.JSX.Element | null | undefined>;
33
102
 
103
+ interface BlogListStyles {
104
+ /** Container wrapper */
105
+ container?: string;
106
+ /** Category navigation wrapper */
107
+ categoryNav?: string;
108
+ /** Individual category link */
109
+ categoryLink?: string;
110
+ /** Active category link (combined with categoryLink) */
111
+ categoryLinkActive?: string;
112
+ /** Inactive category link (combined with categoryLink) */
113
+ categoryLinkInactive?: string;
114
+ /** Posts grid container */
115
+ grid?: string;
116
+ /** Individual post card */
117
+ card?: string;
118
+ /** Card image wrapper */
119
+ cardImageWrapper?: string;
120
+ /** Card image */
121
+ cardImage?: string;
122
+ /** Card body/content area */
123
+ cardBody?: string;
124
+ /** Card meta row (date, category) */
125
+ cardMeta?: string;
126
+ /** Card category badge */
127
+ cardCategory?: string;
128
+ /** Card date */
129
+ cardDate?: string;
130
+ /** Card title */
131
+ cardTitle?: string;
132
+ /** Card title link */
133
+ cardTitleLink?: string;
134
+ /** Card excerpt */
135
+ cardExcerpt?: string;
136
+ /** Card footer */
137
+ cardFooter?: string;
138
+ /** Card author */
139
+ cardAuthor?: string;
140
+ /** Card reading time */
141
+ cardReadingTime?: string;
142
+ /** Card read more link */
143
+ cardReadMore?: string;
144
+ /** Pagination container */
145
+ pagination?: string;
146
+ /** Pagination link */
147
+ paginationLink?: string;
148
+ /** Pagination info text */
149
+ paginationInfo?: string;
150
+ /** Empty state */
151
+ emptyState?: string;
152
+ }
34
153
  interface BlogListServerProps {
35
154
  /** Portal API URL */
36
155
  apiUrl?: string;
@@ -58,10 +177,17 @@ interface BlogListServerProps {
58
177
  showCategoryFilter?: boolean;
59
178
  /** Show pagination */
60
179
  showPagination?: boolean;
61
- /** Custom class name */
180
+ /** Custom class name (applied to container) */
62
181
  className?: string;
63
182
  /** Base URL for post links */
64
183
  basePath?: string;
184
+ /**
185
+ * Custom Tailwind/CSS classes for each element.
186
+ * When provided, inline styles are disabled for that element.
187
+ */
188
+ styles?: BlogListStyles;
189
+ /** Use CSS classes only (no inline styles) - set to true for Tailwind sites */
190
+ unstyled?: boolean;
65
191
  /** Custom render function for post card */
66
192
  renderPost?: (post: BlogPost$1) => React__default.ReactNode;
67
193
  /** Custom render function for entire grid */
@@ -71,7 +197,7 @@ interface BlogListServerProps {
71
197
  categories: BlogCategory[];
72
198
  }) => React__default.ReactNode;
73
199
  }
74
- declare function BlogList({ apiUrl, apiKey, category, tag, author, featured, search, page, perPage, orderBy, order, showCategoryFilter, showPagination, className, basePath, renderPost, children, }: BlogListServerProps): Promise<string | number | bigint | boolean | Iterable<React__default.ReactNode> | react_jsx_runtime.JSX.Element | null | undefined>;
200
+ declare function BlogList({ apiUrl, apiKey, category, tag, author, featured, search, page, perPage, orderBy, order, showCategoryFilter, showPagination, className, basePath, styles, unstyled, renderPost, children, }: BlogListServerProps): Promise<string | number | bigint | boolean | Iterable<React__default.ReactNode> | react_jsx_runtime.JSX.Element | null | undefined>;
75
201
 
76
202
  interface BlogSidebarProps {
77
203
  /** Portal API URL */
@@ -176,4 +302,4 @@ declare function RelatedPosts({ apiUrl, apiKey, currentPostId, limit, className,
176
302
 
177
303
  declare function TableOfContents({ content, className, maxDepth, }: TableOfContentsProps): react_jsx_runtime.JSX.Element | null;
178
304
 
179
- export { AuthorCard, AuthorCardProps, BlogCategory, BlogLayout, type BlogLayoutProps, BlogList, BlogListResult, type BlogListServerProps, BlogPage, type BlogPageProps, BlogPost, BlogPostPage, type BlogPostPageProps, type BlogPostServerProps, BlogSidebar, type BlogSidebarProps, CategoryPage, type CategoryPageProps, NewsletterWidget, type NewsletterWidgetProps, RelatedPosts, TableOfContents, TableOfContentsProps, TocItem };
305
+ export { AuthorCard, AuthorCardProps, BlogCategory, BlogLayout, type BlogLayoutProps, BlogList, BlogListResult, type BlogListServerProps, type BlogListStyles, BlogPage, type BlogPageProps, BlogPost, BlogPostPage, type BlogPostPageProps, type BlogPostServerProps, type BlogPostStyles, BlogSidebar, type BlogSidebarProps, CategoryPage, type CategoryPageProps, NewsletterWidget, type NewsletterWidgetProps, RelatedPosts, TableOfContents, TableOfContentsProps, TocItem };