@pixelated-tech/components 3.4.3 → 3.5.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 (228) hide show
  1. package/README.md +12 -191
  2. package/dist/components/admin/componentusage/componentAnalysis.js +12 -4
  3. package/dist/components/admin/componentusage/componentDiscovery.js +20 -6
  4. package/dist/components/admin/site-health/site-health-accessibility.js +5 -1
  5. package/dist/components/admin/site-health/site-health-axe-core.js +4 -0
  6. package/dist/components/admin/site-health/site-health-cloudwatch.integration.js +0 -5
  7. package/dist/components/admin/site-health/site-health-cloudwatch.js +7 -1
  8. package/dist/components/admin/site-health/site-health-dependency-vulnerabilities.js +4 -0
  9. package/dist/components/admin/site-health/site-health-github.js +6 -0
  10. package/dist/components/admin/site-health/site-health-google-analytics.js +6 -0
  11. package/dist/components/admin/site-health/site-health-google-search-console.js +6 -0
  12. package/dist/components/admin/site-health/site-health-on-site-seo.integration.js +128 -55
  13. package/dist/components/admin/site-health/site-health-on-site-seo.js +4 -0
  14. package/dist/components/admin/site-health/site-health-overview.js +11 -4
  15. package/dist/components/admin/site-health/site-health-performance.js +4 -0
  16. package/dist/components/admin/site-health/site-health-security.js +5 -1
  17. package/dist/components/admin/site-health/site-health-seo.js +5 -1
  18. package/dist/components/admin/site-health/site-health-template.js +19 -9
  19. package/dist/components/admin/site-health/site-health-uptime.js +4 -0
  20. package/dist/components/callout/callout.js +0 -10
  21. package/dist/components/carousel/carousel.js +15 -4
  22. package/dist/components/carousel/tiles.js +1 -1
  23. package/dist/components/cms/contentful.items.components.js +3 -4
  24. package/dist/components/cms/flickr.js +1 -1
  25. package/dist/components/cms/google.reviews.components.js +3 -3
  26. package/dist/components/cms/instagram.components.js +15 -5
  27. package/dist/components/cms/smartimage.js +2 -2
  28. package/dist/components/cms/wordpress.components.js +32 -6
  29. package/dist/components/cms/yelp.js +5 -0
  30. package/dist/components/config/config.server.js +7 -1
  31. package/dist/components/general/css.js +0 -1
  32. package/dist/components/general/image.js +0 -1
  33. package/dist/components/general/loading.js +2 -1
  34. package/dist/components/general/microinteractions.js +0 -1
  35. package/dist/components/general/modal.css +2 -4
  36. package/dist/components/general/modal.js +72 -30
  37. package/dist/components/general/sidepanel.js +16 -0
  38. package/dist/components/general/tab.js +1 -0
  39. package/dist/components/menu/menu-accordion.css +1 -1
  40. package/dist/components/menu/menu-accordion.js +15 -4
  41. package/dist/components/menu/menu-expando.js +21 -19
  42. package/dist/components/menu/menu-simple.js +14 -14
  43. package/dist/components/nerdjoke/nerdjoke.js +1 -1
  44. package/dist/components/seo/googlesearch.js +0 -1
  45. package/dist/components/seo/schema-blogposting.js +6 -1
  46. package/dist/components/seo/schema-recipe.js +34 -1
  47. package/dist/components/seo/schema-services.js +20 -2
  48. package/dist/components/shoppingcart/ebay.components.js +3 -3
  49. package/dist/components/shoppingcart/shoppingcart.components.js +76 -28
  50. package/dist/components/shoppingcart/shoppingcart.functions.js +4 -4
  51. package/dist/components/sitebuilder/config/CompoundFontSelector.js +13 -4
  52. package/dist/components/sitebuilder/config/ConfigBuilder.css +194 -5
  53. package/dist/components/sitebuilder/config/ConfigBuilder.js +183 -17
  54. package/dist/components/sitebuilder/config/FontSelector.js +13 -2
  55. package/dist/components/sitebuilder/config/routes-form.json +67 -0
  56. package/dist/components/sitebuilder/config/siteinfo-form.json +28 -14
  57. package/dist/components/sitebuilder/config/visualdesignform.json +4 -4
  58. package/dist/components/sitebuilder/form/formbuilder.js +1 -0
  59. package/dist/components/sitebuilder/form/formcomponents.js +2 -3
  60. package/dist/components/sitebuilder/form/formengine.js +6 -5
  61. package/dist/components/sitebuilder/form/formvalidator.js +5 -0
  62. package/dist/components/sitebuilder/page/components/PageBuilderUI.js +5 -1
  63. package/dist/components/structured/buzzwordbingo.css +0 -1
  64. package/dist/components/structured/recipe.js +1 -1
  65. package/dist/components/structured/socialcard.js +2 -2
  66. package/dist/components/utilities/functions.js +82 -1
  67. package/dist/components/utilities/gemini-api.client.js +76 -0
  68. package/dist/components/utilities/gemini-api.server.js +185 -0
  69. package/dist/data/routes.json +5 -5
  70. package/dist/index.adminclient.js +30 -0
  71. package/dist/index.adminserver.js +21 -0
  72. package/dist/index.js +4 -18
  73. package/dist/index.server.js +15 -28
  74. package/dist/types/components/admin/componentusage/componentAnalysis.d.ts.map +1 -1
  75. package/dist/types/components/admin/componentusage/componentDiscovery.d.ts +1 -1
  76. package/dist/types/components/admin/componentusage/componentDiscovery.d.ts.map +1 -1
  77. package/dist/types/components/admin/site-health/site-health-accessibility.d.ts +7 -4
  78. package/dist/types/components/admin/site-health/site-health-accessibility.d.ts.map +1 -1
  79. package/dist/types/components/admin/site-health/site-health-axe-core.d.ts +7 -4
  80. package/dist/types/components/admin/site-health/site-health-axe-core.d.ts.map +1 -1
  81. package/dist/types/components/admin/site-health/site-health-cloudwatch.d.ts +9 -6
  82. package/dist/types/components/admin/site-health/site-health-cloudwatch.d.ts.map +1 -1
  83. package/dist/types/components/admin/site-health/site-health-cloudwatch.integration.d.ts.map +1 -1
  84. package/dist/types/components/admin/site-health/site-health-dependency-vulnerabilities.d.ts +7 -4
  85. package/dist/types/components/admin/site-health/site-health-dependency-vulnerabilities.d.ts.map +1 -1
  86. package/dist/types/components/admin/site-health/site-health-github.d.ts +9 -6
  87. package/dist/types/components/admin/site-health/site-health-github.d.ts.map +1 -1
  88. package/dist/types/components/admin/site-health/site-health-google-analytics.d.ts +9 -6
  89. package/dist/types/components/admin/site-health/site-health-google-analytics.d.ts.map +1 -1
  90. package/dist/types/components/admin/site-health/site-health-google-search-console.d.ts +9 -6
  91. package/dist/types/components/admin/site-health/site-health-google-search-console.d.ts.map +1 -1
  92. package/dist/types/components/admin/site-health/site-health-on-site-seo.d.ts +8 -3
  93. package/dist/types/components/admin/site-health/site-health-on-site-seo.d.ts.map +1 -1
  94. package/dist/types/components/admin/site-health/site-health-on-site-seo.integration.d.ts.map +1 -1
  95. package/dist/types/components/admin/site-health/site-health-overview.d.ts +7 -4
  96. package/dist/types/components/admin/site-health/site-health-overview.d.ts.map +1 -1
  97. package/dist/types/components/admin/site-health/site-health-performance.d.ts +7 -4
  98. package/dist/types/components/admin/site-health/site-health-performance.d.ts.map +1 -1
  99. package/dist/types/components/admin/site-health/site-health-security.d.ts +7 -4
  100. package/dist/types/components/admin/site-health/site-health-security.d.ts.map +1 -1
  101. package/dist/types/components/admin/site-health/site-health-seo.d.ts +7 -4
  102. package/dist/types/components/admin/site-health/site-health-seo.d.ts.map +1 -1
  103. package/dist/types/components/admin/site-health/site-health-template.d.ts +12 -10
  104. package/dist/types/components/admin/site-health/site-health-template.d.ts.map +1 -1
  105. package/dist/types/components/admin/site-health/site-health-uptime.d.ts +7 -4
  106. package/dist/types/components/admin/site-health/site-health-uptime.d.ts.map +1 -1
  107. package/dist/types/components/callout/callout.d.ts +3 -3
  108. package/dist/types/components/callout/callout.d.ts.map +1 -1
  109. package/dist/types/components/carousel/carousel.d.ts +16 -7
  110. package/dist/types/components/carousel/carousel.d.ts.map +1 -1
  111. package/dist/types/components/carousel/tiles.d.ts +3 -6
  112. package/dist/types/components/carousel/tiles.d.ts.map +1 -1
  113. package/dist/types/components/cms/flickr.d.ts +3 -6
  114. package/dist/types/components/cms/flickr.d.ts.map +1 -1
  115. package/dist/types/components/cms/google.reviews.components.d.ts +1 -7
  116. package/dist/types/components/cms/google.reviews.components.d.ts.map +1 -1
  117. package/dist/types/components/cms/hubspot.components.d.ts +1 -2
  118. package/dist/types/components/cms/hubspot.components.d.ts.map +1 -1
  119. package/dist/types/components/cms/instagram.components.d.ts +14 -9
  120. package/dist/types/components/cms/instagram.components.d.ts.map +1 -1
  121. package/dist/types/components/cms/smartimage.d.ts +2 -28
  122. package/dist/types/components/cms/smartimage.d.ts.map +1 -1
  123. package/dist/types/components/cms/wordpress.components.d.ts +33 -14
  124. package/dist/types/components/cms/wordpress.components.d.ts.map +1 -1
  125. package/dist/types/components/cms/yelp.d.ts +9 -4
  126. package/dist/types/components/cms/yelp.d.ts.map +1 -1
  127. package/dist/types/components/config/config.server.d.ts +9 -6
  128. package/dist/types/components/config/config.server.d.ts.map +1 -1
  129. package/dist/types/components/general/loading.d.ts +5 -1
  130. package/dist/types/components/general/loading.d.ts.map +1 -1
  131. package/dist/types/components/general/microinteractions.d.ts +1 -3
  132. package/dist/types/components/general/microinteractions.d.ts.map +1 -1
  133. package/dist/types/components/general/modal.d.ts +11 -5
  134. package/dist/types/components/general/modal.d.ts.map +1 -1
  135. package/dist/types/components/general/semantic.d.ts +3 -3
  136. package/dist/types/components/general/sidepanel.d.ts +20 -13
  137. package/dist/types/components/general/sidepanel.d.ts.map +1 -1
  138. package/dist/types/components/general/tab.d.ts +1 -2
  139. package/dist/types/components/general/tab.d.ts.map +1 -1
  140. package/dist/types/components/menu/menu-accordion.d.ts +22 -9
  141. package/dist/types/components/menu/menu-accordion.d.ts.map +1 -1
  142. package/dist/types/components/menu/menu-expando.d.ts +14 -5
  143. package/dist/types/components/menu/menu-expando.d.ts.map +1 -1
  144. package/dist/types/components/menu/menu-simple.d.ts +4 -5
  145. package/dist/types/components/menu/menu-simple.d.ts.map +1 -1
  146. package/dist/types/components/nerdjoke/nerdjoke.d.ts +1 -1
  147. package/dist/types/components/nerdjoke/nerdjoke.d.ts.map +1 -1
  148. package/dist/types/components/seo/googleanalytics.d.ts.map +1 -1
  149. package/dist/types/components/seo/metadata.components.d.ts +2 -2
  150. package/dist/types/components/seo/metadata.components.d.ts.map +1 -1
  151. package/dist/types/components/seo/schema-blogposting.d.ts +7 -4
  152. package/dist/types/components/seo/schema-blogposting.d.ts.map +1 -1
  153. package/dist/types/components/seo/schema-recipe.d.ts +29 -30
  154. package/dist/types/components/seo/schema-recipe.d.ts.map +1 -1
  155. package/dist/types/components/seo/schema-services.d.ts +19 -9
  156. package/dist/types/components/seo/schema-services.d.ts.map +1 -1
  157. package/dist/types/components/shoppingcart/paypal.d.ts +1 -1
  158. package/dist/types/components/shoppingcart/paypal.d.ts.map +1 -1
  159. package/dist/types/components/shoppingcart/shoppingcart.components.d.ts +77 -28
  160. package/dist/types/components/shoppingcart/shoppingcart.components.d.ts.map +1 -1
  161. package/dist/types/components/shoppingcart/shoppingcart.functions.d.ts +4 -23
  162. package/dist/types/components/shoppingcart/shoppingcart.functions.d.ts.map +1 -1
  163. package/dist/types/components/sitebuilder/config/CompoundFontSelector.d.ts +10 -11
  164. package/dist/types/components/sitebuilder/config/CompoundFontSelector.d.ts.map +1 -1
  165. package/dist/types/components/sitebuilder/config/ConfigBuilder.d.ts +41 -174
  166. package/dist/types/components/sitebuilder/config/ConfigBuilder.d.ts.map +1 -1
  167. package/dist/types/components/sitebuilder/config/FontSelector.d.ts +12 -13
  168. package/dist/types/components/sitebuilder/config/FontSelector.d.ts.map +1 -1
  169. package/dist/types/components/sitebuilder/form/formbuilder.d.ts +7 -3
  170. package/dist/types/components/sitebuilder/form/formbuilder.d.ts.map +1 -1
  171. package/dist/types/components/sitebuilder/form/formcomponents.d.ts +1 -1
  172. package/dist/types/components/sitebuilder/form/formcomponents.d.ts.map +1 -1
  173. package/dist/types/components/sitebuilder/form/formengine.d.ts +1 -2
  174. package/dist/types/components/sitebuilder/form/formengine.d.ts.map +1 -1
  175. package/dist/types/components/sitebuilder/form/formextractor.d.ts +5 -4
  176. package/dist/types/components/sitebuilder/form/formextractor.d.ts.map +1 -1
  177. package/dist/types/components/sitebuilder/form/formtypes.d.ts +3 -3
  178. package/dist/types/components/sitebuilder/form/formtypes.d.ts.map +1 -1
  179. package/dist/types/components/sitebuilder/form/formvalidator.d.ts +8 -3
  180. package/dist/types/components/sitebuilder/form/formvalidator.d.ts.map +1 -1
  181. package/dist/types/components/sitebuilder/page/components/ComponentPropertiesForm.d.ts +2 -3
  182. package/dist/types/components/sitebuilder/page/components/ComponentPropertiesForm.d.ts.map +1 -1
  183. package/dist/types/components/sitebuilder/page/components/ComponentSelector.d.ts +2 -3
  184. package/dist/types/components/sitebuilder/page/components/ComponentSelector.d.ts.map +1 -1
  185. package/dist/types/components/sitebuilder/page/components/ComponentTree.d.ts +2 -3
  186. package/dist/types/components/sitebuilder/page/components/ComponentTree.d.ts.map +1 -1
  187. package/dist/types/components/sitebuilder/page/components/PageBuilderUI.d.ts +8 -7
  188. package/dist/types/components/sitebuilder/page/components/PageBuilderUI.d.ts.map +1 -1
  189. package/dist/types/components/sitebuilder/page/components/PageEngine.d.ts.map +1 -1
  190. package/dist/types/components/sitebuilder/page/components/SaveLoadSection.d.ts +2 -3
  191. package/dist/types/components/sitebuilder/page/components/SaveLoadSection.d.ts.map +1 -1
  192. package/dist/types/components/sitebuilder/page/lib/componentMap.d.ts +1 -1
  193. package/dist/types/components/structured/markdown.d.ts +1 -3
  194. package/dist/types/components/structured/markdown.d.ts.map +1 -1
  195. package/dist/types/components/structured/recipe.d.ts +5 -32
  196. package/dist/types/components/structured/recipe.d.ts.map +1 -1
  197. package/dist/types/components/structured/socialcard.d.ts +4 -0
  198. package/dist/types/components/structured/socialcard.d.ts.map +1 -1
  199. package/dist/types/components/structured/timeline.d.ts +1 -3
  200. package/dist/types/components/structured/timeline.d.ts.map +1 -1
  201. package/dist/types/components/utilities/functions.d.ts +20 -0
  202. package/dist/types/components/utilities/functions.d.ts.map +1 -1
  203. package/dist/types/components/utilities/gemini-api.client.d.ts +38 -0
  204. package/dist/types/components/utilities/gemini-api.client.d.ts.map +1 -0
  205. package/dist/types/components/utilities/gemini-api.server.d.ts +17 -0
  206. package/dist/types/components/utilities/gemini-api.server.d.ts.map +1 -0
  207. package/dist/types/index.adminclient.d.ts +27 -0
  208. package/dist/types/index.adminclient.d.ts.map +1 -0
  209. package/dist/types/index.adminserver.d.ts +19 -0
  210. package/dist/types/index.adminserver.d.ts.map +1 -0
  211. package/dist/types/index.d.ts +4 -18
  212. package/dist/types/index.server.d.ts +5 -28
  213. package/dist/types/stories/general/sidepanel.stories.d.ts.map +1 -1
  214. package/dist/types/stories/general/smartimage.stories.d.ts +74 -2
  215. package/dist/types/stories/general/smartimage.stories.d.ts.map +1 -1
  216. package/package.json +19 -9
  217. package/README.COMPONENTS.md +0 -2310
  218. package/dist/components/cms/pixelated.linkedin.js +0 -180
  219. package/dist/components/cms/pixelated.linkedin1.js +0 -84
  220. package/dist/components/cms/pixelated.linkedin2.js +0 -92
  221. package/dist/types/components/cms/pixelated.linkedin.d.ts +0 -2
  222. package/dist/types/components/cms/pixelated.linkedin.d.ts.map +0 -1
  223. package/dist/types/components/cms/pixelated.linkedin1.d.ts +0 -2
  224. package/dist/types/components/cms/pixelated.linkedin1.d.ts.map +0 -1
  225. package/dist/types/components/cms/pixelated.linkedin2.d.ts +0 -2
  226. package/dist/types/components/cms/pixelated.linkedin2.d.ts.map +0 -1
  227. package/dist/types/tests/pixelated.menu-expando.test.d.ts +0 -2
  228. package/dist/types/tests/pixelated.menu-expando.test.d.ts.map +0 -1
@@ -1,180 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import React, { useState, useEffect } from 'react';
3
- /*
4
- TODO #6 Finish LinkedIn Integration to show recommendations
5
- */
6
- /*
7
- https://www.linkedin.com/company/pixelatedtech
8
- https://www.linkedin.com/company/106825397/admin/dashboard/
9
-
10
- https://developer.linkedin.com/
11
- https://www.linkedin.com/developers/apps/222241632/products?refreshKey=1743873578146
12
- https://learn.microsoft.com/en-us/linkedin/shared/integrations/people/reputation-guides/recommendation
13
- https://learn.microsoft.com/en-us/answers/questions/1021872/how-do-i-get-access-to-this-linkedin-api-connectio
14
-
15
- https://github.com/jsushank17/LinkedIN-Rest-API-with-React-JS-and-Express/blob/master/CustomLinkedIN.jsx
16
- https://reintech.io/blog/integrating-linkedin-testimonials-on-your-website
17
-
18
- */
19
- export function LinkedIn() {
20
- const debug = true;
21
- const [accessToken, setAccessToken] = useState();
22
- const [recommendations, setRecommendations] = useState();
23
- const proxyURL = 'https://proxy.pixelated.tech/prod/proxy?url=';
24
- let codeParam, stateParam, myHref;
25
- if (typeof window !== 'undefined') {
26
- const urlParams = new URLSearchParams(window.location.search);
27
- codeParam = urlParams.get('code');
28
- stateParam = urlParams.get('state');
29
- myHref = window.location.origin;
30
- }
31
- const LinkedInApi = {
32
- clientID: '78sh51y6nl3xe8',
33
- clientSecret: 'WPL_AP1.dug4iQXjl3VjEGG0.tok/0A==',
34
- appID: '222241632',
35
- redirectUrl: `${myHref}/linkedin`,
36
- state: '96573480', // epoch time for Monday, January 22, 1973 12:58:00 PM GMT-05:00
37
- oAuthUrl: 'https://www.linkedin.com/oauth/v2/authorization',
38
- oAuthResponseType: 'code',
39
- oAuthScope: 'w_member_social',
40
- tokenUrl: 'https://www.linkedin.com/oauth/v2/accessToken',
41
- // recommendUrl : 'https://api.linkedin.com/v2/recommendations/urn:li:recommendation:(urn:li:person:brianwhaley)',
42
- recommendUrl: 'https://api.linkedin.com/v2/recommendation',
43
- meUrl: 'https://api.linkedin.com/v2/me',
44
- };
45
- async function fetchOAuth() {
46
- if (debug)
47
- console.log("Fetching LinkedIn oAuth Token");
48
- const oAuthParams = new URLSearchParams({
49
- response_type: LinkedInApi.oAuthResponseType,
50
- client_id: LinkedInApi.clientID,
51
- state: LinkedInApi.state,
52
- scope: encodeURIComponent(LinkedInApi.oAuthScope),
53
- redirect_uri: LinkedInApi.redirectUrl
54
- });
55
- const fullOAuthURL = /* proxyURL + */ LinkedInApi.oAuthUrl + "?" + oAuthParams.toString();
56
- try {
57
- if (debug)
58
- console.log("OAuth URL : ", fullOAuthURL);
59
- window.location.href = fullOAuthURL;
60
- }
61
- catch (err) {
62
- console.log("Error Fetching OAuth Token : ", err);
63
- }
64
- }
65
- async function fetchAccessToken() {
66
- if (accessToken)
67
- return;
68
- if (debug)
69
- console.log("Fetching LinkedIn Access Token");
70
- const fullTokenURL = proxyURL + LinkedInApi.tokenUrl;
71
- try {
72
- if (debug)
73
- console.log("oAuth Code : ", codeParam);
74
- if (debug)
75
- console.log("Access Token URL : ", fullTokenURL);
76
- const tokenRequestBody = new URLSearchParams({
77
- 'grant_type': 'authorization_code',
78
- 'code': codeParam,
79
- 'redirect_uri': LinkedInApi.redirectUrl,
80
- 'client_id': LinkedInApi.clientID,
81
- 'client_secret': LinkedInApi.clientSecret
82
- });
83
- if (debug)
84
- console.log("FETCHBODY : ", tokenRequestBody.toString());
85
- if (debug)
86
- console.log("FETCHBODY LENGTH : ", tokenRequestBody.toString().length);
87
- const tokenResponse = await fetch(fullTokenURL, {
88
- method: "POST",
89
- headers: {
90
- "Content-Type": "application/x-www-form-urlencoded",
91
- // "Content-Length" : tokenRequestBody.toString().length ,
92
- },
93
- body: tokenRequestBody
94
- });
95
- if (tokenResponse.ok) {
96
- const tokenData = await tokenResponse.json();
97
- console.log(await tokenData);
98
- setAccessToken(tokenData.access_token);
99
- if (debug)
100
- console.log("Access Token : ", await tokenData);
101
- }
102
- else {
103
- console.error(`HTTP Error : Status: ${tokenResponse.status}`);
104
- // Optionally, throw an error to be caught later
105
- throw new Error(`HTTP Error : Status: ${tokenResponse.status}`);
106
- }
107
- }
108
- catch (err) {
109
- console.log("Error Fetching Access Token : ", err);
110
- }
111
- return;
112
- }
113
- async function fetchRecommendations() {
114
- if (!accessToken || recommendations)
115
- return;
116
- if (debug)
117
- console.log("Fetching LinkedIn Recommendations");
118
- const recommendParams = new URLSearchParams({
119
- // "q": "received-recommendations",
120
- // oauth2_access_token: accessToken,
121
- "q": "recipient",
122
- "statusFilters": "List(VISIBLE)",
123
- });
124
- const fullRecommendsURL = proxyURL + LinkedInApi.recommendUrl + "?" + recommendParams.toString();
125
- try {
126
- console.log("RECOMMEND URL : ", fullRecommendsURL);
127
- console.log("ACCESS TOKEN : ", accessToken);
128
- const recommendResponse = await fetch(fullRecommendsURL, {
129
- method: 'GET',
130
- headers: {
131
- Authorization: `Bearer ${accessToken}`,
132
- 'X-Restli-Protocol-Version': '2.0.0',
133
- },
134
- /* body: new URLSearchParams({
135
- "recommendee": "urn:li:person:ro87f5eyg_",
136
- "status": "VISIBLE",
137
- }) */
138
- });
139
- console.log("RECOMMEND RESPONSE : ", recommendResponse);
140
- const recommendData = await recommendResponse.json();
141
- if (recommendData.elements)
142
- setRecommendations(recommendData.elements);
143
- if (debug)
144
- console.log("Recommendations : ", await recommendData);
145
- }
146
- catch (err) {
147
- console.log("Error Fetching LinkedIn Recommendations : ", err);
148
- }
149
- }
150
- useEffect(() => {
151
- if (codeParam && stateParam) {
152
- if (debug)
153
- console.log("oAuth Code Is Present");
154
- if (accessToken) {
155
- if (debug)
156
- console.log("Access Token Is Present");
157
- if (!recommendations) {
158
- if (debug)
159
- console.log("No Recommendations Are Present");
160
- fetchRecommendations();
161
- }
162
- else {
163
- if (debug)
164
- console.log("Recommendations Already Retrieved");
165
- }
166
- }
167
- else if (!accessToken) {
168
- if (debug)
169
- console.log("No Access Token Is Present");
170
- fetchAccessToken();
171
- }
172
- }
173
- else {
174
- if (debug)
175
- console.log("No oAuth Code Present");
176
- fetchOAuth();
177
- }
178
- }, [accessToken]);
179
- return (_jsx("div", { children: _jsx("div", { children: recommendations ? _jsx("div", { children: JSON.stringify(recommendations) }) : _jsx("p", { children: "Loading..." }) }) }));
180
- }
@@ -1,84 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /* eslint-disable @typescript-eslint/no-unused-vars */
3
- import React, { useState, useEffect } from 'react';
4
- export function LinkedIn() {
5
- const [data, setData] = useState(null);
6
- const proxyURL = 'https://proxy.pixelated.tech/prod/proxy?url=';
7
- const urlParams = new URLSearchParams(window.location.search);
8
- const codeParam = urlParams.get('code');
9
- const LinkedInApi = {
10
- clientID: '78sh51y6nl3xe8',
11
- clientSecret: 'WPL_AP1.dug4iQXjl3VjEGG0.tok/0A==',
12
- appID: '222241632',
13
- // redirectUrl: 'https://www.pixelated.tech/linkedin',
14
- redirectUrl: 'http://localhost:6006',
15
- tokenUrl: 'https://www.linkedin.com/oauth/v2/accessToken',
16
- oAuthUrl: 'https://www.linkedin.com/oauth/v2/authorization',
17
- oAuthResponseType: 'code',
18
- oAuthScope: 'r_basicprofile', // 'r_liteprofile r_emailaddress w_member_social',
19
- recommendUrl: 'https://api.linkedin.com/v2/recommendations/urn:li:recommendation:(urn:li:person:brianwhaley)',
20
- meUrl: 'https://api.linkedin.com/v2/me',
21
- state: '96573480' // epoch time for Monday, January 22, 1973 12:58:00 PM GMT-05:00
22
- };
23
- const oAuthParams = new URLSearchParams({
24
- response_type: LinkedInApi.oAuthResponseType,
25
- client_id: LinkedInApi.clientID,
26
- state: LinkedInApi.state,
27
- scope: LinkedInApi.oAuthScope,
28
- redirect_uri: LinkedInApi.redirectUrl
29
- });
30
- const fullOAuthURL = proxyURL + LinkedInApi.oAuthUrl + "?" + oAuthParams.toString();
31
- const recommendParams = new URLSearchParams({
32
- q: 'received',
33
- oauth2_access_token: codeParam
34
- });
35
- const fullRecommendsURL = proxyURL + LinkedInApi.recommendUrl + "?" + recommendParams.toString();
36
- async function fetchOAuth() {
37
- try {
38
- window.location.href = fullOAuthURL;
39
- }
40
- catch (err) {
41
- console.log("Error : ", err);
42
- }
43
- }
44
- async function fetchAccessToken() {
45
- try {
46
- const fullTokenURL = proxyURL + LinkedInApi.tokenUrl;
47
- const tokenPromise = await fetch(fullTokenURL, {
48
- method: 'POST',
49
- headers: {
50
- 'Content-Type': 'application/x-www-form-urlencoded',
51
- 'grant_type': 'authorization_code',
52
- // 'grant_type' : 'client_credentials',
53
- 'code': codeParam,
54
- 'redirect_uri': LinkedInApi.redirectUrl,
55
- 'client_id': LinkedInApi.clientID,
56
- 'client_secret': LinkedInApi.clientSecret
57
- }
58
- });
59
- }
60
- catch (err) {
61
- console.log("Error : ", err);
62
- }
63
- }
64
- async function fetchRecommendations() {
65
- try {
66
- const recommendPromise = await fetch(fullRecommendsURL, { method: 'GET' });
67
- const response = await recommendPromise.response;
68
- setData(await response.body);
69
- }
70
- catch (err) {
71
- console.log("Error : ", err);
72
- }
73
- }
74
- useEffect(() => {
75
- if (codeParam) {
76
- fetchAccessToken()
77
- .then(fetchRecommendations());
78
- }
79
- else {
80
- fetchOAuth();
81
- }
82
- }, []);
83
- return (_jsxs("div", { children: [_jsx("div", { children: _jsx("a", { href: fullOAuthURL, children: "Click it!" }) }), _jsx("div", { children: data ? _jsx("div", { children: JSON.stringify(data) }) : _jsx("p", { children: "Loading..." }) })] }));
84
- }
@@ -1,92 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import React, { useEffect, useState } from 'react';
3
- // CONFIG: Replace with your values
4
- const CLIENT_ID = '78sh51y6nl3xe8';
5
- const CLIENT_SECRET = 'WPL_AP1.dug4iQXjl3VjEGG0.tok/0A==';
6
- const REDIRECT_URI = 'http://localhost:6006/?path=/story/linkedin--linked-in-recommendations';
7
- const STATE = '96573480'; // Any random string
8
- const SCOPES = 'r_liteprofile';
9
- const proxyUrl = 'https://proxy.pixelated.tech/prod/proxy?url=';
10
- export function LinkedInAuthRecommendations() {
11
- const debug = true;
12
- const [accessToken, setAccessToken] = useState(null);
13
- const [recommendations, setRecommendations] = useState([]);
14
- const [error, setError] = useState(null);
15
- // Step 1: Redirect user to LinkedIn login
16
- const initiateLogin = () => {
17
- if (debug)
18
- console.log("Initiating Login");
19
- // const url = encodeURI(`https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=${CLIENT_ID}&redirect_uri=${encodeURIComponent(REDIRECT_URI)}&state=${STATE}&scope=${encodeURIComponent(SCOPES)}`);
20
- const authUrl = `${proxyUrl}https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=${CLIENT_ID}&redirect_uri=${encodeURIComponent(REDIRECT_URI)}&state=${STATE}&scope=${encodeURIComponent(SCOPES)}`;
21
- window.location.href = authUrl;
22
- };
23
- // Step 2: Handle LinkedIn redirect and get access token
24
- useEffect(() => {
25
- if (debug)
26
- console.log("Handling redirect and getting access token");
27
- const urlParams = new URLSearchParams(window.location.search);
28
- const code = urlParams.get('code');
29
- const state = urlParams.get('state');
30
- if (code && state === STATE) {
31
- // Step 3: Exchange code for access token
32
- if (debug)
33
- console.log("Exchanging code for access token : ", code);
34
- const fetchAccessToken = async () => {
35
- try {
36
- const response = await fetch(`${proxyUrl}https://www.linkedin.com/oauth/v2/accessToken`, {
37
- method: 'POST',
38
- headers: {
39
- 'Content-Type': 'application/x-www-form-urlencoded',
40
- },
41
- body: new URLSearchParams({
42
- grant_type: 'authorization_code',
43
- code,
44
- redirect_uri: REDIRECT_URI,
45
- client_id: CLIENT_ID,
46
- client_secret: CLIENT_SECRET, // Only safe on server
47
- }),
48
- });
49
- const data = await response.json();
50
- setAccessToken(data.access_token);
51
- }
52
- catch (err) {
53
- console.log(err);
54
- setError('Failed to get access token');
55
- }
56
- };
57
- fetchAccessToken();
58
- }
59
- }, []);
60
- // Step 4: Call LinkedIn API to get recommendations (hypothetical)
61
- useEffect(() => {
62
- const fetchRecommendations = async () => {
63
- if (!accessToken)
64
- return;
65
- if (debug)
66
- console.log("Calling LinkedIn API");
67
- try {
68
- const response = await fetch(`${proxyUrl}https://api.linkedin.com/v2/recommendations`, {
69
- headers: {
70
- Authorization: `Bearer ${accessToken}`,
71
- 'X-Restli-Protocol-Version': '2.0.0',
72
- },
73
- });
74
- const data = await response.json();
75
- setRecommendations(data.elements || []);
76
- }
77
- catch (err) {
78
- console.log(err);
79
- setError('Failed to fetch recommendations');
80
- }
81
- };
82
- fetchRecommendations();
83
- }, [accessToken]);
84
- // UI
85
- if (error)
86
- return _jsxs("p", { className: "text-red-500", children: ["Error: ", error] });
87
- if (!accessToken) {
88
- return (_jsx("div", { className: "p-4", children: _jsx("button", { onClick: initiateLogin, className: "px-4 py-2 bg-blue-600 text-white rounded", children: "Login with LinkedIn" }) }));
89
- }
90
- return (_jsxs("div", { className: "p-4", children: [_jsx("h2", { className: "text-xl font-bold mb-2", children: "LinkedIn Recommendations" }), recommendations.length === 0 ? (_jsx("p", { children: "No recommendations found." })) : (_jsx("ul", { className: "space-y-4", children: recommendations.map((rec, index) => (_jsxs("li", { className: "p-4 border rounded shadow", children: [_jsx("p", { className: "font-semibold", children: rec.recommender?.name || 'Unknown' }), _jsx("p", { children: rec.text })] }, index))) }))] }));
91
- }
92
- ;
@@ -1,2 +0,0 @@
1
- export function LinkedIn(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=pixelated.linkedin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pixelated.linkedin.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/pixelated.linkedin.js"],"names":[],"mappings":"AAoBA,oEAyJC"}
@@ -1,2 +0,0 @@
1
- export function LinkedIn(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=pixelated.linkedin1.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pixelated.linkedin1.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/pixelated.linkedin1.js"],"names":[],"mappings":"AAGA,oEAiGC"}
@@ -1,2 +0,0 @@
1
- export function LinkedInAuthRecommendations(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=pixelated.linkedin2.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pixelated.linkedin2.d.ts","sourceRoot":"","sources":["../../../../src/components/cms/pixelated.linkedin2.js"],"names":[],"mappings":"AAUA,uFAwGC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=pixelated.menu-expando.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pixelated.menu-expando.test.d.ts","sourceRoot":"","sources":["../../../src/tests/pixelated.menu-expando.test.tsx"],"names":[],"mappings":""}