@pixelated-tech/components 3.11.6 → 3.11.9

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 (47) hide show
  1. package/dist/components/general/hero.css +20 -0
  2. package/dist/components/general/hero.js +13 -0
  3. package/dist/components/general/skeleton-loading.css +5 -5
  4. package/dist/components/general/skeleton-loading.js +1 -1
  5. package/dist/components/integrations/loremipsum.js +125 -0
  6. package/dist/components/sitebuilder/form/formcomponents.js +0 -4
  7. package/dist/components/sitebuilder/form/formengine.js +17 -2
  8. package/dist/config/pixelated.config.json.enc +1 -1
  9. package/dist/index.js +5 -3
  10. package/dist/index.server.js +1 -0
  11. package/dist/scripts/release.sh +134 -94
  12. package/dist/scripts/zip-pixelated-theme.js +123 -0
  13. package/dist/types/components/general/hero.d.ts +13 -0
  14. package/dist/types/components/general/hero.d.ts.map +1 -0
  15. package/dist/types/components/integrations/loremipsum.d.ts +14 -0
  16. package/dist/types/components/integrations/loremipsum.d.ts.map +1 -0
  17. package/dist/types/components/sitebuilder/form/formcomponents.d.ts +1 -3
  18. package/dist/types/components/sitebuilder/form/formcomponents.d.ts.map +1 -1
  19. package/dist/types/components/sitebuilder/form/formengine.d.ts +2 -0
  20. package/dist/types/components/sitebuilder/form/formengine.d.ts.map +1 -1
  21. package/dist/types/components/sitebuilder/form/formtypes.d.ts +0 -28
  22. package/dist/types/components/sitebuilder/form/formtypes.d.ts.map +1 -1
  23. package/dist/types/components/sitebuilder/page/lib/componentGeneration.d.ts +2 -1
  24. package/dist/types/components/sitebuilder/page/lib/componentGeneration.d.ts.map +1 -1
  25. package/dist/types/components/sitebuilder/page/lib/propTypeIntrospection.d.ts +3 -2
  26. package/dist/types/components/sitebuilder/page/lib/propTypeIntrospection.d.ts.map +1 -1
  27. package/dist/types/components/sitebuilder/page/lib/types.d.ts +0 -7
  28. package/dist/types/components/sitebuilder/page/lib/types.d.ts.map +1 -1
  29. package/dist/types/index.d.ts +5 -3
  30. package/dist/types/index.server.d.ts +1 -0
  31. package/dist/types/scripts/zip-pixelated-theme.d.ts +10 -0
  32. package/dist/types/scripts/zip-pixelated-theme.d.ts.map +1 -0
  33. package/dist/types/stories/general/hero.stories.d.ts +43 -0
  34. package/dist/types/stories/general/hero.stories.d.ts.map +1 -0
  35. package/dist/types/stories/integrations/loremipsum.stories.d.ts +46 -0
  36. package/dist/types/stories/integrations/loremipsum.stories.d.ts.map +1 -0
  37. package/dist/types/tests/formcomponents.exports.test.d.ts +2 -0
  38. package/dist/types/tests/formcomponents.exports.test.d.ts.map +1 -0
  39. package/dist/types/tests/hero.test.d.ts +2 -0
  40. package/dist/types/tests/hero.test.d.ts.map +1 -0
  41. package/dist/types/tests/loremipsum.test.d.ts +2 -0
  42. package/dist/types/tests/loremipsum.test.d.ts.map +1 -0
  43. package/dist/types/tests/zip-pixelated-theme.test.d.ts +2 -0
  44. package/dist/types/tests/zip-pixelated-theme.test.d.ts.map +1 -0
  45. package/package.json +9 -8
  46. package/dist/types/stories/general/humans.stories.d.ts +0 -8
  47. package/dist/types/stories/general/humans.stories.d.ts.map +0 -1
@@ -0,0 +1,20 @@
1
+
2
+ .hero {
3
+ width: 100%;
4
+ height: 60vh;
5
+ display: flex;
6
+ flex-direction: column;
7
+ justify-content: center;
8
+ align-items: center;
9
+ margin-bottom: 30px;
10
+ overflow: hidden;
11
+ /* Background image styles */
12
+ background-position: center;
13
+ background-repeat: no-repeat;
14
+ background-size: cover;
15
+ }
16
+
17
+ .hero.anchored {
18
+ /* Create the parallax scrolling effect */
19
+ background-attachment: fixed;
20
+ }
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import PropTypes from 'prop-types';
3
+ import "./hero.css";
4
+ Hero.propTypes = {
5
+ img: PropTypes.string.isRequired,
6
+ // imgAlt: PropTypes.string.isRequired,
7
+ variant: PropTypes.oneOf(['static', 'anchored']),
8
+ height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
9
+ children: PropTypes.node,
10
+ };
11
+ export function Hero({ img, /* imgAlt, */ variant = 'static', height = '60vh', children }) {
12
+ return (_jsx(_Fragment, { children: _jsx("div", { className: "hero" + (variant ? " " + variant : ''), style: { backgroundImage: `url(${img})`, height: height ?? '60vh' }, children: children }) }));
13
+ }
@@ -30,7 +30,7 @@
30
30
  border: 0;
31
31
  }
32
32
 
33
- .hero {
33
+ .hero-loading {
34
34
  display: block;
35
35
  gap: 1.5rem;
36
36
  padding: 0;
@@ -51,25 +51,25 @@
51
51
  gap: .75rem
52
52
  }
53
53
 
54
- .cards-grid {
54
+ .cards-loading {
55
55
  display: grid;
56
56
  grid-template-columns: 1fr;
57
57
  gap: 1.5rem
58
58
  }
59
59
 
60
60
  @media(min-width:640px) {
61
- .cards-grid {
61
+ .cards-loading {
62
62
  grid-template-columns: repeat(2, 1fr)
63
63
  }
64
64
  }
65
65
 
66
66
  @media(min-width:1024px) {
67
- .cards-grid {
67
+ .cards-loading {
68
68
  grid-template-columns: repeat(3, 1fr)
69
69
  }
70
70
  }
71
71
 
72
- .card-skeleton {
72
+ .card-article {
73
73
  padding: 1rem;
74
74
  border-radius: .5rem;
75
75
  border: 1px solid rgba(17, 24, 39, 0.06);
@@ -21,6 +21,6 @@ export function SkeletonLoading({ heroHeight = 220, cardCount = 6, className = '
21
21
  }
22
22
  }, []);
23
23
  const count = Math.max(0, Number(cardCount || 0));
24
- return (_jsx("main", { className: `loading-page ${className}`, children: _jsxs("div", { className: "loading-container", children: [_jsx("div", { className: "visually-hidden", role: "status", "aria-live": "polite", children: "Loading\u2026" }), _jsx("section", { id: "hero-loading", "aria-hidden": true, className: "hero", children: _jsx(Skeleton, { variant: "rect", height: heroHeight }) }), _jsx("section", { id: "cards-loading", className: "cards-grid", "aria-hidden": true, children: Array.from({ length: count }).map((_, i) => (_jsx("article", { className: "card-skeleton", children: _jsxs("div", { className: "card-row", children: [_jsx(Skeleton, { variant: "avatar" }), _jsxs("div", { className: "card-body", children: [_jsx(Skeleton, { lines: 2 }), _jsx("div", { className: "card-body-extra", children: _jsx(Skeleton, { lines: 3, width: "90%" }) })] })] }) }, i))) })] }) }));
24
+ return (_jsx("main", { className: `loading-page ${className}`, children: _jsxs("div", { className: "loading-container", children: [_jsx("div", { className: "visually-hidden", role: "status", "aria-live": "polite", children: "Loading\u2026" }), _jsx("section", { id: "hero-loading", "aria-hidden": true, className: "hero-loading", children: _jsx(Skeleton, { variant: "rect", height: heroHeight }) }), _jsx("section", { id: "cards-loading", className: "cards-loading", "aria-hidden": true, children: Array.from({ length: count }).map((_, i) => (_jsx("article", { className: "card-article", children: _jsxs("div", { className: "card-row", children: [_jsx(Skeleton, { variant: "avatar" }), _jsxs("div", { className: "card-body", children: [_jsx(Skeleton, { lines: 2 }), _jsx("div", { className: "card-body-extra", children: _jsx(Skeleton, { lines: 3, width: "90%" }) })] })] }) }, i))) })] }) }));
25
25
  }
26
26
  export default SkeletonLoading;
@@ -0,0 +1,125 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useEffect, useState } from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import { usePixelatedConfig } from '../config/config.client';
6
+ const debug = false;
7
+ LoremIpsum.propTypes = {
8
+ paragraphs: PropTypes.number,
9
+ seed: PropTypes.string,
10
+ proxyBase: PropTypes.string,
11
+ className: PropTypes.string,
12
+ };
13
+ export function LoremIpsum({ paragraphs = 1, seed = '', proxyBase, className = '' }) {
14
+ const config = usePixelatedConfig();
15
+ // Prefer the global proxy from the app/config provider when present —
16
+ // that ensures Storybook and in-browser environments use the site-wide proxy
17
+ // instead of a per-call `proxyBase` (per user request).
18
+ const resolvedProxy = config?.global?.proxyUrl || proxyBase || undefined;
19
+ const [items, setItems] = useState(null);
20
+ const [error, setError] = useState(null);
21
+ useEffect(() => {
22
+ const controller = new AbortController();
23
+ const apiUrl = new URL('https://lorem-api.com/api/lorem');
24
+ apiUrl.searchParams.set('paragraphs', String(paragraphs));
25
+ if (seed)
26
+ apiUrl.searchParams.set('seed', String(seed));
27
+ const tryFetch = async (url) => {
28
+ const res = await fetch(url, { signal: controller.signal });
29
+ if (!res.ok)
30
+ throw new Error(`fetch failed: ${res.status}`);
31
+ return res;
32
+ };
33
+ (async () => {
34
+ setItems(null);
35
+ setError(null);
36
+ try {
37
+ // First attempt: direct fetch
38
+ let res;
39
+ try {
40
+ res = await tryFetch(apiUrl.toString());
41
+ if (debug)
42
+ console.log('LoremIpsum: fetched directly', res);
43
+ }
44
+ catch (err) {
45
+ // If CORS/network error and we have a proxy, retry via proxy
46
+ if (resolvedProxy) {
47
+ const proxied = `${resolvedProxy}${encodeURIComponent(apiUrl.toString())}`;
48
+ res = await tryFetch(proxied);
49
+ if (debug)
50
+ console.log('LoremIpsum: fetched via proxy', res);
51
+ }
52
+ else {
53
+ throw err;
54
+ }
55
+ }
56
+ // Read response as text to avoid "body stream already read" errors,
57
+ // then attempt to parse JSON; otherwise treat as plaintext.
58
+ const txt = await res.text();
59
+ try {
60
+ const parsed = JSON.parse(txt);
61
+ if (Array.isArray(parsed)) {
62
+ if (debug)
63
+ console.log('LoremIpsum: parsed array', parsed);
64
+ const newItems = parsed.map(String);
65
+ if (debug)
66
+ console.log('LoremIpsum: setting items', newItems);
67
+ setItems(newItems);
68
+ return;
69
+ }
70
+ // JSON string literal containing paragraphs -> split
71
+ if (typeof parsed === 'string') {
72
+ if (debug)
73
+ console.log('LoremIpsum: parsed json string', parsed);
74
+ const newItems = parsed.split(/\n+/).map((s) => s.trim()).filter(Boolean);
75
+ if (debug)
76
+ console.log('LoremIpsum: setting items', newItems);
77
+ setItems(newItems);
78
+ return;
79
+ }
80
+ if (parsed && Array.isArray(parsed.paragraphs)) {
81
+ if (debug)
82
+ console.log('LoremIpsum: parsed object with paragraphs', parsed);
83
+ const newItems = parsed.paragraphs.map(String);
84
+ if (debug)
85
+ console.log('LoremIpsum: setting items', newItems);
86
+ setItems(newItems);
87
+ return;
88
+ }
89
+ // object with `text` property
90
+ if (parsed && typeof parsed.text === 'string') {
91
+ if (debug)
92
+ console.log('LoremIpsum: parsed object with text property', parsed);
93
+ const newItems = parsed.text.split(/\n+/).map((s) => s.trim()).filter(Boolean);
94
+ if (debug)
95
+ console.log('LoremIpsum: setting items', newItems);
96
+ setItems(newItems);
97
+ return;
98
+ }
99
+ // fallback: stringify into single paragraph
100
+ setItems([String(parsed)]);
101
+ }
102
+ catch (_) {
103
+ if (debug)
104
+ console.log('LoremIpsum: parsed plaintext', txt);
105
+ const newItems = txt.split(/\n+/).map((s) => s.trim()).filter(Boolean);
106
+ if (debug)
107
+ console.log('LoremIpsum: setting items', newItems);
108
+ setItems(newItems);
109
+ return;
110
+ }
111
+ }
112
+ catch (err) {
113
+ if (err?.name === 'AbortError')
114
+ return;
115
+ setError(err?.message ?? 'Unable to load placeholder text.');
116
+ }
117
+ })();
118
+ return () => controller.abort();
119
+ }, [paragraphs, seed, resolvedProxy]);
120
+ if (error)
121
+ return _jsx("div", { className: `loremipsum ${className}`, "aria-live": "polite", children: error });
122
+ if (!items)
123
+ return _jsx("div", { className: `loremipsum ${className}`, children: "Loading\u2026" });
124
+ return (_jsx("div", { className: `loremipsum ${className}`, children: items.map((p, i) => (_jsx("p", { children: p }, i))) }));
125
+ }
@@ -5,8 +5,6 @@ import PropTypes from "prop-types";
5
5
  import { validateField } from "./formvalidator";
6
6
  import { useFormValidation } from "./formvalidator";
7
7
  import * as FVF from "./formfieldvalidations";
8
- import { FontSelector } from "../config/FontSelector";
9
- import { CompoundFontSelector } from "../config/CompoundFontSelector";
10
8
  import "./form.css";
11
9
  /*
12
10
  InferProps to generate Types
@@ -494,5 +492,3 @@ export function FormHoneypot({ id = "winnie", name }) {
494
492
  };
495
493
  return (_jsx(FormInput, { ...hpProps }));
496
494
  }
497
- // Re-export FontSelector for use in forms
498
- export { FontSelector, CompoundFontSelector };
@@ -2,9 +2,17 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from 'react';
4
4
  import PropTypes from 'prop-types';
5
- import * as FC from './formcomponents';
6
5
  import { generateKey } from './formutils';
7
6
  import { FormValidationProvider, useFormValidation } from './formvalidator';
7
+ import * as FC from './formcomponents';
8
+ import { CompoundFontSelector } from '../config/CompoundFontSelector';
9
+ import { FontSelector } from '../config/FontSelector';
10
+ // Merge a local components map to include config-level components without re-exporting them
11
+ export const COMPONENTS = {
12
+ ...FC,
13
+ CompoundFontSelector,
14
+ FontSelector,
15
+ };
8
16
  const debug = false;
9
17
  /* ===== FORM ENGINE =====
10
18
  Generate all the elements to display a form */
@@ -18,6 +26,13 @@ FormEngine.propTypes = {
18
26
  export function FormEngine(props) {
19
27
  return (_jsx(FormValidationProvider, { children: _jsx(FormEngineInner, { ...props }) }));
20
28
  }
29
+ FormEngineInner.propTypes = {
30
+ name: PropTypes.string,
31
+ id: PropTypes.string,
32
+ method: PropTypes.string,
33
+ onSubmitHandler: PropTypes.func,
34
+ formData: PropTypes.object.isRequired
35
+ };
21
36
  function FormEngineInner(props) {
22
37
  const { validateAllFields } = useFormValidation();
23
38
  function generateFormProps(props) {
@@ -63,7 +78,7 @@ function FormEngineInner(props) {
63
78
  }
64
79
  });
65
80
  const componentName = thisField.component;
66
- const newElementType = FC[componentName];
81
+ const newElementType = COMPONENTS[componentName];
67
82
  const newElement = React.createElement(newElementType, newProps);
68
83
  newFields.push(newElement);
69
84
  }
@@ -1 +1 @@
1
- pxl:v1:86e04f735168062824d413b1:5883875e524643b505d95e27e0585c0b:4a30ff9a7cbae3d6cd92119a3b521164bb8b4709e3d6695b3763d78c64a78809438af73c24208c4ec78b2dba8764201be7538cb15a29810c27e668768d7a4da4f731503be4fe91a5b20b91d74b042d472819ffdfb18e98c81c07323e867df49eed4c76a332a0750dba738304b225d8f2c37cded9360ea8ac6de7847f6ab2ed45ccab108f895462893c6d32d6fa83e11e865895db16d00b889ca610486f1e9d4e109de0b22f530dec3f2405075d60fe23eb4a842b3672a50d4de3860476c9a372e268ca060e41812f5573c10449e8cec75fbbdb48babe445840d025c8f9af2d8edb9ca3afd8c699e8afeb5dddb6777d9acbf9874c6f3ec49085e9540345ae94790ed3f1a9c2ebee2b3d03a38ae0494c1233603c6e27827a21a49a13f8923c8af4e6b37492560bdbbc4f1ad0a7e792f043ee32b60b9ef142c87481478ebd43f44050be1779b6c2589fb77c35cfb430154452300bb7c4cb7a3777437312d14c3f10a63e70c065a2b7c7040a68656cdebca6174f2db508816585d84038071db0c65ec1deb7a1c7207c6e65212b74dbf90a8ec3b2cf6d09a85e8b7e9966ed1fa1d850df088a964a58daf96c6d0b2a3666ae4fc709c5b9d4e5bfa59d613eb40eaeb7147ffebab606f59c3b7b756b0e1301c021c37f393cb26767f3d026f77f0f7adfc9bb566ee81eeb2362d0246bff02a722a9f266e8f1cb0210ce804b824bec262ec0a24c286f59032aac1f848eee54020a090c075cb167b3e30aabdcc94cb8fb06095be0b51b67c029500259a1f5ed62afa8a46f7d36586b72bdb9b01cbcbfd4818d7ec9418b81ae601217043bc398fc8b297a3b4d6b034ce6bb98854fe69f66c752f6db2b85b9699443b331422be76f12ad7b7fb72f2f02639f515c627afa9edbf1ab564551af5dae519de9d10885218b249436cd754fcc268a1b455f2dc4ea4d1b480abea0cbf696d7835070df8c9a88a586728a70486f180455da58761f175951d2e22a16efe489941348c341c56a790abe8774bd4d5fcedbcde98ed388ce93bc27dec35d0e914d0fd30c214a25a9662f3fe4da265cdaf6c5447317a2985c1be0225ac30c1ecc78cc0193b144ac1a543b11d3689ef57b4dee0b29be6d24712ddabe850c70e20e69eda3776bfcc2d1a176747d1cf8b38e3a5317ffee831acc8d440fd47aa46ec7cda7031c2d07d8883e123c61ee34f37b8bc958ad2ad46fbb83718a7ece98e670a7bb155132c765bbf067062565e7ebdf372a02cb7ddbc8f080fc5ff15163d73fec5152b066a043a27d33579e97734d327ab65996f834de43d6c218fdbf100a4a1e6e4d5fb72e430fb049061da47f43f88faf9fb79ee186b103172b9a39f7e5747a646e45975e326103296d2ce7a6f6313b3d9372641c04c162a075500987460c7d24fd94fec51b049d624d44620215fd737d88632ac9121c6bd017c34d47e7b9ca6494e5592350d0b817d25301d79284133bd4093fd5bd1d1ee92f10acef720c56e0166cb2993d7724c76feb9fa9f72ff1f03fcdb75149f943f0c333377f4599a53ae967390f9f7c13c40762412014a362791debb4fbb297b125cfc206c9420ef08154bab3aa5238115f957ec8047a2d480be647b6a6e07b5a3c16483cf0207a3755bbb82e66d932c2b042d3ec36325a29332fbbcd1342d246bb4cc13053c216e7fb5098eb5b645fd86cc13cd2ada7a35c77e40a2033c742f960e289ddd5ff6c9b53843e7e13abaf198fc5bea355f1c9386b0962a8c1aad7bf93739665e25a9e86aa94c589470dc0d410769a89ca8d0750fbc9b279557a32044ddccf3def258cfb114dea6d5ce74bd0acd56c58dab994e3dfd625f92885136b4d60a7b30a12cd7866b5cd349e7f23d4b125d66e5a0b4f33da610d13733409e68f0e7dcebf2d7f4489b66fffb74004424542c248e92dd5e8f970bfb49362b714c4dc4371337619a78c678fb7baa6deabda32b232adc9e606bad082c3a50ab28dfa021707e037ead5fd94e8da859693d5e539b577b21bb47bdaf0426111a0ac1398a1c00865c92c95c2cdabfbd672e26b788f22aef43cc98f7a3e1077a87d20ee653b6ac33335693c0b017e1c586552175f3f58d327a828f4da3e5fbf06a58a55ec88e7293c6be1c04ce0b09d0f7675065862fe15b08141912ae619cf9bd592332b69b992af229a3e098b7fa383015abf089742541ca90c66a3b313522575899b489fdafc873418de9c825518162a54fd6777a755144f7e4fed278d732980bd3685c40499b203aece3ca222e911b144858c59f70c4d413ec4b965dbbfee16ea1934d9933f5f5e11ce3d4803c41e14479674d46d16815b33b14a3f4f5f4ce95ebcf3259be268e02a39bae72149a47d099f34412a688e03164d6fae85c5844c2e75cc8c99174ce31396e26a24ddaacc09c39943b92f8e989bd13c999387e4592afc0a2338b850f1ce4955bb650d6a92f717e4a13a09b18802418432fd4c14fa166710d3bd16b0cb3c145f069db82fc8d0a95219e930b0a072b33cacde6579a0273987688f7e1f573cf889b79dee69a0d28a9be9f15e610ce3a036ebf7515e12aaf08226dc67a73387d28cb025a6815a58886933951a463d4a67395e4d28d8975732aa795273406f591af4f4acf0c9e1b37c8c9e2d69e2955b1ec951c4b3cf1c241880e715dda9a4d2230a2c0413a54220714c7380d8d76f292b6bdbefa818b1ed19202514cad31893cffb112ad9abf673e9a98ad2805e42ee0449095fe23a26b39643b3cfef51131705195e5105cefc3de50cf8dfe1c6c3590699d629c17269d86c08c5058ad3996d8f0a964de42011876b06b928c4fbb8428167cf3edc11485922378d61b93e0ac552a8eaa0cce772e9d34793c70315ca8897264ca831a6e161dd782badc9121c27db9af4884f1714194355b7913dc5eb433f803391f440526105890ed5fe3ceb5be2b5c9e2aea9b9991b4d2f7acd8bb95da3f62914ca740a63b452b336ea75963b497388ea66a662a3a66656a8086bfca9461a414e6de0c8d282efcc4fadbc0d89195daa2bcd521d58f686d8c84e5144bf582e7cbf30f693ad274d2f0f1cc531f80fb5f6f7665e2a7b92b2edd8659a85d9ee266e70aa5770ac6a0eb346c30ce201bd347c33b86895794e71c4a95ac57c3ec92cd1a0bd5e44f731e8123865292acd4aced3ad1d59739d825d285d4d5142b5eb22be03c91496c7795674105d183970dfac2c8b297c19cf1ed05f4c9715efe78f3f519a8bc1c4f71574b67d7d2714e6f8a7ddded7a5981938424895f24c3f7c0b2b0e245c9e9c2c31122b2466043bcf999f3fe8a229f9da21dee1ddc4046a6d254d310e094c3abd7ec685087ef3b7b9bc0a2535a11906db45f3629f2b350ed5a98992721a23e31b4d0eab62dfa249b10f282d826a666ea42392505451dcea3354e5b31025c43244eb821c32d56b7d2967c0b95e4277a225cd0efcd03bb76f2f1b89c8ac48a05c5ff893a7d5074dcf0eb294edd615a4bed33c640b1cdec104757a1f06301b754bf23b9fd83b098d7b7f9a9e7fb4fc92d31b0151dd2fc04b7e9fa9d06fc0552b3fd00e865c179302972069c61b5db2a07893596a6a924f5fb9bee377e21ee4362a73fbfadd9d8e45c0d4e8352495e386d6175ac4a8440a89d22b09792054f2b21ab8c9a294211d5c2f134ee453110d137b6fcdc5a4ffd362cea86a3df6c79c6c2ffdc56ca32bf2d80133dc8f191a0f1dab2a111ff5a15447daabbf8eedcc078150e5b79bfd256c6de64e9c8e7f30a3a2d6a39fe0bd99ae460a82607102b9d2a95c048be7dfcb59a31281c9f7281b3ca456c51c90a4b4da346311b469b2ce37b07a793dfafb4aa0729d81375a077beb60ddf07c0c199bc872a7bb645e57b87ea3e45bec30bbd10083ed19c74a5267cb304bbdc0f7da47b420a0e73a9208946784f02c766b58a509774409b29c67783a51af2fcf19a91fbc5b8893346f404b31f71d182b8374b773f9f00925585722b991d468a8c03626d85925f363046f49c49b92be7735dcaa1e21e917812068e2d4c76ac53e9eb5ae22fb267bc2c8f870d5810f104c927cd7ffe7b0e5cee47b0c8d7ce420208f1f69dc763d205f52e049480e8efd85d66561ec4f7f2e224632d39a0d314437870d75c6a1856796e21c3ae8fa75484971424bf1057bd5cb8725c1a05dc8b5d5bedac3ad2c1aefca2dd8a4a59ade6161e70614115cdff44796a60e547c734f2fada381ba4449e3cddc44a6cde33256d39398afc8b2b1b2ecfc3760801cc3de1a0fd57c90e8154bb277a3c9596d64fa4dbc5ff3e38ae1b592698e7b61c403b86567bc06dc343c685bf4f985d4a8f8c9d6ca91e51472edaf661bfbf9d29e6b4882e27d59a73a809cb7628d4c899095dec997d1858a1921659ccc5f19e41d30f76355bdf9deed80faafcc586501c64b005fe98ff6ad8d21ae016a29c0c63e8aaeef018015936eebddeaa342107b8c342c217ebd8b6c56c2278434d14d90728816f38b7c05072a2315d9e1c82fa9efbd097170f7879049700e15ab688b66e23c205c44022085e03220d100ef84318cf63b38e63a17f53165212171d34f2de945a24102fc7907d2a883ce47e5ebe5683497ebe2bf64a69010e7a84e1c30da50d02f07df34695e8b536c5d8c817ab25b5dbbb3c1e39766179c657a388370e4f35a283b8b8580ee8ddd183548d132fe32c8ab618c1c02cb337310e5316a3bd780e6f7aa550ce1d4aa4900c2e55915d482fc9c3e6dcb79dec1e17d77f2e6603e478efcb1df4507a8430f508ec798ee39cd0140c6dc1d5e734ca8803e5cb241cd259795f63ac13b2bba29053fe2fdf765f4892b1bc779bff577b5e22d2b3e2a94d2d9ec5860f03479c0be7334277815e8475cdb6801810e0ad35bdead9a04e5f3783921246a996d91ed2a66bfc9191fce6e5af08a689881b732e28ad08878465d791e2d93332e3421c12a6b8dd42e13300e4a78f801f0b1785b408d844a58f7d754f2c183cd1a74de05a29abd7b17a576ec85d63507c8ecb12780f829617adede0f8fa50881f36b5c9f4411013e0ed2d42855092bc40ee97aacd0ad578c4459c389a72f8639f001e37567a4087d3179f01f5b2bbdbb866e2ee2bc5ac7d212c9aeacc16c3755ff2c50505b8a679fba9e35283c0a474f935b96a2172467fff97bff97
1
+ pxl:v1:04c22fa932efcd65e861928f:011c2edeb8c5423cd0b0cbe83db3ea40:bee9bf028d3476dd7717dec2ac3bd602abe684f47aae946b4ea2f3f0216f7dc5b10c59160c57598a507e4651b26fa52939830353027724de55e31a76b8fb7bedc7446a943774e63895b4da270cc2a0cd448d404e1ef3299e59b413ebb982891cdc154e5fd6ec1b1e80ed4a18727df8e105a0c1410b3f3f90c0d9db32b97cb99eed3357d7c9b4e494b88da792125bf304cd90396a0ba6bea58b2d75f12f98ffc5c666f302ea98ad089f8d485a242f0e6cd2216d2802d5c39a510caf5b8cfd935a71434d9421729ba4f68ee5b0be991b35400a4517dbf8172a398232763aeda7a33a218487612a4bff837bd76c1cafad538d9c40ff2ad0881b6616ca60c48b3021ddc69ddd300afeeca075e6507cc642c49c56e3d5ea5c4abf5901b7956e63c8f2e673465794b76bf9c022bbb717898b655709864e4925b1d557d1fedeac89b1d2f15b10e40ff833ff2befef0bc905eb1fedac7ec72948cee80898d78b198b0955e1c46fa03574d3693263989720317513a656a0484660813325efbf2ec588ea0780c6b8104707a27a067b172a535a8d43c9dc16491afc8e2a2dbf1df6194e04eca43327ca71466817708639c86b5beba362f226cf7ba4f33803c1c3d9c91b53de7d5cc66c2c1067caecfc801446006f3747cd16e6ba105f90c328cb782a0d3bf9b4017fc4886013f3ed3bce327551a16957755f79c2954d67c9751386ceff0de78e979502c7e46bea3130b8efdb76f63dd70d34db345a7792577ce9367705f1bbb8af3e86a8da76f6ede8a5624a9bd7754eb16b6a517ed5e200ab5a300713baeee51b75f1f1331d04166359ae8d8c7295936a0729b38ffbc43dbe5f79daf209f709dcebc2ff658379cc23f2ab1be94facb69fed616658c0b80a7c74bfad69baf157fcdde6cd73d120eb6544c01f10a86e42f076ad3700497c65e17a7904df16face78287f7dab28f13cc2e172a4c80b929bf90b7d43383b4cbdb0eccb8ceaa8fed57f6420c0c742ba0b7cd03ad80d23e8feb24863385b8d04a4cda5b56115c518e16454d5298ba4d177c90ac3005fc2fba69cbe0d1de7bcf8701880b162fada0f88b25ad5c4e2456d6bc37d2ccf15cb721f019426df57cc862e76c5ef87240fef1d74dddfd5f263f70f87e13be06dd465de1b2c727a6f650d7a45d42113ebcf831853830561586f960e28c007350e2389365edb93bbca3ce7fcf88f665214b93badf29f762deec9d193ec570f4b7b7148eb13960954e3f7179f76ffd894171f2c7811266138fb7ea9ce2c7645eeafc448ae427db3fa23415ae752d8bcf362b18cee07d210f703f7f23821365520149683e635fee4ee28f2642b6b360827360964dbd6267cc20479a551956ecfa105ae372407ac99612a74c5c3a362370766f6b0802e7781c66205c1e2d21ecfc486c79d245f45f69b805d9bc28d87fa369f73c21b230df0c9bcdb28c1b800c0f6458056cc4169e5dbdacbcdf1668fbe57068f5d5e96ff4fcff81df11ae683a862b73b0774a324e8edb9c37594d2eaa9dae898119a6bac58b40e2bd60cd32dc914703cd236a3228ed872de0181b3a9ba1904712ca70ef8b1eca63e00f0c5642dd4e6197e8bc8fe4d9669d13fb0bf0dbc4061b34719465258c8e93a08c652044c65b0e891a233717c20709d6cd04cd05b06ce4dd3b930da368ded9368f550e8a37efa191fd770414f62590495f7c37f640f477242528e61aaaff217630f08b90c6e933cefda705efe3c8d5919cb22435f3351cb3057b616436a64d2c5c60ce1fded1c93d8f2990a9282d2e891e738ef07bce86b37cef1f45071f7ff163befbbc016e065e8abe52700f7e984225a735eec2274c7aec3484b3fa0e01fc3968ba158397a4f6422fa04d9c783ccfa2351affc77d04b19faeb1f0c8f7198e2e41bfadb55048baa4377942353cfa0ac6f16bb4c54ebdaefc978c951d57618511e6d3f2bde1a153474f30ffb826f8bf4af10ede9b3e39ad23244cea475270ccc373f80f27b381a9bcc3b639190279f294583a8bbc29f625ae20795e74e5886f130118f424f46fac1e1c116f098b6e0b96da09b2ed12c09d053263f29ea4aa92c55d056baf94258666d7486998f6efc3f0b2b2e60b97fcfe502fd73e4cd93f51c4d925b8384f44b0939132e077e3f0d36ab0126032249836ef438d6d059ac3341effb4e7f85d1656571a57dcb547a2419ddbcc18db79d9e532582a6ba3e1849d5cb067d1a6ff8b54cb2dc36c2d6bc1a3c028d8fce3e2eead4f7dc266c5f9a450071aa27d7e371d8f073c3072270970f7586cfd1540f73bccb73525d2eff0c4876587fa526b816d8c68cda674a77a1fab6abe1498907b281b06e3febf1f1eb760042187890792c8d96c458df9d8a1f5905ab20ec340cf3da35f931c004006aa57d030818503d9ca8893bfad7bb007a824e0968006356a13216274010895a99df6a9482a60a1eb093502f3c3102c70a45616b6e8c3e1e821781020a53e8900a4419632129e12dc5ce475c041dc73d72ea51162d0396e731add0386ad2efa9a54394f18217a8093fa4bf3265c7af2de59f981ce668639799cf20a1257c5b69ce027675a01a628b0d2e078b9e156b7330f3898ae3f1d028fc24d34c8524568b43b80e14431546038e078af5c9d3dcf40378381adad05a133ce7205de6c650126bd49777b98ba1befbc2a62d2482d898b328e1d089ffaf0e967cf0be0c5a20958ca17cda9ed6b0e3cd25b2d080534764b2c2858183104ec301cb9277dfea1537325eaf677789d9db6264b3dead789245402ca2b876a395922ab371130c4c7a0082001725dfba6abc3a2c25f9181af6d6dbd9f6661f4febc0c2f32d2ca707f92221aa9326fdd61b3b781c9a96befce0b8ef3db46f9ac836fda36c5999763c452371e3b39efb8e90fb13019466aa662762e7d9a3750bf6fb62dd0898bd5266e274ee51b2201be81275ced4d6bea51d1ead3b55bbf665f8ed81b3ccf64cfa3d91d31eacf7f10a01857883eb77a7dd02343ae14a06c2e44a67a3518437201dcd3e502b780d9b9d3832ebad1abcbda9ebff2ceaa30fe258a086790251af091077c699eb875ee65498a93ef2cb6a2bc6e907d1c66d6e2c4ccdfc7cc89cec06d01daaeb2254e6e789a74595e959ef5cade4fdb86bba5e4f2d2c5b8c5a704f8f532a87c08bc8e0b7121355a9cea4c36943d5d14de4dab2fc8fede84e7c17cba6bf995a453c35cef2642af02e9898e387db489888d391aed33de31ca5615bf7508ca564b15290ffa7d7846205cfcadfa9c3fc8f1da33a1ba84801c79dd001fc38db25f1c196540b09bf19124d307f22602bceb2761bed22b0c1f5cf4f2dc43c121be913127037bc4616f56b31a02774b0ddf561164b645bd6a8730f890fcec37fffe63968f9d3390fdfbf3110030b7d93167e15d7c9d5386036dc037d5d9b04d3cca9753370f178a8312419b382fd7de7b304bd6dc5475f93ba3ea226f62976334890e883a2c67debc98aafbed9dc46caf6a1774dbb9d909c880ad70007e8f17bcade88094e09978efeb14e9ff02a436cf18304626d210d7b3ee723938ff476e9f8e6a100a664cd8348781b76d9da61d5eb14ac2054b553f4c6952389cd0de63c8f8868c5678092e68c5199b31ece0bd10b7ce63f6951ac7fa58ebf226bb6ff1998dacad170228f1c5ac8febb049d8819bc2e3e2101627af77660ca66e7615ced34ac0493bb98505c2577307f6a47b9809df6f3fb5f7985b3f33112347e0204a20c90d87076fbfdc094ae240641e18efd53fb8487cb39cf0c3a6703c12caa8feba4a8fb5d8339f201f3b8fe9ca3f9897e0c71e8e3218a0b07ddc3efd5cce53c37c89d9c52cec71cf5f87db76f4521d24b195946284688b21e092b18b956d4801cabf853d960cf879f3531b12541b2361eca681cce41a45e7750ad87bf4321bbd8f380e8e1460007e5a506d1d5bb62fe1557f8ba7be6ae43685e1ac8b4e016ae389c4cd6e74f735b7a2f14737364f232a108a6cfa9d98511342751c799256c408348251002f62cd9451cc159e1b9f52cb2dbceac4c85a67761fca7a65a5c03d3e341e84d2250e616ea2d49a320705dab3b5b5ee55694aee53e03f1d7bf068f0432a6b843cd894885d210f88258559a5ff3424d10996552bdefe43be0862326bae6380a994420cbd1662530617d06bd5038f14b47148091fed6a50127e0aac2f67033a40eb477e13faa0c7716926ed696089a894c7efbfe94fd59c9cf6f9cd1bdd3be76bcf3cb7b68e1a201cfa0aa5bd0e852b9090038884cc58c2f0a3f020211ccf76c53cefb5ed4321052b48e02e49bae139af404add92e167bb180fd2438150875c8e71ac3dd08d09105def54bda8a157a8cdeb1baea9db9ef043ef93dd0fcacd120bd03f9f5d301b2cfd435ebc049340eb841cc0bd9f925a9fb7ddbffb00b992414bde0c7914951ea3cd40702a2b7beaa8191a2fbe99aa03f909165a943c4a162e721ccd63cfc983ae28be1f1cf3a5267b3368578120e715673c67309bd5b1ff5724cbbad607fbb19dc1ba62f489e65a30069e9851e9bf481225fcefc948bdd2a423e742fde1d84b579b2fff5303360417f4f931662205cbdb7fb5652576f152ce1ea0d26e49a42719440afbc6439d9ae3d05a4e83ae494448866296d55675aedc52f5b9bbfd8627b355b53d3795b459acd5c11c5c2469cd17eefc5b9d6f6361b1d418b8c45c2efad7eb86f3284e8df193d969f33fa2084f791e100e560778748642ad78e664544941923c01d50a709f555d41d451e839680fff3143348536a2f8302eaf803a3e1b9da99793bfb98a3fd4d15b341bf496a02ea70fbb249b9ddfb36f31c093594b523914c0e3cba759715f47a19c2b03d52dbf6e5624152b328d6a1cf1113a4703a087519d925e06c06b00b6b1aea28a38894cc4485c61b3387a381c7ea6b881ffc76bf7bee741d7de0c64a6d252d10263de7ab1977e102aec6a380723b5b1f5089527d33fc56e9504b1b0c982cde40f6d1cc63803bb12a9711744b21773ad20a4c3a491d298bfd00149655d6c83ab3716559f9772d284f2f700464a6e64d7686f49311fb8e778cff63c7baeff8c3711ffd7ca882189e48153e9623d37f8fe6e347e3a0754629d2c992bd1c4f2de1b6f3a9c9537c188c804c0c88bdba8cd15d5061a8584d
package/dist/index.js CHANGED
@@ -12,12 +12,10 @@ export * from './components/general/carousel';
12
12
  export * from './components/general/carousel.drag';
13
13
  export * from './components/general/css';
14
14
  export * from './components/general/faq-accordion';
15
+ export * from './components/general/hero';
15
16
  export * from './components/general/image';
16
17
  export * from './components/general/intersection-observer';
17
18
  export * from './components/general/loading';
18
- export * from './components/general/skeleton';
19
- export * from './components/general/skeleton-loading';
20
- export * from './components/general/splitscroll';
21
19
  export * from './components/general/manifest';
22
20
  export * from './components/general/markdown';
23
21
  export * from './components/general/menu-accordion';
@@ -41,7 +39,10 @@ export * from './components/general/schema-website';
41
39
  export * from './components/general/semantic';
42
40
  export * from './components/general/sidepanel';
43
41
  export * from './components/general/sitemap';
42
+ export * from './components/general/skeleton';
43
+ export * from './components/general/skeleton-loading';
44
44
  export * from './components/general/smartimage';
45
+ export * from './components/general/splitscroll';
45
46
  export * from './components/general/styleguide';
46
47
  export * from './components/general/global-error';
47
48
  export * from './components/general/tab';
@@ -50,6 +51,7 @@ export * from './components/general/tiles';
50
51
  export * from './components/general/timeline';
51
52
  export * from './components/integrations/calendly';
52
53
  export * from './components/integrations/cloudinary';
54
+ export * from './components/integrations/loremipsum';
53
55
  export * from './components/integrations/contentful.delivery';
54
56
  export * from './components/integrations/contentful.items.components';
55
57
  export * from './components/integrations/contentful.management';
@@ -10,6 +10,7 @@ export * from './components/config/config.utils';
10
10
  export * from './components/config/config.validators';
11
11
  export * from './components/config/crypto';
12
12
  export * from './components/general/manifest';
13
+ export * from './components/general/hero';
13
14
  export * from './components/general/metadata.functions';
14
15
  export * from './components/general/proxy-handler';
15
16
  export * from './components/general/resume';
@@ -304,6 +304,20 @@ fi
304
304
 
305
305
 
306
306
 
307
+ echo ""
308
+ # Prompt for release mode (default: both = push dev and update main, tag, and publish)
309
+ echo "🔀 Step $((STEP_COUNT++)): Choose release mode"
310
+ echo "================================================="
311
+ echo "1) Dev and Main (default - pushes dev, updates main, tags, creates release, and publishes)"
312
+ echo "2) Dev only (push dev only; skip main update, tagging, GitHub release, and npm publish)"
313
+ read -p "Enter choice (1-2) [default 1]: " release_choice
314
+ if [ -z "$release_choice" ] || [ "$release_choice" = "1" ]; then
315
+ RELEASE_MODE="both"
316
+ else
317
+ RELEASE_MODE="dev-only"
318
+ fi
319
+ echo "Selected release mode: $RELEASE_MODE"
320
+
307
321
  echo ""
308
322
  echo "📤 Step $((STEP_COUNT++)): Pushing dev branch..."
309
323
  echo "================================================="
@@ -326,116 +340,136 @@ fi
326
340
 
327
341
 
328
342
  echo ""
329
- echo "🔄 Step $((STEP_COUNT++)): Updating main branch..."
330
- echo "================================================="
331
- # Force main to match dev exactly
332
- git push $REMOTE_NAME dev:main --force
333
-
334
- # Also update main locally if it exists
335
- if git show-ref --verify --quiet refs/heads/main; then
336
- git branch -D main 2>/dev/null || true
337
- git checkout -b main
338
- git reset --hard dev
339
- git push $REMOTE_NAME main --force
340
- git checkout dev
343
+ if [ "$RELEASE_MODE" = "dev-only" ]; then
344
+ echo "🔕 Step $((STEP_COUNT++)): Skipping main update (RELEASE_MODE=dev-only)."
345
+ echo "================================================="
346
+ else
347
+ echo ""
348
+ echo "🔄 Step $((STEP_COUNT++)): Updating main branch..."
349
+ echo "================================================="
350
+ # Force main to match dev exactly
351
+ git push $REMOTE_NAME dev:main --force
352
+
353
+ # Also update main locally if it exists
354
+ if git show-ref --verify --quiet refs/heads/main; then
355
+ git branch -D main 2>/dev/null || true
356
+ git checkout -b main
357
+ git reset --hard dev
358
+ git push $REMOTE_NAME main --force
359
+ git checkout dev
360
+ fi
341
361
  fi
342
362
 
343
363
 
344
364
 
345
365
  echo ""
346
- echo "🏷️ Step $((STEP_COUNT++)): Creating and pushing git tag and release..."
347
- echo "================================================="
348
- new_version=$(get_current_version)
349
- release_tag="v${new_version}"
350
- # Use commit message as tag/release message when available, otherwise default
351
- tag_message="${commit_message:-"Release $release_tag"}"
352
- if ! git tag -l | grep -q "$release_tag"; then
353
- echo "🔖 Creating annotated tag $release_tag"
354
- git tag -a "$release_tag" -m "$tag_message"
355
- git push $REMOTE_NAME "$release_tag"
366
+ if [ "$RELEASE_MODE" = "dev-only" ]; then
367
+ echo "🔕 Step $((STEP_COUNT++)): Skipping tag/release creation (RELEASE_MODE=dev-only)."
368
+ echo "================================================="
356
369
  else
357
- echo "ℹ️ Tag $release_tag already exists"
370
+ echo ""
371
+ echo "🏷️ Step $((STEP_COUNT++)): Creating and pushing git tag and release..."
372
+ echo "================================================="
373
+ new_version=$(get_current_version)
374
+ release_tag="v${new_version}"
375
+ # Use commit message as tag/release message when available, otherwise default
376
+ tag_message="${commit_message:-"Release $release_tag"}"
377
+ if ! git tag -l | grep -q "$release_tag"; then
378
+ echo "🔖 Creating annotated tag $release_tag"
379
+ git tag -a "$release_tag" -m "$tag_message"
380
+ git push $REMOTE_NAME "$release_tag"
381
+ else
382
+ echo "ℹ️ Tag $release_tag already exists"
383
+ fi
358
384
  fi
359
385
 
360
386
 
361
387
 
362
388
  # Create a published GitHub release for this tag (prefer gh CLI, fallback to API)
363
- echo ""
364
- echo "📣 Step $((STEP_COUNT++)): Creating GitHub release..."
365
- echo "================================================="
366
- REMOTE_URL=$(git remote get-url $REMOTE_NAME 2>/dev/null || true)
367
-
368
- # Use GitHub API only (no gh CLI). Ensure GITHUB_TOKEN is present
369
- if [ -z "$GITHUB_TOKEN" ]; then
370
- echo "⚠️ GITHUB_TOKEN not set; skipping GitHub release creation via API"
389
+ if [ "$RELEASE_MODE" = "dev-only" ]; then
390
+ echo "🔕 Skipping GitHub release creation (RELEASE_MODE=dev-only)."
391
+ echo "================================================="
371
392
  else
372
- # Derive owner/repo from remote URL using shell-only parsing (robust across platforms)
373
- repo_path="${REMOTE_URL#git@github.com:}"
374
- repo_path="${repo_path#https://github.com/}"
375
- repo_path="${repo_path%.git}"
376
- repo_path="${repo_path%%/}"
377
- if [ -z "$repo_path" ]; then
378
- echo "⚠️ Unable to determine repo path from remote URL; skipping API-based release creation"
379
- else
380
- # Check if release exists
381
- # Diagnostic: show remote and derived repo path (non-secret)
382
- echo "Remote URL: $REMOTE_URL"
383
- echo "Derived repo_path: $repo_path"
384
-
385
- # Quick access check to see if token and repo path are valid
386
- access_resp=$(curl -s -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/$repo_path")
387
- if echo "$access_resp" | grep -q '"full_name"'; then
388
- echo "✅ Repo accessible via API: $(echo "$access_resp" | sed -n 's/.*"full_name"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')"
389
- else
390
- echo "❌ Repo not accessible via API. GitHub API response: $access_resp"
391
- echo "Make sure GITHUB_TOKEN has 'repo' scope and the repo path is correct; aborting release creation."
392
- # Do not attempt to create a release if the repo isn't accessible
393
- exit 1
394
- fi
395
-
396
- if curl -s -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/$repo_path/releases/tags/$release_tag" | grep -q '"tag_name"'; then
397
- echo "ℹ️ Release for $release_tag already exists on GitHub (API)."
398
- else
399
- echo "🔔 Creating release via GitHub API for $release_tag"
400
- payload=$(printf '{"tag_name":"%s","name":"%s","body":"%s","draft":false,"prerelease":false}' "$release_tag" "$release_tag" "${tag_message//\"/\\\"}")
401
- resp=$(curl -s -X POST -H "Authorization: token $GITHUB_TOKEN" -H "Content-Type: application/json" -d "$payload" "https://api.github.com/repos/$repo_path/releases")
402
- if echo "$resp" | grep -q '"id"'; then
403
- echo "✅ Created GitHub release $release_tag"
404
- else
405
- echo " Failed to create GitHub release: $resp"
406
- fi
407
- fi
408
- fi
393
+ echo ""
394
+ echo "📣 Step $((STEP_COUNT++)): Creating GitHub release..."
395
+ echo "================================================="
396
+ REMOTE_URL=$(git remote get-url $REMOTE_NAME 2>/dev/null || true)
397
+
398
+ # Use GitHub API only (no gh CLI). Ensure GITHUB_TOKEN is present
399
+ if [ -z "$GITHUB_TOKEN" ]; then
400
+ echo "⚠️ GITHUB_TOKEN not set; skipping GitHub release creation via API"
401
+ else
402
+ # Derive owner/repo from remote URL using shell-only parsing (robust across platforms)
403
+ repo_path="${REMOTE_URL#git@github.com:}"
404
+ repo_path="${repo_path#https://github.com/}"
405
+ repo_path="${repo_path%.git}"
406
+ repo_path="${repo_path%%/}"
407
+ if [ -z "$repo_path" ]; then
408
+ echo "⚠️ Unable to determine repo path from remote URL; skipping API-based release creation"
409
+ else
410
+ # Check if release exists
411
+ # Diagnostic: show remote and derived repo path (non-secret)
412
+ echo "Remote URL: $REMOTE_URL"
413
+ echo "Derived repo_path: $repo_path"
414
+
415
+ # Quick access check to see if token and repo path are valid
416
+ access_resp=$(curl -s -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/$repo_path")
417
+ if echo "$access_resp" | grep -q '"full_name"'; then
418
+ echo " Repo accessible via API: $(echo "$access_resp" | sed -n 's/.*"full_name"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')"
419
+ else
420
+ echo " Repo not accessible via API. GitHub API response: $access_resp"
421
+ echo "Make sure GITHUB_TOKEN has 'repo' scope and the repo path is correct; aborting release creation."
422
+ # Do not attempt to create a release if the repo isn't accessible
423
+ exit 1
424
+ fi
425
+
426
+ if curl -s -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/$repo_path/releases/tags/$release_tag" | grep -q '"tag_name"'; then
427
+ echo "ℹ️ Release for $release_tag already exists on GitHub (API)."
428
+ else
429
+ echo "🔔 Creating release via GitHub API for $release_tag"
430
+ payload=$(printf '{"tag_name":"%s","name":"%s","body":"%s","draft":false,"prerelease":false}' "$release_tag" "$release_tag" "${tag_message//\"/\\\"}")
431
+ resp=$(curl -s -X POST -H "Authorization: token $GITHUB_TOKEN" -H "Content-Type: application/json" -d "$payload" "https://api.github.com/repos/$repo_path/releases")
432
+ if echo "$resp" | grep -q '"id"'; then
433
+ echo "✅ Created GitHub release $release_tag"
434
+ else
435
+ echo "❌ Failed to create GitHub release: $resp"
436
+ fi
437
+ fi
438
+ fi
439
+ fi
409
440
  fi
410
441
 
411
-
412
-
413
442
  echo ""
414
443
  echo "🔐 Step $((STEP_COUNT++)): Publishing to npm..."
415
444
  echo "================================================="
416
- # Function to prompt for publishing
417
- prompt_publish() {
418
- read -p "Do you want to publish to npm? (y/n): " should_publish
419
- if [ "$should_publish" = "y" ] || [ "$should_publish" = "Y" ]; then
420
- echo "yes"
445
+ if [ "$RELEASE_MODE" = "dev-only" ]; then
446
+ echo "🔕 Skipping npm publish (RELEASE_MODE=dev-only)."
447
+ echo "You can publish manually with: npm publish --access public"
448
+ else
449
+ # Function to prompt for publishing
450
+ prompt_publish() {
451
+ read -p "Do you want to publish to npm? (y/n): " should_publish
452
+ if [ "$should_publish" = "y" ] || [ "$should_publish" = "Y" ]; then
453
+ echo "yes"
454
+ else
455
+ echo "no"
456
+ fi
457
+ }
458
+ # Function to prompt for OTP
459
+ prompt_otp() {
460
+ read -p "Enter npm OTP: " otp
461
+ echo "$otp"
462
+ }
463
+ should_publish=$(prompt_publish)
464
+ if [ "$should_publish" = "yes" ]; then
465
+ npm login
466
+ otp=$(prompt_otp)
467
+ npm publish --loglevel warn --access public --otp=$otp
468
+ echo "✅ Successfully published to npm!"
421
469
  else
422
- echo "no"
470
+ echo "ℹ️ Skipping npm publish"
471
+ echo "You can publish manually with: npm publish --access public"
423
472
  fi
424
- }
425
- # Function to prompt for OTP
426
- prompt_otp() {
427
- read -p "Enter npm OTP: " otp
428
- echo "$otp"
429
- }
430
- should_publish=$(prompt_publish)
431
- if [ "$should_publish" = "yes" ]; then
432
- npm login
433
- otp=$(prompt_otp)
434
- npm publish --loglevel warn --access public --otp=$otp
435
- echo "✅ Successfully published to npm!"
436
- else
437
- echo "ℹ️ Skipping npm publish"
438
- echo "You can publish manually with: npm publish --access public"
439
473
  fi
440
474
 
441
475
 
@@ -454,9 +488,15 @@ echo ""
454
488
  echo "================================================="
455
489
  echo "✅ Release complete!"
456
490
  echo "================================================="
457
- echo "📦 Version: $(get_current_version)"
458
- echo "📋 Branches updated: dev, main"
459
- echo "🏷️ Tag created: v$(get_current_version)"
491
+ if [ "$RELEASE_MODE" = "dev-only" ]; then
492
+ echo "📦 Version: $(get_current_version)"
493
+ echo "📋 Branches updated: dev"
494
+ echo "🏷️ Tag created: (skipped)"
495
+ else
496
+ echo "📦 Version: $(get_current_version)"
497
+ echo "📋 Branches updated: dev, main"
498
+ echo "🏷️ Tag created: v$(get_current_version)"
499
+ fi
460
500
 
461
501
  if [ "$should_publish" = "yes" ]; then
462
502
  echo "🔗 https://www.npmjs.com/package/$PROJECT_NAME"
@@ -0,0 +1,123 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import * as childProcess from 'child_process';
4
+
5
+ /**
6
+ * Zip the contents of a WordPress theme folder into Pixelated.zip.
7
+ * - Default target folder: sibling `pixelated-blog-wp-theme` in the repo root
8
+ * - Uses the system `zip` command (macOS/Linux). Fails with a helpful message if zip is not available.
9
+ *
10
+ * Exported for unit testing.
11
+ */
12
+ export function buildZipArgs(zipName = 'Pixelated.zip') {
13
+ // exported for unit-testing
14
+ // Exclude: the zip itself, VCS, macOS metadata, dev/build artifacts and common folders
15
+ return [
16
+ '-r',
17
+ zipName,
18
+ '.',
19
+ '-x', zipName,
20
+ '-x', '.git/*',
21
+ '-x', '.git/**',
22
+ '-x', '.DS_Store',
23
+ '-x', 'node_modules/**',
24
+ '-x', 'dist/**',
25
+ '-x', '.cache/**',
26
+ '-x', 'coverage/**',
27
+ '-x', '.vscode/**',
28
+ ];
29
+ }
30
+
31
+ export function zipPixelatedTheme(inputPath, zipName = 'Pixelated.zip') {
32
+ const scriptDir = path.resolve(new URL(import.meta.url).pathname, '..');
33
+ // repo layout: <repo-root>/pixelated-components/src/scripts
34
+ const repoRoot = path.resolve(scriptDir, '..', '..');
35
+ const themeDir = inputPath
36
+ ? path.resolve(process.cwd(), inputPath)
37
+ : path.resolve(repoRoot, '..', 'pixelated-blog-wp-theme');
38
+
39
+ if (!fs.existsSync(themeDir) || !fs.statSync(themeDir).isDirectory()) {
40
+ throw new Error(`Theme directory not found or not a directory: ${themeDir}`);
41
+ }
42
+
43
+ const zipPath = path.join(themeDir, zipName);
44
+
45
+ // Remove existing zip (non-fatal if it doesn't exist)
46
+ try {
47
+ if (fs.existsSync(zipPath)) {
48
+ fs.unlinkSync(zipPath);
49
+ console.log(`Removed existing zip: ${zipPath}`);
50
+ }
51
+ } catch (err) {
52
+ throw new Error(`Failed to remove existing zip '${zipPath}': ${err?.message ?? err}`);
53
+ }
54
+
55
+ // Ensure `zip` command is available
56
+ // Prefer checking availability via `which` but handle ENOENT gracefully (some test runners don't have `which`).
57
+ let which;
58
+ try {
59
+ which = childProcess.spawnSync('which', ['zip']);
60
+ } catch (err) {
61
+ // spawnSync may throw ENOENT if `which` isn't available in the environment
62
+ which = { error: err };
63
+ }
64
+ if ((which && which.error && (which.error.code === 'ENOENT' || which.status !== 0)) || (which && typeof which.status === 'number' && which.status !== 0)) {
65
+ throw new Error('`zip` command not found on PATH — please install zip (e.g. `brew install zip`)');
66
+ }
67
+
68
+ // Run: zip -r Pixelated.zip . (exclude the zip file itself and .git to avoid embedding repo history)
69
+ // Note: patterns are passed directly to zip; include both simple and recursive patterns to be safe.
70
+ const args = buildZipArgs(zipName);
71
+ let result;
72
+ try {
73
+ result = childProcess.spawnSync('zip', args, { cwd: themeDir, stdio: 'inherit' });
74
+ } catch (err) {
75
+ // Normalize ENOENT into a clearer message for callers/tests
76
+ if (err && err.code === 'ENOENT') {
77
+ throw new Error('`zip` command not found on PATH — please install zip (e.g. `brew install zip`)');
78
+ }
79
+ throw new Error(`Failed to run zip: ${String(err)}`);
80
+ }
81
+
82
+ if (result && result.error) {
83
+ // If zip produced the archive file despite reporting an error, accept the result
84
+ if (fs.existsSync(zipPath)) {
85
+ console.warn('zip reported an error but output file exists; continuing');
86
+ } else if (result.error && result.error.code === 'ENOENT') {
87
+ throw new Error('`zip` command not found on PATH — please install zip (e.g. `brew install zip`)');
88
+ } else {
89
+ throw new Error(`Failed to run zip: ${String(result.error)}`);
90
+ }
91
+ }
92
+ if (typeof result?.status === 'number' && result.status !== 0) {
93
+ // If the zip CLI returned non-zero but produced the file, treat as success (warnings)
94
+ if (!fs.existsSync(zipPath)) {
95
+ throw new Error(`zip exited with status ${result.status}`);
96
+ }
97
+ }
98
+
99
+ if (!fs.existsSync(zipPath)) {
100
+ throw new Error(`zip command completed but output not found at ${zipPath}`);
101
+ }
102
+
103
+ console.log(`Created ${zipPath}`);
104
+ return zipPath;
105
+ }
106
+
107
+ // CLI (ESM-friendly)
108
+ import { pathToFileURL } from 'url';
109
+ const entryUrl = process.argv[1] ? pathToFileURL(process.argv[1]).href : null;
110
+ if (entryUrl && entryUrl === import.meta.url) {
111
+ (async () => {
112
+ try {
113
+ const arg = process.argv[2];
114
+ const zipName = process.argv[3] || 'Pixelated.zip';
115
+ const out = await zipPixelatedTheme(arg, zipName);
116
+ console.log('OK ->', out);
117
+ process.exit(0);
118
+ } catch (err) {
119
+ console.error('ERROR:', err?.message ?? err);
120
+ process.exit(2);
121
+ }
122
+ })();
123
+ }
@@ -0,0 +1,13 @@
1
+ import PropTypes, { InferProps } from 'prop-types';
2
+ import "./hero.css";
3
+ export type HeroType = InferProps<typeof Hero.propTypes>;
4
+ export declare function Hero({ img, /* imgAlt, */ variant, height, children }: HeroType): import("react/jsx-runtime").JSX.Element;
5
+ export declare namespace Hero {
6
+ var propTypes: {
7
+ img: PropTypes.Validator<string>;
8
+ variant: PropTypes.Requireable<string>;
9
+ height: PropTypes.Requireable<NonNullable<string | number | null | undefined>>;
10
+ children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
11
+ };
12
+ }
13
+ //# sourceMappingURL=hero.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hero.d.ts","sourceRoot":"","sources":["../../../../src/components/general/hero.tsx"],"names":[],"mappings":"AAEA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,YAAY,CAAC;AASpB,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;AACzD,wBAAgB,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,OAAkB,EAAE,MAAe,EAAE,QAAQ,EAAE,EAAE,QAAQ,2CASlG;yBATe,IAAI"}
@@ -0,0 +1,14 @@
1
+ import PropTypes, { InferProps } from 'prop-types';
2
+ export type LoremIpsumType = InferProps<typeof LoremIpsum.propTypes> & {
3
+ proxyBase?: string;
4
+ };
5
+ export declare function LoremIpsum({ paragraphs, seed, proxyBase, className }: LoremIpsumType): import("react/jsx-runtime").JSX.Element;
6
+ export declare namespace LoremIpsum {
7
+ var propTypes: {
8
+ paragraphs: PropTypes.Requireable<number>;
9
+ seed: PropTypes.Requireable<string>;
10
+ proxyBase: PropTypes.Requireable<string>;
11
+ className: PropTypes.Requireable<string>;
12
+ };
13
+ }
14
+ //# sourceMappingURL=loremipsum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loremipsum.d.ts","sourceRoot":"","sources":["../../../../src/components/integrations/loremipsum.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAWnD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC9F,wBAAgB,UAAU,CAAC,EAAE,UAAc,EAAE,IAAS,EAAE,SAAS,EAAE,SAAc,EAAE,EAAE,cAAc,2CAyGlG;yBAzGe,UAAU"}
@@ -1,6 +1,4 @@
1
1
  import PropTypes, { InferProps } from "prop-types";
2
- import { FontSelector } from "../config/FontSelector";
3
- import { CompoundFontSelector } from "../config/CompoundFontSelector";
4
2
  import "./form.css";
5
3
  export type FormLabelType = InferProps<typeof FormLabel.propTypes>;
6
4
  declare function FormLabel(props: FormLabelType): import("react/jsx-runtime").JSX.Element;
@@ -231,5 +229,5 @@ export declare namespace FormHoneypot {
231
229
  name: PropTypes.Requireable<string>;
232
230
  };
233
231
  }
234
- export { FontSelector, CompoundFontSelector };
232
+ export {};
235
233
  //# sourceMappingURL=formcomponents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formcomponents.d.ts","sourceRoot":"","sources":["../../../../../src/components/sitebuilder/form/formcomponents.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formcomponents.d.ts","sourceRoot":"","sources":["../../../../../src/components/sitebuilder/form/formcomponents.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
+ import React from 'react';
1
2
  import PropTypes, { InferProps } from 'prop-types';
3
+ export declare const COMPONENTS: Record<string, React.ElementType>;
2
4
  export type FormEngineType = InferProps<typeof FormEngine.propTypes>;
3
5
  export declare function FormEngine(props: FormEngineType): import("react/jsx-runtime").JSX.Element;
4
6
  export declare namespace FormEngine {
@@ -1 +1 @@
1
- {"version":3,"file":"formengine.d.ts","sourceRoot":"","sources":["../../../../../src/components/sitebuilder/form/formengine.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAmBnD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;AACrE,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,2CAM/C;yBANe,UAAU"}
1
+ {"version":3,"file":"formengine.d.ts","sourceRoot":"","sources":["../../../../../src/components/sitebuilder/form/formengine.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AASnD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAIxD,CAAC;AAeF,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;AACrE,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,2CAM/C;yBANe,UAAU"}
@@ -1,5 +1,3 @@
1
- import React from 'react';
2
- import { InferProps } from 'prop-types';
3
1
  export interface ValidationResult {
4
2
  isValid: boolean;
5
3
  errors: string[];
@@ -34,33 +32,7 @@ export interface FormValidationContextType extends FormValidationState {
34
32
  validateAllFields: () => boolean;
35
33
  resetValidation: () => void;
36
34
  }
37
- export interface FormEngineProps {
38
- name?: string | null;
39
- id?: string | null;
40
- method?: string | null;
41
- onSubmitHandler?: (event: React.FormEvent) => void;
42
- formData: FormData;
43
- }
44
35
  export interface FormBuilderProps {
45
36
  setFormData?: (data: any) => void;
46
37
  }
47
- export interface FormExtractorProps {
48
- url?: string;
49
- htmlPaste?: string;
50
- }
51
- export interface FormExtractEngineProps {
52
- url?: string;
53
- htmlPaste?: string;
54
- setFormData: (data: any) => void;
55
- }
56
- export interface FormExtractUIProps {
57
- setParentState: (state: {
58
- url: string;
59
- htmlPaste: string;
60
- }) => void;
61
- }
62
- export type FormEngineType = InferProps<any>;
63
- export type FormExtractorType = InferProps<any>;
64
- export type FormExtractEngineType = InferProps<any>;
65
- export type FormExtractUIType = InferProps<any>;
66
38
  //# sourceMappingURL=formtypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formtypes.d.ts","sourceRoot":"","sources":["../../../../../src/components/sitebuilder/form/formtypes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC7E,iBAAiB,EAAE,MAAM,OAAO,CAAC;IACjC,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IACnD,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACrE;AAGD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7C,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AACpD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"formtypes.d.ts","sourceRoot":"","sources":["../../../../../src/components/sitebuilder/form/formtypes.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC7E,iBAAiB,EAAE,MAAM,OAAO,CAAC;IACjC,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CACnC"}
@@ -1,4 +1,5 @@
1
- import type { ComponentData, FormData } from './types';
1
+ import type { ComponentData } from './types';
2
+ import type { FormData } from '../../form/formtypes';
2
3
  /**
3
4
  * Component Generation Logic
4
5
  * Handles form data extraction and component object creation
@@ -1 +1 @@
1
- {"version":3,"file":"componentGeneration.d.ts","sourceRoot":"","sources":["../../../../../../src/components/sitebuilder/page/lib/componentGeneration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIvD;;;GAGG;AAEH;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG;IACtD,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAgDA;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,GAAG,EACnB,UAAU,CAAC,EAAE,MAAM,GACjB,QAAQ,CAyDV"}
1
+ {"version":3,"file":"componentGeneration.d.ts","sourceRoot":"","sources":["../../../../../../src/components/sitebuilder/page/lib/componentGeneration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAItE;;;GAGG;AAEH;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG;IACtD,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAgDA;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,GAAG,EACnB,UAAU,CAAC,EAAE,MAAM,GACjB,QAAQ,CAyDV"}
@@ -1,4 +1,5 @@
1
- import type { PropTypeInfo, FormField } from './types';
1
+ import type { PropTypeInfo } from './types';
2
+ import type { FormFieldConfig } from '../../form/formtypes';
2
3
  /**
3
4
  * PropTypes Introspection Utilities
4
5
  * Analyzes PropTypes to generate appropriate form fields
@@ -20,5 +21,5 @@ export declare function getPropTypeInfo(propType: any, componentName?: string, p
20
21
  /**
21
22
  * Generates appropriate form field configuration based on PropType
22
23
  */
23
- export declare function generateFormFieldFromPropType(propName: string, propType: any, value?: any, componentName?: string): FormField;
24
+ export declare function generateFormFieldFromPropType(propName: string, propType: any, value?: any, componentName?: string): FormFieldConfig;
24
25
  //# sourceMappingURL=propTypeIntrospection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"propTypeIntrospection.d.ts","sourceRoot":"","sources":["../../../../../../src/components/sitebuilder/page/lib/propTypeIntrospection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGvD;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CAiEtG;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC5C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,GAAG,EACb,KAAK,CAAC,EAAE,GAAG,EACX,aAAa,CAAC,EAAE,MAAM,GACpB,SAAS,CA0GX"}
1
+ {"version":3,"file":"propTypeIntrospection.d.ts","sourceRoot":"","sources":["../../../../../../src/components/sitebuilder/page/lib/propTypeIntrospection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CAiEtG;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC5C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,GAAG,EACb,KAAK,CAAC,EAAE,GAAG,EACX,aAAa,CAAC,EAAE,MAAM,GACpB,eAAe,CA0GjB"}
@@ -20,13 +20,6 @@ export interface PropTypeInfo {
20
20
  isRequired?: boolean;
21
21
  elementType?: any;
22
22
  }
23
- export interface FormField {
24
- component: string;
25
- props: Record<string, any>;
26
- }
27
- export interface FormData {
28
- fields: FormField[];
29
- }
30
23
  export type ComponentSelectorEditMode = {
31
24
  component: string;
32
25
  props: Record<string, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/sitebuilder/page/lib/types.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACxB,UAAU,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,GAAG,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACxB,MAAM,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,MAAM,yBAAyB,GAAG;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/sitebuilder/page/lib/types.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACxB,UAAU,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,GAAG,CAAC;CAClB;AAED,MAAM,MAAM,yBAAyB,GAAG;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B,CAAC"}
@@ -11,12 +11,10 @@ export * from "./components/general/carousel";
11
11
  export * from "./components/general/carousel.drag";
12
12
  export * from "./components/general/css";
13
13
  export * from "./components/general/faq-accordion";
14
+ export * from "./components/general/hero";
14
15
  export * from "./components/general/image";
15
16
  export * from "./components/general/intersection-observer";
16
17
  export * from "./components/general/loading";
17
- export * from "./components/general/skeleton";
18
- export * from "./components/general/skeleton-loading";
19
- export * from "./components/general/splitscroll";
20
18
  export * from "./components/general/manifest";
21
19
  export * from "./components/general/markdown";
22
20
  export * from "./components/general/menu-accordion";
@@ -40,7 +38,10 @@ export * from "./components/general/schema-website";
40
38
  export * from "./components/general/semantic";
41
39
  export * from "./components/general/sidepanel";
42
40
  export * from "./components/general/sitemap";
41
+ export * from "./components/general/skeleton";
42
+ export * from "./components/general/skeleton-loading";
43
43
  export * from "./components/general/smartimage";
44
+ export * from "./components/general/splitscroll";
44
45
  export * from "./components/general/styleguide";
45
46
  export * from "./components/general/global-error";
46
47
  export * from "./components/general/tab";
@@ -49,6 +50,7 @@ export * from "./components/general/tiles";
49
50
  export * from "./components/general/timeline";
50
51
  export * from "./components/integrations/calendly";
51
52
  export * from "./components/integrations/cloudinary";
53
+ export * from "./components/integrations/loremipsum";
52
54
  export * from "./components/integrations/contentful.delivery";
53
55
  export * from "./components/integrations/contentful.items.components";
54
56
  export * from "./components/integrations/contentful.management";
@@ -6,6 +6,7 @@ export * from "./components/config/config.utils";
6
6
  export * from "./components/config/config.validators";
7
7
  export * from "./components/config/crypto";
8
8
  export * from "./components/general/manifest";
9
+ export * from "./components/general/hero";
9
10
  export * from "./components/general/metadata.functions";
10
11
  export * from "./components/general/proxy-handler";
11
12
  export * from "./components/general/resume";
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Zip the contents of a WordPress theme folder into Pixelated.zip.
3
+ * - Default target folder: sibling `pixelated-blog-wp-theme` in the repo root
4
+ * - Uses the system `zip` command (macOS/Linux). Fails with a helpful message if zip is not available.
5
+ *
6
+ * Exported for unit testing.
7
+ */
8
+ export function buildZipArgs(zipName?: string): string[];
9
+ export function zipPixelatedTheme(inputPath: any, zipName?: string): string;
10
+ //# sourceMappingURL=zip-pixelated-theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip-pixelated-theme.d.ts","sourceRoot":"","sources":["../../../src/scripts/zip-pixelated-theme.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,yDAiBC;AAED,4EA0EC"}
@@ -0,0 +1,43 @@
1
+ import React from 'react';
2
+ import { Hero } from '@/components/general/hero';
3
+ declare const _default: {
4
+ title: string;
5
+ component: typeof Hero;
6
+ argTypes: {
7
+ img: {
8
+ control: {
9
+ type: string;
10
+ };
11
+ };
12
+ variant: {
13
+ control: {
14
+ type: string;
15
+ };
16
+ options: string[];
17
+ };
18
+ height: {
19
+ control: {
20
+ type: string;
21
+ };
22
+ };
23
+ paragraphs: {
24
+ control: {
25
+ type: string;
26
+ min: number;
27
+ max: number;
28
+ step: number;
29
+ };
30
+ };
31
+ };
32
+ };
33
+ export default _default;
34
+ export declare const HeroPlayground: {
35
+ render: React.FC<any>;
36
+ args: {
37
+ img: string;
38
+ variant: string;
39
+ paragraphs: number;
40
+ height: number;
41
+ };
42
+ };
43
+ //# sourceMappingURL=hero.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hero.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/general/hero.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGjD,wBASE;AAiBF,eAAO,MAAM,cAAc;;;;;;;;CAQ1B,CAAC"}
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import { LoremIpsum } from '@/components/integrations/loremipsum';
3
+ declare const _default: {
4
+ title: string;
5
+ component: typeof LoremIpsum;
6
+ argTypes: {
7
+ paragraphs: {
8
+ control: string;
9
+ };
10
+ seed: {
11
+ control: string;
12
+ };
13
+ };
14
+ };
15
+ export default _default;
16
+ export declare const Playground: {
17
+ render: React.FC<import("prop-types").InferPropsInner<Pick<{
18
+ paragraphs: import("prop-types").Requireable<number>;
19
+ seed: import("prop-types").Requireable<string>;
20
+ proxyBase: import("prop-types").Requireable<string>;
21
+ className: import("prop-types").Requireable<string>;
22
+ }, never>> & Partial<import("prop-types").InferPropsInner<Pick<{
23
+ paragraphs: import("prop-types").Requireable<number>;
24
+ seed: import("prop-types").Requireable<string>;
25
+ proxyBase: import("prop-types").Requireable<string>;
26
+ className: import("prop-types").Requireable<string>;
27
+ }, "className" | "seed" | "paragraphs" | "proxyBase">>> & {
28
+ proxyBase?: string;
29
+ }>;
30
+ args: {
31
+ paragraphs: number;
32
+ seed: string;
33
+ proxyBase: string;
34
+ };
35
+ parameters: {
36
+ docs: {
37
+ source: {
38
+ type: string;
39
+ };
40
+ description: {
41
+ story: string;
42
+ };
43
+ };
44
+ };
45
+ };
46
+ //# sourceMappingURL=loremipsum.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loremipsum.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/integrations/loremipsum.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;;;;;;;;;;;;;AAElE,wBAOE;AASF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWtB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=formcomponents.exports.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formcomponents.exports.test.d.ts","sourceRoot":"","sources":["../../../src/tests/formcomponents.exports.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=hero.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hero.test.d.ts","sourceRoot":"","sources":["../../../src/tests/hero.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loremipsum.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loremipsum.test.d.ts","sourceRoot":"","sources":["../../../src/tests/loremipsum.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=zip-pixelated-theme.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip-pixelated-theme.test.d.ts","sourceRoot":"","sources":["../../../src/tests/zip-pixelated-theme.test.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixelated-tech/components",
3
- "version": "3.11.6",
3
+ "version": "3.11.9",
4
4
  "private": false,
5
5
  "author": {
6
6
  "name": "Pixelated Technologies",
@@ -84,7 +84,8 @@
84
84
  "config:vault": "npm run vault --",
85
85
  "config:encrypt": "npm run config:vault -- encrypt src/config/pixelated.config.json",
86
86
  "config:decrypt": "npm run config:vault -- decrypt src/config/pixelated.config.json.enc",
87
- "create-pixelated-app": "node src/scripts/create-pixelated-app.js"
87
+ "create-pixelated-app": "node src/scripts/create-pixelated-app.js",
88
+ "zip-theme": "node src/scripts/zip-pixelated-theme.js ../pixelated-blog-wp-theme Pixelated.zip"
88
89
  },
89
90
  "scripts-20260113": {
90
91
  "build": "npm run validate-exports && npm run buildClean && npm run tsc && npm run rsync && npm run tscClean ",
@@ -129,8 +130,8 @@
129
130
  "@types/prop-types": "^15.7.15",
130
131
  "@types/react": "^19.2.9",
131
132
  "@types/react-dom": "^19.2.3",
132
- "@typescript-eslint/eslint-plugin": "^8.53.1",
133
- "@typescript-eslint/parser": "^8.53.1",
133
+ "@typescript-eslint/eslint-plugin": "^8.54.0",
134
+ "@typescript-eslint/parser": "^8.54.0",
134
135
  "@vitejs/plugin-react": "^5.1.2",
135
136
  "@vitest/coverage-v8": "^4.0.18",
136
137
  "@vitest/ui": "^4.0.18",
@@ -153,13 +154,13 @@
153
154
  "jsdom": "^27.4.0",
154
155
  "less-loader": "^12.3.0",
155
156
  "mini-css-extract-plugin": "^2.10.0",
156
- "next": "^16.1.4",
157
+ "next": "^16.1.5",
157
158
  "null-loader": "^4.0.1",
158
159
  "prop-types": "^15.8.1",
159
- "react": "^19.2.3",
160
- "react-dom": "^19.2.3",
160
+ "react": "^19.2.4",
161
+ "react-dom": "^19.2.4",
161
162
  "react-redux": "^9.2.0",
162
- "react-test-renderer": "^19.2.3",
163
+ "react-test-renderer": "^19.2.4",
163
164
  "redux": "^5.0.1",
164
165
  "sass": "^1.97.3",
165
166
  "sass-loader": "^16.0.6",
@@ -1,8 +0,0 @@
1
- declare const meta: {
2
- readonly title: "General/humans.txt";
3
- };
4
- export default meta;
5
- export declare const Default: {
6
- render: (args: any) => import("react/jsx-runtime").JSX.Element;
7
- };
8
- //# sourceMappingURL=humans.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"humans.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/general/humans.stories.tsx"],"names":[],"mappings":"AAGA,QAAA,MAAM,IAAI;;CAEA,CAAC;AACX,eAAe,IAAI,CAAC;AAuBpB,eAAO,MAAM,OAAO;mBAAoB,GAAG;CAA4B,CAAC"}