From fe90f5988af5d9730a9bf091aade1e7446aab1bf Mon Sep 17 00:00:00 2001 From: Patrick Alvin Alcala Date: Mon, 24 Nov 2025 15:42:06 +0800 Subject: [PATCH] Updated --- frontend/Dockerfile | 12 + frontend/Makefile | 18 + frontend/configs/design.site.sass | 8 +- frontend/docker-compose.yml | 9 + frontend/nginx/nginx.conf | 31 ++ frontend/node_scripts/generateFavicon.js | 21 -- frontend/package.json | 9 +- frontend/pnpm-lock.yaml | 351 ++++++++++++++++++ frontend/public/favicon.ico | Bin 664 -> 0 bytes frontend/public/favicon.png | Bin 0 -> 2273 bytes frontend/src/@dasig/components/Copyright.tsx | 2 +- frontend/src/@dasig/components/Display.tsx | 41 ++ frontend/src/@dasig/components/HTML.tsx | 2 +- frontend/src/@dasig/components/Padding.tsx | 13 + frontend/src/@dasig/images/logo.avif | Bin 4396 -> 846 bytes frontend/src/@dasig/images/logo.webp | Bin 5734 -> 626 bytes frontend/src/@dasig/images/ocbologo2.avif | Bin 0 -> 1389 bytes frontend/src/@dasig/images/ocbologo2.webp | Bin 0 -> 1688 bytes frontend/src/@dasig/index.ts | 2 + .../@dasig/scripts/node/generateFavicon.js | 23 ++ .../src/@dasig/scripts/node/optimizeImage.js | 41 ++ .../src/@dasig/scripts/node/optimizeLogo.js | 33 ++ frontend/src/@dasig/styles/Display.sass | 1 + frontend/src/assets/images/favicon.png | Bin 3004 -> 0 bytes .../src/components/{Counter => }/Counter.sass | 6 +- .../src/components/{Counter => }/Counter.tsx | 0 frontend/src/images/logo.png | Bin 0 -> 11727 bytes frontend/src/images/ocbologo2.png | Bin 0 -> 50782 bytes frontend/src/routes/index.tsx | 2 +- frontend/src/styles/breakpoint.sass | 32 +- frontend/src/styles/functions.sass | 6 +- 31 files changed, 613 insertions(+), 50 deletions(-) create mode 100644 frontend/Dockerfile create mode 100644 frontend/Makefile create mode 100644 frontend/docker-compose.yml create mode 100644 frontend/nginx/nginx.conf delete mode 100644 frontend/node_scripts/generateFavicon.js delete mode 100644 frontend/public/favicon.ico create mode 100644 frontend/public/favicon.png create mode 100644 frontend/src/@dasig/components/Display.tsx create mode 100644 frontend/src/@dasig/components/Padding.tsx create mode 100644 frontend/src/@dasig/images/ocbologo2.avif create mode 100644 frontend/src/@dasig/images/ocbologo2.webp create mode 100644 frontend/src/@dasig/scripts/node/generateFavicon.js create mode 100644 frontend/src/@dasig/scripts/node/optimizeImage.js create mode 100644 frontend/src/@dasig/scripts/node/optimizeLogo.js create mode 100644 frontend/src/@dasig/styles/Display.sass delete mode 100644 frontend/src/assets/images/favicon.png rename frontend/src/components/{Counter => }/Counter.sass (90%) rename frontend/src/components/{Counter => }/Counter.tsx (100%) create mode 100644 frontend/src/images/logo.png create mode 100755 frontend/src/images/ocbologo2.png diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..5b75f16 --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,12 @@ +FROM node:22-alpine AS build +WORKDIR /app +COPY package*.json ./ +RUN corepack enable +RUN pnpm install +COPY . . +RUN pnpm build + +FROM nginx:alpine AS runtime +COPY ./nginx/nginx.conf /etc/nginx/nginx.conf +COPY --from=build /app/dist /usr/share/nginx/html +EXPOSE 8080 \ No newline at end of file diff --git a/frontend/Makefile b/frontend/Makefile new file mode 100644 index 0000000..85d629e --- /dev/null +++ b/frontend/Makefile @@ -0,0 +1,18 @@ +dev: + pnpm dev + +build: + pnpm build + +docker: + docker compose up -d + +favicon: + node ./src/@dasig/scripts/node/generateFavicon.js + +logo: + node ./src/@dasig/scripts/node/optimizeLogo.js --size $(size) + +image: + node ./src/@dasig/scripts/node/optimizeImage.js --name $(name) --size $(size) + diff --git a/frontend/configs/design.site.sass b/frontend/configs/design.site.sass index 3035e27..d14273e 100644 --- a/frontend/configs/design.site.sass +++ b/frontend/configs/design.site.sass @@ -1,2 +1,6 @@ -$lightBackground: #dae6f6 -$darkBackground: #10121a +$lightBackground: #d4e0f0 +$darkBackground: #11141e + +$mobile: 575.98px +$tablet: 768px +$desktop: 1440px diff --git a/frontend/docker-compose.yml b/frontend/docker-compose.yml new file mode 100644 index 0000000..a9b3c4c --- /dev/null +++ b/frontend/docker-compose.yml @@ -0,0 +1,9 @@ +services: + template: + container_name: template + restart: unless-stopped + build: + context: . + dockerfile: Dockerfile + ports: + - 8080:8080 diff --git a/frontend/nginx/nginx.conf b/frontend/nginx/nginx.conf new file mode 100644 index 0000000..a1a6187 --- /dev/null +++ b/frontend/nginx/nginx.conf @@ -0,0 +1,31 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen 8080; + server_name _; + + root /usr/share/nginx/html; + index index.html index.htm; + include /etc/nginx/mime.types; + + gzip on; + gzip_min_length 1000; + gzip_proxied expired no-cache no-store private auth; + gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript; + + error_page 404 /404.html; + location = /404.html { + root /usr/share/nginx/html; + internal; + } + + location / { + try_files $uri $uri/index.html =404; + } + } +} \ No newline at end of file diff --git a/frontend/node_scripts/generateFavicon.js b/frontend/node_scripts/generateFavicon.js deleted file mode 100644 index c64f651..0000000 --- a/frontend/node_scripts/generateFavicon.js +++ /dev/null @@ -1,21 +0,0 @@ -import { consola } from 'consola'; -import * as fs from 'fs'; -import * as path from 'path'; -import sharp from 'sharp'; -(async () => { - try { - const dirPath = path.resolve('../../../public') - - if (fs.existsSync(dirPath)) { - const inputSrc = '../../assets/images/logo.png' - const favicon = dirPath + '/favicon.png' - const faviconBuffer = await sharp(inputSrc).png({ quality: 90 }).resize(50).toBuffer() - await sharp(faviconBuffer).toFile(favicon) - consola.success('Favicon generated successfully') - } else { - consola.error('Directory does not exist:', dirPath) - } - } catch (error) { - consola.error('Error generating favicon:', error) - } -})() diff --git a/frontend/package.json b/frontend/package.json index a6dd07c..e15be4b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -5,20 +5,25 @@ "dev": "vinxi dev", "build": "vinxi build", "start": "vinxi start", - "version": "vinxi version" + "version": "vinxi version", + "favicon": "node ./src/@dasig/scripts/node/generateFavicon.js" }, "dependencies": { "@solidjs/meta": "^0.29.4", "@solidjs/router": "^0.15.0", "@solidjs/start": "^1.1.0", + "consola": "^3.4.2", "dayjs": "^1.11.19", "eciesjs": "^0.4.16", "jsencrypt": "^3.5.4", "nanostores": "^1.1.0", "ofetch": "^1.5.1", + "png-to-ico": "^3.0.1", + "sharp": "^0.34.5", "solid-icons": "^1.1.0", "solid-js": "^1.9.5", - "vinxi": "^0.5.7" + "vinxi": "^0.5.7", + "yargs": "^18.0.0" }, "engines": { "node": ">=22" diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index c501a50..7384b04 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: '@solidjs/start': specifier: ^1.1.0 version: 1.2.0(solid-js@1.9.9)(vinxi@0.5.8(@types/node@24.7.2)(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vite@6.4.0(@types/node@24.7.2)(jiti@2.6.1)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)) + consola: + specifier: ^3.4.2 + version: 3.4.2 dayjs: specifier: ^1.11.19 version: 1.11.19 @@ -32,6 +35,12 @@ importers: ofetch: specifier: ^1.5.1 version: 1.5.1 + png-to-ico: + specifier: ^3.0.1 + version: 3.0.1 + sharp: + specifier: ^0.34.5 + version: 0.34.5 solid-icons: specifier: ^1.1.0 version: 1.1.0(solid-js@1.9.9) @@ -41,6 +50,9 @@ importers: vinxi: specifier: ^0.5.7 version: 0.5.8(@types/node@24.7.2)(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0) + yargs: + specifier: ^18.0.0 + version: 18.0.0 devDependencies: '@biomejs/biome': specifier: ^2.3.6 @@ -263,6 +275,9 @@ packages: peerDependencies: '@noble/ciphers': ^1.0.0 + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + '@esbuild/aix-ppc64@0.25.11': resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} engines: {node: '>=18'} @@ -419,6 +434,143 @@ packages: cpu: [x64] os: [win32] + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@ioredis/commands@1.4.0': resolution: {integrity: sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ==} @@ -855,6 +1007,9 @@ packages: '@types/micromatch@4.0.9': resolution: {integrity: sha512-7V+8ncr22h4UoYRLnLXSpTxjQrNUXtWHGeMPRJt1nULXI57G9bIcpyrHlmrQ7QK24EyyuXvYcSSWAM8GA9nqCg==} + '@types/node@22.19.1': + resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==} + '@types/node@24.7.2': resolution: {integrity: sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==} @@ -1097,6 +1252,10 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + cluster-key-slot@1.1.2: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} @@ -1769,6 +1928,9 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -1931,6 +2093,15 @@ packages: pkg-types@2.3.0: resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + png-to-ico@3.0.1: + resolution: {integrity: sha512-S8BOAoaGd9gT5uaemQ62arIY3Jzco7Uc7LwUTqRyqJDTsKqOAiyfyN4dSdT0D+Zf8XvgztgpRbM5wnQd7EgYwg==} + engines: {node: '>=20'} + hasBin: true + + pngjs@7.0.0: + resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} + engines: {node: '>=14.19.0'} + postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -2214,6 +2385,10 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -2428,6 +2603,9 @@ packages: undici-types@5.28.4: resolution: {integrity: sha512-3OeMF5Lyowe8VW0skf5qaIE7Or3yS9LS7fvMUI0gg4YxpIBVg0L8BxCmROw2CcYhSkpR68Epz7CGc8MPj94Uww==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.14.0: resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} @@ -2677,10 +2855,18 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yargs@18.0.0: + resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + youch-core@0.3.3: resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} @@ -2947,6 +3133,11 @@ snapshots: dependencies: '@noble/ciphers': 1.3.0 + '@emnapi/runtime@1.7.1': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.25.11': optional: true @@ -3025,6 +3216,102 @@ snapshots: '@esbuild/win32-x64@0.25.11': optional: true + '@img/colour@1.0.0': {} + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.7.1 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true + '@ioredis/commands@1.4.0': {} '@isaacs/cliui@8.0.2': @@ -3463,6 +3750,10 @@ snapshots: dependencies: '@types/braces': 3.0.5 + '@types/node@22.19.1': + dependencies: + undici-types: 6.21.0 + '@types/node@24.7.2': dependencies: undici-types: 7.14.0 @@ -3747,6 +4038,12 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 + cluster-key-slot@1.1.2: {} color-convert@2.0.1: @@ -4364,6 +4661,8 @@ snapshots: dependencies: brace-expansion: 2.0.2 + minimist@1.2.8: {} + minipass@7.1.2: {} minizlib@3.1.0: @@ -4596,6 +4895,14 @@ snapshots: exsolve: 1.0.7 pathe: 2.0.3 + png-to-ico@3.0.1: + dependencies: + '@types/node': 22.19.1 + minimist: 1.2.8 + pngjs: 7.0.0 + + pngjs@7.0.0: {} + postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -4910,6 +5217,37 @@ snapshots: setprototypeof@1.2.0: {} + sharp@0.34.5: + dependencies: + '@img/colour': 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -5128,6 +5466,8 @@ snapshots: undici-types@5.28.4: {} + undici-types@6.21.0: {} + undici-types@7.14.0: {} unenv@1.10.0: @@ -5422,6 +5762,8 @@ snapshots: yargs-parser@21.1.1: {} + yargs-parser@22.0.0: {} + yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -5432,6 +5774,15 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yargs@18.0.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 7.2.0 + y18n: 5.0.8 + yargs-parser: 22.0.0 + youch-core@0.3.3: dependencies: '@poppinss/exception': 1.2.2 diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico deleted file mode 100644 index fb282da0719ef6ab4c1732df93be6216b0d85520..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmV;J0%!e+P)m9ebk1R zejT~~6f_`?;`cEd!+`7(hw@%%2;?RN8gX-L?z6cM( zKoG@&w+0}f@Pfvwc+deid)qgE!L$ENKYjViZC_Zcr>L(`2oXUT8f0mRQ(6-=HN_Ai zeBBEz3WP+1Cw`m!49Wf!MnZzp5bH8VkR~BcJ1s-j90TAS2Yo4j!J|KodxYR%3Numw zA?gq6e`5@!W~F$_De3yt&uspo&2yLb$(NwcPPI-4LGc!}HdY%jfq@AFs8LiZ4k(p} zZ!c9o+qbWYs-Mg zgdyTALzJX&7QXHdI_DPTFL33;w}88{e6Zk)MX0kN{3DX9uz#O_L58&XRH$Nvvu;fO zf&)7@?C~$z1K<>j0ga$$MIg+5xN;eQ?1-CA=`^Y169@Ab6!vcaNP=hxfKN%@Ly^R* zK1iv*s1Yl6_dVyz8>ZqYhz6J4|3fQ@2LQeX@^%W(B~8>=MoEmBEGGD1;gHXlpX>!W ym)!leA2L@`cpb^hy)P75=I!`pBYxP7<2VfQ3j76qLgzIA0000rdL75{ z)#B^4>!s^~e|Y#E&_A=+c@_Y@um1xJ{AO$IFbv}-8-~Fcvu)e;hG7`ib=~)U97k)d za}HOBVVLLnI1a5fR`z{2#(Z$>2R5ki6>kWyM}ZfO4o^Dyp!`o3R(H?4IThL6YNIF5Oqu{h6j6h(xPG)=YE zLWnHOwASmo=6N0j0b`6(dIRLQdmG1*5Tca&5|A-wSr#d!Qc6lWP1A84l+vbY5aa%| z<2d5e>bgFTBg- zO26|^6h-ly1wqiZ?Y3=cn)ZF)bzPDq<2dGd9){sGO+`@%A(mx{q6p-arYTA(j$@xg z?7s;U4;2!ZesLfW>~S_eU( zl)9dPf_QI*&N=wzzrF0%I@-21#-LuZv&s+%Y(Prh0QuTk*A+#2H4r1E^gV~xb)}Sk z*E#?Q1nQmPvjp9vZCid?UDu%Ud7hP0ecuZqs;cU`PAS!O9a!7v5V$+bvOLc@=Y8KJ z4Zcfi(8DxMX__WUQkEs?rzi?I##-BTo$njQm}#1g|WsedBfjh6+^Fa?y z)3huLO6K)?RaFI+o2JP*2Nkw$n-BuDWUU2jdmh5iEX$H431iGxwYAnWBs_!`&KLtq zFX(<#j9Bfu4qekX!n&?On0UUruA8PoyLQeAA$%VNAY)9P=akYYii8lx81EjWe-H#! zRW(hM=ed;f%ErHGYE-Egxp|%wLhwMIsnI?W*=ryW9Un5>iJHK%$N^{poY^!D80((Y z9-VV8iX!wcTz1Yuy!w?ZAdoU4p>4FS< zKA#_Q2#>CmB81HI47HymNe~2SnxdGma+q`OPOIxWNs=ouLf1x7WQ_3?3em?H)2AV0 z(lo{S@Z|?Ux3c$19h^R|s_I>(Be*xF1{dH?3tRsBcQ?^%2p_(3|IZ23z{M>?RJKbJp71(ES0B*Pu!%)I!rV zkbmkls2_BDDP^ALXy8JKFbo-EaKku`&N)O1fKXONQDDn33?O>2*O#L-T7lLY)sAiq z28Xnp=NU~KDxERrdpKhZp=69HrIuwuor9oJdV~;giVy;$!Dsp5bLeXPSKWGHim~-t z8rR0Yu4`GAUe|t{p*w=XmL-Ph=kvL)D=0?@k)~-FhUoLi>pai> z#w1B_+T-!4>l*Xtcf|PdWkVQ-pgRN+i*X$L5db{_1rMR<5(4f!A&iANcnQi1KZk_ic@9B{ zI>%gqS)%K@EXy!yK)hlFj|Y0gcg7eYgmeC7*%Ly*Y2JaabM~f``jB~6jiLyzzz|$? zT#S710hE(>wwE+$7wGm$lKha=^v$9(2mNc|FbuKo6(ckWw&N-w`b1uq1$l{$Se&K_ z@2@|+$@c;c)!6)QkF!1@iJs3VZoubt`ZUH|ueNQA(;(xu)^%N9uVPqxf8qZx{A00000NkvXXu0mjf6Y^bM literal 0 HcmV?d00001 diff --git a/frontend/src/@dasig/components/Copyright.tsx b/frontend/src/@dasig/components/Copyright.tsx index 89d5d1b..7ecb7d6 100644 --- a/frontend/src/@dasig/components/Copyright.tsx +++ b/frontend/src/@dasig/components/Copyright.tsx @@ -1,4 +1,4 @@ -import { $companyName, $copyRightYear } from "configs/config.site" +import { $companyName, $copyRightYear } from "../../../configs/config.site" export default () => { return ( diff --git a/frontend/src/@dasig/components/Display.tsx b/frontend/src/@dasig/components/Display.tsx new file mode 100644 index 0000000..704405e --- /dev/null +++ b/frontend/src/@dasig/components/Display.tsx @@ -0,0 +1,41 @@ +import { type JSXElement, Match, Switch } from 'solid-js' +import '../styles/Display.sass' + +interface Props { + children: JSXElement + desktop?: boolean + tablet?: boolean + mobile?: boolean +} + +export default (props: Props) => { + return ( + <> + + +
{props.children}
+
+ + +
{props.children}
+
+ + +
{props.children}
+
+ + +
{props.children}
+
+ + +
{props.children}
+
+ + +
{props.children}
+
+
+ + ) +} diff --git a/frontend/src/@dasig/components/HTML.tsx b/frontend/src/@dasig/components/HTML.tsx index 3f8af84..7e5906c 100644 --- a/frontend/src/@dasig/components/HTML.tsx +++ b/frontend/src/@dasig/components/HTML.tsx @@ -30,7 +30,7 @@ export default (props: Props) => { - + diff --git a/frontend/src/@dasig/components/Padding.tsx b/frontend/src/@dasig/components/Padding.tsx new file mode 100644 index 0000000..d55e3c1 --- /dev/null +++ b/frontend/src/@dasig/components/Padding.tsx @@ -0,0 +1,13 @@ +import { type JSXElement } from 'solid-js' + +interface Props { + left: number + right: number + top: number + bottom: number + children: JSXElement +} + +export default (props: Props) => { + return
{props.children}
+} diff --git a/frontend/src/@dasig/images/logo.avif b/frontend/src/@dasig/images/logo.avif index dc7b89e9105af5c8b82cabc6aa2cda7fd5033aee..2597894674835f5b510194b35b97f74151a42c2f 100644 GIT binary patch delta 491 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 Me~p7t!&5*208&9Png9R* literal 5734 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 YzF9O}ZTGrvunj*6n7Z386u#g90N~MRs{jB1 diff --git a/frontend/src/@dasig/images/ocbologo2.avif b/frontend/src/@dasig/images/ocbologo2.avif new file mode 100644 index 0000000000000000000000000000000000000000..1c093b759044fa3ca088bc02630b08d6b8f39dcc GIT binary patch literal 1389 zcmZQzV30{GsVqn=%S>Ycg51nBLl8SRGZDyVEXYkQNd$=lfnr8VP7#F3z)+BxTmoam zXug8Xl3Xx{5lEV3=Hw@XcrFeMObj3q2F586nt_4o4NwdSSQ=m=3~zy4i_FYCurt82 zqCie6SQ$`vVwr&z1__rI8#GHZ*aCpgP7UY5%K&?REGdD6ZGcd8VFtN4)1*9^IQX$?1 zS_jme15yGC29WSWKiGjP9^XFz^^mVr96ib45p9>Gm?=+{xA} zyA7{gH=1hZ?q{s8-@7Wq@`#blgii7If3*L!YxqV_e0AWqbv5I%T)UksK3V^3w#WCgl;B}DWyWXor8?_a;W3$sZ(o{B|*s*j?obkJ6ra+s9(B~AT=+EM#g{$T|4g`e^~WQt{2-_BpR*S`%=!OuhQY$0v7gFZ?-d3cn>%zZ zd7*WDy-MYtG|v1>>G~TKAL(nHx1PfC{`$`wmY1Hb+vRw8)k%kdo=G1Hjy_a=smoTo zOXulJEB7yTC8B{mr!Ce>z28&Ou!eiNI3LT+TP-UL-bxq#XX0xJOnBeqbnHUa#_ZFj zQ^h9+zIbeNY{BB1E3seQ4s28C%)TKIE#+}oZ+}D9O2)vaiQI>q=OpXYvu$1Z`VOz< z|Glh_4i`<@S@YoRQ_=c`{Yi#N>PA-^AN_7M%}t+uY5oj>YsdXRe9|kvC|$qgaPwh( zL1xLRikebJaeMDuPEY^G%jYCvcB1J1#oOGI zU8FwDJS;TX?N()LYg5Zl)wiqlUt7mEWIWcfY5dm8v9M?XH~Z7GJ8c`DY-j|3Fs-*b7(HNgV_*>oxF#Qb`pAc^J^c$e z2iz>U{>yQt!pr$}kAK|0EbC>zK&g}K`lCMvjQqU1l^Z@Ot@{`UYfn zZ`&a-<=L+*ryUPCL@Lg>>5??Jti*8EYNM60(^43=M})npWbjKrdhp)mw_!{B^cF4`g}2yBvu`sc}n$S5?c-9wRwFT zb&WdOn9|;=SLDp7n_;-ZF^gl-KTV;VTui&>-f7AS{_p0x`p9&v%5_)w^eYEXyR<8V Q$#nJJmgUC(?O4Pb0LJJjiU0rr literal 0 HcmV?d00001 diff --git a/frontend/src/@dasig/images/ocbologo2.webp b/frontend/src/@dasig/images/ocbologo2.webp new file mode 100644 index 0000000000000000000000000000000000000000..63e4ec1d245743c98672a2b79d629897bbc7525a GIT binary patch literal 1688 zcmV;J250$FNk&GH1^@t8MM6+kP&il$0000G0000n001!n06|PpNGJjT00E$FZJTL3 z`u?iewr%GcZ1V@GFPDeQ zAgJ&P3&x^a;0xs;{~_Y9GqC6dUUDM;=CPH52?lP2`xlQfj7-rYhrt67H2#X31eG7v zg#Zrw8JK9`E;u;!enLyd_@FbK!)Zn)8+il{Z6DCmG5*#PSjxzRBj-Urpr)jJ3vHj! zQZhbhHi^olm1A}>q!qaFRccz1*Y2mLy!$mRE#sHpr1#CY|AVj7`|>_DE#;k;7}JWp zzMUbhzzvhAX&FbieoRZr_^_FLKusy~HDDfNS~Gx_ztPe${?ZH%#~ITJ+z02-?J+GC z_yOgRu9|Mb|%LJEPa;qmX{F0)|8vcS_2 z{1?jKWWkDKffq|yLj~foEkI_jml5@zza(3 zQG3^8GDfp3W-%HcY^x5BJe{E3;a_Rg5LL}oV^A7@-QODGkgs^4{^YkGF!O^qr!<5( zLGI22Xf%A~rT6cB_0_%i&aWKW5P)~c4pvY&AVLHH0Pqt4odGH`05SkRZ7`HaBqJgr zC>#4wfDMUh0Mny?z3ur~_RN>*U;OWs9sSDrm=6jZMt0SCOL#E(A3o3ff8)ID{RjVV z{CB{A>i7EpS`S@*i{Gt-UHGi-UBC{|diC7(+iX|j%XyEHL(+KQ;VcAKBTZ z&Fv&>4?#L-96rVl3NCMkH{U6pDNO29kio##Su`0Y3NsCg`hRqux_mzMG2?V~5^5rKrV__-!0f;J zSWQJe*@B+3RXDWE3p^Ss6~h!MQu*IkKkxX}eo^16eTIp-d#iJty^-65ym*t-OLBz7 z&-&%Kvs?$y9;AzLB~$$vj}s(CrrXkF^?&W?B72M?boZZHaG3g?jLd!@37|xza9-^1 zavt($9Q_RtePyK*FalDeSoxUTGNLNj|2? zV56q;?Nr{bLuWmfsGqwa?PIpD01E_Z1{TSa1t{f9wC$}eQCZkBM^m#bv4c||OH!b= zm3pE{T=NB2)TaOM+t$A0S}UL))r)76W8wCWkQFH%T8fu_2kar{_h5m?a!*L8?F-Ry zZ>rBK7Z3x^yx{TkYJ)QBrTpJXJO2u$9$wm!Q1kfryG>cQ-Ph00zn=U0XibOjYJAAu zgdlFl%(+4{qKmG(=la=9B-w1lYZH<7_|K1~za|my1AO#ka0aa9NYFE1&;__gsbrQu z{O!J1>;IEmGj}avXldQT)o~QZs<9VC$2WO_Jmx=dQ_`@NV?{997YZaK#-|hqM6te3 z50M_hX6g4_OSb)Cdon=f3A2)1xC_>(Mo9ea&Dw#D5FL?Ib2XI^i(*9;KShL2h)?7L z{ov^LN}K9~P*2|@OF{pC&wdiZ^80<0AJK literal 0 HcmV?d00001 diff --git a/frontend/src/@dasig/index.ts b/frontend/src/@dasig/index.ts index dd7a0b8..e5c535b 100644 --- a/frontend/src/@dasig/index.ts +++ b/frontend/src/@dasig/index.ts @@ -1,3 +1,5 @@ export { default as Column } from './components/Column' +export { default as Display } from './components/Display' export { default as HTML } from './components/HTML' export { default as Page } from './components/Page' + diff --git a/frontend/src/@dasig/scripts/node/generateFavicon.js b/frontend/src/@dasig/scripts/node/generateFavicon.js new file mode 100644 index 0000000..6a75e0f --- /dev/null +++ b/frontend/src/@dasig/scripts/node/generateFavicon.js @@ -0,0 +1,23 @@ +import { consola } from 'consola'; +import * as fs from 'fs'; +import * as path from 'path'; +import sharp from 'sharp'; + +try { + const dirPath = path.resolve('./public') + + if (fs.existsSync(dirPath)) { + const inputSrc = './src/images/favicon.png' + const favicon = dirPath + '/favicon.png' + const faviconBuffer = await sharp(inputSrc).png({ quality: 90 }).resize(48).toBuffer() + await sharp(faviconBuffer).toFile(favicon) + consola.success('Favicon generated successfully') + } else { + consola.error('Directory does not exist:', dirPath) + } + +} catch (error) { + if (error.message.includes('missing')) { + consola.error('Source favicon does not exist') + } +} diff --git a/frontend/src/@dasig/scripts/node/optimizeImage.js b/frontend/src/@dasig/scripts/node/optimizeImage.js new file mode 100644 index 0000000..439f907 --- /dev/null +++ b/frontend/src/@dasig/scripts/node/optimizeImage.js @@ -0,0 +1,41 @@ +import { consola } from 'consola'; +import sharp from 'sharp'; +import yargs from 'yargs'; +import { hideBin } from 'yargs/helpers'; + +(async () => { + const argv = yargs(hideBin(process.argv)) + .option('name', { + alias: 'n', + describe: 'Specify the name of the image', + type: 'string', + demandOption: true, + }) + .option('size', { + alias: 's', + describe: 'Specify the size of the image', + type: 'number', + demandOption: true, + }) + .argv; + + const name = argv.name; + const size = argv.size; + + try { + const avifOutputPath = `./src/@dasig/images/${name.toString().split('.').slice(0, -1).join('.')}.avif` + const webpOutputPath = `./src/@dasig/images/${name.toString().split('.').slice(0, -1).join('.')}.webp` + + const avifBuffer = await sharp(`./src/images/${name}`).avif({ quality: 60 }).resize(size).toBuffer() + await sharp(avifBuffer).toFile(avifOutputPath) + consola.success(`${name} successfully optimized in Avif`) + + const webpBuffer = await sharp(`./src/images/${name}`).webp({ quality: 75 }).resize(size).toBuffer() + await sharp(webpBuffer).toFile(webpOutputPath) + consola.success(`${name} successfully optimized in Webp`) + } catch (error) { + consola.error('Error optimizing image:', error) + if (error.message.includes('missing')) consola.error(`${name} could not be found on image folder`) + } +})() + diff --git a/frontend/src/@dasig/scripts/node/optimizeLogo.js b/frontend/src/@dasig/scripts/node/optimizeLogo.js new file mode 100644 index 0000000..5a62dce --- /dev/null +++ b/frontend/src/@dasig/scripts/node/optimizeLogo.js @@ -0,0 +1,33 @@ +import { consola } from 'consola'; +import sharp from 'sharp'; +import yargs from 'yargs'; +import { hideBin } from 'yargs/helpers'; + +(async () => { + const argv = yargs(hideBin(process.argv)) + .option('size', { + alias: 's', + describe: 'Specify the size of the logo', + type: 'number', + demandOption: true, + }) + .argv; + + const size = argv.size; + + try { + const webpImage = './src/@dasig/images/logo.webp' + const avifImage = './src/@dasig/images/logo.avif' + const inputSrc = './src/images/logo.png' + + const avifBuffer = await sharp(inputSrc).avif({ quality: 60 }).resize(size).toBuffer() + await sharp(avifBuffer).toFile(avifImage) + consola.success('Logo successfully optimized in Avif') + + const webpBuffer = await sharp(inputSrc).webp({ quality: 75 }).resize(size).toBuffer() + await sharp(webpBuffer).toFile(webpImage) + consola.success('Logo successfully optimized in Webp') + } catch (error) { + consola.error('Error generating favicon:', error) + } +})() diff --git a/frontend/src/@dasig/styles/Display.sass b/frontend/src/@dasig/styles/Display.sass new file mode 100644 index 0000000..b0c0a83 --- /dev/null +++ b/frontend/src/@dasig/styles/Display.sass @@ -0,0 +1 @@ +@use '../../styles/breakpoint.sass' diff --git a/frontend/src/assets/images/favicon.png b/frontend/src/assets/images/favicon.png deleted file mode 100644 index 85716bb9d5e93ceb5f367f3fa72c11facbae2a14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3004 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 P00H#~0{{R3H&px`002dCdQ@0+Qek%> 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 { diff --git a/frontend/src/styles/breakpoint.sass b/frontend/src/styles/breakpoint.sass index 738c1a2..f86ffef 100644 --- a/frontend/src/styles/breakpoint.sass +++ b/frontend/src/styles/breakpoint.sass @@ -1,51 +1,49 @@ -$mobile: 575.98px -$tablet: 768px -$desktop: 1440px +@use '../../configs/design.site' as design .on-desktop-only - @media only screen and (min-width: 0px) and (max-width: $desktop) + @media only screen and (min-width: 0px) and (max-width: design.$desktop) display: none - @media only screen and (min-width: $desktop) + @media only screen and (min-width: design.$desktop) display: block .on-tablet-only - @media only screen and (min-width: 0px) and (max-width: $tablet) + @media only screen and (min-width: 0px) and (max-width: design.$tablet) display: none - @media only screen and (min-width: $tablet) and (max-width: $desktop) + @media only screen and (min-width: design.$tablet) and (max-width: design.$desktop) display: block - @media only screen and (min-width: $desktop) + @media only screen and (min-width: design.$desktop) display: none .on-mobile-only - @media only screen and (max-width: $mobile) + @media only screen and (max-width: design.$mobile) display: block - @media only screen and (min-width: $tablet) + @media only screen and (min-width: design.$tablet) display: none .on-desktop-tablet-only - @media only screen and (min-width: 0px) and (max-width: $tablet) + @media only screen and (min-width: 0px) and (max-width: design.$tablet) display: none - @media only screen and (min-width: $tablet) + @media only screen and (min-width: design.$tablet) display: block .on-desktop-mobile-only - @media only screen and (min-width: 0px) and (max-width: $mobile) + @media only screen and (min-width: 0px) and (max-width: design.$mobile) display: block - @media only screen and (min-width: $mobile) and (max-width: $desktop) + @media only screen and (min-width: design.$mobile) and (max-width: design.$desktop) display: none - @media only screen and (min-width: $desktop) + @media only screen and (min-width: design.$desktop) display: block .on-tablet-mobile-only - @media only screen and (min-width: 0px) and (max-width: $desktop) + @media only screen and (min-width: 0px) and (max-width: design.$desktop) display: block - @media only screen and (min-width: $desktop) + @media only screen and (min-width: design.$desktop) display: none diff --git a/frontend/src/styles/functions.sass b/frontend/src/styles/functions.sass index c709d2c..4633406 100644 --- a/frontend/src/styles/functions.sass +++ b/frontend/src/styles/functions.sass @@ -1,5 +1,7 @@ +@use 'sass:color' + @function lighten-color($hex, $amount) - @return mix(white, $hex, $amount) + @return color.mix(white, $hex, $amount) @function darken-color($hex, $amount) - @return mix(black, $hex, $amount) + @return color.mix(black, $hex, $amount)