diff --git a/.gitignore b/.gitignore index 9e155eb..e8af2f5 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ # Misc .DS_Store +.env .env.local .env.development.local .env.test.local diff --git a/blog/2019-05-28-first-blog-post.md b/blog/2019-05-28-first-blog-post.md deleted file mode 100644 index 02f3f81..0000000 --- a/blog/2019-05-28-first-blog-post.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -slug: first-blog-post -title: First Blog Post -authors: - name: Gao Wei - title: Docusaurus Core Team - url: https://github.com/wgao19 - image_url: https://github.com/wgao19.png -tags: [hola, docusaurus] ---- - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/blog/2019-05-29-long-blog-post.md b/blog/2019-05-29-long-blog-post.md deleted file mode 100644 index 26ffb1b..0000000 --- a/blog/2019-05-29-long-blog-post.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -slug: long-blog-post -title: Long Blog Post -authors: endi -tags: [hello, docusaurus] ---- - -This is the summary of a very long blog post, - -Use a `` comment to limit blog post size in the list view. - - - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/blog/2021-08-01-mdx-blog-post.mdx b/blog/2021-08-01-mdx-blog-post.mdx deleted file mode 100644 index ad3490f..0000000 --- a/blog/2021-08-01-mdx-blog-post.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -slug: mdx-blog-post -title: MDX Blog Post -authors: [slorber] -tags: [docusaurus] ---- - -Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/). - -:::tip - -Use the power of React to create interactive blog posts. - -```js - -``` - - - -::: diff --git a/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg b/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg deleted file mode 100644 index 11bda09..0000000 Binary files a/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg and /dev/null differ diff --git a/blog/2021-08-26-welcome/index.md b/blog/2021-08-26-welcome/index.md deleted file mode 100644 index 9455168..0000000 --- a/blog/2021-08-26-welcome/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -slug: welcome -title: Welcome -authors: [slorber, yangshun] -tags: [facebook, hello, docusaurus] ---- - -[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog). - -Simply add Markdown files (or folders) to the `blog` directory. - -Regular blog authors can be added to `authors.yml`. - -The blog post date can be extracted from filenames, such as: - -- `2019-05-30-welcome.md` -- `2019-05-30-welcome/index.md` - -A blog post folder can be convenient to co-locate blog post images: - -![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg) - -The blog supports tags as well! - -**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config. diff --git a/blog/authors.yml b/blog/authors.yml deleted file mode 100644 index bcb2991..0000000 --- a/blog/authors.yml +++ /dev/null @@ -1,17 +0,0 @@ -endi: - name: Endilie Yacop Sucipto - title: Maintainer of Docusaurus - url: https://github.com/endiliey - image_url: https://github.com/endiliey.png - -yangshun: - name: Yangshun Tay - title: Front End Engineer @ Facebook - url: https://github.com/yangshun - image_url: https://github.com/yangshun.png - -slorber: - name: Sébastien Lorber - title: Docusaurus maintainer - url: https://sebastienlorber.com - image_url: https://github.com/slorber.png diff --git a/docs/blog.mdx b/docs/blog.mdx new file mode 100644 index 0000000..d7cbaae --- /dev/null +++ b/docs/blog.mdx @@ -0,0 +1,8 @@ +--- +sidebar_position: 4 +title: Blog +--- +import {BlogPosts} from '@site/src/components/mdx/BlogPosts'; + +# Recent Blog Posts + diff --git a/docs/how.md b/docs/how.md index bb020ed..00e31ec 100644 --- a/docs/how.md +++ b/docs/how.md @@ -14,7 +14,6 @@ sidebar_position: 2 [![Codecov](https://codecov.io/gh/status-im/nim-codex/branch/main/graph/badge.svg?token=XFmCyPSNzW)](https://codecov.io/gh/status-im/nim-codex) [![Discord](https://img.shields.io/discord/895609329053474826)](https://discord.gg/CaJTh24ddQ) - ## Build and Run For detailed instructions on preparing to build nim-codex see [*Building Codex*](BUILDING.md). diff --git a/docs/index.mdx b/docs/index.mdx index 6af4170..10fc2cd 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -8,20 +8,19 @@ import {FeatureCard} from '@site/src/components/mdx/FeatureCard'; import {Quote} from '@site/src/components/mdx/Quote'; import {ExternalReferenceCard} from '@site/src/components/mdx/ExternalReferenceCard'; import {TeamList} from '@site/src/components/mdx/TeamList'; +import {BlogPosts} from '@site/src/components/mdx/BlogPosts'; + linkUrl={"https://github.com/status-im/nim-codex"}/> ## What is Codex?
  • Codex is aiming to solve the fundamental issues of data durability in decentralized systems.
  • -
  • Codex is a research group working in all areas of decentralized storage.
  • -
  • Codex is a decentralized storage protocol for durable information.
@@ -31,14 +30,20 @@ import {TeamList} from '@site/src/components/mdx/TeamList'; - + +## Blog Posts + + ## Resources +} + +export const LinkButton = ({ + children, + linkProps, + ...rest +}: TProps & HTMLProps): JSX.Element => { + return ( + + + + ) +} diff --git a/src/components/mdx/BlogPosts/BlogPosts.tsx b/src/components/mdx/BlogPosts/BlogPosts.tsx index ad5b433..287ec92 100644 --- a/src/components/mdx/BlogPosts/BlogPosts.tsx +++ b/src/components/mdx/BlogPosts/BlogPosts.tsx @@ -1,38 +1,109 @@ -import React from 'react' +import React, { useEffect, useState } from 'react' import clsx from 'clsx' import styles from './style.module.scss' -import { Button } from '@site/src/components/Button' +import useDocusaurusContext from '@docusaurus/useDocusaurusContext' +import GhostContentAPI from '@tryghost/content-api' +import { LinkButton } from '@site/src/components/Button/LinkButton' type TProps = { children: React.ReactNode } -const BlogPost = () => ( +interface IGhostAuthor { + url: string + name: string +} + +interface IGhostBlogPost { + title: string + excerpt: string + url: string + html: string + updated_at: string + authors: IGhostAuthor[] +} + +const useGhostBlogPosts = (limit: number = 10) => { + const { + siteConfig: { + customFields: { ghostAPiKey }, + }, + } = useDocusaurusContext() + const [posts, setPosts] = useState([]) + + useEffect(() => { + const api = new GhostContentAPI({ + url: 'https://blog.codex.storage', + key: ghostAPiKey, + version: 'v2.0', + }) + api.posts + .browse({ limit, include: 'tags,authors' }) + .then((_posts: IGhostBlogPost[]) => { + setPosts(_posts) + }) + .catch((err) => { + console.error(err) + }) + }, []) + + return posts +} + +type TBlogPostProps = { + post: IGhostBlogPost +} + +const BlogPost = ({ post }: TBlogPostProps) => (
-

Decentralizing Storage for Web3

-

- Throughout the Web 2.0 era of the Internet, the distributed systems - architecture adopted by large multinational technology corporations has - led to the centralization of control over user-generated content. -

+

{post.title}

+

- by Leonardo Bautista-Gomez + + by{' '} + {post.authors.map((a, i) => ( + + {a.name} + + ))} + - +
- + + Learn More +
) +const formatDate = (dateString: string): string => { + const date = new Date(dateString) + const m = date.toLocaleString('default', { month: 'short' }) + const d = date.getDay() + const y = date.getFullYear() + return `${m} ${d}, ${y}` +} + export const BlogPosts = ({ children }: TProps): JSX.Element => { + const posts = useGhostBlogPosts() + return (
- - + {posts.map((post, i) => ( + + ))}
) diff --git a/src/components/mdx/TeamList/TeamList.tsx b/src/components/mdx/TeamList/TeamList.tsx index 00467e7..1d00ef3 100644 --- a/src/components/mdx/TeamList/TeamList.tsx +++ b/src/components/mdx/TeamList/TeamList.tsx @@ -16,7 +16,6 @@ type TProps = { export const TeamList = (props: TProps): JSX.Element => { const team = useTeam('codex' as ELogosTeamNames) - console.log(team) const hiddenSidebar = globalStore.useSelector(selectHiddenSidebar) return ( diff --git a/src/components/mdx/TeamList/style.module.scss b/src/components/mdx/TeamList/style.module.scss index 1c56b1e..a40ec4a 100644 --- a/src/components/mdx/TeamList/style.module.scss +++ b/src/components/mdx/TeamList/style.module.scss @@ -1,22 +1,23 @@ .TeamList { .TeamListContainer { display: grid; - grid-template-columns: 1fr 1fr; + grid-template-columns: 1fr 1fr 1fr; grid-gap: 10px; grid-column-gap: calc(0.7 * var(--ifm-global-spacing)); grid-row-gap: calc(0.6 * var(--ifm-global-spacing)); &.withSidebarHide { - grid-template-columns: repeat(3, 1fr); + grid-template-columns: repeat(4, 1fr); .memberCard { - grid-template-rows: 320px 60px; + grid-template-rows: 220px 60px; } } .memberCard { box-shadow: none; display: grid; - grid-template-rows: 400px 60px; + //grid-template-rows: 400px 60px; + grid-template-rows: 270px 110px !important; grid-column-gap: calc(0.7 * var(--ifm-global-spacing)); grid-row-gap: calc(0.6 * var(--ifm-global-spacing)); @@ -30,10 +31,9 @@ } .memberCardCaption { + flex-direction: column; + gap: 10px !important; border-radius: 8px; - flex-direction: row; - justify-content: space-between; - gap: 40px; h5 { margin: 0; @@ -41,11 +41,11 @@ .memberEmail { color: var(--ifm-color-gray-500); } - .memberSocials { display: flex; align-items: center; opacity: 0.3; + height: 20px; gap: calc(var(--ifm-spacing-horizontal) * 0.5); } } @@ -67,11 +67,10 @@ } .memberCardCaption { - flex-direction: column !important; gap: 10px !important; .memberSocials { - height: 30px; - gap: 16px !important; + //height: 30px; + //gap: 16px !important; opacity: 0.5 !important; a { width: 25px; diff --git a/static/data/team.json b/static/data/team.json index 43c5c13..2a4b287 100644 --- a/static/data/team.json +++ b/static/data/team.json @@ -50,7 +50,7 @@ "contact": { "email": "leo@status.im", "status": null, - "github": null, + "github": "leobago", "discord": "leobago#8071", "gscholar": "vt5qgWoAAAAJ" } diff --git a/yarn.lock b/yarn.lock index a9ea447..70d43e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2002,6 +2002,13 @@ dependencies: defer-to-connect "^1.0.1" +"@tryghost/content-api@^1.11.4": + version "1.11.4" + resolved "https://registry.yarnpkg.com/@tryghost/content-api/-/content-api-1.11.4.tgz#4a1afa6a7580eb414d82ce6bd3ca712126927fbc" + integrity sha512-1ShIj8i37rR/9gaenRiaGvPNAU3jAuvViD64mmVxE1cedXJjpqbaOLM8lFWaVuGUafDQrfo5tv57FN6ac51QeQ== + dependencies: + axios "^0.27.0" + "@trysound/sax@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" @@ -2629,6 +2636,11 @@ asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" @@ -2653,6 +2665,14 @@ axios@^0.25.0: dependencies: follow-redirects "^1.14.7" +axios@^0.27.0: + version "0.27.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + babel-loader@^8.2.5: version "8.2.5" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" @@ -3095,6 +3115,13 @@ combine-promises@^1.1.0: resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.1.0.tgz#72db90743c0ca7aab7d0d8d2052fd7b0f674de71" integrity sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + comma-separated-tokens@^1.0.0: version "1.0.8" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" @@ -3517,6 +3544,11 @@ del@^6.1.1: rimraf "^3.0.2" slash "^3.0.0" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -3663,6 +3695,11 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" +dotenv@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + duplexer3@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" @@ -4081,7 +4118,7 @@ flux@^4.0.1: fbemitter "^3.0.0" fbjs "^3.0.1" -follow-redirects@^1.0.0, follow-redirects@^1.14.7: +follow-redirects@^1.0.0, follow-redirects@^1.14.7, follow-redirects@^1.14.9: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== @@ -4105,6 +4142,15 @@ fork-ts-checker-webpack-plugin@^6.5.0: semver "^7.3.2" tapable "^1.0.0" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -5317,7 +5363,7 @@ mime-types@2.1.18: dependencies: mime-db "~1.33.0" -mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==