feat: add icons into skills page

This commit is contained in:
xHyroM 2023-05-14 11:18:43 +02:00
parent 018ad211c3
commit e93ead1436
No known key found for this signature in database
GPG key ID: BE0423F386C436AA
20 changed files with 4334 additions and 1638 deletions

View file

@ -1 +1,2 @@
dist/* dist/*
node_modules/*

View file

@ -44,14 +44,14 @@ Exclamation mark is optional too, but it's used to mark breaking changes.
Must be one of the following: Must be one of the following:
- **build**: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm) - **build**: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
- **ci**: Changes to our CI configuration files and scripts (examples: CircleCi, SauceLabs) - **ci**: Changes to our CI configuration files and scripts (examples: CircleCi, SauceLabs)
- **docs**: Documentation only changes - **docs**: Documentation only changes
- **feat**: A new feature - **feat**: A new feature
- **fix**: A bug fix - **fix**: A bug fix
- **perf**: A code change that improves performance - **perf**: A code change that improves performance
- **refactor**: A code change that neither fixes a bug nor adds a feature - **refactor**: A code change that neither fixes a bug nor adds a feature
- **test**: Adding missing tests or correcting existing tests - **test**: Adding missing tests or correcting existing tests
##### Scope ##### Scope
@ -59,27 +59,27 @@ The scope should be the name of the npm package affected (as perceived by the pe
The following is the list of supported scopes: The following is the list of supported scopes:
- `layouts` - `layouts`
- `components` - `components`
- `components-widgets` - `components-widgets`
- `components-atoms` - `components-atoms`
- `pages` - `pages`
- `pages-blog` - `pages-blog`
- `pages-docs` - `pages-docs`
- `scripts` - `scripts`
- `assets` - `assets`
There are currently a few exceptions to the "use package name" rule: There are currently a few exceptions to the "use package name" rule:
- none/empty string: useful for `test` and `refactor` changes that are done across all packages (e.g. `test: add missing unit tests`) and for docs changes that are not related to a specific package (e.g. `docs: fix typo in tutorial`). - none/empty string: useful for `test` and `refactor` changes that are done across all packages (e.g. `test: add missing unit tests`) and for docs changes that are not related to a specific package (e.g. `docs: fix typo in tutorial`).
##### Summary ##### Summary
Use the summary field to provide a succinct description of the change: Use the summary field to provide a succinct description of the change:
- use the imperative, present tense: "change" not "changed" nor "changes" - use the imperative, present tense: "change" not "changed" nor "changes"
- don't capitalize the first letter - don't capitalize the first letter
- no dot (.) at the end - no dot (.) at the end
#### <a name="commit-body"></a>Commit Message Body #### <a name="commit-body"></a>Commit Message Body
@ -92,8 +92,8 @@ You can include a comparison of the previous behavior with the new behavior in o
The footer is optional and is used for two purposes: The footer is optional and is used for two purposes:
- To reference issues that this commit closes - To reference issues that this commit closes
- To include information that doesn't fit in the header or body, such as a link to a file or a suggestion to review a pull request - To include information that doesn't fit in the header or body, such as a link to a file or a suggestion to review a pull request
The format for the footer is as follows: The format for the footer is as follows:
@ -113,5 +113,5 @@ If the commit reverts a previous commit, it should begin with `revert: `, follow
The content of the commit message body should contain: The content of the commit message body should contain:
- information about the SHA of the commit being reverted in the following format: `This reverts commit <SHA>`, - information about the SHA of the commit being reverted in the following format: `This reverts commit <SHA>`,
- a clear description of the reason for reverting the commit message. - a clear description of the reason for reverting the commit message.

View file

@ -20,9 +20,9 @@
## Usage ## Usage
- To run the development server: `npm run dev` - To run the development server: `npm run dev`
- To build the project for production: `npm run build` - To build the project for production: `npm run build`
- To preview the production build: `npm run preview` - To preview the production build: `npm run preview`
## Contributing ## Contributing

View file

@ -4,26 +4,29 @@ import { writeFile, readFile } from "node:fs/promises";
import { fileURLToPath } from "node:url"; import { fileURLToPath } from "node:url";
export default (): AstroIntegration => { export default (): AstroIntegration => {
return { return {
name: "hyro-minify", name: "hyro-minify",
hooks: { hooks: {
"astro:build:done": async (opts) => { "astro:build:done": async (opts) => {
for (const route of opts.routes) { for (const route of opts.routes) {
const content = await readFile(fileURLToPath(route.distURL!), "utf-8"); const content = await readFile(
const minified = await minify(content, { fileURLToPath(route.distURL!),
removeAttributeQuotes: true, "utf-8"
collapseWhitespace: true, );
minifyCSS: true, const minified = await minify(content, {
html5: true, removeAttributeQuotes: true,
removeComments: true, collapseWhitespace: true,
minifyJS: true, minifyCSS: true,
minifyURLs: true, html5: true,
}); removeComments: true,
minifyJS: true,
minifyURLs: true,
});
await writeFile(fileURLToPath(route.distURL!), minified, "utf-8"); await writeFile(fileURLToPath(route.distURL!), minified, "utf-8");
console.log(`Minified ${route.distURL!.pathname}`) console.log(`Minified ${route.distURL!.pathname}`);
}
}
} }
} },
} },
};
};

View file

@ -19,25 +19,25 @@ import minify from "./astro-integrations/minify";
// https://astro.build/config // https://astro.build/config
export default defineConfig({ export default defineConfig({
site: "https://xhyrom.dev/", site: "https://xhyrom.dev/",
//prepisat uwu //prepisat uwu
integrations: [ integrations: [
tailwind(), tailwind(),
image(), image(),
sitemap(), sitemap(),
compress({ compress({
svg: false, svg: false,
html: false, html: false,
}), }),
prefetch(), prefetch(),
robotsTxt({ robotsTxt({
policy: [ policy: [
{ {
userAgent: "*", userAgent: "*",
}, },
], ],
sitemap: true, sitemap: true,
}), }),
minify(), minify(),
], ],
}); });

View file

@ -1,33 +1,40 @@
{ {
"name": "@example/basics", "name": "@example/basics",
"type": "module", "type": "module",
"version": "0.0.1", "version": "0.0.1",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "astro dev", "dev": "astro dev",
"start": "astro dev", "start": "astro dev",
"build": "astro build", "build": "astro build",
"preview": "astro preview", "preview": "astro preview",
"astro": "astro" "astro": "astro"
}, },
"dependencies": { "dependencies": {
"@astrojs/image": "^0.16.8", "@astrojs/image": "^0.16.8",
"@astrojs/prefetch": "^0.2.1", "@astrojs/prefetch": "^0.2.1",
"@astrojs/sitemap": "^1.3.1", "@astrojs/sitemap": "^1.3.1",
"@astrojs/tailwind": "^3.1.2", "@astrojs/tailwind": "^3.1.2",
"@tailwindcss/typography": "^0.5.9", "@tailwindcss/typography": "^0.5.9",
"astro": "^2.4.5", "astro": "^2.4.5",
"astro-compress": "^1.1.42", "astro-compress": "^1.1.42",
"astro-robots-txt": "^0.5.0", "astro-icon": "^0.8.0",
"fireworks-js": "^2.10.4", "astro-robots-txt": "^0.5.0",
"html-minifier": "^4.0.0", "astro-tooltips": "^0.6.2",
"tailwind": "^4.0.0", "fireworks-js": "^2.10.4",
"tailwindcss": "^3.3.2" "html-minifier": "^4.0.0",
}, "tailwind": "^4.0.0",
"devDependencies": { "tailwindcss": "^3.3.2"
"@types/html-minifier": "^4.0.2", },
"prettier": "2.8.8", "devDependencies": {
"prettier-plugin-astro": "^0.8.1", "@types/html-minifier": "^4.0.2",
"prettier-plugin-tailwindcss": "^0.2.8" "prettier": "2.8.8",
"prettier-plugin-astro": "^0.8.1",
"prettier-plugin-tailwindcss": "^0.2.8"
},
"pnpm": {
"patchedDependencies": {
"astro-icon@0.8.0": "patches/astro-icon@0.8.0.patch"
} }
}
} }

View file

@ -0,0 +1,17 @@
diff --git a/lib/resolver.ts b/lib/resolver.ts
index 3845a6542c924397a7c2e2daf0a78cdb243ec603..0a02155ecf9b7f208432eb7e7c0a1108de502786 100644
--- a/lib/resolver.ts
+++ b/lib/resolver.ts
@@ -1,10 +1,10 @@
-const baseURL = "https://api.astroicon.dev/v1/";
+const baseURL = "https://api.iconify.design/";
const requests = new Map();
const fetchCache = new Map();
// Default resolver fetches icons from `api.astroicon.dev`
export default async function get(pack: string, name: string) {
- const url = new URL(`./${pack}/${name}`, baseURL).toString();
+ const url = new URL(`./${pack}/${name}.svg`, baseURL).toString();
// Handle in-flight requests
if (requests.has(url)) {
return await requests.get(url);

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,18 @@
---
import { Tooltips } from "astro-tooltips";
import { Icon } from "astro-icon";
type Props = {
name: string;
icon: string;
};
const { name, icon } = Astro.props as Props;
---
<li class="p-2">
<Tooltips interactive={false} delay={[15, 150]} placement="top" />
<span title={name}>
<Icon name={icon} class="h-10 w-10" />
</span>
</li>

4
src/env.d.ts vendored
View file

@ -1,9 +1,9 @@
/// <reference types="astro/client" /> /// <reference types="astro/client" />
interface ImportMetaEnv { interface ImportMetaEnv {
readonly GITHUB_ACCESS_TOKEN: string; readonly GITHUB_ACCESS_TOKEN: string;
} }
interface ImportMeta { interface ImportMeta {
readonly env: ImportMetaEnv; readonly env: ImportMetaEnv;
} }

View file

@ -1,25 +1,86 @@
--- ---
import Container from "../components/atoms/Container.astro"; import Container from "../components/atoms/Container.astro";
import Navbar from "../components/widgets/Navbar.astro"; import Navbar from "../components/widgets/Navbar.astro";
import TechIcon from "../components/widgets/TechIcon.astro";
import Layout from "../layouts/Layout.astro"; import Layout from "../layouts/Layout.astro";
const skills = [ const skills = [
[ {
"TypeScript, JavaScript", name: "TypeScript",
"Bun, Node.js, little Deno", icon: "logos:typescript-icon",
"React, Astro, Next.js", },
], {
["HTML", "TailwindCSS", "CSS"], name: "JavaScript",
["Java", "Kotlin", "Rust (learning now)"], icon: "logos:javascript",
["SQLite", "MySQL", "MongoDB", "Redis"], },
[ {
"Git", name: "Bun",
"GitHub Actions", icon: "logos:bun",
"GitHub Pages", },
"Cloudflare Workers", {
"Cloudflare Pages", name: "NodeJS",
"Netlify", icon: "logos:nodejs-icon-alt",
], },
{
name: "Deno",
icon: "logos:deno",
},
{
name: "React",
icon: "logos:react",
},
{
name: "NextJS",
icon: "file-icons:nextjs",
},
{
name: "Astro",
icon: "vscode-icons:file-type-astro",
},
{
name: "TailwindCSS",
icon: "logos:tailwindcss-icon",
},
{
name: "Java",
icon: "logos:java",
},
{
name: "Kotlin",
icon: "logos:kotlin-icon",
},
{
name: "Rust",
icon: "vscode-icons:file-type-rust",
},
{
name: "Go",
icon: "vscode-icons:file-type-go-aqua",
},
{
name: "MySQL",
icon: "logos:mysql-icon",
},
{
name: "MongoDB",
icon: "devicon:mongodb",
},
{
name: "Redis",
icon: "devicon:redis",
},
{
name: "Git",
icon: "mdi:git",
},
{
name: "GitHub",
icon: "mdi:github",
},
{
name: "CloudFlare",
icon: "logos:cloudflare",
},
]; ];
--- ---
@ -89,15 +150,12 @@ const skills = [
My skill set spans various programming languages, databases, and My skill set spans various programming languages, databases, and
frameworks. frameworks.
<ul class="list-inside list-disc"> <ul
class="mx-auto mb-4 flex w-fit flex-wrap items-center justify-center rounded-md border border-neutral-800"
>
{ {
skills.map((skill) => ( skills.map((skill) => (
<> <TechIcon icon={skill.icon} name={skill.name} />
{skill.map((item) => (
<li>{item}</li>
))}
<hr class="my-4" />
</>
)) ))
} }
</ul> </ul>

View file

@ -1,9 +1,9 @@
document.querySelector(".hamburger").addEventListener("click", () => { document.querySelector(".hamburger").addEventListener("click", () => {
document.querySelector(".nav-links").classList.remove("hidden"); document.querySelector(".nav-links").classList.remove("hidden");
document.querySelector(".hamburger-close").classList.remove("hidden"); document.querySelector(".hamburger-close").classList.remove("hidden");
}); });
document.querySelector(".hamburger-close").addEventListener("click", () => { document.querySelector(".hamburger-close").addEventListener("click", () => {
document.querySelector(".nav-links").classList.toggle("hidden"); document.querySelector(".nav-links").classList.toggle("hidden");
document.querySelector(".hamburger-close").classList.toggle("hidden"); document.querySelector(".hamburger-close").classList.toggle("hidden");
}); });

View file

@ -1,6 +1,6 @@
document.getElementById("sidebar-show").addEventListener("click", () => { document.getElementById("sidebar-show").addEventListener("click", () => {
document.getElementById("sidebar-show").classList.remove("hidden"); document.getElementById("sidebar-show").classList.remove("hidden");
document.getElementById("sidebar").classList.toggle("-translate-x-full"); document.getElementById("sidebar").classList.toggle("-translate-x-full");
document.getElementById("sidebar").classList.remove("invisible"); document.getElementById("sidebar").classList.remove("invisible");
document.getElementById("open-arrow").classList.toggle("rotate-180"); document.getElementById("open-arrow").classList.toggle("rotate-180");
}); });

View file

@ -1,18 +1,18 @@
/** @type {import('tailwindcss').Config} */ /** @type {import('tailwindcss').Config} */
module.exports = { module.exports = {
content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"], content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"],
theme: { theme: {
extend: { extend: {
colors: { colors: {
dark: "#0D0D0D", dark: "#0D0D0D",
gray: "#131313", gray: "#131313",
hyroGold: "#fbc119", hyroGold: "#fbc119",
}, },
dropShadow: { dropShadow: {
yellow: ["0 35px 35px rgba(250, 193, 25, 0.5)"], yellow: ["0 35px 35px rgba(250, 193, 25, 0.5)"],
yellowalt: ["0 4px 12px rgba(250, 193, 25, 0.8)"], yellowalt: ["0 4px 12px rgba(250, 193, 25, 0.8)"],
}, },
},
}, },
plugins: [require("@tailwindcss/typography")], },
plugins: [require("@tailwindcss/typography")],
}; };

View file

@ -1,3 +1,4 @@
{ {
"extends": "astro/tsconfigs/strict" "extends": "astro/tsconfigs/strict",
"exclude": ["node_modules", ".astro"]
} }

View file

@ -1,23 +1,23 @@
{ {
"headers": [ "headers": [
{
"source": "/(.*)",
"headers": [
{ {
"source": "/(.*)", "key": "Content-Security-Policy",
"headers": [ "value": "img-src 'self'; font-src *; style-src 'self' 'unsafe-inline' fonts.googleapis.com; script-src 'self' 'unsafe-inline'; object-src 'none'"
{
"key": "Content-Security-Policy",
"value": "img-src 'self'; font-src *; style-src 'self' 'unsafe-inline' fonts.googleapis.com; script-src 'self' 'unsafe-inline'; object-src 'none'"
}
]
} }
], ]
"redirects": [ }
{ ],
"source": "/docs", "redirects": [
"destination": "/docs/items/nadpis/introduction" {
}, "source": "/docs",
{ "destination": "/docs/items/nadpis/introduction"
"source": "/docs/", },
"destination": "/docs/items/nadpis/introduction" {
} "source": "/docs/",
] "destination": "/docs/items/nadpis/introduction"
}
]
} }