Compare commits

..

1 Commits

Author SHA1 Message Date
d8c20826b0 Merge branch 'Setup-Basic-Website'
All checks were successful
continuous-integration/drone/push Build is passing
2025-03-05 13:23:34 -05:00
16 changed files with 409 additions and 59 deletions

3
.dockerignore Normal file
View File

@ -0,0 +1,3 @@
node_modules
.git
.env

View File

@ -3,27 +3,59 @@ type: docker
name: build
steps:
- name: build
image: timbru31/node-alpine-git:18
commands:
- yarn
# - yarn build
- name: push-image
################################################################################################################################################
## example of running dind manually in drone
# - name: build
# image: docker
# environment:
# REGISTRY_USER:
# from_secret: DOCKER_USERNAME
# REGISTRY_PASS:
# from_secret: DOCKER_PASSWORD
# volumes:
# - name: docker_sock
# path: /var/run/docker.sock
# commands:
# - export DRONE_SHA=${DRONE_COMMIT_SHA:0:7}
# - docker login gitea.bsidesolutions.net --username $REGISTRY_USER --password $REGISTRY_PASS
# # - docker exec --env-file .env.drone compose-container mkdir /home/node
# # - docker exec --env-file .env.drone compose-container mkdir /home/node/app
# # - docker cp . compose-container:/home/node/app
# # - docker exec -w /home/node/app --env-file .env.drone compose-container ls # check current directory
# - docker build -t gitea.bsidesolutions.net/oonyeje/oonyeje-portfolio:${DRONE_COMMIT_SHA:0:7} .
# - docker tag gitea.bsidesolutions.net/oonyeje/oonyeje-portfolio gitea.bsidesolutions.net/oonyeje/oonyeje-portfolio:${DRONE_COMMIT_SHA:0:7}
# - docker tag gitea.bsidesolutions.net/oonyeje/oonyeje-portfolio gitea.bsidesolutions.net/oonyeje/oonyeje-portfolio:latest
################################################################################################################################################
image: plugins/docker:latest
- name: Setup Build
image: gitea.bsidesolutions.net/bside-solutions/docker-compose-v2-alpine:latest
commands:
# - docker container stop compose-container
- docker container prune -f
- docker image prune -f
# - docker login gitea.bsidesolutions.net --username $REGISTRY_USER --password $REGISTRY_PASS
# - docker pull gitea.bsidesolutions.net/bside-solutions/docker-compose-v2-alpine:latest
# - docker run -v /var/run/docker.sock:/var/run/docker.sock --rm -d --name compose-container gitea.bsidesolutions.net/bside-solutions/docker-compose-v2-alpine sleep inf #start container in detached mode
# - sleep 5 # give container some time to fully start
volumes:
- name: docker_sock
path: /var/run/docker.sock
- name: Build and Push Container Image
image: plugins/docker
settings:
registry: gitea.bsidesolutions.net
repo: gitea.bsidesolutions.net/oonyeje/oonyeje-portfolio
username:
from_secret: DOCKER_USERNAME
password:
from_secret: DOCKER_PASSWORD
# email:
# from_secret: DOCKER_EMAIL
repo: gitea.bsidesolutions.net/oonyeje/oonyeje-portfolio
registry: gitea.bsidesolutions.net
dockerfile: ./Dockerfile
force_tag: true
tags:
- latest
dockerfile: ./Dockerfile
context: ./
- dev
- dev-build-${DRONE_COMMIT_SHA:0:7}
# - name: deploy-staging
# image: plugins/ansible:latest
@ -72,3 +104,8 @@ steps:
# event:
# - push
# - pull_request
volumes:
- name: docker_sock
host:
path: /var/run/docker.sock

10
.env.dev Normal file
View File

@ -0,0 +1,10 @@
SMTP_PROXY_EMAIL=$SMTP_PROXY_EMAIL
SMTP_RECIPIENT_EMAIL=$SMTP_RECIPIENT_EMAIL
SMTP_HOST=$SMTP_HOST
SMTP_PORT=$SMTP_PORT
SMTP_USERNAME=$SMTP_USERNAME
SMTP_PASSWORD=$SMTP_PASSWORD
NEXT_PUBLIC_GOOGLE_APPOINTMENTS_LINK=$NEXT_PUBLIC_GOOGLE_APPOINTMENTS_LINK
RECAPTCHA_SECRET_KEY=$RECAPTCHA_SECRET_KEY
NEXT_PUBLIC_RECAPTCHA_SITE_KEY=$NEXT_PUBLIC_RECAPTCHA_SITE_KEY
GIT_SHA=$GIT_SHA

12
.env.drone Normal file
View File

@ -0,0 +1,12 @@
SMTP_PROXY_EMAIL=$SMTP_PROXY_EMAIL
SMTP_RECIPIENT_EMAIL=$SMTP_RECIPIENT_EMAIL
SMTP_HOST=$SMTP_HOST
SMTP_PORT=$SMTP_PORT
SMTP_USERNAME=$SMTP_USERNAME
SMTP_PASSWORD=$SMTP_PASSWORD
NEXT_PUBLIC_GOOGLE_APPOINTMENTS_LINK=$NEXT_PUBLIC_GOOGLE_APPOINTMENTS_LINK
RECAPTCHA_SECRET_KEY=$RECAPTCHA_SECRET_KEY
NEXT_PUBLIC_RECAPTCHA_SITE_KEY=$NEXT_PUBLIC_RECAPTCHA_SITE_KEY
DRONE_SHA=$DRONE_SHA
DOCKER_USERNAME=$DOCKER_USERNAME
DOCKER_PASSWORD=$DOCKER_PASSWORD

View File

@ -0,0 +1,38 @@
name: Manually Deploy Image to Coolify
on:
workflow_dispatch:
inputs:
image_tag:
description: 'Built Container Image to deploy'
required: false
default: 'latest'
type: string
environment:
description: 'Coolify Environment to deploy to'
required: false
type: choice
default: 'staging'
options:
- staging
- production
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
# - name: Login to Gitea
# run: |
# echo "${{ secrets.TOKEN }}" | docker login ${{ gitea.server_url }} --username ${{ gitea.actor }} --password-stdin
- name: Deploy to Coolify
uses: carlozanella/deploy-coolify@v1
with:
endpoint: ${{ secrets.COOLIFY_ENDPOINT }}/api/v1
token: ${{ secrets.COOLIFY_TOKEN }}
app_uuid: ${{ (contains(github.event.inputs.environment, 'staging') && secrets.COOLIFY_APP_STAGING_UUID) || secrets.COOLIFY_APP_PRODUCTION_UUID }}
image_name: 'gitea.bsidesolutions.net/oonyeje/oonyeje-portfolio'
image_tag: ${{ github.event.inputs.image_tag }}

View File

@ -1,25 +1,18 @@
FROM node:18.8-alpine as base
FROM node:20-alpine AS builder
FROM base as builder
WORKDIR /home/node/app
WORKDIR /app
COPY package*.json ./
RUN npm install -g yarn --force && yarn install --frozen-lockfile --production=false --cache-folder /yarn-cache && yarn cache clean --force && rm -rf /yarn-cache /tmp/*
COPY . .
RUN yarn install
# RUN yarn build
# RUN yarn build # Uncomment if you have a build step
FROM base as runtime
FROM node:20-alpine
# ENV NODE_ENV=production
WORKDIR /home/node/app
COPY package*.json ./
# RUN yarn install --production
# COPY --from=builder /home/node/app/dist ./dist
# COPY --from=builder /home/node/app/build ./build
WORKDIR /app
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/yarn.lock ./
RUN npm install -g yarn --force && yarn install --frozen-lockfile --production --cache-folder /yarn-cache && yarn cache clean --force && rm -rf /yarn-cache /tmp/*
COPY --from=builder /app/ .
EXPOSE 3000
CMD ["yarn", "dev", '-p', '3000']
CMD ["yarn", "dev", "-p", "3000"] #or node dist/index.js if you built the project.

View File

@ -1,16 +0,0 @@
const GoogleAppointmentBlock = () => {
const {GOOGLE_APPOINTMENTS_LINK} = process.env;
console.log(GOOGLE_APPOINTMENTS_LINK)
return (
<div className='w-full h-full flex flex-row justify-center bg-white border-solid'>
<embed
src={GOOGLE_APPOINTMENTS_LINK!}
style={{border: 1}}
width="100%"
height="600"
></embed>
</div>
);
}
export default GoogleAppointmentBlock;

27
docker-compose.dev.yaml Executable file
View File

@ -0,0 +1,27 @@
name: oonyeje-portfolio
services:
oonyeje-portfolio:
# this is not tagging corectly in drone, which is not pushing the correct build in the end
image: gitea.bsidesolutions.net/oonyeje/oonyeje-portfolio
build:
context: ./
dockerfile: Dockerfile
ports:
- "6000:3000"
volumes:
- .:/home/node/app
- ./node_modules:/home/node/app/node_modules
environment:
- SMTP_PROXY_EMAIL=${SMTP_PROXY_EMAIL}
- SMTP_RECIPIENT_EMAIL=${SMTP_RECIPIENT_EMAIL}
- SMTP_HOST=${SMTP_HOST}
- SMTP_PORT=${SMTP_PORT}
- SMTP_USERNAME=${SMTP_USERNAME}
- SMTP_PASSWORD=${SMTP_PASSWORD}
- NEXT_PUBLIC_GOOGLE_APPOINTMENTS_LINK=${NEXT_PUBLIC_GOOGLE_APPOINTMENTS_LINK}
- RECAPTCHA_SECRET_KEY=${RECAPTCHA_SECRET_KEY}
- NEXT_PUBLIC_RECAPTCHA_SITE_KEY=${NEXT_PUBLIC_RECAPTCHA_SITE_KEY}
working_dir: /home/node/app/
command: sh -c "yarn install && yarn dev"
env_file:
- .env.dev

25
docker-compose.drone.yaml Executable file
View File

@ -0,0 +1,25 @@
name: oonyeje-portfolio
services:
oonyeje-portfolio:
# this is not tagging corectly in drone, which is not pushing the correct build in the end
image: gitea.bsidesolutions.net/oonyeje/oonyeje-portfolio
build:
context: ./
dockerfile: Dockerfile
ports:
- "6000:3000"
volumes:
- .:/home/node/app
- ./node_modules:/home/node/app/node_modules
environment:
- SMTP_PROXY_EMAIL=${SMTP_PROXY_EMAIL}
- SMTP_RECIPIENT_EMAIL=${SMTP_RECIPIENT_EMAIL}
- SMTP_HOST=${SMTP_HOST}
- SMTP_PORT=${SMTP_PORT}
- SMTP_USERNAME=${SMTP_USERNAME}
- SMTP_PASSWORD=${SMTP_PASSWORD}
- NEXT_PUBLIC_GOOGLE_APPOINTMENTS_LINK=${NEXT_PUBLIC_GOOGLE_APPOINTMENTS_LINK}
- RECAPTCHA_SECRET_KEY=${RECAPTCHA_SECRET_KEY}
- NEXT_PUBLIC_RECAPTCHA_SITE_KEY=${NEXT_PUBLIC_RECAPTCHA_SITE_KEY}
working_dir: /home/node/app/
command: sh -c "yarn install && yarn dev"

View File

@ -1,14 +1,13 @@
version: '3'
version: '3.3'
name: oonyeje-portfolio
services:
app:
image: node:18.8-alpine
oonyeje-portfolio:
image: gitea.bsidesolutions.net/oonyeje/oonyeje-portfolio
build:
context: ./
dockerfile: Dockerfile
ports:
- "3000:3000"
- "6000:3000"
volumes:
- .:/home/node/app
- ./node_modules:/home/node/app/node_modules

View File

@ -6,6 +6,13 @@ const nextConfig = {
return config;
},
output: 'export',
images: {
unoptimized: true
},
exportPathMap: async (defaultMap, ctx) => {
return defaultMap
}
// basePath: '/github-pages',
}

View File

@ -9,6 +9,9 @@
"lint": "next lint",
"export": "next export"
},
"engines": {
"node": "20"
},
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^6.4.2",
"@fortawesome/free-brands-svg-icons": "^6.4.2",
@ -30,6 +33,7 @@
"sharp": "^0.32.6"
},
"devDependencies": {
"@tailwindcss/postcss": "^4.0.9",
"@types/node": "latest",
"@types/react": "latest",
"@types/react-dom": "latest",

View File

@ -74,7 +74,9 @@ export default async function handler(
transporter.sendMail(mailData, function (err, info) {
if(err) {
console.log(err);
res.status(500).send('Internal Server Error');
// res.status(500).send('Internal Server Error');
res.status(500).end();
}
else {
console.log('successful');
@ -86,11 +88,13 @@ export default async function handler(
res.status(200).json(req.body);
} else {
// reCAPTCHA verification failed
res.status(400).send('reCAPTCHA verification failed.');
// res.status(400).send('reCAPTCHA verification failed.');
res.status(400).end();
}
} catch (error) {
console.error(error);
res.status(500).send('Internal server error');
// res.status(500).send('Internal server error');
res.status(500).end();
}

View File

@ -8,12 +8,11 @@ import navigationContent from '../lib/navigationContent'
import ContactForm from '@/components/form/ContactForm';
import Footer from '@/components/footer';
import Link from 'next/link';
import GoogleAppointmentBlock from '@/components/form/GoogleAppointmentBlock';
const inter = Inter({ subsets: ['latin'] })
export default function Home() {
const contactFormSectionRef = useRef<Element>(null);
const landingSectionRef = useRef<Element>(null);
const contactFormSectionRef = useRef<HTMLDivElement>(null);
const landingSectionRef = useRef<HTMLDivElement>(null);
const [contactClicked, setContactClicked] = useState(false);
const customStyles = {
@ -120,7 +119,6 @@ export default function Home() {
<div className='flex flex-row h-full w-full justify-center'>
<div className='flex flex-col h-full w-full justify-center'>
<ContactForm/>
{/* <GoogleAppointmentBlock/> */}
</div>
<span className="cursor-pointer self-end" onClick={() => {
executeScrollToLandiing();

View File

@ -2,5 +2,6 @@ module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
"@tailwindcss/postcss": {}
},
}

208
yarn.lock
View File

@ -247,6 +247,99 @@
dependencies:
tslib "^2.4.0"
"@tailwindcss/node@4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.0.9.tgz#27f08681b2cf6197a9c4c0ce0a0cb8dd16b3aaaf"
integrity sha512-tOJvdI7XfJbARYhxX+0RArAhmuDcczTC46DGCEziqxzzbIaPnfYaIyRT31n4u8lROrsO7Q6u/K9bmQHL2uL1bQ==
dependencies:
enhanced-resolve "^5.18.1"
jiti "^2.4.2"
tailwindcss "4.0.9"
"@tailwindcss/oxide-android-arm64@4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.9.tgz#ad8fbe3018c04b1931e35f048f8975d06de6cc64"
integrity sha512-YBgy6+2flE/8dbtrdotVInhMVIxnHJPbAwa7U1gX4l2ThUIaPUp18LjB9wEH8wAGMBZUb//SzLtdXXNBHPUl6Q==
"@tailwindcss/oxide-darwin-arm64@4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.9.tgz#e15a8d68b7ea225ce98f046a94078a5e8f89f52c"
integrity sha512-pWdl4J2dIHXALgy2jVkwKBmtEb73kqIfMpYmcgESr7oPQ+lbcQ4+tlPeVXaSAmang+vglAfFpXQCOvs/aGSqlw==
"@tailwindcss/oxide-darwin-x64@4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.9.tgz#6de929f441e9f3c256ae023364888fb3d8da80e4"
integrity sha512-4Dq3lKp0/C7vrRSkNPtBGVebEyWt9QPPlQctxJ0H3MDyiQYvzVYf8jKow7h5QkWNe8hbatEqljMj/Y0M+ERYJg==
"@tailwindcss/oxide-freebsd-x64@4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.9.tgz#5690a15919fcda09a000bc32e3db43e52850bfb4"
integrity sha512-k7U1RwRODta8x0uealtVt3RoWAWqA+D5FAOsvVGpYoI6ObgmnzqWW6pnVwz70tL8UZ/QXjeMyiICXyjzB6OGtQ==
"@tailwindcss/oxide-linux-arm-gnueabihf@4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.9.tgz#351a7aa8b5c5d6739e440716e60e54f6b96aa0ea"
integrity sha512-NDDjVweHz2zo4j+oS8y3KwKL5wGCZoXGA9ruJM982uVJLdsF8/1AeKvUwKRlMBpxHt1EdWJSAh8a0Mfhl28GlQ==
"@tailwindcss/oxide-linux-arm64-gnu@4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.9.tgz#9c4e3fbc5f37997da7323f78c2c76d403394e5d2"
integrity sha512-jk90UZ0jzJl3Dy1BhuFfRZ2KP9wVKMXPjmCtY4U6fF2LvrjP5gWFJj5VHzfzHonJexjrGe1lMzgtjriuZkxagg==
"@tailwindcss/oxide-linux-arm64-musl@4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.9.tgz#3e5fcc39d1b98658639d88bbec2fbef6805a1e53"
integrity sha512-3eMjyTC6HBxh9nRgOHzrc96PYh1/jWOwHZ3Kk0JN0Kl25BJ80Lj9HEvvwVDNTgPg154LdICwuFLuhfgH9DULmg==
"@tailwindcss/oxide-linux-x64-gnu@4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.9.tgz#c92400522b3fa3bb789314106c5170c82136e9e7"
integrity sha512-v0D8WqI/c3WpWH1kq/HP0J899ATLdGZmENa2/emmNjubT0sWtEke9W9+wXeEoACuGAhF9i3PO5MeyditpDCiWQ==
"@tailwindcss/oxide-linux-x64-musl@4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.9.tgz#7a8cc4787ca3c143d2429529835749777faf3263"
integrity sha512-Kvp0TCkfeXyeehqLJr7otsc4hd/BUPfcIGrQiwsTVCfaMfjQZCG7DjI+9/QqPZha8YapLA9UoIcUILRYO7NE1Q==
"@tailwindcss/oxide-win32-arm64-msvc@4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.9.tgz#5e51fe3859216703c72c3fabde8e86b45b2786b3"
integrity sha512-m3+60T/7YvWekajNq/eexjhV8z10rswcz4BC9bioJ7YaN+7K8W2AmLmG0B79H14m6UHE571qB0XsPus4n0QVgQ==
"@tailwindcss/oxide-win32-x64-msvc@4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.9.tgz#91f9429cd2f06090cbd91581155e2828e498c8c8"
integrity sha512-dpc05mSlqkwVNOUjGu/ZXd5U1XNch1kHFJ4/cHkZFvaW1RzbHmRt24gvM8/HC6IirMxNarzVw4IXVtvrOoZtxA==
"@tailwindcss/oxide@4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@tailwindcss/oxide/-/oxide-4.0.9.tgz#83d69528a0f8df99552a7d9df16c6a591878bbc7"
integrity sha512-eLizHmXFqHswJONwfqi/WZjtmWZpIalpvMlNhTM99/bkHtUs6IqgI1XQ0/W5eO2HiRQcIlXUogI2ycvKhVLNcA==
optionalDependencies:
"@tailwindcss/oxide-android-arm64" "4.0.9"
"@tailwindcss/oxide-darwin-arm64" "4.0.9"
"@tailwindcss/oxide-darwin-x64" "4.0.9"
"@tailwindcss/oxide-freebsd-x64" "4.0.9"
"@tailwindcss/oxide-linux-arm-gnueabihf" "4.0.9"
"@tailwindcss/oxide-linux-arm64-gnu" "4.0.9"
"@tailwindcss/oxide-linux-arm64-musl" "4.0.9"
"@tailwindcss/oxide-linux-x64-gnu" "4.0.9"
"@tailwindcss/oxide-linux-x64-musl" "4.0.9"
"@tailwindcss/oxide-win32-arm64-msvc" "4.0.9"
"@tailwindcss/oxide-win32-x64-msvc" "4.0.9"
"@tailwindcss/postcss@^4.0.9":
version "4.0.9"
resolved "https://registry.yarnpkg.com/@tailwindcss/postcss/-/postcss-4.0.9.tgz#ba516b36984ca2e8b3b0a8feae673ac536a2563d"
integrity sha512-BT/E+pdMqulavEAVM5NCpxmGEwHiLDPpkmg/c/X25ZBW+izTe+aZ+v1gf/HXTrihRoCxrUp5U4YyHsBTzspQKQ==
dependencies:
"@alloc/quick-lru" "^5.2.0"
"@tailwindcss/node" "4.0.9"
"@tailwindcss/oxide" "4.0.9"
lightningcss "^1.29.1"
postcss "^8.4.41"
tailwindcss "4.0.9"
"@types/json5@^0.0.29":
version "0.0.29"
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
@ -838,6 +931,11 @@ dequal@^2.0.3:
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
detect-libc@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
detect-libc@^2.0.0, detect-libc@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d"
@ -904,6 +1002,14 @@ enhanced-resolve@^5.12.0:
graceful-fs "^4.2.4"
tapable "^2.2.0"
enhanced-resolve@^5.18.1:
version "5.18.1"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf"
integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.2.0"
es-abstract@^1.22.1:
version "1.22.2"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a"
@ -1821,6 +1927,11 @@ jiti@^1.18.2:
resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42"
integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==
jiti@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560"
integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==
"js-tokens@^3.0.0 || ^4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@ -1892,6 +2003,74 @@ levn@^0.4.1:
prelude-ls "^1.2.1"
type-check "~0.4.0"
lightningcss-darwin-arm64@1.29.1:
version "1.29.1"
resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.1.tgz#dce17349c7b9f968f396ec240503de14e7b4870b"
integrity sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==
lightningcss-darwin-x64@1.29.1:
version "1.29.1"
resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.1.tgz#e79c984180c57d00ee114210ceced83473d72dfc"
integrity sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==
lightningcss-freebsd-x64@1.29.1:
version "1.29.1"
resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.1.tgz#4b3aec9620684a60c45266d50fd843869320f42f"
integrity sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==
lightningcss-linux-arm-gnueabihf@1.29.1:
version "1.29.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.1.tgz#b80e9c4dd75652bec451ffd4d5779492a01791ff"
integrity sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==
lightningcss-linux-arm64-gnu@1.29.1:
version "1.29.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.1.tgz#7825eb119ddf580a4a4f011c6f384a3f9c992060"
integrity sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==
lightningcss-linux-arm64-musl@1.29.1:
version "1.29.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.1.tgz#389efccf80088dce2bb00e28bd7d1cfe36a71669"
integrity sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==
lightningcss-linux-x64-gnu@1.29.1:
version "1.29.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.1.tgz#98fc5df5e39ac8ddc51e51f785849eb21131f789"
integrity sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==
lightningcss-linux-x64-musl@1.29.1:
version "1.29.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.1.tgz#fb4f80895ba7dfa8048ee32e9716a1684fefd6b2"
integrity sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==
lightningcss-win32-arm64-msvc@1.29.1:
version "1.29.1"
resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.1.tgz#fd4409fd1505d89d0ff66511c36df5a1379eb7cd"
integrity sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==
lightningcss-win32-x64-msvc@1.29.1:
version "1.29.1"
resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.1.tgz#54dcd52884f6cbf205a53d49239559603f194927"
integrity sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==
lightningcss@^1.29.1:
version "1.29.1"
resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.29.1.tgz#1d4d62332fc5ba4b6c28e04a8c5638c76019702b"
integrity sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==
dependencies:
detect-libc "^1.0.3"
optionalDependencies:
lightningcss-darwin-arm64 "1.29.1"
lightningcss-darwin-x64 "1.29.1"
lightningcss-freebsd-x64 "1.29.1"
lightningcss-linux-arm-gnueabihf "1.29.1"
lightningcss-linux-arm64-gnu "1.29.1"
lightningcss-linux-arm64-musl "1.29.1"
lightningcss-linux-x64-gnu "1.29.1"
lightningcss-linux-x64-musl "1.29.1"
lightningcss-win32-arm64-msvc "1.29.1"
lightningcss-win32-x64-msvc "1.29.1"
lilconfig@^2.0.5, lilconfig@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
@ -2044,6 +2223,11 @@ nanoid@^3.3.4, nanoid@^3.3.6:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
nanoid@^3.3.8:
version "3.3.8"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf"
integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
napi-build-utils@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
@ -2300,6 +2484,11 @@ picocolors@^1.0.0:
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picocolors@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
@ -2377,6 +2566,15 @@ postcss@^8.4.23, postcss@latest:
picocolors "^1.0.0"
source-map-js "^1.0.2"
postcss@^8.4.41:
version "8.5.3"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb"
integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==
dependencies:
nanoid "^3.3.8"
picocolors "^1.1.1"
source-map-js "^1.2.1"
prebuild-install@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45"
@ -2745,6 +2943,11 @@ source-map-js@^1.0.2:
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
source-map-js@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
streamsearch@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
@ -2870,6 +3073,11 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
tailwindcss@4.0.9:
version "4.0.9"
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.0.9.tgz#f6626cee837aabe9e54c29b230b6fb0ed36fe965"
integrity sha512-12laZu+fv1ONDRoNR9ipTOpUD7RN9essRVkX36sjxuRUInpN7hIiHN4lBd/SIFjbISvnXzp8h/hXzmU8SQQYhw==
tailwindcss@latest:
version "3.3.3"
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.3.tgz#90da807393a2859189e48e9e7000e6880a736daf"