@endora-commerce/cms-components 0.100.0
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/LICENSE +21 -0
- package/README.md +59 -0
- package/dist/cms-components.css +2 -0
- package/dist/components/Accordion.d.ts +43 -0
- package/dist/components/Accordion.d.ts.map +1 -0
- package/dist/components/Accordion.js +81 -0
- package/dist/components/Accordion.js.map +1 -0
- package/dist/components/AnnouncementBar.d.ts +43 -0
- package/dist/components/AnnouncementBar.d.ts.map +1 -0
- package/dist/components/AnnouncementBar.js +27 -0
- package/dist/components/AnnouncementBar.js.map +1 -0
- package/dist/components/Button.d.ts +43 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.js +122 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/CategoryGrid.d.ts +43 -0
- package/dist/components/CategoryGrid.d.ts.map +1 -0
- package/dist/components/CategoryGrid.js +117 -0
- package/dist/components/CategoryGrid.js.map +1 -0
- package/dist/components/CategoryList.d.ts +43 -0
- package/dist/components/CategoryList.d.ts.map +1 -0
- package/dist/components/CategoryList.js +96 -0
- package/dist/components/CategoryList.js.map +1 -0
- package/dist/components/CmsPageContainer.d.ts +12 -0
- package/dist/components/CmsPageContainer.d.ts.map +1 -0
- package/dist/components/CmsPageContainer.js +19 -0
- package/dist/components/CmsPageContainer.js.map +1 -0
- package/dist/components/CmsProductCard.d.ts +35 -0
- package/dist/components/CmsProductCard.d.ts.map +1 -0
- package/dist/components/CmsProductCard.js +101 -0
- package/dist/components/CmsProductCard.js.map +1 -0
- package/dist/components/Column.d.ts +50 -0
- package/dist/components/Column.d.ts.map +1 -0
- package/dist/components/Column.js +127 -0
- package/dist/components/Column.js.map +1 -0
- package/dist/components/ContactFormEmbed.d.ts +43 -0
- package/dist/components/ContactFormEmbed.d.ts.map +1 -0
- package/dist/components/ContactFormEmbed.js +37 -0
- package/dist/components/ContactFormEmbed.js.map +1 -0
- package/dist/components/ContentSlider.d.ts +43 -0
- package/dist/components/ContentSlider.d.ts.map +1 -0
- package/dist/components/ContentSlider.js +96 -0
- package/dist/components/ContentSlider.js.map +1 -0
- package/dist/components/FeatureList.d.ts +43 -0
- package/dist/components/FeatureList.d.ts.map +1 -0
- package/dist/components/FeatureList.js +89 -0
- package/dist/components/FeatureList.js.map +1 -0
- package/dist/components/Heading.d.ts +43 -0
- package/dist/components/Heading.d.ts.map +1 -0
- package/dist/components/Heading.js +116 -0
- package/dist/components/Heading.js.map +1 -0
- package/dist/components/Hero.d.ts +43 -0
- package/dist/components/Hero.d.ts.map +1 -0
- package/dist/components/Hero.js +186 -0
- package/dist/components/Hero.js.map +1 -0
- package/dist/components/IconPickerField.d.ts +3 -0
- package/dist/components/IconPickerField.d.ts.map +1 -0
- package/dist/components/IconPickerField.js +30 -0
- package/dist/components/IconPickerField.js.map +1 -0
- package/dist/components/Icons.d.ts +43 -0
- package/dist/components/Icons.d.ts.map +1 -0
- package/dist/components/Icons.js +62 -0
- package/dist/components/Icons.js.map +1 -0
- package/dist/components/Image.d.ts +43 -0
- package/dist/components/Image.d.ts.map +1 -0
- package/dist/components/Image.js +179 -0
- package/dist/components/Image.js.map +1 -0
- package/dist/components/ImageSlider.d.ts +44 -0
- package/dist/components/ImageSlider.d.ts.map +1 -0
- package/dist/components/ImageSlider.js +186 -0
- package/dist/components/ImageSlider.js.map +1 -0
- package/dist/components/InsertBlock.d.ts +4 -0
- package/dist/components/InsertBlock.d.ts.map +1 -0
- package/dist/components/InsertBlock.js +30 -0
- package/dist/components/InsertBlock.js.map +1 -0
- package/dist/components/InsertTemplate.d.ts +4 -0
- package/dist/components/InsertTemplate.d.ts.map +1 -0
- package/dist/components/InsertTemplate.js +30 -0
- package/dist/components/InsertTemplate.js.map +1 -0
- package/dist/components/LogoStrip.d.ts +43 -0
- package/dist/components/LogoStrip.d.ts.map +1 -0
- package/dist/components/LogoStrip.js +155 -0
- package/dist/components/LogoStrip.js.map +1 -0
- package/dist/components/Map.d.ts +43 -0
- package/dist/components/Map.d.ts.map +1 -0
- package/dist/components/Map.js +165 -0
- package/dist/components/Map.js.map +1 -0
- package/dist/components/MissingComponentPlaceholder.d.ts +27 -0
- package/dist/components/MissingComponentPlaceholder.d.ts.map +1 -0
- package/dist/components/MissingComponentPlaceholder.js +24 -0
- package/dist/components/MissingComponentPlaceholder.js.map +1 -0
- package/dist/components/NewsletterSignup.d.ts +43 -0
- package/dist/components/NewsletterSignup.d.ts.map +1 -0
- package/dist/components/NewsletterSignup.js +43 -0
- package/dist/components/NewsletterSignup.js.map +1 -0
- package/dist/components/ProductCard.d.ts +43 -0
- package/dist/components/ProductCard.d.ts.map +1 -0
- package/dist/components/ProductCard.js +96 -0
- package/dist/components/ProductCard.js.map +1 -0
- package/dist/components/ProductGrid.d.ts +43 -0
- package/dist/components/ProductGrid.d.ts.map +1 -0
- package/dist/components/ProductGrid.js +138 -0
- package/dist/components/ProductGrid.js.map +1 -0
- package/dist/components/ProductSlider.d.ts +43 -0
- package/dist/components/ProductSlider.d.ts.map +1 -0
- package/dist/components/ProductSlider.js +134 -0
- package/dist/components/ProductSlider.js.map +1 -0
- package/dist/components/RawHtml.d.ts +43 -0
- package/dist/components/RawHtml.d.ts.map +1 -0
- package/dist/components/RawHtml.js +38 -0
- package/dist/components/RawHtml.js.map +1 -0
- package/dist/components/RawJs.d.ts +43 -0
- package/dist/components/RawJs.d.ts.map +1 -0
- package/dist/components/RawJs.js +53 -0
- package/dist/components/RawJs.js.map +1 -0
- package/dist/components/RichContent.d.ts +4 -0
- package/dist/components/RichContent.d.ts.map +1 -0
- package/dist/components/RichContent.js +48 -0
- package/dist/components/RichContent.js.map +1 -0
- package/dist/components/RichContentEditorField.d.ts +10 -0
- package/dist/components/RichContentEditorField.d.ts.map +1 -0
- package/dist/components/RichContentEditorField.js +130 -0
- package/dist/components/RichContentEditorField.js.map +1 -0
- package/dist/components/RichContentPublished.d.ts +5 -0
- package/dist/components/RichContentPublished.d.ts.map +1 -0
- package/dist/components/RichContentPublished.js +22 -0
- package/dist/components/RichContentPublished.js.map +1 -0
- package/dist/components/Row.d.ts +43 -0
- package/dist/components/Row.d.ts.map +1 -0
- package/dist/components/Row.js +305 -0
- package/dist/components/Row.js.map +1 -0
- package/dist/components/SimpleTable.d.ts +43 -0
- package/dist/components/SimpleTable.d.ts.map +1 -0
- package/dist/components/SimpleTable.js +155 -0
- package/dist/components/SimpleTable.js.map +1 -0
- package/dist/components/Slide.d.ts +44 -0
- package/dist/components/Slide.d.ts.map +1 -0
- package/dist/components/Slide.js +36 -0
- package/dist/components/Slide.js.map +1 -0
- package/dist/components/Social.d.ts +43 -0
- package/dist/components/Social.d.ts.map +1 -0
- package/dist/components/Social.js +110 -0
- package/dist/components/Social.js.map +1 -0
- package/dist/components/Spacer.d.ts +43 -0
- package/dist/components/Spacer.d.ts.map +1 -0
- package/dist/components/Spacer.js +48 -0
- package/dist/components/Spacer.js.map +1 -0
- package/dist/components/Stats.d.ts +43 -0
- package/dist/components/Stats.d.ts.map +1 -0
- package/dist/components/Stats.js +71 -0
- package/dist/components/Stats.js.map +1 -0
- package/dist/components/Tabs.d.ts +43 -0
- package/dist/components/Tabs.d.ts.map +1 -0
- package/dist/components/Tabs.js +70 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/Testimonial.d.ts +43 -0
- package/dist/components/Testimonial.d.ts.map +1 -0
- package/dist/components/Testimonial.js +74 -0
- package/dist/components/Testimonial.js.map +1 -0
- package/dist/components/Text.d.ts +43 -0
- package/dist/components/Text.d.ts.map +1 -0
- package/dist/components/Text.js +87 -0
- package/dist/components/Text.js.map +1 -0
- package/dist/components/Video.d.ts +43 -0
- package/dist/components/Video.d.ts.map +1 -0
- package/dist/components/Video.js +98 -0
- package/dist/components/Video.js.map +1 -0
- package/dist/components/box-styles.d.ts +19 -0
- package/dist/components/box-styles.d.ts.map +1 -0
- package/dist/components/box-styles.js +66 -0
- package/dist/components/box-styles.js.map +1 -0
- package/dist/components/button-link.d.ts +7 -0
- package/dist/components/button-link.d.ts.map +1 -0
- package/dist/components/button-link.js +15 -0
- package/dist/components/button-link.js.map +1 -0
- package/dist/components/carousel/CarouselShell.d.ts +27 -0
- package/dist/components/carousel/CarouselShell.d.ts.map +1 -0
- package/dist/components/carousel/CarouselShell.js +210 -0
- package/dist/components/carousel/CarouselShell.js.map +1 -0
- package/dist/components/catalog/CatalogSkeletons.d.ts +27 -0
- package/dist/components/catalog/CatalogSkeletons.d.ts.map +1 -0
- package/dist/components/catalog/CatalogSkeletons.js +38 -0
- package/dist/components/catalog/CatalogSkeletons.js.map +1 -0
- package/dist/components/catalog-preview-context.d.ts +9 -0
- package/dist/components/catalog-preview-context.d.ts.map +1 -0
- package/dist/components/catalog-preview-context.js +18 -0
- package/dist/components/catalog-preview-context.js.map +1 -0
- package/dist/components/icon-catalog.d.ts +139 -0
- package/dist/components/icon-catalog.d.ts.map +1 -0
- package/dist/components/icon-catalog.js +148 -0
- package/dist/components/icon-catalog.js.map +1 -0
- package/dist/components/image-fields.d.ts +6 -0
- package/dist/components/image-fields.d.ts.map +1 -0
- package/dist/components/image-fields.js +11 -0
- package/dist/components/image-fields.js.map +1 -0
- package/dist/components/image-slider-item.d.ts +7 -0
- package/dist/components/image-slider-item.d.ts.map +1 -0
- package/dist/components/image-slider-item.js +45 -0
- package/dist/components/image-slider-item.js.map +1 -0
- package/dist/components/render-context.d.ts +29 -0
- package/dist/components/render-context.d.ts.map +1 -0
- package/dist/components/render-context.js +21 -0
- package/dist/components/render-context.js.map +1 -0
- package/dist/components/rich-content-shared.d.ts +11 -0
- package/dist/components/rich-content-shared.d.ts.map +1 -0
- package/dist/components/rich-content-shared.js +132 -0
- package/dist/components/rich-content-shared.js.map +1 -0
- package/dist/components/social-networks.d.ts +10 -0
- package/dist/components/social-networks.d.ts.map +1 -0
- package/dist/components/social-networks.js +43 -0
- package/dist/components/social-networks.js.map +1 -0
- package/dist/components/styles.d.ts +2 -0
- package/dist/components/styles.d.ts.map +1 -0
- package/dist/components/styles.js +9 -0
- package/dist/components/styles.js.map +1 -0
- package/dist/components/text-content.d.ts +13 -0
- package/dist/components/text-content.d.ts.map +1 -0
- package/dist/components/text-content.js +64 -0
- package/dist/components/text-content.js.map +1 -0
- package/dist/components/typography.d.ts +26 -0
- package/dist/components/typography.d.ts.map +1 -0
- package/dist/components/typography.js +52 -0
- package/dist/components/typography.js.map +1 -0
- package/dist/editor/row-layout-presets.d.ts +34 -0
- package/dist/editor/row-layout-presets.d.ts.map +1 -0
- package/dist/editor/row-layout-presets.js +175 -0
- package/dist/editor/row-layout-presets.js.map +1 -0
- package/dist/editor/slot-edit-props.d.ts +16 -0
- package/dist/editor/slot-edit-props.d.ts.map +1 -0
- package/dist/editor/slot-edit-props.js +25 -0
- package/dist/editor/slot-edit-props.js.map +1 -0
- package/dist/fields/catalog-data-fields.d.ts +7 -0
- package/dist/fields/catalog-data-fields.d.ts.map +1 -0
- package/dist/fields/catalog-data-fields.js +4 -0
- package/dist/fields/catalog-data-fields.js.map +1 -0
- package/dist/fields/catalog-fallback-fields.d.ts +4 -0
- package/dist/fields/catalog-fallback-fields.d.ts.map +1 -0
- package/dist/fields/catalog-fallback-fields.js +34 -0
- package/dist/fields/catalog-fallback-fields.js.map +1 -0
- package/dist/fields/catalog-resolve-fields.d.ts +5 -0
- package/dist/fields/catalog-resolve-fields.d.ts.map +1 -0
- package/dist/fields/catalog-resolve-fields.js +40 -0
- package/dist/fields/catalog-resolve-fields.js.map +1 -0
- package/dist/fields/shared-fields.d.ts +176 -0
- package/dist/fields/shared-fields.d.ts.map +1 -0
- package/dist/fields/shared-fields.js +142 -0
- package/dist/fields/shared-fields.js.map +1 -0
- package/dist/hooks/use-viewport-breakpoint-tier.d.ts +4 -0
- package/dist/hooks/use-viewport-breakpoint-tier.d.ts.map +1 -0
- package/dist/hooks/use-viewport-breakpoint-tier.js +21 -0
- package/dist/hooks/use-viewport-breakpoint-tier.js.map +1 -0
- package/dist/index.d.ts +127 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +377 -0
- package/dist/index.js.map +1 -0
- package/dist/schema/catalog-types.d.ts +22 -0
- package/dist/schema/catalog-types.d.ts.map +1 -0
- package/dist/schema/catalog-types.js +2 -0
- package/dist/schema/catalog-types.js.map +1 -0
- package/dist/schema/component-types.d.ts +419 -0
- package/dist/schema/component-types.d.ts.map +1 -0
- package/dist/schema/component-types.js +2 -0
- package/dist/schema/component-types.js.map +1 -0
- package/dist/schema/envelope.d.ts +21 -0
- package/dist/schema/envelope.d.ts.map +1 -0
- package/dist/schema/envelope.js +19 -0
- package/dist/schema/envelope.js.map +1 -0
- package/dist/utils/catalog-fetch.d.ts +29 -0
- package/dist/utils/catalog-fetch.d.ts.map +1 -0
- package/dist/utils/catalog-fetch.js +88 -0
- package/dist/utils/catalog-fetch.js.map +1 -0
- package/dist/utils/catalog-load.d.ts +4 -0
- package/dist/utils/catalog-load.d.ts.map +1 -0
- package/dist/utils/catalog-load.js +11 -0
- package/dist/utils/catalog-load.js.map +1 -0
- package/dist/utils/catalog-preview-bridge.d.ts +13 -0
- package/dist/utils/catalog-preview-bridge.d.ts.map +1 -0
- package/dist/utils/catalog-preview-bridge.js +8 -0
- package/dist/utils/catalog-preview-bridge.js.map +1 -0
- package/dist/utils/catalog-skeleton-estimate.d.ts +7 -0
- package/dist/utils/catalog-skeleton-estimate.d.ts.map +1 -0
- package/dist/utils/catalog-skeleton-estimate.js +42 -0
- package/dist/utils/catalog-skeleton-estimate.js.map +1 -0
- package/dist/utils/resolve-image-url.d.ts +20 -0
- package/dist/utils/resolve-image-url.d.ts.map +1 -0
- package/dist/utils/resolve-image-url.js +24 -0
- package/dist/utils/resolve-image-url.js.map +1 -0
- package/dist/utils/sanitize-html.d.ts +6 -0
- package/dist/utils/sanitize-html.d.ts.map +1 -0
- package/dist/utils/sanitize-html.js +81 -0
- package/dist/utils/sanitize-html.js.map +1 -0
- package/dist/utils/video-embed.d.ts +11 -0
- package/dist/utils/video-embed.d.ts.map +1 -0
- package/dist/utils/video-embed.js +61 -0
- package/dist/utils/video-embed.js.map +1 -0
- package/dist/utils/walk-asset-ids.d.ts +3 -0
- package/dist/utils/walk-asset-ids.d.ts.map +1 -0
- package/dist/utils/walk-asset-ids.js +23 -0
- package/dist/utils/walk-asset-ids.js.map +1 -0
- package/package.json +117 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import {} from '@measured/puck';
|
|
4
|
+
import { PB_DATA_METADATA, withHideOn } from '@endora-commerce/page-builder-core';
|
|
5
|
+
import { usePreviewBreakpointTier } from '@endora-commerce/page-builder-core/client';
|
|
6
|
+
import { BoxStyled } from './box-styles.js';
|
|
7
|
+
import { BACKGROUND_FIELD, BOX_BORDER_FIELD, BOX_MARGIN_FIELD, BOX_PADDING_FIELD, CORNER_RADIUS_FIELD, DEFAULT_BOX_PROPS, SHADOW_FIELD, } from '../fields/shared-fields.js';
|
|
8
|
+
import { useCmsRenderAssets, useCmsRenderMediaBaseUrl } from './render-context.js';
|
|
9
|
+
import { resolveImageUrl } from '../utils/resolve-image-url.js';
|
|
10
|
+
function TestimonialBody({ props, editing, tier, }) {
|
|
11
|
+
const { quote, author = '', role = '', avatarSource = 'url', avatarUrl = '', avatarAssetId = '', background, cornerRadius, shadow, ...box } = props;
|
|
12
|
+
const assets = useCmsRenderAssets();
|
|
13
|
+
const mediaBaseUrl = useCmsRenderMediaBaseUrl();
|
|
14
|
+
const avatar = resolveImageUrl({
|
|
15
|
+
imageSource: avatarSource,
|
|
16
|
+
...(avatarUrl ? { src: avatarUrl } : {}),
|
|
17
|
+
...(avatarAssetId ? { assetId: avatarAssetId } : {}),
|
|
18
|
+
}, null, assets, mediaBaseUrl);
|
|
19
|
+
return (_jsxs(BoxStyled, { ...box, ...(background !== undefined ? { background } : {}), ...(cornerRadius !== undefined ? { cornerRadius } : {}), ...(shadow !== undefined ? { shadow } : {}), ...(editing && tier ? { previewTier: tier } : {}), className: "cmsc-pb-testimonial", children: [_jsx("blockquote", { className: "cmsc-pb-testimonial__quote", children: quote }), _jsxs("footer", { className: "cmsc-pb-testimonial__footer", children: [avatar ? (_jsx("img", { src: avatar, alt: author ? `${author} avatar` : '', className: "cmsc-pb-testimonial__avatar" })) : null, _jsxs("div", { children: [author ? _jsx("div", { className: "cmsc-pb-testimonial__author", children: author }) : null, role ? _jsx("div", { className: "cmsc-pb-testimonial__role", children: role }) : null] })] })] }));
|
|
20
|
+
}
|
|
21
|
+
const TestimonialEditingRender = (props) => (_jsx(TestimonialBody, { props: props, editing: true, tier: usePreviewBreakpointTier() }));
|
|
22
|
+
const TestimonialPublishedRender = (props) => (_jsx(TestimonialBody, { props: props, editing: false, tier: null }));
|
|
23
|
+
const TESTIMONIAL_FIELDS = {
|
|
24
|
+
quote: { type: 'textarea', label: 'Quote' },
|
|
25
|
+
author: { type: 'text', label: 'Author' },
|
|
26
|
+
role: { type: 'text', label: 'Role / company' },
|
|
27
|
+
avatarSource: {
|
|
28
|
+
type: 'select',
|
|
29
|
+
label: 'Avatar source',
|
|
30
|
+
metadata: PB_DATA_METADATA,
|
|
31
|
+
options: [
|
|
32
|
+
{ label: 'URL', value: 'url' },
|
|
33
|
+
{ label: 'Asset library', value: 'library' },
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
avatarUrl: { type: 'text', label: 'Avatar URL', metadata: PB_DATA_METADATA },
|
|
37
|
+
avatarAssetId: { type: 'text', label: 'Avatar', metadata: PB_DATA_METADATA },
|
|
38
|
+
background: BACKGROUND_FIELD,
|
|
39
|
+
cornerRadius: CORNER_RADIUS_FIELD,
|
|
40
|
+
shadow: SHADOW_FIELD,
|
|
41
|
+
margin: BOX_MARGIN_FIELD,
|
|
42
|
+
padding: BOX_PADDING_FIELD,
|
|
43
|
+
border: BOX_BORDER_FIELD,
|
|
44
|
+
};
|
|
45
|
+
const testimonialConfig = {
|
|
46
|
+
label: 'Testimonial',
|
|
47
|
+
fields: TESTIMONIAL_FIELDS,
|
|
48
|
+
defaultProps: {
|
|
49
|
+
quote: '“This platform made our wholesale ordering dramatically simpler.”',
|
|
50
|
+
author: 'Alex Kowalski',
|
|
51
|
+
role: 'Procurement lead',
|
|
52
|
+
avatarSource: 'url',
|
|
53
|
+
avatarUrl: '',
|
|
54
|
+
avatarAssetId: '',
|
|
55
|
+
...DEFAULT_BOX_PROPS,
|
|
56
|
+
background: { kind: 'solid', color: '#f8fafc' },
|
|
57
|
+
padding: { mode: 'uniform', value: 24 },
|
|
58
|
+
cornerRadius: 'medium',
|
|
59
|
+
},
|
|
60
|
+
resolveFields: (data, { fields }) => {
|
|
61
|
+
const source = data.props.avatarSource ?? 'url';
|
|
62
|
+
const next = { ...fields };
|
|
63
|
+
if (source === 'library') {
|
|
64
|
+
delete next.avatarUrl;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
delete next.avatarAssetId;
|
|
68
|
+
}
|
|
69
|
+
return next;
|
|
70
|
+
},
|
|
71
|
+
render: (props) => props.puck?.isEditing ? (_jsx(TestimonialEditingRender, { ...props })) : (_jsx(TestimonialPublishedRender, { ...props })),
|
|
72
|
+
};
|
|
73
|
+
export const Testimonial = withHideOn(testimonialConfig);
|
|
74
|
+
//# sourceMappingURL=Testimonial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Testimonial.js","sourceRoot":"","sources":["../../src/components/Testimonial.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type PuckComponent } from '@measured/puck';
|
|
2
|
+
import type { TextProps } from '../schema/component-types.js';
|
|
3
|
+
export declare const Text: {
|
|
4
|
+
render: PuckComponent<TextProps>;
|
|
5
|
+
label?: string;
|
|
6
|
+
defaultProps?: TextProps;
|
|
7
|
+
fields?: import("@measured/puck").Fields<TextProps, {}>;
|
|
8
|
+
permissions?: Partial<import("@measured/puck").Permissions>;
|
|
9
|
+
inline?: boolean;
|
|
10
|
+
resolveFields?: (data: Omit<import("@measured/puck").ComponentData<TextProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
|
|
11
|
+
changed: Partial<Record<keyof TextProps, boolean> & {
|
|
12
|
+
id: string;
|
|
13
|
+
}>;
|
|
14
|
+
fields: import("@measured/puck").Fields<TextProps, {}>;
|
|
15
|
+
lastFields: import("@measured/puck").Fields<TextProps, {}>;
|
|
16
|
+
lastData: Omit<import("@measured/puck").ComponentData<TextProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type"> | null;
|
|
17
|
+
appState: import("@measured/puck").AppState;
|
|
18
|
+
parent: import("@measured/puck").ComponentData | null;
|
|
19
|
+
}) => import("@measured/puck").Fields<TextProps, {}> | Promise<import("@measured/puck").Fields<TextProps, {}>>;
|
|
20
|
+
resolveData?: (data: Omit<import("@measured/puck").ComponentData<TextProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
|
|
21
|
+
changed: Partial<Record<keyof TextProps, boolean> & {
|
|
22
|
+
id: string;
|
|
23
|
+
}>;
|
|
24
|
+
lastData: Omit<import("@measured/puck").ComponentData<TextProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type"> | null;
|
|
25
|
+
metadata: import("@measured/puck").Metadata;
|
|
26
|
+
trigger: import("@measured/puck").ResolveDataTrigger;
|
|
27
|
+
}) => (Omit<Omit<import("@measured/puck").ComponentData<TextProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, "props"> & {
|
|
28
|
+
props?: Partial<TextProps>;
|
|
29
|
+
}) | Promise<Omit<Omit<import("@measured/puck").ComponentData<TextProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, "props"> & {
|
|
30
|
+
props?: Partial<TextProps>;
|
|
31
|
+
}>;
|
|
32
|
+
resolvePermissions?: (data: Omit<import("@measured/puck").ComponentData<TextProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
|
|
33
|
+
changed: Partial<Record<keyof TextProps, boolean> & {
|
|
34
|
+
id: string;
|
|
35
|
+
}>;
|
|
36
|
+
lastPermissions: Partial<import("@measured/puck").Permissions>;
|
|
37
|
+
permissions: Partial<import("@measured/puck").Permissions>;
|
|
38
|
+
appState: import("@measured/puck").AppState;
|
|
39
|
+
lastData: Omit<import("@measured/puck").ComponentData<TextProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type"> | null;
|
|
40
|
+
}) => Promise<Partial<import("@measured/puck").Permissions>> | Partial<import("@measured/puck").Permissions>;
|
|
41
|
+
metadata?: import("@measured/puck").Metadata;
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=Text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../src/components/Text.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAQ1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAoH9D,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAyB,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import {} from '@measured/puck';
|
|
4
|
+
import { resolveTextAlignForTier, responsiveTextAlignClass, textAlignDataAttrs, withHideOn, } from '@endora-commerce/page-builder-core';
|
|
5
|
+
import { usePreviewBreakpointTier } from '@endora-commerce/page-builder-core/client';
|
|
6
|
+
import { BoxStyled } from './box-styles.js';
|
|
7
|
+
import { BOX_BORDER_FIELD, BOX_MARGIN_FIELD, BOX_PADDING_FIELD, DEFAULT_BOX_PROPS, TEXT_TYPOGRAPHY_FIELDS, } from '../fields/shared-fields.js';
|
|
8
|
+
import { resolveTextContent } from './text-content.js';
|
|
9
|
+
import { editingTypographyStyle, responsiveTypographyVars, typographyStyle } from './typography.js';
|
|
10
|
+
const TEXT_DEFAULTS = { fontSize: 16, fontWeight: 400, lineHeight: 1.65 };
|
|
11
|
+
/**
|
|
12
|
+
* In the editor, Puck's contentEditable transform replaces string `text` with an
|
|
13
|
+
* InlineTextField React node. That must be rendered as-is — resolveTextContent()
|
|
14
|
+
* would coerce it to '' and leave the canvas stuck on legacy/html fallback.
|
|
15
|
+
*/
|
|
16
|
+
function resolveEditingTextContent(props) {
|
|
17
|
+
const { text, html, tiptapContent } = props;
|
|
18
|
+
if (typeof text !== 'string' && text != null) {
|
|
19
|
+
return text;
|
|
20
|
+
}
|
|
21
|
+
return resolveTextContent({ text, html, tiptapContent }) || 'Body copy';
|
|
22
|
+
}
|
|
23
|
+
const TextEditingRender = (props) => {
|
|
24
|
+
const tier = usePreviewBreakpointTier();
|
|
25
|
+
const { text, html, tiptapContent, textAlign, ...box } = props;
|
|
26
|
+
const resolvedText = resolveEditingTextContent({ text, html, tiptapContent });
|
|
27
|
+
const alignAttrs = textAlignDataAttrs(textAlign, 'left');
|
|
28
|
+
return (_jsx(BoxStyled, { previewTier: tier, ...box, children: _jsx("p", { className: "cmsc:m-0 cmsc:whitespace-pre-wrap cmsc-pb-text-align", style: {
|
|
29
|
+
...editingTypographyStyle(props, tier, TEXT_DEFAULTS),
|
|
30
|
+
...typographyStyle({
|
|
31
|
+
...(props.fontFamily !== undefined ? { fontFamily: props.fontFamily } : {}),
|
|
32
|
+
...(props.fontStyle !== undefined ? { fontStyle: props.fontStyle } : {}),
|
|
33
|
+
color: props.color,
|
|
34
|
+
}),
|
|
35
|
+
textAlign: resolveTextAlignForTier(textAlign, tier, 'left'),
|
|
36
|
+
}, ...alignAttrs, children: resolvedText }) }));
|
|
37
|
+
};
|
|
38
|
+
const TextPublishedRender = (props) => {
|
|
39
|
+
const { text, html, tiptapContent, textAlign, ...box } = props;
|
|
40
|
+
const resolvedText = resolveTextContent({ text, html, tiptapContent });
|
|
41
|
+
const alignAttrs = textAlignDataAttrs(textAlign, 'left');
|
|
42
|
+
return (_jsx(BoxStyled, { ...box, children: _jsx("p", { className: `cmsc:m-0 cmsc:whitespace-pre-wrap cmsc-pb-text-size cmsc-pb-text-weight cmsc-pb-text-leading ${responsiveTextAlignClass(textAlign, 'left')}`, style: {
|
|
43
|
+
...responsiveTypographyVars(props, TEXT_DEFAULTS),
|
|
44
|
+
...typographyStyle({
|
|
45
|
+
...(props.fontFamily !== undefined ? { fontFamily: props.fontFamily } : {}),
|
|
46
|
+
...(props.fontStyle !== undefined ? { fontStyle: props.fontStyle } : {}),
|
|
47
|
+
color: props.color,
|
|
48
|
+
}),
|
|
49
|
+
}, ...alignAttrs, children: resolvedText }) }));
|
|
50
|
+
};
|
|
51
|
+
const textConfig = {
|
|
52
|
+
label: 'Simple Text',
|
|
53
|
+
fields: {
|
|
54
|
+
text: { type: 'textarea', label: 'Text', contentEditable: true },
|
|
55
|
+
...TEXT_TYPOGRAPHY_FIELDS,
|
|
56
|
+
margin: BOX_MARGIN_FIELD,
|
|
57
|
+
padding: BOX_PADDING_FIELD,
|
|
58
|
+
border: BOX_BORDER_FIELD,
|
|
59
|
+
},
|
|
60
|
+
defaultProps: {
|
|
61
|
+
text: 'Body copy',
|
|
62
|
+
fontFamily: 'sans',
|
|
63
|
+
fontStyle: 'normal',
|
|
64
|
+
color: '#243447',
|
|
65
|
+
fontSize: 16,
|
|
66
|
+
fontWeight: 400,
|
|
67
|
+
textAlign: 'left',
|
|
68
|
+
lineHeight: 1.65,
|
|
69
|
+
...DEFAULT_BOX_PROPS,
|
|
70
|
+
},
|
|
71
|
+
resolveData: async ({ props }) => {
|
|
72
|
+
const resolved = resolveTextContent(props);
|
|
73
|
+
const hasDirectText = typeof props.text === 'string' && props.text.trim().length > 0;
|
|
74
|
+
if (!hasDirectText && resolved && (props.tiptapContent || props.html)) {
|
|
75
|
+
return {
|
|
76
|
+
props: {
|
|
77
|
+
...props,
|
|
78
|
+
text: resolved,
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return { props };
|
|
83
|
+
},
|
|
84
|
+
render: (props) => props.puck?.isEditing ? _jsx(TextEditingRender, { ...props }) : _jsx(TextPublishedRender, { ...props }),
|
|
85
|
+
};
|
|
86
|
+
export const Text = withHideOn(textConfig);
|
|
87
|
+
//# sourceMappingURL=Text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Text.js","sourceRoot":"","sources":["../../src/components/Text.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type PuckComponent } from '@measured/puck';
|
|
2
|
+
import type { VideoProps } from '../schema/component-types.js';
|
|
3
|
+
export declare const Video: {
|
|
4
|
+
render: PuckComponent<VideoProps>;
|
|
5
|
+
label?: string;
|
|
6
|
+
defaultProps?: VideoProps;
|
|
7
|
+
fields?: import("@measured/puck").Fields<VideoProps, {}>;
|
|
8
|
+
permissions?: Partial<import("@measured/puck").Permissions>;
|
|
9
|
+
inline?: boolean;
|
|
10
|
+
resolveFields?: (data: Omit<import("@measured/puck").ComponentData<VideoProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
|
|
11
|
+
changed: Partial<Record<keyof VideoProps, boolean> & {
|
|
12
|
+
id: string;
|
|
13
|
+
}>;
|
|
14
|
+
fields: import("@measured/puck").Fields<VideoProps, {}>;
|
|
15
|
+
lastFields: import("@measured/puck").Fields<VideoProps, {}>;
|
|
16
|
+
lastData: Omit<import("@measured/puck").ComponentData<VideoProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type"> | null;
|
|
17
|
+
appState: import("@measured/puck").AppState;
|
|
18
|
+
parent: import("@measured/puck").ComponentData | null;
|
|
19
|
+
}) => import("@measured/puck").Fields<VideoProps, {}> | Promise<import("@measured/puck").Fields<VideoProps, {}>>;
|
|
20
|
+
resolveData?: (data: Omit<import("@measured/puck").ComponentData<VideoProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
|
|
21
|
+
changed: Partial<Record<keyof VideoProps, boolean> & {
|
|
22
|
+
id: string;
|
|
23
|
+
}>;
|
|
24
|
+
lastData: Omit<import("@measured/puck").ComponentData<VideoProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type"> | null;
|
|
25
|
+
metadata: import("@measured/puck").Metadata;
|
|
26
|
+
trigger: import("@measured/puck").ResolveDataTrigger;
|
|
27
|
+
}) => (Omit<Omit<import("@measured/puck").ComponentData<VideoProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, "props"> & {
|
|
28
|
+
props?: Partial<VideoProps>;
|
|
29
|
+
}) | Promise<Omit<Omit<import("@measured/puck").ComponentData<VideoProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, "props"> & {
|
|
30
|
+
props?: Partial<VideoProps>;
|
|
31
|
+
}>;
|
|
32
|
+
resolvePermissions?: (data: Omit<import("@measured/puck").ComponentData<VideoProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
|
|
33
|
+
changed: Partial<Record<keyof VideoProps, boolean> & {
|
|
34
|
+
id: string;
|
|
35
|
+
}>;
|
|
36
|
+
lastPermissions: Partial<import("@measured/puck").Permissions>;
|
|
37
|
+
permissions: Partial<import("@measured/puck").Permissions>;
|
|
38
|
+
appState: import("@measured/puck").AppState;
|
|
39
|
+
lastData: Omit<import("@measured/puck").ComponentData<VideoProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type"> | null;
|
|
40
|
+
}) => Promise<Partial<import("@measured/puck").Permissions>> | Partial<import("@measured/puck").Permissions>;
|
|
41
|
+
metadata?: import("@measured/puck").Metadata;
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=Video.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Video.d.ts","sourceRoot":"","sources":["../../src/components/Video.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAS1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAmJ/D,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA0B,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import {} from '@measured/puck';
|
|
4
|
+
import { PB_RESPONSIVE_METADATA, resolveResponsive, resolveResponsiveNumber, withHideOn, } from '@endora-commerce/page-builder-core';
|
|
5
|
+
import { usePreviewBreakpointTier } from '@endora-commerce/page-builder-core/client';
|
|
6
|
+
import { useViewportBreakpointTier } from '../hooks/use-viewport-breakpoint-tier.js';
|
|
7
|
+
import { BoxStyled } from './box-styles.js';
|
|
8
|
+
import { BOX_BORDER_FIELD, BOX_MARGIN_FIELD, BOX_PADDING_FIELD, DEFAULT_BOX_PROPS, } from '../fields/shared-fields.js';
|
|
9
|
+
import { aspectPadding, buildVideoEmbedUrl } from '../utils/video-embed.js';
|
|
10
|
+
function alignClass(align, tier) {
|
|
11
|
+
const value = resolveResponsive(align, tier, 'center');
|
|
12
|
+
if (value === 'left')
|
|
13
|
+
return 'cmsc:mr-auto';
|
|
14
|
+
if (value === 'right')
|
|
15
|
+
return 'cmsc:ml-auto';
|
|
16
|
+
return 'cmsc:mx-auto';
|
|
17
|
+
}
|
|
18
|
+
function VideoBody({ props, tier, editing, }) {
|
|
19
|
+
const { url, provider = 'auto', aspectRatio = '16:9', autoplay = false, muted = false, loop = false, controls = true, title = 'Video', align, maxWidth, puck: _puck, ...box } = props;
|
|
20
|
+
const embedUrl = buildVideoEmbedUrl(url, provider, { autoplay, muted, loop, controls });
|
|
21
|
+
const maxW = resolveResponsiveNumber(maxWidth, tier, 100);
|
|
22
|
+
const padding = aspectPadding(aspectRatio);
|
|
23
|
+
return (_jsx(BoxStyled, { ...box, ...(editing ? { previewTier: tier } : {}), children: _jsx("div", { className: `cmsc-pb-video cmsc:w-full ${alignClass(align, tier)}`, style: { maxWidth: maxW === 100 ? undefined : `${maxW}%` }, children: embedUrl ? (_jsx("div", { className: "cmsc:relative cmsc:w-full cmsc:overflow-hidden cmsc:rounded-lg", style: { paddingTop: padding }, children: _jsx("iframe", { src: embedUrl, title: title, className: "cmsc:absolute cmsc:inset-0 cmsc:h-full cmsc:w-full cmsc:border-0", allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture", allowFullScreen: true }) })) : (_jsx("p", { className: "cmsc:text-sm cmsc:text-[#64748b]", children: editing ? 'Enter a valid YouTube, Vimeo, or HTTPS video URL' : null })) }) }));
|
|
24
|
+
}
|
|
25
|
+
const VideoEditingRender = (props) => {
|
|
26
|
+
const tier = usePreviewBreakpointTier();
|
|
27
|
+
return _jsx(VideoBody, { props: props, tier: tier, editing: true });
|
|
28
|
+
};
|
|
29
|
+
const VideoPublishedRender = (props) => {
|
|
30
|
+
const tier = useViewportBreakpointTier();
|
|
31
|
+
return _jsx(VideoBody, { props: props, tier: tier, editing: false });
|
|
32
|
+
};
|
|
33
|
+
const videoConfig = {
|
|
34
|
+
label: 'Video',
|
|
35
|
+
fields: {
|
|
36
|
+
url: { type: 'text', label: 'Video URL' },
|
|
37
|
+
provider: {
|
|
38
|
+
type: 'select',
|
|
39
|
+
label: 'Provider',
|
|
40
|
+
options: [
|
|
41
|
+
{ label: 'Auto-detect', value: 'auto' },
|
|
42
|
+
{ label: 'YouTube', value: 'youtube' },
|
|
43
|
+
{ label: 'Vimeo', value: 'vimeo' },
|
|
44
|
+
{ label: 'Generic (HTTPS iframe)', value: 'generic' },
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
aspectRatio: {
|
|
48
|
+
type: 'select',
|
|
49
|
+
label: 'Aspect ratio',
|
|
50
|
+
options: [
|
|
51
|
+
{ label: '16:9', value: '16:9' },
|
|
52
|
+
{ label: '4:3', value: '4:3' },
|
|
53
|
+
{ label: '1:1', value: '1:1' },
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
title: { type: 'text', label: 'Title (accessibility)' },
|
|
57
|
+
autoplay: { type: 'radio', label: 'Autoplay', options: [{ label: 'Yes', value: true }, { label: 'No', value: false }] },
|
|
58
|
+
muted: { type: 'radio', label: 'Muted', options: [{ label: 'Yes', value: true }, { label: 'No', value: false }] },
|
|
59
|
+
loop: { type: 'radio', label: 'Loop', options: [{ label: 'Yes', value: true }, { label: 'No', value: false }] },
|
|
60
|
+
controls: { type: 'radio', label: 'Controls', options: [{ label: 'Yes', value: true }, { label: 'No', value: false }] },
|
|
61
|
+
maxWidth: {
|
|
62
|
+
type: 'number',
|
|
63
|
+
label: 'Max width (%)',
|
|
64
|
+
min: 25,
|
|
65
|
+
max: 100,
|
|
66
|
+
metadata: PB_RESPONSIVE_METADATA,
|
|
67
|
+
},
|
|
68
|
+
align: {
|
|
69
|
+
type: 'select',
|
|
70
|
+
label: 'Align',
|
|
71
|
+
metadata: PB_RESPONSIVE_METADATA,
|
|
72
|
+
options: [
|
|
73
|
+
{ label: 'Left', value: 'left' },
|
|
74
|
+
{ label: 'Center', value: 'center' },
|
|
75
|
+
{ label: 'Right', value: 'right' },
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
margin: BOX_MARGIN_FIELD,
|
|
79
|
+
padding: BOX_PADDING_FIELD,
|
|
80
|
+
border: BOX_BORDER_FIELD,
|
|
81
|
+
},
|
|
82
|
+
defaultProps: {
|
|
83
|
+
url: '',
|
|
84
|
+
provider: 'auto',
|
|
85
|
+
aspectRatio: '16:9',
|
|
86
|
+
title: 'Video',
|
|
87
|
+
autoplay: false,
|
|
88
|
+
muted: false,
|
|
89
|
+
loop: false,
|
|
90
|
+
controls: true,
|
|
91
|
+
maxWidth: 100,
|
|
92
|
+
align: 'center',
|
|
93
|
+
...DEFAULT_BOX_PROPS,
|
|
94
|
+
},
|
|
95
|
+
render: (props) => props.puck?.isEditing ? _jsx(VideoEditingRender, { ...props }) : _jsx(VideoPublishedRender, { ...props }),
|
|
96
|
+
};
|
|
97
|
+
export const Video = withHideOn(videoConfig);
|
|
98
|
+
//# sourceMappingURL=Video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Video.js","sourceRoot":"","sources":["../../src/components/Video.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
import { type BackgroundProp, type BorderValue, type BreakpointTier, type CornerRadius, type ResponsiveProp, type Shadow, type SpacingValue } from '@endora-commerce/page-builder-core';
|
|
3
|
+
export interface BoxStyledProps {
|
|
4
|
+
margin?: SpacingValue | ResponsiveProp<SpacingValue>;
|
|
5
|
+
padding?: SpacingValue | ResponsiveProp<SpacingValue>;
|
|
6
|
+
border?: BorderValue | ResponsiveProp<BorderValue>;
|
|
7
|
+
background?: BackgroundProp;
|
|
8
|
+
cornerRadius?: CornerRadius;
|
|
9
|
+
shadow?: Shadow;
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
className?: string;
|
|
12
|
+
style?: CSSProperties;
|
|
13
|
+
previewTier?: BreakpointTier;
|
|
14
|
+
/** Row section layout — used for nested layout CSS (`data-row-section`). */
|
|
15
|
+
rowSection?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function BoxStyled({ children, className, style, previewTier, margin, padding, border, background, cornerRadius, shadow, rowSection, }: BoxStyledProps): React.ReactElement;
|
|
18
|
+
export type { SpacingValue, BorderValue, ResponsiveProp };
|
|
19
|
+
//# sourceMappingURL=box-styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"box-styles.d.ts","sourceRoot":"","sources":["../../src/components/box-styles.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAQL,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,YAAY,EAClB,MAAM,oCAAoC,CAAC;AAI5C,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IACrD,OAAO,CAAC,EAAE,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA2DD,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,MAAM,EACN,UAAU,EACV,YAAY,EACZ,MAAM,EACN,UAAU,GACX,EAAE,cAAc,GAAG,KAAK,CAAC,YAAY,CA6CrC;AAED,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { CORNER_RADIUS_PX, SHADOW_CSS, backgroundToStyle, borderStyleForTier, buildResponsiveBorderVars, buildResponsiveSpacingVars, spacingStyleForTier, } from '@endora-commerce/page-builder-core';
|
|
4
|
+
import { useCmsRenderAssets, useCmsRenderMediaBaseUrl } from './render-context.js';
|
|
5
|
+
import { absolutizeMediaUrl } from '../utils/resolve-image-url.js';
|
|
6
|
+
function appearanceStyle(props, assets, mediaBaseUrl) {
|
|
7
|
+
const { style, videoUrl } = backgroundToStyle(props.background, assets, mediaBaseUrl);
|
|
8
|
+
const next = { ...style };
|
|
9
|
+
if (props.cornerRadius) {
|
|
10
|
+
next.borderRadius = `${CORNER_RADIUS_PX[props.cornerRadius]}px`;
|
|
11
|
+
}
|
|
12
|
+
if (props.shadow) {
|
|
13
|
+
next.boxShadow = SHADOW_CSS[props.shadow];
|
|
14
|
+
}
|
|
15
|
+
return { style: next, ...(videoUrl ? { videoUrl } : {}) };
|
|
16
|
+
}
|
|
17
|
+
function publishedBoxStyle(props, assets, mediaBaseUrl) {
|
|
18
|
+
const { style, videoUrl } = appearanceStyle(props, assets, mediaBaseUrl);
|
|
19
|
+
return {
|
|
20
|
+
style: {
|
|
21
|
+
...style,
|
|
22
|
+
...buildResponsiveSpacingVars('margin', props.margin),
|
|
23
|
+
...buildResponsiveSpacingVars('padding', props.padding),
|
|
24
|
+
...buildResponsiveBorderVars(props.border),
|
|
25
|
+
...props.style,
|
|
26
|
+
},
|
|
27
|
+
...(videoUrl ? { videoUrl } : {}),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function editingBoxStyle(props, tier, assets, mediaBaseUrl) {
|
|
31
|
+
const { style, videoUrl } = appearanceStyle(props, assets, mediaBaseUrl);
|
|
32
|
+
return {
|
|
33
|
+
style: {
|
|
34
|
+
...style,
|
|
35
|
+
...spacingStyleForTier(props.margin, tier, 'margin'),
|
|
36
|
+
...spacingStyleForTier(props.padding, tier, 'padding'),
|
|
37
|
+
...borderStyleForTier(props.border, tier),
|
|
38
|
+
...props.style,
|
|
39
|
+
},
|
|
40
|
+
...(videoUrl ? { videoUrl } : {}),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function BoxStyled({ children, className, style, previewTier, margin, padding, border, background, cornerRadius, shadow, rowSection, }) {
|
|
44
|
+
const assets = useCmsRenderAssets();
|
|
45
|
+
const mediaBaseUrl = useCmsRenderMediaBaseUrl();
|
|
46
|
+
const boxClasses = [
|
|
47
|
+
className,
|
|
48
|
+
previewTier === undefined ? 'cmsc-pb-margin cmsc-pb-padding cmsc-pb-border' : '',
|
|
49
|
+
]
|
|
50
|
+
.filter(Boolean)
|
|
51
|
+
.join(' ');
|
|
52
|
+
const boxProps = {
|
|
53
|
+
...(margin !== undefined ? { margin } : {}),
|
|
54
|
+
...(padding !== undefined ? { padding } : {}),
|
|
55
|
+
...(border !== undefined ? { border } : {}),
|
|
56
|
+
...(background !== undefined ? { background } : {}),
|
|
57
|
+
...(cornerRadius !== undefined ? { cornerRadius } : {}),
|
|
58
|
+
...(shadow !== undefined ? { shadow } : {}),
|
|
59
|
+
...(style !== undefined ? { style } : {}),
|
|
60
|
+
};
|
|
61
|
+
const computed = previewTier !== undefined
|
|
62
|
+
? editingBoxStyle(boxProps, previewTier, assets, mediaBaseUrl)
|
|
63
|
+
: publishedBoxStyle(boxProps, assets, mediaBaseUrl);
|
|
64
|
+
return (_jsxs("div", { className: boxClasses || undefined, style: computed.style, ...(rowSection ? { 'data-row-section': rowSection } : {}), children: [computed.videoUrl ? (_jsx("video", { className: "cmsc-pb-bg-video", src: absolutizeMediaUrl(computed.videoUrl, mediaBaseUrl), autoPlay: true, muted: true, loop: true, playsInline: true, "aria-hidden": true })) : null, _jsx("div", { className: "cmsc-pb-bg-content", children: children })] }));
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=box-styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"box-styles.js","sourceRoot":"","sources":["../../src/components/box-styles.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,GAQpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAiBnE,SAAS,eAAe,CACtB,KAIC,EACD,MAAuC,EACvC,YAAqB;IAErB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACtF,MAAM,IAAI,GAAkB,EAAE,GAAG,KAAK,EAAE,CAAC;IACzC,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;IAClE,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAqE,EACrE,MAAuC,EACvC,YAAqB;IAErB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACzE,OAAO;QACL,KAAK,EAAE;YACL,GAAG,KAAK;YACR,GAAG,0BAA0B,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACrD,GAAG,0BAA0B,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YACvD,GAAG,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1C,GAAG,KAAK,CAAC,KAAK;SACf;QACD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,KAAqE,EACrE,IAAoB,EACpB,MAAuC,EACvC,YAAqB;IAErB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACzE,OAAO;QACL,KAAK,EAAE;YACL,GAAG,KAAK;YACR,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC;YACpD,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC;YACtD,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;YACzC,GAAG,KAAK,CAAC,KAAK;SACf;QACD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EACxB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,MAAM,EACN,UAAU,EACV,YAAY,EACZ,MAAM,EACN,UAAU,GACK;IACf,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,MAAM,YAAY,GAAG,wBAAwB,EAAE,CAAC;IAChD,MAAM,UAAU,GAAG;QACjB,SAAS;QACT,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,EAAE;KACjF;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,MAAM,QAAQ,GAAG;QACf,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC;IAEF,MAAM,QAAQ,GACZ,WAAW,KAAK,SAAS;QACvB,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC;QAC9D,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAExD,OAAO,CACL,eACE,SAAS,EAAE,UAAU,IAAI,SAAS,EAClC,KAAK,EAAE,QAAQ,CAAC,KAAK,KACjB,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAEzD,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CACnB,gBACE,SAAS,EAAC,kBAAkB,EAC5B,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,EACxD,QAAQ,QACR,KAAK,QACL,IAAI,QACJ,WAAW,8BAEX,CACH,CAAC,CAAC,CAAC,IAAI,EACR,cAAK,SAAS,EAAC,oBAAoB,YAAE,QAAQ,GAAO,IAChD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ButtonLinkType } from '../schema/component-types.js';
|
|
2
|
+
export declare function resolveButtonHref(props: {
|
|
3
|
+
linkType?: ButtonLinkType;
|
|
4
|
+
linkSlug?: string | undefined;
|
|
5
|
+
href?: string | undefined;
|
|
6
|
+
}): string;
|
|
7
|
+
//# sourceMappingURL=button-link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-link.d.ts","sourceRoot":"","sources":["../../src/components/button-link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,GAAG,MAAM,CAaT"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function resolveButtonHref(props) {
|
|
2
|
+
const slug = props.linkSlug?.trim() ?? '';
|
|
3
|
+
switch (props.linkType) {
|
|
4
|
+
case 'product':
|
|
5
|
+
return slug ? `/p/${encodeURIComponent(slug)}` : '#';
|
|
6
|
+
case 'category':
|
|
7
|
+
return slug ? `/c/${encodeURIComponent(slug)}` : '#';
|
|
8
|
+
case 'page':
|
|
9
|
+
return slug ? `/${slug.replace(/^\//, '')}` : '#';
|
|
10
|
+
case 'url':
|
|
11
|
+
default:
|
|
12
|
+
return props.href?.trim() || '#';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=button-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-link.js","sourceRoot":"","sources":["../../src/components/button-link.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,KAIjC;IACC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1C,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACvD,KAAK,UAAU;YACb,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACvD,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACpD,KAAK,KAAK,CAAC;QACX;YACE,OAAO,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;IACrC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface CarouselShellProps {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
slidesPerView?: number;
|
|
5
|
+
gap?: number;
|
|
6
|
+
autoplay?: boolean;
|
|
7
|
+
intervalMs?: number;
|
|
8
|
+
showArrows?: boolean;
|
|
9
|
+
showDots?: boolean;
|
|
10
|
+
equalHeight?: boolean;
|
|
11
|
+
className?: string;
|
|
12
|
+
/** When true, children is a Puck slot — slides are dropzone / slot-root direct children. */
|
|
13
|
+
slotMode?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Editor canvas mode — no on-canvas arrows/autoplay so Puck drag/click works.
|
|
16
|
+
* Use `previewPage` + action-bar / dots to change the visible page.
|
|
17
|
+
*/
|
|
18
|
+
editorPreview?: boolean;
|
|
19
|
+
/** Controlled page index when `editorPreview` is true. */
|
|
20
|
+
previewPage?: number;
|
|
21
|
+
/** Carousel id used when dots update the shared editor page store. */
|
|
22
|
+
editorCarouselId?: string;
|
|
23
|
+
/** Authoritative slide count from Puck data while editing slot carousels. */
|
|
24
|
+
editorSlideCount?: number;
|
|
25
|
+
}
|
|
26
|
+
export declare function CarouselShell({ children, slidesPerView, gap, autoplay, intervalMs, showArrows, showDots, equalHeight, className, slotMode, editorPreview, previewPage, editorCarouselId, editorSlideCount, }: CarouselShellProps): React.ReactElement;
|
|
27
|
+
//# sourceMappingURL=CarouselShell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CarouselShell.d.ts","sourceRoot":"","sources":["../../../src/components/carousel/CarouselShell.tsx"],"names":[],"mappings":"AAEA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,aAAiB,EACjB,GAAQ,EACR,QAAgB,EAChB,UAAiB,EACjB,UAAiB,EACjB,QAAe,EACf,WAAmB,EACnB,SAAc,EACd,QAAgB,EAChB,aAAqB,EACrB,WAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,CAoSzC"}
|