@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.
- package/README.md +60 -39
- package/dist/components/callout/callout.js +10 -9
- package/dist/components/callout/callout.scss +43 -43
- package/dist/components/carousel/carousel.css +24 -22
- package/dist/components/carousel/carousel.drag.js +1 -1
- package/dist/components/carousel/carousel.js +10 -10
- package/dist/components/{tiles → carousel}/tiles.css +10 -10
- package/dist/components/{tiles → carousel}/tiles.js +3 -3
- package/dist/components/cms/contentful.items.components.js +12 -12
- package/dist/components/cms/contentful.items.css +24 -24
- package/dist/components/cms/gravatar.components.js +87 -5
- package/dist/components/cms/instagram.components.js +1 -1
- package/dist/components/cms/wordpress.components.js +3 -3
- package/dist/components/cms/wordpress.css +3 -3
- package/dist/components/general/microinteractions.css +7 -7
- package/dist/components/general/modal.css +5 -5
- package/dist/components/general/modal.js +1 -1
- package/dist/components/general/semantic.js +282 -0
- package/dist/components/general/semantic.scss +359 -0
- package/dist/components/menu/menu-accordion.css +27 -21
- package/dist/components/menu/menu-accordion.js +1 -1
- package/dist/components/menu/menu-simple.css +8 -8
- package/dist/components/menu/menu-simple.js +3 -3
- package/dist/components/nerdjoke/nerdjoke.js +85 -77
- package/dist/components/pagebuilder/components/PageBuilderUI.js +1 -1
- package/dist/components/pagebuilder/components/PageEngine.js +21 -14
- package/dist/components/pagebuilder/lib/componentMap.js +5 -5
- package/dist/components/pagebuilder/lib/componentMetadata.js +1 -1
- package/dist/components/seo/404.css +5 -5
- package/dist/components/seo/404.js +2 -2
- package/dist/components/seo/googlemap.js +2 -1
- package/dist/components/seo/googlesearch.css +11 -0
- package/dist/components/seo/metadata.components.js +35 -0
- package/dist/components/seo/metadata.js +0 -48
- package/dist/components/seo/sitemap.js +192 -53
- package/dist/components/shoppingcart/ebay.css +5 -5
- package/dist/components/shoppingcart/shoppingcart.css +1 -1
- package/dist/components/{resume → structured}/resume.css +4 -0
- package/dist/components/{resume → structured}/resume.js +3 -3
- package/dist/components/{timeline → structured}/timeline.css +14 -14
- package/dist/components/{timeline → structured}/timeline.js +3 -3
- package/dist/css/pixelated.global.css +25 -164
- package/dist/index.js +12 -12
- package/dist/index.server.js +1 -0
- package/dist/types/components/callout/callout.d.ts.map +1 -1
- package/dist/types/components/carousel/carousel.d.ts.map +1 -1
- package/dist/types/components/{tiles → carousel}/tiles.d.ts +1 -1
- package/dist/types/components/carousel/tiles.d.ts.map +1 -0
- package/dist/types/components/cms/contentful.items.components.d.ts.map +1 -1
- package/dist/types/components/cms/gravatar.components.d.ts +53 -24
- package/dist/types/components/cms/gravatar.components.d.ts.map +1 -1
- package/dist/types/components/cms/pixelated.linkedin.d.ts.map +1 -0
- package/dist/types/components/cms/pixelated.linkedin1.d.ts.map +1 -0
- package/dist/types/components/cms/pixelated.linkedin2.d.ts.map +1 -0
- package/dist/types/components/cms/yelp.d.ts.map +1 -0
- package/dist/types/components/general/semantic.d.ts +153 -0
- package/dist/types/components/general/semantic.d.ts.map +1 -0
- package/dist/types/components/general/sidepanel.d.ts.map +1 -0
- package/dist/types/components/nerdjoke/nerdjoke.d.ts +15 -20
- package/dist/types/components/nerdjoke/nerdjoke.d.ts.map +1 -1
- package/dist/types/components/pagebuilder/components/PageEngine.d.ts.map +1 -1
- package/dist/types/components/pagebuilder/lib/componentMap.d.ts +6 -6
- package/dist/types/components/pagebuilder/lib/componentMap.d.ts.map +1 -1
- package/dist/types/components/seo/404.d.ts.map +1 -1
- package/dist/types/components/seo/googlemap.d.ts +1 -0
- package/dist/types/components/seo/googlemap.d.ts.map +1 -1
- package/dist/types/components/seo/metadata.components.d.ts +28 -0
- package/dist/types/components/seo/metadata.components.d.ts.map +1 -0
- package/dist/types/components/seo/metadata.d.ts +0 -14
- package/dist/types/components/seo/metadata.d.ts.map +1 -1
- package/dist/types/components/seo/sitemap.d.ts +107 -14
- package/dist/types/components/seo/sitemap.d.ts.map +1 -1
- package/dist/types/components/{buzzwordbingo → structured}/buzzwordbingo.d.ts +1 -1
- package/dist/types/components/structured/buzzwordbingo.d.ts.map +1 -0
- package/dist/types/components/structured/markdown.d.ts.map +1 -0
- package/dist/types/components/structured/recipe.d.ts.map +1 -0
- package/dist/types/components/{resume → structured}/resume.d.ts +1 -1
- package/dist/types/components/structured/resume.d.ts.map +1 -0
- package/dist/types/components/{socialcard → structured}/socialcard.d.ts +1 -1
- package/dist/types/components/{socialcard → structured}/socialcard.d.ts.map +1 -1
- package/dist/types/components/{timeline → structured}/timeline.d.ts +1 -1
- package/dist/types/components/structured/timeline.d.ts.map +1 -0
- package/dist/types/index.d.ts +10 -10
- package/dist/types/index.server.d.ts +1 -0
- package/dist/types/stories/callout/callout.many.stories.d.ts.map +1 -0
- package/dist/types/stories/{callout.stories.d.ts → callout/callout.stories.d.ts} +1 -1
- package/dist/types/stories/callout/callout.stories.d.ts.map +1 -0
- package/dist/types/stories/{carousel-hero.stories.d.ts → carousel/carousel-hero.stories.d.ts} +1 -1
- package/dist/types/stories/carousel/carousel-hero.stories.d.ts.map +1 -0
- package/dist/types/stories/{carousel-reviews.stories.d.ts → carousel/carousel-reviews.stories.d.ts} +1 -1
- package/dist/types/stories/carousel/carousel-reviews.stories.d.ts.map +1 -0
- package/dist/types/stories/{carousel-workportfolio.stories.d.ts → carousel/carousel-workportfolio.stories.d.ts} +1 -1
- package/dist/types/stories/carousel/carousel-workportfolio.stories.d.ts.map +1 -0
- package/dist/types/stories/{carousel.stories.d.ts → carousel/carousel.stories.d.ts} +1 -1
- package/dist/types/stories/carousel/carousel.stories.d.ts.map +1 -0
- package/dist/types/stories/{tiles.stories.d.ts → carousel/tiles.stories.d.ts} +1 -1
- package/dist/types/stories/carousel/tiles.stories.d.ts.map +1 -0
- package/dist/types/stories/{cms.contentful.item.stories.d.ts → cms/contentful.item.stories.d.ts} +2 -2
- package/dist/types/stories/cms/contentful.item.stories.d.ts.map +1 -0
- package/dist/types/stories/{cms.contentful.items.stories.d.ts → cms/contentful.items.stories.d.ts} +2 -2
- package/dist/types/stories/cms/contentful.items.stories.d.ts.map +1 -0
- package/dist/types/stories/{cms.contentful.stories.d.ts → cms/contentful.stories.d.ts} +2 -2
- package/dist/types/stories/cms/contentful.stories.d.ts.map +1 -0
- package/dist/types/stories/{cms.google.reviews.stories.d.ts → cms/google.reviews.stories.d.ts} +2 -2
- package/dist/types/stories/cms/google.reviews.stories.d.ts.map +1 -0
- package/dist/types/stories/{cms.gravatar.stories.d.ts → cms/gravatar.stories.d.ts} +2 -2
- package/dist/types/stories/cms/gravatar.stories.d.ts.map +1 -0
- package/dist/types/stories/{cms.instagram.stories.d.ts → cms/instagram.stories.d.ts} +2 -2
- package/dist/types/stories/cms/instagram.stories.d.ts.map +1 -0
- package/dist/types/stories/cms/wordpress.stories.d.ts +9 -0
- package/dist/types/stories/cms/wordpress.stories.d.ts.map +1 -0
- package/dist/types/stories/{general.headers.stories.d.ts → general/headers.stories.d.ts} +5 -5
- package/dist/types/stories/general/headers.stories.d.ts.map +1 -0
- package/dist/types/stories/{layout.stories.d.ts → general/layout.stories.d.ts} +1 -1
- package/dist/types/stories/general/layout.stories.d.ts.map +1 -0
- package/dist/types/stories/{general.loading.stories.d.ts → general/loading.stories.d.ts} +2 -2
- package/dist/types/stories/general/loading.stories.d.ts.map +1 -0
- package/dist/types/stories/{general.microinteractions.stories.d.ts → general/microinteractions.stories.d.ts} +2 -2
- package/dist/types/stories/general/microinteractions.stories.d.ts.map +1 -0
- package/dist/types/stories/{general.modal.stories.d.ts → general/modal.stories.d.ts} +2 -2
- package/dist/types/stories/general/modal.stories.d.ts.map +1 -0
- package/dist/types/stories/{sidepanel.stories.d.ts → general/sidepanel.stories.d.ts} +1 -1
- package/dist/types/stories/general/sidepanel.stories.d.ts.map +1 -0
- package/dist/types/stories/{general.table.stories.d.ts → general/table.stories.d.ts} +3 -3
- package/dist/types/stories/general/table.stories.d.ts.map +1 -0
- package/dist/types/stories/{menu-accordion.stories.d.ts → menu/menu-accordion.stories.d.ts} +1 -1
- package/dist/types/stories/menu/menu-accordion.stories.d.ts.map +1 -0
- package/dist/types/stories/{menu-simple.stories.d.ts → menu/menu-simple.stories.d.ts} +1 -1
- package/dist/types/stories/menu/menu-simple.stories.d.ts.map +1 -0
- package/dist/types/stories/nerdjoke.stories.d.ts +1 -1
- package/dist/types/stories/nerdjoke.stories.d.ts.map +1 -1
- package/dist/types/stories/{pagebuilder.form-builder.stories.d.ts → pagebuilder/form-builder.stories.d.ts} +2 -2
- package/dist/types/stories/pagebuilder/form-builder.stories.d.ts.map +1 -0
- package/dist/types/stories/{pagebuilder.form-engine.stories.d.ts → pagebuilder/form-engine.stories.d.ts} +3 -3
- package/dist/types/stories/pagebuilder/form-engine.stories.d.ts.map +1 -0
- package/dist/types/stories/{pagebuilder.form-extractor.stories.d.ts → pagebuilder/form-extractor.stories.d.ts} +2 -2
- package/dist/types/stories/pagebuilder/form-extractor.stories.d.ts.map +1 -0
- package/dist/types/stories/{pagebuilder.stories.d.ts → pagebuilder/pagebuilder.stories.d.ts} +1 -1
- package/dist/types/stories/pagebuilder/pagebuilder.stories.d.ts.map +1 -0
- package/dist/types/stories/{pagebuilder.usageguide.stories.d.ts → pagebuilder/pagebuilder.usageguide.stories.d.ts} +1 -1
- package/dist/types/stories/pagebuilder/pagebuilder.usageguide.stories.d.ts.map +1 -0
- package/dist/types/stories/{pageengine.stories.d.ts → pagebuilder/pageengine.stories.d.ts} +1 -1
- package/dist/types/stories/pagebuilder/pageengine.stories.d.ts.map +1 -0
- package/dist/types/stories/{seo.404.stories.d.ts → seo/seo.404.stories.d.ts} +1 -1
- package/dist/types/stories/seo/seo.404.stories.d.ts.map +1 -0
- package/dist/types/stories/{seo.googleanalytics.stories.d.ts → seo/seo.googleanalytics.stories.d.ts} +1 -1
- package/dist/types/stories/seo/seo.googleanalytics.stories.d.ts.map +1 -0
- package/dist/types/stories/{seo.googlesearch.stories.d.ts → seo/seo.googlesearch.stories.d.ts} +1 -1
- package/dist/types/stories/seo/seo.googlesearch.stories.d.ts.map +1 -0
- package/dist/types/stories/{seo.metadata.stories.d.ts → seo/seo.metadata.stories.d.ts} +2 -2
- package/dist/types/stories/seo/seo.metadata.stories.d.ts.map +1 -0
- package/dist/types/stories/{seo.sitemap.stories.d.ts → seo/seo.sitemap.stories.d.ts} +1 -1
- package/dist/types/stories/seo/seo.sitemap.stories.d.ts.map +1 -0
- package/dist/types/stories/{shoppingcart.ebay.item.stories.d.ts → shoppingcart/shoppingcart.ebay.item.stories.d.ts} +1 -1
- package/dist/types/stories/shoppingcart/shoppingcart.ebay.item.stories.d.ts.map +1 -0
- package/dist/types/stories/{shoppingcart.ebay.items.stories.d.ts → shoppingcart/shoppingcart.ebay.items.stories.d.ts} +1 -1
- package/dist/types/stories/shoppingcart/shoppingcart.ebay.items.stories.d.ts.map +1 -0
- package/dist/types/stories/shoppingcart/shoppingcart.stories.d.ts.map +1 -0
- package/dist/types/stories/{buzzword-bingo.stories.d.ts → structured/buzzword-bingo.stories.d.ts} +2 -2
- package/dist/types/stories/structured/buzzword-bingo.stories.d.ts.map +1 -0
- package/dist/types/stories/{markdown.stories.d.ts → structured/markdown.stories.d.ts} +1 -1
- package/dist/types/stories/structured/markdown.stories.d.ts.map +1 -0
- package/dist/types/stories/{recipe.stories.d.ts → structured/recipe.stories.d.ts} +2 -2
- package/dist/types/stories/structured/recipe.stories.d.ts.map +1 -0
- package/dist/types/stories/{resume.stories.d.ts → structured/resume.stories.d.ts} +1 -1
- package/dist/types/stories/{resume.stories.d.ts.map → structured/resume.stories.d.ts.map} +1 -1
- package/dist/types/stories/{socialcard.stories.d.ts → structured/socialcard.stories.d.ts} +1 -1
- package/dist/types/stories/structured/socialcard.stories.d.ts.map +1 -0
- package/dist/types/stories/{timeline.stories.d.ts → structured/timeline.stories.d.ts} +1 -1
- package/dist/types/stories/structured/timeline.stories.d.ts.map +1 -0
- package/package.json +10 -6
- package/dist/components/general/headers.css +0 -16
- package/dist/components/general/headers.js +0 -27
- package/dist/components/general/layout.js +0 -147
- package/dist/components/general/layout.scss +0 -47
- package/dist/types/components/buzzwordbingo/buzzwordbingo.d.ts.map +0 -1
- package/dist/types/components/general/headers.d.ts +0 -19
- package/dist/types/components/general/headers.d.ts.map +0 -1
- package/dist/types/components/general/layout.d.ts +0 -73
- package/dist/types/components/general/layout.d.ts.map +0 -1
- package/dist/types/components/linkedin/pixelated.linkedin.d.ts.map +0 -1
- package/dist/types/components/linkedin/pixelated.linkedin1.d.ts.map +0 -1
- package/dist/types/components/linkedin/pixelated.linkedin2.d.ts.map +0 -1
- package/dist/types/components/markdown/markdown.d.ts.map +0 -1
- package/dist/types/components/recipe/recipe.d.ts.map +0 -1
- package/dist/types/components/resume/resume.d.ts.map +0 -1
- package/dist/types/components/sidepanel/sidepanel.d.ts.map +0 -1
- package/dist/types/components/tiles/tiles.d.ts.map +0 -1
- package/dist/types/components/timeline/timeline.d.ts.map +0 -1
- package/dist/types/components/yelp/yelp.d.ts.map +0 -1
- package/dist/types/stories/buzzword-bingo.stories.d.ts.map +0 -1
- package/dist/types/stories/callout.many.stories.d.ts.map +0 -1
- package/dist/types/stories/callout.stories.d.ts.map +0 -1
- package/dist/types/stories/carousel-hero.stories.d.ts.map +0 -1
- package/dist/types/stories/carousel-reviews.stories.d.ts.map +0 -1
- package/dist/types/stories/carousel-workportfolio.stories.d.ts.map +0 -1
- package/dist/types/stories/carousel.stories.d.ts.map +0 -1
- package/dist/types/stories/cms.contentful.item.stories.d.ts.map +0 -1
- package/dist/types/stories/cms.contentful.items.stories.d.ts.map +0 -1
- package/dist/types/stories/cms.contentful.stories.d.ts.map +0 -1
- package/dist/types/stories/cms.google.reviews.stories.d.ts.map +0 -1
- package/dist/types/stories/cms.gravatar.stories.d.ts.map +0 -1
- package/dist/types/stories/cms.instagram.stories.d.ts.map +0 -1
- package/dist/types/stories/cms.wordpress.stories.d.ts +0 -26
- package/dist/types/stories/cms.wordpress.stories.d.ts.map +0 -1
- package/dist/types/stories/general.headers.stories.d.ts.map +0 -1
- package/dist/types/stories/general.loading.stories.d.ts.map +0 -1
- package/dist/types/stories/general.microinteractions.stories.d.ts.map +0 -1
- package/dist/types/stories/general.modal.stories.d.ts.map +0 -1
- package/dist/types/stories/general.table.stories.d.ts.map +0 -1
- package/dist/types/stories/layout.stories.d.ts.map +0 -1
- package/dist/types/stories/markdown.stories.d.ts.map +0 -1
- package/dist/types/stories/menu-accordion.stories.d.ts.map +0 -1
- package/dist/types/stories/menu-simple.stories.d.ts.map +0 -1
- package/dist/types/stories/pagebuilder.form-builder.stories.d.ts.map +0 -1
- package/dist/types/stories/pagebuilder.form-engine.stories.d.ts.map +0 -1
- package/dist/types/stories/pagebuilder.form-extractor.stories.d.ts.map +0 -1
- package/dist/types/stories/pagebuilder.stories.d.ts.map +0 -1
- package/dist/types/stories/pagebuilder.usageguide.stories.d.ts.map +0 -1
- package/dist/types/stories/pageengine.stories.d.ts.map +0 -1
- package/dist/types/stories/recipe.stories.d.ts.map +0 -1
- package/dist/types/stories/seo.404.stories.d.ts.map +0 -1
- package/dist/types/stories/seo.googleanalytics.stories.d.ts.map +0 -1
- package/dist/types/stories/seo.googlesearch.stories.d.ts.map +0 -1
- package/dist/types/stories/seo.metadata.stories.d.ts.map +0 -1
- package/dist/types/stories/seo.sitemap.stories.d.ts.map +0 -1
- package/dist/types/stories/shoppingcart.ebay.item.stories.d.ts.map +0 -1
- package/dist/types/stories/shoppingcart.ebay.items.stories.d.ts.map +0 -1
- package/dist/types/stories/shoppingcart.stories.d.ts.map +0 -1
- package/dist/types/stories/sidepanel.stories.d.ts.map +0 -1
- package/dist/types/stories/socialcard.stories.d.ts.map +0 -1
- package/dist/types/stories/tiles.stories.d.ts.map +0 -1
- package/dist/types/stories/timeline.stories.d.ts.map +0 -1
- package/dist/components/{linkedin → cms}/pixelated.linkedin.js +0 -0
- package/dist/components/{linkedin → cms}/pixelated.linkedin1.js +0 -0
- package/dist/components/{linkedin → cms}/pixelated.linkedin2.js +0 -0
- package/dist/components/{yelp → cms}/yelp.js +0 -0
- package/dist/components/{sidepanel → general}/sidepanel.css +0 -0
- package/dist/components/{sidepanel → general}/sidepanel.js +0 -0
- package/dist/components/{buzzwordbingo → structured}/buzzwordbingo.css +0 -0
- package/dist/components/{buzzwordbingo → structured}/buzzwordbingo.js +1 -1
- package/dist/components/{markdown → structured}/markdown.css +0 -0
- package/dist/components/{markdown → structured}/markdown.js +0 -0
- package/dist/components/{recipe → structured}/recipe.css +0 -0
- package/dist/components/{recipe → structured}/recipe.js +0 -0
- package/dist/components/{socialcard → structured}/socialcard.css +0 -0
- package/dist/components/{socialcard → structured}/socialcard.js +1 -1
- /package/dist/types/components/{linkedin → cms}/pixelated.linkedin.d.ts +0 -0
- /package/dist/types/components/{linkedin → cms}/pixelated.linkedin1.d.ts +0 -0
- /package/dist/types/components/{linkedin → cms}/pixelated.linkedin2.d.ts +0 -0
- /package/dist/types/components/{yelp → cms}/yelp.d.ts +0 -0
- /package/dist/types/components/{sidepanel → general}/sidepanel.d.ts +0 -0
- /package/dist/types/components/{markdown → structured}/markdown.d.ts +0 -0
- /package/dist/types/components/{recipe → structured}/recipe.d.ts +0 -0
- /package/dist/types/stories/{callout.many.stories.d.ts → callout/callout.many.stories.d.ts} +0 -0
- /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("
|
|
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
|
-
.
|
|
13
|
+
.menu-wrapper {
|
|
14
14
|
height: 100%;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
.
|
|
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
|
-
.
|
|
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
|
-
.
|
|
53
|
+
.menu-item:hover {
|
|
54
54
|
background-color: var(--accent1-color);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
.
|
|
57
|
+
.menu-item:not(:first-child) {
|
|
58
58
|
border-left: 2px solid var(--primary-color);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
.
|
|
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
|
-
.
|
|
70
|
+
.menu-item a.selected {
|
|
71
71
|
background-color: var(--secondary-color);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
.
|
|
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('.
|
|
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: "
|
|
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: '
|
|
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
|
|
3
|
-
import PropTypes from
|
|
4
|
-
import { getXHRData, generateURL } from
|
|
5
|
-
import
|
|
6
|
-
import
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
},
|
|
39
|
-
const myURL =
|
|
40
|
-
const myURLProps = { command:
|
|
41
|
-
const myMethod =
|
|
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
|
-
|
|
58
|
+
setJoke(myJokeData);
|
|
45
59
|
});
|
|
46
|
-
};
|
|
47
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
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/
|
|
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
|
-
|
|
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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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 {
|
|
1
|
+
import { PageTitleHeader, PageSectionHeader } from "../../general/semantic";
|
|
2
2
|
import { Callout } from "../../callout/callout";
|
|
3
|
-
import { PageSection,
|
|
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":
|
|
8
|
+
"Page Title Header": PageTitleHeader,
|
|
9
9
|
"Page Section Header": PageSectionHeader,
|
|
10
10
|
"Callout": Callout,
|
|
11
11
|
"Page Section": PageSection,
|
|
12
|
-
"Grid Item":
|
|
13
|
-
"Flex Item":
|
|
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/
|
|
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
|
-
.
|
|
2
|
+
.fof-body-container {
|
|
3
3
|
width: 100%;
|
|
4
4
|
margin: 0 auto;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
.
|
|
7
|
+
.fof-body-container h1 {
|
|
8
8
|
font-size: 2em;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
.
|
|
11
|
+
.fof-image-container {
|
|
12
12
|
width: 80%;
|
|
13
13
|
margin: 0 auto;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
.
|
|
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
|
-
.
|
|
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: "
|
|
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 })) }
|