@pixelated-tech/components 3.13.6 → 3.13.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/admin/site-health/site-health-axe-core.integration.js +12 -3
- package/dist/components/general/hero.css +13 -1
- package/dist/components/general/hero.js +29 -15
- package/dist/components/general/smartimage.js +1 -0
- package/dist/components/integrations/googlesearch.css +12 -21
- package/dist/components/integrations/wordpress.components.js +26 -0
- package/dist/components/integrations/wordpress.functions.js +54 -2
- package/dist/config/pixelated.config.json.enc +1 -1
- package/dist/scripts/release.sh +16 -12
- package/dist/scripts/update.sh +33 -0
- package/dist/types/components/general/hero.d.ts +12 -8
- package/dist/types/components/general/hero.d.ts.map +1 -1
- package/dist/types/components/general/smartimage.d.ts.map +1 -1
- package/dist/types/components/integrations/wordpress.components.d.ts +11 -0
- package/dist/types/components/integrations/wordpress.components.d.ts.map +1 -1
- package/dist/types/components/integrations/wordpress.functions.d.ts +4 -0
- package/dist/types/components/integrations/wordpress.functions.d.ts.map +1 -1
- package/dist/types/stories/general/hero.stories.d.ts +35 -0
- package/dist/types/stories/general/hero.stories.d.ts.map +1 -1
- package/dist/types/tests/wordpress.components.test.d.ts +2 -0
- package/dist/types/tests/wordpress.components.test.d.ts.map +1 -0
- package/package.json +16 -13
|
@@ -197,13 +197,13 @@ async function runAxeCoreAnalysis(url, runtime_env = 'auto') {
|
|
|
197
197
|
}
|
|
198
198
|
catch (err) {
|
|
199
199
|
let injected = false;
|
|
200
|
-
let lastError;
|
|
201
200
|
// Try common local node_modules locations relative to process.cwd() and __dirname
|
|
202
201
|
const possiblePaths = [
|
|
203
202
|
path.join(process.cwd(), 'node_modules', 'axe-core', 'axe.min.js'),
|
|
204
203
|
path.join(process.cwd(), '..', 'node_modules', 'axe-core', 'axe.min.js'),
|
|
205
204
|
path.join(__dirname, '..', '..', 'node_modules', 'axe-core', 'axe.min.js')
|
|
206
205
|
];
|
|
206
|
+
let lastError = null;
|
|
207
207
|
for (const p of possiblePaths) {
|
|
208
208
|
try {
|
|
209
209
|
if (fs.existsSync(p)) {
|
|
@@ -215,7 +215,8 @@ async function runAxeCoreAnalysis(url, runtime_env = 'auto') {
|
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
217
|
catch (e) {
|
|
218
|
-
//
|
|
218
|
+
// remember for diagnostics but otherwise ignore
|
|
219
|
+
lastError = e;
|
|
219
220
|
}
|
|
220
221
|
}
|
|
221
222
|
// Last resort: require.resolve
|
|
@@ -232,7 +233,15 @@ async function runAxeCoreAnalysis(url, runtime_env = 'auto') {
|
|
|
232
233
|
}
|
|
233
234
|
}
|
|
234
235
|
if (!injected) {
|
|
235
|
-
|
|
236
|
+
// include the original CDN error as the cause so eslint's
|
|
237
|
+
// ``preserve-caught-error`` rule is satisfied. append any
|
|
238
|
+
// local load failure info to the message for diagnostics.
|
|
239
|
+
const msg = 'Could not load axe-core via CDN or local inline injection';
|
|
240
|
+
const errorToThrow = new Error(msg, { cause: err });
|
|
241
|
+
if (lastError) {
|
|
242
|
+
errorToThrow.message += ` (local injection error: ${String(lastError)})`;
|
|
243
|
+
}
|
|
244
|
+
throw errorToThrow;
|
|
236
245
|
}
|
|
237
246
|
}
|
|
238
247
|
// Run axe-core analysis (poll across frames for availability after injection)
|
|
@@ -17,7 +17,7 @@ body:has(.hero.anchored-img) {
|
|
|
17
17
|
|
|
18
18
|
.hero {
|
|
19
19
|
width: 100%;
|
|
20
|
-
height: 60vh;
|
|
20
|
+
height: 60vh; /* default */
|
|
21
21
|
display: flex;
|
|
22
22
|
flex-direction: column;
|
|
23
23
|
justify-content: center;
|
|
@@ -80,3 +80,15 @@ body:has(.hero.anchored-img) {
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
}
|
|
83
|
+
|
|
84
|
+
.hero.video {
|
|
85
|
+
color: white;
|
|
86
|
+
|
|
87
|
+
video {
|
|
88
|
+
width: 100%;
|
|
89
|
+
height: 100%;
|
|
90
|
+
object-fit: cover;
|
|
91
|
+
z-index: -1;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx,
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect } from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { SmartImage } from '@pixelated-tech/components';
|
|
@@ -17,23 +17,30 @@ import "./hero.css";
|
|
|
17
17
|
* ANCHORED works as expected on desktop. mobile does not anchor and image is full size
|
|
18
18
|
* ANCHORED-DIV works mostly as expected on desktop and mobile (only see the last hero image)
|
|
19
19
|
* ANCHORED-IMG works as expected on desktop and mobile, but requires JS
|
|
20
|
+
* VIDEO TBD
|
|
20
21
|
*/
|
|
21
22
|
Hero.propTypes = {
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
/** Alternative text for the background image (optional) */
|
|
25
|
-
imgAlt: PropTypes.string,
|
|
26
|
-
/** ID for the hero section */
|
|
27
|
-
imgId: PropTypes.string,
|
|
28
|
-
/** Layout variant: 'static' or 'anchored' */
|
|
29
|
-
variant: PropTypes.oneOf(['static', 'anchored', 'anchored-div', 'anchored-img', 'sticky']),
|
|
23
|
+
/** Layout variant: 'static', 'anchored' or 'video' */
|
|
24
|
+
variant: PropTypes.oneOf(['static', 'anchored', 'anchored-div', 'anchored-img', 'video']),
|
|
30
25
|
/** Height for hero section (string like '60vh' or number) */
|
|
31
26
|
height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
32
27
|
/** Child nodes to render over the background */
|
|
33
28
|
children: PropTypes.node,
|
|
29
|
+
/** Background image URL (required unless using video variant) */
|
|
30
|
+
img: PropTypes.string,
|
|
31
|
+
/** Alternative text for the background image (optional) */
|
|
32
|
+
imgAlt: PropTypes.string,
|
|
33
|
+
/** ID for the hero section */
|
|
34
|
+
imgId: PropTypes.string,
|
|
35
|
+
/** Video file URL (mp4/webm etc) when using the 'video' variant */
|
|
36
|
+
video: PropTypes.string,
|
|
37
|
+
/** Poster image to show before the video plays */
|
|
38
|
+
videoPoster: PropTypes.string,
|
|
34
39
|
};
|
|
35
|
-
export function Hero({ img, imgAlt, imgId, variant = 'static', height = '60vh', children }) {
|
|
36
|
-
const id = imgId ?? imgAlt ?? img
|
|
40
|
+
export function Hero({ img, imgAlt, video, videoPoster, imgId, variant = 'static', height = '60vh', children }) {
|
|
41
|
+
const id = imgId ?? imgAlt ?? img?.split('/').pop()?.split('.')[0] ?? '';
|
|
42
|
+
const hasVideo = variant === 'video' && !!video; // only play when variant explicitly video
|
|
43
|
+
// note: we don't validate in production – caller should pick correct props
|
|
37
44
|
useEffect(() => {
|
|
38
45
|
const parentContainer = document.getElementById("hero-" + id?.toString());
|
|
39
46
|
const anchorImage = document.getElementById(id?.toString() || '');
|
|
@@ -55,17 +62,24 @@ export function Hero({ img, imgAlt, imgId, variant = 'static', height = '60vh',
|
|
|
55
62
|
rootMargin: '0px',
|
|
56
63
|
threshold: 0.0
|
|
57
64
|
});
|
|
58
|
-
if (variant === 'anchored-img' && parentContainer) {
|
|
65
|
+
if (variant === 'anchored-img' && !!img && parentContainer) {
|
|
59
66
|
observer.observe(parentContainer);
|
|
60
67
|
}
|
|
61
68
|
}, []);
|
|
62
|
-
if (variant === '
|
|
69
|
+
if (variant === 'static' && !!img) {
|
|
70
|
+
return (_jsx(_Fragment, { children: _jsx("div", { id: id, className: "hero" + (variant ? " " + variant : ''), style: { backgroundImage: `url(${img})`, height: height ?? '60vh' }, children: children }) }));
|
|
71
|
+
}
|
|
72
|
+
else if (variant === 'anchored-div' && !!img) {
|
|
63
73
|
return (_jsx(_Fragment, { children: _jsxs("div", { id: id, className: "hero" + (variant ? " " + variant : ''), style: { height: height ?? '60vh' }, children: [_jsx("div", { id: id + "-bg", className: "hero-div-bg-img", style: { backgroundImage: `url(${img})` } }), children] }) }));
|
|
64
74
|
}
|
|
65
|
-
else if (variant === 'anchored-img') {
|
|
75
|
+
else if (variant === 'anchored-img' && !!img) {
|
|
66
76
|
return (_jsx(_Fragment, { children: _jsxs("div", { className: "hero" + (variant ? " " + variant : ''), id: "hero-" + id?.toString(), children: [_jsx(SmartImage, { src: img, alt: imgAlt || '', id: id?.toString() || '', quality: 100, width: 4000, height: 3000, fetchPriority: "high", aboveFold: true, style: { height: height ?? '60vh' } }), children] }) }));
|
|
67
77
|
}
|
|
78
|
+
else if (variant === 'video' && !!video) {
|
|
79
|
+
return (_jsxs("div", { id: id, className: "hero video", style: { height: height ?? '60vh' }, children: [_jsx("video", { src: video, poster: videoPoster || undefined, autoPlay: true, muted: true, loop: true, playsInline: true, className: "hero-video" }), children] }));
|
|
80
|
+
}
|
|
68
81
|
else {
|
|
69
|
-
|
|
82
|
+
/* If no valid variant or required media is provided, render an empty hero container with children (if any) */
|
|
83
|
+
return (_jsx("div", { id: id, className: "hero" + (variant ? " " + variant : ''), style: { height: height ?? '60vh' }, children: children }));
|
|
70
84
|
}
|
|
71
85
|
}
|
|
@@ -177,6 +177,7 @@ export function SmartImage(props) {
|
|
|
177
177
|
transforms: newProps.cloudinaryTransforms ?? undefined,
|
|
178
178
|
cloudinaryDomain: newProps.cloudinaryDomain
|
|
179
179
|
});
|
|
180
|
+
// newProps.sizes = `${newProps.width}px`;
|
|
180
181
|
if (!(newProps.sizes))
|
|
181
182
|
newProps.sizes = `${newProps.width}px`;
|
|
182
183
|
}
|
|
@@ -13,29 +13,20 @@
|
|
|
13
13
|
============ GOOGLE SEARCH ============
|
|
14
14
|
======================================== */
|
|
15
15
|
|
|
16
|
-
.
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.gsc-tabsArea {
|
|
21
|
-
border-color: #336699;
|
|
22
|
-
}
|
|
16
|
+
form.gsc-search-box {
|
|
17
|
+
max-width: 100% !important;
|
|
23
18
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
19
|
+
table td {
|
|
20
|
+
height: 15px;
|
|
21
|
+
}
|
|
27
22
|
|
|
28
|
-
input.gsc-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
input.gsc-input {
|
|
24
|
+
font-size: 1.0em !important;
|
|
25
|
+
background: none !important;
|
|
26
|
+
}
|
|
31
27
|
|
|
32
|
-
input.gsc-input {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
28
|
+
.gsc-input .gsc-input-box {
|
|
29
|
+
padding: 0px;
|
|
30
|
+
}
|
|
36
31
|
|
|
37
|
-
.gsc-control-cse {
|
|
38
|
-
border-color: transparent !important;
|
|
39
|
-
background-color: transparent !important;
|
|
40
|
-
padding: .5em !important;
|
|
41
32
|
}
|
|
@@ -7,6 +7,7 @@ import { SmartImage } from '../general/smartimage';
|
|
|
7
7
|
import { PageGridItem } from '../general/semantic';
|
|
8
8
|
import { getWordPressItems } from './wordpress.functions';
|
|
9
9
|
import { Loading, ToggleLoading } from '../general/loading';
|
|
10
|
+
import { CacheManager } from "../general/cache-manager";
|
|
10
11
|
import "./wordpress.css";
|
|
11
12
|
// https://microformats.org/wiki/h-entry
|
|
12
13
|
function decodeString(str) {
|
|
@@ -14,6 +15,31 @@ function decodeString(str) {
|
|
|
14
15
|
textarea.innerHTML = str;
|
|
15
16
|
return textarea.value;
|
|
16
17
|
}
|
|
18
|
+
const wpCacheTTL = 1000 * 60 * 60 * 24 * 7; // 1 week
|
|
19
|
+
const wpCache = new CacheManager({ mode: 'local', ttl: wpCacheTTL, prefix: 'wp_' });
|
|
20
|
+
/**
|
|
21
|
+
* getCachedWordPressItems — Fetch posts from the WordPress REST API with caching. Checks local cache first and returns cached posts if available and not expired; otherwise fetches from the API, stores in cache, and returns the fresh data.
|
|
22
|
+
*
|
|
23
|
+
* @param {string} [props.site] - WordPress site identifier (site slug or domain).
|
|
24
|
+
* @returns {array|undefined} Array of blog posts if successful, or undefined if site is not provided.
|
|
25
|
+
*/
|
|
26
|
+
getCachedWordPressItems.propTypes = {
|
|
27
|
+
/** WordPress site identifier (slug or domain) */
|
|
28
|
+
site: PropTypes.string.isRequired,
|
|
29
|
+
};
|
|
30
|
+
export async function getCachedWordPressItems(props) {
|
|
31
|
+
const site = props.site ?? '';
|
|
32
|
+
if (!site)
|
|
33
|
+
return undefined;
|
|
34
|
+
const key = `posts-${site}`;
|
|
35
|
+
let posts = wpCache.get(key) || undefined;
|
|
36
|
+
if (!posts) {
|
|
37
|
+
posts = await getWordPressItems({ site });
|
|
38
|
+
if (posts)
|
|
39
|
+
wpCache.set(key, posts);
|
|
40
|
+
}
|
|
41
|
+
return posts;
|
|
42
|
+
}
|
|
17
43
|
/**
|
|
18
44
|
* BlogPostList — Render a list of WordPress posts. If `posts` are provided they are used directly; otherwise the component will fetch posts from the configured WordPress endpoint.
|
|
19
45
|
*
|
|
@@ -22,6 +22,7 @@ getWordPressItems.propTypes = {
|
|
|
22
22
|
export async function getWordPressItems(props) {
|
|
23
23
|
const { baseURL = wpApiURL } = props;
|
|
24
24
|
const requested = props.count; // undefined means fetch all available
|
|
25
|
+
const tag = `wp-posts-${props.site}`; // unique per site so we can invalidate fetch cache separately
|
|
25
26
|
const posts = [];
|
|
26
27
|
let page = 1;
|
|
27
28
|
while (true) {
|
|
@@ -29,13 +30,19 @@ export async function getWordPressItems(props) {
|
|
|
29
30
|
const number = Math.min(remaining || 100, 100);
|
|
30
31
|
const wpPostsURL = `${baseURL}${props.site}/posts?number=${number}&page=${page}`;
|
|
31
32
|
try {
|
|
32
|
-
const response = await fetch(wpPostsURL);
|
|
33
|
+
// const response = await fetch(wpPostsURL);
|
|
34
|
+
const response = await fetch(wpPostsURL, {
|
|
35
|
+
// cache the HTTP response and mark it with a tag so it can be
|
|
36
|
+
// invalidated independently of the page cache.
|
|
37
|
+
cache: 'force-cache',
|
|
38
|
+
next: { revalidate: 60 * 60 * 24 * 7, tags: [tag] }, // revalidate once per week
|
|
39
|
+
});
|
|
33
40
|
const data = await response.json();
|
|
34
41
|
const batch = Array.isArray(data.posts) ? data.posts : [];
|
|
35
42
|
if (batch.length === 0) {
|
|
36
43
|
break; // no more posts
|
|
37
44
|
}
|
|
38
|
-
// Process Photon URLs in featured images
|
|
45
|
+
// Process WordPress Photon URLs in featured images
|
|
39
46
|
const processedBatch = batch.map(post => ({
|
|
40
47
|
...post,
|
|
41
48
|
featured_image: post.featured_image ? photonToOriginalUrl(post.featured_image) : post.featured_image
|
|
@@ -51,8 +58,53 @@ export async function getWordPressItems(props) {
|
|
|
51
58
|
return;
|
|
52
59
|
}
|
|
53
60
|
}
|
|
61
|
+
// once we've fetched the posts we can also compare the "modified" date from
|
|
62
|
+
// the first post (which is the most recent) with a fresh timestamp obtained
|
|
63
|
+
// via getWordPressLastModified. if the header indicates a newer update than
|
|
64
|
+
// what we just fetched, bust the cache so future callers get the latest data.
|
|
65
|
+
try {
|
|
66
|
+
if (posts.length > 0 && posts[0].modified) {
|
|
67
|
+
const lastModified = await getWordPressLastModified({ site: props.site, baseURL });
|
|
68
|
+
if (lastModified && lastModified !== posts[0].modified) {
|
|
69
|
+
// our cached response is stale relative to origin
|
|
70
|
+
import('next/cache').then(({ revalidateTag }) => {
|
|
71
|
+
revalidateTag(`wp-posts-${props.site}`, {});
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
// non-fatal, we already have posts and can return them
|
|
78
|
+
console.warn('comparison check failed', e);
|
|
79
|
+
}
|
|
54
80
|
return posts;
|
|
55
81
|
}
|
|
82
|
+
/*
|
|
83
|
+
* Retrieve the modified timestamp of the most recent post on a WP site.
|
|
84
|
+
* WordPress doesn’t support HEAD on the posts endpoint, so we fetch a single
|
|
85
|
+
* post and pull the `modified` field from the JSON payload. This is still
|
|
86
|
+
* very light-weight compared to fetching the whole collection.
|
|
87
|
+
*
|
|
88
|
+
* @param props.site - WordPress site slug or domain
|
|
89
|
+
* @param props.baseURL - Optional API base URL (defaults to WordPress public API)
|
|
90
|
+
* @returns the ISO modified string or null if unavailable/error.
|
|
91
|
+
*/
|
|
92
|
+
export async function getWordPressLastModified(props) {
|
|
93
|
+
const { baseURL = wpApiURL } = props;
|
|
94
|
+
const url = `${baseURL}${props.site}/posts?number=1&fields=modified`;
|
|
95
|
+
try {
|
|
96
|
+
const res = await fetch(url);
|
|
97
|
+
if (!res.ok)
|
|
98
|
+
return null;
|
|
99
|
+
const data = await res.json();
|
|
100
|
+
const modified = Array.isArray(data.posts) && data.posts[0]?.modified;
|
|
101
|
+
return modified || null;
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
console.error('Error fetching WP last-modified value', e);
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
56
108
|
/**
|
|
57
109
|
* getWordPressItemImages — Extract image objects from a WordPress post for use in sitemaps and galleries.
|
|
58
110
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
pxl:v1:
|
|
1
|
+
pxl:v1:fbf000f31450173d233f8d07:98f501df255377cc090f542157c6849d:791bc568604616c2980235f5076a5723a8fbd3036e3ff67690b5641fb0fd2c2ba6cd81d824504c036acd43d75495b394f50bc62b23094fb308a2c2854268f87004a2f0f03af1ce300f8a8272e905817bb328a0d696aa56a788bfd17f5c23ae0faef6165de82f4e57ea952b479e3194f38c901df8f8e1258ac7bb048b2b92b41862bb4636335fb36e2a04b54725fe3df8c0c52f2e6e4c1a8032422f94fa9092ff00bf36d4ad048537f545c028243f8497eedf91f35ce0f1a7197279f0b672ecd70f3782747f125e66ba4b01c24cd44960157ba073d331767d1c0b6605f7ea8c71adf5d52dc0fdc38e4bbdc53b817d3652329cc6537e13ed2aada1ef5d9f66796c00121813d9a467d242219c5b28d616f87e91265d3f7bb7d83c0d4f034c963392bfb5af187a1504b1d3eb4c950c360cf01ddd688c06e22d4da7017d9b41c10a99e115f23ab08cf622be306dfd9a418e5fb4cfe8f5aff1cbbcf59ab4cd9da01f67813aec29921906d0741bf1fa265a423e099310ac5ec716436cee539176713f32e92aae56ed8ba7be84032032aec269a5d341a054377394e62248a9cb92a9f2cc3c926395ef06a91cf5f8f9c3e4413ddcf5d0b4b9161a4e29590a6472cdd0f5d528e1f9db3d1820a5f4b3f15703a0785201db7bac327a8ac5050db63f5bbbfa3de111d6c3e73cc7a170f2e6e8b3eccea11a95fd18752bade6dbeb65686b54ba841615acff123b702f5a40c1b8c16943f92d491a30f90182b380c2db4f42ff4257e3a0320616958c7d30bad619caa2e1db4898b8925cbc20b873036b1a49fb01f73362ef73aea816c8425ec4dc00e516ef418ad0499ea00d0835dd58c68572d3c1dbd6fddeb0aa85b13d8a6bc6c05e27b141bea252fb4a7addd97a96c2862a57d3a862e8b1c4e661d72f93dfee016f8179dd3875202e4fd0f977619aaa53c4a12cdf205fb73cf29dcd6998833443483addd674cb034fa7df77ac21bb52ac2a56f50d8a0cddcf6066dbd8731466e01fe21cdd78b2d9422273ab332e7b50965becb5ebdea95bd081ebc8c6e76b630cfbcaa419ebda382b61292bd55a2d84d63f56e42336b26cef8a622a0c4fa1fa1778f25200283beffa38d069dd783a39462bd1cbdd69d875abe01a2883fca84a73c3ff33f750ec128aecd2c71dfb097904d364b513eb08023f6585aa36ffe5fcc83294ff12baa0196c4b83c1611d58330757841b3c0b6eb4868c53e544fbdea8d155a7eda0b69e1711a7393a95cd790a0084442d8c1ff37b29438466beb6255a95a8e9a859976d3426e3604592977b7217f027dc9379f79a98d0336c7f7f751d74be4adecf3cd53a9db6781eb2261a667d56a88b129ea5bdaea82fb66b5b126e2216b0d99973d75e071df331d8a36a086d82fef8304926abcc812746026e2f17e918488119fad26c1b5e5269ae10da03110841df4b0daa8a6be742dc7215513266c4f0772756b2ab46f88bcbef9966e200cf69d849dc6964f261a6a32e0ab7bf573f164c82649a451b82c950a154b213b62c7339e8e5c589e9e7a586b8a9819ff5da892f512523bf6547d1ab8fc381b3fd7000fabade1023b68cd899eadc68078e22ed7520d178709ea4ee588c288f88ef9a59c6467fd6bb098bbb2ccf5e1a4ee67ff3ca65eff684ee7489502f0517a7a3b70aaa5a17de3a1b3e0ee673621dcf1af2075c5232cabf15a3c3cd8e5b66df709516f47a4f754d4468f76593a2485410f8abfdcddc7345717d67aee69c70c98143c13199f448a697bd5763c49f9b75656cfc06490a92e6e4ff190faca377fb1b7566af3b91be5187fd77fd7f04bd57a53cb5b88b3490faa240b36ed2fb1b723671776f7881f49d42c14b55ddd00c2ae0c852cc2e05fd9b70f9867cccce515082db3ab3d5052a4afd80b5ab3dc6976170a1114d04cb3a225b8388325fd24609d11820b4d47f002cb7529abc47bd10ce96e2373425784b68258058683dc459a55a78d0b6cf8b9023204ed6a0ba90e5221b4103302437c5a919d5b098d21ba233138cc36c56bc5a6b74a29358b4156c4d0011944fb2d86fbb6c9d3feb27e34c1cbb204b5a6e10cea4100e85b96a28a5372401ad79bde01a950d2afeebae6d52fde22a1c6f19603f02336d0c1513a1d50ccef469fefefcc92ce01c839b719687d9cb47e869bdd9238d54390b9ab3689daa9ee748fe0793e9415e2e50af1a3e5221fcd903687245da166ef7fd726f2ed4750845653f1db0324aed2c4d2a2c59e9fe26dd151b200b90aab0e528fc437d24fe03db59094e47b6f889a5df2e8d8ecc38f7a030e18852edbdc6be479a93ea8b20f3dbd7248dbf8515d727c9a96063be090bba4a80fcfbded04b4f508451a515fcbf82a4afed4355e3a4b5463300297d32883f54b89012cf481c214e94832e3d9204752c3abcd3b018c7bc8f701d214fed6a72a27416f902326103868747884da3c3dd220e00e8f11ceb8c54a3b6abc039267dc54bb9471bd9e5ffb7dfa01aa7f80e35985237c9dafe164b730d7165ef528c515843cd1512a2d48c4b270b9f1e50648b45a0995671aae6418ee03bfd7239767ccc40fc89e0b88e6c23501c040943c289442901393f6ba169e8bbc360c0fdef8ccb8ac439d7661411ebf92c3efacb6b49c79faec622022e300cab336ebaae5342b560a68f71c513ab376ef85beeade2c71354d1a56f67be3f49d67ab94a6ab9c0634cf2b29576aaabead68e1acd6f47c01ed9da731420a63f46d67aa1fa42656bf31cac070adb1be5cb4a1fc7fc56718687c3dd219f0530f4adce63ea8b757deb31f4bddb50b5b962ba69973de96d3f5fa378bfd3ae40c35ee358fb21e9a0c23d5bee9a4141d7cda9b3c7a0fe76f0cebda6e824875bc52d65ef7d45ca4a3e088757a537db92d300fc3c255454439ad7ce0b3e9cbe5e4dd3a6b95acf6ad769753b9cb77148a77997e0276f774cd94dcae601dd4168f0f699af8f1d37ace99e827fc4bd7bd6732a58a42ee170e261b4062af972056f9abb5e6d64f28c6a46e1b88c294b4d4a2d06a2b0ae323b679b6e077b87bf7cbccd923ca5c9bb3c44b1202f27cc81c6cd379606a075d88e827970a5307b9ee15790d783ffb8c77dadd670d866e8ee547692c5e0e48dc18288901f2de0efed420e24cea2aee0fecee0edf851f69968ef07ad4afdf89b7aaa3828a88c1a21fd7a732329205a79b18a9874fe42bf0bae300f6c774e9c1cd1b66ea97d3d56e694e9c73105ed209f0042b1d01a4640191e8027624bbbaf1f5d790762e2710ac5a72a9e191ce8819eb9c18c7f11107a54481c32d186fe2cf8f4fb8ed222f230d3fc0ebbc834a091e04bd0924ea3c80fa19a6cf95a8bfb401bbcbba5c77903b33c2501eaa205e8c80b351769ae5c5ba45210b4bbb2849b0a8f0360be47bf789366b7759fe25f8efb5540a0cc4b266be2a86b739a8d32a3e6fbca078e5307540429e6c8cb18447cc3ad383afabe4ae4a4fc301d1df641090798631443d94a827cf2b6db4a2f3ecb4125f24c21286041e429a244ba0d1e7dbf1ae85435f8f0a0a55640e8604178a92f113be0aee6e68fe5276bf8b1b6bbb65368d982602a0c5a961033078a1a5a4b363ec269d9be43aead8d0ced985cb12f25efa5f0a751dba9db957736eb20166de46c4dce44500ca25902bb0a0d1fa9c26e0e0bc1cfe771736bcc219c5d0778e56d8cb147869e571e831043427cf804fb26041460bc90cd69151163c1e3be958744c0a5a9d1e3a0862c942a2219bf5b27b29ce88a818cfd45c385b51749171d44f4007ce1261874cd1f2ae0be596c2c84dbcae0e4f2bafff13976dbee1253799ee16e795cc9bafd8b5400bea9193e925295a6aa45b3caba5335a2b412885494b80456a6f3f44c1faba043723700d1bb32464595a3b44b9fcfedfa8971c390c610ab7a9b9fa134fa31541cf54650a925d1a835c9a9f54ca936bf4281972fdd2ff6979e596545132199537a6cacbe86857d02b6374c73c382b73bfecdef55792f980cdb5d0fde1a5073d57984d49e23ea5da360c736053275956615ab74881445210b213bbf0e1edb5bff0409d6e43bc0d87d575e5f4bbc4322bade3ec4d55f00c8c3273e9d4aece771618015cac2ed06d6dcb9d43a68fed759d8c5cb209175ef015967fd4fdd6b4f7e2335e094a277aa906d18e6db43d8a2fa300fc472464843d514547d3a570326493043360960e0470822e31ae666845c4942b2447c0847b8581fa9c157ba0c9f353096af6988b1aabfd4b2af3d4abbc1d383110f0bac23cae697e6d7cc4a187f95252124777da449452f88ce925f6bb7aac2ad0a1f3ab467915457fa1096ca73135d4052daf5afb9e5ca88dc66953b30a5467a29d9d405d1b1bf5c208a89b13fa382401a68bf845f0ff48d13a58a3f65571cdb9acd53f472ab484b16b15a3f9ecd294c5971a79c888b339a503a8a20d72b5c45b261ccf366a5ff91816c810626edf6c0411e3a6d6cab4b1fa49866ca83f77fc0562a9228423e4293b53a892b6a3c22991d09c2006a8ce51c0ed860f7c4d7f681a6eb28bad68ad44bc4f6ff53527e22442af63580982b60a7ddc2be544e6875d66bd2fc3dd0c40ad534ba0b143e34f892ee229b8f432d364d919fbf43b462df16f75db0b6688740dcae990b0f40b1c12cf0e2c51410a9d7e21746bce3dfcea6b075902e582ec37969d15907c050f15d6ac75fbedfd6629ad40d42547739c29c05a5524a1605944bde50af6ba7cf5c6ed3f743576f39b31eaca57c30779d5e0da8af2e5e0f33bd342dfb430a5c220e193e46996b08d94e207f486253dffd6b26af9e84135ee207723fc21da2da497e00f6ab0ca4c257fba797aacd283c10417ed0b9c2154c392614538f00e28b15709a9b73109dd2ceb50b5c5e368d3fa5d2aeae956c681bfe40647fb9abdf9eab1df01a426af05105abcdf9c191d67a72398ef3b87e54c2d12c91793c9839a431131d76fb7fa6e7a14bf511b86c9c2c66c04f4f8bf887251357ebf96ce042e34f470d042e3e9adcceed4e4d70904f3bc817b50132bcb66040d1fbe156b79d453dbafd6f3d57eaeeb6c9a67c1a9faf35b8301ddeb117ba27869d6f899468c412e508884b3ba9cb175c65da2abe855cd5955c1f5bfadd55a12cea45e03a22105d5bea2203b65e60946987c140eaefac58c8
|
package/dist/scripts/release.sh
CHANGED
|
@@ -162,19 +162,23 @@ fi
|
|
|
162
162
|
|
|
163
163
|
|
|
164
164
|
echo ""
|
|
165
|
-
echo "📦 Step $((STEP_COUNT++)): Updating dependencies..."
|
|
165
|
+
echo "📦 Step $((STEP_COUNT++)): Updating dependencies (all sections)..."
|
|
166
166
|
echo "================================================="
|
|
167
|
-
#
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
else
|
|
176
|
-
|
|
177
|
-
fi
|
|
167
|
+
# iterate through prod/dev/optional sections, only bumping same-major versions
|
|
168
|
+
for scope in "" dev optional; do
|
|
169
|
+
flag=$([ "$scope" ] && echo "--$scope" || echo "")
|
|
170
|
+
save=$([ "$scope" ] && echo "--save-$scope" || echo "--save")
|
|
171
|
+
pkgs=$(npm outdated $flag --parseable --long | awk -F: '{ split($2,c,"@"); split($4,l,"@"); split(c[2],cv,"\\."); split(l[2],lv,"\\."); if(cv[1]==lv[1]) print $4 }')
|
|
172
|
+
if [ -n "$pkgs" ]; then
|
|
173
|
+
echo "Updating $scope packages: $pkgs"
|
|
174
|
+
echo "$pkgs" | xargs npm install --force $save 2>/dev/null || true
|
|
175
|
+
else
|
|
176
|
+
echo "✅ No $scope updates needed"
|
|
177
|
+
fi
|
|
178
|
+
done
|
|
179
|
+
# report peer deps separately
|
|
180
|
+
peers=$(npm outdated --parseable --long --peer | awk -F: '{print $4}')
|
|
181
|
+
printf "peer deps (manual): %s\n" "$peers"
|
|
178
182
|
|
|
179
183
|
|
|
180
184
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# update.sh - refresh dependencies across all sections
|
|
5
|
+
# usage: bash src/scripts/update.sh
|
|
6
|
+
|
|
7
|
+
for type in "" --dev --optional --peer; do
|
|
8
|
+
case $type in
|
|
9
|
+
"") flag=""; installArgs="--save" ;;
|
|
10
|
+
--dev) flag=--dev; installArgs="--save-dev" ;;
|
|
11
|
+
--optional) flag=--optional; installArgs="--save-optional" ;;
|
|
12
|
+
--peer) flag=--peer; installArgs="" ;;
|
|
13
|
+
esac
|
|
14
|
+
|
|
15
|
+
UPDATES=$(npm outdated $flag | awk 'NR>1 {print $1"@"$3}' || true)
|
|
16
|
+
if [ -n "$UPDATES" ]; then
|
|
17
|
+
echo "Updating $type packages: $UPDATES"
|
|
18
|
+
if [ "$type" = "--peer" ]; then
|
|
19
|
+
echo "peer deps need manual bumping: $UPDATES"
|
|
20
|
+
else
|
|
21
|
+
echo "$UPDATES" | xargs npm install --force $installArgs 2>/dev/null || true
|
|
22
|
+
fi
|
|
23
|
+
echo "✅ Updated $type packages"
|
|
24
|
+
else
|
|
25
|
+
echo "✅ No $type updates needed"
|
|
26
|
+
fi
|
|
27
|
+
done
|
|
28
|
+
|
|
29
|
+
# print peer dependencies that need manual update
|
|
30
|
+
peers=$(npm outdated --parseable --long --peer | awk -F: '{print $4}')
|
|
31
|
+
printf "peer deps (manual): %s\n" "$peers"
|
|
32
|
+
|
|
33
|
+
npm audit fix 2>/dev/null || true
|
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
import PropTypes, { InferProps } from 'prop-types';
|
|
2
2
|
import "./hero.css";
|
|
3
3
|
export type HeroType = InferProps<typeof Hero.propTypes>;
|
|
4
|
-
export declare function Hero({ img, imgAlt, imgId, variant, height, children }: HeroType): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare function Hero({ img, imgAlt, video, videoPoster, imgId, variant, height, children }: HeroType): import("react/jsx-runtime").JSX.Element;
|
|
5
5
|
export declare namespace Hero {
|
|
6
6
|
var propTypes: {
|
|
7
|
-
/**
|
|
8
|
-
img: PropTypes.Validator<string>;
|
|
9
|
-
/** Alternative text for the background image (optional) */
|
|
10
|
-
imgAlt: PropTypes.Requireable<string>;
|
|
11
|
-
/** ID for the hero section */
|
|
12
|
-
imgId: PropTypes.Requireable<string>;
|
|
13
|
-
/** Layout variant: 'static' or 'anchored' */
|
|
7
|
+
/** Layout variant: 'static', 'anchored' or 'video' */
|
|
14
8
|
variant: PropTypes.Requireable<string>;
|
|
15
9
|
/** Height for hero section (string like '60vh' or number) */
|
|
16
10
|
height: PropTypes.Requireable<NonNullable<string | number | null | undefined>>;
|
|
17
11
|
/** Child nodes to render over the background */
|
|
18
12
|
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
13
|
+
/** Background image URL (required unless using video variant) */
|
|
14
|
+
img: PropTypes.Requireable<string>;
|
|
15
|
+
/** Alternative text for the background image (optional) */
|
|
16
|
+
imgAlt: PropTypes.Requireable<string>;
|
|
17
|
+
/** ID for the hero section */
|
|
18
|
+
imgId: PropTypes.Requireable<string>;
|
|
19
|
+
/** Video file URL (mp4/webm etc) when using the 'video' variant */
|
|
20
|
+
video: PropTypes.Requireable<string>;
|
|
21
|
+
/** Poster image to show before the video plays */
|
|
22
|
+
videoPoster: PropTypes.Requireable<string>;
|
|
19
23
|
};
|
|
20
24
|
}
|
|
21
25
|
//# sourceMappingURL=hero.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hero.d.ts","sourceRoot":"","sources":["../../../../src/components/general/hero.tsx"],"names":[],"mappings":"AAEA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"hero.d.ts","sourceRoot":"","sources":["../../../../src/components/general/hero.tsx"],"names":[],"mappings":"AAEA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,YAAY,CAAC;AAoCpB,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;AACzD,wBAAgB,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,OAAkB,EAAE,MAAe,EAAE,QAAQ,EAAE,EAAE,QAAQ,2CAoFvH;yBApFe,IAAI;;QAlBnB,sDAAsD;;QAEtD,6DAA6D;;QAE7D,gDAAgD;;QAEhD,iEAAiE;;QAEjE,2DAA2D;;QAE3D,8BAA8B;;QAE9B,mEAAmE;;QAEnE,kDAAkD"}
|
|
@@ -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,
|
|
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,5 +1,16 @@
|
|
|
1
1
|
import PropTypes, { InferProps } from 'prop-types';
|
|
2
|
+
import type { BlogPostType } from './wordpress.functions';
|
|
2
3
|
import "./wordpress.css";
|
|
4
|
+
export type getCachedWordPressItemsType = InferProps<typeof getCachedWordPressItems.propTypes>;
|
|
5
|
+
export declare function getCachedWordPressItems(props: {
|
|
6
|
+
site: string;
|
|
7
|
+
}): Promise<BlogPostType[] | undefined>;
|
|
8
|
+
export declare namespace getCachedWordPressItems {
|
|
9
|
+
var propTypes: {
|
|
10
|
+
/** WordPress site identifier (slug or domain) */
|
|
11
|
+
site: PropTypes.Validator<string>;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
3
14
|
export type BlogPostListType = InferProps<typeof BlogPostList.propTypes>;
|
|
4
15
|
export declare function BlogPostList(props: BlogPostListType): import("react/jsx-runtime").JSX.Element;
|
|
5
16
|
export declare namespace BlogPostList {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wordpress.components.d.ts","sourceRoot":"","sources":["../../../../src/components/integrations/wordpress.components.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"wordpress.components.d.ts","sourceRoot":"","sources":["../../../../src/components/integrations/wordpress.components.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAInD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAM1D,OAAO,iBAAiB,CAAC;AA0BzB,MAAM,MAAM,2BAA2B,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC/F,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,uCAUpE;yBAVqB,uBAAuB;;QAJ5C,iDAAiD;;;;AAuClD,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;AACzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,2CAsDnD;yBAtDe,YAAY;;QAZ3B,gCAAgC;;QAEhC,kCAAkC;;QAElC,2CAA2C;;QAE3C,0CAA0C;;QAE1C,wCAAwC;;;;AA0FzC,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;AAC/E,wBAAgB,eAAe,CAAC,KAAK,EAAE,mBAAmB,2CAgDzD;yBAhDe,eAAe;;QAlB9B,iCAAiC;;QAEjC,iBAAiB;;QAEjB,qCAAqC;;QAErC,mBAAmB;;QAEnB,iCAAiC;;QAEjC,uCAAuC;;QAEvC,yBAAyB;;QAEzB,2BAA2B;;;;AAiE5B,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC;AACrF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,sBAAsB,kDAyB/D;yBAzBe,kBAAkB;;QAJjC,8BAA8B"}
|
|
@@ -31,6 +31,10 @@ export declare namespace getWordPressItems {
|
|
|
31
31
|
baseURL: PropTypes.Requireable<string>;
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
|
+
export declare function getWordPressLastModified(props: {
|
|
35
|
+
site: string;
|
|
36
|
+
baseURL?: string;
|
|
37
|
+
}): Promise<any>;
|
|
34
38
|
export type WordPressSitemapImage = {
|
|
35
39
|
url: string;
|
|
36
40
|
title?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wordpress.functions.d.ts","sourceRoot":"","sources":["../../../../src/components/integrations/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;AAgBF,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,
|
|
1
|
+
{"version":3,"file":"wordpress.functions.d.ts","sourceRoot":"","sources":["../../../../src/components/integrations/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;AAgBF,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,uCA6DhG;yBA7DqB,iBAAiB;;QARvC,iDAAiD;;QAEhD,0CAA0C;;QAE1C,4CAA4C;;;;AAiF7C,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,gBAavF;AAMD,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;AAUF,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;;QAJtC,4BAA4B;;;;AAkD5B,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;AAaF,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;;QAN5C,iDAAiD;;QAEhD,4CAA4C;;;;AAqB7C;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkB7D"}
|
|
@@ -9,6 +9,16 @@ declare const _default: {
|
|
|
9
9
|
type: string;
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
+
video: {
|
|
13
|
+
control: {
|
|
14
|
+
type: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
videoPoster: {
|
|
18
|
+
control: {
|
|
19
|
+
type: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
12
22
|
variant: {
|
|
13
23
|
control: {
|
|
14
24
|
type: string;
|
|
@@ -40,4 +50,29 @@ export declare const HeroPlayground: {
|
|
|
40
50
|
height: number;
|
|
41
51
|
};
|
|
42
52
|
};
|
|
53
|
+
export declare const HeroVideo: {
|
|
54
|
+
render: (args: any) => import("react/jsx-runtime").JSX.Element;
|
|
55
|
+
args: {
|
|
56
|
+
video: string;
|
|
57
|
+
videoPoster: string;
|
|
58
|
+
height: number;
|
|
59
|
+
};
|
|
60
|
+
argTypes: {
|
|
61
|
+
video: {
|
|
62
|
+
control: {
|
|
63
|
+
type: string;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
videoPoster: {
|
|
67
|
+
control: {
|
|
68
|
+
type: string;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
height: {
|
|
72
|
+
control: {
|
|
73
|
+
type: string;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
};
|
|
43
78
|
//# sourceMappingURL=hero.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hero.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/general/hero.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC
|
|
1
|
+
{"version":3,"file":"hero.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/general/hero.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGjD,wBAWE;AAiBF,eAAO,MAAM,cAAc;;;;;;;;CAQ1B,CAAC;AAEF,eAAO,MAAM,SAAS;mBACL,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAiBnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wordpress.components.test.d.ts","sourceRoot":"","sources":["../../../src/tests/wordpress.components.test.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixelated-tech/components",
|
|
3
|
-
"version": "3.13.
|
|
3
|
+
"version": "3.13.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": {
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"config:decrypt": "npm run config:vault -- decrypt src/config/pixelated.config.json.enc",
|
|
89
89
|
"create-pixelated-app": "node src/scripts/create-pixelated-app.js",
|
|
90
90
|
"zip-theme": "node src/scripts/zip-pixelated-theme.js ../pixelated-blog-wp-theme Pixelated.zip",
|
|
91
|
-
"update": "
|
|
91
|
+
"update": "bash dist/scripts/update.sh"
|
|
92
92
|
},
|
|
93
93
|
"scripts-20260113": {
|
|
94
94
|
"build": "npm run validate-exports && npm run buildClean && npm run tsc && npm run rsync && npm run tscClean ",
|
|
@@ -98,7 +98,9 @@
|
|
|
98
98
|
"tscClean": "rm -rf dist/{images,stories,tests}",
|
|
99
99
|
"rsync": "(cd src && tar -cf - $(find . -name \"*.css\" -o -name \"*.scss\" -o -name \"*.json\") scripts/) | tar -C dist -xf -",
|
|
100
100
|
"rsync1": "find src -type f \\( -name \"*.css\" -o -name \"*.scss\" -o -name \"*.json\" \\) -exec sh -c 'mkdir -p dist/$(dirname \"${1#src/}\") && cp \"$1\" dist/\"${1#src/}\"' _ {} \\; ; find src/scripts -type f -exec sh -c 'mkdir -p dist/$(dirname \"${1#src/}\") && cp \"$1\" dist/\"${1#src/}\"' _ {} \\;",
|
|
101
|
-
"rsync2": "rsync -a --include='*.css' --include='*.scss' --include='*.json' --include='scripts/**' --include='*/' --exclude='*' src/ dist"
|
|
101
|
+
"rsync2": "rsync -a --include='*.css' --include='*.scss' --include='*.json' --include='scripts/**' --include='*/' --exclude='*' src/ dist",
|
|
102
|
+
"update": "UPDATES=$(npm outdated | awk 'NR>1 {print $1\"@\"$3}' || true); if [ -n \"$UPDATES\" ]; then echo \"Updating the following packages: $UPDATES\"; echo \"$UPDATES\" | xargs npm install --force --save 2>/dev/null || true; echo \"✅ Successfully updated: $UPDATES\"; else echo \"✅ No dependency updates needed.\"; fi; npm audit fix 2>/dev/null || true",
|
|
103
|
+
"update-all": "npm run update && UPDATES=$(npm outdated --dev | awk 'NR>1 {print $1\"@\"$3}') && [ -n \"$UPDATES\" ] && echo \"$UPDATES\" | xargs npm install --force --save-dev; UPDATES=$(npm outdated --optional | awk 'NR>1 {print $1\"@\"$3}') && [ -n \"$UPDATES\" ] && echo \"$UPDATES\" | xargs npm install --force --save-optional; npm audit fix"
|
|
102
104
|
},
|
|
103
105
|
"scripts-old": {
|
|
104
106
|
"build-webpack": "rm -rf dist && npx tsc --project tsconfig.json && webpack --config webpack.config.js && npm run build-webpack-rsync",
|
|
@@ -110,22 +112,23 @@
|
|
|
110
112
|
"html-entities": "^2.6.0"
|
|
111
113
|
},
|
|
112
114
|
"devDependencies": {
|
|
113
|
-
"@aws-sdk/client-amplify": "^3.
|
|
114
|
-
"@aws-sdk/client-cloudwatch": "^3.
|
|
115
|
-
"@aws-sdk/client-iam": "^3.
|
|
116
|
-
"@aws-sdk/client-route-53": "^3.
|
|
115
|
+
"@aws-sdk/client-amplify": "^3.998.0",
|
|
116
|
+
"@aws-sdk/client-cloudwatch": "^3.998.0",
|
|
117
|
+
"@aws-sdk/client-iam": "^3.998.0",
|
|
118
|
+
"@aws-sdk/client-route-53": "^3.998.0",
|
|
119
|
+
"@aws-sdk/xml-builder": "^3.972.7",
|
|
117
120
|
"@babel/core": "^7.29.0",
|
|
118
121
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
119
122
|
"@babel/plugin-proposal-object-rest-spread": "^7.20.7",
|
|
120
123
|
"@babel/preset-env": "^7.29.0",
|
|
121
124
|
"@babel/preset-react": "^7.28.5",
|
|
122
125
|
"@babel/preset-typescript": "^7.28.5",
|
|
123
|
-
"@eslint/js": "^
|
|
124
|
-
"@storybook/addon-a11y": "^10.2.
|
|
125
|
-
"@storybook/addon-docs": "^10.2.
|
|
126
|
+
"@eslint/js": "^10.0.1",
|
|
127
|
+
"@storybook/addon-a11y": "^10.2.12",
|
|
128
|
+
"@storybook/addon-docs": "^10.2.12",
|
|
126
129
|
"@storybook/addon-webpack5-compiler-babel": "^4.0.0",
|
|
127
130
|
"@storybook/preset-scss": "^1.0.3",
|
|
128
|
-
"@storybook/react-webpack5": "^10.2.
|
|
131
|
+
"@storybook/react-webpack5": "^10.2.12",
|
|
129
132
|
"@testing-library/dom": "^10.4.1",
|
|
130
133
|
"@testing-library/react": "^16.3.2",
|
|
131
134
|
"@testing-library/user-event": "^14.6.1",
|
|
@@ -164,7 +167,7 @@
|
|
|
164
167
|
"redux": "^5.0.1",
|
|
165
168
|
"sass": "^1.97.3",
|
|
166
169
|
"sass-loader": "^16.0.7",
|
|
167
|
-
"storybook": "^10.2.
|
|
170
|
+
"storybook": "^10.2.12",
|
|
168
171
|
"style-loader": "^4.0.0",
|
|
169
172
|
"ts-loader": "^9.5.4",
|
|
170
173
|
"typescript": "^5.9.3",
|
|
@@ -181,7 +184,7 @@
|
|
|
181
184
|
"react-dom": "^19.2.0"
|
|
182
185
|
},
|
|
183
186
|
"optionalDependencies": {
|
|
184
|
-
"@aws-sdk/client-cloudwatch": "^3.
|
|
187
|
+
"@aws-sdk/client-cloudwatch": "^3.996.0",
|
|
185
188
|
"@aws-sdk/client-route-53": "^3.893.0",
|
|
186
189
|
"googleapis": "^171.4.0",
|
|
187
190
|
"md5": "^2.3.0",
|