@pixelated-tech/components 3.13.0 → 3.13.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.
Files changed (48) hide show
  1. package/dist/components/admin/site-health/site-health-dependency-vulnerabilities.js +3 -1
  2. package/dist/components/general/buzzwordbingo.css +8 -8
  3. package/dist/components/general/buzzwordbingo.js +3 -3
  4. package/dist/components/general/countup.css +19 -0
  5. package/dist/components/general/countup.js +62 -0
  6. package/dist/components/general/global-error.css +1 -1
  7. package/dist/components/general/global-error.js +1 -1
  8. package/dist/components/general/menu-accordion.css +24 -24
  9. package/dist/components/general/menu-accordion.js +13 -13
  10. package/dist/components/general/menu-expando.css +4 -4
  11. package/dist/components/general/menu-expando.js +7 -7
  12. package/dist/components/general/microinteractions.css +1 -1
  13. package/dist/components/general/nerdjoke.css +5 -5
  14. package/dist/components/general/nerdjoke.js +2 -2
  15. package/dist/components/general/recipe.css +1 -1
  16. package/dist/components/general/recipe.js +1 -1
  17. package/dist/components/general/semantic.js +1 -1
  18. package/dist/components/general/sidepanel.css +3 -3
  19. package/dist/components/general/skeleton.css +4 -4
  20. package/dist/components/general/skeleton.js +3 -3
  21. package/dist/components/general/styleguide.js +2 -2
  22. package/dist/components/general/table.css +6 -6
  23. package/dist/components/general/table.js +5 -5
  24. package/dist/components/general/tiles.js +3 -2
  25. package/dist/components/integrations/socialcard.css +6 -6
  26. package/dist/components/integrations/socialcard.js +2 -2
  27. package/dist/components/integrations/wordpress.components.js +1 -1
  28. package/dist/components/integrations/wordpress.css +2 -2
  29. package/dist/components/shoppingcart/ebay.components.js +11 -11
  30. package/dist/components/shoppingcart/ebay.css +20 -20
  31. package/dist/components/shoppingcart/shoppingcart.components.js +11 -11
  32. package/dist/components/shoppingcart/shoppingcart.css +19 -19
  33. package/dist/components/sitebuilder/form/form.css +4 -4
  34. package/dist/components/sitebuilder/form/formcomponents.js +3 -3
  35. package/dist/components/sitebuilder/page/components/PageBuilderUI.js +2 -2
  36. package/dist/config/pixelated.config.json.enc +1 -1
  37. package/dist/css/pixelated.grid.scss +1 -1
  38. package/dist/index.js +1 -0
  39. package/dist/scripts/pixelated-eslint-plugin.js +103 -3
  40. package/dist/types/components/admin/site-health/site-health-dependency-vulnerabilities.d.ts.map +1 -1
  41. package/dist/types/components/general/countup.d.ts +17 -0
  42. package/dist/types/components/general/countup.d.ts.map +1 -0
  43. package/dist/types/components/general/tiles.d.ts.map +1 -1
  44. package/dist/types/index.d.ts +1 -0
  45. package/dist/types/scripts/pixelated-eslint-plugin.d.ts +24 -0
  46. package/dist/types/stories/general/countup.stories.d.ts +47 -0
  47. package/dist/types/stories/general/countup.stories.d.ts.map +1 -0
  48. package/package.json +24 -13
@@ -2,56 +2,56 @@
2
2
  ========== SHOPPING CART ===========
3
3
  ======================================== */
4
4
 
5
- .pixCart {
5
+ .pix-cart {
6
6
  --do-nothing: true
7
7
  }
8
8
 
9
- .pixCart .callout-header {
9
+ .pix-cart .callout-header {
10
10
  text-align: left
11
11
  }
12
12
 
13
- .pixCartItems {
13
+ .pix-cart-items {
14
14
  text-align: center;
15
15
  }
16
16
 
17
17
  @media screen and (max-width: 480px) {
18
- .pixCartItems {
18
+ .pix-cart-items {
19
19
  padding: 20px;
20
20
  }
21
21
  }
22
22
 
23
- .pixCartItem {
23
+ .pix-cart-item {
24
24
  border: 1px solid #DDD;
25
25
  text-align: left;
26
26
  padding: 20px 5px !important;
27
27
  }
28
28
 
29
29
  @media screen and (max-width: 480px) {
30
- .pixCartItem {
30
+ .pix-cart-item {
31
31
  text-align: center;
32
32
  }
33
33
  }
34
34
 
35
- .pixCartItemHeader {
35
+ .pix-cart-item-header {
36
36
  margin: 0 auto;
37
37
  }
38
38
 
39
- .pixCartItemHeader h2 {
39
+ .pix-cart-item-header h2 {
40
40
  font-size: 1.25em;
41
41
  font-weight: bold;
42
42
  }
43
43
 
44
- .pixCartItemPhoto img {
44
+ .pix-cart-item-photo img {
45
45
  padding: 10px 0;
46
46
  width: 100%;
47
47
 
48
48
  }
49
49
 
50
- .pixCartItemDetails {
50
+ .pix-cart-item-details {
51
51
  padding-bottom: 10px;
52
52
  }
53
53
 
54
- .pixCartItemPrice{
54
+ .pix-cart-item-price{
55
55
  font-size: 1.5em;
56
56
  font-weight: bold;
57
57
 
@@ -89,9 +89,9 @@
89
89
 
90
90
  /* ===== SHOPPING CART SHIPPING FIELDS ===== */
91
91
 
92
- .pixCartButton,
93
- .pixCart .pixCartButton,
94
- #pixCartButton.pixCartButton {
92
+ .pix-cart-button,
93
+ .pix-cart .pix-cart-button,
94
+ #pix-cart-button.pix-cart-button {
95
95
  font-size: 1.1em;
96
96
  font-family: Verdana, Geneva, sans-serif;
97
97
  color: #000;
@@ -110,19 +110,19 @@
110
110
  margin: 5px auto;
111
111
  }
112
112
 
113
- .pixCartButton:hover,
114
- .pixCart .pixCartButton:hover,
115
- #pixCartButton.pixCartButton:hover {
113
+ .pix-cart-button:hover,
114
+ .pix-cart .pix-cart-button:hover,
115
+ #pix-cart-button.pix-cart-button:hover {
116
116
  color: #369;
117
117
  text-decoration: underline;
118
118
  }
119
119
 
120
- #pixCartButton.pixCartButton {
120
+ #pix-cart-button.pix-cart-button {
121
121
  width: 80px;
122
122
  min-width: 80px;
123
123
  height: 30px;
124
124
  }
125
- #pixCartButton.pixCartButton img {
125
+ #pix-cart-button.pix-cart-button img {
126
126
  width: 20px;
127
127
  }
128
128
 
@@ -17,14 +17,14 @@ form button {
17
17
  border-radius: 5px;
18
18
  }
19
19
 
20
- .displayVertical,
21
- span.displayVertical:last-child,
22
- span.displayVertical:last-of-type {
20
+ .display-vertical,
21
+ span.display-vertical:last-child,
22
+ span.display-vertical:last-of-type {
23
23
  display:block;
24
24
  margin: 1px 5px 20px 20px !important;
25
25
  }
26
26
 
27
- span.displayVertical {
27
+ span.display-vertical {
28
28
  display:block;
29
29
  margin: 1px 5px 1px 20px !important;
30
30
  }
@@ -17,7 +17,7 @@ const setupInputProps = (props, display) => {
17
17
  // Remove props that shouldn't go to DOM
18
18
  inputProps = Object.fromEntries(Object.entries(inputProps).filter(([key]) => !['display', 'label', 'listItems', 'validate', 'options', 'parent', 'text', 'checked'].includes(key)));
19
19
  // Set className based on display mode
20
- inputProps["className"] = (display == "vertical") ? "displayVertical" : "";
20
+ inputProps["className"] = (display == "vertical") ? "display-vertical" : "";
21
21
  // Handle controlled vs uncontrolled inputs properly
22
22
  // If value is provided, use it for controlled behavior
23
23
  // Otherwise, use defaultValue for uncontrolled behavior
@@ -510,7 +510,7 @@ function FormRadioOption(props) {
510
510
  };
511
511
  // If there is no parent onChange (no updater), render uncontrolled via defaultChecked
512
512
  const controlProps = parentHasOnChange ? { checked: isChecked } : { defaultChecked: isChecked };
513
- 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 })] }));
513
+ return (_jsxs("span", { className: props.parent && props.parent.display == "vertical" ? "display-vertical" : "", 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 })] }));
514
514
  }
515
515
  /**
516
516
  * FormCheckbox — Render a set of checkbox inputs from provided options and manage selection array.
@@ -597,7 +597,7 @@ function FormCheckboxOption(props) {
597
597
  props.parent.onChange(newChecked);
598
598
  }
599
599
  };
600
- return (_jsxs("span", { className: props.parent.display == "vertical" ? "displayVertical" : "", children: [_jsx("input", { type: "checkbox", id: props.parent.name + "_" + props.text, name: props.text, value: props.value, checked: isChecked, onChange: handleChange, ...inputProps }), _jsx("label", { htmlFor: props.parent.name + "_" + props.text, children: props.text })] }));
600
+ return (_jsxs("span", { className: props.parent.display == "vertical" ? "display-vertical" : "", children: [_jsx("input", { type: "checkbox", id: props.parent.name + "_" + props.text, name: props.text, value: props.value, checked: isChecked, onChange: handleChange, ...inputProps }), _jsx("label", { htmlFor: props.parent.name + "_" + props.text, children: props.text })] }));
601
601
  }
602
602
  /**
603
603
  * FormButton — Render a standard HTML button used for form actions.
@@ -40,14 +40,14 @@ export function PageBuilderUI({ apiEndpoint = '/api/pagebuilder' }) {
40
40
  setSelectorKey(prev => prev + 1);
41
41
  setEditableComponent({});
42
42
  }
43
- return (_jsxs("div", { className: "row-2col", style: { gridTemplateColumns: "1fr 3fr", alignItems: "start" }, children: [_jsxs("div", { className: "gridItem", children: [_jsx(PageSectionHeader, { title: "Component Editor" }), _jsx(SaveLoadSection, { pageData: pageJSON, onLoad: handleLoadPage, apiEndpoint: apiEndpoint }), _jsx(ComponentSelector, { setEditableComponent: setEditableComponent, parentPath: selectedPath || undefined, editMode: editMode ? {
43
+ return (_jsxs("div", { className: "row-2col", style: { gridTemplateColumns: "1fr 3fr", alignItems: "start" }, children: [_jsxs("div", { className: "grid-item", children: [_jsx(PageSectionHeader, { title: "Component Editor" }), _jsx(SaveLoadSection, { pageData: pageJSON, onLoad: handleLoadPage, apiEndpoint: apiEndpoint }), _jsx(ComponentSelector, { setEditableComponent: setEditableComponent, parentPath: selectedPath || undefined, editMode: editMode ? {
44
44
  component: editMode.component.component,
45
45
  props: editMode.component.props
46
46
  } : undefined }, selectorKey), _jsx("br", {}), _jsx(ComponentPropertiesForm, { editableComponent: editableComponent, onSubmit: handleAddWithReset }), editMode && (_jsx("div", { children: _jsx("button", { onClick: cancelEdit, type: "button", className: "button", style: {
47
47
  background: '#FFA726',
48
48
  color: 'white',
49
49
  transition: 'all 0.2s ease',
50
- }, onMouseEnter: (e) => e.currentTarget.style.background = '#FB8C00', onMouseLeave: (e) => e.currentTarget.style.background = '#FFA726', children: "Cancel Edit" }) }))] }), _jsxs("div", { className: "gridItem", children: [_jsx(PageSectionHeader, { title: "Page Preview" }), _jsx("section", { id: "preview-section", children: _jsxs("div", { className: "section-container", children: [pageJSON.components.length > 0 ? (_jsx(PageEngine, { pageData: pageJSON, editMode: true, selectedPath: selectedPath, onEditComponent: handleEditComponent, onSelectComponent: handleSelectComponent, onDeleteComponent: handleDeleteComponent, onMoveUp: handleMoveUp, onMoveDown: handleMoveDown })) : (_jsx("p", { style: { color: '#666', fontStyle: 'italic', padding: '2rem', textAlign: 'center' }, children: "No components yet. Start by selecting a component above and adding it to your page." })), _jsxs("details", { style: { marginTop: '1rem' }, children: [_jsx("summary", { style: { cursor: 'pointer', userSelect: 'none' }, children: _jsx("strong", { children: "Page JSON" }) }), _jsx("pre", { style: {
50
+ }, onMouseEnter: (e) => e.currentTarget.style.background = '#FB8C00', onMouseLeave: (e) => e.currentTarget.style.background = '#FFA726', children: "Cancel Edit" }) }))] }), _jsxs("div", { className: "grid-item", children: [_jsx(PageSectionHeader, { title: "Page Preview" }), _jsx("section", { id: "preview-section", children: _jsxs("div", { className: "section-container", children: [pageJSON.components.length > 0 ? (_jsx(PageEngine, { pageData: pageJSON, editMode: true, selectedPath: selectedPath, onEditComponent: handleEditComponent, onSelectComponent: handleSelectComponent, onDeleteComponent: handleDeleteComponent, onMoveUp: handleMoveUp, onMoveDown: handleMoveDown })) : (_jsx("p", { style: { color: '#666', fontStyle: 'italic', padding: '2rem', textAlign: 'center' }, children: "No components yet. Start by selecting a component above and adding it to your page." })), _jsxs("details", { style: { marginTop: '1rem' }, children: [_jsx("summary", { style: { cursor: 'pointer', userSelect: 'none' }, children: _jsx("strong", { children: "Page JSON" }) }), _jsx("pre", { style: {
51
51
  maxHeight: '400px',
52
52
  overflow: 'auto',
53
53
  fontSize: '0.875rem',
@@ -1 +1 @@
1
- pxl:v1:cb4a6489e69c34388bf9b3e4:6f420b0316cbc2f7b8ff526175372cca:ab175029a0c5d9aeb1c7c69ac67db745304191463e5338ea9f711f8c93aad8c1549369a06eb6c1bd972e3a3bfb3ccfb851f2cce837b48542a51dd2e1a23303dabf2db0734caa0fc3006d6f1e51b1c5bbd203e74c1861ef350c4dd8a266ea38f723cac9d964ae8abf34d296af9327284a8dd3eab3f8821920d5995e465067f4c5052c14165a9d9fb316f5a9b8f4a55abc618974df1ad98569bcd5e4d64430a9513287d56a1c0fbc455d7d2ce13bccc99554814268edb61a29923d305690707d7f91c6de1caa1ad72409b3aba95fa82744293c3e5c28c2baffa2a0441c0bf0ffae8cc6dd0678cedb9cd67dc11c582c37714d6cdfaa4a0e80c0e61d5040d678cd4d9332b65fc20074406f44f99ca82c23ecdd64b07f681d0fcd1fc0fd1992250e2245bd0c8df616053e6c0d9f076576a1d30c1ac426f7c00848aa657239e54e87ba4f34a8579b005d9f3ab3d326aaaed98d3f510b32514a2b0ce155ba611286521bb726a45377fadd2d27fdbff5a905f0b213805a5a04a1d09dd1ec46dd5a633e5e522add289a6ce1a68bed32226d74a43adaa5972b93021e2f90a92231c2438012277081bed2df304070ae44776807b09a5ff650a285429504c52fa60f2b02ebd0c421cc06f27694d49aad5423fe496cb2b4d3d69330ca095931e1bdc45d27d4e1f97ec887eb4303f782ab051490c3f820ff94c65464b9718747aaa2bdc5d71c21ada02f3934e5843b63f6f47ad39b61a8a260d2b2278f14ac9b891b6fb0cc9b24d0d635358459d40674e74f1c3f1fdd68566930606eb59e870691d67b334a96e3e5672a111d6f393475f14c805cc154f6c744322c417dee4e3457cea509ab2871257bd5f115ddf1cdf266795374267ef415e1da35708bf897a56d87d89596bee19d244900ba0a1a3c216f3ebb1055efe1319f0fd806afe6332f9700bdbf4585dd1ff1729d46804cc7942e98ea2cbc3cedbe9c3f79130099ca87b78caa248a1a4a71f9f8d198b54073e5a34d028be15ee4a0dd2d10d4ac2e82cf3a2cbe4019aeaa382a167b738ca4293c4d61d479b11f05216e378a064afe8a2bd9292bba48d684fa83a5d910a24b9e8f5ff2fb2fcc1a6024dba4d16565ec403cba779f6cbba00ac582b197af0c2493d3eeb02303e86321832eaaf9ed109f093a7c685c0e12030b3b06ae90c7387106d41ca45b606c1f6c20982b892f24dd541d5beca2e492d18c7cb3643e0629040db750e6c85997ba11ce677fdce6cee16d065d2390cdb22cce45f5e1f9c187604febe71057af13f3cd820da97c1712e0c58cb02c5a111cfc5f5ff0adbc44f9bef8ac9cab94b76239c2e4c15dbf02ee336e3970fb39b7e9389e184a518e3f0e18cfc1dbc571935f6aa1cf3d7e7440902aa6a8a3a7be8faa589ff2c905146b240937385c0a9f69ad7d11419a28c170ccc31b2fda851e82af5f782c1f51b37a1262d67fd8a68d3afdc3331b6b2581e779ad1a6072332d44d7350693fedec4f4a072e55c79175eff6a7c3fee115736a36f26b0999aa38570c91f71c7290fb82d4b5f19eba1e0a6bcf37b62d831629603cb47e618abd01ac6fb3bbecfffc263d946fc388b295300944b064d67b27f50d0544dca746973b6427b85527ed72ba846f3149788deaa04ff66812adfbb594f994af0b227081b6e8d9f303370a88d3907d50acb0c38980095d76c27df3259adf0055d7cb0d774cc78d4a4f684338f2135ed2098be70f386dccda9bc1b5d6be28e586763f9540f199db3509d18ce04a53ba7e3da77f82d197f8e2a11430d65c3a4498b01abe86e6aac3c159a3c6cdf3ede1be2875372e9cc6bb8f1ee787de1193fc28e5c68a3ae9133cab2d8b34bbffb2dc3cb3e02ecc68153c6039b3e64601fb70180a1ee4358c46ff379c832bcb47a8e17a5751c6fa7e39f21d23d74eb55d46004d978594dc63f01ebd4033df4fb2a525c80acedaff402cce7691e396d508d265068cd1e55f057432e7710f0b220c1cd249a670fc84962adac60c94f3670f021f060fb5518afca7ed52717cb90029dbe4c491f2f1c05a8d7d07c3589ba8faf3f2e9f170be1572db5e3001d90441ac4b486cdf9cee8d5f827b563d5f3bdf428fe6fa45d71985af27957065e91f440fa03fd0bef44bf87d825ca995e492391c60a8bb7168cb591330aefd1abb4ce2ea1007223fd4f5135c11fe1d5d26fba5944ff9daf852358cd8ef2a2360d2069b4e80f421c75122d9165cf22ddabfe5b2e31c1aa7bea8b8c9ee94e3f7cca3c9cc915700a789f88abf3c6929c0773f51d38e39224652bf8bdca0cc2744c1c8bd052ca619a80a11ecb93faf3cc8cf1ce83c0c88d0d4566fa689329c22c8551fea8961bdd86363aee3f85170ddc6db28b22c41cb00cf87b03441474e2b988118582c0b9d4578fbcb66b44a905e7c25e66ae3de085e6ff5a1149d4808f077ca5481c3d3d257442cd7ff0b7664d820a416c8728d01819f5cdbd3f26ca7d9456920b9000951e16b2e211929cd9e98e41e7c48161deac3cce9cacdf43a04351b25678724ab1029e66c64218131266c7791431939083ee5b125f5ef6d4fef0cfcfdfd812441ea15beff8c93abe1521beec86378c91818a29225045a4af5dc5167b9cdf0e20df4f2dd600355b906716177a8320edf4789d495b60ecc69ca73866973c68200c26d37d47752a0fba3c06e178bfda2cf2824c93d25aa19aa72ec75d7d8787963378ba4212549e5710a366407be73e9671383e37bba45deea3959a38ab6d7c1e0b45ac4be484b873916b19eff8b50b909ce74e1e5eececfe9041b4d33bbdbfd221f5ae301165dbf890084d3ca36f2f91da7dbea85b05134a0db5c2f782b12d7bd3817cd392817d6e893d34c03b4551dd282c949cea5e7ac00b9b70a5a80925bba1bc3f514b1c43d2f82e97a523d6eaddb0d12168472866b11f2a9025d2facb0eabeba21018c8dd8794f4ecf3a1126dbc75a060bb029ea1b4f398d9690de76c723faa7d8e71050cdafb17a94c769dbcb8bd21a880bba7c863df765ce59089d357d356ac8ecc942dadece79d71b8dba7a7f18f93e96eee1ca05e6b3ea04af947cd0ad21d28438d1ed50bdc0573b20b73f2429d7bfac52edbc9d8b898ec28fdd80d7f23b67391d3b715a445bbeb86336abb27054169c4fed409262fcf737a113df680e6fb1d60d1cfd679584b90f1b302dca6d84c2f62074a70542467263cfbac4379e2795f7c3b08fa44adf998d90a6be1859153b364f5d5743b7febd8cff1918f44877cad7f76954b4145e7cb03ad3b16c338ab9535435a4a86bbbe36a11bfda3190fa4b561ba50b2691a0b6a60b42553bcefa48914238f8fa08f32184e279c5e94bf37e82f5ac0066f89bc17bab8d4221a0d9dac7a640ce3958d65c3d5e5f896de66e70800017b61308b62c9ebd4ddd3cffdc3a74e208c0b5bfb05ad93309704a2f5c143b9d9ba957e920c15954d4347f6cc0caccd45e911aaebb5c2e64711d18b58854faf5d2ffe3612f77ea82d5c672c67007968e37d52f24c7efe36d800614cfb6fa128fd211683884d5487c624370201a0619e29689cf944fb7af6b03cf242aefc34eb92ead068689e1877040ae89b2cd90ceb1da5319c610024376545058e493fe8e38a79ba6b6a2a3d594b07fda088ae436a601f89a379fac5af5bf77e892a4e937867a6bfd424cd01d0a75918e21ddb0bacc6db0d1863ec7c57375ee2bca147327a616294fed2fff515be532adbb78ede2e5147115028278baf9d9ff64cacfad454ddc581fc5c85c8738c3b1243db430e5a8a492f95fc8fec33d8f050784edc8848e9001a33680a3e5ea88bb457f9caca3ac8693084c13c593480a8a93810c7cb34c6c9558ec3c186a8f754058d33d627574718cd50eab6040b575ad214ddbf2f332de8326ea46f2b6a081c3c61882f97ba9d726aab97101506253b3c8b4c922cba9fca9a8c4bcf744f327bdd615d4d38cfc7d0d2c8178bb735459bdc40c879ab05b3301eb9c27aaae044e7b65c68fa21b304beeb71731de29a271437948e04d70b86c4a8f518b0c3ea29d209ca5e90fa0a562b5b22318e1712ee0082200969ff5a2d91389206537295aef15d0a6830e8e5e34d7101a85b50b5101cabc3db885369cabdb993349145bfaf841dd9ddbfc82baa620eb1d9b905db1cc2b1bde20f636212fb40a473315879d7cc2088389de7bfad757f717b677e9c17c8772f784d7f0c93893629641d7e6942fdade396adead18fe3e3b8e0c81e4ac178fa7cfc01c85390b597ad31eb375805e0e4175a7d7703bd6c10b6f7a2c013546e88cfa9b8f4935c109c7a4e8bf31d4a586202801aed8be490e0ba9a0d93d8d709f1760f20d07802c0d2ff36bddd4d470791614984d0838e91bad3d3f6a3b7a5d91ab0b6ad6ed1c1a66cd3f98eff7188cda2e7912270b547d577d0a31f1e94b6c4fa8bced14543e98d91fc10d4d18dabed1d47749eb4601f5bd7466bb5cfb07f810c1119839126d8e249fba398b52a2c92d08e9f0e26c0ca4402d5ad019598e2e737d76435fe22b53cab4b5f8c75df8f747393b9b53114203a3cd8fe0aa5486652b1c43cefc16c5cd04171ad43cae61d4c3ef2da3d2f3ebdf95408b504efcb34900d6f806d4802deecba1fbfd56083caf24d14759be2d1cb7c9ac7d1747ac989a3c46f0c2a61350cc260186895c5aa88798b9aae78674c0c74332d8b4c5d6b62f478775e3b4caec1b846d8e74c384ffbb1db92bc14d1bcc0277786d3d66132241edc0fbf561e14047b1e61c27ca871feab562f1f47c689d595724240971ce2bdda571317cda4ffaca9a78d16f6f36b4efa49b129afcbbf054b9e61704fb344ecd7b089f31d10d774cdf526d00c30ff008225f276c26c4a4ada20752614d5463167fe319b20acc9fd625121d83314d212f0b0e3ea5ab1a61e4d0237df5f185aebe49d88a09bd3294944acb20377e475d2e04a5b68c34e192910df2a83aba2cd6e0eccbda77d47dde51a11a1cb166012953be980e97a6ee9c16e81f7b9d721126320f5c3478779fe7134e94fd91a76f00166a2d6248263c950e93e071f094c912a15427019f1eaf9aeff3ee9a8020af4d78c9088e5e5c2e4c29f7b263347217a669e1868161965d0813854a7a3e0415826964248539c8fd47c6bb43a58d73635a8b3a81486d6bc26f1a8179d85
1
+ pxl:v1:34b3d5e0a88b1dbb654c3889:0892c0ca37ade083331b2d0237cd1f3c:6ac8aed535141caea852a25cfab27e6d242e67365acbe86f7e18ff17c9f1c3a1e3e07283159aca3855a948ecfc243cdbb5c158d69f3b25e1dbceb7273e738ce5c301b7d9cfba698abc2d233ea32e69fc1dbcfc714d04e5dd55559d74e72c5b0a6174074398828dace496bf656aa2c27b79c7b561aae4d5a57c298ddbfef410a560851f348de7c7afd3064411201096d5ea78d9436879d246d3aaa5db4c5ba35362cd928a24e6abf5e86f201d560d95eb585844749c3bbb96065aaf698745e2db84975c6af39a85d873ac2a8d986dd2668aabb923782c0d211f46a09ebced87aaebb4745143908ed01fe01d0703e3893b82b59f8f39a9c0f9fc57b142bde00479cee347cd69ecd0bb84aa44c9806365e012e27bb8853be8dc150ad971cf4f96a0f43c7d2bae06744929591b4ffe6f37989ff2397e8bf516b9538f05870eac7ec2be696625b3d508e017d108c9ca5505aea19f3a9b57b559e8e1caa682fc58b028f7f2ce7a7edafbd0a8bd2a5b9c5751e64298659ba3cbeb10849476b28675148dc635096f115bd56d6558fededd2c4e059243fc46aef57c2d1abc006bdef3348fdf63f7b118447300c9852e9c051b3110cd7b8da1909251ab111d4beb4c9b0ff85f0106fa38352cefc04ec8da6e90a4c50884ded4365ac79eaedf6720855c855e2acca7b69dcb8728f858895c5019bda7274b2d4348168df304b7c73de670d4176add82adc5c73b924369bee53e87c0ad880575976b74e7fa58e5cb2e4d268044872d1eeb03bf7bfc1cc1a00f47b4b7c9ae27e86feef9e44778b5933b08f430463629c27054a73139ec30b5a2d39e813051f8deebb28ad39b5a2ca5a3cf1de262cde74f864ed09e9ec941ad17ede514c51a7eb780d54b97b7aad5d9123eb7387866e55ea09c4d1895b250351e585dd1a3dd63686904d6e5127d6fe499aa6d71b6c75b6479e5bba47ef93bcf945951edf90a483622687390701543f13b306e9ec77f3bfc57a62cd32b2c026d3565e59ac4742cb9b204d410ad24f83f92c8b685438f64ad1c4550a705000637b1f6830008e21924814e18469fb018403d25fc9fa20495c9ff1b68502e198ca45097e79aa801af0bd151dc667aa549697ffb7b44ae30d0bb1376b441a6f240b6057c66f4df345ad120fcc5dc4a8f27118999cf54deca02817354853512e4c3d6abf0a38c44b8be584182cedf14f143dd2b6403c6781cd574ea5024a6a68d762666bdedd58fc62954e971542fb7b243a2f8bbb067c460650f464b968a514e4b865d20d593e515f8c6194a3ba8c931cfff80bedc3386105a099d6ef3f10aec63edd9fe175219a06f28d52727f8817dfa05db5e618e8a445303fa7cf11b3fffc2bc19f42920b0b37b0d3f72b07375d27fcdbfbfbbe622ec5256f73a7aa4135512d0e681cef562f9c80bc97ed15278c3b69dc60c60f09753699167f928a0dd31434737991e6403b61068e8d47425b6c66cade802eab7c1559a0dc58ba27c06d48f0d3ecdf65c9d4b761a747657ec4b0eecf35de3f4a88aa1cadf191d4f9994a6f731bb1fbe4fa0341de4a27f34f055c2dbb4430443a4c7aa97de45e9edef08e9ce284315ba5ce49a261c339a6d09bbbe94a40c937af4fea4449651d11bf39278a11b77e2189daf016aca26b8e88d3b8fd76d86f58bf1eb811dc0c691d4aa412c979f32a7ef919bb42eecb564eff17829ecda64d539d3e83292fbb566fe59fe8970112198702602e1f4add4667446b8fdbee2521b7da63c1181655fc28e341dff33e9cbefaa9df8e616c8580ad1148b93029bf7e8d0f49ae845f2ff87756ff567e6e482ea37dc321d5171ea4ea6965434b6c13eaf68eaf8ddb3959ac404072f3d00df967d869245112e168779122b165c0bef037bc90559c9a8ff7bc0d1ca3b317982b5b83a52762c82136cc9ac489aee868e9f0b92c892e07125409b49359ff4f582be4d9e8ec3f8cf615ca9724d7a4e3a05046cb1c164a01c1a29a46cfb4314baf6321893134ea66672a7bf64cf522cb91a9150b44883dc824a0497df3aa7a6a659031666bfc3d3d8821f76c87ed8c90f9e955fb42f5e79886fa9f7d8e1cc3800ff2c76e0f77880a1ae5b57b54e298d23050e768fd59557fc3ad16eba70b17bd6089db4c9d3dd72462223e20323aae0c216691e66a8a682c9b73e3c1ef90b106aec3f86170cfef60dc87e246ae1f05c020beebc6b5eb4d458502a27b69155cf6149aed54b599d148edc3a53adbf66a01067766d5ff017abf6c1745e3fdbc6ec9f3dbf24b45898f1bee43956adb3de29555fa609095a141fa77059c4e529a333ff5c454cf3c0db3f0d3b601854875213d559aa248414356a50497bbdaaf4b8f38dbf56975e81256ec9c5496fb6a1d490ee48c51839bb34abf74df945b775d945832b25a96e3975f8ae395b252de8e45a3df7c7a4b0f3b2ae666a7184e767ba652009674b71be643e61b4cf2e8cccffab71d73d8b7ee9b39fdf264df0c25d85cc7605d7fdceca65ae3df6ea93d66bf37192e0ebabb7e651ef776e37f35645dfeeae233ff9ec0ef8ab5b5158d9688c3f532c29011a4d3778b9700da2805b4fc82b51f40cfe5f9c9c71c80809c1c12e11b24f97280c799c5cdb553a402511bd9c25c3060fca0163949054d80aad4e0fc5800bd86a65ee8f44db6321957318d633307cfe1beedf61ca392032cf8fe90d8be9ec4fdc565fd37b3d6700525ccf9a1834ebddbfd8e9897e6af041ec112064a3c90387d5d5deae26c8c60f350564bf96848bb7b41e543fb80e4836f5791f31247326a353abcf13e38f394ebf5c9aae24f2f34ca8c16520c8c9282ce47a86c284e10e4659d145bc53dc94115c4b953a398a8375fd611da39b2e1cb449ebeaa4cb34052ccd5d6c433bd6531d04ea6ecc6b8e727d212814aa0eb118a5d378b1875e54bebca8e29505fc4aa987cd0232550b1ca5d3984d758016ad28ba04d6727eeaaa143b59e0e3cd27d74bf132b4e444cca6177d622514f49c49ddc86c7861e0d3a1089e46db68519593dcb8ecda18d21d15dbabb8033eb8c9fc66118530f528b20a0429a16c24c4b800eaae601f5f20bbd39fdde5a468215eeb063502c2cc370da5353332d54e9a1aa1ef588c1634059c231b98da2939359ae79818748eb080501b3f5cf25f5358d01a2fa12003bc8a23e00b9be4c9286c2e709b2cebbb6c6c646278d0c49b96b254aedf7ff94f9633662be6347fc3b07cb97d290d0a8adfb8c6df6f2d203205ed54361c707015cbd42ffd37813118dce981ed287926c8e119222aa9c97d381ea041638bc399a100d0e1493c6aadd4538305e3ff8b376a43ea0d99c9cf3b322b9e5689746cb04593caef60a3afff9918f475053c1b056256eea740a0e8ea7776f9556b8123aefccccb21418530b0ccba6c6544d054e664db18b99d4f10ffa6a4d838803e8414a1a26fc6f19bcd969c7c03255305848ad4f441fed9a6d90dd5790924d0b89758644eb82faf36d31f8e9bb5c5fc7bee69e7ebb620f2d5bc36a1a5e38e0b852a2ce2a074956580de87cc5130b600f959315ca05eedf72be378a4d7166b30e95c79c9ed05f950bea3abd0fab19ed8ce7bab2aeaa0713795b29e2ef4f88bda3dd7463c00dc5c42bfb0b5c67151a23dcc5b7f82c33ab703a0bdc3d2f82232f19f2e1c85fcb3acb83879cdf270c759eccaa8f98a364a27271b254708269e8cc4803796fa09dc78b9c0e08aa6f9c846b201d2a375815b9311a04bb5938911b17bc4a55a328e68f8018a4bba2b1ca77d029168a8c31226faef33ef576806bcc45c770490934eb97244479a9d30de2d8f61d1e03790aa85c8360325820355b1b2d49a94e9550ebdbc05f53afeb4eb18b9711dbc913c61fe6b200df583b3b0c83805615e42c05ad5d8b99a338debe481d7dd9e1d3c54f8c40fd62ef4d043ad563b00c0ca1347e9a86475933cc418140b3dba1357f32fded9c002fd4a72635688445c03cce67bbc28f6582e4418da8e047c647abdd41ec0ddc036af7ac6567be375ef4bec8c196fa44d90a4a7f762d0a404124a9295bb902c91d8189176979aae0850f412227a6003fcdf33a596448f058093fb6debbd8b999f54c127177b5eac987673c0d675d609ef29879b89ed3289e8b0987ea197543267ba90d4822c4cfe411b5dd37c14d69583a669ee12b671fb679bfd9270865aacfd3b8ebe887be182f2079d106f1b0f3eb3dafaef0f4a136b40507c4fda2ccbb169931b72ecb1a0b666e013e7299447e2a2ab0509ec8611648e812049a3f9abb773cfaece82d0a23a911fc1122607eb387bbe697be11f97fa2a70b86109ac88fcc74716e3b36f4664e00a9995c08c18ba3dafd89e22bab3b899fdbeec7c5f3148d326d2c31ab4f6313b1edc0e20bd278523e174604c905e8a62d5da49bdfc967e78a2d39df1bb66f43dd3fa7d7139542ec6a4b2b00d939047e76e078eb998614a2044d5156685d6e355c9336cf78a65979c0fb223b30a64c91e4fa53f19471462f32466dca1c80609a51cf7b598adca1cc8d96fd7ed23fada9ac3fd4ed87af92c71fdebb7531030b7d3cdffd43a664859cb097e3b39850d3393a6d3bf902c7ed3ef4eeccdbcbeb41a374adc3b40c2d91903eb2af737a1cf8138ae1e7fd3a6523027506bb9b8b5eab872c667bbdf4377f35d057ca243c1ec6657f2bd70146f15fce1470200f294bb5a082c239f1258afd9ab8e42ae379501bf2c7487e790319fed586b853f9d427d27d39c40851c1c9e08ff8d747abb3e3e463179962b3451e7bcae818a67674e28fb16fdcade2b48deb4a09800dcf9588269a27608a940f5b704c2d1ff13ac95d15c700c8039b6d754a9c25e68c1adcca8bef4d66a989542bee90368160fc5b3b6c00f33fc8b59559fcfb28477e38e304f09ffc44595516ee22e1d209841fd0a4d22206d106cbd57c366b7e82618045d5192b5dfd4b1caf971dc7bc3451e7c8115722ccea76ad28a0f9957aa826645f5330acf99cffaab3e54abac37ccf91c4bc9ba68800f5df59d030f50dd6d164ab8cfaa84137fa194b5bface8f39aef32853408b67fef849f08de9d243edc85fba32183d231ebd22522bf90b0af7e5194550267b0f5c5ac3b3da2090ebae36a414319446b12c0c77e8e6f9963fe1eb11658332780007006fcd6b50ea230d78ec6
@@ -70,7 +70,7 @@
70
70
  grid-column: 1 / -1 ;
71
71
  }
72
72
 
73
- .gridItem {
73
+ .grid-item {
74
74
  box-sizing: border-box;
75
75
  display: grid ;
76
76
  min-width: 0; // Prevents grid blowout
package/dist/index.js CHANGED
@@ -9,6 +9,7 @@ export * from './components/general/cache-manager';
9
9
  export * from './components/general/callout';
10
10
  export * from './components/general/carousel';
11
11
  export * from './components/general/carousel.drag';
12
+ export * from './components/general/countup';
12
13
  export * from './components/general/css';
13
14
  export * from './components/general/faq-accordion';
14
15
  export * from './components/general/hero';
@@ -294,6 +294,104 @@ const requiredSchemasRule = {
294
294
  },
295
295
  };
296
296
 
297
+ /* ===== RULE: no-temp-dependency ===== */
298
+ const noTempDependencyRule = {
299
+ meta: {
300
+ type: 'problem',
301
+ docs: {
302
+ description: 'Disallow temporary security dependencies listed in the rule options (lockfile-only check).',
303
+ category: 'Security',
304
+ recommended: true
305
+ },
306
+ fixable: false,
307
+ messages: {
308
+ tempDepPresent: 'Temporary dependency "{{name}}" detected at version {{version}} (vulnerable: {{range}}). Remove once upstream packages are fixed.'
309
+ },
310
+ schema: [{ type: 'array', items: { type: 'object' } }]
311
+ },
312
+ create(context) {
313
+ let ran = false;
314
+ function cmpParts(a, b) {
315
+ const A = a.split('.').map(n => parseInt(n,10) || 0);
316
+ const B = b.split('.').map(n => parseInt(n,10) || 0);
317
+ for (let i=0;i<3;i++) {
318
+ if ((A[i]||0) < (B[i]||0)) return -1;
319
+ if ((A[i]||0) > (B[i]||0)) return 1;
320
+ }
321
+ return 0;
322
+ }
323
+
324
+ function satisfiesRange(version, rangeSpec) {
325
+ if (!rangeSpec || typeof rangeSpec !== 'string') return false;
326
+ rangeSpec = rangeSpec.trim();
327
+ // simple operators: <=, <, >=, >, =, exact
328
+ if (rangeSpec.startsWith('<=')) {
329
+ const v = rangeSpec.slice(2).trim();
330
+ return cmpParts(version,v) <= 0;
331
+ }
332
+ if (rangeSpec.startsWith('<')) {
333
+ const v = rangeSpec.slice(1).trim();
334
+ return cmpParts(version,v) < 0;
335
+ }
336
+ if (rangeSpec.startsWith('>=')) {
337
+ const v = rangeSpec.slice(2).trim();
338
+ return cmpParts(version,v) >= 0;
339
+ }
340
+ if (rangeSpec.startsWith('>')) {
341
+ const v = rangeSpec.slice(1).trim();
342
+ return cmpParts(version,v) > 0;
343
+ }
344
+ if (rangeSpec.startsWith('^')) {
345
+ const v = rangeSpec.slice(1).trim();
346
+ const [maj, min] = v.split('.').map(n=>parseInt(n,10)||0);
347
+ if (maj > 0) {
348
+ return cmpParts(version, v) >= 0 && cmpParts(version, (maj+1)+'.0.0') < 0;
349
+ }
350
+ if (maj === 0 && min > 0) {
351
+ return cmpParts(version, v) >= 0 && cmpParts(version, '0.'+(min+1)+'.0') < 0;
352
+ }
353
+ return cmpParts(version, v) >= 0 && cmpParts(version, '0.0.'+((parseInt(v.split('.')[2]||'0',10)||0)+1)) < 0;
354
+ }
355
+ if (rangeSpec.startsWith('~')) {
356
+ const v = rangeSpec.slice(1).trim();
357
+ const [maj, min] = v.split('.').map(n=>parseInt(n,10)||0);
358
+ return cmpParts(version, v) >= 0 && cmpParts(version, maj + '.' + (min+1) + '.0') < 0;
359
+ }
360
+ // exact equality
361
+ return cmpParts(version, rangeSpec) === 0 || rangeSpec === '=' + version;
362
+ }
363
+
364
+ return {
365
+ Program(node) {
366
+ if (ran) return; ran = true;
367
+ const projectRoot = process.cwd();
368
+ const lockPath = path.join(projectRoot, 'package-lock.json');
369
+ if (!fs.existsSync(lockPath)) return; // lockfile-only check
370
+ let lock;
371
+ try { lock = JSON.parse(fs.readFileSync(lockPath, 'utf8')); } catch (e) { return; }
372
+ const found = [];
373
+ function walk(deps) {
374
+ if (!deps) return;
375
+ for (const [k,v] of Object.entries(deps)) {
376
+ if (v && v.version) found.push({ name: k, version: v.version });
377
+ if (v && v.dependencies) walk(v.dependencies);
378
+ }
379
+ }
380
+ walk(lock.dependencies);
381
+
382
+ const rules = context.options[0] || [{ name: 'fast-xml-parser', vulnerableRange: '<=5.3.3', note: 'temporary security pin' }];
383
+ for (const r of rules) {
384
+ const hits = found.filter(f => f.name === r.name && satisfiesRange(f.version, r.vulnerableRange));
385
+ if (hits.length > 0) {
386
+ const h = hits[0];
387
+ context.report({ node, messageId: 'tempDepPresent', data: { name: r.name, version: h.version, range: r.vulnerableRange } });
388
+ }
389
+ }
390
+ }
391
+ };
392
+ }
393
+ };
394
+
297
395
  /* ===== RULE: prop-types-jsdoc ===== */
298
396
  const propTypesJsdocRule = {
299
397
  meta: {
@@ -915,6 +1013,7 @@ export default {
915
1013
  'no-process-env': noProcessEnvRule,
916
1014
  'no-debug-true': noDebugTrueRule,
917
1015
  'required-proptypes-jsdoc': propTypesJsdocRule,
1016
+ 'no-temp-dependency': noTempDependencyRule,
918
1017
  'file-name-kebab-case': fileNameKebabCaseRule,
919
1018
  'no-duplicate-export-names': noDuplicateExportNamesRule,
920
1019
  'class-name-kebab-case': classNameKebabCaseRule,
@@ -924,17 +1023,18 @@ export default {
924
1023
  rules: {
925
1024
  'pixelated/prop-types-inferprops': 'error',
926
1025
  'pixelated/required-schemas': 'warn',
1026
+ 'pixelated/no-temp-dependency': 'error',
927
1027
  'pixelated/required-files': 'warn',
928
1028
  'pixelated/no-raw-img': 'warn',
929
- 'pixelated/require-section-ids': 'warn',
1029
+ 'pixelated/require-section-ids': 'error',
930
1030
  'pixelated/required-faq': 'warn',
931
1031
  'pixelated/validate-test-locations': 'error',
932
1032
  'pixelated/no-process-env': ['error', { allowed: ALLOWED_ENV_VARS } ],
933
1033
  'pixelated/no-debug-true': 'warn',
934
1034
  'pixelated/file-name-kebab-case': 'off',
935
- 'pixelated/required-proptypes-jsdoc': 'warn',
1035
+ 'pixelated/required-proptypes-jsdoc': 'error',
936
1036
  'pixelated/no-duplicate-export-names': 'error',
937
- 'pixelated/class-name-kebab-case': 'warn',
1037
+ 'pixelated/class-name-kebab-case': 'error',
938
1038
  },
939
1039
  },
940
1040
  },
@@ -1 +1 @@
1
- {"version":3,"file":"site-health-dependency-vulnerabilities.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-dependency-vulnerabilities.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAanD,MAAM,MAAM,uCAAuC,GAAG,UAAU,CAAC,OAAO,mCAAmC,CAAC,SAAS,CAAC,CAAC;AACvH,wBAAgB,mCAAmC,CAAC,EAAE,QAAQ,EAAE,EAAE,uCAAuC,2CA+IxG;yBA/Ie,mCAAmC;;QAJnD,qEAAqE"}
1
+ {"version":3,"file":"site-health-dependency-vulnerabilities.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-dependency-vulnerabilities.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAanD,MAAM,MAAM,uCAAuC,GAAG,UAAU,CAAC,OAAO,mCAAmC,CAAC,SAAS,CAAC,CAAC;AACvH,wBAAgB,mCAAmC,CAAC,EAAE,QAAQ,EAAE,EAAE,uCAAuC,2CAgJxG;yBAhJe,mCAAmC;;QAJnD,qEAAqE"}
@@ -0,0 +1,17 @@
1
+ import PropTypes, { InferProps } from 'prop-types';
2
+ import "./countup.css";
3
+ export type CountUpType = InferProps<typeof CountUp.propTypes>;
4
+ export declare function CountUp({ id, pre, post, start, end, duration, decimals, content }: CountUpType): import("react/jsx-runtime").JSX.Element;
5
+ export declare namespace CountUp {
6
+ var propTypes: {
7
+ id: PropTypes.Validator<string>;
8
+ pre: PropTypes.Requireable<string>;
9
+ post: PropTypes.Requireable<string>;
10
+ start: PropTypes.Validator<number>;
11
+ end: PropTypes.Validator<number>;
12
+ duration: PropTypes.Validator<number>;
13
+ decimals: PropTypes.Requireable<number>;
14
+ content: PropTypes.Requireable<string>;
15
+ };
16
+ }
17
+ //# sourceMappingURL=countup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countup.d.ts","sourceRoot":"","sources":["../../../../src/components/general/countup.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,eAAe,CAAC;AAuBvB,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;AAC/D,wBAAgB,OAAO,CAAC,EAAE,EAAE,EAAE,GAAQ,EAAE,IAAS,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAY,EAAE,OAAO,EAAE,EAAE,WAAW,2CA6C5G;yBA7Ce,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"tiles.d.ts","sourceRoot":"","sources":["../../../../src/components/general/tiles.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKnD,OAAO,+BAA+B,CAAC;AACvC,OAAO,aAAa,CAAC;AAErB,eAAO,MAAM,aAAa,iCAAoC,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,OAAO,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAuBxE,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC;AAC3D,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,2CA4BrC;yBA5Be,KAAK;;QAdrB,8FAA8F;;QAE7F,+DAA+D;;QAE/D,6EAA6E;;QAE7E;;;WAGG;QACH,uEAAuE;;;;AAmExE,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;AACzD,iBAAS,IAAI,CAAE,KAAK,EAAE,QAAQ,2CA2B7B;kBA3BQ,IAAI;;QAlBb,oCAAoC;;QAEnC,0CAA0C;;QAE1C,mCAAmC;;QAEnC,8CAA8C;;QAE9C,6DAA6D;;QAE7D,qEAAqE;;QAErE,wFAAwF;;QAExF,iFAAiF"}
1
+ {"version":3,"file":"tiles.d.ts","sourceRoot":"","sources":["../../../../src/components/general/tiles.tsx"],"names":[],"mappings":"AAIA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKnD,OAAO,+BAA+B,CAAC;AACvC,OAAO,aAAa,CAAC;AAErB,eAAO,MAAM,aAAa,iCAAoC,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,OAAO,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAuBxE,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC;AAC3D,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,2CA4BrC;yBA5Be,KAAK;;QAdrB,8FAA8F;;QAE7F,+DAA+D;;QAE/D,6EAA6E;;QAE7E;;;WAGG;QACH,uEAAuE;;;;AAmExE,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;AACzD,iBAAS,IAAI,CAAE,KAAK,EAAE,QAAQ,2CA2B7B;kBA3BQ,IAAI;;QAlBb,oCAAoC;;QAEnC,0CAA0C;;QAE1C,mCAAmC;;QAEnC,8CAA8C;;QAE9C,6DAA6D;;QAE7D,qEAAqE;;QAErE,wFAAwF;;QAExF,iFAAiF"}
@@ -8,6 +8,7 @@ export * from "./components/general/cache-manager";
8
8
  export * from "./components/general/callout";
9
9
  export * from "./components/general/carousel";
10
10
  export * from "./components/general/carousel.drag";
11
+ export * from "./components/general/countup";
11
12
  export * from "./components/general/css";
12
13
  export * from "./components/general/faq-accordion";
13
14
  export * from "./components/general/hero";
@@ -210,6 +210,29 @@ declare namespace _default {
210
210
  AssignmentExpression(node: any): void;
211
211
  };
212
212
  };
213
+ 'no-temp-dependency': {
214
+ meta: {
215
+ type: string;
216
+ docs: {
217
+ description: string;
218
+ category: string;
219
+ recommended: boolean;
220
+ };
221
+ fixable: boolean;
222
+ messages: {
223
+ tempDepPresent: string;
224
+ };
225
+ schema: {
226
+ type: string;
227
+ items: {
228
+ type: string;
229
+ };
230
+ }[];
231
+ };
232
+ create(context: any): {
233
+ Program(node: any): void;
234
+ };
235
+ };
213
236
  'file-name-kebab-case': {
214
237
  meta: {
215
238
  type: string;
@@ -279,6 +302,7 @@ declare namespace _default {
279
302
  let rules_1: {
280
303
  'pixelated/prop-types-inferprops': string;
281
304
  'pixelated/required-schemas': string;
305
+ 'pixelated/no-temp-dependency': string;
282
306
  'pixelated/required-files': string;
283
307
  'pixelated/no-raw-img': string;
284
308
  'pixelated/require-section-ids': string;
@@ -0,0 +1,47 @@
1
+ import { CountUp } from '@/components/general/countup';
2
+ declare const _default: {
3
+ title: string;
4
+ component: typeof CountUp;
5
+ argTypes: {
6
+ start: {
7
+ control: string;
8
+ description: string;
9
+ };
10
+ end: {
11
+ control: string;
12
+ description: string;
13
+ };
14
+ duration: {
15
+ control: string;
16
+ description: string;
17
+ };
18
+ decimals: {
19
+ control: string;
20
+ description: string;
21
+ };
22
+ pre: {
23
+ control: string;
24
+ };
25
+ post: {
26
+ control: string;
27
+ };
28
+ content: {
29
+ control: string;
30
+ };
31
+ };
32
+ };
33
+ export default _default;
34
+ export declare const Play: {
35
+ render: (args: any) => import("react/jsx-runtime").JSX.Element;
36
+ args: {
37
+ id: string;
38
+ start: number;
39
+ end: number;
40
+ duration: number;
41
+ decimals: number;
42
+ pre: string;
43
+ post: string;
44
+ content: string;
45
+ };
46
+ };
47
+ //# sourceMappingURL=countup.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countup.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/general/countup.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvD,wBAYE;AAIF,eAAO,MAAM,IAAI;mBAFO,GAAG;;;;;;;;;;;CAc1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixelated-tech/components",
3
- "version": "3.13.0",
3
+ "version": "3.13.2",
4
4
  "private": false,
5
5
  "author": {
6
6
  "name": "Pixelated Technologies",
@@ -106,11 +106,12 @@
106
106
  "dependencies": {
107
107
  "date-fns": "^4.1.0",
108
108
  "globals": "^17.2.0",
109
- "html-entities": "^2.6.0"
109
+ "html-entities": "^2.6.0",
110
+ "fast-xml-parser": "^5.3.4"
110
111
  },
111
112
  "devDependencies": {
112
- "@aws-sdk/client-amplify": "^3.978.0",
113
- "@aws-sdk/client-iam": "^3.978.0",
113
+ "@aws-sdk/client-amplify": "^3.980.0",
114
+ "@aws-sdk/client-iam": "^3.980.0",
114
115
  "@babel/cli": "^7.28.6",
115
116
  "@babel/core": "^7.28.6",
116
117
  "@babel/plugin-proposal-class-properties": "^7.18.6",
@@ -118,13 +119,13 @@
118
119
  "@babel/preset-env": "^7.28.6",
119
120
  "@babel/preset-react": "^7.28.5",
120
121
  "@babel/preset-typescript": "^7.28.5",
121
- "@eslint/json": "^0.14.0",
122
+ "@eslint/json": "^1.0.0",
122
123
  "@eslint/markdown": "^7.5.1",
123
- "@storybook/addon-a11y": "^10.2.1",
124
- "@storybook/addon-docs": "^10.2.1",
124
+ "@storybook/addon-a11y": "^10.2.3",
125
+ "@storybook/addon-docs": "^10.2.3",
125
126
  "@storybook/addon-webpack5-compiler-babel": "^4.0.0",
126
127
  "@storybook/preset-scss": "^1.0.3",
127
- "@storybook/react-webpack5": "^10.2.1",
128
+ "@storybook/react-webpack5": "^10.2.3",
128
129
  "@testing-library/dom": "^10.4.1",
129
130
  "@testing-library/react": "^16.3.2",
130
131
  "@testing-library/user-event": "^14.6.1",
@@ -151,7 +152,7 @@
151
152
  "eslint-plugin-n": "^17.23.2",
152
153
  "eslint-plugin-promise": "^7.2.1",
153
154
  "eslint-plugin-react": "^7.37.4",
154
- "eslint-plugin-storybook": "^10.2.1",
155
+ "eslint-plugin-storybook": "^10.2.3",
155
156
  "file-loader": "^6.2.0",
156
157
  "happy-dom": "^20.4.0",
157
158
  "jsdom": "^27.4.0",
@@ -167,7 +168,7 @@
167
168
  "redux": "^5.0.1",
168
169
  "sass": "^1.97.3",
169
170
  "sass-loader": "^16.0.6",
170
- "storybook": "^10.2.0",
171
+ "storybook": "^10.2.3",
171
172
  "style-loader": "^4.0.0",
172
173
  "ts-loader": "^9.5.4",
173
174
  "typescript": "^5.9.3",
@@ -184,14 +185,24 @@
184
185
  "react-dom": "^19.2.0"
185
186
  },
186
187
  "optionalDependencies": {
187
- "@aws-sdk/client-cloudwatch": "^3.978.0",
188
- "@aws-sdk/client-route-53": "^3.978.0",
189
- "googleapis": "^170.1.0",
188
+ "@aws-sdk/client-cloudwatch": "^3.980.0",
189
+ "@aws-sdk/client-route-53": "^3.980.0",
190
+ "googleapis": "^171.0.0",
190
191
  "md5": "^2.3.0",
191
192
  "puppeteer": "^24.36.1",
192
193
  "react-redux": "*",
193
194
  "recharts": "^3.7.0",
194
195
  "redux": "*"
195
196
  },
197
+ "overrides": {
198
+ "@aws-sdk/xml-builder": {
199
+ "fast-xml-parser": "^5.3.4"
200
+ },
201
+ "eslint-config-standard": {
202
+ "eslint": "^9.39.2",
203
+ "eslint-plugin-n": "^17.23.2",
204
+ "eslint-plugin-promise": "^7.2.1"
205
+ }
206
+ },
196
207
  "type": "module"
197
208
  }