Skip to content

Commit

Permalink
Merge branch 'main' into feature/new-home
Browse files Browse the repository at this point in the history
  • Loading branch information
gabros20 committed Dec 12, 2023
2 parents 3216002 + 43619df commit e747eae
Show file tree
Hide file tree
Showing 51 changed files with 1,010 additions and 478 deletions.
6 changes: 3 additions & 3 deletions src/components/ecosystem.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ export default class Ecosystem extends React.Component {
<div className={"logo-container"}>
<Image alt={this.props.ecosystem.title} filename={this.props.ecosystem.image} />
</div>
<div className={"category"}>{this.props.category.name}</div>
<div className={"title"}>{this.props.ecosystem.title}</div>
<div className={"text"}>{this.props.ecosystem.text}</div>
{this.props.category.name && <div className={"category"}>{this.props.category.name}</div>}
{this.props.ecosystem.title && <div className={"title"}>{this.props.ecosystem.title}</div>}
{this.props.ecosystem.text && <div className={"text"}>{this.props.ecosystem.text}</div>}
</div>
</a>
);
Expand Down
2 changes: 1 addition & 1 deletion src/components/footer.js
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ class Footer extends React.Component {
</div>
<div className={"col col-12 col-sm-3 align-right"}>
<div className={"col-title text-right"}>Follow us</div>
<Link to={`/community/`} className={"button button-footer"} stripHash>
<Link to={`/community/`} className={"button button-footer"}>
Community
</Link>
</div>
Expand Down
59 changes: 59 additions & 0 deletions src/components/framework-tabs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import React, { useState } from "react";
import IconCard from "./modules/icon-card";
import { AnchorLink } from "gatsby-plugin-anchor-links";

const FrameworkTabs = ({ content, categories, anchorId }) => {
const [selectedTab, setSelectedTab] = useState("All");

const allUniqueCategories = [...new Set(categories.items.flatMap((item) => item.category))];

console.log(allUniqueCategories);

return (
<section className='frameworks' id={`${content.items[anchorId].title.replace(/\s+/g, "-").toLowerCase()}`}>
<div className={"container"}>
<div className={"subtitle"}>{categories.subtitle}</div>
<h2 className={"text-center"}>{categories.title}</h2>
{categories.description && <div className={"description text-center mx-auto mt-3"}>{categories.description}</div>}

<div className={"tabs row justify-content-center"}>
{allUniqueCategories.map(function (category) {
return (
<div className={`col-auto tab-item ${selectedTab === category && "active"}`} onClick={() => setSelectedTab(category)}>
{category}
</div>
);
})}
</div>

<div className={""}>
<div className={"row row-cols-1 row-cols-md-2 row-cols-lg-3 gx-3 gy-5 gy-md-3 my-2 pt-0 pt-md-4 pb-3"}>
{categories.items
.filter((item) => item.category.includes(selectedTab))
.map((item) => (
<IconCard
className='icon-card-wrapper col'
key={item.id}
content={item}
variant={"vertical"}
btnClass={
"plausible-event-name=Framework_Click_" +
item.title.replace(/\s/g, "+") +
"--Developer_Portal_Page-Framework_section"
}
/>
))}
</div>
</div>

{anchorId === 0 && (
<AnchorLink className='link' to={`/developer-portal#${content.items[2].title.replace(/\s+/g, "-").toLowerCase()}`} stripHash>
<div className={"button button-simple mx-auto d-table mt-4"}>Integrate with Celestia</div>
</AnchorLink>
)}
</div>
</section>
);
};

export default FrameworkTabs;
8 changes: 4 additions & 4 deletions src/components/modules/arrow-icon.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import React from "react";

export default function ArrowIcon({classList}) {
export default function ArrowIcon({ classList }) {
return (
<svg className={classList} xmlns='http://www.w3.org/2000/svg' width='23' height='23'>
<g fill='none' fill-rule='evenodd' stroke='#7B2BF9' stroke-linecap='square' stroke-width='1.5'>
<g fill='none' fill-rule='evenodd' stroke='#7B2BF9' strokeLinecap='square' strokeWidth='1.5'>
<path d='m6.95 17.164 9.703-9.702' />
<path stroke-linejoin='bevel' d='M17.237 15.869V6.677H8.044' />
<path strokeLinejoin='bevel' d='M17.237 15.869V6.677H8.044' />
</g>
</svg>
);
};
}
120 changes: 63 additions & 57 deletions src/components/modules/icon-card.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,78 +4,84 @@ import Button from "../buttons/button";
import { AnchorLink } from "gatsby-plugin-anchor-links";

export default function IconCard({ imageClass, content, variant, iconPosition = "top", className, btnClass = "" }) {
if (content.type === "internal") {
return (
<div className={className}>
<div className={`icon-card ${variant}`}>
{content.image && (
<div className={`logo-container ${iconPosition} ${imageClass}`}>
<Image alt={content.title} filename={content.image} />
</div>
)}
<div className='text-box'>
<div className={"title"}>{content.title}</div>
{content.text && <div className={"text"}>{content.text}</div>}
<div className='link-wrapper'>
<Button type={"internal"} class={"external " + btnClass} text={content.link.text} url={content.link.url} />
</div>
return (
<div className={className}>
<div className={`icon-card ${variant}`}>
{content.image && (
<div className={`logo-container ${iconPosition} ${imageClass}`} data-image={content.image}>
<Image alt={content.title} filename={content.image} />
</div>
</div>
</div>
);
} else if (content.type === "external" || content.type === undefined) {
return (
<div className={className}>
<div className={`icon-card ${variant}`}>
{content.image && (
<div className={`logo-container ${iconPosition} ${imageClass}`}>
<Image alt={content.title} filename={content.image} />
</div>
)}
<div className='text-box'>
<div className={"title"}>{content.title}</div>
{content.text && <div className={"text"}>{content.text}</div>}
<div className='link-wrapper'>
)}
<div className='text-box'>
<div className={"title"}>{content.title}</div>
{content.text && <div className={"text"}>{content.text}</div>}
<div className='link-wrapper'>
{content.link && content.type === "internal" && (
<Button type={"internal"} class={"external " + btnClass} text={content.link.text} url={content.link.url} />
)}
{content.link && (content.type === "external" || content.type === undefined) && content.link.text !== "Coming Soon" && (
<Button type={"external"} class={"external " + btnClass} text={content.link.text} url={content.link.url} />
</div>
</div>
</div>
</div>
);
} else if (content.type === "anchor") {
return (
<div className={className}>
<div className={`icon-card ${variant}`}>
{content.image && (
<div className={`logo-container ${iconPosition} ${imageClass}`}>
<Image alt={content.title} filename={content.image} />
</div>
)}
<div className='text-box'>
<div className={"title"}>{content.title}</div>
{content.text && <div className={"text"}>{content.text}</div>}
<div className='link-wrapper'>
)}
{content.link && (content.type === "external" || content.type === undefined) && content.link.text === "Coming Soon" && (
<div className={"coming-soon"}>{content.link.text}</div>
)}
{content.link && content.type === "anchor" && (
<AnchorLink
className='link'
to={`/developer-portal#${content.anchorToId ? content.anchorToId : content.title.replace(/\s+/g, "-").toLowerCase()}`}
stripHash
>
{content.link.text}
<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='none'>
<path stroke='#7B2BF9' stroke-linecap='square' stroke-width='1.5' d='M6.89106 1.34961L6.89106 11.9052' />
<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'>
<path stroke='#7B2BF9' strokeLinecap='square' strokeWidth='1.5' d='M6.89106 1.34961L6.89106 11.9052' />
<path
stroke='#7B2BF9'
stroke-linecap='square'
stroke-linejoin='bevel'
stroke-width='1.5'
strokeLinecap='square'
strokeLinejoin='bevel'
strokeWidth='1.5'
d='M2 7.64941L7 12.6494L12 7.64942'
/>
</svg>
</AnchorLink>
</div>
)}
{content.links &&
content.links.map((link) => {
if (link.type === "internal") {
return <Button type={"internal"} class={"external " + btnClass} text={link.text} url={link.url} />;
} else if (link.type === "external" || link.type === undefined) {
return <Button type={"external"} class={"external " + btnClass} text={link.text} url={link.url} />;
} else if (link.type === "anchor") {
return (
<AnchorLink
className='link'
to={`/developer-portal#${
link.anchorToId ? link.anchorToId : link.title.replace(/\s+/g, "-").toLowerCase()
}`}
stripHash
>
{link.text}
<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'>
<path
stroke='#7B2BF9'
strokeLinecap='square'
strokeWidth='1.5'
d='M6.89106 1.34961L6.89106 11.9052'
/>
<path
stroke='#7B2BF9'
strokeLinecap='square'
strokeLinejoin='bevel'
strokeWidth='1.5'
d='M2 7.64941L7 12.6494L12 7.64942'
/>
</svg>
</AnchorLink>
);
}
})}
</div>
</div>
</div>
);
}
</div>
);
}
28 changes: 14 additions & 14 deletions src/components/modules/press-item.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,27 @@ const FigmaIcon = () => {
<svg xmlns='http://www.w3.org/2000/svg' width='12' height='17' fill='none'>
<path
stroke='currentColor'
stroke-width='2'
strokeWidth='2'
d='M6 8.5C6 7.83696 6.26339 7.20107 6.73223 6.73223C7.20107 6.26339 7.83696 6 8.5 6C9.16304 6 9.79893 6.26339 10.2678 6.73223C10.7366 7.20107 11 7.83696 11 8.5C11 9.16304 10.7366 9.79893 10.2678 10.2678C9.79893 10.7366 9.16304 11 8.5 11C7.83696 11 7.20107 10.7366 6.73223 10.2678C6.26339 9.79893 6 9.16304 6 8.5V8.5Z'
/>
<path
stroke='currentColor'
stroke-width='2'
strokeWidth='2'
d='M1 13.5C1 12.837 1.26339 12.2011 1.73223 11.7322C2.20107 11.2634 2.83696 11 3.5 11H6V13.5C6 14.163 5.73661 14.7989 5.26777 15.2678C4.79893 15.7366 4.16304 16 3.5 16C2.83696 16 2.20107 15.7366 1.73223 15.2678C1.26339 14.7989 1 14.163 1 13.5Z'
/>
<path
stroke='currentColor'
stroke-width='2'
strokeWidth='2'
d='M6 1V6H8.5C9.16304 6 9.79893 5.73661 10.2678 5.26777C10.7366 4.79893 11 4.16304 11 3.5C11 2.83696 10.7366 2.20107 10.2678 1.73223C9.79893 1.26339 9.16304 1 8.5 1L6 1Z'
/>
<path
stroke='currentColor'
stroke-width='2'
strokeWidth='2'
d='M1 3.5C1 4.16304 1.26339 4.79893 1.73223 5.26777C2.20107 5.73661 2.83696 6 3.5 6H6V1H3.5C2.83696 1 2.20107 1.26339 1.73223 1.73223C1.26339 2.20107 1 2.83696 1 3.5Z'
/>
<path
stroke='currentColor'
stroke-width='2'
strokeWidth='2'
d='M1 8.5C1 9.16304 1.26339 9.79893 1.73223 10.2678C2.20107 10.7366 2.83696 11 3.5 11H6V6H3.5C2.83696 6 2.20107 6.26339 1.73223 6.73223C1.26339 7.20107 1 7.83696 1 8.5Z'
/>
</svg>
Expand All @@ -37,8 +37,8 @@ const FigmaIcon = () => {
const ArrowIcon = () => {
return (
<svg xmlns='http://www.w3.org/2000/svg' width='28' height='28' fill='none'>
<path stroke='currentColor' stroke-linecap='round' stroke-width='1.5' d='M6.94723 21.499L20.3823 8.06396' />
<path stroke='currentColor' stroke-linecap='square' stroke-linejoin='bevel' stroke-width='1.5' d='M21.1895 19.7061V6.97813H8.46153' />
<path stroke='currentColor' strokeLinecap='round' strokeWidth='1.5' d='M6.94723 21.499L20.3823 8.06396' />
<path stroke='currentColor' strokeLinecap='square' strokeLinejoin='bevel' strokeWidth='1.5' d='M21.1895 19.7061V6.97813H8.46153' />
</svg>
);
};
Expand All @@ -59,7 +59,7 @@ export default function PressItem({ imageClass, content, className }) {
</div>
</div>
<div className='text-box'>
<div className='badge' style={{ opacity: `${content.figma ? 1 : 0}`}} >
<div className='badge' style={{ opacity: `${content.figma ? 1 : 0}` }}>
<div className={"badge-icon"}>
<FigmaIcon />
</div>
Expand All @@ -86,17 +86,17 @@ export default function PressItem({ imageClass, content, className }) {
</div>
</div>
<div className='text-box'>
<div className='badge' style={{ opacity: `${content.figma ? 1 : 0}`}}>
<div className={"badge-icon"}>
<FigmaIcon />
</div>
<div className={"badge-text"}>Figma</div>
<div className='badge' style={{ opacity: `${content.figma ? 1 : 0}` }}>
<div className={"badge-icon"}>
<FigmaIcon />
</div>
<div className={"badge-text"}>Figma</div>
</div>
<div className={"press-item-title"}>{content.title}</div>
{content.text && <div className={"press-item-text"}>{content.text}</div>}
</div>
</div>
</div>
);
}
}
}
32 changes: 32 additions & 0 deletions src/components/sections/contact-section.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import React from 'react';

import contactIcon from "../../images/svg/contact.svg";

const ContactSection = () => {
return (
<section className={'contact-section'}>
<div className={'container'}>
<div className={'box'}>
<div className={'row justify-content-between align-items-center'}>
<div className={'col-12 col-md-auto'}>
<div className={'row flex-md-nowrap align-items-center'}>
<div className={'col-12 col-md-auto'}>
<img src={contactIcon} alt="Contact"/>
</div>
<div className={'col-12 col-md-auto pt-3 pt-md-0'}>
<div className={'title'}>Explore your options</div>
Contact us to find solutions for your app's needs.
</div>
</div>
</div>
<div className={'col-12 col-md-auto mt-3 mt-md-0'}>
<a href="https://celestia-intake.typeform.com/interest/" className={'button button-simple'} target="_blank">Get In Touch</a>
</div>
</div>
</div>
</div>
</section>
);
};

export default ContactSection;
30 changes: 30 additions & 0 deletions src/components/sections/integrate-section.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import React from "react";

const IntegrateSection = ({ content, anchorId }) => {
return (
<section className={"integrate-section pb-0"} id={`${content.items[anchorId].title.replace(/\s+/g, "-").toLowerCase()}`}>
<div className={"container"}>
<div className={"row"}>
<div className={"row"}>
<div className={"col box me-md-1"}>
<div className={"title"}>Blobstream</div>
<div className={"text"}>Use Celestia as the DA layer for your Ethereum L2.</div>
<a href={"https://docs.celestia.org/developers/blobstream/"} className={"button button-simple"} target="_blank">
Blobstream documentation
</a>
</div>
<div className={"col box ms-md-1"}>
<div className={"title"}>Node API</div>
<div className={"text"}>Use the celestia-node API to publish and retrieve transactions from Celestia.</div>
<a href={"https://node-rpc-docs.celestia.org/?version=v0.12.0/"} className={"button button-simple"} target="_blank">
Node API Documentation
</a>
</div>
</div>
</div>
</div>
</section>
);
};

export default IntegrateSection;
Loading

0 comments on commit e747eae

Please sign in to comment.