Compare commits

..

23 Commits

Author SHA1 Message Date
7a010a4f8e - working on appointments block 2023-11-29 16:35:05 -05:00
a568ae5e35 - remove commented code
All checks were successful
continuous-integration/drone Build is passing
- slight cleanup
2023-11-29 16:34:46 -05:00
f06d4af1d5 - fix env reference in client code 2023-11-29 16:28:42 -05:00
8b97fcb73e - add recaptcha boilerplate for contact form
- still need to add api key to both project and ci/cd
2023-11-29 09:35:12 -05:00
6cd3a9deba - comment out deploy code for now until deploy stage coompleted
All checks were successful
continuous-integration/drone Build is passing
2023-11-29 01:23:52 -05:00
8a66110b3a - form submission working with nodemailer
Some checks reported errors
continuous-integration/drone Build was killed
2023-11-29 00:33:47 -05:00
a3899325b8 - fixed form styling for contact form 2023-11-28 23:01:23 -05:00
294ddf90da - transitions working (slightly) when navigating to contact form and vice-verse 2023-11-28 18:55:33 -05:00
6965be57e2 - embed resume appears fullscreen now 2023-11-28 08:23:25 -05:00
537dd39c55 - added project brand images 2023-11-28 06:09:33 -05:00
ed01100925 - added icon links for linkedin and git repos 2023-11-28 05:42:04 -05:00
69d1a78c8d - add new window target for navbar links 2023-11-27 21:46:12 -05:00
99183d9162 - pdf is loaded on page
- added links to github, linkedin, gitea, and bside website
- adjusted styling and added footer block
2023-11-27 21:33:12 -05:00
Okechi Onyeje
5f715a1ce9 - wip changes to landing page 2023-10-24 21:36:42 -04:00
e4f39f2b4f - (wip) making changes to landing page 2023-10-24 15:16:05 -04:00
f0568f6402 - add contact form scaffolding 2023-10-23 12:03:57 -04:00
86f4da9749 - added drone files
- added docker files
- added ansible deployment files
2023-10-09 07:45:57 -04:00
01753b87b2 - wip: black background is now fitting content height
- pdf file is not loading into page
2023-10-03 16:54:41 -04:00
686ebe0c74 - trying to get pdf of resume displaying onpage (wip) 2023-10-03 00:58:07 -04:00
e940271328 - add portfolio links to page
- need to work on responsiveness and resizing of iframe
2023-10-03 00:15:04 -04:00
41f8f4bed4 - add carousel component (wip) 2023-10-02 16:02:41 -04:00
6ee4aae9ed - fix modal scroll repeating the background 2023-09-30 07:04:07 -04:00
adfe3a9575 - wip: modal to display website info 2023-09-29 12:08:11 -04:00
16 changed files with 59 additions and 409 deletions

View File

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

View File

@ -3,59 +3,27 @@ type: docker
name: build name: build
steps: steps:
################################################################################################################################################ - name: build
## example of running dind manually in drone image: timbru31/node-alpine-git:18
# - 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
################################################################################################################################################
- name: Setup Build
image: gitea.bsidesolutions.net/bside-solutions/docker-compose-v2-alpine:latest
commands: commands:
# - docker container stop compose-container - yarn
- docker container prune -f # - yarn build
- docker image prune -f - name: push-image
# - docker login gitea.bsidesolutions.net --username $REGISTRY_USER --password $REGISTRY_PASS
# - docker pull gitea.bsidesolutions.net/bside-solutions/docker-compose-v2-alpine:latest image: plugins/docker: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: settings:
registry: gitea.bsidesolutions.net
repo: gitea.bsidesolutions.net/oonyeje/oonyeje-portfolio
username: username:
from_secret: DOCKER_USERNAME from_secret: DOCKER_USERNAME
password: password:
from_secret: DOCKER_PASSWORD from_secret: DOCKER_PASSWORD
repo: gitea.bsidesolutions.net/oonyeje/oonyeje-portfolio # email:
registry: gitea.bsidesolutions.net # from_secret: DOCKER_EMAIL
dockerfile: ./Dockerfile
force_tag: true
tags: tags:
- latest - latest
- dev dockerfile: ./Dockerfile
- dev-build-${DRONE_COMMIT_SHA:0:7} context: ./
# - name: deploy-staging # - name: deploy-staging
# image: plugins/ansible:latest # image: plugins/ansible:latest
@ -104,8 +72,3 @@ steps:
# event: # event:
# - push # - push
# - pull_request # - pull_request
volumes:
- name: docker_sock
host:
path: /var/run/docker.sock

View File

@ -1,10 +0,0 @@
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

View File

@ -1,12 +0,0 @@
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

@ -1,38 +0,0 @@
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,18 +1,25 @@
FROM node:20-alpine AS builder FROM node:18.8-alpine as base
WORKDIR /app FROM base as builder
WORKDIR /home/node/app
COPY package*.json ./ 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 . . COPY . .
# RUN yarn build # Uncomment if you have a build step RUN yarn install
# RUN yarn build
FROM node:20-alpine FROM base as runtime
WORKDIR /app # ENV NODE_ENV=production
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/yarn.lock ./ WORKDIR /home/node/app
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 package*.json ./
COPY --from=builder /app/ .
# RUN yarn install --production
# COPY --from=builder /home/node/app/dist ./dist
# COPY --from=builder /home/node/app/build ./build
EXPOSE 3000 EXPOSE 3000
CMD ["yarn", "dev", "-p", "3000"] #or node dist/index.js if you built the project.
CMD ["yarn", "dev", '-p', '3000']

View File

@ -0,0 +1,16 @@
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;

View File

@ -1,27 +0,0 @@
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

View File

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

View File

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

View File

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

View File

@ -74,9 +74,7 @@ export default async function handler(
transporter.sendMail(mailData, function (err, info) { transporter.sendMail(mailData, function (err, info) {
if(err) { if(err) {
console.log(err); console.log(err);
// res.status(500).send('Internal Server Error'); res.status(500).send('Internal Server Error');
res.status(500).end();
} }
else { else {
console.log('successful'); console.log('successful');
@ -88,13 +86,11 @@ export default async function handler(
res.status(200).json(req.body); res.status(200).json(req.body);
} else { } else {
// reCAPTCHA verification failed // reCAPTCHA verification failed
// res.status(400).send('reCAPTCHA verification failed.'); res.status(400).send('reCAPTCHA verification failed.');
res.status(400).end();
} }
} catch (error) { } catch (error) {
console.error(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,11 +8,12 @@ import navigationContent from '../lib/navigationContent'
import ContactForm from '@/components/form/ContactForm'; import ContactForm from '@/components/form/ContactForm';
import Footer from '@/components/footer'; import Footer from '@/components/footer';
import Link from 'next/link'; import Link from 'next/link';
import GoogleAppointmentBlock from '@/components/form/GoogleAppointmentBlock';
const inter = Inter({ subsets: ['latin'] }) const inter = Inter({ subsets: ['latin'] })
export default function Home() { export default function Home() {
const contactFormSectionRef = useRef<HTMLDivElement>(null); const contactFormSectionRef = useRef<Element>(null);
const landingSectionRef = useRef<HTMLDivElement>(null); const landingSectionRef = useRef<Element>(null);
const [contactClicked, setContactClicked] = useState(false); const [contactClicked, setContactClicked] = useState(false);
const customStyles = { const customStyles = {
@ -119,6 +120,7 @@ export default function Home() {
<div className='flex flex-row h-full w-full justify-center'> <div className='flex flex-row h-full w-full justify-center'>
<div className='flex flex-col h-full w-full justify-center'> <div className='flex flex-col h-full w-full justify-center'>
<ContactForm/> <ContactForm/>
{/* <GoogleAppointmentBlock/> */}
</div> </div>
<span className="cursor-pointer self-end" onClick={() => { <span className="cursor-pointer self-end" onClick={() => {
executeScrollToLandiing(); executeScrollToLandiing();

View File

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

208
yarn.lock
View File

@ -247,99 +247,6 @@
dependencies: dependencies:
tslib "^2.4.0" 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": "@types/json5@^0.0.29":
version "0.0.29" version "0.0.29"
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
@ -931,11 +838,6 @@ dequal@^2.0.3:
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== 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: detect-libc@^2.0.0, detect-libc@^2.0.2:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d"
@ -1002,14 +904,6 @@ enhanced-resolve@^5.12.0:
graceful-fs "^4.2.4" graceful-fs "^4.2.4"
tapable "^2.2.0" 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: es-abstract@^1.22.1:
version "1.22.2" version "1.22.2"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a"
@ -1927,11 +1821,6 @@ jiti@^1.18.2:
resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42"
integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== 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": "js-tokens@^3.0.0 || ^4.0.0":
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@ -2003,74 +1892,6 @@ levn@^0.4.1:
prelude-ls "^1.2.1" prelude-ls "^1.2.1"
type-check "~0.4.0" 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: lilconfig@^2.0.5, lilconfig@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
@ -2223,11 +2044,6 @@ nanoid@^3.3.4, nanoid@^3.3.6:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== 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: napi-build-utils@^1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
@ -2484,11 +2300,6 @@ picocolors@^1.0.0:
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 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: picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
version "2.3.1" version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
@ -2566,15 +2377,6 @@ postcss@^8.4.23, postcss@latest:
picocolors "^1.0.0" picocolors "^1.0.0"
source-map-js "^1.0.2" 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: prebuild-install@^7.1.1:
version "7.1.1" version "7.1.1"
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45"
@ -2943,11 +2745,6 @@ source-map-js@^1.0.2:
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 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: streamsearch@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
@ -3073,11 +2870,6 @@ 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" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 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: tailwindcss@latest:
version "3.3.3" version "3.3.3"
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.3.tgz#90da807393a2859189e48e9e7000e6880a736daf" resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.3.tgz#90da807393a2859189e48e9e7000e6880a736daf"