@pixelated-tech/components 3.4.3 → 3.5.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/README.md +12 -191
- package/dist/components/admin/componentusage/componentAnalysis.js +12 -4
- package/dist/components/admin/componentusage/componentDiscovery.js +20 -6
- package/dist/components/admin/site-health/site-health-accessibility.js +5 -1
- package/dist/components/admin/site-health/site-health-axe-core.js +4 -0
- package/dist/components/admin/site-health/site-health-cloudwatch.integration.js +0 -5
- package/dist/components/admin/site-health/site-health-cloudwatch.js +7 -1
- package/dist/components/admin/site-health/site-health-dependency-vulnerabilities.js +4 -0
- package/dist/components/admin/site-health/site-health-github.js +6 -0
- package/dist/components/admin/site-health/site-health-google-analytics.js +6 -0
- package/dist/components/admin/site-health/site-health-google-search-console.js +6 -0
- package/dist/components/admin/site-health/site-health-on-site-seo.integration.js +128 -55
- package/dist/components/admin/site-health/site-health-on-site-seo.js +4 -0
- package/dist/components/admin/site-health/site-health-overview.js +11 -4
- package/dist/components/admin/site-health/site-health-performance.js +4 -0
- package/dist/components/admin/site-health/site-health-security.js +5 -1
- package/dist/components/admin/site-health/site-health-seo.js +5 -1
- package/dist/components/admin/site-health/site-health-template.js +19 -9
- package/dist/components/admin/site-health/site-health-uptime.js +4 -0
- package/dist/components/callout/callout.js +0 -10
- package/dist/components/carousel/carousel.js +15 -4
- package/dist/components/carousel/tiles.js +1 -1
- package/dist/components/cms/contentful.items.components.js +3 -4
- package/dist/components/cms/flickr.js +1 -1
- package/dist/components/cms/google.reviews.components.js +3 -3
- package/dist/components/cms/instagram.components.js +15 -5
- package/dist/components/cms/smartimage.js +2 -2
- package/dist/components/cms/wordpress.components.js +32 -6
- package/dist/components/cms/yelp.js +5 -0
- package/dist/components/config/config.server.js +7 -1
- package/dist/components/general/css.js +0 -1
- package/dist/components/general/image.js +0 -1
- package/dist/components/general/loading.js +2 -1
- package/dist/components/general/microinteractions.js +0 -1
- package/dist/components/general/modal.css +2 -4
- package/dist/components/general/modal.js +72 -30
- package/dist/components/general/sidepanel.js +16 -0
- package/dist/components/general/tab.js +1 -0
- package/dist/components/menu/menu-accordion.css +1 -1
- package/dist/components/menu/menu-accordion.js +15 -4
- package/dist/components/menu/menu-expando.js +21 -19
- package/dist/components/menu/menu-simple.js +14 -14
- package/dist/components/nerdjoke/nerdjoke.js +1 -1
- package/dist/components/seo/googlesearch.js +0 -1
- package/dist/components/seo/schema-blogposting.js +6 -1
- package/dist/components/seo/schema-recipe.js +34 -1
- package/dist/components/seo/schema-services.js +20 -2
- package/dist/components/shoppingcart/ebay.components.js +3 -3
- package/dist/components/shoppingcart/shoppingcart.components.js +76 -28
- package/dist/components/shoppingcart/shoppingcart.functions.js +4 -4
- package/dist/components/sitebuilder/config/CompoundFontSelector.js +13 -4
- package/dist/components/sitebuilder/config/ConfigBuilder.css +194 -5
- package/dist/components/sitebuilder/config/ConfigBuilder.js +183 -17
- package/dist/components/sitebuilder/config/FontSelector.js +13 -2
- package/dist/components/sitebuilder/config/routes-form.json +67 -0
- package/dist/components/sitebuilder/config/siteinfo-form.json +28 -14
- package/dist/components/sitebuilder/config/visualdesignform.json +4 -4
- package/dist/components/sitebuilder/form/formbuilder.js +1 -0
- package/dist/components/sitebuilder/form/formcomponents.js +2 -3
- package/dist/components/sitebuilder/form/formengine.js +6 -5
- package/dist/components/sitebuilder/form/formvalidator.js +5 -0
- package/dist/components/sitebuilder/page/components/PageBuilderUI.js +5 -1
- package/dist/components/structured/buzzwordbingo.css +0 -1
- package/dist/components/structured/recipe.js +1 -1
- package/dist/components/structured/socialcard.js +2 -2
- package/dist/components/utilities/functions.js +82 -1
- package/dist/components/utilities/gemini-api.client.js +76 -0
- package/dist/components/utilities/gemini-api.server.js +185 -0
- package/dist/data/routes.json +5 -5
- package/dist/index.adminclient.js +30 -0
- package/dist/index.adminserver.js +21 -0
- package/dist/index.js +4 -18
- package/dist/index.server.js +15 -28
- package/dist/types/components/admin/componentusage/componentAnalysis.d.ts.map +1 -1
- package/dist/types/components/admin/componentusage/componentDiscovery.d.ts +1 -1
- package/dist/types/components/admin/componentusage/componentDiscovery.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-accessibility.d.ts +7 -4
- 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 +7 -4
- 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 +9 -6
- package/dist/types/components/admin/site-health/site-health-cloudwatch.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-cloudwatch.integration.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-dependency-vulnerabilities.d.ts +7 -4
- 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 +9 -6
- 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 +9 -6
- 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 +9 -6
- 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-on-site-seo.d.ts +8 -3
- 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-on-site-seo.integration.d.ts.map +1 -1
- package/dist/types/components/admin/site-health/site-health-overview.d.ts +7 -4
- 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 +7 -4
- 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 +7 -4
- 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 +7 -4
- 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 -10
- 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 +7 -4
- package/dist/types/components/admin/site-health/site-health-uptime.d.ts.map +1 -1
- package/dist/types/components/callout/callout.d.ts +3 -3
- package/dist/types/components/callout/callout.d.ts.map +1 -1
- package/dist/types/components/carousel/carousel.d.ts +16 -7
- package/dist/types/components/carousel/carousel.d.ts.map +1 -1
- package/dist/types/components/carousel/tiles.d.ts +3 -6
- package/dist/types/components/carousel/tiles.d.ts.map +1 -1
- package/dist/types/components/cms/flickr.d.ts +3 -6
- package/dist/types/components/cms/flickr.d.ts.map +1 -1
- package/dist/types/components/cms/google.reviews.components.d.ts +1 -7
- package/dist/types/components/cms/google.reviews.components.d.ts.map +1 -1
- package/dist/types/components/cms/hubspot.components.d.ts +1 -2
- package/dist/types/components/cms/hubspot.components.d.ts.map +1 -1
- package/dist/types/components/cms/instagram.components.d.ts +14 -9
- package/dist/types/components/cms/instagram.components.d.ts.map +1 -1
- package/dist/types/components/cms/smartimage.d.ts +2 -28
- package/dist/types/components/cms/smartimage.d.ts.map +1 -1
- package/dist/types/components/cms/wordpress.components.d.ts +33 -14
- package/dist/types/components/cms/wordpress.components.d.ts.map +1 -1
- package/dist/types/components/cms/yelp.d.ts +9 -4
- package/dist/types/components/cms/yelp.d.ts.map +1 -1
- package/dist/types/components/config/config.server.d.ts +9 -6
- package/dist/types/components/config/config.server.d.ts.map +1 -1
- package/dist/types/components/general/loading.d.ts +5 -1
- package/dist/types/components/general/loading.d.ts.map +1 -1
- package/dist/types/components/general/microinteractions.d.ts +1 -3
- package/dist/types/components/general/microinteractions.d.ts.map +1 -1
- package/dist/types/components/general/modal.d.ts +11 -5
- package/dist/types/components/general/modal.d.ts.map +1 -1
- package/dist/types/components/general/semantic.d.ts +3 -3
- package/dist/types/components/general/sidepanel.d.ts +20 -13
- package/dist/types/components/general/sidepanel.d.ts.map +1 -1
- package/dist/types/components/general/tab.d.ts +1 -2
- package/dist/types/components/general/tab.d.ts.map +1 -1
- package/dist/types/components/menu/menu-accordion.d.ts +22 -9
- package/dist/types/components/menu/menu-accordion.d.ts.map +1 -1
- package/dist/types/components/menu/menu-expando.d.ts +14 -5
- package/dist/types/components/menu/menu-expando.d.ts.map +1 -1
- package/dist/types/components/menu/menu-simple.d.ts +4 -5
- package/dist/types/components/menu/menu-simple.d.ts.map +1 -1
- package/dist/types/components/nerdjoke/nerdjoke.d.ts +1 -1
- package/dist/types/components/nerdjoke/nerdjoke.d.ts.map +1 -1
- package/dist/types/components/seo/googleanalytics.d.ts.map +1 -1
- package/dist/types/components/seo/metadata.components.d.ts +2 -2
- package/dist/types/components/seo/metadata.components.d.ts.map +1 -1
- package/dist/types/components/seo/schema-blogposting.d.ts +7 -4
- package/dist/types/components/seo/schema-blogposting.d.ts.map +1 -1
- package/dist/types/components/seo/schema-recipe.d.ts +29 -30
- package/dist/types/components/seo/schema-recipe.d.ts.map +1 -1
- package/dist/types/components/seo/schema-services.d.ts +19 -9
- package/dist/types/components/seo/schema-services.d.ts.map +1 -1
- package/dist/types/components/shoppingcart/paypal.d.ts +1 -1
- package/dist/types/components/shoppingcart/paypal.d.ts.map +1 -1
- package/dist/types/components/shoppingcart/shoppingcart.components.d.ts +77 -28
- package/dist/types/components/shoppingcart/shoppingcart.components.d.ts.map +1 -1
- package/dist/types/components/shoppingcart/shoppingcart.functions.d.ts +4 -23
- package/dist/types/components/shoppingcart/shoppingcart.functions.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/config/CompoundFontSelector.d.ts +10 -11
- package/dist/types/components/sitebuilder/config/CompoundFontSelector.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/config/ConfigBuilder.d.ts +41 -174
- package/dist/types/components/sitebuilder/config/ConfigBuilder.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/config/FontSelector.d.ts +12 -13
- package/dist/types/components/sitebuilder/config/FontSelector.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formbuilder.d.ts +7 -3
- package/dist/types/components/sitebuilder/form/formbuilder.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formcomponents.d.ts +1 -1
- package/dist/types/components/sitebuilder/form/formcomponents.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formengine.d.ts +1 -2
- package/dist/types/components/sitebuilder/form/formengine.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formextractor.d.ts +5 -4
- package/dist/types/components/sitebuilder/form/formextractor.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formtypes.d.ts +3 -3
- package/dist/types/components/sitebuilder/form/formtypes.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formvalidator.d.ts +8 -3
- package/dist/types/components/sitebuilder/form/formvalidator.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/page/components/ComponentPropertiesForm.d.ts +2 -3
- package/dist/types/components/sitebuilder/page/components/ComponentPropertiesForm.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/page/components/ComponentSelector.d.ts +2 -3
- package/dist/types/components/sitebuilder/page/components/ComponentSelector.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/page/components/ComponentTree.d.ts +2 -3
- package/dist/types/components/sitebuilder/page/components/ComponentTree.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/page/components/PageBuilderUI.d.ts +8 -7
- package/dist/types/components/sitebuilder/page/components/PageBuilderUI.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/page/components/PageEngine.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/page/components/SaveLoadSection.d.ts +2 -3
- package/dist/types/components/sitebuilder/page/components/SaveLoadSection.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/page/lib/componentMap.d.ts +1 -1
- package/dist/types/components/structured/markdown.d.ts +1 -3
- package/dist/types/components/structured/markdown.d.ts.map +1 -1
- package/dist/types/components/structured/recipe.d.ts +5 -32
- package/dist/types/components/structured/recipe.d.ts.map +1 -1
- package/dist/types/components/structured/socialcard.d.ts +4 -0
- package/dist/types/components/structured/socialcard.d.ts.map +1 -1
- package/dist/types/components/structured/timeline.d.ts +1 -3
- package/dist/types/components/structured/timeline.d.ts.map +1 -1
- package/dist/types/components/utilities/functions.d.ts +20 -0
- package/dist/types/components/utilities/functions.d.ts.map +1 -1
- package/dist/types/components/utilities/gemini-api.client.d.ts +38 -0
- package/dist/types/components/utilities/gemini-api.client.d.ts.map +1 -0
- package/dist/types/components/utilities/gemini-api.server.d.ts +17 -0
- package/dist/types/components/utilities/gemini-api.server.d.ts.map +1 -0
- package/dist/types/index.adminclient.d.ts +27 -0
- package/dist/types/index.adminclient.d.ts.map +1 -0
- package/dist/types/index.adminserver.d.ts +19 -0
- package/dist/types/index.adminserver.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -18
- package/dist/types/index.server.d.ts +5 -28
- package/dist/types/stories/general/sidepanel.stories.d.ts.map +1 -1
- package/dist/types/stories/general/smartimage.stories.d.ts +74 -2
- package/dist/types/stories/general/smartimage.stories.d.ts.map +1 -1
- package/package.json +19 -9
- package/README.COMPONENTS.md +0 -2310
- package/dist/components/cms/pixelated.linkedin.js +0 -180
- package/dist/components/cms/pixelated.linkedin1.js +0 -84
- package/dist/components/cms/pixelated.linkedin2.js +0 -92
- package/dist/types/components/cms/pixelated.linkedin.d.ts +0 -2
- package/dist/types/components/cms/pixelated.linkedin.d.ts.map +0 -1
- package/dist/types/components/cms/pixelated.linkedin1.d.ts +0 -2
- package/dist/types/components/cms/pixelated.linkedin1.d.ts.map +0 -1
- package/dist/types/components/cms/pixelated.linkedin2.d.ts +0 -2
- package/dist/types/components/cms/pixelated.linkedin2.d.ts.map +0 -1
- package/dist/types/tests/pixelated.menu-expando.test.d.ts +0 -2
- package/dist/types/tests/pixelated.menu-expando.test.d.ts.map +0 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
3
|
import { createContext, useContext, useState, useCallback } from 'react';
|
|
4
|
+
import PropTypes from 'prop-types';
|
|
3
5
|
import * as FVF from './formfieldvalidations';
|
|
4
6
|
/**
|
|
5
7
|
* Centralized field validation service
|
|
@@ -51,6 +53,9 @@ export function useFormValidation() {
|
|
|
51
53
|
}
|
|
52
54
|
return context;
|
|
53
55
|
}
|
|
56
|
+
FormValidationProvider.propTypes = {
|
|
57
|
+
children: PropTypes.node.isRequired
|
|
58
|
+
};
|
|
54
59
|
export function FormValidationProvider({ children }) {
|
|
55
60
|
const [fieldValidity, setFieldValidity] = useState({});
|
|
56
61
|
const [fieldErrors, setFieldErrors] = useState({});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import React from 'react';
|
|
4
|
+
import PropTypes from 'prop-types';
|
|
4
5
|
import { PageSectionHeader } from '../../../general/semantic';
|
|
5
6
|
import { usePageBuilder } from '../lib/usePageBuilder';
|
|
6
7
|
import { ComponentSelector } from '../components/ComponentSelector';
|
|
@@ -13,7 +14,10 @@ import './pagebuilder.scss';
|
|
|
13
14
|
* PageBuilderUI - Main orchestrator component
|
|
14
15
|
* Composes all sub-components and manages layout with inline editing
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
+
PageBuilderUI.propTypes = {
|
|
18
|
+
apiEndpoint: PropTypes.string,
|
|
19
|
+
};
|
|
20
|
+
export function PageBuilderUI({ apiEndpoint = '/api/pagebuilder' }) {
|
|
17
21
|
const { pageJSON, setPageJSON, editableComponent, selectedPath, editMode, setEditableComponent, setSelectedPath, setEditMode, handleAddNewComponent, handleSelectComponent, handleEditComponent, cancelEdit, handleDeleteComponent, handleMoveUp, handleMoveDown, } = usePageBuilder();
|
|
18
22
|
const [selectorKey, setSelectorKey] = React.useState(0);
|
|
19
23
|
// Handle loading a saved page
|
|
@@ -61,7 +61,6 @@ RecipeBook.propTypes = {
|
|
|
61
61
|
}).isRequired,
|
|
62
62
|
recipeCategories: PropTypes.array.isRequired
|
|
63
63
|
};
|
|
64
|
-
// export type RecipeBookType = InferProps<typeof RecipeBook.propTypes>;
|
|
65
64
|
export function RecipeBook(props) {
|
|
66
65
|
const [recipeElems] = useState(generateMyElems());
|
|
67
66
|
const [outputElems, setOutputElems] = useState([]);
|
|
@@ -205,6 +204,7 @@ export function RecipePickList(props) {
|
|
|
205
204
|
return (_jsx("form", { children: _jsx("select", { id: "recipe-list", name: "recipe-list", onChange: recipeListChanged, children: recipeOptions }) }));
|
|
206
205
|
}
|
|
207
206
|
/* ========== RECIPE BACK TO TOP ========== */
|
|
207
|
+
BackToTop.propTypes = {};
|
|
208
208
|
export function BackToTop() {
|
|
209
209
|
function scrollToTop() {
|
|
210
210
|
window.scroll({
|
|
@@ -30,10 +30,10 @@ function removeDeadHrefs(element) {
|
|
|
30
30
|
});
|
|
31
31
|
return doc.body.innerHTML;
|
|
32
32
|
}
|
|
33
|
+
/* ========== SOCIALCARD ========== */
|
|
33
34
|
SocialCards.propTypes = {
|
|
34
35
|
sources: PropTypes.object.isRequired
|
|
35
36
|
};
|
|
36
|
-
/* ========== SOCIALCARDS ========== */
|
|
37
37
|
export function SocialCards(props) {
|
|
38
38
|
const debug = false;
|
|
39
39
|
const [state, setState] = useState({
|
|
@@ -306,12 +306,12 @@ SocialCard.propTypes = {
|
|
|
306
306
|
iconSrcAlt: PropTypes.string.isRequired,
|
|
307
307
|
card: PropTypes.any.isRequired
|
|
308
308
|
};
|
|
309
|
-
/* ========== SOCIALCARD ========== */
|
|
310
309
|
export function SocialCard(props) {
|
|
311
310
|
const config = usePixelatedConfig();
|
|
312
311
|
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));
|
|
313
312
|
}
|
|
314
313
|
/* ========== SPINNER ========== */
|
|
314
|
+
SocialCardsLoading.propTypes = {};
|
|
315
315
|
export function SocialCardsLoading() {
|
|
316
316
|
return (_jsx("div", { className: "cardsLoading", children: _jsx("div", { children: "Loading..." }) }));
|
|
317
317
|
}
|
|
@@ -9,7 +9,6 @@ export function html2dom(str) {
|
|
|
9
9
|
dom.innerHTML = str;
|
|
10
10
|
return dom;
|
|
11
11
|
}
|
|
12
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
13
12
|
export function mergeDeep(a, b) {
|
|
14
13
|
// first is default vals, all other objects overwrite
|
|
15
14
|
const extended = {};
|
|
@@ -125,3 +124,85 @@ export function logAllChange() {
|
|
|
125
124
|
}
|
|
126
125
|
// Call the function to activate the listeners once the script is loaded
|
|
127
126
|
// logChangeToAllElements();
|
|
127
|
+
/* ===== CLIENT COMPONENT DETECTION ===== */
|
|
128
|
+
/**
|
|
129
|
+
* Regex patterns that identify client-only code requiring browser execution
|
|
130
|
+
* Used by both ESLint rules and build scripts to determine client vs server components
|
|
131
|
+
*/
|
|
132
|
+
export const CLIENT_ONLY_PATTERNS = [
|
|
133
|
+
/\baddEventListener\b/,
|
|
134
|
+
/\bcreateContext\b/,
|
|
135
|
+
/\bdocument\./,
|
|
136
|
+
/\blocalStorage\b/,
|
|
137
|
+
/\bnavigator\./,
|
|
138
|
+
/\bonBlur\b/,
|
|
139
|
+
/\bonChange\b/,
|
|
140
|
+
/\bonClick\b/,
|
|
141
|
+
/\bonFocus\b/,
|
|
142
|
+
/\bonInput\b/,
|
|
143
|
+
/\bonKey\b/,
|
|
144
|
+
/\bonMouse\b/,
|
|
145
|
+
/\bonSubmit\b/,
|
|
146
|
+
/\bremoveEventListener\b/,
|
|
147
|
+
/\bsessionStorage\b/,
|
|
148
|
+
/\buseCallback\b/,
|
|
149
|
+
/\buseContext\b/,
|
|
150
|
+
/\buseEffect\b/,
|
|
151
|
+
/\buseLayoutEffect\b/,
|
|
152
|
+
/\buseMemo\b/,
|
|
153
|
+
/\buseReducer\b/,
|
|
154
|
+
/\buseRef\b/,
|
|
155
|
+
/\buseState\b/,
|
|
156
|
+
/\bwindow\./,
|
|
157
|
+
/["']use client["']/ // Client directive
|
|
158
|
+
];
|
|
159
|
+
/**
|
|
160
|
+
* Determines if a component file contains client-only code that requires browser execution
|
|
161
|
+
* @param fileContent - The source code content of the file
|
|
162
|
+
* @returns true if the file contains client-only patterns
|
|
163
|
+
*/
|
|
164
|
+
export function isClientComponent(fileContent) {
|
|
165
|
+
return CLIENT_ONLY_PATTERNS.some(pattern => pattern.test(fileContent));
|
|
166
|
+
}
|
|
167
|
+
/* ===== COMPONENT FILE DETECTION ===== */
|
|
168
|
+
/**
|
|
169
|
+
* Glob patterns for finding component files
|
|
170
|
+
*/
|
|
171
|
+
export const TS_FILE_IGNORE_PATTERNS = [
|
|
172
|
+
'**/*.d.ts',
|
|
173
|
+
'**/*.test.ts',
|
|
174
|
+
'**/*.spec.ts',
|
|
175
|
+
'**/*.stories.ts',
|
|
176
|
+
'**/documentation/**',
|
|
177
|
+
'**/examples/**',
|
|
178
|
+
'**/*.example.*'
|
|
179
|
+
];
|
|
180
|
+
export const TSX_FILE_IGNORE_PATTERNS = [
|
|
181
|
+
'**/*.test.tsx',
|
|
182
|
+
'**/*.spec.tsx',
|
|
183
|
+
'**/*.stories.tsx',
|
|
184
|
+
'**/documentation/**',
|
|
185
|
+
'**/examples/**',
|
|
186
|
+
'**/*.example.*'
|
|
187
|
+
];
|
|
188
|
+
/* ===== SERVER COMPONENT DETECTION ===== */
|
|
189
|
+
/**
|
|
190
|
+
* Regex patterns that identify server-only code that should not run on client
|
|
191
|
+
*/
|
|
192
|
+
export const SERVER_ONLY_PATTERNS = [
|
|
193
|
+
/["']use server["']/, // Server directive
|
|
194
|
+
/\b__dirname\b/,
|
|
195
|
+
/\b__filename\b/,
|
|
196
|
+
/@aws-sdk/,
|
|
197
|
+
/\bchild_process\b/,
|
|
198
|
+
/\bexec\b/,
|
|
199
|
+
/\bexecAsync\b/,
|
|
200
|
+
/\bfs\b/,
|
|
201
|
+
/\bfs\.readFileSync\b/,
|
|
202
|
+
/\bfs\.existsSync\b/,
|
|
203
|
+
/\bimport.*googleapis\b|\brequire.*googleapis\b/, // Actual import of googleapis
|
|
204
|
+
/\bimport.*path\b|\brequire.*path\b/, // Actual import of path module
|
|
205
|
+
/\bprocess\.cwd\(\)/,
|
|
206
|
+
/\brequire\.resolve\b/,
|
|
207
|
+
/\butil\b/
|
|
208
|
+
];
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
/**
|
|
3
|
+
* Service for integrating with Google Gemini API for SEO recommendations
|
|
4
|
+
*/
|
|
5
|
+
export class GeminiApiService {
|
|
6
|
+
apiKey;
|
|
7
|
+
baseUrl;
|
|
8
|
+
constructor(apiKey, baseUrl = 'https://generativelanguage.googleapis.com') {
|
|
9
|
+
this.apiKey = apiKey;
|
|
10
|
+
this.baseUrl = baseUrl;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Generate SEO recommendations for a route
|
|
14
|
+
*/
|
|
15
|
+
async generateRouteRecommendations(request) {
|
|
16
|
+
try {
|
|
17
|
+
// Use the proxy API route instead of direct Google API call
|
|
18
|
+
const response = await fetch('/api/ai/recommendations', {
|
|
19
|
+
method: 'POST',
|
|
20
|
+
headers: {
|
|
21
|
+
'Content-Type': 'application/json',
|
|
22
|
+
},
|
|
23
|
+
body: JSON.stringify(request)
|
|
24
|
+
});
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
const errorText = await response.text();
|
|
27
|
+
console.error('AI API Error Response:', errorText);
|
|
28
|
+
throw new Error(`AI API error: ${response.status} ${response.statusText}`);
|
|
29
|
+
}
|
|
30
|
+
const data = await response.json();
|
|
31
|
+
if (!data.success) {
|
|
32
|
+
throw new Error(data.error || 'AI API request failed');
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
success: true,
|
|
36
|
+
data: data.data
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error('AI API error:', error);
|
|
41
|
+
return {
|
|
42
|
+
success: false,
|
|
43
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred'
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* List available models to debug API issues
|
|
49
|
+
*/
|
|
50
|
+
async listModels() {
|
|
51
|
+
try {
|
|
52
|
+
const response = await fetch(`${this.baseUrl}/v1/models?key=${this.apiKey}`, {
|
|
53
|
+
method: 'GET',
|
|
54
|
+
headers: {
|
|
55
|
+
'Content-Type': 'application/json',
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
if (!response.ok) {
|
|
59
|
+
throw new Error(`Failed to list models: ${response.status} ${response.statusText}`);
|
|
60
|
+
}
|
|
61
|
+
const data = await response.json();
|
|
62
|
+
console.log('Available models:', data);
|
|
63
|
+
return data;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error('Error listing models:', error);
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Create a Gemini API service instance
|
|
73
|
+
*/
|
|
74
|
+
export function createGeminiApiService(apiKey) {
|
|
75
|
+
return new GeminiApiService(apiKey);
|
|
76
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use server";
|
|
2
|
+
/**
|
|
3
|
+
* Parse the response from Google Gemini API
|
|
4
|
+
*/
|
|
5
|
+
function parseGeminiResponse(data) {
|
|
6
|
+
try {
|
|
7
|
+
console.log('Gemini API raw response:', JSON.stringify(data, null, 2));
|
|
8
|
+
// Check if we have candidates
|
|
9
|
+
if (!data.candidates || !Array.isArray(data.candidates) || data.candidates.length === 0) {
|
|
10
|
+
throw new Error('No candidates in Gemini API response');
|
|
11
|
+
}
|
|
12
|
+
const candidate = data.candidates[0];
|
|
13
|
+
// Check if response was truncated due to token limits
|
|
14
|
+
if (candidate.finishReason === 'MAX_TOKENS') {
|
|
15
|
+
throw new Error('AI response was truncated due to token limits. Please try again or use a shorter prompt.');
|
|
16
|
+
}
|
|
17
|
+
if (!candidate.content || !candidate.content.parts || !Array.isArray(candidate.content.parts) || candidate.content.parts.length === 0) {
|
|
18
|
+
throw new Error('No content parts in Gemini API response');
|
|
19
|
+
}
|
|
20
|
+
const text = candidate.content.parts[0].text;
|
|
21
|
+
console.log('Gemini API response text:', text);
|
|
22
|
+
if (!text) {
|
|
23
|
+
throw new Error('No text content in Gemini API response');
|
|
24
|
+
}
|
|
25
|
+
// Remove markdown code block markers if present
|
|
26
|
+
let jsonText = text.trim();
|
|
27
|
+
if (jsonText.startsWith('```json')) {
|
|
28
|
+
jsonText = jsonText.replace(/^```json\s*/, '').replace(/\s*```$/, '');
|
|
29
|
+
}
|
|
30
|
+
else if (jsonText.startsWith('```')) {
|
|
31
|
+
jsonText = jsonText.replace(/^```\s*/, '').replace(/\s*```$/, '');
|
|
32
|
+
}
|
|
33
|
+
console.log('Cleaned JSON text:', jsonText);
|
|
34
|
+
// The text should be JSON, try to parse it
|
|
35
|
+
const parsedResponse = JSON.parse(jsonText);
|
|
36
|
+
console.log('Parsed JSON response:', parsedResponse);
|
|
37
|
+
// Validate the expected structure
|
|
38
|
+
if (typeof parsedResponse !== 'object' || parsedResponse === null) {
|
|
39
|
+
throw new Error('Parsed response is not a valid object');
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
title: parsedResponse.title || undefined,
|
|
43
|
+
keywords: Array.isArray(parsedResponse.keywords) ? parsedResponse.keywords : undefined,
|
|
44
|
+
description: parsedResponse.description || undefined
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error('Error parsing Gemini API response:', error);
|
|
49
|
+
console.error('Raw response data:', JSON.stringify(data, null, 2));
|
|
50
|
+
throw new Error('Failed to parse AI recommendations');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function buildRecommendationPrompt(request) {
|
|
54
|
+
const { route, siteInfo } = request;
|
|
55
|
+
// Extract location information
|
|
56
|
+
const address = siteInfo.address;
|
|
57
|
+
const locationInfo = address ?
|
|
58
|
+
`${address.addressLocality || ''}, ${address.addressRegion || ''} ${address.postalCode || ''}`.trim() :
|
|
59
|
+
'';
|
|
60
|
+
return `Generate SEO recommendations as JSON:
|
|
61
|
+
|
|
62
|
+
Business: ${siteInfo.name || 'Unknown'} - ${siteInfo.description || 'Not provided'}
|
|
63
|
+
${locationInfo ? `Location: ${locationInfo}` : ''}
|
|
64
|
+
Route: ${route.name || route.path || '/'}
|
|
65
|
+
Current: Title="${route.title || ''}", Keywords="${Array.isArray(route.keywords) ? route.keywords.join(', ') : route.keywords || ''}", Description="${route.description || ''}"
|
|
66
|
+
|
|
67
|
+
Return only this JSON:
|
|
68
|
+
{
|
|
69
|
+
"title": "50-60 char optimized title",
|
|
70
|
+
"keywords": ["relevant", "keywords", "for", "this", "page", "including", "location-based", "terms"],
|
|
71
|
+
"description": "150-160 char meta description including location when relevant"
|
|
72
|
+
}`;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Parse the PaLM API response and extract recommendations
|
|
76
|
+
*/
|
|
77
|
+
function parsePaLMResponse(data) {
|
|
78
|
+
try {
|
|
79
|
+
// Try Gemini API format first
|
|
80
|
+
let text = data.candidates?.[0]?.content?.parts?.[0]?.text;
|
|
81
|
+
// Fallback to PaLM format
|
|
82
|
+
if (!text) {
|
|
83
|
+
text = data.candidates?.[0]?.output;
|
|
84
|
+
}
|
|
85
|
+
if (!text) {
|
|
86
|
+
throw new Error('No response text from AI API');
|
|
87
|
+
}
|
|
88
|
+
// Try to parse JSON from the response
|
|
89
|
+
const jsonMatch = text.match(/\{[\s\S]*\}/);
|
|
90
|
+
if (!jsonMatch) {
|
|
91
|
+
throw new Error('No JSON found in AI response');
|
|
92
|
+
}
|
|
93
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
94
|
+
return {
|
|
95
|
+
title: parsed.title,
|
|
96
|
+
keywords: Array.isArray(parsed.keywords) ? parsed.keywords : [],
|
|
97
|
+
description: parsed.description
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error('Error parsing AI response:', error);
|
|
102
|
+
return {
|
|
103
|
+
error: 'Failed to parse AI recommendations'
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Infer business type from site information
|
|
109
|
+
*/
|
|
110
|
+
function inferBusinessType(siteInfo) {
|
|
111
|
+
// Simple inference based on description keywords
|
|
112
|
+
const description = (siteInfo.description || '').toLowerCase();
|
|
113
|
+
if (description.includes('restaurant') || description.includes('food'))
|
|
114
|
+
return 'restaurant';
|
|
115
|
+
if (description.includes('real estate') || description.includes('property'))
|
|
116
|
+
return 'real estate';
|
|
117
|
+
if (description.includes('law') || description.includes('legal'))
|
|
118
|
+
return 'legal services';
|
|
119
|
+
if (description.includes('medical') || description.includes('health'))
|
|
120
|
+
return 'healthcare';
|
|
121
|
+
if (description.includes('consulting') || description.includes('consultant'))
|
|
122
|
+
return 'consulting';
|
|
123
|
+
if (description.includes('retail') || description.includes('store'))
|
|
124
|
+
return 'retail';
|
|
125
|
+
return 'general business';
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Generate AI recommendations for SEO using Google Gemini API
|
|
129
|
+
*/
|
|
130
|
+
export async function generateAiRecommendations(request, apiKey) {
|
|
131
|
+
try {
|
|
132
|
+
// Build the prompt using the shared function
|
|
133
|
+
const prompt = buildRecommendationPrompt(request);
|
|
134
|
+
// Make request to Google Gemini API
|
|
135
|
+
const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${apiKey}`, {
|
|
136
|
+
method: 'POST',
|
|
137
|
+
headers: {
|
|
138
|
+
'Content-Type': 'application/json',
|
|
139
|
+
},
|
|
140
|
+
body: JSON.stringify({
|
|
141
|
+
contents: [{
|
|
142
|
+
parts: [{
|
|
143
|
+
text: prompt
|
|
144
|
+
}]
|
|
145
|
+
}],
|
|
146
|
+
generationConfig: {
|
|
147
|
+
temperature: 0.7,
|
|
148
|
+
maxOutputTokens: 4096,
|
|
149
|
+
topP: 0.95,
|
|
150
|
+
topK: 40
|
|
151
|
+
}
|
|
152
|
+
})
|
|
153
|
+
});
|
|
154
|
+
if (!response.ok) {
|
|
155
|
+
console.error('Google API Response Status:', response.status);
|
|
156
|
+
console.error('Google API Response Status Text:', response.statusText);
|
|
157
|
+
// Try to get the response body for debugging
|
|
158
|
+
try {
|
|
159
|
+
const errorBody = await response.text();
|
|
160
|
+
console.error('Google API Error Response Body:', errorBody);
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
console.error('Could not read error response body');
|
|
164
|
+
}
|
|
165
|
+
if (response.status === 429) {
|
|
166
|
+
// Check if it's quota exceeded vs rate limit
|
|
167
|
+
if (response.statusText === 'Too Many Requests') {
|
|
168
|
+
// This might be quota exceeded, not just rate limit
|
|
169
|
+
throw new Error('AI API quota exceeded. Please check your Google AI Studio billing settings and enable billing.');
|
|
170
|
+
}
|
|
171
|
+
throw new Error('AI API rate limit exceeded. Please try again later.');
|
|
172
|
+
}
|
|
173
|
+
throw new Error(`AI API error: ${response.status} ${response.statusText}`);
|
|
174
|
+
}
|
|
175
|
+
const data = await response.json();
|
|
176
|
+
// Parse the Gemini API response
|
|
177
|
+
return parseGeminiResponse(data);
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
console.error('AI API error:', error);
|
|
181
|
+
return {
|
|
182
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred'
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
package/dist/data/routes.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"favicon": "/favicon.ico",
|
|
10
10
|
"favicon_sizes": "64x64 32x32 24x24 16x16",
|
|
11
11
|
"favicon_type": "image/x-icon",
|
|
12
|
-
"theme_color": "#
|
|
12
|
+
"theme_color": "#336699",
|
|
13
13
|
"background_color": "#ffffff",
|
|
14
14
|
"default_locale": "en",
|
|
15
15
|
"display": "standalone",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
]
|
|
33
33
|
},
|
|
34
34
|
"visualdesign": {
|
|
35
|
-
"primary-color": { "value": "#
|
|
36
|
-
"secondary-color": { "value": "#
|
|
37
|
-
"accent1-color": { "value": "#
|
|
38
|
-
"accent2-color": { "value": "#
|
|
35
|
+
"primary-color": { "value": "#336699", "type": "color", "group": "palette", "label": "Primary color" },
|
|
36
|
+
"secondary-color": { "value": "#BBCCDD", "type": "color", "group": "palette", "label": "Secondary color" },
|
|
37
|
+
"accent1-color": { "value": "#CCCCCC", "type": "color", "group": "palette", "label": "Accent color 1" },
|
|
38
|
+
"accent2-color": { "value": "#EEEEEE", "type": "color", "group": "palette", "label": "Accent color 2" },
|
|
39
39
|
"bg-color": { "value": "#ffffff", "type": "color", "group": "palette", "label": "Background color" },
|
|
40
40
|
"text-color": { "value": "#000000", "type": "color", "group": "palette", "label": "Font color" },
|
|
41
41
|
"header-font": { "value": "\"Montserrat\", Verdana, sans-serif", "type": "font", "group": "typography", "label": "Header font" },
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Admin client entry point - client components for admin functionality
|
|
2
|
+
// This entry requires optional dependencies: recharts
|
|
3
|
+
// Sites using admin client components should import from 'pixelated-components/adminclient'
|
|
4
|
+
export * from './components/admin/site-health/site-health-accessibility';
|
|
5
|
+
export * from './components/admin/site-health/site-health-axe-core';
|
|
6
|
+
export * from './components/admin/site-health/site-health-cloudwatch';
|
|
7
|
+
export * from './components/admin/site-health/site-health-cloudwatch.integration';
|
|
8
|
+
export * from './components/admin/site-health/site-health-core-web-vitals.integration';
|
|
9
|
+
export * from './components/admin/site-health/site-health-dependency-vulnerabilities';
|
|
10
|
+
export * from './components/admin/site-health/site-health-github';
|
|
11
|
+
export * from './components/admin/site-health/site-health-google-analytics';
|
|
12
|
+
export * from './components/admin/site-health/site-health-google-search-console';
|
|
13
|
+
export * from './components/admin/site-health/site-health-on-site-seo';
|
|
14
|
+
export * from './components/admin/site-health/site-health-overview';
|
|
15
|
+
export * from './components/admin/site-health/site-health-security';
|
|
16
|
+
export * from './components/admin/site-health/site-health-seo';
|
|
17
|
+
export * from './components/admin/site-health/site-health-template';
|
|
18
|
+
export * from './components/admin/site-health/site-health-uptime';
|
|
19
|
+
// Client-safe admin components (can run on both client and server)
|
|
20
|
+
export * from './components/admin/site-health/seo-constants';
|
|
21
|
+
export * from './components/admin/site-health/site-health-cache';
|
|
22
|
+
export * from './components/admin/site-health/site-health-indicators';
|
|
23
|
+
export * from './components/admin/site-health/site-health-on-site-seo.integration';
|
|
24
|
+
export * from './components/admin/site-health/site-health-types';
|
|
25
|
+
export * from './components/admin/site-health/site-health-performance';
|
|
26
|
+
export * from './components/admin/site-health/site-health-cache';
|
|
27
|
+
export * from './components/admin/site-health/site-health-indicators';
|
|
28
|
+
export * from './components/admin/site-health/site-health-on-site-seo.integration';
|
|
29
|
+
export * from './components/admin/site-health/site-health-performance';
|
|
30
|
+
export * from './components/admin/site-health/site-health-types';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Admin entry point - server-side integrations and utilities for admin functionality
|
|
2
|
+
// This entry requires optional dependencies: recharts, googleapis, puppeteer, @aws-sdk/*, etc.
|
|
3
|
+
// Sites using admin features should import server functions from 'pixelated-components/admin'
|
|
4
|
+
export * from './components/admin/componentusage/componentDiscovery';
|
|
5
|
+
export * from './components/admin/componentusage/componentAnalysis';
|
|
6
|
+
export * from './components/admin/deploy/deployment.integration';
|
|
7
|
+
export * from './components/admin/site-health/google-api-auth';
|
|
8
|
+
export * from './components/admin/site-health/site-health-axe-core.integration';
|
|
9
|
+
export * from './components/admin/site-health/site-health-cache';
|
|
10
|
+
export * from './components/admin/site-health/site-health-core-web-vitals.integration';
|
|
11
|
+
export * from './components/admin/site-health/site-health-github.integration';
|
|
12
|
+
export * from './components/admin/site-health/site-health-google-analytics.integration';
|
|
13
|
+
export * from './components/admin/site-health/site-health-google-search-console.integration';
|
|
14
|
+
export * from './components/admin/site-health/site-health-indicators';
|
|
15
|
+
export * from './components/admin/site-health/site-health-on-site-seo.integration';
|
|
16
|
+
export * from './components/admin/site-health/site-health-cloudwatch.integration';
|
|
17
|
+
export * from './components/admin/site-health/seo-constants';
|
|
18
|
+
export * from './components/admin/site-health/site-health-security.integration';
|
|
19
|
+
export * from './components/admin/site-health/site-health-types';
|
|
20
|
+
export * from './components/admin/site-health/site-health-uptime.integration';
|
|
21
|
+
export * from './components/admin/sites/sites.integration';
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,7 @@ export * from './components/cms/instagram.components';
|
|
|
20
20
|
export * from './components/cms/wordpress.components';
|
|
21
21
|
export * from './components/cms/wordpress.functions';
|
|
22
22
|
export * from './components/cms/yelp';
|
|
23
|
+
export * from './components/config/config';
|
|
23
24
|
export * from './components/config/config.client';
|
|
24
25
|
export * from './components/config/config.server';
|
|
25
26
|
export * from './components/config/config.types';
|
|
@@ -48,6 +49,7 @@ export * from './components/sitebuilder/config/ConfigEngine';
|
|
|
48
49
|
export * from './components/sitebuilder/config/FontSelector';
|
|
49
50
|
export * from './components/sitebuilder/config/CompoundFontSelector';
|
|
50
51
|
export * from './components/sitebuilder/config/fonts';
|
|
52
|
+
export * from './components/sitebuilder/config/google-fonts';
|
|
51
53
|
export * from './components/sitebuilder/form/formcomponents';
|
|
52
54
|
export * from './components/sitebuilder/form/formtypes';
|
|
53
55
|
export * from './components/sitebuilder/form/formutils';
|
|
@@ -79,24 +81,6 @@ export * from './components/seo/manifest';
|
|
|
79
81
|
export * from './components/seo/metadata.functions';
|
|
80
82
|
export * from './components/seo/metadata.components';
|
|
81
83
|
export * from './components/seo/sitemap';
|
|
82
|
-
export * from './components/admin/site-health/site-health-indicators';
|
|
83
|
-
export * from './components/admin/site-health/site-health-accessibility';
|
|
84
|
-
export * from './components/admin/site-health/site-health-axe-core';
|
|
85
|
-
export * from './components/admin/site-health/site-health-cache';
|
|
86
|
-
export * from './components/admin/site-health/site-health-dependency-vulnerabilities';
|
|
87
|
-
export * from './components/admin/site-health/site-health-github';
|
|
88
|
-
export * from './components/admin/site-health/site-health-google-analytics';
|
|
89
|
-
export * from './components/admin/site-health/site-health-google-search-console';
|
|
90
|
-
export * from './components/admin/site-health/site-health-on-site-seo';
|
|
91
|
-
export * from './components/admin/site-health/site-health-cloudwatch';
|
|
92
|
-
export * from './components/admin/site-health/seo-constants';
|
|
93
|
-
export * from './components/admin/site-health/site-health-overview';
|
|
94
|
-
export * from './components/admin/site-health/site-health-performance';
|
|
95
|
-
export * from './components/admin/site-health/site-health-security';
|
|
96
|
-
export * from './components/admin/site-health/site-health-seo';
|
|
97
|
-
export * from './components/admin/site-health/site-health-template';
|
|
98
|
-
export * from './components/admin/site-health/site-health-types';
|
|
99
|
-
export * from './components/admin/site-health/site-health-uptime';
|
|
100
84
|
export * from './components/shoppingcart/ebay.components';
|
|
101
85
|
export * from './components/shoppingcart/ebay.functions';
|
|
102
86
|
export * from './components/shoppingcart/paypal';
|
|
@@ -109,3 +93,5 @@ export * from './components/structured/resume';
|
|
|
109
93
|
export * from './components/structured/socialcard';
|
|
110
94
|
export * from './components/structured/timeline';
|
|
111
95
|
export * from './components/utilities/functions';
|
|
96
|
+
export * from './components/utilities/gemini-api.client';
|
|
97
|
+
export * from './components/utilities/gemini-api.server';
|
package/dist/index.server.js
CHANGED
|
@@ -2,25 +2,9 @@
|
|
|
2
2
|
// Use this entry point for Next.js server components, API routes, and build-time code
|
|
3
3
|
// Note: Client components (with JSX, CSS imports, browser APIs) are NOT exported here.
|
|
4
4
|
// Import those from the main package entry point: @pixelated-tech/components
|
|
5
|
-
|
|
6
|
-
export * from './components/admin/componentusage/componentAnalysis';
|
|
7
|
-
export * from './components/admin/deploy/deployment.integration';
|
|
8
|
-
export * from './components/admin/site-health/google-api-auth';
|
|
9
|
-
export * from './components/admin/site-health/site-health-axe-core.integration';
|
|
10
|
-
export * from './components/admin/site-health/site-health-cache';
|
|
11
|
-
export * from './components/admin/site-health/site-health-core-web-vitals.integration';
|
|
12
|
-
export * from './components/admin/site-health/site-health-github.integration';
|
|
13
|
-
export * from './components/admin/site-health/site-health-google-analytics.integration';
|
|
14
|
-
export * from './components/admin/site-health/site-health-google-search-console.integration';
|
|
15
|
-
export * from './components/admin/site-health/site-health-indicators';
|
|
16
|
-
export * from './components/admin/site-health/site-health-on-site-seo.integration';
|
|
17
|
-
export * from './components/admin/site-health/site-health-cloudwatch.integration';
|
|
18
|
-
export * from './components/admin/site-health/seo-constants';
|
|
19
|
-
export * from './components/admin/site-health/site-health-security.integration';
|
|
20
|
-
export * from './components/admin/site-health/site-health-performance';
|
|
21
|
-
export * from './components/admin/site-health/site-health-types';
|
|
22
|
-
export * from './components/admin/site-health/site-health-uptime.integration';
|
|
5
|
+
// Admin
|
|
23
6
|
export * from './components/admin/sites/sites.integration';
|
|
7
|
+
// CMS
|
|
24
8
|
export * from './components/cms/contentful.delivery';
|
|
25
9
|
export * from './components/cms/contentful.management';
|
|
26
10
|
export * from './components/cms/flickr';
|
|
@@ -28,12 +12,11 @@ export * from './components/cms/google.reviews.functions';
|
|
|
28
12
|
export * from './components/cms/gravatar.functions';
|
|
29
13
|
export * from './components/cms/instagram.functions';
|
|
30
14
|
export * from './components/cms/wordpress.functions';
|
|
15
|
+
// Config
|
|
31
16
|
export * from './components/config/config';
|
|
32
17
|
export * from './components/config/config.server';
|
|
33
18
|
export * from './components/config/config.types';
|
|
34
|
-
|
|
35
|
-
export * from './components/menu/menu-expando';
|
|
36
|
-
export * from './components/menu/menu-simple';
|
|
19
|
+
// SEO
|
|
37
20
|
export * from './components/seo/googlemap';
|
|
38
21
|
export * from './components/seo/manifest';
|
|
39
22
|
export * from './components/seo/metadata.functions';
|
|
@@ -44,22 +27,26 @@ export * from './components/seo/schema-recipe';
|
|
|
44
27
|
export * from './components/seo/schema-services';
|
|
45
28
|
export * from './components/seo/schema-website';
|
|
46
29
|
export * from './components/seo/sitemap';
|
|
30
|
+
// Shopping Cart
|
|
47
31
|
export * from './components/shoppingcart/ebay.functions';
|
|
48
|
-
|
|
32
|
+
// Sitebuilder - Config
|
|
49
33
|
export * from './components/sitebuilder/config/ConfigEngine';
|
|
50
|
-
export * from './components/sitebuilder/config/google-fonts';
|
|
51
34
|
export * from './components/sitebuilder/config/fonts';
|
|
52
|
-
export * from './components/sitebuilder/
|
|
35
|
+
export * from './components/sitebuilder/config/google-fonts';
|
|
36
|
+
// Sitebuilder - Form
|
|
53
37
|
export * from './components/sitebuilder/form/formtypes';
|
|
54
|
-
export * from './components/sitebuilder/
|
|
55
|
-
|
|
38
|
+
export * from './components/sitebuilder/form/formutils';
|
|
39
|
+
// Sitebuilder - Page
|
|
56
40
|
export * from './components/sitebuilder/page/lib/componentGeneration';
|
|
57
41
|
export * from './components/sitebuilder/page/lib/componentMap';
|
|
58
42
|
export * from './components/sitebuilder/page/lib/componentMetadata';
|
|
59
|
-
export * from './components/sitebuilder/page/lib/pageStorageLocal'; // used for local storage
|
|
60
43
|
export * from './components/sitebuilder/page/lib/pageStorageContentful';
|
|
44
|
+
export * from './components/sitebuilder/page/lib/pageStorageLocal'; // used for local storage
|
|
61
45
|
export * from './components/sitebuilder/page/lib/pageStorageTypes';
|
|
62
46
|
export * from './components/sitebuilder/page/lib/propTypeIntrospection';
|
|
63
47
|
export * from './components/sitebuilder/page/lib/types';
|
|
64
|
-
|
|
48
|
+
// Structured
|
|
65
49
|
export * from './components/structured/resume';
|
|
50
|
+
// Utilities
|
|
51
|
+
export * from './components/utilities/functions';
|
|
52
|
+
export * from './components/utilities/gemini-api.server';
|