@pixelated-tech/components 3.1.5 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/README.md +60 -39
  2. package/dist/components/callout/callout.js +10 -9
  3. package/dist/components/callout/callout.scss +43 -43
  4. package/dist/components/carousel/carousel.css +24 -22
  5. package/dist/components/carousel/carousel.drag.js +1 -1
  6. package/dist/components/carousel/carousel.js +10 -10
  7. package/dist/components/{tiles → carousel}/tiles.css +10 -10
  8. package/dist/components/{tiles → carousel}/tiles.js +3 -3
  9. package/dist/components/cms/contentful.items.components.js +12 -12
  10. package/dist/components/cms/contentful.items.css +24 -24
  11. package/dist/components/cms/gravatar.components.js +87 -5
  12. package/dist/components/cms/instagram.components.js +1 -1
  13. package/dist/components/cms/wordpress.components.js +3 -3
  14. package/dist/components/cms/wordpress.css +3 -3
  15. package/dist/components/general/microinteractions.css +7 -7
  16. package/dist/components/general/modal.css +5 -5
  17. package/dist/components/general/modal.js +1 -1
  18. package/dist/components/general/semantic.js +282 -0
  19. package/dist/components/general/semantic.scss +359 -0
  20. package/dist/components/menu/menu-accordion.css +27 -21
  21. package/dist/components/menu/menu-accordion.js +1 -1
  22. package/dist/components/menu/menu-simple.css +8 -8
  23. package/dist/components/menu/menu-simple.js +3 -3
  24. package/dist/components/nerdjoke/nerdjoke.js +85 -77
  25. package/dist/components/pagebuilder/components/PageBuilderUI.js +1 -1
  26. package/dist/components/pagebuilder/components/PageEngine.js +21 -14
  27. package/dist/components/pagebuilder/lib/componentMap.js +5 -5
  28. package/dist/components/pagebuilder/lib/componentMetadata.js +1 -1
  29. package/dist/components/seo/404.css +5 -5
  30. package/dist/components/seo/404.js +2 -2
  31. package/dist/components/seo/googlemap.js +2 -1
  32. package/dist/components/seo/googlesearch.css +11 -0
  33. package/dist/components/seo/metadata.components.js +35 -0
  34. package/dist/components/seo/metadata.js +0 -48
  35. package/dist/components/seo/sitemap.js +192 -53
  36. package/dist/components/shoppingcart/ebay.css +5 -5
  37. package/dist/components/shoppingcart/shoppingcart.css +1 -1
  38. package/dist/components/{resume → structured}/resume.css +4 -0
  39. package/dist/components/{resume → structured}/resume.js +3 -3
  40. package/dist/components/{timeline → structured}/timeline.css +14 -14
  41. package/dist/components/{timeline → structured}/timeline.js +3 -3
  42. package/dist/css/pixelated.global.css +25 -164
  43. package/dist/index.js +12 -12
  44. package/dist/index.server.js +1 -0
  45. package/dist/types/components/callout/callout.d.ts.map +1 -1
  46. package/dist/types/components/carousel/carousel.d.ts.map +1 -1
  47. package/dist/types/components/{tiles → carousel}/tiles.d.ts +1 -1
  48. package/dist/types/components/carousel/tiles.d.ts.map +1 -0
  49. package/dist/types/components/cms/contentful.items.components.d.ts.map +1 -1
  50. package/dist/types/components/cms/gravatar.components.d.ts +53 -24
  51. package/dist/types/components/cms/gravatar.components.d.ts.map +1 -1
  52. package/dist/types/components/cms/pixelated.linkedin.d.ts.map +1 -0
  53. package/dist/types/components/cms/pixelated.linkedin1.d.ts.map +1 -0
  54. package/dist/types/components/cms/pixelated.linkedin2.d.ts.map +1 -0
  55. package/dist/types/components/cms/yelp.d.ts.map +1 -0
  56. package/dist/types/components/general/semantic.d.ts +153 -0
  57. package/dist/types/components/general/semantic.d.ts.map +1 -0
  58. package/dist/types/components/general/sidepanel.d.ts.map +1 -0
  59. package/dist/types/components/nerdjoke/nerdjoke.d.ts +15 -20
  60. package/dist/types/components/nerdjoke/nerdjoke.d.ts.map +1 -1
  61. package/dist/types/components/pagebuilder/components/PageEngine.d.ts.map +1 -1
  62. package/dist/types/components/pagebuilder/lib/componentMap.d.ts +6 -6
  63. package/dist/types/components/pagebuilder/lib/componentMap.d.ts.map +1 -1
  64. package/dist/types/components/seo/404.d.ts.map +1 -1
  65. package/dist/types/components/seo/googlemap.d.ts +1 -0
  66. package/dist/types/components/seo/googlemap.d.ts.map +1 -1
  67. package/dist/types/components/seo/metadata.components.d.ts +28 -0
  68. package/dist/types/components/seo/metadata.components.d.ts.map +1 -0
  69. package/dist/types/components/seo/metadata.d.ts +0 -14
  70. package/dist/types/components/seo/metadata.d.ts.map +1 -1
  71. package/dist/types/components/seo/sitemap.d.ts +107 -14
  72. package/dist/types/components/seo/sitemap.d.ts.map +1 -1
  73. package/dist/types/components/{buzzwordbingo → structured}/buzzwordbingo.d.ts +1 -1
  74. package/dist/types/components/structured/buzzwordbingo.d.ts.map +1 -0
  75. package/dist/types/components/structured/markdown.d.ts.map +1 -0
  76. package/dist/types/components/structured/recipe.d.ts.map +1 -0
  77. package/dist/types/components/{resume → structured}/resume.d.ts +1 -1
  78. package/dist/types/components/structured/resume.d.ts.map +1 -0
  79. package/dist/types/components/{socialcard → structured}/socialcard.d.ts +1 -1
  80. package/dist/types/components/{socialcard → structured}/socialcard.d.ts.map +1 -1
  81. package/dist/types/components/{timeline → structured}/timeline.d.ts +1 -1
  82. package/dist/types/components/structured/timeline.d.ts.map +1 -0
  83. package/dist/types/index.d.ts +10 -10
  84. package/dist/types/index.server.d.ts +1 -0
  85. package/dist/types/stories/callout/callout.many.stories.d.ts.map +1 -0
  86. package/dist/types/stories/{callout.stories.d.ts → callout/callout.stories.d.ts} +1 -1
  87. package/dist/types/stories/callout/callout.stories.d.ts.map +1 -0
  88. package/dist/types/stories/{carousel-hero.stories.d.ts → carousel/carousel-hero.stories.d.ts} +1 -1
  89. package/dist/types/stories/carousel/carousel-hero.stories.d.ts.map +1 -0
  90. package/dist/types/stories/{carousel-reviews.stories.d.ts → carousel/carousel-reviews.stories.d.ts} +1 -1
  91. package/dist/types/stories/carousel/carousel-reviews.stories.d.ts.map +1 -0
  92. package/dist/types/stories/{carousel-workportfolio.stories.d.ts → carousel/carousel-workportfolio.stories.d.ts} +1 -1
  93. package/dist/types/stories/carousel/carousel-workportfolio.stories.d.ts.map +1 -0
  94. package/dist/types/stories/{carousel.stories.d.ts → carousel/carousel.stories.d.ts} +1 -1
  95. package/dist/types/stories/carousel/carousel.stories.d.ts.map +1 -0
  96. package/dist/types/stories/{tiles.stories.d.ts → carousel/tiles.stories.d.ts} +1 -1
  97. package/dist/types/stories/carousel/tiles.stories.d.ts.map +1 -0
  98. package/dist/types/stories/{cms.contentful.item.stories.d.ts → cms/contentful.item.stories.d.ts} +2 -2
  99. package/dist/types/stories/cms/contentful.item.stories.d.ts.map +1 -0
  100. package/dist/types/stories/{cms.contentful.items.stories.d.ts → cms/contentful.items.stories.d.ts} +2 -2
  101. package/dist/types/stories/cms/contentful.items.stories.d.ts.map +1 -0
  102. package/dist/types/stories/{cms.contentful.stories.d.ts → cms/contentful.stories.d.ts} +2 -2
  103. package/dist/types/stories/cms/contentful.stories.d.ts.map +1 -0
  104. package/dist/types/stories/{cms.google.reviews.stories.d.ts → cms/google.reviews.stories.d.ts} +2 -2
  105. package/dist/types/stories/cms/google.reviews.stories.d.ts.map +1 -0
  106. package/dist/types/stories/{cms.gravatar.stories.d.ts → cms/gravatar.stories.d.ts} +2 -2
  107. package/dist/types/stories/cms/gravatar.stories.d.ts.map +1 -0
  108. package/dist/types/stories/{cms.instagram.stories.d.ts → cms/instagram.stories.d.ts} +2 -2
  109. package/dist/types/stories/cms/instagram.stories.d.ts.map +1 -0
  110. package/dist/types/stories/cms/wordpress.stories.d.ts +9 -0
  111. package/dist/types/stories/cms/wordpress.stories.d.ts.map +1 -0
  112. package/dist/types/stories/{general.headers.stories.d.ts → general/headers.stories.d.ts} +5 -5
  113. package/dist/types/stories/general/headers.stories.d.ts.map +1 -0
  114. package/dist/types/stories/{layout.stories.d.ts → general/layout.stories.d.ts} +1 -1
  115. package/dist/types/stories/general/layout.stories.d.ts.map +1 -0
  116. package/dist/types/stories/{general.loading.stories.d.ts → general/loading.stories.d.ts} +2 -2
  117. package/dist/types/stories/general/loading.stories.d.ts.map +1 -0
  118. package/dist/types/stories/{general.microinteractions.stories.d.ts → general/microinteractions.stories.d.ts} +2 -2
  119. package/dist/types/stories/general/microinteractions.stories.d.ts.map +1 -0
  120. package/dist/types/stories/{general.modal.stories.d.ts → general/modal.stories.d.ts} +2 -2
  121. package/dist/types/stories/general/modal.stories.d.ts.map +1 -0
  122. package/dist/types/stories/{sidepanel.stories.d.ts → general/sidepanel.stories.d.ts} +1 -1
  123. package/dist/types/stories/general/sidepanel.stories.d.ts.map +1 -0
  124. package/dist/types/stories/{general.table.stories.d.ts → general/table.stories.d.ts} +3 -3
  125. package/dist/types/stories/general/table.stories.d.ts.map +1 -0
  126. package/dist/types/stories/{menu-accordion.stories.d.ts → menu/menu-accordion.stories.d.ts} +1 -1
  127. package/dist/types/stories/menu/menu-accordion.stories.d.ts.map +1 -0
  128. package/dist/types/stories/{menu-simple.stories.d.ts → menu/menu-simple.stories.d.ts} +1 -1
  129. package/dist/types/stories/menu/menu-simple.stories.d.ts.map +1 -0
  130. package/dist/types/stories/nerdjoke.stories.d.ts +1 -1
  131. package/dist/types/stories/nerdjoke.stories.d.ts.map +1 -1
  132. package/dist/types/stories/{pagebuilder.form-builder.stories.d.ts → pagebuilder/form-builder.stories.d.ts} +2 -2
  133. package/dist/types/stories/pagebuilder/form-builder.stories.d.ts.map +1 -0
  134. package/dist/types/stories/{pagebuilder.form-engine.stories.d.ts → pagebuilder/form-engine.stories.d.ts} +3 -3
  135. package/dist/types/stories/pagebuilder/form-engine.stories.d.ts.map +1 -0
  136. package/dist/types/stories/{pagebuilder.form-extractor.stories.d.ts → pagebuilder/form-extractor.stories.d.ts} +2 -2
  137. package/dist/types/stories/pagebuilder/form-extractor.stories.d.ts.map +1 -0
  138. package/dist/types/stories/{pagebuilder.stories.d.ts → pagebuilder/pagebuilder.stories.d.ts} +1 -1
  139. package/dist/types/stories/pagebuilder/pagebuilder.stories.d.ts.map +1 -0
  140. package/dist/types/stories/{pagebuilder.usageguide.stories.d.ts → pagebuilder/pagebuilder.usageguide.stories.d.ts} +1 -1
  141. package/dist/types/stories/pagebuilder/pagebuilder.usageguide.stories.d.ts.map +1 -0
  142. package/dist/types/stories/{pageengine.stories.d.ts → pagebuilder/pageengine.stories.d.ts} +1 -1
  143. package/dist/types/stories/pagebuilder/pageengine.stories.d.ts.map +1 -0
  144. package/dist/types/stories/{seo.404.stories.d.ts → seo/seo.404.stories.d.ts} +1 -1
  145. package/dist/types/stories/seo/seo.404.stories.d.ts.map +1 -0
  146. package/dist/types/stories/{seo.googleanalytics.stories.d.ts → seo/seo.googleanalytics.stories.d.ts} +1 -1
  147. package/dist/types/stories/seo/seo.googleanalytics.stories.d.ts.map +1 -0
  148. package/dist/types/stories/{seo.googlesearch.stories.d.ts → seo/seo.googlesearch.stories.d.ts} +1 -1
  149. package/dist/types/stories/seo/seo.googlesearch.stories.d.ts.map +1 -0
  150. package/dist/types/stories/{seo.metadata.stories.d.ts → seo/seo.metadata.stories.d.ts} +2 -2
  151. package/dist/types/stories/seo/seo.metadata.stories.d.ts.map +1 -0
  152. package/dist/types/stories/{seo.sitemap.stories.d.ts → seo/seo.sitemap.stories.d.ts} +1 -1
  153. package/dist/types/stories/seo/seo.sitemap.stories.d.ts.map +1 -0
  154. package/dist/types/stories/{shoppingcart.ebay.item.stories.d.ts → shoppingcart/shoppingcart.ebay.item.stories.d.ts} +1 -1
  155. package/dist/types/stories/shoppingcart/shoppingcart.ebay.item.stories.d.ts.map +1 -0
  156. package/dist/types/stories/{shoppingcart.ebay.items.stories.d.ts → shoppingcart/shoppingcart.ebay.items.stories.d.ts} +1 -1
  157. package/dist/types/stories/shoppingcart/shoppingcart.ebay.items.stories.d.ts.map +1 -0
  158. package/dist/types/stories/shoppingcart/shoppingcart.stories.d.ts.map +1 -0
  159. package/dist/types/stories/{buzzword-bingo.stories.d.ts → structured/buzzword-bingo.stories.d.ts} +2 -2
  160. package/dist/types/stories/structured/buzzword-bingo.stories.d.ts.map +1 -0
  161. package/dist/types/stories/{markdown.stories.d.ts → structured/markdown.stories.d.ts} +1 -1
  162. package/dist/types/stories/structured/markdown.stories.d.ts.map +1 -0
  163. package/dist/types/stories/{recipe.stories.d.ts → structured/recipe.stories.d.ts} +2 -2
  164. package/dist/types/stories/structured/recipe.stories.d.ts.map +1 -0
  165. package/dist/types/stories/{resume.stories.d.ts → structured/resume.stories.d.ts} +1 -1
  166. package/dist/types/stories/{resume.stories.d.ts.map → structured/resume.stories.d.ts.map} +1 -1
  167. package/dist/types/stories/{socialcard.stories.d.ts → structured/socialcard.stories.d.ts} +1 -1
  168. package/dist/types/stories/structured/socialcard.stories.d.ts.map +1 -0
  169. package/dist/types/stories/{timeline.stories.d.ts → structured/timeline.stories.d.ts} +1 -1
  170. package/dist/types/stories/structured/timeline.stories.d.ts.map +1 -0
  171. package/package.json +10 -6
  172. package/dist/components/general/headers.css +0 -16
  173. package/dist/components/general/headers.js +0 -27
  174. package/dist/components/general/layout.js +0 -147
  175. package/dist/components/general/layout.scss +0 -47
  176. package/dist/types/components/buzzwordbingo/buzzwordbingo.d.ts.map +0 -1
  177. package/dist/types/components/general/headers.d.ts +0 -19
  178. package/dist/types/components/general/headers.d.ts.map +0 -1
  179. package/dist/types/components/general/layout.d.ts +0 -73
  180. package/dist/types/components/general/layout.d.ts.map +0 -1
  181. package/dist/types/components/linkedin/pixelated.linkedin.d.ts.map +0 -1
  182. package/dist/types/components/linkedin/pixelated.linkedin1.d.ts.map +0 -1
  183. package/dist/types/components/linkedin/pixelated.linkedin2.d.ts.map +0 -1
  184. package/dist/types/components/markdown/markdown.d.ts.map +0 -1
  185. package/dist/types/components/recipe/recipe.d.ts.map +0 -1
  186. package/dist/types/components/resume/resume.d.ts.map +0 -1
  187. package/dist/types/components/sidepanel/sidepanel.d.ts.map +0 -1
  188. package/dist/types/components/tiles/tiles.d.ts.map +0 -1
  189. package/dist/types/components/timeline/timeline.d.ts.map +0 -1
  190. package/dist/types/components/yelp/yelp.d.ts.map +0 -1
  191. package/dist/types/stories/buzzword-bingo.stories.d.ts.map +0 -1
  192. package/dist/types/stories/callout.many.stories.d.ts.map +0 -1
  193. package/dist/types/stories/callout.stories.d.ts.map +0 -1
  194. package/dist/types/stories/carousel-hero.stories.d.ts.map +0 -1
  195. package/dist/types/stories/carousel-reviews.stories.d.ts.map +0 -1
  196. package/dist/types/stories/carousel-workportfolio.stories.d.ts.map +0 -1
  197. package/dist/types/stories/carousel.stories.d.ts.map +0 -1
  198. package/dist/types/stories/cms.contentful.item.stories.d.ts.map +0 -1
  199. package/dist/types/stories/cms.contentful.items.stories.d.ts.map +0 -1
  200. package/dist/types/stories/cms.contentful.stories.d.ts.map +0 -1
  201. package/dist/types/stories/cms.google.reviews.stories.d.ts.map +0 -1
  202. package/dist/types/stories/cms.gravatar.stories.d.ts.map +0 -1
  203. package/dist/types/stories/cms.instagram.stories.d.ts.map +0 -1
  204. package/dist/types/stories/cms.wordpress.stories.d.ts +0 -26
  205. package/dist/types/stories/cms.wordpress.stories.d.ts.map +0 -1
  206. package/dist/types/stories/general.headers.stories.d.ts.map +0 -1
  207. package/dist/types/stories/general.loading.stories.d.ts.map +0 -1
  208. package/dist/types/stories/general.microinteractions.stories.d.ts.map +0 -1
  209. package/dist/types/stories/general.modal.stories.d.ts.map +0 -1
  210. package/dist/types/stories/general.table.stories.d.ts.map +0 -1
  211. package/dist/types/stories/layout.stories.d.ts.map +0 -1
  212. package/dist/types/stories/markdown.stories.d.ts.map +0 -1
  213. package/dist/types/stories/menu-accordion.stories.d.ts.map +0 -1
  214. package/dist/types/stories/menu-simple.stories.d.ts.map +0 -1
  215. package/dist/types/stories/pagebuilder.form-builder.stories.d.ts.map +0 -1
  216. package/dist/types/stories/pagebuilder.form-engine.stories.d.ts.map +0 -1
  217. package/dist/types/stories/pagebuilder.form-extractor.stories.d.ts.map +0 -1
  218. package/dist/types/stories/pagebuilder.stories.d.ts.map +0 -1
  219. package/dist/types/stories/pagebuilder.usageguide.stories.d.ts.map +0 -1
  220. package/dist/types/stories/pageengine.stories.d.ts.map +0 -1
  221. package/dist/types/stories/recipe.stories.d.ts.map +0 -1
  222. package/dist/types/stories/seo.404.stories.d.ts.map +0 -1
  223. package/dist/types/stories/seo.googleanalytics.stories.d.ts.map +0 -1
  224. package/dist/types/stories/seo.googlesearch.stories.d.ts.map +0 -1
  225. package/dist/types/stories/seo.metadata.stories.d.ts.map +0 -1
  226. package/dist/types/stories/seo.sitemap.stories.d.ts.map +0 -1
  227. package/dist/types/stories/shoppingcart.ebay.item.stories.d.ts.map +0 -1
  228. package/dist/types/stories/shoppingcart.ebay.items.stories.d.ts.map +0 -1
  229. package/dist/types/stories/shoppingcart.stories.d.ts.map +0 -1
  230. package/dist/types/stories/sidepanel.stories.d.ts.map +0 -1
  231. package/dist/types/stories/socialcard.stories.d.ts.map +0 -1
  232. package/dist/types/stories/tiles.stories.d.ts.map +0 -1
  233. package/dist/types/stories/timeline.stories.d.ts.map +0 -1
  234. package/dist/components/{linkedin → cms}/pixelated.linkedin.js +0 -0
  235. package/dist/components/{linkedin → cms}/pixelated.linkedin1.js +0 -0
  236. package/dist/components/{linkedin → cms}/pixelated.linkedin2.js +0 -0
  237. package/dist/components/{yelp → cms}/yelp.js +0 -0
  238. package/dist/components/{sidepanel → general}/sidepanel.css +0 -0
  239. package/dist/components/{sidepanel → general}/sidepanel.js +0 -0
  240. package/dist/components/{buzzwordbingo → structured}/buzzwordbingo.css +0 -0
  241. package/dist/components/{buzzwordbingo → structured}/buzzwordbingo.js +1 -1
  242. package/dist/components/{markdown → structured}/markdown.css +0 -0
  243. package/dist/components/{markdown → structured}/markdown.js +0 -0
  244. package/dist/components/{recipe → structured}/recipe.css +0 -0
  245. package/dist/components/{recipe → structured}/recipe.js +0 -0
  246. package/dist/components/{socialcard → structured}/socialcard.css +0 -0
  247. package/dist/components/{socialcard → structured}/socialcard.js +1 -1
  248. /package/dist/types/components/{linkedin → cms}/pixelated.linkedin.d.ts +0 -0
  249. /package/dist/types/components/{linkedin → cms}/pixelated.linkedin1.d.ts +0 -0
  250. /package/dist/types/components/{linkedin → cms}/pixelated.linkedin2.d.ts +0 -0
  251. /package/dist/types/components/{yelp → cms}/yelp.d.ts +0 -0
  252. /package/dist/types/components/{sidepanel → general}/sidepanel.d.ts +0 -0
  253. /package/dist/types/components/{markdown → structured}/markdown.d.ts +0 -0
  254. /package/dist/types/components/{recipe → structured}/recipe.d.ts +0 -0
  255. /package/dist/types/stories/{callout.many.stories.d.ts → callout/callout.many.stories.d.ts} +0 -0
  256. /package/dist/types/stories/{shoppingcart.stories.d.ts → shoppingcart/shoppingcart.stories.d.ts} +0 -0
@@ -7,6 +7,10 @@
7
7
  /* background-color: rgba(255,255,255,0.7); */
8
8
  /* display: none; */
9
9
  /* display: inline; */
10
+
11
+ background-color: transparent;
12
+ border: none;
13
+
10
14
  margin: 0px 10px 0px 0px;
11
15
  padding: 5px;
12
16
  text-align: center;
@@ -18,6 +22,29 @@
18
22
  border-radius: 5px;
19
23
  }
20
24
 
25
+
26
+ .panelMenuButton .hamburger{
27
+ /* the tricks */
28
+ /* display: block; */
29
+ /* display inline-block is fine too */
30
+ -webkit-transform: scaleX(1.5);
31
+ -moz-transform: scaleX(1.5);
32
+ -o-transform: caleX(1.5);
33
+ transform: scaleX(1.5);
34
+ writing-mode: vertical-lr;
35
+ /* optional */
36
+ font-size: 8pt;
37
+ cursor: pointer;
38
+ font-weight: 900;
39
+ color: #CCC;
40
+ padding-top: 5px;
41
+
42
+ }
43
+ /* hamburger hover style */
44
+ /* .accordionMenu .hamburger:hover {
45
+ color: #FFC75F;
46
+ } */
47
+
21
48
  @media screen and (max-width: 480px) {
22
49
  .panelMenuButton {
23
50
  display: inline;
@@ -128,27 +155,6 @@
128
155
  /* background-image: url(/images/pix/pix-bg-sm-bw.gif); */
129
156
  }
130
157
 
131
-
132
- .panelMenuButton .hamburger{
133
- /* the tricks */
134
- display: block;
135
- -webkit-transform: scaleX(1.75);
136
- -moz-transform: scaleX(1.75);
137
- -o-transform: caleX(1.75);
138
- transform: scaleX(1.75);
139
- writing-mode: vertical-lr;
140
- transform: scaleX(1.75);
141
- /* optional */
142
- font-size: 8pt;
143
- cursor: pointer;
144
- font-weight: 900;
145
- color: #CCC;
146
- }
147
- /* hamburger hover style */
148
- /* .accordionMenu .hamburger:hover {
149
- color: #FFC75F;
150
- } */
151
-
152
158
  /* ===== LEVEL 2 ===== */
153
159
 
154
160
  .accordionMenu > ul > ul {
@@ -179,5 +179,5 @@ export function MenuAccordionButton() {
179
179
  function slideMobilePanel() {
180
180
  window.moveMenu();
181
181
  }
182
- return (_jsx("div", { className: "panelMenuButton", id: "panelMenuButton", onClick: slideMobilePanel, children: _jsx("span", { className: "hamburger textOutline", children: "|||" }) }));
182
+ return (_jsx("button", { className: "panelMenuButton", id: "panelMenuButton", onClick: slideMobilePanel, children: _jsx("span", { className: "hamburger text-outline", children: "|||" }) }));
183
183
  }
@@ -10,11 +10,11 @@
10
10
  --accent2-color: #EEE;
11
11
  }
12
12
 
13
- .menuWrapper {
13
+ .menu-wrapper {
14
14
  height: 100%;
15
15
  }
16
16
 
17
- .menuWrapper, .menuWrapper * {
17
+ .menu-wrapper, .menu-wrapper * {
18
18
  display: flex;
19
19
  flex-direction: row;
20
20
  flex-basis: 100%;
@@ -39,7 +39,7 @@
39
39
  text-decoration: none;
40
40
  }
41
41
 
42
- .menuItem {
42
+ .menu-item {
43
43
  border: 1px solid white;
44
44
  background: none;
45
45
  width: auto;
@@ -50,15 +50,15 @@
50
50
  flex-basis: content; /* each item is its own size instead of auto */
51
51
  }
52
52
 
53
- .menuItem:hover {
53
+ .menu-item:hover {
54
54
  background-color: var(--accent1-color);
55
55
  }
56
56
 
57
- .menuItem:not(:first-child) {
57
+ .menu-item:not(:first-child) {
58
58
  border-left: 2px solid var(--primary-color);
59
59
  }
60
60
 
61
- .menuItem a {
61
+ .menu-item a {
62
62
  /* this is the button */
63
63
  background-color: var(--accent1-color);
64
64
  font-weight: bold;
@@ -67,10 +67,10 @@
67
67
  text-align: center;
68
68
  }
69
69
 
70
- .menuItem a.selected {
70
+ .menu-item a.selected {
71
71
  background-color: var(--secondary-color);
72
72
  }
73
73
 
74
- .menuItem a:hover {
74
+ .menu-item a:hover {
75
75
  background-color: var(--accent2-color);
76
76
  }
@@ -26,7 +26,7 @@ export function MenuSimple(props) {
26
26
  return myItems;
27
27
  }
28
28
  function styleSelectedMenuItem() {
29
- const menuitems = document.querySelectorAll('.menuItem a');
29
+ const menuitems = document.querySelectorAll('.menu-item a');
30
30
  const currentURL = window.location.href;
31
31
  menuitems.forEach((menuitem) => {
32
32
  if (menuitem.href === currentURL) {
@@ -37,7 +37,7 @@ export function MenuSimple(props) {
37
37
  useEffect(() => {
38
38
  styleSelectedMenuItem();
39
39
  }, []);
40
- return (_jsx("div", { className: "menuWrapper", children: _jsx("div", { className: "menu", id: "menu", children: _jsx("ul", { children: generateMenuItems() }) }) }));
40
+ return (_jsx("div", { className: "menu-wrapper", children: _jsx("div", { className: "menu", id: "menu", children: _jsx("ul", { children: generateMenuItems() }) }) }));
41
41
  }
42
42
  /* ========== MENU ITEM ========== */
43
43
  MenuSimpleItem.propTypes = {
@@ -50,7 +50,7 @@ MenuSimpleItem.propTypes = {
50
50
  export function MenuSimpleItem(props) {
51
51
  if (props.hidden)
52
52
  return null;
53
- return (_jsx("li", { className: 'menuItem', children: props.target
53
+ return (_jsx("li", { className: 'menu-item', children: props.target
54
54
  ? _jsx("a", { href: props.path || undefined, target: props.target, children: props.name })
55
55
  : _jsx("a", { href: props.path || undefined, children: props.name }) }));
56
56
  }
@@ -1,95 +1,103 @@
1
+ "use client";
1
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React, { Component } from 'react';
3
- import PropTypes from 'prop-types';
4
- import { getXHRData, generateURL } from '../utilities/api';
5
- import './nerdjoke.css';
6
- import '../../css/pixelated.grid.scss';
7
- /*
8
- TODO: #21 NerdJoke Component - Convert to TypeScript
9
- */
3
+ import { useCallback, useEffect, useRef, useState } from "react";
4
+ import PropTypes from "prop-types";
5
+ import { getXHRData, generateURL } from "../utilities/api";
6
+ import "../../css/pixelated.grid.scss";
7
+ import "./nerdjoke.css";
10
8
  const debug = false;
11
- export class NerdJoke extends Component {
12
- constructor(props) {
13
- super(props);
14
- this.TIME_LIMIT = 15;
15
- this.timePassed = 0;
16
- this.timePaused = false;
17
- this.timeLeft = this.TIME_LIMIT;
18
- this.timerInterval = null;
19
- this.jokeInterval = null;
20
- this.state = {
21
- joke: {
22
- question: '',
23
- answer: ''
24
- }
25
- };
26
- }
27
- loadJoke = () => {
9
+ const TIME_LIMIT = 15;
10
+ NerdJoke.propTypes = {};
11
+ export function NerdJoke( /* props: NerdJokeType */) {
12
+ const [joke, setJoke] = useState({ question: "", answer: "" });
13
+ const timerIntervalRef = useRef(null);
14
+ const jokeIntervalRef = useRef(null);
15
+ const timePassedRef = useRef(0);
16
+ const timePausedRef = useRef(false);
17
+ const timeLeftRef = useRef(TIME_LIMIT);
18
+ const formatTimeLeft = useCallback((time) => {
19
+ if (debug)
20
+ console.log("Formatting Time Left");
21
+ const minutes = Math.floor(time / 60);
22
+ const seconds = time % 60;
23
+ const formattedSeconds = seconds < 10 ? `0${seconds}` : `${seconds}`;
24
+ return `${minutes}:${formattedSeconds}`;
25
+ }, []);
26
+ const updateTimerDisplay = useCallback(() => {
27
+ if (debug)
28
+ console.log("Updating Timer Display");
29
+ const label = document.getElementById("jokeTimerLabel");
30
+ if (label) {
31
+ label.innerHTML = formatTimeLeft(timeLeftRef.current);
32
+ }
33
+ const elapsedPath = document.getElementById("jokeTimerPathElapsed");
34
+ if (elapsedPath) {
35
+ const myWidth = (((1 / TIME_LIMIT) * timeLeftRef.current) * 100) + "%";
36
+ elapsedPath.style.width = myWidth;
37
+ }
38
+ }, [formatTimeLeft]);
39
+ const loadJoke = useCallback(() => {
28
40
  if (debug)
29
41
  console.log("Loading Joke");
30
- this.timePassed = 0;
31
- this.timeLeft = this.TIME_LIMIT;
32
- this.timerInterval = null;
33
- clearInterval(this.jokeInterval);
34
- this.jokeInterval = setInterval(() => {
35
- if (!this.timePaused) {
36
- this.loadJoke();
42
+ timePassedRef.current = 0;
43
+ timeLeftRef.current = TIME_LIMIT;
44
+ timerIntervalRef.current = null;
45
+ if (jokeIntervalRef.current) {
46
+ clearInterval(jokeIntervalRef.current);
47
+ }
48
+ jokeIntervalRef.current = setInterval(() => {
49
+ if (!timePausedRef.current) {
50
+ loadJoke();
37
51
  }
38
- }, this.TIME_LIMIT * 1000);
39
- const myURL = 'https://vvqyc1xpw6.execute-api.us-east-2.amazonaws.com/prod/nerdjokes?';
40
- const myURLProps = { command: '%2Fnerdjokes', text: 'getjokejson' };
41
- const myMethod = 'GET';
52
+ }, TIME_LIMIT * 1000);
53
+ const myURL = "https://vvqyc1xpw6.execute-api.us-east-2.amazonaws.com/prod/nerdjokes?";
54
+ const myURLProps = { command: "%2Fnerdjokes", text: "getjokejson" };
55
+ const myMethod = "GET";
42
56
  getXHRData(generateURL(myURL, myURLProps), myMethod, (jokeData) => {
43
57
  const myJokeData = jokeData;
44
- this.setState({ joke: myJokeData });
58
+ setJoke(myJokeData);
45
59
  });
46
- };
47
- formatTimeLeft(time) {
48
- if (debug)
49
- console.log("Formatting Time Left");
50
- const minutes = Math.floor(time / 60);
51
- let seconds = time % 60;
52
- if (seconds < 10) {
53
- seconds = `0${seconds}`;
54
- }
55
- return `${minutes}:${seconds}`;
56
- }
57
- ;
58
- startTimer() {
60
+ }, []);
61
+ const startTimer = useCallback(() => {
59
62
  if (debug)
60
63
  console.log("Starting Timer");
61
- this.timerInterval = setInterval(() => {
62
- if (!this.timePaused) {
63
- this.timePassed = this.timePassed += 1;
64
- this.timeLeft = this.TIME_LIMIT - this.timePassed + 1;
65
- const myWidth = (((1 / this.TIME_LIMIT) * this.timeLeft) * 100) + '%';
66
- document.getElementById('jokeTimerLabel').innerHTML = this.formatTimeLeft(this.timeLeft);
67
- document.getElementById('jokeTimerPathElapsed').style.width = myWidth;
64
+ if (timerIntervalRef.current) {
65
+ clearInterval(timerIntervalRef.current);
66
+ }
67
+ timerIntervalRef.current = setInterval(() => {
68
+ if (!timePausedRef.current) {
69
+ timePassedRef.current += 1;
70
+ timeLeftRef.current = TIME_LIMIT - timePassedRef.current + 1;
71
+ updateTimerDisplay();
68
72
  }
69
73
  }, 1000);
70
- }
71
- ;
72
- pauseTimer() {
74
+ }, [updateTimerDisplay]);
75
+ const pauseTimer = () => {
73
76
  if (debug)
74
77
  console.log("Pausing Timer");
75
- this.timePaused = !this.timePaused;
76
- }
77
- ;
78
- componentDidMount() {
79
- if (debug)
80
- console.log("Component is Mounted");
81
- this.loadJoke();
82
- this.startTimer();
83
- }
84
- render() {
85
- return (_jsx("div", { className: "nerdJoke", children: _jsxs("div", { className: "row-12col", children: [_jsx("div", { className: "grid-s1-e5", children: _jsx("div", { className: "left", children: _jsx(JokeButton, { clickFunction: this.pauseTimer, buttonText: "Pause || / Play >" }) }) }), _jsx("div", { className: "grid-s9-e13", children: _jsx("div", { className: "right", children: _jsx(JokeButton, { clickFunction: this.loadJoke, buttonText: "Next Joke ->" }) }) }), _jsx("div", { className: "jokeTimer grid-s1-e13", children: _jsxs("div", { className: "row-12col", children: [_jsx("div", { className: "grid-s1-e11", children: _jsx("svg", { className: "jokeTimerSvg", xmlns: "http://www.w3.org/2000/svg", children: _jsx("rect", { id: "jokeTimerPathElapsed" }) }) }), _jsx("div", { className: "grid-s11-e13 center", id: "jokeTimerLabel", children: this.formatTimeLeft(this.timeLeft) })] }) }), _jsxs("div", { className: "jokeText grid-s1-e13", children: [_jsxs("div", { children: [_jsx("span", { className: "label", children: "Q: " }), _jsxs("span", { className: "question", children: [" ", this.state.joke.question, " "] })] }), _jsxs("div", { children: [_jsx("span", { className: "label", children: "A: " }), _jsxs("span", { className: "answer", children: [" ", this.state.joke.answer, " "] })] })] })] }) }));
86
- }
87
- }
88
- /* ========== JOKE BUTTON ========== */
89
- function JokeButton(props) {
90
- return (_jsx("div", { className: 'jokeButton', onClick: props.clickFunction, children: props.buttonText }));
78
+ timePausedRef.current = !timePausedRef.current;
79
+ };
80
+ useEffect(() => {
81
+ loadJoke();
82
+ startTimer();
83
+ return () => {
84
+ if (timerIntervalRef.current) {
85
+ clearInterval(timerIntervalRef.current);
86
+ }
87
+ if (jokeIntervalRef.current) {
88
+ clearInterval(jokeIntervalRef.current);
89
+ }
90
+ };
91
+ }, [loadJoke, startTimer]);
92
+ return (_jsx("div", { className: "nerdJoke", children: _jsxs("div", { className: "row-12col", children: [_jsx("div", { className: "grid-s1-e5", children: _jsx("div", { className: "left", children: _jsx(JokeButton, { clickFunction: pauseTimer, buttonText: "Pause || / Play >" }) }) }), _jsx("div", { className: "grid-s9-e13", children: _jsx("div", { className: "right", children: _jsx(JokeButton, { clickFunction: loadJoke, buttonText: "Next Joke ->" }) }) }), _jsx("div", { className: "jokeTimer grid-s1-e13", children: _jsxs("div", { className: "row-12col", children: [_jsx("div", { className: "grid-s1-e11", children: _jsx("svg", { className: "jokeTimerSvg", xmlns: "http://www.w3.org/2000/svg", children: _jsx("rect", { id: "jokeTimerPathElapsed" }) }) }), _jsx("div", { className: "grid-s11-e13 center", id: "jokeTimerLabel", children: formatTimeLeft(timeLeftRef.current) })] }) }), _jsxs("div", { className: "jokeText grid-s1-e13", children: [_jsxs("div", { children: [_jsx("span", { className: "label", children: "Q: " }), _jsxs("span", { className: "question", children: [" ", joke.question, " "] })] }), _jsxs("div", { children: [_jsx("span", { className: "label", children: "A: " }), _jsxs("span", { className: "answer", children: [" ", joke.answer, " "] })] })] })] }) }));
91
93
  }
92
94
  JokeButton.propTypes = {
93
95
  clickFunction: PropTypes.func.isRequired,
94
- buttonText: PropTypes.string.isRequired
96
+ buttonText: PropTypes.string.isRequired,
95
97
  };
98
+ function JokeButton(props) {
99
+ /* <div className="jokeButton" onClick={props.clickFunction}>
100
+ {props.buttonText}
101
+ </div> */
102
+ return (_jsx("button", { className: "jokeButton", onClick: props.clickFunction, children: props.buttonText }));
103
+ }
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React from 'react';
4
- import { PageSectionHeader } from '../../general/headers';
4
+ import { PageSectionHeader } from '../../general/semantic';
5
5
  import { usePageBuilder } from '../lib/usePageBuilder';
6
6
  import { ComponentSelector } from '../components/ComponentSelector';
7
7
  import { ComponentPropertiesForm } from '../components/ComponentPropertiesForm';
@@ -53,22 +53,29 @@ export function PageEngine(props) {
53
53
  }
54
54
  // Edit mode: Wrap with hover effect and action buttons
55
55
  const isSelected = selectedPath === currentPath;
56
+ const handleMouseEnter = (currentTarget, event) => {
57
+ if (event.target === event.currentTarget || !currentTarget.querySelector('.pagebuilder-component-wrapper:hover')) {
58
+ document.querySelectorAll('.pagebuilder-component-wrapper.hover-active').forEach(el => {
59
+ el.classList.remove('hover-active');
60
+ });
61
+ currentTarget.classList.add('hover-active');
62
+ }
63
+ event.stopPropagation();
64
+ };
65
+ const handleMouseLeave = (currentTarget, event) => {
66
+ const relatedTarget = (event.relatedTarget || event.relatedTarget);
67
+ if (!relatedTarget || !currentTarget.contains(relatedTarget)) {
68
+ currentTarget.classList.remove('hover-active');
69
+ }
70
+ };
56
71
  return (_jsxs("div", { className: `pagebuilder-component-wrapper ${isSelected ? 'selected' : ''}`, onMouseOver: (e) => {
57
- if (e.target === e.currentTarget || !e.currentTarget.querySelector('.pagebuilder-component-wrapper:hover')) {
58
- // Remove hover-active from all wrappers
59
- document.querySelectorAll('.pagebuilder-component-wrapper.hover-active').forEach(el => {
60
- el.classList.remove('hover-active');
61
- });
62
- // Add to current
63
- e.currentTarget.classList.add('hover-active');
64
- }
65
- e.stopPropagation();
72
+ handleMouseEnter(e.currentTarget, e);
66
73
  }, onMouseOut: (e) => {
67
- const relatedTarget = e.relatedTarget;
68
- // Only remove if leaving to somewhere outside this wrapper entirely
69
- if (!e.currentTarget.contains(relatedTarget)) {
70
- e.currentTarget.classList.remove('hover-active');
71
- }
74
+ handleMouseLeave(e.currentTarget, e);
75
+ }, onFocus: (e) => {
76
+ handleMouseEnter(e.currentTarget, e);
77
+ }, onBlur: (e) => {
78
+ handleMouseLeave(e.currentTarget, e);
72
79
  }, children: [element, _jsxs("div", { className: "pagebuilder-actions", children: [_jsxs("div", { className: "move-buttons", children: [_jsx("button", { className: "move-btn move-up", onClick: (e) => {
73
80
  e.stopPropagation();
74
81
  onMoveUp?.(currentPath);
@@ -1,16 +1,16 @@
1
- import { PageHeader, PageSectionHeader } from "../../general/headers";
1
+ import { PageTitleHeader, PageSectionHeader } from "../../general/semantic";
2
2
  import { Callout } from "../../callout/callout";
3
- import { PageSection, GridItem, FlexItem } from "../../general/layout";
3
+ import { PageSection, PageGridItem, PageFlexItem } from "../../general/semantic";
4
4
  /**
5
5
  * Component registry and constants
6
6
  */
7
7
  export const componentMap = {
8
- "Page Header": PageHeader,
8
+ "Page Title Header": PageTitleHeader,
9
9
  "Page Section Header": PageSectionHeader,
10
10
  "Callout": Callout,
11
11
  "Page Section": PageSection,
12
- "Grid Item": GridItem,
13
- "Flex Item": FlexItem,
12
+ "Grid Item": PageGridItem,
13
+ "Flex Item": PageFlexItem,
14
14
  };
15
15
  export const layoutComponents = [
16
16
  'Page Section',
@@ -7,7 +7,7 @@
7
7
  * runtime values for form generation.
8
8
  */
9
9
  import { variants, shapes, layouts, directions } from "../../callout/callout";
10
- import { layoutTypes, autoFlowValues, flexDirections, flexWraps, justifyContentValues, alignItemsValues } from "../../general/layout";
10
+ import { layoutTypes, autoFlowValues, flexDirections, flexWraps, justifyContentValues, alignItemsValues } from "../../general/semantic";
11
11
  export const componentMetadata = {
12
12
  'Callout': {
13
13
  variant: {
@@ -1,25 +1,25 @@
1
1
 
2
- .fofBodyContainer {
2
+ .fof-body-container {
3
3
  width: 100%;
4
4
  margin: 0 auto;
5
5
  }
6
6
 
7
- .fofBodyContainer h1 {
7
+ .fof-body-container h1 {
8
8
  font-size: 2em;
9
9
  }
10
10
 
11
- .fofImageContainer {
11
+ .fof-image-container {
12
12
  width: 80%;
13
13
  margin: 0 auto;
14
14
  }
15
15
 
16
- .fofImageContainer .fofImageWrapper {
16
+ .fof-image-container .fof-image-wrapper {
17
17
  width: 100%;
18
18
  margin: 0 auto;
19
19
  overflow: hidden;
20
20
  text-align: center;
21
21
  }
22
22
 
23
- .fofImageContainer .fofImageWrapper img {
23
+ .fof-image-container .fof-image-wrapper img {
24
24
  margin: 0 auto;
25
25
  }
@@ -2,9 +2,9 @@ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useState, useEffect } from "react";
3
3
  import PropTypes from 'prop-types';
4
4
  // import { getCloudinaryRemoteFetchURL } from "../cms/cloudinary";
5
- import "./404.css";
6
5
  import { SmartImage } from "../cms/cloudinary.image";
7
6
  import { usePixelatedConfig } from "../config/config.client";
7
+ import "./404.css";
8
8
  FourOhFour.propTypes = {
9
9
  images: PropTypes.array.isRequired,
10
10
  };
@@ -22,7 +22,7 @@ export function FourOhFour(props) {
22
22
  }, []);
23
23
  const config = usePixelatedConfig();
24
24
  if (randomIndex !== null && imageURL /* cloudinaryURL */ !== '') {
25
- return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "fofBodyContainer", children: [_jsxs("h1", { className: "centered textOutline", children: ["404 - ", images[randomIndex].text] }), _jsx("div", { className: "centeredbutton", children: _jsx("a", { href: "/", target: "_self", rel: "noopener noreferrer", children: "Go Home" }) })] }), _jsx("div", { className: "fofImageContainer", children: _jsx("div", { className: "fofImageWrapper", children: _jsx(SmartImage, { src: imageURL,
25
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "fof-body-container", children: [_jsxs("h1", { className: "centered text-outline", children: ["404 - ", images[randomIndex].text] }), _jsx("div", { className: "centered-button", children: _jsx("a", { href: "/", target: "_self", rel: "noopener noreferrer", children: "Go Home" }) })] }), _jsx("div", { className: "fof-image-container", children: _jsx("div", { className: "fof-image-wrapper", children: _jsx(SmartImage, { src: imageURL,
26
26
  // src={cloudinaryURL}
27
27
  title: "Page Not Found - " + images[randomIndex].description, alt: "Page Not Found - " + images[randomIndex].description, cloudinaryEnv: config?.cloudinary?.product_env ?? undefined, cloudinaryDomain: config?.cloudinary?.baseUrl ?? undefined, cloudinaryTransforms: config?.cloudinary?.transforms ?? undefined }) }) })] }));
28
28
  }
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import PropTypes from "prop-types";
3
3
  // https://developers.google.com/maps/documentation/embed/embedding-map
4
4
  GoogleMaps.propTypes = {
5
+ title: PropTypes.string,
5
6
  width: PropTypes.string,
6
7
  height: PropTypes.string,
7
8
  frameBorder: PropTypes.string,
@@ -11,5 +12,5 @@ GoogleMaps.propTypes = {
11
12
  parameters: PropTypes.string,
12
13
  };
13
14
  export function GoogleMaps(props) {
14
- return (_jsx("div", { className: "gmap", suppressHydrationWarning: true, children: _jsx("iframe", { width: props.width || "600", height: props.height || "400", frameBorder: props.frameBorder || "0", style: props.style || { border: 0 }, referrerPolicy: "no-referrer-when-downgrade", src: `https://www.google.com/maps/embed/v1/${props.map_mode}?key=${props.api_key}&${props.parameters}`, allowFullScreen: true }) }));
15
+ return (_jsx("div", { className: "gmap", suppressHydrationWarning: true, children: _jsx("iframe", { title: props.title || "Google Map", width: props.width || "600", height: props.height || "400", frameBorder: props.frameBorder || "0", style: props.style || { border: 0 }, referrerPolicy: "no-referrer-when-downgrade", src: `https://www.google.com/maps/embed/v1/${props.map_mode}?key=${props.api_key}&${props.parameters}`, allowFullScreen: true }) }));
15
16
  }
@@ -1,4 +1,14 @@
1
1
 
2
+ /* ========================================
3
+ =========== GENERAL SEARCH ============
4
+ ======================================== */
5
+
6
+ #page-search {
7
+ min-height: 50px;
8
+ }
9
+
10
+
11
+
2
12
  /* ========================================
3
13
  ============ GOOGLE SEARCH ============
4
14
  ======================================== */
@@ -21,6 +31,7 @@ input.gsc-search-button, input.gsc-search-button:hover, input.gsc-search-button:
21
31
 
22
32
  input.gsc-input {
23
33
  font-size: 1.0em !important;
34
+ background: none !important;
24
35
  }
25
36
 
26
37
  .gsc-control-cse {
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import PropTypes from "prop-types";
3
+ // https://gist.github.com/whitingx/3840905
4
+ generateMetaTags.propTypes = {
5
+ title: PropTypes.string.isRequired,
6
+ description: PropTypes.string.isRequired,
7
+ keywords: PropTypes.string.isRequired,
8
+ site_name: PropTypes.string.isRequired,
9
+ email: PropTypes.string.isRequired,
10
+ origin: PropTypes.string.isRequired,
11
+ url: PropTypes.string.isRequired,
12
+ image: PropTypes.string.isRequired,
13
+ image_height: PropTypes.string.isRequired,
14
+ image_width: PropTypes.string.isRequired,
15
+ favicon: PropTypes.string.isRequired,
16
+ };
17
+ export function generateMetaTags(props) {
18
+ const { title, description, keywords, site_name, email, origin, url, image, image_height, image_width, favicon } = props;
19
+ return (_jsxs(_Fragment, { children: [_jsx("title", { children: title }), _jsx("meta", { charSet: "UTF-8" }), _jsx("meta", { httpEquiv: "content-type", content: "text/html; charset=UTF-8" }), _jsx("meta", { httpEquiv: 'Expires', content: '0' }), _jsx("meta", { httpEquiv: 'Pragma', content: 'no-cache' }), _jsx("meta", { httpEquiv: 'Cache-Control', content: 'no-cache' }), _jsx("meta", { name: "application-name", content: site_name }), _jsx("meta", { name: "author", content: site_name + ", " + email }), _jsx("meta", { name: 'copyright', content: site_name }), _jsx("meta", { name: "creator", content: site_name }), _jsx("meta", { name: "description", content: description }), _jsx("meta", { name: "keywords", content: keywords }), _jsx("meta", { name: 'language', content: 'EN' }), _jsx("meta", { name: 'owner', content: site_name }), _jsx("meta", { name: "publisher", content: site_name }), _jsx("meta", { name: 'rating', content: 'General' }), _jsx("meta", { name: 'reply-to', content: email }), _jsx("meta", { name: "robots", content: "index, follow" }), _jsx("meta", { name: 'url', content: url }), _jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1.0, shrink-to-fit=no" }), _jsx("meta", { property: "og:description", content: description }), _jsx("meta", { property: 'og:email', content: email }), _jsx("meta", { property: "og:image", content: image }), _jsx("meta", { property: "og:image:height", content: image_height }), _jsx("meta", { property: "og:image:width", content: image_width }), _jsx("meta", { property: "og:locale", content: "en_US" }), _jsx("meta", { property: "og:site_name", content: site_name }), _jsx("meta", { property: "og:title", content: title }), _jsx("meta", { property: "og:type", content: "website" }), _jsx("meta", { property: "og:url", content: url }), _jsx("meta", { itemProp: "name", content: site_name }), _jsx("meta", { itemProp: "url", content: url }), _jsx("meta", { itemProp: "description", content: description }), _jsx("meta", { itemProp: "thumbnailUrl", content: image }), _jsx("meta", { property: "twitter:domain", content: new URL(origin).hostname }), _jsx("meta", { property: "twitter:url", content: url }), _jsx("meta", { name: "twitter:card", content: "summary_large_image" }), _jsx("meta", { name: "twitter:creator", content: site_name }), _jsx("meta", { name: "twitter:description", content: description }), _jsx("meta", { name: "twitter:image", content: image }), _jsx("meta", { name: "twitter:image:height", content: image_height }), _jsx("meta", { name: "twitter:image:width", content: image_width }), _jsx("meta", { name: "twitter:title", content: title }), _jsx("link", { rel: "author", href: origin }), _jsx("link", { rel: "canonical", href: url }), _jsx("link", { rel: "icon", type: "image/x-icon", href: favicon }), _jsx("link", { rel: "shortcut icon", type: "image/x-icon", href: favicon }), _jsx("link", { rel: "manifest", href: "/manifest.webmanifest" }), _jsx("link", { rel: "preconnect", href: "https://images.ctfassets.net/" }), _jsx("link", { rel: "preconnect", href: "https://res.cloudinary.com/" }), _jsx("link", { rel: "preconnect", href: "https://farm2.static.flickr.com" }), _jsx("link", { rel: "preconnect", href: "https://farm6.static.flickr.com" }), _jsx("link", { rel: "preconnect", href: "https://farm8.static.flickr.com" }), _jsx("link", { rel: "preconnect", href: "https://farm66.static.flickr.com" })] }));
20
+ }
21
+ setClientMetadata.propTypes = {
22
+ title: PropTypes.string.isRequired,
23
+ description: PropTypes.string.isRequired,
24
+ keywords: PropTypes.string.isRequired,
25
+ };
26
+ export function setClientMetadata(props) {
27
+ const { title, description, keywords } = props;
28
+ document.title = title;
29
+ (document.querySelector("meta[property='og:title']"))?.setAttribute('content', title);
30
+ (document.querySelector("meta[name='description']"))?.setAttribute('content', description);
31
+ (document.querySelector("meta[property='og:description']"))?.setAttribute('content', description);
32
+ (document.querySelector("meta[itemprop='description']"))?.setAttribute('content', description);
33
+ (document.querySelector("meta[name='keywords']"))?.setAttribute('content', keywords);
34
+ }
35
+ ;
@@ -63,38 +63,6 @@ export function getAllRoutes(routes, key) {
63
63
  traverse(routes);
64
64
  return result;
65
65
  }
66
- import fs from 'fs';
67
- import path from 'path';
68
- export function getAllImages() {
69
- // const imagePaths: ImageInfo[] = [];
70
- const imagePaths = [];
71
- const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.svg', '.webp'];
72
- const publicDir = './public';
73
- function walk(currentDir) {
74
- fs.readdirSync(currentDir).forEach(file => {
75
- const filePath = path.join(currentDir, file);
76
- const fileStat = fs.statSync(filePath);
77
- if (fileStat.isDirectory()) {
78
- walk(filePath); // Recursive call for subdirectories
79
- }
80
- else {
81
- if (fs.statSync(filePath).isFile() && (imageExtensions.some(ext => file.endsWith(ext)))) {
82
- // Found an image!
83
- // const imageURL = `/${filePath.replace('./public/', '')}`; // Construct URL
84
- // Add to your image data list (e.g., { url: imageURL, alt: "description" })
85
- const relativePath = path.relative(publicDir, filePath).replace(/\\/g, '/');
86
- const fullPath = `/${relativePath}`;
87
- // imagePaths.push({loc: fullPath});
88
- imagePaths.push(fullPath);
89
- }
90
- }
91
- });
92
- }
93
- ;
94
- walk(publicDir);
95
- // return JSON.stringify(imagePaths);
96
- return imagePaths;
97
- }
98
66
  export const getMetadata = (routes, key = "name", value = "Home") => {
99
67
  // const allRoutes = getAllRoutes(routes, "routes");
100
68
  // const foundObject = allRoutes.find((obj: { [x: string]: string; }) => obj && Object.prototype.hasOwnProperty.call(obj, key) && obj[key as keyof typeof obj] === value);
@@ -116,22 +84,6 @@ export const getMetadata = (routes, key = "name", value = "Home") => {
116
84
  return metadata;
117
85
  }
118
86
  };
119
- export const setClientMetadata = ({ title, description, keywords }) => {
120
- document.title = title;
121
- (document.querySelector("meta[property='og:title']"))?.setAttribute('content', title);
122
- (document.querySelector("meta[name='description']"))?.setAttribute('content', description);
123
- (document.querySelector("meta[property='og:description']"))?.setAttribute('content', description);
124
- (document.querySelector("meta[itemprop='description']"))?.setAttribute('content', description);
125
- (document.querySelector("meta[name='keywords']"))?.setAttribute('content', keywords);
126
- };
127
- export const setServerMetadata = ({ key, value }) => {
128
- const myMetaData = getMetadata({ key, value });
129
- return {
130
- title: myMetaData.title,
131
- description: myMetaData.description,
132
- keywords: myMetaData.keywords
133
- };
134
- };
135
87
  export function getAccordionMenuData(myRoutes) {
136
88
  const menuItems = myRoutes.map((thisRoute) => (thisRoute.routes
137
89
  ? { [thisRoute.name]: thisRoute.routes.map((subRoute) => ({ [subRoute.name]: subRoute.path })) }