@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.
Files changed (300) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +59 -0
  3. package/dist/cms-components.css +2 -0
  4. package/dist/components/Accordion.d.ts +43 -0
  5. package/dist/components/Accordion.d.ts.map +1 -0
  6. package/dist/components/Accordion.js +81 -0
  7. package/dist/components/Accordion.js.map +1 -0
  8. package/dist/components/AnnouncementBar.d.ts +43 -0
  9. package/dist/components/AnnouncementBar.d.ts.map +1 -0
  10. package/dist/components/AnnouncementBar.js +27 -0
  11. package/dist/components/AnnouncementBar.js.map +1 -0
  12. package/dist/components/Button.d.ts +43 -0
  13. package/dist/components/Button.d.ts.map +1 -0
  14. package/dist/components/Button.js +122 -0
  15. package/dist/components/Button.js.map +1 -0
  16. package/dist/components/CategoryGrid.d.ts +43 -0
  17. package/dist/components/CategoryGrid.d.ts.map +1 -0
  18. package/dist/components/CategoryGrid.js +117 -0
  19. package/dist/components/CategoryGrid.js.map +1 -0
  20. package/dist/components/CategoryList.d.ts +43 -0
  21. package/dist/components/CategoryList.d.ts.map +1 -0
  22. package/dist/components/CategoryList.js +96 -0
  23. package/dist/components/CategoryList.js.map +1 -0
  24. package/dist/components/CmsPageContainer.d.ts +12 -0
  25. package/dist/components/CmsPageContainer.d.ts.map +1 -0
  26. package/dist/components/CmsPageContainer.js +19 -0
  27. package/dist/components/CmsPageContainer.js.map +1 -0
  28. package/dist/components/CmsProductCard.d.ts +35 -0
  29. package/dist/components/CmsProductCard.d.ts.map +1 -0
  30. package/dist/components/CmsProductCard.js +101 -0
  31. package/dist/components/CmsProductCard.js.map +1 -0
  32. package/dist/components/Column.d.ts +50 -0
  33. package/dist/components/Column.d.ts.map +1 -0
  34. package/dist/components/Column.js +127 -0
  35. package/dist/components/Column.js.map +1 -0
  36. package/dist/components/ContactFormEmbed.d.ts +43 -0
  37. package/dist/components/ContactFormEmbed.d.ts.map +1 -0
  38. package/dist/components/ContactFormEmbed.js +37 -0
  39. package/dist/components/ContactFormEmbed.js.map +1 -0
  40. package/dist/components/ContentSlider.d.ts +43 -0
  41. package/dist/components/ContentSlider.d.ts.map +1 -0
  42. package/dist/components/ContentSlider.js +96 -0
  43. package/dist/components/ContentSlider.js.map +1 -0
  44. package/dist/components/FeatureList.d.ts +43 -0
  45. package/dist/components/FeatureList.d.ts.map +1 -0
  46. package/dist/components/FeatureList.js +89 -0
  47. package/dist/components/FeatureList.js.map +1 -0
  48. package/dist/components/Heading.d.ts +43 -0
  49. package/dist/components/Heading.d.ts.map +1 -0
  50. package/dist/components/Heading.js +116 -0
  51. package/dist/components/Heading.js.map +1 -0
  52. package/dist/components/Hero.d.ts +43 -0
  53. package/dist/components/Hero.d.ts.map +1 -0
  54. package/dist/components/Hero.js +186 -0
  55. package/dist/components/Hero.js.map +1 -0
  56. package/dist/components/IconPickerField.d.ts +3 -0
  57. package/dist/components/IconPickerField.d.ts.map +1 -0
  58. package/dist/components/IconPickerField.js +30 -0
  59. package/dist/components/IconPickerField.js.map +1 -0
  60. package/dist/components/Icons.d.ts +43 -0
  61. package/dist/components/Icons.d.ts.map +1 -0
  62. package/dist/components/Icons.js +62 -0
  63. package/dist/components/Icons.js.map +1 -0
  64. package/dist/components/Image.d.ts +43 -0
  65. package/dist/components/Image.d.ts.map +1 -0
  66. package/dist/components/Image.js +179 -0
  67. package/dist/components/Image.js.map +1 -0
  68. package/dist/components/ImageSlider.d.ts +44 -0
  69. package/dist/components/ImageSlider.d.ts.map +1 -0
  70. package/dist/components/ImageSlider.js +186 -0
  71. package/dist/components/ImageSlider.js.map +1 -0
  72. package/dist/components/InsertBlock.d.ts +4 -0
  73. package/dist/components/InsertBlock.d.ts.map +1 -0
  74. package/dist/components/InsertBlock.js +30 -0
  75. package/dist/components/InsertBlock.js.map +1 -0
  76. package/dist/components/InsertTemplate.d.ts +4 -0
  77. package/dist/components/InsertTemplate.d.ts.map +1 -0
  78. package/dist/components/InsertTemplate.js +30 -0
  79. package/dist/components/InsertTemplate.js.map +1 -0
  80. package/dist/components/LogoStrip.d.ts +43 -0
  81. package/dist/components/LogoStrip.d.ts.map +1 -0
  82. package/dist/components/LogoStrip.js +155 -0
  83. package/dist/components/LogoStrip.js.map +1 -0
  84. package/dist/components/Map.d.ts +43 -0
  85. package/dist/components/Map.d.ts.map +1 -0
  86. package/dist/components/Map.js +165 -0
  87. package/dist/components/Map.js.map +1 -0
  88. package/dist/components/MissingComponentPlaceholder.d.ts +27 -0
  89. package/dist/components/MissingComponentPlaceholder.d.ts.map +1 -0
  90. package/dist/components/MissingComponentPlaceholder.js +24 -0
  91. package/dist/components/MissingComponentPlaceholder.js.map +1 -0
  92. package/dist/components/NewsletterSignup.d.ts +43 -0
  93. package/dist/components/NewsletterSignup.d.ts.map +1 -0
  94. package/dist/components/NewsletterSignup.js +43 -0
  95. package/dist/components/NewsletterSignup.js.map +1 -0
  96. package/dist/components/ProductCard.d.ts +43 -0
  97. package/dist/components/ProductCard.d.ts.map +1 -0
  98. package/dist/components/ProductCard.js +96 -0
  99. package/dist/components/ProductCard.js.map +1 -0
  100. package/dist/components/ProductGrid.d.ts +43 -0
  101. package/dist/components/ProductGrid.d.ts.map +1 -0
  102. package/dist/components/ProductGrid.js +138 -0
  103. package/dist/components/ProductGrid.js.map +1 -0
  104. package/dist/components/ProductSlider.d.ts +43 -0
  105. package/dist/components/ProductSlider.d.ts.map +1 -0
  106. package/dist/components/ProductSlider.js +134 -0
  107. package/dist/components/ProductSlider.js.map +1 -0
  108. package/dist/components/RawHtml.d.ts +43 -0
  109. package/dist/components/RawHtml.d.ts.map +1 -0
  110. package/dist/components/RawHtml.js +38 -0
  111. package/dist/components/RawHtml.js.map +1 -0
  112. package/dist/components/RawJs.d.ts +43 -0
  113. package/dist/components/RawJs.d.ts.map +1 -0
  114. package/dist/components/RawJs.js +53 -0
  115. package/dist/components/RawJs.js.map +1 -0
  116. package/dist/components/RichContent.d.ts +4 -0
  117. package/dist/components/RichContent.d.ts.map +1 -0
  118. package/dist/components/RichContent.js +48 -0
  119. package/dist/components/RichContent.js.map +1 -0
  120. package/dist/components/RichContentEditorField.d.ts +10 -0
  121. package/dist/components/RichContentEditorField.d.ts.map +1 -0
  122. package/dist/components/RichContentEditorField.js +130 -0
  123. package/dist/components/RichContentEditorField.js.map +1 -0
  124. package/dist/components/RichContentPublished.d.ts +5 -0
  125. package/dist/components/RichContentPublished.d.ts.map +1 -0
  126. package/dist/components/RichContentPublished.js +22 -0
  127. package/dist/components/RichContentPublished.js.map +1 -0
  128. package/dist/components/Row.d.ts +43 -0
  129. package/dist/components/Row.d.ts.map +1 -0
  130. package/dist/components/Row.js +305 -0
  131. package/dist/components/Row.js.map +1 -0
  132. package/dist/components/SimpleTable.d.ts +43 -0
  133. package/dist/components/SimpleTable.d.ts.map +1 -0
  134. package/dist/components/SimpleTable.js +155 -0
  135. package/dist/components/SimpleTable.js.map +1 -0
  136. package/dist/components/Slide.d.ts +44 -0
  137. package/dist/components/Slide.d.ts.map +1 -0
  138. package/dist/components/Slide.js +36 -0
  139. package/dist/components/Slide.js.map +1 -0
  140. package/dist/components/Social.d.ts +43 -0
  141. package/dist/components/Social.d.ts.map +1 -0
  142. package/dist/components/Social.js +110 -0
  143. package/dist/components/Social.js.map +1 -0
  144. package/dist/components/Spacer.d.ts +43 -0
  145. package/dist/components/Spacer.d.ts.map +1 -0
  146. package/dist/components/Spacer.js +48 -0
  147. package/dist/components/Spacer.js.map +1 -0
  148. package/dist/components/Stats.d.ts +43 -0
  149. package/dist/components/Stats.d.ts.map +1 -0
  150. package/dist/components/Stats.js +71 -0
  151. package/dist/components/Stats.js.map +1 -0
  152. package/dist/components/Tabs.d.ts +43 -0
  153. package/dist/components/Tabs.d.ts.map +1 -0
  154. package/dist/components/Tabs.js +70 -0
  155. package/dist/components/Tabs.js.map +1 -0
  156. package/dist/components/Testimonial.d.ts +43 -0
  157. package/dist/components/Testimonial.d.ts.map +1 -0
  158. package/dist/components/Testimonial.js +74 -0
  159. package/dist/components/Testimonial.js.map +1 -0
  160. package/dist/components/Text.d.ts +43 -0
  161. package/dist/components/Text.d.ts.map +1 -0
  162. package/dist/components/Text.js +87 -0
  163. package/dist/components/Text.js.map +1 -0
  164. package/dist/components/Video.d.ts +43 -0
  165. package/dist/components/Video.d.ts.map +1 -0
  166. package/dist/components/Video.js +98 -0
  167. package/dist/components/Video.js.map +1 -0
  168. package/dist/components/box-styles.d.ts +19 -0
  169. package/dist/components/box-styles.d.ts.map +1 -0
  170. package/dist/components/box-styles.js +66 -0
  171. package/dist/components/box-styles.js.map +1 -0
  172. package/dist/components/button-link.d.ts +7 -0
  173. package/dist/components/button-link.d.ts.map +1 -0
  174. package/dist/components/button-link.js +15 -0
  175. package/dist/components/button-link.js.map +1 -0
  176. package/dist/components/carousel/CarouselShell.d.ts +27 -0
  177. package/dist/components/carousel/CarouselShell.d.ts.map +1 -0
  178. package/dist/components/carousel/CarouselShell.js +210 -0
  179. package/dist/components/carousel/CarouselShell.js.map +1 -0
  180. package/dist/components/catalog/CatalogSkeletons.d.ts +27 -0
  181. package/dist/components/catalog/CatalogSkeletons.d.ts.map +1 -0
  182. package/dist/components/catalog/CatalogSkeletons.js +38 -0
  183. package/dist/components/catalog/CatalogSkeletons.js.map +1 -0
  184. package/dist/components/catalog-preview-context.d.ts +9 -0
  185. package/dist/components/catalog-preview-context.d.ts.map +1 -0
  186. package/dist/components/catalog-preview-context.js +18 -0
  187. package/dist/components/catalog-preview-context.js.map +1 -0
  188. package/dist/components/icon-catalog.d.ts +139 -0
  189. package/dist/components/icon-catalog.d.ts.map +1 -0
  190. package/dist/components/icon-catalog.js +148 -0
  191. package/dist/components/icon-catalog.js.map +1 -0
  192. package/dist/components/image-fields.d.ts +6 -0
  193. package/dist/components/image-fields.d.ts.map +1 -0
  194. package/dist/components/image-fields.js +11 -0
  195. package/dist/components/image-fields.js.map +1 -0
  196. package/dist/components/image-slider-item.d.ts +7 -0
  197. package/dist/components/image-slider-item.d.ts.map +1 -0
  198. package/dist/components/image-slider-item.js +45 -0
  199. package/dist/components/image-slider-item.js.map +1 -0
  200. package/dist/components/render-context.d.ts +29 -0
  201. package/dist/components/render-context.d.ts.map +1 -0
  202. package/dist/components/render-context.js +21 -0
  203. package/dist/components/render-context.js.map +1 -0
  204. package/dist/components/rich-content-shared.d.ts +11 -0
  205. package/dist/components/rich-content-shared.d.ts.map +1 -0
  206. package/dist/components/rich-content-shared.js +132 -0
  207. package/dist/components/rich-content-shared.js.map +1 -0
  208. package/dist/components/social-networks.d.ts +10 -0
  209. package/dist/components/social-networks.d.ts.map +1 -0
  210. package/dist/components/social-networks.js +43 -0
  211. package/dist/components/social-networks.js.map +1 -0
  212. package/dist/components/styles.d.ts +2 -0
  213. package/dist/components/styles.d.ts.map +1 -0
  214. package/dist/components/styles.js +9 -0
  215. package/dist/components/styles.js.map +1 -0
  216. package/dist/components/text-content.d.ts +13 -0
  217. package/dist/components/text-content.d.ts.map +1 -0
  218. package/dist/components/text-content.js +64 -0
  219. package/dist/components/text-content.js.map +1 -0
  220. package/dist/components/typography.d.ts +26 -0
  221. package/dist/components/typography.d.ts.map +1 -0
  222. package/dist/components/typography.js +52 -0
  223. package/dist/components/typography.js.map +1 -0
  224. package/dist/editor/row-layout-presets.d.ts +34 -0
  225. package/dist/editor/row-layout-presets.d.ts.map +1 -0
  226. package/dist/editor/row-layout-presets.js +175 -0
  227. package/dist/editor/row-layout-presets.js.map +1 -0
  228. package/dist/editor/slot-edit-props.d.ts +16 -0
  229. package/dist/editor/slot-edit-props.d.ts.map +1 -0
  230. package/dist/editor/slot-edit-props.js +25 -0
  231. package/dist/editor/slot-edit-props.js.map +1 -0
  232. package/dist/fields/catalog-data-fields.d.ts +7 -0
  233. package/dist/fields/catalog-data-fields.d.ts.map +1 -0
  234. package/dist/fields/catalog-data-fields.js +4 -0
  235. package/dist/fields/catalog-data-fields.js.map +1 -0
  236. package/dist/fields/catalog-fallback-fields.d.ts +4 -0
  237. package/dist/fields/catalog-fallback-fields.d.ts.map +1 -0
  238. package/dist/fields/catalog-fallback-fields.js +34 -0
  239. package/dist/fields/catalog-fallback-fields.js.map +1 -0
  240. package/dist/fields/catalog-resolve-fields.d.ts +5 -0
  241. package/dist/fields/catalog-resolve-fields.d.ts.map +1 -0
  242. package/dist/fields/catalog-resolve-fields.js +40 -0
  243. package/dist/fields/catalog-resolve-fields.js.map +1 -0
  244. package/dist/fields/shared-fields.d.ts +176 -0
  245. package/dist/fields/shared-fields.d.ts.map +1 -0
  246. package/dist/fields/shared-fields.js +142 -0
  247. package/dist/fields/shared-fields.js.map +1 -0
  248. package/dist/hooks/use-viewport-breakpoint-tier.d.ts +4 -0
  249. package/dist/hooks/use-viewport-breakpoint-tier.d.ts.map +1 -0
  250. package/dist/hooks/use-viewport-breakpoint-tier.js +21 -0
  251. package/dist/hooks/use-viewport-breakpoint-tier.js.map +1 -0
  252. package/dist/index.d.ts +127 -0
  253. package/dist/index.d.ts.map +1 -0
  254. package/dist/index.js +377 -0
  255. package/dist/index.js.map +1 -0
  256. package/dist/schema/catalog-types.d.ts +22 -0
  257. package/dist/schema/catalog-types.d.ts.map +1 -0
  258. package/dist/schema/catalog-types.js +2 -0
  259. package/dist/schema/catalog-types.js.map +1 -0
  260. package/dist/schema/component-types.d.ts +419 -0
  261. package/dist/schema/component-types.d.ts.map +1 -0
  262. package/dist/schema/component-types.js +2 -0
  263. package/dist/schema/component-types.js.map +1 -0
  264. package/dist/schema/envelope.d.ts +21 -0
  265. package/dist/schema/envelope.d.ts.map +1 -0
  266. package/dist/schema/envelope.js +19 -0
  267. package/dist/schema/envelope.js.map +1 -0
  268. package/dist/utils/catalog-fetch.d.ts +29 -0
  269. package/dist/utils/catalog-fetch.d.ts.map +1 -0
  270. package/dist/utils/catalog-fetch.js +88 -0
  271. package/dist/utils/catalog-fetch.js.map +1 -0
  272. package/dist/utils/catalog-load.d.ts +4 -0
  273. package/dist/utils/catalog-load.d.ts.map +1 -0
  274. package/dist/utils/catalog-load.js +11 -0
  275. package/dist/utils/catalog-load.js.map +1 -0
  276. package/dist/utils/catalog-preview-bridge.d.ts +13 -0
  277. package/dist/utils/catalog-preview-bridge.d.ts.map +1 -0
  278. package/dist/utils/catalog-preview-bridge.js +8 -0
  279. package/dist/utils/catalog-preview-bridge.js.map +1 -0
  280. package/dist/utils/catalog-skeleton-estimate.d.ts +7 -0
  281. package/dist/utils/catalog-skeleton-estimate.d.ts.map +1 -0
  282. package/dist/utils/catalog-skeleton-estimate.js +42 -0
  283. package/dist/utils/catalog-skeleton-estimate.js.map +1 -0
  284. package/dist/utils/resolve-image-url.d.ts +20 -0
  285. package/dist/utils/resolve-image-url.d.ts.map +1 -0
  286. package/dist/utils/resolve-image-url.js +24 -0
  287. package/dist/utils/resolve-image-url.js.map +1 -0
  288. package/dist/utils/sanitize-html.d.ts +6 -0
  289. package/dist/utils/sanitize-html.d.ts.map +1 -0
  290. package/dist/utils/sanitize-html.js +81 -0
  291. package/dist/utils/sanitize-html.js.map +1 -0
  292. package/dist/utils/video-embed.d.ts +11 -0
  293. package/dist/utils/video-embed.d.ts.map +1 -0
  294. package/dist/utils/video-embed.js +61 -0
  295. package/dist/utils/video-embed.js.map +1 -0
  296. package/dist/utils/walk-asset-ids.d.ts +3 -0
  297. package/dist/utils/walk-asset-ids.d.ts.map +1 -0
  298. package/dist/utils/walk-asset-ids.js +23 -0
  299. package/dist/utils/walk-asset-ids.js.map +1 -0
  300. package/package.json +117 -0
@@ -0,0 +1,127 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import {} from '@measured/puck';
4
+ import { buildResponsiveSpanVars, hideOnDataAttrs, PB_RESPONSIVE_METADATA, RESPONSIVE_HIDE_ON_CLASS, resolveColumnSpan, } from '@endora-commerce/page-builder-core';
5
+ import { createHideOnField } from '@endora-commerce/page-builder-core/fields/hide-on-field';
6
+ import { getZoneParentComponentType } from '@endora-commerce/page-builder-core/editor/puck-guards';
7
+ import { usePreviewBreakpointTier } from '@endora-commerce/page-builder-core/client';
8
+ import { BoxStyled } from './box-styles.js';
9
+ import { BACKGROUND_FIELD, BOX_BORDER_FIELD, BOX_MARGIN_FIELD, BOX_PADDING_FIELD, COLUMN_SPAN_OPTIONS, CORNER_RADIUS_FIELD, DEFAULT_LAYOUT_BOX_PROPS, SHADOW_FIELD, } from '../fields/shared-fields.js';
10
+ import { COLUMN_SLOT_EDIT_PROPS } from '../editor/slot-edit-props.js';
11
+ const HIDE_ON_FIELD = createHideOnField();
12
+ /**
13
+ * Published: CSS vars + @media (storefront).
14
+ * Editing: inline `grid-column` from the selected Puck viewport tier. Relying on
15
+ * iframe @media alone is brittle — a tablet frame of exactly 768px often fails
16
+ * `min-width: 768px` once a scrollbar eats a few pixels, so columns stay span 12.
17
+ */
18
+ function columnSpanStyle(span, tier, editing) {
19
+ if (editing) {
20
+ return { gridColumn: `span ${resolveColumnSpan(span, tier, 12)}` };
21
+ }
22
+ return buildResponsiveSpanVars(span, 12);
23
+ }
24
+ function ColumnShell({ span, hideOn, editing, tier, dragRef, children, }) {
25
+ return (_jsx("div", { ref: dragRef ?? undefined, className: `cmsc-pb-row-col cmsc:min-w-0 cmsc:self-stretch ${RESPONSIVE_HIDE_ON_CLASS}`, style: columnSpanStyle(span, tier, editing), ...hideOnDataAttrs(hideOn), "data-pb-editing": editing ? '1' : '0', children: children }));
26
+ }
27
+ const ColumnEditingRender = (props) => {
28
+ const tier = usePreviewBreakpointTier();
29
+ const { content: Content, span, hideOn, puck, ...box } = props;
30
+ return (_jsx(ColumnShell, { span: span, hideOn: hideOn, editing: true, tier: tier, dragRef: puck?.dragRef, children: _jsx(BoxStyled, { previewTier: tier, className: "cmsc-pb-column-inner cmsc:h-full cmsc:w-full", ...box, children: _jsx(Content, { ...COLUMN_SLOT_EDIT_PROPS }) }) }));
31
+ };
32
+ const ColumnPublishedRender = (props) => {
33
+ const { content: Content, span, hideOn, ...box } = props;
34
+ return (_jsx(ColumnShell, { span: span, hideOn: hideOn, editing: false, tier: "mobile", children: _jsx(BoxStyled, { className: "cmsc:h-full cmsc:w-full", ...box, children: _jsx(Content, {}) }) }));
35
+ };
36
+ const columnConfig = {
37
+ label: 'Column',
38
+ /** Grid cell is .cmsc-pb-row-col — Puck must not wrap it in an extra block. */
39
+ inline: true,
40
+ resolvePermissions: (data, { appState, permissions }) => {
41
+ const itemId = data.props.id;
42
+ if (typeof itemId !== 'string')
43
+ return permissions;
44
+ let parentType = null;
45
+ const zones = appState.data.zones ?? {};
46
+ for (const [zone, items] of Object.entries(zones)) {
47
+ if (!Array.isArray(items))
48
+ continue;
49
+ const containsColumn = items.some((entry) => {
50
+ if (!entry || typeof entry !== 'object')
51
+ return false;
52
+ return entry.props?.id === itemId;
53
+ });
54
+ if (containsColumn) {
55
+ parentType = getZoneParentComponentType(zone, appState.data);
56
+ break;
57
+ }
58
+ }
59
+ if (parentType === null) {
60
+ const visit = (items, parent) => {
61
+ for (const entry of items) {
62
+ if (!entry || typeof entry !== 'object')
63
+ continue;
64
+ const record = entry;
65
+ if (record.props?.id === itemId) {
66
+ parentType = parent;
67
+ return true;
68
+ }
69
+ if (record.props && typeof record.props === 'object') {
70
+ for (const value of Object.values(record.props)) {
71
+ if (Array.isArray(value) && visit(value, record.type ?? null))
72
+ return true;
73
+ }
74
+ }
75
+ }
76
+ return false;
77
+ };
78
+ visit(appState.data.content ?? [], 'root');
79
+ }
80
+ const inRow = parentType === 'cms.Row';
81
+ return {
82
+ ...permissions,
83
+ insert: inRow,
84
+ drag: inRow,
85
+ duplicate: inRow,
86
+ };
87
+ },
88
+ fields: {
89
+ hideOn: HIDE_ON_FIELD,
90
+ span: {
91
+ type: 'select',
92
+ label: 'Width',
93
+ metadata: PB_RESPONSIVE_METADATA,
94
+ options: COLUMN_SPAN_OPTIONS,
95
+ },
96
+ content: {
97
+ type: 'slot',
98
+ disallow: ['cms.Column'],
99
+ },
100
+ margin: BOX_MARGIN_FIELD,
101
+ padding: BOX_PADDING_FIELD,
102
+ border: BOX_BORDER_FIELD,
103
+ background: BACKGROUND_FIELD,
104
+ cornerRadius: CORNER_RADIUS_FIELD,
105
+ shadow: SHADOW_FIELD,
106
+ },
107
+ defaultProps: {
108
+ span: 12,
109
+ content: [],
110
+ ...DEFAULT_LAYOUT_BOX_PROPS,
111
+ },
112
+ render: (props) => props.puck?.isEditing ? _jsx(ColumnEditingRender, { ...props }) : _jsx(ColumnPublishedRender, { ...props }),
113
+ };
114
+ /** Column must not use withHideOn — the outer grid cell is .cmsc-pb-row-col itself. */
115
+ export const Column = columnConfig;
116
+ export function createDefaultColumnItem(id) {
117
+ return {
118
+ type: 'cms.Column',
119
+ props: {
120
+ id,
121
+ span: 12,
122
+ content: [],
123
+ ...DEFAULT_LAYOUT_BOX_PROPS,
124
+ },
125
+ };
126
+ }
127
+ //# sourceMappingURL=Column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Column.js","sourceRoot":"","sources":["../../src/components/Column.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAA4C,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yDAAyD,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,uDAAuD,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAErF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;AAE1C;;;;;GAKG;AACH,SAAS,eAAe,CACtB,IAAyB,EACzB,IAAiD,EACjD,OAAgB;IAEhB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,UAAU,EAAE,QAAQ,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IACrE,CAAC;IACD,OAAO,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,IAAI,EACJ,MAAM,EACN,OAAO,EACP,IAAI,EACJ,OAAO,EACP,QAAQ,GAQT;IACC,OAAO,CACL,cACE,GAAG,EAAE,OAAO,IAAI,SAAS,EACzB,SAAS,EAAE,kDAAkD,wBAAwB,EAAE,EACvF,KAAK,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,KACvC,eAAe,CAAC,MAAM,CAAC,qBACV,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,YAEnC,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,mBAAmB,GAA+B,CAAC,KAAK,EAAE,EAAE;IAChE,MAAM,IAAI,GAAG,wBAAwB,EAAE,CAAC;IACxC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC;IAE/D,OAAO,CACL,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,QAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,YACjF,KAAC,SAAS,IAAC,WAAW,EAAE,IAAI,EAAE,SAAS,EAAC,8CAA8C,KAAK,GAAG,YAC5F,KAAC,OAAO,OAAK,sBAAsB,GAAI,GAC7B,GACA,CACf,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAA+B,CAAC,KAAK,EAAE,EAAE;IAClE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC;IAEzD,OAAO,CACL,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAC,QAAQ,YACpE,KAAC,SAAS,IAAC,SAAS,EAAC,yBAAyB,KAAK,GAAG,YACpD,KAAC,OAAO,KAAG,GACD,GACA,CACf,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,YAAY,GAA4C;IAC5D,KAAK,EAAE,QAAQ;IACf,+EAA+E;IAC/E,MAAM,EAAE,IAAI;IACZ,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,WAAW,CAAC;QAEnD,IAAI,UAAU,GAAkB,IAAI,CAAC;QACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAExC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,SAAS;YACpC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC1C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBACtD,OAAQ,KAAqC,CAAC,KAAK,EAAE,EAAE,KAAK,MAAM,CAAC;YACrE,CAAC,CAAC,CAAC;YACH,IAAI,cAAc,EAAE,CAAC;gBACnB,UAAU,GAAG,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC7D,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,CAAC,KAAgB,EAAE,MAAqB,EAAW,EAAE;gBACjE,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;oBAC1B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;wBAAE,SAAS;oBAClD,MAAM,MAAM,GAAG,KAAmD,CAAC;oBACnE,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;wBAChC,UAAU,GAAG,MAAM,CAAC;wBACpB,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACrD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;4BAChD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;gCAAE,OAAO,IAAI,CAAC;wBAC7E,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;YACF,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,KAAK,SAAS,CAAC;QACvC,OAAO;YACL,GAAG,WAAW;YACd,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;IACD,MAAM,EAAE;QACN,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,sBAAsB;YAChC,OAAO,EAAE,mBAAmB;SAC7B;QACD,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC,YAAY,CAAC;SACzB;QACD,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,gBAAgB;QACxB,UAAU,EAAE,gBAAgB;QAC5B,YAAY,EAAE,mBAAmB;QACjC,MAAM,EAAE,YAAY;KACrB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,EAAE;QACX,GAAG,wBAAwB;KAC5B;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAC,mBAAmB,OAAK,KAAK,GAAI,CAAC,CAAC,CAAC,KAAC,qBAAqB,OAAK,KAAK,GAAI;CACpG,CAAC;AAEF,uFAAuF;AACvF,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;AAEnC,MAAM,UAAU,uBAAuB,CAAC,EAAU;IAChD,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE;YACL,EAAE;YACF,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,EAAE;YACX,GAAG,wBAAwB;SAC5B;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { type PuckComponent } from '@measured/puck';
2
+ import type { ContactFormEmbedProps } from '../schema/component-types.js';
3
+ export declare const ContactFormEmbed: {
4
+ render: PuckComponent<ContactFormEmbedProps>;
5
+ label?: string;
6
+ defaultProps?: ContactFormEmbedProps;
7
+ fields?: import("@measured/puck").Fields<ContactFormEmbedProps, {}>;
8
+ permissions?: Partial<import("@measured/puck").Permissions>;
9
+ inline?: boolean;
10
+ resolveFields?: (data: Omit<import("@measured/puck").ComponentData<ContactFormEmbedProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
11
+ changed: Partial<Record<keyof ContactFormEmbedProps, boolean> & {
12
+ id: string;
13
+ }>;
14
+ fields: import("@measured/puck").Fields<ContactFormEmbedProps, {}>;
15
+ lastFields: import("@measured/puck").Fields<ContactFormEmbedProps, {}>;
16
+ lastData: Omit<import("@measured/puck").ComponentData<ContactFormEmbedProps, 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<ContactFormEmbedProps, {}> | Promise<import("@measured/puck").Fields<ContactFormEmbedProps, {}>>;
20
+ resolveData?: (data: Omit<import("@measured/puck").ComponentData<ContactFormEmbedProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
21
+ changed: Partial<Record<keyof ContactFormEmbedProps, boolean> & {
22
+ id: string;
23
+ }>;
24
+ lastData: Omit<import("@measured/puck").ComponentData<ContactFormEmbedProps, 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<ContactFormEmbedProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, "props"> & {
28
+ props?: Partial<ContactFormEmbedProps>;
29
+ }) | Promise<Omit<Omit<import("@measured/puck").ComponentData<ContactFormEmbedProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, "props"> & {
30
+ props?: Partial<ContactFormEmbedProps>;
31
+ }>;
32
+ resolvePermissions?: (data: Omit<import("@measured/puck").ComponentData<ContactFormEmbedProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
33
+ changed: Partial<Record<keyof ContactFormEmbedProps, 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<ContactFormEmbedProps, 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=ContactFormEmbed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactFormEmbed.d.ts","sourceRoot":"","sources":["../../src/components/ContactFormEmbed.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAoF1E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA4B,CAAC"}
@@ -0,0 +1,37 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import {} from '@measured/puck';
4
+ import { 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, } from '../fields/shared-fields.js';
8
+ function ContactFormBody({ props, editing, tier, }) {
9
+ const { heading = '', description = '', embedUrl = '', mailto = '', heightPx = 480, ...box } = props;
10
+ return (_jsxs(BoxStyled, { ...box, ...(editing && tier ? { previewTier: tier } : {}), className: "cmsc-pb-contact", children: [heading ? _jsx("h3", { className: "cmsc-pb-contact__heading", children: heading }) : null, description ? _jsx("p", { className: "cmsc-pb-contact__desc", children: description }) : null, embedUrl ? (_jsx("iframe", { title: heading || 'Contact form', src: embedUrl, className: "cmsc-pb-contact__iframe", style: { height: `${heightPx}px` }, loading: "lazy" })) : mailto ? (_jsxs("a", { className: "cmsc-pb-contact__mailto", href: `mailto:${mailto}`, children: ["Email ", mailto] })) : editing ? (_jsx("p", { className: "cmsc:text-sm cmsc:text-[#64748b]", children: "Set an embed URL or mailto address for this contact block." })) : null] }));
11
+ }
12
+ const ContactEditingRender = (props) => (_jsx(ContactFormBody, { props: props, editing: true, tier: usePreviewBreakpointTier() }));
13
+ const ContactPublishedRender = (props) => (_jsx(ContactFormBody, { props: props, editing: false, tier: null }));
14
+ const contactConfig = {
15
+ label: 'Contact / form embed',
16
+ fields: {
17
+ heading: { type: 'text', label: 'Heading' },
18
+ description: { type: 'textarea', label: 'Description' },
19
+ embedUrl: { type: 'text', label: 'Form embed URL (iframe)' },
20
+ mailto: { type: 'text', label: 'Mailto fallback' },
21
+ heightPx: { type: 'number', label: 'Embed height (px)', min: 200, max: 1200 },
22
+ margin: BOX_MARGIN_FIELD,
23
+ padding: BOX_PADDING_FIELD,
24
+ border: BOX_BORDER_FIELD,
25
+ },
26
+ defaultProps: {
27
+ heading: 'Contact us',
28
+ description: 'Send a message to our sales team.',
29
+ embedUrl: '',
30
+ mailto: 'sales@example.com',
31
+ heightPx: 480,
32
+ ...DEFAULT_BOX_PROPS,
33
+ },
34
+ render: (props) => props.puck?.isEditing ? _jsx(ContactEditingRender, { ...props }) : _jsx(ContactPublishedRender, { ...props }),
35
+ };
36
+ export const ContactFormEmbed = withHideOn(contactConfig);
37
+ //# sourceMappingURL=ContactFormEmbed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactFormEmbed.js","sourceRoot":"","sources":["../../src/components/ContactFormEmbed.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { type PuckComponent } from '@measured/puck';
2
+ import type { ContentSliderProps } from '../schema/component-types.js';
3
+ export declare const ContentSlider: {
4
+ render: PuckComponent<ContentSliderProps>;
5
+ label?: string;
6
+ defaultProps?: ContentSliderProps;
7
+ fields?: import("@measured/puck").Fields<ContentSliderProps, {}>;
8
+ permissions?: Partial<import("@measured/puck").Permissions>;
9
+ inline?: boolean;
10
+ resolveFields?: (data: Omit<import("@measured/puck").ComponentData<ContentSliderProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
11
+ changed: Partial<Record<keyof ContentSliderProps, boolean> & {
12
+ id: string;
13
+ }>;
14
+ fields: import("@measured/puck").Fields<ContentSliderProps, {}>;
15
+ lastFields: import("@measured/puck").Fields<ContentSliderProps, {}>;
16
+ lastData: Omit<import("@measured/puck").ComponentData<ContentSliderProps, 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<ContentSliderProps, {}> | Promise<import("@measured/puck").Fields<ContentSliderProps, {}>>;
20
+ resolveData?: (data: Omit<import("@measured/puck").ComponentData<ContentSliderProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
21
+ changed: Partial<Record<keyof ContentSliderProps, boolean> & {
22
+ id: string;
23
+ }>;
24
+ lastData: Omit<import("@measured/puck").ComponentData<ContentSliderProps, 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<ContentSliderProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, "props"> & {
28
+ props?: Partial<ContentSliderProps>;
29
+ }) | Promise<Omit<Omit<import("@measured/puck").ComponentData<ContentSliderProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, "props"> & {
30
+ props?: Partial<ContentSliderProps>;
31
+ }>;
32
+ resolvePermissions?: (data: Omit<import("@measured/puck").ComponentData<ContentSliderProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
33
+ changed: Partial<Record<keyof ContentSliderProps, 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<ContentSliderProps, 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=ContentSlider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentSlider.d.ts","sourceRoot":"","sources":["../../src/components/ContentSlider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAU1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAiKvE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAkC,CAAC"}
@@ -0,0 +1,96 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import {} from '@measured/puck';
4
+ import { PB_RESPONSIVE_METADATA, resolveResponsiveNumber, withHideOn, } from '@endora-commerce/page-builder-core';
5
+ import { getSlotZoneItemCount } from '@endora-commerce/page-builder-core/editor/puck-guards';
6
+ import { useEditorCarouselPage } from '@endora-commerce/page-builder-core/editor/carousel-preview';
7
+ import { usePageBuilderPuck } from '@endora-commerce/page-builder-core/editor/use-page-builder-puck';
8
+ import { usePreviewBreakpointTier } from '@endora-commerce/page-builder-core/client';
9
+ import { useViewportBreakpointTier } from '../hooks/use-viewport-breakpoint-tier.js';
10
+ import { BoxStyled } from './box-styles.js';
11
+ import { BOX_BORDER_FIELD, BOX_MARGIN_FIELD, BOX_PADDING_FIELD, DEFAULT_BOX_PROPS, DEFAULT_LAYOUT_PADDING, } from '../fields/shared-fields.js';
12
+ import { CarouselShell } from './carousel/CarouselShell.js';
13
+ import { CONTENT_SLIDER_SLOT_EDIT_PROPS } from '../editor/slot-edit-props.js';
14
+ function slidesPerViewForTier(_tier) {
15
+ return 1;
16
+ }
17
+ const ContentSliderEditingRender = (props) => {
18
+ const tier = usePreviewBreakpointTier();
19
+ const { slides: Slides, slidesPerView = 1, gap = 16, autoplay = false, intervalMs = 5000, showArrows = true, showDots = true, equalHeight = true, ...box } = props;
20
+ const perView = Math.max(1, Math.round(resolveResponsiveNumber(slidesPerView, tier, slidesPerViewForTier(tier))));
21
+ const gapPx = resolveResponsiveNumber(gap, tier, 16);
22
+ const Slot = Slides;
23
+ const sliderId = props.id;
24
+ const previewPage = useEditorCarouselPage(sliderId);
25
+ const editorSlideCount = usePageBuilderPuck((state) => getSlotZoneItemCount(state.appState.data, `${sliderId}:slides`));
26
+ return (_jsx(BoxStyled, { ...box, previewTier: tier, children: _jsx(CarouselShell, { slidesPerView: perView, gap: gapPx, autoplay: autoplay, intervalMs: intervalMs, showArrows: showArrows, showDots: showDots, equalHeight: equalHeight, slotMode: true, editorPreview: true, previewPage: previewPage, editorCarouselId: sliderId, editorSlideCount: editorSlideCount, children: _jsx(Slot, { ...CONTENT_SLIDER_SLOT_EDIT_PROPS }) }) }));
27
+ };
28
+ const ContentSliderPublishedRender = (props) => {
29
+ const tier = useViewportBreakpointTier();
30
+ const { slides: Slides, slidesPerView = 1, gap = 16, autoplay = false, intervalMs = 5000, showArrows = true, showDots = true, equalHeight = true, ...box } = props;
31
+ const perView = Math.max(1, Math.round(resolveResponsiveNumber(slidesPerView, tier, slidesPerViewForTier(tier))));
32
+ const gapPx = resolveResponsiveNumber(gap, tier, 16);
33
+ const Slot = Slides;
34
+ return (_jsx(BoxStyled, { ...box, children: _jsx(CarouselShell, { slidesPerView: perView, gap: gapPx, autoplay: autoplay, intervalMs: intervalMs, showArrows: showArrows, showDots: showDots, equalHeight: equalHeight, slotMode: true, children: _jsx(Slot, { className: "cmsc-pb-content-slider-slot" }) }) }));
35
+ };
36
+ const contentSliderConfig = {
37
+ label: 'Content slider',
38
+ fields: {
39
+ slides: {
40
+ type: 'slot',
41
+ label: 'Slides',
42
+ // Row is accepted then wrapped into a Slide by the page-builder onAction handler.
43
+ allow: ['cms.Slide', 'cms.Row'],
44
+ disallow: ['cms.Column', 'cms.ContentSlider'],
45
+ },
46
+ slidesPerView: {
47
+ type: 'select',
48
+ label: 'Slides per view',
49
+ metadata: PB_RESPONSIVE_METADATA,
50
+ options: [
51
+ { label: '1', value: 1 },
52
+ { label: '2', value: 2 },
53
+ { label: '3', value: 3 },
54
+ { label: '4', value: 4 },
55
+ { label: '5', value: 5 },
56
+ { label: '6', value: 6 },
57
+ { label: '7', value: 7 },
58
+ { label: '8', value: 8 },
59
+ ],
60
+ },
61
+ gap: {
62
+ type: 'number',
63
+ label: 'Gap (px)',
64
+ min: 0,
65
+ max: 48,
66
+ metadata: PB_RESPONSIVE_METADATA,
67
+ },
68
+ autoplay: { type: 'radio', label: 'Autoplay', options: [{ label: 'Yes', value: true }, { label: 'No', value: false }] },
69
+ intervalMs: { type: 'number', label: 'Autoplay interval (ms)', min: 2000, max: 15000 },
70
+ showArrows: { type: 'radio', label: 'Arrows', options: [{ label: 'Show', value: true }, { label: 'Hide', value: false }] },
71
+ showDots: { type: 'radio', label: 'Dots', options: [{ label: 'Show', value: true }, { label: 'Hide', value: false }] },
72
+ equalHeight: {
73
+ type: 'radio',
74
+ label: 'Equal slide height',
75
+ options: [{ label: 'Yes', value: true }, { label: 'No', value: false }],
76
+ },
77
+ margin: BOX_MARGIN_FIELD,
78
+ padding: BOX_PADDING_FIELD,
79
+ border: BOX_BORDER_FIELD,
80
+ },
81
+ defaultProps: {
82
+ slides: [],
83
+ slidesPerView: 1,
84
+ gap: 16,
85
+ autoplay: false,
86
+ intervalMs: 5000,
87
+ showArrows: true,
88
+ showDots: true,
89
+ equalHeight: true,
90
+ ...DEFAULT_BOX_PROPS,
91
+ padding: DEFAULT_LAYOUT_PADDING,
92
+ },
93
+ render: (props) => props.puck?.isEditing ? (_jsx(ContentSliderEditingRender, { ...props })) : (_jsx(ContentSliderPublishedRender, { ...props })),
94
+ };
95
+ export const ContentSlider = withHideOn(contentSliderConfig);
96
+ //# sourceMappingURL=ContentSlider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentSlider.js","sourceRoot":"","sources":["../../src/components/ContentSlider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAA4C,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,UAAU,GACX,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uDAAuD,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,4DAA4D,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AACrG,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAErF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAE9E,SAAS,oBAAoB,CAAC,KAAsC;IAClE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,0BAA0B,GAAsC,CAAC,KAAK,EAAE,EAAE;IAC9E,MAAM,IAAI,GAAG,wBAAwB,EAAE,CAAC;IACxC,MAAM,EACJ,MAAM,EAAE,MAAM,EACd,aAAa,GAAG,CAAC,EACjB,GAAG,GAAG,EAAE,EACR,QAAQ,GAAG,KAAK,EAChB,UAAU,GAAG,IAAI,EACjB,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,IAAI,EACf,WAAW,GAAG,IAAI,EAClB,GAAG,GAAG,EACP,GAAG,KAAK,CAAC;IACV,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,aAAa,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClH,MAAM,KAAK,GAAG,uBAAuB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,MAAoE,CAAC;IAClF,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE,CACpD,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,QAAQ,SAAS,CAAC,CAChE,CAAC;IAEF,OAAO,CACL,KAAC,SAAS,OAAK,GAAG,EAAE,WAAW,EAAE,IAAI,YACnC,KAAC,aAAa,IACZ,aAAa,EAAE,OAAO,EACtB,GAAG,EAAE,KAAK,EACV,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,QAAQ,QACR,aAAa,QACb,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,QAAQ,EAC1B,gBAAgB,EAAE,gBAAgB,YAElC,KAAC,IAAI,OAAK,8BAA8B,GAAI,GAC9B,GACN,CACb,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,4BAA4B,GAAsC,CAAC,KAAK,EAAE,EAAE;IAChF,MAAM,IAAI,GAAG,yBAAyB,EAAE,CAAC;IACzC,MAAM,EACJ,MAAM,EAAE,MAAM,EACd,aAAa,GAAG,CAAC,EACjB,GAAG,GAAG,EAAE,EACR,QAAQ,GAAG,KAAK,EAChB,UAAU,GAAG,IAAI,EACjB,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,IAAI,EACf,WAAW,GAAG,IAAI,EAClB,GAAG,GAAG,EACP,GAAG,KAAK,CAAC;IACV,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,aAAa,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClH,MAAM,KAAK,GAAG,uBAAuB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,MAAqD,CAAC;IAEnE,OAAO,CACL,KAAC,SAAS,OAAK,GAAG,YAChB,KAAC,aAAa,IACZ,aAAa,EAAE,OAAO,EACtB,GAAG,EAAE,KAAK,EACV,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,QAAQ,kBAER,KAAC,IAAI,IAAC,SAAS,EAAC,6BAA6B,GAAG,GAClC,GACN,CACb,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAwC;IAC/D,KAAK,EAAE,gBAAgB;IACvB,MAAM,EAAE;QACN,MAAM,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,QAAQ;YACf,kFAAkF;YAClF,KAAK,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;YAC/B,QAAQ,EAAE,CAAC,YAAY,EAAE,mBAAmB,CAAC;SAC9C;QACD,aAAa,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,iBAAiB;YACxB,QAAQ,EAAE,sBAAsB;YAChC,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;gBACxB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;gBACxB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;gBACxB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;gBACxB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;gBACxB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;gBACxB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;gBACxB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;aACzB;SACF;QACD,GAAG,EAAE;YACH,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,UAAU;YACjB,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,sBAAsB;SACjC;QACD,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;QACvH,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE;QACtF,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;QAC1H,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;QACtH,WAAW,EAAE;YACX,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,oBAAoB;YAC3B,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SACxE;QACD,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,gBAAgB;KACzB;IACD,YAAY,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,CAAC;QAChB,GAAG,EAAE,EAAE;QACP,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,IAAI;QACjB,GAAG,iBAAiB;QACpB,OAAO,EAAE,sBAAsB;KAChC;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CACtB,KAAC,0BAA0B,OAAK,KAAK,GAAI,CAC1C,CAAC,CAAC,CAAC,CACF,KAAC,4BAA4B,OAAK,KAAK,GAAI,CAC5C;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { type PuckComponent } from '@measured/puck';
2
+ import type { FeatureListProps } from '../schema/component-types.js';
3
+ export declare const FeatureList: {
4
+ render: PuckComponent<FeatureListProps>;
5
+ label?: string;
6
+ defaultProps?: FeatureListProps;
7
+ fields?: import("@measured/puck").Fields<FeatureListProps, {}>;
8
+ permissions?: Partial<import("@measured/puck").Permissions>;
9
+ inline?: boolean;
10
+ resolveFields?: (data: Omit<import("@measured/puck").ComponentData<FeatureListProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
11
+ changed: Partial<Record<keyof FeatureListProps, boolean> & {
12
+ id: string;
13
+ }>;
14
+ fields: import("@measured/puck").Fields<FeatureListProps, {}>;
15
+ lastFields: import("@measured/puck").Fields<FeatureListProps, {}>;
16
+ lastData: Omit<import("@measured/puck").ComponentData<FeatureListProps, 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<FeatureListProps, {}> | Promise<import("@measured/puck").Fields<FeatureListProps, {}>>;
20
+ resolveData?: (data: Omit<import("@measured/puck").ComponentData<FeatureListProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
21
+ changed: Partial<Record<keyof FeatureListProps, boolean> & {
22
+ id: string;
23
+ }>;
24
+ lastData: Omit<import("@measured/puck").ComponentData<FeatureListProps, 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<FeatureListProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, "props"> & {
28
+ props?: Partial<FeatureListProps>;
29
+ }) | Promise<Omit<Omit<import("@measured/puck").ComponentData<FeatureListProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, "props"> & {
30
+ props?: Partial<FeatureListProps>;
31
+ }>;
32
+ resolvePermissions?: (data: Omit<import("@measured/puck").ComponentData<FeatureListProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
33
+ changed: Partial<Record<keyof FeatureListProps, 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<FeatureListProps, 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=FeatureList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureList.d.ts","sourceRoot":"","sources":["../../src/components/FeatureList.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAQ1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AA+IrE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgC,CAAC"}
@@ -0,0 +1,89 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import {} from '@measured/puck';
4
+ import { PB_RESPONSIVE_METADATA, createColorField, 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 { createIconPickerField } from './IconPickerField.js';
10
+ import { resolveCmsIcon } from './icon-catalog.js';
11
+ function FeatureListBody({ props, tier, editing, }) {
12
+ const { items = [], columns = 3, gap = 24, iconColor = '#0f766e', iconSize = 28, align = 'left', ...box } = props;
13
+ const cols = Math.max(1, Math.min(4, Math.round(resolveResponsiveNumber(columns, tier, 3))));
14
+ const gapPx = resolveResponsiveNumber(gap, tier, 24);
15
+ return (_jsxs(BoxStyled, { ...box, ...(editing ? { previewTier: tier } : {}), children: [_jsx("ul", { className: "cmsc-pb-feature-list", style: {
16
+ gap: `${gapPx}px`,
17
+ gridTemplateColumns: `repeat(${cols}, minmax(0, 1fr))`,
18
+ textAlign: align,
19
+ }, children: items.map((item, index) => {
20
+ const Icon = resolveCmsIcon(item.icon);
21
+ return (_jsxs("li", { className: "cmsc-pb-feature-list__item", children: [Icon ? (_jsx("span", { className: "cmsc-pb-feature-list__icon", children: _jsx(Icon, { size: iconSize, color: iconColor, "aria-hidden": true }) })) : null, _jsx("h3", { className: "cmsc-pb-feature-list__title", children: item.title }), item.description ? (_jsx("p", { className: "cmsc-pb-feature-list__desc", children: item.description })) : null] }, `${item.title}-${index}`));
22
+ }) }), editing && items.length === 0 ? (_jsx("p", { className: "cmsc:text-sm cmsc:text-[#64748b]", children: "Add features in the Items tab." })) : null] }));
23
+ }
24
+ const FeatureListEditingRender = (props) => (_jsx(FeatureListBody, { props: props, tier: usePreviewBreakpointTier(), editing: true }));
25
+ const FeatureListPublishedRender = (props) => (_jsx(FeatureListBody, { props: props, tier: useViewportBreakpointTier(), editing: false }));
26
+ const featureListConfig = {
27
+ label: 'Feature list',
28
+ fields: {
29
+ items: {
30
+ type: 'array',
31
+ label: 'Features',
32
+ getItemSummary: (item) => item.title || 'Feature',
33
+ arrayFields: {
34
+ icon: createIconPickerField('Icon'),
35
+ title: { type: 'text', label: 'Title' },
36
+ description: { type: 'textarea', label: 'Description' },
37
+ },
38
+ defaultItemProps: {
39
+ icon: 'checkCircle2',
40
+ title: 'Feature',
41
+ description: 'Short supporting copy.',
42
+ },
43
+ },
44
+ columns: {
45
+ type: 'number',
46
+ label: 'Columns',
47
+ min: 1,
48
+ max: 4,
49
+ metadata: PB_RESPONSIVE_METADATA,
50
+ },
51
+ gap: {
52
+ type: 'number',
53
+ label: 'Gap (px)',
54
+ min: 0,
55
+ max: 64,
56
+ metadata: PB_RESPONSIVE_METADATA,
57
+ },
58
+ iconColor: createColorField({ label: 'Icon color' }),
59
+ iconSize: { type: 'number', label: 'Icon size (px)', min: 16, max: 64 },
60
+ align: {
61
+ type: 'select',
62
+ label: 'Align',
63
+ options: [
64
+ { label: 'Left', value: 'left' },
65
+ { label: 'Center', value: 'center' },
66
+ { label: 'Right', value: 'right' },
67
+ ],
68
+ },
69
+ margin: BOX_MARGIN_FIELD,
70
+ padding: BOX_PADDING_FIELD,
71
+ border: BOX_BORDER_FIELD,
72
+ },
73
+ defaultProps: {
74
+ items: [
75
+ { icon: 'truck', title: 'Fast delivery', description: 'Reliable logistics for B2B orders.' },
76
+ { icon: 'shieldCheck', title: 'Secure', description: 'Enterprise-grade account security.' },
77
+ { icon: 'lifeBuoy', title: 'Support', description: 'Dedicated sales and support team.' },
78
+ ],
79
+ columns: 3,
80
+ gap: 24,
81
+ iconColor: '#0f766e',
82
+ iconSize: 28,
83
+ align: 'left',
84
+ ...DEFAULT_BOX_PROPS,
85
+ },
86
+ render: (props) => props.puck?.isEditing ? (_jsx(FeatureListEditingRender, { ...props })) : (_jsx(FeatureListPublishedRender, { ...props })),
87
+ };
88
+ export const FeatureList = withHideOn(featureListConfig);
89
+ //# sourceMappingURL=FeatureList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureList.js","sourceRoot":"","sources":["../../src/components/FeatureList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { type PuckComponent } from '@measured/puck';
2
+ import type { HeadingProps } from '../schema/component-types.js';
3
+ export declare const Heading: {
4
+ render: PuckComponent<HeadingProps>;
5
+ label?: string;
6
+ defaultProps?: HeadingProps;
7
+ fields?: import("@measured/puck").Fields<HeadingProps, {}>;
8
+ permissions?: Partial<import("@measured/puck").Permissions>;
9
+ inline?: boolean;
10
+ resolveFields?: (data: Omit<import("@measured/puck").ComponentData<HeadingProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
11
+ changed: Partial<Record<keyof HeadingProps, boolean> & {
12
+ id: string;
13
+ }>;
14
+ fields: import("@measured/puck").Fields<HeadingProps, {}>;
15
+ lastFields: import("@measured/puck").Fields<HeadingProps, {}>;
16
+ lastData: Omit<import("@measured/puck").ComponentData<HeadingProps, 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<HeadingProps, {}> | Promise<import("@measured/puck").Fields<HeadingProps, {}>>;
20
+ resolveData?: (data: Omit<import("@measured/puck").ComponentData<HeadingProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
21
+ changed: Partial<Record<keyof HeadingProps, boolean> & {
22
+ id: string;
23
+ }>;
24
+ lastData: Omit<import("@measured/puck").ComponentData<HeadingProps, 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<HeadingProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, "props"> & {
28
+ props?: Partial<HeadingProps>;
29
+ }) | Promise<Omit<Omit<import("@measured/puck").ComponentData<HeadingProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, "props"> & {
30
+ props?: Partial<HeadingProps>;
31
+ }>;
32
+ resolvePermissions?: (data: Omit<import("@measured/puck").ComponentData<HeadingProps, string, Record<string, import("@measured/puck").DefaultComponentProps>>, "type">, params: {
33
+ changed: Partial<Record<keyof HeadingProps, 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<HeadingProps, 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=Heading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../src/components/Heading.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAQ1E,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAwJ/E,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA4B,CAAC"}