@pixelated-tech/components 3.10.0 → 3.11.2
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-cloudwatch.js +1 -1
- package/dist/components/admin/site-health/site-health-google-analytics.js +1 -1
- package/dist/components/admin/site-health/site-health-google-search-console.js +1 -1
- package/dist/components/general/proxy-handler.js +3 -3
- package/dist/components/general/smartimage.js +5 -0
- package/dist/components/general/table.js +33 -4
- package/dist/components/shoppingcart/ebay.components.js +3 -3
- package/dist/components/shoppingcart/shipping.to.json +8 -9
- package/dist/components/shoppingcart/shoppingcart.components.js +5 -1
- package/dist/components/shoppingcart/shoppingcart.css +5 -0
- package/dist/components/shoppingcart/shoppingcart.functions.js +46 -14
- package/dist/components/sitebuilder/form/formcomponents.js +35 -3
- package/dist/components/sitebuilder/form/formemailer.js +29 -1
- package/dist/components/sitebuilder/form/formengine.js +3 -0
- package/dist/config/pixelated.config.json.enc +1 -1
- package/dist/index.adminserver.js +0 -1
- package/dist/types/components/general/smartimage.d.ts.map +1 -1
- package/dist/types/components/general/table.d.ts.map +1 -1
- package/dist/types/components/shoppingcart/shoppingcart.components.d.ts.map +1 -1
- package/dist/types/components/shoppingcart/shoppingcart.functions.d.ts +2 -2
- package/dist/types/components/shoppingcart/shoppingcart.functions.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formcomponents.d.ts +11 -0
- package/dist/types/components/sitebuilder/form/formcomponents.d.ts.map +1 -1
- package/dist/types/components/sitebuilder/form/formemailer.d.ts.map +1 -1
- package/dist/types/stories/sitebuilder/form.honeypot.stories.d.ts +20 -0
- package/dist/types/stories/sitebuilder/form.honeypot.stories.d.ts.map +1 -0
- package/dist/types/tests/formemailer.honeypot.test.d.ts +2 -0
- package/dist/types/tests/formemailer.honeypot.test.d.ts.map +1 -0
- package/dist/types/tests/formengine.honeypot.integration.test.d.ts +2 -0
- package/dist/types/tests/formengine.honeypot.integration.test.d.ts.map +1 -0
- package/dist/types/tests/formengine.method.test.d.ts +2 -0
- package/dist/types/tests/formengine.method.test.d.ts.map +1 -0
- package/dist/types/tests/shoppingcart.contract.test.d.ts +2 -0
- package/dist/types/tests/shoppingcart.contract.test.d.ts.map +1 -0
- package/dist/types/tests/shoppingcart.integration.test.d.ts +2 -0
- package/dist/types/tests/shoppingcart.integration.test.d.ts.map +1 -0
- package/dist/types/tests/shoppingcart.migration.test.d.ts +2 -0
- package/dist/types/tests/shoppingcart.migration.test.d.ts.map +1 -0
- package/package.json +16 -16
|
@@ -40,7 +40,7 @@ export function SiteHealthCloudwatch({ siteName, startDate, endDate }) {
|
|
|
40
40
|
return (_jsx("div", { children: _jsx("div", { style: { width: '100%', height: '400px', border: '1px solid #ddd' }, children: _jsx(ResponsiveContainer, { width: "100%", height: "100%", children: _jsxs(ComposedChart, { data: validData, margin: { top: 40, right: 30, left: 20, bottom: 5 }, children: [_jsx("text", { x: "50%", y: 20, textAnchor: "middle", fontSize: "16", fontWeight: "bold", fill: "#374151", children: "CloudWatch Health Check Availability Over Time" }), _jsx(CartesianGrid, { strokeDasharray: "3 3" }), _jsx(XAxis, { dataKey: "date", tick: { fontSize: 12 }, angle: -45, textAnchor: "end", height: 60 }), _jsx(YAxis, { tick: { fontSize: 12 }, label: { value: 'Check Count', angle: -90, position: 'insideLeft' } }), _jsx(Tooltip, { formatter: (value, name) => [
|
|
41
41
|
value?.toLocaleString() || '0',
|
|
42
42
|
name || 'Unknown'
|
|
43
|
-
], labelFormatter: (label) => `Date: ${label}` }), _jsx(Legend, { wrapperStyle: {
|
|
43
|
+
], labelFormatter: (label) => `Date: ${String(label)}` }), _jsx(Legend, { wrapperStyle: {
|
|
44
44
|
fontSize: '12px',
|
|
45
45
|
paddingTop: '10px'
|
|
46
46
|
} }), _jsx(Bar, { dataKey: "successCount", stackId: "checks", fill: "#10b981", name: "Successful Checks", radius: [2, 2, 0, 0] }), _jsx(Bar, { dataKey: "failureCount", stackId: "checks", fill: "#ef4444", name: "Failed Checks", radius: [2, 2, 0, 0] })] }, `cloudwatch-chart-${validData.length}`) }) }) }));
|
|
@@ -33,7 +33,7 @@ export function SiteHealthGoogleAnalytics({ siteName, startDate, endDate }) {
|
|
|
33
33
|
return (_jsx("div", { children: _jsx("div", { style: { width: '100%', height: '400px', border: '1px solid #ddd' }, children: _jsx(ResponsiveContainer, { width: "100%", height: "100%", children: _jsxs(ComposedChart, { data: validData, margin: { top: 40, right: 30, left: 20, bottom: 5 }, children: [_jsx("text", { x: "50%", y: 20, textAnchor: "middle", fontSize: "16", fontWeight: "bold", fill: "#374151", children: "Page Views (Current vs Previous Period)" }), _jsx(CartesianGrid, { strokeDasharray: "3 3" }), _jsx(XAxis, { dataKey: "date", tick: { fontSize: 12 }, angle: -45, textAnchor: "end", height: 60 }), _jsx(YAxis, { tick: { fontSize: 12 } }), _jsx(Tooltip, { formatter: (value, name) => [
|
|
34
34
|
value?.toLocaleString() || '0',
|
|
35
35
|
name || 'Unknown'
|
|
36
|
-
], labelFormatter: (label) => `Date: ${label}` }), _jsx(Legend, { wrapperStyle: {
|
|
36
|
+
], labelFormatter: (label) => `Date: ${String(label)}` }), _jsx(Legend, { wrapperStyle: {
|
|
37
37
|
fontSize: '12px',
|
|
38
38
|
paddingTop: '10px'
|
|
39
39
|
} }), _jsx(Bar, { dataKey: "currentPageViews", fill: "#3b82f6", name: "Current Period", radius: [2, 2, 0, 0] }), _jsx(Line, { type: "monotone", dataKey: "previousPageViews", stroke: "#ef4444", strokeWidth: 2, strokeDasharray: "5 5", dot: { fill: '#ef4444', strokeWidth: 2, r: 3 }, activeDot: { r: 5, stroke: '#ef4444', strokeWidth: 2 }, name: "Previous Period" })] }, `chart-${validData.length}`) }) }) }));
|
|
@@ -35,7 +35,7 @@ export function SiteHealthGoogleSearchConsole({ siteName, startDate, endDate })
|
|
|
35
35
|
return (_jsx("div", { children: _jsx("div", { style: { width: '100%', height: '400px', border: '1px solid #ddd' }, children: _jsx(ResponsiveContainer, { width: "100%", height: "100%", children: _jsxs(ComposedChart, { data: validData, margin: { top: 40, right: 30, left: 20, bottom: 5 }, children: [_jsx("text", { x: "50%", y: 20, textAnchor: "middle", fontSize: "16", fontWeight: "bold", fill: "#374151", children: "Impressions vs Clicks (Current vs Previous Period)" }), _jsx(CartesianGrid, { strokeDasharray: "3 3" }), _jsx(XAxis, { dataKey: "date", tick: { fontSize: 12 }, angle: -45, textAnchor: "end", height: 60 }), _jsx(YAxis, { tick: { fontSize: 12 } }), _jsx(Tooltip, { formatter: (value, name) => [
|
|
36
36
|
value?.toLocaleString() || '0',
|
|
37
37
|
name || 'Unknown'
|
|
38
|
-
], labelFormatter: (label) => `Date: ${label}` }), _jsx(Legend, { wrapperStyle: {
|
|
38
|
+
], labelFormatter: (label) => `Date: ${String(label)}` }), _jsx(Legend, { wrapperStyle: {
|
|
39
39
|
fontSize: '12px',
|
|
40
40
|
paddingTop: '10px'
|
|
41
41
|
} }), _jsx(Bar, { dataKey: "currentImpressions", fill: "#3b82f6", name: "Current Impressions", radius: [2, 2, 0, 0] }), _jsx(Bar, { dataKey: "currentClicks", fill: "#10b981", name: "Current Clicks", radius: [2, 2, 0, 0] }), _jsx(Line, { type: "monotone", dataKey: "previousImpressions", stroke: "#ef4444", strokeWidth: 2, strokeDasharray: "5 5", dot: { fill: '#ef4444', strokeWidth: 2, r: 3 }, activeDot: { r: 5, stroke: '#ef4444', strokeWidth: 2 }, name: "Previous Impressions" }), _jsx(Line, { type: "monotone", dataKey: "previousClicks", stroke: "#f59e0b", strokeWidth: 2, strokeDasharray: "5 5", dot: { fill: '#f59e0b', strokeWidth: 2, r: 3 }, activeDot: { r: 5, stroke: '#f59e0b', strokeWidth: 2 }, name: "Previous Clicks" })] }) }) }) }));
|
|
@@ -41,16 +41,16 @@ export function handlePixelatedProxy(req) {
|
|
|
41
41
|
response.headers.set("Permissions-Policy", "camera=(), microphone=(), geolocation=(), interest-cohort=()");
|
|
42
42
|
// Content Security Policy (CSP)
|
|
43
43
|
// Includes all discovered domains in the workspace: HubSpot, Gravatar, Flickr, Contentful, Cloudinary, eBay, and Google Analytics + Search.
|
|
44
|
-
const scriptSrc = "'self' 'unsafe-inline' 'unsafe-eval' https://va.vercel-scripts.com https://*.googletagmanager.com https://*.hs-scripts.com https://*.hs-analytics.net https://*.hsforms.net https://*.hscollectedforms.net https://*.hs-banner.com https://*.google.com https://*.doubleclick.net https://*.googleadservices.com https://*.adtrafficquality.google https://*.hsappstatic.net https://assets.calendly.com https://cdn.jsdelivr.net";
|
|
44
|
+
const scriptSrc = "'self' 'unsafe-inline' 'unsafe-eval' https://va.vercel-scripts.com https://*.googletagmanager.com https://*.hs-scripts.com https://*.hs-analytics.net https://*.hsforms.net https://*.hscollectedforms.net https://*.hs-banner.com https://*.google.com https://*.doubleclick.net https://*.googleadservices.com https://*.adtrafficquality.google https://*.hsappstatic.net https://assets.calendly.com https://cdn.jsdelivr.net https://www.paypal.com https://www.paypalobjects.com";
|
|
45
45
|
const csp = [
|
|
46
46
|
"default-src 'self'",
|
|
47
47
|
`script-src ${scriptSrc}`,
|
|
48
48
|
`script-src-elem ${scriptSrc}`,
|
|
49
49
|
"connect-src 'self' https: https://*.hubspot.com https://proxy.pixelated.tech https://sendmail.pixelated.tech https://*.google-analytics.com https://*.analytics.google.com https://cdn.jsdelivr.net",
|
|
50
50
|
"img-src 'self' data: https: https://*.gravatar.com https://*.staticflickr.com https://*.ctfassets.net https://res.cloudinary.com https://*.ebayimg.com",
|
|
51
|
-
"style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://*.google.com",
|
|
51
|
+
"style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://*.google.com https://www.paypalobjects.com",
|
|
52
52
|
"font-src 'self' data: https://fonts.gstatic.com",
|
|
53
|
-
"frame-src 'self' https://*.hubspot.com https://*.googletagmanager.com https://*.adtrafficquality.google https://*.google.com https://calendly.com https://*.calendly.com https://*.hsforms.net",
|
|
53
|
+
"frame-src 'self' https://*.hubspot.com https://*.googletagmanager.com https://*.adtrafficquality.google https://*.google.com https://calendly.com https://*.calendly.com https://*.hsforms.net https://www.paypal.com https://www.paypalobjects.com",
|
|
54
54
|
"frame-ancestors 'none'",
|
|
55
55
|
"object-src 'none'",
|
|
56
56
|
].join("; ");
|
|
@@ -109,6 +109,11 @@ export function SmartImage(props) {
|
|
|
109
109
|
newProps.name = newProps.name || newProps.id || sanitizeString(newProps.title) || sanitizeString(newProps.alt) || sanitizeString(imageName);
|
|
110
110
|
newProps.title = newProps.title || newProps.alt || sanitizeString(imageName);
|
|
111
111
|
newProps.src = String(newProps.src);
|
|
112
|
+
// Normalize protocol-relative URLs ("//domain/...") to absolute https:// URLs so Next.js Image can accept them.
|
|
113
|
+
// Keep other forms (relative paths, data URIs, http/https) unchanged.
|
|
114
|
+
if (/^\/\//.test(newProps.src)) {
|
|
115
|
+
newProps.src = `https:${newProps.src}`;
|
|
116
|
+
}
|
|
112
117
|
/* ===== CLOUDINARY VARIANT ===== */
|
|
113
118
|
if (variant === 'cloudinary' && newProps.cloudinaryEnv) {
|
|
114
119
|
newProps.src = buildCloudinaryUrl({
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useState } from 'react';
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { SmartImage } from './smartimage';
|
|
5
5
|
import './table.css';
|
|
6
|
+
const debug = false;
|
|
6
7
|
function isImageURL(url) {
|
|
7
8
|
const isImage = /\.(jpeg|jpg|gif|png|webp|svg|bmp)$/i.test(url);
|
|
8
9
|
const isURL = () => { try {
|
|
@@ -37,9 +38,37 @@ export function Table(props) {
|
|
|
37
38
|
});
|
|
38
39
|
}
|
|
39
40
|
function getCells(obj) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
// Use entries so we have access to the column key when rendering nested tables
|
|
42
|
+
return Object.entries(obj).map(([key, value], i) => {
|
|
43
|
+
// Defensive rendering: handle React nodes, images, arrays, and objects gracefully
|
|
44
|
+
const myValue = (() => {
|
|
45
|
+
// If it's already a React element, render it directly
|
|
46
|
+
if (React.isValidElement(value))
|
|
47
|
+
return value;
|
|
48
|
+
if (isImageURL(value))
|
|
49
|
+
return _jsx(SmartImage, { src: value, title: String(value), alt: String(value) });
|
|
50
|
+
if (value === null || value === undefined)
|
|
51
|
+
return '';
|
|
52
|
+
if (Array.isArray(value))
|
|
53
|
+
return value.join(', ');
|
|
54
|
+
if (typeof value === 'object') {
|
|
55
|
+
// Render nested table for object cells (no sortable or altRowColor props)
|
|
56
|
+
try {
|
|
57
|
+
// Convert the object to an array of name-value objects
|
|
58
|
+
const nameValueArray = Object.entries(value).map(([key, value]) => {
|
|
59
|
+
return { name: key, value: value };
|
|
60
|
+
});
|
|
61
|
+
// return <Table data={[nameValueArray]} id={key} />;
|
|
62
|
+
return JSON.stringify(value, null, 2);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
// Fallback: stringify if something goes wrong
|
|
66
|
+
return JSON.stringify(value, null, 2);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return value;
|
|
70
|
+
})();
|
|
71
|
+
return _jsx("td", { "data-testid": `cell-${i}`, children: myValue }, i);
|
|
43
72
|
});
|
|
44
73
|
}
|
|
45
74
|
/* ========== SORT FUNCTIONS ========== */
|
|
@@ -8,7 +8,7 @@ import { getEbayItems, getEbayItem, getShoppingCartItem, getEbayRateLimits, getE
|
|
|
8
8
|
import { addToShoppingCart } from "./shoppingcart.functions";
|
|
9
9
|
import { AddToCartButton, /* GoToCartButton */ ViewItemDetails } from "./shoppingcart.components";
|
|
10
10
|
import { getCloudinaryRemoteFetchURL as getImg } from "../integrations/cloudinary";
|
|
11
|
-
import { ToggleLoading } from "../general/loading";
|
|
11
|
+
import { Loading, ToggleLoading } from "../general/loading";
|
|
12
12
|
import { usePixelatedConfig } from "../config/config.client";
|
|
13
13
|
import "../../css/pixelated.grid.scss";
|
|
14
14
|
import "./ebay.css";
|
|
@@ -74,10 +74,10 @@ export function EbayItems(props) {
|
|
|
74
74
|
ToggleLoading(false);
|
|
75
75
|
}, []);
|
|
76
76
|
if (items && items.length > 0) {
|
|
77
|
-
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "ebayItemsHeader", children: _jsx(EbayItemHeader, { title: `${items.length} Store Items` }) }), _jsx("div", { className: "ebayItemsHeader", children: _jsx(EbayListFilter, { aspects: aspects, callback: fetchItems }) }), _jsx("div", { id: "ebayItems", className: "ebayItems", children: paintItems({ items: items, cloudinaryProductEnv: props.cloudinaryProductEnv }) })] }));
|
|
77
|
+
return (_jsxs(_Fragment, { children: [_jsx(Loading, {}), _jsx("div", { className: "ebayItemsHeader", children: _jsx(EbayItemHeader, { title: `${items.length} Store Items` }) }), _jsx("div", { className: "ebayItemsHeader", children: _jsx(EbayListFilter, { aspects: aspects, callback: fetchItems }) }), _jsx("div", { id: "ebayItems", className: "ebayItems", children: paintItems({ items: items, cloudinaryProductEnv: props.cloudinaryProductEnv }) })] }));
|
|
78
78
|
}
|
|
79
79
|
else {
|
|
80
|
-
return (_jsx("div", { className: "section-container", children: _jsx("div", { id: "ebayItems", className: "ebayItems" }) }));
|
|
80
|
+
return (_jsx("div", { className: "section-container", children: _jsx("div", { id: "ebayItems", className: "ebayItems", children: _jsx(Loading, {}) }) }));
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
EbayListFilter.propTypes = {
|
|
@@ -397,17 +397,16 @@
|
|
|
397
397
|
"name" : "shippingMethod",
|
|
398
398
|
"label" : "Shipping Method : ",
|
|
399
399
|
"display" : "vertical",
|
|
400
|
-
"required": true,
|
|
401
|
-
"validate" : "isOneRadioSelected",
|
|
402
400
|
"tooltip" : "Please select your Shipping Method",
|
|
403
401
|
"options" : [
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
{ "value" : "USPS-PM-I", "text" : "USPS Priority Mail International ( 6 - 10 days ) $39.99"
|
|
409
|
-
{ "value" : "USPS-PMX-I", "text" : "USPS Priority Mail Express International ( 3 - 5 days ) $69.99"
|
|
410
|
-
]
|
|
402
|
+
{ "value" : "USPS-GA", "text" : "USPS Ground Advantage ( 2 - 5 days ) $9.99" },
|
|
403
|
+
{ "value" : "USPS-PM", "text" : "USPS Priority Mail ( 2 - 3 days ) $14.99" },
|
|
404
|
+
{ "value" : "USPS-PMX", "text" : "USPS Priority Mail Express ( 1 - 3 days ) $39.99" },
|
|
405
|
+
{ "value" : "USPS-FCP-I", "text" : "USPS First Class Package International ( Varies ) $24.99" },
|
|
406
|
+
{ "value" : "USPS-PM-I", "text" : "USPS Priority Mail International ( 6 - 10 days ) $39.99" },
|
|
407
|
+
{ "value" : "USPS-PMX-I", "text" : "USPS Priority Mail Express International ( 3 - 5 days ) $69.99" }
|
|
408
|
+
],
|
|
409
|
+
"checked": "USPS-GA"
|
|
411
410
|
}
|
|
412
411
|
},
|
|
413
412
|
{
|
|
@@ -207,11 +207,15 @@ CheckoutItems.propTypes = {
|
|
|
207
207
|
};
|
|
208
208
|
export function CheckoutItems(props) {
|
|
209
209
|
const { items, shippingTo, subtotal_discount, subtotal, shippingCost, handlingFee, salesTax, total } = props;
|
|
210
|
+
const cartItems = (_jsx("ul", { children: items.map((item) => {
|
|
211
|
+
const itm = item;
|
|
212
|
+
return _jsxs("li", { children: [itm.itemQuantity, " X - ", itm.itemTitle, " ( ", formatAsUSD(itm.itemCost), " )"] }, itm.itemID);
|
|
213
|
+
}) }));
|
|
210
214
|
const to = shippingTo;
|
|
211
215
|
const addr = _jsxs(_Fragment, { children: [_jsx("div", { children: to.name }), _jsx("div", { children: to.street1 }), _jsxs("div", { children: [to.city, ", ", to.state, " ", to.zip] })] });
|
|
212
216
|
let checkoutTableData = [{
|
|
213
217
|
"Name": "Shopping Cart Items : ",
|
|
214
|
-
"Value":
|
|
218
|
+
"Value": cartItems,
|
|
215
219
|
}, {
|
|
216
220
|
"Name": "Subtotal Discount : ",
|
|
217
221
|
"Value": formatAsUSD(subtotal_discount),
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { getContentfulDiscountCodes } from "../integrations/contentful.delivery";
|
|
2
|
+
import { CacheManager } from "../general/cache-manager";
|
|
3
|
+
// Migration-time verbose tracing per user request — remove after verification
|
|
2
4
|
const debug = false;
|
|
5
|
+
// Use CacheManager but preserve existing localStorage keys by using empty prefix
|
|
6
|
+
const cartCache = new CacheManager({ mode: 'local', prefix: '' });
|
|
3
7
|
/* ========== LOCALSTORAGE KEYS ========== */
|
|
4
8
|
export const shoppingCartKey = "pixelvividCart";
|
|
5
9
|
export const shippingInfoKey = "pixelvividCartShipping";
|
|
@@ -72,11 +76,21 @@ export function formatAsHundredths(num) {
|
|
|
72
76
|
return Math.trunc(num * 100) / 100;
|
|
73
77
|
}
|
|
74
78
|
export function getCart() {
|
|
75
|
-
|
|
76
|
-
|
|
79
|
+
if (debug)
|
|
80
|
+
console.debug('ShoppingCart:getCart -> using CacheManager.get', shoppingCartKey);
|
|
81
|
+
// Use CacheManager as the single source-of-truth. Legacy raw-localStorage fallbacks
|
|
82
|
+
// were removed after migration completed — callers should use CacheManager APIs.
|
|
83
|
+
const cached = cartCache.get(shoppingCartKey);
|
|
84
|
+
if (cached)
|
|
85
|
+
return cached;
|
|
86
|
+
// No cart found -> empty
|
|
87
|
+
return [];
|
|
77
88
|
}
|
|
78
89
|
export function setCart(shoppingCartJSON) {
|
|
79
|
-
|
|
90
|
+
if (debug)
|
|
91
|
+
console.debug('ShoppingCart:setCart -> using CacheManager.set', shoppingCartKey, shoppingCartJSON);
|
|
92
|
+
cartCache.set(shoppingCartKey, shoppingCartJSON);
|
|
93
|
+
// preserve observable contract (storage event) for listeners
|
|
80
94
|
window.dispatchEvent(new Event('storage'));
|
|
81
95
|
}
|
|
82
96
|
export function alreadyInCart(cart, itemID) {
|
|
@@ -150,7 +164,9 @@ export function addToShoppingCart(thisItem) {
|
|
|
150
164
|
cartItem.itemQuantity = 1;
|
|
151
165
|
cart.push(cartItem);
|
|
152
166
|
}
|
|
153
|
-
|
|
167
|
+
if (debug)
|
|
168
|
+
console.debug('ShoppingCart:persisting cart -> CacheManager.set', shoppingCartKey, cart);
|
|
169
|
+
cartCache.set(shoppingCartKey, cart);
|
|
154
170
|
window.dispatchEvent(new Event('storage'));
|
|
155
171
|
}
|
|
156
172
|
export function removeFromShoppingCart(thisItem) {
|
|
@@ -158,21 +174,32 @@ export function removeFromShoppingCart(thisItem) {
|
|
|
158
174
|
if (alreadyInCart(cart, thisItem.itemID)) {
|
|
159
175
|
cart.splice(getIndexInCart(cart, thisItem.itemID), 1);
|
|
160
176
|
}
|
|
161
|
-
|
|
177
|
+
if (debug)
|
|
178
|
+
console.debug('ShoppingCart:removeFromShoppingCart -> persisting cart via CacheManager', shoppingCartKey, cart);
|
|
179
|
+
cartCache.set(shoppingCartKey, cart);
|
|
162
180
|
window.dispatchEvent(new Event('storage'));
|
|
163
181
|
}
|
|
164
182
|
export function clearShoppingCart() {
|
|
165
|
-
|
|
166
|
-
|
|
183
|
+
if (debug)
|
|
184
|
+
console.debug('ShoppingCart:clearShoppingCart -> removing keys via CacheManager');
|
|
185
|
+
cartCache.remove(shoppingCartKey);
|
|
186
|
+
cartCache.remove(shippingInfoKey);
|
|
167
187
|
window.dispatchEvent(new Event('storage'));
|
|
168
188
|
}
|
|
169
189
|
/* ========== SHIPPING INFO FUNCTIONS ========== */
|
|
170
190
|
export function getShippingInfo() {
|
|
171
|
-
|
|
172
|
-
|
|
191
|
+
if (debug)
|
|
192
|
+
console.debug('ShoppingCart:getShippingInfo -> using CacheManager.get', shippingInfoKey);
|
|
193
|
+
const cached = cartCache.get(shippingInfoKey);
|
|
194
|
+
if (cached)
|
|
195
|
+
return cached;
|
|
196
|
+
// Migration complete — don't read raw localStorage directly. Return empty when no data.
|
|
197
|
+
return [];
|
|
173
198
|
}
|
|
174
199
|
export function setShippingInfo(shippingFormData) {
|
|
175
|
-
|
|
200
|
+
if (debug)
|
|
201
|
+
console.debug('ShoppingCart:setShippingInfo -> using CacheManager.set', shippingInfoKey, shippingFormData);
|
|
202
|
+
cartCache.set(shippingInfoKey, shippingFormData);
|
|
176
203
|
window.dispatchEvent(new Event('storage'));
|
|
177
204
|
}
|
|
178
205
|
export function getShippingCost() {
|
|
@@ -231,13 +258,18 @@ export async function getRemoteDiscountCodes() {
|
|
|
231
258
|
;
|
|
232
259
|
}
|
|
233
260
|
export function getLocalDiscountCodes() {
|
|
234
|
-
|
|
235
|
-
|
|
261
|
+
if (debug)
|
|
262
|
+
console.debug('ShoppingCart:getLocalDiscountCodes -> using CacheManager.get', discountCodesKey);
|
|
263
|
+
const cached = cartCache.get(discountCodesKey);
|
|
264
|
+
if (cached)
|
|
265
|
+
return cached;
|
|
266
|
+
// Do not read raw localStorage directly after migration — return empty when absent.
|
|
267
|
+
return [];
|
|
236
268
|
}
|
|
237
269
|
export function setDiscountCodes(discountCodesJSON) {
|
|
238
270
|
if (debug)
|
|
239
|
-
console.
|
|
240
|
-
|
|
271
|
+
console.debug("ShoppingCart:setDiscountCodes -> using CacheManager.set", discountCodesKey, discountCodesJSON);
|
|
272
|
+
cartCache.set(discountCodesKey, discountCodesJSON);
|
|
241
273
|
window.dispatchEvent(new Event('storage'));
|
|
242
274
|
}
|
|
243
275
|
export function getDiscountCode(codeString) {
|
|
@@ -158,7 +158,10 @@ FormInput.propTypes = {
|
|
|
158
158
|
maxLength: PropTypes.string,
|
|
159
159
|
placeholder: PropTypes.string,
|
|
160
160
|
autoComplete: PropTypes.string,
|
|
161
|
+
tabIndex: PropTypes.number,
|
|
162
|
+
style: PropTypes.object,
|
|
161
163
|
"aria-label": PropTypes.string,
|
|
164
|
+
"aria-hidden": PropTypes.string,
|
|
162
165
|
min: PropTypes.string,
|
|
163
166
|
max: PropTypes.string,
|
|
164
167
|
step: PropTypes.string,
|
|
@@ -292,13 +295,17 @@ FormRadioOption.propTypes = {
|
|
|
292
295
|
};
|
|
293
296
|
function FormRadioOption(props) {
|
|
294
297
|
const inputProps = setupInputProps(props);
|
|
295
|
-
|
|
298
|
+
// Determine whether parent supplied a controlled contract (value + updater)
|
|
299
|
+
const parentHasOnChange = Boolean(props.parent && typeof props.parent.onChange === 'function');
|
|
300
|
+
const isChecked = props.parent && props.parent.checked === props.value;
|
|
296
301
|
const handleChange = (e) => {
|
|
297
|
-
if (props.parent.onChange) {
|
|
302
|
+
if (props.parent && typeof props.parent.onChange === 'function') {
|
|
298
303
|
props.parent.onChange(props.value);
|
|
299
304
|
}
|
|
300
305
|
};
|
|
301
|
-
|
|
306
|
+
// If there is no parent onChange (no updater), render uncontrolled via defaultChecked
|
|
307
|
+
const controlProps = parentHasOnChange ? { checked: isChecked } : { defaultChecked: isChecked };
|
|
308
|
+
return (_jsxs("span", { className: props.parent && props.parent.display == "vertical" ? "displayVertical" : "", children: [_jsx("input", { type: "radio", id: `${props.parent?.name}-${props.value}`, name: props.parent?.name, value: props.value, ...controlProps, onChange: handleChange, required: !!(props.parent && props.parent.required), ...inputProps }), _jsx("label", { htmlFor: `${props.parent?.name}-${props.value}`, children: props.text })] }));
|
|
302
309
|
}
|
|
303
310
|
FormCheckbox.propTypes = {
|
|
304
311
|
id: PropTypes.string.isRequired,
|
|
@@ -462,5 +469,30 @@ FormFieldset.propTypes = {};
|
|
|
462
469
|
export function FormFieldset(props) {
|
|
463
470
|
return (_jsx(_Fragment, {}));
|
|
464
471
|
}
|
|
472
|
+
/*
|
|
473
|
+
FormHoneypot — MVP
|
|
474
|
+
- id: "winnie" (canonical)
|
|
475
|
+
- default name: "website"
|
|
476
|
+
- inline off-screen styling: { position: 'absolute', top: '-9999px' }
|
|
477
|
+
- aria-hidden + tabIndex -1 + autocomplete="off"
|
|
478
|
+
- no label / no validation / no required
|
|
479
|
+
*/
|
|
480
|
+
FormHoneypot.propTypes = {
|
|
481
|
+
id: PropTypes.string.isRequired,
|
|
482
|
+
name: PropTypes.string,
|
|
483
|
+
};
|
|
484
|
+
export function FormHoneypot({ id = "winnie", name }) {
|
|
485
|
+
const hpProps = {
|
|
486
|
+
type: 'text',
|
|
487
|
+
id: "winnie",
|
|
488
|
+
name: name || 'website',
|
|
489
|
+
defaultValue: null,
|
|
490
|
+
autoComplete: 'off',
|
|
491
|
+
'aria-hidden': 'true',
|
|
492
|
+
tabIndex: -1,
|
|
493
|
+
style: { position: 'absolute', top: '-9999px' },
|
|
494
|
+
};
|
|
495
|
+
return (_jsx(FormInput, { ...hpProps }));
|
|
496
|
+
}
|
|
465
497
|
// Re-export FontSelector for use in forms
|
|
466
498
|
export { FontSelector, CompoundFontSelector };
|
|
@@ -7,16 +7,35 @@ subject: ""
|
|
|
7
7
|
}
|
|
8
8
|
*/
|
|
9
9
|
export async function emailFormData(e, callback) {
|
|
10
|
+
const debug = false;
|
|
10
11
|
// const sendmail_api = "https://nlbqdrixmj.execute-api.us-east-2.amazonaws.com/default/sendmail";
|
|
11
12
|
const sendmail_api = "https://sendmail.pixelated.tech/default/sendmail";
|
|
12
13
|
const target = e.target;
|
|
13
14
|
const myform = document.getElementById(target.id);
|
|
14
|
-
e.preventDefault();
|
|
15
|
+
e.preventDefault?.();
|
|
15
16
|
const myFormData = {};
|
|
16
17
|
const formData = new FormData(myform);
|
|
17
18
|
for (const [key, value] of formData.entries()) {
|
|
18
19
|
myFormData[key] = value;
|
|
19
20
|
}
|
|
21
|
+
const hpField = myform?.elements.namedItem('winnie');
|
|
22
|
+
const hpFieldVal = hpField?.value.toString();
|
|
23
|
+
// If either DOM or FormData indicate a filled honeypot, silently drop the submission.
|
|
24
|
+
if ((hpField && hpFieldVal.trim())) {
|
|
25
|
+
// Prevent native navigation where possible and mirror success path.
|
|
26
|
+
try {
|
|
27
|
+
e?.preventDefault?.();
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
if (debug)
|
|
31
|
+
console.debug('preventDefault failed in honeypot guard', err);
|
|
32
|
+
}
|
|
33
|
+
if (debug)
|
|
34
|
+
console.info('honeypot triggered — dropping submit');
|
|
35
|
+
// Ensure callback is invoked so calling code shows the same UX as a normal submit
|
|
36
|
+
callback(e);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
20
39
|
myFormData.Date = new Date().toLocaleDateString();
|
|
21
40
|
myFormData.Status = "Submitted";
|
|
22
41
|
await fetch(sendmail_api, {
|
|
@@ -34,6 +53,8 @@ export async function emailFormData(e, callback) {
|
|
|
34
53
|
}
|
|
35
54
|
return response.json();
|
|
36
55
|
});
|
|
56
|
+
if (debug)
|
|
57
|
+
console.debug('emailFormData — submission data:', myFormData);
|
|
37
58
|
callback(e);
|
|
38
59
|
}
|
|
39
60
|
export async function emailJSON(jsonData, callback) {
|
|
@@ -43,6 +64,13 @@ export async function emailJSON(jsonData, callback) {
|
|
|
43
64
|
for (const [key, value] of Object.entries(jsonData)) {
|
|
44
65
|
myJsonData[key] = value;
|
|
45
66
|
}
|
|
67
|
+
// MVP honeypot guard: check both the canonical id/key 'winnie' and the
|
|
68
|
+
// FormHoneypot default name 'website' to cover both DOM- and JSON-based calls.
|
|
69
|
+
if (myJsonData['winnie'] || myJsonData['website']) {
|
|
70
|
+
if (callback)
|
|
71
|
+
callback();
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
46
74
|
myJsonData.Date = new Date().toLocaleDateString();
|
|
47
75
|
myJsonData.Status = "Submitted";
|
|
48
76
|
await fetch(sendmail_api, {
|
|
@@ -26,6 +26,9 @@ function FormEngineInner(props) {
|
|
|
26
26
|
console.log("Generating Form Props");
|
|
27
27
|
// Create a clean copy without non-serializable properties
|
|
28
28
|
const { formData, onSubmitHandler, ...formProps } = props;
|
|
29
|
+
// Safety: default to POST to avoid accidental GET navigation (prevents query leakage)
|
|
30
|
+
if (!formProps.method)
|
|
31
|
+
formProps.method = 'post';
|
|
29
32
|
return formProps;
|
|
30
33
|
}
|
|
31
34
|
generateNewFields.propTypes = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
pxl:v1:
|
|
1
|
+
pxl:v1:9b93a0054684e42a36e1bf4c:4349f4740c87bf559c74977e3384cc2a:76c5d9a21ff4b084598fe6b4b3a16e882e1791a7684ce0d84c779c1618f3e58b4e313e92ebf9a65343d9d3d6742fdbe39235b350ad2dec57fc4d40e61f763b383e156f194f2e9d4c0722c0888dcc1d72243993f6967bef84e373d6872ba68def35a13bf92be5dea221982ef82d6bb629dd9620bd5fa7021e1947f73e4c781918107eec08cf57c8245ec08f9dcfedf41d7caca6f17e58c51d529b86a2b443e7c75a606c90bff2ae26bc5311741f531b6c02335d65c41b94458c0379470ead213b99569fe8e37d8e390c392792901e1e092e1ccbad533b636f0e0ec22c78856c404f487a85205f1506d7fafc651dd0cf5cb5916a8bd9f245dbf24d4b830beb6788c8d3ac50e547138bed3f814cc7200d6a625af83c7b1cd809d0f586376dd8c324ca702bc7f9c63f6552d7e122d3d0d3fb3b3fa09c222b65079882a3b6ec4e3678c152d98ffbe0d2808c5124c63ed86d64ecfc01a443c7401d28585a0a4344909758ae34f32ca9a773e19706517b3116dd66a70da629cc577cc7d82b268846c6e1afdb4a6e93ed6157345a15508dd15cfab86adc6effb40136b0d427410d25d2e44e477d35b19f599ac247f6e774ed6c5686092a7529b8901e1b925d9302219bed92a395a22090887e333e785ed66be1b5472cd8f673b7aa383be6385d1c8112c49ea85f0829969a11a59d6e52403a8b83e189f64409ca408ee045a9e6f9a6a9b83c69d108b8e6f93fbd417ac80ee8fab2b08183c93582871f155623c0adcd0711df3e8d52b195deeb7581ac4e12be304a1accee35ef8b1ffb32f460b2afba7ff5193b009ed1172c08d111e9ca6d6b7532a5c40ac8dd2316ec7dd4a82ed90837afbc96e6289cf442d9b14ac2183c4aded31bb88adfdc7935289493806e21566abf26f96e82ab633e70ae88b0fbf263d16e2bb97dcf85b7d1ea4254c3037bbbe006060ff415f5021bbd18c94379b7de8346aa91b962637fe2c783a2b314d6b729149be633b1f6ce3b3bc652b86fba4064bda7ec00d32c686fe85cc8552004b409dbfce9bcd266ca7e05d00b93f8c6b6bd9d7fb8c2ed68ecf986d1493528d5f92830c20c813a597342ac630c15830c0e7d786c92351492d11fd86340840c58ecd8086306a46ef4404e5b3bdb1d873395b8d12fe043dac7808b023b9b1109ba3c5a5d78193558f1cff977d2b8ea422818114c52722b1e838dbaa43052ddb7104a5d653142ccec4be43db7b2eb450e25c70a37ae0f7ccccc085f85e698ba60787204ec9f9e26cd6d8bd6e40d2cff06c7b42e3b9449d283e9d55e4954e2a8957fddd59b26338882fcd1126300d073c0cf93a99861fd23dff6ad5c5ed536ca8a9682a2e63bd89c8daf4b8dd9936e3fe2493b05db57e6cd92bcafc9c11343ef1475871f5f57cfedc9bde6a21d06f5113b25c68f5ae85da0cb1010cfd85fad9cea3ee9334c7351b2b8fd71c0a60021284a1b8acbe8c1212755c85dd872ad614618f97e28b6513c9cf0ce670a83ce4107ce20d74152c303b2fb27bddf22baf522832da674dfdfb154269a694cac7cbdc1ade1d924915575ab0613d6aeecd638993f8a9fadfa77e62db0f0caace4c5342849ccff72df1f19700892bb86da51f9ecb02fcce2105802bdf1a22c0c5ef7aace31f19c8ac9472be539f4465827984624a945738879d1edb862cd6be7619128ccf3275c6bcbde10aa85c59376cf1712b2f8ad9942223cf436849918b4e591cb77a18fa0b9c93264d8a621163d15b703d10cd80cd397091fc7b63f3ec12b2c2c88f7dff0a06f8c62c90748c85ac8055e2f412021c3fd991d2a7a4f0f39f90ccb850a55929845983c196b9eb7dea2552beca53eaf87e9a3cf194d70c320143baca93190ef55bdd43894a743f55cd8ee425709e69debff9cb3f5cf48a3431b6aa181e86b081b6c2c7764526f469fc324ddd820db8f874e56dd07bb5c3a06a5285f5983515ea367f405a7f1af09296a43444966d2c94fe554edc2e9afb0d7af1fd08958a3c8ce048afe83e158ec84ce8af8dad0649e1822d1531e75d605bcfad8da2f43b2ebde683d3283ade22e8c7dcc0d4653ff0f8ffd9c5f51887e147270471a15ef036a5bd1725e79b26f2f3905d42b45f422df7f37a99b86df1c6b9c680820d3d9211074b8b1f6ec71c44e272ec082a16a14ef47562b83849998587e5e1623770ff534897a56433d760b96d5ad936028a05f2199981e5a28ee38fce5f24e6a75fc956f485249fff260effaf6866b7ab5a9aef284352da444e87e68aa7f1e4964ecd4ec9572c7b7bdde3afc692e003f519dc1c6d7cee76ec2a113ea87e45b1025a102b65b1e4a874411f4f33c1facb1452fef8da2cce7b4b3074076b3c6ad33f07289e932a5652daa3514b983bf3dc57cbf4da25e53f66db56d8dc70e0660563fb8d427b978b7c3031cea35b6a4c57c51b81a36ab58d2a4b4743c016503eeefbc5df595484e17a2132729a0479c03bdb2d78531de988f1cd3caf532f73ed1a19050ea2c986b1ae8c1c3b9ebbd42d0a20c8ee107f891bcd4a51fdc912336f161dfb7c4528da8a0cc8c9dcd54f6ad856c5107bfe9e343df72a17bdc3bf62869eaf64c9699f16afe8a2b70b8f20a750a434c26f4db07c519cfc6ee003635d83790bfaef377d2b5a5e3337f5a302ff2aac19b04ff089fcfd0da6ee9123295ea7d97a4a89ded9d9d4b2a6a32633c64f93d46226b1c11a4ef4d4826f9b31596120d43174ca7bcd83cec94607b7e3c06acff1c1b5a08de0f7bf7de4c250ed5dbad94f1d6ac6bb456282d14e194b5467837c011c8bbd23d8db2b9e286309d831eadf829642355040fad9a81b02cd6b30fe7852a7095359b69d6cf91331577f7f673a73104a09c8bef95b72421556a324d7631d1b73997ba88d33d5c01669d7cf042b91ebb69be0283604dd4b9056cd9360c3a6dac5d9b49a7650c2aced38f8bf397b1bcf401a4dc6b16c5eddfe05c162136006e451b910aacc1f3298f8cf829bb9265289a16045ea1d8553cfa90ce3b02c0fa6f6cbc43a46a071c74e3c5d19caf4ee5f4377e09212536a79584046893b7df5aa678481cc1369516e71604c272337cb89b3f4e42ab321abcb9337da176f90346f06ff34a19377688ac337ea84e4b736b3c69e26270dc52df45d31e102d60a47c25180fdf4759bd5fbf341db9dfb3799bc4cdf5a64c9249dbd46aad212b64baf9a86ae83774afd995be9ca67c281f1fa9be8faee6594b4be68917069b39170f6b9fe500ccf362f12aa5623503bb8703969bff093450fc56ee9fd81b39fa0809f15fcdc1de3b3f1d498c88979b46f797a9c5190bb43a48a9a55c799d053a770ee6d284ca5dbc30bfc8ed43e6a7db9cecce3c8e2262a910d94a5fc3d9ab175dc30d9416a7e067e71371dd060484ff1271d77553091cebc41770959de3e8007aa1311705e9b6efb202d26b500363bb5968a283c1c9e8db5d622fbe46c0e59c2a12f1e0fce1f8f9bc042c92cfa357204bb7e6b40a5ceacdf8e67fc7dcaf44c315343b61e943bdc2d64f2fb4ff2908b45ba47a538dc0a58b35db969c718c2056c59d920c8a177ec75f9004ce34bc066085774c8ebb591621fd8bc77e008c652843ada84675320dfcefffe9c2b4ba65ca710fd73aa54c825615ced42421778303f50775a478c8c247e963d41129dca9b300a7ee205f20724635a58b7912bb94c8200383cd1beeefd843705d696cc514c104371e6c6df9c10f008d37b849626e37e1f633b10a183722d56142c6c00f1c19a14583250bcc6b1f1b16b5b71ef0da418618ccd9d2a2491936ce8ef72cec3d9307cd7331ad458f5d776a4d3159afdc130674d3a290e7a30f459ded0d55bcd73a96d7d13ddb02fa670e13be0b3aa66177f569f9aed094dfa43b91b3e295127b2eff71aeaffd970d7c234bd2d345620ace82714f90eeb075ae1c5f97805591d42754d0b3ad8ff5c328e1350042e047f473abba89b5418df34641e4e4c1004f54c1c9496eb5dfd058f3b1f2f093b1c5af854b9c6a1af652b72a806dd0babe25c1008b3507a4c894b4cc73d900b18a4ba6ee480d72bbf6bf0a9f9e9605ef810659fa05d03f2730715512b23e026300575bdb3f866484914526d382aed34e69b7b8bf8d1c5b347078183ca58d332e2953977232caf4f819b1fcb4fa1d26f95c97d656541516581bcd52ac32f950c5721a12b5d7e56f64f2280712935bf42656671ed7422cae379783ec8f1101370f33848eecac624b11a761a3a9e224d89b0c59c64742e9bb29af7712692f5d8c9209187c5ea450f232852128c4ccfcb1769df4030b5355245f936605bff1a79b4155d7dd1cd9903d4740edd8a29f070f1d58a8fe8706e71a863dfeb0e268112fdb6df0f105adbb037a5c09a4e1b9ec6df09e2bd06323e99a78dcc4e3e5e16a81e9a989fd752fb649004c89c51175233210518e9eefb8e66427cd42a91b995b35fd70c40f44516154bbe104ea5cc75b2a394f09e0a38155e270828079da80edfbd78cc69cee894063524eff9f920100f5dbe68cde22aa07378824367b3e96af78549c11a992c6f6b902d65b96904fe502d7eadfbb14041215596f214b8c9c5278491401741a1e08691438e121a4dc654444358803f7cc24f71cc108c8b35d44002be7e31d5e6c971dac20035db116dcbb30a525d8006cc8128b8acd8288eb0f4b83b4b8f6863aa8f9e6046e5ad4b7d2d06f7b2f72df2b8931484bad852a4421399c25df3ad77e29be34094de4ecf8e1ad44fb87cb11a04344a96289a4031a6608fa38e735f2d847066be89ee18603f415b450ff64b9308ae4bd1cec7b1736fd2cf8cd2114a2794e89358a6720599c7661f35285b54f35e69f5e09b3994543febb588b5ea700f4f24026c719a71408e4202950aedab90bc3c73d767658e8fa710f682e73eecb3e976a7960acfcf207e4d0901ba7f8df5a1a5814d52a775daac952ebe04930ce7d00e8c4f3e84f9d723b434a6a94a4a7c0a7d63902ec9d2b866c4e1e8914bd30ddfc0bb54c7e0d752679f33764674001a777a97a7bd23c6d16944d0be4f30bd1f3139ad5b90c1e8d85f4350df83471ee8d706473b3ff82d44b283334eae7166265f3b210e2d6e4cc171669b056097ff5d378a238ad1ed9d453a98b981ba20ddcb3dc02e51f139fd3eeee2514ee23f37a70f9aa9abd15
|
|
@@ -9,7 +9,6 @@ export * from './components/admin/site-health/site-health-cloudwatch.integration
|
|
|
9
9
|
export * from './components/admin/site-health/site-health-core-web-vitals.integration';
|
|
10
10
|
export * from './components/admin/site-health/site-health-github.integration';
|
|
11
11
|
export * from './components/admin/site-health/site-health-google-analytics.integration';
|
|
12
|
-
// Re-export CacheManager for server/admin consumers (migration: RouteCache → CacheManager)
|
|
13
12
|
export * from './components/general/cache-manager';
|
|
14
13
|
export * from './components/admin/site-health/site-health-google-search-console.integration';
|
|
15
14
|
export * from './components/admin/site-health/site-health-indicators';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartimage.d.ts","sourceRoot":"","sources":["../../../../src/components/general/smartimage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA4EnD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AACjH,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"smartimage.d.ts","sourceRoot":"","sources":["../../../../src/components/general/smartimage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA4EnD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AACjH,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,2CA2I/C;yBA3Ie,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/components/general/table.tsx"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/components/general/table.tsx"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,aAAa,CAAC;AAgBrB,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC;AAC3D,wBAAgB,KAAK,CAAE,KAAK,EAAE,SAAS,2CA6HtC;yBA7He,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shoppingcart.components.d.ts","sourceRoot":"","sources":["../../../../src/components/shoppingcart/shoppingcart.components.tsx"],"names":[],"mappings":"AAIA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMnD,OAAO,8BAA8B,CAAC;AAStC,OAAO,oBAAoB,CAAC;AAa5B,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;AACzE,wBAAgB,YAAY,CAAE,KAAK,EAAE,gBAAgB,2CA2LpD;yBA3Le,YAAY;;;;;AAwM5B,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,2CAmD3D;yBAnDe,gBAAgB;;;;;;;;;;;;AA8EhC,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"shoppingcart.components.d.ts","sourceRoot":"","sources":["../../../../src/components/shoppingcart/shoppingcart.components.tsx"],"names":[],"mappings":"AAIA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMnD,OAAO,8BAA8B,CAAC;AAStC,OAAO,oBAAoB,CAAC;AAa5B,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;AACzE,wBAAgB,YAAY,CAAE,KAAK,EAAE,gBAAgB,2CA2LpD;yBA3Le,YAAY;;;;;AAwM5B,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,2CAmD3D;yBAnDe,gBAAgB;;;;;;;;;;;;AA8EhC,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3E,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,2CAoDrD;yBApDe,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;AA0D7B,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;AACrE,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,2CAiC/C;yBAjCe,UAAU;;;;;AAwC1B,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;AAC/E,wBAAgB,eAAe,CAAC,KAAK,EAAE,mBAAmB,2CAQzD;yBARe,eAAe;;;;;;AAgB/B,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;AAC/E,wBAAgB,eAAe,CAAC,KAAK,EAAE,mBAAmB,2CAkBzD;yBAlBe,eAAe;;;;;;;AAyB/B,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC;AAC7E,wBAAgB,cAAc,CAAC,KAAK,EAAE,kBAAkB,2CAQvD;yBARe,cAAc"}
|
|
@@ -42,7 +42,7 @@ export type CheckoutType = {
|
|
|
42
42
|
};
|
|
43
43
|
export declare function formatAsUSD(cost: number): string;
|
|
44
44
|
export declare function formatAsHundredths(num: number): number;
|
|
45
|
-
export declare function getCart():
|
|
45
|
+
export declare function getCart(): ShoppingCartType[];
|
|
46
46
|
export declare function setCart(shoppingCartJSON: ShoppingCartType[]): void;
|
|
47
47
|
export declare function alreadyInCart(cart: ShoppingCartType[], itemID: string): boolean;
|
|
48
48
|
export declare function increaseQuantityCart(cart: ShoppingCartType[], itemID: string): void;
|
|
@@ -59,7 +59,7 @@ export declare function validateDiscountCode(field: {
|
|
|
59
59
|
value: string;
|
|
60
60
|
}): Promise<boolean | undefined>;
|
|
61
61
|
export declare function getRemoteDiscountCodes(): Promise<any>;
|
|
62
|
-
export declare function getLocalDiscountCodes():
|
|
62
|
+
export declare function getLocalDiscountCodes(): DiscountCodeType[];
|
|
63
63
|
export declare function setDiscountCodes(discountCodesJSON: DiscountCodeType[]): void;
|
|
64
64
|
export declare function getDiscountCode(codeString: string): DiscountCodeType | undefined;
|
|
65
65
|
export declare function getCartSubtotalDiscount(cart: ShoppingCartType[]): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shoppingcart.functions.d.ts","sourceRoot":"","sources":["../../../../src/components/shoppingcart/shoppingcart.functions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shoppingcart.functions.d.ts","sourceRoot":"","sources":["../../../../src/components/shoppingcart/shoppingcart.functions.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAChD,eAAO,MAAM,eAAe,2BAA2B,CAAC;AACxD,eAAO,MAAM,gBAAgB,4BAA4B,CAAC;AAC1D,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAqBxD,MAAM,MAAM,gBAAgB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAG,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAA;AAoBD,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,WAAW,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAA;AAkED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,UAEvC;AAGD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,UAE7C;AAGD,wBAAgB,OAAO,uBAQtB;AAGD,wBAAgB,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,QAK3D;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,WAQrE;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,QAO5E;AAGD,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,UAQtE;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,EAAE,UASxD;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,EAAE,UAWvD;AAGD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,QAqB3D;AAGD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,QAQhE;AAGD,wBAAgB,iBAAiB,SAKhC;AAMD,wBAAgB,eAAe,QAM9B;AAGD,wBAAgB,eAAe,CAAC,gBAAgB,EAAE,GAAG,QAIpD;AAGD,wBAAgB,eAAe,IAAI,MAAM,CAKxC;AAMD,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAE;CAAE,gCAwBpE;AAGD,wBAAsB,sBAAsB,iBAY3C;AAGD,wBAAgB,qBAAqB,uBAMpC;AAGD,wBAAgB,gBAAgB,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,QAIrE;AAGD,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,gCAcjD;AAGD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,EAAE,UAa/D;AAOD,wBAAgB,cAAc,WAE7B;AAGD,wBAAgB,WAAW,IAAI,MAAM,CAOpC;AAGD,wBAAgB,gBAAgB,WAU/B;AAGD,wBAAgB,eAAe,iBAe9B"}
|
|
@@ -46,7 +46,10 @@ export declare namespace FormInput {
|
|
|
46
46
|
maxLength: PropTypes.Requireable<string>;
|
|
47
47
|
placeholder: PropTypes.Requireable<string>;
|
|
48
48
|
autoComplete: PropTypes.Requireable<string>;
|
|
49
|
+
tabIndex: PropTypes.Requireable<number>;
|
|
50
|
+
style: PropTypes.Requireable<object>;
|
|
49
51
|
"aria-label": PropTypes.Requireable<string>;
|
|
52
|
+
"aria-hidden": PropTypes.Requireable<string>;
|
|
50
53
|
min: PropTypes.Requireable<string>;
|
|
51
54
|
max: PropTypes.Requireable<string>;
|
|
52
55
|
step: PropTypes.Requireable<string>;
|
|
@@ -220,5 +223,13 @@ export declare function FormFieldset(props: FormFieldsetType): import("react/jsx
|
|
|
220
223
|
export declare namespace FormFieldset {
|
|
221
224
|
var propTypes: {};
|
|
222
225
|
}
|
|
226
|
+
export type FormHoneypotType = InferProps<typeof FormHoneypot.propTypes>;
|
|
227
|
+
export declare function FormHoneypot({ id, name }: FormHoneypotType): import("react/jsx-runtime").JSX.Element;
|
|
228
|
+
export declare namespace FormHoneypot {
|
|
229
|
+
var propTypes: {
|
|
230
|
+
id: PropTypes.Validator<string>;
|
|
231
|
+
name: PropTypes.Requireable<string>;
|
|
232
|
+
};
|
|
233
|
+
}
|
|
223
234
|
export { FontSelector, CompoundFontSelector };
|
|
224
235
|
//# sourceMappingURL=formcomponents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formcomponents.d.ts","sourceRoot":"","sources":["../../../../../src/components/sitebuilder/form/formcomponents.tsx"],"names":[],"mappings":"AAIA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAInD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,YAAY,CAAC;AAuIpB,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC;AACnE,iBAAS,SAAS,CAAC,KAAK,EAAE,aAAa,2CAYtC;kBAZQ,SAAS;;;;;;;;;;;;;AA4BlB,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;AACvE,iBAAS,WAAW,CAAC,KAAK,EAAE,eAAe,kDA2C1C;kBA3CQ,WAAW;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"formcomponents.d.ts","sourceRoot":"","sources":["../../../../../src/components/sitebuilder/form/formcomponents.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formemailer.d.ts","sourceRoot":"","sources":["../../../../../src/components/sitebuilder/form/formemailer.tsx"],"names":[],"mappings":"AASA,wBAAsB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"formemailer.d.ts","sourceRoot":"","sources":["../../../../../src/components/sitebuilder/form/formemailer.tsx"],"names":[],"mappings":"AASA,wBAAsB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,iBAoDzE;AAID,wBAAsB,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,iBA+BnE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
title: string;
|
|
3
|
+
parameters: {
|
|
4
|
+
layout: string;
|
|
5
|
+
docs: {
|
|
6
|
+
description: {
|
|
7
|
+
component: string;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export default _default;
|
|
13
|
+
export declare const HoneypotReject: {
|
|
14
|
+
(): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
storyName: string;
|
|
16
|
+
play(context: {
|
|
17
|
+
canvasElement: HTMLElement;
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=form.honeypot.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form.honeypot.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/sitebuilder/form.honeypot.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;AAKA,wBAME;AAEF,eAAO,MAAM,cAAc;;;kBAmFW;QAAE,aAAa,EAAE,WAAW,CAAA;KAAE;CAJnE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formemailer.honeypot.test.d.ts","sourceRoot":"","sources":["../../../src/tests/formemailer.honeypot.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formengine.honeypot.integration.test.d.ts","sourceRoot":"","sources":["../../../src/tests/formengine.honeypot.integration.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formengine.method.test.d.ts","sourceRoot":"","sources":["../../../src/tests/formengine.method.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shoppingcart.contract.test.d.ts","sourceRoot":"","sources":["../../../src/tests/shoppingcart.contract.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shoppingcart.integration.test.d.ts","sourceRoot":"","sources":["../../../src/tests/shoppingcart.integration.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shoppingcart.migration.test.d.ts","sourceRoot":"","sources":["../../../src/tests/shoppingcart.migration.test.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixelated-tech/components",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.11.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Pixelated Technologies",
|
|
@@ -74,10 +74,10 @@
|
|
|
74
74
|
"copy2all": "npm run copy2brianwhaley && npm run copy2informationfocus && npm run copy2jzhomeimprovement && npm run copy2oaktreelandscaping && npm run copy2palmettoepoxy && npm run copy2pixelated && npm run copy2pixelvivid && npm run copy2template && npm run copy2pixelatedadmin",
|
|
75
75
|
"storybook": "rm -rf node_modules/.cache && storybook dev -p 6006",
|
|
76
76
|
"buildStorybook": "rm -rf node_modules/.cache && NODE_OPTIONS=\"--max-old-space-size=4096\" storybook build",
|
|
77
|
-
"test": "vitest",
|
|
77
|
+
"test": "vitest run --silent",
|
|
78
78
|
"test:ui": "vitest --ui",
|
|
79
79
|
"test:coverage": "vitest run --coverage",
|
|
80
|
-
"test:
|
|
80
|
+
"test:watch": "vitest",
|
|
81
81
|
"lint": "eslint --fix",
|
|
82
82
|
"release": "./src/scripts/release.sh",
|
|
83
83
|
"vault": "npx tsx src/scripts/config-vault.ts",
|
|
@@ -103,12 +103,12 @@
|
|
|
103
103
|
},
|
|
104
104
|
"dependencies": {
|
|
105
105
|
"date-fns": "^4.1.0",
|
|
106
|
-
"globals": "^17.
|
|
106
|
+
"globals": "^17.1.0",
|
|
107
107
|
"html-entities": "^2.6.0"
|
|
108
108
|
},
|
|
109
109
|
"devDependencies": {
|
|
110
|
-
"@aws-sdk/client-amplify": "^3.
|
|
111
|
-
"@aws-sdk/client-iam": "^3.
|
|
110
|
+
"@aws-sdk/client-amplify": "^3.974.0",
|
|
111
|
+
"@aws-sdk/client-iam": "^3.974.0",
|
|
112
112
|
"@babel/cli": "^7.28.6",
|
|
113
113
|
"@babel/core": "^7.28.6",
|
|
114
114
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
@@ -125,15 +125,15 @@
|
|
|
125
125
|
"@testing-library/react": "^16.3.2",
|
|
126
126
|
"@testing-library/user-event": "^14.6.1",
|
|
127
127
|
"@types/md5": "^2.3.6",
|
|
128
|
-
"@types/node": "^25.0.
|
|
128
|
+
"@types/node": "^25.0.10",
|
|
129
129
|
"@types/prop-types": "^15.7.15",
|
|
130
130
|
"@types/react": "^19.2.9",
|
|
131
131
|
"@types/react-dom": "^19.2.3",
|
|
132
132
|
"@typescript-eslint/eslint-plugin": "^8.53.1",
|
|
133
133
|
"@typescript-eslint/parser": "^8.53.1",
|
|
134
134
|
"@vitejs/plugin-react": "^5.1.2",
|
|
135
|
-
"@vitest/coverage-v8": "^4.0.
|
|
136
|
-
"@vitest/ui": "^4.0.
|
|
135
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
136
|
+
"@vitest/ui": "^4.0.18",
|
|
137
137
|
"ajv": "^8.17.1",
|
|
138
138
|
"ajv-keywords": "^5.1.0",
|
|
139
139
|
"babel-loader": "^10.0.0",
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
"eslint-plugin-react": "^7.37.4",
|
|
150
150
|
"eslint-plugin-storybook": "^10.2.0",
|
|
151
151
|
"file-loader": "^6.2.0",
|
|
152
|
-
"happy-dom": "^20.3.
|
|
152
|
+
"happy-dom": "^20.3.7",
|
|
153
153
|
"jsdom": "^27.4.0",
|
|
154
154
|
"less-loader": "^12.3.0",
|
|
155
155
|
"mini-css-extract-plugin": "^2.10.0",
|
|
@@ -161,14 +161,14 @@
|
|
|
161
161
|
"react-redux": "^9.2.0",
|
|
162
162
|
"react-test-renderer": "^19.2.3",
|
|
163
163
|
"redux": "^5.0.1",
|
|
164
|
-
"sass": "^1.97.
|
|
164
|
+
"sass": "^1.97.3",
|
|
165
165
|
"sass-loader": "^16.0.6",
|
|
166
166
|
"storybook": "^10.2.0",
|
|
167
167
|
"style-loader": "^4.0.0",
|
|
168
168
|
"ts-loader": "^9.5.4",
|
|
169
169
|
"typescript": "^5.9.3",
|
|
170
170
|
"url-loader": "^4.1.1",
|
|
171
|
-
"vitest": "^4.0.
|
|
171
|
+
"vitest": "^4.0.18",
|
|
172
172
|
"webpack": "^5.104.1",
|
|
173
173
|
"webpack-cli": "^6.0.1",
|
|
174
174
|
"webpack-dev-server": "^5.2.3",
|
|
@@ -180,13 +180,13 @@
|
|
|
180
180
|
"react-dom": "^19.2.0"
|
|
181
181
|
},
|
|
182
182
|
"optionalDependencies": {
|
|
183
|
-
"@aws-sdk/client-cloudwatch": "^3.
|
|
184
|
-
"@aws-sdk/client-route-53": "^3.
|
|
183
|
+
"@aws-sdk/client-cloudwatch": "^3.974.0",
|
|
184
|
+
"@aws-sdk/client-route-53": "^3.974.0",
|
|
185
185
|
"googleapis": "^170.1.0",
|
|
186
186
|
"md5": "^2.3.0",
|
|
187
|
-
"puppeteer": "^24.
|
|
187
|
+
"puppeteer": "^24.36.0",
|
|
188
188
|
"react-redux": "*",
|
|
189
|
-
"recharts": "^3.
|
|
189
|
+
"recharts": "^3.7.0",
|
|
190
190
|
"redux": "*"
|
|
191
191
|
},
|
|
192
192
|
"type": "module"
|