Skip to content

Commit

Permalink
design improvement
Browse files Browse the repository at this point in the history
  • Loading branch information
vishvamsinh28 committed Aug 9, 2023
2 parents f512471 + 05a3b0b commit 7830729
Show file tree
Hide file tree
Showing 10 changed files with 357 additions and 51 deletions.
18 changes: 14 additions & 4 deletions components/navigation/NavBar.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
languages,
useTranslation,
} from "../../lib/i18n";
import browserLanguageDetector from "../../lib/browserLanguageDetector";

const isMobile = isMobileDevice();
const uniqueLangs = [...new Set(["EN", "DE"])].map((repo) => ({
Expand All @@ -35,10 +36,15 @@ export default function NavBar({
const { pathname, query, asPath } = router;
const [open, setOpen] = useState();
const [mobileMenuOpen, setMobileMenuOpen] = useState();
const [lang, setLang] = useState("en");
const { i18n } = useTranslation();

const changeLanguage = async (locale) => {
const changeLanguage = async (locale, langPicker) => {

// Verifies if the language change is from langPicker or the browser-api
if(langPicker){
localStorage.setItem('i18nLang', locale);
}

// Detect current language
const slug = asPath.split("/")[1];
const langSlug = languages.includes(slug) && slug;
Expand Down Expand Up @@ -66,6 +72,11 @@ export default function NavBar({
router.push(href);
};

// To be enabled on the last PR
// useEffect(() => {
// changeLanguage(browserLanguageDetector(), false);
// }, []);

function outsideClick(menu) {
if (open !== menu) return;
setOpen(null);
Expand Down Expand Up @@ -172,8 +183,7 @@ export default function NavBar({
{/* <LanguageSelect
options={uniqueLangs}
onChange={(value) => {
setLang(value.toLowerCase());
changeLanguage(value.toLowerCase());
changeLanguage(value.toLowerCase(), true);
}}
className=""
selected={i18n.language.toLocaleUpperCase()}
Expand Down
2 changes: 1 addition & 1 deletion config/all-tags.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"languages":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"},{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"},{"name":"HTML","color":"bg-[#E2A291]","borderColor":"border-[#E44D26]"},{"name":"C/C++","color":"bg-[#93CDEF]","borderColor":"border-[#0080CC]"},{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"},{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"},{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"},{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"},{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"},{"name":"Markdown","color":"bg-[#BABEBF]","borderColor":"border-[#445B64]"},{"name":"YAML","color":"bg-[#FFB764]","borderColor":"border-[#F1901F]"},{"name":"R","color":"bg-[#84B5ED]","borderColor":"border-[#246BBE]"},{"name":"Ruby","color":"bg-[#FF8289]","borderColor":"border-[#FF000F]"},{"name":"Rust","color":"bg-[#FFB8AA]","borderColor":"border-[#E43716]"},{"name":"Shell","color":"bg-[#87D4FF]","borderColor":"border-[#389ED7]"},{"name":"Groovy","color":"bg-[#B6D5E5]","borderColor":"border-[#609DBC]"}],"technologies":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Hermes","color":"bg-[#8AEEBD]","borderColor":"border-[#2AB672]"},{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"AWS","color":"bg-[#FF9F59]","borderColor":"border-[#EF6703]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"},{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Scala","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Azure","color":"bg-[#4B93FF]","borderColor":"border-[#015ADF]"},{"name":"Jenkins","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}]}
{"languages":[{"name":"Go/Golang","color":"bg-[#8ECFDF]","borderColor":"border-[#00AFD9]"},{"name":"Java","color":"bg-[#ECA2A4]","borderColor":"border-[#EC2125]"},{"name":"JavaScript","color":"bg-[#F2F1C7]","borderColor":"border-[#BFBE86]"},{"name":"HTML","color":"bg-[#E2A291]","borderColor":"border-[#E44D26]"},{"name":"C/C++","color":"bg-[#93CDEF]","borderColor":"border-[#0080CC]"},{"name":"C#","color":"bg-[#E3AFE0]","borderColor":"border-[#9B4F96]"},{"name":"Python","color":"bg-[#A8D0EF]","borderColor":"border-[#3878AB]"},{"name":"TypeScript","color":"bg-[#7DBCFE]","borderColor":"border-[#2C78C7]"},{"name":"Kotlin","color":"bg-[#B1ACDF]","borderColor":"border-[#756BD9]"},{"name":"Scala","color":"bg-[#FFA299]","borderColor":"border-[#DF301F]"},{"name":"Markdown","color":"bg-[#BABEBF]","borderColor":"border-[#445B64]"},{"name":"YAML","color":"bg-[#FFB764]","borderColor":"border-[#F1901F]"},{"name":"R","color":"bg-[#84B5ED]","borderColor":"border-[#246BBE]"},{"name":"Ruby","color":"bg-[#FF8289]","borderColor":"border-[#FF000F]"},{"name":"Rust","color":"bg-[#FFB8AA]","borderColor":"border-[#E43716]"},{"name":"Shell","color":"bg-[#87D4FF]","borderColor":"border-[#389ED7]"},{"name":"Groovy","color":"bg-[#B6D5E5]","borderColor":"border-[#609DBC]"}],"technologies":[{"name":"Node.js","color":"bg-[#BDFF67]","borderColor":"border-[#84CE24]"},{"name":"Hermes","color":"bg-[#8AEEBD]","borderColor":"border-[#2AB672]"},{"name":"React JS","color":"bg-[#9FECFA]","borderColor":"border-[#08D8FE]"},{"name":".NET","color":"bg-[#A184FF]","borderColor":"border-[#5026D4]"},{"name":"ASP.NET","color":"bg-[#71C2FB]","borderColor":"border-[#1577BC]"},{"name":"Springboot","color":"bg-[#98E279]","borderColor":"border-[#68BC44]"},{"name":"AWS","color":"bg-[#FF9F59]","borderColor":"border-[#EF6703]"},{"name":"Docker","color":"bg-[#B8E0FF]","borderColor":"border-[#2596ED]"},{"name":"Node-RED","color":"bg-[#FF7474]","borderColor":"border-[#8F0101]"},{"name":"Maven","color":"bg-[#FF6B80]","borderColor":"border-[#CA1A33]"},{"name":"Saas","color":"bg-[#6AB8EC]","borderColor":"border-[#2275AD]"},{"name":"Kubernetes-native","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Scala","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Azure","color":"bg-[#4B93FF]","borderColor":"border-[#015ADF]"},{"name":"Jenkins","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Flask","color":"bg-[#D7C7F2]","borderColor":"border-[#A387D2]"},{"name":"Nest Js","color":"bg-[#E1224E]","borderColor":"border-[#B9012b]"},{"name":"TypeScript","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Socket.IO","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Liquid","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Kotlin","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Spring Cloud Streams","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JHipster JDL","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Groovy","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Markdown","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Shell","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"WebComponents","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Babel","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"Storybook","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"AsyncAPI Generator","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"VSCode","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"SmartPaste","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"JetBrains","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"},{"name":"IntelliJ IDEA","color":"bg-[#61d0f2]","borderColor":"border-[#40ccf7]"}]}
60 changes: 30 additions & 30 deletions config/tools-automated.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,41 +72,41 @@
}
},
{
"title": "nestjs-asyncapi",
"description": "Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.",
"title": "SIO-AsyncAPI",
"description": "This is code-first approach to generate AsyncAPI specification from Socket.IO server.",
"links": {
"repoUrl": "https://github.com/flamewow/nestjs-asyncapi"
"websiteUrl": "https://github.com/daler-rahimov/sio-asyncapi",
"docsUrl": "https://github.com/daler-rahimov/sio-asyncapi",
"repoUrl": "https://github.com/daler-rahimov/sio-asyncapi"
},
"filters": {
"language": "Typescript",
"language": "Python",
"technology": [
"Node.js",
"NestJS"
"Socket.IO",
"Flask"
],
"categories": [
"code-first"
"code-first",
"api"
],
"hasCommercial": false,
"isAsyncAPIOwner": false
}
},
{
"title": "SIO-AsyncAPI",
"description": "This is code-first approach to generate AsyncAPI specification from Socket.IO server.",
"title": "nestjs-asyncapi",
"description": "Utilize decorators to generate AsyncAPI document utilizing DTOs (similar to @nestjs/swagger) and a web UI.",
"links": {
"websiteUrl": "https://github.com/daler-rahimov/sio-asyncapi",
"docsUrl": "https://github.com/daler-rahimov/sio-asyncapi",
"repoUrl": "https://github.com/daler-rahimov/sio-asyncapi"
"repoUrl": "https://github.com/flamewow/nestjs-asyncapi"
},
"filters": {
"language": "Python",
"language": "Typescript",
"technology": [
"Socket.IO",
"Flask"
"Node.js",
"NestJS"
],
"categories": [
"code-first",
"api"
"code-first"
],
"hasCommercial": false,
"isAsyncAPIOwner": false
Expand Down Expand Up @@ -495,18 +495,15 @@
"description": "The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others",
"toolsList": [
{
"title": "jAsyncAPI - IDEA plugin",
"description": "Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.",
"title": "asyncapi-preview",
"description": "VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n",
"links": {
"websiteUrl": "https://plugins.jetbrains.com/plugin/15673-asyncapi",
"docsUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin#usage",
"repoUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin"
"repoUrl": "https://github.com/asyncapi/vs-asyncapi-preview"
},
"filters": {
"language": "Kotlin",
"technology": [
"JetBrains",
"IntelliJ IDEA"
"VSCode",
"SmartPaste"
],
"categories": [
"ide-extension"
Expand All @@ -516,15 +513,18 @@
}
},
{
"title": "asyncapi-preview",
"description": "VSCode extension that enables you to:\n - Preview documentation generated using you AsyncAPI document. It uses AsyncAPI React component under the hood,\n - Create AsyncAPI documents faster using SmartPaste functionality\n",
"title": "jAsyncAPI - IDEA plugin",
"description": "Idea plugin for the java-asyncapi - Helps to edit and validate AsyncAPI schemas.",
"links": {
"repoUrl": "https://github.com/asyncapi/vs-asyncapi-preview"
"websiteUrl": "https://plugins.jetbrains.com/plugin/15673-asyncapi",
"docsUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin#usage",
"repoUrl": "https://github.com/asyncapi/jasyncapi-idea-plugin"
},
"filters": {
"language": "Kotlin",
"technology": [
"VSCode",
"SmartPaste"
"JetBrains",
"IntelliJ IDEA"
],
"categories": [
"ide-extension"
Expand Down
36 changes: 36 additions & 0 deletions lib/browserLanguageDetector.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
const { i18n } = require("./../next-i18next-static-site.config");

// Converts languages like 'en-US' to 'en'
const convertLanguageCode = (code) => {
const baseLanguageCode = code.split('-')[0];
return baseLanguageCode;
};

function browserLanguageDetector() {

// Fetch the language stored inside localStorage
const localStorageLanguage = localStorage.getItem('i18nLang');

if (localStorageLanguage) {
return localStorageLanguage;
}

// Load available languages from i18n object
const availableLanguages = i18n.languages;

// Load user's default languages from browser settings
const browserDefaultLanguages = navigator.languages;

const convertedLanguages = browserDefaultLanguages.map((code) => convertLanguageCode(code));

// Check if the top priority language is available inside i18n object
for (var i = 0; i < convertedLanguages.length; i++) {
if (availableLanguages.includes(convertedLanguages[i])) {
return convertedLanguages[i];
}
}
// Default to 'en' in all other cases
return 'en';
}

export default browserLanguageDetector;
57 changes: 57 additions & 0 deletions pages/blog/july-2023.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
---
title: "Community Update: July 2023"
date: 2023-08-05T06:00:00+01:00
type: Communication
tags:
- Project Status
cover: /img/posts/2023-summary/blog-banner-july.webp
authors:
- name: Thulisile Sibanda
photo: /img/avatars/thulieblack.webp
link: https://www.linkedin.com/in/v-thulisile-sibanda/
byline: AsyncAPI Community Manager
excerpt: 'July Community Update'
featured: true
---

Earlier this month, we officially kickstarted the AsyncAPI Mentorship Program. After receiving an overwhelming response of over 90+ applications for the program, we inducted [13 mentees into the AsyncAPI mentorship program](https://github.com/asyncapi/community/tree/master/mentorship/asyncapi-mentorship/2023). We are thrilled to welcome these talented individuals and look forward to seeing them grow and excel in their respective projects. Additionally, we are excited that our [budget of $19,500 for the AsyncAPI Mentorship Program got approved](), which means we can compensate all successful mentees of the program. We are grateful for the support and look forward to a successful program.


## AsyncAPI Conf on Tour 2023 (AACoT)

Tickets for AACoT'23 London event are available for purchase now, and we have some fantastic talks lined up for September 20th that you won't want to miss. [Hurry and get your tickets through Open Collective](https://opencollective.com/asyncapi/events/asyncapi-conference-on-tour-6b3c0aa1/contribute/asyncapi-conference-on-tour-london-61313) because we have limited availability.

We are also in the process of reviewing talk proposals and will announce our selected speakers soon.

Be sure to keep an eye out for our August newsletter, as we will be sharing some exciting news there and maybe revealing the next location.

## Spec x Tooling
The work on the pre-release version of AsyncAPI Studio is now in progress. The implementation will include the support of validating AsyncAPI v3 documents. If you want to follow the development process or contribute, please [check out the ShapeUP dashboard](https://shapeit.app/projects/org/asyncapi/22/cycles/fa1e9a31?issue=I_kwDODou01c5r29cR).

On the other hand, we have released the initial versions of three protocol bindings. Our gratitude goes out to:
- [Adam Retter](https://github.com/adamretter) for contributing to the [JMS binding](https://github.com/asyncapi/bindings/tree/master/jms), [Richard Coppen](https://github.com/rcoppen), and [Steve Head](https://github.com/SrfHead) for agreeing to maintain it long-term.
- [Ian Cooper](https://github.com/iancooper) and [Dec Kolawski](https://github.com/dpwdec) for contributing and being maintainers to the [SNS binding](https://github.com/asyncapi/bindings/tree/master/sns) and [SQS binding](https://github.com/asyncapi/bindings/tree/master/sqs).

Thanks to the involvement of various community members in reviewing the changes.

## Design
Our design contributor community is experiencing significant growth, and we are thrilled to see our onboarding process going smoothly. More talented individuals joining the community will bring fresh ideas and different perspectives and further foster collaboration and creativity in the initiative. Additionally, [Maya](https://github.com/Mayaleeeee) is currently [leading a design for our website](https://www.figma.com/file/NC2FUyFAccF08uP5RbsbAB/AsyncAPI-Design-Audit?type=design&node-id=1113%3A4309&mode=design&t=iKAh2NOduAjQpsty-1), and we're eager to see all the great insights she'll bring to enhance our website even better.

## Ambassador Program
Do you have a passion for event-driven architectures or message-driven APIs? Would you like to contribute to the AsyncAPI community? You can become an AsyncAPI Ambassador by making at least 4 contributions, either by giving talks, writing articles, or promoting AsyncAPI. If you're interested, [learn more about becoming an AsyncAPI Ambassador today](https://www.asyncapi.com/community/ambassadors)!

## TSC members

The [AsyncAPI Technical Steering Committee](https://www.asyncapi.com/community/tsc) is expanding rapidly, and we would like to warmly welcome our two latest members, [Thulisile Sibanda](https://www.linkedin.com/in/v-thulisile-sibanda), and [Aishat Muibudeen](https://www.linkedin.com/in/aishatmuibudeen). We are excited to have you on board.

## In Case You Missed It

Did you miss our community session on Open Standards and Private Products? You can catch up by watching the recording.

<YouTube id="WlD5rqmfezw" />

## Coming in August

- **AsyncAPI Community Updates Newsletter** - Stay updated on the latest community activities by [subscribing to the AsyncAPI Newsletter](https://www.asyncapi.com/newsletter).


Loading

0 comments on commit 7830729

Please sign in to comment.