@pixelated-tech/components 3.11.8 → 3.12.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/dist/components/admin/site-health/site-health-accessibility.js +6 -0
- package/dist/components/admin/site-health/site-health-axe-core.js +6 -0
- package/dist/components/admin/site-health/site-health-cloudwatch.js +10 -0
- package/dist/components/admin/site-health/site-health-dependency-vulnerabilities.js +6 -0
- package/dist/components/admin/site-health/site-health-github.js +10 -0
- package/dist/components/admin/site-health/site-health-google-analytics.js +10 -0
- package/dist/components/admin/site-health/site-health-google-search-console.js +10 -0
- package/dist/components/admin/site-health/site-health-mock-context.js +8 -0
- package/dist/components/admin/site-health/site-health-on-site-seo.js +6 -0
- package/dist/components/admin/site-health/site-health-overview.js +6 -0
- package/dist/components/admin/site-health/site-health-performance.js +6 -0
- package/dist/components/admin/site-health/site-health-security.js +6 -0
- package/dist/components/admin/site-health/site-health-seo.js +6 -0
- package/dist/components/admin/site-health/site-health-template.js +28 -0
- package/dist/components/admin/site-health/site-health-uptime.js +6 -0
- package/dist/components/config/config.server.js +8 -0
- package/dist/components/general/404.js +6 -0
- package/dist/components/general/accordion.js +11 -0
- package/dist/components/general/buzzwordbingo.js +18 -0
- package/dist/components/general/callout.js +65 -2
- package/dist/components/general/carousel.drag.js +12 -0
- package/dist/components/general/carousel.js +50 -0
- package/dist/components/general/faq-accordion.js +15 -0
- package/dist/components/general/global-error.js +12 -0
- package/dist/components/general/hero.js +13 -0
- package/dist/components/general/loading.js +10 -1
- package/dist/components/general/markdown.js +6 -0
- package/dist/components/general/menu-accordion.js +30 -1
- package/dist/components/general/menu-expando.js +24 -1
- package/dist/components/general/menu-simple.js +21 -0
- package/dist/components/general/metadata.components.js +10 -0
- package/dist/components/general/microinteractions.js +22 -0
- package/dist/components/general/modal.js +12 -0
- package/dist/components/general/nerdjoke.js +11 -1
- package/dist/components/general/proxy-handler.js +7 -7
- package/dist/components/general/recipe.js +46 -1
- package/dist/components/general/resume.js +82 -0
- package/dist/components/general/schema-blogposting.js +6 -0
- package/dist/components/general/schema-localbusiness.js +36 -0
- package/dist/components/general/schema-recipe.js +20 -0
- package/dist/components/general/semantic.js +178 -0
- package/dist/components/general/sidepanel.js +26 -0
- package/dist/components/general/sitemap.js +50 -0
- package/dist/components/general/skeleton-loading.css +5 -5
- package/dist/components/general/skeleton-loading.js +11 -2
- package/dist/components/general/skeleton.js +15 -0
- package/dist/components/general/smartimage.js +48 -2
- package/dist/components/general/splitscroll.js +21 -10
- package/dist/components/general/styleguide.js +6 -0
- package/dist/components/general/tab.js +12 -0
- package/dist/components/general/table.js +12 -0
- package/dist/components/general/tiles.js +32 -1
- package/dist/components/general/timeline.js +22 -0
- package/dist/components/integrations/calendly.js +10 -0
- package/dist/components/integrations/cloudinary.js +16 -0
- package/dist/components/integrations/contentful.delivery.js +84 -0
- package/dist/components/integrations/contentful.items.components.js +46 -0
- package/dist/components/integrations/flickr.js +34 -0
- package/dist/components/integrations/google.reviews.components.js +14 -0
- package/dist/components/integrations/googleanalytics.js +14 -0
- package/dist/components/integrations/googlemap.js +20 -0
- package/dist/components/integrations/googlesearch.js +6 -0
- package/dist/components/integrations/gravatar.components.js +59 -0
- package/dist/components/integrations/hubspot.components.js +30 -0
- package/dist/components/integrations/instagram.components.js +18 -0
- package/dist/components/integrations/lipsum.js +45 -0
- package/dist/components/integrations/loremipsum.js +13 -1
- package/dist/components/integrations/socialcard.js +20 -1
- package/dist/components/integrations/wordpress.components.js +40 -0
- package/dist/components/integrations/wordpress.functions.js +24 -0
- package/dist/components/integrations/yelp.js +8 -0
- package/dist/components/shoppingcart/ebay.components.js +70 -0
- package/dist/components/shoppingcart/ebay.functions.js +52 -0
- package/dist/components/shoppingcart/shoppingcart.components.js +89 -0
- package/dist/components/sitebuilder/config/CompoundFontSelector.js +32 -0
- package/dist/components/sitebuilder/config/ConfigBuilder.js +8 -0
- package/dist/components/sitebuilder/config/FontSelector.js +40 -0
- package/dist/components/sitebuilder/form/formbuilder.js +10 -1
- package/dist/components/sitebuilder/form/formcomponents.js +325 -6
- package/dist/components/sitebuilder/form/formengine.js +35 -1
- package/dist/components/sitebuilder/form/formextractor.js +33 -1
- package/dist/components/sitebuilder/form/formutils.js +0 -4
- package/dist/components/sitebuilder/form/formvalidator.js +6 -0
- package/dist/components/sitebuilder/page/components/ComponentPropertiesForm.js +8 -0
- package/dist/components/sitebuilder/page/components/ComponentSelector.js +10 -0
- package/dist/components/sitebuilder/page/components/ComponentTree.js +20 -0
- package/dist/components/sitebuilder/page/components/PageBuilderUI.js +6 -0
- package/dist/components/sitebuilder/page/components/PageEngine.js +20 -0
- package/dist/components/sitebuilder/page/components/SaveLoadSection.js +10 -0
- package/dist/config/pixelated.config.json.enc +1 -1
- package/dist/index.js +1 -0
- package/dist/index.server.js +1 -0
- package/dist/scripts/pixelated-eslint-plugin.js +56 -0
- package/dist/scripts/release.sh +12 -21
- package/dist/types/components/admin/site-health/site-health-accessibility.d.ts +1 -0
- package/dist/types/components/admin/site-health/site-health-accessibility.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-axe-core.d.ts +1 -0
- package/dist/types/components/admin/site-health/site-health-axe-core.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-cloudwatch.d.ts +3 -0
- package/dist/types/components/admin/site-health/site-health-cloudwatch.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-dependency-vulnerabilities.d.ts +1 -0
- package/dist/types/components/admin/site-health/site-health-dependency-vulnerabilities.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-github.d.ts +3 -0
- package/dist/types/components/admin/site-health/site-health-github.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-google-analytics.d.ts +3 -0
- package/dist/types/components/admin/site-health/site-health-google-analytics.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-google-search-console.d.ts +3 -0
- package/dist/types/components/admin/site-health/site-health-google-search-console.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-mock-context.d.ts +8 -0
- package/dist/types/components/admin/site-health/site-health-mock-context.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-on-site-seo.d.ts +1 -0
- package/dist/types/components/admin/site-health/site-health-on-site-seo.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-overview.d.ts +1 -0
- package/dist/types/components/admin/site-health/site-health-overview.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-performance.d.ts +1 -0
- package/dist/types/components/admin/site-health/site-health-performance.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-security.d.ts +1 -0
- package/dist/types/components/admin/site-health/site-health-security.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-seo.d.ts +1 -0
- package/dist/types/components/admin/site-health/site-health-seo.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-template.d.ts +12 -0
- package/dist/types/components/admin/site-health/site-health-template.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-uptime.d.ts +1 -0
- package/dist/types/components/admin/site-health/site-health-uptime.d.ts.map +1 -1
- package/dist/types/components/config/config.server.d.ts +2 -0
- package/dist/types/components/config/config.server.d.ts.map +1 -1
- package/dist/types/components/general/404.d.ts +1 -0
- package/dist/types/components/general/404.d.ts.map +1 -1
- package/dist/types/components/general/accordion.d.ts +2 -0
- package/dist/types/components/general/accordion.d.ts.map +1 -1
- package/dist/types/components/general/buzzwordbingo.d.ts +3 -0
- package/dist/types/components/general/buzzwordbingo.d.ts.map +1 -1
- package/dist/types/components/general/callout.d.ts +24 -0
- package/dist/types/components/general/callout.d.ts.map +1 -1
- package/dist/types/components/general/carousel.d.ts +13 -0
- package/dist/types/components/general/carousel.d.ts.map +1 -1
- package/dist/types/components/general/carousel.drag.d.ts +4 -0
- package/dist/types/components/general/carousel.drag.d.ts.map +1 -1
- package/dist/types/components/general/faq-accordion.d.ts +5 -0
- package/dist/types/components/general/faq-accordion.d.ts.map +1 -1
- package/dist/types/components/general/global-error.d.ts +4 -0
- package/dist/types/components/general/global-error.d.ts.map +1 -1
- package/dist/types/components/general/hero.d.ts +4 -0
- package/dist/types/components/general/hero.d.ts.map +1 -1
- package/dist/types/components/general/loading.d.ts +1 -0
- package/dist/types/components/general/loading.d.ts.map +1 -1
- package/dist/types/components/general/markdown.d.ts +1 -0
- package/dist/types/components/general/markdown.d.ts.map +1 -1
- package/dist/types/components/general/menu-accordion.d.ts +7 -0
- package/dist/types/components/general/menu-accordion.d.ts.map +1 -1
- package/dist/types/components/general/menu-expando.d.ts +6 -0
- package/dist/types/components/general/menu-expando.d.ts.map +1 -1
- package/dist/types/components/general/menu-simple.d.ts +6 -0
- package/dist/types/components/general/menu-simple.d.ts.map +1 -1
- package/dist/types/components/general/metadata.components.d.ts +3 -0
- package/dist/types/components/general/metadata.components.d.ts.map +1 -1
- package/dist/types/components/general/microinteractions.d.ts +9 -0
- package/dist/types/components/general/microinteractions.d.ts.map +1 -1
- package/dist/types/components/general/modal.d.ts +4 -0
- package/dist/types/components/general/modal.d.ts.map +1 -1
- package/dist/types/components/general/nerdjoke.d.ts +2 -0
- package/dist/types/components/general/nerdjoke.d.ts.map +1 -1
- package/dist/types/components/general/proxy-handler.d.ts +7 -7
- package/dist/types/components/general/proxy-handler.d.ts.map +1 -1
- package/dist/types/components/general/recipe.d.ts +13 -0
- package/dist/types/components/general/recipe.d.ts.map +1 -1
- package/dist/types/components/general/resume.d.ts +21 -0
- package/dist/types/components/general/resume.d.ts.map +1 -1
- package/dist/types/components/general/schema-blogposting.d.ts +1 -0
- package/dist/types/components/general/schema-blogposting.d.ts.map +1 -1
- package/dist/types/components/general/schema-localbusiness.d.ts +16 -0
- package/dist/types/components/general/schema-localbusiness.d.ts.map +1 -1
- package/dist/types/components/general/schema-recipe.d.ts +1 -0
- package/dist/types/components/general/schema-recipe.d.ts.map +1 -1
- package/dist/types/components/general/semantic.d.ts +67 -0
- package/dist/types/components/general/semantic.d.ts.map +1 -1
- package/dist/types/components/general/sidepanel.d.ts +11 -0
- package/dist/types/components/general/sidepanel.d.ts.map +1 -1
- package/dist/types/components/general/sitemap.d.ts +19 -0
- package/dist/types/components/general/sitemap.d.ts.map +1 -1
- package/dist/types/components/general/skeleton-loading.d.ts +3 -6
- package/dist/types/components/general/skeleton-loading.d.ts.map +1 -1
- package/dist/types/components/general/skeleton.d.ts +5 -0
- package/dist/types/components/general/skeleton.d.ts.map +1 -1
- package/dist/types/components/general/smartimage.d.ts +22 -0
- package/dist/types/components/general/smartimage.d.ts.map +1 -1
- package/dist/types/components/general/splitscroll.d.ts +18 -40
- package/dist/types/components/general/splitscroll.d.ts.map +1 -1
- package/dist/types/components/general/styleguide.d.ts +1 -0
- package/dist/types/components/general/styleguide.d.ts.map +1 -1
- package/dist/types/components/general/tab.d.ts +4 -0
- package/dist/types/components/general/tab.d.ts.map +1 -1
- package/dist/types/components/general/table.d.ts +4 -0
- package/dist/types/components/general/table.d.ts.map +1 -1
- package/dist/types/components/general/tiles.d.ts +12 -1
- package/dist/types/components/general/tiles.d.ts.map +1 -1
- package/dist/types/components/general/timeline.d.ts +5 -0
- package/dist/types/components/general/timeline.d.ts.map +1 -1
- package/dist/types/components/integrations/calendly.d.ts +3 -0
- package/dist/types/components/integrations/calendly.d.ts.map +1 -1
- package/dist/types/components/integrations/cloudinary.d.ts +4 -0
- package/dist/types/components/integrations/cloudinary.d.ts.map +1 -1
- package/dist/types/components/integrations/contentful.delivery.d.ts +22 -0
- package/dist/types/components/integrations/contentful.delivery.d.ts.map +1 -1
- package/dist/types/components/integrations/contentful.items.components.d.ts +10 -0
- package/dist/types/components/integrations/contentful.items.components.d.ts.map +1 -1
- package/dist/types/components/integrations/flickr.d.ts +11 -0
- package/dist/types/components/integrations/flickr.d.ts.map +1 -1
- package/dist/types/components/integrations/google.reviews.components.d.ts +5 -0
- package/dist/types/components/integrations/google.reviews.components.d.ts.map +1 -1
- package/dist/types/components/integrations/googleanalytics.d.ts +3 -0
- package/dist/types/components/integrations/googleanalytics.d.ts.map +1 -1
- package/dist/types/components/integrations/googlemap.d.ts +8 -0
- package/dist/types/components/integrations/googlemap.d.ts.map +1 -1
- package/dist/types/components/integrations/googlesearch.d.ts +1 -0
- package/dist/types/components/integrations/googlesearch.d.ts.map +1 -1
- package/dist/types/components/integrations/gravatar.components.d.ts +35 -0
- package/dist/types/components/integrations/gravatar.components.d.ts.map +1 -1
- package/dist/types/components/integrations/hubspot.components.d.ts +9 -0
- package/dist/types/components/integrations/hubspot.components.d.ts.map +1 -1
- package/dist/types/components/integrations/instagram.components.d.ts +7 -0
- package/dist/types/components/integrations/instagram.components.d.ts.map +1 -1
- package/dist/types/components/integrations/lipsum.d.ts +14 -0
- package/dist/types/components/integrations/lipsum.d.ts.map +1 -0
- package/dist/types/components/integrations/loremipsum.d.ts +4 -0
- package/dist/types/components/integrations/loremipsum.d.ts.map +1 -1
- package/dist/types/components/integrations/socialcard.d.ts +4 -0
- package/dist/types/components/integrations/socialcard.d.ts.map +1 -1
- package/dist/types/components/integrations/wordpress.components.d.ts +14 -0
- package/dist/types/components/integrations/wordpress.components.d.ts.map +1 -1
- package/dist/types/components/integrations/wordpress.functions.d.ts +6 -0
- package/dist/types/components/integrations/wordpress.functions.d.ts.map +1 -1
- package/dist/types/components/integrations/yelp.d.ts +2 -0
- package/dist/types/components/integrations/yelp.d.ts.map +1 -1
- package/dist/types/components/shoppingcart/ebay.components.d.ts +15 -0
- package/dist/types/components/shoppingcart/ebay.components.d.ts.map +1 -1
- package/dist/types/components/shoppingcart/ebay.functions.d.ts +12 -0
- package/dist/types/components/shoppingcart/ebay.functions.d.ts.map +1 -1
- package/dist/types/components/shoppingcart/shoppingcart.components.d.ts +30 -0
- package/dist/types/components/shoppingcart/shoppingcart.components.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/config/CompoundFontSelector.d.ts +12 -0
- package/dist/types/components/sitebuilder/config/CompoundFontSelector.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/config/ConfigBuilder.d.ts +2 -0
- package/dist/types/components/sitebuilder/config/ConfigBuilder.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/config/FontSelector.d.ts +16 -0
- package/dist/types/components/sitebuilder/config/FontSelector.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formbuilder.d.ts +5 -1
- package/dist/types/components/sitebuilder/form/formbuilder.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formcomponents.d.ts +129 -0
- package/dist/types/components/sitebuilder/form/formcomponents.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formengine.d.ts +5 -0
- package/dist/types/components/sitebuilder/form/formengine.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formextractor.d.ts +6 -0
- package/dist/types/components/sitebuilder/form/formextractor.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formutils.d.ts +0 -2
- package/dist/types/components/sitebuilder/form/formutils.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formvalidator.d.ts +1 -0
- package/dist/types/components/sitebuilder/form/formvalidator.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/page/components/ComponentPropertiesForm.d.ts +2 -0
- package/dist/types/components/sitebuilder/page/components/ComponentPropertiesForm.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/page/components/ComponentSelector.d.ts +3 -0
- package/dist/types/components/sitebuilder/page/components/ComponentSelector.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/page/components/ComponentTree.d.ts +8 -0
- package/dist/types/components/sitebuilder/page/components/ComponentTree.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/page/components/PageBuilderUI.d.ts +1 -0
- package/dist/types/components/sitebuilder/page/components/PageBuilderUI.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/page/components/PageEngine.d.ts +8 -0
- package/dist/types/components/sitebuilder/page/components/PageEngine.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/page/components/SaveLoadSection.d.ts +3 -0
- package/dist/types/components/sitebuilder/page/components/SaveLoadSection.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.server.d.ts +1 -0
- package/dist/types/scripts/pixelated-eslint-plugin.d.ts +18 -0
- package/dist/types/stories/general/skeleton-loading.stories.d.ts +1 -1
- package/dist/types/stories/general/skeleton-loading.stories.d.ts.map +1 -1
- package/dist/types/stories/integrations/lipsum.stories.d.ts +38 -0
- package/dist/types/stories/integrations/lipsum.stories.d.ts.map +1 -0
- package/dist/types/stories/shoppingcart/shoppingcart.stories.d.ts +3 -1
- package/dist/types/stories/shoppingcart/shoppingcart.stories.d.ts.map +1 -1
- package/dist/types/tests/args.test.d.ts +2 -0
- package/dist/types/tests/args.test.d.ts.map +1 -0
- package/dist/types/tests/lipsum.test.d.ts +2 -0
- package/dist/types/tests/lipsum.test.d.ts.map +1 -0
- package/dist/types/tests/storybook-docgen.test.d.ts +2 -0
- package/dist/types/tests/storybook-docgen.test.d.ts.map +1 -0
- package/package.json +12 -9
|
@@ -20,7 +20,14 @@ const debug = false;
|
|
|
20
20
|
/* ================================================ */
|
|
21
21
|
/* ========== SHOPPING CART UI COMPONENT ========== */
|
|
22
22
|
/* ================================================ */
|
|
23
|
+
/**
|
|
24
|
+
* ShoppingCart — page-level shopping cart UI that handles items, shipping, and checkout flows.
|
|
25
|
+
*
|
|
26
|
+
* Props:
|
|
27
|
+
* @param {string} [props.payPalClientID] - Optional PayPal client ID to enable the PayPal checkout button.
|
|
28
|
+
*/
|
|
23
29
|
ShoppingCart.propTypes = {
|
|
30
|
+
/** Optional PayPal client ID to enable PayPal checkout */
|
|
24
31
|
payPalClientID: PropTypes.string,
|
|
25
32
|
};
|
|
26
33
|
export function ShoppingCart(props) {
|
|
@@ -120,7 +127,13 @@ export function ShoppingCart(props) {
|
|
|
120
127
|
const formObject = Object.fromEntries(formData);
|
|
121
128
|
setShippingInfo(formObject);
|
|
122
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* handleOnApprove — PayPal approval handler invoked after successful payment.
|
|
132
|
+
*
|
|
133
|
+
* @param {object} [props.data] - Payment approval payload returned by PayPal's onApprove.
|
|
134
|
+
*/
|
|
123
135
|
handleOnApprove.propTypes = {
|
|
136
|
+
/** PayPal onApprove payload */
|
|
124
137
|
data: PropTypes.object.isRequired
|
|
125
138
|
};
|
|
126
139
|
function handleOnApprove(props) {
|
|
@@ -160,13 +173,31 @@ export function ShoppingCart(props) {
|
|
|
160
173
|
return (_jsxs("div", { className: "pixCart", children: [_jsx(CalloutHeader, { title: "Shopping Cart : " }), _jsx("br", {}), _jsx("div", { className: "centered", children: "No items in your shopping cart" }), _jsx("div", { id: "paypal-button-container", className: "paypal-button-container" })] }));
|
|
161
174
|
}
|
|
162
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* ShoppingCartItem — Render a single cart line item showing thumbnail, title, quantity and price.
|
|
178
|
+
*
|
|
179
|
+
* @param {shape} [props.item] - Shopping cart line item with id, title, image, quantity and cost.
|
|
180
|
+
* @param {string} [props.itemID] - Unique identifier for the cart item.
|
|
181
|
+
* @param {string} [props.itemURL] - Optional item detail URL to link the title and image.
|
|
182
|
+
* @param {string} [props.itemTitle] - Display title for the item.
|
|
183
|
+
* @param {string} [props.itemImageURL] - Thumbnail image URL for the item.
|
|
184
|
+
* @param {number} [props.itemQuantity] - Quantity of this line item in the cart.
|
|
185
|
+
* @param {number} [props.itemCost] - Per-item cost (numeric) used to compute totals.
|
|
186
|
+
*/
|
|
163
187
|
ShoppingCartItem.propTypes = {
|
|
188
|
+
/** Shopping cart line item object */
|
|
164
189
|
item: PropTypes.shape({
|
|
190
|
+
/** Unique item id */
|
|
165
191
|
itemID: PropTypes.string.isRequired,
|
|
192
|
+
/** Optional URL for the item details */
|
|
166
193
|
itemURL: PropTypes.string,
|
|
194
|
+
/** Item display title */
|
|
167
195
|
itemTitle: PropTypes.string.isRequired,
|
|
196
|
+
/** Thumbnail image URL */
|
|
168
197
|
itemImageURL: PropTypes.string,
|
|
198
|
+
/** Line item quantity */
|
|
169
199
|
itemQuantity: PropTypes.number.isRequired,
|
|
200
|
+
/** Per-item price */
|
|
170
201
|
itemCost: PropTypes.number.isRequired,
|
|
171
202
|
}).isRequired
|
|
172
203
|
};
|
|
@@ -182,15 +213,35 @@ export function ShoppingCartItem(props) {
|
|
|
182
213
|
? _jsx("a", { href: thisItem.itemURL, target: thisItemTarget, rel: "noopener noreferrer", children: _jsx("h2", { className: "", children: thisItem.itemTitle }) })
|
|
183
214
|
: _jsx("h2", { className: "", children: thisItem.itemTitle }) }) }), _jsxs("div", { className: "pixCartItemDetails grid12", children: [_jsx("br", {}), _jsxs("div", { children: [_jsx("b", { children: "Item ID: " }), thisItem.itemID] }), _jsxs("div", { children: [_jsx("b", { children: "Quantity: " }), thisItem.itemQuantity] }), _jsx("br", {}), _jsx("div", { children: _jsx(FormButton, { className: "pixCartButton", type: "button", id: `btn-rm-${thisItem.itemID}`, text: "Remove Item From Cart", onClick: () => removeFromShoppingCart(thisItem) }) })] })] }), _jsx("div", { className: "grid-s11-e13", children: _jsx("div", { className: "pixCartItemPrice", children: formatAsUSD(thisItem.itemCost) }) })] }));
|
|
184
215
|
}
|
|
216
|
+
/**
|
|
217
|
+
* CheckoutItems — Display a checkout summary with itemized lines and shipping information.
|
|
218
|
+
*
|
|
219
|
+
* @param {arrayOf} [props.items] - Cart items included in the checkout summary.
|
|
220
|
+
* @param {shape} [props.shippingTo] - Shipping address object with name, street1, city, state and zip.
|
|
221
|
+
* @param {number} [props.subtotal_discount] - Discount amount applied to subtotal.
|
|
222
|
+
* @param {number} [props.subtotal] - Subtotal amount before shipping and taxes.
|
|
223
|
+
* @param {number} [props.shippingCost] - Shipping cost for the order.
|
|
224
|
+
* @param {number} [props.handlingFee] - Optional handling fees.
|
|
225
|
+
* @param {number} [props.salesTax] - Sales tax amount.
|
|
226
|
+
* @param {number} [props.total] - Final total amount charged.
|
|
227
|
+
*/
|
|
185
228
|
CheckoutItems.propTypes = {
|
|
229
|
+
/** Array of cart items to summarize */
|
|
186
230
|
items: PropTypes.arrayOf(PropTypes.shape({
|
|
231
|
+
/** Item identifier */
|
|
187
232
|
itemID: PropTypes.string.isRequired,
|
|
233
|
+
/** Item detail URL (optional) */
|
|
188
234
|
itemURL: PropTypes.string,
|
|
235
|
+
/** Item title */
|
|
189
236
|
itemTitle: PropTypes.string.isRequired,
|
|
237
|
+
/** Item image URL */
|
|
190
238
|
itemImageURL: PropTypes.string,
|
|
239
|
+
/** Quantity for this item */
|
|
191
240
|
itemQuantity: PropTypes.number.isRequired,
|
|
241
|
+
/** Per-item price */
|
|
192
242
|
itemCost: PropTypes.number.isRequired,
|
|
193
243
|
})).isRequired,
|
|
244
|
+
/** Shipping address object */
|
|
194
245
|
shippingTo: PropTypes.shape({
|
|
195
246
|
name: PropTypes.string.isRequired,
|
|
196
247
|
street1: PropTypes.string.isRequired,
|
|
@@ -198,11 +249,17 @@ CheckoutItems.propTypes = {
|
|
|
198
249
|
state: PropTypes.string.isRequired,
|
|
199
250
|
zip: PropTypes.string.isRequired,
|
|
200
251
|
}).isRequired,
|
|
252
|
+
/** Discount amount applied to subtotal */
|
|
201
253
|
subtotal_discount: PropTypes.number.isRequired,
|
|
254
|
+
/** Subtotal amount before shipping and taxes */
|
|
202
255
|
subtotal: PropTypes.number.isRequired,
|
|
256
|
+
/** Shipping cost for the order */
|
|
203
257
|
shippingCost: PropTypes.number.isRequired,
|
|
258
|
+
/** Handling fee applied to the order */
|
|
204
259
|
handlingFee: PropTypes.number.isRequired,
|
|
260
|
+
/** Sales tax amount */
|
|
205
261
|
salesTax: PropTypes.number.isRequired,
|
|
262
|
+
/** Final total amount */
|
|
206
263
|
total: PropTypes.number.isRequired,
|
|
207
264
|
};
|
|
208
265
|
export function CheckoutItems(props) {
|
|
@@ -250,7 +307,13 @@ export function CheckoutItems(props) {
|
|
|
250
307
|
}
|
|
251
308
|
return (_jsx(Table, { id: "pixCheckout", data: checkoutTableData }));
|
|
252
309
|
}
|
|
310
|
+
/**
|
|
311
|
+
* CartButton — Render a cart button showing the current cart item count and navigates to the cart page when clicked.
|
|
312
|
+
*
|
|
313
|
+
* @param {string} [props.href] - Destination URL for the cart page.
|
|
314
|
+
*/
|
|
253
315
|
CartButton.propTypes = {
|
|
316
|
+
/** Destination URL for viewing the shopping cart */
|
|
254
317
|
href: PropTypes.string.isRequired,
|
|
255
318
|
};
|
|
256
319
|
export function CartButton(props) {
|
|
@@ -277,16 +340,34 @@ export function CartButton(props) {
|
|
|
277
340
|
}, [cartCount]);
|
|
278
341
|
return (_jsx("div", { className: "pixCart", children: _jsxs("button", { className: "pixCartButton", type: "button", id: "pixCartButton", onClick: () => window.location.href = props.href, children: [_jsx(SmartImage, { src: "/images/icons/cart-icon.png", title: "View Shopping Cart", alt: "View Shopping Cart", cloudinaryEnv: config?.cloudinary?.product_env, cloudinaryDomain: config?.cloudinary?.baseUrl, cloudinaryTransforms: config?.cloudinary?.transforms }), _jsxs("span", { children: ["\u00A0", `(${cartCount})`] })] }) }));
|
|
279
342
|
}
|
|
343
|
+
/**
|
|
344
|
+
* ViewItemDetails — Button to navigate to an item detail page for a given item ID.
|
|
345
|
+
*
|
|
346
|
+
* @param {string} [props.href] - Base URL for the item detail page.
|
|
347
|
+
* @param {string} [props.itemID] - Item identifier appended to the URL when navigating.
|
|
348
|
+
*/
|
|
280
349
|
ViewItemDetails.propTypes = {
|
|
350
|
+
/** Base URL for item details */
|
|
281
351
|
href: PropTypes.string.isRequired,
|
|
352
|
+
/** Item identifier to navigate to */
|
|
282
353
|
itemID: PropTypes.string.isRequired,
|
|
283
354
|
};
|
|
284
355
|
export function ViewItemDetails(props) {
|
|
285
356
|
return (_jsx("div", { children: _jsx(FormButton, { className: "pixCartButton", type: "button", id: `btn-item-${props.itemID}`, text: "View Item Details", onClick: () => window.location.href = `${props.href}/${props.itemID}` }) }));
|
|
286
357
|
}
|
|
358
|
+
/**
|
|
359
|
+
* AddToCartButton — Button that adds an item to the shopping cart and displays a confirmation modal.
|
|
360
|
+
*
|
|
361
|
+
* @param {function} [props.handler] - Handler function that performs the add-to-cart action (receives the item object).
|
|
362
|
+
* @param {object} [props.item] - Shopping cart item object to add.
|
|
363
|
+
* @param {string} [props.itemID] - Unique identifier for the item used for modal IDs and button IDs.
|
|
364
|
+
*/
|
|
287
365
|
AddToCartButton.propTypes = {
|
|
366
|
+
/** Handler called to add the item to cart */
|
|
288
367
|
handler: PropTypes.func.isRequired,
|
|
368
|
+
/** Shopping cart item object */
|
|
289
369
|
item: PropTypes.object.isRequired,
|
|
370
|
+
/** Unique item identifier */
|
|
290
371
|
itemID: PropTypes.string.isRequired,
|
|
291
372
|
};
|
|
292
373
|
export function AddToCartButton(props) {
|
|
@@ -301,8 +382,16 @@ export function AddToCartButton(props) {
|
|
|
301
382
|
}
|
|
302
383
|
return (_jsxs("div", { children: [_jsx(FormButton, { className: "pixCartButton", type: "button", id: `btn-add-${props.itemID}`, text: "Add to Shopping Cart", onClick: (e) => handleClick(e) }), modalContent && _jsx(Modal, { modalContent: modalContent, modalID: "-" + props.itemID })] }));
|
|
303
384
|
}
|
|
385
|
+
/**
|
|
386
|
+
* GoToCartButton — Button that navigates the user to the shopping cart page.
|
|
387
|
+
*
|
|
388
|
+
* @param {string} [props.href] - Destination URL for the shopping cart.
|
|
389
|
+
* @param {string} [props.itemID] - ID used to compose button id attributes (not required for navigation).
|
|
390
|
+
*/
|
|
304
391
|
GoToCartButton.propTypes = {
|
|
392
|
+
/** Cart page URL */
|
|
305
393
|
href: PropTypes.string.isRequired,
|
|
394
|
+
/** Item ID used for button id attributes */
|
|
306
395
|
itemID: PropTypes.string.isRequired,
|
|
307
396
|
};
|
|
308
397
|
export function GoToCartButton(props) {
|
|
@@ -3,12 +3,28 @@ import { useState, useEffect } from 'react';
|
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { FontSelector } from './FontSelector';
|
|
5
5
|
import './CompoundFontSelector.css';
|
|
6
|
+
/**
|
|
7
|
+
* CompoundFontSelector — Combined font selector that exposes primary, fallback and generic font fields as one compound value.
|
|
8
|
+
*
|
|
9
|
+
* @param {string} [props.id] - Base id used for the internal font inputs.
|
|
10
|
+
* @param {string} [props.name] - Base name used for the internal font inputs.
|
|
11
|
+
* @param {string} [props.label] - Label displayed above the compound selector.
|
|
12
|
+
* @param {boolean} [props.required] - Whether selecting a primary font is required.
|
|
13
|
+
* @param {string} [props.value] - Current combined font value (comma-separated stack).
|
|
14
|
+
* @param {function} [props.onChange] - Callback invoked with the combined font stack when any part changes.
|
|
15
|
+
*/
|
|
6
16
|
CompoundFontSelector.propTypes = {
|
|
17
|
+
/** Base id for internal inputs */
|
|
7
18
|
id: PropTypes.string.isRequired,
|
|
19
|
+
/** Base name for internal inputs */
|
|
8
20
|
name: PropTypes.string.isRequired,
|
|
21
|
+
/** Display label for the control */
|
|
9
22
|
label: PropTypes.string.isRequired,
|
|
23
|
+
/** Required flag for the primary font */
|
|
10
24
|
required: PropTypes.bool,
|
|
25
|
+
/** Combined font stack value */
|
|
11
26
|
value: PropTypes.string,
|
|
27
|
+
/** onChange callback receiving combined font string */
|
|
12
28
|
onChange: PropTypes.func,
|
|
13
29
|
};
|
|
14
30
|
export function CompoundFontSelector(props) {
|
|
@@ -40,11 +56,27 @@ export function CompoundFontSelector(props) {
|
|
|
40
56
|
};
|
|
41
57
|
return (_jsxs("div", { className: "compound-font-selector", children: [_jsx("label", { children: label }), _jsxs("div", { className: "compound-container", children: [_jsx(FontSelector, { id: `${id}-primary`, name: `${name}-primary`, label: "Primary Font", fontType: "google", required: !!required, placeholder: "Select Google Font", value: fonts.primary, onChange: (val) => handleFontChange('primary', val) }), _jsx(FontSelector, { id: `${id}-fallback`, name: `${name}-fallback`, label: "Fallback Font", fontType: "websafe", required: false, placeholder: "Select web-safe font", value: fonts.fallback, onChange: (val) => handleFontChange('fallback', val) }), _jsx(FontSelector, { id: `${id}-generic`, name: `${name}-generic`, label: "Generic Family", fontType: "generic", required: false, placeholder: "Select generic family", value: fonts.generic, onChange: (val) => handleFontChange('generic', val) })] })] }));
|
|
42
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* CompoundFontSelector — Combined font selector that exposes primary, fallback and generic font fields as one compound value.
|
|
61
|
+
*
|
|
62
|
+
* @param {string} [props.id] - Base id used for the internal font inputs.
|
|
63
|
+
* @param {string} [props.name] - Base name used for the internal font inputs.
|
|
64
|
+
* @param {string} [props.label] - Label displayed above the compound selector.
|
|
65
|
+
* @param {boolean} [props.required] - Whether selecting a primary font is required.
|
|
66
|
+
* @param {string} [props.value] - Current combined font value (comma-separated stack).
|
|
67
|
+
* @param {function} [props.onChange] - Callback invoked with the combined font stack when any part changes.
|
|
68
|
+
*/
|
|
43
69
|
CompoundFontSelector.propTypes = {
|
|
70
|
+
/** Base id for internal inputs */
|
|
44
71
|
id: PropTypes.string.isRequired,
|
|
72
|
+
/** Base name for internal inputs */
|
|
45
73
|
name: PropTypes.string.isRequired,
|
|
74
|
+
/** Display label for the control */
|
|
46
75
|
label: PropTypes.string.isRequired,
|
|
76
|
+
/** Required flag for the primary font */
|
|
47
77
|
required: PropTypes.bool,
|
|
78
|
+
/** Combined font stack value */
|
|
48
79
|
value: PropTypes.string,
|
|
80
|
+
/** onChange callback receiving combined font string */
|
|
49
81
|
onChange: PropTypes.func,
|
|
50
82
|
};
|
|
@@ -103,8 +103,16 @@ const SiteConfigPropTypes = {
|
|
|
103
103
|
routes: PropTypes.arrayOf(PropTypes.shape(RoutePropTypes).isRequired).isRequired,
|
|
104
104
|
visualdesign: PropTypes.shape(VisualDesignPropTypes).isRequired,
|
|
105
105
|
};
|
|
106
|
+
/**
|
|
107
|
+
* ConfigBuilder — Interactive configuration editor for site-level settings (siteInfo, routes, visual design) with optional AI-assisted recommendations.
|
|
108
|
+
*
|
|
109
|
+
* @param {shape} [props.initialConfig] - Initial configuration object used to prepopulate the editor.
|
|
110
|
+
* @param {function} [props.onSave] - Callback invoked when the user saves the configuration (receives the full config object).
|
|
111
|
+
*/
|
|
106
112
|
ConfigBuilder.propTypes = {
|
|
113
|
+
/** Initial site configuration to edit */
|
|
107
114
|
initialConfig: PropTypes.shape(SiteConfigPropTypes),
|
|
115
|
+
/** Save callback to persist config changes */
|
|
108
116
|
onSave: PropTypes.func,
|
|
109
117
|
};
|
|
110
118
|
export function ConfigBuilder(props) {
|
|
@@ -4,14 +4,34 @@ import PropTypes from 'prop-types';
|
|
|
4
4
|
import { getFontOptions } from './google-fonts';
|
|
5
5
|
import { WEB_SAFE_FONTS, GENERIC_FAMILIES } from './fonts';
|
|
6
6
|
import './FontSelector.css';
|
|
7
|
+
/**
|
|
8
|
+
* FontSelector — Single-font picker that supports Google Fonts, web-safe fonts, and generic families with autocomplete.
|
|
9
|
+
*
|
|
10
|
+
* @param {string} [props.id] - Input id attribute.
|
|
11
|
+
* @param {string} [props.name] - Input name attribute.
|
|
12
|
+
* @param {string} [props.label] - Display label for the selector.
|
|
13
|
+
* @param {oneOf} [props.fontType] - Font source type: 'google' | 'websafe' | 'generic'.
|
|
14
|
+
* @param {boolean} [props.required] - Whether the field is required.
|
|
15
|
+
* @param {string} [props.placeholder] - Placeholder text shown when empty.
|
|
16
|
+
* @param {string} [props.value] - Current selected font value.
|
|
17
|
+
* @param {function} [props.onChange] - Callback invoked when selection changes (receives the font value).
|
|
18
|
+
*/
|
|
7
19
|
FontSelector.propTypes = {
|
|
20
|
+
/** Input id attribute */
|
|
8
21
|
id: PropTypes.string.isRequired,
|
|
22
|
+
/** Input name attribute */
|
|
9
23
|
name: PropTypes.string.isRequired,
|
|
24
|
+
/** Display label */
|
|
10
25
|
label: PropTypes.string.isRequired,
|
|
26
|
+
/** Font source type */
|
|
11
27
|
fontType: PropTypes.oneOf(['google', 'websafe', 'generic']).isRequired,
|
|
28
|
+
/** Required flag */
|
|
12
29
|
required: PropTypes.bool,
|
|
30
|
+
/** Placeholder text */
|
|
13
31
|
placeholder: PropTypes.string,
|
|
32
|
+
/** Selected font value */
|
|
14
33
|
value: PropTypes.string,
|
|
34
|
+
/** Change handler receives new font value */
|
|
15
35
|
onChange: PropTypes.func,
|
|
16
36
|
};
|
|
17
37
|
export function FontSelector(props) {
|
|
@@ -85,13 +105,33 @@ export function FontSelector(props) {
|
|
|
85
105
|
}
|
|
86
106
|
}, tabIndex: 0, role: "option", "aria-selected": inputValue === option.value, children: [_jsx("span", { className: "font-selector-font-name", children: option.label }), option.category && (_jsxs("span", { className: "font-selector-font-category", children: ["(", option.category, ")"] }))] }, option.value)))) }))] })] }));
|
|
87
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* FontSelector — Single-font picker that supports Google Fonts, web-safe fonts, and generic families with autocomplete.
|
|
110
|
+
*
|
|
111
|
+
* @param {string} [props.id] - Input id attribute.
|
|
112
|
+
* @param {string} [props.name] - Input name attribute.
|
|
113
|
+
* @param {string} [props.label] - Display label for the selector.
|
|
114
|
+
* @param {oneOf} [props.fontType] - Font source type: 'google' | 'websafe' | 'generic'.
|
|
115
|
+
* @param {boolean} [props.required] - Whether the field is required.
|
|
116
|
+
* @param {string} [props.placeholder] - Placeholder text shown when empty.
|
|
117
|
+
* @param {string} [props.value] - Current selected font value.
|
|
118
|
+
* @param {function} [props.onChange] - Callback invoked when selection changes (receives the font value).
|
|
119
|
+
*/
|
|
88
120
|
FontSelector.propTypes = {
|
|
121
|
+
/** Input id attribute */
|
|
89
122
|
id: PropTypes.string.isRequired,
|
|
123
|
+
/** Input name attribute */
|
|
90
124
|
name: PropTypes.string.isRequired,
|
|
125
|
+
/** Display label */
|
|
91
126
|
label: PropTypes.string.isRequired,
|
|
127
|
+
/** Font source type */
|
|
92
128
|
fontType: PropTypes.oneOf(['google', 'websafe', 'generic']).isRequired,
|
|
129
|
+
/** Required flag */
|
|
93
130
|
required: PropTypes.bool,
|
|
131
|
+
/** Placeholder text */
|
|
94
132
|
placeholder: PropTypes.string,
|
|
133
|
+
/** Selected font value */
|
|
95
134
|
value: PropTypes.string,
|
|
135
|
+
/** Change handler receives new font value */
|
|
96
136
|
onChange: PropTypes.func,
|
|
97
137
|
};
|
|
@@ -9,7 +9,15 @@ const debug = false;
|
|
|
9
9
|
/* ===== FORM BUILDER =====
|
|
10
10
|
Display all the components for a Form Builder -
|
|
11
11
|
Element Buttons, Element Details, and the Form */
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* FormBuilder — Visual editor for composing forms via JSON schema. Provides a field editor and a live preview powered by `FormEngine`.
|
|
14
|
+
*
|
|
15
|
+
* @param {function} [props.setFormData] - Callback that receives generated field JSON when building a new field (used by the UI to pass schema to the preview).
|
|
16
|
+
*/
|
|
17
|
+
FormBuilder.propTypes = {
|
|
18
|
+
/** Callback invoked with generated form JSON */
|
|
19
|
+
setFormData: PropTypes.func,
|
|
20
|
+
};
|
|
13
21
|
export function FormBuilder() {
|
|
14
22
|
const [formData, setFormData] = useState({ fields: [] });
|
|
15
23
|
const [fieldFormData, setFieldFormData] = useState({ fields: [] });
|
|
@@ -57,6 +65,7 @@ Dynamically generate, component by component, and prop by prop,
|
|
|
57
65
|
the JSON to create a form via FormEngine
|
|
58
66
|
*/
|
|
59
67
|
FormBuild.propTypes = {
|
|
68
|
+
/** Callback used to set the generated field JSON in the parent */
|
|
60
69
|
setFormData: PropTypes.func.isRequired,
|
|
61
70
|
};
|
|
62
71
|
export function FormBuild(props) {
|