@rocket/js 0.0.0 → 0.1.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 (340) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +224 -2
  3. package/dist-types/exports/MainMenu.d.ts +2 -0
  4. package/dist-types/exports/MainMenu.d.ts.map +1 -0
  5. package/dist-types/exports/PageData.d.ts +2 -0
  6. package/dist-types/exports/PageData.d.ts.map +1 -0
  7. package/dist-types/exports/RocketCodeBlock.d.ts +2 -0
  8. package/dist-types/exports/RocketCodeBlock.d.ts.map +1 -0
  9. package/dist-types/exports/RocketIcon.d.ts +2 -0
  10. package/dist-types/exports/RocketIcon.d.ts.map +1 -0
  11. package/dist-types/exports/RocketJsDemo.d.ts +2 -0
  12. package/dist-types/exports/RocketJsDemo.d.ts.map +1 -0
  13. package/dist-types/exports/RocketRequestDemo.d.ts +2 -0
  14. package/dist-types/exports/RocketRequestDemo.d.ts.map +1 -0
  15. package/dist-types/exports/SocialPreviewPlayground.d.ts +2 -0
  16. package/dist-types/exports/SocialPreviewPlayground.d.ts.map +1 -0
  17. package/dist-types/exports/adapters/netlify.d.ts +2 -0
  18. package/dist-types/exports/adapters/netlify.d.ts.map +1 -0
  19. package/dist-types/exports/asyncMessage.d.ts +2 -0
  20. package/dist-types/exports/asyncMessage.d.ts.map +1 -0
  21. package/dist-types/exports/component-hydration.d.ts +2 -0
  22. package/dist-types/exports/component-hydration.d.ts.map +1 -0
  23. package/dist-types/exports/components/web-awesome.d.ts +3 -0
  24. package/dist-types/exports/components/web-awesome.d.ts.map +1 -0
  25. package/dist-types/exports/components.d.ts +2 -0
  26. package/dist-types/exports/components.d.ts.map +1 -0
  27. package/dist-types/exports/config.d.ts +2 -0
  28. package/dist-types/exports/config.d.ts.map +1 -0
  29. package/dist-types/exports/debounce.d.ts +2 -0
  30. package/dist-types/exports/debounce.d.ts.map +1 -0
  31. package/dist-types/exports/define/RocketCodeBlock.d.ts +2 -0
  32. package/dist-types/exports/define/RocketCodeBlock.d.ts.map +1 -0
  33. package/dist-types/exports/define/RocketIcon.d.ts +2 -0
  34. package/dist-types/exports/define/RocketIcon.d.ts.map +1 -0
  35. package/dist-types/exports/define/RocketJsDemo.d.ts +2 -0
  36. package/dist-types/exports/define/RocketJsDemo.d.ts.map +1 -0
  37. package/dist-types/exports/define/RocketRequestDemo.d.ts +2 -0
  38. package/dist-types/exports/define/RocketRequestDemo.d.ts.map +1 -0
  39. package/dist-types/exports/define/menus.d.ts +2 -0
  40. package/dist-types/exports/define/menus.d.ts.map +1 -0
  41. package/dist-types/exports/extractCode.d.ts +2 -0
  42. package/dist-types/exports/extractCode.d.ts.map +1 -0
  43. package/dist-types/exports/globalData.d.ts +2 -0
  44. package/dist-types/exports/globalData.d.ts.map +1 -0
  45. package/dist-types/exports/hydration/hydrationLoader.d.ts +2 -0
  46. package/dist-types/exports/hydration/hydrationLoader.d.ts.map +1 -0
  47. package/dist-types/exports/icons.d.ts +2 -0
  48. package/dist-types/exports/icons.d.ts.map +1 -0
  49. package/dist-types/exports/layout-helper.d.ts +2 -0
  50. package/dist-types/exports/layout-helper.d.ts.map +1 -0
  51. package/dist-types/exports/layout.d.ts +2 -0
  52. package/dist-types/exports/layout.d.ts.map +1 -0
  53. package/dist-types/exports/layouts/atlasDoc.d.ts +2 -0
  54. package/dist-types/exports/layouts/atlasDoc.d.ts.map +1 -0
  55. package/dist-types/exports/layouts/atlasHero.d.ts +2 -0
  56. package/dist-types/exports/layouts/atlasHero.d.ts.map +1 -0
  57. package/dist-types/exports/layouts/atlasNotFound.d.ts +2 -0
  58. package/dist-types/exports/layouts/atlasNotFound.d.ts.map +1 -0
  59. package/dist-types/exports/loaded-page-module.d.ts +2 -0
  60. package/dist-types/exports/loaded-page-module.d.ts.map +1 -0
  61. package/dist-types/exports/markdownHook.d.ts +2 -0
  62. package/dist-types/exports/markdownHook.d.ts.map +1 -0
  63. package/dist-types/exports/menu.d.ts +2 -0
  64. package/dist-types/exports/menu.d.ts.map +1 -0
  65. package/dist-types/exports/menus.d.ts +6 -0
  66. package/dist-types/exports/menus.d.ts.map +1 -0
  67. package/dist-types/exports/page-runtime.d.ts +2 -0
  68. package/dist-types/exports/page-runtime.d.ts.map +1 -0
  69. package/dist-types/exports/pages.d.ts +2 -0
  70. package/dist-types/exports/pages.d.ts.map +1 -0
  71. package/dist-types/exports/resolve.d.ts +2 -0
  72. package/dist-types/exports/resolve.d.ts.map +1 -0
  73. package/dist-types/exports/ssr.d.ts +2 -0
  74. package/dist-types/exports/ssr.d.ts.map +1 -0
  75. package/dist-types/exports/standalone-demo-url.d.ts +2 -0
  76. package/dist-types/exports/standalone-demo-url.d.ts.map +1 -0
  77. package/dist-types/exports/transform.d.ts +2 -0
  78. package/dist-types/exports/transform.d.ts.map +1 -0
  79. package/dist-types/exports/types/hydration.d.ts +23 -0
  80. package/dist-types/exports/types/hydration.d.ts.map +1 -0
  81. package/dist-types/exports/types/rocket.d.ts +504 -0
  82. package/dist-types/exports/types/rocket.d.ts.map +1 -0
  83. package/dist-types/exports/types.d.ts +3 -0
  84. package/dist-types/exports/types.d.ts.map +1 -0
  85. package/dist-types/exports/wds-plugin.d.ts +2 -0
  86. package/dist-types/exports/wds-plugin.d.ts.map +1 -0
  87. package/dist-types/src/PageData.d.ts +82 -0
  88. package/dist-types/src/PageData.d.ts.map +1 -0
  89. package/dist-types/src/RocketCodeBlock.d.ts +64 -0
  90. package/dist-types/src/RocketCodeBlock.d.ts.map +1 -0
  91. package/dist-types/src/RocketIcon.d.ts +35 -0
  92. package/dist-types/src/RocketIcon.d.ts.map +1 -0
  93. package/dist-types/src/RocketJsDemo.d.ts +59 -0
  94. package/dist-types/src/RocketJsDemo.d.ts.map +1 -0
  95. package/dist-types/src/RocketJsDemo.test-browser.d.ts +3 -0
  96. package/dist-types/src/RocketJsDemo.test-browser.d.ts.map +1 -0
  97. package/dist-types/src/RocketRequestDemo.d.ts +57 -0
  98. package/dist-types/src/RocketRequestDemo.d.ts.map +1 -0
  99. package/dist-types/src/RocketRequestDemo.test-browser.d.ts +3 -0
  100. package/dist-types/src/RocketRequestDemo.test-browser.d.ts.map +1 -0
  101. package/dist-types/src/SocialPreviewPlayground.d.ts +102 -0
  102. package/dist-types/src/SocialPreviewPlayground.d.ts.map +1 -0
  103. package/dist-types/src/adapters/netlify.d.ts +54 -0
  104. package/dist-types/src/adapters/netlify.d.ts.map +1 -0
  105. package/dist-types/src/asyncMessage.d.ts +14 -0
  106. package/dist-types/src/asyncMessage.d.ts.map +1 -0
  107. package/dist-types/src/cli/RocketBuild.d.ts +78 -0
  108. package/dist-types/src/cli/RocketBuild.d.ts.map +1 -0
  109. package/dist-types/src/cli/RocketCli.d.ts +17 -0
  110. package/dist-types/src/cli/RocketCli.d.ts.map +1 -0
  111. package/dist-types/src/cli/RocketInit.d.ts +22 -0
  112. package/dist-types/src/cli/RocketInit.d.ts.map +1 -0
  113. package/dist-types/src/cli/RocketStart.d.ts +13 -0
  114. package/dist-types/src/cli/RocketStart.d.ts.map +1 -0
  115. package/dist-types/src/cli/cli.d.ts +3 -0
  116. package/dist-types/src/cli/cli.d.ts.map +1 -0
  117. package/dist-types/src/component-hydration.d.ts +26 -0
  118. package/dist-types/src/component-hydration.d.ts.map +1 -0
  119. package/dist-types/src/components/FeatureList.d.ts +15 -0
  120. package/dist-types/src/components/FeatureList.d.ts.map +1 -0
  121. package/dist-types/src/components/Footer.d.ts +17 -0
  122. package/dist-types/src/components/Footer.d.ts.map +1 -0
  123. package/dist-types/src/components/Header.d.ts +6 -0
  124. package/dist-types/src/components/Header.d.ts.map +1 -0
  125. package/dist-types/src/components/RocketDrawer.d.ts +20 -0
  126. package/dist-types/src/components/RocketDrawer.d.ts.map +1 -0
  127. package/dist-types/src/components/RocketSocialLink.d.ts +30 -0
  128. package/dist-types/src/components/RocketSocialLink.d.ts.map +1 -0
  129. package/dist-types/src/components.d.ts +5 -0
  130. package/dist-types/src/components.d.ts.map +1 -0
  131. package/dist-types/src/config.d.ts +6 -0
  132. package/dist-types/src/config.d.ts.map +1 -0
  133. package/dist-types/src/debounce.d.ts +8 -0
  134. package/dist-types/src/debounce.d.ts.map +1 -0
  135. package/dist-types/src/defaultSocialPreviewTemplate.d.ts +31 -0
  136. package/dist-types/src/defaultSocialPreviewTemplate.d.ts.map +1 -0
  137. package/dist-types/src/development-page-module-loader.d.ts +15 -0
  138. package/dist-types/src/development-page-module-loader.d.ts.map +1 -0
  139. package/dist-types/src/extractCode.d.ts +5 -0
  140. package/dist-types/src/extractCode.d.ts.map +1 -0
  141. package/dist-types/src/hydration/evaluate.d.ts +20 -0
  142. package/dist-types/src/hydration/evaluate.d.ts.map +1 -0
  143. package/dist-types/src/hydration/extractStrategies.d.ts +5 -0
  144. package/dist-types/src/hydration/extractStrategies.d.ts.map +1 -0
  145. package/dist-types/src/hydration/hydrationLoader.d.ts +64 -0
  146. package/dist-types/src/hydration/hydrationLoader.d.ts.map +1 -0
  147. package/dist-types/src/icons.d.ts +170 -0
  148. package/dist-types/src/icons.d.ts.map +1 -0
  149. package/dist-types/src/layouts/atlas/atlasDocLayout.d.ts +45 -0
  150. package/dist-types/src/layouts/atlas/atlasDocLayout.d.ts.map +1 -0
  151. package/dist-types/src/layouts/atlas/atlasHeroLayout.d.ts +7 -0
  152. package/dist-types/src/layouts/atlas/atlasHeroLayout.d.ts.map +1 -0
  153. package/dist-types/src/layouts/atlas/atlasNotFoundLayout.d.ts +5 -0
  154. package/dist-types/src/layouts/atlas/atlasNotFoundLayout.d.ts.map +1 -0
  155. package/dist-types/src/layouts/layout-helper.d.ts +16 -0
  156. package/dist-types/src/layouts/layout-helper.d.ts.map +1 -0
  157. package/dist-types/src/layouts/layout.d.ts +9 -0
  158. package/dist-types/src/layouts/layout.d.ts.map +1 -0
  159. package/dist-types/src/loaded-page-module.d.ts +51 -0
  160. package/dist-types/src/loaded-page-module.d.ts.map +1 -0
  161. package/dist-types/src/main.d.ts +2 -0
  162. package/dist-types/src/main.d.ts.map +1 -0
  163. package/dist-types/src/markdownCompiler.d.ts +22 -0
  164. package/dist-types/src/markdownCompiler.d.ts.map +1 -0
  165. package/dist-types/src/markdownHook.d.ts +6 -0
  166. package/dist-types/src/markdownHook.d.ts.map +1 -0
  167. package/dist-types/src/menu.d.ts +22 -0
  168. package/dist-types/src/menu.d.ts.map +1 -0
  169. package/dist-types/src/menus/MainMenu.d.ts +23 -0
  170. package/dist-types/src/menus/MainMenu.d.ts.map +1 -0
  171. package/dist-types/src/menus/RocketMenu.d.ts +23 -0
  172. package/dist-types/src/menus/RocketMenu.d.ts.map +1 -0
  173. package/dist-types/src/menus/RocketNextPage.d.ts +18 -0
  174. package/dist-types/src/menus/RocketNextPage.d.ts.map +1 -0
  175. package/dist-types/src/menus/RocketPreviousPage.d.ts +18 -0
  176. package/dist-types/src/menus/RocketPreviousPage.d.ts.map +1 -0
  177. package/dist-types/src/menus/RocketToc.d.ts +54 -0
  178. package/dist-types/src/menus/RocketToc.d.ts.map +1 -0
  179. package/dist-types/src/menus/pageNavigation.d.ts +41 -0
  180. package/dist-types/src/menus/pageNavigation.d.ts.map +1 -0
  181. package/dist-types/src/page-pagination.d.ts +69 -0
  182. package/dist-types/src/page-pagination.d.ts.map +1 -0
  183. package/dist-types/src/page-runtime.d.ts +110 -0
  184. package/dist-types/src/page-runtime.d.ts.map +1 -0
  185. package/dist-types/src/pages.d.ts +10 -0
  186. package/dist-types/src/pages.d.ts.map +1 -0
  187. package/dist-types/src/publicAssets.d.ts +70 -0
  188. package/dist-types/src/publicAssets.d.ts.map +1 -0
  189. package/dist-types/src/requestDemoMetadata.d.ts +19 -0
  190. package/dist-types/src/requestDemoMetadata.d.ts.map +1 -0
  191. package/dist-types/src/resolve.d.ts +7 -0
  192. package/dist-types/src/resolve.d.ts.map +1 -0
  193. package/dist-types/src/siteDiscoverability.d.ts +33 -0
  194. package/dist-types/src/siteDiscoverability.d.ts.map +1 -0
  195. package/dist-types/src/siteHeadMetadata.d.ts +20 -0
  196. package/dist-types/src/siteHeadMetadata.d.ts.map +1 -0
  197. package/dist-types/src/socialPreviewImages.d.ts +186 -0
  198. package/dist-types/src/socialPreviewImages.d.ts.map +1 -0
  199. package/dist-types/src/socialPreviewTemplatePreview.d.ts +22 -0
  200. package/dist-types/src/socialPreviewTemplatePreview.d.ts.map +1 -0
  201. package/dist-types/src/ssr.d.ts +6 -0
  202. package/dist-types/src/ssr.d.ts.map +1 -0
  203. package/dist-types/src/standalone-demo-url.d.ts +60 -0
  204. package/dist-types/src/standalone-demo-url.d.ts.map +1 -0
  205. package/dist-types/src/static-page-module-loader.d.ts +15 -0
  206. package/dist-types/src/static-page-module-loader.d.ts.map +1 -0
  207. package/dist-types/src/transform.d.ts +10 -0
  208. package/dist-types/src/transform.d.ts.map +1 -0
  209. package/dist-types/src/urlLifecycle.d.ts +23 -0
  210. package/dist-types/src/urlLifecycle.d.ts.map +1 -0
  211. package/dist-types/src/wds-plugin.d.ts +14 -0
  212. package/dist-types/src/wds-plugin.d.ts.map +1 -0
  213. package/docs/assets/home-background.svg +1 -0
  214. package/docs/assets/prism-one-light.css +368 -0
  215. package/docs/assets/rocket-logo-dark-with-text-below.svg +8 -0
  216. package/docs/assets/rocket-logo-dark-with-text.svg +7 -0
  217. package/docs/assets/rocket-logo-dark.svg +7 -0
  218. package/docs/assets/rocket-logo-light-with-text-below.svg +14 -0
  219. package/docs/assets/rocket-logo-light-with-text.svg +13 -0
  220. package/docs/assets/rocket-logo-light.svg +12 -0
  221. package/docs/assets/rocket-text-no-logo.svg +3 -0
  222. package/exports/MainMenu.js +1 -0
  223. package/exports/PageData.js +1 -0
  224. package/exports/RocketCodeBlock.js +1 -0
  225. package/exports/RocketIcon.js +1 -0
  226. package/exports/RocketJsDemo.js +1 -0
  227. package/exports/RocketRequestDemo.js +1 -0
  228. package/exports/SocialPreviewPlayground.js +1 -0
  229. package/exports/adapters/netlify.js +1 -0
  230. package/exports/asyncMessage.js +1 -0
  231. package/exports/component-hydration.js +1 -0
  232. package/exports/components/web-awesome.js +63 -0
  233. package/exports/components.js +1 -0
  234. package/exports/config.js +1 -0
  235. package/exports/debounce.js +1 -0
  236. package/exports/define/RocketCodeBlock.js +2 -0
  237. package/exports/define/RocketIcon.js +3 -0
  238. package/exports/define/RocketJsDemo.js +5 -0
  239. package/exports/define/RocketRequestDemo.js +5 -0
  240. package/exports/define/menus.js +14 -0
  241. package/exports/extractCode.js +1 -0
  242. package/exports/globalData.js +1 -0
  243. package/exports/hydration/hydrationLoader.js +1 -0
  244. package/exports/icons.js +8 -0
  245. package/exports/layout-helper.js +1 -0
  246. package/exports/layout.js +1 -0
  247. package/exports/layouts/_atlas.css +3 -0
  248. package/exports/layouts/atlasDoc.js +5 -0
  249. package/exports/layouts/atlasHero.js +1 -0
  250. package/exports/layouts/atlasNotFound.js +4 -0
  251. package/exports/loaded-page-module.js +5 -0
  252. package/exports/markdownHook.js +4 -0
  253. package/exports/menu.js +4 -0
  254. package/exports/menus.js +5 -0
  255. package/exports/page-runtime.js +5 -0
  256. package/exports/pages.js +1 -0
  257. package/exports/resolve.js +1 -0
  258. package/exports/ssr.js +1 -0
  259. package/exports/standalone-demo-url.js +10 -0
  260. package/exports/transform.js +1 -0
  261. package/exports/types/hydration.ts +26 -0
  262. package/exports/types/rocket.ts +598 -0
  263. package/exports/types.ts +71 -0
  264. package/exports/wds-plugin.js +1 -0
  265. package/package.json +192 -9
  266. package/src/PageData.js +244 -0
  267. package/src/RocketCodeBlock.js +516 -0
  268. package/src/RocketIcon.js +291 -0
  269. package/src/RocketJsDemo.js +397 -0
  270. package/src/RocketJsDemo.test-browser.js +228 -0
  271. package/src/RocketRequestDemo.js +439 -0
  272. package/src/RocketRequestDemo.test-browser.js +301 -0
  273. package/src/SocialPreviewPlayground.js +573 -0
  274. package/src/adapters/netlify.js +814 -0
  275. package/src/asyncMessage.js +21 -0
  276. package/src/cli/RocketBuild.js +545 -0
  277. package/src/cli/RocketCli.js +47 -0
  278. package/src/cli/RocketInit.js +323 -0
  279. package/src/cli/RocketStart.js +79 -0
  280. package/src/cli/cli.js +7 -0
  281. package/src/component-hydration.js +86 -0
  282. package/src/components/FeatureList.js +114 -0
  283. package/src/components/Footer.js +116 -0
  284. package/src/components/Header.js +122 -0
  285. package/src/components/RocketDrawer.js +193 -0
  286. package/src/components/RocketSocialLink.js +128 -0
  287. package/src/components/assets/discord.svg +7 -0
  288. package/src/components/assets/github.svg +4 -0
  289. package/src/components/assets/gitlab.svg +1 -0
  290. package/src/components/assets/info.txt +1 -0
  291. package/src/components/assets/license.svg +3 -0
  292. package/src/components/assets/npm.svg +5 -0
  293. package/src/components/assets/slack.svg +5 -0
  294. package/src/components/assets/telegram.svg +4 -0
  295. package/src/components/assets/twitter.svg +1 -0
  296. package/src/components.js +15 -0
  297. package/src/config.js +319 -0
  298. package/src/debounce.js +21 -0
  299. package/src/defaultSocialPreviewTemplate.js +118 -0
  300. package/src/development-page-module-loader.js +29 -0
  301. package/src/extractCode.js +41 -0
  302. package/src/hydration/evaluate.js +54 -0
  303. package/src/hydration/extractStrategies.js +91 -0
  304. package/src/hydration/hydrationLoader.js +330 -0
  305. package/src/icons.js +883 -0
  306. package/src/layouts/atlas/atlasDoc.css +877 -0
  307. package/src/layouts/atlas/atlasDocLayout.js +288 -0
  308. package/src/layouts/atlas/atlasHero.css +774 -0
  309. package/src/layouts/atlas/atlasHeroLayout.js +346 -0
  310. package/src/layouts/atlas/atlasNotFound.css +365 -0
  311. package/src/layouts/atlas/atlasNotFoundLayout.js +69 -0
  312. package/src/layouts/layout-helper.js +92 -0
  313. package/src/layouts/layout.js +62 -0
  314. package/src/loaded-page-module.js +97 -0
  315. package/src/main.js +55 -0
  316. package/src/markdownCompiler.js +303 -0
  317. package/src/markdownHook.js +148 -0
  318. package/src/menu.js +210 -0
  319. package/src/menus/MainMenu.js +58 -0
  320. package/src/menus/RocketMenu.js +191 -0
  321. package/src/menus/RocketNextPage.js +25 -0
  322. package/src/menus/RocketPreviousPage.js +29 -0
  323. package/src/menus/RocketToc.js +309 -0
  324. package/src/menus/pageNavigation.js +285 -0
  325. package/src/page-pagination.js +241 -0
  326. package/src/page-runtime.js +481 -0
  327. package/src/pages.js +537 -0
  328. package/src/publicAssets.js +336 -0
  329. package/src/requestDemoMetadata.js +97 -0
  330. package/src/resolve.js +15 -0
  331. package/src/siteDiscoverability.js +184 -0
  332. package/src/siteHeadMetadata.js +69 -0
  333. package/src/socialPreviewImages.js +482 -0
  334. package/src/socialPreviewTemplatePreview.js +352 -0
  335. package/src/ssr.js +14 -0
  336. package/src/standalone-demo-url.js +134 -0
  337. package/src/static-page-module-loader.js +29 -0
  338. package/src/transform.js +633 -0
  339. package/src/urlLifecycle.js +57 -0
  340. package/src/wds-plugin.js +302 -0
@@ -0,0 +1,116 @@
1
+ import { LitElement, html, css } from 'lit';
2
+
3
+ /** @typedef {import('@rocket/js/types.js').FooterSection} FooterSection */
4
+
5
+ export class Footer extends LitElement {
6
+ static properties = {
7
+ data: { type: Array },
8
+ };
9
+
10
+ constructor() {
11
+ super();
12
+ /** @type {FooterSection[]} */
13
+ this.data = [];
14
+ }
15
+
16
+ /** @param {FooterSection} section */
17
+ renderSection(section) {
18
+ return html`
19
+ <nav>
20
+ <h3>${section.title}</h3>
21
+ <ul>
22
+ ${section.links.map(link => html`<li><a href=${link.href}>${link.text}</a></li>`)}
23
+ </ul>
24
+ </nav>
25
+ `;
26
+ }
27
+
28
+ render() {
29
+ return html`
30
+ <footer class="main-footer">
31
+ <div class="footer-menu">${this.data?.map(section => this.renderSection(section))}</div>
32
+ </footer>
33
+ `;
34
+ }
35
+
36
+ static styles = [
37
+ css`
38
+ .main-footer {
39
+ margin-top: 112px;
40
+ border-top: 1px solid #edf1f6;
41
+ background-color: #f8fafc;
42
+ color: var(--primary-text-color);
43
+ padding: 30px 0 32px;
44
+ display: flex;
45
+ flex-direction: column;
46
+ align-items: center;
47
+ }
48
+
49
+ .footer-menu {
50
+ display: flex;
51
+ justify-content: center;
52
+ gap: clamp(2.5rem, 7vw, 5.5rem);
53
+ flex-direction: row;
54
+ max-width: 1200px;
55
+ width: 100%;
56
+ padding: 0 20px;
57
+ text-align: center;
58
+ flex-wrap: wrap;
59
+ }
60
+
61
+ .footer-menu nav {
62
+ min-width: 150px;
63
+ }
64
+
65
+ .footer-menu nav h3 {
66
+ margin: 0 0 10px;
67
+ color: var(--primary-text-color-dark);
68
+ font-size: 0.9rem;
69
+ font-weight: 700;
70
+ }
71
+
72
+ .footer-menu ul {
73
+ list-style: none;
74
+ margin: 0;
75
+ padding: 0;
76
+ }
77
+
78
+ .footer-menu li {
79
+ margin-bottom: 4px;
80
+ }
81
+
82
+ .footer-menu a {
83
+ text-decoration: none;
84
+ color: var(--secondary-text-color, #4b5563);
85
+ padding: 5px 0;
86
+ display: block;
87
+ font-size: 0.84rem;
88
+ font-weight: 400;
89
+ line-height: 1.4;
90
+ transition: opacity 0.2s;
91
+ }
92
+
93
+ .footer-menu a:hover {
94
+ opacity: 0.7;
95
+ }
96
+
97
+ @media (max-width: 768px) {
98
+ .footer-menu {
99
+ flex-direction: column;
100
+ align-items: center;
101
+ padding: 0 10px;
102
+ gap: 1.5rem;
103
+ text-align: center;
104
+ }
105
+
106
+ nav {
107
+ width: 100%;
108
+ }
109
+
110
+ .footer-menu a {
111
+ padding: 7px 0;
112
+ }
113
+ }
114
+ `,
115
+ ];
116
+ }
@@ -0,0 +1,122 @@
1
+ import { css, html, LitElement } from 'lit';
2
+
3
+ export class Header extends LitElement {
4
+ render() {
5
+ return html`
6
+ <header>
7
+ <div id="content-area">
8
+ <slot name="logo"></slot>
9
+ <slot name="search"></slot>
10
+ <slot id="content"></slot>
11
+ <slot name="mobile-menu"></slot>
12
+ <slot name="navigation"></slot>
13
+ <slot name="social"></slot>
14
+ </div>
15
+ </header>
16
+ `;
17
+ }
18
+
19
+ static styles = [
20
+ css`
21
+ header {
22
+ padding: 20px 0;
23
+ position: sticky;
24
+ top: 0;
25
+ --shadow-color-dark: 220 3% 15%;
26
+ box-shadow:
27
+ 0 3px 5px -2px hsl(var(--shadow-color-dark) / 4%),
28
+ 0 7px 14px -5px hsl(var(--shadow-color-dark) / 6%);
29
+ background-color: hsl(0 0% 100% / 0.6);
30
+ backdrop-filter: blur(20px);
31
+ -webkit-backdrop-filter: blur(20px);
32
+ z-index: 999;
33
+ }
34
+
35
+ #content-area {
36
+ max-height: 30px;
37
+ display: flex;
38
+ align-items: center;
39
+ justify-content: space-between;
40
+ max-width: 1200px;
41
+ margin: 0 auto;
42
+ padding: 0 20px;
43
+ }
44
+
45
+ slot[name='logo']::slotted(*) {
46
+ margin-right: auto;
47
+ }
48
+ slot[name='social']::slotted(*) {
49
+ margin-right: 15px;
50
+ }
51
+ slot[name='social']::slotted(*:last-child) {
52
+ margin-right: 0;
53
+ }
54
+
55
+ slot[name='social'],
56
+ slot[name='logo'],
57
+ slot[name='search'],
58
+ slot[name='navigation'] {
59
+ display: flex;
60
+ }
61
+ slot[name='navigation'] {
62
+ align-items: center;
63
+ margin-left: auto;
64
+ margin-right: 28px;
65
+ }
66
+ slot[name='mobile-menu'] {
67
+ display: none;
68
+ }
69
+
70
+ #content {
71
+ height: 30px;
72
+ display: flex;
73
+ justify-content: space-between;
74
+ align-items: center;
75
+ margin-right: auto;
76
+ }
77
+ #content::slotted(a) {
78
+ text-decoration: none;
79
+ color: var(--primary-text-color);
80
+ transition: color 0.3s ease-in-out;
81
+ font-weight: bold;
82
+ }
83
+ #content::slotted(a:hover),
84
+ #content::slotted(a[aria-current='page']) {
85
+ color: var(--primary-color);
86
+ }
87
+
88
+ @media (max-width: 768px) {
89
+ slot[name='social'] {
90
+ display: flex;
91
+ }
92
+ slot[name='social']::slotted(*:nth-of-type(n + 3)) {
93
+ display: none;
94
+ }
95
+ slot[name='social']::slotted(*:nth-of-type(n + 2)) {
96
+ margin-right: 0;
97
+ }
98
+ :host([hide-social-mobile]) slot[name='social'] {
99
+ display: none;
100
+ }
101
+ slot[name='navigation'] {
102
+ display: none;
103
+ }
104
+ slot[name='mobile-menu'] {
105
+ display: flex;
106
+ order: 1;
107
+ }
108
+ }
109
+
110
+ :host([hide-logo]) slot[name='logo'] {
111
+ visibility: hidden;
112
+ }
113
+ :host([no-background]) {
114
+ background-color: transparent;
115
+ box-shadow: none;
116
+ }
117
+ :host([not-sticky]) header {
118
+ position: static;
119
+ }
120
+ `,
121
+ ];
122
+ }
@@ -0,0 +1,193 @@
1
+ import { LitElement, html, css } from 'lit';
2
+
3
+ export class RocketDrawer extends LitElement {
4
+ static properties = {
5
+ open: { type: Boolean, reflect: true },
6
+ };
7
+
8
+ constructor() {
9
+ super();
10
+ this.open = false;
11
+ }
12
+
13
+ connectedCallback() {
14
+ super.connectedCallback();
15
+ this._onDocClick = this._onDocClick.bind(this);
16
+ document.addEventListener('click', this._onDocClick, { capture: true });
17
+ }
18
+ disconnectedCallback() {
19
+ document.removeEventListener('click', this._onDocClick, { capture: true });
20
+ super.disconnectedCallback();
21
+ }
22
+
23
+ render() {
24
+ return html`
25
+ <slot name="invoker">
26
+ <button
27
+ class="burger-menu"
28
+ @click=${this.toggle}
29
+ aria-expanded=${this.open ? 'true' : 'false'}
30
+ aria-label=${this.open ? 'Close menu' : 'Open menu'}
31
+ title=${this.open ? 'Close menu' : 'Open menu'}
32
+ >
33
+ <span class="sr-only">${this.open ? 'Close Menu' : 'Show Menu'}</span>
34
+ ${this.open ? this.#iconClose() : this.#iconBurger()}
35
+ </button>
36
+ </slot>
37
+
38
+ <dialog ?open=${this.open} id="rd-dialog">
39
+ <div id="content">
40
+ <slot></slot>
41
+ </div>
42
+ </dialog>
43
+ `;
44
+ }
45
+
46
+ // Close when clicking anywhere outside the dialog or the invoker
47
+ /**
48
+ * @param {any} ev
49
+ */
50
+ _onDocClick(ev) {
51
+ if (!this.open) return;
52
+ const path = ev.composedPath();
53
+ const dlg = this.shadowRoot?.getElementById('rd-dialog');
54
+ const invoker = this.shadowRoot?.querySelector('slot[name="invoker"]');
55
+
56
+ const clickInsideDialog = path.includes(dlg);
57
+ const clickOnInvoker =
58
+ path.includes(invoker) ||
59
+ path.some((/** @type {{ assignedSlot: Element | null | undefined; }} */ n) => {
60
+ if (n?.assignedSlot && n.assignedSlot === invoker) return true;
61
+ return false;
62
+ });
63
+
64
+ if (!clickInsideDialog && !clickOnInvoker) this.close();
65
+ }
66
+
67
+ close() {
68
+ this.open = false;
69
+ }
70
+ toggle() {
71
+ this.open = !this.open;
72
+ }
73
+
74
+ #iconBurger() {
75
+ return html`<svg
76
+ xmlns="http://www.w3.org/2000/svg"
77
+ fill="none"
78
+ viewBox="0 0 24 24"
79
+ stroke-width="1.5"
80
+ stroke="currentColor"
81
+ class="icon"
82
+ >
83
+ <path
84
+ stroke-linecap="round"
85
+ stroke-linejoin="round"
86
+ d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"
87
+ />
88
+ </svg>`;
89
+ }
90
+
91
+ #iconClose() {
92
+ return html`<svg
93
+ xmlns="http://www.w3.org/2000/svg"
94
+ fill="none"
95
+ viewBox="0 0 24 24"
96
+ stroke-width="1.5"
97
+ stroke="currentColor"
98
+ class="icon"
99
+ >
100
+ <path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12" />
101
+ </svg>`;
102
+ }
103
+
104
+ static styles = css`
105
+ :host {
106
+ display: block;
107
+ --rd-text-1: #2c3e50;
108
+ --rd-ease-3: cubic-bezier(0.25, 0, 0.3, 1);
109
+ --rd-target-width: 80%;
110
+ }
111
+ * {
112
+ box-sizing: border-box;
113
+ }
114
+
115
+ .burger-menu {
116
+ background: none;
117
+ border: none;
118
+ padding: 0;
119
+ margin: 0;
120
+ line-height: 0;
121
+ cursor: pointer;
122
+ color: var(--rd-text-1);
123
+ position: relative;
124
+ z-index: 101;
125
+ }
126
+ .icon {
127
+ width: 2.3rem;
128
+ display: block;
129
+ transition: transform 0.2s ease;
130
+ }
131
+ .burger-menu[aria-expanded='true'] .icon {
132
+ transform: rotate(90deg);
133
+ }
134
+
135
+ dialog {
136
+ display: block;
137
+ position: fixed;
138
+ top: 0;
139
+ right: 0;
140
+ left: auto;
141
+ height: 100vh;
142
+ width: 0;
143
+ margin: 0;
144
+ padding: 0;
145
+ border: none;
146
+ color: var(--rd-text-1);
147
+ box-shadow: -4px 0 16px rgba(0, 0, 0, 0.35);
148
+ z-index: 100;
149
+ overflow: hidden;
150
+ opacity: 0;
151
+ pointer-events: none;
152
+ transition:
153
+ width 0.35s var(--rd-ease-3),
154
+ opacity 0.35s var(--rd-ease-3);
155
+ will-change: width;
156
+ }
157
+ dialog[open] {
158
+ width: var(--rd-target-width);
159
+ opacity: 1;
160
+ pointer-events: auto;
161
+ }
162
+ dialog::backdrop {
163
+ background: rgba(0, 0, 0, 0.4);
164
+ transition: opacity 0.35s var(--rd-ease-3);
165
+ opacity: 0;
166
+ }
167
+ dialog[open]::backdrop {
168
+ opacity: 1;
169
+ }
170
+
171
+ #content {
172
+ height: 100%;
173
+ padding: 1rem;
174
+ max-width: var(--rd-target-width);
175
+ overflow-y: auto;
176
+ }
177
+
178
+ @media (prefers-reduced-motion: reduce) {
179
+ dialog,
180
+ dialog::backdrop {
181
+ transition: none;
182
+ }
183
+ }
184
+ .sr-only {
185
+ position: absolute;
186
+ left: -10000px;
187
+ top: auto;
188
+ width: 1px;
189
+ height: 1px;
190
+ overflow: hidden;
191
+ }
192
+ `;
193
+ }
@@ -0,0 +1,128 @@
1
+ import { readFileSync } from 'fs';
2
+ import { LitElement, html, css } from 'lit';
3
+ import { unsafeHTML } from 'lit/directives/unsafe-html.js';
4
+
5
+ /**
6
+ * @param {string} brandName
7
+ * @returns {import('lit/directive.js').DirectiveResult}
8
+ */
9
+ function getIcon(brandName) {
10
+ const brand = brandName.toLowerCase();
11
+ const fileContent = readFileSync(new URL(`./assets/${brand}.svg`, import.meta.url), 'utf8');
12
+ return unsafeHTML(fileContent.toString());
13
+ }
14
+
15
+ export class RocketSocialLink extends LitElement {
16
+ static properties = {
17
+ url: { type: String },
18
+ name: { type: String },
19
+ label: { type: String },
20
+ ariaLabel: { type: String, attribute: 'aria-label' },
21
+ siteName: { type: String },
22
+ };
23
+
24
+ constructor() {
25
+ super();
26
+ this.url = '';
27
+ this.name = '';
28
+ this.label = '';
29
+ this.ariaLabel = '';
30
+ this.siteName = '';
31
+ }
32
+
33
+ get accessibleLabel() {
34
+ if (this.ariaLabel) {
35
+ return this.ariaLabel;
36
+ }
37
+
38
+ const destination = this.siteName ? `${this.siteName} on ${this.name}` : this.name;
39
+ return this.label ? `${this.label}: ${destination}` : destination;
40
+ }
41
+
42
+ render() {
43
+ return html`
44
+ <a
45
+ class="social-link"
46
+ href="${this.url}"
47
+ aria-label="${this.accessibleLabel}"
48
+ rel="noopener noreferrer"
49
+ target="_blank"
50
+ slot="social"
51
+ >
52
+ <span class="icon" aria-hidden="true">${getIcon(this.name)}</span>
53
+ ${this.label ? html`<span class="label">${this.label}</span>` : html``}
54
+ </a>
55
+ `;
56
+ }
57
+
58
+ static styles = [
59
+ css`
60
+ :host {
61
+ display: inline-block;
62
+ height: var(--rocket-social-link-height, 30px);
63
+ --rocket-social-link-color: var(--primary-text-color);
64
+ --rocket-social-link-hover-color: var(--primary-color);
65
+ --rocket-social-link-icon-size: 30px;
66
+ --rocket-social-link-label-font-size: 0.95rem;
67
+ --rocket-social-link-label-font-weight: 600;
68
+ }
69
+
70
+ .social-link {
71
+ display: inline-flex;
72
+ align-items: center;
73
+ gap: var(--rocket-social-link-gap, 0.45rem);
74
+ height: 100%;
75
+ color: var(--rocket-social-link-color);
76
+ line-height: 1;
77
+ text-decoration: none;
78
+ }
79
+
80
+ .icon {
81
+ display: inline-flex;
82
+ flex: 0 0 auto;
83
+ width: var(--rocket-social-link-icon-size);
84
+ height: var(--rocket-social-link-icon-size);
85
+ }
86
+
87
+ .social-link svg {
88
+ color: var(--rocket-social-link-icon-color, var(--rocket-social-link-color));
89
+ display: block;
90
+ width: 100%;
91
+ height: 100%;
92
+ transition: color 0.2s ease-in-out;
93
+ }
94
+
95
+ .label {
96
+ color: var(--rocket-social-link-label-color, var(--rocket-social-link-color));
97
+ font-size: var(--rocket-social-link-label-font-size);
98
+ font-weight: var(--rocket-social-link-label-font-weight);
99
+ line-height: 1.2;
100
+ transition: color 0.2s ease-in-out;
101
+ white-space: nowrap;
102
+ }
103
+
104
+ .social-link:hover svg {
105
+ color: var(--rocket-social-link-hover-color);
106
+ transform: scale(1.04);
107
+ transition: transform 0.2s ease-in-out;
108
+ }
109
+
110
+ .social-link:hover .label {
111
+ color: var(--rocket-social-link-hover-color);
112
+ }
113
+
114
+ :host([dark-background]) svg {
115
+ color: #fff;
116
+ }
117
+
118
+ :host([dark-background]) .label {
119
+ color: #fff;
120
+ }
121
+
122
+ :host([dark-background]) .social-link:hover svg,
123
+ :host([dark-background]) .social-link:hover .label {
124
+ color: var(--primary-text-color);
125
+ }
126
+ `,
127
+ ];
128
+ }
@@ -0,0 +1,7 @@
1
+ <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
2
+ <title>Discord</title>
3
+ <path
4
+ d="m3.58 21.196h14.259l-.681-2.205 1.629 1.398 1.493 1.338 2.72 2.273v-21.525c-.068-1.338-1.22-2.475-2.648-2.475l-16.767.003c-1.427 0-2.585 1.139-2.585 2.477v16.24c0 1.411 1.156 2.476 2.58 2.476zm10.548-15.513-.033.012.012-.012zm-7.631 1.269c1.833-1.334 3.532-1.27 3.532-1.27l.137.135c-2.243.535-3.26 1.537-3.26 1.537s.272-.133.747-.336c3.021-1.188 6.32-1.102 9.374.402 0 0-1.019-.937-3.124-1.537l.186-.183c.291.001 1.831.055 3.479 1.26 0 0 1.844 3.15 1.844 7.02-.061-.074-1.144 1.666-3.931 1.726 0 0-.472-.534-.808-1 1.63-.468 2.24-1.404 2.24-1.404-.535.337-1.023.537-1.419.737-.609.268-1.219.4-1.828.535-2.884.468-4.503-.315-6.033-.936l-.523-.266s.609.936 2.174 1.404c-.411.469-.818 1.002-.818 1.002-2.786-.066-3.802-1.806-3.802-1.806 0-3.876 1.833-7.02 1.833-7.02z"></path>
5
+ <path d="m14.308 12.771c.711 0 1.29-.6 1.29-1.34 0-.735-.576-1.335-1.29-1.335v.003c-.708 0-1.288.598-1.29 1.338 0 .734.579 1.334 1.29 1.334z"></path>
6
+ <path d="m9.69 12.771c.711 0 1.29-.6 1.29-1.34 0-.735-.575-1.335-1.286-1.335l-.004.003c-.711 0-1.29.598-1.29 1.338 0 .734.579 1.334 1.29 1.334z"></path>
7
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 17 16" fill="none">
2
+ <title>GitHub</title>
3
+ <path fill="currentColor" fill-rule="evenodd" d="M8.18391.249268C3.82241.249268.253906 3.81777.253906 8.17927c0 3.46933 2.279874 6.44313 5.451874 7.53353.3965.0991.49563-.1983.49563-.3965v-1.3878c-2.18075.4956-2.67638-.9912-2.67638-.9912-.3965-.8922-.89212-1.1895-.89212-1.1895-.69388-.4957.09912-.4957.09912-.4957.793.0992 1.1895.793 1.1895.793.69388 1.2887 1.88338.8922 2.27988.6939.09912-.4956.29737-.8921.49562-1.0904-1.78425-.1982-3.5685-.8921-3.5685-3.96496 0-.89212.29738-1.586.793-2.08162-.09912-.19825-.3965-.99125.09913-2.08163 0 0 .69387-.19825 2.18075.793.59475-.19825 1.28862-.29737 1.9825-.29737.69387 0 1.38775.09912 1.98249.29737 1.4869-.99125 2.1808-.793 2.1808-.793.3965 1.09038.1982 1.88338.0991 2.08163.4956.59475.793 1.28862.793 2.08162 0 3.07286-1.8834 3.66766-3.66764 3.86586.29737.3965.59474.8921.59474 1.586v2.1808c0 .1982.0991.4956.5948.3965 3.172-1.0904 5.4518-4.0642 5.4518-7.53353-.0991-4.3615-3.6676-7.930002-8.02909-7.930002z" clip-rule="evenodd"></path>
4
+ </svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><title>GitLab</title><path fill="currentColor" d="M 38.011719 4 C 37.574219 3.996094 37.183594 4.273438 37.046875 4.691406 L 32.074219 20 L 17.925781 20 L 12.953125 4.691406 C 12.820313 4.289063 12.449219 4.011719 12.023438 4 C 11.597656 3.992188 11.214844 4.25 11.0625 4.648438 L 5.070313 20.640625 C 5.066406 20.640625 5.066406 20.644531 5.0625 20.648438 L 2.0625 28.648438 C 1.90625 29.070313 2.046875 29.542969 2.414063 29.808594 L 24.40625 45.800781 L 24.410156 45.808594 C 24.414063 45.808594 24.414063 45.808594 24.414063 45.8125 C 24.425781 45.820313 24.441406 45.828125 24.453125 45.835938 C 24.46875 45.84375 24.480469 45.855469 24.496094 45.863281 C 24.5 45.863281 24.5 45.867188 24.503906 45.867188 C 24.503906 45.867188 24.507813 45.871094 24.511719 45.871094 C 24.515625 45.875 24.519531 45.878906 24.527344 45.878906 C 24.53125 45.882813 24.539063 45.886719 24.542969 45.890625 C 24.5625 45.898438 24.585938 45.910156 24.609375 45.917969 C 24.609375 45.917969 24.609375 45.917969 24.609375 45.921875 C 24.632813 45.929688 24.65625 45.9375 24.675781 45.945313 C 24.679688 45.945313 24.679688 45.945313 24.683594 45.949219 C 24.699219 45.953125 24.714844 45.957031 24.734375 45.964844 C 24.742188 45.964844 24.75 45.96875 24.761719 45.96875 C 24.761719 45.972656 24.761719 45.972656 24.761719 45.96875 C 24.78125 45.976563 24.800781 45.980469 24.820313 45.984375 C 24.847656 45.988281 24.871094 45.992188 24.898438 45.996094 C 24.9375 45.996094 24.980469 46 25.019531 46 C 25.058594 45.996094 25.09375 45.996094 25.128906 45.988281 C 25.144531 45.988281 25.15625 45.988281 25.171875 45.984375 C 25.171875 45.984375 25.175781 45.984375 25.179688 45.984375 C 25.1875 45.980469 25.191406 45.980469 25.199219 45.980469 C 25.203125 45.980469 25.207031 45.976563 25.214844 45.976563 C 25.222656 45.972656 25.234375 45.972656 25.242188 45.96875 C 25.257813 45.964844 25.269531 45.960938 25.28125 45.957031 C 25.289063 45.957031 25.292969 45.957031 25.296875 45.953125 C 25.300781 45.953125 25.304688 45.953125 25.308594 45.953125 C 25.324219 45.945313 25.34375 45.9375 25.359375 45.933594 C 25.378906 45.925781 25.394531 45.917969 25.410156 45.910156 C 25.414063 45.910156 25.414063 45.910156 25.417969 45.90625 C 25.421875 45.90625 25.425781 45.90625 25.429688 45.902344 C 25.4375 45.898438 25.445313 45.894531 25.453125 45.890625 C 25.476563 45.878906 25.496094 45.867188 25.515625 45.855469 C 25.523438 45.851563 25.527344 45.847656 25.53125 45.84375 C 25.535156 45.84375 25.539063 45.839844 25.542969 45.839844 C 25.558594 45.828125 25.574219 45.820313 25.589844 45.808594 L 25.597656 45.796875 L 47.589844 29.808594 C 47.953125 29.542969 48.09375 29.070313 47.9375 28.648438 L 44.945313 20.675781 C 44.941406 20.667969 44.9375 20.65625 44.9375 20.648438 L 38.9375 4.648438 C 38.789063 4.261719 38.425781 4.003906 38.011719 4 Z M 11.933594 8.027344 L 15.824219 20 L 7.445313 20 Z M 38.066406 8.027344 L 42.558594 20 L 34.175781 20 Z M 8.066406 22 L 16.472656 22 L 22.328125 40.015625 Z M 18.578125 22 L 31.421875 22 L 25 41.765625 Z M 33.527344 22 L 41.933594 22 L 27.671875 40.015625 Z M 6.3125 23.007813 L 19.6875 39.902344 L 4.203125 28.640625 Z M 43.6875 23.007813 L 45.796875 28.640625 L 30.3125 39.902344 Z"/></svg>
@@ -0,0 +1 @@
1
+ from https://github.com/edent/SuperTinyIcons
@@ -0,0 +1,3 @@
1
+ <svg aria-hidden="true" fill="currentColor" height="16" viewBox="0 0 16 16" version="1.1" width="16">
2
+ <path d="M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z"></path>
3
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg"
2
+ aria-label="npm" role="img"
3
+ viewBox="0 0 512 512"><path
4
+ d="m0 0H512V512H0"
5
+ fill="#fff"/><path fill="none" stroke="#cb3837" stroke-width="22" d="M234 311H447V199H65V311H178V210 333h78M133 232v68m112-68v45m45-67v90m67-68v79h45v-79"/></svg>
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 123 123" fill="currentColor">
2
+ <title>Slack</title>
3
+ <path stroke="none" stroke-width="1" stroke-dasharray="none" stroke-linecap="butt" stroke-dashoffset="0" stroke-linejoin="miter" stroke-miterlimit="4" fill-rule="nonzero"
4
+ d="M26.4 78.2c0 7.1-5.8 12.9-12.9 12.9S.6 85.3.6 78.2c0-7.1 5.8-12.9 12.9-12.9h12.9v12.9zm6.5 0c0-7.1 5.8-12.9 12.9-12.9s12.9 5.8 12.9 12.9v32.3c0 7.1-5.8 12.9-12.9 12.9s-12.9-5.8-12.9-12.9V78.2zm12.9-51.8c-7.1 0-12.9-5.8-12.9-12.9S38.7.6 45.8.6s12.9 5.8 12.9 12.9v12.9H45.8zm0 6.5c7.1 0 12.9 5.8 12.9 12.9s-5.8 12.9-12.9 12.9H13.5C6.4 58.7.6 52.9.6 45.8s5.8-12.9 12.9-12.9h32.3zM97.6 45.8c0-7.1 5.8-12.9 12.9-12.9 7.1 0 12.9 5.8 12.9 12.9s-5.8 12.9-12.9 12.9H97.6V45.8zm-6.5 0c0 7.1-5.8 12.9-12.9 12.9-7.1 0-12.9-5.8-12.9-12.9V13.5C65.3 6.4 71.1.6 78.2.6c7.1 0 12.9 5.8 12.9 12.9v32.3zM78.2 97.6c7.1 0 12.9 5.8 12.9 12.9 0 7.1-5.8 12.9-12.9 12.9-7.1 0-12.9-5.8-12.9-12.9V97.6h12.9zm0-6.5c-7.1 0-12.9-5.8-12.9-12.9 0-7.1 5.8-12.9 12.9-12.9h32.3c7.1 0 12.9 5.8 12.9 12.9 0 7.1-5.8 12.9-12.9 12.9H78.2z"/>
5
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 54 54" fill="currentColor">
2
+ <path d="M-.2.1h53.8v53.4H-.2z" fill="none"/>
3
+ <path d="M49.7 16.5c1.3 3.1 2 6.3 2 9.7s-.7 6.6-2 9.7c-1.3 3.1-3.1 5.7-5.3 8-2.2 2.2-4.9 4-8 5.3-3.1 1.3-6.3 2-9.7 2-3.4 0-6.6-.7-9.7-2s-5.7-3.1-8-5.3c-2.2-2.2-4-4.9-5.3-8-1.3-3.1-2-6.3-2-9.7s.7-6.6 2-9.7c1.3-3.1 3.1-5.7 5.3-8 2.2-2.2 4.9-4 8-5.3s6.3-2 9.7-2c3.4 0 6.6.7 9.7 2 3.1 1.3 5.7 3.1 8 5.3 2.2 2.3 3.9 5 5.3 8zM34.8 37.7l4.1-19.3c.2-.8.1-1.4-.3-1.8-.4-.4-.8-.4-1.4-.2l-24.1 9.3c-.5.2-.9.4-1.1.7-.2.3-.2.5-.1.7.1.2.4.4.9.5l6.2 1.9 14.3-9c.4-.3.7-.3.9-.2.1.1.1.2-.1.4L22.5 31.3l-.5 6.4c.4 0 .8-.2 1.3-.6l3-2.9 6.2 4.6c1.3.7 2 .3 2.3-1.1z"/>
4
+ </svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 274 223"><title>Twitter</title><path d="M85.98 223c-31.675 0-61.158-9.285-85.98-25.199 4.388.518 8.853.783 13.38.783 26.278 0 50.463-8.967 69.659-24.01-24.544-.453-45.258-16.669-52.395-38.953a56.014 56.014 0 0 0 10.552 1.006c5.116 0 10.071-.685 14.778-1.967-25.66-5.152-44.993-27.822-44.993-54.998 0-.236 0-.471.004-.705a55.865 55.865 0 0 0 25.406 7.015c-15.05-10.058-24.953-27.226-24.953-46.685 0-10.279 2.766-19.914 7.594-28.198 27.664 33.934 68.993 56.264 115.609 58.603a56.31 56.31 0 0 1-1.453-12.782c0-30.975 25.114-56.088 56.091-56.088 16.132 0 30.709 6.812 40.941 17.713a112.328 112.328 0 0 0 35.617-13.611c-4.188 13.097-13.081 24.089-24.662 31.031a112.148 112.148 0 0 0 32.215-8.832 114 114 0 0 1-27.988 29.035c.108 2.405.162 4.824.162 7.256C245.564 137.533 189.148 223 85.98 223" fill="currentColor"/></svg>
@@ -0,0 +1,15 @@
1
+ import { resolve } from '@rocket/js/resolve.js';
2
+ import { createComponentHydration } from './component-hydration.js';
3
+
4
+ /**
5
+ * @param {import('@rocket/js/types.js').Components} components
6
+ */
7
+ export const parseComponents = createComponentHydration({
8
+ loadComponentModule(file) {
9
+ return import(file);
10
+ },
11
+ resolveBrowserImport(file) {
12
+ return resolve(file, import.meta);
13
+ },
14
+ hydrationLoaderSpecifier: '@rocket/js/hydration/hydrationLoader.js',
15
+ });