@pixelated-tech/components 3.14.0 → 3.14.2

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 (39) hide show
  1. package/dist/components/admin/site-health/google.api.integration.js +4 -4
  2. package/dist/components/admin/site-health/site-health-dependency-vulnerabilities.js +1 -3
  3. package/dist/components/general/404.js +1 -1
  4. package/dist/components/general/callout.js +1 -1
  5. package/dist/components/general/carousel.js +3 -3
  6. package/dist/components/general/countup.js +1 -1
  7. package/dist/components/general/metadata.functions.js +1 -1
  8. package/dist/components/general/proxy-handler.js +2 -2
  9. package/dist/components/general/semantic.js +3 -6
  10. package/dist/components/general/smartimage.js +2 -4
  11. package/dist/components/general/styleguide.js +1 -1
  12. package/dist/components/general/tiles.js +2 -2
  13. package/dist/components/general/timeline.js +1 -1
  14. package/dist/components/general/utilities.js +17 -0
  15. package/dist/components/integrations/flickr.js +58 -31
  16. package/dist/components/integrations/google.reviews.components.js +3 -0
  17. package/dist/components/shoppingcart/paypal.js +1 -1
  18. package/dist/components/sitebuilder/config/ConfigEngine.js +2 -2
  19. package/dist/components/sitebuilder/config/google-fonts.js +3 -3
  20. package/dist/config/pixelated.config.json.enc +1 -1
  21. package/dist/index.adminclient.js +1 -0
  22. package/dist/index.server.js +0 -1
  23. package/dist/scripts/create-pixelated-app.json +5 -0
  24. package/dist/types/components/config/config.types.d.ts +2 -0
  25. package/dist/types/components/config/config.types.d.ts.map +1 -1
  26. package/dist/types/components/general/404.d.ts.map +1 -1
  27. package/dist/types/components/general/callout.d.ts +1 -1
  28. package/dist/types/components/general/callout.d.ts.map +1 -1
  29. package/dist/types/components/general/smartimage.d.ts.map +1 -1
  30. package/dist/types/components/general/utilities.d.ts +7 -0
  31. package/dist/types/components/general/utilities.d.ts.map +1 -1
  32. package/dist/types/components/integrations/flickr.d.ts +2 -2
  33. package/dist/types/components/integrations/flickr.d.ts.map +1 -1
  34. package/dist/types/components/integrations/google.reviews.components.d.ts.map +1 -1
  35. package/dist/types/components/integrations/socialcard.d.ts +1 -1
  36. package/dist/types/index.adminclient.d.ts +1 -0
  37. package/dist/types/index.server.d.ts +0 -1
  38. package/dist/types/stories/general/smartimage.stories.d.ts +1 -1
  39. package/package.json +27 -26
@@ -73,8 +73,8 @@ export async function createSearchConsoleClient(config) {
73
73
  auth: result.auth
74
74
  };
75
75
  }
76
- // Cache for analytics data (1 hour) — isolated per domain
77
- const analyticsCache = new CacheManager({ domain: getDomain(), namespace: 'analytics', ttl: 60 * 60 * 1000 });
76
+ // Cache for analytics data (1 day, localStorage) — isolated per domain
77
+ const analyticsCache = new CacheManager({ domain: getDomain(), namespace: 'analytics', ttl: 1000 * 60 * 60 * 24, mode: 'local' });
78
78
  /**
79
79
  * Get Google Analytics data for a site with current/previous period comparison
80
80
  */
@@ -169,8 +169,8 @@ export async function getGoogleAnalyticsData(config, siteName, startDate, endDat
169
169
  };
170
170
  }
171
171
  }
172
- // Cache for search console data (1 hour) — isolated per domain
173
- const searchConsoleCache = new CacheManager({ domain: getDomain(), namespace: 'searchconsole', ttl: 60 * 60 * 1000 });
172
+ // Cache for search console data (1 day, localStorage) — isolated per domain
173
+ const searchConsoleCache = new CacheManager({ domain: getDomain(), namespace: 'searchconsole', ttl: 1000 * 60 * 60 * 24, mode: 'local' });
174
174
  /**
175
175
  * Get Google Search Console data for a site with current/previous period comparison
176
176
  */
@@ -37,8 +37,6 @@ export function SiteHealthDependencyVulnerabilities({ siteName }) {
37
37
  data.status === 'Moderate Risk' ? '#f59e0b' :
38
38
  data.status === 'High Risk' ? '#ef4444' :
39
39
  data.status === 'Critical' ? '#ef4444' : '#6b7280'
40
- } }) })] }) }), _jsxs("div", { className: "health-audit-item", children: [_jsx("span", { className: "health-audit-icon", style: { color: '#10b981' }, children: "\u2713" }), _jsx("div", { className: "health-audit-content", children: _jsxs("span", { className: "health-audit-title", children: ["Dependencies: ", data.totalDependencies || data.dependencies || 0] }) })] }), data.vulnerabilities && data.vulnerabilities.length > 0 && (_jsxs("div", { children: [_jsxs("h5", { style: { fontSize: '1rem', fontWeight: '600', marginBottom: '1rem' }, children: ["Vulnerabilities (", data.summary.total, ")"] }), _jsx("div", { className: "health-audit-list", children: data.vulnerabilities.map((vuln, index) => (
41
- // eslint-disable-next-line pixelated/class-name-kebab-case
42
- _jsx("div", { className: `health-vulnerability-item health-vulnerability-${vuln.severity}`, children: _jsxs("div", { className: "health-vulnerability-header", children: [_jsx("span", { className: "health-vulnerability-severity", children: vuln.severity }), _jsxs("div", { children: [_jsx("span", { className: "health-vulnerability-name", children: vuln.name }), vuln.title && (_jsx("p", { className: "health-vulnerability-details", children: vuln.title })), _jsxs("div", { className: "health-vulnerability-meta", children: [_jsxs("span", { className: "health-vulnerability-range", children: ["Range: ", vuln.range] }), vuln.fixAvailable && (_jsx("span", { className: "health-vulnerability-fix", children: "\u2713 Fix available" }))] }), vuln.url && (_jsx("a", { href: vuln.url, target: "_blank", rel: "noopener noreferrer", className: "health-vulnerability-link", children: "View details \u2192" }))] })] }) }, index))) })] })), (!data.vulnerabilities || data.vulnerabilities.length === 0) && data.status === 'Secure' && (_jsxs("div", { className: "health-audit-item", children: [_jsx("span", { className: "health-audit-icon", style: { color: '#10b981' }, children: "\u2713" }), _jsx("div", { className: "health-audit-content", children: _jsx("span", { className: "health-audit-title", children: "No vulnerabilities found" }) })] })), _jsxs("p", { className: "health-timestamp", children: ["Last checked: ", new Date(data.timestamp).toLocaleString()] })] }));
40
+ } }) })] }) }), _jsxs("div", { className: "health-audit-item", children: [_jsx("span", { className: "health-audit-icon", style: { color: '#10b981' }, children: "\u2713" }), _jsx("div", { className: "health-audit-content", children: _jsxs("span", { className: "health-audit-title", children: ["Dependencies: ", data.totalDependencies || data.dependencies || 0] }) })] }), data.vulnerabilities && data.vulnerabilities.length > 0 && (_jsxs("div", { children: [_jsxs("h5", { style: { fontSize: '1rem', fontWeight: '600', marginBottom: '1rem' }, children: ["Vulnerabilities (", data.summary.total, ")"] }), _jsx("div", { className: "health-audit-list", children: data.vulnerabilities.map((vuln, index) => (_jsx("div", { className: `health-vulnerability-item health-vulnerability-${vuln.severity}`, children: _jsxs("div", { className: "health-vulnerability-header", children: [_jsx("span", { className: "health-vulnerability-severity", children: vuln.severity }), _jsxs("div", { children: [_jsx("span", { className: "health-vulnerability-name", children: vuln.name }), vuln.title && (_jsx("p", { className: "health-vulnerability-details", children: vuln.title })), _jsxs("div", { className: "health-vulnerability-meta", children: [_jsxs("span", { className: "health-vulnerability-range", children: ["Range: ", vuln.range] }), vuln.fixAvailable && (_jsx("span", { className: "health-vulnerability-fix", children: "\u2713 Fix available" }))] }), vuln.url && (_jsx("a", { href: vuln.url, target: "_blank", rel: "noopener noreferrer", className: "health-vulnerability-link", children: "View details \u2192" }))] })] }) }, index))) })] })), (!data.vulnerabilities || data.vulnerabilities.length === 0) && data.status === 'Secure' && (_jsxs("div", { className: "health-audit-item", children: [_jsx("span", { className: "health-audit-icon", style: { color: '#10b981' }, children: "\u2713" }), _jsx("div", { className: "health-audit-content", children: _jsx("span", { className: "health-audit-title", children: "No vulnerabilities found" }) })] })), _jsxs("p", { className: "health-timestamp", children: ["Last checked: ", new Date(data.timestamp).toLocaleString()] })] }));
43
41
  } }));
44
42
  }
@@ -31,7 +31,7 @@ export function FourOhFour(props) {
31
31
  if (randomIndex !== null && imageURL /* cloudinaryURL */ !== '') {
32
32
  return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "fof-body-container", children: [_jsxs("h1", { className: "centered text-outline", children: ["404 - ", images[randomIndex].text] }), _jsx("div", { className: "centered-button", children: _jsx("a", { href: "/", target: "_self", rel: "noopener noreferrer", children: "Go Home" }) })] }), _jsx("div", { className: "fof-image-container", children: _jsx("div", { className: "fof-image-wrapper", children: _jsx(SmartImage, { src: imageURL,
33
33
  // src={cloudinaryURL}
34
- title: "Page Not Found - " + images[randomIndex].description, alt: "Page Not Found - " + images[randomIndex].description, variant: "nextjs", cloudinaryEnv: config?.cloudinary?.product_env ?? undefined, cloudinaryDomain: config?.cloudinary?.baseUrl ?? undefined, cloudinaryTransforms: config?.cloudinary?.transforms ?? undefined }) }) })] }));
34
+ aboveFold: true, title: "Page Not Found - " + images[randomIndex].description, alt: "Page Not Found - " + images[randomIndex].description, variant: "nextjs", cloudinaryEnv: config?.cloudinary?.product_env ?? undefined, cloudinaryDomain: config?.cloudinary?.baseUrl ?? undefined, cloudinaryTransforms: config?.cloudinary?.transforms ?? undefined }) }) })] }));
35
35
  }
36
36
  else {
37
37
  return (_jsx(_Fragment, {}));
@@ -113,7 +113,7 @@ cloudinaryTransforms */ }) {
113
113
  ((variant === 'boxed' || variant === 'boxed grid') && boxShape ? " " + boxShape : "") +
114
114
  (layout && variant !== 'split' ? " " + layout : "") +
115
115
  (direction && layout !== 'vertical' ? " " + direction : "") +
116
- (variant && (variant === 'boxed grid' || variant === 'grid') && gridColumns ? ` callout-grid-${gridColumns.left}-${gridColumns.right}` : ''), children: (direction === "right") ? _jsxs(_Fragment, { children: [body, image] }) : _jsxs(_Fragment, { children: [image, body] }) }));
116
+ (variant && (variant === 'boxed grid' || variant === 'grid') && gridColumns ? ` callout-grid-${gridColumns.left}-${gridColumns.right}` : ''), suppressHydrationWarning: true, children: (direction === "right") ? _jsxs(_Fragment, { children: [body, image] }) : _jsxs(_Fragment, { children: [image, body] }) }));
117
117
  }
118
118
  /* ========== CALLOUT HEADER ========== */
119
119
  /**
@@ -115,10 +115,10 @@ export function Carousel(props) {
115
115
  console.log('CarouselSimple: Dragging disabled');
116
116
  }
117
117
  if (props.cards && props.cards.length > 0) {
118
- return (_jsxs("div", { className: "carousel-container", children: [_jsx("div", { className: "carousel-cards-container", children: props.cards.map((card, i) => (_jsx(CarouselCard, { index: i, cardIndex: cardIndex, cardLength: props.cards.length, link: card.link, linkTarget: card.linkTarget || '_self', image: card.image, imageAlt: card.imageAlt, imgFit: (props.imgFit || 'fill'), headerText: card.headerText, subHeaderText: card.subHeaderText, bodyText: card.bodyText }, i))) }), _jsxs("div", { className: "carousel-buttons", children: [_jsx(CarouselButton, { clickFunction: previousCard, glyph: '\u25C0' }), _jsx(CarouselButton, { clickFunction: stopTimer, glyph: '\u23F8' }), _jsx(CarouselButton, { clickFunction: nextCard, glyph: '\u25B6' })] })] }));
118
+ return (_jsxs("div", { className: "carousel-container", suppressHydrationWarning: true, children: [_jsx("div", { className: "carousel-cards-container", children: props.cards.map((card, i) => (_jsx(CarouselCard, { index: i, cardIndex: cardIndex, cardLength: props.cards.length, link: card.link, linkTarget: card.linkTarget || '_self', image: card.image, imageAlt: card.imageAlt, imgFit: (props.imgFit || 'fill'), headerText: card.headerText, subHeaderText: card.subHeaderText, bodyText: card.bodyText }, i))) }), _jsxs("div", { className: "carousel-buttons", children: [_jsx(CarouselButton, { clickFunction: previousCard, glyph: '\u25C0' }), _jsx(CarouselButton, { clickFunction: stopTimer, glyph: '\u23F8' }), _jsx(CarouselButton, { clickFunction: nextCard, glyph: '\u25B6' })] })] }));
119
119
  }
120
120
  else {
121
- return (_jsx("div", { className: 'section-container', children: _jsx("div", { className: "carousel-container", children: _jsx(CarouselLoading, {}) }) }));
121
+ return (_jsx("div", { className: 'section-container', children: _jsx("div", { className: "carousel-container", suppressHydrationWarning: true, children: _jsx(CarouselLoading, {}) }) }));
122
122
  }
123
123
  }
124
124
  /* ========== CAROUSEL CARD ========== */
@@ -139,7 +139,7 @@ function CarouselCard(props) {
139
139
  }
140
140
  const imgFit = props.imgFit ? "img" + capitalize(props.imgFit) : 'imgFill';
141
141
  const config = usePixelatedConfig();
142
- const cardBody = (_jsxs("div", { draggable: 'false', children: [(props.link) ? _jsx("div", { draggable: 'false', className: "carousel-card-link" }) : null, (props.image) ? _jsx("div", { draggable: 'false', className: "carousel-card-image", children: _jsx(SmartImage, { draggable: false, src: props.image, title: props?.imageAlt, alt: props?.imageAlt || "", className: imgFit, cloudinaryEnv: config?.cloudinary?.product_env ?? undefined, cloudinaryDomain: config?.cloudinary?.baseUrl ?? undefined, cloudinaryTransforms: config?.cloudinary?.transforms ?? undefined }) }) : null, (props.headerText) ? _jsx("div", { draggable: 'false', className: "carousel-card-header", children: _jsx("h3", { draggable: 'false', children: props.headerText }) }) : null, (props.subHeaderText) ? _jsx("div", { draggable: 'false', className: "carousel-card-subheader", children: _jsx("h4", { draggable: 'false', children: props.subHeaderText }) }) : null, (props.bodyText) ? _jsx("div", { draggable: 'false', className: "carousel-card-body", children: props.bodyText }) : null] }));
142
+ const cardBody = (_jsxs("div", { draggable: 'false', children: [(props.link) ? _jsx("div", { draggable: 'false', className: "carousel-card-link" }) : null, (props.image) ? _jsx("div", { draggable: 'false', className: "carousel-card-image", children: _jsx(SmartImage, { draggable: false, src: props.image, title: props?.imageAlt, alt: props?.imageAlt || "", className: imgFit, aboveFold: props?.index === 0 ? true : false, cloudinaryEnv: config?.cloudinary?.product_env ?? undefined, cloudinaryDomain: config?.cloudinary?.baseUrl ?? undefined, cloudinaryTransforms: config?.cloudinary?.transforms ?? undefined }) }) : null, (props.headerText) ? _jsx("div", { draggable: 'false', className: "carousel-card-header", children: _jsx("h3", { draggable: 'false', children: props.headerText }) }) : null, (props.subHeaderText) ? _jsx("div", { draggable: 'false', className: "carousel-card-subheader", children: _jsx("h4", { draggable: 'false', children: props.subHeaderText }) }) : null, (props.bodyText) ? _jsx("div", { draggable: 'false', className: "carousel-card-body", children: props.bodyText }) : null] }));
143
143
  return (_jsx("div", { draggable: 'true', id: 'c-' + props.index, className: "carousel-card-wrapper", style: styles, children: _jsx("div", { draggable: 'false', className: "carousel-card", children: (props.link) ? _jsx("a", { draggable: 'false', href: props.link, target: props.linkTarget, children: cardBody }) : cardBody }) }));
144
144
  }
145
145
  // REMOVED PROPTYPE AS TYPESCRIPT TYPE COVERS THIS
@@ -58,5 +58,5 @@ export function CountUp({ id, pre = '', post = '', start, end, duration, decimal
58
58
  }
59
59
  }, intervalMs);
60
60
  }, [isVisible]);
61
- return (_jsx(_Fragment, { children: _jsxs("div", { ref: containerRef, className: "countup", children: [_jsx("span", { className: 'countup-pre', children: pre }), _jsx("span", { id: id, className: 'countup-counter', children: counter }), _jsx("span", { className: 'countup-post', children: post }), _jsx("p", { children: content })] }) }));
61
+ return (_jsx(_Fragment, { children: _jsxs("div", { ref: containerRef, className: "countup", suppressHydrationWarning: true, children: [_jsx("span", { className: 'countup-pre', children: pre }), _jsx("span", { id: id, className: 'countup-counter', children: counter }), _jsx("span", { className: 'countup-post', children: post }), _jsx("p", { children: content })] }) }));
62
62
  }
@@ -128,5 +128,5 @@ export function generateMetaTags(props) {
128
128
  const image_height = prop_image_height || siteInfo?.image_height;
129
129
  const image_width = prop_image_width || siteInfo?.image_width;
130
130
  const favicon = prop_favicon || siteInfo?.favicon;
131
- return (_jsxs(_Fragment, { children: [_jsx("title", { children: title }), _jsx("meta", { charSet: "UTF-8" }), _jsx("meta", { httpEquiv: "content-type", content: "text/html; charset=UTF-8" }), _jsx("meta", { httpEquiv: 'Expires', content: '0' }), _jsx("meta", { httpEquiv: 'Pragma', content: 'no-cache' }), _jsx("meta", { httpEquiv: 'Cache-Control', content: 'no-cache' }), _jsx("meta", { name: "application-name", content: site_name }), _jsx("meta", { name: "author", content: site_name + ", " + email }), _jsx("meta", { name: 'copyright', content: site_name }), _jsx("meta", { name: "creator", content: site_name }), _jsx("meta", { name: "description", content: description }), _jsx("meta", { name: "keywords", content: keywords }), _jsx("meta", { name: 'language', content: 'EN' }), _jsx("meta", { name: 'owner', content: site_name }), _jsx("meta", { name: "publisher", content: site_name }), _jsx("meta", { name: 'rating', content: 'General' }), _jsx("meta", { name: 'reply-to', content: email }), _jsx("meta", { name: "robots", content: "index, follow" }), _jsx("meta", { name: 'url', content: url }), _jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1.0, shrink-to-fit=no" }), _jsx("meta", { property: "og:description", content: description }), _jsx("meta", { property: 'og:email', content: email }), _jsx("meta", { property: "og:image", content: image }), _jsx("meta", { property: "og:image:height", content: image_height != null ? String(image_height) : undefined }), _jsx("meta", { property: "og:image:width", content: image_width != null ? String(image_width) : undefined }), _jsx("meta", { property: "og:locale", content: "en_US" }), _jsx("meta", { property: "og:site_name", content: site_name }), _jsx("meta", { property: "og:title", content: title }), _jsx("meta", { property: "og:type", content: "website" }), _jsx("meta", { property: "og:url", content: url }), _jsx("meta", { itemProp: "name", content: site_name }), _jsx("meta", { itemProp: "url", content: url }), _jsx("meta", { itemProp: "description", content: description }), _jsx("meta", { itemProp: "thumbnailUrl", content: image }), _jsx("meta", { property: "twitter:domain", content: newOrigin }), _jsx("meta", { property: "twitter:url", content: url }), _jsx("meta", { name: "twitter:card", content: "summary_large_image" }), _jsx("meta", { name: "twitter:creator", content: site_name }), _jsx("meta", { name: "twitter:description", content: description }), _jsx("meta", { name: "twitter:image", content: image }), _jsx("meta", { name: "twitter:image:height", content: image_height != null ? String(image_height) : undefined }), _jsx("meta", { name: "twitter:image:width", content: image_width != null ? String(image_width) : undefined }), _jsx("meta", { name: "twitter:title", content: title }), _jsx("link", { rel: "author", href: "humans.txt" }), _jsx("link", { rel: "canonical", href: url }), _jsx("link", { rel: "icon", type: "image/x-icon", href: favicon }), _jsx("link", { rel: "shortcut icon", type: "image/x-icon", href: favicon }), _jsx("link", { rel: "manifest", href: "/manifest.webmanifest" }), _jsx("link", { rel: "preconnect", href: "https://images.ctfassets.net/" }), _jsx("link", { rel: "preconnect", href: "https://res.cloudinary.com/" }), _jsx("link", { rel: "preconnect", href: "https://farm2.static.flickr.com" }), _jsx("link", { rel: "preconnect", href: "https://farm6.static.flickr.com" }), _jsx("link", { rel: "preconnect", href: "https://farm8.static.flickr.com" }), _jsx("link", { rel: "preconnect", href: "https://farm66.static.flickr.com" })] }));
131
+ return (_jsxs(_Fragment, { children: [_jsx("title", { children: title }), _jsx("meta", { charSet: "UTF-8" }), _jsx("meta", { httpEquiv: "content-type", content: "text/html; charset=UTF-8" }), _jsx("meta", { httpEquiv: 'Expires', content: '0' }), _jsx("meta", { httpEquiv: 'Pragma', content: 'no-cache' }), _jsx("meta", { httpEquiv: 'Cache-Control', content: 'no-cache' }), _jsx("meta", { name: "application-name", content: site_name }), _jsx("meta", { name: "author", content: site_name + ", " + email }), _jsx("meta", { name: 'copyright', content: site_name }), _jsx("meta", { name: "creator", content: site_name }), _jsx("meta", { name: "description", content: description }), _jsx("meta", { name: "keywords", content: keywords }), _jsx("meta", { name: 'language', content: 'EN' }), _jsx("meta", { name: 'owner', content: site_name }), _jsx("meta", { name: "publisher", content: site_name }), _jsx("meta", { name: 'rating', content: 'General' }), _jsx("meta", { name: 'reply-to', content: email }), _jsx("meta", { name: "robots", content: "index, follow" }), _jsx("meta", { name: 'url', content: url }), _jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1.0, shrink-to-fit=no" }), _jsx("meta", { property: "og:description", content: description }), _jsx("meta", { property: 'og:email', content: email }), _jsx("meta", { property: "og:image", content: image }), _jsx("meta", { property: "og:image:height", content: image_height != null ? String(image_height) : undefined }), _jsx("meta", { property: "og:image:width", content: image_width != null ? String(image_width) : undefined }), _jsx("meta", { property: "og:locale", content: "en_US" }), _jsx("meta", { property: "og:site_name", content: site_name }), _jsx("meta", { property: "og:title", content: title }), _jsx("meta", { property: "og:type", content: "website" }), _jsx("meta", { property: "og:url", content: url }), _jsx("meta", { itemProp: "name", content: site_name }), _jsx("meta", { itemProp: "url", content: url }), _jsx("meta", { itemProp: "description", content: description }), _jsx("meta", { itemProp: "thumbnailUrl", content: image }), _jsx("meta", { property: "twitter:domain", content: newOrigin }), _jsx("meta", { property: "twitter:url", content: url }), _jsx("meta", { name: "twitter:card", content: "summary_large_image" }), _jsx("meta", { name: "twitter:creator", content: site_name }), _jsx("meta", { name: "twitter:description", content: description }), _jsx("meta", { name: "twitter:image", content: image }), _jsx("meta", { name: "twitter:image:height", content: image_height != null ? String(image_height) : undefined }), _jsx("meta", { name: "twitter:image:width", content: image_width != null ? String(image_width) : undefined }), _jsx("meta", { name: "twitter:title", content: title }), _jsx("link", { rel: "author", fetchPriority: "high", href: "humans.txt" }), _jsx("link", { rel: "canonical", fetchPriority: "high", href: url }), _jsx("link", { rel: "icon", fetchPriority: "high", type: "image/x-icon", href: favicon }), _jsx("link", { rel: "shortcut icon", fetchPriority: "high", type: "image/x-icon", href: favicon }), _jsx("link", { rel: "manifest", fetchPriority: "high", href: "/manifest.webmanifest" }), _jsx("link", { rel: "preconnect", fetchPriority: "high", href: "https://images.ctfassets.net/" }), _jsx("link", { rel: "preconnect", fetchPriority: "high", href: "https://res.cloudinary.com/" }), _jsx("link", { rel: "preconnect", fetchPriority: "high", href: "https://farm2.static.flickr.com" }), _jsx("link", { rel: "preconnect", fetchPriority: "high", href: "https://farm6.static.flickr.com" }), _jsx("link", { rel: "preconnect", fetchPriority: "high", href: "https://farm8.static.flickr.com" }), _jsx("link", { rel: "preconnect", fetchPriority: "high", href: "https://farm66.static.flickr.com" })] }));
132
132
  }
@@ -41,14 +41,14 @@ export function handlePixelatedProxy(req) {
41
41
  response.headers.set("Permissions-Policy", "camera=(), microphone=(), geolocation=(), interest-cohort=()");
42
42
  // Content Security Policy (CSP)
43
43
  // Includes all discovered domains in the workspace: HubSpot, Gravatar, Flickr, Contentful, Cloudinary, eBay, and Google Analytics + Search.
44
- const scriptSrc = "'self' 'unsafe-inline' 'unsafe-eval' https://va.vercel-scripts.com https://*.googletagmanager.com https://*.hs-scripts.com https://*.hs-analytics.net https://*.hsforms.net https://*.hscollectedforms.net https://*.hs-banner.com https://*.google.com https://*.doubleclick.net https://*.googleadservices.com https://*.adtrafficquality.google https://*.hsappstatic.net https://assets.calendly.com https://cdn.jsdelivr.net https://www.paypal.com https://www.paypalobjects.com";
44
+ const scriptSrc = "'self' 'unsafe-inline' 'unsafe-eval' https://va.vercel-scripts.com https://*.googletagmanager.com https://*.hs-scripts.com https://*.hs-analytics.net https://*.hsforms.net https://*.hscollectedforms.net https://*.hs-banner.com https://*.google.com https://*.doubleclick.net https://*.googleadservices.com https://*.adtrafficquality.google https://*.hsappstatic.net https://assets.calendly.com https://cdn.jsdelivr.net https://www.paypal.com https://www.paypalobjects.com https://cdn.curator.io https://connect.facebook.net";
45
45
  const csp = [
46
46
  "default-src 'self'",
47
47
  `script-src ${scriptSrc}`,
48
48
  `script-src-elem ${scriptSrc}`,
49
49
  "connect-src 'self' https: https://*.hubspot.com https://proxy.pixelated.tech https://sendmail.pixelated.tech https://*.google-analytics.com https://*.analytics.google.com https://cdn.jsdelivr.net",
50
50
  "img-src 'self' data: https: https://*.gravatar.com https://*.staticflickr.com https://*.ctfassets.net https://res.cloudinary.com https://*.ebayimg.com",
51
- "style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://*.google.com https://www.paypalobjects.com",
51
+ "style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://*.google.com https://www.paypalobjects.com https://cdn.curator.io",
52
52
  "font-src 'self' data: https://fonts.gstatic.com",
53
53
  "media-src 'self' https://*.ctfassets.net",
54
54
  "frame-src 'self' https://*.hubspot.com https://*.googletagmanager.com https://*.adtrafficquality.google https://*.google.com https://calendly.com https://*.calendly.com https://*.hsforms.net https://www.paypal.com https://www.paypalobjects.com",
@@ -166,8 +166,8 @@ PageSectionHeader.propTypes = {
166
166
  export function PageSectionHeader({ title, url }) {
167
167
  const calloutTarget = url && url.substring(0, 4).toLowerCase() === 'http' ? '_blank' : '_self';
168
168
  return (_jsx(_Fragment, { children: url
169
- ? _jsx("a", { href: url, target: calloutTarget, rel: "noopener noreferrer", children: _jsx("h2", { className: "page-section-header", children: title }) })
170
- : _jsx("h2", { className: "page-section-header", children: title }) }));
169
+ ? _jsx("a", { href: url, target: calloutTarget, rel: "noopener noreferrer", children: _jsx("h2", { className: "page-section-header", suppressHydrationWarning: true, children: title }) })
170
+ : _jsx("h2", { className: "page-section-header", suppressHydrationWarning: true, children: title }) }));
171
171
  }
172
172
  ;
173
173
  // ========== PAGE SECTION BACKGROUND IMAGE ==========
@@ -240,10 +240,7 @@ export function PageGridItem({ id, className, columnSpan, rowSpan, columnStart,
240
240
  ...(alignSelf && { alignSelf }),
241
241
  ...(justifySelf && { justifySelf }),
242
242
  };
243
- return (
244
- /* THIS IS AN OLD STYLE */
245
- /* <div className={"grid-item" + */
246
- _jsx("div", { className: "grid-item" +
243
+ return (_jsx("div", { className: "grid-item" +
247
244
  (className ? ` ${className}` : '') +
248
245
  (columnStart && columnSpan && !columnEnd ? ` grid-s${columnStart}-w${columnSpan}` : '') +
249
246
  (columnStart && columnEnd && !columnSpan ? ` grid-s${columnStart}-e${columnEnd}` : ''), id: (id) ? id : undefined, style: itemStyle, children: children }));
@@ -207,7 +207,7 @@ export function SmartImage(props) {
207
207
  delete newProps.cloudinaryTransforms;
208
208
  if (variant !== 'img') {
209
209
  try {
210
- return (_jsx(Image, { ...newProps, src: newProps.src, alt: newProps.alt, onError: handleError }));
210
+ return (_jsx(Image, { ...newProps, src: newProps.src, alt: newProps.alt, onError: handleError, suppressHydrationWarning: true }));
211
211
  }
212
212
  catch (e) {
213
213
  console.warn(`SmartImage: Next.js Image threw exception for "${props.src}", falling back to plain img`, e);
@@ -216,7 +216,5 @@ export function SmartImage(props) {
216
216
  }
217
217
  }
218
218
  /* ===== IMG VARIANT ===== */
219
- return (
220
- /* eslint-disable-next-line pixelated/no-raw-img */
221
- _jsx("img", { ...newProps, ref: imgRef, alt: newProps.alt }));
219
+ return (_jsx("img", { ...newProps, ref: imgRef, alt: newProps.alt, suppressHydrationWarning: true }));
222
220
  }
@@ -35,7 +35,7 @@ export function StyleGuideUI(props) {
35
35
  justify-content: center;
36
36
  display: flex;
37
37
  }
38
- ` }), _jsxs(PageSection, { columns: 1, maxWidth: "1024px", padding: "20px", id: "fonts-section", children: [_jsxs("h1", { children: ["H1 - ", primaryHeaderFont, " font"] }), _jsxs("h2", { children: ["H2 - ", primaryHeaderFont, " font"] }), _jsxs("h3", { children: ["H3 - ", primaryHeaderFont, " font"] }), _jsxs("h4", { children: ["H4 - ", primaryHeaderFont, " font"] }), _jsxs("h5", { children: ["H5 - ", primaryHeaderFont, " font"] }), _jsxs("h6", { children: ["H6 - ", primaryHeaderFont, " font"] }), _jsxs("p", { children: [primaryBodyFont, " font. This is a paragraph of text to demonstrate the body font style. "] }), _jsxs("p", { children: [primaryBodyFont, " font. The quick brown fox jumps over the lazy dog. "] }), _jsxs("p", { children: [primaryBodyFont, " font. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."] })] }), _jsxs(PageSection, { columns: 1, maxWidth: "1024px", padding: "20px", id: "fonts-section", children: [_jsx("h2", { children: "Information Architecture" }), _jsx("ul", { children: flattenRoutes(routes).map((r, index) => {
38
+ ` }), _jsxs(PageSection, { columns: 1, maxWidth: "1024px", padding: "20px", id: "fonts-section", children: [_jsxs("h1", { suppressHydrationWarning: true, children: ["H1 - ", primaryHeaderFont, " font"] }), _jsxs("h2", { suppressHydrationWarning: true, children: ["H2 - ", primaryHeaderFont, " font"] }), _jsxs("h3", { suppressHydrationWarning: true, children: ["H3 - ", primaryHeaderFont, " font"] }), _jsxs("h4", { suppressHydrationWarning: true, children: ["H4 - ", primaryHeaderFont, " font"] }), _jsxs("h5", { suppressHydrationWarning: true, children: ["H5 - ", primaryHeaderFont, " font"] }), _jsxs("h6", { suppressHydrationWarning: true, children: ["H6 - ", primaryHeaderFont, " font"] }), _jsxs("p", { suppressHydrationWarning: true, children: [primaryBodyFont, " font. This is a paragraph of text to demonstrate the body font style. "] }), _jsxs("p", { suppressHydrationWarning: true, children: [primaryBodyFont, " font. The quick brown fox jumps over the lazy dog. "] }), _jsxs("p", { suppressHydrationWarning: true, children: [primaryBodyFont, " font. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."] })] }), _jsxs(PageSection, { columns: 1, maxWidth: "1024px", padding: "20px", id: "fonts-section", children: [_jsx("h2", { children: "Information Architecture" }), _jsx("ul", { children: flattenRoutes(routes).map((r, index) => {
39
39
  return _jsxs("li", { children: [r.name, " - ", r.path] }, index);
40
40
  }) })] })] }));
41
41
  }
@@ -42,7 +42,7 @@ Tiles.propTypes = {
42
42
  export function Tiles(props) {
43
43
  const rowCount = props.rowCount ?? 2;
44
44
  if (props.cards && props.cards.length > 0) {
45
- return (_jsx("div", { className: "tiles-container", children: _jsx("div", { className: `tile-container row-${rowCount}col`, children: props.cards.map((card, i) => (_jsx("div", { className: "grid-item", children: _jsx(Tile, { index: card.index ?? i, cardLength: card.cardLength ?? props.cards.length, link: card.link, image: card.image, imageAlt: card.imageAlt, bodyText: card.bodyText, imgClick: props.imgClick, variant: (props.variant ?? "overlay") }) }, i))) }) }));
45
+ return (_jsx("div", { className: "tiles-container", children: _jsx("div", { className: `tile-container row-${rowCount}col`, suppressHydrationWarning: true, children: props.cards.map((card, i) => (_jsx("div", { className: "grid-item", children: _jsx(Tile, { index: card.index ?? i, cardLength: card.cardLength ?? props.cards.length, link: card.link, image: card.image, imageAlt: card.imageAlt, bodyText: card.bodyText, imgClick: props.imgClick, variant: (props.variant ?? "overlay") }) }, i))) }) }));
46
46
  }
47
47
  else {
48
48
  return (_jsx(Loading, {}));
@@ -85,7 +85,7 @@ function Tile(props) {
85
85
  const captionText = (props.bodyText && props.bodyText.length > 0) ? props.bodyText : (props.imageAlt ?? "");
86
86
  const tileBody = _jsxs("div", { className: "tile-image" + (imgClick ? " clickable" : ""), children: [_jsx(SmartImage, { src: props.image, title: props?.imageAlt ?? undefined, alt: props?.imageAlt ?? "", onClick: imgClick ? (event) => imgClick(event, props.image) : undefined, cloudinaryEnv: config?.cloudinary?.product_env ?? undefined }), _jsx("div", { className: "tile-image-overlay", children: _jsxs("div", { className: "tile-image-overlay-text", children: [_jsx("div", { className: "tile-image-overlay-title", children: props.imageAlt }), _jsx("div", { className: "tile-image-overlay-body", children: props.bodyText })] }) })] });
87
87
  const rootClass = `tile${(props.variant) ? ' ' + props.variant : ''}`;
88
- return (_jsx("div", { className: rootClass, id: 'tile-' + props.index, children: props.link ?
88
+ return (_jsx("div", { className: rootClass, id: 'tile-' + props.index, suppressHydrationWarning: true, children: props.link ?
89
89
  _jsx("a", { href: props.link, className: "tile-link", children: tileBody })
90
90
  :
91
91
  tileBody }));
@@ -47,5 +47,5 @@ TimelineItem.propTypes = {
47
47
  };
48
48
  export default function TimelineItem(props) {
49
49
  const config = usePixelatedConfig();
50
- return (_jsx("div", { className: "timeline-container timeline-" + props.direction, children: _jsx("div", { className: "timeline-content", children: _jsxs("div", { className: "row-3col", children: [_jsx("div", { className: "grid-s1-e2", children: _jsx(SmartImage, { src: props.image || "", title: props.title, alt: props.title, cloudinaryEnv: config?.cloudinary?.product_env ?? undefined }) }), _jsxs("div", { className: "grid-s2-e4", children: [_jsx("h2", { children: props.title }), _jsx("p", { children: props.content })] })] }) }) }));
50
+ return (_jsx("div", { className: "timeline-container timeline-" + props.direction, suppressHydrationWarning: true, children: _jsx("div", { className: "timeline-content", children: _jsxs("div", { className: "row-3col", children: [_jsx("div", { className: "grid-s1-e2", children: _jsx(SmartImage, { src: props.image || "", title: props.title, alt: props.title, cloudinaryEnv: config?.cloudinary?.product_env ?? undefined }) }), _jsxs("div", { className: "grid-s2-e4", children: [_jsx("h2", { children: props.title }), _jsx("p", { children: props.content })] })] }) }) }));
51
51
  }
@@ -50,6 +50,23 @@ export function generateUUID() {
50
50
  // var d8 = crypto.randomUUID();
51
51
  return window.URL.createObjectURL(new Blob([])).substr(-36);
52
52
  }
53
+ /**
54
+ * Simple universal hash function for strings (Java-style hashCode)
55
+ * Works in browser, Node, Next.js, etc. Not cryptographically secure.
56
+ * @param str - Input string to hash
57
+ * @returns String hash (may be negative, always string)
58
+ */
59
+ export function hashCode(str) {
60
+ let hash = 0, i, chr;
61
+ if (str.length === 0)
62
+ return '0';
63
+ for (i = 0; i < str.length; i++) {
64
+ chr = str.charCodeAt(i);
65
+ hash = ((hash << 5) - hash) + chr;
66
+ hash |= 0; // Convert to 32bit integer
67
+ }
68
+ return hash.toString();
69
+ }
53
70
  export function capitalize(str) {
54
71
  return str[0].toUpperCase() + str.toLowerCase().slice(1);
55
72
  }
@@ -1,26 +1,45 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import { mergeDeep } from '../general/utilities';
3
+ import { hashCode } from '../general/utilities';
4
+ import { CacheManager } from '../general/cache-manager';
5
+ import { getDomain } from '../general/utilities';
3
6
  // Flickr API base URL - non-secret configuration
4
7
  const FLICKR_API_BASE_URL = 'https://api.flickr.com/services/rest/?';
5
8
  const defaultFlickr = {
6
- flickr: {
7
- baseURL: FLICKR_API_BASE_URL,
8
- urlProps: {
9
- method: 'flickr.photos.search',
10
- // api_key and user_id must come from props or config provider - do not hardcode
11
- api_key: '',
12
- user_id: '',
13
- tags: 'pixelatedviewsgallery',
14
- extras: 'date_taken,description,owner_name',
15
- sort: 'date-taken-desc',
16
- per_page: 500,
17
- format: 'json',
18
- photoSize: 'Medium',
19
- nojsoncallback: 'true' /*,
9
+ baseURL: FLICKR_API_BASE_URL,
10
+ proxyURL: '',
11
+ urlProps: {
12
+ method: 'flickr.photos.search',
13
+ // api_key and user_id must come from props or config provider - do not hardcode
14
+ api_key: '',
15
+ user_id: '',
16
+ tags: 'pixelatedviewsgallery',
17
+ extras: 'date_taken,description,owner_name',
18
+ sort: 'date-taken-desc',
19
+ per_page: 500,
20
+ format: 'json',
21
+ photoSize: 'Medium',
22
+ nojsoncallback: 'true' /*,
20
23
  startPos: 0 */
21
- }
22
- },
24
+ }
23
25
  };
26
+ // Utility to build the final Flickr API URL, using proxy if available
27
+ function buildFlickrApiUrl(flickr) {
28
+ let baseUrl = flickr.baseURL;
29
+ let queryParams = '';
30
+ Object.keys(flickr.urlProps).forEach((prop) => {
31
+ const value = flickr.urlProps[prop];
32
+ queryParams += (queryParams.length === 0) ? prop + '=' + value : '&' + prop + '=' + value;
33
+ });
34
+ const apiUrl = baseUrl + queryParams;
35
+ // Prefer flickr.proxyURL, then globalConfig.proxyUrl, else direct
36
+ if (flickr.proxyURL) {
37
+ return flickr.proxyURL + encodeURIComponent(apiUrl);
38
+ }
39
+ else {
40
+ return apiUrl;
41
+ }
42
+ }
24
43
  function getFlickrSize(size) {
25
44
  // https://www.flickr.com/services/api/misc.urls.html
26
45
  switch (size) {
@@ -52,30 +71,40 @@ function getFlickrSize(size) {
52
71
  */
53
72
  GetFlickrData.propTypes = {
54
73
  /** Flickr-specific query overrides */
55
- flickr: PropTypes.object,
74
+ flickr: PropTypes.any,
56
75
  /** Optional provider configuration for Flickr requests */
57
- config: PropTypes.object,
76
+ config: PropTypes.any,
58
77
  };
59
78
  export function GetFlickrData(props) {
60
79
  const debug = false;
61
80
  // Use provided flickr config, or fall back to config provider, or use defaults
62
- let flickrConfig = { ...defaultFlickr.flickr };
81
+ let flickrConfig = { ...defaultFlickr };
63
82
  if (props.config) {
64
- flickrConfig = mergeDeep(flickrConfig, props.config);
83
+ if (props.config.global?.proxyURL) {
84
+ flickrConfig.proxyURL = props.config.global.proxyURL;
85
+ }
86
+ if (props.config.flickr)
87
+ flickrConfig = mergeDeep(flickrConfig, props.config.flickr);
65
88
  }
66
89
  if (props.flickr) {
67
90
  flickrConfig = mergeDeep(flickrConfig, props.flickr);
68
91
  }
69
- const flickr = flickrConfig;
70
- // Build URL with query parameters
71
- let myURL = flickr.baseURL;
72
- let queryParams = '';
73
- Object.keys(flickr.urlProps).forEach((prop) => {
74
- const value = flickr.urlProps[prop];
75
- queryParams += (queryParams.length === 0) ? prop + '=' + value : '&' + prop + '=' + value;
92
+ const myURL = buildFlickrApiUrl(flickrConfig);
93
+ // CacheManager: localStorage, 1 week TTL, domain isolation, namespace 'flickr'
94
+ const flickrCache = new CacheManager({
95
+ mode: 'local',
96
+ ttl: 1000 * 60 * 60 * 24 * 7, // 1 week
97
+ domain: getDomain(),
98
+ namespace: 'flickr'
76
99
  });
77
- myURL += queryParams;
78
100
  const fetchFlickrData = async () => {
101
+ const cacheKey = hashCode(myURL);
102
+ let cached = flickrCache.get(cacheKey);
103
+ if (cached) {
104
+ if (debug)
105
+ console.log('Flickr cache hit:', cacheKey);
106
+ return cached;
107
+ }
79
108
  try {
80
109
  const response = await fetch(myURL);
81
110
  if (!response.ok) {
@@ -97,12 +126,10 @@ export function GetFlickrData(props) {
97
126
  myFlickrImages.sort((a, b) => {
98
127
  return new Date(b.datetaken).getTime() - new Date(a.datetaken).getTime();
99
128
  }); // b - a for reverse sort
129
+ flickrCache.set(cacheKey, myFlickrImages);
100
130
  if (debug)
101
131
  console.log('Flickr Cards:', myFlickrImages);
102
132
  return myFlickrImages;
103
- // const myFlickrCards = GenerateFlickrCards(myFlickrImages);
104
- // console.log('Flickr Cards:', myFlickrCards);
105
- // return myFlickrCards;
106
133
  }
107
134
  catch (err) {
108
135
  console.log('Error fetching Flickr data:', err);
@@ -6,6 +6,9 @@ import { SmartImage } from '../general/smartimage';
6
6
  import { getGoogleReviewsByPlaceId } from './google.reviews.functions';
7
7
  import { usePixelatedConfig } from '../config/config.client';
8
8
  import './google.reviews.css';
9
+ /*
10
+ https://maps.googleapis.com/maps/api/place/textsearch/json?query=Manning+Metalworks+Morris+Plains+NJ&key=AIzaSyBJVi0O9Ir9imRgINLZbojTifatX-Z4aUs
11
+ */
9
12
  /**
10
13
  * GoogleReviewsCard — Fetch and display Google Place reviews for a specific Place ID.
11
14
  *
@@ -39,7 +39,7 @@ export function PayPal(props) {
39
39
  if (!isScriptSrc('https://www.paypal.com/sdk/js')) {
40
40
  document.head.appendChild(paypalScript);
41
41
  }
42
- return (_jsxs(_Fragment, { children: [_jsx("link", { rel: "stylesheet", type: "text/css", href: "https://www.paypalobjects.com/webstatic/en_US/developer/docs/css/cardfields.css" }), _jsx("div", { id: "paypal-button-container", className: "paypal-button-container" })] }));
42
+ return (_jsxs(_Fragment, { children: [_jsx("link", { rel: "stylesheet", type: "text/css", fetchPriority: "high", href: "https://www.paypalobjects.com/webstatic/en_US/developer/docs/css/cardfields.css" }), _jsx("div", { id: "paypal-button-container", className: "paypal-button-container" })] }));
43
43
  }
44
44
  export function initPayPalButton(props) {
45
45
  window.paypal.Buttons({
@@ -79,7 +79,7 @@ export function VisualDesignStyles({ visualdesign }) {
79
79
  ...fontLines
80
80
  ].join('\n');
81
81
  const googleFontsUsed = hasGoogleFonts();
82
- return (_jsxs(_Fragment, { children: [googleFontsUsed && (_jsxs(_Fragment, { children: [_jsx("link", { rel: "preconnect", href: "https://fonts.googleapis.com" }), _jsx("link", { rel: "preconnect", href: "https://fonts.gstatic.com", crossOrigin: "anonymous" })] })), _jsx("style", { dangerouslySetInnerHTML: { __html: css } })] }));
82
+ return (_jsxs(_Fragment, { children: [googleFontsUsed && (_jsxs(_Fragment, { children: [_jsx("link", { rel: "preconnect", fetchPriority: "high", href: "https://fonts.googleapis.com" }), _jsx("link", { rel: "preconnect", fetchPriority: "high", href: "https://fonts.gstatic.com", crossOrigin: "anonymous" })] })), _jsx("style", { dangerouslySetInnerHTML: { __html: css } })] }));
83
83
  }
84
84
  /**
85
85
  * Component to handle Google Fonts imports - should be used in the document head
@@ -99,5 +99,5 @@ export function GoogleFontsImports({ visualdesign }) {
99
99
  const googleFontsUrl = generateGoogleFontsUrl(fonts);
100
100
  if (!googleFontsUrl)
101
101
  return null;
102
- return (_jsxs(_Fragment, { children: [_jsx("link", { rel: "preconnect", href: "https://fonts.googleapis.com" }), _jsx("link", { rel: "preconnect", href: "https://fonts.gstatic.com", crossOrigin: "anonymous" }), _jsx("link", { href: googleFontsUrl, rel: "stylesheet" })] }));
102
+ return (_jsxs(_Fragment, { children: [_jsx("link", { rel: "preconnect", fetchPriority: "high", href: "https://fonts.googleapis.com" }), _jsx("link", { rel: "preconnect", fetchPriority: "high", href: "https://fonts.gstatic.com", crossOrigin: "anonymous" }), _jsx("link", { rel: "stylesheet", fetchPriority: "high", href: googleFontsUrl })] }));
103
103
  }
@@ -108,7 +108,7 @@ export function generateGoogleFontsLink(fonts) {
108
108
  const url = generateGoogleFontsUrl(fonts);
109
109
  if (!url)
110
110
  return '';
111
- return `<link rel="preconnect" href="https://fonts.googleapis.com">
112
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
113
- <link href="${url}" rel="stylesheet">`;
111
+ return `<link rel="preconnect" fetchPriority="high" href="https://fonts.googleapis.com">
112
+ <link rel="preconnect" fetchPriority="high" href="https://fonts.gstatic.com" crossorigin>
113
+ <link rel="stylesheet" fetchPriority="high" href="${url}">`;
114
114
  }
@@ -1 +1 @@
1
- pxl:v1:d9f7082732565c79e26db1ad:691120e2aaef983caef85075e6f16125:37e5626ae9ee7b8f7dde29f147f751b6e9614b452df29d9199764b08ddba69713524a6eac0affd00c9e5579b7afc215d9588c2dca2e27174ceb2fb454a4690b6acd4671b94e49ce86c0ac125c700e964e3c73b916bc3c4b8fcfa2ed2eb242dceff34019dfff76870cd85d8ccfe8071b4b8ba94367ef0d516f94d1278a0222fe9688c5f04ae8af8f0d12c93c9aef8ead92badbf1dd594a6925c409823032ea0b0b0d102d4dab5fb1bcc78ca3e1252edd09176f89dab929d810f484480d1c1ce8332527281f6a99ef1f27366e48fee6b48456686731e2b4824f9812acc037a638b3d9df0d6b689cec0b6909939c03fec04ec10cfa975b305d4d85f1bfb212096aff5a0901e2a23ef58a01f5d462437d85b3992f402b71f6cd81bc2805ebe1b4dd41e9792d11e651a5c982b1590eabe6644f3fb90f654647bd67fad196851e9b9241b8b154c82fa85f21a400165afc753ed37e1a07897d1c95427ad7df45db371cddc33575a39dde870900803addb30ed3fc439f2e6d3a614bcbcba2a9ea4bcb6d12521f10b475bb65e3055d089da8342d0045838a86a7f2d6cfc25855bba313d2bfc8c2b56f188ec5e5c9d93d925d914b7fce1dd01ed284f5375a0852f78b9b2bbeae6efa7ccce60004629536a6c1cb43f3dcf8356d5a91091b43a1a40191394b9263bbd64e6d429e7597c60d2c9e3776d33b54a0a99f8e4261165cb0ab60b3f78260ab687976d311466e2b779e700302c9a28782e74a46f202af58cf940f30ead55908922c9f0babc5495737733681263fc309abdddc663271e976fef79b465ac880e86164b4c2dec803d6a90ca09ad4d3e69c70a5c6e6d1b256b4ecba04dab8480af77661573c706e7e315937654a10e30f3d3664a258b045be1e3498cfcbe42ca94b87753ae48ec015833f2fb1e0929015876ac5c8a65387a12842a7c0b0939de44188422e8f93e8b132c7de2743e98b3a47b01b25613a52b65aabbadf1a4d162c4140104f7a81734a2674dec23974a3e014317ca8a92cd3038c3c9ba2fdc9aebbfe135fc156664d6deab89a0dce2330576ece9aea54257f3dda3db7bfbfacda4a8ce78da3a7214870064a03b907494a022dbe4ef2494e2c51729d895a58572ab75949970a057ef3bd55e80fb2a19e910bf04ad925b1e61edc63afc7bc911a99562242bb94e3de9854b6a9541fc0f4c96e6d8725035c04a9b4fd0676bed608bb02ed05a2851eff743a6d1a7e67347174860a32bee08d152fb56a82bfcfeb8bc5be56a1868485de4812847dba0795ea4751c68097625fd51e7febcdcc82db8da234fb87b2c711ff55182ccf5e1057a7d80944ea6987e461f4a162496ec9e62a6c805076ed715353983efab831a11b6fda78674c47533ca0c25f4d5f0c851e5f9f1603d588ad1f12956ee82714e4bf45ac0315641ba980fe9dba88c9877abdbdd39c294e255946711dcc550d990044166fc27e41e9afed8005c03e7f5c68a6bb4a5df9f54a4470405f031cdf1f1756063990bd1f7488e0e8863edf7f5625c33df5bf0ffd82a5e8af4ae437ab59b07531d158c55070c3c6b7b7077972dc7d8b037a936fd0a4fa787209932d9cc5d36af6e8c0350bc1bf6429f37d458da35701d57b5b0852be5ccc4590ed0946f7fd9acfdc59f6bda9a904db53d9892ea8d3f95cfb0d45f564ecc46e106ed1751c9efb0310e23a5201f5e0742719257f98bf7b039d1634aa8edb6a967987dc18ef7a0be647aa2eb73f09798ce884373faa77abff3ec3bd623f4bf56b90e718daa65f161ee52eb8aa44bc9b3c037785476595ed26d4db2ad5462a573480ea12bf0046d0c67cc08cae74123826f5c10c219a62963433a6dd2a263091bb16f4115a012a4eb03b01dee1dc0421befa5e333cc260f6cab3b9e67e38e1e2727aaea9f612cb999199baa149ec3bfe588d272188a9e9e0c9082a31b2449463287ba77e84b25f0c17f450d08f4327d00c8244e993d356a885c1d66d3c2d63e61cf6d59e5c464fc7455dbfbf12176afb3a79969a13f402a7f3da0d887f2ce141a289370439fb2aa377db0ddef8fc15a482235831d6596e5f3371a5010d4da078a1e9ce39f4798ff1bb4392fc982dab95dacb85d40eef96b83eeb9231ec01a93c727bf6391f9972d243447dee682b8e503d300d68901ea483e6cf6644b3fd1323ce18e42a0bd3709b98e2b8437f99efe8b28aa4643d81f0d087075a1afac4874616c97eb0913714cade7346c83d2802fbed902692f131633909bbdf2efe5abcf6f27a469d47e01b1ce5e0478024aaa745cee7cde26ca917e318b0d2b8fe3d4e87719f85ed161ff897c28334aabfc67c42d3236da84717083f7b2a75e04ed78da10aa89e57d887b7221ed7a76b58039f520295ec16a7226057ce21bc1c0c87a762352e0fc5db7805a65dd114b727ed6bf13300893b5db63465dac299074354b1fe0b6bef2f06c13859c1d3feb1df4739ae13fc3242463c53be3c552a4d77fde9aa83e0e3501a9e8b0f0ed15ffaf4bf45522865ddf9a6d4e63c68782207c2f562b1fdf203c35e9f2e912f5eee7e7d986609d8f21ef6fb8b322bed829865178fca07aa7b8d503715abc64e804b00e7d308434e1fa4fd4fdad7a8804932b3443d7d33197c33584065fc96de93690228c515fe5a1bb3e4a61461e47b995c6411d610effd952438d305a684c97c6750686a447e7a35cd7d469773c66182f25800f5c97431dd2a10bcfad8c69a91a6cf55b526e60b21043e80dd2be1118505330f1cdd28aa8cba1ece94ee3faac1bff587a0f51a330b3179bf5454c1b564d7b6b797086a6c42df0c155ca9531e472556a5a8633b95d0350e23355be5999e210d1b17253721f8e95b0e42a1d50b054da3b9436503144c68d999faf519194193ded9612655508b358e609eed3626a20e8da46e9136ceb6b0e22ccc44ff8e8785c6d1b954398a756fc18c20aab6d34c6fbe23f4c744673bd282f9bc7582f63091ae78b9275cf441e677fe4e70f543c977013087d65932bd184f7a89f7652e14689e13ebf32792beb08c96ceb03964af26236e82ae04862faed9ff74b880ba68fb837f6b34639032a94665a151d66a5111037fb57426c91371881be33da230b0af2a656a3a88c85f40a588bafa63e386fa7787e9cd1dbdbdfabee9b60e2ca73a1efa8ef17d4797729b106d4d4633a6407400c6c54442f36e15213c3e9748f0167944a83aee4a211ecda81a2e690c99f9b74d1686ad9bc2f43c118fc0f4636d9333ce52bddd1e39e9578362e5a10ca593b8ef2fd35d88f4aaa4d6ebb3fdfc41f89c0b7d73dffa5fd42b83f8db30871a6c2c0370f557d8c7319c5eff2fe0c178ba0ae9ca142f41707ac1d4a356589cf905290c780b300e8e32182a654d44803436f4dcfd7b0374bf4952fe249e4e4c115a9ac82dc60cf8159afd8afb4edc78314aed900ec11aeb75b03f31fecd6e5548cec1cd0748449d8d94a418f7d245c449ebf990cbcf47bda4ce0e1498106619e797d57d09a473c17290465768b2012d64f5ee99da0d43052321b2e502dc2112fa2a3c29a65fd1aed6ad17466519f5d9b17fcf9df0dec4cca3ac3297a437ed4be1f15ee3aa2ad0a54b5e0f236067bb06024402b0c002aab1a56981b0c68577fed0a8a0dca5f61c06042ee53de283138b4eadaa9b867a7686b6399a045351adb59a67b12474c40042597b47db668a3c7c932071798af9bbfc7b3f0dac5fdf92d5060f7d527fe98540cdb2c0fe81f0501ba5bd659d4f0cd4fb53f73905c410b24ebf418be04a9753ced57bba0836474f10c563b2aa0b72c766ff1af623f3bc82d518804ddf398012f9ed34146591f8cf8e1660ecd6c9e54fa0b696b4b2c85469802246c34067c9c8a8ce63c04d44bcdb037dd645f67b3bc34c5043a1eb23a5427270cb47cf2461142ed506eeb8bc5d42a2b95e5d7b17ef9d310b22117a1c1fe55a24be803a75c8f67087a563d2d91018835e09410c9cc15e0d37f7ea766613cc605b0e393a52c71fbbb00bf62978e43d0ce48b0c950902948bc84f7ca7ba8c74639265471a62f80de05cad9dd8b7f1ca2fcd3adb586dc752fa4baf397468dab055a1326c2b9f2a213033c986f8d06108d160a2be02fd0c42c1d5335c6c258e7a8764f93350939910a438295d9002daa1ebc43027e0f001e37c07f89e107b5406b224ab36d1c95201bb0de3a53f0150ea43f85cff1bdf659e8fd6165d96da2bf7b7a1c012bf92b530eeec3c09789ecae2700f7b56e0ec7a2b22d227e9f053290d6bd5996d02bcd15917af8aaa59c264d0b97f38ce64d28edaacec36bfb31842df8a70567e6f53d66d0b3cc420cd353bbb6347d9622848f71e45cca7df70b5935470cc86cb83c652e068b01fceed1d83a6e82d78a15b878ed5d88c627ee479e984c81fe343e4f24c1adbdd900ad2ef809df7b3804703aea1d39e09a54f28d3fc05b1f286a55f27668d0aa2d95a46ca22c5ad332d27f1d73b813636579c1e46bdc8ffe35f2f2caf7574bd3a44aa857be23aa7ce36a5cf2d6db7154112277ab418f1d0ed2fdb5315dc075d6615ac696a7324dcce6e899bbd5ab8b34967794306a3ab9c2b572ac53bed51843852febbfbb009404ec79f078b3cecfec0005ee7dc6b72fb84510e1224b5d5614e54af6118f40b6783af1a52ee863e2c123cf27e269e0b120893af2b84fb63782906d1e9b34771cf63360923857cc60b465780c0ccda7415405638d9112997c66e69089b063d73959f854e6b8b7fb9beb531d8530dd2b0640a0e89534ce30b5b4331812ed1a40790022b2d9f38f1ed6dd0847b7d48ced3fe02864faf14c12689f041015b801b17397fa114a10772f62cbbebc9f191e0f6d1a3056d4ca20bf2f3f38d0142d9f60f83983b01fef35ba6af4a07eaf752fbdca5cf77baf5a332df3af9cb222c6a63fa884ead633ab0eb871d9aa7e895dc12c87bde84e73b381c35b4839a4f97763c6ad5c4f6c8b7bdb06ba15d529ab4b16216a5464861aeb4893e02f5b4607155e6681c2551d64847d9ebbff8f613d3c4e56b7aa794d74174b88a3b6377204e10ff79039a83147d8413336d5c1f02f97d7c89d4ec5270667ff07e8136556e3aed608af5903424c504de9748b106e246ff3378f79c794155ec1b0782f2214d9bcfafebb9f4ff20215fabc98a74705d957d312310c31aafc18f16f525678515453289c19d2fc95c904b97eef8f0964f95222e09c4149c20fa7aa27a78a9759e6d1fb8a6c722702c43301fc884db336f83c3b39ee860dba2e97e49076833b253ae99d9bafc9785181836ed52ded1d124081eaf84b77c19463f092056af3341b17b7b4292905a7cc4b6b69b3cad25cd8025f13a395e1b9737f0d469f4b01f310b211b669cd1396c72aa42f951f44ed24b4b1d5a87529a152fa81fb73eb77111ce49546708c19ab5388a5b14a6cdc4b591730eede8c144c1ba6740887b3e49bdaa25a36f284bede3efb8e27fae5a0829216b6f949943aa254ce3f6ccef5e2dfbb76ff3a620d9e60f26d71534c34069c211faec97a6ea7d4976062de19f36ef17513edd6ad04865677100e9046897cfd7f0189ea6d42d801b1290ac9858f46d5664f711431541bc1cdbfd160e32fe7773903246fec474d9039312a196e0b50534b9e263594bf558e69ce9bad479b82100c99ff77d55c984753bb611c50d552f8952bea307b52f8221d24f6c41b74e3d63dfe2ab65ce4ae93418a59ebee96accbc7fa46bec62f79a5e020c7d899
1
+ pxl:v1:d547f3844470f71724d93b73:55e3f315a289e4585ea21eefa26dd794:c801d8c607c276011893f65b0c6133663ccd09123c25eb5716eaa92de4393ac0a06debfc471fa174b68311d7bc7cea0cec14d2c5a0578c733998d1b9d52f4863a48840cf3391b634ec7226ac9df3b9e6606dc6d0587297c496ee074a3d890c7f0d57e1ebad580ae5472b5127570dde88d158b99dbae28a78ddeeee73af92bc08ba850621c54c7f28a1a0a5c1aecbe6dbe40e407156a6e636257cbf3620a1dc9c9c273438112e048484bdb676dab927efa3a36833a0ed51f241e47ba0482f6d54a349b686841569152c09b240583cc06be92a380c4b0aa2c54f48dd5bd5c29c6d4c33378f06b863f8be388d59e270daecac860fbe70be50b79fc00400be7adcf92d19fbb790b87aa8bd1b7ac23cdbafb115edade7e2075c22a692187396e85ca07241ed422d274fa9621380014af873235606e472fa4025385a20180fbeb5d02cdadef6bb9ec770aa8d2b0683c6286ef4741ec5c1f25f2781e68d666970f2ff91c4aed23d67107c305bf1700559da614a365b132ec9c86e04ab3e63a820edbbb32758360cb5710687deaacd08ce54d45440ce92b0106fc2b19d08700309449547d0fda6ce5dabd9c6b5cb3a08cef70182aa7697c1e69eae7e5e1eaad65aadaaf48e081b38a3b958914c83cfc7eb03994fa34d37103cd4283d5deadf5b50f380e53d4c7b92f5a91d1284281759f6aeb2ad5bbd7f9c6546da156949dcbe4135c2177045ed2afd81e01c3992d122a423341c47c54df018973268bc1156729df679305d1f2ce4286c7eb1db703a0d7440d7fe4cfb92db3f667617786f3a9b099eced2b4f93141cf7db2456cd630ec073b4a4bde75594404360c07dc6c255745927c6dff72013d65087bf3a22769658017f29a82573cd7fbcfa03f9f35963b7145b8c906c4999f3942a063ac8617d91a532a3dea55626de584786c06b2ca1606b98811d5e0d6c3500445e6d1fee1cd47fb5f9d7ca6f7578690f0f204dff984175ec44c827090bfa6f6413a13eaf4f799b633ff3d979d1f93eb67573c34fea1ff2e4f4559d75cb9d5997d10bba2d7bc274a03b16404506c9a0021ad4873b79ceb56c75ba6657c0e07c1d11f845481b1f56d5944cfc362d309530427a7eb9856f474ae538eb140de1a002b573c788b6132b0ea8f056f408287bb93e2b292228e4f0ad4f311a69b8fda4421fdb29d47c5b42ba971f0c377ae3b352b0a1766fb0f831b0fb5dbca2f4af483c93875842bdee65f18d0a5c262d098376f6bc270cb4e0938046d95bdb1b20d2dae44f45e4289f13e1f9d8d9a0702c04fa49b0a700fae7bc3c8c1f2a12800203076b2a9e910fb327257c0b3b1dc4914a59c66afbd3fab86706f6c9522a7b4d43df3695e7bd254a8c977d927dc39ff30030a8b540c16cc77dcf108dc088af74587c03f52530f9c74ae877c82cac87c821ce307e19ab6ccf1c80a1384599e032b6e117a74e6fd39919610d2c1bfeec3a6fba13449bf880f8551e84b0d872b244cf36fa4d3f8ea59e64cace29857ee286302b1587689a4d6896d9edc14ae6e3f1faedbb15f7c197af7dce6400046c42dc4553a6c7538bc6fbefe5fed74a51843eb3bbab7c3d4c7eb8fca8549b47fca42b6eac69c6456a10e8b1b9f9217045de6d47ae74a001a888218cef7265ab61b1e2851e5fed20f5792298b01ee6ed1240edf2efdece1f14ebfd892ba97be3505b4bd5380a0466461d4bebe0f2eeb2d589da159f4e29b70a06407c00419c93efebabde21932a098888ea238d147caf289574d8a01b2b39e48fa1a55d8c42fdbf15978a92135265716b62c2832bbb36b9b6127ef8f15a0b144130b0886f99f4b2a602a817d8fdd4c423784b815c265ec78b297aa18186f41079dee70cc3508a490278e251f0a8c678809c3fcd85fd9f64c6b8df60053427bed951b81da8970282288b81533c64d80364134695969109bea909bf4cbdf4ae5c88b9bdb44d67e81d77ff38fe5ec6a6c529401be859c70188525bdf6a462a82e599e8e9f264cfe99079a926495f9379fa7d0881d0a1bbe62fb48d252c876a4487f2dd177bf9abc908a1d7046f276fdeed958cd57b0180cf861ecce46da4a0b9eb160db8a5c59722e5c4c1ec7ba5d6cf76d4983d8d9f1fc943b1919667c131ad596393c43ec7925f71b6cf58e4031039ac079c91d27680bc7d80da2c38c67b3ff4d9d6515f7e1f713e53d03073207fc255664d0c6676f5e21e791bc722a7e2da0f0df22ca2e0838518bed526b4cc659a4217bb3bf325f18346aedec7dc1e93786e008d057ce37e1d3d38a6cee74b958fa5d3426d890111aefd401de90d703bdb87ddff7a237e43f26f15a55d004c51b0042c25532e12ce47a2a5a80138f43d44647f37db50541b7b2ddf310f4b09cf549f61fbd9efa9673761d238760285dd64c5916936670cb2cbbf57b6153dab93c68340837fcb117c00f88ea67643e52e257f74b1e6213151730419da99c7c27cf289b8018f300399505f3c87e221df7978f5869880994394ad445f24f9c7c5e1747c17557848c96a6c589c9d12f4197a41166a306ccb708f934064008d0a2e8969b08b6e2abc0b43e65313226cde40f6addd23063fa79303efb3f93a6b74d2983a8dcf1ed12e10865c326b5b087c72be0984df7f0fdcb91a426f6a1b27db60b2c6464be7ca7e4dda9914cfc71affb7496cd33345f42ca4ed47ea71813299b62ff2baec0384bc96d830d43b90e77ae5fdd9088f01100f413cffff2f85600aa36abf214ff62b9450d8df4d086d6976ec8340052ca649d7d1590638935e75ed9dc859949ccb489ab00cae443682e6d32fd6522281971972a4a20a3ab181a706c3ffe3b6355faeaa3f23548871a97df4f2afc6056263450166defe4529830bf8c89b333adb98b6f28b911f5bca3c47d39083bba1c96f68c6acaf2989b5f629b77dfe589312da9eb1f87c5a0fd328f0427c8ff33f3e85fc3b402d5792e54f1eb9dd57936247f5184a59e602b11b7e6118a46f4bc16d230d4fe7d70f41a231f44aa9002eb9002b67f8b1725cbce6e8707e4d4b3f270e23e6cd31ad4e6a5819b77bd35ee2b827242d018935b69700ab14657defb0e76b19bd20988bca3ec1f2a9820b82cc9f0d230d2d325c24360584f5ba9888d83acffd3e98c3a4afa9faf239b3b65047288dc62850436d6b0be92cc14edc9970bfff74152c959b3495030e4426872fdfb69023445758b67a5915f5d8fd93165e9c45ed821c209f9f64ecc7a6ceac0e892eac266805b5931ca35017d708e6c57717c70c8d73700c5f0157ba0d143bd0f3f0feed6e8c09d9eab04d1cc496cb9b4ecb5581167a3e32d90abd1d537e9ecde947972795c29b99d119f369d8820961191028f9794d1903ae07edda74adcd97d9d5fb6fdc4522fbf4e42c29c2e0645c975eace63ca1895989a0bb98b11ce80e41acbe4b35c1eaceba416939daf05438a98c310c230b3ef21800f74ca09c88ece2c8d0bd03706c1e42bb2ae8496b3a3f8a4fe9d273eecc2d62aa0812c582db98ec4d19b0e70c91dde34d701e32a44743105d058e0cc2cd509298db4c2cac3e244b714674b0745f7c5cbb62cb0009bbea3e0e64f6a98c09aa2935d4000f0c6f69492e4955887caa245e6a076bd66f19fa3c54b8f46739a66761d5bec1a21ce879e504f0f16093eb01806c28a8713dad7efae48477d2126c4d6732a67c68ef01bd3f9e79183e8562b07766323063c528155e37499f9d6c02c9d480cd7f0b31053b8621faf7bf1fc9eed343a633b7449dfc42e247cec3757e9ac2fa8d1d9027a45d81b2abb7486406ae2d749542253601a5ecd96341edb9521d2e4f23c9df89def64f07e5d8d14733c4bbd2497b266e930d5e7cee5638cd5b9f0113230259dd5c0547c236d81a528f57324ea23baa41dd5da5721462c47083d816cd4575777d74ca4324eca3e3dbfacaef014441c9412329b980929f228754dd27ca0c96e62c7663907f77f8c854446124fbc797421a36bf1bfde7f82f6a5947ae3f4bda3c1bd9b4b070fd0a8a98b11aa14c98d85d33a85cff13336b9d1647797555263f59fdc3f9a42cae1cf0b0c0b26505bb0c9904c2a52536383354434c4ad4860d1c4c2749ae9bcce5a51456a1a8d7cccc23ebebd95e13b8b64a533881bc792981caf612ce6870fc38ad76aeb691ee8dc3d690a10216b5cee7d5b00894d3acb2b4d167dbbed74bfd7a63dab3390fffd6a568f271a308f5a6404aee45ad0c564ef7ea9d9b32de21983db5f396498811a57f723e8148ea6157cc96e8b83d0adef0dde316188f3cf9625a99f464f16e8faadaaa150552141639ae6b37fbf1f936e47c6e54df69709f41a1b3cec8e14492f45429f61bd401807456b4bace6959ba51e4954ebfd3aeeacb748b4bb144d158e3d3e8dca0232d6b1969a0577220b684bf52ba46f8d63d65ccc8a3535e2f0f75bcac5f0a2832ceecc2002cb8bfb2c343ff4509af686a822a09d7e9be3b121783eb6e6b0dfef50852a71f1a038a7616687160921c40dffb4d3fa6f94f30456b4312f0bb5a9fae23ba7d31f9a89427dcdbd74719fbde8c9199943ccbc308244db05105eee4b28cb85dd6de5dd2cb8494898e46a4275a4fd83ccaff196126c2da4aef68881c1e51ba9455fc8fd303317b560daa4d9e706b8323a071067b710bc674ad927e60d956ad6c59e2efb8785e2240befde746c5126d9440a459a28893d1b790a884d1e86a3e480af07256f9e86ebe33fd4ab43b9179dfa406265b3e0948d8dea967368a29d7e9f84f6ead40182e0c6383dab672f2c0f354a48b696ba4b0a9643ec86eb1a4c834ebc4c275e542c3c45bc7ac5650cff3edbd823d7543ddcc04af51d650c9b5876f4ec97dd3b3ca49b5ac1848d656b233abc952323f6067440d8af882fa29486de82e712eb3a1ec5afe71a9d20034e9a46ebf3e505098cd902e979469892237f23e20b02c07b76129b46ce2b8e64fcde1a0b47537c7c7353a0201a80b8b09447d8396ca929bda72628210f6ca40e38bb7f9fa7b1db9d0a95c3115f75f7b487cea2b2e05e238a4e37a151b2f3872d8ea41ea5731f26b88b1f3f11ee84ef0056c6b7be2be6b8b47b7fcf88197d6c490de217ebd21bcc8d2560b5d80c82dec787c689c5f4f1677a1de3b38aa55280e38c03c648aa89001a9b0daa62498c47606a0384e6b2484d2d63d5a0bb17b4b4d76daf86d2bd0d2d0295527303398c4c62d5f599e11ebeb27a3541c77807bf901b2fe05dfabb5622e87d1c092a7004546b59476a22896ab9e03b7c6688b273d3aa9b5c0130144d34ac03ca150437d346c67087c65ffd1e7927fbdc177f3d141a29e30d72f6df0666728a1d7b20e11f3ca6efd147c27af8851374301967d283022b75443d83383d675c163c84d0cbe1d7a687d360072d3cd525e949dd1c3e7fac5beac3f9c03e261ea11b9b4dfb7baeedb305a43623b6eae1f7270a82824a639005497c806809e14a34c03cbcbc933fb923682344a567857dd04994e7a1930bcc7fb8cf111c0db3a9061e5c24f256fbfadeffc6bd59e557ec29c814c54c0781dd14ea703ab9aec34b723292aa5e655349ebf22f83af9c5e3043e569f287a40869f2077f2303cac74d1bf0fc67804761bfd15b9a16c4b00188169bbc0f098c7d366ae3097f22e0a23dcafeafbda0840a8bfdd929f91d3d311e79a9d879a23e8d3ea64c61ce1690657908ccfdcfda0fa7956de75c9eb3182ac27be771bea5903ba590ac9f6157c2647d3ce3b29465282e8ee27b5124913aaf6de85cbeb3a32ebee6c5c26dd7703b5b1a92ecb7e00a4a773d28d0333730c8245a7e9618e0b8
@@ -1,6 +1,7 @@
1
1
  // Admin client entry point - client components for admin functionality
2
2
  // This entry requires optional dependencies: recharts
3
3
  // Sites using admin client components should import from 'pixelated-components/adminclient'
4
+ export * from './components/admin/site-health/google.api.integration';
4
5
  export * from './components/admin/site-health/site-health-accessibility';
5
6
  export * from './components/admin/site-health/site-health-axe-core';
6
7
  export * from './components/admin/site-health/site-health-cloudwatch';
@@ -19,7 +19,6 @@ export * from './components/general/well-known';
19
19
  export * from './components/general/utilities';
20
20
  export * from './components/integrations/contentful.delivery';
21
21
  export * from './components/integrations/contentful.management';
22
- export * from './components/integrations/flickr';
23
22
  export * from './components/integrations/gemini-api.server';
24
23
  export * from './components/integrations/googleplaces';
25
24
  export * from './components/integrations/googlemap';
@@ -92,6 +92,11 @@
92
92
  "name": "Style Guide",
93
93
  "aliases": ["styleguide", "style-guide", "design-system", "ui-kit", "pattern-library"],
94
94
  "src": "../../pixelated-template/src/app/(pages)/styleguide"
95
+ },
96
+ {
97
+ "name": "Updates",
98
+ "aliases": ["updates", "update", "changelog"],
99
+ "src": "../../pixelated-template/src/app/(pages)/updates"
95
100
  }
96
101
  ]
97
102
  }
@@ -44,6 +44,7 @@ export interface EbayConfig {
44
44
  }
45
45
  export interface FlickrConfig {
46
46
  baseURL: string;
47
+ proxyURL?: string;
47
48
  urlProps: {
48
49
  method?: string;
49
50
  api_key: string;
@@ -90,6 +91,7 @@ export interface GooglePlacesConfig {
90
91
  countryRestrictions?: string[];
91
92
  debounceDelay?: number;
92
93
  cacheTTL?: number;
94
+ placeId: string;
93
95
  }
94
96
  export interface GoogleSearchConsoleConfig {
95
97
  id: string;
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"404.d.ts","sourceRoot":"","sources":["../../../../src/components/general/404.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAInD,OAAO,WAAW,CAAC;AAWnB,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;AACrE,wBAAgB,UAAU,CAAE,KAAK,EAAE,cAAc,2CA4ChD;yBA5Ce,UAAU;;QAJzB,kFAAkF"}
1
+ {"version":3,"file":"404.d.ts","sourceRoot":"","sources":["../../../../src/components/general/404.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAInD,OAAO,WAAW,CAAC;AAWnB,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;AACrE,wBAAgB,UAAU,CAAE,KAAK,EAAE,cAAc,2CA6ChD;yBA7Ce,UAAU;;QAJzB,kFAAkF"}
@@ -13,7 +13,7 @@ export declare function Callout({ variant, boxShape, layout, direction, gridColu
13
13
  export declare namespace Callout {
14
14
  var propTypes: {
15
15
  /** Visual variant selector (e.g., 'default', 'boxed', 'grid', 'full'). */
16
- variant: PropTypes.Requireable<"split" | "grid" | "overlay" | "default" | "boxed" | "boxed grid" | "full">;
16
+ variant: PropTypes.Requireable<"default" | "split" | "grid" | "overlay" | "boxed" | "boxed grid" | "full">;
17
17
  /** Corner/box shape for boxed variants. */
18
18
  boxShape: PropTypes.Requireable<"round" | "square" | "bevel" | "squircle">;
19
19
  /** Layout direction: 'horizontal' or 'vertical'. */
@@ -1 +1 @@
1
- {"version":3,"file":"callout.d.ts","sourceRoot":"","sources":["../../../../src/components/general/callout.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAInD,OAAO,gBAAgB,CAAC;AAiBxB,eAAO,MAAM,QAAQ,iFAAkF,CAAC;AACxG,eAAO,MAAM,MAAM,mDAAoD,CAAC;AACxE,eAAO,MAAM,OAAO,qCAAsC,CAAC;AAC3D,eAAO,MAAM,UAAU,4BAA6B,CAAC;AAGrD,MAAM,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9C,MAAM,MAAM,WAAW,GAAG,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AAChD,MAAM,MAAM,aAAa,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAsEtD,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;AAC/D,wBAAgB,OAAO,CAAC,EACvB,OAAmB,EACnB,QAAqB,EACrB,MAAqB,EACrB,SAAkB,EAClB,WAAiC,EACjC,GAAG,EAAE,GAAG,EAAE,MAAM,EAChB,QAAmB,EACnB,QAAQ,EACR,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAC9C,SAAS,GAGgB,EAAE,WAAW,2CAwEtC;yBArFe,OAAO;;QA3CtB,0EAA0E;;QAE1E,2CAA2C;;QAE3C,oDAAoD;;QAEpD,2EAA2E;;QAE3E,yDAAyD;;YAExD,mDAAmD;;YAEnD,oDAAoD;;;QAGrD,8CAA8C;;QAE9C,2CAA2C;;QAE3C,4EAA4E;;QAE5E,6EAA6E;;QAE7E,yDAAyD;;QAEzD,0CAA0C;;QAE1C,2CAA2C;;QAE3C,mEAAmE;;QAEnE,yFAAyF;;QAEzF,sDAAsD;;QAGtD,kEAAkE;;;;AAgHnE,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAE,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAC,EAAE,iBAAiB,2CASrE;yBATe,aAAa;;QAR7B,qCAAqC;;QAEpC,yCAAyC;;QAEzC,sCAAsC;;;;AAiCvC,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAG,iBAAiB,2CAgBxE;yBAhBe,aAAa;;QAR7B,yBAAyB;;QAExB,6DAA6D;;QAE7D,mDAAmD"}
1
+ {"version":3,"file":"callout.d.ts","sourceRoot":"","sources":["../../../../src/components/general/callout.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAInD,OAAO,gBAAgB,CAAC;AAiBxB,eAAO,MAAM,QAAQ,iFAAkF,CAAC;AACxG,eAAO,MAAM,MAAM,mDAAoD,CAAC;AACxE,eAAO,MAAM,OAAO,qCAAsC,CAAC;AAC3D,eAAO,MAAM,UAAU,4BAA6B,CAAC;AAGrD,MAAM,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9C,MAAM,MAAM,WAAW,GAAG,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AAChD,MAAM,MAAM,aAAa,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAsEtD,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;AAC/D,wBAAgB,OAAO,CAAC,EACvB,OAAmB,EACnB,QAAqB,EACrB,MAAqB,EACrB,SAAkB,EAClB,WAAiC,EACjC,GAAG,EAAE,GAAG,EAAE,MAAM,EAChB,QAAmB,EACnB,QAAQ,EACR,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAC9C,SAAS,GAGgB,EAAE,WAAW,2CA0EtC;yBAvFe,OAAO;;QA3CtB,0EAA0E;;QAE1E,2CAA2C;;QAE3C,oDAAoD;;QAEpD,2EAA2E;;QAE3E,yDAAyD;;YAExD,mDAAmD;;YAEnD,oDAAoD;;;QAGrD,8CAA8C;;QAE9C,2CAA2C;;QAE3C,4EAA4E;;QAE5E,6EAA6E;;QAE7E,yDAAyD;;QAEzD,0CAA0C;;QAE1C,2CAA2C;;QAE3C,mEAAmE;;QAEnE,yFAAyF;;QAEzF,sDAAsD;;QAGtD,kEAAkE;;;;AAkHnE,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAE,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAC,EAAE,iBAAiB,2CASrE;yBATe,aAAa;;QAR7B,qCAAqC;;QAEpC,yCAAyC;;QAEzC,sCAAsC;;;;AAiCvC,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAG,iBAAiB,2CAgBxE;yBAhBe,aAAa;;QAR7B,yBAAyB;;QAExB,6DAA6D;;QAE7D,mDAAmD"}
@@ -1 +1 @@
1
- {"version":3,"file":"smartimage.d.ts","sourceRoot":"","sources":["../../../../src/components/general/smartimage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA0HnD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AACjH,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,2CA4I/C;yBA5Ie,UAAU;;QA/C1B,2EAA2E;;QAE1E,kCAAkC;;QAElC,6CAA6C;;QAG7C,gCAAgC;;QAEhC,yCAAyC;;QAEzC,uEAAuE;;QAEvE,kCAAkC;;QAElC,mFAAmF;;QAEnF,uCAAuC;;QAEvC,wDAAwD;;QAExD,qCAAqC;;QAErC,+CAA+C;;QAE/C,sDAAsD;;QAEtD,sDAAsD;;QAEtD,wDAAwD;;QAExD,iDAAiD;;QAEjD,4BAA4B;;QAE5B,yDAAyD;;QAEzD,8CAA8C;;QAE9C,+DAA+D;;QAE/D,+EAA+E;;QAE/E,yDAAyD"}
1
+ {"version":3,"file":"smartimage.d.ts","sourceRoot":"","sources":["../../../../src/components/general/smartimage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA0HnD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AACjH,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,2CA+I/C;yBA/Ie,UAAU;;QA/C1B,2EAA2E;;QAE1E,kCAAkC;;QAElC,6CAA6C;;QAG7C,gCAAgC;;QAEhC,yCAAyC;;QAEzC,uEAAuE;;QAEvE,kCAAkC;;QAElC,mFAAmF;;QAEnF,uCAAuC;;QAEvC,wDAAwD;;QAExD,qCAAqC;;QAErC,+CAA+C;;QAE/C,sDAAsD;;QAEtD,sDAAsD;;QAEtD,wDAAwD;;QAExD,iDAAiD;;QAEjD,4BAA4B;;QAE5B,yDAAyD;;QAEzD,8CAA8C;;QAE9C,+DAA+D;;QAE/D,+EAA+E;;QAE/E,yDAAyD"}
@@ -5,6 +5,13 @@ export declare function mergeDeep(a: any, b: any): {
5
5
  export declare function randomBetween(min: number, max: number): number;
6
6
  export declare function generateKey(): string;
7
7
  export declare function generateUUID(): string;
8
+ /**
9
+ * Simple universal hash function for strings (Java-style hashCode)
10
+ * Works in browser, Node, Next.js, etc. Not cryptographically secure.
11
+ * @param str - Input string to hash
12
+ * @returns String hash (may be negative, always string)
13
+ */
14
+ export declare function hashCode(str: string): string;
8
15
  export declare function capitalize(str: string): string;
9
16
  /** Capitalize the first letter of each word in `input`. */
10
17
  export declare function capitalizeWords(input: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../src/components/general/utilities.ts"],"names":[],"mappings":"AAKA,wBAAgB,QAAQ,CAAE,GAAG,EAAE,MAAM,oBASpC;AAID,wBAAgB,SAAS,CAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;;EAmBxC;AAID,wBAAgB,aAAa,CAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAOtD;AAID,wBAAgB,WAAW,WAc1B;AAID,wBAAgB,YAAY,WAK3B;AAID,wBAAgB,UAAU,CAAE,GAAG,EAAE,MAAM,UAEtC;AAID,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKrD;AAWD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,IAAI,MAAM,CASlC;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiB1D;AAID,wBAAgB,YAAY,CAAE,YAAY,EAAE,MAAM,UAgCjD;AAID;;;;OAII;AACJ,wBAAgB,YAAY,SAoB3B;AAOD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UA0BhC,CAAC;AAKF;;GAEG;AACH,eAAO,MAAM,uBAAuB,UAQnC,CAAC;AAIF,eAAO,MAAM,wBAAwB,UAOpC,CAAC;AAKF;;GAEG;AACH,eAAO,MAAM,oBAAoB,UAoBhC,CAAC;AAIF,wBAAgB,eAAe,CAAE,GAAG,EAAE,MAAM,UAa3C;AAID,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAsBhD"}
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../src/components/general/utilities.ts"],"names":[],"mappings":"AAKA,wBAAgB,QAAQ,CAAE,GAAG,EAAE,MAAM,oBASpC;AAID,wBAAgB,SAAS,CAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;;EAmBxC;AAID,wBAAgB,aAAa,CAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAOtD;AAID,wBAAgB,WAAW,WAc1B;AAID,wBAAgB,YAAY,WAK3B;AAKD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAS5C;AAKD,wBAAgB,UAAU,CAAE,GAAG,EAAE,MAAM,UAEtC;AAID,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKrD;AAWD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,IAAI,MAAM,CASlC;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiB1D;AAID,wBAAgB,YAAY,CAAE,YAAY,EAAE,MAAM,UAgCjD;AAID;;;;OAII;AACJ,wBAAgB,YAAY,SAoB3B;AAOD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UA0BhC,CAAC;AAKF;;GAEG;AACH,eAAO,MAAM,uBAAuB,UAQnC,CAAC;AAIF,eAAO,MAAM,wBAAwB,UAOpC,CAAC;AAKF;;GAEG;AACH,eAAO,MAAM,oBAAoB,UAoBhC,CAAC;AAIF,wBAAgB,eAAe,CAAE,GAAG,EAAE,MAAM,UAa3C;AAID,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAsBhD"}
@@ -5,9 +5,9 @@ export declare function GetFlickrData(props: GetFlickrDataType): Promise<any>;
5
5
  export declare namespace GetFlickrData {
6
6
  var propTypes: {
7
7
  /** Flickr-specific query overrides */
8
- flickr: PropTypes.Requireable<object>;
8
+ flickr: PropTypes.Requireable<any>;
9
9
  /** Optional provider configuration for Flickr requests */
10
- config: PropTypes.Requireable<object>;
10
+ config: PropTypes.Requireable<any>;
11
11
  };
12
12
  }
13
13
  export type GenerateFlickrCardsType = InferProps<typeof GenerateFlickrCards.propTypes>;
@@ -1 +1 @@
1
- {"version":3,"file":"flickr.d.ts","sourceRoot":"","sources":["../../../../src/components/integrations/flickr.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAkF5D,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAE,KAAK,EAAE,iBAAiB,gBA2DtD;yBA3De,aAAa;;QAN7B,sCAAsC;;QAErC,0DAA0D;;;;AA+E3D,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACvF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,uBAAuB;;;;;;;gBAejE;yBAfe,mBAAmB;;QANnC,yBAAyB;;QAExB,+BAA+B;;;;AAoDhC,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAE,KAAK,EAAE,iBAAiB,2CA0CtD;yBA1Ce,aAAa;;QAjB7B,wBAAwB;;QAEvB,qBAAqB;;QAErB,qBAAqB;;QAErB,wBAAwB;;QAExB,wBAAwB;;QAExB,yDAAyD;;QAEzD,6EAA6E"}
1
+ {"version":3,"file":"flickr.d.ts","sourceRoot":"","sources":["../../../../src/components/integrations/flickr.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAoF5D,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,gBA2DrD;yBA3De,aAAa;;QAN5B,sCAAsC;;QAEtC,0DAA0D;;;;AA+E3D,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACvF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,uBAAuB;;;;;;;gBAejE;yBAfe,mBAAmB;;QANlC,yBAAyB;;QAEzB,+BAA+B;;;;AAoDhC,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,2CA0CrD;yBA1Ce,aAAa;;QAjB5B,wBAAwB;;QAExB,qBAAqB;;QAErB,qBAAqB;;QAErB,wBAAwB;;QAExB,wBAAwB;;QAExB,yDAAyD;;QAEzD,6EAA6E"}
@@ -1 +1 @@
1
- {"version":3,"file":"google.reviews.components.d.ts","sourceRoot":"","sources":["../../../../src/components/integrations/google.reviews.components.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAInD,OAAO,sBAAsB,CAAC;AAwB9B,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACnF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,qBAAqB,2CAqG7D;yBArGe,iBAAiB;;QAZjC,iCAAiC;;QAEhC,gDAAgD;;QAEhD,uCAAuC;;QAEvC,mDAAmD;;QAEnD,8BAA8B"}
1
+ {"version":3,"file":"google.reviews.components.d.ts","sourceRoot":"","sources":["../../../../src/components/integrations/google.reviews.components.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAInD,OAAO,sBAAsB,CAAC;AA6B9B,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACnF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,qBAAqB,2CAqG7D;yBArGe,iBAAiB;;QAZjC,iCAAiC;;QAEhC,gDAAgD;;QAEhD,uCAAuC;;QAEvC,mDAAmD;;QAEnD,8BAA8B"}
@@ -1,7 +1,7 @@
1
1
  import PropTypes, { InferProps } from "prop-types";
2
2
  import './socialcard.css';
3
3
  export type SocialCardsType = InferProps<typeof SocialCards.propTypes>;
4
- export declare function SocialCards(props: SocialCardsType): import("react/jsx-runtime").JSX.Element | never[];
4
+ export declare function SocialCards(props: SocialCardsType): never[] | import("react/jsx-runtime").JSX.Element;
5
5
  export declare namespace SocialCards {
6
6
  var propTypes: {
7
7
  /** Map of feed source configurations (e.g., { instagram: { userID, entryCount }, blog: { url, entryCount }, ... }) */
@@ -1,3 +1,4 @@
1
+ export * from "./components/admin/site-health/google.api.integration";
1
2
  export * from "./components/admin/site-health/site-health-accessibility";
2
3
  export * from "./components/admin/site-health/site-health-axe-core";
3
4
  export * from "./components/admin/site-health/site-health-cloudwatch";
@@ -15,7 +15,6 @@ export * from "./components/general/well-known";
15
15
  export * from "./components/general/utilities";
16
16
  export * from "./components/integrations/contentful.delivery";
17
17
  export * from "./components/integrations/contentful.management";
18
- export * from "./components/integrations/flickr";
19
18
  export * from "./components/integrations/gemini-api.server";
20
19
  export * from "./components/integrations/googleplaces";
21
20
  export * from "./components/integrations/googlemap";
@@ -128,7 +128,7 @@ export declare const SmartImagePlayground: {
128
128
  quality: import("prop-types").Requireable<number>;
129
129
  placeholder: import("prop-types").Requireable<string>;
130
130
  variant: import("prop-types").Requireable<string>;
131
- }, "cloudinaryDomain" | "quality" | "width" | "style" | "title" | "cloudinaryEnv" | "cloudinaryTransforms" | "height" | "aboveFold" | "loading" | "preload" | "decoding" | "fetchPriority" | "sizes" | "srcSet" | "className" | "id" | "name" | "placeholder" | "variant">>> & React.ImgHTMLAttributes<HTMLImageElement>>;
131
+ }, "style" | "title" | "className" | "id" | "cloudinaryDomain" | "quality" | "width" | "cloudinaryEnv" | "cloudinaryTransforms" | "height" | "aboveFold" | "loading" | "preload" | "decoding" | "fetchPriority" | "sizes" | "srcSet" | "name" | "placeholder" | "variant">>> & React.ImgHTMLAttributes<HTMLImageElement>>;
132
132
  args: {
133
133
  src: string;
134
134
  alt: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixelated-tech/components",
3
- "version": "3.14.0",
3
+ "version": "3.14.2",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "author": {
@@ -65,14 +65,15 @@
65
65
  "copy2brianwhaley": "rm -rf ../brianwhaley/node_modules/@pixelated-tech/components/dist && cp -r dist ../brianwhaley/node_modules/@pixelated-tech/components/",
66
66
  "copy2informationfocus": "rm -rf ../informationfocus/node_modules/@pixelated-tech/components/dist && cp -r dist ../informationfocus/node_modules/@pixelated-tech/components/",
67
67
  "copy2jzhomeimprovement": "rm -rf ../jz-home-improvement/node_modules/@pixelated-tech/components/dist && cp -r dist ../jz-home-improvement/node_modules/@pixelated-tech/components/",
68
+ "copy2manningmetalworks": "rm -rf ../manning-metal-works/node_modules/@pixelated-tech/components/dist && cp -r dist ../manningmetalworks/node_modules/@pixelated-tech/components/",
68
69
  "copy2oaktreelandscaping": "rm -rf ../oaktreelandscaping/node_modules/@pixelated-tech/components/dist && cp -r dist ../oaktreelandscaping/node_modules/@pixelated-tech/components/",
69
70
  "copy2palmettoepoxy": "rm -rf ../palmetto-epoxy/node_modules/@pixelated-tech/components/dist && cp -r dist ../palmetto-epoxy/node_modules/@pixelated-tech/components/",
70
71
  "copy2pixelated": "rm -rf ../pixelated/node_modules/@pixelated-tech/components/dist && cp -r dist ../pixelated/node_modules/@pixelated-tech/components/",
71
- "copy2pixelvivid": "rm -rf ../pixelvivid/node_modules/@pixelated-tech/components/dist && cp -r dist ../pixelvivid/node_modules/@pixelated-tech/components/",
72
- "copy2pixelatedtest": "rm -rf ../pixelated-test/node_modules/@pixelated-tech/components/dist && cp -r dist ../pixelated-test/node_modules/@pixelated-tech/components/",
73
- "copy2template": "rm -rf ../pixelated-template/node_modules/@pixelated-tech/components/dist && cp -r dist ../pixelated-template/node_modules/@pixelated-tech/components/",
74
72
  "copy2pixelatedadmin": "rm -rf ../pixelated-admin/node_modules/@pixelated-tech/components/dist && cp -r dist ../pixelated-admin/node_modules/@pixelated-tech/components/",
75
- "copy2all": "npm run copy2brianwhaley && npm run copy2informationfocus && npm run copy2jzhomeimprovement && npm run copy2oaktreelandscaping && npm run copy2palmettoepoxy && npm run copy2pixelated && npm run copy2pixelvivid && npm run copy2template && npm run copy2pixelatedadmin",
73
+ "copy2template": "rm -rf ../pixelated-template/node_modules/@pixelated-tech/components/dist && cp -r dist ../pixelated-template/node_modules/@pixelated-tech/components/",
74
+ "copy2pixelvivid": "rm -rf ../pixelvivid/node_modules/@pixelated-tech/components/dist && cp -r dist ../pixelvivid/node_modules/@pixelated-tech/components/",
75
+ "copy2threemuses": "rm -rf ../threemuses/node_modules/@pixelated-tech/components/dist && cp -r dist ../threemuses/node_modules/@pixelated-tech/components/",
76
+ "copy2all": "npm run copy2brianwhaley && npm run copy2informationfocus && npm run copy2jzhomeimprovement && npm run copy2manningmetalworks && npm run copy2oaktreelandscaping && npm run copy2palmettoepoxy && npm run copy2pixelated && npm run copy2pixelatedadmin && npm run copy2template && npm run copy2pixelvivid && npm run copy2threemuses",
76
77
  "storybook": "rm -rf node_modules/.cache && storybook dev -p 6006",
77
78
  "buildStorybook": "rm -rf node_modules/.cache && NODE_OPTIONS=\"--max-old-space-size=8192\" storybook build",
78
79
  "test-storybook": "npx storybook test -c .storybook",
@@ -113,11 +114,11 @@
113
114
  "html-entities": "^2.6.0"
114
115
  },
115
116
  "devDependencies": {
116
- "@aws-sdk/client-amplify": "^3.1014.0",
117
- "@aws-sdk/client-cloudwatch": "^3.1014.0",
118
- "@aws-sdk/client-iam": "^3.1014.0",
119
- "@aws-sdk/client-route-53": "^3.1014.0",
120
- "@aws-sdk/xml-builder": "^3.972.15",
117
+ "@aws-sdk/client-amplify": "^3.1021.0",
118
+ "@aws-sdk/client-cloudwatch": "^3.1021.0",
119
+ "@aws-sdk/client-iam": "^3.1021.0",
120
+ "@aws-sdk/client-route-53": "^3.1021.0",
121
+ "@aws-sdk/xml-builder": "^3.972.16",
121
122
  "@babel/core": "^7.29.0",
122
123
  "@babel/plugin-proposal-class-properties": "^7.18.6",
123
124
  "@babel/plugin-proposal-object-rest-spread": "^7.20.7",
@@ -125,11 +126,11 @@
125
126
  "@babel/preset-react": "^7.28.5",
126
127
  "@babel/preset-typescript": "^7.28.5",
127
128
  "@eslint/js": "9.39.4",
128
- "@storybook/addon-a11y": "^10.3.1",
129
- "@storybook/addon-docs": "^10.3.1",
130
- "@storybook/addon-webpack5-compiler-babel": "^4.0.0",
129
+ "@storybook/addon-a11y": "^10.3.3",
130
+ "@storybook/addon-docs": "^10.3.3",
131
+ "@storybook/addon-webpack5-compiler-babel": "^4.0.1",
131
132
  "@storybook/preset-scss": "^1.0.3",
132
- "@storybook/react-webpack5": "^10.3.1",
133
+ "@storybook/react-webpack5": "^10.3.3",
133
134
  "@testing-library/dom": "^10.4.1",
134
135
  "@testing-library/react": "^16.3.2",
135
136
  "@testing-library/user-event": "^14.6.1",
@@ -138,11 +139,11 @@
138
139
  "@types/prop-types": "^15.7.15",
139
140
  "@types/react": "^19.2.14",
140
141
  "@types/react-dom": "^19.2.3",
141
- "@typescript-eslint/eslint-plugin": "^8.57.1",
142
- "@typescript-eslint/parser": "^8.57.1",
142
+ "@typescript-eslint/eslint-plugin": "^8.58.0",
143
+ "@typescript-eslint/parser": "^8.58.0",
143
144
  "@vitejs/plugin-react": "^6.0.1",
144
- "@vitest/coverage-v8": "^4.1.0",
145
- "@vitest/ui": "^4.1.0",
145
+ "@vitest/coverage-v8": "^4.1.2",
146
+ "@vitest/ui": "^4.1.2",
146
147
  "ajv": "^8.18.0",
147
148
  "ajv-keywords": "^5.1.0",
148
149
  "babel-loader": "^10.1.1",
@@ -154,11 +155,11 @@
154
155
  "eslint-plugin-jsx-a11y": "^6.10.2",
155
156
  "eslint-plugin-react": "^7.37.5",
156
157
  "file-loader": "^6.2.0",
157
- "happy-dom": "^20.8.4",
158
+ "happy-dom": "^20.8.9",
158
159
  "jsdom": "^29.0.1",
159
160
  "less-loader": "^12.3.2",
160
- "mini-css-extract-plugin": "^2.10.1",
161
- "next": "16.2.1",
161
+ "mini-css-extract-plugin": "^2.10.2",
162
+ "next": "16.2.2",
162
163
  "null-loader": "^4.0.1",
163
164
  "prop-types": "^15.8.1",
164
165
  "react": "19.2.4",
@@ -168,12 +169,12 @@
168
169
  "redux": "^5.0.1",
169
170
  "sass": "^1.98.0",
170
171
  "sass-loader": "^16.0.7",
171
- "storybook": "^10.3.1",
172
+ "storybook": "^10.3.3",
172
173
  "style-loader": "^4.0.0",
173
174
  "ts-loader": "^9.5.4",
174
- "typescript": "^5.9.3",
175
+ "typescript": "^6.0.2",
175
176
  "url-loader": "^4.1.1",
176
- "vitest": "^4.1.0",
177
+ "vitest": "^4.1.2",
177
178
  "webpack": "^5.105.4",
178
179
  "webpack-cli": "^7.0.2",
179
180
  "webpack-dev-server": "^5.2.3",
@@ -183,7 +184,7 @@
183
184
  "flatted": "^3.4.2"
184
185
  },
185
186
  "peerDependencies": {
186
- "next": "^16.2.1",
187
+ "next": "^16.2.2",
187
188
  "react": "^19.2.4",
188
189
  "react-dom": "^19.2.4"
189
190
  },
@@ -200,7 +201,7 @@
200
201
  "md5": "^2.3.0",
201
202
  "puppeteer": "^24.40.0",
202
203
  "react-redux": "*",
203
- "recharts": "^3.8.0",
204
+ "recharts": "^3.8.1",
204
205
  "redux": "*",
205
206
  "webpack-cli": "^7.0.2"
206
207
  }