@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
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import PropTypes from 'prop-types';
|
|
2
|
+
// https://www.outsystems.com/forge/component-documentation/12204/lorem-ipsum-lipsum-com-o11/0
|
|
3
|
+
/**
|
|
4
|
+
* getLipsum — Fetch placeholder text from lipsum.com and return an array of paragraphs.
|
|
5
|
+
*
|
|
6
|
+
* @param {oneOf} [props.LipsumTypeId] - Type of content to request ('Paragraph', 'Word', 'Char').
|
|
7
|
+
* @param {number} [props.Amount] - Quantity to request (number of paragraphs/words/chars).
|
|
8
|
+
* @param {boolean} [props.StartWithLoremIpsum] - Whether the text should start with the classic Lorem Ipsum opening.
|
|
9
|
+
*/
|
|
10
|
+
getLipsum.propTypes = {
|
|
11
|
+
/** Type of lipsum content to request */
|
|
12
|
+
LipsumTypeId: PropTypes.oneOf(['Paragraph', 'Word', 'Char']).isRequired,
|
|
13
|
+
/** Number of items to request */
|
|
14
|
+
Amount: PropTypes.number.isRequired,
|
|
15
|
+
/** Start with the canonical Lorem Ipsum text */
|
|
16
|
+
StartWithLoremIpsum: PropTypes.bool,
|
|
17
|
+
};
|
|
18
|
+
export async function getLipsum(props) {
|
|
19
|
+
const { LipsumTypeId, Amount, StartWithLoremIpsum } = props;
|
|
20
|
+
const proxyURL = "https://proxy.pixelated.tech/prod/proxy?url=";
|
|
21
|
+
const baseURL = "https://www.lipsum.com/feed/html";
|
|
22
|
+
const qs = `?LipsumTypeId=${LipsumTypeId}&amount=${Amount}&StartWithLoremIpsum=${StartWithLoremIpsum}`;
|
|
23
|
+
const fulURL = `${proxyURL}${baseURL}${qs}`;
|
|
24
|
+
const res = await fetch(fulURL)
|
|
25
|
+
.then((response) => {
|
|
26
|
+
return response.text();
|
|
27
|
+
})
|
|
28
|
+
.then((html) => {
|
|
29
|
+
const parser = new DOMParser();
|
|
30
|
+
const doc = parser.parseFromString(html, 'text/html');
|
|
31
|
+
const lipsum = doc.getElementById('lipsum');
|
|
32
|
+
// const lipsums = doc.getElementById('lipsum')?.innerHTML || "";
|
|
33
|
+
const paragraphs = lipsum?.querySelectorAll('p');
|
|
34
|
+
const strings = [];
|
|
35
|
+
paragraphs?.forEach((p) => {
|
|
36
|
+
strings.push(p.textContent.trim());
|
|
37
|
+
});
|
|
38
|
+
return strings;
|
|
39
|
+
})
|
|
40
|
+
.catch(error => {
|
|
41
|
+
console.error('Failed to fetch page: ', error);
|
|
42
|
+
return [];
|
|
43
|
+
});
|
|
44
|
+
return res;
|
|
45
|
+
}
|
|
@@ -2,12 +2,24 @@
|
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { useEffect, useState } from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
|
-
import { usePixelatedConfig } from '
|
|
5
|
+
import { usePixelatedConfig } from '../config/config.client';
|
|
6
6
|
const debug = false;
|
|
7
|
+
/**
|
|
8
|
+
* LoremIpsum — Fetch and render placeholder paragraphs via an external API (with optional proxy fallback).
|
|
9
|
+
*
|
|
10
|
+
* @param {number} [props.paragraphs] - Number of paragraphs to fetch.
|
|
11
|
+
* @param {string} [props.seed] - Optional seed to generate deterministic content.
|
|
12
|
+
* @param {string} [props.proxyBase] - Optional proxy base URL to use when direct fetch fails due to CORS.
|
|
13
|
+
* @param {string} [props.className] - CSS class name(s) applied to the wrapper element.
|
|
14
|
+
*/
|
|
7
15
|
LoremIpsum.propTypes = {
|
|
16
|
+
/** Paragraph count to request */
|
|
8
17
|
paragraphs: PropTypes.number,
|
|
18
|
+
/** Optional deterministic seed for content */
|
|
9
19
|
seed: PropTypes.string,
|
|
20
|
+
/** Proxy base URL used as a fallback */
|
|
10
21
|
proxyBase: PropTypes.string,
|
|
22
|
+
/** Wrapper CSS class name */
|
|
11
23
|
className: PropTypes.string,
|
|
12
24
|
};
|
|
13
25
|
export function LoremIpsum({ paragraphs = 1, seed = '', proxyBase, className = '' }) {
|
|
@@ -31,7 +31,13 @@ function removeDeadHrefs(element) {
|
|
|
31
31
|
return doc.body.innerHTML;
|
|
32
32
|
}
|
|
33
33
|
/* ========== SOCIALCARD ========== */
|
|
34
|
+
/**
|
|
35
|
+
* SocialCards — Aggregate feeds from configured sources (RSS, APIs) and render as social cards.
|
|
36
|
+
*
|
|
37
|
+
* @param {object} [props.sources] - Map of source configurations (url/userID/entryCount/iconSrc/iconSrcAlt) keyed by source name.
|
|
38
|
+
*/
|
|
34
39
|
SocialCards.propTypes = {
|
|
40
|
+
/** Map of feed source configurations (e.g., { instagram: { userID, entryCount }, blog: { url, entryCount }, ... }) */
|
|
35
41
|
sources: PropTypes.object.isRequired
|
|
36
42
|
};
|
|
37
43
|
export function SocialCards(props) {
|
|
@@ -289,9 +295,19 @@ export function SocialCards(props) {
|
|
|
289
295
|
return (state.mySocialCards);
|
|
290
296
|
}
|
|
291
297
|
}
|
|
298
|
+
/**
|
|
299
|
+
* SocialCard — Render a single social feed item as a card with icon, title, description, and date.
|
|
300
|
+
*
|
|
301
|
+
* @param {string} [props.iconSrc] - URL/path to the source icon image.
|
|
302
|
+
* @param {string} [props.iconSrcAlt] - Alt text for the source icon.
|
|
303
|
+
* @param {any} [props.card] - Feed item object containing title, link, description and pubDate.
|
|
304
|
+
*/
|
|
292
305
|
SocialCard.propTypes = {
|
|
306
|
+
/** Source icon image URL */
|
|
293
307
|
iconSrc: PropTypes.string.isRequired,
|
|
308
|
+
/** Alt text for the icon */
|
|
294
309
|
iconSrcAlt: PropTypes.string.isRequired,
|
|
310
|
+
/** Feed item object with title/link/description/pubDate */
|
|
295
311
|
card: PropTypes.any.isRequired
|
|
296
312
|
};
|
|
297
313
|
export function SocialCard(props) {
|
|
@@ -299,7 +315,10 @@ export function SocialCard(props) {
|
|
|
299
315
|
return (_jsx("div", { className: "masonryItem", children: _jsxs("div", { className: "card", children: [_jsx("div", { className: "cardTitle", children: _jsxs("a", { href: props.card.link, target: "_blank", rel: "noopener noreferrer", children: [_jsx(SmartImage, { className: "cardIcon", src: props.iconSrc, title: props.iconSrcAlt, alt: props.iconSrcAlt, cloudinaryEnv: config?.cloudinary?.product_env, cloudinaryDomain: config?.cloudinary?.baseUrl, cloudinaryTransforms: config?.cloudinary?.transforms }), props.card.title] }) }), _jsx("div", { className: "cardBody", dangerouslySetInnerHTML: { __html: removeDeadHrefs(props.card.description) } }), _jsx("div", { className: "cardDate", children: props.card.pubDate })] }) }, props.card.guid));
|
|
300
316
|
}
|
|
301
317
|
/* ========== SPINNER ========== */
|
|
302
|
-
SocialCardsLoading.propTypes
|
|
318
|
+
/** SocialCardsLoading.propTypes — No props (simple loading indicator).
|
|
319
|
+
* @param {any} [props] - No props are accepted by SocialCardsLoading.
|
|
320
|
+
*/
|
|
321
|
+
SocialCardsLoading.propTypes = { /** no props */};
|
|
303
322
|
export function SocialCardsLoading() {
|
|
304
323
|
return (_jsx("div", { className: "cardsLoading", children: _jsx("div", { children: "Loading..." }) }));
|
|
305
324
|
}
|
|
@@ -14,11 +14,25 @@ function decodeString(str) {
|
|
|
14
14
|
textarea.innerHTML = str;
|
|
15
15
|
return textarea.value;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* BlogPostList — Render a list of WordPress posts. If `posts` are provided they are used directly; otherwise the component will fetch posts from the configured WordPress endpoint.
|
|
19
|
+
*
|
|
20
|
+
* @param {string} [props.site] - WordPress site identifier (overrides provider config).
|
|
21
|
+
* @param {string} [props.baseURL] - Base URL for WordPress API if not using site config.
|
|
22
|
+
* @param {number} [props.count] - Maximum number of posts to fetch/display.
|
|
23
|
+
* @param {array} [props.posts] - Optional pre-fetched posts to render (bypasses remote fetch).
|
|
24
|
+
* @param {boolean} [props.showCategories] - Whether to show category icons for each post.
|
|
25
|
+
*/
|
|
17
26
|
BlogPostList.propTypes = {
|
|
27
|
+
/** WordPress site identifier */
|
|
18
28
|
site: PropTypes.string,
|
|
29
|
+
/** Optional WordPress base URL */
|
|
19
30
|
baseURL: PropTypes.string,
|
|
31
|
+
/** Max number of posts to fetch/display */
|
|
20
32
|
count: PropTypes.number,
|
|
33
|
+
/** Optional array of pre-fetched posts */
|
|
21
34
|
posts: PropTypes.array,
|
|
35
|
+
/** Show category icons next to posts */
|
|
22
36
|
showCategories: PropTypes.bool,
|
|
23
37
|
};
|
|
24
38
|
export function BlogPostList(props) {
|
|
@@ -55,14 +69,34 @@ export function BlogPostList(props) {
|
|
|
55
69
|
}, [site, baseURL, count, cachedPosts]);
|
|
56
70
|
return (_jsxs(_Fragment, { children: [_jsx(Loading, {}), posts.map((post) => (_jsx(PageGridItem, { children: _jsx(BlogPostSummary, { ID: post.ID, title: post.title, date: post.date, excerpt: post.excerpt, URL: post.URL, categories: post.categories, featured_image: post.featured_image, showCategories: showCategories }) }, post.ID)))] }));
|
|
57
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* BlogPostSummary — Render a compact summary card for a single WordPress post.
|
|
74
|
+
*
|
|
75
|
+
* @param {oneOfType} [props.ID] - Post ID (string or number).
|
|
76
|
+
* @param {string} [props.title] - Post title.
|
|
77
|
+
* @param {string} [props.date] - Post publish date (ISO string).
|
|
78
|
+
* @param {string} [props.excerpt] - HTML excerpt to display as the summary.
|
|
79
|
+
* @param {string} [props.URL] - Canonical URL for the post.
|
|
80
|
+
* @param {object} [props.categories] - Categories object (keys -> category name) used to derive icons.
|
|
81
|
+
* @param {string} [props.featured_image] - URL of the post's featured image.
|
|
82
|
+
* @param {boolean} [props.showCategories] - Whether to render category icons beneath the summary.
|
|
83
|
+
*/
|
|
58
84
|
BlogPostSummary.propTypes = {
|
|
85
|
+
/** Post ID (string or number) */
|
|
59
86
|
ID: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
87
|
+
/** Post title */
|
|
60
88
|
title: PropTypes.string,
|
|
89
|
+
/** Post publish date (ISO string) */
|
|
61
90
|
date: PropTypes.string,
|
|
91
|
+
/** HTML excerpt */
|
|
62
92
|
excerpt: PropTypes.string,
|
|
93
|
+
/** Canonical URL for the post */
|
|
63
94
|
URL: PropTypes.string,
|
|
95
|
+
/** Categories object used for icons */
|
|
64
96
|
categories: PropTypes.object,
|
|
97
|
+
/** Featured image URL */
|
|
65
98
|
featured_image: PropTypes.string,
|
|
99
|
+
/** Show categories flag */
|
|
66
100
|
showCategories: PropTypes.bool,
|
|
67
101
|
};
|
|
68
102
|
export function BlogPostSummary(props) {
|
|
@@ -72,7 +106,13 @@ export function BlogPostSummary(props) {
|
|
|
72
106
|
return (_jsx("div", { className: "blog-post-summary", children: _jsxs("article", { className: "h-entry", children: [_jsx("h2", { className: "p-name", children: _jsx("a", { className: "u-url blog-post-url", href: props.URL || '', target: "_blank", rel: "noopener noreferrer", children: props.title ? decodeString(props.title) : '' }) }), _jsxs("div", { className: "dt-published", children: ["Published: ", props.date ? new Date(props.date).toLocaleDateString() : ''] }), props.featured_image ? (_jsxs("div", { className: "article-body row-12col", children: [_jsx("div", { className: "article-featured-image grid-s1-e4", children: _jsx(SmartImage, { className: "u-photo", src: props.featured_image, alt: props.title ? decodeString(props.title) : '', title: props.title ? decodeString(props.title) : '', style: {}, cloudinaryEnv: config?.cloudinary?.product_env ?? undefined, cloudinaryDomain: config?.cloudinary?.baseUrl ?? undefined, cloudinaryTransforms: config?.cloudinary?.transforms ?? undefined }) }), _jsx("div", { className: "article-excerpt grid-s4-e13", children: _jsx("div", { className: "p-summary", dangerouslySetInnerHTML: { __html: myExcerpt } }) })] })) :
|
|
73
107
|
_jsx("div", { className: "article-excerpt grid-s1-e13", children: _jsx("div", { className: "p-summary", dangerouslySetInnerHTML: { __html: myExcerpt } }) }), props.showCategories !== false && (_jsxs("div", { children: ["Categories:", myCategoryImages.map(([categoryImg, index]) => (_jsx("span", { className: "p-category", children: _jsx(SmartImage, { src: `/images/icons/${categoryImg}.png`, title: String(categoryImg), alt: String(categoryImg), cloudinaryEnv: config?.cloudinary?.product_env ?? undefined, cloudinaryDomain: config?.cloudinary?.baseUrl ?? undefined, cloudinaryTransforms: config?.cloudinary?.transforms ?? undefined }) }, categoryImg + "-" + index)))] }))] }) }, props.ID));
|
|
74
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* BlogPostCategories — Render a compact list of category names or icons for a post.
|
|
111
|
+
*
|
|
112
|
+
* @param {arrayOf} [props.categories] - Array of category strings to render.
|
|
113
|
+
*/
|
|
75
114
|
BlogPostCategories.propTypes = {
|
|
115
|
+
/** Array of category names */
|
|
76
116
|
categories: PropTypes.arrayOf(PropTypes.string),
|
|
77
117
|
};
|
|
78
118
|
export function BlogPostCategories(props) {
|
|
@@ -4,9 +4,19 @@ import PropTypes from "prop-types";
|
|
|
4
4
|
// const wpSite = "blog.pixelated.tech";
|
|
5
5
|
const wpApiURL = "https://public-api.wordpress.com/rest/v1/sites/";
|
|
6
6
|
const wpCategoriesPath = "/categories";
|
|
7
|
+
/**
|
|
8
|
+
* getWordPressItems — Fetch posts from the WordPress REST API for a given site.
|
|
9
|
+
*
|
|
10
|
+
* @param {string} [props.site] - WordPress site identifier (site slug or domain).
|
|
11
|
+
* @param {number} [props.count] - Optional number of posts to fetch (omit to fetch all available).
|
|
12
|
+
* @param {string} [props.baseURL] - Optional base URL for the WordPress API (defaults to public WordPress API URL).
|
|
13
|
+
*/
|
|
7
14
|
getWordPressItems.propTypes = {
|
|
15
|
+
/** WordPress site identifier (slug or domain) */
|
|
8
16
|
site: PropTypes.string.isRequired,
|
|
17
|
+
/** Number of posts to fetch (optional) */
|
|
9
18
|
count: PropTypes.number,
|
|
19
|
+
/** Base URL for WordPress API (optional) */
|
|
10
20
|
baseURL: PropTypes.string,
|
|
11
21
|
};
|
|
12
22
|
export async function getWordPressItems(props) {
|
|
@@ -43,7 +53,13 @@ export async function getWordPressItems(props) {
|
|
|
43
53
|
}
|
|
44
54
|
return posts;
|
|
45
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* getWordPressItemImages — Extract image objects from a WordPress post for use in sitemaps and galleries.
|
|
58
|
+
*
|
|
59
|
+
* @param {object} [props.item] - WordPress post object to extract image URLs from.
|
|
60
|
+
*/
|
|
46
61
|
getWordPressItemImages.propTypes = {
|
|
62
|
+
/** WordPress post object */
|
|
47
63
|
item: PropTypes.object.isRequired,
|
|
48
64
|
};
|
|
49
65
|
export function getWordPressItemImages(item) {
|
|
@@ -87,8 +103,16 @@ export function getWordPressItemImages(item) {
|
|
|
87
103
|
}
|
|
88
104
|
return images;
|
|
89
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* getWordPressCategories — Retrieve categories for a WordPress site.
|
|
108
|
+
*
|
|
109
|
+
* @param {string} [props.site] - WordPress site identifier (slug or domain).
|
|
110
|
+
* @param {string} [props.baseURL] - Optional base URL for the WordPress API.
|
|
111
|
+
*/
|
|
90
112
|
getWordPressCategories.propTypes = {
|
|
113
|
+
/** WordPress site identifier (slug or domain) */
|
|
91
114
|
site: PropTypes.string.isRequired,
|
|
115
|
+
/** Base URL for WordPress API (optional) */
|
|
92
116
|
baseURL: PropTypes.string,
|
|
93
117
|
};
|
|
94
118
|
export async function getWordPressCategories(props) {
|
|
@@ -13,8 +13,16 @@ https://www.google.com/search?q=yelp+reviews+react+component&oq=yelp+reviews+rea
|
|
|
13
13
|
https://www.reddit.com/r/nextjs/comments/16smhqa/next_js_fetching_data_from_yelp_api/
|
|
14
14
|
https://helloputnam.medium.com/easiest-way-to-include-business-reviews-on-a-web-app-google-facebook-yelp-etc-de3e243bbe75
|
|
15
15
|
*/
|
|
16
|
+
/**
|
|
17
|
+
* YelpReviews — Fetch and display Yelp reviews for a given business ID (note: Yelp API access may require paid plan).
|
|
18
|
+
*
|
|
19
|
+
* @param {string} [props.businessID] - Yelp business ID used to fetch reviews (required).
|
|
20
|
+
* @param {string} [props.key] - Optional API key (not used by the demo placeholder implementation).
|
|
21
|
+
*/
|
|
16
22
|
YelpReviews.propTypes = {
|
|
23
|
+
/** Yelp business identifier */
|
|
17
24
|
businessID: PropTypes.string.isRequired,
|
|
25
|
+
/** Optional Yelp API key */
|
|
18
26
|
key: PropTypes.string,
|
|
19
27
|
};
|
|
20
28
|
export function YelpReviews(props) {
|
|
@@ -14,8 +14,16 @@ import "../../css/pixelated.grid.scss";
|
|
|
14
14
|
import "./ebay.css";
|
|
15
15
|
const debug = false;
|
|
16
16
|
/* ========== EBAY ITEMS PAGE ========== */
|
|
17
|
+
/**
|
|
18
|
+
* EbayItems — Fetch and display eBay items using the configured API parameters and optional Cloudinary transforms.
|
|
19
|
+
*
|
|
20
|
+
* @param {object} [props.apiProps] - eBay API configuration and query parameters.
|
|
21
|
+
* @param {string} [props.cloudinaryProductEnv] - Optional Cloudinary cloud name used to transform image URLs.
|
|
22
|
+
*/
|
|
17
23
|
EbayItems.propTypes = {
|
|
24
|
+
/** eBay API configuration and query params */
|
|
18
25
|
apiProps: PropTypes.object.isRequired,
|
|
26
|
+
/** Optional Cloudinary product environment for image transforms */
|
|
19
27
|
cloudinaryProductEnv: PropTypes.string,
|
|
20
28
|
};
|
|
21
29
|
export function EbayItems(props) {
|
|
@@ -24,8 +32,16 @@ export function EbayItems(props) {
|
|
|
24
32
|
const [items, setItems] = useState([]);
|
|
25
33
|
const [aspects, setAspects] = useState([]);
|
|
26
34
|
const apiProps = { ...(config?.ebay || {}), ...props.apiProps };
|
|
35
|
+
/**
|
|
36
|
+
* paintItems — Map raw eBay item data into rendered `EbayListItem` elements.
|
|
37
|
+
*
|
|
38
|
+
* @param {array} [props.items] - Array of eBay item objects returned by the API.
|
|
39
|
+
* @param {string} [props.cloudinaryProductEnv] - Optional Cloudinary cloud name for image URL transformations.
|
|
40
|
+
*/
|
|
27
41
|
paintItems.propTypes = {
|
|
42
|
+
/** Array of eBay item objects */
|
|
28
43
|
items: PropTypes.array.isRequired,
|
|
44
|
+
/** Optional Cloudinary product environment */
|
|
29
45
|
cloudinaryProductEnv: PropTypes.string,
|
|
30
46
|
};
|
|
31
47
|
function paintItems(props) {
|
|
@@ -39,8 +55,16 @@ export function EbayItems(props) {
|
|
|
39
55
|
}
|
|
40
56
|
return newItems;
|
|
41
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* fetchItems — Perform a search query against eBay and update component state with results.
|
|
60
|
+
*
|
|
61
|
+
* @param {string} [props.aspectName] - Optional aspect name to filter search results.
|
|
62
|
+
* @param {string} [props.aspectValue] - Optional aspect value corresponding to `aspectName` to filter results.
|
|
63
|
+
*/
|
|
42
64
|
fetchItems.propTypes = {
|
|
65
|
+
/** Filter aspect name for the search (optional) */
|
|
43
66
|
aspectName: PropTypes.string,
|
|
67
|
+
/** Filter aspect value for the search (optional) */
|
|
44
68
|
aspectValue: PropTypes.string,
|
|
45
69
|
};
|
|
46
70
|
async function fetchItems(props) {
|
|
@@ -80,8 +104,16 @@ export function EbayItems(props) {
|
|
|
80
104
|
return (_jsx("div", { className: "section-container", children: _jsx("div", { id: "ebayItems", className: "ebayItems", children: _jsx(Loading, {}) }) }));
|
|
81
105
|
}
|
|
82
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* EbayListFilter — UI for filtering eBay item lists by aspect values.
|
|
109
|
+
*
|
|
110
|
+
* @param {any} [props.aspects] - Aspect distributions returned by eBay used to build filter controls.
|
|
111
|
+
* @param {function} [props.callback] - Callback invoked when a filter selection changes; receives filter criteria.
|
|
112
|
+
*/
|
|
83
113
|
EbayListFilter.propTypes = {
|
|
114
|
+
/** Aspect distributions used to render filter controls */
|
|
84
115
|
aspects: PropTypes.any.isRequired,
|
|
116
|
+
/** Callback to fetch filtered results */
|
|
85
117
|
callback: PropTypes.func.isRequired,
|
|
86
118
|
};
|
|
87
119
|
export function EbayListFilter(props) {
|
|
@@ -124,9 +156,19 @@ export function EbayListFilter(props) {
|
|
|
124
156
|
}
|
|
125
157
|
return (_jsxs("form", { name: "ebayItemsFilter", id: "ebayItemsFilter", children: [_jsxs("span", { className: "filterInput", children: [_jsx("label", { htmlFor: "aspectName", children: "Aspect:" }), _jsxs("select", { id: "aspectName", onChange: onAspectNameChange, children: [_jsx("option", { value: "" }), aspectNames.map((aspectName, index) => _jsx("option", { value: aspectName, children: aspectName }, index))] })] }), _jsxs("span", { className: "filterInput", children: [_jsx("label", { htmlFor: "aspectValue", onChange: onAspectValueChange, children: "Value:" }), _jsx("select", { id: "aspectValue", children: _jsx("option", { value: "" }) })] }), _jsx("span", { className: "filterInput", children: _jsx("button", { type: "button", onClick: handleAspectFilter, children: "Filter" }) })] }));
|
|
126
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* EbayListItem — Render a single eBay item with thumbnail, metadata and add-to-cart actions.
|
|
161
|
+
*
|
|
162
|
+
* @param {any} [props.item] - eBay item object returned by the API.
|
|
163
|
+
* @param {string} [props.cloudinaryProductEnv] - Optional Cloudinary cloud name to transform image URLs.
|
|
164
|
+
* @param {any} [props.apiProps] - eBay API properties (for link generation or calls).
|
|
165
|
+
*/
|
|
127
166
|
EbayListItem.propTypes = {
|
|
167
|
+
/** eBay item object */
|
|
128
168
|
item: PropTypes.any.isRequired,
|
|
169
|
+
/** Optional Cloudinary product environment */
|
|
129
170
|
cloudinaryProductEnv: PropTypes.string,
|
|
171
|
+
/** eBay API properties */
|
|
130
172
|
apiProps: PropTypes.any,
|
|
131
173
|
};
|
|
132
174
|
export function EbayListItem(props) {
|
|
@@ -151,9 +193,19 @@ export function EbayListItem(props) {
|
|
|
151
193
|
? _jsxs("a", { href: itemURL, target: itemURLTarget, rel: "noreferrer", children: ["$", thisItem.price.value + " " + thisItem.price.currency] })
|
|
152
194
|
: "$" + thisItem.price.value + " " + thisItem.price.currency }), _jsx("br", {}), _jsxs("div", { className: "ebayItemAddToCart", children: [_jsx(ViewItemDetails, { href: "/store", itemID: thisItem.legacyItemId }), _jsx(AddToCartButton, { handler: addToShoppingCart, item: shoppingCartItem, itemID: thisItem.legacyItemId })] })] })] }));
|
|
153
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* EbayItemHeader — Render a heading for an eBay item; optionally wrap in a link when a `url` is provided.
|
|
198
|
+
*
|
|
199
|
+
* @param {string} [props.title] - The item title to display.
|
|
200
|
+
* @param {string} [props.url] - Optional URL to link the title to (opens in `props.target`).
|
|
201
|
+
* @param {string} [props.target] - Link target attribute (e.g., '_blank').
|
|
202
|
+
*/
|
|
154
203
|
EbayItemHeader.propTypes = {
|
|
204
|
+
/** The item title text */
|
|
155
205
|
title: PropTypes.string.isRequired,
|
|
206
|
+
/** Optional link URL for the title */
|
|
156
207
|
url: PropTypes.string,
|
|
208
|
+
/** Link target attribute (e.g., '_blank') */
|
|
157
209
|
target: PropTypes.string,
|
|
158
210
|
};
|
|
159
211
|
export function EbayItemHeader(props) {
|
|
@@ -162,9 +214,19 @@ export function EbayItemHeader(props) {
|
|
|
162
214
|
: _jsx("h2", { className: "", children: props.title }) }));
|
|
163
215
|
}
|
|
164
216
|
/* ========== EBAY ITEM DETAIL PAGE ========== */
|
|
217
|
+
/**
|
|
218
|
+
* EbayItemDetail — Display detailed information for a single eBay item fetched via the API.
|
|
219
|
+
*
|
|
220
|
+
* @param {object} [props.apiProps] - eBay API configuration used to fetch the item.
|
|
221
|
+
* @param {string} [props.itemID] - eBay item identifier to fetch details for.
|
|
222
|
+
* @param {string} [props.cloudinaryProductEnv] - Optional Cloudinary product environment for image transforms.
|
|
223
|
+
*/
|
|
165
224
|
EbayItemDetail.propTypes = {
|
|
225
|
+
/** eBay API configuration */
|
|
166
226
|
apiProps: PropTypes.object.isRequired,
|
|
227
|
+
/** eBay item ID to fetch details for */
|
|
167
228
|
itemID: PropTypes.string.isRequired, // currently not used
|
|
229
|
+
/** Cloudinary product env for image transforms */
|
|
168
230
|
cloudinaryProductEnv: PropTypes.string,
|
|
169
231
|
};
|
|
170
232
|
export function EbayItemDetail(props) {
|
|
@@ -209,8 +271,16 @@ export function EbayItemDetail(props) {
|
|
|
209
271
|
}
|
|
210
272
|
}
|
|
211
273
|
/* ========== EBAY RATE LIMITS VISUALIZER ========== */
|
|
274
|
+
/**
|
|
275
|
+
* EbayRateLimitsVisualizer — Visualize eBay API rate limit information for debugging and monitoring.
|
|
276
|
+
*
|
|
277
|
+
* @param {string} [props.token] - OAuth access token used to authorize analytics requests.
|
|
278
|
+
* @param {object} [props.apiProps] - eBay analytics API configuration (baseAnalyticsURL, proxyURL).
|
|
279
|
+
*/
|
|
212
280
|
EbayRateLimitsVisualizer.propTypes = {
|
|
281
|
+
/** OAuth access token for analytics endpoints */
|
|
213
282
|
token: PropTypes.string,
|
|
283
|
+
/** eBay analytics API configuration */
|
|
214
284
|
apiProps: PropTypes.object,
|
|
215
285
|
};
|
|
216
286
|
export function EbayRateLimitsVisualizer(props) {
|
|
@@ -50,9 +50,19 @@ function getMergedEbayConfig(providedApiProps) {
|
|
|
50
50
|
}
|
|
51
51
|
return apiProps;
|
|
52
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* getShoppingCartItem — Convert an eBay API item object into the internal ShoppingCartType shape used by the cart.
|
|
55
|
+
*
|
|
56
|
+
* @param {any} [props.thisItem] - Raw eBay item object from the API.
|
|
57
|
+
* @param {string} [props.cloudinaryProductEnv] - Optional Cloudinary cloud name to transform image URLs.
|
|
58
|
+
* @param {any} [props.apiProps] - eBay API properties used to determine category/availability.
|
|
59
|
+
*/
|
|
53
60
|
getShoppingCartItem.propTypes = {
|
|
61
|
+
/** Raw eBay item object */
|
|
54
62
|
thisItem: PropTypes.any.isRequired,
|
|
63
|
+
/** Optional Cloudinary product environment */
|
|
55
64
|
cloudinaryProductEnv: PropTypes.string,
|
|
65
|
+
/** eBay API properties */
|
|
56
66
|
apiProps: PropTypes.any,
|
|
57
67
|
};
|
|
58
68
|
export function getShoppingCartItem(props) {
|
|
@@ -91,7 +101,13 @@ item tokenScope: 'https://api.ebay.com/oauth/api_scope/buy.item.bulk',
|
|
|
91
101
|
getItem tokenScope: 'https://api.ebay.com/oauth/api_scope',
|
|
92
102
|
*/
|
|
93
103
|
/* ========== GET TOKEN ========== */
|
|
104
|
+
/**
|
|
105
|
+
* getEbayAppToken — Retrieve an application access token from eBay for API calls.
|
|
106
|
+
*
|
|
107
|
+
* @param {object} [props.apiProps] - eBay API configuration (appId, appCertId, proxyURL, baseTokenURL, etc.).
|
|
108
|
+
*/
|
|
94
109
|
getEbayAppToken.propTypes = {
|
|
110
|
+
/** eBay API configuration for token retrieval */
|
|
95
111
|
apiProps: PropTypes.object.isRequired,
|
|
96
112
|
};
|
|
97
113
|
export function getEbayAppToken(props) {
|
|
@@ -127,8 +143,16 @@ export function getEbayAppToken(props) {
|
|
|
127
143
|
return fetchToken();
|
|
128
144
|
}
|
|
129
145
|
/* ========== ITEM SEARCH ========== */
|
|
146
|
+
/**
|
|
147
|
+
* getEbayBrowseSearch — Execute a browse search request against the eBay Browse API and return results.
|
|
148
|
+
*
|
|
149
|
+
* @param {object} [props.apiProps] - eBay API configuration and query parameters.
|
|
150
|
+
* @param {string} [props.token] - OAuth token used to authorize the request.
|
|
151
|
+
*/
|
|
130
152
|
getEbayBrowseSearch.propTypes = {
|
|
153
|
+
/** eBay API configuration */
|
|
131
154
|
apiProps: PropTypes.object.isRequired,
|
|
155
|
+
/** OAuth token to authorize the request */
|
|
132
156
|
token: PropTypes.string.isRequired,
|
|
133
157
|
};
|
|
134
158
|
export function getEbayBrowseSearch(props) {
|
|
@@ -172,8 +196,16 @@ export function getEbayBrowseSearch(props) {
|
|
|
172
196
|
return fetchData(props.token);
|
|
173
197
|
}
|
|
174
198
|
/* ========== GET ITEM ========== */
|
|
199
|
+
/**
|
|
200
|
+
* getEbayBrowseItem — Retrieve a single item detail from the eBay Browse API.
|
|
201
|
+
*
|
|
202
|
+
* @param {object} [props.apiProps] - eBay API configuration (item URL/qsItemURL).
|
|
203
|
+
* @param {string} [props.token] - OAuth token used to authorize the request.
|
|
204
|
+
*/
|
|
175
205
|
getEbayBrowseItem.propTypes = {
|
|
206
|
+
/** eBay API configuration */
|
|
176
207
|
apiProps: PropTypes.object.isRequired,
|
|
208
|
+
/** OAuth token to authorize the request */
|
|
177
209
|
token: PropTypes.string.isRequired,
|
|
178
210
|
};
|
|
179
211
|
export function getEbayBrowseItem(props) {
|
|
@@ -217,8 +249,16 @@ export function getEbayBrowseItem(props) {
|
|
|
217
249
|
return fetchData(props.token);
|
|
218
250
|
}
|
|
219
251
|
/* ========== RATE LIMITS ========== */
|
|
252
|
+
/**
|
|
253
|
+
* getEbayRateLimits — Fetch API rate limit information for the eBay analytics endpoints.
|
|
254
|
+
*
|
|
255
|
+
* @param {object} [props.apiProps] - eBay analytics API config (baseAnalyticsURL, proxyURL).
|
|
256
|
+
* @param {string} [props.token] - OAuth token used to authorize analytics requests.
|
|
257
|
+
*/
|
|
220
258
|
getEbayRateLimits.propTypes = {
|
|
259
|
+
/** eBay analytics API configuration */
|
|
221
260
|
apiProps: PropTypes.object.isRequired,
|
|
261
|
+
/** OAuth token for analytics requests */
|
|
222
262
|
token: PropTypes.string.isRequired,
|
|
223
263
|
};
|
|
224
264
|
export function getEbayRateLimits(props) {
|
|
@@ -260,7 +300,13 @@ export function getEbayRateLimits(props) {
|
|
|
260
300
|
}
|
|
261
301
|
/* ========== EXPORTED FUNCTIONS ========== */
|
|
262
302
|
/* ========== GET EBAY ITEMS ========== */
|
|
303
|
+
/**
|
|
304
|
+
* getEbayItems — Fetch a list of eBay items using the configured browse search helper.
|
|
305
|
+
*
|
|
306
|
+
* @param {object} [props.apiProps] - eBay API configuration and query parameters.
|
|
307
|
+
*/
|
|
263
308
|
getEbayItems.propTypes = {
|
|
309
|
+
/** eBay API configuration and query params */
|
|
264
310
|
apiProps: PropTypes.object.isRequired,
|
|
265
311
|
};
|
|
266
312
|
export async function getEbayItems(props) {
|
|
@@ -281,7 +327,13 @@ export async function getEbayItems(props) {
|
|
|
281
327
|
return {};
|
|
282
328
|
}
|
|
283
329
|
/* ========== GET EBAY ITEMS ========== */
|
|
330
|
+
/**
|
|
331
|
+
* getEbayItem — Fetch a single eBay item using the configured eBay item helper.
|
|
332
|
+
*
|
|
333
|
+
* @param {object} [props.apiProps] - eBay API item config (baseItemURL, qsItemURL, proxyURL).
|
|
334
|
+
*/
|
|
284
335
|
getEbayItem.propTypes = {
|
|
336
|
+
/** eBay API item config */
|
|
285
337
|
apiProps: PropTypes.object.isRequired,
|
|
286
338
|
};
|
|
287
339
|
export async function getEbayItem(props) {
|