├── .eslintrc.cjs ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── index.html ├── netlify.toml ├── netlify └── functions │ ├── contact.js │ └── helloWorld.js ├── package-lock.json ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── public └── avatar.jpg ├── src ├── assets │ ├── avatar.jpg │ ├── colors.json │ └── guide_1.png ├── components │ ├── DiscordCard.jsx │ ├── Footer.jsx │ ├── NavBar.jsx │ ├── ProjectsCard.jsx │ ├── RepoCard.jsx │ ├── SocialCard.jsx │ └── ToolTip.jsx ├── contexts │ └── theme.jsx ├── index.css ├── main.jsx ├── pages │ ├── Contact.jsx │ ├── Home.jsx │ ├── Loading.jsx │ └── RedirectAnd404.jsx ├── routes.jsx └── utils │ ├── badgesEncoded.jsx │ ├── constants.jsx │ ├── getFlags.jsx │ └── redirect.json ├── tailwind.config.js └── vite.config.js /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | 3 | module.exports = { 4 | env: { browser: true, es2020: true }, 5 | extends: [ 6 | 'eslint:recommended', 7 | 'plugin:react/recommended', 8 | 'plugin:react/jsx-runtime', 9 | 'plugin:react-hooks/recommended', 10 | ], 11 | parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, 12 | settings: { react: { version: '18.2' } }, 13 | plugins: ['react-refresh'], 14 | rules: { 15 | 'react-refresh/only-export-components': [ 16 | 'warn', 17 | { allowConstantExport: true }, 18 | ], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | 3 | # Logs 4 | logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | pnpm-debug.log* 10 | lerna-debug.log* 11 | 12 | node_modules 13 | dist 14 | dist-ssr 15 | *.local 16 | 17 | # Editor directories and files 18 | .vscode/* 19 | !.vscode/extensions.json 20 | .idea 21 | .DS_Store 22 | *.suo 23 | *.ntvs* 24 | *.njsproj 25 | *.sln 26 | *.sw? 27 | 28 | # Local Netlify folder 29 | .netlify 30 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Personal Website 2 | 3 | Thank you for your interest in contributing to the Personal Website project! We welcome contributions from the community to make this project even better. Please take a moment to review the guidelines mentioned below. 4 | 5 | ## Table of Contents 6 | 7 | - [Contributing to Personal Website](#contributing-to-personal-website) 8 | - [Table of Contents](#table-of-contents) 9 | - [Ways to Contribute](#ways-to-contribute) 10 | - [Getting Started](#getting-started) 11 | - [Submitting Contributions](#submitting-contributions) 12 | - [Code Style](#code-style) 13 | - [Reporting Issues](#reporting-issues) 14 | - [Community](#community) 15 | - [License](#license) 16 | 17 | ## Ways to Contribute 18 | 19 | There are several ways you can contribute to the project: 20 | 21 | 1. Reporting issues - If you come across any bugs or have suggestions for improvements, please report them through the issue tracker. 22 | 2. Adding features - If you have ideas for new features or enhancements, feel free to submit a pull request (PR) with your changes. 23 | 3. Fixing issues - Take a look at the open issues and see if there's anything you can help with. Submit a PR to address the issue. 24 | 4. Documentation - Improve the project's documentation by fixing errors, adding missing information, or suggesting clarifications. 25 | 26 | ## Getting Started 27 | 28 | To get started with contributing to the project, follow these steps: 29 | 30 | 1. Fork the project repository to your GitHub account. 31 | 2. Clone the forked repository to your local machine. 32 | 3. Create a new branch for your contribution: `git checkout -b my-contribution`. 33 | 4. Make your changes or additions to the codebase. 34 | 5. Test your changes locally to ensure they work as expected. 35 | 6. Commit your changes: `git commit -m "Brief description of your changes"`. 36 | 7. Push your changes to your forked repository: `git push origin my-contribution`. 37 | 8. Submit a pull request (PR) to the original project repository. Provide a clear and descriptive title and describe the changes you've made. 38 | 39 | ## Submitting Contributions 40 | 41 | When submitting a contribution (pull request), please adhere to the following guidelines: 42 | 43 | - Follow the project's code style and guidelines (see next section). 44 | - Provide a clear and descriptive title for your pull request. 45 | - Include a detailed description of the changes you've made. 46 | - Clearly state if your contribution addresses a specific issue. If so, reference the issue number in your pull request description. 47 | - Test your changes thoroughly to ensure they work as intended. 48 | - Ensure your code is well-documented and includes any necessary updates to the project's documentation. 49 | 50 | The project maintainers will review your contribution and provide feedback or suggestions. If everything looks good, your contribution will be merged into the project. 51 | 52 | ## Code Style 53 | 54 | To maintain consistency across the project, please follow the established code style and guidelines: 55 | 56 | - Indentation: Use spaces for indentation (e.g., 2 spaces). 57 | - Naming Conventions: Follow camel case for variable and function names (e.g., `myVariable`, `myFunction`). 58 | - Code Formatting: Keep the code clean, readable, and well-formatted. 59 | - Documentation: Document your code using comments or inline documentation as appropriate. 60 | 61 | ## Reporting Issues 62 | 63 | If you encounter any issues with the project or have suggestions for improvements, please report them through the project's issue tracker. When reporting issues, provide as much information as possible, including: 64 | 65 | - A clear and descriptive title for the issue. 66 | - A detailed description of the issue, including steps to reproduce it. 67 | - Any relevant error messages or screenshots. 68 | - The version of the project you are using (if applicable). 69 | - Any additional information that might help in understanding and addressing the issue. 70 | 71 | ## Community 72 | 73 | Join our community to get help or discuss ideas related to the project: 74 | 75 | - [Discord Server](https://discord.gg/YZEkVrzsFr) 76 | 77 | ## License 78 | 79 | By contributing to the project, you agree that your contributions will be licensed under the same license as the project. For more details, see the [LICENSE](LICENSE) file. 80 | 81 | Thank you for your interest in contributing to the Personal Website project. Your contributions are greatly appreciated! 🎉 82 | 83 | Feel free to customize the sections or add any additional guidelines specific to your project. Happy contributing! -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012-2023 Scott Chacon and others 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Personal Website ✨ 2 | 3 | A personal website showcasing my portfolio, link shortner, and contact information. 🌐 4 | 5 |
6 | 7 | [![stars - personal-website-react](https://img.shields.io/github/stars/ho3einwave/personal-website-react?style=social)](https://github.com/ho3einwave/personal-website-react) [![forks - personal-website-react](https://img.shields.io/github/forks/ho3einwave/personal-website-react?style=social)](https://github.com/ho3einwave/personal-website-react) [![Netlify Status](https://api.netlify.com/api/v1/badges/f7913753-5016-4c0e-b0ed-2f06d6cd89de/deploy-status)](https://app.netlify.com/sites/hoseinwave/deploys) 8 | 9 | 10 |
11 | 12 | ## Table of Contents 📚 13 | 14 | - [Personal Website ✨](#personal-website-) 15 | - [Table of Contents 📚](#table-of-contents-) 16 | - [Description 📝](#description-) 17 | - [Features ✨](#features-) 18 | - [Installation ⚙️](#installation-️) 19 | - [Contact Form Setup 📑](#contact-form-setup-) 20 | - [1. ReCaptcha Key and Secret 🔐](#1-recaptcha-key-and-secret-) 21 | - [2. Discord Webhook URL 📡](#2-discord-webhook-url-) 22 | - [Usage 🚀](#usage-) 23 | - [Customization 🎨](#customization-) 24 | - [Special Thanks 🙌](#special-thanks-) 25 | - [Contributing 🤝](#contributing-) 26 | - [License 📄](#license-) 27 | 28 | ## Description 📝 29 | 30 | My personal website is a platform to showcase my skills, projects, blog posts, and provide a means for visitors to contact me. It serves as an online representation of my professional identity and acts as a central hub for all my online presence. 🚀 31 | 32 | ## Features ✨ 33 | 34 | - **Home Page:** An introduction to who I am and an overview of my skills and areas of expertise. 🏠 35 | - **Portfolio:** A collection of my projects, including descriptions, screenshots, and links to live demos or GitHub repositories. 💼 36 | - **Link Shortner:** You can shorten your links using the format hoseinwave.ir/instagram. When a user clicks on the shortened link, the app will automatically redirect them to the specific destination you have defined in `src/utils/constants.jsx`. ✍️ 37 | - **Contact:** A contact form or links to my social media profiles, allowing visitors to get in touch with me easily. 📧 38 | - **Responsive Design:** The website is designed to be responsive, ensuring a seamless experience across different devices. 📱 39 | 40 | ## Installation ⚙️ 41 | 42 | To run the personal website locally, follow these steps: 43 | 44 | 1. Clone the repository: `git clone https://github.com/ho3einwave/personal-website-react.git` 45 | 2. Navigate to the project directory: `cd personal-website-react` 46 | 3. Install dependencies: `npm install` 47 | 4. Start the development server: `npm run dev` 48 | 5. Open your web browser and visit `http://localhost:5173` to view the website. 🌐 49 | 50 | 51 | ## Contact Form Setup 📑 52 | 53 | To make the contact form work, you'll need to follow these steps: 54 | 55 | ### 1. ReCaptcha Key and Secret 🔐 56 | 57 | - Go to the [ReCaptcha Admin Console](https://www.google.com/recaptcha/admin/) and sign in with your Google account. 58 | - Register a new site by providing a label and domain name. 59 | - Once registered, you receive a **Captcha key** and **Captcha secret**- Open the `src/utils/constants.jsx` file in your project and replace the value of `recaptcha_key` with your Captcha key. 60 | - In the Netlify panel for your site, go to "Site Configuration" > "Environment Variables" > "Add a Variable" and add a new environment variable named `RECAPTCHA_SECRET` with the value of your Captcha secret. 61 | 62 | ### 2. Discord Webhook URL 📡 63 | 64 | - Obtain the Discord webhook URL where you want to receive the contact form submissions. 65 | - In the Netlify panel for your site, go to "Site Configuration" > "Environment Variables" > "Add a Variable" and add a new environment variable named `DISCORD_WEBHOOK` with the value of your Discord webhook URL. 66 | 67 | Once you have completed these steps, your contact form should be ready to use. When a user submits the form, the data will be validated using ReCaptcha and then sent to the specified Discord webhook URL. 68 | 69 | Make sure to save your changes and redeploy your site for the updates to take effect. 70 | 71 | Feel free to customize the instructions based on your specific setup or requirements. ✨ 72 | 73 | ## Usage 🚀 74 | 75 | Once the website is up and running, you can explore different sections: 76 | 77 | - On the home page, you will find an introduction to who I am and an overview of my skills and expertise. 🏠 78 | - The portfolio section showcases my projects. Clicking on a project will provide more details, including descriptions, screenshots, and links to live demos or GitHub repositories. 💼 79 | - With the link shortener feature, you can shorten other links using your own domain.✍️ 80 | - To contact me, you can use the contact form or find links to my social media profiles. 📧 81 | 82 | Feel free to navigate through the website, explore my portfolio, read my blog posts, and get in touch! 🌟 83 | 84 | Certainly! Here's an updated customization section with emojis added: 85 | 86 | ## Customization 🎨 87 | 88 | The personal website project is designed to be easily customizable to suit your specific needs. You can follow the instructions below to customize the website according to your preferences: 89 | 90 | 1. **Personalize Content:** 📝 Open the project files and update the content to reflect your own information. Modify the text, images, and links in the relevant sections such as the home page, portfolio, and contact sections. Add your own projects, or any other content you want to showcase. 91 | 92 | 2. **Styling and Theming:** 🎨 Customize the website's appearance by modifying the CSS styles (in `src/index.css`) and `tailwind.config.js` file. You can change colors, fonts, spacing, or any other visual aspects to match your personal branding or preferred design. 93 | 94 | 3. **Layout and Structure:** 🏗️ Adjust the website layout and structure to meet your requirements. You can modify the navigation menu, add or remove sections, or rearrange the order of elements to create a layout that suits your needs. 95 | 96 | 4. **Configuration Options:** ⚙️ Explore the project configuration files to customize various aspects of the website. For example, you can update the contact form settings, add or remove social media links, or configure the blog post display settings. 97 | 98 | Feel free to experiment and make the necessary changes to make the personal website truly your own. Don't hesitate to explore the codebase and leverage your web development skills to add new features or functionalities. 99 | 100 | Remember to document any customizations you make for future reference or for the benefit of other contributors. 101 | 102 | Please note that while customizing the personal website, it is important to ensure compliance with the project's license and any applicable laws or regulations. 103 | 104 | Enjoy customizing your personal website and make it a reflection of your unique identity and style! 🌟🚀 105 | 106 | ## Special Thanks 🙌 107 | Thank you, [SklyerX](https://github.com/SklyerX), for your invaluable support throughout this project. Your expertise, dedication, and positive attitude made a significant impact. 🌟 108 | 109 | I appreciate your guidance, ideas, and feedback, which elevated the project's quality. Your belief in me and willingness to help were truly inspiring. 🤝 110 | 111 | ## Contributing 🤝 112 | 113 | If you'd like to contribute to my personal website, I appreciate your interest! Here's how you can get involved: 114 | 115 | - Report any issues or bugs by creating a new issue in the repository. 🐛 116 | - Suggest improvements or new features by creating a new issue and describing your ideas. 💡 117 | - Fork the repository, make changes, and submit a pull request for review. 🛠️ 118 | 119 | Please follow the guidelines in the CONTRIBUTING.md file for a smooth collaboration process. 120 | 121 | ## License 📄 122 | 123 | The personal website project is licensed under the [MIT License](LICENSE). Feel free to use and modify the code for your own personal website. Attribution is appreciated but not required. 📝 124 | 125 | Feel free to further customize the sections, add more emojis, or modify the content as per your preferences. Good luck with your personal website! 🌟 -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | Hosein Baseri | Front-End Developer 13 | 15 | 17 | 18 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | 28 | 29 | 30 | 31 | 32 | 33 |
34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | functions = "netlify/functions" 3 | 4 | 5 | [[redirects]] 6 | from = "/*" 7 | to = "/index.html" 8 | status = 200 9 | -------------------------------------------------------------------------------- /netlify/functions/contact.js: -------------------------------------------------------------------------------- 1 | const formattedReturn = (body, statusCode) => { 2 | return { 3 | statusCode: statusCode ? statusCode : 200, 4 | body: JSON.stringify(body), 5 | }; 6 | }; 7 | 8 | export const handler = async (event, context) => { 9 | const body = JSON.parse(event.body); 10 | var myHeaders = new Headers(); 11 | myHeaders.append("Content-Type", "application/json"); 12 | 13 | const captcha_res = await ( 14 | await fetch( 15 | `https://www.google.com/recaptcha/api/siteverify?secret=${process.env.RECAPTCHA_SECRET}&response=${body.captcha}` 16 | ) 17 | ).json(); 18 | if (captcha_res.success) { 19 | await fetch(process.env.DISCORD_WEBHOOK, { 20 | method: "POST", 21 | headers: myHeaders, 22 | body: JSON.stringify({ 23 | username: "Content Report", 24 | content: null, 25 | embeds: [ 26 | { 27 | title: "**Contact Message**", 28 | description: `${body.message}`, 29 | color: 5814783, 30 | fields: [ 31 | { 32 | name: "Name", 33 | value: `> ${body.name}`, 34 | inline: true, 35 | }, 36 | { 37 | name: "EMAIL", 38 | value: `> ${body.email}`, 39 | inline: true, 40 | }, 41 | ], 42 | }, 43 | ], 44 | attachments: [], 45 | }), 46 | }); 47 | return formattedReturn({ 48 | success: true, 49 | message: "Successfuly reported", 50 | }); 51 | } else { 52 | return formattedReturn( 53 | { success: false, message: "Captcha Invalid" }, 54 | 400 55 | ); 56 | } 57 | }; 58 | -------------------------------------------------------------------------------- /netlify/functions/helloWorld.js: -------------------------------------------------------------------------------- 1 | const formattedReturn = (body, statusCode) => { 2 | return { 3 | statusCode: statusCode ? statusCode : 200, 4 | body: JSON.stringify(body), 5 | }; 6 | }; 7 | 8 | export const handler = async (event, context) => { 9 | return formattedReturn({ message: "Hello World" }); 10 | }; 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "personal-website", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite --host", 8 | "build": "vite build", 9 | "lint": "eslint src --ext js,jsx --report-unused-disable-directives --max-warnings 0", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "@hcaptcha/react-hcaptcha": "^1.8.1", 14 | "axios": "^1.4.0", 15 | "framer-motion": "^10.12.21", 16 | "localforage": "^1.10.0", 17 | "match-sorter": "^6.3.1", 18 | "react": "^18.2.0", 19 | "react-dom": "^18.2.0", 20 | "react-google-recaptcha": "^3.1.0", 21 | "react-hot-toast": "^2.4.1", 22 | "react-icons": "^4.10.1", 23 | "react-router-dom": "^6.14.1", 24 | "react-type-animation": "^3.1.0", 25 | "react-use-lanyard": "^0.3.0", 26 | "sort-by": "^0.0.2", 27 | "swiper": "^11.0.5", 28 | "zustand": "^4.3.9" 29 | }, 30 | "devDependencies": { 31 | "@types/react": "^18.2.14", 32 | "@types/react-dom": "^18.2.6", 33 | "@vitejs/plugin-react": "^4.0.1", 34 | "autoprefixer": "^10.4.14", 35 | "eslint": "^8.44.0", 36 | "eslint-plugin-react": "^7.32.2", 37 | "eslint-plugin-react-hooks": "^4.6.0", 38 | "eslint-plugin-react-refresh": "^0.4.1", 39 | "postcss": "^8.4.25", 40 | "tailwindcss": "^3.3.3", 41 | "vite": "^4.4.0" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ho3einWave/personal-website-react/a6e5165d1e9e96254d0c486a78d3ede6ec997e35/public/avatar.jpg -------------------------------------------------------------------------------- /src/assets/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ho3einWave/personal-website-react/a6e5165d1e9e96254d0c486a78d3ede6ec997e35/src/assets/avatar.jpg -------------------------------------------------------------------------------- /src/assets/colors.json: -------------------------------------------------------------------------------- 1 | { 2 | "1C Enterprise": { 3 | "color": "#814CCC", 4 | "url": "https://github.com/trending?l=1C-Enterprise" 5 | }, 6 | "2-Dimensional Array": { 7 | "color": "#38761D", 8 | "url": "https://github.com/trending?l=2-Dimensional-Array" 9 | }, 10 | "4D": { 11 | "color": "#004289", 12 | "url": "https://github.com/trending?l=4D" 13 | }, 14 | "ABAP": { 15 | "color": "#E8274B", 16 | "url": "https://github.com/trending?l=ABAP" 17 | }, 18 | "ABAP CDS": { 19 | "color": "#555e25", 20 | "url": "https://github.com/trending?l=ABAP-CDS" 21 | }, 22 | "ActionScript": { 23 | "color": "#882B0F", 24 | "url": "https://github.com/trending?l=ActionScript" 25 | }, 26 | "Ada": { 27 | "color": "#02f88c", 28 | "url": "https://github.com/trending?l=Ada" 29 | }, 30 | "Adblock Filter List": { 31 | "color": "#800000", 32 | "url": "https://github.com/trending?l=Adblock-Filter-List" 33 | }, 34 | "Adobe Font Metrics": { 35 | "color": "#fa0f00", 36 | "url": "https://github.com/trending?l=Adobe-Font-Metrics" 37 | }, 38 | "Agda": { 39 | "color": "#315665", 40 | "url": "https://github.com/trending?l=Agda" 41 | }, 42 | "AGS Script": { 43 | "color": "#B9D9FF", 44 | "url": "https://github.com/trending?l=AGS-Script" 45 | }, 46 | "AIDL": { 47 | "color": "#34EB6B", 48 | "url": "https://github.com/trending?l=AIDL" 49 | }, 50 | "AL": { 51 | "color": "#3AA2B5", 52 | "url": "https://github.com/trending?l=AL" 53 | }, 54 | "Alloy": { 55 | "color": "#64C800", 56 | "url": "https://github.com/trending?l=Alloy" 57 | }, 58 | "Alpine Abuild": { 59 | "color": "#0D597F", 60 | "url": "https://github.com/trending?l=Alpine-Abuild" 61 | }, 62 | "Altium Designer": { 63 | "color": "#A89663", 64 | "url": "https://github.com/trending?l=Altium-Designer" 65 | }, 66 | "AMPL": { 67 | "color": "#E6EFBB", 68 | "url": "https://github.com/trending?l=AMPL" 69 | }, 70 | "AngelScript": { 71 | "color": "#C7D7DC", 72 | "url": "https://github.com/trending?l=AngelScript" 73 | }, 74 | "Ant Build System": { 75 | "color": "#A9157E", 76 | "url": "https://github.com/trending?l=Ant-Build-System" 77 | }, 78 | "Antlers": { 79 | "color": "#ff269e", 80 | "url": "https://github.com/trending?l=Antlers" 81 | }, 82 | "ANTLR": { 83 | "color": "#9DC3FF", 84 | "url": "https://github.com/trending?l=ANTLR" 85 | }, 86 | "ApacheConf": { 87 | "color": "#d12127", 88 | "url": "https://github.com/trending?l=ApacheConf" 89 | }, 90 | "Apex": { 91 | "color": "#1797c0", 92 | "url": "https://github.com/trending?l=Apex" 93 | }, 94 | "API Blueprint": { 95 | "color": "#2ACCA8", 96 | "url": "https://github.com/trending?l=API-Blueprint" 97 | }, 98 | "APL": { 99 | "color": "#5A8164", 100 | "url": "https://github.com/trending?l=APL" 101 | }, 102 | "Apollo Guidance Computer": { 103 | "color": "#0B3D91", 104 | "url": "https://github.com/trending?l=Apollo-Guidance-Computer" 105 | }, 106 | "AppleScript": { 107 | "color": "#101F1F", 108 | "url": "https://github.com/trending?l=AppleScript" 109 | }, 110 | "Arc": { 111 | "color": "#aa2afe", 112 | "url": "https://github.com/trending?l=Arc" 113 | }, 114 | "AsciiDoc": { 115 | "color": "#73a0c5", 116 | "url": "https://github.com/trending?l=AsciiDoc" 117 | }, 118 | "ASL": { 119 | "color": null, 120 | "url": "https://github.com/trending?l=ASL" 121 | }, 122 | "ASP.NET": { 123 | "color": "#9400ff", 124 | "url": "https://github.com/trending?l=ASP.NET" 125 | }, 126 | "AspectJ": { 127 | "color": "#a957b0", 128 | "url": "https://github.com/trending?l=AspectJ" 129 | }, 130 | "Assembly": { 131 | "color": "#6E4C13", 132 | "url": "https://github.com/trending?l=Assembly" 133 | }, 134 | "Astro": { 135 | "color": "#ff5a03", 136 | "url": "https://github.com/trending?l=Astro" 137 | }, 138 | "Asymptote": { 139 | "color": "#ff0000", 140 | "url": "https://github.com/trending?l=Asymptote" 141 | }, 142 | "ATS": { 143 | "color": "#1ac620", 144 | "url": "https://github.com/trending?l=ATS" 145 | }, 146 | "Augeas": { 147 | "color": "#9CC134", 148 | "url": "https://github.com/trending?l=Augeas" 149 | }, 150 | "AutoHotkey": { 151 | "color": "#6594b9", 152 | "url": "https://github.com/trending?l=AutoHotkey" 153 | }, 154 | "AutoIt": { 155 | "color": "#1C3552", 156 | "url": "https://github.com/trending?l=AutoIt" 157 | }, 158 | "Avro IDL": { 159 | "color": "#0040FF", 160 | "url": "https://github.com/trending?l=Avro-IDL" 161 | }, 162 | "Awk": { 163 | "color": "#c30e9b", 164 | "url": "https://github.com/trending?l=Awk" 165 | }, 166 | "Ballerina": { 167 | "color": "#FF5000", 168 | "url": "https://github.com/trending?l=Ballerina" 169 | }, 170 | "BASIC": { 171 | "color": "#ff0000", 172 | "url": "https://github.com/trending?l=BASIC" 173 | }, 174 | "Batchfile": { 175 | "color": "#C1F12E", 176 | "url": "https://github.com/trending?l=Batchfile" 177 | }, 178 | "Beef": { 179 | "color": "#a52f4e", 180 | "url": "https://github.com/trending?l=Beef" 181 | }, 182 | "Befunge": { 183 | "color": null, 184 | "url": "https://github.com/trending?l=Befunge" 185 | }, 186 | "Berry": { 187 | "color": "#15A13C", 188 | "url": "https://github.com/trending?l=Berry" 189 | }, 190 | "BibTeX": { 191 | "color": "#778899", 192 | "url": "https://github.com/trending?l=BibTeX" 193 | }, 194 | "Bicep": { 195 | "color": "#519aba", 196 | "url": "https://github.com/trending?l=Bicep" 197 | }, 198 | "Bikeshed": { 199 | "color": "#5562ac", 200 | "url": "https://github.com/trending?l=Bikeshed" 201 | }, 202 | "Bison": { 203 | "color": "#6A463F", 204 | "url": "https://github.com/trending?l=Bison" 205 | }, 206 | "BitBake": { 207 | "color": "#00bce4", 208 | "url": "https://github.com/trending?l=BitBake" 209 | }, 210 | "Blade": { 211 | "color": "#f7523f", 212 | "url": "https://github.com/trending?l=Blade" 213 | }, 214 | "BlitzBasic": { 215 | "color": "#00FFAE", 216 | "url": "https://github.com/trending?l=BlitzBasic" 217 | }, 218 | "BlitzMax": { 219 | "color": "#cd6400", 220 | "url": "https://github.com/trending?l=BlitzMax" 221 | }, 222 | "Bluespec": { 223 | "color": "#12223c", 224 | "url": "https://github.com/trending?l=Bluespec" 225 | }, 226 | "Boo": { 227 | "color": "#d4bec1", 228 | "url": "https://github.com/trending?l=Boo" 229 | }, 230 | "Boogie": { 231 | "color": "#c80fa0", 232 | "url": "https://github.com/trending?l=Boogie" 233 | }, 234 | "Brainfuck": { 235 | "color": "#2F2530", 236 | "url": "https://github.com/trending?l=Brainfuck" 237 | }, 238 | "BrighterScript": { 239 | "color": "#66AABB", 240 | "url": "https://github.com/trending?l=BrighterScript" 241 | }, 242 | "Brightscript": { 243 | "color": "#662D91", 244 | "url": "https://github.com/trending?l=Brightscript" 245 | }, 246 | "Browserslist": { 247 | "color": "#ffd539", 248 | "url": "https://github.com/trending?l=Browserslist" 249 | }, 250 | "C": { 251 | "color": "#555555", 252 | "url": "https://github.com/trending?l=C" 253 | }, 254 | "C#": { 255 | "color": "#178600", 256 | "url": "https://github.com/trending?l=Csharp" 257 | }, 258 | "C++": { 259 | "color": "#f34b7d", 260 | "url": "https://github.com/trending?l=C++" 261 | }, 262 | "C2hs Haskell": { 263 | "color": null, 264 | "url": "https://github.com/trending?l=C2hs-Haskell" 265 | }, 266 | "Cabal Config": { 267 | "color": "#483465", 268 | "url": "https://github.com/trending?l=Cabal-Config" 269 | }, 270 | "Cadence": { 271 | "color": "#00ef8b", 272 | "url": "https://github.com/trending?l=Cadence" 273 | }, 274 | "Cairo": { 275 | "color": "#ff4a48", 276 | "url": "https://github.com/trending?l=Cairo" 277 | }, 278 | "CameLIGO": { 279 | "color": "#3be133", 280 | "url": "https://github.com/trending?l=CameLIGO" 281 | }, 282 | "CAP CDS": { 283 | "color": "#0092d1", 284 | "url": "https://github.com/trending?l=CAP-CDS" 285 | }, 286 | "Cap'n Proto": { 287 | "color": "#c42727", 288 | "url": "https://github.com/trending?l=Cap'n-Proto" 289 | }, 290 | "CartoCSS": { 291 | "color": null, 292 | "url": "https://github.com/trending?l=CartoCSS" 293 | }, 294 | "Ceylon": { 295 | "color": "#dfa535", 296 | "url": "https://github.com/trending?l=Ceylon" 297 | }, 298 | "Chapel": { 299 | "color": "#8dc63f", 300 | "url": "https://github.com/trending?l=Chapel" 301 | }, 302 | "Charity": { 303 | "color": null, 304 | "url": "https://github.com/trending?l=Charity" 305 | }, 306 | "ChucK": { 307 | "color": "#3f8000", 308 | "url": "https://github.com/trending?l=ChucK" 309 | }, 310 | "Circom": { 311 | "color": "#707575", 312 | "url": "https://github.com/trending?l=Circom" 313 | }, 314 | "Cirru": { 315 | "color": "#ccccff", 316 | "url": "https://github.com/trending?l=Cirru" 317 | }, 318 | "Clarion": { 319 | "color": "#db901e", 320 | "url": "https://github.com/trending?l=Clarion" 321 | }, 322 | "Clarity": { 323 | "color": "#5546ff", 324 | "url": "https://github.com/trending?l=Clarity" 325 | }, 326 | "Classic ASP": { 327 | "color": "#6a40fd", 328 | "url": "https://github.com/trending?l=Classic-ASP" 329 | }, 330 | "Clean": { 331 | "color": "#3F85AF", 332 | "url": "https://github.com/trending?l=Clean" 333 | }, 334 | "Click": { 335 | "color": "#E4E6F3", 336 | "url": "https://github.com/trending?l=Click" 337 | }, 338 | "CLIPS": { 339 | "color": "#00A300", 340 | "url": "https://github.com/trending?l=CLIPS" 341 | }, 342 | "Clojure": { 343 | "color": "#db5855", 344 | "url": "https://github.com/trending?l=Clojure" 345 | }, 346 | "Closure Templates": { 347 | "color": "#0d948f", 348 | "url": "https://github.com/trending?l=Closure-Templates" 349 | }, 350 | "Cloud Firestore Security Rules": { 351 | "color": "#FFA000", 352 | "url": "https://github.com/trending?l=Cloud-Firestore-Security-Rules" 353 | }, 354 | "CMake": { 355 | "color": "#DA3434", 356 | "url": "https://github.com/trending?l=CMake" 357 | }, 358 | "COBOL": { 359 | "color": null, 360 | "url": "https://github.com/trending?l=COBOL" 361 | }, 362 | "CodeQL": { 363 | "color": "#140f46", 364 | "url": "https://github.com/trending?l=CodeQL" 365 | }, 366 | "CoffeeScript": { 367 | "color": "#244776", 368 | "url": "https://github.com/trending?l=CoffeeScript" 369 | }, 370 | "ColdFusion": { 371 | "color": "#ed2cd6", 372 | "url": "https://github.com/trending?l=ColdFusion" 373 | }, 374 | "ColdFusion CFC": { 375 | "color": "#ed2cd6", 376 | "url": "https://github.com/trending?l=ColdFusion-CFC" 377 | }, 378 | "COLLADA": { 379 | "color": "#F1A42B", 380 | "url": "https://github.com/trending?l=COLLADA" 381 | }, 382 | "Common Lisp": { 383 | "color": "#3fb68b", 384 | "url": "https://github.com/trending?l=Common-Lisp" 385 | }, 386 | "Common Workflow Language": { 387 | "color": "#B5314C", 388 | "url": "https://github.com/trending?l=Common-Workflow-Language" 389 | }, 390 | "Component Pascal": { 391 | "color": "#B0CE4E", 392 | "url": "https://github.com/trending?l=Component-Pascal" 393 | }, 394 | "Cool": { 395 | "color": null, 396 | "url": "https://github.com/trending?l=Cool" 397 | }, 398 | "Coq": { 399 | "color": "#d0b68c", 400 | "url": "https://github.com/trending?l=Coq" 401 | }, 402 | "Crystal": { 403 | "color": "#000100", 404 | "url": "https://github.com/trending?l=Crystal" 405 | }, 406 | "CSON": { 407 | "color": "#244776", 408 | "url": "https://github.com/trending?l=CSON" 409 | }, 410 | "Csound": { 411 | "color": "#1a1a1a", 412 | "url": "https://github.com/trending?l=Csound" 413 | }, 414 | "Csound Document": { 415 | "color": "#1a1a1a", 416 | "url": "https://github.com/trending?l=Csound-Document" 417 | }, 418 | "Csound Score": { 419 | "color": "#1a1a1a", 420 | "url": "https://github.com/trending?l=Csound-Score" 421 | }, 422 | "CSS": { 423 | "color": "#563d7c", 424 | "url": "https://github.com/trending?l=CSS" 425 | }, 426 | "CSV": { 427 | "color": "#237346", 428 | "url": "https://github.com/trending?l=CSV" 429 | }, 430 | "Cuda": { 431 | "color": "#3A4E3A", 432 | "url": "https://github.com/trending?l=Cuda" 433 | }, 434 | "CUE": { 435 | "color": "#5886E1", 436 | "url": "https://github.com/trending?l=CUE" 437 | }, 438 | "Curry": { 439 | "color": "#531242", 440 | "url": "https://github.com/trending?l=Curry" 441 | }, 442 | "CWeb": { 443 | "color": "#00007a", 444 | "url": "https://github.com/trending?l=CWeb" 445 | }, 446 | "Cycript": { 447 | "color": null, 448 | "url": "https://github.com/trending?l=Cycript" 449 | }, 450 | "Cypher": { 451 | "color": "#34c0eb", 452 | "url": "https://github.com/trending?l=Cypher" 453 | }, 454 | "Cython": { 455 | "color": "#fedf5b", 456 | "url": "https://github.com/trending?l=Cython" 457 | }, 458 | "D": { 459 | "color": "#ba595e", 460 | "url": "https://github.com/trending?l=D" 461 | }, 462 | "D2": { 463 | "color": "#526ee8", 464 | "url": "https://github.com/trending?l=D2" 465 | }, 466 | "Dafny": { 467 | "color": "#FFEC25", 468 | "url": "https://github.com/trending?l=Dafny" 469 | }, 470 | "Darcs Patch": { 471 | "color": "#8eff23", 472 | "url": "https://github.com/trending?l=Darcs-Patch" 473 | }, 474 | "Dart": { 475 | "color": "#00B4AB", 476 | "url": "https://github.com/trending?l=Dart" 477 | }, 478 | "DataWeave": { 479 | "color": "#003a52", 480 | "url": "https://github.com/trending?l=DataWeave" 481 | }, 482 | "Debian Package Control File": { 483 | "color": "#D70751", 484 | "url": "https://github.com/trending?l=Debian-Package-Control-File" 485 | }, 486 | "DenizenScript": { 487 | "color": "#FBEE96", 488 | "url": "https://github.com/trending?l=DenizenScript" 489 | }, 490 | "Dhall": { 491 | "color": "#dfafff", 492 | "url": "https://github.com/trending?l=Dhall" 493 | }, 494 | "DIGITAL Command Language": { 495 | "color": null, 496 | "url": "https://github.com/trending?l=DIGITAL-Command-Language" 497 | }, 498 | "DirectX 3D File": { 499 | "color": "#aace60", 500 | "url": "https://github.com/trending?l=DirectX-3D-File" 501 | }, 502 | "DM": { 503 | "color": "#447265", 504 | "url": "https://github.com/trending?l=DM" 505 | }, 506 | "Dockerfile": { 507 | "color": "#384d54", 508 | "url": "https://github.com/trending?l=Dockerfile" 509 | }, 510 | "Dogescript": { 511 | "color": "#cca760", 512 | "url": "https://github.com/trending?l=Dogescript" 513 | }, 514 | "Dotenv": { 515 | "color": "#e5d559", 516 | "url": "https://github.com/trending?l=Dotenv" 517 | }, 518 | "DTrace": { 519 | "color": null, 520 | "url": "https://github.com/trending?l=DTrace" 521 | }, 522 | "Dylan": { 523 | "color": "#6c616e", 524 | "url": "https://github.com/trending?l=Dylan" 525 | }, 526 | "E": { 527 | "color": "#ccce35", 528 | "url": "https://github.com/trending?l=E" 529 | }, 530 | "Earthly": { 531 | "color": "#2af0ff", 532 | "url": "https://github.com/trending?l=Earthly" 533 | }, 534 | "Easybuild": { 535 | "color": "#069406", 536 | "url": "https://github.com/trending?l=Easybuild" 537 | }, 538 | "eC": { 539 | "color": "#913960", 540 | "url": "https://github.com/trending?l=eC" 541 | }, 542 | "Ecere Projects": { 543 | "color": "#913960", 544 | "url": "https://github.com/trending?l=Ecere-Projects" 545 | }, 546 | "ECL": { 547 | "color": "#8a1267", 548 | "url": "https://github.com/trending?l=ECL" 549 | }, 550 | "ECLiPSe": { 551 | "color": "#001d9d", 552 | "url": "https://github.com/trending?l=ECLiPSe" 553 | }, 554 | "Ecmarkup": { 555 | "color": "#eb8131", 556 | "url": "https://github.com/trending?l=Ecmarkup" 557 | }, 558 | "EditorConfig": { 559 | "color": "#fff1f2", 560 | "url": "https://github.com/trending?l=EditorConfig" 561 | }, 562 | "Eiffel": { 563 | "color": "#4d6977", 564 | "url": "https://github.com/trending?l=Eiffel" 565 | }, 566 | "EJS": { 567 | "color": "#a91e50", 568 | "url": "https://github.com/trending?l=EJS" 569 | }, 570 | "Elixir": { 571 | "color": "#6e4a7e", 572 | "url": "https://github.com/trending?l=Elixir" 573 | }, 574 | "Elm": { 575 | "color": "#60B5CC", 576 | "url": "https://github.com/trending?l=Elm" 577 | }, 578 | "Elvish": { 579 | "color": "#55BB55", 580 | "url": "https://github.com/trending?l=Elvish" 581 | }, 582 | "Elvish Transcript": { 583 | "color": "#55BB55", 584 | "url": "https://github.com/trending?l=Elvish-Transcript" 585 | }, 586 | "Emacs Lisp": { 587 | "color": "#c065db", 588 | "url": "https://github.com/trending?l=Emacs-Lisp" 589 | }, 590 | "EmberScript": { 591 | "color": "#FFF4F3", 592 | "url": "https://github.com/trending?l=EmberScript" 593 | }, 594 | "EQ": { 595 | "color": "#a78649", 596 | "url": "https://github.com/trending?l=EQ" 597 | }, 598 | "Erlang": { 599 | "color": "#B83998", 600 | "url": "https://github.com/trending?l=Erlang" 601 | }, 602 | "Euphoria": { 603 | "color": "#FF790B", 604 | "url": "https://github.com/trending?l=Euphoria" 605 | }, 606 | "F#": { 607 | "color": "#b845fc", 608 | "url": "https://github.com/trending?l=Fsharp" 609 | }, 610 | "F*": { 611 | "color": "#572e30", 612 | "url": "https://github.com/trending?l=F*" 613 | }, 614 | "Factor": { 615 | "color": "#636746", 616 | "url": "https://github.com/trending?l=Factor" 617 | }, 618 | "Fancy": { 619 | "color": "#7b9db4", 620 | "url": "https://github.com/trending?l=Fancy" 621 | }, 622 | "Fantom": { 623 | "color": "#14253c", 624 | "url": "https://github.com/trending?l=Fantom" 625 | }, 626 | "Faust": { 627 | "color": "#c37240", 628 | "url": "https://github.com/trending?l=Faust" 629 | }, 630 | "Fennel": { 631 | "color": "#fff3d7", 632 | "url": "https://github.com/trending?l=Fennel" 633 | }, 634 | "FIGlet Font": { 635 | "color": "#FFDDBB", 636 | "url": "https://github.com/trending?l=FIGlet-Font" 637 | }, 638 | "Filebench WML": { 639 | "color": "#F6B900", 640 | "url": "https://github.com/trending?l=Filebench-WML" 641 | }, 642 | "Filterscript": { 643 | "color": null, 644 | "url": "https://github.com/trending?l=Filterscript" 645 | }, 646 | "fish": { 647 | "color": "#4aae47", 648 | "url": "https://github.com/trending?l=fish" 649 | }, 650 | "Fluent": { 651 | "color": "#ffcc33", 652 | "url": "https://github.com/trending?l=Fluent" 653 | }, 654 | "FLUX": { 655 | "color": "#88ccff", 656 | "url": "https://github.com/trending?l=FLUX" 657 | }, 658 | "Forth": { 659 | "color": "#341708", 660 | "url": "https://github.com/trending?l=Forth" 661 | }, 662 | "Fortran": { 663 | "color": "#4d41b1", 664 | "url": "https://github.com/trending?l=Fortran" 665 | }, 666 | "Fortran Free Form": { 667 | "color": "#4d41b1", 668 | "url": "https://github.com/trending?l=Fortran-Free-Form" 669 | }, 670 | "FreeBasic": { 671 | "color": "#141AC9", 672 | "url": "https://github.com/trending?l=FreeBasic" 673 | }, 674 | "FreeMarker": { 675 | "color": "#0050b2", 676 | "url": "https://github.com/trending?l=FreeMarker" 677 | }, 678 | "Frege": { 679 | "color": "#00cafe", 680 | "url": "https://github.com/trending?l=Frege" 681 | }, 682 | "Futhark": { 683 | "color": "#5f021f", 684 | "url": "https://github.com/trending?l=Futhark" 685 | }, 686 | "G-code": { 687 | "color": "#D08CF2", 688 | "url": "https://github.com/trending?l=G-code" 689 | }, 690 | "Game Maker Language": { 691 | "color": "#71b417", 692 | "url": "https://github.com/trending?l=Game-Maker-Language" 693 | }, 694 | "GAML": { 695 | "color": "#FFC766", 696 | "url": "https://github.com/trending?l=GAML" 697 | }, 698 | "GAMS": { 699 | "color": "#f49a22", 700 | "url": "https://github.com/trending?l=GAMS" 701 | }, 702 | "GAP": { 703 | "color": "#0000cc", 704 | "url": "https://github.com/trending?l=GAP" 705 | }, 706 | "GCC Machine Description": { 707 | "color": "#FFCFAB", 708 | "url": "https://github.com/trending?l=GCC-Machine-Description" 709 | }, 710 | "GDB": { 711 | "color": null, 712 | "url": "https://github.com/trending?l=GDB" 713 | }, 714 | "GDScript": { 715 | "color": "#355570", 716 | "url": "https://github.com/trending?l=GDScript" 717 | }, 718 | "GEDCOM": { 719 | "color": "#003058", 720 | "url": "https://github.com/trending?l=GEDCOM" 721 | }, 722 | "Gemfile.lock": { 723 | "color": "#701516", 724 | "url": "https://github.com/trending?l=Gemfile.lock" 725 | }, 726 | "Gemini": { 727 | "color": "#ff6900", 728 | "url": "https://github.com/trending?l=Gemini" 729 | }, 730 | "Genero": { 731 | "color": "#63408e", 732 | "url": "https://github.com/trending?l=Genero" 733 | }, 734 | "Genero Forms": { 735 | "color": "#d8df39", 736 | "url": "https://github.com/trending?l=Genero-Forms" 737 | }, 738 | "Genie": { 739 | "color": "#fb855d", 740 | "url": "https://github.com/trending?l=Genie" 741 | }, 742 | "Genshi": { 743 | "color": "#951531", 744 | "url": "https://github.com/trending?l=Genshi" 745 | }, 746 | "Gentoo Ebuild": { 747 | "color": "#9400ff", 748 | "url": "https://github.com/trending?l=Gentoo-Ebuild" 749 | }, 750 | "Gentoo Eclass": { 751 | "color": "#9400ff", 752 | "url": "https://github.com/trending?l=Gentoo-Eclass" 753 | }, 754 | "Gerber Image": { 755 | "color": "#d20b00", 756 | "url": "https://github.com/trending?l=Gerber-Image" 757 | }, 758 | "Gherkin": { 759 | "color": "#5B2063", 760 | "url": "https://github.com/trending?l=Gherkin" 761 | }, 762 | "Git Attributes": { 763 | "color": "#F44D27", 764 | "url": "https://github.com/trending?l=Git-Attributes" 765 | }, 766 | "Git Config": { 767 | "color": "#F44D27", 768 | "url": "https://github.com/trending?l=Git-Config" 769 | }, 770 | "Git Revision List": { 771 | "color": "#F44D27", 772 | "url": "https://github.com/trending?l=Git-Revision-List" 773 | }, 774 | "Gleam": { 775 | "color": "#ffaff3", 776 | "url": "https://github.com/trending?l=Gleam" 777 | }, 778 | "GLSL": { 779 | "color": "#5686a5", 780 | "url": "https://github.com/trending?l=GLSL" 781 | }, 782 | "Glyph": { 783 | "color": "#c1ac7f", 784 | "url": "https://github.com/trending?l=Glyph" 785 | }, 786 | "Gnuplot": { 787 | "color": "#f0a9f0", 788 | "url": "https://github.com/trending?l=Gnuplot" 789 | }, 790 | "Go": { 791 | "color": "#00ADD8", 792 | "url": "https://github.com/trending?l=Go" 793 | }, 794 | "Go Checksums": { 795 | "color": "#00ADD8", 796 | "url": "https://github.com/trending?l=Go-Checksums" 797 | }, 798 | "Go Module": { 799 | "color": "#00ADD8", 800 | "url": "https://github.com/trending?l=Go-Module" 801 | }, 802 | "Go Workspace": { 803 | "color": "#00ADD8", 804 | "url": "https://github.com/trending?l=Go-Workspace" 805 | }, 806 | "Godot Resource": { 807 | "color": "#355570", 808 | "url": "https://github.com/trending?l=Godot-Resource" 809 | }, 810 | "Golo": { 811 | "color": "#88562A", 812 | "url": "https://github.com/trending?l=Golo" 813 | }, 814 | "Gosu": { 815 | "color": "#82937f", 816 | "url": "https://github.com/trending?l=Gosu" 817 | }, 818 | "Grace": { 819 | "color": "#615f8b", 820 | "url": "https://github.com/trending?l=Grace" 821 | }, 822 | "Gradle": { 823 | "color": "#02303a", 824 | "url": "https://github.com/trending?l=Gradle" 825 | }, 826 | "Grammatical Framework": { 827 | "color": "#ff0000", 828 | "url": "https://github.com/trending?l=Grammatical-Framework" 829 | }, 830 | "GraphQL": { 831 | "color": "#e10098", 832 | "url": "https://github.com/trending?l=GraphQL" 833 | }, 834 | "Graphviz (DOT)": { 835 | "color": "#2596be", 836 | "url": "https://github.com/trending?l=Graphviz-(DOT)" 837 | }, 838 | "Groovy": { 839 | "color": "#4298b8", 840 | "url": "https://github.com/trending?l=Groovy" 841 | }, 842 | "Groovy Server Pages": { 843 | "color": "#4298b8", 844 | "url": "https://github.com/trending?l=Groovy-Server-Pages" 845 | }, 846 | "GSC": { 847 | "color": "#FF6800", 848 | "url": "https://github.com/trending?l=GSC" 849 | }, 850 | "Hack": { 851 | "color": "#878787", 852 | "url": "https://github.com/trending?l=Hack" 853 | }, 854 | "Haml": { 855 | "color": "#ece2a9", 856 | "url": "https://github.com/trending?l=Haml" 857 | }, 858 | "Handlebars": { 859 | "color": "#f7931e", 860 | "url": "https://github.com/trending?l=Handlebars" 861 | }, 862 | "HAProxy": { 863 | "color": "#106da9", 864 | "url": "https://github.com/trending?l=HAProxy" 865 | }, 866 | "Harbour": { 867 | "color": "#0e60e3", 868 | "url": "https://github.com/trending?l=Harbour" 869 | }, 870 | "Haskell": { 871 | "color": "#5e5086", 872 | "url": "https://github.com/trending?l=Haskell" 873 | }, 874 | "Haxe": { 875 | "color": "#df7900", 876 | "url": "https://github.com/trending?l=Haxe" 877 | }, 878 | "HCL": { 879 | "color": "#844FBA", 880 | "url": "https://github.com/trending?l=HCL" 881 | }, 882 | "HiveQL": { 883 | "color": "#dce200", 884 | "url": "https://github.com/trending?l=HiveQL" 885 | }, 886 | "HLSL": { 887 | "color": "#aace60", 888 | "url": "https://github.com/trending?l=HLSL" 889 | }, 890 | "HOCON": { 891 | "color": "#9ff8ee", 892 | "url": "https://github.com/trending?l=HOCON" 893 | }, 894 | "HolyC": { 895 | "color": "#ffefaf", 896 | "url": "https://github.com/trending?l=HolyC" 897 | }, 898 | "hoon": { 899 | "color": "#00b171", 900 | "url": "https://github.com/trending?l=hoon" 901 | }, 902 | "Hosts File": { 903 | "color": "#308888", 904 | "url": "https://github.com/trending?l=Hosts-File" 905 | }, 906 | "HTML": { 907 | "color": "#e34c26", 908 | "url": "https://github.com/trending?l=HTML" 909 | }, 910 | "HTML+ECR": { 911 | "color": "#2e1052", 912 | "url": "https://github.com/trending?l=HTML+ECR" 913 | }, 914 | "HTML+EEX": { 915 | "color": "#6e4a7e", 916 | "url": "https://github.com/trending?l=HTML+EEX" 917 | }, 918 | "HTML+ERB": { 919 | "color": "#701516", 920 | "url": "https://github.com/trending?l=HTML+ERB" 921 | }, 922 | "HTML+PHP": { 923 | "color": "#4f5d95", 924 | "url": "https://github.com/trending?l=HTML+PHP" 925 | }, 926 | "HTML+Razor": { 927 | "color": "#512be4", 928 | "url": "https://github.com/trending?l=HTML+Razor" 929 | }, 930 | "HTTP": { 931 | "color": "#005C9C", 932 | "url": "https://github.com/trending?l=HTTP" 933 | }, 934 | "HXML": { 935 | "color": "#f68712", 936 | "url": "https://github.com/trending?l=HXML" 937 | }, 938 | "Hy": { 939 | "color": "#7790B2", 940 | "url": "https://github.com/trending?l=Hy" 941 | }, 942 | "HyPhy": { 943 | "color": null, 944 | "url": "https://github.com/trending?l=HyPhy" 945 | }, 946 | "IDL": { 947 | "color": "#a3522f", 948 | "url": "https://github.com/trending?l=IDL" 949 | }, 950 | "Idris": { 951 | "color": "#b30000", 952 | "url": "https://github.com/trending?l=Idris" 953 | }, 954 | "Ignore List": { 955 | "color": "#000000", 956 | "url": "https://github.com/trending?l=Ignore-List" 957 | }, 958 | "IGOR Pro": { 959 | "color": "#0000cc", 960 | "url": "https://github.com/trending?l=IGOR-Pro" 961 | }, 962 | "ImageJ Macro": { 963 | "color": "#99AAFF", 964 | "url": "https://github.com/trending?l=ImageJ-Macro" 965 | }, 966 | "Imba": { 967 | "color": "#16cec6", 968 | "url": "https://github.com/trending?l=Imba" 969 | }, 970 | "Inform 7": { 971 | "color": null, 972 | "url": "https://github.com/trending?l=Inform-7" 973 | }, 974 | "INI": { 975 | "color": "#d1dbe0", 976 | "url": "https://github.com/trending?l=INI" 977 | }, 978 | "Ink": { 979 | "color": null, 980 | "url": "https://github.com/trending?l=Ink" 981 | }, 982 | "Inno Setup": { 983 | "color": "#264b99", 984 | "url": "https://github.com/trending?l=Inno-Setup" 985 | }, 986 | "Io": { 987 | "color": "#a9188d", 988 | "url": "https://github.com/trending?l=Io" 989 | }, 990 | "Ioke": { 991 | "color": "#078193", 992 | "url": "https://github.com/trending?l=Ioke" 993 | }, 994 | "Isabelle": { 995 | "color": "#FEFE00", 996 | "url": "https://github.com/trending?l=Isabelle" 997 | }, 998 | "Isabelle ROOT": { 999 | "color": "#FEFE00", 1000 | "url": "https://github.com/trending?l=Isabelle-ROOT" 1001 | }, 1002 | "J": { 1003 | "color": "#9EEDFF", 1004 | "url": "https://github.com/trending?l=J" 1005 | }, 1006 | "Janet": { 1007 | "color": "#0886a5", 1008 | "url": "https://github.com/trending?l=Janet" 1009 | }, 1010 | "JAR Manifest": { 1011 | "color": "#b07219", 1012 | "url": "https://github.com/trending?l=JAR-Manifest" 1013 | }, 1014 | "Jasmin": { 1015 | "color": "#d03600", 1016 | "url": "https://github.com/trending?l=Jasmin" 1017 | }, 1018 | "Java": { 1019 | "color": "#b07219", 1020 | "url": "https://github.com/trending?l=Java" 1021 | }, 1022 | "Java Properties": { 1023 | "color": "#2A6277", 1024 | "url": "https://github.com/trending?l=Java-Properties" 1025 | }, 1026 | "Java Server Pages": { 1027 | "color": "#2A6277", 1028 | "url": "https://github.com/trending?l=Java-Server-Pages" 1029 | }, 1030 | "JavaScript": { 1031 | "color": "#f1e05a", 1032 | "url": "https://github.com/trending?l=JavaScript" 1033 | }, 1034 | "JavaScript+ERB": { 1035 | "color": "#f1e05a", 1036 | "url": "https://github.com/trending?l=JavaScript+ERB" 1037 | }, 1038 | "JCL": { 1039 | "color": "#d90e09", 1040 | "url": "https://github.com/trending?l=JCL" 1041 | }, 1042 | "Jest Snapshot": { 1043 | "color": "#15c213", 1044 | "url": "https://github.com/trending?l=Jest-Snapshot" 1045 | }, 1046 | "JetBrains MPS": { 1047 | "color": "#21D789", 1048 | "url": "https://github.com/trending?l=JetBrains-MPS" 1049 | }, 1050 | "JFlex": { 1051 | "color": "#DBCA00", 1052 | "url": "https://github.com/trending?l=JFlex" 1053 | }, 1054 | "Jinja": { 1055 | "color": "#a52a22", 1056 | "url": "https://github.com/trending?l=Jinja" 1057 | }, 1058 | "Jison": { 1059 | "color": "#56b3cb", 1060 | "url": "https://github.com/trending?l=Jison" 1061 | }, 1062 | "Jison Lex": { 1063 | "color": "#56b3cb", 1064 | "url": "https://github.com/trending?l=Jison-Lex" 1065 | }, 1066 | "Jolie": { 1067 | "color": "#843179", 1068 | "url": "https://github.com/trending?l=Jolie" 1069 | }, 1070 | "jq": { 1071 | "color": "#c7254e", 1072 | "url": "https://github.com/trending?l=jq" 1073 | }, 1074 | "JSON": { 1075 | "color": "#292929", 1076 | "url": "https://github.com/trending?l=JSON" 1077 | }, 1078 | "JSON with Comments": { 1079 | "color": "#292929", 1080 | "url": "https://github.com/trending?l=JSON-with-Comments" 1081 | }, 1082 | "JSON5": { 1083 | "color": "#267CB9", 1084 | "url": "https://github.com/trending?l=JSON5" 1085 | }, 1086 | "JSONiq": { 1087 | "color": "#40d47e", 1088 | "url": "https://github.com/trending?l=JSONiq" 1089 | }, 1090 | "JSONLD": { 1091 | "color": "#0c479c", 1092 | "url": "https://github.com/trending?l=JSONLD" 1093 | }, 1094 | "Jsonnet": { 1095 | "color": "#0064bd", 1096 | "url": "https://github.com/trending?l=Jsonnet" 1097 | }, 1098 | "Julia": { 1099 | "color": "#a270ba", 1100 | "url": "https://github.com/trending?l=Julia" 1101 | }, 1102 | "Jupyter Notebook": { 1103 | "color": "#DA5B0B", 1104 | "url": "https://github.com/trending?l=Jupyter-Notebook" 1105 | }, 1106 | "Just": { 1107 | "color": "#384d54", 1108 | "url": "https://github.com/trending?l=Just" 1109 | }, 1110 | "Kaitai Struct": { 1111 | "color": "#773b37", 1112 | "url": "https://github.com/trending?l=Kaitai-Struct" 1113 | }, 1114 | "KakouneScript": { 1115 | "color": "#6f8042", 1116 | "url": "https://github.com/trending?l=KakouneScript" 1117 | }, 1118 | "KerboScript": { 1119 | "color": "#41adf0", 1120 | "url": "https://github.com/trending?l=KerboScript" 1121 | }, 1122 | "KiCad Layout": { 1123 | "color": "#2f4aab", 1124 | "url": "https://github.com/trending?l=KiCad-Layout" 1125 | }, 1126 | "KiCad Legacy Layout": { 1127 | "color": "#2f4aab", 1128 | "url": "https://github.com/trending?l=KiCad-Legacy-Layout" 1129 | }, 1130 | "KiCad Schematic": { 1131 | "color": "#2f4aab", 1132 | "url": "https://github.com/trending?l=KiCad-Schematic" 1133 | }, 1134 | "Kotlin": { 1135 | "color": "#A97BFF", 1136 | "url": "https://github.com/trending?l=Kotlin" 1137 | }, 1138 | "KRL": { 1139 | "color": "#28430A", 1140 | "url": "https://github.com/trending?l=KRL" 1141 | }, 1142 | "kvlang": { 1143 | "color": "#1da6e0", 1144 | "url": "https://github.com/trending?l=kvlang" 1145 | }, 1146 | "LabVIEW": { 1147 | "color": "#fede06", 1148 | "url": "https://github.com/trending?l=LabVIEW" 1149 | }, 1150 | "Lark": { 1151 | "color": "#2980B9", 1152 | "url": "https://github.com/trending?l=Lark" 1153 | }, 1154 | "Lasso": { 1155 | "color": "#999999", 1156 | "url": "https://github.com/trending?l=Lasso" 1157 | }, 1158 | "Latte": { 1159 | "color": "#f2a542", 1160 | "url": "https://github.com/trending?l=Latte" 1161 | }, 1162 | "Lean": { 1163 | "color": null, 1164 | "url": "https://github.com/trending?l=Lean" 1165 | }, 1166 | "Less": { 1167 | "color": "#1d365d", 1168 | "url": "https://github.com/trending?l=Less" 1169 | }, 1170 | "Lex": { 1171 | "color": "#DBCA00", 1172 | "url": "https://github.com/trending?l=Lex" 1173 | }, 1174 | "LFE": { 1175 | "color": "#4C3023", 1176 | "url": "https://github.com/trending?l=LFE" 1177 | }, 1178 | "LigoLANG": { 1179 | "color": "#0e74ff", 1180 | "url": "https://github.com/trending?l=LigoLANG" 1181 | }, 1182 | "LilyPond": { 1183 | "color": "#9ccc7c", 1184 | "url": "https://github.com/trending?l=LilyPond" 1185 | }, 1186 | "Limbo": { 1187 | "color": null, 1188 | "url": "https://github.com/trending?l=Limbo" 1189 | }, 1190 | "Liquid": { 1191 | "color": "#67b8de", 1192 | "url": "https://github.com/trending?l=Liquid" 1193 | }, 1194 | "Literate Agda": { 1195 | "color": "#315665", 1196 | "url": "https://github.com/trending?l=Literate-Agda" 1197 | }, 1198 | "Literate CoffeeScript": { 1199 | "color": "#244776", 1200 | "url": "https://github.com/trending?l=Literate-CoffeeScript" 1201 | }, 1202 | "Literate Haskell": { 1203 | "color": "#5e5086", 1204 | "url": "https://github.com/trending?l=Literate-Haskell" 1205 | }, 1206 | "LiveScript": { 1207 | "color": "#499886", 1208 | "url": "https://github.com/trending?l=LiveScript" 1209 | }, 1210 | "LLVM": { 1211 | "color": "#185619", 1212 | "url": "https://github.com/trending?l=LLVM" 1213 | }, 1214 | "Logos": { 1215 | "color": null, 1216 | "url": "https://github.com/trending?l=Logos" 1217 | }, 1218 | "Logtalk": { 1219 | "color": "#295b9a", 1220 | "url": "https://github.com/trending?l=Logtalk" 1221 | }, 1222 | "LOLCODE": { 1223 | "color": "#cc9900", 1224 | "url": "https://github.com/trending?l=LOLCODE" 1225 | }, 1226 | "LookML": { 1227 | "color": "#652B81", 1228 | "url": "https://github.com/trending?l=LookML" 1229 | }, 1230 | "LoomScript": { 1231 | "color": null, 1232 | "url": "https://github.com/trending?l=LoomScript" 1233 | }, 1234 | "LSL": { 1235 | "color": "#3d9970", 1236 | "url": "https://github.com/trending?l=LSL" 1237 | }, 1238 | "Lua": { 1239 | "color": "#000080", 1240 | "url": "https://github.com/trending?l=Lua" 1241 | }, 1242 | "M": { 1243 | "color": null, 1244 | "url": "https://github.com/trending?l=M" 1245 | }, 1246 | "M4": { 1247 | "color": null, 1248 | "url": "https://github.com/trending?l=M4" 1249 | }, 1250 | "M4Sugar": { 1251 | "color": null, 1252 | "url": "https://github.com/trending?l=M4Sugar" 1253 | }, 1254 | "Macaulay2": { 1255 | "color": "#d8ffff", 1256 | "url": "https://github.com/trending?l=Macaulay2" 1257 | }, 1258 | "Makefile": { 1259 | "color": "#427819", 1260 | "url": "https://github.com/trending?l=Makefile" 1261 | }, 1262 | "Mako": { 1263 | "color": "#7e858d", 1264 | "url": "https://github.com/trending?l=Mako" 1265 | }, 1266 | "Markdown": { 1267 | "color": "#083fa1", 1268 | "url": "https://github.com/trending?l=Markdown" 1269 | }, 1270 | "Marko": { 1271 | "color": "#42bff2", 1272 | "url": "https://github.com/trending?l=Marko" 1273 | }, 1274 | "Mask": { 1275 | "color": "#f97732", 1276 | "url": "https://github.com/trending?l=Mask" 1277 | }, 1278 | "Mathematica": { 1279 | "color": "#dd1100", 1280 | "url": "https://github.com/trending?l=Mathematica" 1281 | }, 1282 | "MATLAB": { 1283 | "color": "#e16737", 1284 | "url": "https://github.com/trending?l=MATLAB" 1285 | }, 1286 | "Max": { 1287 | "color": "#c4a79c", 1288 | "url": "https://github.com/trending?l=Max" 1289 | }, 1290 | "MAXScript": { 1291 | "color": "#00a6a6", 1292 | "url": "https://github.com/trending?l=MAXScript" 1293 | }, 1294 | "mcfunction": { 1295 | "color": "#E22837", 1296 | "url": "https://github.com/trending?l=mcfunction" 1297 | }, 1298 | "MDX": { 1299 | "color": "#fcb32c", 1300 | "url": "https://github.com/trending?l=MDX" 1301 | }, 1302 | "Mercury": { 1303 | "color": "#ff2b2b", 1304 | "url": "https://github.com/trending?l=Mercury" 1305 | }, 1306 | "Mermaid": { 1307 | "color": "#ff3670", 1308 | "url": "https://github.com/trending?l=Mermaid" 1309 | }, 1310 | "Meson": { 1311 | "color": "#007800", 1312 | "url": "https://github.com/trending?l=Meson" 1313 | }, 1314 | "Metal": { 1315 | "color": "#8f14e9", 1316 | "url": "https://github.com/trending?l=Metal" 1317 | }, 1318 | "MiniD": { 1319 | "color": null, 1320 | "url": "https://github.com/trending?l=MiniD" 1321 | }, 1322 | "MiniYAML": { 1323 | "color": "#ff1111", 1324 | "url": "https://github.com/trending?l=MiniYAML" 1325 | }, 1326 | "Mint": { 1327 | "color": "#02b046", 1328 | "url": "https://github.com/trending?l=Mint" 1329 | }, 1330 | "Mirah": { 1331 | "color": "#c7a938", 1332 | "url": "https://github.com/trending?l=Mirah" 1333 | }, 1334 | "mIRC Script": { 1335 | "color": "#3d57c3", 1336 | "url": "https://github.com/trending?l=mIRC-Script" 1337 | }, 1338 | "MLIR": { 1339 | "color": "#5EC8DB", 1340 | "url": "https://github.com/trending?l=MLIR" 1341 | }, 1342 | "Modelica": { 1343 | "color": "#de1d31", 1344 | "url": "https://github.com/trending?l=Modelica" 1345 | }, 1346 | "Modula-2": { 1347 | "color": "#10253f", 1348 | "url": "https://github.com/trending?l=Modula-2" 1349 | }, 1350 | "Modula-3": { 1351 | "color": "#223388", 1352 | "url": "https://github.com/trending?l=Modula-3" 1353 | }, 1354 | "Module Management System": { 1355 | "color": null, 1356 | "url": "https://github.com/trending?l=Module-Management-System" 1357 | }, 1358 | "Monkey": { 1359 | "color": null, 1360 | "url": "https://github.com/trending?l=Monkey" 1361 | }, 1362 | "Monkey C": { 1363 | "color": "#8D6747", 1364 | "url": "https://github.com/trending?l=Monkey-C" 1365 | }, 1366 | "Moocode": { 1367 | "color": null, 1368 | "url": "https://github.com/trending?l=Moocode" 1369 | }, 1370 | "MoonScript": { 1371 | "color": "#ff4585", 1372 | "url": "https://github.com/trending?l=MoonScript" 1373 | }, 1374 | "Motoko": { 1375 | "color": "#fbb03b", 1376 | "url": "https://github.com/trending?l=Motoko" 1377 | }, 1378 | "Motorola 68K Assembly": { 1379 | "color": "#005daa", 1380 | "url": "https://github.com/trending?l=Motorola-68K-Assembly" 1381 | }, 1382 | "Move": { 1383 | "color": "#4a137a", 1384 | "url": "https://github.com/trending?l=Move" 1385 | }, 1386 | "MQL4": { 1387 | "color": "#62A8D6", 1388 | "url": "https://github.com/trending?l=MQL4" 1389 | }, 1390 | "MQL5": { 1391 | "color": "#4A76B8", 1392 | "url": "https://github.com/trending?l=MQL5" 1393 | }, 1394 | "MTML": { 1395 | "color": "#b7e1f4", 1396 | "url": "https://github.com/trending?l=MTML" 1397 | }, 1398 | "MUF": { 1399 | "color": null, 1400 | "url": "https://github.com/trending?l=MUF" 1401 | }, 1402 | "mupad": { 1403 | "color": "#244963", 1404 | "url": "https://github.com/trending?l=mupad" 1405 | }, 1406 | "Mustache": { 1407 | "color": "#724b3b", 1408 | "url": "https://github.com/trending?l=Mustache" 1409 | }, 1410 | "Myghty": { 1411 | "color": null, 1412 | "url": "https://github.com/trending?l=Myghty" 1413 | }, 1414 | "nanorc": { 1415 | "color": "#2d004d", 1416 | "url": "https://github.com/trending?l=nanorc" 1417 | }, 1418 | "Nasal": { 1419 | "color": "#1d2c4e", 1420 | "url": "https://github.com/trending?l=Nasal" 1421 | }, 1422 | "NASL": { 1423 | "color": null, 1424 | "url": "https://github.com/trending?l=NASL" 1425 | }, 1426 | "NCL": { 1427 | "color": "#28431f", 1428 | "url": "https://github.com/trending?l=NCL" 1429 | }, 1430 | "Nearley": { 1431 | "color": "#990000", 1432 | "url": "https://github.com/trending?l=Nearley" 1433 | }, 1434 | "Nemerle": { 1435 | "color": "#3d3c6e", 1436 | "url": "https://github.com/trending?l=Nemerle" 1437 | }, 1438 | "nesC": { 1439 | "color": "#94B0C7", 1440 | "url": "https://github.com/trending?l=nesC" 1441 | }, 1442 | "NetLinx": { 1443 | "color": "#0aa0ff", 1444 | "url": "https://github.com/trending?l=NetLinx" 1445 | }, 1446 | "NetLinx+ERB": { 1447 | "color": "#747faa", 1448 | "url": "https://github.com/trending?l=NetLinx+ERB" 1449 | }, 1450 | "NetLogo": { 1451 | "color": "#ff6375", 1452 | "url": "https://github.com/trending?l=NetLogo" 1453 | }, 1454 | "NewLisp": { 1455 | "color": "#87AED7", 1456 | "url": "https://github.com/trending?l=NewLisp" 1457 | }, 1458 | "Nextflow": { 1459 | "color": "#3ac486", 1460 | "url": "https://github.com/trending?l=Nextflow" 1461 | }, 1462 | "Nginx": { 1463 | "color": "#009639", 1464 | "url": "https://github.com/trending?l=Nginx" 1465 | }, 1466 | "Nim": { 1467 | "color": "#ffc200", 1468 | "url": "https://github.com/trending?l=Nim" 1469 | }, 1470 | "Nit": { 1471 | "color": "#009917", 1472 | "url": "https://github.com/trending?l=Nit" 1473 | }, 1474 | "Nix": { 1475 | "color": "#7e7eff", 1476 | "url": "https://github.com/trending?l=Nix" 1477 | }, 1478 | "NPM Config": { 1479 | "color": "#cb3837", 1480 | "url": "https://github.com/trending?l=NPM-Config" 1481 | }, 1482 | "NSIS": { 1483 | "color": null, 1484 | "url": "https://github.com/trending?l=NSIS" 1485 | }, 1486 | "Nu": { 1487 | "color": "#c9df40", 1488 | "url": "https://github.com/trending?l=Nu" 1489 | }, 1490 | "NumPy": { 1491 | "color": "#9C8AF9", 1492 | "url": "https://github.com/trending?l=NumPy" 1493 | }, 1494 | "Nunjucks": { 1495 | "color": "#3d8137", 1496 | "url": "https://github.com/trending?l=Nunjucks" 1497 | }, 1498 | "Nushell": { 1499 | "color": "#4E9906", 1500 | "url": "https://github.com/trending?l=Nushell" 1501 | }, 1502 | "NWScript": { 1503 | "color": "#111522", 1504 | "url": "https://github.com/trending?l=NWScript" 1505 | }, 1506 | "OASv2-json": { 1507 | "color": "#85ea2d", 1508 | "url": "https://github.com/trending?l=OASv2-json" 1509 | }, 1510 | "OASv2-yaml": { 1511 | "color": "#85ea2d", 1512 | "url": "https://github.com/trending?l=OASv2-yaml" 1513 | }, 1514 | "OASv3-json": { 1515 | "color": "#85ea2d", 1516 | "url": "https://github.com/trending?l=OASv3-json" 1517 | }, 1518 | "OASv3-yaml": { 1519 | "color": "#85ea2d", 1520 | "url": "https://github.com/trending?l=OASv3-yaml" 1521 | }, 1522 | "Objective-C": { 1523 | "color": "#438eff", 1524 | "url": "https://github.com/trending?l=Objective-C" 1525 | }, 1526 | "Objective-C++": { 1527 | "color": "#6866fb", 1528 | "url": "https://github.com/trending?l=Objective-C++" 1529 | }, 1530 | "Objective-J": { 1531 | "color": "#ff0c5a", 1532 | "url": "https://github.com/trending?l=Objective-J" 1533 | }, 1534 | "ObjectScript": { 1535 | "color": "#424893", 1536 | "url": "https://github.com/trending?l=ObjectScript" 1537 | }, 1538 | "OCaml": { 1539 | "color": "#ef7a08", 1540 | "url": "https://github.com/trending?l=OCaml" 1541 | }, 1542 | "Odin": { 1543 | "color": "#60AFFE", 1544 | "url": "https://github.com/trending?l=Odin" 1545 | }, 1546 | "Omgrofl": { 1547 | "color": "#cabbff", 1548 | "url": "https://github.com/trending?l=Omgrofl" 1549 | }, 1550 | "ooc": { 1551 | "color": "#b0b77e", 1552 | "url": "https://github.com/trending?l=ooc" 1553 | }, 1554 | "Opa": { 1555 | "color": null, 1556 | "url": "https://github.com/trending?l=Opa" 1557 | }, 1558 | "Opal": { 1559 | "color": "#f7ede0", 1560 | "url": "https://github.com/trending?l=Opal" 1561 | }, 1562 | "Open Policy Agent": { 1563 | "color": "#7d9199", 1564 | "url": "https://github.com/trending?l=Open-Policy-Agent" 1565 | }, 1566 | "OpenAPI Specification v2": { 1567 | "color": "#85ea2d", 1568 | "url": "https://github.com/trending?l=OpenAPI-Specification-v2" 1569 | }, 1570 | "OpenAPI Specification v3": { 1571 | "color": "#85ea2d", 1572 | "url": "https://github.com/trending?l=OpenAPI-Specification-v3" 1573 | }, 1574 | "OpenCL": { 1575 | "color": "#ed2e2d", 1576 | "url": "https://github.com/trending?l=OpenCL" 1577 | }, 1578 | "OpenEdge ABL": { 1579 | "color": "#5ce600", 1580 | "url": "https://github.com/trending?l=OpenEdge-ABL" 1581 | }, 1582 | "OpenQASM": { 1583 | "color": "#AA70FF", 1584 | "url": "https://github.com/trending?l=OpenQASM" 1585 | }, 1586 | "OpenRC runscript": { 1587 | "color": null, 1588 | "url": "https://github.com/trending?l=OpenRC-runscript" 1589 | }, 1590 | "OpenSCAD": { 1591 | "color": "#e5cd45", 1592 | "url": "https://github.com/trending?l=OpenSCAD" 1593 | }, 1594 | "Option List": { 1595 | "color": "#476732", 1596 | "url": "https://github.com/trending?l=Option-List" 1597 | }, 1598 | "Org": { 1599 | "color": "#77aa99", 1600 | "url": "https://github.com/trending?l=Org" 1601 | }, 1602 | "Ox": { 1603 | "color": null, 1604 | "url": "https://github.com/trending?l=Ox" 1605 | }, 1606 | "Oxygene": { 1607 | "color": "#cdd0e3", 1608 | "url": "https://github.com/trending?l=Oxygene" 1609 | }, 1610 | "Oz": { 1611 | "color": "#fab738", 1612 | "url": "https://github.com/trending?l=Oz" 1613 | }, 1614 | "P4": { 1615 | "color": "#7055b5", 1616 | "url": "https://github.com/trending?l=P4" 1617 | }, 1618 | "Pact": { 1619 | "color": "#F7A8B8", 1620 | "url": "https://github.com/trending?l=Pact" 1621 | }, 1622 | "Pan": { 1623 | "color": "#cc0000", 1624 | "url": "https://github.com/trending?l=Pan" 1625 | }, 1626 | "Papyrus": { 1627 | "color": "#6600cc", 1628 | "url": "https://github.com/trending?l=Papyrus" 1629 | }, 1630 | "Parrot": { 1631 | "color": "#f3ca0a", 1632 | "url": "https://github.com/trending?l=Parrot" 1633 | }, 1634 | "Parrot Assembly": { 1635 | "color": null, 1636 | "url": "https://github.com/trending?l=Parrot-Assembly" 1637 | }, 1638 | "Parrot Internal Representation": { 1639 | "color": null, 1640 | "url": "https://github.com/trending?l=Parrot-Internal-Representation" 1641 | }, 1642 | "Pascal": { 1643 | "color": "#E3F171", 1644 | "url": "https://github.com/trending?l=Pascal" 1645 | }, 1646 | "Pawn": { 1647 | "color": "#dbb284", 1648 | "url": "https://github.com/trending?l=Pawn" 1649 | }, 1650 | "PDDL": { 1651 | "color": "#0d00ff", 1652 | "url": "https://github.com/trending?l=PDDL" 1653 | }, 1654 | "PEG.js": { 1655 | "color": "#234d6b", 1656 | "url": "https://github.com/trending?l=PEG.js" 1657 | }, 1658 | "Pep8": { 1659 | "color": "#C76F5B", 1660 | "url": "https://github.com/trending?l=Pep8" 1661 | }, 1662 | "Perl": { 1663 | "color": "#0298c3", 1664 | "url": "https://github.com/trending?l=Perl" 1665 | }, 1666 | "PHP": { 1667 | "color": "#4F5D95", 1668 | "url": "https://github.com/trending?l=PHP" 1669 | }, 1670 | "PicoLisp": { 1671 | "color": "#6067af", 1672 | "url": "https://github.com/trending?l=PicoLisp" 1673 | }, 1674 | "PigLatin": { 1675 | "color": "#fcd7de", 1676 | "url": "https://github.com/trending?l=PigLatin" 1677 | }, 1678 | "Pike": { 1679 | "color": "#005390", 1680 | "url": "https://github.com/trending?l=Pike" 1681 | }, 1682 | "PlantUML": { 1683 | "color": "#fbbd16", 1684 | "url": "https://github.com/trending?l=PlantUML" 1685 | }, 1686 | "PLpgSQL": { 1687 | "color": "#336790", 1688 | "url": "https://github.com/trending?l=PLpgSQL" 1689 | }, 1690 | "PLSQL": { 1691 | "color": "#dad8d8", 1692 | "url": "https://github.com/trending?l=PLSQL" 1693 | }, 1694 | "PogoScript": { 1695 | "color": "#d80074", 1696 | "url": "https://github.com/trending?l=PogoScript" 1697 | }, 1698 | "Polar": { 1699 | "color": "#ae81ff", 1700 | "url": "https://github.com/trending?l=Polar" 1701 | }, 1702 | "Pony": { 1703 | "color": null, 1704 | "url": "https://github.com/trending?l=Pony" 1705 | }, 1706 | "Portugol": { 1707 | "color": "#f8bd00", 1708 | "url": "https://github.com/trending?l=Portugol" 1709 | }, 1710 | "PostCSS": { 1711 | "color": "#dc3a0c", 1712 | "url": "https://github.com/trending?l=PostCSS" 1713 | }, 1714 | "PostScript": { 1715 | "color": "#da291c", 1716 | "url": "https://github.com/trending?l=PostScript" 1717 | }, 1718 | "POV-Ray SDL": { 1719 | "color": "#6bac65", 1720 | "url": "https://github.com/trending?l=POV-Ray-SDL" 1721 | }, 1722 | "PowerBuilder": { 1723 | "color": "#8f0f8d", 1724 | "url": "https://github.com/trending?l=PowerBuilder" 1725 | }, 1726 | "PowerShell": { 1727 | "color": "#012456", 1728 | "url": "https://github.com/trending?l=PowerShell" 1729 | }, 1730 | "Prisma": { 1731 | "color": "#0c344b", 1732 | "url": "https://github.com/trending?l=Prisma" 1733 | }, 1734 | "Processing": { 1735 | "color": "#0096D8", 1736 | "url": "https://github.com/trending?l=Processing" 1737 | }, 1738 | "Procfile": { 1739 | "color": "#3B2F63", 1740 | "url": "https://github.com/trending?l=Procfile" 1741 | }, 1742 | "Prolog": { 1743 | "color": "#74283c", 1744 | "url": "https://github.com/trending?l=Prolog" 1745 | }, 1746 | "Promela": { 1747 | "color": "#de0000", 1748 | "url": "https://github.com/trending?l=Promela" 1749 | }, 1750 | "Propeller Spin": { 1751 | "color": "#7fa2a7", 1752 | "url": "https://github.com/trending?l=Propeller-Spin" 1753 | }, 1754 | "Pug": { 1755 | "color": "#a86454", 1756 | "url": "https://github.com/trending?l=Pug" 1757 | }, 1758 | "Puppet": { 1759 | "color": "#302B6D", 1760 | "url": "https://github.com/trending?l=Puppet" 1761 | }, 1762 | "PureBasic": { 1763 | "color": "#5a6986", 1764 | "url": "https://github.com/trending?l=PureBasic" 1765 | }, 1766 | "PureScript": { 1767 | "color": "#1D222D", 1768 | "url": "https://github.com/trending?l=PureScript" 1769 | }, 1770 | "Pyret": { 1771 | "color": "#ee1e10", 1772 | "url": "https://github.com/trending?l=Pyret" 1773 | }, 1774 | "Python": { 1775 | "color": "#3572A5", 1776 | "url": "https://github.com/trending?l=Python" 1777 | }, 1778 | "Python console": { 1779 | "color": "#3572A5", 1780 | "url": "https://github.com/trending?l=Python-console" 1781 | }, 1782 | "Python traceback": { 1783 | "color": "#3572A5", 1784 | "url": "https://github.com/trending?l=Python-traceback" 1785 | }, 1786 | "q": { 1787 | "color": "#0040cd", 1788 | "url": "https://github.com/trending?l=q" 1789 | }, 1790 | "Q#": { 1791 | "color": "#fed659", 1792 | "url": "https://github.com/trending?l=Qsharp" 1793 | }, 1794 | "QMake": { 1795 | "color": null, 1796 | "url": "https://github.com/trending?l=QMake" 1797 | }, 1798 | "QML": { 1799 | "color": "#44a51c", 1800 | "url": "https://github.com/trending?l=QML" 1801 | }, 1802 | "Qt Script": { 1803 | "color": "#00b841", 1804 | "url": "https://github.com/trending?l=Qt-Script" 1805 | }, 1806 | "Quake": { 1807 | "color": "#882233", 1808 | "url": "https://github.com/trending?l=Quake" 1809 | }, 1810 | "R": { 1811 | "color": "#198CE7", 1812 | "url": "https://github.com/trending?l=R" 1813 | }, 1814 | "Racket": { 1815 | "color": "#3c5caa", 1816 | "url": "https://github.com/trending?l=Racket" 1817 | }, 1818 | "Ragel": { 1819 | "color": "#9d5200", 1820 | "url": "https://github.com/trending?l=Ragel" 1821 | }, 1822 | "Raku": { 1823 | "color": "#0000fb", 1824 | "url": "https://github.com/trending?l=Raku" 1825 | }, 1826 | "RAML": { 1827 | "color": "#77d9fb", 1828 | "url": "https://github.com/trending?l=RAML" 1829 | }, 1830 | "Rascal": { 1831 | "color": "#fffaa0", 1832 | "url": "https://github.com/trending?l=Rascal" 1833 | }, 1834 | "RBS": { 1835 | "color": "#701516", 1836 | "url": "https://github.com/trending?l=RBS" 1837 | }, 1838 | "RDoc": { 1839 | "color": "#701516", 1840 | "url": "https://github.com/trending?l=RDoc" 1841 | }, 1842 | "REALbasic": { 1843 | "color": null, 1844 | "url": "https://github.com/trending?l=REALbasic" 1845 | }, 1846 | "Reason": { 1847 | "color": "#ff5847", 1848 | "url": "https://github.com/trending?l=Reason" 1849 | }, 1850 | "ReasonLIGO": { 1851 | "color": "#ff5847", 1852 | "url": "https://github.com/trending?l=ReasonLIGO" 1853 | }, 1854 | "Rebol": { 1855 | "color": "#358a5b", 1856 | "url": "https://github.com/trending?l=Rebol" 1857 | }, 1858 | "Record Jar": { 1859 | "color": "#0673ba", 1860 | "url": "https://github.com/trending?l=Record-Jar" 1861 | }, 1862 | "Red": { 1863 | "color": "#f50000", 1864 | "url": "https://github.com/trending?l=Red" 1865 | }, 1866 | "Redcode": { 1867 | "color": null, 1868 | "url": "https://github.com/trending?l=Redcode" 1869 | }, 1870 | "Regular Expression": { 1871 | "color": "#009a00", 1872 | "url": "https://github.com/trending?l=Regular-Expression" 1873 | }, 1874 | "Ren'Py": { 1875 | "color": "#ff7f7f", 1876 | "url": "https://github.com/trending?l=Ren'Py" 1877 | }, 1878 | "RenderScript": { 1879 | "color": null, 1880 | "url": "https://github.com/trending?l=RenderScript" 1881 | }, 1882 | "ReScript": { 1883 | "color": "#ed5051", 1884 | "url": "https://github.com/trending?l=ReScript" 1885 | }, 1886 | "reStructuredText": { 1887 | "color": "#141414", 1888 | "url": "https://github.com/trending?l=reStructuredText" 1889 | }, 1890 | "REXX": { 1891 | "color": "#d90e09", 1892 | "url": "https://github.com/trending?l=REXX" 1893 | }, 1894 | "Ring": { 1895 | "color": "#2D54CB", 1896 | "url": "https://github.com/trending?l=Ring" 1897 | }, 1898 | "Riot": { 1899 | "color": "#A71E49", 1900 | "url": "https://github.com/trending?l=Riot" 1901 | }, 1902 | "RMarkdown": { 1903 | "color": "#198ce7", 1904 | "url": "https://github.com/trending?l=RMarkdown" 1905 | }, 1906 | "RobotFramework": { 1907 | "color": "#00c0b5", 1908 | "url": "https://github.com/trending?l=RobotFramework" 1909 | }, 1910 | "Roff": { 1911 | "color": "#ecdebe", 1912 | "url": "https://github.com/trending?l=Roff" 1913 | }, 1914 | "Roff Manpage": { 1915 | "color": "#ecdebe", 1916 | "url": "https://github.com/trending?l=Roff-Manpage" 1917 | }, 1918 | "Rouge": { 1919 | "color": "#cc0088", 1920 | "url": "https://github.com/trending?l=Rouge" 1921 | }, 1922 | "RouterOS Script": { 1923 | "color": "#DE3941", 1924 | "url": "https://github.com/trending?l=RouterOS-Script" 1925 | }, 1926 | "RPC": { 1927 | "color": null, 1928 | "url": "https://github.com/trending?l=RPC" 1929 | }, 1930 | "RPGLE": { 1931 | "color": "#2BDE21", 1932 | "url": "https://github.com/trending?l=RPGLE" 1933 | }, 1934 | "Ruby": { 1935 | "color": "#701516", 1936 | "url": "https://github.com/trending?l=Ruby" 1937 | }, 1938 | "RUNOFF": { 1939 | "color": "#665a4e", 1940 | "url": "https://github.com/trending?l=RUNOFF" 1941 | }, 1942 | "Rust": { 1943 | "color": "#dea584", 1944 | "url": "https://github.com/trending?l=Rust" 1945 | }, 1946 | "Sage": { 1947 | "color": null, 1948 | "url": "https://github.com/trending?l=Sage" 1949 | }, 1950 | "SaltStack": { 1951 | "color": "#646464", 1952 | "url": "https://github.com/trending?l=SaltStack" 1953 | }, 1954 | "SAS": { 1955 | "color": "#B34936", 1956 | "url": "https://github.com/trending?l=SAS" 1957 | }, 1958 | "Sass": { 1959 | "color": "#a53b70", 1960 | "url": "https://github.com/trending?l=Sass" 1961 | }, 1962 | "Scala": { 1963 | "color": "#c22d40", 1964 | "url": "https://github.com/trending?l=Scala" 1965 | }, 1966 | "Scaml": { 1967 | "color": "#bd181a", 1968 | "url": "https://github.com/trending?l=Scaml" 1969 | }, 1970 | "Scenic": { 1971 | "color": "#fdc700", 1972 | "url": "https://github.com/trending?l=Scenic" 1973 | }, 1974 | "Scheme": { 1975 | "color": "#1e4aec", 1976 | "url": "https://github.com/trending?l=Scheme" 1977 | }, 1978 | "Scilab": { 1979 | "color": "#ca0f21", 1980 | "url": "https://github.com/trending?l=Scilab" 1981 | }, 1982 | "SCSS": { 1983 | "color": "#c6538c", 1984 | "url": "https://github.com/trending?l=SCSS" 1985 | }, 1986 | "sed": { 1987 | "color": "#64b970", 1988 | "url": "https://github.com/trending?l=sed" 1989 | }, 1990 | "Self": { 1991 | "color": "#0579aa", 1992 | "url": "https://github.com/trending?l=Self" 1993 | }, 1994 | "ShaderLab": { 1995 | "color": "#222c37", 1996 | "url": "https://github.com/trending?l=ShaderLab" 1997 | }, 1998 | "Shell": { 1999 | "color": "#89e051", 2000 | "url": "https://github.com/trending?l=Shell" 2001 | }, 2002 | "ShellCheck Config": { 2003 | "color": "#cecfcb", 2004 | "url": "https://github.com/trending?l=ShellCheck-Config" 2005 | }, 2006 | "ShellSession": { 2007 | "color": null, 2008 | "url": "https://github.com/trending?l=ShellSession" 2009 | }, 2010 | "Shen": { 2011 | "color": "#120F14", 2012 | "url": "https://github.com/trending?l=Shen" 2013 | }, 2014 | "Sieve": { 2015 | "color": null, 2016 | "url": "https://github.com/trending?l=Sieve" 2017 | }, 2018 | "Simple File Verification": { 2019 | "color": "#C9BFED", 2020 | "url": "https://github.com/trending?l=Simple-File-Verification" 2021 | }, 2022 | "Singularity": { 2023 | "color": "#64E6AD", 2024 | "url": "https://github.com/trending?l=Singularity" 2025 | }, 2026 | "Slash": { 2027 | "color": "#007eff", 2028 | "url": "https://github.com/trending?l=Slash" 2029 | }, 2030 | "Slice": { 2031 | "color": "#003fa2", 2032 | "url": "https://github.com/trending?l=Slice" 2033 | }, 2034 | "Slim": { 2035 | "color": "#2b2b2b", 2036 | "url": "https://github.com/trending?l=Slim" 2037 | }, 2038 | "Smali": { 2039 | "color": null, 2040 | "url": "https://github.com/trending?l=Smali" 2041 | }, 2042 | "Smalltalk": { 2043 | "color": "#596706", 2044 | "url": "https://github.com/trending?l=Smalltalk" 2045 | }, 2046 | "Smarty": { 2047 | "color": "#f0c040", 2048 | "url": "https://github.com/trending?l=Smarty" 2049 | }, 2050 | "Smithy": { 2051 | "color": "#c44536", 2052 | "url": "https://github.com/trending?l=Smithy" 2053 | }, 2054 | "SmPL": { 2055 | "color": "#c94949", 2056 | "url": "https://github.com/trending?l=SmPL" 2057 | }, 2058 | "SMT": { 2059 | "color": null, 2060 | "url": "https://github.com/trending?l=SMT" 2061 | }, 2062 | "Snakemake": { 2063 | "color": "#419179", 2064 | "url": "https://github.com/trending?l=Snakemake" 2065 | }, 2066 | "Solidity": { 2067 | "color": "#AA6746", 2068 | "url": "https://github.com/trending?l=Solidity" 2069 | }, 2070 | "SourcePawn": { 2071 | "color": "#f69e1d", 2072 | "url": "https://github.com/trending?l=SourcePawn" 2073 | }, 2074 | "SPARQL": { 2075 | "color": "#0C4597", 2076 | "url": "https://github.com/trending?l=SPARQL" 2077 | }, 2078 | "SQF": { 2079 | "color": "#3F3F3F", 2080 | "url": "https://github.com/trending?l=SQF" 2081 | }, 2082 | "SQL": { 2083 | "color": "#e38c00", 2084 | "url": "https://github.com/trending?l=SQL" 2085 | }, 2086 | "SQLPL": { 2087 | "color": "#e38c00", 2088 | "url": "https://github.com/trending?l=SQLPL" 2089 | }, 2090 | "Squirrel": { 2091 | "color": "#800000", 2092 | "url": "https://github.com/trending?l=Squirrel" 2093 | }, 2094 | "SRecode Template": { 2095 | "color": "#348a34", 2096 | "url": "https://github.com/trending?l=SRecode-Template" 2097 | }, 2098 | "Stan": { 2099 | "color": "#b2011d", 2100 | "url": "https://github.com/trending?l=Stan" 2101 | }, 2102 | "Standard ML": { 2103 | "color": "#dc566d", 2104 | "url": "https://github.com/trending?l=Standard-ML" 2105 | }, 2106 | "Starlark": { 2107 | "color": "#76d275", 2108 | "url": "https://github.com/trending?l=Starlark" 2109 | }, 2110 | "Stata": { 2111 | "color": "#1a5f91", 2112 | "url": "https://github.com/trending?l=Stata" 2113 | }, 2114 | "STL": { 2115 | "color": "#373b5e", 2116 | "url": "https://github.com/trending?l=STL" 2117 | }, 2118 | "StringTemplate": { 2119 | "color": "#3fb34f", 2120 | "url": "https://github.com/trending?l=StringTemplate" 2121 | }, 2122 | "Stylus": { 2123 | "color": "#ff6347", 2124 | "url": "https://github.com/trending?l=Stylus" 2125 | }, 2126 | "SubRip Text": { 2127 | "color": "#9e0101", 2128 | "url": "https://github.com/trending?l=SubRip-Text" 2129 | }, 2130 | "SugarSS": { 2131 | "color": "#2fcc9f", 2132 | "url": "https://github.com/trending?l=SugarSS" 2133 | }, 2134 | "SuperCollider": { 2135 | "color": "#46390b", 2136 | "url": "https://github.com/trending?l=SuperCollider" 2137 | }, 2138 | "Svelte": { 2139 | "color": "#ff3e00", 2140 | "url": "https://github.com/trending?l=Svelte" 2141 | }, 2142 | "SVG": { 2143 | "color": "#ff9900", 2144 | "url": "https://github.com/trending?l=SVG" 2145 | }, 2146 | "Sway": { 2147 | "color": "#dea584", 2148 | "url": "https://github.com/trending?l=Sway" 2149 | }, 2150 | "Swift": { 2151 | "color": "#F05138", 2152 | "url": "https://github.com/trending?l=Swift" 2153 | }, 2154 | "SWIG": { 2155 | "color": null, 2156 | "url": "https://github.com/trending?l=SWIG" 2157 | }, 2158 | "SystemVerilog": { 2159 | "color": "#DAE1C2", 2160 | "url": "https://github.com/trending?l=SystemVerilog" 2161 | }, 2162 | "Talon": { 2163 | "color": "#333333", 2164 | "url": "https://github.com/trending?l=Talon" 2165 | }, 2166 | "Tcl": { 2167 | "color": "#e4cc98", 2168 | "url": "https://github.com/trending?l=Tcl" 2169 | }, 2170 | "Tcsh": { 2171 | "color": null, 2172 | "url": "https://github.com/trending?l=Tcsh" 2173 | }, 2174 | "Terra": { 2175 | "color": "#00004c", 2176 | "url": "https://github.com/trending?l=Terra" 2177 | }, 2178 | "TeX": { 2179 | "color": "#3D6117", 2180 | "url": "https://github.com/trending?l=TeX" 2181 | }, 2182 | "Textile": { 2183 | "color": "#ffe7ac", 2184 | "url": "https://github.com/trending?l=Textile" 2185 | }, 2186 | "TextMate Properties": { 2187 | "color": "#df66e4", 2188 | "url": "https://github.com/trending?l=TextMate-Properties" 2189 | }, 2190 | "Thrift": { 2191 | "color": "#D12127", 2192 | "url": "https://github.com/trending?l=Thrift" 2193 | }, 2194 | "TI Program": { 2195 | "color": "#A0AA87", 2196 | "url": "https://github.com/trending?l=TI-Program" 2197 | }, 2198 | "TL-Verilog": { 2199 | "color": "#C40023", 2200 | "url": "https://github.com/trending?l=TL-Verilog" 2201 | }, 2202 | "TLA": { 2203 | "color": "#4b0079", 2204 | "url": "https://github.com/trending?l=TLA" 2205 | }, 2206 | "TOML": { 2207 | "color": "#9c4221", 2208 | "url": "https://github.com/trending?l=TOML" 2209 | }, 2210 | "TSQL": { 2211 | "color": "#e38c00", 2212 | "url": "https://github.com/trending?l=TSQL" 2213 | }, 2214 | "TSV": { 2215 | "color": "#237346", 2216 | "url": "https://github.com/trending?l=TSV" 2217 | }, 2218 | "TSX": { 2219 | "color": "#3178c6", 2220 | "url": "https://github.com/trending?l=TSX" 2221 | }, 2222 | "Turing": { 2223 | "color": "#cf142b", 2224 | "url": "https://github.com/trending?l=Turing" 2225 | }, 2226 | "Twig": { 2227 | "color": "#c1d026", 2228 | "url": "https://github.com/trending?l=Twig" 2229 | }, 2230 | "TXL": { 2231 | "color": "#0178b8", 2232 | "url": "https://github.com/trending?l=TXL" 2233 | }, 2234 | "TypeScript": { 2235 | "color": "#3178c6", 2236 | "url": "https://github.com/trending?l=TypeScript" 2237 | }, 2238 | "Unified Parallel C": { 2239 | "color": "#4e3617", 2240 | "url": "https://github.com/trending?l=Unified-Parallel-C" 2241 | }, 2242 | "Unity3D Asset": { 2243 | "color": "#222c37", 2244 | "url": "https://github.com/trending?l=Unity3D-Asset" 2245 | }, 2246 | "Unix Assembly": { 2247 | "color": null, 2248 | "url": "https://github.com/trending?l=Unix-Assembly" 2249 | }, 2250 | "Uno": { 2251 | "color": "#9933cc", 2252 | "url": "https://github.com/trending?l=Uno" 2253 | }, 2254 | "UnrealScript": { 2255 | "color": "#a54c4d", 2256 | "url": "https://github.com/trending?l=UnrealScript" 2257 | }, 2258 | "UrWeb": { 2259 | "color": "#ccccee", 2260 | "url": "https://github.com/trending?l=UrWeb" 2261 | }, 2262 | "V": { 2263 | "color": "#4f87c4", 2264 | "url": "https://github.com/trending?l=V" 2265 | }, 2266 | "Vala": { 2267 | "color": "#a56de2", 2268 | "url": "https://github.com/trending?l=Vala" 2269 | }, 2270 | "Valve Data Format": { 2271 | "color": "#f26025", 2272 | "url": "https://github.com/trending?l=Valve-Data-Format" 2273 | }, 2274 | "VBA": { 2275 | "color": "#867db1", 2276 | "url": "https://github.com/trending?l=VBA" 2277 | }, 2278 | "VBScript": { 2279 | "color": "#15dcdc", 2280 | "url": "https://github.com/trending?l=VBScript" 2281 | }, 2282 | "VCL": { 2283 | "color": "#148AA8", 2284 | "url": "https://github.com/trending?l=VCL" 2285 | }, 2286 | "Velocity Template Language": { 2287 | "color": "#507cff", 2288 | "url": "https://github.com/trending?l=Velocity-Template-Language" 2289 | }, 2290 | "Verilog": { 2291 | "color": "#b2b7f8", 2292 | "url": "https://github.com/trending?l=Verilog" 2293 | }, 2294 | "VHDL": { 2295 | "color": "#adb2cb", 2296 | "url": "https://github.com/trending?l=VHDL" 2297 | }, 2298 | "Vim Help File": { 2299 | "color": "#199f4b", 2300 | "url": "https://github.com/trending?l=Vim-Help-File" 2301 | }, 2302 | "Vim Script": { 2303 | "color": "#199f4b", 2304 | "url": "https://github.com/trending?l=Vim-Script" 2305 | }, 2306 | "Vim Snippet": { 2307 | "color": "#199f4b", 2308 | "url": "https://github.com/trending?l=Vim-Snippet" 2309 | }, 2310 | "Visual Basic .NET": { 2311 | "color": "#945db7", 2312 | "url": "https://github.com/trending?l=Visual-Basic-.NET" 2313 | }, 2314 | "Visual Basic 6.0": { 2315 | "color": "#2c6353", 2316 | "url": "https://github.com/trending?l=Visual-Basic-6.0" 2317 | }, 2318 | "Volt": { 2319 | "color": "#1F1F1F", 2320 | "url": "https://github.com/trending?l=Volt" 2321 | }, 2322 | "Vue": { 2323 | "color": "#41b883", 2324 | "url": "https://github.com/trending?l=Vue" 2325 | }, 2326 | "Vyper": { 2327 | "color": "#2980b9", 2328 | "url": "https://github.com/trending?l=Vyper" 2329 | }, 2330 | "WDL": { 2331 | "color": "#42f1f4", 2332 | "url": "https://github.com/trending?l=WDL" 2333 | }, 2334 | "Web Ontology Language": { 2335 | "color": "#5b70bd", 2336 | "url": "https://github.com/trending?l=Web-Ontology-Language" 2337 | }, 2338 | "WebAssembly": { 2339 | "color": "#04133b", 2340 | "url": "https://github.com/trending?l=WebAssembly" 2341 | }, 2342 | "WebAssembly Interface Type": { 2343 | "color": "#6250e7", 2344 | "url": "https://github.com/trending?l=WebAssembly-Interface-Type" 2345 | }, 2346 | "WebIDL": { 2347 | "color": null, 2348 | "url": "https://github.com/trending?l=WebIDL" 2349 | }, 2350 | "WGSL": { 2351 | "color": "#1a5e9a", 2352 | "url": "https://github.com/trending?l=WGSL" 2353 | }, 2354 | "Whiley": { 2355 | "color": "#d5c397", 2356 | "url": "https://github.com/trending?l=Whiley" 2357 | }, 2358 | "Wikitext": { 2359 | "color": "#fc5757", 2360 | "url": "https://github.com/trending?l=Wikitext" 2361 | }, 2362 | "Windows Registry Entries": { 2363 | "color": "#52d5ff", 2364 | "url": "https://github.com/trending?l=Windows-Registry-Entries" 2365 | }, 2366 | "wisp": { 2367 | "color": "#7582D1", 2368 | "url": "https://github.com/trending?l=wisp" 2369 | }, 2370 | "Witcher Script": { 2371 | "color": "#ff0000", 2372 | "url": "https://github.com/trending?l=Witcher-Script" 2373 | }, 2374 | "Wollok": { 2375 | "color": "#a23738", 2376 | "url": "https://github.com/trending?l=Wollok" 2377 | }, 2378 | "World of Warcraft Addon Data": { 2379 | "color": "#f7e43f", 2380 | "url": "https://github.com/trending?l=World-of-Warcraft-Addon-Data" 2381 | }, 2382 | "Wren": { 2383 | "color": "#383838", 2384 | "url": "https://github.com/trending?l=Wren" 2385 | }, 2386 | "X10": { 2387 | "color": "#4B6BEF", 2388 | "url": "https://github.com/trending?l=X10" 2389 | }, 2390 | "xBase": { 2391 | "color": "#403a40", 2392 | "url": "https://github.com/trending?l=xBase" 2393 | }, 2394 | "XC": { 2395 | "color": "#99DA07", 2396 | "url": "https://github.com/trending?l=XC" 2397 | }, 2398 | "XML": { 2399 | "color": "#0060ac", 2400 | "url": "https://github.com/trending?l=XML" 2401 | }, 2402 | "XML Property List": { 2403 | "color": "#0060ac", 2404 | "url": "https://github.com/trending?l=XML-Property-List" 2405 | }, 2406 | "Xojo": { 2407 | "color": "#81bd41", 2408 | "url": "https://github.com/trending?l=Xojo" 2409 | }, 2410 | "Xonsh": { 2411 | "color": "#285EEF", 2412 | "url": "https://github.com/trending?l=Xonsh" 2413 | }, 2414 | "XProc": { 2415 | "color": null, 2416 | "url": "https://github.com/trending?l=XProc" 2417 | }, 2418 | "XQuery": { 2419 | "color": "#5232e7", 2420 | "url": "https://github.com/trending?l=XQuery" 2421 | }, 2422 | "XS": { 2423 | "color": null, 2424 | "url": "https://github.com/trending?l=XS" 2425 | }, 2426 | "XSLT": { 2427 | "color": "#EB8CEB", 2428 | "url": "https://github.com/trending?l=XSLT" 2429 | }, 2430 | "Xtend": { 2431 | "color": "#24255d", 2432 | "url": "https://github.com/trending?l=Xtend" 2433 | }, 2434 | "Yacc": { 2435 | "color": "#4B6C4B", 2436 | "url": "https://github.com/trending?l=Yacc" 2437 | }, 2438 | "YAML": { 2439 | "color": "#cb171e", 2440 | "url": "https://github.com/trending?l=YAML" 2441 | }, 2442 | "YARA": { 2443 | "color": "#220000", 2444 | "url": "https://github.com/trending?l=YARA" 2445 | }, 2446 | "YASnippet": { 2447 | "color": "#32AB90", 2448 | "url": "https://github.com/trending?l=YASnippet" 2449 | }, 2450 | "Yul": { 2451 | "color": "#794932", 2452 | "url": "https://github.com/trending?l=Yul" 2453 | }, 2454 | "ZAP": { 2455 | "color": "#0d665e", 2456 | "url": "https://github.com/trending?l=ZAP" 2457 | }, 2458 | "Zeek": { 2459 | "color": null, 2460 | "url": "https://github.com/trending?l=Zeek" 2461 | }, 2462 | "ZenScript": { 2463 | "color": "#00BCD1", 2464 | "url": "https://github.com/trending?l=ZenScript" 2465 | }, 2466 | "Zephir": { 2467 | "color": "#118f9e", 2468 | "url": "https://github.com/trending?l=Zephir" 2469 | }, 2470 | "Zig": { 2471 | "color": "#ec915c", 2472 | "url": "https://github.com/trending?l=Zig" 2473 | }, 2474 | "ZIL": { 2475 | "color": "#dc75e5", 2476 | "url": "https://github.com/trending?l=ZIL" 2477 | }, 2478 | "Zimpl": { 2479 | "color": "#d67711", 2480 | "url": "https://github.com/trending?l=Zimpl" 2481 | } 2482 | } 2483 | -------------------------------------------------------------------------------- /src/assets/guide_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ho3einWave/personal-website-react/a6e5165d1e9e96254d0c486a78d3ede6ec997e35/src/assets/guide_1.png -------------------------------------------------------------------------------- /src/components/DiscordCard.jsx: -------------------------------------------------------------------------------- 1 | import guide from "../assets/guide_1.png"; 2 | import { useThemeStore } from "../contexts/theme"; 3 | import { getFlags } from "../utils/getFlags"; 4 | import { Badges } from "../utils/badgesEncoded"; 5 | const DiscordCard = ({ info }) => { 6 | const { discord_user, activities, discord_status } = info; 7 | const { id, avatar, username, display_name } = discord_user; 8 | const flags = getFlags(discord_user.public_flags); 9 | const { mode } = useThemeStore(); 10 | console.log(info); 11 | return ( 12 |
13 | 18 |
19 | 26 |
39 |
40 |
41 |

42 | {display_name}{" "} 43 |
44 | {flags.map((v) => { 45 | return ( 46 | 56 | ); 57 | })} 58 |
59 |

60 |

@{username}

61 |
62 | {activities.length > 0 && activities[0].name === "Code" ? ( 63 |
64 |
65 | 79 | 93 |
94 |
95 |
{activities[0].name}
96 | {activities[0].details ? ( 97 |
{activities[0].details.slice(0, 31)}...
98 | ) : ( 99 | "" 100 | )} 101 | {activities[0].state ? ( 102 |
{activities[0].state.slice(0, 31)}...
103 | ) : ( 104 | "" 105 | )} 106 |
107 |
108 | ) : ( 109 | "" 110 | )} 111 |
112 | ); 113 | }; 114 | 115 | export default DiscordCard; 116 | -------------------------------------------------------------------------------- /src/components/Footer.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const Footer = () => { 4 | return ( 5 |
6 |
7 | 8 |
9 |

Hosein Baseri

10 |

11 | Software Engineer • {new Date().getFullYear()} 12 |

13 |

me@hoseinwave.ir

14 |
15 |
16 | ); 17 | }; 18 | 19 | export default Footer; 20 | -------------------------------------------------------------------------------- /src/components/NavBar.jsx: -------------------------------------------------------------------------------- 1 | import { useState, useEffect } from "react"; 2 | 3 | import { AiOutlineMenu } from "react-icons/ai"; 4 | import { BsFillSunFill, BsMoon } from "react-icons/bs"; 5 | 6 | import { Link } from "react-router-dom"; 7 | import { useThemeStore } from "../contexts/theme"; 8 | const NavBar = () => { 9 | const [menuOpen, setMenuOpen] = useState(false); 10 | const { mode, setMode } = useThemeStore(); 11 | const changeMode = () => { 12 | mode === "dark" ? setMode("light") : setMode("dark"); 13 | }; 14 | useEffect(() => { 15 | if (mode === "light") { 16 | document.documentElement.style.filter = "invert(100%) hue-rotate(180deg)"; 17 | } else { 18 | document.documentElement.style.filter = "invert(0) hue-rotate(0deg)"; 19 | } 20 | }, [mode]); 21 | const menuOnclick = () => { 22 | document.body.style.overflow = menuOpen ? "scroll" : "hidden"; 23 | setMenuOpen((e) => { 24 | return !e; 25 | }); 26 | }; 27 | return ( 28 | <> 29 |
30 |
35 |
36 |
37 | 38 |
39 |
40 | {mode === "dark" ? ( 41 | 42 | ) : ( 43 | 44 | )} 45 |
46 |
47 |
48 |
49 | 53 | / 54 | 55 | 59 | /contact 60 | 61 | 65 | /blog 66 | 67 |
68 |
69 | {mode === "dark" ? ( 70 | 71 | ) : ( 72 | 73 | )} 74 |
75 |
76 |
77 |
82 |
83 | 84 | /HOME 85 | 86 | 87 | /CONTACT 88 | 89 | /BLOG 90 |
91 |
92 |
93 | 94 | ); 95 | }; 96 | 97 | export default NavBar; 98 | -------------------------------------------------------------------------------- /src/components/ProjectsCard.jsx: -------------------------------------------------------------------------------- 1 | import { FaGlobe, FaGithub } from "react-icons/fa6"; 2 | import { RiOpenSourceFill } from "react-icons/ri"; 3 | 4 | import { Swiper, SwiperSlide } from "swiper/react"; 5 | import "swiper/css"; 6 | import "swiper/css/effect-flip"; 7 | import { motion } from "framer-motion"; 8 | // Import Swiper styles 9 | import "swiper/css"; 10 | import "swiper/css/effect-flip"; 11 | import { EffectFlip } from "swiper/modules"; 12 | const ProjectsCard = ({ 13 | name, 14 | type, 15 | images, 16 | description, 17 | link, 18 | active, 19 | opensource, 20 | github_link, 21 | tags, 22 | technologies, 23 | }) => { 24 | return ( 25 | <> 26 | 36 |
37 |
38 | 46 | {images.map((image, idx) => ( 47 | 48 | 52 | 53 | ))} 54 | 55 |

56 | {name} 57 | {opensource ? ( 58 | 59 | ) : ( 60 | "" 61 | )} 62 |
68 | {active ? "Active" : "DeActive"} 69 |
70 |

71 |
{description.slice(0, 80)}
72 |
73 | Positions:{" "} 74 | {tags.map((item) => ( 75 | 76 | {item} 77 | 78 | ))} 79 |
80 |
81 | Technologies:{" "} 82 | 83 | {technologies.map((item) => ( 84 | 85 | {item} 86 | 87 | ))} 88 | 89 |
90 |
91 | 95 | 96 | 97 | 98 | 107 | 108 | 109 |
110 |
111 |
112 | 113 | ); 114 | }; 115 | 116 | export default ProjectsCard; 117 | -------------------------------------------------------------------------------- /src/components/RepoCard.jsx: -------------------------------------------------------------------------------- 1 | import RepoColors from "../assets/colors.json"; 2 | 3 | import { BsStarFill } from "react-icons/bs"; 4 | import { AiOutlineFork } from "react-icons/ai"; 5 | 6 | import { motion } from "framer-motion"; 7 | 8 | const RepoCard = ({ 9 | full_name, 10 | description, 11 | language, 12 | forks, 13 | stargazers_count, 14 | }) => { 15 | return ( 16 | <> 17 | 27 |
28 |
29 | 34 | {full_name} 35 | 36 |

37 | {description} 38 |

39 |
40 |
41 |
{" "} 47 | {language} 48 |
49 |
50 | {stargazers_count} 51 |
52 |
53 | {forks} 54 |
55 |
56 |
57 |
58 | 59 | ); 60 | }; 61 | 62 | export default RepoCard; 63 | -------------------------------------------------------------------------------- /src/components/SocialCard.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { FiExternalLink } from "react-icons/fi"; 3 | const SocialCard = ({ title, link, icon }) => { 4 | return ( 5 | 9 | {icon} 10 |

{title}

11 | 12 |
13 | ); 14 | }; 15 | 16 | export default SocialCard; 17 | -------------------------------------------------------------------------------- /src/components/ToolTip.jsx: -------------------------------------------------------------------------------- 1 | export default function Tooltip({ message, children }) { 2 | return ( 3 |
4 | {children} 5 | 6 | {message} 7 | 8 |
9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /src/contexts/theme.jsx: -------------------------------------------------------------------------------- 1 | import { create } from "zustand"; 2 | 3 | export const useThemeStore = create()((set) => ({ 4 | mode: window.localStorage.getItem("theme") || "dark", 5 | setMode: (mode) => { 6 | window.localStorage.setItem("theme", mode); 7 | set({ mode }); 8 | }, 9 | })); 10 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | :root { 6 | --primary: #0080f5; 7 | --box-glass: rgba(54, 72, 105, 0.1); 8 | --scrollbar-bg: #212529; 9 | --scrollbar-thumb: #ffffff9f; 10 | } 11 | 12 | ::-webkit-scrollbar { 13 | width: 4px; 14 | } 15 | 16 | ::-webkit-scrollbar-track { 17 | background: var(--scrollbar-bg); 18 | } 19 | 20 | ::-webkit-scrollbar-thumb { 21 | background: var(--scrollbar-thumb); 22 | border-radius: 10px; 23 | } 24 | 25 | .heading-effect::before { 26 | content: ""; 27 | position: absolute; 28 | width: calc(100% + 1rem); 29 | right: -0.5rem; 30 | bottom: 15%; 31 | height: 1rem; 32 | background: var(--primary); 33 | transform: translateX(); 34 | z-index: -1; 35 | } 36 | 37 | #cards:hover > .card > .card-border { 38 | opacity: 1; 39 | } 40 | 41 | .card { 42 | background-color: rgba(255, 255, 255, 0.1); 43 | border-radius: 10px; 44 | cursor: pointer; 45 | position: relative; 46 | } 47 | 48 | .card:hover::before { 49 | opacity: 1; 50 | } 51 | 52 | .card::before, 53 | .card > .card-border { 54 | border-radius: inherit; 55 | content: ""; 56 | height: 100%; 57 | left: 0px; 58 | position: absolute; 59 | opacity: 0; 60 | transition: opacity 300ms; 61 | top: 0px; 62 | width: 100%; 63 | z-index: 2; 64 | } 65 | 66 | .card::before { 67 | background: radial-gradient( 68 | 800px circle at var(--mouse-x) var(--mouse-y), 69 | rgba(255, 255, 255, 0.06), 70 | transparent 40% 71 | ); 72 | z-index: 3; 73 | pointer-events: none; 74 | } 75 | 76 | .card > .card-border { 77 | background: radial-gradient( 78 | 400px circle at var(--mouse-x) var(--mouse-y), 79 | rgba(255, 255, 255, 0.3), 80 | transparent 40% 81 | ); 82 | z-index: 1; 83 | } 84 | 85 | .card > .card-content { 86 | background-color: #1e1e1e; 87 | border-radius: inherit; 88 | height: calc(100% - 2px); 89 | margin: 1px; 90 | position: relative; 91 | width: calc(100% - 2px); 92 | z-index: 2; 93 | } 94 | .bg-grid { 95 | background-size: 100px 100px; 96 | background-image: linear-gradient( 97 | to right, 98 | rgb(35, 35, 35) 1px, 99 | transparent 1px 100 | ), 101 | linear-gradient(to bottom, rgb(35, 35, 35) 1px, transparent 1px); 102 | background-attachment: fixed; 103 | } 104 | 105 | .spinner { 106 | width: 70.4px; 107 | height: 70.4px; 108 | --clr: var(--primary); 109 | --clr-alpha: var(--box-glass); 110 | animation: spinner 1.6s infinite ease; 111 | transform-style: preserve-3d; 112 | } 113 | 114 | .spinner > div { 115 | background-color: var(--clr-alpha); 116 | height: 100%; 117 | position: absolute; 118 | width: 100%; 119 | border: 3.5px solid var(--clr); 120 | } 121 | 122 | .spinner div:nth-of-type(1) { 123 | transform: translateZ(-35.2px) rotateY(180deg); 124 | } 125 | 126 | .spinner div:nth-of-type(2) { 127 | transform: rotateY(-270deg) translateX(50%); 128 | transform-origin: top right; 129 | } 130 | 131 | .spinner div:nth-of-type(3) { 132 | transform: rotateY(270deg) translateX(-50%); 133 | transform-origin: center left; 134 | } 135 | 136 | .spinner div:nth-of-type(4) { 137 | transform: rotateX(90deg) translateY(-50%); 138 | transform-origin: top center; 139 | } 140 | 141 | .spinner div:nth-of-type(5) { 142 | transform: rotateX(-90deg) translateY(50%); 143 | transform-origin: bottom center; 144 | } 145 | 146 | .spinner div:nth-of-type(6) { 147 | transform: translateZ(35.2px); 148 | } 149 | 150 | @keyframes spinner { 151 | 0% { 152 | transform: rotate(45deg) rotateX(-25deg) rotateY(25deg); 153 | } 154 | 155 | 50% { 156 | transform: rotate(45deg) rotateX(-385deg) rotateY(25deg); 157 | } 158 | 159 | 100% { 160 | transform: rotate(45deg) rotateX(-385deg) rotateY(385deg); 161 | } 162 | } 163 | 164 | .loader { 165 | --eye: #ffffff; 166 | position: relative; 167 | display: flex; 168 | align-items: center; 169 | justify-content: center; 170 | } 171 | 172 | .loader::before { 173 | content: ""; 174 | position: absolute; 175 | top: 0; 176 | left: 0; 177 | transform: translate(-50%, -50%); 178 | border: 5px solid var(--eye); 179 | border-radius: 100%; 180 | animation: translate-keyframes 2s infinite linear; 181 | } 182 | 183 | .loader span { 184 | position: absolute; 185 | width: 40px; 186 | height: 40px; 187 | border-radius: 100%; 188 | border-top: 12px solid var(--eye); 189 | border-bottom: 5px solid var(--eye); 190 | outline: 2px solid var(--eye); 191 | } 192 | 193 | .loader span { 194 | animation: rotate-keyframes 2s infinite linear; 195 | } 196 | 197 | @keyframes translate-keyframes { 198 | 0% { 199 | transform: translate(-100%, -50%); 200 | } 201 | 202 | 95% { 203 | transform: translate(50%, -50%); 204 | } 205 | 206 | 96% { 207 | transform: translate(-50%, -50%); 208 | } 209 | 210 | 100% { 211 | transform: translate(-100%, -50%); 212 | } 213 | } 214 | 215 | @keyframes rotate-keyframes { 216 | 90% { 217 | height: 40px; 218 | } 219 | 220 | 95% { 221 | height: 0px; 222 | } 223 | 224 | 100% { 225 | height: 40px; 226 | } 227 | } 228 | -------------------------------------------------------------------------------- /src/main.jsx: -------------------------------------------------------------------------------- 1 | import React, { Suspense } from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | import "./index.css"; 4 | import router from "./routes.jsx"; 5 | import { RouterProvider } from "react-router-dom"; 6 | import Loading from "./pages/Loading"; 7 | ReactDOM.createRoot(document.getElementById("root")).render( 8 | 9 | }> 10 | 11 | 12 | 13 | ); 14 | -------------------------------------------------------------------------------- /src/pages/Contact.jsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useState, Suspense } from "react"; 2 | import toast, { Toaster } from "react-hot-toast"; 3 | import NavBar from "../components/NavBar"; 4 | import SocialCard from "../components/SocialCard"; 5 | import Footer from "../components/Footer"; 6 | import ReCAPTCHA from "react-google-recaptcha"; 7 | import { RiSendPlane2Fill } from "react-icons/ri"; 8 | import constants from "../utils/constants"; 9 | import { useThemeStore } from "../contexts/theme"; 10 | import axios from "axios"; 11 | const Contact = () => { 12 | const { mode } = useThemeStore(); 13 | const [time, setTime] = useState(); 14 | const [mystate, setMystate] = useState(""); 15 | useEffect(() => { 16 | const date = new Date(); 17 | const timezone = constants.time_zone; 18 | const formattedTime = date.toLocaleString("en-US", { 19 | timeZone: timezone, 20 | hour: "2-digit", 21 | minute: "2-digit", 22 | hour12: true, 23 | }); 24 | const hour = date.toLocaleString("en-US", { 25 | timeZone: timezone, 26 | hour: "numeric", 27 | }); 28 | 29 | hour > 8 && hour < 22 ? setMystate("awake") : setMystate("sleeping"); 30 | setTime(formattedTime); 31 | setInterval(() => { 32 | const date = new Date(); 33 | 34 | const timezone = constants.time_zone; 35 | const formattedTime = date.toLocaleString("en-US", { 36 | timeZone: timezone, 37 | hour: "2-digit", 38 | minute: "2-digit", 39 | hour12: true, 40 | }); 41 | const hour = date.toLocaleString("en-US", { 42 | timeZone: timezone, 43 | hour: "numeric", 44 | }); 45 | hour > 8 && hour < 22 46 | ? setMystate("awake") 47 | : setMystate("sleeping"); 48 | setTime(formattedTime); 49 | }, 60 * 1000); 50 | }, []); 51 | 52 | const [name, setName] = useState(""); 53 | const [email, setEmail] = useState(""); 54 | const [message, setMessage] = useState(""); 55 | const [captcha, setCaptcha] = useState(""); 56 | const sendMessage = () => { 57 | const emailPattern = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i; 58 | 59 | if (!emailPattern.test(email)) { 60 | toast.error("Please enter a valid email", { 61 | style: { 62 | borderRadius: "10px", 63 | background: "#1f1f1f", 64 | color: "#fff", 65 | }, 66 | }); 67 | return; 68 | } else if (name <= 3 || name >= 32) { 69 | toast.error("Name field should be above 3 or below 32 letters", { 70 | style: { 71 | borderRadius: "10px", 72 | background: "#1f1f1f", 73 | color: "#fff", 74 | }, 75 | }); 76 | return; 77 | } else if (message <= 50 || message >= 300) { 78 | toast.error( 79 | "Message field should be above 50 or below 300 letters", 80 | { 81 | style: { 82 | borderRadius: "10px", 83 | background: "#1f1f1f", 84 | color: "#fff", 85 | }, 86 | } 87 | ); 88 | return; 89 | } else if (!captcha?.length > 0) { 90 | toast.error("Please solve the captcha", { 91 | style: { 92 | borderRadius: "10px", 93 | background: "#1f1f1f", 94 | color: "#fff", 95 | }, 96 | }); 97 | return; 98 | } 99 | toast.promise( 100 | axios.post(`.netlify/functions/contact`, { 101 | name, 102 | email, 103 | message, 104 | captcha, 105 | }), 106 | { 107 | loading: "Sending...", 108 | success: "Message Sent!", 109 | error: (err) => { 110 | if (err.response.status === 429) { 111 | return "You're on a cooldown please wait 10m!"; 112 | } else { 113 | return "Something went wrong!"; 114 | } 115 | }, 116 | }, 117 | { 118 | style: { 119 | borderRadius: "10px", 120 | background: "#1f1f1f", 121 | color: "#fff", 122 | }, 123 | } 124 | ); 125 | }; 126 | return ( 127 | Fuck Wait a sec}> 128 |
129 | 130 |
131 |

Let's Talk 💬

132 |

133 | It's currently{" "} 134 | {time} for 135 | me, so I'm probably{" "} 136 | {mystate}. 137 | I'll get back to you soon. 138 |

139 |
140 |
141 |
142 | {constants.contact_socials.map((item, idx) => { 143 | return ; 144 | })} 145 |
146 |
147 |
148 |
149 | 155 | setName(e.target.value)} 161 | /> 162 |
163 |
164 | 170 | setEmail(e.target.value)} 176 | /> 177 |
178 |
179 | 185 | 193 |
199 | setCaptcha(e)} 202 | /> 203 |
204 |
205 | 211 |
212 |
213 |
214 |
215 |
216 |
219 |
220 | ); 221 | }; 222 | 223 | export default Contact; 224 | -------------------------------------------------------------------------------- /src/pages/Home.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from "react"; 2 | import { useLanyard } from "react-use-lanyard"; 3 | import { TypeAnimation } from "react-type-animation"; 4 | import { motion } from "framer-motion"; 5 | 6 | import NavBar from "../components/NavBar"; 7 | import Tooltip from "../components/ToolTip"; 8 | import RepoCard from "../components/RepoCard"; 9 | import DiscordCard from "../components/DiscordCard"; 10 | 11 | import { Link } from "react-router-dom"; 12 | import { ImLocation } from "react-icons/im"; 13 | import Footer from "../components/Footer"; 14 | import avatar from "../assets/avatar.jpg"; 15 | import constants from "../utils/constants"; 16 | import axios from "axios"; 17 | import { useThemeStore } from "../contexts/theme"; 18 | import ProjectsCard from "../components/ProjectsCard"; 19 | const Home = () => { 20 | const { mode } = useThemeStore(); 21 | const [repos, setRepos] = useState([]); 22 | const [stars, setStars] = useState(0); 23 | const [forks, setForks] = useState(0); 24 | const [top4, setTop4] = useState([]); 25 | const [projects, setProjects] = useState([]); 26 | 27 | const { loading, status: discord_data /*, websocket */ } = useLanyard({ 28 | userId: constants.discord_id, 29 | socket: true, 30 | }); 31 | useEffect(() => { 32 | const GetRepos = async () => { 33 | const { data } = await axios.get( 34 | `https://api.github.com/users/${constants.github_username}/repos` 35 | ); 36 | setRepos(data); 37 | }; 38 | 39 | const GetProjects = async () => { 40 | const { data } = await axios.get( 41 | `${constants.api_endpoint}/projects` 42 | ); 43 | setProjects(data); 44 | }; 45 | GetProjects(); 46 | GetRepos(); 47 | // 48 | document.getElementById("cards").onmousemove = (e) => { 49 | for (const card of document.getElementsByClassName("card")) { 50 | const rect = card.getBoundingClientRect(), 51 | x = e.clientX - rect.left, 52 | y = e.clientY - rect.top; 53 | 54 | card.style.setProperty("--mouse-x", `${x}px`); 55 | card.style.setProperty("--mouse-y", `${y}px`); 56 | } 57 | }; 58 | }, []); 59 | 60 | useEffect(() => { 61 | if (repos.length) { 62 | const myrepo = repos.filter((e) => !e.fork); 63 | const starsRepo = myrepo.reduce((accumulator, currentValue) => { 64 | return accumulator + currentValue.stargazers_count; 65 | }, 0); 66 | setStars(starsRepo); 67 | const forksRepo = myrepo.reduce((accumulator, currentValue) => { 68 | return accumulator + currentValue.forks; 69 | }, 0); 70 | setForks(forksRepo); 71 | const top4Repos = myrepo 72 | .sort((a, b) => b.stargazers_count - a.stargazers_count) 73 | .slice(0, 4); 74 | setTop4(top4Repos); 75 | } 76 | }, [repos]); 77 | return ( 78 |
81 | 82 | 83 |
84 |
85 |
86 | 93 |
107 |
108 |
109 | {constants.top_page_socials.map((item, idx) => { 110 | return ( 111 | 117 | {item.icon} 118 | 119 | ); 120 | })} 121 |
122 |

123 | Hi, I’m Hosein 124 |

125 |

131 | 141 |

142 |

143 | I’m a {new Date().getFullYear() - constants.birth_year}{" "} 144 | year old front-end engineer based in{" "} 145 | 150 | {" "} 151 | {constants.location} 152 | 153 |

154 | 158 | CONTACT ME 159 | 160 |
161 | 167 |

168 | About Me 169 |

170 |
171 |

172 | I'm a self-taught software engineer and designer 173 | from Shiraz, Iran. Specializing in MERN stack 174 | development, I create robust web applications. With 175 | a fusion of technical expertise and design 176 | sensibilities, I craft visually stunning interfaces 177 | for exceptional user experiences. 178 |

179 |
180 | {!loading ? ( 181 | 182 | ) : ( 183 | "" 184 | )} 185 |
186 |
187 |
188 |

189 | My Socials 190 |

191 | {constants.public_socials.map((item, idx) => { 192 | return ( 193 | 199 | {item.icon} 200 | 201 | ); 202 | })} 203 |
204 |
205 | 211 |

212 | Technologies 213 |

214 |

215 | I use a wide range of tools to tackle each hurdle in the 216 | most efficient manner possible. 217 |

218 |
219 | {constants.techs.map((item, idx) => { 220 | return ( 221 | 222 |
223 | {item.icon} 224 |
225 |
226 | ); 227 | })} 228 |
229 |
230 | 236 |

237 | Projects 238 |

239 |
240 | {projects.projects 241 | ? projects.projects.map((item) => ( 242 | 243 | )) 244 | : "Loading"} 245 |
246 |

247 | In my free time, I enjoy creating open source projects 248 | on{" "} 249 | 253 | GitHub 254 | 255 | , so I can learn from others and share what I know. In 256 | total, all of my open sourced projects have earnt me{" "} 257 | {stars} stars on GitHub, and{" "} 258 | {forks} forks. Below are some of my 259 | most popular repositories. 260 |

261 |
265 | {top4.map((item, idx) => { 266 | return ; 267 | })} 268 |
269 |
270 |
271 | 275 | CONTACT ME 276 | 277 |
278 |
280 |
281 | ); 282 | }; 283 | 284 | export default Home; 285 | -------------------------------------------------------------------------------- /src/pages/Loading.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { useThemeStore } from "../contexts/theme"; 3 | const Loading = () => { 4 | const { mode } = useThemeStore(); 5 | return ( 6 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | ); 21 | }; 22 | 23 | export default Loading; 24 | -------------------------------------------------------------------------------- /src/pages/RedirectAnd404.jsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react"; 2 | import redirects from "../utils/redirect.json"; 3 | import { useLocation, Link } from "react-router-dom"; 4 | import { TypeAnimation } from "react-type-animation"; 5 | 6 | const RedirectAnd404 = () => { 7 | const location = useLocation(); 8 | const path = location.pathname.split("/").join(""); 9 | const isfound = redirects.filter((e) => { 10 | return e.path === path; 11 | })[0]; 12 | const [counter, setCounter] = useState(4); 13 | useEffect(() => { 14 | if (isfound) { 15 | document.title = isfound.title; 16 | if (counter > 0) { 17 | setTimeout(() => { 18 | setCounter(counter - 1); 19 | }, 1000); 20 | } 21 | if (counter === 0) { 22 | window.location.replace(isfound.url); 23 | } 24 | } 25 | }, [counter, isfound]); 26 | 27 | return ( 28 |
29 | {isfound ? ( 30 |
31 |
32 |
33 | 34 |
35 |
36 |

Redirecting in {counter}

37 |

38 | redirecting to{" "} 39 | 40 | {isfound.url} 41 | 42 |

43 |
44 | ) : ( 45 | <> 46 |

47 | 53 |

54 | 58 | take me home 59 | 60 | 61 | )}{" "} 62 |
63 |
64 | ); 65 | }; 66 | 67 | export default RedirectAnd404; 68 | -------------------------------------------------------------------------------- /src/routes.jsx: -------------------------------------------------------------------------------- 1 | import { createBrowserRouter } from "react-router-dom"; 2 | import React, { lazy, Suspense } from "react"; 3 | import RedirectAnd404 from "./pages/RedirectAnd404"; 4 | const Home = lazy(() => import("./pages/Home")); 5 | const Contact = lazy(() => import("./pages/Contact")); 6 | 7 | const router = createBrowserRouter([ 8 | { 9 | path: "/", 10 | element: , 11 | }, 12 | { 13 | path: "/contact", 14 | element: , 15 | }, 16 | { 17 | path: "*", 18 | element: , 19 | }, 20 | ]); 21 | 22 | export default router; 23 | -------------------------------------------------------------------------------- /src/utils/constants.jsx: -------------------------------------------------------------------------------- 1 | import { 2 | BsGithub, 3 | BsTelegram, 4 | BsLinkedin, 5 | BsInstagram, 6 | BsDiscord, 7 | BsTwitter, 8 | BsGit, 9 | BsMarkdown, 10 | } from "react-icons/bs"; 11 | import { IoLogoElectron, IoMail } from "react-icons/io5"; 12 | import { 13 | DiReact, 14 | DiNodejsSmall, 15 | DiMongodb, 16 | DiPython, 17 | DiMysql, 18 | DiLinux, 19 | } from "react-icons/di"; 20 | import { 21 | SiTailwindcss, 22 | SiJavascript, 23 | SiVisualstudiocode, 24 | SiRaspberrypi, 25 | SiGithub, 26 | SiGnubash, 27 | SiExpress, 28 | SiDiscord, 29 | SiNextdotjs, 30 | SiTypescript, 31 | SiBun, 32 | } from "react-icons/si"; 33 | import { FaSass } from "react-icons/fa"; 34 | export default { 35 | top_page_socials: [ 36 | { 37 | link: "https://github.com/ho3einwave", 38 | icon: , 39 | }, 40 | { 41 | link: "https://t.me/HoseinBaseri", 42 | icon: , 43 | }, 44 | { 45 | link: "https://www.linkedin.com/in/hosein-baseri-ba2232238/", 46 | icon: , 47 | }, 48 | ], 49 | public_socials: [ 50 | { 51 | link: "https://instagram.com/ho3einwave_", 52 | icon: , 53 | }, 54 | { 55 | link: "https://discord.gg/uhycdqDn", 56 | icon: , 57 | }, 58 | { 59 | link: "https://twitter.com/H03EiNWAVE", 60 | icon: , 61 | }, 62 | ], 63 | techs: [ 64 | { 65 | name: "Next.js", 66 | icon: , 67 | }, 68 | { 69 | name: "React.js", 70 | icon: , 71 | }, 72 | { 73 | name: "Electron", 74 | icon: , 75 | }, 76 | { 77 | name: "TailwindCSS", 78 | icon: , 79 | }, 80 | { 81 | name: "Sass", 82 | icon: , 83 | }, 84 | { 85 | name: "Javascript", 86 | icon: , 87 | }, 88 | { 89 | name: "Typescript", 90 | icon: , 91 | }, 92 | { 93 | name: "VsCode", 94 | icon: , 95 | }, 96 | 97 | { 98 | name: "NodeJs", 99 | icon: , 100 | }, 101 | { 102 | name: "Bun", 103 | icon: , 104 | }, 105 | { 106 | name: "Express.js", 107 | icon: , 108 | }, 109 | { 110 | name: "MongoDB", 111 | icon: , 112 | }, 113 | 114 | { 115 | name: "Python", 116 | icon: , 117 | }, 118 | { 119 | name: "MySQL", 120 | icon: , 121 | }, 122 | { 123 | name: "Git", 124 | icon: , 125 | }, 126 | { 127 | name: "Github", 128 | icon: , 129 | }, 130 | { 131 | name: "MarkDown", 132 | icon: , 133 | }, 134 | { 135 | name: "Linux", 136 | icon: , 137 | }, 138 | { 139 | name: "Bash", 140 | icon: , 141 | }, 142 | { 143 | name: "RaspberryPi", 144 | icon: , 145 | }, 146 | { 147 | name: "DiscordAPI", 148 | icon: , 149 | }, 150 | ], 151 | contact_socials: [ 152 | { 153 | title: "@ho3einwave_", 154 | icon: , 155 | link: "https://discord.gg/humuKHKTgm", 156 | }, 157 | { 158 | title: "@ho3einwave", 159 | icon: , 160 | link: "https://t.me/HoseinBaseri", 161 | }, 162 | { 163 | title: "me@hoseinwave.ir", 164 | icon: , 165 | link: "mailto:me@hoseinwave.ir", 166 | }, 167 | ], 168 | api_endpoint: "https://api.hoseinwave.ir/v1", 169 | github_url: "https://github.com/ho3einwave", 170 | github_username: "Ho3einWave", 171 | discord_id: "743786737901240362", 172 | birth_year: 2003, 173 | location: "Shiraz, Iran", 174 | time_zone: "Asia/Tehran", 175 | recaptcha_key: "6LdS9ScnAAAAAI6BsnxbI2nIdTT3QzD7nhGXI-aU", 176 | hcaptcha_key: "ba445486-b7e0-47a3-be93-c7309e4614b3", 177 | map_location_url: 178 | "https://www.google.com/maps/place/Shiraz,+Fars+Province,+Iran/@29.6415648,52.5317723,11z/data=!4m6!3m5!1s0x3fb20d0c8c85f2e3:0x6d0c5b8aef6b4cf6!8m2!3d29.5926119!4d52.5835646!16zL20vMDl3YzU", 179 | intro_text_animation: [ 180 | "a front-end dev 🎉", 181 | 1000, 182 | "a network engineering student 🌐", 183 | 1000, 184 | "a gamer 🎮", 185 | 1000, 186 | ], 187 | }; 188 | -------------------------------------------------------------------------------- /src/utils/getFlags.jsx: -------------------------------------------------------------------------------- 1 | export const getFlags = (flag) => { 2 | let flags = []; 3 | 4 | if (flag & 1) flags.push("Discord_Employee"); // 1 << 0 5 | if (flag & 262144) flags.push("Discord_Certified_Moderator"); // 1 << 18 6 | if (flag & 2) flags.push("Partnered_Server_Owner"); // 1 << 1 7 | if (flag & 4) flags.push("HypeSquad_Events"); // 1 << 2 8 | if (flag & 64) flags.push("House_Bravery"); // 1 << 6 9 | if (flag & 128) flags.push("House_Brilliance"); // 1 << 7 10 | if (flag & 256) flags.push("House_Balance"); // 1 << 8 11 | if (flag & 8) flags.push("Bug_Hunter_Level_1"); // 1 << 3 12 | if (flag & 16384) flags.push("Bug_Hunter_Level_2"); // 1 << 14 13 | if (flag & 4194304) flags.push("Active_Developer"); // 1 << 22 14 | if (flag & 131072) flags.push("Early_Verified_Bot_Developer"); // 1 << 17 15 | if (flag & 512) flags.push("Early_Supporter"); // 1 << 9 16 | 17 | return flags; 18 | }; 19 | -------------------------------------------------------------------------------- /src/utils/redirect.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "path": "rj", 4 | "title": "Radio Javan Downloader | Music Downloader - hoseinwave.ir", 5 | "url": "https://rj.hoseinwave.ir" 6 | }, 7 | { 8 | "path": "proxyleech", 9 | "title": "Proxy Leecher - hoseinwave.ir", 10 | "url": "https://proxyleech.hoseinwave.ir" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | export default { 3 | content: [ 4 | "./index.html", 5 | "./src/**/*.{js,ts,jsx,tsx}", 6 | ], 7 | theme: { 8 | fontFamily: { 9 | rubik: ["rubik", "sans-serif"], 10 | mono: ["IBM Plex Mono", "sans-serif"], 11 | hand: ["Caveat", "sans-serif"] 12 | }, 13 | extend: { 14 | colors: { 15 | navbar: "#1B1B1B", 16 | boxes: "#1E1E1E", 17 | primary: "#0080F5" 18 | } 19 | }, 20 | }, 21 | plugins: [], 22 | } 23 | 24 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | }) 8 | --------------------------------------------------------------------------------