diff --git a/README.md b/README.md index 26604ae..f84948e 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ### Skills -A clear way to give an overview of programming languages, tools, and software that you're familiar with. +A clear way to give an overview of programming languages, tools, software, and AI/LLM tools that you're familiar with. #### Languages @@ -63,6 +63,18 @@ Default | &includeNames=true [![GitHub WidgetBox](https://github-widgetbox.vercel.app/api/skills?software=linux,windows,vscode)](https://github.com/Jurredr/github-widgetbox) ``` +#### AI + +Default | &includeNames=true +:-------------------------:|:-------------------------: +[![GitHub WidgetBox](https://github-widgetbox.vercel.app/api/skills?ai=anthropic,claude,googlegemini,githubcopilot,perplexity)](https://github.com/Jurredr/github-widgetbox) | [![GitHub WidgetBox](https://github-widgetbox.vercel.app/api/skills?ai=anthropic,claude,googlegemini,githubcopilot,perplexity&includeNames=true)](https://github.com/Jurredr/github-widgetbox) + +```md +[![GitHub WidgetBox](https://github-widgetbox.vercel.app/api/skills?ai=anthropic,claude,googlegemini,githubcopilot,perplexity)](https://github.com/Jurredr/github-widgetbox) +``` + +Full list: `anthropic`, `claude`, `googlegemini`, `githubcopilot`, `perplexity`, `mistralai`, `metaai`, `huggingface`, `langchain`, `ollama`, `cursor`, `deepseek`, `replicate`. +

### Profile diff --git a/api/routes/skills-route.ts b/api/routes/skills-route.ts index a307dcc..ae4ca8e 100644 --- a/api/routes/skills-route.ts +++ b/api/routes/skills-route.ts @@ -8,25 +8,26 @@ import { getBoolean, getTheme } from '../../src/utils' import errorWidget from '../../src/widgets/error' /** * Primary skill path. - * + * * This path is for the primary skill screen. It has the following possible queries * @param languages the list of languages to show. * @param frameworks the list of frameworks to show. * @param libraries the list of libraries to show. * @param tools the list of tools to show. * @param software the list of software to show + * @param ai the list of AI/LLM tools to show * @param includeNames the option if it has to include names. * @param theme the theme of the widget. * @param names @deprecated the full list of all skills it needs to show. deprecated from version 1.1.0 onwards. */ router.get('/', function (req: Request, res: Response) { - const { names, languages, frameworks, libraries, tools, software, includeNames, theme} = req.query + const { names, languages, frameworks, libraries, tools, software, ai, includeNames, theme} = req.query // Set the header's type to svg/xml res.setHeader('Content-Type', 'image/svg+xml') // Check if languages argument is not present - if (!languages && !frameworks && !libraries && !names && !tools && !software + if (!languages && !frameworks && !libraries && !names && !tools && !software && !ai ) { res.send( errorWidget('Skills', '-24%', 'Languages are undefined!', '-28%') @@ -35,9 +36,9 @@ router.get('/', function (req: Request, res: Response) { } if (names) { - res.send(skillsWidget(String(names), undefined, undefined, undefined, undefined, getBoolean(String(includeNames)), String(theme))) + res.send(skillsWidget(String(names), undefined, undefined, undefined, undefined, undefined, getBoolean(String(includeNames)), String(theme))) } else { - res.send(skillsWidget(String(languages), String(frameworks), String(libraries), String(tools), String(software), getBoolean(String(includeNames)), String(theme))) + res.send(skillsWidget(String(languages), String(frameworks), String(libraries), String(tools), String(software), String(ai), getBoolean(String(includeNames)), String(theme))) } // Grab the Skills widget diff --git a/public/api/routes/skills-route.js b/public/api/routes/skills-route.js index 4c1dd24..20a42e9 100644 --- a/public/api/routes/skills-route.js +++ b/public/api/routes/skills-route.js @@ -17,24 +17,25 @@ const error_1 = __importDefault(require("../../src/widgets/error")); * @param libraries the list of libraries to show. * @param tools the list of tools to show. * @param software the list of software to show + * @param ai the list of AI/LLM tools to show * @param includeNames the option if it has to include names. * @param theme the theme of the widget. * @param names @deprecated the full list of all skills it needs to show. deprecated from version 1.1.0 onwards. */ router.get('/', function (req, res) { - const { names, languages, frameworks, libraries, tools, software, includeNames, theme } = req.query; + const { names, languages, frameworks, libraries, tools, software, ai, includeNames, theme } = req.query; // Set the header's type to svg/xml res.setHeader('Content-Type', 'image/svg+xml'); // Check if languages argument is not present - if (!languages && !frameworks && !libraries && !names && !tools && !software) { - res.send(error_1.default('Skills', '-24%', 'Languages are undefined!', '-28%')); + if (!languages && !frameworks && !libraries && !names && !tools && !software && !ai) { + res.send((0, error_1.default)('Skills', '-24%', 'Languages are undefined!', '-28%')); return; } if (names) { - res.send(skills_1.default(String(names), undefined, undefined, undefined, undefined, utils_1.getBoolean(String(includeNames)), String(theme))); + res.send((0, skills_1.default)(String(names), undefined, undefined, undefined, undefined, undefined, (0, utils_1.getBoolean)(String(includeNames)), String(theme))); } else { - res.send(skills_1.default(String(languages), String(frameworks), String(libraries), String(tools), String(software), utils_1.getBoolean(String(includeNames)), String(theme))); + res.send((0, skills_1.default)(String(languages), String(frameworks), String(libraries), String(tools), String(software), String(ai), (0, utils_1.getBoolean)(String(includeNames)), String(theme))); } // Grab the Skills widget }); diff --git a/public/api/routes/skills-route.js.map b/public/api/routes/skills-route.js.map index 6868820..38fbe69 100644 --- a/public/api/routes/skills-route.js.map +++ b/public/api/routes/skills-route.js.map @@ -1 +1 @@ -{"version":3,"file":"skills-route.js","sourceRoot":"","sources":["../../../api/routes/skills-route.ts"],"names":[],"mappings":";;;;;AAEA,sDAA6B;AAC7B,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAA;AAE/B,sEAAmD;AACnD,2CAAsD;AACtD,oEAAiD;AACjD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAY,EAAE,GAAa;IACjD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAC,GAAG,GAAG,CAAC,KAAK,CAAA;IAElG,mCAAmC;IACnC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,eAAe,CAAC,CAAA;IAE9C,6CAA6C;IAC7C,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAC1E;QACE,GAAG,CAAC,IAAI,CACJ,eAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE,MAAM,CAAC,CACpE,CAAA;QACD,OAAM;KACT;IAED,IAAI,KAAK,EAAE;QACP,GAAG,CAAC,IAAI,CAAC,gBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KACrI;SAAM;QACH,GAAG,CAAC,IAAI,CAAC,gBAAY,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,kBAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KACrK;IAED,yBAAyB;AAC7B,CAAC,CAAC,CAAA;AAEF,kBAAe,MAAM,CAAA"} \ No newline at end of file +{"version":3,"file":"skills-route.js","sourceRoot":"","sources":["../../../api/routes/skills-route.ts"],"names":[],"mappings":";;;;;AAEA,sDAA6B;AAC7B,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAA;AAE/B,sEAAmD;AACnD,2CAAsD;AACtD,oEAAiD;AACjD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAY,EAAE,GAAa;IACjD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAC,GAAG,GAAG,CAAC,KAAK,CAAA;IAEtG,mCAAmC;IACnC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,eAAe,CAAC,CAAA;IAE9C,6CAA6C;IAC7C,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,EACjF;QACE,GAAG,CAAC,IAAI,CACJ,IAAA,eAAW,EAAC,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE,MAAM,CAAC,CACpE,CAAA;QACD,OAAM;KACT;IAED,IAAI,KAAK,EAAE;QACP,GAAG,CAAC,IAAI,CAAC,IAAA,gBAAY,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAA,kBAAU,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KAChJ;SAAM;QACH,GAAG,CAAC,IAAI,CAAC,IAAA,gBAAY,EAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,IAAA,kBAAU,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KACjL;IAED,yBAAyB;AAC7B,CAAC,CAAC,CAAA;AAEF,kBAAe,MAAM,CAAA"} \ No newline at end of file diff --git a/public/src/data/ai.js b/public/src/data/ai.js new file mode 100644 index 0000000..3c772c6 --- /dev/null +++ b/public/src/data/ai.js @@ -0,0 +1,162 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const ai = [ + { + name: ['Anthropic'], + colorFrom: '#B3B3B3', + colorTo: '#191919', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Claude'], + colorFrom: '#F2D2C2', + colorTo: '#D97757', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Gemini', 'GoogleGemini'], + colorFrom: '#DBD1EC', + colorTo: '#8E75B2', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Copilot', 'GitHubCopilot'], + colorFrom: '#B3B3B3', + colorTo: '#000000', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Perplexity'], + colorFrom: '#B3E9F2', + colorTo: '#1FB8CD', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Mistral', 'MistralAI'], + colorFrom: '#FDC79E', + colorTo: '#FA520F', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['MetaAI'], + colorFrom: '#D3C4FA', + colorTo: '#9844FF', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['HuggingFace'], + colorFrom: '#FFEFB0', + colorTo: '#FFD21E', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['LangChain'], + colorFrom: '#E0F0FF', + colorTo: '#7FC8FF', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Ollama'], + colorFrom: '#B3B3B3', + colorTo: '#000000', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Cursor'], + colorFrom: '#B3B3B3', + colorTo: '#000000', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['DeepSeek'], + colorFrom: '#C4D2FF', + colorTo: '#5786FE', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Replicate'], + colorFrom: '#B3B3B3', + colorTo: '#000000', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, +]; +exports.default = ai; +//# sourceMappingURL=ai.js.map \ No newline at end of file diff --git a/public/src/data/ai.js.map b/public/src/data/ai.js.map new file mode 100644 index 0000000..5b29a09 --- /dev/null +++ b/public/src/data/ai.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../../src/data/ai.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/public/src/widgets/skills.js b/public/src/widgets/skills.js index 742d01e..019b57e 100644 --- a/public/src/widgets/skills.js +++ b/public/src/widgets/skills.js @@ -11,23 +11,25 @@ const frameworks_1 = __importDefault(require("../data/frameworks")); const libraries_1 = __importDefault(require("../data/libraries")); const tools_1 = __importDefault(require("../data/tools")); const software_ides_1 = __importDefault(require("../data/software-ides")); +const ai_1 = __importDefault(require("../data/ai")); const themes_1 = __importDefault(require("../data/themes")); /** * Builds the skill widget page * * This method builds a SVG file that contains all the languages, frameworks, - * libraries, tools and other software that can be found in the data folder and - * are passed by the calling method. + * libraries, tools, software and AI/LLM tools that can be found in the data + * folder and are passed by the calling method. * * @param languagesString The string with all the languages * @param frameworksString The string with all the frameworks * @param librariesString The string with all the libraries * @param toolsString The string with all the tools * @param softwareString The string with all the software + * @param aiString The string with all the AI/LLM tools * @param includeNames The boolean that determines whether or not to include names * @returns The SVG with all the skills that were passed. */ -function skillsWidget(languagesString, frameworksString, librariesString, toolsString, softwareString, includeNames, themeString) { +function skillsWidget(languagesString, frameworksString, librariesString, toolsString, softwareString, aiString, includeNames, themeString) { const BASE_HEIGHT = 125; const BASE_WIDTH = 812; const FIRST_ROW = 90; @@ -48,19 +50,23 @@ function skillsWidget(languagesString, frameworksString, librariesString, toolsS if (!softwareString) { softwareString = 'undefined'; } + if (!aiString) { + aiString = 'undefined'; + } // Set the theme - let theme = utils_1.getTheme(themes_1.default, 'default'); + let theme = (0, utils_1.getTheme)(themes_1.default, 'default'); if (themeString) { - theme = utils_1.getTheme(themes_1.default, themeString); + theme = (0, utils_1.getTheme)(themes_1.default, themeString); } if (!theme) { - theme = utils_1.getTheme(themes_1.default, 'default'); + theme = (0, utils_1.getTheme)(themes_1.default, 'default'); } const languageList = languagesString.split(','); const frameworkList = frameworksString.split(','); const libraryList = librariesString.split(','); const toolsList = toolsString.split(','); const softwareList = softwareString.split(','); + const aiList = aiString.split(','); const rowHeightLanguages = Math.round((languageList.length - 0.1) / 7) > 1 ? Math.round((languageList.length - 0.1) / 7) : 1; const languagesTitleHeight = FIRST_ROW; const rowHeightFrameworks = Math.round((frameworkList.length - 0.1) / 7) > 1 ? Math.round((frameworkList.length - 0.1) / 7) : 1; @@ -83,6 +89,11 @@ function skillsWidget(languagesString, frameworksString, librariesString, toolsS + ((toolsList.length > 1 || toolsList[0] !== 'undefined' ? 1 : 0) * PAD) + ((toolsList.length > 1 || toolsList[0] !== 'undefined' ? rowHeightTools : 0) * ROW) + (includeNames && (toolsList.length > 1 || toolsList[0] !== 'undefined') ? (rowHeightSoftware) * 25 : 0); + const rowHeightAI = Math.round((aiList.length - 0.1) / 7) > 1 ? Math.round((aiList.length - 0.1) / 7) : 1; + const aiTitleHeight = softwareTitleHeight + + ((softwareList.length > 1 || softwareList[0] !== 'undefined' ? 1 : 0) * PAD) + + ((softwareList.length > 1 || softwareList[0] !== 'undefined' ? rowHeightSoftware : 0) * ROW) + + (includeNames && (softwareList.length > 1 || softwareList[0] !== 'undefined') ? (rowHeightAI) * 25 : 0); // Set the size of the main SVG container const width = BASE_WIDTH; const height = BASE_HEIGHT + @@ -90,15 +101,17 @@ function skillsWidget(languagesString, frameworksString, librariesString, toolsS (frameworkList.length > 1 || frameworkList[0] !== 'undefined' ? rowHeightFrameworks : 0) + (libraryList.length > 1 || libraryList[0] !== 'undefined' ? rowHeightLibraries : 0) + (toolsList.length > 1 || toolsList[0] !== 'undefined' ? rowHeightTools : 0) + - (softwareList.length > 1 || softwareList[0] !== 'undefined' ? rowHeightSoftware : 0))) + (softwareList.length > 1 || softwareList[0] !== 'undefined' ? rowHeightSoftware : 0) + + (aiList.length > 1 || aiList[0] !== 'undefined' ? rowHeightAI : 0))) + (PAD * (1 + (languageList.length > 1 || languageList[0] !== 'undefined' ? 1 : 0) + (frameworkList.length > 1 || frameworkList[0] !== 'undefined' ? 1 : 0) + (libraryList.length > 1 || libraryList[0] !== 'undefined' ? 1 : 0) + (toolsList.length > 1 || toolsList[0] !== 'undefined' ? 1 : 0) + - (softwareList.length > 1 || softwareList[0] !== 'undefined' ? 1 : 0))) + (softwareList.length > 1 || softwareList[0] !== 'undefined' ? 1 : 0) + + (aiList.length > 1 || aiList[0] !== 'undefined' ? 1 : 0))) // Add space for the names if true. - + (includeNames ? (Math.round(((languageList.length + libraryList.length + frameworkList.length + toolsList.length + softwareList.length) - 0.1) / 7) + 1) * 25 : 0); + + (includeNames ? (Math.round(((languageList.length + libraryList.length + frameworkList.length + toolsList.length + softwareList.length + aiList.length) - 0.1) / 7) + 1) * 25 : 0); /** * Builds the gradient boxes and sets the names. * @param listToBuild The list of items to build the boxes with @@ -110,7 +123,7 @@ function skillsWidget(languagesString, frameworksString, librariesString, toolsS for (let i = 0; i < listToBuild.length; i++) { // Check the data and add the first result that isn't defined. // It checks the languages first, then the frameworks, and then the libraries. - let foundData = utils_1.findData(languages_1.default, listToBuild[i]) || utils_1.findData(frameworks_1.default, listToBuild[i]) || utils_1.findData(libraries_1.default, listToBuild[i]) || utils_1.findData(tools_1.default, listToBuild[i]) || utils_1.findData(software_ides_1.default, listToBuild[i]); + let foundData = (0, utils_1.findData)(languages_1.default, listToBuild[i]) || (0, utils_1.findData)(frameworks_1.default, listToBuild[i]) || (0, utils_1.findData)(libraries_1.default, listToBuild[i]) || (0, utils_1.findData)(tools_1.default, listToBuild[i]) || (0, utils_1.findData)(software_ides_1.default, listToBuild[i]) || (0, utils_1.findData)(ai_1.default, listToBuild[i]); if (foundData === undefined) { foundData = { name: [''], @@ -125,7 +138,7 @@ function skillsWidget(languagesString, frameworksString, librariesString, toolsS const row = Math.floor(i / 7); const transX = 102 * (i - row * 7); const transY = ROW * row + (includeNames && row > 0 ? 25 * row : 0); - boxes += gradient_box_1.default( + boxes += (0, gradient_box_1.default)( // Combine the index and the type number. (i * Math.pow(10, Math.floor(Math.log10(type)) + 1) + type), foundData.colorFrom, foundData.colorTo, transX, transY); boxes += @@ -149,7 +162,7 @@ function skillsWidget(languagesString, frameworksString, librariesString, toolsS return ` - ${card_1.default(width, height, theme.background)} + ${(0, card_1.default)(width, height, theme.background)} Skills @@ -169,6 +182,9 @@ function skillsWidget(languagesString, frameworksString, librariesString, toolsS Software + + AI + ${getBoxes(languageList, 1)} @@ -185,7 +201,10 @@ function skillsWidget(languagesString, frameworksString, librariesString, toolsS ${getBoxes(softwareList, 5)} - + + ${getBoxes(aiList, 6)} + + `; } diff --git a/public/src/widgets/skills.js.map b/public/src/widgets/skills.js.map index d9ad547..0ca4a31 100644 --- a/public/src/widgets/skills.js.map +++ b/public/src/widgets/skills.js.map @@ -1 +1 @@ -{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/widgets/skills.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/widgets/skills.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/data/ai.ts b/src/data/ai.ts new file mode 100644 index 0000000..12aeea1 --- /dev/null +++ b/src/data/ai.ts @@ -0,0 +1,162 @@ +import { IconData } from '../interfaces/IconData' + +const ai: IconData[] = [ + { + name: ['Anthropic'], + colorFrom: '#B3B3B3', + colorTo: '#191919', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Claude'], + colorFrom: '#F2D2C2', + colorTo: '#D97757', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Gemini', 'GoogleGemini'], + colorFrom: '#DBD1EC', + colorTo: '#8E75B2', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Copilot', 'GitHubCopilot'], + colorFrom: '#B3B3B3', + colorTo: '#000000', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Perplexity'], + colorFrom: '#B3E9F2', + colorTo: '#1FB8CD', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Mistral', 'MistralAI'], + colorFrom: '#FDC79E', + colorTo: '#FA520F', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['MetaAI'], + colorFrom: '#D3C4FA', + colorTo: '#9844FF', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['HuggingFace'], + colorFrom: '#FFEFB0', + colorTo: '#FFD21E', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['LangChain'], + colorFrom: '#E0F0FF', + colorTo: '#7FC8FF', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Ollama'], + colorFrom: '#B3B3B3', + colorTo: '#000000', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Cursor'], + colorFrom: '#B3B3B3', + colorTo: '#000000', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['DeepSeek'], + colorFrom: '#C4D2FF', + colorTo: '#5786FE', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, + { + name: ['Replicate'], + colorFrom: '#B3B3B3', + colorTo: '#000000', + icon: ` + + + `, + width: 36, + height: 36, + xOffset: 0, + }, +] + +export default ai diff --git a/src/widgets/skills.ts b/src/widgets/skills.ts index 2f34cf6..00846f6 100644 --- a/src/widgets/skills.ts +++ b/src/widgets/skills.ts @@ -6,20 +6,22 @@ import frameworks from '../data/frameworks' import libraries from '../data/libraries' import tools from '../data/tools' import softwareIDEs from '../data/software-ides' +import ai from '../data/ai' import { Theme } from "../interfaces/Theme"; import themes from '../data/themes' /** * Builds the skill widget page - * + * * This method builds a SVG file that contains all the languages, frameworks, - * libraries, tools and other software that can be found in the data folder and - * are passed by the calling method. - * + * libraries, tools, software and AI/LLM tools that can be found in the data + * folder and are passed by the calling method. + * * @param languagesString The string with all the languages * @param frameworksString The string with all the frameworks * @param librariesString The string with all the libraries * @param toolsString The string with all the tools * @param softwareString The string with all the software + * @param aiString The string with all the AI/LLM tools * @param includeNames The boolean that determines whether or not to include names * @returns The SVG with all the skills that were passed. */ @@ -29,6 +31,7 @@ export default function skillsWidget( librariesString?: string, toolsString?: string, softwareString?: string, + aiString?: string, includeNames?: boolean, themeString?: string @@ -55,6 +58,9 @@ export default function skillsWidget( if (!softwareString) { softwareString = 'undefined' } + if (!aiString) { + aiString = 'undefined' + } // Set the theme let theme : Theme = getTheme(themes, 'default') @@ -70,6 +76,7 @@ export default function skillsWidget( const libraryList: string[] = librariesString.split(',') const toolsList: string[] = toolsString.split(',') const softwareList: string[] = softwareString.split(',') + const aiList: string[] = aiString.split(',') const rowHeightLanguages = Math.round((languageList.length - 0.1) / 7) > 1 ? Math.round((languageList.length - 0.1) / 7) : 1 const languagesTitleHeight = FIRST_ROW @@ -94,30 +101,38 @@ export default function skillsWidget( const rowHeightSoftware = Math.round((softwareList.length - 0.1) / 7) > 1 ? Math.round((softwareList.length - 0.1) / 7) : 1 const softwareTitleHeight = toolsTitleHeight - + ((toolsList.length > 1 || toolsList[0] !== 'undefined' ? 1 : 0) * PAD) + + ((toolsList.length > 1 || toolsList[0] !== 'undefined' ? 1 : 0) * PAD) + ((toolsList.length > 1 || toolsList[0] !== 'undefined' ? rowHeightTools : 0) * ROW) + (includeNames && (toolsList.length > 1 || toolsList[0] !== 'undefined') ? (rowHeightSoftware) * 25 : 0) + const rowHeightAI = Math.round((aiList.length - 0.1) / 7) > 1 ? Math.round((aiList.length - 0.1) / 7) : 1 + const aiTitleHeight = softwareTitleHeight + + ((softwareList.length > 1 || softwareList[0] !== 'undefined' ? 1 : 0) * PAD) + + ((softwareList.length > 1 || softwareList[0] !== 'undefined' ? rowHeightSoftware : 0) * ROW) + + (includeNames && (softwareList.length > 1 || softwareList[0] !== 'undefined') ? (rowHeightAI) * 25 : 0) + // Set the size of the main SVG container const width = BASE_WIDTH const height = BASE_HEIGHT + (ROW * ( - (languageList.length > 1 || languageList[0] !== 'undefined' ? rowHeightLanguages : 0) + - (frameworkList.length > 1 || frameworkList[0] !== 'undefined' ? rowHeightFrameworks : 0) + + (languageList.length > 1 || languageList[0] !== 'undefined' ? rowHeightLanguages : 0) + + (frameworkList.length > 1 || frameworkList[0] !== 'undefined' ? rowHeightFrameworks : 0) + (libraryList.length > 1 || libraryList[0] !== 'undefined' ? rowHeightLibraries : 0) + (toolsList.length > 1 || toolsList[0] !== 'undefined' ? rowHeightTools : 0) + - (softwareList.length > 1 || softwareList[0] !== 'undefined' ? rowHeightSoftware : 0) + (softwareList.length > 1 || softwareList[0] !== 'undefined' ? rowHeightSoftware : 0) + + (aiList.length > 1 || aiList[0] !== 'undefined' ? rowHeightAI : 0) )) + (PAD * ( 1 + - (languageList.length > 1 || languageList[0] !== 'undefined' ? 1 : 0) + - (frameworkList.length > 1 || frameworkList[0] !== 'undefined' ? 1 : 0) + + (languageList.length > 1 || languageList[0] !== 'undefined' ? 1 : 0) + + (frameworkList.length > 1 || frameworkList[0] !== 'undefined' ? 1 : 0) + (libraryList.length > 1 || libraryList[0] !== 'undefined' ? 1 : 0) + (toolsList.length > 1 || toolsList[0] !== 'undefined' ? 1 : 0) + - (softwareList.length > 1 || softwareList[0] !== 'undefined' ? 1 : 0) + (softwareList.length > 1 || softwareList[0] !== 'undefined' ? 1 : 0) + + (aiList.length > 1 || aiList[0] !== 'undefined' ? 1 : 0) )) // Add space for the names if true. - + (includeNames ? (Math.round(((languageList.length + libraryList.length + frameworkList.length + toolsList.length+ softwareList.length) - 0.1) / 7) + 1) * 25 : 0) + + (includeNames ? (Math.round(((languageList.length + libraryList.length + frameworkList.length + toolsList.length+ softwareList.length + aiList.length) - 0.1) / 7) + 1) * 25 : 0) /** * Builds the gradient boxes and sets the names. @@ -130,7 +145,7 @@ export default function skillsWidget( for (let i = 0; i < listToBuild.length; i++) { // Check the data and add the first result that isn't defined. // It checks the languages first, then the frameworks, and then the libraries. - let foundData = findData(languageData, listToBuild[i]) || findData(frameworks, listToBuild[i]) || findData(libraries, listToBuild[i]) || findData(tools, listToBuild[i]) || findData(softwareIDEs, listToBuild[i]) + let foundData = findData(languageData, listToBuild[i]) || findData(frameworks, listToBuild[i]) || findData(libraries, listToBuild[i]) || findData(tools, listToBuild[i]) || findData(softwareIDEs, listToBuild[i]) || findData(ai, listToBuild[i]) if (foundData === undefined) { foundData = { name: [''], @@ -205,6 +220,9 @@ export default function skillsWidget( Software + + AI + ${getBoxes(languageList, 1)} @@ -221,7 +239,10 @@ export default function skillsWidget( ${getBoxes(softwareList, 5)} - + + ${getBoxes(aiList, 6)} + + ` }