@pixelated-tech/components 3.2.14 → 3.3.1

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 (202) hide show
  1. package/README.COMPONENTS.md +520 -31
  2. package/README.md +163 -49
  3. package/dist/components/cms/cloudinary.image.js +1 -0
  4. package/dist/components/cms/wordpress.components.js +1 -0
  5. package/dist/components/general/sidepanel.js +1 -1
  6. package/dist/components/general/tab.css +105 -0
  7. package/dist/components/general/tab.js +26 -0
  8. package/dist/components/menu/menu-accordion.css +10 -0
  9. package/dist/components/menu/menu-accordion.js +2 -1
  10. package/dist/components/menu/menu-simple.css +0 -7
  11. package/dist/components/seo/metadata.components.js +0 -19
  12. package/dist/components/seo/metadata.functions.js +111 -0
  13. package/dist/components/seo/schema-blogposting.functions.js +42 -0
  14. package/dist/components/seo/schema-blogposting.js +0 -46
  15. package/dist/components/seo/sitemap.js +1 -1
  16. package/dist/components/shoppingcart/shoppingcart.components.js +4 -4
  17. package/dist/components/sitebuilder/config/CompoundFontSelector.css +25 -0
  18. package/dist/components/sitebuilder/config/CompoundFontSelector.js +41 -0
  19. package/dist/components/sitebuilder/config/ConfigBuilder.css +277 -0
  20. package/dist/components/sitebuilder/config/ConfigBuilder.js +380 -0
  21. package/dist/components/sitebuilder/config/ConfigEngine.js +82 -0
  22. package/dist/components/sitebuilder/config/FontSelector.css +82 -0
  23. package/dist/components/sitebuilder/config/FontSelector.js +115 -0
  24. package/dist/components/sitebuilder/config/google-fonts.js +112 -0
  25. package/dist/components/{pagebuilder → sitebuilder}/form/form.css +55 -34
  26. package/dist/components/sitebuilder/form/formbuilder.js +107 -0
  27. package/dist/components/sitebuilder/form/formcomponents.js +380 -0
  28. package/dist/components/sitebuilder/form/formengine.js +82 -0
  29. package/dist/components/{pagebuilder/form/form.js → sitebuilder/form/formextractor.js} +10 -211
  30. package/dist/components/sitebuilder/form/formutils.js +206 -0
  31. package/dist/components/sitebuilder/form/formvalidator.js +123 -0
  32. package/dist/components/{pagebuilder → sitebuilder/page}/components/ComponentPropertiesForm.js +1 -1
  33. package/dist/components/{pagebuilder → sitebuilder/page}/components/PageBuilderUI.js +2 -2
  34. package/dist/components/{pagebuilder → sitebuilder/page}/components/PageEngine.js +1 -1
  35. package/dist/components/sitebuilder/page/documentation/api-examples/save-route-example.js +37 -0
  36. package/dist/components/{pagebuilder → sitebuilder/page}/lib/componentMap.js +3 -3
  37. package/dist/components/{pagebuilder → sitebuilder/page}/lib/componentMetadata.js +2 -2
  38. package/dist/components/{pagebuilder → sitebuilder/page}/lib/pageStorageContentful.js +2 -2
  39. package/dist/components/sitebuilder/page/lib/pageStorageTypes.js +1 -0
  40. package/dist/components/structured/markdown.js +1 -0
  41. package/dist/components/structured/recipe.js +1 -0
  42. package/dist/components/structured/timeline.js +1 -0
  43. package/dist/css/pixelated.global.css +0 -35
  44. package/dist/css/pixelated.grid.scss +4 -0
  45. package/dist/css/pixelated.visualdesign.scss +88 -0
  46. package/dist/data/form.json +18 -18
  47. package/dist/data/routes.json +32 -1
  48. package/dist/data/shipping.to.json +9 -9
  49. package/dist/data/siteinfo-form.json +200 -0
  50. package/dist/data/visualdesignform.json +244 -0
  51. package/dist/index.js +33 -21
  52. package/dist/index.server.js +24 -17
  53. package/dist/types/components/cms/cloudinary.image.d.ts.map +1 -1
  54. package/dist/types/components/cms/wordpress.components.d.ts.map +1 -1
  55. package/dist/types/components/general/semantic.d.ts +3 -3
  56. package/dist/types/components/general/tab.d.ts +18 -0
  57. package/dist/types/components/general/tab.d.ts.map +1 -0
  58. package/dist/types/components/menu/menu-accordion.d.ts.map +1 -1
  59. package/dist/types/components/seo/metadata.components.d.ts +0 -17
  60. package/dist/types/components/seo/metadata.components.d.ts.map +1 -1
  61. package/dist/types/components/seo/{metadata.d.ts → metadata.functions.d.ts} +15 -1
  62. package/dist/types/components/seo/metadata.functions.d.ts.map +1 -0
  63. package/dist/types/components/seo/schema-blogposting.d.ts +1 -25
  64. package/dist/types/components/seo/schema-blogposting.d.ts.map +1 -1
  65. package/dist/types/components/seo/schema-blogposting.functions.d.ts +26 -0
  66. package/dist/types/components/seo/schema-blogposting.functions.d.ts.map +1 -0
  67. package/dist/types/components/seo/sitemap.d.ts.map +1 -1
  68. package/dist/types/components/shoppingcart/shoppingcart.components.d.ts +1 -1
  69. package/dist/types/components/sitebuilder/config/CompoundFontSelector.d.ts +23 -0
  70. package/dist/types/components/sitebuilder/config/CompoundFontSelector.d.ts.map +1 -0
  71. package/dist/types/components/sitebuilder/config/ConfigBuilder.d.ts +354 -0
  72. package/dist/types/components/sitebuilder/config/ConfigBuilder.d.ts.map +1 -0
  73. package/dist/types/components/sitebuilder/config/ConfigEngine.d.ts +10 -0
  74. package/dist/types/components/sitebuilder/config/ConfigEngine.d.ts.map +1 -0
  75. package/dist/types/components/sitebuilder/config/FontSelector.d.ts +27 -0
  76. package/dist/types/components/sitebuilder/config/FontSelector.d.ts.map +1 -0
  77. package/dist/types/components/sitebuilder/config/google-fonts.d.ts +41 -0
  78. package/dist/types/components/sitebuilder/config/google-fonts.d.ts.map +1 -0
  79. package/dist/types/components/sitebuilder/form/formbuilder.d.ts +11 -0
  80. package/dist/types/components/sitebuilder/form/formbuilder.d.ts.map +1 -0
  81. package/dist/types/components/{pagebuilder → sitebuilder}/form/formcomponents.d.ts +15 -17
  82. package/dist/types/components/sitebuilder/form/formcomponents.d.ts.map +1 -0
  83. package/dist/types/components/{pagebuilder/form/form.submit.d.ts → sitebuilder/form/formemailer.d.ts} +1 -1
  84. package/dist/types/components/sitebuilder/form/formemailer.d.ts.map +1 -0
  85. package/dist/types/components/sitebuilder/form/formengine.d.ts +14 -0
  86. package/dist/types/components/sitebuilder/form/formengine.d.ts.map +1 -0
  87. package/dist/types/components/sitebuilder/form/formextractor.d.ts +25 -0
  88. package/dist/types/components/sitebuilder/form/formextractor.d.ts.map +1 -0
  89. package/dist/types/components/{pagebuilder/form/formvalidations.d.ts → sitebuilder/form/formfieldvalidations.d.ts} +1 -1
  90. package/dist/types/components/sitebuilder/form/formfieldvalidations.d.ts.map +1 -0
  91. package/dist/types/components/sitebuilder/form/formtypes.d.ts +66 -0
  92. package/dist/types/components/sitebuilder/form/formtypes.d.ts.map +1 -0
  93. package/dist/types/components/sitebuilder/form/formutils.d.ts +20 -0
  94. package/dist/types/components/sitebuilder/form/formutils.d.ts.map +1 -0
  95. package/dist/types/components/sitebuilder/form/formvalidator.d.ts +20 -0
  96. package/dist/types/components/sitebuilder/form/formvalidator.d.ts.map +1 -0
  97. package/dist/types/components/sitebuilder/page/components/ComponentPropertiesForm.d.ts.map +1 -0
  98. package/dist/types/components/sitebuilder/page/components/ComponentSelector.d.ts.map +1 -0
  99. package/dist/types/components/sitebuilder/page/components/ComponentTree.d.ts.map +1 -0
  100. package/dist/types/components/{pagebuilder → sitebuilder/page}/components/PageBuilderUI.d.ts +1 -1
  101. package/dist/types/components/sitebuilder/page/components/PageBuilderUI.d.ts.map +1 -0
  102. package/dist/types/components/sitebuilder/page/components/PageEngine.d.ts.map +1 -0
  103. package/dist/types/components/sitebuilder/page/components/SaveLoadSection.d.ts.map +1 -0
  104. package/dist/types/components/sitebuilder/page/documentation/api-examples/save-route-example.d.ts +6 -0
  105. package/dist/types/components/sitebuilder/page/documentation/api-examples/save-route-example.d.ts.map +1 -0
  106. package/dist/types/components/sitebuilder/page/lib/componentGeneration.d.ts.map +1 -0
  107. package/dist/types/components/{pagebuilder → sitebuilder/page}/lib/componentMap.d.ts +3 -3
  108. package/dist/types/components/sitebuilder/page/lib/componentMap.d.ts.map +1 -0
  109. package/dist/types/components/sitebuilder/page/lib/componentMetadata.d.ts.map +1 -0
  110. package/dist/types/components/{pagebuilder → sitebuilder/page}/lib/pageStorageContentful.d.ts +1 -1
  111. package/dist/types/components/sitebuilder/page/lib/pageStorageContentful.d.ts.map +1 -0
  112. package/dist/types/components/sitebuilder/page/lib/pageStorageLocal.d.ts.map +1 -0
  113. package/dist/types/components/sitebuilder/page/lib/pageStorageTypes.d.ts.map +1 -0
  114. package/dist/types/components/sitebuilder/page/lib/propTypeIntrospection.d.ts.map +1 -0
  115. package/dist/types/components/sitebuilder/page/lib/types.d.ts.map +1 -0
  116. package/dist/types/components/sitebuilder/page/lib/usePageBuilder.d.ts.map +1 -0
  117. package/dist/types/components/structured/markdown.d.ts.map +1 -1
  118. package/dist/types/components/structured/recipe.d.ts.map +1 -1
  119. package/dist/types/components/structured/timeline.d.ts.map +1 -1
  120. package/dist/types/index.d.ts +33 -20
  121. package/dist/types/index.server.d.ts +23 -16
  122. package/dist/types/stories/general/tab.stories.d.ts +45 -0
  123. package/dist/types/stories/general/tab.stories.d.ts.map +1 -0
  124. package/dist/types/stories/seo/seo.metadata.stories.d.ts +1 -1
  125. package/dist/types/stories/seo/seo.metadata.stories.d.ts.map +1 -1
  126. package/dist/types/stories/sitebuilder/compoundfontselector.stories.d.ts +51 -0
  127. package/dist/types/stories/sitebuilder/compoundfontselector.stories.d.ts.map +1 -0
  128. package/dist/types/stories/sitebuilder/configbuilder.stories.d.ts +103 -0
  129. package/dist/types/stories/sitebuilder/configbuilder.stories.d.ts.map +1 -0
  130. package/dist/types/stories/{pagebuilder → sitebuilder}/form-builder.stories.d.ts +1 -1
  131. package/dist/types/stories/sitebuilder/form-builder.stories.d.ts.map +1 -0
  132. package/dist/types/stories/{pagebuilder → sitebuilder}/form-engine.stories.d.ts +1 -1
  133. package/dist/types/stories/sitebuilder/form-engine.stories.d.ts.map +1 -0
  134. package/dist/types/stories/{pagebuilder → sitebuilder}/form-extractor.stories.d.ts +1 -1
  135. package/dist/types/stories/sitebuilder/form-extractor.stories.d.ts.map +1 -0
  136. package/dist/types/stories/{pagebuilder → sitebuilder}/pagebuilder.stories.d.ts +1 -1
  137. package/dist/types/stories/{pagebuilder → sitebuilder}/pagebuilder.stories.d.ts.map +1 -1
  138. package/dist/types/stories/{pagebuilder → sitebuilder}/pagebuilder.usageguide.stories.d.ts +1 -1
  139. package/dist/types/stories/{pagebuilder → sitebuilder}/pagebuilder.usageguide.stories.d.ts.map +1 -1
  140. package/dist/types/stories/{pagebuilder → sitebuilder}/pageengine.stories.d.ts +1 -1
  141. package/dist/types/stories/{pagebuilder → sitebuilder}/pageengine.stories.d.ts.map +1 -1
  142. package/dist/types/tests/compoundfontselector.test.d.ts +2 -0
  143. package/dist/types/tests/compoundfontselector.test.d.ts.map +1 -0
  144. package/dist/types/tests/configbuilder.test.d.ts +2 -0
  145. package/dist/types/tests/configbuilder.test.d.ts.map +1 -0
  146. package/dist/types/tests/configengine.test.d.ts +2 -0
  147. package/dist/types/tests/configengine.test.d.ts.map +1 -0
  148. package/dist/types/tests/fontselector.test.d.ts +2 -0
  149. package/dist/types/tests/fontselector.test.d.ts.map +1 -0
  150. package/dist/types/tests/tab.test.d.ts +2 -0
  151. package/dist/types/tests/tab.test.d.ts.map +1 -0
  152. package/package.json +15 -12
  153. package/dist/components/pagebuilder/form/formcomponents.js +0 -359
  154. package/dist/components/seo/metadata.js +0 -108
  155. package/dist/types/components/pagebuilder/components/ComponentPropertiesForm.d.ts.map +0 -1
  156. package/dist/types/components/pagebuilder/components/ComponentSelector.d.ts.map +0 -1
  157. package/dist/types/components/pagebuilder/components/ComponentTree.d.ts.map +0 -1
  158. package/dist/types/components/pagebuilder/components/PageBuilderUI.d.ts.map +0 -1
  159. package/dist/types/components/pagebuilder/components/PageEngine.d.ts.map +0 -1
  160. package/dist/types/components/pagebuilder/components/SaveLoadSection.d.ts.map +0 -1
  161. package/dist/types/components/pagebuilder/form/form.d.ts +0 -46
  162. package/dist/types/components/pagebuilder/form/form.d.ts.map +0 -1
  163. package/dist/types/components/pagebuilder/form/form.submit.d.ts.map +0 -1
  164. package/dist/types/components/pagebuilder/form/formcomponents.d.ts.map +0 -1
  165. package/dist/types/components/pagebuilder/form/formvalidations.d.ts.map +0 -1
  166. package/dist/types/components/pagebuilder/lib/componentGeneration.d.ts.map +0 -1
  167. package/dist/types/components/pagebuilder/lib/componentMap.d.ts.map +0 -1
  168. package/dist/types/components/pagebuilder/lib/componentMetadata.d.ts.map +0 -1
  169. package/dist/types/components/pagebuilder/lib/pageStorageContentful.d.ts.map +0 -1
  170. package/dist/types/components/pagebuilder/lib/pageStorageLocal.d.ts.map +0 -1
  171. package/dist/types/components/pagebuilder/lib/pageStorageTypes.d.ts.map +0 -1
  172. package/dist/types/components/pagebuilder/lib/propTypeIntrospection.d.ts.map +0 -1
  173. package/dist/types/components/pagebuilder/lib/types.d.ts.map +0 -1
  174. package/dist/types/components/pagebuilder/lib/usePageBuilder.d.ts.map +0 -1
  175. package/dist/types/components/seo/metadata.d.ts.map +0 -1
  176. package/dist/types/stories/pagebuilder/form-builder.stories.d.ts.map +0 -1
  177. package/dist/types/stories/pagebuilder/form-engine.stories.d.ts.map +0 -1
  178. package/dist/types/stories/pagebuilder/form-extractor.stories.d.ts.map +0 -1
  179. /package/dist/components/{pagebuilder/form/form.submit.js → sitebuilder/form/formemailer.js} +0 -0
  180. /package/dist/components/{pagebuilder/form/formvalidations.js → sitebuilder/form/formfieldvalidations.js} +0 -0
  181. /package/dist/components/{pagebuilder/lib/pageStorageTypes.js → sitebuilder/form/formtypes.js} +0 -0
  182. /package/dist/components/{pagebuilder → sitebuilder/page}/components/ComponentSelector.js +0 -0
  183. /package/dist/components/{pagebuilder → sitebuilder/page}/components/ComponentTree.js +0 -0
  184. /package/dist/components/{pagebuilder → sitebuilder/page}/components/SaveLoadSection.js +0 -0
  185. /package/dist/components/{pagebuilder → sitebuilder/page}/components/pagebuilder.scss +0 -0
  186. /package/dist/components/{pagebuilder → sitebuilder/page}/lib/componentGeneration.js +0 -0
  187. /package/dist/components/{pagebuilder → sitebuilder/page}/lib/pageStorageLocal.js +0 -0
  188. /package/dist/components/{pagebuilder → sitebuilder/page}/lib/propTypeIntrospection.js +0 -0
  189. /package/dist/components/{pagebuilder → sitebuilder/page}/lib/types.js +0 -0
  190. /package/dist/components/{pagebuilder → sitebuilder/page}/lib/usePageBuilder.js +0 -0
  191. /package/dist/types/components/{pagebuilder → sitebuilder/page}/components/ComponentPropertiesForm.d.ts +0 -0
  192. /package/dist/types/components/{pagebuilder → sitebuilder/page}/components/ComponentSelector.d.ts +0 -0
  193. /package/dist/types/components/{pagebuilder → sitebuilder/page}/components/ComponentTree.d.ts +0 -0
  194. /package/dist/types/components/{pagebuilder → sitebuilder/page}/components/PageEngine.d.ts +0 -0
  195. /package/dist/types/components/{pagebuilder → sitebuilder/page}/components/SaveLoadSection.d.ts +0 -0
  196. /package/dist/types/components/{pagebuilder → sitebuilder/page}/lib/componentGeneration.d.ts +0 -0
  197. /package/dist/types/components/{pagebuilder → sitebuilder/page}/lib/componentMetadata.d.ts +0 -0
  198. /package/dist/types/components/{pagebuilder → sitebuilder/page}/lib/pageStorageLocal.d.ts +0 -0
  199. /package/dist/types/components/{pagebuilder → sitebuilder/page}/lib/pageStorageTypes.d.ts +0 -0
  200. /package/dist/types/components/{pagebuilder → sitebuilder/page}/lib/propTypeIntrospection.d.ts +0 -0
  201. /package/dist/types/components/{pagebuilder → sitebuilder/page}/lib/types.d.ts +0 -0
  202. /package/dist/types/components/{pagebuilder → sitebuilder/page}/lib/usePageBuilder.d.ts +0 -0
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * Uses generic Contentful management functions with PageBuilder-specific logic
5
5
  */
6
- import { createEntry, updateEntry, deleteEntry, searchEntriesByField } from '../../cms/contentful.management';
7
- import { getContentfulEntriesByType } from '../../cms/contentful.delivery';
6
+ import { createEntry, updateEntry, deleteEntry, searchEntriesByField } from '../../../cms/contentful.management';
7
+ import { getContentfulEntriesByType } from '../../../cms/contentful.delivery';
8
8
  const CONTENT_TYPE = 'page';
9
9
  /**
10
10
  * Validate page name format
@@ -1,3 +1,4 @@
1
+ 'use client';
1
2
  import { jsx as _jsx } from "react/jsx-runtime";
2
3
  import PropTypes from "prop-types";
3
4
  import { SmartImage } from "../cms/cloudinary.image";
@@ -1,3 +1,4 @@
1
+ 'use client';
1
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
3
  import { useState, useEffect } from 'react';
3
4
  import PropTypes from 'prop-types';
@@ -1,3 +1,4 @@
1
+ 'use client';
1
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
3
  import PropTypes from "prop-types";
3
4
  import { usePixelatedConfig } from '../config/config.client';
@@ -1,39 +1,4 @@
1
1
 
2
- /* ========================================
3
- ======== DEFAULT COLOR STYLES ==========
4
- ======================================== */
5
-
6
- :root {
7
- --primary-color: #369;
8
- --secondary-color: #BCD;
9
- --accent1-color: #CCC;
10
- --accent2-color: #EEE;
11
- --bg-color: #fff;
12
- --font-color: #000;
13
- }
14
- body{
15
- background-color: var(--bg-color) !important;
16
- color: var(--font-color);
17
- }
18
-
19
-
20
- /* ========================================
21
- ======== DEFAULT FONT STYLES ===========
22
- ======================================== */
23
-
24
- :root {
25
- --header-font: "Montserrat", Verdana, sans-serif;
26
- --body-font: "Roboto", Arial, sans-serif;
27
- }
28
- body {
29
- font-family: var(--body-font);
30
- }
31
- h1, h2, h3, h4, h5, h6 {
32
- line-height: 1.1;
33
- }
34
- html { font-size: 1.0rem; /* 16px; */ }
35
-
36
-
37
2
  /* ========================================
38
3
  =========== DEFAULT STYLES =============
39
4
  ======================================== */
@@ -1,4 +1,8 @@
1
1
 
2
+ /* ========================================
3
+ ============= GRID STYLES ==============
4
+ ======================================== */
5
+
2
6
  @mixin rowBase {
3
7
  display: grid ;
4
8
  gap: 10px; /* Spacing between grid items */
@@ -0,0 +1,88 @@
1
+ /* ========================================
2
+ ======== DEFAULT COLOR STYLES ==========
3
+ ======================================== */
4
+
5
+ :root {
6
+ --primary-color: #369;
7
+ --secondary-color: #BCD;
8
+ --accent1-color: #CCC;
9
+ --accent2-color: #EEE;
10
+ --bg-color: #fff;
11
+ --text-color: #000;
12
+ }
13
+ body{
14
+ background-color: var(--bg-color) !important;
15
+ color: var(--text-color);
16
+ }
17
+
18
+ /* ========================================
19
+ ====== DEFAULT FONT FACE STYLES ========
20
+ ======================================== */
21
+
22
+ :root {
23
+ --header-font: "Montserrat", Verdana, sans-serif;
24
+ --body-font: "Roboto", Arial, sans-serif;
25
+ }
26
+ body {
27
+ font-family: var(--body-font);
28
+ }
29
+ h1, h2, h3, h4, h5, h6 {
30
+ line-height: 1.1;
31
+ }
32
+ html { font-size: 1.0rem; /* 16px; */ }
33
+
34
+ /* ========================================
35
+ ======= DEFAULT FONT SIZE STYLES =======
36
+ ======================================== */
37
+
38
+ /*
39
+ https://hanjing.medium.com/font-sizing-4259801c04c1
40
+ https://www.learnui.design/blog/mobile-desktop-website-font-size-guidelines.html
41
+ https://www.smashingmagazine.com/2022/01/modern-fluid-typography-css-clamp/
42
+ https://robertcelt95.medium.com/responsive-typography-that-actually-works-beyond-font-size-clamp-acf592b79774
43
+ https://medium.com/better-web-type/the-state-of-fluid-web-typography-135cd26e0612
44
+ */
45
+
46
+ /* --font-size1: font-size: 32px;
47
+ --font-size2: font-size: 24px;
48
+ --font-size3: font-size: 18.75px;
49
+ --font-size4: font-size: 16px;
50
+ --font-size5: font-size: 13.25px;
51
+ --font-size6: font-size: 10.75px; */
52
+
53
+ :root {
54
+ --font-size1-min: 2.00rem;
55
+ --font-size1-max: 3.00rem;
56
+
57
+ --font-size2-min: 1.35rem;
58
+ --font-size2-max: 1.75rem;
59
+
60
+ --font-size3-min: 1.17rem;
61
+ --font-size3-max: 1.35rem;
62
+
63
+ --font-size4-min: 1.00rem;
64
+ --font-size4-max: 1.25rem;
65
+
66
+ --font-size5-min: 0.83rem;
67
+ --font-size5-max: 1.00rem;
68
+
69
+ --font-size6-min: 0.67rem;
70
+ --font-size6-max: 0.85rem;
71
+
72
+ --font-min-screen: 375px;
73
+ --font-max-screen: 1440px;
74
+ }
75
+
76
+ $minScreen: var(--font-min-screen);
77
+ $maxScreen: var(--font-max-screen);
78
+ :root {
79
+ @for $i from 1 through 6 {
80
+ $min: var(--font-size#{$i}-min);
81
+ $max: var(--font-size#{$i}-max);
82
+ $preferred: calc(#{$min} + ((#{$max} - #{$min}) * ((100vw - #{$minScreen}) / #{($maxScreen - $minScreen)})));
83
+ --font-size#{$i}: clamp(#{$min}, #{$preferred}, #{$max});
84
+ }
85
+ }
86
+ @for $i from 1 through 6 {
87
+ h#{$i} { font-size: var(--font-size#{$i}); }
88
+ }
@@ -8,7 +8,7 @@
8
8
  "defaultValue": "",
9
9
  "autoComplete": "honorific-prefix",
10
10
  "multiple": null,
11
- "required": "required",
11
+ "required": true,
12
12
  "display": "horizontal",
13
13
  "label": "Title : ",
14
14
  "options": [
@@ -31,7 +31,7 @@
31
31
  "autoComplete": "given-name",
32
32
  "size": "40",
33
33
  "display": "horizontal",
34
- "required": "required",
34
+ "required": true,
35
35
  "label": "First Name : ",
36
36
  "tooltip": "Please type in your First Name"
37
37
  }
@@ -46,7 +46,7 @@
46
46
  "autoComplete": "family-name",
47
47
  "size": "40",
48
48
  "display": "horizontal",
49
- "required": "required",
49
+ "required": true,
50
50
  "label": "Last Name : "
51
51
  }
52
52
  },
@@ -60,7 +60,7 @@
60
60
  "autoComplete": "street-address",
61
61
  "size": "40",
62
62
  "display": "horizontal",
63
- "required": "required",
63
+ "required": true,
64
64
  "label": "Street Address : "
65
65
  }
66
66
  },
@@ -74,7 +74,7 @@
74
74
  "autoComplete": "address-level2",
75
75
  "size": "40",
76
76
  "display": "horizontal",
77
- "required": "required",
77
+ "required": true,
78
78
  "label": "City : "
79
79
  }
80
80
  },
@@ -87,7 +87,7 @@
87
87
  "defaultValue": ["NJ", "SC"],
88
88
  "autoComplete": "address-level1",
89
89
  "multiple": "multiple",
90
- "required": "required",
90
+ "required": true,
91
91
  "display": "horizontal",
92
92
  "label": "State : ",
93
93
  "tooltip": "Please select your State",
@@ -156,7 +156,7 @@
156
156
  "autoComplete": "postal-code",
157
157
  "size": "40",
158
158
  "display": "horizontal",
159
- "required": "required",
159
+ "required": true,
160
160
  "label": "Zip Code : ",
161
161
  "validate": "isValidUSZipCode"
162
162
  }
@@ -171,7 +171,7 @@
171
171
  "autoComplete": "tel",
172
172
  "size": "40",
173
173
  "display": "horizontal",
174
- "required": "required",
174
+ "required": true,
175
175
  "label": "Phone Number : ",
176
176
  "validate": "isValidUSPhoneNumber"
177
177
  }
@@ -186,7 +186,7 @@
186
186
  "autoComplete": "bday",
187
187
  "size": "40",
188
188
  "display": "horizontal",
189
- "required": "required",
189
+ "required": true,
190
190
  "label": "Birthday : ",
191
191
  "validate": "isValidDate"
192
192
  }
@@ -198,7 +198,7 @@
198
198
  "name": "age",
199
199
  "defaultValue": "",
200
200
  "multiple": null,
201
- "required": "required",
201
+ "required": true,
202
202
  "display": "horizontal",
203
203
  "label": "Age : ",
204
204
  "options": [
@@ -223,7 +223,7 @@
223
223
  "name": "generation",
224
224
  "defaultValue": null,
225
225
  "multiple": null,
226
- "required": "required",
226
+ "required": true,
227
227
  "display": "horizontal",
228
228
  "label": "Generation : ",
229
229
  "options": [
@@ -248,7 +248,7 @@
248
248
  "autoComplete": "email",
249
249
  "size": "40",
250
250
  "display": "horizontal",
251
- "required": "required",
251
+ "required": true,
252
252
  "label": "Email Address : ",
253
253
  "validate": "isValidEmailAddress"
254
254
  }
@@ -261,7 +261,7 @@
261
261
  "autoComplete": "sex",
262
262
  "label": "Gender : ",
263
263
  "display": "horizontal",
264
- "required": "required",
264
+ "required": true,
265
265
  "validate": "isOneRadioSelected",
266
266
  "tooltip": "Please select your gender",
267
267
  "options": [
@@ -296,7 +296,7 @@
296
296
  "autoComplete": "organization-title",
297
297
  "size": "40",
298
298
  "display": "horizontal",
299
- "required": "required",
299
+ "required": true,
300
300
  "label": "Job Title : "
301
301
  }
302
302
  },
@@ -310,7 +310,7 @@
310
310
  "autoComplete": "organization",
311
311
  "size": "40",
312
312
  "display": "horizontal",
313
- "required": "required",
313
+ "required": true,
314
314
  "label": "Company : "
315
315
  }
316
316
  },
@@ -326,7 +326,7 @@
326
326
  "min": "10000",
327
327
  "max": "1000000",
328
328
  "step": "1000",
329
- "required": "required",
329
+ "required": true,
330
330
  "label": "Salary : "
331
331
  }
332
332
  },
@@ -339,7 +339,7 @@
339
339
  "defaultValue": null,
340
340
  "size": "40",
341
341
  "display": "horizontal",
342
- "required": "required",
342
+ "required": true,
343
343
  "label": "LinkedIn URL : ",
344
344
  "validate": "isValidUrl"
345
345
  }
@@ -353,7 +353,7 @@
353
353
  "cols": "40",
354
354
  "defaultValue": null,
355
355
  "display": "horizontal",
356
- "required": "required",
356
+ "required": true,
357
357
  "label": "Comments : ",
358
358
  "tooltip": "Please enter your comments"
359
359
  }
@@ -1,13 +1,20 @@
1
1
  {
2
2
  "siteInfo": {
3
3
  "name": "Pixelated Technologies",
4
+ "author": "Brian Whaley",
4
5
  "description": "Custom web development and digital design agency specializing in React, Next.js, and modern web technologies",
5
6
  "url": "https://pixelated.tech",
6
7
  "email": "info@pixelated.tech",
8
+ "favicon": "/favicon.ico",
9
+ "favicon_sizes": "64x64 32x32 24x24 16x16",
10
+ "favicon_type": "image/x-icon",
11
+ "theme_color": "#369",
12
+ "background_color": "#ffffff",
13
+ "default_locale": "en",
14
+ "display": "standalone",
7
15
  "image": "/images/pix/pix-bg-512.gif",
8
16
  "image_height": "512",
9
17
  "image_width": "512",
10
- "favicon": "/favicon.ico",
11
18
  "telephone": "+1-973-710-8008",
12
19
  "address": {
13
20
  "streetAddress": "10 Jade Circle",
@@ -24,6 +31,30 @@
24
31
  ],
25
32
  "keywords": "pixelated, web development, react, next.js, custom websites, digital design, small business"
26
33
  },
34
+ "visualdesign": {
35
+ "primary-color": { "value": "#369", "type": "color", "group": "palette", "label": "Primary color" },
36
+ "secondary-color": { "value": "#BCD", "type": "color", "group": "palette", "label": "Secondary color" },
37
+ "accent1-color": { "value": "#CCC", "type": "color", "group": "palette", "label": "Accent color 1" },
38
+ "accent2-color": { "value": "#EEE", "type": "color", "group": "palette", "label": "Accent color 2" },
39
+ "bg-color": { "value": "#ffffff", "type": "color", "group": "palette", "label": "Background color" },
40
+ "text-color": { "value": "#000000", "type": "color", "group": "palette", "label": "Font color" },
41
+ "header-font": { "value": "\"Montserrat\", Verdana, sans-serif", "type": "font", "group": "typography", "label": "Header font" },
42
+ "body-font": { "value": "\"Roboto\", Arial, sans-serif", "type": "font", "group": "typography", "label": "Body font" },
43
+ "font-size1-min": { "value": "2.00rem", "type": "size", "group": "typography", "label": "Font size 1 min" },
44
+ "font-size1-max": { "value": "3.00rem", "type": "size", "group": "typography", "label": "Font size 1 max" },
45
+ "font-size2-min": { "value": "1.35rem", "type": "size", "group": "typography", "label": "Font size 2 min" },
46
+ "font-size2-max": { "value": "1.75rem", "type": "size", "group": "typography", "label": "Font size 2 max" },
47
+ "font-size3-min": { "value": "1.17rem", "type": "size", "group": "typography", "label": "Font size 3 min" },
48
+ "font-size3-max": { "value": "1.35rem", "type": "size", "group": "typography", "label": "Font size 3 max" },
49
+ "font-size4-min": { "value": "1.00rem", "type": "size", "group": "typography", "label": "Font size 4 min" },
50
+ "font-size4-max": { "value": "1.25rem", "type": "size", "group": "typography", "label": "Font size 4 max" },
51
+ "font-size5-min": { "value": "0.83rem", "type": "size", "group": "typography", "label": "Font size 5 min" },
52
+ "font-size5-max": { "value": "1.00rem", "type": "size", "group": "typography", "label": "Font size 5 max" },
53
+ "font-size6-min": { "value": "0.67rem", "type": "size", "group": "typography", "label": "Font size 6 min" },
54
+ "font-size6-max": { "value": "0.85rem", "type": "size", "group": "typography", "label": "Font size 6 max" },
55
+ "font-min-screen": { "value": "375px", "type": "size", "group": "typography", "label": "Font min screen" },
56
+ "font-max-screen": { "value": "1440px", "type": "size", "group": "typography", "label": "Font max screen" }
57
+ },
27
58
  "routes": [
28
59
  {
29
60
  "name": "Home",
@@ -11,7 +11,7 @@
11
11
  "autoComplete": "name",
12
12
  "size": "40",
13
13
  "display": "horizontal",
14
- "required": "required",
14
+ "required": true,
15
15
  "label": "Name : ",
16
16
  "tooltip": "Please enter your First and Last Name"
17
17
  }
@@ -26,7 +26,7 @@
26
26
  "autoComplete": "street-address",
27
27
  "size": "40",
28
28
  "display": "horizontal",
29
- "required": "required",
29
+ "required": true,
30
30
  "label": "Street Address : ",
31
31
  "tooltip": "Please enter your Street Address"
32
32
  }
@@ -41,7 +41,7 @@
41
41
  "autoComplete": "address-level2",
42
42
  "size": "40",
43
43
  "display": "horizontal",
44
- "required": "required",
44
+ "required": true,
45
45
  "label": "City : ",
46
46
  "tooltip": "Please enter your City"
47
47
  }
@@ -55,7 +55,7 @@
55
55
  "placeholder": "State",
56
56
  "autoComplete": "address-level1",
57
57
  "multiple": null,
58
- "required": "required",
58
+ "required": true,
59
59
  "display": "horizontal",
60
60
  "label": "State : ",
61
61
  "tooltip": "Please select your State",
@@ -124,7 +124,7 @@
124
124
  "autoComplete": "postal-code",
125
125
  "size": "40",
126
126
  "display": "horizontal",
127
- "required": "required",
127
+ "required": true,
128
128
  "label": "Zip Code : ",
129
129
  "tooltip": "Please enter your Zip Code",
130
130
  "validate": "isValidUSZipCode"
@@ -139,7 +139,7 @@
139
139
  "placeholder": "Country",
140
140
  "autoComplete": "country",
141
141
  "multiple": null,
142
- "required": "required",
142
+ "required": true,
143
143
  "display": "horizontal",
144
144
  "label": "Country : ",
145
145
  "tooltip": "Please select your Country",
@@ -353,7 +353,7 @@
353
353
  "autoComplete": "tel",
354
354
  "size": "40",
355
355
  "display": "horizontal",
356
- "required": "required",
356
+ "required": true,
357
357
  "label": "Phone Number : ",
358
358
  "tooltip": "Please enter your Phone Number",
359
359
  "validate": "isValidUSPhoneNumber"
@@ -369,7 +369,7 @@
369
369
  "autoComplete": "email",
370
370
  "size": "40",
371
371
  "display": "horizontal",
372
- "required": "required",
372
+ "required": true,
373
373
  "label": "Email Address : ",
374
374
  "tooltip": "Please enter your Email Address",
375
375
  "validate": "isValidEmailAddress"
@@ -397,7 +397,7 @@
397
397
  "name": "shippingMethod",
398
398
  "label": "Shipping Method : ",
399
399
  "display": "vertical",
400
- "required": "required",
400
+ "required": true,
401
401
  "validate": "isOneRadioSelected",
402
402
  "tooltip": "Please select your Shipping Method",
403
403
  "options": [
@@ -0,0 +1,200 @@
1
+ {
2
+ "fields": [
3
+ {
4
+ "component": "FormInput",
5
+ "props": {
6
+ "type": "text",
7
+ "id": "name",
8
+ "name": "name",
9
+ "label": "Site Name",
10
+ "required": true,
11
+ "placeholder": "Enter site name"
12
+ }
13
+ },
14
+ {
15
+ "component": "FormInput",
16
+ "props": {
17
+ "type": "text",
18
+ "id": "author",
19
+ "name": "author",
20
+ "label": "Author",
21
+ "required": true,
22
+ "placeholder": "Enter author name"
23
+ }
24
+ },
25
+ {
26
+ "component": "FormTextarea",
27
+ "props": {
28
+ "id": "description",
29
+ "name": "description",
30
+ "label": "Site Description",
31
+ "required": true,
32
+ "placeholder": "Enter site description",
33
+ "rows": "3"
34
+ }
35
+ },
36
+ {
37
+ "component": "FormInput",
38
+ "props": {
39
+ "type": "url",
40
+ "id": "url",
41
+ "name": "url",
42
+ "label": "Site URL",
43
+ "required": true,
44
+ "placeholder": "https://example.com"
45
+ }
46
+ },
47
+ {
48
+ "component": "FormInput",
49
+ "props": {
50
+ "type": "email",
51
+ "id": "email",
52
+ "name": "email",
53
+ "label": "Email",
54
+ "required": true,
55
+ "placeholder": "contact@example.com"
56
+ }
57
+ },
58
+ {
59
+ "component": "FormInput",
60
+ "props": {
61
+ "type": "text",
62
+ "id": "favicon",
63
+ "name": "favicon",
64
+ "label": "Favicon",
65
+ "required": true,
66
+ "placeholder": "/favicon.ico"
67
+ }
68
+ },
69
+ {
70
+ "component": "FormInput",
71
+ "props": {
72
+ "type": "text",
73
+ "id": "favicon_sizes",
74
+ "name": "favicon_sizes",
75
+ "label": "Favicon Sizes",
76
+ "required": true,
77
+ "placeholder": "64x64 32x32 24x24 16x16"
78
+ }
79
+ },
80
+ {
81
+ "component": "FormInput",
82
+ "props": {
83
+ "type": "text",
84
+ "id": "favicon_type",
85
+ "name": "favicon_type",
86
+ "label": "Favicon Type",
87
+ "required": true,
88
+ "placeholder": "image/x-icon"
89
+ }
90
+ },
91
+ {
92
+ "component": "FormInput",
93
+ "props": {
94
+ "type": "color",
95
+ "id": "theme_color",
96
+ "name": "theme_color",
97
+ "label": "Theme Color",
98
+ "required": true,
99
+ "placeholder": "#ffffff"
100
+ }
101
+ },
102
+ {
103
+ "component": "FormInput",
104
+ "props": {
105
+ "type": "color",
106
+ "id": "background_color",
107
+ "name": "background_color",
108
+ "label": "Background Color",
109
+ "required": true,
110
+ "placeholder": "#ffffff"
111
+ }
112
+ },
113
+ {
114
+ "component": "FormInput",
115
+ "props": {
116
+ "type": "text",
117
+ "id": "default_locale",
118
+ "name": "default_locale",
119
+ "label": "Default Locale",
120
+ "required": true,
121
+ "placeholder": "en"
122
+ }
123
+ },
124
+ {
125
+ "component": "FormSelect",
126
+ "props": {
127
+ "id": "display",
128
+ "name": "display",
129
+ "label": "Display Mode",
130
+ "required": true,
131
+ "options": [
132
+ { "value": "standalone", "label": "Standalone" },
133
+ { "value": "fullscreen", "label": "Fullscreen" },
134
+ { "value": "minimal-ui", "label": "Minimal UI" },
135
+ { "value": "browser", "label": "Browser" }
136
+ ]
137
+ }
138
+ },
139
+ {
140
+ "component": "FormInput",
141
+ "props": {
142
+ "type": "text",
143
+ "id": "image",
144
+ "name": "image",
145
+ "label": "Site Image",
146
+ "placeholder": "/images/site-image.jpg"
147
+ }
148
+ },
149
+ {
150
+ "component": "FormInput",
151
+ "props": {
152
+ "type": "text",
153
+ "id": "image_height",
154
+ "name": "image_height",
155
+ "label": "Image Height",
156
+ "placeholder": "512"
157
+ }
158
+ },
159
+ {
160
+ "component": "FormInput",
161
+ "props": {
162
+ "type": "text",
163
+ "id": "image_width",
164
+ "name": "image_width",
165
+ "label": "Image Width",
166
+ "placeholder": "512"
167
+ }
168
+ },
169
+ {
170
+ "component": "FormInput",
171
+ "props": {
172
+ "type": "tel",
173
+ "id": "telephone",
174
+ "name": "telephone",
175
+ "label": "Telephone",
176
+ "placeholder": "+1-555-123-4567"
177
+ }
178
+ },
179
+ {
180
+ "component": "FormInput",
181
+ "props": {
182
+ "type": "text",
183
+ "id": "priceRange",
184
+ "name": "priceRange",
185
+ "label": "Price Range",
186
+ "placeholder": "$$"
187
+ }
188
+ },
189
+ {
190
+ "component": "FormInput",
191
+ "props": {
192
+ "type": "text",
193
+ "id": "keywords",
194
+ "name": "keywords",
195
+ "label": "Keywords",
196
+ "placeholder": "web development, design, services"
197
+ }
198
+ }
199
+ ]
200
+ }