@marvalt/shcoder 0.1.5 → 0.1.7
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/MemberCardsGrid.d.ts +7 -1
- package/dist/components/MemberCardsGrid.d.ts.map +1 -1
- package/dist/hooks/useMembers.d.ts.map +1 -1
- package/dist/index.cjs +28 -18
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.esm.js +28 -18
- package/dist/index.esm.js.map +1 -1
- package/dist/types/member.d.ts +4 -0
- package/dist/types/member.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -93,11 +93,11 @@ function useMembers(attrs) {
|
|
|
93
93
|
orderby: attrs.orderby || 'date',
|
|
94
94
|
order: attrs.order || 'desc',
|
|
95
95
|
});
|
|
96
|
-
// Process members
|
|
96
|
+
// Process members: preserve all keys (including ACF in member_meta); only normalize featured_image_urls
|
|
97
97
|
const processedMembers = filtered.map((member) => {
|
|
98
98
|
const processed = {
|
|
99
99
|
...member,
|
|
100
|
-
member_meta: member.member_meta
|
|
100
|
+
member_meta: member.member_meta ?? {},
|
|
101
101
|
featured_image_urls: extractFeaturedImage(member),
|
|
102
102
|
};
|
|
103
103
|
return processed;
|
|
@@ -139,11 +139,11 @@ function useMembers(attrs) {
|
|
|
139
139
|
throw new Error(`Failed to fetch members: ${response.statusText}`);
|
|
140
140
|
}
|
|
141
141
|
const data = await response.json();
|
|
142
|
-
// Process members
|
|
142
|
+
// Process members: preserve all keys (including ACF in member_meta); only normalize featured_image_urls
|
|
143
143
|
const processedMembers = data.map((member) => {
|
|
144
144
|
const processed = {
|
|
145
145
|
...member,
|
|
146
|
-
member_meta: member.member_meta
|
|
146
|
+
member_meta: member.member_meta ?? {},
|
|
147
147
|
featured_image_urls: extractFeaturedImage(member),
|
|
148
148
|
};
|
|
149
149
|
return processed;
|
|
@@ -183,10 +183,10 @@ function useMember(id) {
|
|
|
183
183
|
const provider = staticDataProvider();
|
|
184
184
|
const found = provider.getMemberById(id);
|
|
185
185
|
if (found) {
|
|
186
|
-
//
|
|
186
|
+
// Preserve all keys (including ACF in member_meta); only normalize featured_image_urls
|
|
187
187
|
const processed = {
|
|
188
188
|
...found,
|
|
189
|
-
member_meta: found.member_meta
|
|
189
|
+
member_meta: found.member_meta ?? {},
|
|
190
190
|
featured_image_urls: extractFeaturedImage(found),
|
|
191
191
|
};
|
|
192
192
|
setMember(processed);
|
|
@@ -208,10 +208,10 @@ function useMember(id) {
|
|
|
208
208
|
throw new Error(`Failed to fetch member: ${response.statusText}`);
|
|
209
209
|
}
|
|
210
210
|
const data = await response.json();
|
|
211
|
-
//
|
|
211
|
+
// Preserve all keys (including ACF in member_meta); only normalize featured_image_urls
|
|
212
212
|
const processed = {
|
|
213
213
|
...data,
|
|
214
|
-
member_meta: data.member_meta
|
|
214
|
+
member_meta: data.member_meta ?? {},
|
|
215
215
|
featured_image_urls: extractFeaturedImage(data),
|
|
216
216
|
};
|
|
217
217
|
setMember(processed);
|
|
@@ -1767,7 +1767,7 @@ function getCloudflareVariantUrl(url, options) {
|
|
|
1767
1767
|
}
|
|
1768
1768
|
const { width, height } = options;
|
|
1769
1769
|
const base = url.endsWith('/') ? url.slice(0, -1) : url;
|
|
1770
|
-
const variant = `w=${Math.max(1, Math.floor(width))}` + (`,h=${Math.max(1, Math.floor(height))}` );
|
|
1770
|
+
const variant = `w=${Math.max(1, Math.floor(width))}` + (height != null ? `,h=${Math.max(1, Math.floor(height))}` : '');
|
|
1771
1771
|
return `${base}/${variant}`;
|
|
1772
1772
|
}
|
|
1773
1773
|
|
|
@@ -1775,7 +1775,7 @@ function getCloudflareVariantUrl(url, options) {
|
|
|
1775
1775
|
* MemberCardsGrid component - displays multiple members in a grid
|
|
1776
1776
|
* Usage: [member_cards tax="leadership" cols="3" image="true"]
|
|
1777
1777
|
*/
|
|
1778
|
-
const MemberCardsGrid = ({ tax, category, role, cols = '3', image = 'true', limit, orderby, order, className = '', }) => {
|
|
1778
|
+
const MemberCardsGrid = ({ tax, category, role, cols = '3', image = 'true', limit, orderby, order, className = '', getProfileUrl, profileButtonLabel, renderCardAction, }) => {
|
|
1779
1779
|
const { members, loading, error } = useMembers({
|
|
1780
1780
|
tax: tax || category,
|
|
1781
1781
|
role,
|
|
@@ -1803,18 +1803,28 @@ const MemberCardsGrid = ({ tax, category, role, cols = '3', image = 'true', limi
|
|
|
1803
1803
|
}[colsNum] || 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3';
|
|
1804
1804
|
return (jsxRuntimeExports.jsx("div", { className: `member-cards-grid grid ${gridCols} gap-6 ${className}`, children: members.map((member) => {
|
|
1805
1805
|
const meta = member.member_meta || {};
|
|
1806
|
-
|
|
1807
|
-
|
|
1806
|
+
// Prefer Cloudflare URL from static generator enrichment (featured_media_cloudflare_url), then featured_image_urls
|
|
1807
|
+
const cfFromEnrichment = showImage && typeof member.featured_media_cloudflare_url === 'string'
|
|
1808
|
+
? member.featured_media_cloudflare_url
|
|
1808
1809
|
: null;
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
? (isCloudflareImageUrl(rawImageUrl)
|
|
1812
|
-
? getCloudflareVariantUrl(rawImageUrl, { width: 720, height: 1280 })
|
|
1813
|
-
: rawImageUrl)
|
|
1810
|
+
const rawImageUrl = showImage && !cfFromEnrichment
|
|
1811
|
+
? (member.featured_image_urls?.medium?.url || member.featured_image_urls?.full?.url)
|
|
1814
1812
|
: null;
|
|
1813
|
+
const imageUrl = cfFromEnrichment
|
|
1814
|
+
? getCloudflareVariantUrl(cfFromEnrichment, { width: 720, height: 1280 })
|
|
1815
|
+
: rawImageUrl
|
|
1816
|
+
? (isCloudflareImageUrl(rawImageUrl)
|
|
1817
|
+
? getCloudflareVariantUrl(rawImageUrl, { width: 720, height: 1280 })
|
|
1818
|
+
: rawImageUrl)
|
|
1819
|
+
: null;
|
|
1815
1820
|
const fullName = [meta.members_firstname, meta.members_last_name].filter(Boolean).join(' ')
|
|
1816
1821
|
|| member.title.rendered;
|
|
1817
|
-
|
|
1822
|
+
const profileUrl = getProfileUrl?.(member);
|
|
1823
|
+
const hasExplicitAction = !!(profileButtonLabel || renderCardAction);
|
|
1824
|
+
const wrapCardInLink = profileUrl && !hasExplicitAction;
|
|
1825
|
+
const cardContent = (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [imageUrl && (jsxRuntimeExports.jsx("div", { className: "member-card-image aspect-[9/16] w-full overflow-hidden bg-slate-100", children: jsxRuntimeExports.jsx("img", { src: imageUrl, alt: fullName, className: "h-full w-full object-cover" }) })), jsxRuntimeExports.jsxs("div", { className: "member-card-content p-6", children: [jsxRuntimeExports.jsx("h3", { className: "member-card-name text-xl font-bold mb-2", children: fullName }), meta.member_role && (jsxRuntimeExports.jsx("p", { className: "member-card-role text-gray-600 mb-2", children: meta.member_role })), meta.business_name && (jsxRuntimeExports.jsx("p", { className: "member-card-company text-sm text-gray-500 mb-2", children: meta.business_name })), meta.tagline && (jsxRuntimeExports.jsx("p", { className: "member-card-tagline text-sm italic mb-3", children: meta.tagline })), meta.member_pitch && (jsxRuntimeExports.jsx("p", { className: "member-card-pitch text-sm mb-3 line-clamp-3", children: meta.member_pitch })), meta.website && (jsxRuntimeExports.jsx("a", { href: meta.website, target: "_blank", rel: "noopener noreferrer", className: "member-card-website text-blue-600 hover:underline text-sm", children: "Visit Website \u2192" })), hasExplicitAction && (jsxRuntimeExports.jsx("div", { className: "member-card-actions mt-4", children: renderCardAction ? (renderCardAction(member)) : profileUrl && profileButtonLabel ? (jsxRuntimeExports.jsx("a", { href: profileUrl, className: "member-card-profile-button inline-block px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500", children: profileButtonLabel })) : null }))] })] }));
|
|
1826
|
+
const cardInner = wrapCardInLink ? (jsxRuntimeExports.jsx("a", { href: profileUrl, className: "member-card-link block h-full text-inherit no-underline hover:opacity-95 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-blue-500 rounded-lg", children: cardContent })) : (cardContent);
|
|
1827
|
+
return (jsxRuntimeExports.jsx("div", { className: "member-card bg-white rounded-lg shadow-md overflow-hidden", children: cardInner }, member.id));
|
|
1818
1828
|
}) }));
|
|
1819
1829
|
};
|
|
1820
1830
|
|