@pixelated-tech/components 3.2.8 → 3.2.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 (43) hide show
  1. package/README.md +19 -13
  2. package/dist/components/cms/flickr.js +11 -2
  3. package/dist/components/cms/google.reviews.components.js +16 -5
  4. package/dist/components/cms/google.reviews.css +92 -0
  5. package/dist/components/cms/google.reviews.functions.js +1 -5
  6. package/dist/components/cms/gravatar.components.js +4 -16
  7. package/dist/components/cms/gravatar.css +110 -0
  8. package/dist/components/cms/hubspot.components.js +13 -8
  9. package/dist/components/cms/wordpress.components.js +11 -3
  10. package/dist/components/cms/wordpress.functions.js +6 -2
  11. package/dist/components/config/config.example.js +11 -3
  12. package/dist/components/seo/googleanalytics.js +12 -3
  13. package/dist/types/components/cms/flickr.d.ts +5 -2
  14. package/dist/types/components/cms/flickr.d.ts.map +1 -1
  15. package/dist/types/components/cms/google.reviews.components.d.ts +4 -1
  16. package/dist/types/components/cms/google.reviews.components.d.ts.map +1 -1
  17. package/dist/types/components/cms/google.reviews.functions.d.ts +1 -0
  18. package/dist/types/components/cms/google.reviews.functions.d.ts.map +1 -1
  19. package/dist/types/components/cms/gravatar.components.d.ts +1 -0
  20. package/dist/types/components/cms/gravatar.components.d.ts.map +1 -1
  21. package/dist/types/components/cms/hubspot.components.d.ts +3 -3
  22. package/dist/types/components/cms/hubspot.components.d.ts.map +1 -1
  23. package/dist/types/components/cms/wordpress.components.d.ts +2 -1
  24. package/dist/types/components/cms/wordpress.components.d.ts.map +1 -1
  25. package/dist/types/components/cms/wordpress.functions.d.ts +4 -0
  26. package/dist/types/components/cms/wordpress.functions.d.ts.map +1 -1
  27. package/dist/types/components/config/config.example.d.ts.map +1 -1
  28. package/dist/types/components/config/config.types.d.ts +7 -1
  29. package/dist/types/components/config/config.types.d.ts.map +1 -1
  30. package/dist/types/components/general/semantic.d.ts +1 -1
  31. package/dist/types/components/seo/googleanalytics.d.ts +2 -2
  32. package/dist/types/components/seo/googleanalytics.d.ts.map +1 -1
  33. package/dist/types/stories/cms/google.reviews.stories.d.ts +11 -0
  34. package/dist/types/stories/cms/google.reviews.stories.d.ts.map +1 -1
  35. package/dist/types/stories/cms/wordpress.stories.d.ts +4 -0
  36. package/dist/types/stories/cms/wordpress.stories.d.ts.map +1 -1
  37. package/dist/types/stories/seo/seo.googleanalytics.stories.d.ts +9 -2
  38. package/dist/types/stories/seo/seo.googleanalytics.stories.d.ts.map +1 -1
  39. package/dist/types/tests/google.reviews.test.d.ts +2 -0
  40. package/dist/types/tests/google.reviews.test.d.ts.map +1 -0
  41. package/package.json +11 -11
  42. package/dist/types/tests/google-reviews.test.d.ts +0 -2
  43. package/dist/types/tests/google-reviews.test.d.ts.map +0 -1
package/README.md CHANGED
@@ -173,17 +173,18 @@ npm run storybook
173
173
 
174
174
  ### Overview
175
175
 
176
- **Current Status**: ✅ 2,054 tests passing across 57 test files (all tests passing)
176
+ **Current Status**: ✅ 2,037 tests passing across 59 test files (all tests passing)
177
177
 
178
178
  | Metric | Value |
179
179
  |--------|-------|
180
- | Test Files | 57 |
181
- | Total Tests | 2,054 |
182
- | Components Tested | 50/50 (100%) |
183
- | Coverage (Statements) | 66.39% |
184
- | Coverage (Lines) | 69.95% |
185
- | Coverage (Functions) | 74.65% |
186
- | Coverage (Branches) | 56.36% |
180
+ | Test Files | 58 |
181
+ | Total Tests | 2,038 |
182
+ | Components Tested | 52/52 (100%) |
183
+ | Utility Modules Tested | 2/2 (100%) |
184
+ | Coverage (Statements) | 66.81% |
185
+ | Coverage (Lines) | 70.31% |
186
+ | Coverage (Functions) | 74.59% |
187
+ | Coverage (Branches) | 57.62% |
187
188
  | Test Framework | Vitest 4.x |
188
189
  | Testing Library | @testing-library/react + jsdom |
189
190
 
@@ -202,6 +203,7 @@ npm run test:run # Single run (for CI)
202
203
 
203
204
  #### Component Coverage (Sorted by Statement Coverage)
204
205
  - **sitemap.ts**: 100% statements
206
+ - **google.reviews.functions.ts**: 100% statements
205
207
  - **googlesearch.tsx**: 100% statements
206
208
  - **formvalidations.tsx**: 100% statements (↑ 92.69 points)
207
209
  - **tiles.tsx**: 100% statements
@@ -210,6 +212,7 @@ npm run test:run # Single run (for CI)
210
212
  - **timeline.tsx**: 100% statements
211
213
  - **config.server.tsx**: 100% statements
212
214
  - **modal.tsx**: 100% statements
215
+ - **google.reviews.components.tsx**: 100% statements
213
216
  - **recipe.tsx**: 98.8% statements
214
217
  - **sidepanel.tsx**: 97.5% statements
215
218
  - **resume.tsx**: 94.38% statements
@@ -231,10 +234,10 @@ npm run test:run # Single run (for CI)
231
234
  ### Test Configuration
232
235
 
233
236
  **Coverage Targets** (Updated - Focus on Statement Coverage):
234
- - **Statements**: 66.39% ✅ ACHIEVED (Target: 70%)
235
- - **Lines**: 69.95% ✅ ACHIEVED
236
- - **Functions**: 74.65% ✅ ACHIEVED
237
- - **Branches**: 56.36% (Focus area for future)
237
+ - **Statements**: 66.81% ✅ ACHIEVED (Target: 70%)
238
+ - **Lines**: 70.31% ✅ ACHIEVED
239
+ - **Functions**: 74.59% ✅ ACHIEVED
240
+ - **Branches**: 57.62% (Focus area for future)
238
241
 
239
242
  **Coverage Thresholds in vitest.config.ts**:
240
243
  - Lines: 70% threshold
@@ -260,7 +263,7 @@ npm run test:run # Single run (for CI)
260
263
 
261
264
  ### New Components
262
265
  - [ ] **ON HOLD** LinkedIn Recommendations Integration (Not possible with current LinkedIn API)
263
- - [ ] eBay Feedback Integration
266
+ - [ ] **ON HOLD** eBay Feedback Integration - requires user OAuth login
264
267
  - [ ] **ON HOLD** Yelp Recommendations integration (Cost Prohibitive)
265
268
  - [ ] Instagram Image Integration for Carousels
266
269
  - [ ] Shopify Integration
@@ -285,6 +288,9 @@ npm run test:run # Single run (for CI)
285
288
  - [ ] **Form Components**: Fix validation state reset when input props change.
286
289
  - [ ] **Carousel Component**: Fix active card state reset when `props.cards` changes.
287
290
  - [ ] **NerdJoke Component**: Add props to useEffect dependencies if endpoint becomes configurable.
291
+ - [ ] **GoogleReviews Component**: Add carousel/grid display modes.
292
+ - [ ] **GoogleReviews Component**: Add API key to config provider instead of hardcoding.
293
+ - [ ] **Instagram Component**: Add accessToken and userId to config provider for centralized API credentials.
288
294
 
289
295
 
290
296
 
@@ -43,11 +43,20 @@ function getFlickrSize(size) {
43
43
  }
44
44
  }
45
45
  GetFlickrData.PropTypes = {
46
- flickr: PropTypes.object.isRequired,
46
+ flickr: PropTypes.object,
47
+ config: PropTypes.object,
47
48
  };
48
49
  export function GetFlickrData(props) {
49
50
  const debug = false;
50
- const flickr = mergeDeep(defaultFlickr.flickr, props.flickr);
51
+ // Use provided flickr config, or fall back to config provider, or use defaults
52
+ let flickrConfig = { ...defaultFlickr.flickr };
53
+ if (props.config) {
54
+ flickrConfig = mergeDeep(flickrConfig, props.config);
55
+ }
56
+ if (props.flickr) {
57
+ flickrConfig = mergeDeep(flickrConfig, props.flickr);
58
+ }
59
+ const flickr = flickrConfig;
51
60
  const myURL = generateURL(flickr.baseURL, flickr.urlProps);
52
61
  const fetchFlickrData = async () => {
53
62
  try {
@@ -3,11 +3,14 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useState, useEffect } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import { getGoogleReviewsByPlaceId } from './google.reviews.functions';
6
+ import './google.reviews.css';
7
+ const GOOGLE_MAPS_API_KEY = 'AIzaSyBtknq7LHzN0xb0lIN3K0CXXf0swVp6ReA';
6
8
  GoogleReviewsCard.propTypes = {
7
- placeID: PropTypes.string.isRequired,
9
+ placeId: PropTypes.string.isRequired,
8
10
  language: PropTypes.string,
9
11
  maxReviews: PropTypes.number,
10
12
  proxyBase: PropTypes.string,
13
+ apiKey: PropTypes.string,
11
14
  };
12
15
  export function GoogleReviewsCard(props) {
13
16
  const [place, setPlace] = useState();
@@ -22,22 +25,30 @@ export function GoogleReviewsCard(props) {
22
25
  language: props.language,
23
26
  maxReviews: props.maxReviews,
24
27
  proxyBase: props.proxyBase,
28
+ apiKey: props.apiKey || GOOGLE_MAPS_API_KEY,
25
29
  });
26
30
  setPlace(result.place);
27
31
  setReviews(result.reviews);
28
32
  setLoading(false);
29
33
  }
30
34
  catch (e) {
31
- setError(e?.message || 'Failed to fetch reviews');
35
+ const errorMessage = e?.message || 'Failed to fetch reviews';
36
+ // Check for common CORS/network issues
37
+ if (errorMessage.includes('Failed to fetch') || errorMessage.includes('CORS')) {
38
+ setError('Unable to load reviews. This may be due to CORS restrictions in the browser. Try using a proxy server or server-side rendering.');
39
+ }
40
+ else {
41
+ setError(errorMessage);
42
+ }
32
43
  setLoading(false);
33
44
  }
34
45
  })();
35
46
  }, [props.placeId, props.language, props.maxReviews, props.proxyBase]);
36
47
  if (loading) {
37
- return (_jsx("div", { style: { padding: 16 }, children: _jsx("p", { children: "Loading reviews..." }) }));
48
+ return (_jsx("div", { className: "google-reviews-card", children: _jsx("p", { className: "loading", children: "Loading reviews..." }) }));
38
49
  }
39
50
  if (error) {
40
- return (_jsx("div", { style: { padding: 16 }, children: _jsxs("p", { style: { color: 'tomato' }, children: ["Error: ", error] }) }));
51
+ return (_jsx("div", { className: "google-reviews-card", children: _jsxs("p", { className: "error", children: ["Error: ", error] }) }));
41
52
  }
42
- return (_jsxs("div", { style: { padding: 16 }, children: [_jsx("h3", { children: place?.name || 'Reviews' }), place?.formatted_address && (_jsx("p", { style: { fontSize: '0.9em', color: '#666', marginBottom: 16 }, children: place.formatted_address })), reviews.length === 0 ? (_jsx("p", { children: "No reviews found." })) : (_jsx("ul", { style: { listStyle: 'none', padding: 0 }, children: reviews.map((r, i) => (_jsxs("li", { style: { marginBottom: 16, borderBottom: '1px solid #eee', paddingBottom: 12 }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', marginBottom: 8 }, children: [r.profile_photo_url && (_jsx("img", { src: r.profile_photo_url, alt: r.author_name, style: { width: 40, height: 40, borderRadius: '50%', marginRight: 12 } })), _jsxs("div", { children: [_jsx("strong", { children: r.author_name }), _jsxs("div", { style: { fontSize: '0.9em', color: '#666' }, children: ['★'.repeat(r.rating), '☆'.repeat(5 - r.rating), " ", r.rating, "/5", r.relative_time_description && _jsxs("span", { children: [" \u00B7 ", r.relative_time_description] })] })] })] }), r.text && _jsx("div", { style: { marginTop: 8, lineHeight: 1.5 }, children: r.text })] }, i))) })), place && (_jsx("a", { href: `https://search.google.com/local/writereview?placeid=${place.place_id}`, target: "_blank", rel: "noopener noreferrer", style: { display: 'inline-block', marginTop: 16, color: '#1a73e8', textDecoration: 'none' }, children: "Write a review on Google \u2192" }))] }));
53
+ return (_jsxs("div", { className: "google-reviews-card", children: [_jsx("h3", { children: place?.name || 'Reviews' }), place?.formatted_address && (_jsx("p", { className: "address", children: place.formatted_address })), reviews.length === 0 ? (_jsx("p", { className: "no-reviews", children: "No reviews found." })) : (_jsx("ul", { children: reviews.map((r, i) => (_jsxs("li", { children: [_jsxs("div", { className: "review-header", children: [r.profile_photo_url && (_jsx("img", { src: r.profile_photo_url, alt: r.author_name, className: "profile-photo" })), _jsxs("div", { children: [_jsx("div", { className: "author-name", children: r.author_name }), _jsxs("div", { className: "rating", children: ['★'.repeat(r.rating), '☆'.repeat(5 - r.rating), " ", r.rating, "/5", r.relative_time_description && _jsxs("span", { children: [" \u00B7 ", r.relative_time_description] })] })] })] }), r.text && _jsx("div", { className: "review-text", children: r.text })] }, i))) })), place && (_jsx("a", { href: `https://search.google.com/local/writereview?placeid=${place.place_id}`, target: "_blank", rel: "noopener noreferrer", className: "write-review", children: "Write a review on Google \u2192" }))] }));
43
54
  }
@@ -0,0 +1,92 @@
1
+ .google-reviews-card {
2
+ padding: 16px;
3
+ }
4
+
5
+ .google-reviews-card h3 {
6
+ margin: 0 0 8px 0;
7
+ }
8
+
9
+ .google-reviews-card .address {
10
+ font-size: 0.9em;
11
+ color: #666;
12
+ margin-bottom: 16px;
13
+ }
14
+
15
+ .google-reviews-card .loading,
16
+ .google-reviews-card .error,
17
+ .google-reviews-card .no-reviews {
18
+ padding: 16px;
19
+ }
20
+
21
+ .google-reviews-card .error {
22
+ color: tomato;
23
+ }
24
+
25
+ .google-reviews-card ul {
26
+ list-style: none;
27
+ padding: 0;
28
+ }
29
+
30
+ .google-reviews-card li {
31
+ margin-bottom: 16px;
32
+ border-bottom: 1px solid #eee;
33
+ padding-bottom: 12px;
34
+ }
35
+
36
+ .google-reviews-card .review-header {
37
+ display: flex;
38
+ align-items: center;
39
+ margin-bottom: 8px;
40
+ }
41
+
42
+ .google-reviews-card .profile-photo-container {
43
+ width: 40px;
44
+ height: 40px;
45
+ margin-right: 12px;
46
+ flex-shrink: 0;
47
+ position: relative;
48
+ }
49
+
50
+ .google-reviews-card .profile-photo {
51
+ width: 100%;
52
+ height: 100%;
53
+ border-radius: 50%;
54
+ object-fit: cover;
55
+ }
56
+
57
+ .google-reviews-card .profile-placeholder {
58
+ width: 100%;
59
+ height: 100%;
60
+ border-radius: 50%;
61
+ background-color: #e0e0e0;
62
+ color: #666;
63
+ display: flex;
64
+ align-items: center;
65
+ justify-content: center;
66
+ font-weight: bold;
67
+ font-size: 16px;
68
+ position: absolute;
69
+ top: 0;
70
+ left: 0;
71
+ }
72
+
73
+ .google-reviews-card .author-name {
74
+ font-weight: bold;
75
+ }
76
+
77
+ .google-reviews-card .rating {
78
+ font-size: 0.9em;
79
+ color: #666;
80
+ }
81
+
82
+ .google-reviews-card .review-text {
83
+ margin-top: 8px;
84
+ line-height: 1.5;
85
+ }
86
+
87
+ .google-reviews-card .write-review {
88
+ display: inline-block;
89
+ margin-top: 16px;
90
+ color: #1a73e8;
91
+ text-decoration: none;
92
+ }
@@ -2,11 +2,7 @@
2
2
  // Requires: GOOGLE_MAPS_API_KEY or hard-coded key
3
3
  // Flow: Place Details (reviews)
4
4
  export async function getGoogleReviewsByPlaceId(params) {
5
- const apiKey = 'AIzaSyBtknq7LHzN0xb0lIN3K0CXXf0swVp6ReA';
6
- if (!apiKey) {
7
- throw new Error('GOOGLE_MAPS_API_KEY is required');
8
- }
9
- const { placeId, language, maxReviews, proxyBase } = params;
5
+ const { placeId, language, maxReviews, proxyBase, apiKey } = params;
10
6
  const detailsBase = 'https://maps.googleapis.com/maps/api/place/details/json';
11
7
  const fields = encodeURIComponent('reviews,name,place_id,formatted_address');
12
8
  const detailsUrl = `${detailsBase}?place_id=${encodeURIComponent(placeId)}&fields=${fields}${language ? `&language=${encodeURIComponent(language)}` : ''}&key=${apiKey}`;
@@ -4,6 +4,7 @@ import PropTypes from 'prop-types';
4
4
  // import { type GravatarProfile } from './gravatar.functions';
5
5
  import { SmartImage } from './cloudinary.image';
6
6
  import { usePixelatedConfig } from '../config/config.client';
7
+ import './gravatar.css';
7
8
  /* export type GravatarCardProps = {
8
9
  // Gravatar profile data (fetched server-side)
9
10
  profile?: GravatarProfile | null;
@@ -104,20 +105,7 @@ export function GravatarCard(props) {
104
105
  const isHorizontal = layout === 'horizontal';
105
106
  const photoOnRight = direction === 'right';
106
107
  const config = usePixelatedConfig();
107
- const avatarElement = (_jsx("div", { style: { flexShrink: 0 }, children: _jsx(SmartImage, { src: avatarUrl, alt: displayName, title: displayName, width: avatarSize ?? 120, height: avatarSize ?? 120, style: {
108
- borderRadius: '50%',
109
- objectFit: 'cover',
110
- display: 'block',
111
- }, cloudinaryEnv: config?.cloudinary?.product_env, cloudinaryDomain: config?.cloudinary?.baseUrl, cloudinaryTransforms: config?.cloudinary?.transforms }) }));
112
- const contentElement = (_jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [_jsxs("div", { style: { marginBottom: 8 }, children: [_jsx("h3", { style: { margin: 0, fontSize: compact ? '1.1em' : '1.4em' }, children: profileLink ? (_jsx("a", { href: profileLink, target: "_blank", rel: "noopener noreferrer", style: { textDecoration: 'none', color: 'inherit' }, children: displayName })) : (displayName) }), pronouns && _jsxs("span", { style: { fontSize: '0.9em', color: '#666', marginLeft: 8 }, children: ["(", pronouns, ")"] })] }), (jobTitle || company) && (_jsxs("div", { style: { fontSize: '0.95em', color: '#555', marginBottom: 8 }, children: [jobTitle && _jsx("strong", { children: jobTitle }), jobTitle && company && _jsx("span", { children: " at " }), company && _jsx("span", { children: company })] })), location && (_jsxs("div", { style: { fontSize: '0.9em', color: '#777', marginBottom: 8 }, children: ["\uD83D\uDCCD ", location] })), aboutMe && !compact && (_jsx("p", { style: { margin: '12px 0', fontSize: '0.95em', lineHeight: 1.5, color: '#333' }, children: aboutMe })), (githubUrl || linkedinUrl || twitterUrl || instagramUrl || websiteUrl) && (_jsxs("div", { style: { display: 'flex', gap: 12, marginTop: 12, flexWrap: 'wrap' }, children: [githubUrl && (_jsx("a", { href: githubUrl, target: "_blank", rel: "noopener noreferrer", style: { color: '#333', textDecoration: 'none', fontSize: '1.2em' }, children: "GitHub" })), linkedinUrl && (_jsx("a", { href: linkedinUrl, target: "_blank", rel: "noopener noreferrer", style: { color: '#0077b5', textDecoration: 'none', fontSize: '1.2em' }, children: "LinkedIn" })), twitterUrl && (_jsx("a", { href: twitterUrl, target: "_blank", rel: "noopener noreferrer", style: { color: '#1da1f2', textDecoration: 'none', fontSize: '1.2em' }, children: "X" })), instagramUrl && (_jsx("a", { href: instagramUrl, target: "_blank", rel: "noopener noreferrer", style: { color: '#e4405f', textDecoration: 'none', fontSize: '1.2em' }, children: "Instagram" })), websiteUrl && (_jsx("a", { href: websiteUrl, target: "_blank", rel: "noopener noreferrer", style: { color: '#666', textDecoration: 'none', fontSize: '1.2em' }, children: "Website" }))] }))] }));
113
- return (_jsx("div", { style: {
114
- display: 'flex',
115
- flexDirection: isHorizontal ? 'row' : 'column',
116
- alignItems: isHorizontal ? 'flex-start' : 'center',
117
- gap: 16,
118
- padding: 16,
119
- border: '1px solid #e0e0e0',
120
- borderRadius: 8,
121
- maxWidth: isHorizontal ? 600 : 400,
122
- }, children: isHorizontal && photoOnRight ? (_jsxs(_Fragment, { children: [contentElement, avatarElement] })) : (_jsxs(_Fragment, { children: [avatarElement, contentElement] })) }));
108
+ const avatarElement = (_jsx("div", { className: "gravatar-avatar-container", children: _jsx(SmartImage, { src: avatarUrl, alt: displayName, title: displayName, width: avatarSize ?? 120, height: avatarSize ?? 120, quality: 100, className: "gravatar-avatar", cloudinaryEnv: config?.cloudinary?.product_env, cloudinaryDomain: config?.cloudinary?.baseUrl, cloudinaryTransforms: config?.cloudinary?.transforms }) }));
109
+ const contentElement = (_jsxs("div", { className: "gravatar-content", children: [_jsxs("div", { className: "gravatar-header", children: [_jsx("h3", { className: "gravatar-name", children: profileLink ? (_jsx("a", { href: profileLink, target: "_blank", rel: "noopener noreferrer", className: "gravatar-name-link", children: displayName })) : (displayName) }), pronouns && _jsxs("span", { className: "gravatar-pronouns", children: ["(", pronouns, ")"] })] }), (jobTitle || company) && (_jsxs("div", { className: "gravatar-job-company", children: [jobTitle && _jsx("strong", { children: jobTitle }), jobTitle && company && _jsx("span", { children: " at " }), company && _jsx("span", { children: company })] })), location && (_jsxs("div", { className: "gravatar-location", children: ["\uD83D\uDCCD ", location] })), aboutMe && !compact && (_jsx("p", { className: "gravatar-about", children: aboutMe })), (githubUrl || linkedinUrl || twitterUrl || instagramUrl || websiteUrl) && (_jsxs("div", { className: "gravatar-social-links", children: [githubUrl && (_jsx("a", { href: githubUrl, target: "_blank", rel: "noopener noreferrer", className: "gravatar-social-link", children: "GitHub" })), linkedinUrl && (_jsx("a", { href: linkedinUrl, target: "_blank", rel: "noopener noreferrer", className: "gravatar-social-link gravatar-social-link-linkedin", children: "LinkedIn" })), twitterUrl && (_jsx("a", { href: twitterUrl, target: "_blank", rel: "noopener noreferrer", className: "gravatar-social-link gravatar-social-link-twitter", children: "X" })), instagramUrl && (_jsx("a", { href: instagramUrl, target: "_blank", rel: "noopener noreferrer", className: "gravatar-social-link gravatar-social-link-instagram", children: "Instagram" })), websiteUrl && (_jsx("a", { href: websiteUrl, target: "_blank", rel: "noopener noreferrer", className: "gravatar-social-link gravatar-social-link-website", children: "Website" }))] }))] }));
110
+ return (_jsx("div", { className: `gravatar-card ${isHorizontal ? 'gravatar-card-horizontal' : ''} ${compact ? 'gravatar-card-compact' : ''}`, children: isHorizontal && photoOnRight ? (_jsxs(_Fragment, { children: [contentElement, avatarElement] })) : (_jsxs(_Fragment, { children: [avatarElement, contentElement] })) }));
123
111
  }
@@ -0,0 +1,110 @@
1
+ /* Gravatar Component Styles */
2
+
3
+ .gravatar-card {
4
+ display: flex;
5
+ flex-direction: column;
6
+ align-items: center;
7
+ gap: 16px;
8
+ padding: 16px;
9
+ border: 2px solid #e0e0e0;
10
+ border-radius: 8px;
11
+ /* max-width: 400px; */
12
+ }
13
+
14
+ .gravatar-card-horizontal {
15
+ flex-direction: row;
16
+ align-items: flex-start;
17
+ /* max-width: 600px; */
18
+ }
19
+
20
+ .gravatar-avatar-container {
21
+ flex-shrink: 0;
22
+ }
23
+
24
+ .gravatar-avatar {
25
+ border-radius: 50%;
26
+ object-fit: cover;
27
+ display: block;
28
+ }
29
+
30
+ .gravatar-content {
31
+ flex: 1;
32
+ min-width: 0;
33
+ }
34
+
35
+ .gravatar-header {
36
+ margin-bottom: 8px;
37
+ }
38
+
39
+ .gravatar-name {
40
+ margin: 0;
41
+ font-size: 1.4em;
42
+ }
43
+
44
+ .gravatar-name-link {
45
+ text-decoration: none;
46
+ color: inherit;
47
+ }
48
+
49
+ .gravatar-pronouns {
50
+ font-size: 0.9em;
51
+ color: #666;
52
+ margin-left: 8px;
53
+ }
54
+
55
+ .gravatar-job-company {
56
+ font-size: 0.95em;
57
+ color: #555;
58
+ margin-bottom: 8px;
59
+ }
60
+
61
+ .gravatar-location {
62
+ font-size: 0.9em;
63
+ color: #777;
64
+ margin-bottom: 8px;
65
+ }
66
+
67
+ .gravatar-about {
68
+ margin: 12px 0;
69
+ font-size: 0.95em;
70
+ line-height: 1.5;
71
+ color: #333;
72
+ }
73
+
74
+ .gravatar-social-links {
75
+ display: flex;
76
+ gap: 12px;
77
+ margin-top: 12px;
78
+ flex-wrap: wrap;
79
+ }
80
+
81
+ .gravatar-social-link {
82
+ color: #333;
83
+ text-decoration: none;
84
+ font-size: 1.2em;
85
+ }
86
+
87
+ .gravatar-social-link-linkedin {
88
+ color: #0077b5;
89
+ }
90
+
91
+ .gravatar-social-link-twitter {
92
+ color: #1da1f2;
93
+ }
94
+
95
+ .gravatar-social-link-instagram {
96
+ color: #e4405f;
97
+ }
98
+
99
+ .gravatar-social-link-website {
100
+ color: #666;
101
+ }
102
+
103
+ /* Compact variant */
104
+ .gravatar-card-compact .gravatar-name {
105
+ font-size: 1.1em;
106
+ }
107
+
108
+ .gravatar-card-compact .gravatar-about {
109
+ display: none;
110
+ }
@@ -2,6 +2,7 @@
2
2
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { useEffect } from 'react';
4
4
  import PropTypes from 'prop-types';
5
+ import { usePixelatedConfig } from '../config/config.client';
5
6
  export function initializeHubSpotScript(region, portalId) {
6
7
  if (typeof document === 'undefined')
7
8
  return;
@@ -16,22 +17,26 @@ export function initializeHubSpotScript(region, portalId) {
16
17
  document.head.appendChild(script);
17
18
  }
18
19
  HubSpotForm.propTypes = {
19
- region: PropTypes.string.isRequired,
20
- portalId: PropTypes.string.isRequired,
21
- formId: PropTypes.string.isRequired,
20
+ region: PropTypes.string,
21
+ portalId: PropTypes.string,
22
+ formId: PropTypes.string,
22
23
  target: PropTypes.string,
23
24
  containerId: PropTypes.string,
24
25
  };
25
26
  export function HubSpotForm({ region, portalId, formId, target, containerId = 'hubspot-form-container' }) {
27
+ const config = usePixelatedConfig();
28
+ const finalRegion = region || config.hubspot?.region || 'na1';
29
+ const finalPortalId = portalId || config.hubspot?.portalId || '';
30
+ const finalFormId = formId || config.hubspot?.formId || '';
26
31
  const formTarget = target || `#${containerId}`;
27
32
  useEffect(() => {
28
33
  const createHubspotForm = () => {
29
34
  const win = window;
30
35
  if (win.hbspt && win.hbspt.forms) {
31
36
  win.hbspt.forms.create({
32
- region,
33
- portalId,
34
- formId,
37
+ region: finalRegion,
38
+ portalId: finalPortalId,
39
+ formId: finalFormId,
35
40
  target: formTarget
36
41
  });
37
42
  }
@@ -40,8 +45,8 @@ export function HubSpotForm({ region, portalId, formId, target, containerId = 'h
40
45
  }
41
46
  };
42
47
  createHubspotForm();
43
- }, [region, portalId, formId, formTarget]);
44
- return _jsx("div", { className: "hs-form-frame", "data-region": region, "data-form-id": formId, "data-portal-id": portalId });
48
+ }, [finalRegion, finalPortalId, finalFormId, formTarget]);
49
+ return _jsx("div", { className: "hs-form-frame", "data-region": finalRegion, "data-form-id": finalFormId, "data-portal-id": finalPortalId });
45
50
  }
46
51
  HubspotTrackingCode.propTypes = {
47
52
  hubID: PropTypes.string.isRequired,
@@ -13,7 +13,10 @@ function decodeString(str) {
13
13
  return textarea.value;
14
14
  }
15
15
  export function BlogPostList(props) {
16
- const { site, count, posts: cachedPosts } = props;
16
+ const { site: propSite, baseURL: propBaseURL, count, posts: cachedPosts } = props;
17
+ const config = usePixelatedConfig();
18
+ const site = propSite ?? config?.wordpress?.site;
19
+ const baseURL = propBaseURL ?? config?.wordpress?.baseURL;
17
20
  const [posts, setPosts] = useState(cachedPosts ?? []);
18
21
  useEffect(() => {
19
22
  // If posts are provided, use them directly without fetching
@@ -22,15 +25,20 @@ export function BlogPostList(props) {
22
25
  setPosts(sorted);
23
26
  return;
24
27
  }
28
+ // If no site is configured, don't fetch
29
+ if (!site) {
30
+ console.warn('WordPress site not configured. Provide site prop or wordpress.site in config.');
31
+ return;
32
+ }
25
33
  // Otherwise, fetch from WordPress
26
34
  ToggleLoading({ show: true });
27
35
  (async () => {
28
- const data = (await getWordPressItems({ site, count })) ?? [];
36
+ const data = (await getWordPressItems({ site, count, baseURL })) ?? [];
29
37
  const sorted = data.sort((a, b) => ((a.date ?? '') < (b.date ?? '')) ? 1 : -1);
30
38
  setPosts(sorted);
31
39
  ToggleLoading({ show: false });
32
40
  })();
33
- }, [site, count, cachedPosts]);
41
+ }, [site, baseURL, count, cachedPosts]);
34
42
  return (_jsxs(_Fragment, { children: [_jsx(Loading, {}), posts.map((post) => (_jsx(PageGridItem, { children: _jsx(BlogPostSummary, { ID: post.ID, title: post.title, date: post.date, excerpt: post.excerpt, URL: post.URL, categories: post.categories, featured_image: post.featured_image }) }, post.ID)))] }));
35
43
  }
36
44
  export function BlogPostSummary(props) {
@@ -7,15 +7,17 @@ const wpCategoriesPath = "/categories";
7
7
  getWordPressItems.propTypes = {
8
8
  site: PropTypes.string.isRequired,
9
9
  count: PropTypes.number,
10
+ baseURL: PropTypes.string,
10
11
  };
11
12
  export async function getWordPressItems(props) {
13
+ const { baseURL = wpApiURL } = props;
12
14
  const requested = props.count; // undefined means fetch all available
13
15
  const posts = [];
14
16
  let page = 1;
15
17
  while (true) {
16
18
  const remaining = requested ? Math.max(requested - posts.length, 0) : 100;
17
19
  const number = Math.min(remaining || 100, 100);
18
- const wpPostsURL = `${wpApiURL}${props.site}/posts?number=${number}&page=${page}`;
20
+ const wpPostsURL = `${baseURL}${props.site}/posts?number=${number}&page=${page}`;
19
21
  try {
20
22
  const response = await fetch(wpPostsURL);
21
23
  const data = await response.json();
@@ -82,9 +84,11 @@ export function getWordPressItemImages(item) {
82
84
  }
83
85
  getWordPressCategories.propTypes = {
84
86
  site: PropTypes.string.isRequired,
87
+ baseURL: PropTypes.string,
85
88
  };
86
89
  export async function getWordPressCategories(props) {
87
- const wpCategoriesURL = wpApiURL + props.site + wpCategoriesPath;
90
+ const { baseURL = wpApiURL } = props;
91
+ const wpCategoriesURL = baseURL + props.site + wpCategoriesPath;
88
92
  const categories = [];
89
93
  try {
90
94
  const response = await fetch(wpCategoriesURL);
@@ -15,9 +15,6 @@ const pixelatedConfig = {
15
15
  management_access_token: "muY9LfpCt4qoXosDsnRkkoH3DAVVuUFEuB0WRKRdBUM",
16
16
  preview_access_token: "muY9LfpCt4qoXosDsnRkkoH3DAVVuUFEuB0WRKRdBUM",
17
17
  },
18
- featureFlags: {
19
- enableNewGrid: true,
20
- },
21
18
  ebay: {
22
19
  proxyURL: 'https://proxy.provier.com/proxy?url=',
23
20
  appId: 'your-ebay-client-id',
@@ -33,6 +30,9 @@ const pixelatedConfig = {
33
30
  baseItemURL: 'https://api.ebay.com/buy/browse/v1/item',
34
31
  qsItemURL: '/v1|295959752403|0?fieldgroups=PRODUCT,ADDITIONAL_SELLER_DETAILS',
35
32
  },
33
+ featureFlags: {
34
+ enableNewGrid: true,
35
+ },
36
36
  flickr: {
37
37
  baseURL: 'https://api.flickr.com/services/rest/?',
38
38
  urlProps: {
@@ -56,6 +56,7 @@ const pixelatedConfig = {
56
56
  "id": "G-XXXXXXX"
57
57
  },
58
58
  hubspot: {
59
+ region: 'na1',
59
60
  portalId: 'your-hubspot-portal-id',
60
61
  formId: 'your-default-form-id',
61
62
  trackingCode: 'UA-XXXXXXXXX-X',
@@ -66,5 +67,12 @@ const pixelatedConfig = {
66
67
  payPalApiKey: "your-paypal-client-id",
67
68
  payPalSecret: "your-paypal-client-secret"
68
69
  },
70
+ proxy: {
71
+ proxyURL: 'https://proxy.pixelated.tech/prod/proxy?url='
72
+ },
73
+ wordpress: {
74
+ baseURL: 'https://public-api.wordpress.com/rest/v1/sites/',
75
+ site: 'your-blog.wordpress.com'
76
+ },
69
77
  };
70
78
  export default pixelatedConfig;
@@ -2,6 +2,7 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  // import { useEffect } from "react";
4
4
  import PropTypes from "prop-types";
5
+ import { usePixelatedConfig } from "../config/config.client";
5
6
  function isGA() {
6
7
  const hasGtag = typeof window.gtag === 'function';
7
8
  const hasDataLayer = typeof window.dataLayer !== 'undefined' && Array.isArray(window.dataLayer);
@@ -11,9 +12,16 @@ function isGA() {
11
12
  return (hasGtag || hasDataLayer || hasGAScript || hasGAScriptID || hasGAInitScriptID);
12
13
  }
13
14
  GoogleAnalytics.propTypes = {
14
- id: PropTypes.string.isRequired,
15
+ id: PropTypes.string,
15
16
  };
16
17
  export function GoogleAnalytics(props) {
18
+ const config = usePixelatedConfig();
19
+ const id = props.id || config?.googleAnalytics?.id;
20
+ const adId = config?.googleAnalytics?.adId;
21
+ if (!id) {
22
+ console.warn('Google Analytics ID not provided. Set id prop or googleAnalytics.id in config.');
23
+ return null;
24
+ }
17
25
  if (typeof window === 'undefined') {
18
26
  return;
19
27
  }
@@ -23,7 +31,7 @@ export function GoogleAnalytics(props) {
23
31
  if (isGA()) {
24
32
  return;
25
33
  }
26
- const gaSRC = "https://www.googletagmanager.com/gtag/js?id=" + props.id;
34
+ const gaSRC = "https://www.googletagmanager.com/gtag/js?id=" + id;
27
35
  // useEffect(() => {
28
36
  // INIT GA TAG TO PAGE
29
37
  const gaInit = document.createElement("script");
@@ -34,7 +42,8 @@ export function GoogleAnalytics(props) {
34
42
  window.dataLayer = window.dataLayer || [];
35
43
  window.gtag = function gtag(){ window.dataLayer.push(arguments); }
36
44
  window.gtag('js', new Date());
37
- window.gtag('config', '${props.id}');
45
+ window.gtag('config', '${id}');
46
+ ${adId ? `window.gtag('config', '${adId}');` : ''}
38
47
  `;
39
48
  document.head.appendChild(gaInit);
40
49
  // INSTALL GA SCRIPT
@@ -1,11 +1,14 @@
1
1
  import PropTypes, { InferProps } from 'prop-types';
2
2
  import type { CarouselCardType } from '../carousel/carousel';
3
+ import type { FlickrConfig } from '../config/config.types';
3
4
  export declare function GetFlickrData(props: {
4
- flickr: any;
5
+ flickr?: any;
6
+ config?: FlickrConfig;
5
7
  }): Promise<any>;
6
8
  export declare namespace GetFlickrData {
7
9
  var PropTypes: {
8
- flickr: PropTypes.Validator<object>;
10
+ flickr: PropTypes.Requireable<object>;
11
+ config: PropTypes.Requireable<object>;
9
12
  };
10
13
  }
11
14
  export type GenerateFlickrCardsType = InferProps<typeof GenerateFlickrCards.propTypes>;
@@ -1 +1 @@
1
- {"version":3,"file":"flickr.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/flickr.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAqE7D,wBAAgB,aAAa,CAAE,KAAK,EAAE;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,gBAuCpD;yBAvCe,aAAa;;;;;AA+C7B,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACvF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,uBAAuB;;;;;;;gBAejE;yBAfe,mBAAmB;;;;;;AA8BnC,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAE,KAAK,EAAE,iBAAiB,2CA0CtD;yBA1Ce,aAAa"}
1
+ {"version":3,"file":"flickr.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/flickr.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAsE3D,wBAAgB,aAAa,CAAE,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,gBAmD5E;yBAnDe,aAAa;;;;;;AA2D7B,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACvF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,uBAAuB;;;;;;;gBAejE;yBAfe,mBAAmB;;;;;;AA8BnC,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAE,KAAK,EAAE,iBAAiB,2CA0CtD;yBA1Ce,aAAa"}
@@ -1,17 +1,20 @@
1
1
  import PropTypes, { InferProps } from 'prop-types';
2
+ import './google.reviews.css';
2
3
  export type GoogleReviewsCardType = InferProps<typeof GoogleReviewsCard.propTypes>;
3
4
  export declare function GoogleReviewsCard(props: {
4
5
  placeId: string;
5
6
  language?: string;
6
7
  maxReviews?: number;
7
8
  proxyBase?: string;
9
+ apiKey?: string;
8
10
  }): import("react/jsx-runtime").JSX.Element;
9
11
  export declare namespace GoogleReviewsCard {
10
12
  var propTypes: {
11
- placeID: PropTypes.Validator<string>;
13
+ placeId: PropTypes.Validator<string>;
12
14
  language: PropTypes.Requireable<string>;
13
15
  maxReviews: PropTypes.Requireable<number>;
14
16
  proxyBase: PropTypes.Requireable<string>;
17
+ apiKey: PropTypes.Requireable<string>;
15
18
  };
16
19
  }
17
20
  //# sourceMappingURL=google.reviews.components.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"google.reviews.components.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/google.reviews.components.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAYnD,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACnF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,2CAwFA;yBA7Fe,iBAAiB"}
1
+ {"version":3,"file":"google.reviews.components.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/google.reviews.components.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,sBAAsB,CAAC;AAW9B,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACnF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,2CA+FA;yBArGe,iBAAiB"}
@@ -18,6 +18,7 @@ export declare function getGoogleReviewsByPlaceId(params: {
18
18
  language?: string;
19
19
  maxReviews?: number;
20
20
  proxyBase?: string;
21
+ apiKey: string;
21
22
  }): Promise<{
22
23
  place?: GooglePlaceSummary;
23
24
  reviews: GoogleReview[];
@@ -1 +1 @@
1
- {"version":3,"file":"google.reviews.functions.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/google.reviews.functions.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,wBAAsB,yBAAyB,CAAC,MAAM,EAAE;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CA2BnE"}
1
+ {"version":3,"file":"google.reviews.functions.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/google.reviews.functions.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,wBAAsB,yBAAyB,CAAC,MAAM,EAAE;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAuBnE"}
@@ -1,4 +1,5 @@
1
1
  import PropTypes, { InferProps } from 'prop-types';
2
+ import './gravatar.css';
2
3
  export type GravatarCardType = InferProps<typeof GravatarCard.propTypes>;
3
4
  export declare function GravatarCard(props: GravatarCardType): import("react/jsx-runtime").JSX.Element;
4
5
  export declare namespace GravatarCard {
@@ -1 +1 @@
1
- {"version":3,"file":"gravatar.components.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/gravatar.components.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA2FnD,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;AACzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,2CAgJnD;yBAhJe,YAAY"}
1
+ {"version":3,"file":"gravatar.components.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/gravatar.components.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAInD,OAAO,gBAAgB,CAAC;AAwFxB,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;AACzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,2CAoInD;yBApIe,YAAY"}
@@ -4,9 +4,9 @@ type HubSpotFormType = InferProps<typeof HubSpotForm.propTypes>;
4
4
  export declare function HubSpotForm({ region, portalId, formId, target, containerId }: HubSpotFormType): import("react/jsx-runtime").JSX.Element;
5
5
  export declare namespace HubSpotForm {
6
6
  var propTypes: {
7
- region: PropTypes.Validator<string>;
8
- portalId: PropTypes.Validator<string>;
9
- formId: PropTypes.Validator<string>;
7
+ region: PropTypes.Requireable<string>;
8
+ portalId: PropTypes.Requireable<string>;
9
+ formId: PropTypes.Requireable<string>;
10
10
  target: PropTypes.Requireable<string>;
11
11
  containerId: PropTypes.Requireable<string>;
12
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"hubspot.components.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/hubspot.components.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKnD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAUvE;AASD,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;AAChE,wBAAgB,WAAW,CAAC,EAC3B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAsC,EACxE,EAAE,eAAe,2CAyBjB;yBA3Be,WAAW;;;;;;;;;AAmC3B,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACvF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,uBAAuB,2CAQjE;yBARe,mBAAmB;;;;;AAmBnC,MAAM,MAAM,6BAA6B,GAAG,UAAU,CAAC,OAAO,yBAAyB,CAAC,SAAS,CAAC,CAAC;AACnG,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,6BAA6B,gBAmBnF;yBAnBqB,yBAAyB"}
1
+ {"version":3,"file":"hubspot.components.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/hubspot.components.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMnD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAUvE;AASD,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;AAChE,wBAAgB,WAAW,CAAC,EAC3B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAsC,EACxE,EAAE,eAAe,2CA+BjB;yBAjCe,WAAW;;;;;;;;;AAyC3B,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACvF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,uBAAuB,2CAQjE;yBARe,mBAAmB;;;;;AAmBnC,MAAM,MAAM,6BAA6B,GAAG,UAAU,CAAC,OAAO,yBAAyB,CAAC,SAAS,CAAC,CAAC;AACnG,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,6BAA6B,gBAmBnF;yBAnBqB,yBAAyB"}
@@ -1,7 +1,8 @@
1
1
  import type { BlogPostType } from './wordpress.functions';
2
2
  import "./wordpress.css";
3
3
  export declare function BlogPostList(props: {
4
- site: string;
4
+ site?: string;
5
+ baseURL?: string;
5
6
  count?: number;
6
7
  posts?: BlogPostType[];
7
8
  }): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"wordpress.components.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/wordpress.components.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,OAAO,iBAAiB,CAAC;AAWzB,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,2CAyC3F;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,2CA+ClD;AAID,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,kDA0BjE"}
1
+ {"version":3,"file":"wordpress.components.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/wordpress.components.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,OAAO,iBAAiB,CAAC;AAWzB,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,2CAkD9G;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,2CA+ClD;AAID,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,kDA0BjE"}
@@ -19,11 +19,13 @@ export type getWordPressItemsType = InferProps<typeof getWordPressItems.propType
19
19
  export declare function getWordPressItems(props: {
20
20
  site: string;
21
21
  count?: number;
22
+ baseURL?: string;
22
23
  }): Promise<BlogPostType[] | undefined>;
23
24
  export declare namespace getWordPressItems {
24
25
  var propTypes: {
25
26
  site: PropTypes.Validator<string>;
26
27
  count: PropTypes.Requireable<number>;
28
+ baseURL: PropTypes.Requireable<string>;
27
29
  };
28
30
  }
29
31
  export type WordPressSitemapImage = {
@@ -50,10 +52,12 @@ export type BlogPostCategoryType = {
50
52
  export type getWordPressCategoriesType = InferProps<typeof getWordPressCategories.propTypes>;
51
53
  export declare function getWordPressCategories(props: {
52
54
  site: string;
55
+ baseURL?: string;
53
56
  }): Promise<any[] | undefined>;
54
57
  export declare namespace getWordPressCategories {
55
58
  var propTypes: {
56
59
  site: PropTypes.Validator<string>;
60
+ baseURL: PropTypes.Requireable<string>;
57
61
  };
58
62
  }
59
63
  //# sourceMappingURL=wordpress.functions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wordpress.functions.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/wordpress.functions.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAWnD,MAAM,MAAM,YAAY,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE;QAChB,GAAG,EAAE,MAAM,CAAC;KACZ,CAAA;IACD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC,CAAC;AAKF,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACnF,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,uCA0B9E;yBA1BqB,iBAAiB;;;;;;AAgCvC,MAAM,MAAM,qBAAqB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAIF,MAAM,MAAM,0BAA0B,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC7F,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,qBAAqB,EAAE,CAuClF;yBAvCe,sBAAsB;;;;;AA8CtC,MAAM,MAAM,oBAAoB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,MAAM,MAAM,0BAA0B,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC7F,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,8BAcnE;yBAdqB,sBAAsB"}
1
+ {"version":3,"file":"wordpress.functions.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/wordpress.functions.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAWnD,MAAM,MAAM,YAAY,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE;QAChB,GAAG,EAAE,MAAM,CAAC;KACZ,CAAA;IACD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC,CAAC;AAMF,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACnF,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,uCA2BhG;yBA3BqB,iBAAiB;;;;;;;AAiCvC,MAAM,MAAM,qBAAqB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAIF,MAAM,MAAM,0BAA0B,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC7F,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,qBAAqB,EAAE,CAuClF;yBAvCe,sBAAsB;;;;;AA8CtC,MAAM,MAAM,oBAAoB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CACjB,CAAC;AAKF,MAAM,MAAM,0BAA0B,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC7F,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,8BAerF;yBAfqB,sBAAsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.example.d.ts","sourceRoot":"","sources":["../../../../src/components/config/config.example.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,QAAA,MAAM,eAAe,EAAE,eAkEtB,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"config.example.d.ts","sourceRoot":"","sources":["../../../../src/components/config/config.example.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,QAAA,MAAM,eAAe,EAAE,eA0EtB,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -55,6 +55,7 @@ export interface GoogleSearchConsoleConfig {
55
55
  id: string;
56
56
  }
57
57
  export interface HubspotConfig {
58
+ region?: string;
58
59
  portalId?: string;
59
60
  formId?: string;
60
61
  trackingCode?: string;
@@ -66,8 +67,12 @@ export interface PaypalConfig {
66
67
  payPalApiKey: string;
67
68
  payPalSecret: string;
68
69
  }
70
+ export interface ProxyConfig {
71
+ proxyURL: string;
72
+ }
69
73
  export interface WordpressConfig {
70
- endpoint: string;
74
+ baseURL: string;
75
+ site: string;
71
76
  }
72
77
  export interface PixelatedConfig {
73
78
  cloudinary?: CloudinaryConfig;
@@ -79,6 +84,7 @@ export interface PixelatedConfig {
79
84
  googleSearchConsole?: GoogleSearchConsoleConfig;
80
85
  hubspot?: HubspotConfig;
81
86
  paypal?: PaypalConfig;
87
+ proxy?: ProxyConfig;
82
88
  wordpress?: WordpressConfig;
83
89
  }
84
90
  //# sourceMappingURL=config.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../../../src/components/config/config.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../../../src/components/config/config.types.ts"],"names":[],"mappings":"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"}
@@ -36,7 +36,7 @@ export declare namespace PageSection {
36
36
  tablet: PropTypes.Requireable<number>;
37
37
  desktop: PropTypes.Requireable<number>;
38
38
  }>>;
39
- direction: PropTypes.Requireable<"row" | "column" | "column-reverse" | "row-reverse">;
39
+ direction: PropTypes.Requireable<"row" | "column" | "row-reverse" | "column-reverse">;
40
40
  wrap: PropTypes.Requireable<"nowrap" | "wrap" | "wrap-reverse">;
41
41
  justifyContent: PropTypes.Requireable<"center" | "end" | "start" | "space-between" | "space-around" | "space-evenly">;
42
42
  alignItems: PropTypes.Requireable<"center" | "baseline" | "end" | "start" | "stretch">;
@@ -6,10 +6,10 @@ declare global {
6
6
  }
7
7
  }
8
8
  export type GoogleAnalyticsType = InferProps<typeof GoogleAnalytics.propTypes>;
9
- export declare function GoogleAnalytics(props: GoogleAnalyticsType): import("react/jsx-runtime").JSX.Element | undefined;
9
+ export declare function GoogleAnalytics(props: GoogleAnalyticsType): import("react/jsx-runtime").JSX.Element | null | undefined;
10
10
  export declare namespace GoogleAnalytics {
11
11
  var propTypes: {
12
- id: PropTypes.Validator<string>;
12
+ id: PropTypes.Requireable<string>;
13
13
  };
14
14
  }
15
15
  export type GoogleAnalyticsEventType = InferProps<typeof GoogleAnalyticsEvent.propTypes>;
@@ -1 +1 @@
1
- {"version":3,"file":"googleanalytics.d.ts","sourceRoot":"","sources":["../../../../src/components/seo/googleanalytics.tsx"],"names":[],"mappings":"AAIA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAYnD,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;KAChC;CACD;AAiBD,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;AAC/E,wBAAgB,eAAe,CAAE,KAAK,EAAE,mBAAmB,uDA6B1D;yBA7Be,eAAe;;;;;AAqC/B,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACzF,wBAAgB,oBAAoB,CAAE,KAAK,EAAE,wBAAwB,oBAYpE;yBAZe,oBAAoB"}
1
+ {"version":3,"file":"googleanalytics.d.ts","sourceRoot":"","sources":["../../../../src/components/seo/googleanalytics.tsx"],"names":[],"mappings":"AAIA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAanD,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;KAChC;CACD;AAiBD,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;AAC/E,wBAAgB,eAAe,CAAE,KAAK,EAAE,mBAAmB,8DAuC1D;yBAvCe,eAAe;;;;;AA+C/B,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACzF,wBAAgB,oBAAoB,CAAE,KAAK,EAAE,wBAAwB,oBAYpE;yBAZe,oBAAoB"}
@@ -2,10 +2,21 @@ import { GoogleReviewsCard } from '@/components/cms/google.reviews.components';
2
2
  declare const _default: {
3
3
  title: string;
4
4
  component: typeof GoogleReviewsCard;
5
+ parameters: {
6
+ docs: {
7
+ description: {
8
+ component: string;
9
+ };
10
+ };
11
+ };
5
12
  };
6
13
  export default _default;
7
14
  export declare const ReviewsByPlaceId: {
8
15
  (): import("react/jsx-runtime").JSX.Element;
9
16
  storyName: string;
10
17
  };
18
+ export declare const ReviewsWithoutProxy: {
19
+ (): import("react/jsx-runtime").JSX.Element;
20
+ storyName: string;
21
+ };
11
22
  //# sourceMappingURL=google.reviews.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"google.reviews.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/cms/google.reviews.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;;;;;AAE/E,wBAGE;AAEF,eAAO,MAAM,gBAAgB;;;CAO5B,CAAC"}
1
+ {"version":3,"file":"google.reviews.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/cms/google.reviews.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;;;;;;;;;;;;AAE/E,wBAmCE;AAEF,eAAO,MAAM,gBAAgB;;;CAa5B,CAAC;AAGF,eAAO,MAAM,mBAAmB;;;CAa/B,CAAC"}
@@ -1,4 +1,8 @@
1
1
  export function WordpressBlogPostSummary(): import("react/jsx-runtime").JSX.Element;
2
+ export function WordpressBlogPostList(): import("react/jsx-runtime").JSX.Element;
3
+ export namespace WordpressBlogPostList {
4
+ let storyName: string;
5
+ }
2
6
  declare namespace _default {
3
7
  export let title: string;
4
8
  export { BlogPostSummary as component };
@@ -1 +1 @@
1
- {"version":3,"file":"wordpress.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/cms/wordpress.stories.js"],"names":[],"mappings":"AA0BA,oFAsCC;;;;;;;gCA/D+B,uCAAuC"}
1
+ {"version":3,"file":"wordpress.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/cms/wordpress.stories.js"],"names":[],"mappings":"AA8BA,oFAsCC;AAED,iFAEC;;;;;;;;;;gCAvE6C,uCAAuC"}
@@ -1,12 +1,19 @@
1
1
  declare namespace _default {
2
2
  export let title: string;
3
3
  export { GoogleAnalytics as component };
4
+ export let decorators: ((Story: any) => import("react/jsx-runtime").JSX.Element)[];
4
5
  }
5
6
  export default _default;
6
- export namespace Google_Analytics {
7
- namespace args {
7
+ export namespace Google_Analytics_Config {
8
+ let args: {};
9
+ }
10
+ export namespace Google_Analytics_Props {
11
+ export namespace args_1 {
8
12
  let id: string;
9
13
  }
14
+ export { args_1 as args };
15
+ let decorators_1: ((Story: any) => import("react/jsx-runtime").JSX.Element)[];
16
+ export { decorators_1 as decorators };
10
17
  }
11
18
  import { GoogleAnalytics } from '@/components/seo/googleanalytics';
12
19
  //# sourceMappingURL=seo.googleanalytics.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seo.googleanalytics.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/seo/seo.googleanalytics.stories.js"],"names":[],"mappings":";;;;;;;;;;gCAAgC,kCAAkC"}
1
+ {"version":3,"file":"seo.googleanalytics.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/seo/seo.googleanalytics.stories.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;gCAAgC,kCAAkC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=google.reviews.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google.reviews.test.d.ts","sourceRoot":"","sources":["../../../src/tests/google.reviews.test.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixelated-tech/components",
3
- "version": "3.2.8",
3
+ "version": "3.2.10",
4
4
  "private": false,
5
5
  "author": {
6
6
  "name": "Pixelated Technologies",
@@ -91,19 +91,19 @@
91
91
  "@eslint/markdown": "^7.5.1",
92
92
  "@storybook/addon-webpack5-compiler-babel": "^4.0.0",
93
93
  "@storybook/preset-scss": "^1.0.3",
94
- "@storybook/react-webpack5": "^10.1.8",
94
+ "@storybook/react-webpack5": "^10.1.9",
95
95
  "@testing-library/dom": "^10.4.1",
96
- "@testing-library/react": "^16.3.0",
96
+ "@testing-library/react": "^16.3.1",
97
97
  "@testing-library/user-event": "^14.6.1",
98
98
  "@types/md5": "^2.3.6",
99
99
  "@types/node": "^25.0.2",
100
100
  "@types/prop-types": "^15.7.15",
101
101
  "@types/react": "^19.2.7",
102
102
  "@types/react-dom": "^19.2.3",
103
- "@typescript-eslint/eslint-plugin": "^8.49.0",
103
+ "@typescript-eslint/eslint-plugin": "^8.50.0",
104
104
  "@vitejs/plugin-react": "^5.1.2",
105
- "@vitest/coverage-v8": "^4.0.15",
106
- "@vitest/ui": "^4.0.15",
105
+ "@vitest/coverage-v8": "^4.0.16",
106
+ "@vitest/ui": "^4.0.16",
107
107
  "ajv": "^8.17.1",
108
108
  "ajv-keywords": "^5.1.0",
109
109
  "babel-loader": "^10.0.0",
@@ -117,7 +117,7 @@
117
117
  "eslint-plugin-n": "^17.23.1",
118
118
  "eslint-plugin-promise": "^7.2.1",
119
119
  "eslint-plugin-react": "^7.37.4",
120
- "eslint-plugin-storybook": "^10.1.8",
120
+ "eslint-plugin-storybook": "^10.1.9",
121
121
  "file-loader": "^6.2.0",
122
122
  "happy-dom": "^20.0.11",
123
123
  "jsdom": "^27.3.0",
@@ -129,15 +129,15 @@
129
129
  "react": "^19.2.3",
130
130
  "react-dom": "^19.2.3",
131
131
  "react-test-renderer": "^19.2.3",
132
- "sass": "^1.96.0",
132
+ "sass": "^1.97.0",
133
133
  "sass-loader": "^16.0.6",
134
- "storybook": "^10.1.8",
134
+ "storybook": "^10.1.9",
135
135
  "style-loader": "^4.0.0",
136
136
  "ts-loader": "^9.5.4",
137
137
  "typescript": "^5.9.3",
138
138
  "url-loader": "^4.1.1",
139
- "vitest": "^4.0.15",
140
- "webpack": "^5.103.0",
139
+ "vitest": "^4.0.16",
140
+ "webpack": "^5.104.0",
141
141
  "webpack-cli": "^6.0.1",
142
142
  "webpack-dev-server": "^5.2.2",
143
143
  "webpack-node-externals": "^3.0.0"
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=google-reviews.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google-reviews.test.d.ts","sourceRoot":"","sources":["../../../src/tests/google-reviews.test.tsx"],"names":[],"mappings":""}